swish/commit

Generated files

authorJan Wielemaker
Thu Sep 7 13:44:14 2017 +0200
committerJan Wielemaker
Thu Sep 7 13:44:14 2017 +0200
commitc717af6876395449aba4366f4e994604d5c46818
tree4206d62720fe197feabac9e5675e95eef538a53c
parent692c633f9afc28f8cf9c00ebb54157b212b10a9f
Diff style: patch stat
diff --git a/web/css/swish-min.css b/web/css/swish-min.css
index 950088e..da61e6e 100644
--- a/web/css/swish-min.css
+++ b/web/css/swish-min.css
@@ -1,4 +1,4 @@
-ul.dropdown-menu li.checkbox input{margin-left:3px}ul.dropdown-menu li.checkbox span{margin-left:20px}.dropdown-menu>li{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;cursor:pointer}.dropdown-menu .sub-menu{left:100%;position:absolute;top:0;display:none;margin-top:-1px;border-top-left-radius:0;border-bottom-left-radius:0;border-left-color:#fff;box-shadow:none}.left-caret:after,.right-caret:after{content:"";border-bottom:5px solid transparent;border-top:5px solid transparent;display:inline-block;height:0;vertical-align:middle;width:0;margin-left:5px}.right-caret:after{border-left:5px solid #ffaf46}.left-caret:after{border-right:5px solid #ffaf46}.dropdown-icon{margin-left:-12px;margin-right:5px;padding:0;background-repeat:no-repeat;background-size:100%;background-position:50% 50%;display:inline-block;vertical-align:middle;height:18px;width:18px}a.accelerated{position:relative}a.accelerated span.accell-spacer{color:#fff}a.accelerated span.accell-text{color:#888;position:absolute;right:10px}body,html{width:100%;height:100%;padding:0;margin:0;overflow:hidden}nav.navbar{margin-bottom:0}#content{width:100%;height:calc(100% - 55px);padding:0;background-color:#fff}.pane-container,.pane-wrapper{width:100%;height:100%;background-color:white: green}.splittable{background-color:#fff;width:100%;height:100%;padding:5px}div.tabbed{height:100%}div.tab-content{height:calc(100% - 40px)}div.tab-pane{position:relative;height:100%}span.glyphicon.xclose:hover{opacity:.8}span.glyphicon.xclose{margin-left:5px;opacity:.2}a.tab-new.compact>span{padding:6px 0}.nav>li>a.compact{padding:0 5px}span.tab-dirty{display:none;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAqCAMAAADCkShIAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAzUExURQAAAAICAQAAAAAAADAwHSkoFVtYJvj4wdHPi/37sKOfVvv3joJ+OfLsa6GaOfryVf////09bBAAAAAGdFJOUwD+LWbH9lfFP3wAAAABYktHRBCVsg0sAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4AkVDAQs7+kkfQAAAetJREFUSMeVVY3WqjAMc7B1XffT93/bm3aA+l1Q7FGBQ7I0WcHH47RCCMvjhwpe9/Fr+JEBLMV4nwCBmHO8LwFkzplvEyBAIGS62dSClUveJNZ7DUn2kltNBXdsVcqNaBdriA1tX77hYndcTIG/RwuByAysFzO277sA84RXENoXidUFeMJLrcX2e/kcETthwvH5HG3YHZfWGHCrj763SNm3jCehfyBMAWYxq8HQRFLpmuFT6tnbdltLduyXj+scoolv1NFN9dNxIWE3s9BcfvbvBOrpfGrdcdgILEAJoGlIP4/WHVPYHOAChgGl3lXPJOxFwaUdhAQL3WRSU9UT3+YuF9k82FWv1rydqf4/UqvnWHh6ADAKUdrEziQsUpsdw8fQrHU53IDwN9p9o2qVKEgT+N7piVelN9/Lc3SqIMxkBJVXwnhrCl2QC/TOJAYUnRkdhDeJNURrxIcNVmGW6K/Cm2937AJkX3RPXZ2QXgjPaPfZsXHbC3gdYwI3wnO/Xxx3o+hF7dGaKrJJNGyzMNcNvworNKiNNCg1nI20+14QEaNzkljTAEwHnKvBSVvCVRoDhDa2aGGg1WppjiRYU3BXAVWDYWFo2sEU1J9Wm67KdRrWawdHUNvsH5VOT2f523z/x7xZ6+M3xvr4B2dMHj70RasaAAAAAElFTkSuQmCC);padding:0;background-repeat:no-repeat;background-size:90% 60%;background-position:0 40%;vertical-align:middle;height:30px;width:21px}.nav>li>a.compact.data-dirty>span.tab-dirty{display:inline-block}a.tab-chat{display:none}a.tab-chat.chat-alert{position:relative;vertical-align:middle;display:inline-block;height:30px;width:22px}a.tab-chat .glyphicon,span.tab-chat-count{position:absolute;display:block;top:0;left:0;width:100%;height:100%;text-align:center;line-height:30px}a.tab-chat .glyphicon{font-size:140%;color:red}span.tab-chat-count{font-size:80%;font-weight:700;color:#fff;z-index:10}.tabbed-select:{width:100%}.tabbed-create{margin:2em 0 1em;text-align:center}label.tabbed-left{text-align:right;margin-right:.6em;white-space:nowrap;width:5em}label.tabbed-right{text-align:left;margin-left:.6em;white-space:nowrap;width:5em}.tabbed-profile>label{font-style:italic;font-weight:400;color:#888}.tab-icon{padding:0;background-repeat:no-repeat;background-size:70%;background-position:50% 40%;display:inline-block;vertical-align:middle;height:30px;width:30px}.tabbed-profile{width:100%;text-align:center}.tabbed-profile .select-profile{display:inline-block}form.search-sources{margin:3em auto 1em;width:80%}.CodeMirror{font-family:monospace;height:300px;color:#000}.CodeMirror-lines{padding:4px 0}.CodeMirror pre{padding:0 4px}.CodeMirror-gutter-filler,.CodeMirror-scrollbar-filler{background-color:#fff}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0!important;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-animate-fat-cursor{width:auto;border:0;-webkit-animation:blink 1.06s steps(1) infinite;-moz-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite;background-color:#7e7}@-moz-keyframes blink{50%{background-color:transparent}}@-webkit-keyframes blink{50%{background-color:transparent}}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{position:absolute;left:0;right:0;top:-50px;bottom:-20px;overflow:hidden}.CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta{color:#555}.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-s-default .cm-error{color:red}.cm-invalidchar{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0f0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#f22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:#fff}.CodeMirror-scroll{overflow:scroll!important;margin-bottom:-30px;margin-right:-30px;padding-bottom:30px;height:100%;outline:0;position:relative}.CodeMirror-sizer{position:relative;border-right:30px solid transparent}.CodeMirror-gutter-filler,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-vscrollbar{position:absolute;z-index:6;display:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-30px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:0 0!important;border:none!important}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border-width:0;background:0 0;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent;-webkit-font-variant-ligatures:contextual;font-variant-ligatures:contextual}.CodeMirror-wrap pre{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;overflow:auto}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:0}.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber,.CodeMirror-scroll,.CodeMirror-sizer{-moz-box-sizing:content-box;box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute;pointer-events:none}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-focused div.CodeMirror-cursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background:#ffa;background:rgba(255,255,0,.4)}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:''}span.CodeMirror-selectedtext{background:0 0}.CodeMirror-hints{position:absolute;z-index:10;overflow:hidden;list-style:none;margin:0;padding:2px;-webkit-box-shadow:2px 3px 5px rgba(0,0,0,.2);-moz-box-shadow:2px 3px 5px rgba(0,0,0,.2);box-shadow:2px 3px 5px rgba(0,0,0,.2);border-radius:3px;border:1px solid silver;background:#fff;font-size:90%;font-family:monospace;max-height:20em;overflow-y:auto}.CodeMirror-hint{margin:0;padding:0 4px;border-radius:2px;white-space:pre;color:#000;cursor:pointer}li.CodeMirror-hint-active{background:#08f;color:#fff}.CodeMirror-dialog{position:absolute;left:0;right:0;background:inherit;z-index:15;padding:.1em .8em;overflow:hidden;color:inherit}.CodeMirror-dialog-top{border-bottom:1px solid #eee;top:0}.CodeMirror-dialog-bottom{border-top:1px solid #eee;bottom:0}.CodeMirror-dialog input{border:none;outline:0;background:0 0;width:20em;color:inherit;font-family:monospace}.CodeMirror-dialog button{font-size:70%}.cm-s-prolog span.cm-number{color:#000}.cm-s-prolog span.cm-neg-number{color:#000}.cm-s-prolog span.cm-atom{color:#762}.cm-s-prolog span.cm-uatom{color:#762}.cm-s-prolog span.cm-qatom{color:#008}.cm-s-prolog span.cm-string{color:#008;font-style:italic}.cm-s-prolog span.cm-string_terminal{color:#008;font-style:italic}.cm-s-prolog span.cm-bqstring{color:#040;font-style:italic}.cm-s-prolog span.cm-codes{color:#040;font-style:italic}.cm-s-prolog span.cm-chars{color:#040;font-style:italic}.cm-s-prolog span.cm-functor{color:#000;font-style:italic}.cm-s-prolog span.cm-tag{color:#000;font-weight:700}.cm-s-prolog span.cm-key{color:#000;font-weight:700}.cm-s-prolog span.cm-ext_quant{color:#000;font-weight:700}.cm-s-prolog span.cm-qq_content{color:#900}.cm-s-prolog span.cm-qq_close,.cm-s-prolog span.cm-qq_open,.cm-s-prolog span.cm-qq_sep{color:#00f;font-weight:700}.cm-s-prolog span.cm-qq_type{font-weight:700}.cm-s-prolog span.cm-comment{color:#060;font-style:italic;line-height:1em}.cm-s-prolog span.cm-comment_string{color:#060;font-style:italic;line-height:1em}.cm-s-prolog span.cm-var{color:#800}.cm-s-prolog span.cm-var-2{color:#888}.cm-s-prolog span.cm-anon{color:#800}.cm-s-prolog span.cm-singleton{color:#800;font-weight:700}.cm-s-prolog span.cm-identifier{font-weight:700}.cm-s-prolog span.cm-module{color:#549}.cm-s-prolog span.cm-head_exported{color:#00f;font-weight:700}.cm-s-prolog span.cm-head_unreferenced{color:red;font-weight:700}.cm-s-prolog span.cm-head_built_in{background:orange;font-weight:700}.cm-s-prolog span.cm-head_iso{background:orange;font-weight:700}.cm-s-prolog span.cm-head_hook{color:#00f;text-decoration:underline}.cm-s-prolog span.cm-head_extern{color:#00f;font-weight:700}.cm-s-prolog span.cm-head_public{color:#016300;font-weight:700}.cm-s-prolog span.cm-head_constraint{color:#008b8b;font-weight:700}.cm-s-prolog span.cm-head{font-weight:700}.cm-s-prolog span.cm-goal_built_in{color:#00f}.cm-s-prolog span.cm-goal_imported{color:#00f}.cm-s-prolog span.cm-goal_autoload{color:#008}.cm-s-prolog span.cm-goal_undefined{color:red}.cm-s-prolog span.cm-goal_dynamic{color:#f0f}.cm-s-prolog span.cm-goal_thread_local{color:#f0f;text-decoration:underline}.cm-s-prolog span.cm-goal_constraint{color:#008b8b}.cm-s-prolog span.cm-goal_recursion{text-decoration:underline}.cm-s-prolog span.cm-meta{color:#00f}.cm-s-prolog span.cm-op_type{color:#00f}.cm-s-prolog span.cm-file_no_depends{color:#00f;text-decoration:underline;background:#fcd}.cm-s-prolog span.cm-file{color:#00f;text-decoration:underline}.cm-s-prolog span.cm-nofile{color:red}.cm-s-prolog span.cm-option_name{color:#3434ba}.cm-s-prolog span.cm-no_option_name{color:red}.cm-s-prolog span.cm-flag_name{color:#00f}.cm-s-prolog span.cm-no_flag_name{color:red}.cm-s-prolog span.cm-error{border-bottom:2px dotted red}.cm-s-prolog span.cm-instantiation_error{border-bottom:2px dotted red}.cm-s-prolog span.cm-link{color:#762}.cm-s-prolog span.cm-expanded{color:#00f;text-decoration:underline}.cm-s-prolog span.cm-undefined_import{color:red}.cm-s-prolog span.cm-unused_import{color:#00f;background:pink}.cm-s-prolog span.cm-xpce_method{font-weight:700}.cm-s-prolog span.cm-xpce_class_built_in{color:#00f}.cm-s-prolog span.cm-xpce_class_lib{color:#00f;font-style:italic}.cm-s-prolog span.cm-xpce_class_user{color:#000;font-style:italic}.cm-s-prolog span.cm-xpce_class_undef{color:#000;font-style:italic}.cm-s-prolog span.cm-outofsync{border:1px dotted red}.cm-s-prolog span.cm-html{color:#909;font-weight:700}.cm-s-prolog span.cm-entity{color:#909}.cm-s-prolog span.cm-html_attribute{color:#909}.cm-s-prolog span.cm-sgml_attr_function{color:#00f}.cm-s-prolog span.cm-http_location_for_id{font-weight:700}.cm-s-prolog span.cm-http_no_location_for_id{color:red;font-weight:700}.cm-jumped{background:#ff0}.CodeMirror-hover-tooltip{background-color:#ffd;border:1px solid #888;border-radius:4px 4px 4px 4px;color:#000;font-size:10pt;overflow:hidden;padding:2px 5px;position:fixed;z-index:100;max-width:600px;opacity:0;transition:opacity .4s;-moz-transition:opacity .4s;-webkit-transition:opacity .4s;-o-transition:opacity .4s;-ms-transition:opacity .4s}.CodeMirror-hover-tooltip .pred-name{color:#00f;font-family:monospace;margin-right:5px}.CodeMirror-hover-tooltip .pred-tag{font-weight:700;margin-right:5px}.CodeMirror-hover-tooltip .pred-summary{font-style:italic}.CodeMirror-templates-variable{outline:solid #4664a5 1px}.CodeMirror-templates-variable-selected{background-color:#b4d7ff}.CodeMirror-hint-template{background:url(data:image/gif;base64,R0lGODlhEAAQANUAAH5weoJ1g4h8kY+EoZaMsZyTv6CYyGd9qWqArG+Fr3aLs3yRuIKXvYmdwY2hxIaUroiVrIyXqoidwZGlx4+aqJScpfr9//f8//b8//n9/9Xz/+v5/5ifovH7/+n5/+36//D7//T8/+r6/+v6//P8//f9//b9//r+//n+/56inqKlm6iol62rlP7xevzndvjQasiYQP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADEALAAAAAAQABAAAAaEwJhwSCwOYcikEkmEtZ7QKKzpMhgKhIEgAHBNj6+wePwVsjTotJpFXGk88Hh8RVRpJo4GY6FIIDwqRCkaIxuFIoUjIylEHHd5e30IHxxEFRogIB2ZmpoVRBR3EgsJByGnJBREERolFyWwJhgmJRFEEBonFigoFhYZvRBED8TFxsRGyUVBADs=) no-repeat left center;padding-left:18px;margin:3px 0}.CodeMirror-hints-contextInfo{position:absolute;z-index:10;border:double #d4d0c8 3px;max-height:200px;max-width:400px;min-width:400px;overflow:auto;background:#ffffe1;font-family:Tahoma;font-size:12px;padding:5px}.CodeMirror-hints{overflow-x:visible}.CodeMirror-hint{position:relative;max-width:none;overflow:visible}.CodeMirror-hint-description{display:none}.CodeMirror-hint-description.active{display:block;position:absolute;z-index:20;left:10px;top:0}.CodeMirror,.prolog-editor{height:100%}.CodeMirror pre.CodeMirror-placeholder{color:#999}.CodeMirror .source-msg.error{color:red;border-left:2px solid red}.CodeMirror .source-msg{position:relative;border-left:2px solid #000;padding:0 5px;background-color:#ddd;cursor:hand;cursor:pointer}.CodeMirror .source-msg>span.glyphicon{color:#000;position:absolute;right:5px;top:5px}.CodeMirror .source-msg-charmark{height:1.5ex}.CodeMirror .source-msg:hover{text-decoration:line-through}.CodeMirror-hover{outline:1px solid grey}.CodeMirror-target-line{background-color:#ff0}.CodeMirror-search-match{background-color:#ff0}.CodeMirror-search-alt-match{background-color:#bee}.CodeMirror .trace.call{background-color:#0f0}.CodeMirror .trace.exit{background-color:#0f0}.CodeMirror .trace.fail{background-color:red}.CodeMirror .trace.redo{background-color:#ff0}.CodeMirror .trace.exception{background-color:#f0f}.Prolog-breakpoints{width:1em}.breakpoint-marker{color:#822;padding-left:4px;font-size:120%;position:relative;top:-.2em}div.edit-modal{position:absolute;left:0;right:0;top:0;bottom:0;z-index:2000}div.edit-modal>div.mask{position:absolute;left:0;right:0;top:0;bottom:0;background:#000;opacity:.2}div.edit-modal .goto-source{position:absolute;padding:.2em .5em 0;border-radius:5px;border:1px solid #000;background:#fff;box-shadow:10px 10px 5px #888;z-index:2001}div.CodeMirror-dialog{border:1px solid #888;background:#f8f8f8;box-shadow:10px 10px 5px #888}div.prolog-query{height:100%;padding:5px;background-color:#eee;position:relative}.prolog-query-editor .buttons-left{display:block;position:absolute;bottom:10px}.prolog-query-editor .buttons-right{display:block;position:absolute;bottom:10px;right:5px}.prolog-query-editor div.prolog-prompt{position:absolute;top:5px;left:10px;heigth:100%;vertical-align:top;font-weight:700}.prolog-query-editor div.query{margin-top:3px;height:calc(100% - 35px);margin-left:2em}.prolog-query-editor div.query-buttons{margin-left:2em}span.run-chk-table{margin-right:5px;color:#777}span.run-chk-table input{position:relative;top:2px}ul.dropdown-menu.history{max-height:30ex;overflow:auto}div.prolog-runners{width:100%;height:100%;background-image:url(../icons/owl_25_years.png);background-size:90%;background-repeat:no-repeat;background-position:35% 50%;overflow:auto;padding:0 5px 0}div.prolog-runner{position:relative;padding:2px 0 2px;margin:0;border:1px solid #ccc;border-radius:5px}div.prolog-runner.tabled{border:0}div.prolog-runner>a.close{position:absolute;top:-4px;right:-10px;z-index:10}div.prolog-runner:focus{outline:0}div.prolog-runner.iconic>div.runner-results{display:none}div.runner-title{padding:0 5px 2px;border:2px solid #333;border-radius:5px;box-sizing:border-box}div.prolog-runner:focus div.runner-title{border:2px solid #000}div.runner-results{padding:2px 0 2px 0;background-color:#fff;border-radius:5px}span.answer-no{float:right;color:#060;font-size:80%;margin-right:2px;font-style:italic}div.answer{padding-left:5px;border-radius:5px}div.answer.even{background-color:#eee}div.answer.odd{background-color:#fff}div.response{font-style:italic;color:#00f;font-size:90%;margin-left:10%;background-color:#eee;border:1px solid #ccc;border-radius:5px;padding:0 5px}span.prolog-true{font-weight:700}span.prolog-false{font-weight:700;color:red}div.cputime{text-align:right}div.cputime span{background-color:#ccc;border-radius:5px;border:1px solid #888;padding:0 5px;font-size:80%;font-style:italic;color:#060}span.runner-state{position:relative;top:2px;width:1.5em;height:1.5em;margin-right:5px;background-size:100%;background-repeat:no-repeat;display:inline-block}div.runners-menu{position:absolute;top:3px;right:5px;z-index:2000}div.runner-title button.dropdown-toggle{background:none repeat scroll 0 0 transparent;border:0 none;cursor:pointer;padding:0}div.runner-title>button{background:none repeat scroll 0 0 transparent;border:0 none;cursor:pointer;padding:3px 0;color:#000;float:right;font-size:21px;font-weight:700;line-height:1;opacity:.2;text-shadow:0 1px 0 #fff;margin-left:5px}div.runner-title>button.rtb-toggleIconic{padding:8px 0}div.runner-title>button:hover{opacity:.8}span.runner-state.idle,span.runner-state.wait-input,span.runner-state.wait-next{background-image:url(../icons/logo.png)}span.runner-state.wait-debug{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3wMfEyg27OEfWQAAAYdJREFUWMPtVsFtwzAMJINMwlHyt0foCIW6gUYQMkJGsP8dRauwH9GQacqiDffThoARR6LE4/EoGeBt/93w6AIG4J3N8FcA7AXVm/BBMDdP8JkIsASqHx20BtMD7bKJiBnAfErc5nzld31wDQKuBuEN3mOjHj+j9GZmVuaWv4xNRHwo+7Kgmxk4dCH/WyDuemDI2cMQIGx5ZaOv+Uz9RQNepfdYqPbzB2/9ekGwAaJ7ElpOuiTooFb7zEQw5Gyejs2TcMgZhpxhJjLRYkcjXv8mgJloQS4gpgoMO4RqsMjNEoSYGADg8XquFgqIs1et0Rm4y8BYqK9rJ+8nrm7//VwY4BDT8oh66w7wdINuY1i36FYDQr+2r5gWRoQBLcxaM71vhGbHtACkGCDEtBp7vJ4rbVhlGvc1g5ujOMWARjlMG3NeQI0xQPj4hG9dzgLeKLMkxRLzbmlBJjUQi5FqDmv/lp9O+LY3mWJAzY7F2JG5PXbBWwaZ9/hc+g3f2lCPW36Xg3nbn7EfAs3X9neMq50AAAAASUVORK5CYII=)}span.runner-state.running{background-image:url(../icons/running.gif)}span.runner-state.false,span.runner-state.stopped,span.runner-state.true{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAMAAADyHTlpAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAzUExURTxGYTxMaj9FYktZdXSHpT9FYVplamBykExLT4mYtZByMb6gSPrIbO/Sk5OTkw4LBv///4iQZ38AAAAKdFJOUwH4Xfn/K/79yv8b7m9OAAAAAWJLR0QQlbINLAAAAAlwSFlzAAAN1wAADdcBQiibeAAAAAd0SU1FB+AJFQwTJ324eWMAAAIsSURBVDjLjZXtmoQgCIVDSFSy7v9u96DWZO3uM/5oJnvj64Aty2uRr7B8s1iwaP0GjUL0HboqEyn/E8H1KImj+rl/5cKnSzgnYqXuIrDyIxUVaT4DNZRE26vY1/HWRSqpREq4AiKPQP0XBrClnxxX9vgYBkQjcYyEq3rNHGe5mw06TBGVYrZtZiXi3jc5z9XgzlKxWrdtB1yrlUbKHKtLhBCi1W2/1laNyW081AgqbnK/LQEbo/BTN0Qbty3v+wxbFA2vHmGrgsdIa28/Da6mwi//sZH7cSQnj2OwRR9mCaRnZHYcR0dTz22Lty5b15BISs+9dDScKMxCCKYUVu8TkSzROvqxWkbJTIduC2XorIT0+6N0WH/DTpQYfaCZl5QZfzletbdBnLdbPFH0nLfKyP+zTlQqUGiWEUALRJtV2/cXjxJkxKiRF2TPmNGWlpWZdDU8LR/2UbAVCjT9S5rI0vTKc2dRLrXXqoworPRyoa7zICaRXliv65H80quFSjz7RaWMXrXiZGrqiSf16OwlqZZ6lfLUw7tF0vJurVtnDx02Y8069/bKWeM8Lz4xxav/rAA6mHmCfVxwtGDIc5rcZ9/0IDCy1ee1GoYlYztqjuvk3mWGAWSHg8BKKd568C6u5S2EhmaFxgrBtUXoZxDc7dmbalILsLsBLe09HFRHc/gg/XhJ11Hc0CuVwK/D+ubhXaE/VmpWw5foL2fK718FVOGp5p+fGBys6b3/A/dgJEXSAh3eAAAAAElFTkSuQmCC)}span.runner-state.aborted,span.runner-state.error{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAMAAADyHTlpAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAzUExURTxGYTxMaj9FYktZdT9FYWBykExLT1planSHpYmYtZByMb6gSPrIbO/Sk/8AAA4LBv///y1hUbcAAAAIdFJOUwH4Xfkr/cr+eNcn5wAAAAFiS0dEEJWyDSwAAAAJcEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfgCRUMAA5e5aCdAAACE0lEQVQ4y41VCZKEMAiUIIQcjv//7TZJHDXubkmVo9FOczRkluVh5BaWN8YGo/UdlOgl1JhI+J8Ivp8UpCRyrh+58OGSHMpCbbEGGU9nfGIWnShQg5JJ24r3E5axFouk+AWoRSB+N2N8kzPHlT0VBoFJdGBkcj9tG3O60gbpVEDkXGqtpeRIETuc4V4N7liKZdu2+gF628pAPvLyEACsn6/VLXscMqsRxDhv2+dqFcTxqRuijaV+JgPWJDyE59I4kVa/DSyK8vAfu/d9V0fu+8BmmWjJYm3uy77vHao93nqNdl2DsuVOmjtUDyhoIQSThnWBMmbJZOR0suZRhtJkQ7PDNfSEmnWkrw2DHeWAQlo0QmJA8UAcv4Ua7Me6QrQGBWtq8sXt84dtDpUGbQ10YfWsazkXiDUlQHRZFbEAfXisWT39XE4oOknDPsqlYpcKAOlXGcVCQjcJUpe17Add0V4DQO+DGKw1S9ZrQpq9CdLcL94DteR78j4QcfLvTQBpy1yoUrOk+SAIESHMtUVvYwjleabxfV4Gskk6+Xf58gVcXdLop4DprbOTtJcxVx9Zv0p2mcRpL0fGgpX4K/+WMTIFP96aeGfepBdaxE6WGBoL9MYudt2J3F2ye7AKujYXioFICBGM6941T4+j8HCytrjP70rzAbte+oHjs/C/mjqrvYaavfrbCMj+oeYfUJ/LX/z/ANqPJNQJtoGtAAAAAElFTkSuQmCC)}div.controller.running>span.running{display:inline}div.controller.running>span.sparklines{display:inline}div.controller.wait-next>span.sparklines{display:inline}div.controller.wait-next>span.wait-next{display:inline}div.controller.wait-input>span.wait-input{display:inline}div.controller>span{display:none}span.wait-input button{float:right;box-sizing:border-box}span.wait-input span{display:block;overflow:hidden}span.wait-input input{width:100%;box-sizing:border-box}pre.prolog-message{white-space:pre-wrap;padding:2px 2px;margin:0;width:100%}span.output.error-context{display:block;position:relative;padding-left:25px}span.output.error-context:hover{text-decoration:underline}span.output.error-context>span.glyphicon{position:absolute;top:5px;left:5px}a.goto-error:hover{text-decoration:none;outline:2px solid #337ab7}pre.msg-information{color:#060;font-style:italic}pre.msg-informational{color:#060;font-style:italic}pre.msg-warning{color:red}pre.msg-error{color:red;font-weight:700}table.prolog-answers{width:100%}table.prolog-answers td{padding:0 5px;border:1px solid #888;vertical-align:top}table.prolog-answers th{padding:0 5px;border:1px solid #888;text-align:center}table.prolog-answers tr:nth-child(odd){background-color:#eee}table.prolog-answers tr:nth-child(even){background-color:#fff}table.prolog-answers tr.projection{border-bottom:2px solid #333}tr.projection th.pl-pvar{color:#800;font-weight:700}tr.projection th.residuals{color:#888;font-weight:400;font-style:italic}.answer-nth{width:2ex;text-align:right}th.answer-nth{color:#888;font-weight:400;font-style:italic}td.answer-nth{color:#060;font-size:80%;font-style:italic;background-color:#eee;vertical-align:top}div.trace-buttons button>span{display:none}div.RIP,div.trace-buttons button{display:inline-block;width:24px;height:24px;background-size:90%;background-position:50% 50%;background-repeat:no-repeat;margin-left:5px}button.nodebug{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH3wQBDQAOjeB7qwAABLlJREFUaN7tWltMHGUU/v7ZYSmXBbpbEDXYGi6VCmpo+2BMDETJQpvyYBVvNGmIIabaGH1Aa3wg6UubGH1Qa9Rq2jRdEqlPmBhSG0LUxhZptlDKStGEWIHtUsp1F3b3P8cHdpYBamEH9kLSk5xkM5OZnG/O951z/pMF7lt8TUT6wNFzI+8w0KAAZz56MffYRgTgBZACAEKIE8GenMNNTYLiBUAx8EyK9oOZD6Fk+EzDV5y0kQBABwAcxGvZluG2xm89lg0FgJkhiUHEYJIVSpLvwpHTN20bAoAW/BaLAkkEIoaUvNsvA22Hv7uRndAAmAEKffmcTBUP2ZJCmSBIyTuFX7l06IuBgoQFQETzAcv5LFjTTdiabQYxQtfoUWb5S8NnfaUJCUDjvUYdIkZWugn5DyaDodEJuRRER/2nfU8nYAYYUoYCJYTdkqqiKC9Nn6XNMkDn6473VCYWAMnhL7/U0zeZsGNbGhQFWpbSSHLry0edLyQQhWgZhfSemmxCaX4GVJMGgpOJ+Pv9TVfqE4dCmoj57p5sVvBkYRbMZhNIEiSxSUo+ue/DzncTAkAoqP+lEhHDnCRQtj0TaSkmTTeCiD+xN146lhAUWo2rJoGyYisy0tVw5ljS+8+9d/HzpiZW4ibicOMKBXUvFwIoK7bClmXW95C32sd+O13e1K7GqQ8QpORVZ0IAKCu24QFrSrgAyCDV+UeUH8oPtm+Kj4iX9IGVnBh4qtiKvNy0cBYlUc20iX96pv5XSwwBkI5GkTkzUFpkRf4jGQt0Ii6flr4LO19t3xLTUYIiEPNiEIzHCzajpNCqzU4g4t0+Eegoeqn14RiJmMJUMuoFWzPxxHbb/GguGcy0Q1WTfi55pS0vNp1YsqEM6L1wWyZ2leSED+YMPEaCv4kkHtW4iOeBrNWIF7+DBYuoA1ioImsD4Pr7Drpdo9AwCMClkPJGVAHIJQI2dCQFw3l9FAODE/rLF83JyXudpyrGo5sB3RwkDWyDmIA/em/hn6Ep/XKqTVXFfuepiplI36caLaNS0jL+rubZzm43Rm7p4xQtIjhR191c6zeSTYMijpxCQUm47HRj9I5Pf/lkX3DiTbTUSqM6iomI/QHC5asjmJic01ebj12OqkZArKkSGKDQ4g68ks35JTqvujE149dvZD9wOaqPr8c4bUDEq+8D3tkgunrc8PqC4cchxNt9DvuX63WgMVxGpbw3hWa8AVzp9WBuLhx8gBkHXc12x3qeyAxoYGUKTU374ewbRSCgaVP4WEGt66z9x/U+ExurQlI7kS2/Pz45i2t/3oZcuDnJkDWus3s6orGVMN4H7pKB2+Oz6P9rTB+8h4Wodjn2dEVrL2RQxMv7gGfMi4HBcZBkbbK8SRCV/Q67K5qbOcMa0IvY7ZnB4NBkOHgAN4SQlf2OvYPR3o0appAGZMg9gyH3lD4bThPUqmuOKncsttMGRTwf/L/uGQwvDr4rEKTqvpbnPYiRKWsR8YgueAG0pU4Hnh1o2ROz4A2eiWnRYmthopys6Wrd50WMzdhuNCRiABACjlSL7fXeFmPjcDwo5CPS6rw4cb3o9wNdX+8KIE5mZBo9AsYBhjjnarbH/a8G9y3e9h/uU+EcypgobwAAAABJRU5ErkJggg==)}button.continue{background-image:url(data:image/png;base64,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)}button.skip{background-image:url(data:image/png;base64,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)}button.up{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH3wQBDDYM6zDhxQAABQZJREFUaN7tWW1oVWUc/z3n3JdtXudUzBfyZcuRaUVSmbVerDQLC0FIkCAR+1YIUhLNivslqm9ClrhR2ZQopPrSlyAQMZGQymXZjERN0d07d9e2u3nOPef5//pwPHdznqsbe+buwD8cuFye8zy/3///+7889wJlZp3Nj6RzTcv7O3c/2ExC3Wi9VW4EFGUrqStJeaVj133vTTgCpI6TAlID0G9lP1q8aYIRCMCTGhSBQJrbd9Y/P5EiUARPaoBiU8uX53bU3hspufEEm/14RcpOXK6xPUm4AAAHCviTIhWkhmUnob18SOQUtL98zhsXLo0Lgb4vVi7VmquE3lMk7yd1DSixwOMS5XlU3bUOfW3fQnwHpIZQDuve5Mra9Bkn3Dc21sDzn69+VqAbfS2PBSBZBHg98KSGshJILdmA7tZPQQpA3aCqej4j8ZJS4JgS6Nz3XHXCkxaBrOUQsCFAKAuIVUApACIABQoDa2KTZ8GqmIZU/QvoafsmIAVuOPtB9T9Az7tjJqHuvasXWoLvKXJn6F0oC/bUOljVc2CnZgGJFJQ1fP/1tO1H/9mDoGiQQtLfWNfo7DVOgC3PTMqL+pmUJaHX7RmLEJ+9FIhXjmJnQdcvTXCyv4eSc6nkaeNltFfUJyF4QCFe+zjitz8E2AlA9CgeYso9G6Hik640OSQVrTeN5kBfy6oHtJaXQ9nE5zXAnjIfoBjZ//L5Q9Bu1+AiesAoAdFqK+mD1LBr5sOeugAIvDVqczqO47+2/YO/2lfX6O4wRiDf/PRMTf/FsFTaMxYFob9evoiGOF3QTi5ITt8BKVBKITl9EVS8CgBQ6DmHXOsegAzegzroeu5mpUBjBHxLngAlTgpU1TSoZHWo1YhxwYd7/iiczK+QQt81/QAU2JUzMH3ZFminC52/7Qa1G75+Mum56xamUTDaBwhpCOu7Pem2krqn5yB/8jv4+YtgRDMDBRQNL38BLPQhd6wZUugNNd8hgjVz08iZ78SU5SEAq3JaSfn0n/5xKPgsoY8R0g3qbopsJkWRGrnje+Dl24s5LEqvrX/HPzV4P3MRoJ4ZRsCKV0Umr+7PopD7OwQvQv3a3LntTWo9iotPv5/aRGqb1HC7ilhFERvrt/tHhu5pMgJTQznAsiMJuJfaBo0TbJn3evuuUuP0EGuse7uwf8zuA0yviJF6MikggioS1Yz83otFzQv9r0rdB64el1XTHdsLH5Y620gEMnW5ZKw/roKZR4EkEAyLV1eqy5eKEdDC1pL1YODDD/967qs35Uo5eCQG9bWP+BDfDdfJgm0dmWj06vCVD630CuufTMO/3rkxowREACWRFYjiIezSgPSH8/xQSyXcNflCxTLXd44uSSN/o3PNEMgArLxyCYGKHh+0N7jOe6W2mrUNfYBzYLhHG40AKIFbo5oYpdikaGi4M11GEY7QjJIQdRE8DQ145nOAOqgLUQCHjgzlSUCC4hdJwDx4gwQyIJMDEYiag8Q8+DGMgERKaCzMIIGB5IzyNMufgB7oAyUkVPYEgkRFySpU1gTCJgWlSuQAyzwCxQ47YSUkxW6b+etr3CwzMk73JjM+qTn8SsNCWRGo3wIX9HcCGA6DApTaYYrAVT/uPnr3iRFl2k9/LFamBDhC2CoyB85nazAe1rD4+IjWHz5RIonPZGePCwGKb0ZCownleEmo7P5mHVUfeLj20IhePnIat+yWTXT7H9J2ChlDGcHsAAAAAElFTkSuQmCC)}button.retry{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH3wQBDDgagWd5GgAAB1NJREFUaN7tmVtsHGcVx3/nm9n1+hLHzj2NY9eNMWqFBK1DUAJSIhRAQqqoCjU0IkUgQXkBBVUUpebBCBR4qaJGQmpA3ITKLShUsgJ9KWoVKanS0kJL1KYkcZr6Ejtq1vb6speZ7/AwsxfbMxvb2QQq5ZPGs96dnXP+5/zP/5z5Fm6v2+v2el8vuRk3VUUyP+tZaxP1zdFXpOZfL65taZwck97Tc7ccwPhP7+tyHN2tIrtRs0NE1oJZKyICAiJIeAZBSmfDvM+D12lBLqpw3PruH1q+duLiTQGg/Xvcq+vTnxfhO4h8rNKx8mtTfm95ICqv/Qti+lY9cuLNmgEYO3L3Xoz5hYhpj3MMcTCJenBToWNUASGggnpziPWjQHhinMONdfUHpfeYv2IAerQnMZ6b/iHGfBfEBEYM4qZIrO3GWd2B29KB1DUjTnJlteNn0clh/PfOYycvIToP8MBsqnHfht5j08sGoH/CGbvS/WdEHihGTZJNpNp2kty8HXFTtReCuWt4Q2fQqeEKEOZkY6phr/Qeyy8ZgPZjRlu7fisi+4ppTW78MA1dn0Xcupsuk/7Vs/hDL5fqy4g51rD/xBdF0CUBGDly5wFR53CRm/Udu6nv2HNLtd4f/zf+yGuVdPpq0yN//fV1AQwd2dJmbOItRBoFQ3LTvTR23/8/aVje5VNo+lIRxHBT1u2WRwdm3aoa6zuPq2ijKDirNtCw7TOgfuS1tpDFT1/Ay4yg3gxayBFkeYHEAmDATSBOHZJswGncgFnVhiQbYn1xtvRQmL6CFLIgbMmkvAPAoVgArxztSTA7vh8FFWi485OBcbsYQG70VXJDp1E/T1GdYiU2ok948hYiDs6aLhJt2xGTjNB7wV1/D97IPxAFEXlUlR+bOACbZ0d3q2oLKE6qFbd5axD9BUf28knmLv0d62UBBVUUG56D/0HR8Fx+bcvvqaLq47/3Nvm3/wbeXKQt09IOTjK8r22f/c2n74vNgLV8TkRRhWRrV2TkvZkx5oZfQgKmoMpZMfwRq2+okXEDucBBgESApQjCdZoM/jqr5oNGzKdQ9qiAnUtTGDpDYuvOSL9M00bsxGVUwMID8TUg+qGQwrir29EI7ueuvArWoiKIysDGa5selP4XvBXU6KFrP9/5MKrPqCBeehBnwz1IsmmxW03rYeKdMCjmo7EUwtpNRQqYRGOQgQVHPn2hRAGxfH+FzgOw5uunf6/os0Xq+elLkTbFbQwohKJit8UCUHQzalEUcesX8VHzGbQwF/AdTW88cO71G57trR4vBsTPXousA3GcyvpqdqsM9atVQNRijLOoBmx2MgCnoGIv1kLrRf2zVp1AuLKZyLorFz6oUFelD5QuitR+62eDSAiIMlWbduWmwUfVoLYQ3XPUR9UGo7iCG58ADSKhRBawWq8CpOZr0m1NIScqiFjU+pF2A1BaAlE1A6phH4pIJdYvg8RoDefQwC72unZVbXUA4fNtbCrLIG0tB+nQrl2C3aVQKGZ8QINuiwA19L9MXY3NQNGuVquBSpSRNaBeSYWCP7WmkMbWQNlu1QwERRKMLXEZsKiY4NGvhnsyhPyuloFA/eR6GSjKlR85LAWRsFgxNfJ+FiURJlSr1kCgfhb34o8SO6xIn4g0BNO6CXhdGQmNr4Gw2e0aenLzKyBgDKIoRs7kJ5zHOvsvZZebgeCeGmu3UuJdkKcF7g3ac6goKsUGFRbp9SJBM2p7EIOEwx2W7XWrvVPAM8urAIuoCUaUOAphUTWIgFHhX/NpUzGjoySb21D1Fx2mbjWY5Lxri7NTqL15X3hjJTUQPE8QaTc4ys8Trl2V/6bJJF3gyyUdlgTNd+zATbXi1rdGRsIYl9a79uIX5shNDJKbfKdIJ1TMhKh8YeuBodeXWQKQCLMaV8QL+o/5wLfJbevL7wc5UFR0tXkyoy+jNh9y3Y+eDMWQS18gOzFYyoRFz6nvb297bPj5lfaB4r3i7FY+2ZXkY1tf7imEh8I4YP0c6cHnA+ci5nL1cky9e4rs5GAl9V40Jrur/fHxCzfWBwKKRNktjhJFEIsEfPCQu9uqOQ6sCclC86aPUN/aVa4jL8fUyEt4uanSQ7qIHHdnUvvv6B+ZXanrVw/fvdl3/JHFe62xGwWTiwS88wnvRbGyCzgfusvUldfIjP0TtR5edoL05RcoZNMBT4OIPbl15tpDN+I8QC6h+ciNgPiNgnxsCz3Xzzo3Ufcs6MeLGxt1Desp5CdR6yNBBDxVvtV5cPrpeSQY+EbDkr2eS6v0Hiv9sDH6VNcvEfmKhBvIVTKRV+QHVWeAwX5SNpH8FfCl0u5M6WZkBNPbeXDmucrvTA08vK75/t9dXeaz2IpnkaozQGc/2bueyO9T5dCCPvEu1nxiofMAZKZv6Zaju4TYKOT7LhxKnAd+gsp/XMf0tn9vZiT6Gxk61g8v2YH2daP+yTf/j341nDravS4U8WUcK1+m1gCmbzGFag7AN9OW2+v2ev+s/wKIypfbke4fXgAAAABJRU5ErkJggg==)}button.abort{background-image:url(data:image/png;base64,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)}div.RIP{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAzUExURQAAAAUHAmNlaKSkpXtpZllZWVx9LsHLo9bX2Wx9jpazUak9Lu3s797g33SZKnybRP///5NI/qoAAAAHdFJOUwVE/v+8OP47SgHcAAAAAWJLR0QQlbINLAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+AJFQwBEyT4/QUAAAFbSURBVDjLdVKBooMgCGxggQj2/3/7DnNb7m2kdspxgLVtN3sQw8r2y4glCaw/KAW+WivRD5EHK1trrTSqun8TcNWWjFYr0zcBD1FuxtyQ5NO9K2oTlYYyCDmYZcnC6u5wqzAJt1Kx9ZvKHsivWtu0wqLht16QXjULuGwnTv5Ngl2H5vSPDCErocAq7mnHq1IplAqPO4E0qOCqK26aIkrhVYGSgDAqAeyJF4Lj0C/SIACvNcBBWXtUyCeuHEsNUyGdUKm+tpmfgWo4ZtScSPN5D3FFP6f/J7wMPh8CH10oDq8xF12LRKhex8Od1FhT4GNkAs2RD7Yu7y7s6IfNGq5CjuPobwU7JaIboqz3nqTTQqy/auhiZgJfN5Hk9DxJlP/dfp7d8jklh2GRwR5BEEkwouY71wQ2ECrsUICN5WZznynyjS7GGDg7mLsDCjd7bmb3LwQ8xjbXx/bG2x+HDRcuxXGCugAAAABJRU5ErkJggg==)}span.depth{display:inline-block;font-weight:700;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAUCAYAAABF5ffbAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3wQBDjQRuYQ78AAAABJ0RVh0Q29tbWVudABEZXB0aCBtYXNrQcBmawAAABhJREFUGNNjYEAD7Wdr/zMxYAGjggMlCACJuAL3jmFt7AAAAABJRU5ErkJggg==)}span.port{font-weight:700;padding-right:.5ex;margin-right:.5ex;background-color:#ccf;display:inline-block;width:11ex;text-align:right;border-radius:5px}span.port.fail{color:red}span.port.redo{color:#ff0}span.port.exit{color:#0c0}span.port.exception{color:#f0f}div.prolog-exception{color:red;font-size:80%;margin-left:5em}div.controller.running>span.sparklines{margin-left:.5em}.jqstooltip{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}div.render-multi{position:relative;vertical-align:top;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAATCAQAAAA6heU+AAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAAEMQAABDEAbRyZ/IAAAAHdElNRQfeCg8LIivxaI+JAAABT0lEQVQoz33SsW5SYRgG4AchbSkcYrVpo6bGoXFydvMK3HsJLt6Ct+AFeBVunVx0cjFODvofqyDQFDVttef8cg6IA4SkFXjX70ned/gqk4kV+SUVnGs8rayC54KA/e7DvdpydiZIJXbEJyyFp4IjW27IFG+Xwp9SR266LhM/PT5dAn9IfbGtJROtP2ch/C711bZELmrYOFwIB1JtOxpyfzQl1n4vgANBx65NuaGmlsR69h88EXTcUpcpNLQkknJ3dAUeS327wlr+fpxe57Av6F1iLYmxOLgEe4K+2zZkitm2xFgumsOJrs/67liTGc4qm8YyUbw7gxNdwbE9NZlixhKlXBTl+1NYaU9SPfdU5Ubz0inL5aJya3h2oBa03XdNZqzZaR5uvq5/mFyUcVSUo0JRLerlxQFqwQPVN/FF+T4Jj0YL32ial8/eJfDK6vwDMhCTheu9OHEAAAAASUVORK5CYII=);background-size:15px;background-repeat:no-repeat}#render-select{position:absolute;background-color:#fff;padding:5px 0 5px 20px;border:1px solid #000;border-radius:5px;box-shadow:5px 5px 5px #888;z-index:500;white-space:nowrap}.render-selecting{outline:1px solid #800}.render-multi-active{position:absolute;left:0;top:0;width:20px;height:20px}div.render-item a{float:right;padding:0 10px 0 10px}div.render-error{display:inline-block}div.render-error span.error{color:red}pre.console{padding:0 9px;border:0;margin:0}span.format{white-space:pre;font-family:Menlo,Monaco,Consolas,"Courier New",monospace}a.download{margin-right:5px}a.download span.glyphicon{margin-left:1ex}.render-table{border:2px solid #333}.render-table td{padding:0 5px;border:1px solid #888}.render-table th{padding:0 5px;border:1px solid #888;text-align:center}.render-table tr:nth-child(odd){background-color:#eee}.render-table tr:nth-child(even){background-color:#fff}.render-table tr.hrow{border-bottom:2px solid #333}.render-code-list{color:#040;font-style:italic}.render-ellipsis{colour:#00f;padding:0 5px}.render-svg-tree{padding:5px;display:inline-block}.render-svg-tree svg text{padding:.5em .2em}.render-svg-tree svg g.collapsed g text{padding:0 .5ex}.render-svg-tree svg polyline{fill:none}.render-svg-tree g.noleaf text{font-weight:700;fill:#00f}.render-svg-tree g.leaf text{font-weight:400;fill:#000}.render-C3{display:inline-block}.answer svg{vertical-align:top}.render-graphviz{display:inline-block}div.R.svg svg{overflow:visible}.fold{display:none}.pl-ellipsis{color:#00f;text-decoration:underline}.pl-functor:hover{color:#00f;text-decoration:underline}.pl-infix:hover{color:#00f;text-decoration:underline}.pl-var{color:#800}.pl-ovar{color:#800;font-weight:700}.pl-anon{color:#800}.pl-avar{color:#888}.pl-var{color:#800}.pl-atom{color:#762}.pl-functor{color:#000;font-style:italic}.pl-comment{color:#060;font-style:italic}span.diff-tags{margin-left:2em}.diff-tag{border:1px solid #ddd;padding:0 4px;margin-left:2px;border-radius:5px;background-color:#e1edff}.diff-tag.added{color:green}.diff-tag.deleted{text-decoration:line-through;color:red}pre.udiff .udiff-del{color:red}pre.udiff .udiff-add{color:green}pre.udiff{max-height:30em;overflow-y:auto}/*!
+ul.dropdown-menu li.checkbox input{margin-left:3px}ul.dropdown-menu li.checkbox span{margin-left:20px}.dropdown-menu>li{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;cursor:pointer}.dropdown-menu .sub-menu{left:100%;position:absolute;top:0;display:none;margin-top:-1px;border-top-left-radius:0;border-bottom-left-radius:0;border-left-color:#fff;box-shadow:none}.left-caret:after,.right-caret:after{content:"";border-bottom:5px solid transparent;border-top:5px solid transparent;display:inline-block;height:0;vertical-align:middle;width:0;margin-left:5px}.right-caret:after{border-left:5px solid #ffaf46}.left-caret:after{border-right:5px solid #ffaf46}.dropdown-icon{margin-left:-12px;margin-right:5px;padding:0;background-repeat:no-repeat;background-size:100%;background-position:50% 50%;display:inline-block;vertical-align:middle;height:18px;width:18px}a.accelerated{position:relative}a.accelerated span.accell-spacer{color:#fff}a.accelerated span.accell-text{color:#888;position:absolute;right:10px}body,html{width:100%;height:100%;padding:0;margin:0;overflow:hidden}nav.navbar{margin-bottom:0}#content{width:100%;height:calc(100% - 55px);padding:0;background-color:#fff}.pane-container,.pane-wrapper{width:100%;height:100%;background-color:white: green}.splittable{background-color:#fff;width:100%;height:100%;padding:5px}div.tabbed{height:100%}div.tab-content{height:calc(100% - 40px)}div.tab-pane{position:relative;height:100%}span.glyphicon.xclose:hover{opacity:.8}span.glyphicon.xclose{margin-left:5px;opacity:.2}a.tab-new.compact>span{padding:6px 0}.nav>li>a.compact{padding:0 5px}span.tab-dirty{display:none;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAqCAMAAADCkShIAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAzUExURQAAAAICAQAAAAAAADAwHSkoFVtYJvj4wdHPi/37sKOfVvv3joJ+OfLsa6GaOfryVf////09bBAAAAAGdFJOUwD+LWbH9lfFP3wAAAABYktHRBCVsg0sAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4AkVDAQs7+kkfQAAAetJREFUSMeVVY3WqjAMc7B1XffT93/bm3aA+l1Q7FGBQ7I0WcHH47RCCMvjhwpe9/Fr+JEBLMV4nwCBmHO8LwFkzplvEyBAIGS62dSClUveJNZ7DUn2kltNBXdsVcqNaBdriA1tX77hYndcTIG/RwuByAysFzO277sA84RXENoXidUFeMJLrcX2e/kcETthwvH5HG3YHZfWGHCrj763SNm3jCehfyBMAWYxq8HQRFLpmuFT6tnbdltLduyXj+scoolv1NFN9dNxIWE3s9BcfvbvBOrpfGrdcdgILEAJoGlIP4/WHVPYHOAChgGl3lXPJOxFwaUdhAQL3WRSU9UT3+YuF9k82FWv1rydqf4/UqvnWHh6ADAKUdrEziQsUpsdw8fQrHU53IDwN9p9o2qVKEgT+N7piVelN9/Lc3SqIMxkBJVXwnhrCl2QC/TOJAYUnRkdhDeJNURrxIcNVmGW6K/Cm2937AJkX3RPXZ2QXgjPaPfZsXHbC3gdYwI3wnO/Xxx3o+hF7dGaKrJJNGyzMNcNvworNKiNNCg1nI20+14QEaNzkljTAEwHnKvBSVvCVRoDhDa2aGGg1WppjiRYU3BXAVWDYWFo2sEU1J9Wm67KdRrWawdHUNvsH5VOT2f523z/x7xZ6+M3xvr4B2dMHj70RasaAAAAAElFTkSuQmCC);padding:0;background-repeat:no-repeat;background-size:90% 60%;background-position:0 40%;vertical-align:middle;height:30px;width:21px}.nav>li>a.compact.data-dirty>span.tab-dirty{display:inline-block}a.tab-chat{display:none}a.tab-chat.chat-available{display:inline-block;height:30px;width:22px}.tabbed-select:{width:100%}.tabbed-create{margin:2em 0 1em;text-align:center}label.tabbed-left{text-align:right;margin-right:.6em;white-space:nowrap;width:5em}label.tabbed-right{text-align:left;margin-left:.6em;white-space:nowrap;width:5em}.tabbed-profile>label{font-style:italic;font-weight:400;color:#888}.tab-icon{padding:0;background-repeat:no-repeat;background-size:70%;background-position:50% 40%;display:inline-block;vertical-align:middle;height:30px;width:30px}.tabbed-profile{width:100%;text-align:center}.tabbed-profile .select-profile{display:inline-block}form.search-sources{margin:3em auto 1em;width:80%}.CodeMirror{font-family:monospace;height:300px;color:#000}.CodeMirror-lines{padding:4px 0}.CodeMirror pre{padding:0 4px}.CodeMirror-gutter-filler,.CodeMirror-scrollbar-filler{background-color:#fff}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0!important;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-animate-fat-cursor{width:auto;border:0;-webkit-animation:blink 1.06s steps(1) infinite;-moz-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite;background-color:#7e7}@-moz-keyframes blink{50%{background-color:transparent}}@-webkit-keyframes blink{50%{background-color:transparent}}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{position:absolute;left:0;right:0;top:-50px;bottom:-20px;overflow:hidden}.CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta{color:#555}.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-s-default .cm-error{color:red}.cm-invalidchar{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0f0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#f22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:#fff}.CodeMirror-scroll{overflow:scroll!important;margin-bottom:-30px;margin-right:-30px;padding-bottom:30px;height:100%;outline:0;position:relative}.CodeMirror-sizer{position:relative;border-right:30px solid transparent}.CodeMirror-gutter-filler,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-vscrollbar{position:absolute;z-index:6;display:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-30px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:0 0!important;border:none!important}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border-width:0;background:0 0;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent;-webkit-font-variant-ligatures:contextual;font-variant-ligatures:contextual}.CodeMirror-wrap pre{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;overflow:auto}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:0}.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber,.CodeMirror-scroll,.CodeMirror-sizer{-moz-box-sizing:content-box;box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute;pointer-events:none}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-focused div.CodeMirror-cursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background:#ffa;background:rgba(255,255,0,.4)}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:''}span.CodeMirror-selectedtext{background:0 0}.CodeMirror-hints{position:absolute;z-index:10;overflow:hidden;list-style:none;margin:0;padding:2px;-webkit-box-shadow:2px 3px 5px rgba(0,0,0,.2);-moz-box-shadow:2px 3px 5px rgba(0,0,0,.2);box-shadow:2px 3px 5px rgba(0,0,0,.2);border-radius:3px;border:1px solid silver;background:#fff;font-size:90%;font-family:monospace;max-height:20em;overflow-y:auto}.CodeMirror-hint{margin:0;padding:0 4px;border-radius:2px;white-space:pre;color:#000;cursor:pointer}li.CodeMirror-hint-active{background:#08f;color:#fff}.CodeMirror-dialog{position:absolute;left:0;right:0;background:inherit;z-index:15;padding:.1em .8em;overflow:hidden;color:inherit}.CodeMirror-dialog-top{border-bottom:1px solid #eee;top:0}.CodeMirror-dialog-bottom{border-top:1px solid #eee;bottom:0}.CodeMirror-dialog input{border:none;outline:0;background:0 0;width:20em;color:inherit;font-family:monospace}.CodeMirror-dialog button{font-size:70%}.cm-s-prolog span.cm-number{color:#000}.cm-s-prolog span.cm-neg-number{color:#000}.cm-s-prolog span.cm-atom{color:#762}.cm-s-prolog span.cm-uatom{color:#762}.cm-s-prolog span.cm-qatom{color:#008}.cm-s-prolog span.cm-string{color:#008;font-style:italic}.cm-s-prolog span.cm-string_terminal{color:#008;font-style:italic}.cm-s-prolog span.cm-bqstring{color:#040;font-style:italic}.cm-s-prolog span.cm-codes{color:#040;font-style:italic}.cm-s-prolog span.cm-chars{color:#040;font-style:italic}.cm-s-prolog span.cm-functor{color:#000;font-style:italic}.cm-s-prolog span.cm-tag{color:#000;font-weight:700}.cm-s-prolog span.cm-key{color:#000;font-weight:700}.cm-s-prolog span.cm-ext_quant{color:#000;font-weight:700}.cm-s-prolog span.cm-qq_content{color:#900}.cm-s-prolog span.cm-qq_close,.cm-s-prolog span.cm-qq_open,.cm-s-prolog span.cm-qq_sep{color:#00f;font-weight:700}.cm-s-prolog span.cm-qq_type{font-weight:700}.cm-s-prolog span.cm-comment{color:#060;font-style:italic;line-height:1em}.cm-s-prolog span.cm-comment_string{color:#060;font-style:italic;line-height:1em}.cm-s-prolog span.cm-var{color:#800}.cm-s-prolog span.cm-var-2{color:#888}.cm-s-prolog span.cm-anon{color:#800}.cm-s-prolog span.cm-singleton{color:#800;font-weight:700}.cm-s-prolog span.cm-identifier{font-weight:700}.cm-s-prolog span.cm-module{color:#549}.cm-s-prolog span.cm-head_exported{color:#00f;font-weight:700}.cm-s-prolog span.cm-head_unreferenced{color:red;font-weight:700}.cm-s-prolog span.cm-head_built_in{background:orange;font-weight:700}.cm-s-prolog span.cm-head_iso{background:orange;font-weight:700}.cm-s-prolog span.cm-head_hook{color:#00f;text-decoration:underline}.cm-s-prolog span.cm-head_extern{color:#00f;font-weight:700}.cm-s-prolog span.cm-head_public{color:#016300;font-weight:700}.cm-s-prolog span.cm-head_constraint{color:#008b8b;font-weight:700}.cm-s-prolog span.cm-head{font-weight:700}.cm-s-prolog span.cm-goal_built_in{color:#00f}.cm-s-prolog span.cm-goal_imported{color:#00f}.cm-s-prolog span.cm-goal_autoload{color:#008}.cm-s-prolog span.cm-goal_undefined{color:red}.cm-s-prolog span.cm-goal_dynamic{color:#f0f}.cm-s-prolog span.cm-goal_thread_local{color:#f0f;text-decoration:underline}.cm-s-prolog span.cm-goal_constraint{color:#008b8b}.cm-s-prolog span.cm-goal_recursion{text-decoration:underline}.cm-s-prolog span.cm-meta{color:#00f}.cm-s-prolog span.cm-op_type{color:#00f}.cm-s-prolog span.cm-file_no_depends{color:#00f;text-decoration:underline;background:#fcd}.cm-s-prolog span.cm-file{color:#00f;text-decoration:underline}.cm-s-prolog span.cm-nofile{color:red}.cm-s-prolog span.cm-option_name{color:#3434ba}.cm-s-prolog span.cm-no_option_name{color:red}.cm-s-prolog span.cm-flag_name{color:#00f}.cm-s-prolog span.cm-no_flag_name{color:red}.cm-s-prolog span.cm-error{border-bottom:2px dotted red}.cm-s-prolog span.cm-instantiation_error{border-bottom:2px dotted red}.cm-s-prolog span.cm-link{color:#762}.cm-s-prolog span.cm-expanded{color:#00f;text-decoration:underline}.cm-s-prolog span.cm-undefined_import{color:red}.cm-s-prolog span.cm-unused_import{color:#00f;background:pink}.cm-s-prolog span.cm-xpce_method{font-weight:700}.cm-s-prolog span.cm-xpce_class_built_in{color:#00f}.cm-s-prolog span.cm-xpce_class_lib{color:#00f;font-style:italic}.cm-s-prolog span.cm-xpce_class_user{color:#000;font-style:italic}.cm-s-prolog span.cm-xpce_class_undef{color:#000;font-style:italic}.cm-s-prolog span.cm-outofsync{border:1px dotted red}.cm-s-prolog span.cm-html{color:#909;font-weight:700}.cm-s-prolog span.cm-entity{color:#909}.cm-s-prolog span.cm-html_attribute{color:#909}.cm-s-prolog span.cm-sgml_attr_function{color:#00f}.cm-s-prolog span.cm-http_location_for_id{font-weight:700}.cm-s-prolog span.cm-http_no_location_for_id{color:red;font-weight:700}.cm-jumped{background:#ff0}.CodeMirror-hover-tooltip{background-color:#ffd;border:1px solid #888;border-radius:4px 4px 4px 4px;color:#000;font-size:10pt;overflow:hidden;padding:2px 5px;position:fixed;z-index:100;max-width:600px;opacity:0;transition:opacity .4s;-moz-transition:opacity .4s;-webkit-transition:opacity .4s;-o-transition:opacity .4s;-ms-transition:opacity .4s}.CodeMirror-hover-tooltip .pred-name{color:#00f;font-family:monospace;margin-right:5px}.CodeMirror-hover-tooltip .pred-tag{font-weight:700;margin-right:5px}.CodeMirror-hover-tooltip .pred-summary{font-style:italic}.CodeMirror-templates-variable{outline:solid #4664a5 1px}.CodeMirror-templates-variable-selected{background-color:#b4d7ff}.CodeMirror-hint-template{background:url(data:image/gif;base64,R0lGODlhEAAQANUAAH5weoJ1g4h8kY+EoZaMsZyTv6CYyGd9qWqArG+Fr3aLs3yRuIKXvYmdwY2hxIaUroiVrIyXqoidwZGlx4+aqJScpfr9//f8//b8//n9/9Xz/+v5/5ifovH7/+n5/+36//D7//T8/+r6/+v6//P8//f9//b9//r+//n+/56inqKlm6iol62rlP7xevzndvjQasiYQP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADEALAAAAAAQABAAAAaEwJhwSCwOYcikEkmEtZ7QKKzpMhgKhIEgAHBNj6+wePwVsjTotJpFXGk88Hh8RVRpJo4GY6FIIDwqRCkaIxuFIoUjIylEHHd5e30IHxxEFRogIB2ZmpoVRBR3EgsJByGnJBREERolFyWwJhgmJRFEEBonFigoFhYZvRBED8TFxsRGyUVBADs=) no-repeat left center;padding-left:18px;margin:3px 0}.CodeMirror-hints-contextInfo{position:absolute;z-index:10;border:double #d4d0c8 3px;max-height:200px;max-width:400px;min-width:400px;overflow:auto;background:#ffffe1;font-family:Tahoma;font-size:12px;padding:5px}.CodeMirror-hints{overflow-x:visible}.CodeMirror-hint{position:relative;max-width:none;overflow:visible}.CodeMirror-hint-description{display:none}.CodeMirror-hint-description.active{display:block;position:absolute;z-index:20;left:10px;top:0}.CodeMirror,.prolog-editor{height:100%}.CodeMirror pre.CodeMirror-placeholder{color:#999}.CodeMirror .source-msg.error{color:red;border-left:2px solid red}.CodeMirror .source-msg{position:relative;border-left:2px solid #000;padding:0 5px;background-color:#ddd;cursor:hand;cursor:pointer}.CodeMirror .source-msg>span.glyphicon{color:#000;position:absolute;right:5px;top:5px}.CodeMirror .source-msg-charmark{height:1.5ex}.CodeMirror .source-msg:hover{text-decoration:line-through}.CodeMirror-hover{outline:1px solid grey}.CodeMirror-target-line{background-color:#ff0}.CodeMirror-search-match{background-color:#ff0}.CodeMirror-search-alt-match{background-color:#bee}.CodeMirror .trace.call{background-color:#0f0}.CodeMirror .trace.exit{background-color:#0f0}.CodeMirror .trace.fail{background-color:red}.CodeMirror .trace.redo{background-color:#ff0}.CodeMirror .trace.exception{background-color:#f0f}.Prolog-breakpoints{width:1em}.breakpoint-marker{color:#822;padding-left:4px;font-size:120%;position:relative;top:-.2em}div.edit-modal{position:absolute;left:0;right:0;top:0;bottom:0;z-index:2000}div.edit-modal>div.mask{position:absolute;left:0;right:0;top:0;bottom:0;background:#000;opacity:.2}div.edit-modal .goto-source{position:absolute;padding:.2em .5em 0;border-radius:5px;border:1px solid #000;background:#fff;box-shadow:10px 10px 5px #888;z-index:2001}div.CodeMirror-dialog{border:1px solid #888;background:#f8f8f8;box-shadow:10px 10px 5px #888}div.prolog-query{height:100%;padding:5px;background-color:#eee;position:relative}.prolog-query-editor .buttons-left{display:block;position:absolute;bottom:10px}.prolog-query-editor .buttons-right{display:block;position:absolute;bottom:10px;right:5px}.prolog-query-editor div.prolog-prompt{position:absolute;top:5px;left:10px;heigth:100%;vertical-align:top;font-weight:700}.prolog-query-editor div.query{margin-top:3px;height:calc(100% - 35px);margin-left:2em}.prolog-query-editor div.query-buttons{margin-left:2em}span.run-chk-table{margin-right:5px;color:#777}span.run-chk-table input{position:relative;top:2px}ul.dropdown-menu.history{max-height:30ex;overflow:auto}div.prolog-runners{width:100%;height:100%;background-image:url(../icons/owl_25_years.png);background-size:90%;background-repeat:no-repeat;background-position:35% 50%;overflow:auto;padding:0 5px 0}div.prolog-runner{position:relative;padding:2px 0 2px;margin:0;border:1px solid #ccc;border-radius:5px}div.prolog-runner.tabled{border:0}div.prolog-runner>a.close{position:absolute;top:-4px;right:-10px;z-index:10}div.prolog-runner:focus{outline:0}div.prolog-runner.iconic>div.runner-results{display:none}div.runner-title{padding:0 5px 2px;border:2px solid #333;border-radius:5px;box-sizing:border-box}div.prolog-runner:focus div.runner-title{border:2px solid #000}div.runner-results{padding:2px 0 2px 0;background-color:#fff;border-radius:5px}span.answer-no{float:right;color:#060;font-size:80%;margin-right:2px;font-style:italic}div.answer{padding-left:5px;border-radius:5px}div.answer.even{background-color:#eee}div.answer.odd{background-color:#fff}div.response{font-style:italic;color:#00f;font-size:90%;margin-left:10%;background-color:#eee;border:1px solid #ccc;border-radius:5px;padding:0 5px}span.prolog-true{font-weight:700}span.prolog-false{font-weight:700;color:red}div.cputime{text-align:right}div.cputime span{background-color:#ccc;border-radius:5px;border:1px solid #888;padding:0 5px;font-size:80%;font-style:italic;color:#060}span.runner-state{position:relative;top:2px;width:1.5em;height:1.5em;margin-right:5px;background-size:100%;background-repeat:no-repeat;display:inline-block}div.runners-menu{position:absolute;top:3px;right:5px;z-index:2000}div.runner-title button.dropdown-toggle{background:none repeat scroll 0 0 transparent;border:0 none;cursor:pointer;padding:0}div.runner-title>button{background:none repeat scroll 0 0 transparent;border:0 none;cursor:pointer;padding:3px 0;color:#000;float:right;font-size:21px;font-weight:700;line-height:1;opacity:.2;text-shadow:0 1px 0 #fff;margin-left:5px}div.runner-title>button.rtb-toggleIconic{padding:8px 0}div.runner-title>button:hover{opacity:.8}span.runner-state.idle,span.runner-state.wait-input,span.runner-state.wait-next{background-image:url(../icons/logo.png)}span.runner-state.wait-debug{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3wMfEyg27OEfWQAAAYdJREFUWMPtVsFtwzAMJINMwlHyt0foCIW6gUYQMkJGsP8dRauwH9GQacqiDffThoARR6LE4/EoGeBt/93w6AIG4J3N8FcA7AXVm/BBMDdP8JkIsASqHx20BtMD7bKJiBnAfErc5nzld31wDQKuBuEN3mOjHj+j9GZmVuaWv4xNRHwo+7Kgmxk4dCH/WyDuemDI2cMQIGx5ZaOv+Uz9RQNepfdYqPbzB2/9ekGwAaJ7ElpOuiTooFb7zEQw5Gyejs2TcMgZhpxhJjLRYkcjXv8mgJloQS4gpgoMO4RqsMjNEoSYGADg8XquFgqIs1et0Rm4y8BYqK9rJ+8nrm7//VwY4BDT8oh66w7wdINuY1i36FYDQr+2r5gWRoQBLcxaM71vhGbHtACkGCDEtBp7vJ4rbVhlGvc1g5ujOMWARjlMG3NeQI0xQPj4hG9dzgLeKLMkxRLzbmlBJjUQi5FqDmv/lp9O+LY3mWJAzY7F2JG5PXbBWwaZ9/hc+g3f2lCPW36Xg3nbn7EfAs3X9neMq50AAAAASUVORK5CYII=)}span.runner-state.running{background-image:url(../icons/running.gif)}span.runner-state.false,span.runner-state.stopped,span.runner-state.true{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAMAAADyHTlpAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAzUExURTxGYTxMaj9FYktZdXSHpT9FYVplamBykExLT4mYtZByMb6gSPrIbO/Sk5OTkw4LBv///4iQZ38AAAAKdFJOUwH4Xfn/K/79yv8b7m9OAAAAAWJLR0QQlbINLAAAAAlwSFlzAAAN1wAADdcBQiibeAAAAAd0SU1FB+AJFQwTJ324eWMAAAIsSURBVDjLjZXtmoQgCIVDSFSy7v9u96DWZO3uM/5oJnvj64Aty2uRr7B8s1iwaP0GjUL0HboqEyn/E8H1KImj+rl/5cKnSzgnYqXuIrDyIxUVaT4DNZRE26vY1/HWRSqpREq4AiKPQP0XBrClnxxX9vgYBkQjcYyEq3rNHGe5mw06TBGVYrZtZiXi3jc5z9XgzlKxWrdtB1yrlUbKHKtLhBCi1W2/1laNyW081AgqbnK/LQEbo/BTN0Qbty3v+wxbFA2vHmGrgsdIa28/Da6mwi//sZH7cSQnj2OwRR9mCaRnZHYcR0dTz22Lty5b15BISs+9dDScKMxCCKYUVu8TkSzROvqxWkbJTIduC2XorIT0+6N0WH/DTpQYfaCZl5QZfzletbdBnLdbPFH0nLfKyP+zTlQqUGiWEUALRJtV2/cXjxJkxKiRF2TPmNGWlpWZdDU8LR/2UbAVCjT9S5rI0vTKc2dRLrXXqoworPRyoa7zICaRXliv65H80quFSjz7RaWMXrXiZGrqiSf16OwlqZZ6lfLUw7tF0vJurVtnDx02Y8069/bKWeM8Lz4xxav/rAA6mHmCfVxwtGDIc5rcZ9/0IDCy1ee1GoYlYztqjuvk3mWGAWSHg8BKKd568C6u5S2EhmaFxgrBtUXoZxDc7dmbalILsLsBLe09HFRHc/gg/XhJ11Hc0CuVwK/D+ubhXaE/VmpWw5foL2fK718FVOGp5p+fGBys6b3/A/dgJEXSAh3eAAAAAElFTkSuQmCC)}span.runner-state.aborted,span.runner-state.error{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAMAAADyHTlpAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAzUExURTxGYTxMaj9FYktZdT9FYWBykExLT1planSHpYmYtZByMb6gSPrIbO/Sk/8AAA4LBv///y1hUbcAAAAIdFJOUwH4Xfkr/cr+eNcn5wAAAAFiS0dEEJWyDSwAAAAJcEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfgCRUMAA5e5aCdAAACE0lEQVQ4y41VCZKEMAiUIIQcjv//7TZJHDXubkmVo9FOczRkluVh5BaWN8YGo/UdlOgl1JhI+J8Ivp8UpCRyrh+58OGSHMpCbbEGGU9nfGIWnShQg5JJ24r3E5axFouk+AWoRSB+N2N8kzPHlT0VBoFJdGBkcj9tG3O60gbpVEDkXGqtpeRIETuc4V4N7liKZdu2+gF628pAPvLyEACsn6/VLXscMqsRxDhv2+dqFcTxqRuijaV+JgPWJDyE59I4kVa/DSyK8vAfu/d9V0fu+8BmmWjJYm3uy77vHao93nqNdl2DsuVOmjtUDyhoIQSThnWBMmbJZOR0suZRhtJkQ7PDNfSEmnWkrw2DHeWAQlo0QmJA8UAcv4Ua7Me6QrQGBWtq8sXt84dtDpUGbQ10YfWsazkXiDUlQHRZFbEAfXisWT39XE4oOknDPsqlYpcKAOlXGcVCQjcJUpe17Add0V4DQO+DGKw1S9ZrQpq9CdLcL94DteR78j4QcfLvTQBpy1yoUrOk+SAIESHMtUVvYwjleabxfV4Gskk6+Xf58gVcXdLop4DprbOTtJcxVx9Zv0p2mcRpL0fGgpX4K/+WMTIFP96aeGfepBdaxE6WGBoL9MYudt2J3F2ye7AKujYXioFICBGM6941T4+j8HCytrjP70rzAbte+oHjs/C/mjqrvYaavfrbCMj+oeYfUJ/LX/z/ANqPJNQJtoGtAAAAAElFTkSuQmCC)}div.controller.running>span.running{display:inline}div.controller.running>span.sparklines{display:inline}div.controller.wait-next>span.sparklines{display:inline}div.controller.wait-next>span.wait-next{display:inline}div.controller.wait-input>span.wait-input{display:inline}div.controller>span{display:none}span.wait-input button{float:right;box-sizing:border-box}span.wait-input span{display:block;overflow:hidden}span.wait-input input{width:100%;box-sizing:border-box}pre.prolog-message{white-space:pre-wrap;padding:2px 2px;margin:0;width:100%}span.output.error-context{display:block;position:relative;padding-left:25px}span.output.error-context:hover{text-decoration:underline}span.output.error-context>span.glyphicon{position:absolute;top:5px;left:5px}a.goto-error:hover{text-decoration:none;outline:2px solid #337ab7}pre.msg-information{color:#060;font-style:italic}pre.msg-informational{color:#060;font-style:italic}pre.msg-warning{color:red}pre.msg-error{color:red;font-weight:700}table.prolog-answers{width:100%}table.prolog-answers td{padding:0 5px;border:1px solid #888;vertical-align:top}table.prolog-answers th{padding:0 5px;border:1px solid #888;text-align:center}table.prolog-answers tr:nth-child(odd){background-color:#eee}table.prolog-answers tr:nth-child(even){background-color:#fff}table.prolog-answers tr.projection{border-bottom:2px solid #333}tr.projection th.pl-pvar{color:#800;font-weight:700}tr.projection th.residuals{color:#888;font-weight:400;font-style:italic}.answer-nth{width:2ex;text-align:right}th.answer-nth{color:#888;font-weight:400;font-style:italic}td.answer-nth{color:#060;font-size:80%;font-style:italic;background-color:#eee;vertical-align:top}div.trace-buttons button>span{display:none}div.RIP,div.trace-buttons button{display:inline-block;width:24px;height:24px;background-size:90%;background-position:50% 50%;background-repeat:no-repeat;margin-left:5px}button.nodebug{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH3wQBDQAOjeB7qwAABLlJREFUaN7tWltMHGUU/v7ZYSmXBbpbEDXYGi6VCmpo+2BMDETJQpvyYBVvNGmIIabaGH1Aa3wg6UubGH1Qa9Rq2jRdEqlPmBhSG0LUxhZptlDKStGEWIHtUsp1F3b3P8cHdpYBamEH9kLSk5xkM5OZnG/O951z/pMF7lt8TUT6wNFzI+8w0KAAZz56MffYRgTgBZACAEKIE8GenMNNTYLiBUAx8EyK9oOZD6Fk+EzDV5y0kQBABwAcxGvZluG2xm89lg0FgJkhiUHEYJIVSpLvwpHTN20bAoAW/BaLAkkEIoaUvNsvA22Hv7uRndAAmAEKffmcTBUP2ZJCmSBIyTuFX7l06IuBgoQFQETzAcv5LFjTTdiabQYxQtfoUWb5S8NnfaUJCUDjvUYdIkZWugn5DyaDodEJuRRER/2nfU8nYAYYUoYCJYTdkqqiKC9Nn6XNMkDn6473VCYWAMnhL7/U0zeZsGNbGhQFWpbSSHLry0edLyQQhWgZhfSemmxCaX4GVJMGgpOJ+Pv9TVfqE4dCmoj57p5sVvBkYRbMZhNIEiSxSUo+ue/DzncTAkAoqP+lEhHDnCRQtj0TaSkmTTeCiD+xN146lhAUWo2rJoGyYisy0tVw5ljS+8+9d/HzpiZW4ibicOMKBXUvFwIoK7bClmXW95C32sd+O13e1K7GqQ8QpORVZ0IAKCu24QFrSrgAyCDV+UeUH8oPtm+Kj4iX9IGVnBh4qtiKvNy0cBYlUc20iX96pv5XSwwBkI5GkTkzUFpkRf4jGQt0Ii6flr4LO19t3xLTUYIiEPNiEIzHCzajpNCqzU4g4t0+Eegoeqn14RiJmMJUMuoFWzPxxHbb/GguGcy0Q1WTfi55pS0vNp1YsqEM6L1wWyZ2leSED+YMPEaCv4kkHtW4iOeBrNWIF7+DBYuoA1ioImsD4Pr7Drpdo9AwCMClkPJGVAHIJQI2dCQFw3l9FAODE/rLF83JyXudpyrGo5sB3RwkDWyDmIA/em/hn6Ep/XKqTVXFfuepiplI36caLaNS0jL+rubZzm43Rm7p4xQtIjhR191c6zeSTYMijpxCQUm47HRj9I5Pf/lkX3DiTbTUSqM6iomI/QHC5asjmJic01ebj12OqkZArKkSGKDQ4g68ks35JTqvujE149dvZD9wOaqPr8c4bUDEq+8D3tkgunrc8PqC4cchxNt9DvuX63WgMVxGpbw3hWa8AVzp9WBuLhx8gBkHXc12x3qeyAxoYGUKTU374ewbRSCgaVP4WEGt66z9x/U+ExurQlI7kS2/Pz45i2t/3oZcuDnJkDWus3s6orGVMN4H7pKB2+Oz6P9rTB+8h4Wodjn2dEVrL2RQxMv7gGfMi4HBcZBkbbK8SRCV/Q67K5qbOcMa0IvY7ZnB4NBkOHgAN4SQlf2OvYPR3o0appAGZMg9gyH3lD4bThPUqmuOKncsttMGRTwf/L/uGQwvDr4rEKTqvpbnPYiRKWsR8YgueAG0pU4Hnh1o2ROz4A2eiWnRYmthopys6Wrd50WMzdhuNCRiABACjlSL7fXeFmPjcDwo5CPS6rw4cb3o9wNdX+8KIE5mZBo9AsYBhjjnarbH/a8G9y3e9h/uU+EcypgobwAAAABJRU5ErkJggg==)}button.continue{background-image:url(data:image/png;base64,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)}button.skip{background-image:url(data:image/png;base64,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)}button.up{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH3wQBDDYM6zDhxQAABQZJREFUaN7tWW1oVWUc/z3n3JdtXudUzBfyZcuRaUVSmbVerDQLC0FIkCAR+1YIUhLNivslqm9ClrhR2ZQopPrSlyAQMZGQymXZjERN0d07d9e2u3nOPef5//pwPHdznqsbe+buwD8cuFye8zy/3///+7889wJlZp3Nj6RzTcv7O3c/2ExC3Wi9VW4EFGUrqStJeaVj133vTTgCpI6TAlID0G9lP1q8aYIRCMCTGhSBQJrbd9Y/P5EiUARPaoBiU8uX53bU3hspufEEm/14RcpOXK6xPUm4AAAHCviTIhWkhmUnob18SOQUtL98zhsXLo0Lgb4vVi7VmquE3lMk7yd1DSixwOMS5XlU3bUOfW3fQnwHpIZQDuve5Mra9Bkn3Dc21sDzn69+VqAbfS2PBSBZBHg98KSGshJILdmA7tZPQQpA3aCqej4j8ZJS4JgS6Nz3XHXCkxaBrOUQsCFAKAuIVUApACIABQoDa2KTZ8GqmIZU/QvoafsmIAVuOPtB9T9Az7tjJqHuvasXWoLvKXJn6F0oC/bUOljVc2CnZgGJFJQ1fP/1tO1H/9mDoGiQQtLfWNfo7DVOgC3PTMqL+pmUJaHX7RmLEJ+9FIhXjmJnQdcvTXCyv4eSc6nkaeNltFfUJyF4QCFe+zjitz8E2AlA9CgeYso9G6Hik640OSQVrTeN5kBfy6oHtJaXQ9nE5zXAnjIfoBjZ//L5Q9Bu1+AiesAoAdFqK+mD1LBr5sOeugAIvDVqczqO47+2/YO/2lfX6O4wRiDf/PRMTf/FsFTaMxYFob9evoiGOF3QTi5ITt8BKVBKITl9EVS8CgBQ6DmHXOsegAzegzroeu5mpUBjBHxLngAlTgpU1TSoZHWo1YhxwYd7/iiczK+QQt81/QAU2JUzMH3ZFminC52/7Qa1G75+Mum56xamUTDaBwhpCOu7Pem2krqn5yB/8jv4+YtgRDMDBRQNL38BLPQhd6wZUugNNd8hgjVz08iZ78SU5SEAq3JaSfn0n/5xKPgsoY8R0g3qbopsJkWRGrnje+Dl24s5LEqvrX/HPzV4P3MRoJ4ZRsCKV0Umr+7PopD7OwQvQv3a3LntTWo9iotPv5/aRGqb1HC7ilhFERvrt/tHhu5pMgJTQznAsiMJuJfaBo0TbJn3evuuUuP0EGuse7uwf8zuA0yviJF6MikggioS1Yz83otFzQv9r0rdB64el1XTHdsLH5Y620gEMnW5ZKw/roKZR4EkEAyLV1eqy5eKEdDC1pL1YODDD/967qs35Uo5eCQG9bWP+BDfDdfJgm0dmWj06vCVD630CuufTMO/3rkxowREACWRFYjiIezSgPSH8/xQSyXcNflCxTLXd44uSSN/o3PNEMgArLxyCYGKHh+0N7jOe6W2mrUNfYBzYLhHG40AKIFbo5oYpdikaGi4M11GEY7QjJIQdRE8DQ145nOAOqgLUQCHjgzlSUCC4hdJwDx4gwQyIJMDEYiag8Q8+DGMgERKaCzMIIGB5IzyNMufgB7oAyUkVPYEgkRFySpU1gTCJgWlSuQAyzwCxQ47YSUkxW6b+etr3CwzMk73JjM+qTn8SsNCWRGo3wIX9HcCGA6DApTaYYrAVT/uPnr3iRFl2k9/LFamBDhC2CoyB85nazAe1rD4+IjWHz5RIonPZGePCwGKb0ZCownleEmo7P5mHVUfeLj20IhePnIat+yWTXT7H9J2ChlDGcHsAAAAAElFTkSuQmCC)}button.retry{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH3wQBDDgagWd5GgAAB1NJREFUaN7tmVtsHGcVx3/nm9n1+hLHzj2NY9eNMWqFBK1DUAJSIhRAQqqoCjU0IkUgQXkBBVUUpebBCBR4qaJGQmpA3ITKLShUsgJ9KWoVKanS0kJL1KYkcZr6Ejtq1vb6speZ7/AwsxfbMxvb2QQq5ZPGs96dnXP+5/zP/5z5Fm6v2+v2el8vuRk3VUUyP+tZaxP1zdFXpOZfL65taZwck97Tc7ccwPhP7+tyHN2tIrtRs0NE1oJZKyICAiJIeAZBSmfDvM+D12lBLqpw3PruH1q+duLiTQGg/Xvcq+vTnxfhO4h8rNKx8mtTfm95ICqv/Qti+lY9cuLNmgEYO3L3Xoz5hYhpj3MMcTCJenBToWNUASGggnpziPWjQHhinMONdfUHpfeYv2IAerQnMZ6b/iHGfBfEBEYM4qZIrO3GWd2B29KB1DUjTnJlteNn0clh/PfOYycvIToP8MBsqnHfht5j08sGoH/CGbvS/WdEHihGTZJNpNp2kty8HXFTtReCuWt4Q2fQqeEKEOZkY6phr/Qeyy8ZgPZjRlu7fisi+4ppTW78MA1dn0Xcupsuk/7Vs/hDL5fqy4g51rD/xBdF0CUBGDly5wFR53CRm/Udu6nv2HNLtd4f/zf+yGuVdPpq0yN//fV1AQwd2dJmbOItRBoFQ3LTvTR23/8/aVje5VNo+lIRxHBT1u2WRwdm3aoa6zuPq2ijKDirNtCw7TOgfuS1tpDFT1/Ay4yg3gxayBFkeYHEAmDATSBOHZJswGncgFnVhiQbYn1xtvRQmL6CFLIgbMmkvAPAoVgArxztSTA7vh8FFWi485OBcbsYQG70VXJDp1E/T1GdYiU2ok948hYiDs6aLhJt2xGTjNB7wV1/D97IPxAFEXlUlR+bOACbZ0d3q2oLKE6qFbd5axD9BUf28knmLv0d62UBBVUUG56D/0HR8Fx+bcvvqaLq47/3Nvm3/wbeXKQt09IOTjK8r22f/c2n74vNgLV8TkRRhWRrV2TkvZkx5oZfQgKmoMpZMfwRq2+okXEDucBBgESApQjCdZoM/jqr5oNGzKdQ9qiAnUtTGDpDYuvOSL9M00bsxGVUwMID8TUg+qGQwrir29EI7ueuvArWoiKIysDGa5selP4XvBXU6KFrP9/5MKrPqCBeehBnwz1IsmmxW03rYeKdMCjmo7EUwtpNRQqYRGOQgQVHPn2hRAGxfH+FzgOw5uunf6/os0Xq+elLkTbFbQwohKJit8UCUHQzalEUcesX8VHzGbQwF/AdTW88cO71G57trR4vBsTPXousA3GcyvpqdqsM9atVQNRijLOoBmx2MgCnoGIv1kLrRf2zVp1AuLKZyLorFz6oUFelD5QuitR+62eDSAiIMlWbduWmwUfVoLYQ3XPUR9UGo7iCG58ADSKhRBawWq8CpOZr0m1NIScqiFjU+pF2A1BaAlE1A6phH4pIJdYvg8RoDefQwC72unZVbXUA4fNtbCrLIG0tB+nQrl2C3aVQKGZ8QINuiwA19L9MXY3NQNGuVquBSpSRNaBeSYWCP7WmkMbWQNlu1QwERRKMLXEZsKiY4NGvhnsyhPyuloFA/eR6GSjKlR85LAWRsFgxNfJ+FiURJlSr1kCgfhb34o8SO6xIn4g0BNO6CXhdGQmNr4Gw2e0aenLzKyBgDKIoRs7kJ5zHOvsvZZebgeCeGmu3UuJdkKcF7g3ac6goKsUGFRbp9SJBM2p7EIOEwx2W7XWrvVPAM8urAIuoCUaUOAphUTWIgFHhX/NpUzGjoySb21D1Fx2mbjWY5Lxri7NTqL15X3hjJTUQPE8QaTc4ys8Trl2V/6bJJF3gyyUdlgTNd+zATbXi1rdGRsIYl9a79uIX5shNDJKbfKdIJ1TMhKh8YeuBodeXWQKQCLMaV8QL+o/5wLfJbevL7wc5UFR0tXkyoy+jNh9y3Y+eDMWQS18gOzFYyoRFz6nvb297bPj5lfaB4r3i7FY+2ZXkY1tf7imEh8I4YP0c6cHnA+ci5nL1cky9e4rs5GAl9V40Jrur/fHxCzfWBwKKRNktjhJFEIsEfPCQu9uqOQ6sCclC86aPUN/aVa4jL8fUyEt4uanSQ7qIHHdnUvvv6B+ZXanrVw/fvdl3/JHFe62xGwWTiwS88wnvRbGyCzgfusvUldfIjP0TtR5edoL05RcoZNMBT4OIPbl15tpDN+I8QC6h+ciNgPiNgnxsCz3Xzzo3Ufcs6MeLGxt1Desp5CdR6yNBBDxVvtV5cPrpeSQY+EbDkr2eS6v0Hiv9sDH6VNcvEfmKhBvIVTKRV+QHVWeAwX5SNpH8FfCl0u5M6WZkBNPbeXDmucrvTA08vK75/t9dXeaz2IpnkaozQGc/2bueyO9T5dCCPvEu1nxiofMAZKZv6Zaju4TYKOT7LhxKnAd+gsp/XMf0tn9vZiT6Gxk61g8v2YH2daP+yTf/j341nDravS4U8WUcK1+m1gCmbzGFag7AN9OW2+v2ev+s/wKIypfbke4fXgAAAABJRU5ErkJggg==)}button.abort{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH3wQBDTcgwTHWUAAABeFJREFUaN7tWU1sVFUU/s69b+Z1eJ15pbUF6gCagIFEWFgXXRhRSNCVisRuXECFDRsSY4IhcdHERGITQgKJuoBUVyaQKK40xhYlXbCgmyaKEgP0Jy0ghb5pp/P33j0u3kz72s5M3512xEXPcnLn3u875zv3nnMesG7r9nTs8nuQ/4e9qJY/OX0HXgewy+7u/3K14PlsZ2y2pfEIg/9KHO2/VncCTt+BV5nVBYCaobjXdjIX6aMbmVrBO3bsOASdEkRJBvbZ3f3X60agBJ5I7AUAZh6vlUQQPBElSz8DeE2HhAi7MHVp/6EgeAAgoiQEnXLs2HE+2xlbJXgAIGZ1IXVp/6E1JZC6tP+QIu4pgadYC8hqq4lEOfBktYFiLcX9xF5F3BOWBOnKhho3w2jvAEkT7uggPGcMZJih5FQOvLC3w2jvAHs5uBND4Nn70JGT0JFNCbxMJCGsVhjbXoFseSFUJKqBF1YrZCLpO6Zxs5acSNfzMpFctE6l/4E7MQTljKBSYq8EPmhealwrEhRK8xXAhyEBAGHBVyLBrIYFU0/i2MD3KxKY7tv3Jlh8HkxYY2tnRfDVSJCrzjEBkOLDsOAXkRi7Ac5MzZMAqY+bun/7KbjOWI5EbARR80KWSJA0V77OrFYY7R1wAXhTt0GGmUREnhXki4A1wAPwzxTBCoOaJUWeWzGJm45d+5aIPpvn44zBHR0EWAHCqE4ivgXRHQch7a2AmwMVwSs3B2G1hQZfiianHy5Ikri3ccPsN0vXli2izry/6fdswXgAxh6SRoILaai5KZAZB0WtKpe8AmQEsmUnOD0JlXkMVh6kvRXRXW+DGpr8NZpSBHGvbWUuUtfy67niLcSXO2NOOnYcHD75fKkwQACnH8GdGPJ1qun5sOBXfMi0SATAU3FblXV8aTXYdQEf6iXWIUFF0TPrVaW1gg9VC1HXjYxtZS6CuJeZx/3EHvHlEUjsmsALY1XgtcrpspFIbINs74BobJ2XzX/lee1yelkkmOFNj8CdHAKnHz0V8FoEgiSI1TlmngYB7Iz6QIoJGwp81lkMXqlpQJ3TBa9NoERCSGNOSNEkiMBuDpxzIMx4+EPNODjnAJ7/2JEQTUQyowteu6XUqSrDSKgwcRPKGQEBYEZN7alWBGZbGo8IQ5wXREkulgfRHQch4lv0vEaATGyBueMNSGsT2M2DiJIkxflUs3V0zSOwlp4vvXrM/tUbpp9YFYF6gtdpimqWUM2yEYb/0BUfO6ISaFoEPljFCqsN7Oa05ET18nzJqwvF3DPLPK/T2VWKhKiX593RQXhTt6Ee34Y3NggwVwVfaySoXp4PeBEgQCa2w3j25drL6gqRkEunxMkXdx6GoJ7g0CmS7KzxYDUNIEtEDZxLgQtzoAa7elMEgKIWqMGGykwBhTSIKAHCnlyDMfaSee/WlT/AZSXUdQWekOK+KI37mIFcyj9QRkPLhkp3vZCnifhTZoyj2CuHak9l1D8zlypKz587kRD3u67Aq9pSnrl6997pt54fZvBuIrEJyoVKPwRFYhBmorznZx+gMDIINTMBEgaYeZzBnySsuT4z6t7MFYyMTnvqOSMojA6Cs9MAUXGsghP2BwM/ag22APwKgOAVQGYc0d3vgja0AF5+wfNeHvk/f4DnjEEYZqkjOxE/+stXS/Y7AeALAGA3N98nQ0YB5c57nuemkL/1HTg3AzIiYK4+2Kp4C9nd/ddJ8WFmNQwZAbtZ5O8OwHtyZ8HzM5PI//2zHyHDhGIeV6xOlpseJKz01wx1kpnHyTCh0g/9/85MLnj+yR3k7w6A3SwgI1BKDZPiw9Xmoyu+xJWmdCRN7Xq+Wnu6dLhbbRqnXQuVG69DyGVzmzD1fDkSZLUByls0hQsDXqucXpQTHJg+VNB8iP3mc6I0uiNBK2p+1Z+YSiSo+O9awJcjQQRt8Nr9QDCxqyVsWAsmdpiEXZOvlPMTbCU22vHM1VrawGU5MRN7B0I9WTp5rqut5YfudVu3p2j/AkT4owo7DZieAAAAAElFTkSuQmCC)}div.RIP{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAzUExURQAAAAUHAmNlaKSkpXtpZllZWVx9LsHLo9bX2Wx9jpazUak9Lu3s797g33SZKnybRP///5NI/qoAAAAHdFJOUwVE/v+8OP47SgHcAAAAAWJLR0QQlbINLAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+AJFQwBEyT4/QUAAAFbSURBVDjLdVKBooMgCGxggQj2/3/7DnNb7m2kdspxgLVtN3sQw8r2y4glCaw/KAW+WivRD5EHK1trrTSqun8TcNWWjFYr0zcBD1FuxtyQ5NO9K2oTlYYyCDmYZcnC6u5wqzAJt1Kx9ZvKHsivWtu0wqLht16QXjULuGwnTv5Ngl2H5vSPDCErocAq7mnHq1IplAqPO4E0qOCqK26aIkrhVYGSgDAqAeyJF4Lj0C/SIACvNcBBWXtUyCeuHEsNUyGdUKm+tpmfgWo4ZtScSPN5D3FFP6f/J7wMPh8CH10oDq8xF12LRKhex8Od1FhT4GNkAs2RD7Yu7y7s6IfNGq5CjuPobwU7JaIboqz3nqTTQqy/auhiZgJfN5Hk9DxJlP/dfp7d8jklh2GRwR5BEEkwouY71wQ2ECrsUICN5WZznynyjS7GGDg7mLsDCjd7bmb3LwQ8xjbXx/bG2x+HDRcuxXGCugAAAABJRU5ErkJggg==)}span.depth{display:inline-block;font-weight:700;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAUCAYAAABF5ffbAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3wQBDjQRuYQ78AAAABJ0RVh0Q29tbWVudABEZXB0aCBtYXNrQcBmawAAABhJREFUGNNjYEAD7Wdr/zMxYAGjggMlCACJuAL3jmFt7AAAAABJRU5ErkJggg==)}span.port{font-weight:700;padding-right:.5ex;margin-right:.5ex;background-color:#ccf;display:inline-block;width:11ex;text-align:right;border-radius:5px}span.port.fail{color:red}span.port.redo{color:#ff0}span.port.exit{color:#0c0}span.port.exception{color:#f0f}div.prolog-exception{color:red;font-size:80%;margin-left:5em}div.controller.running>span.sparklines{margin-left:.5em}.jqstooltip{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}div.render-multi{position:relative;vertical-align:top;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAATCAQAAAA6heU+AAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAAEMQAABDEAbRyZ/IAAAAHdElNRQfeCg8LIivxaI+JAAABT0lEQVQoz33SsW5SYRgG4AchbSkcYrVpo6bGoXFydvMK3HsJLt6Ct+AFeBVunVx0cjFODvofqyDQFDVttef8cg6IA4SkFXjX70ned/gqk4kV+SUVnGs8rayC54KA/e7DvdpydiZIJXbEJyyFp4IjW27IFG+Xwp9SR266LhM/PT5dAn9IfbGtJROtP2ch/C711bZELmrYOFwIB1JtOxpyfzQl1n4vgANBx65NuaGmlsR69h88EXTcUpcpNLQkknJ3dAUeS327wlr+fpxe57Av6F1iLYmxOLgEe4K+2zZkitm2xFgumsOJrs/67liTGc4qm8YyUbw7gxNdwbE9NZlixhKlXBTl+1NYaU9SPfdU5Ubz0inL5aJya3h2oBa03XdNZqzZaR5uvq5/mFyUcVSUo0JRLerlxQFqwQPVN/FF+T4Jj0YL32ial8/eJfDK6vwDMhCTheu9OHEAAAAASUVORK5CYII=);background-size:15px;background-repeat:no-repeat}#render-select{position:absolute;background-color:#fff;padding:5px 0 5px 20px;border:1px solid #000;border-radius:5px;box-shadow:5px 5px 5px #888;z-index:500;white-space:nowrap}.render-selecting{outline:1px solid #800}.render-multi-active{position:absolute;left:0;top:0;width:20px;height:20px}div.render-item a{float:right;padding:0 10px 0 10px}div.render-error{display:inline-block}div.render-error span.error{color:red}pre.console{padding:0 9px;border:0;margin:0}pre.measure{padding:0;border:0;margin:0;display:inline}span.format{white-space:pre;font-family:Menlo,Monaco,Consolas,"Courier New",monospace}a.download{margin-right:5px}a.download span.glyphicon{margin-left:1ex}.render-table{border:2px solid #333}.render-table td{padding:0 5px;border:1px solid #888}.render-table th{padding:0 5px;border:1px solid #888;text-align:center}.render-table tr:nth-child(odd){background-color:#eee}.render-table tr:nth-child(even){background-color:#fff}.render-table tr.hrow{border-bottom:2px solid #333}.render-code-list{color:#040;font-style:italic}.render-ellipsis{colour:#00f;padding:0 5px}.render-svg-tree{padding:5px;display:inline-block}.render-svg-tree svg text{padding:.5em .2em}.render-svg-tree svg g.collapsed g text{padding:0 .5ex}.render-svg-tree svg polyline{fill:none}.render-svg-tree g.noleaf text{font-weight:700;fill:#00f}.render-svg-tree g.leaf text{font-weight:400;fill:#000}.render-C3{display:inline-block}.answer svg{vertical-align:top}.render-graphviz{display:inline-block}div.R.svg svg{overflow:visible}.fold{display:none}.pl-ellipsis{color:#00f;text-decoration:underline}.pl-functor:hover{color:#00f;text-decoration:underline}.pl-infix:hover{color:#00f;text-decoration:underline}.pl-var{color:#800}.pl-ovar{color:#800;font-weight:700}.pl-anon{color:#800}.pl-avar{color:#888}.pl-var{color:#800}.pl-atom{color:#762}.pl-functor{color:#000;font-style:italic}.pl-comment{color:#060;font-style:italic}span.diff-tags{margin-left:2em}.diff-tag{border:1px solid #ddd;padding:0 4px;margin-left:2px;border-radius:5px;background-color:#e1edff}.diff-tag.added{color:green}.diff-tag.deleted{text-decoration:line-through;color:red}pre.udiff .udiff-del{color:red}pre.udiff .udiff-add{color:green}pre.udiff{max-height:30em;overflow-y:auto}/*!
  * StyleSheet for JQuery splitter Plugin
  * Copyright (C) 2010 Jakub Jankiewicz <http://jcubic.pl>
  *
@@ -7,4 +7,4 @@ ul.dropdown-menu li.checkbox input{margin-left:3px}ul.dropdown-menu li.checkbox
  * Bootstrap v3.3.7 (http://getbootstrap.com)
  * Copyright 2011-2016 Twitter, Inc.
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot);src:url(../bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff) format('woff'),url(../bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],.input-group-sm input[type=time],input[type=date].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm,input[type=time].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],.input-group-lg input[type=time],input[type=date].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg,input[type=time].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.in{opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;opacity:0;line-break:auto}.tooltip.in{opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}.tm-tag{color:#555;background-color:#f5f5f5;border:#bbb 1px solid;box-shadow:0 1px 1px rgba(0,0,0,.075) inset;display:inline-block;border-radius:3px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;margin:0 5px 5px 0;padding:4px;text-decoration:none;transition:border .2s linear 0s,box-shadow .2s linear 0s;-moz-transition:border .2s linear 0s,box-shadow .2s linear 0s;-webkit-transition:border .2s linear 0s,box-shadow .2s linear 0s;vertical-align:middle}.tm-tag .tm-tag-remove{color:#000;font-weight:700;margin-left:4px;opacity:.2}.tm-tag .tm-tag-remove:hover{color:#000;text-decoration:none;opacity:.4}.tm-tag.tm-tag-warning{color:#945203;background-color:#f2c889;border-color:#f0a12f}.tm-tag.tm-tag-error{color:#84212e;background-color:#e69ca6;border-color:#d24a5d}.tm-tag.tm-tag-success{color:#638421;background-color:#cde69c;border-color:#a5d24a}.tm-tag.tm-tag-info{color:#4594b5;background-color:#c5eefa;border-color:#5dc8f7}.tm-tag.tm-tag-inverse{color:#ccc;background-color:#555;border-color:#333;box-shadow:0 1px 1px rgba(0,0,0,.2) inset}.tm-tag.tm-tag-inverse .tm-tag-remove{color:#fff}.tm-tag.tm-tag-large{font-size:16.25px;border-radius:4px;padding:11px 7px}.tm-tag.tm-tag-small{font-size:11.049999999999999px;border-radius:3px;padding:2px 4px}.tm-tag.tm-tag-mini{font-size:9.75px;border-radius:2px;padding:0 2px}.tm-tag.tm-tag-plain{color:#333;box-shadow:none;background:0 0;border:none}.tm-tag.tm-tag-disabled{color:#aaa;background-color:#e6e6e6;border-color:#ccc;box-shadow:none}.tm-tag.tm-tag-disabled .tm-tag-remove{display:none}input[type=text].tm-input{margin-bottom:5px;vertical-align:middle!important}.control-group.tm-group{margin-bottom:5px}.form-horizontal .control-group.tm-group{margin-bottom:15px}.c3 svg{font:10px sans-serif;-webkit-tap-highlight-color:transparent}.c3 line,.c3 path{fill:none;stroke:#000}.c3 text{-webkit-user-select:none;-moz-user-select:none;user-select:none}.c3-bars path,.c3-event-rect,.c3-legend-item-tile,.c3-xgrid-focus,.c3-ygrid{shape-rendering:crispEdges}.c3-chart-arc path{stroke:#fff}.c3-chart-arc text{fill:#fff;font-size:13px}.c3-grid line{stroke:#aaa}.c3-grid text{fill:#aaa}.c3-xgrid,.c3-ygrid{stroke-dasharray:3 3}.c3-text.c3-empty{fill:grey;font-size:2em}.c3-line{stroke-width:1px}.c3-circle._expanded_{stroke-width:1px;stroke:#fff}.c3-selected-circle{fill:#fff;stroke-width:2px}.c3-bar{stroke-width:0}.c3-bar._expanded_{fill-opacity:.75}.c3-target.c3-focused{opacity:1}.c3-target.c3-focused path.c3-line,.c3-target.c3-focused path.c3-step{stroke-width:2px}.c3-target.c3-defocused{opacity:.3!important}.c3-region{fill:#4682b4;fill-opacity:.1}.c3-brush .extent{fill-opacity:.1}.c3-legend-item{font-size:12px}.c3-legend-item-hidden{opacity:.15}.c3-legend-background{opacity:.75;fill:#fff;stroke:#d3d3d3;stroke-width:1}.c3-title{font:14px sans-serif}.c3-tooltip-container{z-index:10}.c3-tooltip{border-collapse:collapse;border-spacing:0;background-color:#fff;empty-cells:show;-webkit-box-shadow:7px 7px 12px -9px #777;-moz-box-shadow:7px 7px 12px -9px #777;box-shadow:7px 7px 12px -9px #777;opacity:.9}.c3-tooltip tr{border:1px solid #ccc}.c3-tooltip th{background-color:#aaa;font-size:14px;padding:2px 5px;text-align:left;color:#fff}.c3-tooltip td{font-size:13px;padding:3px 6px;background-color:#fff;border-left:1px dotted #999}.c3-tooltip td>span{display:inline-block;width:10px;height:10px;margin-right:6px}.c3-tooltip td.value{text-align:right}.c3-area{stroke-width:0;opacity:.2}.c3-chart-arcs-title{dominant-baseline:middle;font-size:1.3em}.c3-chart-arcs .c3-chart-arcs-background{fill:#e0e0e0;stroke:none}.c3-chart-arcs .c3-chart-arcs-gauge-unit{fill:#000;font-size:16px}.c3-chart-arcs .c3-chart-arcs-gauge-max{fill:#777}.c3-chart-arcs .c3-chart-arcs-gauge-min{fill:#777}.c3-chart-arc .c3-gauge-value{fill:#000}span.twitter-typeahead .tt-menu{min-width:250px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}span.twitter-typeahead .tt-suggestion>p{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}span.twitter-typeahead .tt-suggestion:focus,span.twitter-typeahead .tt-suggestion:hover{text-decoration:none;outline:0;background-color:#e8e8e8}span.twitter-typeahead .tt-suggestion.tt-cursor{background-color:#f8f8f8}span.twitter-typeahead{width:100%;height:30px}.tt-suggestion{max-width:25em;overflow:hidden}.tt-suggestion .tt-label{padding-left:1.5em}.tt-file-header,.tt-suggestion.tt-match.file{background-size:1em;background-repeat:no-repeat;background-position:5px 5px}.tt-match.predicate.built_in .tt-label{color:#00f}.tt-suggestion .tt-title{color:#555;white-space:nowrap;overflow:hidden;font-style:italic;font-size:80%}.tt-suggestion .tt-tags{max-width:100px;float:right;margin-right:2px}.tt-suggestion .tt-tag{max-width:30px;border:1px solid #ddd;padding:0 4px;margin-left:2px;border-radius:5px;background-color:#e1edff}.tt-suggestion .tt-line{white-space:nowrap}.tt-suggestion .tt-lineno{display:inline-block;width:40px;min-width:20px;font-family:monospace;color:#999;background-color:#eee;border-right:1px solid #ddd;padding:0 3px 0 5px;text-align:right}.tt-suggestion .tt-text{padding-left:5px;white-space:nowrap}div.tt-file-header{padding-left:5em;background-color:#ddd;color:#000}span.tt-path-file{font-weight:700}div.tt-match.source{overflow:hidden}table.diff{width:100%;border-collapse:collapse;border:1px solid #a9a9a9;white-space:pre-wrap}table.diff tbody{font-family:Courier,monospace}table.diff tbody th{font-family:verdana,arial,'Bitstream Vera Sans',helvetica,sans-serif;background:#eed;font-size:11px;font-weight:400;border:1px solid #bbc;color:#886;padding:.3em .5em .1em 2em;text-align:right;vertical-align:top}table.diff thead{border-bottom:1px solid #bbc;background:#efefef;font-family:Verdana}table.diff thead th.texttitle{text-align:left}table.diff tbody td{padding:0;vertical-align:top}table.diff .empty{background-color:#ddd}table.diff .replace{background-color:#fd8}table.diff .delete{background-color:#e99}table.diff .skip{background-color:#efefef;border:1px solid #aaa;border-right:1px solid #bbc}table.diff .insert{background-color:#9e9}table.diff th.author{text-align:right;border-top:1px solid #bbc;background:#efefef}.notebook{position:relative;width:100%;height:100%}.nb-content,.nb-toolbar{width:100%}.notebook.hamburger .nb-toolbar{display:none}.nb-toolbar{position:absolute;padding-top:5px;padding-bottom:5px;margin-bottom:1em;border-bottom:1px solid #ddd}.nb-toolbar .action-fullscreen{right:5px;position:absolute}div.notebook-menu{display:none}.notebook.hamburger div.notebook-menu{display:block;position:absolute;top:3px;right:1em;z-index:2000}.notebook.hamburger .nb-view{top:0;height:100%}.nb-view{position:absolute;top:40px;height:calc(100% - 40px);width:100%;overflow-y:auto}.nb-content{position:relative;width:100%}.nb-bottom{width:100%;height:30%}.dropdown.cell-type{display:inline}.nb-cell.markdown:not(.runnable){background-color:transparent;border:0}.nb-cell.html:not(.runnable){background-color:transparent;border:0}.nb-cell{margin-left:20px;margin-right:10px;box-sizing:border-box}.nb-cell:focus{outline:0}.nb-type-select{padding:1em 0 1em 0}.nb-type-select>label{margin-left:1em;margin-right:1em;position:relative;top:.1em}.nb-type-more{padding-bottom:1em;padding-left:1em}.nb-type-more label{margin-right:1em;position:relative;top:.1em}.nb-type-more input{display:inline}.nb-cell .close-select{font-size:150%;padding:0 5px;border:0;color:#888;background-color:transparent;float:right}.nb-cell.active{margin-left:8px;border-left:7px solid green!important;padding-left:5px}.nb-cell.html.active>div.editor,.nb-cell.markdown.active>div.editor{border:1px dotted #888;border-radius:5px;margin-bottom:5px;margin-right:52px}.nb-cell.singleline div.editor{height:2em}.nb-cell.singleline .CodeMirror-hscrollbar{height:0}.nb-cell .CodeMirror-scroll{max-height:40em}.nb-cell .CodeMirror{border-radius:5px}.nb-cell .nb-cell-buttons{display:inline-block;float:right}.nb-cell span.glyphicon-cloud{color:#000}.nb-cell.background span.glyphicon-cloud{color:#fff}.nb-cell>.with-buttons{background-color:#eee;border:1px solid #ccc;border-radius:5px;width:calc(100% - 50px)}.nb-cell .nb-query-menu{display:inline;float:left}.nb-query-menu button{background:0 0;padding:3px 5px 0 5px;border:0;color:#888}.nb-query-menu button:hover{color:#000}.nb-cell .prolog-prompt{float:left;padding-right:.3em;padding-top:.25em;font-weight:700;text-align:right}.nb-cell .editor.query{margin-left:44px}.nb-cell.program,.nb-cell.query{margin-bottom:1em}.nb-cell.not-for-query{opacity:.5}.nb-placeholder{opacity:.5;width:90%;margin:auto;margin-top:1ex}.nb-cell.markdown pre.code{width:90%;margin:auto;margin-bottom:1em}.nb-cell.markdown dl.termlist{margin-left:5%}.nb-cell.markdown dl.termlist dd{margin-left:2em}.nb-cell.markdown .predicates dd{margin-left:2em;margin-bottom:1ex}a.btn-image{padding:1px 2px}.nb-cell.program span.image-icon{display:inline-block;width:18px;height:16px;padding:0;background-repeat:no-repeat;background-size:100% 100%;vertical-align:middle;background-image:url(data:image/png;base64,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)}.nb-cell.program.background span.image-icon{background-image:url(data:image/png;base64,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)}.type-icon.pl{background-image:url(../icons/pl.png)}.type-icon.swinb{background-image:url(../icons/swinb.png)}.type-icon.select{background-image:url(data:image/png;base64,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)}.type-icon.chat{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAQAAAAAYLlVAAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfhBAMNASzV4qVYAAADQElEQVRo3u2ZS09TURDHf31iW4G23PJoRI0hPkLqAhM1PgILSPADGNyZuDDi0gSJiSsTXfgJXOrCkBiNqDvCgqiRaGJ8BRoTdCE+8EFAlFKQclxQSkt7T+9pe+rCztn09jH//5mZM3NmChWpyP8uNpP3XQT5mnpyUoUbH1sJY+Bljlk+84F5llhkOakpyBx/cuhyYKTpskTAw2a+J1/voZX9HCBCIOt7M7zhKc8YI4oXwUIOXU78zJBQsYqXQJJYD3eZQORdE9zjZE5dDgycak5xY2ADuomyZAF8bS0RpTvLvmEcqvCNwDaGFKDT1xDb03bfZBpjpsavw84ZZguEFwhm6cUBuDBUd++lBgcDJIqAFwgSDOAmiEvV+EG8vCgSfG29plrd935GSgQvEIzkOLYS4xs4uV5CeIHghtUD6CEA9JUYXiDoswLvIgRENMALBJH8BBoAGNdEYDy5yTzSy7ImAsucwU6dHN7PQ03wAsEozbJ8aAfaaNNY8CPsRMgIODiKTyMBH0dkKdmOh07Nl55OPLKPA8Q1RoBAEJflRDv1VGm2QBX1MgItZbh5tsgIhMpAICQj4C4DAZeMQKwMBBZkBKbLQOCTjMBkGQj8kBH4yDfN8NNyAos80UzgEbMyAnGGNRMYJi4jIBhlSiP8FKOyargqgxorwaC1ejWvCT5GlzVD3dZE4I5VT/mZ0gA/ab05qedQyS+mKxy0OqYJ4QJOs1JS+LPWmnMbgdSV6UrRnfE6/FWrxq/Dm/Z0rkQE+gut1Ta6+Fkk+G+ObTB+g1ru2sHzggMywSt25YwwJanlIm8LiIcJLkkizKKsDdb2Kk6KopzPcfk0MiLM0ploSvYxHUr5vgs/9ixtjao3TjvhVPgMZYVWLz4uM0ecBWLM84sxrtFj0vvaCKnCOwmldtGRlVRPpNqMdtppoznV++XLLoq+X60M7zLgH5v0zwFqTDsBT6G+Bxf3M+BvYpgUMLOuWtn3jpTvnYR5kJZQY1wwbbtrTbZiqPt+fah6PC0FfeEW+0x+U21SaG0EVA9e5kB9N+8RCF7Sz2GTPULAdA6q7Hto2DC/2MIpWqlhU+pfg+w86TPVpZx0K1KRivxz+QvZxVirW3AIgwAAAABJRU5ErkJggg==)}.type-icon.chathelp{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAQAAAAAYLlVAAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfhBAMNBAMDRGxEAAADxElEQVRo3u2YTUhUURTHf29mHHWmdMY3Mo7al1CLCoJqGaUIRUXRJmglEQi5C6NdQav2UVCrIimoVatqIWRIUNIXUhNiUUlZBJnfo+OMvhaO43N89757n7NoMecuxLnv3P+599x7Pv5QkpKUxFnKiAtmwlQ7/m5gUuY44xeuJZRKagUz64kK4KOEHGcCxPDrwYeIYjjORFkv0KmlUrD7GAE9+CAxAXw1YYFOneDwDep1dx+kTuj7iND35YLdJwRb8eD7kHD3kbX53lgBX8EYluPhb6eRzTQQJUyALNOM8pOv/OI1sw4aPkxGyeodfq3DgVXRQQ/jpEiTYR4rP+bJkGaGUZ7SQdUq3/vW6nuTI3TbAN1GN0cwvfo+RGzF/1vo5IMG+NL4QCdbCevuvrLg3Xcy4AF8aXzigm7Qtfs+Qt8awJdGn+DJOoo9TrcwXQR4C4tpWlZsUklOFw1+0YTT+RtmqsC3kS4ivIVFmjaHGyaQ/UpLZrjJYZpo4ihdZBQ0WqlWgW9gzHWpGe4WXK1N9LpqTdDoDh/ggcJekgXRblHTPVTdd0/HraQUDMhyCYB9nOOk7ezc9FK0yuHLuaN4qeY4y3ssFrAYpBww2MBjV707gnSdjwPebv9lII6fawqvQVIT+mgm6KlsXUcFI1jCIs2e6Jpl012e9p9ld+55DSl83SUzIOnJgBM57VNKXydlBkxqg//mWE53J3NKGpMyAxY04Ufy8Af4rqgzLzNgStOAi/noMaKsIz2Bj5oJZlESWieXlD3DV1qP713u7xWtqu+NzIBHWgZM5KtGHXkk6wviDMlD5QoZ5y0BsuxxSE0imWMjv2W54HaRCxHNXKBXCU7Rz3v6NTRcsyH4uae83HOC1BDkhbLGA5X2PMEfxeV6chq9it+P0SCH9gEGE1xXvFAG4C9oamVynGG3csygmnS+hHaTbdygjAzblG5/O73un5kYnFGqcL32Ba6tWUirC/bSGcXditKJIsPbe0ODWnlrVsaNgsw1yOc1gA/QWUDfVcpvdSNfchYO8ZI+PvGLKQ5xhl3adWKSWzzkq+2XGClScqWrWDzjPDuIEcIgnqMXajjIE08MiZ2+Uyh4W2x8ho/6ghceop1u/jIj4IhSjNOziiNa8n1QLbAsx4QoIyw4Jqy9JGgigUkYf44lG+YbP/jIuOO6EWaZ0fGfmFQNCfmOsIAjFFO3kpNICGjFckxB4I1IqFvNZse/yvfLj7ROm7aP6cKLSdVi0vaefF882l7aHfsFh29q0/ZxVT6sJCUpyX8k/wALscSVmxSJXQAAAABJRU5ErkJggg==)}.type-icon.togetherjs{background-image:url(data:image/png;base64,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)}div.feedback{position:absolute;bottom:3px;left:0;right:3px;padding:0 10px 3px;z-index:1000;border:1px solid #888;border-radius:5px;background-color:#cff;box-shadow:3px 3px 5px #888}div.feedback.warning{background-color:#fdd}.modal-header .glyphicon-warning-sign{color:#fa0;font-size:150%}.modal-header .warning{color:red}div.btn-group.diff{margin-top:1em}div.btn-transparent button.dropdown-toggle{background:none repeat scroll 0 0 transparent;border:0 none;cursor:pointer;padding:0;color:#000;float:right;font-size:16px;font-weight:700;line-height:1;opacity:.2}div.btn-transparent>button:hover{opacity:.8}#login.login>.logout{display:none}#login.logout>.login{display:none}#login.logout>.logout{color:green}#login .value{margin-left:5px}iframe.login{width:90%;margin:0 auto;display:block;height:30ex}button.login-cont{margin:2ex auto 2ex;display:block}img.login-with,img.profile-picture{width:24px;height:24px}div.user-menu.btn-transparent button.dropdown-toggle{opacity:1}div.notification{display:inline-block;position:absolute;min-width:10em;background:#cff;padding:5px 1em;display:none;z-index:1000}a.dropdown-toggle.avatar{padding:0;margin-left:2px}img.avatar{width:24px;margin-top:4px;margin-bottom:4px}img.avatar:hover{width:32px;margin-top:0;margin-bottom:0}div.user-count{clear:both;text-align:center;color:#888;font-style:italic;font-size:75%;display:none}li.myself{border-bottom:3px solid green}li.user.lost{opacity:.2}.notify-arrow{background:#cff;border:1px solid #888;border-radius:5px;box-shadow:6px 6px 3px #aaa}.notify-arrow:after,.notify-arrow:before{bottom:100%;right:12px;border:solid transparent;content:" ";height:0;width:0;position:absolute}.notify-arrow:after{border-color:rgba(192,255,255,0);border-bottom-color:#cff;border-width:14px;margin-left:-14px}.notify-arrow:before{border-color:rgba(128,128,128,0);border-bottom-color:#888;border-width:15px;margin-left:-15px}div.chatroom{width:100%;height:100%;position:relative;overflow:hidden}div.chatroom span.glyphicon.menu{position:absolute;font-size:1.5em;top:5px;right:5px;opacity:.2}div.chatroom span.glyphicon.menu:hover{opacity:.8}div.chat-conversation{width:100%;height:calc(100% - 2.5em);overflow:auto;padding:5px}div.chat-input{border-top:1px solid #888;box-sizing:border-box;width:100%;height:2.5em}table.chat-input{width:100%;height:100%}td.chat-send{text-align:right;white-space:nowrap;vertical-align:middle;padding:5px}td.chat-send>div{display:flex}td.chat-text{width:100%;padding:0 5px}table.chat-input textarea{resize:none;box-sizing:border-box;width:100%;height:2.5em;border:0}div.chatroom div.chat-message{position:relative;font-size:90%;margin-right:10%;margin-bottom:1ex;background-color:#eee;border:1px solid #ccc;border-radius:5px;padding:3px 5px}div.chatroom div.chat-message.self{margin-right:0;margin-left:10%}div.chat-message img.avatar{position:absolute;margin-top:0;top:0;right:0;border-radius:5px;width:24px}span.chat-sender{font-weight:700;color:#4888be}span.chat-time{font-family:italic;color:#4888be}span.chat-sender::after{content:": "}span.commit-message{color:#060}span.no-commit-message{font-size:80%;color:#f80}.chat-message .tooltip{z-index:5000;position:fixed}.chat-message .tooltip-inner{background:#ffd;padding:5px 5px;border:1px solid #888;border-radius:5px}.chat-message .tooltip-inner pre.cm-s-prolog{padding:0 5px;background:0 0;border:0;margin:0}.flash{animation:flash 2s ease-out 1;-webkit-animation:flash 2s ease-out 1}@-webkit-keyframes flash{from{background-color:#ffa}to{background-color:#fff}}@keyframes flash{from{background-color:#ffa}to{background-color:#fff}}a.pengine-logo{position:absolute;top:4px;left:4px;width:42px;height:42px;background-image:url(../icons/logo.png);background-size:100%}.splitter_panel .hsplitter,.splitter_panel .vsplitter{z-index:100;border:2px outset #ccc}.splitter_panel .vsplitter{width:3px}.splitter_panel .hsplitter{height:3px}.splitter_panel .bottom_panel,.splitter_panel .hsplitter,.splitter_panel .left_panel,.splitter_panel .right_panel,.splitter_panel .top_panel,.splitter_panel .vsplitter{overflow:visible}body .modal-dialog{width:80%;max-width:800px;margin-left:auto;margin-right:auto}body .modal-dialog.modal-wide{width:90%;max-width:none}body .modal-dialog.swish-embedded-manual{width:90%;max-width:1000px}body .modal-dialog.swish-embedded-manual div.modal-body{padding:0}iframe.swish-embedded-manual{width:100%;border:0}
\ No newline at end of file
+ *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot);src:url(../bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff) format('woff'),url(../bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],.input-group-sm input[type=time],input[type=date].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm,input[type=time].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],.input-group-lg input[type=time],input[type=date].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg,input[type=time].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.in{opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;opacity:0;line-break:auto}.tooltip.in{opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}.tm-tag{color:#555;background-color:#f5f5f5;border:#bbb 1px solid;box-shadow:0 1px 1px rgba(0,0,0,.075) inset;display:inline-block;border-radius:3px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;margin:0 5px 5px 0;padding:4px;text-decoration:none;transition:border .2s linear 0s,box-shadow .2s linear 0s;-moz-transition:border .2s linear 0s,box-shadow .2s linear 0s;-webkit-transition:border .2s linear 0s,box-shadow .2s linear 0s;vertical-align:middle}.tm-tag .tm-tag-remove{color:#000;font-weight:700;margin-left:4px;opacity:.2}.tm-tag .tm-tag-remove:hover{color:#000;text-decoration:none;opacity:.4}.tm-tag.tm-tag-warning{color:#945203;background-color:#f2c889;border-color:#f0a12f}.tm-tag.tm-tag-error{color:#84212e;background-color:#e69ca6;border-color:#d24a5d}.tm-tag.tm-tag-success{color:#638421;background-color:#cde69c;border-color:#a5d24a}.tm-tag.tm-tag-info{color:#4594b5;background-color:#c5eefa;border-color:#5dc8f7}.tm-tag.tm-tag-inverse{color:#ccc;background-color:#555;border-color:#333;box-shadow:0 1px 1px rgba(0,0,0,.2) inset}.tm-tag.tm-tag-inverse .tm-tag-remove{color:#fff}.tm-tag.tm-tag-large{font-size:16.25px;border-radius:4px;padding:11px 7px}.tm-tag.tm-tag-small{font-size:11.049999999999999px;border-radius:3px;padding:2px 4px}.tm-tag.tm-tag-mini{font-size:9.75px;border-radius:2px;padding:0 2px}.tm-tag.tm-tag-plain{color:#333;box-shadow:none;background:0 0;border:none}.tm-tag.tm-tag-disabled{color:#aaa;background-color:#e6e6e6;border-color:#ccc;box-shadow:none}.tm-tag.tm-tag-disabled .tm-tag-remove{display:none}input[type=text].tm-input{margin-bottom:5px;vertical-align:middle!important}.control-group.tm-group{margin-bottom:5px}.form-horizontal .control-group.tm-group{margin-bottom:15px}.c3 svg{font:10px sans-serif;-webkit-tap-highlight-color:transparent}.c3 line,.c3 path{fill:none;stroke:#000}.c3 text{-webkit-user-select:none;-moz-user-select:none;user-select:none}.c3-bars path,.c3-event-rect,.c3-legend-item-tile,.c3-xgrid-focus,.c3-ygrid{shape-rendering:crispEdges}.c3-chart-arc path{stroke:#fff}.c3-chart-arc text{fill:#fff;font-size:13px}.c3-grid line{stroke:#aaa}.c3-grid text{fill:#aaa}.c3-xgrid,.c3-ygrid{stroke-dasharray:3 3}.c3-text.c3-empty{fill:grey;font-size:2em}.c3-line{stroke-width:1px}.c3-circle._expanded_{stroke-width:1px;stroke:#fff}.c3-selected-circle{fill:#fff;stroke-width:2px}.c3-bar{stroke-width:0}.c3-bar._expanded_{fill-opacity:.75}.c3-target.c3-focused{opacity:1}.c3-target.c3-focused path.c3-line,.c3-target.c3-focused path.c3-step{stroke-width:2px}.c3-target.c3-defocused{opacity:.3!important}.c3-region{fill:#4682b4;fill-opacity:.1}.c3-brush .extent{fill-opacity:.1}.c3-legend-item{font-size:12px}.c3-legend-item-hidden{opacity:.15}.c3-legend-background{opacity:.75;fill:#fff;stroke:#d3d3d3;stroke-width:1}.c3-title{font:14px sans-serif}.c3-tooltip-container{z-index:10}.c3-tooltip{border-collapse:collapse;border-spacing:0;background-color:#fff;empty-cells:show;-webkit-box-shadow:7px 7px 12px -9px #777;-moz-box-shadow:7px 7px 12px -9px #777;box-shadow:7px 7px 12px -9px #777;opacity:.9}.c3-tooltip tr{border:1px solid #ccc}.c3-tooltip th{background-color:#aaa;font-size:14px;padding:2px 5px;text-align:left;color:#fff}.c3-tooltip td{font-size:13px;padding:3px 6px;background-color:#fff;border-left:1px dotted #999}.c3-tooltip td>span{display:inline-block;width:10px;height:10px;margin-right:6px}.c3-tooltip td.value{text-align:right}.c3-area{stroke-width:0;opacity:.2}.c3-chart-arcs-title{dominant-baseline:middle;font-size:1.3em}.c3-chart-arcs .c3-chart-arcs-background{fill:#e0e0e0;stroke:none}.c3-chart-arcs .c3-chart-arcs-gauge-unit{fill:#000;font-size:16px}.c3-chart-arcs .c3-chart-arcs-gauge-max{fill:#777}.c3-chart-arcs .c3-chart-arcs-gauge-min{fill:#777}.c3-chart-arc .c3-gauge-value{fill:#000}span.twitter-typeahead .tt-menu{min-width:250px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}span.twitter-typeahead .tt-suggestion>p{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}span.twitter-typeahead .tt-suggestion:focus,span.twitter-typeahead .tt-suggestion:hover{text-decoration:none;outline:0;background-color:#e8e8e8}span.twitter-typeahead .tt-suggestion.tt-cursor{background-color:#f8f8f8}span.twitter-typeahead{width:100%;height:30px}.tt-suggestion{max-width:25em;overflow:hidden}.tt-suggestion .tt-label{padding-left:1.5em}.tt-file-header,.tt-suggestion.tt-match.file{background-size:1em;background-repeat:no-repeat;background-position:5px 5px}.tt-match.predicate.built_in .tt-label{color:#00f}.tt-suggestion .tt-title{color:#555;white-space:nowrap;overflow:hidden;font-style:italic;font-size:80%}.tt-suggestion .tt-tags{max-width:100px;float:right;margin-right:2px}.tt-suggestion .tt-tag{max-width:30px;border:1px solid #ddd;padding:0 4px;margin-left:2px;border-radius:5px;background-color:#e1edff}.tt-suggestion .tt-line{white-space:nowrap}.tt-suggestion .tt-lineno{display:inline-block;width:40px;min-width:20px;font-family:monospace;color:#999;background-color:#eee;border-right:1px solid #ddd;padding:0 3px 0 5px;text-align:right}.tt-suggestion .tt-text{padding-left:5px;white-space:nowrap}div.tt-file-header{padding-left:5em;background-color:#ddd;color:#000}span.tt-path-file{font-weight:700}div.tt-match.source{overflow:hidden}table.diff{width:100%;border-collapse:collapse;border:1px solid #a9a9a9;white-space:pre-wrap}table.diff tbody{font-family:Courier,monospace}table.diff tbody th{font-family:verdana,arial,'Bitstream Vera Sans',helvetica,sans-serif;background:#eed;font-size:11px;font-weight:400;border:1px solid #bbc;color:#886;padding:.3em .5em .1em 2em;text-align:right;vertical-align:top}table.diff thead{border-bottom:1px solid #bbc;background:#efefef;font-family:Verdana}table.diff thead th.texttitle{text-align:left}table.diff tbody td{padding:0;vertical-align:top}table.diff .empty{background-color:#ddd}table.diff .replace{background-color:#fd8}table.diff .delete{background-color:#e99}table.diff .skip{background-color:#efefef;border:1px solid #aaa;border-right:1px solid #bbc}table.diff .insert{background-color:#9e9}table.diff th.author{text-align:right;border-top:1px solid #bbc;background:#efefef}.notebook{position:relative;width:100%;height:100%}.nb-content,.nb-toolbar{width:100%}.notebook.hamburger .nb-toolbar{display:none}.nb-toolbar{position:absolute;padding-top:5px;padding-bottom:5px;margin-bottom:1em;border-bottom:1px solid #ddd}.nb-toolbar .action-fullscreen{right:5px;position:absolute}div.notebook-menu{display:none}.notebook.hamburger div.notebook-menu{display:block;position:absolute;top:3px;right:1em;z-index:2000}.notebook.hamburger .nb-view{top:0;height:100%}.nb-view{position:absolute;top:40px;height:calc(100% - 40px);width:100%;overflow-y:auto}.nb-content{position:relative;width:100%}.nb-bottom{width:100%;height:30%}.dropdown.cell-type{display:inline}.nb-cell.markdown:not(.runnable){background-color:transparent;border:0}.nb-cell.html:not(.runnable){background-color:transparent;border:0}.nb-cell{margin-left:20px;margin-right:10px;box-sizing:border-box}.nb-cell:focus{outline:0}.nb-type-select{padding:1em 0 1em 0}.nb-type-select>label{margin-left:1em;margin-right:1em;position:relative;top:.1em}.nb-type-more{padding-bottom:1em;padding-left:1em}.nb-type-more label{margin-right:1em;position:relative;top:.1em}.nb-type-more input{display:inline}.nb-cell .close-select{font-size:150%;padding:0 5px;border:0;color:#888;background-color:transparent;float:right}.nb-cell.active{margin-left:8px;border-left:7px solid green!important;padding-left:5px}.nb-cell.html.active>div.editor,.nb-cell.markdown.active>div.editor{border:1px dotted #888;border-radius:5px;margin-bottom:5px;margin-right:52px}.nb-cell.singleline div.editor{height:2em}.nb-cell.singleline .CodeMirror-hscrollbar{height:0}.nb-cell .CodeMirror-scroll{max-height:40em}.nb-cell .CodeMirror{border-radius:5px}.nb-cell .nb-cell-buttons{display:inline-block;float:right}.nb-cell span.glyphicon-cloud{color:#000}.nb-cell.background span.glyphicon-cloud{color:#fff}.nb-cell>.with-buttons{background-color:#eee;border:1px solid #ccc;border-radius:5px;width:calc(100% - 50px)}.nb-cell .nb-query-menu{display:inline;float:left}.nb-query-menu button{background:0 0;padding:3px 5px 0 5px;border:0;color:#888}.nb-query-menu button:hover{color:#000}.nb-cell .prolog-prompt{float:left;padding-right:.3em;padding-top:.25em;font-weight:700;text-align:right}.nb-cell .editor.query{margin-left:44px}.nb-cell.program,.nb-cell.query{margin-bottom:1em}.nb-cell.not-for-query{opacity:.5}.nb-placeholder{opacity:.5;width:90%;margin:auto;margin-top:1ex}.nb-cell.markdown pre.code{width:90%;margin:auto;margin-bottom:1em}.nb-cell.markdown dl.termlist{margin-left:5%}.nb-cell.markdown dl.termlist dd{margin-left:2em}.nb-cell.markdown .predicates dd{margin-left:2em;margin-bottom:1ex}a.btn-image{padding:1px 2px}.nb-cell.program span.image-icon{display:inline-block;width:18px;height:16px;padding:0;background-repeat:no-repeat;background-size:100% 100%;vertical-align:middle;background-image:url(data:image/png;base64,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)}.nb-cell.program.background span.image-icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4AkUDTkUFH3ZDwAABydJREFUaN7tmWuMVdUVx38zMjgMMIioW54iUsaKSI3FJ5vWx0SMlmhVGhuIMdE2VasmRrObRkinsd1RU2kbDdSmEfGF+KhK0mBBhQ02PqZVqYIoIDMoblAcxlauysztB/+nObm95z5mbtsPzkpu9j1nr7PPWnuv9V+PAwM0QF9tqqvFIsaHEcAxwOnALOAEYAIwRCw5oBPYCKwF1gPvRmf3/l8VMD6MBO4GzgOGAQdV+Ggv0A08B1wRnd33P1XA+DAa+ClwjW71ABuADmCe7r0InAL8E3gW+A5wAHhQpzMLqBfv7wAfnd1erSz1fRD+MuD9lPC/BQ4Bzges7m2QgAD10dk5wGpgEHAJMBs4GPiVeH4AvGV8mPtfVcD48AftIMA9wPjo7HXR2X8AjwFHAe3R2ZkS8N8UnW0FVgFNwOro7IHo7I3AaGAx0AAsNz7cX3MTMj4cLDM4XfZ7YXT26dT8z4AFwKfA8Ohsr/FhGPAJsD862yS+ZmCzhL45Ont7ao0ZwBpguJx9enQ2X6sTWCPh9wBfKxD+UMABXwA2OtubtUh0thv4li5vk9DJ3MvAccAWYBqwriYmZHy4BzhDuzsuOrutgOUZYDDwQHT2r+XWi86+DdysS18w/R4wA9gHzDQ+PNIvBYwPFwFX6vIg4JcF8+cDJwG7orNXVGG6v1FsOMv4cFZKuTxwA9CoW5caH+b1yQeMD4cDu3W5AviulNipHXxajtsKXB6dXVbw/H/4QJHNeVyINlXrLALGiGU1cI4UHRmdzVV7AjdpXBadnQtMBN4AxgEPSLlW2f5D1cJfdPYJOesYYBewXP+3Cd1agUd1GiurOgHjQyOwX5eTo7NbU3MXAD8Slicb8I6w/1X93wl8BrypHRwPjNVvMjBdftWSCoRrgMVSLHnXYAFHI3BssUCXpcDdEvL+6Oz8DFjdK6zP6QX1VUT2vOA4BwwFuqOzIzJkWaJAtzA621bWhIwPTUASEa/PEOB4IU97dHaYri8CbpEpvAjsSAm7HXhJvrRAvCfo2feAZuPDNzLetUjjT4pNDipy72igGWgHPs5YdKqe3SB73qwA9WRqI+plGrno7KQSp7EEaFMO9WoRX9lkfOgAJhgfZkZn15dz4ukK6y+XiIRnaCyF+00VmtNyja0leH6tcW4lKDRT4wslFkyOe3MNyolOIdlI+VYxekrjyZUoME3jxhIvnaxxRw0U6AU+FBBknVqXULG5LAoZH95VVjktwwe69UN5fVbuMxR4S0gzNlWdFVKDEsVRypP2FOFpVhXXHZ09upwTN1dwAgl1VMDTCHxU4Wn8rcz84EpQKG2b+Ywjn5gyoboSedY4rdFRgq8OOFKy7FLVVmyt0UK1sgp8DIwEpkZnP8kILnlB3MQSudQgOWeuFJ94N0nAqdHZrozA2ancqqwTJ47ZUuKdXVp4VBnTqbRYapayWbnZcPHsr0SB11PxIIu2pZy4v1QPHCZn/zSD53ClLV2VKPB8QbAqRknEPLYGCoyRc3ZnpczApRrXV6LAJmWSM4wPWY6XBLkTM8xiKGASJzU+jFB9UIwuTpWtWZR0QB6qxIm3C+ePB44AYhGejUKE0yTweOUycxSl05lpo7A9b3zo0bMrgaXR2Q5lvWTVFMaHUyXHh9HZ18qeQHT2c7VMAJZl7Mjf5XSnGB86BZO/AE6VwL2pgNQLfCCFhygdaAN2GB/eTyA5OvuXMrvfVm1J2SMFT0qKdUHjBcDSVMDLS9gVKjHXRWd7hC65grZKnZpfFwPfBw5NbeJnwGXAk0lnQ6l9F/A58PXobGc1gewW4Fbt7Gx15Bam4LVdBX0OGBudPVAkRSg83bzaJeuA64X/LargxqtG3mp8aIvO3ie/aFDHo7PamvguBY5zjQ9r1ZFrEYS2Rme/KUEaVaBU26K0QrG90dkJQr03gUnAUuPDDpnkvlIdj/oSRfe+VGo9S/nMbGBKdHZ1qi9aB9xZpfANwB91OV/ve0Ft+VaVq0mMmdfnvlB09nXg56nCe0t0tic1/6iK+LHGB1+FDlfJ/l+Kzv4ptV4PsDWVgy2Ozq7sV2cuOrsAuFdQ9prxoaVIdZYHbjA+TKpg90fJPEl16JK5KWotjgIeAa6uRWuxTja4VDnJZuPDNSkFdwN3KNQ/o1ZIqbznlaRYj86uTc1dpQqvAVgenf1eJc3duipt9ybgNl1uAb4NfBCdzRsf3lBzdj1wppy7sDv9mDp87cDJ6mI38+Vnp6RMvSs6e21N2+sFSpwJ/F5o0asW4xLgz/KHoxQT5gnbc9HZIcaHZbq3G5iigPbDVCqxB5gfnV1V8+8DGYoskjM2pSLuKr78XpbkNmcrEK0QL7LtOal0uxu4Lzr7477I0d+PfIcJ9haWqR+K0dsKkquis7v6KkNNPrNKmSOVCpyt6qopFY2/UDESdTIPR2d3MkADNED9pn8BvSyBlToydnoAAAAASUVORK5CYII=)}.type-icon.pl{background-image:url(../icons/pl.png)}.type-icon.swinb{background-image:url(../icons/swinb.png)}.type-icon.select{background-image:url(data:image/png;base64,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)}.type-icon.chat{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAQAAAAAYLlVAAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfhBAMNASzV4qVYAAADQElEQVRo3u2ZS09TURDHf31iW4G23PJoRI0hPkLqAhM1PgILSPADGNyZuDDi0gSJiSsTXfgJXOrCkBiNqDvCgqiRaGJ8BRoTdCE+8EFAlFKQclxQSkt7T+9pe+rCztn09jH//5mZM3NmChWpyP8uNpP3XQT5mnpyUoUbH1sJY+Bljlk+84F5llhkOakpyBx/cuhyYKTpskTAw2a+J1/voZX9HCBCIOt7M7zhKc8YI4oXwUIOXU78zJBQsYqXQJJYD3eZQORdE9zjZE5dDgycak5xY2ADuomyZAF8bS0RpTvLvmEcqvCNwDaGFKDT1xDb03bfZBpjpsavw84ZZguEFwhm6cUBuDBUd++lBgcDJIqAFwgSDOAmiEvV+EG8vCgSfG29plrd935GSgQvEIzkOLYS4xs4uV5CeIHghtUD6CEA9JUYXiDoswLvIgRENMALBJH8BBoAGNdEYDy5yTzSy7ImAsucwU6dHN7PQ03wAsEozbJ8aAfaaNNY8CPsRMgIODiKTyMBH0dkKdmOh07Nl55OPLKPA8Q1RoBAEJflRDv1VGm2QBX1MgItZbh5tsgIhMpAICQj4C4DAZeMQKwMBBZkBKbLQOCTjMBkGQj8kBH4yDfN8NNyAos80UzgEbMyAnGGNRMYJi4jIBhlSiP8FKOyargqgxorwaC1ejWvCT5GlzVD3dZE4I5VT/mZ0gA/ab05qedQyS+mKxy0OqYJ4QJOs1JS+LPWmnMbgdSV6UrRnfE6/FWrxq/Dm/Z0rkQE+gut1Ta6+Fkk+G+ObTB+g1ru2sHzggMywSt25YwwJanlIm8LiIcJLkkizKKsDdb2Kk6KopzPcfk0MiLM0ploSvYxHUr5vgs/9ixtjao3TjvhVPgMZYVWLz4uM0ecBWLM84sxrtFj0vvaCKnCOwmldtGRlVRPpNqMdtppoznV++XLLoq+X60M7zLgH5v0zwFqTDsBT6G+Bxf3M+BvYpgUMLOuWtn3jpTvnYR5kJZQY1wwbbtrTbZiqPt+fah6PC0FfeEW+0x+U21SaG0EVA9e5kB9N+8RCF7Sz2GTPULAdA6q7Hto2DC/2MIpWqlhU+pfg+w86TPVpZx0K1KRivxz+QvZxVirW3AIgwAAAABJRU5ErkJggg==)}.type-icon.chathelp{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAQAAAAAYLlVAAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfhBAMNBAMDRGxEAAADxElEQVRo3u2YTUhUURTHf29mHHWmdMY3Mo7al1CLCoJqGaUIRUXRJmglEQi5C6NdQav2UVCrIimoVatqIWRIUNIXUhNiUUlZBJnfo+OMvhaO43N89757n7NoMecuxLnv3P+599x7Pv5QkpKUxFnKiAtmwlQ7/m5gUuY44xeuJZRKagUz64kK4KOEHGcCxPDrwYeIYjjORFkv0KmlUrD7GAE9+CAxAXw1YYFOneDwDep1dx+kTuj7iND35YLdJwRb8eD7kHD3kbX53lgBX8EYluPhb6eRzTQQJUyALNOM8pOv/OI1sw4aPkxGyeodfq3DgVXRQQ/jpEiTYR4rP+bJkGaGUZ7SQdUq3/vW6nuTI3TbAN1GN0cwvfo+RGzF/1vo5IMG+NL4QCdbCevuvrLg3Xcy4AF8aXzigm7Qtfs+Qt8awJdGn+DJOoo9TrcwXQR4C4tpWlZsUklOFw1+0YTT+RtmqsC3kS4ivIVFmjaHGyaQ/UpLZrjJYZpo4ihdZBQ0WqlWgW9gzHWpGe4WXK1N9LpqTdDoDh/ggcJekgXRblHTPVTdd0/HraQUDMhyCYB9nOOk7ezc9FK0yuHLuaN4qeY4y3ssFrAYpBww2MBjV707gnSdjwPebv9lII6fawqvQVIT+mgm6KlsXUcFI1jCIs2e6Jpl012e9p9ld+55DSl83SUzIOnJgBM57VNKXydlBkxqg//mWE53J3NKGpMyAxY04Ufy8Af4rqgzLzNgStOAi/noMaKsIz2Bj5oJZlESWieXlD3DV1qP713u7xWtqu+NzIBHWgZM5KtGHXkk6wviDMlD5QoZ5y0BsuxxSE0imWMjv2W54HaRCxHNXKBXCU7Rz3v6NTRcsyH4uae83HOC1BDkhbLGA5X2PMEfxeV6chq9it+P0SCH9gEGE1xXvFAG4C9oamVynGG3csygmnS+hHaTbdygjAzblG5/O73un5kYnFGqcL32Ba6tWUirC/bSGcXditKJIsPbe0ODWnlrVsaNgsw1yOc1gA/QWUDfVcpvdSNfchYO8ZI+PvGLKQ5xhl3adWKSWzzkq+2XGClScqWrWDzjPDuIEcIgnqMXajjIE08MiZ2+Uyh4W2x8ho/6ghceop1u/jIj4IhSjNOziiNa8n1QLbAsx4QoIyw4Jqy9JGgigUkYf44lG+YbP/jIuOO6EWaZ0fGfmFQNCfmOsIAjFFO3kpNICGjFckxB4I1IqFvNZse/yvfLj7ROm7aP6cKLSdVi0vaefF882l7aHfsFh29q0/ZxVT6sJCUpyX8k/wALscSVmxSJXQAAAABJRU5ErkJggg==)}.type-icon.togetherjs{background-image:url(data:image/png;base64,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)}div.feedback{position:absolute;bottom:3px;left:0;right:3px;padding:0 10px 3px;z-index:1000;border:1px solid #888;border-radius:5px;background-color:#cff;box-shadow:3px 3px 5px #888}div.feedback.warning{background-color:#fdd}.modal-header .glyphicon-warning-sign{color:#fa0;font-size:150%}.modal-header .warning{color:red}div.btn-group.diff{margin-top:1em}div.btn-transparent button.dropdown-toggle{background:none repeat scroll 0 0 transparent;border:0 none;cursor:pointer;padding:0;color:#000;float:right;font-size:16px;font-weight:700;line-height:1;opacity:.2}div.btn-transparent>button:hover{opacity:.8}#login.login>.logout{display:none}#login.logout>.login{display:none}#login.logout>.logout{color:green}#login .value{margin-left:5px}iframe.login{width:90%;margin:0 auto;display:block;height:30ex}button.login-cont{margin:2ex auto 2ex;display:block}img.login-with,img.profile-picture{width:24px;height:24px}div.user-menu.btn-transparent button.dropdown-toggle{opacity:1}div.notification{display:inline-block;position:absolute;min-width:10em;background:#cff;padding:5px 1em;display:none;z-index:1000}a.dropdown-toggle.avatar{padding:0;margin-left:2px}img.avatar{width:24px;margin-top:4px;margin-bottom:4px}img.avatar:hover{width:32px;margin-top:0;margin-bottom:0}div.user-count{clear:both;text-align:center;color:#888;font-style:italic;font-size:75%;display:none}li.myself{border-bottom:3px solid green}li.user.lost{opacity:.2}.navbar-nav>li>a.broadcast-bell{padding:15px 5px 9px}#broadcast-bell{display:inline-block;height:30px;width:26px}#broadcast-bell .glyphicon{font-size:200%}.notify-arrow{background:#cff;border:1px solid #888;border-radius:5px;box-shadow:6px 6px 3px #aaa}.notify-arrow:after,.notify-arrow:before{bottom:100%;right:12px;border:solid transparent;content:" ";height:0;width:0;position:absolute}.notify-arrow:after{border-color:rgba(192,255,255,0);border-bottom-color:#cff;border-width:14px;margin-left:-14px}.notify-arrow:before{border-color:rgba(128,128,128,0);border-bottom-color:#888;border-width:15px;margin-left:-15px}div.chatroom{width:100%;height:100%;position:relative;overflow:hidden;display:table}div.chatroom span.glyphicon.menu{position:absolute;font-size:1.5em;top:5px;right:5px;opacity:.2}div.chatroom span.glyphicon.menu:hover{opacity:.8}div.chat-conversation{width:100%;display:table-row;height:100%}div.chat-outer-wrapper{display:table-cell;height:100%}div.chat-inner-wrapper{height:100%;position:relative;overflow:auto}div.chat-content-wrapper{position:absolute;top:0;bottom:0;left:0;right:0}table.chat-input{width:100%}td.chat-send{text-align:right;white-space:nowrap;vertical-align:middle;padding:5px}td.chat-send>div{display:flex}td.chat-text{width:100%;padding:0 5px}table.chat-input textarea{resize:vertical;box-sizing:border-box;width:100%;border:1px solid #888;border-radius:5px}div.chatroom div.chat-message{position:relative;font-size:90%;margin-right:10%;margin-left:5px;margin-bottom:1ex;background-color:#eee;border:1px solid #ccc;border-radius:5px;padding:3px 5px}div.chatroom div.chat-message.self{margin-right:5px;margin-left:10%}div.chat-message img.avatar{position:absolute;margin-top:0;top:0;right:0;border-radius:5px;width:24px}span.chat-sender{font-weight:700;color:#4888be}span.chat-time{font-family:italic;color:#4888be}span.chat-sender::after{content:": "}span.commit-message{color:#060}span.no-commit-message{font-size:80%;color:#f80}.chat-message .tooltip{z-index:5000;position:fixed}.chat-message .tooltip-inner{background:#ffd;padding:5px 5px;border:1px solid #888;border-radius:5px}.chat-message .tooltip-inner pre.cm-s-prolog{padding:0 5px;background:0 0;border:0;margin:0}.chat-bell{position:relative;vertical-align:middle;height:30px;width:22px}.chat-bell .glyphicon,span.chat-bell-count{position:absolute;display:block;top:0;left:0;width:100%;height:100%;text-align:center;line-height:30px}.chat-bell .glyphicon{font-size:140%}.chat-bell .glyphicon{color:#888}.chat-bell.chat-alert .glyphicon{color:red}span.chat-bell-count{font-size:80%;font-weight:700;color:#fff;z-index:10}.flash{animation:flash 2s ease-out 1;-webkit-animation:flash 2s ease-out 1}@-webkit-keyframes flash{from{background-color:#ffa}to{background-color:#fff}}@keyframes flash{from{background-color:#ffa}to{background-color:#fff}}a.pengine-logo{position:absolute;top:4px;left:4px;width:42px;height:42px;background-image:url(../icons/logo.png);background-size:100%}.splitter_panel .hsplitter,.splitter_panel .vsplitter{z-index:100;border:2px outset #ccc}.splitter_panel .vsplitter{width:3px}.splitter_panel .hsplitter{height:3px}.splitter_panel .bottom_panel,.splitter_panel .hsplitter,.splitter_panel .left_panel,.splitter_panel .right_panel,.splitter_panel .top_panel,.splitter_panel .vsplitter{overflow:visible}body .modal-dialog{width:80%;max-width:800px;margin-left:auto;margin-right:auto}body .modal-dialog.modal-wide{width:90%;max-width:none}body .modal-dialog.swish-embedded-manual{width:90%;max-width:1000px}body .modal-dialog.swish-embedded-manual div.modal-body{padding:0}iframe.swish-embedded-manual{width:100%;border:0}
\ No newline at end of file
diff --git a/web/css/swish-min.css.gz b/web/css/swish-min.css.gz
index 1e7997e..154f171 100644
Binary files a/web/css/swish-min.css.gz and b/web/css/swish-min.css.gz differ
diff --git a/web/js/swish-min.js b/web/js/swish-min.js
index 15ad4c4..3b96824 100644
--- a/web/js/swish-min.js
+++ b/web/js/swish-min.js
@@ -1,33 +1,34 @@
-if(!function(t,e){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=t.document?e(t,!0):function(t){if(!t.document)throw new Error("jQuery requires a window with a document");return e(t)}:e(t)}("undefined"!=typeof window?window:this,function(t,e){"use strict";function n(t,e){e=e||nt;var n=e.createElement("script");n.text=t,e.head.appendChild(n).parentNode.removeChild(n)}function i(t){var e=!!t&&"length"in t&&t.length,n=gt.type(t);return"function"!==n&&!gt.isWindow(t)&&("array"===n||0===e||"number"==typeof e&&e>0&&e-1 in t)}function r(t,e){return t.nodeName&&t.nodeName.toLowerCase()===e.toLowerCase()}function o(t,e,n){return gt.isFunction(e)?gt.grep(t,function(t,i){return!!e.call(t,i,t)!==n}):e.nodeType?gt.grep(t,function(t){return t===e!==n}):"string"!=typeof e?gt.grep(t,function(t){return st.call(e,t)>-1!==n}):Tt.test(e)?gt.filter(e,t,n):(e=gt.filter(e,t),gt.grep(t,function(t){return st.call(e,t)>-1!==n&&1===t.nodeType}))}function a(t,e){for(;(t=t[e])&&1!==t.nodeType;);return t}function s(t){var e={};return gt.each(t.match(Pt)||[],function(t,n){e[n]=!0}),e}function l(t){return t}function c(t){throw t}function u(t,e,n,i){var r;try{t&&gt.isFunction(r=t.promise)?r.call(t).done(e).fail(n):t&&gt.isFunction(r=t.then)?r.call(t,e,n):e.apply(void 0,[t].slice(i))}catch(t){n.apply(void 0,[t])}}function h(){nt.removeEventListener("DOMContentLoaded",h),t.removeEventListener("load",h),gt.ready()}function d(){this.expando=gt.expando+d.uid++}function f(t){return"true"===t||"false"!==t&&("null"===t?null:t===+t+""?+t:Ht.test(t)?JSON.parse(t):t)}function p(t,e,n){var i;if(void 0===n&&1===t.nodeType)if(i="data-"+e.replace(Vt,"-$&").toLowerCase(),n=t.getAttribute(i),"string"==typeof n){try{n=f(n)}catch(t){}jt.set(t,e,n)}else n=void 0;return n}function g(t,e,n,i){var r,o=1,a=20,s=i?function(){return i.cur()}:function(){return gt.css(t,e,"")},l=s(),c=n&&n[3]||(gt.cssNumber[e]?"":"px"),u=(gt.cssNumber[e]||"px"!==c&&+l)&&zt.exec(gt.css(t,e));if(u&&u[3]!==c){c=c||u[3],n=n||[],u=+l||1;do o=o||".5",u/=o,gt.style(t,e,u+c);while(o!==(o=s()/l)&&1!==o&&--a)}return n&&(u=+u||+l||0,r=n[1]?u+(n[1]+1)*n[2]:+n[2],i&&(i.unit=c,i.start=u,i.end=r)),r}function m(t){var e,n=t.ownerDocument,i=t.nodeName,r=$t[i];return r?r:(e=n.body.appendChild(n.createElement(i)),r=gt.css(e,"display"),e.parentNode.removeChild(e),"none"===r&&(r="block"),$t[i]=r,r)}function v(t,e){for(var n,i,r=[],o=0,a=t.length;o<a;o++)i=t[o],i.style&&(n=i.style.display,e?("none"===n&&(r[o]=It.get(i,"display")||null,r[o]||(i.style.display="")),""===i.style.display&&Gt(i)&&(r[o]=m(i))):"none"!==n&&(r[o]="none",It.set(i,"display",n)));for(o=0;o<a;o++)null!=r[o]&&(t[o].style.display=r[o]);return t}function y(t,e){var n;return n="undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e||"*"):"undefined"!=typeof t.querySelectorAll?t.querySelectorAll(e||"*"):[],void 0===e||e&&r(t,e)?gt.merge([t],n):n}function x(t,e){for(var n=0,i=t.length;n<i;n++)It.set(t[n],"globalEval",!e||It.get(e[n],"globalEval"))}function b(t,e,n,i,r){for(var o,a,s,l,c,u,h=e.createDocumentFragment(),d=[],f=0,p=t.length;f<p;f++)if(o=t[f],o||0===o)if("object"===gt.type(o))gt.merge(d,o.nodeType?[o]:o);else if(Qt.test(o)){for(a=a||h.appendChild(e.createElement("div")),s=(Ut.exec(o)||["",""])[1].toLowerCase(),l=Yt[s]||Yt._default,a.innerHTML=l[1]+gt.htmlPrefilter(o)+l[2],u=l[0];u--;)a=a.lastChild;gt.merge(d,a.childNodes),a=h.firstChild,a.textContent=""}else d.push(e.createTextNode(o));for(h.textContent="",f=0;o=d[f++];)if(i&&gt.inArray(o,i)>-1)r&&r.push(o);else if(c=gt.contains(o.ownerDocument,o),a=y(h.appendChild(o),"script"),c&&x(a),n)for(u=0;o=a[u++];)Xt.test(o.type||"")&&n.push(o);return h}function _(){return!0}function w(){return!1}function S(){try{return nt.activeElement}catch(t){}}function C(t,e,n,i,r,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(i=i||n,n=void 0);for(s in e)C(t,s,n,i,e[s],o);return t}if(null==i&&null==r?(r=n,i=n=void 0):null==r&&("string"==typeof n?(r=i,i=void 0):(r=i,i=n,n=void 0)),r===!1)r=w;else if(!r)return t;return 1===o&&(a=r,r=function(t){return gt().off(t),a.apply(this,arguments)},r.guid=a.guid||(a.guid=gt.guid++)),t.each(function(){gt.event.add(this,e,r,i,n)})}function T(t,e){return r(t,"table")&&r(11!==e.nodeType?e:e.firstChild,"tr")?gt(">tbody",t)[0]||t:t}function k(t){return t.type=(null!==t.getAttribute("type"))+"/"+t.type,t}function A(t){var e=re.exec(t.type);return e?t.type=e[1]:t.removeAttribute("type"),t}function M(t,e){var n,i,r,o,a,s,l,c;if(1===e.nodeType){if(It.hasData(t)&&(o=It.access(t),a=It.set(e,o),c=o.events)){delete a.handle,a.events={};for(r in c)for(n=0,i=c[r].length;n<i;n++)gt.event.add(e,r,c[r][n])}jt.hasData(t)&&(s=jt.access(t),l=gt.extend({},s),jt.set(e,l))}}function L(t,e){var n=e.nodeName.toLowerCase();"input"===n&&Wt.test(t.type)?e.checked=t.checked:"input"!==n&&"textarea"!==n||(e.defaultValue=t.defaultValue)}function E(t,e,i,r){e=ot.apply([],e);var o,a,s,l,c,u,h=0,d=t.length,f=d-1,p=e[0],g=gt.isFunction(p);if(g||d>1&&"string"==typeof p&&!ft.checkClone&&ie.test(p))return t.each(function(n){var o=t.eq(n);g&&(e[0]=p.call(this,n,o.html())),E(o,e,i,r)});if(d&&(o=b(e,t[0].ownerDocument,!1,t,r),a=o.firstChild,1===o.childNodes.length&&(o=a),a||r)){for(s=gt.map(y(o,"script"),k),l=s.length;h<d;h++)c=o,h!==f&&(c=gt.clone(c,!0,!0),l&&gt.merge(s,y(c,"script"))),i.call(t[h],c,h);if(l)for(u=s[s.length-1].ownerDocument,gt.map(s,A),h=0;h<l;h++)c=s[h],Xt.test(c.type||"")&&!It.access(c,"globalEval")&&gt.contains(u,c)&&(c.src?gt._evalUrl&&gt._evalUrl(c.src):n(c.textContent.replace(oe,""),u))}return t}function P(t,e,n){for(var i,r=e?gt.filter(e,t):t,o=0;null!=(i=r[o]);o++)n||1!==i.nodeType||gt.cleanData(y(i)),i.parentNode&&(n&&gt.contains(i.ownerDocument,i)&&x(y(i,"script")),i.parentNode.removeChild(i));return t}function N(t,e,n){var i,r,o,a,s=t.style;return n=n||le(t),n&&(a=n.getPropertyValue(e)||n[e],""!==a||gt.contains(t.ownerDocument,t)||(a=gt.style(t,e)),!ft.pixelMarginRight()&&se.test(a)&&ae.test(e)&&(i=s.width,r=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=i,s.minWidth=r,s.maxWidth=o)),void 0!==a?a+"":a}function O(t,e){return{get:function(){return t()?void delete this.get:(this.get=e).apply(this,arguments)}}}function R(t){if(t in pe)return t;for(var e=t[0].toUpperCase()+t.slice(1),n=fe.length;n--;)if(t=fe[n]+e,t in pe)return t}function D(t){var e=gt.cssProps[t];return e||(e=gt.cssProps[t]=R(t)||t),e}function I(t,e,n){var i=zt.exec(e);return i?Math.max(0,i[2]-(n||0))+(i[3]||"px"):e}function j(t,e,n,i,r){var o,a=0;for(o=n===(i?"border":"content")?4:"width"===e?1:0;o<4;o+=2)"margin"===n&&(a+=gt.css(t,n+qt[o],!0,r)),i?("content"===n&&(a-=gt.css(t,"padding"+qt[o],!0,r)),"margin"!==n&&(a-=gt.css(t,"border"+qt[o]+"Width",!0,r))):(a+=gt.css(t,"padding"+qt[o],!0,r),"padding"!==n&&(a+=gt.css(t,"border"+qt[o]+"Width",!0,r)));return a}function H(t,e,n){var i,r=le(t),o=N(t,e,r),a="border-box"===gt.css(t,"boxSizing",!1,r);return se.test(o)?o:(i=a&&(ft.boxSizingReliable()||o===t.style[e]),"auto"===o&&(o=t["offset"+e[0].toUpperCase()+e.slice(1)]),o=parseFloat(o)||0,o+j(t,e,n||(a?"border":"content"),i,r)+"px")}function V(t,e,n,i,r){return new V.prototype.init(t,e,n,i,r)}function F(){me&&(nt.hidden===!1&&t.requestAnimationFrame?t.requestAnimationFrame(F):t.setTimeout(F,gt.fx.interval),gt.fx.tick())}function z(){return t.setTimeout(function(){ge=void 0}),ge=gt.now()}function q(t,e){var n,i=0,r={height:t};for(e=e?1:0;i<4;i+=2-e)n=qt[i],r["margin"+n]=r["padding"+n]=t;return e&&(r.opacity=r.width=t),r}function G(t,e,n){for(var i,r=(W.tweeners[e]||[]).concat(W.tweeners["*"]),o=0,a=r.length;o<a;o++)if(i=r[o].call(n,e,t))return i}function B(t,e,n){var i,r,o,a,s,l,c,u,h="width"in e||"height"in e,d=this,f={},p=t.style,g=t.nodeType&&Gt(t),m=It.get(t,"fxshow");n.queue||(a=gt._queueHooks(t,"fx"),null==a.unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,d.always(function(){d.always(function(){a.unqueued--,gt.queue(t,"fx").length||a.empty.fire()})}));for(i in e)if(r=e[i],ve.test(r)){if(delete e[i],o=o||"toggle"===r,r===(g?"hide":"show")){if("show"!==r||!m||void 0===m[i])continue;g=!0}f[i]=m&&m[i]||gt.style(t,i)}if(l=!gt.isEmptyObject(e),l||!gt.isEmptyObject(f)){h&&1===t.nodeType&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],c=m&&m.display,null==c&&(c=It.get(t,"display")),u=gt.css(t,"display"),"none"===u&&(c?u=c:(v([t],!0),c=t.style.display||c,u=gt.css(t,"display"),v([t]))),("inline"===u||"inline-block"===u&&null!=c)&&"none"===gt.css(t,"float")&&(l||(d.done(function(){p.display=c}),null==c&&(u=p.display,c="none"===u?"":u)),p.display="inline-block")),n.overflow&&(p.overflow="hidden",d.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]})),l=!1;for(i in f)l||(m?"hidden"in m&&(g=m.hidden):m=It.access(t,"fxshow",{display:c}),o&&(m.hidden=!g),g&&v([t],!0),d.done(function(){g||v([t]),It.remove(t,"fxshow");for(i in f)gt.style(t,i,f[i])})),l=G(g?m[i]:0,i,d),i in m||(m[i]=l.start,g&&(l.end=l.start,l.start=0))}}function $(t,e){var n,i,r,o,a;for(n in t)if(i=gt.camelCase(n),r=e[i],o=t[n],Array.isArray(o)&&(r=o[1],o=t[n]=o[0]),n!==i&&(t[i]=o,delete t[n]),a=gt.cssHooks[i],a&&"expand"in a){o=a.expand(o),delete t[i];for(n in o)n in t||(t[n]=o[n],e[n]=r)}else e[i]=r}function W(t,e,n){var i,r,o=0,a=W.prefilters.length,s=gt.Deferred().always(function(){delete l.elem}),l=function(){if(r)return!1;for(var e=ge||z(),n=Math.max(0,c.startTime+c.duration-e),i=n/c.duration||0,o=1-i,a=0,l=c.tweens.length;a<l;a++)c.tweens[a].run(o);return s.notifyWith(t,[c,o,n]),o<1&&l?n:(l||s.notifyWith(t,[c,1,0]),s.resolveWith(t,[c]),!1)},c=s.promise({elem:t,props:gt.extend({},e),opts:gt.extend(!0,{specialEasing:{},easing:gt.easing._default},n),originalProperties:e,originalOptions:n,startTime:ge||z(),duration:n.duration,tweens:[],createTween:function(e,n){var i=gt.Tween(t,c.opts,e,n,c.opts.specialEasing[e]||c.opts.easing);return c.tweens.push(i),i},stop:function(e){var n=0,i=e?c.tweens.length:0;if(r)return this;for(r=!0;n<i;n++)c.tweens[n].run(1);return e?(s.notifyWith(t,[c,1,0]),s.resolveWith(t,[c,e])):s.rejectWith(t,[c,e]),this}}),u=c.props;for($(u,c.opts.specialEasing);o<a;o++)if(i=W.prefilters[o].call(c,t,u,c.opts))return gt.isFunction(i.stop)&&(gt._queueHooks(c.elem,c.opts.queue).stop=gt.proxy(i.stop,i)),i;return gt.map(u,G,c),gt.isFunction(c.opts.start)&&c.opts.start.call(t,c),c.progress(c.opts.progress).done(c.opts.done,c.opts.complete).fail(c.opts.fail).always(c.opts.always),gt.fx.timer(gt.extend(l,{elem:t,anim:c,queue:c.opts.queue})),c}function U(t){var e=t.match(Pt)||[];return e.join(" ")}function X(t){return t.getAttribute&&t.getAttribute("class")||""}function Y(t,e,n,i){var r;if(Array.isArray(e))gt.each(e,function(e,r){n||Me.test(t)?i(t,r):Y(t+"["+("object"==typeof r&&null!=r?e:"")+"]",r,n,i)});else if(n||"object"!==gt.type(e))i(t,e);else for(r in e)Y(t+"["+r+"]",e[r],n,i)}function Q(t){return function(e,n){"string"!=typeof e&&(n=e,e="*");var i,r=0,o=e.toLowerCase().match(Pt)||[];if(gt.isFunction(n))for(;i=o[r++];)"+"===i[0]?(i=i.slice(1)||"*",(t[i]=t[i]||[]).unshift(n)):(t[i]=t[i]||[]).push(n)}}function Z(t,e,n,i){function r(s){var l;return o[s]=!0,gt.each(t[s]||[],function(t,s){var c=s(e,n,i);return"string"!=typeof c||a||o[c]?a?!(l=c):void 0:(e.dataTypes.unshift(c),r(c),!1)}),l}var o={},a=t===Fe;return r(e.dataTypes[0])||!o["*"]&&r("*")}function K(t,e){var n,i,r=gt.ajaxSettings.flatOptions||{};for(n in e)void 0!==e[n]&&((r[n]?t:i||(i={}))[n]=e[n]);return i&&gt.extend(!0,t,i),t}function J(t,e,n){for(var i,r,o,a,s=t.contents,l=t.dataTypes;"*"===l[0];)l.shift(),void 0===i&&(i=t.mimeType||e.getResponseHeader("Content-Type"));if(i)for(r in s)if(s[r]&&s[r].test(i)){l.unshift(r);break}if(l[0]in n)o=l[0];else{for(r in n){if(!l[0]||t.converters[r+" "+l[0]]){o=r;break}a||(a=r)}o=o||a}if(o)return o!==l[0]&&l.unshift(o),n[o]}function tt(t,e,n,i){var r,o,a,s,l,c={},u=t.dataTypes.slice();if(u[1])for(a in t.converters)c[a.toLowerCase()]=t.converters[a];for(o=u.shift();o;)if(t.responseFields[o]&&(n[t.responseFields[o]]=e),!l&&i&&t.dataFilter&&(e=t.dataFilter(e,t.dataType)),l=o,o=u.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(a=c[l+" "+o]||c["* "+o],!a)for(r in c)if(s=r.split(" "),s[1]===o&&(a=c[l+" "+s[0]]||c["* "+s[0]])){a===!0?a=c[r]:c[r]!==!0&&(o=s[0],u.unshift(s[1]));break}if(a!==!0)if(a&&t.throws)e=a(e);else try{e=a(e)}catch(t){return{state:"parsererror",error:a?t:"No conversion from "+l+" to "+o}}}return{state:"success",data:e}}var et=[],nt=t.document,it=Object.getPrototypeOf,rt=et.slice,ot=et.concat,at=et.push,st=et.indexOf,lt={},ct=lt.toString,ut=lt.hasOwnProperty,ht=ut.toString,dt=ht.call(Object),ft={},pt="3.2.1",gt=function(t,e){return new gt.fn.init(t,e)},mt=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,vt=/^-ms-/,yt=/-([a-z])/g,xt=function(t,e){return e.toUpperCase()};gt.fn=gt.prototype={jquery:pt,constructor:gt,length:0,toArray:function(){return rt.call(this)},get:function(t){return null==t?rt.call(this):t<0?this[t+this.length]:this[t]},pushStack:function(t){var e=gt.merge(this.constructor(),t);return e.prevObject=this,e},each:function(t){return gt.each(this,t)},map:function(t){return this.pushStack(gt.map(this,function(e,n){return t.call(e,n,e)}))},slice:function(){return this.pushStack(rt.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(t){var e=this.length,n=+t+(t<0?e:0);return this.pushStack(n>=0&&n<e?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:at,sort:et.sort,splice:et.splice},gt.extend=gt.fn.extend=function(){var t,e,n,i,r,o,a=arguments[0]||{},s=1,l=arguments.length,c=!1;for("boolean"==typeof a&&(c=a,a=arguments[s]||{},s++),"object"==typeof a||gt.isFunction(a)||(a={}),s===l&&(a=this,s--);s<l;s++)if(null!=(t=arguments[s]))for(e in t)n=a[e],i=t[e],a!==i&&(c&&i&&(gt.isPlainObject(i)||(r=Array.isArray(i)))?(r?(r=!1,o=n&&Array.isArray(n)?n:[]):o=n&&gt.isPlainObject(n)?n:{},a[e]=gt.extend(c,o,i)):void 0!==i&&(a[e]=i));return a},gt.extend({expando:"jQuery"+(pt+Math.random()).replace(/\D/g,""),isReady:!0,error:function(t){throw new Error(t)},noop:function(){},isFunction:function(t){return"function"===gt.type(t)},isWindow:function(t){return null!=t&&t===t.window},isNumeric:function(t){var e=gt.type(t);return("number"===e||"string"===e)&&!isNaN(t-parseFloat(t))},isPlainObject:function(t){var e,n;return!(!t||"[object Object]"!==ct.call(t)||(e=it(t))&&(n=ut.call(e,"constructor")&&e.constructor,"function"!=typeof n||ht.call(n)!==dt))},isEmptyObject:function(t){var e;for(e in t)return!1;return!0},type:function(t){return null==t?t+"":"object"==typeof t||"function"==typeof t?lt[ct.call(t)]||"object":typeof t},globalEval:function(t){n(t)},camelCase:function(t){return t.replace(vt,"ms-").replace(yt,xt)},each:function(t,e){var n,r=0;if(i(t))for(n=t.length;r<n&&e.call(t[r],r,t[r])!==!1;r++);else for(r in t)if(e.call(t[r],r,t[r])===!1)break;return t},trim:function(t){return null==t?"":(t+"").replace(mt,"")},makeArray:function(t,e){var n=e||[];return null!=t&&(i(Object(t))?gt.merge(n,"string"==typeof t?[t]:t):at.call(n,t)),n},inArray:function(t,e,n){return null==e?-1:st.call(e,t,n)},merge:function(t,e){for(var n=+e.length,i=0,r=t.length;i<n;i++)t[r++]=e[i];return t.length=r,t},grep:function(t,e,n){for(var i,r=[],o=0,a=t.length,s=!n;o<a;o++)i=!e(t[o],o),i!==s&&r.push(t[o]);return r},map:function(t,e,n){var r,o,a=0,s=[];if(i(t))for(r=t.length;a<r;a++)o=e(t[a],a,n),null!=o&&s.push(o);else for(a in t)o=e(t[a],a,n),null!=o&&s.push(o);return ot.apply([],s)},guid:1,proxy:function(t,e){var n,i,r;if("string"==typeof e&&(n=t[e],e=t,t=n),gt.isFunction(t))return i=rt.call(arguments,2),r=function(){return t.apply(e||this,i.concat(rt.call(arguments)))},r.guid=t.guid=t.guid||gt.guid++,r},now:Date.now,support:ft}),"function"==typeof Symbol&&(gt.fn[Symbol.iterator]=et[Symbol.iterator]),gt.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(t,e){lt["[object "+e+"]"]=e.toLowerCase()});var bt=function(t){function e(t,e,n,i){var r,o,a,s,l,c,u,d=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!i&&((e?e.ownerDocument||e:z)!==O&&N(e),e=e||O,D)){if(11!==p&&(l=vt.exec(t)))if(r=l[1]){if(9===p){if(!(a=e.getElementById(r)))return n;if(a.id===r)return n.push(a),n}else if(d&&(a=d.getElementById(r))&&V(e,a)&&a.id===r)return n.push(a),n}else{if(l[2])return K.apply(n,e.getElementsByTagName(t)),n;if((r=l[3])&&w.getElementsByClassName&&e.getElementsByClassName)return K.apply(n,e.getElementsByClassName(r)),n}if(w.qsa&&!W[t+" "]&&(!I||!I.test(t))){if(1!==p)d=e,u=t;else if("object"!==e.nodeName.toLowerCase()){for((s=e.getAttribute("id"))?s=s.replace(_t,wt):e.setAttribute("id",s=F),c=k(t),o=c.length;o--;)c[o]="#"+s+" "+f(c[o]);u=c.join(","),d=yt.test(t)&&h(e.parentNode)||e}if(u)try{return K.apply(n,d.querySelectorAll(u)),n}catch(t){}finally{s===F&&e.removeAttribute("id")}}}return M(t.replace(st,"$1"),e,n,i)}function n(){function t(n,i){return e.push(n+" ")>S.cacheLength&&delete t[e.shift()],t[n+" "]=i}var e=[];return t}function i(t){return t[F]=!0,t}function r(t){var e=O.createElement("fieldset");try{return!!t(e)}catch(t){return!1}finally{e.parentNode&&e.parentNode.removeChild(e),e=null}}function o(t,e){for(var n=t.split("|"),i=n.length;i--;)S.attrHandle[n[i]]=e}function a(t,e){var n=e&&t,i=n&&1===t.nodeType&&1===e.nodeType&&t.sourceIndex-e.sourceIndex;if(i)return i;if(n)for(;n=n.nextSibling;)if(n===e)return-1;return t?1:-1}function s(t){return function(e){var n=e.nodeName.toLowerCase();return"input"===n&&e.type===t}}function l(t){return function(e){var n=e.nodeName.toLowerCase();return("input"===n||"button"===n)&&e.type===t}}function c(t){return function(e){return"form"in e?e.parentNode&&e.disabled===!1?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&Ct(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function u(t){return i(function(e){return e=+e,i(function(n,i){for(var r,o=t([],n.length,e),a=o.length;a--;)n[r=o[a]]&&(n[r]=!(i[r]=n[r]))})})}function h(t){return t&&"undefined"!=typeof t.getElementsByTagName&&t}function d(){}function f(t){for(var e=0,n=t.length,i="";e<n;e++)i+=t[e].value;return i}function p(t,e,n){var i=e.dir,r=e.next,o=r||i,a=n&&"parentNode"===o,s=G++;return e.first?function(e,n,r){for(;e=e[i];)if(1===e.nodeType||a)return t(e,n,r);return!1}:function(e,n,l){var c,u,h,d=[q,s];if(l){for(;e=e[i];)if((1===e.nodeType||a)&&t(e,n,l))return!0}else for(;e=e[i];)if(1===e.nodeType||a)if(h=e[F]||(e[F]={}),u=h[e.uniqueID]||(h[e.uniqueID]={}),r&&r===e.nodeName.toLowerCase())e=e[i]||e;else{if((c=u[o])&&c[0]===q&&c[1]===s)return d[2]=c[2];if(u[o]=d,d[2]=t(e,n,l))return!0}return!1}}function g(t){return t.length>1?function(e,n,i){for(var r=t.length;r--;)if(!t[r](e,n,i))return!1;return!0}:t[0]}function m(t,n,i){for(var r=0,o=n.length;r<o;r++)e(t,n[r],i);return i}function v(t,e,n,i,r){for(var o,a=[],s=0,l=t.length,c=null!=e;s<l;s++)(o=t[s])&&(n&&!n(o,i,r)||(a.push(o),c&&e.push(s)));return a}function y(t,e,n,r,o,a){return r&&!r[F]&&(r=y(r)),o&&!o[F]&&(o=y(o,a)),i(function(i,a,s,l){var c,u,h,d=[],f=[],p=a.length,g=i||m(e||"*",s.nodeType?[s]:s,[]),y=!t||!i&&e?g:v(g,d,t,s,l),x=n?o||(i?t:p||r)?[]:a:y;if(n&&n(y,x,s,l),r)for(c=v(x,f),r(c,[],s,l),u=c.length;u--;)(h=c[u])&&(x[f[u]]=!(y[f[u]]=h));if(i){if(o||t){if(o){for(c=[],u=x.length;u--;)(h=x[u])&&c.push(y[u]=h);o(null,x=[],c,l)}for(u=x.length;u--;)(h=x[u])&&(c=o?tt(i,h):d[u])>-1&&(i[c]=!(a[c]=h))}}else x=v(x===a?x.splice(p,x.length):x),o?o(null,a,x,l):K.apply(a,x)})}function x(t){for(var e,n,i,r=t.length,o=S.relative[t[0].type],a=o||S.relative[" "],s=o?1:0,l=p(function(t){return t===e},a,!0),c=p(function(t){return tt(e,t)>-1},a,!0),u=[function(t,n,i){var r=!o&&(i||n!==L)||((e=n).nodeType?l(t,n,i):c(t,n,i));return e=null,r}];s<r;s++)if(n=S.relative[t[s].type])u=[p(g(u),n)];else{if(n=S.filter[t[s].type].apply(null,t[s].matches),n[F]){for(i=++s;i<r&&!S.relative[t[i].type];i++);return y(s>1&&g(u),s>1&&f(t.slice(0,s-1).concat({value:" "===t[s-2].type?"*":""})).replace(st,"$1"),n,s<i&&x(t.slice(s,i)),i<r&&x(t=t.slice(i)),i<r&&f(t))}u.push(n)}return g(u)}function b(t,n){var r=n.length>0,o=t.length>0,a=function(i,a,s,l,c){var u,h,d,f=0,p="0",g=i&&[],m=[],y=L,x=i||o&&S.find.TAG("*",c),b=q+=null==y?1:Math.random()||.1,_=x.length;for(c&&(L=a===O||a||c);p!==_&&null!=(u=x[p]);p++){if(o&&u){for(h=0,a||u.ownerDocument===O||(N(u),s=!D);d=t[h++];)if(d(u,a||O,s)){l.push(u);break}c&&(q=b)}r&&((u=!d&&u)&&f--,i&&g.push(u))}if(f+=p,r&&p!==f){for(h=0;d=n[h++];)d(g,m,a,s);if(i){if(f>0)for(;p--;)g[p]||m[p]||(m[p]=Q.call(l));m=v(m)}K.apply(l,m),c&&!i&&m.length>0&&f+n.length>1&&e.uniqueSort(l)}return c&&(q=b,L=y),g};return r?i(a):a}var _,w,S,C,T,k,A,M,L,E,P,N,O,R,D,I,j,H,V,F="sizzle"+1*new Date,z=t.document,q=0,G=0,B=n(),$=n(),W=n(),U=function(t,e){return t===e&&(P=!0),0},X={}.hasOwnProperty,Y=[],Q=Y.pop,Z=Y.push,K=Y.push,J=Y.slice,tt=function(t,e){for(var n=0,i=t.length;n<i;n++)if(t[n]===e)return n;return-1},et="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",nt="[\\x20\\t\\r\\n\\f]",it="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",rt="\\["+nt+"*("+it+")(?:"+nt+"*([*^$|!~]?=)"+nt+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+it+"))|)"+nt+"*\\]",ot=":("+it+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+rt+")*)|.*)\\)|)",at=new RegExp(nt+"+","g"),st=new RegExp("^"+nt+"+|((?:^|[^\\\\])(?:\\\\.)*)"+nt+"+$","g"),lt=new RegExp("^"+nt+"*,"+nt+"*"),ct=new RegExp("^"+nt+"*([>+~]|"+nt+")"+nt+"*"),ut=new RegExp("="+nt+"*([^\\]'\"]*?)"+nt+"*\\]","g"),ht=new RegExp(ot),dt=new RegExp("^"+it+"$"),ft={ID:new RegExp("^#("+it+")"),CLASS:new RegExp("^\\.("+it+")"),TAG:new RegExp("^("+it+"|[*])"),ATTR:new RegExp("^"+rt),PSEUDO:new RegExp("^"+ot),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+nt+"*(even|odd|(([+-]|)(\\d*)n|)"+nt+"*(?:([+-]|)"+nt+"*(\\d+)|))"+nt+"*\\)|)","i"),bool:new RegExp("^(?:"+et+")$","i"),needsContext:new RegExp("^"+nt+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+nt+"*((?:-\\d)?\\d*)"+nt+"*\\)|)(?=[^-]|$)","i")},pt=/^(?:input|select|textarea|button)$/i,gt=/^h\d$/i,mt=/^[^{]+\{\s*\[native \w/,vt=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,yt=/[+~]/,xt=new RegExp("\\\\([\\da-f]{1,6}"+nt+"?|("+nt+")|.)","ig"),bt=function(t,e,n){var i="0x"+e-65536;return i!==i||n?e:i<0?String.fromCharCode(i+65536):String.fromCharCode(i>>10|55296,1023&i|56320)},_t=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,wt=function(t,e){return e?"\0"===t?"�":t.slice(0,-1)+"\\"+t.charCodeAt(t.length-1).toString(16)+" ":"\\"+t},St=function(){N()},Ct=p(function(t){return t.disabled===!0&&("form"in t||"label"in t)},{dir:"parentNode",next:"legend"});try{K.apply(Y=J.call(z.childNodes),z.childNodes),Y[z.childNodes.length].nodeType}catch(t){K={apply:Y.length?function(t,e){Z.apply(t,J.call(e))}:function(t,e){for(var n=t.length,i=0;t[n++]=e[i++];);t.length=n-1}}}w=e.support={},T=e.isXML=function(t){var e=t&&(t.ownerDocument||t).documentElement;return!!e&&"HTML"!==e.nodeName},N=e.setDocument=function(t){var e,n,i=t?t.ownerDocument||t:z;return i!==O&&9===i.nodeType&&i.documentElement?(O=i,R=O.documentElement,D=!T(O),z!==O&&(n=O.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",St,!1):n.attachEvent&&n.attachEvent("onunload",St)),w.attributes=r(function(t){return t.className="i",!t.getAttribute("className")}),w.getElementsByTagName=r(function(t){return t.appendChild(O.createComment("")),!t.getElementsByTagName("*").length}),w.getElementsByClassName=mt.test(O.getElementsByClassName),w.getById=r(function(t){return R.appendChild(t).id=F,!O.getElementsByName||!O.getElementsByName(F).length}),w.getById?(S.filter.ID=function(t){var e=t.replace(xt,bt);return function(t){return t.getAttribute("id")===e}},S.find.ID=function(t,e){if("undefined"!=typeof e.getElementById&&D){var n=e.getElementById(t);return n?[n]:[]}}):(S.filter.ID=function(t){var e=t.replace(xt,bt);return function(t){var n="undefined"!=typeof t.getAttributeNode&&t.getAttributeNode("id");return n&&n.value===e}},S.find.ID=function(t,e){if("undefined"!=typeof e.getElementById&&D){var n,i,r,o=e.getElementById(t);if(o){if(n=o.getAttributeNode("id"),n&&n.value===t)return[o];for(r=e.getElementsByName(t),i=0;o=r[i++];)if(n=o.getAttributeNode("id"),n&&n.value===t)return[o]}return[]}}),S.find.TAG=w.getElementsByTagName?function(t,e){return"undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t):w.qsa?e.querySelectorAll(t):void 0}:function(t,e){var n,i=[],r=0,o=e.getElementsByTagName(t);if("*"===t){for(;n=o[r++];)1===n.nodeType&&i.push(n);return i}return o},S.find.CLASS=w.getElementsByClassName&&function(t,e){if("undefined"!=typeof e.getElementsByClassName&&D)return e.getElementsByClassName(t)},j=[],I=[],(w.qsa=mt.test(O.querySelectorAll))&&(r(function(t){R.appendChild(t).innerHTML="<a id='"+F+"'></a><select id='"+F+"-\r\\' msallowcapture=''><option selected=''></option></select>",t.querySelectorAll("[msallowcapture^='']").length&&I.push("[*^$]="+nt+"*(?:''|\"\")"),t.querySelectorAll("[selected]").length||I.push("\\["+nt+"*(?:value|"+et+")"),t.querySelectorAll("[id~="+F+"-]").length||I.push("~="),t.querySelectorAll(":checked").length||I.push(":checked"),t.querySelectorAll("a#"+F+"+*").length||I.push(".#.+[+~]")}),r(function(t){t.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var e=O.createElement("input");e.setAttribute("type","hidden"),t.appendChild(e).setAttribute("name","D"),t.querySelectorAll("[name=d]").length&&I.push("name"+nt+"*[*^$|!~]?="),2!==t.querySelectorAll(":enabled").length&&I.push(":enabled",":disabled"),R.appendChild(t).disabled=!0,2!==t.querySelectorAll(":disabled").length&&I.push(":enabled",":disabled"),t.querySelectorAll("*,:x"),I.push(",.*:")})),(w.matchesSelector=mt.test(H=R.matches||R.webkitMatchesSelector||R.mozMatchesSelector||R.oMatchesSelector||R.msMatchesSelector))&&r(function(t){w.disconnectedMatch=H.call(t,"*"),H.call(t,"[s!='']:x"),j.push("!=",ot)}),I=I.length&&new RegExp(I.join("|")),j=j.length&&new RegExp(j.join("|")),e=mt.test(R.compareDocumentPosition),V=e||mt.test(R.contains)?function(t,e){var n=9===t.nodeType?t.documentElement:t,i=e&&e.parentNode;return t===i||!(!i||1!==i.nodeType||!(n.contains?n.contains(i):t.compareDocumentPosition&&16&t.compareDocumentPosition(i)))}:function(t,e){if(e)for(;e=e.parentNode;)if(e===t)return!0;return!1},U=e?function(t,e){if(t===e)return P=!0,0;var n=!t.compareDocumentPosition-!e.compareDocumentPosition;return n?n:(n=(t.ownerDocument||t)===(e.ownerDocument||e)?t.compareDocumentPosition(e):1,1&n||!w.sortDetached&&e.compareDocumentPosition(t)===n?t===O||t.ownerDocument===z&&V(z,t)?-1:e===O||e.ownerDocument===z&&V(z,e)?1:E?tt(E,t)-tt(E,e):0:4&n?-1:1)}:function(t,e){if(t===e)return P=!0,0;var n,i=0,r=t.parentNode,o=e.parentNode,s=[t],l=[e];if(!r||!o)return t===O?-1:e===O?1:r?-1:o?1:E?tt(E,t)-tt(E,e):0;if(r===o)return a(t,e);for(n=t;n=n.parentNode;)s.unshift(n);for(n=e;n=n.parentNode;)l.unshift(n);for(;s[i]===l[i];)i++;return i?a(s[i],l[i]):s[i]===z?-1:l[i]===z?1:0},O):O},e.matches=function(t,n){return e(t,null,null,n)},e.matchesSelector=function(t,n){if((t.ownerDocument||t)!==O&&N(t),n=n.replace(ut,"='$1']"),w.matchesSelector&&D&&!W[n+" "]&&(!j||!j.test(n))&&(!I||!I.test(n)))try{var i=H.call(t,n);if(i||w.disconnectedMatch||t.document&&11!==t.document.nodeType)return i}catch(t){}return e(n,O,null,[t]).length>0},e.contains=function(t,e){return(t.ownerDocument||t)!==O&&N(t),V(t,e)},e.attr=function(t,e){(t.ownerDocument||t)!==O&&N(t);var n=S.attrHandle[e.toLowerCase()],i=n&&X.call(S.attrHandle,e.toLowerCase())?n(t,e,!D):void 0;return void 0!==i?i:w.attributes||!D?t.getAttribute(e):(i=t.getAttributeNode(e))&&i.specified?i.value:null},e.escape=function(t){return(t+"").replace(_t,wt)},e.error=function(t){throw new Error("Syntax error, unrecognized expression: "+t)},e.uniqueSort=function(t){var e,n=[],i=0,r=0;if(P=!w.detectDuplicates,E=!w.sortStable&&t.slice(0),t.sort(U),P){for(;e=t[r++];)e===t[r]&&(i=n.push(r));for(;i--;)t.splice(n[i],1)}return E=null,t},C=e.getText=function(t){var e,n="",i=0,r=t.nodeType;if(r){if(1===r||9===r||11===r){if("string"==typeof t.textContent)return t.textContent;for(t=t.firstChild;t;t=t.nextSibling)n+=C(t)}else if(3===r||4===r)return t.nodeValue}else for(;e=t[i++];)n+=C(e);return n},S=e.selectors={cacheLength:50,createPseudo:i,match:ft,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(t){return t[1]=t[1].replace(xt,bt),t[3]=(t[3]||t[4]||t[5]||"").replace(xt,bt),"~="===t[2]&&(t[3]=" "+t[3]+" "),t.slice(0,4)},CHILD:function(t){return t[1]=t[1].toLowerCase(),"nth"===t[1].slice(0,3)?(t[3]||e.error(t[0]),t[4]=+(t[4]?t[5]+(t[6]||1):2*("even"===t[3]||"odd"===t[3])),t[5]=+(t[7]+t[8]||"odd"===t[3])):t[3]&&e.error(t[0]),t},PSEUDO:function(t){var e,n=!t[6]&&t[2];return ft.CHILD.test(t[0])?null:(t[3]?t[2]=t[4]||t[5]||"":n&&ht.test(n)&&(e=k(n,!0))&&(e=n.indexOf(")",n.length-e)-n.length)&&(t[0]=t[0].slice(0,e),t[2]=n.slice(0,e)),t.slice(0,3))}},filter:{TAG:function(t){var e=t.replace(xt,bt).toLowerCase();return"*"===t?function(){return!0}:function(t){return t.nodeName&&t.nodeName.toLowerCase()===e}},CLASS:function(t){var e=B[t+" "];return e||(e=new RegExp("(^|"+nt+")"+t+"("+nt+"|$)"))&&B(t,function(t){return e.test("string"==typeof t.className&&t.className||"undefined"!=typeof t.getAttribute&&t.getAttribute("class")||"")})},ATTR:function(t,n,i){return function(r){var o=e.attr(r,t);return null==o?"!="===n:!n||(o+="","="===n?o===i:"!="===n?o!==i:"^="===n?i&&0===o.indexOf(i):"*="===n?i&&o.indexOf(i)>-1:"$="===n?i&&o.slice(-i.length)===i:"~="===n?(" "+o.replace(at," ")+" ").indexOf(i)>-1:"|="===n&&(o===i||o.slice(0,i.length+1)===i+"-"))}},CHILD:function(t,e,n,i,r){var o="nth"!==t.slice(0,3),a="last"!==t.slice(-4),s="of-type"===e;return 1===i&&0===r?function(t){return!!t.parentNode}:function(e,n,l){var c,u,h,d,f,p,g=o!==a?"nextSibling":"previousSibling",m=e.parentNode,v=s&&e.nodeName.toLowerCase(),y=!l&&!s,x=!1;if(m){if(o){for(;g;){for(d=e;d=d[g];)if(s?d.nodeName.toLowerCase()===v:1===d.nodeType)return!1;p=g="only"===t&&!p&&"nextSibling"}return!0}if(p=[a?m.firstChild:m.lastChild],a&&y){for(d=m,h=d[F]||(d[F]={}),u=h[d.uniqueID]||(h[d.uniqueID]={}),c=u[t]||[],f=c[0]===q&&c[1],x=f&&c[2],d=f&&m.childNodes[f];d=++f&&d&&d[g]||(x=f=0)||p.pop();)if(1===d.nodeType&&++x&&d===e){u[t]=[q,f,x];break}}else if(y&&(d=e,h=d[F]||(d[F]={}),u=h[d.uniqueID]||(h[d.uniqueID]={}),c=u[t]||[],f=c[0]===q&&c[1],x=f),x===!1)for(;(d=++f&&d&&d[g]||(x=f=0)||p.pop())&&((s?d.nodeName.toLowerCase()!==v:1!==d.nodeType)||!++x||(y&&(h=d[F]||(d[F]={}),u=h[d.uniqueID]||(h[d.uniqueID]={}),u[t]=[q,x]),d!==e)););return x-=r,x===i||x%i===0&&x/i>=0}}},PSEUDO:function(t,n){var r,o=S.pseudos[t]||S.setFilters[t.toLowerCase()]||e.error("unsupported pseudo: "+t);return o[F]?o(n):o.length>1?(r=[t,t,"",n],S.setFilters.hasOwnProperty(t.toLowerCase())?i(function(t,e){for(var i,r=o(t,n),a=r.length;a--;)i=tt(t,r[a]),t[i]=!(e[i]=r[a])}):function(t){return o(t,0,r)}):o}},pseudos:{not:i(function(t){var e=[],n=[],r=A(t.replace(st,"$1"));return r[F]?i(function(t,e,n,i){for(var o,a=r(t,null,i,[]),s=t.length;s--;)(o=a[s])&&(t[s]=!(e[s]=o))}):function(t,i,o){return e[0]=t,r(e,null,o,n),e[0]=null,!n.pop()}}),has:i(function(t){return function(n){return e(t,n).length>0}}),contains:i(function(t){return t=t.replace(xt,bt),function(e){return(e.textContent||e.innerText||C(e)).indexOf(t)>-1}}),lang:i(function(t){return dt.test(t||"")||e.error("unsupported lang: "+t),t=t.replace(xt,bt).toLowerCase(),function(e){var n;do if(n=D?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return n=n.toLowerCase(),n===t||0===n.indexOf(t+"-");while((e=e.parentNode)&&1===e.nodeType);return!1};
-}),target:function(e){var n=t.location&&t.location.hash;return n&&n.slice(1)===e.id},root:function(t){return t===R},focus:function(t){return t===O.activeElement&&(!O.hasFocus||O.hasFocus())&&!!(t.type||t.href||~t.tabIndex)},enabled:c(!1),disabled:c(!0),checked:function(t){var e=t.nodeName.toLowerCase();return"input"===e&&!!t.checked||"option"===e&&!!t.selected},selected:function(t){return t.parentNode&&t.parentNode.selectedIndex,t.selected===!0},empty:function(t){for(t=t.firstChild;t;t=t.nextSibling)if(t.nodeType<6)return!1;return!0},parent:function(t){return!S.pseudos.empty(t)},header:function(t){return gt.test(t.nodeName)},input:function(t){return pt.test(t.nodeName)},button:function(t){var e=t.nodeName.toLowerCase();return"input"===e&&"button"===t.type||"button"===e},text:function(t){var e;return"input"===t.nodeName.toLowerCase()&&"text"===t.type&&(null==(e=t.getAttribute("type"))||"text"===e.toLowerCase())},first:u(function(){return[0]}),last:u(function(t,e){return[e-1]}),eq:u(function(t,e,n){return[n<0?n+e:n]}),even:u(function(t,e){for(var n=0;n<e;n+=2)t.push(n);return t}),odd:u(function(t,e){for(var n=1;n<e;n+=2)t.push(n);return t}),lt:u(function(t,e,n){for(var i=n<0?n+e:n;--i>=0;)t.push(i);return t}),gt:u(function(t,e,n){for(var i=n<0?n+e:n;++i<e;)t.push(i);return t})}},S.pseudos.nth=S.pseudos.eq;for(_ in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})S.pseudos[_]=s(_);for(_ in{submit:!0,reset:!0})S.pseudos[_]=l(_);return d.prototype=S.filters=S.pseudos,S.setFilters=new d,k=e.tokenize=function(t,n){var i,r,o,a,s,l,c,u=$[t+" "];if(u)return n?0:u.slice(0);for(s=t,l=[],c=S.preFilter;s;){i&&!(r=lt.exec(s))||(r&&(s=s.slice(r[0].length)||s),l.push(o=[])),i=!1,(r=ct.exec(s))&&(i=r.shift(),o.push({value:i,type:r[0].replace(st," ")}),s=s.slice(i.length));for(a in S.filter)!(r=ft[a].exec(s))||c[a]&&!(r=c[a](r))||(i=r.shift(),o.push({value:i,type:a,matches:r}),s=s.slice(i.length));if(!i)break}return n?s.length:s?e.error(t):$(t,l).slice(0)},A=e.compile=function(t,e){var n,i=[],r=[],o=W[t+" "];if(!o){for(e||(e=k(t)),n=e.length;n--;)o=x(e[n]),o[F]?i.push(o):r.push(o);o=W(t,b(r,i)),o.selector=t}return o},M=e.select=function(t,e,n,i){var r,o,a,s,l,c="function"==typeof t&&t,u=!i&&k(t=c.selector||t);if(n=n||[],1===u.length){if(o=u[0]=u[0].slice(0),o.length>2&&"ID"===(a=o[0]).type&&9===e.nodeType&&D&&S.relative[o[1].type]){if(e=(S.find.ID(a.matches[0].replace(xt,bt),e)||[])[0],!e)return n;c&&(e=e.parentNode),t=t.slice(o.shift().value.length)}for(r=ft.needsContext.test(t)?0:o.length;r--&&(a=o[r],!S.relative[s=a.type]);)if((l=S.find[s])&&(i=l(a.matches[0].replace(xt,bt),yt.test(o[0].type)&&h(e.parentNode)||e))){if(o.splice(r,1),t=i.length&&f(o),!t)return K.apply(n,i),n;break}}return(c||A(t,u))(i,e,!D,n,!e||yt.test(t)&&h(e.parentNode)||e),n},w.sortStable=F.split("").sort(U).join("")===F,w.detectDuplicates=!!P,N(),w.sortDetached=r(function(t){return 1&t.compareDocumentPosition(O.createElement("fieldset"))}),r(function(t){return t.innerHTML="<a href='#'></a>","#"===t.firstChild.getAttribute("href")})||o("type|href|height|width",function(t,e,n){if(!n)return t.getAttribute(e,"type"===e.toLowerCase()?1:2)}),w.attributes&&r(function(t){return t.innerHTML="<input/>",t.firstChild.setAttribute("value",""),""===t.firstChild.getAttribute("value")})||o("value",function(t,e,n){if(!n&&"input"===t.nodeName.toLowerCase())return t.defaultValue}),r(function(t){return null==t.getAttribute("disabled")})||o(et,function(t,e,n){var i;if(!n)return t[e]===!0?e.toLowerCase():(i=t.getAttributeNode(e))&&i.specified?i.value:null}),e}(t);gt.find=bt,gt.expr=bt.selectors,gt.expr[":"]=gt.expr.pseudos,gt.uniqueSort=gt.unique=bt.uniqueSort,gt.text=bt.getText,gt.isXMLDoc=bt.isXML,gt.contains=bt.contains,gt.escapeSelector=bt.escape;var _t=function(t,e,n){for(var i=[],r=void 0!==n;(t=t[e])&&9!==t.nodeType;)if(1===t.nodeType){if(r&&gt(t).is(n))break;i.push(t)}return i},wt=function(t,e){for(var n=[];t;t=t.nextSibling)1===t.nodeType&&t!==e&&n.push(t);return n},St=gt.expr.match.needsContext,Ct=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,Tt=/^.[^:#\[\.,]*$/;gt.filter=function(t,e,n){var i=e[0];return n&&(t=":not("+t+")"),1===e.length&&1===i.nodeType?gt.find.matchesSelector(i,t)?[i]:[]:gt.find.matches(t,gt.grep(e,function(t){return 1===t.nodeType}))},gt.fn.extend({find:function(t){var e,n,i=this.length,r=this;if("string"!=typeof t)return this.pushStack(gt(t).filter(function(){for(e=0;e<i;e++)if(gt.contains(r[e],this))return!0}));for(n=this.pushStack([]),e=0;e<i;e++)gt.find(t,r[e],n);return i>1?gt.uniqueSort(n):n},filter:function(t){return this.pushStack(o(this,t||[],!1))},not:function(t){return this.pushStack(o(this,t||[],!0))},is:function(t){return!!o(this,"string"==typeof t&&St.test(t)?gt(t):t||[],!1).length}});var kt,At=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,Mt=gt.fn.init=function(t,e,n){var i,r;if(!t)return this;if(n=n||kt,"string"==typeof t){if(i="<"===t[0]&&">"===t[t.length-1]&&t.length>=3?[null,t,null]:At.exec(t),!i||!i[1]&&e)return!e||e.jquery?(e||n).find(t):this.constructor(e).find(t);if(i[1]){if(e=e instanceof gt?e[0]:e,gt.merge(this,gt.parseHTML(i[1],e&&e.nodeType?e.ownerDocument||e:nt,!0)),Ct.test(i[1])&&gt.isPlainObject(e))for(i in e)gt.isFunction(this[i])?this[i](e[i]):this.attr(i,e[i]);return this}return r=nt.getElementById(i[2]),r&&(this[0]=r,this.length=1),this}return t.nodeType?(this[0]=t,this.length=1,this):gt.isFunction(t)?void 0!==n.ready?n.ready(t):t(gt):gt.makeArray(t,this)};Mt.prototype=gt.fn,kt=gt(nt);var Lt=/^(?:parents|prev(?:Until|All))/,Et={children:!0,contents:!0,next:!0,prev:!0};gt.fn.extend({has:function(t){var e=gt(t,this),n=e.length;return this.filter(function(){for(var t=0;t<n;t++)if(gt.contains(this,e[t]))return!0})},closest:function(t,e){var n,i=0,r=this.length,o=[],a="string"!=typeof t&&gt(t);if(!St.test(t))for(;i<r;i++)for(n=this[i];n&&n!==e;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&gt.find.matchesSelector(n,t))){o.push(n);break}return this.pushStack(o.length>1?gt.uniqueSort(o):o)},index:function(t){return t?"string"==typeof t?st.call(gt(t),this[0]):st.call(this,t.jquery?t[0]:t):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(t,e){return this.pushStack(gt.uniqueSort(gt.merge(this.get(),gt(t,e))))},addBack:function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}}),gt.each({parent:function(t){var e=t.parentNode;return e&&11!==e.nodeType?e:null},parents:function(t){return _t(t,"parentNode")},parentsUntil:function(t,e,n){return _t(t,"parentNode",n)},next:function(t){return a(t,"nextSibling")},prev:function(t){return a(t,"previousSibling")},nextAll:function(t){return _t(t,"nextSibling")},prevAll:function(t){return _t(t,"previousSibling")},nextUntil:function(t,e,n){return _t(t,"nextSibling",n)},prevUntil:function(t,e,n){return _t(t,"previousSibling",n)},siblings:function(t){return wt((t.parentNode||{}).firstChild,t)},children:function(t){return wt(t.firstChild)},contents:function(t){return r(t,"iframe")?t.contentDocument:(r(t,"template")&&(t=t.content||t),gt.merge([],t.childNodes))}},function(t,e){gt.fn[t]=function(n,i){var r=gt.map(this,e,n);return"Until"!==t.slice(-5)&&(i=n),i&&"string"==typeof i&&(r=gt.filter(i,r)),this.length>1&&(Et[t]||gt.uniqueSort(r),Lt.test(t)&&r.reverse()),this.pushStack(r)}});var Pt=/[^\x20\t\r\n\f]+/g;gt.Callbacks=function(t){t="string"==typeof t?s(t):gt.extend({},t);var e,n,i,r,o=[],a=[],l=-1,c=function(){for(r=r||t.once,i=e=!0;a.length;l=-1)for(n=a.shift();++l<o.length;)o[l].apply(n[0],n[1])===!1&&t.stopOnFalse&&(l=o.length,n=!1);t.memory||(n=!1),e=!1,r&&(o=n?[]:"")},u={add:function(){return o&&(n&&!e&&(l=o.length-1,a.push(n)),function e(n){gt.each(n,function(n,i){gt.isFunction(i)?t.unique&&u.has(i)||o.push(i):i&&i.length&&"string"!==gt.type(i)&&e(i)})}(arguments),n&&!e&&c()),this},remove:function(){return gt.each(arguments,function(t,e){for(var n;(n=gt.inArray(e,o,n))>-1;)o.splice(n,1),n<=l&&l--}),this},has:function(t){return t?gt.inArray(t,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return r=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return r=a=[],n||e||(o=n=""),this},locked:function(){return!!r},fireWith:function(t,n){return r||(n=n||[],n=[t,n.slice?n.slice():n],a.push(n),e||c()),this},fire:function(){return u.fireWith(this,arguments),this},fired:function(){return!!i}};return u},gt.extend({Deferred:function(e){var n=[["notify","progress",gt.Callbacks("memory"),gt.Callbacks("memory"),2],["resolve","done",gt.Callbacks("once memory"),gt.Callbacks("once memory"),0,"resolved"],["reject","fail",gt.Callbacks("once memory"),gt.Callbacks("once memory"),1,"rejected"]],i="pending",r={state:function(){return i},always:function(){return o.done(arguments).fail(arguments),this},catch:function(t){return r.then(null,t)},pipe:function(){var t=arguments;return gt.Deferred(function(e){gt.each(n,function(n,i){var r=gt.isFunction(t[i[4]])&&t[i[4]];o[i[1]](function(){var t=r&&r.apply(this,arguments);t&&gt.isFunction(t.promise)?t.promise().progress(e.notify).done(e.resolve).fail(e.reject):e[i[0]+"With"](this,r?[t]:arguments)})}),t=null}).promise()},then:function(e,i,r){function o(e,n,i,r){return function(){var s=this,u=arguments,h=function(){var t,h;if(!(e<a)){if(t=i.apply(s,u),t===n.promise())throw new TypeError("Thenable self-resolution");h=t&&("object"==typeof t||"function"==typeof t)&&t.then,gt.isFunction(h)?r?h.call(t,o(a,n,l,r),o(a,n,c,r)):(a++,h.call(t,o(a,n,l,r),o(a,n,c,r),o(a,n,l,n.notifyWith))):(i!==l&&(s=void 0,u=[t]),(r||n.resolveWith)(s,u))}},d=r?h:function(){try{h()}catch(t){gt.Deferred.exceptionHook&&gt.Deferred.exceptionHook(t,d.stackTrace),e+1>=a&&(i!==c&&(s=void 0,u=[t]),n.rejectWith(s,u))}};e?d():(gt.Deferred.getStackHook&&(d.stackTrace=gt.Deferred.getStackHook()),t.setTimeout(d))}}var a=0;return gt.Deferred(function(t){n[0][3].add(o(0,t,gt.isFunction(r)?r:l,t.notifyWith)),n[1][3].add(o(0,t,gt.isFunction(e)?e:l)),n[2][3].add(o(0,t,gt.isFunction(i)?i:c))}).promise()},promise:function(t){return null!=t?gt.extend(t,r):r}},o={};return gt.each(n,function(t,e){var a=e[2],s=e[5];r[e[1]]=a.add,s&&a.add(function(){i=s},n[3-t][2].disable,n[0][2].lock),a.add(e[3].fire),o[e[0]]=function(){return o[e[0]+"With"](this===o?void 0:this,arguments),this},o[e[0]+"With"]=a.fireWith}),r.promise(o),e&&e.call(o,o),o},when:function(t){var e=arguments.length,n=e,i=Array(n),r=rt.call(arguments),o=gt.Deferred(),a=function(t){return function(n){i[t]=this,r[t]=arguments.length>1?rt.call(arguments):n,--e||o.resolveWith(i,r)}};if(e<=1&&(u(t,o.done(a(n)).resolve,o.reject,!e),"pending"===o.state()||gt.isFunction(r[n]&&r[n].then)))return o.then();for(;n--;)u(r[n],a(n),o.reject);return o.promise()}});var Nt=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;gt.Deferred.exceptionHook=function(e,n){t.console&&t.console.warn&&e&&Nt.test(e.name)&&t.console.warn("jQuery.Deferred exception: "+e.message,e.stack,n)},gt.readyException=function(e){t.setTimeout(function(){throw e})};var Ot=gt.Deferred();gt.fn.ready=function(t){return Ot.then(t).catch(function(t){gt.readyException(t)}),this},gt.extend({isReady:!1,readyWait:1,ready:function(t){(t===!0?--gt.readyWait:gt.isReady)||(gt.isReady=!0,t!==!0&&--gt.readyWait>0||Ot.resolveWith(nt,[gt]))}}),gt.ready.then=Ot.then,"complete"===nt.readyState||"loading"!==nt.readyState&&!nt.documentElement.doScroll?t.setTimeout(gt.ready):(nt.addEventListener("DOMContentLoaded",h),t.addEventListener("load",h));var Rt=function(t,e,n,i,r,o,a){var s=0,l=t.length,c=null==n;if("object"===gt.type(n)){r=!0;for(s in n)Rt(t,e,s,n[s],!0,o,a)}else if(void 0!==i&&(r=!0,gt.isFunction(i)||(a=!0),c&&(a?(e.call(t,i),e=null):(c=e,e=function(t,e,n){return c.call(gt(t),n)})),e))for(;s<l;s++)e(t[s],n,a?i:i.call(t[s],s,e(t[s],n)));return r?t:c?e.call(t):l?e(t[0],n):o},Dt=function(t){return 1===t.nodeType||9===t.nodeType||!+t.nodeType};d.uid=1,d.prototype={cache:function(t){var e=t[this.expando];return e||(e={},Dt(t)&&(t.nodeType?t[this.expando]=e:Object.defineProperty(t,this.expando,{value:e,configurable:!0}))),e},set:function(t,e,n){var i,r=this.cache(t);if("string"==typeof e)r[gt.camelCase(e)]=n;else for(i in e)r[gt.camelCase(i)]=e[i];return r},get:function(t,e){return void 0===e?this.cache(t):t[this.expando]&&t[this.expando][gt.camelCase(e)]},access:function(t,e,n){return void 0===e||e&&"string"==typeof e&&void 0===n?this.get(t,e):(this.set(t,e,n),void 0!==n?n:e)},remove:function(t,e){var n,i=t[this.expando];if(void 0!==i){if(void 0!==e){Array.isArray(e)?e=e.map(gt.camelCase):(e=gt.camelCase(e),e=e in i?[e]:e.match(Pt)||[]),n=e.length;for(;n--;)delete i[e[n]]}(void 0===e||gt.isEmptyObject(i))&&(t.nodeType?t[this.expando]=void 0:delete t[this.expando])}},hasData:function(t){var e=t[this.expando];return void 0!==e&&!gt.isEmptyObject(e)}};var It=new d,jt=new d,Ht=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Vt=/[A-Z]/g;gt.extend({hasData:function(t){return jt.hasData(t)||It.hasData(t)},data:function(t,e,n){return jt.access(t,e,n)},removeData:function(t,e){jt.remove(t,e)},_data:function(t,e,n){return It.access(t,e,n)},_removeData:function(t,e){It.remove(t,e)}}),gt.fn.extend({data:function(t,e){var n,i,r,o=this[0],a=o&&o.attributes;if(void 0===t){if(this.length&&(r=jt.get(o),1===o.nodeType&&!It.get(o,"hasDataAttrs"))){for(n=a.length;n--;)a[n]&&(i=a[n].name,0===i.indexOf("data-")&&(i=gt.camelCase(i.slice(5)),p(o,i,r[i])));It.set(o,"hasDataAttrs",!0)}return r}return"object"==typeof t?this.each(function(){jt.set(this,t)}):Rt(this,function(e){var n;if(o&&void 0===e){if(n=jt.get(o,t),void 0!==n)return n;if(n=p(o,t),void 0!==n)return n}else this.each(function(){jt.set(this,t,e)})},null,e,arguments.length>1,null,!0)},removeData:function(t){return this.each(function(){jt.remove(this,t)})}}),gt.extend({queue:function(t,e,n){var i;if(t)return e=(e||"fx")+"queue",i=It.get(t,e),n&&(!i||Array.isArray(n)?i=It.access(t,e,gt.makeArray(n)):i.push(n)),i||[]},dequeue:function(t,e){e=e||"fx";var n=gt.queue(t,e),i=n.length,r=n.shift(),o=gt._queueHooks(t,e),a=function(){gt.dequeue(t,e)};"inprogress"===r&&(r=n.shift(),i--),r&&("fx"===e&&n.unshift("inprogress"),delete o.stop,r.call(t,a,o)),!i&&o&&o.empty.fire()},_queueHooks:function(t,e){var n=e+"queueHooks";return It.get(t,n)||It.access(t,n,{empty:gt.Callbacks("once memory").add(function(){It.remove(t,[e+"queue",n])})})}}),gt.fn.extend({queue:function(t,e){var n=2;return"string"!=typeof t&&(e=t,t="fx",n--),arguments.length<n?gt.queue(this[0],t):void 0===e?this:this.each(function(){var n=gt.queue(this,t,e);gt._queueHooks(this,t),"fx"===t&&"inprogress"!==n[0]&&gt.dequeue(this,t)})},dequeue:function(t){return this.each(function(){gt.dequeue(this,t)})},clearQueue:function(t){return this.queue(t||"fx",[])},promise:function(t,e){var n,i=1,r=gt.Deferred(),o=this,a=this.length,s=function(){--i||r.resolveWith(o,[o])};for("string"!=typeof t&&(e=t,t=void 0),t=t||"fx";a--;)n=It.get(o[a],t+"queueHooks"),n&&n.empty&&(i++,n.empty.add(s));return s(),r.promise(e)}});var Ft=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,zt=new RegExp("^(?:([+-])=|)("+Ft+")([a-z%]*)$","i"),qt=["Top","Right","Bottom","Left"],Gt=function(t,e){return t=e||t,"none"===t.style.display||""===t.style.display&&gt.contains(t.ownerDocument,t)&&"none"===gt.css(t,"display")},Bt=function(t,e,n,i){var r,o,a={};for(o in e)a[o]=t.style[o],t.style[o]=e[o];r=n.apply(t,i||[]);for(o in e)t.style[o]=a[o];return r},$t={};gt.fn.extend({show:function(){return v(this,!0)},hide:function(){return v(this)},toggle:function(t){return"boolean"==typeof t?t?this.show():this.hide():this.each(function(){Gt(this)?gt(this).show():gt(this).hide()})}});var Wt=/^(?:checkbox|radio)$/i,Ut=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,Xt=/^$|\/(?:java|ecma)script/i,Yt={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};Yt.optgroup=Yt.option,Yt.tbody=Yt.tfoot=Yt.colgroup=Yt.caption=Yt.thead,Yt.th=Yt.td;var Qt=/<|&#?\w+;/;!function(){var t=nt.createDocumentFragment(),e=t.appendChild(nt.createElement("div")),n=nt.createElement("input");n.setAttribute("type","radio"),n.setAttribute("checked","checked"),n.setAttribute("name","t"),e.appendChild(n),ft.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="<textarea>x</textarea>",ft.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var Zt=nt.documentElement,Kt=/^key/,Jt=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,te=/^([^.]*)(?:\.(.+)|)/;gt.event={global:{},add:function(t,e,n,i,r){var o,a,s,l,c,u,h,d,f,p,g,m=It.get(t);if(m)for(n.handler&&(o=n,n=o.handler,r=o.selector),r&&gt.find.matchesSelector(Zt,r),n.guid||(n.guid=gt.guid++),(l=m.events)||(l=m.events={}),(a=m.handle)||(a=m.handle=function(e){return"undefined"!=typeof gt&&gt.event.triggered!==e.type?gt.event.dispatch.apply(t,arguments):void 0}),e=(e||"").match(Pt)||[""],c=e.length;c--;)s=te.exec(e[c])||[],f=g=s[1],p=(s[2]||"").split(".").sort(),f&&(h=gt.event.special[f]||{},f=(r?h.delegateType:h.bindType)||f,h=gt.event.special[f]||{},u=gt.extend({type:f,origType:g,data:i,handler:n,guid:n.guid,selector:r,needsContext:r&&gt.expr.match.needsContext.test(r),namespace:p.join(".")},o),(d=l[f])||(d=l[f]=[],d.delegateCount=0,h.setup&&h.setup.call(t,i,p,a)!==!1||t.addEventListener&&t.addEventListener(f,a)),h.add&&(h.add.call(t,u),u.handler.guid||(u.handler.guid=n.guid)),r?d.splice(d.delegateCount++,0,u):d.push(u),gt.event.global[f]=!0)},remove:function(t,e,n,i,r){var o,a,s,l,c,u,h,d,f,p,g,m=It.hasData(t)&&It.get(t);if(m&&(l=m.events)){for(e=(e||"").match(Pt)||[""],c=e.length;c--;)if(s=te.exec(e[c])||[],f=g=s[1],p=(s[2]||"").split(".").sort(),f){for(h=gt.event.special[f]||{},f=(i?h.delegateType:h.bindType)||f,d=l[f]||[],s=s[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=d.length;o--;)u=d[o],!r&&g!==u.origType||n&&n.guid!==u.guid||s&&!s.test(u.namespace)||i&&i!==u.selector&&("**"!==i||!u.selector)||(d.splice(o,1),u.selector&&d.delegateCount--,h.remove&&h.remove.call(t,u));a&&!d.length&&(h.teardown&&h.teardown.call(t,p,m.handle)!==!1||gt.removeEvent(t,f,m.handle),delete l[f])}else for(f in l)gt.event.remove(t,f+e[c],n,i,!0);gt.isEmptyObject(l)&&It.remove(t,"handle events")}},dispatch:function(t){var e,n,i,r,o,a,s=gt.event.fix(t),l=new Array(arguments.length),c=(It.get(this,"events")||{})[s.type]||[],u=gt.event.special[s.type]||{};for(l[0]=s,e=1;e<arguments.length;e++)l[e]=arguments[e];if(s.delegateTarget=this,!u.preDispatch||u.preDispatch.call(this,s)!==!1){for(a=gt.event.handlers.call(this,s,c),e=0;(r=a[e++])&&!s.isPropagationStopped();)for(s.currentTarget=r.elem,n=0;(o=r.handlers[n++])&&!s.isImmediatePropagationStopped();)s.rnamespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,i=((gt.event.special[o.origType]||{}).handle||o.handler).apply(r.elem,l),void 0!==i&&(s.result=i)===!1&&(s.preventDefault(),s.stopPropagation()));return u.postDispatch&&u.postDispatch.call(this,s),s.result}},handlers:function(t,e){var n,i,r,o,a,s=[],l=e.delegateCount,c=t.target;if(l&&c.nodeType&&!("click"===t.type&&t.button>=1))for(;c!==this;c=c.parentNode||this)if(1===c.nodeType&&("click"!==t.type||c.disabled!==!0)){for(o=[],a={},n=0;n<l;n++)i=e[n],r=i.selector+" ",void 0===a[r]&&(a[r]=i.needsContext?gt(r,this).index(c)>-1:gt.find(r,this,null,[c]).length),a[r]&&o.push(i);o.length&&s.push({elem:c,handlers:o})}return c=this,l<e.length&&s.push({elem:c,handlers:e.slice(l)}),s},addProp:function(t,e){Object.defineProperty(gt.Event.prototype,t,{enumerable:!0,configurable:!0,get:gt.isFunction(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(t){return t[gt.expando]?t:new gt.Event(t)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==S()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===S()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&r(this,"input"))return this.click(),!1},_default:function(t){return r(t.target,"a")}},beforeunload:{postDispatch:function(t){void 0!==t.result&&t.originalEvent&&(t.originalEvent.returnValue=t.result)}}}},gt.removeEvent=function(t,e,n){t.removeEventListener&&t.removeEventListener(e,n)},gt.Event=function(t,e){return this instanceof gt.Event?(t&&t.type?(this.originalEvent=t,this.type=t.type,this.isDefaultPrevented=t.defaultPrevented||void 0===t.defaultPrevented&&t.returnValue===!1?_:w,this.target=t.target&&3===t.target.nodeType?t.target.parentNode:t.target,this.currentTarget=t.currentTarget,this.relatedTarget=t.relatedTarget):this.type=t,e&&gt.extend(this,e),this.timeStamp=t&&t.timeStamp||gt.now(),void(this[gt.expando]=!0)):new gt.Event(t,e)},gt.Event.prototype={constructor:gt.Event,isDefaultPrevented:w,isPropagationStopped:w,isImmediatePropagationStopped:w,isSimulated:!1,preventDefault:function(){var t=this.originalEvent;this.isDefaultPrevented=_,t&&!this.isSimulated&&t.preventDefault()},stopPropagation:function(){var t=this.originalEvent;this.isPropagationStopped=_,t&&!this.isSimulated&&t.stopPropagation()},stopImmediatePropagation:function(){var t=this.originalEvent;this.isImmediatePropagationStopped=_,t&&!this.isSimulated&&t.stopImmediatePropagation(),this.stopPropagation()}},gt.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,char:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(t){var e=t.button;return null==t.which&&Kt.test(t.type)?null!=t.charCode?t.charCode:t.keyCode:!t.which&&void 0!==e&&Jt.test(t.type)?1&e?1:2&e?3:4&e?2:0:t.which}},gt.event.addProp),gt.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(t,e){gt.event.special[t]={delegateType:e,bindType:e,handle:function(t){var n,i=this,r=t.relatedTarget,o=t.handleObj;return r&&(r===i||gt.contains(i,r))||(t.type=o.origType,n=o.handler.apply(this,arguments),t.type=e),n}}}),gt.fn.extend({on:function(t,e,n,i){return C(this,t,e,n,i)},one:function(t,e,n,i){return C(this,t,e,n,i,1)},off:function(t,e,n){var i,r;if(t&&t.preventDefault&&t.handleObj)return i=t.handleObj,gt(t.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof t){for(r in t)this.off(r,e,t[r]);return this}return e!==!1&&"function"!=typeof e||(n=e,e=void 0),n===!1&&(n=w),this.each(function(){gt.event.remove(this,t,n,e)})}});var ee=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,ne=/<script|<style|<link/i,ie=/checked\s*(?:[^=]|=\s*.checked.)/i,re=/^true\/(.*)/,oe=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;gt.extend({htmlPrefilter:function(t){return t.replace(ee,"<$1></$2>")},clone:function(t,e,n){var i,r,o,a,s=t.cloneNode(!0),l=gt.contains(t.ownerDocument,t);if(!(ft.noCloneChecked||1!==t.nodeType&&11!==t.nodeType||gt.isXMLDoc(t)))for(a=y(s),o=y(t),i=0,r=o.length;i<r;i++)L(o[i],a[i]);if(e)if(n)for(o=o||y(t),a=a||y(s),i=0,r=o.length;i<r;i++)M(o[i],a[i]);else M(t,s);return a=y(s,"script"),a.length>0&&x(a,!l&&y(t,"script")),s},cleanData:function(t){for(var e,n,i,r=gt.event.special,o=0;void 0!==(n=t[o]);o++)if(Dt(n)){if(e=n[It.expando]){if(e.events)for(i in e.events)r[i]?gt.event.remove(n,i):gt.removeEvent(n,i,e.handle);n[It.expando]=void 0}n[jt.expando]&&(n[jt.expando]=void 0)}}}),gt.fn.extend({detach:function(t){return P(this,t,!0)},remove:function(t){return P(this,t)},text:function(t){return Rt(this,function(t){return void 0===t?gt.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=t)})},null,t,arguments.length)},append:function(){return E(this,arguments,function(t){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var e=T(this,t);e.appendChild(t)}})},prepend:function(){return E(this,arguments,function(t){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var e=T(this,t);e.insertBefore(t,e.firstChild)}})},before:function(){return E(this,arguments,function(t){this.parentNode&&this.parentNode.insertBefore(t,this)})},after:function(){return E(this,arguments,function(t){this.parentNode&&this.parentNode.insertBefore(t,this.nextSibling)})},empty:function(){for(var t,e=0;null!=(t=this[e]);e++)1===t.nodeType&&(gt.cleanData(y(t,!1)),t.textContent="");return this},clone:function(t,e){return t=null!=t&&t,e=null==e?t:e,this.map(function(){return gt.clone(this,t,e)})},html:function(t){return Rt(this,function(t){var e=this[0]||{},n=0,i=this.length;if(void 0===t&&1===e.nodeType)return e.innerHTML;if("string"==typeof t&&!ne.test(t)&&!Yt[(Ut.exec(t)||["",""])[1].toLowerCase()]){t=gt.htmlPrefilter(t);try{for(;n<i;n++)e=this[n]||{},1===e.nodeType&&(gt.cleanData(y(e,!1)),e.innerHTML=t);e=0}catch(t){}}e&&this.empty().append(t)},null,t,arguments.length)},replaceWith:function(){var t=[];return E(this,arguments,function(e){var n=this.parentNode;gt.inArray(this,t)<0&&(gt.cleanData(y(this)),n&&n.replaceChild(e,this))},t)}}),gt.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(t,e){gt.fn[t]=function(t){for(var n,i=[],r=gt(t),o=r.length-1,a=0;a<=o;a++)n=a===o?this:this.clone(!0),gt(r[a])[e](n),at.apply(i,n.get());return this.pushStack(i)}});var ae=/^margin/,se=new RegExp("^("+Ft+")(?!px)[a-z%]+$","i"),le=function(e){var n=e.ownerDocument.defaultView;return n&&n.opener||(n=t),n.getComputedStyle(e)};!function(){function e(){if(s){s.style.cssText="box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",s.innerHTML="",Zt.appendChild(a);var e=t.getComputedStyle(s);n="1%"!==e.top,o="2px"===e.marginLeft,i="4px"===e.width,s.style.marginRight="50%",r="4px"===e.marginRight,Zt.removeChild(a),s=null}}var n,i,r,o,a=nt.createElement("div"),s=nt.createElement("div");s.style&&(s.style.backgroundClip="content-box",s.cloneNode(!0).style.backgroundClip="",ft.clearCloneStyle="content-box"===s.style.backgroundClip,a.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",a.appendChild(s),gt.extend(ft,{pixelPosition:function(){return e(),n},boxSizingReliable:function(){return e(),i},pixelMarginRight:function(){return e(),r},reliableMarginLeft:function(){return e(),o}}))}();var ce=/^(none|table(?!-c[ea]).+)/,ue=/^--/,he={position:"absolute",visibility:"hidden",display:"block"},de={letterSpacing:"0",fontWeight:"400"},fe=["Webkit","Moz","ms"],pe=nt.createElement("div").style;gt.extend({cssHooks:{opacity:{get:function(t,e){if(e){var n=N(t,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{float:"cssFloat"},style:function(t,e,n,i){if(t&&3!==t.nodeType&&8!==t.nodeType&&t.style){var r,o,a,s=gt.camelCase(e),l=ue.test(e),c=t.style;return l||(e=D(s)),a=gt.cssHooks[e]||gt.cssHooks[s],void 0===n?a&&"get"in a&&void 0!==(r=a.get(t,!1,i))?r:c[e]:(o=typeof n,"string"===o&&(r=zt.exec(n))&&r[1]&&(n=g(t,e,r),o="number"),void(null!=n&&n===n&&("number"===o&&(n+=r&&r[3]||(gt.cssNumber[s]?"":"px")),ft.clearCloneStyle||""!==n||0!==e.indexOf("background")||(c[e]="inherit"),a&&"set"in a&&void 0===(n=a.set(t,n,i))||(l?c.setProperty(e,n):c[e]=n))))}},css:function(t,e,n,i){var r,o,a,s=gt.camelCase(e),l=ue.test(e);return l||(e=D(s)),a=gt.cssHooks[e]||gt.cssHooks[s],a&&"get"in a&&(r=a.get(t,!0,n)),void 0===r&&(r=N(t,e,i)),"normal"===r&&e in de&&(r=de[e]),""===n||n?(o=parseFloat(r),n===!0||isFinite(o)?o||0:r):r}}),gt.each(["height","width"],function(t,e){gt.cssHooks[e]={get:function(t,n,i){if(n)return!ce.test(gt.css(t,"display"))||t.getClientRects().length&&t.getBoundingClientRect().width?H(t,e,i):Bt(t,he,function(){return H(t,e,i)})},set:function(t,n,i){var r,o=i&&le(t),a=i&&j(t,e,i,"border-box"===gt.css(t,"boxSizing",!1,o),o);return a&&(r=zt.exec(n))&&"px"!==(r[3]||"px")&&(t.style[e]=n,n=gt.css(t,e)),I(t,n,a)}}}),gt.cssHooks.marginLeft=O(ft.reliableMarginLeft,function(t,e){if(e)return(parseFloat(N(t,"marginLeft"))||t.getBoundingClientRect().left-Bt(t,{marginLeft:0},function(){return t.getBoundingClientRect().left}))+"px"}),gt.each({margin:"",padding:"",border:"Width"},function(t,e){gt.cssHooks[t+e]={expand:function(n){for(var i=0,r={},o="string"==typeof n?n.split(" "):[n];i<4;i++)r[t+qt[i]+e]=o[i]||o[i-2]||o[0];return r}},ae.test(t)||(gt.cssHooks[t+e].set=I)}),gt.fn.extend({css:function(t,e){return Rt(this,function(t,e,n){var i,r,o={},a=0;if(Array.isArray(e)){for(i=le(t),r=e.length;a<r;a++)o[e[a]]=gt.css(t,e[a],!1,i);return o}return void 0!==n?gt.style(t,e,n):gt.css(t,e)},t,e,arguments.length>1)}}),gt.Tween=V,V.prototype={constructor:V,init:function(t,e,n,i,r,o){this.elem=t,this.prop=n,this.easing=r||gt.easing._default,this.options=e,this.start=this.now=this.cur(),this.end=i,this.unit=o||(gt.cssNumber[n]?"":"px")},cur:function(){var t=V.propHooks[this.prop];return t&&t.get?t.get(this):V.propHooks._default.get(this)},run:function(t){var e,n=V.propHooks[this.prop];return this.options.duration?this.pos=e=gt.easing[this.easing](t,this.options.duration*t,0,1,this.options.duration):this.pos=e=t,this.now=(this.end-this.start)*e+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):V.propHooks._default.set(this),this}},V.prototype.init.prototype=V.prototype,V.propHooks={_default:{get:function(t){var e;return 1!==t.elem.nodeType||null!=t.elem[t.prop]&&null==t.elem.style[t.prop]?t.elem[t.prop]:(e=gt.css(t.elem,t.prop,""),e&&"auto"!==e?e:0)},set:function(t){gt.fx.step[t.prop]?gt.fx.step[t.prop](t):1!==t.elem.nodeType||null==t.elem.style[gt.cssProps[t.prop]]&&!gt.cssHooks[t.prop]?t.elem[t.prop]=t.now:gt.style(t.elem,t.prop,t.now+t.unit)}}},V.propHooks.scrollTop=V.propHooks.scrollLeft={set:function(t){t.elem.nodeType&&t.elem.parentNode&&(t.elem[t.prop]=t.now)}},gt.easing={linear:function(t){return t},swing:function(t){return.5-Math.cos(t*Math.PI)/2},_default:"swing"},gt.fx=V.prototype.init,gt.fx.step={};var ge,me,ve=/^(?:toggle|show|hide)$/,ye=/queueHooks$/;gt.Animation=gt.extend(W,{tweeners:{"*":[function(t,e){var n=this.createTween(t,e);return g(n.elem,t,zt.exec(e),n),n}]},tweener:function(t,e){gt.isFunction(t)?(e=t,t=["*"]):t=t.match(Pt);for(var n,i=0,r=t.length;i<r;i++)n=t[i],W.tweeners[n]=W.tweeners[n]||[],W.tweeners[n].unshift(e)},prefilters:[B],prefilter:function(t,e){e?W.prefilters.unshift(t):W.prefilters.push(t)}}),gt.speed=function(t,e,n){var i=t&&"object"==typeof t?gt.extend({},t):{complete:n||!n&&e||gt.isFunction(t)&&t,duration:t,easing:n&&e||e&&!gt.isFunction(e)&&e};return gt.fx.off?i.duration=0:"number"!=typeof i.duration&&(i.duration in gt.fx.speeds?i.duration=gt.fx.speeds[i.duration]:i.duration=gt.fx.speeds._default),null!=i.queue&&i.queue!==!0||(i.queue="fx"),i.old=i.complete,i.complete=function(){gt.isFunction(i.old)&&i.old.call(this),i.queue&&gt.dequeue(this,i.queue)},i},gt.fn.extend({fadeTo:function(t,e,n,i){return this.filter(Gt).css("opacity",0).show().end().animate({opacity:e},t,n,i)},animate:function(t,e,n,i){var r=gt.isEmptyObject(t),o=gt.speed(e,n,i),a=function(){var e=W(this,gt.extend({},t),o);(r||It.get(this,"finish"))&&e.stop(!0)};return a.finish=a,r||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(t,e,n){var i=function(t){var e=t.stop;delete t.stop,e(n)};return"string"!=typeof t&&(n=e,e=t,t=void 0),e&&t!==!1&&this.queue(t||"fx",[]),this.each(function(){var e=!0,r=null!=t&&t+"queueHooks",o=gt.timers,a=It.get(this);if(r)a[r]&&a[r].stop&&i(a[r]);else for(r in a)a[r]&&a[r].stop&&ye.test(r)&&i(a[r]);
-for(r=o.length;r--;)o[r].elem!==this||null!=t&&o[r].queue!==t||(o[r].anim.stop(n),e=!1,o.splice(r,1));!e&&n||gt.dequeue(this,t)})},finish:function(t){return t!==!1&&(t=t||"fx"),this.each(function(){var e,n=It.get(this),i=n[t+"queue"],r=n[t+"queueHooks"],o=gt.timers,a=i?i.length:0;for(n.finish=!0,gt.queue(this,t,[]),r&&r.stop&&r.stop.call(this,!0),e=o.length;e--;)o[e].elem===this&&o[e].queue===t&&(o[e].anim.stop(!0),o.splice(e,1));for(e=0;e<a;e++)i[e]&&i[e].finish&&i[e].finish.call(this);delete n.finish})}}),gt.each(["toggle","show","hide"],function(t,e){var n=gt.fn[e];gt.fn[e]=function(t,i,r){return null==t||"boolean"==typeof t?n.apply(this,arguments):this.animate(q(e,!0),t,i,r)}}),gt.each({slideDown:q("show"),slideUp:q("hide"),slideToggle:q("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(t,e){gt.fn[t]=function(t,n,i){return this.animate(e,t,n,i)}}),gt.timers=[],gt.fx.tick=function(){var t,e=0,n=gt.timers;for(ge=gt.now();e<n.length;e++)t=n[e],t()||n[e]!==t||n.splice(e--,1);n.length||gt.fx.stop(),ge=void 0},gt.fx.timer=function(t){gt.timers.push(t),gt.fx.start()},gt.fx.interval=13,gt.fx.start=function(){me||(me=!0,F())},gt.fx.stop=function(){me=null},gt.fx.speeds={slow:600,fast:200,_default:400},gt.fn.delay=function(e,n){return e=gt.fx?gt.fx.speeds[e]||e:e,n=n||"fx",this.queue(n,function(n,i){var r=t.setTimeout(n,e);i.stop=function(){t.clearTimeout(r)}})},function(){var t=nt.createElement("input"),e=nt.createElement("select"),n=e.appendChild(nt.createElement("option"));t.type="checkbox",ft.checkOn=""!==t.value,ft.optSelected=n.selected,t=nt.createElement("input"),t.value="t",t.type="radio",ft.radioValue="t"===t.value}();var xe,be=gt.expr.attrHandle;gt.fn.extend({attr:function(t,e){return Rt(this,gt.attr,t,e,arguments.length>1)},removeAttr:function(t){return this.each(function(){gt.removeAttr(this,t)})}}),gt.extend({attr:function(t,e,n){var i,r,o=t.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof t.getAttribute?gt.prop(t,e,n):(1===o&&gt.isXMLDoc(t)||(r=gt.attrHooks[e.toLowerCase()]||(gt.expr.match.bool.test(e)?xe:void 0)),void 0!==n?null===n?void gt.removeAttr(t,e):r&&"set"in r&&void 0!==(i=r.set(t,n,e))?i:(t.setAttribute(e,n+""),n):r&&"get"in r&&null!==(i=r.get(t,e))?i:(i=gt.find.attr(t,e),null==i?void 0:i))},attrHooks:{type:{set:function(t,e){if(!ft.radioValue&&"radio"===e&&r(t,"input")){var n=t.value;return t.setAttribute("type",e),n&&(t.value=n),e}}}},removeAttr:function(t,e){var n,i=0,r=e&&e.match(Pt);if(r&&1===t.nodeType)for(;n=r[i++];)t.removeAttribute(n)}}),xe={set:function(t,e,n){return e===!1?gt.removeAttr(t,n):t.setAttribute(n,n),n}},gt.each(gt.expr.match.bool.source.match(/\w+/g),function(t,e){var n=be[e]||gt.find.attr;be[e]=function(t,e,i){var r,o,a=e.toLowerCase();return i||(o=be[a],be[a]=r,r=null!=n(t,e,i)?a:null,be[a]=o),r}});var _e=/^(?:input|select|textarea|button)$/i,we=/^(?:a|area)$/i;gt.fn.extend({prop:function(t,e){return Rt(this,gt.prop,t,e,arguments.length>1)},removeProp:function(t){return this.each(function(){delete this[gt.propFix[t]||t]})}}),gt.extend({prop:function(t,e,n){var i,r,o=t.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&gt.isXMLDoc(t)||(e=gt.propFix[e]||e,r=gt.propHooks[e]),void 0!==n?r&&"set"in r&&void 0!==(i=r.set(t,n,e))?i:t[e]=n:r&&"get"in r&&null!==(i=r.get(t,e))?i:t[e]},propHooks:{tabIndex:{get:function(t){var e=gt.find.attr(t,"tabindex");return e?parseInt(e,10):_e.test(t.nodeName)||we.test(t.nodeName)&&t.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),ft.optSelected||(gt.propHooks.selected={get:function(t){var e=t.parentNode;return e&&e.parentNode&&e.parentNode.selectedIndex,null},set:function(t){var e=t.parentNode;e&&(e.selectedIndex,e.parentNode&&e.parentNode.selectedIndex)}}),gt.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){gt.propFix[this.toLowerCase()]=this}),gt.fn.extend({addClass:function(t){var e,n,i,r,o,a,s,l=0;if(gt.isFunction(t))return this.each(function(e){gt(this).addClass(t.call(this,e,X(this)))});if("string"==typeof t&&t)for(e=t.match(Pt)||[];n=this[l++];)if(r=X(n),i=1===n.nodeType&&" "+U(r)+" "){for(a=0;o=e[a++];)i.indexOf(" "+o+" ")<0&&(i+=o+" ");s=U(i),r!==s&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,i,r,o,a,s,l=0;if(gt.isFunction(t))return this.each(function(e){gt(this).removeClass(t.call(this,e,X(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof t&&t)for(e=t.match(Pt)||[];n=this[l++];)if(r=X(n),i=1===n.nodeType&&" "+U(r)+" "){for(a=0;o=e[a++];)for(;i.indexOf(" "+o+" ")>-1;)i=i.replace(" "+o+" "," ");s=U(i),r!==s&&n.setAttribute("class",s)}return this},toggleClass:function(t,e){var n=typeof t;return"boolean"==typeof e&&"string"===n?e?this.addClass(t):this.removeClass(t):gt.isFunction(t)?this.each(function(n){gt(this).toggleClass(t.call(this,n,X(this),e),e)}):this.each(function(){var e,i,r,o;if("string"===n)for(i=0,r=gt(this),o=t.match(Pt)||[];e=o[i++];)r.hasClass(e)?r.removeClass(e):r.addClass(e);else void 0!==t&&"boolean"!==n||(e=X(this),e&&It.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||t===!1?"":It.get(this,"__className__")||""))})},hasClass:function(t){var e,n,i=0;for(e=" "+t+" ";n=this[i++];)if(1===n.nodeType&&(" "+U(X(n))+" ").indexOf(e)>-1)return!0;return!1}});var Se=/\r/g;gt.fn.extend({val:function(t){var e,n,i,r=this[0];return arguments.length?(i=gt.isFunction(t),this.each(function(n){var r;1===this.nodeType&&(r=i?t.call(this,n,gt(this).val()):t,null==r?r="":"number"==typeof r?r+="":Array.isArray(r)&&(r=gt.map(r,function(t){return null==t?"":t+""})),e=gt.valHooks[this.type]||gt.valHooks[this.nodeName.toLowerCase()],e&&"set"in e&&void 0!==e.set(this,r,"value")||(this.value=r))})):r?(e=gt.valHooks[r.type]||gt.valHooks[r.nodeName.toLowerCase()],e&&"get"in e&&void 0!==(n=e.get(r,"value"))?n:(n=r.value,"string"==typeof n?n.replace(Se,""):null==n?"":n)):void 0}}),gt.extend({valHooks:{option:{get:function(t){var e=gt.find.attr(t,"value");return null!=e?e:U(gt.text(t))}},select:{get:function(t){var e,n,i,o=t.options,a=t.selectedIndex,s="select-one"===t.type,l=s?null:[],c=s?a+1:o.length;for(i=a<0?c:s?a:0;i<c;i++)if(n=o[i],(n.selected||i===a)&&!n.disabled&&(!n.parentNode.disabled||!r(n.parentNode,"optgroup"))){if(e=gt(n).val(),s)return e;l.push(e)}return l},set:function(t,e){for(var n,i,r=t.options,o=gt.makeArray(e),a=r.length;a--;)i=r[a],(i.selected=gt.inArray(gt.valHooks.option.get(i),o)>-1)&&(n=!0);return n||(t.selectedIndex=-1),o}}}}),gt.each(["radio","checkbox"],function(){gt.valHooks[this]={set:function(t,e){if(Array.isArray(e))return t.checked=gt.inArray(gt(t).val(),e)>-1}},ft.checkOn||(gt.valHooks[this].get=function(t){return null===t.getAttribute("value")?"on":t.value})});var Ce=/^(?:focusinfocus|focusoutblur)$/;gt.extend(gt.event,{trigger:function(e,n,i,r){var o,a,s,l,c,u,h,d=[i||nt],f=ut.call(e,"type")?e.type:e,p=ut.call(e,"namespace")?e.namespace.split("."):[];if(a=s=i=i||nt,3!==i.nodeType&&8!==i.nodeType&&!Ce.test(f+gt.event.triggered)&&(f.indexOf(".")>-1&&(p=f.split("."),f=p.shift(),p.sort()),c=f.indexOf(":")<0&&"on"+f,e=e[gt.expando]?e:new gt.Event(f,"object"==typeof e&&e),e.isTrigger=r?2:3,e.namespace=p.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=i),n=null==n?[e]:gt.makeArray(n,[e]),h=gt.event.special[f]||{},r||!h.trigger||h.trigger.apply(i,n)!==!1)){if(!r&&!h.noBubble&&!gt.isWindow(i)){for(l=h.delegateType||f,Ce.test(l+f)||(a=a.parentNode);a;a=a.parentNode)d.push(a),s=a;s===(i.ownerDocument||nt)&&d.push(s.defaultView||s.parentWindow||t)}for(o=0;(a=d[o++])&&!e.isPropagationStopped();)e.type=o>1?l:h.bindType||f,u=(It.get(a,"events")||{})[e.type]&&It.get(a,"handle"),u&&u.apply(a,n),u=c&&a[c],u&&u.apply&&Dt(a)&&(e.result=u.apply(a,n),e.result===!1&&e.preventDefault());return e.type=f,r||e.isDefaultPrevented()||h._default&&h._default.apply(d.pop(),n)!==!1||!Dt(i)||c&&gt.isFunction(i[f])&&!gt.isWindow(i)&&(s=i[c],s&&(i[c]=null),gt.event.triggered=f,i[f](),gt.event.triggered=void 0,s&&(i[c]=s)),e.result}},simulate:function(t,e,n){var i=gt.extend(new gt.Event,n,{type:t,isSimulated:!0});gt.event.trigger(i,null,e)}}),gt.fn.extend({trigger:function(t,e){return this.each(function(){gt.event.trigger(t,e,this)})},triggerHandler:function(t,e){var n=this[0];if(n)return gt.event.trigger(t,e,n,!0)}}),gt.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(t,e){gt.fn[e]=function(t,n){return arguments.length>0?this.on(e,null,t,n):this.trigger(e)}}),gt.fn.extend({hover:function(t,e){return this.mouseenter(t).mouseleave(e||t)}}),ft.focusin="onfocusin"in t,ft.focusin||gt.each({focus:"focusin",blur:"focusout"},function(t,e){var n=function(t){gt.event.simulate(e,t.target,gt.event.fix(t))};gt.event.special[e]={setup:function(){var i=this.ownerDocument||this,r=It.access(i,e);r||i.addEventListener(t,n,!0),It.access(i,e,(r||0)+1)},teardown:function(){var i=this.ownerDocument||this,r=It.access(i,e)-1;r?It.access(i,e,r):(i.removeEventListener(t,n,!0),It.remove(i,e))}}});var Te=t.location,ke=gt.now(),Ae=/\?/;gt.parseXML=function(e){var n;if(!e||"string"!=typeof e)return null;try{n=(new t.DOMParser).parseFromString(e,"text/xml")}catch(t){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||gt.error("Invalid XML: "+e),n};var Me=/\[\]$/,Le=/\r?\n/g,Ee=/^(?:submit|button|image|reset|file)$/i,Pe=/^(?:input|select|textarea|keygen)/i;gt.param=function(t,e){var n,i=[],r=function(t,e){var n=gt.isFunction(e)?e():e;i[i.length]=encodeURIComponent(t)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(t)||t.jquery&&!gt.isPlainObject(t))gt.each(t,function(){r(this.name,this.value)});else for(n in t)Y(n,t[n],e,r);return i.join("&")},gt.fn.extend({serialize:function(){return gt.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var t=gt.prop(this,"elements");return t?gt.makeArray(t):this}).filter(function(){var t=this.type;return this.name&&!gt(this).is(":disabled")&&Pe.test(this.nodeName)&&!Ee.test(t)&&(this.checked||!Wt.test(t))}).map(function(t,e){var n=gt(this).val();return null==n?null:Array.isArray(n)?gt.map(n,function(t){return{name:e.name,value:t.replace(Le,"\r\n")}}):{name:e.name,value:n.replace(Le,"\r\n")}}).get()}});var Ne=/%20/g,Oe=/#.*$/,Re=/([?&])_=[^&]*/,De=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ie=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,je=/^(?:GET|HEAD)$/,He=/^\/\//,Ve={},Fe={},ze="*/".concat("*"),qe=nt.createElement("a");qe.href=Te.href,gt.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Te.href,type:"GET",isLocal:Ie.test(Te.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":ze,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":gt.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(t,e){return e?K(K(t,gt.ajaxSettings),e):K(gt.ajaxSettings,t)},ajaxPrefilter:Q(Ve),ajaxTransport:Q(Fe),ajax:function(e,n){function i(e,n,i,s){var c,d,f,b,_,w=n;u||(u=!0,l&&t.clearTimeout(l),r=void 0,a=s||"",S.readyState=e>0?4:0,c=e>=200&&e<300||304===e,i&&(b=J(p,S,i)),b=tt(p,b,S,c),c?(p.ifModified&&(_=S.getResponseHeader("Last-Modified"),_&&(gt.lastModified[o]=_),_=S.getResponseHeader("etag"),_&&(gt.etag[o]=_)),204===e||"HEAD"===p.type?w="nocontent":304===e?w="notmodified":(w=b.state,d=b.data,f=b.error,c=!f)):(f=w,!e&&w||(w="error",e<0&&(e=0))),S.status=e,S.statusText=(n||w)+"",c?v.resolveWith(g,[d,w,S]):v.rejectWith(g,[S,w,f]),S.statusCode(x),x=void 0,h&&m.trigger(c?"ajaxSuccess":"ajaxError",[S,p,c?d:f]),y.fireWith(g,[S,w]),h&&(m.trigger("ajaxComplete",[S,p]),--gt.active||gt.event.trigger("ajaxStop")))}"object"==typeof e&&(n=e,e=void 0),n=n||{};var r,o,a,s,l,c,u,h,d,f,p=gt.ajaxSetup({},n),g=p.context||p,m=p.context&&(g.nodeType||g.jquery)?gt(g):gt.event,v=gt.Deferred(),y=gt.Callbacks("once memory"),x=p.statusCode||{},b={},_={},w="canceled",S={readyState:0,getResponseHeader:function(t){var e;if(u){if(!s)for(s={};e=De.exec(a);)s[e[1].toLowerCase()]=e[2];e=s[t.toLowerCase()]}return null==e?null:e},getAllResponseHeaders:function(){return u?a:null},setRequestHeader:function(t,e){return null==u&&(t=_[t.toLowerCase()]=_[t.toLowerCase()]||t,b[t]=e),this},overrideMimeType:function(t){return null==u&&(p.mimeType=t),this},statusCode:function(t){var e;if(t)if(u)S.always(t[S.status]);else for(e in t)x[e]=[x[e],t[e]];return this},abort:function(t){var e=t||w;return r&&r.abort(e),i(0,e),this}};if(v.promise(S),p.url=((e||p.url||Te.href)+"").replace(He,Te.protocol+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=(p.dataType||"*").toLowerCase().match(Pt)||[""],null==p.crossDomain){c=nt.createElement("a");try{c.href=p.url,c.href=c.href,p.crossDomain=qe.protocol+"//"+qe.host!=c.protocol+"//"+c.host}catch(t){p.crossDomain=!0}}if(p.data&&p.processData&&"string"!=typeof p.data&&(p.data=gt.param(p.data,p.traditional)),Z(Ve,p,n,S),u)return S;h=gt.event&&p.global,h&&0===gt.active++&&gt.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!je.test(p.type),o=p.url.replace(Oe,""),p.hasContent?p.data&&p.processData&&0===(p.contentType||"").indexOf("application/x-www-form-urlencoded")&&(p.data=p.data.replace(Ne,"+")):(f=p.url.slice(o.length),p.data&&(o+=(Ae.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(o=o.replace(Re,"$1"),f=(Ae.test(o)?"&":"?")+"_="+ke++ +f),p.url=o+f),p.ifModified&&(gt.lastModified[o]&&S.setRequestHeader("If-Modified-Since",gt.lastModified[o]),gt.etag[o]&&S.setRequestHeader("If-None-Match",gt.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&S.setRequestHeader("Content-Type",p.contentType),S.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+ze+"; q=0.01":""):p.accepts["*"]);for(d in p.headers)S.setRequestHeader(d,p.headers[d]);if(p.beforeSend&&(p.beforeSend.call(g,S,p)===!1||u))return S.abort();if(w="abort",y.add(p.complete),S.done(p.success),S.fail(p.error),r=Z(Fe,p,n,S)){if(S.readyState=1,h&&m.trigger("ajaxSend",[S,p]),u)return S;p.async&&p.timeout>0&&(l=t.setTimeout(function(){S.abort("timeout")},p.timeout));try{u=!1,r.send(b,i)}catch(t){if(u)throw t;i(-1,t)}}else i(-1,"No Transport");return S},getJSON:function(t,e,n){return gt.get(t,e,n,"json")},getScript:function(t,e){return gt.get(t,void 0,e,"script")}}),gt.each(["get","post"],function(t,e){gt[e]=function(t,n,i,r){return gt.isFunction(n)&&(r=r||i,i=n,n=void 0),gt.ajax(gt.extend({url:t,type:e,dataType:r,data:n,success:i},gt.isPlainObject(t)&&t))}}),gt._evalUrl=function(t){return gt.ajax({url:t,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,throws:!0})},gt.fn.extend({wrapAll:function(t){var e;return this[0]&&(gt.isFunction(t)&&(t=t.call(this[0])),e=gt(t,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&e.insertBefore(this[0]),e.map(function(){for(var t=this;t.firstElementChild;)t=t.firstElementChild;return t}).append(this)),this},wrapInner:function(t){return gt.isFunction(t)?this.each(function(e){gt(this).wrapInner(t.call(this,e))}):this.each(function(){var e=gt(this),n=e.contents();n.length?n.wrapAll(t):e.append(t)})},wrap:function(t){var e=gt.isFunction(t);return this.each(function(n){gt(this).wrapAll(e?t.call(this,n):t)})},unwrap:function(t){return this.parent(t).not("body").each(function(){gt(this).replaceWith(this.childNodes)}),this}}),gt.expr.pseudos.hidden=function(t){return!gt.expr.pseudos.visible(t)},gt.expr.pseudos.visible=function(t){return!!(t.offsetWidth||t.offsetHeight||t.getClientRects().length)},gt.ajaxSettings.xhr=function(){try{return new t.XMLHttpRequest}catch(t){}};var Ge={0:200,1223:204},Be=gt.ajaxSettings.xhr();ft.cors=!!Be&&"withCredentials"in Be,ft.ajax=Be=!!Be,gt.ajaxTransport(function(e){var n,i;if(ft.cors||Be&&!e.crossDomain)return{send:function(r,o){var a,s=e.xhr();if(s.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(a in e.xhrFields)s[a]=e.xhrFields[a];e.mimeType&&s.overrideMimeType&&s.overrideMimeType(e.mimeType),e.crossDomain||r["X-Requested-With"]||(r["X-Requested-With"]="XMLHttpRequest");for(a in r)s.setRequestHeader(a,r[a]);n=function(t){return function(){n&&(n=i=s.onload=s.onerror=s.onabort=s.onreadystatechange=null,"abort"===t?s.abort():"error"===t?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(Ge[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),i=s.onerror=n("error"),void 0!==s.onabort?s.onabort=i:s.onreadystatechange=function(){4===s.readyState&&t.setTimeout(function(){n&&i()})},n=n("abort");try{s.send(e.hasContent&&e.data||null)}catch(t){if(n)throw t}},abort:function(){n&&n()}}}),gt.ajaxPrefilter(function(t){t.crossDomain&&(t.contents.script=!1)}),gt.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(t){return gt.globalEval(t),t}}}),gt.ajaxPrefilter("script",function(t){void 0===t.cache&&(t.cache=!1),t.crossDomain&&(t.type="GET")}),gt.ajaxTransport("script",function(t){if(t.crossDomain){var e,n;return{send:function(i,r){e=gt("<script>").prop({charset:t.scriptCharset,src:t.url}).on("load error",n=function(t){e.remove(),n=null,t&&r("error"===t.type?404:200,t.type)}),nt.head.appendChild(e[0])},abort:function(){n&&n()}}}});var $e=[],We=/(=)\?(?=&|$)|\?\?/;gt.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var t=$e.pop()||gt.expando+"_"+ke++;return this[t]=!0,t}}),gt.ajaxPrefilter("json jsonp",function(e,n,i){var r,o,a,s=e.jsonp!==!1&&(We.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&We.test(e.data)&&"data");if(s||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=gt.isFunction(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,s?e[s]=e[s].replace(We,"$1"+r):e.jsonp!==!1&&(e.url+=(Ae.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return a||gt.error(r+" was not called"),a[0]},e.dataTypes[0]="json",o=t[r],t[r]=function(){a=arguments},i.always(function(){void 0===o?gt(t).removeProp(r):t[r]=o,e[r]&&(e.jsonpCallback=n.jsonpCallback,$e.push(r)),a&&gt.isFunction(o)&&o(a[0]),a=o=void 0}),"script"}),ft.createHTMLDocument=function(){var t=nt.implementation.createHTMLDocument("").body;return t.innerHTML="<form></form><form></form>",2===t.childNodes.length}(),gt.parseHTML=function(t,e,n){if("string"!=typeof t)return[];"boolean"==typeof e&&(n=e,e=!1);var i,r,o;return e||(ft.createHTMLDocument?(e=nt.implementation.createHTMLDocument(""),i=e.createElement("base"),i.href=nt.location.href,e.head.appendChild(i)):e=nt),r=Ct.exec(t),o=!n&&[],r?[e.createElement(r[1])]:(r=b([t],e,o),o&&o.length&&gt(o).remove(),gt.merge([],r.childNodes))},gt.fn.load=function(t,e,n){var i,r,o,a=this,s=t.indexOf(" ");return s>-1&&(i=U(t.slice(s)),t=t.slice(0,s)),gt.isFunction(e)?(n=e,e=void 0):e&&"object"==typeof e&&(r="POST"),a.length>0&&gt.ajax({url:t,type:r||"GET",dataType:"html",data:e}).done(function(t){o=arguments,a.html(i?gt("<div>").append(gt.parseHTML(t)).find(i):t)}).always(n&&function(t,e){a.each(function(){n.apply(this,o||[t.responseText,e,t])})}),this},gt.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(t,e){gt.fn[e]=function(t){return this.on(e,t)}}),gt.expr.pseudos.animated=function(t){return gt.grep(gt.timers,function(e){return t===e.elem}).length},gt.offset={setOffset:function(t,e,n){var i,r,o,a,s,l,c,u=gt.css(t,"position"),h=gt(t),d={};"static"===u&&(t.style.position="relative"),s=h.offset(),o=gt.css(t,"top"),l=gt.css(t,"left"),c=("absolute"===u||"fixed"===u)&&(o+l).indexOf("auto")>-1,c?(i=h.position(),a=i.top,r=i.left):(a=parseFloat(o)||0,r=parseFloat(l)||0),gt.isFunction(e)&&(e=e.call(t,n,gt.extend({},s))),null!=e.top&&(d.top=e.top-s.top+a),null!=e.left&&(d.left=e.left-s.left+r),"using"in e?e.using.call(t,d):h.css(d)}},gt.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){gt.offset.setOffset(this,t,e)});var e,n,i,r,o=this[0];return o?o.getClientRects().length?(i=o.getBoundingClientRect(),e=o.ownerDocument,n=e.documentElement,r=e.defaultView,{top:i.top+r.pageYOffset-n.clientTop,left:i.left+r.pageXOffset-n.clientLeft}):{top:0,left:0}:void 0},position:function(){if(this[0]){var t,e,n=this[0],i={top:0,left:0};return"fixed"===gt.css(n,"position")?e=n.getBoundingClientRect():(t=this.offsetParent(),e=this.offset(),r(t[0],"html")||(i=t.offset()),i={top:i.top+gt.css(t[0],"borderTopWidth",!0),left:i.left+gt.css(t[0],"borderLeftWidth",!0)}),{top:e.top-i.top-gt.css(n,"marginTop",!0),left:e.left-i.left-gt.css(n,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var t=this.offsetParent;t&&"static"===gt.css(t,"position");)t=t.offsetParent;return t||Zt})}}),gt.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,e){var n="pageYOffset"===e;gt.fn[t]=function(i){return Rt(this,function(t,i,r){var o;return gt.isWindow(t)?o=t:9===t.nodeType&&(o=t.defaultView),void 0===r?o?o[e]:t[i]:void(o?o.scrollTo(n?o.pageXOffset:r,n?r:o.pageYOffset):t[i]=r)},t,i,arguments.length)}}),gt.each(["top","left"],function(t,e){gt.cssHooks[e]=O(ft.pixelPosition,function(t,n){if(n)return n=N(t,e),se.test(n)?gt(t).position()[e]+"px":n})}),gt.each({Height:"height",Width:"width"},function(t,e){gt.each({padding:"inner"+t,content:e,"":"outer"+t},function(n,i){gt.fn[i]=function(r,o){var a=arguments.length&&(n||"boolean"!=typeof r),s=n||(r===!0||o===!0?"margin":"border");return Rt(this,function(e,n,r){var o;return gt.isWindow(e)?0===i.indexOf("outer")?e["inner"+t]:e.document.documentElement["client"+t]:9===e.nodeType?(o=e.documentElement,Math.max(e.body["scroll"+t],o["scroll"+t],e.body["offset"+t],o["offset"+t],o["client"+t])):void 0===r?gt.css(e,n,s):gt.style(e,n,r,s)},e,a?r:void 0,a)}})}),gt.fn.extend({bind:function(t,e,n){return this.on(t,null,e,n)},unbind:function(t,e){return this.off(t,null,e)},delegate:function(t,e,n,i){return this.on(e,t,n,i)},undelegate:function(t,e,n){return 1===arguments.length?this.off(t,"**"):this.off(e,t||"**",n)}}),gt.holdReady=function(t){t?gt.readyWait++:gt.ready(!0)},gt.isArray=Array.isArray,gt.parseJSON=JSON.parse,gt.nodeName=r,"function"==typeof define&&define.amd&&define("jquery",[],function(){return gt});var Ue=t.jQuery,Xe=t.$;return gt.noConflict=function(e){return t.$===gt&&(t.$=Xe),e&&t.jQuery===gt&&(t.jQuery=Ue),gt},e||(t.jQuery=t.$=gt),gt}),define("config",["jquery"],function(t){function e(){if("undefined"!=typeof Storage&&window.swish.config_hash){var t;if((t=localStorage.getItem(r))&&(value=JSON.parse(t),value.hash==window.swish.config_hash))return value.config}}function n(t){"undefined"!=typeof Storage&&window.swish.config_hash&&localStorage.setItem(r,JSON.stringify({hash:window.swish.config_hash,config:t}))}var i,r="SWISHCONFIG";return i||(i=e())||t.ajax("swish_config.json",{dataType:"json",async:!1,success:function(t){i=t,n(i)},error:function(){alert("Failed to fetch configuration from server")}}),i}),define("preferences",["jquery"],function(t){function e(){var t=localStorage.getItem("notagain")||"[]";try{data=JSON.parse(t),"object"!=typeof data&&(data=[])}catch(t){data=[]}return data}var n="undefined"!=typeof Storage,i={},r={persistent:function(){return n},setNotAgain:function(t){if(n){var i=e();i.indexOf(t)<0&&(i.push(t),localStorage.setItem("notagain",JSON.stringify(i)))}},notagain:function(t){if(n){var i=e();return i.indexOf(t)>=0}return!1},broadcast:function(e,n){t(".swish-event-receiver").trigger("preference",{name:e,value:n})},setVal:function(t,e){n&&localStorage.setItem(t,JSON.stringify(e)),this.broadcast(t,e)},setDefault:function(t,e){i[t]=e},getVal:function(t){if(n){var e;if(e=localStorage.getItem(t))return value=JSON.parse(e),value}return i[t]}};return r}),define("links",["jquery","config","modal"],function(t,e,n){var i={PlDoc:function(e,n){function i(t){var e,n={};if((e=t.indexOf(":"))>0&&(n.module=t.substring(0,e),t=t.slice(e+1)),(e=t.indexOf("/"))>0&&(n.name=t.substring(0,e),"/"==t.charAt(e+1)?n.arity=parseInt(t.slice(e+2))+2:n.arity=parseInt(t.slice(e+1)),!isNaN(n.arity)))return n}if(e){var r=i(decodeURIComponent(e));if(r)return t(n.target).closest("#ajaxModal").modal("hide"),t(".swish-event-receiver").trigger("pldoc",r),n.preventDefault(),!0}return!1},runQueryLink:function(e,i){function r(t){for(var e=0;e<l.length;e++)if(l[e].toLowerCase()==t.toLowerCase())return l[e];h.push(t)}var o=e.closest(".notebook"),a=e.data("query"),s=o.find('.nb-cell[name="'+a+'"]');if(s){var l=t().prologEditor("variables",s.nbCell("text"),!0),c="",u={},h=[];t.each(e.data(),function(t,e){var n;"query"!==t&&(n=r(t))&&(""!=c&&(c+=", "),c+=n+" = ("+e+")")}),h.length>0&&n.feedback({owner:o,type:"warning",duration:3e3,html:"The variables <b>"+h.join(", ")+"</b> do not appear in query <b>"+a+"</b>"}),""!=c&&(u.bindings=c),s.nbCell("run",u)}},followLink:function(n){function r(){a=!0,n.preventDefault(),t(n.target).closest("#ajaxModal").modal("hide")}var o=t(n.target).closest("a"),a=!1;if(o.attr("href")){var s,l=e.http.locations.swish+"p/",c=e.http.locations.swish+"example/",u=o.attr("href");if(u.startsWith(l)&&!u.match(/#/))r(),file=u.slice(l.length),t(n.target).closest(".swish").swish("playFile",file);else if(o.hasClass("store"))r(),s.alert("File does not appear to come from gitty store?");else if(o.hasClass("file")||u.startsWith(c)&&!u.match(/#/))r(),t(n.target).closest(".swish").swish("playURL",{url:u});else if(o.hasClass("builtin")&&u.match(/predicate=/))a=i.PlDoc(u.split("predicate=").pop(),n);else if(u.match(/object=/))a=i.PlDoc(u.split("object=").pop(),n);else if(1==(s=t(n.target).closest("#ajaxModal")).length&&u.match(/#/)){var h,d=u.split("#").pop();1==(h=s.find("#"+d)).length&&(a=!0,n.preventDefault(),s.animate({scrollTop:h.position().top},2e3))}a||(n.preventDefault(),window.open(u,"_blank"))}else o.data("query")&&i.runQueryLink(o,n)}};return i}),function(t){function e(){for(var t=document.createElement(arguments[0]),e=1;e<arguments.length;e++){var i=arguments[e];if(null!==i&&void 0!==i)if(1===i.nodeType)t.appendChild(i);else if(""===i||i&&i.charCodeAt&&i.substr||0===i||i&&i.toExponential&&i.toFixed)t.appendChild(document.createTextNode(i));else if(1===e&&"object"==typeof i){for(var r in i)if(i.hasOwnProperty(r)){var o=i[r];if(null!==o&&void 0!==o){r=r.toLowerCase(),r=n[r]||r;var a="o"===r.charAt(0)&&"n"===r.charAt(1);a?(void 0===i.href&&"onclick"===r&&t.setAttribute("href","#"),t[r]=o):"style"===r&&t.style.setAttribute?t.style.setAttribute("cssText",o):"className"===r||"htmlFor"===r?t[r]=o:t.setAttribute(r,o)}}}else if("[object Array]"===Object.prototype.toString.call(i))for(var s=0;s<i.length;s++){var l=i[s];1===l.nodeType&&t.appendChild(l)}}return t.appendTo=function(t){return 1===t.nodeType&&1===this.nodeType&&t.appendChild(this),this},t}var n={acceptcharset:"acceptCharset",accesskey:"accessKey",allowtransparency:"allowTransparency",bgcolor:"bgColor",cellpadding:"cellPadding",cellspacing:"cellSpacing",class:"className",classname:"className",colspan:"colSpan",csstext:"style",defaultchecked:"defaultChecked",defaultselected:"defaultSelected",defaultvalue:"defaultValue",for:"htmlFor",frameborder:"frameBorder",hspace:"hSpace",htmlfor:"htmlFor",longdesc:"longDesc",maxlength:"maxLength",marginwidth:"marginWidth",marginheight:"marginHeight",noresize:"noResize",noshade:"noShade",readonly:"readOnly",rowspan:"rowSpan",tabindex:"tabIndex",valign:"vAlign",vspace:"vSpace"};e.registerElement=function(t,n){e[t]||(e[t]=function(){var i=e("div",{class:t});return n.apply(i,Array.prototype.slice.call(arguments)),i})};for(var i=["acronym","applet","basefont","big","center","dir","font","frame","frameset","noframes","strike","tt","u","xmp"],r=["a","abbr","address","area","article","aside","audio","b","base","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","command","datalist","dd","del","details","dfn","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","keygen","kbd","label","legend","li","link","map","mark","menu","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","picture","param","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","ul","var","video","wbr"].concat(i),o=function(t){return function(){return e.apply(this,[t].concat(Array.prototype.slice.call(arguments)))}},a=0;a<r.length;a++)e[r[a]]=o(r[a]);if("undefined"!=typeof module&&module.exports)module.exports=e;else{var s=t.$||{};s.el=e,t.$=s}}(this),define("laconic",["jquery"],function(){}),"undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(t){"use strict";var e=t.fn.jquery.split(" ")[0].split(".");if(e[0]<2&&e[1]<9||1==e[0]&&9==e[1]&&e[2]<1||e[0]>3)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4")}(jQuery),+function(t){"use strict";function e(){var t=document.createElement("bootstrap"),e={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var n in e)if(void 0!==t.style[n])return{end:e[n]};return!1}t.fn.emulateTransitionEnd=function(e){var n=!1,i=this;t(this).one("bsTransitionEnd",function(){n=!0});var r=function(){n||t(i).trigger(t.support.transition.end)};return setTimeout(r,e),this},t(function(){t.support.transition=e(),t.support.transition&&(t.event.special.bsTransitionEnd={bindType:t.support.transition.end,delegateType:t.support.transition.end,handle:function(e){if(t(e.target).is(this))return e.handleObj.handler.apply(this,arguments)}})})}(jQuery),+function(t){"use strict";function e(e){return this.each(function(){var n=t(this),r=n.data("bs.alert");r||n.data("bs.alert",r=new i(this)),"string"==typeof e&&r[e].call(n)})}var n='[data-dismiss="alert"]',i=function(e){t(e).on("click",n,this.close)};i.VERSION="3.3.7",i.TRANSITION_DURATION=150,i.prototype.close=function(e){function n(){a.detach().trigger("closed.bs.alert").remove()}var r=t(this),o=r.attr("data-target");o||(o=r.attr("href"),o=o&&o.replace(/.*(?=#[^\s]*$)/,""));var a=t("#"===o?[]:o);e&&e.preventDefault(),a.length||(a=r.closest(".alert")),a.trigger(e=t.Event("close.bs.alert")),e.isDefaultPrevented()||(a.removeClass("in"),t.support.transition&&a.hasClass("fade")?a.one("bsTransitionEnd",n).emulateTransitionEnd(i.TRANSITION_DURATION):n())};var r=t.fn.alert;t.fn.alert=e,t.fn.alert.Constructor=i,t.fn.alert.noConflict=function(){return t.fn.alert=r,this},t(document).on("click.bs.alert.data-api",n,i.prototype.close)}(jQuery),+function(t){"use strict";function e(e){return this.each(function(){var i=t(this),r=i.data("bs.button"),o="object"==typeof e&&e;r||i.data("bs.button",r=new n(this,o)),"toggle"==e?r.toggle():e&&r.setState(e)})}var n=function(e,i){this.$element=t(e),this.options=t.extend({},n.DEFAULTS,i),this.isLoading=!1};n.VERSION="3.3.7",n.DEFAULTS={loadingText:"loading..."},n.prototype.setState=function(e){var n="disabled",i=this.$element,r=i.is("input")?"val":"html",o=i.data();e+="Text",null==o.resetText&&i.data("resetText",i[r]()),setTimeout(t.proxy(function(){i[r](null==o[e]?this.options[e]:o[e]),"loadingText"==e?(this.isLoading=!0,
-i.addClass(n).attr(n,n).prop(n,!0)):this.isLoading&&(this.isLoading=!1,i.removeClass(n).removeAttr(n).prop(n,!1))},this),0)},n.prototype.toggle=function(){var t=!0,e=this.$element.closest('[data-toggle="buttons"]');if(e.length){var n=this.$element.find("input");"radio"==n.prop("type")?(n.prop("checked")&&(t=!1),e.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==n.prop("type")&&(n.prop("checked")!==this.$element.hasClass("active")&&(t=!1),this.$element.toggleClass("active")),n.prop("checked",this.$element.hasClass("active")),t&&n.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var i=t.fn.button;t.fn.button=e,t.fn.button.Constructor=n,t.fn.button.noConflict=function(){return t.fn.button=i,this},t(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(n){var i=t(n.target).closest(".btn");e.call(i,"toggle"),t(n.target).is('input[type="radio"], input[type="checkbox"]')||(n.preventDefault(),i.is("input,button")?i.trigger("focus"):i.find("input:visible,button:visible").first().trigger("focus"))}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(e){t(e.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(e.type))})}(jQuery),+function(t){"use strict";function e(e){return this.each(function(){var i=t(this),r=i.data("bs.carousel"),o=t.extend({},n.DEFAULTS,i.data(),"object"==typeof e&&e),a="string"==typeof e?e:o.slide;r||i.data("bs.carousel",r=new n(this,o)),"number"==typeof e?r.to(e):a?r[a]():o.interval&&r.pause().cycle()})}var n=function(e,n){this.$element=t(e),this.$indicators=this.$element.find(".carousel-indicators"),this.options=n,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",t.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",t.proxy(this.pause,this)).on("mouseleave.bs.carousel",t.proxy(this.cycle,this))};n.VERSION="3.3.7",n.TRANSITION_DURATION=600,n.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},n.prototype.keydown=function(t){if(!/input|textarea/i.test(t.target.tagName)){switch(t.which){case 37:this.prev();break;case 39:this.next();break;default:return}t.preventDefault()}},n.prototype.cycle=function(e){return e||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(t.proxy(this.next,this),this.options.interval)),this},n.prototype.getItemIndex=function(t){return this.$items=t.parent().children(".item"),this.$items.index(t||this.$active)},n.prototype.getItemForDirection=function(t,e){var n=this.getItemIndex(e),i="prev"==t&&0===n||"next"==t&&n==this.$items.length-1;if(i&&!this.options.wrap)return e;var r="prev"==t?-1:1,o=(n+r)%this.$items.length;return this.$items.eq(o)},n.prototype.to=function(t){var e=this,n=this.getItemIndex(this.$active=this.$element.find(".item.active"));if(!(t>this.$items.length-1||t<0))return this.sliding?this.$element.one("slid.bs.carousel",function(){e.to(t)}):n==t?this.pause().cycle():this.slide(t>n?"next":"prev",this.$items.eq(t))},n.prototype.pause=function(e){return e||(this.paused=!0),this.$element.find(".next, .prev").length&&t.support.transition&&(this.$element.trigger(t.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},n.prototype.next=function(){if(!this.sliding)return this.slide("next")},n.prototype.prev=function(){if(!this.sliding)return this.slide("prev")},n.prototype.slide=function(e,i){var r=this.$element.find(".item.active"),o=i||this.getItemForDirection(e,r),a=this.interval,s="next"==e?"left":"right",l=this;if(o.hasClass("active"))return this.sliding=!1;var c=o[0],u=t.Event("slide.bs.carousel",{relatedTarget:c,direction:s});if(this.$element.trigger(u),!u.isDefaultPrevented()){if(this.sliding=!0,a&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var h=t(this.$indicators.children()[this.getItemIndex(o)]);h&&h.addClass("active")}var d=t.Event("slid.bs.carousel",{relatedTarget:c,direction:s});return t.support.transition&&this.$element.hasClass("slide")?(o.addClass(e),o[0].offsetWidth,r.addClass(s),o.addClass(s),r.one("bsTransitionEnd",function(){o.removeClass([e,s].join(" ")).addClass("active"),r.removeClass(["active",s].join(" ")),l.sliding=!1,setTimeout(function(){l.$element.trigger(d)},0)}).emulateTransitionEnd(n.TRANSITION_DURATION)):(r.removeClass("active"),o.addClass("active"),this.sliding=!1,this.$element.trigger(d)),a&&this.cycle(),this}};var i=t.fn.carousel;t.fn.carousel=e,t.fn.carousel.Constructor=n,t.fn.carousel.noConflict=function(){return t.fn.carousel=i,this};var r=function(n){var i,r=t(this),o=t(r.attr("data-target")||(i=r.attr("href"))&&i.replace(/.*(?=#[^\s]+$)/,""));if(o.hasClass("carousel")){var a=t.extend({},o.data(),r.data()),s=r.attr("data-slide-to");s&&(a.interval=!1),e.call(o,a),s&&o.data("bs.carousel").to(s),n.preventDefault()}};t(document).on("click.bs.carousel.data-api","[data-slide]",r).on("click.bs.carousel.data-api","[data-slide-to]",r),t(window).on("load",function(){t('[data-ride="carousel"]').each(function(){var n=t(this);e.call(n,n.data())})})}(jQuery),+function(t){"use strict";function e(e){var n,i=e.attr("data-target")||(n=e.attr("href"))&&n.replace(/.*(?=#[^\s]+$)/,"");return t(i)}function n(e){return this.each(function(){var n=t(this),r=n.data("bs.collapse"),o=t.extend({},i.DEFAULTS,n.data(),"object"==typeof e&&e);!r&&o.toggle&&/show|hide/.test(e)&&(o.toggle=!1),r||n.data("bs.collapse",r=new i(this,o)),"string"==typeof e&&r[e]()})}var i=function(e,n){this.$element=t(e),this.options=t.extend({},i.DEFAULTS,n),this.$trigger=t('[data-toggle="collapse"][href="#'+e.id+'"],[data-toggle="collapse"][data-target="#'+e.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};i.VERSION="3.3.7",i.TRANSITION_DURATION=350,i.DEFAULTS={toggle:!0},i.prototype.dimension=function(){var t=this.$element.hasClass("width");return t?"width":"height"},i.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var e,r=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(r&&r.length&&(e=r.data("bs.collapse"),e&&e.transitioning))){var o=t.Event("show.bs.collapse");if(this.$element.trigger(o),!o.isDefaultPrevented()){r&&r.length&&(n.call(r,"hide"),e||r.data("bs.collapse",null));var a=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[a](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var s=function(){this.$element.removeClass("collapsing").addClass("collapse in")[a](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!t.support.transition)return s.call(this);var l=t.camelCase(["scroll",a].join("-"));this.$element.one("bsTransitionEnd",t.proxy(s,this)).emulateTransitionEnd(i.TRANSITION_DURATION)[a](this.$element[0][l])}}}},i.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var e=t.Event("hide.bs.collapse");if(this.$element.trigger(e),!e.isDefaultPrevented()){var n=this.dimension();this.$element[n](this.$element[n]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var r=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return t.support.transition?void this.$element[n](0).one("bsTransitionEnd",t.proxy(r,this)).emulateTransitionEnd(i.TRANSITION_DURATION):r.call(this)}}},i.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},i.prototype.getParent=function(){return t(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(t.proxy(function(n,i){var r=t(i);this.addAriaAndCollapsedClass(e(r),r)},this)).end()},i.prototype.addAriaAndCollapsedClass=function(t,e){var n=t.hasClass("in");t.attr("aria-expanded",n),e.toggleClass("collapsed",!n).attr("aria-expanded",n)};var r=t.fn.collapse;t.fn.collapse=n,t.fn.collapse.Constructor=i,t.fn.collapse.noConflict=function(){return t.fn.collapse=r,this},t(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(i){var r=t(this);r.attr("data-target")||i.preventDefault();var o=e(r),a=o.data("bs.collapse"),s=a?"toggle":r.data();n.call(o,s)})}(jQuery),+function(t){"use strict";function e(e){var n=e.attr("data-target");n||(n=e.attr("href"),n=n&&/#[A-Za-z]/.test(n)&&n.replace(/.*(?=#[^\s]*$)/,""));var i=n&&t(n);return i&&i.length?i:e.parent()}function n(n){n&&3===n.which||(t(r).remove(),t(o).each(function(){var i=t(this),r=e(i),o={relatedTarget:this};r.hasClass("open")&&(n&&"click"==n.type&&/input|textarea/i.test(n.target.tagName)&&t.contains(r[0],n.target)||(r.trigger(n=t.Event("hide.bs.dropdown",o)),n.isDefaultPrevented()||(i.attr("aria-expanded","false"),r.removeClass("open").trigger(t.Event("hidden.bs.dropdown",o)))))}))}function i(e){return this.each(function(){var n=t(this),i=n.data("bs.dropdown");i||n.data("bs.dropdown",i=new a(this)),"string"==typeof e&&i[e].call(n)})}var r=".dropdown-backdrop",o='[data-toggle="dropdown"]',a=function(e){t(e).on("click.bs.dropdown",this.toggle)};a.VERSION="3.3.7",a.prototype.toggle=function(i){var r=t(this);if(!r.is(".disabled, :disabled")){var o=e(r),a=o.hasClass("open");if(n(),!a){"ontouchstart"in document.documentElement&&!o.closest(".navbar-nav").length&&t(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(t(this)).on("click",n);var s={relatedTarget:this};if(o.trigger(i=t.Event("show.bs.dropdown",s)),i.isDefaultPrevented())return;r.trigger("focus").attr("aria-expanded","true"),o.toggleClass("open").trigger(t.Event("shown.bs.dropdown",s))}return!1}},a.prototype.keydown=function(n){if(/(38|40|27|32)/.test(n.which)&&!/input|textarea/i.test(n.target.tagName)){var i=t(this);if(n.preventDefault(),n.stopPropagation(),!i.is(".disabled, :disabled")){var r=e(i),a=r.hasClass("open");if(!a&&27!=n.which||a&&27==n.which)return 27==n.which&&r.find(o).trigger("focus"),i.trigger("click");var s=" li:not(.disabled):visible a",l=r.find(".dropdown-menu"+s);if(l.length){var c=l.index(n.target);38==n.which&&c>0&&c--,40==n.which&&c<l.length-1&&c++,~c||(c=0),l.eq(c).trigger("focus")}}}};var s=t.fn.dropdown;t.fn.dropdown=i,t.fn.dropdown.Constructor=a,t.fn.dropdown.noConflict=function(){return t.fn.dropdown=s,this},t(document).on("click.bs.dropdown.data-api",n).on("click.bs.dropdown.data-api",".dropdown form",function(t){t.stopPropagation()}).on("click.bs.dropdown.data-api",o,a.prototype.toggle).on("keydown.bs.dropdown.data-api",o,a.prototype.keydown).on("keydown.bs.dropdown.data-api",".dropdown-menu",a.prototype.keydown)}(jQuery),+function(t){"use strict";function e(e,i){return this.each(function(){var r=t(this),o=r.data("bs.modal"),a=t.extend({},n.DEFAULTS,r.data(),"object"==typeof e&&e);o||r.data("bs.modal",o=new n(this,a)),"string"==typeof e?o[e](i):a.show&&o.show(i)})}var n=function(e,n){this.options=n,this.$body=t(document.body),this.$element=t(e),this.$dialog=this.$element.find(".modal-dialog"),this.$backdrop=null,this.isShown=null,this.originalBodyPad=null,this.scrollbarWidth=0,this.ignoreBackdropClick=!1,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,t.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};n.VERSION="3.3.7",n.TRANSITION_DURATION=300,n.BACKDROP_TRANSITION_DURATION=150,n.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},n.prototype.toggle=function(t){return this.isShown?this.hide():this.show(t)},n.prototype.show=function(e){var i=this,r=t.Event("show.bs.modal",{relatedTarget:e});this.$element.trigger(r),this.isShown||r.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass("modal-open"),this.escape(),this.resize(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',t.proxy(this.hide,this)),this.$dialog.on("mousedown.dismiss.bs.modal",function(){i.$element.one("mouseup.dismiss.bs.modal",function(e){t(e.target).is(i.$element)&&(i.ignoreBackdropClick=!0)})}),this.backdrop(function(){var r=t.support.transition&&i.$element.hasClass("fade");i.$element.parent().length||i.$element.appendTo(i.$body),i.$element.show().scrollTop(0),i.adjustDialog(),r&&i.$element[0].offsetWidth,i.$element.addClass("in"),i.enforceFocus();var o=t.Event("shown.bs.modal",{relatedTarget:e});r?i.$dialog.one("bsTransitionEnd",function(){i.$element.trigger("focus").trigger(o)}).emulateTransitionEnd(n.TRANSITION_DURATION):i.$element.trigger("focus").trigger(o)}))},n.prototype.hide=function(e){e&&e.preventDefault(),e=t.Event("hide.bs.modal"),this.$element.trigger(e),this.isShown&&!e.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),t(document).off("focusin.bs.modal"),this.$element.removeClass("in").off("click.dismiss.bs.modal").off("mouseup.dismiss.bs.modal"),this.$dialog.off("mousedown.dismiss.bs.modal"),t.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",t.proxy(this.hideModal,this)).emulateTransitionEnd(n.TRANSITION_DURATION):this.hideModal())},n.prototype.enforceFocus=function(){t(document).off("focusin.bs.modal").on("focusin.bs.modal",t.proxy(function(t){document===t.target||this.$element[0]===t.target||this.$element.has(t.target).length||this.$element.trigger("focus")},this))},n.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",t.proxy(function(t){27==t.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},n.prototype.resize=function(){this.isShown?t(window).on("resize.bs.modal",t.proxy(this.handleUpdate,this)):t(window).off("resize.bs.modal")},n.prototype.hideModal=function(){var t=this;this.$element.hide(),this.backdrop(function(){t.$body.removeClass("modal-open"),t.resetAdjustments(),t.resetScrollbar(),t.$element.trigger("hidden.bs.modal")})},n.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},n.prototype.backdrop=function(e){var i=this,r=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var o=t.support.transition&&r;if(this.$backdrop=t(document.createElement("div")).addClass("modal-backdrop "+r).appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",t.proxy(function(t){return this.ignoreBackdropClick?void(this.ignoreBackdropClick=!1):void(t.target===t.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus():this.hide()))},this)),o&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!e)return;o?this.$backdrop.one("bsTransitionEnd",e).emulateTransitionEnd(n.BACKDROP_TRANSITION_DURATION):e()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var a=function(){i.removeBackdrop(),e&&e()};t.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",a).emulateTransitionEnd(n.BACKDROP_TRANSITION_DURATION):a()}else e&&e()},n.prototype.handleUpdate=function(){this.adjustDialog()},n.prototype.adjustDialog=function(){var t=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&t?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!t?this.scrollbarWidth:""})},n.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},n.prototype.checkScrollbar=function(){var t=window.innerWidth;if(!t){var e=document.documentElement.getBoundingClientRect();t=e.right-Math.abs(e.left)}this.bodyIsOverflowing=document.body.clientWidth<t,this.scrollbarWidth=this.measureScrollbar()},n.prototype.setScrollbar=function(){var t=parseInt(this.$body.css("padding-right")||0,10);this.originalBodyPad=document.body.style.paddingRight||"",this.bodyIsOverflowing&&this.$body.css("padding-right",t+this.scrollbarWidth)},n.prototype.resetScrollbar=function(){this.$body.css("padding-right",this.originalBodyPad)},n.prototype.measureScrollbar=function(){var t=document.createElement("div");t.className="modal-scrollbar-measure",this.$body.append(t);var e=t.offsetWidth-t.clientWidth;return this.$body[0].removeChild(t),e};var i=t.fn.modal;t.fn.modal=e,t.fn.modal.Constructor=n,t.fn.modal.noConflict=function(){return t.fn.modal=i,this},t(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(n){var i=t(this),r=i.attr("href"),o=t(i.attr("data-target")||r&&r.replace(/.*(?=#[^\s]+$)/,"")),a=o.data("bs.modal")?"toggle":t.extend({remote:!/#/.test(r)&&r},o.data(),i.data());i.is("a")&&n.preventDefault(),o.one("show.bs.modal",function(t){t.isDefaultPrevented()||o.one("hidden.bs.modal",function(){i.is(":visible")&&i.trigger("focus")})}),e.call(o,a,this)})}(jQuery),+function(t){"use strict";function e(e){return this.each(function(){var i=t(this),r=i.data("bs.tooltip"),o="object"==typeof e&&e;!r&&/destroy|hide/.test(e)||(r||i.data("bs.tooltip",r=new n(this,o)),"string"==typeof e&&r[e]())})}var n=function(t,e){this.type=null,this.options=null,this.enabled=null,this.timeout=null,this.hoverState=null,this.$element=null,this.inState=null,this.init("tooltip",t,e)};n.VERSION="3.3.7",n.TRANSITION_DURATION=150,n.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},n.prototype.init=function(e,n,i){if(this.enabled=!0,this.type=e,this.$element=t(n),this.options=this.getOptions(i),this.$viewport=this.options.viewport&&t(t.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var r=this.options.trigger.split(" "),o=r.length;o--;){var a=r[o];if("click"==a)this.$element.on("click."+this.type,this.options.selector,t.proxy(this.toggle,this));else if("manual"!=a){var s="hover"==a?"mouseenter":"focusin",l="hover"==a?"mouseleave":"focusout";this.$element.on(s+"."+this.type,this.options.selector,t.proxy(this.enter,this)),this.$element.on(l+"."+this.type,this.options.selector,t.proxy(this.leave,this))}}this.options.selector?this._options=t.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},n.prototype.getDefaults=function(){return n.DEFAULTS},n.prototype.getOptions=function(e){return e=t.extend({},this.getDefaults(),this.$element.data(),e),e.delay&&"number"==typeof e.delay&&(e.delay={show:e.delay,hide:e.delay}),e},n.prototype.getDelegateOptions=function(){var e={},n=this.getDefaults();return this._options&&t.each(this._options,function(t,i){n[t]!=i&&(e[t]=i)}),e},n.prototype.enter=function(e){var n=e instanceof this.constructor?e:t(e.currentTarget).data("bs."+this.type);return n||(n=new this.constructor(e.currentTarget,this.getDelegateOptions()),t(e.currentTarget).data("bs."+this.type,n)),e instanceof t.Event&&(n.inState["focusin"==e.type?"focus":"hover"]=!0),n.tip().hasClass("in")||"in"==n.hoverState?void(n.hoverState="in"):(clearTimeout(n.timeout),n.hoverState="in",n.options.delay&&n.options.delay.show?void(n.timeout=setTimeout(function(){"in"==n.hoverState&&n.show()},n.options.delay.show)):n.show())},n.prototype.isInStateTrue=function(){for(var t in this.inState)if(this.inState[t])return!0;return!1},n.prototype.leave=function(e){var n=e instanceof this.constructor?e:t(e.currentTarget).data("bs."+this.type);if(n||(n=new this.constructor(e.currentTarget,this.getDelegateOptions()),t(e.currentTarget).data("bs."+this.type,n)),e instanceof t.Event&&(n.inState["focusout"==e.type?"focus":"hover"]=!1),!n.isInStateTrue())return clearTimeout(n.timeout),n.hoverState="out",n.options.delay&&n.options.delay.hide?void(n.timeout=setTimeout(function(){"out"==n.hoverState&&n.hide()},n.options.delay.hide)):n.hide()},n.prototype.show=function(){var e=t.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(e);var i=t.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(e.isDefaultPrevented()||!i)return;var r=this,o=this.tip(),a=this.getUID(this.type);this.setContent(),o.attr("id",a),this.$element.attr("aria-describedby",a),this.options.animation&&o.addClass("fade");var s="function"==typeof this.options.placement?this.options.placement.call(this,o[0],this.$element[0]):this.options.placement,l=/\s?auto?\s?/i,c=l.test(s);c&&(s=s.replace(l,"")||"top"),o.detach().css({top:0,left:0,display:"block"}).addClass(s).data("bs."+this.type,this),this.options.container?o.appendTo(this.options.container):o.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var u=this.getPosition(),h=o[0].offsetWidth,d=o[0].offsetHeight;if(c){var f=s,p=this.getPosition(this.$viewport);s="bottom"==s&&u.bottom+d>p.bottom?"top":"top"==s&&u.top-d<p.top?"bottom":"right"==s&&u.right+h>p.width?"left":"left"==s&&u.left-h<p.left?"right":s,o.removeClass(f).addClass(s)}var g=this.getCalculatedOffset(s,u,h,d);this.applyPlacement(g,s);var m=function(){var t=r.hoverState;r.$element.trigger("shown.bs."+r.type),r.hoverState=null,"out"==t&&r.leave(r)};t.support.transition&&this.$tip.hasClass("fade")?o.one("bsTransitionEnd",m).emulateTransitionEnd(n.TRANSITION_DURATION):m()}},n.prototype.applyPlacement=function(e,n){var i=this.tip(),r=i[0].offsetWidth,o=i[0].offsetHeight,a=parseInt(i.css("margin-top"),10),s=parseInt(i.css("margin-left"),10);isNaN(a)&&(a=0),isNaN(s)&&(s=0),e.top+=a,e.left+=s,t.offset.setOffset(i[0],t.extend({using:function(t){i.css({top:Math.round(t.top),left:Math.round(t.left)})}},e),0),i.addClass("in");var l=i[0].offsetWidth,c=i[0].offsetHeight;"top"==n&&c!=o&&(e.top=e.top+o-c);var u=this.getViewportAdjustedDelta(n,e,l,c);u.left?e.left+=u.left:e.top+=u.top;var h=/top|bottom/.test(n),d=h?2*u.left-r+l:2*u.top-o+c,f=h?"offsetWidth":"offsetHeight";i.offset(e),this.replaceArrow(d,i[0][f],h)},n.prototype.replaceArrow=function(t,e,n){this.arrow().css(n?"left":"top",50*(1-t/e)+"%").css(n?"top":"left","")},n.prototype.setContent=function(){var t=this.tip(),e=this.getTitle();t.find(".tooltip-inner")[this.options.html?"html":"text"](e),t.removeClass("fade in top bottom left right")},n.prototype.hide=function(e){function i(){"in"!=r.hoverState&&o.detach(),r.$element&&r.$element.removeAttr("aria-describedby").trigger("hidden.bs."+r.type),e&&e()}var r=this,o=t(this.$tip),a=t.Event("hide.bs."+this.type);if(this.$element.trigger(a),!a.isDefaultPrevented())return o.removeClass("in"),t.support.transition&&o.hasClass("fade")?o.one("bsTransitionEnd",i).emulateTransitionEnd(n.TRANSITION_DURATION):i(),this.hoverState=null,this},n.prototype.fixTitle=function(){var t=this.$element;(t.attr("title")||"string"!=typeof t.attr("data-original-title"))&&t.attr("data-original-title",t.attr("title")||"").attr("title","")},n.prototype.hasContent=function(){return this.getTitle()},n.prototype.getPosition=function(e){e=e||this.$element;var n=e[0],i="BODY"==n.tagName,r=n.getBoundingClientRect();null==r.width&&(r=t.extend({},r,{width:r.right-r.left,height:r.bottom-r.top}));var o=window.SVGElement&&n instanceof window.SVGElement,a=i?{top:0,left:0}:o?null:e.offset(),s={scroll:i?document.documentElement.scrollTop||document.body.scrollTop:e.scrollTop()},l=i?{width:t(window).width(),height:t(window).height()}:null;return t.extend({},r,s,l,a)},n.prototype.getCalculatedOffset=function(t,e,n,i){return"bottom"==t?{top:e.top+e.height,left:e.left+e.width/2-n/2}:"top"==t?{top:e.top-i,left:e.left+e.width/2-n/2}:"left"==t?{top:e.top+e.height/2-i/2,left:e.left-n}:{top:e.top+e.height/2-i/2,left:e.left+e.width}},n.prototype.getViewportAdjustedDelta=function(t,e,n,i){var r={top:0,left:0};if(!this.$viewport)return r;var o=this.options.viewport&&this.options.viewport.padding||0,a=this.getPosition(this.$viewport);if(/right|left/.test(t)){var s=e.top-o-a.scroll,l=e.top+o-a.scroll+i;s<a.top?r.top=a.top-s:l>a.top+a.height&&(r.top=a.top+a.height-l)}else{var c=e.left-o,u=e.left+o+n;c<a.left?r.left=a.left-c:u>a.right&&(r.left=a.left+a.width-u)}return r},n.prototype.getTitle=function(){var t,e=this.$element,n=this.options;return t=e.attr("data-original-title")||("function"==typeof n.title?n.title.call(e[0]):n.title)},n.prototype.getUID=function(t){do t+=~~(1e6*Math.random());while(document.getElementById(t));return t},n.prototype.tip=function(){if(!this.$tip&&(this.$tip=t(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},n.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},n.prototype.enable=function(){this.enabled=!0},n.prototype.disable=function(){this.enabled=!1},n.prototype.toggleEnabled=function(){this.enabled=!this.enabled},n.prototype.toggle=function(e){var n=this;e&&(n=t(e.currentTarget).data("bs."+this.type),n||(n=new this.constructor(e.currentTarget,this.getDelegateOptions()),t(e.currentTarget).data("bs."+this.type,n))),e?(n.inState.click=!n.inState.click,n.isInStateTrue()?n.enter(n):n.leave(n)):n.tip().hasClass("in")?n.leave(n):n.enter(n)},n.prototype.destroy=function(){var t=this;clearTimeout(this.timeout),this.hide(function(){t.$element.off("."+t.type).removeData("bs."+t.type),t.$tip&&t.$tip.detach(),t.$tip=null,t.$arrow=null,t.$viewport=null,t.$element=null})};var i=t.fn.tooltip;t.fn.tooltip=e,t.fn.tooltip.Constructor=n,t.fn.tooltip.noConflict=function(){return t.fn.tooltip=i,this}}(jQuery),+function(t){"use strict";function e(e){return this.each(function(){var i=t(this),r=i.data("bs.popover"),o="object"==typeof e&&e;!r&&/destroy|hide/.test(e)||(r||i.data("bs.popover",r=new n(this,o)),"string"==typeof e&&r[e]())})}var n=function(t,e){this.init("popover",t,e)};if(!t.fn.tooltip)throw new Error("Popover requires tooltip.js");n.VERSION="3.3.7",n.DEFAULTS=t.extend({},t.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),n.prototype=t.extend({},t.fn.tooltip.Constructor.prototype),n.prototype.constructor=n,n.prototype.getDefaults=function(){return n.DEFAULTS},n.prototype.setContent=function(){var t=this.tip(),e=this.getTitle(),n=this.getContent();t.find(".popover-title")[this.options.html?"html":"text"](e),t.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof n?"html":"append":"text"](n),t.removeClass("fade top bottom left right in"),t.find(".popover-title").html()||t.find(".popover-title").hide()},n.prototype.hasContent=function(){return this.getTitle()||this.getContent()},n.prototype.getContent=function(){var t=this.$element,e=this.options;return t.attr("data-content")||("function"==typeof e.content?e.content.call(t[0]):e.content)},n.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var i=t.fn.popover;t.fn.popover=e,t.fn.popover.Constructor=n,t.fn.popover.noConflict=function(){return t.fn.popover=i,this}}(jQuery),+function(t){"use strict";function e(n,i){this.$body=t(document.body),this.$scrollElement=t(t(n).is(document.body)?window:n),this.options=t.extend({},e.DEFAULTS,i),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",t.proxy(this.process,this)),this.refresh(),this.process()}function n(n){return this.each(function(){var i=t(this),r=i.data("bs.scrollspy"),o="object"==typeof n&&n;r||i.data("bs.scrollspy",r=new e(this,o)),"string"==typeof n&&r[n]()})}e.VERSION="3.3.7",e.DEFAULTS={offset:10},e.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},e.prototype.refresh=function(){var e=this,n="offset",i=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),t.isWindow(this.$scrollElement[0])||(n="position",i=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var e=t(this),r=e.data("target")||e.attr("href"),o=/^#./.test(r)&&t(r);return o&&o.length&&o.is(":visible")&&[[o[n]().top+i,r]]||null}).sort(function(t,e){return t[0]-e[0]}).each(function(){e.offsets.push(this[0]),e.targets.push(this[1])})},e.prototype.process=function(){var t,e=this.$scrollElement.scrollTop()+this.options.offset,n=this.getScrollHeight(),i=this.options.offset+n-this.$scrollElement.height(),r=this.offsets,o=this.targets,a=this.activeTarget;if(this.scrollHeight!=n&&this.refresh(),e>=i)return a!=(t=o[o.length-1])&&this.activate(t);if(a&&e<r[0])return this.activeTarget=null,this.clear();for(t=r.length;t--;)a!=o[t]&&e>=r[t]&&(void 0===r[t+1]||e<r[t+1])&&this.activate(o[t])},e.prototype.activate=function(e){this.activeTarget=e,this.clear();var n=this.selector+'[data-target="'+e+'"],'+this.selector+'[href="'+e+'"]',i=t(n).parents("li").addClass("active");i.parent(".dropdown-menu").length&&(i=i.closest("li.dropdown").addClass("active")),i.trigger("activate.bs.scrollspy")},e.prototype.clear=function(){t(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var i=t.fn.scrollspy;t.fn.scrollspy=n,t.fn.scrollspy.Constructor=e,t.fn.scrollspy.noConflict=function(){return t.fn.scrollspy=i,this},t(window).on("load.bs.scrollspy.data-api",function(){t('[data-spy="scroll"]').each(function(){var e=t(this);n.call(e,e.data())})})}(jQuery),+function(t){"use strict";function e(e){return this.each(function(){var i=t(this),r=i.data("bs.tab");r||i.data("bs.tab",r=new n(this)),"string"==typeof e&&r[e]()})}var n=function(e){this.element=t(e)};n.VERSION="3.3.7",n.TRANSITION_DURATION=150,n.prototype.show=function(){var e=this.element,n=e.closest("ul:not(.dropdown-menu)"),i=e.data("target");if(i||(i=e.attr("href"),i=i&&i.replace(/.*(?=#[^\s]*$)/,"")),!e.parent("li").hasClass("active")){var r=n.find(".active:last a"),o=t.Event("hide.bs.tab",{relatedTarget:e[0]}),a=t.Event("show.bs.tab",{relatedTarget:r[0]});if(r.trigger(o),e.trigger(a),!a.isDefaultPrevented()&&!o.isDefaultPrevented()){var s=t(i);this.activate(e.closest("li"),n),this.activate(s,s.parent(),function(){r.trigger({type:"hidden.bs.tab",relatedTarget:e[0]}),e.trigger({type:"shown.bs.tab",relatedTarget:r[0]})})}}},n.prototype.activate=function(e,i,r){function o(){a.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),e.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),s?(e[0].offsetWidth,e.addClass("in")):e.removeClass("fade"),e.parent(".dropdown-menu").length&&e.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),r&&r()}var a=i.find("> .active"),s=r&&t.support.transition&&(a.length&&a.hasClass("fade")||!!i.find("> .fade").length);a.length&&s?a.one("bsTransitionEnd",o).emulateTransitionEnd(n.TRANSITION_DURATION):o(),a.removeClass("in")};var i=t.fn.tab;t.fn.tab=e,t.fn.tab.Constructor=n,t.fn.tab.noConflict=function(){return t.fn.tab=i,this};var r=function(n){n.preventDefault(),e.call(t(this),"show")};t(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',r).on("click.bs.tab.data-api",'[data-toggle="pill"]',r)}(jQuery),+function(t){"use strict";function e(e){return this.each(function(){var i=t(this),r=i.data("bs.affix"),o="object"==typeof e&&e;r||i.data("bs.affix",r=new n(this,o)),
-"string"==typeof e&&r[e]()})}var n=function(e,i){this.options=t.extend({},n.DEFAULTS,i),this.$target=t(this.options.target).on("scroll.bs.affix.data-api",t.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",t.proxy(this.checkPositionWithEventLoop,this)),this.$element=t(e),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};n.VERSION="3.3.7",n.RESET="affix affix-top affix-bottom",n.DEFAULTS={offset:0,target:window},n.prototype.getState=function(t,e,n,i){var r=this.$target.scrollTop(),o=this.$element.offset(),a=this.$target.height();if(null!=n&&"top"==this.affixed)return r<n&&"top";if("bottom"==this.affixed)return null!=n?!(r+this.unpin<=o.top)&&"bottom":!(r+a<=t-i)&&"bottom";var s=null==this.affixed,l=s?r:o.top,c=s?a:e;return null!=n&&r<=n?"top":null!=i&&l+c>=t-i&&"bottom"},n.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(n.RESET).addClass("affix");var t=this.$target.scrollTop(),e=this.$element.offset();return this.pinnedOffset=e.top-t},n.prototype.checkPositionWithEventLoop=function(){setTimeout(t.proxy(this.checkPosition,this),1)},n.prototype.checkPosition=function(){if(this.$element.is(":visible")){var e=this.$element.height(),i=this.options.offset,r=i.top,o=i.bottom,a=Math.max(t(document).height(),t(document.body).height());"object"!=typeof i&&(o=r=i),"function"==typeof r&&(r=i.top(this.$element)),"function"==typeof o&&(o=i.bottom(this.$element));var s=this.getState(a,e,r,o);if(this.affixed!=s){null!=this.unpin&&this.$element.css("top","");var l="affix"+(s?"-"+s:""),c=t.Event(l+".bs.affix");if(this.$element.trigger(c),c.isDefaultPrevented())return;this.affixed=s,this.unpin="bottom"==s?this.getPinnedOffset():null,this.$element.removeClass(n.RESET).addClass(l).trigger(l.replace("affix","affixed")+".bs.affix")}"bottom"==s&&this.$element.offset({top:a-e-o})}};var i=t.fn.affix;t.fn.affix=e,t.fn.affix.Constructor=n,t.fn.affix.noConflict=function(){return t.fn.affix=i,this},t(window).on("load",function(){t('[data-spy="affix"]').each(function(){var n=t(this),i=n.data();i.offset=i.offset||{},null!=i.offsetBottom&&(i.offset.bottom=i.offsetBottom),null!=i.offsetTop&&(i.offset.top=i.offsetTop),e.call(n,i)})})}(jQuery),define("bootstrap",["jquery"],function(){}),define("modal",["jquery","config","preferences","links","form","laconic","bootstrap"],function(t,e,n,i,r){return function(t){function o(){var e=t.el.button({type:"button",class:"close","data-dismiss":"modal"});return t(e).html("&times;").on("click",function(e){e.preventDefault(),t(e.target).closest(".modal").find("[data-notagain]").each(function(){if(t(this).prop("checked"))return n.setNotAgain(t(this).attr("data-notagain")),!1})}),e}function a(e){return e.notagain&&n.persistent()?t.el.label(t.el.input({type:"checkbox","data-notagain":e.notagain,name:"dismiss"})," Don't show again!"):""}function s(){var e=t(this).find(".tm-input");e.each(function(){var e=t(this),n=e.data("prefilled"),i={};n&&(i.prefilled=n),e.tagsManager(i)})}var l="swishModal",c={_init:function(e){return this.each(function(){var e=t(this);e.addClass("swish-event-receiver"),e.on("help",function(t,n){e.swishModal("showHelp",n)}),e.on("pldoc",function(t,n){e.swishModal("showPlDoc",n)}),e.on("form",function(t,n){e.swishModal("showForm",n)}),e.on("dialog",function(t,n){e.swishModal("show",n)}),e.on("error",function(t,n){e.swishModal("show",n)}),e.on("alert",function(t,n){var i="<span class='glyphicon glyphicon-warning-sign'></span>";e.swishModal("show",{title:i,body:n})}),e.on("ajaxError",function(t,n){e.swishModal("showAjaxError",n)}),e.on("feedback",function(t,n){e.swishModal("feedback",n)}),e.on("show",function(t,n){e.swishModal("show",n)}),e.on("server_form",function(t,n){e.swishModal("server_form",n)})})},showHelp:function(i){var r=this;i.notagain&&n.notagain(i.notagain)||t.ajax({url:e.http.locations.help+"/"+i.file,dataType:"html",success:function(e){var n=t("<div>");n.html(e),r.swishModal("show",t.extend({title:n.find("title").text(),body:n},i))}})},showForm:function(n){var i=this;t.ajax({url:e.http.locations.form+"/"+n.file,dataType:"html",success:function(e){var r=t("<div>");r.html(e),i.swishModal("show",t.extend({title:r.find("legend").text(),body:r},n))}})},showPlDoc:function(t){function n(t){var n="("+t.name+")/"+t.arity;return t.module&&(n=t.module+":"+n),e.http.locations.pldoc_doc_for+"?header=false&object="+encodeURIComponent(n)}function i(t,e){return t.parents("div.modal-dialog").addClass("swish-embedded-manual"),"<iframe class='swish-embedded-manual' onload='javascript:resizeIframe(this);' src='"+e+"'></iframe>"}var r={title:"SWI-Prolog manual",body:function(){return i(this,n(t))}};return this.swishModal("show",r)},show:function(e){var r=t.el.div({class:"modal-body"}),l=t.el.h2(),c=t.el.div({class:"modal-content"},t.el.div({class:"modal-header"},a(e),o(),l),r),u=t.el.div({class:"modal fade",id:"ajaxModal",tabindex:-1,role:"dialog"},t.el.div({class:"modal-dialog"},c));if(e.notagain&&n.persistent()&&t(c).append(t.el.div({class:"modal-footer"},a(e))),r=t(r),"function"==typeof e.body){var h=e.body.call(r);h&&r.append(h)}else r.html(e.body);return t(l).html(e.title),t(u).modal({show:!0}).on("click","a",i.followLink).on("shown.bs.modal",s).on("hidden.bs.modal",function(){e.onclose&&e.onclose(),t(this).remove()}),this},server_form:function(e){var n=t(this);return void 0===r&&(r=require("form")),this.swishModal("show",{title:e.title,body:function(){elem=t(this),t.ajax({url:e.url,data:e.data,success:function(t){elem.append(t)},error:function(t){n.swishModal("showAjaxError",t)}}),elem.on("click","button[data-action]",function(i){var o=t(i.target).closest("form"),a=r.serializeAsObject(o,!0),s=t(i.target).closest("button");return 0==s.data("form_data")?t.ajax({url:s.data("action"),success:function(t){return s.closest(".modal").modal("hide"),e.onreply&&e.onreply.call(s[0],t),i.preventDefault(),!1},error:function(t){n.swishModal("showAjaxError",t)}}):t.ajax({url:s.data("action"),data:JSON.stringify(a),dataType:"json",contentType:"application/json",type:"POST",success:function(t){return"success"==t.status?(s.closest(".modal").modal("hide"),e.onreply&&e.onreply.call(s[0],t),i.preventDefault(),!1):void("error"==t.status?r.formError(o,t.error):alert("Updated failed: "+JSON.serializeAsObject(t)))},error:function(t){n.swishModal("showAjaxError",t)}}),i.preventDefault(),!1})}})},showAjaxError:function(e){var n=t.el.div();t(n).html(e.responseText);var i=t(n).find("h1"),r=i.text()||"Server error";i.remove();var o={title:r,body:n};this.swishModal("show",o)},feedback:function(e){var n=t.el.div({class:"feedback "+e.type||""});return t(n).html(e.html),t(e.owner||"body").append(n),setTimeout(function(){t(n).hide(400,function(){t(n).remove()})},e.duration||1500),this}};window.resizeIframe=function(t){t.style.height=0,t.style.height=t.contentWindow.document.body.scrollHeight+20+"px"},t.fn.swishModal=function(e){return c[e]?c[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery."+l):c._init.apply(this,arguments)}}(jQuery),{ajaxError:function(e){t(".swish-event-receiver").trigger("ajaxError",e)},feedback:function(e){t(".swish-event-receiver").trigger("feedback",e)},alert:function(e){t(".swish-event-receiver").trigger("alert",e)},show:function(e){t(".swish-event-receiver").trigger("show",e)},server_form:function(e){t(".swish-event-receiver").trigger("server_form",e)}}}),function(t){"use strict";var e={prefilled:null,CapitalizeFirstLetter:!1,preventSubmitOnEnter:!0,isClearInputOnEsc:!0,externalTagId:!1,prefillIdFieldName:"Id",prefillValueFieldName:"Value",AjaxPush:null,AjaxPushAllTags:null,AjaxPushParameters:null,delimiters:[9,13,44],backspace:[8],maxTags:0,hiddenTagListName:null,hiddenTagListId:null,replace:!0,output:null,deleteTagsOnBackspace:!0,tagsContainer:null,tagCloseIcon:"x",tagClass:"",validator:null,onlyTagList:!1,tagList:null,fillInputOnTagRemove:!1},n={pushTag:function(e,n,r){var o,a,s,l,c,u,h,d,f,p,g,m=t(this),v=m.data("opts"),y=m.data("tlis"),x=m.data("tlid");if(e=i.trimTag(e,v.delimiterChars),e&&!(e.length<=0)){if(v.onlyTagList&&void 0!==v.tagList&&v.tagList){var b=v.tagList;t.each(b,function(t,e){b[t]=e.toLowerCase()});var _=t.inArray(e.toLowerCase(),b);if(-1===_)return}if(v.CapitalizeFirstLetter&&e.length>1&&(e=e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()),v.validator&&!v.validator(e))return void m.trigger("tm:invalid",e);if(!(v.maxTags>0&&y.length>=v.maxTags)){if(o=!1,a=jQuery.map(y,function(t){return t.toLowerCase()}),c=t.inArray(e.toLowerCase(),a),-1!==c&&(o=!0),o)if(m.trigger("tm:duplicated",e),v.blinkClass)for(var w=0;w<6;++w)t("#"+m.data("tm_rndid")+"_"+x[c]).queue(function(e){t(this).toggleClass(v.blinkClass),e()}).delay(100);else t("#"+m.data("tm_rndid")+"_"+x[c]).stop().animate({backgroundColor:v.blinkBGColor_1},100).animate({backgroundColor:v.blinkBGColor_2},100).animate({backgroundColor:v.blinkBGColor_1},100).animate({backgroundColor:v.blinkBGColor_2},100).animate({backgroundColor:v.blinkBGColor_1},100).animate({backgroundColor:v.blinkBGColor_2},100);else v.externalTagId===!0?(void 0===r&&t.error("externalTagId is not passed for tag -"+e),l=r):(s=Math.max.apply(null,x),s=s===-(1/0)?0:s,l=++s),n||m.trigger("tm:pushing",[e,l]),y.push(e),x.push(l),n||null!==v.AjaxPush&&null==v.AjaxPushAllTags&&t.inArray(e,v.prefilled)===-1&&t.post(v.AjaxPush,t.extend({tag:e},v.AjaxPushParameters)),u=m.data("tm_rndid")+"_"+l,h=m.data("tm_rndid")+"_Remover_"+l,d=t("<span/>").text(e).html(),f='<span class="'+i.tagClasses.call(m)+'" id="'+u+'">',f+="<span>"+d+"</span>",f+='<a href="#" class="tm-tag-remove" id="'+h+'" TagIdToRemove="'+l+'">',f+=v.tagCloseIcon+"</a></span> ",p=t(f),null!==v.tagsContainer?t(v.tagsContainer).append(p):x.length>1?(g=m.siblings("#"+m.data("tm_rndid")+"_"+x[x.length-2]),g.after(p)):m.before(p),p.find("#"+h).on("click",m,function(e){e.preventDefault();var n=parseInt(t(this).attr("TagIdToRemove"));i.spliceTag.call(m,n,e.data)}),i.refreshHiddenTagList.call(m),n||m.trigger("tm:pushed",[e,l]),i.showOrHide.call(m);m.val("")}}},popTag:function(){var e,n,r=t(this),o=r.data("tlis"),a=r.data("tlid");a.length>0&&(e=a.pop(),n=o[o.length-1],r.trigger("tm:popping",[n,e]),o.pop(),t("#"+r.data("tm_rndid")+"_"+e).remove(),i.refreshHiddenTagList.call(r),r.trigger("tm:popped",[n,e]))},empty:function(){for(var e,n=t(this),r=n.data("tlis"),o=n.data("tlid");o.length>0;)e=o.pop(),r.pop(),t("#"+n.data("tm_rndid")+"_"+e).remove(),i.refreshHiddenTagList.call(n);n.trigger("tm:emptied",null),i.showOrHide.call(n)},tags:function(){var t=this,e=t.data("tlis");return e}},i={showOrHide:function(){var t=this,e=t.data("opts"),n=t.data("tlis");e.maxTags>0&&n.length<e.maxTags&&(t.show(),t.trigger("tm:show")),e.maxTags>0&&n.length>=e.maxTags&&(t.hide(),t.trigger("tm:hide"))},tagClasses:function(){var e,n=t(this),i=n.data("opts"),r=i.tagBaseClass,o=i.inputBaseClass;return e=r,n.attr("class")&&t.each(n.attr("class").split(" "),function(t,n){n.indexOf(o+"-")!==-1&&(e+=" "+r+n.substring(o.length))}),e+=i.tagClass?" "+i.tagClass:""},trimTag:function(e,n){var i;for(e=t.trim(e),i=0;i<e.length&&t.inArray(e.charCodeAt(i),n)===-1;i++);return e.substring(0,i)},refreshHiddenTagList:function(){var e=t(this),n=e.data("tlis"),i=e.data("lhiddenTagList");i&&t(i).val(n.join(e.data("opts").baseDelimiter)).change(),e.trigger("tm:refresh",n.join(e.data("opts").baseDelimiter))},killEvent:function(t){t.cancelBubble=!0,t.returnValue=!1,t.stopPropagation(),t.preventDefault()},keyInArray:function(e,n){return t.inArray(e.which,n)!==-1},applyDelimiter:function(e){var i=t(this);n.pushTag.call(i,t(this).val()),e.preventDefault()},prefill:function(e){var i=t(this),r=i.data("opts");t.each(e,function(t,e){r.externalTagId===!0?n.pushTag.call(i,e[r.prefillValueFieldName],!0,e[r.prefillIdFieldName]):n.pushTag.call(i,e,!0)})},pushAllTags:function(e,n){var i=t(this),r=i.data("opts"),o=i.data("tlis");r.AjaxPushAllTags&&("tm:pushed"===e.type&&t.inArray(n,r.prefilled)!==-1||t.post(r.AjaxPush,t.extend({tags:o.join(r.baseDelimiter)},r.AjaxPushParameters)))},spliceTag:function(e){var n,r=this,o=r.data("tlis"),a=r.data("tlid"),s=t.inArray(e,a);-1!==s&&(n=o[s],r.trigger("tm:splicing",[n,e]),t("#"+r.data("tm_rndid")+"_"+e).remove(),o.splice(s,1),a.splice(s,1),i.refreshHiddenTagList.call(r),r.trigger("tm:spliced",[n,e])),i.showOrHide.call(r)},init:function(r){var o,a,s=t.extend({},e,r);return s.hiddenTagListName=null===s.hiddenTagListName?"hidden-"+this.attr("name"):s.hiddenTagListName,o=s.delimeters||s.delimiters,a=[9,13,17,18,19,37,38,39,40],s.delimiterChars=[],s.delimiterKeys=[],t.each(o,function(e,n){t.inArray(n,a)!==-1?s.delimiterKeys.push(n):s.delimiterChars.push(n)}),s.baseDelimiter=String.fromCharCode(s.delimiterChars[0]||44),s.tagBaseClass="tm-tag",s.inputBaseClass="tm-input",t.isFunction(s.validator)||(s.validator=null),this.each(function(){var e=t(this),r="",o="",a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";if(e.data("tagManager"))return!1;e.data("tagManager",!0);for(var l=0;l<5;l++)o+=a.charAt(Math.floor(Math.random()*a.length));if(e.data("tm_rndid",o),e.data("opts",s).data("tlis",[]).data("tlid",[]),null===s.output?(r=t("<input/>",{type:"hidden",name:s.hiddenTagListName}),e.after(r),e.data("lhiddenTagList",r)):e.data("lhiddenTagList",t(s.output)),s.AjaxPushAllTags&&(e.on("tm:spliced",i.pushAllTags),e.on("tm:popped",i.pushAllTags),e.on("tm:pushed",i.pushAllTags)),e.on("focus keypress",function(e){t(this).popover&&t(this).popover("hide")}),s.isClearInputOnEsc&&e.on("keyup",function(e){27===e.which&&(t(this).val(""),i.killEvent(e))}),e.on("keypress",function(t){i.keyInArray(t,s.delimiterChars)&&i.applyDelimiter.call(e,t)}),e.on("keydown",function(t){13===t.which&&s.preventSubmitOnEnter&&i.killEvent(t),i.keyInArray(t,s.delimiterKeys)&&i.applyDelimiter.call(e,t)}),s.deleteTagsOnBackspace&&e.on("keydown",function(r){i.keyInArray(r,s.backspace)&&t(this).val().length<=0&&(n.popTag.call(e),i.killEvent(r))}),s.fillInputOnTagRemove&&e.on("tm:popped",function(e,n){t(this).val(n)}),e.change(function(t){/webkit/.test(navigator.userAgent.toLowerCase())||e.focus(),i.killEvent(t)}),null!==s.prefilled)"object"==typeof s.prefilled?i.prefill.call(e,s.prefilled):"string"==typeof s.prefilled?i.prefill.call(e,s.prefilled.split(s.baseDelimiter)):"function"==typeof s.prefilled&&i.prefill.call(e,s.prefilled());else if(null!==s.output){if(t(s.output)&&t(s.output).val()){t(s.output)}i.prefill.call(e,t(s.output).val().split(s.baseDelimiter))}}),this}};t.fn.tagsManager=function(e){var r=t(this);return 0 in this?n[e]?n[e].apply(r,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?(t.error("Method "+e+" does not exist."),!1):i.init.apply(this,arguments):this}}(jQuery),define("tagmanager",["jquery"],function(){}),define("form",["jquery","config","modal","laconic","tagmanager"],function(t,e,n){function i(t){return void 0===t&&(t=u),"col-xs-"+(12-t)}function r(e,n,i){return i=i||u,t.el.label({class:"control-label col-xs-"+i,for:e},n)}function o(e,n){var i={name:e,type:"checkbox"};return n=n||{},n.checked&&(i.checked="checked"),n.title&&(i.title=n.title),t.el.input(i)}function a(e,n){var i={name:e,type:"text",class:"form-control"};return n=n||{},n.placeholder&&(i.placeholder=n.placeholder),n.title&&(i.title=n.title),n.value&&(i.value=n.value),n.disabled&&(i.disabled=n.disabled),n.readonly&&(i.readonly=n.readonly),n.type&&(i.type=n.type),t.el.input(i)}function s(e,n,i){var r={name:e,type:"text",class:"tm-input tag-list"};n&&(r.placeholder=n);var o=t.el.input(r);return i&&t(o).data("prefilled",i),o}function l(e,n){var i={name:e,class:"form-control"};return n=n||{},n.placeholder&&(i.placeholder=n.placeholder),t.el.textarea(i,n.value||"")}function c(e,n,i){function r(e){if("string"==typeof e)e==i.value?o.append(t.el.option({selected:"selected"},e)):o.append(t.el.option(e));else{var n={value:e.value};e.value==i.value&&(n.selected="selected"),o.append(t.el.option(n,e.label))}}var o=t(t.el.select({class:"form-control",name:e}));i=i||{};for(var a=0;a<n.length;a++)r(n[a]);return o[0]}var u=3,h={serializeAsObject:function(e,n){var i=e.serializeArray(),r=[],o={};e.find("div.checkboxes.array").each(function(){var e=t(this),n=[];e.find("input:checked").each(function(){var e=t(this).attr("name");n.push(e)}),e.find("input").each(function(){var e=t(this).attr("name");r.push(e)}),o[e.attr("name")]=n});for(var a=0;a<i.length;a++){var s,l=i[a].name,c=i[a].value,u=e.find('[name="'+l+'"]'),h=u.prop("type");(s=u.data("json-value"))?o[l]=s:""==c&&1!=n||("hidden"==h&&0==l.indexOf("hidden-")?(l=l.slice("hidden-".length),void 0==o[l]?o[l]=c.split(","):o[l]=c.split(",").concat(o[l])):"text"==h&&u.hasClass("tag-list")?""!=c&&(void 0!==o[l]?o[l].push(c):o[l]=[c]):"number"==h?o[l]=parseInt(c):"checkbox"==h?r.indexOf(l)==-1&&(o[l]="on"==c):o[l]=c)}return e.find("[type=checkbox]").each(function(){var e=t(this),n=e.prop("name");1!=e.prop("disabled")&&void 0===o[n]&&r.indexOf(n)==-1&&(o[n]=!1)}),o},formError:function(t,e){if(t.find(".has-error").removeClass("has-error"),t.find(".help-block.with-errors").remove(),e)if("form_error"==e.code||"input_error"==e.code){errors=e.data.split("\n");for(var i=0;i<errors.length;i++){var r=errors[i].split(/:\s*(.*)?/);h.fieldError(t,r[0],r[1])}}else n.alert(e.data)},fieldError:function(e,n,i){var r=e.find("input[name="+n+"]");if(r.length>0){var o=r.closest(".form-group");r.parent().hasClass("input-group")&&(r=r.parent()),o.addClass("has-error"),r.after(t.el.p({class:"help-block with-errors"},i))}else alert("Missing value for "+n)},showDialog:function(e){t(".swish-event-receiver").trigger("dialog",e)},formBroadcast:function(e,n){t(".swish-event-receiver").trigger(e,n)},fields:{fileName:function(n,s,l,c){var u,h,d=e.swish.community_examples?"Public | Example | name":"Public | name",f="(leave empty for generated random name)",p=t.el.div({class:"form-group"},r("name",d),t.el.div({class:i()},t.el.div({class:"input-group"},t.el.span({class:"input-group-addon",title:"If checked, other users can find this program"},o("public",{checked:s})),e.swish.community_examples?t.el.span({class:"input-group-addon",title:"If checked, add to examples menu"},o("example",{checked:l})):void 0,h=a("name",{placeholder:"Name "+f,title:"Public name of your program",value:n,disabled:c}),u=t.el.span({class:"input-group-btn"},t.el.button({class:"btn btn-success",type:"button"},"Fork")))));return t(u).on("click",function(){var e=t(h).closest("form").find(".btn.btn-primary");t(h).attr("placeholder","Fork as "+f),t(h).val(""),e.text(e.text().replace("Update","Fork"))}),p},title:function(e){var n=t.el.div({class:"form-group"},r("title","Title"),t.el.div({class:i()},a("title",{placeholder:"Descriptive title",value:e})));return n},author:function(e,n){var o={placeholder:"Your name",value:e};e&&n&&(o.readonly=!0,o.title="Verified author name");var s=t.el.div({class:"form-group"},r("author","Author"),t.el.div({class:i()},a("author",o)));return s},date:function(e,n,o){o=o||r;var s=t.el.div({class:"form-group"},r(o,n),t.el.div({class:i()},a(o,{disabled:!0,value:new Date(1e3*e).toLocaleString()})));return s},description:function(e){var n=t.el.div({class:"form-group"},r("description","Description"),t.el.div({class:i()},l("description",{value:e})));return n},commit_message:function(e){var n=t.el.div({class:"form-group"},r("commit_message","Changes"),t.el.div({class:i()},l("commit_message",{value:e,placeholder:"Describe your changes here"})));return n},tags:function(e){var n=t.el.div({class:"form-group"},r("tags","Tags"),t.el.div({class:i()},s("tags","Tags help finding this code",e)));return n},modify:function(t,e){function n(n,r){i.push({name:n,label:r,value:t.indexOf(n)!=-1,readonly:!e})}var i=[],r={name:"modify",label:"Can save new version",type:"array"};return n("any","Anyone"),n("login","Logged in users"),n("owner","Only me"),e?r.title="Specify who can save an updated version of this file":r.title="Only logged in users and owners can set permissions",h.fields.checkboxes(i,r)},follow:function(t){return h.fields.checkboxes([{name:"follow",label:"Follow this document",value:!!t,readonly:!t}],{name:"options",label:"",title:"Notify about activity (updates, chat)\nRequires being logged in with valid email"})},projection:function(e){var n=t.el.div({class:"form-group"},r("projection","Projection"),t.el.div({class:i()},a("projection",{placeholder:"Columns",value:e})));return n},csvFormat:function(e,n){var o;return e=e||["prolog"],n=n||e[0],o=1==e.length?t.el.input({type:"hidden",name:"format",value:e[0]}):t.el.div({class:"form-group"},r("format","Format"),t.el.div({class:i()},c("format",e,{value:n})))},limit:function(e,n){var s=t.el.div({class:"form-group"},r("name","Distinct | limit"),t.el.div({class:i()},t.el.div({class:"input-group"},t.el.span({class:"input-group-addon",title:"If checked only return distinct results"},o("distinct",{checked:n})),a("limit",{placeholder:"Maximum result count (blank for unlimited)",title:"Limit results",value:e}))));return s},checkboxes:function(e,n){var i;n=t.extend({name:"options",label:"Options",col:u},n||{});var o={class:"checkboxes col-xs-"+(12-n.col),name:n.name};n.title&&(o.title=n.title),n.type&&(o.class+=" "+n.type);for(var a=t.el.div({class:"form-group"},r(n.name,n.label,n.col),i=t.el.div(o)),s=0;s<e.length;s++){var l=e[s],c={type:"checkbox",name:l.name,autocomplete:"false"};l.value&&(c.checked="checked"),l.readonly&&(c.disabled="disabled"),t(i).append(t.el.label({class:"checkbox-inline"},t.el.input(c),l.label))}return a},chunk:function(e){var n=t.el.div({class:"form-group"},r("count","Initial solutions",3),t.el.div({class:"col-xs-9"},t.el.div({class:"input-group"},a("chunk",{title:"Initial number of solutions",type:"number",value:e}))));return n},name:function(e,n){n=n||3;var i=t.el.div({class:"form-group"},r("name","Name",n),t.el.div({class:"col-xs-"+(12-n)},a("name",{placeholder:"Name",value:e})));return i},filename:function(e,n){n=n||3;var i=t.el.div({class:"form-group"},r("filename","File name",n),t.el.div({class:"col-xs-"+(12-n)},a("filename",{placeholder:"File name",value:e})));return i},hidden:function(e,n){if(void 0!==n)return t.el.input({type:"hidden",name:e,value:n})},buttons:function(e){e=e||{};var n=e.label||"Save program",i=e.offset||u,r=t.el.button({name:"save",class:"btn btn-primary"},n);t(r).on("click",function(n){var i=t(n.target).parents("form")[0],r=h.serializeAsObject(t(i));return e.action(n,r),t(n.target).parents(".modal").modal("hide"),n.preventDefault(),!1});var o=t.el.div({class:"form-group"},t.el.div({class:"col-xs-offset-"+i+" col-xs-"+(12-i)},r,t.el.button({name:"cancel",class:"btn btn-danger","data-dismiss":"modal"},"Cancel")));return o},radio:function(e,n,i){var r=t.el.div({class:"btn-group","data-toggle":"buttons"});i=i||"radio";for(var o=0;o<n.length;o++){var a="btn btn-default btn-xs";n[o].active&&(a+=" active");var s={type:i,name:e,autocomplete:"off",value:n[o].value},l={class:a};n[o].title&&(l.title=n[o].title),t(r).append(t.el.label(l,t.el.input(s),n[o].label))}return r}},widgets:{glyphIcon:function(e){return t.el.span({class:"glyphicon glyphicon-"+e})},typeIcon:function(e){return t.el.span({class:"dropdown-icon type-icon "+e})},glyphIconButton:function(e,n){var i={class:"btn",type:"button"};return n.action&&(i["data-action"]=n.action),n.title&&(i.title=n.title),n.class&&(i.class+=" "+n.class),t.el.button(i,h.widgets.glyphIcon(e))},dropdownButton:function(e,n){n||(n={});var i=n.divClass,r=n.ulClass,o=t.el.div({class:"btn-group dropdown"+(i?" "+i:"")},t.el.button({class:"dropdown-toggle","data-toggle":"dropdown"},e),t.el.ul({class:"dropdown-menu"+(r?" "+r:"")}));return n.actions&&h.widgets.populateMenu(t(o),n.client,n.actions),o},populateMenu:function(e,n,i){function r(e,i){var r=t(i).data("action");r&&r.call(n,i)}function o(e,n){if(void 0!==n)if(0==e.indexOf("--"))a.append(t.el.li({class:"divider"}));else{var i=t.el.a(e);t(i).data("action",n),a.append(t.el.li(i))}}var a=e.find(".dropdown-menu");for(var s in i)i.hasOwnProperty(s)&&o(s,i[s]);return a.on("click","a",function(t){r(t,this)}),e}}};return h}),define("history",["jquery","preferences","form"],function(t,e,n){var i={push:function(t){var e=window.location.pathname;if(e!=t.url){var n={location:t.url};t.meta&&(n.meta=t.meta),window.history.pushState(n,"",t.url),document.title="SWISH -- "+(t.file?t.file:"SWI-Prolog for SHaring")}},pop:function(e){e.state&&(e.state.meta&&e.state.meta.name?t(".swish").swish("playFile",e.state.meta.name):e.state.location&&(window.location=e.state.location))},recentMaxLength:10,addRecent:function(t){function n(t,e){return t.type==e.type&&t.id==e.id}for(var r=e.getVal("recentDocuments")||[],o=0;o<r.length;o++)if(n(t,r[o])){r.splice(o,1);break}for(;r.length+1>i.recentMaxLength;)r.pop();r.splice(0,0,t),e.setVal("recentDocuments",r)},openRecent:function(t,e){return i.openRecent[e.st_type](t,e)},updateRecentUL:function(){var i=t(this),r=e.getVal("recentDocuments")||[];i.html("");for(var o=0;o<r.length;o++){var a=r[o];if(a.id){var s=t.el.a(n.widgets.typeIcon(a.id.split(".").pop()),a.label||a.id);t(s).data("document",a),i.append(t.el.li(s))}}}};return i.openRecent.gitty=function(e,n){t(e.target).parents(".swish").swish("playFile",n.id)},window.onpopstate=i.pop,i}),define("utils",["jquery"],function(t){var e={htmlEncode:function(t){return t?document.createElement("a").appendChild(document.createTextNode(t)).parentNode.innerHTML:""},flash:function(t){t.addClass("flash"),setTimeout(function(){t.removeClass("flash")},1500)}};return"function"!=typeof String.prototype.startsWith&&(String.prototype.startsWith=function(t){return 0===this.lastIndexOf(t,0)}),e}),define("chat",["jquery","config","preferences","form","utils"],function(t,e,n,i,r){!function(t){function o(e,r){r=r||{};var o,s,l=r.name;l||"self"!=r.role||(l="Me"),l||(l=e);var c=t.el.li({class:"dropdown user",id:e,title:l},s=t.el.a({class:"dropdown-toggle avatar","data-toggle":"dropdown"},a(r)),o=t.el.ul({class:"dropdown-menu pull-right",title:""}));if("self"==r.role){t(s).append(t.el.b({class:"caret"}));var u=t.el.input({type:"text",placeholder:"Nick name",value:r.name||"",title:"Nick name"});o.append(t.el.li(u)),t(u).keypress(function(e){if(13==e.which){var i=t(u).val().trim();""!=i&&(t("#chat").trigger("send",{type:"set-nick-name",name:i}),n.setVal("nick-name",i)),t(u).closest(".dropdown.open").removeClass("open")}}),i.widgets.populateMenu(t(c),t("#chat"),{}),o.append(t.el.li({class:"divider"}))}return c}function a(e){return e.avatar?t.el.img({class:"avatar",src:e.avatar}):t.el.span({class:"avatar glyphicon glyphicon-user"})}function s(){var t=new Date;return t.getTime()}var l="chat",c=10,u=null,h={_init:function(n){return this.each(function(){var n=t(this),i={};n.data(l,i),n.on("click",function(e){var i=t(e.target).closest("li.user");1==i.length&&n.chat("unnotify",i.attr("id"))}),n.on("send",function(t,e){n.chat("send",e)}),t(window).bind("beforeunload",function(){n.chat("disconnect")}),e.swish.chat&&n.chat("connect")})},connect:function(){function i(t,i){var r=n.getVal(i);r&&("anon-avatar"==i&&(r=e.http.locations.avatar+r.split("/").pop()),a+=h+t+"="+encodeURIComponent(r),h="&")}var r=this,o=this.data(l),a=window.location.host+e.http.locations.swish_chat,h="?",d=window.location.protocol.replace("http","ws");i("avatar","anon-avatar"),i("nickname","nick-name"),o.reconnect&&(a+=h+"reconnect="+encodeURIComponent(o.reconnect),h="&"),o.connection=new WebSocket(d+"//"+a,["v1.chat.swish.swi-prolog.org"]),o.connection.onerror=function(t){r.chat("userCount",void 0)},o.connection.onclose=function(t){null==u?c<6e4&&(c*=2):s()-u>3e5?c=10:c<3e5&&(c*=2),setTimeout(function(){r.chat("connect")},c)},o.connection.onmessage=function(t){var e=JSON.parse(t.data);e.origin=t.origin,e.type?r.chat(e.type,e):console.log(t)},o.connection.onopen=function(){r.chat("empty_queue"),t(".storage").storage("chat_status")}},empty_queue:function(){for(var t=this.data(l);t.queue&&t.queue!=[]&&1==t.connection.readyState;){var e=t.queue.shift();t.connection.send(e)}},disconnect:function(){var t=this.data(l);return this.chat("send",{type:"unload"}),t.connection.onclose=function(){},t.connection.close(),t.connection=void 0,this},send:function(t){var e=this.data(l);if(e&&e.connection){var n=JSON.stringify(t);1!=e.connection.readyState?(e.queue?e.queue.push(n):e.queue=[n],this.chat("connect")):e.connection.send(n)}return this},subscribe:function(t,e){var n={type:"subscribe",channel:t};e&&(n.sub_channel=e),this.chat("send",n)},unsubscribe:function(t,e){var n={type:"unsubscribe",channel:t};sub_channel&&(n.sub_channel=sub_channel),this.chat("send",n)},welcome:function(e){var i=t(this).data(l);i.wsid&&i.wsid!=e.wsid&&this.html(""),i.wsid=e.wsid,i.reconnect=e.reconnect,e.avatar&&"generated"==e.avatar_source&&n.setVal("anon-avatar",e.avatar),e.role="self";var r=this.chat("addUser",e);t(r).addClass("myself"),this.chat("userCount",e.visitors),u=s(),e.check_login&&t("#login").login("update","check")},userCount:function(e){var n=t("#user-count");void 0==e?n.parent().hide():(n.parent().show(),n.text(e))},gazers:function(t){if(t.gazers)for(var e=0;e<t.gazers.length;e++){var n=t.gazers[e];this.chat("addUser",n),n.file&&this.chat("addUserFile",n.wsid,n.file)}},profile:function(e){var i=t("#"+e.wsid);i.children("a").html("").append(a(e)),e.avatar&&(t("*[data-userid="+e.wsid+"] img.avatar").attr("src",e.avatar),"generated"==e.avatar_source&&n.setVal("anon-avatar",e.avatar)),e.name&&(i.prop("title",e.name),"set-nick-name"==e.reason&&(e.html="Named <i>"+r.htmlEncode(e.name)+"</i>",this.chat("notifyUser",e)))},rejoined:function(e){var n=t("#"+e.wsid);this.chat("lost",n,!1),e.visitors&&this.chat("userCount",e.visitors)},joined:function(t){t.visitors&&this.chat("userCount",t.visitors)},session_closed:function(){t("#login").login("update","session-closed")},notify:function(t){this.chat("notifyUser",t)},"chat-message":function(e){var n=t("div.chatroom").chatroom("rooms",e.docid);n.length>0?(n.chatroom("add",e),e.displayed=!0):t("#"+e.user.id).length>0&&(msg=t.extend({},e),msg.wsid=e.user.id,msg.html="Wants to chat",this.chat("notifyUser",msg)),t(".storage").storage("chat_message",e)},notifyUser:function(e){var n=this,i=this.chat("addUser",e);if(i.length>0){var r=t.el.div({class:"notification notify-arrow",id:"ntf-"+e.wsid}),o=i.offset();if(t("body").append(r),t(r).html(e.html).css({left:o.left+i.width()-t(r).outerWidth()+15,top:o.top+i.height()+12}).on("click",function(){t(r).remove()}).show(e.fadeIn||400),0!==e.time){var a=e.time;a||(a=i.hasClass("myself")?1e3:5e3),setTimeout(function(){t(r).hide(e.fadeOut||400,function(){n.chat("unnotify",e.wsid)})},a)}this.chat("updateFiles",e)}},unnotify:function(e){return t("#ntf-"+e).remove(),t("#"+e).hasClass("removed")&&this.chat("removeUser",e),this},updateFiles:function(e){function n(){return e.event_argv[0]}var i=t(this).data(l);if("opened"==e.event)this.chat("addUserFile",e.wsid,n());else if("closed"==e.event){var r=e.wsid==i.wsid?void 0:e.wsid;this.chat("removeUserFile",r,n(),!0)}},addUser:function(e){var n=t("#"+e.wsid);return 0==n.length?(n=t(o(e.wsid,e)),this.prepend(n)):this.chat("lost",n,!1),n},removeUser:function(e){"string"==typeof e&&(e={wsid:e}),void 0!==e.visitors&&this.chat("userCount",e.visitors);var n=t("#"+e.wsid);return 0==n.length?this:("close"!=e.reason?t("#ntf-"+e.wsid).length>0?n.addClass("removed"):n.hide(400,function(){this.remove()}):this.chat("lost",n,!0),this)},lost:function(e,n){n?e.addClass("lost"):e.removeClass("lost"),e.each(function(){var e=t(this);if(n)e.data("lost-timer",setTimeout(function(){t("#"+wsid.wsid).hasClass("lost")&&t("#"+wsid.wsid).remove()},6e4));else{var i=e.data("lost-timer");i&&(clearTimeout(i),e.data("lost-timer",void 0))}})},user_info:function(e){var n=t(this),i={};if((!e||e.indexOf("id")>=0)&&(i.id=n.attr("id")),!e||e.indexOf("name")>=0){var r=n.prop("title");r&&"Me"!==r&&(i.name=r)}return(!e||e.indexOf("avatar")>=0)&&(i.avatar=n.find("img.avatar").attr("src")),i},users:function(e){
-var n=[],i={users:n};return this.find("li.user[id]").each(function(){var r=t(this),o=r.hasClass("myself"),a=r.chat("user_info",o?void 0:e);o&&(i.self=t.extend({},a),a.is_self=!0),n.push(a)}),i},self:function(t){var e=this.find("li.user.myself[id]");return e.chat("user_info",t)},addUserFile:function(e,n){var i,r=t("#"+e),o=r.find("ul.dropdown-menu");if(o.find("li.file").each(function(){if(t(this).data("file")==n)return i=this,!1}),void 0==i){var a=n.split(".").pop();o.append(t.el.li({class:"file","data-file":n,title:"Shared file"},t.el.a(t.el.span({class:"dropdown-icon type-icon "+a}),n)))}return this},removeUserFile:function(e,n,i){function r(e){var r=e.children("ul.dropdown-menu");r.find("li.file").each(function(){if(t(this).data("file")==n)return t(this).remove(),i&&!e.hasClass("myself")&&0==r.find("li.file").length&&o.chat("removeUser",e.attr("id")),!1})}var o=this;e?r(t("#"+e)):this.children().each(function(){r(t(this),n,i)})}};t.fn.chat=function(e){return h[e]?h[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery."+l):h._init.apply(this,arguments)}}(jQuery)}),function(t,e){var n=0,i=null,r=[],o=null;t.fn.split=function(a){function s(t){if("number"==typeof t)return t;if("string"==typeof t){var e=t.match(/^([0-9\.]+)(px|%)$/);if(e){if("px"==e[2])return+e[1];if("vertical"==h.orientation)return p*+e[1]/100;if("horizontal"==h.orientation)return g*+e[1]/100}}}var l=this.data("splitter");if(l)return l;var c,u,h=t.extend({limit:100,orientation:"horizontal",position:"50%",invisible:!1,onDragStart:t.noop,onDragEnd:t.noop,onDrag:t.noop},a||{});this.settings=h;var d,f=this.children();"vertical"==h.orientation?(c=f.first().addClass("left_panel"),u=c.next().addClass("right_panel"),d="vsplitter"):"horizontal"==h.orientation&&(c=f.first().addClass("top_panel"),u=c.next().addClass("bottom_panel"),d="hsplitter"),h.invisible&&(d+=" splitter-invisible");var p=this.width(),g=this.height(),m=n++;this.addClass("splitter_panel");var v,y=t("<div/>").addClass(d).bind("mouseenter touchstart",function(){i=m}).bind("mouseleave touchend",function(){i=null}).insertAfter(c),x=t.extend(this,{refresh:function(){var t=this.width(),e=this.height();p==t&&g==e||(p=this.width(),g=this.height(),x.position(v))},position:function(){return"vertical"==h.orientation?function(t,n){if(t===e)return v;v=s(t);var i=y.width(),r=i/2;if(h.invisible){var o=c.width(v).outerWidth();u.width(x.width()-o),y.css("left",o-r)}else{var o=c.width(v-r).outerWidth();u.width(x.width()-o-i),y.css("left",o)}return n||x.find(".splitter_panel").trigger("splitter.resize"),x}:"horizontal"==h.orientation?function(t,n){if(t===e)return v;v=s(t);var i=y.height(),r=i/2;if(h.invisible){var o=c.height(v).outerHeight();u.height(x.height()-o),y.css("top",o-r)}else{var o=c.height(v-r).outerHeight();u.height(x.height()-o-i),y.css("top",o)}return n||x.find(".splitter_panel").trigger("splitter.resize"),x}:t.noop}(),orientation:h.orientation,limit:h.limit,isActive:function(){return i===m},destroy:function(){x.removeClass("splitter_panel"),y.unbind("mouseenter"),y.unbind("mouseleave"),y.unbind("touchstart"),y.unbind("touchmove"),y.unbind("touchend"),y.unbind("touchleave"),y.unbind("touchcancel"),"vertical"==h.orientation?(c.removeClass("left_panel"),u.removeClass("right_panel")):"horizontal"==h.orientation&&(c.removeClass("top_panel"),u.removeClass("bottom_panel")),x.unbind("splitter.resize"),x.find(".splitter_panel").trigger("splitter.resize"),r[m]=null,y.remove();for(var e=!1,i=r.length;i--;)if(null!==r[i]){e=!0;break}e||(t(document.documentElement).unbind(".splitter"),t(window).unbind("resize.splitter"),x.data("splitter",null),r=[],n=0)}});x.bind("splitter.resize",function(t){var e=x.position();"vertical"==x.orientation&&e>x.width()?e=x.width()-x.limit-1:"horizontal"==x.orientation&&e>x.height()&&(e=x.height()-x.limit-1),e<x.limit&&(e=x.limit+1),x.position(e,!0)});var b;return"vertical"==h.orientation?b=b>p-h.limit?p-h.limit:s(h.position):"horizontal"==h.orientation&&(b=b>g-h.limit?g-h.limit:s(h.position)),b<h.limit&&(b=h.limit),x.position(b,!0),0==r.length&&(t(window).bind("resize.splitter",function(){t.each(r,function(t,e){e&&e.refresh()})}),t(document.documentElement).bind("mousedown.splitter touchstart.splitter",function(e){if(null!==i)return o=r[i],t('<div class="splitterMask"></div>').css("cursor",o.children().eq(1).css("cursor")).insertAfter(o),o.settings.onDragStart(e),!1}).bind("mouseup.splitter touchend.splitter touchleave.splitter touchcancel.splitter",function(e){o&&(t(".splitterMask").remove(),o.settings.onDragEnd(e),o=null)}).bind("mousemove.splitter touchmove.splitter",function(t){if(null!==o){var e=o.limit,n=o.offset();if("vertical"==o.orientation){var i=t.pageX;t.originalEvent&&t.originalEvent.changedTouches&&(i=t.originalEvent.changedTouches[0].pageX);var r=i-n.left;r<=o.limit?r=o.limit+1:r>=o.width()-e&&(r=o.width()-e-1),r>o.limit&&r<o.width()-e&&(o.position(r,!0),o.find(".splitter_panel").trigger("splitter.resize"),t.preventDefault())}else if("horizontal"==o.orientation){var a=t.pageY;t.originalEvent&&t.originalEvent.changedTouches&&(a=t.originalEvent.changedTouches[0].pageY);var s=a-n.top;s<=o.limit?s=o.limit+1:s>=o.height()-e&&(s=o.height()-e-1),s>o.limit&&s<o.height()-e&&(o.position(s,!0),o.find(".splitter_panel").trigger("splitter.resize"),t.preventDefault())}o.settings.onDrag(t)}})),r.push(x),x.data("splitter",x),x}}(jQuery),define("splitter",["jquery"],function(){}),define("pane",["jquery","splitter"],function(){!function(t){function e(e){var n=e.children();return{splitter:e.split(),first:t(n[0]).children()[0],second:t(n[2]).children()[0]}}function n(t){return"horizontal"==t?"vertical":"horizontal"}var i="tile",r={_init:function(e){return this.each(function(){var e=t(this),n=e.hasClass("horizontal")?"vertical":"horizontal",i=e.attr("data-split"),r=e.children();i=i||"50%",r.each(function(){t(this).wrap('<div class="pane-wrapper"></div>')}),e.addClass("pane-container"),e.split({orientation:n,position:i,limit:10,onDragStart:function(){e.tile("resize_start")},onDrag:function(t){r.trigger("pane.resize")},onDragEnd:function(){e.tile("resize_save")}}),e.tile("resize_save"),e.on("fullscreen",function(t,n){e.tile("resize")})})},resize_start:function(){return this.each(function(){var n=t(this),i=e(n);n.find(".reactive-size").trigger("reactive-resize-start",i.splitter.orientation)})},resize_save:function(){return this.each(function(){var n,i,r=t(this),o=e(r);"horizontal"==o.splitter.orientation?(n=r.height(),i=t(o.first).height()):(n=r.width(),i=t(o.first).width());var a=Math.round(100*i/n)+"%";o.splitter.resizestart=a}),this.find(".reactive-size").trigger("reactive-resize"),this},resize:function(){return this.each(function(){var e=t(this),n=e.split();n.resizestart&&(n.position(n.resizestart),n.settings.onDrag(e))})},split:function(e,i,r,o){i=i||"below";var a=this,s="above"==i||"below"==i?"horizontal":"vertical",l=a.wrap('<div class="pane-container tile "'+n(s)+"></div>").parent();void 0==r?r=50:r<10?r=10:r>90&&(r=90),o&&"horizontal"==s&&(sumh=this.height(),left=sumh*r/100,left<o&&o<.9*sumh&&(r=100*o/sumh)),"above"==i||"left"==i?l.prepend(e):(r=100-r,l.append(e));var c=t(a).add(e);return c.wrap('<div class="pane-wrapper"></div>'),l.split({orientation:s,position:r+"%",limit:10,onDragStart:function(){l.tile("resize_start")},onDrag:function(){c.trigger("pane.resize")},onDragEnd:function(){l.tile("resize_save")}}),l.tile("resize_save"),c.trigger("pane.resize"),l},close:function(){var t=this,e=t.closest(".pane-container");e.split().destroy(),t.parent().remove(),e.children().first().children().first().unwrap().unwrap()}};t.fn.tile=function(e){return r[e]?r[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery."+i):r._init.apply(this,arguments)}}(jQuery)}),function(t,e){"function"==typeof define&&define.amd?define("bloodhound",["jquery"],function(n){return t.Bloodhound=e(n)}):"object"==typeof exports?module.exports=e(require("jquery")):t.Bloodhound=e(jQuery)}(this,function(t){var e=function(){"use strict";return{isMsie:function(){return!!/(msie|trident)/i.test(navigator.userAgent)&&navigator.userAgent.match(/(msie |rv:)(\d+(.\d+)?)/i)[2]},isBlankString:function(t){return!t||/^\s*$/.test(t)},escapeRegExChars:function(t){return t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},isString:function(t){return"string"==typeof t},isNumber:function(t){return"number"==typeof t},isArray:t.isArray,isFunction:t.isFunction,isObject:t.isPlainObject,isUndefined:function(t){return"undefined"==typeof t},isElement:function(t){return!(!t||1!==t.nodeType)},isJQuery:function(e){return e instanceof t},toStr:function(t){return e.isUndefined(t)||null===t?"":t+""},bind:t.proxy,each:function(e,n){function i(t,e){return n(e,t)}t.each(e,i)},map:t.map,filter:t.grep,every:function(e,n){var i=!0;return e?(t.each(e,function(t,r){if(!(i=n.call(null,r,t,e)))return!1}),!!i):i},some:function(e,n){var i=!1;return e?(t.each(e,function(t,r){if(i=n.call(null,r,t,e))return!1}),!!i):i},mixin:t.extend,identity:function(t){return t},clone:function(e){return t.extend(!0,{},e)},getIdGenerator:function(){var t=0;return function(){return t++}},templatify:function(e){function n(){return String(e)}return t.isFunction(e)?e:n},defer:function(t){setTimeout(t,0)},debounce:function(t,e,n){var i,r;return function(){var o,a,s=this,l=arguments;return o=function(){i=null,n||(r=t.apply(s,l))},a=n&&!i,clearTimeout(i),i=setTimeout(o,e),a&&(r=t.apply(s,l)),r}},throttle:function(t,e){var n,i,r,o,a,s;return a=0,s=function(){a=new Date,r=null,o=t.apply(n,i)},function(){var l=new Date,c=e-(l-a);return n=this,i=arguments,c<=0?(clearTimeout(r),r=null,a=l,o=t.apply(n,i)):r||(r=setTimeout(s,c)),o}},stringify:function(t){return e.isString(t)?t:JSON.stringify(t)},noop:function(){}}}(),n="0.11.1",i=function(){"use strict";function t(t){return t=e.toStr(t),t?t.split(/\s+/):[]}function n(t){return t=e.toStr(t),t?t.split(/\W+/):[]}function i(t){return function(n){return n=e.isArray(n)?n:[].slice.call(arguments,0),function(i){var r=[];return e.each(n,function(n){r=r.concat(t(e.toStr(i[n])))}),r}}}return{nonword:n,whitespace:t,obj:{nonword:i(n),whitespace:i(t)}}}(),r=function(){"use strict";function n(n){this.maxSize=e.isNumber(n)?n:100,this.reset(),this.maxSize<=0&&(this.set=this.get=t.noop)}function i(){this.head=this.tail=null}function r(t,e){this.key=t,this.val=e,this.prev=this.next=null}return e.mixin(n.prototype,{set:function(t,e){var n,i=this.list.tail;this.size>=this.maxSize&&(this.list.remove(i),delete this.hash[i.key],this.size--),(n=this.hash[t])?(n.val=e,this.list.moveToFront(n)):(n=new r(t,e),this.list.add(n),this.hash[t]=n,this.size++)},get:function(t){var e=this.hash[t];if(e)return this.list.moveToFront(e),e.val},reset:function(){this.size=0,this.hash={},this.list=new i}}),e.mixin(i.prototype,{add:function(t){this.head&&(t.next=this.head,this.head.prev=t),this.head=t,this.tail=this.tail||t},remove:function(t){t.prev?t.prev.next=t.next:this.head=t.next,t.next?t.next.prev=t.prev:this.tail=t.prev},moveToFront:function(t){this.remove(t),this.add(t)}}),n}(),o=function(){"use strict";function n(t,n){this.prefix=["__",t,"__"].join(""),this.ttlKey="__ttl__",this.keyMatcher=new RegExp("^"+e.escapeRegExChars(this.prefix)),this.ls=n||s,!this.ls&&this._noop()}function i(){return(new Date).getTime()}function r(t){return JSON.stringify(e.isUndefined(t)?null:t)}function o(e){return t.parseJSON(e)}function a(t){var e,n,i=[],r=s.length;for(e=0;e<r;e++)(n=s.key(e)).match(t)&&i.push(n.replace(t,""));return i}var s;try{s=window.localStorage,s.setItem("~~~","!"),s.removeItem("~~~")}catch(t){s=null}return e.mixin(n.prototype,{_prefix:function(t){return this.prefix+t},_ttlKey:function(t){return this._prefix(t)+this.ttlKey},_noop:function(){this.get=this.set=this.remove=this.clear=this.isExpired=e.noop},_safeSet:function(t,e){try{this.ls.setItem(t,e)}catch(t){"QuotaExceededError"===t.name&&(this.clear(),this._noop())}},get:function(t){return this.isExpired(t)&&this.remove(t),o(this.ls.getItem(this._prefix(t)))},set:function(t,n,o){return e.isNumber(o)?this._safeSet(this._ttlKey(t),r(i()+o)):this.ls.removeItem(this._ttlKey(t)),this._safeSet(this._prefix(t),r(n))},remove:function(t){return this.ls.removeItem(this._ttlKey(t)),this.ls.removeItem(this._prefix(t)),this},clear:function(){var t,e=a(this.keyMatcher);for(t=e.length;t--;)this.remove(e[t]);return this},isExpired:function(t){var n=o(this.ls.getItem(this._ttlKey(t)));return!!(e.isNumber(n)&&i()>n)}}),n}(),a=function(){"use strict";function n(t){t=t||{},this.cancelled=!1,this.lastReq=null,this._send=t.transport,this._get=t.limiter?t.limiter(this._get):this._get,this._cache=t.cache===!1?new r(0):s}var i=0,o={},a=6,s=new r(10);return n.setMaxPendingRequests=function(t){a=t},n.resetCache=function(){s.reset()},e.mixin(n.prototype,{_fingerprint:function(e){return e=e||{},e.url+e.type+t.param(e.data||{})},_get:function(t,e){function n(t){e(null,t),u._cache.set(l,t)}function r(){e(!0)}function s(){i--,delete o[l],u.onDeckRequestArgs&&(u._get.apply(u,u.onDeckRequestArgs),u.onDeckRequestArgs=null)}var l,c,u=this;l=this._fingerprint(t),this.cancelled||l!==this.lastReq||((c=o[l])?c.done(n).fail(r):i<a?(i++,o[l]=this._send(t).done(n).fail(r).always(s)):this.onDeckRequestArgs=[].slice.call(arguments,0))},get:function(n,i){var r,o;i=i||t.noop,n=e.isString(n)?{url:n}:n||{},o=this._fingerprint(n),this.cancelled=!1,this.lastReq=o,(r=this._cache.get(o))?i(null,r):this._get(n,i)},cancel:function(){this.cancelled=!0}}),n}(),s=window.SearchIndex=function(){"use strict";function n(n){n=n||{},n.datumTokenizer&&n.queryTokenizer||t.error("datumTokenizer and queryTokenizer are both required"),this.identify=n.identify||e.stringify,this.datumTokenizer=n.datumTokenizer,this.queryTokenizer=n.queryTokenizer,this.reset()}function i(t){return t=e.filter(t,function(t){return!!t}),t=e.map(t,function(t){return t.toLowerCase()})}function r(){var t={};return t[l]=[],t[s]={},t}function o(t){for(var e={},n=[],i=0,r=t.length;i<r;i++)e[t[i]]||(e[t[i]]=!0,n.push(t[i]));return n}function a(t,e){var n=0,i=0,r=[];t=t.sort(),e=e.sort();for(var o=t.length,a=e.length;n<o&&i<a;)t[n]<e[i]?n++:t[n]>e[i]?i++:(r.push(t[n]),n++,i++);return r}var s="c",l="i";return e.mixin(n.prototype,{bootstrap:function(t){this.datums=t.datums,this.trie=t.trie},add:function(t){var n=this;t=e.isArray(t)?t:[t],e.each(t,function(t){var o,a;n.datums[o=n.identify(t)]=t,a=i(n.datumTokenizer(t)),e.each(a,function(t){var e,i,a;for(e=n.trie,i=t.split("");a=i.shift();)e=e[s][a]||(e[s][a]=r()),e[l].push(o)})})},get:function(t){var n=this;return e.map(t,function(t){return n.datums[t]})},search:function(t){var n,r,c=this;return n=i(this.queryTokenizer(t)),e.each(n,function(t){var e,n,i,o;if(r&&0===r.length)return!1;for(e=c.trie,n=t.split("");e&&(i=n.shift());)e=e[s][i];return e&&0===n.length?(o=e[l].slice(0),void(r=r?a(r,o):o)):(r=[],!1)}),r?e.map(o(r),function(t){return c.datums[t]}):[]},all:function(){var t=[];for(var e in this.datums)t.push(this.datums[e]);return t},reset:function(){this.datums={},this.trie=r()},serialize:function(){return{datums:this.datums,trie:this.trie}}}),n}(),l=function(){"use strict";function t(t){this.url=t.url,this.ttl=t.ttl,this.cache=t.cache,this.prepare=t.prepare,this.transform=t.transform,this.transport=t.transport,this.thumbprint=t.thumbprint,this.storage=new o(t.cacheKey)}var n;return n={data:"data",protocol:"protocol",thumbprint:"thumbprint"},e.mixin(t.prototype,{_settings:function(){return{url:this.url,type:"GET",dataType:"json"}},store:function(t){this.cache&&(this.storage.set(n.data,t,this.ttl),this.storage.set(n.protocol,location.protocol,this.ttl),this.storage.set(n.thumbprint,this.thumbprint,this.ttl))},fromCache:function(){var t,e={};return this.cache?(e.data=this.storage.get(n.data),e.protocol=this.storage.get(n.protocol),e.thumbprint=this.storage.get(n.thumbprint),t=e.thumbprint!==this.thumbprint||e.protocol!==location.protocol,e.data&&!t?e.data:null):null},fromNetwork:function(t){function e(){t(!0)}function n(e){t(null,r.transform(e))}var i,r=this;t&&(i=this.prepare(this._settings()),this.transport(i).fail(e).done(n))},clear:function(){return this.storage.clear(),this}}),t}(),c=function(){"use strict";function t(t){this.url=t.url,this.prepare=t.prepare,this.transform=t.transform,this.transport=new a({cache:t.cache,limiter:t.limiter,transport:t.transport})}return e.mixin(t.prototype,{_settings:function(){return{url:this.url,type:"GET",dataType:"json"}},get:function(t,e){function n(t,n){e(t?[]:r.transform(n))}var i,r=this;if(e)return t=t||"",i=this.prepare(t,this._settings()),this.transport.get(i,n)},cancelLastRequest:function(){this.transport.cancel()}}),t}(),u=function(){"use strict";function i(i){var r;return i?(r={url:null,ttl:864e5,cache:!0,cacheKey:null,thumbprint:"",prepare:e.identity,transform:e.identity,transport:null},i=e.isString(i)?{url:i}:i,i=e.mixin(r,i),!i.url&&t.error("prefetch requires url to be set"),i.transform=i.filter||i.transform,i.cacheKey=i.cacheKey||i.url,i.thumbprint=n+i.thumbprint,i.transport=i.transport?s(i.transport):t.ajax,i):null}function r(n){var i;if(n)return i={url:null,cache:!0,prepare:null,replace:null,wildcard:null,limiter:null,rateLimitBy:"debounce",rateLimitWait:300,transform:e.identity,transport:null},n=e.isString(n)?{url:n}:n,n=e.mixin(i,n),!n.url&&t.error("remote requires url to be set"),n.transform=n.filter||n.transform,n.prepare=o(n),n.limiter=a(n),n.transport=n.transport?s(n.transport):t.ajax,delete n.replace,delete n.wildcard,delete n.rateLimitBy,delete n.rateLimitWait,n}function o(t){function e(t,e){return e.url=o(e.url,t),e}function n(t,e){return e.url=e.url.replace(a,encodeURIComponent(t)),e}function i(t,e){return e}var r,o,a;return r=t.prepare,o=t.replace,a=t.wildcard,r?r:r=o?e:t.wildcard?n:i}function a(t){function n(t){return function(n){return e.debounce(n,t)}}function i(t){return function(n){return e.throttle(n,t)}}var r,o,a;return r=t.limiter,o=t.rateLimitBy,a=t.rateLimitWait,r||(r=/^throttle$/i.test(o)?i(a):n(a)),r}function s(n){return function(i){function r(t){e.defer(function(){a.resolve(t)})}function o(t){e.defer(function(){a.reject(t)})}var a=t.Deferred();return n(i,r,o),a}}return function(n){var o,a;return o={initialize:!0,identify:e.stringify,datumTokenizer:null,queryTokenizer:null,sufficient:5,sorter:null,local:[],prefetch:null,remote:null},n=e.mixin(o,n||{}),!n.datumTokenizer&&t.error("datumTokenizer is required"),!n.queryTokenizer&&t.error("queryTokenizer is required"),a=n.sorter,n.sorter=a?function(t){return t.sort(a)}:e.identity,n.local=e.isFunction(n.local)?n.local():n.local,n.prefetch=i(n.prefetch),n.remote=r(n.remote),n}}(),h=function(){"use strict";function n(t){t=u(t),this.sorter=t.sorter,this.identify=t.identify,this.sufficient=t.sufficient,this.local=t.local,this.remote=t.remote?new c(t.remote):null,this.prefetch=t.prefetch?new l(t.prefetch):null,this.index=new s({identify:this.identify,datumTokenizer:t.datumTokenizer,queryTokenizer:t.queryTokenizer}),t.initialize!==!1&&this.initialize()}var r;return r=window&&window.Bloodhound,n.noConflict=function(){return window&&(window.Bloodhound=r),n},n.tokenizers=i,e.mixin(n.prototype,{__ttAdapter:function(){function t(t,e,i){return n.search(t,e,i)}function e(t,e){return n.search(t,e)}var n=this;return this.remote?t:e},_loadPrefetch:function(){function e(t,e){return t?n.reject():(r.add(e),r.prefetch.store(r.index.serialize()),void n.resolve())}var n,i,r=this;return n=t.Deferred(),this.prefetch?(i=this.prefetch.fromCache())?(this.index.bootstrap(i),n.resolve()):this.prefetch.fromNetwork(e):n.resolve(),n.promise()},_initialize:function(){function t(){e.add(e.local)}var e=this;return this.clear(),(this.initPromise=this._loadPrefetch()).done(t),this.initPromise},initialize:function(t){return!this.initPromise||t?this._initialize():this.initPromise},add:function(t){return this.index.add(t),this},get:function(t){return t=e.isArray(t)?t:[].slice.call(arguments),this.index.get(t)},search:function(t,n,i){function r(t){var n=[];e.each(t,function(t){!e.some(o,function(e){return a.identify(t)===a.identify(e)})&&n.push(t)}),i&&i(n)}var o,a=this;return o=this.sorter(this.index.search(t)),n(this.remote?o.slice():o),this.remote&&o.length<this.sufficient?this.remote.get(t,r):this.remote&&this.remote.cancelLastRequest(),this},all:function(){return this.index.all()},clear:function(){return this.index.reset(),this},clearPrefetchCache:function(){return this.prefetch&&this.prefetch.clear(),this},clearRemoteCache:function(){return a.resetCache(),this},ttAdapter:function(){return this.__ttAdapter()}}),n}();return h}),function(t,e){"function"==typeof define&&define.amd?define("typeahead.js",["jquery"],function(t){return e(t)}):"object"==typeof exports?module.exports=e(require("jquery")):e(jQuery)}(this,function(t){var e=function(){"use strict";return{isMsie:function(){return!!/(msie|trident)/i.test(navigator.userAgent)&&navigator.userAgent.match(/(msie |rv:)(\d+(.\d+)?)/i)[2]},isBlankString:function(t){return!t||/^\s*$/.test(t)},escapeRegExChars:function(t){return t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},isString:function(t){return"string"==typeof t},isNumber:function(t){return"number"==typeof t},isArray:t.isArray,isFunction:t.isFunction,isObject:t.isPlainObject,isUndefined:function(t){return"undefined"==typeof t},isElement:function(t){return!(!t||1!==t.nodeType)},isJQuery:function(e){return e instanceof t},toStr:function(t){return e.isUndefined(t)||null===t?"":t+""},bind:t.proxy,each:function(e,n){function i(t,e){return n(e,t)}t.each(e,i)},map:t.map,filter:t.grep,every:function(e,n){var i=!0;return e?(t.each(e,function(t,r){if(!(i=n.call(null,r,t,e)))return!1}),!!i):i},some:function(e,n){var i=!1;return e?(t.each(e,function(t,r){if(i=n.call(null,r,t,e))return!1}),!!i):i},mixin:t.extend,identity:function(t){return t},clone:function(e){return t.extend(!0,{},e)},getIdGenerator:function(){var t=0;return function(){return t++}},templatify:function(e){function n(){return String(e)}return t.isFunction(e)?e:n},defer:function(t){setTimeout(t,0)},debounce:function(t,e,n){var i,r;return function(){var o,a,s=this,l=arguments;return o=function(){i=null,n||(r=t.apply(s,l))},a=n&&!i,clearTimeout(i),i=setTimeout(o,e),a&&(r=t.apply(s,l)),r}},throttle:function(t,e){var n,i,r,o,a,s;return a=0,s=function(){a=new Date,r=null,o=t.apply(n,i)},function(){var l=new Date,c=e-(l-a);return n=this,i=arguments,c<=0?(clearTimeout(r),r=null,a=l,o=t.apply(n,i)):r||(r=setTimeout(s,c)),o}},stringify:function(t){return e.isString(t)?t:JSON.stringify(t)},noop:function(){}}}(),n=function(){"use strict";function t(t){var a,s;return s=e.mixin({},o,t),a={css:r(),classes:s,html:n(s),selectors:i(s)},{css:a.css,html:a.html,classes:a.classes,selectors:a.selectors,mixin:function(t){e.mixin(t,a)}}}function n(t){return{wrapper:'<span class="'+t.wrapper+'"></span>',menu:'<div class="'+t.menu+'"></div>'}}function i(t){var n={};return e.each(t,function(t,e){n[e]="."+t}),n}function r(){var t={wrapper:{position:"relative",display:"inline-block"},hint:{position:"absolute",top:"0",left:"0",borderColor:"transparent",boxShadow:"none",opacity:"1"},input:{position:"relative",verticalAlign:"top",backgroundColor:"transparent"},inputWithNoHint:{position:"relative",verticalAlign:"top"},menu:{position:"absolute",top:"100%",left:"0",zIndex:"100",display:"none"},ltr:{left:"0",right:"auto"},rtl:{left:"auto",right:" 0"}};return e.isMsie()&&e.mixin(t.input,{backgroundImage:"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)"}),t}var o={wrapper:"twitter-typeahead",input:"tt-input",hint:"tt-hint",menu:"tt-menu",dataset:"tt-dataset",suggestion:"tt-suggestion",selectable:"tt-selectable",empty:"tt-empty",open:"tt-open",cursor:"tt-cursor",highlight:"tt-highlight"};return t}(),i=function(){"use strict";function n(e){e&&e.el||t.error("EventBus initialized without el"),this.$el=t(e.el)}var i,r;return i="typeahead:",r={render:"rendered",cursorchange:"cursorchanged",select:"selected",autocomplete:"autocompleted"},e.mixin(n.prototype,{_trigger:function(e,n){var r;return r=t.Event(i+e),(n=n||[]).unshift(r),this.$el.trigger.apply(this.$el,n),r},before:function(t){var e,n;return e=[].slice.call(arguments,1),n=this._trigger("before"+t,e),n.isDefaultPrevented()},trigger:function(t){var e;this._trigger(t,[].slice.call(arguments,1)),(e=r[t])&&this._trigger(e,[].slice.call(arguments,1))}}),n}(),r=function(){"use strict";function t(t,e,n,i){var r;if(!n)return this;for(e=e.split(l),n=i?s(n,i):n,this._callbacks=this._callbacks||{};r=e.shift();)this._callbacks[r]=this._callbacks[r]||{sync:[],async:[]},this._callbacks[r][t].push(n);return this}function e(e,n,i){return t.call(this,"async",e,n,i)}function n(e,n,i){return t.call(this,"sync",e,n,i)}function i(t){var e;if(!this._callbacks)return this;for(t=t.split(l);e=t.shift();)delete this._callbacks[e];return this}function r(t){var e,n,i,r,a;if(!this._callbacks)return this;for(t=t.split(l),i=[].slice.call(arguments,1);(e=t.shift())&&(n=this._callbacks[e]);)r=o(n.sync,this,[e].concat(i)),a=o(n.async,this,[e].concat(i)),r()&&c(a);return this}function o(t,e,n){function i(){for(var i,r=0,o=t.length;!i&&r<o;r+=1)i=t[r].apply(e,n)===!1;return!i}return i}function a(){var t;return t=window.setImmediate?function(t){setImmediate(function(){t()})}:function(t){setTimeout(function(){t()},0)}}function s(t,e){return t.bind?t.bind(e):function(){t.apply(e,[].slice.call(arguments,0))}}var l=/\s+/,c=a();return{onSync:n,onAsync:e,off:i,trigger:r}}(),o=function(t){"use strict";function n(t,n,i){for(var r,o=[],a=0,s=t.length;a<s;a++)o.push(e.escapeRegExChars(t[a]));return r=i?"\\b("+o.join("|")+")\\b":"("+o.join("|")+")",n?new RegExp(r):new RegExp(r,"i")}var i={node:null,pattern:null,tagName:"strong",className:null,wordsOnly:!1,caseSensitive:!1};return function(r){function o(e){var n,i,o;return(n=s.exec(e.data))&&(o=t.createElement(r.tagName),r.className&&(o.className=r.className),i=e.splitText(n.index),i.splitText(n[0].length),o.appendChild(i.cloneNode(!0)),e.parentNode.replaceChild(o,i)),!!n}function a(t,e){for(var n,i=3,r=0;r<t.childNodes.length;r++)n=t.childNodes[r],n.nodeType===i?r+=e(n)?1:0:a(n,e)}var s;r=e.mixin({},i,r),r.node&&r.pattern&&(r.pattern=e.isArray(r.pattern)?r.pattern:[r.pattern],s=n(r.pattern,r.caseSensitive,r.wordsOnly),a(r.node,o))}}(window.document),a=function(){"use strict";function n(n,r){n=n||{},n.input||t.error("input is missing"),r.mixin(this),this.$hint=t(n.hint),this.$input=t(n.input),this.query=this.$input.val(),this.queryWhenFocused=this.hasFocus()?this.query:null,this.$overflowHelper=i(this.$input),this._checkLanguageDirection(),0===this.$hint.length&&(this.setHint=this.getHint=this.clearHint=this.clearHintIfInvalid=e.noop)}function i(e){return t('<pre aria-hidden="true"></pre>').css({position:"absolute",visibility:"hidden",whiteSpace:"pre",fontFamily:e.css("font-family"),fontSize:e.css("font-size"),fontStyle:e.css("font-style"),fontVariant:e.css("font-variant"),fontWeight:e.css("font-weight"),wordSpacing:e.css("word-spacing"),letterSpacing:e.css("letter-spacing"),textIndent:e.css("text-indent"),textRendering:e.css("text-rendering"),textTransform:e.css("text-transform")}).insertAfter(e)}function o(t,e){return n.normalizeQuery(t)===n.normalizeQuery(e)}function a(t){return t.altKey||t.ctrlKey||t.metaKey||t.shiftKey}var s;return s={9:"tab",27:"esc",37:"left",39:"right",13:"enter",38:"up",40:"down"},n.normalizeQuery=function(t){return e.toStr(t).replace(/^\s*/g,"").replace(/\s{2,}/g," ")},e.mixin(n.prototype,r,{_onBlur:function(){this.resetInputValue(),this.trigger("blurred")},_onFocus:function(){this.queryWhenFocused=this.query,this.trigger("focused")},_onKeydown:function(t){var e=s[t.which||t.keyCode];this._managePreventDefault(e,t),e&&this._shouldTrigger(e,t)&&this.trigger(e+"Keyed",t)},_onInput:function(){this._setQuery(this.getInputValue()),this.clearHintIfInvalid(),this._checkLanguageDirection()},_managePreventDefault:function(t,e){var n;switch(t){case"up":case"down":n=!a(e);break;default:n=!1}n&&e.preventDefault()},_shouldTrigger:function(t,e){var n;switch(t){case"tab":n=!a(e);break;default:n=!0}return n},_checkLanguageDirection:function(){var t=(this.$input.css("direction")||"ltr").toLowerCase();this.dir!==t&&(this.dir=t,this.$hint.attr("dir",t),this.trigger("langDirChanged",t))},_setQuery:function(t,e){var n,i;n=o(t,this.query),i=!!n&&this.query.length!==t.length,this.query=t,e||n?!e&&i&&this.trigger("whitespaceChanged",this.query):this.trigger("queryChanged",this.query)},bind:function(){var t,n,i,r,o=this;return t=e.bind(this._onBlur,this),n=e.bind(this._onFocus,this),i=e.bind(this._onKeydown,this),r=e.bind(this._onInput,this),this.$input.on("blur.tt",t).on("focus.tt",n).on("keydown.tt",i),!e.isMsie()||e.isMsie()>9?this.$input.on("input.tt",r):this.$input.on("keydown.tt keypress.tt cut.tt paste.tt",function(t){s[t.which||t.keyCode]||e.defer(e.bind(o._onInput,o,t))}),this},focus:function(){this.$input.focus()},blur:function(){this.$input.blur()},getLangDir:function(){return this.dir},getQuery:function(){return this.query||""},setQuery:function(t,e){this.setInputValue(t),this._setQuery(t,e)},hasQueryChangedSinceLastFocus:function(){return this.query!==this.queryWhenFocused},getInputValue:function(){return this.$input.val()},setInputValue:function(t){this.$input.val(t),this.clearHintIfInvalid(),this._checkLanguageDirection()},resetInputValue:function(){this.setInputValue(this.query)},getHint:function(){return this.$hint.val()},setHint:function(t){this.$hint.val(t)},clearHint:function(){this.setHint("")},clearHintIfInvalid:function(){var t,e,n,i;t=this.getInputValue(),e=this.getHint(),n=t!==e&&0===e.indexOf(t),i=""!==t&&n&&!this.hasOverflow(),!i&&this.clearHint()},hasFocus:function(){return this.$input.is(":focus")},hasOverflow:function(){var t=this.$input.width()-2;return this.$overflowHelper.text(this.getInputValue()),this.$overflowHelper.width()>=t},isCursorAtEnd:function(){var t,n,i;return t=this.$input.val().length,n=this.$input[0].selectionStart,e.isNumber(n)?n===t:!document.selection||(i=document.selection.createRange(),i.moveStart("character",-t),t===i.text.length)},destroy:function(){this.$hint.off(".tt"),this.$input.off(".tt"),this.$overflowHelper.remove(),this.$hint=this.$input=this.$overflowHelper=t("<div>")}}),n}(),s=function(){"use strict";function n(n,r){n=n||{},n.templates=n.templates||{},n.templates.notFound=n.templates.notFound||n.templates.empty,n.source||t.error("missing source"),n.node||t.error("missing node"),n.name&&!s(n.name)&&t.error("invalid dataset name: "+n.name),r.mixin(this),this.highlight=!!n.highlight,this.name=n.name||c(),this.limit=n.limit||5,this.displayFn=i(n.display||n.displayKey),this.templates=a(n.templates,this.displayFn),this.source=n.source.__ttAdapter?n.source.__ttAdapter():n.source,this.async=e.isUndefined(n.async)?this.source.length>2:!!n.async,this._resetLastSuggestion(),this.$el=t(n.node).addClass(this.classes.dataset).addClass(this.classes.dataset+"-"+this.name)}function i(t){function n(e){return e[t]}return t=t||e.stringify,e.isFunction(t)?t:n}function a(n,i){function r(e){return t("<div>").text(i(e))}return{notFound:n.notFound&&e.templatify(n.notFound),pending:n.pending&&e.templatify(n.pending),header:n.header&&e.templatify(n.header),footer:n.footer&&e.templatify(n.footer),suggestion:n.suggestion||r}}function s(t){return/^[_a-zA-Z0-9-]+$/.test(t)}var l,c;return l={val:"tt-selectable-display",obj:"tt-selectable-object"},c=e.getIdGenerator(),n.extractData=function(e){var n=t(e);return n.data(l.obj)?{val:n.data(l.val)||"",obj:n.data(l.obj)||null}:null},e.mixin(n.prototype,r,{_overwrite:function(t,e){e=e||[],e.length?this._renderSuggestions(t,e):this.async&&this.templates.pending?this._renderPending(t):!this.async&&this.templates.notFound?this._renderNotFound(t):this._empty(),this.trigger("rendered",this.name,e,!1)},_append:function(t,e){
-e=e||[],e.length&&this.$lastSuggestion.length?this._appendSuggestions(t,e):e.length?this._renderSuggestions(t,e):!this.$lastSuggestion.length&&this.templates.notFound&&this._renderNotFound(t),this.trigger("rendered",this.name,e,!0)},_renderSuggestions:function(t,e){var n;n=this._getSuggestionsFragment(t,e),this.$lastSuggestion=n.children().last(),this.$el.html(n).prepend(this._getHeader(t,e)).append(this._getFooter(t,e))},_appendSuggestions:function(t,e){var n,i;n=this._getSuggestionsFragment(t,e),i=n.children().last(),this.$lastSuggestion.after(n),this.$lastSuggestion=i},_renderPending:function(t){var e=this.templates.pending;this._resetLastSuggestion(),e&&this.$el.html(e({query:t,dataset:this.name}))},_renderNotFound:function(t){var e=this.templates.notFound;this._resetLastSuggestion(),e&&this.$el.html(e({query:t,dataset:this.name}))},_empty:function(){this.$el.empty(),this._resetLastSuggestion()},_getSuggestionsFragment:function(n,i){var r,a=this;return r=document.createDocumentFragment(),e.each(i,function(e){var i,o;o=a._injectQuery(n,e),i=t(a.templates.suggestion(o)).data(l.obj,e).data(l.val,a.displayFn(e)).addClass(a.classes.suggestion+" "+a.classes.selectable),r.appendChild(i[0])}),this.highlight&&o({className:this.classes.highlight,node:r,pattern:n}),t(r)},_getFooter:function(t,e){return this.templates.footer?this.templates.footer({query:t,suggestions:e,dataset:this.name}):null},_getHeader:function(t,e){return this.templates.header?this.templates.header({query:t,suggestions:e,dataset:this.name}):null},_resetLastSuggestion:function(){this.$lastSuggestion=t()},_injectQuery:function(t,n){return e.isObject(n)?e.mixin({_query:t},n):n},update:function(e){function n(t){a||(a=!0,t=(t||[]).slice(0,r.limit),s=t.length,r._overwrite(e,t),s<r.limit&&r.async&&r.trigger("asyncRequested",e))}function i(n){n=n||[],!o&&s<r.limit&&(r.cancel=t.noop,s+=n.length,r._append(e,n.slice(0,r.limit-s)),r.async&&r.trigger("asyncReceived",e))}var r=this,o=!1,a=!1,s=0;this.cancel(),this.cancel=function(){o=!0,r.cancel=t.noop,r.async&&r.trigger("asyncCanceled",e)},this.source(e,n,i),!a&&n([])},cancel:t.noop,clear:function(){this._empty(),this.cancel(),this.trigger("cleared")},isEmpty:function(){return this.$el.is(":empty")},destroy:function(){this.$el=t("<div>")}}),n}(),l=function(){"use strict";function n(n,i){function r(e){var n=o.$node.find(e.node).first();return e.node=n.length?n:t("<div>").appendTo(o.$node),new s(e,i)}var o=this;n=n||{},n.node||t.error("node is required"),i.mixin(this),this.$node=t(n.node),this.query=null,this.datasets=e.map(n.datasets,r)}return e.mixin(n.prototype,r,{_onSelectableClick:function(e){this.trigger("selectableClicked",t(e.currentTarget))},_onRendered:function(t,e,n,i){this.$node.toggleClass(this.classes.empty,this._allDatasetsEmpty()),this.trigger("datasetRendered",e,n,i)},_onCleared:function(){this.$node.toggleClass(this.classes.empty,this._allDatasetsEmpty()),this.trigger("datasetCleared")},_propagate:function(){this.trigger.apply(this,arguments)},_allDatasetsEmpty:function(){function t(t){return t.isEmpty()}return e.every(this.datasets,t)},_getSelectables:function(){return this.$node.find(this.selectors.selectable)},_removeCursor:function(){var t=this.getActiveSelectable();t&&t.removeClass(this.classes.cursor)},_ensureVisible:function(t){var e,n,i,r;e=t.position().top,n=e+t.outerHeight(!0),i=this.$node.scrollTop(),r=this.$node.height()+parseInt(this.$node.css("paddingTop"),10)+parseInt(this.$node.css("paddingBottom"),10),e<0?this.$node.scrollTop(i+e):r<n&&this.$node.scrollTop(i+(n-r))},bind:function(){var t,n=this;return t=e.bind(this._onSelectableClick,this),this.$node.on("click.tt",this.selectors.selectable,t),e.each(this.datasets,function(t){t.onSync("asyncRequested",n._propagate,n).onSync("asyncCanceled",n._propagate,n).onSync("asyncReceived",n._propagate,n).onSync("rendered",n._onRendered,n).onSync("cleared",n._onCleared,n)}),this},isOpen:function(){return this.$node.hasClass(this.classes.open)},open:function(){this.$node.addClass(this.classes.open)},close:function(){this.$node.removeClass(this.classes.open),this._removeCursor()},setLanguageDirection:function(t){this.$node.attr("dir",t)},selectableRelativeToCursor:function(t){var e,n,i,r;return n=this.getActiveSelectable(),e=this._getSelectables(),i=n?e.index(n):-1,r=i+t,r=(r+1)%(e.length+1)-1,r=r<-1?e.length-1:r,r===-1?null:e.eq(r)},setCursor:function(t){this._removeCursor(),(t=t&&t.first())&&(t.addClass(this.classes.cursor),this._ensureVisible(t))},getSelectableData:function(t){return t&&t.length?s.extractData(t):null},getActiveSelectable:function(){var t=this._getSelectables().filter(this.selectors.cursor).first();return t.length?t:null},getTopSelectable:function(){var t=this._getSelectables().first();return t.length?t:null},update:function(t){function n(e){e.update(t)}var i=t!==this.query;return i&&(this.query=t,e.each(this.datasets,n)),i},empty:function(){function t(t){t.clear()}e.each(this.datasets,t),this.query=null,this.$node.addClass(this.classes.empty)},destroy:function(){function n(t){t.destroy()}this.$node.off(".tt"),this.$node=t("<div>"),e.each(this.datasets,n)}}),n}(),c=function(){"use strict";function t(){l.apply(this,[].slice.call(arguments,0))}var n=l.prototype;return e.mixin(t.prototype,l.prototype,{open:function(){return!this._allDatasetsEmpty()&&this._show(),n.open.apply(this,[].slice.call(arguments,0))},close:function(){return this._hide(),n.close.apply(this,[].slice.call(arguments,0))},_onRendered:function(){return this._allDatasetsEmpty()?this._hide():this.isOpen()&&this._show(),n._onRendered.apply(this,[].slice.call(arguments,0))},_onCleared:function(){return this._allDatasetsEmpty()?this._hide():this.isOpen()&&this._show(),n._onCleared.apply(this,[].slice.call(arguments,0))},setLanguageDirection:function(t){return this.$node.css("ltr"===t?this.css.ltr:this.css.rtl),n.setLanguageDirection.apply(this,[].slice.call(arguments,0))},_hide:function(){this.$node.hide()},_show:function(){this.$node.css("display","block")}}),t}(),u=function(){"use strict";function n(n,r){var o,a,s,l,c,u,h,d,f,p,g;n=n||{},n.input||t.error("missing input"),n.menu||t.error("missing menu"),n.eventBus||t.error("missing event bus"),r.mixin(this),this.eventBus=n.eventBus,this.minLength=e.isNumber(n.minLength)?n.minLength:1,this.input=n.input,this.menu=n.menu,this.enabled=!0,this.active=!1,this.input.hasFocus()&&this.activate(),this.dir=this.input.getLangDir(),this._hacks(),this.menu.bind().onSync("selectableClicked",this._onSelectableClicked,this).onSync("asyncRequested",this._onAsyncRequested,this).onSync("asyncCanceled",this._onAsyncCanceled,this).onSync("asyncReceived",this._onAsyncReceived,this).onSync("datasetRendered",this._onDatasetRendered,this).onSync("datasetCleared",this._onDatasetCleared,this),o=i(this,"activate","open","_onFocused"),a=i(this,"deactivate","_onBlurred"),s=i(this,"isActive","isOpen","_onEnterKeyed"),l=i(this,"isActive","isOpen","_onTabKeyed"),c=i(this,"isActive","_onEscKeyed"),u=i(this,"isActive","open","_onUpKeyed"),h=i(this,"isActive","open","_onDownKeyed"),d=i(this,"isActive","isOpen","_onLeftKeyed"),f=i(this,"isActive","isOpen","_onRightKeyed"),p=i(this,"_openIfActive","_onQueryChanged"),g=i(this,"_openIfActive","_onWhitespaceChanged"),this.input.bind().onSync("focused",o,this).onSync("blurred",a,this).onSync("enterKeyed",s,this).onSync("tabKeyed",l,this).onSync("escKeyed",c,this).onSync("upKeyed",u,this).onSync("downKeyed",h,this).onSync("leftKeyed",d,this).onSync("rightKeyed",f,this).onSync("queryChanged",p,this).onSync("whitespaceChanged",g,this).onSync("langDirChanged",this._onLangDirChanged,this)}function i(t){var n=[].slice.call(arguments,1);return function(){var i=[].slice.call(arguments);e.each(n,function(e){return t[e].apply(t,i)})}}return e.mixin(n.prototype,{_hacks:function(){var n,i;n=this.input.$input||t("<div>"),i=this.menu.$node||t("<div>"),n.on("blur.tt",function(t){var r,o,a;r=document.activeElement,o=i.is(r),a=i.has(r).length>0,e.isMsie()&&(o||a)&&(t.preventDefault(),t.stopImmediatePropagation(),e.defer(function(){n.focus()}))}),i.on("mousedown.tt",function(t){t.preventDefault()})},_onSelectableClicked:function(t,e){this.select(e)},_onDatasetCleared:function(){this._updateHint()},_onDatasetRendered:function(t,e,n,i){this._updateHint(),this.eventBus.trigger("render",n,i,e)},_onAsyncRequested:function(t,e,n){this.eventBus.trigger("asyncrequest",n,e)},_onAsyncCanceled:function(t,e,n){this.eventBus.trigger("asynccancel",n,e)},_onAsyncReceived:function(t,e,n){this.eventBus.trigger("asyncreceive",n,e)},_onFocused:function(){this._minLengthMet()&&this.menu.update(this.input.getQuery())},_onBlurred:function(){this.input.hasQueryChangedSinceLastFocus()&&this.eventBus.trigger("change",this.input.getQuery())},_onEnterKeyed:function(t,e){var n;(n=this.menu.getActiveSelectable())&&this.select(n)&&e.preventDefault()},_onTabKeyed:function(t,e){var n;(n=this.menu.getActiveSelectable())?this.select(n)&&e.preventDefault():(n=this.menu.getTopSelectable())&&this.autocomplete(n)&&e.preventDefault()},_onEscKeyed:function(){this.close()},_onUpKeyed:function(){this.moveCursor(-1)},_onDownKeyed:function(){this.moveCursor(1)},_onLeftKeyed:function(){"rtl"===this.dir&&this.input.isCursorAtEnd()&&this.autocomplete(this.menu.getTopSelectable())},_onRightKeyed:function(){"ltr"===this.dir&&this.input.isCursorAtEnd()&&this.autocomplete(this.menu.getTopSelectable())},_onQueryChanged:function(t,e){this._minLengthMet(e)?this.menu.update(e):this.menu.empty()},_onWhitespaceChanged:function(){this._updateHint()},_onLangDirChanged:function(t,e){this.dir!==e&&(this.dir=e,this.menu.setLanguageDirection(e))},_openIfActive:function(){this.isActive()&&this.open()},_minLengthMet:function(t){return t=e.isString(t)?t:this.input.getQuery()||"",t.length>=this.minLength},_updateHint:function(){var t,n,i,r,o,s,l;t=this.menu.getTopSelectable(),n=this.menu.getSelectableData(t),i=this.input.getInputValue(),!n||e.isBlankString(i)||this.input.hasOverflow()?this.input.clearHint():(r=a.normalizeQuery(i),o=e.escapeRegExChars(r),s=new RegExp("^(?:"+o+")(.+$)","i"),l=s.exec(n.val),l&&this.input.setHint(i+l[1]))},isEnabled:function(){return this.enabled},enable:function(){this.enabled=!0},disable:function(){this.enabled=!1},isActive:function(){return this.active},activate:function(){return!!this.isActive()||!(!this.isEnabled()||this.eventBus.before("active"))&&(this.active=!0,this.eventBus.trigger("active"),!0)},deactivate:function(){return!this.isActive()||!this.eventBus.before("idle")&&(this.active=!1,this.close(),this.eventBus.trigger("idle"),!0)},isOpen:function(){return this.menu.isOpen()},open:function(){return this.isOpen()||this.eventBus.before("open")||(this.menu.open(),this._updateHint(),this.eventBus.trigger("open")),this.isOpen()},close:function(){return this.isOpen()&&!this.eventBus.before("close")&&(this.menu.close(),this.input.clearHint(),this.input.resetInputValue(),this.eventBus.trigger("close")),!this.isOpen()},setVal:function(t){this.input.setQuery(e.toStr(t))},getVal:function(){return this.input.getQuery()},select:function(t){var e=this.menu.getSelectableData(t);return!(!e||this.eventBus.before("select",e.obj))&&(this.input.setQuery(e.val,!0),this.eventBus.trigger("select",e.obj),this.close(),!0)},autocomplete:function(t){var e,n,i;return e=this.input.getQuery(),n=this.menu.getSelectableData(t),i=n&&e!==n.val,!(!i||this.eventBus.before("autocomplete",n.obj))&&(this.input.setQuery(n.val),this.eventBus.trigger("autocomplete",n.obj),!0)},moveCursor:function(t){var e,n,i,r,o;return e=this.input.getQuery(),n=this.menu.selectableRelativeToCursor(t),i=this.menu.getSelectableData(n),r=i?i.obj:null,o=this._minLengthMet()&&this.menu.update(e),!o&&!this.eventBus.before("cursorchange",r)&&(this.menu.setCursor(n),i?this.input.setInputValue(i.val):(this.input.resetInputValue(),this._updateHint()),this.eventBus.trigger("cursorchange",r),!0)},destroy:function(){this.input.destroy(),this.menu.destroy()}}),n}();!function(){"use strict";function r(e,n){e.each(function(){var e,i=t(this);(e=i.data(g.typeahead))&&n(e,i)})}function o(t,e){return t.clone().addClass(e.classes.hint).removeData().css(e.css.hint).css(h(t)).prop("readonly",!0).removeAttr("id name placeholder required").attr({autocomplete:"off",spellcheck:"false",tabindex:-1})}function s(t,e){t.data(g.attrs,{dir:t.attr("dir"),autocomplete:t.attr("autocomplete"),spellcheck:t.attr("spellcheck"),style:t.attr("style")}),t.addClass(e.classes.input).attr({autocomplete:"off",spellcheck:!1});try{!t.attr("dir")&&t.attr("dir","auto")}catch(t){}return t}function h(t){return{backgroundAttachment:t.css("background-attachment"),backgroundClip:t.css("background-clip"),backgroundColor:t.css("background-color"),backgroundImage:t.css("background-image"),backgroundOrigin:t.css("background-origin"),backgroundPosition:t.css("background-position"),backgroundRepeat:t.css("background-repeat"),backgroundSize:t.css("background-size")}}function d(t){var n,i;n=t.data(g.www),i=t.parent().filter(n.selectors.wrapper),e.each(t.data(g.attrs),function(n,i){e.isUndefined(n)?t.removeAttr(i):t.attr(i,n)}),t.removeData(g.typeahead).removeData(g.www).removeData(g.attr).removeClass(n.classes.input),i.length&&(t.detach().insertAfter(i),i.remove())}function f(n){var i,r;return i=e.isJQuery(n)||e.isElement(n),r=i?t(n).first():[],r.length?r:null}var p,g,m;p=t.fn.typeahead,g={www:"tt-www",attrs:"tt-attrs",typeahead:"tt-typeahead"},m={initialize:function(r,h){function d(){var n,d,m,v,y,x,b,_,w,S,C;e.each(h,function(t){t.highlight=!!r.highlight}),n=t(this),d=t(p.html.wrapper),m=f(r.hint),v=f(r.menu),y=r.hint!==!1&&!m,x=r.menu!==!1&&!v,y&&(m=o(n,p)),x&&(v=t(p.html.menu).css(p.css.menu)),m&&m.val(""),n=s(n,p),(y||x)&&(d.css(p.css.wrapper),n.css(y?p.css.input:p.css.inputWithNoHint),n.wrap(d).parent().prepend(y?m:null).append(x?v:null)),C=x?c:l,b=new i({el:n}),_=new a({hint:m,input:n},p),w=new C({node:v,datasets:h},p),S=new u({input:_,menu:w,eventBus:b,minLength:r.minLength},p),n.data(g.www,p),n.data(g.typeahead,S)}var p;return h=e.isArray(h)?h:[].slice.call(arguments,1),r=r||{},p=n(r.classNames),this.each(d)},isEnabled:function(){var t;return r(this.first(),function(e){t=e.isEnabled()}),t},enable:function(){return r(this,function(t){t.enable()}),this},disable:function(){return r(this,function(t){t.disable()}),this},isActive:function(){var t;return r(this.first(),function(e){t=e.isActive()}),t},activate:function(){return r(this,function(t){t.activate()}),this},deactivate:function(){return r(this,function(t){t.deactivate()}),this},isOpen:function(){var t;return r(this.first(),function(e){t=e.isOpen()}),t},open:function(){return r(this,function(t){t.open()}),this},close:function(){return r(this,function(t){t.close()}),this},select:function(e){var n=!1,i=t(e);return r(this.first(),function(t){n=t.select(i)}),n},autocomplete:function(e){var n=!1,i=t(e);return r(this.first(),function(t){n=t.autocomplete(i)}),n},moveCursor:function(t){var e=!1;return r(this.first(),function(n){e=n.moveCursor(t)}),e},val:function(t){var e;return arguments.length?(r(this,function(e){e.setVal(t)}),this):(r(this.first(),function(t){e=t.getVal()}),e)},destroy:function(){return r(this,function(t,e){d(e),t.destroy()}),this}},t.fn.typeahead=function(t){return m[t]?m[t].apply(this,[].slice.call(arguments,1)):m.initialize.apply(this,arguments)},t.fn.typeahead.noConflict=function(){return t.fn.typeahead=p,this}}()}),define("typeahead",["jquery"],function(t){return function(){var e,n;return n=function(t){return require.s.contexts._.registry["typeahead.js"].factory(t)},e=n.apply(t,arguments)}}(this)),define("search",["jquery","config","utils","bloodhound","typeahead"],function(t,e,n,i){!function(t){function r(e,n){var e=e.replace("%QUERY",encodeURIComponent(n)),i=t("label.active > input[name=smatch]").val();return i&&(e+="&match="+i),e}var o="search",a={_init:function(o){return o=o||{},this.each(function(){function a(t){return(t.tags||[]).push(t.name)}function s(t){function e(t){return t.split(".").pop()}function i(t){return t.split(".").slice(0,-1).join(".")}var r='<div class="tt-match file type-icon '+e(t.name)+'"><span class="tt-label">'+n.htmlEncode(i(t.name));if(t.tags){r+='<span class="tt-tags">';for(var o=0;o<t.tags.length;o++){var a=t.tags[o];r+='<span class="tt-tag">'+n.htmlEncode(a)+"</span>"}r+="</span>"}return t.title&&(r+='<div class="tt-title file">'+n.htmlEncode(t.title)+"</div>"),r+="</div>"}function l(t){var e="";if(t.file!=_||t.alias!=w){var i=t.file.split(".").pop();_=t.file,w=t.alias,e='<div class="tt-file-header type-icon '+i+'"><span class="tt-path-file">'+n.htmlEncode(t.file)+"</span></div>"}return e+p(t)}function c(t){return i.tokenizers.whitespace(t.text)}function u(t){var e="";return t.file==_&&t.alias==w||(_=t.file,w=t.alias,e='<div class="tt-file-header type-icon '+t.ext+'"><span class="tt-path-alias">'+n.htmlEncode(t.alias)+'</span>(<span class="tt-path-file">'+n.htmlEncode(t.file)+")</span></div>"),t.text&&(e+=p(t)),e}function h(t,n){for(var i=e.swish.templates,r=[],o=t.split(" "),a=[],s=0;s<o.length;s++)a.push({prefix:o[s],regex:new RegExp("_"+o[s])});for(var s=0;s<i.length;s++){var l=i[s];if(void 0!==l.arity){for(var c=0,u=!0;c<a.length&&u;c++)l.name.startsWith(a[c].prefix)||l.name.match(a[c].regex)||(u=!1);u&&r.push(l)}}n(r)}function d(t){var e='<div class="tt-match predicate';return t.type&&(e+=" "+t.type),t.mode&&(e+='" title="'+t.mode),e+='"><span class="tt-label">'+n.htmlEncode(t.name)+"/"+t.arity+"</span>",t.iso&&(e+='<span class="tt-tags">',t.iso&&(e+='<span class="tt-tag">ISO</span>'),e+="</span>"),t.summary&&(e+='<div class="tt-title file">'+n.htmlEncode(t.summary)+"</div>"),e+="</div>",e+="</div>"}function f(e,n){if(v=e,e.length<2)return[];var i=[],r=new RegExp("\\b"+e,"g");C=r,t(".prolog-editor").each(function(){for(var e=this,n=t(e).prologEditor("search",r,{max:7}),o=0;o<n.length;o++)n[o].editor=e,n[o].regex=C,i.push(n[o])}),n(i)}function p(t){var e,i=t.text;(e=i.search(C))>20&&(i="..."+i.slice(e-17)),i.length>80&&(i=i.substring(0,80));var r='<div class="tt-match source"><span class="tt-line"><span class="tt-lineno">'+t.line+'</span><span class="tt-text">'+n.htmlEncode(i)+"</span></span></div>";return r}function g(t){function e(t){return t.avatar?'<img class="avatar" src="'+encodeURI(t.avatar)+'">':""}var i='<div class="tt-match user">'+e(t)+'<span class="tt-label">'+n.htmlEncode(t.name)+"</span></div>";return i}function m(t){for(var e=[],n=t.replace(/\s+/g," ").split(" "),i=0;i<n.length;i++)e.push(k[n[i]]);return e}var v,y=t(this),x=new i({name:"files",remote:{url:e.http.locations.swish_typeahead+"?set=file&q=%QUERY",wildcard:"%QUERY"},datumTokenizer:a,queryTokenizer:i.tokenizers.whitespace});x.initialize();var b=new i({name:"store_content",limit:20,cache:!1,remote:{url:e.http.locations.swish_typeahead+"?set=store_content&q=%QUERY",replace:r},datumTokenizer:c,queryTokenizer:i.tokenizers.whitespace});b.initialize();var _=null,w=null,S=new i({name:"source",limit:15,cache:!1,query_cache_length:1,remote:{url:e.http.locations.swish_typeahead+"?set=sources&q=%QUERY",replace:r},datumTokenizer:c,queryTokenizer:i.tokenizers.whitespace});S.initialize();var C,T=new i({name:"users",limit:20,cache:!1,remote:{url:e.http.locations.swish_typeahead+"?set=user&q=%QUERY",replace:r},datumTokenizer:c,queryTokenizer:i.tokenizers.whitespace});T.initialize();var k={source:{name:"source",display:"text",source:f,templates:{suggestion:p}},sources:{name:"sources",display:"file",source:S.ttAdapter(),templates:{suggestion:u},limit:15},files:{name:"files",display:"name",source:x.ttAdapter(),templates:{suggestion:s}},store_content:{name:"store_content",display:"file",source:b.ttAdapter(),templates:{suggestion:l}},predicates:{name:"predicates",display:function(t){return t.name+"/"+t.arity},source:h,templates:{suggestion:d}},users:{name:"users",display:"name",source:T.ttAdapter(),templates:{suggestion:g}}},A=k.sources.source;k.sources.source=function(t,e){return _=null,w=null,C=new RegExp(RegExp.escape(t)),A(t,e)},y.typeahead({minLength:2,highlight:!0},m(y.data("search-in"))).on("typeahead:selected typeahead:autocompleted",function(e,n){if(0==o.search)y.data("json-value",n);else if("store"==n.type)n.query&&(n.regex=new RegExp(RegExp.escape(n.query),"g"),n.showAllMatches=!0),t(e.target).closest(".swish").swish("playFile",n);else if(void 0!==n.arity)t(".swish-event-receiver").trigger("pldoc",n);else if(void 0!==n.editor&&void 0!==n.line)t(n.editor).prologEditor("gotoLine",n.line,{regex:n.regex,showAllMatches:!0});else if(void 0!==n.alias){var i=encodeURI("/"+n.alias+"/"+n.file+"."+n.ext),r={url:i,line:n.line};n.query&&(r.regex=new RegExp(RegExp.escape(n.query),"g"),r.showAllMatches=!0),t(e.target).closest(".swish").swish("playURL",r)}else y.data("json-value",n),console.log(y.data("json-value"))}),0!=o.search&&y.closest("form").submit(function(t){var e=y.data("json-value"),n=y.val();return e&&e.datum&&e.datum.label==n||(e=n),y.val(""),y.data("json-value",null),y.search("search",e),!1})})},search:function(t){alert("Full search not yet implemented\nPlease select from auto completion list")}};t.fn.search=function(e){return a[e]?a[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery."+o):a._init.apply(this,arguments)}}(jQuery),RegExp.escape=function(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}}),define("tabbed",["jquery","form","config","preferences","modal","laconic","search"],function(t,e,n,i,r){var o={tabTypes:{},type:function(t){var e=t.split(".").pop();for(var n in o.tabTypes)if(o.tabTypes.hasOwnProperty(n)&&o.tabTypes[n].dataType==e)return o.tabTypes[n]}};return function(t){function a(e,n,i){t(e).wrap('<div role="tabpanel" class="tab-pane" id="'+n+'"></div>');var r=t(e).parent();return i&&r.addClass("active"),r}function s(e,n){var i=t.el.span({class:"glyphicon glyphicon-"+e});return n&&t(i).addClass(n),i}function l(){return"tabbed-tab-"+h++}function c(t){if(n.swish.profiles)for(var e=0;e<n.swish.profiles.length;e++)if(n.swish.profiles[e].value==t)return n.swish.profiles[e]}var u="tabbed",h=0,d={_init:function(e){return e=e||{},this.each(function(){var n=t(this),i={};i.newTab=e.newTab,i.tabTypes=e.tabTypes||o.tabTypes,n.data(u,i),n.addClass("tabbed"),n.tabbed("makeTabbed"),n.on("source",function(t,e){n.tabbed("tabFromSource",e)}),n.on("trace-location",function(t,e){n.tabbed("showTracePort",e)}),n.on("data-is-clean",function(e,i){var r=t(e.target).closest(".tab-pane"),o=n.tabbed("navTab",r.attr("id"));o&&(i?o.removeClass("data-dirty"):o.addClass("data-dirty"))})})},makeTabbed:function(){var e=this.children(),n=t.el.ul({class:"nav nav-tabs",role:"tablist"}),i=t.el.div({class:"tab-content"});this.prepend(i),this.prepend(n),t(n).on("click","span.xclose",function(e){var n=t(e.target).parent().attr("data-id");t(e.target).parents(".tabbed").first().tabbed("removeTab",n),e.preventDefault()}),t(n).on("click","a",function(e){t(e.target).closest("a").tab("show"),e.preventDefault()});for(var r=0;r<e.length;r++){var o=t(e[r]),c=l(),u=o.attr("data-label")||"Unknown",h="disabled"!=o.attr("data-close"),d=r==e.length-1,f=this.tabbed("tabLabel",c,u,h);d&&t(f).addClass("active"),t(n).append(f),t(i).append(a(t(e[r]),c,d))}var p=t.el.a({class:"tab-new compact",title:"Open a new tab"},s("plus"));t(n).append(t.el.li({role:"presentation"},p)),t(p).on("click",function(e){var n=t(e.target).parents(".tabbed").first();return n.tabbed("newTab"),e.preventDefault(),!1}),t(n).on("shown.bs.tab","a",function(e){var n=t(e.target).data("id");t("#"+n+" .swish-event-receiver").trigger("activate-tab")}),0==this.tabbed("navContent").children().length&&this.tabbed("newTab")},newTab:function(e){var n=this.data(u);return void 0==e&&(n.newTab?e=n.newTab():(e=this.tabbed("tabSelect"),t(e).append(this.tabbed("profileForm"),t.el.hr(),this.tabbed("searchForm")))),this.tabbed("addTab",e,{active:!0,close:!0})},tabFromSource:function(e){var n=this.find("div.tabbed-select");if(n.length>0){var i=t(n[0]).closest(".tab-pane");this.tabbed("show",i.attr("id")),"object"==typeof e&&delete e.newTab,this.tabbed("setSource",i,e)}else{var i=this.tabbed("newTab",t("<span></span>"));"object"==typeof e&&delete e.newTab,this.tabbed("setSource",i,e)||this.tabbed("removeTab",i.attr("id"))}return this},setSource:function(e,n){if("object"==typeof n&&(n.meta&&n.meta.name||n.url)){var i=n.meta&&n.meta.name?n.meta.name:n.url,r=o.type(i),a=t.el.div();return e.html(""),e.tabbed("title",r.label,r.dataType),e.append(a),r.create(a),t(a).trigger("source",n),!0}return!1},showTracePort:function(e){function n(){if(s.startsWith("pengine://"))return s.split("/")[2]}function i(){var t="swish://";if(s.startsWith(t))return s.slice(t.length)}if(e&&e.source&&e.source.file){var r,o,a,s=e.source.file;if(r=n())a=this.find(".prolog-editor").filter(function(e,n){return t(n).prologEditor("pengine",{has:r})});else if((o=i())&&(a=this.find(".storage").storage("match",{file:o}),!a))return this.closest(".swish").swish("playFile",{file:o,newTab:!0,noHistory:!0,prompt:e}),this;a&&a.prologEditor("showTracePort",e)}return this},addTab:function(e,n){var i=this.tabbed("navTabs"),r=l(),o=a(e,r,n.close);this.tabbed("navContent").append(o);var s=this.tabbed("tabLabel",r,"New tab",close,"select"),c=i.find("a.tab-new");return 1==c.length?t(s).insertBefore(c.first().parent()):i.append(s),n.active&&t(s).find("a").first().tab("show"),o},removeTab:function(e){var n,i=this.tabbed("navTabs").find("a[data-id='"+e+"']").parent(),r=t("#"+e);0!=r.find(".storage").storage("unload","closetab")&&(r.is(":visible")&&(n=i.prev()||i.next()),i.remove(),r.find(".prolog-runner").prologRunner("close"),r.find(".storage").storage("close"),r.remove(),n&&n.length>0?n.find("a").first().tab("show"):0==this.tabbed("navContent").children().length&&this.tabbed("newTab"),t(".storage").storage("chat_status",!0))},show:function(e){var n=this.tabbed("navTab",e);n&&n.tab("show"),t(".storage").storage("chat_status",!0)},tabLabel:function(n,i,r,o){var a,l;r&&(a=s("remove","xclose"),t(a).attr("title","Close tab")),o=o||"pl";var c=t.el.a({class:"compact",href:"#"+n,"data-id":n},t.el.span({class:"tab-icon type-icon "+o}),t.el.span({class:"tab-dirty",title:"Tab is modified. See File/Save and Edit/View changes"}),l=t.el.a({class:"tab-chat",title:"Chat messages available"},e.widgets.glyphIcon("bell"),t.el.span({class:"tab-chat-count"})),t.el.span({class:"tab-title"},i),a),u=t.el.li({role:"presentation"},c);return t(l).on("click",function(e){var n=t(e.target).closest("a.compact").data("id");return t("#"+n).find(".storage").storage("chat"),!1}),u},anchor:function(){var t=this.closest(".tab-pane");if(0!=t.length){var e=t.closest(".tabbed"),n=t.attr("id"),i=e.tabbed("navTabs"),r=i.find("a[data-id="+n+"]");return r}},title:function(t,e){var n=this.tabbed("anchor");if(n&&(n.find(".tab-title").text(t),e)){var i=n.find(".tab-icon");i.removeClass(),i.addClass("tab-icon type-icon "+e)}return this},chats:function(t){var e=this.tabbed("anchor");if(e){var n=e.find(".tab-chat");t&&t.count?(n.find(".tab-chat-count").text(t.count),n.addClass("chat-alert")):n.removeClass("chat-alert")}return this},tabSelect:function(){var e=this.data(u),n=t.el.div({class:"tabbed-select"},t.el.div({class:"tabbed-create"},t.el.label({class:"tabbed-left"},"Create a "),g=t.el.div({class:"btn-group",role:"group"}),t.el.label({class:"tabbed-right"},"here"))),a=[];for(var s in e.tabTypes)e.tabTypes.hasOwnProperty(s)&&e.tabTypes[s].order&&a.push(s);a.sort(function(t,n){return e.tabTypes[t].order-e.tabTypes[n].order});for(var l=0;l<a.length;l++){var c=e.tabTypes[a[l]];t(g).append(t.el.button({type:"button",class:"btn btn-primary","data-type":c.typeName,"data-ext":c.dataType},c.label))}return t(g).on("click",".btn",function(e){var n=t(e.target).data("type"),r=t(e.target).closest(".tab-pane"),a=t.el.div(),s=t.extend({},o.tabTypes[n]),l=r.find("label.active > input[name=profile]").val();l&&(s.profile=l,s.value=r.tabbed("profileValue",l,o.tabTypes[n].dataType),void 0!=s.value&&i.setVal("default-profile",l)),r.html(""),r.tabbed("title",s.label,s.dataType),r.append(a),o.tabTypes[n].create(a,s)}),t(g).addClass("swish-event-receiver"),t(g).on("download save fileInfo print",function(e){var n=t(e.target).closest(".tab-pane");if(n.is(":visible")){var i={download:"you wish to download",save:"you wish to save",print:"you wish to print",fileInfo:"for which you want details"};r.alert("Please activate the tab "+i[e.type]),e.stopPropagation()}}),t(g).on("profile-selected",function(e,n){t(e.target).find("button").each(function(){t(this).prop("disabled",n.type.indexOf(t(this).data("ext"))<0)})}),n},searchForm:function(){var n=t.el.form({class:"search-sources"},t.el.label({class:"control-label"},"Open source file containing"),t.el.div({class:"input-group"},t.el.input({type:"text",class:"form-control search",placeholder:"Search sources","data-search-in":"sources store_content"}),t.el.div({class:"input-group-btn"},t.el.button({class:"btn btn-default",type:"submit"},t.el.i({class:"glyphicon glyphicon-search"})))),t.el.div({class:"input-group"},e.fields.radio("smatch",[{label:"Start of line",value:"sol"},{label:"Start of word",value:"sow",active:!0},{label:"Anywhere",value:"anywhere"}])));return t(n).find("input.search").search(),n},profileForm:function(){if(n.swish.profiles&&n.swish.profiles.length>0){for(var r,o=0;o<n.swish.profiles.length;o++)delete n.swish.profiles[o].active;if(r=i.getVal("default-profile"))for(var o=0;o<n.swish.profiles.length;o++)n.swish.profiles[o].value==r&&(n.swish.profiles[o].active=!0);else n.swish.profiles[0].active=!0;var a=t.el.div({class:"tabbed-profile"},t.el.label({class:"tabbed-left"},"based on"),t.el.div({class:"input-group select-profile"},e.fields.radio("profile",n.swish.profiles)),t.el.label({class:"tabbed-right"},"profile"));return t(a).on("click",function(e){var n=t(e.target).find("input").val(),i=c(n);t(e.target).closest(".tab-pane").find(".tabbed-create .btn-group").trigger("profile-selected",i)}),a}},profileValue:function(e,i){var o=n.http.locations.swish+"profile/"+e+"."+i;return t.ajax({url:o,type:"GET",data:{format:"raw"},async:!1,error:function(t){r.ajaxError(t)}}).responseText},navTabs:function(){return this.find("ul.nav-tabs").first()},navTab:function(t){var e=this.find("ul.nav-tabs").first().find("a[data-id='"+t+"']");if(e.length>0)return e},navContent:function(){return this.find("div.tab-content").first()}};t.fn.tabbed=function(e){return d[e]?d[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery."+u):d._init.apply(this,arguments)}}(jQuery),o}),define("prolog",["jquery","config","form","preferences"],function(t,e,n,i){var r={downloadCSV:function(o,a,s){function l(e,n){return t.el.input({type:"hidden",name:e,value:n})}function c(){var s=t.el.form({class:"form-horizontal"},n.fields.projection(f.join(",")),n.fields.csvFormat(e.swish.csv_formats,i.getVal("csvFormat")),n.fields.limit("10 000",!1),n.fields.filename(p,2),n.fields.buttons({label:"Download CSV",action:function(t,n){return t.preventDefault(),e.swish.csv_formats.length>1&&i.setVal("csvFormat",n.format),r.downloadCSV(o,a,n),!1}}));this.append(s)}if(s=s||{},s.disposition=s.disposition||s.filename||"swish-results.csv",s.projection){var u,h=s.format||"prolog";if(s.distinct&&(o="distinct(["+s.projection+"],("+o+"))"),s.limit){var d=parseInt(s.limit.replace(/[ _]/g,""));if("number"!=typeof d)return alert("Not an integer: ",s.limit),!1;o="limit("+d+",("+o+"))"}u=t.el.form({method:"POST",action:e.http.locations.pengines+"/create",target:"_blank"},l("format","csv"),l("chunk","10"),l("solutions","all"),l("disposition",s.disposition),l("application","swish"),l("ask",o),l("src_text",a),l("template",h+"("+s.projection+")")),console.log(u),t("body").append(u),u.submit(),t(u).remove()}else{var f=t().prologEditor("variables",o),p=s.disposition;p.indexOf(".")<0&&(p+=".csv"),n.showDialog({title:"Download query results as CSV",
-body:c})}return this},trimFullStop:function(t){return t.replace(/\.\s*$/m,"")},options:{application:"swish",chunk:5}};return t.swish=function(t){for(var e in r.options)r.options.hasOwnProperty(e)&&!t.hasOwnProperty(e)&&(t[e]=r.options[e]);return new Pengine(t)},r}),function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define("cm/lib/codemirror",e):t.CodeMirror=e()}(this,function(){"use strict";function t(t){return new RegExp("(^|\\s)"+t+"(?:$|\\s)\\s*")}function e(t){for(var e=t.childNodes.length;e>0;--e)t.removeChild(t.firstChild);return t}function n(t,n){return e(t).appendChild(n)}function i(t,e,n,i){var r=document.createElement(t);if(n&&(r.className=n),i&&(r.style.cssText=i),"string"==typeof e)r.appendChild(document.createTextNode(e));else if(e)for(var o=0;o<e.length;++o)r.appendChild(e[o]);return r}function r(t,e,n,r){var o=i(t,e,n,r);return o.setAttribute("role","presentation"),o}function o(t,e){if(3==e.nodeType&&(e=e.parentNode),t.contains)return t.contains(e);do if(11==e.nodeType&&(e=e.host),e==t)return!0;while(e=e.parentNode)}function a(){var t;try{t=document.activeElement}catch(e){t=document.body||null}for(;t&&t.shadowRoot&&t.shadowRoot.activeElement;)t=t.shadowRoot.activeElement;return t}function s(e,n){var i=e.className;t(n).test(i)||(e.className+=(i?" ":"")+n)}function l(e,n){for(var i=e.split(" "),r=0;r<i.length;r++)i[r]&&!t(i[r]).test(n)&&(n+=" "+i[r]);return n}function c(t){var e=Array.prototype.slice.call(arguments,1);return function(){return t.apply(null,e)}}function u(t,e,n){e||(e={});for(var i in t)!t.hasOwnProperty(i)||n===!1&&e.hasOwnProperty(i)||(e[i]=t[i]);return e}function h(t,e,n,i,r){null==e&&(e=t.search(/[^\s\u00a0]/),e==-1&&(e=t.length));for(var o=i||0,a=r||0;;){var s=t.indexOf("\t",o);if(s<0||s>=e)return a+(e-o);a+=s-o,a+=n-a%n,o=s+1}}function d(t,e){for(var n=0;n<t.length;++n)if(t[n]==e)return n;return-1}function f(t,e,n){for(var i=0,r=0;;){var o=t.indexOf("\t",i);o==-1&&(o=t.length);var a=o-i;if(o==t.length||r+a>=e)return i+Math.min(a,e-r);if(r+=o-i,r+=n-r%n,i=o+1,r>=e)return i}}function p(t){for(;Ma.length<=t;)Ma.push(g(Ma)+" ");return Ma[t]}function g(t){return t[t.length-1]}function m(t,e){for(var n=[],i=0;i<t.length;i++)n[i]=e(t[i],i);return n}function v(t,e,n){for(var i=0,r=n(e);i<t.length&&n(t[i])<=r;)i++;t.splice(i,0,e)}function y(){}function x(t,e){var n;return Object.create?n=Object.create(t):(y.prototype=t,n=new y),e&&u(e,n),n}function b(t){return/\w/.test(t)||t>"€"&&(t.toUpperCase()!=t.toLowerCase()||La.test(t))}function _(t,e){return e?!!(e.source.indexOf("\\w")>-1&&b(t))||e.test(t):b(t)}function w(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e])return!1;return!0}function S(t){return t.charCodeAt(0)>=768&&Ea.test(t)}function C(t,e,n){for(;(n<0?e>0:e<t.length)&&S(t.charAt(e));)e+=n;return e}function T(t,e,n){for(;;){if(Math.abs(e-n)<=1)return t(e)?e:n;var i=Math.floor((e+n)/2);t(i)?n=i:e=i}}function k(t,e,n){var o=this;this.input=n,o.scrollbarFiller=i("div",null,"CodeMirror-scrollbar-filler"),o.scrollbarFiller.setAttribute("cm-not-content","true"),o.gutterFiller=i("div",null,"CodeMirror-gutter-filler"),o.gutterFiller.setAttribute("cm-not-content","true"),o.lineDiv=r("div",null,"CodeMirror-code"),o.selectionDiv=i("div",null,null,"position: relative; z-index: 1"),o.cursorDiv=i("div",null,"CodeMirror-cursors"),o.measure=i("div",null,"CodeMirror-measure"),o.lineMeasure=i("div",null,"CodeMirror-measure"),o.lineSpace=r("div",[o.measure,o.lineMeasure,o.selectionDiv,o.cursorDiv,o.lineDiv],null,"position: relative; outline: none");var a=r("div",[o.lineSpace],"CodeMirror-lines");o.mover=i("div",[a],null,"position: relative"),o.sizer=i("div",[o.mover],"CodeMirror-sizer"),o.sizerWidth=null,o.heightForcer=i("div",null,null,"position: absolute; height: "+Sa+"px; width: 1px;"),o.gutters=i("div",null,"CodeMirror-gutters"),o.lineGutter=null,o.scroller=i("div",[o.sizer,o.heightForcer,o.gutters],"CodeMirror-scroll"),o.scroller.setAttribute("tabIndex","-1"),o.wrapper=i("div",[o.scrollbarFiller,o.gutterFiller,o.scroller],"CodeMirror"),Jo&&ta<8&&(o.gutters.style.zIndex=-1,o.scroller.style.paddingRight=0),ea||Yo&&ua||(o.scroller.draggable=!0),t&&(t.appendChild?t.appendChild(o.wrapper):t(o.wrapper)),o.viewFrom=o.viewTo=e.first,o.reportedViewFrom=o.reportedViewTo=e.first,o.view=[],o.renderedView=null,o.externalMeasured=null,o.viewOffset=0,o.lastWrapHeight=o.lastWrapWidth=0,o.updateLineNumbers=null,o.nativeBarWidth=o.barHeight=o.barWidth=0,o.scrollbarsClipped=!1,o.lineNumWidth=o.lineNumInnerWidth=o.lineNumChars=null,o.alignWidgets=!1,o.cachedCharWidth=o.cachedTextHeight=o.cachedPaddingH=null,o.maxLine=null,o.maxLineLength=0,o.maxLineChanged=!1,o.wheelDX=o.wheelDY=o.wheelStartX=o.wheelStartY=null,o.shift=!1,o.selForContextMenu=null,o.activeTouch=null,n.init(o)}function A(t,e){if(e-=t.first,e<0||e>=t.size)throw new Error("There is no line "+(e+t.first)+" in the document.");for(var n=t;!n.lines;)for(var i=0;;++i){var r=n.children[i],o=r.chunkSize();if(e<o){n=r;break}e-=o}return n.lines[e]}function M(t,e,n){var i=[],r=e.line;return t.iter(e.line,n.line+1,function(t){var o=t.text;r==n.line&&(o=o.slice(0,n.ch)),r==e.line&&(o=o.slice(e.ch)),i.push(o),++r}),i}function L(t,e,n){var i=[];return t.iter(e,n,function(t){i.push(t.text)}),i}function E(t,e){var n=e-t.height;if(n)for(var i=t;i;i=i.parent)i.height+=n}function P(t){if(null==t.parent)return null;for(var e=t.parent,n=d(e.lines,t),i=e.parent;i;e=i,i=i.parent)for(var r=0;i.children[r]!=e;++r)n+=i.children[r].chunkSize();return n+e.first}function N(t,e){var n=t.first;t:do{for(var i=0;i<t.children.length;++i){var r=t.children[i],o=r.height;if(e<o){t=r;continue t}e-=o,n+=r.chunkSize()}return n}while(!t.lines);for(var a=0;a<t.lines.length;++a){var s=t.lines[a],l=s.height;if(e<l)break;e-=l}return n+a}function O(t,e){return e>=t.first&&e<t.first+t.size}function R(t,e){return String(t.lineNumberFormatter(e+t.firstLineNumber))}function D(t,e,n){return void 0===n&&(n=null),this instanceof D?(this.line=t,this.ch=e,void(this.sticky=n)):new D(t,e,n)}function I(t,e){return t.line-e.line||t.ch-e.ch}function j(t,e){return t.sticky==e.sticky&&0==I(t,e)}function H(t){return D(t.line,t.ch)}function V(t,e){return I(t,e)<0?e:t}function F(t,e){return I(t,e)<0?t:e}function z(t,e){return Math.max(t.first,Math.min(e,t.first+t.size-1))}function q(t,e){if(e.line<t.first)return D(t.first,0);var n=t.first+t.size-1;return e.line>n?D(n,A(t,n).text.length):G(e,A(t,e.line).text.length)}function G(t,e){var n=t.ch;return null==n||n>e?D(t.line,e):n<0?D(t.line,0):t}function B(t,e){for(var n=[],i=0;i<e.length;i++)n[i]=q(t,e[i]);return n}function $(){Pa=!0}function W(){Na=!0}function U(t,e,n){this.marker=t,this.from=e,this.to=n}function X(t,e){if(t)for(var n=0;n<t.length;++n){var i=t[n];if(i.marker==e)return i}}function Y(t,e){for(var n,i=0;i<t.length;++i)t[i]!=e&&(n||(n=[])).push(t[i]);return n}function Q(t,e){t.markedSpans=t.markedSpans?t.markedSpans.concat([e]):[e],e.marker.attachLine(t)}function Z(t,e,n){var i;if(t)for(var r=0;r<t.length;++r){var o=t[r],a=o.marker,s=null==o.from||(a.inclusiveLeft?o.from<=e:o.from<e);if(s||o.from==e&&"bookmark"==a.type&&(!n||!o.marker.insertLeft)){var l=null==o.to||(a.inclusiveRight?o.to>=e:o.to>e);(i||(i=[])).push(new U(a,o.from,l?null:o.to))}}return i}function K(t,e,n){var i;if(t)for(var r=0;r<t.length;++r){var o=t[r],a=o.marker,s=null==o.to||(a.inclusiveRight?o.to>=e:o.to>e);if(s||o.from==e&&"bookmark"==a.type&&(!n||o.marker.insertLeft)){var l=null==o.from||(a.inclusiveLeft?o.from<=e:o.from<e);(i||(i=[])).push(new U(a,l?null:o.from-e,null==o.to?null:o.to-e))}}return i}function J(t,e){if(e.full)return null;var n=O(t,e.from.line)&&A(t,e.from.line).markedSpans,i=O(t,e.to.line)&&A(t,e.to.line).markedSpans;if(!n&&!i)return null;var r=e.from.ch,o=e.to.ch,a=0==I(e.from,e.to),s=Z(n,r,a),l=K(i,o,a),c=1==e.text.length,u=g(e.text).length+(c?r:0);if(s)for(var h=0;h<s.length;++h){var d=s[h];if(null==d.to){var f=X(l,d.marker);f?c&&(d.to=null==f.to?null:f.to+u):d.to=r}}if(l)for(var p=0;p<l.length;++p){var m=l[p];if(null!=m.to&&(m.to+=u),null==m.from){var v=X(s,m.marker);v||(m.from=u,c&&(s||(s=[])).push(m))}else m.from+=u,c&&(s||(s=[])).push(m)}s&&(s=tt(s)),l&&l!=s&&(l=tt(l));var y=[s];if(!c){var x,b=e.text.length-2;if(b>0&&s)for(var _=0;_<s.length;++_)null==s[_].to&&(x||(x=[])).push(new U(s[_].marker,null,null));for(var w=0;w<b;++w)y.push(x);y.push(l)}return y}function tt(t){for(var e=0;e<t.length;++e){var n=t[e];null!=n.from&&n.from==n.to&&n.marker.clearWhenEmpty!==!1&&t.splice(e--,1)}return t.length?t:null}function et(t,e,n){var i=null;if(t.iter(e.line,n.line+1,function(t){if(t.markedSpans)for(var e=0;e<t.markedSpans.length;++e){var n=t.markedSpans[e].marker;!n.readOnly||i&&d(i,n)!=-1||(i||(i=[])).push(n)}}),!i)return null;for(var r=[{from:e,to:n}],o=0;o<i.length;++o)for(var a=i[o],s=a.find(0),l=0;l<r.length;++l){var c=r[l];if(!(I(c.to,s.from)<0||I(c.from,s.to)>0)){var u=[l,1],h=I(c.from,s.from),f=I(c.to,s.to);(h<0||!a.inclusiveLeft&&!h)&&u.push({from:c.from,to:s.from}),(f>0||!a.inclusiveRight&&!f)&&u.push({from:s.to,to:c.to}),r.splice.apply(r,u),l+=u.length-3}}return r}function nt(t){var e=t.markedSpans;if(e){for(var n=0;n<e.length;++n)e[n].marker.detachLine(t);t.markedSpans=null}}function it(t,e){if(e){for(var n=0;n<e.length;++n)e[n].marker.attachLine(t);t.markedSpans=e}}function rt(t){return t.inclusiveLeft?-1:0}function ot(t){return t.inclusiveRight?1:0}function at(t,e){var n=t.lines.length-e.lines.length;if(0!=n)return n;var i=t.find(),r=e.find(),o=I(i.from,r.from)||rt(t)-rt(e);if(o)return-o;var a=I(i.to,r.to)||ot(t)-ot(e);return a?a:e.id-t.id}function st(t,e){var n,i=Na&&t.markedSpans;if(i)for(var r=void 0,o=0;o<i.length;++o)r=i[o],r.marker.collapsed&&null==(e?r.from:r.to)&&(!n||at(n,r.marker)<0)&&(n=r.marker);return n}function lt(t){return st(t,!0)}function ct(t){return st(t,!1)}function ut(t,e,n,i,r){var o=A(t,e),a=Na&&o.markedSpans;if(a)for(var s=0;s<a.length;++s){var l=a[s];if(l.marker.collapsed){var c=l.marker.find(0),u=I(c.from,n)||rt(l.marker)-rt(r),h=I(c.to,i)||ot(l.marker)-ot(r);if(!(u>=0&&h<=0||u<=0&&h>=0)&&(u<=0&&(l.marker.inclusiveRight&&r.inclusiveLeft?I(c.to,n)>=0:I(c.to,n)>0)||u>=0&&(l.marker.inclusiveRight&&r.inclusiveLeft?I(c.from,i)<=0:I(c.from,i)<0)))return!0}}}function ht(t){for(var e;e=lt(t);)t=e.find(-1,!0).line;return t}function dt(t){for(var e;e=ct(t);)t=e.find(1,!0).line;return t}function ft(t){for(var e,n;e=ct(t);)t=e.find(1,!0).line,(n||(n=[])).push(t);return n}function pt(t,e){var n=A(t,e),i=ht(n);return n==i?e:P(i)}function gt(t,e){if(e>t.lastLine())return e;var n,i=A(t,e);if(!mt(t,i))return e;for(;n=ct(i);)i=n.find(1,!0).line;return P(i)+1}function mt(t,e){var n=Na&&e.markedSpans;if(n)for(var i=void 0,r=0;r<n.length;++r)if(i=n[r],i.marker.collapsed){if(null==i.from)return!0;if(!i.marker.widgetNode&&0==i.from&&i.marker.inclusiveLeft&&vt(t,e,i))return!0}}function vt(t,e,n){if(null==n.to){var i=n.marker.find(1,!0);return vt(t,i.line,X(i.line.markedSpans,n.marker))}if(n.marker.inclusiveRight&&n.to==e.text.length)return!0;for(var r=void 0,o=0;o<e.markedSpans.length;++o)if(r=e.markedSpans[o],r.marker.collapsed&&!r.marker.widgetNode&&r.from==n.to&&(null==r.to||r.to!=n.from)&&(r.marker.inclusiveLeft||n.marker.inclusiveRight)&&vt(t,e,r))return!0}function yt(t){t=ht(t);for(var e=0,n=t.parent,i=0;i<n.lines.length;++i){var r=n.lines[i];if(r==t)break;e+=r.height}for(var o=n.parent;o;n=o,o=n.parent)for(var a=0;a<o.children.length;++a){var s=o.children[a];if(s==n)break;e+=s.height}return e}function xt(t){if(0==t.height)return 0;for(var e,n=t.text.length,i=t;e=lt(i);){var r=e.find(0,!0);i=r.from.line,n+=r.from.ch-r.to.ch}for(i=t;e=ct(i);){var o=e.find(0,!0);n-=i.text.length-o.from.ch,i=o.to.line,n+=i.text.length-o.to.ch}return n}function bt(t){var e=t.display,n=t.doc;e.maxLine=A(n,n.first),e.maxLineLength=xt(e.maxLine),e.maxLineChanged=!0,n.iter(function(t){var n=xt(t);n>e.maxLineLength&&(e.maxLineLength=n,e.maxLine=t)})}function _t(t,e,n,i){if(!t)return i(e,n,"ltr");for(var r=!1,o=0;o<t.length;++o){var a=t[o];(a.from<n&&a.to>e||e==n&&a.to==e)&&(i(Math.max(a.from,e),Math.min(a.to,n),1==a.level?"rtl":"ltr"),r=!0)}r||i(e,n,"ltr")}function wt(t,e,n){var i;Oa=null;for(var r=0;r<t.length;++r){var o=t[r];if(o.from<e&&o.to>e)return r;o.to==e&&(o.from!=o.to&&"before"==n?i=r:Oa=r),o.from==e&&(o.from!=o.to&&"before"!=n?i=r:Oa=r)}return null!=i?i:Oa}function St(t,e){var n=t.order;return null==n&&(n=t.order=Ra(t.text,e)),n}function Ct(t,e,n){var i=C(t.text,e+n,n);return i<0||i>t.text.length?null:i}function Tt(t,e,n){var i=Ct(t,e.ch,n);return null==i?null:new D(e.line,i,n<0?"after":"before")}function kt(t,e,n,i,r){if(t){var o=St(n,e.doc.direction);if(o){var a,s=r<0?g(o):o[0],l=r<0==(1==s.level),c=l?"after":"before";if(s.level>0){var u=Qe(e,n);a=r<0?n.text.length-1:0;var h=Ze(e,u,a).top;a=T(function(t){return Ze(e,u,t).top==h},r<0==(1==s.level)?s.from:s.to-1,a),"before"==c&&(a=Ct(n,a,1,!0))}else a=r<0?s.to:s.from;return new D(i,a,c)}}return new D(i,r<0?n.text.length:0,r<0?"before":"after")}function At(t,e,n,i){var r=St(e,t.doc.direction);if(!r)return Tt(e,n,i);n.ch>=e.text.length?(n.ch=e.text.length,n.sticky="before"):n.ch<=0&&(n.ch=0,n.sticky="after");var o=wt(r,n.ch,n.sticky),a=r[o];if("ltr"==t.doc.direction&&a.level%2==0&&(i>0?a.to>n.ch:a.from<n.ch))return Tt(e,n,i);var s,l=function(t,n){return Ct(e,t instanceof D?t.ch:t,n)},c=function(n){return t.options.lineWrapping?(s=s||Qe(t,e),mn(t,e,s,n)):{begin:0,end:e.text.length}},u=c("before"==n.sticky?l(n,-1):n.ch);if("rtl"==t.doc.direction||1==a.level){var h=1==a.level==i<0,d=l(n,h?1:-1);if(null!=d&&(h?d<=a.to&&d<=u.end:d>=a.from&&d>=u.begin)){var f=h?"before":"after";return new D(n.line,d,f)}}var p=function(t,e,i){for(var o=function(t,e){return e?new D(n.line,l(t,1),"before"):new D(n.line,t,"after")};t>=0&&t<r.length;t+=e){var a=r[t],s=e>0==(1!=a.level),c=s?i.begin:l(i.end,-1);if(a.from<=c&&c<a.to)return o(c,s);if(c=s?a.from:l(a.to,-1),i.begin<=c&&c<i.end)return o(c,s)}},g=p(o+i,i,u);if(g)return g;var m=i>0?u.end:l(u.begin,-1);return null==m||i>0&&m==e.text.length||!(g=p(i>0?0:r.length-1,i,c(m)))?null:g}function Mt(t,e){return t._handlers&&t._handlers[e]||Da}function Lt(t,e,n){if(t.removeEventListener)t.removeEventListener(e,n,!1);else if(t.detachEvent)t.detachEvent("on"+e,n);else{var i=t._handlers,r=i&&i[e];if(r){var o=d(r,n);o>-1&&(i[e]=r.slice(0,o).concat(r.slice(o+1)))}}}function Et(t,e){var n=Mt(t,e);if(n.length)for(var i=Array.prototype.slice.call(arguments,2),r=0;r<n.length;++r)n[r].apply(null,i)}function Pt(t,e,n){return"string"==typeof e&&(e={type:e,preventDefault:function(){this.defaultPrevented=!0}}),Et(t,n||e.type,t,e),jt(e)||e.codemirrorIgnore}function Nt(t){var e=t._handlers&&t._handlers.cursorActivity;if(e)for(var n=t.curOp.cursorActivityHandlers||(t.curOp.cursorActivityHandlers=[]),i=0;i<e.length;++i)d(n,e[i])==-1&&n.push(e[i])}function Ot(t,e){return Mt(t,e).length>0}function Rt(t){t.prototype.on=function(t,e){Ia(this,t,e)},t.prototype.off=function(t,e){Lt(this,t,e)}}function Dt(t){t.preventDefault?t.preventDefault():t.returnValue=!1}function It(t){t.stopPropagation?t.stopPropagation():t.cancelBubble=!0}function jt(t){return null!=t.defaultPrevented?t.defaultPrevented:0==t.returnValue}function Ht(t){Dt(t),It(t)}function Vt(t){return t.target||t.srcElement}function Ft(t){var e=t.which;return null==e&&(1&t.button?e=1:2&t.button?e=3:4&t.button&&(e=2)),ha&&t.ctrlKey&&1==e&&(e=3),e}function zt(t){if(null==_a){var e=i("span","​");n(t,i("span",[e,document.createTextNode("x")])),0!=t.firstChild.offsetHeight&&(_a=e.offsetWidth<=1&&e.offsetHeight>2&&!(Jo&&ta<8))}var r=_a?i("span","​"):i("span"," ",null,"display: inline-block; width: 1px; margin-right: -1px");return r.setAttribute("cm-text",""),r}function qt(t){if(null!=wa)return wa;var i=n(t,document.createTextNode("AخA")),r=ga(i,0,1).getBoundingClientRect(),o=ga(i,1,2).getBoundingClientRect();return e(t),!(!r||r.left==r.right)&&(wa=o.right-r.right<3)}function Gt(t){if(null!=za)return za;var e=n(t,i("span","x")),r=e.getBoundingClientRect(),o=ga(e,0,1).getBoundingClientRect();return za=Math.abs(r.left-o.left)>1}function Bt(t,e){arguments.length>2&&(e.dependencies=Array.prototype.slice.call(arguments,2)),qa[t]=e}function $t(t,e){Ga[t]=e}function Wt(t){if("string"==typeof t&&Ga.hasOwnProperty(t))t=Ga[t];else if(t&&"string"==typeof t.name&&Ga.hasOwnProperty(t.name)){var e=Ga[t.name];"string"==typeof e&&(e={name:e}),t=x(e,t),t.name=e.name}else{if("string"==typeof t&&/^[\w\-]+\/[\w\-]+\+xml$/.test(t))return Wt("application/xml");if("string"==typeof t&&/^[\w\-]+\/[\w\-]+\+json$/.test(t))return Wt("application/json")}return"string"==typeof t?{name:t}:t||{name:"null"}}function Ut(t,e){e=Wt(e);var n=qa[e.name];if(!n)return Ut(t,"text/plain");var i=n(t,e);if(Ba.hasOwnProperty(e.name)){var r=Ba[e.name];for(var o in r)r.hasOwnProperty(o)&&(i.hasOwnProperty(o)&&(i["_"+o]=i[o]),i[o]=r[o])}if(i.name=e.name,e.helperType&&(i.helperType=e.helperType),e.modeProps)for(var a in e.modeProps)i[a]=e.modeProps[a];return i}function Xt(t,e){var n=Ba.hasOwnProperty(t)?Ba[t]:Ba[t]={};u(e,n)}function Yt(t,e){if(e===!0)return e;if(t.copyState)return t.copyState(e);var n={};for(var i in e){var r=e[i];r instanceof Array&&(r=r.concat([])),n[i]=r}return n}function Qt(t,e){for(var n;t.innerMode&&(n=t.innerMode(e),n&&n.mode!=t);)e=n.state,t=n.mode;return n||{mode:t,state:e}}function Zt(t,e,n){return!t.startState||t.startState(e,n)}function Kt(t,e,n,i){var r=[t.state.modeGen],o={};ae(t,e.text,t.doc.mode,n,function(t,e){return r.push(t,e)},o,i);for(var a=function(n){var i=t.state.overlays[n],a=1,s=0;ae(t,e.text,i.mode,!0,function(t,e){for(var n=a;s<t;){var o=r[a];o>t&&r.splice(a,1,t,r[a+1],o),a+=2,s=Math.min(t,o)}if(e)if(i.opaque)r.splice(n,a-n,t,"overlay "+e),a=n+2;else for(;n<a;n+=2){var l=r[n+1];r[n+1]=(l?l+" ":"")+"overlay "+e}},o)},s=0;s<t.state.overlays.length;++s)a(s);return{styles:r,classes:o.bgClass||o.textClass?o:null}}function Jt(t,e,n){if(!e.styles||e.styles[0]!=t.state.modeGen){var i=te(t,P(e)),r=Kt(t,e,e.text.length>t.options.maxHighlightLength?Yt(t.doc.mode,i):i);e.stateAfter=i,e.styles=r.styles,r.classes?e.styleClasses=r.classes:e.styleClasses&&(e.styleClasses=null),n===t.doc.frontier&&t.doc.frontier++}return e.styles}function te(t,e,n){var i=t.doc,r=t.display;if(!i.mode.startState)return!0;var o=se(t,e,n),a=o>i.first&&A(i,o-1).stateAfter;return a=a?Yt(i.mode,a):Zt(i.mode),i.iter(o,e,function(n){ee(t,n.text,a);var s=o==e-1||o%5==0||o>=r.viewFrom&&o<r.viewTo;n.stateAfter=s?Yt(i.mode,a):null,++o}),n&&(i.frontier=o),a}function ee(t,e,n,i){var r=t.doc.mode,o=new $a(e,t.options.tabSize);for(o.start=o.pos=i||0,""==e&&ne(r,n);!o.eol();)ie(r,o,n),o.start=o.pos}function ne(t,e){if(t.blankLine)return t.blankLine(e);if(t.innerMode){var n=Qt(t,e);return n.mode.blankLine?n.mode.blankLine(n.state):void 0}}function ie(t,e,n,i){for(var r=0;r<10;r++){i&&(i[0]=Qt(t,n).mode);var o=t.token(e,n);if(e.pos>e.start)return o}throw new Error("Mode "+t.name+" failed to advance stream.")}function re(t,e,n,i){var r,o=function(t){return{start:h.start,end:h.pos,string:h.current(),type:r||null,state:t?Yt(a.mode,u):u}},a=t.doc,s=a.mode;e=q(a,e);var l,c=A(a,e.line),u=te(t,e.line,n),h=new $a(c.text,t.options.tabSize);for(i&&(l=[]);(i||h.pos<e.ch)&&!h.eol();)h.start=h.pos,r=ie(s,h,u),i&&l.push(o(!0));return i?l:o()}function oe(t,e){if(t)for(;;){var n=t.match(/(?:^|\s+)line-(background-)?(\S+)/);if(!n)break;t=t.slice(0,n.index)+t.slice(n.index+n[0].length);var i=n[1]?"bgClass":"textClass";null==e[i]?e[i]=n[2]:new RegExp("(?:^|s)"+n[2]+"(?:$|s)").test(e[i])||(e[i]+=" "+n[2])}return t}function ae(t,e,n,i,r,o,a){var s=n.flattenSpans;null==s&&(s=t.options.flattenSpans);var l,c=0,u=null,h=new $a(e,t.options.tabSize),d=t.options.addModeClass&&[null];for(""==e&&oe(ne(n,i),o);!h.eol();){if(h.pos>t.options.maxHighlightLength?(s=!1,a&&ee(t,e,i,h.pos),h.pos=e.length,l=null):l=oe(ie(n,h,i,d),o),d){var f=d[0].name;f&&(l="m-"+(l?f+" "+l:f))}if(!s||u!=l){for(;c<h.start;)c=Math.min(h.start,c+5e3),r(c,u);u=l}h.start=h.pos}for(;c<h.pos;){var p=Math.min(h.pos,c+5e3);r(p,u),c=p}}function se(t,e,n){for(var i,r,o=t.doc,a=n?-1:e-(t.doc.mode.innerMode?1e3:100),s=e;s>a;--s){if(s<=o.first)return o.first;var l=A(o,s-1);if(l.stateAfter&&(!n||s<=o.frontier))return s;var c=h(l.text,null,t.options.tabSize);(null==r||i>c)&&(r=s-1,i=c)}return r}function le(t,e,n,i){t.text=e,t.stateAfter&&(t.stateAfter=null),t.styles&&(t.styles=null),null!=t.order&&(t.order=null),nt(t),it(t,n);var r=i?i(t):1;r!=t.height&&E(t,r)}function ce(t){t.parent=null,nt(t)}function ue(t,e){if(!t||/^\s*$/.test(t))return null;var n=e.addModeClass?Ya:Xa;return n[t]||(n[t]=t.replace(/\S+/g,"cm-$&"))}function he(t,e){var n=r("span",null,null,ea?"padding-right: .1px":null),i={pre:r("pre",[n],"CodeMirror-line"),content:n,col:0,pos:0,cm:t,trailingSpace:!1,splitSpaces:(Jo||ea)&&t.getOption("lineWrapping")};e.measure={};for(var o=0;o<=(e.rest?e.rest.length:0);o++){var a=o?e.rest[o-1]:e.line,s=void 0;i.pos=0,i.addToken=fe,qt(t.display.measure)&&(s=St(a,t.doc.direction))&&(i.addToken=ge(i.addToken,s)),i.map=[];var c=e!=t.display.externalMeasured&&P(a);ve(a,i,Jt(t,a,c)),a.styleClasses&&(a.styleClasses.bgClass&&(i.bgClass=l(a.styleClasses.bgClass,i.bgClass||"")),a.styleClasses.textClass&&(i.textClass=l(a.styleClasses.textClass,i.textClass||""))),0==i.map.length&&i.map.push(0,0,i.content.appendChild(zt(t.display.measure))),0==o?(e.measure.map=i.map,e.measure.cache={}):((e.measure.maps||(e.measure.maps=[])).push(i.map),(e.measure.caches||(e.measure.caches=[])).push({}))}if(ea){var u=i.content.lastChild;(/\bcm-tab\b/.test(u.className)||u.querySelector&&u.querySelector(".cm-tab"))&&(i.content.className="cm-tab-wrap-hack")}return Et(t,"renderLine",t,e.line,i.pre),i.pre.className&&(i.textClass=l(i.pre.className,i.textClass||"")),i}function de(t){var e=i("span","•","cm-invalidchar");return e.title="\\u"+t.charCodeAt(0).toString(16),e.setAttribute("aria-label",e.title),e}function fe(t,e,n,r,o,a,s){if(e){var l,c=t.splitSpaces?pe(e,t.trailingSpace):e,u=t.cm.state.specialChars,h=!1;if(u.test(e)){l=document.createDocumentFragment();for(var d=0;;){u.lastIndex=d;var f=u.exec(e),g=f?f.index-d:e.length-d;if(g){var m=document.createTextNode(c.slice(d,d+g));Jo&&ta<9?l.appendChild(i("span",[m])):l.appendChild(m),t.map.push(t.pos,t.pos+g,m),t.col+=g,t.pos+=g}if(!f)break;d+=g+1;var v=void 0;if("\t"==f[0]){var y=t.cm.options.tabSize,x=y-t.col%y;v=l.appendChild(i("span",p(x),"cm-tab")),v.setAttribute("role","presentation"),v.setAttribute("cm-text","\t"),t.col+=x}else"\r"==f[0]||"\n"==f[0]?(v=l.appendChild(i("span","\r"==f[0]?"␍":"␤","cm-invalidchar")),v.setAttribute("cm-text",f[0]),t.col+=1):(v=t.cm.options.specialCharPlaceholder(f[0]),v.setAttribute("cm-text",f[0]),Jo&&ta<9?l.appendChild(i("span",[v])):l.appendChild(v),t.col+=1);t.map.push(t.pos,t.pos+1,v),t.pos++}}else t.col+=e.length,l=document.createTextNode(c),t.map.push(t.pos,t.pos+e.length,l),Jo&&ta<9&&(h=!0),t.pos+=e.length;if(t.trailingSpace=32==c.charCodeAt(e.length-1),n||r||o||h||s){var b=n||"";r&&(b+=r),o&&(b+=o);var _=i("span",[l],b,s);return a&&(_.title=a),t.content.appendChild(_)}t.content.appendChild(l)}}function pe(t,e){if(t.length>1&&!/  /.test(t))return t;for(var n=e,i="",r=0;r<t.length;r++){var o=t.charAt(r);" "!=o||!n||r!=t.length-1&&32!=t.charCodeAt(r+1)||(o=" "),i+=o,n=" "==o}return i}function ge(t,e){return function(n,i,r,o,a,s,l){r=r?r+" cm-force-border":"cm-force-border";for(var c=n.pos,u=c+i.length;;){for(var h=void 0,d=0;d<e.length&&(h=e[d],!(h.to>c&&h.from<=c));d++);if(h.to>=u)return t(n,i,r,o,a,s,l);t(n,i.slice(0,h.to-c),r,o,null,s,l),o=null,i=i.slice(h.to-c),c=h.to}}}function me(t,e,n,i){var r=!i&&n.widgetNode;r&&t.map.push(t.pos,t.pos+e,r),!i&&t.cm.display.input.needsContentAttribute&&(r||(r=t.content.appendChild(document.createElement("span"))),r.setAttribute("cm-marker",n.id)),r&&(t.cm.display.input.setUneditable(r),t.content.appendChild(r)),t.pos+=e,t.trailingSpace=!1}function ve(t,e,n){var i=t.markedSpans,r=t.text,o=0;if(i)for(var a,s,l,c,u,h,d,f=r.length,p=0,g=1,m="",v=0;;){if(v==p){l=c=u=h=s="",d=null,v=1/0;for(var y=[],x=void 0,b=0;b<i.length;++b){var _=i[b],w=_.marker;"bookmark"==w.type&&_.from==p&&w.widgetNode?y.push(w):_.from<=p&&(null==_.to||_.to>p||w.collapsed&&_.to==p&&_.from==p)?(null!=_.to&&_.to!=p&&v>_.to&&(v=_.to,c=""),w.className&&(l+=" "+w.className),w.css&&(s=(s?s+";":"")+w.css),w.startStyle&&_.from==p&&(u+=" "+w.startStyle),w.endStyle&&_.to==v&&(x||(x=[])).push(w.endStyle,_.to),w.title&&!h&&(h=w.title),w.collapsed&&(!d||at(d.marker,w)<0)&&(d=_)):_.from>p&&v>_.from&&(v=_.from)}if(x)for(var S=0;S<x.length;S+=2)x[S+1]==v&&(c+=" "+x[S]);if(!d||d.from==p)for(var C=0;C<y.length;++C)me(e,0,y[C]);if(d&&(d.from||0)==p){if(me(e,(null==d.to?f+1:d.to)-p,d.marker,null==d.from),null==d.to)return;d.to==p&&(d=!1)}}if(p>=f)break;for(var T=Math.min(f,v);;){if(m){var k=p+m.length;if(!d){var A=k>T?m.slice(0,T-p):m;e.addToken(e,A,a?a+l:l,u,p+A.length==v?c:"",h,s)}if(k>=T){m=m.slice(T-p),p=T;break}p=k,u=""}m=r.slice(o,o=n[g++]),a=ue(n[g++],e.cm.options)}}else for(var M=1;M<n.length;M+=2)e.addToken(e,r.slice(o,o=n[M]),ue(n[M+1],e.cm.options))}function ye(t,e,n){this.line=e,this.rest=ft(e),this.size=this.rest?P(g(this.rest))-n+1:1,this.node=this.text=null,this.hidden=mt(t,e)}function xe(t,e,n){for(var i,r=[],o=e;o<n;o=i){var a=new ye(t.doc,A(t.doc,o),o);i=o+a.size,r.push(a)}return r}function be(t){Qa?Qa.ops.push(t):t.ownsGroup=Qa={ops:[t],delayedCallbacks:[]}}function _e(t){var e=t.delayedCallbacks,n=0;do{for(;n<e.length;n++)e[n].call(null);for(var i=0;i<t.ops.length;i++){var r=t.ops[i];if(r.cursorActivityHandlers)for(;r.cursorActivityCalled<r.cursorActivityHandlers.length;)r.cursorActivityHandlers[r.cursorActivityCalled++].call(null,r.cm)}}while(n<e.length)}function we(t,e){var n=t.ownsGroup;if(n)try{_e(n)}finally{Qa=null,e(n)}}function Se(t,e){var n=Mt(t,e);if(n.length){var i,r=Array.prototype.slice.call(arguments,2);Qa?i=Qa.delayedCallbacks:Za?i=Za:(i=Za=[],setTimeout(Ce,0));for(var o=function(t){i.push(function(){return n[t].apply(null,r)})},a=0;a<n.length;++a)o(a)}}function Ce(){var t=Za;Za=null;for(var e=0;e<t.length;++e)t[e]()}function Te(t,e,n,i){for(var r=0;r<e.changes.length;r++){var o=e.changes[r];"text"==o?Le(t,e):"gutter"==o?Pe(t,e,n,i):"class"==o?Ee(t,e):"widget"==o&&Ne(t,e,i)}e.changes=null}function ke(t){return t.node==t.text&&(t.node=i("div",null,null,"position: relative"),t.text.parentNode&&t.text.parentNode.replaceChild(t.node,t.text),t.node.appendChild(t.text),Jo&&ta<8&&(t.node.style.zIndex=2)),t.node}function Ae(t,e){var n=e.bgClass?e.bgClass+" "+(e.line.bgClass||""):e.line.bgClass;if(n&&(n+=" CodeMirror-linebackground"),e.background)n?e.background.className=n:(e.background.parentNode.removeChild(e.background),e.background=null);else if(n){var r=ke(e);e.background=r.insertBefore(i("div",null,n),r.firstChild),t.display.input.setUneditable(e.background)}}function Me(t,e){var n=t.display.externalMeasured;return n&&n.line==e.line?(t.display.externalMeasured=null,e.measure=n.measure,n.built):he(t,e)}function Le(t,e){var n=e.text.className,i=Me(t,e);e.text==e.node&&(e.node=i.pre),e.text.parentNode.replaceChild(i.pre,e.text),e.text=i.pre,i.bgClass!=e.bgClass||i.textClass!=e.textClass?(e.bgClass=i.bgClass,e.textClass=i.textClass,Ee(t,e)):n&&(e.text.className=n)}function Ee(t,e){Ae(t,e),e.line.wrapClass?ke(e).className=e.line.wrapClass:e.node!=e.text&&(e.node.className="");var n=e.textClass?e.textClass+" "+(e.line.textClass||""):e.line.textClass;e.text.className=n||""}function Pe(t,e,n,r){if(e.gutter&&(e.node.removeChild(e.gutter),e.gutter=null),e.gutterBackground&&(e.node.removeChild(e.gutterBackground),e.gutterBackground=null),e.line.gutterClass){var o=ke(e);e.gutterBackground=i("div",null,"CodeMirror-gutter-background "+e.line.gutterClass,"left: "+(t.options.fixedGutter?r.fixedPos:-r.gutterTotalWidth)+"px; width: "+r.gutterTotalWidth+"px"),t.display.input.setUneditable(e.gutterBackground),o.insertBefore(e.gutterBackground,e.text)}var a=e.line.gutterMarkers;if(t.options.lineNumbers||a){var s=ke(e),l=e.gutter=i("div",null,"CodeMirror-gutter-wrapper","left: "+(t.options.fixedGutter?r.fixedPos:-r.gutterTotalWidth)+"px");if(t.display.input.setUneditable(l),s.insertBefore(l,e.text),e.line.gutterClass&&(l.className+=" "+e.line.gutterClass),!t.options.lineNumbers||a&&a["CodeMirror-linenumbers"]||(e.lineNumber=l.appendChild(i("div",R(t.options,n),"CodeMirror-linenumber CodeMirror-gutter-elt","left: "+r.gutterLeft["CodeMirror-linenumbers"]+"px; width: "+t.display.lineNumInnerWidth+"px"))),a)for(var c=0;c<t.options.gutters.length;++c){var u=t.options.gutters[c],h=a.hasOwnProperty(u)&&a[u];h&&l.appendChild(i("div",[h],"CodeMirror-gutter-elt","left: "+r.gutterLeft[u]+"px; width: "+r.gutterWidth[u]+"px"))}}}function Ne(t,e,n){e.alignable&&(e.alignable=null);for(var i=e.node.firstChild,r=void 0;i;i=r)r=i.nextSibling,"CodeMirror-linewidget"==i.className&&e.node.removeChild(i);Re(t,e,n)}function Oe(t,e,n,i){var r=Me(t,e);return e.text=e.node=r.pre,r.bgClass&&(e.bgClass=r.bgClass),r.textClass&&(e.textClass=r.textClass),Ee(t,e),Pe(t,e,n,i),Re(t,e,i),e.node}function Re(t,e,n){if(De(t,e.line,e,n,!0),e.rest)for(var i=0;i<e.rest.length;i++)De(t,e.rest[i],e,n,!1)}function De(t,e,n,r,o){if(e.widgets)for(var a=ke(n),s=0,l=e.widgets;s<l.length;++s){var c=l[s],u=i("div",[c.node],"CodeMirror-linewidget");c.handleMouseEvents||u.setAttribute("cm-ignore-events","true"),Ie(c,u,n,r),t.display.input.setUneditable(u),o&&c.above?a.insertBefore(u,n.gutter||n.text):a.appendChild(u),Se(c,"redraw")}}function Ie(t,e,n,i){if(t.noHScroll){(n.alignable||(n.alignable=[])).push(e);var r=i.wrapperWidth;e.style.left=i.fixedPos+"px",t.coverGutter||(r-=i.gutterTotalWidth,e.style.paddingLeft=i.gutterTotalWidth+"px"),e.style.width=r+"px"}t.coverGutter&&(e.style.zIndex=5,e.style.position="relative",t.noHScroll||(e.style.marginLeft=-i.gutterTotalWidth+"px"))}function je(t){if(null!=t.height)return t.height;var e=t.doc.cm;if(!e)return 0;if(!o(document.body,t.node)){var r="position: relative;";t.coverGutter&&(r+="margin-left: -"+e.display.gutters.offsetWidth+"px;"),t.noHScroll&&(r+="width: "+e.display.wrapper.clientWidth+"px;"),n(e.display.measure,i("div",[t.node],null,r))}return t.height=t.node.parentNode.offsetHeight}function He(t,e){for(var n=Vt(e);n!=t.wrapper;n=n.parentNode)if(!n||1==n.nodeType&&"true"==n.getAttribute("cm-ignore-events")||n.parentNode==t.sizer&&n!=t.mover)return!0}function Ve(t){return t.lineSpace.offsetTop}function Fe(t){return t.mover.offsetHeight-t.lineSpace.offsetHeight}function ze(t){if(t.cachedPaddingH)return t.cachedPaddingH;var e=n(t.measure,i("pre","x")),r=window.getComputedStyle?window.getComputedStyle(e):e.currentStyle,o={left:parseInt(r.paddingLeft),right:parseInt(r.paddingRight)};return isNaN(o.left)||isNaN(o.right)||(t.cachedPaddingH=o),o}function qe(t){return Sa-t.display.nativeBarWidth}function Ge(t){return t.display.scroller.clientWidth-qe(t)-t.display.barWidth}function Be(t){return t.display.scroller.clientHeight-qe(t)-t.display.barHeight}function $e(t,e,n){var i=t.options.lineWrapping,r=i&&Ge(t);if(!e.measure.heights||i&&e.measure.width!=r){var o=e.measure.heights=[];if(i){e.measure.width=r;for(var a=e.text.firstChild.getClientRects(),s=0;s<a.length-1;s++){var l=a[s],c=a[s+1];Math.abs(l.bottom-c.bottom)>2&&o.push((l.bottom+c.top)/2-n.top)}}o.push(n.bottom-n.top)}}function We(t,e,n){if(t.line==e)return{map:t.measure.map,cache:t.measure.cache};for(var i=0;i<t.rest.length;i++)if(t.rest[i]==e)return{map:t.measure.maps[i],cache:t.measure.caches[i]};for(var r=0;r<t.rest.length;r++)if(P(t.rest[r])>n)return{map:t.measure.maps[r],cache:t.measure.caches[r],before:!0}}function Ue(t,e){e=ht(e);var i=P(e),r=t.display.externalMeasured=new ye(t.doc,e,i);r.lineN=i;var o=r.built=he(t,r);return r.text=o.pre,n(t.display.lineMeasure,o.pre),r}function Xe(t,e,n,i){return Ze(t,Qe(t,e),n,i)}function Ye(t,e){if(e>=t.display.viewFrom&&e<t.display.viewTo)return t.display.view[Tn(t,e)];
-var n=t.display.externalMeasured;return n&&e>=n.lineN&&e<n.lineN+n.size?n:void 0}function Qe(t,e){var n=P(e),i=Ye(t,n);i&&!i.text?i=null:i&&i.changes&&(Te(t,i,n,bn(t)),t.curOp.forceUpdate=!0),i||(i=Ue(t,e));var r=We(i,e,n);return{line:e,view:i,rect:null,map:r.map,cache:r.cache,before:r.before,hasHeights:!1}}function Ze(t,e,n,i,r){e.before&&(n=-1);var o,a=n+(i||"");return e.cache.hasOwnProperty(a)?o=e.cache[a]:(e.rect||(e.rect=e.view.text.getBoundingClientRect()),e.hasHeights||($e(t,e.view,e.rect),e.hasHeights=!0),o=tn(t,e,n,i),o.bogus||(e.cache[a]=o)),{left:o.left,right:o.right,top:r?o.rtop:o.top,bottom:r?o.rbottom:o.bottom}}function Ke(t,e,n){for(var i,r,o,a,s,l,c=0;c<t.length;c+=3)if(s=t[c],l=t[c+1],e<s?(r=0,o=1,a="left"):e<l?(r=e-s,o=r+1):(c==t.length-3||e==l&&t[c+3]>e)&&(o=l-s,r=o-1,e>=l&&(a="right")),null!=r){if(i=t[c+2],s==l&&n==(i.insertLeft?"left":"right")&&(a=n),"left"==n&&0==r)for(;c&&t[c-2]==t[c-3]&&t[c-1].insertLeft;)i=t[(c-=3)+2],a="left";if("right"==n&&r==l-s)for(;c<t.length-3&&t[c+3]==t[c+4]&&!t[c+5].insertLeft;)i=t[(c+=3)+2],a="right";break}return{node:i,start:r,end:o,collapse:a,coverStart:s,coverEnd:l}}function Je(t,e){var n=Ka;if("left"==e)for(var i=0;i<t.length&&(n=t[i]).left==n.right;i++);else for(var r=t.length-1;r>=0&&(n=t[r]).left==n.right;r--);return n}function tn(t,e,n,i){var r,o=Ke(e.map,n,i),a=o.node,s=o.start,l=o.end,c=o.collapse;if(3==a.nodeType){for(var u=0;u<4;u++){for(;s&&S(e.line.text.charAt(o.coverStart+s));)--s;for(;o.coverStart+l<o.coverEnd&&S(e.line.text.charAt(o.coverStart+l));)++l;if(r=Jo&&ta<9&&0==s&&l==o.coverEnd-o.coverStart?a.parentNode.getBoundingClientRect():Je(ga(a,s,l).getClientRects(),i),r.left||r.right||0==s)break;l=s,s-=1,c="right"}Jo&&ta<11&&(r=en(t.display.measure,r))}else{s>0&&(c=i="right");var h;r=t.options.lineWrapping&&(h=a.getClientRects()).length>1?h["right"==i?h.length-1:0]:a.getBoundingClientRect()}if(Jo&&ta<9&&!s&&(!r||!r.left&&!r.right)){var d=a.parentNode.getClientRects()[0];r=d?{left:d.left,right:d.left+xn(t.display),top:d.top,bottom:d.bottom}:Ka}for(var f=r.top-e.rect.top,p=r.bottom-e.rect.top,g=(f+p)/2,m=e.view.measure.heights,v=0;v<m.length-1&&!(g<m[v]);v++);var y=v?m[v-1]:0,x=m[v],b={left:("right"==c?r.right:r.left)-e.rect.left,right:("left"==c?r.left:r.right)-e.rect.left,top:y,bottom:x};return r.left||r.right||(b.bogus=!0),t.options.singleCursorHeightPerLine||(b.rtop=f,b.rbottom=p),b}function en(t,e){if(!window.screen||null==screen.logicalXDPI||screen.logicalXDPI==screen.deviceXDPI||!Gt(t))return e;var n=screen.logicalXDPI/screen.deviceXDPI,i=screen.logicalYDPI/screen.deviceYDPI;return{left:e.left*n,right:e.right*n,top:e.top*i,bottom:e.bottom*i}}function nn(t){if(t.measure&&(t.measure.cache={},t.measure.heights=null,t.rest))for(var e=0;e<t.rest.length;e++)t.measure.caches[e]={}}function rn(t){t.display.externalMeasure=null,e(t.display.lineMeasure);for(var n=0;n<t.display.view.length;n++)nn(t.display.view[n])}function on(t){rn(t),t.display.cachedCharWidth=t.display.cachedTextHeight=t.display.cachedPaddingH=null,t.options.lineWrapping||(t.display.maxLineChanged=!0),t.display.lineNumChars=null}function an(){return ia&&ca?-(document.body.getBoundingClientRect().left-parseInt(getComputedStyle(document.body).marginLeft)):window.pageXOffset||(document.documentElement||document.body).scrollLeft}function sn(){return ia&&ca?-(document.body.getBoundingClientRect().top-parseInt(getComputedStyle(document.body).marginTop)):window.pageYOffset||(document.documentElement||document.body).scrollTop}function ln(t,e,n,i,r){if(!r&&e.widgets)for(var o=0;o<e.widgets.length;++o)if(e.widgets[o].above){var a=je(e.widgets[o]);n.top+=a,n.bottom+=a}if("line"==i)return n;i||(i="local");var s=yt(e);if("local"==i?s+=Ve(t.display):s-=t.display.viewOffset,"page"==i||"window"==i){var l=t.display.lineSpace.getBoundingClientRect();s+=l.top+("window"==i?0:sn());var c=l.left+("window"==i?0:an());n.left+=c,n.right+=c}return n.top+=s,n.bottom+=s,n}function cn(t,e,n){if("div"==n)return e;var i=e.left,r=e.top;if("page"==n)i-=an(),r-=sn();else if("local"==n||!n){var o=t.display.sizer.getBoundingClientRect();i+=o.left,r+=o.top}var a=t.display.lineSpace.getBoundingClientRect();return{left:i-a.left,top:r-a.top}}function un(t,e,n,i,r){return i||(i=A(t.doc,e.line)),ln(t,i,Xe(t,i,e.ch,r),n)}function hn(t,e,n,i,r,o){function a(e,a){var s=Ze(t,r,e,a?"right":"left",o);return a?s.left=s.right:s.right=s.left,ln(t,i,s,n)}function s(t,e,n){var i=l[e],r=i.level%2!=0;return a(n?t-1:t,r!=n)}i=i||A(t.doc,e.line),r||(r=Qe(t,i));var l=St(i,t.doc.direction),c=e.ch,u=e.sticky;if(c>=i.text.length?(c=i.text.length,u="before"):c<=0&&(c=0,u="after"),!l)return a("before"==u?c-1:c,"before"==u);var h=wt(l,c,u),d=Oa,f=s(c,h,"before"==u);return null!=d&&(f.other=s(c,d,"before"!=u)),f}function dn(t,e){var n=0;e=q(t.doc,e),t.options.lineWrapping||(n=xn(t.display)*e.ch);var i=A(t.doc,e.line),r=yt(i)+Ve(t.display);return{left:n,right:n,top:r,bottom:r+i.height}}function fn(t,e,n,i,r){var o=D(t,e,n);return o.xRel=r,i&&(o.outside=!0),o}function pn(t,e,n){var i=t.doc;if(n+=t.display.viewOffset,n<0)return fn(i.first,0,null,!0,-1);var r=N(i,n),o=i.first+i.size-1;if(r>o)return fn(i.first+i.size-1,A(i,o).text.length,null,!0,1);e<0&&(e=0);for(var a=A(i,r);;){var s=vn(t,a,r,e,n),l=ct(a),c=l&&l.find(0,!0);if(!l||!(s.ch>c.from.ch||s.ch==c.from.ch&&s.xRel>0))return s;r=P(a=c.to.line)}}function gn(t,e,n,i){var r=function(i){return ln(t,e,Ze(t,n,i),"line")},o=e.text.length,a=T(function(t){return r(t-1).bottom<=i},o,0);return o=T(function(t){return r(t).top>i},a,o),{begin:a,end:o}}function mn(t,e,n,i){var r=ln(t,e,Ze(t,n,i),"line").top;return gn(t,e,n,r)}function vn(t,e,n,i,r){r-=yt(e);var o,a=0,s=e.text.length,l=Qe(t,e),c=St(e,t.doc.direction);if(c){if(t.options.lineWrapping){var u;u=gn(t,e,l,r),a=u.begin,s=u.end,u}o=new D(n,a);var h,d,f=hn(t,o,"line",e,l).left,p=f<i?1:-1,g=f-i;do{if(h=g,d=o,o=At(t,e,o,p),null==o||o.ch<a||s<=("before"==o.sticky?o.ch-1:o.ch)){o=d;break}g=hn(t,o,"line",e,l).left-i}while(p<0!=g<0&&Math.abs(g)<=Math.abs(h));if(Math.abs(g)>Math.abs(h)){if(g<0==h<0)throw new Error("Broke out of infinite loop in coordsCharInner");o=d}}else{var m=T(function(n){var o=ln(t,e,Ze(t,l,n),"line");return o.top>r?(s=Math.min(n,s),!0):!(o.bottom<=r)&&(o.left>i||!(o.right<i)&&i-o.left<o.right-i)},a,s);m=C(e.text,m,1),o=new D(n,m,m==s?"before":"after")}var v=hn(t,o,"line",e,l);return(r<v.top||v.bottom<r)&&(o.outside=!0),o.xRel=i<v.left?-1:i>v.right?1:0,o}function yn(t){if(null!=t.cachedTextHeight)return t.cachedTextHeight;if(null==Ua){Ua=i("pre");for(var r=0;r<49;++r)Ua.appendChild(document.createTextNode("x")),Ua.appendChild(i("br"));Ua.appendChild(document.createTextNode("x"))}n(t.measure,Ua);var o=Ua.offsetHeight/50;return o>3&&(t.cachedTextHeight=o),e(t.measure),o||1}function xn(t){if(null!=t.cachedCharWidth)return t.cachedCharWidth;var e=i("span","xxxxxxxxxx"),r=i("pre",[e]);n(t.measure,r);var o=e.getBoundingClientRect(),a=(o.right-o.left)/10;return a>2&&(t.cachedCharWidth=a),a||10}function bn(t){for(var e=t.display,n={},i={},r=e.gutters.clientLeft,o=e.gutters.firstChild,a=0;o;o=o.nextSibling,++a)n[t.options.gutters[a]]=o.offsetLeft+o.clientLeft+r,i[t.options.gutters[a]]=o.clientWidth;return{fixedPos:_n(e),gutterTotalWidth:e.gutters.offsetWidth,gutterLeft:n,gutterWidth:i,wrapperWidth:e.wrapper.clientWidth}}function _n(t){return t.scroller.getBoundingClientRect().left-t.sizer.getBoundingClientRect().left}function wn(t){var e=yn(t.display),n=t.options.lineWrapping,i=n&&Math.max(5,t.display.scroller.clientWidth/xn(t.display)-3);return function(r){if(mt(t.doc,r))return 0;var o=0;if(r.widgets)for(var a=0;a<r.widgets.length;a++)r.widgets[a].height&&(o+=r.widgets[a].height);return n?o+(Math.ceil(r.text.length/i)||1)*e:o+e}}function Sn(t){var e=t.doc,n=wn(t);e.iter(function(t){var e=n(t);e!=t.height&&E(t,e)})}function Cn(t,e,n,i){var r=t.display;if(!n&&"true"==Vt(e).getAttribute("cm-not-content"))return null;var o,a,s=r.lineSpace.getBoundingClientRect();try{o=e.clientX-s.left,a=e.clientY-s.top}catch(t){return null}var l,c=pn(t,o,a);if(i&&1==c.xRel&&(l=A(t.doc,c.line).text).length==c.ch){var u=h(l,l.length,t.options.tabSize)-l.length;c=D(c.line,Math.max(0,Math.round((o-ze(t.display).left)/xn(t.display))-u))}return c}function Tn(t,e){if(e>=t.display.viewTo)return null;if(e-=t.display.viewFrom,e<0)return null;for(var n=t.display.view,i=0;i<n.length;i++)if(e-=n[i].size,e<0)return i}function kn(t){t.display.input.showSelection(t.display.input.prepareSelection())}function An(t,e){for(var n=t.doc,i={},r=i.cursors=document.createDocumentFragment(),o=i.selection=document.createDocumentFragment(),a=0;a<n.sel.ranges.length;a++)if(e!==!1||a!=n.sel.primIndex){var s=n.sel.ranges[a];if(!(s.from().line>=t.display.viewTo||s.to().line<t.display.viewFrom)){var l=s.empty();(l||t.options.showCursorWhenSelecting)&&Mn(t,s.head,r),l||Ln(t,s,o)}}return i}function Mn(t,e,n){var r=hn(t,e,"div",null,null,!t.options.singleCursorHeightPerLine),o=n.appendChild(i("div"," ","CodeMirror-cursor"));if(o.style.left=r.left+"px",o.style.top=r.top+"px",o.style.height=Math.max(0,r.bottom-r.top)*t.options.cursorHeight+"px",r.other){var a=n.appendChild(i("div"," ","CodeMirror-cursor CodeMirror-secondarycursor"));a.style.display="",a.style.left=r.other.left+"px",a.style.top=r.other.top+"px",a.style.height=.85*(r.other.bottom-r.other.top)+"px"}}function Ln(t,e,n){function r(t,e,n,r){e<0&&(e=0),e=Math.round(e),r=Math.round(r),l.appendChild(i("div",null,"CodeMirror-selected","position: absolute; left: "+t+"px;\n                             top: "+e+"px; width: "+(null==n?h-t:n)+"px;\n                             height: "+(r-e)+"px"))}function o(e,n,i){function o(n,i){return un(t,D(e,n),"div",c,i)}var a,l,c=A(s,e),d=c.text.length;return _t(St(c,s.direction),n||0,null==i?d:i,function(t,e,s){var c,f,p,g=o(t,"left");if(t==e)c=g,f=p=g.left;else{if(c=o(e-1,"right"),"rtl"==s){var m=g;g=c,c=m}f=g.left,p=c.right}null==n&&0==t&&(f=u),c.top-g.top>3&&(r(f,g.top,null,g.bottom),f=u,g.bottom<c.top&&r(f,g.bottom,null,c.top)),null==i&&e==d&&(p=h),(!a||g.top<a.top||g.top==a.top&&g.left<a.left)&&(a=g),(!l||c.bottom>l.bottom||c.bottom==l.bottom&&c.right>l.right)&&(l=c),f<u+1&&(f=u),r(f,c.top,p-f,c.bottom)}),{start:a,end:l}}var a=t.display,s=t.doc,l=document.createDocumentFragment(),c=ze(t.display),u=c.left,h=Math.max(a.sizerWidth,Ge(t)-a.sizer.offsetLeft)-c.right,d=e.from(),f=e.to();if(d.line==f.line)o(d.line,d.ch,f.ch);else{var p=A(s,d.line),g=A(s,f.line),m=ht(p)==ht(g),v=o(d.line,d.ch,m?p.text.length+1:null).end,y=o(f.line,m?0:null,f.ch).start;m&&(v.top<y.top-2?(r(v.right,v.top,null,v.bottom),r(u,y.top,y.left,y.bottom)):r(v.right,v.top,y.left-v.right,v.bottom)),v.bottom<y.top&&r(u,v.bottom,null,y.top)}n.appendChild(l)}function En(t){if(t.state.focused){var e=t.display;clearInterval(e.blinker);var n=!0;e.cursorDiv.style.visibility="",t.options.cursorBlinkRate>0?e.blinker=setInterval(function(){return e.cursorDiv.style.visibility=(n=!n)?"":"hidden"},t.options.cursorBlinkRate):t.options.cursorBlinkRate<0&&(e.cursorDiv.style.visibility="hidden")}}function Pn(t){t.state.focused||(t.display.input.focus(),On(t))}function Nn(t){t.state.delayingBlurEvent=!0,setTimeout(function(){t.state.delayingBlurEvent&&(t.state.delayingBlurEvent=!1,Rn(t))},100)}function On(t,e){t.state.delayingBlurEvent&&(t.state.delayingBlurEvent=!1),"nocursor"!=t.options.readOnly&&(t.state.focused||(Et(t,"focus",t,e),t.state.focused=!0,s(t.display.wrapper,"CodeMirror-focused"),t.curOp||t.display.selForContextMenu==t.doc.sel||(t.display.input.reset(),ea&&setTimeout(function(){return t.display.input.reset(!0)},20)),t.display.input.receivedFocus()),En(t))}function Rn(t,e){t.state.delayingBlurEvent||(t.state.focused&&(Et(t,"blur",t,e),t.state.focused=!1,ya(t.display.wrapper,"CodeMirror-focused")),clearInterval(t.display.blinker),setTimeout(function(){t.state.focused||(t.display.shift=!1)},150))}function Dn(t){var e=t.display,n=e.view;if(e.alignWidgets||e.gutters.firstChild&&t.options.fixedGutter){for(var i=_n(e)-e.scroller.scrollLeft+t.doc.scrollLeft,r=e.gutters.offsetWidth,o=i+"px",a=0;a<n.length;a++)if(!n[a].hidden){t.options.fixedGutter&&(n[a].gutter&&(n[a].gutter.style.left=o),n[a].gutterBackground&&(n[a].gutterBackground.style.left=o));var s=n[a].alignable;if(s)for(var l=0;l<s.length;l++)s[l].style.left=o}t.options.fixedGutter&&(e.gutters.style.left=i+r+"px")}}function In(t){if(!t.options.lineNumbers)return!1;var e=t.doc,n=R(t.options,e.first+e.size-1),r=t.display;if(n.length!=r.lineNumChars){var o=r.measure.appendChild(i("div",[i("div",n)],"CodeMirror-linenumber CodeMirror-gutter-elt")),a=o.firstChild.offsetWidth,s=o.offsetWidth-a;return r.lineGutter.style.width="",r.lineNumInnerWidth=Math.max(a,r.lineGutter.offsetWidth-s)+1,r.lineNumWidth=r.lineNumInnerWidth+s,r.lineNumChars=r.lineNumInnerWidth?n.length:-1,r.lineGutter.style.width=r.lineNumWidth+"px",Ai(t),!0}return!1}function jn(t){for(var e=t.display,n=e.lineDiv.offsetTop,i=0;i<e.view.length;i++){var r=e.view[i],o=void 0;if(!r.hidden){if(Jo&&ta<8){var a=r.node.offsetTop+r.node.offsetHeight;o=a-n,n=a}else{var s=r.node.getBoundingClientRect();o=s.bottom-s.top}var l=r.line.height-o;if(o<2&&(o=yn(e)),(l>.001||l<-.001)&&(E(r.line,o),Hn(r.line),r.rest))for(var c=0;c<r.rest.length;c++)Hn(r.rest[c])}}}function Hn(t){if(t.widgets)for(var e=0;e<t.widgets.length;++e)t.widgets[e].height=t.widgets[e].node.parentNode.offsetHeight}function Vn(t,e,n){var i=n&&null!=n.top?Math.max(0,n.top):t.scroller.scrollTop;i=Math.floor(i-Ve(t));var r=n&&null!=n.bottom?n.bottom:i+t.wrapper.clientHeight,o=N(e,i),a=N(e,r);if(n&&n.ensure){var s=n.ensure.from.line,l=n.ensure.to.line;s<o?(o=s,a=N(e,yt(A(e,s))+t.wrapper.clientHeight)):Math.min(l,e.lastLine())>=a&&(o=N(e,yt(A(e,l))-t.wrapper.clientHeight),a=l)}return{from:o,to:Math.max(a,o+1)}}function Fn(t,e){Math.abs(t.doc.scrollTop-e)<2||(t.doc.scrollTop=e,Yo||Ti(t,{top:e}),t.display.scroller.scrollTop!=e&&(t.display.scroller.scrollTop=e),t.display.scrollbars.setScrollTop(e),Yo&&Ti(t),bi(t,100))}function zn(t,e,n){(n?e==t.doc.scrollLeft:Math.abs(t.doc.scrollLeft-e)<2)||(e=Math.min(e,t.display.scroller.scrollWidth-t.display.scroller.clientWidth),t.doc.scrollLeft=e,Dn(t),t.display.scroller.scrollLeft!=e&&(t.display.scroller.scrollLeft=e),t.display.scrollbars.setScrollLeft(e))}function qn(t){var e=t.wheelDeltaX,n=t.wheelDeltaY;return null==e&&t.detail&&t.axis==t.HORIZONTAL_AXIS&&(e=t.detail),null==n&&t.detail&&t.axis==t.VERTICAL_AXIS?n=t.detail:null==n&&(n=t.wheelDelta),{x:e,y:n}}function Gn(t){var e=qn(t);return e.x*=ts,e.y*=ts,e}function Bn(t,e){var n=qn(e),i=n.x,r=n.y,o=t.display,a=o.scroller,s=a.scrollWidth>a.clientWidth,l=a.scrollHeight>a.clientHeight;if(i&&s||r&&l){if(r&&ha&&ea)t:for(var c=e.target,u=o.view;c!=a;c=c.parentNode)for(var h=0;h<u.length;h++)if(u[h].node==c){t.display.currentWheelTarget=c;break t}if(i&&!Yo&&!ra&&null!=ts)return r&&l&&Fn(t,Math.max(0,Math.min(a.scrollTop+r*ts,a.scrollHeight-a.clientHeight))),zn(t,Math.max(0,Math.min(a.scrollLeft+i*ts,a.scrollWidth-a.clientWidth))),(!r||r&&l)&&Dt(e),void(o.wheelStartX=null);if(r&&null!=ts){var d=r*ts,f=t.doc.scrollTop,p=f+o.wrapper.clientHeight;d<0?f=Math.max(0,f+d-50):p=Math.min(t.doc.height,p+d+50),Ti(t,{top:f,bottom:p})}Ja<20&&(null==o.wheelStartX?(o.wheelStartX=a.scrollLeft,o.wheelStartY=a.scrollTop,o.wheelDX=i,o.wheelDY=r,setTimeout(function(){if(null!=o.wheelStartX){var t=a.scrollLeft-o.wheelStartX,e=a.scrollTop-o.wheelStartY,n=e&&o.wheelDY&&e/o.wheelDY||t&&o.wheelDX&&t/o.wheelDX;o.wheelStartX=o.wheelStartY=null,n&&(ts=(ts*Ja+n)/(Ja+1),++Ja)}},200)):(o.wheelDX+=i,o.wheelDY+=r))}}function $n(t){var e=t.display,n=e.gutters.offsetWidth,i=Math.round(t.doc.height+Fe(t.display));return{clientHeight:e.scroller.clientHeight,viewHeight:e.wrapper.clientHeight,scrollWidth:e.scroller.scrollWidth,clientWidth:e.scroller.clientWidth,viewWidth:e.wrapper.clientWidth,barLeft:t.options.fixedGutter?n:0,docHeight:i,scrollHeight:i+qe(t)+e.barHeight,nativeBarWidth:e.nativeBarWidth,gutterWidth:n}}function Wn(t,e){e||(e=$n(t));var n=t.display.barWidth,i=t.display.barHeight;Un(t,e);for(var r=0;r<4&&n!=t.display.barWidth||i!=t.display.barHeight;r++)n!=t.display.barWidth&&t.options.lineWrapping&&jn(t),Un(t,$n(t)),n=t.display.barWidth,i=t.display.barHeight}function Un(t,e){var n=t.display,i=n.scrollbars.update(e);n.sizer.style.paddingRight=(n.barWidth=i.right)+"px",n.sizer.style.paddingBottom=(n.barHeight=i.bottom)+"px",n.heightForcer.style.borderBottom=i.bottom+"px solid transparent",i.right&&i.bottom?(n.scrollbarFiller.style.display="block",n.scrollbarFiller.style.height=i.bottom+"px",n.scrollbarFiller.style.width=i.right+"px"):n.scrollbarFiller.style.display="",i.bottom&&t.options.coverGutterNextToScrollbar&&t.options.fixedGutter?(n.gutterFiller.style.display="block",n.gutterFiller.style.height=i.bottom+"px",n.gutterFiller.style.width=e.gutterWidth+"px"):n.gutterFiller.style.display=""}function Xn(t){t.display.scrollbars&&(t.display.scrollbars.clear(),t.display.scrollbars.addClass&&ya(t.display.wrapper,t.display.scrollbars.addClass)),t.display.scrollbars=new is[t.options.scrollbarStyle](function(e){t.display.wrapper.insertBefore(e,t.display.scrollbarFiller),Ia(e,"mousedown",function(){t.state.focused&&setTimeout(function(){return t.display.input.focus()},0)}),e.setAttribute("cm-not-content","true")},function(e,n){"horizontal"==n?zn(t,e):Fn(t,e)},t),t.display.scrollbars.addClass&&s(t.display.wrapper,t.display.scrollbars.addClass)}function Yn(t,e){if(!Pt(t,"scrollCursorIntoView")){var n=t.display,r=n.sizer.getBoundingClientRect(),o=null;if(e.top+r.top<0?o=!0:e.bottom+r.top>(window.innerHeight||document.documentElement.clientHeight)&&(o=!1),null!=o&&!sa){var a=i("div","​",null,"position: absolute;\n                         top: "+(e.top-n.viewOffset-Ve(t.display))+"px;\n                         height: "+(e.bottom-e.top+qe(t)+n.barHeight)+"px;\n                         left: "+e.left+"px; width: "+Math.max(2,e.right-e.left)+"px;");t.display.lineSpace.appendChild(a),a.scrollIntoView(o),t.display.lineSpace.removeChild(a)}}}function Qn(t,e,n,i){null==i&&(i=0);for(var r,o=0;o<5;o++){var a=!1,s=hn(t,e),l=n&&n!=e?hn(t,n):s;r={left:Math.min(s.left,l.left),top:Math.min(s.top,l.top)-i,right:Math.max(s.left,l.left),bottom:Math.max(s.bottom,l.bottom)+i};var c=Kn(t,r),u=t.doc.scrollTop,h=t.doc.scrollLeft;if(null!=c.scrollTop&&(Fn(t,c.scrollTop),Math.abs(t.doc.scrollTop-u)>1&&(a=!0)),null!=c.scrollLeft&&(zn(t,c.scrollLeft),Math.abs(t.doc.scrollLeft-h)>1&&(a=!0)),!a)break}return r}function Zn(t,e){var n=Kn(t,e);null!=n.scrollTop&&Fn(t,n.scrollTop),null!=n.scrollLeft&&zn(t,n.scrollLeft)}function Kn(t,e){var n=t.display,i=yn(t.display);e.top<0&&(e.top=0);var r=t.curOp&&null!=t.curOp.scrollTop?t.curOp.scrollTop:n.scroller.scrollTop,o=Be(t),a={};e.bottom-e.top>o&&(e.bottom=e.top+o);var s=t.doc.height+Fe(n),l=e.top<i,c=e.bottom>s-i;if(e.top<r)a.scrollTop=l?0:e.top;else if(e.bottom>r+o){var u=Math.min(e.top,(c?s:e.bottom)-o);u!=r&&(a.scrollTop=u)}var h=t.curOp&&null!=t.curOp.scrollLeft?t.curOp.scrollLeft:n.scroller.scrollLeft,d=Ge(t)-(t.options.fixedGutter?n.gutters.offsetWidth:0),f=e.right-e.left>d;return f&&(e.right=e.left+d),e.left<10?a.scrollLeft=0:e.left<h?a.scrollLeft=Math.max(0,e.left-(f?0:10)):e.right>d+h-3&&(a.scrollLeft=e.right+(f?0:10)-d),a}function Jn(t,e,n){null==e&&null==n||ei(t),null!=e&&(t.curOp.scrollLeft=(null==t.curOp.scrollLeft?t.doc.scrollLeft:t.curOp.scrollLeft)+e),null!=n&&(t.curOp.scrollTop=(null==t.curOp.scrollTop?t.doc.scrollTop:t.curOp.scrollTop)+n)}function ti(t){ei(t);var e=t.getCursor(),n=e,i=e;t.options.lineWrapping||(n=e.ch?D(e.line,e.ch-1):e,i=D(e.line,e.ch+1)),t.curOp.scrollToPos={from:n,to:i,margin:t.options.cursorScrollMargin}}function ei(t){var e=t.curOp.scrollToPos;if(e){t.curOp.scrollToPos=null;var n=dn(t,e.from),i=dn(t,e.to),r=Kn(t,{left:Math.min(n.left,i.left),top:Math.min(n.top,i.top)-e.margin,right:Math.max(n.right,i.right),bottom:Math.max(n.bottom,i.bottom)+e.margin});t.scrollTo(r.scrollLeft,r.scrollTop)}}function ni(t){t.curOp={cm:t,viewChanged:!1,startHeight:t.doc.height,forceUpdate:!1,updateInput:null,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:!1,id:++rs},be(t.curOp)}function ii(t){var e=t.curOp;we(e,function(t){for(var e=0;e<t.ops.length;e++)t.ops[e].cm.curOp=null;ri(t)})}function ri(t){for(var e=t.ops,n=0;n<e.length;n++)oi(e[n]);for(var i=0;i<e.length;i++)ai(e[i]);for(var r=0;r<e.length;r++)si(e[r]);for(var o=0;o<e.length;o++)li(e[o]);for(var a=0;a<e.length;a++)ci(e[a])}function oi(t){var e=t.cm,n=e.display;wi(e),t.updateMaxLine&&bt(e),t.mustUpdate=t.viewChanged||t.forceUpdate||null!=t.scrollTop||t.scrollToPos&&(t.scrollToPos.from.line<n.viewFrom||t.scrollToPos.to.line>=n.viewTo)||n.maxLineChanged&&e.options.lineWrapping,t.update=t.mustUpdate&&new os(e,t.mustUpdate&&{top:t.scrollTop,ensure:t.scrollToPos},t.forceUpdate)}function ai(t){t.updatedDisplay=t.mustUpdate&&Si(t.cm,t.update)}function si(t){var e=t.cm,n=e.display;t.updatedDisplay&&jn(e),t.barMeasure=$n(e),n.maxLineChanged&&!e.options.lineWrapping&&(t.adjustWidthTo=Xe(e,n.maxLine,n.maxLine.text.length).left+3,e.display.sizerWidth=t.adjustWidthTo,t.barMeasure.scrollWidth=Math.max(n.scroller.clientWidth,n.sizer.offsetLeft+t.adjustWidthTo+qe(e)+e.display.barWidth),t.maxScrollLeft=Math.max(0,n.sizer.offsetLeft+t.adjustWidthTo-Ge(e))),(t.updatedDisplay||t.selectionChanged)&&(t.preparedSelection=n.input.prepareSelection(t.focus))}function li(t){var e=t.cm;null!=t.adjustWidthTo&&(e.display.sizer.style.minWidth=t.adjustWidthTo+"px",t.maxScrollLeft<e.doc.scrollLeft&&zn(e,Math.min(e.display.scroller.scrollLeft,t.maxScrollLeft),!0),e.display.maxLineChanged=!1);var n=t.focus&&t.focus==a()&&(!document.hasFocus||document.hasFocus());t.preparedSelection&&e.display.input.showSelection(t.preparedSelection,n),(t.updatedDisplay||t.startHeight!=e.doc.height)&&Wn(e,t.barMeasure),t.updatedDisplay&&Mi(e,t.barMeasure),t.selectionChanged&&En(e),e.state.focused&&t.updateInput&&e.display.input.reset(t.typing),n&&Pn(t.cm)}function ci(t){var e=t.cm,n=e.display,i=e.doc;if(t.updatedDisplay&&Ci(e,t.update),null==n.wheelStartX||null==t.scrollTop&&null==t.scrollLeft&&!t.scrollToPos||(n.wheelStartX=n.wheelStartY=null),null==t.scrollTop||n.scroller.scrollTop==t.scrollTop&&!t.forceScroll||(i.scrollTop=Math.max(0,Math.min(n.scroller.scrollHeight-n.scroller.clientHeight,t.scrollTop)),n.scrollbars.setScrollTop(i.scrollTop),n.scroller.scrollTop=i.scrollTop),null==t.scrollLeft||n.scroller.scrollLeft==t.scrollLeft&&!t.forceScroll||(i.scrollLeft=Math.max(0,Math.min(n.scroller.scrollWidth-n.scroller.clientWidth,t.scrollLeft)),n.scrollbars.setScrollLeft(i.scrollLeft),n.scroller.scrollLeft=i.scrollLeft,Dn(e)),t.scrollToPos){var r=Qn(e,q(i,t.scrollToPos.from),q(i,t.scrollToPos.to),t.scrollToPos.margin);Yn(e,r)}var o=t.maybeHiddenMarkers,a=t.maybeUnhiddenMarkers;if(o)for(var s=0;s<o.length;++s)o[s].lines.length||Et(o[s],"hide");if(a)for(var l=0;l<a.length;++l)a[l].lines.length&&Et(a[l],"unhide");n.wrapper.offsetHeight&&(i.scrollTop=e.display.scroller.scrollTop),t.changeObjs&&Et(e,"changes",e,t.changeObjs),t.update&&t.update.finish()}function ui(t,e){if(t.curOp)return e();ni(t);try{return e()}finally{ii(t)}}function hi(t,e){return function(){if(t.curOp)return e.apply(t,arguments);ni(t);try{return e.apply(t,arguments)}finally{ii(t)}}}function di(t){return function(){if(this.curOp)return t.apply(this,arguments);ni(this);try{return t.apply(this,arguments)}finally{ii(this)}}}function fi(t){return function(){var e=this.cm;if(!e||e.curOp)return t.apply(this,arguments);ni(e);try{return t.apply(this,arguments)}finally{ii(e)}}}function pi(t,e,n,i){null==e&&(e=t.doc.first),null==n&&(n=t.doc.first+t.doc.size),i||(i=0);var r=t.display;if(i&&n<r.viewTo&&(null==r.updateLineNumbers||r.updateLineNumbers>e)&&(r.updateLineNumbers=e),t.curOp.viewChanged=!0,e>=r.viewTo)Na&&pt(t.doc,e)<r.viewTo&&mi(t);else if(n<=r.viewFrom)Na&&gt(t.doc,n+i)>r.viewFrom?mi(t):(r.viewFrom+=i,r.viewTo+=i);else if(e<=r.viewFrom&&n>=r.viewTo)mi(t);else if(e<=r.viewFrom){var o=vi(t,n,n+i,1);o?(r.view=r.view.slice(o.index),r.viewFrom=o.lineN,r.viewTo+=i):mi(t)}else if(n>=r.viewTo){var a=vi(t,e,e,-1);a?(r.view=r.view.slice(0,a.index),r.viewTo=a.lineN):mi(t)}else{var s=vi(t,e,e,-1),l=vi(t,n,n+i,1);s&&l?(r.view=r.view.slice(0,s.index).concat(xe(t,s.lineN,l.lineN)).concat(r.view.slice(l.index)),r.viewTo+=i):mi(t)}var c=r.externalMeasured;c&&(n<c.lineN?c.lineN+=i:e<c.lineN+c.size&&(r.externalMeasured=null))}function gi(t,e,n){t.curOp.viewChanged=!0;var i=t.display,r=t.display.externalMeasured;if(r&&e>=r.lineN&&e<r.lineN+r.size&&(i.externalMeasured=null),!(e<i.viewFrom||e>=i.viewTo)){var o=i.view[Tn(t,e)];if(null!=o.node){var a=o.changes||(o.changes=[]);d(a,n)==-1&&a.push(n)}}}function mi(t){t.display.viewFrom=t.display.viewTo=t.doc.first,t.display.view=[],t.display.viewOffset=0}function vi(t,e,n,i){var r,o=Tn(t,e),a=t.display.view;if(!Na||n==t.doc.first+t.doc.size)return{index:o,lineN:n};for(var s=t.display.viewFrom,l=0;l<o;l++)s+=a[l].size;if(s!=e){if(i>0){if(o==a.length-1)return null;r=s+a[o].size-e,o++}else r=s-e;e+=r,n+=r}for(;pt(t.doc,n)!=n;){if(o==(i<0?0:a.length-1))return null;n+=i*a[o-(i<0?1:0)].size,o+=i}return{index:o,lineN:n}}function yi(t,e,n){var i=t.display,r=i.view;0==r.length||e>=i.viewTo||n<=i.viewFrom?(i.view=xe(t,e,n),i.viewFrom=e):(i.viewFrom>e?i.view=xe(t,e,i.viewFrom).concat(i.view):i.viewFrom<e&&(i.view=i.view.slice(Tn(t,e))),i.viewFrom=e,i.viewTo<n?i.view=i.view.concat(xe(t,i.viewTo,n)):i.viewTo>n&&(i.view=i.view.slice(0,Tn(t,n)))),i.viewTo=n}function xi(t){for(var e=t.display.view,n=0,i=0;i<e.length;i++){var r=e[i];r.hidden||r.node&&!r.changes||++n}return n}function bi(t,e){t.doc.mode.startState&&t.doc.frontier<t.display.viewTo&&t.state.highlight.set(e,c(_i,t))}function _i(t){var e=t.doc;if(e.frontier<e.first&&(e.frontier=e.first),!(e.frontier>=t.display.viewTo)){var n=+new Date+t.options.workTime,i=Yt(e.mode,te(t,e.frontier)),r=[];e.iter(e.frontier,Math.min(e.first+e.size,t.display.viewTo+500),function(o){if(e.frontier>=t.display.viewFrom){var a=o.styles,s=o.text.length>t.options.maxHighlightLength,l=Kt(t,o,s?Yt(e.mode,i):i,!0);o.styles=l.styles;var c=o.styleClasses,u=l.classes;u?o.styleClasses=u:c&&(o.styleClasses=null);for(var h=!a||a.length!=o.styles.length||c!=u&&(!c||!u||c.bgClass!=u.bgClass||c.textClass!=u.textClass),d=0;!h&&d<a.length;++d)h=a[d]!=o.styles[d];h&&r.push(e.frontier),o.stateAfter=s?i:Yt(e.mode,i)}else o.text.length<=t.options.maxHighlightLength&&ee(t,o.text,i),o.stateAfter=e.frontier%5==0?Yt(e.mode,i):null;if(++e.frontier,+new Date>n)return bi(t,t.options.workDelay),!0}),r.length&&ui(t,function(){for(var e=0;e<r.length;e++)gi(t,r[e],"text")})}}function wi(t){var e=t.display;!e.scrollbarsClipped&&e.scroller.offsetWidth&&(e.nativeBarWidth=e.scroller.offsetWidth-e.scroller.clientWidth,e.heightForcer.style.height=qe(t)+"px",e.sizer.style.marginBottom=-e.nativeBarWidth+"px",e.sizer.style.borderRightWidth=qe(t)+"px",e.scrollbarsClipped=!0)}function Si(t,n){var i=t.display,r=t.doc;if(n.editorIsHidden)return mi(t),!1;if(!n.force&&n.visible.from>=i.viewFrom&&n.visible.to<=i.viewTo&&(null==i.updateLineNumbers||i.updateLineNumbers>=i.viewTo)&&i.renderedView==i.view&&0==xi(t))return!1;In(t)&&(mi(t),n.dims=bn(t));var o=r.first+r.size,s=Math.max(n.visible.from-t.options.viewportMargin,r.first),l=Math.min(o,n.visible.to+t.options.viewportMargin);i.viewFrom<s&&s-i.viewFrom<20&&(s=Math.max(r.first,i.viewFrom)),i.viewTo>l&&i.viewTo-l<20&&(l=Math.min(o,i.viewTo)),Na&&(s=pt(t.doc,s),l=gt(t.doc,l));var c=s!=i.viewFrom||l!=i.viewTo||i.lastWrapHeight!=n.wrapperHeight||i.lastWrapWidth!=n.wrapperWidth;yi(t,s,l),i.viewOffset=yt(A(t.doc,i.viewFrom)),t.display.mover.style.top=i.viewOffset+"px";var u=xi(t);if(!c&&0==u&&!n.force&&i.renderedView==i.view&&(null==i.updateLineNumbers||i.updateLineNumbers>=i.viewTo))return!1;var h=a();return u>4&&(i.lineDiv.style.display="none"),ki(t,i.updateLineNumbers,n.dims),u>4&&(i.lineDiv.style.display=""),i.renderedView=i.view,h&&a()!=h&&h.offsetHeight&&h.focus(),e(i.cursorDiv),e(i.selectionDiv),i.gutters.style.height=i.sizer.style.minHeight=0,c&&(i.lastWrapHeight=n.wrapperHeight,i.lastWrapWidth=n.wrapperWidth,bi(t,400)),i.updateLineNumbers=null,!0}function Ci(t,e){for(var n=e.viewport,i=!0;(i&&t.options.lineWrapping&&e.oldDisplayWidth!=Ge(t)||(n&&null!=n.top&&(n={top:Math.min(t.doc.height+Fe(t.display)-Be(t),n.top)}),e.visible=Vn(t.display,t.doc,n),!(e.visible.from>=t.display.viewFrom&&e.visible.to<=t.display.viewTo)))&&Si(t,e);i=!1){jn(t);var r=$n(t);kn(t),Wn(t,r),Mi(t,r)}e.signal(t,"update",t),t.display.viewFrom==t.display.reportedViewFrom&&t.display.viewTo==t.display.reportedViewTo||(e.signal(t,"viewportChange",t,t.display.viewFrom,t.display.viewTo),t.display.reportedViewFrom=t.display.viewFrom,t.display.reportedViewTo=t.display.viewTo)}function Ti(t,e){var n=new os(t,e);if(Si(t,n)){jn(t),Ci(t,n);var i=$n(t);kn(t),Wn(t,i),Mi(t,i),n.finish()}}function ki(t,n,i){function r(e){var n=e.nextSibling;return ea&&ha&&t.display.currentWheelTarget==e?e.style.display="none":e.parentNode.removeChild(e),n}for(var o=t.display,a=t.options.lineNumbers,s=o.lineDiv,l=s.firstChild,c=o.view,u=o.viewFrom,h=0;h<c.length;h++){var f=c[h];if(f.hidden);else if(f.node&&f.node.parentNode==s){for(;l!=f.node;)l=r(l);var p=a&&null!=n&&n<=u&&f.lineNumber;f.changes&&(d(f.changes,"gutter")>-1&&(p=!1),Te(t,f,u,i)),p&&(e(f.lineNumber),f.lineNumber.appendChild(document.createTextNode(R(t.options,u)))),l=f.node.nextSibling}else{var g=Oe(t,f,u,i);s.insertBefore(g,l)}u+=f.size}for(;l;)l=r(l)}function Ai(t){var e=t.display.gutters.offsetWidth;t.display.sizer.style.marginLeft=e+"px"}function Mi(t,e){t.display.sizer.style.minHeight=e.docHeight+"px",t.display.heightForcer.style.top=e.docHeight+"px",t.display.gutters.style.height=e.docHeight+t.display.barHeight+qe(t)+"px"}function Li(t){var n=t.display.gutters,r=t.options.gutters;e(n);for(var o=0;o<r.length;++o){var a=r[o],s=n.appendChild(i("div",null,"CodeMirror-gutter "+a));"CodeMirror-linenumbers"==a&&(t.display.lineGutter=s,s.style.width=(t.display.lineNumWidth||1)+"px")}n.style.display=o?"":"none",Ai(t)}function Ei(t){var e=d(t.gutters,"CodeMirror-linenumbers");e==-1&&t.lineNumbers?t.gutters=t.gutters.concat(["CodeMirror-linenumbers"]):e>-1&&!t.lineNumbers&&(t.gutters=t.gutters.slice(0),t.gutters.splice(e,1))}function Pi(t,e){var n=t[e];t.sort(function(t,e){return I(t.from(),e.from())}),e=d(t,n);for(var i=1;i<t.length;i++){var r=t[i],o=t[i-1];if(I(o.to(),r.from())>=0){var a=F(o.from(),r.from()),s=V(o.to(),r.to()),l=o.empty()?r.from()==r.head:o.from()==o.head;i<=e&&--e,t.splice(--i,2,new ss(l?s:a,l?a:s))}}return new as(t,e)}function Ni(t,e){return new as([new ss(t,e||t)],0)}function Oi(t){return t.text?D(t.from.line+t.text.length-1,g(t.text).length+(1==t.text.length?t.from.ch:0)):t.to}function Ri(t,e){if(I(t,e.from)<0)return t;if(I(t,e.to)<=0)return Oi(e);var n=t.line+e.text.length-(e.to.line-e.from.line)-1,i=t.ch;return t.line==e.to.line&&(i+=Oi(e).ch-e.to.ch),D(n,i)}function Di(t,e){for(var n=[],i=0;i<t.sel.ranges.length;i++){var r=t.sel.ranges[i];n.push(new ss(Ri(r.anchor,e),Ri(r.head,e)))}return Pi(n,t.sel.primIndex)}function Ii(t,e,n){return t.line==e.line?D(n.line,t.ch-e.ch+n.ch):D(n.line+(t.line-e.line),t.ch)}function ji(t,e,n){for(var i=[],r=D(t.first,0),o=r,a=0;a<e.length;a++){var s=e[a],l=Ii(s.from,r,o),c=Ii(Oi(s),r,o);if(r=s.to,o=c,"around"==n){var u=t.sel.ranges[a],h=I(u.head,u.anchor)<0;i[a]=new ss(h?c:l,h?l:c)}else i[a]=new ss(l,l)}return new as(i,t.sel.primIndex)}function Hi(t){t.doc.mode=Ut(t.options,t.doc.modeOption),Vi(t)}function Vi(t){t.doc.iter(function(t){t.stateAfter&&(t.stateAfter=null),t.styles&&(t.styles=null)}),t.doc.frontier=t.doc.first,bi(t,100),t.state.modeGen++,t.curOp&&pi(t)}function Fi(t,e){return 0==e.from.ch&&0==e.to.ch&&""==g(e.text)&&(!t.cm||t.cm.options.wholeLineUpdateBefore)}function zi(t,e,n,i){
-function r(t){return n?n[t]:null}function o(t,n,r){le(t,n,r,i),Se(t,"change",t,e)}function a(t,e){for(var n=[],o=t;o<e;++o)n.push(new Wa(c[o],r(o),i));return n}var s=e.from,l=e.to,c=e.text,u=A(t,s.line),h=A(t,l.line),d=g(c),f=r(c.length-1),p=l.line-s.line;if(e.full)t.insert(0,a(0,c.length)),t.remove(c.length,t.size-c.length);else if(Fi(t,e)){var m=a(0,c.length-1);o(h,h.text,f),p&&t.remove(s.line,p),m.length&&t.insert(s.line,m)}else if(u==h)if(1==c.length)o(u,u.text.slice(0,s.ch)+d+u.text.slice(l.ch),f);else{var v=a(1,c.length-1);v.push(new Wa(d+u.text.slice(l.ch),f,i)),o(u,u.text.slice(0,s.ch)+c[0],r(0)),t.insert(s.line+1,v)}else if(1==c.length)o(u,u.text.slice(0,s.ch)+c[0]+h.text.slice(l.ch),r(0)),t.remove(s.line+1,p);else{o(u,u.text.slice(0,s.ch)+c[0],r(0)),o(h,d+h.text.slice(l.ch),f);var y=a(1,c.length-1);p>1&&t.remove(s.line+1,p-1),t.insert(s.line+1,y)}Se(t,"change",t,e)}function qi(t,e,n){function i(t,r,o){if(t.linked)for(var a=0;a<t.linked.length;++a){var s=t.linked[a];if(s.doc!=r){var l=o&&s.sharedHist;n&&!l||(e(s.doc,l),i(s.doc,t,l))}}}i(t,null,!0)}function Gi(t,e){if(e.cm)throw new Error("This document is already in use.");t.doc=e,e.cm=t,Sn(t),Hi(t),Bi(t),t.options.lineWrapping||bt(t),t.options.mode=e.modeOption,pi(t)}function Bi(t){("rtl"==t.doc.direction?s:ya)(t.display.lineDiv,"CodeMirror-rtl")}function $i(t){ui(t,function(){Bi(t),pi(t)})}function Wi(t){this.done=[],this.undone=[],this.undoDepth=1/0,this.lastModTime=this.lastSelTime=0,this.lastOp=this.lastSelOp=null,this.lastOrigin=this.lastSelOrigin=null,this.generation=this.maxGeneration=t||1}function Ui(t,e){var n={from:H(e.from),to:Oi(e),text:M(t,e.from,e.to)};return tr(t,n,e.from.line,e.to.line+1),qi(t,function(t){return tr(t,n,e.from.line,e.to.line+1)},!0),n}function Xi(t){for(;t.length;){var e=g(t);if(!e.ranges)break;t.pop()}}function Yi(t,e){return e?(Xi(t.done),g(t.done)):t.done.length&&!g(t.done).ranges?g(t.done):t.done.length>1&&!t.done[t.done.length-2].ranges?(t.done.pop(),g(t.done)):void 0}function Qi(t,e,n,i){var r=t.history;r.undone.length=0;var o,a,s=+new Date;if((r.lastOp==i||r.lastOrigin==e.origin&&e.origin&&("+"==e.origin.charAt(0)&&t.cm&&r.lastModTime>s-t.cm.options.historyEventDelay||"*"==e.origin.charAt(0)))&&(o=Yi(r,r.lastOp==i)))a=g(o.changes),0==I(e.from,e.to)&&0==I(e.from,a.to)?a.to=Oi(e):o.changes.push(Ui(t,e));else{var l=g(r.done);for(l&&l.ranges||Ji(t.sel,r.done),o={changes:[Ui(t,e)],generation:r.generation},r.done.push(o);r.done.length>r.undoDepth;)r.done.shift(),r.done[0].ranges||r.done.shift()}r.done.push(n),r.generation=++r.maxGeneration,r.lastModTime=r.lastSelTime=s,r.lastOp=r.lastSelOp=i,r.lastOrigin=r.lastSelOrigin=e.origin,a||Et(t,"historyAdded")}function Zi(t,e,n,i){var r=e.charAt(0);return"*"==r||"+"==r&&n.ranges.length==i.ranges.length&&n.somethingSelected()==i.somethingSelected()&&new Date-t.history.lastSelTime<=(t.cm?t.cm.options.historyEventDelay:500)}function Ki(t,e,n,i){var r=t.history,o=i&&i.origin;n==r.lastSelOp||o&&r.lastSelOrigin==o&&(r.lastModTime==r.lastSelTime&&r.lastOrigin==o||Zi(t,o,g(r.done),e))?r.done[r.done.length-1]=e:Ji(e,r.done),r.lastSelTime=+new Date,r.lastSelOrigin=o,r.lastSelOp=n,i&&i.clearRedo!==!1&&Xi(r.undone)}function Ji(t,e){var n=g(e);n&&n.ranges&&n.equals(t)||e.push(t)}function tr(t,e,n,i){var r=e["spans_"+t.id],o=0;t.iter(Math.max(t.first,n),Math.min(t.first+t.size,i),function(n){n.markedSpans&&((r||(r=e["spans_"+t.id]={}))[o]=n.markedSpans),++o})}function er(t){if(!t)return null;for(var e,n=0;n<t.length;++n)t[n].marker.explicitlyCleared?e||(e=t.slice(0,n)):e&&e.push(t[n]);return e?e.length?e:null:t}function nr(t,e){var n=e["spans_"+t.id];if(!n)return null;for(var i=[],r=0;r<e.text.length;++r)i.push(er(n[r]));return i}function ir(t,e){var n=nr(t,e),i=J(t,e);if(!n)return i;if(!i)return n;for(var r=0;r<n.length;++r){var o=n[r],a=i[r];if(o&&a)t:for(var s=0;s<a.length;++s){for(var l=a[s],c=0;c<o.length;++c)if(o[c].marker==l.marker)continue t;o.push(l)}else a&&(n[r]=a)}return n}function rr(t,e,n){for(var i=[],r=0;r<t.length;++r){var o=t[r];if(o.ranges)i.push(n?as.prototype.deepCopy.call(o):o);else{var a=o.changes,s=[];i.push({changes:s});for(var l=0;l<a.length;++l){var c=a[l],u=void 0;if(s.push({from:c.from,to:c.to,text:c.text}),e)for(var h in c)(u=h.match(/^spans_(\d+)$/))&&d(e,Number(u[1]))>-1&&(g(s)[h]=c[h],delete c[h])}}}return i}function or(t,e,n,i){if(t.cm&&t.cm.display.shift||t.extend){var r=e.anchor;if(i){var o=I(n,r)<0;o!=I(i,r)<0?(r=n,n=i):o!=I(n,i)<0&&(n=i)}return new ss(r,n)}return new ss(i||n,n)}function ar(t,e,n,i){dr(t,new as([or(t,t.sel.primary(),e,n)],0),i)}function sr(t,e,n){for(var i=[],r=0;r<t.sel.ranges.length;r++)i[r]=or(t,t.sel.ranges[r],e[r],null);var o=Pi(i,t.sel.primIndex);dr(t,o,n)}function lr(t,e,n,i){var r=t.sel.ranges.slice(0);r[e]=n,dr(t,Pi(r,t.sel.primIndex),i)}function cr(t,e,n,i){dr(t,Ni(e,n),i)}function ur(t,e,n){var i={ranges:e.ranges,update:function(e){var n=this;this.ranges=[];for(var i=0;i<e.length;i++)n.ranges[i]=new ss(q(t,e[i].anchor),q(t,e[i].head))},origin:n&&n.origin};return Et(t,"beforeSelectionChange",t,i),t.cm&&Et(t.cm,"beforeSelectionChange",t.cm,i),i.ranges!=e.ranges?Pi(i.ranges,i.ranges.length-1):e}function hr(t,e,n){var i=t.history.done,r=g(i);r&&r.ranges?(i[i.length-1]=e,fr(t,e,n)):dr(t,e,n)}function dr(t,e,n){fr(t,e,n),Ki(t,t.sel,t.cm?t.cm.curOp.id:NaN,n)}function fr(t,e,n){(Ot(t,"beforeSelectionChange")||t.cm&&Ot(t.cm,"beforeSelectionChange"))&&(e=ur(t,e,n));var i=n&&n.bias||(I(e.primary().head,t.sel.primary().head)<0?-1:1);pr(t,mr(t,e,i,!0)),n&&n.scroll===!1||!t.cm||ti(t.cm)}function pr(t,e){e.equals(t.sel)||(t.sel=e,t.cm&&(t.cm.curOp.updateInput=t.cm.curOp.selectionChanged=!0,Nt(t.cm)),Se(t,"cursorActivity",t))}function gr(t){pr(t,mr(t,t.sel,null,!1),Ta)}function mr(t,e,n,i){for(var r,o=0;o<e.ranges.length;o++){var a=e.ranges[o],s=e.ranges.length==t.sel.ranges.length&&t.sel.ranges[o],l=yr(t,a.anchor,s&&s.anchor,n,i),c=yr(t,a.head,s&&s.head,n,i);(r||l!=a.anchor||c!=a.head)&&(r||(r=e.ranges.slice(0,o)),r[o]=new ss(l,c))}return r?Pi(r,e.primIndex):e}function vr(t,e,n,i,r){var o=A(t,e.line);if(o.markedSpans)for(var a=0;a<o.markedSpans.length;++a){var s=o.markedSpans[a],l=s.marker;if((null==s.from||(l.inclusiveLeft?s.from<=e.ch:s.from<e.ch))&&(null==s.to||(l.inclusiveRight?s.to>=e.ch:s.to>e.ch))){if(r&&(Et(l,"beforeCursorEnter"),l.explicitlyCleared)){if(o.markedSpans){--a;continue}break}if(!l.atomic)continue;if(n){var c=l.find(i<0?1:-1),u=void 0;if((i<0?l.inclusiveRight:l.inclusiveLeft)&&(c=xr(t,c,-i,c&&c.line==e.line?o:null)),c&&c.line==e.line&&(u=I(c,n))&&(i<0?u<0:u>0))return vr(t,c,e,i,r)}var h=l.find(i<0?-1:1);return(i<0?l.inclusiveLeft:l.inclusiveRight)&&(h=xr(t,h,i,h.line==e.line?o:null)),h?vr(t,h,e,i,r):null}}return e}function yr(t,e,n,i,r){var o=i||1,a=vr(t,e,n,o,r)||!r&&vr(t,e,n,o,!0)||vr(t,e,n,-o,r)||!r&&vr(t,e,n,-o,!0);return a?a:(t.cantEdit=!0,D(t.first,0))}function xr(t,e,n,i){return n<0&&0==e.ch?e.line>t.first?q(t,D(e.line-1)):null:n>0&&e.ch==(i||A(t,e.line)).text.length?e.line<t.first+t.size-1?D(e.line+1,0):null:new D(e.line,e.ch+n)}function br(t){t.setSelection(D(t.firstLine(),0),D(t.lastLine()),Ta)}function _r(t,e,n){var i={canceled:!1,from:e.from,to:e.to,text:e.text,origin:e.origin,cancel:function(){return i.canceled=!0}};return n&&(i.update=function(e,n,r,o){e&&(i.from=q(t,e)),n&&(i.to=q(t,n)),r&&(i.text=r),void 0!==o&&(i.origin=o)}),Et(t,"beforeChange",t,i),t.cm&&Et(t.cm,"beforeChange",t.cm,i),i.canceled?null:{from:i.from,to:i.to,text:i.text,origin:i.origin}}function wr(t,e,n){if(t.cm){if(!t.cm.curOp)return hi(t.cm,wr)(t,e,n);if(t.cm.state.suppressEdits)return}if(!(Ot(t,"beforeChange")||t.cm&&Ot(t.cm,"beforeChange"))||(e=_r(t,e,!0))){var i=Pa&&!n&&et(t,e.from,e.to);if(i)for(var r=i.length-1;r>=0;--r)Sr(t,{from:i[r].from,to:i[r].to,text:r?[""]:e.text});else Sr(t,e)}}function Sr(t,e){if(1!=e.text.length||""!=e.text[0]||0!=I(e.from,e.to)){var n=Di(t,e);Qi(t,e,n,t.cm?t.cm.curOp.id:NaN),kr(t,e,n,J(t,e));var i=[];qi(t,function(t,n){n||d(i,t.history)!=-1||(Pr(t.history,e),i.push(t.history)),kr(t,e,null,J(t,e))})}}function Cr(t,e,n){if(!t.cm||!t.cm.state.suppressEdits||n){for(var i,r=t.history,o=t.sel,a="undo"==e?r.done:r.undone,s="undo"==e?r.undone:r.done,l=0;l<a.length&&(i=a[l],n?!i.ranges||i.equals(t.sel):i.ranges);l++);if(l!=a.length){for(r.lastOrigin=r.lastSelOrigin=null;i=a.pop(),i.ranges;){if(Ji(i,s),n&&!i.equals(t.sel))return void dr(t,i,{clearRedo:!1});o=i}var c=[];Ji(o,s),s.push({changes:c,generation:r.generation}),r.generation=i.generation||++r.maxGeneration;for(var u=Ot(t,"beforeChange")||t.cm&&Ot(t.cm,"beforeChange"),h=function(n){var r=i.changes[n];if(r.origin=e,u&&!_r(t,r,!1))return a.length=0,{};c.push(Ui(t,r));var o=n?Di(t,r):g(a);kr(t,r,o,ir(t,r)),!n&&t.cm&&t.cm.scrollIntoView({from:r.from,to:Oi(r)});var s=[];qi(t,function(t,e){e||d(s,t.history)!=-1||(Pr(t.history,r),s.push(t.history)),kr(t,r,null,ir(t,r))})},f=i.changes.length-1;f>=0;--f){var p=h(f);if(p)return p.v}}}}function Tr(t,e){if(0!=e&&(t.first+=e,t.sel=new as(m(t.sel.ranges,function(t){return new ss(D(t.anchor.line+e,t.anchor.ch),D(t.head.line+e,t.head.ch))}),t.sel.primIndex),t.cm)){pi(t.cm,t.first,t.first-e,e);for(var n=t.cm.display,i=n.viewFrom;i<n.viewTo;i++)gi(t.cm,i,"gutter")}}function kr(t,e,n,i){if(t.cm&&!t.cm.curOp)return hi(t.cm,kr)(t,e,n,i);if(e.to.line<t.first)return void Tr(t,e.text.length-1-(e.to.line-e.from.line));if(!(e.from.line>t.lastLine())){if(e.from.line<t.first){var r=e.text.length-1-(t.first-e.from.line);Tr(t,r),e={from:D(t.first,0),to:D(e.to.line+r,e.to.ch),text:[g(e.text)],origin:e.origin}}var o=t.lastLine();e.to.line>o&&(e={from:e.from,to:D(o,A(t,o).text.length),text:[e.text[0]],origin:e.origin}),e.removed=M(t,e.from,e.to),n||(n=Di(t,e)),t.cm?Ar(t.cm,e,i):zi(t,e,i),fr(t,n,Ta)}}function Ar(t,e,n){var i=t.doc,r=t.display,o=e.from,a=e.to,s=!1,l=o.line;t.options.lineWrapping||(l=P(ht(A(i,o.line))),i.iter(l,a.line+1,function(t){if(t==r.maxLine)return s=!0,!0})),i.sel.contains(e.from,e.to)>-1&&Nt(t),zi(i,e,n,wn(t)),t.options.lineWrapping||(i.iter(l,o.line+e.text.length,function(t){var e=xt(t);e>r.maxLineLength&&(r.maxLine=t,r.maxLineLength=e,r.maxLineChanged=!0,s=!1)}),s&&(t.curOp.updateMaxLine=!0)),i.frontier=Math.min(i.frontier,o.line),bi(t,400);var c=e.text.length-(a.line-o.line)-1;e.full?pi(t):o.line!=a.line||1!=e.text.length||Fi(t.doc,e)?pi(t,o.line,a.line+1,c):gi(t,o.line,"text");var u=Ot(t,"changes"),h=Ot(t,"change");if(h||u){var d={from:o,to:a,text:e.text,removed:e.removed,origin:e.origin};h&&Se(t,"change",t,d),u&&(t.curOp.changeObjs||(t.curOp.changeObjs=[])).push(d)}t.display.selForContextMenu=null}function Mr(t,e,n,i,r){if(i||(i=n),I(i,n)<0){var o=i;i=n,n=o}"string"==typeof e&&(e=t.splitLines(e)),wr(t,{from:n,to:i,text:e,origin:r})}function Lr(t,e,n,i){n<t.line?t.line+=i:e<t.line&&(t.line=e,t.ch=0)}function Er(t,e,n,i){for(var r=0;r<t.length;++r){var o=t[r],a=!0;if(o.ranges){o.copied||(o=t[r]=o.deepCopy(),o.copied=!0);for(var s=0;s<o.ranges.length;s++)Lr(o.ranges[s].anchor,e,n,i),Lr(o.ranges[s].head,e,n,i)}else{for(var l=0;l<o.changes.length;++l){var c=o.changes[l];if(n<c.from.line)c.from=D(c.from.line+i,c.from.ch),c.to=D(c.to.line+i,c.to.ch);else if(e<=c.to.line){a=!1;break}}a||(t.splice(0,r+1),r=0)}}}function Pr(t,e){var n=e.from.line,i=e.to.line,r=e.text.length-(i-n)-1;Er(t.done,n,i,r),Er(t.undone,n,i,r)}function Nr(t,e,n,i){var r=e,o=e;return"number"==typeof e?o=A(t,z(t,e)):r=P(e),null==r?null:(i(o,r)&&t.cm&&gi(t.cm,r,n),o)}function Or(t,e,n){yt(e)<(t.curOp&&t.curOp.scrollTop||t.doc.scrollTop)&&Jn(t,null,n)}function Rr(t,e,n,i){var r=new us(t,n,i),o=t.cm;return o&&r.noHScroll&&(o.display.alignWidgets=!0),Nr(t,e,"widget",function(e){var n=e.widgets||(e.widgets=[]);if(null==r.insertAt?n.push(r):n.splice(Math.min(n.length-1,Math.max(0,r.insertAt)),0,r),r.line=e,o&&!mt(t,e)){var i=yt(e)<t.scrollTop;E(e,e.height+je(r)),i&&Jn(o,null,r.height),o.curOp.forceUpdate=!0}return!0}),Se(o,"lineWidgetAdded",o,r,"number"==typeof e?e:P(e)),r}function Dr(t,e,n,i,o){if(i&&i.shared)return Ir(t,e,n,i,o);if(t.cm&&!t.cm.curOp)return hi(t.cm,Dr)(t,e,n,i,o);var a=new ds(t,o),s=I(e,n);if(i&&u(i,a,!1),s>0||0==s&&a.clearWhenEmpty!==!1)return a;if(a.replacedWith&&(a.collapsed=!0,a.widgetNode=r("span",[a.replacedWith],"CodeMirror-widget"),i.handleMouseEvents||a.widgetNode.setAttribute("cm-ignore-events","true"),i.insertLeft&&(a.widgetNode.insertLeft=!0)),a.collapsed){if(ut(t,e.line,e,n,a)||e.line!=n.line&&ut(t,n.line,e,n,a))throw new Error("Inserting collapsed marker partially overlapping an existing one");W()}a.addToHistory&&Qi(t,{from:e,to:n,origin:"markText"},t.sel,NaN);var l,c=e.line,h=t.cm;if(t.iter(c,n.line+1,function(t){h&&a.collapsed&&!h.options.lineWrapping&&ht(t)==h.display.maxLine&&(l=!0),a.collapsed&&c!=e.line&&E(t,0),Q(t,new U(a,c==e.line?e.ch:null,c==n.line?n.ch:null)),++c}),a.collapsed&&t.iter(e.line,n.line+1,function(e){mt(t,e)&&E(e,0)}),a.clearOnEnter&&Ia(a,"beforeCursorEnter",function(){return a.clear()}),a.readOnly&&($(),(t.history.done.length||t.history.undone.length)&&t.clearHistory()),a.collapsed&&(a.id=++hs,a.atomic=!0),h){if(l&&(h.curOp.updateMaxLine=!0),a.collapsed)pi(h,e.line,n.line+1);else if(a.className||a.title||a.startStyle||a.endStyle||a.css)for(var d=e.line;d<=n.line;d++)gi(h,d,"text");a.atomic&&gr(h.doc),Se(h,"markerAdded",h,a)}return a}function Ir(t,e,n,i,r){i=u(i),i.shared=!1;var o=[Dr(t,e,n,i,r)],a=o[0],s=i.widgetNode;return qi(t,function(t){s&&(i.widgetNode=s.cloneNode(!0)),o.push(Dr(t,q(t,e),q(t,n),i,r));for(var l=0;l<t.linked.length;++l)if(t.linked[l].isParent)return;a=g(o)}),new fs(o,a)}function jr(t){return t.findMarks(D(t.first,0),t.clipPos(D(t.lastLine())),function(t){return t.parent})}function Hr(t,e){for(var n=0;n<e.length;n++){var i=e[n],r=i.find(),o=t.clipPos(r.from),a=t.clipPos(r.to);if(I(o,a)){var s=Dr(t,o,a,i.primary,i.primary.type);i.markers.push(s),s.parent=i}}}function Vr(t){for(var e=function(e){var n=t[e],i=[n.primary.doc];qi(n.primary.doc,function(t){return i.push(t)});for(var r=0;r<n.markers.length;r++){var o=n.markers[r];d(i,o.doc)==-1&&(o.parent=null,n.markers.splice(r--,1))}},n=0;n<t.length;n++)e(n)}function Fr(t){var e=this;if(Gr(e),!Pt(e,t)&&!He(e.display,t)){Dt(t),Jo&&(ms=+new Date);var n=Cn(e,t,!0),i=t.dataTransfer.files;if(n&&!e.isReadOnly())if(i&&i.length&&window.FileReader&&window.File)for(var r=i.length,o=Array(r),a=0,s=function(t,i){if(!e.options.allowDropFileTypes||d(e.options.allowDropFileTypes,t.type)!=-1){var s=new FileReader;s.onload=hi(e,function(){var t=s.result;if(/[\x00-\x08\x0e-\x1f]{2}/.test(t)&&(t=""),o[i]=t,++a==r){n=q(e.doc,n);var l={from:n,to:n,text:e.doc.splitLines(o.join(e.doc.lineSeparator())),origin:"paste"};wr(e.doc,l),hr(e.doc,Ni(n,Oi(l)))}}),s.readAsText(t)}},l=0;l<r;++l)s(i[l],l);else{if(e.state.draggingText&&e.doc.sel.contains(n)>-1)return e.state.draggingText(t),void setTimeout(function(){return e.display.input.focus()},20);try{var c=t.dataTransfer.getData("Text");if(c){var u;if(e.state.draggingText&&!e.state.draggingText.copy&&(u=e.listSelections()),fr(e.doc,Ni(n,n)),u)for(var h=0;h<u.length;++h)Mr(e.doc,"",u[h].anchor,u[h].head,"drag");e.replaceSelection(c,"around","paste"),e.display.input.focus()}}catch(t){}}}}function zr(t,e){if(Jo&&(!t.state.draggingText||+new Date-ms<100))return void Ht(e);if(!Pt(t,e)&&!He(t.display,e)&&(e.dataTransfer.setData("Text",t.getSelection()),e.dataTransfer.effectAllowed="copyMove",e.dataTransfer.setDragImage&&!oa)){var n=i("img",null,null,"position: fixed; left: 0; top: 0;");n.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",ra&&(n.width=n.height=1,t.display.wrapper.appendChild(n),n._top=n.offsetTop),e.dataTransfer.setDragImage(n,0,0),ra&&n.parentNode.removeChild(n)}}function qr(t,e){var r=Cn(t,e);if(r){var o=document.createDocumentFragment();Mn(t,r,o),t.display.dragCursor||(t.display.dragCursor=i("div",null,"CodeMirror-cursors CodeMirror-dragcursors"),t.display.lineSpace.insertBefore(t.display.dragCursor,t.display.cursorDiv)),n(t.display.dragCursor,o)}}function Gr(t){t.display.dragCursor&&(t.display.lineSpace.removeChild(t.display.dragCursor),t.display.dragCursor=null)}function Br(t){if(document.body.getElementsByClassName)for(var e=document.body.getElementsByClassName("CodeMirror"),n=0;n<e.length;n++){var i=e[n].CodeMirror;i&&t(i)}}function $r(){vs||(Wr(),vs=!0)}function Wr(){var t;Ia(window,"resize",function(){null==t&&(t=setTimeout(function(){t=null,Br(Ur)},100))}),Ia(window,"blur",function(){return Br(Rn)})}function Ur(t){var e=t.display;e.lastWrapHeight==e.wrapper.clientHeight&&e.lastWrapWidth==e.wrapper.clientWidth||(e.cachedCharWidth=e.cachedTextHeight=e.cachedPaddingH=null,e.scrollbarsClipped=!1,t.setSize())}function Xr(t){var e=t.split(/-(?!$)/);t=e[e.length-1];for(var n,i,r,o,a=0;a<e.length-1;a++){var s=e[a];if(/^(cmd|meta|m)$/i.test(s))o=!0;else if(/^a(lt)?$/i.test(s))n=!0;else if(/^(c|ctrl|control)$/i.test(s))i=!0;else{if(!/^s(hift)?$/i.test(s))throw new Error("Unrecognized modifier name: "+s);r=!0}}return n&&(t="Alt-"+t),i&&(t="Ctrl-"+t),o&&(t="Cmd-"+t),r&&(t="Shift-"+t),t}function Yr(t){var e={};for(var n in t)if(t.hasOwnProperty(n)){var i=t[n];if(/^(name|fallthrough|(de|at)tach)$/.test(n))continue;if("..."==i){delete t[n];continue}for(var r=m(n.split(" "),Xr),o=0;o<r.length;o++){var a=void 0,s=void 0;o==r.length-1?(s=r.join(" "),a=i):(s=r.slice(0,o+1).join(" "),a="...");var l=e[s];if(l){if(l!=a)throw new Error("Inconsistent bindings for "+s)}else e[s]=a}delete t[n]}for(var c in e)t[c]=e[c];return t}function Qr(t,e,n,i){e=Jr(e);var r=e.call?e.call(t,i):e[t];if(r===!1)return"nothing";if("..."===r)return"multi";if(null!=r&&n(r))return"handled";if(e.fallthrough){if("[object Array]"!=Object.prototype.toString.call(e.fallthrough))return Qr(t,e.fallthrough,n,i);for(var o=0;o<e.fallthrough.length;o++){var a=Qr(t,e.fallthrough[o],n,i);if(a)return a}}}function Zr(t){var e="string"==typeof t?t:ys[t.keyCode];return"Ctrl"==e||"Alt"==e||"Shift"==e||"Mod"==e}function Kr(t,e){if(ra&&34==t.keyCode&&t.char)return!1;var n=ys[t.keyCode],i=n;return null!=i&&!t.altGraphKey&&(t.altKey&&"Alt"!=n&&(i="Alt-"+i),(ma?t.metaKey:t.ctrlKey)&&"Ctrl"!=n&&(i="Ctrl-"+i),(ma?t.ctrlKey:t.metaKey)&&"Cmd"!=n&&(i="Cmd-"+i),!e&&t.shiftKey&&"Shift"!=n&&(i="Shift-"+i),i)}function Jr(t){return"string"==typeof t?ws[t]:t}function to(t,e){for(var n=t.doc.sel.ranges,i=[],r=0;r<n.length;r++){for(var o=e(n[r]);i.length&&I(o.from,g(i).to)<=0;){var a=i.pop();if(I(a.from,o.from)<0){o.from=a.from;break}}i.push(o)}ui(t,function(){for(var e=i.length-1;e>=0;e--)Mr(t.doc,"",i[e].from,i[e].to,"+delete");ti(t)})}function eo(t,e){var n=A(t.doc,e),i=ht(n);return i!=n&&(e=P(i)),kt(!0,t,i,e,1)}function no(t,e){var n=A(t.doc,e),i=dt(n);return i!=n&&(e=P(i)),kt(!0,t,n,e,-1)}function io(t,e){var n=eo(t,e.line),i=A(t.doc,n.line),r=St(i,t.doc.direction);if(!r||0==r[0].level){var o=Math.max(0,i.text.search(/\S/)),a=e.line==n.line&&e.ch<=o&&e.ch;return D(n.line,a?0:o,n.sticky)}return n}function ro(t,e,n){if("string"==typeof e&&(e=Ts[e],!e))return!1;t.display.input.ensurePolled();var i=t.display.shift,r=!1;try{t.isReadOnly()&&(t.state.suppressEdits=!0),n&&(t.display.shift=!1),r=e(t)!=Ca}finally{t.display.shift=i,t.state.suppressEdits=!1}return r}function oo(t,e,n){for(var i=0;i<t.state.keyMaps.length;i++){var r=Qr(e,t.state.keyMaps[i],n,t);if(r)return r}return t.options.extraKeys&&Qr(e,t.options.extraKeys,n,t)||Qr(e,t.options.keyMap,n,t)}function ao(t,e,n,i){var r=t.state.keySeq;if(r){if(Zr(e))return"handled";ks.set(50,function(){t.state.keySeq==r&&(t.state.keySeq=null,t.display.input.reset())}),e=r+" "+e}var o=oo(t,e,i);return"multi"==o&&(t.state.keySeq=e),"handled"==o&&Se(t,"keyHandled",t,e,n),"handled"!=o&&"multi"!=o||(Dt(n),En(t)),r&&!o&&/\'$/.test(e)?(Dt(n),!0):!!o}function so(t,e){var n=Kr(e,!0);return!!n&&(e.shiftKey&&!t.state.keySeq?ao(t,"Shift-"+n,e,function(e){return ro(t,e,!0)})||ao(t,n,e,function(e){if("string"==typeof e?/^go[A-Z]/.test(e):e.motion)return ro(t,e)}):ao(t,n,e,function(e){return ro(t,e)}))}function lo(t,e,n){return ao(t,"'"+n+"'",e,function(e){return ro(t,e,!0)})}function co(t){var e=this;if(e.curOp.focus=a(),!Pt(e,t)){Jo&&ta<11&&27==t.keyCode&&(t.returnValue=!1);var n=t.keyCode;e.display.shift=16==n||t.shiftKey;var i=so(e,t);ra&&(As=i?n:null,!i&&88==n&&!Fa&&(ha?t.metaKey:t.ctrlKey)&&e.replaceSelection("",null,"cut")),18!=n||/\bCodeMirror-crosshair\b/.test(e.display.lineDiv.className)||uo(e)}}function uo(t){function e(t){18!=t.keyCode&&t.altKey||(ya(n,"CodeMirror-crosshair"),Lt(document,"keyup",e),Lt(document,"mouseover",e))}var n=t.display.lineDiv;s(n,"CodeMirror-crosshair"),Ia(document,"keyup",e),Ia(document,"mouseover",e)}function ho(t){16==t.keyCode&&(this.doc.sel.shift=!1),Pt(this,t)}function fo(t){var e=this;if(!(He(e.display,t)||Pt(e,t)||t.ctrlKey&&!t.altKey||ha&&t.metaKey)){var n=t.keyCode,i=t.charCode;if(ra&&n==As)return As=null,void Dt(t);if(!ra||t.which&&!(t.which<10)||!so(e,t)){var r=String.fromCharCode(null==i?n:i);"\b"!=r&&(lo(e,t,r)||e.display.input.onKeyPress(t))}}}function po(t){var e=this,n=e.display;if(!(Pt(e,t)||n.activeTouch&&n.input.supportsTouch())){if(n.input.ensurePolled(),n.shift=t.shiftKey,He(n,t))return void(ea||(n.scroller.draggable=!1,setTimeout(function(){return n.scroller.draggable=!0},100)));if(!xo(e,t)){var i=Cn(e,t);switch(window.focus(),Ft(t)){case 1:e.state.selectingText?e.state.selectingText(t):i?go(e,t,i):Vt(t)==n.scroller&&Dt(t);break;case 2:ea&&(e.state.lastMiddleDown=+new Date),i&&ar(e.doc,i),setTimeout(function(){return n.input.focus()},20),Dt(t);break;case 3:va?bo(e,t):Nn(e)}}}}function go(t,e,n){Jo?setTimeout(c(Pn,t),0):t.curOp.focus=a();var i,r=+new Date;Cs&&Cs.time>r-400&&0==I(Cs.pos,n)?i="triple":Ss&&Ss.time>r-400&&0==I(Ss.pos,n)?(i="double",Cs={time:r,pos:n}):(i="single",Ss={time:r,pos:n});var o,s=t.doc.sel,l=ha?e.metaKey:e.ctrlKey;t.options.dragDrop&&ja&&!t.isReadOnly()&&"single"==i&&(o=s.contains(n))>-1&&(I((o=s.ranges[o]).from(),n)<0||n.xRel>0)&&(I(o.to(),n)>0||n.xRel<0)?mo(t,e,n,l):vo(t,e,n,i,l)}function mo(t,e,n,i){var r=t.display,o=!1,a=hi(t,function(e){ea&&(r.scroller.draggable=!1),t.state.draggingText=!1,Lt(document,"mouseup",a),Lt(document,"mousemove",s),Lt(r.scroller,"dragstart",l),Lt(r.scroller,"drop",a),o||(Dt(e),i||ar(t.doc,n),ea||Jo&&9==ta?setTimeout(function(){document.body.focus(),r.input.focus()},20):r.input.focus())}),s=function(t){o=o||Math.abs(e.clientX-t.clientX)+Math.abs(e.clientY-t.clientY)>=10},l=function(){return o=!0};ea&&(r.scroller.draggable=!0),t.state.draggingText=a,a.copy=ha?e.altKey:e.ctrlKey,r.scroller.dragDrop&&r.scroller.dragDrop(),Ia(document,"mouseup",a),Ia(document,"mousemove",s),Ia(r.scroller,"dragstart",l),Ia(r.scroller,"drop",a),Nn(t),setTimeout(function(){return r.input.focus()},20)}function vo(t,e,n,i,r){function o(e){if(0!=I(x,e))if(x=e,"rect"==i){for(var r=[],o=t.options.tabSize,a=h(A(u,n.line).text,n.ch,o),s=h(A(u,e.line).text,e.ch,o),l=Math.min(a,s),c=Math.max(a,s),m=Math.min(n.line,e.line),v=Math.min(t.lastLine(),Math.max(n.line,e.line));m<=v;m++){var y=A(u,m).text,b=f(y,l,o);l==c?r.push(new ss(D(m,b),D(m,b))):y.length>b&&r.push(new ss(D(m,b),D(m,f(y,c,o))))}r.length||r.push(new ss(n,n)),dr(u,Pi(g.ranges.slice(0,p).concat(r),p),{origin:"*mouse",scroll:!1}),t.scrollIntoView(e)}else{var _=d,w=_.anchor,S=e;if("single"!=i){var C;C="double"==i?t.findWordAt(e):new ss(D(e.line,0),q(u,D(e.line+1,0))),I(C.anchor,w)>0?(S=C.head,w=F(_.from(),C.anchor)):(S=C.anchor,w=V(_.to(),C.head))}var T=g.ranges.slice(0);T[p]=new ss(q(u,w),S),dr(u,Pi(T,p),ka)}}function s(e){var n=++_,r=Cn(t,e,!0,"rect"==i);if(r)if(0!=I(r,x)){t.curOp.focus=a(),o(r);var l=Vn(c,u);(r.line>=l.to||r.line<l.from)&&setTimeout(hi(t,function(){_==n&&s(e)}),150)}else{var h=e.clientY<b.top?-20:e.clientY>b.bottom?20:0;h&&setTimeout(hi(t,function(){_==n&&(c.scroller.scrollTop+=h,s(e))}),50)}}function l(e){t.state.selectingText=!1,_=1/0,Dt(e),c.input.focus(),Lt(document,"mousemove",w),Lt(document,"mouseup",S),u.history.lastSelOrigin=null}var c=t.display,u=t.doc;Dt(e);var d,p,g=u.sel,m=g.ranges;if(r&&!e.shiftKey?(p=u.sel.contains(n),d=p>-1?m[p]:new ss(n,n)):(d=u.sel.primary(),p=u.sel.primIndex),da?e.shiftKey&&e.metaKey:e.altKey)i="rect",r||(d=new ss(n,n)),n=Cn(t,e,!0,!0),p=-1;else if("double"==i){var v=t.findWordAt(n);d=t.display.shift||u.extend?or(u,d,v.anchor,v.head):v}else if("triple"==i){var y=new ss(D(n.line,0),q(u,D(n.line+1,0)));d=t.display.shift||u.extend?or(u,d,y.anchor,y.head):y}else d=or(u,d,n);r?p==-1?(p=m.length,dr(u,Pi(m.concat([d]),p),{scroll:!1,origin:"*mouse"})):m.length>1&&m[p].empty()&&"single"==i&&!e.shiftKey?(dr(u,Pi(m.slice(0,p).concat(m.slice(p+1)),0),{scroll:!1,origin:"*mouse"}),g=u.sel):lr(u,p,d,ka):(p=0,dr(u,new as([d],0),ka),g=u.sel);var x=n,b=c.wrapper.getBoundingClientRect(),_=0,w=hi(t,function(t){Ft(t)?s(t):l(t)}),S=hi(t,l);t.state.selectingText=S,Ia(document,"mousemove",w),Ia(document,"mouseup",S)}function yo(t,e,n,i){var r,o;try{r=e.clientX,o=e.clientY}catch(t){return!1}if(r>=Math.floor(t.display.gutters.getBoundingClientRect().right))return!1;i&&Dt(e);var a=t.display,s=a.lineDiv.getBoundingClientRect();if(o>s.bottom||!Ot(t,n))return jt(e);o-=s.top-a.viewOffset;for(var l=0;l<t.options.gutters.length;++l){var c=a.gutters.childNodes[l];if(c&&c.getBoundingClientRect().right>=r){var u=N(t.doc,o),h=t.options.gutters[l];return Et(t,n,t,u,h,e),jt(e)}}}function xo(t,e){return yo(t,e,"gutterClick",!0)}function bo(t,e){He(t.display,e)||_o(t,e)||Pt(t,e,"contextmenu")||t.display.input.onContextMenu(e)}function _o(t,e){return!!Ot(t,"gutterContextMenu")&&yo(t,e,"gutterContextMenu",!1)}function wo(t){t.display.wrapper.className=t.display.wrapper.className.replace(/\s*cm-s-\S+/g,"")+t.options.theme.replace(/(^|\s)\s*/g," cm-s-"),on(t)}function So(t){function e(e,i,r,o){t.defaults[e]=i,r&&(n[e]=o?function(t,e,n){n!=Ms&&r(t,e,n)}:r)}var n=t.optionHandlers;t.defineOption=e,t.Init=Ms,e("value","",function(t,e){return t.setValue(e)},!0),e("mode",null,function(t,e){t.doc.modeOption=e,Hi(t)},!0),e("indentUnit",2,Hi,!0),e("indentWithTabs",!1),e("smartIndent",!0),e("tabSize",4,function(t){Vi(t),on(t),pi(t)},!0),e("lineSeparator",null,function(t,e){if(t.doc.lineSep=e,e){var n=[],i=t.doc.first;t.doc.iter(function(t){for(var r=0;;){var o=t.text.indexOf(e,r);if(o==-1)break;r=o+e.length,n.push(D(i,o))}i++});for(var r=n.length-1;r>=0;r--)Mr(t.doc,e,n[r],D(n[r].line,n[r].ch+e.length))}}),e("specialChars",/[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b-\u200f\u2028\u2029\ufeff]/g,function(t,e,n){t.state.specialChars=new RegExp(e.source+(e.test("\t")?"":"|\t"),"g"),n!=Ms&&t.refresh()}),e("specialCharPlaceholder",de,function(t){return t.refresh()},!0),e("electricChars",!0),e("inputStyle",ua?"contenteditable":"textarea",function(){throw new Error("inputStyle can not (yet) be changed in a running editor")},!0),e("spellcheck",!1,function(t,e){return t.getInputField().spellcheck=e},!0),e("rtlMoveVisually",!fa),e("wholeLineUpdateBefore",!0),e("theme","default",function(t){wo(t),Co(t)},!0),e("keyMap","default",function(t,e,n){var i=Jr(e),r=n!=Ms&&Jr(n);r&&r.detach&&r.detach(t,i),i.attach&&i.attach(t,r||null)}),e("extraKeys",null),e("lineWrapping",!1,ko,!0),e("gutters",[],function(t){Ei(t.options),Co(t)},!0),e("fixedGutter",!0,function(t,e){t.display.gutters.style.left=e?_n(t.display)+"px":"0",t.refresh()},!0),e("coverGutterNextToScrollbar",!1,function(t){return Wn(t)},!0),e("scrollbarStyle","native",function(t){Xn(t),Wn(t),t.display.scrollbars.setScrollTop(t.doc.scrollTop),t.display.scrollbars.setScrollLeft(t.doc.scrollLeft)},!0),e("lineNumbers",!1,function(t){Ei(t.options),Co(t)},!0),e("firstLineNumber",1,Co,!0),e("lineNumberFormatter",function(t){return t},Co,!0),e("showCursorWhenSelecting",!1,kn,!0),e("resetSelectionOnContextMenu",!0),e("lineWiseCopyCut",!0),e("readOnly",!1,function(t,e){"nocursor"==e?(Rn(t),t.display.input.blur(),t.display.disabled=!0):t.display.disabled=!1,t.display.input.readOnlyChanged(e)}),e("disableInput",!1,function(t,e){e||t.display.input.reset()},!0),e("dragDrop",!0,To),e("allowDropFileTypes",null),e("cursorBlinkRate",530),e("cursorScrollMargin",0),e("cursorHeight",1,kn,!0),e("singleCursorHeightPerLine",!0,kn,!0),e("workTime",100),e("workDelay",100),e("flattenSpans",!0,Vi,!0),e("addModeClass",!1,Vi,!0),e("pollInterval",100),e("undoDepth",200,function(t,e){return t.doc.history.undoDepth=e}),e("historyEventDelay",1250),e("viewportMargin",10,function(t){return t.refresh()},!0),e("maxHighlightLength",1e4,Vi,!0),e("moveInputWithCursor",!0,function(t,e){e||t.display.input.resetPosition()}),e("tabindex",null,function(t,e){return t.display.input.getField().tabIndex=e||""}),e("autofocus",null),e("direction","ltr",function(t,e){return t.doc.setDirection(e)},!0)}function Co(t){Li(t),pi(t),Dn(t)}function To(t,e,n){var i=n&&n!=Ms;if(!e!=!i){var r=t.display.dragFunctions,o=e?Ia:Lt;o(t.display.scroller,"dragstart",r.start),o(t.display.scroller,"dragenter",r.enter),o(t.display.scroller,"dragover",r.over),o(t.display.scroller,"dragleave",r.leave),o(t.display.scroller,"drop",r.drop)}}function ko(t){t.options.lineWrapping?(s(t.display.wrapper,"CodeMirror-wrap"),t.display.sizer.style.minWidth="",t.display.sizerWidth=null):(ya(t.display.wrapper,"CodeMirror-wrap"),bt(t)),Sn(t),pi(t),on(t),setTimeout(function(){return Wn(t)},100)}function Ao(t,e){var n=this;if(!(this instanceof Ao))return new Ao(t,e);this.options=e=e?u(e):{},u(Ls,e,!1),Ei(e);var i=e.value;"string"==typeof i&&(i=new gs(i,e.mode,null,e.lineSeparator,e.direction)),this.doc=i;var r=new Ao.inputStyles[e.inputStyle](this),o=this.display=new k(t,i,r);o.wrapper.CodeMirror=this,Li(this),wo(this),e.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap"),Xn(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,delayingBlurEvent:!1,focused:!1,suppressEdits:!1,pasteIncoming:!1,cutIncoming:!1,selectingText:!1,draggingText:!1,highlight:new ba,keySeq:null,specialChars:null},e.autofocus&&!ua&&o.input.focus(),Jo&&ta<11&&setTimeout(function(){return n.display.input.reset(!0)},20),Mo(this),$r(),ni(this),this.curOp.forceUpdate=!0,Gi(this,i),e.autofocus&&!ua||this.hasFocus()?setTimeout(c(On,this),20):Rn(this);for(var a in Es)Es.hasOwnProperty(a)&&Es[a](n,e[a],Ms);In(this),e.finishInit&&e.finishInit(this);for(var s=0;s<Ps.length;++s)Ps[s](n);ii(this),ea&&e.lineWrapping&&"optimizelegibility"==getComputedStyle(o.lineDiv).textRendering&&(o.lineDiv.style.textRendering="auto")}function Mo(t){function e(){r.activeTouch&&(o=setTimeout(function(){return r.activeTouch=null},1e3),a=r.activeTouch,a.end=+new Date)}function n(t){if(1!=t.touches.length)return!1;var e=t.touches[0];return e.radiusX<=1&&e.radiusY<=1}function i(t,e){if(null==e.left)return!0;var n=e.left-t.left,i=e.top-t.top;return n*n+i*i>400}var r=t.display;Ia(r.scroller,"mousedown",hi(t,po)),Jo&&ta<11?Ia(r.scroller,"dblclick",hi(t,function(e){if(!Pt(t,e)){var n=Cn(t,e);if(n&&!xo(t,e)&&!He(t.display,e)){Dt(e);var i=t.findWordAt(n);ar(t.doc,i.anchor,i.head)}}})):Ia(r.scroller,"dblclick",function(e){return Pt(t,e)||Dt(e)}),va||Ia(r.scroller,"contextmenu",function(e){return bo(t,e)});var o,a={end:0};Ia(r.scroller,"touchstart",function(e){if(!Pt(t,e)&&!n(e)){r.input.ensurePolled(),clearTimeout(o);var i=+new Date;r.activeTouch={start:i,moved:!1,prev:i-a.end<=300?a:null},1==e.touches.length&&(r.activeTouch.left=e.touches[0].pageX,r.activeTouch.top=e.touches[0].pageY)}}),Ia(r.scroller,"touchmove",function(){r.activeTouch&&(r.activeTouch.moved=!0)}),Ia(r.scroller,"touchend",function(n){var o=r.activeTouch;if(o&&!He(r,n)&&null!=o.left&&!o.moved&&new Date-o.start<300){var a,s=t.coordsChar(r.activeTouch,"page");a=!o.prev||i(o,o.prev)?new ss(s,s):!o.prev.prev||i(o,o.prev.prev)?t.findWordAt(s):new ss(D(s.line,0),q(t.doc,D(s.line+1,0))),t.setSelection(a.anchor,a.head),t.focus(),Dt(n)}e()}),Ia(r.scroller,"touchcancel",e),Ia(r.scroller,"scroll",function(){r.scroller.clientHeight&&(Fn(t,r.scroller.scrollTop),zn(t,r.scroller.scrollLeft,!0),Et(t,"scroll",t))}),Ia(r.scroller,"mousewheel",function(e){return Bn(t,e)}),Ia(r.scroller,"DOMMouseScroll",function(e){
-return Bn(t,e)}),Ia(r.wrapper,"scroll",function(){return r.wrapper.scrollTop=r.wrapper.scrollLeft=0}),r.dragFunctions={enter:function(e){Pt(t,e)||Ht(e)},over:function(e){Pt(t,e)||(qr(t,e),Ht(e))},start:function(e){return zr(t,e)},drop:hi(t,Fr),leave:function(e){Pt(t,e)||Gr(t)}};var s=r.input.getField();Ia(s,"keyup",function(e){return ho.call(t,e)}),Ia(s,"keydown",hi(t,co)),Ia(s,"keypress",hi(t,fo)),Ia(s,"focus",function(e){return On(t,e)}),Ia(s,"blur",function(e){return Rn(t,e)})}function Lo(t,e,n,i){var r,o=t.doc;null==n&&(n="add"),"smart"==n&&(o.mode.indent?r=te(t,e):n="prev");var a=t.options.tabSize,s=A(o,e),l=h(s.text,null,a);s.stateAfter&&(s.stateAfter=null);var c,u=s.text.match(/^\s*/)[0];if(i||/\S/.test(s.text)){if("smart"==n&&(c=o.mode.indent(r,s.text.slice(u.length),s.text),c==Ca||c>150)){if(!i)return;n="prev"}}else c=0,n="not";"prev"==n?c=e>o.first?h(A(o,e-1).text,null,a):0:"add"==n?c=l+t.options.indentUnit:"subtract"==n?c=l-t.options.indentUnit:"number"==typeof n&&(c=l+n),c=Math.max(0,c);var d="",f=0;if(t.options.indentWithTabs)for(var g=Math.floor(c/a);g;--g)f+=a,d+="\t";if(f<c&&(d+=p(c-f)),d!=u)return Mr(o,d,D(e,0),D(e,u.length),"+input"),s.stateAfter=null,!0;for(var m=0;m<o.sel.ranges.length;m++){var v=o.sel.ranges[m];if(v.head.line==e&&v.head.ch<u.length){var y=D(e,u.length);lr(o,m,new ss(y,y));break}}}function Eo(t){Ns=t}function Po(t,e,n,i,r){var o=t.doc;t.display.shift=!1,i||(i=o.sel);var a=t.state.pasteIncoming||"paste"==r,s=Ha(e),l=null;if(a&&i.ranges.length>1)if(Ns&&Ns.text.join("\n")==e){if(i.ranges.length%Ns.text.length==0){l=[];for(var c=0;c<Ns.text.length;c++)l.push(o.splitLines(Ns.text[c]))}}else s.length==i.ranges.length&&(l=m(s,function(t){return[t]}));for(var u,h=i.ranges.length-1;h>=0;h--){var d=i.ranges[h],f=d.from(),p=d.to();d.empty()&&(n&&n>0?f=D(f.line,f.ch-n):t.state.overwrite&&!a?p=D(p.line,Math.min(A(o,p.line).text.length,p.ch+g(s).length)):Ns&&Ns.lineWise&&Ns.text.join("\n")==e&&(f=p=D(f.line,0))),u=t.curOp.updateInput;var v={from:f,to:p,text:l?l[h%l.length]:s,origin:r||(a?"paste":t.state.cutIncoming?"cut":"+input")};wr(t.doc,v),Se(t,"inputRead",t,v)}e&&!a&&Oo(t,e),ti(t),t.curOp.updateInput=u,t.curOp.typing=!0,t.state.pasteIncoming=t.state.cutIncoming=!1}function No(t,e){var n=t.clipboardData&&t.clipboardData.getData("Text");if(n)return t.preventDefault(),e.isReadOnly()||e.options.disableInput||ui(e,function(){return Po(e,n,0,null,"paste")}),!0}function Oo(t,e){if(t.options.electricChars&&t.options.smartIndent)for(var n=t.doc.sel,i=n.ranges.length-1;i>=0;i--){var r=n.ranges[i];if(!(r.head.ch>100||i&&n.ranges[i-1].head.line==r.head.line)){var o=t.getModeAt(r.head),a=!1;if(o.electricChars){for(var s=0;s<o.electricChars.length;s++)if(e.indexOf(o.electricChars.charAt(s))>-1){a=Lo(t,r.head.line,"smart");break}}else o.electricInput&&o.electricInput.test(A(t.doc,r.head.line).text.slice(0,r.head.ch))&&(a=Lo(t,r.head.line,"smart"));a&&Se(t,"electricInput",t,r.head.line)}}}function Ro(t){for(var e=[],n=[],i=0;i<t.doc.sel.ranges.length;i++){var r=t.doc.sel.ranges[i].head.line,o={anchor:D(r,0),head:D(r+1,0)};n.push(o),e.push(t.getRange(o.anchor,o.head))}return{text:e,ranges:n}}function Do(t,e){t.setAttribute("autocorrect","off"),t.setAttribute("autocapitalize","off"),t.setAttribute("spellcheck",!!e)}function Io(){var t=i("textarea",null,null,"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none"),e=i("div",[t],null,"overflow: hidden; position: relative; width: 3px; height: 0px;");return ea?t.style.width="1000px":t.setAttribute("wrap","off"),la&&(t.style.border="1px solid black"),Do(t),e}function jo(t,e,n,i,r){function o(){var i=e.line+n;return!(i<t.first||i>=t.first+t.size)&&(e=new D(i,e.ch,e.sticky),c=A(t,i))}function a(i){var a;if(a=r?At(t.cm,c,e,n):Tt(c,e,n),null==a){if(i||!o())return!1;e=kt(r,t.cm,c,e.line,n)}else e=a;return!0}var s=e,l=n,c=A(t,e.line);if("char"==i)a();else if("column"==i)a(!0);else if("word"==i||"group"==i)for(var u=null,h="group"==i,d=t.cm&&t.cm.getHelper(e,"wordChars"),f=!0;!(n<0)||a(!f);f=!1){var p=c.text.charAt(e.ch)||"\n",g=_(p,d)?"w":h&&"\n"==p?"n":!h||/\s/.test(p)?null:"p";if(!h||f||g||(g="s"),u&&u!=g){n<0&&(n=1,a(),e.sticky="after");break}if(g&&(u=g),n>0&&!a(!f))break}var m=yr(t,e,s,l,!0);return j(s,m)&&(m.hitSide=!0),m}function Ho(t,e,n,i){var r,o=t.doc,a=e.left;if("page"==i){var s=Math.min(t.display.wrapper.clientHeight,window.innerHeight||document.documentElement.clientHeight),l=Math.max(s-.5*yn(t.display),3);r=(n>0?e.bottom:e.top)+n*l}else"line"==i&&(r=n>0?e.bottom+3:e.top-3);for(var c;c=pn(t,a,r),c.outside;){if(n<0?r<=0:r>=o.height){c.hitSide=!0;break}r+=5*n}return c}function Vo(t,e){var n=Ye(t,e.line);if(!n||n.hidden)return null;var i=A(t.doc,e.line),r=We(n,i,e.line),o=St(i,t.doc.direction),a="left";if(o){var s=wt(o,e.ch);a=s%2?"right":"left"}var l=Ke(r.map,e.ch,a);return l.offset="right"==l.collapse?l.end:l.start,l}function Fo(t){for(var e=t;e;e=e.parentNode)if(/CodeMirror-gutter-wrapper/.test(e.className))return!0;return!1}function zo(t,e){return e&&(t.bad=!0),t}function qo(t,e,n,i,r){function o(t){return function(e){return e.id==t}}function a(){u&&(c+=h,u=!1)}function s(t){t&&(a(),c+=t)}function l(e){if(1==e.nodeType){var n=e.getAttribute("cm-text");if(null!=n)return void s(n||e.textContent.replace(/\u200b/g,""));var c,d=e.getAttribute("cm-marker");if(d){var f=t.findMarks(D(i,0),D(r+1,0),o(+d));return void(f.length&&(c=f[0].find())&&s(M(t.doc,c.from,c.to).join(h)))}if("false"==e.getAttribute("contenteditable"))return;var p=/^(pre|div|p)$/i.test(e.nodeName);p&&a();for(var g=0;g<e.childNodes.length;g++)l(e.childNodes[g]);p&&(u=!0)}else 3==e.nodeType&&s(e.nodeValue)}for(var c="",u=!1,h=t.doc.lineSeparator();l(e),e!=n;)e=e.nextSibling;return c}function Go(t,e,n){var i;if(e==t.display.lineDiv){if(i=t.display.lineDiv.childNodes[n],!i)return zo(t.clipPos(D(t.display.viewTo-1)),!0);e=null,n=0}else for(i=e;;i=i.parentNode){if(!i||i==t.display.lineDiv)return null;if(i.parentNode&&i.parentNode==t.display.lineDiv)break}for(var r=0;r<t.display.view.length;r++){var o=t.display.view[r];if(o.node==i)return Bo(o,e,n)}}function Bo(t,e,n){function i(e,n,i){for(var r=-1;r<(h?h.length:0);r++)for(var o=r<0?u.map:h[r],a=0;a<o.length;a+=3){var s=o[a+2];if(s==e||s==n){var l=P(r<0?t.line:t.rest[r]),c=o[a]+i;return(i<0||s!=e)&&(c=o[a+(i?1:0)]),D(l,c)}}}var r=t.text.firstChild,a=!1;if(!e||!o(r,e))return zo(D(P(t.line),0),!0);if(e==r&&(a=!0,e=r.childNodes[n],n=0,!e)){var s=t.rest?g(t.rest):t.line;return zo(D(P(s),s.text.length),a)}var l=3==e.nodeType?e:null,c=e;for(l||1!=e.childNodes.length||3!=e.firstChild.nodeType||(l=e.firstChild,n&&(n=l.nodeValue.length));c.parentNode!=r;)c=c.parentNode;var u=t.measure,h=u.maps,d=i(l,c,n);if(d)return zo(d,a);for(var f=c.nextSibling,p=l?l.nodeValue.length-n:0;f;f=f.nextSibling){if(d=i(f,f.firstChild,0))return zo(D(d.line,d.ch-p),a);p+=f.textContent.length}for(var m=c.previousSibling,v=n;m;m=m.previousSibling){if(d=i(m,m.firstChild,-1))return zo(D(d.line,d.ch+v),a);v+=m.textContent.length}}function $o(t,e){function n(){t.value=l.getValue()}if(e=e?u(e):{},e.value=t.value,!e.tabindex&&t.tabIndex&&(e.tabindex=t.tabIndex),!e.placeholder&&t.placeholder&&(e.placeholder=t.placeholder),null==e.autofocus){var i=a();e.autofocus=i==t||null!=t.getAttribute("autofocus")&&i==document.body}var r;if(t.form&&(Ia(t.form,"submit",n),!e.leaveSubmitMethodAlone)){var o=t.form;r=o.submit;try{var s=o.submit=function(){n(),o.submit=r,o.submit(),o.submit=s}}catch(t){}}e.finishInit=function(e){e.save=n,e.getTextArea=function(){return t},e.toTextArea=function(){e.toTextArea=isNaN,n(),t.parentNode.removeChild(e.getWrapperElement()),t.style.display="",t.form&&(Lt(t.form,"submit",n),"function"==typeof t.form.submit&&(t.form.submit=r))}},t.style.display="none";var l=Ao(function(e){return t.parentNode.insertBefore(e,t.nextSibling)},e);return l}function Wo(t){t.off=Lt,t.on=Ia,t.wheelEventPixels=Gn,t.Doc=gs,t.splitLines=Ha,t.countColumn=h,t.findColumn=f,t.isWordChar=b,t.Pass=Ca,t.signal=Et,t.Line=Wa,t.changeEnd=Oi,t.scrollbarModel=is,t.Pos=D,t.cmpPos=I,t.modes=qa,t.mimeModes=Ga,t.resolveMode=Wt,t.getMode=Ut,t.modeExtensions=Ba,t.extendMode=Xt,t.copyState=Yt,t.startState=Zt,t.innerMode=Qt,t.commands=Ts,t.keyMap=ws,t.keyName=Kr,t.isModifierKey=Zr,t.lookupKey=Qr,t.normalizeKeyMap=Yr,t.StringStream=$a,t.SharedTextMarker=fs,t.TextMarker=ds,t.LineWidget=us,t.e_preventDefault=Dt,t.e_stopPropagation=It,t.e_stop=Ht,t.addClass=s,t.contains=o,t.rmClass=ya,t.keyNames=ys}var Uo=navigator.userAgent,Xo=navigator.platform,Yo=/gecko\/\d/i.test(Uo),Qo=/MSIE \d/.test(Uo),Zo=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(Uo),Ko=/Edge\/(\d+)/.exec(Uo),Jo=Qo||Zo||Ko,ta=Jo&&(Qo?document.documentMode||6:+(Ko||Zo)[1]),ea=!Ko&&/WebKit\//.test(Uo),na=ea&&/Qt\/\d+\.\d+/.test(Uo),ia=!Ko&&/Chrome\//.test(Uo),ra=/Opera\//.test(Uo),oa=/Apple Computer/.test(navigator.vendor),aa=/Mac OS X 1\d\D([8-9]|\d\d)\D/.test(Uo),sa=/PhantomJS/.test(Uo),la=!Ko&&/AppleWebKit/.test(Uo)&&/Mobile\/\w+/.test(Uo),ca=/Android/.test(Uo),ua=la||ca||/webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(Uo),ha=la||/Mac/.test(Xo),da=/\bCrOS\b/.test(Uo),fa=/win/i.test(Xo),pa=ra&&Uo.match(/Version\/(\d*\.\d*)/);pa&&(pa=Number(pa[1])),pa&&pa>=15&&(ra=!1,ea=!0);var ga,ma=ha&&(na||ra&&(null==pa||pa<12.11)),va=Yo||Jo&&ta>=9,ya=function(e,n){var i=e.className,r=t(n).exec(i);if(r){var o=i.slice(r.index+r[0].length);e.className=i.slice(0,r.index)+(o?r[1]+o:"")}};ga=document.createRange?function(t,e,n,i){var r=document.createRange();return r.setEnd(i||t,n),r.setStart(t,e),r}:function(t,e,n){var i=document.body.createTextRange();try{i.moveToElementText(t.parentNode)}catch(t){return i}return i.collapse(!0),i.moveEnd("character",n),i.moveStart("character",e),i};var xa=function(t){t.select()};la?xa=function(t){t.selectionStart=0,t.selectionEnd=t.value.length}:Jo&&(xa=function(t){try{t.select()}catch(t){}});var ba=function(){this.id=null};ba.prototype.set=function(t,e){clearTimeout(this.id),this.id=setTimeout(e,t)};var _a,wa,Sa=30,Ca={toString:function(){return"CodeMirror.Pass"}},Ta={scroll:!1},ka={origin:"*mouse"},Aa={origin:"+move"},Ma=[""],La=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,Ea=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/,Pa=!1,Na=!1,Oa=null,Ra=function(){function t(t){return t<=247?n.charAt(t):1424<=t&&t<=1524?"R":1536<=t&&t<=1785?i.charAt(t-1536):1774<=t&&t<=2220?"r":8192<=t&&t<=8203?"w":8204==t?"b":"L"}function e(t,e,n){this.level=t,this.from=e,this.to=n}var n="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN",i="nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111",r=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,o=/[stwN]/,a=/[LRr]/,s=/[Lb1n]/,l=/[1n]/;return function(n,i){var c="ltr"==i?"L":"R";if(0==n.length||"ltr"==i&&!r.test(n))return!1;for(var u=n.length,h=[],d=0;d<u;++d)h.push(t(n.charCodeAt(d)));for(var f=0,p=c;f<u;++f){var m=h[f];"m"==m?h[f]=p:p=m}for(var v=0,y=c;v<u;++v){var x=h[v];"1"==x&&"r"==y?h[v]="n":a.test(x)&&(y=x,"r"==x&&(h[v]="R"))}for(var b=1,_=h[0];b<u-1;++b){var w=h[b];"+"==w&&"1"==_&&"1"==h[b+1]?h[b]="1":","!=w||_!=h[b+1]||"1"!=_&&"n"!=_||(h[b]=_),_=w}for(var S=0;S<u;++S){var C=h[S];if(","==C)h[S]="N";else if("%"==C){var T=void 0;for(T=S+1;T<u&&"%"==h[T];++T);for(var k=S&&"!"==h[S-1]||T<u&&"1"==h[T]?"1":"N",A=S;A<T;++A)h[A]=k;S=T-1}}for(var M=0,L=c;M<u;++M){var E=h[M];"L"==L&&"1"==E?h[M]="L":a.test(E)&&(L=E)}for(var P=0;P<u;++P)if(o.test(h[P])){var N=void 0;for(N=P+1;N<u&&o.test(h[N]);++N);for(var O="L"==(P?h[P-1]:c),R="L"==(N<u?h[N]:c),D=O==R?O?"L":"R":c,I=P;I<N;++I)h[I]=D;P=N-1}for(var j,H=[],V=0;V<u;)if(s.test(h[V])){var F=V;for(++V;V<u&&s.test(h[V]);++V);H.push(new e(0,F,V))}else{var z=V,q=H.length;for(++V;V<u&&"L"!=h[V];++V);for(var G=z;G<V;)if(l.test(h[G])){z<G&&H.splice(q,0,new e(1,z,G));var B=G;for(++G;G<V&&l.test(h[G]);++G);H.splice(q,0,new e(2,B,G)),z=G}else++G;z<V&&H.splice(q,0,new e(1,z,V))}return 1==H[0].level&&(j=n.match(/^\s+/))&&(H[0].from=j[0].length,H.unshift(new e(0,0,j[0].length))),1==g(H).level&&(j=n.match(/\s+$/))&&(g(H).to-=j[0].length,H.push(new e(0,u-j[0].length,u))),"rtl"==i?H.reverse():H}}(),Da=[],Ia=function(t,e,n){if(t.addEventListener)t.addEventListener(e,n,!1);else if(t.attachEvent)t.attachEvent("on"+e,n);else{var i=t._handlers||(t._handlers={});i[e]=(i[e]||Da).concat(n)}},ja=function(){if(Jo&&ta<9)return!1;var t=i("div");return"draggable"in t||"dragDrop"in t}(),Ha=3!="\n\nb".split(/\n/).length?function(t){for(var e=0,n=[],i=t.length;e<=i;){var r=t.indexOf("\n",e);r==-1&&(r=t.length);var o=t.slice(e,"\r"==t.charAt(r-1)?r-1:r),a=o.indexOf("\r");a!=-1?(n.push(o.slice(0,a)),e+=a+1):(n.push(o),e=r+1)}return n}:function(t){return t.split(/\r\n?|\n/)},Va=window.getSelection?function(t){try{return t.selectionStart!=t.selectionEnd}catch(t){return!1}}:function(t){var e;try{e=t.ownerDocument.selection.createRange()}catch(t){}return!(!e||e.parentElement()!=t)&&0!=e.compareEndPoints("StartToEnd",e)},Fa=function(){var t=i("div");return"oncopy"in t||(t.setAttribute("oncopy","return;"),"function"==typeof t.oncopy)}(),za=null,qa={},Ga={},Ba={},$a=function(t,e){this.pos=this.start=0,this.string=t,this.tabSize=e||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0};$a.prototype.eol=function(){return this.pos>=this.string.length},$a.prototype.sol=function(){return this.pos==this.lineStart},$a.prototype.peek=function(){return this.string.charAt(this.pos)||void 0},$a.prototype.next=function(){if(this.pos<this.string.length)return this.string.charAt(this.pos++)},$a.prototype.eat=function(t){var e,n=this.string.charAt(this.pos);if(e="string"==typeof t?n==t:n&&(t.test?t.test(n):t(n)))return++this.pos,n},$a.prototype.eatWhile=function(t){for(var e=this.pos;this.eat(t););return this.pos>e},$a.prototype.eatSpace=function(){for(var t=this,e=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++t.pos;return this.pos>e},$a.prototype.skipToEnd=function(){this.pos=this.string.length},$a.prototype.skipTo=function(t){var e=this.string.indexOf(t,this.pos);if(e>-1)return this.pos=e,!0},$a.prototype.backUp=function(t){this.pos-=t},$a.prototype.column=function(){return this.lastColumnPos<this.start&&(this.lastColumnValue=h(this.string,this.start,this.tabSize,this.lastColumnPos,this.lastColumnValue),this.lastColumnPos=this.start),this.lastColumnValue-(this.lineStart?h(this.string,this.lineStart,this.tabSize):0)},$a.prototype.indentation=function(){return h(this.string,null,this.tabSize)-(this.lineStart?h(this.string,this.lineStart,this.tabSize):0)},$a.prototype.match=function(t,e,n){if("string"!=typeof t){var i=this.string.slice(this.pos).match(t);return i&&i.index>0?null:(i&&e!==!1&&(this.pos+=i[0].length),i)}var r=function(t){return n?t.toLowerCase():t},o=this.string.substr(this.pos,t.length);if(r(o)==r(t))return e!==!1&&(this.pos+=t.length),!0},$a.prototype.current=function(){return this.string.slice(this.start,this.pos)},$a.prototype.hideFirstChars=function(t,e){this.lineStart+=t;try{return e()}finally{this.lineStart-=t}};var Wa=function(t,e,n){this.text=t,it(this,e),this.height=n?n(this):1};Wa.prototype.lineNo=function(){return P(this)},Rt(Wa);var Ua,Xa={},Ya={},Qa=null,Za=null,Ka={left:0,right:0,top:0,bottom:0},Ja=0,ts=null;Jo?ts=-.53:Yo?ts=15:ia?ts=-.7:oa&&(ts=-1/3);var es=function(t,e,n){this.cm=n;var r=this.vert=i("div",[i("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar"),o=this.horiz=i("div",[i("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar");t(r),t(o),Ia(r,"scroll",function(){r.clientHeight&&e(r.scrollTop,"vertical")}),Ia(o,"scroll",function(){o.clientWidth&&e(o.scrollLeft,"horizontal")}),this.checkedZeroWidth=!1,Jo&&ta<8&&(this.horiz.style.minHeight=this.vert.style.minWidth="18px")};es.prototype.update=function(t){var e=t.scrollWidth>t.clientWidth+1,n=t.scrollHeight>t.clientHeight+1,i=t.nativeBarWidth;if(n){this.vert.style.display="block",this.vert.style.bottom=e?i+"px":"0";var r=t.viewHeight-(e?i:0);this.vert.firstChild.style.height=Math.max(0,t.scrollHeight-t.clientHeight+r)+"px"}else this.vert.style.display="",this.vert.firstChild.style.height="0";if(e){this.horiz.style.display="block",this.horiz.style.right=n?i+"px":"0",this.horiz.style.left=t.barLeft+"px";var o=t.viewWidth-t.barLeft-(n?i:0);this.horiz.firstChild.style.width=Math.max(0,t.scrollWidth-t.clientWidth+o)+"px"}else this.horiz.style.display="",this.horiz.firstChild.style.width="0";return!this.checkedZeroWidth&&t.clientHeight>0&&(0==i&&this.zeroWidthHack(),this.checkedZeroWidth=!0),{right:n?i:0,bottom:e?i:0}},es.prototype.setScrollLeft=function(t){this.horiz.scrollLeft!=t&&(this.horiz.scrollLeft=t),this.disableHoriz&&this.enableZeroWidthBar(this.horiz,this.disableHoriz,"horiz")},es.prototype.setScrollTop=function(t){this.vert.scrollTop!=t&&(this.vert.scrollTop=t),this.disableVert&&this.enableZeroWidthBar(this.vert,this.disableVert,"vert")},es.prototype.zeroWidthHack=function(){var t=ha&&!aa?"12px":"18px";this.horiz.style.height=this.vert.style.width=t,this.horiz.style.pointerEvents=this.vert.style.pointerEvents="none",this.disableHoriz=new ba,this.disableVert=new ba},es.prototype.enableZeroWidthBar=function(t,e,n){function i(){var r=t.getBoundingClientRect(),o="vert"==n?document.elementFromPoint(r.right-1,(r.top+r.bottom)/2):document.elementFromPoint((r.right+r.left)/2,r.bottom-1);o!=t?t.style.pointerEvents="none":e.set(1e3,i)}t.style.pointerEvents="auto",e.set(1e3,i)},es.prototype.clear=function(){var t=this.horiz.parentNode;t.removeChild(this.horiz),t.removeChild(this.vert)};var ns=function(){};ns.prototype.update=function(){return{bottom:0,right:0}},ns.prototype.setScrollLeft=function(){},ns.prototype.setScrollTop=function(){},ns.prototype.clear=function(){};var is={native:es,null:ns},rs=0,os=function(t,e,n){var i=t.display;this.viewport=e,this.visible=Vn(i,t.doc,e),this.editorIsHidden=!i.wrapper.offsetWidth,this.wrapperHeight=i.wrapper.clientHeight,this.wrapperWidth=i.wrapper.clientWidth,this.oldDisplayWidth=Ge(t),this.force=n,this.dims=bn(t),this.events=[]};os.prototype.signal=function(t,e){Ot(t,e)&&this.events.push(arguments)},os.prototype.finish=function(){for(var t=this,e=0;e<this.events.length;e++)Et.apply(null,t.events[e])};var as=function(t,e){this.ranges=t,this.primIndex=e};as.prototype.primary=function(){return this.ranges[this.primIndex]},as.prototype.equals=function(t){var e=this;if(t==this)return!0;if(t.primIndex!=this.primIndex||t.ranges.length!=this.ranges.length)return!1;for(var n=0;n<this.ranges.length;n++){var i=e.ranges[n],r=t.ranges[n];if(!j(i.anchor,r.anchor)||!j(i.head,r.head))return!1}return!0},as.prototype.deepCopy=function(){for(var t=this,e=[],n=0;n<this.ranges.length;n++)e[n]=new ss(H(t.ranges[n].anchor),H(t.ranges[n].head));return new as(e,this.primIndex)},as.prototype.somethingSelected=function(){for(var t=this,e=0;e<this.ranges.length;e++)if(!t.ranges[e].empty())return!0;return!1},as.prototype.contains=function(t,e){var n=this;e||(e=t);for(var i=0;i<this.ranges.length;i++){var r=n.ranges[i];if(I(e,r.from())>=0&&I(t,r.to())<=0)return i}return-1};var ss=function(t,e){this.anchor=t,this.head=e};ss.prototype.from=function(){return F(this.anchor,this.head)},ss.prototype.to=function(){return V(this.anchor,this.head)},ss.prototype.empty=function(){return this.head.line==this.anchor.line&&this.head.ch==this.anchor.ch};var ls=function(t){var e=this;this.lines=t,this.parent=null;for(var n=0,i=0;i<t.length;++i)t[i].parent=e,n+=t[i].height;this.height=n};ls.prototype.chunkSize=function(){return this.lines.length},ls.prototype.removeInner=function(t,e){for(var n=this,i=t,r=t+e;i<r;++i){var o=n.lines[i];n.height-=o.height,ce(o),Se(o,"delete")}this.lines.splice(t,e)},ls.prototype.collapse=function(t){t.push.apply(t,this.lines)},ls.prototype.insertInner=function(t,e,n){var i=this;this.height+=n,this.lines=this.lines.slice(0,t).concat(e).concat(this.lines.slice(t));for(var r=0;r<e.length;++r)e[r].parent=i},ls.prototype.iterN=function(t,e,n){for(var i=this,r=t+e;t<r;++t)if(n(i.lines[t]))return!0};var cs=function(t){var e=this;this.children=t;for(var n=0,i=0,r=0;r<t.length;++r){var o=t[r];n+=o.chunkSize(),i+=o.height,o.parent=e}this.size=n,this.height=i,this.parent=null};cs.prototype.chunkSize=function(){return this.size},cs.prototype.removeInner=function(t,e){var n=this;this.size-=e;for(var i=0;i<this.children.length;++i){var r=n.children[i],o=r.chunkSize();if(t<o){var a=Math.min(e,o-t),s=r.height;if(r.removeInner(t,a),n.height-=s-r.height,o==a&&(n.children.splice(i--,1),r.parent=null),0==(e-=a))break;t=0}else t-=o}if(this.size-e<25&&(this.children.length>1||!(this.children[0]instanceof ls))){var l=[];this.collapse(l),this.children=[new ls(l)],this.children[0].parent=this}},cs.prototype.collapse=function(t){for(var e=this,n=0;n<this.children.length;++n)e.children[n].collapse(t)},cs.prototype.insertInner=function(t,e,n){var i=this;this.size+=e.length,this.height+=n;for(var r=0;r<this.children.length;++r){var o=i.children[r],a=o.chunkSize();if(t<=a){if(o.insertInner(t,e,n),o.lines&&o.lines.length>50){for(var s=o.lines.length%25+25,l=s;l<o.lines.length;){var c=new ls(o.lines.slice(l,l+=25));o.height-=c.height,i.children.splice(++r,0,c),c.parent=i}o.lines=o.lines.slice(0,s),i.maybeSpill()}break}t-=a}},cs.prototype.maybeSpill=function(){if(!(this.children.length<=10)){var t=this;do{var e=t.children.splice(t.children.length-5,5),n=new cs(e);if(t.parent){t.size-=n.size,t.height-=n.height;var i=d(t.parent.children,t);t.parent.children.splice(i+1,0,n)}else{var r=new cs(t.children);r.parent=t,t.children=[r,n],t=r}n.parent=t.parent}while(t.children.length>10);t.parent.maybeSpill()}},cs.prototype.iterN=function(t,e,n){for(var i=this,r=0;r<this.children.length;++r){var o=i.children[r],a=o.chunkSize();if(t<a){var s=Math.min(e,a-t);if(o.iterN(t,s,n))return!0;if(0==(e-=s))break;t=0}else t-=a}};var us=function(t,e,n){var i=this;if(n)for(var r in n)n.hasOwnProperty(r)&&(i[r]=n[r]);this.doc=t,this.node=e};us.prototype.clear=function(){var t=this,e=this.doc.cm,n=this.line.widgets,i=this.line,r=P(i);if(null!=r&&n){for(var o=0;o<n.length;++o)n[o]==t&&n.splice(o--,1);n.length||(i.widgets=null);var a=je(this);E(i,Math.max(0,i.height-a)),e&&(ui(e,function(){Or(e,i,-a),gi(e,r,"widget")}),Se(e,"lineWidgetCleared",e,this,r))}},us.prototype.changed=function(){var t=this,e=this.height,n=this.doc.cm,i=this.line;this.height=null;var r=je(this)-e;r&&(E(i,i.height+r),n&&ui(n,function(){n.curOp.forceUpdate=!0,Or(n,i,r),Se(n,"lineWidgetChanged",n,t,P(i))}))},Rt(us);var hs=0,ds=function(t,e){this.lines=[],this.type=e,this.doc=t,this.id=++hs};ds.prototype.clear=function(){var t=this;if(!this.explicitlyCleared){var e=this.doc.cm,n=e&&!e.curOp;if(n&&ni(e),Ot(this,"clear")){var i=this.find();i&&Se(this,"clear",i.from,i.to)}for(var r=null,o=null,a=0;a<this.lines.length;++a){var s=t.lines[a],l=X(s.markedSpans,t);e&&!t.collapsed?gi(e,P(s),"text"):e&&(null!=l.to&&(o=P(s)),null!=l.from&&(r=P(s))),s.markedSpans=Y(s.markedSpans,l),null==l.from&&t.collapsed&&!mt(t.doc,s)&&e&&E(s,yn(e.display))}if(e&&this.collapsed&&!e.options.lineWrapping)for(var c=0;c<this.lines.length;++c){var u=ht(t.lines[c]),h=xt(u);h>e.display.maxLineLength&&(e.display.maxLine=u,e.display.maxLineLength=h,e.display.maxLineChanged=!0)}null!=r&&e&&this.collapsed&&pi(e,r,o+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,e&&gr(e.doc)),e&&Se(e,"markerCleared",e,this,r,o),n&&ii(e),this.parent&&this.parent.clear()}},ds.prototype.find=function(t,e){var n=this;null==t&&"bookmark"==this.type&&(t=1);for(var i,r,o=0;o<this.lines.length;++o){var a=n.lines[o],s=X(a.markedSpans,n);if(null!=s.from&&(i=D(e?a:P(a),s.from),t==-1))return i;if(null!=s.to&&(r=D(e?a:P(a),s.to),1==t))return r}return i&&{from:i,to:r}},ds.prototype.changed=function(){var t=this,e=this.find(-1,!0),n=this,i=this.doc.cm;e&&i&&ui(i,function(){var r=e.line,o=P(e.line),a=Ye(i,o);if(a&&(nn(a),i.curOp.selectionChanged=i.curOp.forceUpdate=!0),i.curOp.updateMaxLine=!0,!mt(n.doc,r)&&null!=n.height){var s=n.height;n.height=null;var l=je(n)-s;l&&E(r,r.height+l)}Se(i,"markerChanged",i,t)})},ds.prototype.attachLine=function(t){if(!this.lines.length&&this.doc.cm){var e=this.doc.cm.curOp;e.maybeHiddenMarkers&&d(e.maybeHiddenMarkers,this)!=-1||(e.maybeUnhiddenMarkers||(e.maybeUnhiddenMarkers=[])).push(this)}this.lines.push(t)},ds.prototype.detachLine=function(t){if(this.lines.splice(d(this.lines,t),1),!this.lines.length&&this.doc.cm){var e=this.doc.cm.curOp;(e.maybeHiddenMarkers||(e.maybeHiddenMarkers=[])).push(this)}},Rt(ds);var fs=function(t,e){var n=this;this.markers=t,this.primary=e;for(var i=0;i<t.length;++i)t[i].parent=n};fs.prototype.clear=function(){var t=this;if(!this.explicitlyCleared){this.explicitlyCleared=!0;for(var e=0;e<this.markers.length;++e)t.markers[e].clear();Se(this,"clear")}},fs.prototype.find=function(t,e){return this.primary.find(t,e)},Rt(fs);var ps=0,gs=function(t,e,n,i,r){if(!(this instanceof gs))return new gs(t,e,n,i,r);null==n&&(n=0),cs.call(this,[new ls([new Wa("",null)])]),this.first=n,this.scrollTop=this.scrollLeft=0,this.cantEdit=!1,this.cleanGeneration=1,this.frontier=n;var o=D(n,0);this.sel=Ni(o),this.history=new Wi(null),this.id=++ps,this.modeOption=e,this.lineSep=i,this.direction="rtl"==r?"rtl":"ltr",this.extend=!1,"string"==typeof t&&(t=this.splitLines(t)),zi(this,{from:o,to:o,text:t}),dr(this,Ni(o),Ta)};gs.prototype=x(cs.prototype,{constructor:gs,iter:function(t,e,n){n?this.iterN(t-this.first,e-t,n):this.iterN(this.first,this.first+this.size,t)},insert:function(t,e){for(var n=0,i=0;i<e.length;++i)n+=e[i].height;this.insertInner(t-this.first,e,n)},remove:function(t,e){this.removeInner(t-this.first,e)},getValue:function(t){var e=L(this,this.first,this.first+this.size);return t===!1?e:e.join(t||this.lineSeparator())},setValue:fi(function(t){var e=D(this.first,0),n=this.first+this.size-1;wr(this,{from:e,to:D(n,A(this,n).text.length),text:this.splitLines(t),origin:"setValue",full:!0},!0),this.cm&&this.cm.scrollTo(0,0),dr(this,Ni(e),Ta)}),replaceRange:function(t,e,n,i){e=q(this,e),n=n?q(this,n):e,Mr(this,t,e,n,i)},getRange:function(t,e,n){var i=M(this,q(this,t),q(this,e));return n===!1?i:i.join(n||this.lineSeparator())},getLine:function(t){var e=this.getLineHandle(t);return e&&e.text},getLineHandle:function(t){if(O(this,t))return A(this,t)},getLineNumber:function(t){return P(t)},getLineHandleVisualStart:function(t){return"number"==typeof t&&(t=A(this,t)),ht(t)},lineCount:function(){return this.size},firstLine:function(){return this.first},lastLine:function(){return this.first+this.size-1},clipPos:function(t){return q(this,t)},getCursor:function(t){var e,n=this.sel.primary();return e=null==t||"head"==t?n.head:"anchor"==t?n.anchor:"end"==t||"to"==t||t===!1?n.to():n.from()},listSelections:function(){return this.sel.ranges},somethingSelected:function(){return this.sel.somethingSelected()},setCursor:fi(function(t,e,n){cr(this,q(this,"number"==typeof t?D(t,e||0):t),null,n)}),setSelection:fi(function(t,e,n){cr(this,q(this,t),q(this,e||t),n)}),extendSelection:fi(function(t,e,n){ar(this,q(this,t),e&&q(this,e),n)}),extendSelections:fi(function(t,e){sr(this,B(this,t),e)}),extendSelectionsBy:fi(function(t,e){var n=m(this.sel.ranges,t);sr(this,B(this,n),e)}),setSelections:fi(function(t,e,n){var i=this;if(t.length){for(var r=[],o=0;o<t.length;o++)r[o]=new ss(q(i,t[o].anchor),q(i,t[o].head));null==e&&(e=Math.min(t.length-1,this.sel.primIndex)),dr(this,Pi(r,e),n)}}),addSelection:fi(function(t,e,n){var i=this.sel.ranges.slice(0);i.push(new ss(q(this,t),q(this,e||t))),dr(this,Pi(i,i.length-1),n)}),getSelection:function(t){for(var e,n=this,i=this.sel.ranges,r=0;r<i.length;r++){var o=M(n,i[r].from(),i[r].to());e=e?e.concat(o):o}return t===!1?e:e.join(t||this.lineSeparator())},getSelections:function(t){for(var e=this,n=[],i=this.sel.ranges,r=0;r<i.length;r++){var o=M(e,i[r].from(),i[r].to());t!==!1&&(o=o.join(t||e.lineSeparator())),n[r]=o}return n},replaceSelection:function(t,e,n){for(var i=[],r=0;r<this.sel.ranges.length;r++)i[r]=t;this.replaceSelections(i,e,n||"+input")},replaceSelections:fi(function(t,e,n){for(var i=this,r=[],o=this.sel,a=0;a<o.ranges.length;a++){var s=o.ranges[a];r[a]={from:s.from(),to:s.to(),text:i.splitLines(t[a]),origin:n}}for(var l=e&&"end"!=e&&ji(this,r,e),c=r.length-1;c>=0;c--)wr(i,r[c]);l?hr(this,l):this.cm&&ti(this.cm)}),undo:fi(function(){Cr(this,"undo")}),redo:fi(function(){Cr(this,"redo")}),undoSelection:fi(function(){Cr(this,"undo",!0)}),redoSelection:fi(function(){Cr(this,"redo",!0)}),setExtending:function(t){this.extend=t},getExtending:function(){return this.extend},historySize:function(){for(var t=this.history,e=0,n=0,i=0;i<t.done.length;i++)t.done[i].ranges||++e;for(var r=0;r<t.undone.length;r++)t.undone[r].ranges||++n;return{undo:e,redo:n}},clearHistory:function(){this.history=new Wi(this.history.maxGeneration)},markClean:function(){this.cleanGeneration=this.changeGeneration(!0)},changeGeneration:function(t){return t&&(this.history.lastOp=this.history.lastSelOp=this.history.lastOrigin=null),this.history.generation},isClean:function(t){return this.history.generation==(t||this.cleanGeneration)},getHistory:function(){return{done:rr(this.history.done),undone:rr(this.history.undone)}},setHistory:function(t){var e=this.history=new Wi(this.history.maxGeneration);e.done=rr(t.done.slice(0),null,!0),e.undone=rr(t.undone.slice(0),null,!0)},setGutterMarker:fi(function(t,e,n){return Nr(this,t,"gutter",function(t){var i=t.gutterMarkers||(t.gutterMarkers={});return i[e]=n,!n&&w(i)&&(t.gutterMarkers=null),!0})}),clearGutter:fi(function(t){var e=this;this.iter(function(n){n.gutterMarkers&&n.gutterMarkers[t]&&Nr(e,n,"gutter",function(){return n.gutterMarkers[t]=null,
-w(n.gutterMarkers)&&(n.gutterMarkers=null),!0})})}),lineInfo:function(t){var e;if("number"==typeof t){if(!O(this,t))return null;if(e=t,t=A(this,t),!t)return null}else if(e=P(t),null==e)return null;return{line:e,handle:t,text:t.text,gutterMarkers:t.gutterMarkers,textClass:t.textClass,bgClass:t.bgClass,wrapClass:t.wrapClass,widgets:t.widgets}},addLineClass:fi(function(e,n,i){return Nr(this,e,"gutter"==n?"gutter":"class",function(e){var r="text"==n?"textClass":"background"==n?"bgClass":"gutter"==n?"gutterClass":"wrapClass";if(e[r]){if(t(i).test(e[r]))return!1;e[r]+=" "+i}else e[r]=i;return!0})}),removeLineClass:fi(function(e,n,i){return Nr(this,e,"gutter"==n?"gutter":"class",function(e){var r="text"==n?"textClass":"background"==n?"bgClass":"gutter"==n?"gutterClass":"wrapClass",o=e[r];if(!o)return!1;if(null==i)e[r]=null;else{var a=o.match(t(i));if(!a)return!1;var s=a.index+a[0].length;e[r]=o.slice(0,a.index)+(a.index&&s!=o.length?" ":"")+o.slice(s)||null}return!0})}),addLineWidget:fi(function(t,e,n){return Rr(this,t,e,n)}),removeLineWidget:function(t){t.clear()},markText:function(t,e,n){return Dr(this,q(this,t),q(this,e),n,n&&n.type||"range")},setBookmark:function(t,e){var n={replacedWith:e&&(null==e.nodeType?e.widget:e),insertLeft:e&&e.insertLeft,clearWhenEmpty:!1,shared:e&&e.shared,handleMouseEvents:e&&e.handleMouseEvents};return t=q(this,t),Dr(this,t,t,n,"bookmark")},findMarksAt:function(t){t=q(this,t);var e=[],n=A(this,t.line).markedSpans;if(n)for(var i=0;i<n.length;++i){var r=n[i];(null==r.from||r.from<=t.ch)&&(null==r.to||r.to>=t.ch)&&e.push(r.marker.parent||r.marker)}return e},findMarks:function(t,e,n){t=q(this,t),e=q(this,e);var i=[],r=t.line;return this.iter(t.line,e.line+1,function(o){var a=o.markedSpans;if(a)for(var s=0;s<a.length;s++){var l=a[s];null!=l.to&&r==t.line&&t.ch>=l.to||null==l.from&&r!=t.line||null!=l.from&&r==e.line&&l.from>=e.ch||n&&!n(l.marker)||i.push(l.marker.parent||l.marker)}++r}),i},getAllMarks:function(){var t=[];return this.iter(function(e){var n=e.markedSpans;if(n)for(var i=0;i<n.length;++i)null!=n[i].from&&t.push(n[i].marker)}),t},posFromIndex:function(t){var e,n=this.first,i=this.lineSeparator().length;return this.iter(function(r){var o=r.text.length+i;return o>t?(e=t,!0):(t-=o,void++n)}),q(this,D(n,e))},indexFromPos:function(t){t=q(this,t);var e=t.ch;if(t.line<this.first||t.ch<0)return 0;var n=this.lineSeparator().length;return this.iter(this.first,t.line,function(t){e+=t.text.length+n}),e},copy:function(t){var e=new gs(L(this,this.first,this.first+this.size),this.modeOption,this.first,this.lineSep,this.direction);return e.scrollTop=this.scrollTop,e.scrollLeft=this.scrollLeft,e.sel=this.sel,e.extend=!1,t&&(e.history.undoDepth=this.history.undoDepth,e.setHistory(this.getHistory())),e},linkedDoc:function(t){t||(t={});var e=this.first,n=this.first+this.size;null!=t.from&&t.from>e&&(e=t.from),null!=t.to&&t.to<n&&(n=t.to);var i=new gs(L(this,e,n),t.mode||this.modeOption,e,this.lineSep,this.direction);return t.sharedHist&&(i.history=this.history),(this.linked||(this.linked=[])).push({doc:i,sharedHist:t.sharedHist}),i.linked=[{doc:this,isParent:!0,sharedHist:t.sharedHist}],Hr(i,jr(this)),i},unlinkDoc:function(t){var e=this;if(t instanceof Ao&&(t=t.doc),this.linked)for(var n=0;n<this.linked.length;++n){var i=e.linked[n];if(i.doc==t){e.linked.splice(n,1),t.unlinkDoc(e),Vr(jr(e));break}}if(t.history==this.history){var r=[t.id];qi(t,function(t){return r.push(t.id)},!0),t.history=new Wi(null),t.history.done=rr(this.history.done,r),t.history.undone=rr(this.history.undone,r)}},iterLinkedDocs:function(t){qi(this,t)},getMode:function(){return this.mode},getEditor:function(){return this.cm},splitLines:function(t){return this.lineSep?t.split(this.lineSep):Ha(t)},lineSeparator:function(){return this.lineSep||"\n"},setDirection:fi(function(t){"rtl"!=t&&(t="ltr"),t!=this.direction&&(this.direction=t,this.iter(function(t){return t.order=null}),this.cm&&$i(this.cm))})}),gs.prototype.eachLine=gs.prototype.iter;for(var ms=0,vs=!1,ys={3:"Enter",8:"Backspace",9:"Tab",13:"Enter",16:"Shift",17:"Ctrl",18:"Alt",19:"Pause",20:"CapsLock",27:"Esc",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",44:"PrintScrn",45:"Insert",46:"Delete",59:";",61:"=",91:"Mod",92:"Mod",93:"Mod",106:"*",107:"=",109:"-",110:".",111:"/",127:"Delete",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'",63232:"Up",63233:"Down",63234:"Left",63235:"Right",63272:"Delete",63273:"Home",63275:"End",63276:"PageUp",63277:"PageDown",63302:"Insert"},xs=0;xs<10;xs++)ys[xs+48]=ys[xs+96]=String(xs);for(var bs=65;bs<=90;bs++)ys[bs]=String.fromCharCode(bs);for(var _s=1;_s<=12;_s++)ys[_s+111]=ys[_s+63235]="F"+_s;var ws={};ws.basic={Left:"goCharLeft",Right:"goCharRight",Up:"goLineUp",Down:"goLineDown",End:"goLineEnd",Home:"goLineStartSmart",PageUp:"goPageUp",PageDown:"goPageDown",Delete:"delCharAfter",Backspace:"delCharBefore","Shift-Backspace":"delCharBefore",Tab:"defaultTab","Shift-Tab":"indentAuto",Enter:"newlineAndIndent",Insert:"toggleOverwrite",Esc:"singleSelection"},ws.pcDefault={"Ctrl-A":"selectAll","Ctrl-D":"deleteLine","Ctrl-Z":"undo","Shift-Ctrl-Z":"redo","Ctrl-Y":"redo","Ctrl-Home":"goDocStart","Ctrl-End":"goDocEnd","Ctrl-Up":"goLineUp","Ctrl-Down":"goLineDown","Ctrl-Left":"goGroupLeft","Ctrl-Right":"goGroupRight","Alt-Left":"goLineStart","Alt-Right":"goLineEnd","Ctrl-Backspace":"delGroupBefore","Ctrl-Delete":"delGroupAfter","Ctrl-S":"save","Ctrl-F":"find","Ctrl-G":"findNext","Shift-Ctrl-G":"findPrev","Shift-Ctrl-F":"replace","Shift-Ctrl-R":"replaceAll","Ctrl-[":"indentLess","Ctrl-]":"indentMore","Ctrl-U":"undoSelection","Shift-Ctrl-U":"redoSelection","Alt-U":"redoSelection",fallthrough:"basic"},ws.emacsy={"Ctrl-F":"goCharRight","Ctrl-B":"goCharLeft","Ctrl-P":"goLineUp","Ctrl-N":"goLineDown","Alt-F":"goWordRight","Alt-B":"goWordLeft","Ctrl-A":"goLineStart","Ctrl-E":"goLineEnd","Ctrl-V":"goPageDown","Shift-Ctrl-V":"goPageUp","Ctrl-D":"delCharAfter","Ctrl-H":"delCharBefore","Alt-D":"delWordAfter","Alt-Backspace":"delWordBefore","Ctrl-K":"killLine","Ctrl-T":"transposeChars","Ctrl-O":"openLine"},ws.macDefault={"Cmd-A":"selectAll","Cmd-D":"deleteLine","Cmd-Z":"undo","Shift-Cmd-Z":"redo","Cmd-Y":"redo","Cmd-Home":"goDocStart","Cmd-Up":"goDocStart","Cmd-End":"goDocEnd","Cmd-Down":"goDocEnd","Alt-Left":"goGroupLeft","Alt-Right":"goGroupRight","Cmd-Left":"goLineLeft","Cmd-Right":"goLineRight","Alt-Backspace":"delGroupBefore","Ctrl-Alt-Backspace":"delGroupAfter","Alt-Delete":"delGroupAfter","Cmd-S":"save","Cmd-F":"find","Cmd-G":"findNext","Shift-Cmd-G":"findPrev","Cmd-Alt-F":"replace","Shift-Cmd-Alt-F":"replaceAll","Cmd-[":"indentLess","Cmd-]":"indentMore","Cmd-Backspace":"delWrappedLineLeft","Cmd-Delete":"delWrappedLineRight","Cmd-U":"undoSelection","Shift-Cmd-U":"redoSelection","Ctrl-Up":"goDocStart","Ctrl-Down":"goDocEnd",fallthrough:["basic","emacsy"]},ws.default=ha?ws.macDefault:ws.pcDefault;var Ss,Cs,Ts={selectAll:br,singleSelection:function(t){return t.setSelection(t.getCursor("anchor"),t.getCursor("head"),Ta)},killLine:function(t){return to(t,function(e){if(e.empty()){var n=A(t.doc,e.head.line).text.length;return e.head.ch==n&&e.head.line<t.lastLine()?{from:e.head,to:D(e.head.line+1,0)}:{from:e.head,to:D(e.head.line,n)}}return{from:e.from(),to:e.to()}})},deleteLine:function(t){return to(t,function(e){return{from:D(e.from().line,0),to:q(t.doc,D(e.to().line+1,0))}})},delLineLeft:function(t){return to(t,function(t){return{from:D(t.from().line,0),to:t.from()}})},delWrappedLineLeft:function(t){return to(t,function(e){var n=t.charCoords(e.head,"div").top+5,i=t.coordsChar({left:0,top:n},"div");return{from:i,to:e.from()}})},delWrappedLineRight:function(t){return to(t,function(e){var n=t.charCoords(e.head,"div").top+5,i=t.coordsChar({left:t.display.lineDiv.offsetWidth+100,top:n},"div");return{from:e.from(),to:i}})},undo:function(t){return t.undo()},redo:function(t){return t.redo()},undoSelection:function(t){return t.undoSelection()},redoSelection:function(t){return t.redoSelection()},goDocStart:function(t){return t.extendSelection(D(t.firstLine(),0))},goDocEnd:function(t){return t.extendSelection(D(t.lastLine()))},goLineStart:function(t){return t.extendSelectionsBy(function(e){return eo(t,e.head.line)},{origin:"+move",bias:1})},goLineStartSmart:function(t){return t.extendSelectionsBy(function(e){return io(t,e.head)},{origin:"+move",bias:1})},goLineEnd:function(t){return t.extendSelectionsBy(function(e){return no(t,e.head.line)},{origin:"+move",bias:-1})},goLineRight:function(t){return t.extendSelectionsBy(function(e){var n=t.charCoords(e.head,"div").top+5;return t.coordsChar({left:t.display.lineDiv.offsetWidth+100,top:n},"div")},Aa)},goLineLeft:function(t){return t.extendSelectionsBy(function(e){var n=t.charCoords(e.head,"div").top+5;return t.coordsChar({left:0,top:n},"div")},Aa)},goLineLeftSmart:function(t){return t.extendSelectionsBy(function(e){var n=t.charCoords(e.head,"div").top+5,i=t.coordsChar({left:0,top:n},"div");return i.ch<t.getLine(i.line).search(/\S/)?io(t,e.head):i},Aa)},goLineUp:function(t){return t.moveV(-1,"line")},goLineDown:function(t){return t.moveV(1,"line")},goPageUp:function(t){return t.moveV(-1,"page")},goPageDown:function(t){return t.moveV(1,"page")},goCharLeft:function(t){return t.moveH(-1,"char")},goCharRight:function(t){return t.moveH(1,"char")},goColumnLeft:function(t){return t.moveH(-1,"column")},goColumnRight:function(t){return t.moveH(1,"column")},goWordLeft:function(t){return t.moveH(-1,"word")},goGroupRight:function(t){return t.moveH(1,"group")},goGroupLeft:function(t){return t.moveH(-1,"group")},goWordRight:function(t){return t.moveH(1,"word")},delCharBefore:function(t){return t.deleteH(-1,"char")},delCharAfter:function(t){return t.deleteH(1,"char")},delWordBefore:function(t){return t.deleteH(-1,"word")},delWordAfter:function(t){return t.deleteH(1,"word")},delGroupBefore:function(t){return t.deleteH(-1,"group")},delGroupAfter:function(t){return t.deleteH(1,"group")},indentAuto:function(t){return t.indentSelection("smart")},indentMore:function(t){return t.indentSelection("add")},indentLess:function(t){return t.indentSelection("subtract")},insertTab:function(t){return t.replaceSelection("\t")},insertSoftTab:function(t){for(var e=[],n=t.listSelections(),i=t.options.tabSize,r=0;r<n.length;r++){var o=n[r].from(),a=h(t.getLine(o.line),o.ch,i);e.push(p(i-a%i))}t.replaceSelections(e)},defaultTab:function(t){t.somethingSelected()?t.indentSelection("add"):t.execCommand("insertTab")},transposeChars:function(t){return ui(t,function(){for(var e=t.listSelections(),n=[],i=0;i<e.length;i++)if(e[i].empty()){var r=e[i].head,o=A(t.doc,r.line).text;if(o)if(r.ch==o.length&&(r=new D(r.line,r.ch-1)),r.ch>0)r=new D(r.line,r.ch+1),t.replaceRange(o.charAt(r.ch-1)+o.charAt(r.ch-2),D(r.line,r.ch-2),r,"+transpose");else if(r.line>t.doc.first){var a=A(t.doc,r.line-1).text;a&&(r=new D(r.line,1),t.replaceRange(o.charAt(0)+t.doc.lineSeparator()+a.charAt(a.length-1),D(r.line-1,a.length-1),r,"+transpose"))}n.push(new ss(r,r))}t.setSelections(n)})},newlineAndIndent:function(t){return ui(t,function(){for(var e=t.listSelections(),n=e.length-1;n>=0;n--)t.replaceRange(t.doc.lineSeparator(),e[n].anchor,e[n].head,"+input");e=t.listSelections();for(var i=0;i<e.length;i++)t.indentLine(e[i].from().line,null,!0);ti(t)})},openLine:function(t){return t.replaceSelection("\n","start")},toggleOverwrite:function(t){return t.toggleOverwrite()}},ks=new ba,As=null,Ms={toString:function(){return"CodeMirror.Init"}},Ls={},Es={};Ao.defaults=Ls,Ao.optionHandlers=Es;var Ps=[];Ao.defineInitHook=function(t){return Ps.push(t)};var Ns=null,Os=function(t){var e=t.optionHandlers,n=t.helpers={};t.prototype={constructor:t,focus:function(){window.focus(),this.display.input.focus()},setOption:function(t,n){var i=this.options,r=i[t];i[t]==n&&"mode"!=t||(i[t]=n,e.hasOwnProperty(t)&&hi(this,e[t])(this,n,r),Et(this,"optionChange",this,t))},getOption:function(t){return this.options[t]},getDoc:function(){return this.doc},addKeyMap:function(t,e){this.state.keyMaps[e?"push":"unshift"](Jr(t))},removeKeyMap:function(t){for(var e=this.state.keyMaps,n=0;n<e.length;++n)if(e[n]==t||e[n].name==t)return e.splice(n,1),!0},addOverlay:di(function(e,n){var i=e.token?e:t.getMode(this.options,e);if(i.startState)throw new Error("Overlays may not be stateful.");v(this.state.overlays,{mode:i,modeSpec:e,opaque:n&&n.opaque,priority:n&&n.priority||0},function(t){return t.priority}),this.state.modeGen++,pi(this)}),removeOverlay:di(function(t){for(var e=this,n=this.state.overlays,i=0;i<n.length;++i){var r=n[i].modeSpec;if(r==t||"string"==typeof t&&r.name==t)return n.splice(i,1),e.state.modeGen++,void pi(e)}}),indentLine:di(function(t,e,n){"string"!=typeof e&&"number"!=typeof e&&(e=null==e?this.options.smartIndent?"smart":"prev":e?"add":"subtract"),O(this.doc,t)&&Lo(this,t,e,n)}),indentSelection:di(function(t){for(var e=this,n=this.doc.sel.ranges,i=-1,r=0;r<n.length;r++){var o=n[r];if(o.empty())o.head.line>i&&(Lo(e,o.head.line,t,!0),i=o.head.line,r==e.doc.sel.primIndex&&ti(e));else{var a=o.from(),s=o.to(),l=Math.max(i,a.line);i=Math.min(e.lastLine(),s.line-(s.ch?0:1))+1;for(var c=l;c<i;++c)Lo(e,c,t);var u=e.doc.sel.ranges;0==a.ch&&n.length==u.length&&u[r].from().ch>0&&lr(e.doc,r,new ss(a,u[r].to()),Ta)}}}),getTokenAt:function(t,e){return re(this,t,e)},getLineTokens:function(t,e){return re(this,D(t),e,!0)},getTokenTypeAt:function(t){t=q(this.doc,t);var e,n=Jt(this,A(this.doc,t.line)),i=0,r=(n.length-1)/2,o=t.ch;if(0==o)e=n[2];else for(;;){var a=i+r>>1;if((a?n[2*a-1]:0)>=o)r=a;else{if(!(n[2*a+1]<o)){e=n[2*a+2];break}i=a+1}}var s=e?e.indexOf("overlay "):-1;return s<0?e:0==s?null:e.slice(0,s-1)},getModeAt:function(e){var n=this.doc.mode;return n.innerMode?t.innerMode(n,this.getTokenAt(e).state).mode:n},getHelper:function(t,e){return this.getHelpers(t,e)[0]},getHelpers:function(t,e){var i=this,r=[];if(!n.hasOwnProperty(e))return r;var o=n[e],a=this.getModeAt(t);if("string"==typeof a[e])o[a[e]]&&r.push(o[a[e]]);else if(a[e])for(var s=0;s<a[e].length;s++){var l=o[a[e][s]];l&&r.push(l)}else a.helperType&&o[a.helperType]?r.push(o[a.helperType]):o[a.name]&&r.push(o[a.name]);for(var c=0;c<o._global.length;c++){var u=o._global[c];u.pred(a,i)&&d(r,u.val)==-1&&r.push(u.val)}return r},getStateAfter:function(t,e){var n=this.doc;return t=z(n,null==t?n.first+n.size-1:t),te(this,t+1,e)},cursorCoords:function(t,e){var n,i=this.doc.sel.primary();return n=null==t?i.head:"object"==typeof t?q(this.doc,t):t?i.from():i.to(),hn(this,n,e||"page")},charCoords:function(t,e){return un(this,q(this.doc,t),e||"page")},coordsChar:function(t,e){return t=cn(this,t,e||"page"),pn(this,t.left,t.top)},lineAtHeight:function(t,e){return t=cn(this,{top:t,left:0},e||"page").top,N(this.doc,t+this.display.viewOffset)},heightAtLine:function(t,e,n){var i,r=!1;if("number"==typeof t){var o=this.doc.first+this.doc.size-1;t<this.doc.first?t=this.doc.first:t>o&&(t=o,r=!0),i=A(this.doc,t)}else i=t;return ln(this,i,{top:0,left:0},e||"page",n||r).top+(r?this.doc.height-yt(i):0)},defaultTextHeight:function(){return yn(this.display)},defaultCharWidth:function(){return xn(this.display)},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(t,e,n,i,r){var o=this.display;t=hn(this,q(this.doc,t));var a=t.bottom,s=t.left;if(e.style.position="absolute",e.setAttribute("cm-ignore-events","true"),this.display.input.setUneditable(e),o.sizer.appendChild(e),"over"==i)a=t.top;else if("above"==i||"near"==i){var l=Math.max(o.wrapper.clientHeight,this.doc.height),c=Math.max(o.sizer.clientWidth,o.lineSpace.clientWidth);("above"==i||t.bottom+e.offsetHeight>l)&&t.top>e.offsetHeight?a=t.top-e.offsetHeight:t.bottom+e.offsetHeight<=l&&(a=t.bottom),s+e.offsetWidth>c&&(s=c-e.offsetWidth)}e.style.top=a+"px",e.style.left=e.style.right="","right"==r?(s=o.sizer.clientWidth-e.offsetWidth,e.style.right="0px"):("left"==r?s=0:"middle"==r&&(s=(o.sizer.clientWidth-e.offsetWidth)/2),e.style.left=s+"px"),n&&Zn(this,{left:s,top:a,right:s+e.offsetWidth,bottom:a+e.offsetHeight})},triggerOnKeyDown:di(co),triggerOnKeyPress:di(fo),triggerOnKeyUp:ho,execCommand:function(t){if(Ts.hasOwnProperty(t))return Ts[t].call(null,this)},triggerElectric:di(function(t){Oo(this,t)}),findPosH:function(t,e,n,i){var r=this,o=1;e<0&&(o=-1,e=-e);for(var a=q(this.doc,t),s=0;s<e&&(a=jo(r.doc,a,o,n,i),!a.hitSide);++s);return a},moveH:di(function(t,e){var n=this;this.extendSelectionsBy(function(i){return n.display.shift||n.doc.extend||i.empty()?jo(n.doc,i.head,t,e,n.options.rtlMoveVisually):t<0?i.from():i.to()},Aa)}),deleteH:di(function(t,e){var n=this.doc.sel,i=this.doc;n.somethingSelected()?i.replaceSelection("",null,"+delete"):to(this,function(n){var r=jo(i,n.head,t,e,!1);return t<0?{from:r,to:n.head}:{from:n.head,to:r}})}),findPosV:function(t,e,n,i){var r=this,o=1,a=i;e<0&&(o=-1,e=-e);for(var s=q(this.doc,t),l=0;l<e;++l){var c=hn(r,s,"div");if(null==a?a=c.left:c.left=a,s=Ho(r,c,o,n),s.hitSide)break}return s},moveV:di(function(t,e){var n=this,i=this.doc,r=[],o=!this.display.shift&&!i.extend&&i.sel.somethingSelected();if(i.extendSelectionsBy(function(a){if(o)return t<0?a.from():a.to();var s=hn(n,a.head,"div");null!=a.goalColumn&&(s.left=a.goalColumn),r.push(s.left);var l=Ho(n,s,t,e);return"page"==e&&a==i.sel.primary()&&Jn(n,null,un(n,l,"div").top-s.top),l},Aa),r.length)for(var a=0;a<i.sel.ranges.length;a++)i.sel.ranges[a].goalColumn=r[a]}),findWordAt:function(t){var e=this.doc,n=A(e,t.line).text,i=t.ch,r=t.ch;if(n){var o=this.getHelper(t,"wordChars");"before"!=t.sticky&&r!=n.length||!i?++r:--i;for(var a=n.charAt(i),s=_(a,o)?function(t){return _(t,o)}:/\s/.test(a)?function(t){return/\s/.test(t)}:function(t){return!/\s/.test(t)&&!_(t)};i>0&&s(n.charAt(i-1));)--i;for(;r<n.length&&s(n.charAt(r));)++r}return new ss(D(t.line,i),D(t.line,r))},toggleOverwrite:function(t){null!=t&&t==this.state.overwrite||((this.state.overwrite=!this.state.overwrite)?s(this.display.cursorDiv,"CodeMirror-overwrite"):ya(this.display.cursorDiv,"CodeMirror-overwrite"),Et(this,"overwriteToggle",this,this.state.overwrite))},hasFocus:function(){return this.display.input.getField()==a()},isReadOnly:function(){return!(!this.options.readOnly&&!this.doc.cantEdit)},scrollTo:di(function(t,e){null==t&&null==e||ei(this),null!=t&&(this.curOp.scrollLeft=t),null!=e&&(this.curOp.scrollTop=e)}),getScrollInfo:function(){var t=this.display.scroller;return{left:t.scrollLeft,top:t.scrollTop,height:t.scrollHeight-qe(this)-this.display.barHeight,width:t.scrollWidth-qe(this)-this.display.barWidth,clientHeight:Be(this),clientWidth:Ge(this)}},scrollIntoView:di(function(t,e){if(null==t?(t={from:this.doc.sel.primary().head,to:null},null==e&&(e=this.options.cursorScrollMargin)):"number"==typeof t?t={from:D(t,0),to:null}:null==t.from&&(t={from:t,to:null}),t.to||(t.to=t.from),t.margin=e||0,null!=t.from.line)ei(this),this.curOp.scrollToPos=t;else{var n=Kn(this,{left:Math.min(t.from.left,t.to.left),top:Math.min(t.from.top,t.to.top)-t.margin,right:Math.max(t.from.right,t.to.right),bottom:Math.max(t.from.bottom,t.to.bottom)+t.margin});this.scrollTo(n.scrollLeft,n.scrollTop)}}),setSize:di(function(t,e){var n=this,i=function(t){return"number"==typeof t||/^\d+$/.test(String(t))?t+"px":t};null!=t&&(this.display.wrapper.style.width=i(t)),null!=e&&(this.display.wrapper.style.height=i(e)),this.options.lineWrapping&&rn(this);var r=this.display.viewFrom;this.doc.iter(r,this.display.viewTo,function(t){if(t.widgets)for(var e=0;e<t.widgets.length;e++)if(t.widgets[e].noHScroll){gi(n,r,"widget");break}++r}),this.curOp.forceUpdate=!0,Et(this,"refresh",this)}),operation:function(t){return ui(this,t)},refresh:di(function(){var t=this.display.cachedTextHeight;pi(this),this.curOp.forceUpdate=!0,on(this),this.scrollTo(this.doc.scrollLeft,this.doc.scrollTop),Ai(this),(null==t||Math.abs(t-yn(this.display))>.5)&&Sn(this),Et(this,"refresh",this)}),swapDoc:di(function(t){var e=this.doc;return e.cm=null,Gi(this,t),on(this),this.display.input.reset(),this.scrollTo(t.scrollLeft,t.scrollTop),this.curOp.forceScroll=!0,Se(this,"swapDoc",this,e),e}),getInputField:function(){return this.display.input.getField()},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},Rt(t),t.registerHelper=function(e,i,r){n.hasOwnProperty(e)||(n[e]=t[e]={_global:[]}),n[e][i]=r},t.registerGlobalHelper=function(e,i,r,o){t.registerHelper(e,i,o),n[e]._global.push({pred:r,val:o})}},Rs=function(t){this.cm=t,this.lastAnchorNode=this.lastAnchorOffset=this.lastFocusNode=this.lastFocusOffset=null,this.polling=new ba,this.composing=null,this.gracePeriod=!1,this.readDOMTimeout=null};Rs.prototype.init=function(t){function e(t){if(!Pt(r,t)){if(r.somethingSelected())Eo({lineWise:!1,text:r.getSelections()}),"cut"==t.type&&r.replaceSelection("",null,"cut");else{if(!r.options.lineWiseCopyCut)return;var e=Ro(r);Eo({lineWise:!0,text:e.text}),"cut"==t.type&&r.operation(function(){r.setSelections(e.ranges,0,Ta),r.replaceSelection("",null,"cut")})}if(t.clipboardData){t.clipboardData.clearData();var n=Ns.text.join("\n");if(t.clipboardData.setData("Text",n),t.clipboardData.getData("Text")==n)return void t.preventDefault()}var a=Io(),s=a.firstChild;r.display.lineSpace.insertBefore(a,r.display.lineSpace.firstChild),s.value=Ns.text.join("\n");var l=document.activeElement;xa(s),setTimeout(function(){r.display.lineSpace.removeChild(a),l.focus(),l==o&&i.showPrimarySelection()},50)}}var n=this,i=this,r=i.cm,o=i.div=t.lineDiv;Do(o,r.options.spellcheck),Ia(o,"paste",function(t){Pt(r,t)||No(t,r)||ta<=11&&setTimeout(hi(r,function(){return n.updateFromDOM()}),20)}),Ia(o,"compositionstart",function(t){n.composing={data:t.data,done:!1}}),Ia(o,"compositionupdate",function(t){n.composing||(n.composing={data:t.data,done:!1})}),Ia(o,"compositionend",function(t){n.composing&&(t.data!=n.composing.data&&n.readFromDOMSoon(),n.composing.done=!0)}),Ia(o,"touchstart",function(){return i.forceCompositionEnd()}),Ia(o,"input",function(){n.composing||n.readFromDOMSoon()}),Ia(o,"copy",e),Ia(o,"cut",e)},Rs.prototype.prepareSelection=function(){var t=An(this.cm,!1);return t.focus=this.cm.state.focused,t},Rs.prototype.showSelection=function(t,e){t&&this.cm.display.view.length&&((t.focus||e)&&this.showPrimarySelection(),this.showMultipleSelections(t))},Rs.prototype.showPrimarySelection=function(){var t=window.getSelection(),e=this.cm,n=e.doc.sel.primary(),i=n.from(),r=n.to();if(e.display.viewTo==e.display.viewFrom||i.line>=e.display.viewTo||r.line<e.display.viewFrom)return void t.removeAllRanges();var o=Go(e,t.anchorNode,t.anchorOffset),a=Go(e,t.focusNode,t.focusOffset);if(!o||o.bad||!a||a.bad||0!=I(F(o,a),i)||0!=I(V(o,a),r)){var s=e.display.view,l=i.line>=e.display.viewFrom&&Vo(e,i)||{node:s[0].measure.map[2],offset:0},c=r.line<e.display.viewTo&&Vo(e,r);if(!c){var u=s[s.length-1].measure,h=u.maps?u.maps[u.maps.length-1]:u.map;c={node:h[h.length-1],offset:h[h.length-2]-h[h.length-3]}}if(!l||!c)return void t.removeAllRanges();var d,f=t.rangeCount&&t.getRangeAt(0);try{d=ga(l.node,l.offset,c.offset,c.node)}catch(t){}d&&(!Yo&&e.state.focused?(t.collapse(l.node,l.offset),d.collapsed||(t.removeAllRanges(),t.addRange(d))):(t.removeAllRanges(),t.addRange(d)),f&&null==t.anchorNode?t.addRange(f):Yo&&this.startGracePeriod()),this.rememberSelection()}},Rs.prototype.startGracePeriod=function(){var t=this;clearTimeout(this.gracePeriod),this.gracePeriod=setTimeout(function(){t.gracePeriod=!1,t.selectionChanged()&&t.cm.operation(function(){return t.cm.curOp.selectionChanged=!0})},20)},Rs.prototype.showMultipleSelections=function(t){n(this.cm.display.cursorDiv,t.cursors),n(this.cm.display.selectionDiv,t.selection)},Rs.prototype.rememberSelection=function(){var t=window.getSelection();this.lastAnchorNode=t.anchorNode,this.lastAnchorOffset=t.anchorOffset,this.lastFocusNode=t.focusNode,this.lastFocusOffset=t.focusOffset},Rs.prototype.selectionInEditor=function(){var t=window.getSelection();if(!t.rangeCount)return!1;var e=t.getRangeAt(0).commonAncestorContainer;return o(this.div,e)},Rs.prototype.focus=function(){"nocursor"!=this.cm.options.readOnly&&(this.selectionInEditor()||this.showSelection(this.prepareSelection(),!0),this.div.focus())},Rs.prototype.blur=function(){this.div.blur()},Rs.prototype.getField=function(){return this.div},Rs.prototype.supportsTouch=function(){return!0},Rs.prototype.receivedFocus=function(){function t(){e.cm.state.focused&&(e.pollSelection(),e.polling.set(e.cm.options.pollInterval,t))}var e=this;this.selectionInEditor()?this.pollSelection():ui(this.cm,function(){return e.cm.curOp.selectionChanged=!0}),this.polling.set(this.cm.options.pollInterval,t)},Rs.prototype.selectionChanged=function(){var t=window.getSelection();return t.anchorNode!=this.lastAnchorNode||t.anchorOffset!=this.lastAnchorOffset||t.focusNode!=this.lastFocusNode||t.focusOffset!=this.lastFocusOffset},Rs.prototype.pollSelection=function(){if(null==this.readDOMTimeout&&!this.gracePeriod&&this.selectionChanged()){var t=window.getSelection(),e=this.cm;if(ca&&ia&&this.cm.options.gutters.length&&Fo(t.anchorNode))return this.cm.triggerOnKeyDown({type:"keydown",keyCode:8,preventDefault:Math.abs}),this.blur(),void this.focus();if(!this.composing){this.rememberSelection();var n=Go(e,t.anchorNode,t.anchorOffset),i=Go(e,t.focusNode,t.focusOffset);n&&i&&ui(e,function(){dr(e.doc,Ni(n,i),Ta),(n.bad||i.bad)&&(e.curOp.selectionChanged=!0)})}}},Rs.prototype.pollContent=function(){null!=this.readDOMTimeout&&(clearTimeout(this.readDOMTimeout),this.readDOMTimeout=null);var t=this.cm,e=t.display,n=t.doc.sel.primary(),i=n.from(),r=n.to();if(0==i.ch&&i.line>t.firstLine()&&(i=D(i.line-1,A(t.doc,i.line-1).length)),r.ch==A(t.doc,r.line).text.length&&r.line<t.lastLine()&&(r=D(r.line+1,0)),i.line<e.viewFrom||r.line>e.viewTo-1)return!1;var o,a,s;i.line==e.viewFrom||0==(o=Tn(t,i.line))?(a=P(e.view[0].line),s=e.view[0].node):(a=P(e.view[o].line),s=e.view[o-1].node.nextSibling);var l,c,u=Tn(t,r.line);if(u==e.view.length-1?(l=e.viewTo-1,c=e.lineDiv.lastChild):(l=P(e.view[u+1].line)-1,c=e.view[u+1].node.previousSibling),!s)return!1;for(var h=t.doc.splitLines(qo(t,s,c,a,l)),d=M(t.doc,D(a,0),D(l,A(t.doc,l).text.length));h.length>1&&d.length>1;)if(g(h)==g(d))h.pop(),d.pop(),l--;else{if(h[0]!=d[0])break;h.shift(),d.shift(),a++}for(var f=0,p=0,m=h[0],v=d[0],y=Math.min(m.length,v.length);f<y&&m.charCodeAt(f)==v.charCodeAt(f);)++f;for(var x=g(h),b=g(d),_=Math.min(x.length-(1==h.length?f:0),b.length-(1==d.length?f:0));p<_&&x.charCodeAt(x.length-p-1)==b.charCodeAt(b.length-p-1);)++p;if(1==h.length&&1==d.length&&a==i.line)for(;f&&f>i.ch&&x.charCodeAt(x.length-p-1)==b.charCodeAt(b.length-p-1);)f--,p++;h[h.length-1]=x.slice(0,x.length-p).replace(/^\u200b+/,""),h[0]=h[0].slice(f).replace(/\u200b+$/,"");var w=D(a,f),S=D(l,d.length?g(d).length-p:0);return h.length>1||h[0]||I(w,S)?(Mr(t.doc,h,w,S,"+input"),!0):void 0},Rs.prototype.ensurePolled=function(){this.forceCompositionEnd()},Rs.prototype.reset=function(){this.forceCompositionEnd()},Rs.prototype.forceCompositionEnd=function(){this.composing&&(clearTimeout(this.readDOMTimeout),this.composing=null,this.updateFromDOM(),this.div.blur(),this.div.focus())},Rs.prototype.readFromDOMSoon=function(){var t=this;null==this.readDOMTimeout&&(this.readDOMTimeout=setTimeout(function(){if(t.readDOMTimeout=null,t.composing){if(!t.composing.done)return;t.composing=null}t.updateFromDOM()},80))},Rs.prototype.updateFromDOM=function(){var t=this;!this.cm.isReadOnly()&&this.pollContent()||ui(this.cm,function(){return pi(t.cm)})},Rs.prototype.setUneditable=function(t){t.contentEditable="false"},Rs.prototype.onKeyPress=function(t){0!=t.charCode&&(t.preventDefault(),this.cm.isReadOnly()||hi(this.cm,Po)(this.cm,String.fromCharCode(null==t.charCode?t.keyCode:t.charCode),0))},Rs.prototype.readOnlyChanged=function(t){this.div.contentEditable=String("nocursor"!=t)},Rs.prototype.onContextMenu=function(){},Rs.prototype.resetPosition=function(){},Rs.prototype.needsContentAttribute=!0;var Ds=function(t){this.cm=t,this.prevInput="",this.pollingFast=!1,this.polling=new ba,this.inaccurateSelection=!1,this.hasSelection=!1,this.composing=null};Ds.prototype.init=function(t){function e(t){if(!Pt(r,t)){if(r.somethingSelected())Eo({lineWise:!1,text:r.getSelections()}),i.inaccurateSelection&&(i.prevInput="",i.inaccurateSelection=!1,a.value=Ns.text.join("\n"),xa(a));else{if(!r.options.lineWiseCopyCut)return;var e=Ro(r);Eo({lineWise:!0,text:e.text}),"cut"==t.type?r.setSelections(e.ranges,null,Ta):(i.prevInput="",a.value=e.text.join("\n"),xa(a))}"cut"==t.type&&(r.state.cutIncoming=!0)}}var n=this,i=this,r=this.cm,o=this.wrapper=Io(),a=this.textarea=o.firstChild;t.wrapper.insertBefore(o,t.wrapper.firstChild),la&&(a.style.width="0px"),Ia(a,"input",function(){Jo&&ta>=9&&n.hasSelection&&(n.hasSelection=null),i.poll()}),Ia(a,"paste",function(t){Pt(r,t)||No(t,r)||(r.state.pasteIncoming=!0,i.fastPoll())}),Ia(a,"cut",e),Ia(a,"copy",e),Ia(t.scroller,"paste",function(e){He(t,e)||Pt(r,e)||(r.state.pasteIncoming=!0,i.focus())}),Ia(t.lineSpace,"selectstart",function(e){He(t,e)||Dt(e)}),Ia(a,"compositionstart",function(){var t=r.getCursor("from");i.composing&&i.composing.range.clear(),i.composing={start:t,range:r.markText(t,r.getCursor("to"),{className:"CodeMirror-composing"})}}),Ia(a,"compositionend",function(){i.composing&&(i.poll(),i.composing.range.clear(),i.composing=null)})},Ds.prototype.prepareSelection=function(){var t=this.cm,e=t.display,n=t.doc,i=An(t);if(t.options.moveInputWithCursor){var r=hn(t,n.sel.primary().head,"div"),o=e.wrapper.getBoundingClientRect(),a=e.lineDiv.getBoundingClientRect();i.teTop=Math.max(0,Math.min(e.wrapper.clientHeight-10,r.top+a.top-o.top)),i.teLeft=Math.max(0,Math.min(e.wrapper.clientWidth-10,r.left+a.left-o.left))}return i},Ds.prototype.showSelection=function(t){var e=this.cm,i=e.display;n(i.cursorDiv,t.cursors),n(i.selectionDiv,t.selection),null!=t.teTop&&(this.wrapper.style.top=t.teTop+"px",this.wrapper.style.left=t.teLeft+"px")},Ds.prototype.reset=function(t){if(!this.contextMenuPending){var e,n,i=this.cm,r=i.doc;if(i.somethingSelected()){this.prevInput="";var o=r.sel.primary();e=Fa&&(o.to().line-o.from().line>100||(n=i.getSelection()).length>1e3);var a=e?"-":n||i.getSelection();this.textarea.value=a,i.state.focused&&xa(this.textarea),Jo&&ta>=9&&(this.hasSelection=a)}else t||(this.prevInput=this.textarea.value="",Jo&&ta>=9&&(this.hasSelection=null));this.inaccurateSelection=e}},Ds.prototype.getField=function(){return this.textarea},Ds.prototype.supportsTouch=function(){return!1},Ds.prototype.focus=function(){if("nocursor"!=this.cm.options.readOnly&&(!ua||a()!=this.textarea))try{this.textarea.focus()}catch(t){}},Ds.prototype.blur=function(){this.textarea.blur()},Ds.prototype.resetPosition=function(){this.wrapper.style.top=this.wrapper.style.left=0},Ds.prototype.receivedFocus=function(){this.slowPoll()},Ds.prototype.slowPoll=function(){var t=this;this.pollingFast||this.polling.set(this.cm.options.pollInterval,function(){t.poll(),t.cm.state.focused&&t.slowPoll()})},Ds.prototype.fastPoll=function(){function t(){var i=n.poll();i||e?(n.pollingFast=!1,n.slowPoll()):(e=!0,n.polling.set(60,t))}var e=!1,n=this;n.pollingFast=!0,n.polling.set(20,t)},Ds.prototype.poll=function(){var t=this,e=this.cm,n=this.textarea,i=this.prevInput;if(this.contextMenuPending||!e.state.focused||Va(n)&&!i&&!this.composing||e.isReadOnly()||e.options.disableInput||e.state.keySeq)return!1;var r=n.value;if(r==i&&!e.somethingSelected())return!1;if(Jo&&ta>=9&&this.hasSelection===r||ha&&/[\uf700-\uf7ff]/.test(r))return e.display.input.reset(),!1;if(e.doc.sel==e.display.selForContextMenu){var o=r.charCodeAt(0);if(8203!=o||i||(i="​"),8666==o)return this.reset(),this.cm.execCommand("undo")}for(var a=0,s=Math.min(i.length,r.length);a<s&&i.charCodeAt(a)==r.charCodeAt(a);)++a;return ui(e,function(){Po(e,r.slice(a),i.length-a,null,t.composing?"*compose":null),
-r.length>1e3||r.indexOf("\n")>-1?n.value=t.prevInput="":t.prevInput=r,t.composing&&(t.composing.range.clear(),t.composing.range=e.markText(t.composing.start,e.getCursor("to"),{className:"CodeMirror-composing"}))}),!0},Ds.prototype.ensurePolled=function(){this.pollingFast&&this.poll()&&(this.pollingFast=!1)},Ds.prototype.onKeyPress=function(){Jo&&ta>=9&&(this.hasSelection=null),this.fastPoll()},Ds.prototype.onContextMenu=function(t){function e(){if(null!=a.selectionStart){var t=r.somethingSelected(),e="​"+(t?a.value:"");a.value="⇚",a.value=e,i.prevInput=t?"":"​",a.selectionStart=1,a.selectionEnd=e.length,o.selForContextMenu=r.doc.sel}}function n(){if(i.contextMenuPending=!1,i.wrapper.style.cssText=h,a.style.cssText=u,Jo&&ta<9&&o.scrollbars.setScrollTop(o.scroller.scrollTop=l),null!=a.selectionStart){(!Jo||Jo&&ta<9)&&e();var t=0,n=function(){o.selForContextMenu==r.doc.sel&&0==a.selectionStart&&a.selectionEnd>0&&"​"==i.prevInput?hi(r,br)(r):t++<10?o.detectingSelectAll=setTimeout(n,500):(o.selForContextMenu=null,o.input.reset())};o.detectingSelectAll=setTimeout(n,200)}}var i=this,r=i.cm,o=r.display,a=i.textarea,s=Cn(r,t),l=o.scroller.scrollTop;if(s&&!ra){var c=r.options.resetSelectionOnContextMenu;c&&r.doc.sel.contains(s)==-1&&hi(r,dr)(r.doc,Ni(s),Ta);var u=a.style.cssText,h=i.wrapper.style.cssText;i.wrapper.style.cssText="position: absolute";var d=i.wrapper.getBoundingClientRect();a.style.cssText="position: absolute; width: 30px; height: 30px;\n      top: "+(t.clientY-d.top-5)+"px; left: "+(t.clientX-d.left-5)+"px;\n      z-index: 1000; background: "+(Jo?"rgba(255, 255, 255, .05)":"transparent")+";\n      outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);";var f;if(ea&&(f=window.scrollY),o.input.focus(),ea&&window.scrollTo(null,f),o.input.reset(),r.somethingSelected()||(a.value=i.prevInput=" "),i.contextMenuPending=!0,o.selForContextMenu=r.doc.sel,clearTimeout(o.detectingSelectAll),Jo&&ta>=9&&e(),va){Ht(t);var p=function(){Lt(window,"mouseup",p),setTimeout(n,20)};Ia(window,"mouseup",p)}else setTimeout(n,50)}},Ds.prototype.readOnlyChanged=function(t){t||this.reset()},Ds.prototype.setUneditable=function(){},Ds.prototype.needsContentAttribute=!1,So(Ao),Os(Ao);var Is="iter insert remove copy getEditor constructor".split(" ");for(var js in gs.prototype)gs.prototype.hasOwnProperty(js)&&d(Is,js)<0&&(Ao.prototype[js]=function(t){return function(){return t.apply(this.doc,arguments)}}(gs.prototype[js]));return Rt(gs),Ao.inputStyles={textarea:Ds,contenteditable:Rs},Ao.defineMode=function(t){Ao.defaults.mode||"null"==t||(Ao.defaults.mode=t),Bt.apply(this,arguments)},Ao.defineMIME=$t,Ao.defineMode("null",function(){return{token:function(t){return t.skipToEnd()}}}),Ao.defineMIME("text/plain","null"),Ao.defineExtension=function(t,e){Ao.prototype[t]=e},Ao.defineDocExtension=function(t,e){gs.prototype[t]=e},Ao.fromTextArea=$o,Wo(Ao),Ao.version="5.25.2",Ao}),define("answer",["jquery","laconic"],function(){!function($){function answerHasOutput(t){return t.variables.length>0||t.residuals}function renderSubstitutions(t,e){e.push(', <span class="pl-comment">% where</span><br/>');for(var n=0;n<t.length;n++)e.push('<span class="where-binding">',"<span class='pl-var'>",t[n].var+"</span> = ",t[n].value,"</span>"),n<t.length-1&&e.push(",<br/>")}function renderAnswer(t){for(var e=[],n=t.variables,i=0;i<n.length;i++){for(var r=n[i].variables,o=0;o<r.length-1;o++)e.push("<span class='pl-ovar'>",r[o],"</span> = ","<span class='pl-var'>",r[o+1],"</span>, ");e.push("<span class='pl-ovar'>",r[r.length-1],"</span> = ",n[i].value),n[i].substitutions&&renderSubstitutions(n[i].substitutions,e),(i<n.length-1||t.residuals)&&e.push(",<br/>")}var a;if(a=t.residuals)for(var i=0;i<a.length;i++)e.push(a[i]),i<a.length-1&&e.push(",<br/>");return e.join("")}function renderTabledAnswer(t,e){function n(e){for(var n=t.variables,i=0;i<n.length;i++)for(var r=n[i].variables,o=0;o<r.length;o++)if(r[o]==e)return n[i];return null}function i(){0==e.find("tr.projection th.residuals").length&&($("<th class='residuals'>Residual goals</th>").insertBefore(e.find("tr.projection th.answer-nth")),$("<td></td>").insertBefore(e.find("tr td.answer-nth")))}for(var r=[],o=0;o<t.projection.length;o++){var a=t.projection[o],s=n(a);r.push("<td>"),s?(r.push(s.value),s.substitutions&&renderSubstitutions(s.substitutions,r)):r.push("<span class='pl-var'>",a,"</span>"),r.push("</td>")}var l;if(l=t.residuals){i(),r.push("<td>");for(var o=0;o<l.length;o++)r.push(l[o]),o<l.length-1&&r.push(",<br/>");r.push("</td>")}return t.nth&&r.push("<td class='answer-nth'>",t.nth,"</td>"),r.join("")}function evalScripts(elem){elem.find("script").each(function(){var type=this.getAttribute("type")||"text/javascript";"text/javascript"==type&&($.ajaxScript=$(this),eval(this.textContent))}),$.ajaxScript&&delete $.ajaxScript}var pluginName="prologAnswer",methods={_init:function(t){return this.each(function(){var e=$(this);if(answerHasOutput(t))if(e.is("table")){var n=$.el.tr();e.append(n),n.innerHTML=renderTabledAnswer(t,e),evalScripts($(n)),$(n).find(".render-multi").renderMulti()}else e[0].innerHTML=renderAnswer(t),evalScripts(e),e.find(".render-multi").renderMulti();else e.append($.el.span({class:"prolog-true"},"true"))})}};$.fn.prologAnswer=function(t){return methods[t]?methods[t].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof t&&t?void $.error("Method "+t+" does not exist on jQuery."+pluginName):methods._init.apply(this,arguments)}}(jQuery),function(t){function e(){var e=t("#render-select");return e[0]||(e=t(t.el.form({id:"render-select",style:"display:none"})),e.on("click","a",function(n){var i=t(n.target).closest("a"),r=i.data("nr");return e.data("target").renderMulti(i.data("action"),r),!1}),e.on("click",function(){var n=t("input[name=render]:checked",t(this)).val();e.data("target").renderMulti("select",parseInt(n))}),e.hover(function(){l=!0,i()},function(){r()}),t("body").append(e)),e}function n(){if(!l){var t=e(),n=t.data("target");n&&(n.removeClass("render-selecting"),t.data("target",null)),t.hide(400)}}function i(){s=setTimeout(function(){n()},400)}function r(){l=!1,i()}function o(e){var n=e.originalEvent.dataTransfer;return n.setData("Text",t(e.target).renderMulti("prologText")),!0}var a="renderMulti",s=0,l=!1,c={_init:function(e){return this.each(function(){var e=t(this),n={current:0},i=[],r=t.el.div({class:"render-multi-active"}),s=0;e.children().each(function(){var n=t(this).css("display");i.push(n),0==s++?(e.css("display",n),t(this).attr("draggable",!1)):t(this).hide()}),n.display=i,e.append(r),t(r).hover(function(t){e.renderMulti("showSelect",t)},function(t){e.renderMulti("hideSelect",t)}),e.attr("draggable",!0).bind("dragstart",o),e.data(a,n)})},selectMenu:function(){function e(t,e){var n,i;return"Prolog term"==e?(n="Copy",i="copy"):(n="Download",i="download"),btn='<a href="#" class="btn btn-style btn-sm" data-nr="'+t+'" data-action="'+i+'" title="'+n+'"><span class="glyphicon glyphicon-'+i+'"></span></a>',btn}for(var n=this.data(a),i=["<label>View as</label><br>"],r=this.children(),o=0,o=0;o<n.display.length;o++){var s=t(r[o]),l=s.attr("data-render");l||(l=0==o?"Default rendered":"Alt rendered ["+(o+1)+"]"),i.push("<div class='render-item'>",e(o,l),"<input type='radio' name='render' value='",o,"'"),o==n.current&&i.push(" checked"),i.push("> ",l,"</div>")}return i.push("</form"),i.join("")},showSelect:function(t){var n,i=this,r=e(),o=this.offset();l=!0,s&&(clearTimeout(s),s=0),(n=r.data("target"))&&n.removeClass("render-selecting"),r.data("target",i),r.html(this.renderMulti("selectMenu")),r.css({top:o.top+5+"px",left:o.left+5+"px"}).show(400),this.addClass("render-selecting")},hideSelect:function(t){r()},select:function(e){var i=this.data(a);if(i.current!=e){var r=this.children(),o=i.display[e];t(r[i.current]).hide(400),t(r[e]).show(400,function(){t(this).css("display",o)}),this.css("display",o),t(r[e]).is("span.render-as-prolog")?this.attr("draggable",!1):this.attr("draggable",!0),i.current=e}n()},copy:function(t){function e(t){var e=document.createRange();e.selectNodeContents(t);var n=window.getSelection();n.removeAllRanges(),n.addRange(e)}var n=this.children(),i=this.data(a),r=i.current;this.renderMulti("select",t),e(n[t]);try{document.execCommand("copy")}catch(t){alert("Sorry, cannot copy text with this browser")}return this.renderMulti("select",r),this},download:function(e){function n(){return void 0!=t("<a>")[0].download}var i,r=this.children(),o=t(r[e]),a="html";if(o.hasClass("export-dom")){var s={};o=o.trigger("export-dom",s),s.element?(i=s.element.outerHTML,a=s.extension||"html",type=s.contentType||"text/html"):alert("Failed to export rendered result")}else if(1==o.find("svg").length){var l=o.find("svg");l.attr("xmlns")||l.attr("xmlns","http://www.w3.org/2000/svg"),i=l[0].outerHTML,a="svg",type="image/svg+xml"}else i=o.html(),type="text/html";n()||(type="application/octet-stream");var c="data:"+type+";charset=UTF-8,"+encodeURIComponent(i),u=t.el.a({href:c,download:"swish-rendered."+a});return this.append(u),u.click(),t(u).remove(),this},prologText:function(){return this.find("span.render-as-prolog").text()}};t.fn.renderMulti=function(e){return c[e]?c[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery."+a):c._init.apply(this,arguments)}}(jQuery)}),function(t,e,n){!function(t){"function"==typeof define&&define.amd?define("sparkline",["jquery"],t):jQuery&&!jQuery.fn.sparkline&&t(jQuery)}(function(i){"use strict";var r,o,a,s,l,c,u,h,d,f,p,g,m,v,y,x,b,_,w,S,C,T,k,A,M,L,E,P,N,O,R,D,I={},j=0;r=function(){return{common:{type:"line",lineColor:"#00f",fillColor:"#cdf",defaultPixelsPerValue:3,width:"auto",height:"auto",composite:!1,tagValuesAttribute:"values",tagOptionsPrefix:"spark",enableTagOptions:!1,enableHighlight:!0,highlightLighten:1.4,tooltipSkipNull:!0,tooltipPrefix:"",tooltipSuffix:"",disableHiddenCheck:!1,numberFormatter:!1,numberDigitGroupCount:3,numberDigitGroupSep:",",numberDecimalMark:".",disableTooltips:!1,disableInteraction:!1},line:{spotColor:"#f80",highlightSpotColor:"#5f5",highlightLineColor:"#f22",spotRadius:1.5,minSpotColor:"#f80",maxSpotColor:"#f80",lineWidth:1,normalRangeMin:n,normalRangeMax:n,normalRangeColor:"#ccc",drawNormalOnTop:!1,chartRangeMin:n,chartRangeMax:n,chartRangeMinX:n,chartRangeMaxX:n,tooltipFormat:new a('<span style="color: {{color}}">&#9679;</span> {{prefix}}{{y}}{{suffix}}')},bar:{barColor:"#3366cc",negBarColor:"#f44",stackedBarColor:["#3366cc","#dc3912","#ff9900","#109618","#66aa00","#dd4477","#0099c6","#990099"],zeroColor:n,nullColor:n,zeroAxis:!0,barWidth:4,barSpacing:1,chartRangeMax:n,chartRangeMin:n,chartRangeClip:!1,colorMap:n,tooltipFormat:new a('<span style="color: {{color}}">&#9679;</span> {{prefix}}{{value}}{{suffix}}')},tristate:{barWidth:4,barSpacing:1,posBarColor:"#6f6",negBarColor:"#f44",zeroBarColor:"#999",colorMap:{},tooltipFormat:new a('<span style="color: {{color}}">&#9679;</span> {{value:map}}'),tooltipValueLookups:{map:{"-1":"Loss",0:"Draw",1:"Win"}}},discrete:{lineHeight:"auto",thresholdColor:n,thresholdValue:0,chartRangeMax:n,chartRangeMin:n,chartRangeClip:!1,tooltipFormat:new a("{{prefix}}{{value}}{{suffix}}")},bullet:{targetColor:"#f33",targetWidth:3,performanceColor:"#33f",rangeColors:["#d3dafe","#a8b6ff","#7f94ff"],base:n,tooltipFormat:new a("{{fieldkey:fields}} - {{value}}"),tooltipValueLookups:{fields:{r:"Range",p:"Performance",t:"Target"}}},pie:{offset:0,sliceColors:["#3366cc","#dc3912","#ff9900","#109618","#66aa00","#dd4477","#0099c6","#990099"],borderWidth:0,borderColor:"#000",tooltipFormat:new a('<span style="color: {{color}}">&#9679;</span> {{value}} ({{percent.1}}%)')},box:{raw:!1,boxLineColor:"#000",boxFillColor:"#cdf",whiskerColor:"#000",outlierLineColor:"#333",outlierFillColor:"#fff",medianColor:"#f00",showOutliers:!0,outlierIQR:1.5,spotRadius:1.5,target:n,targetColor:"#4a2",chartRangeMax:n,chartRangeMin:n,tooltipFormat:new a("{{field:fields}}: {{value}}"),tooltipFormatFieldlistKey:"field",tooltipValueLookups:{fields:{lq:"Lower Quartile",med:"Median",uq:"Upper Quartile",lo:"Left Outlier",ro:"Right Outlier",lw:"Left Whisker",rw:"Right Whisker"}}}}},L='.jqstooltip { position: absolute;left: 0px;top: 0px;visibility: hidden;background: rgb(0, 0, 0) transparent;background-color: rgba(0,0,0,0.6);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)";color: white;font: 10px arial, san serif;text-align: left;white-space: nowrap;padding: 5px;border: 1px solid white;z-index: 10000;}.jqsfield { color: white;font: 10px arial, san serif;text-align: left;}',o=function(){var t,e;return t=function(){this.init.apply(this,arguments)},arguments.length>1?(arguments[0]?(t.prototype=i.extend(new arguments[0],arguments[arguments.length-1]),t._super=arguments[0].prototype):t.prototype=arguments[arguments.length-1],arguments.length>2&&(e=Array.prototype.slice.call(arguments,1,-1),e.unshift(t.prototype),i.extend.apply(i,e))):t.prototype=arguments[0],t.prototype.cls=t,t},i.SPFormatClass=a=o({fre:/\{\{([\w.]+?)(:(.+?))?\}\}/g,precre:/(\w+)\.(\d+)/,init:function(t,e){this.format=t,this.fclass=e},render:function(t,e,i){var r,o,a,s,l,c=this,u=t;return this.format.replace(this.fre,function(){var t;return o=arguments[1],a=arguments[3],r=c.precre.exec(o),r?(l=r[2],o=r[1]):l=!1,s=u[o],s===n?"":a&&e&&e[a]?(t=e[a],t.get?e[a].get(s)||s:e[a][s]||s):(d(s)&&(s=i.get("numberFormatter")?i.get("numberFormatter")(s):v(s,l,i.get("numberDigitGroupCount"),i.get("numberDigitGroupSep"),i.get("numberDecimalMark"))),s)})}}),i.spformat=function(t,e){return new a(t,e)},s=function(t,e,n){return t<e?e:t>n?n:t},l=function(t,n){var i;return 2===n?(i=e.floor(t.length/2),t.length%2?t[i]:(t[i-1]+t[i])/2):t.length%2?(i=(t.length*n+n)/4,i%1?(t[e.floor(i)]+t[e.floor(i)-1])/2:t[i-1]):(i=(t.length*n+2)/4,i%1?(t[e.floor(i)]+t[e.floor(i)-1])/2:t[i-1])},c=function(t){var e;switch(t){case"undefined":t=n;break;case"null":t=null;break;case"true":t=!0;break;case"false":t=!1;break;default:e=parseFloat(t),t==e&&(t=e)}return t},u=function(t){var e,n=[];for(e=t.length;e--;)n[e]=c(t[e]);return n},h=function(t,e){var n,i,r=[];for(n=0,i=t.length;n<i;n++)t[n]!==e&&r.push(t[n]);return r},d=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},v=function(t,e,n,r,o){var a,s;for(t=(e===!1?parseFloat(t).toString():t.toFixed(e)).split(""),a=(a=i.inArray(".",t))<0?t.length:a,a<t.length&&(t[a]=o),s=a-n;s>0;s-=n)t.splice(s,0,r);return t.join("")},f=function(t,e,n){var i;for(i=e.length;i--;)if((!n||null!==e[i])&&e[i]!==t)return!1;return!0},p=function(t){var e,n=0;for(e=t.length;e--;)n+="number"==typeof t[e]?t[e]:0;return n},m=function(t){return i.isArray(t)?t:[t]},g=function(e){var n;t.createStyleSheet?t.createStyleSheet().cssText=e:(n=t.createElement("style"),n.type="text/css",t.getElementsByTagName("head")[0].appendChild(n),n["string"==typeof t.body.style.WebkitAppearance?"innerText":"innerHTML"]=e)},i.fn.simpledraw=function(e,r,o,a){var s,l;if(o&&(s=this.data("_jqs_vcanvas")))return s;if(i.fn.sparkline.canvas===!1)return!1;if(i.fn.sparkline.canvas===n){var c=t.createElement("canvas");if(c.getContext&&c.getContext("2d"))i.fn.sparkline.canvas=function(t,e,n,i){return new O(t,e,n,i)};else{if(!t.namespaces||t.namespaces.v)return i.fn.sparkline.canvas=!1,!1;t.namespaces.add("v","urn:schemas-microsoft-com:vml","#default#VML"),i.fn.sparkline.canvas=function(t,e,n,i){return new R(t,e,n)}}}return e===n&&(e=i(this).innerWidth()),r===n&&(r=i(this).innerHeight()),s=i.fn.sparkline.canvas(e,r,this,a),l=i(this).data("_jqs_mhandler"),l&&l.registerCanvas(s),s},i.fn.cleardraw=function(){var t=this.data("_jqs_vcanvas");t&&t.reset()},i.RangeMapClass=y=o({init:function(t){var e,n,i=[];for(e in t)t.hasOwnProperty(e)&&"string"==typeof e&&e.indexOf(":")>-1&&(n=e.split(":"),n[0]=0===n[0].length?-(1/0):parseFloat(n[0]),n[1]=0===n[1].length?1/0:parseFloat(n[1]),n[2]=t[e],i.push(n));this.map=t,this.rangelist=i||!1},get:function(t){var e,i,r,o=this.rangelist;if((r=this.map[t])!==n)return r;if(o)for(e=o.length;e--;)if(i=o[e],i[0]<=t&&i[1]>=t)return i[2];return n}}),i.range_map=function(t){return new y(t)},x=o({init:function(t,e){var n=i(t);this.$el=n,this.options=e,this.currentPageX=0,this.currentPageY=0,this.el=t,this.splist=[],this.tooltip=null,this.over=!1,this.displayTooltips=!e.get("disableTooltips"),this.highlightEnabled=!e.get("disableHighlight")},registerSparkline:function(t){this.splist.push(t),this.over&&this.updateDisplay()},registerCanvas:function(t){var e=i(t.canvas);this.canvas=t,this.$canvas=e,e.mouseenter(i.proxy(this.mouseenter,this)),e.mouseleave(i.proxy(this.mouseleave,this)),e.click(i.proxy(this.mouseclick,this))},reset:function(t){this.splist=[],this.tooltip&&t&&(this.tooltip.remove(),this.tooltip=n)},mouseclick:function(t){var e=i.Event("sparklineClick");e.originalEvent=t,e.sparklines=this.splist,this.$el.trigger(e)},mouseenter:function(e){i(t.body).unbind("mousemove.jqs"),i(t.body).bind("mousemove.jqs",i.proxy(this.mousemove,this)),this.over=!0,this.currentPageX=e.pageX,this.currentPageY=e.pageY,this.currentEl=e.target,!this.tooltip&&this.displayTooltips&&(this.tooltip=new b(this.options),this.tooltip.updatePosition(e.pageX,e.pageY)),this.updateDisplay()},mouseleave:function(){i(t.body).unbind("mousemove.jqs");var e,n,r=this.splist,o=r.length,a=!1;for(this.over=!1,this.currentEl=null,this.tooltip&&(this.tooltip.remove(),this.tooltip=null),n=0;n<o;n++)e=r[n],e.clearRegionHighlight()&&(a=!0);a&&this.canvas.render()},mousemove:function(t){this.currentPageX=t.pageX,this.currentPageY=t.pageY,this.currentEl=t.target,this.tooltip&&this.tooltip.updatePosition(t.pageX,t.pageY),this.updateDisplay()},updateDisplay:function(){var t,e,n,r,o,a=this.splist,s=a.length,l=!1,c=this.$canvas.offset(),u=this.currentPageX-c.left,h=this.currentPageY-c.top;if(this.over){for(n=0;n<s;n++)e=a[n],r=e.setRegionHighlight(this.currentEl,u,h),r&&(l=!0);if(l){if(o=i.Event("sparklineRegionChange"),o.sparklines=this.splist,this.$el.trigger(o),this.tooltip){for(t="",n=0;n<s;n++)e=a[n],t+=e.getCurrentRegionTooltip();this.tooltip.setContent(t)}this.disableHighlight||this.canvas.render()}null===r&&this.mouseleave()}}}),b=o({sizeStyle:"position: static !important;display: block !important;visibility: hidden !important;float: left !important;",init:function(e){var n,r=e.get("tooltipClassname","jqstooltip"),o=this.sizeStyle;this.container=e.get("tooltipContainer")||t.body,this.tooltipOffsetX=e.get("tooltipOffsetX",10),this.tooltipOffsetY=e.get("tooltipOffsetY",12),i("#jqssizetip").remove(),i("#jqstooltip").remove(),this.sizetip=i("<div/>",{id:"jqssizetip",style:o,class:r}),this.tooltip=i("<div/>",{id:"jqstooltip",class:r}).appendTo(this.container),n=this.tooltip.offset(),this.offsetLeft=n.left,this.offsetTop=n.top,this.hidden=!0,i(window).unbind("resize.jqs scroll.jqs"),i(window).bind("resize.jqs scroll.jqs",i.proxy(this.updateWindowDims,this)),this.updateWindowDims()},updateWindowDims:function(){this.scrollTop=i(window).scrollTop(),this.scrollLeft=i(window).scrollLeft(),this.scrollRight=this.scrollLeft+i(window).width(),this.updatePosition()},getSize:function(t){this.sizetip.html(t).appendTo(this.container),this.width=this.sizetip.width()+1,this.height=this.sizetip.height(),this.sizetip.remove()},setContent:function(t){return t?(this.getSize(t),this.tooltip.html(t).css({width:this.width,height:this.height,visibility:"visible"}),void(this.hidden&&(this.hidden=!1,this.updatePosition()))):(this.tooltip.css("visibility","hidden"),void(this.hidden=!0))},updatePosition:function(t,e){if(t===n){if(this.mousex===n)return;t=this.mousex-this.offsetLeft,e=this.mousey-this.offsetTop}else this.mousex=t-=this.offsetLeft,this.mousey=e-=this.offsetTop;this.height&&this.width&&!this.hidden&&(e-=this.height+this.tooltipOffsetY,t+=this.tooltipOffsetX,e<this.scrollTop&&(e=this.scrollTop),t<this.scrollLeft?t=this.scrollLeft:t+this.width>this.scrollRight&&(t=this.scrollRight-this.width),this.tooltip.css({left:t,top:e}))},remove:function(){this.tooltip.remove(),this.sizetip.remove(),this.sizetip=this.tooltip=n,i(window).unbind("resize.jqs scroll.jqs")}}),E=function(){g(L)},i(E),D=[],i.fn.sparkline=function(e,r){return this.each(function(){var o,a,s=new i.fn.sparkline.options(this,r),l=i(this);if(o=function(){var r,o,a,c,u,h,d;return"html"===e||e===n?(d=this.getAttribute(s.get("tagValuesAttribute")),d!==n&&null!==d||(d=l.html()),r=d.replace(/(^\s*<!--)|(-->\s*$)|\s+/g,"").split(",")):r=e,o="auto"===s.get("width")?r.length*s.get("defaultPixelsPerValue"):s.get("width"),"auto"===s.get("height")?s.get("composite")&&i.data(this,"_jqs_vcanvas")||(c=t.createElement("span"),c.innerHTML="a",l.html(c),a=i(c).innerHeight()||i(c).height(),i(c).remove(),c=null):a=s.get("height"),s.get("disableInteraction")?u=!1:(u=i.data(this,"_jqs_mhandler"),u?s.get("composite")||u.reset():(u=new x(this,s),i.data(this,"_jqs_mhandler",u))),s.get("composite")&&!i.data(this,"_jqs_vcanvas")?void(i.data(this,"_jqs_errnotify")||(alert("Attempted to attach a composite sparkline to an element with no existing sparkline"),i.data(this,"_jqs_errnotify",!0))):(h=new(i.fn.sparkline[s.get("type")])(this,r,s,o,a),h.render(),void(u&&u.registerSparkline(h)))},i(this).html()&&!s.get("disableHiddenCheck")&&i(this).is(":hidden")||!i(this).parents("body").length){if(!s.get("composite")&&i.data(this,"_jqs_pending"))for(a=D.length;a;a--)D[a-1][0]==this&&D.splice(a-1,1);D.push([this,o]),i.data(this,"_jqs_pending",!0)}else o.call(this)})},i.fn.sparkline.defaults=r(),i.sparkline_display_visible=function(){var t,e,n,r=[];for(e=0,n=D.length;e<n;e++)t=D[e][0],i(t).is(":visible")&&!i(t).parents().is(":hidden")?(D[e][1].call(t),i.data(D[e][0],"_jqs_pending",!1),r.push(e)):i(t).closest("html").length||i.data(t,"_jqs_pending")||(i.data(D[e][0],"_jqs_pending",!1),r.push(e));for(e=r.length;e;e--)D.splice(r[e-1],1)},i.fn.sparkline.options=o({init:function(t,e){var n,r,o,a;this.userOptions=e=e||{},this.tag=t,this.tagValCache={},r=i.fn.sparkline.defaults,o=r.common,this.tagOptionsPrefix=e.enableTagOptions&&(e.tagOptionsPrefix||o.tagOptionsPrefix),a=this.getTagSetting("type"),n=a===I?r[e.type||o.type]:r[a],this.mergedOptions=i.extend({},o,n,e)},getTagSetting:function(t){var e,i,r,o,a=this.tagOptionsPrefix;if(a===!1||a===n)return I;if(this.tagValCache.hasOwnProperty(t))e=this.tagValCache.key;else{if(e=this.tag.getAttribute(a+t),e===n||null===e)e=I;else if("["===e.substr(0,1))for(e=e.substr(1,e.length-2).split(","),i=e.length;i--;)e[i]=c(e[i].replace(/(^\s*)|(\s*$)/g,""));else if("{"===e.substr(0,1))for(r=e.substr(1,e.length-2).split(","),e={},i=r.length;i--;)o=r[i].split(":",2),e[o[0].replace(/(^\s*)|(\s*$)/g,"")]=c(o[1].replace(/(^\s*)|(\s*$)/g,""));else e=c(e);this.tagValCache.key=e}return e},get:function(t,e){var i,r=this.getTagSetting(t);return r!==I?r:(i=this.mergedOptions[t])===n?e:i}}),i.fn.sparkline._base=o({disabled:!1,init:function(t,e,r,o,a){this.el=t,this.$el=i(t),this.values=e,this.options=r,this.width=o,this.height=a,this.currentRegion=n},initTarget:function(){var t=!this.options.get("disableInteraction");(this.target=this.$el.simpledraw(this.width,this.height,this.options.get("composite"),t))?(this.canvasWidth=this.target.pixelWidth,this.canvasHeight=this.target.pixelHeight):this.disabled=!0},render:function(){return!this.disabled||(this.el.innerHTML="",!1)},getRegion:function(t,e){},setRegionHighlight:function(t,e,i){var r,o=this.currentRegion,a=!this.options.get("disableHighlight");return e>this.canvasWidth||i>this.canvasHeight||e<0||i<0?null:(r=this.getRegion(t,e,i),o!==r&&(o!==n&&a&&this.removeHighlight(),this.currentRegion=r,r!==n&&a&&this.renderHighlight(),!0))},clearRegionHighlight:function(){return this.currentRegion!==n&&(this.removeHighlight(),this.currentRegion=n,!0)},renderHighlight:function(){this.changeHighlight(!0)},removeHighlight:function(){this.changeHighlight(!1)},changeHighlight:function(t){},getCurrentRegionTooltip:function(){var t,e,r,o,s,l,c,u,h,d,f,p,g,m,v=this.options,y="",x=[];if(this.currentRegion===n)return"";if(t=this.getCurrentRegionFields(),f=v.get("tooltipFormatter"))return f(this,v,t);if(v.get("tooltipChartTitle")&&(y+='<div class="jqs jqstitle">'+v.get("tooltipChartTitle")+"</div>\n"),e=this.options.get("tooltipFormat"),!e)return"";if(i.isArray(e)||(e=[e]),i.isArray(t)||(t=[t]),c=this.options.get("tooltipFormatFieldlist"),u=this.options.get("tooltipFormatFieldlistKey"),c&&u){for(h=[],l=t.length;l--;)d=t[l][u],(m=i.inArray(d,c))!=-1&&(h[m]=t[l]);t=h}for(r=e.length,g=t.length,l=0;l<r;l++)for(p=e[l],"string"==typeof p&&(p=new a(p)),o=p.fclass||"jqsfield",m=0;m<g;m++)t[m].isNull&&v.get("tooltipSkipNull")||(i.extend(t[m],{prefix:v.get("tooltipPrefix"),suffix:v.get("tooltipSuffix")}),s=p.render(t[m],v.get("tooltipValueLookups"),v),x.push('<div class="'+o+'">'+s+"</div>"));return x.length?y+x.join("\n"):""},getCurrentRegionFields:function(){},calcHighlightColor:function(t,n){var i,r,o,a,l=n.get("highlightColor"),c=n.get("highlightLighten");if(l)return l;if(c&&(i=/^#([0-9a-f])([0-9a-f])([0-9a-f])$/i.exec(t)||/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(t))){for(o=[],r=4===t.length?16:1,a=0;a<3;a++)o[a]=s(e.round(parseInt(i[a+1],16)*r*c),0,255);return"rgb("+o.join(",")+")"}return t}}),_={changeHighlight:function(t){var e,n=this.currentRegion,r=this.target,o=this.regionShapes[n];o&&(e=this.renderRegion(n,t),i.isArray(e)||i.isArray(o)?(r.replaceWithShapes(o,e),this.regionShapes[n]=i.map(e,function(t){return t.id})):(r.replaceWithShape(o,e),this.regionShapes[n]=e.id))},render:function(){var t,e,n,r,o=this.values,a=this.target,s=this.regionShapes;if(this.cls._super.render.call(this)){for(n=o.length;n--;)if(t=this.renderRegion(n))if(i.isArray(t)){for(e=[],r=t.length;r--;)t[r].append(),e.push(t[r].id);s[n]=e}else t.append(),s[n]=t.id;else s[n]=null;a.render()}}},i.fn.sparkline.line=w=o(i.fn.sparkline._base,{type:"line",init:function(t,e,n,i,r){w._super.init.call(this,t,e,n,i,r),this.vertices=[],this.regionMap=[],this.xvalues=[],this.yvalues=[],this.yminmax=[],this.hightlightSpotId=null,this.lastShapeId=null,this.initTarget()},getRegion:function(t,e,i){var r,o=this.regionMap;for(r=o.length;r--;)if(null!==o[r]&&e>=o[r][0]&&e<=o[r][1])return o[r][2];return n},getCurrentRegionFields:function(){var t=this.currentRegion;return{isNull:null===this.yvalues[t],x:this.xvalues[t],y:this.yvalues[t],color:this.options.get("lineColor"),fillColor:this.options.get("fillColor"),offset:t}},renderHighlight:function(){var t,e,i=this.currentRegion,r=this.target,o=this.vertices[i],a=this.options,s=a.get("spotRadius"),l=a.get("highlightSpotColor"),c=a.get("highlightLineColor");o&&(s&&l&&(t=r.drawCircle(o[0],o[1],s,n,l),this.highlightSpotId=t.id,r.insertAfterShape(this.lastShapeId,t)),c&&(e=r.drawLine(o[0],this.canvasTop,o[0],this.canvasTop+this.canvasHeight,c),this.highlightLineId=e.id,r.insertAfterShape(this.lastShapeId,e)))},removeHighlight:function(){var t=this.target;this.highlightSpotId&&(t.removeShapeId(this.highlightSpotId),this.highlightSpotId=null),this.highlightLineId&&(t.removeShapeId(this.highlightLineId),this.highlightLineId=null)},scanValues:function(){var t,n,i,r,o,a=this.values,s=a.length,l=this.xvalues,c=this.yvalues,u=this.yminmax;for(t=0;t<s;t++)n=a[t],i="string"==typeof a[t],r="object"==typeof a[t]&&a[t]instanceof Array,o=i&&a[t].split(":"),i&&2===o.length?(l.push(Number(o[0])),c.push(Number(o[1])),u.push(Number(o[1]))):r?(l.push(n[0]),c.push(n[1]),u.push(n[1])):(l.push(t),null===a[t]||"null"===a[t]?c.push(null):(c.push(Number(n)),u.push(Number(n))));this.options.get("xvalues")&&(l=this.options.get("xvalues")),this.maxy=this.maxyorg=e.max.apply(e,u),this.miny=this.minyorg=e.min.apply(e,u),this.maxx=e.max.apply(e,l),this.minx=e.min.apply(e,l),this.xvalues=l,this.yvalues=c,this.yminmax=u},processRangeOptions:function(){var t=this.options,e=t.get("normalRangeMin"),i=t.get("normalRangeMax");e!==n&&(e<this.miny&&(this.miny=e),i>this.maxy&&(this.maxy=i)),t.get("chartRangeMin")!==n&&(t.get("chartRangeClip")||t.get("chartRangeMin")<this.miny)&&(this.miny=t.get("chartRangeMin")),t.get("chartRangeMax")!==n&&(t.get("chartRangeClip")||t.get("chartRangeMax")>this.maxy)&&(this.maxy=t.get("chartRangeMax")),t.get("chartRangeMinX")!==n&&(t.get("chartRangeClipX")||t.get("chartRangeMinX")<this.minx)&&(this.minx=t.get("chartRangeMinX")),t.get("chartRangeMaxX")!==n&&(t.get("chartRangeClipX")||t.get("chartRangeMaxX")>this.maxx)&&(this.maxx=t.get("chartRangeMaxX"))},drawNormalRange:function(t,i,r,o,a){var s=this.options.get("normalRangeMin"),l=this.options.get("normalRangeMax"),c=i+e.round(r-r*((l-this.miny)/a)),u=e.round(r*(l-s)/a);this.target.drawRect(t,c,o,u,n,this.options.get("normalRangeColor")).append()},render:function(){var t,r,o,a,s,l,c,u,h,d,f,p,g,m,v,x,b,_,S,C,T,k,A,M,L,E=this.options,P=this.target,N=this.canvasWidth,O=this.canvasHeight,R=this.vertices,D=E.get("spotRadius"),I=this.regionMap;if(w._super.render.call(this)&&(this.scanValues(),this.processRangeOptions(),A=this.xvalues,M=this.yvalues,this.yminmax.length&&!(this.yvalues.length<2))){for(a=s=0,t=this.maxx-this.minx===0?1:this.maxx-this.minx,r=this.maxy-this.miny===0?1:this.maxy-this.miny,o=this.yvalues.length-1,D&&(N<4*D||O<4*D)&&(D=0),D&&(T=E.get("highlightSpotColor")&&!E.get("disableInteraction"),(T||E.get("minSpotColor")||E.get("spotColor")&&M[o]===this.miny)&&(O-=e.ceil(D)),(T||E.get("maxSpotColor")||E.get("spotColor")&&M[o]===this.maxy)&&(O-=e.ceil(D),a+=e.ceil(D)),(T||(E.get("minSpotColor")||E.get("maxSpotColor"))&&(M[0]===this.miny||M[0]===this.maxy))&&(s+=e.ceil(D),N-=e.ceil(D)),(T||E.get("spotColor")||E.get("minSpotColor")||E.get("maxSpotColor")&&(M[o]===this.miny||M[o]===this.maxy))&&(N-=e.ceil(D))),O--,E.get("normalRangeMin")===n||E.get("drawNormalOnTop")||this.drawNormalRange(s,a,O,N,r),c=[],u=[c],m=v=null,x=M.length,L=0;L<x;L++)h=A[L],f=A[L+1],d=M[L],p=s+e.round((h-this.minx)*(N/t)),g=L<x-1?s+e.round((f-this.minx)*(N/t)):N,v=p+(g-p)/2,I[L]=[m||0,v,L],m=v,null===d?L&&(null!==M[L-1]&&(c=[],u.push(c)),R.push(null)):(d<this.miny&&(d=this.miny),d>this.maxy&&(d=this.maxy),c.length||c.push([p,a+O]),l=[p,a+e.round(O-O*((d-this.miny)/r))],c.push(l),R.push(l));for(b=[],_=[],S=u.length,L=0;L<S;L++)c=u[L],c.length&&(E.get("fillColor")&&(c.push([c[c.length-1][0],a+O]),_.push(c.slice(0)),c.pop()),c.length>2&&(c[0]=[c[0][0],c[1][1]]),b.push(c));for(S=_.length,L=0;L<S;L++)P.drawShape(_[L],E.get("fillColor"),E.get("fillColor")).append();for(E.get("normalRangeMin")!==n&&E.get("drawNormalOnTop")&&this.drawNormalRange(s,a,O,N,r),S=b.length,L=0;L<S;L++)P.drawShape(b[L],E.get("lineColor"),n,E.get("lineWidth")).append();if(D&&E.get("valueSpots"))for(C=E.get("valueSpots"),C.get===n&&(C=new y(C)),L=0;L<x;L++)k=C.get(M[L]),k&&P.drawCircle(s+e.round((A[L]-this.minx)*(N/t)),a+e.round(O-O*((M[L]-this.miny)/r)),D,n,k).append();D&&E.get("spotColor")&&null!==M[o]&&P.drawCircle(s+e.round((A[A.length-1]-this.minx)*(N/t)),a+e.round(O-O*((M[o]-this.miny)/r)),D,n,E.get("spotColor")).append(),this.maxy!==this.minyorg&&(D&&E.get("minSpotColor")&&(h=A[i.inArray(this.minyorg,M)],P.drawCircle(s+e.round((h-this.minx)*(N/t)),a+e.round(O-O*((this.minyorg-this.miny)/r)),D,n,E.get("minSpotColor")).append()),D&&E.get("maxSpotColor")&&(h=A[i.inArray(this.maxyorg,M)],P.drawCircle(s+e.round((h-this.minx)*(N/t)),a+e.round(O-O*((this.maxyorg-this.miny)/r)),D,n,E.get("maxSpotColor")).append())),this.lastShapeId=P.getLastShapeId(),this.canvasTop=a,P.render()}}}),i.fn.sparkline.bar=S=o(i.fn.sparkline._base,_,{type:"bar",init:function(t,r,o,a,l){var d,f,p,g,m,v,x,b,_,w,C,T,k,A,M,L,E,P,N,O,R,D,I=parseInt(o.get("barWidth"),10),j=parseInt(o.get("barSpacing"),10),H=o.get("chartRangeMin"),V=o.get("chartRangeMax"),F=o.get("chartRangeClip"),z=1/0,q=-(1/0);for(S._super.init.call(this,t,r,o,a,l),v=0,x=r.length;v<x;v++)O=r[v],d="string"==typeof O&&O.indexOf(":")>-1,(d||i.isArray(O))&&(M=!0,
-d&&(O=r[v]=u(O.split(":"))),O=h(O,null),f=e.min.apply(e,O),p=e.max.apply(e,O),f<z&&(z=f),p>q&&(q=p));this.stacked=M,this.regionShapes={},this.barWidth=I,this.barSpacing=j,this.totalBarWidth=I+j,this.width=a=r.length*I+(r.length-1)*j,this.initTarget(),F&&(k=H===n?-(1/0):H,A=V===n?1/0:V),m=[],g=M?[]:m;var G=[],B=[];for(v=0,x=r.length;v<x;v++)if(M)for(L=r[v],r[v]=N=[],G[v]=0,g[v]=B[v]=0,E=0,P=L.length;E<P;E++)O=N[E]=F?s(L[E],k,A):L[E],null!==O&&(O>0&&(G[v]+=O),z<0&&q>0?O<0?B[v]+=e.abs(O):g[v]+=O:g[v]+=e.abs(O-(O<0?q:z)),m.push(O));else O=F?s(r[v],k,A):r[v],O=r[v]=c(O),null!==O&&m.push(O);this.max=T=e.max.apply(e,m),this.min=C=e.min.apply(e,m),this.stackMax=q=M?e.max.apply(e,G):T,this.stackMin=z=M?e.min.apply(e,m):C,o.get("chartRangeMin")!==n&&(o.get("chartRangeClip")||o.get("chartRangeMin")<C)&&(C=o.get("chartRangeMin")),o.get("chartRangeMax")!==n&&(o.get("chartRangeClip")||o.get("chartRangeMax")>T)&&(T=o.get("chartRangeMax")),this.zeroAxis=_=o.get("zeroAxis",!0),w=C<=0&&T>=0&&_?0:0==_?C:C>0?C:T,this.xaxisOffset=w,b=M?e.max.apply(e,g)+e.max.apply(e,B):T-C,this.canvasHeightEf=_&&C<0?this.canvasHeight-2:this.canvasHeight-1,C<w?(D=M&&T>=0?q:T,R=(D-w)/b*this.canvasHeight,R!==e.ceil(R)&&(this.canvasHeightEf-=2,R=e.ceil(R))):R=this.canvasHeight,this.yoffset=R,i.isArray(o.get("colorMap"))?(this.colorMapByIndex=o.get("colorMap"),this.colorMapByValue=null):(this.colorMapByIndex=null,this.colorMapByValue=o.get("colorMap"),this.colorMapByValue&&this.colorMapByValue.get===n&&(this.colorMapByValue=new y(this.colorMapByValue))),this.range=b},getRegion:function(t,i,r){var o=e.floor(i/this.totalBarWidth);return o<0||o>=this.values.length?n:o},getCurrentRegionFields:function(){var t,e,n=this.currentRegion,i=m(this.values[n]),r=[];for(e=i.length;e--;)t=i[e],r.push({isNull:null===t,value:t,color:this.calcColor(e,t,n),offset:n});return r},calcColor:function(t,e,r){var o,a,s=this.colorMapByIndex,l=this.colorMapByValue,c=this.options;return o=this.stacked?c.get("stackedBarColor"):e<0?c.get("negBarColor"):c.get("barColor"),0===e&&c.get("zeroColor")!==n&&(o=c.get("zeroColor")),l&&(a=l.get(e))?o=a:s&&s.length>r&&(o=s[r]),i.isArray(o)?o[t%o.length]:o},renderRegion:function(t,r){var o,a,s,l,c,u,h,d,p,g,m=this.values[t],v=this.options,y=this.xaxisOffset,x=[],b=this.range,_=this.stacked,w=this.target,S=t*this.totalBarWidth,C=this.canvasHeightEf,T=this.yoffset;if(m=i.isArray(m)?m:[m],h=m.length,d=m[0],l=f(null,m),g=f(y,m,!0),l)return v.get("nullColor")?(s=r?v.get("nullColor"):this.calcHighlightColor(v.get("nullColor"),v),o=T>0?T-1:T,w.drawRect(S,o,this.barWidth-1,0,s,s)):n;for(c=T,u=0;u<h;u++){if(d=m[u],_&&d===y){if(!g||p)continue;p=!0}a=b>0?e.floor(C*(e.abs(d-y)/b))+1:1,d<y||d===y&&0===T?(o=c,c+=a):(o=T-a,T-=a),s=this.calcColor(u,d,t),r&&(s=this.calcHighlightColor(s,v)),x.push(w.drawRect(S,o,this.barWidth-1,a-1,s,s))}return 1===x.length?x[0]:x}}),i.fn.sparkline.tristate=C=o(i.fn.sparkline._base,_,{type:"tristate",init:function(t,e,r,o,a){var s=parseInt(r.get("barWidth"),10),l=parseInt(r.get("barSpacing"),10);C._super.init.call(this,t,e,r,o,a),this.regionShapes={},this.barWidth=s,this.barSpacing=l,this.totalBarWidth=s+l,this.values=i.map(e,Number),this.width=o=e.length*s+(e.length-1)*l,i.isArray(r.get("colorMap"))?(this.colorMapByIndex=r.get("colorMap"),this.colorMapByValue=null):(this.colorMapByIndex=null,this.colorMapByValue=r.get("colorMap"),this.colorMapByValue&&this.colorMapByValue.get===n&&(this.colorMapByValue=new y(this.colorMapByValue))),this.initTarget()},getRegion:function(t,n,i){return e.floor(n/this.totalBarWidth)},getCurrentRegionFields:function(){var t=this.currentRegion;return{isNull:this.values[t]===n,value:this.values[t],color:this.calcColor(this.values[t],t),offset:t}},calcColor:function(t,e){var n,i,r=this.values,o=this.options,a=this.colorMapByIndex,s=this.colorMapByValue;return n=s&&(i=s.get(t))?i:a&&a.length>e?a[e]:r[e]<0?o.get("negBarColor"):r[e]>0?o.get("posBarColor"):o.get("zeroBarColor")},renderRegion:function(t,n){var i,r,o,a,s,l,c=this.values,u=this.options,h=this.target;if(i=h.pixelHeight,o=e.round(i/2),a=t*this.totalBarWidth,c[t]<0?(s=o,r=o-1):c[t]>0?(s=0,r=o-1):(s=o-1,r=2),l=this.calcColor(c[t],t),null!==l)return n&&(l=this.calcHighlightColor(l,u)),h.drawRect(a,s,this.barWidth-1,r-1,l,l)}}),i.fn.sparkline.discrete=T=o(i.fn.sparkline._base,_,{type:"discrete",init:function(t,r,o,a,s){T._super.init.call(this,t,r,o,a,s),this.regionShapes={},this.values=r=i.map(r,Number),this.min=e.min.apply(e,r),this.max=e.max.apply(e,r),this.range=this.max-this.min,this.width=a="auto"===o.get("width")?2*r.length:this.width,this.interval=e.floor(a/r.length),this.itemWidth=a/r.length,o.get("chartRangeMin")!==n&&(o.get("chartRangeClip")||o.get("chartRangeMin")<this.min)&&(this.min=o.get("chartRangeMin")),o.get("chartRangeMax")!==n&&(o.get("chartRangeClip")||o.get("chartRangeMax")>this.max)&&(this.max=o.get("chartRangeMax")),this.initTarget(),this.target&&(this.lineHeight="auto"===o.get("lineHeight")?e.round(.3*this.canvasHeight):o.get("lineHeight"))},getRegion:function(t,n,i){return e.floor(n/this.itemWidth)},getCurrentRegionFields:function(){var t=this.currentRegion;return{isNull:this.values[t]===n,value:this.values[t],offset:t}},renderRegion:function(t,n){var i,r,o,a,l=this.values,c=this.options,u=this.min,h=this.max,d=this.range,f=this.interval,p=this.target,g=this.canvasHeight,m=this.lineHeight,v=g-m;return r=s(l[t],u,h),a=t*f,i=e.round(v-v*((r-u)/d)),o=c.get("thresholdColor")&&r<c.get("thresholdValue")?c.get("thresholdColor"):c.get("lineColor"),n&&(o=this.calcHighlightColor(o,c)),p.drawLine(a,i,a,i+m,o)}}),i.fn.sparkline.bullet=k=o(i.fn.sparkline._base,{type:"bullet",init:function(t,i,r,o,a){var s,l,c;k._super.init.call(this,t,i,r,o,a),this.values=i=u(i),c=i.slice(),c[0]=null===c[0]?c[2]:c[0],c[1]=null===i[1]?c[2]:c[1],s=e.min.apply(e,i),l=e.max.apply(e,i),s=r.get("base")===n?s<0?s:0:r.get("base"),this.min=s,this.max=l,this.range=l-s,this.shapes={},this.valueShapes={},this.regiondata={},this.width=o="auto"===r.get("width")?"4.0em":o,this.target=this.$el.simpledraw(o,a,r.get("composite")),i.length||(this.disabled=!0),this.initTarget()},getRegion:function(t,e,i){var r=this.target.getShapeAt(t,e,i);return r!==n&&this.shapes[r]!==n?this.shapes[r]:n},getCurrentRegionFields:function(){var t=this.currentRegion;return{fieldkey:t.substr(0,1),value:this.values[t.substr(1)],region:t}},changeHighlight:function(t){var e,n=this.currentRegion,i=this.valueShapes[n];switch(delete this.shapes[i],n.substr(0,1)){case"r":e=this.renderRange(n.substr(1),t);break;case"p":e=this.renderPerformance(t);break;case"t":e=this.renderTarget(t)}this.valueShapes[n]=e.id,this.shapes[e.id]=n,this.target.replaceWithShape(i,e)},renderRange:function(t,n){var i=this.values[t],r=e.round(this.canvasWidth*((i-this.min)/this.range)),o=this.options.get("rangeColors")[t-2];return n&&(o=this.calcHighlightColor(o,this.options)),this.target.drawRect(0,0,r-1,this.canvasHeight-1,o,o)},renderPerformance:function(t){var n=this.values[1],i=e.round(this.canvasWidth*((n-this.min)/this.range)),r=this.options.get("performanceColor");return t&&(r=this.calcHighlightColor(r,this.options)),this.target.drawRect(0,e.round(.3*this.canvasHeight),i-1,e.round(.4*this.canvasHeight)-1,r,r)},renderTarget:function(t){var n=this.values[0],i=e.round(this.canvasWidth*((n-this.min)/this.range)-this.options.get("targetWidth")/2),r=e.round(.1*this.canvasHeight),o=this.canvasHeight-2*r,a=this.options.get("targetColor");return t&&(a=this.calcHighlightColor(a,this.options)),this.target.drawRect(i,r,this.options.get("targetWidth")-1,o-1,a,a)},render:function(){var t,e,n=this.values.length,i=this.target;if(k._super.render.call(this)){for(t=2;t<n;t++)e=this.renderRange(t).append(),this.shapes[e.id]="r"+t,this.valueShapes["r"+t]=e.id;null!==this.values[1]&&(e=this.renderPerformance().append(),this.shapes[e.id]="p1",this.valueShapes.p1=e.id),null!==this.values[0]&&(e=this.renderTarget().append(),this.shapes[e.id]="t0",this.valueShapes.t0=e.id),i.render()}}}),i.fn.sparkline.pie=A=o(i.fn.sparkline._base,{type:"pie",init:function(t,n,r,o,a){var s,l=0;if(A._super.init.call(this,t,n,r,o,a),this.shapes={},this.valueShapes={},this.values=n=i.map(n,Number),"auto"===r.get("width")&&(this.width=this.height),n.length>0)for(s=n.length;s--;)l+=n[s];this.total=l,this.initTarget(),this.radius=e.floor(e.min(this.canvasWidth,this.canvasHeight)/2)},getRegion:function(t,e,i){var r=this.target.getShapeAt(t,e,i);return r!==n&&this.shapes[r]!==n?this.shapes[r]:n},getCurrentRegionFields:function(){var t=this.currentRegion;return{isNull:this.values[t]===n,value:this.values[t],percent:this.values[t]/this.total*100,color:this.options.get("sliceColors")[t%this.options.get("sliceColors").length],offset:t}},changeHighlight:function(t){var e=this.currentRegion,n=this.renderSlice(e,t),i=this.valueShapes[e];delete this.shapes[i],this.target.replaceWithShape(i,n),this.valueShapes[e]=n.id,this.shapes[n.id]=e},renderSlice:function(t,i){var r,o,a,s,l,c=this.target,u=this.options,h=this.radius,d=u.get("borderWidth"),f=u.get("offset"),p=2*e.PI,g=this.values,m=this.total,v=f?2*e.PI*(f/360):0;for(s=g.length,a=0;a<s;a++){if(r=v,o=v,m>0&&(o=v+p*(g[a]/m)),t===a)return l=u.get("sliceColors")[a%u.get("sliceColors").length],i&&(l=this.calcHighlightColor(l,u)),c.drawPieSlice(h,h,h-d,r,o,n,l);v=o}},render:function(){var t,i,r=this.target,o=this.values,a=this.options,s=this.radius,l=a.get("borderWidth");if(A._super.render.call(this)){for(l&&r.drawCircle(s,s,e.floor(s-l/2),a.get("borderColor"),n,l).append(),i=o.length;i--;)o[i]&&(t=this.renderSlice(i).append(),this.valueShapes[i]=t.id,this.shapes[t.id]=i);r.render()}}}),i.fn.sparkline.box=M=o(i.fn.sparkline._base,{type:"box",init:function(t,e,n,r,o){M._super.init.call(this,t,e,n,r,o),this.values=i.map(e,Number),this.width="auto"===n.get("width")?"4.0em":r,this.initTarget(),this.values.length||(this.disabled=1)},getRegion:function(){return 1},getCurrentRegionFields:function(){var t=[{field:"lq",value:this.quartiles[0]},{field:"med",value:this.quartiles[1]},{field:"uq",value:this.quartiles[2]}];return this.loutlier!==n&&t.push({field:"lo",value:this.loutlier}),this.routlier!==n&&t.push({field:"ro",value:this.routlier}),this.lwhisker!==n&&t.push({field:"lw",value:this.lwhisker}),this.rwhisker!==n&&t.push({field:"rw",value:this.rwhisker}),t},render:function(){var t,i,r,o,a,s,c,u,h,d,f,p=this.target,g=this.values,m=g.length,v=this.options,y=this.canvasWidth,x=this.canvasHeight,b=v.get("chartRangeMin")===n?e.min.apply(e,g):v.get("chartRangeMin"),_=v.get("chartRangeMax")===n?e.max.apply(e,g):v.get("chartRangeMax"),w=0;if(M._super.render.call(this)){if(v.get("raw"))v.get("showOutliers")&&g.length>5?(i=g[0],t=g[1],o=g[2],a=g[3],s=g[4],c=g[5],u=g[6]):(t=g[0],o=g[1],a=g[2],s=g[3],c=g[4]);else if(g.sort(function(t,e){return t-e}),o=l(g,1),a=l(g,2),s=l(g,3),r=s-o,v.get("showOutliers")){for(t=c=n,h=0;h<m;h++)t===n&&g[h]>o-r*v.get("outlierIQR")&&(t=g[h]),g[h]<s+r*v.get("outlierIQR")&&(c=g[h]);i=g[0],u=g[m-1]}else t=g[0],c=g[m-1];this.quartiles=[o,a,s],this.lwhisker=t,this.rwhisker=c,this.loutlier=i,this.routlier=u,f=y/(_-b+1),v.get("showOutliers")&&(w=e.ceil(v.get("spotRadius")),y-=2*e.ceil(v.get("spotRadius")),f=y/(_-b+1),i<t&&p.drawCircle((i-b)*f+w,x/2,v.get("spotRadius"),v.get("outlierLineColor"),v.get("outlierFillColor")).append(),u>c&&p.drawCircle((u-b)*f+w,x/2,v.get("spotRadius"),v.get("outlierLineColor"),v.get("outlierFillColor")).append()),p.drawRect(e.round((o-b)*f+w),e.round(.1*x),e.round((s-o)*f),e.round(.8*x),v.get("boxLineColor"),v.get("boxFillColor")).append(),p.drawLine(e.round((t-b)*f+w),e.round(x/2),e.round((o-b)*f+w),e.round(x/2),v.get("lineColor")).append(),p.drawLine(e.round((t-b)*f+w),e.round(x/4),e.round((t-b)*f+w),e.round(x-x/4),v.get("whiskerColor")).append(),p.drawLine(e.round((c-b)*f+w),e.round(x/2),e.round((s-b)*f+w),e.round(x/2),v.get("lineColor")).append(),p.drawLine(e.round((c-b)*f+w),e.round(x/4),e.round((c-b)*f+w),e.round(x-x/4),v.get("whiskerColor")).append(),p.drawLine(e.round((a-b)*f+w),e.round(.1*x),e.round((a-b)*f+w),e.round(.9*x),v.get("medianColor")).append(),v.get("target")&&(d=e.ceil(v.get("spotRadius")),p.drawLine(e.round((v.get("target")-b)*f+w),e.round(x/2-d),e.round((v.get("target")-b)*f+w),e.round(x/2+d),v.get("targetColor")).append(),p.drawLine(e.round((v.get("target")-b)*f+w-d),e.round(x/2),e.round((v.get("target")-b)*f+w+d),e.round(x/2),v.get("targetColor")).append()),p.render()}}}),P=o({init:function(t,e,n,i){this.target=t,this.id=e,this.type=n,this.args=i},append:function(){return this.target.appendShape(this),this}}),N=o({_pxregex:/(\d+)(px)?\s*$/i,init:function(t,e,n){t&&(this.width=t,this.height=e,this.target=n,this.lastShapeId=null,n[0]&&(n=n[0]),i.data(n,"_jqs_vcanvas",this))},drawLine:function(t,e,n,i,r,o){return this.drawShape([[t,e],[n,i]],r,o)},drawShape:function(t,e,n,i){return this._genShape("Shape",[t,e,n,i])},drawCircle:function(t,e,n,i,r,o){return this._genShape("Circle",[t,e,n,i,r,o])},drawPieSlice:function(t,e,n,i,r,o,a){return this._genShape("PieSlice",[t,e,n,i,r,o,a])},drawRect:function(t,e,n,i,r,o){return this._genShape("Rect",[t,e,n,i,r,o])},getElement:function(){return this.canvas},getLastShapeId:function(){return this.lastShapeId},reset:function(){alert("reset not implemented")},_insert:function(t,e){i(e).html(t)},_calculatePixelDims:function(t,e,n){var r;r=this._pxregex.exec(e),r?this.pixelHeight=r[1]:this.pixelHeight=i(n).height(),r=this._pxregex.exec(t),r?this.pixelWidth=r[1]:this.pixelWidth=i(n).width()},_genShape:function(t,e){var n=j++;return e.unshift(n),new P(this,n,t,e)},appendShape:function(t){alert("appendShape not implemented")},replaceWithShape:function(t,e){alert("replaceWithShape not implemented")},insertAfterShape:function(t,e){alert("insertAfterShape not implemented")},removeShapeId:function(t){alert("removeShapeId not implemented")},getShapeAt:function(t,e,n){alert("getShapeAt not implemented")},render:function(){alert("render not implemented")}}),O=o(N,{init:function(e,r,o,a){O._super.init.call(this,e,r,o),this.canvas=t.createElement("canvas"),o[0]&&(o=o[0]),i.data(o,"_jqs_vcanvas",this),i(this.canvas).css({display:"inline-block",width:e,height:r,verticalAlign:"top"}),this._insert(this.canvas,o),this._calculatePixelDims(e,r,this.canvas),this.canvas.width=this.pixelWidth,this.canvas.height=this.pixelHeight,this.interact=a,this.shapes={},this.shapeseq=[],this.currentTargetShapeId=n,i(this.canvas).css({width:this.pixelWidth,height:this.pixelHeight})},_getContext:function(t,e,i){var r=this.canvas.getContext("2d");return t!==n&&(r.strokeStyle=t),r.lineWidth=i===n?1:i,e!==n&&(r.fillStyle=e),r},reset:function(){var t=this._getContext();t.clearRect(0,0,this.pixelWidth,this.pixelHeight),this.shapes={},this.shapeseq=[],this.currentTargetShapeId=n},_drawShape:function(t,e,i,r,o){var a,s,l=this._getContext(i,r,o);for(l.beginPath(),l.moveTo(e[0][0]+.5,e[0][1]+.5),a=1,s=e.length;a<s;a++)l.lineTo(e[a][0]+.5,e[a][1]+.5);i!==n&&l.stroke(),r!==n&&l.fill(),this.targetX!==n&&this.targetY!==n&&l.isPointInPath(this.targetX,this.targetY)&&(this.currentTargetShapeId=t)},_drawCircle:function(t,i,r,o,a,s,l){var c=this._getContext(a,s,l);c.beginPath(),c.arc(i,r,o,0,2*e.PI,!1),this.targetX!==n&&this.targetY!==n&&c.isPointInPath(this.targetX,this.targetY)&&(this.currentTargetShapeId=t),a!==n&&c.stroke(),s!==n&&c.fill()},_drawPieSlice:function(t,e,i,r,o,a,s,l){var c=this._getContext(s,l);c.beginPath(),c.moveTo(e,i),c.arc(e,i,r,o,a,!1),c.lineTo(e,i),c.closePath(),s!==n&&c.stroke(),l&&c.fill(),this.targetX!==n&&this.targetY!==n&&c.isPointInPath(this.targetX,this.targetY)&&(this.currentTargetShapeId=t)},_drawRect:function(t,e,n,i,r,o,a){return this._drawShape(t,[[e,n],[e+i,n],[e+i,n+r],[e,n+r],[e,n]],o,a)},appendShape:function(t){return this.shapes[t.id]=t,this.shapeseq.push(t.id),this.lastShapeId=t.id,t.id},replaceWithShape:function(t,e){var n,i=this.shapeseq;for(this.shapes[e.id]=e,n=i.length;n--;)i[n]==t&&(i[n]=e.id);delete this.shapes[t]},replaceWithShapes:function(t,e){var n,i,r,o=this.shapeseq,a={};for(i=t.length;i--;)a[t[i]]=!0;for(i=o.length;i--;)n=o[i],a[n]&&(o.splice(i,1),delete this.shapes[n],r=i);for(i=e.length;i--;)o.splice(r,0,e[i].id),this.shapes[e[i].id]=e[i]},insertAfterShape:function(t,e){var n,i=this.shapeseq;for(n=i.length;n--;)if(i[n]===t)return i.splice(n+1,0,e.id),void(this.shapes[e.id]=e)},removeShapeId:function(t){var e,n=this.shapeseq;for(e=n.length;e--;)if(n[e]===t){n.splice(e,1);break}delete this.shapes[t]},getShapeAt:function(t,e,n){return this.targetX=e,this.targetY=n,this.render(),this.currentTargetShapeId},render:function(){var t,e,n,i=this.shapeseq,r=this.shapes,o=i.length,a=this._getContext();for(a.clearRect(0,0,this.pixelWidth,this.pixelHeight),n=0;n<o;n++)t=i[n],e=r[t],this["_draw"+e.type].apply(this,e.args);this.interact||(this.shapes={},this.shapeseq=[])}}),R=o(N,{init:function(e,n,r){var o;R._super.init.call(this,e,n,r),r[0]&&(r=r[0]),i.data(r,"_jqs_vcanvas",this),this.canvas=t.createElement("span"),i(this.canvas).css({display:"inline-block",position:"relative",overflow:"hidden",width:e,height:n,margin:"0px",padding:"0px",verticalAlign:"top"}),this._insert(this.canvas,r),this._calculatePixelDims(e,n,this.canvas),this.canvas.width=this.pixelWidth,this.canvas.height=this.pixelHeight,o='<v:group coordorigin="0 0" coordsize="'+this.pixelWidth+" "+this.pixelHeight+'" style="position:absolute;top:0;left:0;width:'+this.pixelWidth+"px;height="+this.pixelHeight+'px;"></v:group>',this.canvas.insertAdjacentHTML("beforeEnd",o),this.group=i(this.canvas).children()[0],this.rendered=!1,this.prerender=""},_drawShape:function(t,e,i,r,o){var a,s,l,c,u,h,d,f=[];for(d=0,h=e.length;d<h;d++)f[d]=""+e[d][0]+","+e[d][1];return a=f.splice(0,1),o=o===n?1:o,s=i===n?' stroked="false" ':' strokeWeight="'+o+'px" strokeColor="'+i+'" ',l=r===n?' filled="false"':' fillColor="'+r+'" filled="true" ',c=f[0]===f[f.length-1]?"x ":"",u='<v:shape coordorigin="0 0" coordsize="'+this.pixelWidth+" "+this.pixelHeight+'"  id="jqsshape'+t+'" '+s+l+' style="position:absolute;left:0px;top:0px;height:'+this.pixelHeight+"px;width:"+this.pixelWidth+'px;padding:0px;margin:0px;"  path="m '+a+" l "+f.join(", ")+" "+c+'e"> </v:shape>'},_drawCircle:function(t,e,i,r,o,a,s){var l,c,u;return e-=r,i-=r,l=o===n?' stroked="false" ':' strokeWeight="'+s+'px" strokeColor="'+o+'" ',c=a===n?' filled="false"':' fillColor="'+a+'" filled="true" ',u='<v:oval  id="jqsshape'+t+'" '+l+c+' style="position:absolute;top:'+i+"px; left:"+e+"px; width:"+2*r+"px; height:"+2*r+'px"></v:oval>'},_drawPieSlice:function(t,i,r,o,a,s,l,c){var u,h,d,f,p,g,m,v;if(a===s)return"";if(s-a===2*e.PI&&(a=0,s=2*e.PI),h=i+e.round(e.cos(a)*o),d=r+e.round(e.sin(a)*o),f=i+e.round(e.cos(s)*o),p=r+e.round(e.sin(s)*o),h===f&&d===p){if(s-a<e.PI)return"";h=f=i+o,d=p=r}return h===f&&d===p&&s-a<e.PI?"":(u=[i-o,r-o,i+o,r+o,h,d,f,p],g=l===n?' stroked="false" ':' strokeWeight="1px" strokeColor="'+l+'" ',m=c===n?' filled="false"':' fillColor="'+c+'" filled="true" ',v='<v:shape coordorigin="0 0" coordsize="'+this.pixelWidth+" "+this.pixelHeight+'"  id="jqsshape'+t+'" '+g+m+' style="position:absolute;left:0px;top:0px;height:'+this.pixelHeight+"px;width:"+this.pixelWidth+'px;padding:0px;margin:0px;"  path="m '+i+","+r+" wa "+u.join(", ")+' x e"> </v:shape>')},_drawRect:function(t,e,n,i,r,o,a){return this._drawShape(t,[[e,n],[e,n+r],[e+i,n+r],[e+i,n],[e,n]],o,a)},reset:function(){this.group.innerHTML=""},appendShape:function(t){var e=this["_draw"+t.type].apply(this,t.args);return this.rendered?this.group.insertAdjacentHTML("beforeEnd",e):this.prerender+=e,this.lastShapeId=t.id,t.id},replaceWithShape:function(t,e){var n=i("#jqsshape"+t),r=this["_draw"+e.type].apply(this,e.args);n[0].outerHTML=r},replaceWithShapes:function(t,e){var n,r=i("#jqsshape"+t[0]),o="",a=e.length;for(n=0;n<a;n++)o+=this["_draw"+e[n].type].apply(this,e[n].args);for(r[0].outerHTML=o,n=1;n<t.length;n++)i("#jqsshape"+t[n]).remove()},insertAfterShape:function(t,e){var n=i("#jqsshape"+t),r=this["_draw"+e.type].apply(this,e.args);n[0].insertAdjacentHTML("afterEnd",r)},removeShapeId:function(t){var e=i("#jqsshape"+t);this.group.removeChild(e[0])},getShapeAt:function(t,e,n){var i=t.id.substr(8);return i},render:function(){this.rendered||(this.group.innerHTML=this.prerender,this.rendered=!0)}})})}(document,Math),define("download",["jquery","laconic"],function(){!function(t){var e="downloader",n={_init:function(e){return this.each(function(){function n(){return void 0!=t("<a>")[0].download}var i=t(this),r=t.extend({name:"swish-download",ext:"dat"},e),o=r.content_type,a=r.filename||"swish-download.dat",s=r.charset||"charset=UTF-8";n()&&o||(o="application/octet-stream");var l="data:"+o+";"+s+",";l+="base64"==s?r.data:encodeURIComponent(r.data),i.attr("download",a),i.attr("href",l),i.attr("title","Download (use menu for save link as)"),i.text(a),i.addClass("btn btn-primary download"),i.append(t.el.span({class:"glyphicon glyphicon-download"}))})}};t.fn.downloader=function(i){return n[i]?n[i].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof i&&i?void t.error("Method "+i+" does not exist on jQuery."+e):n._init.apply(this,arguments)}}(jQuery)}),define("runner",["jquery","config","preferences","cm/lib/codemirror","form","prolog","links","modal","answer","laconic","sparkline","download","search"],function($,config,preferences,CodeMirror,form,prolog,links,modal){function glyphButton(t,e){var n=$.el.a({href:"#",class:"close btn btn-link btn-sm",title:e},$.el.span({class:"glyphicon glyphicon-"+t}));return n}!function(t){var e="prologRunners",n={_init:function(n){return this.each(function(){function n(){var e=t.el.span({class:"glyphicon glyphicon-menu-hamburger"}),n=form.widgets.dropdownButton(e,{divClass:"runners-menu btn-transparent",ulClass:"pull-right",client:i,actions:{"Collapse all":function(){this.find(".prolog-runner").prologRunner("toggleIconic",!0)},"Expand all":function(){this.find(".prolog-runner").prologRunner("toggleIconic",!1)},"Stop all":function(){this.find(".prolog-runner").prologRunner("stop")},Clear:function(){this.prologRunners("clear")}}});return n}var i=t(this),r={};r.stretch=t(t.el.div({class:"stretch"})),r.inner=t(t.el.div({class:"inner"})),i.append(n()),i.append(r.stretch),i.append(r.inner),i.on("pane.resize",function(){i.prologRunners("scrollToBottom",!0)}),i.data(e,r)})},run:function(e){var n=this.data("prologRunners");e.iconifyLast&&this.prologRunners("iconifyLast");var i=t.el.div({class:"prolog-runner"});return n.inner.append(i),t(i).prologRunner(e),this.prologRunners("scrollToBottom"),this},clear:function(){this.find(".prolog-runner").prologRunner("close")},iconifyLast:function(){var e=t(this.inner).children().last();if(1==e.length){var n=e.prologRunner();n.alive()||n.toggleIconic(!0)}return this},scrollToBottom:function(e){return this.each(function(){var n=t(this),i=n.data("prologRunners"),r=i.inner.height(),o=n.height()-r-4-2;(o>0||e!==!0)&&(i.stretch.height(o>0?o:0),n.scrollTop(r))}),this}};t.fn.prologRunners=function(i){return n[i]?n[i].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof i&&i?void t.error("Method "+i+" does not exist on jQuery."+e):n._init.apply(this,arguments)}}(jQuery),function($){function RS(t){return $(t).closest(".prolog-runners")}function addAnswer(t,e){var n=t.find(".runner-results");return n.append(e),this}function aliveState(t){switch(t){case"running":case"wait-next":case"wait-input":case"wait-debug":return!0;default:return!1}}function answerTable(t){var e=[{class:"projection"}];for(i=0;i<t.length;i++)e.push($.el.th({class:"pl-pvar"},t[i]));e.push($.el.th({class:"answer-nth"},""));var n=$.el.table({class:"prolog-answers"},$.el.tbody($.el.tr.apply(this,e)));return n}function runScripts(elem){var scripts=[];if(elem=$(elem),elem.find("script").each(function(){var t=this.getAttribute("type")||"text/javascript";"text/javascript"==t&&scripts.push(this.textContent)}),scripts.length>0){var script="(function(node){"+scripts.join("\n")+"})",node=new Node({node:elem[0]});try{eval(script)(node)}catch(t){alert(t)}}}function Node(t){this.my_node=t.node}function breakpoints(t){var e=t.data(pluginName);return $(t).parents(".swish").swish("breakpoints",e.prolog.id)}function registerSources(t){var e=t.options.runner,n=e.data(pluginName);n.query.editor&&$(n.query.editor).prologEditor("pengine",{add:t.id})}function handleCreate(){var t,e=this.pengine.options.runner,n=e.data(pluginName),i={},r=config.swish.residuals_var||"Residuals";registerSources(this.pengine),(t=breakpoints(e))&&(i.breakpoints=Pengine.stringify(t)),n.chunk&&(i.chunk=n.chunk),this.pengine.ask("'$swish wrapper'((\n"+termNoFullStop(n.query.query)+"\n), "+r+")",i),e.prologRunner("setState","running")}function handleSuccess(){for(var t=this.pengine.options.runner,e=0;e<this.data.length;e++){var n=this.data[e];this.projection&&(n.projection=this.projection),t.prologRunner("renderAnswer",n)}this.time>.1&&addAnswer(t,$.el.div({class:"cputime"},$.el.span(this.time.toFixed(3)," seconds cpu time"))),t.prologRunner("setState",this.more?"wait-next":"true")}function handleFailure(){var t=this.pengine.options.runner;addAnswer(t,$.el.span({class:"prolog-false"},"false")),t.prologRunner("setState","false")}function handleStop(){var t=this.pengine.options.runner;t.prologRunner("setState","stopped")}function handlePrompt(){var t=this.pengine.options.runner,e=t.data("prologRunner"),n=this.data||"Please enter a Prolog term";if(e.wait_for="term","object"==typeof n){if("trace"==n.type)return t.prologRunner("trace",this);if("form"==n.type)return t.prologRunner("form",this);if("jQuery"==n.type)return t.prologRunner("jQuery",this);"console"==n.type?(n=n.prompt||"console> ",e.wait_for="line"):n=JSON.stringify(n)}t.prologRunner("setPrompt",n),t.prologRunner("setState","wait-input")}function clickableLocations(t,e){var n=/pengine:\/\/[-0-9a-f]{36}\/src:(\d+)/;return t.replace(n,function(t){var e=t.match(n)[1];return"<a class='goto-error' title='Goto location'><span class='glyphicon glyphicon-hand-right'></span> <b>line <span class='line'>"+e+"</span></b></a>"})}function gotoError(t){var e=$(t.target).closest("a.goto-error"),n=$(t.target).closest(".error-context"),i=n.data("error_context");if(e[0]){var r=parseInt(e.find("span.line").text()),o=e.find("span.file").text();return t.preventDefault(),o?n.closest("body.swish").swish("playFile",{file:o,line:r}):$(i.editor).prologEditor("gotoLine",r),!1}i.location.file?n.closest("body.swish").swish("playFile",i.location):$(i.editor).prologEditor("gotoLine",i.location.line)}function handleOutput(t){function e(){var e=a.file+":"+a.line+":";a.ch&&(e+=a.ch+":"),e+="\\s*",t.data=clickableLocations(t.data.replace(new RegExp(e,"g"),""),r.editor),o=n.prologRunner("outputHTML",t.data),$(o).addClass("error-context"),$(o).append($.el.span({class:"glyphicon glyphicon-hand-right"})),$(o).attr("title","Error in program.  Click to show in context"),$(o).on("click",gotoError),$(o).data("error_context",r)}var n=t.pengine.options.runner,i=n.data(pluginName);if(i){if("string"==typeof t.data){var r={editor:i.query.editor};if(t.data=t.data.replace(/'[-0-9a-f]{36}':/g,""),t.location){var o,a=t.location,s="swish://";if(a.file.startsWith(s)){var l=a.file.slice(s.length);r.location={file:l,line:a.line},e()}else a.file.startsWith("pengine://")&&(r.location={line:a.line},e(i.query.editor));registerSources(t.pengine),t.error_context=r,t.error_handler=gotoError,$(".swish-event-receiver").trigger("source-error",t)}else{var o=n.prologRunner("outputHTML",clickableLocations(t.data,r.editor));$(o).on("click",gotoError),$(o).data("error_context",r)}}else"object"==typeof t.data?n.prologRunner(t.data.action,t.data):console.log(t.data);RS(n).prologRunners("scrollToBottom")}}function handleError(){var t=this.pengine.options.runner;"too_many_pengines"==this.code?this.message="Too many open queries.  Please complete some\nqueries by using |Next|, |Stop| or by\nclosing some queries.":"string"==typeof this.data?this.message=this.data.replace(new RegExp("'"+this.pengine.id+"':","g"),""):this.message="Unknown error",t.prologRunner("error",this),t.prologRunner("setState","error")}function handleAbort(){var t=this.pengine.options.runner,e=t.data("prologRunner");e?(t.prologRunner("error","** Execution aborted **"),t.prologRunner("setState","aborted")):this.pengine.destroy()}function handlePing(){var t=this.pengine.options.runner;t.prologRunner("ping",this.data)}function answerHasOutput(t){return t.variables.length>0||t.residuals}function termNoFullStop(t){return String($.trim(t)).replace(/\.$/,"")}var pluginName="prologRunner",keyBindings={59:"next",186:"next",32:"next",190:"stop",13:"stop",65:"stopOrAbort",27:"stopOrAbort",46:"close",112:"help"},methods={_init:function(t){return this.each(function(){function e(t,e,n){var i=$.el.button({title:e,class:"rtb-"+n},$.el.span({class:"glyphicon glyphicon-"+t}));return $(i).on("click",function(){r.prologRunner(n)}),i}function n(){var t=$.el.span({class:"runner-state show-state idle"});return form.widgets.dropdownButton(t)}function i(){function t(){r.prologRunner("next",1)}function e(){r.prologRunner("next",10)}function n(){r.prologRunner("next",100)}function i(){r.prologRunner("next",1e3)}function a(){o.prolog.stop()}function s(){o.prolog.abort()}function l(t,e){var n=$.el.button(e);return $(n).on("click",t),n}function c(){var t=$.el.input({class:"prolog-input"}),e=$.el.button("Send");return $(t).keypress(function(e){return 13==e.which&&r.prologRunner("respond",$(t).val())?($(t).val(""),e.preventDefault(),!1):void("Esc"!=e.key&&e.stopPropagation())}),$(e).on("click",function(){r.prologRunner("respond",$(t).val())}),{input:t,button:e}}function u(){var t=$.el.span({class:"sparklines"},"");return t}var h=c(),d=$.el.div({class:"controller show-state"},$.el.span({class:"running"},l(s,"Abort")),$.el.span({class:"wait-next"},l(t,"Next"),l(e,"10"),l(n,"100"),l(i,"1,000")," ",l(a,"Stop")),$.el.span({class:"wait-input"},l(s,"Abort"),h.button,$.el.span(h.input)),u());return d}var r=$(this),o={};if(r.addClass("prolog-runner panel panel-default"),t.tabled&&r.addClass("tabled"),0!=t.title){var a=$.el.span({class:"query cm-s-prolog"});CodeMirror.runMode(t.query,"prolog",a),r.append($.el.div({class:"runner-title panel-heading"},e("remove-circle","Close","close"),e("minus","Iconify","toggleIconic"),e("download","Download CSV","downloadCSV"),n(),a))}else{var s=glyphButton("remove-circle","Close");r.append(s),$(s).on("click",function(){r.prologRunner("close")})}return t.chunk&&(o.chunk=t.chunk),r.append($.el.div({class:"runner-results panel-body"})),r.append(i()),r.data("prologRunner",o),r.prologRunner("populateActionMenu"),r.keydown(function(t){"wait-input"==r.prologRunner("getState")||t.ctrlKey||t.altKey||keyBindings[t.which]&&(t.preventDefault(),r.prologRunner(keyBindings[t.which]))}),r.on("click","a",links.followLink),o.savedFocus=document.activeElement,r.attr("tabindex",-1),r.focus(),o.query=t,o.answers=0,require([config.http.locations.pengines+"/pengines.js"],function(){o.prolog=new Pengine({server:config.http.locations.pengines,runner:r,application:"swish",src:t.source,destroy:!1,format:"json-html",oncreate:handleCreate,onsuccess:handleSuccess,onfailure:handleFailure,onstop:handleStop,onprompt:handlePrompt,onoutput:handleOutput,onping:handlePing,onerror:handleError,onabort:handleAbort}),o.prolog.state="idle",config.swish.ping&&void 0!=o.prolog.ping&&o.prolog.ping(1e3*config.swish.ping)}),this})},renderAnswer:function(t){var e=this.data("prologRunner"),n=++e.answers%2==0;if(e.query.tabled){if(1!=e.answers)return t.projection=e.projection,t.nth=e.answers,$(e.table).prologAnswer(t),this;if(t.projection&&t.projection.length>0){var i=answerTable(t.projection);return addAnswer(this,i),e.table=i,e.projection=t.projection,t.nth=e.answers,$(e.table).prologAnswer(t),this}}var r=$.el.div({class:"answer "+(n?"even":"odd")},$.el.span({class:"answer-no"},e.answers));addAnswer(this,r),$(r).prologAnswer(t)},outputHTML:function(t){var e=$.el.span({
-class:"output"});return addAnswer(this,e),e.innerHTML=t,runScripts(e),e},downloadButton:function(t){var e=$.el.a({class:"download"});addAnswer(this,e),$(e).downloader(t)},syntaxError:function(t){var e=this.data(pluginName);return t.data='<pre class="output msg-error">'+t.message+"</pre>",t.location.file=!0,$(e.query.query_editor).prologEditor("highlightError",t),this},error:function(t){var e;if("object"==typeof t){if("died"==t.code)return addAnswer(this,$.el.div({class:"RIP",title:"Remote pengine timed out"})),this;if("syntax_error"==t.code){var n=t.message.match(/^HTTP:DATA:(\d+):(\d+):\s*(.*)/);n&&4==n.length&&(this.prologRunner("syntaxError",{location:{line:parseInt(n[1])-1,ch:parseInt(n[2])},message:n[3]}),e="Cannot run query due to a syntax error (check query window)")}e||(e=t.message)}else e=t;return addAnswer(this,$.el.pre({class:"prolog-message msg-error"},e)),this},trace:function(t){function e(t){return t.charAt(0).toUpperCase()+t.slice(1)}function n(e,n,i){var r=$.el.button({class:n,title:e},$.el.span(e));return $(r).on("click",function(e){void 0!==i&&(n+="("+Pengine.stringify(i(e))+")"),t.pengine.respond(n),$(e.target).parent().remove()}),r}var i=$.el.span({class:"goal"}),r=t.data;$(i).html(r.goal),addAnswer(this,$.el.div({class:"prolog-trace"},$.el.span({class:"depth",style:"width:"+(5*r.depth-1)+"px"}," "),$.el.span({class:"port "+r.port},e(r.port),":"),i)),"exception"==r.port&&addAnswer(this,$.el.div({class:"prolog-exception"},r.exception.message)),addAnswer(this,$.el.div({class:"trace-buttons"},n("Continue","nodebug",function(t){return breakpoints($(t.target).closest(".prolog-runner"))}),n("Step into","continue"),n("Step over","skip"),n("Step out","up"),n("Retry","retry"),n("Abort","abort"))),this.closest(".swish").find(".tabbed").trigger("trace-location",r),this.prologRunner("setState","wait-debug")},setPrompt:function(t){this.find(".controller input").attr("placeholder",t)},jQuery:function(t){var e,n=t.data;if("string"==typeof n.selector)e=$(n.selector);else if("object"==typeof n.selector){switch(n.selector.root){case"this":root=this;break;case"swish":root=this.closest(".swish")}e=""==n.selector.sub?root:root.find(n.selector.sub)}console.log(e);var i=e[n.method].apply(e,n.arguments);console.log(i),t.pengine.respond(Pengine.stringify(i))},form:function(t){var e=this.data("prologRunner");modal.show({title:"Please enter parameters",body:function(){this.html(t.data.html),this.find("[data-search-in]").search({search:!1}),this.on("click","button[data-action]",function(t){var n=$(t.target).closest("button"),i=n.data("action");if("run"==i){var r=$(t.target).closest("form"),o=form.serializeAsObject(r,!0),a=Pengine.stringify(o);e.prolog.respond(a)}else"cancel"==i&&e.prolog.respond("cancel");return n.closest(".modal").modal("hide"),t.preventDefault(),!1})}})},respond:function(t){var e=this.data("prologRunner");if("term"==e.wait_for){if(s=termNoFullStop(t),""==s)return null}else s=Pengine.stringify(t+"\n");return addAnswer(this,$.el.div({class:"response"},t)),e.prolog.respond(s),this},stop:function(){return this.each(function(){var t=$(this),e=t.data("prologRunner");e.prolog.stop()})},stopOrAbort:function(){return this.each(function(){var t=$(this),e=t.data("prologRunner"),n=t.prologRunner("getState");switch(n){case"running":case"wait-input":e.prolog.abort();break;case"wait-next":e.prolog.stop()}})},next:function(t){return this.each(function(){var e=$(this),n=e.data("prologRunner");n.prolog.next(t),e.prologRunner("setState","running")})},abort:function(){return this.each(function(){var t=$(this),e=t.data("prologRunner");e.prolog.abort()})},close:function(){if(this.length){var t=RS(this);this.each(function(){var t=$(this),e=t.data("prologRunner");t.prologRunner("alive")&&($(".prolog-editor").trigger("pengine-died",e.prolog.id),e.prolog.abort())}),this.remove(),t.prologRunners("scrollToBottom",!0)}return this},help:function(){$(".swish-event-receiver").trigger("help",{file:"runner.html"})},toggleIconic:function(t){return void 0==t?this.toggleClass("iconic"):t?this.addClass("iconic"):this.removeClass("iconic"),RS(this).prologRunners("scrollToBottom",!0),this},populateActionMenu:function(t){var e=this.find(".runner-title .btn-group.dropdown");return t=$.extend({"Re-run":function(){console.log("Re-Run ",this)}},t),form.widgets.populateMenu(e,this,t),this},downloadCSV:function(t){var e=this.data("prologRunner"),n=termNoFullStop(e.query.query);return prolog.downloadCSV(n,e.query.source,t),this},setState:function(t){var e=this.data("prologRunner");if(e){if(e.prolog.state!=t){var n=this.find(".show-state");n.removeClass(e.prolog.state).addClass(t),e.prolog.state=t,!aliveState(t)&&e.savedFocus?($(e.savedFocus).focus(),e.savedFocus=null):"wait-input"==t&&this.find("input").focus()}var i=RS(this);return aliveState(t)?"wait-next"==t||"true"==t?setTimeout(function(){i.prologRunners("scrollToBottom")},100):i.prologRunners("scrollToBottom"):($(".prolog-editor").trigger("pengine-died",e.prolog.id),e.prolog.destroy(),setTimeout(function(){i.prologRunners("scrollToBottom")},100)),this}},getState:function(){var t=this.data("prologRunner");return t.prolog?t.prolog.state:"idle"},alive:function(){return aliveState(this.prologRunner("getState"))},ping:function(t){function e(t,e){function n(t){t=t.toString();for(var e=/(-?\d+)(\d{3})/;e.test(t);)t=t.replace(e,"$1,$2");return t}var i=Math.round(Math.pow(10,e)/1e4*t);return n(i)}var n=this.data("prologRunner");if(n&&n.prolog&&"running"==n.prolog.state){var r=this.find(".sparklines"),o=["global","local","trail"],a=["red","blue","green"],s=["Global ","Local ","Trail "],l=10;for(n.stacks||(n.stacks={global:{usage:[]},local:{usage:[]},trail:{usage:[]}}),i=0;i<o.length;i++){var c=o[i],u=t.stacks[c].limit,h=t.stacks[c].usage,d=Math.log10(h/u*1e4);n.stacks[c].limit=u,n.stacks[c].usage.length>=l&&(n.stacks[c].usage=n.stacks[c].usage.slice(1)),n.stacks[c].usage.push(d),r.sparkline(n.stacks[c].usage,{height:r.parent().height(),composite:i>0,chartRangeMin:0,chartRangeMax:4,lineColor:a[i],tooltipPrefix:s[i],tooltipSuffix:" bytes",tooltipChartTitle:0==i?"Stack usage":void 0,numberFormatter:function(t){return e(u,t)}})}}}},node_id=1;Node.prototype.node=function(){return $(this.my_node)},Node.prototype.unique_id=function(){return this.uid||(this.uid=node_id++),this.uid},$.fn.prologRunner=function(t){return methods[t]?methods[t].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof t&&t?void $.error("Method "+t+" does not exist on jQuery."+pluginName):methods._init.apply(this,arguments)}}(jQuery)}),define("gitty",["jquery","config","form","modal","laconic"],function(t,e,n,i){function r(e,n){function i(t){(e[t]||n[t])&&e[t]!=n[t]&&(r[t]={from:e[t],to:n[t]})}var r={};return i("author"),i("title"),i("data"),i("public"),i("example"),i("name"),(d=a(e.tags,n.tags))&&(r.tags=d),t.isEmptyObject(r)?null:r}function o(e,n){var i={};for(var r in e)if(e.hasOwnProperty(r)){switch(typeof e[r]){case"object":if(t.isArray(e[r])&&!a(e[r],n[r]))continue;break;case"string":case"boolean":if(n[r]==e[r])continue}i[r]=e[r]}return i}function a(e,n){function i(t,e){for(var n=[],i=0;i<e.length;i++)t.indexOf(e[i])<0&&n.push(e[i]);return n}var r,o={};return e=e||[],n=n||[],(r=i(e,n)).length>0&&(o.added=r),(r=i(n,e)).length>0&&(o.deleted=r),t.isEmptyObject(o)?null:o}return function(t){var o="gitty",a={_init:function(e){return this.each(function(){function n(e,n,i,r){var o={role:"presentation"},a=[];n&&a.push("active"),r&&a.push("disabled"),a!=[]&&(o.class=a.join(" "));var s=t.el.li(o,t.el.a({href:"#"+i,"data-toggle":"tab"},e));return s}var i,r=t(this),a=r.data(o)||{},s=e.meta;a.commits=[],a.commits[s.commit]=s,a.commit=s.commit,a.editor=e.editor,henabled=!Boolean(s.previous),i=t(t.el.div({class:"tab-content"})),r.append(t.el.ul({class:"nav nav-tabs"},n("Meta data",!0,"gitty-meta-data"),n("History",!1,"gitty-history",henabled),n("Changes",!1,"gitty-diff",henabled))),r.append(i),i.append(t.el.div({class:"tab-pane fade in active gitty-meta-data",id:"gitty-meta-data"})),r.find('[href="#gitty-meta-data"]').on("show.bs.tab",function(t){r.gitty("showMetaData")}),i.append(t.el.div({class:"tab-pane fade gitty-history",id:"gitty-history"})),r.find('[href="#gitty-history"]').on("show.bs.tab",function(t){r.gitty("showHistory")}),i.append(t.el.div({class:"tab-pane fade gitty-diff",id:"gitty-diff"})),r.find('[href="#gitty-diff"]').on("show.bs.tab",function(t){r.gitty("showDiff")}),r.data(o,a),r.gitty("showMetaData")})},title:function(e){var n=t.el.span("File ",t.el.span({class:"filename"},e.name));return"HEAD"!=e.symbolic&&e.commit&&t(n).append("@",t.el.span({class:"sha1 abbrev"},e.commit.substring(0,7))),n},showMetaData:function(){return this.each(function(){var e,i=t(this),r=i.data(o),a=i.find(".gitty-meta-data"),s=r.commits[r.commit];r.metaData!=r.commit&&(r.metaData=r.commit,a.html(""),e=t.el.form({class:"form-horizontal"},n.fields.fileName(s.name,s.public,s.example,!0),n.fields.title(s.title),n.fields.author(s.author),n.fields.date(s.time,"Date","date"),n.fields.tags(s.tags)),"HEAD"==s.symbolic&&t(e).append(n.fields.buttons({label:"Update meta data",action:function(t,e){return r.editor.storage("save",e,"only-meta-data"),!1}})),a.append(e))})},showHistory:function(){return this.each(function(){var r,a=t(this),s=a.data(o),l=a.find(".gitty-history"),c=s.commits[s.commit];if(!s.history){l.html(""),l.append(t.el.table({class:"table table-striped table-condensed gitty-history","data-click-to-select":!0,"data-single-select":!0},t.el.tr(t.el.th("Comment"),t.el.th("Date"),t.el.th("User"),t.el.th("Changed")),t.el.tbody())),r=n.widgets.glyphIconButton("play",{title:"Open the highlighted version in SWISH",class:"btn-primary"}),l.append(r),t(r).on("click",function(e){var n=a.find("tr.success");if(1==n.length){var i=n.data("commit");"HEAD"==s.commits[i].symbolic?file=s.commits[i].name:file=i,a.parents(".swish").swish("playFile",file),t("#ajaxModal").modal("hide")}return!1});var u=e.http.locations.web_storage+encodeURI(c.name);t.ajax({url:u,contentType:"application/json",type:"GET",data:{format:"history",depth:6,to:s.commit},success:function(t){a.gitty("fillHistoryTable",t),s.history=s.commit},error:function(t){i.ajaxError(jqXHR)}})}})},fillHistoryTable:function(e){function n(e){var n,i,o=t.el.span();if(e.previous){if((n=a.commits[e.previous])&&(i=r(e,n))){var s=0;for(var l in i)if(i.hasOwnProperty(l)){var c="name"==l?"forked "+n.name:l;t(o).append(0==s++?void 0:", ",t.el.span({class:"change-type"},c))}}}else t(o).append("initial");return o}for(var i=this,a=this.data(o),s=this.find(".table.gitty-history tbody"),l=0;l<e.length;l++){var c=e[l];a.commits[c.commit]||(a.commits[c.commit]=c)}for(var l=0;l<e.length;l++){var u,c=e[l];if(l==e.length-1&&c.previous&&!a.commit[c.previous])break;var h={"data-commit":c.commit};a.commit==c.commit&&(h.class="success"),u=t.el.tr(h,t.el.td({class:"commit-message"},c.commit_message||"No comment"),t.el.td({class:"date"},new Date(1e3*c.time).toLocaleString()),t.el.td({class:"author"},c.author||"No author"),t.el.td({class:"changes"},n(c))),s.append(u)}s.on("click","tr",function(e){var n=t(e.target).parents("tr"),r=n.data("commit");i.gitty("setCommit",r)})},setCommit:function(t){var e=this.data(o),n=this.parent(".modal-content").find("h2");return n.html(""),n.append(this.gitty("title",e.commits[t])),this.find("tr.success").removeClass("success"),this.find("tr[data-commit="+t+"]").addClass("success"),e.commit=t,this},showDiff:function(){return this.each(function(){var n=t(this),r=n.data(o);if(r.diff!=r.commit){n.find(".gitty-diff").html("");var a=e.http.locations.web_storage+encodeURI(r.commit);t.ajax({url:a,contentType:"application/json",type:"GET",data:{format:"diff"},success:function(t){n.gitty("fillDiff",t),r.diff=r.commit},error:function(t){i.ajaxError(t)}})}})},fillDiff:function(t){t.tags&&this.gitty("diffTags",t.tags),t.data&&this.gitty("udiffData",t.data)},diffTags:function(e){function n(e,n){o.append(t.el.span({class:"diff-tag "+n},e))}var i=this.find(".gitty-diff"),r=t(t.el.div({class:"diff-tags"},t.el.label("Tags"))),o=t(t.el.span({class:"diff-tags"}));if(r.append(o),e.deleted.length){o.append("Removed: ");for(var a=0;a<e.deleted.length;a++)n(e.deleted[a],"deleted")}if(e.added.length){o.append(e.deleted.length?", ":"","Added: ");for(var a=0;a<e.added.length;a++)n(e.added[a],"added")}return i.append(r),this},udiffData:function(e){for(var n=this.find(".gitty-diff"),i=e.split("\n"),r=t(t.el.pre({class:"udiff"})),o=0;o<i.length;o++){var a=i[o],s={"@":"udiff-hdr"," ":"udiff-ctx","+":"udiff-add","-":"udiff-del"};r.append(t.el.span({class:s[a.charAt(0)]},a),t.el.br())}n.append(r)}};t.fn.gitty=function(e){return a[e]?a[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery."+o):a._init.apply(this,arguments)}}(jQuery),{diffMeta:r,reduceMeta:o,diffTags:a}});var __whitespace={" ":!0,"\t":!0,"\n":!0,"\f":!0,"\r":!0},difflib={defaultJunkFunction:function(t){return __whitespace.hasOwnProperty(t)},stripLinebreaks:function(t){return t.replace(/^[\n\r]*|[\n\r]*$/g,"")},stringAsLines:function(t){for(var e=t.indexOf("\n"),n=t.indexOf("\r"),i=e>-1&&n>-1||n<0?"\n":"\r",r=t.split(i),o=0;o<r.length;o++)r[o]=difflib.stripLinebreaks(r[o]);return r},__reduce:function(t,e,n){if(null!=n)var i=n,r=0;else{if(!e)return null;var i=e[0],r=1}for(;r<e.length;r++)i=t(i,e[r]);return i},__ntuplecomp:function(t,e){for(var n=Math.max(t.length,e.length),i=0;i<n;i++){if(t[i]<e[i])return-1;if(t[i]>e[i])return 1}return t.length==e.length?0:t.length<e.length?-1:1},__calculate_ratio:function(t,e){return e?2*t/e:1},__isindict:function(t){return function(e){return t.hasOwnProperty(e)}},__dictget:function(t,e,n){return t.hasOwnProperty(e)?t[e]:n},SequenceMatcher:function(t,e,n){this.set_seqs=function(t,e){this.set_seq1(t),this.set_seq2(e)},this.set_seq1=function(t){t!=this.a&&(this.a=t,this.matching_blocks=this.opcodes=null)},this.set_seq2=function(t){t!=this.b&&(this.b=t,this.matching_blocks=this.opcodes=this.fullbcount=null,this.__chain_b())},this.__chain_b=function(){for(var t=this.b,e=t.length,n=this.b2j={},i={},r=0;r<t.length;r++){var o=t[r];if(n.hasOwnProperty(o)){var a=n[o];e>=200&&100*a.length>e?(i[o]=1,delete n[o]):a.push(r)}else n[o]=[r]}for(var o in i)i.hasOwnProperty(o)&&delete n[o];var s=this.isjunk,l={};if(s){for(var o in i)i.hasOwnProperty(o)&&s(o)&&(l[o]=1,delete i[o]);for(var o in n)n.hasOwnProperty(o)&&s(o)&&(l[o]=1,delete n[o])}this.isbjunk=difflib.__isindict(l),this.isbpopular=difflib.__isindict(i)},this.find_longest_match=function(t,e,n,i){for(var r,o=this.a,a=this.b,s=this.b2j,l=this.isbjunk,c=t,u=n,h=0,d=null,f={},p=[],g=t;g<e;g++){var m={},v=difflib.__dictget(s,o[g],p);for(var y in v)if(v.hasOwnProperty(y)){if(d=v[y],d<n)continue;if(d>=i)break;m[d]=r=difflib.__dictget(f,d-1,0)+1,r>h&&(c=g-r+1,u=d-r+1,h=r)}f=m}for(;c>t&&u>n&&!l(a[u-1])&&o[c-1]==a[u-1];)c--,u--,h++;for(;c+h<e&&u+h<i&&!l(a[u+h])&&o[c+h]==a[u+h];)h++;for(;c>t&&u>n&&l(a[u-1])&&o[c-1]==a[u-1];)c--,u--,h++;for(;c+h<e&&u+h<i&&l(a[u+h])&&o[c+h]==a[u+h];)h++;return[c,u,h]},this.get_matching_blocks=function(){if(null!=this.matching_blocks)return this.matching_blocks;for(var t,e,n,i,r,o,a,s,l,c=this.a.length,u=this.b.length,h=[[0,c,0,u]],d=[];h.length;)r=h.pop(),t=r[0],e=r[1],n=r[2],i=r[3],l=this.find_longest_match(t,e,n,i),o=l[0],a=l[1],s=l[2],s&&(d.push(l),t<o&&n<a&&h.push([t,o,n,a]),o+s<e&&a+s<i&&h.push([o+s,e,a+s,i]));d.sort(difflib.__ntuplecomp);var f,p,g,m=0,v=0,y=0,x=0,b=[];for(var _ in d)d.hasOwnProperty(_)&&(x=d[_],f=x[0],p=x[1],g=x[2],m+y==f&&v+y==p?y+=g:(y&&b.push([m,v,y]),m=f,v=p,y=g));return y&&b.push([m,v,y]),b.push([c,u,0]),this.matching_blocks=b,this.matching_blocks},this.get_opcodes=function(){if(null!=this.opcodes)return this.opcodes;var t=0,e=0,n=[];this.opcodes=n;var i,r,o,a,s,l=this.get_matching_blocks();for(var c in l)l.hasOwnProperty(c)&&(i=l[c],r=i[0],o=i[1],a=i[2],s="",t<r&&e<o?s="replace":t<r?s="delete":e<o&&(s="insert"),s&&n.push([s,t,r,e,o]),t=r+a,e=o+a,a&&n.push(["equal",r,t,o,e]));return n},this.get_grouped_opcodes=function(t){t||(t=3);var e=this.get_opcodes();e||(e=[["equal",0,1,0,1]]);var n,i,r,o,a,s;"equal"==e[0][0]&&(n=e[0],i=n[0],r=n[1],o=n[2],a=n[3],s=n[4],e[0]=[i,Math.max(r,o-t),o,Math.max(a,s-t),s]),"equal"==e[e.length-1][0]&&(n=e[e.length-1],i=n[0],r=n[1],o=n[2],a=n[3],s=n[4],e[e.length-1]=[i,r,Math.min(o,r+t),a,Math.min(s,a+t)]);var l=t+t,c=[],u=[];for(var h in e)e.hasOwnProperty(h)&&(n=e[h],i=n[0],r=n[1],o=n[2],a=n[3],s=n[4],"equal"==i&&o-r>l&&(c.push([i,r,Math.min(o,r+t),a,Math.min(s,a+t)]),u.push(c),c=[],r=Math.max(r,o-t),a=Math.max(a,s-t)),c.push([i,r,o,a,s]));return!c||1==c.length&&"equal"==c[0][0]||u.push(c),u},this.ratio=function(){return matches=difflib.__reduce(function(t,e){return t+e[e.length-1]},this.get_matching_blocks(),0),difflib.__calculate_ratio(matches,this.a.length+this.b.length)},this.quick_ratio=function(){var t,e;if(null==this.fullbcount){this.fullbcount=t={};for(var n=0;n<this.b.length;n++)e=this.b[n],t[e]=difflib.__dictget(t,e,0)+1}t=this.fullbcount;for(var i={},r=difflib.__isindict(i),o=numb=0,n=0;n<this.a.length;n++)e=this.a[n],r(e)?numb=i[e]:numb=difflib.__dictget(t,e,0),i[e]=numb-1,numb>0&&o++;return difflib.__calculate_ratio(o,this.a.length+this.b.length)},this.real_quick_ratio=function(){var t=this.a.length,e=this.b.length;return _calculate_ratio(Math.min(t,e),t+e)},this.isjunk=n?n:difflib.defaultJunkFunction,this.a=this.b=null,this.set_seqs(t,e)}};define("difflib",function(){}),diffview={buildView:function(t){function e(t,e){var n=document.createElement(t);return n.className=e,n}function n(t,e){var n=document.createElement(t);return n.appendChild(document.createTextNode(e)),n}function i(t,e,n){var i=document.createElement(t);return i.className=e,i.appendChild(document.createTextNode(n)),i}function r(t,r,o,a,s){return r<o?(t.appendChild(n("th",(r+1).toString())),t.appendChild(i("td",s,a[r].replace(/\t/g,"    "))),r+1):(t.appendChild(document.createElement("th")),t.appendChild(e("td","empty")),r)}function o(t,e,r,o,a){t.appendChild(n("th",null==e?"":(e+1).toString())),t.appendChild(n("th",null==r?"":(r+1).toString())),t.appendChild(i("td",a,o[null!=e?e:r].replace(/\t/g,"    ")))}var a=t.baseTextLines,s=t.newTextLines,l=t.opcodes,c=t.baseTextName?t.baseTextName:"Base Text",u=t.newTextName?t.newTextName:"New Text",h=t.contextSize,d=0==t.viewType||1==t.viewType?t.viewType:0;if(null==a)throw"Cannot build diff view; baseTextLines is not defined.";if(null==s)throw"Cannot build diff view; newTextLines is not defined.";if(!l)throw"Canno build diff view; opcodes is not defined.";var f=document.createElement("thead"),p=document.createElement("tr");f.appendChild(p),d?(p.appendChild(document.createElement("th")),p.appendChild(document.createElement("th")),p.appendChild(i("th","texttitle",c+" vs. "+u))):(p.appendChild(document.createElement("th")),p.appendChild(i("th","texttitle",c)),p.appendChild(document.createElement("th")),p.appendChild(i("th","texttitle",u))),f=[f];for(var g,m=[],v=0;v<l.length;v++){code=l[v],change=code[0];for(var y=code[1],x=code[2],b=code[3],_=code[4],w=Math.max(x-y,_-b),S=[],C=[],T=0;T<w;T++){if(h&&l.length>1&&(v>0&&T==h||0==v&&0==T)&&"equal"==change){var k=w-(0==v?1:2)*h;if(k>1){if(S.push(p=document.createElement("tr")),y+=k,b+=k,T+=k-1,p.appendChild(n("th","...")),d||p.appendChild(i("td","skip","")),p.appendChild(n("th","...")),p.appendChild(i("td","skip","")),v+1==l.length)break;continue}}S.push(p=document.createElement("tr")),d?"insert"==change?o(p,null,b++,s,change):"replace"==change?(C.push(g=document.createElement("tr")),y<x&&o(p,y++,null,a,"delete"),b<_&&o(g,null,b++,s,"insert")):"delete"==change?o(p,y++,null,a,change):o(p,y++,b++,a,change):(y=r(p,y,x,a,change),b=r(p,b,_,s,change))}for(var T=0;T<S.length;T++)m.push(S[T]);for(var T=0;T<C.length;T++)m.push(C[T])}m.push(p=i("th","author","diff view generated by ")),p.setAttribute("colspan",d?3:4),p.appendChild(g=n("a","jsdifflib")),g.setAttribute("href","http://github.com/cemerick/jsdifflib"),f.push(p=document.createElement("tbody"));for(var v in m)m.hasOwnProperty(v)&&p.appendChild(m[v]);p=e("table","diff"+(d?" inlinediff":""));for(var v in f)f.hasOwnProperty(v)&&p.appendChild(f[v]);return p}},define("diffview",function(){}),define("diff",["jquery","difflib","diffview"],function(){!function(t){var e="diff",n={_init:function(e){return this.each(function(){var n=difflib.stringAsLines(e.base),i=difflib.stringAsLines(e.head),r=new difflib.SequenceMatcher(n,i),o=r.get_opcodes(),a=void 0==e.contextSize?3:e.contextSize;this.appendChild(diffview.buildView({baseTextLines:n,newTextLines:i,opcodes:o,baseTextName:e.baseName||"Base text",newTextName:e.headName||"Current text",contextSize:a,viewType:t("inline").checked?1:0}))})}};t.fn.diff=function(i){return n[i]?n[i].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof i&&i?void t.error("Method "+i+" does not exist on jQuery."+e):n._init.apply(this,arguments)}}(jQuery)}),define("storage",["jquery","config","modal","form","gitty","history","tabbed","utils","laconic","diff"],function(t,e,n,i,r,o,a,s){function l(t){return t?t.split(".").slice(0,-1).join("."):null}function c(t){return t?t.split("/").pop():null}function u(e){if(e){for(var n=e.split("\n"),i=t(t.el.pre({class:"udiff"})),r=0;r<n.length;r++){var o=n[r],a={"@":"udiff-hdr"," ":"udiff-ctx","+":"udiff-add","-":"udiff-del"};i.append(t.el.span({class:a[o.charAt(0)]},o),t.el.br())}return i}return t(t.el.div({class:"udiff"},"No changes"))}function h(e){function n(e,n){r.append(t.el.span({class:n},e),t.el.br())}for(var i=e.split("\n"),r=t(t.el.pre({class:"udiff"})),o=null,a=0;a<i.length;a++){var s=i[a];"<<<<<<<"==s?(n(s,"edit-conflict-sep"),o="edit-conflict-me"):"edit-conflict-me"==o&&"======="==s?(n(s,"edit-conflict-sep"),o="edit-conflict-them"):"edit-conflict-them"==o&&">>>>>>>"==s?(n(s,"edit-conflict-sep"),o=null):o&&n(s,o)}return r}!function(t){function d(e,n){var i=t.el.table({class:"table table-striped"});t(i).append(t.el.tr(t.el.th("Path"),t.el.td(n.path))),t(i).append(t.el.tr(t.el.th("Modified"),t.el.td(new Date(1e3*n.last_modified).toLocaleString()))),t(i).append(t.el.tr(t.el.th("Loaded"),t.el.td(n.modified_since_loaded?"yes (modified)":n.loaded?"yes":"no"))),e.append(i)}function f(t,e){return"file_exists"==e.error?t+": file exists: "+e.file:JSON.stringify(e)}var p="storage",g={typeName:"program",is_clean:!0,markClean:function(t){}},m={_init:function(e){return this.each(function(){function n(e,n){var i=t(e.target);if(i.hasClass("storage")&&i.is(":visible")){var r=i.storage.apply(i,Array.prototype.slice.call(arguments,1));if("propagate"==r)return}e.stopPropagation()}var i=t(this),r=t.extend({},g,e);i.data(p,r),i.addClass("storage"),i.storage("update_tab_title"),i.on("source",function(t,e){n(t,"setSource",e)}),i.on("save",function(t,e){n(t,"save",e)}),i.on("download",function(t){n(t,"download")}),i.on("fileInfo",function(t){n(t,"info")}),i.on("diff",function(t){n(t,"diff")}),i.on("revert",function(t){n(t,"revert")}),i.on("reload",function(t){n(t,"reload")}),i.on("chat-about-file",function(t){n(t,"chat")}),i.on("follow-file",function(t){n(t,"follow")}),i.on("activate-tab",function(t){}),i.on("data-is-clean",function(t,e){i.storage("markClean",e)}),i.on("fullscreen",function(t,e){e||i.storage("update_tab_title")}),t(window).bind("beforeunload",function(t){return i.storage("unload","beforeunload",t)}),i.storage("chat",(r.meta||{}).chat||"update")})},setSource:function(n){var i=this.data(p),r=a.tabTypes[i.typeName];if("string"==typeof n&&(n={data:n}),n.newTab)return"propagate";if(n.meta&&n.meta.name||n.url){var s=n.meta&&n.meta.name?n.meta.name:n.url,l=s.split(".").pop();if(l!=r.dataType)return"propagate"}return 0!=this.storage("unload","setSource")&&(n.meta?(i.file=n.meta.name,i.meta=n.meta,i.url=null,"HEAD"==n.meta.symbolic&&(n.url=e.http.locations.web_storage+n.meta.name)):(i.file=null,i.meta=null),i.url=n.url,i.st_type=n.st_type,i.chats=n.chats,i.setValue(n),i.cleanGeneration=i.changeGen(),i.cleanData=n.data,i.cleanCheckpoint=n.cleanCheckpoint||"load",this.storage("update_tab_title"),n.url||(n.url=e.http.locations.swish),n.noHistory||o.push(n),this.storage("chat",n.chat||(n.meta||{}).chat||"update"),t(".storage").storage("chat_status",!0),this)},update_tab_title:function(){return this.each(function(){var e=t(this),n=e.data(p),i=a.tabTypes[n.typeName],r=l(n.file)||l(c(n.url))||i.label;e.tabbed("title",r,i.dataType),e.tabbed("chats",n.chats)})},load:function(i){if(i){var r=this;this.data(p);t.ajax({url:e.http.locations.web_storage+i,dataType:"text",success:function(t){r.storage("setSource",{data:t,meta:{name:i}})},error:function(t){n.ajaxError(jqXHR)}})}return this},revert:function(){var t=this.data(p);return t.setValue(t.cleanData),t.cleanGeneration=t.changeGen(),t.markClean(!0),this},reload:function(){var i=this,r=i.data(p),o=e.http.locations.web_storage+encodeURI(r.file);return t.ajax({url:o,type:"GET",data:{format:"json"},success:function(e){e.url=o,e.st_type="gitty",e.noHistory=!0,i.storage("setSource",e),t("#chat").trigger("send",{type:"reloaded",file:r.file,commit:e.meta.commit})},error:function(t){n.ajaxError(t)}}),this},save:function(i,s){var l,c=this.data(p),u=a.tabTypes[c.typeName],h=e.http.locations.web_storage,d="POST",g=this;if(("filesys"==c.st_type||"external"==c.st_type)&&c.url)return this.storage("saveURL");if("as"==i)return this.storage("saveAs"),this;if(!c.file||i&&i.default||i&&i.name!=c.file||(h+=encodeURI(c.file),d="PUT"),"only-meta-data"==s){if(i=r.reduceMeta(i,c.meta),t.isEmptyObject(i))return void alert("No change");l={update:"meta-data"}}else if("POST"==d)l={data:c.getValue(),type:u.dataType};else if(c.isClean(c.cleanGeneration)){if(null==r.diffTags(c.meta.tags,i.tags))return void alert("No change")}else l={data:c.getValue(),type:u.dataType};return i&&(l.meta=i),c.meta&&(l.previous=c.meta.commit),t.ajax({url:h,dataType:"json",contentType:"application/json",type:d,data:JSON.stringify(l),success:function(e){e.error?n.alert(f("Could not save",e)):(c.meta&&c.meta.example!=e.meta.example&&g.closest(".swish").trigger("examples-changed"),c.file=e.file,c.meta=e.meta,c.st_type="gitty",c.cleanGeneration=c.changeGen(),c.cleanData=c.getValue(),c.cleanCheckpoint="save",c.markClean(!0),n.feedback({html:"Saved",owner:g}),"POST"==d&&(c.chats=0),g.storage("update_tab_title"),g.storage("chat",(c.meta||{}).chat||"update"),t(".storage").storage("chat_status",!0),o.push(e))},error:function(t,e,i){409==t.status?g.storage("resolveEditConflict",JSON.parse(t.responseText)):403==t.status?n.alert("Permission denied.  Please try a different name"):(alert('Save failed; click "ok" to try again'),g.storage("saveAs"))}}),this},saveAs:function(e){function n(){this.append(t.el.form({class:"form-horizontal"},i.fields.hidden("identity",d.identity),i.fields.hidden("default",s.default),i.fields.hidden("chat",s.chat),d.identity?void 0:i.fields.hidden("avatar",d.avatar),i.fields.fileName(u?null:o.file,s.public,s.example),i.fields.title(s.title),i.fields.author(f,d.identity),c?i.fields.commit_message():void 0,i.fields.tags(s.tags),i.fields.modify(g,r),i.fields.follow(d.email),i.fields.buttons({label:u?"Fork "+h.label:c?"Update "+h.label:"Save "+h.label,action:function(t,e){return l.storage("save",e),!1}})))}var r,o=this.data(p),s=o.meta||{},l=this,c=Boolean(o.file),u=o.meta&&"HEAD"!=s.symbolic&&!s.default,h=a.tabTypes[o.typeName],d=t("#login").login("get_profile",["display_name","avatar","email","identity"]),f=d.display_name,g=s.modify;return void 0===s.public&&(s.public=!0),g||(g=d.identity?["login","owner"]:["any","login","owner"]),r=d.identity==s.identity||d.identity&&!(s.identity||s.user),e=e||{},i.showDialog({title:e.title?e.title:u?"Fork from "+s.commit.substring(0,7):c?"Save new version":"Save "+h.label+" as",body:n}),this},saveURL:function(){var e=this.data(p),i=e.getValue(),r=a.type(e.url)||{},o=this;return e.isClean(e.cleanGeneration)?(alert("No change"),this):(t.ajax({url:e.url,dataType:"json",contentType:r.contentType||"text/plain",type:"PUT",data:i,success:function(t){t.error?n.alert(f("Could not save",t)):(e.cleanGeneration=e.changeGen(),e.cleanData=e.getValue(),e.cleanCheckpoint="save",e.markClean(!0),n.feedback({html:"Saved",owner:o}))},error:function(t){if(403==t.status){var i=e.url;delete e.meta,delete e.st_type,delete e.url,o.storage("saveAs",{title:"<div class='warning'>Could not save to "+i+"</div> Save a copy as"})}else n.ajaxError(t)}}),this)},resolveEditConflict:function(e){function n(){function n(e,n,i,r){var o={role:"presentation"},a=[];n&&a.push("active"),r&&a.push("disabled"),a!=[]&&(o.class=a.join(" "));var s=t.el.li(o,t.el.a({href:"#"+i,"data-toggle":"tab"},e));return s}function i(e,n){tabs.append(t.el.div({class:"tab-pane fade "+e+" "+n,id:e})),o.find('[href="#'+e+'"]').on("show.bs.tab",function(t){o.storage(e)})}var o=t(this);o.addClass("edit-conflict"),tabs=t(t.el.div({class:"tab-content"})),o.append(t.el.ul({class:"nav nav-tabs"},n("My edits",!0,"merge-my-edits"),n("Their edits",!1,"merge-server-edits"),n("Conflicts",!1,"merge-conflicts"))),o.append(tabs),i("merge-my-edits","in active"),i("merge-server-edits",""),i("merge-conflicts",""),o.data("edit-conflict",e),o.storage("merge-my-edits"),o.append(r=t.el.div({class:"form-group"},t.el.button({name:"merge",class:"btn btn-primary"},"Merge"),t.el.button({name:"discard-my-edits",class:"btn btn-primary"},"Discard my changes"),t.el.button({name:"discard-server-edits",class:"btn btn-primary"},"Discard changes on server"),t.el.button({name:"cancel",class:"btn btn-danger","data-dismiss":"modal"},"Cancel"))),t(r).on("click","button",function(e){return o.storage("editConflictAction",t(e.target).attr("name")),t(e.target).parents(".modal").modal("hide"),e.preventDefault(),!1})}var r;return e.storage=this,i.showDialog({title:"Edit conflict",body:n}),this},"merge-my-edits":function(){var e=t(this).data("edit-conflict");t(this).find(".merge-my-edits").empty().append(u(e.edit.me.data))},"merge-server-edits":function(){var e=t(this).data("edit-conflict");t(this).find(".merge-server-edits").empty().append(u(e.edit.server.data))},"merge-conflicts":function(){var e=t(this).data("edit-conflict"),n=t(this).find(".merge-conflicts");n.empty(),0!=e.patch_status?n.append(h(e.merged)):n.html("No merge conflicts")},editConflictAction:function(e){var n=t(this).data("edit-conflict"),i=t(n.storage).data(p);if("merge"==e)i.setValue(n.merged),i.meta.commit=n.edit.server.to.commit;else if("discard-my-edits"==e)t(n.storage).storage("reload");else if("discard-server-edits"==e){var i=t(n.storage).data(p);i.meta.commit=n.edit.server.to.commit}},download:function(){var e=this.data(p),n=a.tabTypes[e.typeName],i=e.getValue(),r="data:text/plain;charset=UTF-8,"+encodeURIComponent(i),o=t.el.a({href:r,download:e.file||"swish."+n.dataType});return this.append(o),o.click(),t(o).remove(),this},getData:function(e){var n=[];return e=e||{},this.each(function(){function i(t){r.meta[t]&&(o[t]=r.meta[t])}var r=t(this).data(p),o={};if(o.type=r.type,r.url&&(o.url=r.url),r.meta&&(i("name"),i("path"),i("modified"),i("loaded"),i("modified_since_loaded"),i("module")),1==t(this).closest(".tab-pane.active").length&&(o.active=!0),!e.type||e.name&&e.name.split(".").pop()==e.type){if(e.data){var a=r.getValue();o.modified=a!=r.cleanData,(1==e.data||o.modified&&"if_modified"==e.data)&&(o.data=a)}n.push(o)}}),n},match:function(e){for(var n=0;n<this.length;n++){me=t(this[n]);var i=me.data(p);if(e.file&&e.file==i.file)return me;if(e.url&&e.url==i.url)return me}},expose:function(t){var e=this.closest(".tab-pane");if(1==e.length){var i=e.closest(".tabbed");return i.tabbed("show",e.attr("id")),t&&n.feedback({html:t,owner:this}),this}},info:function(){function e(){"gitty"==r.st_type?(r.editor=a,this.gitty(r)):"filesys"==r.st_type?d(this,o):r.st_type||this.append(t.el.p("The source is not associated with a file. ","Use ",t.el.b("Save ...")," to save the source with meta information."))}var n,r=this.data(p),o=r.meta||{},a=this;return n="gitty"==r.st_type?t().gitty("title",o):"filesys"==r.st_type?"File system -- "+c(o.path):"external"==r.st_type?"External -- "+r.url:"Scratch source",
-i.showDialog({title:n,body:e}),this},diff:function(){function e(){var e=t.el.div(),i=n.getValue();if(this.append(e),i==n.cleanData)t(e).append(t.el.p("No changes"));else{var o,a=t.el.div({class:"btn-group diff",role:"group"},t.el.button({name:"close","data-dismiss":"modal",class:"btn btn-primary"},"Close"),o=t.el.button({name:"revert",class:"btn btn-danger","data-dismiss":"modal"},"Revert changes"));t(e).diff({base:n.cleanData,head:i,baseName:r[n.cleanCheckpoint]}),this.append(t.el.div({class:"wrapper text-center"},a)),t(o).on("click",function(e){t(".swish-event-receiver").trigger("revert")}),this.parents("div.modal-dialog").addClass("modal-wide")}}var n=this.data(p),r={load:"Loaded text",new:"New text",save:"Saved text"};return i.showDialog({title:"Changes since "+r[n.cleanCheckpoint],body:e}),this},getSelection:function(){if(this.hasClass("prolog-editor")){var t=this.prologEditor("getSelection");return t?t[0].selections:null}return this.hasClass("notebook")?this.notebook("getSelection"):void console.log(t)},getSelectionLabel:function(t){function e(t){for(var e="",n=0;n<t.length;n++){var i=t[n];""!=e&&(e+=";"),e+="@L"+(i.from.line+1),i.to.line!=i.from.line&&(e+="-"+(i.to.line+1))}return e}if(t[0].cell){for(var n="",i=0;i<t.length;i++){var r=t[i];""!=n&&(n+=","),n+=r.cell+e(r.selections)}return n}return e(t)},restoreSelection:function(t){return this.hasClass("prolog-editor")?this.prologEditor("restoreSelection",t):this.hasClass("notebook")?this.notebook("restoreSelection",t):void console.log(t)},docid:function(t,e){if(e=e||this.data(p),!t||t==e.st_type){var n=e.meta||{};if("gitty"==e.st_type)return"gitty:"+n.name;if("filesys"==e.st_type)return"filesys:"+n.path;if("external"==e.st_type)return"url:"+e.url}},chat:function(e){var i=this.data(p),r=this.storage("docid","gitty");if(r){var o=this.closest(".tab-pane").find(".chatroom");if(o.length>0)"update"==e?o.chatroom("docid",r,"close"):s.flash(o);else if("update"!=e){var a="large"==e?60:20;o=t(t.el.div({class:"chatroom"})),o.chatroom({docid:r}),this.tile("split",o,"below",a,150).addClass("chat-container")}}else"update"==e?this.storage("close_chat"):i.st_type?n.alert("The chat facility is only available for user-saved files.<br>You can use the <b>File/Chat help room</b> menu to access the shared chat room."):n.alert("The chat facility is bound to named documents.<br>Please save your document and try again.");return this},close_chat:function(){this.closest(".chat-container").find(".chatroom").chatroom("close")},chat_message:function(e){return e.displayed||0!=e.create?this.each(function(){var n=t(this);if(e.docid==n.storage("docid")){var i=n.data(p);i.chats&&i.chats.count?i.chats.count++:i.chats={count:1},n.storage("update_tab_title")}}):this},follow:function(){var t=this.storage("docid","gitty");t?n.server_form({title:"Follow file options",url:e.http.locations.follow_file_options,data:{docid:t}}):n.alert("Sorry, can only follow files")},unload:function(t,e){var n=this.data(p);if(n&&(n.meta&&o.addRecent({st_type:"gitty",id:n.meta.name}),n.cleanData!=n.getValue())){if("beforeunload"==t){var i="The source editor has unsaved changes.\nThese will be lost if you leave the page";return e=e||window.event,e&&(e.returnValue=i),i}var i="The source editor has unsaved changes.\nThese will be lost"+("setSource"==t?" if you load a new program":"closetab"==t?" close this tab":"");return confirm(i)}},close:function(){},markClean:function(t){var e=this.data(p);e.is_clean=t},chat_status:function(e){var n=[];this.each(function(){var e=t(this).data(p);if("gitty"==e.st_type&&e.meta&&e.meta.name){var i={file:e.meta.name};e.is_clean||(i.modified=!0),t(this).is(":visible")&&(i.visible=!0),n.push(i)}}),(e||n.length>0)&&t("#chat").trigger("send",{type:"has-open-files",files:n})}};t.fn.storage=function(e){return m[e]?m[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery."+p):m._init.apply(this,arguments)}}(jQuery)}),function(){"use strict";function t(t){t?(c[0]=c[16]=c[1]=c[2]=c[3]=c[4]=c[5]=c[6]=c[7]=c[8]=c[9]=c[10]=c[11]=c[12]=c[13]=c[14]=c[15]=0,this.blocks=c):this.blocks=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],this.h0=1732584193,this.h1=4023233417,this.h2=2562383102,this.h3=271733878,this.h4=3285377520,this.block=this.start=this.bytes=0,this.finalized=this.hashed=!1,this.first=!0}var e="object"==typeof window?window:{},n=!e.JS_SHA1_NO_NODE_JS&&"object"==typeof process&&process.versions&&process.versions.node;n&&(e=global);var i=!e.JS_SHA1_NO_COMMON_JS&&"object"==typeof module&&module.exports,r="function"==typeof define&&define.amd,o="0123456789abcdef".split(""),a=[-2147483648,8388608,32768,128],s=[24,16,8,0],l=["hex","array","digest","arrayBuffer"],c=[],u=function(e){return function(n){return new t(!0).update(n)[e]()}},h=function(){var e=u("hex");n&&(e=d(e)),e.create=function(){return new t},e.update=function(t){return e.create().update(t)};for(var i=0;i<l.length;++i){var r=l[i];e[r]=u(r)}return e},d=function(t){var e=require("crypto"),n=require("buffer").Buffer,i=function(i){if("string"==typeof i)return e.createHash("sha1").update(i,"utf8").digest("hex");if(i.constructor===ArrayBuffer)i=new Uint8Array(i);else if(void 0===i.length)return t(i);return e.createHash("sha1").update(new n(i)).digest("hex")};return i};t.prototype.update=function(t){if(!this.finalized){var n="string"!=typeof t;n&&t.constructor===e.ArrayBuffer&&(t=new Uint8Array(t));for(var i,r,o=0,a=t.length||0,l=this.blocks;o<a;){if(this.hashed&&(this.hashed=!1,l[0]=this.block,l[16]=l[1]=l[2]=l[3]=l[4]=l[5]=l[6]=l[7]=l[8]=l[9]=l[10]=l[11]=l[12]=l[13]=l[14]=l[15]=0),n)for(r=this.start;o<a&&r<64;++o)l[r>>2]|=t[o]<<s[3&r++];else for(r=this.start;o<a&&r<64;++o)i=t.charCodeAt(o),i<128?l[r>>2]|=i<<s[3&r++]:i<2048?(l[r>>2]|=(192|i>>6)<<s[3&r++],l[r>>2]|=(128|63&i)<<s[3&r++]):i<55296||i>=57344?(l[r>>2]|=(224|i>>12)<<s[3&r++],l[r>>2]|=(128|i>>6&63)<<s[3&r++],l[r>>2]|=(128|63&i)<<s[3&r++]):(i=65536+((1023&i)<<10|1023&t.charCodeAt(++o)),l[r>>2]|=(240|i>>18)<<s[3&r++],l[r>>2]|=(128|i>>12&63)<<s[3&r++],l[r>>2]|=(128|i>>6&63)<<s[3&r++],l[r>>2]|=(128|63&i)<<s[3&r++]);this.lastByteIndex=r,this.bytes+=r-this.start,r>=64?(this.block=l[16],this.start=r-64,this.hash(),this.hashed=!0):this.start=r}return this}},t.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var t=this.blocks,e=this.lastByteIndex;t[16]=this.block,t[e>>2]|=a[3&e],this.block=t[16],e>=56&&(this.hashed||this.hash(),t[0]=this.block,t[16]=t[1]=t[2]=t[3]=t[4]=t[5]=t[6]=t[7]=t[8]=t[9]=t[10]=t[11]=t[12]=t[13]=t[14]=t[15]=0),t[15]=this.bytes<<3,this.hash()}},t.prototype.hash=function(){var t,e,n,i=this.h0,r=this.h1,o=this.h2,a=this.h3,s=this.h4,l=this.blocks;for(e=16;e<80;++e)n=l[e-3]^l[e-8]^l[e-14]^l[e-16],l[e]=n<<1|n>>>31;for(e=0;e<20;e+=5)t=r&o|~r&a,n=i<<5|i>>>27,s=n+t+s+1518500249+l[e]<<0,r=r<<30|r>>>2,t=i&r|~i&o,n=s<<5|s>>>27,a=n+t+a+1518500249+l[e+1]<<0,i=i<<30|i>>>2,t=s&i|~s&r,n=a<<5|a>>>27,o=n+t+o+1518500249+l[e+2]<<0,s=s<<30|s>>>2,t=a&s|~a&i,n=o<<5|o>>>27,r=n+t+r+1518500249+l[e+3]<<0,a=a<<30|a>>>2,t=o&a|~o&s,n=r<<5|r>>>27,i=n+t+i+1518500249+l[e+4]<<0,o=o<<30|o>>>2;for(;e<40;e+=5)t=r^o^a,n=i<<5|i>>>27,s=n+t+s+1859775393+l[e]<<0,r=r<<30|r>>>2,t=i^r^o,n=s<<5|s>>>27,a=n+t+a+1859775393+l[e+1]<<0,i=i<<30|i>>>2,t=s^i^r,n=a<<5|a>>>27,o=n+t+o+1859775393+l[e+2]<<0,s=s<<30|s>>>2,t=a^s^i,n=o<<5|o>>>27,r=n+t+r+1859775393+l[e+3]<<0,a=a<<30|a>>>2,t=o^a^s,n=r<<5|r>>>27,i=n+t+i+1859775393+l[e+4]<<0,o=o<<30|o>>>2;for(;e<60;e+=5)t=r&o|r&a|o&a,n=i<<5|i>>>27,s=n+t+s-1894007588+l[e]<<0,r=r<<30|r>>>2,t=i&r|i&o|r&o,n=s<<5|s>>>27,a=n+t+a-1894007588+l[e+1]<<0,i=i<<30|i>>>2,t=s&i|s&r|i&r,n=a<<5|a>>>27,o=n+t+o-1894007588+l[e+2]<<0,s=s<<30|s>>>2,t=a&s|a&i|s&i,n=o<<5|o>>>27,r=n+t+r-1894007588+l[e+3]<<0,a=a<<30|a>>>2,t=o&a|o&s|a&s,n=r<<5|r>>>27,i=n+t+i-1894007588+l[e+4]<<0,o=o<<30|o>>>2;for(;e<80;e+=5)t=r^o^a,n=i<<5|i>>>27,s=n+t+s-899497514+l[e]<<0,r=r<<30|r>>>2,t=i^r^o,n=s<<5|s>>>27,a=n+t+a-899497514+l[e+1]<<0,i=i<<30|i>>>2,t=s^i^r,n=a<<5|a>>>27,o=n+t+o-899497514+l[e+2]<<0,s=s<<30|s>>>2,t=a^s^i,n=o<<5|o>>>27,r=n+t+r-899497514+l[e+3]<<0,a=a<<30|a>>>2,t=o^a^s,n=r<<5|r>>>27,i=n+t+i-899497514+l[e+4]<<0,o=o<<30|o>>>2;this.h0=this.h0+i<<0,this.h1=this.h1+r<<0,this.h2=this.h2+o<<0,this.h3=this.h3+a<<0,this.h4=this.h4+s<<0},t.prototype.hex=function(){this.finalize();var t=this.h0,e=this.h1,n=this.h2,i=this.h3,r=this.h4;return o[t>>28&15]+o[t>>24&15]+o[t>>20&15]+o[t>>16&15]+o[t>>12&15]+o[t>>8&15]+o[t>>4&15]+o[15&t]+o[e>>28&15]+o[e>>24&15]+o[e>>20&15]+o[e>>16&15]+o[e>>12&15]+o[e>>8&15]+o[e>>4&15]+o[15&e]+o[n>>28&15]+o[n>>24&15]+o[n>>20&15]+o[n>>16&15]+o[n>>12&15]+o[n>>8&15]+o[n>>4&15]+o[15&n]+o[i>>28&15]+o[i>>24&15]+o[i>>20&15]+o[i>>16&15]+o[i>>12&15]+o[i>>8&15]+o[i>>4&15]+o[15&i]+o[r>>28&15]+o[r>>24&15]+o[r>>20&15]+o[r>>16&15]+o[r>>12&15]+o[r>>8&15]+o[r>>4&15]+o[15&r]},t.prototype.toString=t.prototype.hex,t.prototype.digest=function(){this.finalize();var t=this.h0,e=this.h1,n=this.h2,i=this.h3,r=this.h4;return[t>>24&255,t>>16&255,t>>8&255,255&t,e>>24&255,e>>16&255,e>>8&255,255&e,n>>24&255,n>>16&255,n>>8&255,255&n,i>>24&255,i>>16&255,i>>8&255,255&i,r>>24&255,r>>16&255,r>>8&255,255&r]},t.prototype.array=t.prototype.digest,t.prototype.arrayBuffer=function(){this.finalize();var t=new ArrayBuffer(20),e=new DataView(t);return e.setUint32(0,this.h0),e.setUint32(4,this.h1),e.setUint32(8,this.h2),e.setUint32(12,this.h3),e.setUint32(16,this.h4),t};var f=h();i?module.exports=f:(e.sha1=f,r&&define("sha1",[],function(){return f}))}(),define("notebook",["jquery","config","tabbed","form","preferences","modal","prolog","links","laconic","runner","storage","sha1"],function($,config,tabbed,form,preferences,modal,prolog,links){function glyphButton(t,e,n,i,r){r=r||"sm";var o=$.el.a({href:"#",class:"btn btn-"+i+" btn-"+r+" action-"+e,title:n,"data-action":e},$.el.span({class:"glyphicon glyphicon-"+t}));return o}function imageButton(t,e,n){n=n||"sm";var i=$.el.a({href:"#",class:"btn btn-default btn-image btn-"+n+" action-"+t,title:e,"data-action":t},$.el.span({class:"image-icon"}));return i}function glyphButtonGlyph(t,e,n){var i=t.find("a[data-action="+e+"] > span.glyphicon");i.removeClass(function(t,e){return e.match(/glyphicon-[-a-z]*/g).join(" ")}).addClass("glyphicon-"+n)}function sep(){return $.el.span({class:"thin-space"}," ")}function Notebook(t){this.my_cell=t.cell}var cellTypes={program:{label:"Program",prefix:"p"},query:{label:"Query",prefix:"q"},markdown:{label:"Markdown",prefix:"md"},html:{label:"HTML",prefix:"htm"}};!function(t){function e(e){var n=t(e).find(".nb-cell.active");return 1==n.length?n.first():null}function n(e){function n(t){if(attrs=t.match(/[-a-z]+="[^"]*"/g),attrs){for(var e=t.match(/^<[a-z]* /),n=0;n<attrs.length;n++){var i=attrs[n].split(/=(.*)/);attrs[n]=i[0].toLowerCase()+"="+i[1]}return e[0]+attrs.sort().join(" ")+">"}return t}var i=t(t.el.div(e)).html(),r=[];return i.replace(/(<div [^>]*>|<\/div>)/g,function(t){var e;return"</div>"==t?(e=r.pop(),e?"\n"+t+"\n":t):(e=null!=t.match(/(nb-cell|notebook)/),r.push(e),e?"\n"+n(t)+"\n":t)}).slice(1)}var i="notebook",r=null,o={_init:function(e){return e=e||{},this.each(function(){function n(){var e=t.el.span({class:"glyphicon glyphicon-menu-hamburger"}),n=form.widgets.dropdownButton(e,{divClass:"notebook-menu btn-transparent",ulClass:"pull-right",client:s,actions:{"Delete cell":function(){this.notebook("delete")},"Copy cell":function(){this.notebook("copy")},"Paste cell":function(){this.notebook("paste")},"Move cell up":function(){this.notebook("up")},"Move cell down":function(){this.notebook("down")},"Insert cell":function(){this.notebook("insertBelow")},"--":"Notebook actions","Exit fullscreen":function(){this.notebook("fullscreen",!1)}}});return n}function r(t){var e=a.data(t);e&&(l[t]=e)}var o,a,s=t(this),l={},c={};s.addClass("notebook"),s.addClass("swish-event-receiver"),s.append(o=t.el.div({class:"nb-toolbar"},glyphButton("trash","delete","Delete cell","warning"),glyphButton("copy","copy","Copy cell","default"),glyphButton("paste","paste","Paste cell below","default"),sep(),glyphButton("chevron-up","up","Move cell up","default"),glyphButton("chevron-down","down","Move cell down","default"),sep(),glyphButton("plus","insertBelow","Insert cell below","primary"),glyphButton("fullscreen","fullscreen","Full screen","default"))),s.append(n()),s.append(t.el.div({class:"nb-view",tabIndex:"-1"},a=t.el.div({class:"nb-content"}),t.el.div({class:"nb-bottom"}))),t(o).on("click","a.btn",function(e){var n=t(e.target).closest("a").data("action");return s.notebook(n),e.preventDefault(),!1}),t(a).on("click",".nb-cell-buttons a.btn",function(e){var n=t(e.target).closest("a"),i=n.closest(".nb-cell"),r=n.data("action");return i.nbCell(r),e.preventDefault(),!1}),s.focusin(function(e){var n=t(e.target).closest(".nb-cell");n.length>0?s.notebook("active",n):t(e.target).closest(".nb-view").length>0&&s.find(".nb-content").children(".nb-cell.active").nbCell("active",!1)}),s.focusout(function(e){t(e.target).closest(".notebook")[0]!=s[0]&&s.find(".nb-content").children(".nb-cell.active").nbCell("active",!1)}),s.on("activate-tab",function(e){if(e.target==s[0]){var n=s.find(".nb-content").children(".nb-cell.program"),i=n.filter(".active"),r=i[0]||n[0];r&&t(r).find(".prolog-editor").prologEditor("makeCurrent"),e.stopPropagation()}}),s.data(i,c);var a=s.find(".notebook-data");if(e.value)s.notebook("value",e.value);else if(a.length>0){r("file"),r("url"),r("title"),r("meta"),r("st_type"),r("chats");var u=s.storage("docid",void 0,l),h=preferences.getVal(u)||{fullscreen:!0};s.notebook("value",a.text(),{fullscreen:h.fullscreen}),a.remove()}else s.notebook("placeHolder");s.notebook("setupStorage",l),s.on("data-is-clean",function(e,n){if(t(e.target).hasClass("prolog-editor"))return s.notebook("checkModified"),e.stopPropagation(),!1}),s.on("fullscreen",function(t,e){var n=preferences.getVal(u)||{};n.fullscreen=e,preferences.setVal(u,n)})})},delete:function(t){return t=t||e(this),t&&(this.notebook("active",t.next()||t.prev()),t.nbCell("close"),this.notebook("updatePlaceHolder")),this.notebook("checkModified"),this},copy:function(i){if(i=i||e(this)){var o=t.el.div({class:"notebook"});t(o).append(t(i).nbCell("saveDOM")),t(o).find(".nb-cell").removeAttr("name"),r=n(o)}},paste:function(e){var n=this;if(e=e||r){var i=t.el.div();t(i).html(e);var o=t(i).find(".nb-cell");if(o.length>0)return t(i).find(".nb-cell").each(function(){n.notebook("insert",{where:"below",restore:t(this)})}),this;modal.alert("Not a SWISH notebook")}else modal.alert("Clipboard is empty")},up:function(t){return t=t||e(this),t&&(t.insertBefore(t.prev()),this.notebook("checkModified")),this},down:function(t){return t=t||e(this),t&&(t.insertAfter(t.next()),this.notebook("checkModified")),this},insertAbove:function(){return this.notebook("insert",{where:"above"})},insertBelow:function(){return 0==this.notebook("insert",{where:"below",if_visible:!0})&&modal.alert("<p>New cell would appear outside the visible area of the notebook.<p>Please select the cell below which you want the new cell to appear or scroll to the bottom of the notebook."),this},run:function(t){t=t||e(this),t&&t.nbCell("run")},fullscreen:function(e){if(void 0==e&&(e=!this.hasClass("fullscreen")),e){var n=this.closest(".chat-container"),i=1==n.length?n:this;t("body.swish").swish("fullscreen",i,this)}else t("body.swish").swish("exitFullscreen");return this},cellType:function(t,n){t=t||e(this),t&&t.nbCell("type",n)},getSelection:function(){return this.notebook("assignCellNames").find(".prolog-editor").prologEditor("getSelection")},restoreSelection:function(t){return this.notebook("assignCellNames").find(".prolog-editor").prologEditor("restoreSelection",t)},checkModified:function(){return this.each(function(){var e=t(this),n=e.data("storage"),i=n.cleanGeneration==e.notebook("changeGen");e.notebook("markClean",i)})},markClean:function(e){return this.each(function(){var n=t(this),r=n.data(i);r.clean_signalled!=e&&(r.clean_signalled=e,n.trigger("data-is-clean",e)),e&&n.find(".prolog-editor").prologEditor("setIsClean")})},active:function(t,e){function n(t){t.find(".nb-content .nb-cell.not-for-query").removeClass("not-for-query")}if(t){var i=this.find(".nb-content .nb-cell.active");1==t.length?1==i.length&&t[0]==i[0]||(n(this),i.nbCell("active",!1),t.nbCell("active",!0),e&&t.focus()):(n(this),i.nbCell("active",!1))}},insert:function(n){n=n||{};var i,r=e(this),o=n.cell||t.el.div({class:"nb-cell"}),a=this.find(".nb-view");if(n.if_visible&&a.find(".nb-content > div.nb-cell").length>0&&(i=a[0].getBoundingClientRect()),r)if("above"==n.where){if(i){var s=r[0].getBoundingClientRect().top;if(s<i.top)return!1}t(o).insertBefore(r)}else{if(i){var l=r[0].getBoundingClientRect().bottom;if(l>i.bottom-20)return!1}t(o).insertAfter(r)}else{var c=this.find(".nb-content");if(i){var u=c[0].getBoundingClientRect().bottom;if(u>i.bottom-20)return!1}c.append(o)}return n.cell||t(o).nbCell(n.restore),t(o).nbCell("assignName"),this.notebook("updatePlaceHolder"),this.notebook("active",t(o)),this.notebook("checkModified"),this},setupStorage:function(e){var n=this;return e=t.extend(e,{getValue:function(){return n.notebook("value")},setValue:function(t){return n.notebook("setSource",t)},changeGen:function(){return n.notebook("changeGen")},isClean:function(t){var e=n.notebook("changeGen");return t==e},markClean:function(t){n.notebook("markClean",t)},cleanGeneration:this.notebook("changeGen"),cleanData:this.notebook("value"),cleanCheckpoint:"load",typeName:"notebook"}),this.storage(e)},setSource:function(t){"string"==typeof t&&(t={data:t}),this.notebook("value",t.data)},value:function(e,i){if(i=i||{},void 0==e){var r=t.el.div({class:"notebook"});return this.find(".nb-cell").each(function(){cell=t(this),i.skipEmpty&&cell.nbCell("isEmpty")||t(r).append(cell.nbCell("saveDOM"))}),n(r)}var o=this.find(".nb-content"),r=t.el.div();o.html(""),r.innerHTML=e,void 0==i.fullscreen&&(i.fullscreen=t(r).find("div.notebook").hasClass("fullscreen")),i.fullscreen&&(this.removeClass("fullscreen"),this.notebook("fullscreen",!0)),t(r).find(".nb-cell").each(function(){var e=t.el.div({class:"nb-cell"});o.append(e),t(e).nbCell(t(this))}),this.find(".nb-cell").nbCell("onload"),this.notebook("updatePlaceHolder")},changeGen:function(){var e=[];return this.find(".nb-cell").each(function(){cell=t(this),e.push(cell.nbCell("changeGen"))}),sha1(e.join())},assignCellNames:function(){return this.find(".nbCell").nbCell("assignName"),this.notebook("checkModified")},updatePlaceHolder:function(){0==this.find(".nb-content").children().length?this.notebook("placeHolder"):this.find(".nb-placeholder").remove()},placeHolder:function(){var e=t.el.div({class:"nb-placeholder"});t.ajax({url:config.http.locations.help+"/notebook.html",dataType:"html",success:function(n){t(e).html(n)}}),this.find(".nb-content").append(e)}};tabbed.tabTypes.notebook={dataType:"swinb",typeName:"notebook",label:"Notebook",contentType:"text/x-prolog-notebook",order:200,create:function(e,n){t(e).notebook(n)}},t.fn.notebook=function(e){return o[e]?o[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery."+i):o._init.apply(this,arguments)}}(jQuery),function($){function cellText(t){return t.find(".editor").prologEditor("getSource",void 0,!0)}function fileInsertInput(){var t=$('<input type="file" name="file">');return t.on("change",function(t){var e=new FileReader;return e.onload=function(n){var i=$(t.target).closest(".nb-cell"),r=i.closest(".notebook");r.notebook("paste",e.result)&&i.remove()},e.readAsText(t.target.files[0]),t.preventDefault(),!1}),t}function typeMore(){var t=$('<div class="form-more"> <a href="#">more<a></div>');return t.find("a").on("click",function(t){var e=$(t.target).closest(".form-more");e.hide(400),e.next().show(400)}),t[0]}function typeLess(){for(var t=$('<div class="form-less" style="display:none"> <div><a href="#" class="less">less<a></div></div>'),e=0;e<arguments.length;e++)t.append(arguments[e]);return t.find("a.less").on("click",function(t){var e=$(t.target).closest(".form-less");e.hide(400),e.prev().show(400)}),t[0]}var pluginName="nbCell",id=0,methods={_init:function(t){return this.each(function(){var e,n=$(this),i={};if(n.data(pluginName,i),n.attr("tabIndex",-1),n.attr("id","nbc"+id++),t instanceof jQuery)n.nbCell("restoreDOM",t);else{var r=glyphButton("remove-circle","close","Close","default","xs");n.append(r),$(r).addClass("close-select"),$(r).on("click",function(){n.nbCell("close")}),n.append($.el.div({class:"nb-type-select"},$.el.label("Create a "),e=$.el.div({class:"btn-group",role:"group"}),$.el.label("cell here.")));for(var o in cellTypes)cellTypes.hasOwnProperty(o)&&$(e).append($.el.button({type:"button",class:"btn btn-default","data-type":o},cellTypes[o].label));$(e).on("click",".btn",function(t){n.nbCell("type",$(t.target).data("type"))}),n.append($.el.div({class:"nb-type-more"},typeMore(),typeLess($.el.label("Insert notebook from local file "),fileInsertInput()[0])))}})},active:function(t){var e=this.data(pluginName);if(t)switch(this.addClass("active"),e.type){case"program":this.find(".editor").prologEditor("makeCurrent");break;case"query":var n=this.prevAll(".program").first().find(".editor");1==n.length&&n.prologEditor("makeCurrent"),this.closest(".notebook").find(".nb-cell.program").not(this.nbCell("program_cells")).addClass("not-for-query")}else if(this.length>0)switch(this.removeClass("active"),e.type){case"markdown":case"html":this.hasClass("runnable")&&this.nbCell("run")}},type:function(t){var e=this.data(pluginName);return e.type!=t&&(methods.type[t].apply(this),e.type=t,this.addClass(t),this.removeAttr("name"),this.nbCell("assignName")),this},assignName:function(){return this.each(function(){var t=$(this);if(!t.attr("name")){var e=t.data(pluginName);if(e.type){var n=cellTypes[e.type].prefix,r=t.closest(".notebook");for(i=1;;i++){var o=n+i;if(0==r.find("*[name="+o+"]").length){t.attr("name",o);break}}}}})},run:function(){var t=arguments;return this.each(function(){var e=$(this);if(e.hasClass("runnable")){var n=e.data(pluginName);return methods.run[n.type].apply(e,t)}console.log("Cell is not runnable: ",e)})},runTabled:function(){return this.nbCell("run",{tabled:!0})},onload:function(){var t=arguments;return this.each(function(){var e=$(this),n=e.data(pluginName);methods.onload[n.type]&&methods.onload[n.type].apply(e,t)}),this.nbCell("refresh")},close:function(){return this.find(".prolog-runner").prologRunner("close"),this.remove()},refresh:function(){return this.hasClass("program")&&this.find("a[data-action='background']").attr("title",this.hasClass("background")?"Used for all queries in this notebook":"Used for queries below this cell"),this},getSettings:function(){return{tabled:"true"==this.data("tabled"),run:"onload"==this.data("run"),chunk:parseInt(this.data("chunk")||"1"),name:this.attr("name")}},settings:function(){function t(){this.append($.el.form({class:"form-horizontal"},form.fields.checkboxes([{name:"tabled",label:"table results",value:n.tabled,title:"Table results"},{name:"run",label:"run on page load",value:n.run,title:"Run when document is loaded"}],{col:3}),form.fields.chunk(n.chunk),form.fields.name(n.name||""),form.fields.buttons({label:"Apply",offset:3,action:function(t,i){i.tabled!=n.tabled&&(i.tabled?e.data("tabled","true"):e.removeData("tabled")),i.run!=n.run&&(i.run?e.data("run","onload"):e.removeData("run")),i.chunk!=n.chunk&&(1!=i.chunk?e.data("chunk",""+i.chunk):e.removeData("chunk"));var r=i.name?i.name.trim():"";r!=n.name&&(r?e.attr("name",r):e.attr("name",null)),e.closest(".notebook").notebook("checkModified")}})))}var e=this,n=this.nbCell("getSettings");form.showDialog({title:"Set options for query",body:t})},singleline:function(){return this.toggleClass("singleline"),this.find(".editor").prologEditor("refresh"),glyphButtonGlyph(this,"singleline",this.hasClass("singleline")?"triangle-left":"triangle-bottom"),this.find("a[data-action=singleline]").blur(),this},background:function(){return this.toggleClass("background"),this.find("a[data-action=background]").blur(),this.closest(".notebook").notebook("checkModified"),this.nbCell("refresh"),this},program_cells:function(){var t=(this.data(pluginName),this.closest(".notebook").find(".nb-cell.program.background"));return this.hasClass("program")?this.hasClass("background")||(t=t.add(this)):t=t.add(this.prevAll(".program").first()),t},programs:function(){var t=this.nbCell("program_cells");return t.find(".editor")},isEmpty:function(){return methods.isEmpty[this.data(pluginName).type].call(this)},saveDOM:function(){return methods.saveDOM[this.data(pluginName).type].call(this)},restoreDOM:function(t){function e(t){for(var e in cellTypes)if(cellTypes.hasOwnProperty(e)&&t.hasClass(e))return e}var n=this.data(pluginName);n.type=e(t),methods.restoreDOM[n.type].apply(this,arguments),this.addClass(n.type)},changeGen:function(){var t=this.data(pluginName).type;return t?methods.changeGen[t].call(this):0},text:function(){return cellText(this)}};methods.type.markdown=function(t){function e(e){void 0!=t[e]&&(i.attr(e,""+t[e]),delete t[e])}var n,i=this;t=t||{},t.mode="markdown",e("name"),this.html(""),this.append(n=$.el.div({class:"editor"})),$(n).prologEditor(t),this.addClass("runnable")},methods.type.html=function(t){function e(e){void 0!=t[e]&&(i.attr(e,""+t[e]),delete t[e])}var n,i=this;t=t||{},t.mode="htmlmixed",e("name"),this.html(""),this.append(n=$.el.div({class:"editor"})),$(n).prologEditor(t),this.addClass("runnable")},methods.type.program=function(t){var e,n=this;t=t||{},t.autoCurrent=!1,t.getSource=function(){var t=n.nbCell("programs");return t.prologEditor("getSource","source",!0)},this.html("");var i=$.el.div({class:"btn-group nb-cell-buttons",role:"group"},glyphButton("triangle-bottom","singleline","Show only first line","default","xs"),imageButton("background","Use as background program","xs"));this.append(i,e=$.el.div({class:"editor with-buttons"})),t.background&&this.addClass("background"),t.singleline&&this.nbCell("singleline"),$(e).prologEditor(t)},methods.type.query=function(t){function e(e){void 0!=t[e]&&(o.data(e,""+t[e]),delete t[e])}function n(e){void 0!=t[e]&&(o.attr(e,""+t[e]),delete t[e])}function i(t){this.find(".editor.query").prologEditor("wrapSolution",$(t).text())}var r,o=this;this.html(""),t=t||{},void 0==t.tabled&&(t.tabled=preferences.getVal("tabled_results")),e("tabled"),e("chunk"),e("run"),n("name"),t=$.extend({},t,{role:"query",sourceID:function(){return o.nbCell("programs").prologEditor("getSourceID")}});var a=$.el.div({class:"btn-group nb-cell-buttons",role:"group"},glyphButton("wrench","settings","Settings","default","xs"),glyphButton("play","run","Run query","primary","xs")),s=form.widgets.dropdownButton($.el.span({class:"glyphicon glyphicon-menu-hamburger"}),{client:o,divClass:"nb-query-menu",actions:{"Aggregate (count all)":i,"--":null,Projection:i,"Order by":i,Distinct:i,Limit:i,"---":null,"Download answers as CSV":function(){var t=cellText(this).replace(/\.\s*$/,""),e=this.nbCell("programs").prologEditor("getSource","source",!0),n={},i=this.attr("name");i&&(n.disposition=i),prolog.downloadCSV(t,e,n)}}});this.append(a,$.el.div({class:"query with-buttons"},s,$.el.span({class:"prolog-prompt"},"?-"),r=$.el.div({class:"editor query"}))),$(r).prologEditor(t),this.addClass("runnable")},methods.run.markdown=function(t){function e(t){var n=$(t.target).closest(".nb-cell"),i=n.data("markdownText");n.removeData("markdownText"),methods.type.markdown.call(n,{value:i}),n.off("dblclick",e),n.off("click",links.followLink)}function n(n){i.html(n),i.removeClass("runnable"),i.data("markdownText",t),i.on("dblclick",e),i.on("click","a",links.followLink)}var i=this;t=t||cellText(this),""!=t.trim()?$.ajax({type:"POST",url:config.http.locations.markdown,data:t,contentType:"text/plain; charset=UTF-8",success:n}):n("<div class='nb-placeholder'>Empty markdown cell.  Double click to edit</div>")},methods.run.html=function(htmlText,options){function makeEditable(t){var e=$(t.target).closest(".nb-cell"),n=e.data("htmlText");e.removeData("htmlText"),methods.type.html.call(e,{value:n}),e.off("dblclick",makeEditable),e.off("click",links.followLink)}function runScripts(){if(1==config.swish.notebook.eval_script&&0!=options.eval_script){var scripts=[];if(cell.find("script").each(function(){var t=this.getAttribute("type")||"text/javascript";"text/javascript"==t&&scripts.push(this.textContent)}),scripts.length>0){var script="(function(notebook){"+scripts.join("\n")+"})",nb=new Notebook({cell:cell[0]});try{eval(script)(nb)}catch(t){alert(t)}}}}function runHTML(t){cell[0].innerHTML=t,runScripts()}function setHTML(t){runHTML(t),cell.removeClass("runnable"),cell.data("htmlText",htmlText),cell.on("dblclick",makeEditable),cell.on("click","a",links.followLink)}var cell=this;return options=options||{},0==options.html?void runScripts():(htmlText=(htmlText||cellText(this)).trim(),void setHTML(""!=htmlText?htmlText:"<div class='nb-placeholder'>Empty HTML cell.  Double click to edit</div>"))},methods.run.program=function(){modal.alert("Please define a query to run this program")},methods.run.query=function(t){var e=this.nbCell("programs"),n=this.nbCell("getSettings"),i=cellText(this);if(t=t||{},t.bindings){var r="";if("string"==typeof t.bindings)r=t.bindings;else for(var o in t.bindings)t.bindings.hasOwnProperty(o)&&(r&&(r+=", "),r+=o+" = "+Pengine.stringify(t.bindings[o]));r&&(i=r+", ("+prolog.trimFullStop(i)+")")}var a={source:e.prologEditor("getSource","source",!0),query:i,tabled:n.tabled||!1,chunk:n.chunk,title:!1,query_editor:this.find(".prolog-editor.query")};e[0]&&(a.editor=e[0]);var s=$.el.div({class:"prolog-runner"});this.find(".prolog-runner").prologRunner("close"),this.append(s),$(s).prologRunner(a)},methods.onload.query=function(){"onload"==this.data("run")&&this.nbCell("run")},methods.onload.html=function(){return methods.run.html.call(this,void 0,{html:!1,eval_script:!0})},methods.saveDOM.markdown=function(){function t(t){var e;(e=cell.attr(t))&&e&&$(n).attr(t,e)}var e=this.data("markdownText")||cellText(this),n=$.el.div({class:"nb-cell markdown"},e);return t("name"),n},methods.saveDOM.html=function(){function t(t){var e;(e=cell.attr(t))&&e&&$(n).attr(t,e)}var e=this.data("htmlText")||cellText(this),n=$.el.div({class:"nb-cell html"});return $(n).html(e),t("name"),n},methods.saveDOM.program=function(){function t(t){n.hasClass(t)&&$(i).attr("data-"+t,!0)}function e(t){var e;(e=n.attr(t))&&e&&$(i).attr(t,e)}var n=this,i=$.el.div({class:"nb-cell program"},cellText(this));return t("background"),t("singleline"),e("name"),i},methods.saveDOM.query=function(){function t(t,e){return!("tabled"!=t||e&&"false"!=e)}function e(e){var n;(n=i.data(e))&&!t(e,n)&&$(r).attr("data-"+e,n)}function n(t){var e;(e=i.attr(t))&&e&&$(r).attr(t,e)}var i=this,r=$.el.div({class:"nb-cell query"},cellText(this));return e("tabled"),e("chunk"),e("run"),n("name"),r},methods.restoreDOM.markdown=function(t){function e(e){var i;(i=t.attr(e))&&i&&n.attr(e,i)}var n=this,i=t.text().trim();n.data("markdownText",i),e("name"),methods.run.markdown.call(this,i)},methods.restoreDOM.html=function(t){function e(e){var i;(i=t.attr(e))&&i&&n.attr(e,i)}var n=this;e("name"),methods.run.html.call(this,t.html(),{eval_script:!1})},methods.restoreDOM.program=function(t){function e(e){var n;(n=t.data(e))&&(r[e]=n)}function n(e){var n;(n=t.attr(e))&&n&&i.attr(e,n)}var i=this,r={value:t.text().trim()};e("background"),e("singleline"),n("name"),methods.type.program.call(this,r)},methods.restoreDOM.query=function(t){function e(e){var n;(n=t.data(e))&&("chunk"==e?i.chunk=parseInt(n):i[e]=n)}function n(e){var n;(n=t.attr(e))&&(i[e]=n)}var i={value:t.text().trim()};e("tabled"),e("chunk"),e("run"),n("name"),void 0==i.tabled&&(i.tabled=!1),methods.type.query.call(this,i)},methods.changeGen.markdown=function(){var t=this.data("markdownText")||cellText(this);return sha1(t)},methods.changeGen.html=function(){var t=this.data("htmlText")||cellText(this);return sha1(t);
-},methods.changeGen.program=function(){function t(t,i){n.hasClass(t)&&(e+=i)}var e="",n=this;return t("background","B"),t("singleline","S"),e+="V"+cellText(this),sha1(e)},methods.changeGen.query=function(){function t(t,e){var r;(r=i.data(t))&&(n+=e+r)}function e(t,e){var r;(r=i.attr(t))&&(n+=e+r)}var n="",i=this;return t("tabled","T"),t("chunk","C"),t("run","R"),e("name","N"),n+="V"+cellText(this),sha1(n)},methods.isEmpty.markdown=function(){var t=this.data("markdownText")||cellText(this);return""==t.trim()},methods.isEmpty.html=function(){var t=this.data("htmlText")||cellText(this);return""==t.trim()},methods.isEmpty.program=function(){return""==cellText(this).trim()},methods.isEmpty.query=function(){return""==cellText(this).trim()},$.fn.nbCell=function(t){return methods[t]?methods[t].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof t&&t?void $.error("Method "+t+" does not exist on jQuery."+pluginName):methods._init.apply(this,arguments)}}(jQuery),Notebook.prototype.swish=function(t){var e=this.cell().nbCell("programs"),n=e.prologEditor("getSource","source",!0);return n&&(t.src=n),$.swish(t)},Notebook.prototype.cell=function(t){return t?this.notebook().find('.nb-cell[name="'+t+'"]'):$(this.my_cell)},Notebook.prototype.notebook=function(){return $(this.my_cell).closest(".notebook")},Notebook.prototype.run=function(t,e){var n={};e&&(n.bindings=e),this.cell(t).nbCell("run",n)},Notebook.prototype.submit=function(t,e){var n=this.$(t),i=form.serializeAsObject(n);form.formError(n,null),this.swish({ask:e.predicate+"(("+Pengine.stringify(i)+"))",onerror:function(t){form.formError(n,t)},onsuccess:e.onsuccess})},Notebook.prototype.$=function(t){return this.cell().find(t)}}),define("navbar",["jquery","preferences","form","laconic"],function(t,e,n){!function(t){function i(i,r,o){function a(e){if(e)return t.el.span({class:"dropdown-icon glyphicon glyphicon-"+e})}if(void 0==o);else if("--"==o)i.append(t.el.li({class:"divider"}));else if("function"==typeof o){var s,l;if(o.typeIcon)s=t.el.a(n.widgets.typeIcon(o.typeIcon),r);else if(o.glyph)s=t.el.a(a(o.glyph),r);else if((l=r.indexOf("("))>0){var c=r.substr(l);s=t.el.a({class:"accelerated"},r.substr(0,l).trim(),t.el.span({class:"accell-spacer"},c),t.el.span({class:"accell-text"},c))}else s=t.el.a(r);t(s).data("navbar-action",o),o.name&&t(s).attr("id",o.name),i.append(t.el.li(s))}else if("checkbox"==o.type){var u=t(t.el.input({type:"checkbox"}));void 0!==o.preference?(u.addClass("swish-event-receiver"),e.getVal(o.preference)&&u.prop("checked",!0),u.on("click",function(){e.setVal(o.preference,t(this).prop("checked"))}),u.on("preference",function(t){t.name==o.preference&&u.prop("checked",t.value)})):(o.checked&&u.prop("checked",o.checked),u.on("click",function(){o.action(t(this).prop("checked"))})),i.append(t.el.li({class:"checkbox"},u[0],t.el.span(r)))}else if("submenu"==o.type){var h=t.el.ul({class:"dropdown-menu sub-menu"});if(i.append(t.el.li(t.el.a({class:"trigger right-caret"},a(o.glyph),r),h)),o.action&&t(h).data("navbar-action",o.action),o.items)for(var l=0;l<o.items.length;l++)t(h).append(t.el.li(t.el.a(o.items[l])));o.update&&t(h).on("update",function(t){o.update.call(t.target)})}else alert("Unknown navbar item")}function r(e,n){return e.find(".dropdown-menu").filter(function(){return t(this).attr("name")==n})}function o(e,n){if(!t(e).hasClass("trigger")){var i=t(e).data("navbar-action")||t(e).parents("ul").data("navbar-action");return s.call(e,n),i?(n.preventDefault(),i.call(e,n)):t(e).hasClass("trigger")&&a.call(e,n),!1}a.call(e,n)}function a(e){var n=t(this).next(),i=t(this).parent().parent();(t(this).hasClass("left-caret")||t(this).hasClass("right-caret"))&&t(this).toggleClass("right-caret left-caret"),i.find(".left-caret").not(this).toggleClass("right-caret left-caret"),i.find(".sub-menu:visible").not(n).hide(),n.trigger("update"),n.toggle(),e.stopPropagation()}function s(e){var n=t(this).closest(".dropdown");n.find(".left-caret").toggleClass("right-caret left-caret"),n.find(".sub-menu:visible").hide()}var l="navbar",c={_init:function(e){return this.each(function(){var n=t(this);for(var i in e)e.hasOwnProperty(i)&&(n.navbar("appendDropdown",i),n.navbar("populateDropdown",i,e[i]));n.on("click","a",function(t){o(this,t)})})},appendDropdown:function(e){var n=this.children(".nav.navbar-nav.menubar"),i=t.el.ul({name:e,class:"dropdown-menu"}),r=t.el.li({class:"dropdown"},t.el.a({class:"dropdown-toggle","data-toggle":"dropdown"},e,t.el.b({class:"caret"})),i);return n.append(r),this},populateDropdown:function(t,e){if("function"==typeof e)e(this,t);else{var n=r(this,t);for(var o in e)e.hasOwnProperty(o)&&i(n,o,e[o])}},clearDropdown:function(t){var e=r(this,t);return e.html(""),this},extendDropdown:function(t,e,n){var o=r(this,t);i(o,e,n)}};t.fn.navbar=function(e){return c[e]?c[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery."+l):c._init.apply(this,arguments)}}(jQuery)}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/addon/hint/templates-hint",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){function e(t,e){return t.slice(0,e.length).toUpperCase()==e.toUpperCase()}function n(t){}function i(){this.marked=[],this.selectableMarkers=[],this.varIndex=-1}function r(t){return t._templateStack?t._templateStack.length:0}function o(t){this.name=t.name,this.description=t.description,this.text=t.text,t.varTemplates&&(this.varTemplates=t.varTemplates),null!=t.template?this.source=t.template:null!=t.tokens&&(this._tokens=t.tokens)}function a(t){for(var e=[],n=!1,i=null,r="",o=0;o<t.length;o++){var a=t.charAt(o);if("\n"==a)""!=r&&e.push(r),r="",e.push(a),i=null;else{var s=!0;if(n)"}"==a&&(n=!1,s=!1,"cursor"==r?e.push({cursor:!0}):"line_selection"==r?e.push({line_selection:!0}):e.push({variable:r}),r="");else if("$"==a&&o+1<=t.length){o++;var l=t.charAt(o);"{"==l&&(n=!0,s=!1,""!=r&&e.push(r),r="")}s&&"$"!=i?(r+=a,i=a):i=null}}return""!=r&&e.push(r),e}function s(t,e){var n=t.findMarksAt(e.from);if(n)for(var i=0;i<n.length;i++){var r=n[i];if(r._templateVar)return r}return null}function l(t,e){var n=t._templateState;if(e.origin&&n&&!n.updating)try{n.updating=!0;var i=s(t,e);if(null==i)f(t);else for(var r=i.find(),o=t.getRange(r.from,r.to),a=0;a<n.marked.length;a++){var l=n.marked[a];if(l!=i&&l._templateVar==i._templateVar){var c=l.find();t.replaceRange(o,c.from,c.to)}}}finally{n.updating=!1}}function c(t){n("template","endCompletion()",r(t)),r(t)&&f(t,!0)}function u(t,e){var n=t._templateState;if(n.selectableMarkers.length>0){if(n.varIndex++,n.varIndex>=n.selectableMarkers.length){if(e)return void d(t);n.varIndex=0}var i=n.selectableMarkers[n.varIndex],r=i.find();t.setSelection(r.from,r.to);for(var o=(i._templateVar,0);o<n.marked.length;o++){var a=n.marked[o];a==i?(a.className="",a.startStyle="",a.endStyle=""):a._templateVar==i._templateVar?(a.className="CodeMirror-templates-variable-selected",a.startStyle="",a.endStyle=""):(a.className="CodeMirror-templates-variable",a.startStyle="CodeMirror-templates-variable-start",a.endStyle="CodeMirror-templates-variable-end")}t.refresh()}else d(t)}function h(e){function n(t,e){return t.ch==e.ch&&t.line==e.line}var i=e._templateState,r=i.selectableMarkers[i.varIndex],o={state:i};e._hintTemplateMarker&&(o.marker=e._hintTemplateMarker),e._templateStack||(e._templateStack=[]),e._templateStack.push(o),delete e._templateState,e._hintTemplateMarker=r;var a=r.find(),s=e.listSelections();1==s.length&&n(s[0].anchor,a.from)&&n(s[0].head,a.to)&&e.replaceRange("☰",a.from,a.to),t.commands.autocomplete(e)}function d(t){var e=t._templateState.cursor;if(null!=e){var n=e.find();null!=n&&t.setSelection(n,n)}f(t)}function f(t,e){function i(){n("template","Canceled?");for(var e=0;e<r.marked.length;e++){var i=r.marked[e];if(i==t._hintTemplateMarker){var o=i.find();o&&"☰"==t.getRange(o.from,o.to)&&t.replaceRange(i._templateVar,o.from,o.to)}}}var r=t._templateState;if(r){n("template","Uninstall, clearing: ",r.marked.length);for(var o=0;o<r.marked.length;o++)r.marked[o].clear();null!=r.cursor&&r.cursor.clear(),r.marked.length=0,r.selectableMarkers.length=0}else n("template","Uninstall, no state");if(t._templateStack&&t._templateStack.length>0){n("template","Popping from level",t._templateStack.length);var a=t._templateStack.pop();r=t._templateState=a.state,e&&t._hintTemplateMarker&&i(),a.marker?t._hintTemplateMarker=a.marker:delete t._hintTemplateMarker}else n("template","Leaving template mode"),t.off("change",l),t.off("endCompletion",c),t.removeKeyMap(m),delete t._templateState,delete t._hintTemplateMarker}var p=[],g=t.Pos;t.templatesHint={};var m={Tab:u,Enter:function(t){u(t,!0)},Esc:f,"Ctrl-Space":h};o.prototype.tokens=function(){return null==this._tokens&&(this._tokens=a(this.source)),this._tokens},o.prototype.content=function(){if(null==this._content){for(var t=this.tokens(),e="",n=0;n<t.length;n++){var i=t[n];"string"==typeof i?e+=i:i.variable&&(e+=i.variable)}this._content=e}return this._content},o.prototype.insert=function(t,e){function o(t){if(a.varTemplates&&a.varTemplates[t])return a.varTemplates[t]}var a=this,s=r(t);if(n("template","Insert, nested",s,"template",a),(t._templateState||s)&&(n("template","Uninstall from insert()",s),f(t)),a.text)return void t.replaceRange(a.text,e.from,e.to);var h=new i;t._templateState=h;for(var d=this.tokens(),p="",v=e.from.line,y=e.from.ch,x=[],b=[],_=null,w=0;w<d.length;w++){var S=d[w];if("string"==typeof S)p+=S,"\n"==S?(v++,y=0):y+=S.length;else if(S.variable){p+=S.variable;var C=g(v,y),T=g(v,y+S.variable.length),k=0!=b[S.variable];y+=S.variable.length,x.push({from:C,to:T,variable:S.variable,selectable:k}),b[S.variable]=!1}else S.cursor&&(_=g(v,y))}var C=e.from,T=e.to,A=C.line;t.replaceRange(p,C,T);for(var w=0;w<x.length;w++){var M=x[w],C=M.from,T=M.to,L=t.markText(C,T,{className:"CodeMirror-templates-variable",startStyle:"CodeMirror-templates-variable-start",endStyle:"CodeMirror-templates-variable-end",inclusiveLeft:!0,inclusiveRight:!0,clearWhenEmpty:!1,_templateVar:M.variable,_templates:o(M.variable)});h.marked.push(L),1==M.selectable&&h.selectableMarkers.push(L)}null!=_&&(h.cursor=t.setBookmark(_));for(var E=p.split("\n"),P=1;P<E.length;P++){var N=A+P;t.indentLine(N)}s||(t.on("change",l),n("template","Installing endCompletion"),t.on("endCompletion",c),t.addKeyMap(m)),u(t,!0)},t.templatesHint.getCompletions=function(n,i,r){var o=n.doc.mode.name,a=p[o];if(a)for(var s=0;s<a.length;s++){var l=a[s];if(e(l.name,r)){var c=l.name;l.description&&(c+="- "+l.description);var u="CodeMirror-hint-template";l.className&&(u=l.className);var h={className:u,text:c,template:l};h.data=h,h.hint=function(t,e,n){n.template.insert(t,e)},h.info=function(e){var i=e.template.content();if(t.runMode){var r=document.createElement("div");return r.className="cm-s-default",n.options&&n.options.theme&&(r.className="cm-s-"+n.options.theme),t.runMode(i,n.getMode().name,r),r}return i},i.push(h)}}},t.templatesHint.Template=o,t.templatesHint.addTemplates=function(t){var e=t.context;if(e){var n=p[e];n||(n=[],p[e]=n),t.templates.forEach(function(t){n.push(new o(t))})}}}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/mode/prolog/prolog-template-hint",["../../lib/codemirror","../../addon/hint/templates-hint","jquery","config","laconic"],t):t(CodeMirror)}(function(t,e,n,i){"use strict";function r(t){function e(t){var e=/[-+?:^@!]*([A-Z][A-Za-z_0-9]*)/g,n=/\bis\s+(det|nondet|semidet|fail|multi)$/;if(i.template||(i.template=t.replace(e,"$${$1}").replace(n,""),i.template.match(/\${cursor}/)||(i.template+="${cursor}")),i.displayText||(i.displayText=t),!i.varTemplates){var r=t.match(/:[A-Z][A-Za-z_0-9]*/g);if(r&&r.length>0){for(var o={},a=0;a<r.length;a++)o[r[a].substring(1)]=l;i.varTemplates=o}}}var i=this,r=["template","displayText","text",{from:"summary",to:"description"},"className","varTemplates"];if("string"==typeof t)this.displayText=t,this.text=t;else{for(var o=0;o<r.length;o++){var a=r[o];"string"==typeof a?t[a]&&(this[a]=t[a]):t[a.from]&&(this[a.to]=t[a.from])}t.mode&&e(t.mode),t.classes&&(t.className=t.classes.join(" "))}this.render=function(t,e,i){n(t).append(i.displayText)},this.info=function(t){return t.description}}function o(e,n,i){function o(t,e){return t.slice(0,e.length)==e}var a=n.token.string,s=[],c=l;e._hintTemplateMarker&&("☰"==a&&(a=""),c=e._hintTemplateMarker._templates);var u=a.length>0&&!a.match(/\w/);if(c)for(var h=0;h<c.length;h++){var d=c[h];if("string"==typeof d)o(d,a)&&s.push(new r(d));else{var f=["name","mode","template","text"];if(u)d.name&&d.name.indexOf(a)>=0&&s.push(new r(d));else for(var p=0;p<f.length;p++)if(d[f[p]]){o(d[f[p]],a)&&s.push(new r(d));break}}}if(0==s.length)for(var g=t.hint.anyword,m=""==a&&e._hintTemplateMarker?{word:/[A-Z][A-Za-z0-9_]*/}:i,v=g(e,m),h=0;h<v.list.length;h++)s.push(new r(v.list[h]));return{list:s,from:n.position.from,to:n.position.to}}function a(e,n,i){var r=s(e),a=o(e,r,i);t.attachContextInfo(a),n(a)}function s(e){var n=e.getCursor(),i=e.getTokenAt(n),r=t.innerMode(e.getMode(),i.state);if("prolog"!=r.mode.name)return null;var o={from:new t.Pos(n.line,i.start),to:new t.Pos(n.line,i.end)};return{token:i,position:o}}var l=i.swish.templates||[];return r.prototype.hint=function(e,n,i){var r=new t.templatesHint.Template(this);r.insert(e,n)},a.async=!0,t.registerHelper("hint","prologTemplate",a),{getHints:a,getState:s}}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/mode/prolog/prolog",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";t.defineMode("prolog",function(e,n){function i(t,e,n){return e.tokenize=n,n(t,e)}function r(t,e,n){if(n>0){for(;n-- >0;)if(!e.test(t.next()))return!1}else for(;e.test(t.peek());)t.next();return!0}function o(t){var e=t.next();if(w.test(e))return!0;switch(e){case"u":return!!b.unicodeEscape&&r(t,C,4);case"U":return!!b.unicodeEscape&&r(t,C,8);case null:return!0;case"c":return t.eatSpace(),!0;case"x":return r(t,C,2)}return!!S.test(e)&&(!!r(t,S,-1)&&("\\"==t.peek()&&t.next(),!0))}function a(t,e,n){for(var i;null!=(i=t.next());){if(i==n&&n!=t.peek())return e.nesting.pop(),!1;if("\\"==i&&!o(t))return!1}return b.multiLineQuoted}function s(t){return t.nesting.slice(-1)[0]}function l(t){var e=s(t);e?0==e.arg?e.arg=1:"control"==e.type&&(t.goalStart=!1):t.goalStart=!1}function c(t){var e=s(t);e&&!e.alignment&&void 0!=e.arg&&(0==e.arg?e.alignment=e.leftCol?e.leftCol+4:e.column+4:e.alignment=e.column+1)}function u(t){var e=s(t);e?e.arg?e.arg++:"control"==e.type&&(t.goalStart=!0):t.goalStart=!0}function h(t){var e=s(t);return e?"control"==e.type:t.inBody}function d(t,e,n){return y=t,x=n,e}function f(t){return!(!t.eol()&&!/[\s%]/.test(t.peek()))}function p(t,e){var n=t.next();if("("==n)return"functor"==e.lastType?(e.nesting.push({functor:e.functorName,column:t.column(),leftCol:e.functorColumn,arg:0}),delete e.functorName,delete e.functorColumn):e.nesting.push({type:"control",closeColumn:t.column(),alignment:t.column()+4}),d("solo",null,"(");if("{"==n&&"tag"==e.lastType)return e.nesting.push({tag:e.tagName,column:t.column(),leftCol:e.tagColumn,arg:0}),delete e.tagName,delete e.tagColumn,d("dict_open",null);if("/"==n&&t.eat("*"))return i(t,e,v);if("%"==n)return t.skipToEnd(),d("comment","comment");if(l(e),k.test(n)){switch(n){case")":e.nesting.pop();break;case"]":return e.nesting.pop(),d("list_close",null,"]");case"}":var r=s(e),a=r&&r.tag?"dict_close":"brace_term_close";return e.nesting.pop(),d(a,null);case",":t.eol()&&(e.commaAtEOL=!0),u(e);case";":h(e)&&(e.goalStart=!0);break;case"[":return e.nesting.push({type:"list",closeColumn:t.column(),alignment:t.column()+2}),d("list_open",null,"[");case"{":return b.quasiQuotations&&t.eat("|")?(e.nesting.push({type:"quasi-quotation",alignment:t.column()+1}),d("qq_open","qq_open")):(e.nesting.push({type:"curly",closeColumn:t.column(),alignment:t.column()+2}),d("brace_term_open",null));case"|":if(b.quasiQuotations){if(t.eat("|"))return e.tokenize=m,d("qq_sep","qq_sep");if(t.eat("}"))return e.nesting.pop(),d("qq_close","qq_close")}h(e)&&(e.goalStart=!0)}return d("solo",null,n)}if('"'==n||"'"==n||"`"==n)return e.nesting.push({type:"quoted",alignment:t.column()+1}),i(t,e,g(n));if("0"==n){if(t.eat(/x/i))return t.eatWhile(/[\da-f]/i),d("number","number");if(t.eat(/o/i))return t.eatWhile(/[0-7]/i),d("number","number");if(t.eat(/'/)){var c=t.next();return"\\"!=c||o(t)?d("code","code"):d("error","error")}}if(/\d/.test(n)||/[+-]/.test(n)&&t.eat(/\d/))return b.groupedIntegers?t.match(/^\d*((_|\s+)\d+)*(?:\.\d+)?(?:[eE][+\-]?\d+)?/):t.match(/^\d*(?:\.\d+)?(?:[eE][+\-]?\d+)?/),d("-"==n?"neg-number":"+"==n?"pos-number":"number");if(T.test(n)){t.eatWhile(T);var p=t.current();return"."==p&&f(t)?s(e)?d("fullstop","error",p):d("fullstop","fullstop",p):A.test(p)?d("neck","neck",p):h(e)&&M.test(p)?(e.goalStart=!0,d("symbol","operator",p)):d("symbol","operator",p)}t.eatWhile(/[\w_]/);var y=t.current();if("{"==t.peek()&&b.dicts)return e.tagName=y,e.tagColumn=t.column(),d("tag","tag",y);if("_"==n){if(1==y.length)return d("var","anon",y);var x=y.charAt(1);return x==x.toUpperCase()?d("var","var-2",y):d("var","var",y)}return n==n.toUpperCase()?d("var","var",y):"("==t.peek()?(e.functorName=y,e.functorColumn=t.column(),d("functor","functor",y)):d("atom","atom",y)}function g(t){return function(e,n){if(!a(e,n,t)){if(n.tokenize=p,"("==e.peek()){var i=e.current();return n.functorName=i,d("functor","functor",i)}if("{"==e.peek()&&b.dicts){var i=e.current();return n.tagName=i,d("tag","tag",i)}}return d(_[t],_[t])}}function m(t,e){for(var n,i=!1;n=t.next();){if("}"==n&&i){e.tokenize=p,t.backUp(2);break}i="|"==n}return d("qq_content","qq_content")}function v(t,e){for(var n,i=!1;n=t.next();){if("/"==n&&i){e.tokenize=p;break}i="*"==n}return d("comment","comment")}var y,x,b={quasiQuotations:!0,dicts:!0,unicodeEscape:!0,multiLineQuoted:!0,groupedIntegers:!0},_={'"':"string","'":"qatom","`":"bqstring"},w=/[abref\\'"nrtsv]/,S=/[0-7]/,C=/[0-9a-fA-F]/,T=/[-#$&*+.\/:<=>?@\\^~]/,k=/[[\]{}(),;|!]/,A=/^(:-|-->)$/,M=/^(,|;|->|\*->|\\+|\|)$/;return{startState:function(){return{tokenize:p,inBody:!1,goalStart:!1,lastType:null,nesting:new Array,curTerm:null,curToken:null}},token:function(t,e){if(null==e.curTerm&&n.metainfo&&(e.curTerm=0,e.curToken=0),t.sol()&&delete e.commaAtEOL,e.tokenize==p&&t.eatSpace())return t.eol()&&c(e),null;var i=e.tokenize(t,e);return t.eol()&&c(e),"neck"==y?(e.inBody=!0,e.goalStart=!0):"fullstop"==y&&(e.inBody=!1,e.goalStart=!1),e.lastType=y,"function"==typeof n.enrich&&(i=n.enrich(t,e,y,x,i)),i},indent:function(e,n){if(e.tokenize==v)return t.Pass;var i;return(i=s(e))?i.closeColumn&&!e.commaAtEOL?i.closeColumn:i.alignment:e.inBody?4:0},theme:"prolog",blockCommentStart:"/*",blockCommentEnd:"*/",blockCommentContinue:" * ",lineComment:"%"}}),t.defineMIME("text/x-prolog","prolog")}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/mode/prolog/prolog_keys",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";t.commands.prologStartIfThenElse=function(e){var n=e.getCursor("start"),i=e.getTokenAt(n,!0);return 1==i.state.goalStart?void e.replaceSelection("(   ","end"):t.Pass},t.commands.prologStartThen=function(e){function n(t){var e=t.nesting.length;return e>0?t.nesting[e-1]:null}function i(t){var e=n(t);return e?"control"==e.type:t.inBody}var r=e.getCursor("start"),o=e.getTokenAt(r,!0);return r.ch==o.end&&"operator"==o.type&&"-"==o.string&&i(o.state)?void e.replaceSelection(">  ","end"):t.Pass},t.commands.prologStartElse=function(e){var n=e.getCursor("start"),i=e.getTokenAt(n,!0);return 0!=i.start||n.ch!=i.end||/\S/.test(i.string)?t.Pass:void e.replaceSelection(";   ","end")},t.defineOption("prologKeys",null,function(e,n,i){if(i&&i!=t.Init&&e.removeKeyMap("prolog"),n){var r={name:"prolog","'('":"prologStartIfThenElse","'>'":"prologStartThen","';'":"prologStartElse","Ctrl-L":"refreshHighlight"};e.addKeyMap(r)}})}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/mode/prolog/prolog_query",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";t.commands.prologFireQuery=function(e){var n=e.lineCount(),i=e.getLine(n-1).length,r=e.getTokenAt({line:n,ch:i},!0);return"fullstop"==r.type?e.prologFireQuery(e.getValue()):t.Pass},t.defineOption("prologQuery",null,function(e,n,i){if(i&&i!=t.Init&&e.removeKeyMap("prologQuery"),"function"==typeof n){var r={name:"prologQuery",Enter:"prologFireQuery","Ctrl-Enter":"newlineAndIndent"};e.addKeyMap(r),e.prologFireQuery=n}})}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/mode/prolog/prolog_server",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";function e(t){"object"==typeof t&&(this.enabled=t.enabled||!1,this.role=t.role||"source",t.sourceID&&(this.sourceID=t.sourceID),this.url={change:t.url+"change",tokens:t.url+"tokens",leave:t.url+"leave",info:t.url+"info"},this.delay=t.delay?t.delay:a,this.generationFromServer=-1,this.tmo=null)}function n(t,e){var n=t.state.prologHighlightServer;null!=n&&null!=n.url&&n.enabled&&(n.tmo&&t.askRefresh(),void 0!==n.changes&&n.changes.push(e),"setValue"!=e.origin&&n.generationFromServer!=-1||(n.changes=void 0,t.serverAssistedHighlight()))}function i(t){var e=t.state.prologHighlightServer;if(null!=e&&null!=e.url&&null!=e.uuid){var n=e.uuid;delete e.uuid,$.ajax({url:e.url.leave,async:!1,contentType:"application/json",type:"POST",dataType:"json",data:JSON.stringify({uuid:n})})}}function r(){var t=(new Date).getTime(),e="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){var n=(t+16*Math.random())%16|0;return t=Math.floor(t/16),("x"==e?n:7&n|8).toString(16)});return e}function o(t,e,n,i,r){function o(t){var e=f.metainfo[t.curTerm];if(!e)return null;var n=e[t.curToken];return n?n:null}function a(){e.outOfSync||(console.log("Mismatch: ("+i+") "+n+"/"+p.type),e.outOfSync={okToken:e.curToken,okTerm:e.curTerm,skippedTerms:0,skippedTokens:[]}),f.editor.askRefresh()}function s(){var t=e.outOfSync;({curToken:t.okToken,curTerm:t.okTerm});return t.skippedTerms,null}function u(e){var n;if(i==e)return!0;if((n=e.lastIndexOf(i,1))>=0){for(var r=e.substring(i.length+n),o=0;o<r.length;o++)if(!t.eat(r.charAt(o)))return t.backUp(o),!1;return!0}return!1}function h(t){var e=t.slice(-1)[0];return e&&"quoted"==e.type}function d(t,e){if(t){if(!l[n])return i&&t.text==i?(e.curToken++,t.type):r;if(t.text&&i){if(u(t.text))return e.curToken++,t.type;return}if(l[n]==c[t.type])return"fullstop"==n?(e.curTerm++,e.curToken=0):h(e.nesting)||e.curToken++,t.type;if(l[n]==t.base)return e.curToken++,t.type;if("qatom"==n&&"atom"==c[t.type])return e.curToken++,t.type;if("number"==n&&"meta"==t.type)return e.curToken++,t.type;if("neg-number"==n&&t.text&&"-"==t.text)return e.curToken+=2,"number";if("pos-number"==n&&t.text&&"+"==t.text)return e.curToken+=2,"number"}}var f=this;if(null!=e.curTerm){var p,g;if(e.syntax_error)return"fullstop"==n&&(f.editor.askRefresh(),delete e.syntax_error),r;if(e.outOfSync){var m=e.outOfSync;if(m.skippedTerms<=3){if(m.skippedTokens.push({type:n,style:r,content:i}),g=s())return g;"fullstop"==n&&(m.skippedTokens=[],m.skippedTerms++)}return r}return(p=o(e))?void 0!==(g=d(p,e))?g:"syntax_error"==p.type?(e.syntax_error=!0,e.curToken=0,e.curTerm++,r):(a(),r+" outofsync"):(f.editor.askRefresh(),r)}return r}var a=1e3,s=1e3;t.defineOption("prologHighlightServer",!1,function(t,r,o){function a(){i(t)}t.state.prologHighlightServer?null==r?(i(t),t.off("change",n),window.removeEventListener("unload",a),delete t.state.prologHighlightServer,t.setOption("mode",{name:"prolog"})):r.enabled!=o.enabled&&(t.state.prologHighlightServer.enabled=r.enabled,r.enabled?(t.on("change",n),window.addEventListener("unload",a),t.lineCount()>0&&t.serverAssistedHighlight(!0)):(i(t),t.off("change",n),window.removeEventListener("unload",a),t.setOption("mode",{name:"prolog"}))):r&&(t.state.prologHighlightServer=new e(r),t.state.prologHighlightServer.enabled&&(t.on("change",n),window.addEventListener("unload",a),t.lineCount()>0&&t.serverAssistedHighlight(!0)))}),t.prototype.askRefresh=function(t){var e=this,n=e.state.prologHighlightServer;null!=n&&(void 0===t&&(t=n.delay),n.tmo&&clearTimeout(n.tmo),n.tmo=setTimeout(function(){e.serverAssistedHighlight()},t))},t.prototype.serverAssistedHighlight=function(t){function e(){var t=n.getOption("mode");return"object"!=typeof t?t={name:"prolog",enrich:o,editor:n}:t.enrich||(t.enrich=o,t.editor=n),t}var n=this,i=n.state.prologHighlightServer,a={};if(i.tmo=null,null!=i&&null!=i.url&&i.enabled&&(!n.isClean(i.generationFromServer)||t)){if(i.uuid)a.uuid=i.uuid,void 0==i.changes?(a.text=n.getValue(),a.text.length>s&&(i.changes=[])):(a.changes=i.changes,i.changes=[]);else{if(a.text=n.getValue(),""==a.text.trim())return;i.uuid=r(),a.uuid=i.uuid}a.role=i.role,"function"==typeof i.sourceID&&(a.sourceID=i.sourceID()),i.generationFromServer=n.changeGeneration(),$.ajax({url:i.url.tokens,dataType:"json",contentType:"application/json",type:"POST",data:JSON.stringify(a),success:function(t,i){var r=e();r.metainfo=t.tokens,n.setOption("mode",r)},error:function(t){409==t.status&&delete i.uuid}})}},t.commands.refreshHighlight=function(t){t.serverAssistedHighlight(!0)};var l={var:"var",atom:"atom",qatom:"qatom",bqstring:"string",symbol:"atom",functor:"functor",tag:"tag",number:"number",string:"string",code:"number","neg-number":"number","pos-number":"number",list_open:"list_open",list_close:"list_close",qq_open:"qq_open",qq_sep:"qq_sep",qq_close:"qq_close",dict_open:"dict_open",dict_close:"dict_close",brace_term_open:"brace_term_open",brace_term_close:"brace_term_close",neck:"neck",fullstop:"fullstop"},c={var:"var",singleton:"var",uatom:"var",atom:"atom",qatom:"qatom",string:"string",codes:"string",chars:"string",functor:"functor",tag:"tag",control:"atom",meta:"atom",op_type:"atom",int:"number",float:"number",key:"atom",sep:"atom",ext_quant:"atom",expanded:"expanded",comment_string:"string",identifier:"atom",delimiter:"atom",module:"atom",head_exported:"atom",head_public:"atom",head_extern:"atom",head_dynamic:"atom",head_multifile:"atom",head_unreferenced:"atom",head_hook:"atom",head_meta:"atom",head_constraint:"atom",head_imported:"atom",head_built_in:"atom",head_iso:"atom",head_def_iso:"atom",head_def_swi:"atom",head:"atom",goal_built_in:"atom",goal_imported:"atom",goal_autoload:"atom",goal_global:"atom",goal_undefined:"atom",goal_thread_local:"atom",goal_dynamic:"atom",goal_multifile:"atom",goal_expanded:"atom",goal_extern:"atom",goal_recursion:"atom",goal_meta:"atom",goal_foreign:"atom",goal_local:"atom",goal_constraint:"atom",goal_not_callable:"atom",xpce_method:"functor",xpce_class_builtin:"atom",xpce_class_lib:"atom",xpce_class_user:"atom",xpce_class_undef:"atom",option_name:"atom",no_option_name:"atom",flag_name:"atom",no_flag_name:"atom",file_no_depends:"atom",file:"atom",nofile:"atom",list_open:"list_open",list_close:"list_close",qq_open:"qq_open",qq_sep:"qq_sep",qq_close:"qq_close",qq_type:"atom",dict_open:"dict_open",dict_close:"dict_close",brace_term_open:"brace_term_open",brace_term_close:"brace_term_close",neck:"neck",fullstop:"fullstop",string_terminal:"string",html:"functor",entity:"atom",html_attribute:"functor",sgml_attr_function:"atom",http_location_for_id:"atom",http_no_location_for_id:"atom"};t.prototype.getEnrichedToken=function(t){if(null!=t.state.curTerm&&null!=t.state.curToken){var e,n=this.getOption("mode");if(n.metainfo&&(e=n.metainfo[t.state.curTerm]))return e[t.state.curToken-1]}},t.prototype.tokenInfo=function(t,e){var n=this.state.prologHighlightServer;return e||(e=$($.el.span({class:"token-info"},"..."))),$.ajax({url:n.url.info,data:t,success:function(t){e.html(t)}}),e[0]},t.prototype.getTokenReferences=function(t){function e(t,e){if(e&&0==e.indexOf("swish://"))return t.file=e.substring(8),!0}var n=[];switch(t.type){case"goal_local":var i={title:"Source for "+t.text+"/"+t.arity,line:t.line,regex:new RegExp("\\b"+RegExp.escape(t.text),"g"),showAllMatches:!0};e(i,t.file),n.push(i);break;case"file":var i={};e(i,t.path)&&(i.title="Included file "+i.file,n.push(i))}return n}}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/mode/xml/xml",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";var e={autoSelfClosers:{area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,frame:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0,menuitem:!0},implicitlyClosed:{dd:!0,li:!0,optgroup:!0,option:!0,p:!0,rp:!0,rt:!0,tbody:!0,td:!0,tfoot:!0,th:!0,tr:!0},contextGrabbers:{dd:{dd:!0,dt:!0},dt:{dd:!0,dt:!0},li:{li:!0},option:{option:!0,optgroup:!0},optgroup:{optgroup:!0},p:{address:!0,article:!0,aside:!0,blockquote:!0,dir:!0,div:!0,dl:!0,fieldset:!0,footer:!0,form:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,header:!0,hgroup:!0,hr:!0,menu:!0,nav:!0,ol:!0,p:!0,pre:!0,section:!0,table:!0,ul:!0},rp:{rp:!0,rt:!0},rt:{rp:!0,rt:!0},tbody:{tbody:!0,tfoot:!0},td:{td:!0,th:!0},tfoot:{tbody:!0},th:{td:!0,th:!0},thead:{tbody:!0,tfoot:!0},tr:{tr:!0}},doNotIndent:{pre:!0},allowUnquoted:!0,allowMissing:!0,caseFold:!0},n={autoSelfClosers:{},implicitlyClosed:{},contextGrabbers:{},doNotIndent:{},allowUnquoted:!1,allowMissing:!1,caseFold:!1};t.defineMode("xml",function(i,r){function o(t,e){function n(n){return e.tokenize=n,n(t,e)}var i=t.next();if("<"==i)return t.eat("!")?t.eat("[")?t.match("CDATA[")?n(l("atom","]]>")):null:t.match("--")?n(l("comment","-->")):t.match("DOCTYPE",!0,!0)?(t.eatWhile(/[\w\._\-]/),n(c(1))):null:t.eat("?")?(t.eatWhile(/[\w\._\-]/),e.tokenize=l("meta","?>"),"meta"):(k=t.eat("/")?"closeTag":"openTag",e.tokenize=a,"tag bracket");if("&"==i){var r;return r=t.eat("#")?t.eat("x")?t.eatWhile(/[a-fA-F\d]/)&&t.eat(";"):t.eatWhile(/[\d]/)&&t.eat(";"):t.eatWhile(/[\w\.\-:]/)&&t.eat(";"),r?"atom":"error"}return t.eatWhile(/[^&<]/),null}function a(t,e){var n=t.next();if(">"==n||"/"==n&&t.eat(">"))return e.tokenize=o,k=">"==n?"endTag":"selfcloseTag","tag bracket";if("="==n)return k="equals",null;if("<"==n){e.tokenize=o,e.state=f,e.tagName=e.tagStart=null;var i=e.tokenize(t,e);return i?i+" tag error":"tag error"}return/[\'\"]/.test(n)?(e.tokenize=s(n),e.stringStartCol=t.column(),e.tokenize(t,e)):(t.match(/^[^\s\u00a0=<>\"\']*[^\s\u00a0=<>\"\'\/]/),"word")}function s(t){var e=function(e,n){for(;!e.eol();)if(e.next()==t){n.tokenize=a;break}return"string"};return e.isInAttribute=!0,e}function l(t,e){return function(n,i){for(;!n.eol();){if(n.match(e)){i.tokenize=o;break}n.next()}return t}}function c(t){return function(e,n){for(var i;null!=(i=e.next());){if("<"==i)return n.tokenize=c(t+1),n.tokenize(e,n);if(">"==i){if(1==t){n.tokenize=o;break}return n.tokenize=c(t-1),n.tokenize(e,n)}}return"meta"}}function u(t,e,n){this.prev=t.context,this.tagName=e,this.indent=t.indented,this.startOfLine=n,(S.doNotIndent.hasOwnProperty(e)||t.context&&t.context.noIndent)&&(this.noIndent=!0)}function h(t){t.context&&(t.context=t.context.prev)}function d(t,e){for(var n;;){if(!t.context)return;if(n=t.context.tagName,!S.contextGrabbers.hasOwnProperty(n)||!S.contextGrabbers[n].hasOwnProperty(e))return;h(t)}}function f(t,e,n){return"openTag"==t?(n.tagStart=e.column(),p):"closeTag"==t?g:f}function p(t,e,n){return"word"==t?(n.tagName=e.current(),A="tag",y):(A="error",p)}function g(t,e,n){if("word"==t){var i=e.current();return n.context&&n.context.tagName!=i&&S.implicitlyClosed.hasOwnProperty(n.context.tagName)&&h(n),n.context&&n.context.tagName==i||S.matchClosing===!1?(A="tag",
-m):(A="tag error",v)}return A="error",v}function m(t,e,n){return"endTag"!=t?(A="error",m):(h(n),f)}function v(t,e,n){return A="error",m(t,e,n)}function y(t,e,n){if("word"==t)return A="attribute",x;if("endTag"==t||"selfcloseTag"==t){var i=n.tagName,r=n.tagStart;return n.tagName=n.tagStart=null,"selfcloseTag"==t||S.autoSelfClosers.hasOwnProperty(i)?d(n,i):(d(n,i),n.context=new u(n,i,r==n.indented)),f}return A="error",y}function x(t,e,n){return"equals"==t?b:(S.allowMissing||(A="error"),y(t,e,n))}function b(t,e,n){return"string"==t?_:"word"==t&&S.allowUnquoted?(A="string",y):(A="error",y(t,e,n))}function _(t,e,n){return"string"==t?_:y(t,e,n)}var w=i.indentUnit,S={},C=r.htmlMode?e:n;for(var T in C)S[T]=C[T];for(var T in r)S[T]=r[T];var k,A;return o.isInText=!0,{startState:function(t){var e={tokenize:o,state:f,indented:t||0,tagName:null,tagStart:null,context:null};return null!=t&&(e.baseIndent=t),e},token:function(t,e){if(!e.tagName&&t.sol()&&(e.indented=t.indentation()),t.eatSpace())return null;k=null;var n=e.tokenize(t,e);return(n||k)&&"comment"!=n&&(A=null,e.state=e.state(k||n,t,e),A&&(n="error"==A?n+" error":A)),n},indent:function(e,n,i){var r=e.context;if(e.tokenize.isInAttribute)return e.tagStart==e.indented?e.stringStartCol+1:e.indented+w;if(r&&r.noIndent)return t.Pass;if(e.tokenize!=a&&e.tokenize!=o)return i?i.match(/^(\s*)/)[0].length:0;if(e.tagName)return S.multilineTagIndentPastTag!==!1?e.tagStart+e.tagName.length+2:e.tagStart+w*(S.multilineTagIndentFactor||1);if(S.alignCDATA&&/<!\[CDATA\[/.test(n))return 0;var s=n&&/^<(\/)?([\w_:\.-]*)/.exec(n);if(s&&s[1])for(;r;){if(r.tagName==s[2]){r=r.prev;break}if(!S.implicitlyClosed.hasOwnProperty(r.tagName))break;r=r.prev}else if(s)for(;r;){var l=S.contextGrabbers[r.tagName];if(!l||!l.hasOwnProperty(s[2]))break;r=r.prev}for(;r&&r.prev&&!r.startOfLine;)r=r.prev;return r?r.indent+w:e.baseIndent||0},electricInput:/<\/[\s\w:]+>$/,blockCommentStart:"<!--",blockCommentEnd:"-->",configuration:S.htmlMode?"html":"xml",helperType:S.htmlMode?"html":"xml",skipAttribute:function(t){t.state==b&&(t.state=y)}}}),t.defineMIME("text/xml","xml"),t.defineMIME("application/xml","xml"),t.mimeModes.hasOwnProperty("text/html")||t.defineMIME("text/html",{name:"xml",htmlMode:!0})}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/mode/meta",["../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";t.modeInfo=[{name:"APL",mime:"text/apl",mode:"apl",ext:["dyalog","apl"]},{name:"PGP",mimes:["application/pgp","application/pgp-keys","application/pgp-signature"],mode:"asciiarmor",ext:["pgp"]},{name:"ASN.1",mime:"text/x-ttcn-asn",mode:"asn.1",ext:["asn","asn1"]},{name:"Asterisk",mime:"text/x-asterisk",mode:"asterisk",file:/^extensions\.conf$/i},{name:"Brainfuck",mime:"text/x-brainfuck",mode:"brainfuck",ext:["b","bf"]},{name:"C",mime:"text/x-csrc",mode:"clike",ext:["c","h"]},{name:"C++",mime:"text/x-c++src",mode:"clike",ext:["cpp","c++","cc","cxx","hpp","h++","hh","hxx"],alias:["cpp"]},{name:"Cobol",mime:"text/x-cobol",mode:"cobol",ext:["cob","cpy"]},{name:"C#",mime:"text/x-csharp",mode:"clike",ext:["cs"],alias:["csharp"]},{name:"Clojure",mime:"text/x-clojure",mode:"clojure",ext:["clj","cljc","cljx"]},{name:"ClojureScript",mime:"text/x-clojurescript",mode:"clojure",ext:["cljs"]},{name:"Closure Stylesheets (GSS)",mime:"text/x-gss",mode:"css",ext:["gss"]},{name:"CMake",mime:"text/x-cmake",mode:"cmake",ext:["cmake","cmake.in"],file:/^CMakeLists.txt$/},{name:"CoffeeScript",mime:"text/x-coffeescript",mode:"coffeescript",ext:["coffee"],alias:["coffee","coffee-script"]},{name:"Common Lisp",mime:"text/x-common-lisp",mode:"commonlisp",ext:["cl","lisp","el"],alias:["lisp"]},{name:"Cypher",mime:"application/x-cypher-query",mode:"cypher",ext:["cyp","cypher"]},{name:"Cython",mime:"text/x-cython",mode:"python",ext:["pyx","pxd","pxi"]},{name:"Crystal",mime:"text/x-crystal",mode:"crystal",ext:["cr"]},{name:"CSS",mime:"text/css",mode:"css",ext:["css"]},{name:"CQL",mime:"text/x-cassandra",mode:"sql",ext:["cql"]},{name:"D",mime:"text/x-d",mode:"d",ext:["d"]},{name:"Dart",mimes:["application/dart","text/x-dart"],mode:"dart",ext:["dart"]},{name:"diff",mime:"text/x-diff",mode:"diff",ext:["diff","patch"]},{name:"Django",mime:"text/x-django",mode:"django"},{name:"Dockerfile",mime:"text/x-dockerfile",mode:"dockerfile",file:/^Dockerfile$/},{name:"DTD",mime:"application/xml-dtd",mode:"dtd",ext:["dtd"]},{name:"Dylan",mime:"text/x-dylan",mode:"dylan",ext:["dylan","dyl","intr"]},{name:"EBNF",mime:"text/x-ebnf",mode:"ebnf"},{name:"ECL",mime:"text/x-ecl",mode:"ecl",ext:["ecl"]},{name:"edn",mime:"application/edn",mode:"clojure",ext:["edn"]},{name:"Eiffel",mime:"text/x-eiffel",mode:"eiffel",ext:["e"]},{name:"Elm",mime:"text/x-elm",mode:"elm",ext:["elm"]},{name:"Embedded Javascript",mime:"application/x-ejs",mode:"htmlembedded",ext:["ejs"]},{name:"Embedded Ruby",mime:"application/x-erb",mode:"htmlembedded",ext:["erb"]},{name:"Erlang",mime:"text/x-erlang",mode:"erlang",ext:["erl"]},{name:"Factor",mime:"text/x-factor",mode:"factor",ext:["factor"]},{name:"FCL",mime:"text/x-fcl",mode:"fcl"},{name:"Forth",mime:"text/x-forth",mode:"forth",ext:["forth","fth","4th"]},{name:"Fortran",mime:"text/x-fortran",mode:"fortran",ext:["f","for","f77","f90"]},{name:"F#",mime:"text/x-fsharp",mode:"mllike",ext:["fs"],alias:["fsharp"]},{name:"Gas",mime:"text/x-gas",mode:"gas",ext:["s"]},{name:"Gherkin",mime:"text/x-feature",mode:"gherkin",ext:["feature"]},{name:"GitHub Flavored Markdown",mime:"text/x-gfm",mode:"gfm",file:/^(readme|contributing|history).md$/i},{name:"Go",mime:"text/x-go",mode:"go",ext:["go"]},{name:"Groovy",mime:"text/x-groovy",mode:"groovy",ext:["groovy","gradle"],file:/^Jenkinsfile$/},{name:"HAML",mime:"text/x-haml",mode:"haml",ext:["haml"]},{name:"Haskell",mime:"text/x-haskell",mode:"haskell",ext:["hs"]},{name:"Haskell (Literate)",mime:"text/x-literate-haskell",mode:"haskell-literate",ext:["lhs"]},{name:"Haxe",mime:"text/x-haxe",mode:"haxe",ext:["hx"]},{name:"HXML",mime:"text/x-hxml",mode:"haxe",ext:["hxml"]},{name:"ASP.NET",mime:"application/x-aspx",mode:"htmlembedded",ext:["aspx"],alias:["asp","aspx"]},{name:"HTML",mime:"text/html",mode:"htmlmixed",ext:["html","htm"],alias:["xhtml"]},{name:"HTTP",mime:"message/http",mode:"http"},{name:"IDL",mime:"text/x-idl",mode:"idl",ext:["pro"]},{name:"Pug",mime:"text/x-pug",mode:"pug",ext:["jade","pug"],alias:["jade"]},{name:"Java",mime:"text/x-java",mode:"clike",ext:["java"]},{name:"Java Server Pages",mime:"application/x-jsp",mode:"htmlembedded",ext:["jsp"],alias:["jsp"]},{name:"JavaScript",mimes:["text/javascript","text/ecmascript","application/javascript","application/x-javascript","application/ecmascript"],mode:"javascript",ext:["js"],alias:["ecmascript","js","node"]},{name:"JSON",mimes:["application/json","application/x-json"],mode:"javascript",ext:["json","map"],alias:["json5"]},{name:"JSON-LD",mime:"application/ld+json",mode:"javascript",ext:["jsonld"],alias:["jsonld"]},{name:"JSX",mime:"text/jsx",mode:"jsx",ext:["jsx"]},{name:"Jinja2",mime:"null",mode:"jinja2"},{name:"Julia",mime:"text/x-julia",mode:"julia",ext:["jl"]},{name:"Kotlin",mime:"text/x-kotlin",mode:"clike",ext:["kt"]},{name:"LESS",mime:"text/x-less",mode:"css",ext:["less"]},{name:"LiveScript",mime:"text/x-livescript",mode:"livescript",ext:["ls"],alias:["ls"]},{name:"Lua",mime:"text/x-lua",mode:"lua",ext:["lua"]},{name:"Markdown",mime:"text/x-markdown",mode:"markdown",ext:["markdown","md","mkd"]},{name:"mIRC",mime:"text/mirc",mode:"mirc"},{name:"MariaDB SQL",mime:"text/x-mariadb",mode:"sql"},{name:"Mathematica",mime:"text/x-mathematica",mode:"mathematica",ext:["m","nb"]},{name:"Modelica",mime:"text/x-modelica",mode:"modelica",ext:["mo"]},{name:"MUMPS",mime:"text/x-mumps",mode:"mumps",ext:["mps"]},{name:"MS SQL",mime:"text/x-mssql",mode:"sql"},{name:"mbox",mime:"application/mbox",mode:"mbox",ext:["mbox"]},{name:"MySQL",mime:"text/x-mysql",mode:"sql"},{name:"Nginx",mime:"text/x-nginx-conf",mode:"nginx",file:/nginx.*\.conf$/i},{name:"NSIS",mime:"text/x-nsis",mode:"nsis",ext:["nsh","nsi"]},{name:"NTriples",mime:"text/n-triples",mode:"ntriples",ext:["nt"]},{name:"Objective C",mime:"text/x-objectivec",mode:"clike",ext:["m","mm"],alias:["objective-c","objc"]},{name:"OCaml",mime:"text/x-ocaml",mode:"mllike",ext:["ml","mli","mll","mly"]},{name:"Octave",mime:"text/x-octave",mode:"octave",ext:["m"]},{name:"Oz",mime:"text/x-oz",mode:"oz",ext:["oz"]},{name:"Pascal",mime:"text/x-pascal",mode:"pascal",ext:["p","pas"]},{name:"PEG.js",mime:"null",mode:"pegjs",ext:["jsonld"]},{name:"Perl",mime:"text/x-perl",mode:"perl",ext:["pl","pm"]},{name:"PHP",mime:"application/x-httpd-php",mode:"php",ext:["php","php3","php4","php5","phtml"]},{name:"Pig",mime:"text/x-pig",mode:"pig",ext:["pig"]},{name:"Plain Text",mime:"text/plain",mode:"null",ext:["txt","text","conf","def","list","log"]},{name:"PLSQL",mime:"text/x-plsql",mode:"sql",ext:["pls"]},{name:"PowerShell",mime:"application/x-powershell",mode:"powershell",ext:["ps1","psd1","psm1"]},{name:"Properties files",mime:"text/x-properties",mode:"properties",ext:["properties","ini","in"],alias:["ini","properties"]},{name:"ProtoBuf",mime:"text/x-protobuf",mode:"protobuf",ext:["proto"]},{name:"Python",mime:"text/x-python",mode:"python",ext:["BUILD","bzl","py","pyw"],file:/^(BUCK|BUILD)$/},{name:"Puppet",mime:"text/x-puppet",mode:"puppet",ext:["pp"]},{name:"Q",mime:"text/x-q",mode:"q",ext:["q"]},{name:"R",mime:"text/x-rsrc",mode:"r",ext:["r","R"],alias:["rscript"]},{name:"reStructuredText",mime:"text/x-rst",mode:"rst",ext:["rst"],alias:["rst"]},{name:"RPM Changes",mime:"text/x-rpm-changes",mode:"rpm"},{name:"RPM Spec",mime:"text/x-rpm-spec",mode:"rpm",ext:["spec"]},{name:"Ruby",mime:"text/x-ruby",mode:"ruby",ext:["rb"],alias:["jruby","macruby","rake","rb","rbx"]},{name:"Rust",mime:"text/x-rustsrc",mode:"rust",ext:["rs"]},{name:"SAS",mime:"text/x-sas",mode:"sas",ext:["sas"]},{name:"Sass",mime:"text/x-sass",mode:"sass",ext:["sass"]},{name:"Scala",mime:"text/x-scala",mode:"clike",ext:["scala"]},{name:"Scheme",mime:"text/x-scheme",mode:"scheme",ext:["scm","ss"]},{name:"SCSS",mime:"text/x-scss",mode:"css",ext:["scss"]},{name:"Shell",mime:"text/x-sh",mode:"shell",ext:["sh","ksh","bash"],alias:["bash","sh","zsh"],file:/^PKGBUILD$/},{name:"Sieve",mime:"application/sieve",mode:"sieve",ext:["siv","sieve"]},{name:"Slim",mimes:["text/x-slim","application/x-slim"],mode:"slim",ext:["slim"]},{name:"Smalltalk",mime:"text/x-stsrc",mode:"smalltalk",ext:["st"]},{name:"Smarty",mime:"text/x-smarty",mode:"smarty",ext:["tpl"]},{name:"Solr",mime:"text/x-solr",mode:"solr"},{name:"Soy",mime:"text/x-soy",mode:"soy",ext:["soy"],alias:["closure template"]},{name:"SPARQL",mime:"application/sparql-query",mode:"sparql",ext:["rq","sparql"],alias:["sparul"]},{name:"Spreadsheet",mime:"text/x-spreadsheet",mode:"spreadsheet",alias:["excel","formula"]},{name:"SQL",mime:"text/x-sql",mode:"sql",ext:["sql"]},{name:"SQLite",mime:"text/x-sqlite",mode:"sql"},{name:"Squirrel",mime:"text/x-squirrel",mode:"clike",ext:["nut"]},{name:"Stylus",mime:"text/x-styl",mode:"stylus",ext:["styl"]},{name:"Swift",mime:"text/x-swift",mode:"swift",ext:["swift"]},{name:"sTeX",mime:"text/x-stex",mode:"stex"},{name:"LaTeX",mime:"text/x-latex",mode:"stex",ext:["text","ltx"],alias:["tex"]},{name:"SystemVerilog",mime:"text/x-systemverilog",mode:"verilog",ext:["v"]},{name:"Tcl",mime:"text/x-tcl",mode:"tcl",ext:["tcl"]},{name:"Textile",mime:"text/x-textile",mode:"textile",ext:["textile"]},{name:"TiddlyWiki ",mime:"text/x-tiddlywiki",mode:"tiddlywiki"},{name:"Tiki wiki",mime:"text/tiki",mode:"tiki"},{name:"TOML",mime:"text/x-toml",mode:"toml",ext:["toml"]},{name:"Tornado",mime:"text/x-tornado",mode:"tornado"},{name:"troff",mime:"text/troff",mode:"troff",ext:["1","2","3","4","5","6","7","8","9"]},{name:"TTCN",mime:"text/x-ttcn",mode:"ttcn",ext:["ttcn","ttcn3","ttcnpp"]},{name:"TTCN_CFG",mime:"text/x-ttcn-cfg",mode:"ttcn-cfg",ext:["cfg"]},{name:"Turtle",mime:"text/turtle",mode:"turtle",ext:["ttl"]},{name:"TypeScript",mime:"application/typescript",mode:"javascript",ext:["ts"],alias:["ts"]},{name:"TypeScript-JSX",mime:"text/typescript-jsx",mode:"jsx",ext:["tsx"],alias:["tsx"]},{name:"Twig",mime:"text/x-twig",mode:"twig"},{name:"Web IDL",mime:"text/x-webidl",mode:"webidl",ext:["webidl"]},{name:"VB.NET",mime:"text/x-vb",mode:"vb",ext:["vb"]},{name:"VBScript",mime:"text/vbscript",mode:"vbscript",ext:["vbs"]},{name:"Velocity",mime:"text/velocity",mode:"velocity",ext:["vtl"]},{name:"Verilog",mime:"text/x-verilog",mode:"verilog",ext:["v"]},{name:"VHDL",mime:"text/x-vhdl",mode:"vhdl",ext:["vhd","vhdl"]},{name:"Vue.js Component",mimes:["script/x-vue","text/x-vue"],mode:"vue",ext:["vue"]},{name:"XML",mimes:["application/xml","text/xml"],mode:"xml",ext:["xml","xsl","xsd","svg"],alias:["rss","wsdl","xsd"]},{name:"XQuery",mime:"application/xquery",mode:"xquery",ext:["xy","xquery"]},{name:"Yacas",mime:"text/x-yacas",mode:"yacas",ext:["ys"]},{name:"YAML",mimes:["text/x-yaml","text/yaml"],mode:"yaml",ext:["yaml","yml"],alias:["yml"]},{name:"Z80",mime:"text/x-z80",mode:"z80",ext:["z80"]},{name:"mscgen",mime:"text/x-mscgen",mode:"mscgen",ext:["mscgen","mscin","msc"]},{name:"xu",mime:"text/x-xu",mode:"mscgen",ext:["xu"]},{name:"msgenny",mime:"text/x-msgenny",mode:"mscgen",ext:["msgenny"]}];for(var e=0;e<t.modeInfo.length;e++){var n=t.modeInfo[e];n.mimes&&(n.mime=n.mimes[0])}t.findModeByMIME=function(e){e=e.toLowerCase();for(var n=0;n<t.modeInfo.length;n++){var i=t.modeInfo[n];if(i.mime==e)return i;if(i.mimes)for(var r=0;r<i.mimes.length;r++)if(i.mimes[r]==e)return i}return/\+xml$/.test(e)?t.findModeByMIME("application/xml"):/\+json$/.test(e)?t.findModeByMIME("application/json"):void 0},t.findModeByExtension=function(e){for(var n=0;n<t.modeInfo.length;n++){var i=t.modeInfo[n];if(i.ext)for(var r=0;r<i.ext.length;r++)if(i.ext[r]==e)return i}},t.findModeByFileName=function(e){for(var n=0;n<t.modeInfo.length;n++){var i=t.modeInfo[n];if(i.file&&i.file.test(e))return i}var r=e.lastIndexOf("."),o=r>-1&&e.substring(r+1,e.length);if(o)return t.findModeByExtension(o)},t.findModeByName=function(e){e=e.toLowerCase();for(var n=0;n<t.modeInfo.length;n++){var i=t.modeInfo[n];if(i.name.toLowerCase()==e)return i;if(i.alias)for(var r=0;r<i.alias.length;r++)if(i.alias[r].toLowerCase()==e)return i}}}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror"),require("../xml/xml"),require("../meta")):"function"==typeof define&&define.amd?define("cm/mode/markdown/markdown",["../../lib/codemirror","../xml/xml","../meta"],t):t(CodeMirror)}(function(t){"use strict";t.defineMode("markdown",function(e,n){function i(n){if(t.findModeByName){var i=t.findModeByName(n);i&&(n=i.mime||i.mimes[0])}var r=t.getMode(e,n);return"null"==r.name?null:r}function r(t,e,n){return e.f=e.inline=n,n(t,e)}function o(t,e,n){return e.f=e.block=n,n(t,e)}function a(t){return!t||!/\S/.test(t.string)}function s(t){return t.linkTitle=!1,t.em=!1,t.strong=!1,t.strikethrough=!1,t.quote=0,t.indentedCode=!1,t.f==c&&(t.f=f,t.block=l),t.trailingSpace=0,t.trailingSpaceNewLine=!1,t.prevLine=t.thisLine,t.thisLine=null,null}function l(e,o){var s=e.sol(),l=o.list!==!1,c=o.indentedCode;o.indentedCode=!1,l&&(o.indentationDiff>=0?(o.indentationDiff<4&&(o.indentation-=o.indentationDiff),o.list=null):o.indentation>0?o.list=null:o.list=!1);var d=null;if(o.indentationDiff>=4)return e.skipToEnd(),c||a(o.prevLine)?(o.indentation-=4,o.indentedCode=!0,w.code):null;if(e.eatSpace())return null;if((d=e.match(A))&&d[1].length<=6)return o.header=d[1].length,n.highlightFormatting&&(o.formatting="header"),o.f=o.inline,h(o);if(!(a(o.prevLine)||o.quote||l||c)&&(d=e.match(M)))return o.header="="==d[0].charAt(0)?1:2,n.highlightFormatting&&(o.formatting="header"),o.f=o.inline,h(o);if(e.eat(">"))return o.quote=s?1:o.quote+1,n.highlightFormatting&&(o.formatting="quote"),e.eatSpace(),h(o);if("["===e.peek())return r(e,o,v);if(e.match(C,!0))return o.hr=!0,w.hr;if(d=e.match(T)){var f=d[1]?"ol":"ul";for(o.indentation=e.column()+e.current().length,o.list=!0;o.listStack&&e.column()<o.listStack[o.listStack.length-1];)o.listStack.pop();return o.listStack.push(o.indentation),n.taskLists&&e.match(k,!1)&&(o.taskList=!0),o.f=o.inline,n.highlightFormatting&&(o.formatting=["list","list-"+f]),h(o)}return n.fencedCodeBlocks&&(d=e.match(E,!0))?(o.fencedChars=d[1],o.localMode=i(d[2]),o.localMode&&(o.localState=t.startState(o.localMode)),o.f=o.block=u,n.highlightFormatting&&(o.formatting="code-block"),o.code=-1,h(o)):r(e,o,o.inline)}function c(e,n){var i=b.token(e,n.htmlState);if(!_){var r=t.innerMode(b,n.htmlState);("xml"==r.mode.name&&null===r.state.tagStart&&!r.state.context&&r.state.tokenize.isInText||n.md_inside&&e.current().indexOf(">")>-1)&&(n.f=f,n.block=l,n.htmlState=null)}return i}function u(t,e){if(e.fencedChars&&t.match(e.fencedChars)){n.highlightFormatting&&(e.formatting="code-block");var i=h(e);return e.localMode=e.localState=null,e.block=l,e.f=f,e.fencedChars=null,e.code=0,i}return e.fencedChars&&t.skipTo(e.fencedChars)?"comment":e.localMode?e.localMode.token(t,e.localState):(t.skipToEnd(),w.code)}function h(t){var e=[];if(t.formatting){e.push(w.formatting),"string"==typeof t.formatting&&(t.formatting=[t.formatting]);for(var i=0;i<t.formatting.length;i++)e.push(w.formatting+"-"+t.formatting[i]),"header"===t.formatting[i]&&e.push(w.formatting+"-"+t.formatting[i]+"-"+t.header),"quote"===t.formatting[i]&&(!n.maxBlockquoteDepth||n.maxBlockquoteDepth>=t.quote?e.push(w.formatting+"-"+t.formatting[i]+"-"+t.quote):e.push("error"))}if(t.taskOpen)return e.push("meta"),e.length?e.join(" "):null;if(t.taskClosed)return e.push("property"),e.length?e.join(" "):null;if(t.linkHref?e.push(w.linkHref,"url"):(t.strong&&e.push(w.strong),t.em&&e.push(w.em),t.strikethrough&&e.push(w.strikethrough),t.linkText&&e.push(w.linkText),t.code&&e.push(w.code),t.image&&e.push(w.image),t.imageAltText&&e.push(w.imageAltText,"link"),t.imageMarker&&e.push(w.imageMarker)),t.header&&e.push(w.header,w.header+"-"+t.header),t.quote&&(e.push(w.quote),!n.maxBlockquoteDepth||n.maxBlockquoteDepth>=t.quote?e.push(w.quote+"-"+t.quote):e.push(w.quote+"-"+n.maxBlockquoteDepth)),t.list!==!1){var r=(t.listStack.length-1)%3;r?1===r?e.push(w.list2):e.push(w.list3):e.push(w.list1)}return t.trailingSpaceNewLine?e.push("trailing-space-new-line"):t.trailingSpace&&e.push("trailing-space-"+(t.trailingSpace%2?"a":"b")),e.length?e.join(" "):null}function d(t,e){if(t.match(L,!0))return h(e)}function f(e,i){var r=i.text(e,i);if("undefined"!=typeof r)return r;if(i.list)return i.list=null,h(i);if(i.taskList){var a="x"!==e.match(k,!0)[1];return a?i.taskOpen=!0:i.taskClosed=!0,n.highlightFormatting&&(i.formatting="task"),i.taskList=!1,h(i)}if(i.taskOpen=!1,i.taskClosed=!1,i.header&&e.match(/^#+$/,!0))return n.highlightFormatting&&(i.formatting="header"),h(i);var s=e.next();if(i.linkTitle){i.linkTitle=!1;var l=s;"("===s&&(l=")"),l=(l+"").replace(/([.?*+^\[\]\\(){}|-])/g,"\\$1");var u="^\\s*(?:[^"+l+"\\\\]+|\\\\\\\\|\\\\.)"+l;if(e.match(new RegExp(u),!0))return w.linkHref}if("`"===s){var d=i.formatting;n.highlightFormatting&&(i.formatting="code"),e.eatWhile("`");var f=e.current().length;if(0==i.code)return i.code=f,h(i);if(f==i.code){var m=h(i);return i.code=0,m}return i.formatting=d,h(i)}if(i.code)return h(i);if("\\"===s&&(e.next(),n.highlightFormatting)){var v=h(i),y=w.formatting+"-escape";return v?v+" "+y:y}if("!"===s&&e.match(/\[[^\]]*\] ?(?:\(|\[)/,!1))return i.imageMarker=!0,i.image=!0,n.highlightFormatting&&(i.formatting="image"),h(i);if("["===s&&i.imageMarker&&e.match(/[^\]]*\](\(.*?\)| ?\[.*?\])/,!1))return i.imageMarker=!1,i.imageAltText=!0,n.highlightFormatting&&(i.formatting="image"),h(i);if("]"===s&&i.imageAltText){n.highlightFormatting&&(i.formatting="image");var v=h(i);return i.imageAltText=!1,i.image=!1,i.inline=i.f=g,v}if("["===s&&e.match(/[^\]]*\](\(.*\)| ?\[.*?\])/,!1)&&!i.image)return i.linkText=!0,n.highlightFormatting&&(i.formatting="link"),h(i);if("]"===s&&i.linkText&&e.match(/\(.*?\)| ?\[.*?\]/,!1)){n.highlightFormatting&&(i.formatting="link");var v=h(i);return i.linkText=!1,i.inline=i.f=g,v}if("<"===s&&e.match(/^(https?|ftps?):\/\/(?:[^\\>]|\\.)+>/,!1)){i.f=i.inline=p,n.highlightFormatting&&(i.formatting="link");var v=h(i);return v?v+=" ":v="",v+w.linkInline}if("<"===s&&e.match(/^[^> \\]+@(?:[^\\>]|\\.)+>/,!1)){i.f=i.inline=p,n.highlightFormatting&&(i.formatting="link");var v=h(i);return v?v+=" ":v="",v+w.linkEmail}if("<"===s&&e.match(/^(!--|[a-z]+(?:\s+[a-z_:.\-]+(?:\s*=\s*[^ >]+)?)*\s*>)/i,!1)){var x=e.string.indexOf(">",e.pos);if(x!=-1){var _=e.string.substring(e.start,x);/markdown\s*=\s*('|"){0,1}1('|"){0,1}/.test(_)&&(i.md_inside=!0)}return e.backUp(1),i.htmlState=t.startState(b),o(e,i,c)}if("<"===s&&e.match(/^\/\w*?>/))return i.md_inside=!1,"tag";if("*"===s||"_"===s){for(var S=1,C=1==e.pos?" ":e.string.charAt(e.pos-2);S<3&&e.eat(s);)S++;var T=e.peek()||" ",A=!/\s/.test(T)&&(!P.test(T)||/\s/.test(C)||P.test(C)),M=!/\s/.test(C)&&(!P.test(C)||/\s/.test(T)||P.test(T)),L=null,E=null;if(S%2&&(i.em||!A||"*"!==s&&M&&!P.test(C)?i.em!=s||!M||"*"!==s&&A&&!P.test(T)||(L=!1):L=!0),S>1&&(i.strong||!A||"*"!==s&&M&&!P.test(C)?i.strong!=s||!M||"*"!==s&&A&&!P.test(T)||(E=!1):E=!0),null!=E||null!=L){n.highlightFormatting&&(i.formatting=null==L?"strong":null==E?"em":"strong em"),L===!0&&(i.em=s),E===!0&&(i.strong=s);var m=h(i);return L===!1&&(i.em=!1),E===!1&&(i.strong=!1),m}}else if(" "===s&&(e.eat("*")||e.eat("_"))){if(" "===e.peek())return h(i);e.backUp(1)}if(n.strikethrough)if("~"===s&&e.eatWhile(s)){if(i.strikethrough){n.highlightFormatting&&(i.formatting="strikethrough");var m=h(i);return i.strikethrough=!1,m}if(e.match(/^[^\s]/,!1))return i.strikethrough=!0,n.highlightFormatting&&(i.formatting="strikethrough"),h(i)}else if(" "===s&&e.match(/^~~/,!0)){if(" "===e.peek())return h(i);e.backUp(2)}return" "===s&&(e.match(/ +$/,!1)?i.trailingSpace++:i.trailingSpace&&(i.trailingSpaceNewLine=!0)),h(i)}function p(t,e){var i=t.next();if(">"===i){e.f=e.inline=f,n.highlightFormatting&&(e.formatting="link");var r=h(e);return r?r+=" ":r="",r+w.linkInline}return t.match(/^[^>]+/,!0),w.linkInline}function g(t,e){if(t.eatSpace())return null;var i=t.next();return"("===i||"["===i?(e.f=e.inline=m("("===i?")":"]",0),n.highlightFormatting&&(e.formatting="link-string"),e.linkHref=!0,h(e)):"error"}function m(t){return function(e,i){var r=e.next();if(r===t){i.f=i.inline=f,n.highlightFormatting&&(i.formatting="link-string");var o=h(i);return i.linkHref=!1,o}return e.match(N[t]),i.linkHref=!0,h(i)}}function v(t,e){return t.match(/^([^\]\\]|\\.)*\]:/,!1)?(e.f=y,t.next(),n.highlightFormatting&&(e.formatting="link"),e.linkText=!0,h(e)):r(t,e,f)}function y(t,e){if(t.match(/^\]:/,!0)){e.f=e.inline=x,n.highlightFormatting&&(e.formatting="link");var i=h(e);return e.linkText=!1,i}return t.match(/^([^\]\\]|\\.)+/,!0),w.linkText}function x(t,e){return t.eatSpace()?null:(t.match(/^[^\s]+/,!0),void 0===t.peek()?e.linkTitle=!0:t.match(/^(?:\s+(?:"(?:[^"\\]|\\\\|\\.)+"|'(?:[^'\\]|\\\\|\\.)+'|\((?:[^)\\]|\\\\|\\.)+\)))?/,!0),e.f=e.inline=f,w.linkHref+" url")}var b=t.getMode(e,"text/html"),_="null"==b.name;void 0===n.highlightFormatting&&(n.highlightFormatting=!1),void 0===n.maxBlockquoteDepth&&(n.maxBlockquoteDepth=0),void 0===n.taskLists&&(n.taskLists=!1),void 0===n.strikethrough&&(n.strikethrough=!1),void 0===n.tokenTypeOverrides&&(n.tokenTypeOverrides={});var w={header:"header",code:"comment",quote:"quote",list1:"variable-2",list2:"variable-3",list3:"keyword",hr:"hr",image:"image",imageAltText:"image-alt-text",imageMarker:"image-marker",formatting:"formatting",linkInline:"link",linkEmail:"link",linkText:"link",linkHref:"string",em:"em",strong:"strong",strikethrough:"strikethrough"};for(var S in w)w.hasOwnProperty(S)&&n.tokenTypeOverrides[S]&&(w[S]=n.tokenTypeOverrides[S]);var C=/^([*\-_])(?:\s*\1){2,}\s*$/,T=/^(?:[*\-+]|^[0-9]+([.)]))\s+/,k=/^\[(x| )\](?=\s)/,A=n.allowAtxHeaderWithoutSpace?/^(#+)/:/^(#+)(?: |$)/,M=/^ *(?:\={1,}|-{1,})\s*$/,L=/^[^#!\[\]*_\\<>` "'(~]+/,E=new RegExp("^("+(n.fencedCodeBlocks===!0?"~~~+|```+":n.fencedCodeBlocks)+")[ \\t]*([\\w+#-]*)"),P=/[!\"#$%&\'()*+,\-\.\/:;<=>?@\[\\\]^_`{|}~—]/,N={")":/^(?:[^\\\(\)]|\\.|\((?:[^\\\(\)]|\\.)*\))*?(?=\))/,"]":/^(?:[^\\\[\]]|\\.|\[(?:[^\\\[\\]]|\\.)*\])*?(?=\])/},O={startState:function(){return{f:l,prevLine:null,thisLine:null,block:l,htmlState:null,indentation:0,inline:f,text:d,formatting:!1,linkText:!1,linkHref:!1,linkTitle:!1,code:0,em:!1,strong:!1,header:0,hr:!1,taskList:!1,list:!1,listStack:[],quote:0,trailingSpace:0,trailingSpaceNewLine:!1,strikethrough:!1,fencedChars:null}},copyState:function(e){return{f:e.f,prevLine:e.prevLine,thisLine:e.thisLine,block:e.block,htmlState:e.htmlState&&t.copyState(b,e.htmlState),indentation:e.indentation,localMode:e.localMode,localState:e.localMode?t.copyState(e.localMode,e.localState):null,inline:e.inline,text:e.text,formatting:!1,linkTitle:e.linkTitle,code:e.code,em:e.em,strong:e.strong,strikethrough:e.strikethrough,header:e.header,hr:e.hr,taskList:e.taskList,list:e.list,listStack:e.listStack.slice(0),quote:e.quote,indentedCode:e.indentedCode,trailingSpace:e.trailingSpace,trailingSpaceNewLine:e.trailingSpaceNewLine,md_inside:e.md_inside,fencedChars:e.fencedChars}},token:function(t,e){if(e.formatting=!1,t!=e.thisLine){var n=e.header||e.hr;if(e.header=0,e.hr=!1,t.match(/^\s*$/,!0)||n){if(s(e),!n)return null;e.prevLine=null}e.prevLine=e.thisLine,e.thisLine=t,e.taskList=!1,e.trailingSpace=0,e.trailingSpaceNewLine=!1,e.f=e.block;var i=t.match(/^\s*/,!0)[0].replace(/\t/g,"    ").length;if(e.indentationDiff=Math.min(i-e.indentation,4),e.indentation=e.indentation+e.indentationDiff,i>0)return null}return e.f(t,e)},innerMode:function(t){return t.block==c?{state:t.htmlState,mode:b}:t.localState?{state:t.localState,mode:t.localMode}:{state:t,mode:O}},blankLine:s,getType:h,closeBrackets:"()[]{}''\"\"``",fold:"markdown"};return O},"xml"),t.defineMIME("text/x-markdown","markdown")}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/addon/edit/matchbrackets",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){function e(t,e,i,r){var o=t.getLineHandle(e.line),l=e.ch-1,c=l>=0&&s[o.text.charAt(l)]||s[o.text.charAt(++l)];if(!c)return null;var u=">"==c.charAt(1)?1:-1;if(i&&u>0!=(l==e.ch))return null;var h=t.getTokenTypeAt(a(e.line,l+1)),d=n(t,a(e.line,l+(u>0?1:0)),u,h||null,r);return null==d?null:{from:a(e.line,l),to:d&&d.pos,match:d&&d.ch==c.charAt(0),forward:u>0}}function n(t,e,n,i,r){for(var o=r&&r.maxScanLineLength||1e4,l=r&&r.maxScanLines||1e3,c=[],u=r&&r.bracketRegex?r.bracketRegex:/[(){}[\]]/,h=n>0?Math.min(e.line+l,t.lastLine()+1):Math.max(t.firstLine()-1,e.line-l),d=e.line;d!=h;d+=n){var f=t.getLine(d);if(f){var p=n>0?0:f.length-1,g=n>0?f.length:-1;if(!(f.length>o))for(d==e.line&&(p=e.ch-(n<0?1:0));p!=g;p+=n){var m=f.charAt(p);if(u.test(m)&&(void 0===i||t.getTokenTypeAt(a(d,p+1))==i)){var v=s[m];if(">"==v.charAt(1)==n>0)c.push(m);else{if(!c.length)return{pos:a(d,p),ch:m};c.pop()}}}}}return d-n!=(n>0?t.lastLine():t.firstLine())&&null}function i(t,n,i){for(var r=t.state.matchBrackets.maxHighlightLineLength||1e3,s=[],l=t.listSelections(),c=0;c<l.length;c++){var u=l[c].empty()&&e(t,l[c].head,!1,i);if(u&&t.getLine(u.from.line).length<=r){var h=u.match?"CodeMirror-matchingbracket":"CodeMirror-nonmatchingbracket";s.push(t.markText(u.from,a(u.from.line,u.from.ch+1),{className:h})),u.to&&t.getLine(u.to.line).length<=r&&s.push(t.markText(u.to,a(u.to.line,u.to.ch+1),{className:h}))}}if(s.length){o&&t.state.focused&&t.focus();var d=function(){t.operation(function(){for(var t=0;t<s.length;t++)s[t].clear()})};if(!n)return d;setTimeout(d,800)}}function r(t){t.operation(function(){l&&(l(),l=null),l=i(t,!1,t.state.matchBrackets)})}var o=/MSIE \d/.test(navigator.userAgent)&&(null==document.documentMode||document.documentMode<8),a=t.Pos,s={"(":")>",")":"(<","[":"]>","]":"[<","{":"}>","}":"{<"},l=null;t.defineOption("matchBrackets",!1,function(e,n,i){i&&i!=t.Init&&(e.off("cursorActivity",r),l&&(l(),l=null)),n&&(e.state.matchBrackets="object"==typeof n?n:{},e.on("cursorActivity",r))}),t.defineExtension("matchBrackets",function(){i(this,!0)}),t.defineExtension("findMatchingBracket",function(t,n,i){return e(this,t,n,i)}),t.defineExtension("scanForBracket",function(t,e,i,r){return n(this,t,e,i,r)})}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/addon/comment/continuecomment",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){function e(e){if(e.getOption("disableInput"))return t.Pass;for(var i,r=e.listSelections(),o=[],a=0;a<r.length;a++){var s=r[a].head,l=e.getTokenAt(s);if("comment"!=l.type)return t.Pass;var c=t.innerMode(e.getMode(),l.state).mode;if(i){if(i!=c)return t.Pass}else i=c;var u=null;if(i.blockCommentStart&&i.blockCommentContinue){var h,d=l.string.indexOf(i.blockCommentEnd),f=e.getRange(t.Pos(s.line,0),t.Pos(s.line,l.end));if(d!=-1&&d==l.string.length-i.blockCommentEnd.length&&s.ch>=d);else if(0==l.string.indexOf(i.blockCommentStart)){if(u=f.slice(0,l.start),!/^\s*$/.test(u)){u="";for(var p=0;p<l.start;++p)u+=" "}}else(h=f.indexOf(i.blockCommentContinue))!=-1&&h+i.blockCommentContinue.length>l.start&&/^\s*$/.test(f.slice(0,h))&&(u=f.slice(0,h));null!=u&&(u+=i.blockCommentContinue)}if(null==u&&i.lineComment&&n(e)){var g=e.getLine(s.line),h=g.indexOf(i.lineComment);h>-1&&(u=g.slice(0,h),/\S/.test(u)?u=null:u+=i.lineComment+g.slice(h+i.lineComment.length).match(/^\s*/)[0])}if(null==u)return t.Pass;o[a]="\n"+u}e.operation(function(){for(var t=r.length-1;t>=0;t--)e.replaceRange(o[t],r[t].from(),r[t].to(),"+insert")})}function n(t){var e=t.getOption("continueComments");return!e||"object"!=typeof e||e.continueLineComment!==!1}for(var i=["clike","css","javascript"],r=0;r<i.length;++r)t.extendMode(i[r],{blockCommentContinue:" * "});t.defineOption("continueComments",null,function(n,i,r){if(r&&r!=t.Init&&n.removeKeyMap("continueComment"),i){var o="Enter";"string"==typeof i?o=i:"object"==typeof i&&i.key&&(o=i.key);var a={name:"continueComment"};a[o]=e,n.addKeyMap(a)}})}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/addon/comment/comment",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";function e(t){var e=t.search(o);return e==-1?0:e}function n(t,e,n){return/\bstring\b/.test(t.getTokenTypeAt(a(e.line,0)))&&!/^[\'\"\`]/.test(n)}function i(t,e){var n=t.getMode();return n.useInnerComments!==!1&&n.innerMode?t.getModeAt(e):n}var r={},o=/[^\s\u00a0]/,a=t.Pos;t.commands.toggleComment=function(t){t.toggleComment()},t.defineExtension("toggleComment",function(t){t||(t=r);for(var e=this,n=1/0,i=this.listSelections(),o=null,s=i.length-1;s>=0;s--){var l=i[s].from(),c=i[s].to();l.line>=n||(c.line>=n&&(c=a(n,0)),n=l.line,null==o?e.uncomment(l,c,t)?o="un":(e.lineComment(l,c,t),o="line"):"un"==o?e.uncomment(l,c,t):e.lineComment(l,c,t))}}),t.defineExtension("lineComment",function(t,s,l){l||(l=r);var c=this,u=i(c,t),h=c.getLine(t.line);if(null!=h&&!n(c,t,h)){var d=l.lineComment||u.lineComment;if(!d)return void((l.blockCommentStart||u.blockCommentStart)&&(l.fullLines=!0,c.blockComment(t,s,l)));var f=Math.min(0!=s.ch||s.line==t.line?s.line+1:s.line,c.lastLine()+1),p=null==l.padding?" ":l.padding,g=l.commentBlankLines||t.line==s.line;c.operation(function(){if(l.indent){for(var n=null,i=t.line;i<f;++i){var r=c.getLine(i),s=r.slice(0,e(r));(null==n||n.length>s.length)&&(n=s)}for(var i=t.line;i<f;++i){var r=c.getLine(i),u=n.length;(g||o.test(r))&&(r.slice(0,u)!=n&&(u=e(r)),c.replaceRange(n+d+p,a(i,0),a(i,u)))}}else for(var i=t.line;i<f;++i)(g||o.test(c.getLine(i)))&&c.replaceRange(d+p,a(i,0))})}}),t.defineExtension("blockComment",function(t,e,n){n||(n=r);var s=this,l=i(s,t),c=n.blockCommentStart||l.blockCommentStart,u=n.blockCommentEnd||l.blockCommentEnd;
-if(!c||!u)return void((n.lineComment||l.lineComment)&&0!=n.fullLines&&s.lineComment(t,e,n));if(!/\bcomment\b/.test(s.getTokenTypeAt(a(t.line,0)))){var h=Math.min(e.line,s.lastLine());h!=t.line&&0==e.ch&&o.test(s.getLine(h))&&--h;var d=null==n.padding?" ":n.padding;t.line>h||s.operation(function(){if(0!=n.fullLines){var i=o.test(s.getLine(h));s.replaceRange(d+u,a(h)),s.replaceRange(c+d,a(t.line,0));var r=n.blockCommentLead||l.blockCommentLead;if(null!=r)for(var f=t.line+1;f<=h;++f)(f!=h||i)&&s.replaceRange(r+d,a(f,0))}else s.replaceRange(u,e),s.replaceRange(c,t)})}}),t.defineExtension("uncomment",function(t,e,n){n||(n=r);var s,l=this,c=i(l,t),u=Math.min(0!=e.ch||e.line==t.line?e.line:e.line-1,l.lastLine()),h=Math.min(t.line,u),d=n.lineComment||c.lineComment,f=[],p=null==n.padding?" ":n.padding;t:if(d){for(var g=h;g<=u;++g){var m=l.getLine(g),v=m.indexOf(d);if(v>-1&&!/comment/.test(l.getTokenTypeAt(a(g,v+1)))&&(v=-1),v==-1&&o.test(m))break t;if(v>-1&&o.test(m.slice(0,v)))break t;f.push(m)}if(l.operation(function(){for(var t=h;t<=u;++t){var e=f[t-h],n=e.indexOf(d),i=n+d.length;n<0||(e.slice(i,i+p.length)==p&&(i+=p.length),s=!0,l.replaceRange("",a(t,n),a(t,i)))}}),s)return!0}var y=n.blockCommentStart||c.blockCommentStart,x=n.blockCommentEnd||c.blockCommentEnd;if(!y||!x)return!1;var b=n.blockCommentLead||c.blockCommentLead,_=l.getLine(h),w=_.indexOf(y);if(w==-1)return!1;var S=u==h?_:l.getLine(u),C=S.indexOf(x,u==h?w+y.length:0);C==-1&&h!=u&&(S=l.getLine(--u),C=S.indexOf(x));var T=a(h,w+1),k=a(u,C+1);if(C==-1||!/comment/.test(l.getTokenTypeAt(T))||!/comment/.test(l.getTokenTypeAt(k))||l.getRange(T,k,"\n").indexOf(x)>-1)return!1;var A=_.lastIndexOf(y,t.ch),M=A==-1?-1:_.slice(0,t.ch).indexOf(x,A+y.length);if(A!=-1&&M!=-1&&M+x.length!=t.ch)return!1;M=S.indexOf(x,e.ch);var L=S.slice(e.ch).lastIndexOf(y,M-e.ch);return A=M==-1||L==-1?-1:e.ch+L,(M==-1||A==-1||A==e.ch)&&(l.operation(function(){l.replaceRange("",a(u,C-(p&&S.slice(C-p.length,C)==p?p.length:0)),a(u,C+x.length));var t=w+y.length;if(p&&_.slice(t,t+p.length)==p&&(t+=p.length),l.replaceRange("",a(h,w),a(h,t)),b)for(var e=h+1;e<=u;++e){var n=l.getLine(e),i=n.indexOf(b);if(i!=-1&&!o.test(n.slice(0,i))){var r=i+b.length;p&&n.slice(r,r+p.length)==p&&(r+=p.length),l.replaceRange("",a(e,i),a(e,r))}}}),!0)})}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/addon/hint/show-hint",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";function e(t,e){this.cm=t,this.options=e,this.widget=null,this.debounce=0,this.tick=0,this.startPos=this.cm.getCursor("start"),this.startLen=this.cm.getLine(this.startPos.line).length-this.cm.getSelection().length;var n=this;t.on("cursorActivity",this.activityFunc=function(){n.cursorActivity()})}function n(e,n){var i=t.cmpPos(n.from,e.from);return i>0&&e.to.ch-e.from.ch!=n.to.ch-n.from.ch}function i(t,e,n){var i=t.options.hintOptions,r={};for(var o in g)r[o]=g[o];if(i)for(var o in i)void 0!==i[o]&&(r[o]=i[o]);if(n)for(var o in n)void 0!==n[o]&&(r[o]=n[o]);return r.hint.resolve&&(r.hint=r.hint.resolve(t,e)),r}function r(t){return"string"==typeof t?t:t.text}function o(t,e){function n(t,n){var r;r="string"!=typeof n?function(t){return n(t,e)}:i.hasOwnProperty(n)?i[n]:n,o[t]=r}var i={Up:function(){e.moveFocus(-1)},Down:function(){e.moveFocus(1)},PageUp:function(){e.moveFocus(-e.menuSize()+1,!0)},PageDown:function(){e.moveFocus(e.menuSize()-1,!0)},Home:function(){e.setFocus(0)},End:function(){e.setFocus(e.length-1)},Enter:e.pick,Tab:e.pick,Esc:e.close},r=t.options.customKeys,o=r?{}:i;if(r)for(var a in r)r.hasOwnProperty(a)&&n(a,r[a]);var s=t.options.extraKeys;if(s)for(var a in s)s.hasOwnProperty(a)&&n(a,s[a]);return o}function a(t,e){for(;e&&e!=t;){if("LI"===e.nodeName.toUpperCase()&&e.parentNode==t)return e;e=e.parentNode}}function s(e,n){this.completion=e,this.data=n,this.picked=!1;var i=this,s=e.cm,l=this.hints=document.createElement("ul");l.className="CodeMirror-hints",this.selectedHint=n.selectedHint||0;for(var c=n.list,u=0;u<c.length;++u){var f=l.appendChild(document.createElement("li")),p=c[u],g=h+(u!=this.selectedHint?"":" "+d);null!=p.className&&(g=p.className+" "+g),f.className=g,p.render?p.render(f,n,p):f.appendChild(document.createTextNode(p.displayText||r(p))),f.hintId=u}var m=s.cursorCoords(e.options.alignWithWord?n.from:null),v=m.left,y=m.bottom,x=!0;l.style.left=v+"px",l.style.top=y+"px";var b=window.innerWidth||Math.max(document.body.offsetWidth,document.documentElement.offsetWidth),_=window.innerHeight||Math.max(document.body.offsetHeight,document.documentElement.offsetHeight);(e.options.container||document.body).appendChild(l);var w=l.getBoundingClientRect(),S=w.bottom-_,C=l.scrollHeight>l.clientHeight+1,T=s.getScrollInfo();if(S>0){var k=w.bottom-w.top,A=m.top-(m.bottom-w.top);if(A-k>0)l.style.top=(y=m.top-k)+"px",x=!1;else if(k>_){l.style.height=_-5+"px",l.style.top=(y=m.bottom-w.top)+"px";var M=s.getCursor();n.from.ch!=M.ch&&(m=s.cursorCoords(M),l.style.left=(v=m.left)+"px",w=l.getBoundingClientRect())}}var L=w.right-b;if(L>0&&(w.right-w.left>b&&(l.style.width=b-5+"px",L-=w.right-w.left-b),l.style.left=(v=m.left-L)+"px"),C)for(var E=l.firstChild;E;E=E.nextSibling)E.style.paddingRight=s.display.nativeBarWidth+"px";if(s.addKeyMap(this.keyMap=o(e,{moveFocus:function(t,e){i.changeActive(i.selectedHint+t,e)},setFocus:function(t){i.changeActive(t)},menuSize:function(){return i.screenAmount()},length:c.length,close:function(){e.close()},pick:function(){i.pick()},data:n})),e.options.closeOnUnfocus){var P;s.on("blur",this.onBlur=function(){P=setTimeout(function(){e.close()},100)}),s.on("focus",this.onFocus=function(){clearTimeout(P)})}return s.on("scroll",this.onScroll=function(){var t=s.getScrollInfo(),n=s.getWrapperElement().getBoundingClientRect(),i=y+T.top-t.top,r=i-(window.pageYOffset||(document.documentElement||document.body).scrollTop);return x||(r+=l.offsetHeight),r<=n.top||r>=n.bottom?e.close():(l.style.top=i+"px",void(l.style.left=v+T.left-t.left+"px"))}),t.on(l,"dblclick",function(t){var e=a(l,t.target||t.srcElement);e&&null!=e.hintId&&(i.changeActive(e.hintId),i.pick())}),t.on(l,"click",function(t){var n=a(l,t.target||t.srcElement);n&&null!=n.hintId&&(i.changeActive(n.hintId),e.options.completeOnSingleClick&&i.pick())}),t.on(l,"mousedown",function(){setTimeout(function(){s.focus()},20)}),t.signal(n,"select",c[0],l.firstChild),!0}function l(t,e){if(!t.somethingSelected())return e;for(var n=[],i=0;i<e.length;i++)e[i].supportsSelection&&n.push(e[i]);return n}function c(t,e,n,i){if(t.async)t(e,i,n);else{var r=t(e,n);r&&r.then?r.then(i):i(r)}}function u(e,n){var i,r=e.getHelpers(n,"hint");if(r.length){var o=function(t,e,n){function i(r){return r==o.length?e(null):void c(o[r],t,n,function(t){t&&t.list.length>0?e(t):i(r+1)})}var o=l(t,r);i(0)};return o.async=!0,o.supportsSelection=!0,o}return(i=e.getHelper(e.getCursor(),"hintWords"))?function(e){return t.hint.fromList(e,{words:i})}:t.hint.anyword?function(e,n){return t.hint.anyword(e,n)}:function(){}}var h="CodeMirror-hint",d="CodeMirror-hint-active";t.showHint=function(t,e,n){if(!e)return t.showHint(n);n&&n.async&&(e.async=!0);var i={hint:e};if(n)for(var r in n)i[r]=n[r];return t.showHint(i)},t.defineExtension("showHint",function(n){n=i(this,this.getCursor("start"),n);var r=this.listSelections();if(!(r.length>1)){if(this.somethingSelected()){if(!n.hint.supportsSelection)return;for(var o=0;o<r.length;o++)if(r[o].head.line!=r[o].anchor.line)return}this.state.completionActive&&this.state.completionActive.close();var a=this.state.completionActive=new e(this,n);a.options.hint&&(t.signal(this,"startCompletion",this),a.update(!0))}});var f=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},p=window.cancelAnimationFrame||clearTimeout;e.prototype={close:function(){this.active()&&(this.cm.state.completionActive=null,this.tick=null,this.cm.off("cursorActivity",this.activityFunc),this.widget&&this.data&&t.signal(this.data,"close"),this.widget&&this.widget.close(),t.signal(this.cm,"endCompletion",this.cm))},active:function(){return this.cm.state.completionActive==this},pick:function(e,n){var i=e.list[n];i.hint?i.hint(this.cm,e,i):this.cm.replaceRange(r(i),i.from||e.from,i.to||e.to,"complete"),t.signal(e,"pick",i),this.close()},cursorActivity:function(){this.debounce&&(p(this.debounce),this.debounce=0);var t=this.cm.getCursor(),e=this.cm.getLine(t.line);if(t.line!=this.startPos.line||e.length-t.ch!=this.startLen-this.startPos.ch||t.ch<this.startPos.ch||this.cm.somethingSelected()||t.ch&&this.options.closeCharacters.test(e.charAt(t.ch-1)))this.close();else{var n=this;this.debounce=f(function(){n.update()}),this.widget&&this.widget.disable()}},update:function(t){if(null!=this.tick){var e=this,n=++this.tick;c(this.options.hint,this.cm,this.options,function(i){e.tick==n&&e.finishUpdate(i,t)})}},finishUpdate:function(e,i){this.data&&t.signal(this.data,"update");var r=this.widget&&this.widget.picked||i&&this.options.completeSingle;this.widget&&this.widget.close(),e&&this.data&&n(this.data,e)||(this.data=e,e&&e.list.length&&(r&&1==e.list.length?this.pick(e,0):(this.widget=new s(this,e),t.signal(e,"shown"))))}},s.prototype={close:function(){if(this.completion.widget==this){this.completion.widget=null,this.hints.parentNode.removeChild(this.hints),this.completion.cm.removeKeyMap(this.keyMap);var t=this.completion.cm;this.completion.options.closeOnUnfocus&&(t.off("blur",this.onBlur),t.off("focus",this.onFocus)),t.off("scroll",this.onScroll)}},disable:function(){this.completion.cm.removeKeyMap(this.keyMap);var t=this;this.keyMap={Enter:function(){t.picked=!0}},this.completion.cm.addKeyMap(this.keyMap)},pick:function(){this.completion.pick(this.data,this.selectedHint)},changeActive:function(e,n){if(e>=this.data.list.length?e=n?this.data.list.length-1:0:e<0&&(e=n?0:this.data.list.length-1),this.selectedHint!=e){var i=this.hints.childNodes[this.selectedHint];i.className=i.className.replace(" "+d,""),i=this.hints.childNodes[this.selectedHint=e],i.className+=" "+d,i.offsetTop<this.hints.scrollTop?this.hints.scrollTop=i.offsetTop-3:i.offsetTop+i.offsetHeight>this.hints.scrollTop+this.hints.clientHeight&&(this.hints.scrollTop=i.offsetTop+i.offsetHeight-this.hints.clientHeight+3),t.signal(this.data,"select",this.data.list[this.selectedHint],i)}},screenAmount:function(){return Math.floor(this.hints.clientHeight/this.hints.firstChild.offsetHeight)||1}},t.registerHelper("hint","auto",{resolve:u}),t.registerHelper("hint","fromList",function(e,n){var i=e.getCursor(),r=e.getTokenAt(i),o=t.Pos(i.line,r.end);if(r.string&&/\w/.test(r.string[r.string.length-1]))var a=r.string,s=t.Pos(i.line,r.start);else var a="",s=o;for(var l=[],c=0;c<n.words.length;c++){var u=n.words[c];u.slice(0,a.length)==a&&l.push(u)}if(l.length)return{list:l,from:s,to:o}}),t.commands.autocomplete=t.showHint;var g={hint:t.hint.auto,completeSingle:!0,alignWithWord:!0,closeCharacters:/[\s()\[\]{};:>,]/,closeOnUnfocus:!0,completeOnSingleClick:!0,container:null,customKeys:null,extraKeys:null};t.defineOption("hintOptions",null)}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/addon/hint/anyword-hint",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";var e=/[\w$]+/,n=500;t.registerHelper("hint","anyword",function(i,r){for(var o=r&&r.word||e,a=r&&r.range||n,s=i.getCursor(),l=i.getLine(s.line),c=s.ch,u=c;u&&o.test(l.charAt(u-1));)--u;for(var h=u!=c&&l.slice(u,c),d=r&&r.list||[],f={},p=new RegExp(o.source,"g"),g=-1;g<=1;g+=2)for(var m=s.line,v=Math.min(Math.max(m+g*a,i.firstLine()),i.lastLine())+g;m!=v;m+=g)for(var y,x=i.getLine(m);y=p.exec(x);)m==s.line&&y[0]===h||h&&0!=y[0].lastIndexOf(h,0)||Object.prototype.hasOwnProperty.call(f,y[0])||(f[y[0]]=!0,d.push(y[0]));return{list:d,from:t.Pos(s.line,u),to:t.Pos(s.line,c)}})}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/addon/display/placeholder",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){function e(t){t.state.placeholder&&(t.state.placeholder.parentNode.removeChild(t.state.placeholder),t.state.placeholder=null)}function n(t){e(t);var n=t.state.placeholder=document.createElement("pre");n.style.cssText="height: 0; overflow: visible",n.className="CodeMirror-placeholder";var i=t.getOption("placeholder");"string"==typeof i&&(i=document.createTextNode(i)),n.appendChild(i),t.display.lineSpace.insertBefore(n,t.display.lineSpace.firstChild)}function i(t){o(t)&&n(t)}function r(t){var i=t.getWrapperElement(),r=o(t);i.className=i.className.replace(" CodeMirror-empty","")+(r?" CodeMirror-empty":""),r?n(t):e(t)}function o(t){return 1===t.lineCount()&&""===t.getLine(0)}t.defineOption("placeholder","",function(n,o,a){var s=a&&a!=t.Init;if(o&&!s)n.on("blur",i),n.on("change",r),n.on("swapDoc",r),r(n);else if(!o&&s){n.off("blur",i),n.off("change",r),n.off("swapDoc",r),e(n);var l=n.getWrapperElement();l.className=l.className.replace(" CodeMirror-empty","")}o&&!n.hasFocus()&&i(n)})}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/addon/runmode/runmode",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";t.runMode=function(e,n,i,r){var o=t.getMode(t.defaults,n),a=/MSIE \d/.test(navigator.userAgent),s=a&&(null==document.documentMode||document.documentMode<9);if(i.appendChild){var l=r&&r.tabSize||t.defaults.tabSize,c=i,u=0;c.innerHTML="",i=function(t,e){if("\n"==t)return c.appendChild(document.createTextNode(s?"\r":t)),void(u=0);for(var n="",i=0;;){var r=t.indexOf("\t",i);if(r==-1){n+=t.slice(i),u+=t.length-i;break}u+=r-i,n+=t.slice(i,r);var o=l-u%l;u+=o;for(var a=0;a<o;++a)n+=" ";i=r+1}if(e){var h=c.appendChild(document.createElement("span"));h.className="cm-"+e.replace(/ +/g," cm-"),h.appendChild(document.createTextNode(n))}else c.appendChild(document.createTextNode(n))}}for(var h=t.splitLines(e),d=r&&r.state||t.startState(o),f=0,p=h.length;f<p;++f){f&&i("\n");var g=new t.StringStream(h[f]);for(!g.string&&o.blankLine&&o.blankLine(d);!g.eol();){var m=o.token(g,d);i(g.current(),m,f,g.start,d),g.start=g.pos}}}}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/addon/search/searchcursor",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";function e(t,e,r,o){if(this.atOccurrence=!1,this.doc=t,null==o&&"string"==typeof e&&(o=!1),r=r?t.clipPos(r):i(0,0),this.pos={from:r,to:r},"string"!=typeof e)e.global||(e=new RegExp(e.source,e.ignoreCase?"ig":"g")),this.matches=function(n,r){if(n){e.lastIndex=0;for(var o,a,s=t.getLine(r.line).slice(0,r.ch),l=0;;){e.lastIndex=l;var c=e.exec(s);if(!c)break;if(o=c,a=o.index,l=o.index+(o[0].length||1),l==s.length)break}var u=o&&o[0].length||0;u||(0==a&&0==s.length?o=void 0:a!=t.getLine(r.line).length&&u++)}else{e.lastIndex=r.ch;var s=t.getLine(r.line),o=e.exec(s),u=o&&o[0].length||0,a=o&&o.index;a+u==s.length||u||(u=1)}if(o&&u)return{from:i(r.line,a),to:i(r.line,a+u),match:o}};else{var a=e;o&&(e=e.toLowerCase());var s=o?function(t){return t.toLowerCase()}:function(t){return t},l=e.split("\n");if(1==l.length)e.length?this.matches=function(r,o){if(r){var l=t.getLine(o.line).slice(0,o.ch),c=s(l),u=c.lastIndexOf(e);if(u>-1)return u=n(l,c,u),{from:i(o.line,u),to:i(o.line,u+a.length)}}else{var l=t.getLine(o.line).slice(o.ch),c=s(l),u=c.indexOf(e);if(u>-1)return u=n(l,c,u)+o.ch,{from:i(o.line,u),to:i(o.line,u+a.length)}}}:this.matches=function(){};else{var c=a.split("\n");this.matches=function(e,n){var r=l.length-1;if(e){if(n.line-(l.length-1)<t.firstLine())return;if(s(t.getLine(n.line).slice(0,c[r].length))!=l[l.length-1])return;for(var o=i(n.line,c[r].length),a=n.line-1,u=r-1;u>=1;--u,--a)if(l[u]!=s(t.getLine(a)))return;var h=t.getLine(a),d=h.length-c[0].length;if(s(h.slice(d))!=l[0])return;return{from:i(a,d),to:o}}if(!(n.line+(l.length-1)>t.lastLine())){var h=t.getLine(n.line),d=h.length-c[0].length;if(s(h.slice(d))==l[0]){for(var f=i(n.line,d),a=n.line+1,u=1;u<r;++u,++a)if(l[u]!=s(t.getLine(a)))return;if(s(t.getLine(a).slice(0,c[r].length))==l[r])return{from:f,to:i(a,c[r].length)}}}}}}}function n(t,e,n){if(t.length==e.length)return n;for(var i=Math.min(n,t.length);;){var r=t.slice(0,i).toLowerCase().length;if(r<n)++i;else{if(!(r>n))return i;--i}}}var i=t.Pos;e.prototype={findNext:function(){return this.find(!1)},findPrevious:function(){return this.find(!0)},find:function(t){function e(t){var e=i(t,0);return n.pos={from:e,to:e},n.atOccurrence=!1,!1}for(var n=this,r=this.doc.clipPos(t?this.pos.from:this.pos.to);;){if(this.pos=this.matches(t,r))return this.atOccurrence=!0,this.pos.match||!0;if(t){if(!r.line)return e(0);r=i(r.line-1,this.doc.getLine(r.line-1).length)}else{var o=this.doc.lineCount();if(r.line==o-1)return e(o);r=i(r.line+1,0)}}},from:function(){if(this.atOccurrence)return this.pos.from},to:function(){if(this.atOccurrence)return this.pos.to},replace:function(e,n){if(this.atOccurrence){var r=t.splitLines(e);this.doc.replaceRange(r,this.pos.from,this.pos.to,n),this.pos.to=i(this.pos.from.line+r.length-1,r[r.length-1].length+(1==r.length?this.pos.from.ch:0))}}},t.defineExtension("getSearchCursor",function(t,n,i){return new e(this.doc,t,n,i)}),t.defineDocExtension("getSearchCursor",function(t,n,i){return new e(this,t,n,i)}),t.defineExtension("selectMatches",function(e,n){for(var i=[],r=this.getSearchCursor(e,this.getCursor("from"),n);r.findNext()&&!(t.cmpPos(r.to(),this.getCursor("to"))>0);)i.push({anchor:r.from(),head:r.to()});i.length&&this.setSelections(i,0)})}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/addon/dialog/dialog",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){function e(t,e,n){var i,r=t.getWrapperElement();return i=r.appendChild(document.createElement("div")),n?i.className="CodeMirror-dialog CodeMirror-dialog-bottom":i.className="CodeMirror-dialog CodeMirror-dialog-top","string"==typeof e?i.innerHTML=e:i.appendChild(e),i}function n(t,e){t.state.currentNotificationClose&&t.state.currentNotificationClose(),t.state.currentNotificationClose=e}t.defineExtension("openDialog",function(i,r,o){function a(t){if("string"==typeof t)h.value=t;else{if(c)return;c=!0,l.parentNode.removeChild(l),u.focus(),o.onClose&&o.onClose(l)}}o||(o={}),n(this,null);var s,l=e(this,i,o.bottom),c=!1,u=this,h=l.getElementsByTagName("input")[0];return h?(h.focus(),o.value&&(h.value=o.value,o.selectValueOnOpen!==!1&&h.select()),o.onInput&&t.on(h,"input",function(t){o.onInput(t,h.value,a)}),o.onKeyUp&&t.on(h,"keyup",function(t){o.onKeyUp(t,h.value,a)}),t.on(h,"keydown",function(e){o&&o.onKeyDown&&o.onKeyDown(e,h.value,a)||((27==e.keyCode||o.closeOnEnter!==!1&&13==e.keyCode)&&(h.blur(),t.e_stop(e),a()),13==e.keyCode&&r(h.value,e))}),o.closeOnBlur!==!1&&t.on(h,"blur",a)):(s=l.getElementsByTagName("button")[0])&&(t.on(s,"click",function(){a(),u.focus()}),o.closeOnBlur!==!1&&t.on(s,"blur",a),s.focus()),a}),t.defineExtension("openConfirm",function(i,r,o){function a(){c||(c=!0,s.parentNode.removeChild(s),u.focus())}n(this,null);var s=e(this,i,o&&o.bottom),l=s.getElementsByTagName("button"),c=!1,u=this,h=1;l[0].focus();for(var d=0;d<l.length;++d){var f=l[d];!function(e){t.on(f,"click",function(n){t.e_preventDefault(n),a(),e&&e(u)})}(r[d]),t.on(f,"blur",function(){--h,setTimeout(function(){h<=0&&a()},200)}),t.on(f,"focus",function(){++h})}}),t.defineExtension("openNotification",function(i,r){function o(){l||(l=!0,clearTimeout(a),s.parentNode.removeChild(s))}n(this,o);var a,s=e(this,i,r&&r.bottom),l=!1,c=r&&"undefined"!=typeof r.duration?r.duration:5e3;return t.on(s,"click",function(e){t.e_preventDefault(e),o()}),c&&(a=setTimeout(o,c)),o})}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror"),require("./searchcursor"),require("../dialog/dialog")):"function"==typeof define&&define.amd?define("cm/addon/search/search",["../../lib/codemirror","./searchcursor","../dialog/dialog"],t):t(CodeMirror)}(function(t){"use strict";function e(t,e){return"string"==typeof t?t=new RegExp(t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),e?"gi":"g"):t.global||(t=new RegExp(t.source,t.ignoreCase?"gi":"g")),{token:function(e){t.lastIndex=e.pos;var n=t.exec(e.string);return n&&n.index==e.pos?(e.pos+=n[0].length||1,"searching"):void(n?e.pos=n.index:e.skipToEnd())}}}function n(){this.posFrom=this.posTo=this.lastQuery=this.query=null,this.overlay=null}function i(t){return t.state.search||(t.state.search=new n)}function r(t){return"string"==typeof t&&t==t.toLowerCase()}function o(t,e,n){return t.getSearchCursor(e,n,r(e))}function a(t,e,n,i,r){t.openDialog(e,i,{value:n,selectValueOnOpen:!0,closeOnEnter:!1,onClose:function(){p(t)},onKeyDown:r})}function s(t,e,n,i,r){t.openDialog?t.openDialog(e,r,{value:i,selectValueOnOpen:!0}):r(prompt(n,i))}function l(t,e,n,i){t.openConfirm?t.openConfirm(e,i):confirm(n)&&i[0]()}function c(t){return t.replace(/\\(.)/g,function(t,e){return"n"==e?"\n":"r"==e?"\r":e})}function u(t){var e=t.match(/^\/(.*)\/([a-z]*)$/);if(e)try{t=new RegExp(e[1],e[2].indexOf("i")==-1?"":"i")}catch(t){}else t=c(t);return("string"==typeof t?""==t:t.test(""))&&(t=/x^/),t}function h(t,n,i){n.queryText=i,n.query=u(i),t.removeOverlay(n.overlay,r(n.query)),n.overlay=e(n.query,r(n.query)),t.addOverlay(n.overlay),t.showMatchesOnScrollbar&&(n.annotate&&(n.annotate.clear(),n.annotate=null),n.annotate=t.showMatchesOnScrollbar(n.query,r(n.query)))}function d(e,n,r,o){var l=i(e);if(l.query)return f(e,n);var c=e.getSelection()||l.lastQuery;if(r&&e.openDialog){var u=null,d=function(n,i){t.e_stop(i),n&&(n!=l.queryText&&(h(e,l,n),l.posFrom=l.posTo=e.getCursor()),u&&(u.style.opacity=1),f(e,i.shiftKey,function(t,n){var i;n.line<3&&document.querySelector&&(i=e.display.wrapper.querySelector(".CodeMirror-dialog"))&&i.getBoundingClientRect().bottom-4>e.cursorCoords(n,"window").top&&((u=i).style.opacity=.4)}))};a(e,v,c,d,function(n,r){var o=t.keyName(n),a=t.keyMap[e.getOption("keyMap")][o];a||(a=e.getOption("extraKeys")[o]),"findNext"==a||"findPrev"==a||"findPersistentNext"==a||"findPersistentPrev"==a?(t.e_stop(n),h(e,i(e),r),e.execCommand(a)):"find"!=a&&"findPersistent"!=a||(t.e_stop(n),d(r,n))}),o&&c&&(h(e,l,c),f(e,n))}else s(e,v,"Search for:",c,function(t){t&&!l.query&&e.operation(function(){h(e,l,t),l.posFrom=l.posTo=e.getCursor(),f(e,n)})})}function f(e,n,r){e.operation(function(){var a=i(e),s=o(e,a.query,n?a.posFrom:a.posTo);(s.find(n)||(s=o(e,a.query,n?t.Pos(e.lastLine()):t.Pos(e.firstLine(),0)),s.find(n)))&&(e.setSelection(s.from(),s.to()),e.scrollIntoView({from:s.from(),to:s.to()},20),a.posFrom=s.from(),a.posTo=s.to(),r&&r(s.from(),s.to()))})}function p(t){t.operation(function(){var e=i(t);e.lastQuery=e.query,e.query&&(e.query=e.queryText=null,t.removeOverlay(e.overlay),e.annotate&&(e.annotate.clear(),e.annotate=null))})}function g(t,e,n){t.operation(function(){for(var i=o(t,e);i.findNext();)if("string"!=typeof e){var r=t.getRange(i.from(),i.to()).match(e);i.replace(n.replace(/\$(\d)/g,function(t,e){return r[e]}))}else i.replace(n)})}function m(t,e){if(!t.getOption("readOnly")){var n=t.getSelection()||i(t).lastQuery,r='<span class="CodeMirror-search-label">'+(e?"Replace all:":"Replace:")+"</span>";s(t,r+y,r,n,function(n){n&&(n=u(n),s(t,x,"Replace with:","",function(i){if(i=c(i),e)g(t,n,i);else{p(t);var r=o(t,n,t.getCursor("from")),a=function(){var e,c=r.from();!(e=r.findNext())&&(r=o(t,n),!(e=r.findNext())||c&&r.from().line==c.line&&r.from().ch==c.ch)||(t.setSelection(r.from(),r.to()),t.scrollIntoView({from:r.from(),to:r.to()}),l(t,b,"Replace?",[function(){s(e)},a,function(){g(t,n,i)}]))},s=function(t){r.replace("string"==typeof n?i:i.replace(/\$(\d)/g,function(e,n){return t[n]})),a()};a()}}))})}}var v='<span class="CodeMirror-search-label">Search:</span> <input type="text" style="width: 10em" class="CodeMirror-search-field"/> <span style="color: #888" class="CodeMirror-search-hint">(Use /re/ syntax for regexp search)</span>',y=' <input type="text" style="width: 10em" class="CodeMirror-search-field"/> <span style="color: #888" class="CodeMirror-search-hint">(Use /re/ syntax for regexp search)</span>',x='<span class="CodeMirror-search-label">With:</span> <input type="text" style="width: 10em" class="CodeMirror-search-field"/>',b='<span class="CodeMirror-search-label">Replace?</span> <button>Yes</button> <button>No</button> <button>All</button> <button>Stop</button>';t.commands.find=function(t){p(t),d(t)},t.commands.findPersistent=function(t){p(t),d(t,!1,!0)},t.commands.findPersistentNext=function(t){d(t,!1,!0,!0)},t.commands.findPersistentPrev=function(t){d(t,!0,!0,!0)},t.commands.findNext=d,t.commands.findPrev=function(t){d(t,!0)},t.commands.clearSearch=p,t.commands.replace=m,t.commands.replaceAll=function(t){m(t,!0)}}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror"),require("../dialog/dialog")):"function"==typeof define&&define.amd?define("cm/addon/search/jump-to-line",["../../lib/codemirror","../dialog/dialog"],t):t(CodeMirror)}(function(t){"use strict";function e(t,e,n,i,r){t.openDialog?t.openDialog(e,r,{value:i,selectValueOnOpen:!0}):r(prompt(n,i))}function n(t,e){var n=Number(e);return/^[-+]/.test(e)?t.getCursor().line+n:n-1}var i='Jump to line: <input type="text" style="width: 10em" class="CodeMirror-search-field"/> <span style="color: #888" class="CodeMirror-search-hint">(Use line:column or scroll% syntax)</span>';t.commands.jumpToLine=function(t){var r=t.getCursor();e(t,i,"Jump to line:",r.line+1+":"+r.ch,function(e){if(e){var i;if(i=/^\s*([\+\-]?\d+)\s*\:\s*(\d+)\s*$/.exec(e))t.setCursor(n(t,i[1]),Number(i[2]));else if(i=/^\s*([\+\-]?\d+(\.\d+)?)\%\s*/.exec(e)){var o=Math.round(t.lineCount()*Number(i[1])/100);/^[-+]/.test(i[1])&&(o=r.line+o+1),t.setCursor(o-1,r.ch)}else(i=/^\s*\:?\s*([\+\-]?\d+)\s*/.exec(e))&&t.setCursor(n(t,i[1]),r.ch)}})},t.keyMap.default["Alt-G"]="jumpToLine"}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/addon/hover/text-hover",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";!function(){function e(e,n){function i(e){return r.parentNode?(r.style.top=Math.max(0,e.clientY-r.offsetHeight-5)+"px",void(r.style.left=e.clientX+5+"px")):t.off(document,"mousemove",i)}var r=document.createElement("div");return r.className="CodeMirror-hover-tooltip","string"==typeof n&&(n=document.createTextNode(n)),r.appendChild(n),document.body.appendChild(r),t.on(document,"mousemove",i),i(e),null!=r.style.opacity&&(r.style.opacity=1),r}function n(t){t.parentNode&&t.parentNode.removeChild(t)}function i(t){t.parentNode&&(null==t.style.opacity&&n(t),t.style.opacity=0,setTimeout(function(){n(t)},600))}function r(n,r,o,a,s){function l(){t.off(o,"mouseout",l),t.off(o,"click",l),o.className=o.className.replace(h,""),c&&(i(c),c=null),s.removeKeyMap(a.keyMap)}var c=e(n,r),u=setInterval(function(){if(c)for(var t=o;;t=t.parentNode){if(t==document.body)return;if(!t){l();break}}if(!c)return clearInterval(u)},400);t.on(o,"mouseout",l),t.on(o,"click",l),a.keyMap={Esc:l},s.addKeyMap(a.keyMap)}function o(t,e){this.options=e,this.timeout=null,e.delay?this.onMouseOver=function(e){s(t,e)}:this.onMouseOver=function(e){l(t,e)},this.keyMap=null}function a(e,n){if(n instanceof Function)return{getTextHover:n};if(n&&n!==!0||(n={}),n.getTextHover||(n.getTextHover=e.getHelper(t.Pos(0,0),"textHover")),!n.getTextHover)throw new Error("Required option 'getTextHover' missing (text-hover addon)");return n}function s(t,e){var n=t.state.textHover,i=n.options.delay;if(clearTimeout(n.timeout),e.srcElement){var r={srcElement:e.srcElement,clientX:e.clientX,clientY:e.clientY};e=r}n.timeout=setTimeout(function(){l(t,e)},i)}function l(t,e){var n=e.target||e.srcElement;if(n){var i=t.state.textHover,o=u(t,e),a=i.options.getTextHover(t,o,e);a&&(n.className+=h,"function"==typeof a?a(r,o,e,n,i,t):r(e,a,n,i,t))}}function c(e,n,i){if(i&&i!=t.Init&&(t.off(e.getWrapperElement(),"mouseover",e.state.textHover.onMouseOver),delete e.state.textHover),n){var r=e.state.textHover=new o(e,a(e,n));t.on(e.getWrapperElement(),"mouseover",r.onMouseOver)}}function u(t,e){for(var n=e.target||e.srcElement,i=n.innerText||n.textContent,r=0;r<d.length;r+=2){var o=t.coordsChar({left:e.clientX+d[r],top:e.clientY+d[r+1]}),a=t.getTokenAt(o);if(a&&a.string===i)return{token:a,pos:o}}}var h=" CodeMirror-hover",d=[0,0,0,5,0,-5,5,0,-5,0];t.defineOption("textHover",!1,c)}()}),define("cm/addon/hover/prolog-hover",["../../lib/codemirror","jquery","laconic"],function(t,e){"use strict";function n(t){return e.el.span({class:"pred-name"},t.text+"/"+t.arity)}function i(t,e,n){s[n]=e}function r(t,e){var n;return s[t.file]?s[t.file]:(n=t.file.lastIndexOf("/"))?t.file.substring(n+1):t.file}function o(t,n,i){return n&&n.file?e.el.div(a(t)+" included from ",e.el.span({class:"file-path"},n.file)):n&&n.line?a(t)+" defined in line "+n.line:"Locally defined "+t}function a(t){return t[0].toUpperCase()+t.slice(1)}var s={},l={goal_built_in:function(t,i){return t?e.el.div(n(t),i.tokenInfo(t)):"Built-in predicate"},goal_global:function(t,i){return t?e.el.div(n(t),i.tokenInfo(t)):"Global predicate"},goal_autoload:function(t,i){return t?e.el.div(n(t)," (autoload from ",r(t,i),"): ",i.tokenInfo(t)):"Autoloaded predicate"},goal_imported:function(t,i){return t?e.el.div(n(t)," (imported from ",r(t,i),"): ",i.tokenInfo(t)):"Imported predicate"},goal_recursion:"Recursive call",goal_dynamic:"Dynamic predicate",goal_undefined:"Undefined predicate",goal_local:function(t,e){return o("predicate",t,e)},goal_constraint:function(t,e){return o("CHR constraint",t,e)},head_unreferenced:"Predicate is not called",unused_import:"Imported predicate is not used",undefined_import:"Imported predicate is not defined",head_constraint:"CHR constraint",file:function(t,n){return t?(i(n,t.text,t.path),e.el.div("File: ",e.el.span({class:"file-path"},t.path))):"File name"},file_no_depends:function(t,n){return t?(i(n,t.text,t.path),e.el.div("File: ",e.el.span({class:"file-path"},t.path),e.el.div({class:"hover-remark"},"does not resolve any dependencies"))):"File name (does not resolve any dependencies)"},error:function(t,n){return t&&t.expected?e.el.div("error: ",e.el.strong(t.expected)," expected"):"error"},singleton:"Variable appearing only once",codes:"List of Unicode code points (integers)",chars:"List of one-character atoms",string:"Packed string (SWI7, use `text` for a list of codes)",qatom:"Quoted atom",uatom:"Uppercase atom due to var_prefix flag",tag:"Tag of a SWI7 dict",ext_quant:"Existential quantification operator",instantiation_error:"No variable allowed here",string_terminal:"Terminal (DCG)",head:null,control:null,fullstop:null,var:null,int:null,float:null,number:null,atom:null,functor:null,comment:null,neck:null,operator:null,sep:null,list_open:null,list_close:null,dict_open:null,dict_close:null};t.registerHelper("textHover","prolog",function(t,n,i){if(n){var r,o=n.token,a=l[o.type];if(void 0===a)return(r=t.getEnrichedToken(o))?r.summary&&"ask"===r.info?e.el.div(r.summary,t.tokenInfo(r)):r.summary?e.el.div(r.summary):e.el.div(o.type):e.el.div(o.type);if("function"==typeof a){var s=a(t.getEnrichedToken(o),t);return"string"==typeof s?e.el.div(s):s}if("string"==typeof a)return e.el.div(a)}return null})}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/addon/hint/show-context-info",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){var e=null;t.attachContextInfo=function(n){t.on(n,"select",function(t,n){n=n.parentNode;var i=null;if(t.info&&(i=t.info(t)),
-i){var r=n.getBoundingClientRect();null==e&&(e=document.createElement("div"),e.className="CodeMirror-hints-contextInfo",document.body.appendChild(e)),e.innerHTML="",e.style.top=n.style.top,e.style.left=r.right+"px","string"==typeof i?e.innerHTML=i:e.appendChild(i),e.style.display="block"}else null!=e&&(e.innerHTML="",e.style.display="none")}),t.on(n,"close",function(){null!=e&&e.parentNode.removeChild(e),e=null})},t.showContextInfo=function(e){return function(n,i,r){r||(r=i);var o=e(n,r);return t.attachContextInfo(o),o}}}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/keymap/emacs",["../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";function e(t,e){return t.line==e.line&&t.ch==e.ch}function n(t){R.push(t),R.length>50&&R.shift()}function i(t){return R.length?void(R[R.length-1]+=t):n(t)}function r(t){return R[R.length-(t?Math.min(t,1):1)]||""}function o(){return R.length>1&&R.pop(),r()}function a(t,r,o,a,s){null==s&&(s=t.getRange(r,o)),a&&D&&D.cm==t&&e(r,D.pos)&&t.isClean(D.gen)?i(s):n(s),t.replaceRange("",r,o,"+delete"),D=a?{cm:t,pos:r,gen:t.changeGeneration()}:null}function s(t,e,n){return t.findPosH(e,n,"char",!0)}function l(t,e,n){return t.findPosH(e,n,"word",!0)}function c(t,e,n){return t.findPosV(e,n,"line",t.doc.sel.goalColumn)}function u(t,e,n){return t.findPosV(e,n,"page",t.doc.sel.goalColumn)}function h(t,e,n){for(var i=e.line,r=t.getLine(i),o=/\S/.test(n<0?r.slice(0,e.ch):r.slice(e.ch)),a=t.firstLine(),s=t.lastLine();;){if(i+=n,i<a||i>s)return t.clipPos(O(i-n,n<0?0:null));r=t.getLine(i);var l=/\S/.test(r);if(l)o=!0;else if(o)return O(i,0)}}function d(t,e,n){for(var i=e.line,r=e.ch,o=t.getLine(e.line),a=!1;;){var s=o.charAt(r+(n<0?-1:0));if(s){if(a&&/[!?.]/.test(s))return O(i,r+(n>0?1:0));a||(a=/\w/.test(s)),r+=n}else{if(i==(n<0?t.firstLine():t.lastLine()))return O(i,r);if(o=t.getLine(i+n),!/\S/.test(o))return O(i,r);i+=n,r=n<0?o.length:0}}}function f(t,n,i){var r;if(t.findMatchingBracket&&(r=t.findMatchingBracket(n,!0))&&r.match&&(r.forward?1:-1)==i)return i>0?O(r.to.line,r.to.ch+1):r.to;for(var o=!0;;o=!1){var a=t.getTokenAt(n),s=O(n.line,i<0?a.start:a.end);if(!(o&&i>0&&a.end==n.ch)&&/\w/.test(a.string))return s;var l=t.findPosH(s,i,"char");if(e(s,l))return n;n=l}}function p(t,e){var n=t.state.emacsPrefix;return n?(w(t),"-"==n?-1:Number(n)):e?null:1}function g(t){var e="string"==typeof t?function(e){e.execCommand(t)}:t;return function(t){var n=p(t);e(t);for(var i=1;i<n;++i)e(t)}}function m(t,n,i,r){var o=p(t);o<0&&(r=-r,o=-o);for(var a=0;a<o;++a){var s=i(t,n,r);if(e(s,n))break;n=s}return n}function v(t,e){var n=function(n){n.extendSelection(m(n,n.getCursor(),t,e))};return n.motion=!0,n}function y(t,e,n){for(var i,r=t.listSelections(),o=r.length;o--;)i=r[o].head,a(t,i,m(t,i,e,n),!0)}function x(t){if(t.somethingSelected()){for(var e,n=t.listSelections(),i=n.length;i--;)e=n[i],a(t,e.anchor,e.head);return!0}}function b(t,e){return t.state.emacsPrefix?void("-"!=e&&(t.state.emacsPrefix+=e)):(t.state.emacsPrefix=e,t.on("keyHandled",_),void t.on("inputRead",S))}function _(t,e){t.state.emacsPrefixMap||I.hasOwnProperty(e)||w(t)}function w(t){t.state.emacsPrefix=null,t.off("keyHandled",_),t.off("inputRead",S)}function S(t,e){var n=p(t);if(n>1&&"+input"==e.origin){for(var i=e.text.join("\n"),r="",o=1;o<n;++o)r+=i;t.replaceSelection(r)}}function C(t){t.state.emacsPrefixMap=!0,t.addKeyMap(H),t.on("keyHandled",T),t.on("inputRead",T)}function T(t,e){("string"!=typeof e||!/^\d$/.test(e)&&"Ctrl-U"!=e)&&(t.removeKeyMap(H),t.state.emacsPrefixMap=!1,t.off("keyHandled",T),t.off("inputRead",T))}function k(t){t.setCursor(t.getCursor()),t.setExtending(!t.getExtending()),t.on("change",function(){t.setExtending(!1)})}function A(t){t.setExtending(!1),t.setCursor(t.getCursor())}function M(t,e,n){t.openDialog?t.openDialog(e+': <input type="text" style="width: 10em"/>',n,{bottom:!0}):n(prompt(e,""))}function L(t,e){var n=t.getCursor(),i=t.findPosH(n,1,"word");t.replaceRange(e(t.getRange(n,i)),n,i),t.setCursor(i)}function E(t){for(var e=t.getCursor(),n=e.line,i=e.ch,r=[];n>=t.firstLine();){for(var o=t.getLine(n),a=null==i?o.length:i;a>0;){var i=o.charAt(--a);if(")"==i)r.push("(");else if("]"==i)r.push("[");else if("}"==i)r.push("{");else if(/[\(\{\[]/.test(i)&&(!r.length||r.pop()!=i))return t.extendSelection(O(n,a))}--n,i=null}}function P(t){t.execCommand("clearSearch"),A(t)}function N(t){H[t]=function(e){b(e,t)},j["Ctrl-"+t]=function(e){b(e,t)},I["Ctrl-"+t]=!0}var O=t.Pos,R=[],D=null,I={"Alt-G":!0,"Ctrl-X":!0,"Ctrl-Q":!0,"Ctrl-U":!0};t.emacs={kill:a,killRegion:x,repeated:g};for(var j=t.keyMap.emacs=t.normalizeKeyMap({"Ctrl-W":function(t){a(t,t.getCursor("start"),t.getCursor("end"))},"Ctrl-K":g(function(t){var e=t.getCursor(),n=t.clipPos(O(e.line)),i=t.getRange(e,n);/\S/.test(i)||(i+="\n",n=O(e.line+1,0)),a(t,e,n,!0,i)}),"Alt-W":function(t){n(t.getSelection()),A(t)},"Ctrl-Y":function(t){var e=t.getCursor();t.replaceRange(r(p(t)),e,e,"paste"),t.setSelection(e,t.getCursor())},"Alt-Y":function(t){t.replaceSelection(o(),"around","paste")},"Ctrl-Space":k,"Ctrl-Shift-2":k,"Ctrl-F":v(s,1),"Ctrl-B":v(s,-1),Right:v(s,1),Left:v(s,-1),"Ctrl-D":function(t){y(t,s,1)},Delete:function(t){x(t)||y(t,s,1)},"Ctrl-H":function(t){y(t,s,-1)},Backspace:function(t){x(t)||y(t,s,-1)},"Alt-F":v(l,1),"Alt-B":v(l,-1),"Alt-D":function(t){y(t,l,1)},"Alt-Backspace":function(t){y(t,l,-1)},"Ctrl-N":v(c,1),"Ctrl-P":v(c,-1),Down:v(c,1),Up:v(c,-1),"Ctrl-A":"goLineStart","Ctrl-E":"goLineEnd",End:"goLineEnd",Home:"goLineStart","Alt-V":v(u,-1),"Ctrl-V":v(u,1),PageUp:v(u,-1),PageDown:v(u,1),"Ctrl-Up":v(h,-1),"Ctrl-Down":v(h,1),"Alt-A":v(d,-1),"Alt-E":v(d,1),"Alt-K":function(t){y(t,d,1)},"Ctrl-Alt-K":function(t){y(t,f,1)},"Ctrl-Alt-Backspace":function(t){y(t,f,-1)},"Ctrl-Alt-F":v(f,1),"Ctrl-Alt-B":v(f,-1),"Shift-Ctrl-Alt-2":function(t){var e=t.getCursor();t.setSelection(m(t,e,f,1),e)},"Ctrl-Alt-T":function(t){var e=f(t,t.getCursor(),-1),n=f(t,e,1),i=f(t,n,1),r=f(t,i,-1);t.replaceRange(t.getRange(r,i)+t.getRange(n,r)+t.getRange(e,n),e,i)},"Ctrl-Alt-U":g(E),"Alt-Space":function(t){for(var e=t.getCursor(),n=e.ch,i=e.ch,r=t.getLine(e.line);n&&/\s/.test(r.charAt(n-1));)--n;for(;i<r.length&&/\s/.test(r.charAt(i));)++i;t.replaceRange(" ",O(e.line,n),O(e.line,i))},"Ctrl-O":g(function(t){t.replaceSelection("\n","start")}),"Ctrl-T":g(function(t){t.execCommand("transposeChars")}),"Alt-C":g(function(t){L(t,function(t){var e=t.search(/\w/);return e==-1?t:t.slice(0,e)+t.charAt(e).toUpperCase()+t.slice(e+1).toLowerCase()})}),"Alt-U":g(function(t){L(t,function(t){return t.toUpperCase()})}),"Alt-L":g(function(t){L(t,function(t){return t.toLowerCase()})}),"Alt-;":"toggleComment","Ctrl-/":g("undo"),"Shift-Ctrl--":g("undo"),"Ctrl-Z":g("undo"),"Cmd-Z":g("undo"),"Shift-Alt-,":"goDocStart","Shift-Alt-.":"goDocEnd","Ctrl-S":"findNext","Ctrl-R":"findPrev","Ctrl-G":P,"Shift-Alt-5":"replace","Alt-/":"autocomplete",Enter:"newlineAndIndent","Ctrl-J":g(function(t){t.replaceSelection("\n","end")}),Tab:"indentAuto","Alt-G G":function(t){var e=p(t,!0);return null!=e&&e>0?t.setCursor(e-1):void M(t,"Goto line",function(e){var n;e&&!isNaN(n=Number(e))&&n==(0|n)&&n>0&&t.setCursor(n-1)})},"Ctrl-X Tab":function(t){t.indentSelection(p(t,!0)||t.getOption("indentUnit"))},"Ctrl-X Ctrl-X":function(t){t.setSelection(t.getCursor("head"),t.getCursor("anchor"))},"Ctrl-X Ctrl-S":"save","Ctrl-X Ctrl-W":"save","Ctrl-X S":"saveAll","Ctrl-X F":"open","Ctrl-X U":g("undo"),"Ctrl-X K":"close","Ctrl-X Delete":function(t){a(t,t.getCursor(),d(t,t.getCursor(),1),!0)},"Ctrl-X H":"selectAll","Ctrl-Q Tab":g("insertTab"),"Ctrl-U":C}),H={"Ctrl-G":w},V=0;V<10;++V)N(String(V));N("-")}),define("editor",["cm/lib/codemirror","config","preferences","form","cm/mode/prolog/prolog-template-hint","modal","tabbed","prolog","storage","cm/mode/prolog/prolog","cm/mode/prolog/prolog_keys","cm/mode/prolog/prolog_query","cm/mode/prolog/prolog_server","cm/mode/markdown/markdown","cm/addon/edit/matchbrackets","cm/addon/comment/continuecomment","cm/addon/comment/comment","cm/addon/hint/show-hint","cm/addon/hint/anyword-hint","cm/addon/display/placeholder","cm/addon/runmode/runmode","cm/addon/search/search","cm/addon/search/searchcursor","cm/addon/search/jump-to-line","cm/addon/dialog/dialog","cm/addon/hover/text-hover","cm/addon/hover/prolog-hover","cm/addon/hint/templates-hint","cm/addon/hint/show-context-info","jquery","laconic","cm/keymap/emacs"],function(t,e,n,i,r,o,a,s){function l(t,e){var n=[];e=e||"",n.push("<style>\n");for(var i in t)if(t.hasOwnProperty(i)){var r=t[i];n.push(e,i,"{");for(var o in r)r.hasOwnProperty(o)&&n.push(o,":",r[o],";");n.push("}\n")}n.push("</style>\n"),$("body").append(n.join(""))}!function(i){var l,c="prologEditor",u={prolog:{mode:"prolog",role:"source",placeholder:"Your Prolog rules and facts go here ...",lineNumbers:!0,autoCurrent:!0,save:!1,theme:"prolog",matchBrackets:!0,textHover:!0,prologKeys:!0,extraKeys:{"Ctrl-Space":"autocomplete","Alt-/":"autocomplete"},hintOptions:{hint:r.getHints,completeSingle:!1}},markdown:{mode:"markdown",placeholder:"Your markdown block goes here ...",lineWrapping:!0,save:!1}},h={query:{mode:"prolog",role:"query",placeholder:"Your query goes here ...",lineNumbers:!1,lineWrapping:!0,save:!1}},d={_init:function(r){return this.each(function(){function o(t){var e=p.long_click,n=t.clientX-e.clientX,i=t.clientY-e.clientY;Math.sqrt(n*n+i*i)>5&&a()}function a(){d.off("mousemove",o);var t=p.long_click;t.timeout&&(clearTimeout(t.timeout),t.target=void 0,t.timeout=void 0)}function s(t){var e=i(l).data(t);e&&(f[t]=e)}var l,d=i(this),f={},p={};r=r||{},r.mode=r.mode||"prolog";var g=i.extend({},u[r.mode]);r.role&&h[r.role]&&(g=i.extend(g,h[r.role])),g=i.extend(g,r),n.getVal("emacs-keybinding")&&(g.keyMap="emacs"),"prolog"==g.mode&&(p.role=g.role,g.getSource&&(p.getSource=g.getSource),e.http.locations.cm_highlight&&(g.prologHighlightServer={url:e.http.locations.cm_highlight,role:g.role,enabled:n.getVal("semantic-highlighting")},g.sourceID&&(g.prologHighlightServer.sourceID=g.sourceID),g.extraKeys["Ctrl-R"]="refreshHighlight"),"source"==g.role&&(g.continueComments="Enter",g.gutters=["Prolog-breakpoints"]),p.long_click={},d.on("mousedown",".CodeMirror-code",function(t){var e=p.long_click;e.clientX=t.clientX,e.clientY=t.clientY,d.on("mousemove",o),p.long_click.timeout=setTimeout(function(){a(),d.prologEditor("contextAction")},500)}),d.on("mouseup",function(t){a()})),(l=d.children("textarea")[0])?(s("file"),s("url"),s("title"),s("meta"),s("st_type"),s("chats"),p.cm=t.fromTextArea(l,g)):(g.value||(g.value=d.text()),p.cm=t(d[0],g)),d.data(c,p),d.prologEditor("loadMode",g.mode),d.addClass("swish-event-receiver"),d.addClass("prolog-editor"),d.on("preference",function(t,e){d.prologEditor("preference",e)}),d.on("print",function(){"query"!=p.role&&d.prologEditor("print")}),d.on("clearMessages",function(t){d.prologEditor("clearMessages")}),d.on("edit-command",function(t,e){d.prologEditor("execCommand",e)}),p.cm.on("blur",function(t){d.prologEditor("execCommand","prepare")}),g.save&&(f.typeName=g.typeName||"program",d.prologEditor("setupStorage",f)),"prolog"==g.mode&&"source"==p.role&&(d.on("activate-tab",function(t){g.autoCurrent&&d.prologEditor("makeCurrent"),p.cm.refresh()}),d.on("source-error",function(t,e){d.prologEditor("highlightError",e)}),d.on("pengine-died",function(t,e){if(p.pengines){var n=p.pengines.indexOf(e);n>=0&&p.pengines.splice(n,1)}p.traceMark&&p.traceMark.pengine==e&&(p.traceMark.clear(),p.traceMark=null)}),d.on("addExample",function(t,e){d.prologEditor("addExample",e)}),p.cm.on("gutterClick",function(t,e){function n(){return i('<span class="breakpoint-marker">&#9679;</span>')[0]}var r=t.lineInfo(e);r.gutterMarkers?t.setGutterMarker(e,"Prolog-breakpoints",null):t.setGutterMarker(e,"Prolog-breakpoints",n())})),p.cm.on("change",function(t,e){var n;if("setValue"==e.origin)n=!0;else{var i=d.data("storage"),r=i?i.cleanGeneration:p.cleanGeneration;n=p.cm.isClean(r)}d.prologEditor("markClean",n)})})},getOption:function(t){return this.data(c)[t]},setKeybinding:function(t){t=t||"default",this.data(c).cm.options.keyMap=t},loadMode:function(e){var n=this.data(c);return t.modes[e]?e!=n.mode&&n.cm.setOption("mode",e):require(["cm/mode/"+e+"/"+e],function(){n.cm.setOption("mode",e)}),this},isPengineSource:function(){var t=i(this).data(c);if(t&&"source"==t.role){var e=i(this).data("storage");if(e&&e.meta&&(e.meta.loaded||e.meta.module))return!1}return this},getBreakpoints:function(t){var e=[];return this.each(function(){for(var n=i(this).data(c),r=[],o=0,a=n.cm,s=a.firstLine(),l=a.lastLine();s<l;s++){var u=a.lineInfo(s);u.gutterMarkers&&r.push(o+s+1)}if(r.length>0){var h;if(n.pengines&&n.pengines.indexOf(t)>=0)h="pengine://"+t+"/src";else{var d=i(this).data("storage");d&&(h="swish://"+d.file)}h&&e.push({file:h,breakpoints:r})}}),e},getSource:function(t,e){var n=[];return this.each(function(){if(i(this).prologEditor("isPengineSource")){var r=i(this).data(c);if(r&&(!t||t==r.role)){var o;o="function"!=typeof r.getSource||e?r.cm.getValue():r.getSource(),n.push(o)}}}),n.join("\n\n")},getSourceEx:function(){var t={value:this.data(c).cm.getValue()},e=this.prologEditor("getBreakpoints");return e.length>0&&(t.breakpoints=e),t},docid:function(){var t;return this.hasClass("storage")?this.storage("docid"):(t=this.closest(".storage"))&&t.length>0&&(stdoc=t.storage("docid"),stdoc)?stdoc+"#"+this.closest(".nb-cell").attr("name"):void 0},getSourceID:function(){var t=[];return this.each(function(){var e=i(this).data(c);e&&e.cm&&e.cm.state.prologHighlightServer?t.push(e.cm.state.prologHighlightServer.uuid):t.push(null)}),t},setSource:function(t,e){if("string"==typeof t&&(t={data:t}),this.data("storage")&&1!=e)this.storage("setSource",t);else{var n=this.data(c);n.cm.setValue(t.data),(t.line||t.prompt)&&(n.cm.refresh(),t.line?this.prologEditor("gotoLine",t.line,t):this.prologEditor("showTracePort",t.prompt)),"source"==n.role&&i(".swish-event-receiver").trigger("program-loaded",this)}return this},makeCurrent:function(){return i(".swish-event-receiver").trigger("current-program",this),this},markClean:function(t){var e=this.data(c);e.clean_signalled!=t&&(e.clean_signalled=t,this.trigger("data-is-clean",t))},setIsClean:function(){return this.each(function(){var t=i(this),e=t.data(c);e.cleanGeneration=e.cm.changeGeneration()})},pengine:function(t){var e=this.data(c);if(e){if(t.add)return e.pengines=e.pengines||[],e.pengines.indexOf(t.add)<0&&e.pengines.push(t.add),this;if(t.has)return e.pengines&&e.pengines.indexOf(t.has)>=0}},print:function(n){function r(t){var e=i.el.iframe({src:"about:blank"});i("body").append(e),i("body",e.contentWindow.document).append(t),e.contentWindow.print()}var a=i.el.pre({class:"cm-s-prolog"});return n||(n=this.prologEditor("getSource")),t.runMode(n,"prolog",a),i.ajax({url:e.http.locations.swish+"js/codemirror/theme/prolog.css",dataType:"text",success:function(t){r(i.el.div(i.el.style(t),a))},error:function(t){o.ajaxError(t)}}),this},preference:function(t){var e=this.data(c);return"semantic-highlighting"==t.name&&e.cm.setOption("prologHighlightServer",{enabled:t.value}),"emacs-keybinding"==t.name&&(1==t.value?e.cm.setOption("keyMap","emacs"):e.cm.setOption("keyMap","default")),this},highlightError:function(t){if(t.location.file&&(1==t.location.file||this.prologEditor("isMyFile",t.location.file))){var e,n=this.data(c);t.location.ch&&(left=n.cm.charCoords({line:t.location.line-1,ch:t.location.ch-1},"local").left,e=i.el.div({class:"source-msg-charmark"},i.el.span({class:"glyphicon glyphicon-chevron-up"})),i(e).css("padding-left",left+"px"));var r=i.el.div({class:"source-msg error error-context",title:"Error message.  Click to remove"},e,i(t.data)[0],i.el.span({class:"glyphicon glyphicon-remove-circle"})),o=n.cm.addLineWidget(t.location.line-1,r);t.error_context&&i(r).data("error_context",t.error_context),i(r).on("click",function(e){t.error_handler&&0==t.error_handler(e)||o.clear()}),i(r).data("cm-widget",o)}return this},refreshHighlight:function(){var t=this.data(c);return t.cm.serverAssistedHighlight(!0),this},refresh:function(){var t=this.data(c);return t&&t.cm.refresh(),this},clearMessages:function(){return this.find(".source-msg").each(function(){i(this).data("cm-widget").clear()}),this.prologEditor("showTracePort",null),this},execCommand:function(t){if("prepare"==t)l=this[0];else if(l==this[0]){elem=i(l);var e=elem.data(c);e.cm.execCommand(t),elem.find(".Codemirror-dialog input").focus()}return this},isMyFile:function(t){var e="swish://";if(t.startsWith("pengine://")){var n=this.data(c);if(n.pengines&&(id=t.split("/")[2])&&n.pengines.indexOf(id)>=0)return!0}if(t.startsWith(e)){var i=this.data("storage");if(i&&t.slice(e.length)==i.file)return!0}return!1},showTracePort:function(t){if(0==this.length)return this;var e=this.data(c);if(e.traceMark&&(e.traceMark.clear(),e.traceMark=null),!(t&&t.source&&t.source.file))return this;var n=t.source.file;if(this.prologEditor("isMyFile",n)){if(t.source.from&&t.source.to){var i=e.cm.charOffsetToPos(t.source.from),r=e.cm.charOffsetToPos(t.source.to);this.is(":visible")||this.storage("expose","trace"),i&&r&&(e.traceMark=e.cm.markText(i,r,{className:"trace "+t.port}),e.traceMark.pengine=t.pengine,e.cm.scrollIntoView(i,50))}return this}},getSelection:function(){var t=[];return this.each(function(){function e(t,e){return t.line<e.line?-1:t.line>e.line?1:t.ch<e.ch?-1:t.ch>e.ch?1:0}function n(t){return{line:t.line,ch:0}}function r(t){return{line:t.line,ch:s.cm.getLine(t.line).length}}function o(t){return{line:t.line,ch:t.ch}}var a=i(this),s=a.data(c);if(1==s.cm.somethingSelected()){var l=s.cm.listSelections(),u={selections:[]},h=a.closest(".nb-cell").attr("name");h&&(u.cell=h);for(var d=0;d<l.length;d++){var f=l[d],p={};e(f.anchor,f.head)?(p.from=o(f.anchor),p.to=o(f.head)):(p.to=o(f.anchor),p.from=o(f.head)),p.string=s.cm.getRange(p.from,p.to),p.context=s.cm.getRange(n(p.from),r(p.to)),u.selections.push(p)}t.push(u)}}),t.length>0?t:null},restoreSelection:function(t){function e(t,e){function n(t){function e(t,e){for(var n=e.split("\n"),i=0;i<n.length;i++)if(r.getLine(t+i)!=n[i])return!1;return!0}function n(t,e){for(var n=e.split("\n"),i=0;i<n.length;i++){var o,a=r.getLine(t),s=n[i];if(0==i){if(i==n.length-1)return a.indexOf(s);if(o=a.indexOf(s),!(o>=0&&s.length+o==a.length))return-1}else if(i==n.length-1){if(0!=a.indexOf(s))return-1}else if(r.getLine(t+i)!=n[i])return-1}return o}function i(t,e,n){return n=n||0,{line:t.line+e,ch:t.ch+n}}if(r.getRange(t.from,t.to)==t.string)return{anchor:t.from,head:t.to};for(var o=r.firstLine(),a=r.lastLine(),s=0,l=1;t.from.line+s>=o&&t.to.line+s<=a;){var c;if(e(t.from.line+s,t.context))return{anchor:i(t.from,s),head:i(t.to,s),offset:s};if((c=n(t.from.line+s,t.string))>=0){var u=c-t.from.ch,h=t.to.line!=t.from.line?0:u;return{anchor:i(t.from,s,u),head:i(t.to,s,h),offset:s}}l++,s=Math.floor(l/2),l%2==1&&(s=-s)}}for(var i=t.data(c),r=i.cm,a=[],s="",l=0;l<e.length;l++){var u=n(e[l]);u&&(a.push(u),u.offset&&(""!=s&&(s+=";"),s+=u.offset))}if(a.length>0&&r.setSelections(a,0),""!=s||a.length<e.length){var h;h=a.length==e.length?"Found selections at offset "+s:""==s?"Could not restore all selections":"Only found some selections at offsets "+s,o.feedback({html:h,owner:t})}}function n(t){for(var e=0;e<r.length;e++)if(i(r[e]).closest(".nb-cell").attr("name")==t)return i(r[e])}if(t[0].cell)for(var r=this,a=0;a<t.length;a++){var s=t[a],l=n(s.cell);l&&e(l,s.selections)}else e(this,t);return this},getExamples:function(t,e){var n,r=t?t:this.prologEditor("getSource"),o=[];if(""==i.trim(r))return null;if(n=0==e?[t]:r.match(/\/\*\* *<?examples>?[\s\S]*?\*\//gim))for(var a=0;a<n.length;a++){var s=n[a].match(/^ *\?-[\s\S]*?[^-#$&*+.\/:<=>?@\\^~]\.\s/gm);if(s)for(var l=0;l<s.length;l++){var c=s[l].replace(/^ *\?-\s*/,"").replace(/\s*$/,"");o.push(c)}}return o},addExample:function(t){var e=this.data(c).cm,n=this.prologEditor("getSource"),i=this.prologEditor("search",/\/\*\* *<?examples>?/gim,{dir:-1,max:1}),r=this.prologEditor("search",/\*\//,{start:i.line,max:1});if(1==i.length&&1==r.length){var a=this.prologEditor("getExamples",n);if(a&&a.indexOf(t)!=-1)return o.alert("Query is already in examples"),this;e.setSelection({line:r[0].line-1,ch:0}),e.replaceSelection("?- "+t+"\n")}else e.setSelection({line:e.lastLine(),ch:0}),e.replaceSelection("/** <examples>\n?- "+t+"\n*/\n");return this},search:function(t,e){var n=this.data(c).cm,i=e.dir||1,r=n.firstLine(),o=n.lastLine(),a=[];if(i==-1){var s=r;r=o,o=s}if(void 0!==e.start&&(r=e.start),i>0&&r>o||i<0&&r<o)return a;o+=i;for(var l=r;l!=o;l+=i){var u=n.getLine(l);if(u.search(t)>=0&&(a.push({line:l+1,text:u}),e.max&&e.max===a.length))return a}return a},gotoLine:function(t,e){function n(t){if(void 0!==t._searchMarkers){for(var e=0;e<t._searchMarkers.length;e++)t._searchMarkers[e].clear();t.off("cursorActivity",n)}t._searchMarkers=[]}function i(t,e){for(var n;n=r.exec(a.getLine(t));)a._searchMarkers.push(a.markText({line:t,ch:n.index},{line:t,ch:n.index+n[0].length},{className:e,clearOnEnter:!0,clearWhenEmpty:!0,title:"Search match"}))}var r,o=this.data(c),a=o.cm,s=0;n(a),e=e||{},r=e.regex,t-=1,r&&(s=a.getLine(t).search(r),s<0&&(s=0)),a.setCursor({line:t,ch:s});var l=a.getScrollInfo().clientHeight,u=a.charCoords({line:t,ch:0},"local");if(a.scrollTo(null,(u.top+u.bottom-l)/2),r){if(i(t,"CodeMirror-search-match"),e.showAllMatches)for(var h=a.getViewport(),d=h.from;d<h.to;d++)d!=t&&i(d,"CodeMirror-search-alt-match");a._searchMarkers.length>0&&a.on("cursorActivity",n)}else a._searchMarkers.push(a.markText({line:t,ch:0},{line:t,ch:a.getLine(t).length},{className:"CodeMirror-search-match",clearOnEnter:!0,clearWhenEmpty:!0,title:"Target line"}));return this},changeGen:function(){return this.data(c).cm.changeGeneration()},isClean:function(t){return this.data(c).cm.isClean(t)},setupStorage:function(t){var e=this.data(c),n=this;return t.setValue=function(t){n.prologEditor("setSource",t,!0)},t.getValue=function(){return e.cm.getValue()},t.changeGen=function(){return e.cm.changeGeneration()},t.isClean=function(t){return e.cm.isClean(t)},t.markClean=function(t){n.prologEditor("markClean",t)},t.cleanGeneration=e.cm.changeGeneration(),t.cleanData=e.cm.getValue(),t.cleanCheckpoint="load",this.storage(t),this},contextAction:function(){var t=this,e=this.data(c),n=e.cm.getCursor(),r=e.cm.getTokenAt(n,!0),a=e.cm.getEnrichedToken(r),s=e.cm.getTokenReferences(a);if(s&&s.length>0){for(var l=i.el.ul(),u=i.el.div({class:"goto-source"},i.el.div("Go to"),l),h=i.el.div({class:"edit-modal"},i.el.div({class:"mask"}),u),d=0;d<s.length;d++){var f=s[d];i(l).append(i.el.li(i.el.a({"data-locindex":d},f.title)))}var p=e.cm.cursorCoords(!0);i(u).css({top:p.bottom,left:p.left}),i("body").append(h),i(h).on("click",function(n){var r=i(n.target).data("locindex");if(i(h).remove(),void 0!==r){var a=s[r];if(a.file)t.closest(".swish").swish("playFile",a);else{var l;"query"==e.role?(l=t.closest(".prolog-query-editor").queryEditor("getProgramEditor"),l[0]||o.alert("No related program editor")):l=t,l&&l[0]&&l.prologEditor("gotoLine",a.line,a).focus()}}}),i(h).show()}return this},variables:function(e,n){function r(t){i(o).find(t).each(function(){var t=i(this).text();a.indexOf(t)<0&&a.push(t)})}var o=i.el.span({class:"query cm-s-prolog"}),a=[];return t.runMode(e,"prolog",o),r("span.cm-var"),n&&r("span.cm-var-2"),a},wrapSolution:function(t){function e(t,e){return o.prologEditor("setSource",t+"("+r+")"+e+".").focus(),o}function n(t){return o.prologEditor("setSource",t+r+".").focus(),o}function i(t){for(var e=[],n=0;n<a.length;n++)e.push("asc("+a[n]+")");return e.join(",")}var r=s.trimFullStop(this.prologEditor("getSource","query")),o=this,a=this.prologEditor("variables",r);switch(t){case"Aggregate (count all)":return e("aggregate_all(count, ",", Count)");case"Projection":return n("projection(["+a.join(",")+"]),\n");case"Order by":return e("order_by(["+i(a)+"], ",")");case"Distinct":return e("distinct(["+a.join(",")+"], ",")");case"Limit":return e("limit(10, ",")");case"Time":return e("time(",")");case"Debug (trace)":return e("trace, ","");default:alert('Unknown wrapper: "'+t+'"')}}};if(a.tabTypes.program={dataType:"pl",typeName:"program",label:"Program",contentType:"text/x-prolog",order:100,create:function(t,e){i(t).addClass("prolog-editor").prologEditor(i.extend({save:!0},e)).prologEditor("makeCurrent")}},e.swish.tab_types)for(var f={save:!0,lineNumbers:!0},p=0;p<e.swish.tab_types.length;p++){var g=e.swish.tab_types[p];if(g.editor){var m=i.extend({typeName:g.typeName},f,g.editor);g.create=function(t){i(t).addClass("prolog-editor").prologEditor(m)},a.tabTypes[g.typeName]=g}}i.fn.prologEditor=function(t){return d[t]?d[t].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof t&&t?void i.error("Method "+t+" does not exist on jQuery."+c):d._init.apply(this,arguments)}}(jQuery),t.prototype.charOffsetToPos=function(t){for(var e=this.firstLine(),n=this.lastLine(),i=0;e<n;e++){var r=this.getLine(e);if(i<=t&&i+r.length>=t)return{line:e,ch:t-i};i+=r.length+1}},t.keyMap.emacs.Enter="newlineAndIndent",e.swish.cm_style&&l(e.swish.cm_style,".cm-s-prolog span.cm-"),e.swish.cm_hover_style&&l(e.swish.cm_hover_style,".CodeMirror-hover-tooltip ")}),define("query",["jquery","config","preferences","cm/lib/codemirror","modal","laconic","editor"],function(t,e,n,i,r){!function(t){function i(e){return t(e).closest(".prolog-query-editor")}function o(e,n,r){var o=t.el.div({class:"btn-group dropup"},t.el.button({class:"btn btn-default btn-xs dropdown-toggle "+e,"data-toggle":"dropdown"},n,t.el.span({class:"caret"})),t.el.ul({class:"dropdown-menu "+e}));return t(o).on("click","a",function(){var e=t(this).closest("li");e.hasClass("add-example")?i(this).queryEditor("addExample"):i(this).queryEditor("setQuery",t(this).text())}),o}function a(e){function n(e){var n=e.examples();t.isArray(n)&&i(r).queryEditor("setExamples",n,!0)}var r=o("examples","Examples",e),a=t(r).find("ul");if("function"==typeof e.examples){var s=t.extend({},e);t(r).mousedown(function(t){1==t.which&&n(s)})}else if(e.examples)for(var l=e.examples,c=0;c<l.length;c++)a.append(t.el.li(t.el.a(l[c])));return r}function s(t){return o("history","History",t)}function l(e){for(var n,r="aggregate",o=e.aggregates||["Aggregate (count all)","--","Projection","Order by","Distinct","Limit","--","Time","Debug (trace)"],a=t.el.div({class:"btn-group dropup"},t.el.button({class:"btn btn-default btn-xs dropdown-toggle "+r,"data-toggle":"dropdown"},"Solutions",t.el.span({class:"caret"})),n=t.el.ul({class:"dropdown-menu "+r})),s=0;s<o.length;s++){var l=o[s];"--"==l?t(n).append(t.el.li({class:"divider"})):t(n).append(t.el.li(t.el.a(l)))}return t(a).on("click","a",function(){i(this).find(".query").prologEditor("wrapSolution",t(this).text())}),a}function c(e){var n=t.el.button({class:"run-btn-query",class:"btn btn-default btn-primary btn-xs"},"Run!");return t(n).on("click",function(){i(this).queryEditor("run",void 0,u(this))}),n}function u(e){return t(e).parent().find("input").prop("checked")}function h(i){var r=n.getVal("tabled_results"),o={type:"checkbox",name:"table"};void 0===r&&(r=e.swish.tabled_results),r&&(o.checked="checked");var a=t.el.input(o),s=t.el.span({class:"run-chk-table"},a," table results");return t(a).on("change",function(e){n.setVal("tabled_results",t(e.target).prop("checked"))}),s}var d="queryEditor",f={maxHistoryLength:50},p={_init:function(e){return this.each(function(){function n(){return t(u).find("input").prop("checked")}var i=t(this),r=t.extend({},f,e),o=t.el.div({class:"query"}),u=h(r);i.addClass("prolog-query-editor swish-event-receiver reactive-size"),i.append(o,t.el.div({class:"prolog-prompt"},"?-"),t.el.div({class:"query-buttons"},t.el.span({class:"buttons-left"},a(r),s(r),l(r)),t.el.span({class:"buttons-right"},u,c(r)))),t(o).append(i.children("textarea")).prologEditor({role:"query",sourceID:function(){return r.sourceID()},prologQuery:function(t){i.queryEditor("run",t,n())}}),i.data(d,r),t(o).prologEditor("getSource","query")||("object"==typeof r.examples?r.examples[0]&&t(o).prologEditor("setSource",r.examples[0]):i[d]("setProgramEditor",t(r.editor),!0)),i.on("current-program",function(e,n){i[d]("setProgramEditor",t(n))}),i.on("program-loaded",function(e,n){if(t(r.editor).data("prologEditor")==t(n).data("prologEditor")){var o=r.examples();i.queryEditor("setQuery",o&&o[0]?o[0]:"")}})})},setProgramEditor:function(e,n){var i=this.data(d);if(i.editor==e[0]&&!n)return this;if(i.editor=e[0],i.editor){i.examples=function(){var n=e.prologEditor("getExamples")||[],i=e.parents(".swish").swish("examples",!0)||[];return t.isArray(i)&&n.concat(i),n},e.prologEditor("isPengineSource")?i.source=function(){var n=e.prologEditor("getSource","source"),i=t(".background.prolog.source").text();return i&&(n+="\n%@background@\n"+i),n}:i.source="",i.sourceID=function(){return e.prologEditor("getSourceID")};var r=i.examples();r&&r[0]&&this.queryEditor("isClean")?this.queryEditor("setQuery",r[0]):e.prologEditor("refreshHighlight")}else i.examples=""},getProgramEditor:function(){var e=this.data(d);return e.editor?t(e.editor):t()},setExamples:function(e,n){function i(t){var e;if((e=r.data("examples"))&&e.length==t.length){for(var n=0;n<e.length;n++)if(e[n]!=t[n])return!1;return!0}return!1}var r=this.find("ul.examples");if(e||(e=[]),void 0===n&&(n=!0),n&&i(e))return this;n===!0&&r.html(""),r.find("li.add-example, li.divider").remove();for(var o=0;o<e.length;o++)r.append(t.el.li(t.el.a(e[o])));return r.data("examples",e.slice(0)),r.append(t.el.li({class:"divider"})),r.append(t.el.li({class:"add-example"},t.el.a("Add current query to examples"))),this},addExample:function(){var e=this.find(".query").prologEditor("getSource");return""!=e.trim()?t(".swish-event-receiver:visible").trigger("addExample",this.find(".query").prologEditor("getSource")):r.alert("The query window is empty"),this},addHistory:function(e){function n(){return i.children().filter(function(){return t(this).text()==e})}var i=this.find("ul.history"),r=this.data("queryEditor");if(e){var o;(o=n())&&o.remove(),i.children().length>=r.maxHistoryLength&&i.children().first().remove(),i.append(t.el.li(t.el.a(e)))}return this},setQuery:function(t){var e=this.data(d);return e.cleanGen=this.find(".query").prologEditor("setSource",t).focus().prologEditor("changeGen"),this},isClean:function(){var t=this.data(d);return!this.queryEditor("getQuery")||t.cleanGen&&this.find(".query").prologEditor("isClean",t.cleanGen)},getQuery:function(){return this.find(".query").prologEditor("getSource","query")},run:function(e,n){var i=this.data("queryEditor");if(void 0===e&&(e=this.queryEditor("getQuery")),e=t.trim(e),!e)return t(".swish-event-receiver").trigger("help",{file:"query.html"}),this;t(".swish-event-receiver").trigger("clearMessages");var r={query:e,editor:i.editor,query_editor:this.find(".query")};return"function"==typeof i.source?r.source=i.source(e):"string"==typeof i.source&&(r.source=i.source),n&&(r.tabled=!0),this.queryEditor("addHistory",e),i.runner.prologRunners("run",r),this}};t.fn.queryEditor=function(e){return p[e]?p[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery."+d):p._init.apply(this,arguments)}}(jQuery)}),define("term",["jquery"],function(){function t(){$(this).next().toggleClass("fold"),$(this).remove()}$(document).on("click",".pl-functor, .pl-infix",function(){var e=$(this).parent();$(e).toggleClass("fold"),$(e).before('<span class="pl-ellipsis">...</span>').prev().click(t)})}),define("login",["jquery","modal","config","form","laconic"],function(t,e,n,i){var r=["display_name","email","avatar"];!function(t){function o(t,e,n){t||(t=".force_logout");try{var i=navigator.userAgent.toLowerCase();if(i.indexOf("msie")!=-1)document.execCommand("ClearAuthenticationCache");else if(i.indexOf("webkit")!=-1&&"basic"==e){var r=a(n);r&&(r.open("GET",t,!0),r.setRequestHeader("Authorization","Basic logout"),
-r.send())}else{var r=a(n);r&&(r.open("GET",t,!0,"logout","logout"),r.send(""),r.abort())}}catch(t){return}}function a(t){var e;try{window.XMLHttpRequest?e=new XMLHttpRequest:window.ActiveXObject&&(e=new ActiveXObject("Microsoft.XMLHTTP")),t&&(e.addEventListener("load",t),e.addEventListener("error",t),e.addEventListener("abort",t))}catch(t){}return e}function s(t,e,n,i){var r=window.open(t,e,n),o=window.setInterval(function(){try{(null==r||r.closed)&&(window.clearInterval(o),i(r))}catch(t){}},1e3);return window.focus&&r.focus(),r}var l="login",c={_init:function(e){return this.each(function(){var e=t(this),n={};n.url=e.attr("href"),e.removeAttr("href"),e.on("click",function(t){e.hasClass("login")&&e.login("login",t)}),e.data(l,n),e.login("update","startup")})},update:function(e){var r=t(this);t.get(n.http.locations.user_info,{reason:e},function(e){if(e){n.swish.user=e,r.removeClass("login").addClass("logout");var o,a=r.find("span.logout span.value");o=e.avatar?t.el.img({class:"profile-picture",src:e.avatar}):t.el.span({class:"glyphicon glyphicon-user"}),o=t.el.span(o,t.el.b({class:"caret"})),a.html(""),a.append(i.widgets.dropdownButton(o,{divClass:"user-menu btn-transparent",ulClass:"pull-right",client:r,actions:{Logout:r.hasClass("no-logout")?void 0:function(){this.login("logout")},Profile:function(){this.login("profile")}}}))}else delete n.swish.user,r.removeClass("logout").addClass("login")},"json")},login:function(n){var i=t(this),r=this.data(l),o=t(n.target),a=r.url,c=o.closest("[data-server]").data("server"),u=o.closest("[data-frame]").data("frame")||"iframe";c&&(a+="?server="+encodeURIComponent(c)),"popup"==u?s(a,"_blank","location=true,status=true,height=400,width=800",function(){i.login("logged_in")}):e.show({title:"Login",body:function(){var e=t.el.button({name:"ok",class:"btn btn-primary login-cont","data-dismiss":"modal"},"Continue");this.append(t.el.iframe({class:"login",src:a}),e)},onclose:function(){i.login("logged_in")}})},logged_in:function(){this.login("update","login")},profile:function(){var i=t(this);e.server_form({title:"User profile",url:n.swish.user.swish_profile_url||n.http.locations.user_profile,onreply:function(){i.login("update","profile")}})},get_profile:function(e){function i(e,n){var i=t("#chat");if(1==i.length){var r=i.chat("self",[n]);r[n]&&(o[e]=r[n])}}var o={},a=n.swish.user||{};e=e||r;for(var s=0;s<e.length;s++){var l=e[s];a[l]?o[l]=a[l]:"display_name"==l?a.name?o.display_name=a.name:a.given_name&&a.family_name?o.display_name=a.given_name+" "+a.family_name:a.family_name?o.display_name=a.family_name:a.given_name?o.display_name=a.given_name:a.nick_name?o.display_name=a.nick_name:i("display_name","name"):"identity"==l?a.external_identity&&a.identity_provider&&(o.identity=a.identity_provider+":"+a.external_identity):"avatar"==l&&i("avatar","avatar")}return o},logout:function(){var i=n.swish.user,r=t(this);i&&(i.logout_url?t.ajax({url:i.logout_url,success:function(){r.login("update","logout_by_url")},error:function(t){e.ajaxError(t)}}):"basic"==i.auth_method||"digest"==i.auth_method?o(n.http.locations.http_logout,n.swish.user.auth_method,function(){r.login("update","logout_by_http")}):alert("Don't know how to logout"))}};t.fn.login=function(e){return c[e]?c[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery."+l):c._init.apply(this,arguments)}}(jQuery)}),define("chatroom",["jquery","form","cm/lib/codemirror","utils","config","modal","links","laconic"],function(t,e,n,i,r,o,a){!function(t){function s(e,i){var r=t.el.pre({class:"cm-s-prolog"});n.runMode(i,"prolog",r),e.attr("title",t.el.div(r).innerHTML),e.data("html",!0),e.data("placement","bottom"),e.data("trigger","hover"),e.tooltip()}function l(t,n,i){return e.widgets.glyphIconButton(t,{class:"btn-xs "+n,title:i})}function c(t){var e=(new Date).getTime()/1e3-t;return e<20?"just now":e<60?"less then a minute ago":(e=Math.round(e/60),e<120?e+" minutes ago":(e=Math.round(e/60),e<48?e+" hours ago":(e=Math.round(e/24),e<360?e+" days ago":(e=Math.round(e/365),e+" years ago"))))}function u(t){function e(t){return function(e,n){return"<"+t+">"+n+"</"+t+">"}}for(var n=[{regex:/[a-z][a-zA-Z0-9_]*\/[0-9]/g,func:function(t){return'<a class="builtin" href="/pldoc/man?predicate='+t+'">'+t+"</a>"}},{regex:/[a-zA-Z0-9_-]+\.(pl|swinb)\b/g,func:function(t){return'<a class="builtin" href="'+r.http.locations.web_storage+t+'">'+t+"</a>"}},{regex:/`(.)`/g,func:function(t,e){return"<code>"+e+"</code>"}},{regex:/`([\w\[\{\(][^`]*[\w\]\}\)])`/g,func:function(t,e){return"<code>"+e+"</code>"}},{delim:"\\*",a:"\\*\\b",z:"\\b\\*",tag:"b"},{delim:"__",a:"\\b__",z:"__\\b",tag:"b"},{delim:"_",a:"\\b_",z:"_\\b",tag:"i"}],i=0;i<n.length;i++){var o=n[i];o.regex?t=t.replace(o.regex,o.func):o.delim&&(t=t.replace(RegExp(o.a+"([^"+o.delim+"]+)"+o.z,"g"),e(o.tag)))}return t}var h="chatroom",d={_init:function(n){return this.each(function(){var i,r,s,l,c=t(this),u={};u.docid=n.docid,c.data(h,u),c.addClass("chatroom each-minute"),i=t.el.div({class:"btn-group dropup"},r=t.el.button({type:"button",class:"btn btn-primary btn-xs"},"Send"),t.el.button({type:"button",class:"btn btn-info btn-xs dropdown-toggle","data-toggle":"dropdown","aria-haspopup":!0,"aria-expanded":!1},t.el.span({class:"caret"})),ul=t.el.ul({class:"dropdown-menu pull-right"})),l=t.el.textarea({placeholder:"Type chat message here ..."}),c.append(t.el.div({class:"chat-conversation"},t.el.div({class:"stretch"}),t.el.div({class:"inner"})),s=t.el.span({class:"glyphicon menu glyphicon-remove-circle"}),t.el.div({class:"chat-input"},t.el.table({class:"chat-input"},t.el.tr(t.el.td({class:"chat-text"},l),t.el.td({class:"chat-send"},i))))),t(r).on("click",function(){c.chatroom("send")}),e.widgets.populateMenu(t(i),c,{"Include my query":function(){var e=t(".prolog-query-editor").queryEditor("getQuery");""!=e.trim()?this.chatroom("send",{payload:[{type:"query",query:e}]}):o.alert("Your query editor is empty")},"Broadcast to help room":function(){"gitty:Help.swinb"!=u.docid?(this.chatroom("send",{docid:"gitty:Help.swinb",payload:[{type:"about",docid:u.docid}],clear:!1}),this.chatroom("send")):o.alert("Please use `Cry for help' from the document about which you need help.")}}),t(s).on("click",function(){c.tile("close")}),t(l).keypress(function(t){if(13==t.which)return c.chatroom("send"),t.preventDefault(),!1}),c.on("click",".inner button",function(e){var n,i=t(e.target).closest("button");return(n=i.data("commit"))?c.closest(".swish").swish("playFile",n):(n=i.data("diff"))&&c.chatroom("diff",n),e.preventDefault(),!1}),c.on("click",".inner a",a.followLink),c.on("pane.resize",function(){c.chatroom("scrollToBottom",!0)}),c.on("minute",function(){c.chatroom("update_time")}),c.chatroom("load_from_server")})},close:function(){return this.tile("close")},send:function(e){e=e||{};var n=this.data(h),i={type:"chat-message"},r=this.find("textarea");i.text=r.val().trim();var a=e.payload||[],s=!1,l=this.chatroom("storage").storage("getSelection");l&&a.push({type:"selection",selection:l});for(var c=0;c<a.length;c++)if("about"!=a[c].type){s=!0;break}""!=i.text||s?(e.clear!==!1&&r.val(""),i.payload=a,i.docid=e.docid||n.docid,e.class&&(i.class=e.class),t("#chat").chat("send",i)):e.payload||o.alert("No message to send")},storage:function(){return this.closest(".tab-pane").find(".storage")},add:function(e){var n=this.data(h),i=e.user||{},o=r.swish.user||{};if(e.docid!=n.docid)return this;var a=t("#chat").chat("self"),s=i.id&&i.id==a.id||i.avatar&&i.avatar==a.avatar||i.profile_id&&i.profile_id==o.profile_id;if(elem=t(t.el.div({class:"chat-message"+(s?" self":""),"data-userid":i.wsid})),!s&&i.avatar&&elem.append(t.el.img({class:"avatar",src:i.avatar})),elem.append(t.el.span({class:"chat-sender"},s?"Me":i.name)),e.time){var l=new Date(1e3*e.time).toLocaleString();elem.append(t.el.span({class:"chat-time",title:l},"(",c(e.time),") ")),elem.data("time",e.time)}if(this.find(".inner").append(elem),e.payload)for(var d=0;d<e.payload.length;d++){var p=e.payload[d];f[p.type]?f[p.type].call(elem,p):console.log(p)}var g;if(e.html?g=e.html:e.text&&(g=t(t.el.span(e.text)).html(),g=u(g)),g){var m=t.el.span({class:"chat-message html"});t(m).html(g),elem.append(m)}return this.chatroom("scrollToBottom"),this},load_from_server:function(e){var n=this.data(h),i=t(this);return t.get(r.http.locations.chat_messages,{docid:n.docid},function(t){if(e&&0==t.length)i.chatroom("close");else for(var n=0;n<t.length;n++)i.chatroom("add",t[n])}).fail(function(t,e,n){o.ajaxError(t)}),this},update_time:function(){return this.find(".chat-message").each(function(){var e,n=t(this);(e=n.data("time"))&&n.find(".chat-time").text("("+c(e)+") ")})},diff:function(n){function i(t){o.ajaxError(t)}t.ajax({url:r.http.locations.web_storage+n.from,data:{format:"raw"},success:function(o){t.ajax({url:r.http.locations.web_storage+n.to,data:{format:"raw"},success:function(i){function r(){var e=t.el.div();this.append(e),t(e).diff({base:o,head:i,baseName:n.name+" (before)",headName:n.name+" (after)"}),this.parents("div.modal-dialog").addClass("modal-wide")}e.showDialog({title:"Update differences",body:r})},error:i})},error:i})},docid:function(t,e){var n=this.data(h);n.docid!=t&&(this.find(".inner").html(""),n.docid=t,this.chatroom("load_from_server",e))},rooms:function(e){var n=[];return this.each(function(){var i=t(this),r=i.data(h);r.docid==e&&n.push(this)}),t(n)},scrollToBottom:function(e){return this.each(function(){var n=t(this);inner=n.find("div.inner"),conv=n.find(".chat-conversation");var i=inner.height(),r=conv.height()-i-4-4;(r>0||e!==!0)&&(conv.find("div.stretch").height(r>0?r:0),conv.scrollTop(i))}),this}},f={selection:function(n){var i=this.chatroom("storage"),r=i.storage("getSelectionLabel",n.selection),o=t(t.el.button({class:"btn btn-xs btn-primary"},r+" ",e.widgets.glyphIcon("eye-open")));o.on("click",function(){i.storage("restoreSelection",n.selection)}),this.append(" ",o," ")},query:function(n){var r=t(t.el.button({class:"btn btn-xs btn-primary"},"Query ",e.widgets.glyphIcon("download")));r.on("click",function(){var e=t(".prolog-query-editor");e.queryEditor("setQuery",n.query),i.flash(e.find(".CodeMirror"))}),s(r,n.query),this.append(" ",r," ")},update:function(e){var n,i,r;this.append(" ",t.el.span({class:"update"},n=l("play","btn-primary","Open old version"),i=l("zoom-in","btn-info","View changes"),r=l("play","btn-primary","Open new version"))," "),t(n).data("commit",e.previous),t(i).data("diff",{from:e.previous,to:e.commit,name:e.name}),t(r).data("commit",e.commit)},about:function(e){var n=e.docid.replace("gitty:","");this.append(" ",t.el.a({href:r.http.locations.web_storage+n,class:"store btn btn-primary btn-xs"},n)," ")}};t.fn.chatroom=function(e){return d[e]?d[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery."+h):d._init.apply(this,arguments)}}(jQuery)}),!function(){function t(t){return t&&(t.ownerDocument||t.document||t).documentElement}function e(t){return t&&(t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView)}function n(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}function i(t){return null===t?NaN:+t}function r(t){return!isNaN(t)}function o(t){return{left:function(e,n,i,r){for(arguments.length<3&&(i=0),arguments.length<4&&(r=e.length);i<r;){var o=i+r>>>1;t(e[o],n)<0?i=o+1:r=o}return i},right:function(e,n,i,r){for(arguments.length<3&&(i=0),arguments.length<4&&(r=e.length);i<r;){var o=i+r>>>1;t(e[o],n)>0?r=o:i=o+1}return i}}}function a(t){return t.length}function s(t){for(var e=1;t*e%1;)e*=10;return e}function l(t,e){for(var n in e)Object.defineProperty(t.prototype,n,{value:e[n],enumerable:!1})}function c(){this._=Object.create(null)}function u(t){return(t+="")===xa||t[0]===ba?ba+t:t}function h(t){return(t+="")[0]===ba?t.slice(1):t}function d(t){return u(t)in this._}function f(t){return(t=u(t))in this._&&delete this._[t]}function p(){var t=[];for(var e in this._)t.push(h(e));return t}function g(){var t=0;for(var e in this._)++t;return t}function m(){for(var t in this._)return!1;return!0}function v(){this._=Object.create(null)}function y(t){return t}function x(t,e,n){return function(){var i=n.apply(e,arguments);return i===e?t:i}}function b(t,e){if(e in t)return e;e=e.charAt(0).toUpperCase()+e.slice(1);for(var n=0,i=_a.length;n<i;++n){var r=_a[n]+e;if(r in t)return r}}function _(){}function w(){}function S(t){function e(){for(var e,i=n,r=-1,o=i.length;++r<o;)(e=i[r].on)&&e.apply(this,arguments);return t}var n=[],i=new c;return e.on=function(e,r){var o,a=i.get(e);return arguments.length<2?a&&a.on:(a&&(a.on=null,n=n.slice(0,o=n.indexOf(a)).concat(n.slice(o+1)),i.remove(e)),r&&n.push(i.set(e,{on:r})),t)},e}function C(){la.event.preventDefault()}function T(){for(var t,e=la.event;t=e.sourceEvent;)e=t;return e}function k(t){for(var e=new w,n=0,i=arguments.length;++n<i;)e[arguments[n]]=S(e);return e.of=function(n,i){return function(r){try{var o=r.sourceEvent=la.event;r.target=t,la.event=r,e[r.type].apply(n,i)}finally{la.event=o}}},e}function A(t){return Sa(t,Aa),t}function M(t){return"function"==typeof t?t:function(){return Ca(t,this)}}function L(t){return"function"==typeof t?t:function(){return Ta(t,this)}}function E(t,e){function n(){this.removeAttribute(t)}function i(){this.removeAttributeNS(t.space,t.local)}function r(){this.setAttribute(t,e)}function o(){this.setAttributeNS(t.space,t.local,e)}function a(){var n=e.apply(this,arguments);null==n?this.removeAttribute(t):this.setAttribute(t,n)}function s(){var n=e.apply(this,arguments);null==n?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}return t=la.ns.qualify(t),null==e?t.local?i:n:"function"==typeof e?t.local?s:a:t.local?o:r}function P(t){return t.trim().replace(/\s+/g," ")}function N(t){return new RegExp("(?:^|\\s+)"+la.requote(t)+"(?:\\s+|$)","g")}function O(t){return(t+"").trim().split(/^|\s+/)}function R(t,e){function n(){for(var n=-1;++n<r;)t[n](this,e)}function i(){for(var n=-1,i=e.apply(this,arguments);++n<r;)t[n](this,i)}t=O(t).map(D);var r=t.length;return"function"==typeof e?i:n}function D(t){var e=N(t);return function(n,i){if(r=n.classList)return i?r.add(t):r.remove(t);var r=n.getAttribute("class")||"";i?(e.lastIndex=0,e.test(r)||n.setAttribute("class",P(r+" "+t))):n.setAttribute("class",P(r.replace(e," ")))}}function I(t,e,n){function i(){this.style.removeProperty(t)}function r(){this.style.setProperty(t,e,n)}function o(){var i=e.apply(this,arguments);null==i?this.style.removeProperty(t):this.style.setProperty(t,i,n)}return null==e?i:"function"==typeof e?o:r}function j(t,e){function n(){delete this[t]}function i(){this[t]=e}function r(){var n=e.apply(this,arguments);null==n?delete this[t]:this[t]=n}return null==e?n:"function"==typeof e?r:i}function H(t){function e(){var e=this.ownerDocument,n=this.namespaceURI;return n===Ma&&e.documentElement.namespaceURI===Ma?e.createElement(t):e.createElementNS(n,t)}function n(){return this.ownerDocument.createElementNS(t.space,t.local)}return"function"==typeof t?t:(t=la.ns.qualify(t)).local?n:e}function V(){var t=this.parentNode;t&&t.removeChild(this)}function F(t){return{__data__:t}}function z(t){return function(){return ka(this,t)}}function q(t){return arguments.length||(t=n),function(e,n){return e&&n?t(e.__data__,n.__data__):!e-!n}}function G(t,e){for(var n=0,i=t.length;n<i;n++)for(var r,o=t[n],a=0,s=o.length;a<s;a++)(r=o[a])&&e(r,a,n);return t}function B(t){return Sa(t,Ea),t}function $(t){var e,n;return function(i,r,o){var a,s=t[o].update,l=s.length;for(o!=n&&(n=o,e=0),r>=e&&(e=r+1);!(a=s[e])&&++e<l;);return a}}function W(t,e,n){function i(){var e=this[a];e&&(this.removeEventListener(t,e,e.$),delete this[a])}function r(){var r=l(e,ua(arguments));i.call(this),this.addEventListener(t,this[a]=r,r.$=n),r._=e}function o(){var e,n=new RegExp("^__on([^.]+)"+la.requote(t)+"$");for(var i in this)if(e=i.match(n)){var r=this[i];this.removeEventListener(e[1],r,r.$),delete this[i]}}var a="__on"+t,s=t.indexOf("."),l=U;s>0&&(t=t.slice(0,s));var c=Pa.get(t);return c&&(t=c,l=X),s?e?r:i:e?_:o}function U(t,e){return function(n){var i=la.event;la.event=n,e[0]=this.__data__;try{t.apply(this,e)}finally{la.event=i}}}function X(t,e){var n=U(t,e);return function(t){var e=this,i=t.relatedTarget;i&&(i===e||8&i.compareDocumentPosition(e))||n.call(e,t)}}function Y(n){var i=".dragsuppress-"+ ++Oa,r="click"+i,o=la.select(e(n)).on("touchmove"+i,C).on("dragstart"+i,C).on("selectstart"+i,C);if(null==Na&&(Na=!("onselectstart"in n)&&b(n.style,"userSelect")),Na){var a=t(n).style,s=a[Na];a[Na]="none"}return function(t){if(o.on(i,null),Na&&(a[Na]=s),t){var e=function(){o.on(r,null)};o.on(r,function(){C(),e()},!0),setTimeout(e,0)}}}function Q(t,n){n.changedTouches&&(n=n.changedTouches[0]);var i=t.ownerSVGElement||t;if(i.createSVGPoint){var r=i.createSVGPoint();if(Ra<0){var o=e(t);if(o.scrollX||o.scrollY){i=la.select("body").append("svg").style({position:"absolute",top:0,left:0,margin:0,padding:0,border:"none"},"important");var a=i[0][0].getScreenCTM();Ra=!(a.f||a.e),i.remove()}}return Ra?(r.x=n.pageX,r.y=n.pageY):(r.x=n.clientX,r.y=n.clientY),r=r.matrixTransform(t.getScreenCTM().inverse()),[r.x,r.y]}var s=t.getBoundingClientRect();return[n.clientX-s.left-t.clientLeft,n.clientY-s.top-t.clientTop]}function Z(){return la.event.changedTouches[0].identifier}function K(t){return t>0?1:t<0?-1:0}function J(t,e,n){return(e[0]-t[0])*(n[1]-t[1])-(e[1]-t[1])*(n[0]-t[0])}function tt(t){return t>1?0:t<-1?ja:Math.acos(t)}function et(t){return t>1?Fa:t<-1?-Fa:Math.asin(t)}function nt(t){return((t=Math.exp(t))-1/t)/2}function it(t){return((t=Math.exp(t))+1/t)/2}function rt(t){return((t=Math.exp(2*t))-1)/(t+1)}function ot(t){return(t=Math.sin(t/2))*t}function at(){}function st(t,e,n){return this instanceof st?(this.h=+t,this.s=+e,void(this.l=+n)):arguments.length<2?t instanceof st?new st(t.h,t.s,t.l):_t(""+t,wt,st):new st(t,e,n)}function lt(t,e,n){function i(t){return t>360?t-=360:t<0&&(t+=360),t<60?o+(a-o)*t/60:t<180?a:t<240?o+(a-o)*(240-t)/60:o}function r(t){return Math.round(255*i(t))}var o,a;return t=isNaN(t)?0:(t%=360)<0?t+360:t,e=isNaN(e)?0:e<0?0:e>1?1:e,n=n<0?0:n>1?1:n,a=n<=.5?n*(1+e):n+e-n*e,o=2*n-a,new vt(r(t+120),r(t),r(t-120))}function ct(t,e,n){return this instanceof ct?(this.h=+t,this.c=+e,void(this.l=+n)):arguments.length<2?t instanceof ct?new ct(t.h,t.c,t.l):t instanceof ht?ft(t.l,t.a,t.b):ft((t=St((t=la.rgb(t)).r,t.g,t.b)).l,t.a,t.b):new ct(t,e,n)}function ut(t,e,n){return isNaN(t)&&(t=0),isNaN(e)&&(e=0),new ht(n,Math.cos(t*=za)*e,Math.sin(t)*e)}function ht(t,e,n){return this instanceof ht?(this.l=+t,this.a=+e,void(this.b=+n)):arguments.length<2?t instanceof ht?new ht(t.l,t.a,t.b):t instanceof ct?ut(t.h,t.c,t.l):St((t=vt(t)).r,t.g,t.b):new ht(t,e,n)}function dt(t,e,n){var i=(t+16)/116,r=i+e/500,o=i-n/200;return r=pt(r)*Ka,i=pt(i)*Ja,o=pt(o)*ts,new vt(mt(3.2404542*r-1.5371385*i-.4985314*o),mt(-.969266*r+1.8760108*i+.041556*o),mt(.0556434*r-.2040259*i+1.0572252*o))}function ft(t,e,n){return t>0?new ct(Math.atan2(n,e)*qa,Math.sqrt(e*e+n*n),t):new ct(NaN,NaN,t)}function pt(t){return t>.206893034?t*t*t:(t-4/29)/7.787037}function gt(t){return t>.008856?Math.pow(t,1/3):7.787037*t+4/29}function mt(t){return Math.round(255*(t<=.00304?12.92*t:1.055*Math.pow(t,1/2.4)-.055))}function vt(t,e,n){return this instanceof vt?(this.r=~~t,this.g=~~e,void(this.b=~~n)):arguments.length<2?t instanceof vt?new vt(t.r,t.g,t.b):_t(""+t,vt,lt):new vt(t,e,n)}function yt(t){return new vt(t>>16,t>>8&255,255&t)}function xt(t){return yt(t)+""}function bt(t){return t<16?"0"+Math.max(0,t).toString(16):Math.min(255,t).toString(16)}function _t(t,e,n){var i,r,o,a=0,s=0,l=0;if(i=/([a-z]+)\((.*)\)/.exec(t=t.toLowerCase()))switch(r=i[2].split(","),i[1]){case"hsl":return n(parseFloat(r[0]),parseFloat(r[1])/100,parseFloat(r[2])/100);case"rgb":return e(Tt(r[0]),Tt(r[1]),Tt(r[2]))}return(o=is.get(t))?e(o.r,o.g,o.b):(null==t||"#"!==t.charAt(0)||isNaN(o=parseInt(t.slice(1),16))||(4===t.length?(a=(3840&o)>>4,a|=a>>4,s=240&o,s|=s>>4,l=15&o,l|=l<<4):7===t.length&&(a=(16711680&o)>>16,s=(65280&o)>>8,l=255&o)),e(a,s,l))}function wt(t,e,n){var i,r,o=Math.min(t/=255,e/=255,n/=255),a=Math.max(t,e,n),s=a-o,l=(a+o)/2;return s?(r=l<.5?s/(a+o):s/(2-a-o),i=t==a?(e-n)/s+(e<n?6:0):e==a?(n-t)/s+2:(t-e)/s+4,i*=60):(i=NaN,r=l>0&&l<1?0:i),new st(i,r,l)}function St(t,e,n){t=Ct(t),e=Ct(e),n=Ct(n);var i=gt((.4124564*t+.3575761*e+.1804375*n)/Ka),r=gt((.2126729*t+.7151522*e+.072175*n)/Ja),o=gt((.0193339*t+.119192*e+.9503041*n)/ts);return ht(116*r-16,500*(i-r),200*(r-o))}function Ct(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Tt(t){var e=parseFloat(t);return"%"===t.charAt(t.length-1)?Math.round(2.55*e):e}function kt(t){return"function"==typeof t?t:function(){return t}}function At(t){return function(e,n,i){return 2===arguments.length&&"function"==typeof n&&(i=n,n=null),Mt(e,n,t,i)}}function Mt(t,e,n,i){function r(){var t,e=l.status;if(!e&&Et(l)||e>=200&&e<300||304===e){try{t=n.call(o,l)}catch(t){return void a.error.call(o,t)}a.load.call(o,t)}else a.error.call(o,l)}var o={},a=la.dispatch("beforesend","progress","load","error"),s={},l=new XMLHttpRequest,c=null;return!this.XDomainRequest||"withCredentials"in l||!/^(http(s)?:)?\/\//.test(t)||(l=new XDomainRequest),"onload"in l?l.onload=l.onerror=r:l.onreadystatechange=function(){l.readyState>3&&r()},l.onprogress=function(t){var e=la.event;la.event=t;try{a.progress.call(o,l)}finally{la.event=e}},o.header=function(t,e){return t=(t+"").toLowerCase(),arguments.length<2?s[t]:(null==e?delete s[t]:s[t]=e+"",o)},o.mimeType=function(t){return arguments.length?(e=null==t?null:t+"",o):e},o.responseType=function(t){return arguments.length?(c=t,o):c},o.response=function(t){return n=t,o},["get","post"].forEach(function(t){o[t]=function(){return o.send.apply(o,[t].concat(ua(arguments)))}}),o.send=function(n,i,r){if(2===arguments.length&&"function"==typeof i&&(r=i,i=null),l.open(n,t,!0),null==e||"accept"in s||(s.accept=e+",*/*"),l.setRequestHeader)for(var u in s)l.setRequestHeader(u,s[u]);return null!=e&&l.overrideMimeType&&l.overrideMimeType(e),null!=c&&(l.responseType=c),null!=r&&o.on("error",r).on("load",function(t){r(null,t)}),a.beforesend.call(o,l),l.send(null==i?null:i),o},o.abort=function(){return l.abort(),o},la.rebind(o,a,"on"),null==i?o:o.get(Lt(i))}function Lt(t){return 1===t.length?function(e,n){t(null==e?n:null)}:t}function Et(t){var e=t.responseType;return e&&"text"!==e?t.response:t.responseText}function Pt(t,e,n){var i=arguments.length;i<2&&(e=0),i<3&&(n=Date.now());var r=n+e,o={c:t,t:r,n:null};return os?os.n=o:rs=o,os=o,as||(ss=clearTimeout(ss),as=1,ls(Nt)),o}function Nt(){var t=Ot(),e=Rt()-t;e>24?(isFinite(e)&&(clearTimeout(ss),ss=setTimeout(Nt,e)),as=0):(as=1,ls(Nt))}function Ot(){for(var t=Date.now(),e=rs;e;)t>=e.t&&e.c(t-e.t)&&(e.c=null),e=e.n;return t}function Rt(){for(var t,e=rs,n=1/0;e;)e.c?(e.t<n&&(n=e.t),e=(t=e).n):e=t?t.n=e.n:rs=e.n;return os=t,n}function Dt(t,e){return e-(t?Math.ceil(Math.log(t)/Math.LN10):1)}function It(t,e){var n=Math.pow(10,3*ya(8-e));return{scale:e>8?function(t){return t/n}:function(t){return t*n},symbol:t}}function jt(t){var e=t.decimal,n=t.thousands,i=t.grouping,r=t.currency,o=i&&n?function(t,e){for(var r=t.length,o=[],a=0,s=i[0],l=0;r>0&&s>0&&(l+s+1>e&&(s=Math.max(1,e-l)),o.push(t.substring(r-=s,r+s)),!((l+=s+1)>e));)s=i[a=(a+1)%i.length];return o.reverse().join(n)}:y;return function(t){var n=us.exec(t),i=n[1]||" ",a=n[2]||">",s=n[3]||"-",l=n[4]||"",c=n[5],u=+n[6],h=n[7],d=n[8],f=n[9],p=1,g="",m="",v=!1,y=!0;switch(d&&(d=+d.substring(1)),(c||"0"===i&&"="===a)&&(c=i="0",a="="),f){case"n":h=!0,f="g";break;case"%":p=100,m="%",f="f";break;case"p":p=100,m="%",f="r";break;case"b":case"o":case"x":case"X":"#"===l&&(g="0"+f.toLowerCase());case"c":y=!1;case"d":v=!0,d=0;break;case"s":p=-1,f="r"}"$"===l&&(g=r[0],m=r[1]),"r"!=f||d||(f="g"),null!=d&&("g"==f?d=Math.max(1,Math.min(21,d)):"e"!=f&&"f"!=f||(d=Math.max(0,Math.min(20,d)))),f=hs.get(f)||Ht;var x=c&&h;return function(t){var n=m;if(v&&t%1)return"";var r=t<0||0===t&&1/t<0?(t=-t,"-"):"-"===s?"":s;if(p<0){var l=la.formatPrefix(t,d);t=l.scale(t),n=l.symbol+m}else t*=p;t=f(t,d);var b,_,w=t.lastIndexOf(".");if(w<0){var S=y?t.lastIndexOf("e"):-1;S<0?(b=t,_=""):(b=t.substring(0,S),_=t.substring(S))}else b=t.substring(0,w),_=e+t.substring(w+1);!c&&h&&(b=o(b,1/0));var C=g.length+b.length+_.length+(x?0:r.length),T=C<u?new Array(C=u-C+1).join(i):"";return x&&(b=o(T+b,T.length?u-_.length:1/0)),r+=g,t=b+_,("<"===a?r+t+T:">"===a?T+r+t:"^"===a?T.substring(0,C>>=1)+r+t+T.substring(C):r+(x?t:T+t))+n}}}function Ht(t){return t+""}function Vt(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function Ft(t,e,n){function i(e){var n=t(e),i=o(n,1);return e-n<i-e?n:i}function r(n){return e(n=t(new fs(n-1)),1),n}function o(t,n){return e(t=new fs(+t),n),t}function a(t,i,o){var a=r(t),s=[];if(o>1)for(;a<i;)n(a)%o||s.push(new Date(+a)),e(a,1);else for(;a<i;)s.push(new Date(+a)),e(a,1);return s}function s(t,e,n){try{fs=Vt;var i=new Vt;return i._=t,a(i,e,n)}finally{fs=Date}}t.floor=t,t.round=i,t.ceil=r,t.offset=o,t.range=a;var l=t.utc=zt(t);return l.floor=l,l.round=zt(i),l.ceil=zt(r),l.offset=zt(o),l.range=s,t}function zt(t){return function(e,n){try{fs=Vt;var i=new Vt;return i._=e,t(i,n)._}finally{fs=Date}}}function qt(t){function e(t){function e(e){for(var n,r,o,a=[],s=-1,l=0;++s<i;)37===t.charCodeAt(s)&&(a.push(t.slice(l,s)),null!=(r=gs[n=t.charAt(++s)])&&(n=t.charAt(++s)),(o=M[n])&&(n=o(e,null==r?"e"===n?" ":"0":r)),a.push(n),l=s+1);return a.push(t.slice(l,s)),a.join("")}var i=t.length;return e.parse=function(e){var i={y:1900,m:0,d:1,H:0,M:0,S:0,L:0,Z:null},r=n(i,t,e,0);if(r!=e.length)return null;"p"in i&&(i.H=i.H%12+12*i.p);var o=null!=i.Z&&fs!==Vt,a=new(o?Vt:fs);return"j"in i?a.setFullYear(i.y,0,i.j):"W"in i||"U"in i?("w"in i||(i.w="W"in i?1:0),a.setFullYear(i.y,0,1),a.setFullYear(i.y,0,"W"in i?(i.w+6)%7+7*i.W-(a.getDay()+5)%7:i.w+7*i.U-(a.getDay()+6)%7)):a.setFullYear(i.y,i.m,i.d),a.setHours(i.H+(i.Z/100|0),i.M+i.Z%100,i.S,i.L),o?a._:a},e.toString=function(){return t},e}function n(t,e,n,i){for(var r,o,a,s=0,l=e.length,c=n.length;s<l;){if(i>=c)return-1;if(r=e.charCodeAt(s++),37===r){if(a=e.charAt(s++),o=L[a in gs?e.charAt(s++):a],!o||(i=o(t,n,i))<0)return-1}else if(r!=n.charCodeAt(i++))return-1}return i}function i(t,e,n){w.lastIndex=0;var i=w.exec(e.slice(n));return i?(t.w=S.get(i[0].toLowerCase()),n+i[0].length):-1}function r(t,e,n){b.lastIndex=0;var i=b.exec(e.slice(n));return i?(t.w=_.get(i[0].toLowerCase()),n+i[0].length):-1}function o(t,e,n){k.lastIndex=0;var i=k.exec(e.slice(n));return i?(t.m=A.get(i[0].toLowerCase()),n+i[0].length):-1}function a(t,e,n){C.lastIndex=0;var i=C.exec(e.slice(n));return i?(t.m=T.get(i[0].toLowerCase()),n+i[0].length):-1}function s(t,e,i){return n(t,M.c.toString(),e,i)}function l(t,e,i){return n(t,M.x.toString(),e,i)}function c(t,e,i){return n(t,M.X.toString(),e,i)}function u(t,e,n){var i=x.get(e.slice(n,n+=2).toLowerCase());return null==i?-1:(t.p=i,n)}var h=t.dateTime,d=t.date,f=t.time,p=t.periods,g=t.days,m=t.shortDays,v=t.months,y=t.shortMonths;e.utc=function(t){function n(t){try{fs=Vt;var e=new fs;return e._=t,i(e)}finally{fs=Date}}var i=e(t);return n.parse=function(t){try{fs=Vt;var e=i.parse(t);return e&&e._}finally{fs=Date}},n.toString=i.toString,n},e.multi=e.utc.multi=le;var x=la.map(),b=Bt(g),_=$t(g),w=Bt(m),S=$t(m),C=Bt(v),T=$t(v),k=Bt(y),A=$t(y);p.forEach(function(t,e){x.set(t.toLowerCase(),e)});var M={a:function(t){return m[t.getDay()]},A:function(t){return g[t.getDay()]},b:function(t){return y[t.getMonth()]},B:function(t){return v[t.getMonth()]},c:e(h),d:function(t,e){return Gt(t.getDate(),e,2)},e:function(t,e){return Gt(t.getDate(),e,2)},H:function(t,e){return Gt(t.getHours(),e,2)},I:function(t,e){return Gt(t.getHours()%12||12,e,2)},j:function(t,e){return Gt(1+ds.dayOfYear(t),e,3)},L:function(t,e){return Gt(t.getMilliseconds(),e,3)},m:function(t,e){return Gt(t.getMonth()+1,e,2)},M:function(t,e){return Gt(t.getMinutes(),e,2)},p:function(t){return p[+(t.getHours()>=12)]},S:function(t,e){return Gt(t.getSeconds(),e,2)},U:function(t,e){return Gt(ds.sundayOfYear(t),e,2)},w:function(t){return t.getDay()},W:function(t,e){return Gt(ds.mondayOfYear(t),e,2)},x:e(d),X:e(f),y:function(t,e){return Gt(t.getFullYear()%100,e,2)},Y:function(t,e){return Gt(t.getFullYear()%1e4,e,4)},Z:ae,"%":function(){return"%"}},L={a:i,A:r,b:o,B:a,c:s,d:te,e:te,H:ne,I:ne,j:ee,L:oe,m:Jt,M:ie,p:u,S:re,U:Ut,w:Wt,W:Xt,x:l,X:c,y:Qt,Y:Yt,Z:Zt,"%":se};return e}function Gt(t,e,n){var i=t<0?"-":"",r=(i?-t:t)+"",o=r.length;return i+(o<n?new Array(n-o+1).join(e)+r:r)}function Bt(t){return new RegExp("^(?:"+t.map(la.requote).join("|")+")","i")}function $t(t){for(var e=new c,n=-1,i=t.length;++n<i;)e.set(t[n].toLowerCase(),n);return e}function Wt(t,e,n){ms.lastIndex=0;var i=ms.exec(e.slice(n,n+1));return i?(t.w=+i[0],n+i[0].length):-1}function Ut(t,e,n){ms.lastIndex=0;var i=ms.exec(e.slice(n));return i?(t.U=+i[0],n+i[0].length):-1}function Xt(t,e,n){ms.lastIndex=0;var i=ms.exec(e.slice(n));return i?(t.W=+i[0],n+i[0].length):-1}function Yt(t,e,n){ms.lastIndex=0;var i=ms.exec(e.slice(n,n+4));return i?(t.y=+i[0],n+i[0].length):-1}function Qt(t,e,n){ms.lastIndex=0;var i=ms.exec(e.slice(n,n+2));return i?(t.y=Kt(+i[0]),n+i[0].length):-1}function Zt(t,e,n){return/^[+-]\d{4}$/.test(e=e.slice(n,n+5))?(t.Z=-e,n+5):-1}function Kt(t){return t+(t>68?1900:2e3)}function Jt(t,e,n){ms.lastIndex=0;var i=ms.exec(e.slice(n,n+2));return i?(t.m=i[0]-1,n+i[0].length):-1}function te(t,e,n){ms.lastIndex=0;var i=ms.exec(e.slice(n,n+2));return i?(t.d=+i[0],n+i[0].length):-1}function ee(t,e,n){ms.lastIndex=0;var i=ms.exec(e.slice(n,n+3));return i?(t.j=+i[0],n+i[0].length):-1}function ne(t,e,n){ms.lastIndex=0;var i=ms.exec(e.slice(n,n+2));return i?(t.H=+i[0],n+i[0].length):-1}function ie(t,e,n){ms.lastIndex=0;var i=ms.exec(e.slice(n,n+2));return i?(t.M=+i[0],n+i[0].length):-1}function re(t,e,n){ms.lastIndex=0;var i=ms.exec(e.slice(n,n+2));return i?(t.S=+i[0],n+i[0].length):-1}function oe(t,e,n){ms.lastIndex=0;var i=ms.exec(e.slice(n,n+3));return i?(t.L=+i[0],n+i[0].length):-1}function ae(t){var e=t.getTimezoneOffset(),n=e>0?"-":"+",i=ya(e)/60|0,r=ya(e)%60;return n+Gt(i,"0",2)+Gt(r,"0",2)}function se(t,e,n){vs.lastIndex=0;var i=vs.exec(e.slice(n,n+1));return i?n+i[0].length:-1}function le(t){for(var e=t.length,n=-1;++n<e;)t[n][0]=this(t[n][0]);return function(e){for(var n=0,i=t[n];!i[1](e);)i=t[++n];return i[0](e)}}function ce(){}function ue(t,e,n){var i=n.s=t+e,r=i-t,o=i-r;n.t=t-o+(e-r)}function he(t,e){t&&_s.hasOwnProperty(t.type)&&_s[t.type](t,e)}function de(t,e,n){var i,r=-1,o=t.length-n;for(e.lineStart();++r<o;)i=t[r],e.point(i[0],i[1],i[2]);e.lineEnd()}function fe(t,e){var n=-1,i=t.length;for(e.polygonStart();++n<i;)de(t[n],e,1);e.polygonEnd()}function pe(){function t(t,e){t*=za,e=e*za/2+ja/4;var n=t-i,a=n>=0?1:-1,s=a*n,l=Math.cos(e),c=Math.sin(e),u=o*c,h=r*l+u*Math.cos(s),d=u*a*Math.sin(s);Ss.add(Math.atan2(d,h)),i=t,r=l,o=c}var e,n,i,r,o;Cs.point=function(a,s){Cs.point=t,i=(e=a)*za,r=Math.cos(s=(n=s)*za/2+ja/4),o=Math.sin(s)},Cs.lineEnd=function(){t(e,n)}}function ge(t){var e=t[0],n=t[1],i=Math.cos(n);return[i*Math.cos(e),i*Math.sin(e),Math.sin(n)]}function me(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function ve(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1]-t[1]*e[0]]}function ye(t,e){t[0]+=e[0],t[1]+=e[1],t[2]+=e[2]}function xe(t,e){return[t[0]*e,t[1]*e,t[2]*e]}function be(t){var e=Math.sqrt(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=e,t[1]/=e,t[2]/=e}function _e(t){return[Math.atan2(t[1],t[0]),et(t[2])]}function we(t,e){return ya(t[0]-e[0])<Da&&ya(t[1]-e[1])<Da}function Se(t,e){t*=za;var n=Math.cos(e*=za);Ce(n*Math.cos(t),n*Math.sin(t),Math.sin(e))}function Ce(t,e,n){++Ts,As+=(t-As)/Ts,Ms+=(e-Ms)/Ts,Ls+=(n-Ls)/Ts}function Te(){function t(t,r){t*=za;var o=Math.cos(r*=za),a=o*Math.cos(t),s=o*Math.sin(t),l=Math.sin(r),c=Math.atan2(Math.sqrt((c=n*l-i*s)*c+(c=i*a-e*l)*c+(c=e*s-n*a)*c),e*a+n*s+i*l);
-ks+=c,Es+=c*(e+(e=a)),Ps+=c*(n+(n=s)),Ns+=c*(i+(i=l)),Ce(e,n,i)}var e,n,i;Is.point=function(r,o){r*=za;var a=Math.cos(o*=za);e=a*Math.cos(r),n=a*Math.sin(r),i=Math.sin(o),Is.point=t,Ce(e,n,i)}}function ke(){Is.point=Se}function Ae(){function t(t,e){t*=za;var n=Math.cos(e*=za),a=n*Math.cos(t),s=n*Math.sin(t),l=Math.sin(e),c=r*l-o*s,u=o*a-i*l,h=i*s-r*a,d=Math.sqrt(c*c+u*u+h*h),f=i*a+r*s+o*l,p=d&&-tt(f)/d,g=Math.atan2(d,f);Os+=p*c,Rs+=p*u,Ds+=p*h,ks+=g,Es+=g*(i+(i=a)),Ps+=g*(r+(r=s)),Ns+=g*(o+(o=l)),Ce(i,r,o)}var e,n,i,r,o;Is.point=function(a,s){e=a,n=s,Is.point=t,a*=za;var l=Math.cos(s*=za);i=l*Math.cos(a),r=l*Math.sin(a),o=Math.sin(s),Ce(i,r,o)},Is.lineEnd=function(){t(e,n),Is.lineEnd=ke,Is.point=Se}}function Me(t,e){function n(n,i){return n=t(n,i),e(n[0],n[1])}return t.invert&&e.invert&&(n.invert=function(n,i){return n=e.invert(n,i),n&&t.invert(n[0],n[1])}),n}function Le(){return!0}function Ee(t,e,n,i,r){var o=[],a=[];if(t.forEach(function(t){if(!((e=t.length-1)<=0)){var e,n=t[0],i=t[e];if(we(n,i)){r.lineStart();for(var s=0;s<e;++s)r.point((n=t[s])[0],n[1]);return void r.lineEnd()}var l=new Ne(n,t,null,!0),c=new Ne(n,null,l,!1);l.o=c,o.push(l),a.push(c),l=new Ne(i,t,null,!1),c=new Ne(i,null,l,!0),l.o=c,o.push(l),a.push(c)}}),a.sort(e),Pe(o),Pe(a),o.length){for(var s=0,l=n,c=a.length;s<c;++s)a[s].e=l=!l;for(var u,h,d=o[0];;){for(var f=d,p=!0;f.v;)if((f=f.n)===d)return;u=f.z,r.lineStart();do{if(f.v=f.o.v=!0,f.e){if(p)for(var s=0,c=u.length;s<c;++s)r.point((h=u[s])[0],h[1]);else i(f.x,f.n.x,1,r);f=f.n}else{if(p){u=f.p.z;for(var s=u.length-1;s>=0;--s)r.point((h=u[s])[0],h[1])}else i(f.x,f.p.x,-1,r);f=f.p}f=f.o,u=f.z,p=!p}while(!f.v);r.lineEnd()}}}function Pe(t){if(e=t.length){for(var e,n,i=0,r=t[0];++i<e;)r.n=n=t[i],n.p=r,r=n;r.n=n=t[0],n.p=r}}function Ne(t,e,n,i){this.x=t,this.z=e,this.o=n,this.e=i,this.v=!1,this.n=this.p=null}function Oe(t,e,n,i){return function(r,o){function a(e,n){var i=r(e,n);t(e=i[0],n=i[1])&&o.point(e,n)}function s(t,e){var n=r(t,e);m.point(n[0],n[1])}function l(){y.point=s,m.lineStart()}function c(){y.point=a,m.lineEnd()}function u(t,e){g.push([t,e]);var n=r(t,e);b.point(n[0],n[1])}function h(){b.lineStart(),g=[]}function d(){u(g[0][0],g[0][1]),b.lineEnd();var t,e=b.clean(),n=x.buffer(),i=n.length;if(g.pop(),p.push(g),g=null,i)if(1&e){t=n[0];var r,i=t.length-1,a=-1;if(i>0){for(_||(o.polygonStart(),_=!0),o.lineStart();++a<i;)o.point((r=t[a])[0],r[1]);o.lineEnd()}}else i>1&&2&e&&n.push(n.pop().concat(n.shift())),f.push(n.filter(Re))}var f,p,g,m=e(o),v=r.invert(i[0],i[1]),y={point:a,lineStart:l,lineEnd:c,polygonStart:function(){y.point=u,y.lineStart=h,y.lineEnd=d,f=[],p=[]},polygonEnd:function(){y.point=a,y.lineStart=l,y.lineEnd=c,f=la.merge(f);var t=Fe(v,p);f.length?(_||(o.polygonStart(),_=!0),Ee(f,Ie,t,n,o)):t&&(_||(o.polygonStart(),_=!0),o.lineStart(),n(null,null,1,o),o.lineEnd()),_&&(o.polygonEnd(),_=!1),f=p=null},sphere:function(){o.polygonStart(),o.lineStart(),n(null,null,1,o),o.lineEnd(),o.polygonEnd()}},x=De(),b=e(x),_=!1;return y}}function Re(t){return t.length>1}function De(){var t,e=[];return{lineStart:function(){e.push(t=[])},point:function(e,n){t.push([e,n])},lineEnd:_,buffer:function(){var n=e;return e=[],t=null,n},rejoin:function(){e.length>1&&e.push(e.pop().concat(e.shift()))}}}function Ie(t,e){return((t=t.x)[0]<0?t[1]-Fa-Da:Fa-t[1])-((e=e.x)[0]<0?e[1]-Fa-Da:Fa-e[1])}function je(t){var e,n=NaN,i=NaN,r=NaN;return{lineStart:function(){t.lineStart(),e=1},point:function(o,a){var s=o>0?ja:-ja,l=ya(o-n);ya(l-ja)<Da?(t.point(n,i=(i+a)/2>0?Fa:-Fa),t.point(r,i),t.lineEnd(),t.lineStart(),t.point(s,i),t.point(o,i),e=0):r!==s&&l>=ja&&(ya(n-r)<Da&&(n-=r*Da),ya(o-s)<Da&&(o-=s*Da),i=He(n,i,o,a),t.point(r,i),t.lineEnd(),t.lineStart(),t.point(s,i),e=0),t.point(n=o,i=a),r=s},lineEnd:function(){t.lineEnd(),n=i=NaN},clean:function(){return 2-e}}}function He(t,e,n,i){var r,o,a=Math.sin(t-n);return ya(a)>Da?Math.atan((Math.sin(e)*(o=Math.cos(i))*Math.sin(n)-Math.sin(i)*(r=Math.cos(e))*Math.sin(t))/(r*o*a)):(e+i)/2}function Ve(t,e,n,i){var r;if(null==t)r=n*Fa,i.point(-ja,r),i.point(0,r),i.point(ja,r),i.point(ja,0),i.point(ja,-r),i.point(0,-r),i.point(-ja,-r),i.point(-ja,0),i.point(-ja,r);else if(ya(t[0]-e[0])>Da){var o=t[0]<e[0]?ja:-ja;r=n*o/2,i.point(-o,r),i.point(0,r),i.point(o,r)}else i.point(e[0],e[1])}function Fe(t,e){var n=t[0],i=t[1],r=[Math.sin(n),-Math.cos(n),0],o=0,a=0;Ss.reset();for(var s=0,l=e.length;s<l;++s){var c=e[s],u=c.length;if(u)for(var h=c[0],d=h[0],f=h[1]/2+ja/4,p=Math.sin(f),g=Math.cos(f),m=1;;){m===u&&(m=0),t=c[m];var v=t[0],y=t[1]/2+ja/4,x=Math.sin(y),b=Math.cos(y),_=v-d,w=_>=0?1:-1,S=w*_,C=S>ja,T=p*x;if(Ss.add(Math.atan2(T*w*Math.sin(S),g*b+T*Math.cos(S))),o+=C?_+w*Ha:_,C^d>=n^v>=n){var k=ve(ge(h),ge(t));be(k);var A=ve(r,k);be(A);var M=(C^_>=0?-1:1)*et(A[2]);(i>M||i===M&&(k[0]||k[1]))&&(a+=C^_>=0?1:-1)}if(!m++)break;d=v,p=x,g=b,h=t}}return(o<-Da||o<Da&&Ss<-Da)^1&a}function ze(t){function e(t,e){return Math.cos(t)*Math.cos(e)>o}function n(t){var n,o,l,c,u;return{lineStart:function(){c=l=!1,u=1},point:function(h,d){var f,p=[h,d],g=e(h,d),m=a?g?0:r(h,d):g?r(h+(h<0?ja:-ja),d):0;if(!n&&(c=l=g)&&t.lineStart(),g!==l&&(f=i(n,p),(we(n,f)||we(p,f))&&(p[0]+=Da,p[1]+=Da,g=e(p[0],p[1]))),g!==l)u=0,g?(t.lineStart(),f=i(p,n),t.point(f[0],f[1])):(f=i(n,p),t.point(f[0],f[1]),t.lineEnd()),n=f;else if(s&&n&&a^g){var v;m&o||!(v=i(p,n,!0))||(u=0,a?(t.lineStart(),t.point(v[0][0],v[0][1]),t.point(v[1][0],v[1][1]),t.lineEnd()):(t.point(v[1][0],v[1][1]),t.lineEnd(),t.lineStart(),t.point(v[0][0],v[0][1])))}!g||n&&we(n,p)||t.point(p[0],p[1]),n=p,l=g,o=m},lineEnd:function(){l&&t.lineEnd(),n=null},clean:function(){return u|(c&&l)<<1}}}function i(t,e,n){var i=ge(t),r=ge(e),a=[1,0,0],s=ve(i,r),l=me(s,s),c=s[0],u=l-c*c;if(!u)return!n&&t;var h=o*l/u,d=-o*c/u,f=ve(a,s),p=xe(a,h),g=xe(s,d);ye(p,g);var m=f,v=me(p,m),y=me(m,m),x=v*v-y*(me(p,p)-1);if(!(x<0)){var b=Math.sqrt(x),_=xe(m,(-v-b)/y);if(ye(_,p),_=_e(_),!n)return _;var w,S=t[0],C=e[0],T=t[1],k=e[1];C<S&&(w=S,S=C,C=w);var A=C-S,M=ya(A-ja)<Da,L=M||A<Da;if(!M&&k<T&&(w=T,T=k,k=w),L?M?T+k>0^_[1]<(ya(_[0]-S)<Da?T:k):T<=_[1]&&_[1]<=k:A>ja^(S<=_[0]&&_[0]<=C)){var E=xe(m,(-v+b)/y);return ye(E,p),[_,_e(E)]}}}function r(e,n){var i=a?t:ja-t,r=0;return e<-i?r|=1:e>i&&(r|=2),n<-i?r|=4:n>i&&(r|=8),r}var o=Math.cos(t),a=o>0,s=ya(o)>Da,l=gn(t,6*za);return Oe(e,n,l,a?[0,-t]:[-ja,t-ja])}function qe(t,e,n,i){return function(r){var o,a=r.a,s=r.b,l=a.x,c=a.y,u=s.x,h=s.y,d=0,f=1,p=u-l,g=h-c;if(o=t-l,p||!(o>0)){if(o/=p,p<0){if(o<d)return;o<f&&(f=o)}else if(p>0){if(o>f)return;o>d&&(d=o)}if(o=n-l,p||!(o<0)){if(o/=p,p<0){if(o>f)return;o>d&&(d=o)}else if(p>0){if(o<d)return;o<f&&(f=o)}if(o=e-c,g||!(o>0)){if(o/=g,g<0){if(o<d)return;o<f&&(f=o)}else if(g>0){if(o>f)return;o>d&&(d=o)}if(o=i-c,g||!(o<0)){if(o/=g,g<0){if(o>f)return;o>d&&(d=o)}else if(g>0){if(o<d)return;o<f&&(f=o)}return d>0&&(r.a={x:l+d*p,y:c+d*g}),f<1&&(r.b={x:l+f*p,y:c+f*g}),r}}}}}}function Ge(t,e,n,i){function r(i,r){return ya(i[0]-t)<Da?r>0?0:3:ya(i[0]-n)<Da?r>0?2:1:ya(i[1]-e)<Da?r>0?1:0:r>0?3:2}function o(t,e){return a(t.x,e.x)}function a(t,e){var n=r(t,1),i=r(e,1);return n!==i?n-i:0===n?e[1]-t[1]:1===n?t[0]-e[0]:2===n?t[1]-e[1]:e[0]-t[0]}return function(s){function l(t){for(var e=0,n=m.length,i=t[1],r=0;r<n;++r)for(var o,a=1,s=m[r],l=s.length,c=s[0];a<l;++a)o=s[a],c[1]<=i?o[1]>i&&J(c,o,t)>0&&++e:o[1]<=i&&J(c,o,t)<0&&--e,c=o;return 0!==e}function c(o,s,l,c){var u=0,h=0;if(null==o||(u=r(o,l))!==(h=r(s,l))||a(o,s)<0^l>0){do c.point(0===u||3===u?t:n,u>1?i:e);while((u=(u+l+4)%4)!==h)}else c.point(s[0],s[1])}function u(r,o){return t<=r&&r<=n&&e<=o&&o<=i}function h(t,e){u(t,e)&&s.point(t,e)}function d(){L.point=p,m&&m.push(v=[]),C=!0,S=!1,_=w=NaN}function f(){g&&(p(y,x),b&&S&&A.rejoin(),g.push(A.buffer())),L.point=h,S&&s.lineEnd()}function p(t,e){t=Math.max(-Hs,Math.min(Hs,t)),e=Math.max(-Hs,Math.min(Hs,e));var n=u(t,e);if(m&&v.push([t,e]),C)y=t,x=e,b=n,C=!1,n&&(s.lineStart(),s.point(t,e));else if(n&&S)s.point(t,e);else{var i={a:{x:_,y:w},b:{x:t,y:e}};M(i)?(S||(s.lineStart(),s.point(i.a.x,i.a.y)),s.point(i.b.x,i.b.y),n||s.lineEnd(),T=!1):n&&(s.lineStart(),s.point(t,e),T=!1)}_=t,w=e,S=n}var g,m,v,y,x,b,_,w,S,C,T,k=s,A=De(),M=qe(t,e,n,i),L={point:h,lineStart:d,lineEnd:f,polygonStart:function(){s=A,g=[],m=[],T=!0},polygonEnd:function(){s=k,g=la.merge(g);var e=l([t,i]),n=T&&e,r=g.length;(n||r)&&(s.polygonStart(),n&&(s.lineStart(),c(null,null,1,s),s.lineEnd()),r&&Ee(g,o,e,c,s),s.polygonEnd()),g=m=v=null}};return L}}function Be(t){var e=0,n=ja/3,i=sn(t),r=i(e,n);return r.parallels=function(t){return arguments.length?i(e=t[0]*ja/180,n=t[1]*ja/180):[e/ja*180,n/ja*180]},r}function $e(t,e){function n(t,e){var n=Math.sqrt(o-2*r*Math.sin(e))/r;return[n*Math.sin(t*=r),a-n*Math.cos(t)]}var i=Math.sin(t),r=(i+Math.sin(e))/2,o=1+i*(2*r-i),a=Math.sqrt(o)/r;return n.invert=function(t,e){var n=a-e;return[Math.atan2(t,n)/r,et((o-(t*t+n*n)*r*r)/(2*r))]},n}function We(){function t(t,e){Fs+=r*t-i*e,i=t,r=e}var e,n,i,r;$s.point=function(o,a){$s.point=t,e=i=o,n=r=a},$s.lineEnd=function(){t(e,n)}}function Ue(t,e){t<zs&&(zs=t),t>Gs&&(Gs=t),e<qs&&(qs=e),e>Bs&&(Bs=e)}function Xe(){function t(t,e){a.push("M",t,",",e,o)}function e(t,e){a.push("M",t,",",e),s.point=n}function n(t,e){a.push("L",t,",",e)}function i(){s.point=t}function r(){a.push("Z")}var o=Ye(4.5),a=[],s={point:t,lineStart:function(){s.point=e},lineEnd:i,polygonStart:function(){s.lineEnd=r},polygonEnd:function(){s.lineEnd=i,s.point=t},pointRadius:function(t){return o=Ye(t),s},result:function(){if(a.length){var t=a.join("");return a=[],t}}};return s}function Ye(t){return"m0,"+t+"a"+t+","+t+" 0 1,1 0,"+-2*t+"a"+t+","+t+" 0 1,1 0,"+2*t+"z"}function Qe(t,e){As+=t,Ms+=e,++Ls}function Ze(){function t(t,i){var r=t-e,o=i-n,a=Math.sqrt(r*r+o*o);Es+=a*(e+t)/2,Ps+=a*(n+i)/2,Ns+=a,Qe(e=t,n=i)}var e,n;Us.point=function(i,r){Us.point=t,Qe(e=i,n=r)}}function Ke(){Us.point=Qe}function Je(){function t(t,e){var n=t-i,o=e-r,a=Math.sqrt(n*n+o*o);Es+=a*(i+t)/2,Ps+=a*(r+e)/2,Ns+=a,a=r*t-i*e,Os+=a*(i+t),Rs+=a*(r+e),Ds+=3*a,Qe(i=t,r=e)}var e,n,i,r;Us.point=function(o,a){Us.point=t,Qe(e=i=o,n=r=a)},Us.lineEnd=function(){t(e,n)}}function tn(t){function e(e,n){t.moveTo(e+a,n),t.arc(e,n,a,0,Ha)}function n(e,n){t.moveTo(e,n),s.point=i}function i(e,n){t.lineTo(e,n)}function r(){s.point=e}function o(){t.closePath()}var a=4.5,s={point:e,lineStart:function(){s.point=n},lineEnd:r,polygonStart:function(){s.lineEnd=o},polygonEnd:function(){s.lineEnd=r,s.point=e},pointRadius:function(t){return a=t,s},result:_};return s}function en(t){function e(t){return(s?i:n)(t)}function n(e){return on(e,function(n,i){n=t(n,i),e.point(n[0],n[1])})}function i(e){function n(n,i){n=t(n,i),e.point(n[0],n[1])}function i(){x=NaN,C.point=o,e.lineStart()}function o(n,i){var o=ge([n,i]),a=t(n,i);r(x,b,y,_,w,S,x=a[0],b=a[1],y=n,_=o[0],w=o[1],S=o[2],s,e),e.point(x,b)}function a(){C.point=n,e.lineEnd()}function l(){i(),C.point=c,C.lineEnd=u}function c(t,e){o(h=t,d=e),f=x,p=b,g=_,m=w,v=S,C.point=o}function u(){r(x,b,y,_,w,S,f,p,h,g,m,v,s,e),C.lineEnd=a,a()}var h,d,f,p,g,m,v,y,x,b,_,w,S,C={point:n,lineStart:i,lineEnd:a,polygonStart:function(){e.polygonStart(),C.lineStart=l},polygonEnd:function(){e.polygonEnd(),C.lineStart=i}};return C}function r(e,n,i,s,l,c,u,h,d,f,p,g,m,v){var y=u-e,x=h-n,b=y*y+x*x;if(b>4*o&&m--){var _=s+f,w=l+p,S=c+g,C=Math.sqrt(_*_+w*w+S*S),T=Math.asin(S/=C),k=ya(ya(S)-1)<Da||ya(i-d)<Da?(i+d)/2:Math.atan2(w,_),A=t(k,T),M=A[0],L=A[1],E=M-e,P=L-n,N=x*E-y*P;(N*N/b>o||ya((y*E+x*P)/b-.5)>.3||s*f+l*p+c*g<a)&&(r(e,n,i,s,l,c,M,L,k,_/=C,w/=C,S,m,v),v.point(M,L),r(M,L,k,_,w,S,u,h,d,f,p,g,m,v))}}var o=.5,a=Math.cos(30*za),s=16;return e.precision=function(t){return arguments.length?(s=(o=t*t)>0&&16,e):Math.sqrt(o)},e}function nn(t){var e=en(function(e,n){return t([e*qa,n*qa])});return function(t){return ln(e(t))}}function rn(t){this.stream=t}function on(t,e){return{point:e,sphere:function(){t.sphere()},lineStart:function(){t.lineStart()},lineEnd:function(){t.lineEnd()},polygonStart:function(){t.polygonStart()},polygonEnd:function(){t.polygonEnd()}}}function an(t){return sn(function(){return t})()}function sn(t){function e(t){return t=s(t[0]*za,t[1]*za),[t[0]*d+l,c-t[1]*d]}function n(t){return t=s.invert((t[0]-l)/d,(c-t[1])/d),t&&[t[0]*qa,t[1]*qa]}function i(){s=Me(a=hn(v,x,b),o);var t=o(g,m);return l=f-t[0]*d,c=p+t[1]*d,r()}function r(){return u&&(u.valid=!1,u=null),e}var o,a,s,l,c,u,h=en(function(t,e){return t=o(t,e),[t[0]*d+l,c-t[1]*d]}),d=150,f=480,p=250,g=0,m=0,v=0,x=0,b=0,_=js,w=y,S=null,C=null;return e.stream=function(t){return u&&(u.valid=!1),u=ln(_(a,h(w(t)))),u.valid=!0,u},e.clipAngle=function(t){return arguments.length?(_=null==t?(S=t,js):ze((S=+t)*za),r()):S},e.clipExtent=function(t){return arguments.length?(C=t,w=t?Ge(t[0][0],t[0][1],t[1][0],t[1][1]):y,r()):C},e.scale=function(t){return arguments.length?(d=+t,i()):d},e.translate=function(t){return arguments.length?(f=+t[0],p=+t[1],i()):[f,p]},e.center=function(t){return arguments.length?(g=t[0]%360*za,m=t[1]%360*za,i()):[g*qa,m*qa]},e.rotate=function(t){return arguments.length?(v=t[0]%360*za,x=t[1]%360*za,b=t.length>2?t[2]%360*za:0,i()):[v*qa,x*qa,b*qa]},la.rebind(e,h,"precision"),function(){return o=t.apply(this,arguments),e.invert=o.invert&&n,i()}}function ln(t){return on(t,function(e,n){t.point(e*za,n*za)})}function cn(t,e){return[t,e]}function un(t,e){return[t>ja?t-Ha:t<-ja?t+Ha:t,e]}function hn(t,e,n){return t?e||n?Me(fn(t),pn(e,n)):fn(t):e||n?pn(e,n):un}function dn(t){return function(e,n){return e+=t,[e>ja?e-Ha:e<-ja?e+Ha:e,n]}}function fn(t){var e=dn(t);return e.invert=dn(-t),e}function pn(t,e){function n(t,e){var n=Math.cos(e),s=Math.cos(t)*n,l=Math.sin(t)*n,c=Math.sin(e),u=c*i+s*r;return[Math.atan2(l*o-u*a,s*i-c*r),et(u*o+l*a)]}var i=Math.cos(t),r=Math.sin(t),o=Math.cos(e),a=Math.sin(e);return n.invert=function(t,e){var n=Math.cos(e),s=Math.cos(t)*n,l=Math.sin(t)*n,c=Math.sin(e),u=c*o-l*a;return[Math.atan2(l*o+c*a,s*i+u*r),et(u*i-s*r)]},n}function gn(t,e){var n=Math.cos(t),i=Math.sin(t);return function(r,o,a,s){var l=a*e;null!=r?(r=mn(n,r),o=mn(n,o),(a>0?r<o:r>o)&&(r+=a*Ha)):(r=t+a*Ha,o=t-.5*l);for(var c,u=r;a>0?u>o:u<o;u-=l)s.point((c=_e([n,-i*Math.cos(u),-i*Math.sin(u)]))[0],c[1])}}function mn(t,e){var n=ge(e);n[0]-=t,be(n);var i=tt(-n[1]);return((-n[2]<0?-i:i)+2*Math.PI-Da)%(2*Math.PI)}function vn(t,e,n){var i=la.range(t,e-Da,n).concat(e);return function(t){return i.map(function(e){return[t,e]})}}function yn(t,e,n){var i=la.range(t,e-Da,n).concat(e);return function(t){return i.map(function(e){return[e,t]})}}function xn(t){return t.source}function bn(t){return t.target}function _n(t,e,n,i){var r=Math.cos(e),o=Math.sin(e),a=Math.cos(i),s=Math.sin(i),l=r*Math.cos(t),c=r*Math.sin(t),u=a*Math.cos(n),h=a*Math.sin(n),d=2*Math.asin(Math.sqrt(ot(i-e)+r*a*ot(n-t))),f=1/Math.sin(d),p=d?function(t){var e=Math.sin(t*=d)*f,n=Math.sin(d-t)*f,i=n*l+e*u,r=n*c+e*h,a=n*o+e*s;return[Math.atan2(r,i)*qa,Math.atan2(a,Math.sqrt(i*i+r*r))*qa]}:function(){return[t*qa,e*qa]};return p.distance=d,p}function wn(){function t(t,r){var o=Math.sin(r*=za),a=Math.cos(r),s=ya((t*=za)-e),l=Math.cos(s);Xs+=Math.atan2(Math.sqrt((s=a*Math.sin(s))*s+(s=i*o-n*a*l)*s),n*o+i*a*l),e=t,n=o,i=a}var e,n,i;Ys.point=function(r,o){e=r*za,n=Math.sin(o*=za),i=Math.cos(o),Ys.point=t},Ys.lineEnd=function(){Ys.point=Ys.lineEnd=_}}function Sn(t,e){function n(e,n){var i=Math.cos(e),r=Math.cos(n),o=t(i*r);return[o*r*Math.sin(e),o*Math.sin(n)]}return n.invert=function(t,n){var i=Math.sqrt(t*t+n*n),r=e(i),o=Math.sin(r),a=Math.cos(r);return[Math.atan2(t*o,i*a),Math.asin(i&&n*o/i)]},n}function Cn(t,e){function n(t,e){a>0?e<-Fa+Da&&(e=-Fa+Da):e>Fa-Da&&(e=Fa-Da);var n=a/Math.pow(r(e),o);return[n*Math.sin(o*t),a-n*Math.cos(o*t)]}var i=Math.cos(t),r=function(t){return Math.tan(ja/4+t/2)},o=t===e?Math.sin(t):Math.log(i/Math.cos(e))/Math.log(r(e)/r(t)),a=i*Math.pow(r(t),o)/o;return o?(n.invert=function(t,e){var n=a-e,i=K(o)*Math.sqrt(t*t+n*n);return[Math.atan2(t,n)/o,2*Math.atan(Math.pow(a/i,1/o))-Fa]},n):kn}function Tn(t,e){function n(t,e){var n=o-e;return[n*Math.sin(r*t),o-n*Math.cos(r*t)]}var i=Math.cos(t),r=t===e?Math.sin(t):(i-Math.cos(e))/(e-t),o=i/r+t;return ya(r)<Da?cn:(n.invert=function(t,e){var n=o-e;return[Math.atan2(t,n)/r,o-K(r)*Math.sqrt(t*t+n*n)]},n)}function kn(t,e){return[t,Math.log(Math.tan(ja/4+e/2))]}function An(t){var e,n=an(t),i=n.scale,r=n.translate,o=n.clipExtent;return n.scale=function(){var t=i.apply(n,arguments);return t===n?e?n.clipExtent(null):n:t},n.translate=function(){var t=r.apply(n,arguments);return t===n?e?n.clipExtent(null):n:t},n.clipExtent=function(t){var a=o.apply(n,arguments);if(a===n){if(e=null==t){var s=ja*i(),l=r();o([[l[0]-s,l[1]-s],[l[0]+s,l[1]+s]])}}else e&&(a=null);return a},n.clipExtent(null)}function Mn(t,e){return[Math.log(Math.tan(ja/4+e/2)),-t]}function Ln(t){return t[0]}function En(t){return t[1]}function Pn(t){for(var e=t.length,n=[0,1],i=2,r=2;r<e;r++){for(;i>1&&J(t[n[i-2]],t[n[i-1]],t[r])<=0;)--i;n[i++]=r}return n.slice(0,i)}function Nn(t,e){return t[0]-e[0]||t[1]-e[1]}function On(t,e,n){return(n[0]-e[0])*(t[1]-e[1])<(n[1]-e[1])*(t[0]-e[0])}function Rn(t,e,n,i){var r=t[0],o=n[0],a=e[0]-r,s=i[0]-o,l=t[1],c=n[1],u=e[1]-l,h=i[1]-c,d=(s*(l-c)-h*(r-o))/(h*a-s*u);return[r+d*a,l+d*u]}function Dn(t){var e=t[0],n=t[t.length-1];return!(e[0]-n[0]||e[1]-n[1])}function In(){ii(this),this.edge=this.site=this.circle=null}function jn(t){var e=sl.pop()||new In;return e.site=t,e}function Hn(t){Xn(t),rl.remove(t),sl.push(t),ii(t)}function Vn(t){var e=t.circle,n=e.x,i=e.cy,r={x:n,y:i},o=t.P,a=t.N,s=[t];Hn(t);for(var l=o;l.circle&&ya(n-l.circle.x)<Da&&ya(i-l.circle.cy)<Da;)o=l.P,s.unshift(l),Hn(l),l=o;s.unshift(l),Xn(l);for(var c=a;c.circle&&ya(n-c.circle.x)<Da&&ya(i-c.circle.cy)<Da;)a=c.N,s.push(c),Hn(c),c=a;s.push(c),Xn(c);var u,h=s.length;for(u=1;u<h;++u)c=s[u],l=s[u-1],ti(c.edge,l.site,c.site,r);l=s[0],c=s[h-1],c.edge=Kn(l.site,c.site,null,r),Un(l),Un(c)}function Fn(t){for(var e,n,i,r,o=t.x,a=t.y,s=rl._;s;)if(i=zn(s,a)-o,i>Da)s=s.L;else{if(r=o-qn(s,a),!(r>Da)){i>-Da?(e=s.P,n=s):r>-Da?(e=s,n=s.N):e=n=s;break}if(!s.R){e=s;break}s=s.R}var l=jn(t);if(rl.insert(e,l),e||n){if(e===n)return Xn(e),n=jn(e.site),rl.insert(l,n),l.edge=n.edge=Kn(e.site,l.site),Un(e),void Un(n);if(!n)return void(l.edge=Kn(e.site,l.site));Xn(e),Xn(n);var c=e.site,u=c.x,h=c.y,d=t.x-u,f=t.y-h,p=n.site,g=p.x-u,m=p.y-h,v=2*(d*m-f*g),y=d*d+f*f,x=g*g+m*m,b={x:(m*y-f*x)/v+u,y:(d*x-g*y)/v+h};ti(n.edge,c,p,b),l.edge=Kn(c,t,null,b),n.edge=Kn(t,p,null,b),Un(e),Un(n)}}function zn(t,e){var n=t.site,i=n.x,r=n.y,o=r-e;if(!o)return i;var a=t.P;if(!a)return-(1/0);n=a.site;var s=n.x,l=n.y,c=l-e;if(!c)return s;var u=s-i,h=1/o-1/c,d=u/c;return h?(-d+Math.sqrt(d*d-2*h*(u*u/(-2*c)-l+c/2+r-o/2)))/h+i:(i+s)/2}function qn(t,e){var n=t.N;if(n)return zn(n,e);var i=t.site;return i.y===e?i.x:1/0}function Gn(t){this.site=t,this.edges=[]}function Bn(t){for(var e,n,i,r,o,a,s,l,c,u,h=t[0][0],d=t[1][0],f=t[0][1],p=t[1][1],g=il,m=g.length;m--;)if(o=g[m],o&&o.prepare())for(s=o.edges,l=s.length,a=0;a<l;)u=s[a].end(),i=u.x,r=u.y,c=s[++a%l].start(),e=c.x,n=c.y,(ya(i-e)>Da||ya(r-n)>Da)&&(s.splice(a,0,new ei(Jn(o.site,u,ya(i-h)<Da&&p-r>Da?{x:h,y:ya(e-h)<Da?n:p}:ya(r-p)<Da&&d-i>Da?{x:ya(n-p)<Da?e:d,y:p}:ya(i-d)<Da&&r-f>Da?{x:d,y:ya(e-d)<Da?n:f}:ya(r-f)<Da&&i-h>Da?{x:ya(n-f)<Da?e:h,y:f}:null),o.site,null)),++l)}function $n(t,e){return e.angle-t.angle}function Wn(){ii(this),this.x=this.y=this.arc=this.site=this.cy=null}function Un(t){var e=t.P,n=t.N;if(e&&n){var i=e.site,r=t.site,o=n.site;if(i!==o){var a=r.x,s=r.y,l=i.x-a,c=i.y-s,u=o.x-a,h=o.y-s,d=2*(l*h-c*u);if(!(d>=-Ia)){var f=l*l+c*c,p=u*u+h*h,g=(h*f-c*p)/d,m=(l*p-u*f)/d,h=m+s,v=ll.pop()||new Wn;v.arc=t,v.site=r,v.x=g+a,v.y=h+Math.sqrt(g*g+m*m),v.cy=h,t.circle=v;for(var y=null,x=al._;x;)if(v.y<x.y||v.y===x.y&&v.x<=x.x){if(!x.L){y=x.P;break}x=x.L}else{if(!x.R){y=x;break}x=x.R}al.insert(y,v),y||(ol=v)}}}}function Xn(t){var e=t.circle;e&&(e.P||(ol=e.N),al.remove(e),ll.push(e),ii(e),t.circle=null)}function Yn(t){for(var e,n=nl,i=qe(t[0][0],t[0][1],t[1][0],t[1][1]),r=n.length;r--;)e=n[r],(!Qn(e,t)||!i(e)||ya(e.a.x-e.b.x)<Da&&ya(e.a.y-e.b.y)<Da)&&(e.a=e.b=null,n.splice(r,1))}function Qn(t,e){var n=t.b;if(n)return!0;var i,r,o=t.a,a=e[0][0],s=e[1][0],l=e[0][1],c=e[1][1],u=t.l,h=t.r,d=u.x,f=u.y,p=h.x,g=h.y,m=(d+p)/2,v=(f+g)/2;if(g===f){if(m<a||m>=s)return;if(d>p){if(o){if(o.y>=c)return}else o={x:m,y:l};n={x:m,y:c}}else{if(o){if(o.y<l)return}else o={x:m,y:c};n={x:m,y:l}}}else if(i=(d-p)/(g-f),r=v-i*m,i<-1||i>1)if(d>p){if(o){if(o.y>=c)return}else o={x:(l-r)/i,y:l};n={x:(c-r)/i,y:c}}else{if(o){if(o.y<l)return}else o={x:(c-r)/i,y:c};n={x:(l-r)/i,y:l}}else if(f<g){if(o){if(o.x>=s)return}else o={x:a,y:i*a+r};n={x:s,y:i*s+r}}else{if(o){if(o.x<a)return}else o={x:s,y:i*s+r};n={x:a,y:i*a+r}}return t.a=o,t.b=n,!0}function Zn(t,e){this.l=t,this.r=e,this.a=this.b=null}function Kn(t,e,n,i){var r=new Zn(t,e);return nl.push(r),n&&ti(r,t,e,n),i&&ti(r,e,t,i),il[t.i].edges.push(new ei(r,t,e)),il[e.i].edges.push(new ei(r,e,t)),r}function Jn(t,e,n){var i=new Zn(t,null);return i.a=e,i.b=n,nl.push(i),i}function ti(t,e,n,i){t.a||t.b?t.l===n?t.b=i:t.a=i:(t.a=i,t.l=e,t.r=n)}function ei(t,e,n){var i=t.a,r=t.b;this.edge=t,this.site=e,this.angle=n?Math.atan2(n.y-e.y,n.x-e.x):t.l===e?Math.atan2(r.x-i.x,i.y-r.y):Math.atan2(i.x-r.x,r.y-i.y)}function ni(){this._=null}function ii(t){t.U=t.C=t.L=t.R=t.P=t.N=null}function ri(t,e){var n=e,i=e.R,r=n.U;r?r.L===n?r.L=i:r.R=i:t._=i,i.U=r,n.U=i,n.R=i.L,n.R&&(n.R.U=n),i.L=n}function oi(t,e){var n=e,i=e.L,r=n.U;r?r.L===n?r.L=i:r.R=i:t._=i,i.U=r,n.U=i,n.L=i.R,n.L&&(n.L.U=n),i.R=n}function ai(t){for(;t.L;)t=t.L;return t}function si(t,e){var n,i,r,o=t.sort(li).pop();for(nl=[],il=new Array(t.length),rl=new ni,al=new ni;;)if(r=ol,o&&(!r||o.y<r.y||o.y===r.y&&o.x<r.x))o.x===n&&o.y===i||(il[o.i]=new Gn(o),Fn(o),n=o.x,i=o.y),o=t.pop();else{if(!r)break;Vn(r.arc)}e&&(Yn(e),Bn(e));var a={cells:il,edges:nl};return rl=al=nl=il=null,a}function li(t,e){return e.y-t.y||e.x-t.x}function ci(t,e,n){return(t.x-n.x)*(e.y-t.y)-(t.x-e.x)*(n.y-t.y)}function ui(t){return t.x}function hi(t){return t.y}function di(){return{leaf:!0,nodes:[],point:null,x:null,y:null}}function fi(t,e,n,i,r,o){if(!t(e,n,i,r,o)){var a=.5*(n+r),s=.5*(i+o),l=e.nodes;l[0]&&fi(t,l[0],n,i,a,s),l[1]&&fi(t,l[1],a,i,r,s),l[2]&&fi(t,l[2],n,s,a,o),l[3]&&fi(t,l[3],a,s,r,o)}}function pi(t,e,n,i,r,o,a){var s,l=1/0;return function t(c,u,h,d,f){if(!(u>o||h>a||d<i||f<r)){if(p=c.point){var p,g=e-c.x,m=n-c.y,v=g*g+m*m;if(v<l){var y=Math.sqrt(l=v);i=e-y,r=n-y,o=e+y,a=n+y,s=p}}for(var x=c.nodes,b=.5*(u+d),_=.5*(h+f),w=e>=b,S=n>=_,C=S<<1|w,T=C+4;C<T;++C)if(c=x[3&C])switch(3&C){case 0:t(c,u,h,b,_);break;case 1:t(c,b,h,d,_);break;case 2:t(c,u,_,b,f);break;case 3:t(c,b,_,d,f)}}}(t,i,r,o,a),s}function gi(t,e){t=la.rgb(t),e=la.rgb(e);var n=t.r,i=t.g,r=t.b,o=e.r-n,a=e.g-i,s=e.b-r;return function(t){return"#"+bt(Math.round(n+o*t))+bt(Math.round(i+a*t))+bt(Math.round(r+s*t))}}function mi(t,e){var n,i={},r={};for(n in t)n in e?i[n]=xi(t[n],e[n]):r[n]=t[n];for(n in e)n in t||(r[n]=e[n]);return function(t){for(n in i)r[n]=i[n](t);return r}}function vi(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}function yi(t,e){var n,i,r,o=ul.lastIndex=hl.lastIndex=0,a=-1,s=[],l=[];for(t+="",e+="";(n=ul.exec(t))&&(i=hl.exec(e));)(r=i.index)>o&&(r=e.slice(o,r),s[a]?s[a]+=r:s[++a]=r),(n=n[0])===(i=i[0])?s[a]?s[a]+=i:s[++a]=i:(s[++a]=null,l.push({i:a,x:vi(n,i)})),o=hl.lastIndex;return o<e.length&&(r=e.slice(o),s[a]?s[a]+=r:s[++a]=r),s.length<2?l[0]?(e=l[0].x,function(t){return e(t)+""}):function(){return e}:(e=l.length,function(t){for(var n,i=0;i<e;++i)s[(n=l[i]).i]=n.x(t);return s.join("")})}function xi(t,e){for(var n,i=la.interpolators.length;--i>=0&&!(n=la.interpolators[i](t,e)););return n}function bi(t,e){var n,i=[],r=[],o=t.length,a=e.length,s=Math.min(t.length,e.length);for(n=0;n<s;++n)i.push(xi(t[n],e[n]));for(;n<o;++n)r[n]=t[n];for(;n<a;++n)r[n]=e[n];return function(t){for(n=0;n<s;++n)r[n]=i[n](t);return r}}function _i(t){return function(e){return e<=0?0:e>=1?1:t(e)}}function wi(t){return function(e){return 1-t(1-e)}}function Si(t){return function(e){return.5*(e<.5?t(2*e):2-t(2-2*e))}}function Ci(t){return t*t}function Ti(t){return t*t*t}function ki(t){if(t<=0)return 0;if(t>=1)return 1;var e=t*t,n=e*t;return 4*(t<.5?n:3*(t-e)+n-.75)}function Ai(t){return function(e){return Math.pow(e,t)}}function Mi(t){return 1-Math.cos(t*Fa)}function Li(t){return Math.pow(2,10*(t-1))}function Ei(t){return 1-Math.sqrt(1-t*t)}function Pi(t,e){var n;return arguments.length<2&&(e=.45),arguments.length?n=e/Ha*Math.asin(1/t):(t=1,n=e/4),function(i){return 1+t*Math.pow(2,-10*i)*Math.sin((i-n)*Ha/e)}}function Ni(t){return t||(t=1.70158),function(e){return e*e*((t+1)*e-t)}}function Oi(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375}function Ri(t,e){t=la.hcl(t),e=la.hcl(e);var n=t.h,i=t.c,r=t.l,o=e.h-n,a=e.c-i,s=e.l-r;return isNaN(a)&&(a=0,i=isNaN(i)?e.c:i),isNaN(o)?(o=0,n=isNaN(n)?e.h:n):o>180?o-=360:o<-180&&(o+=360),function(t){return ut(n+o*t,i+a*t,r+s*t)+""}}function Di(t,e){t=la.hsl(t),e=la.hsl(e);var n=t.h,i=t.s,r=t.l,o=e.h-n,a=e.s-i,s=e.l-r;return isNaN(a)&&(a=0,i=isNaN(i)?e.s:i),isNaN(o)?(o=0,n=isNaN(n)?e.h:n):o>180?o-=360:o<-180&&(o+=360),function(t){return lt(n+o*t,i+a*t,r+s*t)+""}}function Ii(t,e){t=la.lab(t),e=la.lab(e);var n=t.l,i=t.a,r=t.b,o=e.l-n,a=e.a-i,s=e.b-r;return function(t){return dt(n+o*t,i+a*t,r+s*t)+""}}function ji(t,e){return e-=t,function(n){return Math.round(t+e*n)}}function Hi(t){var e=[t.a,t.b],n=[t.c,t.d],i=Fi(e),r=Vi(e,n),o=Fi(zi(n,e,-r))||0;e[0]*n[1]<n[0]*e[1]&&(e[0]*=-1,e[1]*=-1,i*=-1,r*=-1),this.rotate=(i?Math.atan2(e[1],e[0]):Math.atan2(-n[0],n[1]))*qa,this.translate=[t.e,t.f],this.scale=[i,o],this.skew=o?Math.atan2(r,o)*qa:0}function Vi(t,e){return t[0]*e[0]+t[1]*e[1]}function Fi(t){var e=Math.sqrt(Vi(t,t));return e&&(t[0]/=e,t[1]/=e),e}function zi(t,e,n){return t[0]+=n*e[0],t[1]+=n*e[1],t}function qi(t){return t.length?t.pop()+",":""}function Gi(t,e,n,i){if(t[0]!==e[0]||t[1]!==e[1]){var r=n.push("translate(",null,",",null,")");i.push({i:r-4,x:vi(t[0],e[0])},{i:r-2,x:vi(t[1],e[1])})}else(e[0]||e[1])&&n.push("translate("+e+")")}function Bi(t,e,n,i){t!==e?(t-e>180?e+=360:e-t>180&&(t+=360),i.push({i:n.push(qi(n)+"rotate(",null,")")-2,x:vi(t,e)})):e&&n.push(qi(n)+"rotate("+e+")")}function $i(t,e,n,i){t!==e?i.push({i:n.push(qi(n)+"skewX(",null,")")-2,x:vi(t,e)}):e&&n.push(qi(n)+"skewX("+e+")")}function Wi(t,e,n,i){if(t[0]!==e[0]||t[1]!==e[1]){var r=n.push(qi(n)+"scale(",null,",",null,")");i.push({i:r-4,x:vi(t[0],e[0])},{i:r-2,x:vi(t[1],e[1])})}else 1===e[0]&&1===e[1]||n.push(qi(n)+"scale("+e+")")}function Ui(t,e){var n=[],i=[];return t=la.transform(t),e=la.transform(e),Gi(t.translate,e.translate,n,i),Bi(t.rotate,e.rotate,n,i),$i(t.skew,e.skew,n,i),Wi(t.scale,e.scale,n,i),t=e=null,function(t){for(var e,r=-1,o=i.length;++r<o;)n[(e=i[r]).i]=e.x(t);return n.join("")}}function Xi(t,e){return e=(e-=t=+t)||1/e,function(n){return(n-t)/e}}function Yi(t,e){return e=(e-=t=+t)||1/e,function(n){return Math.max(0,Math.min(1,(n-t)/e))}}function Qi(t){for(var e=t.source,n=t.target,i=Ki(e,n),r=[e];e!==i;)e=e.parent,r.push(e);for(var o=r.length;n!==i;)r.splice(o,0,n),n=n.parent;return r}function Zi(t){for(var e=[],n=t.parent;null!=n;)e.push(t),t=n,n=n.parent;return e.push(t),e}function Ki(t,e){if(t===e)return t;for(var n=Zi(t),i=Zi(e),r=n.pop(),o=i.pop(),a=null;r===o;)a=r,r=n.pop(),o=i.pop();return a}function Ji(t){t.fixed|=2}function tr(t){t.fixed&=-7}function er(t){t.fixed|=4,t.px=t.x,t.py=t.y}function nr(t){t.fixed&=-5}function ir(t,e,n){var i=0,r=0;if(t.charge=0,!t.leaf)for(var o,a=t.nodes,s=a.length,l=-1;++l<s;)o=a[l],null!=o&&(ir(o,e,n),t.charge+=o.charge,i+=o.charge*o.cx,r+=o.charge*o.cy);if(t.point){t.leaf||(t.point.x+=Math.random()-.5,t.point.y+=Math.random()-.5);var c=e*n[t.point.index];t.charge+=t.pointCharge=c,i+=c*t.point.x,r+=c*t.point.y}t.cx=i/t.charge,t.cy=r/t.charge}function rr(t,e){return la.rebind(t,e,"sort","children","value"),t.nodes=t,t.links=ur,t}function or(t,e){for(var n=[t];null!=(t=n.pop());)if(e(t),(r=t.children)&&(i=r.length))for(var i,r;--i>=0;)n.push(r[i])}function ar(t,e){for(var n=[t],i=[];null!=(t=n.pop());)if(i.push(t),(o=t.children)&&(r=o.length))for(var r,o,a=-1;++a<r;)n.push(o[a]);for(;null!=(t=i.pop());)e(t)}function sr(t){return t.children}function lr(t){return t.value}function cr(t,e){return e.value-t.value}function ur(t){return la.merge(t.map(function(t){return(t.children||[]).map(function(e){return{source:t,target:e}})}))}function hr(t){return t.x}function dr(t){return t.y}function fr(t,e,n){t.y0=e,t.y=n}function pr(t){return la.range(t.length)}function gr(t){for(var e=-1,n=t[0].length,i=[];++e<n;)i[e]=0;return i}function mr(t){for(var e,n=1,i=0,r=t[0][1],o=t.length;n<o;++n)(e=t[n][1])>r&&(i=n,r=e);return i}function vr(t){return t.reduce(yr,0)}function yr(t,e){return t+e[1]}function xr(t,e){return br(t,Math.ceil(Math.log(e.length)/Math.LN2+1))}function br(t,e){for(var n=-1,i=+t[0],r=(t[1]-i)/e,o=[];++n<=e;)o[n]=r*n+i;return o}function _r(t){return[la.min(t),la.max(t)]}function wr(t,e){return t.value-e.value}function Sr(t,e){var n=t._pack_next;t._pack_next=e,e._pack_prev=t,e._pack_next=n,n._pack_prev=e}function Cr(t,e){t._pack_next=e,e._pack_prev=t}function Tr(t,e){var n=e.x-t.x,i=e.y-t.y,r=t.r+e.r;return.999*r*r>n*n+i*i}function kr(t){function e(t){u=Math.min(t.x-t.r,u),h=Math.max(t.x+t.r,h),d=Math.min(t.y-t.r,d),f=Math.max(t.y+t.r,f)}if((n=t.children)&&(c=n.length)){var n,i,r,o,a,s,l,c,u=1/0,h=-(1/0),d=1/0,f=-(1/0);if(n.forEach(Ar),i=n[0],i.x=-i.r,i.y=0,e(i),c>1&&(r=n[1],r.x=r.r,r.y=0,e(r),c>2))for(o=n[2],Er(i,r,o),e(o),Sr(i,o),i._pack_prev=o,Sr(o,r),r=i._pack_next,a=3;a<c;a++){Er(i,r,o=n[a]);var p=0,g=1,m=1;for(s=r._pack_next;s!==r;s=s._pack_next,g++)if(Tr(s,o)){p=1;break}if(1==p)for(l=i._pack_prev;l!==s._pack_prev&&!Tr(l,o);l=l._pack_prev,m++);p?(g<m||g==m&&r.r<i.r?Cr(i,r=s):Cr(i=l,r),a--):(Sr(i,o),r=o,e(o))}var v=(u+h)/2,y=(d+f)/2,x=0;for(a=0;a<c;a++)o=n[a],o.x-=v,o.y-=y,x=Math.max(x,o.r+Math.sqrt(o.x*o.x+o.y*o.y));t.r=x,n.forEach(Mr)}}function Ar(t){t._pack_next=t._pack_prev=t}function Mr(t){delete t._pack_next,delete t._pack_prev}function Lr(t,e,n,i){var r=t.children;if(t.x=e+=i*t.x,t.y=n+=i*t.y,t.r*=i,r)for(var o=-1,a=r.length;++o<a;)Lr(r[o],e,n,i)}function Er(t,e,n){var i=t.r+n.r,r=e.x-t.x,o=e.y-t.y;if(i&&(r||o)){var a=e.r+n.r,s=r*r+o*o;a*=a,i*=i;var l=.5+(i-a)/(2*s),c=Math.sqrt(Math.max(0,2*a*(i+s)-(i-=s)*i-a*a))/(2*s);n.x=t.x+l*r+c*o,n.y=t.y+l*o-c*r}else n.x=t.x+i,n.y=t.y}function Pr(t,e){return t.parent==e.parent?1:2}function Nr(t){var e=t.children;return e.length?e[0]:t.t}function Or(t){var e,n=t.children;return(e=n.length)?n[e-1]:t.t}function Rr(t,e,n){var i=n/(e.i-t.i);e.c-=i,e.s+=n,t.c+=i,e.z+=n,e.m+=n}function Dr(t){for(var e,n=0,i=0,r=t.children,o=r.length;--o>=0;)e=r[o],e.z+=n,e.m+=n,n+=e.s+(i+=e.c)}function Ir(t,e,n){return t.a.parent===e.parent?t.a:n}function jr(t){return 1+la.max(t,function(t){return t.y})}function Hr(t){return t.reduce(function(t,e){return t+e.x},0)/t.length}function Vr(t){var e=t.children;return e&&e.length?Vr(e[0]):t}function Fr(t){var e,n=t.children;return n&&(e=n.length)?Fr(n[e-1]):t}function zr(t){return{x:t.x,y:t.y,dx:t.dx,dy:t.dy}}function qr(t,e){var n=t.x+e[3],i=t.y+e[0],r=t.dx-e[1]-e[3],o=t.dy-e[0]-e[2];return r<0&&(n+=r/2,r=0),o<0&&(i+=o/2,o=0),{x:n,y:i,dx:r,dy:o}}function Gr(t){var e=t[0],n=t[t.length-1];return e<n?[e,n]:[n,e]}function Br(t){return t.rangeExtent?t.rangeExtent():Gr(t.range())}function $r(t,e,n,i){var r=n(t[0],t[1]),o=i(e[0],e[1]);return function(t){return o(r(t))}}function Wr(t,e){var n,i=0,r=t.length-1,o=t[i],a=t[r];return a<o&&(n=i,i=r,r=n,n=o,o=a,a=n),t[i]=e.floor(o),t[r]=e.ceil(a),t}function Ur(t){return t?{floor:function(e){return Math.floor(e/t)*t},ceil:function(e){return Math.ceil(e/t)*t}}:wl}function Xr(t,e,n,i){var r=[],o=[],a=0,s=Math.min(t.length,e.length)-1;for(t[s]<t[0]&&(t=t.slice().reverse(),
-e=e.slice().reverse());++a<=s;)r.push(n(t[a-1],t[a])),o.push(i(e[a-1],e[a]));return function(e){var n=la.bisect(t,e,1,s)-1;return o[n](r[n](e))}}function Yr(t,e,n,i){function r(){var r=Math.min(t.length,e.length)>2?Xr:$r,l=i?Yi:Xi;return a=r(t,e,l,n),s=r(e,t,l,xi),o}function o(t){return a(t)}var a,s;return o.invert=function(t){return s(t)},o.domain=function(e){return arguments.length?(t=e.map(Number),r()):t},o.range=function(t){return arguments.length?(e=t,r()):e},o.rangeRound=function(t){return o.range(t).interpolate(ji)},o.clamp=function(t){return arguments.length?(i=t,r()):i},o.interpolate=function(t){return arguments.length?(n=t,r()):n},o.ticks=function(e){return Jr(t,e)},o.tickFormat=function(e,n){return to(t,e,n)},o.nice=function(e){return Zr(t,e),r()},o.copy=function(){return Yr(t,e,n,i)},r()}function Qr(t,e){return la.rebind(t,e,"range","rangeRound","interpolate","clamp")}function Zr(t,e){return Wr(t,Ur(Kr(t,e)[2])),Wr(t,Ur(Kr(t,e)[2])),t}function Kr(t,e){null==e&&(e=10);var n=Gr(t),i=n[1]-n[0],r=Math.pow(10,Math.floor(Math.log(i/e)/Math.LN10)),o=e/i*r;return o<=.15?r*=10:o<=.35?r*=5:o<=.75&&(r*=2),n[0]=Math.ceil(n[0]/r)*r,n[1]=Math.floor(n[1]/r)*r+.5*r,n[2]=r,n}function Jr(t,e){return la.range.apply(la,Kr(t,e))}function to(t,e,n){var i=Kr(t,e);if(n){var r=us.exec(n);if(r.shift(),"s"===r[8]){var o=la.formatPrefix(Math.max(ya(i[0]),ya(i[1])));return r[7]||(r[7]="."+eo(o.scale(i[2]))),r[8]="f",n=la.format(r.join("")),function(t){return n(o.scale(t))+o.symbol}}r[7]||(r[7]="."+no(r[8],i)),n=r.join("")}else n=",."+eo(i[2])+"f";return la.format(n)}function eo(t){return-Math.floor(Math.log(t)/Math.LN10+.01)}function no(t,e){var n=eo(e[2]);return t in Sl?Math.abs(n-eo(Math.max(ya(e[0]),ya(e[1]))))+ +("e"!==t):n-2*("%"===t)}function io(t,e,n,i){function r(t){return(n?Math.log(t<0?0:t):-Math.log(t>0?0:-t))/Math.log(e)}function o(t){return n?Math.pow(e,t):-Math.pow(e,-t)}function a(e){return t(r(e))}return a.invert=function(e){return o(t.invert(e))},a.domain=function(e){return arguments.length?(n=e[0]>=0,t.domain((i=e.map(Number)).map(r)),a):i},a.base=function(n){return arguments.length?(e=+n,t.domain(i.map(r)),a):e},a.nice=function(){var e=Wr(i.map(r),n?Math:Tl);return t.domain(e),i=e.map(o),a},a.ticks=function(){var t=Gr(i),a=[],s=t[0],l=t[1],c=Math.floor(r(s)),u=Math.ceil(r(l)),h=e%1?2:e;if(isFinite(u-c)){if(n){for(;c<u;c++)for(var d=1;d<h;d++)a.push(o(c)*d);a.push(o(c))}else for(a.push(o(c));c++<u;)for(var d=h-1;d>0;d--)a.push(o(c)*d);for(c=0;a[c]<s;c++);for(u=a.length;a[u-1]>l;u--);a=a.slice(c,u)}return a},a.tickFormat=function(t,n){if(!arguments.length)return Cl;arguments.length<2?n=Cl:"function"!=typeof n&&(n=la.format(n));var i=Math.max(1,e*t/a.ticks().length);return function(t){var a=t/o(Math.round(r(t)));return a*e<e-.5&&(a*=e),a<=i?n(t):""}},a.copy=function(){return io(t.copy(),e,n,i)},Qr(a,t)}function ro(t,e,n){function i(e){return t(r(e))}var r=oo(e),o=oo(1/e);return i.invert=function(e){return o(t.invert(e))},i.domain=function(e){return arguments.length?(t.domain((n=e.map(Number)).map(r)),i):n},i.ticks=function(t){return Jr(n,t)},i.tickFormat=function(t,e){return to(n,t,e)},i.nice=function(t){return i.domain(Zr(n,t))},i.exponent=function(a){return arguments.length?(r=oo(e=a),o=oo(1/e),t.domain(n.map(r)),i):e},i.copy=function(){return ro(t.copy(),e,n)},Qr(i,t)}function oo(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}function ao(t,e){function n(n){return o[((r.get(n)||("range"===e.t?r.set(n,t.push(n)):NaN))-1)%o.length]}function i(e,n){return la.range(t.length).map(function(t){return e+n*t})}var r,o,a;return n.domain=function(i){if(!arguments.length)return t;t=[],r=new c;for(var o,a=-1,s=i.length;++a<s;)r.has(o=i[a])||r.set(o,t.push(o));return n[e.t].apply(n,e.a)},n.range=function(t){return arguments.length?(o=t,a=0,e={t:"range",a:arguments},n):o},n.rangePoints=function(r,s){arguments.length<2&&(s=0);var l=r[0],c=r[1],u=t.length<2?(l=(l+c)/2,0):(c-l)/(t.length-1+s);return o=i(l+u*s/2,u),a=0,e={t:"rangePoints",a:arguments},n},n.rangeRoundPoints=function(r,s){arguments.length<2&&(s=0);var l=r[0],c=r[1],u=t.length<2?(l=c=Math.round((l+c)/2),0):(c-l)/(t.length-1+s)|0;return o=i(l+Math.round(u*s/2+(c-l-(t.length-1+s)*u)/2),u),a=0,e={t:"rangeRoundPoints",a:arguments},n},n.rangeBands=function(r,s,l){arguments.length<2&&(s=0),arguments.length<3&&(l=s);var c=r[1]<r[0],u=r[c-0],h=r[1-c],d=(h-u)/(t.length-s+2*l);return o=i(u+d*l,d),c&&o.reverse(),a=d*(1-s),e={t:"rangeBands",a:arguments},n},n.rangeRoundBands=function(r,s,l){arguments.length<2&&(s=0),arguments.length<3&&(l=s);var c=r[1]<r[0],u=r[c-0],h=r[1-c],d=Math.floor((h-u)/(t.length-s+2*l));return o=i(u+Math.round((h-u-(t.length-s)*d)/2),d),c&&o.reverse(),a=Math.round(d*(1-s)),e={t:"rangeRoundBands",a:arguments},n},n.rangeBand=function(){return a},n.rangeExtent=function(){return Gr(e.a[0])},n.copy=function(){return ao(t,e)},n.domain(t)}function so(t,e){function o(){var n=0,i=e.length;for(s=[];++n<i;)s[n-1]=la.quantile(t,n/i);return a}function a(t){if(!isNaN(t=+t))return e[la.bisect(s,t)]}var s;return a.domain=function(e){return arguments.length?(t=e.map(i).filter(r).sort(n),o()):t},a.range=function(t){return arguments.length?(e=t,o()):e},a.quantiles=function(){return s},a.invertExtent=function(n){return n=e.indexOf(n),n<0?[NaN,NaN]:[n>0?s[n-1]:t[0],n<s.length?s[n]:t[t.length-1]]},a.copy=function(){return so(t,e)},o()}function lo(t,e,n){function i(e){return n[Math.max(0,Math.min(a,Math.floor(o*(e-t))))]}function r(){return o=n.length/(e-t),a=n.length-1,i}var o,a;return i.domain=function(n){return arguments.length?(t=+n[0],e=+n[n.length-1],r()):[t,e]},i.range=function(t){return arguments.length?(n=t,r()):n},i.invertExtent=function(e){return e=n.indexOf(e),e=e<0?NaN:e/o+t,[e,e+1/o]},i.copy=function(){return lo(t,e,n)},r()}function co(t,e){function n(n){if(n<=n)return e[la.bisect(t,n)]}return n.domain=function(e){return arguments.length?(t=e,n):t},n.range=function(t){return arguments.length?(e=t,n):e},n.invertExtent=function(n){return n=e.indexOf(n),[t[n-1],t[n]]},n.copy=function(){return co(t,e)},n}function uo(t){function e(t){return+t}return e.invert=e,e.domain=e.range=function(n){return arguments.length?(t=n.map(e),e):t},e.ticks=function(e){return Jr(t,e)},e.tickFormat=function(e,n){return to(t,e,n)},e.copy=function(){return uo(t)},e}function ho(){return 0}function fo(t){return t.innerRadius}function po(t){return t.outerRadius}function go(t){return t.startAngle}function mo(t){return t.endAngle}function vo(t){return t&&t.padAngle}function yo(t,e,n,i){return(t-n)*e-(e-i)*t>0?0:1}function xo(t,e,n,i,r){var o=t[0]-e[0],a=t[1]-e[1],s=(r?i:-i)/Math.sqrt(o*o+a*a),l=s*a,c=-s*o,u=t[0]+l,h=t[1]+c,d=e[0]+l,f=e[1]+c,p=(u+d)/2,g=(h+f)/2,m=d-u,v=f-h,y=m*m+v*v,x=n-i,b=u*f-d*h,_=(v<0?-1:1)*Math.sqrt(Math.max(0,x*x*y-b*b)),w=(b*v-m*_)/y,S=(-b*m-v*_)/y,C=(b*v+m*_)/y,T=(-b*m+v*_)/y,k=w-p,A=S-g,M=C-p,L=T-g;return k*k+A*A>M*M+L*L&&(w=C,S=T),[[w-l,S-c],[w*n/x,S*n/x]]}function bo(t){function e(e){function a(){c.push("M",o(t(u),s))}for(var l,c=[],u=[],h=-1,d=e.length,f=kt(n),p=kt(i);++h<d;)r.call(this,l=e[h],h)?u.push([+f.call(this,l,h),+p.call(this,l,h)]):u.length&&(a(),u=[]);return u.length&&a(),c.length?c.join(""):null}var n=Ln,i=En,r=Le,o=_o,a=o.key,s=.7;return e.x=function(t){return arguments.length?(n=t,e):n},e.y=function(t){return arguments.length?(i=t,e):i},e.defined=function(t){return arguments.length?(r=t,e):r},e.interpolate=function(t){return arguments.length?(a="function"==typeof t?o=t:(o=Pl.get(t)||_o).key,e):a},e.tension=function(t){return arguments.length?(s=t,e):s},e}function _o(t){return t.length>1?t.join("L"):t+"Z"}function wo(t){return t.join("L")+"Z"}function So(t){for(var e=0,n=t.length,i=t[0],r=[i[0],",",i[1]];++e<n;)r.push("H",(i[0]+(i=t[e])[0])/2,"V",i[1]);return n>1&&r.push("H",i[0]),r.join("")}function Co(t){for(var e=0,n=t.length,i=t[0],r=[i[0],",",i[1]];++e<n;)r.push("V",(i=t[e])[1],"H",i[0]);return r.join("")}function To(t){for(var e=0,n=t.length,i=t[0],r=[i[0],",",i[1]];++e<n;)r.push("H",(i=t[e])[0],"V",i[1]);return r.join("")}function ko(t,e){return t.length<4?_o(t):t[1]+Lo(t.slice(1,-1),Eo(t,e))}function Ao(t,e){return t.length<3?wo(t):t[0]+Lo((t.push(t[0]),t),Eo([t[t.length-2]].concat(t,[t[1]]),e))}function Mo(t,e){return t.length<3?_o(t):t[0]+Lo(t,Eo(t,e))}function Lo(t,e){if(e.length<1||t.length!=e.length&&t.length!=e.length+2)return _o(t);var n=t.length!=e.length,i="",r=t[0],o=t[1],a=e[0],s=a,l=1;if(n&&(i+="Q"+(o[0]-2*a[0]/3)+","+(o[1]-2*a[1]/3)+","+o[0]+","+o[1],r=t[1],l=2),e.length>1){s=e[1],o=t[l],l++,i+="C"+(r[0]+a[0])+","+(r[1]+a[1])+","+(o[0]-s[0])+","+(o[1]-s[1])+","+o[0]+","+o[1];for(var c=2;c<e.length;c++,l++)o=t[l],s=e[c],i+="S"+(o[0]-s[0])+","+(o[1]-s[1])+","+o[0]+","+o[1]}if(n){var u=t[l];i+="Q"+(o[0]+2*s[0]/3)+","+(o[1]+2*s[1]/3)+","+u[0]+","+u[1]}return i}function Eo(t,e){for(var n,i=[],r=(1-e)/2,o=t[0],a=t[1],s=1,l=t.length;++s<l;)n=o,o=a,a=t[s],i.push([r*(a[0]-n[0]),r*(a[1]-n[1])]);return i}function Po(t){if(t.length<3)return _o(t);var e=1,n=t.length,i=t[0],r=i[0],o=i[1],a=[r,r,r,(i=t[1])[0]],s=[o,o,o,i[1]],l=[r,",",o,"L",Do(Rl,a),",",Do(Rl,s)];for(t.push(t[n-1]);++e<=n;)i=t[e],a.shift(),a.push(i[0]),s.shift(),s.push(i[1]),Io(l,a,s);return t.pop(),l.push("L",i),l.join("")}function No(t){if(t.length<4)return _o(t);for(var e,n=[],i=-1,r=t.length,o=[0],a=[0];++i<3;)e=t[i],o.push(e[0]),a.push(e[1]);for(n.push(Do(Rl,o)+","+Do(Rl,a)),--i;++i<r;)e=t[i],o.shift(),o.push(e[0]),a.shift(),a.push(e[1]),Io(n,o,a);return n.join("")}function Oo(t){for(var e,n,i=-1,r=t.length,o=r+4,a=[],s=[];++i<4;)n=t[i%r],a.push(n[0]),s.push(n[1]);for(e=[Do(Rl,a),",",Do(Rl,s)],--i;++i<o;)n=t[i%r],a.shift(),a.push(n[0]),s.shift(),s.push(n[1]),Io(e,a,s);return e.join("")}function Ro(t,e){var n=t.length-1;if(n)for(var i,r,o=t[0][0],a=t[0][1],s=t[n][0]-o,l=t[n][1]-a,c=-1;++c<=n;)i=t[c],r=c/n,i[0]=e*i[0]+(1-e)*(o+r*s),i[1]=e*i[1]+(1-e)*(a+r*l);return Po(t)}function Do(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]+t[3]*e[3]}function Io(t,e,n){t.push("C",Do(Nl,e),",",Do(Nl,n),",",Do(Ol,e),",",Do(Ol,n),",",Do(Rl,e),",",Do(Rl,n))}function jo(t,e){return(e[1]-t[1])/(e[0]-t[0])}function Ho(t){for(var e=0,n=t.length-1,i=[],r=t[0],o=t[1],a=i[0]=jo(r,o);++e<n;)i[e]=(a+(a=jo(r=o,o=t[e+1])))/2;return i[e]=a,i}function Vo(t){for(var e,n,i,r,o=[],a=Ho(t),s=-1,l=t.length-1;++s<l;)e=jo(t[s],t[s+1]),ya(e)<Da?a[s]=a[s+1]=0:(n=a[s]/e,i=a[s+1]/e,r=n*n+i*i,r>9&&(r=3*e/Math.sqrt(r),a[s]=r*n,a[s+1]=r*i));for(s=-1;++s<=l;)r=(t[Math.min(l,s+1)][0]-t[Math.max(0,s-1)][0])/(6*(1+a[s]*a[s])),o.push([r||0,a[s]*r||0]);return o}function Fo(t){return t.length<3?_o(t):t[0]+Lo(t,Vo(t))}function zo(t){for(var e,n,i,r=-1,o=t.length;++r<o;)e=t[r],n=e[0],i=e[1]-Fa,e[0]=n*Math.cos(i),e[1]=n*Math.sin(i);return t}function qo(t){function e(e){function l(){g.push("M",s(t(v),h),u,c(t(m.reverse()),h),"Z")}for(var d,f,p,g=[],m=[],v=[],y=-1,x=e.length,b=kt(n),_=kt(r),w=n===i?function(){return f}:kt(i),S=r===o?function(){return p}:kt(o);++y<x;)a.call(this,d=e[y],y)?(m.push([f=+b.call(this,d,y),p=+_.call(this,d,y)]),v.push([+w.call(this,d,y),+S.call(this,d,y)])):m.length&&(l(),m=[],v=[]);return m.length&&l(),g.length?g.join(""):null}var n=Ln,i=Ln,r=0,o=En,a=Le,s=_o,l=s.key,c=s,u="L",h=.7;return e.x=function(t){return arguments.length?(n=i=t,e):i},e.x0=function(t){return arguments.length?(n=t,e):n},e.x1=function(t){return arguments.length?(i=t,e):i},e.y=function(t){return arguments.length?(r=o=t,e):o},e.y0=function(t){return arguments.length?(r=t,e):r},e.y1=function(t){return arguments.length?(o=t,e):o},e.defined=function(t){return arguments.length?(a=t,e):a},e.interpolate=function(t){return arguments.length?(l="function"==typeof t?s=t:(s=Pl.get(t)||_o).key,c=s.reverse||s,u=s.closed?"M":"L",e):l},e.tension=function(t){return arguments.length?(h=t,e):h},e}function Go(t){return t.radius}function Bo(t){return[t.x,t.y]}function $o(t){return function(){var e=t.apply(this,arguments),n=e[0],i=e[1]-Fa;return[n*Math.cos(i),n*Math.sin(i)]}}function Wo(){return 64}function Uo(){return"circle"}function Xo(t){var e=Math.sqrt(t/ja);return"M0,"+e+"A"+e+","+e+" 0 1,1 0,"+-e+"A"+e+","+e+" 0 1,1 0,"+e+"Z"}function Yo(t){return function(){var e,n,i;(e=this[t])&&(i=e[n=e.active])&&(i.timer.c=null,i.timer.t=NaN,--e.count?delete e[n]:delete this[t],e.active+=.5,i.event&&i.event.interrupt.call(this,this.__data__,i.index))}}function Qo(t,e,n){return Sa(t,zl),t.namespace=e,t.id=n,t}function Zo(t,e,n,i){var r=t.id,o=t.namespace;return G(t,"function"==typeof n?function(t,a,s){t[o][r].tween.set(e,i(n.call(t,t.__data__,a,s)))}:(n=i(n),function(t){t[o][r].tween.set(e,n)}))}function Ko(t){return null==t&&(t=""),function(){this.textContent=t}}function Jo(t){return null==t?"__transition__":"__transition_"+t+"__"}function ta(t,e,n,i,r){function o(t){var e=g.delay;return u.t=e+l,e<=t?a(t-e):void(u.c=a)}function a(n){var r=p.active,o=p[r];o&&(o.timer.c=null,o.timer.t=NaN,--p.count,delete p[r],o.event&&o.event.interrupt.call(t,t.__data__,o.index));for(var a in p)if(+a<i){var c=p[a];c.timer.c=null,c.timer.t=NaN,--p.count,delete p[a]}u.c=s,Pt(function(){return u.c&&s(n||1)&&(u.c=null,u.t=NaN),1},0,l),p.active=i,g.event&&g.event.start.call(t,t.__data__,e),f=[],g.tween.forEach(function(n,i){(i=i.call(t,t.__data__,e))&&f.push(i)}),d=g.ease,h=g.duration}function s(r){for(var o=r/h,a=d(o),s=f.length;s>0;)f[--s].call(t,a);if(o>=1)return g.event&&g.event.end.call(t,t.__data__,e),--p.count?delete p[i]:delete t[n],1}var l,u,h,d,f,p=t[n]||(t[n]={active:0,count:0}),g=p[i];g||(l=r.time,u=Pt(o,0,l),g=p[i]={tween:new c,time:l,timer:u,delay:r.delay,duration:r.duration,ease:r.ease,index:e},r=null,++p.count)}function ea(t,e,n){t.attr("transform",function(t){var i=e(t);return"translate("+(isFinite(i)?i:n(t))+",0)"})}function na(t,e,n){t.attr("transform",function(t){var i=e(t);return"translate(0,"+(isFinite(i)?i:n(t))+")"})}function ia(t){return t.toISOString()}function ra(t,e,n){function i(e){return t(e)}function r(t,n){var i=t[1]-t[0],r=i/n,o=la.bisect(Ql,r);return o==Ql.length?[e.year,Kr(t.map(function(t){return t/31536e6}),n)[2]]:o?e[r/Ql[o-1]<Ql[o]/r?o-1:o]:[Jl,Kr(t,n)[2]]}return i.invert=function(e){return oa(t.invert(e))},i.domain=function(e){return arguments.length?(t.domain(e),i):t.domain().map(oa)},i.nice=function(t,e){function n(n){return!isNaN(n)&&!t.range(n,oa(+n+1),e).length}var o=i.domain(),a=Gr(o),s=null==t?r(a,10):"number"==typeof t&&r(a,t);return s&&(t=s[0],e=s[1]),i.domain(Wr(o,e>1?{floor:function(e){for(;n(e=t.floor(e));)e=oa(e-1);return e},ceil:function(e){for(;n(e=t.ceil(e));)e=oa(+e+1);return e}}:t))},i.ticks=function(t,e){var n=Gr(i.domain()),o=null==t?r(n,10):"number"==typeof t?r(n,t):!t.range&&[{range:t},e];return o&&(t=o[0],e=o[1]),t.range(n[0],oa(+n[1]+1),e<1?1:e)},i.tickFormat=function(){return n},i.copy=function(){return ra(t.copy(),e,n)},Qr(i,t)}function oa(t){return new Date(t)}function aa(t){return JSON.parse(t.responseText)}function sa(t){var e=ha.createRange();return e.selectNode(ha.body),e.createContextualFragment(t.responseText)}var la={version:"3.5.17"},ca=[].slice,ua=function(t){return ca.call(t)},ha=this.document;if(ha)try{ua(ha.documentElement.childNodes)[0].nodeType}catch(t){ua=function(t){for(var e=t.length,n=new Array(e);e--;)n[e]=t[e];return n}}if(Date.now||(Date.now=function(){return+new Date}),ha)try{ha.createElement("DIV").style.setProperty("opacity",0,"")}catch(t){var da=this.Element.prototype,fa=da.setAttribute,pa=da.setAttributeNS,ga=this.CSSStyleDeclaration.prototype,ma=ga.setProperty;da.setAttribute=function(t,e){fa.call(this,t,e+"")},da.setAttributeNS=function(t,e,n){pa.call(this,t,e,n+"")},ga.setProperty=function(t,e,n){ma.call(this,t,e+"",n)}}la.ascending=n,la.descending=function(t,e){return e<t?-1:e>t?1:e>=t?0:NaN},la.min=function(t,e){var n,i,r=-1,o=t.length;if(1===arguments.length){for(;++r<o;)if(null!=(i=t[r])&&i>=i){n=i;break}for(;++r<o;)null!=(i=t[r])&&n>i&&(n=i)}else{for(;++r<o;)if(null!=(i=e.call(t,t[r],r))&&i>=i){n=i;break}for(;++r<o;)null!=(i=e.call(t,t[r],r))&&n>i&&(n=i)}return n},la.max=function(t,e){var n,i,r=-1,o=t.length;if(1===arguments.length){for(;++r<o;)if(null!=(i=t[r])&&i>=i){n=i;break}for(;++r<o;)null!=(i=t[r])&&i>n&&(n=i)}else{for(;++r<o;)if(null!=(i=e.call(t,t[r],r))&&i>=i){n=i;break}for(;++r<o;)null!=(i=e.call(t,t[r],r))&&i>n&&(n=i)}return n},la.extent=function(t,e){var n,i,r,o=-1,a=t.length;if(1===arguments.length){for(;++o<a;)if(null!=(i=t[o])&&i>=i){n=r=i;break}for(;++o<a;)null!=(i=t[o])&&(n>i&&(n=i),r<i&&(r=i))}else{for(;++o<a;)if(null!=(i=e.call(t,t[o],o))&&i>=i){n=r=i;break}for(;++o<a;)null!=(i=e.call(t,t[o],o))&&(n>i&&(n=i),r<i&&(r=i))}return[n,r]},la.sum=function(t,e){var n,i=0,o=t.length,a=-1;if(1===arguments.length)for(;++a<o;)r(n=+t[a])&&(i+=n);else for(;++a<o;)r(n=+e.call(t,t[a],a))&&(i+=n);return i},la.mean=function(t,e){var n,o=0,a=t.length,s=-1,l=a;if(1===arguments.length)for(;++s<a;)r(n=i(t[s]))?o+=n:--l;else for(;++s<a;)r(n=i(e.call(t,t[s],s)))?o+=n:--l;if(l)return o/l},la.quantile=function(t,e){var n=(t.length-1)*e+1,i=Math.floor(n),r=+t[i-1],o=n-i;return o?r+o*(t[i]-r):r},la.median=function(t,e){var o,a=[],s=t.length,l=-1;if(1===arguments.length)for(;++l<s;)r(o=i(t[l]))&&a.push(o);else for(;++l<s;)r(o=i(e.call(t,t[l],l)))&&a.push(o);if(a.length)return la.quantile(a.sort(n),.5)},la.variance=function(t,e){var n,o,a=t.length,s=0,l=0,c=-1,u=0;if(1===arguments.length)for(;++c<a;)r(n=i(t[c]))&&(o=n-s,s+=o/++u,l+=o*(n-s));else for(;++c<a;)r(n=i(e.call(t,t[c],c)))&&(o=n-s,s+=o/++u,l+=o*(n-s));if(u>1)return l/(u-1)},la.deviation=function(){var t=la.variance.apply(this,arguments);return t?Math.sqrt(t):t};var va=o(n);la.bisectLeft=va.left,la.bisect=la.bisectRight=va.right,la.bisector=function(t){return o(1===t.length?function(e,i){return n(t(e),i)}:t)},la.shuffle=function(t,e,n){(o=arguments.length)<3&&(n=t.length,o<2&&(e=0));for(var i,r,o=n-e;o;)r=Math.random()*o--|0,i=t[o+e],t[o+e]=t[r+e],t[r+e]=i;return t},la.permute=function(t,e){for(var n=e.length,i=new Array(n);n--;)i[n]=t[e[n]];return i},la.pairs=function(t){for(var e,n=0,i=t.length-1,r=t[0],o=new Array(i<0?0:i);n<i;)o[n]=[e=r,r=t[++n]];return o},la.transpose=function(t){if(!(r=t.length))return[];for(var e=-1,n=la.min(t,a),i=new Array(n);++e<n;)for(var r,o=-1,s=i[e]=new Array(r);++o<r;)s[o]=t[o][e];return i},la.zip=function(){return la.transpose(arguments)},la.keys=function(t){var e=[];for(var n in t)e.push(n);return e},la.values=function(t){var e=[];for(var n in t)e.push(t[n]);return e},la.entries=function(t){var e=[];for(var n in t)e.push({key:n,value:t[n]});return e},la.merge=function(t){for(var e,n,i,r=t.length,o=-1,a=0;++o<r;)a+=t[o].length;for(n=new Array(a);--r>=0;)for(i=t[r],e=i.length;--e>=0;)n[--a]=i[e];return n};var ya=Math.abs;la.range=function(t,e,n){if(arguments.length<3&&(n=1,arguments.length<2&&(e=t,t=0)),(e-t)/n===1/0)throw new Error("infinite range");var i,r=[],o=s(ya(n)),a=-1;if(t*=o,e*=o,n*=o,n<0)for(;(i=t+n*++a)>e;)r.push(i/o);else for(;(i=t+n*++a)<e;)r.push(i/o);return r},la.map=function(t,e){var n=new c;if(t instanceof c)t.forEach(function(t,e){n.set(t,e)});else if(Array.isArray(t)){var i,r=-1,o=t.length;if(1===arguments.length)for(;++r<o;)n.set(r,t[r]);else for(;++r<o;)n.set(e.call(t,i=t[r],r),i)}else for(var a in t)n.set(a,t[a]);return n};var xa="__proto__",ba="\0";l(c,{has:d,get:function(t){return this._[u(t)]},set:function(t,e){return this._[u(t)]=e},remove:f,keys:p,values:function(){var t=[];for(var e in this._)t.push(this._[e]);return t},entries:function(){var t=[];for(var e in this._)t.push({key:h(e),value:this._[e]});return t},size:g,empty:m,forEach:function(t){for(var e in this._)t.call(this,h(e),this._[e])}}),la.nest=function(){function t(e,a,s){if(s>=o.length)return i?i.call(r,a):n?a.sort(n):a;for(var l,u,h,d,f=-1,p=a.length,g=o[s++],m=new c;++f<p;)(d=m.get(l=g(u=a[f])))?d.push(u):m.set(l,[u]);return e?(u=e(),h=function(n,i){u.set(n,t(e,i,s))}):(u={},h=function(n,i){u[n]=t(e,i,s)}),m.forEach(h),u}function e(t,n){if(n>=o.length)return t;var i=[],r=a[n++];return t.forEach(function(t,r){i.push({key:t,values:e(r,n)})}),r?i.sort(function(t,e){return r(t.key,e.key)}):i}var n,i,r={},o=[],a=[];return r.map=function(e,n){return t(n,e,0)},r.entries=function(n){return e(t(la.map,n,0),0)},r.key=function(t){return o.push(t),r},r.sortKeys=function(t){return a[o.length-1]=t,r},r.sortValues=function(t){return n=t,r},r.rollup=function(t){return i=t,r},r},la.set=function(t){var e=new v;if(t)for(var n=0,i=t.length;n<i;++n)e.add(t[n]);return e},l(v,{has:d,add:function(t){return this._[u(t+="")]=!0,t},remove:f,values:p,size:g,empty:m,forEach:function(t){for(var e in this._)t.call(this,h(e))}}),la.behavior={},la.rebind=function(t,e){for(var n,i=1,r=arguments.length;++i<r;)t[n=arguments[i]]=x(t,e,e[n]);return t};var _a=["webkit","ms","moz","Moz","o","O"];la.dispatch=function(){for(var t=new w,e=-1,n=arguments.length;++e<n;)t[arguments[e]]=S(t);return t},w.prototype.on=function(t,e){var n=t.indexOf("."),i="";if(n>=0&&(i=t.slice(n+1),t=t.slice(0,n)),t)return arguments.length<2?this[t].on(i):this[t].on(i,e);if(2===arguments.length){if(null==e)for(t in this)this.hasOwnProperty(t)&&this[t].on(i,null);return this}},la.event=null,la.requote=function(t){return t.replace(wa,"\\$&")};var wa=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,Sa={}.__proto__?function(t,e){t.__proto__=e}:function(t,e){for(var n in e)t[n]=e[n]},Ca=function(t,e){return e.querySelector(t)},Ta=function(t,e){return e.querySelectorAll(t)},ka=function(t,e){var n=t.matches||t[b(t,"matchesSelector")];return(ka=function(t,e){return n.call(t,e)})(t,e)};"function"==typeof Sizzle&&(Ca=function(t,e){return Sizzle(t,e)[0]||null},Ta=Sizzle,ka=Sizzle.matchesSelector),la.selection=function(){return la.select(ha.documentElement)};var Aa=la.selection.prototype=[];Aa.select=function(t){var e,n,i,r,o=[];t=M(t);for(var a=-1,s=this.length;++a<s;){o.push(e=[]),e.parentNode=(i=this[a]).parentNode;for(var l=-1,c=i.length;++l<c;)(r=i[l])?(e.push(n=t.call(r,r.__data__,l,a)),n&&"__data__"in r&&(n.__data__=r.__data__)):e.push(null)}return A(o)},Aa.selectAll=function(t){var e,n,i=[];t=L(t);for(var r=-1,o=this.length;++r<o;)for(var a=this[r],s=-1,l=a.length;++s<l;)(n=a[s])&&(i.push(e=ua(t.call(n,n.__data__,s,r))),e.parentNode=n);return A(i)};var Ma="http://www.w3.org/1999/xhtml",La={svg:"http://www.w3.org/2000/svg",xhtml:Ma,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};la.ns={prefix:La,qualify:function(t){var e=t.indexOf(":"),n=t;return e>=0&&"xmlns"!==(n=t.slice(0,e))&&(t=t.slice(e+1)),La.hasOwnProperty(n)?{space:La[n],local:t}:t}},Aa.attr=function(t,e){if(arguments.length<2){if("string"==typeof t){var n=this.node();return t=la.ns.qualify(t),t.local?n.getAttributeNS(t.space,t.local):n.getAttribute(t)}for(e in t)this.each(E(e,t[e]));return this}return this.each(E(t,e))},Aa.classed=function(t,e){if(arguments.length<2){if("string"==typeof t){var n=this.node(),i=(t=O(t)).length,r=-1;if(e=n.classList){for(;++r<i;)if(!e.contains(t[r]))return!1}else for(e=n.getAttribute("class");++r<i;)if(!N(t[r]).test(e))return!1;return!0}for(e in t)this.each(R(e,t[e]));return this}return this.each(R(t,e))},Aa.style=function(t,n,i){var r=arguments.length;if(r<3){if("string"!=typeof t){r<2&&(n="");for(i in t)this.each(I(i,t[i],n));return this}if(r<2){var o=this.node();return e(o).getComputedStyle(o,null).getPropertyValue(t)}i=""}return this.each(I(t,n,i))},Aa.property=function(t,e){if(arguments.length<2){if("string"==typeof t)return this.node()[t];for(e in t)this.each(j(e,t[e]));return this}return this.each(j(t,e))},Aa.text=function(t){return arguments.length?this.each("function"==typeof t?function(){var e=t.apply(this,arguments);this.textContent=null==e?"":e}:null==t?function(){this.textContent=""}:function(){this.textContent=t}):this.node().textContent},Aa.html=function(t){return arguments.length?this.each("function"==typeof t?function(){var e=t.apply(this,arguments);this.innerHTML=null==e?"":e}:null==t?function(){this.innerHTML=""}:function(){this.innerHTML=t}):this.node().innerHTML},Aa.append=function(t){return t=H(t),this.select(function(){return this.appendChild(t.apply(this,arguments))})},Aa.insert=function(t,e){return t=H(t),e=M(e),this.select(function(){return this.insertBefore(t.apply(this,arguments),e.apply(this,arguments)||null)})},Aa.remove=function(){return this.each(V)},Aa.data=function(t,e){function n(t,n){var i,r,o,a=t.length,h=n.length,d=Math.min(a,h),f=new Array(h),p=new Array(h),g=new Array(a);if(e){var m,v=new c,y=new Array(a);for(i=-1;++i<a;)(r=t[i])&&(v.has(m=e.call(r,r.__data__,i))?g[i]=r:v.set(m,r),y[i]=m);for(i=-1;++i<h;)(r=v.get(m=e.call(n,o=n[i],i)))?r!==!0&&(f[i]=r,r.__data__=o):p[i]=F(o),v.set(m,!0);for(i=-1;++i<a;)i in y&&v.get(y[i])!==!0&&(g[i]=t[i])}else{for(i=-1;++i<d;)r=t[i],o=n[i],r?(r.__data__=o,f[i]=r):p[i]=F(o);for(;i<h;++i)p[i]=F(n[i]);for(;i<a;++i)g[i]=t[i]}p.update=f,p.parentNode=f.parentNode=g.parentNode=t.parentNode,s.push(p),l.push(f),u.push(g)}var i,r,o=-1,a=this.length;if(!arguments.length){for(t=new Array(a=(i=this[0]).length);++o<a;)(r=i[o])&&(t[o]=r.__data__);return t}var s=B([]),l=A([]),u=A([]);if("function"==typeof t)for(;++o<a;)n(i=this[o],t.call(i,i.parentNode.__data__,o));else for(;++o<a;)n(i=this[o],t);return l.enter=function(){return s},l.exit=function(){return u},l},Aa.datum=function(t){return arguments.length?this.property("__data__",t):this.property("__data__")},Aa.filter=function(t){var e,n,i,r=[];"function"!=typeof t&&(t=z(t));for(var o=0,a=this.length;o<a;o++){r.push(e=[]),e.parentNode=(n=this[o]).parentNode;for(var s=0,l=n.length;s<l;s++)(i=n[s])&&t.call(i,i.__data__,s,o)&&e.push(i)}return A(r)},Aa.order=function(){for(var t=-1,e=this.length;++t<e;)for(var n,i=this[t],r=i.length-1,o=i[r];--r>=0;)(n=i[r])&&(o&&o!==n.nextSibling&&o.parentNode.insertBefore(n,o),o=n);return this},Aa.sort=function(t){t=q.apply(this,arguments);for(var e=-1,n=this.length;++e<n;)this[e].sort(t);return this.order()},Aa.each=function(t){return G(this,function(e,n,i){t.call(e,e.__data__,n,i)})},Aa.call=function(t){var e=ua(arguments);return t.apply(e[0]=this,e),this},Aa.empty=function(){return!this.node()},Aa.node=function(){for(var t=0,e=this.length;t<e;t++)for(var n=this[t],i=0,r=n.length;i<r;i++){var o=n[i];if(o)return o}return null},Aa.size=function(){var t=0;return G(this,function(){++t}),t};var Ea=[];la.selection.enter=B,la.selection.enter.prototype=Ea,Ea.append=Aa.append,Ea.empty=Aa.empty,Ea.node=Aa.node,Ea.call=Aa.call,Ea.size=Aa.size,Ea.select=function(t){for(var e,n,i,r,o,a=[],s=-1,l=this.length;++s<l;){i=(r=this[s]).update,a.push(e=[]),e.parentNode=r.parentNode;for(var c=-1,u=r.length;++c<u;)(o=r[c])?(e.push(i[c]=n=t.call(r.parentNode,o.__data__,c,s)),n.__data__=o.__data__):e.push(null)}return A(a)},Ea.insert=function(t,e){return arguments.length<2&&(e=$(this)),Aa.insert.call(this,t,e)},la.select=function(e){var n;return"string"==typeof e?(n=[Ca(e,ha)],n.parentNode=ha.documentElement):(n=[e],n.parentNode=t(e)),A([n])},la.selectAll=function(t){var e;return"string"==typeof t?(e=ua(Ta(t,ha)),e.parentNode=ha.documentElement):(e=ua(t),e.parentNode=null),A([e])},Aa.on=function(t,e,n){var i=arguments.length;if(i<3){if("string"!=typeof t){i<2&&(e=!1);for(n in t)this.each(W(n,t[n],e));return this}if(i<2)return(i=this.node()["__on"+t])&&i._;n=!1}return this.each(W(t,e,n))};var Pa=la.map({mouseenter:"mouseover",mouseleave:"mouseout"});ha&&Pa.forEach(function(t){"on"+t in ha&&Pa.remove(t)});var Na,Oa=0;la.mouse=function(t){return Q(t,T())};var Ra=this.navigator&&/WebKit/.test(this.navigator.userAgent)?-1:0;la.touch=function(t,e,n){if(arguments.length<3&&(n=e,e=T().changedTouches),e)for(var i,r=0,o=e.length;r<o;++r)if((i=e[r]).identifier===n)return Q(t,i)},la.behavior.drag=function(){function t(){this.on("mousedown.drag",o).on("touchstart.drag",a)}function n(t,e,n,o,a){return function(){function s(){var t,n,i=e(d,g);i&&(t=i[0]-x[0],n=i[1]-x[1],p|=t|n,x=i,f({type:"drag",x:i[0]+c[0],y:i[1]+c[1],dx:t,dy:n}))}function l(){e(d,g)&&(v.on(o+m,null).on(a+m,null),y(p),f({type:"dragend"}))}var c,u=this,h=la.event.target.correspondingElement||la.event.target,d=u.parentNode,f=i.of(u,arguments),p=0,g=t(),m=".drag"+(null==g?"":"-"+g),v=la.select(n(h)).on(o+m,s).on(a+m,l),y=Y(h),x=e(d,g);r?(c=r.apply(u,arguments),c=[c.x-x[0],c.y-x[1]]):c=[0,0],f({type:"dragstart"})}}var i=k(t,"drag","dragstart","dragend"),r=null,o=n(_,la.mouse,e,"mousemove","mouseup"),a=n(Z,la.touch,y,"touchmove","touchend");return t.origin=function(e){return arguments.length?(r=e,t):r},la.rebind(t,i,"on")},la.touches=function(t,e){return arguments.length<2&&(e=T().touches),e?ua(e).map(function(e){var n=Q(t,e);return n.identifier=e.identifier,n}):[]};var Da=1e-6,Ia=Da*Da,ja=Math.PI,Ha=2*ja,Va=Ha-Da,Fa=ja/2,za=ja/180,qa=180/ja,Ga=Math.SQRT2,Ba=2,$a=4;la.interpolateZoom=function(t,e){var n,i,r=t[0],o=t[1],a=t[2],s=e[0],l=e[1],c=e[2],u=s-r,h=l-o,d=u*u+h*h;if(d<Ia)i=Math.log(c/a)/Ga,n=function(t){return[r+t*u,o+t*h,a*Math.exp(Ga*t*i)]};else{var f=Math.sqrt(d),p=(c*c-a*a+$a*d)/(2*a*Ba*f),g=(c*c-a*a-$a*d)/(2*c*Ba*f),m=Math.log(Math.sqrt(p*p+1)-p),v=Math.log(Math.sqrt(g*g+1)-g);i=(v-m)/Ga,n=function(t){var e=t*i,n=it(m),s=a/(Ba*f)*(n*rt(Ga*e+m)-nt(m));return[r+s*u,o+s*h,a*n/it(Ga*e+m)]}}return n.duration=1e3*i,n},la.behavior.zoom=function(){function t(t){t.on(P,h).on(Ua+".zoom",f).on("dblclick.zoom",p).on(R,d)}function n(t){return[(t[0]-T.x)/T.k,(t[1]-T.y)/T.k]}function i(t){return[t[0]*T.k+T.x,t[1]*T.k+T.y]}function r(t){T.k=Math.max(M[0],Math.min(M[1],t))}function o(t,e){e=i(e),T.x+=t[0]-e[0],T.y+=t[1]-e[1]}function a(e,n,i,a){e.__chart__={x:T.x,y:T.y,k:T.k},r(Math.pow(2,a)),o(m=n,i),e=la.select(e),L>0&&(e=e.transition().duration(L)),e.call(t.event)}function s(){_&&_.domain(b.range().map(function(t){return(t-T.x)/T.k}).map(b.invert)),S&&S.domain(w.range().map(function(t){return(t-T.y)/T.k}).map(w.invert))}function l(t){E++||t({type:"zoomstart"})}function c(t){s(),t({type:"zoom",scale:T.k,translate:[T.x,T.y]})}function u(t){--E||(t({type:"zoomend"}),m=null)}function h(){function t(){s=1,o(la.mouse(r),d),c(a)}function i(){h.on(N,null).on(O,null),f(s),u(a)}var r=this,a=D.of(r,arguments),s=0,h=la.select(e(r)).on(N,t).on(O,i),d=n(la.mouse(r)),f=Y(r);Fl.call(r),l(a)}function d(){function t(){var t=la.touches(p);return f=T.k,t.forEach(function(t){t.identifier in m&&(m[t.identifier]=n(t))}),t}function e(){var e=la.event.target;la.select(e).on(b,i).on(_,s),w.push(e);for(var n=la.event.changedTouches,r=0,o=n.length;r<o;++r)m[n[r].identifier]=null;var l=t(),c=Date.now();if(1===l.length){if(c-x<500){var u=l[0];a(p,u,m[u.identifier],Math.floor(Math.log(T.k)/Math.LN2)+1),C()}x=c}else if(l.length>1){var u=l[0],h=l[1],d=u[0]-h[0],f=u[1]-h[1];v=d*d+f*f}}function i(){var t,e,n,i,a=la.touches(p);Fl.call(p);for(var s=0,l=a.length;s<l;++s,i=null)if(n=a[s],i=m[n.identifier]){if(e)break;t=n,e=i}if(i){var u=(u=n[0]-t[0])*u+(u=n[1]-t[1])*u,h=v&&Math.sqrt(u/v);t=[(t[0]+n[0])/2,(t[1]+n[1])/2],e=[(e[0]+i[0])/2,(e[1]+i[1])/2],r(h*f)}x=null,o(t,e),c(g)}function s(){if(la.event.touches.length){for(var e=la.event.changedTouches,n=0,i=e.length;n<i;++n)delete m[e[n].identifier];for(var r in m)return void t()}la.selectAll(w).on(y,null),S.on(P,h).on(R,d),k(),u(g)}var f,p=this,g=D.of(p,arguments),m={},v=0,y=".zoom-"+la.event.changedTouches[0].identifier,b="touchmove"+y,_="touchend"+y,w=[],S=la.select(p),k=Y(p);e(),l(g),S.on(P,null).on(R,e)}function f(){var t=D.of(this,arguments);y?clearTimeout(y):(Fl.call(this),g=n(m=v||la.mouse(this)),l(t)),y=setTimeout(function(){y=null,u(t)},50),C(),r(Math.pow(2,.002*Wa())*T.k),o(m,g),c(t)}function p(){var t=la.mouse(this),e=Math.log(T.k)/Math.LN2;a(this,t,n(t),la.event.shiftKey?Math.ceil(e)-1:Math.floor(e)+1)}var g,m,v,y,x,b,_,w,S,T={x:0,y:0,k:1},A=[960,500],M=Xa,L=250,E=0,P="mousedown.zoom",N="mousemove.zoom",O="mouseup.zoom",R="touchstart.zoom",D=k(t,"zoomstart","zoom","zoomend");return Ua||(Ua="onwheel"in ha?(Wa=function(){return-la.event.deltaY*(la.event.deltaMode?120:1)},"wheel"):"onmousewheel"in ha?(Wa=function(){return la.event.wheelDelta;
-},"mousewheel"):(Wa=function(){return-la.event.detail},"MozMousePixelScroll")),t.event=function(t){t.each(function(){var t=D.of(this,arguments),e=T;Hl?la.select(this).transition().each("start.zoom",function(){T=this.__chart__||{x:0,y:0,k:1},l(t)}).tween("zoom:zoom",function(){var n=A[0],i=A[1],r=m?m[0]:n/2,o=m?m[1]:i/2,a=la.interpolateZoom([(r-T.x)/T.k,(o-T.y)/T.k,n/T.k],[(r-e.x)/e.k,(o-e.y)/e.k,n/e.k]);return function(e){var i=a(e),s=n/i[2];this.__chart__=T={x:r-i[0]*s,y:o-i[1]*s,k:s},c(t)}}).each("interrupt.zoom",function(){u(t)}).each("end.zoom",function(){u(t)}):(this.__chart__=T,l(t),c(t),u(t))})},t.translate=function(e){return arguments.length?(T={x:+e[0],y:+e[1],k:T.k},s(),t):[T.x,T.y]},t.scale=function(e){return arguments.length?(T={x:T.x,y:T.y,k:null},r(+e),s(),t):T.k},t.scaleExtent=function(e){return arguments.length?(M=null==e?Xa:[+e[0],+e[1]],t):M},t.center=function(e){return arguments.length?(v=e&&[+e[0],+e[1]],t):v},t.size=function(e){return arguments.length?(A=e&&[+e[0],+e[1]],t):A},t.duration=function(e){return arguments.length?(L=+e,t):L},t.x=function(e){return arguments.length?(_=e,b=e.copy(),T={x:0,y:0,k:1},t):_},t.y=function(e){return arguments.length?(S=e,w=e.copy(),T={x:0,y:0,k:1},t):S},la.rebind(t,D,"on")};var Wa,Ua,Xa=[0,1/0];la.color=at,at.prototype.toString=function(){return this.rgb()+""},la.hsl=st;var Ya=st.prototype=new at;Ya.brighter=function(t){return t=Math.pow(.7,arguments.length?t:1),new st(this.h,this.s,this.l/t)},Ya.darker=function(t){return t=Math.pow(.7,arguments.length?t:1),new st(this.h,this.s,t*this.l)},Ya.rgb=function(){return lt(this.h,this.s,this.l)},la.hcl=ct;var Qa=ct.prototype=new at;Qa.brighter=function(t){return new ct(this.h,this.c,Math.min(100,this.l+Za*(arguments.length?t:1)))},Qa.darker=function(t){return new ct(this.h,this.c,Math.max(0,this.l-Za*(arguments.length?t:1)))},Qa.rgb=function(){return ut(this.h,this.c,this.l).rgb()},la.lab=ht;var Za=18,Ka=.95047,Ja=1,ts=1.08883,es=ht.prototype=new at;es.brighter=function(t){return new ht(Math.min(100,this.l+Za*(arguments.length?t:1)),this.a,this.b)},es.darker=function(t){return new ht(Math.max(0,this.l-Za*(arguments.length?t:1)),this.a,this.b)},es.rgb=function(){return dt(this.l,this.a,this.b)},la.rgb=vt;var ns=vt.prototype=new at;ns.brighter=function(t){t=Math.pow(.7,arguments.length?t:1);var e=this.r,n=this.g,i=this.b,r=30;return e||n||i?(e&&e<r&&(e=r),n&&n<r&&(n=r),i&&i<r&&(i=r),new vt(Math.min(255,e/t),Math.min(255,n/t),Math.min(255,i/t))):new vt(r,r,r)},ns.darker=function(t){return t=Math.pow(.7,arguments.length?t:1),new vt(t*this.r,t*this.g,t*this.b)},ns.hsl=function(){return wt(this.r,this.g,this.b)},ns.toString=function(){return"#"+bt(this.r)+bt(this.g)+bt(this.b)};var is=la.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});is.forEach(function(t,e){is.set(t,yt(e))}),la.functor=kt,la.xhr=At(y),la.dsv=function(t,e){function n(t,n,o){arguments.length<3&&(o=n,n=null);var a=Mt(t,e,null==n?i:r(n),o);return a.row=function(t){return arguments.length?a.response(null==(n=t)?i:r(t)):n},a}function i(t){return n.parse(t.responseText)}function r(t){return function(e){return n.parse(e.responseText,t)}}function o(e){return e.map(a).join(t)}function a(t){return s.test(t)?'"'+t.replace(/\"/g,'""')+'"':t}var s=new RegExp('["'+t+"\n]"),l=t.charCodeAt(0);return n.parse=function(t,e){var i;return n.parseRows(t,function(t,n){if(i)return i(t,n-1);var r=new Function("d","return {"+t.map(function(t,e){return JSON.stringify(t)+": d["+e+"]"}).join(",")+"}");i=e?function(t,n){return e(r(t),n)}:r})},n.parseRows=function(t,e){function n(){if(u>=c)return a;if(r)return r=!1,o;var e=u;if(34===t.charCodeAt(e)){for(var n=e;n++<c;)if(34===t.charCodeAt(n)){if(34!==t.charCodeAt(n+1))break;++n}u=n+2;var i=t.charCodeAt(n+1);return 13===i?(r=!0,10===t.charCodeAt(n+2)&&++u):10===i&&(r=!0),t.slice(e+1,n).replace(/""/g,'"')}for(;u<c;){var i=t.charCodeAt(u++),s=1;if(10===i)r=!0;else if(13===i)r=!0,10===t.charCodeAt(u)&&(++u,++s);else if(i!==l)continue;return t.slice(e,u-s)}return t.slice(e)}for(var i,r,o={},a={},s=[],c=t.length,u=0,h=0;(i=n())!==a;){for(var d=[];i!==o&&i!==a;)d.push(i),i=n();e&&null==(d=e(d,h++))||s.push(d)}return s},n.format=function(e){if(Array.isArray(e[0]))return n.formatRows(e);var i=new v,r=[];return e.forEach(function(t){for(var e in t)i.has(e)||r.push(i.add(e))}),[r.map(a).join(t)].concat(e.map(function(e){return r.map(function(t){return a(e[t])}).join(t)})).join("\n")},n.formatRows=function(t){return t.map(o).join("\n")},n},la.csv=la.dsv(",","text/csv"),la.tsv=la.dsv("\t","text/tab-separated-values");var rs,os,as,ss,ls=this[b(this,"requestAnimationFrame")]||function(t){setTimeout(t,17)};la.timer=function(){Pt.apply(this,arguments)},la.timer.flush=function(){Ot(),Rt()},la.round=function(t,e){return e?Math.round(t*(e=Math.pow(10,e)))/e:Math.round(t)};var cs=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"].map(It);la.formatPrefix=function(t,e){var n=0;return(t=+t)&&(t<0&&(t*=-1),e&&(t=la.round(t,Dt(t,e))),n=1+Math.floor(1e-12+Math.log(t)/Math.LN10),n=Math.max(-24,Math.min(24,3*Math.floor((n-1)/3)))),cs[8+n/3]};var us=/(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,hs=la.map({b:function(t){return t.toString(2)},c:function(t){return String.fromCharCode(t)},o:function(t){return t.toString(8)},x:function(t){return t.toString(16)},X:function(t){return t.toString(16).toUpperCase()},g:function(t,e){return t.toPrecision(e)},e:function(t,e){return t.toExponential(e)},f:function(t,e){return t.toFixed(e)},r:function(t,e){return(t=la.round(t,Dt(t,e))).toFixed(Math.max(0,Math.min(20,Dt(t*(1+1e-15),e))))}}),ds=la.time={},fs=Date;Vt.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){ps.setUTCDate.apply(this._,arguments)},setDay:function(){ps.setUTCDay.apply(this._,arguments)},setFullYear:function(){ps.setUTCFullYear.apply(this._,arguments)},setHours:function(){ps.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){ps.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){ps.setUTCMinutes.apply(this._,arguments)},setMonth:function(){ps.setUTCMonth.apply(this._,arguments)},setSeconds:function(){ps.setUTCSeconds.apply(this._,arguments)},setTime:function(){ps.setTime.apply(this._,arguments)}};var ps=Date.prototype;ds.year=Ft(function(t){return t=ds.day(t),t.setMonth(0,1),t},function(t,e){t.setFullYear(t.getFullYear()+e)},function(t){return t.getFullYear()}),ds.years=ds.year.range,ds.years.utc=ds.year.utc.range,ds.day=Ft(function(t){var e=new fs(2e3,0);return e.setFullYear(t.getFullYear(),t.getMonth(),t.getDate()),e},function(t,e){t.setDate(t.getDate()+e)},function(t){return t.getDate()-1}),ds.days=ds.day.range,ds.days.utc=ds.day.utc.range,ds.dayOfYear=function(t){var e=ds.year(t);return Math.floor((t-e-6e4*(t.getTimezoneOffset()-e.getTimezoneOffset()))/864e5)},["sunday","monday","tuesday","wednesday","thursday","friday","saturday"].forEach(function(t,e){e=7-e;var n=ds[t]=Ft(function(t){return(t=ds.day(t)).setDate(t.getDate()-(t.getDay()+e)%7),t},function(t,e){t.setDate(t.getDate()+7*Math.floor(e))},function(t){var n=ds.year(t).getDay();return Math.floor((ds.dayOfYear(t)+(n+e)%7)/7)-(n!==e)});ds[t+"s"]=n.range,ds[t+"s"].utc=n.utc.range,ds[t+"OfYear"]=function(t){var n=ds.year(t).getDay();return Math.floor((ds.dayOfYear(t)+(n+e)%7)/7)}}),ds.week=ds.sunday,ds.weeks=ds.sunday.range,ds.weeks.utc=ds.sunday.utc.range,ds.weekOfYear=ds.sundayOfYear;var gs={"-":"",_:" ",0:"0"},ms=/^\s*\d+/,vs=/^%/;la.locale=function(t){return{numberFormat:jt(t),timeFormat:qt(t)}};var ys=la.locale({decimal:".",thousands:",",grouping:[3],currency:["$",""],dateTime:"%a %b %e %X %Y",date:"%m/%d/%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});la.format=ys.numberFormat,la.geo={},ce.prototype={s:0,t:0,add:function(t){ue(t,this.t,xs),ue(xs.s,this.s,this),this.s?this.t+=xs.t:this.s=xs.t},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var xs=new ce;la.geo.stream=function(t,e){t&&bs.hasOwnProperty(t.type)?bs[t.type](t,e):he(t,e)};var bs={Feature:function(t,e){he(t.geometry,e)},FeatureCollection:function(t,e){for(var n=t.features,i=-1,r=n.length;++i<r;)he(n[i].geometry,e)}},_s={Sphere:function(t,e){e.sphere()},Point:function(t,e){t=t.coordinates,e.point(t[0],t[1],t[2])},MultiPoint:function(t,e){for(var n=t.coordinates,i=-1,r=n.length;++i<r;)t=n[i],e.point(t[0],t[1],t[2])},LineString:function(t,e){de(t.coordinates,e,0)},MultiLineString:function(t,e){for(var n=t.coordinates,i=-1,r=n.length;++i<r;)de(n[i],e,0)},Polygon:function(t,e){fe(t.coordinates,e)},MultiPolygon:function(t,e){for(var n=t.coordinates,i=-1,r=n.length;++i<r;)fe(n[i],e)},GeometryCollection:function(t,e){for(var n=t.geometries,i=-1,r=n.length;++i<r;)he(n[i],e)}};la.geo.area=function(t){return ws=0,la.geo.stream(t,Cs),ws};var ws,Ss=new ce,Cs={sphere:function(){ws+=4*ja},point:_,lineStart:_,lineEnd:_,polygonStart:function(){Ss.reset(),Cs.lineStart=pe},polygonEnd:function(){var t=2*Ss;ws+=t<0?4*ja+t:t,Cs.lineStart=Cs.lineEnd=Cs.point=_}};la.geo.bounds=function(){function t(t,e){x.push(b=[u=t,d=t]),e<h&&(h=e),e>f&&(f=e)}function e(e,n){var i=ge([e*za,n*za]);if(v){var r=ve(v,i),o=[r[1],-r[0],0],a=ve(o,r);be(a),a=_e(a);var l=e-p,c=l>0?1:-1,g=a[0]*qa*c,m=ya(l)>180;if(m^(c*p<g&&g<c*e)){var y=a[1]*qa;y>f&&(f=y)}else if(g=(g+360)%360-180,m^(c*p<g&&g<c*e)){var y=-a[1]*qa;y<h&&(h=y)}else n<h&&(h=n),n>f&&(f=n);m?e<p?s(u,e)>s(u,d)&&(d=e):s(e,d)>s(u,d)&&(u=e):d>=u?(e<u&&(u=e),e>d&&(d=e)):e>p?s(u,e)>s(u,d)&&(d=e):s(e,d)>s(u,d)&&(u=e)}else t(e,n);v=i,p=e}function n(){_.point=e}function i(){b[0]=u,b[1]=d,_.point=t,v=null}function r(t,n){if(v){var i=t-p;y+=ya(i)>180?i+(i>0?360:-360):i}else g=t,m=n;Cs.point(t,n),e(t,n)}function o(){Cs.lineStart()}function a(){r(g,m),Cs.lineEnd(),ya(y)>Da&&(u=-(d=180)),b[0]=u,b[1]=d,v=null}function s(t,e){return(e-=t)<0?e+360:e}function l(t,e){return t[0]-e[0]}function c(t,e){return e[0]<=e[1]?e[0]<=t&&t<=e[1]:t<e[0]||e[1]<t}var u,h,d,f,p,g,m,v,y,x,b,_={point:t,lineStart:n,lineEnd:i,polygonStart:function(){_.point=r,_.lineStart=o,_.lineEnd=a,y=0,Cs.polygonStart()},polygonEnd:function(){Cs.polygonEnd(),_.point=t,_.lineStart=n,_.lineEnd=i,Ss<0?(u=-(d=180),h=-(f=90)):y>Da?f=90:y<-Da&&(h=-90),b[0]=u,b[1]=d}};return function(t){f=d=-(u=h=1/0),x=[],la.geo.stream(t,_);var e=x.length;if(e){x.sort(l);for(var n,i=1,r=x[0],o=[r];i<e;++i)n=x[i],c(n[0],r)||c(n[1],r)?(s(r[0],n[1])>s(r[0],r[1])&&(r[1]=n[1]),s(n[0],r[1])>s(r[0],r[1])&&(r[0]=n[0])):o.push(r=n);for(var a,n,p=-(1/0),e=o.length-1,i=0,r=o[e];i<=e;r=n,++i)n=o[i],(a=s(r[1],n[0]))>p&&(p=a,u=n[0],d=r[1])}return x=b=null,u===1/0||h===1/0?[[NaN,NaN],[NaN,NaN]]:[[u,h],[d,f]]}}(),la.geo.centroid=function(t){Ts=ks=As=Ms=Ls=Es=Ps=Ns=Os=Rs=Ds=0,la.geo.stream(t,Is);var e=Os,n=Rs,i=Ds,r=e*e+n*n+i*i;return r<Ia&&(e=Es,n=Ps,i=Ns,ks<Da&&(e=As,n=Ms,i=Ls),r=e*e+n*n+i*i,r<Ia)?[NaN,NaN]:[Math.atan2(n,e)*qa,et(i/Math.sqrt(r))*qa]};var Ts,ks,As,Ms,Ls,Es,Ps,Ns,Os,Rs,Ds,Is={sphere:_,point:Se,lineStart:Te,lineEnd:ke,polygonStart:function(){Is.lineStart=Ae},polygonEnd:function(){Is.lineStart=Te}},js=Oe(Le,je,Ve,[-ja,-ja/2]),Hs=1e9;la.geo.clipExtent=function(){var t,e,n,i,r,o,a={stream:function(t){return r&&(r.valid=!1),r=o(t),r.valid=!0,r},extent:function(s){return arguments.length?(o=Ge(t=+s[0][0],e=+s[0][1],n=+s[1][0],i=+s[1][1]),r&&(r.valid=!1,r=null),a):[[t,e],[n,i]]}};return a.extent([[0,0],[960,500]])},(la.geo.conicEqualArea=function(){return Be($e)}).raw=$e,la.geo.albers=function(){return la.geo.conicEqualArea().rotate([96,0]).center([-.6,38.7]).parallels([29.5,45.5]).scale(1070)},la.geo.albersUsa=function(){function t(t){var o=t[0],a=t[1];return e=null,n(o,a),e||(i(o,a),e)||r(o,a),e}var e,n,i,r,o=la.geo.albers(),a=la.geo.conicEqualArea().rotate([154,0]).center([-2,58.5]).parallels([55,65]),s=la.geo.conicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]),l={point:function(t,n){e=[t,n]}};return t.invert=function(t){var e=o.scale(),n=o.translate(),i=(t[0]-n[0])/e,r=(t[1]-n[1])/e;return(r>=.12&&r<.234&&i>=-.425&&i<-.214?a:r>=.166&&r<.234&&i>=-.214&&i<-.115?s:o).invert(t)},t.stream=function(t){var e=o.stream(t),n=a.stream(t),i=s.stream(t);return{point:function(t,r){e.point(t,r),n.point(t,r),i.point(t,r)},sphere:function(){e.sphere(),n.sphere(),i.sphere()},lineStart:function(){e.lineStart(),n.lineStart(),i.lineStart()},lineEnd:function(){e.lineEnd(),n.lineEnd(),i.lineEnd()},polygonStart:function(){e.polygonStart(),n.polygonStart(),i.polygonStart()},polygonEnd:function(){e.polygonEnd(),n.polygonEnd(),i.polygonEnd()}}},t.precision=function(e){return arguments.length?(o.precision(e),a.precision(e),s.precision(e),t):o.precision()},t.scale=function(e){return arguments.length?(o.scale(e),a.scale(.35*e),s.scale(e),t.translate(o.translate())):o.scale()},t.translate=function(e){if(!arguments.length)return o.translate();var c=o.scale(),u=+e[0],h=+e[1];return n=o.translate(e).clipExtent([[u-.455*c,h-.238*c],[u+.455*c,h+.238*c]]).stream(l).point,i=a.translate([u-.307*c,h+.201*c]).clipExtent([[u-.425*c+Da,h+.12*c+Da],[u-.214*c-Da,h+.234*c-Da]]).stream(l).point,r=s.translate([u-.205*c,h+.212*c]).clipExtent([[u-.214*c+Da,h+.166*c+Da],[u-.115*c-Da,h+.234*c-Da]]).stream(l).point,t},t.scale(1070)};var Vs,Fs,zs,qs,Gs,Bs,$s={point:_,lineStart:_,lineEnd:_,polygonStart:function(){Fs=0,$s.lineStart=We},polygonEnd:function(){$s.lineStart=$s.lineEnd=$s.point=_,Vs+=ya(Fs/2)}},Ws={point:Ue,lineStart:_,lineEnd:_,polygonStart:_,polygonEnd:_},Us={point:Qe,lineStart:Ze,lineEnd:Ke,polygonStart:function(){Us.lineStart=Je},polygonEnd:function(){Us.point=Qe,Us.lineStart=Ze,Us.lineEnd=Ke}};la.geo.path=function(){function t(t){return t&&("function"==typeof s&&o.pointRadius(+s.apply(this,arguments)),a&&a.valid||(a=r(o)),la.geo.stream(t,a)),o.result()}function e(){return a=null,t}var n,i,r,o,a,s=4.5;return t.area=function(t){return Vs=0,la.geo.stream(t,r($s)),Vs},t.centroid=function(t){return As=Ms=Ls=Es=Ps=Ns=Os=Rs=Ds=0,la.geo.stream(t,r(Us)),Ds?[Os/Ds,Rs/Ds]:Ns?[Es/Ns,Ps/Ns]:Ls?[As/Ls,Ms/Ls]:[NaN,NaN]},t.bounds=function(t){return Gs=Bs=-(zs=qs=1/0),la.geo.stream(t,r(Ws)),[[zs,qs],[Gs,Bs]]},t.projection=function(t){return arguments.length?(r=(n=t)?t.stream||nn(t):y,e()):n},t.context=function(t){return arguments.length?(o=null==(i=t)?new Xe:new tn(t),"function"!=typeof s&&o.pointRadius(s),e()):i},t.pointRadius=function(e){return arguments.length?(s="function"==typeof e?e:(o.pointRadius(+e),+e),t):s},t.projection(la.geo.albersUsa()).context(null)},la.geo.transform=function(t){return{stream:function(e){var n=new rn(e);for(var i in t)n[i]=t[i];return n}}},rn.prototype={point:function(t,e){this.stream.point(t,e)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}},la.geo.projection=an,la.geo.projectionMutator=sn,(la.geo.equirectangular=function(){return an(cn)}).raw=cn.invert=cn,la.geo.rotation=function(t){function e(e){return e=t(e[0]*za,e[1]*za),e[0]*=qa,e[1]*=qa,e}return t=hn(t[0]%360*za,t[1]*za,t.length>2?t[2]*za:0),e.invert=function(e){return e=t.invert(e[0]*za,e[1]*za),e[0]*=qa,e[1]*=qa,e},e},un.invert=cn,la.geo.circle=function(){function t(){var t="function"==typeof i?i.apply(this,arguments):i,e=hn(-t[0]*za,-t[1]*za,0).invert,r=[];return n(null,null,1,{point:function(t,n){r.push(t=e(t,n)),t[0]*=qa,t[1]*=qa}}),{type:"Polygon",coordinates:[r]}}var e,n,i=[0,0],r=6;return t.origin=function(e){return arguments.length?(i=e,t):i},t.angle=function(i){return arguments.length?(n=gn((e=+i)*za,r*za),t):e},t.precision=function(i){return arguments.length?(n=gn(e*za,(r=+i)*za),t):r},t.angle(90)},la.geo.distance=function(t,e){var n,i=(e[0]-t[0])*za,r=t[1]*za,o=e[1]*za,a=Math.sin(i),s=Math.cos(i),l=Math.sin(r),c=Math.cos(r),u=Math.sin(o),h=Math.cos(o);return Math.atan2(Math.sqrt((n=h*a)*n+(n=c*u-l*h*s)*n),l*u+c*h*s)},la.geo.graticule=function(){function t(){return{type:"MultiLineString",coordinates:e()}}function e(){return la.range(Math.ceil(o/m)*m,r,m).map(d).concat(la.range(Math.ceil(c/v)*v,l,v).map(f)).concat(la.range(Math.ceil(i/p)*p,n,p).filter(function(t){return ya(t%m)>Da}).map(u)).concat(la.range(Math.ceil(s/g)*g,a,g).filter(function(t){return ya(t%v)>Da}).map(h))}var n,i,r,o,a,s,l,c,u,h,d,f,p=10,g=p,m=90,v=360,y=2.5;return t.lines=function(){return e().map(function(t){return{type:"LineString",coordinates:t}})},t.outline=function(){return{type:"Polygon",coordinates:[d(o).concat(f(l).slice(1),d(r).reverse().slice(1),f(c).reverse().slice(1))]}},t.extent=function(e){return arguments.length?t.majorExtent(e).minorExtent(e):t.minorExtent()},t.majorExtent=function(e){return arguments.length?(o=+e[0][0],r=+e[1][0],c=+e[0][1],l=+e[1][1],o>r&&(e=o,o=r,r=e),c>l&&(e=c,c=l,l=e),t.precision(y)):[[o,c],[r,l]]},t.minorExtent=function(e){return arguments.length?(i=+e[0][0],n=+e[1][0],s=+e[0][1],a=+e[1][1],i>n&&(e=i,i=n,n=e),s>a&&(e=s,s=a,a=e),t.precision(y)):[[i,s],[n,a]]},t.step=function(e){return arguments.length?t.majorStep(e).minorStep(e):t.minorStep()},t.majorStep=function(e){return arguments.length?(m=+e[0],v=+e[1],t):[m,v]},t.minorStep=function(e){return arguments.length?(p=+e[0],g=+e[1],t):[p,g]},t.precision=function(e){return arguments.length?(y=+e,u=vn(s,a,90),h=yn(i,n,y),d=vn(c,l,90),f=yn(o,r,y),t):y},t.majorExtent([[-180,-90+Da],[180,90-Da]]).minorExtent([[-180,-80-Da],[180,80+Da]])},la.geo.greatArc=function(){function t(){return{type:"LineString",coordinates:[e||i.apply(this,arguments),n||r.apply(this,arguments)]}}var e,n,i=xn,r=bn;return t.distance=function(){return la.geo.distance(e||i.apply(this,arguments),n||r.apply(this,arguments))},t.source=function(n){return arguments.length?(i=n,e="function"==typeof n?null:n,t):i},t.target=function(e){return arguments.length?(r=e,n="function"==typeof e?null:e,t):r},t.precision=function(){return arguments.length?t:0},t},la.geo.interpolate=function(t,e){return _n(t[0]*za,t[1]*za,e[0]*za,e[1]*za)},la.geo.length=function(t){return Xs=0,la.geo.stream(t,Ys),Xs};var Xs,Ys={sphere:_,point:_,lineStart:wn,lineEnd:_,polygonStart:_,polygonEnd:_},Qs=Sn(function(t){return Math.sqrt(2/(1+t))},function(t){return 2*Math.asin(t/2)});(la.geo.azimuthalEqualArea=function(){return an(Qs)}).raw=Qs;var Zs=Sn(function(t){var e=Math.acos(t);return e&&e/Math.sin(e)},y);(la.geo.azimuthalEquidistant=function(){return an(Zs)}).raw=Zs,(la.geo.conicConformal=function(){return Be(Cn)}).raw=Cn,(la.geo.conicEquidistant=function(){return Be(Tn)}).raw=Tn;var Ks=Sn(function(t){return 1/t},Math.atan);(la.geo.gnomonic=function(){return an(Ks)}).raw=Ks,kn.invert=function(t,e){return[t,2*Math.atan(Math.exp(e))-Fa]},(la.geo.mercator=function(){return An(kn)}).raw=kn;var Js=Sn(function(){return 1},Math.asin);(la.geo.orthographic=function(){return an(Js)}).raw=Js;var tl=Sn(function(t){return 1/(1+t)},function(t){return 2*Math.atan(t)});(la.geo.stereographic=function(){return an(tl)}).raw=tl,Mn.invert=function(t,e){return[-e,2*Math.atan(Math.exp(t))-Fa]},(la.geo.transverseMercator=function(){var t=An(Mn),e=t.center,n=t.rotate;return t.center=function(t){return t?e([-t[1],t[0]]):(t=e(),[t[1],-t[0]])},t.rotate=function(t){return t?n([t[0],t[1],t.length>2?t[2]+90:90]):(t=n(),[t[0],t[1],t[2]-90])},n([0,0,90])}).raw=Mn,la.geom={},la.geom.hull=function(t){function e(t){if(t.length<3)return[];var e,r=kt(n),o=kt(i),a=t.length,s=[],l=[];for(e=0;e<a;e++)s.push([+r.call(this,t[e],e),+o.call(this,t[e],e),e]);for(s.sort(Nn),e=0;e<a;e++)l.push([s[e][0],-s[e][1]]);var c=Pn(s),u=Pn(l),h=u[0]===c[0],d=u[u.length-1]===c[c.length-1],f=[];for(e=c.length-1;e>=0;--e)f.push(t[s[c[e]][2]]);for(e=+h;e<u.length-d;++e)f.push(t[s[u[e]][2]]);return f}var n=Ln,i=En;return arguments.length?e(t):(e.x=function(t){return arguments.length?(n=t,e):n},e.y=function(t){return arguments.length?(i=t,e):i},e)},la.geom.polygon=function(t){return Sa(t,el),t};var el=la.geom.polygon.prototype=[];el.area=function(){for(var t,e=-1,n=this.length,i=this[n-1],r=0;++e<n;)t=i,i=this[e],r+=t[1]*i[0]-t[0]*i[1];return.5*r},el.centroid=function(t){var e,n,i=-1,r=this.length,o=0,a=0,s=this[r-1];for(arguments.length||(t=-1/(6*this.area()));++i<r;)e=s,s=this[i],n=e[0]*s[1]-s[0]*e[1],o+=(e[0]+s[0])*n,a+=(e[1]+s[1])*n;return[o*t,a*t]},el.clip=function(t){for(var e,n,i,r,o,a,s=Dn(t),l=-1,c=this.length-Dn(this),u=this[c-1];++l<c;){for(e=t.slice(),t.length=0,r=this[l],o=e[(i=e.length-s)-1],n=-1;++n<i;)a=e[n],On(a,u,r)?(On(o,u,r)||t.push(Rn(o,a,u,r)),t.push(a)):On(o,u,r)&&t.push(Rn(o,a,u,r)),o=a;s&&t.push(t[0]),u=r}return t};var nl,il,rl,ol,al,sl=[],ll=[];Gn.prototype.prepare=function(){for(var t,e=this.edges,n=e.length;n--;)t=e[n].edge,t.b&&t.a||e.splice(n,1);return e.sort($n),e.length},ei.prototype={start:function(){return this.edge.l===this.site?this.edge.a:this.edge.b},end:function(){return this.edge.l===this.site?this.edge.b:this.edge.a}},ni.prototype={insert:function(t,e){var n,i,r;if(t){if(e.P=t,e.N=t.N,t.N&&(t.N.P=e),t.N=e,t.R){for(t=t.R;t.L;)t=t.L;t.L=e}else t.R=e;n=t}else this._?(t=ai(this._),e.P=null,e.N=t,t.P=t.L=e,n=t):(e.P=e.N=null,this._=e,n=null);for(e.L=e.R=null,e.U=n,e.C=!0,t=e;n&&n.C;)i=n.U,n===i.L?(r=i.R,r&&r.C?(n.C=r.C=!1,i.C=!0,t=i):(t===n.R&&(ri(this,n),t=n,n=t.U),n.C=!1,i.C=!0,oi(this,i))):(r=i.L,r&&r.C?(n.C=r.C=!1,i.C=!0,t=i):(t===n.L&&(oi(this,n),t=n,n=t.U),n.C=!1,i.C=!0,ri(this,i))),n=t.U;this._.C=!1},remove:function(t){t.N&&(t.N.P=t.P),t.P&&(t.P.N=t.N),t.N=t.P=null;var e,n,i,r=t.U,o=t.L,a=t.R;if(n=o?a?ai(a):o:a,r?r.L===t?r.L=n:r.R=n:this._=n,o&&a?(i=n.C,n.C=t.C,n.L=o,o.U=n,n!==a?(r=n.U,n.U=t.U,t=n.R,r.L=t,n.R=a,a.U=n):(n.U=r,r=n,t=n.R)):(i=t.C,t=n),t&&(t.U=r),!i){if(t&&t.C)return void(t.C=!1);do{if(t===this._)break;if(t===r.L){if(e=r.R,e.C&&(e.C=!1,r.C=!0,ri(this,r),e=r.R),e.L&&e.L.C||e.R&&e.R.C){e.R&&e.R.C||(e.L.C=!1,e.C=!0,oi(this,e),e=r.R),e.C=r.C,r.C=e.R.C=!1,ri(this,r),t=this._;break}}else if(e=r.L,e.C&&(e.C=!1,r.C=!0,oi(this,r),e=r.L),e.L&&e.L.C||e.R&&e.R.C){e.L&&e.L.C||(e.R.C=!1,e.C=!0,ri(this,e),e=r.L),e.C=r.C,r.C=e.L.C=!1,oi(this,r),t=this._;break}e.C=!0,t=r,r=r.U}while(!t.C);t&&(t.C=!1)}}},la.geom.voronoi=function(t){function e(t){var e=new Array(t.length),i=s[0][0],r=s[0][1],o=s[1][0],a=s[1][1];return si(n(t),s).cells.forEach(function(n,s){var l=n.edges,c=n.site,u=e[s]=l.length?l.map(function(t){var e=t.start();return[e.x,e.y]}):c.x>=i&&c.x<=o&&c.y>=r&&c.y<=a?[[i,a],[o,a],[o,r],[i,r]]:[];u.point=t[s]}),e}function n(t){return t.map(function(t,e){return{x:Math.round(o(t,e)/Da)*Da,y:Math.round(a(t,e)/Da)*Da,i:e}})}var i=Ln,r=En,o=i,a=r,s=cl;return t?e(t):(e.links=function(t){return si(n(t)).edges.filter(function(t){return t.l&&t.r}).map(function(e){return{source:t[e.l.i],target:t[e.r.i]}})},e.triangles=function(t){var e=[];return si(n(t)).cells.forEach(function(n,i){for(var r,o,a=n.site,s=n.edges.sort($n),l=-1,c=s.length,u=s[c-1].edge,h=u.l===a?u.r:u.l;++l<c;)r=u,o=h,u=s[l].edge,h=u.l===a?u.r:u.l,i<o.i&&i<h.i&&ci(a,o,h)<0&&e.push([t[i],t[o.i],t[h.i]])}),e},e.x=function(t){return arguments.length?(o=kt(i=t),e):i},e.y=function(t){return arguments.length?(a=kt(r=t),e):r},e.clipExtent=function(t){return arguments.length?(s=null==t?cl:t,e):s===cl?null:s},e.size=function(t){return arguments.length?e.clipExtent(t&&[[0,0],t]):s===cl?null:s&&s[1]},e)};var cl=[[-1e6,-1e6],[1e6,1e6]];la.geom.delaunay=function(t){return la.geom.voronoi().triangles(t)},la.geom.quadtree=function(t,e,n,i,r){function o(t){function o(t,e,n,i,r,o,a,s){if(!isNaN(n)&&!isNaN(i))if(t.leaf){var l=t.x,u=t.y;if(null!=l)if(ya(l-n)+ya(u-i)<.01)c(t,e,n,i,r,o,a,s);else{var h=t.point;t.x=t.y=t.point=null,c(t,h,l,u,r,o,a,s),c(t,e,n,i,r,o,a,s)}else t.x=n,t.y=i,t.point=e}else c(t,e,n,i,r,o,a,s)}function c(t,e,n,i,r,a,s,l){var c=.5*(r+s),u=.5*(a+l),h=n>=c,d=i>=u,f=d<<1|h;t.leaf=!1,t=t.nodes[f]||(t.nodes[f]=di()),h?r=c:s=c,d?a=u:l=u,o(t,e,n,i,r,a,s,l)}var u,h,d,f,p,g,m,v,y,x=kt(s),b=kt(l);if(null!=e)g=e,m=n,v=i,y=r;else if(v=y=-(g=m=1/0),h=[],d=[],p=t.length,a)for(f=0;f<p;++f)u=t[f],u.x<g&&(g=u.x),u.y<m&&(m=u.y),u.x>v&&(v=u.x),u.y>y&&(y=u.y),h.push(u.x),d.push(u.y);else for(f=0;f<p;++f){var _=+x(u=t[f],f),w=+b(u,f);_<g&&(g=_),w<m&&(m=w),_>v&&(v=_),w>y&&(y=w),h.push(_),d.push(w)}var S=v-g,C=y-m;S>C?y=m+S:v=g+C;var T=di();if(T.add=function(t){o(T,t,+x(t,++f),+b(t,f),g,m,v,y)},T.visit=function(t){fi(t,T,g,m,v,y)},T.find=function(t){return pi(T,t[0],t[1],g,m,v,y)},f=-1,null==e){for(;++f<p;)o(T,t[f],h[f],d[f],g,m,v,y);--f}else t.forEach(T.add);return h=d=t=u=null,T}var a,s=Ln,l=En;return(a=arguments.length)?(s=ui,l=hi,3===a&&(r=n,i=e,n=e=0),o(t)):(o.x=function(t){return arguments.length?(s=t,o):s},o.y=function(t){return arguments.length?(l=t,o):l},o.extent=function(t){return arguments.length?(null==t?e=n=i=r=null:(e=+t[0][0],n=+t[0][1],i=+t[1][0],r=+t[1][1]),o):null==e?null:[[e,n],[i,r]]},o.size=function(t){return arguments.length?(null==t?e=n=i=r=null:(e=n=0,i=+t[0],r=+t[1]),o):null==e?null:[i-e,r-n]},o)},la.interpolateRgb=gi,la.interpolateObject=mi,la.interpolateNumber=vi,la.interpolateString=yi;var ul=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,hl=new RegExp(ul.source,"g");la.interpolate=xi,la.interpolators=[function(t,e){var n=typeof e;return("string"===n?is.has(e.toLowerCase())||/^(#|rgb\(|hsl\()/i.test(e)?gi:yi:e instanceof at?gi:Array.isArray(e)?bi:"object"===n&&isNaN(e)?mi:vi)(t,e)}],la.interpolateArray=bi;var dl=function(){return y},fl=la.map({linear:dl,poly:Ai,quad:function(){return Ci},cubic:function(){return Ti},sin:function(){return Mi},exp:function(){return Li},circle:function(){return Ei},elastic:Pi,back:Ni,bounce:function(){return Oi}}),pl=la.map({in:y,out:wi,"in-out":Si,"out-in":function(t){return Si(wi(t))}});la.ease=function(t){var e=t.indexOf("-"),n=e>=0?t.slice(0,e):t,i=e>=0?t.slice(e+1):"in";return n=fl.get(n)||dl,i=pl.get(i)||y,_i(i(n.apply(null,ca.call(arguments,1))))},la.interpolateHcl=Ri,la.interpolateHsl=Di,la.interpolateLab=Ii,la.interpolateRound=ji,la.transform=function(t){var e=ha.createElementNS(la.ns.prefix.svg,"g");return(la.transform=function(t){if(null!=t){e.setAttribute("transform",t);var n=e.transform.baseVal.consolidate()}return new Hi(n?n.matrix:gl)})(t)},Hi.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var gl={a:1,b:0,c:0,d:1,e:0,f:0};la.interpolateTransform=Ui,la.layout={},la.layout.bundle=function(){return function(t){for(var e=[],n=-1,i=t.length;++n<i;)e.push(Qi(t[n]));return e}},la.layout.chord=function(){function t(){var t,c,h,d,f,p={},g=[],m=la.range(o),v=[];for(n=[],i=[],t=0,d=-1;++d<o;){for(c=0,f=-1;++f<o;)c+=r[d][f];g.push(c),v.push(la.range(o)),t+=c}for(a&&m.sort(function(t,e){return a(g[t],g[e])}),s&&v.forEach(function(t,e){t.sort(function(t,n){return s(r[e][t],r[e][n])})}),t=(Ha-u*o)/t,c=0,d=-1;++d<o;){for(h=c,f=-1;++f<o;){var y=m[d],x=v[y][f],b=r[y][x],_=c,w=c+=b*t;p[y+"-"+x]={index:y,subindex:x,startAngle:_,endAngle:w,value:b}}i[y]={index:y,startAngle:h,endAngle:c,value:g[y]},c+=u}for(d=-1;++d<o;)for(f=d-1;++f<o;){var S=p[d+"-"+f],C=p[f+"-"+d];(S.value||C.value)&&n.push(S.value<C.value?{source:C,target:S}:{source:S,target:C})}l&&e()}function e(){n.sort(function(t,e){return l((t.source.value+t.target.value)/2,(e.source.value+e.target.value)/2)})}var n,i,r,o,a,s,l,c={},u=0;return c.matrix=function(t){return arguments.length?(o=(r=t)&&r.length,n=i=null,c):r},c.padding=function(t){return arguments.length?(u=t,n=i=null,c):u},c.sortGroups=function(t){return arguments.length?(a=t,n=i=null,c):a},c.sortSubgroups=function(t){return arguments.length?(s=t,n=null,c):s},c.sortChords=function(t){return arguments.length?(l=t,n&&e(),c):l},c.chords=function(){return n||t(),n},c.groups=function(){return i||t(),i},c},la.layout.force=function(){function t(t){return function(e,n,i,r){if(e.point!==t){var o=e.cx-t.x,a=e.cy-t.y,s=r-n,l=o*o+a*a;if(s*s/v<l){if(l<g){var c=e.charge/l;t.px-=o*c,t.py-=a*c}return!0}if(e.point&&l&&l<g){var c=e.pointCharge/l;t.px-=o*c,t.py-=a*c}}return!e.charge}}function e(t){t.px=la.event.x,t.py=la.event.y,l.resume()}var n,i,r,o,a,s,l={},c=la.dispatch("start","tick","end"),u=[1,1],h=.9,d=ml,f=vl,p=-30,g=yl,m=.1,v=.64,x=[],b=[];return l.tick=function(){if((r*=.99)<.005)return n=null,c.end({type:"end",alpha:r=0}),!0;var e,i,l,d,f,g,v,y,_,w=x.length,S=b.length;for(i=0;i<S;++i)l=b[i],d=l.source,f=l.target,y=f.x-d.x,_=f.y-d.y,(g=y*y+_*_)&&(g=r*a[i]*((g=Math.sqrt(g))-o[i])/g,y*=g,_*=g,f.x-=y*(v=d.weight+f.weight?d.weight/(d.weight+f.weight):.5),f.y-=_*v,d.x+=y*(v=1-v),d.y+=_*v);if((v=r*m)&&(y=u[0]/2,_=u[1]/2,i=-1,v))for(;++i<w;)l=x[i],l.x+=(y-l.x)*v,
-l.y+=(_-l.y)*v;if(p)for(ir(e=la.geom.quadtree(x),r,s),i=-1;++i<w;)(l=x[i]).fixed||e.visit(t(l));for(i=-1;++i<w;)l=x[i],l.fixed?(l.x=l.px,l.y=l.py):(l.x-=(l.px-(l.px=l.x))*h,l.y-=(l.py-(l.py=l.y))*h);c.tick({type:"tick",alpha:r})},l.nodes=function(t){return arguments.length?(x=t,l):x},l.links=function(t){return arguments.length?(b=t,l):b},l.size=function(t){return arguments.length?(u=t,l):u},l.linkDistance=function(t){return arguments.length?(d="function"==typeof t?t:+t,l):d},l.distance=l.linkDistance,l.linkStrength=function(t){return arguments.length?(f="function"==typeof t?t:+t,l):f},l.friction=function(t){return arguments.length?(h=+t,l):h},l.charge=function(t){return arguments.length?(p="function"==typeof t?t:+t,l):p},l.chargeDistance=function(t){return arguments.length?(g=t*t,l):Math.sqrt(g)},l.gravity=function(t){return arguments.length?(m=+t,l):m},l.theta=function(t){return arguments.length?(v=t*t,l):Math.sqrt(v)},l.alpha=function(t){return arguments.length?(t=+t,r?t>0?r=t:(n.c=null,n.t=NaN,n=null,c.end({type:"end",alpha:r=0})):t>0&&(c.start({type:"start",alpha:r=t}),n=Pt(l.tick)),l):r},l.start=function(){function t(t,i){if(!n){for(n=new Array(r),l=0;l<r;++l)n[l]=[];for(l=0;l<c;++l){var o=b[l];n[o.source.index].push(o.target),n[o.target.index].push(o.source)}}for(var a,s=n[e],l=-1,u=s.length;++l<u;)if(!isNaN(a=s[l][t]))return a;return Math.random()*i}var e,n,i,r=x.length,c=b.length,h=u[0],g=u[1];for(e=0;e<r;++e)(i=x[e]).index=e,i.weight=0;for(e=0;e<c;++e)i=b[e],"number"==typeof i.source&&(i.source=x[i.source]),"number"==typeof i.target&&(i.target=x[i.target]),++i.source.weight,++i.target.weight;for(e=0;e<r;++e)i=x[e],isNaN(i.x)&&(i.x=t("x",h)),isNaN(i.y)&&(i.y=t("y",g)),isNaN(i.px)&&(i.px=i.x),isNaN(i.py)&&(i.py=i.y);if(o=[],"function"==typeof d)for(e=0;e<c;++e)o[e]=+d.call(this,b[e],e);else for(e=0;e<c;++e)o[e]=d;if(a=[],"function"==typeof f)for(e=0;e<c;++e)a[e]=+f.call(this,b[e],e);else for(e=0;e<c;++e)a[e]=f;if(s=[],"function"==typeof p)for(e=0;e<r;++e)s[e]=+p.call(this,x[e],e);else for(e=0;e<r;++e)s[e]=p;return l.resume()},l.resume=function(){return l.alpha(.1)},l.stop=function(){return l.alpha(0)},l.drag=function(){return i||(i=la.behavior.drag().origin(y).on("dragstart.force",Ji).on("drag.force",e).on("dragend.force",tr)),arguments.length?void this.on("mouseover.force",er).on("mouseout.force",nr).call(i):i},la.rebind(l,c,"on")};var ml=20,vl=1,yl=1/0;la.layout.hierarchy=function(){function t(r){var o,a=[r],s=[];for(r.depth=0;null!=(o=a.pop());)if(s.push(o),(c=n.call(t,o,o.depth))&&(l=c.length)){for(var l,c,u;--l>=0;)a.push(u=c[l]),u.parent=o,u.depth=o.depth+1;i&&(o.value=0),o.children=c}else i&&(o.value=+i.call(t,o,o.depth)||0),delete o.children;return ar(r,function(t){var n,r;e&&(n=t.children)&&n.sort(e),i&&(r=t.parent)&&(r.value+=t.value)}),s}var e=cr,n=sr,i=lr;return t.sort=function(n){return arguments.length?(e=n,t):e},t.children=function(e){return arguments.length?(n=e,t):n},t.value=function(e){return arguments.length?(i=e,t):i},t.revalue=function(e){return i&&(or(e,function(t){t.children&&(t.value=0)}),ar(e,function(e){var n;e.children||(e.value=+i.call(t,e,e.depth)||0),(n=e.parent)&&(n.value+=e.value)})),e},t},la.layout.partition=function(){function t(e,n,i,r){var o=e.children;if(e.x=n,e.y=e.depth*r,e.dx=i,e.dy=r,o&&(a=o.length)){var a,s,l,c=-1;for(i=e.value?i/e.value:0;++c<a;)t(s=o[c],n,l=s.value*i,r),n+=l}}function e(t){var n=t.children,i=0;if(n&&(r=n.length))for(var r,o=-1;++o<r;)i=Math.max(i,e(n[o]));return 1+i}function n(n,o){var a=i.call(this,n,o);return t(a[0],0,r[0],r[1]/e(a[0])),a}var i=la.layout.hierarchy(),r=[1,1];return n.size=function(t){return arguments.length?(r=t,n):r},rr(n,i)},la.layout.pie=function(){function t(a){var s,l=a.length,c=a.map(function(n,i){return+e.call(t,n,i)}),u=+("function"==typeof i?i.apply(this,arguments):i),h=("function"==typeof r?r.apply(this,arguments):r)-u,d=Math.min(Math.abs(h)/l,+("function"==typeof o?o.apply(this,arguments):o)),f=d*(h<0?-1:1),p=la.sum(c),g=p?(h-l*f)/p:0,m=la.range(l),v=[];return null!=n&&m.sort(n===xl?function(t,e){return c[e]-c[t]}:function(t,e){return n(a[t],a[e])}),m.forEach(function(t){v[t]={data:a[t],value:s=c[t],startAngle:u,endAngle:u+=s*g+f,padAngle:d}}),v}var e=Number,n=xl,i=0,r=Ha,o=0;return t.value=function(n){return arguments.length?(e=n,t):e},t.sort=function(e){return arguments.length?(n=e,t):n},t.startAngle=function(e){return arguments.length?(i=e,t):i},t.endAngle=function(e){return arguments.length?(r=e,t):r},t.padAngle=function(e){return arguments.length?(o=e,t):o},t};var xl={};la.layout.stack=function(){function t(s,l){if(!(d=s.length))return s;var c=s.map(function(n,i){return e.call(t,n,i)}),u=c.map(function(e){return e.map(function(e,n){return[o.call(t,e,n),a.call(t,e,n)]})}),h=n.call(t,u,l);c=la.permute(c,h),u=la.permute(u,h);var d,f,p,g,m=i.call(t,u,l),v=c[0].length;for(p=0;p<v;++p)for(r.call(t,c[0][p],g=m[p],u[0][p][1]),f=1;f<d;++f)r.call(t,c[f][p],g+=u[f-1][p][1],u[f][p][1]);return s}var e=y,n=pr,i=gr,r=fr,o=hr,a=dr;return t.values=function(n){return arguments.length?(e=n,t):e},t.order=function(e){return arguments.length?(n="function"==typeof e?e:bl.get(e)||pr,t):n},t.offset=function(e){return arguments.length?(i="function"==typeof e?e:_l.get(e)||gr,t):i},t.x=function(e){return arguments.length?(o=e,t):o},t.y=function(e){return arguments.length?(a=e,t):a},t.out=function(e){return arguments.length?(r=e,t):r},t};var bl=la.map({"inside-out":function(t){var e,n,i=t.length,r=t.map(mr),o=t.map(vr),a=la.range(i).sort(function(t,e){return r[t]-r[e]}),s=0,l=0,c=[],u=[];for(e=0;e<i;++e)n=a[e],s<l?(s+=o[n],c.push(n)):(l+=o[n],u.push(n));return u.reverse().concat(c)},reverse:function(t){return la.range(t.length).reverse()},default:pr}),_l=la.map({silhouette:function(t){var e,n,i,r=t.length,o=t[0].length,a=[],s=0,l=[];for(n=0;n<o;++n){for(e=0,i=0;e<r;e++)i+=t[e][n][1];i>s&&(s=i),a.push(i)}for(n=0;n<o;++n)l[n]=(s-a[n])/2;return l},wiggle:function(t){var e,n,i,r,o,a,s,l,c,u=t.length,h=t[0],d=h.length,f=[];for(f[0]=l=c=0,n=1;n<d;++n){for(e=0,r=0;e<u;++e)r+=t[e][n][1];for(e=0,o=0,s=h[n][0]-h[n-1][0];e<u;++e){for(i=0,a=(t[e][n][1]-t[e][n-1][1])/(2*s);i<e;++i)a+=(t[i][n][1]-t[i][n-1][1])/s;o+=a*t[e][n][1]}f[n]=l-=r?o/r*s:0,l<c&&(c=l)}for(n=0;n<d;++n)f[n]-=c;return f},expand:function(t){var e,n,i,r=t.length,o=t[0].length,a=1/r,s=[];for(n=0;n<o;++n){for(e=0,i=0;e<r;e++)i+=t[e][n][1];if(i)for(e=0;e<r;e++)t[e][n][1]/=i;else for(e=0;e<r;e++)t[e][n][1]=a}for(n=0;n<o;++n)s[n]=0;return s},zero:gr});la.layout.histogram=function(){function t(t,o){for(var a,s,l=[],c=t.map(n,this),u=i.call(this,c,o),h=r.call(this,u,c,o),o=-1,d=c.length,f=h.length-1,p=e?1:1/d;++o<f;)a=l[o]=[],a.dx=h[o+1]-(a.x=h[o]),a.y=0;if(f>0)for(o=-1;++o<d;)s=c[o],s>=u[0]&&s<=u[1]&&(a=l[la.bisect(h,s,1,f)-1],a.y+=p,a.push(t[o]));return l}var e=!0,n=Number,i=_r,r=xr;return t.value=function(e){return arguments.length?(n=e,t):n},t.range=function(e){return arguments.length?(i=kt(e),t):i},t.bins=function(e){return arguments.length?(r="number"==typeof e?function(t){return br(t,e)}:kt(e),t):r},t.frequency=function(n){return arguments.length?(e=!!n,t):e},t},la.layout.pack=function(){function t(t,o){var a=n.call(this,t,o),s=a[0],l=r[0],c=r[1],u=null==e?Math.sqrt:"function"==typeof e?e:function(){return e};if(s.x=s.y=0,ar(s,function(t){t.r=+u(t.value)}),ar(s,kr),i){var h=i*(e?1:Math.max(2*s.r/l,2*s.r/c))/2;ar(s,function(t){t.r+=h}),ar(s,kr),ar(s,function(t){t.r-=h})}return Lr(s,l/2,c/2,e?1:1/Math.max(2*s.r/l,2*s.r/c)),a}var e,n=la.layout.hierarchy().sort(wr),i=0,r=[1,1];return t.size=function(e){return arguments.length?(r=e,t):r},t.radius=function(n){return arguments.length?(e=null==n||"function"==typeof n?n:+n,t):e},t.padding=function(e){return arguments.length?(i=+e,t):i},rr(t,n)},la.layout.tree=function(){function t(t,r){var u=a.call(this,t,r),h=u[0],d=e(h);if(ar(d,n),d.parent.m=-d.z,or(d,i),c)or(h,o);else{var f=h,p=h,g=h;or(h,function(t){t.x<f.x&&(f=t),t.x>p.x&&(p=t),t.depth>g.depth&&(g=t)});var m=s(f,p)/2-f.x,v=l[0]/(p.x+s(p,f)/2+m),y=l[1]/(g.depth||1);or(h,function(t){t.x=(t.x+m)*v,t.y=t.depth*y})}return u}function e(t){for(var e,n={A:null,children:[t]},i=[n];null!=(e=i.pop());)for(var r,o=e.children,a=0,s=o.length;a<s;++a)i.push((o[a]=r={_:o[a],parent:e,children:(r=o[a].children)&&r.slice()||[],A:null,a:null,z:0,m:0,c:0,s:0,t:null,i:a}).a=r);return n.children[0]}function n(t){var e=t.children,n=t.parent.children,i=t.i?n[t.i-1]:null;if(e.length){Dr(t);var o=(e[0].z+e[e.length-1].z)/2;i?(t.z=i.z+s(t._,i._),t.m=t.z-o):t.z=o}else i&&(t.z=i.z+s(t._,i._));t.parent.A=r(t,i,t.parent.A||n[0])}function i(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function r(t,e,n){if(e){for(var i,r=t,o=t,a=e,l=r.parent.children[0],c=r.m,u=o.m,h=a.m,d=l.m;a=Or(a),r=Nr(r),a&&r;)l=Nr(l),o=Or(o),o.a=t,i=a.z+h-r.z-c+s(a._,r._),i>0&&(Rr(Ir(a,t,n),t,i),c+=i,u+=i),h+=a.m,c+=r.m,d+=l.m,u+=o.m;a&&!Or(o)&&(o.t=a,o.m+=h-u),r&&!Nr(l)&&(l.t=r,l.m+=c-d,n=t)}return n}function o(t){t.x*=l[0],t.y=t.depth*l[1]}var a=la.layout.hierarchy().sort(null).value(null),s=Pr,l=[1,1],c=null;return t.separation=function(e){return arguments.length?(s=e,t):s},t.size=function(e){return arguments.length?(c=null==(l=e)?o:null,t):c?null:l},t.nodeSize=function(e){return arguments.length?(c=null==(l=e)?null:o,t):c?l:null},rr(t,a)},la.layout.cluster=function(){function t(t,o){var a,s=e.call(this,t,o),l=s[0],c=0;ar(l,function(t){var e=t.children;e&&e.length?(t.x=Hr(e),t.y=jr(e)):(t.x=a?c+=n(t,a):0,t.y=0,a=t)});var u=Vr(l),h=Fr(l),d=u.x-n(u,h)/2,f=h.x+n(h,u)/2;return ar(l,r?function(t){t.x=(t.x-l.x)*i[0],t.y=(l.y-t.y)*i[1]}:function(t){t.x=(t.x-d)/(f-d)*i[0],t.y=(1-(l.y?t.y/l.y:1))*i[1]}),s}var e=la.layout.hierarchy().sort(null).value(null),n=Pr,i=[1,1],r=!1;return t.separation=function(e){return arguments.length?(n=e,t):n},t.size=function(e){return arguments.length?(r=null==(i=e),t):r?null:i},t.nodeSize=function(e){return arguments.length?(r=null!=(i=e),t):r?i:null},rr(t,e)},la.layout.treemap=function(){function t(t,e){for(var n,i,r=-1,o=t.length;++r<o;)i=(n=t[r]).value*(e<0?0:e),n.area=isNaN(i)||i<=0?0:i}function e(n){var o=n.children;if(o&&o.length){var a,s,l,c=h(n),u=[],d=o.slice(),p=1/0,g="slice"===f?c.dx:"dice"===f?c.dy:"slice-dice"===f?1&n.depth?c.dy:c.dx:Math.min(c.dx,c.dy);for(t(d,c.dx*c.dy/n.value),u.area=0;(l=d.length)>0;)u.push(a=d[l-1]),u.area+=a.area,"squarify"!==f||(s=i(u,g))<=p?(d.pop(),p=s):(u.area-=u.pop().area,r(u,g,c,!1),g=Math.min(c.dx,c.dy),u.length=u.area=0,p=1/0);u.length&&(r(u,g,c,!0),u.length=u.area=0),o.forEach(e)}}function n(e){var i=e.children;if(i&&i.length){var o,a=h(e),s=i.slice(),l=[];for(t(s,a.dx*a.dy/e.value),l.area=0;o=s.pop();)l.push(o),l.area+=o.area,null!=o.z&&(r(l,o.z?a.dx:a.dy,a,!s.length),l.length=l.area=0);i.forEach(n)}}function i(t,e){for(var n,i=t.area,r=0,o=1/0,a=-1,s=t.length;++a<s;)(n=t[a].area)&&(n<o&&(o=n),n>r&&(r=n));return i*=i,e*=e,i?Math.max(e*r*p/i,i/(e*o*p)):1/0}function r(t,e,n,i){var r,o=-1,a=t.length,s=n.x,c=n.y,u=e?l(t.area/e):0;if(e==n.dx){for((i||u>n.dy)&&(u=n.dy);++o<a;)r=t[o],r.x=s,r.y=c,r.dy=u,s+=r.dx=Math.min(n.x+n.dx-s,u?l(r.area/u):0);r.z=!0,r.dx+=n.x+n.dx-s,n.y+=u,n.dy-=u}else{for((i||u>n.dx)&&(u=n.dx);++o<a;)r=t[o],r.x=s,r.y=c,r.dx=u,c+=r.dy=Math.min(n.y+n.dy-c,u?l(r.area/u):0);r.z=!1,r.dy+=n.y+n.dy-c,n.x+=u,n.dx-=u}}function o(i){var r=a||s(i),o=r[0];return o.x=o.y=0,o.value?(o.dx=c[0],o.dy=c[1]):o.dx=o.dy=0,a&&s.revalue(o),t([o],o.dx*o.dy/o.value),(a?n:e)(o),d&&(a=r),r}var a,s=la.layout.hierarchy(),l=Math.round,c=[1,1],u=null,h=zr,d=!1,f="squarify",p=.5*(1+Math.sqrt(5));return o.size=function(t){return arguments.length?(c=t,o):c},o.padding=function(t){function e(e){var n=t.call(o,e,e.depth);return null==n?zr(e):qr(e,"number"==typeof n?[n,n,n,n]:n)}function n(e){return qr(e,t)}if(!arguments.length)return u;var i;return h=null==(u=t)?zr:"function"==(i=typeof t)?e:"number"===i?(t=[t,t,t,t],n):n,o},o.round=function(t){return arguments.length?(l=t?Math.round:Number,o):l!=Number},o.sticky=function(t){return arguments.length?(d=t,a=null,o):d},o.ratio=function(t){return arguments.length?(p=t,o):p},o.mode=function(t){return arguments.length?(f=t+"",o):f},rr(o,s)},la.random={normal:function(t,e){var n=arguments.length;return n<2&&(e=1),n<1&&(t=0),function(){var n,i,r;do n=2*Math.random()-1,i=2*Math.random()-1,r=n*n+i*i;while(!r||r>1);return t+e*n*Math.sqrt(-2*Math.log(r)/r)}},logNormal:function(){var t=la.random.normal.apply(la,arguments);return function(){return Math.exp(t())}},bates:function(t){var e=la.random.irwinHall(t);return function(){return e()/t}},irwinHall:function(t){return function(){for(var e=0,n=0;n<t;n++)e+=Math.random();return e}}},la.scale={};var wl={floor:y,ceil:y};la.scale.linear=function(){return Yr([0,1],[0,1],xi,!1)};var Sl={s:1,g:1,p:1,r:1,e:1};la.scale.log=function(){return io(la.scale.linear().domain([0,1]),10,!0,[1,10])};var Cl=la.format(".0e"),Tl={floor:function(t){return-Math.ceil(-t)},ceil:function(t){return-Math.floor(-t)}};la.scale.pow=function(){return ro(la.scale.linear(),1,[0,1])},la.scale.sqrt=function(){return la.scale.pow().exponent(.5)},la.scale.ordinal=function(){return ao([],{t:"range",a:[[]]})},la.scale.category10=function(){return la.scale.ordinal().range(kl)},la.scale.category20=function(){return la.scale.ordinal().range(Al)},la.scale.category20b=function(){return la.scale.ordinal().range(Ml)},la.scale.category20c=function(){return la.scale.ordinal().range(Ll)};var kl=[2062260,16744206,2924588,14034728,9725885,9197131,14907330,8355711,12369186,1556175].map(xt),Al=[2062260,11454440,16744206,16759672,2924588,10018698,14034728,16750742,9725885,12955861,9197131,12885140,14907330,16234194,8355711,13092807,12369186,14408589,1556175,10410725].map(xt),Ml=[3750777,5395619,7040719,10264286,6519097,9216594,11915115,13556636,9202993,12426809,15186514,15190932,8666169,11356490,14049643,15177372,8077683,10834324,13528509,14589654].map(xt),Ll=[3244733,7057110,10406625,13032431,15095053,16616764,16625259,16634018,3253076,7652470,10607003,13101504,7695281,10394312,12369372,14342891,6513507,9868950,12434877,14277081].map(xt);la.scale.quantile=function(){return so([],[])},la.scale.quantize=function(){return lo(0,1,[0,1])},la.scale.threshold=function(){return co([.5],[0,1])},la.scale.identity=function(){return uo([0,1])},la.svg={},la.svg.arc=function(){function t(){var t=Math.max(0,+n.apply(this,arguments)),c=Math.max(0,+i.apply(this,arguments)),u=a.apply(this,arguments)-Fa,h=s.apply(this,arguments)-Fa,d=Math.abs(h-u),f=u>h?0:1;if(c<t&&(p=c,c=t,t=p),d>=Va)return e(c,f)+(t?e(t,1-f):"")+"Z";var p,g,m,v,y,x,b,_,w,S,C,T,k=0,A=0,M=[];if((v=(+l.apply(this,arguments)||0)/2)&&(m=o===El?Math.sqrt(t*t+c*c):+o.apply(this,arguments),f||(A*=-1),c&&(A=et(m/c*Math.sin(v))),t&&(k=et(m/t*Math.sin(v)))),c){y=c*Math.cos(u+A),x=c*Math.sin(u+A),b=c*Math.cos(h-A),_=c*Math.sin(h-A);var L=Math.abs(h-u-2*A)<=ja?0:1;if(A&&yo(y,x,b,_)===f^L){var E=(u+h)/2;y=c*Math.cos(E),x=c*Math.sin(E),b=_=null}}else y=x=0;if(t){w=t*Math.cos(h-k),S=t*Math.sin(h-k),C=t*Math.cos(u+k),T=t*Math.sin(u+k);var P=Math.abs(u-h+2*k)<=ja?0:1;if(k&&yo(w,S,C,T)===1-f^P){var N=(u+h)/2;w=t*Math.cos(N),S=t*Math.sin(N),C=T=null}}else w=S=0;if(d>Da&&(p=Math.min(Math.abs(c-t)/2,+r.apply(this,arguments)))>.001){g=t<c^f?0:1;var O=p,R=p;if(d<ja){var D=null==C?[w,S]:null==b?[y,x]:Rn([y,x],[C,T],[b,_],[w,S]),I=y-D[0],j=x-D[1],H=b-D[0],V=_-D[1],F=1/Math.sin(Math.acos((I*H+j*V)/(Math.sqrt(I*I+j*j)*Math.sqrt(H*H+V*V)))/2),z=Math.sqrt(D[0]*D[0]+D[1]*D[1]);R=Math.min(p,(t-z)/(F-1)),O=Math.min(p,(c-z)/(F+1))}if(null!=b){var q=xo(null==C?[w,S]:[C,T],[y,x],c,O,f),G=xo([b,_],[w,S],c,O,f);p===O?M.push("M",q[0],"A",O,",",O," 0 0,",g," ",q[1],"A",c,",",c," 0 ",1-f^yo(q[1][0],q[1][1],G[1][0],G[1][1]),",",f," ",G[1],"A",O,",",O," 0 0,",g," ",G[0]):M.push("M",q[0],"A",O,",",O," 0 1,",g," ",G[0])}else M.push("M",y,",",x);if(null!=C){var B=xo([y,x],[C,T],t,-R,f),$=xo([w,S],null==b?[y,x]:[b,_],t,-R,f);p===R?M.push("L",$[0],"A",R,",",R," 0 0,",g," ",$[1],"A",t,",",t," 0 ",f^yo($[1][0],$[1][1],B[1][0],B[1][1]),",",1-f," ",B[1],"A",R,",",R," 0 0,",g," ",B[0]):M.push("L",$[0],"A",R,",",R," 0 0,",g," ",B[0])}else M.push("L",w,",",S)}else M.push("M",y,",",x),null!=b&&M.push("A",c,",",c," 0 ",L,",",f," ",b,",",_),M.push("L",w,",",S),null!=C&&M.push("A",t,",",t," 0 ",P,",",1-f," ",C,",",T);return M.push("Z"),M.join("")}function e(t,e){return"M0,"+t+"A"+t+","+t+" 0 1,"+e+" 0,"+-t+"A"+t+","+t+" 0 1,"+e+" 0,"+t}var n=fo,i=po,r=ho,o=El,a=go,s=mo,l=vo;return t.innerRadius=function(e){return arguments.length?(n=kt(e),t):n},t.outerRadius=function(e){return arguments.length?(i=kt(e),t):i},t.cornerRadius=function(e){return arguments.length?(r=kt(e),t):r},t.padRadius=function(e){return arguments.length?(o=e==El?El:kt(e),t):o},t.startAngle=function(e){return arguments.length?(a=kt(e),t):a},t.endAngle=function(e){return arguments.length?(s=kt(e),t):s},t.padAngle=function(e){return arguments.length?(l=kt(e),t):l},t.centroid=function(){var t=(+n.apply(this,arguments)+ +i.apply(this,arguments))/2,e=(+a.apply(this,arguments)+ +s.apply(this,arguments))/2-Fa;return[Math.cos(e)*t,Math.sin(e)*t]},t};var El="auto";la.svg.line=function(){return bo(y)};var Pl=la.map({linear:_o,"linear-closed":wo,step:So,"step-before":Co,"step-after":To,basis:Po,"basis-open":No,"basis-closed":Oo,bundle:Ro,cardinal:Mo,"cardinal-open":ko,"cardinal-closed":Ao,monotone:Fo});Pl.forEach(function(t,e){e.key=t,e.closed=/-closed$/.test(t)});var Nl=[0,2/3,1/3,0],Ol=[0,1/3,2/3,0],Rl=[0,1/6,2/3,1/6];la.svg.line.radial=function(){var t=bo(zo);return t.radius=t.x,delete t.x,t.angle=t.y,delete t.y,t},Co.reverse=To,To.reverse=Co,la.svg.area=function(){return qo(y)},la.svg.area.radial=function(){var t=qo(zo);return t.radius=t.x,delete t.x,t.innerRadius=t.x0,delete t.x0,t.outerRadius=t.x1,delete t.x1,t.angle=t.y,delete t.y,t.startAngle=t.y0,delete t.y0,t.endAngle=t.y1,delete t.y1,t},la.svg.chord=function(){function t(t,s){var l=e(this,o,t,s),c=e(this,a,t,s);return"M"+l.p0+i(l.r,l.p1,l.a1-l.a0)+(n(l,c)?r(l.r,l.p1,l.r,l.p0):r(l.r,l.p1,c.r,c.p0)+i(c.r,c.p1,c.a1-c.a0)+r(c.r,c.p1,l.r,l.p0))+"Z"}function e(t,e,n,i){var r=e.call(t,n,i),o=s.call(t,r,i),a=l.call(t,r,i)-Fa,u=c.call(t,r,i)-Fa;return{r:o,a0:a,a1:u,p0:[o*Math.cos(a),o*Math.sin(a)],p1:[o*Math.cos(u),o*Math.sin(u)]}}function n(t,e){return t.a0==e.a0&&t.a1==e.a1}function i(t,e,n){return"A"+t+","+t+" 0 "+ +(n>ja)+",1 "+e}function r(t,e,n,i){return"Q 0,0 "+i}var o=xn,a=bn,s=Go,l=go,c=mo;return t.radius=function(e){return arguments.length?(s=kt(e),t):s},t.source=function(e){return arguments.length?(o=kt(e),t):o},t.target=function(e){return arguments.length?(a=kt(e),t):a},t.startAngle=function(e){return arguments.length?(l=kt(e),t):l},t.endAngle=function(e){return arguments.length?(c=kt(e),t):c},t},la.svg.diagonal=function(){function t(t,r){var o=e.call(this,t,r),a=n.call(this,t,r),s=(o.y+a.y)/2,l=[o,{x:o.x,y:s},{x:a.x,y:s},a];return l=l.map(i),"M"+l[0]+"C"+l[1]+" "+l[2]+" "+l[3]}var e=xn,n=bn,i=Bo;return t.source=function(n){return arguments.length?(e=kt(n),t):e},t.target=function(e){return arguments.length?(n=kt(e),t):n},t.projection=function(e){return arguments.length?(i=e,t):i},t},la.svg.diagonal.radial=function(){var t=la.svg.diagonal(),e=Bo,n=t.projection;return t.projection=function(t){return arguments.length?n($o(e=t)):e},t},la.svg.symbol=function(){function t(t,i){return(Dl.get(e.call(this,t,i))||Xo)(n.call(this,t,i))}var e=Uo,n=Wo;return t.type=function(n){return arguments.length?(e=kt(n),t):e},t.size=function(e){return arguments.length?(n=kt(e),t):n},t};var Dl=la.map({circle:Xo,cross:function(t){var e=Math.sqrt(t/5)/2;return"M"+-3*e+","+-e+"H"+-e+"V"+-3*e+"H"+e+"V"+-e+"H"+3*e+"V"+e+"H"+e+"V"+3*e+"H"+-e+"V"+e+"H"+-3*e+"Z"},diamond:function(t){var e=Math.sqrt(t/(2*jl)),n=e*jl;return"M0,"+-e+"L"+n+",0 0,"+e+" "+-n+",0Z"},square:function(t){var e=Math.sqrt(t)/2;return"M"+-e+","+-e+"L"+e+","+-e+" "+e+","+e+" "+-e+","+e+"Z"},"triangle-down":function(t){var e=Math.sqrt(t/Il),n=e*Il/2;return"M0,"+n+"L"+e+","+-n+" "+-e+","+-n+"Z"},"triangle-up":function(t){var e=Math.sqrt(t/Il),n=e*Il/2;return"M0,"+-n+"L"+e+","+n+" "+-e+","+n+"Z"}});la.svg.symbolTypes=Dl.keys();var Il=Math.sqrt(3),jl=Math.tan(30*za);Aa.transition=function(t){for(var e,n,i=Hl||++ql,r=Jo(t),o=[],a=Vl||{time:Date.now(),ease:ki,delay:0,duration:250},s=-1,l=this.length;++s<l;){o.push(e=[]);for(var c=this[s],u=-1,h=c.length;++u<h;)(n=c[u])&&ta(n,u,r,i,a),e.push(n)}return Qo(o,r,i)},Aa.interrupt=function(t){return this.each(null==t?Fl:Yo(Jo(t)))};var Hl,Vl,Fl=Yo(Jo()),zl=[],ql=0;zl.call=Aa.call,zl.empty=Aa.empty,zl.node=Aa.node,zl.size=Aa.size,la.transition=function(t,e){return t&&t.transition?Hl?t.transition(e):t:la.selection().transition(t)},la.transition.prototype=zl,zl.select=function(t){var e,n,i,r=this.id,o=this.namespace,a=[];t=M(t);for(var s=-1,l=this.length;++s<l;){a.push(e=[]);for(var c=this[s],u=-1,h=c.length;++u<h;)(i=c[u])&&(n=t.call(i,i.__data__,u,s))?("__data__"in i&&(n.__data__=i.__data__),ta(n,u,o,r,i[o][r]),e.push(n)):e.push(null)}return Qo(a,o,r)},zl.selectAll=function(t){var e,n,i,r,o,a=this.id,s=this.namespace,l=[];t=L(t);for(var c=-1,u=this.length;++c<u;)for(var h=this[c],d=-1,f=h.length;++d<f;)if(i=h[d]){o=i[s][a],n=t.call(i,i.__data__,d,c),l.push(e=[]);for(var p=-1,g=n.length;++p<g;)(r=n[p])&&ta(r,p,s,a,o),e.push(r)}return Qo(l,s,a)},zl.filter=function(t){var e,n,i,r=[];"function"!=typeof t&&(t=z(t));for(var o=0,a=this.length;o<a;o++){r.push(e=[]);for(var n=this[o],s=0,l=n.length;s<l;s++)(i=n[s])&&t.call(i,i.__data__,s,o)&&e.push(i)}return Qo(r,this.namespace,this.id)},zl.tween=function(t,e){var n=this.id,i=this.namespace;return arguments.length<2?this.node()[i][n].tween.get(t):G(this,null==e?function(e){e[i][n].tween.remove(t)}:function(r){r[i][n].tween.set(t,e)})},zl.attr=function(t,e){function n(){this.removeAttribute(s)}function i(){this.removeAttributeNS(s.space,s.local)}function r(t){return null==t?n:(t+="",function(){var e,n=this.getAttribute(s);return n!==t&&(e=a(n,t),function(t){this.setAttribute(s,e(t))})})}function o(t){return null==t?i:(t+="",function(){var e,n=this.getAttributeNS(s.space,s.local);return n!==t&&(e=a(n,t),function(t){this.setAttributeNS(s.space,s.local,e(t))})})}if(arguments.length<2){for(e in t)this.attr(e,t[e]);return this}var a="transform"==t?Ui:xi,s=la.ns.qualify(t);return Zo(this,"attr."+t,e,s.local?o:r)},zl.attrTween=function(t,e){function n(t,n){var i=e.call(this,t,n,this.getAttribute(r));return i&&function(t){this.setAttribute(r,i(t))}}function i(t,n){var i=e.call(this,t,n,this.getAttributeNS(r.space,r.local));return i&&function(t){this.setAttributeNS(r.space,r.local,i(t))}}var r=la.ns.qualify(t);return this.tween("attr."+t,r.local?i:n)},zl.style=function(t,n,i){function r(){this.style.removeProperty(t)}function o(n){return null==n?r:(n+="",function(){var r,o=e(this).getComputedStyle(this,null).getPropertyValue(t);return o!==n&&(r=xi(o,n),function(e){this.style.setProperty(t,r(e),i)})})}var a=arguments.length;if(a<3){if("string"!=typeof t){a<2&&(n="");for(i in t)this.style(i,t[i],n);return this}i=""}return Zo(this,"style."+t,n,o)},zl.styleTween=function(t,n,i){function r(r,o){var a=n.call(this,r,o,e(this).getComputedStyle(this,null).getPropertyValue(t));return a&&function(e){this.style.setProperty(t,a(e),i)}}return arguments.length<3&&(i=""),this.tween("style."+t,r)},zl.text=function(t){return Zo(this,"text",t,Ko)},zl.remove=function(){var t=this.namespace;return this.each("end.transition",function(){var e;this[t].count<2&&(e=this.parentNode)&&e.removeChild(this)})},zl.ease=function(t){var e=this.id,n=this.namespace;return arguments.length<1?this.node()[n][e].ease:("function"!=typeof t&&(t=la.ease.apply(la,arguments)),G(this,function(i){i[n][e].ease=t}))},zl.delay=function(t){var e=this.id,n=this.namespace;return arguments.length<1?this.node()[n][e].delay:G(this,"function"==typeof t?function(i,r,o){i[n][e].delay=+t.call(i,i.__data__,r,o)}:(t=+t,function(i){i[n][e].delay=t}))},zl.duration=function(t){var e=this.id,n=this.namespace;return arguments.length<1?this.node()[n][e].duration:G(this,"function"==typeof t?function(i,r,o){i[n][e].duration=Math.max(1,t.call(i,i.__data__,r,o))}:(t=Math.max(1,t),function(i){i[n][e].duration=t}))},zl.each=function(t,e){var n=this.id,i=this.namespace;if(arguments.length<2){var r=Vl,o=Hl;try{Hl=n,G(this,function(e,r,o){Vl=e[i][n],t.call(e,e.__data__,r,o)})}finally{Vl=r,Hl=o}}else G(this,function(r){var o=r[i][n];(o.event||(o.event=la.dispatch("start","end","interrupt"))).on(t,e)});return this},zl.transition=function(){for(var t,e,n,i,r=this.id,o=++ql,a=this.namespace,s=[],l=0,c=this.length;l<c;l++){s.push(t=[]);for(var e=this[l],u=0,h=e.length;u<h;u++)(n=e[u])&&(i=n[a][r],ta(n,u,a,o,{time:i.time,ease:i.ease,delay:i.delay+i.duration,duration:i.duration})),t.push(n)}return Qo(s,a,o)},la.svg.axis=function(){function t(t){t.each(function(){var t,c=la.select(this),u=this.__chart__||n,h=this.__chart__=n.copy(),d=null==l?h.ticks?h.ticks.apply(h,s):h.domain():l,f=null==e?h.tickFormat?h.tickFormat.apply(h,s):y:e,p=c.selectAll(".tick").data(d,h),g=p.enter().insert("g",".domain").attr("class","tick").style("opacity",Da),m=la.transition(p.exit()).style("opacity",Da).remove(),v=la.transition(p.order()).style("opacity",1),x=Math.max(r,0)+a,b=Br(h),_=c.selectAll(".domain").data([0]),w=(_.enter().append("path").attr("class","domain"),la.transition(_));g.append("line"),g.append("text");var S,C,T,k,A=g.select("line"),M=v.select("line"),L=p.select("text").text(f),E=g.select("text"),P=v.select("text"),N="top"===i||"left"===i?-1:1;if("bottom"===i||"top"===i?(t=ea,S="x",T="y",C="x2",k="y2",L.attr("dy",N<0?"0em":".71em").style("text-anchor","middle"),w.attr("d","M"+b[0]+","+N*o+"V0H"+b[1]+"V"+N*o)):(t=na,S="y",T="x",C="y2",k="x2",L.attr("dy",".32em").style("text-anchor",N<0?"end":"start"),w.attr("d","M"+N*o+","+b[0]+"H0V"+b[1]+"H"+N*o)),A.attr(k,N*r),E.attr(T,N*x),M.attr(C,0).attr(k,N*r),P.attr(S,0).attr(T,N*x),h.rangeBand){var O=h,R=O.rangeBand()/2;u=h=function(t){return O(t)+R}}else u.rangeBand?u=h:m.call(t,h,u);g.call(t,u,h),v.call(t,h,h)})}var e,n=la.scale.linear(),i=Gl,r=6,o=6,a=3,s=[10],l=null;return t.scale=function(e){return arguments.length?(n=e,t):n},t.orient=function(e){return arguments.length?(i=e in Bl?e+"":Gl,t):i},t.ticks=function(){return arguments.length?(s=ua(arguments),t):s},t.tickValues=function(e){return arguments.length?(l=e,t):l},t.tickFormat=function(n){return arguments.length?(e=n,t):e},t.tickSize=function(e){var n=arguments.length;return n?(r=+e,o=+arguments[n-1],t):r},t.innerTickSize=function(e){return arguments.length?(r=+e,t):r},t.outerTickSize=function(e){return arguments.length?(o=+e,t):o},t.tickPadding=function(e){return arguments.length?(a=+e,t):a},t.tickSubdivide=function(){return arguments.length&&t},t};var Gl="bottom",Bl={top:1,right:1,bottom:1,left:1};la.svg.brush=function(){function t(e){e.each(function(){var e=la.select(this).style("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush",o).on("touchstart.brush",o),a=e.selectAll(".background").data([0]);a.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),e.selectAll(".extent").data([0]).enter().append("rect").attr("class","extent").style("cursor","move");var s=e.selectAll(".resize").data(g,y);s.exit().remove(),s.enter().append("g").attr("class",function(t){return"resize "+t}).style("cursor",function(t){return $l[t]}).append("rect").attr("x",function(t){return/[ew]$/.test(t)?-3:null}).attr("y",function(t){return/^[ns]/.test(t)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),s.style("display",t.empty()?"none":null);var l,h=la.transition(e),d=la.transition(a);c&&(l=Br(c),d.attr("x",l[0]).attr("width",l[1]-l[0]),i(h)),u&&(l=Br(u),d.attr("y",l[0]).attr("height",l[1]-l[0]),r(h)),n(h)})}function n(t){t.selectAll(".resize").attr("transform",function(t){return"translate("+h[+/e$/.test(t)]+","+d[+/^s/.test(t)]+")"})}function i(t){t.select(".extent").attr("x",h[0]),t.selectAll(".extent,.n>rect,.s>rect").attr("width",h[1]-h[0])}function r(t){t.select(".extent").attr("y",d[0]),t.selectAll(".extent,.e>rect,.w>rect").attr("height",d[1]-d[0])}function o(){function o(){32==la.event.keyCode&&(L||(x=null,P[0]-=h[1],P[1]-=d[1],L=2),C())}function g(){32==la.event.keyCode&&2==L&&(P[0]+=h[1],P[1]+=d[1],L=0,C())}function m(){var t=la.mouse(_),e=!1;b&&(t[0]+=b[0],t[1]+=b[1]),L||(la.event.altKey?(x||(x=[(h[0]+h[1])/2,(d[0]+d[1])/2]),P[0]=h[+(t[0]<x[0])],P[1]=d[+(t[1]<x[1])]):x=null),A&&v(t,c,0)&&(i(T),e=!0),M&&v(t,u,1)&&(r(T),e=!0),e&&(n(T),S({type:"brush",mode:L?"move":"resize"}))}function v(t,e,n){var i,r,o=Br(e),l=o[0],c=o[1],u=P[n],g=n?d:h,m=g[1]-g[0];if(L&&(l-=u,c-=m+u),i=(n?p:f)?Math.max(l,Math.min(c,t[n])):t[n],L?r=(i+=u)+m:(x&&(u=Math.max(l,Math.min(c,2*x[n]-i))),u<i?(r=i,i=u):r=u),g[0]!=i||g[1]!=r)return n?s=null:a=null,g[0]=i,g[1]=r,!0}function y(){m(),T.style("pointer-events","all").selectAll(".resize").style("display",t.empty()?"none":null),la.select("body").style("cursor",null),N.on("mousemove.brush",null).on("mouseup.brush",null).on("touchmove.brush",null).on("touchend.brush",null).on("keydown.brush",null).on("keyup.brush",null),E(),S({type:"brushend"})}var x,b,_=this,w=la.select(la.event.target),S=l.of(_,arguments),T=la.select(_),k=w.datum(),A=!/^(n|s)$/.test(k)&&c,M=!/^(e|w)$/.test(k)&&u,L=w.classed("extent"),E=Y(_),P=la.mouse(_),N=la.select(e(_)).on("keydown.brush",o).on("keyup.brush",g);if(la.event.changedTouches?N.on("touchmove.brush",m).on("touchend.brush",y):N.on("mousemove.brush",m).on("mouseup.brush",y),T.interrupt().selectAll("*").interrupt(),L)P[0]=h[0]-P[0],P[1]=d[0]-P[1];else if(k){var O=+/w$/.test(k),R=+/^n/.test(k);b=[h[1-O]-P[0],d[1-R]-P[1]],P[0]=h[O],P[1]=d[R]}else la.event.altKey&&(x=P.slice());T.style("pointer-events","none").selectAll(".resize").style("display",null),la.select("body").style("cursor",w.style("cursor")),S({type:"brushstart"}),m()}var a,s,l=k(t,"brushstart","brush","brushend"),c=null,u=null,h=[0,0],d=[0,0],f=!0,p=!0,g=Wl[0];return t.event=function(t){t.each(function(){var t=l.of(this,arguments),e={x:h,y:d,i:a,j:s},n=this.__chart__||e;this.__chart__=e,Hl?la.select(this).transition().each("start.brush",function(){a=n.i,s=n.j,h=n.x,d=n.y,t({type:"brushstart"})}).tween("brush:brush",function(){var n=bi(h,e.x),i=bi(d,e.y);return a=s=null,function(r){h=e.x=n(r),d=e.y=i(r),t({type:"brush",mode:"resize"})}}).each("end.brush",function(){a=e.i,s=e.j,t({type:"brush",mode:"resize"}),t({type:"brushend"})}):(t({type:"brushstart"}),t({type:"brush",mode:"resize"}),t({type:"brushend"}))})},t.x=function(e){return arguments.length?(c=e,g=Wl[!c<<1|!u],t):c},t.y=function(e){return arguments.length?(u=e,g=Wl[!c<<1|!u],t):u},t.clamp=function(e){return arguments.length?(c&&u?(f=!!e[0],p=!!e[1]):c?f=!!e:u&&(p=!!e),t):c&&u?[f,p]:c?f:u?p:null},t.extent=function(e){var n,i,r,o,l;return arguments.length?(c&&(n=e[0],i=e[1],u&&(n=n[0],i=i[0]),a=[n,i],c.invert&&(n=c(n),i=c(i)),i<n&&(l=n,n=i,i=l),n==h[0]&&i==h[1]||(h=[n,i])),u&&(r=e[0],o=e[1],c&&(r=r[1],o=o[1]),s=[r,o],u.invert&&(r=u(r),o=u(o)),o<r&&(l=r,r=o,o=l),r==d[0]&&o==d[1]||(d=[r,o])),t):(c&&(a?(n=a[0],i=a[1]):(n=h[0],i=h[1],c.invert&&(n=c.invert(n),i=c.invert(i)),i<n&&(l=n,n=i,i=l))),u&&(s?(r=s[0],o=s[1]):(r=d[0],o=d[1],u.invert&&(r=u.invert(r),o=u.invert(o)),o<r&&(l=r,r=o,o=l))),c&&u?[[n,r],[i,o]]:c?[n,i]:u&&[r,o])},t.clear=function(){return t.empty()||(h=[0,0],d=[0,0],a=s=null),t},t.empty=function(){return!!c&&h[0]==h[1]||!!u&&d[0]==d[1]},la.rebind(t,l,"on")};var $l={n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},Wl=[["n","e","s","w","nw","ne","se","sw"],["e","w"],["n","s"],[]],Ul=ds.format=ys.timeFormat,Xl=Ul.utc,Yl=Xl("%Y-%m-%dT%H:%M:%S.%LZ");Ul.iso=Date.prototype.toISOString&&+new Date("2000-01-01T00:00:00.000Z")?ia:Yl,ia.parse=function(t){var e=new Date(t);return isNaN(e)?null:e},ia.toString=Yl.toString,ds.second=Ft(function(t){return new fs(1e3*Math.floor(t/1e3))},function(t,e){
-t.setTime(t.getTime()+1e3*Math.floor(e))},function(t){return t.getSeconds()}),ds.seconds=ds.second.range,ds.seconds.utc=ds.second.utc.range,ds.minute=Ft(function(t){return new fs(6e4*Math.floor(t/6e4))},function(t,e){t.setTime(t.getTime()+6e4*Math.floor(e))},function(t){return t.getMinutes()}),ds.minutes=ds.minute.range,ds.minutes.utc=ds.minute.utc.range,ds.hour=Ft(function(t){var e=t.getTimezoneOffset()/60;return new fs(36e5*(Math.floor(t/36e5-e)+e))},function(t,e){t.setTime(t.getTime()+36e5*Math.floor(e))},function(t){return t.getHours()}),ds.hours=ds.hour.range,ds.hours.utc=ds.hour.utc.range,ds.month=Ft(function(t){return t=ds.day(t),t.setDate(1),t},function(t,e){t.setMonth(t.getMonth()+e)},function(t){return t.getMonth()}),ds.months=ds.month.range,ds.months.utc=ds.month.utc.range;var Ql=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],Zl=[[ds.second,1],[ds.second,5],[ds.second,15],[ds.second,30],[ds.minute,1],[ds.minute,5],[ds.minute,15],[ds.minute,30],[ds.hour,1],[ds.hour,3],[ds.hour,6],[ds.hour,12],[ds.day,1],[ds.day,2],[ds.week,1],[ds.month,1],[ds.month,3],[ds.year,1]],Kl=Ul.multi([[".%L",function(t){return t.getMilliseconds()}],[":%S",function(t){return t.getSeconds()}],["%I:%M",function(t){return t.getMinutes()}],["%I %p",function(t){return t.getHours()}],["%a %d",function(t){return t.getDay()&&1!=t.getDate()}],["%b %d",function(t){return 1!=t.getDate()}],["%B",function(t){return t.getMonth()}],["%Y",Le]]),Jl={range:function(t,e,n){return la.range(Math.ceil(t/n)*n,+e,n).map(oa)},floor:y,ceil:y};Zl.year=ds.year,ds.scale=function(){return ra(la.scale.linear(),Zl,Kl)};var tc=Zl.map(function(t){return[t[0].utc,t[1]]}),ec=Xl.multi([[".%L",function(t){return t.getUTCMilliseconds()}],[":%S",function(t){return t.getUTCSeconds()}],["%I:%M",function(t){return t.getUTCMinutes()}],["%I %p",function(t){return t.getUTCHours()}],["%a %d",function(t){return t.getUTCDay()&&1!=t.getUTCDate()}],["%b %d",function(t){return 1!=t.getUTCDate()}],["%B",function(t){return t.getUTCMonth()}],["%Y",Le]]);tc.year=ds.year.utc,ds.scale.utc=function(){return ra(la.scale.linear(),tc,ec)},la.text=At(function(t){return t.responseText}),la.json=function(t,e){return Mt(t,"application/json",aa,e)},la.html=function(t,e){return Mt(t,"text/html",sa,e)},la.xml=At(function(t){return t.responseXML}),"function"==typeof define&&define.amd?(this.d3=la,define("d3",la)):"object"==typeof module&&module.exports?module.exports=la:this.d3=la}(),function(t){"use strict";function e(t){this.owner=t}function n(t,e){if(Object.create)e.prototype=Object.create(t.prototype);else{var n=function(){};n.prototype=t.prototype,e.prototype=new n}return e.prototype.constructor=e,e}function i(t){var e=this.internal=new r(this);e.loadConfig(t),e.beforeInit(t),e.init(),e.afterInit(t),function t(e,n,i){Object.keys(e).forEach(function(r){n[r]=e[r].bind(i),Object.keys(e[r]).length>0&&t(e[r],n[r],i)})}(s,this,this)}function r(e){var n=this;n.d3=t.d3?t.d3:"undefined"!=typeof require?require("d3"):void 0,n.api=e,n.config=n.getDefaultConfig(),n.data={},n.cache={},n.axes={}}function o(t){e.call(this,t)}function a(t,e){function n(t,e){t.attr("transform",function(t){return"translate("+Math.ceil(e(t)+b)+", 0)"})}function i(t,e){t.attr("transform",function(t){return"translate(0,"+Math.ceil(e(t))+")"})}function r(t){var e=t[0],n=t[t.length-1];return e<n?[e,n]:[n,e]}function o(t){var e,n,i=[];if(t.ticks)return t.ticks.apply(t,f);for(n=t.domain(),e=Math.ceil(n[0]);e<n[1];e++)i.push(e);return i.length>0&&i[0]>0&&i.unshift(i[0]-(i[1]-i[0])),i}function a(){var t,n=g.copy();return e.isCategory&&(t=g.domain(),n.domain([t[0],t[1]-1])),n}function s(t){var e=d?d(t):t;return"undefined"!=typeof e?e:""}function l(t){if(k)return k;var e={h:11.5,w:5.5};return t.select("text").text(s).each(function(t){var n=this.getBoundingClientRect(),i=s(t),r=n.height,o=i?n.width/i.length:void 0;r&&o&&(e.h=r,e.w=o)}).text(""),k=e,e}function c(n){return e.withoutTransition?n:t.transition(n)}function u(d){d.each(function(){function d(t,n){function i(t,e){o=void 0;for(var s=1;s<e.length;s++)if(" "===e.charAt(s)&&(o=s),r=e.substr(0,s+1),a=W.w*r.length,n<a)return i(t.concat(e.substr(0,o?o:s)),e.slice(o?o+1:s));return t.concat(e)}var r,o,a,l=s(t),c=[];return"[object Array]"===Object.prototype.toString.call(l)?l:((!n||n<=0)&&(n=Y?95:e.isCategory?Math.ceil(P(N[1])-P(N[0]))-12:110),i(c,l+""))}function f(t,e){var n=W.h;return 0===e&&(n="left"===m||"right"===m?-((U[t.index]-1)*(W.h/2)-3):".71em"),n}function _(t){var e=g(t)+(p?0:b);return j[0]<e&&e<j[1]?v:0}function w(t){return t?t>0?"start":"end":"middle"}function S(t){return t?"rotate("+t+")":""}function C(t){return t?8*Math.sin(Math.PI*(t/180)):0}function T(t){return t?11.5-2.5*(t/15)*(t>0?1:-1):X}var k,A,M,L=u.g=t.select(this),E=this.__chart__||g,P=this.__chart__=a(),N=x?x:o(P),O=L.selectAll(".tick").data(N,P),R=O.enter().insert("g",".domain").attr("class","tick").style("opacity",1e-6),D=O.exit().remove(),I=c(O).style("opacity",1),j=g.rangeExtent?g.rangeExtent():r(g.range()),H=L.selectAll(".domain").data([0]),V=(H.enter().append("path").attr("class","domain"),c(H));R.append("line"),R.append("text");var F=R.select("line"),z=I.select("line"),q=R.select("text"),G=I.select("text");e.isCategory?(b=Math.ceil((P(1)-P(0))/2),A=p?0:b,M=p?b:0):b=A=0;var B,$,W=l(L.select(".tick")),U=[],X=Math.max(v,0)+y,Y="left"===m||"right"===m;B=O.select("text"),$=B.selectAll("tspan").data(function(t,n){var i=e.tickMultiline?d(t,e.tickWidth):[].concat(s(t));return U[n]=i.length,i.map(function(t){return{index:n,splitted:t}})}),$.enter().append("tspan"),$.exit().remove(),$.text(function(t){return t.splitted});var Q=e.tickTextRotate;switch(m){case"bottom":k=n,F.attr("y2",v),q.attr("y",X),z.attr("x1",A).attr("x2",A).attr("y2",_),G.attr("x",0).attr("y",T(Q)).style("text-anchor",w(Q)).attr("transform",S(Q)),$.attr("x",0).attr("dy",f).attr("dx",C(Q)),V.attr("d","M"+j[0]+","+h+"V0H"+j[1]+"V"+h);break;case"top":k=n,F.attr("y2",-v),q.attr("y",-X),z.attr("x2",0).attr("y2",-v),G.attr("x",0).attr("y",-X),B.style("text-anchor","middle"),$.attr("x",0).attr("dy","0em"),V.attr("d","M"+j[0]+","+-h+"V0H"+j[1]+"V"+-h);break;case"left":k=i,F.attr("x2",-v),q.attr("x",-X),z.attr("x2",-v).attr("y1",M).attr("y2",M),G.attr("x",-X).attr("y",b),B.style("text-anchor","end"),$.attr("x",-X).attr("dy",f),V.attr("d","M"+-h+","+j[0]+"H0V"+j[1]+"H"+-h);break;case"right":k=i,F.attr("x2",v),q.attr("x",X),z.attr("x2",v).attr("y2",0),G.attr("x",X).attr("y",0),B.style("text-anchor","start"),$.attr("x",X).attr("dy",f),V.attr("d","M"+h+","+j[0]+"H0V"+j[1]+"H"+h)}if(P.rangeBand){var Z=P,K=Z.rangeBand()/2;E=P=function(t){return Z(t)+K}}else E.rangeBand?E=P:D.call(k,P);R.call(k,E),I.call(k,P)})}var h,d,f,p,g=t.scale.linear(),m="bottom",v=6,y=3,x=null,b=0,_=!0;return e=e||{},h=e.withOuterTick?6:0,u.scale=function(t){return arguments.length?(g=t,u):g},u.orient=function(t){return arguments.length?(m=t in{top:1,right:1,bottom:1,left:1}?t+"":"bottom",u):m},u.tickFormat=function(t){return arguments.length?(d=t,u):d},u.tickCentered=function(t){return arguments.length?(p=t,u):p},u.tickOffset=function(){return b},u.tickInterval=function(){var t,n;return e.isCategory?t=2*b:(n=u.g.select("path.domain").node().getTotalLength()-2*h,t=n/u.g.selectAll("line").size()),t===1/0?0:t},u.ticks=function(){return arguments.length?(f=arguments,u):f},u.tickCulling=function(t){return arguments.length?(_=t,u):_},u.tickValues=function(t){if("function"==typeof t)x=function(){return t(g.domain())};else{if(!arguments.length)return x;x=t}return u},u}var s,l,c,u={version:"0.4.11"};u.generate=function(t){return new i(t)},u.chart={fn:i.prototype,internal:{fn:r.prototype,axis:{fn:o.prototype}}},s=u.chart.fn,l=u.chart.internal.fn,c=u.chart.internal.axis.fn,l.beforeInit=function(){},l.afterInit=function(){},l.init=function(){var t=this,e=t.config;if(t.initParams(),e.data_url)t.convertUrlToData(e.data_url,e.data_mimeType,e.data_headers,e.data_keys,t.initWithData);else if(e.data_json)t.initWithData(t.convertJsonToData(e.data_json,e.data_keys));else if(e.data_rows)t.initWithData(t.convertRowsToData(e.data_rows));else{if(!e.data_columns)throw Error("url or json or rows or columns is required.");t.initWithData(t.convertColumnsToData(e.data_columns))}},l.initParams=function(){var t=this,e=t.d3,n=t.config;t.clipId="c3-"+ +new Date+"-clip",t.clipIdForXAxis=t.clipId+"-xaxis",t.clipIdForYAxis=t.clipId+"-yaxis",t.clipIdForGrid=t.clipId+"-grid",t.clipIdForSubchart=t.clipId+"-subchart",t.clipPath=t.getClipPath(t.clipId),t.clipPathForXAxis=t.getClipPath(t.clipIdForXAxis),t.clipPathForYAxis=t.getClipPath(t.clipIdForYAxis),t.clipPathForGrid=t.getClipPath(t.clipIdForGrid),t.clipPathForSubchart=t.getClipPath(t.clipIdForSubchart),t.dragStart=null,t.dragging=!1,t.flowing=!1,t.cancelClick=!1,t.mouseover=!1,t.transiting=!1,t.color=t.generateColor(),t.levelColor=t.generateLevelColor(),t.dataTimeFormat=n.data_xLocaltime?e.time.format:e.time.format.utc,t.axisTimeFormat=n.axis_x_localtime?e.time.format:e.time.format.utc,t.defaultAxisTimeFormat=t.axisTimeFormat.multi([[".%L",function(t){return t.getMilliseconds()}],[":%S",function(t){return t.getSeconds()}],["%I:%M",function(t){return t.getMinutes()}],["%I %p",function(t){return t.getHours()}],["%-m/%-d",function(t){return t.getDay()&&1!==t.getDate()}],["%-m/%-d",function(t){return 1!==t.getDate()}],["%-m/%-d",function(t){return t.getMonth()}],["%Y/%-m/%-d",function(){return!0}]]),t.hiddenTargetIds=[],t.hiddenLegendIds=[],t.focusedTargetIds=[],t.defocusedTargetIds=[],t.xOrient=n.axis_rotated?"left":"bottom",t.yOrient=n.axis_rotated?n.axis_y_inner?"top":"bottom":n.axis_y_inner?"right":"left",t.y2Orient=n.axis_rotated?n.axis_y2_inner?"bottom":"top":n.axis_y2_inner?"left":"right",t.subXOrient=n.axis_rotated?"left":"bottom",t.isLegendRight="right"===n.legend_position,t.isLegendInset="inset"===n.legend_position,t.isLegendTop="top-left"===n.legend_inset_anchor||"top-right"===n.legend_inset_anchor,t.isLegendLeft="top-left"===n.legend_inset_anchor||"bottom-left"===n.legend_inset_anchor,t.legendStep=0,t.legendItemWidth=0,t.legendItemHeight=0,t.currentMaxTickWidths={x:0,y:0,y2:0},t.rotated_padding_left=30,t.rotated_padding_right=n.axis_rotated&&!n.axis_x_show?0:30,t.rotated_padding_top=5,t.withoutFadeIn={},t.intervalForObserveInserted=void 0,t.axes.subx=e.selectAll([])},l.initChartElements=function(){this.initBar&&this.initBar(),this.initLine&&this.initLine(),this.initArc&&this.initArc(),this.initGauge&&this.initGauge(),this.initText&&this.initText()},l.initWithData=function(t){var e,n,i=this,r=i.d3,a=i.config,s=!0;i.axis=new o(i),i.initPie&&i.initPie(),i.initBrush&&i.initBrush(),i.initZoom&&i.initZoom(),a.bindto?"function"==typeof a.bindto.node?i.selectChart=a.bindto:i.selectChart=r.select(a.bindto):i.selectChart=r.selectAll([]),i.selectChart.empty()&&(i.selectChart=r.select(document.createElement("div")).style("opacity",0),i.observeInserted(i.selectChart),s=!1),i.selectChart.html("").classed("c3",!0),i.data.xs={},i.data.targets=i.convertDataToTargets(t),a.data_filter&&(i.data.targets=i.data.targets.filter(a.data_filter)),a.data_hide&&i.addHiddenTargetIds(a.data_hide===!0?i.mapToIds(i.data.targets):a.data_hide),a.legend_hide&&i.addHiddenLegendIds(a.legend_hide===!0?i.mapToIds(i.data.targets):a.legend_hide),i.hasType("gauge")&&(a.legend_show=!1),i.updateSizes(),i.updateScales(),i.x.domain(r.extent(i.getXDomain(i.data.targets))),i.y.domain(i.getYDomain(i.data.targets,"y")),i.y2.domain(i.getYDomain(i.data.targets,"y2")),i.subX.domain(i.x.domain()),i.subY.domain(i.y.domain()),i.subY2.domain(i.y2.domain()),i.orgXDomain=i.x.domain(),i.brush&&i.brush.scale(i.subX),a.zoom_enabled&&i.zoom.scale(i.x),i.svg=i.selectChart.append("svg").style("overflow","hidden").on("mouseenter",function(){return a.onmouseover.call(i)}).on("mouseleave",function(){return a.onmouseout.call(i)}),i.config.svg_classname&&i.svg.attr("class",i.config.svg_classname),e=i.svg.append("defs"),i.clipChart=i.appendClip(e,i.clipId),i.clipXAxis=i.appendClip(e,i.clipIdForXAxis),i.clipYAxis=i.appendClip(e,i.clipIdForYAxis),i.clipGrid=i.appendClip(e,i.clipIdForGrid),i.clipSubchart=i.appendClip(e,i.clipIdForSubchart),i.updateSvgSize(),n=i.main=i.svg.append("g").attr("transform",i.getTranslate("main")),i.initSubchart&&i.initSubchart(),i.initTooltip&&i.initTooltip(),i.initLegend&&i.initLegend(),i.initTitle&&i.initTitle(),n.append("text").attr("class",h.text+" "+h.empty).attr("text-anchor","middle").attr("dominant-baseline","middle"),i.initRegion(),i.initGrid(),n.append("g").attr("clip-path",i.clipPath).attr("class",h.chart),a.grid_lines_front&&i.initGridLines(),i.initEventRect(),i.initChartElements(),n.insert("rect",a.zoom_privileged?null:"g."+h.regions).attr("class",h.zoomRect).attr("width",i.width).attr("height",i.height).style("opacity",0).on("dblclick.zoom",null),a.axis_x_extent&&i.brush.extent(i.getDefaultExtent()),i.axis.init(),i.updateTargets(i.data.targets),s&&(i.updateDimension(),i.config.oninit.call(i),i.redraw({withTransition:!1,withTransform:!0,withUpdateXDomain:!0,withUpdateOrgXDomain:!0,withTransitionForAxis:!1})),i.bindResize(),i.api.element=i.selectChart.node()},l.smoothLines=function(t,e){var n=this;"grid"===e&&t.each(function(){var t=n.d3.select(this),e=t.attr("x1"),i=t.attr("x2"),r=t.attr("y1"),o=t.attr("y2");t.attr({x1:Math.ceil(e),x2:Math.ceil(i),y1:Math.ceil(r),y2:Math.ceil(o)})})},l.updateSizes=function(){var t=this,e=t.config,n=t.legend?t.getLegendHeight():0,i=t.legend?t.getLegendWidth():0,r=t.isLegendRight||t.isLegendInset?0:n,o=t.hasArcType(),a=e.axis_rotated||o?0:t.getHorizontalAxisHeight("x"),s=e.subchart_show&&!o?e.subchart_size_height+a:0;t.currentWidth=t.getCurrentWidth(),t.currentHeight=t.getCurrentHeight(),t.margin=e.axis_rotated?{top:t.getHorizontalAxisHeight("y2")+t.getCurrentPaddingTop(),right:o?0:t.getCurrentPaddingRight(),bottom:t.getHorizontalAxisHeight("y")+r+t.getCurrentPaddingBottom(),left:s+(o?0:t.getCurrentPaddingLeft())}:{top:4+t.getCurrentPaddingTop(),right:o?0:t.getCurrentPaddingRight(),bottom:a+s+r+t.getCurrentPaddingBottom(),left:o?0:t.getCurrentPaddingLeft()},t.margin2=e.axis_rotated?{top:t.margin.top,right:NaN,bottom:20+r,left:t.rotated_padding_left}:{top:t.currentHeight-s-r,right:NaN,bottom:a+r,left:t.margin.left},t.margin3={top:0,right:NaN,bottom:0,left:0},t.updateSizeForLegend&&t.updateSizeForLegend(n,i),t.width=t.currentWidth-t.margin.left-t.margin.right,t.height=t.currentHeight-t.margin.top-t.margin.bottom,t.width<0&&(t.width=0),t.height<0&&(t.height=0),t.width2=e.axis_rotated?t.margin.left-t.rotated_padding_left-t.rotated_padding_right:t.width,t.height2=e.axis_rotated?t.height:t.currentHeight-t.margin2.top-t.margin2.bottom,t.width2<0&&(t.width2=0),t.height2<0&&(t.height2=0),t.arcWidth=t.width-(t.isLegendRight?i+10:0),t.arcHeight=t.height-(t.isLegendRight?0:10),t.hasType("gauge")&&!e.gauge_fullCircle&&(t.arcHeight+=t.height-t.getGaugeLabelHeight()),t.updateRadius&&t.updateRadius(),t.isLegendRight&&o&&(t.margin3.left=t.arcWidth/2+1.1*t.radiusExpanded)},l.updateTargets=function(t){var e=this;e.updateTargetsForText(t),e.updateTargetsForBar(t),e.updateTargetsForLine(t),e.hasArcType()&&e.updateTargetsForArc&&e.updateTargetsForArc(t),e.updateTargetsForSubchart&&e.updateTargetsForSubchart(t),e.showTargets()},l.showTargets=function(){var t=this;t.svg.selectAll("."+h.target).filter(function(e){return t.isTargetToShow(e.id)}).transition().duration(t.config.transition_duration).style("opacity",1)},l.redraw=function(t,e){var n,i,r,o,a,s,l,c,u,d,f,p,g,m,v,y,x,b,_,S,C,T,k,A,M,L,E,P,N,O=this,R=O.main,D=O.d3,I=O.config,j=O.getShapeIndices(O.isAreaType),H=O.getShapeIndices(O.isBarType),V=O.getShapeIndices(O.isLineType),F=O.hasArcType(),z=O.filterTargetsToShow(O.data.targets),q=O.xv.bind(O);if(t=t||{},n=w(t,"withY",!0),i=w(t,"withSubchart",!0),r=w(t,"withTransition",!0),s=w(t,"withTransform",!1),l=w(t,"withUpdateXDomain",!1),c=w(t,"withUpdateOrgXDomain",!1),u=w(t,"withTrimXDomain",!0),g=w(t,"withUpdateXAxis",l),d=w(t,"withLegend",!1),f=w(t,"withEventRect",!0),p=w(t,"withDimension",!0),o=w(t,"withTransitionForExit",r),a=w(t,"withTransitionForAxis",r),_=r?I.transition_duration:0,S=o?_:0,C=a?_:0,e=e||O.axis.generateTransitions(C),d&&I.legend_show?O.updateLegend(O.mapToIds(O.data.targets),t,e):p&&O.updateDimension(!0),O.isCategorized()&&0===z.length&&O.x.domain([0,O.axes.x.selectAll(".tick").size()]),z.length?(O.updateXDomain(z,l,c,u),I.axis_x_tick_values||(A=O.axis.updateXAxisTickValues(z))):(O.xAxis.tickValues([]),O.subXAxis.tickValues([])),I.zoom_rescale&&!t.flow&&(E=O.x.orgDomain()),O.y.domain(O.getYDomain(z,"y",E)),O.y2.domain(O.getYDomain(z,"y2",E)),!I.axis_y_tick_values&&I.axis_y_tick_count&&O.yAxis.tickValues(O.axis.generateTickValues(O.y.domain(),I.axis_y_tick_count)),!I.axis_y2_tick_values&&I.axis_y2_tick_count&&O.y2Axis.tickValues(O.axis.generateTickValues(O.y2.domain(),I.axis_y2_tick_count)),O.axis.redraw(e,F),O.axis.updateLabels(r),(l||g)&&z.length)if(I.axis_x_tick_culling&&A){for(M=1;M<A.length;M++)if(A.length/M<I.axis_x_tick_culling_max){L=M;break}O.svg.selectAll("."+h.axisX+" .tick text").each(function(t){var e=A.indexOf(t);e>=0&&D.select(this).style("display",e%L?"none":"block")})}else O.svg.selectAll("."+h.axisX+" .tick text").style("display","block");m=O.generateDrawArea?O.generateDrawArea(j,!1):void 0,v=O.generateDrawBar?O.generateDrawBar(H):void 0,y=O.generateDrawLine?O.generateDrawLine(V,!1):void 0,x=O.generateXYForText(j,H,V,!0),b=O.generateXYForText(j,H,V,!1),n&&(O.subY.domain(O.getYDomain(z,"y")),O.subY2.domain(O.getYDomain(z,"y2"))),O.updateXgridFocus(),R.select("text."+h.text+"."+h.empty).attr("x",O.width/2).attr("y",O.height/2).text(I.data_empty_label_text).transition().style("opacity",z.length?0:1),O.updateGrid(_),O.updateRegion(_),O.updateBar(S),O.updateLine(S),O.updateArea(S),O.updateCircle(),O.hasDataLabel()&&O.updateText(S),O.redrawTitle&&O.redrawTitle(),O.redrawArc&&O.redrawArc(_,S,s),O.redrawSubchart&&O.redrawSubchart(i,e,_,S,j,H,V),R.selectAll("."+h.selectedCircles).filter(O.isBarType.bind(O)).selectAll("circle").remove(),I.interaction_enabled&&!t.flow&&f&&(O.redrawEventRect(),O.updateZoom&&O.updateZoom()),O.updateCircleY(),P=(O.config.axis_rotated?O.circleY:O.circleX).bind(O),N=(O.config.axis_rotated?O.circleX:O.circleY).bind(O),t.flow&&(k=O.generateFlow({targets:z,flow:t.flow,duration:t.flow.duration,drawBar:v,drawLine:y,drawArea:m,cx:P,cy:N,xv:q,xForText:x,yForText:b})),(_||k)&&O.isTabVisible()?D.transition().duration(_).each(function(){var e=[];[O.redrawBar(v,!0),O.redrawLine(y,!0),O.redrawArea(m,!0),O.redrawCircle(P,N,!0),O.redrawText(x,b,t.flow,!0),O.redrawRegion(!0),O.redrawGrid(!0)].forEach(function(t){t.forEach(function(t){e.push(t)})}),T=O.generateWait(),e.forEach(function(t){T.add(t)})}).call(T,function(){k&&k(),I.onrendered&&I.onrendered.call(O)}):(O.redrawBar(v),O.redrawLine(y),O.redrawArea(m),O.redrawCircle(P,N),O.redrawText(x,b,t.flow),O.redrawRegion(),O.redrawGrid(),I.onrendered&&I.onrendered.call(O)),O.mapToIds(O.data.targets).forEach(function(t){O.withoutFadeIn[t]=!0})},l.updateAndRedraw=function(t){var e,n=this,i=n.config;t=t||{},t.withTransition=w(t,"withTransition",!0),t.withTransform=w(t,"withTransform",!1),t.withLegend=w(t,"withLegend",!1),t.withUpdateXDomain=!0,t.withUpdateOrgXDomain=!0,t.withTransitionForExit=!1,t.withTransitionForTransform=w(t,"withTransitionForTransform",t.withTransition),n.updateSizes(),t.withLegend&&i.legend_show||(e=n.axis.generateTransitions(t.withTransitionForAxis?i.transition_duration:0),n.updateScales(),n.updateSvgSize(),n.transformAll(t.withTransitionForTransform,e)),n.redraw(t,e)},l.redrawWithoutRescale=function(){this.redraw({withY:!1,withSubchart:!1,withEventRect:!1,withTransitionForAxis:!1})},l.isTimeSeries=function(){return"timeseries"===this.config.axis_x_type},l.isCategorized=function(){return this.config.axis_x_type.indexOf("categor")>=0},l.isCustomX=function(){var t=this,e=t.config;return!t.isTimeSeries()&&(e.data_x||_(e.data_xs))},l.isTimeSeriesY=function(){return"timeseries"===this.config.axis_y_type},l.getTranslate=function(t){var e,n,i=this,r=i.config;return"main"===t?(e=y(i.margin.left),n=y(i.margin.top)):"context"===t?(e=y(i.margin2.left),n=y(i.margin2.top)):"legend"===t?(e=i.margin3.left,n=i.margin3.top):"x"===t?(e=0,n=r.axis_rotated?0:i.height):"y"===t?(e=0,n=r.axis_rotated?i.height:0):"y2"===t?(e=r.axis_rotated?0:i.width,n=r.axis_rotated?1:0):"subx"===t?(e=0,n=r.axis_rotated?0:i.height2):"arc"===t&&(e=i.arcWidth/2,n=i.arcHeight/2),"translate("+e+","+n+")"},l.initialOpacity=function(t){return null!==t.value&&this.withoutFadeIn[t.id]?1:0},l.initialOpacityForCircle=function(t){return null!==t.value&&this.withoutFadeIn[t.id]?this.opacityForCircle(t):0},l.opacityForCircle=function(t){var e=this.config.point_show?1:0;return d(t.value)?this.isScatterType(t)?.5:e:0},l.opacityForText=function(){return this.hasDataLabel()?1:0},l.xx=function(t){return t?this.x(t.x):null},l.xv=function(t){var e=this,n=t.value;return e.isTimeSeries()?n=e.parseDate(t.value):e.isCategorized()&&"string"==typeof t.value&&(n=e.config.axis_x_categories.indexOf(t.value)),Math.ceil(e.x(n))},l.yv=function(t){var e=this,n=t.axis&&"y2"===t.axis?e.y2:e.y;return Math.ceil(n(t.value))},l.subxx=function(t){return t?this.subX(t.x):null},l.transformMain=function(t,e){var n,i,r,o=this;e&&e.axisX?n=e.axisX:(n=o.main.select("."+h.axisX),t&&(n=n.transition())),e&&e.axisY?i=e.axisY:(i=o.main.select("."+h.axisY),t&&(i=i.transition())),e&&e.axisY2?r=e.axisY2:(r=o.main.select("."+h.axisY2),t&&(r=r.transition())),(t?o.main.transition():o.main).attr("transform",o.getTranslate("main")),n.attr("transform",o.getTranslate("x")),i.attr("transform",o.getTranslate("y")),r.attr("transform",o.getTranslate("y2")),o.main.select("."+h.chartArcs).attr("transform",o.getTranslate("arc"))},l.transformAll=function(t,e){var n=this;n.transformMain(t,e),n.config.subchart_show&&n.transformContext(t,e),n.legend&&n.transformLegend(t)},l.updateSvgSize=function(){var t=this,e=t.svg.select(".c3-brush .background");t.svg.attr("width",t.currentWidth).attr("height",t.currentHeight),t.svg.selectAll(["#"+t.clipId,"#"+t.clipIdForGrid]).select("rect").attr("width",t.width).attr("height",t.height),t.svg.select("#"+t.clipIdForXAxis).select("rect").attr("x",t.getXAxisClipX.bind(t)).attr("y",t.getXAxisClipY.bind(t)).attr("width",t.getXAxisClipWidth.bind(t)).attr("height",t.getXAxisClipHeight.bind(t)),t.svg.select("#"+t.clipIdForYAxis).select("rect").attr("x",t.getYAxisClipX.bind(t)).attr("y",t.getYAxisClipY.bind(t)).attr("width",t.getYAxisClipWidth.bind(t)).attr("height",t.getYAxisClipHeight.bind(t)),t.svg.select("#"+t.clipIdForSubchart).select("rect").attr("width",t.width).attr("height",e.size()?e.attr("height"):0),t.svg.select("."+h.zoomRect).attr("width",t.width).attr("height",t.height),t.selectChart.style("max-height",t.currentHeight+"px")},l.updateDimension=function(t){var e=this;t||(e.config.axis_rotated?(e.axes.x.call(e.xAxis),e.axes.subx.call(e.subXAxis)):(e.axes.y.call(e.yAxis),e.axes.y2.call(e.y2Axis))),e.updateSizes(),e.updateScales(),e.updateSvgSize(),e.transformAll(!1)},l.observeInserted=function(e){var n,i=this;return"undefined"==typeof MutationObserver?void t.console.error("MutationObserver not defined."):(n=new MutationObserver(function(r){r.forEach(function(r){"childList"===r.type&&r.previousSibling&&(n.disconnect(),i.intervalForObserveInserted=t.setInterval(function(){e.node().parentNode&&(t.clearInterval(i.intervalForObserveInserted),i.updateDimension(),i.brush&&i.brush.update(),i.config.oninit.call(i),i.redraw({withTransform:!0,withUpdateXDomain:!0,withUpdateOrgXDomain:!0,withTransition:!1,withTransitionForTransform:!1,withLegend:!0}),e.transition().style("opacity",1))},10))})}),void n.observe(e.node(),{attributes:!0,childList:!0,characterData:!0}))},l.bindResize=function(){var e=this,n=e.config;if(e.resizeFunction=e.generateResize(),e.resizeFunction.add(function(){n.onresize.call(e)}),n.resize_auto&&e.resizeFunction.add(function(){void 0!==e.resizeTimeout&&t.clearTimeout(e.resizeTimeout),e.resizeTimeout=t.setTimeout(function(){delete e.resizeTimeout,e.api.flush()},100)}),e.resizeFunction.add(function(){n.onresized.call(e)}),t.attachEvent)t.attachEvent("onresize",e.resizeFunction);else if(t.addEventListener)t.addEventListener("resize",e.resizeFunction,!1);else{var i=t.onresize;i?i.add&&i.remove||(i=e.generateResize(),i.add(t.onresize)):i=e.generateResize(),i.add(e.resizeFunction),t.onresize=i}},l.generateResize=function(){function t(){e.forEach(function(t){t()})}var e=[];return t.add=function(t){e.push(t)},t.remove=function(t){for(var n=0;n<e.length;n++)if(e[n]===t){e.splice(n,1);break}},t},l.endall=function(t,e){var n=0;t.each(function(){++n}).each("end",function(){--n||e.apply(this,arguments)})},l.generateWait=function(){var t=[],e=function(e,n){var i=setInterval(function(){var e=0;t.forEach(function(t){if(t.empty())return void(e+=1);try{t.transition()}catch(t){e+=1}}),e===t.length&&(clearInterval(i),n&&n())},10)};return e.add=function(e){t.push(e)},e},l.parseDate=function(e){var n,i=this;return e instanceof Date?n=e:"string"==typeof e?n=i.dataTimeFormat(i.config.data_xFormat).parse(e):"number"!=typeof e||isNaN(e)||(n=new Date(+e)),n&&!isNaN(+n)||t.console.error("Failed to parse x '"+e+"' to Date object"),n},l.isTabVisible=function(){var t;return"undefined"!=typeof document.hidden?t="hidden":"undefined"!=typeof document.mozHidden?t="mozHidden":"undefined"!=typeof document.msHidden?t="msHidden":"undefined"!=typeof document.webkitHidden&&(t="webkitHidden"),!document[t]},l.getDefaultConfig=function(){var t={bindto:"#chart",svg_classname:void 0,size_width:void 0,size_height:void 0,padding_left:void 0,padding_right:void 0,padding_top:void 0,padding_bottom:void 0,resize_auto:!0,zoom_enabled:!1,zoom_extent:void 0,zoom_privileged:!1,zoom_rescale:!1,zoom_onzoom:function(){},zoom_onzoomstart:function(){},zoom_onzoomend:function(){},zoom_x_min:void 0,zoom_x_max:void 0,interaction_brighten:!0,interaction_enabled:!0,onmouseover:function(){},onmouseout:function(){},onresize:function(){},onresized:function(){},oninit:function(){},onrendered:function(){},transition_duration:350,data_x:void 0,data_xs:{},data_xFormat:"%Y-%m-%d",data_xLocaltime:!0,data_xSort:!0,data_idConverter:function(t){return t},data_names:{},data_classes:{},data_groups:[],data_axes:{},data_type:void 0,data_types:{},data_labels:{},data_order:"desc",data_regions:{},data_color:void 0,data_colors:{},data_hide:!1,data_filter:void 0,data_selection_enabled:!1,data_selection_grouped:!1,data_selection_isselectable:function(){return!0},data_selection_multiple:!0,data_selection_draggable:!1,data_onclick:function(){},data_onmouseover:function(){},data_onmouseout:function(){},data_onselected:function(){},data_onunselected:function(){},data_url:void 0,data_headers:void 0,data_json:void 0,data_rows:void 0,data_columns:void 0,data_mimeType:void 0,data_keys:void 0,data_empty_label_text:"",subchart_show:!1,subchart_size_height:60,subchart_axis_x_show:!0,subchart_onbrush:function(){},color_pattern:[],color_threshold:{},legend_show:!0,legend_hide:!1,legend_position:"bottom",legend_inset_anchor:"top-left",legend_inset_x:10,legend_inset_y:0,legend_inset_step:void 0,legend_item_onclick:void 0,legend_item_onmouseover:void 0,legend_item_onmouseout:void 0,legend_equally:!1,legend_padding:0,legend_item_tile_width:10,legend_item_tile_height:10,axis_rotated:!1,axis_x_show:!0,axis_x_type:"indexed",axis_x_localtime:!0,axis_x_categories:[],axis_x_tick_centered:!1,axis_x_tick_format:void 0,axis_x_tick_culling:{},axis_x_tick_culling_max:10,axis_x_tick_count:void 0,axis_x_tick_fit:!0,axis_x_tick_values:null,axis_x_tick_rotate:0,axis_x_tick_outer:!0,axis_x_tick_multiline:!0,axis_x_tick_width:null,axis_x_max:void 0,axis_x_min:void 0,axis_x_padding:{},axis_x_height:void 0,axis_x_extent:void 0,axis_x_label:{},axis_y_show:!0,axis_y_type:void 0,axis_y_max:void 0,axis_y_min:void 0,axis_y_inverted:!1,axis_y_center:void 0,axis_y_inner:void 0,axis_y_label:{},axis_y_tick_format:void 0,axis_y_tick_outer:!0,axis_y_tick_values:null,axis_y_tick_rotate:0,axis_y_tick_count:void 0,axis_y_tick_time_value:void 0,axis_y_tick_time_interval:void 0,axis_y_padding:{},axis_y_default:void 0,axis_y2_show:!1,axis_y2_max:void 0,axis_y2_min:void 0,axis_y2_inverted:!1,axis_y2_center:void 0,axis_y2_inner:void 0,axis_y2_label:{},axis_y2_tick_format:void 0,axis_y2_tick_outer:!0,axis_y2_tick_values:null,axis_y2_tick_count:void 0,axis_y2_padding:{},axis_y2_default:void 0,grid_x_show:!1,grid_x_type:"tick",grid_x_lines:[],grid_y_show:!1,grid_y_lines:[],grid_y_ticks:10,grid_focus_show:!0,grid_lines_front:!0,point_show:!0,point_r:2.5,point_sensitivity:10,point_focus_expand_enabled:!0,point_focus_expand_r:void 0,point_select_r:void 0,line_connectNull:!1,line_step_type:"step",bar_width:void 0,bar_width_ratio:.6,bar_width_max:void 0,bar_zerobased:!0,area_zerobased:!0,area_above:!1,pie_label_show:!0,pie_label_format:void 0,pie_label_threshold:.05,pie_label_ratio:void 0,pie_expand:{},pie_expand_duration:50,gauge_fullCircle:!1,gauge_label_show:!0,gauge_label_format:void 0,gauge_min:0,gauge_max:100,gauge_startingAngle:-1*Math.PI/2,gauge_units:void 0,gauge_width:void 0,gauge_expand:{},gauge_expand_duration:50,donut_label_show:!0,donut_label_format:void 0,donut_label_threshold:.05,donut_label_ratio:void 0,donut_width:void 0,donut_title:"",donut_expand:{},donut_expand_duration:50,spline_interpolation_type:"cardinal",regions:[],tooltip_show:!0,tooltip_grouped:!0,tooltip_format_title:void 0,tooltip_format_name:void 0,tooltip_format_value:void 0,tooltip_position:void 0,tooltip_contents:function(t,e,n,i){return this.getTooltipContent?this.getTooltipContent(t,e,n,i):""},tooltip_init_show:!1,tooltip_init_x:0,tooltip_init_position:{top:"0px",left:"50px"},tooltip_onshow:function(){},tooltip_onhide:function(){},title_text:void 0,title_padding:{top:0,right:0,bottom:0,left:0},title_position:"top-center"};return Object.keys(this.additionalConfig).forEach(function(e){t[e]=this.additionalConfig[e]},this),t},l.additionalConfig={},l.loadConfig=function(t){function e(){var t=i.shift();return t&&n&&"object"==typeof n&&t in n?(n=n[t],e()):t?void 0:n}var n,i,r,o=this.config;Object.keys(o).forEach(function(a){n=t,i=a.split("_"),r=e(),m(r)&&(o[a]=r)})},l.getScale=function(t,e,n){return(n?this.d3.time.scale():this.d3.scale.linear()).range([t,e])},l.getX=function(t,e,n,i){var r,o=this,a=o.getScale(t,e,o.isTimeSeries()),s=n?a.domain(n):a;o.isCategorized()?(i=i||function(){return 0},a=function(t,e){var n=s(t)+i(t);return e?n:Math.ceil(n)}):a=function(t,e){var n=s(t);return e?n:Math.ceil(n)};for(r in s)a[r]=s[r];return a.orgDomain=function(){return s.domain()},o.isCategorized()&&(a.domain=function(t){return arguments.length?(s.domain(t),a):(t=this.orgDomain(),[t[0],t[1]+1])}),a},l.getY=function(t,e,n){var i=this.getScale(t,e,this.isTimeSeriesY());return n&&i.domain(n),i},l.getYScale=function(t){return"y2"===this.axis.getId(t)?this.y2:this.y},l.getSubYScale=function(t){return"y2"===this.axis.getId(t)?this.subY2:this.subY},l.updateScales=function(){var t=this,e=t.config,n=!t.x;t.xMin=e.axis_rotated?1:0,t.xMax=e.axis_rotated?t.height:t.width,t.yMin=e.axis_rotated?0:t.height,t.yMax=e.axis_rotated?t.width:1,t.subXMin=t.xMin,t.subXMax=t.xMax,t.subYMin=e.axis_rotated?0:t.height2,t.subYMax=e.axis_rotated?t.width2:1,t.x=t.getX(t.xMin,t.xMax,n?void 0:t.x.orgDomain(),function(){return t.xAxis.tickOffset()}),t.y=t.getY(t.yMin,t.yMax,n?e.axis_y_default:t.y.domain()),t.y2=t.getY(t.yMin,t.yMax,n?e.axis_y2_default:t.y2.domain()),t.subX=t.getX(t.xMin,t.xMax,t.orgXDomain,function(e){return e%1?0:t.subXAxis.tickOffset()}),t.subY=t.getY(t.subYMin,t.subYMax,n?e.axis_y_default:t.subY.domain()),t.subY2=t.getY(t.subYMin,t.subYMax,n?e.axis_y2_default:t.subY2.domain()),t.xAxisTickFormat=t.axis.getXAxisTickFormat(),t.xAxisTickValues=t.axis.getXAxisTickValues(),t.yAxisTickValues=t.axis.getYAxisTickValues(),t.y2AxisTickValues=t.axis.getY2AxisTickValues(),
-t.xAxis=t.axis.getXAxis(t.x,t.xOrient,t.xAxisTickFormat,t.xAxisTickValues,e.axis_x_tick_outer),t.subXAxis=t.axis.getXAxis(t.subX,t.subXOrient,t.xAxisTickFormat,t.xAxisTickValues,e.axis_x_tick_outer),t.yAxis=t.axis.getYAxis(t.y,t.yOrient,e.axis_y_tick_format,t.yAxisTickValues,e.axis_y_tick_outer),t.y2Axis=t.axis.getYAxis(t.y2,t.y2Orient,e.axis_y2_tick_format,t.y2AxisTickValues,e.axis_y2_tick_outer),n||(t.brush&&t.brush.scale(t.subX),e.zoom_enabled&&t.zoom.scale(t.x)),t.updateArc&&t.updateArc()},l.getYDomainMin=function(t){var e,n,i,r,o,a,s=this,l=s.config,c=s.mapToIds(t),u=s.getValuesAsIdKeyed(t);if(l.data_groups.length>0)for(a=s.hasNegativeValueInTargets(t),e=0;e<l.data_groups.length;e++)if(r=l.data_groups[e].filter(function(t){return c.indexOf(t)>=0}),0!==r.length)for(i=r[0],a&&u[i]&&u[i].forEach(function(t,e){u[i][e]=t<0?t:0}),n=1;n<r.length;n++)o=r[n],u[o]&&u[o].forEach(function(t,e){s.axis.getId(o)!==s.axis.getId(i)||!u[i]||a&&+t>0||(u[i][e]+=+t)});return s.d3.min(Object.keys(u).map(function(t){return s.d3.min(u[t])}))},l.getYDomainMax=function(t){var e,n,i,r,o,a,s=this,l=s.config,c=s.mapToIds(t),u=s.getValuesAsIdKeyed(t);if(l.data_groups.length>0)for(a=s.hasPositiveValueInTargets(t),e=0;e<l.data_groups.length;e++)if(r=l.data_groups[e].filter(function(t){return c.indexOf(t)>=0}),0!==r.length)for(i=r[0],a&&u[i]&&u[i].forEach(function(t,e){u[i][e]=t>0?t:0}),n=1;n<r.length;n++)o=r[n],u[o]&&u[o].forEach(function(t,e){s.axis.getId(o)!==s.axis.getId(i)||!u[i]||a&&+t<0||(u[i][e]+=+t)});return s.d3.max(Object.keys(u).map(function(t){return s.d3.max(u[t])}))},l.getYDomain=function(t,e,n){var i,r,o,a,s,l,c,u,h,f,p,g=this,m=g.config,v=t.filter(function(t){return g.axis.getId(t.id)===e}),y=n?g.filterByXDomain(v,n):v,b="y2"===e?m.axis_y2_min:m.axis_y_min,w="y2"===e?m.axis_y2_max:m.axis_y_max,S=g.getYDomainMin(y),C=g.getYDomainMax(y),T="y2"===e?m.axis_y2_center:m.axis_y_center,k=g.hasType("bar",y)&&m.bar_zerobased||g.hasType("area",y)&&m.area_zerobased,A="y2"===e?m.axis_y2_inverted:m.axis_y_inverted,M=g.hasDataLabel()&&m.axis_rotated,L=g.hasDataLabel()&&!m.axis_rotated;return S=d(b)?b:d(w)?S<w?S:w-10:S,C=d(w)?w:d(b)?b<C?C:b+10:C,0===y.length?"y2"===e?g.y2.domain():g.y.domain():(isNaN(S)&&(S=0),isNaN(C)&&(C=S),S===C&&(S<0?C=0:S=0),f=S>=0&&C>=0,p=S<=0&&C<=0,(d(b)&&f||d(w)&&p)&&(k=!1),k&&(f&&(S=0),p&&(C=0)),r=Math.abs(C-S),o=a=s=.1*r,"undefined"!=typeof T&&(l=Math.max(Math.abs(S),Math.abs(C)),C=T+l,S=T-l),M?(c=g.getDataLabelLength(S,C,"width"),u=x(g.y.range()),h=[c[0]/u,c[1]/u],a+=r*(h[1]/(1-h[0]-h[1])),s+=r*(h[0]/(1-h[0]-h[1]))):L&&(c=g.getDataLabelLength(S,C,"height"),a+=g.axis.convertPixelsToAxisPadding(c[1],r),s+=g.axis.convertPixelsToAxisPadding(c[0],r)),"y"===e&&_(m.axis_y_padding)&&(a=g.axis.getPadding(m.axis_y_padding,"top",a,r),s=g.axis.getPadding(m.axis_y_padding,"bottom",s,r)),"y2"===e&&_(m.axis_y2_padding)&&(a=g.axis.getPadding(m.axis_y2_padding,"top",a,r),s=g.axis.getPadding(m.axis_y2_padding,"bottom",s,r)),k&&(f&&(s=S),p&&(a=-C)),i=[S-s,C+a],A?i.reverse():i)},l.getXDomainMin=function(t){var e=this,n=e.config;return m(n.axis_x_min)?e.isTimeSeries()?this.parseDate(n.axis_x_min):n.axis_x_min:e.d3.min(t,function(t){return e.d3.min(t.values,function(t){return t.x})})},l.getXDomainMax=function(t){var e=this,n=e.config;return m(n.axis_x_max)?e.isTimeSeries()?this.parseDate(n.axis_x_max):n.axis_x_max:e.d3.max(t,function(t){return e.d3.max(t.values,function(t){return t.x})})},l.getXDomainPadding=function(t){var e,n,i,r,o=this,a=o.config,s=t[1]-t[0];return o.isCategorized()?n=0:o.hasType("bar")?(e=o.getMaxDataCount(),n=e>1?s/(e-1)/2:.5):n=.01*s,"object"==typeof a.axis_x_padding&&_(a.axis_x_padding)?(i=d(a.axis_x_padding.left)?a.axis_x_padding.left:n,r=d(a.axis_x_padding.right)?a.axis_x_padding.right:n):i=r="number"==typeof a.axis_x_padding?a.axis_x_padding:n,{left:i,right:r}},l.getXDomain=function(t){var e=this,n=[e.getXDomainMin(t),e.getXDomainMax(t)],i=n[0],r=n[1],o=e.getXDomainPadding(n),a=0,s=0;return i-r!==0||e.isCategorized()||(e.isTimeSeries()?(i=new Date(.5*i.getTime()),r=new Date(1.5*r.getTime())):(i=0===i?1:.5*i,r=0===r?-1:1.5*r)),(i||0===i)&&(a=e.isTimeSeries()?new Date(i.getTime()-o.left):i-o.left),(r||0===r)&&(s=e.isTimeSeries()?new Date(r.getTime()+o.right):r+o.right),[a,s]},l.updateXDomain=function(t,e,n,i,r){var o=this,a=o.config;return n&&(o.x.domain(r?r:o.d3.extent(o.getXDomain(t))),o.orgXDomain=o.x.domain(),a.zoom_enabled&&o.zoom.scale(o.x).updateScaleExtent(),o.subX.domain(o.x.domain()),o.brush&&o.brush.scale(o.subX)),e&&(o.x.domain(r?r:!o.brush||o.brush.empty()?o.orgXDomain:o.brush.extent()),a.zoom_enabled&&o.zoom.scale(o.x).updateScaleExtent()),i&&o.x.domain(o.trimXDomain(o.x.orgDomain())),o.x.domain()},l.trimXDomain=function(t){var e=this.getZoomDomain(),n=e[0],i=e[1];return t[0]<=n&&(t[1]=+t[1]+(n-t[0]),t[0]=n),i<=t[1]&&(t[0]=+t[0]-(t[1]-i),t[1]=i),t},l.isX=function(t){var e=this,n=e.config;return n.data_x&&t===n.data_x||_(n.data_xs)&&S(n.data_xs,t)},l.isNotX=function(t){return!this.isX(t)},l.getXKey=function(t){var e=this,n=e.config;return n.data_x?n.data_x:_(n.data_xs)?n.data_xs[t]:null},l.getXValuesOfXKey=function(t,e){var n,i=this,r=e&&_(e)?i.mapToIds(e):[];return r.forEach(function(e){i.getXKey(e)===t&&(n=i.data.xs[e])}),n},l.getIndexByX=function(t){var e=this,n=e.filterByX(e.data.targets,t);return n.length?n[0].index:null},l.getXValue=function(t,e){var n=this;return t in n.data.xs&&n.data.xs[t]&&d(n.data.xs[t][e])?n.data.xs[t][e]:e},l.getOtherTargetXs=function(){var t=this,e=Object.keys(t.data.xs);return e.length?t.data.xs[e[0]]:null},l.getOtherTargetX=function(t){var e=this.getOtherTargetXs();return e&&t<e.length?e[t]:null},l.addXs=function(t){var e=this;Object.keys(t).forEach(function(n){e.config.data_xs[n]=t[n]})},l.hasMultipleX=function(t){return this.d3.set(Object.keys(t).map(function(e){return t[e]})).size()>1},l.isMultipleX=function(){return _(this.config.data_xs)||!this.config.data_xSort||this.hasType("scatter")},l.addName=function(t){var e,n=this;return t&&(e=n.config.data_names[t.id],t.name=void 0!==e?e:t.id),t},l.getValueOnIndex=function(t,e){var n=t.filter(function(t){return t.index===e});return n.length?n[0]:null},l.updateTargetX=function(t,e){var n=this;t.forEach(function(t){t.values.forEach(function(i,r){i.x=n.generateTargetX(e[r],t.id,r)}),n.data.xs[t.id]=e})},l.updateTargetXs=function(t,e){var n=this;t.forEach(function(t){e[t.id]&&n.updateTargetX([t],e[t.id])})},l.generateTargetX=function(t,e,n){var i,r=this;return i=r.isTimeSeries()?t?r.parseDate(t):r.parseDate(r.getXValue(e,n)):r.isCustomX()&&!r.isCategorized()?d(t)?+t:r.getXValue(e,n):n},l.cloneTarget=function(t){return{id:t.id,id_org:t.id_org,values:t.values.map(function(t){return{x:t.x,value:t.value,id:t.id}})}},l.updateXs=function(){var t=this;t.data.targets.length&&(t.xs=[],t.data.targets[0].values.forEach(function(e){t.xs[e.index]=e.x}))},l.getPrevX=function(t){var e=this.xs[t-1];return"undefined"!=typeof e?e:null},l.getNextX=function(t){var e=this.xs[t+1];return"undefined"!=typeof e?e:null},l.getMaxDataCount=function(){var t=this;return t.d3.max(t.data.targets,function(t){return t.values.length})},l.getMaxDataCountTarget=function(t){var e,n=t.length,i=0;return n>1?t.forEach(function(t){t.values.length>i&&(e=t,i=t.values.length)}):e=n?t[0]:null,e},l.getEdgeX=function(t){var e=this;return t.length?[e.d3.min(t,function(t){return t.values[0].x}),e.d3.max(t,function(t){return t.values[t.values.length-1].x})]:[0,0]},l.mapToIds=function(t){return t.map(function(t){return t.id})},l.mapToTargetIds=function(t){var e=this;return t?[].concat(t):e.mapToIds(e.data.targets)},l.hasTarget=function(t,e){var n,i=this.mapToIds(t);for(n=0;n<i.length;n++)if(i[n]===e)return!0;return!1},l.isTargetToShow=function(t){return this.hiddenTargetIds.indexOf(t)<0},l.isLegendToShow=function(t){return this.hiddenLegendIds.indexOf(t)<0},l.filterTargetsToShow=function(t){var e=this;return t.filter(function(t){return e.isTargetToShow(t.id)})},l.mapTargetsToUniqueXs=function(t){var e=this,n=e.d3.set(e.d3.merge(t.map(function(t){return t.values.map(function(t){return+t.x})}))).values();return n=e.isTimeSeries()?n.map(function(t){return new Date(+t)}):n.map(function(t){return+t}),n.sort(function(t,e){return t<e?-1:t>e?1:t>=e?0:NaN})},l.addHiddenTargetIds=function(t){this.hiddenTargetIds=this.hiddenTargetIds.concat(t)},l.removeHiddenTargetIds=function(t){this.hiddenTargetIds=this.hiddenTargetIds.filter(function(e){return t.indexOf(e)<0})},l.addHiddenLegendIds=function(t){this.hiddenLegendIds=this.hiddenLegendIds.concat(t)},l.removeHiddenLegendIds=function(t){this.hiddenLegendIds=this.hiddenLegendIds.filter(function(e){return t.indexOf(e)<0})},l.getValuesAsIdKeyed=function(t){var e={};return t.forEach(function(t){e[t.id]=[],t.values.forEach(function(n){e[t.id].push(n.value)})}),e},l.checkValueInTargets=function(t,e){var n,i,r,o=Object.keys(t);for(n=0;n<o.length;n++)for(r=t[o[n]].values,i=0;i<r.length;i++)if(e(r[i].value))return!0;return!1},l.hasNegativeValueInTargets=function(t){return this.checkValueInTargets(t,function(t){return t<0})},l.hasPositiveValueInTargets=function(t){return this.checkValueInTargets(t,function(t){return t>0})},l.isOrderDesc=function(){var t=this.config;return"string"==typeof t.data_order&&"desc"===t.data_order.toLowerCase()},l.isOrderAsc=function(){var t=this.config;return"string"==typeof t.data_order&&"asc"===t.data_order.toLowerCase()},l.orderTargets=function(t){var e=this,n=e.config,i=e.isOrderAsc(),r=e.isOrderDesc();return i||r?t.sort(function(t,e){var n=function(t,e){return t+Math.abs(e.value)},r=t.values.reduce(n,0),o=e.values.reduce(n,0);return i?o-r:r-o}):f(n.data_order)&&t.sort(n.data_order),t},l.filterByX=function(t,e){return this.d3.merge(t.map(function(t){return t.values})).filter(function(t){return t.x-e===0})},l.filterRemoveNull=function(t){return t.filter(function(t){return d(t.value)})},l.filterByXDomain=function(t,e){return t.map(function(t){return{id:t.id,id_org:t.id_org,values:t.values.filter(function(t){return e[0]<=t.x&&t.x<=e[1]})}})},l.hasDataLabel=function(){var t=this.config;return!("boolean"!=typeof t.data_labels||!t.data_labels)||!("object"!=typeof t.data_labels||!_(t.data_labels))},l.getDataLabelLength=function(t,e,n){var i=this,r=[0,0],o=1.3;return i.selectChart.select("svg").selectAll(".dummy").data([t,e]).enter().append("text").text(function(t){return i.dataLabelFormat(t.id)(t)}).each(function(t,e){r[e]=this.getBoundingClientRect()[n]*o}).remove(),r},l.isNoneArc=function(t){return this.hasTarget(this.data.targets,t.id)},l.isArc=function(t){return"data"in t&&this.hasTarget(this.data.targets,t.data.id)},l.findSameXOfValues=function(t,e){var n,i=t[e].x,r=[];for(n=e-1;n>=0&&i===t[n].x;n--)r.push(t[n]);for(n=e;n<t.length&&i===t[n].x;n++)r.push(t[n]);return r},l.findClosestFromTargets=function(t,e){var n,i=this;return n=t.map(function(t){return i.findClosest(t.values,e)}),i.findClosest(n,e)},l.findClosest=function(t,e){var n,i=this,r=i.config.point_sensitivity;return t.filter(function(t){return t&&i.isBarType(t.id)}).forEach(function(t){var e=i.main.select("."+h.bars+i.getTargetSelectorSuffix(t.id)+" ."+h.bar+"-"+t.index).node();!n&&i.isWithinBar(e)&&(n=t)}),t.filter(function(t){return t&&!i.isBarType(t.id)}).forEach(function(t){var o=i.dist(t,e);o<r&&(r=o,n=t)}),n},l.dist=function(t,e){var n=this,i=n.config,r=i.axis_rotated?1:0,o=i.axis_rotated?0:1,a=n.circleY(t,t.index),s=n.x(t.x);return Math.sqrt(Math.pow(s-e[r],2)+Math.pow(a-e[o],2))},l.convertValuesToStep=function(t){var e,n=[].concat(t);if(!this.isCategorized())return t;for(e=t.length+1;0<e;e--)n[e]=n[e-1];return n[0]={x:n[0].x-1,value:n[0].value,id:n[0].id},n[t.length+1]={x:n[t.length].x+1,value:n[t.length].value,id:n[t.length].id},n},l.updateDataAttributes=function(t,e){var n=this,i=n.config,r=i["data_"+t];return"undefined"==typeof e?r:(Object.keys(e).forEach(function(t){r[t]=e[t]}),n.redraw({withLegend:!0}),r)},l.convertUrlToData=function(t,e,n,i,r){var o=this,a=e?e:"csv",s=o.d3.xhr(t);n&&Object.keys(n).forEach(function(t){s.header(t,n[t])}),s.get(function(t,e){var n;if(!e)throw new Error(t.responseURL+" "+t.status+" ("+t.statusText+")");n="json"===a?o.convertJsonToData(JSON.parse(e.response),i):"tsv"===a?o.convertTsvToData(e.response):o.convertCsvToData(e.response),r.call(o,n)})},l.convertXsvToData=function(t,e){var n,i=e.parseRows(t);return 1===i.length?(n=[{}],i[0].forEach(function(t){n[0][t]=null})):n=e.parse(t),n},l.convertCsvToData=function(t){return this.convertXsvToData(t,this.d3.csv)},l.convertTsvToData=function(t){return this.convertXsvToData(t,this.d3.tsv)},l.convertJsonToData=function(t,e){var n,i,r=this,o=[];return e?(e.x?(n=e.value.concat(e.x),r.config.data_x=e.x):n=e.value,o.push(n),t.forEach(function(t){var e=[];n.forEach(function(n){var i=r.findValueInJson(t,n);g(i)&&(i=null),e.push(i)}),o.push(e)}),i=r.convertRowsToData(o)):(Object.keys(t).forEach(function(e){o.push([e].concat(t[e]))}),i=r.convertColumnsToData(o)),i},l.findValueInJson=function(t,e){e=e.replace(/\[(\w+)\]/g,".$1"),e=e.replace(/^\./,"");for(var n=e.split("."),i=0;i<n.length;++i){var r=n[i];if(!(r in t))return;t=t[r]}return t},l.convertRowsToData=function(t){var e,n,i=t[0],r={},o=[];for(e=1;e<t.length;e++){for(r={},n=0;n<t[e].length;n++){if(g(t[e][n]))throw new Error("Source data is missing a component at ("+e+","+n+")!");r[i[n]]=t[e][n]}o.push(r)}return o},l.convertColumnsToData=function(t){var e,n,i,r=[];for(e=0;e<t.length;e++)for(i=t[e][0],n=1;n<t[e].length;n++){if(g(r[n-1])&&(r[n-1]={}),g(t[e][n]))throw new Error("Source data is missing a component at ("+e+","+n+")!");r[n-1][i]=t[e][n]}return r},l.convertDataToTargets=function(t,e){var n,i=this,r=i.config,o=i.d3.keys(t[0]).filter(i.isNotX,i),a=i.d3.keys(t[0]).filter(i.isX,i);return o.forEach(function(n){var o=i.getXKey(n);i.isCustomX()||i.isTimeSeries()?a.indexOf(o)>=0?i.data.xs[n]=(e&&i.data.xs[n]?i.data.xs[n]:[]).concat(t.map(function(t){return t[o]}).filter(d).map(function(t,e){return i.generateTargetX(t,n,e)})):r.data_x?i.data.xs[n]=i.getOtherTargetXs():_(r.data_xs)&&(i.data.xs[n]=i.getXValuesOfXKey(o,i.data.targets)):i.data.xs[n]=t.map(function(t,e){return e})}),o.forEach(function(t){if(!i.data.xs[t])throw new Error('x is not defined for id = "'+t+'".')}),n=o.map(function(e,n){var o=r.data_idConverter(e);return{id:o,id_org:e,values:t.map(function(t,a){var s,l=i.getXKey(e),c=t[l],u=null===t[e]||isNaN(t[e])?null:+t[e];return i.isCustomX()&&i.isCategorized()&&0===n&&!g(c)?(0===n&&0===a&&(r.axis_x_categories=[]),s=r.axis_x_categories.indexOf(c),s===-1&&(s=r.axis_x_categories.length,r.axis_x_categories.push(c))):s=i.generateTargetX(c,e,a),(g(t[e])||i.data.xs[e].length<=a)&&(s=void 0),{x:s,value:u,id:o}}).filter(function(t){return m(t.x)})}}),n.forEach(function(t){var e;r.data_xSort&&(t.values=t.values.sort(function(t,e){var n=t.x||0===t.x?t.x:1/0,i=e.x||0===e.x?e.x:1/0;return n-i})),e=0,t.values.forEach(function(t){t.index=e++}),i.data.xs[t.id].sort(function(t,e){return t-e})}),i.hasNegativeValue=i.hasNegativeValueInTargets(n),i.hasPositiveValue=i.hasPositiveValueInTargets(n),r.data_type&&i.setTargetType(i.mapToIds(n).filter(function(t){return!(t in r.data_types)}),r.data_type),n.forEach(function(t){i.addCache(t.id_org,t)}),n},l.load=function(t,e){var n=this;t&&(e.filter&&(t=t.filter(e.filter)),(e.type||e.types)&&t.forEach(function(t){var i=e.types&&e.types[t.id]?e.types[t.id]:e.type;n.setTargetType(t.id,i)}),n.data.targets.forEach(function(e){for(var n=0;n<t.length;n++)if(e.id===t[n].id){e.values=t[n].values,t.splice(n,1);break}}),n.data.targets=n.data.targets.concat(t)),n.updateTargets(n.data.targets),n.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0}),e.done&&e.done()},l.loadFromArgs=function(t){var e=this;t.data?e.load(e.convertDataToTargets(t.data),t):t.url?e.convertUrlToData(t.url,t.mimeType,t.headers,t.keys,function(n){e.load(e.convertDataToTargets(n),t)}):t.json?e.load(e.convertDataToTargets(e.convertJsonToData(t.json,t.keys)),t):t.rows?e.load(e.convertDataToTargets(e.convertRowsToData(t.rows)),t):t.columns?e.load(e.convertDataToTargets(e.convertColumnsToData(t.columns)),t):e.load(null,t)},l.unload=function(t,e){var n=this;return e||(e=function(){}),t=t.filter(function(t){return n.hasTarget(n.data.targets,t)}),t&&0!==t.length?(n.svg.selectAll(t.map(function(t){return n.selectorTarget(t)})).transition().style("opacity",0).remove().call(n.endall,e),void t.forEach(function(t){n.withoutFadeIn[t]=!1,n.legend&&n.legend.selectAll("."+h.legendItem+n.getTargetSelectorSuffix(t)).remove(),n.data.targets=n.data.targets.filter(function(e){return e.id!==t})})):void e()},l.categoryName=function(t){var e=this.config;return t<e.axis_x_categories.length?e.axis_x_categories[t]:t},l.initEventRect=function(){var t=this;t.main.select("."+h.chart).append("g").attr("class",h.eventRects).style("fill-opacity",0)},l.redrawEventRect=function(){var t,e,n=this,i=n.config,r=n.isMultipleX(),o=n.main.select("."+h.eventRects).style("cursor",i.zoom_enabled?i.axis_rotated?"ns-resize":"ew-resize":null).classed(h.eventRectsMultiple,r).classed(h.eventRectsSingle,!r);o.selectAll("."+h.eventRect).remove(),n.eventRect=o.selectAll("."+h.eventRect),r?(t=n.eventRect.data([0]),n.generateEventRectsForMultipleXs(t.enter()),n.updateEventRect(t)):(e=n.getMaxDataCountTarget(n.data.targets),o.datum(e?e.values:[]),n.eventRect=o.selectAll("."+h.eventRect),t=n.eventRect.data(function(t){return t}),n.generateEventRectsForSingleX(t.enter()),n.updateEventRect(t),t.exit().remove())},l.updateEventRect=function(t){var e,n,i,r,o,a,s=this,l=s.config;t=t||s.eventRect.data(function(t){return t}),s.isMultipleX()?(e=0,n=0,i=s.width,r=s.height):(!s.isCustomX()&&!s.isTimeSeries()||s.isCategorized()?(o=s.getEventRectWidth(),a=function(t){return s.x(t.x)-o/2}):(s.updateXs(),o=function(t){var e=s.getPrevX(t.index),n=s.getNextX(t.index);return null===e&&null===n?l.axis_rotated?s.height:s.width:(null===e&&(e=s.x.domain()[0]),null===n&&(n=s.x.domain()[1]),Math.max(0,(s.x(n)-s.x(e))/2))},a=function(t){var e=s.getPrevX(t.index),n=s.getNextX(t.index),i=s.data.xs[t.id][t.index];return null===e&&null===n?0:(null===e&&(e=s.x.domain()[0]),(s.x(i)+s.x(e))/2)}),e=l.axis_rotated?0:a,n=l.axis_rotated?a:0,i=l.axis_rotated?s.width:o,r=l.axis_rotated?o:s.height),t.attr("class",s.classEvent.bind(s)).attr("x",e).attr("y",n).attr("width",i).attr("height",r)},l.generateEventRectsForSingleX=function(t){var e=this,n=e.d3,i=e.config;t.append("rect").attr("class",e.classEvent.bind(e)).style("cursor",i.data_selection_enabled&&i.data_selection_grouped?"pointer":null).on("mouseover",function(t){var n=t.index;e.dragging||e.flowing||e.hasArcType()||(i.point_focus_expand_enabled&&e.expandCircles(n,null,!0),e.expandBars(n,null,!0),e.main.selectAll("."+h.shape+"-"+n).each(function(t){i.data_onmouseover.call(e.api,t)}))}).on("mouseout",function(t){var n=t.index;e.config&&(e.hasArcType()||(e.hideXGridFocus(),e.hideTooltip(),e.unexpandCircles(),e.unexpandBars(),e.main.selectAll("."+h.shape+"-"+n).each(function(t){i.data_onmouseout.call(e.api,t)})))}).on("mousemove",function(t){var r,o=t.index,a=e.svg.select("."+h.eventRect+"-"+o);e.dragging||e.flowing||e.hasArcType()||(e.isStepType(t)&&"step-after"===e.config.line_step_type&&n.mouse(this)[0]<e.x(e.getXValue(t.id,o))&&(o-=1),r=e.filterTargetsToShow(e.data.targets).map(function(t){return e.addName(e.getValueOnIndex(t.values,o))}),i.tooltip_grouped&&(e.showTooltip(r,this),e.showXGridFocus(r)),(!i.tooltip_grouped||i.data_selection_enabled&&!i.data_selection_grouped)&&e.main.selectAll("."+h.shape+"-"+o).each(function(){n.select(this).classed(h.EXPANDED,!0),i.data_selection_enabled&&a.style("cursor",i.data_selection_grouped?"pointer":null),i.tooltip_grouped||(e.hideXGridFocus(),e.hideTooltip(),i.data_selection_grouped||(e.unexpandCircles(o),e.unexpandBars(o)))}).filter(function(t){return e.isWithinShape(this,t)}).each(function(t){i.data_selection_enabled&&(i.data_selection_grouped||i.data_selection_isselectable(t))&&a.style("cursor","pointer"),i.tooltip_grouped||(e.showTooltip([t],this),e.showXGridFocus([t]),i.point_focus_expand_enabled&&e.expandCircles(o,t.id,!0),e.expandBars(o,t.id,!0))}))}).on("click",function(t){var r=t.index;if(!e.hasArcType()&&e.toggleShape){if(e.cancelClick)return void(e.cancelClick=!1);e.isStepType(t)&&"step-after"===i.line_step_type&&n.mouse(this)[0]<e.x(e.getXValue(t.id,r))&&(r-=1),e.main.selectAll("."+h.shape+"-"+r).each(function(t){(i.data_selection_grouped||e.isWithinShape(this,t))&&(e.toggleShape(this,t,r),e.config.data_onclick.call(e.api,t,this))})}}).call(i.data_selection_draggable&&e.drag?n.behavior.drag().origin(Object).on("drag",function(){e.drag(n.mouse(this))}).on("dragstart",function(){e.dragstart(n.mouse(this))}).on("dragend",function(){e.dragend()}):function(){})},l.generateEventRectsForMultipleXs=function(t){function e(){n.svg.select("."+h.eventRect).style("cursor",null),n.hideXGridFocus(),n.hideTooltip(),n.unexpandCircles(),n.unexpandBars()}var n=this,i=n.d3,r=n.config;t.append("rect").attr("x",0).attr("y",0).attr("width",n.width).attr("height",n.height).attr("class",h.eventRect).on("mouseout",function(){n.config&&(n.hasArcType()||e())}).on("mousemove",function(){var t,o,a,s,l=n.filterTargetsToShow(n.data.targets);if(!n.dragging&&!n.hasArcType(l)){if(t=i.mouse(this),o=n.findClosestFromTargets(l,t),!n.mouseover||o&&o.id===n.mouseover.id||(r.data_onmouseout.call(n.api,n.mouseover),n.mouseover=void 0),!o)return void e();a=n.isScatterType(o)||!r.tooltip_grouped?[o]:n.filterByX(l,o.x),s=a.map(function(t){return n.addName(t)}),n.showTooltip(s,this),r.point_focus_expand_enabled&&n.expandCircles(o.index,o.id,!0),n.expandBars(o.index,o.id,!0),n.showXGridFocus(s),(n.isBarType(o.id)||n.dist(o,t)<r.point_sensitivity)&&(n.svg.select("."+h.eventRect).style("cursor","pointer"),n.mouseover||(r.data_onmouseover.call(n.api,o),n.mouseover=o))}}).on("click",function(){var t,e,o=n.filterTargetsToShow(n.data.targets);n.hasArcType(o)||(t=i.mouse(this),e=n.findClosestFromTargets(o,t),e&&(n.isBarType(e.id)||n.dist(e,t)<r.point_sensitivity)&&n.main.selectAll("."+h.shapes+n.getTargetSelectorSuffix(e.id)).selectAll("."+h.shape+"-"+e.index).each(function(){(r.data_selection_grouped||n.isWithinShape(this,e))&&(n.toggleShape(this,e,e.index),n.config.data_onclick.call(n.api,e,this))}))}).call(r.data_selection_draggable&&n.drag?i.behavior.drag().origin(Object).on("drag",function(){n.drag(i.mouse(this))}).on("dragstart",function(){n.dragstart(i.mouse(this))}).on("dragend",function(){n.dragend()}):function(){})},l.dispatchEvent=function(e,n,i){var r=this,o="."+h.eventRect+(r.isMultipleX()?"":"-"+n),a=r.main.select(o).node(),s=a.getBoundingClientRect(),l=s.left+(i?i[0]:0),c=s.top+(i?i[1]:0),u=document.createEvent("MouseEvents");u.initMouseEvent(e,!0,!0,t,0,l,c,l,c,!1,!1,!1,!1,0,null),a.dispatchEvent(u)},l.getCurrentWidth=function(){var t=this,e=t.config;return e.size_width?e.size_width:t.getParentWidth()},l.getCurrentHeight=function(){var t=this,e=t.config,n=e.size_height?e.size_height:t.getParentHeight();return n>0?n:320/(t.hasType("gauge")&&!e.gauge_fullCircle?2:1)},l.getCurrentPaddingTop=function(){var t=this,e=t.config,n=d(e.padding_top)?e.padding_top:0;return t.title&&t.title.node()&&(n+=t.getTitlePadding()),n},l.getCurrentPaddingBottom=function(){var t=this.config;return d(t.padding_bottom)?t.padding_bottom:0},l.getCurrentPaddingLeft=function(t){var e=this,n=e.config;return d(n.padding_left)?n.padding_left:n.axis_rotated?n.axis_x_show?Math.max(v(e.getAxisWidthByAxisId("x",t)),40):1:!n.axis_y_show||n.axis_y_inner?e.axis.getYAxisLabelPosition().isOuter?30:1:v(e.getAxisWidthByAxisId("y",t))},l.getCurrentPaddingRight=function(){var t=this,e=t.config,n=10,i=t.isLegendRight?t.getLegendWidth()+20:0;return d(e.padding_right)?e.padding_right+1:e.axis_rotated?n+i:!e.axis_y2_show||e.axis_y2_inner?2+i+(t.axis.getY2AxisLabelPosition().isOuter?20:0):v(t.getAxisWidthByAxisId("y2"))+i},l.getParentRectValue=function(t){for(var e,n=this.selectChart.node();n&&"BODY"!==n.tagName;){try{e=n.getBoundingClientRect()[t]}catch(i){"width"===t&&(e=n.offsetWidth)}if(e)break;n=n.parentNode}return e},l.getParentWidth=function(){return this.getParentRectValue("width")},l.getParentHeight=function(){var t=this.selectChart.style("height");return t.indexOf("px")>0?+t.replace("px",""):0},l.getSvgLeft=function(t){var e=this,n=e.config,i=n.axis_rotated||!n.axis_rotated&&!n.axis_y_inner,r=n.axis_rotated?h.axisX:h.axisY,o=e.main.select("."+r).node(),a=o&&i?o.getBoundingClientRect():{right:0},s=e.selectChart.node().getBoundingClientRect(),l=e.hasArcType(),c=a.right-s.left-(l?0:e.getCurrentPaddingLeft(t));return c>0?c:0},l.getAxisWidthByAxisId=function(t,e){var n=this,i=n.axis.getLabelPositionById(t);return n.axis.getMaxTickWidth(t,e)+(i.isInner?20:40)},l.getHorizontalAxisHeight=function(t){var e=this,n=e.config,i=30;return"x"!==t||n.axis_x_show?"x"===t&&n.axis_x_height?n.axis_x_height:"y"!==t||n.axis_y_show?"y2"!==t||n.axis_y2_show?("x"===t&&!n.axis_rotated&&n.axis_x_tick_rotate&&(i=30+e.axis.getMaxTickWidth(t)*Math.cos(Math.PI*(90-n.axis_x_tick_rotate)/180)),"y"===t&&n.axis_rotated&&n.axis_y_tick_rotate&&(i=30+e.axis.getMaxTickWidth(t)*Math.cos(Math.PI*(90-n.axis_y_tick_rotate)/180)),i+(e.axis.getLabelPositionById(t).isInner?0:10)+("y2"===t?-10:0)):e.rotated_padding_top:!n.legend_show||e.isLegendRight||e.isLegendInset?1:10:8},l.getEventRectWidth=function(){return Math.max(0,this.xAxis.tickInterval())},l.getShapeIndices=function(t){var e,n,i=this,r=i.config,o={},a=0;return i.filterTargetsToShow(i.data.targets.filter(t,i)).forEach(function(t){for(e=0;e<r.data_groups.length;e++)if(!(r.data_groups[e].indexOf(t.id)<0))for(n=0;n<r.data_groups[e].length;n++)if(r.data_groups[e][n]in o){o[t.id]=o[r.data_groups[e][n]];break}g(o[t.id])&&(o[t.id]=a++)}),o.__max__=a-1,o},l.getShapeX=function(t,e,n,i){var r=this,o=i?r.subX:r.x;return function(i){var r=i.id in n?n[i.id]:0;return i.x||0===i.x?o(i.x)-t*(e/2-r):0}},l.getShapeY=function(t){var e=this;return function(n){var i=t?e.getSubYScale(n.id):e.getYScale(n.id);return i(n.value)}},l.getShapeOffset=function(t,e,n){var i=this,r=i.orderTargets(i.filterTargetsToShow(i.data.targets.filter(t,i))),o=r.map(function(t){return t.id});return function(t,a){var s=n?i.getSubYScale(t.id):i.getYScale(t.id),l=s(0),c=l;return r.forEach(function(n){var r=i.isStepType(t)?i.convertValuesToStep(n.values):n.values;n.id!==t.id&&e[n.id]===e[t.id]&&o.indexOf(n.id)<o.indexOf(t.id)&&("undefined"!=typeof r[a]&&+r[a].x===+t.x||(a=-1,r.forEach(function(e,n){e.x===t.x&&(a=n)})),a in r&&r[a].value*t.value>=0&&(c+=s(r[a].value)-l))}),c}},l.isWithinShape=function(t,e){var n,i=this,r=i.d3.select(t);return i.isTargetToShow(e.id)?"circle"===t.nodeName?n=i.isStepType(e)?i.isWithinStep(t,i.getYScale(e.id)(e.value)):i.isWithinCircle(t,1.5*i.pointSelectR(e)):"path"===t.nodeName&&(n=!r.classed(h.bar)||i.isWithinBar(t)):n=!1,n},l.getInterpolate=function(t){var e=this,n=e.isInterpolationType(e.config.spline_interpolation_type)?e.config.spline_interpolation_type:"cardinal";return e.isSplineType(t)?n:e.isStepType(t)?e.config.line_step_type:"linear"},l.initLine=function(){var t=this;t.main.select("."+h.chart).append("g").attr("class",h.chartLines)},l.updateTargetsForLine=function(t){var e,n,i=this,r=i.config,o=i.classChartLine.bind(i),a=i.classLines.bind(i),s=i.classAreas.bind(i),l=i.classCircles.bind(i),c=i.classFocus.bind(i);e=i.main.select("."+h.chartLines).selectAll("."+h.chartLine).data(t).attr("class",function(t){return o(t)+c(t)}),n=e.enter().append("g").attr("class",o).style("opacity",0).style("pointer-events","none"),n.append("g").attr("class",a),n.append("g").attr("class",s),n.append("g").attr("class",function(t){return i.generateClass(h.selectedCircles,t.id)}),n.append("g").attr("class",l).style("cursor",function(t){return r.data_selection_isselectable(t)?"pointer":null}),t.forEach(function(t){i.main.selectAll("."+h.selectedCircles+i.getTargetSelectorSuffix(t.id)).selectAll("."+h.selectedCircle).each(function(e){e.value=t.values[e.index].value})})},l.updateLine=function(t){var e=this;e.mainLine=e.main.selectAll("."+h.lines).selectAll("."+h.line).data(e.lineData.bind(e)),e.mainLine.enter().append("path").attr("class",e.classLine.bind(e)).style("stroke",e.color),e.mainLine.style("opacity",e.initialOpacity.bind(e)).style("shape-rendering",function(t){return e.isStepType(t)?"crispEdges":""}).attr("transform",null),e.mainLine.exit().transition().duration(t).style("opacity",0).remove()},l.redrawLine=function(t,e){return[(e?this.mainLine.transition(Math.random().toString()):this.mainLine).attr("d",t).style("stroke",this.color).style("opacity",1)]},l.generateDrawLine=function(t,e){var n=this,i=n.config,r=n.d3.svg.line(),o=n.generateGetLinePoints(t,e),a=e?n.getSubYScale:n.getYScale,s=function(t){return(e?n.subxx:n.xx).call(n,t)},l=function(t,e){return i.data_groups.length>0?o(t,e)[0][1]:a.call(n,t.id)(t.value)};return r=i.axis_rotated?r.x(l).y(s):r.x(s).y(l),i.line_connectNull||(r=r.defined(function(t){return null!=t.value})),function(t){var o,s=i.line_connectNull?n.filterRemoveNull(t.values):t.values,l=e?n.x:n.subX,c=a.call(n,t.id),u=0,h=0;return n.isLineType(t)?i.data_regions[t.id]?o=n.lineWithRegions(s,l,c,i.data_regions[t.id]):(n.isStepType(t)&&(s=n.convertValuesToStep(s)),o=r.interpolate(n.getInterpolate(t))(s)):(s[0]&&(u=l(s[0].x),h=c(s[0].value)),o=i.axis_rotated?"M "+h+" "+u:"M "+u+" "+h),o?o:"M 0 0"}},l.generateGetLinePoints=function(t,e){var n=this,i=n.config,r=t.__max__+1,o=n.getShapeX(0,r,t,!!e),a=n.getShapeY(!!e),s=n.getShapeOffset(n.isLineType,t,!!e),l=e?n.getSubYScale:n.getYScale;return function(t,e){var r=l.call(n,t.id)(0),c=s(t,e)||r,u=o(t),h=a(t);return i.axis_rotated&&(0<t.value&&h<r||t.value<0&&r<h)&&(h=r),[[u,h-(r-c)],[u,h-(r-c)],[u,h-(r-c)],[u,h-(r-c)]]}},l.lineWithRegions=function(t,e,n,i){function r(t,e){var n;for(n=0;n<e.length;n++)if(e[n].start<t&&t<=e[n].end)return!0;return!1}function o(t){return"M"+t[0][0]+" "+t[0][1]+" "+t[1][0]+" "+t[1][1]}var a,s,l,c,u,h,d,f,p,v,y,x,b=this,_=b.config,w=-1,S="M",C=b.isCategorized()?.5:0,T=[];if(m(i))for(a=0;a<i.length;a++)T[a]={},g(i[a].start)?T[a].start=t[0].x:T[a].start=b.isTimeSeries()?b.parseDate(i[a].start):i[a].start,g(i[a].end)?T[a].end=t[t.length-1].x:T[a].end=b.isTimeSeries()?b.parseDate(i[a].end):i[a].end;for(y=_.axis_rotated?function(t){return n(t.value)}:function(t){return e(t.x)},x=_.axis_rotated?function(t){return e(t.x)}:function(t){return n(t.value)},l=b.isTimeSeries()?function(t,i,r,a){var s,l=t.x.getTime(),c=i.x-t.x,h=new Date(l+c*r),d=new Date(l+c*(r+a));return s=_.axis_rotated?[[n(u(r)),e(h)],[n(u(r+a)),e(d)]]:[[e(h),n(u(r))],[e(d),n(u(r+a))]],o(s)}:function(t,i,r,a){var s;return s=_.axis_rotated?[[n(u(r),!0),e(c(r))],[n(u(r+a),!0),e(c(r+a))]]:[[e(c(r),!0),n(u(r))],[e(c(r+a),!0),n(u(r+a))]],o(s)},a=0;a<t.length;a++){if(g(T)||!r(t[a].x,T))S+=" "+y(t[a])+" "+x(t[a]);else for(c=b.getScale(t[a-1].x+C,t[a].x+C,b.isTimeSeries()),u=b.getScale(t[a-1].value,t[a].value),h=e(t[a].x)-e(t[a-1].x),d=n(t[a].value)-n(t[a-1].value),f=Math.sqrt(Math.pow(h,2)+Math.pow(d,2)),p=2/f,v=2*p,s=p;s<=1;s+=v)S+=l(t[a-1],t[a],s,p);w=t[a].x}return S},l.updateArea=function(t){var e=this,n=e.d3;e.mainArea=e.main.selectAll("."+h.areas).selectAll("."+h.area).data(e.lineData.bind(e)),e.mainArea.enter().append("path").attr("class",e.classArea.bind(e)).style("fill",e.color).style("opacity",function(){return e.orgAreaOpacity=+n.select(this).style("opacity"),0}),e.mainArea.style("opacity",e.orgAreaOpacity),e.mainArea.exit().transition().duration(t).style("opacity",0).remove()},l.redrawArea=function(t,e){return[(e?this.mainArea.transition(Math.random().toString()):this.mainArea).attr("d",t).style("fill",this.color).style("opacity",this.orgAreaOpacity)]},l.generateDrawArea=function(t,e){var n=this,i=n.config,r=n.d3.svg.area(),o=n.generateGetAreaPoints(t,e),a=e?n.getSubYScale:n.getYScale,s=function(t){return(e?n.subxx:n.xx).call(n,t)},l=function(t,e){return i.data_groups.length>0?o(t,e)[0][1]:a.call(n,t.id)(n.getAreaBaseValue(t.id));
-},c=function(t,e){return i.data_groups.length>0?o(t,e)[1][1]:a.call(n,t.id)(t.value)};return r=i.axis_rotated?r.x0(l).x1(c).y(s):r.x(s).y0(i.area_above?0:l).y1(c),i.line_connectNull||(r=r.defined(function(t){return null!==t.value})),function(t){var e,o=i.line_connectNull?n.filterRemoveNull(t.values):t.values,a=0,s=0;return n.isAreaType(t)?(n.isStepType(t)&&(o=n.convertValuesToStep(o)),e=r.interpolate(n.getInterpolate(t))(o)):(o[0]&&(a=n.x(o[0].x),s=n.getYScale(t.id)(o[0].value)),e=i.axis_rotated?"M "+s+" "+a:"M "+a+" "+s),e?e:"M 0 0"}},l.getAreaBaseValue=function(){return 0},l.generateGetAreaPoints=function(t,e){var n=this,i=n.config,r=t.__max__+1,o=n.getShapeX(0,r,t,!!e),a=n.getShapeY(!!e),s=n.getShapeOffset(n.isAreaType,t,!!e),l=e?n.getSubYScale:n.getYScale;return function(t,e){var r=l.call(n,t.id)(0),c=s(t,e)||r,u=o(t),h=a(t);return i.axis_rotated&&(0<t.value&&h<r||t.value<0&&r<h)&&(h=r),[[u,c],[u,h-(r-c)],[u,h-(r-c)],[u,c]]}},l.updateCircle=function(){var t=this;t.mainCircle=t.main.selectAll("."+h.circles).selectAll("."+h.circle).data(t.lineOrScatterData.bind(t)),t.mainCircle.enter().append("circle").attr("class",t.classCircle.bind(t)).attr("r",t.pointR.bind(t)).style("fill",t.color),t.mainCircle.style("opacity",t.initialOpacityForCircle.bind(t)),t.mainCircle.exit().remove()},l.redrawCircle=function(t,e,n){var i=this.main.selectAll("."+h.selectedCircle);return[(n?this.mainCircle.transition(Math.random().toString()):this.mainCircle).style("opacity",this.opacityForCircle.bind(this)).style("fill",this.color).attr("cx",t).attr("cy",e),(n?i.transition(Math.random().toString()):i).attr("cx",t).attr("cy",e)]},l.circleX=function(t){return t.x||0===t.x?this.x(t.x):null},l.updateCircleY=function(){var t,e,n=this;n.config.data_groups.length>0?(t=n.getShapeIndices(n.isLineType),e=n.generateGetLinePoints(t),n.circleY=function(t,n){return e(t,n)[0][1]}):n.circleY=function(t){return n.getYScale(t.id)(t.value)}},l.getCircles=function(t,e){var n=this;return(e?n.main.selectAll("."+h.circles+n.getTargetSelectorSuffix(e)):n.main).selectAll("."+h.circle+(d(t)?"-"+t:""))},l.expandCircles=function(t,e,n){var i=this,r=i.pointExpandedR.bind(i);n&&i.unexpandCircles(),i.getCircles(t,e).classed(h.EXPANDED,!0).attr("r",r)},l.unexpandCircles=function(t){var e=this,n=e.pointR.bind(e);e.getCircles(t).filter(function(){return e.d3.select(this).classed(h.EXPANDED)}).classed(h.EXPANDED,!1).attr("r",n)},l.pointR=function(t){var e=this,n=e.config;return e.isStepType(t)?0:f(n.point_r)?n.point_r(t):n.point_r},l.pointExpandedR=function(t){var e=this,n=e.config;return n.point_focus_expand_enabled?n.point_focus_expand_r?n.point_focus_expand_r:1.75*e.pointR(t):e.pointR(t)},l.pointSelectR=function(t){var e=this,n=e.config;return f(n.point_select_r)?n.point_select_r(t):n.point_select_r?n.point_select_r:4*e.pointR(t)},l.isWithinCircle=function(t,e){var n=this.d3,i=n.mouse(t),r=n.select(t),o=+r.attr("cx"),a=+r.attr("cy");return Math.sqrt(Math.pow(o-i[0],2)+Math.pow(a-i[1],2))<e},l.isWithinStep=function(t,e){return Math.abs(e-this.d3.mouse(t)[1])<30},l.initBar=function(){var t=this;t.main.select("."+h.chart).append("g").attr("class",h.chartBars)},l.updateTargetsForBar=function(t){var e,n,i=this,r=i.config,o=i.classChartBar.bind(i),a=i.classBars.bind(i),s=i.classFocus.bind(i);e=i.main.select("."+h.chartBars).selectAll("."+h.chartBar).data(t).attr("class",function(t){return o(t)+s(t)}),n=e.enter().append("g").attr("class",o).style("opacity",0).style("pointer-events","none"),n.append("g").attr("class",a).style("cursor",function(t){return r.data_selection_isselectable(t)?"pointer":null})},l.updateBar=function(t){var e=this,n=e.barData.bind(e),i=e.classBar.bind(e),r=e.initialOpacity.bind(e),o=function(t){return e.color(t.id)};e.mainBar=e.main.selectAll("."+h.bars).selectAll("."+h.bar).data(n),e.mainBar.enter().append("path").attr("class",i).style("stroke",o).style("fill",o),e.mainBar.style("opacity",r),e.mainBar.exit().transition().duration(t).style("opacity",0).remove()},l.redrawBar=function(t,e){return[(e?this.mainBar.transition(Math.random().toString()):this.mainBar).attr("d",t).style("fill",this.color).style("opacity",1)]},l.getBarW=function(t,e){var n=this,i=n.config,r="number"==typeof i.bar_width?i.bar_width:e?t.tickInterval()*i.bar_width_ratio/e:0;return i.bar_width_max&&r>i.bar_width_max?i.bar_width_max:r},l.getBars=function(t,e){var n=this;return(e?n.main.selectAll("."+h.bars+n.getTargetSelectorSuffix(e)):n.main).selectAll("."+h.bar+(d(t)?"-"+t:""))},l.expandBars=function(t,e,n){var i=this;n&&i.unexpandBars(),i.getBars(t,e).classed(h.EXPANDED,!0)},l.unexpandBars=function(t){var e=this;e.getBars(t).classed(h.EXPANDED,!1)},l.generateDrawBar=function(t,e){var n=this,i=n.config,r=n.generateGetBarPoints(t,e);return function(t,e){var n=r(t,e),o=i.axis_rotated?1:0,a=i.axis_rotated?0:1,s="M "+n[0][o]+","+n[0][a]+" L"+n[1][o]+","+n[1][a]+" L"+n[2][o]+","+n[2][a]+" L"+n[3][o]+","+n[3][a]+" z";return s}},l.generateGetBarPoints=function(t,e){var n=this,i=e?n.subXAxis:n.xAxis,r=t.__max__+1,o=n.getBarW(i,r),a=n.getShapeX(o,r,t,!!e),s=n.getShapeY(!!e),l=n.getShapeOffset(n.isBarType,t,!!e),c=e?n.getSubYScale:n.getYScale;return function(t,e){var i=c.call(n,t.id)(0),r=l(t,e)||i,u=a(t),h=s(t);return n.config.axis_rotated&&(0<t.value&&h<i||t.value<0&&i<h)&&(h=i),[[u,r],[u,h-(i-r)],[u+o,h-(i-r)],[u+o,r]]}},l.isWithinBar=function(t){var e=this.d3.mouse(t),n=t.getBoundingClientRect(),i=t.pathSegList.getItem(0),r=t.pathSegList.getItem(1),o=Math.min(i.x,r.x),a=Math.min(i.y,r.y),s=n.width,l=n.height,c=2,u=o-c,h=o+s+c,d=a+l+c,f=a-c;return u<e[0]&&e[0]<h&&f<e[1]&&e[1]<d},l.initText=function(){var t=this;t.main.select("."+h.chart).append("g").attr("class",h.chartTexts),t.mainText=t.d3.selectAll([])},l.updateTargetsForText=function(t){var e,n,i=this,r=i.classChartText.bind(i),o=i.classTexts.bind(i),a=i.classFocus.bind(i);e=i.main.select("."+h.chartTexts).selectAll("."+h.chartText).data(t).attr("class",function(t){return r(t)+a(t)}),n=e.enter().append("g").attr("class",r).style("opacity",0).style("pointer-events","none"),n.append("g").attr("class",o)},l.updateText=function(t){var e=this,n=e.config,i=e.barOrLineData.bind(e),r=e.classText.bind(e);e.mainText=e.main.selectAll("."+h.texts).selectAll("."+h.text).data(i),e.mainText.enter().append("text").attr("class",r).attr("text-anchor",function(t){return n.axis_rotated?t.value<0?"end":"start":"middle"}).style("stroke","none").style("fill",function(t){return e.color(t)}).style("fill-opacity",0),e.mainText.text(function(t,n,i){return e.dataLabelFormat(t.id)(t.value,t.id,n,i)}),e.mainText.exit().transition().duration(t).style("fill-opacity",0).remove()},l.redrawText=function(t,e,n,i){return[(i?this.mainText.transition():this.mainText).attr("x",t).attr("y",e).style("fill",this.color).style("fill-opacity",n?0:this.opacityForText.bind(this))]},l.getTextRect=function(t,e,n){var i,r=this.d3.select("body").append("div").classed("c3",!0),o=r.append("svg").style("visibility","hidden").style("position","fixed").style("top",0).style("left",0),a=this.d3.select(n).style("font");return o.selectAll(".dummy").data([t]).enter().append("text").classed(e?e:"",!0).style("font",a).text(t).each(function(){i=this.getBoundingClientRect()}),r.remove(),i},l.generateXYForText=function(t,e,n,i){var r=this,o=r.generateGetAreaPoints(t,!1),a=r.generateGetBarPoints(e,!1),s=r.generateGetLinePoints(n,!1),l=i?r.getXForText:r.getYForText;return function(t,e){var n=r.isAreaType(t)?o:r.isBarType(t)?a:s;return l.call(r,n(t,e),t,this)}},l.getXForText=function(t,e,n){var i,r,o=this,a=n.getBoundingClientRect();return o.config.axis_rotated?(r=o.isBarType(e)?4:6,i=t[2][1]+r*(e.value<0?-1:1)):i=o.hasType("bar")?(t[2][0]+t[0][0])/2:t[0][0],null===e.value&&(i>o.width?i=o.width-a.width:i<0&&(i=4)),i},l.getYForText=function(t,e,n){var i,r=this,o=n.getBoundingClientRect();return r.config.axis_rotated?i=(t[0][0]+t[2][0]+.6*o.height)/2:(i=t[2][1],e.value<0||0===e.value&&!r.hasPositiveValue?(i+=o.height,r.isBarType(e)&&r.isSafari()?i-=3:!r.isBarType(e)&&r.isChrome()&&(i+=3)):i+=r.isBarType(e)?-3:-6),null!==e.value||r.config.axis_rotated||(i<o.height?i=o.height:i>this.height&&(i=this.height-4)),i},l.setTargetType=function(t,e){var n=this,i=n.config;n.mapToTargetIds(t).forEach(function(t){n.withoutFadeIn[t]=e===i.data_types[t],i.data_types[t]=e}),t||(i.data_type=e)},l.hasType=function(t,e){var n=this,i=n.config.data_types,r=!1;return e=e||n.data.targets,e&&e.length?e.forEach(function(e){var n=i[e.id];(n&&n.indexOf(t)>=0||!n&&"line"===t)&&(r=!0)}):Object.keys(i).length?Object.keys(i).forEach(function(e){i[e]===t&&(r=!0)}):r=n.config.data_type===t,r},l.hasArcType=function(t){return this.hasType("pie",t)||this.hasType("donut",t)||this.hasType("gauge",t)},l.isLineType=function(t){var e=this.config,n=p(t)?t:t.id;return!e.data_types[n]||["line","spline","area","area-spline","step","area-step"].indexOf(e.data_types[n])>=0},l.isStepType=function(t){var e=p(t)?t:t.id;return["step","area-step"].indexOf(this.config.data_types[e])>=0},l.isSplineType=function(t){var e=p(t)?t:t.id;return["spline","area-spline"].indexOf(this.config.data_types[e])>=0},l.isAreaType=function(t){var e=p(t)?t:t.id;return["area","area-spline","area-step"].indexOf(this.config.data_types[e])>=0},l.isBarType=function(t){var e=p(t)?t:t.id;return"bar"===this.config.data_types[e]},l.isScatterType=function(t){var e=p(t)?t:t.id;return"scatter"===this.config.data_types[e]},l.isPieType=function(t){var e=p(t)?t:t.id;return"pie"===this.config.data_types[e]},l.isGaugeType=function(t){var e=p(t)?t:t.id;return"gauge"===this.config.data_types[e]},l.isDonutType=function(t){var e=p(t)?t:t.id;return"donut"===this.config.data_types[e]},l.isArcType=function(t){return this.isPieType(t)||this.isDonutType(t)||this.isGaugeType(t)},l.lineData=function(t){return this.isLineType(t)?[t]:[]},l.arcData=function(t){return this.isArcType(t.data)?[t]:[]},l.barData=function(t){return this.isBarType(t)?t.values:[]},l.lineOrScatterData=function(t){return this.isLineType(t)||this.isScatterType(t)?t.values:[]},l.barOrLineData=function(t){return this.isBarType(t)||this.isLineType(t)?t.values:[]},l.isInterpolationType=function(t){return["linear","linear-closed","basis","basis-open","basis-closed","bundle","cardinal","cardinal-open","cardinal-closed","monotone"].indexOf(t)>=0},l.initGrid=function(){var t=this,e=t.config,n=t.d3;t.grid=t.main.append("g").attr("clip-path",t.clipPathForGrid).attr("class",h.grid),e.grid_x_show&&t.grid.append("g").attr("class",h.xgrids),e.grid_y_show&&t.grid.append("g").attr("class",h.ygrids),e.grid_focus_show&&t.grid.append("g").attr("class",h.xgridFocus).append("line").attr("class",h.xgridFocus),t.xgrid=n.selectAll([]),e.grid_lines_front||t.initGridLines()},l.initGridLines=function(){var t=this,e=t.d3;t.gridLines=t.main.append("g").attr("clip-path",t.clipPathForGrid).attr("class",h.grid+" "+h.gridLines),t.gridLines.append("g").attr("class",h.xgridLines),t.gridLines.append("g").attr("class",h.ygridLines),t.xgridLines=e.selectAll([])},l.updateXGrid=function(t){var e=this,n=e.config,i=e.d3,r=e.generateGridData(n.grid_x_type,e.x),o=e.isCategorized()?e.xAxis.tickOffset():0;e.xgridAttr=n.axis_rotated?{x1:0,x2:e.width,y1:function(t){return e.x(t)-o},y2:function(t){return e.x(t)-o}}:{x1:function(t){return e.x(t)+o},x2:function(t){return e.x(t)+o},y1:0,y2:e.height},e.xgrid=e.main.select("."+h.xgrids).selectAll("."+h.xgrid).data(r),e.xgrid.enter().append("line").attr("class",h.xgrid),t||e.xgrid.attr(e.xgridAttr).style("opacity",function(){return+i.select(this).attr(n.axis_rotated?"y1":"x1")===(n.axis_rotated?e.height:0)?0:1}),e.xgrid.exit().remove()},l.updateYGrid=function(){var t=this,e=t.config,n=t.yAxis.tickValues()||t.y.ticks(e.grid_y_ticks);t.ygrid=t.main.select("."+h.ygrids).selectAll("."+h.ygrid).data(n),t.ygrid.enter().append("line").attr("class",h.ygrid),t.ygrid.attr("x1",e.axis_rotated?t.y:0).attr("x2",e.axis_rotated?t.y:t.width).attr("y1",e.axis_rotated?0:t.y).attr("y2",e.axis_rotated?t.height:t.y),t.ygrid.exit().remove(),t.smoothLines(t.ygrid,"grid")},l.gridTextAnchor=function(t){return t.position?t.position:"end"},l.gridTextDx=function(t){return"start"===t.position?4:"middle"===t.position?0:-4},l.xGridTextX=function(t){return"start"===t.position?-this.height:"middle"===t.position?-this.height/2:0},l.yGridTextX=function(t){return"start"===t.position?0:"middle"===t.position?this.width/2:this.width},l.updateGrid=function(t){var e,n,i,r=this,o=r.main,a=r.config;r.grid.style("visibility",r.hasArcType()?"hidden":"visible"),o.select("line."+h.xgridFocus).style("visibility","hidden"),a.grid_x_show&&r.updateXGrid(),r.xgridLines=o.select("."+h.xgridLines).selectAll("."+h.xgridLine).data(a.grid_x_lines),e=r.xgridLines.enter().append("g").attr("class",function(t){return h.xgridLine+(t.class?" "+t.class:"")}),e.append("line").style("opacity",0),e.append("text").attr("text-anchor",r.gridTextAnchor).attr("transform",a.axis_rotated?"":"rotate(-90)").attr("dx",r.gridTextDx).attr("dy",-5).style("opacity",0),r.xgridLines.exit().transition().duration(t).style("opacity",0).remove(),a.grid_y_show&&r.updateYGrid(),r.ygridLines=o.select("."+h.ygridLines).selectAll("."+h.ygridLine).data(a.grid_y_lines),n=r.ygridLines.enter().append("g").attr("class",function(t){return h.ygridLine+(t.class?" "+t.class:"")}),n.append("line").style("opacity",0),n.append("text").attr("text-anchor",r.gridTextAnchor).attr("transform",a.axis_rotated?"rotate(-90)":"").attr("dx",r.gridTextDx).attr("dy",-5).style("opacity",0),i=r.yv.bind(r),r.ygridLines.select("line").transition().duration(t).attr("x1",a.axis_rotated?i:0).attr("x2",a.axis_rotated?i:r.width).attr("y1",a.axis_rotated?0:i).attr("y2",a.axis_rotated?r.height:i).style("opacity",1),r.ygridLines.select("text").transition().duration(t).attr("x",a.axis_rotated?r.xGridTextX.bind(r):r.yGridTextX.bind(r)).attr("y",i).text(function(t){return t.text}).style("opacity",1),r.ygridLines.exit().transition().duration(t).style("opacity",0).remove()},l.redrawGrid=function(t){var e=this,n=e.config,i=e.xv.bind(e),r=e.xgridLines.select("line"),o=e.xgridLines.select("text");return[(t?r.transition():r).attr("x1",n.axis_rotated?0:i).attr("x2",n.axis_rotated?e.width:i).attr("y1",n.axis_rotated?i:0).attr("y2",n.axis_rotated?i:e.height).style("opacity",1),(t?o.transition():o).attr("x",n.axis_rotated?e.yGridTextX.bind(e):e.xGridTextX.bind(e)).attr("y",i).text(function(t){return t.text}).style("opacity",1)]},l.showXGridFocus=function(t){var e=this,n=e.config,i=t.filter(function(t){return t&&d(t.value)}),r=e.main.selectAll("line."+h.xgridFocus),o=e.xx.bind(e);n.tooltip_show&&(e.hasType("scatter")||e.hasArcType()||(r.style("visibility","visible").data([i[0]]).attr(n.axis_rotated?"y1":"x1",o).attr(n.axis_rotated?"y2":"x2",o),e.smoothLines(r,"grid")))},l.hideXGridFocus=function(){this.main.select("line."+h.xgridFocus).style("visibility","hidden")},l.updateXgridFocus=function(){var t=this,e=t.config;t.main.select("line."+h.xgridFocus).attr("x1",e.axis_rotated?0:-10).attr("x2",e.axis_rotated?t.width:-10).attr("y1",e.axis_rotated?-10:0).attr("y2",e.axis_rotated?-10:t.height)},l.generateGridData=function(t,e){var n,i,r,o,a=this,s=[],l=a.main.select("."+h.axisX).selectAll(".tick").size();if("year"===t)for(n=a.getXDomain(),i=n[0].getFullYear(),r=n[1].getFullYear(),o=i;o<=r;o++)s.push(new Date(o+"-01-01 00:00:00"));else s=e.ticks(10),s.length>l&&(s=s.filter(function(t){return(""+t).indexOf(".")<0}));return s},l.getGridFilterToRemove=function(t){return t?function(e){var n=!1;return[].concat(t).forEach(function(t){("value"in t&&e.value===t.value||"class"in t&&e.class===t.class)&&(n=!0)}),n}:function(){return!0}},l.removeGridLines=function(t,e){var n=this,i=n.config,r=n.getGridFilterToRemove(t),o=function(t){return!r(t)},a=e?h.xgridLines:h.ygridLines,s=e?h.xgridLine:h.ygridLine;n.main.select("."+a).selectAll("."+s).filter(r).transition().duration(i.transition_duration).style("opacity",0).remove(),e?i.grid_x_lines=i.grid_x_lines.filter(o):i.grid_y_lines=i.grid_y_lines.filter(o)},l.initTooltip=function(){var t,e=this,n=e.config;if(e.tooltip=e.selectChart.style("position","relative").append("div").attr("class",h.tooltipContainer).style("position","absolute").style("pointer-events","none").style("display","none"),n.tooltip_init_show){if(e.isTimeSeries()&&p(n.tooltip_init_x)){for(n.tooltip_init_x=e.parseDate(n.tooltip_init_x),t=0;t<e.data.targets[0].values.length&&e.data.targets[0].values[t].x-n.tooltip_init_x!==0;t++);n.tooltip_init_x=t}e.tooltip.html(n.tooltip_contents.call(e,e.data.targets.map(function(t){return e.addName(t.values[n.tooltip_init_x])}),e.axis.getXAxisTickFormat(),e.getYFormat(e.hasArcType()),e.color)),e.tooltip.style("top",n.tooltip_init_position.top).style("left",n.tooltip_init_position.left).style("display","block")}},l.getTooltipContent=function(t,e,n,i){var r,o,a,s,l,c,u=this,h=u.config,d=h.tooltip_format_title||e,f=h.tooltip_format_name||function(t){return t},p=h.tooltip_format_value||n,g=u.isOrderAsc();if(0===h.data_groups.length)t.sort(function(t,e){var n=t?t.value:null,i=e?e.value:null;return g?n-i:i-n});else{var m=u.orderTargets(u.data.targets).map(function(t){return t.id});t.sort(function(t,e){var n=t?t.value:null,i=e?e.value:null;return n>0&&i>0&&(n=t?m.indexOf(t.id):null,i=e?m.indexOf(e.id):null),g?n-i:i-n})}for(o=0;o<t.length;o++)if(t[o]&&(t[o].value||0===t[o].value)&&(r||(a=C(d?d(t[o].x):t[o].x),r="<table class='"+u.CLASS.tooltip+"'>"+(a||0===a?"<tr><th colspan='2'>"+a+"</th></tr>":"")),s=C(p(t[o].value,t[o].ratio,t[o].id,t[o].index,t)),void 0!==s)){if(null===t[o].name)continue;l=C(f(t[o].name,t[o].ratio,t[o].id,t[o].index)),c=u.levelColor?u.levelColor(t[o].value):i(t[o].id),r+="<tr class='"+u.CLASS.tooltipName+"-"+u.getTargetSelectorSuffix(t[o].id)+"'>",r+="<td class='name'><span style='background-color:"+c+"'></span>"+l+"</td>",r+="<td class='value'>"+s+"</td>",r+="</tr>"}return r+"</table>"},l.tooltipPosition=function(t,e,n,i){var r,o,a,s,l,c=this,u=c.config,h=c.d3,d=c.hasArcType(),f=h.mouse(i);return d?(o=(c.width-(c.isLegendRight?c.getLegendWidth():0))/2+f[0],s=c.height/2+f[1]+20):(r=c.getSvgLeft(!0),u.axis_rotated?(o=r+f[0]+100,a=o+e,l=c.currentWidth-c.getCurrentPaddingRight(),s=c.x(t[0].x)+20):(o=r+c.getCurrentPaddingLeft(!0)+c.x(t[0].x)+20,a=o+e,l=r+c.currentWidth-c.getCurrentPaddingRight(),s=f[1]+15),a>l&&(o-=a-l+20),s+n>c.currentHeight&&(s-=n+30)),s<0&&(s=0),{top:s,left:o}},l.showTooltip=function(t,e){var n,i,r,o=this,a=o.config,s=o.hasArcType(),c=t.filter(function(t){return t&&d(t.value)}),u=a.tooltip_position||l.tooltipPosition;0!==c.length&&a.tooltip_show&&(o.tooltip.html(a.tooltip_contents.call(o,t,o.axis.getXAxisTickFormat(),o.getYFormat(s),o.color)).style("display","block"),n=o.tooltip.property("offsetWidth"),i=o.tooltip.property("offsetHeight"),r=u.call(this,c,n,i,e),o.tooltip.style("top",r.top+"px").style("left",r.left+"px"))},l.hideTooltip=function(){this.tooltip.style("display","none")},l.initLegend=function(){var t=this;return t.legendItemTextBox={},t.legendHasRendered=!1,t.legend=t.svg.append("g").attr("transform",t.getTranslate("legend")),t.config.legend_show?void t.updateLegendWithDefaults():(t.legend.style("visibility","hidden"),void(t.hiddenLegendIds=t.mapToIds(t.data.targets)))},l.updateLegendWithDefaults=function(){var t=this;t.updateLegend(t.mapToIds(t.data.targets),{withTransform:!1,withTransitionForTransform:!1,withTransition:!1})},l.updateSizeForLegend=function(t,e){var n=this,i=n.config,r={top:n.isLegendTop?n.getCurrentPaddingTop()+i.legend_inset_y+5.5:n.currentHeight-t-n.getCurrentPaddingBottom()-i.legend_inset_y,left:n.isLegendLeft?n.getCurrentPaddingLeft()+i.legend_inset_x+.5:n.currentWidth-e-n.getCurrentPaddingRight()-i.legend_inset_x+.5};n.margin3={top:n.isLegendRight?0:n.isLegendInset?r.top:n.currentHeight-t,right:NaN,bottom:0,left:n.isLegendRight?n.currentWidth-e:n.isLegendInset?r.left:0}},l.transformLegend=function(t){var e=this;(t?e.legend.transition():e.legend).attr("transform",e.getTranslate("legend"))},l.updateLegendStep=function(t){this.legendStep=t},l.updateLegendItemWidth=function(t){this.legendItemWidth=t},l.updateLegendItemHeight=function(t){this.legendItemHeight=t},l.getLegendWidth=function(){var t=this;return t.config.legend_show?t.isLegendRight||t.isLegendInset?t.legendItemWidth*(t.legendStep+1):t.currentWidth:0},l.getLegendHeight=function(){var t=this,e=0;return t.config.legend_show&&(e=t.isLegendRight?t.currentHeight:Math.max(20,t.legendItemHeight)*(t.legendStep+1)),e},l.opacityForLegend=function(t){return t.classed(h.legendItemHidden)?null:1},l.opacityForUnfocusedLegend=function(t){return t.classed(h.legendItemHidden)?null:.3},l.toggleFocusLegend=function(t,e){var n=this;t=n.mapToTargetIds(t),n.legend.selectAll("."+h.legendItem).filter(function(e){return t.indexOf(e)>=0}).classed(h.legendItemFocused,e).transition().duration(100).style("opacity",function(){var t=e?n.opacityForLegend:n.opacityForUnfocusedLegend;return t.call(n,n.d3.select(this))})},l.revertLegend=function(){var t=this,e=t.d3;t.legend.selectAll("."+h.legendItem).classed(h.legendItemFocused,!1).transition().duration(100).style("opacity",function(){return t.opacityForLegend(e.select(this))})},l.showLegend=function(t){var e=this,n=e.config;n.legend_show||(n.legend_show=!0,e.legend.style("visibility","visible"),e.legendHasRendered||e.updateLegendWithDefaults()),e.removeHiddenLegendIds(t),e.legend.selectAll(e.selectorLegends(t)).style("visibility","visible").transition().style("opacity",function(){return e.opacityForLegend(e.d3.select(this))})},l.hideLegend=function(t){var e=this,n=e.config;n.legend_show&&b(t)&&(n.legend_show=!1,e.legend.style("visibility","hidden")),e.addHiddenLegendIds(t),e.legend.selectAll(e.selectorLegends(t)).style("opacity",0).style("visibility","hidden")},l.clearLegendItemTextBoxCache=function(){this.legendItemTextBox={}},l.updateLegend=function(t,e,n){function i(t,e){return C.legendItemTextBox[e]||(C.legendItemTextBox[e]=C.getTextRect(t.textContent,h.legendItem,t)),C.legendItemTextBox[e]}function r(e,n,r){function o(t,e){e||(a=(p-N-f)/2,a<E&&(a=(p-f)/2,N=0,H++)),j[t]=H,I[H]=C.isLegendInset?10:a,O[t]=N,N+=f}var a,s,l=0===r,c=r===t.length-1,u=i(e,n),h=u.width+P+(!c||C.isLegendRight||C.isLegendInset?A:0)+T.legend_padding,d=u.height+k,f=C.isLegendRight||C.isLegendInset?d:h,p=C.isLegendRight||C.isLegendInset?C.getLegendHeight():C.getLegendWidth();return l&&(N=0,H=0,M=0,L=0),T.legend_show&&!C.isLegendToShow(n)?void(R[n]=D[n]=j[n]=O[n]=0):(R[n]=h,D[n]=d,(!M||h>=M)&&(M=h),(!L||d>=L)&&(L=d),s=C.isLegendRight||C.isLegendInset?L:M,void(T.legend_equally?(Object.keys(R).forEach(function(t){R[t]=M}),Object.keys(D).forEach(function(t){D[t]=L}),a=(p-s*t.length)/2,a<E?(N=0,H=0,t.forEach(function(t){o(t)})):o(n,!0)):o(n)))}var o,a,s,l,c,u,d,f,p,g,v,y,x,b,_,S,C=this,T=C.config,k=4,A=10,M=0,L=0,E=10,P=T.legend_item_tile_width+5,N=0,O={},R={},D={},I=[0],j={},H=0;t=t.filter(function(t){return!m(T.data_names[t])||null!==T.data_names[t]}),e=e||{},v=w(e,"withTransition",!0),y=w(e,"withTransitionForTransform",!0),C.isLegendInset&&(H=T.legend_inset_step?T.legend_inset_step:t.length,C.updateLegendStep(H)),C.isLegendRight?(o=function(t){return M*j[t]},l=function(t){return I[j[t]]+O[t]}):C.isLegendInset?(o=function(t){return M*j[t]+10},l=function(t){return I[j[t]]+O[t]}):(o=function(t){return I[j[t]]+O[t]},l=function(t){return L*j[t]}),a=function(t,e){return o(t,e)+4+T.legend_item_tile_width},c=function(t,e){return l(t,e)+9},s=function(t,e){return o(t,e)},u=function(t,e){return l(t,e)-5},d=function(t,e){return o(t,e)-2},f=function(t,e){return o(t,e)-2+T.legend_item_tile_width},p=function(t,e){return l(t,e)+4},g=C.legend.selectAll("."+h.legendItem).data(t).enter().append("g").attr("class",function(t){return C.generateClass(h.legendItem,t)}).style("visibility",function(t){return C.isLegendToShow(t)?"visible":"hidden"}).style("cursor","pointer").on("click",function(t){T.legend_item_onclick?T.legend_item_onclick.call(C,t):C.d3.event.altKey?(C.api.hide(),C.api.show(t)):(C.api.toggle(t),C.isTargetToShow(t)?C.api.focus(t):C.api.revert())}).on("mouseover",function(t){T.legend_item_onmouseover?T.legend_item_onmouseover.call(C,t):(C.d3.select(this).classed(h.legendItemFocused,!0),!C.transiting&&C.isTargetToShow(t)&&C.api.focus(t))}).on("mouseout",function(t){T.legend_item_onmouseout?T.legend_item_onmouseout.call(C,t):(C.d3.select(this).classed(h.legendItemFocused,!1),C.api.revert())}),g.append("text").text(function(t){return m(T.data_names[t])?T.data_names[t]:t}).each(function(t,e){r(this,t,e)}).style("pointer-events","none").attr("x",C.isLegendRight||C.isLegendInset?a:-200).attr("y",C.isLegendRight||C.isLegendInset?-200:c),g.append("rect").attr("class",h.legendItemEvent).style("fill-opacity",0).attr("x",C.isLegendRight||C.isLegendInset?s:-200).attr("y",C.isLegendRight||C.isLegendInset?-200:u),g.append("line").attr("class",h.legendItemTile).style("stroke",C.color).style("pointer-events","none").attr("x1",C.isLegendRight||C.isLegendInset?d:-200).attr("y1",C.isLegendRight||C.isLegendInset?-200:p).attr("x2",C.isLegendRight||C.isLegendInset?f:-200).attr("y2",C.isLegendRight||C.isLegendInset?-200:p).attr("stroke-width",T.legend_item_tile_height),S=C.legend.select("."+h.legendBackground+" rect"),C.isLegendInset&&M>0&&0===S.size()&&(S=C.legend.insert("g","."+h.legendItem).attr("class",h.legendBackground).append("rect")),x=C.legend.selectAll("text").data(t).text(function(t){return m(T.data_names[t])?T.data_names[t]:t}).each(function(t,e){r(this,t,e)}),(v?x.transition():x).attr("x",a).attr("y",c),b=C.legend.selectAll("rect."+h.legendItemEvent).data(t),(v?b.transition():b).attr("width",function(t){return R[t]}).attr("height",function(t){return D[t]}).attr("x",s).attr("y",u),_=C.legend.selectAll("line."+h.legendItemTile).data(t),(v?_.transition():_).style("stroke",C.color).attr("x1",d).attr("y1",p).attr("x2",f).attr("y2",p),S&&(v?S.transition():S).attr("height",C.getLegendHeight()-12).attr("width",M*(H+1)+10),C.legend.selectAll("."+h.legendItem).classed(h.legendItemHidden,function(t){return!C.isTargetToShow(t)}),C.updateLegendItemWidth(M),C.updateLegendItemHeight(L),C.updateLegendStep(H),C.updateSizes(),C.updateScales(),C.updateSvgSize(),C.transformAll(y,n),C.legendHasRendered=!0},l.initTitle=function(){var t=this;t.title=t.svg.append("text").text(t.config.title_text).attr("class",t.CLASS.title)},l.redrawTitle=function(){var t=this;t.title.attr("x",t.xForTitle.bind(t)).attr("y",t.yForTitle.bind(t))},l.xForTitle=function(){var t,e=this,n=e.config,i=n.title_position||"left";return t=i.indexOf("right")>=0?e.currentWidth-e.getTextRect(e.title.node().textContent,e.CLASS.title,e.title.node()).width-n.title_padding.right:i.indexOf("center")>=0?(e.currentWidth-e.getTextRect(e.title.node().textContent,e.CLASS.title,e.title.node()).width)/2:n.title_padding.left},l.yForTitle=function(){var t=this;return t.config.title_padding.top+t.getTextRect(t.title.node().textContent,t.CLASS.title,t.title.node()).height},l.getTitlePadding=function(){var t=this;return t.yForTitle()+t.config.title_padding.bottom},n(e,o),o.prototype.init=function(){var t=this.owner,e=t.config,n=t.main;t.axes.x=n.append("g").attr("class",h.axis+" "+h.axisX).attr("clip-path",t.clipPathForXAxis).attr("transform",t.getTranslate("x")).style("visibility",e.axis_x_show?"visible":"hidden"),t.axes.x.append("text").attr("class",h.axisXLabel).attr("transform",e.axis_rotated?"rotate(-90)":"").style("text-anchor",this.textAnchorForXAxisLabel.bind(this)),t.axes.y=n.append("g").attr("class",h.axis+" "+h.axisY).attr("clip-path",e.axis_y_inner?"":t.clipPathForYAxis).attr("transform",t.getTranslate("y")).style("visibility",e.axis_y_show?"visible":"hidden"),t.axes.y.append("text").attr("class",h.axisYLabel).attr("transform",e.axis_rotated?"":"rotate(-90)").style("text-anchor",this.textAnchorForYAxisLabel.bind(this)),t.axes.y2=n.append("g").attr("class",h.axis+" "+h.axisY2).attr("transform",t.getTranslate("y2")).style("visibility",e.axis_y2_show?"visible":"hidden"),t.axes.y2.append("text").attr("class",h.axisY2Label).attr("transform",e.axis_rotated?"":"rotate(-90)").style("text-anchor",this.textAnchorForY2AxisLabel.bind(this))},o.prototype.getXAxis=function(t,e,n,i,r,o,s){var l=this.owner,c=l.config,u={isCategory:l.isCategorized(),withOuterTick:r,tickMultiline:c.axis_x_tick_multiline,tickWidth:c.axis_x_tick_width,tickTextRotate:s?0:c.axis_x_tick_rotate,withoutTransition:o},h=a(l.d3,u).scale(t).orient(e);return l.isTimeSeries()&&i&&"function"!=typeof i&&(i=i.map(function(t){return l.parseDate(t)})),h.tickFormat(n).tickValues(i),l.isCategorized()&&(h.tickCentered(c.axis_x_tick_centered),b(c.axis_x_tick_culling)&&(c.axis_x_tick_culling=!1)),h},o.prototype.updateXAxisTickValues=function(t,e){var n,i=this.owner,r=i.config;return(r.axis_x_tick_fit||r.axis_x_tick_count)&&(n=this.generateTickValues(i.mapTargetsToUniqueXs(t),r.axis_x_tick_count,i.isTimeSeries())),e?e.tickValues(n):(i.xAxis.tickValues(n),i.subXAxis.tickValues(n)),n},o.prototype.getYAxis=function(t,e,n,i,r,o,s){var l=this.owner,c=l.config,u={withOuterTick:r,withoutTransition:o,tickTextRotate:s?0:c.axis_y_tick_rotate},h=a(l.d3,u).scale(t).orient(e).tickFormat(n);return l.isTimeSeriesY()?h.ticks(l.d3.time[c.axis_y_tick_time_value],c.axis_y_tick_time_interval):h.tickValues(i),h},o.prototype.getId=function(t){var e=this.owner.config;return t in e.data_axes?e.data_axes[t]:"y"},o.prototype.getXAxisTickFormat=function(){var t=this.owner,e=t.config,n=t.isTimeSeries()?t.defaultAxisTimeFormat:t.isCategorized()?t.categoryName:function(t){return t<0?t.toFixed(0):t};return e.axis_x_tick_format&&(f(e.axis_x_tick_format)?n=e.axis_x_tick_format:t.isTimeSeries()&&(n=function(n){return n?t.axisTimeFormat(e.axis_x_tick_format)(n):""})),f(n)?function(e){return n.call(t,e)}:n},o.prototype.getTickValues=function(t,e){return t?t:e?e.tickValues():void 0},o.prototype.getXAxisTickValues=function(){return this.getTickValues(this.owner.config.axis_x_tick_values,this.owner.xAxis)},o.prototype.getYAxisTickValues=function(){return this.getTickValues(this.owner.config.axis_y_tick_values,this.owner.yAxis)},o.prototype.getY2AxisTickValues=function(){return this.getTickValues(this.owner.config.axis_y2_tick_values,this.owner.y2Axis)},o.prototype.getLabelOptionByAxisId=function(t){var e,n=this.owner,i=n.config;return"y"===t?e=i.axis_y_label:"y2"===t?e=i.axis_y2_label:"x"===t&&(e=i.axis_x_label),e},o.prototype.getLabelText=function(t){var e=this.getLabelOptionByAxisId(t);return p(e)?e:e?e.text:null},o.prototype.setLabelText=function(t,e){var n=this.owner,i=n.config,r=this.getLabelOptionByAxisId(t);p(r)?"y"===t?i.axis_y_label=e:"y2"===t?i.axis_y2_label=e:"x"===t&&(i.axis_x_label=e):r&&(r.text=e)},o.prototype.getLabelPosition=function(t,e){var n=this.getLabelOptionByAxisId(t),i=n&&"object"==typeof n&&n.position?n.position:e;return{isInner:i.indexOf("inner")>=0,isOuter:i.indexOf("outer")>=0,isLeft:i.indexOf("left")>=0,isCenter:i.indexOf("center")>=0,isRight:i.indexOf("right")>=0,isTop:i.indexOf("top")>=0,isMiddle:i.indexOf("middle")>=0,isBottom:i.indexOf("bottom")>=0}},o.prototype.getXAxisLabelPosition=function(){return this.getLabelPosition("x",this.owner.config.axis_rotated?"inner-top":"inner-right")},o.prototype.getYAxisLabelPosition=function(){return this.getLabelPosition("y",this.owner.config.axis_rotated?"inner-right":"inner-top")},o.prototype.getY2AxisLabelPosition=function(){return this.getLabelPosition("y2",this.owner.config.axis_rotated?"inner-right":"inner-top")},o.prototype.getLabelPositionById=function(t){return"y2"===t?this.getY2AxisLabelPosition():"y"===t?this.getYAxisLabelPosition():this.getXAxisLabelPosition()},o.prototype.textForXAxisLabel=function(){return this.getLabelText("x")},o.prototype.textForYAxisLabel=function(){return this.getLabelText("y")},o.prototype.textForY2AxisLabel=function(){return this.getLabelText("y2")},o.prototype.xForAxisLabel=function(t,e){var n=this.owner;return t?e.isLeft?0:e.isCenter?n.width/2:n.width:e.isBottom?-n.height:e.isMiddle?-n.height/2:0;
-},o.prototype.dxForAxisLabel=function(t,e){return t?e.isLeft?"0.5em":e.isRight?"-0.5em":"0":e.isTop?"-0.5em":e.isBottom?"0.5em":"0"},o.prototype.textAnchorForAxisLabel=function(t,e){return t?e.isLeft?"start":e.isCenter?"middle":"end":e.isBottom?"start":e.isMiddle?"middle":"end"},o.prototype.xForXAxisLabel=function(){return this.xForAxisLabel(!this.owner.config.axis_rotated,this.getXAxisLabelPosition())},o.prototype.xForYAxisLabel=function(){return this.xForAxisLabel(this.owner.config.axis_rotated,this.getYAxisLabelPosition())},o.prototype.xForY2AxisLabel=function(){return this.xForAxisLabel(this.owner.config.axis_rotated,this.getY2AxisLabelPosition())},o.prototype.dxForXAxisLabel=function(){return this.dxForAxisLabel(!this.owner.config.axis_rotated,this.getXAxisLabelPosition())},o.prototype.dxForYAxisLabel=function(){return this.dxForAxisLabel(this.owner.config.axis_rotated,this.getYAxisLabelPosition())},o.prototype.dxForY2AxisLabel=function(){return this.dxForAxisLabel(this.owner.config.axis_rotated,this.getY2AxisLabelPosition())},o.prototype.dyForXAxisLabel=function(){var t=this.owner,e=t.config,n=this.getXAxisLabelPosition();return e.axis_rotated?n.isInner?"1.2em":-25-this.getMaxTickWidth("x"):n.isInner?"-0.5em":e.axis_x_height?e.axis_x_height-10:"3em"},o.prototype.dyForYAxisLabel=function(){var t=this.owner,e=this.getYAxisLabelPosition();return t.config.axis_rotated?e.isInner?"-0.5em":"3em":e.isInner?"1.2em":-10-(t.config.axis_y_inner?0:this.getMaxTickWidth("y")+10)},o.prototype.dyForY2AxisLabel=function(){var t=this.owner,e=this.getY2AxisLabelPosition();return t.config.axis_rotated?e.isInner?"1.2em":"-2.2em":e.isInner?"-0.5em":15+(t.config.axis_y2_inner?0:this.getMaxTickWidth("y2")+15)},o.prototype.textAnchorForXAxisLabel=function(){var t=this.owner;return this.textAnchorForAxisLabel(!t.config.axis_rotated,this.getXAxisLabelPosition())},o.prototype.textAnchorForYAxisLabel=function(){var t=this.owner;return this.textAnchorForAxisLabel(t.config.axis_rotated,this.getYAxisLabelPosition())},o.prototype.textAnchorForY2AxisLabel=function(){var t=this.owner;return this.textAnchorForAxisLabel(t.config.axis_rotated,this.getY2AxisLabelPosition())},o.prototype.getMaxTickWidth=function(t,e){var n,i,r,o,a,s=this.owner,l=s.config,c=0;return e&&s.currentMaxTickWidths[t]?s.currentMaxTickWidths[t]:(s.svg&&(n=s.filterTargetsToShow(s.data.targets),"y"===t?(i=s.y.copy().domain(s.getYDomain(n,"y")),r=this.getYAxis(i,s.yOrient,l.axis_y_tick_format,s.yAxisTickValues,!1,!0,!0)):"y2"===t?(i=s.y2.copy().domain(s.getYDomain(n,"y2")),r=this.getYAxis(i,s.y2Orient,l.axis_y2_tick_format,s.y2AxisTickValues,!1,!0,!0)):(i=s.x.copy().domain(s.getXDomain(n)),r=this.getXAxis(i,s.xOrient,s.xAxisTickFormat,s.xAxisTickValues,!1,!0,!0),this.updateXAxisTickValues(n,r)),o=s.d3.select("body").append("div").classed("c3",!0),a=o.append("svg").style("visibility","hidden").style("position","fixed").style("top",0).style("left",0),a.append("g").call(r).each(function(){s.d3.select(this).selectAll("text").each(function(){var t=this.getBoundingClientRect();c<t.width&&(c=t.width)}),o.remove()})),s.currentMaxTickWidths[t]=c<=0?s.currentMaxTickWidths[t]:c,s.currentMaxTickWidths[t])},o.prototype.updateLabels=function(t){var e=this.owner,n=e.main.select("."+h.axisX+" ."+h.axisXLabel),i=e.main.select("."+h.axisY+" ."+h.axisYLabel),r=e.main.select("."+h.axisY2+" ."+h.axisY2Label);(t?n.transition():n).attr("x",this.xForXAxisLabel.bind(this)).attr("dx",this.dxForXAxisLabel.bind(this)).attr("dy",this.dyForXAxisLabel.bind(this)).text(this.textForXAxisLabel.bind(this)),(t?i.transition():i).attr("x",this.xForYAxisLabel.bind(this)).attr("dx",this.dxForYAxisLabel.bind(this)).attr("dy",this.dyForYAxisLabel.bind(this)).text(this.textForYAxisLabel.bind(this)),(t?r.transition():r).attr("x",this.xForY2AxisLabel.bind(this)).attr("dx",this.dxForY2AxisLabel.bind(this)).attr("dy",this.dyForY2AxisLabel.bind(this)).text(this.textForY2AxisLabel.bind(this))},o.prototype.getPadding=function(t,e,n,i){var r="number"==typeof t?t:t[e];return d(r)?"ratio"===t.unit?t[e]*i:this.convertPixelsToAxisPadding(r,i):n},o.prototype.convertPixelsToAxisPadding=function(t,e){var n=this.owner,i=n.config.axis_rotated?n.width:n.height;return e*(t/i)},o.prototype.generateTickValues=function(t,e,n){var i,r,o,a,s,l,c,u=t;if(e)if(i=f(e)?e():e,1===i)u=[t[0]];else if(2===i)u=[t[0],t[t.length-1]];else if(i>2){for(a=i-2,r=t[0],o=t[t.length-1],s=(o-r)/(a+1),u=[r],l=0;l<a;l++)c=+r+s*(l+1),u.push(n?new Date(c):c);u.push(o)}return n||(u=u.sort(function(t,e){return t-e})),u},o.prototype.generateTransitions=function(t){var e=this.owner,n=e.axes;return{axisX:t?n.x.transition().duration(t):n.x,axisY:t?n.y.transition().duration(t):n.y,axisY2:t?n.y2.transition().duration(t):n.y2,axisSubX:t?n.subx.transition().duration(t):n.subx}},o.prototype.redraw=function(t,e){var n=this.owner;n.axes.x.style("opacity",e?0:1),n.axes.y.style("opacity",e?0:1),n.axes.y2.style("opacity",e?0:1),n.axes.subx.style("opacity",e?0:1),t.axisX.call(n.xAxis),t.axisY.call(n.yAxis),t.axisY2.call(n.y2Axis),t.axisSubX.call(n.subXAxis)},l.getClipPath=function(e){var n=t.navigator.appVersion.toLowerCase().indexOf("msie 9.")>=0;return"url("+(n?"":document.URL.split("#")[0])+"#"+e+")"},l.appendClip=function(t,e){return t.append("clipPath").attr("id",e).append("rect")},l.getAxisClipX=function(t){var e=Math.max(30,this.margin.left);return t?-(1+e):-(e-1)},l.getAxisClipY=function(t){return t?-20:-this.margin.top},l.getXAxisClipX=function(){var t=this;return t.getAxisClipX(!t.config.axis_rotated)},l.getXAxisClipY=function(){var t=this;return t.getAxisClipY(!t.config.axis_rotated)},l.getYAxisClipX=function(){var t=this;return t.config.axis_y_inner?-1:t.getAxisClipX(t.config.axis_rotated)},l.getYAxisClipY=function(){var t=this;return t.getAxisClipY(t.config.axis_rotated)},l.getAxisClipWidth=function(t){var e=this,n=Math.max(30,e.margin.left),i=Math.max(30,e.margin.right);return t?e.width+2+n+i:e.margin.left+20},l.getAxisClipHeight=function(t){return(t?this.margin.bottom:this.margin.top+this.height)+20},l.getXAxisClipWidth=function(){var t=this;return t.getAxisClipWidth(!t.config.axis_rotated)},l.getXAxisClipHeight=function(){var t=this;return t.getAxisClipHeight(!t.config.axis_rotated)},l.getYAxisClipWidth=function(){var t=this;return t.getAxisClipWidth(t.config.axis_rotated)+(t.config.axis_y_inner?20:0)},l.getYAxisClipHeight=function(){var t=this;return t.getAxisClipHeight(t.config.axis_rotated)},l.initPie=function(){var t=this,e=t.d3,n=t.config;t.pie=e.layout.pie().value(function(t){return t.values.reduce(function(t,e){return t+e.value},0)}),n.data_order||t.pie.sort(null)},l.updateRadius=function(){var t=this,e=t.config,n=e.gauge_width||e.donut_width;t.radiusExpanded=Math.min(t.arcWidth,t.arcHeight)/2,t.radius=.95*t.radiusExpanded,t.innerRadiusRatio=n?(t.radius-n)/t.radius:.6,t.innerRadius=t.hasType("donut")||t.hasType("gauge")?t.radius*t.innerRadiusRatio:0},l.updateArc=function(){var t=this;t.svgArc=t.getSvgArc(),t.svgArcExpanded=t.getSvgArcExpanded(),t.svgArcExpandedSub=t.getSvgArcExpanded(.98)},l.updateAngle=function(t){var e,n,i,r,o=this,a=o.config,s=!1,l=0;return a?(o.pie(o.filterTargetsToShow(o.data.targets)).forEach(function(e){s||e.data.id!==t.data.id||(s=!0,t=e,t.index=l),l++}),isNaN(t.startAngle)&&(t.startAngle=0),isNaN(t.endAngle)&&(t.endAngle=t.startAngle),o.isGaugeType(t.data)&&(e=a.gauge_min,n=a.gauge_max,i=Math.PI*(a.gauge_fullCircle?2:1)/(n-e),r=t.value<e?0:t.value<n?t.value-e:n-e,t.startAngle=a.gauge_startingAngle,t.endAngle=t.startAngle+i*r),s?t:null):null},l.getSvgArc=function(){var t=this,e=t.d3.svg.arc().outerRadius(t.radius).innerRadius(t.innerRadius),n=function(n,i){var r;return i?e(n):(r=t.updateAngle(n),r?e(r):"M 0 0")};return n.centroid=e.centroid,n},l.getSvgArcExpanded=function(t){var e=this,n=e.d3.svg.arc().outerRadius(e.radiusExpanded*(t?t:1)).innerRadius(e.innerRadius);return function(t){var i=e.updateAngle(t);return i?n(i):"M 0 0"}},l.getArc=function(t,e,n){return n||this.isArcType(t.data)?this.svgArc(t,e):"M 0 0"},l.transformForArcLabel=function(t){var e,n,i,r,o,a=this,s=a.config,l=a.updateAngle(t),c="";return l&&!a.hasType("gauge")&&(e=this.svgArc.centroid(l),n=isNaN(e[0])?0:e[0],i=isNaN(e[1])?0:e[1],r=Math.sqrt(n*n+i*i),o=a.hasType("donut")&&s.donut_label_ratio?f(s.donut_label_ratio)?s.donut_label_ratio(t,a.radius,r):s.donut_label_ratio:a.hasType("pie")&&s.pie_label_ratio?f(s.pie_label_ratio)?s.pie_label_ratio(t,a.radius,r):s.pie_label_ratio:a.radius&&r?(36/a.radius>.375?1.175-36/a.radius:.8)*a.radius/r:0,c="translate("+n*o+","+i*o+")"),c},l.getArcRatio=function(t){var e=this,n=e.config,i=Math.PI*(e.hasType("gauge")&&!n.gauge_fullCircle?1:2);return t?(t.endAngle-t.startAngle)/i:null},l.convertToArcData=function(t){return this.addName({id:t.data.id,value:t.value,ratio:this.getArcRatio(t),index:t.index})},l.textForArcLabel=function(t){var e,n,i,r,o,a=this;return a.shouldShowArcLabel()?(e=a.updateAngle(t),n=e?e.value:null,i=a.getArcRatio(e),r=t.data.id,a.hasType("gauge")||a.meetsArcLabelThreshold(i)?(o=a.getArcLabelFormat(),o?o(n,i,r):a.defaultArcValueFormat(n,i)):""):""},l.expandArc=function(e){var n,i=this;return i.transiting?void(n=t.setInterval(function(){i.transiting||(t.clearInterval(n),i.legend.selectAll(".c3-legend-item-focused").size()>0&&i.expandArc(e))},10)):(e=i.mapToTargetIds(e),void i.svg.selectAll(i.selectorTargets(e,"."+h.chartArc)).each(function(t){i.shouldExpand(t.data.id)&&i.d3.select(this).selectAll("path").transition().duration(i.expandDuration(t.data.id)).attr("d",i.svgArcExpanded).transition().duration(2*i.expandDuration(t.data.id)).attr("d",i.svgArcExpandedSub).each(function(t){i.isDonutType(t.data)})}))},l.unexpandArc=function(t){var e=this;e.transiting||(t=e.mapToTargetIds(t),e.svg.selectAll(e.selectorTargets(t,"."+h.chartArc)).selectAll("path").transition().duration(function(t){return e.expandDuration(t.data.id)}).attr("d",e.svgArc),e.svg.selectAll("."+h.arc).style("opacity",1))},l.expandDuration=function(t){var e=this,n=e.config;return e.isDonutType(t)?n.donut_expand_duration:e.isGaugeType(t)?n.gauge_expand_duration:e.isPieType(t)?n.pie_expand_duration:50},l.shouldExpand=function(t){var e=this,n=e.config;return e.isDonutType(t)&&n.donut_expand||e.isGaugeType(t)&&n.gauge_expand||e.isPieType(t)&&n.pie_expand},l.shouldShowArcLabel=function(){var t=this,e=t.config,n=!0;return t.hasType("donut")?n=e.donut_label_show:t.hasType("pie")&&(n=e.pie_label_show),n},l.meetsArcLabelThreshold=function(t){var e=this,n=e.config,i=e.hasType("donut")?n.donut_label_threshold:n.pie_label_threshold;return t>=i},l.getArcLabelFormat=function(){var t=this,e=t.config,n=e.pie_label_format;return t.hasType("gauge")?n=e.gauge_label_format:t.hasType("donut")&&(n=e.donut_label_format),n},l.getArcTitle=function(){var t=this;return t.hasType("donut")?t.config.donut_title:""},l.updateTargetsForArc=function(t){var e,n,i=this,r=i.main,o=i.classChartArc.bind(i),a=i.classArcs.bind(i),s=i.classFocus.bind(i);e=r.select("."+h.chartArcs).selectAll("."+h.chartArc).data(i.pie(t)).attr("class",function(t){return o(t)+s(t.data)}),n=e.enter().append("g").attr("class",o),n.append("g").attr("class",a),n.append("text").attr("dy",i.hasType("gauge")?"-.1em":".35em").style("opacity",0).style("text-anchor","middle").style("pointer-events","none")},l.initArc=function(){var t=this;t.arcs=t.main.select("."+h.chart).append("g").attr("class",h.chartArcs).attr("transform",t.getTranslate("arc")),t.arcs.append("text").attr("class",h.chartArcsTitle).style("text-anchor","middle").text(t.getArcTitle())},l.redrawArc=function(t,e,n){var i,r=this,o=r.d3,a=r.config,s=r.main;i=s.selectAll("."+h.arcs).selectAll("."+h.arc).data(r.arcData.bind(r)),i.enter().append("path").attr("class",r.classArc.bind(r)).style("fill",function(t){return r.color(t.data)}).style("cursor",function(t){return a.interaction_enabled&&a.data_selection_isselectable(t)?"pointer":null}).style("opacity",0).each(function(t){r.isGaugeType(t.data)&&(t.startAngle=t.endAngle=a.gauge_startingAngle),this._current=t}),i.attr("transform",function(t){return!r.isGaugeType(t.data)&&n?"scale(0)":""}).style("opacity",function(t){return t===this._current?0:1}).on("mouseover",a.interaction_enabled?function(t){var e,n;r.transiting||(e=r.updateAngle(t),e&&(n=r.convertToArcData(e),r.expandArc(e.data.id),r.api.focus(e.data.id),r.toggleFocusLegend(e.data.id,!0),r.config.data_onmouseover(n,this)))}:null).on("mousemove",a.interaction_enabled?function(t){var e,n,i=r.updateAngle(t);i&&(e=r.convertToArcData(i),n=[e],r.showTooltip(n,this))}:null).on("mouseout",a.interaction_enabled?function(t){var e,n;r.transiting||(e=r.updateAngle(t),e&&(n=r.convertToArcData(e),r.unexpandArc(e.data.id),r.api.revert(),r.revertLegend(),r.hideTooltip(),r.config.data_onmouseout(n,this)))}:null).on("click",a.interaction_enabled?function(t,e){var n,i=r.updateAngle(t);i&&(n=r.convertToArcData(i),r.toggleShape&&r.toggleShape(this,n,e),r.config.data_onclick.call(r.api,n,this))}:null).each(function(){r.transiting=!0}).transition().duration(t).attrTween("d",function(t){var e,n=r.updateAngle(t);return n?(isNaN(this._current.startAngle)&&(this._current.startAngle=0),isNaN(this._current.endAngle)&&(this._current.endAngle=this._current.startAngle),e=o.interpolate(this._current,n),this._current=e(0),function(n){var i=e(n);return i.data=t.data,r.getArc(i,!0)}):function(){return"M 0 0"}}).attr("transform",n?"scale(1)":"").style("fill",function(t){return r.levelColor?r.levelColor(t.data.values[0].value):r.color(t.data.id)}).style("opacity",1).call(r.endall,function(){r.transiting=!1}),i.exit().transition().duration(e).style("opacity",0).remove(),s.selectAll("."+h.chartArc).select("text").style("opacity",0).attr("class",function(t){return r.isGaugeType(t.data)?h.gaugeValue:""}).text(r.textForArcLabel.bind(r)).attr("transform",r.transformForArcLabel.bind(r)).style("font-size",function(t){return r.isGaugeType(t.data)?Math.round(r.radius/5)+"px":""}).transition().duration(t).style("opacity",function(t){return r.isTargetToShow(t.data.id)&&r.isArcType(t.data)?1:0}),s.select("."+h.chartArcsTitle).style("opacity",r.hasType("donut")||r.hasType("gauge")?1:0),r.hasType("gauge")&&(r.arcs.select("."+h.chartArcsBackground).attr("d",function(){var t={data:[{value:a.gauge_max}],startAngle:a.gauge_startingAngle,endAngle:-1*a.gauge_startingAngle};return r.getArc(t,!0,!0)}),r.arcs.select("."+h.chartArcsGaugeUnit).attr("dy",".75em").text(a.gauge_label_show?a.gauge_units:""),r.arcs.select("."+h.chartArcsGaugeMin).attr("dx",-1*(r.innerRadius+(r.radius-r.innerRadius)/(a.gauge_fullCircle?1:2))+"px").attr("dy","1.2em").text(a.gauge_label_show?a.gauge_min:""),r.arcs.select("."+h.chartArcsGaugeMax).attr("dx",r.innerRadius+(r.radius-r.innerRadius)/(a.gauge_fullCircle?1:2)+"px").attr("dy","1.2em").text(a.gauge_label_show?a.gauge_max:""))},l.initGauge=function(){var t=this.arcs;this.hasType("gauge")&&(t.append("path").attr("class",h.chartArcsBackground),t.append("text").attr("class",h.chartArcsGaugeUnit).style("text-anchor","middle").style("pointer-events","none"),t.append("text").attr("class",h.chartArcsGaugeMin).style("text-anchor","middle").style("pointer-events","none"),t.append("text").attr("class",h.chartArcsGaugeMax).style("text-anchor","middle").style("pointer-events","none"))},l.getGaugeLabelHeight=function(){return this.config.gauge_label_show?20:0},l.initRegion=function(){var t=this;t.region=t.main.append("g").attr("clip-path",t.clipPath).attr("class",h.regions)},l.updateRegion=function(t){var e=this,n=e.config;e.region.style("visibility",e.hasArcType()?"hidden":"visible"),e.mainRegion=e.main.select("."+h.regions).selectAll("."+h.region).data(n.regions),e.mainRegion.enter().append("g").append("rect").style("fill-opacity",0),e.mainRegion.attr("class",e.classRegion.bind(e)),e.mainRegion.exit().transition().duration(t).style("opacity",0).remove()},l.redrawRegion=function(t){var e=this,n=e.mainRegion.selectAll("rect").each(function(){var t=e.d3.select(this.parentNode).datum();e.d3.select(this).datum(t)}),i=e.regionX.bind(e),r=e.regionY.bind(e),o=e.regionWidth.bind(e),a=e.regionHeight.bind(e);return[(t?n.transition():n).attr("x",i).attr("y",r).attr("width",o).attr("height",a).style("fill-opacity",function(t){return d(t.opacity)?t.opacity:.1})]},l.regionX=function(t){var e,n=this,i=n.config,r="y"===t.axis?n.y:n.y2;return e="y"===t.axis||"y2"===t.axis?i.axis_rotated&&"start"in t?r(t.start):0:i.axis_rotated?0:"start"in t?n.x(n.isTimeSeries()?n.parseDate(t.start):t.start):0},l.regionY=function(t){var e,n=this,i=n.config,r="y"===t.axis?n.y:n.y2;return e="y"===t.axis||"y2"===t.axis?i.axis_rotated?0:"end"in t?r(t.end):0:i.axis_rotated&&"start"in t?n.x(n.isTimeSeries()?n.parseDate(t.start):t.start):0},l.regionWidth=function(t){var e,n=this,i=n.config,r=n.regionX(t),o="y"===t.axis?n.y:n.y2;return e="y"===t.axis||"y2"===t.axis?i.axis_rotated&&"end"in t?o(t.end):n.width:i.axis_rotated?n.width:"end"in t?n.x(n.isTimeSeries()?n.parseDate(t.end):t.end):n.width,e<r?0:e-r},l.regionHeight=function(t){var e,n=this,i=n.config,r=this.regionY(t),o="y"===t.axis?n.y:n.y2;return e="y"===t.axis||"y2"===t.axis?i.axis_rotated?n.height:"start"in t?o(t.start):n.height:i.axis_rotated&&"end"in t?n.x(n.isTimeSeries()?n.parseDate(t.end):t.end):n.height,e<r?0:e-r},l.isRegionOnX=function(t){return!t.axis||"x"===t.axis},l.drag=function(t){var e,n,i,r,o,a,s,l,c=this,u=c.config,d=c.main,f=c.d3;c.hasArcType()||u.data_selection_enabled&&(u.zoom_enabled&&!c.zoom.altDomain||u.data_selection_multiple&&(e=c.dragStart[0],n=c.dragStart[1],i=t[0],r=t[1],o=Math.min(e,i),a=Math.max(e,i),s=u.data_selection_grouped?c.margin.top:Math.min(n,r),l=u.data_selection_grouped?c.height:Math.max(n,r),d.select("."+h.dragarea).attr("x",o).attr("y",s).attr("width",a-o).attr("height",l-s),d.selectAll("."+h.shapes).selectAll("."+h.shape).filter(function(t){return u.data_selection_isselectable(t)}).each(function(t,e){var n,i,r,u,d,p,g=f.select(this),m=g.classed(h.SELECTED),v=g.classed(h.INCLUDED),y=!1;if(g.classed(h.circle))n=1*g.attr("cx"),i=1*g.attr("cy"),d=c.togglePoint,y=o<n&&n<a&&s<i&&i<l;else{if(!g.classed(h.bar))return;p=T(this),n=p.x,i=p.y,r=p.width,u=p.height,d=c.togglePath,y=!(a<n||n+r<o||l<i||i+u<s)}y^v&&(g.classed(h.INCLUDED,!v),g.classed(h.SELECTED,!m),d.call(c,!m,g,t,e))})))},l.dragstart=function(t){var e=this,n=e.config;e.hasArcType()||n.data_selection_enabled&&(e.dragStart=t,e.main.select("."+h.chart).append("rect").attr("class",h.dragarea).style("opacity",.1),e.dragging=!0)},l.dragend=function(){var t=this,e=t.config;t.hasArcType()||e.data_selection_enabled&&(t.main.select("."+h.dragarea).transition().duration(100).style("opacity",0).remove(),t.main.selectAll("."+h.shape).classed(h.INCLUDED,!1),t.dragging=!1)},l.selectPoint=function(t,e,n){var i=this,r=i.config,o=(r.axis_rotated?i.circleY:i.circleX).bind(i),a=(r.axis_rotated?i.circleX:i.circleY).bind(i),s=i.pointSelectR.bind(i);r.data_onselected.call(i.api,e,t.node()),i.main.select("."+h.selectedCircles+i.getTargetSelectorSuffix(e.id)).selectAll("."+h.selectedCircle+"-"+n).data([e]).enter().append("circle").attr("class",function(){return i.generateClass(h.selectedCircle,n)}).attr("cx",o).attr("cy",a).attr("stroke",function(){return i.color(e)}).attr("r",function(t){return 1.4*i.pointSelectR(t)}).transition().duration(100).attr("r",s)},l.unselectPoint=function(t,e,n){var i=this;i.config.data_onunselected.call(i.api,e,t.node()),i.main.select("."+h.selectedCircles+i.getTargetSelectorSuffix(e.id)).selectAll("."+h.selectedCircle+"-"+n).transition().duration(100).attr("r",0).remove()},l.togglePoint=function(t,e,n,i){t?this.selectPoint(e,n,i):this.unselectPoint(e,n,i)},l.selectPath=function(t,e){var n=this;n.config.data_onselected.call(n,e,t.node()),n.config.interaction_brighten&&t.transition().duration(100).style("fill",function(){return n.d3.rgb(n.color(e)).brighter(.75)})},l.unselectPath=function(t,e){var n=this;n.config.data_onunselected.call(n,e,t.node()),n.config.interaction_brighten&&t.transition().duration(100).style("fill",function(){return n.color(e)})},l.togglePath=function(t,e,n,i){t?this.selectPath(e,n,i):this.unselectPath(e,n,i)},l.getToggle=function(t,e){var n,i=this;return"circle"===t.nodeName?n=i.isStepType(e)?function(){}:i.togglePoint:"path"===t.nodeName&&(n=i.togglePath),n},l.toggleShape=function(t,e,n){var i=this,r=i.d3,o=i.config,a=r.select(t),s=a.classed(h.SELECTED),l=i.getToggle(t,e).bind(i);o.data_selection_enabled&&o.data_selection_isselectable(e)&&(o.data_selection_multiple||i.main.selectAll("."+h.shapes+(o.data_selection_grouped?i.getTargetSelectorSuffix(e.id):"")).selectAll("."+h.shape).each(function(t,e){var n=r.select(this);n.classed(h.SELECTED)&&l(!1,n.classed(h.SELECTED,!1),t,e)}),a.classed(h.SELECTED,!s),l(!s,a,e,n))},l.initBrush=function(){var t=this,e=t.d3;t.brush=e.svg.brush().on("brush",function(){t.redrawForBrush()}),t.brush.update=function(){return t.context&&t.context.select("."+h.brush).call(this),this},t.brush.scale=function(e){return t.config.axis_rotated?this.y(e):this.x(e)}},l.initSubchart=function(){var t=this,e=t.config,n=t.context=t.svg.append("g").attr("transform",t.getTranslate("context")),i=e.subchart_show?"visible":"hidden";n.style("visibility",i),n.append("g").attr("clip-path",t.clipPathForSubchart).attr("class",h.chart),n.select("."+h.chart).append("g").attr("class",h.chartBars),n.select("."+h.chart).append("g").attr("class",h.chartLines),n.append("g").attr("clip-path",t.clipPath).attr("class",h.brush).call(t.brush),t.axes.subx=n.append("g").attr("class",h.axisX).attr("transform",t.getTranslate("subx")).attr("clip-path",e.axis_rotated?"":t.clipPathForXAxis).style("visibility",e.subchart_axis_x_show?i:"hidden")},l.updateTargetsForSubchart=function(t){var e,n,i,r,o=this,a=o.context,s=o.config,l=o.classChartBar.bind(o),c=o.classBars.bind(o),u=o.classChartLine.bind(o),d=o.classLines.bind(o),f=o.classAreas.bind(o);s.subchart_show&&(r=a.select("."+h.chartBars).selectAll("."+h.chartBar).data(t).attr("class",l),i=r.enter().append("g").style("opacity",0).attr("class",l),i.append("g").attr("class",c),n=a.select("."+h.chartLines).selectAll("."+h.chartLine).data(t).attr("class",u),e=n.enter().append("g").style("opacity",0).attr("class",u),e.append("g").attr("class",d),e.append("g").attr("class",f),a.selectAll("."+h.brush+" rect").attr(s.axis_rotated?"width":"height",s.axis_rotated?o.width2:o.height2))},l.updateBarForSubchart=function(t){var e=this;e.contextBar=e.context.selectAll("."+h.bars).selectAll("."+h.bar).data(e.barData.bind(e)),e.contextBar.enter().append("path").attr("class",e.classBar.bind(e)).style("stroke","none").style("fill",e.color),e.contextBar.style("opacity",e.initialOpacity.bind(e)),e.contextBar.exit().transition().duration(t).style("opacity",0).remove()},l.redrawBarForSubchart=function(t,e,n){(e?this.contextBar.transition(Math.random().toString()).duration(n):this.contextBar).attr("d",t).style("opacity",1)},l.updateLineForSubchart=function(t){var e=this;e.contextLine=e.context.selectAll("."+h.lines).selectAll("."+h.line).data(e.lineData.bind(e)),e.contextLine.enter().append("path").attr("class",e.classLine.bind(e)).style("stroke",e.color),e.contextLine.style("opacity",e.initialOpacity.bind(e)),e.contextLine.exit().transition().duration(t).style("opacity",0).remove()},l.redrawLineForSubchart=function(t,e,n){(e?this.contextLine.transition(Math.random().toString()).duration(n):this.contextLine).attr("d",t).style("opacity",1)},l.updateAreaForSubchart=function(t){var e=this,n=e.d3;e.contextArea=e.context.selectAll("."+h.areas).selectAll("."+h.area).data(e.lineData.bind(e)),e.contextArea.enter().append("path").attr("class",e.classArea.bind(e)).style("fill",e.color).style("opacity",function(){return e.orgAreaOpacity=+n.select(this).style("opacity"),0}),e.contextArea.style("opacity",0),e.contextArea.exit().transition().duration(t).style("opacity",0).remove()},l.redrawAreaForSubchart=function(t,e,n){(e?this.contextArea.transition(Math.random().toString()).duration(n):this.contextArea).attr("d",t).style("fill",this.color).style("opacity",this.orgAreaOpacity)},l.redrawSubchart=function(t,e,n,i,r,o,a){var s,l,c,u=this,h=u.d3,d=u.config;u.context.style("visibility",d.subchart_show?"visible":"hidden"),d.subchart_show&&(h.event&&"zoom"===h.event.type&&u.brush.extent(u.x.orgDomain()).update(),t&&(u.brush.empty()||u.brush.extent(u.x.orgDomain()).update(),s=u.generateDrawArea(r,!0),l=u.generateDrawBar(o,!0),c=u.generateDrawLine(a,!0),u.updateBarForSubchart(n),u.updateLineForSubchart(n),u.updateAreaForSubchart(n),u.redrawBarForSubchart(l,n,n),u.redrawLineForSubchart(c,n,n),u.redrawAreaForSubchart(s,n,n)))},l.redrawForBrush=function(){var t=this,e=t.x;t.redraw({withTransition:!1,withY:t.config.zoom_rescale,withSubchart:!1,withUpdateXDomain:!0,withDimension:!1}),t.config.subchart_onbrush.call(t.api,e.orgDomain())},l.transformContext=function(t,e){var n,i=this;e&&e.axisSubX?n=e.axisSubX:(n=i.context.select("."+h.axisX),t&&(n=n.transition())),i.context.attr("transform",i.getTranslate("context")),n.attr("transform",i.getTranslate("subx"))},l.getDefaultExtent=function(){var t=this,e=t.config,n=f(e.axis_x_extent)?e.axis_x_extent(t.getXDomain(t.data.targets)):e.axis_x_extent;return t.isTimeSeries()&&(n=[t.parseDate(n[0]),t.parseDate(n[1])]),n},l.initZoom=function(){var t,e=this,n=e.d3,i=e.config;e.zoom=n.behavior.zoom().on("zoomstart",function(){t=n.event.sourceEvent,e.zoom.altDomain=n.event.sourceEvent.altKey?e.x.orgDomain():null,i.zoom_onzoomstart.call(e.api,n.event.sourceEvent)}).on("zoom",function(){e.redrawForZoom.call(e)}).on("zoomend",function(){var r=n.event.sourceEvent;r&&t.clientX===r.clientX&&t.clientY===r.clientY||(e.redrawEventRect(),e.updateZoom(),i.zoom_onzoomend.call(e.api,e.x.orgDomain()))}),e.zoom.scale=function(t){return i.axis_rotated?this.y(t):this.x(t)},e.zoom.orgScaleExtent=function(){var t=i.zoom_extent?i.zoom_extent:[1,10];return[t[0],Math.max(e.getMaxDataCount()/t[1],t[1])]},e.zoom.updateScaleExtent=function(){var t=x(e.x.orgDomain())/x(e.getZoomDomain()),n=this.orgScaleExtent();return this.scaleExtent([n[0]*t,n[1]*t]),this}},l.getZoomDomain=function(){var t=this,e=t.config,n=t.d3,i=n.min([t.orgXDomain[0],e.zoom_x_min]),r=n.max([t.orgXDomain[1],e.zoom_x_max]);return[i,r]},l.updateZoom=function(){var t=this,e=t.config.zoom_enabled?t.zoom:function(){};t.main.select("."+h.zoomRect).call(e).on("dblclick.zoom",null),t.main.selectAll("."+h.eventRect).call(e).on("dblclick.zoom",null)},l.redrawForZoom=function(){var t=this,e=t.d3,n=t.config,i=t.zoom,r=t.x;if(n.zoom_enabled&&0!==t.filterTargetsToShow(t.data.targets).length){if("mousemove"===e.event.sourceEvent.type&&i.altDomain)return r.domain(i.altDomain),void i.scale(r).updateScaleExtent();t.isCategorized()&&r.orgDomain()[0]===t.orgXDomain[0]&&r.domain([t.orgXDomain[0]-1e-10,r.orgDomain()[1]]),t.redraw({withTransition:!1,withY:n.zoom_rescale,withSubchart:!1,withEventRect:!1,withDimension:!1}),"mousemove"===e.event.sourceEvent.type&&(t.cancelClick=!0),n.zoom_onzoom.call(t.api,r.orgDomain())}},l.generateColor=function(){var t=this,e=t.config,n=t.d3,i=e.data_colors,r=_(e.color_pattern)?e.color_pattern:n.scale.category10().range(),o=e.data_color,a=[];return function(t){var e,n=t.id||t.data&&t.data.id||t;return i[n]instanceof Function?e=i[n](t):i[n]?e=i[n]:(a.indexOf(n)<0&&a.push(n),e=r[a.indexOf(n)%r.length],i[n]=e),o instanceof Function?o(e,t):e}},l.generateLevelColor=function(){var t=this,e=t.config,n=e.color_pattern,i=e.color_threshold,r="value"===i.unit,o=i.values&&i.values.length?i.values:[],a=i.max||100;return _(e.color_threshold)?function(t){var e,i,s=n[n.length-1];for(e=0;e<o.length;e++)if(i=r?t:100*t/a,i<o[e]){s=n[e];break}return s}:null},l.getYFormat=function(t){var e=this,n=t&&!e.hasType("gauge")?e.defaultArcValueFormat:e.yFormat,i=t&&!e.hasType("gauge")?e.defaultArcValueFormat:e.y2Format;return function(t,r,o){var a="y2"===e.axis.getId(o)?i:n;return a.call(e,t,r)}},l.yFormat=function(t){var e=this,n=e.config,i=n.axis_y_tick_format?n.axis_y_tick_format:e.defaultValueFormat;return i(t)},l.y2Format=function(t){var e=this,n=e.config,i=n.axis_y2_tick_format?n.axis_y2_tick_format:e.defaultValueFormat;return i(t)},l.defaultValueFormat=function(t){return d(t)?+t:""},l.defaultArcValueFormat=function(t,e){return(100*e).toFixed(1)+"%"},l.dataLabelFormat=function(t){var e,n=this,i=n.config.data_labels,r=function(t){return d(t)?+t:""};return e="function"==typeof i.format?i.format:"object"==typeof i.format?i.format[t]?i.format[t]===!0?r:i.format[t]:function(){return""}:r},l.hasCaches=function(t){for(var e=0;e<t.length;e++)if(!(t[e]in this.cache))return!1;return!0},l.addCache=function(t,e){this.cache[t]=this.cloneTarget(e)},l.getCaches=function(t){var e,n=[];for(e=0;e<t.length;e++)t[e]in this.cache&&n.push(this.cloneTarget(this.cache[t[e]]));return n};var h=l.CLASS={target:"c3-target",chart:"c3-chart",chartLine:"c3-chart-line",chartLines:"c3-chart-lines",chartBar:"c3-chart-bar",chartBars:"c3-chart-bars",chartText:"c3-chart-text",chartTexts:"c3-chart-texts",chartArc:"c3-chart-arc",chartArcs:"c3-chart-arcs",chartArcsTitle:"c3-chart-arcs-title",chartArcsBackground:"c3-chart-arcs-background",chartArcsGaugeUnit:"c3-chart-arcs-gauge-unit",chartArcsGaugeMax:"c3-chart-arcs-gauge-max",chartArcsGaugeMin:"c3-chart-arcs-gauge-min",selectedCircle:"c3-selected-circle",selectedCircles:"c3-selected-circles",eventRect:"c3-event-rect",eventRects:"c3-event-rects",eventRectsSingle:"c3-event-rects-single",eventRectsMultiple:"c3-event-rects-multiple",zoomRect:"c3-zoom-rect",brush:"c3-brush",focused:"c3-focused",defocused:"c3-defocused",region:"c3-region",regions:"c3-regions",title:"c3-title",tooltipContainer:"c3-tooltip-container",tooltip:"c3-tooltip",tooltipName:"c3-tooltip-name",shape:"c3-shape",shapes:"c3-shapes",line:"c3-line",lines:"c3-lines",bar:"c3-bar",bars:"c3-bars",circle:"c3-circle",circles:"c3-circles",arc:"c3-arc",arcs:"c3-arcs",area:"c3-area",areas:"c3-areas",empty:"c3-empty",text:"c3-text",texts:"c3-texts",gaugeValue:"c3-gauge-value",grid:"c3-grid",gridLines:"c3-grid-lines",xgrid:"c3-xgrid",xgrids:"c3-xgrids",xgridLine:"c3-xgrid-line",xgridLines:"c3-xgrid-lines",xgridFocus:"c3-xgrid-focus",ygrid:"c3-ygrid",ygrids:"c3-ygrids",ygridLine:"c3-ygrid-line",ygridLines:"c3-ygrid-lines",axis:"c3-axis",axisX:"c3-axis-x",axisXLabel:"c3-axis-x-label",axisY:"c3-axis-y",axisYLabel:"c3-axis-y-label",axisY2:"c3-axis-y2",axisY2Label:"c3-axis-y2-label",legendBackground:"c3-legend-background",legendItem:"c3-legend-item",legendItemEvent:"c3-legend-item-event",legendItemTile:"c3-legend-item-tile",legendItemHidden:"c3-legend-item-hidden",legendItemFocused:"c3-legend-item-focused",dragarea:"c3-dragarea",EXPANDED:"_expanded_",SELECTED:"_selected_",INCLUDED:"_included_"};l.generateClass=function(t,e){return" "+t+" "+t+this.getTargetSelectorSuffix(e)},l.classText=function(t){return this.generateClass(h.text,t.index)},l.classTexts=function(t){return this.generateClass(h.texts,t.id)},l.classShape=function(t){return this.generateClass(h.shape,t.index)},l.classShapes=function(t){return this.generateClass(h.shapes,t.id)},l.classLine=function(t){return this.classShape(t)+this.generateClass(h.line,t.id)},l.classLines=function(t){return this.classShapes(t)+this.generateClass(h.lines,t.id)},l.classCircle=function(t){return this.classShape(t)+this.generateClass(h.circle,t.index)},l.classCircles=function(t){return this.classShapes(t)+this.generateClass(h.circles,t.id)},l.classBar=function(t){return this.classShape(t)+this.generateClass(h.bar,t.index)},l.classBars=function(t){return this.classShapes(t)+this.generateClass(h.bars,t.id)},l.classArc=function(t){return this.classShape(t.data)+this.generateClass(h.arc,t.data.id)},l.classArcs=function(t){return this.classShapes(t.data)+this.generateClass(h.arcs,t.data.id)},l.classArea=function(t){return this.classShape(t)+this.generateClass(h.area,t.id)},l.classAreas=function(t){return this.classShapes(t)+this.generateClass(h.areas,t.id)},l.classRegion=function(t,e){return this.generateClass(h.region,e)+" "+("class"in t?t.class:"");
-},l.classEvent=function(t){return this.generateClass(h.eventRect,t.index)},l.classTarget=function(t){var e=this,n=e.config.data_classes[t],i="";return n&&(i=" "+h.target+"-"+n),e.generateClass(h.target,t)+i},l.classFocus=function(t){return this.classFocused(t)+this.classDefocused(t)},l.classFocused=function(t){return" "+(this.focusedTargetIds.indexOf(t.id)>=0?h.focused:"")},l.classDefocused=function(t){return" "+(this.defocusedTargetIds.indexOf(t.id)>=0?h.defocused:"")},l.classChartText=function(t){return h.chartText+this.classTarget(t.id)},l.classChartLine=function(t){return h.chartLine+this.classTarget(t.id)},l.classChartBar=function(t){return h.chartBar+this.classTarget(t.id)},l.classChartArc=function(t){return h.chartArc+this.classTarget(t.data.id)},l.getTargetSelectorSuffix=function(t){return t||0===t?("-"+t).replace(/[\s?!@#$%^&*()_=+,.<>'":;\[\]\/|~`{}\\]/g,"-"):""},l.selectorTarget=function(t,e){return(e||"")+"."+h.target+this.getTargetSelectorSuffix(t)},l.selectorTargets=function(t,e){var n=this;return t=t||[],t.length?t.map(function(t){return n.selectorTarget(t,e)}):null},l.selectorLegend=function(t){return"."+h.legendItem+this.getTargetSelectorSuffix(t)},l.selectorLegends=function(t){var e=this;return t&&t.length?t.map(function(t){return e.selectorLegend(t)}):null};var d=l.isValue=function(t){return t||0===t},f=l.isFunction=function(t){return"function"==typeof t},p=l.isString=function(t){return"string"==typeof t},g=l.isUndefined=function(t){return"undefined"==typeof t},m=l.isDefined=function(t){return"undefined"!=typeof t},v=l.ceil10=function(t){return 10*Math.ceil(t/10)},y=l.asHalfPixel=function(t){return Math.ceil(t)+.5},x=l.diffDomain=function(t){return t[1]-t[0]},b=l.isEmpty=function(t){return"undefined"==typeof t||null===t||p(t)&&0===t.length||"object"==typeof t&&0===Object.keys(t).length},_=l.notEmpty=function(t){return!l.isEmpty(t)},w=l.getOption=function(t,e,n){return m(t[e])?t[e]:n},S=l.hasValue=function(t,e){var n=!1;return Object.keys(t).forEach(function(i){t[i]===e&&(n=!0)}),n},C=l.sanitise=function(t){return"string"==typeof t?t.replace(/</g,"&lt;").replace(/>/g,"&gt;"):t},T=l.getPathBox=function(t){var e=t.getBoundingClientRect(),n=[t.pathSegList.getItem(0),t.pathSegList.getItem(1)],i=n[0].x,r=Math.min(n[0].y,n[1].y);return{x:i,y:r,width:e.width,height:e.height}};s.focus=function(t){var e,n=this.internal;t=n.mapToTargetIds(t),e=n.svg.selectAll(n.selectorTargets(t.filter(n.isTargetToShow,n))),this.revert(),this.defocus(),e.classed(h.focused,!0).classed(h.defocused,!1),n.hasArcType()&&n.expandArc(t),n.toggleFocusLegend(t,!0),n.focusedTargetIds=t,n.defocusedTargetIds=n.defocusedTargetIds.filter(function(e){return t.indexOf(e)<0})},s.defocus=function(t){var e,n=this.internal;t=n.mapToTargetIds(t),e=n.svg.selectAll(n.selectorTargets(t.filter(n.isTargetToShow,n))),e.classed(h.focused,!1).classed(h.defocused,!0),n.hasArcType()&&n.unexpandArc(t),n.toggleFocusLegend(t,!1),n.focusedTargetIds=n.focusedTargetIds.filter(function(e){return t.indexOf(e)<0}),n.defocusedTargetIds=t},s.revert=function(t){var e,n=this.internal;t=n.mapToTargetIds(t),e=n.svg.selectAll(n.selectorTargets(t)),e.classed(h.focused,!1).classed(h.defocused,!1),n.hasArcType()&&n.unexpandArc(t),n.config.legend_show&&(n.showLegend(t.filter(n.isLegendToShow.bind(n))),n.legend.selectAll(n.selectorLegends(t)).filter(function(){return n.d3.select(this).classed(h.legendItemFocused)}).classed(h.legendItemFocused,!1)),n.focusedTargetIds=[],n.defocusedTargetIds=[]},s.show=function(t,e){var n,i=this.internal;t=i.mapToTargetIds(t),e=e||{},i.removeHiddenTargetIds(t),n=i.svg.selectAll(i.selectorTargets(t)),n.transition().style("opacity",1,"important").call(i.endall,function(){n.style("opacity",null).style("opacity",1)}),e.withLegend&&i.showLegend(t),i.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0})},s.hide=function(t,e){var n,i=this.internal;t=i.mapToTargetIds(t),e=e||{},i.addHiddenTargetIds(t),n=i.svg.selectAll(i.selectorTargets(t)),n.transition().style("opacity",0,"important").call(i.endall,function(){n.style("opacity",null).style("opacity",0)}),e.withLegend&&i.hideLegend(t),i.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0})},s.toggle=function(t,e){var n=this,i=this.internal;i.mapToTargetIds(t).forEach(function(t){i.isTargetToShow(t)?n.hide(t,e):n.show(t,e)})},s.zoom=function(t){var e=this.internal;return t&&(e.isTimeSeries()&&(t=t.map(function(t){return e.parseDate(t)})),e.brush.extent(t),e.redraw({withUpdateXDomain:!0,withY:e.config.zoom_rescale}),e.config.zoom_onzoom.call(this,e.x.orgDomain())),e.brush.extent()},s.zoom.enable=function(t){var e=this.internal;e.config.zoom_enabled=t,e.updateAndRedraw()},s.unzoom=function(){var t=this.internal;t.brush.clear().update(),t.redraw({withUpdateXDomain:!0})},s.zoom.max=function(t){var e=this.internal,n=e.config,i=e.d3;return 0===t||t?void(n.zoom_x_max=i.max([e.orgXDomain[1],t])):n.zoom_x_max},s.zoom.min=function(t){var e=this.internal,n=e.config,i=e.d3;return 0===t||t?void(n.zoom_x_min=i.min([e.orgXDomain[0],t])):n.zoom_x_min},s.zoom.range=function(t){return arguments.length?(m(t.max)&&this.domain.max(t.max),void(m(t.min)&&this.domain.min(t.min))):{max:this.domain.max(),min:this.domain.min()}},s.load=function(t){var e=this.internal,n=e.config;return t.xs&&e.addXs(t.xs),"names"in t&&s.data.names.bind(this)(t.names),"classes"in t&&Object.keys(t.classes).forEach(function(e){n.data_classes[e]=t.classes[e]}),"categories"in t&&e.isCategorized()&&(n.axis_x_categories=t.categories),"axes"in t&&Object.keys(t.axes).forEach(function(e){n.data_axes[e]=t.axes[e]}),"colors"in t&&Object.keys(t.colors).forEach(function(e){n.data_colors[e]=t.colors[e]}),"cacheIds"in t&&e.hasCaches(t.cacheIds)?void e.load(e.getCaches(t.cacheIds),t.done):void("unload"in t?e.unload(e.mapToTargetIds("boolean"==typeof t.unload&&t.unload?null:t.unload),function(){e.loadFromArgs(t)}):e.loadFromArgs(t))},s.unload=function(t){var e=this.internal;t=t||{},t instanceof Array?t={ids:t}:"string"==typeof t&&(t={ids:[t]}),e.unload(e.mapToTargetIds(t.ids),function(){e.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0}),t.done&&t.done()})},s.flow=function(t){var e,n,i,r,o,a,s,l,c=this.internal,u=[],h=c.getMaxDataCount(),f=0,p=0;if(t.json)n=c.convertJsonToData(t.json,t.keys);else if(t.rows)n=c.convertRowsToData(t.rows);else{if(!t.columns)return;n=c.convertColumnsToData(t.columns)}e=c.convertDataToTargets(n,!0),c.data.targets.forEach(function(t){var n,i,r=!1;for(n=0;n<e.length;n++)if(t.id===e[n].id){for(r=!0,t.values[t.values.length-1]&&(p=t.values[t.values.length-1].index+1),f=e[n].values.length,i=0;i<f;i++)e[n].values[i].index=p+i,c.isTimeSeries()||(e[n].values[i].x=p+i);t.values=t.values.concat(e[n].values),e.splice(n,1);break}r||u.push(t.id)}),c.data.targets.forEach(function(t){var e,n;for(e=0;e<u.length;e++)if(t.id===u[e])for(p=t.values[t.values.length-1].index+1,n=0;n<f;n++)t.values.push({id:t.id,index:p+n,x:c.isTimeSeries()?c.getOtherTargetX(p+n):p+n,value:null})}),c.data.targets.length&&e.forEach(function(t){var e,n=[];for(e=c.data.targets[0].values[0].index;e<p;e++)n.push({id:t.id,index:e,x:c.isTimeSeries()?c.getOtherTargetX(e):e,value:null});t.values.forEach(function(t){t.index+=p,c.isTimeSeries()||(t.x+=p)}),t.values=n.concat(t.values)}),c.data.targets=c.data.targets.concat(e),i=c.getMaxDataCount(),o=c.data.targets[0],a=o.values[0],m(t.to)?(f=0,l=c.isTimeSeries()?c.parseDate(t.to):t.to,o.values.forEach(function(t){t.x<l&&f++})):m(t.length)&&(f=t.length),h?1===h&&c.isTimeSeries()&&(s=(o.values[o.values.length-1].x-a.x)/2,r=[new Date(+a.x-s),new Date(+a.x+s)],c.updateXDomain(null,!0,!0,!1,r)):(s=c.isTimeSeries()?o.values.length>1?o.values[o.values.length-1].x-a.x:a.x-c.getXDomain(c.data.targets)[0]:1,r=[a.x-s,a.x],c.updateXDomain(null,!0,!0,!1,r)),c.updateTargets(c.data.targets),c.redraw({flow:{index:a.index,length:f,duration:d(t.duration)?t.duration:c.config.transition_duration,done:t.done,orgDataCount:h},withLegend:!0,withTransition:h>1,withTrimXDomain:!1,withUpdateXAxis:!0})},l.generateFlow=function(t){var e=this,n=e.config,i=e.d3;return function(){var r,o,a,s=t.targets,l=t.flow,c=t.drawBar,u=t.drawLine,d=t.drawArea,f=t.cx,p=t.cy,g=t.xv,m=t.xForText,v=t.yForText,y=t.duration,b=1,_=l.index,w=l.length,S=e.getValueOnIndex(e.data.targets[0].values,_),C=e.getValueOnIndex(e.data.targets[0].values,_+w),T=e.x.domain(),k=l.duration||y,A=l.done||function(){},M=e.generateWait(),L=e.xgrid||i.selectAll([]),E=e.xgridLines||i.selectAll([]),P=e.mainRegion||i.selectAll([]),N=e.mainText||i.selectAll([]),O=e.mainBar||i.selectAll([]),R=e.mainLine||i.selectAll([]),D=e.mainArea||i.selectAll([]),I=e.mainCircle||i.selectAll([]);e.flowing=!0,e.data.targets.forEach(function(t){t.values.splice(0,w)}),a=e.updateXDomain(s,!0,!0),e.updateXGrid&&e.updateXGrid(!0),l.orgDataCount?r=1===l.orgDataCount||(S&&S.x)===(C&&C.x)?e.x(T[0])-e.x(a[0]):e.isTimeSeries()?e.x(T[0])-e.x(a[0]):e.x(S.x)-e.x(C.x):1!==e.data.targets[0].values.length?r=e.x(T[0])-e.x(a[0]):e.isTimeSeries()?(S=e.getValueOnIndex(e.data.targets[0].values,0),C=e.getValueOnIndex(e.data.targets[0].values,e.data.targets[0].values.length-1),r=e.x(S.x)-e.x(C.x)):r=x(a)/2,b=x(T)/x(a),o="translate("+r+",0) scale("+b+",1)",e.hideXGridFocus(),i.transition().ease("linear").duration(k).each(function(){M.add(e.axes.x.transition().call(e.xAxis)),M.add(O.transition().attr("transform",o)),M.add(R.transition().attr("transform",o)),M.add(D.transition().attr("transform",o)),M.add(I.transition().attr("transform",o)),M.add(N.transition().attr("transform",o)),M.add(P.filter(e.isRegionOnX).transition().attr("transform",o)),M.add(L.transition().attr("transform",o)),M.add(E.transition().attr("transform",o))}).call(M,function(){var t,i=[],r=[],o=[];if(w){for(t=0;t<w;t++)i.push("."+h.shape+"-"+(_+t)),r.push("."+h.text+"-"+(_+t)),o.push("."+h.eventRect+"-"+(_+t));e.svg.selectAll("."+h.shapes).selectAll(i).remove(),e.svg.selectAll("."+h.texts).selectAll(r).remove(),e.svg.selectAll("."+h.eventRects).selectAll(o).remove(),e.svg.select("."+h.xgrid).remove()}L.attr("transform",null).attr(e.xgridAttr),E.attr("transform",null),E.select("line").attr("x1",n.axis_rotated?0:g).attr("x2",n.axis_rotated?e.width:g),E.select("text").attr("x",n.axis_rotated?e.width:0).attr("y",g),O.attr("transform",null).attr("d",c),R.attr("transform",null).attr("d",u),D.attr("transform",null).attr("d",d),I.attr("transform",null).attr("cx",f).attr("cy",p),N.attr("transform",null).attr("x",m).attr("y",v).style("fill-opacity",e.opacityForText.bind(e)),P.attr("transform",null),P.select("rect").filter(e.isRegionOnX).attr("x",e.regionX.bind(e)).attr("width",e.regionWidth.bind(e)),n.interaction_enabled&&e.redrawEventRect(),A(),e.flowing=!1})}},s.selected=function(t){var e=this.internal,n=e.d3;return n.merge(e.main.selectAll("."+h.shapes+e.getTargetSelectorSuffix(t)).selectAll("."+h.shape).filter(function(){return n.select(this).classed(h.SELECTED)}).map(function(t){return t.map(function(t){var e=t.__data__;return e.data?e.data:e})}))},s.select=function(t,e,n){var i=this.internal,r=i.d3,o=i.config;o.data_selection_enabled&&i.main.selectAll("."+h.shapes).selectAll("."+h.shape).each(function(a,s){var l=r.select(this),c=a.data?a.data.id:a.id,u=i.getToggle(this,a).bind(i),d=o.data_selection_grouped||!t||t.indexOf(c)>=0,f=!e||e.indexOf(s)>=0,p=l.classed(h.SELECTED);l.classed(h.line)||l.classed(h.area)||(d&&f?o.data_selection_isselectable(a)&&!p&&u(!0,l.classed(h.SELECTED,!0),a,s):m(n)&&n&&p&&u(!1,l.classed(h.SELECTED,!1),a,s))})},s.unselect=function(t,e){var n=this.internal,i=n.d3,r=n.config;r.data_selection_enabled&&n.main.selectAll("."+h.shapes).selectAll("."+h.shape).each(function(o,a){var s=i.select(this),l=o.data?o.data.id:o.id,c=n.getToggle(this,o).bind(n),u=r.data_selection_grouped||!t||t.indexOf(l)>=0,d=!e||e.indexOf(a)>=0,f=s.classed(h.SELECTED);s.classed(h.line)||s.classed(h.area)||u&&d&&r.data_selection_isselectable(o)&&f&&c(!1,s.classed(h.SELECTED,!1),o,a)})},s.transform=function(t,e){var n=this.internal,i=["pie","donut"].indexOf(t)>=0?{withTransform:!0}:null;n.transformTo(e,t,i)},l.transformTo=function(t,e,n){var i=this,r=!i.hasArcType(),o=n||{withTransitionForAxis:r};o.withTransitionForTransform=!1,i.transiting=!1,i.setTargetType(t,e),i.updateTargets(i.data.targets),i.updateAndRedraw(o)},s.groups=function(t){var e=this.internal,n=e.config;return g(t)?n.data_groups:(n.data_groups=t,e.redraw(),n.data_groups)},s.xgrids=function(t){var e=this.internal,n=e.config;return t?(n.grid_x_lines=t,e.redrawWithoutRescale(),n.grid_x_lines):n.grid_x_lines},s.xgrids.add=function(t){var e=this.internal;return this.xgrids(e.config.grid_x_lines.concat(t?t:[]))},s.xgrids.remove=function(t){var e=this.internal;e.removeGridLines(t,!0)},s.ygrids=function(t){var e=this.internal,n=e.config;return t?(n.grid_y_lines=t,e.redrawWithoutRescale(),n.grid_y_lines):n.grid_y_lines},s.ygrids.add=function(t){var e=this.internal;return this.ygrids(e.config.grid_y_lines.concat(t?t:[]))},s.ygrids.remove=function(t){var e=this.internal;e.removeGridLines(t,!1)},s.regions=function(t){var e=this.internal,n=e.config;return t?(n.regions=t,e.redrawWithoutRescale(),n.regions):n.regions},s.regions.add=function(t){var e=this.internal,n=e.config;return t?(n.regions=n.regions.concat(t),e.redrawWithoutRescale(),n.regions):n.regions},s.regions.remove=function(t){var e,n,i,r=this.internal,o=r.config;return t=t||{},e=r.getOption(t,"duration",o.transition_duration),n=r.getOption(t,"classes",[h.region]),i=r.main.select("."+h.regions).selectAll(n.map(function(t){return"."+t})),(e?i.transition().duration(e):i).style("opacity",0).remove(),o.regions=o.regions.filter(function(t){var e=!1;return!t.class||(t.class.split(" ").forEach(function(t){n.indexOf(t)>=0&&(e=!0)}),!e)}),o.regions},s.data=function(t){var e=this.internal.data.targets;return"undefined"==typeof t?e:e.filter(function(e){return[].concat(t).indexOf(e.id)>=0})},s.data.shown=function(t){return this.internal.filterTargetsToShow(this.data(t))},s.data.values=function(t){var e,n=null;return t&&(e=this.data(t),n=e[0]?e[0].values.map(function(t){return t.value}):null),n},s.data.names=function(t){return this.internal.clearLegendItemTextBoxCache(),this.internal.updateDataAttributes("names",t)},s.data.colors=function(t){return this.internal.updateDataAttributes("colors",t)},s.data.axes=function(t){return this.internal.updateDataAttributes("axes",t)},s.category=function(t,e){var n=this.internal,i=n.config;return arguments.length>1&&(i.axis_x_categories[t]=e,n.redraw()),i.axis_x_categories[t]},s.categories=function(t){var e=this.internal,n=e.config;return arguments.length?(n.axis_x_categories=t,e.redraw(),n.axis_x_categories):n.axis_x_categories},s.color=function(t){var e=this.internal;return e.color(t)},s.x=function(t){var e=this.internal;return arguments.length&&(e.updateTargetX(e.data.targets,t),e.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})),e.data.xs},s.xs=function(t){var e=this.internal;return arguments.length&&(e.updateTargetXs(e.data.targets,t),e.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})),e.data.xs},s.axis=function(){},s.axis.labels=function(t){var e=this.internal;arguments.length&&(Object.keys(t).forEach(function(n){e.axis.setLabelText(n,t[n])}),e.axis.updateLabels())},s.axis.max=function(t){var e=this.internal,n=e.config;return arguments.length?("object"==typeof t?(d(t.x)&&(n.axis_x_max=t.x),d(t.y)&&(n.axis_y_max=t.y),d(t.y2)&&(n.axis_y2_max=t.y2)):n.axis_y_max=n.axis_y2_max=t,void e.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})):{x:n.axis_x_max,y:n.axis_y_max,y2:n.axis_y2_max}},s.axis.min=function(t){var e=this.internal,n=e.config;return arguments.length?("object"==typeof t?(d(t.x)&&(n.axis_x_min=t.x),d(t.y)&&(n.axis_y_min=t.y),d(t.y2)&&(n.axis_y2_min=t.y2)):n.axis_y_min=n.axis_y2_min=t,void e.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})):{x:n.axis_x_min,y:n.axis_y_min,y2:n.axis_y2_min}},s.axis.range=function(t){return arguments.length?(m(t.max)&&this.axis.max(t.max),void(m(t.min)&&this.axis.min(t.min))):{max:this.axis.max(),min:this.axis.min()}},s.legend=function(){},s.legend.show=function(t){var e=this.internal;e.showLegend(e.mapToTargetIds(t)),e.updateAndRedraw({withLegend:!0})},s.legend.hide=function(t){var e=this.internal;e.hideLegend(e.mapToTargetIds(t)),e.updateAndRedraw({withLegend:!0})},s.resize=function(t){var e=this.internal,n=e.config;n.size_width=t?t.width:null,n.size_height=t?t.height:null,this.flush()},s.flush=function(){var t=this.internal;t.updateAndRedraw({withLegend:!0,withTransition:!1,withTransitionForTransform:!1})},s.destroy=function(){var e=this.internal;if(t.clearInterval(e.intervalForObserveInserted),void 0!==e.resizeTimeout&&t.clearTimeout(e.resizeTimeout),t.detachEvent)t.detachEvent("onresize",e.resizeFunction);else if(t.removeEventListener)t.removeEventListener("resize",e.resizeFunction);else{var n=t.onresize;n&&n.add&&n.remove&&n.remove(e.resizeFunction)}return e.selectChart.classed("c3",!1).html(""),Object.keys(e).forEach(function(t){e[t]=null}),null},s.tooltip=function(){},s.tooltip.show=function(t){var e,n,i=this.internal;t.mouse&&(n=t.mouse),t.data?i.isMultipleX()?(n=[i.x(t.data.x),i.getYScale(t.data.id)(t.data.value)],e=null):e=d(t.data.index)?t.data.index:i.getIndexByX(t.data.x):"undefined"!=typeof t.x?e=i.getIndexByX(t.x):"undefined"!=typeof t.index&&(e=t.index),i.dispatchEvent("mouseover",e,n),i.dispatchEvent("mousemove",e,n),i.config.tooltip_onshow.call(i,t.data)},s.tooltip.hide=function(){this.internal.dispatchEvent("mouseout",0),this.internal.config.tooltip_onhide.call(this)};var k;l.isSafari=function(){var e=t.navigator.userAgent;return e.indexOf("Safari")>=0&&e.indexOf("Chrome")<0},l.isChrome=function(){var e=t.navigator.userAgent;return e.indexOf("Chrome")>=0},Function.prototype.bind||(Function.prototype.bind=function(t){if("function"!=typeof this)throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");var e=Array.prototype.slice.call(arguments,1),n=this,i=function(){},r=function(){return n.apply(this instanceof i?this:t,e.concat(Array.prototype.slice.call(arguments)))};return i.prototype=this.prototype,r.prototype=new i,r}),function(){"SVGPathSeg"in t||(t.SVGPathSeg=function(t,e,n){this.pathSegType=t,this.pathSegTypeAsLetter=e,this._owningPathSegList=n},SVGPathSeg.PATHSEG_UNKNOWN=0,SVGPathSeg.PATHSEG_CLOSEPATH=1,SVGPathSeg.PATHSEG_MOVETO_ABS=2,SVGPathSeg.PATHSEG_MOVETO_REL=3,SVGPathSeg.PATHSEG_LINETO_ABS=4,SVGPathSeg.PATHSEG_LINETO_REL=5,SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS=6,SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL=7,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS=8,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL=9,SVGPathSeg.PATHSEG_ARC_ABS=10,SVGPathSeg.PATHSEG_ARC_REL=11,SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS=12,SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL=13,SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS=14,SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL=15,SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS=16,SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL=17,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS=18,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL=19,SVGPathSeg.prototype._segmentChanged=function(){this._owningPathSegList&&this._owningPathSegList.segmentChanged(this)},t.SVGPathSegClosePath=function(t){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CLOSEPATH,"z",t)},SVGPathSegClosePath.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegClosePath.prototype.toString=function(){return"[object SVGPathSegClosePath]"},SVGPathSegClosePath.prototype._asPathString=function(){return this.pathSegTypeAsLetter},SVGPathSegClosePath.prototype.clone=function(){return new SVGPathSegClosePath(void 0)},t.SVGPathSegMovetoAbs=function(t,e,n){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_MOVETO_ABS,"M",t),this._x=e,this._y=n},SVGPathSegMovetoAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegMovetoAbs.prototype.toString=function(){return"[object SVGPathSegMovetoAbs]"},SVGPathSegMovetoAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x+" "+this._y},SVGPathSegMovetoAbs.prototype.clone=function(){return new SVGPathSegMovetoAbs(void 0,this._x,this._y)},Object.defineProperty(SVGPathSegMovetoAbs.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegMovetoAbs.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegMovetoRel=function(t,e,n){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_MOVETO_REL,"m",t),this._x=e,this._y=n},SVGPathSegMovetoRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegMovetoRel.prototype.toString=function(){return"[object SVGPathSegMovetoRel]"},SVGPathSegMovetoRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x+" "+this._y},SVGPathSegMovetoRel.prototype.clone=function(){return new SVGPathSegMovetoRel(void 0,this._x,this._y)},Object.defineProperty(SVGPathSegMovetoRel.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegMovetoRel.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegLinetoAbs=function(t,e,n){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_LINETO_ABS,"L",t),this._x=e,this._y=n},SVGPathSegLinetoAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegLinetoAbs.prototype.toString=function(){return"[object SVGPathSegLinetoAbs]"},SVGPathSegLinetoAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x+" "+this._y},SVGPathSegLinetoAbs.prototype.clone=function(){return new SVGPathSegLinetoAbs(void 0,this._x,this._y)},Object.defineProperty(SVGPathSegLinetoAbs.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegLinetoAbs.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegLinetoRel=function(t,e,n){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_LINETO_REL,"l",t),this._x=e,this._y=n},SVGPathSegLinetoRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegLinetoRel.prototype.toString=function(){return"[object SVGPathSegLinetoRel]"},SVGPathSegLinetoRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x+" "+this._y},SVGPathSegLinetoRel.prototype.clone=function(){return new SVGPathSegLinetoRel(void 0,this._x,this._y)},Object.defineProperty(SVGPathSegLinetoRel.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegLinetoRel.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegCurvetoCubicAbs=function(t,e,n,i,r,o,a){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS,"C",t),this._x=e,this._y=n,this._x1=i,this._y1=r,this._x2=o,this._y2=a},SVGPathSegCurvetoCubicAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoCubicAbs.prototype.toString=function(){return"[object SVGPathSegCurvetoCubicAbs]"},SVGPathSegCurvetoCubicAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x1+" "+this._y1+" "+this._x2+" "+this._y2+" "+this._x+" "+this._y},SVGPathSegCurvetoCubicAbs.prototype.clone=function(){return new SVGPathSegCurvetoCubicAbs(void 0,this._x,this._y,this._x1,this._y1,this._x2,this._y2)},Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype,"x1",{get:function(){return this._x1},set:function(t){this._x1=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype,"y1",{get:function(){return this._y1},set:function(t){this._y1=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype,"x2",{get:function(){return this._x2},set:function(t){this._x2=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype,"y2",{get:function(){return this._y2},set:function(t){this._y2=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegCurvetoCubicRel=function(t,e,n,i,r,o,a){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL,"c",t),this._x=e,this._y=n,this._x1=i,this._y1=r,this._x2=o,this._y2=a},SVGPathSegCurvetoCubicRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoCubicRel.prototype.toString=function(){return"[object SVGPathSegCurvetoCubicRel]"},SVGPathSegCurvetoCubicRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x1+" "+this._y1+" "+this._x2+" "+this._y2+" "+this._x+" "+this._y},SVGPathSegCurvetoCubicRel.prototype.clone=function(){return new SVGPathSegCurvetoCubicRel(void 0,this._x,this._y,this._x1,this._y1,this._x2,this._y2)},Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype,"x1",{get:function(){return this._x1},set:function(t){this._x1=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype,"y1",{get:function(){return this._y1},set:function(t){this._y1=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype,"x2",{get:function(){return this._x2},set:function(t){this._x2=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype,"y2",{get:function(){return this._y2},set:function(t){this._y2=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegCurvetoQuadraticAbs=function(t,e,n,i,r){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS,"Q",t),this._x=e,this._y=n,this._x1=i,this._y1=r},SVGPathSegCurvetoQuadraticAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoQuadraticAbs.prototype.toString=function(){return"[object SVGPathSegCurvetoQuadraticAbs]"},SVGPathSegCurvetoQuadraticAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x1+" "+this._y1+" "+this._x+" "+this._y},SVGPathSegCurvetoQuadraticAbs.prototype.clone=function(){return new SVGPathSegCurvetoQuadraticAbs(void 0,this._x,this._y,this._x1,this._y1)},Object.defineProperty(SVGPathSegCurvetoQuadraticAbs.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticAbs.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticAbs.prototype,"x1",{get:function(){return this._x1},set:function(t){this._x1=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticAbs.prototype,"y1",{get:function(){return this._y1},set:function(t){this._y1=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegCurvetoQuadraticRel=function(t,e,n,i,r){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL,"q",t),this._x=e,this._y=n,this._x1=i,this._y1=r},SVGPathSegCurvetoQuadraticRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoQuadraticRel.prototype.toString=function(){return"[object SVGPathSegCurvetoQuadraticRel]"},SVGPathSegCurvetoQuadraticRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x1+" "+this._y1+" "+this._x+" "+this._y},SVGPathSegCurvetoQuadraticRel.prototype.clone=function(){return new SVGPathSegCurvetoQuadraticRel(void 0,this._x,this._y,this._x1,this._y1)},Object.defineProperty(SVGPathSegCurvetoQuadraticRel.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticRel.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticRel.prototype,"x1",{get:function(){return this._x1},set:function(t){this._x1=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticRel.prototype,"y1",{get:function(){return this._y1},set:function(t){this._y1=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegArcAbs=function(t,e,n,i,r,o,a,s){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_ARC_ABS,"A",t),this._x=e,this._y=n,this._r1=i,this._r2=r,this._angle=o,this._largeArcFlag=a,this._sweepFlag=s},SVGPathSegArcAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegArcAbs.prototype.toString=function(){return"[object SVGPathSegArcAbs]"},SVGPathSegArcAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._r1+" "+this._r2+" "+this._angle+" "+(this._largeArcFlag?"1":"0")+" "+(this._sweepFlag?"1":"0")+" "+this._x+" "+this._y},SVGPathSegArcAbs.prototype.clone=function(){return new SVGPathSegArcAbs(void 0,this._x,this._y,this._r1,this._r2,this._angle,this._largeArcFlag,this._sweepFlag)},Object.defineProperty(SVGPathSegArcAbs.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcAbs.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcAbs.prototype,"r1",{get:function(){return this._r1},set:function(t){this._r1=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcAbs.prototype,"r2",{get:function(){return this._r2},set:function(t){this._r2=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcAbs.prototype,"angle",{get:function(){return this._angle},set:function(t){this._angle=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcAbs.prototype,"largeArcFlag",{get:function(){return this._largeArcFlag},set:function(t){this._largeArcFlag=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcAbs.prototype,"sweepFlag",{get:function(){return this._sweepFlag},set:function(t){this._sweepFlag=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegArcRel=function(t,e,n,i,r,o,a,s){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_ARC_REL,"a",t),this._x=e,this._y=n,this._r1=i,this._r2=r,this._angle=o,this._largeArcFlag=a,this._sweepFlag=s},SVGPathSegArcRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegArcRel.prototype.toString=function(){return"[object SVGPathSegArcRel]"},SVGPathSegArcRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._r1+" "+this._r2+" "+this._angle+" "+(this._largeArcFlag?"1":"0")+" "+(this._sweepFlag?"1":"0")+" "+this._x+" "+this._y},SVGPathSegArcRel.prototype.clone=function(){return new SVGPathSegArcRel(void 0,this._x,this._y,this._r1,this._r2,this._angle,this._largeArcFlag,this._sweepFlag)},Object.defineProperty(SVGPathSegArcRel.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcRel.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcRel.prototype,"r1",{get:function(){return this._r1},set:function(t){this._r1=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcRel.prototype,"r2",{get:function(){return this._r2},set:function(t){this._r2=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcRel.prototype,"angle",{get:function(){return this._angle},set:function(t){this._angle=t,
-this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcRel.prototype,"largeArcFlag",{get:function(){return this._largeArcFlag},set:function(t){this._largeArcFlag=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcRel.prototype,"sweepFlag",{get:function(){return this._sweepFlag},set:function(t){this._sweepFlag=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegLinetoHorizontalAbs=function(t,e){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS,"H",t),this._x=e},SVGPathSegLinetoHorizontalAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegLinetoHorizontalAbs.prototype.toString=function(){return"[object SVGPathSegLinetoHorizontalAbs]"},SVGPathSegLinetoHorizontalAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x},SVGPathSegLinetoHorizontalAbs.prototype.clone=function(){return new SVGPathSegLinetoHorizontalAbs(void 0,this._x)},Object.defineProperty(SVGPathSegLinetoHorizontalAbs.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegLinetoHorizontalRel=function(t,e){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL,"h",t),this._x=e},SVGPathSegLinetoHorizontalRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegLinetoHorizontalRel.prototype.toString=function(){return"[object SVGPathSegLinetoHorizontalRel]"},SVGPathSegLinetoHorizontalRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x},SVGPathSegLinetoHorizontalRel.prototype.clone=function(){return new SVGPathSegLinetoHorizontalRel(void 0,this._x)},Object.defineProperty(SVGPathSegLinetoHorizontalRel.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegLinetoVerticalAbs=function(t,e){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS,"V",t),this._y=e},SVGPathSegLinetoVerticalAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegLinetoVerticalAbs.prototype.toString=function(){return"[object SVGPathSegLinetoVerticalAbs]"},SVGPathSegLinetoVerticalAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._y},SVGPathSegLinetoVerticalAbs.prototype.clone=function(){return new SVGPathSegLinetoVerticalAbs(void 0,this._y)},Object.defineProperty(SVGPathSegLinetoVerticalAbs.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegLinetoVerticalRel=function(t,e){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL,"v",t),this._y=e},SVGPathSegLinetoVerticalRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegLinetoVerticalRel.prototype.toString=function(){return"[object SVGPathSegLinetoVerticalRel]"},SVGPathSegLinetoVerticalRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._y},SVGPathSegLinetoVerticalRel.prototype.clone=function(){return new SVGPathSegLinetoVerticalRel(void 0,this._y)},Object.defineProperty(SVGPathSegLinetoVerticalRel.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegCurvetoCubicSmoothAbs=function(t,e,n,i,r){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS,"S",t),this._x=e,this._y=n,this._x2=i,this._y2=r},SVGPathSegCurvetoCubicSmoothAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoCubicSmoothAbs.prototype.toString=function(){return"[object SVGPathSegCurvetoCubicSmoothAbs]"},SVGPathSegCurvetoCubicSmoothAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x2+" "+this._y2+" "+this._x+" "+this._y},SVGPathSegCurvetoCubicSmoothAbs.prototype.clone=function(){return new SVGPathSegCurvetoCubicSmoothAbs(void 0,this._x,this._y,this._x2,this._y2)},Object.defineProperty(SVGPathSegCurvetoCubicSmoothAbs.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicSmoothAbs.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicSmoothAbs.prototype,"x2",{get:function(){return this._x2},set:function(t){this._x2=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicSmoothAbs.prototype,"y2",{get:function(){return this._y2},set:function(t){this._y2=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegCurvetoCubicSmoothRel=function(t,e,n,i,r){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL,"s",t),this._x=e,this._y=n,this._x2=i,this._y2=r},SVGPathSegCurvetoCubicSmoothRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoCubicSmoothRel.prototype.toString=function(){return"[object SVGPathSegCurvetoCubicSmoothRel]"},SVGPathSegCurvetoCubicSmoothRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x2+" "+this._y2+" "+this._x+" "+this._y},SVGPathSegCurvetoCubicSmoothRel.prototype.clone=function(){return new SVGPathSegCurvetoCubicSmoothRel(void 0,this._x,this._y,this._x2,this._y2)},Object.defineProperty(SVGPathSegCurvetoCubicSmoothRel.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicSmoothRel.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicSmoothRel.prototype,"x2",{get:function(){return this._x2},set:function(t){this._x2=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicSmoothRel.prototype,"y2",{get:function(){return this._y2},set:function(t){this._y2=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegCurvetoQuadraticSmoothAbs=function(t,e,n){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS,"T",t),this._x=e,this._y=n},SVGPathSegCurvetoQuadraticSmoothAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoQuadraticSmoothAbs.prototype.toString=function(){return"[object SVGPathSegCurvetoQuadraticSmoothAbs]"},SVGPathSegCurvetoQuadraticSmoothAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x+" "+this._y},SVGPathSegCurvetoQuadraticSmoothAbs.prototype.clone=function(){return new SVGPathSegCurvetoQuadraticSmoothAbs(void 0,this._x,this._y)},Object.defineProperty(SVGPathSegCurvetoQuadraticSmoothAbs.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticSmoothAbs.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegCurvetoQuadraticSmoothRel=function(t,e,n){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL,"t",t),this._x=e,this._y=n},SVGPathSegCurvetoQuadraticSmoothRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoQuadraticSmoothRel.prototype.toString=function(){return"[object SVGPathSegCurvetoQuadraticSmoothRel]"},SVGPathSegCurvetoQuadraticSmoothRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x+" "+this._y},SVGPathSegCurvetoQuadraticSmoothRel.prototype.clone=function(){return new SVGPathSegCurvetoQuadraticSmoothRel(void 0,this._x,this._y)},Object.defineProperty(SVGPathSegCurvetoQuadraticSmoothRel.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticSmoothRel.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),SVGPathElement.prototype.createSVGPathSegClosePath=function(){return new SVGPathSegClosePath(void 0)},SVGPathElement.prototype.createSVGPathSegMovetoAbs=function(t,e){return new SVGPathSegMovetoAbs(void 0,t,e)},SVGPathElement.prototype.createSVGPathSegMovetoRel=function(t,e){return new SVGPathSegMovetoRel(void 0,t,e)},SVGPathElement.prototype.createSVGPathSegLinetoAbs=function(t,e){return new SVGPathSegLinetoAbs(void 0,t,e)},SVGPathElement.prototype.createSVGPathSegLinetoRel=function(t,e){return new SVGPathSegLinetoRel(void 0,t,e)},SVGPathElement.prototype.createSVGPathSegCurvetoCubicAbs=function(t,e,n,i,r,o){return new SVGPathSegCurvetoCubicAbs(void 0,t,e,n,i,r,o)},SVGPathElement.prototype.createSVGPathSegCurvetoCubicRel=function(t,e,n,i,r,o){return new SVGPathSegCurvetoCubicRel(void 0,t,e,n,i,r,o)},SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticAbs=function(t,e,n,i){return new SVGPathSegCurvetoQuadraticAbs(void 0,t,e,n,i)},SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticRel=function(t,e,n,i){return new SVGPathSegCurvetoQuadraticRel(void 0,t,e,n,i)},SVGPathElement.prototype.createSVGPathSegArcAbs=function(t,e,n,i,r,o,a){return new SVGPathSegArcAbs(void 0,t,e,n,i,r,o,a)},SVGPathElement.prototype.createSVGPathSegArcRel=function(t,e,n,i,r,o,a){return new SVGPathSegArcRel(void 0,t,e,n,i,r,o,a)},SVGPathElement.prototype.createSVGPathSegLinetoHorizontalAbs=function(t){return new SVGPathSegLinetoHorizontalAbs(void 0,t)},SVGPathElement.prototype.createSVGPathSegLinetoHorizontalRel=function(t){return new SVGPathSegLinetoHorizontalRel(void 0,t)},SVGPathElement.prototype.createSVGPathSegLinetoVerticalAbs=function(t){return new SVGPathSegLinetoVerticalAbs(void 0,t)},SVGPathElement.prototype.createSVGPathSegLinetoVerticalRel=function(t){return new SVGPathSegLinetoVerticalRel(void 0,t)},SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothAbs=function(t,e,n,i){return new SVGPathSegCurvetoCubicSmoothAbs(void 0,t,e,n,i)},SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothRel=function(t,e,n,i){return new SVGPathSegCurvetoCubicSmoothRel(void 0,t,e,n,i)},SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothAbs=function(t,e){return new SVGPathSegCurvetoQuadraticSmoothAbs(void 0,t,e)},SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothRel=function(t,e){return new SVGPathSegCurvetoQuadraticSmoothRel(void 0,t,e)}),"SVGPathSegList"in t||(t.SVGPathSegList=function(t){this._pathElement=t,this._list=this._parsePath(this._pathElement.getAttribute("d")),this._mutationObserverConfig={attributes:!0,attributeFilter:["d"]},this._pathElementMutationObserver=new MutationObserver(this._updateListFromPathMutations.bind(this)),this._pathElementMutationObserver.observe(this._pathElement,this._mutationObserverConfig)},Object.defineProperty(SVGPathSegList.prototype,"numberOfItems",{get:function(){return this._checkPathSynchronizedToList(),this._list.length},enumerable:!0}),Object.defineProperty(SVGPathElement.prototype,"pathSegList",{get:function(){return this._pathSegList||(this._pathSegList=new SVGPathSegList(this)),this._pathSegList},enumerable:!0}),Object.defineProperty(SVGPathElement.prototype,"normalizedPathSegList",{get:function(){return this.pathSegList},enumerable:!0}),Object.defineProperty(SVGPathElement.prototype,"animatedPathSegList",{get:function(){return this.pathSegList},enumerable:!0}),Object.defineProperty(SVGPathElement.prototype,"animatedNormalizedPathSegList",{get:function(){return this.pathSegList},enumerable:!0}),SVGPathSegList.prototype._checkPathSynchronizedToList=function(){this._updateListFromPathMutations(this._pathElementMutationObserver.takeRecords())},SVGPathSegList.prototype._updateListFromPathMutations=function(t){if(this._pathElement){var e=!1;t.forEach(function(t){"d"==t.attributeName&&(e=!0)}),e&&(this._list=this._parsePath(this._pathElement.getAttribute("d")))}},SVGPathSegList.prototype._writeListToPath=function(){this._pathElementMutationObserver.disconnect(),this._pathElement.setAttribute("d",SVGPathSegList._pathSegArrayAsString(this._list)),this._pathElementMutationObserver.observe(this._pathElement,this._mutationObserverConfig)},SVGPathSegList.prototype.segmentChanged=function(t){this._writeListToPath()},SVGPathSegList.prototype.clear=function(){this._checkPathSynchronizedToList(),this._list.forEach(function(t){t._owningPathSegList=null}),this._list=[],this._writeListToPath()},SVGPathSegList.prototype.initialize=function(t){return this._checkPathSynchronizedToList(),this._list=[t],t._owningPathSegList=this,this._writeListToPath(),t},SVGPathSegList.prototype._checkValidIndex=function(t){if(isNaN(t)||t<0||t>=this.numberOfItems)throw"INDEX_SIZE_ERR"},SVGPathSegList.prototype.getItem=function(t){return this._checkPathSynchronizedToList(),this._checkValidIndex(t),this._list[t]},SVGPathSegList.prototype.insertItemBefore=function(t,e){return this._checkPathSynchronizedToList(),e>this.numberOfItems&&(e=this.numberOfItems),t._owningPathSegList&&(t=t.clone()),this._list.splice(e,0,t),t._owningPathSegList=this,this._writeListToPath(),t},SVGPathSegList.prototype.replaceItem=function(t,e){return this._checkPathSynchronizedToList(),t._owningPathSegList&&(t=t.clone()),this._checkValidIndex(e),this._list[e]=t,t._owningPathSegList=this,this._writeListToPath(),t},SVGPathSegList.prototype.removeItem=function(t){this._checkPathSynchronizedToList(),this._checkValidIndex(t);var e=this._list[t];return this._list.splice(t,1),this._writeListToPath(),e},SVGPathSegList.prototype.appendItem=function(t){return this._checkPathSynchronizedToList(),t._owningPathSegList&&(t=t.clone()),this._list.push(t),t._owningPathSegList=this,this._writeListToPath(),t},SVGPathSegList._pathSegArrayAsString=function(t){var e="",n=!0;return t.forEach(function(t){n?(n=!1,e+=t._asPathString()):e+=" "+t._asPathString()}),e},SVGPathSegList.prototype._parsePath=function(t){if(!t||0==t.length)return[];var e=this,n=function(){this.pathSegList=[]};n.prototype.appendSegment=function(t){this.pathSegList.push(t)};var i=function(t){this._string=t,this._currentIndex=0,this._endIndex=this._string.length,this._previousCommand=SVGPathSeg.PATHSEG_UNKNOWN,this._skipOptionalSpaces()};i.prototype._isCurrentSpace=function(){var t=this._string[this._currentIndex];return t<=" "&&(" "==t||"\n"==t||"\t"==t||"\r"==t||"\f"==t)},i.prototype._skipOptionalSpaces=function(){for(;this._currentIndex<this._endIndex&&this._isCurrentSpace();)this._currentIndex++;return this._currentIndex<this._endIndex},i.prototype._skipOptionalSpacesOrDelimiter=function(){return!(this._currentIndex<this._endIndex&&!this._isCurrentSpace()&&","!=this._string.charAt(this._currentIndex))&&(this._skipOptionalSpaces()&&this._currentIndex<this._endIndex&&","==this._string.charAt(this._currentIndex)&&(this._currentIndex++,this._skipOptionalSpaces()),this._currentIndex<this._endIndex)},i.prototype.hasMoreData=function(){return this._currentIndex<this._endIndex},i.prototype.peekSegmentType=function(){var t=this._string[this._currentIndex];return this._pathSegTypeFromChar(t)},i.prototype._pathSegTypeFromChar=function(t){switch(t){case"Z":case"z":return SVGPathSeg.PATHSEG_CLOSEPATH;case"M":return SVGPathSeg.PATHSEG_MOVETO_ABS;case"m":return SVGPathSeg.PATHSEG_MOVETO_REL;case"L":return SVGPathSeg.PATHSEG_LINETO_ABS;case"l":return SVGPathSeg.PATHSEG_LINETO_REL;case"C":return SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS;case"c":return SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL;case"Q":return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS;case"q":return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL;case"A":return SVGPathSeg.PATHSEG_ARC_ABS;case"a":return SVGPathSeg.PATHSEG_ARC_REL;case"H":return SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS;case"h":return SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL;case"V":return SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS;case"v":return SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL;case"S":return SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS;case"s":return SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL;case"T":return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS;case"t":return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL;default:return SVGPathSeg.PATHSEG_UNKNOWN}},i.prototype._nextCommandHelper=function(t,e){return("+"==t||"-"==t||"."==t||t>="0"&&t<="9")&&e!=SVGPathSeg.PATHSEG_CLOSEPATH?e==SVGPathSeg.PATHSEG_MOVETO_ABS?SVGPathSeg.PATHSEG_LINETO_ABS:e==SVGPathSeg.PATHSEG_MOVETO_REL?SVGPathSeg.PATHSEG_LINETO_REL:e:SVGPathSeg.PATHSEG_UNKNOWN},i.prototype.initialCommandIsMoveTo=function(){if(!this.hasMoreData())return!0;var t=this.peekSegmentType();return t==SVGPathSeg.PATHSEG_MOVETO_ABS||t==SVGPathSeg.PATHSEG_MOVETO_REL},i.prototype._parseNumber=function(){var t=0,e=0,n=1,i=0,r=1,o=1,a=this._currentIndex;if(this._skipOptionalSpaces(),this._currentIndex<this._endIndex&&"+"==this._string.charAt(this._currentIndex)?this._currentIndex++:this._currentIndex<this._endIndex&&"-"==this._string.charAt(this._currentIndex)&&(this._currentIndex++,r=-1),!(this._currentIndex==this._endIndex||(this._string.charAt(this._currentIndex)<"0"||this._string.charAt(this._currentIndex)>"9")&&"."!=this._string.charAt(this._currentIndex))){for(var s=this._currentIndex;this._currentIndex<this._endIndex&&this._string.charAt(this._currentIndex)>="0"&&this._string.charAt(this._currentIndex)<="9";)this._currentIndex++;if(this._currentIndex!=s)for(var l=this._currentIndex-1,c=1;l>=s;)e+=c*(this._string.charAt(l--)-"0"),c*=10;if(this._currentIndex<this._endIndex&&"."==this._string.charAt(this._currentIndex)){if(this._currentIndex++,this._currentIndex>=this._endIndex||this._string.charAt(this._currentIndex)<"0"||this._string.charAt(this._currentIndex)>"9")return;for(;this._currentIndex<this._endIndex&&this._string.charAt(this._currentIndex)>="0"&&this._string.charAt(this._currentIndex)<="9";)i+=(this._string.charAt(this._currentIndex++)-"0")*(n*=.1)}if(this._currentIndex!=a&&this._currentIndex+1<this._endIndex&&("e"==this._string.charAt(this._currentIndex)||"E"==this._string.charAt(this._currentIndex))&&"x"!=this._string.charAt(this._currentIndex+1)&&"m"!=this._string.charAt(this._currentIndex+1)){if(this._currentIndex++,"+"==this._string.charAt(this._currentIndex)?this._currentIndex++:"-"==this._string.charAt(this._currentIndex)&&(this._currentIndex++,o=-1),this._currentIndex>=this._endIndex||this._string.charAt(this._currentIndex)<"0"||this._string.charAt(this._currentIndex)>"9")return;for(;this._currentIndex<this._endIndex&&this._string.charAt(this._currentIndex)>="0"&&this._string.charAt(this._currentIndex)<="9";)t*=10,t+=this._string.charAt(this._currentIndex)-"0",this._currentIndex++}var u=e+i;if(u*=r,t&&(u*=Math.pow(10,o*t)),a!=this._currentIndex)return this._skipOptionalSpacesOrDelimiter(),u}},i.prototype._parseArcFlag=function(){if(!(this._currentIndex>=this._endIndex)){var t=!1,e=this._string.charAt(this._currentIndex++);if("0"==e)t=!1;else{if("1"!=e)return;t=!0}return this._skipOptionalSpacesOrDelimiter(),t}},i.prototype.parseSegment=function(){var t=this._string[this._currentIndex],n=this._pathSegTypeFromChar(t);if(n==SVGPathSeg.PATHSEG_UNKNOWN){if(this._previousCommand==SVGPathSeg.PATHSEG_UNKNOWN)return null;if(n=this._nextCommandHelper(t,this._previousCommand),n==SVGPathSeg.PATHSEG_UNKNOWN)return null}else this._currentIndex++;switch(this._previousCommand=n,n){case SVGPathSeg.PATHSEG_MOVETO_REL:return new SVGPathSegMovetoRel(e,this._parseNumber(),this._parseNumber());case SVGPathSeg.PATHSEG_MOVETO_ABS:return new SVGPathSegMovetoAbs(e,this._parseNumber(),this._parseNumber());case SVGPathSeg.PATHSEG_LINETO_REL:return new SVGPathSegLinetoRel(e,this._parseNumber(),this._parseNumber());case SVGPathSeg.PATHSEG_LINETO_ABS:return new SVGPathSegLinetoAbs(e,this._parseNumber(),this._parseNumber());case SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL:return new SVGPathSegLinetoHorizontalRel(e,this._parseNumber());case SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS:return new SVGPathSegLinetoHorizontalAbs(e,this._parseNumber());case SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL:return new SVGPathSegLinetoVerticalRel(e,this._parseNumber());case SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS:return new SVGPathSegLinetoVerticalAbs(e,this._parseNumber());case SVGPathSeg.PATHSEG_CLOSEPATH:return this._skipOptionalSpaces(),new SVGPathSegClosePath(e);case SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL:var i={x1:this._parseNumber(),y1:this._parseNumber(),x2:this._parseNumber(),y2:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegCurvetoCubicRel(e,i.x,i.y,i.x1,i.y1,i.x2,i.y2);case SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS:var i={x1:this._parseNumber(),y1:this._parseNumber(),x2:this._parseNumber(),y2:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegCurvetoCubicAbs(e,i.x,i.y,i.x1,i.y1,i.x2,i.y2);case SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL:var i={x2:this._parseNumber(),y2:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegCurvetoCubicSmoothRel(e,i.x,i.y,i.x2,i.y2);case SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS:var i={x2:this._parseNumber(),y2:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegCurvetoCubicSmoothAbs(e,i.x,i.y,i.x2,i.y2);case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL:var i={x1:this._parseNumber(),y1:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegCurvetoQuadraticRel(e,i.x,i.y,i.x1,i.y1);case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS:var i={x1:this._parseNumber(),y1:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegCurvetoQuadraticAbs(e,i.x,i.y,i.x1,i.y1);case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL:return new SVGPathSegCurvetoQuadraticSmoothRel(e,this._parseNumber(),this._parseNumber());case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS:return new SVGPathSegCurvetoQuadraticSmoothAbs(e,this._parseNumber(),this._parseNumber());case SVGPathSeg.PATHSEG_ARC_REL:var i={x1:this._parseNumber(),y1:this._parseNumber(),arcAngle:this._parseNumber(),arcLarge:this._parseArcFlag(),arcSweep:this._parseArcFlag(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegArcRel(e,i.x,i.y,i.x1,i.y1,i.arcAngle,i.arcLarge,i.arcSweep);case SVGPathSeg.PATHSEG_ARC_ABS:var i={x1:this._parseNumber(),y1:this._parseNumber(),arcAngle:this._parseNumber(),arcLarge:this._parseArcFlag(),arcSweep:this._parseArcFlag(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegArcAbs(e,i.x,i.y,i.x1,i.y1,i.arcAngle,i.arcLarge,i.arcSweep);default:throw"Unknown path seg type."}};var r=new n,o=new i(t);if(!o.initialCommandIsMoveTo())return[];for(;o.hasMoreData();){var a=o.parseSegment();if(!a)return[];r.appendSegment(a)}return r.pathSegList})}(),"function"==typeof define&&define.amd?define("c3",["d3"],function(){return u}):"undefined"!=typeof exports&&"undefined"!=typeof module?module.exports=u:t.c3=u}(window),!function t(e,n,i){function r(a,s){if(!n[a]){if(!e[a]){var l="function"==typeof require&&require;if(!s&&l)return l(a,!0);if(o)return o(a,!0);var c=new Error("Cannot find module '"+a+"'");throw c.code="MODULE_NOT_FOUND",c}var u=n[a]={exports:{}};e[a][0].call(u.exports,function(t){var n=e[a][1][t];return r(n?n:t)},u,u.exports,t,e,n,i)}return n[a].exports}for(var o="function"==typeof require&&require,a=0;a<i.length;a++)r(i[a]);return r}({1:[function(t,e,n){var i=t("./svg-pan-zoom.js");!function(t,n){"function"==typeof define&&define.amd?define("svg-pan-zoom",[],function(){return i}):"undefined"!=typeof e&&e.exports&&(e.exports=i,t.svgPanZoom=i)}(window,document)},{"./svg-pan-zoom.js":4}],2:[function(t,e,n){var i=t("./svg-utilities");e.exports={enable:function(t){var e=t.svg.querySelector("defs");e||(e=document.createElementNS(i.svgNS,"defs"),t.svg.appendChild(e));var n=e.querySelector("style#svg-pan-zoom-controls-styles");if(!n){var r=document.createElementNS(i.svgNS,"style");r.setAttribute("id","svg-pan-zoom-controls-styles"),r.setAttribute("type","text/css"),r.textContent=".svg-pan-zoom-control { cursor: pointer; fill: black; fill-opacity: 0.333; } .svg-pan-zoom-control:hover { fill-opacity: 0.8; } .svg-pan-zoom-control-background { fill: white; fill-opacity: 0.5; } .svg-pan-zoom-control-background { fill-opacity: 0.8; }",e.appendChild(r)}var o=document.createElementNS(i.svgNS,"g");o.setAttribute("id","svg-pan-zoom-controls"),o.setAttribute("transform","translate("+(t.width-70)+" "+(t.height-76)+") scale(0.75)"),o.setAttribute("class","svg-pan-zoom-control"),o.appendChild(this._createZoomIn(t)),o.appendChild(this._createZoomReset(t)),o.appendChild(this._createZoomOut(t)),t.svg.appendChild(o),t.controlIcons=o},_createZoomIn:function(t){var e=document.createElementNS(i.svgNS,"g");e.setAttribute("id","svg-pan-zoom-zoom-in"),e.setAttribute("transform","translate(30.5 5) scale(0.015)"),e.setAttribute("class","svg-pan-zoom-control"),e.addEventListener("click",function(){t.getPublicInstance().zoomIn()},!1),e.addEventListener("touchstart",function(){t.getPublicInstance().zoomIn()},!1);var n=document.createElementNS(i.svgNS,"rect");n.setAttribute("x","0"),n.setAttribute("y","0"),n.setAttribute("width","1500"),n.setAttribute("height","1400"),n.setAttribute("class","svg-pan-zoom-control-background"),e.appendChild(n);var r=document.createElementNS(i.svgNS,"path");return r.setAttribute("d","M1280 576v128q0 26 -19 45t-45 19h-320v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-320q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h320v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h320q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z"),r.setAttribute("class","svg-pan-zoom-control-element"),e.appendChild(r),e},_createZoomReset:function(t){var e=document.createElementNS(i.svgNS,"g");e.setAttribute("id","svg-pan-zoom-reset-pan-zoom"),e.setAttribute("transform","translate(5 35) scale(0.4)"),e.setAttribute("class","svg-pan-zoom-control"),e.addEventListener("click",function(){t.getPublicInstance().reset()},!1),e.addEventListener("touchstart",function(){t.getPublicInstance().reset()},!1);var n=document.createElementNS(i.svgNS,"rect");n.setAttribute("x","2"),n.setAttribute("y","2"),n.setAttribute("width","182"),n.setAttribute("height","58"),n.setAttribute("class","svg-pan-zoom-control-background"),e.appendChild(n);var r=document.createElementNS(i.svgNS,"path");r.setAttribute("d","M33.051,20.632c-0.742-0.406-1.854-0.609-3.338-0.609h-7.969v9.281h7.769c1.543,0,2.701-0.188,3.473-0.562c1.365-0.656,2.048-1.953,2.048-3.891C35.032,22.757,34.372,21.351,33.051,20.632z"),r.setAttribute("class","svg-pan-zoom-control-element"),e.appendChild(r);var o=document.createElementNS(i.svgNS,"path");return o.setAttribute("d","M170.231,0.5H15.847C7.102,0.5,0.5,5.708,0.5,11.84v38.861C0.5,56.833,7.102,61.5,15.847,61.5h154.384c8.745,0,15.269-4.667,15.269-10.798V11.84C185.5,5.708,178.976,0.5,170.231,0.5z M42.837,48.569h-7.969c-0.219-0.766-0.375-1.383-0.469-1.852c-0.188-0.969-0.289-1.961-0.305-2.977l-0.047-3.211c-0.03-2.203-0.41-3.672-1.142-4.406c-0.732-0.734-2.103-1.102-4.113-1.102h-7.05v13.547h-7.055V14.022h16.524c2.361,0.047,4.178,0.344,5.45,0.891c1.272,0.547,2.351,1.352,3.234,2.414c0.731,0.875,1.31,1.844,1.737,2.906s0.64,2.273,0.64,3.633c0,1.641-0.414,3.254-1.242,4.84s-2.195,2.707-4.102,3.363c1.594,0.641,2.723,1.551,3.387,2.73s0.996,2.98,0.996,5.402v2.32c0,1.578,0.063,2.648,0.19,3.211c0.19,0.891,0.635,1.547,1.333,1.969V48.569z M75.579,48.569h-26.18V14.022h25.336v6.117H56.454v7.336h16.781v6H56.454v8.883h19.125V48.569z M104.497,46.331c-2.44,2.086-5.887,3.129-10.34,3.129c-4.548,0-8.125-1.027-10.731-3.082s-3.909-4.879-3.909-8.473h6.891c0.224,1.578,0.662,2.758,1.316,3.539c1.196,1.422,3.246,2.133,6.15,2.133c1.739,0,3.151-0.188,4.236-0.562c2.058-0.719,3.087-2.055,3.087-4.008c0-1.141-0.504-2.023-1.512-2.648c-1.008-0.609-2.607-1.148-4.796-1.617l-3.74-0.82c-3.676-0.812-6.201-1.695-7.576-2.648c-2.328-1.594-3.492-4.086-3.492-7.477c0-3.094,1.139-5.664,3.417-7.711s5.623-3.07,10.036-3.07c3.685,0,6.829,0.965,9.431,2.895c2.602,1.93,3.966,4.73,4.093,8.402h-6.938c-0.128-2.078-1.057-3.555-2.787-4.43c-1.154-0.578-2.587-0.867-4.301-0.867c-1.907,0-3.428,0.375-4.565,1.125c-1.138,0.75-1.706,1.797-1.706,3.141c0,1.234,0.561,2.156,1.682,2.766c0.721,0.406,2.25,0.883,4.589,1.43l6.063,1.43c2.657,0.625,4.648,1.461,5.975,2.508c2.059,1.625,3.089,3.977,3.089,7.055C108.157,41.624,106.937,44.245,104.497,46.331z M139.61,48.569h-26.18V14.022h25.336v6.117h-18.281v7.336h16.781v6h-16.781v8.883h19.125V48.569z M170.337,20.14h-10.336v28.43h-7.266V20.14h-10.383v-6.117h27.984V20.14z"),o.setAttribute("class","svg-pan-zoom-control-element"),e.appendChild(o),e},_createZoomOut:function(t){var e=document.createElementNS(i.svgNS,"g");e.setAttribute("id","svg-pan-zoom-zoom-out"),e.setAttribute("transform","translate(30.5 70) scale(0.015)"),e.setAttribute("class","svg-pan-zoom-control"),e.addEventListener("click",function(){t.getPublicInstance().zoomOut()},!1),e.addEventListener("touchstart",function(){t.getPublicInstance().zoomOut()},!1);var n=document.createElementNS(i.svgNS,"rect");n.setAttribute("x","0"),n.setAttribute("y","0"),n.setAttribute("width","1500"),n.setAttribute("height","1400"),n.setAttribute("class","svg-pan-zoom-control-background"),e.appendChild(n);var r=document.createElementNS(i.svgNS,"path");return r.setAttribute("d","M1280 576v128q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h896q26 0 45 19t19 45zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z"),r.setAttribute("class","svg-pan-zoom-control-element"),e.appendChild(r),e},disable:function(t){t.controlIcons&&(t.controlIcons.parentNode.removeChild(t.controlIcons),t.controlIcons=null)}}},{"./svg-utilities":5}],3:[function(t,e,n){var i=t("./svg-utilities"),r=t("./utilities"),o=function(t,e){this.init(t,e)};o.prototype.init=function(t,e){this.viewport=t,this.options=e,this.originalState={zoom:1,x:0,y:0},this.activeState={zoom:1,x:0,y:0},this.updateCTMCached=r.proxy(this.updateCTM,this),this.requestAnimationFrame=r.createRequestAnimationFrame(this.options.refreshRate),this.viewBox={x:0,y:0,width:0,height:0},this.cacheViewBox();var n=this.processCTM();this.setCTM(n),this.updateCTM()},o.prototype.cacheViewBox=function(){var t=this.options.svg.getAttribute("viewBox");if(t){var e=t.split(/[\s\,]/).filter(function(t){return t}).map(parseFloat);this.viewBox.x=e[0],this.viewBox.y=e[1],this.viewBox.width=e[2],this.viewBox.height=e[3];var n=Math.min(this.options.width/this.viewBox.width,this.options.height/this.viewBox.height);this.activeState.zoom=n,this.activeState.x=(this.options.width-this.viewBox.width*n)/2,this.activeState.y=(this.options.height-this.viewBox.height*n)/2,this.updateCTMOnNextFrame(),this.options.svg.removeAttribute("viewBox")}else this.simpleViewBoxCache()},o.prototype.simpleViewBoxCache=function(){var t=this.viewport.getBBox();this.viewBox.x=t.x,this.viewBox.y=t.y,this.viewBox.width=t.width,this.viewBox.height=t.height},o.prototype.getViewBox=function(){return r.extend({},this.viewBox)},o.prototype.processCTM=function(){var t=this.getCTM();if(this.options.fit||this.options.contain){var e;e=this.options.fit?Math.min(this.options.width/this.viewBox.width,this.options.height/this.viewBox.height):Math.max(this.options.width/this.viewBox.width,this.options.height/this.viewBox.height),t.a=e,t.d=e,t.e=-this.viewBox.x*e,t.f=-this.viewBox.y*e}if(this.options.center){var n=.5*(this.options.width-(this.viewBox.width+2*this.viewBox.x)*t.a),i=.5*(this.options.height-(this.viewBox.height+2*this.viewBox.y)*t.a);t.e=n,t.f=i}return this.originalState.zoom=t.a,this.originalState.x=t.e,this.originalState.y=t.f,t},o.prototype.getOriginalState=function(){return r.extend({},this.originalState)},o.prototype.getState=function(){return r.extend({},this.activeState)},o.prototype.getZoom=function(){return this.activeState.zoom},o.prototype.getRelativeZoom=function(){return this.activeState.zoom/this.originalState.zoom},o.prototype.computeRelativeZoom=function(t){return t/this.originalState.zoom},o.prototype.getPan=function(){return{x:this.activeState.x,y:this.activeState.y}},o.prototype.getCTM=function(){var t=this.options.svg.createSVGMatrix();return t.a=this.activeState.zoom,
-t.b=0,t.c=0,t.d=this.activeState.zoom,t.e=this.activeState.x,t.f=this.activeState.y,t},o.prototype.setCTM=function(t){var e=this.isZoomDifferent(t),n=this.isPanDifferent(t);if(e||n){if(e&&(this.options.beforeZoom(this.getRelativeZoom(),this.computeRelativeZoom(t.a))===!1?(t.a=t.d=this.activeState.zoom,e=!1):(this.updateCache(t),this.options.onZoom(this.getRelativeZoom()))),n){var i=this.options.beforePan(this.getPan(),{x:t.e,y:t.f}),o=!1,a=!1;i===!1?(t.e=this.getPan().x,t.f=this.getPan().y,o=a=!0):r.isObject(i)&&(i.x===!1?(t.e=this.getPan().x,o=!0):r.isNumber(i.x)&&(t.e=i.x),i.y===!1?(t.f=this.getPan().y,a=!0):r.isNumber(i.y)&&(t.f=i.y)),o&&a||!this.isPanDifferent(t)?n=!1:(this.updateCache(t),this.options.onPan(this.getPan()))}(e||n)&&this.updateCTMOnNextFrame()}},o.prototype.isZoomDifferent=function(t){return this.activeState.zoom!==t.a},o.prototype.isPanDifferent=function(t){return this.activeState.x!==t.e||this.activeState.y!==t.f},o.prototype.updateCache=function(t){this.activeState.zoom=t.a,this.activeState.x=t.e,this.activeState.y=t.f},o.prototype.pendingUpdate=!1,o.prototype.updateCTMOnNextFrame=function(){this.pendingUpdate||(this.pendingUpdate=!0,this.requestAnimationFrame.call(window,this.updateCTMCached))},o.prototype.updateCTM=function(){var t=this.getCTM();i.setCTM(this.viewport,t,this.defs),this.pendingUpdate=!1,this.options.onUpdatedCTM&&this.options.onUpdatedCTM(t)},e.exports=function(t,e){return new o(t,e)}},{"./svg-utilities":5,"./utilities":7}],4:[function(t,e,n){var i=t("./uniwheel"),r=t("./control-icons"),o=t("./utilities"),a=t("./svg-utilities"),s=t("./shadow-viewport"),l=function(t,e){this.init(t,e)},c={viewportSelector:".svg-pan-zoom_viewport",panEnabled:!0,controlIconsEnabled:!1,zoomEnabled:!0,dblClickZoomEnabled:!0,mouseWheelZoomEnabled:!0,preventMouseEventsDefault:!0,zoomScaleSensitivity:.1,minZoom:.5,maxZoom:10,fit:!0,contain:!1,center:!0,refreshRate:"auto",beforeZoom:null,onZoom:null,beforePan:null,onPan:null,customEventsHandler:null,eventsListenerElement:null,onUpdatedCTM:null};l.prototype.init=function(t,e){var n=this;this.svg=t,this.defs=t.querySelector("defs"),a.setupSvgAttributes(this.svg),this.options=o.extend(o.extend({},c),e),this.state="none";var i=a.getBoundingClientRectNormalized(t);this.width=i.width,this.height=i.height,this.viewport=s(a.getOrCreateViewport(this.svg,this.options.viewportSelector),{svg:this.svg,width:this.width,height:this.height,fit:this.options.fit,contain:this.options.contain,center:this.options.center,refreshRate:this.options.refreshRate,beforeZoom:function(t,e){return n.viewport&&n.options.beforeZoom?n.options.beforeZoom(t,e):void 0},onZoom:function(t){return n.viewport&&n.options.onZoom?n.options.onZoom(t):void 0},beforePan:function(t,e){return n.viewport&&n.options.beforePan?n.options.beforePan(t,e):void 0},onPan:function(t){return n.viewport&&n.options.onPan?n.options.onPan(t):void 0},onUpdatedCTM:function(t){return n.viewport&&n.options.onUpdatedCTM?n.options.onUpdatedCTM(t):void 0}});var l=this.getPublicInstance();l.setBeforeZoom(this.options.beforeZoom),l.setOnZoom(this.options.onZoom),l.setBeforePan(this.options.beforePan),l.setOnPan(this.options.onPan),l.setOnUpdatedCTM(this.options.onUpdatedCTM),this.options.controlIconsEnabled&&r.enable(this),this.lastMouseWheelEventTime=Date.now(),this.setupHandlers()},l.prototype.setupHandlers=function(){var t=this,e=null;if(this.eventListeners={mousedown:function(n){var i=t.handleMouseDown(n,e);return e=n,i},touchstart:function(n){var i=t.handleMouseDown(n,e);return e=n,i},mouseup:function(e){return t.handleMouseUp(e)},touchend:function(e){return t.handleMouseUp(e)},mousemove:function(e){return t.handleMouseMove(e)},touchmove:function(e){return t.handleMouseMove(e)},mouseleave:function(e){return t.handleMouseUp(e)},touchleave:function(e){return t.handleMouseUp(e)},touchcancel:function(e){return t.handleMouseUp(e)}},null!=this.options.customEventsHandler){this.options.customEventsHandler.init({svgElement:this.svg,eventsListenerElement:this.options.eventsListenerElement,instance:this.getPublicInstance()});var n=this.options.customEventsHandler.haltEventListeners;if(n&&n.length)for(var i=n.length-1;i>=0;i--)this.eventListeners.hasOwnProperty(n[i])&&delete this.eventListeners[n[i]]}for(var r in this.eventListeners)(this.options.eventsListenerElement||this.svg).addEventListener(r,this.eventListeners[r],!1);this.options.mouseWheelZoomEnabled&&(this.options.mouseWheelZoomEnabled=!1,this.enableMouseWheelZoom())},l.prototype.enableMouseWheelZoom=function(){if(!this.options.mouseWheelZoomEnabled){var t=this;this.wheelListener=function(e){return t.handleMouseWheel(e)},i.on(this.options.eventsListenerElement||this.svg,this.wheelListener,!1),this.options.mouseWheelZoomEnabled=!0}},l.prototype.disableMouseWheelZoom=function(){this.options.mouseWheelZoomEnabled&&(i.off(this.options.eventsListenerElement||this.svg,this.wheelListener,!1),this.options.mouseWheelZoomEnabled=!1)},l.prototype.handleMouseWheel=function(t){if(this.options.zoomEnabled&&"none"===this.state){this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1);var e=t.deltaY||1,n=Date.now()-this.lastMouseWheelEventTime,i=3+Math.max(0,30-n);this.lastMouseWheelEventTime=Date.now(),"deltaMode"in t&&0===t.deltaMode&&t.wheelDelta&&(e=0===t.deltaY?0:Math.abs(t.wheelDelta)/t.deltaY),e=e>-.3&&.3>e?e:(e>0?1:-1)*Math.log(Math.abs(e)+10)/i;var r=this.svg.getScreenCTM().inverse(),o=a.getEventPoint(t,this.svg).matrixTransform(r),s=Math.pow(1+this.options.zoomScaleSensitivity,-1*e);this.zoomAtPoint(s,o)}},l.prototype.zoomAtPoint=function(t,e,n){var i=this.viewport.getOriginalState();n?(t=Math.max(this.options.minZoom*i.zoom,Math.min(this.options.maxZoom*i.zoom,t)),t/=this.getZoom()):this.getZoom()*t<this.options.minZoom*i.zoom?t=this.options.minZoom*i.zoom/this.getZoom():this.getZoom()*t>this.options.maxZoom*i.zoom&&(t=this.options.maxZoom*i.zoom/this.getZoom());var r=this.viewport.getCTM(),o=e.matrixTransform(r.inverse()),a=this.svg.createSVGMatrix().translate(o.x,o.y).scale(t).translate(-o.x,-o.y),s=r.multiply(a);s.a!==r.a&&this.viewport.setCTM(s)},l.prototype.zoom=function(t,e){this.zoomAtPoint(t,a.getSvgCenterPoint(this.svg,this.width,this.height),e)},l.prototype.publicZoom=function(t,e){e&&(t=this.computeFromRelativeZoom(t)),this.zoom(t,e)},l.prototype.publicZoomAtPoint=function(t,e,n){if(n&&(t=this.computeFromRelativeZoom(t)),"SVGPoint"!==o.getType(e)){if(!("x"in e&&"y"in e))throw new Error("Given point is invalid");e=a.createSVGPoint(this.svg,e.x,e.y)}this.zoomAtPoint(t,e,n)},l.prototype.getZoom=function(){return this.viewport.getZoom()},l.prototype.getRelativeZoom=function(){return this.viewport.getRelativeZoom()},l.prototype.computeFromRelativeZoom=function(t){return t*this.viewport.getOriginalState().zoom},l.prototype.resetZoom=function(){var t=this.viewport.getOriginalState();this.zoom(t.zoom,!0)},l.prototype.resetPan=function(){this.pan(this.viewport.getOriginalState())},l.prototype.reset=function(){this.resetZoom(),this.resetPan()},l.prototype.handleDblClick=function(t){if(this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1),this.options.controlIconsEnabled){var e=t.target.getAttribute("class")||"";if(e.indexOf("svg-pan-zoom-control")>-1)return!1}var n;n=t.shiftKey?1/(2*(1+this.options.zoomScaleSensitivity)):2*(1+this.options.zoomScaleSensitivity);var i=a.getEventPoint(t,this.svg).matrixTransform(this.svg.getScreenCTM().inverse());this.zoomAtPoint(n,i)},l.prototype.handleMouseDown=function(t,e){this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1),o.mouseAndTouchNormalize(t,this.svg),this.options.dblClickZoomEnabled&&o.isDblClick(t,e)?this.handleDblClick(t):(this.state="pan",this.firstEventCTM=this.viewport.getCTM(),this.stateOrigin=a.getEventPoint(t,this.svg).matrixTransform(this.firstEventCTM.inverse()))},l.prototype.handleMouseMove=function(t){if(this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1),"pan"===this.state&&this.options.panEnabled){var e=a.getEventPoint(t,this.svg).matrixTransform(this.firstEventCTM.inverse()),n=this.firstEventCTM.translate(e.x-this.stateOrigin.x,e.y-this.stateOrigin.y);this.viewport.setCTM(n)}},l.prototype.handleMouseUp=function(t){this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1),"pan"===this.state&&(this.state="none")},l.prototype.fit=function(){var t=this.viewport.getViewBox(),e=Math.min(this.width/t.width,this.height/t.height);this.zoom(e,!0)},l.prototype.contain=function(){var t=this.viewport.getViewBox(),e=Math.max(this.width/t.width,this.height/t.height);this.zoom(e,!0)},l.prototype.center=function(){var t=this.viewport.getViewBox(),e=.5*(this.width-(t.width+2*t.x)*this.getZoom()),n=.5*(this.height-(t.height+2*t.y)*this.getZoom());this.getPublicInstance().pan({x:e,y:n})},l.prototype.updateBBox=function(){this.viewport.simpleViewBoxCache()},l.prototype.pan=function(t){var e=this.viewport.getCTM();e.e=t.x,e.f=t.y,this.viewport.setCTM(e)},l.prototype.panBy=function(t){var e=this.viewport.getCTM();e.e+=t.x,e.f+=t.y,this.viewport.setCTM(e)},l.prototype.getPan=function(){var t=this.viewport.getState();return{x:t.x,y:t.y}},l.prototype.resize=function(){var t=a.getBoundingClientRectNormalized(this.svg);this.width=t.width,this.height=t.height;var e=this.viewport;e.options.width=this.width,e.options.height=this.height,e.processCTM(),this.options.controlIconsEnabled&&(this.getPublicInstance().disableControlIcons(),this.getPublicInstance().enableControlIcons())},l.prototype.destroy=function(){var t=this;this.beforeZoom=null,this.onZoom=null,this.beforePan=null,this.onPan=null,this.onUpdatedCTM=null,null!=this.options.customEventsHandler&&this.options.customEventsHandler.destroy({svgElement:this.svg,eventsListenerElement:this.options.eventsListenerElement,instance:this.getPublicInstance()});for(var e in this.eventListeners)(this.options.eventsListenerElement||this.svg).removeEventListener(e,this.eventListeners[e],!1);this.disableMouseWheelZoom(),this.getPublicInstance().disableControlIcons(),this.reset(),u=u.filter(function(e){return e.svg!==t.svg}),delete this.options,delete this.viewport,delete this.publicInstance,delete this.pi,this.getPublicInstance=function(){return null}},l.prototype.getPublicInstance=function(){var t=this;return this.publicInstance||(this.publicInstance=this.pi={enablePan:function(){return t.options.panEnabled=!0,t.pi},disablePan:function(){return t.options.panEnabled=!1,t.pi},isPanEnabled:function(){return!!t.options.panEnabled},pan:function(e){return t.pan(e),t.pi},panBy:function(e){return t.panBy(e),t.pi},getPan:function(){return t.getPan()},setBeforePan:function(e){return t.options.beforePan=null===e?null:o.proxy(e,t.publicInstance),t.pi},setOnPan:function(e){return t.options.onPan=null===e?null:o.proxy(e,t.publicInstance),t.pi},enableZoom:function(){return t.options.zoomEnabled=!0,t.pi},disableZoom:function(){return t.options.zoomEnabled=!1,t.pi},isZoomEnabled:function(){return!!t.options.zoomEnabled},enableControlIcons:function(){return t.options.controlIconsEnabled||(t.options.controlIconsEnabled=!0,r.enable(t)),t.pi},disableControlIcons:function(){return t.options.controlIconsEnabled&&(t.options.controlIconsEnabled=!1,r.disable(t)),t.pi},isControlIconsEnabled:function(){return!!t.options.controlIconsEnabled},enableDblClickZoom:function(){return t.options.dblClickZoomEnabled=!0,t.pi},disableDblClickZoom:function(){return t.options.dblClickZoomEnabled=!1,t.pi},isDblClickZoomEnabled:function(){return!!t.options.dblClickZoomEnabled},enableMouseWheelZoom:function(){return t.enableMouseWheelZoom(),t.pi},disableMouseWheelZoom:function(){return t.disableMouseWheelZoom(),t.pi},isMouseWheelZoomEnabled:function(){return!!t.options.mouseWheelZoomEnabled},setZoomScaleSensitivity:function(e){return t.options.zoomScaleSensitivity=e,t.pi},setMinZoom:function(e){return t.options.minZoom=e,t.pi},setMaxZoom:function(e){return t.options.maxZoom=e,t.pi},setBeforeZoom:function(e){return t.options.beforeZoom=null===e?null:o.proxy(e,t.publicInstance),t.pi},setOnZoom:function(e){return t.options.onZoom=null===e?null:o.proxy(e,t.publicInstance),t.pi},zoom:function(e){return t.publicZoom(e,!0),t.pi},zoomBy:function(e){return t.publicZoom(e,!1),t.pi},zoomAtPoint:function(e,n){return t.publicZoomAtPoint(e,n,!0),t.pi},zoomAtPointBy:function(e,n){return t.publicZoomAtPoint(e,n,!1),t.pi},zoomIn:function(){return this.zoomBy(1+t.options.zoomScaleSensitivity),t.pi},zoomOut:function(){return this.zoomBy(1/(1+t.options.zoomScaleSensitivity)),t.pi},getZoom:function(){return t.getRelativeZoom()},setOnUpdatedCTM:function(e){return t.options.onUpdatedCTM=null===e?null:o.proxy(e,t.publicInstance),t.pi},resetZoom:function(){return t.resetZoom(),t.pi},resetPan:function(){return t.resetPan(),t.pi},reset:function(){return t.reset(),t.pi},fit:function(){return t.fit(),t.pi},contain:function(){return t.contain(),t.pi},center:function(){return t.center(),t.pi},updateBBox:function(){return t.updateBBox(),t.pi},resize:function(){return t.resize(),t.pi},getSizes:function(){return{width:t.width,height:t.height,realZoom:t.getZoom(),viewBox:t.viewport.getViewBox()}},destroy:function(){return t.destroy(),t.pi}}),this.publicInstance};var u=[],h=function(t,e){var n=o.getSvg(t);if(null===n)return null;for(var i=u.length-1;i>=0;i--)if(u[i].svg===n)return u[i].instance.getPublicInstance();return u.push({svg:n,instance:new l(n,e)}),u[u.length-1].instance.getPublicInstance()};e.exports=h},{"./control-icons":2,"./shadow-viewport":3,"./svg-utilities":5,"./uniwheel":6,"./utilities":7}],5:[function(t,e,n){var i=t("./utilities"),r="unknown";document.documentMode&&(r="ie"),e.exports={svgNS:"http://www.w3.org/2000/svg",xmlNS:"http://www.w3.org/XML/1998/namespace",xmlnsNS:"http://www.w3.org/2000/xmlns/",xlinkNS:"http://www.w3.org/1999/xlink",evNS:"http://www.w3.org/2001/xml-events",getBoundingClientRectNormalized:function(t){if(t.clientWidth&&t.clientHeight)return{width:t.clientWidth,height:t.clientHeight};if(t.getBoundingClientRect())return t.getBoundingClientRect();throw new Error("Cannot get BoundingClientRect for SVG.")},getOrCreateViewport:function(t,e){var n=null;if(n=i.isElement(e)?e:t.querySelector(e),!n){var r=Array.prototype.slice.call(t.childNodes||t.children).filter(function(t){return"defs"!==t.nodeName&&"#text"!==t.nodeName});1===r.length&&"g"===r[0].nodeName&&null===r[0].getAttribute("transform")&&(n=r[0])}if(!n){var o="viewport-"+(new Date).toISOString().replace(/\D/g,"");n=document.createElementNS(this.svgNS,"g"),n.setAttribute("id",o);var a=t.childNodes||t.children;if(a&&a.length>0)for(var s=a.length;s>0;s--)"defs"!==a[a.length-s].nodeName&&n.appendChild(a[a.length-s]);t.appendChild(n)}var l=[];return n.getAttribute("class")&&(l=n.getAttribute("class").split(" ")),~l.indexOf("svg-pan-zoom_viewport")||(l.push("svg-pan-zoom_viewport"),n.setAttribute("class",l.join(" "))),n},setupSvgAttributes:function(t){if(t.setAttribute("xmlns",this.svgNS),t.setAttributeNS(this.xmlnsNS,"xmlns:xlink",this.xlinkNS),t.setAttributeNS(this.xmlnsNS,"xmlns:ev",this.evNS),null!==t.parentNode){var e=t.getAttribute("style")||"";-1===e.toLowerCase().indexOf("overflow")&&t.setAttribute("style","overflow: hidden; "+e)}},internetExplorerRedisplayInterval:300,refreshDefsGlobal:i.throttle(function(){for(var t=document.querySelectorAll("defs"),e=t.length,n=0;e>n;n++){var i=t[n];i.parentNode.insertBefore(i,i)}},this.internetExplorerRedisplayInterval),setCTM:function(t,e,n){var i=this,o="matrix("+e.a+","+e.b+","+e.c+","+e.d+","+e.e+","+e.f+")";t.setAttributeNS(null,"transform",o),"transform"in t.style?t.style.transform=o:"-ms-transform"in t.style?t.style["-ms-transform"]=o:"-webkit-transform"in t.style&&(t.style["-webkit-transform"]=o),"ie"===r&&n&&(n.parentNode.insertBefore(n,n),window.setTimeout(function(){i.refreshDefsGlobal()},i.internetExplorerRedisplayInterval))},getEventPoint:function(t,e){var n=e.createSVGPoint();return i.mouseAndTouchNormalize(t,e),n.x=t.clientX,n.y=t.clientY,n},getSvgCenterPoint:function(t,e,n){return this.createSVGPoint(t,e/2,n/2)},createSVGPoint:function(t,e,n){var i=t.createSVGPoint();return i.x=e,i.y=n,i}}},{"./utilities":7}],6:[function(t,e,n){e.exports=function(){function t(t,e,n){var i=function(t){!t&&(t=window.event);var n={originalEvent:t,target:t.target||t.srcElement,type:"wheel",deltaMode:"MozMousePixelScroll"==t.type?0:1,deltaX:0,delatZ:0,preventDefault:function(){t.preventDefault?t.preventDefault():t.returnValue=!1}};return"mousewheel"==c?(n.deltaY=-.025*t.wheelDelta,t.wheelDeltaX&&(n.deltaX=-.025*t.wheelDeltaX)):n.deltaY=t.detail,e(n)};return h.push({element:t,fn:i,capture:n}),i}function e(t,e){for(var n=0;n<h.length;n++)if(h[n].element===t&&h[n].capture===e)return h[n].fn;return function(){}}function n(t,e){for(var n=0;n<h.length;n++)if(h[n].element===t&&h[n].capture===e)return h.splice(n,1)}function i(e,n,i,r){var o;o="wheel"===c?i:t(e,i,r),e[s](u+n,o,r||!1)}function r(t,i,r,o){var a;a="wheel"===c?r:e(t,o),t[l](u+i,a,o||!1),n(t,o)}function o(t,e,n){i(t,c,e,n),"DOMMouseScroll"==c&&i(t,"MozMousePixelScroll",e,n)}function a(t,e,n){r(t,c,e,n),"DOMMouseScroll"==c&&r(t,"MozMousePixelScroll",e,n)}var s,l,c,u="",h=[];return window.addEventListener?(s="addEventListener",l="removeEventListener"):(s="attachEvent",l="detachEvent",u="on"),c="onwheel"in document.createElement("div")?"wheel":void 0!==document.onmousewheel?"mousewheel":"DOMMouseScroll",{on:o,off:a}}()},{}],7:[function(t,e,n){function i(t){return function(e){window.setTimeout(e,t)}}e.exports={extend:function(t,e){t=t||{};for(var n in e)this.isObject(e[n])?t[n]=this.extend(t[n],e[n]):t[n]=e[n];return t},isElement:function(t){return t instanceof HTMLElement||t instanceof SVGElement||t instanceof SVGSVGElement||t&&"object"==typeof t&&null!==t&&1===t.nodeType&&"string"==typeof t.nodeName},isObject:function(t){return"[object Object]"===Object.prototype.toString.call(t)},isNumber:function(t){return!isNaN(parseFloat(t))&&isFinite(t)},getSvg:function(t){var e,n;if(this.isElement(t))e=t;else{if(!("string"==typeof t||t instanceof String))throw new Error("Provided selector is not an HTML object nor String");if(e=document.querySelector(t),!e)throw new Error("Provided selector did not find any elements. Selector: "+t)}if("svg"===e.tagName.toLowerCase())n=e;else if("object"===e.tagName.toLowerCase())n=e.contentDocument.documentElement;else{if("embed"!==e.tagName.toLowerCase())throw"img"===e.tagName.toLowerCase()?new Error('Cannot script an SVG in an "img" element. Please use an "object" element or an in-line SVG.'):new Error("Cannot get SVG.");n=e.getSVGDocument().documentElement}return n},proxy:function(t,e){return function(){return t.apply(e,arguments)}},getType:function(t){return Object.prototype.toString.apply(t).replace(/^\[object\s/,"").replace(/\]$/,"")},mouseAndTouchNormalize:function(t,e){if(void 0===t.clientX||null===t.clientX)if(t.clientX=0,t.clientY=0,void 0!==t.changedTouches&&t.changedTouches.length){if(void 0!==t.changedTouches[0].clientX)t.clientX=t.changedTouches[0].clientX,t.clientY=t.changedTouches[0].clientY;else if(void 0!==t.changedTouches[0].pageX){var n=e.getBoundingClientRect();t.clientX=t.changedTouches[0].pageX-n.left,t.clientY=t.changedTouches[0].pageY-n.top}}else void 0!==t.originalEvent&&void 0!==t.originalEvent.clientX&&(t.clientX=t.originalEvent.clientX,t.clientY=t.originalEvent.clientY)},isDblClick:function(t,e){if(2===t.detail)return!0;if(void 0!==e&&null!==e){var n=t.timeStamp-e.timeStamp,i=Math.sqrt(Math.pow(t.clientX-e.clientX,2)+Math.pow(t.clientY-e.clientY,2));return 250>n&&10>i}return!1},now:Date.now||function(){return(new Date).getTime()},throttle:function(t,e,n){var i,r,o,a=this,s=null,l=0;n||(n={});var c=function(){l=n.leading===!1?0:a.now(),s=null,o=t.apply(i,r),s||(i=r=null)};return function(){var u=a.now();l||n.leading!==!1||(l=u);var h=e-(u-l);return i=this,r=arguments,0>=h||h>e?(clearTimeout(s),s=null,l=u,o=t.apply(i,r),s||(i=r=null)):s||n.trailing===!1||(s=setTimeout(c,h)),o}},createRequestAnimationFrame:function(t){var e=null;return"auto"!==t&&60>t&&t>1&&(e=Math.floor(1e3/t)),null===e?window.requestAnimationFrame||i(33):i(e)}}},{}]},{},[1]),define("jswish",["jquery","config","preferences","history","modal","chat","splitter","bootstrap","pane","tabbed","notebook","navbar","search","editor","query","runner","term","laconic","login","chatroom","d3","c3","svg-pan-zoom"],function(t,e,n,i,r){n.setDefault("semantic-highlighting",!0),n.setDefault("emacs-keybinding",!1),function(t){function n(t,e){return e.glyph=t,e}function o(t,e){return e.typeIcon=t,e}function a(e,n){t(".swish-event-receiver").trigger(e,n)}function s(){t(".swish-logo").append(t.el.b(t.el.span({style:"color:darkblue"},"SWI"),t.el.span({style:"color:maroon"},"SH"))).css("margin-left","30px").css("font-size","24px").addClass("navbar-brand")}function l(){0==t("#modal").length&&(t("body").append(t.el.div({id:"modal"})),t("#modal").swishModal())}function c(){t(".tile").tile(),t(window).resize(function(){t(".tile").tile("resize")}),t(".tabbed").tabbed()}function u(){t(window).resize(function(){t(".reactive-size").trigger("reactive-resize")})}var h="swish",d={menu:{File:{"Save ...":n("cloud-upload",function(){a("save","as")}),"Info & history ...":n("info-sign",function(){a("fileInfo")}),Reload:n("refresh",function(){a("reload")}),"Open recent":{type:"submenu",glyph:"paperclip",action:function(e){i.openRecent(e,t(this).data("document"))},update:i.updateRecentUL},Share:"--","Follow ...":e.http.locations.follow_file_options?n("eye-open",function(){a("follow-file")}):void 0,"Chat ...":o("chat",function(){a("chat-about-file")}),"Chat help room ...":o("chathelp",function(){t("body").swish("playFile",{file:"Help.swinb",chat:"large"})}),"Start TogetherJS ...":o("togetherjs",function(){t("body").swish("collaborate")}),Export:"--",Download:n("floppy-save",function(){a("download")}),"Print ...":n("print",function(){a("print")})},Edit:{"Clear messages":function(){a("clearMessages")},Changes:"--","View changes":function(){a("diff")},Edit:"--","Find (Ctrl-F)":function(){a("edit-command","find")},"Find and replace (Shift-Ctrl-F)":function(){a("edit-command","replace")},"Jump to line (Alt-G)":function(){a("edit-command","jumpToLine")},Options:"--","Semantic highlighting":{preference:"semantic-highlighting",type:"checkbox"},"Emacs Keybinding":{preference:"emacs-keybinding",type:"checkbox",value:"false"}},Examples:function(e,n){t("body").swish("populateExamples",e,n)},Help:function(e,n){t("body").swish("populateHelp",e,n)}}},f={_init:function(e){return s(),l(),c(),u(),t("#search").search(),e=e||{},this.addClass("swish"),this.each(function(){var n=t(this),i={};t("#navbar").navbar(d.menu),t("#login").login();var r=t(".prolog-editor").prologEditor({save:!0});i.runner=t(".prolog-runners").prologRunners(),i.query=t(".prolog-query").queryEditor({source:function(){return n.swish("prologSource")},sourceID:function(){return r.prologEditor("getSourceID")},examples:n.swish("examples"),runner:i.runner,editor:r[0]}),t(".notebook").notebook(),!e.show_beware||swish.option&&0==swish.option.show_beware||a("help",{file:"beware.html",notagain:"beware"}),n.data(h,i),window.location.href.indexOf("&togetherjs=")>0&&n.swish("collaborate"),t("#chat").chat(""),setInterval(function(){t(".each-minute").trigger("minute")},6e4)})},trigger:function(t,e){return a(t,e),this},playFile:function(n){var i=this;"string"==typeof n&&(n={file:n});var o=this.find(".storage").storage("match",n);if(o&&o.storage("expose","Already open"))return this;var a=e.http.locations.web_storage+n.file;return t.ajax({url:a,type:"GET",data:{format:"json"},success:function(t){function e(e){for(var i=0;i<e.length;i++){var r=e[i];n[r]&&(t[r]=n[r])}}t.url=a,t.st_type="gitty",e(["line","regex","showAllMatches","newTab","noHistory","prompt","chat"]),i.swish("setSource",t)},error:function(t){r.ajaxError(t)}}),this},playURL:function(e){var n=this,i=this.find(".storage").storage("match",e);return i&&i.storage("expose","Already open")?this:void t.ajax({url:e.url,type:"GET",data:{format:"json"},success:function(t){function i(t){for(var n=0;n<t.length;n++){var i=t[n];e[i]&&(r[i]=e[i])}}var r;if("string"==typeof t)r={data:t},r.st_type="external";else{if("object"!=typeof t||"string"!=typeof t.data)return void alert("Invalid data");r=t,r.st_type="filesys"}r.url=e.url,i(["line","regex","showAllMatches","newTab","noHistory","prompt"]),n.swish("setSource",r)},error:function(t){r.ajaxError(t)}})},setSource:function(t){a("source",t),this.find(".storage").storage("match",t)||this.swish("exitFullscreen")&&a("source",t)},openExampleFunction:function(t){var e=this;return"divider"==t.type?"--":"store"==t.type?function(){f.playFile.call(e,t.file)}:function(){f.playURL.call(e,{url:t.href})}},populateExamples:function(n,i){var r=this;return r.off("examples-changed").on("examples-changed",function(){t("#navbar").navbar("clearDropdown",i),r.swish("populateExamples",n,i)}),t.ajax(e.http.locations.swish_examples,{dataType:"json",success:function(e){for(var n=0;n<e.length;n++){var o,a,s=e[n];if("--"==s||"divider"==s.type)o="--",a="--";else{var l=s.file||s.href;o=s.title,a=r.swish("openExampleFunction",s),l&&(a.typeIcon=l.split(".").pop())}t("#navbar").navbar("extendDropdown",i,o,a)}}}),this},populateHelp:function(n,i){function r(t){return function(){a("help",{file:t.file})}}return t.ajax(e.http.locations.swish_help_index,{dataType:"json",success:function(e){for(var n=0;n<e.length;n++){var o,a,s=e[n];if("--"==s||"divider"==s.type)o="--",a="--";else{s.file;o=s.title,a=r(s)}t("#navbar").navbar("extendDropdown",i,o,a)}}}),this},prologSource:function(){var e,n=[];return(e=t(".prolog-editor").prologEditor("getSource","source"))&&n.push(e),(e=t(".background.prolog.source").text())&&n.push(e),n.join("\n\n")},breakpoints:function(t){return this.find(".prolog-editor").prologEditor("getBreakpoints",t)||[]},tabData:function(t){return t=t||{},t.active?this.find(".tab-pane.active .storage").storage("getData",t):this.find(".storage").storage("getData",t)},examples:function(e){var n=t(".examples.prolog").text();return n?t().prologEditor("getExamples",n,!1):1!=e?function(){return t(".prolog-editor").prologEditor("getExamples")}:void 0},fullscreen:function(e,n){var i=this.find(".container.tile-top");if(!i.hasClass("fullscreen")){var r=this.data("fullscreen");r||(r={},this.data("fullscreen",r)),i.addClass("fullscreen"),n=n||e,n.addClass("fullscreen hamburger"),r.fullscreen_origin=e.parent()[0],r.fullscreen_main=n[0],t(i.children()[0]).hide(),i.append(e),n.trigger("fullscreen",!0)}return this},exitFullscreen:function(){var e=this.find(".container.tile-top");if(e.hasClass("fullscreen")){var n=this.data("fullscreen"),i=t(e.children()[1]),r=n.fullscreen_main;return e.removeClass("fullscreen"),t(n.fullscreen_main).removeClass("fullscreen hamburger"),t(n.fullscreen_origin).append(i),n.fullscreen_origin=null,n.fullscreen_main=null,t(e.children()[0]).show(),t(r).trigger("fullscreen",!1),!0}return!1},collaborate:function(){var e=this;return t(this).attr("data-end-togetherjs-html","End collaboration"),require(["https://togetherjs.com/togetherjs-min.js"],function(){TogetherJS(e)}),this}};t.fn.swish=function(e){return f[e]?f[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery."+h):f._init.apply(this,arguments)}}(jQuery)}),require.config({urlArgs:"ts="+(new Date).getTime(),waitSeconds:60,paths:{jquery:"../bower_components/jquery/dist/jquery.min","jquery-ui":"../bower_components/jquery-ui/jquery-ui.min",laconic:"../bower_components/laconic/laconic",bootstrap:"../bower_components/bootstrap/dist/js/bootstrap.min",bloodhound:"../bower_components/typeahead.js/dist/bloodhound",typeahead:"../bower_components/typeahead.js/dist/typeahead.jquery",splitter:"../bower_components/jquery.splitter/js/jquery.splitter-0.15.0",tagmanager:"../bower_components/tagmanager/tagmanager",sha1:"../bower_components/js-sha1/src/sha1",c3:"../bower_components/c3/c3",d3:"../bower_components/d3/d3","svg-pan-zoom":"../bower_components/svg-pan-zoom/dist/svg-pan-zoom.min",sparkline:"../bower_components/sparkline/dist/jquery.sparkline","cm/mode/prolog":"codemirror/mode/prolog","cm/addon/hover/prolog-hover":"codemirror/addon/hover/prolog-hover","cm/addon/hover/text-hover":"codemirror/addon/hover/text-hover","cm/addon/hint/templates-hint":"codemirror/addon/hint/templates-hint","cm/addon/hint/show-context-info":"codemirror/addon/hint/show-context-info",cm:"../bower_components/codemirror"},shim:{bootstrap:{deps:["jquery"]},typeahead:{deps:["jquery"],init:function(t){return require.s.contexts._.registry["typeahead.js"].factory(t)}},bloodhound:{deps:["jquery"]},splitter:{deps:["jquery"]},laconic:{deps:["jquery"]},tagmanager:{deps:["jquery"]}}}),require(["jquery","config","jswish"],function(t,e,n){require([e.http.locations.pengines+"/pengines.js"],function(){t(function(){t("body").swish(e.swish||{})})})}),define("swish",function(){});
+if(!function(t,e){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=t.document?e(t,!0):function(t){if(!t.document)throw new Error("jQuery requires a window with a document");return e(t)}:e(t)}("undefined"!=typeof window?window:this,function(t,e){"use strict";function n(t,e){e=e||nt;var n=e.createElement("script");n.text=t,e.head.appendChild(n).parentNode.removeChild(n)}function i(t){var e=!!t&&"length"in t&&t.length,n=gt.type(t);return"function"!==n&&!gt.isWindow(t)&&("array"===n||0===e||"number"==typeof e&&e>0&&e-1 in t)}function r(t,e){return t.nodeName&&t.nodeName.toLowerCase()===e.toLowerCase()}function o(t,e,n){return gt.isFunction(e)?gt.grep(t,function(t,i){return!!e.call(t,i,t)!==n}):e.nodeType?gt.grep(t,function(t){return t===e!==n}):"string"!=typeof e?gt.grep(t,function(t){return st.call(e,t)>-1!==n}):Tt.test(e)?gt.filter(e,t,n):(e=gt.filter(e,t),gt.grep(t,function(t){return st.call(e,t)>-1!==n&&1===t.nodeType}))}function a(t,e){for(;(t=t[e])&&1!==t.nodeType;);return t}function s(t){var e={};return gt.each(t.match(Pt)||[],function(t,n){e[n]=!0}),e}function l(t){return t}function c(t){throw t}function u(t,e,n,i){var r;try{t&&gt.isFunction(r=t.promise)?r.call(t).done(e).fail(n):t&&gt.isFunction(r=t.then)?r.call(t,e,n):e.apply(void 0,[t].slice(i))}catch(t){n.apply(void 0,[t])}}function h(){nt.removeEventListener("DOMContentLoaded",h),t.removeEventListener("load",h),gt.ready()}function d(){this.expando=gt.expando+d.uid++}function f(t){return"true"===t||"false"!==t&&("null"===t?null:t===+t+""?+t:Vt.test(t)?JSON.parse(t):t)}function p(t,e,n){var i;if(void 0===n&&1===t.nodeType)if(i="data-"+e.replace(Ht,"-$&").toLowerCase(),n=t.getAttribute(i),"string"==typeof n){try{n=f(n)}catch(t){}jt.set(t,e,n)}else n=void 0;return n}function g(t,e,n,i){var r,o=1,a=20,s=i?function(){return i.cur()}:function(){return gt.css(t,e,"")},l=s(),c=n&&n[3]||(gt.cssNumber[e]?"":"px"),u=(gt.cssNumber[e]||"px"!==c&&+l)&&zt.exec(gt.css(t,e));if(u&&u[3]!==c){c=c||u[3],n=n||[],u=+l||1;do o=o||".5",u/=o,gt.style(t,e,u+c);while(o!==(o=s()/l)&&1!==o&&--a)}return n&&(u=+u||+l||0,r=n[1]?u+(n[1]+1)*n[2]:+n[2],i&&(i.unit=c,i.start=u,i.end=r)),r}function m(t){var e,n=t.ownerDocument,i=t.nodeName,r=$t[i];return r?r:(e=n.body.appendChild(n.createElement(i)),r=gt.css(e,"display"),e.parentNode.removeChild(e),"none"===r&&(r="block"),$t[i]=r,r)}function v(t,e){for(var n,i,r=[],o=0,a=t.length;o<a;o++)i=t[o],i.style&&(n=i.style.display,e?("none"===n&&(r[o]=It.get(i,"display")||null,r[o]||(i.style.display="")),""===i.style.display&&Gt(i)&&(r[o]=m(i))):"none"!==n&&(r[o]="none",It.set(i,"display",n)));for(o=0;o<a;o++)null!=r[o]&&(t[o].style.display=r[o]);return t}function y(t,e){var n;return n="undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e||"*"):"undefined"!=typeof t.querySelectorAll?t.querySelectorAll(e||"*"):[],void 0===e||e&&r(t,e)?gt.merge([t],n):n}function x(t,e){for(var n=0,i=t.length;n<i;n++)It.set(t[n],"globalEval",!e||It.get(e[n],"globalEval"))}function b(t,e,n,i,r){for(var o,a,s,l,c,u,h=e.createDocumentFragment(),d=[],f=0,p=t.length;f<p;f++)if(o=t[f],o||0===o)if("object"===gt.type(o))gt.merge(d,o.nodeType?[o]:o);else if(Qt.test(o)){for(a=a||h.appendChild(e.createElement("div")),s=(Ut.exec(o)||["",""])[1].toLowerCase(),l=Yt[s]||Yt._default,a.innerHTML=l[1]+gt.htmlPrefilter(o)+l[2],u=l[0];u--;)a=a.lastChild;gt.merge(d,a.childNodes),a=h.firstChild,a.textContent=""}else d.push(e.createTextNode(o));for(h.textContent="",f=0;o=d[f++];)if(i&&gt.inArray(o,i)>-1)r&&r.push(o);else if(c=gt.contains(o.ownerDocument,o),a=y(h.appendChild(o),"script"),c&&x(a),n)for(u=0;o=a[u++];)Xt.test(o.type||"")&&n.push(o);return h}function _(){return!0}function w(){return!1}function S(){try{return nt.activeElement}catch(t){}}function C(t,e,n,i,r,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(i=i||n,n=void 0);for(s in e)C(t,s,n,i,e[s],o);return t}if(null==i&&null==r?(r=n,i=n=void 0):null==r&&("string"==typeof n?(r=i,i=void 0):(r=i,i=n,n=void 0)),r===!1)r=w;else if(!r)return t;return 1===o&&(a=r,r=function(t){return gt().off(t),a.apply(this,arguments)},r.guid=a.guid||(a.guid=gt.guid++)),t.each(function(){gt.event.add(this,e,r,i,n)})}function T(t,e){return r(t,"table")&&r(11!==e.nodeType?e:e.firstChild,"tr")?gt(">tbody",t)[0]||t:t}function k(t){return t.type=(null!==t.getAttribute("type"))+"/"+t.type,t}function A(t){var e=re.exec(t.type);return e?t.type=e[1]:t.removeAttribute("type"),t}function M(t,e){var n,i,r,o,a,s,l,c;if(1===e.nodeType){if(It.hasData(t)&&(o=It.access(t),a=It.set(e,o),c=o.events)){delete a.handle,a.events={};for(r in c)for(n=0,i=c[r].length;n<i;n++)gt.event.add(e,r,c[r][n])}jt.hasData(t)&&(s=jt.access(t),l=gt.extend({},s),jt.set(e,l))}}function L(t,e){var n=e.nodeName.toLowerCase();"input"===n&&Wt.test(t.type)?e.checked=t.checked:"input"!==n&&"textarea"!==n||(e.defaultValue=t.defaultValue)}function E(t,e,i,r){e=ot.apply([],e);var o,a,s,l,c,u,h=0,d=t.length,f=d-1,p=e[0],g=gt.isFunction(p);if(g||d>1&&"string"==typeof p&&!ft.checkClone&&ie.test(p))return t.each(function(n){var o=t.eq(n);g&&(e[0]=p.call(this,n,o.html())),E(o,e,i,r)});if(d&&(o=b(e,t[0].ownerDocument,!1,t,r),a=o.firstChild,1===o.childNodes.length&&(o=a),a||r)){for(s=gt.map(y(o,"script"),k),l=s.length;h<d;h++)c=o,h!==f&&(c=gt.clone(c,!0,!0),l&&gt.merge(s,y(c,"script"))),i.call(t[h],c,h);if(l)for(u=s[s.length-1].ownerDocument,gt.map(s,A),h=0;h<l;h++)c=s[h],Xt.test(c.type||"")&&!It.access(c,"globalEval")&&gt.contains(u,c)&&(c.src?gt._evalUrl&&gt._evalUrl(c.src):n(c.textContent.replace(oe,""),u))}return t}function P(t,e,n){for(var i,r=e?gt.filter(e,t):t,o=0;null!=(i=r[o]);o++)n||1!==i.nodeType||gt.cleanData(y(i)),i.parentNode&&(n&&gt.contains(i.ownerDocument,i)&&x(y(i,"script")),i.parentNode.removeChild(i));return t}function N(t,e,n){var i,r,o,a,s=t.style;return n=n||le(t),n&&(a=n.getPropertyValue(e)||n[e],""!==a||gt.contains(t.ownerDocument,t)||(a=gt.style(t,e)),!ft.pixelMarginRight()&&se.test(a)&&ae.test(e)&&(i=s.width,r=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=i,s.minWidth=r,s.maxWidth=o)),void 0!==a?a+"":a}function O(t,e){return{get:function(){return t()?void delete this.get:(this.get=e).apply(this,arguments)}}}function R(t){if(t in pe)return t;for(var e=t[0].toUpperCase()+t.slice(1),n=fe.length;n--;)if(t=fe[n]+e,t in pe)return t}function D(t){var e=gt.cssProps[t];return e||(e=gt.cssProps[t]=R(t)||t),e}function I(t,e,n){var i=zt.exec(e);return i?Math.max(0,i[2]-(n||0))+(i[3]||"px"):e}function j(t,e,n,i,r){var o,a=0;for(o=n===(i?"border":"content")?4:"width"===e?1:0;o<4;o+=2)"margin"===n&&(a+=gt.css(t,n+qt[o],!0,r)),i?("content"===n&&(a-=gt.css(t,"padding"+qt[o],!0,r)),"margin"!==n&&(a-=gt.css(t,"border"+qt[o]+"Width",!0,r))):(a+=gt.css(t,"padding"+qt[o],!0,r),"padding"!==n&&(a+=gt.css(t,"border"+qt[o]+"Width",!0,r)));return a}function V(t,e,n){var i,r=le(t),o=N(t,e,r),a="border-box"===gt.css(t,"boxSizing",!1,r);return se.test(o)?o:(i=a&&(ft.boxSizingReliable()||o===t.style[e]),"auto"===o&&(o=t["offset"+e[0].toUpperCase()+e.slice(1)]),o=parseFloat(o)||0,o+j(t,e,n||(a?"border":"content"),i,r)+"px")}function H(t,e,n,i,r){return new H.prototype.init(t,e,n,i,r)}function F(){me&&(nt.hidden===!1&&t.requestAnimationFrame?t.requestAnimationFrame(F):t.setTimeout(F,gt.fx.interval),gt.fx.tick())}function z(){return t.setTimeout(function(){ge=void 0}),ge=gt.now()}function q(t,e){var n,i=0,r={height:t};for(e=e?1:0;i<4;i+=2-e)n=qt[i],r["margin"+n]=r["padding"+n]=t;return e&&(r.opacity=r.width=t),r}function G(t,e,n){for(var i,r=(W.tweeners[e]||[]).concat(W.tweeners["*"]),o=0,a=r.length;o<a;o++)if(i=r[o].call(n,e,t))return i}function B(t,e,n){var i,r,o,a,s,l,c,u,h="width"in e||"height"in e,d=this,f={},p=t.style,g=t.nodeType&&Gt(t),m=It.get(t,"fxshow");n.queue||(a=gt._queueHooks(t,"fx"),null==a.unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,d.always(function(){d.always(function(){a.unqueued--,gt.queue(t,"fx").length||a.empty.fire()})}));for(i in e)if(r=e[i],ve.test(r)){if(delete e[i],o=o||"toggle"===r,r===(g?"hide":"show")){if("show"!==r||!m||void 0===m[i])continue;g=!0}f[i]=m&&m[i]||gt.style(t,i)}if(l=!gt.isEmptyObject(e),l||!gt.isEmptyObject(f)){h&&1===t.nodeType&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],c=m&&m.display,null==c&&(c=It.get(t,"display")),u=gt.css(t,"display"),"none"===u&&(c?u=c:(v([t],!0),c=t.style.display||c,u=gt.css(t,"display"),v([t]))),("inline"===u||"inline-block"===u&&null!=c)&&"none"===gt.css(t,"float")&&(l||(d.done(function(){p.display=c}),null==c&&(u=p.display,c="none"===u?"":u)),p.display="inline-block")),n.overflow&&(p.overflow="hidden",d.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]})),l=!1;for(i in f)l||(m?"hidden"in m&&(g=m.hidden):m=It.access(t,"fxshow",{display:c}),o&&(m.hidden=!g),g&&v([t],!0),d.done(function(){g||v([t]),It.remove(t,"fxshow");for(i in f)gt.style(t,i,f[i])})),l=G(g?m[i]:0,i,d),i in m||(m[i]=l.start,g&&(l.end=l.start,l.start=0))}}function $(t,e){var n,i,r,o,a;for(n in t)if(i=gt.camelCase(n),r=e[i],o=t[n],Array.isArray(o)&&(r=o[1],o=t[n]=o[0]),n!==i&&(t[i]=o,delete t[n]),a=gt.cssHooks[i],a&&"expand"in a){o=a.expand(o),delete t[i];for(n in o)n in t||(t[n]=o[n],e[n]=r)}else e[i]=r}function W(t,e,n){var i,r,o=0,a=W.prefilters.length,s=gt.Deferred().always(function(){delete l.elem}),l=function(){if(r)return!1;for(var e=ge||z(),n=Math.max(0,c.startTime+c.duration-e),i=n/c.duration||0,o=1-i,a=0,l=c.tweens.length;a<l;a++)c.tweens[a].run(o);return s.notifyWith(t,[c,o,n]),o<1&&l?n:(l||s.notifyWith(t,[c,1,0]),s.resolveWith(t,[c]),!1)},c=s.promise({elem:t,props:gt.extend({},e),opts:gt.extend(!0,{specialEasing:{},easing:gt.easing._default},n),originalProperties:e,originalOptions:n,startTime:ge||z(),duration:n.duration,tweens:[],createTween:function(e,n){var i=gt.Tween(t,c.opts,e,n,c.opts.specialEasing[e]||c.opts.easing);return c.tweens.push(i),i},stop:function(e){var n=0,i=e?c.tweens.length:0;if(r)return this;for(r=!0;n<i;n++)c.tweens[n].run(1);return e?(s.notifyWith(t,[c,1,0]),s.resolveWith(t,[c,e])):s.rejectWith(t,[c,e]),this}}),u=c.props;for($(u,c.opts.specialEasing);o<a;o++)if(i=W.prefilters[o].call(c,t,u,c.opts))return gt.isFunction(i.stop)&&(gt._queueHooks(c.elem,c.opts.queue).stop=gt.proxy(i.stop,i)),i;return gt.map(u,G,c),gt.isFunction(c.opts.start)&&c.opts.start.call(t,c),c.progress(c.opts.progress).done(c.opts.done,c.opts.complete).fail(c.opts.fail).always(c.opts.always),gt.fx.timer(gt.extend(l,{elem:t,anim:c,queue:c.opts.queue})),c}function U(t){var e=t.match(Pt)||[];return e.join(" ")}function X(t){return t.getAttribute&&t.getAttribute("class")||""}function Y(t,e,n,i){var r;if(Array.isArray(e))gt.each(e,function(e,r){n||Me.test(t)?i(t,r):Y(t+"["+("object"==typeof r&&null!=r?e:"")+"]",r,n,i)});else if(n||"object"!==gt.type(e))i(t,e);else for(r in e)Y(t+"["+r+"]",e[r],n,i)}function Q(t){return function(e,n){"string"!=typeof e&&(n=e,e="*");var i,r=0,o=e.toLowerCase().match(Pt)||[];if(gt.isFunction(n))for(;i=o[r++];)"+"===i[0]?(i=i.slice(1)||"*",(t[i]=t[i]||[]).unshift(n)):(t[i]=t[i]||[]).push(n)}}function Z(t,e,n,i){function r(s){var l;return o[s]=!0,gt.each(t[s]||[],function(t,s){var c=s(e,n,i);return"string"!=typeof c||a||o[c]?a?!(l=c):void 0:(e.dataTypes.unshift(c),r(c),!1)}),l}var o={},a=t===Fe;return r(e.dataTypes[0])||!o["*"]&&r("*")}function K(t,e){var n,i,r=gt.ajaxSettings.flatOptions||{};for(n in e)void 0!==e[n]&&((r[n]?t:i||(i={}))[n]=e[n]);return i&&gt.extend(!0,t,i),t}function J(t,e,n){for(var i,r,o,a,s=t.contents,l=t.dataTypes;"*"===l[0];)l.shift(),void 0===i&&(i=t.mimeType||e.getResponseHeader("Content-Type"));if(i)for(r in s)if(s[r]&&s[r].test(i)){l.unshift(r);break}if(l[0]in n)o=l[0];else{for(r in n){if(!l[0]||t.converters[r+" "+l[0]]){o=r;break}a||(a=r)}o=o||a}if(o)return o!==l[0]&&l.unshift(o),n[o]}function tt(t,e,n,i){var r,o,a,s,l,c={},u=t.dataTypes.slice();if(u[1])for(a in t.converters)c[a.toLowerCase()]=t.converters[a];for(o=u.shift();o;)if(t.responseFields[o]&&(n[t.responseFields[o]]=e),!l&&i&&t.dataFilter&&(e=t.dataFilter(e,t.dataType)),l=o,o=u.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(a=c[l+" "+o]||c["* "+o],!a)for(r in c)if(s=r.split(" "),s[1]===o&&(a=c[l+" "+s[0]]||c["* "+s[0]])){a===!0?a=c[r]:c[r]!==!0&&(o=s[0],u.unshift(s[1]));break}if(a!==!0)if(a&&t.throws)e=a(e);else try{e=a(e)}catch(t){return{state:"parsererror",error:a?t:"No conversion from "+l+" to "+o}}}return{state:"success",data:e}}var et=[],nt=t.document,it=Object.getPrototypeOf,rt=et.slice,ot=et.concat,at=et.push,st=et.indexOf,lt={},ct=lt.toString,ut=lt.hasOwnProperty,ht=ut.toString,dt=ht.call(Object),ft={},pt="3.2.1",gt=function(t,e){return new gt.fn.init(t,e)},mt=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,vt=/^-ms-/,yt=/-([a-z])/g,xt=function(t,e){return e.toUpperCase()};gt.fn=gt.prototype={jquery:pt,constructor:gt,length:0,toArray:function(){return rt.call(this)},get:function(t){return null==t?rt.call(this):t<0?this[t+this.length]:this[t]},pushStack:function(t){var e=gt.merge(this.constructor(),t);return e.prevObject=this,e},each:function(t){return gt.each(this,t)},map:function(t){return this.pushStack(gt.map(this,function(e,n){return t.call(e,n,e)}))},slice:function(){return this.pushStack(rt.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(t){var e=this.length,n=+t+(t<0?e:0);return this.pushStack(n>=0&&n<e?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:at,sort:et.sort,splice:et.splice},gt.extend=gt.fn.extend=function(){var t,e,n,i,r,o,a=arguments[0]||{},s=1,l=arguments.length,c=!1;for("boolean"==typeof a&&(c=a,a=arguments[s]||{},s++),"object"==typeof a||gt.isFunction(a)||(a={}),s===l&&(a=this,s--);s<l;s++)if(null!=(t=arguments[s]))for(e in t)n=a[e],i=t[e],a!==i&&(c&&i&&(gt.isPlainObject(i)||(r=Array.isArray(i)))?(r?(r=!1,o=n&&Array.isArray(n)?n:[]):o=n&&gt.isPlainObject(n)?n:{},a[e]=gt.extend(c,o,i)):void 0!==i&&(a[e]=i));return a},gt.extend({expando:"jQuery"+(pt+Math.random()).replace(/\D/g,""),isReady:!0,error:function(t){throw new Error(t)},noop:function(){},isFunction:function(t){return"function"===gt.type(t)},isWindow:function(t){return null!=t&&t===t.window},isNumeric:function(t){var e=gt.type(t);return("number"===e||"string"===e)&&!isNaN(t-parseFloat(t))},isPlainObject:function(t){var e,n;return!(!t||"[object Object]"!==ct.call(t)||(e=it(t))&&(n=ut.call(e,"constructor")&&e.constructor,"function"!=typeof n||ht.call(n)!==dt))},isEmptyObject:function(t){var e;for(e in t)return!1;return!0},type:function(t){return null==t?t+"":"object"==typeof t||"function"==typeof t?lt[ct.call(t)]||"object":typeof t},globalEval:function(t){n(t)},camelCase:function(t){return t.replace(vt,"ms-").replace(yt,xt)},each:function(t,e){var n,r=0;if(i(t))for(n=t.length;r<n&&e.call(t[r],r,t[r])!==!1;r++);else for(r in t)if(e.call(t[r],r,t[r])===!1)break;return t},trim:function(t){return null==t?"":(t+"").replace(mt,"")},makeArray:function(t,e){var n=e||[];return null!=t&&(i(Object(t))?gt.merge(n,"string"==typeof t?[t]:t):at.call(n,t)),n},inArray:function(t,e,n){return null==e?-1:st.call(e,t,n)},merge:function(t,e){for(var n=+e.length,i=0,r=t.length;i<n;i++)t[r++]=e[i];return t.length=r,t},grep:function(t,e,n){for(var i,r=[],o=0,a=t.length,s=!n;o<a;o++)i=!e(t[o],o),i!==s&&r.push(t[o]);return r},map:function(t,e,n){var r,o,a=0,s=[];if(i(t))for(r=t.length;a<r;a++)o=e(t[a],a,n),null!=o&&s.push(o);else for(a in t)o=e(t[a],a,n),null!=o&&s.push(o);return ot.apply([],s)},guid:1,proxy:function(t,e){var n,i,r;if("string"==typeof e&&(n=t[e],e=t,t=n),gt.isFunction(t))return i=rt.call(arguments,2),r=function(){return t.apply(e||this,i.concat(rt.call(arguments)))},r.guid=t.guid=t.guid||gt.guid++,r},now:Date.now,support:ft}),"function"==typeof Symbol&&(gt.fn[Symbol.iterator]=et[Symbol.iterator]),gt.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(t,e){lt["[object "+e+"]"]=e.toLowerCase()});var bt=function(t){function e(t,e,n,i){var r,o,a,s,l,c,u,d=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!i&&((e?e.ownerDocument||e:z)!==O&&N(e),e=e||O,D)){if(11!==p&&(l=vt.exec(t)))if(r=l[1]){if(9===p){if(!(a=e.getElementById(r)))return n;if(a.id===r)return n.push(a),n}else if(d&&(a=d.getElementById(r))&&H(e,a)&&a.id===r)return n.push(a),n}else{if(l[2])return K.apply(n,e.getElementsByTagName(t)),n;if((r=l[3])&&w.getElementsByClassName&&e.getElementsByClassName)return K.apply(n,e.getElementsByClassName(r)),n}if(w.qsa&&!W[t+" "]&&(!I||!I.test(t))){if(1!==p)d=e,u=t;else if("object"!==e.nodeName.toLowerCase()){for((s=e.getAttribute("id"))?s=s.replace(_t,wt):e.setAttribute("id",s=F),c=k(t),o=c.length;o--;)c[o]="#"+s+" "+f(c[o]);u=c.join(","),d=yt.test(t)&&h(e.parentNode)||e}if(u)try{return K.apply(n,d.querySelectorAll(u)),n}catch(t){}finally{s===F&&e.removeAttribute("id")}}}return M(t.replace(st,"$1"),e,n,i)}function n(){function t(n,i){return e.push(n+" ")>S.cacheLength&&delete t[e.shift()],t[n+" "]=i}var e=[];return t}function i(t){return t[F]=!0,t}function r(t){var e=O.createElement("fieldset");try{return!!t(e)}catch(t){return!1}finally{e.parentNode&&e.parentNode.removeChild(e),e=null}}function o(t,e){for(var n=t.split("|"),i=n.length;i--;)S.attrHandle[n[i]]=e}function a(t,e){var n=e&&t,i=n&&1===t.nodeType&&1===e.nodeType&&t.sourceIndex-e.sourceIndex;if(i)return i;if(n)for(;n=n.nextSibling;)if(n===e)return-1;return t?1:-1}function s(t){return function(e){var n=e.nodeName.toLowerCase();return"input"===n&&e.type===t}}function l(t){return function(e){var n=e.nodeName.toLowerCase();return("input"===n||"button"===n)&&e.type===t}}function c(t){return function(e){return"form"in e?e.parentNode&&e.disabled===!1?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&Ct(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function u(t){return i(function(e){return e=+e,i(function(n,i){for(var r,o=t([],n.length,e),a=o.length;a--;)n[r=o[a]]&&(n[r]=!(i[r]=n[r]))})})}function h(t){return t&&"undefined"!=typeof t.getElementsByTagName&&t}function d(){}function f(t){for(var e=0,n=t.length,i="";e<n;e++)i+=t[e].value;return i}function p(t,e,n){var i=e.dir,r=e.next,o=r||i,a=n&&"parentNode"===o,s=G++;return e.first?function(e,n,r){for(;e=e[i];)if(1===e.nodeType||a)return t(e,n,r);return!1}:function(e,n,l){var c,u,h,d=[q,s];if(l){for(;e=e[i];)if((1===e.nodeType||a)&&t(e,n,l))return!0}else for(;e=e[i];)if(1===e.nodeType||a)if(h=e[F]||(e[F]={}),u=h[e.uniqueID]||(h[e.uniqueID]={}),r&&r===e.nodeName.toLowerCase())e=e[i]||e;else{if((c=u[o])&&c[0]===q&&c[1]===s)return d[2]=c[2];if(u[o]=d,d[2]=t(e,n,l))return!0}return!1}}function g(t){return t.length>1?function(e,n,i){for(var r=t.length;r--;)if(!t[r](e,n,i))return!1;return!0}:t[0]}function m(t,n,i){for(var r=0,o=n.length;r<o;r++)e(t,n[r],i);return i}function v(t,e,n,i,r){for(var o,a=[],s=0,l=t.length,c=null!=e;s<l;s++)(o=t[s])&&(n&&!n(o,i,r)||(a.push(o),c&&e.push(s)));return a}function y(t,e,n,r,o,a){return r&&!r[F]&&(r=y(r)),o&&!o[F]&&(o=y(o,a)),i(function(i,a,s,l){var c,u,h,d=[],f=[],p=a.length,g=i||m(e||"*",s.nodeType?[s]:s,[]),y=!t||!i&&e?g:v(g,d,t,s,l),x=n?o||(i?t:p||r)?[]:a:y;if(n&&n(y,x,s,l),r)for(c=v(x,f),r(c,[],s,l),u=c.length;u--;)(h=c[u])&&(x[f[u]]=!(y[f[u]]=h));if(i){if(o||t){if(o){for(c=[],u=x.length;u--;)(h=x[u])&&c.push(y[u]=h);o(null,x=[],c,l)}for(u=x.length;u--;)(h=x[u])&&(c=o?tt(i,h):d[u])>-1&&(i[c]=!(a[c]=h))}}else x=v(x===a?x.splice(p,x.length):x),o?o(null,a,x,l):K.apply(a,x)})}function x(t){for(var e,n,i,r=t.length,o=S.relative[t[0].type],a=o||S.relative[" "],s=o?1:0,l=p(function(t){return t===e},a,!0),c=p(function(t){return tt(e,t)>-1},a,!0),u=[function(t,n,i){var r=!o&&(i||n!==L)||((e=n).nodeType?l(t,n,i):c(t,n,i));return e=null,r}];s<r;s++)if(n=S.relative[t[s].type])u=[p(g(u),n)];else{if(n=S.filter[t[s].type].apply(null,t[s].matches),n[F]){for(i=++s;i<r&&!S.relative[t[i].type];i++);return y(s>1&&g(u),s>1&&f(t.slice(0,s-1).concat({value:" "===t[s-2].type?"*":""})).replace(st,"$1"),n,s<i&&x(t.slice(s,i)),i<r&&x(t=t.slice(i)),i<r&&f(t))}u.push(n)}return g(u)}function b(t,n){var r=n.length>0,o=t.length>0,a=function(i,a,s,l,c){var u,h,d,f=0,p="0",g=i&&[],m=[],y=L,x=i||o&&S.find.TAG("*",c),b=q+=null==y?1:Math.random()||.1,_=x.length;for(c&&(L=a===O||a||c);p!==_&&null!=(u=x[p]);p++){if(o&&u){for(h=0,a||u.ownerDocument===O||(N(u),s=!D);d=t[h++];)if(d(u,a||O,s)){l.push(u);break}c&&(q=b)}r&&((u=!d&&u)&&f--,i&&g.push(u))}if(f+=p,r&&p!==f){for(h=0;d=n[h++];)d(g,m,a,s);if(i){if(f>0)for(;p--;)g[p]||m[p]||(m[p]=Q.call(l));m=v(m)}K.apply(l,m),c&&!i&&m.length>0&&f+n.length>1&&e.uniqueSort(l)}return c&&(q=b,L=y),g};return r?i(a):a}var _,w,S,C,T,k,A,M,L,E,P,N,O,R,D,I,j,V,H,F="sizzle"+1*new Date,z=t.document,q=0,G=0,B=n(),$=n(),W=n(),U=function(t,e){return t===e&&(P=!0),0},X={}.hasOwnProperty,Y=[],Q=Y.pop,Z=Y.push,K=Y.push,J=Y.slice,tt=function(t,e){for(var n=0,i=t.length;n<i;n++)if(t[n]===e)return n;return-1},et="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",nt="[\\x20\\t\\r\\n\\f]",it="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",rt="\\["+nt+"*("+it+")(?:"+nt+"*([*^$|!~]?=)"+nt+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+it+"))|)"+nt+"*\\]",ot=":("+it+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+rt+")*)|.*)\\)|)",at=new RegExp(nt+"+","g"),st=new RegExp("^"+nt+"+|((?:^|[^\\\\])(?:\\\\.)*)"+nt+"+$","g"),lt=new RegExp("^"+nt+"*,"+nt+"*"),ct=new RegExp("^"+nt+"*([>+~]|"+nt+")"+nt+"*"),ut=new RegExp("="+nt+"*([^\\]'\"]*?)"+nt+"*\\]","g"),ht=new RegExp(ot),dt=new RegExp("^"+it+"$"),ft={ID:new RegExp("^#("+it+")"),CLASS:new RegExp("^\\.("+it+")"),TAG:new RegExp("^("+it+"|[*])"),ATTR:new RegExp("^"+rt),PSEUDO:new RegExp("^"+ot),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+nt+"*(even|odd|(([+-]|)(\\d*)n|)"+nt+"*(?:([+-]|)"+nt+"*(\\d+)|))"+nt+"*\\)|)","i"),bool:new RegExp("^(?:"+et+")$","i"),needsContext:new RegExp("^"+nt+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+nt+"*((?:-\\d)?\\d*)"+nt+"*\\)|)(?=[^-]|$)","i")},pt=/^(?:input|select|textarea|button)$/i,gt=/^h\d$/i,mt=/^[^{]+\{\s*\[native \w/,vt=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,yt=/[+~]/,xt=new RegExp("\\\\([\\da-f]{1,6}"+nt+"?|("+nt+")|.)","ig"),bt=function(t,e,n){var i="0x"+e-65536;return i!==i||n?e:i<0?String.fromCharCode(i+65536):String.fromCharCode(i>>10|55296,1023&i|56320)},_t=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,wt=function(t,e){return e?"\0"===t?"�":t.slice(0,-1)+"\\"+t.charCodeAt(t.length-1).toString(16)+" ":"\\"+t},St=function(){N()},Ct=p(function(t){return t.disabled===!0&&("form"in t||"label"in t)},{dir:"parentNode",next:"legend"});try{K.apply(Y=J.call(z.childNodes),z.childNodes),Y[z.childNodes.length].nodeType}catch(t){K={apply:Y.length?function(t,e){Z.apply(t,J.call(e))}:function(t,e){for(var n=t.length,i=0;t[n++]=e[i++];);t.length=n-1}}}w=e.support={},T=e.isXML=function(t){var e=t&&(t.ownerDocument||t).documentElement;return!!e&&"HTML"!==e.nodeName},N=e.setDocument=function(t){var e,n,i=t?t.ownerDocument||t:z;return i!==O&&9===i.nodeType&&i.documentElement?(O=i,R=O.documentElement,D=!T(O),z!==O&&(n=O.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",St,!1):n.attachEvent&&n.attachEvent("onunload",St)),w.attributes=r(function(t){return t.className="i",!t.getAttribute("className")}),w.getElementsByTagName=r(function(t){return t.appendChild(O.createComment("")),!t.getElementsByTagName("*").length}),w.getElementsByClassName=mt.test(O.getElementsByClassName),w.getById=r(function(t){return R.appendChild(t).id=F,!O.getElementsByName||!O.getElementsByName(F).length}),w.getById?(S.filter.ID=function(t){var e=t.replace(xt,bt);return function(t){return t.getAttribute("id")===e}},S.find.ID=function(t,e){if("undefined"!=typeof e.getElementById&&D){var n=e.getElementById(t);return n?[n]:[]}}):(S.filter.ID=function(t){var e=t.replace(xt,bt);return function(t){var n="undefined"!=typeof t.getAttributeNode&&t.getAttributeNode("id");return n&&n.value===e}},S.find.ID=function(t,e){if("undefined"!=typeof e.getElementById&&D){var n,i,r,o=e.getElementById(t);if(o){if(n=o.getAttributeNode("id"),n&&n.value===t)return[o];for(r=e.getElementsByName(t),i=0;o=r[i++];)if(n=o.getAttributeNode("id"),n&&n.value===t)return[o]}return[]}}),S.find.TAG=w.getElementsByTagName?function(t,e){return"undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t):w.qsa?e.querySelectorAll(t):void 0}:function(t,e){var n,i=[],r=0,o=e.getElementsByTagName(t);if("*"===t){for(;n=o[r++];)1===n.nodeType&&i.push(n);return i}return o},S.find.CLASS=w.getElementsByClassName&&function(t,e){if("undefined"!=typeof e.getElementsByClassName&&D)return e.getElementsByClassName(t)},j=[],I=[],(w.qsa=mt.test(O.querySelectorAll))&&(r(function(t){R.appendChild(t).innerHTML="<a id='"+F+"'></a><select id='"+F+"-\r\\' msallowcapture=''><option selected=''></option></select>",t.querySelectorAll("[msallowcapture^='']").length&&I.push("[*^$]="+nt+"*(?:''|\"\")"),t.querySelectorAll("[selected]").length||I.push("\\["+nt+"*(?:value|"+et+")"),t.querySelectorAll("[id~="+F+"-]").length||I.push("~="),t.querySelectorAll(":checked").length||I.push(":checked"),t.querySelectorAll("a#"+F+"+*").length||I.push(".#.+[+~]")}),r(function(t){t.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var e=O.createElement("input");e.setAttribute("type","hidden"),t.appendChild(e).setAttribute("name","D"),t.querySelectorAll("[name=d]").length&&I.push("name"+nt+"*[*^$|!~]?="),2!==t.querySelectorAll(":enabled").length&&I.push(":enabled",":disabled"),R.appendChild(t).disabled=!0,2!==t.querySelectorAll(":disabled").length&&I.push(":enabled",":disabled"),t.querySelectorAll("*,:x"),I.push(",.*:")})),(w.matchesSelector=mt.test(V=R.matches||R.webkitMatchesSelector||R.mozMatchesSelector||R.oMatchesSelector||R.msMatchesSelector))&&r(function(t){w.disconnectedMatch=V.call(t,"*"),V.call(t,"[s!='']:x"),j.push("!=",ot)}),I=I.length&&new RegExp(I.join("|")),j=j.length&&new RegExp(j.join("|")),e=mt.test(R.compareDocumentPosition),H=e||mt.test(R.contains)?function(t,e){var n=9===t.nodeType?t.documentElement:t,i=e&&e.parentNode;return t===i||!(!i||1!==i.nodeType||!(n.contains?n.contains(i):t.compareDocumentPosition&&16&t.compareDocumentPosition(i)))}:function(t,e){if(e)for(;e=e.parentNode;)if(e===t)return!0;return!1},U=e?function(t,e){if(t===e)return P=!0,0;var n=!t.compareDocumentPosition-!e.compareDocumentPosition;return n?n:(n=(t.ownerDocument||t)===(e.ownerDocument||e)?t.compareDocumentPosition(e):1,1&n||!w.sortDetached&&e.compareDocumentPosition(t)===n?t===O||t.ownerDocument===z&&H(z,t)?-1:e===O||e.ownerDocument===z&&H(z,e)?1:E?tt(E,t)-tt(E,e):0:4&n?-1:1)}:function(t,e){if(t===e)return P=!0,0;var n,i=0,r=t.parentNode,o=e.parentNode,s=[t],l=[e];if(!r||!o)return t===O?-1:e===O?1:r?-1:o?1:E?tt(E,t)-tt(E,e):0;if(r===o)return a(t,e);for(n=t;n=n.parentNode;)s.unshift(n);for(n=e;n=n.parentNode;)l.unshift(n);for(;s[i]===l[i];)i++;return i?a(s[i],l[i]):s[i]===z?-1:l[i]===z?1:0},O):O},e.matches=function(t,n){return e(t,null,null,n)},e.matchesSelector=function(t,n){if((t.ownerDocument||t)!==O&&N(t),n=n.replace(ut,"='$1']"),w.matchesSelector&&D&&!W[n+" "]&&(!j||!j.test(n))&&(!I||!I.test(n)))try{var i=V.call(t,n);if(i||w.disconnectedMatch||t.document&&11!==t.document.nodeType)return i}catch(t){}return e(n,O,null,[t]).length>0},e.contains=function(t,e){return(t.ownerDocument||t)!==O&&N(t),H(t,e)},e.attr=function(t,e){(t.ownerDocument||t)!==O&&N(t);var n=S.attrHandle[e.toLowerCase()],i=n&&X.call(S.attrHandle,e.toLowerCase())?n(t,e,!D):void 0;return void 0!==i?i:w.attributes||!D?t.getAttribute(e):(i=t.getAttributeNode(e))&&i.specified?i.value:null},e.escape=function(t){return(t+"").replace(_t,wt)},e.error=function(t){throw new Error("Syntax error, unrecognized expression: "+t)},e.uniqueSort=function(t){var e,n=[],i=0,r=0;if(P=!w.detectDuplicates,E=!w.sortStable&&t.slice(0),t.sort(U),P){for(;e=t[r++];)e===t[r]&&(i=n.push(r));for(;i--;)t.splice(n[i],1)}return E=null,t},C=e.getText=function(t){var e,n="",i=0,r=t.nodeType;if(r){if(1===r||9===r||11===r){if("string"==typeof t.textContent)return t.textContent;for(t=t.firstChild;t;t=t.nextSibling)n+=C(t)}else if(3===r||4===r)return t.nodeValue}else for(;e=t[i++];)n+=C(e);return n},S=e.selectors={cacheLength:50,createPseudo:i,match:ft,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(t){return t[1]=t[1].replace(xt,bt),t[3]=(t[3]||t[4]||t[5]||"").replace(xt,bt),"~="===t[2]&&(t[3]=" "+t[3]+" "),t.slice(0,4)},CHILD:function(t){return t[1]=t[1].toLowerCase(),"nth"===t[1].slice(0,3)?(t[3]||e.error(t[0]),t[4]=+(t[4]?t[5]+(t[6]||1):2*("even"===t[3]||"odd"===t[3])),t[5]=+(t[7]+t[8]||"odd"===t[3])):t[3]&&e.error(t[0]),t},PSEUDO:function(t){var e,n=!t[6]&&t[2];return ft.CHILD.test(t[0])?null:(t[3]?t[2]=t[4]||t[5]||"":n&&ht.test(n)&&(e=k(n,!0))&&(e=n.indexOf(")",n.length-e)-n.length)&&(t[0]=t[0].slice(0,e),t[2]=n.slice(0,e)),t.slice(0,3))}},filter:{TAG:function(t){var e=t.replace(xt,bt).toLowerCase();return"*"===t?function(){return!0}:function(t){return t.nodeName&&t.nodeName.toLowerCase()===e}},CLASS:function(t){var e=B[t+" "];return e||(e=new RegExp("(^|"+nt+")"+t+"("+nt+"|$)"))&&B(t,function(t){return e.test("string"==typeof t.className&&t.className||"undefined"!=typeof t.getAttribute&&t.getAttribute("class")||"")})},ATTR:function(t,n,i){return function(r){var o=e.attr(r,t);return null==o?"!="===n:!n||(o+="","="===n?o===i:"!="===n?o!==i:"^="===n?i&&0===o.indexOf(i):"*="===n?i&&o.indexOf(i)>-1:"$="===n?i&&o.slice(-i.length)===i:"~="===n?(" "+o.replace(at," ")+" ").indexOf(i)>-1:"|="===n&&(o===i||o.slice(0,i.length+1)===i+"-"))}},CHILD:function(t,e,n,i,r){var o="nth"!==t.slice(0,3),a="last"!==t.slice(-4),s="of-type"===e;return 1===i&&0===r?function(t){return!!t.parentNode}:function(e,n,l){var c,u,h,d,f,p,g=o!==a?"nextSibling":"previousSibling",m=e.parentNode,v=s&&e.nodeName.toLowerCase(),y=!l&&!s,x=!1;if(m){if(o){for(;g;){for(d=e;d=d[g];)if(s?d.nodeName.toLowerCase()===v:1===d.nodeType)return!1;p=g="only"===t&&!p&&"nextSibling"}return!0}if(p=[a?m.firstChild:m.lastChild],a&&y){for(d=m,h=d[F]||(d[F]={}),u=h[d.uniqueID]||(h[d.uniqueID]={}),c=u[t]||[],f=c[0]===q&&c[1],x=f&&c[2],d=f&&m.childNodes[f];d=++f&&d&&d[g]||(x=f=0)||p.pop();)if(1===d.nodeType&&++x&&d===e){u[t]=[q,f,x];break}}else if(y&&(d=e,h=d[F]||(d[F]={}),u=h[d.uniqueID]||(h[d.uniqueID]={}),c=u[t]||[],f=c[0]===q&&c[1],x=f),x===!1)for(;(d=++f&&d&&d[g]||(x=f=0)||p.pop())&&((s?d.nodeName.toLowerCase()!==v:1!==d.nodeType)||!++x||(y&&(h=d[F]||(d[F]={}),u=h[d.uniqueID]||(h[d.uniqueID]={}),u[t]=[q,x]),d!==e)););return x-=r,x===i||x%i===0&&x/i>=0}}},PSEUDO:function(t,n){var r,o=S.pseudos[t]||S.setFilters[t.toLowerCase()]||e.error("unsupported pseudo: "+t);return o[F]?o(n):o.length>1?(r=[t,t,"",n],S.setFilters.hasOwnProperty(t.toLowerCase())?i(function(t,e){for(var i,r=o(t,n),a=r.length;a--;)i=tt(t,r[a]),t[i]=!(e[i]=r[a])}):function(t){return o(t,0,r)}):o}},pseudos:{not:i(function(t){var e=[],n=[],r=A(t.replace(st,"$1"));return r[F]?i(function(t,e,n,i){for(var o,a=r(t,null,i,[]),s=t.length;s--;)(o=a[s])&&(t[s]=!(e[s]=o))}):function(t,i,o){return e[0]=t,r(e,null,o,n),e[0]=null,!n.pop()}}),has:i(function(t){return function(n){return e(t,n).length>0}}),contains:i(function(t){return t=t.replace(xt,bt),function(e){return(e.textContent||e.innerText||C(e)).indexOf(t)>-1}}),lang:i(function(t){return dt.test(t||"")||e.error("unsupported lang: "+t),t=t.replace(xt,bt).toLowerCase(),function(e){var n;do if(n=D?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return n=n.toLowerCase(),n===t||0===n.indexOf(t+"-");while((e=e.parentNode)&&1===e.nodeType);return!1};
+}),target:function(e){var n=t.location&&t.location.hash;return n&&n.slice(1)===e.id},root:function(t){return t===R},focus:function(t){return t===O.activeElement&&(!O.hasFocus||O.hasFocus())&&!!(t.type||t.href||~t.tabIndex)},enabled:c(!1),disabled:c(!0),checked:function(t){var e=t.nodeName.toLowerCase();return"input"===e&&!!t.checked||"option"===e&&!!t.selected},selected:function(t){return t.parentNode&&t.parentNode.selectedIndex,t.selected===!0},empty:function(t){for(t=t.firstChild;t;t=t.nextSibling)if(t.nodeType<6)return!1;return!0},parent:function(t){return!S.pseudos.empty(t)},header:function(t){return gt.test(t.nodeName)},input:function(t){return pt.test(t.nodeName)},button:function(t){var e=t.nodeName.toLowerCase();return"input"===e&&"button"===t.type||"button"===e},text:function(t){var e;return"input"===t.nodeName.toLowerCase()&&"text"===t.type&&(null==(e=t.getAttribute("type"))||"text"===e.toLowerCase())},first:u(function(){return[0]}),last:u(function(t,e){return[e-1]}),eq:u(function(t,e,n){return[n<0?n+e:n]}),even:u(function(t,e){for(var n=0;n<e;n+=2)t.push(n);return t}),odd:u(function(t,e){for(var n=1;n<e;n+=2)t.push(n);return t}),lt:u(function(t,e,n){for(var i=n<0?n+e:n;--i>=0;)t.push(i);return t}),gt:u(function(t,e,n){for(var i=n<0?n+e:n;++i<e;)t.push(i);return t})}},S.pseudos.nth=S.pseudos.eq;for(_ in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})S.pseudos[_]=s(_);for(_ in{submit:!0,reset:!0})S.pseudos[_]=l(_);return d.prototype=S.filters=S.pseudos,S.setFilters=new d,k=e.tokenize=function(t,n){var i,r,o,a,s,l,c,u=$[t+" "];if(u)return n?0:u.slice(0);for(s=t,l=[],c=S.preFilter;s;){i&&!(r=lt.exec(s))||(r&&(s=s.slice(r[0].length)||s),l.push(o=[])),i=!1,(r=ct.exec(s))&&(i=r.shift(),o.push({value:i,type:r[0].replace(st," ")}),s=s.slice(i.length));for(a in S.filter)!(r=ft[a].exec(s))||c[a]&&!(r=c[a](r))||(i=r.shift(),o.push({value:i,type:a,matches:r}),s=s.slice(i.length));if(!i)break}return n?s.length:s?e.error(t):$(t,l).slice(0)},A=e.compile=function(t,e){var n,i=[],r=[],o=W[t+" "];if(!o){for(e||(e=k(t)),n=e.length;n--;)o=x(e[n]),o[F]?i.push(o):r.push(o);o=W(t,b(r,i)),o.selector=t}return o},M=e.select=function(t,e,n,i){var r,o,a,s,l,c="function"==typeof t&&t,u=!i&&k(t=c.selector||t);if(n=n||[],1===u.length){if(o=u[0]=u[0].slice(0),o.length>2&&"ID"===(a=o[0]).type&&9===e.nodeType&&D&&S.relative[o[1].type]){if(e=(S.find.ID(a.matches[0].replace(xt,bt),e)||[])[0],!e)return n;c&&(e=e.parentNode),t=t.slice(o.shift().value.length)}for(r=ft.needsContext.test(t)?0:o.length;r--&&(a=o[r],!S.relative[s=a.type]);)if((l=S.find[s])&&(i=l(a.matches[0].replace(xt,bt),yt.test(o[0].type)&&h(e.parentNode)||e))){if(o.splice(r,1),t=i.length&&f(o),!t)return K.apply(n,i),n;break}}return(c||A(t,u))(i,e,!D,n,!e||yt.test(t)&&h(e.parentNode)||e),n},w.sortStable=F.split("").sort(U).join("")===F,w.detectDuplicates=!!P,N(),w.sortDetached=r(function(t){return 1&t.compareDocumentPosition(O.createElement("fieldset"))}),r(function(t){return t.innerHTML="<a href='#'></a>","#"===t.firstChild.getAttribute("href")})||o("type|href|height|width",function(t,e,n){if(!n)return t.getAttribute(e,"type"===e.toLowerCase()?1:2)}),w.attributes&&r(function(t){return t.innerHTML="<input/>",t.firstChild.setAttribute("value",""),""===t.firstChild.getAttribute("value")})||o("value",function(t,e,n){if(!n&&"input"===t.nodeName.toLowerCase())return t.defaultValue}),r(function(t){return null==t.getAttribute("disabled")})||o(et,function(t,e,n){var i;if(!n)return t[e]===!0?e.toLowerCase():(i=t.getAttributeNode(e))&&i.specified?i.value:null}),e}(t);gt.find=bt,gt.expr=bt.selectors,gt.expr[":"]=gt.expr.pseudos,gt.uniqueSort=gt.unique=bt.uniqueSort,gt.text=bt.getText,gt.isXMLDoc=bt.isXML,gt.contains=bt.contains,gt.escapeSelector=bt.escape;var _t=function(t,e,n){for(var i=[],r=void 0!==n;(t=t[e])&&9!==t.nodeType;)if(1===t.nodeType){if(r&&gt(t).is(n))break;i.push(t)}return i},wt=function(t,e){for(var n=[];t;t=t.nextSibling)1===t.nodeType&&t!==e&&n.push(t);return n},St=gt.expr.match.needsContext,Ct=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,Tt=/^.[^:#\[\.,]*$/;gt.filter=function(t,e,n){var i=e[0];return n&&(t=":not("+t+")"),1===e.length&&1===i.nodeType?gt.find.matchesSelector(i,t)?[i]:[]:gt.find.matches(t,gt.grep(e,function(t){return 1===t.nodeType}))},gt.fn.extend({find:function(t){var e,n,i=this.length,r=this;if("string"!=typeof t)return this.pushStack(gt(t).filter(function(){for(e=0;e<i;e++)if(gt.contains(r[e],this))return!0}));for(n=this.pushStack([]),e=0;e<i;e++)gt.find(t,r[e],n);return i>1?gt.uniqueSort(n):n},filter:function(t){return this.pushStack(o(this,t||[],!1))},not:function(t){return this.pushStack(o(this,t||[],!0))},is:function(t){return!!o(this,"string"==typeof t&&St.test(t)?gt(t):t||[],!1).length}});var kt,At=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,Mt=gt.fn.init=function(t,e,n){var i,r;if(!t)return this;if(n=n||kt,"string"==typeof t){if(i="<"===t[0]&&">"===t[t.length-1]&&t.length>=3?[null,t,null]:At.exec(t),!i||!i[1]&&e)return!e||e.jquery?(e||n).find(t):this.constructor(e).find(t);if(i[1]){if(e=e instanceof gt?e[0]:e,gt.merge(this,gt.parseHTML(i[1],e&&e.nodeType?e.ownerDocument||e:nt,!0)),Ct.test(i[1])&&gt.isPlainObject(e))for(i in e)gt.isFunction(this[i])?this[i](e[i]):this.attr(i,e[i]);return this}return r=nt.getElementById(i[2]),r&&(this[0]=r,this.length=1),this}return t.nodeType?(this[0]=t,this.length=1,this):gt.isFunction(t)?void 0!==n.ready?n.ready(t):t(gt):gt.makeArray(t,this)};Mt.prototype=gt.fn,kt=gt(nt);var Lt=/^(?:parents|prev(?:Until|All))/,Et={children:!0,contents:!0,next:!0,prev:!0};gt.fn.extend({has:function(t){var e=gt(t,this),n=e.length;return this.filter(function(){for(var t=0;t<n;t++)if(gt.contains(this,e[t]))return!0})},closest:function(t,e){var n,i=0,r=this.length,o=[],a="string"!=typeof t&&gt(t);if(!St.test(t))for(;i<r;i++)for(n=this[i];n&&n!==e;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&gt.find.matchesSelector(n,t))){o.push(n);break}return this.pushStack(o.length>1?gt.uniqueSort(o):o)},index:function(t){return t?"string"==typeof t?st.call(gt(t),this[0]):st.call(this,t.jquery?t[0]:t):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(t,e){return this.pushStack(gt.uniqueSort(gt.merge(this.get(),gt(t,e))))},addBack:function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}}),gt.each({parent:function(t){var e=t.parentNode;return e&&11!==e.nodeType?e:null},parents:function(t){return _t(t,"parentNode")},parentsUntil:function(t,e,n){return _t(t,"parentNode",n)},next:function(t){return a(t,"nextSibling")},prev:function(t){return a(t,"previousSibling")},nextAll:function(t){return _t(t,"nextSibling")},prevAll:function(t){return _t(t,"previousSibling")},nextUntil:function(t,e,n){return _t(t,"nextSibling",n)},prevUntil:function(t,e,n){return _t(t,"previousSibling",n)},siblings:function(t){return wt((t.parentNode||{}).firstChild,t)},children:function(t){return wt(t.firstChild)},contents:function(t){return r(t,"iframe")?t.contentDocument:(r(t,"template")&&(t=t.content||t),gt.merge([],t.childNodes))}},function(t,e){gt.fn[t]=function(n,i){var r=gt.map(this,e,n);return"Until"!==t.slice(-5)&&(i=n),i&&"string"==typeof i&&(r=gt.filter(i,r)),this.length>1&&(Et[t]||gt.uniqueSort(r),Lt.test(t)&&r.reverse()),this.pushStack(r)}});var Pt=/[^\x20\t\r\n\f]+/g;gt.Callbacks=function(t){t="string"==typeof t?s(t):gt.extend({},t);var e,n,i,r,o=[],a=[],l=-1,c=function(){for(r=r||t.once,i=e=!0;a.length;l=-1)for(n=a.shift();++l<o.length;)o[l].apply(n[0],n[1])===!1&&t.stopOnFalse&&(l=o.length,n=!1);t.memory||(n=!1),e=!1,r&&(o=n?[]:"")},u={add:function(){return o&&(n&&!e&&(l=o.length-1,a.push(n)),function e(n){gt.each(n,function(n,i){gt.isFunction(i)?t.unique&&u.has(i)||o.push(i):i&&i.length&&"string"!==gt.type(i)&&e(i)})}(arguments),n&&!e&&c()),this},remove:function(){return gt.each(arguments,function(t,e){for(var n;(n=gt.inArray(e,o,n))>-1;)o.splice(n,1),n<=l&&l--}),this},has:function(t){return t?gt.inArray(t,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return r=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return r=a=[],n||e||(o=n=""),this},locked:function(){return!!r},fireWith:function(t,n){return r||(n=n||[],n=[t,n.slice?n.slice():n],a.push(n),e||c()),this},fire:function(){return u.fireWith(this,arguments),this},fired:function(){return!!i}};return u},gt.extend({Deferred:function(e){var n=[["notify","progress",gt.Callbacks("memory"),gt.Callbacks("memory"),2],["resolve","done",gt.Callbacks("once memory"),gt.Callbacks("once memory"),0,"resolved"],["reject","fail",gt.Callbacks("once memory"),gt.Callbacks("once memory"),1,"rejected"]],i="pending",r={state:function(){return i},always:function(){return o.done(arguments).fail(arguments),this},catch:function(t){return r.then(null,t)},pipe:function(){var t=arguments;return gt.Deferred(function(e){gt.each(n,function(n,i){var r=gt.isFunction(t[i[4]])&&t[i[4]];o[i[1]](function(){var t=r&&r.apply(this,arguments);t&&gt.isFunction(t.promise)?t.promise().progress(e.notify).done(e.resolve).fail(e.reject):e[i[0]+"With"](this,r?[t]:arguments)})}),t=null}).promise()},then:function(e,i,r){function o(e,n,i,r){return function(){var s=this,u=arguments,h=function(){var t,h;if(!(e<a)){if(t=i.apply(s,u),t===n.promise())throw new TypeError("Thenable self-resolution");h=t&&("object"==typeof t||"function"==typeof t)&&t.then,gt.isFunction(h)?r?h.call(t,o(a,n,l,r),o(a,n,c,r)):(a++,h.call(t,o(a,n,l,r),o(a,n,c,r),o(a,n,l,n.notifyWith))):(i!==l&&(s=void 0,u=[t]),(r||n.resolveWith)(s,u))}},d=r?h:function(){try{h()}catch(t){gt.Deferred.exceptionHook&&gt.Deferred.exceptionHook(t,d.stackTrace),e+1>=a&&(i!==c&&(s=void 0,u=[t]),n.rejectWith(s,u))}};e?d():(gt.Deferred.getStackHook&&(d.stackTrace=gt.Deferred.getStackHook()),t.setTimeout(d))}}var a=0;return gt.Deferred(function(t){n[0][3].add(o(0,t,gt.isFunction(r)?r:l,t.notifyWith)),n[1][3].add(o(0,t,gt.isFunction(e)?e:l)),n[2][3].add(o(0,t,gt.isFunction(i)?i:c))}).promise()},promise:function(t){return null!=t?gt.extend(t,r):r}},o={};return gt.each(n,function(t,e){var a=e[2],s=e[5];r[e[1]]=a.add,s&&a.add(function(){i=s},n[3-t][2].disable,n[0][2].lock),a.add(e[3].fire),o[e[0]]=function(){return o[e[0]+"With"](this===o?void 0:this,arguments),this},o[e[0]+"With"]=a.fireWith}),r.promise(o),e&&e.call(o,o),o},when:function(t){var e=arguments.length,n=e,i=Array(n),r=rt.call(arguments),o=gt.Deferred(),a=function(t){return function(n){i[t]=this,r[t]=arguments.length>1?rt.call(arguments):n,--e||o.resolveWith(i,r)}};if(e<=1&&(u(t,o.done(a(n)).resolve,o.reject,!e),"pending"===o.state()||gt.isFunction(r[n]&&r[n].then)))return o.then();for(;n--;)u(r[n],a(n),o.reject);return o.promise()}});var Nt=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;gt.Deferred.exceptionHook=function(e,n){t.console&&t.console.warn&&e&&Nt.test(e.name)&&t.console.warn("jQuery.Deferred exception: "+e.message,e.stack,n)},gt.readyException=function(e){t.setTimeout(function(){throw e})};var Ot=gt.Deferred();gt.fn.ready=function(t){return Ot.then(t).catch(function(t){gt.readyException(t)}),this},gt.extend({isReady:!1,readyWait:1,ready:function(t){(t===!0?--gt.readyWait:gt.isReady)||(gt.isReady=!0,t!==!0&&--gt.readyWait>0||Ot.resolveWith(nt,[gt]))}}),gt.ready.then=Ot.then,"complete"===nt.readyState||"loading"!==nt.readyState&&!nt.documentElement.doScroll?t.setTimeout(gt.ready):(nt.addEventListener("DOMContentLoaded",h),t.addEventListener("load",h));var Rt=function(t,e,n,i,r,o,a){var s=0,l=t.length,c=null==n;if("object"===gt.type(n)){r=!0;for(s in n)Rt(t,e,s,n[s],!0,o,a)}else if(void 0!==i&&(r=!0,gt.isFunction(i)||(a=!0),c&&(a?(e.call(t,i),e=null):(c=e,e=function(t,e,n){return c.call(gt(t),n)})),e))for(;s<l;s++)e(t[s],n,a?i:i.call(t[s],s,e(t[s],n)));return r?t:c?e.call(t):l?e(t[0],n):o},Dt=function(t){return 1===t.nodeType||9===t.nodeType||!+t.nodeType};d.uid=1,d.prototype={cache:function(t){var e=t[this.expando];return e||(e={},Dt(t)&&(t.nodeType?t[this.expando]=e:Object.defineProperty(t,this.expando,{value:e,configurable:!0}))),e},set:function(t,e,n){var i,r=this.cache(t);if("string"==typeof e)r[gt.camelCase(e)]=n;else for(i in e)r[gt.camelCase(i)]=e[i];return r},get:function(t,e){return void 0===e?this.cache(t):t[this.expando]&&t[this.expando][gt.camelCase(e)]},access:function(t,e,n){return void 0===e||e&&"string"==typeof e&&void 0===n?this.get(t,e):(this.set(t,e,n),void 0!==n?n:e)},remove:function(t,e){var n,i=t[this.expando];if(void 0!==i){if(void 0!==e){Array.isArray(e)?e=e.map(gt.camelCase):(e=gt.camelCase(e),e=e in i?[e]:e.match(Pt)||[]),n=e.length;for(;n--;)delete i[e[n]]}(void 0===e||gt.isEmptyObject(i))&&(t.nodeType?t[this.expando]=void 0:delete t[this.expando])}},hasData:function(t){var e=t[this.expando];return void 0!==e&&!gt.isEmptyObject(e)}};var It=new d,jt=new d,Vt=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Ht=/[A-Z]/g;gt.extend({hasData:function(t){return jt.hasData(t)||It.hasData(t)},data:function(t,e,n){return jt.access(t,e,n)},removeData:function(t,e){jt.remove(t,e)},_data:function(t,e,n){return It.access(t,e,n)},_removeData:function(t,e){It.remove(t,e)}}),gt.fn.extend({data:function(t,e){var n,i,r,o=this[0],a=o&&o.attributes;if(void 0===t){if(this.length&&(r=jt.get(o),1===o.nodeType&&!It.get(o,"hasDataAttrs"))){for(n=a.length;n--;)a[n]&&(i=a[n].name,0===i.indexOf("data-")&&(i=gt.camelCase(i.slice(5)),p(o,i,r[i])));It.set(o,"hasDataAttrs",!0)}return r}return"object"==typeof t?this.each(function(){jt.set(this,t)}):Rt(this,function(e){var n;if(o&&void 0===e){if(n=jt.get(o,t),void 0!==n)return n;if(n=p(o,t),void 0!==n)return n}else this.each(function(){jt.set(this,t,e)})},null,e,arguments.length>1,null,!0)},removeData:function(t){return this.each(function(){jt.remove(this,t)})}}),gt.extend({queue:function(t,e,n){var i;if(t)return e=(e||"fx")+"queue",i=It.get(t,e),n&&(!i||Array.isArray(n)?i=It.access(t,e,gt.makeArray(n)):i.push(n)),i||[]},dequeue:function(t,e){e=e||"fx";var n=gt.queue(t,e),i=n.length,r=n.shift(),o=gt._queueHooks(t,e),a=function(){gt.dequeue(t,e)};"inprogress"===r&&(r=n.shift(),i--),r&&("fx"===e&&n.unshift("inprogress"),delete o.stop,r.call(t,a,o)),!i&&o&&o.empty.fire()},_queueHooks:function(t,e){var n=e+"queueHooks";return It.get(t,n)||It.access(t,n,{empty:gt.Callbacks("once memory").add(function(){It.remove(t,[e+"queue",n])})})}}),gt.fn.extend({queue:function(t,e){var n=2;return"string"!=typeof t&&(e=t,t="fx",n--),arguments.length<n?gt.queue(this[0],t):void 0===e?this:this.each(function(){var n=gt.queue(this,t,e);gt._queueHooks(this,t),"fx"===t&&"inprogress"!==n[0]&&gt.dequeue(this,t)})},dequeue:function(t){return this.each(function(){gt.dequeue(this,t)})},clearQueue:function(t){return this.queue(t||"fx",[])},promise:function(t,e){var n,i=1,r=gt.Deferred(),o=this,a=this.length,s=function(){--i||r.resolveWith(o,[o])};for("string"!=typeof t&&(e=t,t=void 0),t=t||"fx";a--;)n=It.get(o[a],t+"queueHooks"),n&&n.empty&&(i++,n.empty.add(s));return s(),r.promise(e)}});var Ft=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,zt=new RegExp("^(?:([+-])=|)("+Ft+")([a-z%]*)$","i"),qt=["Top","Right","Bottom","Left"],Gt=function(t,e){return t=e||t,"none"===t.style.display||""===t.style.display&&gt.contains(t.ownerDocument,t)&&"none"===gt.css(t,"display")},Bt=function(t,e,n,i){var r,o,a={};for(o in e)a[o]=t.style[o],t.style[o]=e[o];r=n.apply(t,i||[]);for(o in e)t.style[o]=a[o];return r},$t={};gt.fn.extend({show:function(){return v(this,!0)},hide:function(){return v(this)},toggle:function(t){return"boolean"==typeof t?t?this.show():this.hide():this.each(function(){Gt(this)?gt(this).show():gt(this).hide()})}});var Wt=/^(?:checkbox|radio)$/i,Ut=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,Xt=/^$|\/(?:java|ecma)script/i,Yt={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};Yt.optgroup=Yt.option,Yt.tbody=Yt.tfoot=Yt.colgroup=Yt.caption=Yt.thead,Yt.th=Yt.td;var Qt=/<|&#?\w+;/;!function(){var t=nt.createDocumentFragment(),e=t.appendChild(nt.createElement("div")),n=nt.createElement("input");n.setAttribute("type","radio"),n.setAttribute("checked","checked"),n.setAttribute("name","t"),e.appendChild(n),ft.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="<textarea>x</textarea>",ft.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var Zt=nt.documentElement,Kt=/^key/,Jt=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,te=/^([^.]*)(?:\.(.+)|)/;gt.event={global:{},add:function(t,e,n,i,r){var o,a,s,l,c,u,h,d,f,p,g,m=It.get(t);if(m)for(n.handler&&(o=n,n=o.handler,r=o.selector),r&&gt.find.matchesSelector(Zt,r),n.guid||(n.guid=gt.guid++),(l=m.events)||(l=m.events={}),(a=m.handle)||(a=m.handle=function(e){return"undefined"!=typeof gt&&gt.event.triggered!==e.type?gt.event.dispatch.apply(t,arguments):void 0}),e=(e||"").match(Pt)||[""],c=e.length;c--;)s=te.exec(e[c])||[],f=g=s[1],p=(s[2]||"").split(".").sort(),f&&(h=gt.event.special[f]||{},f=(r?h.delegateType:h.bindType)||f,h=gt.event.special[f]||{},u=gt.extend({type:f,origType:g,data:i,handler:n,guid:n.guid,selector:r,needsContext:r&&gt.expr.match.needsContext.test(r),namespace:p.join(".")},o),(d=l[f])||(d=l[f]=[],d.delegateCount=0,h.setup&&h.setup.call(t,i,p,a)!==!1||t.addEventListener&&t.addEventListener(f,a)),h.add&&(h.add.call(t,u),u.handler.guid||(u.handler.guid=n.guid)),r?d.splice(d.delegateCount++,0,u):d.push(u),gt.event.global[f]=!0)},remove:function(t,e,n,i,r){var o,a,s,l,c,u,h,d,f,p,g,m=It.hasData(t)&&It.get(t);if(m&&(l=m.events)){for(e=(e||"").match(Pt)||[""],c=e.length;c--;)if(s=te.exec(e[c])||[],f=g=s[1],p=(s[2]||"").split(".").sort(),f){for(h=gt.event.special[f]||{},f=(i?h.delegateType:h.bindType)||f,d=l[f]||[],s=s[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=d.length;o--;)u=d[o],!r&&g!==u.origType||n&&n.guid!==u.guid||s&&!s.test(u.namespace)||i&&i!==u.selector&&("**"!==i||!u.selector)||(d.splice(o,1),u.selector&&d.delegateCount--,h.remove&&h.remove.call(t,u));a&&!d.length&&(h.teardown&&h.teardown.call(t,p,m.handle)!==!1||gt.removeEvent(t,f,m.handle),delete l[f])}else for(f in l)gt.event.remove(t,f+e[c],n,i,!0);gt.isEmptyObject(l)&&It.remove(t,"handle events")}},dispatch:function(t){var e,n,i,r,o,a,s=gt.event.fix(t),l=new Array(arguments.length),c=(It.get(this,"events")||{})[s.type]||[],u=gt.event.special[s.type]||{};for(l[0]=s,e=1;e<arguments.length;e++)l[e]=arguments[e];if(s.delegateTarget=this,!u.preDispatch||u.preDispatch.call(this,s)!==!1){for(a=gt.event.handlers.call(this,s,c),e=0;(r=a[e++])&&!s.isPropagationStopped();)for(s.currentTarget=r.elem,n=0;(o=r.handlers[n++])&&!s.isImmediatePropagationStopped();)s.rnamespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,i=((gt.event.special[o.origType]||{}).handle||o.handler).apply(r.elem,l),void 0!==i&&(s.result=i)===!1&&(s.preventDefault(),s.stopPropagation()));return u.postDispatch&&u.postDispatch.call(this,s),s.result}},handlers:function(t,e){var n,i,r,o,a,s=[],l=e.delegateCount,c=t.target;if(l&&c.nodeType&&!("click"===t.type&&t.button>=1))for(;c!==this;c=c.parentNode||this)if(1===c.nodeType&&("click"!==t.type||c.disabled!==!0)){for(o=[],a={},n=0;n<l;n++)i=e[n],r=i.selector+" ",void 0===a[r]&&(a[r]=i.needsContext?gt(r,this).index(c)>-1:gt.find(r,this,null,[c]).length),a[r]&&o.push(i);o.length&&s.push({elem:c,handlers:o})}return c=this,l<e.length&&s.push({elem:c,handlers:e.slice(l)}),s},addProp:function(t,e){Object.defineProperty(gt.Event.prototype,t,{enumerable:!0,configurable:!0,get:gt.isFunction(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(t){return t[gt.expando]?t:new gt.Event(t)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==S()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===S()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&r(this,"input"))return this.click(),!1},_default:function(t){return r(t.target,"a")}},beforeunload:{postDispatch:function(t){void 0!==t.result&&t.originalEvent&&(t.originalEvent.returnValue=t.result)}}}},gt.removeEvent=function(t,e,n){t.removeEventListener&&t.removeEventListener(e,n)},gt.Event=function(t,e){return this instanceof gt.Event?(t&&t.type?(this.originalEvent=t,this.type=t.type,this.isDefaultPrevented=t.defaultPrevented||void 0===t.defaultPrevented&&t.returnValue===!1?_:w,this.target=t.target&&3===t.target.nodeType?t.target.parentNode:t.target,this.currentTarget=t.currentTarget,this.relatedTarget=t.relatedTarget):this.type=t,e&&gt.extend(this,e),this.timeStamp=t&&t.timeStamp||gt.now(),void(this[gt.expando]=!0)):new gt.Event(t,e)},gt.Event.prototype={constructor:gt.Event,isDefaultPrevented:w,isPropagationStopped:w,isImmediatePropagationStopped:w,isSimulated:!1,preventDefault:function(){var t=this.originalEvent;this.isDefaultPrevented=_,t&&!this.isSimulated&&t.preventDefault()},stopPropagation:function(){var t=this.originalEvent;this.isPropagationStopped=_,t&&!this.isSimulated&&t.stopPropagation()},stopImmediatePropagation:function(){var t=this.originalEvent;this.isImmediatePropagationStopped=_,t&&!this.isSimulated&&t.stopImmediatePropagation(),this.stopPropagation()}},gt.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,char:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(t){var e=t.button;return null==t.which&&Kt.test(t.type)?null!=t.charCode?t.charCode:t.keyCode:!t.which&&void 0!==e&&Jt.test(t.type)?1&e?1:2&e?3:4&e?2:0:t.which}},gt.event.addProp),gt.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(t,e){gt.event.special[t]={delegateType:e,bindType:e,handle:function(t){var n,i=this,r=t.relatedTarget,o=t.handleObj;return r&&(r===i||gt.contains(i,r))||(t.type=o.origType,n=o.handler.apply(this,arguments),t.type=e),n}}}),gt.fn.extend({on:function(t,e,n,i){return C(this,t,e,n,i)},one:function(t,e,n,i){return C(this,t,e,n,i,1)},off:function(t,e,n){var i,r;if(t&&t.preventDefault&&t.handleObj)return i=t.handleObj,gt(t.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof t){for(r in t)this.off(r,e,t[r]);return this}return e!==!1&&"function"!=typeof e||(n=e,e=void 0),n===!1&&(n=w),this.each(function(){gt.event.remove(this,t,n,e)})}});var ee=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,ne=/<script|<style|<link/i,ie=/checked\s*(?:[^=]|=\s*.checked.)/i,re=/^true\/(.*)/,oe=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;gt.extend({htmlPrefilter:function(t){return t.replace(ee,"<$1></$2>")},clone:function(t,e,n){var i,r,o,a,s=t.cloneNode(!0),l=gt.contains(t.ownerDocument,t);if(!(ft.noCloneChecked||1!==t.nodeType&&11!==t.nodeType||gt.isXMLDoc(t)))for(a=y(s),o=y(t),i=0,r=o.length;i<r;i++)L(o[i],a[i]);if(e)if(n)for(o=o||y(t),a=a||y(s),i=0,r=o.length;i<r;i++)M(o[i],a[i]);else M(t,s);return a=y(s,"script"),a.length>0&&x(a,!l&&y(t,"script")),s},cleanData:function(t){for(var e,n,i,r=gt.event.special,o=0;void 0!==(n=t[o]);o++)if(Dt(n)){if(e=n[It.expando]){if(e.events)for(i in e.events)r[i]?gt.event.remove(n,i):gt.removeEvent(n,i,e.handle);n[It.expando]=void 0}n[jt.expando]&&(n[jt.expando]=void 0)}}}),gt.fn.extend({detach:function(t){return P(this,t,!0)},remove:function(t){return P(this,t)},text:function(t){return Rt(this,function(t){return void 0===t?gt.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=t)})},null,t,arguments.length)},append:function(){return E(this,arguments,function(t){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var e=T(this,t);e.appendChild(t)}})},prepend:function(){return E(this,arguments,function(t){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var e=T(this,t);e.insertBefore(t,e.firstChild)}})},before:function(){return E(this,arguments,function(t){this.parentNode&&this.parentNode.insertBefore(t,this)})},after:function(){return E(this,arguments,function(t){this.parentNode&&this.parentNode.insertBefore(t,this.nextSibling)})},empty:function(){for(var t,e=0;null!=(t=this[e]);e++)1===t.nodeType&&(gt.cleanData(y(t,!1)),t.textContent="");return this},clone:function(t,e){return t=null!=t&&t,e=null==e?t:e,this.map(function(){return gt.clone(this,t,e)})},html:function(t){return Rt(this,function(t){var e=this[0]||{},n=0,i=this.length;if(void 0===t&&1===e.nodeType)return e.innerHTML;if("string"==typeof t&&!ne.test(t)&&!Yt[(Ut.exec(t)||["",""])[1].toLowerCase()]){t=gt.htmlPrefilter(t);try{for(;n<i;n++)e=this[n]||{},1===e.nodeType&&(gt.cleanData(y(e,!1)),e.innerHTML=t);e=0}catch(t){}}e&&this.empty().append(t)},null,t,arguments.length)},replaceWith:function(){var t=[];return E(this,arguments,function(e){var n=this.parentNode;gt.inArray(this,t)<0&&(gt.cleanData(y(this)),n&&n.replaceChild(e,this))},t)}}),gt.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(t,e){gt.fn[t]=function(t){for(var n,i=[],r=gt(t),o=r.length-1,a=0;a<=o;a++)n=a===o?this:this.clone(!0),gt(r[a])[e](n),at.apply(i,n.get());return this.pushStack(i)}});var ae=/^margin/,se=new RegExp("^("+Ft+")(?!px)[a-z%]+$","i"),le=function(e){var n=e.ownerDocument.defaultView;return n&&n.opener||(n=t),n.getComputedStyle(e)};!function(){function e(){if(s){s.style.cssText="box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",s.innerHTML="",Zt.appendChild(a);var e=t.getComputedStyle(s);n="1%"!==e.top,o="2px"===e.marginLeft,i="4px"===e.width,s.style.marginRight="50%",r="4px"===e.marginRight,Zt.removeChild(a),s=null}}var n,i,r,o,a=nt.createElement("div"),s=nt.createElement("div");s.style&&(s.style.backgroundClip="content-box",s.cloneNode(!0).style.backgroundClip="",ft.clearCloneStyle="content-box"===s.style.backgroundClip,a.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",a.appendChild(s),gt.extend(ft,{pixelPosition:function(){return e(),n},boxSizingReliable:function(){return e(),i},pixelMarginRight:function(){return e(),r},reliableMarginLeft:function(){return e(),o}}))}();var ce=/^(none|table(?!-c[ea]).+)/,ue=/^--/,he={position:"absolute",visibility:"hidden",display:"block"},de={letterSpacing:"0",fontWeight:"400"},fe=["Webkit","Moz","ms"],pe=nt.createElement("div").style;gt.extend({cssHooks:{opacity:{get:function(t,e){if(e){var n=N(t,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{float:"cssFloat"},style:function(t,e,n,i){if(t&&3!==t.nodeType&&8!==t.nodeType&&t.style){var r,o,a,s=gt.camelCase(e),l=ue.test(e),c=t.style;return l||(e=D(s)),a=gt.cssHooks[e]||gt.cssHooks[s],void 0===n?a&&"get"in a&&void 0!==(r=a.get(t,!1,i))?r:c[e]:(o=typeof n,"string"===o&&(r=zt.exec(n))&&r[1]&&(n=g(t,e,r),o="number"),void(null!=n&&n===n&&("number"===o&&(n+=r&&r[3]||(gt.cssNumber[s]?"":"px")),ft.clearCloneStyle||""!==n||0!==e.indexOf("background")||(c[e]="inherit"),a&&"set"in a&&void 0===(n=a.set(t,n,i))||(l?c.setProperty(e,n):c[e]=n))))}},css:function(t,e,n,i){var r,o,a,s=gt.camelCase(e),l=ue.test(e);return l||(e=D(s)),a=gt.cssHooks[e]||gt.cssHooks[s],a&&"get"in a&&(r=a.get(t,!0,n)),void 0===r&&(r=N(t,e,i)),"normal"===r&&e in de&&(r=de[e]),""===n||n?(o=parseFloat(r),n===!0||isFinite(o)?o||0:r):r}}),gt.each(["height","width"],function(t,e){gt.cssHooks[e]={get:function(t,n,i){if(n)return!ce.test(gt.css(t,"display"))||t.getClientRects().length&&t.getBoundingClientRect().width?V(t,e,i):Bt(t,he,function(){return V(t,e,i)})},set:function(t,n,i){var r,o=i&&le(t),a=i&&j(t,e,i,"border-box"===gt.css(t,"boxSizing",!1,o),o);return a&&(r=zt.exec(n))&&"px"!==(r[3]||"px")&&(t.style[e]=n,n=gt.css(t,e)),I(t,n,a)}}}),gt.cssHooks.marginLeft=O(ft.reliableMarginLeft,function(t,e){if(e)return(parseFloat(N(t,"marginLeft"))||t.getBoundingClientRect().left-Bt(t,{marginLeft:0},function(){return t.getBoundingClientRect().left}))+"px"}),gt.each({margin:"",padding:"",border:"Width"},function(t,e){gt.cssHooks[t+e]={expand:function(n){for(var i=0,r={},o="string"==typeof n?n.split(" "):[n];i<4;i++)r[t+qt[i]+e]=o[i]||o[i-2]||o[0];return r}},ae.test(t)||(gt.cssHooks[t+e].set=I)}),gt.fn.extend({css:function(t,e){return Rt(this,function(t,e,n){var i,r,o={},a=0;if(Array.isArray(e)){for(i=le(t),r=e.length;a<r;a++)o[e[a]]=gt.css(t,e[a],!1,i);return o}return void 0!==n?gt.style(t,e,n):gt.css(t,e)},t,e,arguments.length>1)}}),gt.Tween=H,H.prototype={constructor:H,init:function(t,e,n,i,r,o){this.elem=t,this.prop=n,this.easing=r||gt.easing._default,this.options=e,this.start=this.now=this.cur(),this.end=i,this.unit=o||(gt.cssNumber[n]?"":"px")},cur:function(){var t=H.propHooks[this.prop];return t&&t.get?t.get(this):H.propHooks._default.get(this)},run:function(t){var e,n=H.propHooks[this.prop];return this.options.duration?this.pos=e=gt.easing[this.easing](t,this.options.duration*t,0,1,this.options.duration):this.pos=e=t,this.now=(this.end-this.start)*e+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):H.propHooks._default.set(this),this}},H.prototype.init.prototype=H.prototype,H.propHooks={_default:{get:function(t){var e;return 1!==t.elem.nodeType||null!=t.elem[t.prop]&&null==t.elem.style[t.prop]?t.elem[t.prop]:(e=gt.css(t.elem,t.prop,""),e&&"auto"!==e?e:0)},set:function(t){gt.fx.step[t.prop]?gt.fx.step[t.prop](t):1!==t.elem.nodeType||null==t.elem.style[gt.cssProps[t.prop]]&&!gt.cssHooks[t.prop]?t.elem[t.prop]=t.now:gt.style(t.elem,t.prop,t.now+t.unit)}}},H.propHooks.scrollTop=H.propHooks.scrollLeft={set:function(t){t.elem.nodeType&&t.elem.parentNode&&(t.elem[t.prop]=t.now)}},gt.easing={linear:function(t){return t},swing:function(t){return.5-Math.cos(t*Math.PI)/2},_default:"swing"},gt.fx=H.prototype.init,gt.fx.step={};var ge,me,ve=/^(?:toggle|show|hide)$/,ye=/queueHooks$/;gt.Animation=gt.extend(W,{tweeners:{"*":[function(t,e){var n=this.createTween(t,e);return g(n.elem,t,zt.exec(e),n),n}]},tweener:function(t,e){gt.isFunction(t)?(e=t,t=["*"]):t=t.match(Pt);for(var n,i=0,r=t.length;i<r;i++)n=t[i],W.tweeners[n]=W.tweeners[n]||[],W.tweeners[n].unshift(e)},prefilters:[B],prefilter:function(t,e){e?W.prefilters.unshift(t):W.prefilters.push(t)}}),gt.speed=function(t,e,n){var i=t&&"object"==typeof t?gt.extend({},t):{complete:n||!n&&e||gt.isFunction(t)&&t,duration:t,easing:n&&e||e&&!gt.isFunction(e)&&e};return gt.fx.off?i.duration=0:"number"!=typeof i.duration&&(i.duration in gt.fx.speeds?i.duration=gt.fx.speeds[i.duration]:i.duration=gt.fx.speeds._default),null!=i.queue&&i.queue!==!0||(i.queue="fx"),i.old=i.complete,i.complete=function(){gt.isFunction(i.old)&&i.old.call(this),i.queue&&gt.dequeue(this,i.queue)},i},gt.fn.extend({fadeTo:function(t,e,n,i){return this.filter(Gt).css("opacity",0).show().end().animate({opacity:e},t,n,i)},animate:function(t,e,n,i){var r=gt.isEmptyObject(t),o=gt.speed(e,n,i),a=function(){var e=W(this,gt.extend({},t),o);(r||It.get(this,"finish"))&&e.stop(!0)};return a.finish=a,r||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(t,e,n){var i=function(t){var e=t.stop;delete t.stop,e(n)};return"string"!=typeof t&&(n=e,e=t,t=void 0),e&&t!==!1&&this.queue(t||"fx",[]),this.each(function(){var e=!0,r=null!=t&&t+"queueHooks",o=gt.timers,a=It.get(this);if(r)a[r]&&a[r].stop&&i(a[r]);else for(r in a)a[r]&&a[r].stop&&ye.test(r)&&i(a[r]);
+for(r=o.length;r--;)o[r].elem!==this||null!=t&&o[r].queue!==t||(o[r].anim.stop(n),e=!1,o.splice(r,1));!e&&n||gt.dequeue(this,t)})},finish:function(t){return t!==!1&&(t=t||"fx"),this.each(function(){var e,n=It.get(this),i=n[t+"queue"],r=n[t+"queueHooks"],o=gt.timers,a=i?i.length:0;for(n.finish=!0,gt.queue(this,t,[]),r&&r.stop&&r.stop.call(this,!0),e=o.length;e--;)o[e].elem===this&&o[e].queue===t&&(o[e].anim.stop(!0),o.splice(e,1));for(e=0;e<a;e++)i[e]&&i[e].finish&&i[e].finish.call(this);delete n.finish})}}),gt.each(["toggle","show","hide"],function(t,e){var n=gt.fn[e];gt.fn[e]=function(t,i,r){return null==t||"boolean"==typeof t?n.apply(this,arguments):this.animate(q(e,!0),t,i,r)}}),gt.each({slideDown:q("show"),slideUp:q("hide"),slideToggle:q("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(t,e){gt.fn[t]=function(t,n,i){return this.animate(e,t,n,i)}}),gt.timers=[],gt.fx.tick=function(){var t,e=0,n=gt.timers;for(ge=gt.now();e<n.length;e++)t=n[e],t()||n[e]!==t||n.splice(e--,1);n.length||gt.fx.stop(),ge=void 0},gt.fx.timer=function(t){gt.timers.push(t),gt.fx.start()},gt.fx.interval=13,gt.fx.start=function(){me||(me=!0,F())},gt.fx.stop=function(){me=null},gt.fx.speeds={slow:600,fast:200,_default:400},gt.fn.delay=function(e,n){return e=gt.fx?gt.fx.speeds[e]||e:e,n=n||"fx",this.queue(n,function(n,i){var r=t.setTimeout(n,e);i.stop=function(){t.clearTimeout(r)}})},function(){var t=nt.createElement("input"),e=nt.createElement("select"),n=e.appendChild(nt.createElement("option"));t.type="checkbox",ft.checkOn=""!==t.value,ft.optSelected=n.selected,t=nt.createElement("input"),t.value="t",t.type="radio",ft.radioValue="t"===t.value}();var xe,be=gt.expr.attrHandle;gt.fn.extend({attr:function(t,e){return Rt(this,gt.attr,t,e,arguments.length>1)},removeAttr:function(t){return this.each(function(){gt.removeAttr(this,t)})}}),gt.extend({attr:function(t,e,n){var i,r,o=t.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof t.getAttribute?gt.prop(t,e,n):(1===o&&gt.isXMLDoc(t)||(r=gt.attrHooks[e.toLowerCase()]||(gt.expr.match.bool.test(e)?xe:void 0)),void 0!==n?null===n?void gt.removeAttr(t,e):r&&"set"in r&&void 0!==(i=r.set(t,n,e))?i:(t.setAttribute(e,n+""),n):r&&"get"in r&&null!==(i=r.get(t,e))?i:(i=gt.find.attr(t,e),null==i?void 0:i))},attrHooks:{type:{set:function(t,e){if(!ft.radioValue&&"radio"===e&&r(t,"input")){var n=t.value;return t.setAttribute("type",e),n&&(t.value=n),e}}}},removeAttr:function(t,e){var n,i=0,r=e&&e.match(Pt);if(r&&1===t.nodeType)for(;n=r[i++];)t.removeAttribute(n)}}),xe={set:function(t,e,n){return e===!1?gt.removeAttr(t,n):t.setAttribute(n,n),n}},gt.each(gt.expr.match.bool.source.match(/\w+/g),function(t,e){var n=be[e]||gt.find.attr;be[e]=function(t,e,i){var r,o,a=e.toLowerCase();return i||(o=be[a],be[a]=r,r=null!=n(t,e,i)?a:null,be[a]=o),r}});var _e=/^(?:input|select|textarea|button)$/i,we=/^(?:a|area)$/i;gt.fn.extend({prop:function(t,e){return Rt(this,gt.prop,t,e,arguments.length>1)},removeProp:function(t){return this.each(function(){delete this[gt.propFix[t]||t]})}}),gt.extend({prop:function(t,e,n){var i,r,o=t.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&gt.isXMLDoc(t)||(e=gt.propFix[e]||e,r=gt.propHooks[e]),void 0!==n?r&&"set"in r&&void 0!==(i=r.set(t,n,e))?i:t[e]=n:r&&"get"in r&&null!==(i=r.get(t,e))?i:t[e]},propHooks:{tabIndex:{get:function(t){var e=gt.find.attr(t,"tabindex");return e?parseInt(e,10):_e.test(t.nodeName)||we.test(t.nodeName)&&t.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),ft.optSelected||(gt.propHooks.selected={get:function(t){var e=t.parentNode;return e&&e.parentNode&&e.parentNode.selectedIndex,null},set:function(t){var e=t.parentNode;e&&(e.selectedIndex,e.parentNode&&e.parentNode.selectedIndex)}}),gt.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){gt.propFix[this.toLowerCase()]=this}),gt.fn.extend({addClass:function(t){var e,n,i,r,o,a,s,l=0;if(gt.isFunction(t))return this.each(function(e){gt(this).addClass(t.call(this,e,X(this)))});if("string"==typeof t&&t)for(e=t.match(Pt)||[];n=this[l++];)if(r=X(n),i=1===n.nodeType&&" "+U(r)+" "){for(a=0;o=e[a++];)i.indexOf(" "+o+" ")<0&&(i+=o+" ");s=U(i),r!==s&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,i,r,o,a,s,l=0;if(gt.isFunction(t))return this.each(function(e){gt(this).removeClass(t.call(this,e,X(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof t&&t)for(e=t.match(Pt)||[];n=this[l++];)if(r=X(n),i=1===n.nodeType&&" "+U(r)+" "){for(a=0;o=e[a++];)for(;i.indexOf(" "+o+" ")>-1;)i=i.replace(" "+o+" "," ");s=U(i),r!==s&&n.setAttribute("class",s)}return this},toggleClass:function(t,e){var n=typeof t;return"boolean"==typeof e&&"string"===n?e?this.addClass(t):this.removeClass(t):gt.isFunction(t)?this.each(function(n){gt(this).toggleClass(t.call(this,n,X(this),e),e)}):this.each(function(){var e,i,r,o;if("string"===n)for(i=0,r=gt(this),o=t.match(Pt)||[];e=o[i++];)r.hasClass(e)?r.removeClass(e):r.addClass(e);else void 0!==t&&"boolean"!==n||(e=X(this),e&&It.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||t===!1?"":It.get(this,"__className__")||""))})},hasClass:function(t){var e,n,i=0;for(e=" "+t+" ";n=this[i++];)if(1===n.nodeType&&(" "+U(X(n))+" ").indexOf(e)>-1)return!0;return!1}});var Se=/\r/g;gt.fn.extend({val:function(t){var e,n,i,r=this[0];return arguments.length?(i=gt.isFunction(t),this.each(function(n){var r;1===this.nodeType&&(r=i?t.call(this,n,gt(this).val()):t,null==r?r="":"number"==typeof r?r+="":Array.isArray(r)&&(r=gt.map(r,function(t){return null==t?"":t+""})),e=gt.valHooks[this.type]||gt.valHooks[this.nodeName.toLowerCase()],e&&"set"in e&&void 0!==e.set(this,r,"value")||(this.value=r))})):r?(e=gt.valHooks[r.type]||gt.valHooks[r.nodeName.toLowerCase()],e&&"get"in e&&void 0!==(n=e.get(r,"value"))?n:(n=r.value,"string"==typeof n?n.replace(Se,""):null==n?"":n)):void 0}}),gt.extend({valHooks:{option:{get:function(t){var e=gt.find.attr(t,"value");return null!=e?e:U(gt.text(t))}},select:{get:function(t){var e,n,i,o=t.options,a=t.selectedIndex,s="select-one"===t.type,l=s?null:[],c=s?a+1:o.length;for(i=a<0?c:s?a:0;i<c;i++)if(n=o[i],(n.selected||i===a)&&!n.disabled&&(!n.parentNode.disabled||!r(n.parentNode,"optgroup"))){if(e=gt(n).val(),s)return e;l.push(e)}return l},set:function(t,e){for(var n,i,r=t.options,o=gt.makeArray(e),a=r.length;a--;)i=r[a],(i.selected=gt.inArray(gt.valHooks.option.get(i),o)>-1)&&(n=!0);return n||(t.selectedIndex=-1),o}}}}),gt.each(["radio","checkbox"],function(){gt.valHooks[this]={set:function(t,e){if(Array.isArray(e))return t.checked=gt.inArray(gt(t).val(),e)>-1}},ft.checkOn||(gt.valHooks[this].get=function(t){return null===t.getAttribute("value")?"on":t.value})});var Ce=/^(?:focusinfocus|focusoutblur)$/;gt.extend(gt.event,{trigger:function(e,n,i,r){var o,a,s,l,c,u,h,d=[i||nt],f=ut.call(e,"type")?e.type:e,p=ut.call(e,"namespace")?e.namespace.split("."):[];if(a=s=i=i||nt,3!==i.nodeType&&8!==i.nodeType&&!Ce.test(f+gt.event.triggered)&&(f.indexOf(".")>-1&&(p=f.split("."),f=p.shift(),p.sort()),c=f.indexOf(":")<0&&"on"+f,e=e[gt.expando]?e:new gt.Event(f,"object"==typeof e&&e),e.isTrigger=r?2:3,e.namespace=p.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=i),n=null==n?[e]:gt.makeArray(n,[e]),h=gt.event.special[f]||{},r||!h.trigger||h.trigger.apply(i,n)!==!1)){if(!r&&!h.noBubble&&!gt.isWindow(i)){for(l=h.delegateType||f,Ce.test(l+f)||(a=a.parentNode);a;a=a.parentNode)d.push(a),s=a;s===(i.ownerDocument||nt)&&d.push(s.defaultView||s.parentWindow||t)}for(o=0;(a=d[o++])&&!e.isPropagationStopped();)e.type=o>1?l:h.bindType||f,u=(It.get(a,"events")||{})[e.type]&&It.get(a,"handle"),u&&u.apply(a,n),u=c&&a[c],u&&u.apply&&Dt(a)&&(e.result=u.apply(a,n),e.result===!1&&e.preventDefault());return e.type=f,r||e.isDefaultPrevented()||h._default&&h._default.apply(d.pop(),n)!==!1||!Dt(i)||c&&gt.isFunction(i[f])&&!gt.isWindow(i)&&(s=i[c],s&&(i[c]=null),gt.event.triggered=f,i[f](),gt.event.triggered=void 0,s&&(i[c]=s)),e.result}},simulate:function(t,e,n){var i=gt.extend(new gt.Event,n,{type:t,isSimulated:!0});gt.event.trigger(i,null,e)}}),gt.fn.extend({trigger:function(t,e){return this.each(function(){gt.event.trigger(t,e,this)})},triggerHandler:function(t,e){var n=this[0];if(n)return gt.event.trigger(t,e,n,!0)}}),gt.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(t,e){gt.fn[e]=function(t,n){return arguments.length>0?this.on(e,null,t,n):this.trigger(e)}}),gt.fn.extend({hover:function(t,e){return this.mouseenter(t).mouseleave(e||t)}}),ft.focusin="onfocusin"in t,ft.focusin||gt.each({focus:"focusin",blur:"focusout"},function(t,e){var n=function(t){gt.event.simulate(e,t.target,gt.event.fix(t))};gt.event.special[e]={setup:function(){var i=this.ownerDocument||this,r=It.access(i,e);r||i.addEventListener(t,n,!0),It.access(i,e,(r||0)+1)},teardown:function(){var i=this.ownerDocument||this,r=It.access(i,e)-1;r?It.access(i,e,r):(i.removeEventListener(t,n,!0),It.remove(i,e))}}});var Te=t.location,ke=gt.now(),Ae=/\?/;gt.parseXML=function(e){var n;if(!e||"string"!=typeof e)return null;try{n=(new t.DOMParser).parseFromString(e,"text/xml")}catch(t){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||gt.error("Invalid XML: "+e),n};var Me=/\[\]$/,Le=/\r?\n/g,Ee=/^(?:submit|button|image|reset|file)$/i,Pe=/^(?:input|select|textarea|keygen)/i;gt.param=function(t,e){var n,i=[],r=function(t,e){var n=gt.isFunction(e)?e():e;i[i.length]=encodeURIComponent(t)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(t)||t.jquery&&!gt.isPlainObject(t))gt.each(t,function(){r(this.name,this.value)});else for(n in t)Y(n,t[n],e,r);return i.join("&")},gt.fn.extend({serialize:function(){return gt.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var t=gt.prop(this,"elements");return t?gt.makeArray(t):this}).filter(function(){var t=this.type;return this.name&&!gt(this).is(":disabled")&&Pe.test(this.nodeName)&&!Ee.test(t)&&(this.checked||!Wt.test(t))}).map(function(t,e){var n=gt(this).val();return null==n?null:Array.isArray(n)?gt.map(n,function(t){return{name:e.name,value:t.replace(Le,"\r\n")}}):{name:e.name,value:n.replace(Le,"\r\n")}}).get()}});var Ne=/%20/g,Oe=/#.*$/,Re=/([?&])_=[^&]*/,De=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ie=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,je=/^(?:GET|HEAD)$/,Ve=/^\/\//,He={},Fe={},ze="*/".concat("*"),qe=nt.createElement("a");qe.href=Te.href,gt.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Te.href,type:"GET",isLocal:Ie.test(Te.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":ze,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":gt.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(t,e){return e?K(K(t,gt.ajaxSettings),e):K(gt.ajaxSettings,t)},ajaxPrefilter:Q(He),ajaxTransport:Q(Fe),ajax:function(e,n){function i(e,n,i,s){var c,d,f,b,_,w=n;u||(u=!0,l&&t.clearTimeout(l),r=void 0,a=s||"",S.readyState=e>0?4:0,c=e>=200&&e<300||304===e,i&&(b=J(p,S,i)),b=tt(p,b,S,c),c?(p.ifModified&&(_=S.getResponseHeader("Last-Modified"),_&&(gt.lastModified[o]=_),_=S.getResponseHeader("etag"),_&&(gt.etag[o]=_)),204===e||"HEAD"===p.type?w="nocontent":304===e?w="notmodified":(w=b.state,d=b.data,f=b.error,c=!f)):(f=w,!e&&w||(w="error",e<0&&(e=0))),S.status=e,S.statusText=(n||w)+"",c?v.resolveWith(g,[d,w,S]):v.rejectWith(g,[S,w,f]),S.statusCode(x),x=void 0,h&&m.trigger(c?"ajaxSuccess":"ajaxError",[S,p,c?d:f]),y.fireWith(g,[S,w]),h&&(m.trigger("ajaxComplete",[S,p]),--gt.active||gt.event.trigger("ajaxStop")))}"object"==typeof e&&(n=e,e=void 0),n=n||{};var r,o,a,s,l,c,u,h,d,f,p=gt.ajaxSetup({},n),g=p.context||p,m=p.context&&(g.nodeType||g.jquery)?gt(g):gt.event,v=gt.Deferred(),y=gt.Callbacks("once memory"),x=p.statusCode||{},b={},_={},w="canceled",S={readyState:0,getResponseHeader:function(t){var e;if(u){if(!s)for(s={};e=De.exec(a);)s[e[1].toLowerCase()]=e[2];e=s[t.toLowerCase()]}return null==e?null:e},getAllResponseHeaders:function(){return u?a:null},setRequestHeader:function(t,e){return null==u&&(t=_[t.toLowerCase()]=_[t.toLowerCase()]||t,b[t]=e),this},overrideMimeType:function(t){return null==u&&(p.mimeType=t),this},statusCode:function(t){var e;if(t)if(u)S.always(t[S.status]);else for(e in t)x[e]=[x[e],t[e]];return this},abort:function(t){var e=t||w;return r&&r.abort(e),i(0,e),this}};if(v.promise(S),p.url=((e||p.url||Te.href)+"").replace(Ve,Te.protocol+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=(p.dataType||"*").toLowerCase().match(Pt)||[""],null==p.crossDomain){c=nt.createElement("a");try{c.href=p.url,c.href=c.href,p.crossDomain=qe.protocol+"//"+qe.host!=c.protocol+"//"+c.host}catch(t){p.crossDomain=!0}}if(p.data&&p.processData&&"string"!=typeof p.data&&(p.data=gt.param(p.data,p.traditional)),Z(He,p,n,S),u)return S;h=gt.event&&p.global,h&&0===gt.active++&&gt.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!je.test(p.type),o=p.url.replace(Oe,""),p.hasContent?p.data&&p.processData&&0===(p.contentType||"").indexOf("application/x-www-form-urlencoded")&&(p.data=p.data.replace(Ne,"+")):(f=p.url.slice(o.length),p.data&&(o+=(Ae.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(o=o.replace(Re,"$1"),f=(Ae.test(o)?"&":"?")+"_="+ke++ +f),p.url=o+f),p.ifModified&&(gt.lastModified[o]&&S.setRequestHeader("If-Modified-Since",gt.lastModified[o]),gt.etag[o]&&S.setRequestHeader("If-None-Match",gt.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&S.setRequestHeader("Content-Type",p.contentType),S.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+ze+"; q=0.01":""):p.accepts["*"]);for(d in p.headers)S.setRequestHeader(d,p.headers[d]);if(p.beforeSend&&(p.beforeSend.call(g,S,p)===!1||u))return S.abort();if(w="abort",y.add(p.complete),S.done(p.success),S.fail(p.error),r=Z(Fe,p,n,S)){if(S.readyState=1,h&&m.trigger("ajaxSend",[S,p]),u)return S;p.async&&p.timeout>0&&(l=t.setTimeout(function(){S.abort("timeout")},p.timeout));try{u=!1,r.send(b,i)}catch(t){if(u)throw t;i(-1,t)}}else i(-1,"No Transport");return S},getJSON:function(t,e,n){return gt.get(t,e,n,"json")},getScript:function(t,e){return gt.get(t,void 0,e,"script")}}),gt.each(["get","post"],function(t,e){gt[e]=function(t,n,i,r){return gt.isFunction(n)&&(r=r||i,i=n,n=void 0),gt.ajax(gt.extend({url:t,type:e,dataType:r,data:n,success:i},gt.isPlainObject(t)&&t))}}),gt._evalUrl=function(t){return gt.ajax({url:t,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,throws:!0})},gt.fn.extend({wrapAll:function(t){var e;return this[0]&&(gt.isFunction(t)&&(t=t.call(this[0])),e=gt(t,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&e.insertBefore(this[0]),e.map(function(){for(var t=this;t.firstElementChild;)t=t.firstElementChild;return t}).append(this)),this},wrapInner:function(t){return gt.isFunction(t)?this.each(function(e){gt(this).wrapInner(t.call(this,e))}):this.each(function(){var e=gt(this),n=e.contents();n.length?n.wrapAll(t):e.append(t)})},wrap:function(t){var e=gt.isFunction(t);return this.each(function(n){gt(this).wrapAll(e?t.call(this,n):t)})},unwrap:function(t){return this.parent(t).not("body").each(function(){gt(this).replaceWith(this.childNodes)}),this}}),gt.expr.pseudos.hidden=function(t){return!gt.expr.pseudos.visible(t)},gt.expr.pseudos.visible=function(t){return!!(t.offsetWidth||t.offsetHeight||t.getClientRects().length)},gt.ajaxSettings.xhr=function(){try{return new t.XMLHttpRequest}catch(t){}};var Ge={0:200,1223:204},Be=gt.ajaxSettings.xhr();ft.cors=!!Be&&"withCredentials"in Be,ft.ajax=Be=!!Be,gt.ajaxTransport(function(e){var n,i;if(ft.cors||Be&&!e.crossDomain)return{send:function(r,o){var a,s=e.xhr();if(s.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(a in e.xhrFields)s[a]=e.xhrFields[a];e.mimeType&&s.overrideMimeType&&s.overrideMimeType(e.mimeType),e.crossDomain||r["X-Requested-With"]||(r["X-Requested-With"]="XMLHttpRequest");for(a in r)s.setRequestHeader(a,r[a]);n=function(t){return function(){n&&(n=i=s.onload=s.onerror=s.onabort=s.onreadystatechange=null,"abort"===t?s.abort():"error"===t?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(Ge[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),i=s.onerror=n("error"),void 0!==s.onabort?s.onabort=i:s.onreadystatechange=function(){4===s.readyState&&t.setTimeout(function(){n&&i()})},n=n("abort");try{s.send(e.hasContent&&e.data||null)}catch(t){if(n)throw t}},abort:function(){n&&n()}}}),gt.ajaxPrefilter(function(t){t.crossDomain&&(t.contents.script=!1)}),gt.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(t){return gt.globalEval(t),t}}}),gt.ajaxPrefilter("script",function(t){void 0===t.cache&&(t.cache=!1),t.crossDomain&&(t.type="GET")}),gt.ajaxTransport("script",function(t){if(t.crossDomain){var e,n;return{send:function(i,r){e=gt("<script>").prop({charset:t.scriptCharset,src:t.url}).on("load error",n=function(t){e.remove(),n=null,t&&r("error"===t.type?404:200,t.type)}),nt.head.appendChild(e[0])},abort:function(){n&&n()}}}});var $e=[],We=/(=)\?(?=&|$)|\?\?/;gt.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var t=$e.pop()||gt.expando+"_"+ke++;return this[t]=!0,t}}),gt.ajaxPrefilter("json jsonp",function(e,n,i){var r,o,a,s=e.jsonp!==!1&&(We.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&We.test(e.data)&&"data");if(s||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=gt.isFunction(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,s?e[s]=e[s].replace(We,"$1"+r):e.jsonp!==!1&&(e.url+=(Ae.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return a||gt.error(r+" was not called"),a[0]},e.dataTypes[0]="json",o=t[r],t[r]=function(){a=arguments},i.always(function(){void 0===o?gt(t).removeProp(r):t[r]=o,e[r]&&(e.jsonpCallback=n.jsonpCallback,$e.push(r)),a&&gt.isFunction(o)&&o(a[0]),a=o=void 0}),"script"}),ft.createHTMLDocument=function(){var t=nt.implementation.createHTMLDocument("").body;return t.innerHTML="<form></form><form></form>",2===t.childNodes.length}(),gt.parseHTML=function(t,e,n){if("string"!=typeof t)return[];"boolean"==typeof e&&(n=e,e=!1);var i,r,o;return e||(ft.createHTMLDocument?(e=nt.implementation.createHTMLDocument(""),i=e.createElement("base"),i.href=nt.location.href,e.head.appendChild(i)):e=nt),r=Ct.exec(t),o=!n&&[],r?[e.createElement(r[1])]:(r=b([t],e,o),o&&o.length&&gt(o).remove(),gt.merge([],r.childNodes))},gt.fn.load=function(t,e,n){var i,r,o,a=this,s=t.indexOf(" ");return s>-1&&(i=U(t.slice(s)),t=t.slice(0,s)),gt.isFunction(e)?(n=e,e=void 0):e&&"object"==typeof e&&(r="POST"),a.length>0&&gt.ajax({url:t,type:r||"GET",dataType:"html",data:e}).done(function(t){o=arguments,a.html(i?gt("<div>").append(gt.parseHTML(t)).find(i):t)}).always(n&&function(t,e){a.each(function(){n.apply(this,o||[t.responseText,e,t])})}),this},gt.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(t,e){gt.fn[e]=function(t){return this.on(e,t)}}),gt.expr.pseudos.animated=function(t){return gt.grep(gt.timers,function(e){return t===e.elem}).length},gt.offset={setOffset:function(t,e,n){var i,r,o,a,s,l,c,u=gt.css(t,"position"),h=gt(t),d={};"static"===u&&(t.style.position="relative"),s=h.offset(),o=gt.css(t,"top"),l=gt.css(t,"left"),c=("absolute"===u||"fixed"===u)&&(o+l).indexOf("auto")>-1,c?(i=h.position(),a=i.top,r=i.left):(a=parseFloat(o)||0,r=parseFloat(l)||0),gt.isFunction(e)&&(e=e.call(t,n,gt.extend({},s))),null!=e.top&&(d.top=e.top-s.top+a),null!=e.left&&(d.left=e.left-s.left+r),"using"in e?e.using.call(t,d):h.css(d)}},gt.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){gt.offset.setOffset(this,t,e)});var e,n,i,r,o=this[0];return o?o.getClientRects().length?(i=o.getBoundingClientRect(),e=o.ownerDocument,n=e.documentElement,r=e.defaultView,{top:i.top+r.pageYOffset-n.clientTop,left:i.left+r.pageXOffset-n.clientLeft}):{top:0,left:0}:void 0},position:function(){if(this[0]){var t,e,n=this[0],i={top:0,left:0};return"fixed"===gt.css(n,"position")?e=n.getBoundingClientRect():(t=this.offsetParent(),e=this.offset(),r(t[0],"html")||(i=t.offset()),i={top:i.top+gt.css(t[0],"borderTopWidth",!0),left:i.left+gt.css(t[0],"borderLeftWidth",!0)}),{top:e.top-i.top-gt.css(n,"marginTop",!0),left:e.left-i.left-gt.css(n,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var t=this.offsetParent;t&&"static"===gt.css(t,"position");)t=t.offsetParent;return t||Zt})}}),gt.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,e){var n="pageYOffset"===e;gt.fn[t]=function(i){return Rt(this,function(t,i,r){var o;return gt.isWindow(t)?o=t:9===t.nodeType&&(o=t.defaultView),void 0===r?o?o[e]:t[i]:void(o?o.scrollTo(n?o.pageXOffset:r,n?r:o.pageYOffset):t[i]=r)},t,i,arguments.length)}}),gt.each(["top","left"],function(t,e){gt.cssHooks[e]=O(ft.pixelPosition,function(t,n){if(n)return n=N(t,e),se.test(n)?gt(t).position()[e]+"px":n})}),gt.each({Height:"height",Width:"width"},function(t,e){gt.each({padding:"inner"+t,content:e,"":"outer"+t},function(n,i){gt.fn[i]=function(r,o){var a=arguments.length&&(n||"boolean"!=typeof r),s=n||(r===!0||o===!0?"margin":"border");return Rt(this,function(e,n,r){var o;return gt.isWindow(e)?0===i.indexOf("outer")?e["inner"+t]:e.document.documentElement["client"+t]:9===e.nodeType?(o=e.documentElement,Math.max(e.body["scroll"+t],o["scroll"+t],e.body["offset"+t],o["offset"+t],o["client"+t])):void 0===r?gt.css(e,n,s):gt.style(e,n,r,s)},e,a?r:void 0,a)}})}),gt.fn.extend({bind:function(t,e,n){return this.on(t,null,e,n)},unbind:function(t,e){return this.off(t,null,e)},delegate:function(t,e,n,i){return this.on(e,t,n,i)},undelegate:function(t,e,n){return 1===arguments.length?this.off(t,"**"):this.off(e,t||"**",n)}}),gt.holdReady=function(t){t?gt.readyWait++:gt.ready(!0)},gt.isArray=Array.isArray,gt.parseJSON=JSON.parse,gt.nodeName=r,"function"==typeof define&&define.amd&&define("jquery",[],function(){return gt});var Ue=t.jQuery,Xe=t.$;return gt.noConflict=function(e){return t.$===gt&&(t.$=Xe),e&&t.jQuery===gt&&(t.jQuery=Ue),gt},e||(t.jQuery=t.$=gt),gt}),define("config",["jquery"],function(t){function e(){if("undefined"!=typeof Storage&&window.swish.config_hash){var t;if((t=localStorage.getItem(r))&&(value=JSON.parse(t),value.hash==window.swish.config_hash))return value.config}}function n(t){"undefined"!=typeof Storage&&window.swish.config_hash&&localStorage.setItem(r,JSON.stringify({hash:window.swish.config_hash,config:t}))}var i,r="SWISHCONFIG";return i||(i=e())||t.ajax("swish_config.json",{dataType:"json",async:!1,success:function(t){i=t,n(i)},error:function(){alert("Failed to fetch configuration from server")}}),i}),define("preferences",["jquery"],function(t){function e(){var t=localStorage.getItem("notagain")||"[]";try{data=JSON.parse(t),"object"!=typeof data&&(data=[])}catch(t){data=[]}return data}var n="undefined"!=typeof Storage,i={},r={persistent:function(){return n},setNotAgain:function(t){if(n){var i=e();i.indexOf(t)<0&&(i.push(t),localStorage.setItem("notagain",JSON.stringify(i)))}},notagain:function(t){if(n){var i=e();return i.indexOf(t)>=0}return!1},broadcast:function(e,n){t(".swish-event-receiver").trigger("preference",{name:e,value:n})},setVal:function(t,e){n&&localStorage.setItem(t,JSON.stringify(e)),this.broadcast(t,e)},setDefault:function(t,e){i[t]=e},getVal:function(t){if(n){var e;if(e=localStorage.getItem(t))return value=JSON.parse(e),value}return i[t]},setDocVal:function(t,e,n){var i=r.getVal(t)||{};i[e]=n,r.setVal(t,i)},getDocVal:function(t,e,n){var i=r.getVal(t)||{};return void 0===i[e]?n:i[e]}};return r}),define("links",["jquery","config","modal"],function(t,e,n){var i={PlDoc:function(e,n){function i(t){var e,n={};if((e=t.indexOf(":"))>0&&(n.module=t.substring(0,e),t=t.slice(e+1)),(e=t.indexOf("/"))>0&&(n.name=t.substring(0,e),"/"==t.charAt(e+1)?n.arity=parseInt(t.slice(e+2))+2:n.arity=parseInt(t.slice(e+1)),!isNaN(n.arity)))return n}if(e){var r=i(decodeURIComponent(e));if(r)return t(n.target).closest("#ajaxModal").modal("hide"),t(".swish-event-receiver").trigger("pldoc",r),n.preventDefault(),!0}return!1},runQueryLink:function(e,i){function r(t){for(var e=0;e<l.length;e++)if(l[e].toLowerCase()==t.toLowerCase())return l[e];h.push(t)}var o=e.closest(".notebook"),a=e.data("query"),s=o.find('.nb-cell[name="'+a+'"]');if(s){var l=t().prologEditor("variables",s.nbCell("text"),!0),c="",u={},h=[];t.each(e.data(),function(t,e){var n;"query"!==t&&(n=r(t))&&(""!=c&&(c+=", "),c+=n+" = ("+e+")")}),h.length>0&&n.feedback({owner:o,type:"warning",duration:3e3,html:"The variables <b>"+h.join(", ")+"</b> do not appear in query <b>"+a+"</b>"}),""!=c&&(u.bindings=c),s.nbCell("run",u)}},followLink:function(n){function r(){a=!0,n.preventDefault(),t(n.target).closest("#ajaxModal").modal("hide")}var o=t(n.target).closest("a"),a=!1;if(o.attr("href")){var s,l=e.http.locations.swish+"p/",c=e.http.locations.swish+"example/",u=o.attr("href");if(u.startsWith(l)&&!u.match(/#/))r(),file=u.slice(l.length),t(n.target).closest(".swish").swish("playFile",file);else if(o.hasClass("store"))r(),s.alert("File does not appear to come from gitty store?");else if(o.hasClass("file")||u.startsWith(c)&&!u.match(/#/))r(),t(n.target).closest(".swish").swish("playURL",{url:u});else if(o.hasClass("builtin")&&u.match(/predicate=/))a=i.PlDoc(u.split("predicate=").pop(),n);else if(u.match(/object=/))a=i.PlDoc(u.split("object=").pop(),n);else if(1==(s=t(n.target).closest("#ajaxModal")).length&&u.match(/#/)){var h,d=u.split("#").pop();1==(h=s.find("#"+d)).length&&(a=!0,n.preventDefault(),s.animate({scrollTop:h.position().top},2e3))}a||(n.preventDefault(),window.open(u,"_blank"))}else o.data("query")&&i.runQueryLink(o,n)}};return i}),function(t){function e(){for(var t=document.createElement(arguments[0]),e=1;e<arguments.length;e++){var i=arguments[e];if(null!==i&&void 0!==i)if(1===i.nodeType)t.appendChild(i);else if(""===i||i&&i.charCodeAt&&i.substr||0===i||i&&i.toExponential&&i.toFixed)t.appendChild(document.createTextNode(i));else if(1===e&&"object"==typeof i){for(var r in i)if(i.hasOwnProperty(r)){var o=i[r];if(null!==o&&void 0!==o){r=r.toLowerCase(),r=n[r]||r;var a="o"===r.charAt(0)&&"n"===r.charAt(1);a?(void 0===i.href&&"onclick"===r&&t.setAttribute("href","#"),t[r]=o):"style"===r&&t.style.setAttribute?t.style.setAttribute("cssText",o):"className"===r||"htmlFor"===r?t[r]=o:t.setAttribute(r,o)}}}else if("[object Array]"===Object.prototype.toString.call(i))for(var s=0;s<i.length;s++){var l=i[s];1===l.nodeType&&t.appendChild(l)}}return t.appendTo=function(t){return 1===t.nodeType&&1===this.nodeType&&t.appendChild(this),this},t}var n={acceptcharset:"acceptCharset",accesskey:"accessKey",allowtransparency:"allowTransparency",bgcolor:"bgColor",cellpadding:"cellPadding",cellspacing:"cellSpacing",class:"className",classname:"className",colspan:"colSpan",csstext:"style",defaultchecked:"defaultChecked",defaultselected:"defaultSelected",defaultvalue:"defaultValue",for:"htmlFor",frameborder:"frameBorder",hspace:"hSpace",htmlfor:"htmlFor",longdesc:"longDesc",maxlength:"maxLength",marginwidth:"marginWidth",marginheight:"marginHeight",noresize:"noResize",noshade:"noShade",readonly:"readOnly",rowspan:"rowSpan",tabindex:"tabIndex",valign:"vAlign",vspace:"vSpace"};e.registerElement=function(t,n){e[t]||(e[t]=function(){var i=e("div",{class:t});return n.apply(i,Array.prototype.slice.call(arguments)),i})};for(var i=["acronym","applet","basefont","big","center","dir","font","frame","frameset","noframes","strike","tt","u","xmp"],r=["a","abbr","address","area","article","aside","audio","b","base","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","command","datalist","dd","del","details","dfn","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","keygen","kbd","label","legend","li","link","map","mark","menu","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","picture","param","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","ul","var","video","wbr"].concat(i),o=function(t){return function(){return e.apply(this,[t].concat(Array.prototype.slice.call(arguments)))}},a=0;a<r.length;a++)e[r[a]]=o(r[a]);if("undefined"!=typeof module&&module.exports)module.exports=e;else{var s=t.$||{};s.el=e,t.$=s}}(this),define("laconic",["jquery"],function(){}),"undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(t){"use strict";var e=t.fn.jquery.split(" ")[0].split(".");if(e[0]<2&&e[1]<9||1==e[0]&&9==e[1]&&e[2]<1||e[0]>3)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4")}(jQuery),+function(t){"use strict";function e(){var t=document.createElement("bootstrap"),e={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var n in e)if(void 0!==t.style[n])return{end:e[n]};return!1}t.fn.emulateTransitionEnd=function(e){var n=!1,i=this;t(this).one("bsTransitionEnd",function(){n=!0});var r=function(){n||t(i).trigger(t.support.transition.end)};return setTimeout(r,e),this},t(function(){t.support.transition=e(),t.support.transition&&(t.event.special.bsTransitionEnd={bindType:t.support.transition.end,delegateType:t.support.transition.end,handle:function(e){if(t(e.target).is(this))return e.handleObj.handler.apply(this,arguments)}})})}(jQuery),+function(t){"use strict";function e(e){return this.each(function(){var n=t(this),r=n.data("bs.alert");r||n.data("bs.alert",r=new i(this)),"string"==typeof e&&r[e].call(n)})}var n='[data-dismiss="alert"]',i=function(e){t(e).on("click",n,this.close)};i.VERSION="3.3.7",i.TRANSITION_DURATION=150,i.prototype.close=function(e){function n(){a.detach().trigger("closed.bs.alert").remove()}var r=t(this),o=r.attr("data-target");o||(o=r.attr("href"),o=o&&o.replace(/.*(?=#[^\s]*$)/,""));var a=t("#"===o?[]:o);e&&e.preventDefault(),a.length||(a=r.closest(".alert")),a.trigger(e=t.Event("close.bs.alert")),e.isDefaultPrevented()||(a.removeClass("in"),t.support.transition&&a.hasClass("fade")?a.one("bsTransitionEnd",n).emulateTransitionEnd(i.TRANSITION_DURATION):n())};var r=t.fn.alert;t.fn.alert=e,t.fn.alert.Constructor=i,t.fn.alert.noConflict=function(){return t.fn.alert=r,this},t(document).on("click.bs.alert.data-api",n,i.prototype.close)}(jQuery),+function(t){"use strict";function e(e){return this.each(function(){var i=t(this),r=i.data("bs.button"),o="object"==typeof e&&e;r||i.data("bs.button",r=new n(this,o)),"toggle"==e?r.toggle():e&&r.setState(e)})}var n=function(e,i){this.$element=t(e),this.options=t.extend({},n.DEFAULTS,i),this.isLoading=!1};n.VERSION="3.3.7",n.DEFAULTS={loadingText:"loading..."},n.prototype.setState=function(e){var n="disabled",i=this.$element,r=i.is("input")?"val":"html",o=i.data();
+e+="Text",null==o.resetText&&i.data("resetText",i[r]()),setTimeout(t.proxy(function(){i[r](null==o[e]?this.options[e]:o[e]),"loadingText"==e?(this.isLoading=!0,i.addClass(n).attr(n,n).prop(n,!0)):this.isLoading&&(this.isLoading=!1,i.removeClass(n).removeAttr(n).prop(n,!1))},this),0)},n.prototype.toggle=function(){var t=!0,e=this.$element.closest('[data-toggle="buttons"]');if(e.length){var n=this.$element.find("input");"radio"==n.prop("type")?(n.prop("checked")&&(t=!1),e.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==n.prop("type")&&(n.prop("checked")!==this.$element.hasClass("active")&&(t=!1),this.$element.toggleClass("active")),n.prop("checked",this.$element.hasClass("active")),t&&n.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var i=t.fn.button;t.fn.button=e,t.fn.button.Constructor=n,t.fn.button.noConflict=function(){return t.fn.button=i,this},t(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(n){var i=t(n.target).closest(".btn");e.call(i,"toggle"),t(n.target).is('input[type="radio"], input[type="checkbox"]')||(n.preventDefault(),i.is("input,button")?i.trigger("focus"):i.find("input:visible,button:visible").first().trigger("focus"))}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(e){t(e.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(e.type))})}(jQuery),+function(t){"use strict";function e(e){return this.each(function(){var i=t(this),r=i.data("bs.carousel"),o=t.extend({},n.DEFAULTS,i.data(),"object"==typeof e&&e),a="string"==typeof e?e:o.slide;r||i.data("bs.carousel",r=new n(this,o)),"number"==typeof e?r.to(e):a?r[a]():o.interval&&r.pause().cycle()})}var n=function(e,n){this.$element=t(e),this.$indicators=this.$element.find(".carousel-indicators"),this.options=n,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",t.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",t.proxy(this.pause,this)).on("mouseleave.bs.carousel",t.proxy(this.cycle,this))};n.VERSION="3.3.7",n.TRANSITION_DURATION=600,n.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},n.prototype.keydown=function(t){if(!/input|textarea/i.test(t.target.tagName)){switch(t.which){case 37:this.prev();break;case 39:this.next();break;default:return}t.preventDefault()}},n.prototype.cycle=function(e){return e||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(t.proxy(this.next,this),this.options.interval)),this},n.prototype.getItemIndex=function(t){return this.$items=t.parent().children(".item"),this.$items.index(t||this.$active)},n.prototype.getItemForDirection=function(t,e){var n=this.getItemIndex(e),i="prev"==t&&0===n||"next"==t&&n==this.$items.length-1;if(i&&!this.options.wrap)return e;var r="prev"==t?-1:1,o=(n+r)%this.$items.length;return this.$items.eq(o)},n.prototype.to=function(t){var e=this,n=this.getItemIndex(this.$active=this.$element.find(".item.active"));if(!(t>this.$items.length-1||t<0))return this.sliding?this.$element.one("slid.bs.carousel",function(){e.to(t)}):n==t?this.pause().cycle():this.slide(t>n?"next":"prev",this.$items.eq(t))},n.prototype.pause=function(e){return e||(this.paused=!0),this.$element.find(".next, .prev").length&&t.support.transition&&(this.$element.trigger(t.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},n.prototype.next=function(){if(!this.sliding)return this.slide("next")},n.prototype.prev=function(){if(!this.sliding)return this.slide("prev")},n.prototype.slide=function(e,i){var r=this.$element.find(".item.active"),o=i||this.getItemForDirection(e,r),a=this.interval,s="next"==e?"left":"right",l=this;if(o.hasClass("active"))return this.sliding=!1;var c=o[0],u=t.Event("slide.bs.carousel",{relatedTarget:c,direction:s});if(this.$element.trigger(u),!u.isDefaultPrevented()){if(this.sliding=!0,a&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var h=t(this.$indicators.children()[this.getItemIndex(o)]);h&&h.addClass("active")}var d=t.Event("slid.bs.carousel",{relatedTarget:c,direction:s});return t.support.transition&&this.$element.hasClass("slide")?(o.addClass(e),o[0].offsetWidth,r.addClass(s),o.addClass(s),r.one("bsTransitionEnd",function(){o.removeClass([e,s].join(" ")).addClass("active"),r.removeClass(["active",s].join(" ")),l.sliding=!1,setTimeout(function(){l.$element.trigger(d)},0)}).emulateTransitionEnd(n.TRANSITION_DURATION)):(r.removeClass("active"),o.addClass("active"),this.sliding=!1,this.$element.trigger(d)),a&&this.cycle(),this}};var i=t.fn.carousel;t.fn.carousel=e,t.fn.carousel.Constructor=n,t.fn.carousel.noConflict=function(){return t.fn.carousel=i,this};var r=function(n){var i,r=t(this),o=t(r.attr("data-target")||(i=r.attr("href"))&&i.replace(/.*(?=#[^\s]+$)/,""));if(o.hasClass("carousel")){var a=t.extend({},o.data(),r.data()),s=r.attr("data-slide-to");s&&(a.interval=!1),e.call(o,a),s&&o.data("bs.carousel").to(s),n.preventDefault()}};t(document).on("click.bs.carousel.data-api","[data-slide]",r).on("click.bs.carousel.data-api","[data-slide-to]",r),t(window).on("load",function(){t('[data-ride="carousel"]').each(function(){var n=t(this);e.call(n,n.data())})})}(jQuery),+function(t){"use strict";function e(e){var n,i=e.attr("data-target")||(n=e.attr("href"))&&n.replace(/.*(?=#[^\s]+$)/,"");return t(i)}function n(e){return this.each(function(){var n=t(this),r=n.data("bs.collapse"),o=t.extend({},i.DEFAULTS,n.data(),"object"==typeof e&&e);!r&&o.toggle&&/show|hide/.test(e)&&(o.toggle=!1),r||n.data("bs.collapse",r=new i(this,o)),"string"==typeof e&&r[e]()})}var i=function(e,n){this.$element=t(e),this.options=t.extend({},i.DEFAULTS,n),this.$trigger=t('[data-toggle="collapse"][href="#'+e.id+'"],[data-toggle="collapse"][data-target="#'+e.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};i.VERSION="3.3.7",i.TRANSITION_DURATION=350,i.DEFAULTS={toggle:!0},i.prototype.dimension=function(){var t=this.$element.hasClass("width");return t?"width":"height"},i.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var e,r=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(r&&r.length&&(e=r.data("bs.collapse"),e&&e.transitioning))){var o=t.Event("show.bs.collapse");if(this.$element.trigger(o),!o.isDefaultPrevented()){r&&r.length&&(n.call(r,"hide"),e||r.data("bs.collapse",null));var a=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[a](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var s=function(){this.$element.removeClass("collapsing").addClass("collapse in")[a](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!t.support.transition)return s.call(this);var l=t.camelCase(["scroll",a].join("-"));this.$element.one("bsTransitionEnd",t.proxy(s,this)).emulateTransitionEnd(i.TRANSITION_DURATION)[a](this.$element[0][l])}}}},i.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var e=t.Event("hide.bs.collapse");if(this.$element.trigger(e),!e.isDefaultPrevented()){var n=this.dimension();this.$element[n](this.$element[n]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var r=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return t.support.transition?void this.$element[n](0).one("bsTransitionEnd",t.proxy(r,this)).emulateTransitionEnd(i.TRANSITION_DURATION):r.call(this)}}},i.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},i.prototype.getParent=function(){return t(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(t.proxy(function(n,i){var r=t(i);this.addAriaAndCollapsedClass(e(r),r)},this)).end()},i.prototype.addAriaAndCollapsedClass=function(t,e){var n=t.hasClass("in");t.attr("aria-expanded",n),e.toggleClass("collapsed",!n).attr("aria-expanded",n)};var r=t.fn.collapse;t.fn.collapse=n,t.fn.collapse.Constructor=i,t.fn.collapse.noConflict=function(){return t.fn.collapse=r,this},t(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(i){var r=t(this);r.attr("data-target")||i.preventDefault();var o=e(r),a=o.data("bs.collapse"),s=a?"toggle":r.data();n.call(o,s)})}(jQuery),+function(t){"use strict";function e(e){var n=e.attr("data-target");n||(n=e.attr("href"),n=n&&/#[A-Za-z]/.test(n)&&n.replace(/.*(?=#[^\s]*$)/,""));var i=n&&t(n);return i&&i.length?i:e.parent()}function n(n){n&&3===n.which||(t(r).remove(),t(o).each(function(){var i=t(this),r=e(i),o={relatedTarget:this};r.hasClass("open")&&(n&&"click"==n.type&&/input|textarea/i.test(n.target.tagName)&&t.contains(r[0],n.target)||(r.trigger(n=t.Event("hide.bs.dropdown",o)),n.isDefaultPrevented()||(i.attr("aria-expanded","false"),r.removeClass("open").trigger(t.Event("hidden.bs.dropdown",o)))))}))}function i(e){return this.each(function(){var n=t(this),i=n.data("bs.dropdown");i||n.data("bs.dropdown",i=new a(this)),"string"==typeof e&&i[e].call(n)})}var r=".dropdown-backdrop",o='[data-toggle="dropdown"]',a=function(e){t(e).on("click.bs.dropdown",this.toggle)};a.VERSION="3.3.7",a.prototype.toggle=function(i){var r=t(this);if(!r.is(".disabled, :disabled")){var o=e(r),a=o.hasClass("open");if(n(),!a){"ontouchstart"in document.documentElement&&!o.closest(".navbar-nav").length&&t(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(t(this)).on("click",n);var s={relatedTarget:this};if(o.trigger(i=t.Event("show.bs.dropdown",s)),i.isDefaultPrevented())return;r.trigger("focus").attr("aria-expanded","true"),o.toggleClass("open").trigger(t.Event("shown.bs.dropdown",s))}return!1}},a.prototype.keydown=function(n){if(/(38|40|27|32)/.test(n.which)&&!/input|textarea/i.test(n.target.tagName)){var i=t(this);if(n.preventDefault(),n.stopPropagation(),!i.is(".disabled, :disabled")){var r=e(i),a=r.hasClass("open");if(!a&&27!=n.which||a&&27==n.which)return 27==n.which&&r.find(o).trigger("focus"),i.trigger("click");var s=" li:not(.disabled):visible a",l=r.find(".dropdown-menu"+s);if(l.length){var c=l.index(n.target);38==n.which&&c>0&&c--,40==n.which&&c<l.length-1&&c++,~c||(c=0),l.eq(c).trigger("focus")}}}};var s=t.fn.dropdown;t.fn.dropdown=i,t.fn.dropdown.Constructor=a,t.fn.dropdown.noConflict=function(){return t.fn.dropdown=s,this},t(document).on("click.bs.dropdown.data-api",n).on("click.bs.dropdown.data-api",".dropdown form",function(t){t.stopPropagation()}).on("click.bs.dropdown.data-api",o,a.prototype.toggle).on("keydown.bs.dropdown.data-api",o,a.prototype.keydown).on("keydown.bs.dropdown.data-api",".dropdown-menu",a.prototype.keydown)}(jQuery),+function(t){"use strict";function e(e,i){return this.each(function(){var r=t(this),o=r.data("bs.modal"),a=t.extend({},n.DEFAULTS,r.data(),"object"==typeof e&&e);o||r.data("bs.modal",o=new n(this,a)),"string"==typeof e?o[e](i):a.show&&o.show(i)})}var n=function(e,n){this.options=n,this.$body=t(document.body),this.$element=t(e),this.$dialog=this.$element.find(".modal-dialog"),this.$backdrop=null,this.isShown=null,this.originalBodyPad=null,this.scrollbarWidth=0,this.ignoreBackdropClick=!1,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,t.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};n.VERSION="3.3.7",n.TRANSITION_DURATION=300,n.BACKDROP_TRANSITION_DURATION=150,n.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},n.prototype.toggle=function(t){return this.isShown?this.hide():this.show(t)},n.prototype.show=function(e){var i=this,r=t.Event("show.bs.modal",{relatedTarget:e});this.$element.trigger(r),this.isShown||r.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass("modal-open"),this.escape(),this.resize(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',t.proxy(this.hide,this)),this.$dialog.on("mousedown.dismiss.bs.modal",function(){i.$element.one("mouseup.dismiss.bs.modal",function(e){t(e.target).is(i.$element)&&(i.ignoreBackdropClick=!0)})}),this.backdrop(function(){var r=t.support.transition&&i.$element.hasClass("fade");i.$element.parent().length||i.$element.appendTo(i.$body),i.$element.show().scrollTop(0),i.adjustDialog(),r&&i.$element[0].offsetWidth,i.$element.addClass("in"),i.enforceFocus();var o=t.Event("shown.bs.modal",{relatedTarget:e});r?i.$dialog.one("bsTransitionEnd",function(){i.$element.trigger("focus").trigger(o)}).emulateTransitionEnd(n.TRANSITION_DURATION):i.$element.trigger("focus").trigger(o)}))},n.prototype.hide=function(e){e&&e.preventDefault(),e=t.Event("hide.bs.modal"),this.$element.trigger(e),this.isShown&&!e.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),t(document).off("focusin.bs.modal"),this.$element.removeClass("in").off("click.dismiss.bs.modal").off("mouseup.dismiss.bs.modal"),this.$dialog.off("mousedown.dismiss.bs.modal"),t.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",t.proxy(this.hideModal,this)).emulateTransitionEnd(n.TRANSITION_DURATION):this.hideModal())},n.prototype.enforceFocus=function(){t(document).off("focusin.bs.modal").on("focusin.bs.modal",t.proxy(function(t){document===t.target||this.$element[0]===t.target||this.$element.has(t.target).length||this.$element.trigger("focus")},this))},n.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",t.proxy(function(t){27==t.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},n.prototype.resize=function(){this.isShown?t(window).on("resize.bs.modal",t.proxy(this.handleUpdate,this)):t(window).off("resize.bs.modal")},n.prototype.hideModal=function(){var t=this;this.$element.hide(),this.backdrop(function(){t.$body.removeClass("modal-open"),t.resetAdjustments(),t.resetScrollbar(),t.$element.trigger("hidden.bs.modal")})},n.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},n.prototype.backdrop=function(e){var i=this,r=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var o=t.support.transition&&r;if(this.$backdrop=t(document.createElement("div")).addClass("modal-backdrop "+r).appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",t.proxy(function(t){return this.ignoreBackdropClick?void(this.ignoreBackdropClick=!1):void(t.target===t.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus():this.hide()))},this)),o&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!e)return;o?this.$backdrop.one("bsTransitionEnd",e).emulateTransitionEnd(n.BACKDROP_TRANSITION_DURATION):e()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var a=function(){i.removeBackdrop(),e&&e()};t.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",a).emulateTransitionEnd(n.BACKDROP_TRANSITION_DURATION):a()}else e&&e()},n.prototype.handleUpdate=function(){this.adjustDialog()},n.prototype.adjustDialog=function(){var t=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&t?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!t?this.scrollbarWidth:""})},n.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},n.prototype.checkScrollbar=function(){var t=window.innerWidth;if(!t){var e=document.documentElement.getBoundingClientRect();t=e.right-Math.abs(e.left)}this.bodyIsOverflowing=document.body.clientWidth<t,this.scrollbarWidth=this.measureScrollbar()},n.prototype.setScrollbar=function(){var t=parseInt(this.$body.css("padding-right")||0,10);this.originalBodyPad=document.body.style.paddingRight||"",this.bodyIsOverflowing&&this.$body.css("padding-right",t+this.scrollbarWidth)},n.prototype.resetScrollbar=function(){this.$body.css("padding-right",this.originalBodyPad)},n.prototype.measureScrollbar=function(){var t=document.createElement("div");t.className="modal-scrollbar-measure",this.$body.append(t);var e=t.offsetWidth-t.clientWidth;return this.$body[0].removeChild(t),e};var i=t.fn.modal;t.fn.modal=e,t.fn.modal.Constructor=n,t.fn.modal.noConflict=function(){return t.fn.modal=i,this},t(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(n){var i=t(this),r=i.attr("href"),o=t(i.attr("data-target")||r&&r.replace(/.*(?=#[^\s]+$)/,"")),a=o.data("bs.modal")?"toggle":t.extend({remote:!/#/.test(r)&&r},o.data(),i.data());i.is("a")&&n.preventDefault(),o.one("show.bs.modal",function(t){t.isDefaultPrevented()||o.one("hidden.bs.modal",function(){i.is(":visible")&&i.trigger("focus")})}),e.call(o,a,this)})}(jQuery),+function(t){"use strict";function e(e){return this.each(function(){var i=t(this),r=i.data("bs.tooltip"),o="object"==typeof e&&e;!r&&/destroy|hide/.test(e)||(r||i.data("bs.tooltip",r=new n(this,o)),"string"==typeof e&&r[e]())})}var n=function(t,e){this.type=null,this.options=null,this.enabled=null,this.timeout=null,this.hoverState=null,this.$element=null,this.inState=null,this.init("tooltip",t,e)};n.VERSION="3.3.7",n.TRANSITION_DURATION=150,n.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},n.prototype.init=function(e,n,i){if(this.enabled=!0,this.type=e,this.$element=t(n),this.options=this.getOptions(i),this.$viewport=this.options.viewport&&t(t.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var r=this.options.trigger.split(" "),o=r.length;o--;){var a=r[o];if("click"==a)this.$element.on("click."+this.type,this.options.selector,t.proxy(this.toggle,this));else if("manual"!=a){var s="hover"==a?"mouseenter":"focusin",l="hover"==a?"mouseleave":"focusout";this.$element.on(s+"."+this.type,this.options.selector,t.proxy(this.enter,this)),this.$element.on(l+"."+this.type,this.options.selector,t.proxy(this.leave,this))}}this.options.selector?this._options=t.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},n.prototype.getDefaults=function(){return n.DEFAULTS},n.prototype.getOptions=function(e){return e=t.extend({},this.getDefaults(),this.$element.data(),e),e.delay&&"number"==typeof e.delay&&(e.delay={show:e.delay,hide:e.delay}),e},n.prototype.getDelegateOptions=function(){var e={},n=this.getDefaults();return this._options&&t.each(this._options,function(t,i){n[t]!=i&&(e[t]=i)}),e},n.prototype.enter=function(e){var n=e instanceof this.constructor?e:t(e.currentTarget).data("bs."+this.type);return n||(n=new this.constructor(e.currentTarget,this.getDelegateOptions()),t(e.currentTarget).data("bs."+this.type,n)),e instanceof t.Event&&(n.inState["focusin"==e.type?"focus":"hover"]=!0),n.tip().hasClass("in")||"in"==n.hoverState?void(n.hoverState="in"):(clearTimeout(n.timeout),n.hoverState="in",n.options.delay&&n.options.delay.show?void(n.timeout=setTimeout(function(){"in"==n.hoverState&&n.show()},n.options.delay.show)):n.show())},n.prototype.isInStateTrue=function(){for(var t in this.inState)if(this.inState[t])return!0;return!1},n.prototype.leave=function(e){var n=e instanceof this.constructor?e:t(e.currentTarget).data("bs."+this.type);if(n||(n=new this.constructor(e.currentTarget,this.getDelegateOptions()),t(e.currentTarget).data("bs."+this.type,n)),e instanceof t.Event&&(n.inState["focusout"==e.type?"focus":"hover"]=!1),!n.isInStateTrue())return clearTimeout(n.timeout),n.hoverState="out",n.options.delay&&n.options.delay.hide?void(n.timeout=setTimeout(function(){"out"==n.hoverState&&n.hide()},n.options.delay.hide)):n.hide()},n.prototype.show=function(){var e=t.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(e);var i=t.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(e.isDefaultPrevented()||!i)return;var r=this,o=this.tip(),a=this.getUID(this.type);this.setContent(),o.attr("id",a),this.$element.attr("aria-describedby",a),this.options.animation&&o.addClass("fade");var s="function"==typeof this.options.placement?this.options.placement.call(this,o[0],this.$element[0]):this.options.placement,l=/\s?auto?\s?/i,c=l.test(s);c&&(s=s.replace(l,"")||"top"),o.detach().css({top:0,left:0,display:"block"}).addClass(s).data("bs."+this.type,this),this.options.container?o.appendTo(this.options.container):o.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var u=this.getPosition(),h=o[0].offsetWidth,d=o[0].offsetHeight;if(c){var f=s,p=this.getPosition(this.$viewport);s="bottom"==s&&u.bottom+d>p.bottom?"top":"top"==s&&u.top-d<p.top?"bottom":"right"==s&&u.right+h>p.width?"left":"left"==s&&u.left-h<p.left?"right":s,o.removeClass(f).addClass(s)}var g=this.getCalculatedOffset(s,u,h,d);this.applyPlacement(g,s);var m=function(){var t=r.hoverState;r.$element.trigger("shown.bs."+r.type),r.hoverState=null,"out"==t&&r.leave(r)};t.support.transition&&this.$tip.hasClass("fade")?o.one("bsTransitionEnd",m).emulateTransitionEnd(n.TRANSITION_DURATION):m()}},n.prototype.applyPlacement=function(e,n){var i=this.tip(),r=i[0].offsetWidth,o=i[0].offsetHeight,a=parseInt(i.css("margin-top"),10),s=parseInt(i.css("margin-left"),10);isNaN(a)&&(a=0),isNaN(s)&&(s=0),e.top+=a,e.left+=s,t.offset.setOffset(i[0],t.extend({using:function(t){i.css({top:Math.round(t.top),left:Math.round(t.left)})}},e),0),i.addClass("in");var l=i[0].offsetWidth,c=i[0].offsetHeight;"top"==n&&c!=o&&(e.top=e.top+o-c);var u=this.getViewportAdjustedDelta(n,e,l,c);u.left?e.left+=u.left:e.top+=u.top;var h=/top|bottom/.test(n),d=h?2*u.left-r+l:2*u.top-o+c,f=h?"offsetWidth":"offsetHeight";i.offset(e),this.replaceArrow(d,i[0][f],h)},n.prototype.replaceArrow=function(t,e,n){this.arrow().css(n?"left":"top",50*(1-t/e)+"%").css(n?"top":"left","")},n.prototype.setContent=function(){var t=this.tip(),e=this.getTitle();t.find(".tooltip-inner")[this.options.html?"html":"text"](e),t.removeClass("fade in top bottom left right")},n.prototype.hide=function(e){function i(){"in"!=r.hoverState&&o.detach(),r.$element&&r.$element.removeAttr("aria-describedby").trigger("hidden.bs."+r.type),e&&e()}var r=this,o=t(this.$tip),a=t.Event("hide.bs."+this.type);if(this.$element.trigger(a),!a.isDefaultPrevented())return o.removeClass("in"),t.support.transition&&o.hasClass("fade")?o.one("bsTransitionEnd",i).emulateTransitionEnd(n.TRANSITION_DURATION):i(),this.hoverState=null,this},n.prototype.fixTitle=function(){var t=this.$element;(t.attr("title")||"string"!=typeof t.attr("data-original-title"))&&t.attr("data-original-title",t.attr("title")||"").attr("title","")},n.prototype.hasContent=function(){return this.getTitle()},n.prototype.getPosition=function(e){e=e||this.$element;var n=e[0],i="BODY"==n.tagName,r=n.getBoundingClientRect();null==r.width&&(r=t.extend({},r,{width:r.right-r.left,height:r.bottom-r.top}));var o=window.SVGElement&&n instanceof window.SVGElement,a=i?{top:0,left:0}:o?null:e.offset(),s={scroll:i?document.documentElement.scrollTop||document.body.scrollTop:e.scrollTop()},l=i?{width:t(window).width(),height:t(window).height()}:null;return t.extend({},r,s,l,a)},n.prototype.getCalculatedOffset=function(t,e,n,i){return"bottom"==t?{top:e.top+e.height,left:e.left+e.width/2-n/2}:"top"==t?{top:e.top-i,left:e.left+e.width/2-n/2}:"left"==t?{top:e.top+e.height/2-i/2,left:e.left-n}:{top:e.top+e.height/2-i/2,left:e.left+e.width}},n.prototype.getViewportAdjustedDelta=function(t,e,n,i){var r={top:0,left:0};if(!this.$viewport)return r;var o=this.options.viewport&&this.options.viewport.padding||0,a=this.getPosition(this.$viewport);if(/right|left/.test(t)){var s=e.top-o-a.scroll,l=e.top+o-a.scroll+i;s<a.top?r.top=a.top-s:l>a.top+a.height&&(r.top=a.top+a.height-l)}else{var c=e.left-o,u=e.left+o+n;c<a.left?r.left=a.left-c:u>a.right&&(r.left=a.left+a.width-u)}return r},n.prototype.getTitle=function(){var t,e=this.$element,n=this.options;return t=e.attr("data-original-title")||("function"==typeof n.title?n.title.call(e[0]):n.title)},n.prototype.getUID=function(t){do t+=~~(1e6*Math.random());while(document.getElementById(t));return t},n.prototype.tip=function(){if(!this.$tip&&(this.$tip=t(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},n.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},n.prototype.enable=function(){this.enabled=!0},n.prototype.disable=function(){this.enabled=!1},n.prototype.toggleEnabled=function(){this.enabled=!this.enabled},n.prototype.toggle=function(e){var n=this;e&&(n=t(e.currentTarget).data("bs."+this.type),n||(n=new this.constructor(e.currentTarget,this.getDelegateOptions()),t(e.currentTarget).data("bs."+this.type,n))),e?(n.inState.click=!n.inState.click,n.isInStateTrue()?n.enter(n):n.leave(n)):n.tip().hasClass("in")?n.leave(n):n.enter(n)},n.prototype.destroy=function(){var t=this;clearTimeout(this.timeout),this.hide(function(){t.$element.off("."+t.type).removeData("bs."+t.type),t.$tip&&t.$tip.detach(),t.$tip=null,t.$arrow=null,t.$viewport=null,t.$element=null})};var i=t.fn.tooltip;t.fn.tooltip=e,t.fn.tooltip.Constructor=n,t.fn.tooltip.noConflict=function(){return t.fn.tooltip=i,this}}(jQuery),+function(t){"use strict";function e(e){return this.each(function(){var i=t(this),r=i.data("bs.popover"),o="object"==typeof e&&e;!r&&/destroy|hide/.test(e)||(r||i.data("bs.popover",r=new n(this,o)),"string"==typeof e&&r[e]())})}var n=function(t,e){this.init("popover",t,e)};if(!t.fn.tooltip)throw new Error("Popover requires tooltip.js");n.VERSION="3.3.7",n.DEFAULTS=t.extend({},t.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),n.prototype=t.extend({},t.fn.tooltip.Constructor.prototype),n.prototype.constructor=n,n.prototype.getDefaults=function(){return n.DEFAULTS},n.prototype.setContent=function(){var t=this.tip(),e=this.getTitle(),n=this.getContent();t.find(".popover-title")[this.options.html?"html":"text"](e),t.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof n?"html":"append":"text"](n),t.removeClass("fade top bottom left right in"),t.find(".popover-title").html()||t.find(".popover-title").hide()},n.prototype.hasContent=function(){return this.getTitle()||this.getContent()},n.prototype.getContent=function(){var t=this.$element,e=this.options;return t.attr("data-content")||("function"==typeof e.content?e.content.call(t[0]):e.content)},n.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var i=t.fn.popover;t.fn.popover=e,t.fn.popover.Constructor=n,t.fn.popover.noConflict=function(){return t.fn.popover=i,this}}(jQuery),+function(t){"use strict";function e(n,i){this.$body=t(document.body),this.$scrollElement=t(t(n).is(document.body)?window:n),this.options=t.extend({},e.DEFAULTS,i),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",t.proxy(this.process,this)),this.refresh(),this.process()}function n(n){return this.each(function(){var i=t(this),r=i.data("bs.scrollspy"),o="object"==typeof n&&n;r||i.data("bs.scrollspy",r=new e(this,o)),"string"==typeof n&&r[n]()})}e.VERSION="3.3.7",e.DEFAULTS={offset:10},e.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},e.prototype.refresh=function(){var e=this,n="offset",i=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),t.isWindow(this.$scrollElement[0])||(n="position",i=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var e=t(this),r=e.data("target")||e.attr("href"),o=/^#./.test(r)&&t(r);return o&&o.length&&o.is(":visible")&&[[o[n]().top+i,r]]||null}).sort(function(t,e){return t[0]-e[0]}).each(function(){e.offsets.push(this[0]),e.targets.push(this[1])})},e.prototype.process=function(){var t,e=this.$scrollElement.scrollTop()+this.options.offset,n=this.getScrollHeight(),i=this.options.offset+n-this.$scrollElement.height(),r=this.offsets,o=this.targets,a=this.activeTarget;if(this.scrollHeight!=n&&this.refresh(),e>=i)return a!=(t=o[o.length-1])&&this.activate(t);if(a&&e<r[0])return this.activeTarget=null,this.clear();for(t=r.length;t--;)a!=o[t]&&e>=r[t]&&(void 0===r[t+1]||e<r[t+1])&&this.activate(o[t])},e.prototype.activate=function(e){this.activeTarget=e,this.clear();var n=this.selector+'[data-target="'+e+'"],'+this.selector+'[href="'+e+'"]',i=t(n).parents("li").addClass("active");i.parent(".dropdown-menu").length&&(i=i.closest("li.dropdown").addClass("active")),i.trigger("activate.bs.scrollspy")},e.prototype.clear=function(){t(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var i=t.fn.scrollspy;t.fn.scrollspy=n,t.fn.scrollspy.Constructor=e,t.fn.scrollspy.noConflict=function(){return t.fn.scrollspy=i,this},t(window).on("load.bs.scrollspy.data-api",function(){t('[data-spy="scroll"]').each(function(){var e=t(this);n.call(e,e.data())})})}(jQuery),+function(t){"use strict";function e(e){return this.each(function(){var i=t(this),r=i.data("bs.tab");r||i.data("bs.tab",r=new n(this)),"string"==typeof e&&r[e]()})}var n=function(e){this.element=t(e)};n.VERSION="3.3.7",n.TRANSITION_DURATION=150,n.prototype.show=function(){var e=this.element,n=e.closest("ul:not(.dropdown-menu)"),i=e.data("target");if(i||(i=e.attr("href"),i=i&&i.replace(/.*(?=#[^\s]*$)/,"")),!e.parent("li").hasClass("active")){var r=n.find(".active:last a"),o=t.Event("hide.bs.tab",{relatedTarget:e[0]}),a=t.Event("show.bs.tab",{relatedTarget:r[0]});if(r.trigger(o),e.trigger(a),!a.isDefaultPrevented()&&!o.isDefaultPrevented()){var s=t(i);this.activate(e.closest("li"),n),this.activate(s,s.parent(),function(){r.trigger({type:"hidden.bs.tab",relatedTarget:e[0]}),e.trigger({type:"shown.bs.tab",relatedTarget:r[0]})})}}},n.prototype.activate=function(e,i,r){function o(){a.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),e.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),s?(e[0].offsetWidth,e.addClass("in")):e.removeClass("fade"),e.parent(".dropdown-menu").length&&e.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),r&&r()}var a=i.find("> .active"),s=r&&t.support.transition&&(a.length&&a.hasClass("fade")||!!i.find("> .fade").length);a.length&&s?a.one("bsTransitionEnd",o).emulateTransitionEnd(n.TRANSITION_DURATION):o(),a.removeClass("in")};var i=t.fn.tab;t.fn.tab=e,t.fn.tab.Constructor=n,t.fn.tab.noConflict=function(){return t.fn.tab=i,this};var r=function(n){n.preventDefault(),e.call(t(this),"show")};t(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',r).on("click.bs.tab.data-api",'[data-toggle="pill"]',r);
+}(jQuery),+function(t){"use strict";function e(e){return this.each(function(){var i=t(this),r=i.data("bs.affix"),o="object"==typeof e&&e;r||i.data("bs.affix",r=new n(this,o)),"string"==typeof e&&r[e]()})}var n=function(e,i){this.options=t.extend({},n.DEFAULTS,i),this.$target=t(this.options.target).on("scroll.bs.affix.data-api",t.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",t.proxy(this.checkPositionWithEventLoop,this)),this.$element=t(e),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};n.VERSION="3.3.7",n.RESET="affix affix-top affix-bottom",n.DEFAULTS={offset:0,target:window},n.prototype.getState=function(t,e,n,i){var r=this.$target.scrollTop(),o=this.$element.offset(),a=this.$target.height();if(null!=n&&"top"==this.affixed)return r<n&&"top";if("bottom"==this.affixed)return null!=n?!(r+this.unpin<=o.top)&&"bottom":!(r+a<=t-i)&&"bottom";var s=null==this.affixed,l=s?r:o.top,c=s?a:e;return null!=n&&r<=n?"top":null!=i&&l+c>=t-i&&"bottom"},n.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(n.RESET).addClass("affix");var t=this.$target.scrollTop(),e=this.$element.offset();return this.pinnedOffset=e.top-t},n.prototype.checkPositionWithEventLoop=function(){setTimeout(t.proxy(this.checkPosition,this),1)},n.prototype.checkPosition=function(){if(this.$element.is(":visible")){var e=this.$element.height(),i=this.options.offset,r=i.top,o=i.bottom,a=Math.max(t(document).height(),t(document.body).height());"object"!=typeof i&&(o=r=i),"function"==typeof r&&(r=i.top(this.$element)),"function"==typeof o&&(o=i.bottom(this.$element));var s=this.getState(a,e,r,o);if(this.affixed!=s){null!=this.unpin&&this.$element.css("top","");var l="affix"+(s?"-"+s:""),c=t.Event(l+".bs.affix");if(this.$element.trigger(c),c.isDefaultPrevented())return;this.affixed=s,this.unpin="bottom"==s?this.getPinnedOffset():null,this.$element.removeClass(n.RESET).addClass(l).trigger(l.replace("affix","affixed")+".bs.affix")}"bottom"==s&&this.$element.offset({top:a-e-o})}};var i=t.fn.affix;t.fn.affix=e,t.fn.affix.Constructor=n,t.fn.affix.noConflict=function(){return t.fn.affix=i,this},t(window).on("load",function(){t('[data-spy="affix"]').each(function(){var n=t(this),i=n.data();i.offset=i.offset||{},null!=i.offsetBottom&&(i.offset.bottom=i.offsetBottom),null!=i.offsetTop&&(i.offset.top=i.offsetTop),e.call(n,i)})})}(jQuery),define("bootstrap",["jquery"],function(){}),define("modal",["jquery","config","preferences","links","form","laconic","bootstrap"],function(t,e,n,i,r){!function(t){function o(e){e.hasClass("modal")||(e=e.closest(".modal")),e.find("[data-notagain]").each(function(){if(t(this).prop("checked"))return n.setNotAgain(t(this).attr("data-notagain")),!1})}function a(){var e=t.el.button({type:"button",class:"close","data-dismiss":"modal"});return t(e).html("&times;").on("click",function(e){e.preventDefault(),o(t(e.target))}),e}function s(e){return e.notagain&&n.persistent()?t.el.label(t.el.input({type:"checkbox","data-notagain":e.notagain,name:"dismiss"})," Don't show again!"):""}function l(){var e=t(this).find(".tm-input");e.each(function(){var e=t(this),n=e.data("prefilled"),i={};n&&(i.prefilled=n),e.tagsManager(i)})}var c="swishModal",u={_init:function(e){return this.each(function(){var e=t(this);e.addClass("swish-event-receiver"),e.on("help",function(t,n){e.swishModal("showHelp",n)}),e.on("pldoc",function(t,n){e.swishModal("showPlDoc",n)}),e.on("form",function(t,n){e.swishModal("showForm",n)}),e.on("dialog",function(t,n){e.swishModal("show",n)}),e.on("error",function(t,n){e.swishModal("show",n)}),e.on("alert",function(t,n){var i="<span class='glyphicon glyphicon-warning-sign'></span>";e.swishModal("show",{title:i,body:n})}),e.on("ajaxError",function(t,n){e.swishModal("showAjaxError",n)}),e.on("feedback",function(t,n){e.swishModal("feedback",n)}),e.on("show",function(t,n){e.swishModal("show",n)}),e.on("server_form",function(t,n){e.swishModal("server_form",n)})})},showHelp:function(i){var r=this;i.notagain&&n.notagain(i.notagain)||t.ajax({url:e.http.locations.help+"/"+i.file,dataType:"html",success:function(e){var n=t("<div>");n.html(e),r.swishModal("show",t.extend({title:n.find("title").text(),body:n},i))}})},showForm:function(n){var i=this;t.ajax({url:e.http.locations.form+"/"+n.file,dataType:"html",success:function(e){var r=t("<div>");r.html(e),i.swishModal("show",t.extend({title:r.find("legend").text(),body:r},n))}})},showPlDoc:function(t){function n(t){var n="("+t.name+")/"+t.arity;return t.module&&(n=t.module+":"+n),e.http.locations.pldoc_doc_for+"?header=false&object="+encodeURIComponent(n)}function i(t,e){return t.parents("div.modal-dialog").addClass("swish-embedded-manual"),"<iframe class='swish-embedded-manual' onload='javascript:resizeIframe(this);' src='"+e+"'></iframe>"}var r={title:"SWI-Prolog manual",body:function(){return i(this,n(t))}};return this.swishModal("show",r)},show:function(e){var r=t.el.div({class:"modal-body"}),c=t.el.h2(),u=t.el.div({class:"modal-content"},t.el.div({class:"modal-header"},s(e),a(),c),r),h=t.el.div({class:"modal fade",id:"ajaxModal",tabindex:-1,role:"dialog"},t.el.div({class:"modal-dialog"},u));if(e.notagain&&n.persistent()&&t(u).append(t.el.div({class:"modal-footer"},s(e))),r=t(r),"function"==typeof e.body){var d=e.body.call(r);d&&r.append(d)}else r.html(e.body);return t(c).html(e.title),t(h).modal({show:!0}).on("click","a",i.followLink).on("shown.bs.modal",l).on("hidden.bs.modal",function(){e.onclose&&e.onclose(),o(t(this)),t(this).remove()}),this},server_form:function(e){var n=t(this);return void 0===r&&(r=require("form")),this.swishModal("show",{title:e.title,body:function(){elem=t(this),t.ajax({url:e.url,data:e.data,success:function(t){elem.append(t)},error:function(t){n.swishModal("showAjaxError",t)}}),elem.on("click","button[data-action]",function(i){var o=t(i.target).closest("form"),a=r.serializeAsObject(o,!0),s=t(i.target).closest("button");return 0==s.data("form_data")?t.ajax({url:s.data("action"),success:function(t){return s.closest(".modal").modal("hide"),e.onreply&&e.onreply.call(s[0],t),i.preventDefault(),!1},error:function(t){n.swishModal("showAjaxError",t)}}):t.ajax({url:s.data("action"),data:JSON.stringify(a),dataType:"json",contentType:"application/json",type:"POST",success:function(t){return"success"==t.status?(s.closest(".modal").modal("hide"),e.onreply&&e.onreply.call(s[0],t),i.preventDefault(),!1):void("error"==t.status?r.formError(o,t.error):alert("Updated failed: "+JSON.serializeAsObject(t)))},error:function(t){n.swishModal("showAjaxError",t)}}),i.preventDefault(),!1})}})},showAjaxError:function(e){var n=t.el.div();t(n).html(e.responseText);var i=t(n).find("h1"),r=i.text()||"Server error";i.remove();var o={title:r,body:n};this.swishModal("show",o)},feedback:function(e){var n=t.el.div({class:"feedback "+e.type||""});return t(n).html(e.html),t(e.owner||"body").append(n),setTimeout(function(){t(n).hide(400,function(){t(n).remove()})},e.duration||1500),this}};window.resizeIframe=function(t){t.style.height=0,t.style.height=t.contentWindow.document.body.scrollHeight+20+"px"},t.fn.swishModal=function(e){return u[e]?u[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery."+c):u._init.apply(this,arguments)}}(jQuery);var o=1;return{ajaxError:function(e){t(".swish-event-receiver").trigger("ajaxError",e)},feedback:function(e){t(".swish-event-receiver").trigger("feedback",e)},alert:function(e){t(".swish-event-receiver").trigger("alert",e)},help:function(e){t(".swish-event-receiver").trigger("help",e)},show:function(e){t(".swish-event-receiver").trigger("show",e)},server_form:function(e){t(".swish-event-receiver").trigger("server_form",e)},notify:function(e,n){var i="ntf-"+(n.wsid||o++),r=t.el.div({class:"notification notify-arrow",id:i}),a=e.offset();if(t("body").append(r),n.html?t(r).html(n.html):n.dom&&t(r).append(n.dom),t(r).css({left:a.left+e.width()-t(r).outerWidth()+15,top:a.top+e.height()+12}).on("click",function(){t(r).remove()}).show(n.fadeIn||400),0!==n.time){var s=n.time;s||(s=e.hasClass("myself")?1e3:5e3),setTimeout(function(){t(r).hide(n.fadeOut||400,function(){t("#"+i).remove(),n.onremove&&n.onremove(n),e.chat("unnotify",n.wsid)})},s)}}}}),function(t){"use strict";var e={prefilled:null,CapitalizeFirstLetter:!1,preventSubmitOnEnter:!0,isClearInputOnEsc:!0,externalTagId:!1,prefillIdFieldName:"Id",prefillValueFieldName:"Value",AjaxPush:null,AjaxPushAllTags:null,AjaxPushParameters:null,delimiters:[9,13,44],backspace:[8],maxTags:0,hiddenTagListName:null,hiddenTagListId:null,replace:!0,output:null,deleteTagsOnBackspace:!0,tagsContainer:null,tagCloseIcon:"x",tagClass:"",validator:null,onlyTagList:!1,tagList:null,fillInputOnTagRemove:!1},n={pushTag:function(e,n,r){var o,a,s,l,c,u,h,d,f,p,g,m=t(this),v=m.data("opts"),y=m.data("tlis"),x=m.data("tlid");if(e=i.trimTag(e,v.delimiterChars),e&&!(e.length<=0)){if(v.onlyTagList&&void 0!==v.tagList&&v.tagList){var b=v.tagList;t.each(b,function(t,e){b[t]=e.toLowerCase()});var _=t.inArray(e.toLowerCase(),b);if(-1===_)return}if(v.CapitalizeFirstLetter&&e.length>1&&(e=e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()),v.validator&&!v.validator(e))return void m.trigger("tm:invalid",e);if(!(v.maxTags>0&&y.length>=v.maxTags)){if(o=!1,a=jQuery.map(y,function(t){return t.toLowerCase()}),c=t.inArray(e.toLowerCase(),a),-1!==c&&(o=!0),o)if(m.trigger("tm:duplicated",e),v.blinkClass)for(var w=0;w<6;++w)t("#"+m.data("tm_rndid")+"_"+x[c]).queue(function(e){t(this).toggleClass(v.blinkClass),e()}).delay(100);else t("#"+m.data("tm_rndid")+"_"+x[c]).stop().animate({backgroundColor:v.blinkBGColor_1},100).animate({backgroundColor:v.blinkBGColor_2},100).animate({backgroundColor:v.blinkBGColor_1},100).animate({backgroundColor:v.blinkBGColor_2},100).animate({backgroundColor:v.blinkBGColor_1},100).animate({backgroundColor:v.blinkBGColor_2},100);else v.externalTagId===!0?(void 0===r&&t.error("externalTagId is not passed for tag -"+e),l=r):(s=Math.max.apply(null,x),s=s===-(1/0)?0:s,l=++s),n||m.trigger("tm:pushing",[e,l]),y.push(e),x.push(l),n||null!==v.AjaxPush&&null==v.AjaxPushAllTags&&t.inArray(e,v.prefilled)===-1&&t.post(v.AjaxPush,t.extend({tag:e},v.AjaxPushParameters)),u=m.data("tm_rndid")+"_"+l,h=m.data("tm_rndid")+"_Remover_"+l,d=t("<span/>").text(e).html(),f='<span class="'+i.tagClasses.call(m)+'" id="'+u+'">',f+="<span>"+d+"</span>",f+='<a href="#" class="tm-tag-remove" id="'+h+'" TagIdToRemove="'+l+'">',f+=v.tagCloseIcon+"</a></span> ",p=t(f),null!==v.tagsContainer?t(v.tagsContainer).append(p):x.length>1?(g=m.siblings("#"+m.data("tm_rndid")+"_"+x[x.length-2]),g.after(p)):m.before(p),p.find("#"+h).on("click",m,function(e){e.preventDefault();var n=parseInt(t(this).attr("TagIdToRemove"));i.spliceTag.call(m,n,e.data)}),i.refreshHiddenTagList.call(m),n||m.trigger("tm:pushed",[e,l]),i.showOrHide.call(m);m.val("")}}},popTag:function(){var e,n,r=t(this),o=r.data("tlis"),a=r.data("tlid");a.length>0&&(e=a.pop(),n=o[o.length-1],r.trigger("tm:popping",[n,e]),o.pop(),t("#"+r.data("tm_rndid")+"_"+e).remove(),i.refreshHiddenTagList.call(r),r.trigger("tm:popped",[n,e]))},empty:function(){for(var e,n=t(this),r=n.data("tlis"),o=n.data("tlid");o.length>0;)e=o.pop(),r.pop(),t("#"+n.data("tm_rndid")+"_"+e).remove(),i.refreshHiddenTagList.call(n);n.trigger("tm:emptied",null),i.showOrHide.call(n)},tags:function(){var t=this,e=t.data("tlis");return e}},i={showOrHide:function(){var t=this,e=t.data("opts"),n=t.data("tlis");e.maxTags>0&&n.length<e.maxTags&&(t.show(),t.trigger("tm:show")),e.maxTags>0&&n.length>=e.maxTags&&(t.hide(),t.trigger("tm:hide"))},tagClasses:function(){var e,n=t(this),i=n.data("opts"),r=i.tagBaseClass,o=i.inputBaseClass;return e=r,n.attr("class")&&t.each(n.attr("class").split(" "),function(t,n){n.indexOf(o+"-")!==-1&&(e+=" "+r+n.substring(o.length))}),e+=i.tagClass?" "+i.tagClass:""},trimTag:function(e,n){var i;for(e=t.trim(e),i=0;i<e.length&&t.inArray(e.charCodeAt(i),n)===-1;i++);return e.substring(0,i)},refreshHiddenTagList:function(){var e=t(this),n=e.data("tlis"),i=e.data("lhiddenTagList");i&&t(i).val(n.join(e.data("opts").baseDelimiter)).change(),e.trigger("tm:refresh",n.join(e.data("opts").baseDelimiter))},killEvent:function(t){t.cancelBubble=!0,t.returnValue=!1,t.stopPropagation(),t.preventDefault()},keyInArray:function(e,n){return t.inArray(e.which,n)!==-1},applyDelimiter:function(e){var i=t(this);n.pushTag.call(i,t(this).val()),e.preventDefault()},prefill:function(e){var i=t(this),r=i.data("opts");t.each(e,function(t,e){r.externalTagId===!0?n.pushTag.call(i,e[r.prefillValueFieldName],!0,e[r.prefillIdFieldName]):n.pushTag.call(i,e,!0)})},pushAllTags:function(e,n){var i=t(this),r=i.data("opts"),o=i.data("tlis");r.AjaxPushAllTags&&("tm:pushed"===e.type&&t.inArray(n,r.prefilled)!==-1||t.post(r.AjaxPush,t.extend({tags:o.join(r.baseDelimiter)},r.AjaxPushParameters)))},spliceTag:function(e){var n,r=this,o=r.data("tlis"),a=r.data("tlid"),s=t.inArray(e,a);-1!==s&&(n=o[s],r.trigger("tm:splicing",[n,e]),t("#"+r.data("tm_rndid")+"_"+e).remove(),o.splice(s,1),a.splice(s,1),i.refreshHiddenTagList.call(r),r.trigger("tm:spliced",[n,e])),i.showOrHide.call(r)},init:function(r){var o,a,s=t.extend({},e,r);return s.hiddenTagListName=null===s.hiddenTagListName?"hidden-"+this.attr("name"):s.hiddenTagListName,o=s.delimeters||s.delimiters,a=[9,13,17,18,19,37,38,39,40],s.delimiterChars=[],s.delimiterKeys=[],t.each(o,function(e,n){t.inArray(n,a)!==-1?s.delimiterKeys.push(n):s.delimiterChars.push(n)}),s.baseDelimiter=String.fromCharCode(s.delimiterChars[0]||44),s.tagBaseClass="tm-tag",s.inputBaseClass="tm-input",t.isFunction(s.validator)||(s.validator=null),this.each(function(){var e=t(this),r="",o="",a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";if(e.data("tagManager"))return!1;e.data("tagManager",!0);for(var l=0;l<5;l++)o+=a.charAt(Math.floor(Math.random()*a.length));if(e.data("tm_rndid",o),e.data("opts",s).data("tlis",[]).data("tlid",[]),null===s.output?(r=t("<input/>",{type:"hidden",name:s.hiddenTagListName}),e.after(r),e.data("lhiddenTagList",r)):e.data("lhiddenTagList",t(s.output)),s.AjaxPushAllTags&&(e.on("tm:spliced",i.pushAllTags),e.on("tm:popped",i.pushAllTags),e.on("tm:pushed",i.pushAllTags)),e.on("focus keypress",function(e){t(this).popover&&t(this).popover("hide")}),s.isClearInputOnEsc&&e.on("keyup",function(e){27===e.which&&(t(this).val(""),i.killEvent(e))}),e.on("keypress",function(t){i.keyInArray(t,s.delimiterChars)&&i.applyDelimiter.call(e,t)}),e.on("keydown",function(t){13===t.which&&s.preventSubmitOnEnter&&i.killEvent(t),i.keyInArray(t,s.delimiterKeys)&&i.applyDelimiter.call(e,t)}),s.deleteTagsOnBackspace&&e.on("keydown",function(r){i.keyInArray(r,s.backspace)&&t(this).val().length<=0&&(n.popTag.call(e),i.killEvent(r))}),s.fillInputOnTagRemove&&e.on("tm:popped",function(e,n){t(this).val(n)}),e.change(function(t){/webkit/.test(navigator.userAgent.toLowerCase())||e.focus(),i.killEvent(t)}),null!==s.prefilled)"object"==typeof s.prefilled?i.prefill.call(e,s.prefilled):"string"==typeof s.prefilled?i.prefill.call(e,s.prefilled.split(s.baseDelimiter)):"function"==typeof s.prefilled&&i.prefill.call(e,s.prefilled());else if(null!==s.output){if(t(s.output)&&t(s.output).val()){t(s.output)}i.prefill.call(e,t(s.output).val().split(s.baseDelimiter))}}),this}};t.fn.tagsManager=function(e){var r=t(this);return 0 in this?n[e]?n[e].apply(r,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?(t.error("Method "+e+" does not exist."),!1):i.init.apply(this,arguments):this}}(jQuery),define("tagmanager",["jquery"],function(){}),define("form",["jquery","config","modal","laconic","tagmanager"],function(t,e,n){function i(t){return void 0===t&&(t=u),"col-xs-"+(12-t)}function r(e,n,i){return i=i||u,t.el.label({class:"control-label col-xs-"+i,for:e},n)}function o(e,n){var i={name:e,type:"checkbox"};return n=n||{},n.checked&&(i.checked="checked"),n.title&&(i.title=n.title),t.el.input(i)}function a(e,n){var i={name:e,type:"text",class:"form-control"};return n=n||{},n.placeholder&&(i.placeholder=n.placeholder),n.title&&(i.title=n.title),n.value&&(i.value=n.value),n.disabled&&(i.disabled=n.disabled),n.readonly&&(i.readonly=n.readonly),n.type&&(i.type=n.type),t.el.input(i)}function s(e,n,i){var r={name:e,type:"text",class:"tm-input tag-list"};n&&(r.placeholder=n);var o=t.el.input(r);return i&&t(o).data("prefilled",i),o}function l(e,n){var i={name:e,class:"form-control"};return n=n||{},n.placeholder&&(i.placeholder=n.placeholder),t.el.textarea(i,n.value||"")}function c(e,n,i){function r(e){if("string"==typeof e)e==i.value?o.append(t.el.option({selected:"selected"},e)):o.append(t.el.option(e));else{var n={value:e.value};e.value==i.value&&(n.selected="selected"),o.append(t.el.option(n,e.label))}}var o=t(t.el.select({class:"form-control",name:e}));i=i||{};for(var a=0;a<n.length;a++)r(n[a]);return o[0]}var u=3,h={serializeAsObject:function(e,n){var i=e.serializeArray(),r=[],o={};e.find("div.checkboxes.array").each(function(){var e=t(this),n=[];e.find("input:checked").each(function(){var e=t(this).attr("name");n.push(e)}),e.find("input").each(function(){var e=t(this).attr("name");r.push(e)}),o[e.attr("name")]=n});for(var a=0;a<i.length;a++){var s,l=i[a].name,c=i[a].value,u=e.find('[name="'+l+'"]'),h=u.prop("type");(s=u.data("json-value"))?o[l]=s:""==c&&1!=n||("hidden"==h&&0==l.indexOf("hidden-")?(l=l.slice("hidden-".length),void 0==o[l]?o[l]=c.split(","):o[l]=c.split(",").concat(o[l])):"text"==h&&u.hasClass("tag-list")?""!=c&&(void 0!==o[l]?o[l].push(c):o[l]=[c]):"number"==h?o[l]=parseInt(c):"checkbox"==h?r.indexOf(l)==-1&&(o[l]="on"==c):o[l]=c)}return e.find("[type=checkbox]").each(function(){var e=t(this),n=e.prop("name");1!=e.prop("disabled")&&void 0===o[n]&&r.indexOf(n)==-1&&(o[n]=!1)}),o},formError:function(t,e){if(t.find(".has-error").removeClass("has-error"),t.find(".help-block.with-errors").remove(),e)if("form_error"==e.code||"input_error"==e.code){errors=e.data.split("\n");for(var i=0;i<errors.length;i++){var r=errors[i].split(/:\s*(.*)?/);h.fieldError(t,r[0],r[1])}}else n.alert(e.data)},fieldError:function(e,n,i){var r=e.find("input[name="+n+"]");if(r.length>0){var o=r.closest(".form-group");r.parent().hasClass("input-group")&&(r=r.parent()),o.addClass("has-error"),r.after(t.el.p({class:"help-block with-errors"},i))}else alert("Missing value for "+n)},showDialog:function(e){t(".swish-event-receiver").trigger("dialog",e)},formBroadcast:function(e,n){t(".swish-event-receiver").trigger(e,n)},fields:{fileName:function(n,s,l,c){var u,h,d=e.swish.community_examples?"Public | Example | name":"Public | name",f="(leave empty for generated random name)",p=t.el.div({class:"form-group"},r("name",d),t.el.div({class:i()},t.el.div({class:"input-group"},t.el.span({class:"input-group-addon",title:"If checked, other users can find this program"},o("public",{checked:s})),e.swish.community_examples?t.el.span({class:"input-group-addon",title:"If checked, add to examples menu"},o("example",{checked:l})):void 0,h=a("name",{placeholder:"Name "+f,title:"Public name of your program",value:n,disabled:c}),u=t.el.span({class:"input-group-btn"},t.el.button({class:"btn btn-success",type:"button"},"Fork")))));return t(u).on("click",function(){var e=t(h).closest("form").find(".btn.btn-primary");t(h).attr("placeholder","Fork as "+f),t(h).val(""),e.text(e.text().replace("Update","Fork"))}),p},title:function(e){var n=t.el.div({class:"form-group"},r("title","Title"),t.el.div({class:i()},a("title",{placeholder:"Descriptive title",value:e})));return n},author:function(e,n){var o={placeholder:"Your name",value:e};e&&n&&(o.readonly=!0,o.title="Verified author name");var s=t.el.div({class:"form-group"},r("author","Author"),t.el.div({class:i()},a("author",o)));return s},date:function(e,n,o){o=o||r;var s=t.el.div({class:"form-group"},r(o,n),t.el.div({class:i()},a(o,{disabled:!0,value:new Date(1e3*e).toLocaleString()})));return s},description:function(e){var n=t.el.div({class:"form-group"},r("description","Description"),t.el.div({class:i()},l("description",{value:e})));return n},commit_message:function(e){var n=t.el.div({class:"form-group"},r("commit_message","Changes"),t.el.div({class:i()},l("commit_message",{value:e,placeholder:"Describe your changes here"})));return n},tags:function(e){var n=t.el.div({class:"form-group"},r("tags","Tags"),t.el.div({class:i()},s("tags","Tags help finding this code",e)));return n},modify:function(t,e){function n(n,r){i.push({name:n,label:r,value:t.indexOf(n)!=-1,readonly:!e})}var i=[],r={name:"modify",label:"Can save new version",type:"array"};return n("any","Anyone"),n("login","Logged in users"),n("owner","Only me"),e?r.title="Specify who can save an updated version of this file":r.title="Only logged in users and owners can set permissions",h.fields.checkboxes(i,r)},follow:function(t){return h.fields.checkboxes([{name:"follow",label:"Follow this document",value:!!t,readonly:!t}],{name:"options",label:"",title:"Notify about activity (updates, chat)\nRequires being logged in with valid email"})},projection:function(e){var n=t.el.div({class:"form-group"},r("projection","Projection"),t.el.div({class:i()},a("projection",{placeholder:"Columns",value:e})));return n},csvFormat:function(e,n){var o;return e=e||["prolog"],n=n||e[0],o=1==e.length?t.el.input({type:"hidden",name:"format",value:e[0]}):t.el.div({class:"form-group"},r("format","Format"),t.el.div({class:i()},c("format",e,{value:n})))},limit:function(e,n){var s=t.el.div({class:"form-group"},r("name","Distinct | limit"),t.el.div({class:i()},t.el.div({class:"input-group"},t.el.span({class:"input-group-addon",title:"If checked only return distinct results"},o("distinct",{checked:n})),a("limit",{placeholder:"Maximum result count (blank for unlimited)",title:"Limit results",value:e}))));return s},checkboxes:function(e,n){var i;n=t.extend({name:"options",label:"Options",col:u},n||{});var o={class:"checkboxes col-xs-"+(12-n.col),name:n.name};n.title&&(o.title=n.title),n.type&&(o.class+=" "+n.type);for(var a=t.el.div({class:"form-group"},r(n.name,n.label,n.col),i=t.el.div(o)),s=0;s<e.length;s++){var l=e[s],c={type:"checkbox",name:l.name,autocomplete:"false"};l.value&&(c.checked="checked"),l.readonly&&(c.disabled="disabled"),t(i).append(t.el.label({class:"checkbox-inline"},t.el.input(c),l.label))}return a},chunk:function(e){var n=t.el.div({class:"form-group"},r("count","Initial solutions",3),t.el.div({class:"col-xs-9"},t.el.div({class:"input-group"},a("chunk",{title:"Initial number of solutions",type:"number",value:e}))));return n},name:function(e,n){n=n||3;var i=t.el.div({class:"form-group"},r("name","Name",n),t.el.div({class:"col-xs-"+(12-n)},a("name",{placeholder:"Name",value:e})));return i},filename:function(e,n){n=n||3;var i=t.el.div({class:"form-group"},r("filename","File name",n),t.el.div({class:"col-xs-"+(12-n)},a("filename",{placeholder:"File name",value:e})));return i},hidden:function(e,n){if(void 0!==n)return t.el.input({type:"hidden",name:e,value:n})},buttons:function(e){e=e||{};var n=e.label||"Save program",i=e.offset||u,r=t.el.button({name:"save",class:"btn btn-primary"},n);t(r).on("click",function(n){var i=t(n.target).parents("form")[0],r=h.serializeAsObject(t(i));return e.action(n,r),t(n.target).parents(".modal").modal("hide"),n.preventDefault(),!1});var o=t.el.div({class:"form-group"},t.el.div({class:"col-xs-offset-"+i+" col-xs-"+(12-i)},r,t.el.button({name:"cancel",class:"btn btn-danger","data-dismiss":"modal"},"Cancel")));return o},radio:function(e,n,i){var r=t.el.div({class:"btn-group","data-toggle":"buttons"});i=i||"radio";for(var o=0;o<n.length;o++){var a="btn btn-default btn-xs";n[o].active&&(a+=" active");var s={type:i,name:e,autocomplete:"off",value:n[o].value},l={class:a};n[o].title&&(l.title=n[o].title),t(r).append(t.el.label(l,t.el.input(s),n[o].label))}return r}},widgets:{glyphIcon:function(e){return t.el.span({class:"glyphicon glyphicon-"+e})},typeIcon:function(e){return t.el.span({class:"dropdown-icon type-icon "+e})},glyphIconButton:function(e,n){var i={class:"btn",type:"button"};return n.action&&(i["data-action"]=n.action),n.title&&(i.title=n.title),n.class&&(i.class+=" "+n.class),t.el.button(i,h.widgets.glyphIcon(e))},dropdownButton:function(e,n){n||(n={});var i=n.divClass,r=n.ulClass,o=t.el.div({class:"btn-group dropdown"+(i?" "+i:"")},t.el.button({class:"dropdown-toggle","data-toggle":"dropdown"},e),t.el.ul({class:"dropdown-menu"+(r?" "+r:"")}));return n.actions&&h.widgets.populateMenu(t(o),n.client,n.actions),o},populateMenu:function(e,n,i){function r(e,i){var r=t(i).data("action");r&&r.call(n,i)}function o(e,n){if(void 0!==n)if(0==e.indexOf("--"))a.append(t.el.li({class:"divider"}));else{var i=t.el.a(e);t(i).data("action",n),a.append(t.el.li(i))}}var a=e.find(".dropdown-menu"),s=a.data("menu")||{};for(var l in i)i.hasOwnProperty(l)&&o(l,i[l]);return s.bound||(s.bound=!0,a.on("click","a",function(t){r(t,this)})),a.data("menu",s),e}}};return h}),define("history",["jquery","preferences","form"],function(t,e,n){var i={push:function(t){var e=window.location.pathname;if(e!=t.url){var n={location:t.url};t.meta&&(n.meta=t.meta),window.history.pushState(n,"",t.url),document.title="SWISH -- "+(t.file?t.file:"SWI-Prolog for SHaring")}},pop:function(e){e.state&&(e.state.meta&&e.state.meta.name?t(".swish").swish("playFile",e.state.meta.name):e.state.location&&(window.location=e.state.location))},recentMaxLength:10,addRecent:function(t){function n(t,e){return t.type==e.type&&t.id==e.id}for(var r=e.getVal("recentDocuments")||[],o=0;o<r.length;o++)if(n(t,r[o])){r.splice(o,1);break}for(;r.length+1>i.recentMaxLength;)r.pop();r.splice(0,0,t),e.setVal("recentDocuments",r)},openRecent:function(t,e){return i.openRecent[e.st_type](t,e)},updateRecentUL:function(){var i=t(this),r=e.getVal("recentDocuments")||[];i.html("");for(var o=0;o<r.length;o++){var a=r[o];if(a.id){var s=t.el.a(n.widgets.typeIcon(a.id.split(".").pop()),a.label||a.id);t(s).data("document",a),i.append(t.el.li(s))}}}};return i.openRecent.gitty=function(e,n){t(e.target).parents(".swish").swish("playFile",n.id)},window.onpopstate=i.pop,i}),define("utils",["jquery"],function(t){var e={htmlEncode:function(t){return t?document.createElement("a").appendChild(document.createTextNode(t)).parentNode.innerHTML:""},generateUUID:function(){var t=(new Date).getTime(),e="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){var n=(t+16*Math.random())%16|0;return t=Math.floor(t/16),("x"==e?n:7&n|8).toString(16)});return e},flash:function(t){t.addClass("flash"),setTimeout(function(){t.removeClass("flash")},1500)}};return"function"!=typeof String.prototype.startsWith&&(String.prototype.startsWith=function(t){return 0===this.lastIndexOf(t,0)}),e}),define("chat",["jquery","config","preferences","form","modal","utils"],function(t,e,n,i,r,o){var a=1e3,s=3e5;!function(t){function l(e,r){r=r||{};var o,a,s=r.name;s||"self"!=r.role||(s="Me"),s||(s=e);var l=t.el.li({class:"dropdown user",id:e,title:s},a=t.el.a({class:"dropdown-toggle avatar","data-toggle":"dropdown"},c(r)),o=t.el.ul({class:"dropdown-menu pull-right",title:""}));if("self"==r.role){t(a).append(t.el.b({class:"caret"}));var u=t.el.input({type:"text",placeholder:"Nick name",value:r.name||"",title:"Nick name"});o.append(t.el.li(u)),t(u).keypress(function(e){if(13==e.which){var i=t(u).val().trim();""!=i&&(t("#chat").trigger("send",{type:"set-nick-name",name:i}),n.setVal("nick-name",i)),t(u).closest(".dropdown.open").removeClass("open")}}),i.widgets.populateMenu(t(l),t("#chat"),{}),o.append(t.el.li({class:"divider"}))}return l}function c(e){return e.avatar?t.el.img({class:"avatar",src:e.avatar}):t.el.span({class:"avatar glyphicon glyphicon-user"})}function u(){var t=new Date;return t.getTime()}var h="chat",d=a,f=null,p={_init:function(n){return this.each(function(){var n=t(this),i={};n.data(h,i),n.on("click",function(e){var i=t(e.target).closest("li.user");1==i.length&&n.chat("unnotify",i.attr("id"))}),n.on("send",function(t,e){n.chat("send",e)}),t(window).bind("beforeunload",function(){n.chat("disconnect")}),e.swish.chat&&n.chat("connect")})},connect:function(){function t(t,i){var r=n.getVal(i);r&&("anon-avatar"==i&&(r=e.http.locations.avatar+r.split("/").pop()),o+=l+t+"="+encodeURIComponent(r),l="&")}var i=this,r=this.data(h),o=window.location.host+e.http.locations.swish_chat,l="?",c=window.location.protocol.replace("http","ws");return r.connection&&1==r.connection.readyState?this:(t("avatar","anon-avatar"),t("nickname","nick-name"),r.reconnect&&(o+=l+"reconnect="+encodeURIComponent(r.reconnect),l="&"),r.connection=new WebSocket(c+"//"+o,["v1.chat.swish.swi-prolog.org"]),r.connection.onerror=function(t){i.chat("userCount",void 0)},r.connection.onclose=function(t){null==f?(d*=2,d>s&&(d=s)):u()-f>3e5?d=a:(d*=2,d>s&&(d=s)),setTimeout(function(){i.chat("connect")},d)},r.connection.onmessage=function(t){var e=JSON.parse(t.data);e.origin=t.origin,e.type?i.chat(e.type,e):console.log(t)},void(r.connection.onopen=function(){}))},empty_queue:function(){for(var t=this.data(h);t.queue&&t.queue.length>0&&1==t.connection.readyState;){var e=t.queue.shift();t.connection.send(e)}},disconnect:function(){var t=this.data(h);return this.chat("send",{type:"unload"}),t.connection.onclose=function(){},t.connection.close(),t.connection=void 0,this},send:function(t){var e=this.data(h);if(e&&e.connection){var n=JSON.stringify(t);1!=e.connection.readyState?(e.queue?e.queue.push(n):e.queue=[n],this.chat("connect")):e.connection.send(n)}return this},subscribe:function(t,e){var n={type:"subscribe",channel:t};e&&(n.sub_channel=e),this.chat("send",n)},unsubscribe:function(t,e){var n={type:"unsubscribe",channel:t};sub_channel&&(n.sub_channel=sub_channel),this.chat("send",n)},welcome:function(e){var i=this.data(h);i.wsid&&i.wsid!=e.wsid&&this.html(""),i.wsid=e.wsid,i.reconnect=e.reconnect,e.avatar&&"generated"==e.avatar_source&&n.setVal("anon-avatar",e.avatar),e.role="self";var r=this.chat("addUser",e);t(r).addClass("myself"),this.chat("userCount",e.visitors),f=u(),e.check_login&&t("#login").login("update","check"),t(".storage").storage("chat_status"),this.chat("empty_queue")},userCount:function(e){var n=t("#user-count");void 0==e?n.parent().hide():(n.parent().show(),n.text(e))},gazers:function(t){if(t.gazers)for(var e=0;e<t.gazers.length;e++){var n=t.gazers[e];this.chat("addUser",n),n.file&&this.chat("addUserFile",n.wsid,n.file)}},profile:function(e){var i=t("#"+e.wsid);i.children("a").html("").append(c(e)),e.avatar&&(t("*[data-userid="+e.wsid+"] img.avatar").attr("src",e.avatar),"generated"==e.avatar_source&&n.setVal("anon-avatar",e.avatar)),e.name&&(i.prop("title",e.name),"set-nick-name"==e.reason&&(e.html="Named <i>"+o.htmlEncode(e.name)+"</i>",this.chat("notifyUser",e)))},rejoined:function(e){var n=t("#"+e.wsid);this.chat("lost",n,!1),e.visitors&&this.chat("userCount",e.visitors)},joined:function(t){t.visitors&&this.chat("userCount",t.visitors)},session_closed:function(){t("#login").login("update","session-closed")},notify:function(t){this.chat("notifyUser",t)},"chat-message":function(n){var i=t("div.chatroom").chatroom("rooms",n.docid);t(".storage").storage("chat_message",n),n.docid=="gitty:"+e.swish.hangout&&t("#broadcast-bell").chatbell("chat-message",n),i.length>0?(i.chatroom("add",n),n.displayed=!0):t("#"+n.user.id).length>0&&(msg=t.extend({},n),msg.wsid=n.user.id,msg.html="Wants to chat",this.chat("notifyUser",msg))},forbidden:function(t){r.alert(t.message||"Action is forbidden")},read_until:function(t,e){n.setDocVal(t,"chatBar",e)},broadcast_room:function(){return this.closest(".swish").find(".storage").storage("match",{file:e.swish.hangout})},notifyUser:function(t){function n(t){return("opened"==t.event||"closed"==t.event)&&t.event_argv&&t.event_argv[0]==e.swish.hangout}var i=this;n(t)&&!this.chat("broadcast_room")&&(t.create_user=!1);var o=this.chat("addUser",t);o&&o.length>0&&(t.onremove=function(){i.chat("unnotify",t.wsid)},r.notify(o,t),
+this.chat("updateFiles",t))},unnotify:function(e){return t("#"+e).hasClass("removed")&&this.chat("removeUser",e),this},updateFiles:function(e){function n(){return e.event_argv[0]}var i=t(this).data(h);if("opened"==e.event)this.chat("addUserFile",e.wsid,n());else if("closed"==e.event){var r=e.wsid==i.wsid?void 0:e.wsid;this.chat("removeUserFile",r,n(),!0)}},addUser:function(e){var n=t("#"+e.wsid);if(0==n.length){if(0==e.create_user)return null;n=t(l(e.wsid,e)),this.prepend(n)}else this.chat("lost",n,!1);return n},removeUser:function(e){"string"==typeof e&&(e={wsid:e}),void 0!==e.visitors&&this.chat("userCount",e.visitors);var n=t("#"+e.wsid);return 0==n.length?this:("close"!=e.reason?t("#ntf-"+e.wsid).length>0?n.addClass("removed"):n.hide(400,function(){this.remove()}):this.chat("lost",n,!0),this)},lost:function(e,n){n?e.addClass("lost"):e.removeClass("lost"),e.each(function(){var i=t(this);if(n)i.data("lost-timer",setTimeout(function(){e.hasClass("lost")&&e.remove()},6e4));else{var r=i.data("lost-timer");r&&(clearTimeout(r),i.data("lost-timer",void 0))}})},user_info:function(e){var n=t(this),i={};if((!e||e.indexOf("id")>=0)&&(i.id=n.attr("id")),!e||e.indexOf("name")>=0){var r=n.prop("title");r&&"Me"!==r&&(i.name=r)}return(!e||e.indexOf("avatar")>=0)&&(i.avatar=n.find("img.avatar").attr("src")),i},users:function(e){var n=[],i={users:n};return this.find("li.user[id]").each(function(){var r=t(this),o=r.hasClass("myself"),a=r.chat("user_info",o?void 0:e);o&&(i.self=t.extend({},a),a.is_self=!0),n.push(a)}),i},self:function(t){var e=this.find("li.user.myself[id]");return e.chat("user_info",t)},addUserFile:function(e,n){var i,r=t("#"+e),o=r.find("ul.dropdown-menu");if(o.find("li.file").each(function(){if(t(this).data("file")==n)return i=this,!1}),void 0==i){var a=n.split(".").pop();o.append(t.el.li({class:"file","data-file":n,title:"Shared file"},t.el.a(t.el.span({class:"dropdown-icon type-icon "+a}),n)))}return this},removeUserFile:function(e,n,i){function r(e){var r=e.children("ul.dropdown-menu");r.find("li.file").each(function(){if(t(this).data("file")==n)return t(this).remove(),i&&!e.hasClass("myself")&&0==r.find("li.file").length&&o.chat("removeUser",e.attr("id")),!1})}var o=this;e?r(t("#"+e)):this.children().each(function(){r(t(this),n,i)})}};t.fn.chat=function(e){return p[e]?p[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery."+h):p._init.apply(this,arguments)}}(jQuery)}),function(t,e){var n=0,i=null,r=[],o=null;t.fn.split=function(a){function s(t){if("number"==typeof t)return t;if("string"==typeof t){var e=t.match(/^([0-9\.]+)(px|%)$/);if(e){if("px"==e[2])return+e[1];if("vertical"==h.orientation)return p*+e[1]/100;if("horizontal"==h.orientation)return g*+e[1]/100}}}var l=this.data("splitter");if(l)return l;var c,u,h=t.extend({limit:100,orientation:"horizontal",position:"50%",invisible:!1,onDragStart:t.noop,onDragEnd:t.noop,onDrag:t.noop},a||{});this.settings=h;var d,f=this.children();"vertical"==h.orientation?(c=f.first().addClass("left_panel"),u=c.next().addClass("right_panel"),d="vsplitter"):"horizontal"==h.orientation&&(c=f.first().addClass("top_panel"),u=c.next().addClass("bottom_panel"),d="hsplitter"),h.invisible&&(d+=" splitter-invisible");var p=this.width(),g=this.height(),m=n++;this.addClass("splitter_panel");var v,y=t("<div/>").addClass(d).bind("mouseenter touchstart",function(){i=m}).bind("mouseleave touchend",function(){i=null}).insertAfter(c),x=t.extend(this,{refresh:function(){var t=this.width(),e=this.height();p==t&&g==e||(p=this.width(),g=this.height(),x.position(v))},position:function(){return"vertical"==h.orientation?function(t,n){if(t===e)return v;v=s(t);var i=y.width(),r=i/2;if(h.invisible){var o=c.width(v).outerWidth();u.width(x.width()-o),y.css("left",o-r)}else{var o=c.width(v-r).outerWidth();u.width(x.width()-o-i),y.css("left",o)}return n||x.find(".splitter_panel").trigger("splitter.resize"),x}:"horizontal"==h.orientation?function(t,n){if(t===e)return v;v=s(t);var i=y.height(),r=i/2;if(h.invisible){var o=c.height(v).outerHeight();u.height(x.height()-o),y.css("top",o-r)}else{var o=c.height(v-r).outerHeight();u.height(x.height()-o-i),y.css("top",o)}return n||x.find(".splitter_panel").trigger("splitter.resize"),x}:t.noop}(),orientation:h.orientation,limit:h.limit,isActive:function(){return i===m},destroy:function(){x.removeClass("splitter_panel"),y.unbind("mouseenter"),y.unbind("mouseleave"),y.unbind("touchstart"),y.unbind("touchmove"),y.unbind("touchend"),y.unbind("touchleave"),y.unbind("touchcancel"),"vertical"==h.orientation?(c.removeClass("left_panel"),u.removeClass("right_panel")):"horizontal"==h.orientation&&(c.removeClass("top_panel"),u.removeClass("bottom_panel")),x.unbind("splitter.resize"),x.find(".splitter_panel").trigger("splitter.resize"),r[m]=null,y.remove();for(var e=!1,i=r.length;i--;)if(null!==r[i]){e=!0;break}e||(t(document.documentElement).unbind(".splitter"),t(window).unbind("resize.splitter"),x.data("splitter",null),r=[],n=0)}});x.bind("splitter.resize",function(t){var e=x.position();"vertical"==x.orientation&&e>x.width()?e=x.width()-x.limit-1:"horizontal"==x.orientation&&e>x.height()&&(e=x.height()-x.limit-1),e<x.limit&&(e=x.limit+1),x.position(e,!0)});var b;return"vertical"==h.orientation?b=b>p-h.limit?p-h.limit:s(h.position):"horizontal"==h.orientation&&(b=b>g-h.limit?g-h.limit:s(h.position)),b<h.limit&&(b=h.limit),x.position(b,!0),0==r.length&&(t(window).bind("resize.splitter",function(){t.each(r,function(t,e){e&&e.refresh()})}),t(document.documentElement).bind("mousedown.splitter touchstart.splitter",function(e){if(null!==i)return o=r[i],t('<div class="splitterMask"></div>').css("cursor",o.children().eq(1).css("cursor")).insertAfter(o),o.settings.onDragStart(e),!1}).bind("mouseup.splitter touchend.splitter touchleave.splitter touchcancel.splitter",function(e){o&&(t(".splitterMask").remove(),o.settings.onDragEnd(e),o=null)}).bind("mousemove.splitter touchmove.splitter",function(t){if(null!==o){var e=o.limit,n=o.offset();if("vertical"==o.orientation){var i=t.pageX;t.originalEvent&&t.originalEvent.changedTouches&&(i=t.originalEvent.changedTouches[0].pageX);var r=i-n.left;r<=o.limit?r=o.limit+1:r>=o.width()-e&&(r=o.width()-e-1),r>o.limit&&r<o.width()-e&&(o.position(r,!0),o.find(".splitter_panel").trigger("splitter.resize"),t.preventDefault())}else if("horizontal"==o.orientation){var a=t.pageY;t.originalEvent&&t.originalEvent.changedTouches&&(a=t.originalEvent.changedTouches[0].pageY);var s=a-n.top;s<=o.limit?s=o.limit+1:s>=o.height()-e&&(s=o.height()-e-1),s>o.limit&&s<o.height()-e&&(o.position(s,!0),o.find(".splitter_panel").trigger("splitter.resize"),t.preventDefault())}o.settings.onDrag(t)}})),r.push(x),x.data("splitter",x),x}}(jQuery),define("splitter",["jquery"],function(){}),define("pane",["jquery","splitter"],function(){!function(t){function e(e){var n=e.children();return{splitter:e.split(),first:t(n[0]).children()[0],second:t(n[2]).children()[0]}}function n(t){return"horizontal"==t?"vertical":"horizontal"}var i="tile",r={_init:function(e){return this.each(function(){var e=t(this),n=e.hasClass("horizontal")?"vertical":"horizontal",i=e.attr("data-split"),r=e.children();i=i||"50%",r.each(function(){t(this).wrap('<div class="pane-wrapper"></div>')}),e.addClass("pane-container"),e.split({orientation:n,position:i,limit:10,onDragStart:function(){e.tile("resize_start")},onDrag:function(t){r.trigger("pane.resize")},onDragEnd:function(){e.tile("resize_save")}}),e.tile("resize_save"),e.on("fullscreen",function(t,n){e.tile("resize")})})},resize_start:function(){return this.each(function(){var n=t(this),i=e(n);n.find(".reactive-size").trigger("reactive-resize-start",i.splitter.orientation)})},resize_save:function(){return this.each(function(){var n,i,r=t(this),o=e(r);"horizontal"==o.splitter.orientation?(n=r.height(),i=t(o.first).height()):(n=r.width(),i=t(o.first).width());var a=Math.round(100*i/n)+"%";o.splitter.resizestart=a}),this.find(".reactive-size").trigger("reactive-resize"),this},resize:function(){return this.each(function(){var e=t(this),n=e.split();n.resizestart&&(n.position(n.resizestart),n.settings.onDrag(e))})},split:function(e,i,r,o){i=i||"below";var a=this,s="above"==i||"below"==i?"horizontal":"vertical",l=a.wrap('<div class="pane-container tile "'+n(s)+"></div>").parent();void 0==r?r=50:r<10?r=10:r>90&&(r=90),o&&"horizontal"==s&&(sumh=this.height(),left=sumh*r/100,left<o&&o<.9*sumh&&(r=100*o/sumh)),"above"==i||"left"==i?l.prepend(e):(r=100-r,l.append(e));var c=t(a).add(e);return c.wrap('<div class="pane-wrapper"></div>'),l.split({orientation:s,position:r+"%",limit:10,onDragStart:function(){l.tile("resize_start")},onDrag:function(){c.trigger("pane.resize")},onDragEnd:function(){l.tile("resize_save")}}),l.tile("resize_save"),c.trigger("pane.resize"),l},close:function(){var t=this,e=t.closest(".pane-container");e.split().destroy(),t.parent().remove(),e.children().first().children().first().unwrap().unwrap()}};t.fn.tile=function(e){return r[e]?r[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery."+i):r._init.apply(this,arguments)}}(jQuery)}),function(t,e){"function"==typeof define&&define.amd?define("bloodhound",["jquery"],function(n){return t.Bloodhound=e(n)}):"object"==typeof exports?module.exports=e(require("jquery")):t.Bloodhound=e(jQuery)}(this,function(t){var e=function(){"use strict";return{isMsie:function(){return!!/(msie|trident)/i.test(navigator.userAgent)&&navigator.userAgent.match(/(msie |rv:)(\d+(.\d+)?)/i)[2]},isBlankString:function(t){return!t||/^\s*$/.test(t)},escapeRegExChars:function(t){return t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},isString:function(t){return"string"==typeof t},isNumber:function(t){return"number"==typeof t},isArray:t.isArray,isFunction:t.isFunction,isObject:t.isPlainObject,isUndefined:function(t){return"undefined"==typeof t},isElement:function(t){return!(!t||1!==t.nodeType)},isJQuery:function(e){return e instanceof t},toStr:function(t){return e.isUndefined(t)||null===t?"":t+""},bind:t.proxy,each:function(e,n){function i(t,e){return n(e,t)}t.each(e,i)},map:t.map,filter:t.grep,every:function(e,n){var i=!0;return e?(t.each(e,function(t,r){if(!(i=n.call(null,r,t,e)))return!1}),!!i):i},some:function(e,n){var i=!1;return e?(t.each(e,function(t,r){if(i=n.call(null,r,t,e))return!1}),!!i):i},mixin:t.extend,identity:function(t){return t},clone:function(e){return t.extend(!0,{},e)},getIdGenerator:function(){var t=0;return function(){return t++}},templatify:function(e){function n(){return String(e)}return t.isFunction(e)?e:n},defer:function(t){setTimeout(t,0)},debounce:function(t,e,n){var i,r;return function(){var o,a,s=this,l=arguments;return o=function(){i=null,n||(r=t.apply(s,l))},a=n&&!i,clearTimeout(i),i=setTimeout(o,e),a&&(r=t.apply(s,l)),r}},throttle:function(t,e){var n,i,r,o,a,s;return a=0,s=function(){a=new Date,r=null,o=t.apply(n,i)},function(){var l=new Date,c=e-(l-a);return n=this,i=arguments,c<=0?(clearTimeout(r),r=null,a=l,o=t.apply(n,i)):r||(r=setTimeout(s,c)),o}},stringify:function(t){return e.isString(t)?t:JSON.stringify(t)},noop:function(){}}}(),n="0.11.1",i=function(){"use strict";function t(t){return t=e.toStr(t),t?t.split(/\s+/):[]}function n(t){return t=e.toStr(t),t?t.split(/\W+/):[]}function i(t){return function(n){return n=e.isArray(n)?n:[].slice.call(arguments,0),function(i){var r=[];return e.each(n,function(n){r=r.concat(t(e.toStr(i[n])))}),r}}}return{nonword:n,whitespace:t,obj:{nonword:i(n),whitespace:i(t)}}}(),r=function(){"use strict";function n(n){this.maxSize=e.isNumber(n)?n:100,this.reset(),this.maxSize<=0&&(this.set=this.get=t.noop)}function i(){this.head=this.tail=null}function r(t,e){this.key=t,this.val=e,this.prev=this.next=null}return e.mixin(n.prototype,{set:function(t,e){var n,i=this.list.tail;this.size>=this.maxSize&&(this.list.remove(i),delete this.hash[i.key],this.size--),(n=this.hash[t])?(n.val=e,this.list.moveToFront(n)):(n=new r(t,e),this.list.add(n),this.hash[t]=n,this.size++)},get:function(t){var e=this.hash[t];if(e)return this.list.moveToFront(e),e.val},reset:function(){this.size=0,this.hash={},this.list=new i}}),e.mixin(i.prototype,{add:function(t){this.head&&(t.next=this.head,this.head.prev=t),this.head=t,this.tail=this.tail||t},remove:function(t){t.prev?t.prev.next=t.next:this.head=t.next,t.next?t.next.prev=t.prev:this.tail=t.prev},moveToFront:function(t){this.remove(t),this.add(t)}}),n}(),o=function(){"use strict";function n(t,n){this.prefix=["__",t,"__"].join(""),this.ttlKey="__ttl__",this.keyMatcher=new RegExp("^"+e.escapeRegExChars(this.prefix)),this.ls=n||s,!this.ls&&this._noop()}function i(){return(new Date).getTime()}function r(t){return JSON.stringify(e.isUndefined(t)?null:t)}function o(e){return t.parseJSON(e)}function a(t){var e,n,i=[],r=s.length;for(e=0;e<r;e++)(n=s.key(e)).match(t)&&i.push(n.replace(t,""));return i}var s;try{s=window.localStorage,s.setItem("~~~","!"),s.removeItem("~~~")}catch(t){s=null}return e.mixin(n.prototype,{_prefix:function(t){return this.prefix+t},_ttlKey:function(t){return this._prefix(t)+this.ttlKey},_noop:function(){this.get=this.set=this.remove=this.clear=this.isExpired=e.noop},_safeSet:function(t,e){try{this.ls.setItem(t,e)}catch(t){"QuotaExceededError"===t.name&&(this.clear(),this._noop())}},get:function(t){return this.isExpired(t)&&this.remove(t),o(this.ls.getItem(this._prefix(t)))},set:function(t,n,o){return e.isNumber(o)?this._safeSet(this._ttlKey(t),r(i()+o)):this.ls.removeItem(this._ttlKey(t)),this._safeSet(this._prefix(t),r(n))},remove:function(t){return this.ls.removeItem(this._ttlKey(t)),this.ls.removeItem(this._prefix(t)),this},clear:function(){var t,e=a(this.keyMatcher);for(t=e.length;t--;)this.remove(e[t]);return this},isExpired:function(t){var n=o(this.ls.getItem(this._ttlKey(t)));return!!(e.isNumber(n)&&i()>n)}}),n}(),a=function(){"use strict";function n(t){t=t||{},this.cancelled=!1,this.lastReq=null,this._send=t.transport,this._get=t.limiter?t.limiter(this._get):this._get,this._cache=t.cache===!1?new r(0):s}var i=0,o={},a=6,s=new r(10);return n.setMaxPendingRequests=function(t){a=t},n.resetCache=function(){s.reset()},e.mixin(n.prototype,{_fingerprint:function(e){return e=e||{},e.url+e.type+t.param(e.data||{})},_get:function(t,e){function n(t){e(null,t),u._cache.set(l,t)}function r(){e(!0)}function s(){i--,delete o[l],u.onDeckRequestArgs&&(u._get.apply(u,u.onDeckRequestArgs),u.onDeckRequestArgs=null)}var l,c,u=this;l=this._fingerprint(t),this.cancelled||l!==this.lastReq||((c=o[l])?c.done(n).fail(r):i<a?(i++,o[l]=this._send(t).done(n).fail(r).always(s)):this.onDeckRequestArgs=[].slice.call(arguments,0))},get:function(n,i){var r,o;i=i||t.noop,n=e.isString(n)?{url:n}:n||{},o=this._fingerprint(n),this.cancelled=!1,this.lastReq=o,(r=this._cache.get(o))?i(null,r):this._get(n,i)},cancel:function(){this.cancelled=!0}}),n}(),s=window.SearchIndex=function(){"use strict";function n(n){n=n||{},n.datumTokenizer&&n.queryTokenizer||t.error("datumTokenizer and queryTokenizer are both required"),this.identify=n.identify||e.stringify,this.datumTokenizer=n.datumTokenizer,this.queryTokenizer=n.queryTokenizer,this.reset()}function i(t){return t=e.filter(t,function(t){return!!t}),t=e.map(t,function(t){return t.toLowerCase()})}function r(){var t={};return t[l]=[],t[s]={},t}function o(t){for(var e={},n=[],i=0,r=t.length;i<r;i++)e[t[i]]||(e[t[i]]=!0,n.push(t[i]));return n}function a(t,e){var n=0,i=0,r=[];t=t.sort(),e=e.sort();for(var o=t.length,a=e.length;n<o&&i<a;)t[n]<e[i]?n++:t[n]>e[i]?i++:(r.push(t[n]),n++,i++);return r}var s="c",l="i";return e.mixin(n.prototype,{bootstrap:function(t){this.datums=t.datums,this.trie=t.trie},add:function(t){var n=this;t=e.isArray(t)?t:[t],e.each(t,function(t){var o,a;n.datums[o=n.identify(t)]=t,a=i(n.datumTokenizer(t)),e.each(a,function(t){var e,i,a;for(e=n.trie,i=t.split("");a=i.shift();)e=e[s][a]||(e[s][a]=r()),e[l].push(o)})})},get:function(t){var n=this;return e.map(t,function(t){return n.datums[t]})},search:function(t){var n,r,c=this;return n=i(this.queryTokenizer(t)),e.each(n,function(t){var e,n,i,o;if(r&&0===r.length)return!1;for(e=c.trie,n=t.split("");e&&(i=n.shift());)e=e[s][i];return e&&0===n.length?(o=e[l].slice(0),void(r=r?a(r,o):o)):(r=[],!1)}),r?e.map(o(r),function(t){return c.datums[t]}):[]},all:function(){var t=[];for(var e in this.datums)t.push(this.datums[e]);return t},reset:function(){this.datums={},this.trie=r()},serialize:function(){return{datums:this.datums,trie:this.trie}}}),n}(),l=function(){"use strict";function t(t){this.url=t.url,this.ttl=t.ttl,this.cache=t.cache,this.prepare=t.prepare,this.transform=t.transform,this.transport=t.transport,this.thumbprint=t.thumbprint,this.storage=new o(t.cacheKey)}var n;return n={data:"data",protocol:"protocol",thumbprint:"thumbprint"},e.mixin(t.prototype,{_settings:function(){return{url:this.url,type:"GET",dataType:"json"}},store:function(t){this.cache&&(this.storage.set(n.data,t,this.ttl),this.storage.set(n.protocol,location.protocol,this.ttl),this.storage.set(n.thumbprint,this.thumbprint,this.ttl))},fromCache:function(){var t,e={};return this.cache?(e.data=this.storage.get(n.data),e.protocol=this.storage.get(n.protocol),e.thumbprint=this.storage.get(n.thumbprint),t=e.thumbprint!==this.thumbprint||e.protocol!==location.protocol,e.data&&!t?e.data:null):null},fromNetwork:function(t){function e(){t(!0)}function n(e){t(null,r.transform(e))}var i,r=this;t&&(i=this.prepare(this._settings()),this.transport(i).fail(e).done(n))},clear:function(){return this.storage.clear(),this}}),t}(),c=function(){"use strict";function t(t){this.url=t.url,this.prepare=t.prepare,this.transform=t.transform,this.transport=new a({cache:t.cache,limiter:t.limiter,transport:t.transport})}return e.mixin(t.prototype,{_settings:function(){return{url:this.url,type:"GET",dataType:"json"}},get:function(t,e){function n(t,n){e(t?[]:r.transform(n))}var i,r=this;if(e)return t=t||"",i=this.prepare(t,this._settings()),this.transport.get(i,n)},cancelLastRequest:function(){this.transport.cancel()}}),t}(),u=function(){"use strict";function i(i){var r;return i?(r={url:null,ttl:864e5,cache:!0,cacheKey:null,thumbprint:"",prepare:e.identity,transform:e.identity,transport:null},i=e.isString(i)?{url:i}:i,i=e.mixin(r,i),!i.url&&t.error("prefetch requires url to be set"),i.transform=i.filter||i.transform,i.cacheKey=i.cacheKey||i.url,i.thumbprint=n+i.thumbprint,i.transport=i.transport?s(i.transport):t.ajax,i):null}function r(n){var i;if(n)return i={url:null,cache:!0,prepare:null,replace:null,wildcard:null,limiter:null,rateLimitBy:"debounce",rateLimitWait:300,transform:e.identity,transport:null},n=e.isString(n)?{url:n}:n,n=e.mixin(i,n),!n.url&&t.error("remote requires url to be set"),n.transform=n.filter||n.transform,n.prepare=o(n),n.limiter=a(n),n.transport=n.transport?s(n.transport):t.ajax,delete n.replace,delete n.wildcard,delete n.rateLimitBy,delete n.rateLimitWait,n}function o(t){function e(t,e){return e.url=o(e.url,t),e}function n(t,e){return e.url=e.url.replace(a,encodeURIComponent(t)),e}function i(t,e){return e}var r,o,a;return r=t.prepare,o=t.replace,a=t.wildcard,r?r:r=o?e:t.wildcard?n:i}function a(t){function n(t){return function(n){return e.debounce(n,t)}}function i(t){return function(n){return e.throttle(n,t)}}var r,o,a;return r=t.limiter,o=t.rateLimitBy,a=t.rateLimitWait,r||(r=/^throttle$/i.test(o)?i(a):n(a)),r}function s(n){return function(i){function r(t){e.defer(function(){a.resolve(t)})}function o(t){e.defer(function(){a.reject(t)})}var a=t.Deferred();return n(i,r,o),a}}return function(n){var o,a;return o={initialize:!0,identify:e.stringify,datumTokenizer:null,queryTokenizer:null,sufficient:5,sorter:null,local:[],prefetch:null,remote:null},n=e.mixin(o,n||{}),!n.datumTokenizer&&t.error("datumTokenizer is required"),!n.queryTokenizer&&t.error("queryTokenizer is required"),a=n.sorter,n.sorter=a?function(t){return t.sort(a)}:e.identity,n.local=e.isFunction(n.local)?n.local():n.local,n.prefetch=i(n.prefetch),n.remote=r(n.remote),n}}(),h=function(){"use strict";function n(t){t=u(t),this.sorter=t.sorter,this.identify=t.identify,this.sufficient=t.sufficient,this.local=t.local,this.remote=t.remote?new c(t.remote):null,this.prefetch=t.prefetch?new l(t.prefetch):null,this.index=new s({identify:this.identify,datumTokenizer:t.datumTokenizer,queryTokenizer:t.queryTokenizer}),t.initialize!==!1&&this.initialize()}var r;return r=window&&window.Bloodhound,n.noConflict=function(){return window&&(window.Bloodhound=r),n},n.tokenizers=i,e.mixin(n.prototype,{__ttAdapter:function(){function t(t,e,i){return n.search(t,e,i)}function e(t,e){return n.search(t,e)}var n=this;return this.remote?t:e},_loadPrefetch:function(){function e(t,e){return t?n.reject():(r.add(e),r.prefetch.store(r.index.serialize()),void n.resolve())}var n,i,r=this;return n=t.Deferred(),this.prefetch?(i=this.prefetch.fromCache())?(this.index.bootstrap(i),n.resolve()):this.prefetch.fromNetwork(e):n.resolve(),n.promise()},_initialize:function(){function t(){e.add(e.local)}var e=this;return this.clear(),(this.initPromise=this._loadPrefetch()).done(t),this.initPromise},initialize:function(t){return!this.initPromise||t?this._initialize():this.initPromise},add:function(t){return this.index.add(t),this},get:function(t){return t=e.isArray(t)?t:[].slice.call(arguments),this.index.get(t)},search:function(t,n,i){function r(t){var n=[];e.each(t,function(t){!e.some(o,function(e){return a.identify(t)===a.identify(e)})&&n.push(t)}),i&&i(n)}var o,a=this;return o=this.sorter(this.index.search(t)),n(this.remote?o.slice():o),this.remote&&o.length<this.sufficient?this.remote.get(t,r):this.remote&&this.remote.cancelLastRequest(),this},all:function(){return this.index.all()},clear:function(){return this.index.reset(),this},clearPrefetchCache:function(){return this.prefetch&&this.prefetch.clear(),this},clearRemoteCache:function(){return a.resetCache(),this},ttAdapter:function(){return this.__ttAdapter()}}),n}();return h}),function(t,e){"function"==typeof define&&define.amd?define("typeahead.js",["jquery"],function(t){return e(t)}):"object"==typeof exports?module.exports=e(require("jquery")):e(jQuery)}(this,function(t){var e=function(){"use strict";return{isMsie:function(){return!!/(msie|trident)/i.test(navigator.userAgent)&&navigator.userAgent.match(/(msie |rv:)(\d+(.\d+)?)/i)[2]},isBlankString:function(t){return!t||/^\s*$/.test(t)},escapeRegExChars:function(t){return t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},isString:function(t){return"string"==typeof t},isNumber:function(t){return"number"==typeof t},isArray:t.isArray,isFunction:t.isFunction,isObject:t.isPlainObject,isUndefined:function(t){return"undefined"==typeof t},isElement:function(t){return!(!t||1!==t.nodeType)},isJQuery:function(e){return e instanceof t},toStr:function(t){return e.isUndefined(t)||null===t?"":t+""},bind:t.proxy,each:function(e,n){function i(t,e){return n(e,t)}t.each(e,i)},map:t.map,filter:t.grep,every:function(e,n){var i=!0;return e?(t.each(e,function(t,r){if(!(i=n.call(null,r,t,e)))return!1}),!!i):i},some:function(e,n){var i=!1;return e?(t.each(e,function(t,r){if(i=n.call(null,r,t,e))return!1}),!!i):i},mixin:t.extend,identity:function(t){return t},clone:function(e){return t.extend(!0,{},e)},getIdGenerator:function(){var t=0;return function(){return t++}},templatify:function(e){function n(){return String(e)}return t.isFunction(e)?e:n},defer:function(t){setTimeout(t,0)},debounce:function(t,e,n){var i,r;return function(){var o,a,s=this,l=arguments;return o=function(){i=null,n||(r=t.apply(s,l))},a=n&&!i,clearTimeout(i),i=setTimeout(o,e),a&&(r=t.apply(s,l)),r}},throttle:function(t,e){var n,i,r,o,a,s;return a=0,s=function(){a=new Date,r=null,o=t.apply(n,i)},function(){var l=new Date,c=e-(l-a);return n=this,i=arguments,c<=0?(clearTimeout(r),r=null,a=l,o=t.apply(n,i)):r||(r=setTimeout(s,c)),o}},stringify:function(t){return e.isString(t)?t:JSON.stringify(t)},noop:function(){}}}(),n=function(){"use strict";function t(t){var a,s;return s=e.mixin({},o,t),a={css:r(),classes:s,html:n(s),selectors:i(s)},{css:a.css,html:a.html,classes:a.classes,selectors:a.selectors,mixin:function(t){e.mixin(t,a)}}}function n(t){return{wrapper:'<span class="'+t.wrapper+'"></span>',menu:'<div class="'+t.menu+'"></div>'}}function i(t){var n={};return e.each(t,function(t,e){n[e]="."+t}),n}function r(){var t={wrapper:{position:"relative",display:"inline-block"},hint:{position:"absolute",top:"0",left:"0",borderColor:"transparent",boxShadow:"none",opacity:"1"},input:{position:"relative",verticalAlign:"top",backgroundColor:"transparent"},inputWithNoHint:{position:"relative",verticalAlign:"top"},menu:{position:"absolute",top:"100%",left:"0",zIndex:"100",display:"none"},ltr:{left:"0",right:"auto"},rtl:{left:"auto",right:" 0"}};return e.isMsie()&&e.mixin(t.input,{backgroundImage:"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)"}),t}var o={wrapper:"twitter-typeahead",input:"tt-input",hint:"tt-hint",menu:"tt-menu",dataset:"tt-dataset",suggestion:"tt-suggestion",selectable:"tt-selectable",empty:"tt-empty",open:"tt-open",cursor:"tt-cursor",highlight:"tt-highlight"};return t}(),i=function(){"use strict";function n(e){e&&e.el||t.error("EventBus initialized without el"),this.$el=t(e.el)}var i,r;return i="typeahead:",r={render:"rendered",cursorchange:"cursorchanged",select:"selected",autocomplete:"autocompleted"},e.mixin(n.prototype,{_trigger:function(e,n){var r;return r=t.Event(i+e),(n=n||[]).unshift(r),this.$el.trigger.apply(this.$el,n),r},before:function(t){var e,n;return e=[].slice.call(arguments,1),n=this._trigger("before"+t,e),n.isDefaultPrevented()},trigger:function(t){var e;this._trigger(t,[].slice.call(arguments,1)),(e=r[t])&&this._trigger(e,[].slice.call(arguments,1))}}),n}(),r=function(){"use strict";function t(t,e,n,i){var r;if(!n)return this;for(e=e.split(l),n=i?s(n,i):n,this._callbacks=this._callbacks||{};r=e.shift();)this._callbacks[r]=this._callbacks[r]||{sync:[],async:[]},this._callbacks[r][t].push(n);return this}function e(e,n,i){return t.call(this,"async",e,n,i)}function n(e,n,i){return t.call(this,"sync",e,n,i)}function i(t){var e;if(!this._callbacks)return this;for(t=t.split(l);e=t.shift();)delete this._callbacks[e];return this}function r(t){var e,n,i,r,a;if(!this._callbacks)return this;for(t=t.split(l),i=[].slice.call(arguments,1);(e=t.shift())&&(n=this._callbacks[e]);)r=o(n.sync,this,[e].concat(i)),a=o(n.async,this,[e].concat(i)),r()&&c(a);return this}function o(t,e,n){function i(){for(var i,r=0,o=t.length;!i&&r<o;r+=1)i=t[r].apply(e,n)===!1;return!i}return i}function a(){var t;return t=window.setImmediate?function(t){setImmediate(function(){t()})}:function(t){setTimeout(function(){t()},0)}}function s(t,e){return t.bind?t.bind(e):function(){t.apply(e,[].slice.call(arguments,0))}}var l=/\s+/,c=a();return{onSync:n,onAsync:e,off:i,trigger:r}}(),o=function(t){"use strict";function n(t,n,i){for(var r,o=[],a=0,s=t.length;a<s;a++)o.push(e.escapeRegExChars(t[a]));return r=i?"\\b("+o.join("|")+")\\b":"("+o.join("|")+")",n?new RegExp(r):new RegExp(r,"i")}var i={node:null,pattern:null,tagName:"strong",className:null,wordsOnly:!1,caseSensitive:!1};return function(r){function o(e){var n,i,o;return(n=s.exec(e.data))&&(o=t.createElement(r.tagName),r.className&&(o.className=r.className),i=e.splitText(n.index),i.splitText(n[0].length),o.appendChild(i.cloneNode(!0)),e.parentNode.replaceChild(o,i)),!!n}function a(t,e){for(var n,i=3,r=0;r<t.childNodes.length;r++)n=t.childNodes[r],n.nodeType===i?r+=e(n)?1:0:a(n,e)}var s;r=e.mixin({},i,r),r.node&&r.pattern&&(r.pattern=e.isArray(r.pattern)?r.pattern:[r.pattern],s=n(r.pattern,r.caseSensitive,r.wordsOnly),a(r.node,o))}}(window.document),a=function(){"use strict";function n(n,r){n=n||{},n.input||t.error("input is missing"),r.mixin(this),this.$hint=t(n.hint),this.$input=t(n.input),this.query=this.$input.val(),this.queryWhenFocused=this.hasFocus()?this.query:null,this.$overflowHelper=i(this.$input),this._checkLanguageDirection(),0===this.$hint.length&&(this.setHint=this.getHint=this.clearHint=this.clearHintIfInvalid=e.noop)}function i(e){return t('<pre aria-hidden="true"></pre>').css({position:"absolute",visibility:"hidden",whiteSpace:"pre",fontFamily:e.css("font-family"),fontSize:e.css("font-size"),fontStyle:e.css("font-style"),fontVariant:e.css("font-variant"),fontWeight:e.css("font-weight"),wordSpacing:e.css("word-spacing"),letterSpacing:e.css("letter-spacing"),textIndent:e.css("text-indent"),textRendering:e.css("text-rendering"),textTransform:e.css("text-transform")}).insertAfter(e)}function o(t,e){return n.normalizeQuery(t)===n.normalizeQuery(e)}function a(t){return t.altKey||t.ctrlKey||t.metaKey||t.shiftKey}var s;return s={9:"tab",27:"esc",37:"left",39:"right",13:"enter",38:"up",40:"down"},n.normalizeQuery=function(t){return e.toStr(t).replace(/^\s*/g,"").replace(/\s{2,}/g," ")},e.mixin(n.prototype,r,{_onBlur:function(){this.resetInputValue(),this.trigger("blurred")},_onFocus:function(){this.queryWhenFocused=this.query,this.trigger("focused")},_onKeydown:function(t){var e=s[t.which||t.keyCode];this._managePreventDefault(e,t),e&&this._shouldTrigger(e,t)&&this.trigger(e+"Keyed",t)},_onInput:function(){this._setQuery(this.getInputValue()),this.clearHintIfInvalid(),this._checkLanguageDirection()},_managePreventDefault:function(t,e){var n;switch(t){case"up":case"down":n=!a(e);break;default:n=!1}n&&e.preventDefault()},_shouldTrigger:function(t,e){var n;switch(t){case"tab":n=!a(e);break;default:n=!0}return n},_checkLanguageDirection:function(){var t=(this.$input.css("direction")||"ltr").toLowerCase();this.dir!==t&&(this.dir=t,this.$hint.attr("dir",t),this.trigger("langDirChanged",t))},_setQuery:function(t,e){var n,i;n=o(t,this.query),i=!!n&&this.query.length!==t.length,this.query=t,e||n?!e&&i&&this.trigger("whitespaceChanged",this.query):this.trigger("queryChanged",this.query)},bind:function(){var t,n,i,r,o=this;return t=e.bind(this._onBlur,this),n=e.bind(this._onFocus,this),i=e.bind(this._onKeydown,this),r=e.bind(this._onInput,this),this.$input.on("blur.tt",t).on("focus.tt",n).on("keydown.tt",i),!e.isMsie()||e.isMsie()>9?this.$input.on("input.tt",r):this.$input.on("keydown.tt keypress.tt cut.tt paste.tt",function(t){s[t.which||t.keyCode]||e.defer(e.bind(o._onInput,o,t))}),this},focus:function(){this.$input.focus()},blur:function(){this.$input.blur()},getLangDir:function(){return this.dir},getQuery:function(){return this.query||""},setQuery:function(t,e){this.setInputValue(t),this._setQuery(t,e)},hasQueryChangedSinceLastFocus:function(){return this.query!==this.queryWhenFocused},getInputValue:function(){return this.$input.val()},setInputValue:function(t){this.$input.val(t),this.clearHintIfInvalid(),this._checkLanguageDirection()},resetInputValue:function(){this.setInputValue(this.query)},getHint:function(){return this.$hint.val()},setHint:function(t){this.$hint.val(t)},clearHint:function(){this.setHint("")},clearHintIfInvalid:function(){var t,e,n,i;t=this.getInputValue(),e=this.getHint(),n=t!==e&&0===e.indexOf(t),i=""!==t&&n&&!this.hasOverflow(),!i&&this.clearHint()},hasFocus:function(){return this.$input.is(":focus")},hasOverflow:function(){var t=this.$input.width()-2;return this.$overflowHelper.text(this.getInputValue()),this.$overflowHelper.width()>=t},isCursorAtEnd:function(){var t,n,i;return t=this.$input.val().length,n=this.$input[0].selectionStart,e.isNumber(n)?n===t:!document.selection||(i=document.selection.createRange(),i.moveStart("character",-t),t===i.text.length)},destroy:function(){this.$hint.off(".tt"),this.$input.off(".tt"),this.$overflowHelper.remove(),this.$hint=this.$input=this.$overflowHelper=t("<div>")}}),n}(),s=function(){"use strict";function n(n,r){n=n||{},n.templates=n.templates||{},n.templates.notFound=n.templates.notFound||n.templates.empty,n.source||t.error("missing source"),n.node||t.error("missing node"),n.name&&!s(n.name)&&t.error("invalid dataset name: "+n.name),
+r.mixin(this),this.highlight=!!n.highlight,this.name=n.name||c(),this.limit=n.limit||5,this.displayFn=i(n.display||n.displayKey),this.templates=a(n.templates,this.displayFn),this.source=n.source.__ttAdapter?n.source.__ttAdapter():n.source,this.async=e.isUndefined(n.async)?this.source.length>2:!!n.async,this._resetLastSuggestion(),this.$el=t(n.node).addClass(this.classes.dataset).addClass(this.classes.dataset+"-"+this.name)}function i(t){function n(e){return e[t]}return t=t||e.stringify,e.isFunction(t)?t:n}function a(n,i){function r(e){return t("<div>").text(i(e))}return{notFound:n.notFound&&e.templatify(n.notFound),pending:n.pending&&e.templatify(n.pending),header:n.header&&e.templatify(n.header),footer:n.footer&&e.templatify(n.footer),suggestion:n.suggestion||r}}function s(t){return/^[_a-zA-Z0-9-]+$/.test(t)}var l,c;return l={val:"tt-selectable-display",obj:"tt-selectable-object"},c=e.getIdGenerator(),n.extractData=function(e){var n=t(e);return n.data(l.obj)?{val:n.data(l.val)||"",obj:n.data(l.obj)||null}:null},e.mixin(n.prototype,r,{_overwrite:function(t,e){e=e||[],e.length?this._renderSuggestions(t,e):this.async&&this.templates.pending?this._renderPending(t):!this.async&&this.templates.notFound?this._renderNotFound(t):this._empty(),this.trigger("rendered",this.name,e,!1)},_append:function(t,e){e=e||[],e.length&&this.$lastSuggestion.length?this._appendSuggestions(t,e):e.length?this._renderSuggestions(t,e):!this.$lastSuggestion.length&&this.templates.notFound&&this._renderNotFound(t),this.trigger("rendered",this.name,e,!0)},_renderSuggestions:function(t,e){var n;n=this._getSuggestionsFragment(t,e),this.$lastSuggestion=n.children().last(),this.$el.html(n).prepend(this._getHeader(t,e)).append(this._getFooter(t,e))},_appendSuggestions:function(t,e){var n,i;n=this._getSuggestionsFragment(t,e),i=n.children().last(),this.$lastSuggestion.after(n),this.$lastSuggestion=i},_renderPending:function(t){var e=this.templates.pending;this._resetLastSuggestion(),e&&this.$el.html(e({query:t,dataset:this.name}))},_renderNotFound:function(t){var e=this.templates.notFound;this._resetLastSuggestion(),e&&this.$el.html(e({query:t,dataset:this.name}))},_empty:function(){this.$el.empty(),this._resetLastSuggestion()},_getSuggestionsFragment:function(n,i){var r,a=this;return r=document.createDocumentFragment(),e.each(i,function(e){var i,o;o=a._injectQuery(n,e),i=t(a.templates.suggestion(o)).data(l.obj,e).data(l.val,a.displayFn(e)).addClass(a.classes.suggestion+" "+a.classes.selectable),r.appendChild(i[0])}),this.highlight&&o({className:this.classes.highlight,node:r,pattern:n}),t(r)},_getFooter:function(t,e){return this.templates.footer?this.templates.footer({query:t,suggestions:e,dataset:this.name}):null},_getHeader:function(t,e){return this.templates.header?this.templates.header({query:t,suggestions:e,dataset:this.name}):null},_resetLastSuggestion:function(){this.$lastSuggestion=t()},_injectQuery:function(t,n){return e.isObject(n)?e.mixin({_query:t},n):n},update:function(e){function n(t){a||(a=!0,t=(t||[]).slice(0,r.limit),s=t.length,r._overwrite(e,t),s<r.limit&&r.async&&r.trigger("asyncRequested",e))}function i(n){n=n||[],!o&&s<r.limit&&(r.cancel=t.noop,s+=n.length,r._append(e,n.slice(0,r.limit-s)),r.async&&r.trigger("asyncReceived",e))}var r=this,o=!1,a=!1,s=0;this.cancel(),this.cancel=function(){o=!0,r.cancel=t.noop,r.async&&r.trigger("asyncCanceled",e)},this.source(e,n,i),!a&&n([])},cancel:t.noop,clear:function(){this._empty(),this.cancel(),this.trigger("cleared")},isEmpty:function(){return this.$el.is(":empty")},destroy:function(){this.$el=t("<div>")}}),n}(),l=function(){"use strict";function n(n,i){function r(e){var n=o.$node.find(e.node).first();return e.node=n.length?n:t("<div>").appendTo(o.$node),new s(e,i)}var o=this;n=n||{},n.node||t.error("node is required"),i.mixin(this),this.$node=t(n.node),this.query=null,this.datasets=e.map(n.datasets,r)}return e.mixin(n.prototype,r,{_onSelectableClick:function(e){this.trigger("selectableClicked",t(e.currentTarget))},_onRendered:function(t,e,n,i){this.$node.toggleClass(this.classes.empty,this._allDatasetsEmpty()),this.trigger("datasetRendered",e,n,i)},_onCleared:function(){this.$node.toggleClass(this.classes.empty,this._allDatasetsEmpty()),this.trigger("datasetCleared")},_propagate:function(){this.trigger.apply(this,arguments)},_allDatasetsEmpty:function(){function t(t){return t.isEmpty()}return e.every(this.datasets,t)},_getSelectables:function(){return this.$node.find(this.selectors.selectable)},_removeCursor:function(){var t=this.getActiveSelectable();t&&t.removeClass(this.classes.cursor)},_ensureVisible:function(t){var e,n,i,r;e=t.position().top,n=e+t.outerHeight(!0),i=this.$node.scrollTop(),r=this.$node.height()+parseInt(this.$node.css("paddingTop"),10)+parseInt(this.$node.css("paddingBottom"),10),e<0?this.$node.scrollTop(i+e):r<n&&this.$node.scrollTop(i+(n-r))},bind:function(){var t,n=this;return t=e.bind(this._onSelectableClick,this),this.$node.on("click.tt",this.selectors.selectable,t),e.each(this.datasets,function(t){t.onSync("asyncRequested",n._propagate,n).onSync("asyncCanceled",n._propagate,n).onSync("asyncReceived",n._propagate,n).onSync("rendered",n._onRendered,n).onSync("cleared",n._onCleared,n)}),this},isOpen:function(){return this.$node.hasClass(this.classes.open)},open:function(){this.$node.addClass(this.classes.open)},close:function(){this.$node.removeClass(this.classes.open),this._removeCursor()},setLanguageDirection:function(t){this.$node.attr("dir",t)},selectableRelativeToCursor:function(t){var e,n,i,r;return n=this.getActiveSelectable(),e=this._getSelectables(),i=n?e.index(n):-1,r=i+t,r=(r+1)%(e.length+1)-1,r=r<-1?e.length-1:r,r===-1?null:e.eq(r)},setCursor:function(t){this._removeCursor(),(t=t&&t.first())&&(t.addClass(this.classes.cursor),this._ensureVisible(t))},getSelectableData:function(t){return t&&t.length?s.extractData(t):null},getActiveSelectable:function(){var t=this._getSelectables().filter(this.selectors.cursor).first();return t.length?t:null},getTopSelectable:function(){var t=this._getSelectables().first();return t.length?t:null},update:function(t){function n(e){e.update(t)}var i=t!==this.query;return i&&(this.query=t,e.each(this.datasets,n)),i},empty:function(){function t(t){t.clear()}e.each(this.datasets,t),this.query=null,this.$node.addClass(this.classes.empty)},destroy:function(){function n(t){t.destroy()}this.$node.off(".tt"),this.$node=t("<div>"),e.each(this.datasets,n)}}),n}(),c=function(){"use strict";function t(){l.apply(this,[].slice.call(arguments,0))}var n=l.prototype;return e.mixin(t.prototype,l.prototype,{open:function(){return!this._allDatasetsEmpty()&&this._show(),n.open.apply(this,[].slice.call(arguments,0))},close:function(){return this._hide(),n.close.apply(this,[].slice.call(arguments,0))},_onRendered:function(){return this._allDatasetsEmpty()?this._hide():this.isOpen()&&this._show(),n._onRendered.apply(this,[].slice.call(arguments,0))},_onCleared:function(){return this._allDatasetsEmpty()?this._hide():this.isOpen()&&this._show(),n._onCleared.apply(this,[].slice.call(arguments,0))},setLanguageDirection:function(t){return this.$node.css("ltr"===t?this.css.ltr:this.css.rtl),n.setLanguageDirection.apply(this,[].slice.call(arguments,0))},_hide:function(){this.$node.hide()},_show:function(){this.$node.css("display","block")}}),t}(),u=function(){"use strict";function n(n,r){var o,a,s,l,c,u,h,d,f,p,g;n=n||{},n.input||t.error("missing input"),n.menu||t.error("missing menu"),n.eventBus||t.error("missing event bus"),r.mixin(this),this.eventBus=n.eventBus,this.minLength=e.isNumber(n.minLength)?n.minLength:1,this.input=n.input,this.menu=n.menu,this.enabled=!0,this.active=!1,this.input.hasFocus()&&this.activate(),this.dir=this.input.getLangDir(),this._hacks(),this.menu.bind().onSync("selectableClicked",this._onSelectableClicked,this).onSync("asyncRequested",this._onAsyncRequested,this).onSync("asyncCanceled",this._onAsyncCanceled,this).onSync("asyncReceived",this._onAsyncReceived,this).onSync("datasetRendered",this._onDatasetRendered,this).onSync("datasetCleared",this._onDatasetCleared,this),o=i(this,"activate","open","_onFocused"),a=i(this,"deactivate","_onBlurred"),s=i(this,"isActive","isOpen","_onEnterKeyed"),l=i(this,"isActive","isOpen","_onTabKeyed"),c=i(this,"isActive","_onEscKeyed"),u=i(this,"isActive","open","_onUpKeyed"),h=i(this,"isActive","open","_onDownKeyed"),d=i(this,"isActive","isOpen","_onLeftKeyed"),f=i(this,"isActive","isOpen","_onRightKeyed"),p=i(this,"_openIfActive","_onQueryChanged"),g=i(this,"_openIfActive","_onWhitespaceChanged"),this.input.bind().onSync("focused",o,this).onSync("blurred",a,this).onSync("enterKeyed",s,this).onSync("tabKeyed",l,this).onSync("escKeyed",c,this).onSync("upKeyed",u,this).onSync("downKeyed",h,this).onSync("leftKeyed",d,this).onSync("rightKeyed",f,this).onSync("queryChanged",p,this).onSync("whitespaceChanged",g,this).onSync("langDirChanged",this._onLangDirChanged,this)}function i(t){var n=[].slice.call(arguments,1);return function(){var i=[].slice.call(arguments);e.each(n,function(e){return t[e].apply(t,i)})}}return e.mixin(n.prototype,{_hacks:function(){var n,i;n=this.input.$input||t("<div>"),i=this.menu.$node||t("<div>"),n.on("blur.tt",function(t){var r,o,a;r=document.activeElement,o=i.is(r),a=i.has(r).length>0,e.isMsie()&&(o||a)&&(t.preventDefault(),t.stopImmediatePropagation(),e.defer(function(){n.focus()}))}),i.on("mousedown.tt",function(t){t.preventDefault()})},_onSelectableClicked:function(t,e){this.select(e)},_onDatasetCleared:function(){this._updateHint()},_onDatasetRendered:function(t,e,n,i){this._updateHint(),this.eventBus.trigger("render",n,i,e)},_onAsyncRequested:function(t,e,n){this.eventBus.trigger("asyncrequest",n,e)},_onAsyncCanceled:function(t,e,n){this.eventBus.trigger("asynccancel",n,e)},_onAsyncReceived:function(t,e,n){this.eventBus.trigger("asyncreceive",n,e)},_onFocused:function(){this._minLengthMet()&&this.menu.update(this.input.getQuery())},_onBlurred:function(){this.input.hasQueryChangedSinceLastFocus()&&this.eventBus.trigger("change",this.input.getQuery())},_onEnterKeyed:function(t,e){var n;(n=this.menu.getActiveSelectable())&&this.select(n)&&e.preventDefault()},_onTabKeyed:function(t,e){var n;(n=this.menu.getActiveSelectable())?this.select(n)&&e.preventDefault():(n=this.menu.getTopSelectable())&&this.autocomplete(n)&&e.preventDefault()},_onEscKeyed:function(){this.close()},_onUpKeyed:function(){this.moveCursor(-1)},_onDownKeyed:function(){this.moveCursor(1)},_onLeftKeyed:function(){"rtl"===this.dir&&this.input.isCursorAtEnd()&&this.autocomplete(this.menu.getTopSelectable())},_onRightKeyed:function(){"ltr"===this.dir&&this.input.isCursorAtEnd()&&this.autocomplete(this.menu.getTopSelectable())},_onQueryChanged:function(t,e){this._minLengthMet(e)?this.menu.update(e):this.menu.empty()},_onWhitespaceChanged:function(){this._updateHint()},_onLangDirChanged:function(t,e){this.dir!==e&&(this.dir=e,this.menu.setLanguageDirection(e))},_openIfActive:function(){this.isActive()&&this.open()},_minLengthMet:function(t){return t=e.isString(t)?t:this.input.getQuery()||"",t.length>=this.minLength},_updateHint:function(){var t,n,i,r,o,s,l;t=this.menu.getTopSelectable(),n=this.menu.getSelectableData(t),i=this.input.getInputValue(),!n||e.isBlankString(i)||this.input.hasOverflow()?this.input.clearHint():(r=a.normalizeQuery(i),o=e.escapeRegExChars(r),s=new RegExp("^(?:"+o+")(.+$)","i"),l=s.exec(n.val),l&&this.input.setHint(i+l[1]))},isEnabled:function(){return this.enabled},enable:function(){this.enabled=!0},disable:function(){this.enabled=!1},isActive:function(){return this.active},activate:function(){return!!this.isActive()||!(!this.isEnabled()||this.eventBus.before("active"))&&(this.active=!0,this.eventBus.trigger("active"),!0)},deactivate:function(){return!this.isActive()||!this.eventBus.before("idle")&&(this.active=!1,this.close(),this.eventBus.trigger("idle"),!0)},isOpen:function(){return this.menu.isOpen()},open:function(){return this.isOpen()||this.eventBus.before("open")||(this.menu.open(),this._updateHint(),this.eventBus.trigger("open")),this.isOpen()},close:function(){return this.isOpen()&&!this.eventBus.before("close")&&(this.menu.close(),this.input.clearHint(),this.input.resetInputValue(),this.eventBus.trigger("close")),!this.isOpen()},setVal:function(t){this.input.setQuery(e.toStr(t))},getVal:function(){return this.input.getQuery()},select:function(t){var e=this.menu.getSelectableData(t);return!(!e||this.eventBus.before("select",e.obj))&&(this.input.setQuery(e.val,!0),this.eventBus.trigger("select",e.obj),this.close(),!0)},autocomplete:function(t){var e,n,i;return e=this.input.getQuery(),n=this.menu.getSelectableData(t),i=n&&e!==n.val,!(!i||this.eventBus.before("autocomplete",n.obj))&&(this.input.setQuery(n.val),this.eventBus.trigger("autocomplete",n.obj),!0)},moveCursor:function(t){var e,n,i,r,o;return e=this.input.getQuery(),n=this.menu.selectableRelativeToCursor(t),i=this.menu.getSelectableData(n),r=i?i.obj:null,o=this._minLengthMet()&&this.menu.update(e),!o&&!this.eventBus.before("cursorchange",r)&&(this.menu.setCursor(n),i?this.input.setInputValue(i.val):(this.input.resetInputValue(),this._updateHint()),this.eventBus.trigger("cursorchange",r),!0)},destroy:function(){this.input.destroy(),this.menu.destroy()}}),n}();!function(){"use strict";function r(e,n){e.each(function(){var e,i=t(this);(e=i.data(g.typeahead))&&n(e,i)})}function o(t,e){return t.clone().addClass(e.classes.hint).removeData().css(e.css.hint).css(h(t)).prop("readonly",!0).removeAttr("id name placeholder required").attr({autocomplete:"off",spellcheck:"false",tabindex:-1})}function s(t,e){t.data(g.attrs,{dir:t.attr("dir"),autocomplete:t.attr("autocomplete"),spellcheck:t.attr("spellcheck"),style:t.attr("style")}),t.addClass(e.classes.input).attr({autocomplete:"off",spellcheck:!1});try{!t.attr("dir")&&t.attr("dir","auto")}catch(t){}return t}function h(t){return{backgroundAttachment:t.css("background-attachment"),backgroundClip:t.css("background-clip"),backgroundColor:t.css("background-color"),backgroundImage:t.css("background-image"),backgroundOrigin:t.css("background-origin"),backgroundPosition:t.css("background-position"),backgroundRepeat:t.css("background-repeat"),backgroundSize:t.css("background-size")}}function d(t){var n,i;n=t.data(g.www),i=t.parent().filter(n.selectors.wrapper),e.each(t.data(g.attrs),function(n,i){e.isUndefined(n)?t.removeAttr(i):t.attr(i,n)}),t.removeData(g.typeahead).removeData(g.www).removeData(g.attr).removeClass(n.classes.input),i.length&&(t.detach().insertAfter(i),i.remove())}function f(n){var i,r;return i=e.isJQuery(n)||e.isElement(n),r=i?t(n).first():[],r.length?r:null}var p,g,m;p=t.fn.typeahead,g={www:"tt-www",attrs:"tt-attrs",typeahead:"tt-typeahead"},m={initialize:function(r,h){function d(){var n,d,m,v,y,x,b,_,w,S,C;e.each(h,function(t){t.highlight=!!r.highlight}),n=t(this),d=t(p.html.wrapper),m=f(r.hint),v=f(r.menu),y=r.hint!==!1&&!m,x=r.menu!==!1&&!v,y&&(m=o(n,p)),x&&(v=t(p.html.menu).css(p.css.menu)),m&&m.val(""),n=s(n,p),(y||x)&&(d.css(p.css.wrapper),n.css(y?p.css.input:p.css.inputWithNoHint),n.wrap(d).parent().prepend(y?m:null).append(x?v:null)),C=x?c:l,b=new i({el:n}),_=new a({hint:m,input:n},p),w=new C({node:v,datasets:h},p),S=new u({input:_,menu:w,eventBus:b,minLength:r.minLength},p),n.data(g.www,p),n.data(g.typeahead,S)}var p;return h=e.isArray(h)?h:[].slice.call(arguments,1),r=r||{},p=n(r.classNames),this.each(d)},isEnabled:function(){var t;return r(this.first(),function(e){t=e.isEnabled()}),t},enable:function(){return r(this,function(t){t.enable()}),this},disable:function(){return r(this,function(t){t.disable()}),this},isActive:function(){var t;return r(this.first(),function(e){t=e.isActive()}),t},activate:function(){return r(this,function(t){t.activate()}),this},deactivate:function(){return r(this,function(t){t.deactivate()}),this},isOpen:function(){var t;return r(this.first(),function(e){t=e.isOpen()}),t},open:function(){return r(this,function(t){t.open()}),this},close:function(){return r(this,function(t){t.close()}),this},select:function(e){var n=!1,i=t(e);return r(this.first(),function(t){n=t.select(i)}),n},autocomplete:function(e){var n=!1,i=t(e);return r(this.first(),function(t){n=t.autocomplete(i)}),n},moveCursor:function(t){var e=!1;return r(this.first(),function(n){e=n.moveCursor(t)}),e},val:function(t){var e;return arguments.length?(r(this,function(e){e.setVal(t)}),this):(r(this.first(),function(t){e=t.getVal()}),e)},destroy:function(){return r(this,function(t,e){d(e),t.destroy()}),this}},t.fn.typeahead=function(t){return m[t]?m[t].apply(this,[].slice.call(arguments,1)):m.initialize.apply(this,arguments)},t.fn.typeahead.noConflict=function(){return t.fn.typeahead=p,this}}()}),define("typeahead",["jquery"],function(t){return function(){var e,n;return n=function(t){return require.s.contexts._.registry["typeahead.js"].factory(t)},e=n.apply(t,arguments)}}(this)),define("search",["jquery","config","utils","bloodhound","typeahead"],function(t,e,n,i){!function(t){function r(e,n){var e=e.replace("%QUERY",encodeURIComponent(n)),i=t("label.active > input[name=smatch]").val();return i&&(e+="&match="+i),e}var o="search",a={_init:function(o){return o=o||{},this.each(function(){function a(t){return(t.tags||[]).push(t.name)}function s(t){function e(t){return t.split(".").pop()}function i(t){return t.split(".").slice(0,-1).join(".")}var r='<div class="tt-match file type-icon '+e(t.name)+'"><span class="tt-label">'+n.htmlEncode(i(t.name));if(t.tags){r+='<span class="tt-tags">';for(var o=0;o<t.tags.length;o++){var a=t.tags[o];r+='<span class="tt-tag">'+n.htmlEncode(a)+"</span>"}r+="</span>"}return t.title&&(r+='<div class="tt-title file">'+n.htmlEncode(t.title)+"</div>"),r+="</div>"}function l(t){var e="";if(t.file!=_||t.alias!=w){var i=t.file.split(".").pop();_=t.file,w=t.alias,e='<div class="tt-file-header type-icon '+i+'"><span class="tt-path-file">'+n.htmlEncode(t.file)+"</span></div>"}return e+p(t)}function c(t){return i.tokenizers.whitespace(t.text)}function u(t){var e="";return t.file==_&&t.alias==w||(_=t.file,w=t.alias,e='<div class="tt-file-header type-icon '+t.ext+'"><span class="tt-path-alias">'+n.htmlEncode(t.alias)+'</span>(<span class="tt-path-file">'+n.htmlEncode(t.file)+")</span></div>"),t.text&&(e+=p(t)),e}function h(t,n){for(var i=e.swish.templates,r=[],o=t.split(" "),a=[],s=0;s<o.length;s++)a.push({prefix:o[s],regex:new RegExp("_"+o[s])});for(var s=0;s<i.length;s++){var l=i[s];if(void 0!==l.arity){for(var c=0,u=!0;c<a.length&&u;c++)l.name.startsWith(a[c].prefix)||l.name.match(a[c].regex)||(u=!1);u&&r.push(l)}}n(r)}function d(t){var e='<div class="tt-match predicate';return t.type&&(e+=" "+t.type),t.mode&&(e+='" title="'+t.mode),e+='"><span class="tt-label">'+n.htmlEncode(t.name)+"/"+t.arity+"</span>",t.iso&&(e+='<span class="tt-tags">',t.iso&&(e+='<span class="tt-tag">ISO</span>'),e+="</span>"),t.summary&&(e+='<div class="tt-title file">'+n.htmlEncode(t.summary)+"</div>"),e+="</div>",e+="</div>"}function f(e,n){if(v=e,e.length<2)return[];var i=[],r=new RegExp("\\b"+e,"g");C=r,t(".prolog-editor").each(function(){for(var e=this,n=t(e).prologEditor("search",r,{max:7}),o=0;o<n.length;o++)n[o].editor=e,n[o].regex=C,i.push(n[o])}),n(i)}function p(t){var e,i=t.text;(e=i.search(C))>20&&(i="..."+i.slice(e-17)),i.length>80&&(i=i.substring(0,80));var r='<div class="tt-match source"><span class="tt-line"><span class="tt-lineno">'+t.line+'</span><span class="tt-text">'+n.htmlEncode(i)+"</span></span></div>";return r}function g(t){function e(t){return t.avatar?'<img class="avatar" src="'+encodeURI(t.avatar)+'">':""}var i='<div class="tt-match user">'+e(t)+'<span class="tt-label">'+n.htmlEncode(t.name)+"</span></div>";return i}function m(t){for(var e=[],n=t.replace(/\s+/g," ").split(" "),i=0;i<n.length;i++)e.push(k[n[i]]);return e}var v,y=t(this),x=new i({name:"files",remote:{url:e.http.locations.swish_typeahead+"?set=file&q=%QUERY",wildcard:"%QUERY"},datumTokenizer:a,queryTokenizer:i.tokenizers.whitespace});x.initialize();var b=new i({name:"store_content",limit:20,cache:!1,remote:{url:e.http.locations.swish_typeahead+"?set=store_content&q=%QUERY",replace:r},datumTokenizer:c,queryTokenizer:i.tokenizers.whitespace});b.initialize();var _=null,w=null,S=new i({name:"source",limit:15,cache:!1,query_cache_length:1,remote:{url:e.http.locations.swish_typeahead+"?set=sources&q=%QUERY",replace:r},datumTokenizer:c,queryTokenizer:i.tokenizers.whitespace});S.initialize();var C,T=new i({name:"users",limit:20,cache:!1,remote:{url:e.http.locations.swish_typeahead+"?set=user&q=%QUERY",replace:r},datumTokenizer:c,queryTokenizer:i.tokenizers.whitespace});T.initialize();var k={source:{name:"source",display:"text",source:f,templates:{suggestion:p}},sources:{name:"sources",display:"file",source:S.ttAdapter(),templates:{suggestion:u},limit:15},files:{name:"files",display:"name",source:x.ttAdapter(),templates:{suggestion:s}},store_content:{name:"store_content",display:"file",source:b.ttAdapter(),templates:{suggestion:l}},predicates:{name:"predicates",display:function(t){return t.name+"/"+t.arity},source:h,templates:{suggestion:d}},users:{name:"users",display:"name",source:T.ttAdapter(),templates:{suggestion:g}}},A=k.sources.source;k.sources.source=function(t,e){return _=null,w=null,C=new RegExp(RegExp.escape(t)),A(t,e)},y.typeahead({minLength:2,highlight:!0},m(y.data("search-in"))).on("typeahead:selected typeahead:autocompleted",function(e,n){if(0==o.search)y.data("json-value",n);else if("store"==n.type)n.query&&(n.regex=new RegExp(RegExp.escape(n.query),"g"),n.showAllMatches=!0),t(e.target).closest(".swish").swish("playFile",n);else if(void 0!==n.arity)t(".swish-event-receiver").trigger("pldoc",n);else if(void 0!==n.editor&&void 0!==n.line)t(n.editor).prologEditor("gotoLine",n.line,{regex:n.regex,showAllMatches:!0});else if(void 0!==n.alias){var i=encodeURI("/"+n.alias+"/"+n.file+"."+n.ext),r={url:i,line:n.line};n.query&&(r.regex=new RegExp(RegExp.escape(n.query),"g"),r.showAllMatches=!0),t(e.target).closest(".swish").swish("playURL",r)}else y.data("json-value",n),console.log(y.data("json-value"))}),0!=o.search&&y.closest("form").submit(function(t){var e=y.data("json-value"),n=y.val();return e&&e.datum&&e.datum.label==n||(e=n),y.val(""),y.data("json-value",null),y.search("search",e),!1})})},search:function(t){alert("Full search not yet implemented\nPlease select from auto completion list")}};t.fn.search=function(e){return a[e]?a[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery."+o):a._init.apply(this,arguments)}}(jQuery),RegExp.escape=function(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}}),function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define("cm/lib/codemirror",e):t.CodeMirror=e()}(this,function(){"use strict";function t(t){return new RegExp("(^|\\s)"+t+"(?:$|\\s)\\s*")}function e(t){for(var e=t.childNodes.length;e>0;--e)t.removeChild(t.firstChild);return t}function n(t,n){return e(t).appendChild(n)}function i(t,e,n,i){var r=document.createElement(t);if(n&&(r.className=n),i&&(r.style.cssText=i),"string"==typeof e)r.appendChild(document.createTextNode(e));else if(e)for(var o=0;o<e.length;++o)r.appendChild(e[o]);return r}function r(t,e,n,r){var o=i(t,e,n,r);return o.setAttribute("role","presentation"),o}function o(t,e){if(3==e.nodeType&&(e=e.parentNode),t.contains)return t.contains(e);do if(11==e.nodeType&&(e=e.host),e==t)return!0;while(e=e.parentNode)}function a(){var t;try{t=document.activeElement}catch(e){t=document.body||null}for(;t&&t.shadowRoot&&t.shadowRoot.activeElement;)t=t.shadowRoot.activeElement;return t}function s(e,n){var i=e.className;t(n).test(i)||(e.className+=(i?" ":"")+n)}function l(e,n){for(var i=e.split(" "),r=0;r<i.length;r++)i[r]&&!t(i[r]).test(n)&&(n+=" "+i[r]);return n}function c(t){var e=Array.prototype.slice.call(arguments,1);return function(){return t.apply(null,e)}}function u(t,e,n){e||(e={});for(var i in t)!t.hasOwnProperty(i)||n===!1&&e.hasOwnProperty(i)||(e[i]=t[i]);return e}function h(t,e,n,i,r){null==e&&(e=t.search(/[^\s\u00a0]/),e==-1&&(e=t.length));for(var o=i||0,a=r||0;;){var s=t.indexOf("\t",o);if(s<0||s>=e)return a+(e-o);a+=s-o,a+=n-a%n,o=s+1}}function d(t,e){for(var n=0;n<t.length;++n)if(t[n]==e)return n;return-1}function f(t,e,n){for(var i=0,r=0;;){var o=t.indexOf("\t",i);o==-1&&(o=t.length);var a=o-i;if(o==t.length||r+a>=e)return i+Math.min(a,e-r);if(r+=o-i,r+=n-r%n,i=o+1,r>=e)return i}}function p(t){for(;Ma.length<=t;)Ma.push(g(Ma)+" ");return Ma[t]}function g(t){return t[t.length-1]}function m(t,e){for(var n=[],i=0;i<t.length;i++)n[i]=e(t[i],i);return n}function v(t,e,n){for(var i=0,r=n(e);i<t.length&&n(t[i])<=r;)i++;t.splice(i,0,e)}function y(){}function x(t,e){var n;return Object.create?n=Object.create(t):(y.prototype=t,n=new y),e&&u(e,n),n}function b(t){return/\w/.test(t)||t>"€"&&(t.toUpperCase()!=t.toLowerCase()||La.test(t))}function _(t,e){return e?!!(e.source.indexOf("\\w")>-1&&b(t))||e.test(t):b(t)}function w(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e])return!1;return!0}function S(t){return t.charCodeAt(0)>=768&&Ea.test(t)}function C(t,e,n){for(;(n<0?e>0:e<t.length)&&S(t.charAt(e));)e+=n;return e}function T(t,e,n){for(;;){if(Math.abs(e-n)<=1)return t(e)?e:n;var i=Math.floor((e+n)/2);t(i)?n=i:e=i}}function k(t,e,n){var o=this;this.input=n,o.scrollbarFiller=i("div",null,"CodeMirror-scrollbar-filler"),o.scrollbarFiller.setAttribute("cm-not-content","true"),o.gutterFiller=i("div",null,"CodeMirror-gutter-filler"),o.gutterFiller.setAttribute("cm-not-content","true"),o.lineDiv=r("div",null,"CodeMirror-code"),o.selectionDiv=i("div",null,null,"position: relative; z-index: 1"),o.cursorDiv=i("div",null,"CodeMirror-cursors"),o.measure=i("div",null,"CodeMirror-measure"),o.lineMeasure=i("div",null,"CodeMirror-measure"),o.lineSpace=r("div",[o.measure,o.lineMeasure,o.selectionDiv,o.cursorDiv,o.lineDiv],null,"position: relative; outline: none");var a=r("div",[o.lineSpace],"CodeMirror-lines");o.mover=i("div",[a],null,"position: relative"),o.sizer=i("div",[o.mover],"CodeMirror-sizer"),o.sizerWidth=null,o.heightForcer=i("div",null,null,"position: absolute; height: "+Sa+"px; width: 1px;"),o.gutters=i("div",null,"CodeMirror-gutters"),o.lineGutter=null,o.scroller=i("div",[o.sizer,o.heightForcer,o.gutters],"CodeMirror-scroll"),o.scroller.setAttribute("tabIndex","-1"),o.wrapper=i("div",[o.scrollbarFiller,o.gutterFiller,o.scroller],"CodeMirror"),Jo&&ta<8&&(o.gutters.style.zIndex=-1,o.scroller.style.paddingRight=0),ea||Yo&&ua||(o.scroller.draggable=!0),t&&(t.appendChild?t.appendChild(o.wrapper):t(o.wrapper)),o.viewFrom=o.viewTo=e.first,o.reportedViewFrom=o.reportedViewTo=e.first,o.view=[],o.renderedView=null,o.externalMeasured=null,o.viewOffset=0,o.lastWrapHeight=o.lastWrapWidth=0,o.updateLineNumbers=null,o.nativeBarWidth=o.barHeight=o.barWidth=0,o.scrollbarsClipped=!1,o.lineNumWidth=o.lineNumInnerWidth=o.lineNumChars=null,o.alignWidgets=!1,o.cachedCharWidth=o.cachedTextHeight=o.cachedPaddingH=null,o.maxLine=null,o.maxLineLength=0,o.maxLineChanged=!1,o.wheelDX=o.wheelDY=o.wheelStartX=o.wheelStartY=null,o.shift=!1,o.selForContextMenu=null,o.activeTouch=null,n.init(o)}function A(t,e){if(e-=t.first,e<0||e>=t.size)throw new Error("There is no line "+(e+t.first)+" in the document.");for(var n=t;!n.lines;)for(var i=0;;++i){var r=n.children[i],o=r.chunkSize();if(e<o){n=r;break}e-=o}return n.lines[e]}function M(t,e,n){var i=[],r=e.line;return t.iter(e.line,n.line+1,function(t){var o=t.text;r==n.line&&(o=o.slice(0,n.ch)),r==e.line&&(o=o.slice(e.ch)),i.push(o),++r}),i}function L(t,e,n){var i=[];return t.iter(e,n,function(t){i.push(t.text)}),i}function E(t,e){var n=e-t.height;if(n)for(var i=t;i;i=i.parent)i.height+=n}function P(t){if(null==t.parent)return null;for(var e=t.parent,n=d(e.lines,t),i=e.parent;i;e=i,i=i.parent)for(var r=0;i.children[r]!=e;++r)n+=i.children[r].chunkSize();return n+e.first}function N(t,e){var n=t.first;t:do{for(var i=0;i<t.children.length;++i){var r=t.children[i],o=r.height;if(e<o){t=r;continue t}e-=o,n+=r.chunkSize()}return n}while(!t.lines);for(var a=0;a<t.lines.length;++a){var s=t.lines[a],l=s.height;if(e<l)break;e-=l}return n+a}function O(t,e){return e>=t.first&&e<t.first+t.size}function R(t,e){return String(t.lineNumberFormatter(e+t.firstLineNumber))}function D(t,e,n){return void 0===n&&(n=null),this instanceof D?(this.line=t,this.ch=e,void(this.sticky=n)):new D(t,e,n)}function I(t,e){return t.line-e.line||t.ch-e.ch}function j(t,e){return t.sticky==e.sticky&&0==I(t,e)}function V(t){return D(t.line,t.ch)}function H(t,e){return I(t,e)<0?e:t}function F(t,e){return I(t,e)<0?t:e}function z(t,e){return Math.max(t.first,Math.min(e,t.first+t.size-1))}function q(t,e){if(e.line<t.first)return D(t.first,0);var n=t.first+t.size-1;return e.line>n?D(n,A(t,n).text.length):G(e,A(t,e.line).text.length)}function G(t,e){var n=t.ch;return null==n||n>e?D(t.line,e):n<0?D(t.line,0):t}function B(t,e){for(var n=[],i=0;i<e.length;i++)n[i]=q(t,e[i]);return n}function $(){Pa=!0}function W(){Na=!0}function U(t,e,n){this.marker=t,this.from=e,this.to=n}function X(t,e){if(t)for(var n=0;n<t.length;++n){var i=t[n];if(i.marker==e)return i}}function Y(t,e){for(var n,i=0;i<t.length;++i)t[i]!=e&&(n||(n=[])).push(t[i]);return n}function Q(t,e){t.markedSpans=t.markedSpans?t.markedSpans.concat([e]):[e],e.marker.attachLine(t)}function Z(t,e,n){var i;if(t)for(var r=0;r<t.length;++r){var o=t[r],a=o.marker,s=null==o.from||(a.inclusiveLeft?o.from<=e:o.from<e);if(s||o.from==e&&"bookmark"==a.type&&(!n||!o.marker.insertLeft)){var l=null==o.to||(a.inclusiveRight?o.to>=e:o.to>e);(i||(i=[])).push(new U(a,o.from,l?null:o.to))}}return i}function K(t,e,n){var i;if(t)for(var r=0;r<t.length;++r){var o=t[r],a=o.marker,s=null==o.to||(a.inclusiveRight?o.to>=e:o.to>e);if(s||o.from==e&&"bookmark"==a.type&&(!n||o.marker.insertLeft)){var l=null==o.from||(a.inclusiveLeft?o.from<=e:o.from<e);(i||(i=[])).push(new U(a,l?null:o.from-e,null==o.to?null:o.to-e))}}return i}function J(t,e){if(e.full)return null;var n=O(t,e.from.line)&&A(t,e.from.line).markedSpans,i=O(t,e.to.line)&&A(t,e.to.line).markedSpans;if(!n&&!i)return null;var r=e.from.ch,o=e.to.ch,a=0==I(e.from,e.to),s=Z(n,r,a),l=K(i,o,a),c=1==e.text.length,u=g(e.text).length+(c?r:0);if(s)for(var h=0;h<s.length;++h){var d=s[h];if(null==d.to){var f=X(l,d.marker);f?c&&(d.to=null==f.to?null:f.to+u):d.to=r}}if(l)for(var p=0;p<l.length;++p){var m=l[p];if(null!=m.to&&(m.to+=u),null==m.from){var v=X(s,m.marker);v||(m.from=u,c&&(s||(s=[])).push(m))}else m.from+=u,c&&(s||(s=[])).push(m)}s&&(s=tt(s)),l&&l!=s&&(l=tt(l));var y=[s];if(!c){var x,b=e.text.length-2;if(b>0&&s)for(var _=0;_<s.length;++_)null==s[_].to&&(x||(x=[])).push(new U(s[_].marker,null,null));for(var w=0;w<b;++w)y.push(x);y.push(l)}return y}function tt(t){for(var e=0;e<t.length;++e){var n=t[e];null!=n.from&&n.from==n.to&&n.marker.clearWhenEmpty!==!1&&t.splice(e--,1)}return t.length?t:null}function et(t,e,n){var i=null;if(t.iter(e.line,n.line+1,function(t){if(t.markedSpans)for(var e=0;e<t.markedSpans.length;++e){var n=t.markedSpans[e].marker;!n.readOnly||i&&d(i,n)!=-1||(i||(i=[])).push(n)}}),!i)return null;for(var r=[{from:e,to:n}],o=0;o<i.length;++o)for(var a=i[o],s=a.find(0),l=0;l<r.length;++l){var c=r[l];if(!(I(c.to,s.from)<0||I(c.from,s.to)>0)){var u=[l,1],h=I(c.from,s.from),f=I(c.to,s.to);(h<0||!a.inclusiveLeft&&!h)&&u.push({from:c.from,to:s.from}),(f>0||!a.inclusiveRight&&!f)&&u.push({from:s.to,to:c.to}),r.splice.apply(r,u),l+=u.length-3}}return r}function nt(t){var e=t.markedSpans;if(e){for(var n=0;n<e.length;++n)e[n].marker.detachLine(t);t.markedSpans=null}}function it(t,e){if(e){for(var n=0;n<e.length;++n)e[n].marker.attachLine(t);t.markedSpans=e}}function rt(t){return t.inclusiveLeft?-1:0}function ot(t){return t.inclusiveRight?1:0}function at(t,e){var n=t.lines.length-e.lines.length;if(0!=n)return n;var i=t.find(),r=e.find(),o=I(i.from,r.from)||rt(t)-rt(e);
+if(o)return-o;var a=I(i.to,r.to)||ot(t)-ot(e);return a?a:e.id-t.id}function st(t,e){var n,i=Na&&t.markedSpans;if(i)for(var r=void 0,o=0;o<i.length;++o)r=i[o],r.marker.collapsed&&null==(e?r.from:r.to)&&(!n||at(n,r.marker)<0)&&(n=r.marker);return n}function lt(t){return st(t,!0)}function ct(t){return st(t,!1)}function ut(t,e,n,i,r){var o=A(t,e),a=Na&&o.markedSpans;if(a)for(var s=0;s<a.length;++s){var l=a[s];if(l.marker.collapsed){var c=l.marker.find(0),u=I(c.from,n)||rt(l.marker)-rt(r),h=I(c.to,i)||ot(l.marker)-ot(r);if(!(u>=0&&h<=0||u<=0&&h>=0)&&(u<=0&&(l.marker.inclusiveRight&&r.inclusiveLeft?I(c.to,n)>=0:I(c.to,n)>0)||u>=0&&(l.marker.inclusiveRight&&r.inclusiveLeft?I(c.from,i)<=0:I(c.from,i)<0)))return!0}}}function ht(t){for(var e;e=lt(t);)t=e.find(-1,!0).line;return t}function dt(t){for(var e;e=ct(t);)t=e.find(1,!0).line;return t}function ft(t){for(var e,n;e=ct(t);)t=e.find(1,!0).line,(n||(n=[])).push(t);return n}function pt(t,e){var n=A(t,e),i=ht(n);return n==i?e:P(i)}function gt(t,e){if(e>t.lastLine())return e;var n,i=A(t,e);if(!mt(t,i))return e;for(;n=ct(i);)i=n.find(1,!0).line;return P(i)+1}function mt(t,e){var n=Na&&e.markedSpans;if(n)for(var i=void 0,r=0;r<n.length;++r)if(i=n[r],i.marker.collapsed){if(null==i.from)return!0;if(!i.marker.widgetNode&&0==i.from&&i.marker.inclusiveLeft&&vt(t,e,i))return!0}}function vt(t,e,n){if(null==n.to){var i=n.marker.find(1,!0);return vt(t,i.line,X(i.line.markedSpans,n.marker))}if(n.marker.inclusiveRight&&n.to==e.text.length)return!0;for(var r=void 0,o=0;o<e.markedSpans.length;++o)if(r=e.markedSpans[o],r.marker.collapsed&&!r.marker.widgetNode&&r.from==n.to&&(null==r.to||r.to!=n.from)&&(r.marker.inclusiveLeft||n.marker.inclusiveRight)&&vt(t,e,r))return!0}function yt(t){t=ht(t);for(var e=0,n=t.parent,i=0;i<n.lines.length;++i){var r=n.lines[i];if(r==t)break;e+=r.height}for(var o=n.parent;o;n=o,o=n.parent)for(var a=0;a<o.children.length;++a){var s=o.children[a];if(s==n)break;e+=s.height}return e}function xt(t){if(0==t.height)return 0;for(var e,n=t.text.length,i=t;e=lt(i);){var r=e.find(0,!0);i=r.from.line,n+=r.from.ch-r.to.ch}for(i=t;e=ct(i);){var o=e.find(0,!0);n-=i.text.length-o.from.ch,i=o.to.line,n+=i.text.length-o.to.ch}return n}function bt(t){var e=t.display,n=t.doc;e.maxLine=A(n,n.first),e.maxLineLength=xt(e.maxLine),e.maxLineChanged=!0,n.iter(function(t){var n=xt(t);n>e.maxLineLength&&(e.maxLineLength=n,e.maxLine=t)})}function _t(t,e,n,i){if(!t)return i(e,n,"ltr");for(var r=!1,o=0;o<t.length;++o){var a=t[o];(a.from<n&&a.to>e||e==n&&a.to==e)&&(i(Math.max(a.from,e),Math.min(a.to,n),1==a.level?"rtl":"ltr"),r=!0)}r||i(e,n,"ltr")}function wt(t,e,n){var i;Oa=null;for(var r=0;r<t.length;++r){var o=t[r];if(o.from<e&&o.to>e)return r;o.to==e&&(o.from!=o.to&&"before"==n?i=r:Oa=r),o.from==e&&(o.from!=o.to&&"before"!=n?i=r:Oa=r)}return null!=i?i:Oa}function St(t,e){var n=t.order;return null==n&&(n=t.order=Ra(t.text,e)),n}function Ct(t,e,n){var i=C(t.text,e+n,n);return i<0||i>t.text.length?null:i}function Tt(t,e,n){var i=Ct(t,e.ch,n);return null==i?null:new D(e.line,i,n<0?"after":"before")}function kt(t,e,n,i,r){if(t){var o=St(n,e.doc.direction);if(o){var a,s=r<0?g(o):o[0],l=r<0==(1==s.level),c=l?"after":"before";if(s.level>0){var u=Qe(e,n);a=r<0?n.text.length-1:0;var h=Ze(e,u,a).top;a=T(function(t){return Ze(e,u,t).top==h},r<0==(1==s.level)?s.from:s.to-1,a),"before"==c&&(a=Ct(n,a,1,!0))}else a=r<0?s.to:s.from;return new D(i,a,c)}}return new D(i,r<0?n.text.length:0,r<0?"before":"after")}function At(t,e,n,i){var r=St(e,t.doc.direction);if(!r)return Tt(e,n,i);n.ch>=e.text.length?(n.ch=e.text.length,n.sticky="before"):n.ch<=0&&(n.ch=0,n.sticky="after");var o=wt(r,n.ch,n.sticky),a=r[o];if("ltr"==t.doc.direction&&a.level%2==0&&(i>0?a.to>n.ch:a.from<n.ch))return Tt(e,n,i);var s,l=function(t,n){return Ct(e,t instanceof D?t.ch:t,n)},c=function(n){return t.options.lineWrapping?(s=s||Qe(t,e),mn(t,e,s,n)):{begin:0,end:e.text.length}},u=c("before"==n.sticky?l(n,-1):n.ch);if("rtl"==t.doc.direction||1==a.level){var h=1==a.level==i<0,d=l(n,h?1:-1);if(null!=d&&(h?d<=a.to&&d<=u.end:d>=a.from&&d>=u.begin)){var f=h?"before":"after";return new D(n.line,d,f)}}var p=function(t,e,i){for(var o=function(t,e){return e?new D(n.line,l(t,1),"before"):new D(n.line,t,"after")};t>=0&&t<r.length;t+=e){var a=r[t],s=e>0==(1!=a.level),c=s?i.begin:l(i.end,-1);if(a.from<=c&&c<a.to)return o(c,s);if(c=s?a.from:l(a.to,-1),i.begin<=c&&c<i.end)return o(c,s)}},g=p(o+i,i,u);if(g)return g;var m=i>0?u.end:l(u.begin,-1);return null==m||i>0&&m==e.text.length||!(g=p(i>0?0:r.length-1,i,c(m)))?null:g}function Mt(t,e){return t._handlers&&t._handlers[e]||Da}function Lt(t,e,n){if(t.removeEventListener)t.removeEventListener(e,n,!1);else if(t.detachEvent)t.detachEvent("on"+e,n);else{var i=t._handlers,r=i&&i[e];if(r){var o=d(r,n);o>-1&&(i[e]=r.slice(0,o).concat(r.slice(o+1)))}}}function Et(t,e){var n=Mt(t,e);if(n.length)for(var i=Array.prototype.slice.call(arguments,2),r=0;r<n.length;++r)n[r].apply(null,i)}function Pt(t,e,n){return"string"==typeof e&&(e={type:e,preventDefault:function(){this.defaultPrevented=!0}}),Et(t,n||e.type,t,e),jt(e)||e.codemirrorIgnore}function Nt(t){var e=t._handlers&&t._handlers.cursorActivity;if(e)for(var n=t.curOp.cursorActivityHandlers||(t.curOp.cursorActivityHandlers=[]),i=0;i<e.length;++i)d(n,e[i])==-1&&n.push(e[i])}function Ot(t,e){return Mt(t,e).length>0}function Rt(t){t.prototype.on=function(t,e){Ia(this,t,e)},t.prototype.off=function(t,e){Lt(this,t,e)}}function Dt(t){t.preventDefault?t.preventDefault():t.returnValue=!1}function It(t){t.stopPropagation?t.stopPropagation():t.cancelBubble=!0}function jt(t){return null!=t.defaultPrevented?t.defaultPrevented:0==t.returnValue}function Vt(t){Dt(t),It(t)}function Ht(t){return t.target||t.srcElement}function Ft(t){var e=t.which;return null==e&&(1&t.button?e=1:2&t.button?e=3:4&t.button&&(e=2)),ha&&t.ctrlKey&&1==e&&(e=3),e}function zt(t){if(null==_a){var e=i("span","​");n(t,i("span",[e,document.createTextNode("x")])),0!=t.firstChild.offsetHeight&&(_a=e.offsetWidth<=1&&e.offsetHeight>2&&!(Jo&&ta<8))}var r=_a?i("span","​"):i("span"," ",null,"display: inline-block; width: 1px; margin-right: -1px");return r.setAttribute("cm-text",""),r}function qt(t){if(null!=wa)return wa;var i=n(t,document.createTextNode("AخA")),r=ga(i,0,1).getBoundingClientRect(),o=ga(i,1,2).getBoundingClientRect();return e(t),!(!r||r.left==r.right)&&(wa=o.right-r.right<3)}function Gt(t){if(null!=za)return za;var e=n(t,i("span","x")),r=e.getBoundingClientRect(),o=ga(e,0,1).getBoundingClientRect();return za=Math.abs(r.left-o.left)>1}function Bt(t,e){arguments.length>2&&(e.dependencies=Array.prototype.slice.call(arguments,2)),qa[t]=e}function $t(t,e){Ga[t]=e}function Wt(t){if("string"==typeof t&&Ga.hasOwnProperty(t))t=Ga[t];else if(t&&"string"==typeof t.name&&Ga.hasOwnProperty(t.name)){var e=Ga[t.name];"string"==typeof e&&(e={name:e}),t=x(e,t),t.name=e.name}else{if("string"==typeof t&&/^[\w\-]+\/[\w\-]+\+xml$/.test(t))return Wt("application/xml");if("string"==typeof t&&/^[\w\-]+\/[\w\-]+\+json$/.test(t))return Wt("application/json")}return"string"==typeof t?{name:t}:t||{name:"null"}}function Ut(t,e){e=Wt(e);var n=qa[e.name];if(!n)return Ut(t,"text/plain");var i=n(t,e);if(Ba.hasOwnProperty(e.name)){var r=Ba[e.name];for(var o in r)r.hasOwnProperty(o)&&(i.hasOwnProperty(o)&&(i["_"+o]=i[o]),i[o]=r[o])}if(i.name=e.name,e.helperType&&(i.helperType=e.helperType),e.modeProps)for(var a in e.modeProps)i[a]=e.modeProps[a];return i}function Xt(t,e){var n=Ba.hasOwnProperty(t)?Ba[t]:Ba[t]={};u(e,n)}function Yt(t,e){if(e===!0)return e;if(t.copyState)return t.copyState(e);var n={};for(var i in e){var r=e[i];r instanceof Array&&(r=r.concat([])),n[i]=r}return n}function Qt(t,e){for(var n;t.innerMode&&(n=t.innerMode(e),n&&n.mode!=t);)e=n.state,t=n.mode;return n||{mode:t,state:e}}function Zt(t,e,n){return!t.startState||t.startState(e,n)}function Kt(t,e,n,i){var r=[t.state.modeGen],o={};ae(t,e.text,t.doc.mode,n,function(t,e){return r.push(t,e)},o,i);for(var a=function(n){var i=t.state.overlays[n],a=1,s=0;ae(t,e.text,i.mode,!0,function(t,e){for(var n=a;s<t;){var o=r[a];o>t&&r.splice(a,1,t,r[a+1],o),a+=2,s=Math.min(t,o)}if(e)if(i.opaque)r.splice(n,a-n,t,"overlay "+e),a=n+2;else for(;n<a;n+=2){var l=r[n+1];r[n+1]=(l?l+" ":"")+"overlay "+e}},o)},s=0;s<t.state.overlays.length;++s)a(s);return{styles:r,classes:o.bgClass||o.textClass?o:null}}function Jt(t,e,n){if(!e.styles||e.styles[0]!=t.state.modeGen){var i=te(t,P(e)),r=Kt(t,e,e.text.length>t.options.maxHighlightLength?Yt(t.doc.mode,i):i);e.stateAfter=i,e.styles=r.styles,r.classes?e.styleClasses=r.classes:e.styleClasses&&(e.styleClasses=null),n===t.doc.frontier&&t.doc.frontier++}return e.styles}function te(t,e,n){var i=t.doc,r=t.display;if(!i.mode.startState)return!0;var o=se(t,e,n),a=o>i.first&&A(i,o-1).stateAfter;return a=a?Yt(i.mode,a):Zt(i.mode),i.iter(o,e,function(n){ee(t,n.text,a);var s=o==e-1||o%5==0||o>=r.viewFrom&&o<r.viewTo;n.stateAfter=s?Yt(i.mode,a):null,++o}),n&&(i.frontier=o),a}function ee(t,e,n,i){var r=t.doc.mode,o=new $a(e,t.options.tabSize);for(o.start=o.pos=i||0,""==e&&ne(r,n);!o.eol();)ie(r,o,n),o.start=o.pos}function ne(t,e){if(t.blankLine)return t.blankLine(e);if(t.innerMode){var n=Qt(t,e);return n.mode.blankLine?n.mode.blankLine(n.state):void 0}}function ie(t,e,n,i){for(var r=0;r<10;r++){i&&(i[0]=Qt(t,n).mode);var o=t.token(e,n);if(e.pos>e.start)return o}throw new Error("Mode "+t.name+" failed to advance stream.")}function re(t,e,n,i){var r,o=function(t){return{start:h.start,end:h.pos,string:h.current(),type:r||null,state:t?Yt(a.mode,u):u}},a=t.doc,s=a.mode;e=q(a,e);var l,c=A(a,e.line),u=te(t,e.line,n),h=new $a(c.text,t.options.tabSize);for(i&&(l=[]);(i||h.pos<e.ch)&&!h.eol();)h.start=h.pos,r=ie(s,h,u),i&&l.push(o(!0));return i?l:o()}function oe(t,e){if(t)for(;;){var n=t.match(/(?:^|\s+)line-(background-)?(\S+)/);if(!n)break;t=t.slice(0,n.index)+t.slice(n.index+n[0].length);var i=n[1]?"bgClass":"textClass";null==e[i]?e[i]=n[2]:new RegExp("(?:^|s)"+n[2]+"(?:$|s)").test(e[i])||(e[i]+=" "+n[2])}return t}function ae(t,e,n,i,r,o,a){var s=n.flattenSpans;null==s&&(s=t.options.flattenSpans);var l,c=0,u=null,h=new $a(e,t.options.tabSize),d=t.options.addModeClass&&[null];for(""==e&&oe(ne(n,i),o);!h.eol();){if(h.pos>t.options.maxHighlightLength?(s=!1,a&&ee(t,e,i,h.pos),h.pos=e.length,l=null):l=oe(ie(n,h,i,d),o),d){var f=d[0].name;f&&(l="m-"+(l?f+" "+l:f))}if(!s||u!=l){for(;c<h.start;)c=Math.min(h.start,c+5e3),r(c,u);u=l}h.start=h.pos}for(;c<h.pos;){var p=Math.min(h.pos,c+5e3);r(p,u),c=p}}function se(t,e,n){for(var i,r,o=t.doc,a=n?-1:e-(t.doc.mode.innerMode?1e3:100),s=e;s>a;--s){if(s<=o.first)return o.first;var l=A(o,s-1);if(l.stateAfter&&(!n||s<=o.frontier))return s;var c=h(l.text,null,t.options.tabSize);(null==r||i>c)&&(r=s-1,i=c)}return r}function le(t,e,n,i){t.text=e,t.stateAfter&&(t.stateAfter=null),t.styles&&(t.styles=null),null!=t.order&&(t.order=null),nt(t),it(t,n);var r=i?i(t):1;r!=t.height&&E(t,r)}function ce(t){t.parent=null,nt(t)}function ue(t,e){if(!t||/^\s*$/.test(t))return null;var n=e.addModeClass?Ya:Xa;return n[t]||(n[t]=t.replace(/\S+/g,"cm-$&"))}function he(t,e){var n=r("span",null,null,ea?"padding-right: .1px":null),i={pre:r("pre",[n],"CodeMirror-line"),content:n,col:0,pos:0,cm:t,trailingSpace:!1,splitSpaces:(Jo||ea)&&t.getOption("lineWrapping")};e.measure={};for(var o=0;o<=(e.rest?e.rest.length:0);o++){var a=o?e.rest[o-1]:e.line,s=void 0;i.pos=0,i.addToken=fe,qt(t.display.measure)&&(s=St(a,t.doc.direction))&&(i.addToken=ge(i.addToken,s)),i.map=[];var c=e!=t.display.externalMeasured&&P(a);ve(a,i,Jt(t,a,c)),a.styleClasses&&(a.styleClasses.bgClass&&(i.bgClass=l(a.styleClasses.bgClass,i.bgClass||"")),a.styleClasses.textClass&&(i.textClass=l(a.styleClasses.textClass,i.textClass||""))),0==i.map.length&&i.map.push(0,0,i.content.appendChild(zt(t.display.measure))),0==o?(e.measure.map=i.map,e.measure.cache={}):((e.measure.maps||(e.measure.maps=[])).push(i.map),(e.measure.caches||(e.measure.caches=[])).push({}))}if(ea){var u=i.content.lastChild;(/\bcm-tab\b/.test(u.className)||u.querySelector&&u.querySelector(".cm-tab"))&&(i.content.className="cm-tab-wrap-hack")}return Et(t,"renderLine",t,e.line,i.pre),i.pre.className&&(i.textClass=l(i.pre.className,i.textClass||"")),i}function de(t){var e=i("span","•","cm-invalidchar");return e.title="\\u"+t.charCodeAt(0).toString(16),e.setAttribute("aria-label",e.title),e}function fe(t,e,n,r,o,a,s){if(e){var l,c=t.splitSpaces?pe(e,t.trailingSpace):e,u=t.cm.state.specialChars,h=!1;if(u.test(e)){l=document.createDocumentFragment();for(var d=0;;){u.lastIndex=d;var f=u.exec(e),g=f?f.index-d:e.length-d;if(g){var m=document.createTextNode(c.slice(d,d+g));Jo&&ta<9?l.appendChild(i("span",[m])):l.appendChild(m),t.map.push(t.pos,t.pos+g,m),t.col+=g,t.pos+=g}if(!f)break;d+=g+1;var v=void 0;if("\t"==f[0]){var y=t.cm.options.tabSize,x=y-t.col%y;v=l.appendChild(i("span",p(x),"cm-tab")),v.setAttribute("role","presentation"),v.setAttribute("cm-text","\t"),t.col+=x}else"\r"==f[0]||"\n"==f[0]?(v=l.appendChild(i("span","\r"==f[0]?"␍":"␤","cm-invalidchar")),v.setAttribute("cm-text",f[0]),t.col+=1):(v=t.cm.options.specialCharPlaceholder(f[0]),v.setAttribute("cm-text",f[0]),Jo&&ta<9?l.appendChild(i("span",[v])):l.appendChild(v),t.col+=1);t.map.push(t.pos,t.pos+1,v),t.pos++}}else t.col+=e.length,l=document.createTextNode(c),t.map.push(t.pos,t.pos+e.length,l),Jo&&ta<9&&(h=!0),t.pos+=e.length;if(t.trailingSpace=32==c.charCodeAt(e.length-1),n||r||o||h||s){var b=n||"";r&&(b+=r),o&&(b+=o);var _=i("span",[l],b,s);return a&&(_.title=a),t.content.appendChild(_)}t.content.appendChild(l)}}function pe(t,e){if(t.length>1&&!/  /.test(t))return t;for(var n=e,i="",r=0;r<t.length;r++){var o=t.charAt(r);" "!=o||!n||r!=t.length-1&&32!=t.charCodeAt(r+1)||(o=" "),i+=o,n=" "==o}return i}function ge(t,e){return function(n,i,r,o,a,s,l){r=r?r+" cm-force-border":"cm-force-border";for(var c=n.pos,u=c+i.length;;){for(var h=void 0,d=0;d<e.length&&(h=e[d],!(h.to>c&&h.from<=c));d++);if(h.to>=u)return t(n,i,r,o,a,s,l);t(n,i.slice(0,h.to-c),r,o,null,s,l),o=null,i=i.slice(h.to-c),c=h.to}}}function me(t,e,n,i){var r=!i&&n.widgetNode;r&&t.map.push(t.pos,t.pos+e,r),!i&&t.cm.display.input.needsContentAttribute&&(r||(r=t.content.appendChild(document.createElement("span"))),r.setAttribute("cm-marker",n.id)),r&&(t.cm.display.input.setUneditable(r),t.content.appendChild(r)),t.pos+=e,t.trailingSpace=!1}function ve(t,e,n){var i=t.markedSpans,r=t.text,o=0;if(i)for(var a,s,l,c,u,h,d,f=r.length,p=0,g=1,m="",v=0;;){if(v==p){l=c=u=h=s="",d=null,v=1/0;for(var y=[],x=void 0,b=0;b<i.length;++b){var _=i[b],w=_.marker;"bookmark"==w.type&&_.from==p&&w.widgetNode?y.push(w):_.from<=p&&(null==_.to||_.to>p||w.collapsed&&_.to==p&&_.from==p)?(null!=_.to&&_.to!=p&&v>_.to&&(v=_.to,c=""),w.className&&(l+=" "+w.className),w.css&&(s=(s?s+";":"")+w.css),w.startStyle&&_.from==p&&(u+=" "+w.startStyle),w.endStyle&&_.to==v&&(x||(x=[])).push(w.endStyle,_.to),w.title&&!h&&(h=w.title),w.collapsed&&(!d||at(d.marker,w)<0)&&(d=_)):_.from>p&&v>_.from&&(v=_.from)}if(x)for(var S=0;S<x.length;S+=2)x[S+1]==v&&(c+=" "+x[S]);if(!d||d.from==p)for(var C=0;C<y.length;++C)me(e,0,y[C]);if(d&&(d.from||0)==p){if(me(e,(null==d.to?f+1:d.to)-p,d.marker,null==d.from),null==d.to)return;d.to==p&&(d=!1)}}if(p>=f)break;for(var T=Math.min(f,v);;){if(m){var k=p+m.length;if(!d){var A=k>T?m.slice(0,T-p):m;e.addToken(e,A,a?a+l:l,u,p+A.length==v?c:"",h,s)}if(k>=T){m=m.slice(T-p),p=T;break}p=k,u=""}m=r.slice(o,o=n[g++]),a=ue(n[g++],e.cm.options)}}else for(var M=1;M<n.length;M+=2)e.addToken(e,r.slice(o,o=n[M]),ue(n[M+1],e.cm.options))}function ye(t,e,n){this.line=e,this.rest=ft(e),this.size=this.rest?P(g(this.rest))-n+1:1,this.node=this.text=null,this.hidden=mt(t,e)}function xe(t,e,n){for(var i,r=[],o=e;o<n;o=i){var a=new ye(t.doc,A(t.doc,o),o);i=o+a.size,r.push(a)}return r}function be(t){Qa?Qa.ops.push(t):t.ownsGroup=Qa={ops:[t],delayedCallbacks:[]}}function _e(t){var e=t.delayedCallbacks,n=0;do{for(;n<e.length;n++)e[n].call(null);for(var i=0;i<t.ops.length;i++){var r=t.ops[i];if(r.cursorActivityHandlers)for(;r.cursorActivityCalled<r.cursorActivityHandlers.length;)r.cursorActivityHandlers[r.cursorActivityCalled++].call(null,r.cm)}}while(n<e.length)}function we(t,e){var n=t.ownsGroup;if(n)try{_e(n)}finally{Qa=null,e(n)}}function Se(t,e){var n=Mt(t,e);if(n.length){var i,r=Array.prototype.slice.call(arguments,2);Qa?i=Qa.delayedCallbacks:Za?i=Za:(i=Za=[],setTimeout(Ce,0));for(var o=function(t){i.push(function(){return n[t].apply(null,r)})},a=0;a<n.length;++a)o(a)}}function Ce(){var t=Za;Za=null;for(var e=0;e<t.length;++e)t[e]()}function Te(t,e,n,i){for(var r=0;r<e.changes.length;r++){var o=e.changes[r];"text"==o?Le(t,e):"gutter"==o?Pe(t,e,n,i):"class"==o?Ee(t,e):"widget"==o&&Ne(t,e,i)}e.changes=null}function ke(t){return t.node==t.text&&(t.node=i("div",null,null,"position: relative"),t.text.parentNode&&t.text.parentNode.replaceChild(t.node,t.text),t.node.appendChild(t.text),Jo&&ta<8&&(t.node.style.zIndex=2)),t.node}function Ae(t,e){var n=e.bgClass?e.bgClass+" "+(e.line.bgClass||""):e.line.bgClass;if(n&&(n+=" CodeMirror-linebackground"),e.background)n?e.background.className=n:(e.background.parentNode.removeChild(e.background),e.background=null);else if(n){var r=ke(e);e.background=r.insertBefore(i("div",null,n),r.firstChild),t.display.input.setUneditable(e.background)}}function Me(t,e){var n=t.display.externalMeasured;return n&&n.line==e.line?(t.display.externalMeasured=null,e.measure=n.measure,n.built):he(t,e)}function Le(t,e){var n=e.text.className,i=Me(t,e);e.text==e.node&&(e.node=i.pre),e.text.parentNode.replaceChild(i.pre,e.text),e.text=i.pre,i.bgClass!=e.bgClass||i.textClass!=e.textClass?(e.bgClass=i.bgClass,e.textClass=i.textClass,Ee(t,e)):n&&(e.text.className=n)}function Ee(t,e){Ae(t,e),e.line.wrapClass?ke(e).className=e.line.wrapClass:e.node!=e.text&&(e.node.className="");var n=e.textClass?e.textClass+" "+(e.line.textClass||""):e.line.textClass;e.text.className=n||""}function Pe(t,e,n,r){if(e.gutter&&(e.node.removeChild(e.gutter),e.gutter=null),e.gutterBackground&&(e.node.removeChild(e.gutterBackground),e.gutterBackground=null),e.line.gutterClass){var o=ke(e);e.gutterBackground=i("div",null,"CodeMirror-gutter-background "+e.line.gutterClass,"left: "+(t.options.fixedGutter?r.fixedPos:-r.gutterTotalWidth)+"px; width: "+r.gutterTotalWidth+"px"),t.display.input.setUneditable(e.gutterBackground),o.insertBefore(e.gutterBackground,e.text)}var a=e.line.gutterMarkers;if(t.options.lineNumbers||a){var s=ke(e),l=e.gutter=i("div",null,"CodeMirror-gutter-wrapper","left: "+(t.options.fixedGutter?r.fixedPos:-r.gutterTotalWidth)+"px");if(t.display.input.setUneditable(l),s.insertBefore(l,e.text),e.line.gutterClass&&(l.className+=" "+e.line.gutterClass),!t.options.lineNumbers||a&&a["CodeMirror-linenumbers"]||(e.lineNumber=l.appendChild(i("div",R(t.options,n),"CodeMirror-linenumber CodeMirror-gutter-elt","left: "+r.gutterLeft["CodeMirror-linenumbers"]+"px; width: "+t.display.lineNumInnerWidth+"px"))),a)for(var c=0;c<t.options.gutters.length;++c){var u=t.options.gutters[c],h=a.hasOwnProperty(u)&&a[u];h&&l.appendChild(i("div",[h],"CodeMirror-gutter-elt","left: "+r.gutterLeft[u]+"px; width: "+r.gutterWidth[u]+"px"))}}}function Ne(t,e,n){e.alignable&&(e.alignable=null);for(var i=e.node.firstChild,r=void 0;i;i=r)r=i.nextSibling,"CodeMirror-linewidget"==i.className&&e.node.removeChild(i);Re(t,e,n)}function Oe(t,e,n,i){var r=Me(t,e);return e.text=e.node=r.pre,r.bgClass&&(e.bgClass=r.bgClass),r.textClass&&(e.textClass=r.textClass),Ee(t,e),Pe(t,e,n,i),Re(t,e,i),e.node}function Re(t,e,n){if(De(t,e.line,e,n,!0),e.rest)for(var i=0;i<e.rest.length;i++)De(t,e.rest[i],e,n,!1)}function De(t,e,n,r,o){if(e.widgets)for(var a=ke(n),s=0,l=e.widgets;s<l.length;++s){var c=l[s],u=i("div",[c.node],"CodeMirror-linewidget");c.handleMouseEvents||u.setAttribute("cm-ignore-events","true"),Ie(c,u,n,r),t.display.input.setUneditable(u),o&&c.above?a.insertBefore(u,n.gutter||n.text):a.appendChild(u),Se(c,"redraw")}}function Ie(t,e,n,i){if(t.noHScroll){(n.alignable||(n.alignable=[])).push(e);var r=i.wrapperWidth;e.style.left=i.fixedPos+"px",t.coverGutter||(r-=i.gutterTotalWidth,e.style.paddingLeft=i.gutterTotalWidth+"px"),e.style.width=r+"px"}t.coverGutter&&(e.style.zIndex=5,e.style.position="relative",t.noHScroll||(e.style.marginLeft=-i.gutterTotalWidth+"px"))}function je(t){if(null!=t.height)return t.height;var e=t.doc.cm;if(!e)return 0;if(!o(document.body,t.node)){var r="position: relative;";t.coverGutter&&(r+="margin-left: -"+e.display.gutters.offsetWidth+"px;"),t.noHScroll&&(r+="width: "+e.display.wrapper.clientWidth+"px;"),n(e.display.measure,i("div",[t.node],null,r))}return t.height=t.node.parentNode.offsetHeight}function Ve(t,e){for(var n=Ht(e);n!=t.wrapper;n=n.parentNode)if(!n||1==n.nodeType&&"true"==n.getAttribute("cm-ignore-events")||n.parentNode==t.sizer&&n!=t.mover)return!0}function He(t){return t.lineSpace.offsetTop}function Fe(t){return t.mover.offsetHeight-t.lineSpace.offsetHeight}function ze(t){if(t.cachedPaddingH)return t.cachedPaddingH;var e=n(t.measure,i("pre","x")),r=window.getComputedStyle?window.getComputedStyle(e):e.currentStyle,o={left:parseInt(r.paddingLeft),right:parseInt(r.paddingRight)};return isNaN(o.left)||isNaN(o.right)||(t.cachedPaddingH=o),o}function qe(t){return Sa-t.display.nativeBarWidth}function Ge(t){return t.display.scroller.clientWidth-qe(t)-t.display.barWidth}function Be(t){return t.display.scroller.clientHeight-qe(t)-t.display.barHeight}function $e(t,e,n){var i=t.options.lineWrapping,r=i&&Ge(t);if(!e.measure.heights||i&&e.measure.width!=r){var o=e.measure.heights=[];if(i){e.measure.width=r;for(var a=e.text.firstChild.getClientRects(),s=0;s<a.length-1;s++){var l=a[s],c=a[s+1];Math.abs(l.bottom-c.bottom)>2&&o.push((l.bottom+c.top)/2-n.top)}}o.push(n.bottom-n.top)}}function We(t,e,n){if(t.line==e)return{map:t.measure.map,cache:t.measure.cache};for(var i=0;i<t.rest.length;i++)if(t.rest[i]==e)return{map:t.measure.maps[i],cache:t.measure.caches[i]};for(var r=0;r<t.rest.length;r++)if(P(t.rest[r])>n)return{map:t.measure.maps[r],cache:t.measure.caches[r],before:!0}}function Ue(t,e){e=ht(e);var i=P(e),r=t.display.externalMeasured=new ye(t.doc,e,i);r.lineN=i;var o=r.built=he(t,r);return r.text=o.pre,n(t.display.lineMeasure,o.pre),r}function Xe(t,e,n,i){return Ze(t,Qe(t,e),n,i)}function Ye(t,e){if(e>=t.display.viewFrom&&e<t.display.viewTo)return t.display.view[Tn(t,e)];var n=t.display.externalMeasured;return n&&e>=n.lineN&&e<n.lineN+n.size?n:void 0}function Qe(t,e){var n=P(e),i=Ye(t,n);i&&!i.text?i=null:i&&i.changes&&(Te(t,i,n,bn(t)),t.curOp.forceUpdate=!0),i||(i=Ue(t,e));var r=We(i,e,n);return{line:e,view:i,rect:null,map:r.map,cache:r.cache,before:r.before,hasHeights:!1}}function Ze(t,e,n,i,r){e.before&&(n=-1);var o,a=n+(i||"");return e.cache.hasOwnProperty(a)?o=e.cache[a]:(e.rect||(e.rect=e.view.text.getBoundingClientRect()),e.hasHeights||($e(t,e.view,e.rect),e.hasHeights=!0),o=tn(t,e,n,i),o.bogus||(e.cache[a]=o)),{left:o.left,right:o.right,top:r?o.rtop:o.top,bottom:r?o.rbottom:o.bottom}}function Ke(t,e,n){for(var i,r,o,a,s,l,c=0;c<t.length;c+=3)if(s=t[c],l=t[c+1],e<s?(r=0,o=1,a="left"):e<l?(r=e-s,o=r+1):(c==t.length-3||e==l&&t[c+3]>e)&&(o=l-s,r=o-1,e>=l&&(a="right")),null!=r){if(i=t[c+2],s==l&&n==(i.insertLeft?"left":"right")&&(a=n),"left"==n&&0==r)for(;c&&t[c-2]==t[c-3]&&t[c-1].insertLeft;)i=t[(c-=3)+2],a="left";if("right"==n&&r==l-s)for(;c<t.length-3&&t[c+3]==t[c+4]&&!t[c+5].insertLeft;)i=t[(c+=3)+2],a="right";break}return{node:i,start:r,end:o,collapse:a,coverStart:s,coverEnd:l}}function Je(t,e){var n=Ka;if("left"==e)for(var i=0;i<t.length&&(n=t[i]).left==n.right;i++);else for(var r=t.length-1;r>=0&&(n=t[r]).left==n.right;r--);return n}function tn(t,e,n,i){var r,o=Ke(e.map,n,i),a=o.node,s=o.start,l=o.end,c=o.collapse;if(3==a.nodeType){for(var u=0;u<4;u++){for(;s&&S(e.line.text.charAt(o.coverStart+s));)--s;for(;o.coverStart+l<o.coverEnd&&S(e.line.text.charAt(o.coverStart+l));)++l;if(r=Jo&&ta<9&&0==s&&l==o.coverEnd-o.coverStart?a.parentNode.getBoundingClientRect():Je(ga(a,s,l).getClientRects(),i),r.left||r.right||0==s)break;l=s,s-=1,c="right"}Jo&&ta<11&&(r=en(t.display.measure,r))}else{s>0&&(c=i="right");var h;r=t.options.lineWrapping&&(h=a.getClientRects()).length>1?h["right"==i?h.length-1:0]:a.getBoundingClientRect()}if(Jo&&ta<9&&!s&&(!r||!r.left&&!r.right)){var d=a.parentNode.getClientRects()[0];r=d?{left:d.left,right:d.left+xn(t.display),top:d.top,bottom:d.bottom}:Ka}for(var f=r.top-e.rect.top,p=r.bottom-e.rect.top,g=(f+p)/2,m=e.view.measure.heights,v=0;v<m.length-1&&!(g<m[v]);v++);var y=v?m[v-1]:0,x=m[v],b={left:("right"==c?r.right:r.left)-e.rect.left,right:("left"==c?r.left:r.right)-e.rect.left,top:y,bottom:x};return r.left||r.right||(b.bogus=!0),t.options.singleCursorHeightPerLine||(b.rtop=f,b.rbottom=p),b}function en(t,e){if(!window.screen||null==screen.logicalXDPI||screen.logicalXDPI==screen.deviceXDPI||!Gt(t))return e;var n=screen.logicalXDPI/screen.deviceXDPI,i=screen.logicalYDPI/screen.deviceYDPI;return{left:e.left*n,right:e.right*n,top:e.top*i,bottom:e.bottom*i}}function nn(t){if(t.measure&&(t.measure.cache={},t.measure.heights=null,t.rest))for(var e=0;e<t.rest.length;e++)t.measure.caches[e]={}}function rn(t){t.display.externalMeasure=null,e(t.display.lineMeasure);for(var n=0;n<t.display.view.length;n++)nn(t.display.view[n])}function on(t){rn(t),t.display.cachedCharWidth=t.display.cachedTextHeight=t.display.cachedPaddingH=null,t.options.lineWrapping||(t.display.maxLineChanged=!0),t.display.lineNumChars=null}function an(){return ia&&ca?-(document.body.getBoundingClientRect().left-parseInt(getComputedStyle(document.body).marginLeft)):window.pageXOffset||(document.documentElement||document.body).scrollLeft}function sn(){return ia&&ca?-(document.body.getBoundingClientRect().top-parseInt(getComputedStyle(document.body).marginTop)):window.pageYOffset||(document.documentElement||document.body).scrollTop}function ln(t,e,n,i,r){if(!r&&e.widgets)for(var o=0;o<e.widgets.length;++o)if(e.widgets[o].above){var a=je(e.widgets[o]);n.top+=a,n.bottom+=a}if("line"==i)return n;i||(i="local");var s=yt(e);if("local"==i?s+=He(t.display):s-=t.display.viewOffset,"page"==i||"window"==i){var l=t.display.lineSpace.getBoundingClientRect();s+=l.top+("window"==i?0:sn());var c=l.left+("window"==i?0:an());n.left+=c,n.right+=c}return n.top+=s,n.bottom+=s,n}function cn(t,e,n){if("div"==n)return e;var i=e.left,r=e.top;if("page"==n)i-=an(),r-=sn();else if("local"==n||!n){var o=t.display.sizer.getBoundingClientRect();i+=o.left,r+=o.top}var a=t.display.lineSpace.getBoundingClientRect();return{left:i-a.left,top:r-a.top}}function un(t,e,n,i,r){return i||(i=A(t.doc,e.line)),ln(t,i,Xe(t,i,e.ch,r),n)}function hn(t,e,n,i,r,o){function a(e,a){var s=Ze(t,r,e,a?"right":"left",o);return a?s.left=s.right:s.right=s.left,ln(t,i,s,n)}function s(t,e,n){var i=l[e],r=i.level%2!=0;return a(n?t-1:t,r!=n)}i=i||A(t.doc,e.line),r||(r=Qe(t,i));var l=St(i,t.doc.direction),c=e.ch,u=e.sticky;if(c>=i.text.length?(c=i.text.length,u="before"):c<=0&&(c=0,u="after"),!l)return a("before"==u?c-1:c,"before"==u);var h=wt(l,c,u),d=Oa,f=s(c,h,"before"==u);return null!=d&&(f.other=s(c,d,"before"!=u)),f}function dn(t,e){var n=0;e=q(t.doc,e),t.options.lineWrapping||(n=xn(t.display)*e.ch);var i=A(t.doc,e.line),r=yt(i)+He(t.display);return{left:n,right:n,top:r,bottom:r+i.height}}function fn(t,e,n,i,r){var o=D(t,e,n);return o.xRel=r,i&&(o.outside=!0),o}function pn(t,e,n){var i=t.doc;if(n+=t.display.viewOffset,n<0)return fn(i.first,0,null,!0,-1);var r=N(i,n),o=i.first+i.size-1;if(r>o)return fn(i.first+i.size-1,A(i,o).text.length,null,!0,1);e<0&&(e=0);for(var a=A(i,r);;){var s=vn(t,a,r,e,n),l=ct(a),c=l&&l.find(0,!0);if(!l||!(s.ch>c.from.ch||s.ch==c.from.ch&&s.xRel>0))return s;r=P(a=c.to.line)}}function gn(t,e,n,i){var r=function(i){return ln(t,e,Ze(t,n,i),"line")},o=e.text.length,a=T(function(t){return r(t-1).bottom<=i},o,0);return o=T(function(t){return r(t).top>i},a,o),{begin:a,end:o}}function mn(t,e,n,i){var r=ln(t,e,Ze(t,n,i),"line").top;return gn(t,e,n,r)}function vn(t,e,n,i,r){r-=yt(e);var o,a=0,s=e.text.length,l=Qe(t,e),c=St(e,t.doc.direction);if(c){if(t.options.lineWrapping){var u;u=gn(t,e,l,r),a=u.begin,s=u.end,u}o=new D(n,a);var h,d,f=hn(t,o,"line",e,l).left,p=f<i?1:-1,g=f-i;do{if(h=g,d=o,o=At(t,e,o,p),null==o||o.ch<a||s<=("before"==o.sticky?o.ch-1:o.ch)){o=d;break}g=hn(t,o,"line",e,l).left-i}while(p<0!=g<0&&Math.abs(g)<=Math.abs(h));if(Math.abs(g)>Math.abs(h)){if(g<0==h<0)throw new Error("Broke out of infinite loop in coordsCharInner");o=d}}else{var m=T(function(n){var o=ln(t,e,Ze(t,l,n),"line");return o.top>r?(s=Math.min(n,s),!0):!(o.bottom<=r)&&(o.left>i||!(o.right<i)&&i-o.left<o.right-i)},a,s);m=C(e.text,m,1),o=new D(n,m,m==s?"before":"after")}var v=hn(t,o,"line",e,l);return(r<v.top||v.bottom<r)&&(o.outside=!0),o.xRel=i<v.left?-1:i>v.right?1:0,o}function yn(t){if(null!=t.cachedTextHeight)return t.cachedTextHeight;if(null==Ua){Ua=i("pre");for(var r=0;r<49;++r)Ua.appendChild(document.createTextNode("x")),Ua.appendChild(i("br"));Ua.appendChild(document.createTextNode("x"))}n(t.measure,Ua);var o=Ua.offsetHeight/50;return o>3&&(t.cachedTextHeight=o),e(t.measure),o||1}function xn(t){if(null!=t.cachedCharWidth)return t.cachedCharWidth;var e=i("span","xxxxxxxxxx"),r=i("pre",[e]);n(t.measure,r);var o=e.getBoundingClientRect(),a=(o.right-o.left)/10;return a>2&&(t.cachedCharWidth=a),a||10}function bn(t){for(var e=t.display,n={},i={},r=e.gutters.clientLeft,o=e.gutters.firstChild,a=0;o;o=o.nextSibling,++a)n[t.options.gutters[a]]=o.offsetLeft+o.clientLeft+r,i[t.options.gutters[a]]=o.clientWidth;return{fixedPos:_n(e),gutterTotalWidth:e.gutters.offsetWidth,gutterLeft:n,gutterWidth:i,wrapperWidth:e.wrapper.clientWidth}}function _n(t){return t.scroller.getBoundingClientRect().left-t.sizer.getBoundingClientRect().left}function wn(t){var e=yn(t.display),n=t.options.lineWrapping,i=n&&Math.max(5,t.display.scroller.clientWidth/xn(t.display)-3);return function(r){if(mt(t.doc,r))return 0;var o=0;if(r.widgets)for(var a=0;a<r.widgets.length;a++)r.widgets[a].height&&(o+=r.widgets[a].height);return n?o+(Math.ceil(r.text.length/i)||1)*e:o+e}}function Sn(t){var e=t.doc,n=wn(t);e.iter(function(t){var e=n(t);e!=t.height&&E(t,e)})}function Cn(t,e,n,i){var r=t.display;if(!n&&"true"==Ht(e).getAttribute("cm-not-content"))return null;var o,a,s=r.lineSpace.getBoundingClientRect();try{o=e.clientX-s.left,a=e.clientY-s.top}catch(t){return null}var l,c=pn(t,o,a);if(i&&1==c.xRel&&(l=A(t.doc,c.line).text).length==c.ch){var u=h(l,l.length,t.options.tabSize)-l.length;c=D(c.line,Math.max(0,Math.round((o-ze(t.display).left)/xn(t.display))-u))}return c}function Tn(t,e){if(e>=t.display.viewTo)return null;if(e-=t.display.viewFrom,e<0)return null;for(var n=t.display.view,i=0;i<n.length;i++)if(e-=n[i].size,e<0)return i}function kn(t){t.display.input.showSelection(t.display.input.prepareSelection())}function An(t,e){for(var n=t.doc,i={},r=i.cursors=document.createDocumentFragment(),o=i.selection=document.createDocumentFragment(),a=0;a<n.sel.ranges.length;a++)if(e!==!1||a!=n.sel.primIndex){var s=n.sel.ranges[a];if(!(s.from().line>=t.display.viewTo||s.to().line<t.display.viewFrom)){var l=s.empty();(l||t.options.showCursorWhenSelecting)&&Mn(t,s.head,r),l||Ln(t,s,o)}}return i}function Mn(t,e,n){var r=hn(t,e,"div",null,null,!t.options.singleCursorHeightPerLine),o=n.appendChild(i("div"," ","CodeMirror-cursor"));if(o.style.left=r.left+"px",o.style.top=r.top+"px",o.style.height=Math.max(0,r.bottom-r.top)*t.options.cursorHeight+"px",r.other){var a=n.appendChild(i("div"," ","CodeMirror-cursor CodeMirror-secondarycursor"));a.style.display="",a.style.left=r.other.left+"px",a.style.top=r.other.top+"px",a.style.height=.85*(r.other.bottom-r.other.top)+"px"}}function Ln(t,e,n){function r(t,e,n,r){e<0&&(e=0),e=Math.round(e),r=Math.round(r),l.appendChild(i("div",null,"CodeMirror-selected","position: absolute; left: "+t+"px;\n                             top: "+e+"px; width: "+(null==n?h-t:n)+"px;\n                             height: "+(r-e)+"px"));
+}function o(e,n,i){function o(n,i){return un(t,D(e,n),"div",c,i)}var a,l,c=A(s,e),d=c.text.length;return _t(St(c,s.direction),n||0,null==i?d:i,function(t,e,s){var c,f,p,g=o(t,"left");if(t==e)c=g,f=p=g.left;else{if(c=o(e-1,"right"),"rtl"==s){var m=g;g=c,c=m}f=g.left,p=c.right}null==n&&0==t&&(f=u),c.top-g.top>3&&(r(f,g.top,null,g.bottom),f=u,g.bottom<c.top&&r(f,g.bottom,null,c.top)),null==i&&e==d&&(p=h),(!a||g.top<a.top||g.top==a.top&&g.left<a.left)&&(a=g),(!l||c.bottom>l.bottom||c.bottom==l.bottom&&c.right>l.right)&&(l=c),f<u+1&&(f=u),r(f,c.top,p-f,c.bottom)}),{start:a,end:l}}var a=t.display,s=t.doc,l=document.createDocumentFragment(),c=ze(t.display),u=c.left,h=Math.max(a.sizerWidth,Ge(t)-a.sizer.offsetLeft)-c.right,d=e.from(),f=e.to();if(d.line==f.line)o(d.line,d.ch,f.ch);else{var p=A(s,d.line),g=A(s,f.line),m=ht(p)==ht(g),v=o(d.line,d.ch,m?p.text.length+1:null).end,y=o(f.line,m?0:null,f.ch).start;m&&(v.top<y.top-2?(r(v.right,v.top,null,v.bottom),r(u,y.top,y.left,y.bottom)):r(v.right,v.top,y.left-v.right,v.bottom)),v.bottom<y.top&&r(u,v.bottom,null,y.top)}n.appendChild(l)}function En(t){if(t.state.focused){var e=t.display;clearInterval(e.blinker);var n=!0;e.cursorDiv.style.visibility="",t.options.cursorBlinkRate>0?e.blinker=setInterval(function(){return e.cursorDiv.style.visibility=(n=!n)?"":"hidden"},t.options.cursorBlinkRate):t.options.cursorBlinkRate<0&&(e.cursorDiv.style.visibility="hidden")}}function Pn(t){t.state.focused||(t.display.input.focus(),On(t))}function Nn(t){t.state.delayingBlurEvent=!0,setTimeout(function(){t.state.delayingBlurEvent&&(t.state.delayingBlurEvent=!1,Rn(t))},100)}function On(t,e){t.state.delayingBlurEvent&&(t.state.delayingBlurEvent=!1),"nocursor"!=t.options.readOnly&&(t.state.focused||(Et(t,"focus",t,e),t.state.focused=!0,s(t.display.wrapper,"CodeMirror-focused"),t.curOp||t.display.selForContextMenu==t.doc.sel||(t.display.input.reset(),ea&&setTimeout(function(){return t.display.input.reset(!0)},20)),t.display.input.receivedFocus()),En(t))}function Rn(t,e){t.state.delayingBlurEvent||(t.state.focused&&(Et(t,"blur",t,e),t.state.focused=!1,ya(t.display.wrapper,"CodeMirror-focused")),clearInterval(t.display.blinker),setTimeout(function(){t.state.focused||(t.display.shift=!1)},150))}function Dn(t){var e=t.display,n=e.view;if(e.alignWidgets||e.gutters.firstChild&&t.options.fixedGutter){for(var i=_n(e)-e.scroller.scrollLeft+t.doc.scrollLeft,r=e.gutters.offsetWidth,o=i+"px",a=0;a<n.length;a++)if(!n[a].hidden){t.options.fixedGutter&&(n[a].gutter&&(n[a].gutter.style.left=o),n[a].gutterBackground&&(n[a].gutterBackground.style.left=o));var s=n[a].alignable;if(s)for(var l=0;l<s.length;l++)s[l].style.left=o}t.options.fixedGutter&&(e.gutters.style.left=i+r+"px")}}function In(t){if(!t.options.lineNumbers)return!1;var e=t.doc,n=R(t.options,e.first+e.size-1),r=t.display;if(n.length!=r.lineNumChars){var o=r.measure.appendChild(i("div",[i("div",n)],"CodeMirror-linenumber CodeMirror-gutter-elt")),a=o.firstChild.offsetWidth,s=o.offsetWidth-a;return r.lineGutter.style.width="",r.lineNumInnerWidth=Math.max(a,r.lineGutter.offsetWidth-s)+1,r.lineNumWidth=r.lineNumInnerWidth+s,r.lineNumChars=r.lineNumInnerWidth?n.length:-1,r.lineGutter.style.width=r.lineNumWidth+"px",Ai(t),!0}return!1}function jn(t){for(var e=t.display,n=e.lineDiv.offsetTop,i=0;i<e.view.length;i++){var r=e.view[i],o=void 0;if(!r.hidden){if(Jo&&ta<8){var a=r.node.offsetTop+r.node.offsetHeight;o=a-n,n=a}else{var s=r.node.getBoundingClientRect();o=s.bottom-s.top}var l=r.line.height-o;if(o<2&&(o=yn(e)),(l>.001||l<-.001)&&(E(r.line,o),Vn(r.line),r.rest))for(var c=0;c<r.rest.length;c++)Vn(r.rest[c])}}}function Vn(t){if(t.widgets)for(var e=0;e<t.widgets.length;++e)t.widgets[e].height=t.widgets[e].node.parentNode.offsetHeight}function Hn(t,e,n){var i=n&&null!=n.top?Math.max(0,n.top):t.scroller.scrollTop;i=Math.floor(i-He(t));var r=n&&null!=n.bottom?n.bottom:i+t.wrapper.clientHeight,o=N(e,i),a=N(e,r);if(n&&n.ensure){var s=n.ensure.from.line,l=n.ensure.to.line;s<o?(o=s,a=N(e,yt(A(e,s))+t.wrapper.clientHeight)):Math.min(l,e.lastLine())>=a&&(o=N(e,yt(A(e,l))-t.wrapper.clientHeight),a=l)}return{from:o,to:Math.max(a,o+1)}}function Fn(t,e){Math.abs(t.doc.scrollTop-e)<2||(t.doc.scrollTop=e,Yo||Ti(t,{top:e}),t.display.scroller.scrollTop!=e&&(t.display.scroller.scrollTop=e),t.display.scrollbars.setScrollTop(e),Yo&&Ti(t),bi(t,100))}function zn(t,e,n){(n?e==t.doc.scrollLeft:Math.abs(t.doc.scrollLeft-e)<2)||(e=Math.min(e,t.display.scroller.scrollWidth-t.display.scroller.clientWidth),t.doc.scrollLeft=e,Dn(t),t.display.scroller.scrollLeft!=e&&(t.display.scroller.scrollLeft=e),t.display.scrollbars.setScrollLeft(e))}function qn(t){var e=t.wheelDeltaX,n=t.wheelDeltaY;return null==e&&t.detail&&t.axis==t.HORIZONTAL_AXIS&&(e=t.detail),null==n&&t.detail&&t.axis==t.VERTICAL_AXIS?n=t.detail:null==n&&(n=t.wheelDelta),{x:e,y:n}}function Gn(t){var e=qn(t);return e.x*=ts,e.y*=ts,e}function Bn(t,e){var n=qn(e),i=n.x,r=n.y,o=t.display,a=o.scroller,s=a.scrollWidth>a.clientWidth,l=a.scrollHeight>a.clientHeight;if(i&&s||r&&l){if(r&&ha&&ea)t:for(var c=e.target,u=o.view;c!=a;c=c.parentNode)for(var h=0;h<u.length;h++)if(u[h].node==c){t.display.currentWheelTarget=c;break t}if(i&&!Yo&&!ra&&null!=ts)return r&&l&&Fn(t,Math.max(0,Math.min(a.scrollTop+r*ts,a.scrollHeight-a.clientHeight))),zn(t,Math.max(0,Math.min(a.scrollLeft+i*ts,a.scrollWidth-a.clientWidth))),(!r||r&&l)&&Dt(e),void(o.wheelStartX=null);if(r&&null!=ts){var d=r*ts,f=t.doc.scrollTop,p=f+o.wrapper.clientHeight;d<0?f=Math.max(0,f+d-50):p=Math.min(t.doc.height,p+d+50),Ti(t,{top:f,bottom:p})}Ja<20&&(null==o.wheelStartX?(o.wheelStartX=a.scrollLeft,o.wheelStartY=a.scrollTop,o.wheelDX=i,o.wheelDY=r,setTimeout(function(){if(null!=o.wheelStartX){var t=a.scrollLeft-o.wheelStartX,e=a.scrollTop-o.wheelStartY,n=e&&o.wheelDY&&e/o.wheelDY||t&&o.wheelDX&&t/o.wheelDX;o.wheelStartX=o.wheelStartY=null,n&&(ts=(ts*Ja+n)/(Ja+1),++Ja)}},200)):(o.wheelDX+=i,o.wheelDY+=r))}}function $n(t){var e=t.display,n=e.gutters.offsetWidth,i=Math.round(t.doc.height+Fe(t.display));return{clientHeight:e.scroller.clientHeight,viewHeight:e.wrapper.clientHeight,scrollWidth:e.scroller.scrollWidth,clientWidth:e.scroller.clientWidth,viewWidth:e.wrapper.clientWidth,barLeft:t.options.fixedGutter?n:0,docHeight:i,scrollHeight:i+qe(t)+e.barHeight,nativeBarWidth:e.nativeBarWidth,gutterWidth:n}}function Wn(t,e){e||(e=$n(t));var n=t.display.barWidth,i=t.display.barHeight;Un(t,e);for(var r=0;r<4&&n!=t.display.barWidth||i!=t.display.barHeight;r++)n!=t.display.barWidth&&t.options.lineWrapping&&jn(t),Un(t,$n(t)),n=t.display.barWidth,i=t.display.barHeight}function Un(t,e){var n=t.display,i=n.scrollbars.update(e);n.sizer.style.paddingRight=(n.barWidth=i.right)+"px",n.sizer.style.paddingBottom=(n.barHeight=i.bottom)+"px",n.heightForcer.style.borderBottom=i.bottom+"px solid transparent",i.right&&i.bottom?(n.scrollbarFiller.style.display="block",n.scrollbarFiller.style.height=i.bottom+"px",n.scrollbarFiller.style.width=i.right+"px"):n.scrollbarFiller.style.display="",i.bottom&&t.options.coverGutterNextToScrollbar&&t.options.fixedGutter?(n.gutterFiller.style.display="block",n.gutterFiller.style.height=i.bottom+"px",n.gutterFiller.style.width=e.gutterWidth+"px"):n.gutterFiller.style.display=""}function Xn(t){t.display.scrollbars&&(t.display.scrollbars.clear(),t.display.scrollbars.addClass&&ya(t.display.wrapper,t.display.scrollbars.addClass)),t.display.scrollbars=new is[t.options.scrollbarStyle](function(e){t.display.wrapper.insertBefore(e,t.display.scrollbarFiller),Ia(e,"mousedown",function(){t.state.focused&&setTimeout(function(){return t.display.input.focus()},0)}),e.setAttribute("cm-not-content","true")},function(e,n){"horizontal"==n?zn(t,e):Fn(t,e)},t),t.display.scrollbars.addClass&&s(t.display.wrapper,t.display.scrollbars.addClass)}function Yn(t,e){if(!Pt(t,"scrollCursorIntoView")){var n=t.display,r=n.sizer.getBoundingClientRect(),o=null;if(e.top+r.top<0?o=!0:e.bottom+r.top>(window.innerHeight||document.documentElement.clientHeight)&&(o=!1),null!=o&&!sa){var a=i("div","​",null,"position: absolute;\n                         top: "+(e.top-n.viewOffset-He(t.display))+"px;\n                         height: "+(e.bottom-e.top+qe(t)+n.barHeight)+"px;\n                         left: "+e.left+"px; width: "+Math.max(2,e.right-e.left)+"px;");t.display.lineSpace.appendChild(a),a.scrollIntoView(o),t.display.lineSpace.removeChild(a)}}}function Qn(t,e,n,i){null==i&&(i=0);for(var r,o=0;o<5;o++){var a=!1,s=hn(t,e),l=n&&n!=e?hn(t,n):s;r={left:Math.min(s.left,l.left),top:Math.min(s.top,l.top)-i,right:Math.max(s.left,l.left),bottom:Math.max(s.bottom,l.bottom)+i};var c=Kn(t,r),u=t.doc.scrollTop,h=t.doc.scrollLeft;if(null!=c.scrollTop&&(Fn(t,c.scrollTop),Math.abs(t.doc.scrollTop-u)>1&&(a=!0)),null!=c.scrollLeft&&(zn(t,c.scrollLeft),Math.abs(t.doc.scrollLeft-h)>1&&(a=!0)),!a)break}return r}function Zn(t,e){var n=Kn(t,e);null!=n.scrollTop&&Fn(t,n.scrollTop),null!=n.scrollLeft&&zn(t,n.scrollLeft)}function Kn(t,e){var n=t.display,i=yn(t.display);e.top<0&&(e.top=0);var r=t.curOp&&null!=t.curOp.scrollTop?t.curOp.scrollTop:n.scroller.scrollTop,o=Be(t),a={};e.bottom-e.top>o&&(e.bottom=e.top+o);var s=t.doc.height+Fe(n),l=e.top<i,c=e.bottom>s-i;if(e.top<r)a.scrollTop=l?0:e.top;else if(e.bottom>r+o){var u=Math.min(e.top,(c?s:e.bottom)-o);u!=r&&(a.scrollTop=u)}var h=t.curOp&&null!=t.curOp.scrollLeft?t.curOp.scrollLeft:n.scroller.scrollLeft,d=Ge(t)-(t.options.fixedGutter?n.gutters.offsetWidth:0),f=e.right-e.left>d;return f&&(e.right=e.left+d),e.left<10?a.scrollLeft=0:e.left<h?a.scrollLeft=Math.max(0,e.left-(f?0:10)):e.right>d+h-3&&(a.scrollLeft=e.right+(f?0:10)-d),a}function Jn(t,e,n){null==e&&null==n||ei(t),null!=e&&(t.curOp.scrollLeft=(null==t.curOp.scrollLeft?t.doc.scrollLeft:t.curOp.scrollLeft)+e),null!=n&&(t.curOp.scrollTop=(null==t.curOp.scrollTop?t.doc.scrollTop:t.curOp.scrollTop)+n)}function ti(t){ei(t);var e=t.getCursor(),n=e,i=e;t.options.lineWrapping||(n=e.ch?D(e.line,e.ch-1):e,i=D(e.line,e.ch+1)),t.curOp.scrollToPos={from:n,to:i,margin:t.options.cursorScrollMargin}}function ei(t){var e=t.curOp.scrollToPos;if(e){t.curOp.scrollToPos=null;var n=dn(t,e.from),i=dn(t,e.to),r=Kn(t,{left:Math.min(n.left,i.left),top:Math.min(n.top,i.top)-e.margin,right:Math.max(n.right,i.right),bottom:Math.max(n.bottom,i.bottom)+e.margin});t.scrollTo(r.scrollLeft,r.scrollTop)}}function ni(t){t.curOp={cm:t,viewChanged:!1,startHeight:t.doc.height,forceUpdate:!1,updateInput:null,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:!1,id:++rs},be(t.curOp)}function ii(t){var e=t.curOp;we(e,function(t){for(var e=0;e<t.ops.length;e++)t.ops[e].cm.curOp=null;ri(t)})}function ri(t){for(var e=t.ops,n=0;n<e.length;n++)oi(e[n]);for(var i=0;i<e.length;i++)ai(e[i]);for(var r=0;r<e.length;r++)si(e[r]);for(var o=0;o<e.length;o++)li(e[o]);for(var a=0;a<e.length;a++)ci(e[a])}function oi(t){var e=t.cm,n=e.display;wi(e),t.updateMaxLine&&bt(e),t.mustUpdate=t.viewChanged||t.forceUpdate||null!=t.scrollTop||t.scrollToPos&&(t.scrollToPos.from.line<n.viewFrom||t.scrollToPos.to.line>=n.viewTo)||n.maxLineChanged&&e.options.lineWrapping,t.update=t.mustUpdate&&new os(e,t.mustUpdate&&{top:t.scrollTop,ensure:t.scrollToPos},t.forceUpdate)}function ai(t){t.updatedDisplay=t.mustUpdate&&Si(t.cm,t.update)}function si(t){var e=t.cm,n=e.display;t.updatedDisplay&&jn(e),t.barMeasure=$n(e),n.maxLineChanged&&!e.options.lineWrapping&&(t.adjustWidthTo=Xe(e,n.maxLine,n.maxLine.text.length).left+3,e.display.sizerWidth=t.adjustWidthTo,t.barMeasure.scrollWidth=Math.max(n.scroller.clientWidth,n.sizer.offsetLeft+t.adjustWidthTo+qe(e)+e.display.barWidth),t.maxScrollLeft=Math.max(0,n.sizer.offsetLeft+t.adjustWidthTo-Ge(e))),(t.updatedDisplay||t.selectionChanged)&&(t.preparedSelection=n.input.prepareSelection(t.focus))}function li(t){var e=t.cm;null!=t.adjustWidthTo&&(e.display.sizer.style.minWidth=t.adjustWidthTo+"px",t.maxScrollLeft<e.doc.scrollLeft&&zn(e,Math.min(e.display.scroller.scrollLeft,t.maxScrollLeft),!0),e.display.maxLineChanged=!1);var n=t.focus&&t.focus==a()&&(!document.hasFocus||document.hasFocus());t.preparedSelection&&e.display.input.showSelection(t.preparedSelection,n),(t.updatedDisplay||t.startHeight!=e.doc.height)&&Wn(e,t.barMeasure),t.updatedDisplay&&Mi(e,t.barMeasure),t.selectionChanged&&En(e),e.state.focused&&t.updateInput&&e.display.input.reset(t.typing),n&&Pn(t.cm)}function ci(t){var e=t.cm,n=e.display,i=e.doc;if(t.updatedDisplay&&Ci(e,t.update),null==n.wheelStartX||null==t.scrollTop&&null==t.scrollLeft&&!t.scrollToPos||(n.wheelStartX=n.wheelStartY=null),null==t.scrollTop||n.scroller.scrollTop==t.scrollTop&&!t.forceScroll||(i.scrollTop=Math.max(0,Math.min(n.scroller.scrollHeight-n.scroller.clientHeight,t.scrollTop)),n.scrollbars.setScrollTop(i.scrollTop),n.scroller.scrollTop=i.scrollTop),null==t.scrollLeft||n.scroller.scrollLeft==t.scrollLeft&&!t.forceScroll||(i.scrollLeft=Math.max(0,Math.min(n.scroller.scrollWidth-n.scroller.clientWidth,t.scrollLeft)),n.scrollbars.setScrollLeft(i.scrollLeft),n.scroller.scrollLeft=i.scrollLeft,Dn(e)),t.scrollToPos){var r=Qn(e,q(i,t.scrollToPos.from),q(i,t.scrollToPos.to),t.scrollToPos.margin);Yn(e,r)}var o=t.maybeHiddenMarkers,a=t.maybeUnhiddenMarkers;if(o)for(var s=0;s<o.length;++s)o[s].lines.length||Et(o[s],"hide");if(a)for(var l=0;l<a.length;++l)a[l].lines.length&&Et(a[l],"unhide");n.wrapper.offsetHeight&&(i.scrollTop=e.display.scroller.scrollTop),t.changeObjs&&Et(e,"changes",e,t.changeObjs),t.update&&t.update.finish()}function ui(t,e){if(t.curOp)return e();ni(t);try{return e()}finally{ii(t)}}function hi(t,e){return function(){if(t.curOp)return e.apply(t,arguments);ni(t);try{return e.apply(t,arguments)}finally{ii(t)}}}function di(t){return function(){if(this.curOp)return t.apply(this,arguments);ni(this);try{return t.apply(this,arguments)}finally{ii(this)}}}function fi(t){return function(){var e=this.cm;if(!e||e.curOp)return t.apply(this,arguments);ni(e);try{return t.apply(this,arguments)}finally{ii(e)}}}function pi(t,e,n,i){null==e&&(e=t.doc.first),null==n&&(n=t.doc.first+t.doc.size),i||(i=0);var r=t.display;if(i&&n<r.viewTo&&(null==r.updateLineNumbers||r.updateLineNumbers>e)&&(r.updateLineNumbers=e),t.curOp.viewChanged=!0,e>=r.viewTo)Na&&pt(t.doc,e)<r.viewTo&&mi(t);else if(n<=r.viewFrom)Na&&gt(t.doc,n+i)>r.viewFrom?mi(t):(r.viewFrom+=i,r.viewTo+=i);else if(e<=r.viewFrom&&n>=r.viewTo)mi(t);else if(e<=r.viewFrom){var o=vi(t,n,n+i,1);o?(r.view=r.view.slice(o.index),r.viewFrom=o.lineN,r.viewTo+=i):mi(t)}else if(n>=r.viewTo){var a=vi(t,e,e,-1);a?(r.view=r.view.slice(0,a.index),r.viewTo=a.lineN):mi(t)}else{var s=vi(t,e,e,-1),l=vi(t,n,n+i,1);s&&l?(r.view=r.view.slice(0,s.index).concat(xe(t,s.lineN,l.lineN)).concat(r.view.slice(l.index)),r.viewTo+=i):mi(t)}var c=r.externalMeasured;c&&(n<c.lineN?c.lineN+=i:e<c.lineN+c.size&&(r.externalMeasured=null))}function gi(t,e,n){t.curOp.viewChanged=!0;var i=t.display,r=t.display.externalMeasured;if(r&&e>=r.lineN&&e<r.lineN+r.size&&(i.externalMeasured=null),!(e<i.viewFrom||e>=i.viewTo)){var o=i.view[Tn(t,e)];if(null!=o.node){var a=o.changes||(o.changes=[]);d(a,n)==-1&&a.push(n)}}}function mi(t){t.display.viewFrom=t.display.viewTo=t.doc.first,t.display.view=[],t.display.viewOffset=0}function vi(t,e,n,i){var r,o=Tn(t,e),a=t.display.view;if(!Na||n==t.doc.first+t.doc.size)return{index:o,lineN:n};for(var s=t.display.viewFrom,l=0;l<o;l++)s+=a[l].size;if(s!=e){if(i>0){if(o==a.length-1)return null;r=s+a[o].size-e,o++}else r=s-e;e+=r,n+=r}for(;pt(t.doc,n)!=n;){if(o==(i<0?0:a.length-1))return null;n+=i*a[o-(i<0?1:0)].size,o+=i}return{index:o,lineN:n}}function yi(t,e,n){var i=t.display,r=i.view;0==r.length||e>=i.viewTo||n<=i.viewFrom?(i.view=xe(t,e,n),i.viewFrom=e):(i.viewFrom>e?i.view=xe(t,e,i.viewFrom).concat(i.view):i.viewFrom<e&&(i.view=i.view.slice(Tn(t,e))),i.viewFrom=e,i.viewTo<n?i.view=i.view.concat(xe(t,i.viewTo,n)):i.viewTo>n&&(i.view=i.view.slice(0,Tn(t,n)))),i.viewTo=n}function xi(t){for(var e=t.display.view,n=0,i=0;i<e.length;i++){var r=e[i];r.hidden||r.node&&!r.changes||++n}return n}function bi(t,e){t.doc.mode.startState&&t.doc.frontier<t.display.viewTo&&t.state.highlight.set(e,c(_i,t))}function _i(t){var e=t.doc;if(e.frontier<e.first&&(e.frontier=e.first),!(e.frontier>=t.display.viewTo)){var n=+new Date+t.options.workTime,i=Yt(e.mode,te(t,e.frontier)),r=[];e.iter(e.frontier,Math.min(e.first+e.size,t.display.viewTo+500),function(o){if(e.frontier>=t.display.viewFrom){var a=o.styles,s=o.text.length>t.options.maxHighlightLength,l=Kt(t,o,s?Yt(e.mode,i):i,!0);o.styles=l.styles;var c=o.styleClasses,u=l.classes;u?o.styleClasses=u:c&&(o.styleClasses=null);for(var h=!a||a.length!=o.styles.length||c!=u&&(!c||!u||c.bgClass!=u.bgClass||c.textClass!=u.textClass),d=0;!h&&d<a.length;++d)h=a[d]!=o.styles[d];h&&r.push(e.frontier),o.stateAfter=s?i:Yt(e.mode,i)}else o.text.length<=t.options.maxHighlightLength&&ee(t,o.text,i),o.stateAfter=e.frontier%5==0?Yt(e.mode,i):null;if(++e.frontier,+new Date>n)return bi(t,t.options.workDelay),!0}),r.length&&ui(t,function(){for(var e=0;e<r.length;e++)gi(t,r[e],"text")})}}function wi(t){var e=t.display;!e.scrollbarsClipped&&e.scroller.offsetWidth&&(e.nativeBarWidth=e.scroller.offsetWidth-e.scroller.clientWidth,e.heightForcer.style.height=qe(t)+"px",e.sizer.style.marginBottom=-e.nativeBarWidth+"px",e.sizer.style.borderRightWidth=qe(t)+"px",e.scrollbarsClipped=!0)}function Si(t,n){var i=t.display,r=t.doc;if(n.editorIsHidden)return mi(t),!1;if(!n.force&&n.visible.from>=i.viewFrom&&n.visible.to<=i.viewTo&&(null==i.updateLineNumbers||i.updateLineNumbers>=i.viewTo)&&i.renderedView==i.view&&0==xi(t))return!1;In(t)&&(mi(t),n.dims=bn(t));var o=r.first+r.size,s=Math.max(n.visible.from-t.options.viewportMargin,r.first),l=Math.min(o,n.visible.to+t.options.viewportMargin);i.viewFrom<s&&s-i.viewFrom<20&&(s=Math.max(r.first,i.viewFrom)),i.viewTo>l&&i.viewTo-l<20&&(l=Math.min(o,i.viewTo)),Na&&(s=pt(t.doc,s),l=gt(t.doc,l));var c=s!=i.viewFrom||l!=i.viewTo||i.lastWrapHeight!=n.wrapperHeight||i.lastWrapWidth!=n.wrapperWidth;yi(t,s,l),i.viewOffset=yt(A(t.doc,i.viewFrom)),t.display.mover.style.top=i.viewOffset+"px";var u=xi(t);if(!c&&0==u&&!n.force&&i.renderedView==i.view&&(null==i.updateLineNumbers||i.updateLineNumbers>=i.viewTo))return!1;var h=a();return u>4&&(i.lineDiv.style.display="none"),ki(t,i.updateLineNumbers,n.dims),u>4&&(i.lineDiv.style.display=""),i.renderedView=i.view,h&&a()!=h&&h.offsetHeight&&h.focus(),e(i.cursorDiv),e(i.selectionDiv),i.gutters.style.height=i.sizer.style.minHeight=0,c&&(i.lastWrapHeight=n.wrapperHeight,i.lastWrapWidth=n.wrapperWidth,bi(t,400)),i.updateLineNumbers=null,!0}function Ci(t,e){for(var n=e.viewport,i=!0;(i&&t.options.lineWrapping&&e.oldDisplayWidth!=Ge(t)||(n&&null!=n.top&&(n={top:Math.min(t.doc.height+Fe(t.display)-Be(t),n.top)}),e.visible=Hn(t.display,t.doc,n),!(e.visible.from>=t.display.viewFrom&&e.visible.to<=t.display.viewTo)))&&Si(t,e);i=!1){jn(t);var r=$n(t);kn(t),Wn(t,r),Mi(t,r)}e.signal(t,"update",t),t.display.viewFrom==t.display.reportedViewFrom&&t.display.viewTo==t.display.reportedViewTo||(e.signal(t,"viewportChange",t,t.display.viewFrom,t.display.viewTo),t.display.reportedViewFrom=t.display.viewFrom,t.display.reportedViewTo=t.display.viewTo)}function Ti(t,e){var n=new os(t,e);if(Si(t,n)){jn(t),Ci(t,n);var i=$n(t);kn(t),Wn(t,i),Mi(t,i),n.finish()}}function ki(t,n,i){function r(e){var n=e.nextSibling;return ea&&ha&&t.display.currentWheelTarget==e?e.style.display="none":e.parentNode.removeChild(e),n}for(var o=t.display,a=t.options.lineNumbers,s=o.lineDiv,l=s.firstChild,c=o.view,u=o.viewFrom,h=0;h<c.length;h++){var f=c[h];if(f.hidden);else if(f.node&&f.node.parentNode==s){for(;l!=f.node;)l=r(l);var p=a&&null!=n&&n<=u&&f.lineNumber;f.changes&&(d(f.changes,"gutter")>-1&&(p=!1),Te(t,f,u,i)),p&&(e(f.lineNumber),f.lineNumber.appendChild(document.createTextNode(R(t.options,u)))),l=f.node.nextSibling}else{var g=Oe(t,f,u,i);s.insertBefore(g,l)}u+=f.size}for(;l;)l=r(l)}function Ai(t){var e=t.display.gutters.offsetWidth;t.display.sizer.style.marginLeft=e+"px"}function Mi(t,e){t.display.sizer.style.minHeight=e.docHeight+"px",t.display.heightForcer.style.top=e.docHeight+"px",t.display.gutters.style.height=e.docHeight+t.display.barHeight+qe(t)+"px"}function Li(t){var n=t.display.gutters,r=t.options.gutters;e(n);for(var o=0;o<r.length;++o){var a=r[o],s=n.appendChild(i("div",null,"CodeMirror-gutter "+a));"CodeMirror-linenumbers"==a&&(t.display.lineGutter=s,s.style.width=(t.display.lineNumWidth||1)+"px")}n.style.display=o?"":"none",Ai(t)}function Ei(t){var e=d(t.gutters,"CodeMirror-linenumbers");e==-1&&t.lineNumbers?t.gutters=t.gutters.concat(["CodeMirror-linenumbers"]):e>-1&&!t.lineNumbers&&(t.gutters=t.gutters.slice(0),t.gutters.splice(e,1))}function Pi(t,e){var n=t[e];t.sort(function(t,e){return I(t.from(),e.from())}),e=d(t,n);for(var i=1;i<t.length;i++){var r=t[i],o=t[i-1];if(I(o.to(),r.from())>=0){var a=F(o.from(),r.from()),s=H(o.to(),r.to()),l=o.empty()?r.from()==r.head:o.from()==o.head;i<=e&&--e,t.splice(--i,2,new ss(l?s:a,l?a:s))}}return new as(t,e)}function Ni(t,e){return new as([new ss(t,e||t)],0)}function Oi(t){return t.text?D(t.from.line+t.text.length-1,g(t.text).length+(1==t.text.length?t.from.ch:0)):t.to}function Ri(t,e){if(I(t,e.from)<0)return t;if(I(t,e.to)<=0)return Oi(e);var n=t.line+e.text.length-(e.to.line-e.from.line)-1,i=t.ch;return t.line==e.to.line&&(i+=Oi(e).ch-e.to.ch),D(n,i)}function Di(t,e){for(var n=[],i=0;i<t.sel.ranges.length;i++){var r=t.sel.ranges[i];n.push(new ss(Ri(r.anchor,e),Ri(r.head,e)))}return Pi(n,t.sel.primIndex)}function Ii(t,e,n){return t.line==e.line?D(n.line,t.ch-e.ch+n.ch):D(n.line+(t.line-e.line),t.ch)}function ji(t,e,n){for(var i=[],r=D(t.first,0),o=r,a=0;a<e.length;a++){var s=e[a],l=Ii(s.from,r,o),c=Ii(Oi(s),r,o);if(r=s.to,o=c,"around"==n){var u=t.sel.ranges[a],h=I(u.head,u.anchor)<0;i[a]=new ss(h?c:l,h?l:c)}else i[a]=new ss(l,l)}return new as(i,t.sel.primIndex)}function Vi(t){t.doc.mode=Ut(t.options,t.doc.modeOption),Hi(t)}function Hi(t){t.doc.iter(function(t){t.stateAfter&&(t.stateAfter=null),t.styles&&(t.styles=null)}),t.doc.frontier=t.doc.first,bi(t,100),t.state.modeGen++,t.curOp&&pi(t)}function Fi(t,e){return 0==e.from.ch&&0==e.to.ch&&""==g(e.text)&&(!t.cm||t.cm.options.wholeLineUpdateBefore)}function zi(t,e,n,i){function r(t){return n?n[t]:null}function o(t,n,r){le(t,n,r,i),Se(t,"change",t,e)}function a(t,e){for(var n=[],o=t;o<e;++o)n.push(new Wa(c[o],r(o),i));return n}var s=e.from,l=e.to,c=e.text,u=A(t,s.line),h=A(t,l.line),d=g(c),f=r(c.length-1),p=l.line-s.line;if(e.full)t.insert(0,a(0,c.length)),t.remove(c.length,t.size-c.length);else if(Fi(t,e)){var m=a(0,c.length-1);o(h,h.text,f),p&&t.remove(s.line,p),m.length&&t.insert(s.line,m)}else if(u==h)if(1==c.length)o(u,u.text.slice(0,s.ch)+d+u.text.slice(l.ch),f);else{var v=a(1,c.length-1);v.push(new Wa(d+u.text.slice(l.ch),f,i)),o(u,u.text.slice(0,s.ch)+c[0],r(0)),t.insert(s.line+1,v)}else if(1==c.length)o(u,u.text.slice(0,s.ch)+c[0]+h.text.slice(l.ch),r(0)),t.remove(s.line+1,p);else{o(u,u.text.slice(0,s.ch)+c[0],r(0)),o(h,d+h.text.slice(l.ch),f);var y=a(1,c.length-1);p>1&&t.remove(s.line+1,p-1),t.insert(s.line+1,y)}Se(t,"change",t,e)}function qi(t,e,n){function i(t,r,o){if(t.linked)for(var a=0;a<t.linked.length;++a){var s=t.linked[a];if(s.doc!=r){var l=o&&s.sharedHist;n&&!l||(e(s.doc,l),i(s.doc,t,l))}}}i(t,null,!0)}function Gi(t,e){if(e.cm)throw new Error("This document is already in use.");t.doc=e,e.cm=t,Sn(t),Vi(t),Bi(t),t.options.lineWrapping||bt(t),t.options.mode=e.modeOption,pi(t)}function Bi(t){("rtl"==t.doc.direction?s:ya)(t.display.lineDiv,"CodeMirror-rtl")}function $i(t){ui(t,function(){Bi(t),pi(t)})}function Wi(t){this.done=[],this.undone=[],this.undoDepth=1/0,this.lastModTime=this.lastSelTime=0,this.lastOp=this.lastSelOp=null,this.lastOrigin=this.lastSelOrigin=null,this.generation=this.maxGeneration=t||1}function Ui(t,e){var n={from:V(e.from),to:Oi(e),text:M(t,e.from,e.to)};return tr(t,n,e.from.line,e.to.line+1),qi(t,function(t){return tr(t,n,e.from.line,e.to.line+1)},!0),n}function Xi(t){for(;t.length;){var e=g(t);if(!e.ranges)break;t.pop()}}function Yi(t,e){return e?(Xi(t.done),g(t.done)):t.done.length&&!g(t.done).ranges?g(t.done):t.done.length>1&&!t.done[t.done.length-2].ranges?(t.done.pop(),g(t.done)):void 0}function Qi(t,e,n,i){var r=t.history;r.undone.length=0;var o,a,s=+new Date;if((r.lastOp==i||r.lastOrigin==e.origin&&e.origin&&("+"==e.origin.charAt(0)&&t.cm&&r.lastModTime>s-t.cm.options.historyEventDelay||"*"==e.origin.charAt(0)))&&(o=Yi(r,r.lastOp==i)))a=g(o.changes),0==I(e.from,e.to)&&0==I(e.from,a.to)?a.to=Oi(e):o.changes.push(Ui(t,e));else{var l=g(r.done);for(l&&l.ranges||Ji(t.sel,r.done),o={changes:[Ui(t,e)],generation:r.generation},r.done.push(o);r.done.length>r.undoDepth;)r.done.shift(),r.done[0].ranges||r.done.shift()}r.done.push(n),r.generation=++r.maxGeneration,r.lastModTime=r.lastSelTime=s,r.lastOp=r.lastSelOp=i,r.lastOrigin=r.lastSelOrigin=e.origin,a||Et(t,"historyAdded")}function Zi(t,e,n,i){var r=e.charAt(0);return"*"==r||"+"==r&&n.ranges.length==i.ranges.length&&n.somethingSelected()==i.somethingSelected()&&new Date-t.history.lastSelTime<=(t.cm?t.cm.options.historyEventDelay:500)}function Ki(t,e,n,i){var r=t.history,o=i&&i.origin;n==r.lastSelOp||o&&r.lastSelOrigin==o&&(r.lastModTime==r.lastSelTime&&r.lastOrigin==o||Zi(t,o,g(r.done),e))?r.done[r.done.length-1]=e:Ji(e,r.done),r.lastSelTime=+new Date,r.lastSelOrigin=o,r.lastSelOp=n,i&&i.clearRedo!==!1&&Xi(r.undone)}function Ji(t,e){var n=g(e);n&&n.ranges&&n.equals(t)||e.push(t)}function tr(t,e,n,i){var r=e["spans_"+t.id],o=0;t.iter(Math.max(t.first,n),Math.min(t.first+t.size,i),function(n){n.markedSpans&&((r||(r=e["spans_"+t.id]={}))[o]=n.markedSpans),++o})}function er(t){if(!t)return null;for(var e,n=0;n<t.length;++n)t[n].marker.explicitlyCleared?e||(e=t.slice(0,n)):e&&e.push(t[n]);return e?e.length?e:null:t}function nr(t,e){var n=e["spans_"+t.id];if(!n)return null;for(var i=[],r=0;r<e.text.length;++r)i.push(er(n[r]));return i}function ir(t,e){var n=nr(t,e),i=J(t,e);if(!n)return i;if(!i)return n;for(var r=0;r<n.length;++r){var o=n[r],a=i[r];if(o&&a)t:for(var s=0;s<a.length;++s){for(var l=a[s],c=0;c<o.length;++c)if(o[c].marker==l.marker)continue t;o.push(l)}else a&&(n[r]=a)}return n}function rr(t,e,n){for(var i=[],r=0;r<t.length;++r){var o=t[r];if(o.ranges)i.push(n?as.prototype.deepCopy.call(o):o);else{var a=o.changes,s=[];i.push({changes:s});for(var l=0;l<a.length;++l){var c=a[l],u=void 0;if(s.push({from:c.from,to:c.to,text:c.text}),e)for(var h in c)(u=h.match(/^spans_(\d+)$/))&&d(e,Number(u[1]))>-1&&(g(s)[h]=c[h],delete c[h])}}}return i}function or(t,e,n,i){if(t.cm&&t.cm.display.shift||t.extend){var r=e.anchor;if(i){var o=I(n,r)<0;o!=I(i,r)<0?(r=n,n=i):o!=I(n,i)<0&&(n=i)}return new ss(r,n)}return new ss(i||n,n)}function ar(t,e,n,i){dr(t,new as([or(t,t.sel.primary(),e,n)],0),i)}function sr(t,e,n){for(var i=[],r=0;r<t.sel.ranges.length;r++)i[r]=or(t,t.sel.ranges[r],e[r],null);var o=Pi(i,t.sel.primIndex);dr(t,o,n)}function lr(t,e,n,i){var r=t.sel.ranges.slice(0);r[e]=n,dr(t,Pi(r,t.sel.primIndex),i)}function cr(t,e,n,i){dr(t,Ni(e,n),i)}function ur(t,e,n){var i={ranges:e.ranges,update:function(e){var n=this;this.ranges=[];for(var i=0;i<e.length;i++)n.ranges[i]=new ss(q(t,e[i].anchor),q(t,e[i].head))},origin:n&&n.origin};return Et(t,"beforeSelectionChange",t,i),t.cm&&Et(t.cm,"beforeSelectionChange",t.cm,i),i.ranges!=e.ranges?Pi(i.ranges,i.ranges.length-1):e}function hr(t,e,n){var i=t.history.done,r=g(i);r&&r.ranges?(i[i.length-1]=e,fr(t,e,n)):dr(t,e,n)}function dr(t,e,n){fr(t,e,n),Ki(t,t.sel,t.cm?t.cm.curOp.id:NaN,n)}function fr(t,e,n){(Ot(t,"beforeSelectionChange")||t.cm&&Ot(t.cm,"beforeSelectionChange"))&&(e=ur(t,e,n));var i=n&&n.bias||(I(e.primary().head,t.sel.primary().head)<0?-1:1);pr(t,mr(t,e,i,!0)),n&&n.scroll===!1||!t.cm||ti(t.cm)}function pr(t,e){e.equals(t.sel)||(t.sel=e,t.cm&&(t.cm.curOp.updateInput=t.cm.curOp.selectionChanged=!0,Nt(t.cm)),Se(t,"cursorActivity",t))}function gr(t){pr(t,mr(t,t.sel,null,!1),Ta)}function mr(t,e,n,i){for(var r,o=0;o<e.ranges.length;o++){var a=e.ranges[o],s=e.ranges.length==t.sel.ranges.length&&t.sel.ranges[o],l=yr(t,a.anchor,s&&s.anchor,n,i),c=yr(t,a.head,s&&s.head,n,i);(r||l!=a.anchor||c!=a.head)&&(r||(r=e.ranges.slice(0,o)),r[o]=new ss(l,c))}return r?Pi(r,e.primIndex):e}function vr(t,e,n,i,r){var o=A(t,e.line);if(o.markedSpans)for(var a=0;a<o.markedSpans.length;++a){var s=o.markedSpans[a],l=s.marker;if((null==s.from||(l.inclusiveLeft?s.from<=e.ch:s.from<e.ch))&&(null==s.to||(l.inclusiveRight?s.to>=e.ch:s.to>e.ch))){if(r&&(Et(l,"beforeCursorEnter"),l.explicitlyCleared)){if(o.markedSpans){--a;continue}break}if(!l.atomic)continue;if(n){var c=l.find(i<0?1:-1),u=void 0;if((i<0?l.inclusiveRight:l.inclusiveLeft)&&(c=xr(t,c,-i,c&&c.line==e.line?o:null)),c&&c.line==e.line&&(u=I(c,n))&&(i<0?u<0:u>0))return vr(t,c,e,i,r)}var h=l.find(i<0?-1:1);return(i<0?l.inclusiveLeft:l.inclusiveRight)&&(h=xr(t,h,i,h.line==e.line?o:null)),h?vr(t,h,e,i,r):null}}return e}function yr(t,e,n,i,r){var o=i||1,a=vr(t,e,n,o,r)||!r&&vr(t,e,n,o,!0)||vr(t,e,n,-o,r)||!r&&vr(t,e,n,-o,!0);return a?a:(t.cantEdit=!0,D(t.first,0))}function xr(t,e,n,i){return n<0&&0==e.ch?e.line>t.first?q(t,D(e.line-1)):null:n>0&&e.ch==(i||A(t,e.line)).text.length?e.line<t.first+t.size-1?D(e.line+1,0):null:new D(e.line,e.ch+n)}function br(t){t.setSelection(D(t.firstLine(),0),D(t.lastLine()),Ta)}function _r(t,e,n){var i={canceled:!1,from:e.from,to:e.to,text:e.text,origin:e.origin,cancel:function(){return i.canceled=!0}};return n&&(i.update=function(e,n,r,o){e&&(i.from=q(t,e)),n&&(i.to=q(t,n)),r&&(i.text=r),void 0!==o&&(i.origin=o)}),Et(t,"beforeChange",t,i),t.cm&&Et(t.cm,"beforeChange",t.cm,i),i.canceled?null:{from:i.from,to:i.to,text:i.text,origin:i.origin}}function wr(t,e,n){if(t.cm){if(!t.cm.curOp)return hi(t.cm,wr)(t,e,n);if(t.cm.state.suppressEdits)return}if(!(Ot(t,"beforeChange")||t.cm&&Ot(t.cm,"beforeChange"))||(e=_r(t,e,!0))){var i=Pa&&!n&&et(t,e.from,e.to);if(i)for(var r=i.length-1;r>=0;--r)Sr(t,{from:i[r].from,to:i[r].to,text:r?[""]:e.text});else Sr(t,e)}}function Sr(t,e){if(1!=e.text.length||""!=e.text[0]||0!=I(e.from,e.to)){var n=Di(t,e);Qi(t,e,n,t.cm?t.cm.curOp.id:NaN),kr(t,e,n,J(t,e));var i=[];qi(t,function(t,n){n||d(i,t.history)!=-1||(Pr(t.history,e),i.push(t.history)),kr(t,e,null,J(t,e))})}}function Cr(t,e,n){if(!t.cm||!t.cm.state.suppressEdits||n){for(var i,r=t.history,o=t.sel,a="undo"==e?r.done:r.undone,s="undo"==e?r.undone:r.done,l=0;l<a.length&&(i=a[l],n?!i.ranges||i.equals(t.sel):i.ranges);l++);if(l!=a.length){for(r.lastOrigin=r.lastSelOrigin=null;i=a.pop(),i.ranges;){if(Ji(i,s),n&&!i.equals(t.sel))return void dr(t,i,{clearRedo:!1});o=i}var c=[];Ji(o,s),s.push({changes:c,generation:r.generation}),r.generation=i.generation||++r.maxGeneration;for(var u=Ot(t,"beforeChange")||t.cm&&Ot(t.cm,"beforeChange"),h=function(n){var r=i.changes[n];if(r.origin=e,u&&!_r(t,r,!1))return a.length=0,{};c.push(Ui(t,r));var o=n?Di(t,r):g(a);kr(t,r,o,ir(t,r)),!n&&t.cm&&t.cm.scrollIntoView({from:r.from,to:Oi(r)});var s=[];qi(t,function(t,e){e||d(s,t.history)!=-1||(Pr(t.history,r),s.push(t.history)),kr(t,r,null,ir(t,r))})},f=i.changes.length-1;f>=0;--f){var p=h(f);if(p)return p.v}}}}function Tr(t,e){if(0!=e&&(t.first+=e,t.sel=new as(m(t.sel.ranges,function(t){return new ss(D(t.anchor.line+e,t.anchor.ch),D(t.head.line+e,t.head.ch))}),t.sel.primIndex),t.cm)){pi(t.cm,t.first,t.first-e,e);for(var n=t.cm.display,i=n.viewFrom;i<n.viewTo;i++)gi(t.cm,i,"gutter")}}function kr(t,e,n,i){if(t.cm&&!t.cm.curOp)return hi(t.cm,kr)(t,e,n,i);if(e.to.line<t.first)return void Tr(t,e.text.length-1-(e.to.line-e.from.line));if(!(e.from.line>t.lastLine())){if(e.from.line<t.first){var r=e.text.length-1-(t.first-e.from.line);Tr(t,r),e={from:D(t.first,0),to:D(e.to.line+r,e.to.ch),text:[g(e.text)],origin:e.origin}}var o=t.lastLine();e.to.line>o&&(e={from:e.from,to:D(o,A(t,o).text.length),
+text:[e.text[0]],origin:e.origin}),e.removed=M(t,e.from,e.to),n||(n=Di(t,e)),t.cm?Ar(t.cm,e,i):zi(t,e,i),fr(t,n,Ta)}}function Ar(t,e,n){var i=t.doc,r=t.display,o=e.from,a=e.to,s=!1,l=o.line;t.options.lineWrapping||(l=P(ht(A(i,o.line))),i.iter(l,a.line+1,function(t){if(t==r.maxLine)return s=!0,!0})),i.sel.contains(e.from,e.to)>-1&&Nt(t),zi(i,e,n,wn(t)),t.options.lineWrapping||(i.iter(l,o.line+e.text.length,function(t){var e=xt(t);e>r.maxLineLength&&(r.maxLine=t,r.maxLineLength=e,r.maxLineChanged=!0,s=!1)}),s&&(t.curOp.updateMaxLine=!0)),i.frontier=Math.min(i.frontier,o.line),bi(t,400);var c=e.text.length-(a.line-o.line)-1;e.full?pi(t):o.line!=a.line||1!=e.text.length||Fi(t.doc,e)?pi(t,o.line,a.line+1,c):gi(t,o.line,"text");var u=Ot(t,"changes"),h=Ot(t,"change");if(h||u){var d={from:o,to:a,text:e.text,removed:e.removed,origin:e.origin};h&&Se(t,"change",t,d),u&&(t.curOp.changeObjs||(t.curOp.changeObjs=[])).push(d)}t.display.selForContextMenu=null}function Mr(t,e,n,i,r){if(i||(i=n),I(i,n)<0){var o=i;i=n,n=o}"string"==typeof e&&(e=t.splitLines(e)),wr(t,{from:n,to:i,text:e,origin:r})}function Lr(t,e,n,i){n<t.line?t.line+=i:e<t.line&&(t.line=e,t.ch=0)}function Er(t,e,n,i){for(var r=0;r<t.length;++r){var o=t[r],a=!0;if(o.ranges){o.copied||(o=t[r]=o.deepCopy(),o.copied=!0);for(var s=0;s<o.ranges.length;s++)Lr(o.ranges[s].anchor,e,n,i),Lr(o.ranges[s].head,e,n,i)}else{for(var l=0;l<o.changes.length;++l){var c=o.changes[l];if(n<c.from.line)c.from=D(c.from.line+i,c.from.ch),c.to=D(c.to.line+i,c.to.ch);else if(e<=c.to.line){a=!1;break}}a||(t.splice(0,r+1),r=0)}}}function Pr(t,e){var n=e.from.line,i=e.to.line,r=e.text.length-(i-n)-1;Er(t.done,n,i,r),Er(t.undone,n,i,r)}function Nr(t,e,n,i){var r=e,o=e;return"number"==typeof e?o=A(t,z(t,e)):r=P(e),null==r?null:(i(o,r)&&t.cm&&gi(t.cm,r,n),o)}function Or(t,e,n){yt(e)<(t.curOp&&t.curOp.scrollTop||t.doc.scrollTop)&&Jn(t,null,n)}function Rr(t,e,n,i){var r=new us(t,n,i),o=t.cm;return o&&r.noHScroll&&(o.display.alignWidgets=!0),Nr(t,e,"widget",function(e){var n=e.widgets||(e.widgets=[]);if(null==r.insertAt?n.push(r):n.splice(Math.min(n.length-1,Math.max(0,r.insertAt)),0,r),r.line=e,o&&!mt(t,e)){var i=yt(e)<t.scrollTop;E(e,e.height+je(r)),i&&Jn(o,null,r.height),o.curOp.forceUpdate=!0}return!0}),Se(o,"lineWidgetAdded",o,r,"number"==typeof e?e:P(e)),r}function Dr(t,e,n,i,o){if(i&&i.shared)return Ir(t,e,n,i,o);if(t.cm&&!t.cm.curOp)return hi(t.cm,Dr)(t,e,n,i,o);var a=new ds(t,o),s=I(e,n);if(i&&u(i,a,!1),s>0||0==s&&a.clearWhenEmpty!==!1)return a;if(a.replacedWith&&(a.collapsed=!0,a.widgetNode=r("span",[a.replacedWith],"CodeMirror-widget"),i.handleMouseEvents||a.widgetNode.setAttribute("cm-ignore-events","true"),i.insertLeft&&(a.widgetNode.insertLeft=!0)),a.collapsed){if(ut(t,e.line,e,n,a)||e.line!=n.line&&ut(t,n.line,e,n,a))throw new Error("Inserting collapsed marker partially overlapping an existing one");W()}a.addToHistory&&Qi(t,{from:e,to:n,origin:"markText"},t.sel,NaN);var l,c=e.line,h=t.cm;if(t.iter(c,n.line+1,function(t){h&&a.collapsed&&!h.options.lineWrapping&&ht(t)==h.display.maxLine&&(l=!0),a.collapsed&&c!=e.line&&E(t,0),Q(t,new U(a,c==e.line?e.ch:null,c==n.line?n.ch:null)),++c}),a.collapsed&&t.iter(e.line,n.line+1,function(e){mt(t,e)&&E(e,0)}),a.clearOnEnter&&Ia(a,"beforeCursorEnter",function(){return a.clear()}),a.readOnly&&($(),(t.history.done.length||t.history.undone.length)&&t.clearHistory()),a.collapsed&&(a.id=++hs,a.atomic=!0),h){if(l&&(h.curOp.updateMaxLine=!0),a.collapsed)pi(h,e.line,n.line+1);else if(a.className||a.title||a.startStyle||a.endStyle||a.css)for(var d=e.line;d<=n.line;d++)gi(h,d,"text");a.atomic&&gr(h.doc),Se(h,"markerAdded",h,a)}return a}function Ir(t,e,n,i,r){i=u(i),i.shared=!1;var o=[Dr(t,e,n,i,r)],a=o[0],s=i.widgetNode;return qi(t,function(t){s&&(i.widgetNode=s.cloneNode(!0)),o.push(Dr(t,q(t,e),q(t,n),i,r));for(var l=0;l<t.linked.length;++l)if(t.linked[l].isParent)return;a=g(o)}),new fs(o,a)}function jr(t){return t.findMarks(D(t.first,0),t.clipPos(D(t.lastLine())),function(t){return t.parent})}function Vr(t,e){for(var n=0;n<e.length;n++){var i=e[n],r=i.find(),o=t.clipPos(r.from),a=t.clipPos(r.to);if(I(o,a)){var s=Dr(t,o,a,i.primary,i.primary.type);i.markers.push(s),s.parent=i}}}function Hr(t){for(var e=function(e){var n=t[e],i=[n.primary.doc];qi(n.primary.doc,function(t){return i.push(t)});for(var r=0;r<n.markers.length;r++){var o=n.markers[r];d(i,o.doc)==-1&&(o.parent=null,n.markers.splice(r--,1))}},n=0;n<t.length;n++)e(n)}function Fr(t){var e=this;if(Gr(e),!Pt(e,t)&&!Ve(e.display,t)){Dt(t),Jo&&(ms=+new Date);var n=Cn(e,t,!0),i=t.dataTransfer.files;if(n&&!e.isReadOnly())if(i&&i.length&&window.FileReader&&window.File)for(var r=i.length,o=Array(r),a=0,s=function(t,i){if(!e.options.allowDropFileTypes||d(e.options.allowDropFileTypes,t.type)!=-1){var s=new FileReader;s.onload=hi(e,function(){var t=s.result;if(/[\x00-\x08\x0e-\x1f]{2}/.test(t)&&(t=""),o[i]=t,++a==r){n=q(e.doc,n);var l={from:n,to:n,text:e.doc.splitLines(o.join(e.doc.lineSeparator())),origin:"paste"};wr(e.doc,l),hr(e.doc,Ni(n,Oi(l)))}}),s.readAsText(t)}},l=0;l<r;++l)s(i[l],l);else{if(e.state.draggingText&&e.doc.sel.contains(n)>-1)return e.state.draggingText(t),void setTimeout(function(){return e.display.input.focus()},20);try{var c=t.dataTransfer.getData("Text");if(c){var u;if(e.state.draggingText&&!e.state.draggingText.copy&&(u=e.listSelections()),fr(e.doc,Ni(n,n)),u)for(var h=0;h<u.length;++h)Mr(e.doc,"",u[h].anchor,u[h].head,"drag");e.replaceSelection(c,"around","paste"),e.display.input.focus()}}catch(t){}}}}function zr(t,e){if(Jo&&(!t.state.draggingText||+new Date-ms<100))return void Vt(e);if(!Pt(t,e)&&!Ve(t.display,e)&&(e.dataTransfer.setData("Text",t.getSelection()),e.dataTransfer.effectAllowed="copyMove",e.dataTransfer.setDragImage&&!oa)){var n=i("img",null,null,"position: fixed; left: 0; top: 0;");n.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",ra&&(n.width=n.height=1,t.display.wrapper.appendChild(n),n._top=n.offsetTop),e.dataTransfer.setDragImage(n,0,0),ra&&n.parentNode.removeChild(n)}}function qr(t,e){var r=Cn(t,e);if(r){var o=document.createDocumentFragment();Mn(t,r,o),t.display.dragCursor||(t.display.dragCursor=i("div",null,"CodeMirror-cursors CodeMirror-dragcursors"),t.display.lineSpace.insertBefore(t.display.dragCursor,t.display.cursorDiv)),n(t.display.dragCursor,o)}}function Gr(t){t.display.dragCursor&&(t.display.lineSpace.removeChild(t.display.dragCursor),t.display.dragCursor=null)}function Br(t){if(document.body.getElementsByClassName)for(var e=document.body.getElementsByClassName("CodeMirror"),n=0;n<e.length;n++){var i=e[n].CodeMirror;i&&t(i)}}function $r(){vs||(Wr(),vs=!0)}function Wr(){var t;Ia(window,"resize",function(){null==t&&(t=setTimeout(function(){t=null,Br(Ur)},100))}),Ia(window,"blur",function(){return Br(Rn)})}function Ur(t){var e=t.display;e.lastWrapHeight==e.wrapper.clientHeight&&e.lastWrapWidth==e.wrapper.clientWidth||(e.cachedCharWidth=e.cachedTextHeight=e.cachedPaddingH=null,e.scrollbarsClipped=!1,t.setSize())}function Xr(t){var e=t.split(/-(?!$)/);t=e[e.length-1];for(var n,i,r,o,a=0;a<e.length-1;a++){var s=e[a];if(/^(cmd|meta|m)$/i.test(s))o=!0;else if(/^a(lt)?$/i.test(s))n=!0;else if(/^(c|ctrl|control)$/i.test(s))i=!0;else{if(!/^s(hift)?$/i.test(s))throw new Error("Unrecognized modifier name: "+s);r=!0}}return n&&(t="Alt-"+t),i&&(t="Ctrl-"+t),o&&(t="Cmd-"+t),r&&(t="Shift-"+t),t}function Yr(t){var e={};for(var n in t)if(t.hasOwnProperty(n)){var i=t[n];if(/^(name|fallthrough|(de|at)tach)$/.test(n))continue;if("..."==i){delete t[n];continue}for(var r=m(n.split(" "),Xr),o=0;o<r.length;o++){var a=void 0,s=void 0;o==r.length-1?(s=r.join(" "),a=i):(s=r.slice(0,o+1).join(" "),a="...");var l=e[s];if(l){if(l!=a)throw new Error("Inconsistent bindings for "+s)}else e[s]=a}delete t[n]}for(var c in e)t[c]=e[c];return t}function Qr(t,e,n,i){e=Jr(e);var r=e.call?e.call(t,i):e[t];if(r===!1)return"nothing";if("..."===r)return"multi";if(null!=r&&n(r))return"handled";if(e.fallthrough){if("[object Array]"!=Object.prototype.toString.call(e.fallthrough))return Qr(t,e.fallthrough,n,i);for(var o=0;o<e.fallthrough.length;o++){var a=Qr(t,e.fallthrough[o],n,i);if(a)return a}}}function Zr(t){var e="string"==typeof t?t:ys[t.keyCode];return"Ctrl"==e||"Alt"==e||"Shift"==e||"Mod"==e}function Kr(t,e){if(ra&&34==t.keyCode&&t.char)return!1;var n=ys[t.keyCode],i=n;return null!=i&&!t.altGraphKey&&(t.altKey&&"Alt"!=n&&(i="Alt-"+i),(ma?t.metaKey:t.ctrlKey)&&"Ctrl"!=n&&(i="Ctrl-"+i),(ma?t.ctrlKey:t.metaKey)&&"Cmd"!=n&&(i="Cmd-"+i),!e&&t.shiftKey&&"Shift"!=n&&(i="Shift-"+i),i)}function Jr(t){return"string"==typeof t?ws[t]:t}function to(t,e){for(var n=t.doc.sel.ranges,i=[],r=0;r<n.length;r++){for(var o=e(n[r]);i.length&&I(o.from,g(i).to)<=0;){var a=i.pop();if(I(a.from,o.from)<0){o.from=a.from;break}}i.push(o)}ui(t,function(){for(var e=i.length-1;e>=0;e--)Mr(t.doc,"",i[e].from,i[e].to,"+delete");ti(t)})}function eo(t,e){var n=A(t.doc,e),i=ht(n);return i!=n&&(e=P(i)),kt(!0,t,i,e,1)}function no(t,e){var n=A(t.doc,e),i=dt(n);return i!=n&&(e=P(i)),kt(!0,t,n,e,-1)}function io(t,e){var n=eo(t,e.line),i=A(t.doc,n.line),r=St(i,t.doc.direction);if(!r||0==r[0].level){var o=Math.max(0,i.text.search(/\S/)),a=e.line==n.line&&e.ch<=o&&e.ch;return D(n.line,a?0:o,n.sticky)}return n}function ro(t,e,n){if("string"==typeof e&&(e=Ts[e],!e))return!1;t.display.input.ensurePolled();var i=t.display.shift,r=!1;try{t.isReadOnly()&&(t.state.suppressEdits=!0),n&&(t.display.shift=!1),r=e(t)!=Ca}finally{t.display.shift=i,t.state.suppressEdits=!1}return r}function oo(t,e,n){for(var i=0;i<t.state.keyMaps.length;i++){var r=Qr(e,t.state.keyMaps[i],n,t);if(r)return r}return t.options.extraKeys&&Qr(e,t.options.extraKeys,n,t)||Qr(e,t.options.keyMap,n,t)}function ao(t,e,n,i){var r=t.state.keySeq;if(r){if(Zr(e))return"handled";ks.set(50,function(){t.state.keySeq==r&&(t.state.keySeq=null,t.display.input.reset())}),e=r+" "+e}var o=oo(t,e,i);return"multi"==o&&(t.state.keySeq=e),"handled"==o&&Se(t,"keyHandled",t,e,n),"handled"!=o&&"multi"!=o||(Dt(n),En(t)),r&&!o&&/\'$/.test(e)?(Dt(n),!0):!!o}function so(t,e){var n=Kr(e,!0);return!!n&&(e.shiftKey&&!t.state.keySeq?ao(t,"Shift-"+n,e,function(e){return ro(t,e,!0)})||ao(t,n,e,function(e){if("string"==typeof e?/^go[A-Z]/.test(e):e.motion)return ro(t,e)}):ao(t,n,e,function(e){return ro(t,e)}))}function lo(t,e,n){return ao(t,"'"+n+"'",e,function(e){return ro(t,e,!0)})}function co(t){var e=this;if(e.curOp.focus=a(),!Pt(e,t)){Jo&&ta<11&&27==t.keyCode&&(t.returnValue=!1);var n=t.keyCode;e.display.shift=16==n||t.shiftKey;var i=so(e,t);ra&&(As=i?n:null,!i&&88==n&&!Fa&&(ha?t.metaKey:t.ctrlKey)&&e.replaceSelection("",null,"cut")),18!=n||/\bCodeMirror-crosshair\b/.test(e.display.lineDiv.className)||uo(e)}}function uo(t){function e(t){18!=t.keyCode&&t.altKey||(ya(n,"CodeMirror-crosshair"),Lt(document,"keyup",e),Lt(document,"mouseover",e))}var n=t.display.lineDiv;s(n,"CodeMirror-crosshair"),Ia(document,"keyup",e),Ia(document,"mouseover",e)}function ho(t){16==t.keyCode&&(this.doc.sel.shift=!1),Pt(this,t)}function fo(t){var e=this;if(!(Ve(e.display,t)||Pt(e,t)||t.ctrlKey&&!t.altKey||ha&&t.metaKey)){var n=t.keyCode,i=t.charCode;if(ra&&n==As)return As=null,void Dt(t);if(!ra||t.which&&!(t.which<10)||!so(e,t)){var r=String.fromCharCode(null==i?n:i);"\b"!=r&&(lo(e,t,r)||e.display.input.onKeyPress(t))}}}function po(t){var e=this,n=e.display;if(!(Pt(e,t)||n.activeTouch&&n.input.supportsTouch())){if(n.input.ensurePolled(),n.shift=t.shiftKey,Ve(n,t))return void(ea||(n.scroller.draggable=!1,setTimeout(function(){return n.scroller.draggable=!0},100)));if(!xo(e,t)){var i=Cn(e,t);switch(window.focus(),Ft(t)){case 1:e.state.selectingText?e.state.selectingText(t):i?go(e,t,i):Ht(t)==n.scroller&&Dt(t);break;case 2:ea&&(e.state.lastMiddleDown=+new Date),i&&ar(e.doc,i),setTimeout(function(){return n.input.focus()},20),Dt(t);break;case 3:va?bo(e,t):Nn(e)}}}}function go(t,e,n){Jo?setTimeout(c(Pn,t),0):t.curOp.focus=a();var i,r=+new Date;Cs&&Cs.time>r-400&&0==I(Cs.pos,n)?i="triple":Ss&&Ss.time>r-400&&0==I(Ss.pos,n)?(i="double",Cs={time:r,pos:n}):(i="single",Ss={time:r,pos:n});var o,s=t.doc.sel,l=ha?e.metaKey:e.ctrlKey;t.options.dragDrop&&ja&&!t.isReadOnly()&&"single"==i&&(o=s.contains(n))>-1&&(I((o=s.ranges[o]).from(),n)<0||n.xRel>0)&&(I(o.to(),n)>0||n.xRel<0)?mo(t,e,n,l):vo(t,e,n,i,l)}function mo(t,e,n,i){var r=t.display,o=!1,a=hi(t,function(e){ea&&(r.scroller.draggable=!1),t.state.draggingText=!1,Lt(document,"mouseup",a),Lt(document,"mousemove",s),Lt(r.scroller,"dragstart",l),Lt(r.scroller,"drop",a),o||(Dt(e),i||ar(t.doc,n),ea||Jo&&9==ta?setTimeout(function(){document.body.focus(),r.input.focus()},20):r.input.focus())}),s=function(t){o=o||Math.abs(e.clientX-t.clientX)+Math.abs(e.clientY-t.clientY)>=10},l=function(){return o=!0};ea&&(r.scroller.draggable=!0),t.state.draggingText=a,a.copy=ha?e.altKey:e.ctrlKey,r.scroller.dragDrop&&r.scroller.dragDrop(),Ia(document,"mouseup",a),Ia(document,"mousemove",s),Ia(r.scroller,"dragstart",l),Ia(r.scroller,"drop",a),Nn(t),setTimeout(function(){return r.input.focus()},20)}function vo(t,e,n,i,r){function o(e){if(0!=I(x,e))if(x=e,"rect"==i){for(var r=[],o=t.options.tabSize,a=h(A(u,n.line).text,n.ch,o),s=h(A(u,e.line).text,e.ch,o),l=Math.min(a,s),c=Math.max(a,s),m=Math.min(n.line,e.line),v=Math.min(t.lastLine(),Math.max(n.line,e.line));m<=v;m++){var y=A(u,m).text,b=f(y,l,o);l==c?r.push(new ss(D(m,b),D(m,b))):y.length>b&&r.push(new ss(D(m,b),D(m,f(y,c,o))))}r.length||r.push(new ss(n,n)),dr(u,Pi(g.ranges.slice(0,p).concat(r),p),{origin:"*mouse",scroll:!1}),t.scrollIntoView(e)}else{var _=d,w=_.anchor,S=e;if("single"!=i){var C;C="double"==i?t.findWordAt(e):new ss(D(e.line,0),q(u,D(e.line+1,0))),I(C.anchor,w)>0?(S=C.head,w=F(_.from(),C.anchor)):(S=C.anchor,w=H(_.to(),C.head))}var T=g.ranges.slice(0);T[p]=new ss(q(u,w),S),dr(u,Pi(T,p),ka)}}function s(e){var n=++_,r=Cn(t,e,!0,"rect"==i);if(r)if(0!=I(r,x)){t.curOp.focus=a(),o(r);var l=Hn(c,u);(r.line>=l.to||r.line<l.from)&&setTimeout(hi(t,function(){_==n&&s(e)}),150)}else{var h=e.clientY<b.top?-20:e.clientY>b.bottom?20:0;h&&setTimeout(hi(t,function(){_==n&&(c.scroller.scrollTop+=h,s(e))}),50)}}function l(e){t.state.selectingText=!1,_=1/0,Dt(e),c.input.focus(),Lt(document,"mousemove",w),Lt(document,"mouseup",S),u.history.lastSelOrigin=null}var c=t.display,u=t.doc;Dt(e);var d,p,g=u.sel,m=g.ranges;if(r&&!e.shiftKey?(p=u.sel.contains(n),d=p>-1?m[p]:new ss(n,n)):(d=u.sel.primary(),p=u.sel.primIndex),da?e.shiftKey&&e.metaKey:e.altKey)i="rect",r||(d=new ss(n,n)),n=Cn(t,e,!0,!0),p=-1;else if("double"==i){var v=t.findWordAt(n);d=t.display.shift||u.extend?or(u,d,v.anchor,v.head):v}else if("triple"==i){var y=new ss(D(n.line,0),q(u,D(n.line+1,0)));d=t.display.shift||u.extend?or(u,d,y.anchor,y.head):y}else d=or(u,d,n);r?p==-1?(p=m.length,dr(u,Pi(m.concat([d]),p),{scroll:!1,origin:"*mouse"})):m.length>1&&m[p].empty()&&"single"==i&&!e.shiftKey?(dr(u,Pi(m.slice(0,p).concat(m.slice(p+1)),0),{scroll:!1,origin:"*mouse"}),g=u.sel):lr(u,p,d,ka):(p=0,dr(u,new as([d],0),ka),g=u.sel);var x=n,b=c.wrapper.getBoundingClientRect(),_=0,w=hi(t,function(t){Ft(t)?s(t):l(t)}),S=hi(t,l);t.state.selectingText=S,Ia(document,"mousemove",w),Ia(document,"mouseup",S)}function yo(t,e,n,i){var r,o;try{r=e.clientX,o=e.clientY}catch(t){return!1}if(r>=Math.floor(t.display.gutters.getBoundingClientRect().right))return!1;i&&Dt(e);var a=t.display,s=a.lineDiv.getBoundingClientRect();if(o>s.bottom||!Ot(t,n))return jt(e);o-=s.top-a.viewOffset;for(var l=0;l<t.options.gutters.length;++l){var c=a.gutters.childNodes[l];if(c&&c.getBoundingClientRect().right>=r){var u=N(t.doc,o),h=t.options.gutters[l];return Et(t,n,t,u,h,e),jt(e)}}}function xo(t,e){return yo(t,e,"gutterClick",!0)}function bo(t,e){Ve(t.display,e)||_o(t,e)||Pt(t,e,"contextmenu")||t.display.input.onContextMenu(e)}function _o(t,e){return!!Ot(t,"gutterContextMenu")&&yo(t,e,"gutterContextMenu",!1)}function wo(t){t.display.wrapper.className=t.display.wrapper.className.replace(/\s*cm-s-\S+/g,"")+t.options.theme.replace(/(^|\s)\s*/g," cm-s-"),on(t)}function So(t){function e(e,i,r,o){t.defaults[e]=i,r&&(n[e]=o?function(t,e,n){n!=Ms&&r(t,e,n)}:r)}var n=t.optionHandlers;t.defineOption=e,t.Init=Ms,e("value","",function(t,e){return t.setValue(e)},!0),e("mode",null,function(t,e){t.doc.modeOption=e,Vi(t)},!0),e("indentUnit",2,Vi,!0),e("indentWithTabs",!1),e("smartIndent",!0),e("tabSize",4,function(t){Hi(t),on(t),pi(t)},!0),e("lineSeparator",null,function(t,e){if(t.doc.lineSep=e,e){var n=[],i=t.doc.first;t.doc.iter(function(t){for(var r=0;;){var o=t.text.indexOf(e,r);if(o==-1)break;r=o+e.length,n.push(D(i,o))}i++});for(var r=n.length-1;r>=0;r--)Mr(t.doc,e,n[r],D(n[r].line,n[r].ch+e.length))}}),e("specialChars",/[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b-\u200f\u2028\u2029\ufeff]/g,function(t,e,n){t.state.specialChars=new RegExp(e.source+(e.test("\t")?"":"|\t"),"g"),n!=Ms&&t.refresh()}),e("specialCharPlaceholder",de,function(t){return t.refresh()},!0),e("electricChars",!0),e("inputStyle",ua?"contenteditable":"textarea",function(){throw new Error("inputStyle can not (yet) be changed in a running editor")},!0),e("spellcheck",!1,function(t,e){return t.getInputField().spellcheck=e},!0),e("rtlMoveVisually",!fa),e("wholeLineUpdateBefore",!0),e("theme","default",function(t){wo(t),Co(t)},!0),e("keyMap","default",function(t,e,n){var i=Jr(e),r=n!=Ms&&Jr(n);r&&r.detach&&r.detach(t,i),i.attach&&i.attach(t,r||null)}),e("extraKeys",null),e("lineWrapping",!1,ko,!0),e("gutters",[],function(t){Ei(t.options),Co(t)},!0),e("fixedGutter",!0,function(t,e){t.display.gutters.style.left=e?_n(t.display)+"px":"0",t.refresh()},!0),e("coverGutterNextToScrollbar",!1,function(t){return Wn(t)},!0),e("scrollbarStyle","native",function(t){Xn(t),Wn(t),t.display.scrollbars.setScrollTop(t.doc.scrollTop),t.display.scrollbars.setScrollLeft(t.doc.scrollLeft)},!0),e("lineNumbers",!1,function(t){Ei(t.options),Co(t)},!0),e("firstLineNumber",1,Co,!0),e("lineNumberFormatter",function(t){return t},Co,!0),e("showCursorWhenSelecting",!1,kn,!0),e("resetSelectionOnContextMenu",!0),e("lineWiseCopyCut",!0),e("readOnly",!1,function(t,e){"nocursor"==e?(Rn(t),t.display.input.blur(),t.display.disabled=!0):t.display.disabled=!1,t.display.input.readOnlyChanged(e)}),e("disableInput",!1,function(t,e){e||t.display.input.reset()},!0),e("dragDrop",!0,To),e("allowDropFileTypes",null),e("cursorBlinkRate",530),e("cursorScrollMargin",0),e("cursorHeight",1,kn,!0),e("singleCursorHeightPerLine",!0,kn,!0),e("workTime",100),e("workDelay",100),e("flattenSpans",!0,Hi,!0),e("addModeClass",!1,Hi,!0),e("pollInterval",100),e("undoDepth",200,function(t,e){return t.doc.history.undoDepth=e}),e("historyEventDelay",1250),e("viewportMargin",10,function(t){return t.refresh()},!0),e("maxHighlightLength",1e4,Hi,!0),e("moveInputWithCursor",!0,function(t,e){e||t.display.input.resetPosition()}),e("tabindex",null,function(t,e){return t.display.input.getField().tabIndex=e||""}),e("autofocus",null),e("direction","ltr",function(t,e){return t.doc.setDirection(e)},!0)}function Co(t){Li(t),pi(t),Dn(t)}function To(t,e,n){var i=n&&n!=Ms;if(!e!=!i){var r=t.display.dragFunctions,o=e?Ia:Lt;o(t.display.scroller,"dragstart",r.start),o(t.display.scroller,"dragenter",r.enter),o(t.display.scroller,"dragover",r.over),o(t.display.scroller,"dragleave",r.leave),o(t.display.scroller,"drop",r.drop)}}function ko(t){t.options.lineWrapping?(s(t.display.wrapper,"CodeMirror-wrap"),t.display.sizer.style.minWidth="",t.display.sizerWidth=null):(ya(t.display.wrapper,"CodeMirror-wrap"),bt(t)),Sn(t),pi(t),on(t),setTimeout(function(){return Wn(t)},100)}function Ao(t,e){var n=this;if(!(this instanceof Ao))return new Ao(t,e);this.options=e=e?u(e):{},u(Ls,e,!1),Ei(e);var i=e.value;"string"==typeof i&&(i=new gs(i,e.mode,null,e.lineSeparator,e.direction)),this.doc=i;var r=new Ao.inputStyles[e.inputStyle](this),o=this.display=new k(t,i,r);o.wrapper.CodeMirror=this,Li(this),wo(this),e.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap"),Xn(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,delayingBlurEvent:!1,focused:!1,suppressEdits:!1,pasteIncoming:!1,cutIncoming:!1,selectingText:!1,draggingText:!1,highlight:new ba,keySeq:null,specialChars:null},e.autofocus&&!ua&&o.input.focus(),Jo&&ta<11&&setTimeout(function(){return n.display.input.reset(!0)},20),Mo(this),$r(),ni(this),this.curOp.forceUpdate=!0,Gi(this,i),e.autofocus&&!ua||this.hasFocus()?setTimeout(c(On,this),20):Rn(this);for(var a in Es)Es.hasOwnProperty(a)&&Es[a](n,e[a],Ms);In(this),e.finishInit&&e.finishInit(this);for(var s=0;s<Ps.length;++s)Ps[s](n);ii(this),ea&&e.lineWrapping&&"optimizelegibility"==getComputedStyle(o.lineDiv).textRendering&&(o.lineDiv.style.textRendering="auto")}function Mo(t){function e(){r.activeTouch&&(o=setTimeout(function(){return r.activeTouch=null},1e3),a=r.activeTouch,a.end=+new Date)}function n(t){if(1!=t.touches.length)return!1;var e=t.touches[0];return e.radiusX<=1&&e.radiusY<=1}function i(t,e){if(null==e.left)return!0;var n=e.left-t.left,i=e.top-t.top;return n*n+i*i>400}var r=t.display;Ia(r.scroller,"mousedown",hi(t,po)),Jo&&ta<11?Ia(r.scroller,"dblclick",hi(t,function(e){if(!Pt(t,e)){var n=Cn(t,e);if(n&&!xo(t,e)&&!Ve(t.display,e)){Dt(e);var i=t.findWordAt(n);ar(t.doc,i.anchor,i.head)}}})):Ia(r.scroller,"dblclick",function(e){return Pt(t,e)||Dt(e)}),va||Ia(r.scroller,"contextmenu",function(e){return bo(t,e)});var o,a={end:0};Ia(r.scroller,"touchstart",function(e){if(!Pt(t,e)&&!n(e)){r.input.ensurePolled(),clearTimeout(o);var i=+new Date;r.activeTouch={start:i,moved:!1,prev:i-a.end<=300?a:null},1==e.touches.length&&(r.activeTouch.left=e.touches[0].pageX,r.activeTouch.top=e.touches[0].pageY)}}),Ia(r.scroller,"touchmove",function(){r.activeTouch&&(r.activeTouch.moved=!0)}),Ia(r.scroller,"touchend",function(n){var o=r.activeTouch;if(o&&!Ve(r,n)&&null!=o.left&&!o.moved&&new Date-o.start<300){var a,s=t.coordsChar(r.activeTouch,"page");a=!o.prev||i(o,o.prev)?new ss(s,s):!o.prev.prev||i(o,o.prev.prev)?t.findWordAt(s):new ss(D(s.line,0),q(t.doc,D(s.line+1,0))),t.setSelection(a.anchor,a.head),t.focus(),Dt(n)}e()}),Ia(r.scroller,"touchcancel",e),Ia(r.scroller,"scroll",function(){r.scroller.clientHeight&&(Fn(t,r.scroller.scrollTop),zn(t,r.scroller.scrollLeft,!0),Et(t,"scroll",t))}),Ia(r.scroller,"mousewheel",function(e){return Bn(t,e)}),Ia(r.scroller,"DOMMouseScroll",function(e){return Bn(t,e)}),Ia(r.wrapper,"scroll",function(){return r.wrapper.scrollTop=r.wrapper.scrollLeft=0}),r.dragFunctions={enter:function(e){Pt(t,e)||Vt(e)},over:function(e){Pt(t,e)||(qr(t,e),Vt(e))},start:function(e){return zr(t,e)},drop:hi(t,Fr),leave:function(e){Pt(t,e)||Gr(t)}};var s=r.input.getField();Ia(s,"keyup",function(e){return ho.call(t,e)}),Ia(s,"keydown",hi(t,co)),Ia(s,"keypress",hi(t,fo)),Ia(s,"focus",function(e){return On(t,e)}),Ia(s,"blur",function(e){return Rn(t,e)})}function Lo(t,e,n,i){var r,o=t.doc;null==n&&(n="add"),"smart"==n&&(o.mode.indent?r=te(t,e):n="prev");var a=t.options.tabSize,s=A(o,e),l=h(s.text,null,a);s.stateAfter&&(s.stateAfter=null);var c,u=s.text.match(/^\s*/)[0];if(i||/\S/.test(s.text)){if("smart"==n&&(c=o.mode.indent(r,s.text.slice(u.length),s.text),c==Ca||c>150)){if(!i)return;n="prev"}}else c=0,n="not";"prev"==n?c=e>o.first?h(A(o,e-1).text,null,a):0:"add"==n?c=l+t.options.indentUnit:"subtract"==n?c=l-t.options.indentUnit:"number"==typeof n&&(c=l+n),c=Math.max(0,c);var d="",f=0;if(t.options.indentWithTabs)for(var g=Math.floor(c/a);g;--g)f+=a,d+="\t";if(f<c&&(d+=p(c-f)),d!=u)return Mr(o,d,D(e,0),D(e,u.length),"+input"),s.stateAfter=null,!0;for(var m=0;m<o.sel.ranges.length;m++){var v=o.sel.ranges[m];if(v.head.line==e&&v.head.ch<u.length){var y=D(e,u.length);lr(o,m,new ss(y,y));break}}}function Eo(t){Ns=t}function Po(t,e,n,i,r){var o=t.doc;t.display.shift=!1,i||(i=o.sel);var a=t.state.pasteIncoming||"paste"==r,s=Va(e),l=null;if(a&&i.ranges.length>1)if(Ns&&Ns.text.join("\n")==e){if(i.ranges.length%Ns.text.length==0){l=[];for(var c=0;c<Ns.text.length;c++)l.push(o.splitLines(Ns.text[c]))}}else s.length==i.ranges.length&&(l=m(s,function(t){return[t]}));for(var u,h=i.ranges.length-1;h>=0;h--){var d=i.ranges[h],f=d.from(),p=d.to();d.empty()&&(n&&n>0?f=D(f.line,f.ch-n):t.state.overwrite&&!a?p=D(p.line,Math.min(A(o,p.line).text.length,p.ch+g(s).length)):Ns&&Ns.lineWise&&Ns.text.join("\n")==e&&(f=p=D(f.line,0))),u=t.curOp.updateInput;var v={from:f,to:p,text:l?l[h%l.length]:s,origin:r||(a?"paste":t.state.cutIncoming?"cut":"+input")};wr(t.doc,v),Se(t,"inputRead",t,v)}e&&!a&&Oo(t,e),ti(t),t.curOp.updateInput=u,t.curOp.typing=!0,t.state.pasteIncoming=t.state.cutIncoming=!1}function No(t,e){var n=t.clipboardData&&t.clipboardData.getData("Text");if(n)return t.preventDefault(),e.isReadOnly()||e.options.disableInput||ui(e,function(){return Po(e,n,0,null,"paste")}),!0}function Oo(t,e){if(t.options.electricChars&&t.options.smartIndent)for(var n=t.doc.sel,i=n.ranges.length-1;i>=0;i--){var r=n.ranges[i];if(!(r.head.ch>100||i&&n.ranges[i-1].head.line==r.head.line)){var o=t.getModeAt(r.head),a=!1;if(o.electricChars){for(var s=0;s<o.electricChars.length;s++)if(e.indexOf(o.electricChars.charAt(s))>-1){a=Lo(t,r.head.line,"smart");break}}else o.electricInput&&o.electricInput.test(A(t.doc,r.head.line).text.slice(0,r.head.ch))&&(a=Lo(t,r.head.line,"smart"));a&&Se(t,"electricInput",t,r.head.line)}}}function Ro(t){for(var e=[],n=[],i=0;i<t.doc.sel.ranges.length;i++){var r=t.doc.sel.ranges[i].head.line,o={anchor:D(r,0),head:D(r+1,0)};n.push(o),e.push(t.getRange(o.anchor,o.head))}return{text:e,ranges:n}}function Do(t,e){t.setAttribute("autocorrect","off"),t.setAttribute("autocapitalize","off"),t.setAttribute("spellcheck",!!e)}function Io(){var t=i("textarea",null,null,"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none"),e=i("div",[t],null,"overflow: hidden; position: relative; width: 3px; height: 0px;");return ea?t.style.width="1000px":t.setAttribute("wrap","off"),la&&(t.style.border="1px solid black"),Do(t),e}function jo(t,e,n,i,r){function o(){var i=e.line+n;return!(i<t.first||i>=t.first+t.size)&&(e=new D(i,e.ch,e.sticky),c=A(t,i))}function a(i){var a;if(a=r?At(t.cm,c,e,n):Tt(c,e,n),null==a){if(i||!o())return!1;e=kt(r,t.cm,c,e.line,n)}else e=a;return!0}var s=e,l=n,c=A(t,e.line);if("char"==i)a();else if("column"==i)a(!0);else if("word"==i||"group"==i)for(var u=null,h="group"==i,d=t.cm&&t.cm.getHelper(e,"wordChars"),f=!0;!(n<0)||a(!f);f=!1){var p=c.text.charAt(e.ch)||"\n",g=_(p,d)?"w":h&&"\n"==p?"n":!h||/\s/.test(p)?null:"p";if(!h||f||g||(g="s"),u&&u!=g){n<0&&(n=1,a(),e.sticky="after");break}if(g&&(u=g),n>0&&!a(!f))break}var m=yr(t,e,s,l,!0);return j(s,m)&&(m.hitSide=!0),m}function Vo(t,e,n,i){var r,o=t.doc,a=e.left;if("page"==i){var s=Math.min(t.display.wrapper.clientHeight,window.innerHeight||document.documentElement.clientHeight),l=Math.max(s-.5*yn(t.display),3);r=(n>0?e.bottom:e.top)+n*l}else"line"==i&&(r=n>0?e.bottom+3:e.top-3);for(var c;c=pn(t,a,r),c.outside;){if(n<0?r<=0:r>=o.height){c.hitSide=!0;break}r+=5*n}return c}function Ho(t,e){var n=Ye(t,e.line);if(!n||n.hidden)return null;var i=A(t.doc,e.line),r=We(n,i,e.line),o=St(i,t.doc.direction),a="left";if(o){var s=wt(o,e.ch);a=s%2?"right":"left"}var l=Ke(r.map,e.ch,a);return l.offset="right"==l.collapse?l.end:l.start,l}function Fo(t){for(var e=t;e;e=e.parentNode)if(/CodeMirror-gutter-wrapper/.test(e.className))return!0;return!1}function zo(t,e){return e&&(t.bad=!0),t}function qo(t,e,n,i,r){function o(t){return function(e){return e.id==t}}function a(){u&&(c+=h,u=!1)}function s(t){t&&(a(),c+=t)}function l(e){if(1==e.nodeType){var n=e.getAttribute("cm-text");if(null!=n)return void s(n||e.textContent.replace(/\u200b/g,""));var c,d=e.getAttribute("cm-marker");if(d){var f=t.findMarks(D(i,0),D(r+1,0),o(+d));return void(f.length&&(c=f[0].find())&&s(M(t.doc,c.from,c.to).join(h)))}if("false"==e.getAttribute("contenteditable"))return;var p=/^(pre|div|p)$/i.test(e.nodeName);p&&a();for(var g=0;g<e.childNodes.length;g++)l(e.childNodes[g]);p&&(u=!0)}else 3==e.nodeType&&s(e.nodeValue)}for(var c="",u=!1,h=t.doc.lineSeparator();l(e),e!=n;)e=e.nextSibling;return c}function Go(t,e,n){var i;if(e==t.display.lineDiv){if(i=t.display.lineDiv.childNodes[n],!i)return zo(t.clipPos(D(t.display.viewTo-1)),!0);e=null,n=0}else for(i=e;;i=i.parentNode){if(!i||i==t.display.lineDiv)return null;if(i.parentNode&&i.parentNode==t.display.lineDiv)break}for(var r=0;r<t.display.view.length;r++){var o=t.display.view[r];if(o.node==i)return Bo(o,e,n)}}function Bo(t,e,n){function i(e,n,i){for(var r=-1;r<(h?h.length:0);r++)for(var o=r<0?u.map:h[r],a=0;a<o.length;a+=3){var s=o[a+2];if(s==e||s==n){var l=P(r<0?t.line:t.rest[r]),c=o[a]+i;return(i<0||s!=e)&&(c=o[a+(i?1:0)]),D(l,c)}}}var r=t.text.firstChild,a=!1;if(!e||!o(r,e))return zo(D(P(t.line),0),!0);if(e==r&&(a=!0,e=r.childNodes[n],n=0,!e)){var s=t.rest?g(t.rest):t.line;return zo(D(P(s),s.text.length),a)}var l=3==e.nodeType?e:null,c=e;for(l||1!=e.childNodes.length||3!=e.firstChild.nodeType||(l=e.firstChild,n&&(n=l.nodeValue.length));c.parentNode!=r;)c=c.parentNode;var u=t.measure,h=u.maps,d=i(l,c,n);if(d)return zo(d,a);for(var f=c.nextSibling,p=l?l.nodeValue.length-n:0;f;f=f.nextSibling){if(d=i(f,f.firstChild,0))return zo(D(d.line,d.ch-p),a);p+=f.textContent.length}for(var m=c.previousSibling,v=n;m;m=m.previousSibling){if(d=i(m,m.firstChild,-1))return zo(D(d.line,d.ch+v),a);v+=m.textContent.length}}function $o(t,e){function n(){t.value=l.getValue()}if(e=e?u(e):{},e.value=t.value,!e.tabindex&&t.tabIndex&&(e.tabindex=t.tabIndex),!e.placeholder&&t.placeholder&&(e.placeholder=t.placeholder),null==e.autofocus){var i=a();e.autofocus=i==t||null!=t.getAttribute("autofocus")&&i==document.body}var r;if(t.form&&(Ia(t.form,"submit",n),!e.leaveSubmitMethodAlone)){var o=t.form;r=o.submit;try{var s=o.submit=function(){n(),o.submit=r,o.submit(),o.submit=s}}catch(t){}}e.finishInit=function(e){e.save=n,e.getTextArea=function(){return t},e.toTextArea=function(){e.toTextArea=isNaN,n(),t.parentNode.removeChild(e.getWrapperElement()),t.style.display="",t.form&&(Lt(t.form,"submit",n),"function"==typeof t.form.submit&&(t.form.submit=r))}},t.style.display="none";var l=Ao(function(e){return t.parentNode.insertBefore(e,t.nextSibling)},e);return l}function Wo(t){t.off=Lt,t.on=Ia,t.wheelEventPixels=Gn,t.Doc=gs,t.splitLines=Va,t.countColumn=h,t.findColumn=f,t.isWordChar=b,t.Pass=Ca,t.signal=Et,t.Line=Wa,t.changeEnd=Oi,t.scrollbarModel=is,t.Pos=D,t.cmpPos=I,t.modes=qa,t.mimeModes=Ga,t.resolveMode=Wt,t.getMode=Ut,t.modeExtensions=Ba,t.extendMode=Xt,t.copyState=Yt,t.startState=Zt,t.innerMode=Qt,t.commands=Ts,t.keyMap=ws,t.keyName=Kr,t.isModifierKey=Zr,t.lookupKey=Qr,t.normalizeKeyMap=Yr,t.StringStream=$a,t.SharedTextMarker=fs,t.TextMarker=ds,t.LineWidget=us,t.e_preventDefault=Dt,t.e_stopPropagation=It,t.e_stop=Vt,t.addClass=s,t.contains=o,t.rmClass=ya,t.keyNames=ys}var Uo=navigator.userAgent,Xo=navigator.platform,Yo=/gecko\/\d/i.test(Uo),Qo=/MSIE \d/.test(Uo),Zo=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(Uo),Ko=/Edge\/(\d+)/.exec(Uo),Jo=Qo||Zo||Ko,ta=Jo&&(Qo?document.documentMode||6:+(Ko||Zo)[1]),ea=!Ko&&/WebKit\//.test(Uo),na=ea&&/Qt\/\d+\.\d+/.test(Uo),ia=!Ko&&/Chrome\//.test(Uo),ra=/Opera\//.test(Uo),oa=/Apple Computer/.test(navigator.vendor),aa=/Mac OS X 1\d\D([8-9]|\d\d)\D/.test(Uo),sa=/PhantomJS/.test(Uo),la=!Ko&&/AppleWebKit/.test(Uo)&&/Mobile\/\w+/.test(Uo),ca=/Android/.test(Uo),ua=la||ca||/webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(Uo),ha=la||/Mac/.test(Xo),da=/\bCrOS\b/.test(Uo),fa=/win/i.test(Xo),pa=ra&&Uo.match(/Version\/(\d*\.\d*)/);pa&&(pa=Number(pa[1])),pa&&pa>=15&&(ra=!1,ea=!0);var ga,ma=ha&&(na||ra&&(null==pa||pa<12.11)),va=Yo||Jo&&ta>=9,ya=function(e,n){var i=e.className,r=t(n).exec(i);if(r){var o=i.slice(r.index+r[0].length);e.className=i.slice(0,r.index)+(o?r[1]+o:"")}};ga=document.createRange?function(t,e,n,i){var r=document.createRange();return r.setEnd(i||t,n),r.setStart(t,e),r}:function(t,e,n){var i=document.body.createTextRange();try{i.moveToElementText(t.parentNode);
+}catch(t){return i}return i.collapse(!0),i.moveEnd("character",n),i.moveStart("character",e),i};var xa=function(t){t.select()};la?xa=function(t){t.selectionStart=0,t.selectionEnd=t.value.length}:Jo&&(xa=function(t){try{t.select()}catch(t){}});var ba=function(){this.id=null};ba.prototype.set=function(t,e){clearTimeout(this.id),this.id=setTimeout(e,t)};var _a,wa,Sa=30,Ca={toString:function(){return"CodeMirror.Pass"}},Ta={scroll:!1},ka={origin:"*mouse"},Aa={origin:"+move"},Ma=[""],La=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,Ea=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/,Pa=!1,Na=!1,Oa=null,Ra=function(){function t(t){return t<=247?n.charAt(t):1424<=t&&t<=1524?"R":1536<=t&&t<=1785?i.charAt(t-1536):1774<=t&&t<=2220?"r":8192<=t&&t<=8203?"w":8204==t?"b":"L"}function e(t,e,n){this.level=t,this.from=e,this.to=n}var n="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN",i="nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111",r=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,o=/[stwN]/,a=/[LRr]/,s=/[Lb1n]/,l=/[1n]/;return function(n,i){var c="ltr"==i?"L":"R";if(0==n.length||"ltr"==i&&!r.test(n))return!1;for(var u=n.length,h=[],d=0;d<u;++d)h.push(t(n.charCodeAt(d)));for(var f=0,p=c;f<u;++f){var m=h[f];"m"==m?h[f]=p:p=m}for(var v=0,y=c;v<u;++v){var x=h[v];"1"==x&&"r"==y?h[v]="n":a.test(x)&&(y=x,"r"==x&&(h[v]="R"))}for(var b=1,_=h[0];b<u-1;++b){var w=h[b];"+"==w&&"1"==_&&"1"==h[b+1]?h[b]="1":","!=w||_!=h[b+1]||"1"!=_&&"n"!=_||(h[b]=_),_=w}for(var S=0;S<u;++S){var C=h[S];if(","==C)h[S]="N";else if("%"==C){var T=void 0;for(T=S+1;T<u&&"%"==h[T];++T);for(var k=S&&"!"==h[S-1]||T<u&&"1"==h[T]?"1":"N",A=S;A<T;++A)h[A]=k;S=T-1}}for(var M=0,L=c;M<u;++M){var E=h[M];"L"==L&&"1"==E?h[M]="L":a.test(E)&&(L=E)}for(var P=0;P<u;++P)if(o.test(h[P])){var N=void 0;for(N=P+1;N<u&&o.test(h[N]);++N);for(var O="L"==(P?h[P-1]:c),R="L"==(N<u?h[N]:c),D=O==R?O?"L":"R":c,I=P;I<N;++I)h[I]=D;P=N-1}for(var j,V=[],H=0;H<u;)if(s.test(h[H])){var F=H;for(++H;H<u&&s.test(h[H]);++H);V.push(new e(0,F,H))}else{var z=H,q=V.length;for(++H;H<u&&"L"!=h[H];++H);for(var G=z;G<H;)if(l.test(h[G])){z<G&&V.splice(q,0,new e(1,z,G));var B=G;for(++G;G<H&&l.test(h[G]);++G);V.splice(q,0,new e(2,B,G)),z=G}else++G;z<H&&V.splice(q,0,new e(1,z,H))}return 1==V[0].level&&(j=n.match(/^\s+/))&&(V[0].from=j[0].length,V.unshift(new e(0,0,j[0].length))),1==g(V).level&&(j=n.match(/\s+$/))&&(g(V).to-=j[0].length,V.push(new e(0,u-j[0].length,u))),"rtl"==i?V.reverse():V}}(),Da=[],Ia=function(t,e,n){if(t.addEventListener)t.addEventListener(e,n,!1);else if(t.attachEvent)t.attachEvent("on"+e,n);else{var i=t._handlers||(t._handlers={});i[e]=(i[e]||Da).concat(n)}},ja=function(){if(Jo&&ta<9)return!1;var t=i("div");return"draggable"in t||"dragDrop"in t}(),Va=3!="\n\nb".split(/\n/).length?function(t){for(var e=0,n=[],i=t.length;e<=i;){var r=t.indexOf("\n",e);r==-1&&(r=t.length);var o=t.slice(e,"\r"==t.charAt(r-1)?r-1:r),a=o.indexOf("\r");a!=-1?(n.push(o.slice(0,a)),e+=a+1):(n.push(o),e=r+1)}return n}:function(t){return t.split(/\r\n?|\n/)},Ha=window.getSelection?function(t){try{return t.selectionStart!=t.selectionEnd}catch(t){return!1}}:function(t){var e;try{e=t.ownerDocument.selection.createRange()}catch(t){}return!(!e||e.parentElement()!=t)&&0!=e.compareEndPoints("StartToEnd",e)},Fa=function(){var t=i("div");return"oncopy"in t||(t.setAttribute("oncopy","return;"),"function"==typeof t.oncopy)}(),za=null,qa={},Ga={},Ba={},$a=function(t,e){this.pos=this.start=0,this.string=t,this.tabSize=e||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0};$a.prototype.eol=function(){return this.pos>=this.string.length},$a.prototype.sol=function(){return this.pos==this.lineStart},$a.prototype.peek=function(){return this.string.charAt(this.pos)||void 0},$a.prototype.next=function(){if(this.pos<this.string.length)return this.string.charAt(this.pos++)},$a.prototype.eat=function(t){var e,n=this.string.charAt(this.pos);if(e="string"==typeof t?n==t:n&&(t.test?t.test(n):t(n)))return++this.pos,n},$a.prototype.eatWhile=function(t){for(var e=this.pos;this.eat(t););return this.pos>e},$a.prototype.eatSpace=function(){for(var t=this,e=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++t.pos;return this.pos>e},$a.prototype.skipToEnd=function(){this.pos=this.string.length},$a.prototype.skipTo=function(t){var e=this.string.indexOf(t,this.pos);if(e>-1)return this.pos=e,!0},$a.prototype.backUp=function(t){this.pos-=t},$a.prototype.column=function(){return this.lastColumnPos<this.start&&(this.lastColumnValue=h(this.string,this.start,this.tabSize,this.lastColumnPos,this.lastColumnValue),this.lastColumnPos=this.start),this.lastColumnValue-(this.lineStart?h(this.string,this.lineStart,this.tabSize):0)},$a.prototype.indentation=function(){return h(this.string,null,this.tabSize)-(this.lineStart?h(this.string,this.lineStart,this.tabSize):0)},$a.prototype.match=function(t,e,n){if("string"!=typeof t){var i=this.string.slice(this.pos).match(t);return i&&i.index>0?null:(i&&e!==!1&&(this.pos+=i[0].length),i)}var r=function(t){return n?t.toLowerCase():t},o=this.string.substr(this.pos,t.length);if(r(o)==r(t))return e!==!1&&(this.pos+=t.length),!0},$a.prototype.current=function(){return this.string.slice(this.start,this.pos)},$a.prototype.hideFirstChars=function(t,e){this.lineStart+=t;try{return e()}finally{this.lineStart-=t}};var Wa=function(t,e,n){this.text=t,it(this,e),this.height=n?n(this):1};Wa.prototype.lineNo=function(){return P(this)},Rt(Wa);var Ua,Xa={},Ya={},Qa=null,Za=null,Ka={left:0,right:0,top:0,bottom:0},Ja=0,ts=null;Jo?ts=-.53:Yo?ts=15:ia?ts=-.7:oa&&(ts=-1/3);var es=function(t,e,n){this.cm=n;var r=this.vert=i("div",[i("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar"),o=this.horiz=i("div",[i("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar");t(r),t(o),Ia(r,"scroll",function(){r.clientHeight&&e(r.scrollTop,"vertical")}),Ia(o,"scroll",function(){o.clientWidth&&e(o.scrollLeft,"horizontal")}),this.checkedZeroWidth=!1,Jo&&ta<8&&(this.horiz.style.minHeight=this.vert.style.minWidth="18px")};es.prototype.update=function(t){var e=t.scrollWidth>t.clientWidth+1,n=t.scrollHeight>t.clientHeight+1,i=t.nativeBarWidth;if(n){this.vert.style.display="block",this.vert.style.bottom=e?i+"px":"0";var r=t.viewHeight-(e?i:0);this.vert.firstChild.style.height=Math.max(0,t.scrollHeight-t.clientHeight+r)+"px"}else this.vert.style.display="",this.vert.firstChild.style.height="0";if(e){this.horiz.style.display="block",this.horiz.style.right=n?i+"px":"0",this.horiz.style.left=t.barLeft+"px";var o=t.viewWidth-t.barLeft-(n?i:0);this.horiz.firstChild.style.width=Math.max(0,t.scrollWidth-t.clientWidth+o)+"px"}else this.horiz.style.display="",this.horiz.firstChild.style.width="0";return!this.checkedZeroWidth&&t.clientHeight>0&&(0==i&&this.zeroWidthHack(),this.checkedZeroWidth=!0),{right:n?i:0,bottom:e?i:0}},es.prototype.setScrollLeft=function(t){this.horiz.scrollLeft!=t&&(this.horiz.scrollLeft=t),this.disableHoriz&&this.enableZeroWidthBar(this.horiz,this.disableHoriz,"horiz")},es.prototype.setScrollTop=function(t){this.vert.scrollTop!=t&&(this.vert.scrollTop=t),this.disableVert&&this.enableZeroWidthBar(this.vert,this.disableVert,"vert")},es.prototype.zeroWidthHack=function(){var t=ha&&!aa?"12px":"18px";this.horiz.style.height=this.vert.style.width=t,this.horiz.style.pointerEvents=this.vert.style.pointerEvents="none",this.disableHoriz=new ba,this.disableVert=new ba},es.prototype.enableZeroWidthBar=function(t,e,n){function i(){var r=t.getBoundingClientRect(),o="vert"==n?document.elementFromPoint(r.right-1,(r.top+r.bottom)/2):document.elementFromPoint((r.right+r.left)/2,r.bottom-1);o!=t?t.style.pointerEvents="none":e.set(1e3,i)}t.style.pointerEvents="auto",e.set(1e3,i)},es.prototype.clear=function(){var t=this.horiz.parentNode;t.removeChild(this.horiz),t.removeChild(this.vert)};var ns=function(){};ns.prototype.update=function(){return{bottom:0,right:0}},ns.prototype.setScrollLeft=function(){},ns.prototype.setScrollTop=function(){},ns.prototype.clear=function(){};var is={native:es,null:ns},rs=0,os=function(t,e,n){var i=t.display;this.viewport=e,this.visible=Hn(i,t.doc,e),this.editorIsHidden=!i.wrapper.offsetWidth,this.wrapperHeight=i.wrapper.clientHeight,this.wrapperWidth=i.wrapper.clientWidth,this.oldDisplayWidth=Ge(t),this.force=n,this.dims=bn(t),this.events=[]};os.prototype.signal=function(t,e){Ot(t,e)&&this.events.push(arguments)},os.prototype.finish=function(){for(var t=this,e=0;e<this.events.length;e++)Et.apply(null,t.events[e])};var as=function(t,e){this.ranges=t,this.primIndex=e};as.prototype.primary=function(){return this.ranges[this.primIndex]},as.prototype.equals=function(t){var e=this;if(t==this)return!0;if(t.primIndex!=this.primIndex||t.ranges.length!=this.ranges.length)return!1;for(var n=0;n<this.ranges.length;n++){var i=e.ranges[n],r=t.ranges[n];if(!j(i.anchor,r.anchor)||!j(i.head,r.head))return!1}return!0},as.prototype.deepCopy=function(){for(var t=this,e=[],n=0;n<this.ranges.length;n++)e[n]=new ss(V(t.ranges[n].anchor),V(t.ranges[n].head));return new as(e,this.primIndex)},as.prototype.somethingSelected=function(){for(var t=this,e=0;e<this.ranges.length;e++)if(!t.ranges[e].empty())return!0;return!1},as.prototype.contains=function(t,e){var n=this;e||(e=t);for(var i=0;i<this.ranges.length;i++){var r=n.ranges[i];if(I(e,r.from())>=0&&I(t,r.to())<=0)return i}return-1};var ss=function(t,e){this.anchor=t,this.head=e};ss.prototype.from=function(){return F(this.anchor,this.head)},ss.prototype.to=function(){return H(this.anchor,this.head)},ss.prototype.empty=function(){return this.head.line==this.anchor.line&&this.head.ch==this.anchor.ch};var ls=function(t){var e=this;this.lines=t,this.parent=null;for(var n=0,i=0;i<t.length;++i)t[i].parent=e,n+=t[i].height;this.height=n};ls.prototype.chunkSize=function(){return this.lines.length},ls.prototype.removeInner=function(t,e){for(var n=this,i=t,r=t+e;i<r;++i){var o=n.lines[i];n.height-=o.height,ce(o),Se(o,"delete")}this.lines.splice(t,e)},ls.prototype.collapse=function(t){t.push.apply(t,this.lines)},ls.prototype.insertInner=function(t,e,n){var i=this;this.height+=n,this.lines=this.lines.slice(0,t).concat(e).concat(this.lines.slice(t));for(var r=0;r<e.length;++r)e[r].parent=i},ls.prototype.iterN=function(t,e,n){for(var i=this,r=t+e;t<r;++t)if(n(i.lines[t]))return!0};var cs=function(t){var e=this;this.children=t;for(var n=0,i=0,r=0;r<t.length;++r){var o=t[r];n+=o.chunkSize(),i+=o.height,o.parent=e}this.size=n,this.height=i,this.parent=null};cs.prototype.chunkSize=function(){return this.size},cs.prototype.removeInner=function(t,e){var n=this;this.size-=e;for(var i=0;i<this.children.length;++i){var r=n.children[i],o=r.chunkSize();if(t<o){var a=Math.min(e,o-t),s=r.height;if(r.removeInner(t,a),n.height-=s-r.height,o==a&&(n.children.splice(i--,1),r.parent=null),0==(e-=a))break;t=0}else t-=o}if(this.size-e<25&&(this.children.length>1||!(this.children[0]instanceof ls))){var l=[];this.collapse(l),this.children=[new ls(l)],this.children[0].parent=this}},cs.prototype.collapse=function(t){for(var e=this,n=0;n<this.children.length;++n)e.children[n].collapse(t)},cs.prototype.insertInner=function(t,e,n){var i=this;this.size+=e.length,this.height+=n;for(var r=0;r<this.children.length;++r){var o=i.children[r],a=o.chunkSize();if(t<=a){if(o.insertInner(t,e,n),o.lines&&o.lines.length>50){for(var s=o.lines.length%25+25,l=s;l<o.lines.length;){var c=new ls(o.lines.slice(l,l+=25));o.height-=c.height,i.children.splice(++r,0,c),c.parent=i}o.lines=o.lines.slice(0,s),i.maybeSpill()}break}t-=a}},cs.prototype.maybeSpill=function(){if(!(this.children.length<=10)){var t=this;do{var e=t.children.splice(t.children.length-5,5),n=new cs(e);if(t.parent){t.size-=n.size,t.height-=n.height;var i=d(t.parent.children,t);t.parent.children.splice(i+1,0,n)}else{var r=new cs(t.children);r.parent=t,t.children=[r,n],t=r}n.parent=t.parent}while(t.children.length>10);t.parent.maybeSpill()}},cs.prototype.iterN=function(t,e,n){for(var i=this,r=0;r<this.children.length;++r){var o=i.children[r],a=o.chunkSize();if(t<a){var s=Math.min(e,a-t);if(o.iterN(t,s,n))return!0;if(0==(e-=s))break;t=0}else t-=a}};var us=function(t,e,n){var i=this;if(n)for(var r in n)n.hasOwnProperty(r)&&(i[r]=n[r]);this.doc=t,this.node=e};us.prototype.clear=function(){var t=this,e=this.doc.cm,n=this.line.widgets,i=this.line,r=P(i);if(null!=r&&n){for(var o=0;o<n.length;++o)n[o]==t&&n.splice(o--,1);n.length||(i.widgets=null);var a=je(this);E(i,Math.max(0,i.height-a)),e&&(ui(e,function(){Or(e,i,-a),gi(e,r,"widget")}),Se(e,"lineWidgetCleared",e,this,r))}},us.prototype.changed=function(){var t=this,e=this.height,n=this.doc.cm,i=this.line;this.height=null;var r=je(this)-e;r&&(E(i,i.height+r),n&&ui(n,function(){n.curOp.forceUpdate=!0,Or(n,i,r),Se(n,"lineWidgetChanged",n,t,P(i))}))},Rt(us);var hs=0,ds=function(t,e){this.lines=[],this.type=e,this.doc=t,this.id=++hs};ds.prototype.clear=function(){var t=this;if(!this.explicitlyCleared){var e=this.doc.cm,n=e&&!e.curOp;if(n&&ni(e),Ot(this,"clear")){var i=this.find();i&&Se(this,"clear",i.from,i.to)}for(var r=null,o=null,a=0;a<this.lines.length;++a){var s=t.lines[a],l=X(s.markedSpans,t);e&&!t.collapsed?gi(e,P(s),"text"):e&&(null!=l.to&&(o=P(s)),null!=l.from&&(r=P(s))),s.markedSpans=Y(s.markedSpans,l),null==l.from&&t.collapsed&&!mt(t.doc,s)&&e&&E(s,yn(e.display))}if(e&&this.collapsed&&!e.options.lineWrapping)for(var c=0;c<this.lines.length;++c){var u=ht(t.lines[c]),h=xt(u);h>e.display.maxLineLength&&(e.display.maxLine=u,e.display.maxLineLength=h,e.display.maxLineChanged=!0)}null!=r&&e&&this.collapsed&&pi(e,r,o+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,e&&gr(e.doc)),e&&Se(e,"markerCleared",e,this,r,o),n&&ii(e),this.parent&&this.parent.clear()}},ds.prototype.find=function(t,e){var n=this;null==t&&"bookmark"==this.type&&(t=1);for(var i,r,o=0;o<this.lines.length;++o){var a=n.lines[o],s=X(a.markedSpans,n);if(null!=s.from&&(i=D(e?a:P(a),s.from),t==-1))return i;if(null!=s.to&&(r=D(e?a:P(a),s.to),1==t))return r}return i&&{from:i,to:r}},ds.prototype.changed=function(){var t=this,e=this.find(-1,!0),n=this,i=this.doc.cm;e&&i&&ui(i,function(){var r=e.line,o=P(e.line),a=Ye(i,o);if(a&&(nn(a),i.curOp.selectionChanged=i.curOp.forceUpdate=!0),i.curOp.updateMaxLine=!0,!mt(n.doc,r)&&null!=n.height){var s=n.height;n.height=null;var l=je(n)-s;l&&E(r,r.height+l)}Se(i,"markerChanged",i,t)})},ds.prototype.attachLine=function(t){if(!this.lines.length&&this.doc.cm){var e=this.doc.cm.curOp;e.maybeHiddenMarkers&&d(e.maybeHiddenMarkers,this)!=-1||(e.maybeUnhiddenMarkers||(e.maybeUnhiddenMarkers=[])).push(this)}this.lines.push(t)},ds.prototype.detachLine=function(t){if(this.lines.splice(d(this.lines,t),1),!this.lines.length&&this.doc.cm){var e=this.doc.cm.curOp;(e.maybeHiddenMarkers||(e.maybeHiddenMarkers=[])).push(this)}},Rt(ds);var fs=function(t,e){var n=this;this.markers=t,this.primary=e;for(var i=0;i<t.length;++i)t[i].parent=n};fs.prototype.clear=function(){var t=this;if(!this.explicitlyCleared){this.explicitlyCleared=!0;for(var e=0;e<this.markers.length;++e)t.markers[e].clear();Se(this,"clear")}},fs.prototype.find=function(t,e){return this.primary.find(t,e)},Rt(fs);var ps=0,gs=function(t,e,n,i,r){if(!(this instanceof gs))return new gs(t,e,n,i,r);null==n&&(n=0),cs.call(this,[new ls([new Wa("",null)])]),this.first=n,this.scrollTop=this.scrollLeft=0,this.cantEdit=!1,this.cleanGeneration=1,this.frontier=n;var o=D(n,0);this.sel=Ni(o),this.history=new Wi(null),this.id=++ps,this.modeOption=e,this.lineSep=i,this.direction="rtl"==r?"rtl":"ltr",this.extend=!1,"string"==typeof t&&(t=this.splitLines(t)),zi(this,{from:o,to:o,text:t}),dr(this,Ni(o),Ta)};gs.prototype=x(cs.prototype,{constructor:gs,iter:function(t,e,n){n?this.iterN(t-this.first,e-t,n):this.iterN(this.first,this.first+this.size,t)},insert:function(t,e){for(var n=0,i=0;i<e.length;++i)n+=e[i].height;this.insertInner(t-this.first,e,n)},remove:function(t,e){this.removeInner(t-this.first,e)},getValue:function(t){var e=L(this,this.first,this.first+this.size);return t===!1?e:e.join(t||this.lineSeparator())},setValue:fi(function(t){var e=D(this.first,0),n=this.first+this.size-1;wr(this,{from:e,to:D(n,A(this,n).text.length),text:this.splitLines(t),origin:"setValue",full:!0},!0),this.cm&&this.cm.scrollTo(0,0),dr(this,Ni(e),Ta)}),replaceRange:function(t,e,n,i){e=q(this,e),n=n?q(this,n):e,Mr(this,t,e,n,i)},getRange:function(t,e,n){var i=M(this,q(this,t),q(this,e));return n===!1?i:i.join(n||this.lineSeparator())},getLine:function(t){var e=this.getLineHandle(t);return e&&e.text},getLineHandle:function(t){if(O(this,t))return A(this,t)},getLineNumber:function(t){return P(t)},getLineHandleVisualStart:function(t){return"number"==typeof t&&(t=A(this,t)),ht(t)},lineCount:function(){return this.size},firstLine:function(){return this.first},lastLine:function(){return this.first+this.size-1},clipPos:function(t){return q(this,t)},getCursor:function(t){var e,n=this.sel.primary();return e=null==t||"head"==t?n.head:"anchor"==t?n.anchor:"end"==t||"to"==t||t===!1?n.to():n.from()},listSelections:function(){return this.sel.ranges},somethingSelected:function(){return this.sel.somethingSelected()},setCursor:fi(function(t,e,n){cr(this,q(this,"number"==typeof t?D(t,e||0):t),null,n)}),setSelection:fi(function(t,e,n){cr(this,q(this,t),q(this,e||t),n)}),extendSelection:fi(function(t,e,n){ar(this,q(this,t),e&&q(this,e),n)}),extendSelections:fi(function(t,e){sr(this,B(this,t),e)}),extendSelectionsBy:fi(function(t,e){var n=m(this.sel.ranges,t);sr(this,B(this,n),e)}),setSelections:fi(function(t,e,n){var i=this;if(t.length){for(var r=[],o=0;o<t.length;o++)r[o]=new ss(q(i,t[o].anchor),q(i,t[o].head));null==e&&(e=Math.min(t.length-1,this.sel.primIndex)),dr(this,Pi(r,e),n)}}),addSelection:fi(function(t,e,n){var i=this.sel.ranges.slice(0);i.push(new ss(q(this,t),q(this,e||t))),dr(this,Pi(i,i.length-1),n)}),getSelection:function(t){for(var e,n=this,i=this.sel.ranges,r=0;r<i.length;r++){var o=M(n,i[r].from(),i[r].to());e=e?e.concat(o):o}return t===!1?e:e.join(t||this.lineSeparator())},getSelections:function(t){for(var e=this,n=[],i=this.sel.ranges,r=0;r<i.length;r++){var o=M(e,i[r].from(),i[r].to());t!==!1&&(o=o.join(t||e.lineSeparator())),n[r]=o}return n},replaceSelection:function(t,e,n){for(var i=[],r=0;r<this.sel.ranges.length;r++)i[r]=t;this.replaceSelections(i,e,n||"+input")},replaceSelections:fi(function(t,e,n){for(var i=this,r=[],o=this.sel,a=0;a<o.ranges.length;a++){var s=o.ranges[a];r[a]={from:s.from(),to:s.to(),text:i.splitLines(t[a]),origin:n}}for(var l=e&&"end"!=e&&ji(this,r,e),c=r.length-1;c>=0;c--)wr(i,r[c]);l?hr(this,l):this.cm&&ti(this.cm)}),undo:fi(function(){Cr(this,"undo")}),redo:fi(function(){Cr(this,"redo")}),undoSelection:fi(function(){Cr(this,"undo",!0)}),redoSelection:fi(function(){Cr(this,"redo",!0)}),setExtending:function(t){this.extend=t},getExtending:function(){return this.extend},historySize:function(){for(var t=this.history,e=0,n=0,i=0;i<t.done.length;i++)t.done[i].ranges||++e;for(var r=0;r<t.undone.length;r++)t.undone[r].ranges||++n;return{undo:e,redo:n}},clearHistory:function(){this.history=new Wi(this.history.maxGeneration)},markClean:function(){this.cleanGeneration=this.changeGeneration(!0)},changeGeneration:function(t){return t&&(this.history.lastOp=this.history.lastSelOp=this.history.lastOrigin=null),this.history.generation},isClean:function(t){return this.history.generation==(t||this.cleanGeneration)},getHistory:function(){return{done:rr(this.history.done),undone:rr(this.history.undone)}},setHistory:function(t){var e=this.history=new Wi(this.history.maxGeneration);e.done=rr(t.done.slice(0),null,!0),e.undone=rr(t.undone.slice(0),null,!0)},setGutterMarker:fi(function(t,e,n){return Nr(this,t,"gutter",function(t){var i=t.gutterMarkers||(t.gutterMarkers={});return i[e]=n,!n&&w(i)&&(t.gutterMarkers=null),!0})}),clearGutter:fi(function(t){var e=this;this.iter(function(n){n.gutterMarkers&&n.gutterMarkers[t]&&Nr(e,n,"gutter",function(){return n.gutterMarkers[t]=null,w(n.gutterMarkers)&&(n.gutterMarkers=null),!0})})}),lineInfo:function(t){var e;if("number"==typeof t){if(!O(this,t))return null;if(e=t,t=A(this,t),!t)return null}else if(e=P(t),null==e)return null;return{line:e,handle:t,text:t.text,gutterMarkers:t.gutterMarkers,textClass:t.textClass,bgClass:t.bgClass,wrapClass:t.wrapClass,widgets:t.widgets}},addLineClass:fi(function(e,n,i){return Nr(this,e,"gutter"==n?"gutter":"class",function(e){var r="text"==n?"textClass":"background"==n?"bgClass":"gutter"==n?"gutterClass":"wrapClass";if(e[r]){if(t(i).test(e[r]))return!1;e[r]+=" "+i}else e[r]=i;return!0})}),removeLineClass:fi(function(e,n,i){return Nr(this,e,"gutter"==n?"gutter":"class",function(e){var r="text"==n?"textClass":"background"==n?"bgClass":"gutter"==n?"gutterClass":"wrapClass",o=e[r];if(!o)return!1;if(null==i)e[r]=null;else{var a=o.match(t(i));if(!a)return!1;var s=a.index+a[0].length;e[r]=o.slice(0,a.index)+(a.index&&s!=o.length?" ":"")+o.slice(s)||null}return!0})}),addLineWidget:fi(function(t,e,n){return Rr(this,t,e,n)}),removeLineWidget:function(t){t.clear()},markText:function(t,e,n){return Dr(this,q(this,t),q(this,e),n,n&&n.type||"range")},setBookmark:function(t,e){var n={replacedWith:e&&(null==e.nodeType?e.widget:e),insertLeft:e&&e.insertLeft,clearWhenEmpty:!1,shared:e&&e.shared,handleMouseEvents:e&&e.handleMouseEvents};return t=q(this,t),Dr(this,t,t,n,"bookmark")},findMarksAt:function(t){t=q(this,t);var e=[],n=A(this,t.line).markedSpans;if(n)for(var i=0;i<n.length;++i){var r=n[i];(null==r.from||r.from<=t.ch)&&(null==r.to||r.to>=t.ch)&&e.push(r.marker.parent||r.marker)}return e},findMarks:function(t,e,n){t=q(this,t),e=q(this,e);var i=[],r=t.line;return this.iter(t.line,e.line+1,function(o){var a=o.markedSpans;if(a)for(var s=0;s<a.length;s++){var l=a[s];null!=l.to&&r==t.line&&t.ch>=l.to||null==l.from&&r!=t.line||null!=l.from&&r==e.line&&l.from>=e.ch||n&&!n(l.marker)||i.push(l.marker.parent||l.marker)}++r}),i},getAllMarks:function(){var t=[];return this.iter(function(e){var n=e.markedSpans;if(n)for(var i=0;i<n.length;++i)null!=n[i].from&&t.push(n[i].marker)}),t},posFromIndex:function(t){var e,n=this.first,i=this.lineSeparator().length;return this.iter(function(r){var o=r.text.length+i;return o>t?(e=t,!0):(t-=o,void++n)}),q(this,D(n,e))},indexFromPos:function(t){t=q(this,t);var e=t.ch;if(t.line<this.first||t.ch<0)return 0;var n=this.lineSeparator().length;return this.iter(this.first,t.line,function(t){e+=t.text.length+n}),e},copy:function(t){var e=new gs(L(this,this.first,this.first+this.size),this.modeOption,this.first,this.lineSep,this.direction);return e.scrollTop=this.scrollTop,e.scrollLeft=this.scrollLeft,e.sel=this.sel,e.extend=!1,t&&(e.history.undoDepth=this.history.undoDepth,e.setHistory(this.getHistory())),e},linkedDoc:function(t){t||(t={});var e=this.first,n=this.first+this.size;null!=t.from&&t.from>e&&(e=t.from),null!=t.to&&t.to<n&&(n=t.to);var i=new gs(L(this,e,n),t.mode||this.modeOption,e,this.lineSep,this.direction);return t.sharedHist&&(i.history=this.history),(this.linked||(this.linked=[])).push({doc:i,sharedHist:t.sharedHist}),i.linked=[{doc:this,isParent:!0,sharedHist:t.sharedHist}],Vr(i,jr(this)),i},unlinkDoc:function(t){var e=this;if(t instanceof Ao&&(t=t.doc),this.linked)for(var n=0;n<this.linked.length;++n){var i=e.linked[n];if(i.doc==t){e.linked.splice(n,1),t.unlinkDoc(e),Hr(jr(e));break}}if(t.history==this.history){var r=[t.id];qi(t,function(t){return r.push(t.id)},!0),t.history=new Wi(null),t.history.done=rr(this.history.done,r),t.history.undone=rr(this.history.undone,r)}},iterLinkedDocs:function(t){qi(this,t)},getMode:function(){return this.mode},getEditor:function(){return this.cm},splitLines:function(t){return this.lineSep?t.split(this.lineSep):Va(t)},lineSeparator:function(){return this.lineSep||"\n"},setDirection:fi(function(t){"rtl"!=t&&(t="ltr"),t!=this.direction&&(this.direction=t,this.iter(function(t){return t.order=null}),this.cm&&$i(this.cm))})}),gs.prototype.eachLine=gs.prototype.iter;for(var ms=0,vs=!1,ys={3:"Enter",8:"Backspace",9:"Tab",13:"Enter",16:"Shift",17:"Ctrl",18:"Alt",19:"Pause",20:"CapsLock",27:"Esc",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",44:"PrintScrn",45:"Insert",46:"Delete",59:";",61:"=",91:"Mod",92:"Mod",93:"Mod",106:"*",107:"=",109:"-",110:".",111:"/",127:"Delete",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'",63232:"Up",63233:"Down",63234:"Left",63235:"Right",63272:"Delete",63273:"Home",63275:"End",63276:"PageUp",63277:"PageDown",63302:"Insert"},xs=0;xs<10;xs++)ys[xs+48]=ys[xs+96]=String(xs);for(var bs=65;bs<=90;bs++)ys[bs]=String.fromCharCode(bs);for(var _s=1;_s<=12;_s++)ys[_s+111]=ys[_s+63235]="F"+_s;var ws={};ws.basic={Left:"goCharLeft",Right:"goCharRight",Up:"goLineUp",Down:"goLineDown",End:"goLineEnd",Home:"goLineStartSmart",PageUp:"goPageUp",PageDown:"goPageDown",Delete:"delCharAfter",Backspace:"delCharBefore","Shift-Backspace":"delCharBefore",Tab:"defaultTab","Shift-Tab":"indentAuto",Enter:"newlineAndIndent",Insert:"toggleOverwrite",Esc:"singleSelection"},ws.pcDefault={"Ctrl-A":"selectAll","Ctrl-D":"deleteLine","Ctrl-Z":"undo","Shift-Ctrl-Z":"redo","Ctrl-Y":"redo","Ctrl-Home":"goDocStart","Ctrl-End":"goDocEnd","Ctrl-Up":"goLineUp","Ctrl-Down":"goLineDown","Ctrl-Left":"goGroupLeft","Ctrl-Right":"goGroupRight","Alt-Left":"goLineStart","Alt-Right":"goLineEnd","Ctrl-Backspace":"delGroupBefore","Ctrl-Delete":"delGroupAfter","Ctrl-S":"save","Ctrl-F":"find","Ctrl-G":"findNext","Shift-Ctrl-G":"findPrev","Shift-Ctrl-F":"replace","Shift-Ctrl-R":"replaceAll","Ctrl-[":"indentLess","Ctrl-]":"indentMore","Ctrl-U":"undoSelection","Shift-Ctrl-U":"redoSelection","Alt-U":"redoSelection",fallthrough:"basic"},ws.emacsy={"Ctrl-F":"goCharRight","Ctrl-B":"goCharLeft","Ctrl-P":"goLineUp","Ctrl-N":"goLineDown","Alt-F":"goWordRight","Alt-B":"goWordLeft","Ctrl-A":"goLineStart","Ctrl-E":"goLineEnd","Ctrl-V":"goPageDown","Shift-Ctrl-V":"goPageUp","Ctrl-D":"delCharAfter","Ctrl-H":"delCharBefore","Alt-D":"delWordAfter","Alt-Backspace":"delWordBefore","Ctrl-K":"killLine","Ctrl-T":"transposeChars","Ctrl-O":"openLine"},ws.macDefault={"Cmd-A":"selectAll","Cmd-D":"deleteLine","Cmd-Z":"undo","Shift-Cmd-Z":"redo","Cmd-Y":"redo","Cmd-Home":"goDocStart","Cmd-Up":"goDocStart","Cmd-End":"goDocEnd","Cmd-Down":"goDocEnd","Alt-Left":"goGroupLeft","Alt-Right":"goGroupRight","Cmd-Left":"goLineLeft","Cmd-Right":"goLineRight","Alt-Backspace":"delGroupBefore","Ctrl-Alt-Backspace":"delGroupAfter","Alt-Delete":"delGroupAfter","Cmd-S":"save","Cmd-F":"find","Cmd-G":"findNext","Shift-Cmd-G":"findPrev","Cmd-Alt-F":"replace","Shift-Cmd-Alt-F":"replaceAll","Cmd-[":"indentLess","Cmd-]":"indentMore","Cmd-Backspace":"delWrappedLineLeft","Cmd-Delete":"delWrappedLineRight","Cmd-U":"undoSelection","Shift-Cmd-U":"redoSelection","Ctrl-Up":"goDocStart","Ctrl-Down":"goDocEnd",fallthrough:["basic","emacsy"]},ws.default=ha?ws.macDefault:ws.pcDefault;var Ss,Cs,Ts={selectAll:br,singleSelection:function(t){return t.setSelection(t.getCursor("anchor"),t.getCursor("head"),Ta)},killLine:function(t){return to(t,function(e){if(e.empty()){var n=A(t.doc,e.head.line).text.length;return e.head.ch==n&&e.head.line<t.lastLine()?{from:e.head,to:D(e.head.line+1,0)}:{from:e.head,to:D(e.head.line,n)}}return{from:e.from(),to:e.to()}})},deleteLine:function(t){return to(t,function(e){return{from:D(e.from().line,0),to:q(t.doc,D(e.to().line+1,0))}})},delLineLeft:function(t){return to(t,function(t){return{from:D(t.from().line,0),to:t.from()}})},delWrappedLineLeft:function(t){return to(t,function(e){var n=t.charCoords(e.head,"div").top+5,i=t.coordsChar({left:0,top:n},"div");return{from:i,to:e.from()}})},delWrappedLineRight:function(t){return to(t,function(e){var n=t.charCoords(e.head,"div").top+5,i=t.coordsChar({left:t.display.lineDiv.offsetWidth+100,top:n},"div");return{from:e.from(),to:i}})},undo:function(t){return t.undo()},redo:function(t){return t.redo()},undoSelection:function(t){return t.undoSelection()},redoSelection:function(t){return t.redoSelection()},goDocStart:function(t){return t.extendSelection(D(t.firstLine(),0))},goDocEnd:function(t){return t.extendSelection(D(t.lastLine()))},goLineStart:function(t){return t.extendSelectionsBy(function(e){return eo(t,e.head.line)},{origin:"+move",bias:1})},goLineStartSmart:function(t){return t.extendSelectionsBy(function(e){return io(t,e.head)},{origin:"+move",bias:1})},goLineEnd:function(t){return t.extendSelectionsBy(function(e){return no(t,e.head.line)},{origin:"+move",bias:-1})},goLineRight:function(t){return t.extendSelectionsBy(function(e){var n=t.charCoords(e.head,"div").top+5;return t.coordsChar({left:t.display.lineDiv.offsetWidth+100,top:n},"div")},Aa)},goLineLeft:function(t){return t.extendSelectionsBy(function(e){var n=t.charCoords(e.head,"div").top+5;return t.coordsChar({left:0,top:n},"div")},Aa)},goLineLeftSmart:function(t){return t.extendSelectionsBy(function(e){var n=t.charCoords(e.head,"div").top+5,i=t.coordsChar({left:0,top:n},"div");return i.ch<t.getLine(i.line).search(/\S/)?io(t,e.head):i},Aa)},goLineUp:function(t){return t.moveV(-1,"line")},goLineDown:function(t){return t.moveV(1,"line")},goPageUp:function(t){return t.moveV(-1,"page")},goPageDown:function(t){return t.moveV(1,"page")},goCharLeft:function(t){return t.moveH(-1,"char")},goCharRight:function(t){return t.moveH(1,"char")},goColumnLeft:function(t){return t.moveH(-1,"column")},goColumnRight:function(t){return t.moveH(1,"column")},goWordLeft:function(t){return t.moveH(-1,"word")},goGroupRight:function(t){return t.moveH(1,"group")},goGroupLeft:function(t){return t.moveH(-1,"group");
+},goWordRight:function(t){return t.moveH(1,"word")},delCharBefore:function(t){return t.deleteH(-1,"char")},delCharAfter:function(t){return t.deleteH(1,"char")},delWordBefore:function(t){return t.deleteH(-1,"word")},delWordAfter:function(t){return t.deleteH(1,"word")},delGroupBefore:function(t){return t.deleteH(-1,"group")},delGroupAfter:function(t){return t.deleteH(1,"group")},indentAuto:function(t){return t.indentSelection("smart")},indentMore:function(t){return t.indentSelection("add")},indentLess:function(t){return t.indentSelection("subtract")},insertTab:function(t){return t.replaceSelection("\t")},insertSoftTab:function(t){for(var e=[],n=t.listSelections(),i=t.options.tabSize,r=0;r<n.length;r++){var o=n[r].from(),a=h(t.getLine(o.line),o.ch,i);e.push(p(i-a%i))}t.replaceSelections(e)},defaultTab:function(t){t.somethingSelected()?t.indentSelection("add"):t.execCommand("insertTab")},transposeChars:function(t){return ui(t,function(){for(var e=t.listSelections(),n=[],i=0;i<e.length;i++)if(e[i].empty()){var r=e[i].head,o=A(t.doc,r.line).text;if(o)if(r.ch==o.length&&(r=new D(r.line,r.ch-1)),r.ch>0)r=new D(r.line,r.ch+1),t.replaceRange(o.charAt(r.ch-1)+o.charAt(r.ch-2),D(r.line,r.ch-2),r,"+transpose");else if(r.line>t.doc.first){var a=A(t.doc,r.line-1).text;a&&(r=new D(r.line,1),t.replaceRange(o.charAt(0)+t.doc.lineSeparator()+a.charAt(a.length-1),D(r.line-1,a.length-1),r,"+transpose"))}n.push(new ss(r,r))}t.setSelections(n)})},newlineAndIndent:function(t){return ui(t,function(){for(var e=t.listSelections(),n=e.length-1;n>=0;n--)t.replaceRange(t.doc.lineSeparator(),e[n].anchor,e[n].head,"+input");e=t.listSelections();for(var i=0;i<e.length;i++)t.indentLine(e[i].from().line,null,!0);ti(t)})},openLine:function(t){return t.replaceSelection("\n","start")},toggleOverwrite:function(t){return t.toggleOverwrite()}},ks=new ba,As=null,Ms={toString:function(){return"CodeMirror.Init"}},Ls={},Es={};Ao.defaults=Ls,Ao.optionHandlers=Es;var Ps=[];Ao.defineInitHook=function(t){return Ps.push(t)};var Ns=null,Os=function(t){var e=t.optionHandlers,n=t.helpers={};t.prototype={constructor:t,focus:function(){window.focus(),this.display.input.focus()},setOption:function(t,n){var i=this.options,r=i[t];i[t]==n&&"mode"!=t||(i[t]=n,e.hasOwnProperty(t)&&hi(this,e[t])(this,n,r),Et(this,"optionChange",this,t))},getOption:function(t){return this.options[t]},getDoc:function(){return this.doc},addKeyMap:function(t,e){this.state.keyMaps[e?"push":"unshift"](Jr(t))},removeKeyMap:function(t){for(var e=this.state.keyMaps,n=0;n<e.length;++n)if(e[n]==t||e[n].name==t)return e.splice(n,1),!0},addOverlay:di(function(e,n){var i=e.token?e:t.getMode(this.options,e);if(i.startState)throw new Error("Overlays may not be stateful.");v(this.state.overlays,{mode:i,modeSpec:e,opaque:n&&n.opaque,priority:n&&n.priority||0},function(t){return t.priority}),this.state.modeGen++,pi(this)}),removeOverlay:di(function(t){for(var e=this,n=this.state.overlays,i=0;i<n.length;++i){var r=n[i].modeSpec;if(r==t||"string"==typeof t&&r.name==t)return n.splice(i,1),e.state.modeGen++,void pi(e)}}),indentLine:di(function(t,e,n){"string"!=typeof e&&"number"!=typeof e&&(e=null==e?this.options.smartIndent?"smart":"prev":e?"add":"subtract"),O(this.doc,t)&&Lo(this,t,e,n)}),indentSelection:di(function(t){for(var e=this,n=this.doc.sel.ranges,i=-1,r=0;r<n.length;r++){var o=n[r];if(o.empty())o.head.line>i&&(Lo(e,o.head.line,t,!0),i=o.head.line,r==e.doc.sel.primIndex&&ti(e));else{var a=o.from(),s=o.to(),l=Math.max(i,a.line);i=Math.min(e.lastLine(),s.line-(s.ch?0:1))+1;for(var c=l;c<i;++c)Lo(e,c,t);var u=e.doc.sel.ranges;0==a.ch&&n.length==u.length&&u[r].from().ch>0&&lr(e.doc,r,new ss(a,u[r].to()),Ta)}}}),getTokenAt:function(t,e){return re(this,t,e)},getLineTokens:function(t,e){return re(this,D(t),e,!0)},getTokenTypeAt:function(t){t=q(this.doc,t);var e,n=Jt(this,A(this.doc,t.line)),i=0,r=(n.length-1)/2,o=t.ch;if(0==o)e=n[2];else for(;;){var a=i+r>>1;if((a?n[2*a-1]:0)>=o)r=a;else{if(!(n[2*a+1]<o)){e=n[2*a+2];break}i=a+1}}var s=e?e.indexOf("overlay "):-1;return s<0?e:0==s?null:e.slice(0,s-1)},getModeAt:function(e){var n=this.doc.mode;return n.innerMode?t.innerMode(n,this.getTokenAt(e).state).mode:n},getHelper:function(t,e){return this.getHelpers(t,e)[0]},getHelpers:function(t,e){var i=this,r=[];if(!n.hasOwnProperty(e))return r;var o=n[e],a=this.getModeAt(t);if("string"==typeof a[e])o[a[e]]&&r.push(o[a[e]]);else if(a[e])for(var s=0;s<a[e].length;s++){var l=o[a[e][s]];l&&r.push(l)}else a.helperType&&o[a.helperType]?r.push(o[a.helperType]):o[a.name]&&r.push(o[a.name]);for(var c=0;c<o._global.length;c++){var u=o._global[c];u.pred(a,i)&&d(r,u.val)==-1&&r.push(u.val)}return r},getStateAfter:function(t,e){var n=this.doc;return t=z(n,null==t?n.first+n.size-1:t),te(this,t+1,e)},cursorCoords:function(t,e){var n,i=this.doc.sel.primary();return n=null==t?i.head:"object"==typeof t?q(this.doc,t):t?i.from():i.to(),hn(this,n,e||"page")},charCoords:function(t,e){return un(this,q(this.doc,t),e||"page")},coordsChar:function(t,e){return t=cn(this,t,e||"page"),pn(this,t.left,t.top)},lineAtHeight:function(t,e){return t=cn(this,{top:t,left:0},e||"page").top,N(this.doc,t+this.display.viewOffset)},heightAtLine:function(t,e,n){var i,r=!1;if("number"==typeof t){var o=this.doc.first+this.doc.size-1;t<this.doc.first?t=this.doc.first:t>o&&(t=o,r=!0),i=A(this.doc,t)}else i=t;return ln(this,i,{top:0,left:0},e||"page",n||r).top+(r?this.doc.height-yt(i):0)},defaultTextHeight:function(){return yn(this.display)},defaultCharWidth:function(){return xn(this.display)},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(t,e,n,i,r){var o=this.display;t=hn(this,q(this.doc,t));var a=t.bottom,s=t.left;if(e.style.position="absolute",e.setAttribute("cm-ignore-events","true"),this.display.input.setUneditable(e),o.sizer.appendChild(e),"over"==i)a=t.top;else if("above"==i||"near"==i){var l=Math.max(o.wrapper.clientHeight,this.doc.height),c=Math.max(o.sizer.clientWidth,o.lineSpace.clientWidth);("above"==i||t.bottom+e.offsetHeight>l)&&t.top>e.offsetHeight?a=t.top-e.offsetHeight:t.bottom+e.offsetHeight<=l&&(a=t.bottom),s+e.offsetWidth>c&&(s=c-e.offsetWidth)}e.style.top=a+"px",e.style.left=e.style.right="","right"==r?(s=o.sizer.clientWidth-e.offsetWidth,e.style.right="0px"):("left"==r?s=0:"middle"==r&&(s=(o.sizer.clientWidth-e.offsetWidth)/2),e.style.left=s+"px"),n&&Zn(this,{left:s,top:a,right:s+e.offsetWidth,bottom:a+e.offsetHeight})},triggerOnKeyDown:di(co),triggerOnKeyPress:di(fo),triggerOnKeyUp:ho,execCommand:function(t){if(Ts.hasOwnProperty(t))return Ts[t].call(null,this)},triggerElectric:di(function(t){Oo(this,t)}),findPosH:function(t,e,n,i){var r=this,o=1;e<0&&(o=-1,e=-e);for(var a=q(this.doc,t),s=0;s<e&&(a=jo(r.doc,a,o,n,i),!a.hitSide);++s);return a},moveH:di(function(t,e){var n=this;this.extendSelectionsBy(function(i){return n.display.shift||n.doc.extend||i.empty()?jo(n.doc,i.head,t,e,n.options.rtlMoveVisually):t<0?i.from():i.to()},Aa)}),deleteH:di(function(t,e){var n=this.doc.sel,i=this.doc;n.somethingSelected()?i.replaceSelection("",null,"+delete"):to(this,function(n){var r=jo(i,n.head,t,e,!1);return t<0?{from:r,to:n.head}:{from:n.head,to:r}})}),findPosV:function(t,e,n,i){var r=this,o=1,a=i;e<0&&(o=-1,e=-e);for(var s=q(this.doc,t),l=0;l<e;++l){var c=hn(r,s,"div");if(null==a?a=c.left:c.left=a,s=Vo(r,c,o,n),s.hitSide)break}return s},moveV:di(function(t,e){var n=this,i=this.doc,r=[],o=!this.display.shift&&!i.extend&&i.sel.somethingSelected();if(i.extendSelectionsBy(function(a){if(o)return t<0?a.from():a.to();var s=hn(n,a.head,"div");null!=a.goalColumn&&(s.left=a.goalColumn),r.push(s.left);var l=Vo(n,s,t,e);return"page"==e&&a==i.sel.primary()&&Jn(n,null,un(n,l,"div").top-s.top),l},Aa),r.length)for(var a=0;a<i.sel.ranges.length;a++)i.sel.ranges[a].goalColumn=r[a]}),findWordAt:function(t){var e=this.doc,n=A(e,t.line).text,i=t.ch,r=t.ch;if(n){var o=this.getHelper(t,"wordChars");"before"!=t.sticky&&r!=n.length||!i?++r:--i;for(var a=n.charAt(i),s=_(a,o)?function(t){return _(t,o)}:/\s/.test(a)?function(t){return/\s/.test(t)}:function(t){return!/\s/.test(t)&&!_(t)};i>0&&s(n.charAt(i-1));)--i;for(;r<n.length&&s(n.charAt(r));)++r}return new ss(D(t.line,i),D(t.line,r))},toggleOverwrite:function(t){null!=t&&t==this.state.overwrite||((this.state.overwrite=!this.state.overwrite)?s(this.display.cursorDiv,"CodeMirror-overwrite"):ya(this.display.cursorDiv,"CodeMirror-overwrite"),Et(this,"overwriteToggle",this,this.state.overwrite))},hasFocus:function(){return this.display.input.getField()==a()},isReadOnly:function(){return!(!this.options.readOnly&&!this.doc.cantEdit)},scrollTo:di(function(t,e){null==t&&null==e||ei(this),null!=t&&(this.curOp.scrollLeft=t),null!=e&&(this.curOp.scrollTop=e)}),getScrollInfo:function(){var t=this.display.scroller;return{left:t.scrollLeft,top:t.scrollTop,height:t.scrollHeight-qe(this)-this.display.barHeight,width:t.scrollWidth-qe(this)-this.display.barWidth,clientHeight:Be(this),clientWidth:Ge(this)}},scrollIntoView:di(function(t,e){if(null==t?(t={from:this.doc.sel.primary().head,to:null},null==e&&(e=this.options.cursorScrollMargin)):"number"==typeof t?t={from:D(t,0),to:null}:null==t.from&&(t={from:t,to:null}),t.to||(t.to=t.from),t.margin=e||0,null!=t.from.line)ei(this),this.curOp.scrollToPos=t;else{var n=Kn(this,{left:Math.min(t.from.left,t.to.left),top:Math.min(t.from.top,t.to.top)-t.margin,right:Math.max(t.from.right,t.to.right),bottom:Math.max(t.from.bottom,t.to.bottom)+t.margin});this.scrollTo(n.scrollLeft,n.scrollTop)}}),setSize:di(function(t,e){var n=this,i=function(t){return"number"==typeof t||/^\d+$/.test(String(t))?t+"px":t};null!=t&&(this.display.wrapper.style.width=i(t)),null!=e&&(this.display.wrapper.style.height=i(e)),this.options.lineWrapping&&rn(this);var r=this.display.viewFrom;this.doc.iter(r,this.display.viewTo,function(t){if(t.widgets)for(var e=0;e<t.widgets.length;e++)if(t.widgets[e].noHScroll){gi(n,r,"widget");break}++r}),this.curOp.forceUpdate=!0,Et(this,"refresh",this)}),operation:function(t){return ui(this,t)},refresh:di(function(){var t=this.display.cachedTextHeight;pi(this),this.curOp.forceUpdate=!0,on(this),this.scrollTo(this.doc.scrollLeft,this.doc.scrollTop),Ai(this),(null==t||Math.abs(t-yn(this.display))>.5)&&Sn(this),Et(this,"refresh",this)}),swapDoc:di(function(t){var e=this.doc;return e.cm=null,Gi(this,t),on(this),this.display.input.reset(),this.scrollTo(t.scrollLeft,t.scrollTop),this.curOp.forceScroll=!0,Se(this,"swapDoc",this,e),e}),getInputField:function(){return this.display.input.getField()},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},Rt(t),t.registerHelper=function(e,i,r){n.hasOwnProperty(e)||(n[e]=t[e]={_global:[]}),n[e][i]=r},t.registerGlobalHelper=function(e,i,r,o){t.registerHelper(e,i,o),n[e]._global.push({pred:r,val:o})}},Rs=function(t){this.cm=t,this.lastAnchorNode=this.lastAnchorOffset=this.lastFocusNode=this.lastFocusOffset=null,this.polling=new ba,this.composing=null,this.gracePeriod=!1,this.readDOMTimeout=null};Rs.prototype.init=function(t){function e(t){if(!Pt(r,t)){if(r.somethingSelected())Eo({lineWise:!1,text:r.getSelections()}),"cut"==t.type&&r.replaceSelection("",null,"cut");else{if(!r.options.lineWiseCopyCut)return;var e=Ro(r);Eo({lineWise:!0,text:e.text}),"cut"==t.type&&r.operation(function(){r.setSelections(e.ranges,0,Ta),r.replaceSelection("",null,"cut")})}if(t.clipboardData){t.clipboardData.clearData();var n=Ns.text.join("\n");if(t.clipboardData.setData("Text",n),t.clipboardData.getData("Text")==n)return void t.preventDefault()}var a=Io(),s=a.firstChild;r.display.lineSpace.insertBefore(a,r.display.lineSpace.firstChild),s.value=Ns.text.join("\n");var l=document.activeElement;xa(s),setTimeout(function(){r.display.lineSpace.removeChild(a),l.focus(),l==o&&i.showPrimarySelection()},50)}}var n=this,i=this,r=i.cm,o=i.div=t.lineDiv;Do(o,r.options.spellcheck),Ia(o,"paste",function(t){Pt(r,t)||No(t,r)||ta<=11&&setTimeout(hi(r,function(){return n.updateFromDOM()}),20)}),Ia(o,"compositionstart",function(t){n.composing={data:t.data,done:!1}}),Ia(o,"compositionupdate",function(t){n.composing||(n.composing={data:t.data,done:!1})}),Ia(o,"compositionend",function(t){n.composing&&(t.data!=n.composing.data&&n.readFromDOMSoon(),n.composing.done=!0)}),Ia(o,"touchstart",function(){return i.forceCompositionEnd()}),Ia(o,"input",function(){n.composing||n.readFromDOMSoon()}),Ia(o,"copy",e),Ia(o,"cut",e)},Rs.prototype.prepareSelection=function(){var t=An(this.cm,!1);return t.focus=this.cm.state.focused,t},Rs.prototype.showSelection=function(t,e){t&&this.cm.display.view.length&&((t.focus||e)&&this.showPrimarySelection(),this.showMultipleSelections(t))},Rs.prototype.showPrimarySelection=function(){var t=window.getSelection(),e=this.cm,n=e.doc.sel.primary(),i=n.from(),r=n.to();if(e.display.viewTo==e.display.viewFrom||i.line>=e.display.viewTo||r.line<e.display.viewFrom)return void t.removeAllRanges();var o=Go(e,t.anchorNode,t.anchorOffset),a=Go(e,t.focusNode,t.focusOffset);if(!o||o.bad||!a||a.bad||0!=I(F(o,a),i)||0!=I(H(o,a),r)){var s=e.display.view,l=i.line>=e.display.viewFrom&&Ho(e,i)||{node:s[0].measure.map[2],offset:0},c=r.line<e.display.viewTo&&Ho(e,r);if(!c){var u=s[s.length-1].measure,h=u.maps?u.maps[u.maps.length-1]:u.map;c={node:h[h.length-1],offset:h[h.length-2]-h[h.length-3]}}if(!l||!c)return void t.removeAllRanges();var d,f=t.rangeCount&&t.getRangeAt(0);try{d=ga(l.node,l.offset,c.offset,c.node)}catch(t){}d&&(!Yo&&e.state.focused?(t.collapse(l.node,l.offset),d.collapsed||(t.removeAllRanges(),t.addRange(d))):(t.removeAllRanges(),t.addRange(d)),f&&null==t.anchorNode?t.addRange(f):Yo&&this.startGracePeriod()),this.rememberSelection()}},Rs.prototype.startGracePeriod=function(){var t=this;clearTimeout(this.gracePeriod),this.gracePeriod=setTimeout(function(){t.gracePeriod=!1,t.selectionChanged()&&t.cm.operation(function(){return t.cm.curOp.selectionChanged=!0})},20)},Rs.prototype.showMultipleSelections=function(t){n(this.cm.display.cursorDiv,t.cursors),n(this.cm.display.selectionDiv,t.selection)},Rs.prototype.rememberSelection=function(){var t=window.getSelection();this.lastAnchorNode=t.anchorNode,this.lastAnchorOffset=t.anchorOffset,this.lastFocusNode=t.focusNode,this.lastFocusOffset=t.focusOffset},Rs.prototype.selectionInEditor=function(){var t=window.getSelection();if(!t.rangeCount)return!1;var e=t.getRangeAt(0).commonAncestorContainer;return o(this.div,e)},Rs.prototype.focus=function(){"nocursor"!=this.cm.options.readOnly&&(this.selectionInEditor()||this.showSelection(this.prepareSelection(),!0),this.div.focus())},Rs.prototype.blur=function(){this.div.blur()},Rs.prototype.getField=function(){return this.div},Rs.prototype.supportsTouch=function(){return!0},Rs.prototype.receivedFocus=function(){function t(){e.cm.state.focused&&(e.pollSelection(),e.polling.set(e.cm.options.pollInterval,t))}var e=this;this.selectionInEditor()?this.pollSelection():ui(this.cm,function(){return e.cm.curOp.selectionChanged=!0}),this.polling.set(this.cm.options.pollInterval,t)},Rs.prototype.selectionChanged=function(){var t=window.getSelection();return t.anchorNode!=this.lastAnchorNode||t.anchorOffset!=this.lastAnchorOffset||t.focusNode!=this.lastFocusNode||t.focusOffset!=this.lastFocusOffset},Rs.prototype.pollSelection=function(){if(null==this.readDOMTimeout&&!this.gracePeriod&&this.selectionChanged()){var t=window.getSelection(),e=this.cm;if(ca&&ia&&this.cm.options.gutters.length&&Fo(t.anchorNode))return this.cm.triggerOnKeyDown({type:"keydown",keyCode:8,preventDefault:Math.abs}),this.blur(),void this.focus();if(!this.composing){this.rememberSelection();var n=Go(e,t.anchorNode,t.anchorOffset),i=Go(e,t.focusNode,t.focusOffset);n&&i&&ui(e,function(){dr(e.doc,Ni(n,i),Ta),(n.bad||i.bad)&&(e.curOp.selectionChanged=!0)})}}},Rs.prototype.pollContent=function(){null!=this.readDOMTimeout&&(clearTimeout(this.readDOMTimeout),this.readDOMTimeout=null);var t=this.cm,e=t.display,n=t.doc.sel.primary(),i=n.from(),r=n.to();if(0==i.ch&&i.line>t.firstLine()&&(i=D(i.line-1,A(t.doc,i.line-1).length)),r.ch==A(t.doc,r.line).text.length&&r.line<t.lastLine()&&(r=D(r.line+1,0)),i.line<e.viewFrom||r.line>e.viewTo-1)return!1;var o,a,s;i.line==e.viewFrom||0==(o=Tn(t,i.line))?(a=P(e.view[0].line),s=e.view[0].node):(a=P(e.view[o].line),s=e.view[o-1].node.nextSibling);var l,c,u=Tn(t,r.line);if(u==e.view.length-1?(l=e.viewTo-1,c=e.lineDiv.lastChild):(l=P(e.view[u+1].line)-1,c=e.view[u+1].node.previousSibling),!s)return!1;for(var h=t.doc.splitLines(qo(t,s,c,a,l)),d=M(t.doc,D(a,0),D(l,A(t.doc,l).text.length));h.length>1&&d.length>1;)if(g(h)==g(d))h.pop(),d.pop(),l--;else{if(h[0]!=d[0])break;h.shift(),d.shift(),a++}for(var f=0,p=0,m=h[0],v=d[0],y=Math.min(m.length,v.length);f<y&&m.charCodeAt(f)==v.charCodeAt(f);)++f;for(var x=g(h),b=g(d),_=Math.min(x.length-(1==h.length?f:0),b.length-(1==d.length?f:0));p<_&&x.charCodeAt(x.length-p-1)==b.charCodeAt(b.length-p-1);)++p;if(1==h.length&&1==d.length&&a==i.line)for(;f&&f>i.ch&&x.charCodeAt(x.length-p-1)==b.charCodeAt(b.length-p-1);)f--,p++;h[h.length-1]=x.slice(0,x.length-p).replace(/^\u200b+/,""),h[0]=h[0].slice(f).replace(/\u200b+$/,"");var w=D(a,f),S=D(l,d.length?g(d).length-p:0);return h.length>1||h[0]||I(w,S)?(Mr(t.doc,h,w,S,"+input"),!0):void 0},Rs.prototype.ensurePolled=function(){this.forceCompositionEnd()},Rs.prototype.reset=function(){this.forceCompositionEnd()},Rs.prototype.forceCompositionEnd=function(){this.composing&&(clearTimeout(this.readDOMTimeout),this.composing=null,this.updateFromDOM(),this.div.blur(),this.div.focus())},Rs.prototype.readFromDOMSoon=function(){var t=this;null==this.readDOMTimeout&&(this.readDOMTimeout=setTimeout(function(){if(t.readDOMTimeout=null,t.composing){if(!t.composing.done)return;t.composing=null}t.updateFromDOM()},80))},Rs.prototype.updateFromDOM=function(){var t=this;!this.cm.isReadOnly()&&this.pollContent()||ui(this.cm,function(){return pi(t.cm)})},Rs.prototype.setUneditable=function(t){t.contentEditable="false"},Rs.prototype.onKeyPress=function(t){0!=t.charCode&&(t.preventDefault(),this.cm.isReadOnly()||hi(this.cm,Po)(this.cm,String.fromCharCode(null==t.charCode?t.keyCode:t.charCode),0))},Rs.prototype.readOnlyChanged=function(t){this.div.contentEditable=String("nocursor"!=t)},Rs.prototype.onContextMenu=function(){},Rs.prototype.resetPosition=function(){},Rs.prototype.needsContentAttribute=!0;var Ds=function(t){this.cm=t,this.prevInput="",this.pollingFast=!1,this.polling=new ba,this.inaccurateSelection=!1,this.hasSelection=!1,this.composing=null};Ds.prototype.init=function(t){function e(t){if(!Pt(r,t)){if(r.somethingSelected())Eo({lineWise:!1,text:r.getSelections()}),i.inaccurateSelection&&(i.prevInput="",i.inaccurateSelection=!1,a.value=Ns.text.join("\n"),xa(a));else{if(!r.options.lineWiseCopyCut)return;var e=Ro(r);Eo({lineWise:!0,text:e.text}),"cut"==t.type?r.setSelections(e.ranges,null,Ta):(i.prevInput="",a.value=e.text.join("\n"),xa(a))}"cut"==t.type&&(r.state.cutIncoming=!0)}}var n=this,i=this,r=this.cm,o=this.wrapper=Io(),a=this.textarea=o.firstChild;t.wrapper.insertBefore(o,t.wrapper.firstChild),la&&(a.style.width="0px"),Ia(a,"input",function(){Jo&&ta>=9&&n.hasSelection&&(n.hasSelection=null),i.poll()}),Ia(a,"paste",function(t){Pt(r,t)||No(t,r)||(r.state.pasteIncoming=!0,i.fastPoll())}),Ia(a,"cut",e),Ia(a,"copy",e),Ia(t.scroller,"paste",function(e){Ve(t,e)||Pt(r,e)||(r.state.pasteIncoming=!0,i.focus())}),Ia(t.lineSpace,"selectstart",function(e){Ve(t,e)||Dt(e)}),Ia(a,"compositionstart",function(){var t=r.getCursor("from");i.composing&&i.composing.range.clear(),i.composing={start:t,range:r.markText(t,r.getCursor("to"),{className:"CodeMirror-composing"})}}),Ia(a,"compositionend",function(){i.composing&&(i.poll(),i.composing.range.clear(),i.composing=null)})},Ds.prototype.prepareSelection=function(){var t=this.cm,e=t.display,n=t.doc,i=An(t);if(t.options.moveInputWithCursor){var r=hn(t,n.sel.primary().head,"div"),o=e.wrapper.getBoundingClientRect(),a=e.lineDiv.getBoundingClientRect();i.teTop=Math.max(0,Math.min(e.wrapper.clientHeight-10,r.top+a.top-o.top)),i.teLeft=Math.max(0,Math.min(e.wrapper.clientWidth-10,r.left+a.left-o.left))}return i},Ds.prototype.showSelection=function(t){var e=this.cm,i=e.display;n(i.cursorDiv,t.cursors),n(i.selectionDiv,t.selection),null!=t.teTop&&(this.wrapper.style.top=t.teTop+"px",this.wrapper.style.left=t.teLeft+"px")},Ds.prototype.reset=function(t){if(!this.contextMenuPending){var e,n,i=this.cm,r=i.doc;if(i.somethingSelected()){this.prevInput="";var o=r.sel.primary();e=Fa&&(o.to().line-o.from().line>100||(n=i.getSelection()).length>1e3);var a=e?"-":n||i.getSelection();this.textarea.value=a,i.state.focused&&xa(this.textarea),Jo&&ta>=9&&(this.hasSelection=a)}else t||(this.prevInput=this.textarea.value="",Jo&&ta>=9&&(this.hasSelection=null));this.inaccurateSelection=e}},Ds.prototype.getField=function(){return this.textarea},Ds.prototype.supportsTouch=function(){return!1},Ds.prototype.focus=function(){if("nocursor"!=this.cm.options.readOnly&&(!ua||a()!=this.textarea))try{this.textarea.focus()}catch(t){}},Ds.prototype.blur=function(){this.textarea.blur()},Ds.prototype.resetPosition=function(){this.wrapper.style.top=this.wrapper.style.left=0},Ds.prototype.receivedFocus=function(){this.slowPoll()},Ds.prototype.slowPoll=function(){var t=this;this.pollingFast||this.polling.set(this.cm.options.pollInterval,function(){t.poll(),t.cm.state.focused&&t.slowPoll()})},Ds.prototype.fastPoll=function(){function t(){var i=n.poll();i||e?(n.pollingFast=!1,n.slowPoll()):(e=!0,n.polling.set(60,t))}var e=!1,n=this;n.pollingFast=!0,n.polling.set(20,t)},Ds.prototype.poll=function(){var t=this,e=this.cm,n=this.textarea,i=this.prevInput;if(this.contextMenuPending||!e.state.focused||Ha(n)&&!i&&!this.composing||e.isReadOnly()||e.options.disableInput||e.state.keySeq)return!1;var r=n.value;if(r==i&&!e.somethingSelected())return!1;if(Jo&&ta>=9&&this.hasSelection===r||ha&&/[\uf700-\uf7ff]/.test(r))return e.display.input.reset(),!1;if(e.doc.sel==e.display.selForContextMenu){var o=r.charCodeAt(0);if(8203!=o||i||(i="​"),8666==o)return this.reset(),this.cm.execCommand("undo")}for(var a=0,s=Math.min(i.length,r.length);a<s&&i.charCodeAt(a)==r.charCodeAt(a);)++a;return ui(e,function(){Po(e,r.slice(a),i.length-a,null,t.composing?"*compose":null),r.length>1e3||r.indexOf("\n")>-1?n.value=t.prevInput="":t.prevInput=r,t.composing&&(t.composing.range.clear(),t.composing.range=e.markText(t.composing.start,e.getCursor("to"),{className:"CodeMirror-composing"}))}),!0},Ds.prototype.ensurePolled=function(){this.pollingFast&&this.poll()&&(this.pollingFast=!1)},Ds.prototype.onKeyPress=function(){Jo&&ta>=9&&(this.hasSelection=null),this.fastPoll()},Ds.prototype.onContextMenu=function(t){function e(){if(null!=a.selectionStart){var t=r.somethingSelected(),e="​"+(t?a.value:"");a.value="⇚",a.value=e,i.prevInput=t?"":"​",a.selectionStart=1,a.selectionEnd=e.length,o.selForContextMenu=r.doc.sel}}function n(){if(i.contextMenuPending=!1,i.wrapper.style.cssText=h,a.style.cssText=u,Jo&&ta<9&&o.scrollbars.setScrollTop(o.scroller.scrollTop=l),null!=a.selectionStart){(!Jo||Jo&&ta<9)&&e();var t=0,n=function(){o.selForContextMenu==r.doc.sel&&0==a.selectionStart&&a.selectionEnd>0&&"​"==i.prevInput?hi(r,br)(r):t++<10?o.detectingSelectAll=setTimeout(n,500):(o.selForContextMenu=null,o.input.reset())};o.detectingSelectAll=setTimeout(n,200)}}var i=this,r=i.cm,o=r.display,a=i.textarea,s=Cn(r,t),l=o.scroller.scrollTop;if(s&&!ra){var c=r.options.resetSelectionOnContextMenu;c&&r.doc.sel.contains(s)==-1&&hi(r,dr)(r.doc,Ni(s),Ta);var u=a.style.cssText,h=i.wrapper.style.cssText;i.wrapper.style.cssText="position: absolute";var d=i.wrapper.getBoundingClientRect();a.style.cssText="position: absolute; width: 30px; height: 30px;\n      top: "+(t.clientY-d.top-5)+"px; left: "+(t.clientX-d.left-5)+"px;\n      z-index: 1000; background: "+(Jo?"rgba(255, 255, 255, .05)":"transparent")+";\n      outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);";var f;if(ea&&(f=window.scrollY),o.input.focus(),ea&&window.scrollTo(null,f),o.input.reset(),r.somethingSelected()||(a.value=i.prevInput=" "),i.contextMenuPending=!0,o.selForContextMenu=r.doc.sel,clearTimeout(o.detectingSelectAll),Jo&&ta>=9&&e(),va){Vt(t);var p=function(){Lt(window,"mouseup",p),setTimeout(n,20)};Ia(window,"mouseup",p)}else setTimeout(n,50)}},Ds.prototype.readOnlyChanged=function(t){t||this.reset()},Ds.prototype.setUneditable=function(){},Ds.prototype.needsContentAttribute=!1,So(Ao),Os(Ao);var Is="iter insert remove copy getEditor constructor".split(" ");for(var js in gs.prototype)gs.prototype.hasOwnProperty(js)&&d(Is,js)<0&&(Ao.prototype[js]=function(t){return function(){return t.apply(this.doc,arguments)}}(gs.prototype[js]));return Rt(gs),Ao.inputStyles={textarea:Ds,contenteditable:Rs},Ao.defineMode=function(t){Ao.defaults.mode||"null"==t||(Ao.defaults.mode=t),Bt.apply(this,arguments)},Ao.defineMIME=$t,Ao.defineMode("null",function(){return{token:function(t){return t.skipToEnd()}}}),Ao.defineMIME("text/plain","null"),Ao.defineExtension=function(t,e){Ao.prototype[t]=e},Ao.defineDocExtension=function(t,e){gs.prototype[t]=e},Ao.fromTextArea=$o,Wo(Ao),Ao.version="5.25.2",Ao}),define("chatroom",["jquery","form","cm/lib/codemirror","utils","config","modal","links","laconic"],function(t,e,n,i,r,o,a){!function(t){function s(e,i){var r=t.el.pre({class:"cm-s-prolog"});n.runMode(i,"prolog",r),e.attr("title",t.el.div(r).innerHTML),e.data("html",!0),e.data("placement","bottom"),e.data("trigger","hover"),e.tooltip()}function l(t,n,i){return e.widgets.glyphIconButton(t,{class:"btn-xs "+n,title:i})}function c(t){var e=(new Date).getTime()/1e3-t;return e<20?"just now":e<60?"less then a minute ago":(e=Math.round(e/60),e<120?e+" minutes ago":(e=Math.round(e/60),e<48?e+" hours ago":(e=Math.round(e/24),e<360?e+" days ago":(e=Math.round(e/365),e+" years ago"))))}function u(t){function e(t){return function(e,n){return"<"+t+">"+n+"</"+t+">"}}for(var n=[{regex:/[a-z][a-zA-Z0-9_]*\/[0-9]/g,func:function(t){return'<a class="builtin" href="/pldoc/man?predicate='+t+'">'+t+"</a>"}},{regex:/[a-zA-Z0-9_-]+\.(pl|swinb)\b/g,func:function(t){return'<a class="builtin" href="'+r.http.locations.web_storage+t+'">'+t+"</a>"}},{regex:/`(.)`/g,func:function(t,e){return"<code>"+e+"</code>"}},{regex:/`([\w\[\{\(][^`]*[\w\]\}\)])`/g,func:function(t,e){return"<code>"+e+"</code>"}},{delim:"\\*",a:"\\*\\b",z:"\\b\\*",tag:"b"},{delim:"__",a:"\\b__",z:"__\\b",tag:"b"},{delim:"_",a:"\\b_",z:"_\\b",tag:"i"}],i=0;i<n.length;i++){var o=n[i];o.regex?t=t.replace(o.regex,o.func):o.delim&&(t=t.replace(RegExp(o.a+"([^"+o.delim+"]+)"+o.z,"g"),e(o.tag)))}return t}var h="chatroom",d=0,f={_init:function(n){return this.each(function(){var i,s,l,c,u=t(this),f={messages:[]},p="gitty:"+r.swish.hangout;f.docid=n.docid,u.data(h,f),u.addClass("chatroom each-minute swish-event-receiver"),i=t.el.div({class:"btn-group dropup"},s=t.el.button({type:"button",class:"btn btn-primary btn-xs"},"Send"),t.el.button({type:"button",class:"btn btn-info btn-xs dropdown-toggle","data-toggle":"dropdown","aria-haspopup":!0,"aria-expanded":!1},t.el.span({class:"caret"})),ul=t.el.ul({class:"dropdown-menu pull-right"})),c=t.el.textarea({placeholder:"Type chat message here ..."}),u.append(t.el.div({class:"chat-conversation"},t.el.div({class:"chat-outer-wrapper"},t.el.div({class:"chat-inner-wrapper"},t.el.div({class:"chat-content-wrapper"},t.el.div({class:"chat-stretch"}),t.el.div({class:"chat-content"}))))),l=t.el.span({class:"glyphicon menu glyphicon-remove-circle"}),t.el.div({class:"chat-input"},t.el.table({class:"chat-input"},t.el.tr(t.el.td({class:"chat-text"},c),t.el.td({class:"chat-send"},i))))),t(s).on("click",function(){u.chatroom("send")}),e.widgets.populateMenu(t(i),u,{"Include my query":function(){var e=t(".prolog-query-editor").queryEditor("getQuery");""!=e.trim()?this.chatroom("send",{payload:[{type:"query",query:e}]}):o.alert("Your query editor is empty")}}),n.docid!=p&&e.widgets.populateMenu(t(i),u,{"Broadcast to hangout":function(){this.chatroom("send",{broadcast:"gitty:"+r.swish.hangout})}}),t(l).on("click",function(){u.tile("close")}),n.oneline?t(c).keypress(function(t){if(13==t.which)return u.chatroom("send"),t.preventDefault(),!1}):t(c).on("keyup",function(){var e,n=t(this);0!=n.scrollTop()&&(e=n.height())<500&&(e+=parseFloat(n.css("line-height")),n.animate({height:e},200,function(){u.chatroom("scrollToBottom")}))}),n.docid==p&&t(c).focus(function(){if(""==t(c).val()){var e=(new Date).getTime();e-d>3e5&&(d=e,o.help({file:"hangout.html",notagain:"hangout"}))}}),u.on("click",".inner button",function(e){var n,i=t(e.target).closest("button");return(n=i.data("commit"))?u.closest(".swish").swish("playFile",n):(n=i.data("diff"))&&u.chatroom("diff",n),e.preventDefault(),!1}),u.on("click",".chat-content a",a.followLink),u.on("pane.resize",function(){u.chatroom("scrollToBottom",!0)}),u.on("minute",function(){u.chatroom("update_time")}),u.on("activate-tab",function(){u.chatroom("read_until")}),t(c).height(parseFloat(t(c).css("line-height"))+5),u.chatroom("load_from_server")})},close:function(){return this.tile("close")},send:function(e){e=e||{};var n=this.data(h),a={type:"chat-message"},s=this.find("textarea");a.text=s.val().trim();var l=e.payload||[],c=!1,u=this.chatroom("storage").storage("getSelection"),d="gitty:"+r.swish.hangout;u&&l.push({type:"selection",selection:u});for(var f=0;f<l.length;f++)if("about"!=l[f].type){c=!0;break}e.broadcast||n.docid==d||0!=n.messages.length||(e.broadcast=d),""!=a.text||c?(a.uuid=i.generateUUID(),a.payload=l,a.docid=e.docid||n.docid,e.class&&(a.class=e.class),1==e.clear?this.chatroom("clear"):n.clear=a.uuid,t("#chat").chat("send",a),e.broadcast&&(a.payload.unshift({type:"about",docid:n.docid}),a.docid=e.broadcast,t("#chat").chat("send",a))):e.payload||o.alert("No message to send")},storage:function(){return this.closest(".tab-pane").find(".storage")},is_self:function(e){var n=e.user||{},i=r.swish.user||{},o=t("#chat").chat("self");return n.id&&n.id==o.id||n.avatar&&n.avatar==o.avatar||n.profile_id&&n.profile_id==i.profile_id},read_until:function(e){var n;void 0==e&&(n=this.data(h))&&n.messages.length>0&&(e=n.messages[n.messages.length-1]),e&&(t("#chat").chat("read_until",e.docid,e.time),t(".chat-bell").chatbell("read_until",e.docid,e.time))},render:function(e){var n=e.user||{};r.swish.user||{};if(void 0===e.is_self&&(e.is_self=this.chatroom("is_self",e)),elem=t(t.el.div({class:"chat-message"+(e.is_self?" self":""),"data-userid":n.wsid})),!e.is_self&&n.avatar&&elem.append(t.el.img({class:"avatar",src:n.avatar})),elem.append(t.el.span({class:"chat-sender"},e.is_self?"Me":n.name)),e.time){var i=new Date(1e3*e.time).toLocaleString();elem.append(t.el.span({class:"chat-time",title:i},"(",c(e.time),") ")),elem.data("time",e.time)}if(e.payload)for(var o=0;o<e.payload.length;o++){var a=e.payload[o];p[a.type]?p[a.type].call(elem,a):console.log(a)}var s;if(e.html?s=e.html:e.text&&(s=t(t.el.span(e.text)).html(),s=u(s)),s){var l=t.el.span({class:"chat-message html"});t(l).html(s),elem.append(l)}return elem},add:function(t,e){var n=this.data(h);if(t.docid==n.docid){var i;void 0==e&&(e=this.is(":visible")),void 0==t.is_self&&(t.is_self=this.chatroom("is_self",t)),n.messages.push(t),i=this.chatroom("render",t),this.find(".chat-content").append(i),this.chatroom("scrollToBottom"),e&&this.chatroom("read_until",t)}return t.uuid&&t.uuid==n.clear&&this.chatroom("clear"),this},clear:function(){var t=this.find("textarea");t.val(""),t.height(parseFloat(t.css("line-height")+5))},load_from_server:function(e){var n=this.data(h),i=t(this);return t.get(r.http.locations.chat_messages,{docid:n.docid},function(t){if(0==t.length)e?i.chatroom("close"):n.docid!="gitty:"+r.swish.hangout&&o.help({file:"newchat.html",notagain:"newchat"});else for(var a=0;a<t.length;a++)i.chatroom("add",t[a],a==t.length-1);
+}).fail(function(t,e,n){o.ajaxError(t)}),this},update_time:function(){return this.find(".chat-message").each(function(){var e,n=t(this);(e=n.data("time"))&&n.find(".chat-time").text("("+c(e)+") ")})},diff:function(n){function i(t){o.ajaxError(t)}t.ajax({url:r.http.locations.web_storage+n.from,data:{format:"raw"},success:function(o){t.ajax({url:r.http.locations.web_storage+n.to,data:{format:"raw"},success:function(i){function r(){var e=t.el.div();this.append(e),t(e).diff({base:o,head:i,baseName:n.name+" (before)",headName:n.name+" (after)"}),this.parents("div.modal-dialog").addClass("modal-wide")}e.showDialog({title:"Update differences",body:r})},error:i})},error:i})},docid:function(t,e){var n=this.data(h);n.docid!=t&&(this.find(".chat-content").html(""),n.docid=t,this.chatroom("load_from_server",e))},rooms:function(e){var n=[];return this.each(function(){var i=t(this),r=i.data(h);r.docid==e&&n.push(this)}),t(n)},scrollToBottom:function(e){return this.each(function(){var n=t(this);scroll=n.find("div.chat-inner-wrapper"),wrap=scroll.find("div.chat-content-wrapper"),content=wrap.find("div.chat-content");var i=content[0].scrollHeight,r=wrap.height()-i-8;(r>0||e!==!0)&&(wrap.find("div.chat-stretch").height(r>0?r:0),scroll.scrollTop(i))}),this}},p={selection:function(n){var i=t().storage("getSelectionLabel",n.selection),r=t(t.el.button({class:"btn btn-xs btn-primary"},i+" ",e.widgets.glyphIcon("eye-open")));r.on("click",function(e){t(e.target).chatroom("storage").storage("restoreSelection",n.selection)}),this.append(" ",r," ")},query:function(n){var r=t(t.el.button({class:"btn btn-xs btn-primary"},"Query ",e.widgets.glyphIcon("download")));r.on("click",function(){var e=t(".prolog-query-editor");e.queryEditor("setQuery",n.query),i.flash(e.find(".CodeMirror"))}),s(r,n.query),this.append(" ",r," ")},update:function(e){var n,i,r;this.append(" ",t.el.span({class:"update"},n=l("play","btn-primary","Open old version"),i=l("zoom-in","btn-info","View changes"),r=l("play","btn-primary","Open new version"))," "),t(n).data("commit",e.previous),t(i).data("diff",{from:e.previous,to:e.commit,name:e.name}),t(r).data("commit",e.commit)},about:function(e){var n=e.docid.replace("gitty:","");this.append(" ",t.el.a({href:r.http.locations.web_storage+n,class:"store btn btn-primary btn-xs"},n)," ")}};t.fn.chatroom=function(e){return f[e]?f[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery."+h):f._init.apply(this,arguments)}}(jQuery)}),define("chatbell",["jquery","form","modal","config","preferences","laconic","chatroom"],function(t,e,n,i,r){!function(t){var o="chatbell",a={_init:function(n){return n=n||{},this.each(function(){var i=t(this),r=t.extend({},n);r.docid=n.docid||i.data("document"),i.data(o,r),i.addClass("chat-bell"),i.attr("title","Messages available"),i.append(e.widgets.glyphIcon("bell"),t.el.span({class:"chat-bell-count"},"-")),i.chatbell("update")})},chats:function(t){function e(){i.text("-"),r.removeClass("chat-available chat-alert"),r.attr("title",n.empty_title||"No messages available")}var n=this.data(o),i=this.find(".chat-bell-count"),r=this;if(void 0==t)delete n.docid,delete n.count,delete n.total,e();else{var a=void 0==t.count?t.total:t.count;t.docid&&(n.docid=t.docid),t.count&&(n.count=t.count),t.total&&(n.total=t.total),t.total>0?(this.addClass("chat-available"),a>0?(i.text(a),this.addClass("chat-alert"),this.attr("title",a+" new messages")):(i.text(t.total),this.removeClass("chat-alert"),this.attr("title",t.total+" old messages"))):e()}return this},"chats++":function(t){var e=this.data(o);return void 0!=e.total?e.total++:e.total=1,void 0!=e.count&&e.count++,void 0!=t&&(e.docid=t),e.total&&this.chatbell("chats",{total:e.total,count:e.count}),this},update:function(e){var n=this.data(o);if(e=e||{},void 0!=e.total&&void 0!=e.count)this.chatbell("chats",e);else{var a=e.docid||n.docid,s=r.getDocVal(a,"chatBar",0);if(a&&(s||void 0==e.total)){var l=t(this);t.get(i.http.locations.chat_status,{docid:a,after:s},function(t){l.chatbell("chats",t)})}else void 0!=e.total&&this.chatbell("chats",e)}return this},read_until:function(e,n){return this.each(function(){var n=t(this),i=n.data(o);i.docid==e&&i.total&&n.chatbell("chats",{total:i.total,count:0})})},"chat-message":function(t){if(void 0==t.is_self&&(t.is_self=this.chatroom("is_self",t)),this.chatbell("chats++"),!t.is_self){var e=this.chatroom("render",t),i={dom:e};n.notify(this,i)}}};t.fn.chatbell=function(e){return a[e]?a[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery."+o):a._init.apply(this,arguments)}}(jQuery)}),define("tabbed",["jquery","form","config","preferences","modal","laconic","search","chatbell"],function(t,e,n,i,r){var o={tabTypes:{},type:function(t){var e=t.split(".").pop();for(var n in o.tabTypes)if(o.tabTypes.hasOwnProperty(n)&&o.tabTypes[n].dataType==e)return o.tabTypes[n]}};return function(t){function a(e,n,i){t(e).wrap('<div role="tabpanel" class="tab-pane" id="'+n+'"></div>');var r=t(e).parent();return i&&r.addClass("active"),r}function s(e,n){var i=t.el.span({class:"glyphicon glyphicon-"+e});return n&&t(i).addClass(n),i}function l(){return"tabbed-tab-"+h++}function c(t){if(n.swish.profiles)for(var e=0;e<n.swish.profiles.length;e++)if(n.swish.profiles[e].value==t)return n.swish.profiles[e]}var u="tabbed",h=0,d={_init:function(e){return e=e||{},this.each(function(){var n=t(this),i={};i.newTab=e.newTab,i.tabTypes=e.tabTypes||o.tabTypes,n.data(u,i),n.addClass("tabbed"),n.tabbed("makeTabbed"),n.on("trace-location",function(t,e){n.tabbed("showTracePort",e)}),n.on("data-is-clean",function(e,i){var r=t(e.target).closest(".tab-pane"),o=n.tabbed("navTab",r.attr("id"));o&&(i?o.removeClass("data-dirty"):o.addClass("data-dirty"))})})},makeTabbed:function(){var e=this.children(),n=t.el.ul({class:"nav nav-tabs",role:"tablist"}),i=t.el.div({class:"tab-content"});this.prepend(i),this.prepend(n),t(n).on("click","span.xclose",function(e){var n=t(e.target).parent().attr("data-id");t(e.target).parents(".tabbed").first().tabbed("removeTab",n),e.preventDefault()}),t(n).on("click","a",function(e){t(e.target).closest("a").tab("show"),e.preventDefault()});for(var r=0;r<e.length;r++){var o=t(e[r]),c=l(),u=o.attr("data-label")||"Unknown",h="disabled"!=o.attr("data-close"),d=r==e.length-1,f=this.tabbed("tabLabel",c,u,h);d&&t(f).addClass("active"),t(n).append(f),t(i).append(a(t(e[r]),c,d))}var p=t.el.a({class:"tab-new compact",title:"Open a new tab"},s("plus"));t(n).append(t.el.li({role:"presentation"},p)),t(p).on("click",function(e){var n=t(e.target).parents(".tabbed").first();return n.tabbed("newTab"),e.preventDefault(),!1}),t(n).on("shown.bs.tab","a",function(e){var n=t(e.target).data("id");t("#"+n+" .swish-event-receiver").trigger("activate-tab")}),0==this.tabbed("navContent").children().length&&this.tabbed("newTab")},newTab:function(e){var n=this.data(u);return void 0==e&&(n.newTab?e=n.newTab():(e=this.tabbed("tabSelect"),t(e).append(this.tabbed("profileForm"),t.el.hr(),this.tabbed("searchForm")))),this.tabbed("addTab",e,{active:!0,close:!0})},tabFromSource:function(e){function n(){var n=i.tabbed("newTab",t("<span></span>"));i.tabbed("setSource",n,e)||i.tabbed("removeTab",n.attr("id"))}var i=this,r=this.find("div.tabbed-select");if("string"==typeof e&&(e={data:e}),r.length>0){var o=r.first().closest(".tab-pane");this.tabbed("show",o.attr("id")),this.tabbed("setSource",o,e)}else if(e.newTab)n();else{var o;this.find(".storage").each(function(n,i){if(t(i).storage("setSource",e))return o=t(i).closest(".tab-pane"),!1}),o?this.tabbed("show",o.attr("id")):n()}return this},setSource:function(e,n){if("object"==typeof n&&(n.meta&&n.meta.name||n.url)){var i=n.meta&&n.meta.name?n.meta.name:n.url,r=o.type(i),a=t.el.div();return e.html(""),e.tabbed("title",r.label,r.dataType),e.append(a),r.create(a),t(a).storage("setSource",n),!0}return!1},showTracePort:function(e){function n(){if(s.startsWith("pengine://"))return s.split("/")[2]}function i(){var t="swish://";if(s.startsWith(t))return s.slice(t.length)}if(e&&e.source&&e.source.file){var r,o,a,s=e.source.file;if(r=n())a=this.find(".prolog-editor").filter(function(e,n){return t(n).prologEditor("pengine",{has:r})});else if((o=i())&&(a=this.find(".storage").storage("match",{file:o}),!a))return this.closest(".swish").swish("playFile",{file:o,newTab:!0,noHistory:!0,prompt:e}),this;a&&a.prologEditor("showTracePort",e)}return this},addTab:function(e,n){var i=this.tabbed("navTabs"),r=l(),o=a(e,r,n.close);this.tabbed("navContent").append(o);var s=this.tabbed("tabLabel",r,"New tab",close,"select"),c=i.find("a.tab-new");return 1==c.length?t(s).insertBefore(c.first().parent()):i.append(s),n.active&&t(s).find("a").first().tab("show"),o},removeTab:function(e){var n,i=this.tabbed("navTabs").find("a[data-id='"+e+"']").parent(),r=t("#"+e);0!=r.find(".storage").storage("unload","closetab")&&(r.is(":visible")&&(n=i.prev()||i.next()),i.remove(),r.find(".prolog-runner").prologRunner("close"),r.find(".storage").storage("close"),r.remove(),n&&n.length>0?n.find("a").first().tab("show"):0==this.tabbed("navContent").children().length&&this.tabbed("newTab"),t(".storage").storage("chat_status",!0))},show:function(e){var n=this.tabbed("navTab",e);n&&n.tab("show"),t(".storage").storage("chat_status",!0)},tabLabel:function(e,n,i,r){var o,a;i&&(o=s("remove","xclose"),t(o).attr("title","Close tab")),r=r||"pl";var l=t.el.a({class:"compact",href:"#"+e,"data-id":e},t.el.span({class:"tab-icon type-icon "+r}),t.el.span({class:"tab-dirty",title:"Tab is modified. See File/Save and Edit/View changes"}),a=t.el.a({class:"tab-chat"}),t.el.span({class:"tab-title"},n),o),c=t.el.li({role:"presentation"},l);return t(a).chatbell().on("click",function(e){var n=t(e.target).closest("a.compact").data("id");return t("#"+n).find(".storage").storage("chat"),!1}),c},anchor:function(){var t=this.closest(".tab-pane");if(0!=t.length){var e=t.closest(".tabbed"),n=t.attr("id"),i=e.tabbed("navTabs"),r=i.find("a[data-id="+n+"]");return r}},title:function(t,e){var n=this.tabbed("anchor");if(n&&(n.find(".tab-title").text(t),e)){var i=n.find(".tab-icon");i.removeClass(),i.addClass("tab-icon type-icon "+e)}return this},chats:function(t){var e=this.tabbed("anchor");return e&&e.find(".chat-bell").chatbell("update",t),this},"chats++":function(t){var e=this.tabbed("anchor");return e&&e.find(".chat-bell").chatbell("chats++",t),this},tabSelect:function(){var e=this.data(u),n=t.el.div({class:"tabbed-select"},t.el.div({class:"tabbed-create"},t.el.label({class:"tabbed-left"},"Create a "),g=t.el.div({class:"btn-group",role:"group"}),t.el.label({class:"tabbed-right"},"here"))),a=[];for(var s in e.tabTypes)e.tabTypes.hasOwnProperty(s)&&e.tabTypes[s].order&&a.push(s);a.sort(function(t,n){return e.tabTypes[t].order-e.tabTypes[n].order});for(var l=0;l<a.length;l++){var c=e.tabTypes[a[l]];t(g).append(t.el.button({type:"button",class:"btn btn-primary","data-type":c.typeName,"data-ext":c.dataType},c.label))}return t(g).on("click",".btn",function(e){var n=t(e.target).data("type"),r=t(e.target).closest(".tab-pane"),a=t.el.div(),s=t.extend({},o.tabTypes[n]),l=r.find("label.active > input[name=profile]").val();l&&(s.profile=l,s.value=r.tabbed("profileValue",l,o.tabTypes[n].dataType),void 0!=s.value&&i.setVal("default-profile",l)),r.html(""),r.tabbed("title",s.label,s.dataType),r.append(a),o.tabTypes[n].create(a,s)}),t(g).addClass("swish-event-receiver"),t(g).on("download save fileInfo print",function(e){var n=t(e.target).closest(".tab-pane");if(n.is(":visible")){var i={download:"you wish to download",save:"you wish to save",print:"you wish to print",fileInfo:"for which you want details"};r.alert("Please activate the tab "+i[e.type]),e.stopPropagation()}}),t(g).on("profile-selected",function(e,n){t(e.target).find("button").each(function(){t(this).prop("disabled",n.type.indexOf(t(this).data("ext"))<0)})}),n},searchForm:function(){var n=t.el.form({class:"search-sources"},t.el.label({class:"control-label"},"Open source file containing"),t.el.div({class:"input-group"},t.el.input({type:"text",class:"form-control search",placeholder:"Search sources","data-search-in":"sources store_content"}),t.el.div({class:"input-group-btn"},t.el.button({class:"btn btn-default",type:"submit"},t.el.i({class:"glyphicon glyphicon-search"})))),t.el.div({class:"input-group"},e.fields.radio("smatch",[{label:"Start of line",value:"sol"},{label:"Start of word",value:"sow",active:!0},{label:"Anywhere",value:"anywhere"}])));return t(n).find("input.search").search(),n},profileForm:function(){if(n.swish.profiles&&n.swish.profiles.length>0){for(var r,o=0;o<n.swish.profiles.length;o++)delete n.swish.profiles[o].active;if(r=i.getVal("default-profile"))for(var o=0;o<n.swish.profiles.length;o++)n.swish.profiles[o].value==r&&(n.swish.profiles[o].active=!0);else n.swish.profiles[0].active=!0;var a=t.el.div({class:"tabbed-profile"},t.el.label({class:"tabbed-left"},"based on"),t.el.div({class:"input-group select-profile"},e.fields.radio("profile",n.swish.profiles)),t.el.label({class:"tabbed-right"},"profile"));return t(a).on("click",function(e){var n=t(e.target).find("input").val(),i=c(n);t(e.target).closest(".tab-pane").find(".tabbed-create .btn-group").trigger("profile-selected",i)}),a}},profileValue:function(e,i){var o=n.http.locations.swish+"profile/"+e+"."+i;return t.ajax({url:o,type:"GET",data:{format:"raw"},async:!1,error:function(t){r.ajaxError(t)}}).responseText},navTabs:function(){return this.find("ul.nav-tabs").first()},navTab:function(t){var e=this.find("ul.nav-tabs").first().find("a[data-id='"+t+"']");if(e.length>0)return e},navContent:function(){return this.find("div.tab-content").first()}};t.fn.tabbed=function(e){return d[e]?d[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery."+u):d._init.apply(this,arguments)}}(jQuery),o}),define("prolog",["jquery","config","form","preferences"],function(t,e,n,i){var r={downloadCSV:function(o,a,s){function l(e,n){return t.el.input({type:"hidden",name:e,value:n})}function c(){var s=t.el.form({class:"form-horizontal"},n.fields.projection(f.join(",")),n.fields.csvFormat(e.swish.csv_formats,i.getVal("csvFormat")),n.fields.limit("10 000",!1),n.fields.filename(p,2),n.fields.buttons({label:"Download CSV",action:function(t,n){return t.preventDefault(),e.swish.csv_formats.length>1&&i.setVal("csvFormat",n.format),r.downloadCSV(o,a,n),!1}}));this.append(s)}if(s=s||{},s.disposition=s.disposition||s.filename||"swish-results.csv",s.projection){var u,h=s.format||"prolog";if(s.distinct&&(o="distinct(["+s.projection+"],("+o+"))"),s.limit){var d=parseInt(s.limit.replace(/[ _]/g,""));if("number"!=typeof d)return alert("Not an integer: ",s.limit),!1;o="limit("+d+",("+o+"))"}u=t.el.form({method:"POST",action:e.http.locations.pengines+"/create",target:"_blank"},l("format","csv"),l("chunk","10"),l("solutions","all"),l("disposition",s.disposition),l("application","swish"),l("ask",o),l("src_text",a),l("template",h+"("+s.projection+")")),console.log(u),t("body").append(u),u.submit(),t(u).remove()}else{var f=t().prologEditor("variables",o),p=s.disposition;p.indexOf(".")<0&&(p+=".csv"),n.showDialog({title:"Download query results as CSV",body:c})}return this},trimFullStop:function(t){return t.replace(/\.\s*$/m,"")},options:{application:"swish",chunk:5}};return t.swish=function(t){for(var e in r.options)r.options.hasOwnProperty(e)&&!t.hasOwnProperty(e)&&(t[e]=r.options[e]);return new Pengine(t)},r}),define("answer",["jquery","laconic"],function(){!function($){function answerHasOutput(t){return t.variables.length>0||t.residuals}function renderSubstitutions(t,e){e.push(', <span class="pl-comment">% where</span><br/>');for(var n=0;n<t.length;n++)e.push('<span class="where-binding">',"<span class='pl-var'>",t[n].var+"</span> = ",t[n].value,"</span>"),n<t.length-1&&e.push(",<br/>")}function renderAnswer(t){for(var e=[],n=t.variables,i=0;i<n.length;i++){for(var r=n[i].variables,o=0;o<r.length-1;o++)e.push("<span class='pl-ovar'>",r[o],"</span> = ","<span class='pl-var'>",r[o+1],"</span>, ");e.push("<span class='pl-ovar'>",r[r.length-1],"</span> = ",n[i].value),n[i].substitutions&&renderSubstitutions(n[i].substitutions,e),(i<n.length-1||t.residuals)&&e.push(",<br/>")}var a;if(a=t.residuals)for(var i=0;i<a.length;i++)e.push(a[i]),i<a.length-1&&e.push(",<br/>");return e.join("")}function renderTabledAnswer(t,e){function n(e){for(var n=t.variables,i=0;i<n.length;i++)for(var r=n[i].variables,o=0;o<r.length;o++)if(r[o]==e)return n[i];return null}function i(){0==e.find("tr.projection th.residuals").length&&($("<th class='residuals'>Residual goals</th>").insertBefore(e.find("tr.projection th.answer-nth")),$("<td></td>").insertBefore(e.find("tr td.answer-nth")))}for(var r=[],o=0;o<t.projection.length;o++){var a=t.projection[o],s=n(a);r.push("<td>"),s?(r.push(s.value),s.substitutions&&renderSubstitutions(s.substitutions,r)):r.push("<span class='pl-var'>",a,"</span>"),r.push("</td>")}var l;if(l=t.residuals){i(),r.push("<td>");for(var o=0;o<l.length;o++)r.push(l[o]),o<l.length-1&&r.push(",<br/>");r.push("</td>")}return t.nth&&r.push("<td class='answer-nth'>",t.nth,"</td>"),r.join("")}function evalScripts(elem){elem.find("script").each(function(){var type=this.getAttribute("type")||"text/javascript";"text/javascript"==type&&($.ajaxScript=$(this),eval(this.textContent))}),$.ajaxScript&&delete $.ajaxScript}var pluginName="prologAnswer",methods={_init:function(t){return this.each(function(){var e=$(this);if(answerHasOutput(t))if(e.is("table")){var n=$.el.tr();e.append(n),n.innerHTML=renderTabledAnswer(t,e),evalScripts($(n)),$(n).find(".render-multi").renderMulti()}else e[0].innerHTML=renderAnswer(t),evalScripts(e),e.find(".render-multi").renderMulti();else e.append($.el.span({class:"prolog-true"},"true"))})}};$.fn.prologAnswer=function(t){return methods[t]?methods[t].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof t&&t?void $.error("Method "+t+" does not exist on jQuery."+pluginName):methods._init.apply(this,arguments)}}(jQuery),function(t){function e(){var e=t("#render-select");return e[0]||(e=t(t.el.form({id:"render-select",style:"display:none"})),e.on("click","a",function(n){var i=t(n.target).closest("a"),r=i.data("nr");return e.data("target").renderMulti(i.data("action"),r),!1}),e.on("click",function(){var n=t("input[name=render]:checked",t(this)).val();e.data("target").renderMulti("select",parseInt(n))}),e.hover(function(){l=!0,i()},function(){r()}),t("body").append(e)),e}function n(){if(!l){var t=e(),n=t.data("target");n&&(n.removeClass("render-selecting"),t.data("target",null)),t.hide(400)}}function i(){s=setTimeout(function(){n()},400)}function r(){l=!1,i()}function o(e){var n=e.originalEvent.dataTransfer;return n.setData("Text",t(e.target).renderMulti("prologText")),!0}var a="renderMulti",s=0,l=!1,c={_init:function(e){return this.each(function(){var e=t(this),n={current:0},i=[],r=t.el.div({class:"render-multi-active"}),s=0;e.children().each(function(){var n=t(this).css("display");i.push(n),0==s++?(e.css("display",n),t(this).attr("draggable",!1)):t(this).hide()}),n.display=i,e.append(r),t(r).hover(function(t){e.renderMulti("showSelect",t)},function(t){e.renderMulti("hideSelect",t)}),e.attr("draggable",!0).bind("dragstart",o),e.data(a,n)})},selectMenu:function(){function e(t,e){var n,i;return"Prolog term"==e?(n="Copy",i="copy"):(n="Download",i="download"),btn='<a href="#" class="btn btn-style btn-sm" data-nr="'+t+'" data-action="'+i+'" title="'+n+'"><span class="glyphicon glyphicon-'+i+'"></span></a>',btn}for(var n=this.data(a),i=["<label>View as</label><br>"],r=this.children(),o=0,o=0;o<n.display.length;o++){var s=t(r[o]),l=s.attr("data-render");l||(l=0==o?"Default rendered":"Alt rendered ["+(o+1)+"]"),i.push("<div class='render-item'>",e(o,l),"<input type='radio' name='render' value='",o,"'"),o==n.current&&i.push(" checked"),i.push("> ",l,"</div>")}return i.push("</form"),i.join("")},showSelect:function(t){var n,i=this,r=e(),o=this.offset();l=!0,s&&(clearTimeout(s),s=0),(n=r.data("target"))&&n.removeClass("render-selecting"),r.data("target",i),r.html(this.renderMulti("selectMenu")),r.css({top:o.top+5+"px",left:o.left+5+"px"}).show(400),this.addClass("render-selecting")},hideSelect:function(t){r()},select:function(e){var i=this.data(a);if(i.current!=e){var r=this.children(),o=i.display[e];t(r[i.current]).hide(400),t(r[e]).show(400,function(){t(this).css("display",o)}),this.css("display",o),t(r[e]).is("span.render-as-prolog")?this.attr("draggable",!1):this.attr("draggable",!0),i.current=e}n()},copy:function(t){function e(t){var e=document.createRange();e.selectNodeContents(t);var n=window.getSelection();n.removeAllRanges(),n.addRange(e)}var n=this.children(),i=this.data(a),r=i.current;this.renderMulti("select",t),e(n[t]);try{document.execCommand("copy")}catch(t){alert("Sorry, cannot copy text with this browser")}return this.renderMulti("select",r),this},download:function(e){function n(){return void 0!=t("<a>")[0].download}var i,r=this.children(),o=t(r[e]),a="html";if(o.hasClass("export-dom")){var s={};o=o.trigger("export-dom",s),s.element?(i=s.element.outerHTML,a=s.extension||"html",type=s.contentType||"text/html"):alert("Failed to export rendered result")}else if(1==o.find("svg").length){var l=o.find("svg");l.attr("xmlns")||l.attr("xmlns","http://www.w3.org/2000/svg"),i=l[0].outerHTML,a="svg",type="image/svg+xml"}else i=o.html(),type="text/html";n()||(type="application/octet-stream");var c="data:"+type+";charset=UTF-8,"+encodeURIComponent(i),u=t.el.a({href:c,download:"swish-rendered."+a});return this.append(u),u.click(),t(u).remove(),this},prologText:function(){return this.find("span.render-as-prolog").text()}};t.fn.renderMulti=function(e){return c[e]?c[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery."+a):c._init.apply(this,arguments)}}(jQuery)}),function(t,e,n){!function(t){"function"==typeof define&&define.amd?define("sparkline",["jquery"],t):jQuery&&!jQuery.fn.sparkline&&t(jQuery)}(function(i){"use strict";var r,o,a,s,l,c,u,h,d,f,p,g,m,v,y,x,b,_,w,S,C,T,k,A,M,L,E,P,N,O,R,D,I={},j=0;r=function(){return{common:{type:"line",lineColor:"#00f",fillColor:"#cdf",defaultPixelsPerValue:3,width:"auto",height:"auto",composite:!1,tagValuesAttribute:"values",tagOptionsPrefix:"spark",enableTagOptions:!1,enableHighlight:!0,highlightLighten:1.4,tooltipSkipNull:!0,tooltipPrefix:"",tooltipSuffix:"",disableHiddenCheck:!1,numberFormatter:!1,numberDigitGroupCount:3,numberDigitGroupSep:",",numberDecimalMark:".",disableTooltips:!1,disableInteraction:!1},line:{spotColor:"#f80",highlightSpotColor:"#5f5",highlightLineColor:"#f22",spotRadius:1.5,minSpotColor:"#f80",maxSpotColor:"#f80",lineWidth:1,normalRangeMin:n,normalRangeMax:n,normalRangeColor:"#ccc",drawNormalOnTop:!1,chartRangeMin:n,chartRangeMax:n,chartRangeMinX:n,chartRangeMaxX:n,tooltipFormat:new a('<span style="color: {{color}}">&#9679;</span> {{prefix}}{{y}}{{suffix}}')},bar:{barColor:"#3366cc",negBarColor:"#f44",stackedBarColor:["#3366cc","#dc3912","#ff9900","#109618","#66aa00","#dd4477","#0099c6","#990099"],zeroColor:n,nullColor:n,zeroAxis:!0,barWidth:4,barSpacing:1,chartRangeMax:n,chartRangeMin:n,chartRangeClip:!1,colorMap:n,tooltipFormat:new a('<span style="color: {{color}}">&#9679;</span> {{prefix}}{{value}}{{suffix}}')},tristate:{barWidth:4,barSpacing:1,posBarColor:"#6f6",negBarColor:"#f44",zeroBarColor:"#999",colorMap:{},tooltipFormat:new a('<span style="color: {{color}}">&#9679;</span> {{value:map}}'),tooltipValueLookups:{map:{"-1":"Loss",0:"Draw",1:"Win"}}},discrete:{lineHeight:"auto",thresholdColor:n,thresholdValue:0,chartRangeMax:n,chartRangeMin:n,chartRangeClip:!1,tooltipFormat:new a("{{prefix}}{{value}}{{suffix}}")},bullet:{targetColor:"#f33",targetWidth:3,performanceColor:"#33f",rangeColors:["#d3dafe","#a8b6ff","#7f94ff"],base:n,tooltipFormat:new a("{{fieldkey:fields}} - {{value}}"),tooltipValueLookups:{fields:{r:"Range",p:"Performance",t:"Target"}}},pie:{offset:0,sliceColors:["#3366cc","#dc3912","#ff9900","#109618","#66aa00","#dd4477","#0099c6","#990099"],borderWidth:0,borderColor:"#000",tooltipFormat:new a('<span style="color: {{color}}">&#9679;</span> {{value}} ({{percent.1}}%)')},box:{raw:!1,boxLineColor:"#000",boxFillColor:"#cdf",whiskerColor:"#000",outlierLineColor:"#333",outlierFillColor:"#fff",medianColor:"#f00",showOutliers:!0,outlierIQR:1.5,spotRadius:1.5,target:n,targetColor:"#4a2",chartRangeMax:n,chartRangeMin:n,tooltipFormat:new a("{{field:fields}}: {{value}}"),tooltipFormatFieldlistKey:"field",tooltipValueLookups:{fields:{lq:"Lower Quartile",med:"Median",uq:"Upper Quartile",lo:"Left Outlier",ro:"Right Outlier",lw:"Left Whisker",rw:"Right Whisker"}}}}},L='.jqstooltip { position: absolute;left: 0px;top: 0px;visibility: hidden;background: rgb(0, 0, 0) transparent;background-color: rgba(0,0,0,0.6);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)";color: white;font: 10px arial, san serif;text-align: left;white-space: nowrap;padding: 5px;border: 1px solid white;z-index: 10000;}.jqsfield { color: white;font: 10px arial, san serif;text-align: left;}',o=function(){var t,e;return t=function(){this.init.apply(this,arguments)},arguments.length>1?(arguments[0]?(t.prototype=i.extend(new arguments[0],arguments[arguments.length-1]),t._super=arguments[0].prototype):t.prototype=arguments[arguments.length-1],arguments.length>2&&(e=Array.prototype.slice.call(arguments,1,-1),e.unshift(t.prototype),i.extend.apply(i,e))):t.prototype=arguments[0],t.prototype.cls=t,t},i.SPFormatClass=a=o({fre:/\{\{([\w.]+?)(:(.+?))?\}\}/g,precre:/(\w+)\.(\d+)/,init:function(t,e){this.format=t,this.fclass=e},render:function(t,e,i){var r,o,a,s,l,c=this,u=t;return this.format.replace(this.fre,function(){var t;return o=arguments[1],a=arguments[3],r=c.precre.exec(o),r?(l=r[2],o=r[1]):l=!1,s=u[o],s===n?"":a&&e&&e[a]?(t=e[a],t.get?e[a].get(s)||s:e[a][s]||s):(d(s)&&(s=i.get("numberFormatter")?i.get("numberFormatter")(s):v(s,l,i.get("numberDigitGroupCount"),i.get("numberDigitGroupSep"),i.get("numberDecimalMark"))),s)})}}),i.spformat=function(t,e){return new a(t,e)},s=function(t,e,n){return t<e?e:t>n?n:t},l=function(t,n){var i;return 2===n?(i=e.floor(t.length/2),t.length%2?t[i]:(t[i-1]+t[i])/2):t.length%2?(i=(t.length*n+n)/4,i%1?(t[e.floor(i)]+t[e.floor(i)-1])/2:t[i-1]):(i=(t.length*n+2)/4,i%1?(t[e.floor(i)]+t[e.floor(i)-1])/2:t[i-1])},c=function(t){var e;switch(t){case"undefined":t=n;break;case"null":t=null;break;case"true":t=!0;break;case"false":t=!1;break;default:e=parseFloat(t),t==e&&(t=e)}return t},u=function(t){var e,n=[];for(e=t.length;e--;)n[e]=c(t[e]);return n},h=function(t,e){var n,i,r=[];for(n=0,i=t.length;n<i;n++)t[n]!==e&&r.push(t[n]);return r},d=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},v=function(t,e,n,r,o){var a,s;for(t=(e===!1?parseFloat(t).toString():t.toFixed(e)).split(""),a=(a=i.inArray(".",t))<0?t.length:a,a<t.length&&(t[a]=o),s=a-n;s>0;s-=n)t.splice(s,0,r);return t.join("")},f=function(t,e,n){var i;for(i=e.length;i--;)if((!n||null!==e[i])&&e[i]!==t)return!1;return!0},p=function(t){var e,n=0;for(e=t.length;e--;)n+="number"==typeof t[e]?t[e]:0;return n},m=function(t){return i.isArray(t)?t:[t]},g=function(e){var n;t.createStyleSheet?t.createStyleSheet().cssText=e:(n=t.createElement("style"),n.type="text/css",t.getElementsByTagName("head")[0].appendChild(n),n["string"==typeof t.body.style.WebkitAppearance?"innerText":"innerHTML"]=e)},i.fn.simpledraw=function(e,r,o,a){var s,l;if(o&&(s=this.data("_jqs_vcanvas")))return s;if(i.fn.sparkline.canvas===!1)return!1;if(i.fn.sparkline.canvas===n){var c=t.createElement("canvas");if(c.getContext&&c.getContext("2d"))i.fn.sparkline.canvas=function(t,e,n,i){return new O(t,e,n,i)};else{if(!t.namespaces||t.namespaces.v)return i.fn.sparkline.canvas=!1,!1;t.namespaces.add("v","urn:schemas-microsoft-com:vml","#default#VML"),i.fn.sparkline.canvas=function(t,e,n,i){return new R(t,e,n)}}}return e===n&&(e=i(this).innerWidth()),r===n&&(r=i(this).innerHeight()),s=i.fn.sparkline.canvas(e,r,this,a),l=i(this).data("_jqs_mhandler"),l&&l.registerCanvas(s),s},i.fn.cleardraw=function(){var t=this.data("_jqs_vcanvas");t&&t.reset()},i.RangeMapClass=y=o({init:function(t){var e,n,i=[];for(e in t)t.hasOwnProperty(e)&&"string"==typeof e&&e.indexOf(":")>-1&&(n=e.split(":"),n[0]=0===n[0].length?-(1/0):parseFloat(n[0]),n[1]=0===n[1].length?1/0:parseFloat(n[1]),n[2]=t[e],i.push(n));this.map=t,this.rangelist=i||!1},get:function(t){var e,i,r,o=this.rangelist;if((r=this.map[t])!==n)return r;if(o)for(e=o.length;e--;)if(i=o[e],i[0]<=t&&i[1]>=t)return i[2];return n}}),i.range_map=function(t){return new y(t)},x=o({init:function(t,e){var n=i(t);this.$el=n,this.options=e,this.currentPageX=0,this.currentPageY=0,this.el=t,this.splist=[],this.tooltip=null,this.over=!1,this.displayTooltips=!e.get("disableTooltips"),this.highlightEnabled=!e.get("disableHighlight")},registerSparkline:function(t){this.splist.push(t),this.over&&this.updateDisplay()},registerCanvas:function(t){var e=i(t.canvas);this.canvas=t,this.$canvas=e,e.mouseenter(i.proxy(this.mouseenter,this)),e.mouseleave(i.proxy(this.mouseleave,this)),e.click(i.proxy(this.mouseclick,this))},reset:function(t){this.splist=[],this.tooltip&&t&&(this.tooltip.remove(),this.tooltip=n)},mouseclick:function(t){var e=i.Event("sparklineClick");e.originalEvent=t,e.sparklines=this.splist,this.$el.trigger(e)},mouseenter:function(e){i(t.body).unbind("mousemove.jqs"),i(t.body).bind("mousemove.jqs",i.proxy(this.mousemove,this)),this.over=!0,this.currentPageX=e.pageX,this.currentPageY=e.pageY,this.currentEl=e.target,!this.tooltip&&this.displayTooltips&&(this.tooltip=new b(this.options),this.tooltip.updatePosition(e.pageX,e.pageY)),this.updateDisplay()},mouseleave:function(){i(t.body).unbind("mousemove.jqs");var e,n,r=this.splist,o=r.length,a=!1;for(this.over=!1,this.currentEl=null,this.tooltip&&(this.tooltip.remove(),this.tooltip=null),n=0;n<o;n++)e=r[n],e.clearRegionHighlight()&&(a=!0);a&&this.canvas.render()},mousemove:function(t){this.currentPageX=t.pageX,this.currentPageY=t.pageY,this.currentEl=t.target,this.tooltip&&this.tooltip.updatePosition(t.pageX,t.pageY),this.updateDisplay()},updateDisplay:function(){var t,e,n,r,o,a=this.splist,s=a.length,l=!1,c=this.$canvas.offset(),u=this.currentPageX-c.left,h=this.currentPageY-c.top;if(this.over){for(n=0;n<s;n++)e=a[n],r=e.setRegionHighlight(this.currentEl,u,h),r&&(l=!0);if(l){if(o=i.Event("sparklineRegionChange"),o.sparklines=this.splist,this.$el.trigger(o),this.tooltip){for(t="",n=0;n<s;n++)e=a[n],t+=e.getCurrentRegionTooltip();this.tooltip.setContent(t)}this.disableHighlight||this.canvas.render()}null===r&&this.mouseleave()}}}),b=o({sizeStyle:"position: static !important;display: block !important;visibility: hidden !important;float: left !important;",init:function(e){var n,r=e.get("tooltipClassname","jqstooltip"),o=this.sizeStyle;this.container=e.get("tooltipContainer")||t.body,this.tooltipOffsetX=e.get("tooltipOffsetX",10),this.tooltipOffsetY=e.get("tooltipOffsetY",12),i("#jqssizetip").remove(),i("#jqstooltip").remove(),this.sizetip=i("<div/>",{id:"jqssizetip",style:o,class:r}),this.tooltip=i("<div/>",{id:"jqstooltip",class:r}).appendTo(this.container),n=this.tooltip.offset(),this.offsetLeft=n.left,this.offsetTop=n.top,this.hidden=!0,i(window).unbind("resize.jqs scroll.jqs"),i(window).bind("resize.jqs scroll.jqs",i.proxy(this.updateWindowDims,this)),this.updateWindowDims()},updateWindowDims:function(){this.scrollTop=i(window).scrollTop(),this.scrollLeft=i(window).scrollLeft(),this.scrollRight=this.scrollLeft+i(window).width(),this.updatePosition()},getSize:function(t){this.sizetip.html(t).appendTo(this.container),this.width=this.sizetip.width()+1,
+this.height=this.sizetip.height(),this.sizetip.remove()},setContent:function(t){return t?(this.getSize(t),this.tooltip.html(t).css({width:this.width,height:this.height,visibility:"visible"}),void(this.hidden&&(this.hidden=!1,this.updatePosition()))):(this.tooltip.css("visibility","hidden"),void(this.hidden=!0))},updatePosition:function(t,e){if(t===n){if(this.mousex===n)return;t=this.mousex-this.offsetLeft,e=this.mousey-this.offsetTop}else this.mousex=t-=this.offsetLeft,this.mousey=e-=this.offsetTop;this.height&&this.width&&!this.hidden&&(e-=this.height+this.tooltipOffsetY,t+=this.tooltipOffsetX,e<this.scrollTop&&(e=this.scrollTop),t<this.scrollLeft?t=this.scrollLeft:t+this.width>this.scrollRight&&(t=this.scrollRight-this.width),this.tooltip.css({left:t,top:e}))},remove:function(){this.tooltip.remove(),this.sizetip.remove(),this.sizetip=this.tooltip=n,i(window).unbind("resize.jqs scroll.jqs")}}),E=function(){g(L)},i(E),D=[],i.fn.sparkline=function(e,r){return this.each(function(){var o,a,s=new i.fn.sparkline.options(this,r),l=i(this);if(o=function(){var r,o,a,c,u,h,d;return"html"===e||e===n?(d=this.getAttribute(s.get("tagValuesAttribute")),d!==n&&null!==d||(d=l.html()),r=d.replace(/(^\s*<!--)|(-->\s*$)|\s+/g,"").split(",")):r=e,o="auto"===s.get("width")?r.length*s.get("defaultPixelsPerValue"):s.get("width"),"auto"===s.get("height")?s.get("composite")&&i.data(this,"_jqs_vcanvas")||(c=t.createElement("span"),c.innerHTML="a",l.html(c),a=i(c).innerHeight()||i(c).height(),i(c).remove(),c=null):a=s.get("height"),s.get("disableInteraction")?u=!1:(u=i.data(this,"_jqs_mhandler"),u?s.get("composite")||u.reset():(u=new x(this,s),i.data(this,"_jqs_mhandler",u))),s.get("composite")&&!i.data(this,"_jqs_vcanvas")?void(i.data(this,"_jqs_errnotify")||(alert("Attempted to attach a composite sparkline to an element with no existing sparkline"),i.data(this,"_jqs_errnotify",!0))):(h=new(i.fn.sparkline[s.get("type")])(this,r,s,o,a),h.render(),void(u&&u.registerSparkline(h)))},i(this).html()&&!s.get("disableHiddenCheck")&&i(this).is(":hidden")||!i(this).parents("body").length){if(!s.get("composite")&&i.data(this,"_jqs_pending"))for(a=D.length;a;a--)D[a-1][0]==this&&D.splice(a-1,1);D.push([this,o]),i.data(this,"_jqs_pending",!0)}else o.call(this)})},i.fn.sparkline.defaults=r(),i.sparkline_display_visible=function(){var t,e,n,r=[];for(e=0,n=D.length;e<n;e++)t=D[e][0],i(t).is(":visible")&&!i(t).parents().is(":hidden")?(D[e][1].call(t),i.data(D[e][0],"_jqs_pending",!1),r.push(e)):i(t).closest("html").length||i.data(t,"_jqs_pending")||(i.data(D[e][0],"_jqs_pending",!1),r.push(e));for(e=r.length;e;e--)D.splice(r[e-1],1)},i.fn.sparkline.options=o({init:function(t,e){var n,r,o,a;this.userOptions=e=e||{},this.tag=t,this.tagValCache={},r=i.fn.sparkline.defaults,o=r.common,this.tagOptionsPrefix=e.enableTagOptions&&(e.tagOptionsPrefix||o.tagOptionsPrefix),a=this.getTagSetting("type"),n=a===I?r[e.type||o.type]:r[a],this.mergedOptions=i.extend({},o,n,e)},getTagSetting:function(t){var e,i,r,o,a=this.tagOptionsPrefix;if(a===!1||a===n)return I;if(this.tagValCache.hasOwnProperty(t))e=this.tagValCache.key;else{if(e=this.tag.getAttribute(a+t),e===n||null===e)e=I;else if("["===e.substr(0,1))for(e=e.substr(1,e.length-2).split(","),i=e.length;i--;)e[i]=c(e[i].replace(/(^\s*)|(\s*$)/g,""));else if("{"===e.substr(0,1))for(r=e.substr(1,e.length-2).split(","),e={},i=r.length;i--;)o=r[i].split(":",2),e[o[0].replace(/(^\s*)|(\s*$)/g,"")]=c(o[1].replace(/(^\s*)|(\s*$)/g,""));else e=c(e);this.tagValCache.key=e}return e},get:function(t,e){var i,r=this.getTagSetting(t);return r!==I?r:(i=this.mergedOptions[t])===n?e:i}}),i.fn.sparkline._base=o({disabled:!1,init:function(t,e,r,o,a){this.el=t,this.$el=i(t),this.values=e,this.options=r,this.width=o,this.height=a,this.currentRegion=n},initTarget:function(){var t=!this.options.get("disableInteraction");(this.target=this.$el.simpledraw(this.width,this.height,this.options.get("composite"),t))?(this.canvasWidth=this.target.pixelWidth,this.canvasHeight=this.target.pixelHeight):this.disabled=!0},render:function(){return!this.disabled||(this.el.innerHTML="",!1)},getRegion:function(t,e){},setRegionHighlight:function(t,e,i){var r,o=this.currentRegion,a=!this.options.get("disableHighlight");return e>this.canvasWidth||i>this.canvasHeight||e<0||i<0?null:(r=this.getRegion(t,e,i),o!==r&&(o!==n&&a&&this.removeHighlight(),this.currentRegion=r,r!==n&&a&&this.renderHighlight(),!0))},clearRegionHighlight:function(){return this.currentRegion!==n&&(this.removeHighlight(),this.currentRegion=n,!0)},renderHighlight:function(){this.changeHighlight(!0)},removeHighlight:function(){this.changeHighlight(!1)},changeHighlight:function(t){},getCurrentRegionTooltip:function(){var t,e,r,o,s,l,c,u,h,d,f,p,g,m,v=this.options,y="",x=[];if(this.currentRegion===n)return"";if(t=this.getCurrentRegionFields(),f=v.get("tooltipFormatter"))return f(this,v,t);if(v.get("tooltipChartTitle")&&(y+='<div class="jqs jqstitle">'+v.get("tooltipChartTitle")+"</div>\n"),e=this.options.get("tooltipFormat"),!e)return"";if(i.isArray(e)||(e=[e]),i.isArray(t)||(t=[t]),c=this.options.get("tooltipFormatFieldlist"),u=this.options.get("tooltipFormatFieldlistKey"),c&&u){for(h=[],l=t.length;l--;)d=t[l][u],(m=i.inArray(d,c))!=-1&&(h[m]=t[l]);t=h}for(r=e.length,g=t.length,l=0;l<r;l++)for(p=e[l],"string"==typeof p&&(p=new a(p)),o=p.fclass||"jqsfield",m=0;m<g;m++)t[m].isNull&&v.get("tooltipSkipNull")||(i.extend(t[m],{prefix:v.get("tooltipPrefix"),suffix:v.get("tooltipSuffix")}),s=p.render(t[m],v.get("tooltipValueLookups"),v),x.push('<div class="'+o+'">'+s+"</div>"));return x.length?y+x.join("\n"):""},getCurrentRegionFields:function(){},calcHighlightColor:function(t,n){var i,r,o,a,l=n.get("highlightColor"),c=n.get("highlightLighten");if(l)return l;if(c&&(i=/^#([0-9a-f])([0-9a-f])([0-9a-f])$/i.exec(t)||/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(t))){for(o=[],r=4===t.length?16:1,a=0;a<3;a++)o[a]=s(e.round(parseInt(i[a+1],16)*r*c),0,255);return"rgb("+o.join(",")+")"}return t}}),_={changeHighlight:function(t){var e,n=this.currentRegion,r=this.target,o=this.regionShapes[n];o&&(e=this.renderRegion(n,t),i.isArray(e)||i.isArray(o)?(r.replaceWithShapes(o,e),this.regionShapes[n]=i.map(e,function(t){return t.id})):(r.replaceWithShape(o,e),this.regionShapes[n]=e.id))},render:function(){var t,e,n,r,o=this.values,a=this.target,s=this.regionShapes;if(this.cls._super.render.call(this)){for(n=o.length;n--;)if(t=this.renderRegion(n))if(i.isArray(t)){for(e=[],r=t.length;r--;)t[r].append(),e.push(t[r].id);s[n]=e}else t.append(),s[n]=t.id;else s[n]=null;a.render()}}},i.fn.sparkline.line=w=o(i.fn.sparkline._base,{type:"line",init:function(t,e,n,i,r){w._super.init.call(this,t,e,n,i,r),this.vertices=[],this.regionMap=[],this.xvalues=[],this.yvalues=[],this.yminmax=[],this.hightlightSpotId=null,this.lastShapeId=null,this.initTarget()},getRegion:function(t,e,i){var r,o=this.regionMap;for(r=o.length;r--;)if(null!==o[r]&&e>=o[r][0]&&e<=o[r][1])return o[r][2];return n},getCurrentRegionFields:function(){var t=this.currentRegion;return{isNull:null===this.yvalues[t],x:this.xvalues[t],y:this.yvalues[t],color:this.options.get("lineColor"),fillColor:this.options.get("fillColor"),offset:t}},renderHighlight:function(){var t,e,i=this.currentRegion,r=this.target,o=this.vertices[i],a=this.options,s=a.get("spotRadius"),l=a.get("highlightSpotColor"),c=a.get("highlightLineColor");o&&(s&&l&&(t=r.drawCircle(o[0],o[1],s,n,l),this.highlightSpotId=t.id,r.insertAfterShape(this.lastShapeId,t)),c&&(e=r.drawLine(o[0],this.canvasTop,o[0],this.canvasTop+this.canvasHeight,c),this.highlightLineId=e.id,r.insertAfterShape(this.lastShapeId,e)))},removeHighlight:function(){var t=this.target;this.highlightSpotId&&(t.removeShapeId(this.highlightSpotId),this.highlightSpotId=null),this.highlightLineId&&(t.removeShapeId(this.highlightLineId),this.highlightLineId=null)},scanValues:function(){var t,n,i,r,o,a=this.values,s=a.length,l=this.xvalues,c=this.yvalues,u=this.yminmax;for(t=0;t<s;t++)n=a[t],i="string"==typeof a[t],r="object"==typeof a[t]&&a[t]instanceof Array,o=i&&a[t].split(":"),i&&2===o.length?(l.push(Number(o[0])),c.push(Number(o[1])),u.push(Number(o[1]))):r?(l.push(n[0]),c.push(n[1]),u.push(n[1])):(l.push(t),null===a[t]||"null"===a[t]?c.push(null):(c.push(Number(n)),u.push(Number(n))));this.options.get("xvalues")&&(l=this.options.get("xvalues")),this.maxy=this.maxyorg=e.max.apply(e,u),this.miny=this.minyorg=e.min.apply(e,u),this.maxx=e.max.apply(e,l),this.minx=e.min.apply(e,l),this.xvalues=l,this.yvalues=c,this.yminmax=u},processRangeOptions:function(){var t=this.options,e=t.get("normalRangeMin"),i=t.get("normalRangeMax");e!==n&&(e<this.miny&&(this.miny=e),i>this.maxy&&(this.maxy=i)),t.get("chartRangeMin")!==n&&(t.get("chartRangeClip")||t.get("chartRangeMin")<this.miny)&&(this.miny=t.get("chartRangeMin")),t.get("chartRangeMax")!==n&&(t.get("chartRangeClip")||t.get("chartRangeMax")>this.maxy)&&(this.maxy=t.get("chartRangeMax")),t.get("chartRangeMinX")!==n&&(t.get("chartRangeClipX")||t.get("chartRangeMinX")<this.minx)&&(this.minx=t.get("chartRangeMinX")),t.get("chartRangeMaxX")!==n&&(t.get("chartRangeClipX")||t.get("chartRangeMaxX")>this.maxx)&&(this.maxx=t.get("chartRangeMaxX"))},drawNormalRange:function(t,i,r,o,a){var s=this.options.get("normalRangeMin"),l=this.options.get("normalRangeMax"),c=i+e.round(r-r*((l-this.miny)/a)),u=e.round(r*(l-s)/a);this.target.drawRect(t,c,o,u,n,this.options.get("normalRangeColor")).append()},render:function(){var t,r,o,a,s,l,c,u,h,d,f,p,g,m,v,x,b,_,S,C,T,k,A,M,L,E=this.options,P=this.target,N=this.canvasWidth,O=this.canvasHeight,R=this.vertices,D=E.get("spotRadius"),I=this.regionMap;if(w._super.render.call(this)&&(this.scanValues(),this.processRangeOptions(),A=this.xvalues,M=this.yvalues,this.yminmax.length&&!(this.yvalues.length<2))){for(a=s=0,t=this.maxx-this.minx===0?1:this.maxx-this.minx,r=this.maxy-this.miny===0?1:this.maxy-this.miny,o=this.yvalues.length-1,D&&(N<4*D||O<4*D)&&(D=0),D&&(T=E.get("highlightSpotColor")&&!E.get("disableInteraction"),(T||E.get("minSpotColor")||E.get("spotColor")&&M[o]===this.miny)&&(O-=e.ceil(D)),(T||E.get("maxSpotColor")||E.get("spotColor")&&M[o]===this.maxy)&&(O-=e.ceil(D),a+=e.ceil(D)),(T||(E.get("minSpotColor")||E.get("maxSpotColor"))&&(M[0]===this.miny||M[0]===this.maxy))&&(s+=e.ceil(D),N-=e.ceil(D)),(T||E.get("spotColor")||E.get("minSpotColor")||E.get("maxSpotColor")&&(M[o]===this.miny||M[o]===this.maxy))&&(N-=e.ceil(D))),O--,E.get("normalRangeMin")===n||E.get("drawNormalOnTop")||this.drawNormalRange(s,a,O,N,r),c=[],u=[c],m=v=null,x=M.length,L=0;L<x;L++)h=A[L],f=A[L+1],d=M[L],p=s+e.round((h-this.minx)*(N/t)),g=L<x-1?s+e.round((f-this.minx)*(N/t)):N,v=p+(g-p)/2,I[L]=[m||0,v,L],m=v,null===d?L&&(null!==M[L-1]&&(c=[],u.push(c)),R.push(null)):(d<this.miny&&(d=this.miny),d>this.maxy&&(d=this.maxy),c.length||c.push([p,a+O]),l=[p,a+e.round(O-O*((d-this.miny)/r))],c.push(l),R.push(l));for(b=[],_=[],S=u.length,L=0;L<S;L++)c=u[L],c.length&&(E.get("fillColor")&&(c.push([c[c.length-1][0],a+O]),_.push(c.slice(0)),c.pop()),c.length>2&&(c[0]=[c[0][0],c[1][1]]),b.push(c));for(S=_.length,L=0;L<S;L++)P.drawShape(_[L],E.get("fillColor"),E.get("fillColor")).append();for(E.get("normalRangeMin")!==n&&E.get("drawNormalOnTop")&&this.drawNormalRange(s,a,O,N,r),S=b.length,L=0;L<S;L++)P.drawShape(b[L],E.get("lineColor"),n,E.get("lineWidth")).append();if(D&&E.get("valueSpots"))for(C=E.get("valueSpots"),C.get===n&&(C=new y(C)),L=0;L<x;L++)k=C.get(M[L]),k&&P.drawCircle(s+e.round((A[L]-this.minx)*(N/t)),a+e.round(O-O*((M[L]-this.miny)/r)),D,n,k).append();D&&E.get("spotColor")&&null!==M[o]&&P.drawCircle(s+e.round((A[A.length-1]-this.minx)*(N/t)),a+e.round(O-O*((M[o]-this.miny)/r)),D,n,E.get("spotColor")).append(),this.maxy!==this.minyorg&&(D&&E.get("minSpotColor")&&(h=A[i.inArray(this.minyorg,M)],P.drawCircle(s+e.round((h-this.minx)*(N/t)),a+e.round(O-O*((this.minyorg-this.miny)/r)),D,n,E.get("minSpotColor")).append()),D&&E.get("maxSpotColor")&&(h=A[i.inArray(this.maxyorg,M)],P.drawCircle(s+e.round((h-this.minx)*(N/t)),a+e.round(O-O*((this.maxyorg-this.miny)/r)),D,n,E.get("maxSpotColor")).append())),this.lastShapeId=P.getLastShapeId(),this.canvasTop=a,P.render()}}}),i.fn.sparkline.bar=S=o(i.fn.sparkline._base,_,{type:"bar",init:function(t,r,o,a,l){var d,f,p,g,m,v,x,b,_,w,C,T,k,A,M,L,E,P,N,O,R,D,I=parseInt(o.get("barWidth"),10),j=parseInt(o.get("barSpacing"),10),V=o.get("chartRangeMin"),H=o.get("chartRangeMax"),F=o.get("chartRangeClip"),z=1/0,q=-(1/0);for(S._super.init.call(this,t,r,o,a,l),v=0,x=r.length;v<x;v++)O=r[v],d="string"==typeof O&&O.indexOf(":")>-1,(d||i.isArray(O))&&(M=!0,d&&(O=r[v]=u(O.split(":"))),O=h(O,null),f=e.min.apply(e,O),p=e.max.apply(e,O),f<z&&(z=f),p>q&&(q=p));this.stacked=M,this.regionShapes={},this.barWidth=I,this.barSpacing=j,this.totalBarWidth=I+j,this.width=a=r.length*I+(r.length-1)*j,this.initTarget(),F&&(k=V===n?-(1/0):V,A=H===n?1/0:H),m=[],g=M?[]:m;var G=[],B=[];for(v=0,x=r.length;v<x;v++)if(M)for(L=r[v],r[v]=N=[],G[v]=0,g[v]=B[v]=0,E=0,P=L.length;E<P;E++)O=N[E]=F?s(L[E],k,A):L[E],null!==O&&(O>0&&(G[v]+=O),z<0&&q>0?O<0?B[v]+=e.abs(O):g[v]+=O:g[v]+=e.abs(O-(O<0?q:z)),m.push(O));else O=F?s(r[v],k,A):r[v],O=r[v]=c(O),null!==O&&m.push(O);this.max=T=e.max.apply(e,m),this.min=C=e.min.apply(e,m),this.stackMax=q=M?e.max.apply(e,G):T,this.stackMin=z=M?e.min.apply(e,m):C,o.get("chartRangeMin")!==n&&(o.get("chartRangeClip")||o.get("chartRangeMin")<C)&&(C=o.get("chartRangeMin")),o.get("chartRangeMax")!==n&&(o.get("chartRangeClip")||o.get("chartRangeMax")>T)&&(T=o.get("chartRangeMax")),this.zeroAxis=_=o.get("zeroAxis",!0),w=C<=0&&T>=0&&_?0:0==_?C:C>0?C:T,this.xaxisOffset=w,b=M?e.max.apply(e,g)+e.max.apply(e,B):T-C,this.canvasHeightEf=_&&C<0?this.canvasHeight-2:this.canvasHeight-1,C<w?(D=M&&T>=0?q:T,R=(D-w)/b*this.canvasHeight,R!==e.ceil(R)&&(this.canvasHeightEf-=2,R=e.ceil(R))):R=this.canvasHeight,this.yoffset=R,i.isArray(o.get("colorMap"))?(this.colorMapByIndex=o.get("colorMap"),this.colorMapByValue=null):(this.colorMapByIndex=null,this.colorMapByValue=o.get("colorMap"),this.colorMapByValue&&this.colorMapByValue.get===n&&(this.colorMapByValue=new y(this.colorMapByValue))),this.range=b},getRegion:function(t,i,r){var o=e.floor(i/this.totalBarWidth);return o<0||o>=this.values.length?n:o},getCurrentRegionFields:function(){var t,e,n=this.currentRegion,i=m(this.values[n]),r=[];for(e=i.length;e--;)t=i[e],r.push({isNull:null===t,value:t,color:this.calcColor(e,t,n),offset:n});return r},calcColor:function(t,e,r){var o,a,s=this.colorMapByIndex,l=this.colorMapByValue,c=this.options;return o=this.stacked?c.get("stackedBarColor"):e<0?c.get("negBarColor"):c.get("barColor"),0===e&&c.get("zeroColor")!==n&&(o=c.get("zeroColor")),l&&(a=l.get(e))?o=a:s&&s.length>r&&(o=s[r]),i.isArray(o)?o[t%o.length]:o},renderRegion:function(t,r){var o,a,s,l,c,u,h,d,p,g,m=this.values[t],v=this.options,y=this.xaxisOffset,x=[],b=this.range,_=this.stacked,w=this.target,S=t*this.totalBarWidth,C=this.canvasHeightEf,T=this.yoffset;if(m=i.isArray(m)?m:[m],h=m.length,d=m[0],l=f(null,m),g=f(y,m,!0),l)return v.get("nullColor")?(s=r?v.get("nullColor"):this.calcHighlightColor(v.get("nullColor"),v),o=T>0?T-1:T,w.drawRect(S,o,this.barWidth-1,0,s,s)):n;for(c=T,u=0;u<h;u++){if(d=m[u],_&&d===y){if(!g||p)continue;p=!0}a=b>0?e.floor(C*(e.abs(d-y)/b))+1:1,d<y||d===y&&0===T?(o=c,c+=a):(o=T-a,T-=a),s=this.calcColor(u,d,t),r&&(s=this.calcHighlightColor(s,v)),x.push(w.drawRect(S,o,this.barWidth-1,a-1,s,s))}return 1===x.length?x[0]:x}}),i.fn.sparkline.tristate=C=o(i.fn.sparkline._base,_,{type:"tristate",init:function(t,e,r,o,a){var s=parseInt(r.get("barWidth"),10),l=parseInt(r.get("barSpacing"),10);C._super.init.call(this,t,e,r,o,a),this.regionShapes={},this.barWidth=s,this.barSpacing=l,this.totalBarWidth=s+l,this.values=i.map(e,Number),this.width=o=e.length*s+(e.length-1)*l,i.isArray(r.get("colorMap"))?(this.colorMapByIndex=r.get("colorMap"),this.colorMapByValue=null):(this.colorMapByIndex=null,this.colorMapByValue=r.get("colorMap"),this.colorMapByValue&&this.colorMapByValue.get===n&&(this.colorMapByValue=new y(this.colorMapByValue))),this.initTarget()},getRegion:function(t,n,i){return e.floor(n/this.totalBarWidth)},getCurrentRegionFields:function(){var t=this.currentRegion;return{isNull:this.values[t]===n,value:this.values[t],color:this.calcColor(this.values[t],t),offset:t}},calcColor:function(t,e){var n,i,r=this.values,o=this.options,a=this.colorMapByIndex,s=this.colorMapByValue;return n=s&&(i=s.get(t))?i:a&&a.length>e?a[e]:r[e]<0?o.get("negBarColor"):r[e]>0?o.get("posBarColor"):o.get("zeroBarColor")},renderRegion:function(t,n){var i,r,o,a,s,l,c=this.values,u=this.options,h=this.target;if(i=h.pixelHeight,o=e.round(i/2),a=t*this.totalBarWidth,c[t]<0?(s=o,r=o-1):c[t]>0?(s=0,r=o-1):(s=o-1,r=2),l=this.calcColor(c[t],t),null!==l)return n&&(l=this.calcHighlightColor(l,u)),h.drawRect(a,s,this.barWidth-1,r-1,l,l)}}),i.fn.sparkline.discrete=T=o(i.fn.sparkline._base,_,{type:"discrete",init:function(t,r,o,a,s){T._super.init.call(this,t,r,o,a,s),this.regionShapes={},this.values=r=i.map(r,Number),this.min=e.min.apply(e,r),this.max=e.max.apply(e,r),this.range=this.max-this.min,this.width=a="auto"===o.get("width")?2*r.length:this.width,this.interval=e.floor(a/r.length),this.itemWidth=a/r.length,o.get("chartRangeMin")!==n&&(o.get("chartRangeClip")||o.get("chartRangeMin")<this.min)&&(this.min=o.get("chartRangeMin")),o.get("chartRangeMax")!==n&&(o.get("chartRangeClip")||o.get("chartRangeMax")>this.max)&&(this.max=o.get("chartRangeMax")),this.initTarget(),this.target&&(this.lineHeight="auto"===o.get("lineHeight")?e.round(.3*this.canvasHeight):o.get("lineHeight"))},getRegion:function(t,n,i){return e.floor(n/this.itemWidth)},getCurrentRegionFields:function(){var t=this.currentRegion;return{isNull:this.values[t]===n,value:this.values[t],offset:t}},renderRegion:function(t,n){var i,r,o,a,l=this.values,c=this.options,u=this.min,h=this.max,d=this.range,f=this.interval,p=this.target,g=this.canvasHeight,m=this.lineHeight,v=g-m;return r=s(l[t],u,h),a=t*f,i=e.round(v-v*((r-u)/d)),o=c.get("thresholdColor")&&r<c.get("thresholdValue")?c.get("thresholdColor"):c.get("lineColor"),n&&(o=this.calcHighlightColor(o,c)),p.drawLine(a,i,a,i+m,o)}}),i.fn.sparkline.bullet=k=o(i.fn.sparkline._base,{type:"bullet",init:function(t,i,r,o,a){var s,l,c;k._super.init.call(this,t,i,r,o,a),this.values=i=u(i),c=i.slice(),c[0]=null===c[0]?c[2]:c[0],c[1]=null===i[1]?c[2]:c[1],s=e.min.apply(e,i),l=e.max.apply(e,i),s=r.get("base")===n?s<0?s:0:r.get("base"),this.min=s,this.max=l,this.range=l-s,this.shapes={},this.valueShapes={},this.regiondata={},this.width=o="auto"===r.get("width")?"4.0em":o,this.target=this.$el.simpledraw(o,a,r.get("composite")),i.length||(this.disabled=!0),this.initTarget()},getRegion:function(t,e,i){var r=this.target.getShapeAt(t,e,i);return r!==n&&this.shapes[r]!==n?this.shapes[r]:n},getCurrentRegionFields:function(){var t=this.currentRegion;return{fieldkey:t.substr(0,1),value:this.values[t.substr(1)],region:t}},changeHighlight:function(t){var e,n=this.currentRegion,i=this.valueShapes[n];switch(delete this.shapes[i],n.substr(0,1)){case"r":e=this.renderRange(n.substr(1),t);break;case"p":e=this.renderPerformance(t);break;case"t":e=this.renderTarget(t)}this.valueShapes[n]=e.id,this.shapes[e.id]=n,this.target.replaceWithShape(i,e)},renderRange:function(t,n){var i=this.values[t],r=e.round(this.canvasWidth*((i-this.min)/this.range)),o=this.options.get("rangeColors")[t-2];return n&&(o=this.calcHighlightColor(o,this.options)),this.target.drawRect(0,0,r-1,this.canvasHeight-1,o,o)},renderPerformance:function(t){var n=this.values[1],i=e.round(this.canvasWidth*((n-this.min)/this.range)),r=this.options.get("performanceColor");return t&&(r=this.calcHighlightColor(r,this.options)),this.target.drawRect(0,e.round(.3*this.canvasHeight),i-1,e.round(.4*this.canvasHeight)-1,r,r)},renderTarget:function(t){var n=this.values[0],i=e.round(this.canvasWidth*((n-this.min)/this.range)-this.options.get("targetWidth")/2),r=e.round(.1*this.canvasHeight),o=this.canvasHeight-2*r,a=this.options.get("targetColor");return t&&(a=this.calcHighlightColor(a,this.options)),this.target.drawRect(i,r,this.options.get("targetWidth")-1,o-1,a,a)},render:function(){var t,e,n=this.values.length,i=this.target;if(k._super.render.call(this)){for(t=2;t<n;t++)e=this.renderRange(t).append(),this.shapes[e.id]="r"+t,this.valueShapes["r"+t]=e.id;null!==this.values[1]&&(e=this.renderPerformance().append(),this.shapes[e.id]="p1",this.valueShapes.p1=e.id),null!==this.values[0]&&(e=this.renderTarget().append(),this.shapes[e.id]="t0",this.valueShapes.t0=e.id),i.render()}}}),i.fn.sparkline.pie=A=o(i.fn.sparkline._base,{type:"pie",init:function(t,n,r,o,a){var s,l=0;if(A._super.init.call(this,t,n,r,o,a),this.shapes={},this.valueShapes={},this.values=n=i.map(n,Number),"auto"===r.get("width")&&(this.width=this.height),n.length>0)for(s=n.length;s--;)l+=n[s];this.total=l,this.initTarget(),this.radius=e.floor(e.min(this.canvasWidth,this.canvasHeight)/2)},getRegion:function(t,e,i){var r=this.target.getShapeAt(t,e,i);return r!==n&&this.shapes[r]!==n?this.shapes[r]:n},getCurrentRegionFields:function(){var t=this.currentRegion;return{isNull:this.values[t]===n,value:this.values[t],percent:this.values[t]/this.total*100,color:this.options.get("sliceColors")[t%this.options.get("sliceColors").length],offset:t}},changeHighlight:function(t){var e=this.currentRegion,n=this.renderSlice(e,t),i=this.valueShapes[e];delete this.shapes[i],this.target.replaceWithShape(i,n),this.valueShapes[e]=n.id,this.shapes[n.id]=e},renderSlice:function(t,i){var r,o,a,s,l,c=this.target,u=this.options,h=this.radius,d=u.get("borderWidth"),f=u.get("offset"),p=2*e.PI,g=this.values,m=this.total,v=f?2*e.PI*(f/360):0;for(s=g.length,a=0;a<s;a++){if(r=v,o=v,m>0&&(o=v+p*(g[a]/m)),t===a)return l=u.get("sliceColors")[a%u.get("sliceColors").length],i&&(l=this.calcHighlightColor(l,u)),c.drawPieSlice(h,h,h-d,r,o,n,l);v=o}},render:function(){var t,i,r=this.target,o=this.values,a=this.options,s=this.radius,l=a.get("borderWidth");if(A._super.render.call(this)){for(l&&r.drawCircle(s,s,e.floor(s-l/2),a.get("borderColor"),n,l).append(),i=o.length;i--;)o[i]&&(t=this.renderSlice(i).append(),this.valueShapes[i]=t.id,this.shapes[t.id]=i);r.render()}}}),i.fn.sparkline.box=M=o(i.fn.sparkline._base,{type:"box",init:function(t,e,n,r,o){M._super.init.call(this,t,e,n,r,o),this.values=i.map(e,Number),this.width="auto"===n.get("width")?"4.0em":r,this.initTarget(),this.values.length||(this.disabled=1)},getRegion:function(){return 1},getCurrentRegionFields:function(){var t=[{field:"lq",value:this.quartiles[0]},{field:"med",value:this.quartiles[1]},{field:"uq",value:this.quartiles[2]}];return this.loutlier!==n&&t.push({field:"lo",value:this.loutlier}),this.routlier!==n&&t.push({field:"ro",value:this.routlier}),this.lwhisker!==n&&t.push({field:"lw",value:this.lwhisker}),this.rwhisker!==n&&t.push({field:"rw",value:this.rwhisker}),t},render:function(){var t,i,r,o,a,s,c,u,h,d,f,p=this.target,g=this.values,m=g.length,v=this.options,y=this.canvasWidth,x=this.canvasHeight,b=v.get("chartRangeMin")===n?e.min.apply(e,g):v.get("chartRangeMin"),_=v.get("chartRangeMax")===n?e.max.apply(e,g):v.get("chartRangeMax"),w=0;if(M._super.render.call(this)){if(v.get("raw"))v.get("showOutliers")&&g.length>5?(i=g[0],t=g[1],o=g[2],a=g[3],s=g[4],c=g[5],u=g[6]):(t=g[0],o=g[1],a=g[2],s=g[3],c=g[4]);else if(g.sort(function(t,e){return t-e}),o=l(g,1),a=l(g,2),s=l(g,3),r=s-o,v.get("showOutliers")){for(t=c=n,h=0;h<m;h++)t===n&&g[h]>o-r*v.get("outlierIQR")&&(t=g[h]),g[h]<s+r*v.get("outlierIQR")&&(c=g[h]);i=g[0],u=g[m-1]}else t=g[0],c=g[m-1];this.quartiles=[o,a,s],this.lwhisker=t,this.rwhisker=c,this.loutlier=i,this.routlier=u,f=y/(_-b+1),v.get("showOutliers")&&(w=e.ceil(v.get("spotRadius")),y-=2*e.ceil(v.get("spotRadius")),f=y/(_-b+1),i<t&&p.drawCircle((i-b)*f+w,x/2,v.get("spotRadius"),v.get("outlierLineColor"),v.get("outlierFillColor")).append(),u>c&&p.drawCircle((u-b)*f+w,x/2,v.get("spotRadius"),v.get("outlierLineColor"),v.get("outlierFillColor")).append()),p.drawRect(e.round((o-b)*f+w),e.round(.1*x),e.round((s-o)*f),e.round(.8*x),v.get("boxLineColor"),v.get("boxFillColor")).append(),p.drawLine(e.round((t-b)*f+w),e.round(x/2),e.round((o-b)*f+w),e.round(x/2),v.get("lineColor")).append(),p.drawLine(e.round((t-b)*f+w),e.round(x/4),e.round((t-b)*f+w),e.round(x-x/4),v.get("whiskerColor")).append(),p.drawLine(e.round((c-b)*f+w),e.round(x/2),e.round((s-b)*f+w),e.round(x/2),v.get("lineColor")).append(),p.drawLine(e.round((c-b)*f+w),e.round(x/4),e.round((c-b)*f+w),e.round(x-x/4),v.get("whiskerColor")).append(),p.drawLine(e.round((a-b)*f+w),e.round(.1*x),e.round((a-b)*f+w),e.round(.9*x),v.get("medianColor")).append(),v.get("target")&&(d=e.ceil(v.get("spotRadius")),p.drawLine(e.round((v.get("target")-b)*f+w),e.round(x/2-d),e.round((v.get("target")-b)*f+w),e.round(x/2+d),v.get("targetColor")).append(),p.drawLine(e.round((v.get("target")-b)*f+w-d),e.round(x/2),e.round((v.get("target")-b)*f+w+d),e.round(x/2),v.get("targetColor")).append()),p.render()}}}),P=o({init:function(t,e,n,i){this.target=t,this.id=e,this.type=n,this.args=i},append:function(){return this.target.appendShape(this),this}}),N=o({_pxregex:/(\d+)(px)?\s*$/i,init:function(t,e,n){t&&(this.width=t,this.height=e,this.target=n,this.lastShapeId=null,n[0]&&(n=n[0]),i.data(n,"_jqs_vcanvas",this))},drawLine:function(t,e,n,i,r,o){return this.drawShape([[t,e],[n,i]],r,o)},drawShape:function(t,e,n,i){return this._genShape("Shape",[t,e,n,i])},drawCircle:function(t,e,n,i,r,o){return this._genShape("Circle",[t,e,n,i,r,o])},drawPieSlice:function(t,e,n,i,r,o,a){return this._genShape("PieSlice",[t,e,n,i,r,o,a])},drawRect:function(t,e,n,i,r,o){return this._genShape("Rect",[t,e,n,i,r,o])},getElement:function(){return this.canvas},getLastShapeId:function(){return this.lastShapeId},reset:function(){alert("reset not implemented")},_insert:function(t,e){i(e).html(t)},_calculatePixelDims:function(t,e,n){var r;r=this._pxregex.exec(e),r?this.pixelHeight=r[1]:this.pixelHeight=i(n).height(),r=this._pxregex.exec(t),r?this.pixelWidth=r[1]:this.pixelWidth=i(n).width()},_genShape:function(t,e){var n=j++;return e.unshift(n),new P(this,n,t,e)},appendShape:function(t){alert("appendShape not implemented")},replaceWithShape:function(t,e){alert("replaceWithShape not implemented")},insertAfterShape:function(t,e){alert("insertAfterShape not implemented")},removeShapeId:function(t){alert("removeShapeId not implemented")},getShapeAt:function(t,e,n){alert("getShapeAt not implemented")},render:function(){alert("render not implemented")}}),O=o(N,{init:function(e,r,o,a){O._super.init.call(this,e,r,o),this.canvas=t.createElement("canvas"),o[0]&&(o=o[0]),i.data(o,"_jqs_vcanvas",this),i(this.canvas).css({display:"inline-block",width:e,height:r,verticalAlign:"top"}),this._insert(this.canvas,o),this._calculatePixelDims(e,r,this.canvas),this.canvas.width=this.pixelWidth,this.canvas.height=this.pixelHeight,this.interact=a,this.shapes={},this.shapeseq=[],this.currentTargetShapeId=n,i(this.canvas).css({width:this.pixelWidth,height:this.pixelHeight})},_getContext:function(t,e,i){var r=this.canvas.getContext("2d");return t!==n&&(r.strokeStyle=t),r.lineWidth=i===n?1:i,e!==n&&(r.fillStyle=e),r},reset:function(){var t=this._getContext();t.clearRect(0,0,this.pixelWidth,this.pixelHeight),this.shapes={},this.shapeseq=[],this.currentTargetShapeId=n},_drawShape:function(t,e,i,r,o){var a,s,l=this._getContext(i,r,o);for(l.beginPath(),l.moveTo(e[0][0]+.5,e[0][1]+.5),a=1,s=e.length;a<s;a++)l.lineTo(e[a][0]+.5,e[a][1]+.5);i!==n&&l.stroke(),r!==n&&l.fill(),this.targetX!==n&&this.targetY!==n&&l.isPointInPath(this.targetX,this.targetY)&&(this.currentTargetShapeId=t)},_drawCircle:function(t,i,r,o,a,s,l){var c=this._getContext(a,s,l);c.beginPath(),c.arc(i,r,o,0,2*e.PI,!1),this.targetX!==n&&this.targetY!==n&&c.isPointInPath(this.targetX,this.targetY)&&(this.currentTargetShapeId=t),a!==n&&c.stroke(),s!==n&&c.fill()},_drawPieSlice:function(t,e,i,r,o,a,s,l){var c=this._getContext(s,l);c.beginPath(),c.moveTo(e,i),c.arc(e,i,r,o,a,!1),c.lineTo(e,i),c.closePath(),s!==n&&c.stroke(),l&&c.fill(),this.targetX!==n&&this.targetY!==n&&c.isPointInPath(this.targetX,this.targetY)&&(this.currentTargetShapeId=t)},_drawRect:function(t,e,n,i,r,o,a){return this._drawShape(t,[[e,n],[e+i,n],[e+i,n+r],[e,n+r],[e,n]],o,a)},appendShape:function(t){return this.shapes[t.id]=t,this.shapeseq.push(t.id),this.lastShapeId=t.id,t.id},replaceWithShape:function(t,e){var n,i=this.shapeseq;for(this.shapes[e.id]=e,n=i.length;n--;)i[n]==t&&(i[n]=e.id);delete this.shapes[t]},replaceWithShapes:function(t,e){var n,i,r,o=this.shapeseq,a={};for(i=t.length;i--;)a[t[i]]=!0;for(i=o.length;i--;)n=o[i],a[n]&&(o.splice(i,1),delete this.shapes[n],r=i);for(i=e.length;i--;)o.splice(r,0,e[i].id),this.shapes[e[i].id]=e[i]},insertAfterShape:function(t,e){var n,i=this.shapeseq;for(n=i.length;n--;)if(i[n]===t)return i.splice(n+1,0,e.id),void(this.shapes[e.id]=e)},removeShapeId:function(t){var e,n=this.shapeseq;for(e=n.length;e--;)if(n[e]===t){n.splice(e,1);break}delete this.shapes[t]},getShapeAt:function(t,e,n){return this.targetX=e,this.targetY=n,this.render(),this.currentTargetShapeId},render:function(){var t,e,n,i=this.shapeseq,r=this.shapes,o=i.length,a=this._getContext();for(a.clearRect(0,0,this.pixelWidth,this.pixelHeight),n=0;n<o;n++)t=i[n],e=r[t],this["_draw"+e.type].apply(this,e.args);this.interact||(this.shapes={},this.shapeseq=[])}}),R=o(N,{init:function(e,n,r){var o;R._super.init.call(this,e,n,r),r[0]&&(r=r[0]),i.data(r,"_jqs_vcanvas",this),this.canvas=t.createElement("span"),i(this.canvas).css({display:"inline-block",position:"relative",overflow:"hidden",width:e,height:n,margin:"0px",padding:"0px",verticalAlign:"top"}),this._insert(this.canvas,r),this._calculatePixelDims(e,n,this.canvas),this.canvas.width=this.pixelWidth,this.canvas.height=this.pixelHeight,o='<v:group coordorigin="0 0" coordsize="'+this.pixelWidth+" "+this.pixelHeight+'" style="position:absolute;top:0;left:0;width:'+this.pixelWidth+"px;height="+this.pixelHeight+'px;"></v:group>',this.canvas.insertAdjacentHTML("beforeEnd",o),this.group=i(this.canvas).children()[0],this.rendered=!1,this.prerender=""},_drawShape:function(t,e,i,r,o){var a,s,l,c,u,h,d,f=[];for(d=0,h=e.length;d<h;d++)f[d]=""+e[d][0]+","+e[d][1];return a=f.splice(0,1),o=o===n?1:o,s=i===n?' stroked="false" ':' strokeWeight="'+o+'px" strokeColor="'+i+'" ',l=r===n?' filled="false"':' fillColor="'+r+'" filled="true" ',c=f[0]===f[f.length-1]?"x ":"",u='<v:shape coordorigin="0 0" coordsize="'+this.pixelWidth+" "+this.pixelHeight+'"  id="jqsshape'+t+'" '+s+l+' style="position:absolute;left:0px;top:0px;height:'+this.pixelHeight+"px;width:"+this.pixelWidth+'px;padding:0px;margin:0px;"  path="m '+a+" l "+f.join(", ")+" "+c+'e"> </v:shape>'},_drawCircle:function(t,e,i,r,o,a,s){var l,c,u;return e-=r,i-=r,l=o===n?' stroked="false" ':' strokeWeight="'+s+'px" strokeColor="'+o+'" ',c=a===n?' filled="false"':' fillColor="'+a+'" filled="true" ',u='<v:oval  id="jqsshape'+t+'" '+l+c+' style="position:absolute;top:'+i+"px; left:"+e+"px; width:"+2*r+"px; height:"+2*r+'px"></v:oval>'},_drawPieSlice:function(t,i,r,o,a,s,l,c){var u,h,d,f,p,g,m,v;if(a===s)return"";if(s-a===2*e.PI&&(a=0,s=2*e.PI),h=i+e.round(e.cos(a)*o),d=r+e.round(e.sin(a)*o),f=i+e.round(e.cos(s)*o),p=r+e.round(e.sin(s)*o),h===f&&d===p){if(s-a<e.PI)return"";h=f=i+o,d=p=r}return h===f&&d===p&&s-a<e.PI?"":(u=[i-o,r-o,i+o,r+o,h,d,f,p],g=l===n?' stroked="false" ':' strokeWeight="1px" strokeColor="'+l+'" ',m=c===n?' filled="false"':' fillColor="'+c+'" filled="true" ',v='<v:shape coordorigin="0 0" coordsize="'+this.pixelWidth+" "+this.pixelHeight+'"  id="jqsshape'+t+'" '+g+m+' style="position:absolute;left:0px;top:0px;height:'+this.pixelHeight+"px;width:"+this.pixelWidth+'px;padding:0px;margin:0px;"  path="m '+i+","+r+" wa "+u.join(", ")+' x e"> </v:shape>')},_drawRect:function(t,e,n,i,r,o,a){return this._drawShape(t,[[e,n],[e,n+r],[e+i,n+r],[e+i,n],[e,n]],o,a);
+},reset:function(){this.group.innerHTML=""},appendShape:function(t){var e=this["_draw"+t.type].apply(this,t.args);return this.rendered?this.group.insertAdjacentHTML("beforeEnd",e):this.prerender+=e,this.lastShapeId=t.id,t.id},replaceWithShape:function(t,e){var n=i("#jqsshape"+t),r=this["_draw"+e.type].apply(this,e.args);n[0].outerHTML=r},replaceWithShapes:function(t,e){var n,r=i("#jqsshape"+t[0]),o="",a=e.length;for(n=0;n<a;n++)o+=this["_draw"+e[n].type].apply(this,e[n].args);for(r[0].outerHTML=o,n=1;n<t.length;n++)i("#jqsshape"+t[n]).remove()},insertAfterShape:function(t,e){var n=i("#jqsshape"+t),r=this["_draw"+e.type].apply(this,e.args);n[0].insertAdjacentHTML("afterEnd",r)},removeShapeId:function(t){var e=i("#jqsshape"+t);this.group.removeChild(e[0])},getShapeAt:function(t,e,n){var i=t.id.substr(8);return i},render:function(){this.rendered||(this.group.innerHTML=this.prerender,this.rendered=!0)}})})}(document,Math),define("download",["jquery","laconic"],function(){!function(t){var e="downloader",n={_init:function(e){return this.each(function(){function n(){return void 0!=t("<a>")[0].download}var i=t(this),r=t.extend({name:"swish-download",ext:"dat"},e),o=r.content_type,a=r.filename||"swish-download.dat",s=r.charset||"charset=UTF-8";n()&&o||(o="application/octet-stream");var l="data:"+o+";"+s+",";l+="base64"==s?r.data:encodeURIComponent(r.data),i.attr("download",a),i.attr("href",l),i.attr("title","Download (use menu for save link as)"),i.text(a),i.addClass("btn btn-primary download"),i.append(t.el.span({class:"glyphicon glyphicon-download"}))})}};t.fn.downloader=function(i){return n[i]?n[i].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof i&&i?void t.error("Method "+i+" does not exist on jQuery."+e):n._init.apply(this,arguments)}}(jQuery)}),define("runner",["jquery","config","preferences","cm/lib/codemirror","form","prolog","links","modal","answer","laconic","sparkline","download","search"],function($,config,preferences,CodeMirror,form,prolog,links,modal){function glyphButton(t,e){var n=$.el.a({href:"#",class:"close btn btn-link btn-sm",title:e},$.el.span({class:"glyphicon glyphicon-"+t}));return n}!function(t){var e="prologRunners",n={_init:function(n){return this.each(function(){function n(){var e=t.el.span({class:"glyphicon glyphicon-menu-hamburger"}),n=form.widgets.dropdownButton(e,{divClass:"runners-menu btn-transparent",ulClass:"pull-right",client:i,actions:{"Collapse all":function(){this.find(".prolog-runner").prologRunner("toggleIconic",!0)},"Expand all":function(){this.find(".prolog-runner").prologRunner("toggleIconic",!1)},"Stop all":function(){this.find(".prolog-runner").prologRunner("stop")},Clear:function(){this.prologRunners("clear")}}});return n}var i=t(this),r={};r.stretch=t(t.el.div({class:"stretch"})),r.inner=t(t.el.div({class:"inner"})),i.append(n()),i.append(r.stretch),i.append(r.inner),i.on("pane.resize",function(){i.prologRunners("scrollToBottom",!0)}),i.data(e,r)})},run:function(e){var n=this.data("prologRunners");e.iconifyLast&&this.prologRunners("iconifyLast");var i=t.el.div({class:"prolog-runner"});return n.inner.append(i),t(i).prologRunner(e),this.prologRunners("scrollToBottom"),this},clear:function(){this.find(".prolog-runner").prologRunner("close")},iconifyLast:function(){var e=t(this.inner).children().last();if(1==e.length){var n=e.prologRunner();n.alive()||n.toggleIconic(!0)}return this},scrollToBottom:function(e){return this.each(function(){var n=t(this),i=n.data("prologRunners"),r=i.inner.height(),o=n.height()-r-4-2;(o>0||e!==!0)&&(i.stretch.height(o>0?o:0),n.scrollTop(r))}),this}};t.fn.prologRunners=function(i){return n[i]?n[i].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof i&&i?void t.error("Method "+i+" does not exist on jQuery."+e):n._init.apply(this,arguments)}}(jQuery),function($){function RS(t){return $(t).closest(".prolog-runners")}function addAnswer(t,e){var n=t.find(".runner-results");return n.append(e),this}function aliveState(t){switch(t){case"running":case"wait-next":case"wait-input":case"wait-debug":return!0;default:return!1}}function answerTable(t){var e=[{class:"projection"}];for(i=0;i<t.length;i++)e.push($.el.th({class:"pl-pvar"},t[i]));e.push($.el.th({class:"answer-nth"},""));var n=$.el.table({class:"prolog-answers"},$.el.tbody($.el.tr.apply(this,e)));return n}function runScripts(elem){var scripts=[];if(elem=$(elem),elem.find("script").each(function(){var t=this.getAttribute("type")||"text/javascript";"text/javascript"==t&&scripts.push(this.textContent)}),scripts.length>0){var script="(function(node){"+scripts.join("\n")+"})",node=new Node({node:elem[0]});try{eval(script)(node)}catch(t){alert(t)}}}function Node(t){this.my_node=t.node}function breakpoints(t){var e=t.data(pluginName);return $(t).parents(".swish").swish("breakpoints",e.prolog.id)}function registerSources(t){var e=t.options.runner,n=e.data(pluginName);n.query.editor&&$(n.query.editor).prologEditor("pengine",{add:t.id})}function handleCreate(){var t,e=this.pengine.options.runner,n=e.data(pluginName),i=$.extend({},n.screen),r=config.swish.residuals_var||"Residuals";registerSources(this.pengine),(t=breakpoints(e))&&(i.breakpoints=Pengine.stringify(t)),n.chunk&&(i.chunk=n.chunk),this.pengine.ask("'$swish wrapper'((\n"+termNoFullStop(n.query.query)+"\n), "+r+")",i),e.prologRunner("setState","running")}function handleSuccess(){for(var t=this.pengine.options.runner,e=0;e<this.data.length;e++){var n=this.data[e];this.projection&&(n.projection=this.projection),t.prologRunner("renderAnswer",n)}this.time>.1&&addAnswer(t,$.el.div({class:"cputime"},$.el.span(this.time.toFixed(3)," seconds cpu time"))),t.prologRunner("setState",this.more?"wait-next":"true")}function handleFailure(){var t=this.pengine.options.runner;addAnswer(t,$.el.span({class:"prolog-false"},"false")),t.prologRunner("setState","false")}function handleStop(){var t=this.pengine.options.runner;t.prologRunner("setState","stopped")}function handlePrompt(){var t=this.pengine.options.runner,e=t.data("prologRunner"),n=this.data||"Please enter a Prolog term";if(e.wait_for="term","object"==typeof n){if("trace"==n.type)return t.prologRunner("trace",this);if("form"==n.type)return t.prologRunner("form",this);if("jQuery"==n.type)return t.prologRunner("jQuery",this);"console"==n.type?(n=n.prompt||"console> ",e.wait_for="line"):n=JSON.stringify(n)}t.prologRunner("setPrompt",n),t.prologRunner("setState","wait-input")}function clickableLocations(t,e){var n=/pengine:\/\/[-0-9a-f]{36}\/src:(\d+)/;return t.replace(n,function(t){var e=t.match(n)[1];return"<a class='goto-error' title='Goto location'><span class='glyphicon glyphicon-hand-right'></span> <b>line <span class='line'>"+e+"</span></b></a>"})}function gotoError(t){var e=$(t.target).closest("a.goto-error"),n=$(t.target).closest(".error-context"),i=n.data("error_context");if(e[0]){var r=parseInt(e.find("span.line").text()),o=e.find("span.file").text();return t.preventDefault(),o?n.closest("body.swish").swish("playFile",{file:o,line:r}):$(i.editor).prologEditor("gotoLine",r),!1}i.location.file?n.closest("body.swish").swish("playFile",i.location):$(i.editor).prologEditor("gotoLine",i.location.line)}function handleOutput(t){function e(){var e=a.file+":"+a.line+":";a.ch&&(e+=a.ch+":"),e+="\\s*",t.data=clickableLocations(t.data.replace(new RegExp(e,"g"),""),r.editor),o=n.prologRunner("outputHTML",t.data),$(o).addClass("error-context"),$(o).append($.el.span({class:"glyphicon glyphicon-hand-right"})),$(o).attr("title","Error in program.  Click to show in context"),$(o).on("click",gotoError),$(o).data("error_context",r)}var n=t.pengine.options.runner,i=n.data(pluginName);if(i){if("string"==typeof t.data){var r={editor:i.query.editor};if(t.data=t.data.replace(/'[-0-9a-f]{36}':/g,""),t.location){var o,a=t.location,s="swish://";if(a.file.startsWith(s)){var l=a.file.slice(s.length);r.location={file:l,line:a.line},e()}else a.file.startsWith("pengine://")&&(r.location={line:a.line},e(i.query.editor));registerSources(t.pengine),t.error_context=r,t.error_handler=gotoError,$(".swish-event-receiver").trigger("source-error",t)}else{var o=n.prologRunner("outputHTML",clickableLocations(t.data,r.editor));$(o).on("click",gotoError),$(o).data("error_context",r)}}else"object"==typeof t.data?n.prologRunner(t.data.action,t.data):console.log(t.data);RS(n).prologRunners("scrollToBottom")}}function handleError(){var t=this.pengine.options.runner;"too_many_pengines"==this.code?this.message="Too many open queries.  Please complete some\nqueries by using |Next|, |Stop| or by\nclosing some queries.":"string"==typeof this.data?this.message=this.data.replace(new RegExp("'"+this.pengine.id+"':","g"),""):this.message="Unknown error",t.prologRunner("error",this),t.prologRunner("setState","error")}function handleAbort(){var t=this.pengine.options.runner,e=t.data("prologRunner");e?(t.prologRunner("error","** Execution aborted **"),t.prologRunner("setState","aborted")):this.pengine.destroy()}function handlePing(){var t=this.pengine.options.runner;t.prologRunner("ping",this.data)}function answerHasOutput(t){return t.variables.length>0||t.residuals}function termNoFullStop(t){return String($.trim(t)).replace(/\.$/,"")}var pluginName="prologRunner",keyBindings={59:"next",186:"next",32:"next",190:"stop",13:"stop",65:"stopOrAbort",27:"stopOrAbort",46:"close",112:"help"},methods={_init:function(t){return this.each(function(){function e(t,e,n){var i=$.el.button({title:e,class:"rtb-"+n},$.el.span({class:"glyphicon glyphicon-"+t}));return $(i).on("click",function(){r.prologRunner(n)}),i}function n(){var t=$.el.span({class:"runner-state show-state idle"});return form.widgets.dropdownButton(t)}function i(){function t(){r.prologRunner("next",1)}function e(){r.prologRunner("next",10)}function n(){r.prologRunner("next",100)}function i(){r.prologRunner("next",1e3)}function a(){o.prolog.stop()}function s(){o.prolog.abort()}function l(t,e){var n=$.el.button(e);return $(n).on("click",t),n}function c(){var t=$.el.input({class:"prolog-input"}),e=$.el.button("Send");return $(t).keypress(function(e){return 13==e.which&&r.prologRunner("respond",$(t).val())?($(t).val(""),e.preventDefault(),!1):void("Esc"!=e.key&&e.stopPropagation())}),$(e).on("click",function(){r.prologRunner("respond",$(t).val())}),{input:t,button:e}}function u(){var t=$.el.span({class:"sparklines"},"");return t}var h=c(),d=$.el.div({class:"controller show-state"},$.el.span({class:"running"},l(s,"Abort")),$.el.span({class:"wait-next"},l(t,"Next"),l(e,"10"),l(n,"100"),l(i,"1,000")," ",l(a,"Stop")),$.el.span({class:"wait-input"},l(s,"Abort"),h.button,$.el.span(h.input)),u());return d}var r=$(this),o={};if(r.addClass("prolog-runner panel panel-default"),t.tabled&&r.addClass("tabled"),0!=t.title){var a=$.el.span({class:"query cm-s-prolog"});CodeMirror.runMode(t.query,"prolog",a),r.append($.el.div({class:"runner-title panel-heading"},e("remove-circle","Close","close"),e("minus","Iconify","toggleIconic"),e("download","Download CSV","downloadCSV"),n(),a))}else{var s=glyphButton("remove-circle","Close");r.append(s),$(s).on("click",function(){r.prologRunner("close")})}return t.chunk&&(o.chunk=t.chunk),r.append($.el.div({class:"runner-results panel-body"})),r.append(i()),r.data("prologRunner",o),r.prologRunner("populateActionMenu"),r.keydown(function(t){"wait-input"==r.prologRunner("getState")||t.ctrlKey||t.altKey||keyBindings[t.which]&&(t.preventDefault(),r.prologRunner(keyBindings[t.which]))}),r.on("click","a",links.followLink),o.savedFocus=document.activeElement,r.attr("tabindex",-1),r.focus(),o.query=t,o.answers=0,r.prologRunner("setScreenDimensions"),require([config.http.locations.pengines+"/pengines.js"],function(){o.prolog=new Pengine({server:config.http.locations.pengines,runner:r,application:"swish",src:t.source,destroy:!1,format:"json-html",oncreate:handleCreate,onsuccess:handleSuccess,onfailure:handleFailure,onstop:handleStop,onprompt:handlePrompt,onoutput:handleOutput,onping:handlePing,onerror:handleError,onabort:handleAbort}),o.prolog.state="idle",config.swish.ping&&void 0!=o.prolog.ping&&o.prolog.ping(1e3*config.swish.ping)}),this})},setScreenDimensions:function(){var t,e,n=this.data(pluginName),i=$.el.pre({class:"measure"},"xxxxxxxxxx"),r=this.width();e=this.closest(".prolog-runners"),0==e.length&&(e=this.closest(".nb-view")),e.length&&(t=e.height()),this.append(i);var o=$(i).width()/10,a=$(i).height();$(i).remove(),n.screen={width:r,cols:Math.floor(r/o)},void 0!==t&&(n.screen.height=t,n.screen.rows=Math.floor(t/a))},renderAnswer:function(t){var e=this.data("prologRunner"),n=++e.answers%2==0;if(e.query.tabled){if(1!=e.answers)return t.projection=e.projection,t.nth=e.answers,$(e.table).prologAnswer(t),this;if(t.projection&&t.projection.length>0){var i=answerTable(t.projection);return addAnswer(this,i),e.table=i,e.projection=t.projection,t.nth=e.answers,$(e.table).prologAnswer(t),this}}var r=$.el.div({class:"answer "+(n?"even":"odd")},$.el.span({class:"answer-no"},e.answers));addAnswer(this,r),$(r).prologAnswer(t)},outputHTML:function(t){var e=$.el.span({class:"output"});return addAnswer(this,e),e.innerHTML=t,runScripts(e),e},downloadButton:function(t){var e=$.el.a({class:"download"});addAnswer(this,e),$(e).downloader(t)},syntaxError:function(t){var e=this.data(pluginName);return t.data='<pre class="output msg-error">'+t.message+"</pre>",t.location.file=!0,$(e.query.query_editor).prologEditor("highlightError",t),this},error:function(t){var e;if("object"==typeof t){if("died"==t.code)return addAnswer(this,$.el.div({class:"RIP",title:"Remote pengine timed out"})),this;if("syntax_error"==t.code){var n=t.message.match(/^HTTP:DATA:(\d+):(\d+):\s*(.*)/);n&&4==n.length&&(this.prologRunner("syntaxError",{location:{line:parseInt(n[1])-1,ch:parseInt(n[2])},message:n[3]}),e="Cannot run query due to a syntax error (check query window)")}e||(e=t.message)}else e=t;return addAnswer(this,$.el.pre({class:"prolog-message msg-error"},e)),this},trace:function(t){function e(t){return t.charAt(0).toUpperCase()+t.slice(1)}function n(e,n,i){var r=$.el.button({class:n,title:e},$.el.span(e));return $(r).on("click",function(e){void 0!==i&&(n+="("+Pengine.stringify(i(e))+")"),t.pengine.respond(n),$(e.target).parent().remove()}),r}var i=$.el.span({class:"goal"}),r=t.data;$(i).html(r.goal),addAnswer(this,$.el.div({class:"prolog-trace"},$.el.span({class:"depth",style:"width:"+(5*r.depth-1)+"px"}," "),$.el.span({class:"port "+r.port},e(r.port),":"),i)),"exception"==r.port&&addAnswer(this,$.el.div({class:"prolog-exception"},r.exception.message)),addAnswer(this,$.el.div({class:"trace-buttons"},n("Continue","nodebug",function(t){return breakpoints($(t.target).closest(".prolog-runner"))}),n("Step into","continue"),n("Step over","skip"),n("Step out","up"),n("Retry","retry"),n("Abort","abort"))),this.closest(".swish").find(".tabbed").trigger("trace-location",r),this.prologRunner("setState","wait-debug")},setPrompt:function(t){this.find(".controller input").attr("placeholder",t)},jQuery:function(t){var e,n=t.data;if("string"==typeof n.selector)e=$(n.selector);else if("object"==typeof n.selector){switch(n.selector.root){case"this":root=this;break;case"swish":root=this.closest(".swish")}e=""==n.selector.sub?root:root.find(n.selector.sub)}console.log(e);var i=e[n.method].apply(e,n.arguments);console.log(i),t.pengine.respond(Pengine.stringify(i))},form:function(t){var e=this.data("prologRunner");modal.show({title:"Please enter parameters",body:function(){this.html(t.data.html),this.find("[data-search-in]").search({search:!1}),this.on("click","button[data-action]",function(t){var n=$(t.target).closest("button"),i=n.data("action");if("run"==i){var r=$(t.target).closest("form"),o=form.serializeAsObject(r,!0),a=Pengine.stringify(o);e.prolog.respond(a)}else"cancel"==i&&e.prolog.respond("cancel");return n.closest(".modal").modal("hide"),t.preventDefault(),!1})}})},respond:function(t){var e=this.data("prologRunner");if("term"==e.wait_for){if(s=termNoFullStop(t),""==s)return null}else s=Pengine.stringify(t+"\n");return addAnswer(this,$.el.div({class:"response"},t)),e.prolog.respond(s),this},stop:function(){return this.each(function(){var t=$(this),e=t.data("prologRunner");e.prolog.stop()})},stopOrAbort:function(){return this.each(function(){var t=$(this),e=t.data("prologRunner"),n=t.prologRunner("getState");switch(n){case"running":case"wait-input":e.prolog.abort();break;case"wait-next":e.prolog.stop()}})},next:function(t){return this.each(function(){var e=$(this),n=e.data("prologRunner");n.prolog.next(t),e.prologRunner("setState","running")})},abort:function(){return this.each(function(){var t=$(this),e=t.data("prologRunner");e.prolog.abort()})},close:function(){if(this.length){var t=RS(this);this.each(function(){var t=$(this),e=t.data("prologRunner");t.prologRunner("alive")&&($(".prolog-editor").trigger("pengine-died",e.prolog.id),e.prolog.abort())}),this.remove(),t.prologRunners("scrollToBottom",!0)}return this},help:function(){$(".swish-event-receiver").trigger("help",{file:"runner.html"})},toggleIconic:function(t){return void 0==t?this.toggleClass("iconic"):t?this.addClass("iconic"):this.removeClass("iconic"),RS(this).prologRunners("scrollToBottom",!0),this},populateActionMenu:function(t){var e=this.find(".runner-title .btn-group.dropdown");return t=$.extend({"Re-run":function(){console.log("Re-Run ",this)}},t),form.widgets.populateMenu(e,this,t),this},downloadCSV:function(t){var e=this.data("prologRunner"),n=termNoFullStop(e.query.query);return prolog.downloadCSV(n,e.query.source,t),this},setState:function(t){var e=this.data("prologRunner");if(e){if(e.prolog.state!=t){var n=this.find(".show-state");n.removeClass(e.prolog.state).addClass(t),e.prolog.state=t,!aliveState(t)&&e.savedFocus?($(e.savedFocus).focus(),e.savedFocus=null):"wait-input"==t&&this.find("input").focus()}var i=RS(this);return aliveState(t)?"wait-next"==t||"true"==t?setTimeout(function(){i.prologRunners("scrollToBottom")},100):i.prologRunners("scrollToBottom"):($(".prolog-editor").trigger("pengine-died",e.prolog.id),e.prolog.destroy(),setTimeout(function(){i.prologRunners("scrollToBottom")},100)),this}},getState:function(){var t=this.data("prologRunner");return t.prolog?t.prolog.state:"idle"},alive:function(){return aliveState(this.prologRunner("getState"))},ping:function(t){function e(t,e){function n(t){t=t.toString();for(var e=/(-?\d+)(\d{3})/;e.test(t);)t=t.replace(e,"$1,$2");return t}var i=Math.round(Math.pow(10,e)/1e4*t);return n(i)}var n=this.data("prologRunner");if(n&&n.prolog&&"running"==n.prolog.state){var r=this.find(".sparklines"),o=["global","local","trail"],a=["red","blue","green"],s=["Global ","Local ","Trail "],l=10;for(n.stacks||(n.stacks={global:{usage:[]},local:{usage:[]},trail:{usage:[]}}),i=0;i<o.length;i++){var c=o[i],u=t.stacks[c].limit,h=t.stacks[c].usage,d=Math.log10(h/u*1e4);n.stacks[c].limit=u,n.stacks[c].usage.length>=l&&(n.stacks[c].usage=n.stacks[c].usage.slice(1)),n.stacks[c].usage.push(d),r.sparkline(n.stacks[c].usage,{height:r.parent().height(),composite:i>0,chartRangeMin:0,chartRangeMax:4,lineColor:a[i],tooltipPrefix:s[i],tooltipSuffix:" bytes",tooltipChartTitle:0==i?"Stack usage":void 0,numberFormatter:function(t){return e(u,t)}})}}}},node_id=1;Node.prototype.node=function(){return $(this.my_node)},Node.prototype.unique_id=function(){return this.uid||(this.uid=node_id++),this.uid},$.fn.prologRunner=function(t){return methods[t]?methods[t].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof t&&t?void $.error("Method "+t+" does not exist on jQuery."+pluginName):methods._init.apply(this,arguments)}}(jQuery)}),define("gitty",["jquery","config","form","modal","laconic"],function(t,e,n,i){function r(e,n){function i(t){(e[t]||n[t])&&e[t]!=n[t]&&(r[t]={from:e[t],to:n[t]})}var r={};return i("author"),i("title"),i("data"),i("public"),i("example"),i("name"),(d=a(e.tags,n.tags))&&(r.tags=d),t.isEmptyObject(r)?null:r}function o(e,n){var i={};for(var r in e)if(e.hasOwnProperty(r)){switch(typeof e[r]){case"object":if(t.isArray(e[r])&&!a(e[r],n[r]))continue;break;case"string":case"boolean":if(n[r]==e[r])continue}i[r]=e[r]}return i}function a(e,n){function i(t,e){for(var n=[],i=0;i<e.length;i++)t.indexOf(e[i])<0&&n.push(e[i]);return n}var r,o={};return e=e||[],n=n||[],(r=i(e,n)).length>0&&(o.added=r),(r=i(n,e)).length>0&&(o.deleted=r),t.isEmptyObject(o)?null:o}return function(t){var o="gitty",a={_init:function(e){return this.each(function(){function n(e,n,i,r){var o={role:"presentation"},a=[];n&&a.push("active"),r&&a.push("disabled"),a!=[]&&(o.class=a.join(" "));var s=t.el.li(o,t.el.a({href:"#"+i,"data-toggle":"tab"},e));return s}var i,r=t(this),a=r.data(o)||{},s=e.meta;a.commits=[],a.commits[s.commit]=s,a.commit=s.commit,a.editor=e.editor,henabled=!Boolean(s.previous),i=t(t.el.div({class:"tab-content"})),r.append(t.el.ul({class:"nav nav-tabs"},n("Meta data",!0,"gitty-meta-data"),n("History",!1,"gitty-history",henabled),n("Changes",!1,"gitty-diff",henabled))),r.append(i),i.append(t.el.div({class:"tab-pane fade in active gitty-meta-data",id:"gitty-meta-data"})),r.find('[href="#gitty-meta-data"]').on("show.bs.tab",function(t){r.gitty("showMetaData")}),i.append(t.el.div({class:"tab-pane fade gitty-history",id:"gitty-history"})),r.find('[href="#gitty-history"]').on("show.bs.tab",function(t){r.gitty("showHistory")}),i.append(t.el.div({class:"tab-pane fade gitty-diff",id:"gitty-diff"})),r.find('[href="#gitty-diff"]').on("show.bs.tab",function(t){r.gitty("showDiff")}),r.data(o,a),r.gitty("showMetaData")})},title:function(e){var n=t.el.span("File ",t.el.span({class:"filename"},e.name));return"HEAD"!=e.symbolic&&e.commit&&t(n).append("@",t.el.span({class:"sha1 abbrev"},e.commit.substring(0,7))),n},showMetaData:function(){return this.each(function(){var e,i=t(this),r=i.data(o),a=i.find(".gitty-meta-data"),s=r.commits[r.commit];r.metaData!=r.commit&&(r.metaData=r.commit,a.html(""),e=t.el.form({class:"form-horizontal"},n.fields.fileName(s.name,s.public,s.example,!0),n.fields.title(s.title),n.fields.author(s.author),n.fields.date(s.time,"Date","date"),n.fields.tags(s.tags)),"HEAD"==s.symbolic&&t(e).append(n.fields.buttons({label:"Update meta data",action:function(t,e){return r.editor.storage("save",e,"only-meta-data"),!1}})),a.append(e))})},showHistory:function(){return this.each(function(){var r,a=t(this),s=a.data(o),l=a.find(".gitty-history"),c=s.commits[s.commit];if(!s.history){l.html(""),l.append(t.el.table({class:"table table-striped table-condensed gitty-history","data-click-to-select":!0,"data-single-select":!0},t.el.tr(t.el.th("Comment"),t.el.th("Date"),t.el.th("User"),t.el.th("Changed")),t.el.tbody())),r=n.widgets.glyphIconButton("play",{title:"Open the highlighted version in SWISH",class:"btn-primary"}),l.append(r),t(r).on("click",function(e){var n=a.find("tr.success");if(1==n.length){var i=n.data("commit");"HEAD"==s.commits[i].symbolic?file=s.commits[i].name:file=i,a.parents(".swish").swish("playFile",file),t("#ajaxModal").modal("hide")}return!1});var u=e.http.locations.web_storage+encodeURI(c.name);t.ajax({url:u,contentType:"application/json",type:"GET",data:{format:"history",depth:6,to:s.commit},success:function(t){a.gitty("fillHistoryTable",t),s.history=s.commit},error:function(t){i.ajaxError(jqXHR)}})}})},fillHistoryTable:function(e){function n(e){var n,i,o=t.el.span();if(e.previous){if((n=a.commits[e.previous])&&(i=r(e,n))){var s=0;for(var l in i)if(i.hasOwnProperty(l)){var c="name"==l?"forked "+n.name:l;t(o).append(0==s++?void 0:", ",t.el.span({class:"change-type"},c))}}}else t(o).append("initial");return o}for(var i=this,a=this.data(o),s=this.find(".table.gitty-history tbody"),l=0;l<e.length;l++){var c=e[l];a.commits[c.commit]||(a.commits[c.commit]=c)}for(var l=0;l<e.length;l++){var u,c=e[l];if(l==e.length-1&&c.previous&&!a.commit[c.previous])break;var h={"data-commit":c.commit};a.commit==c.commit&&(h.class="success"),u=t.el.tr(h,t.el.td({class:"commit-message"},c.commit_message||"No comment"),t.el.td({class:"date"},new Date(1e3*c.time).toLocaleString()),t.el.td({class:"author"},c.author||"No author"),t.el.td({class:"changes"},n(c))),s.append(u)}s.on("click","tr",function(e){var n=t(e.target).parents("tr"),r=n.data("commit");i.gitty("setCommit",r)})},setCommit:function(t){var e=this.data(o),n=this.parent(".modal-content").find("h2");return n.html(""),n.append(this.gitty("title",e.commits[t])),this.find("tr.success").removeClass("success"),this.find("tr[data-commit="+t+"]").addClass("success"),e.commit=t,this},showDiff:function(){return this.each(function(){var n=t(this),r=n.data(o);if(r.diff!=r.commit){n.find(".gitty-diff").html("");var a=e.http.locations.web_storage+encodeURI(r.commit);t.ajax({url:a,contentType:"application/json",type:"GET",data:{format:"diff"},success:function(t){n.gitty("fillDiff",t),r.diff=r.commit},error:function(t){i.ajaxError(t)}})}})},fillDiff:function(t){t.tags&&this.gitty("diffTags",t.tags),t.data&&this.gitty("udiffData",t.data)},diffTags:function(e){function n(e,n){o.append(t.el.span({class:"diff-tag "+n},e))}var i=this.find(".gitty-diff"),r=t(t.el.div({class:"diff-tags"},t.el.label("Tags"))),o=t(t.el.span({class:"diff-tags"}));if(r.append(o),e.deleted.length){o.append("Removed: ");for(var a=0;a<e.deleted.length;a++)n(e.deleted[a],"deleted")}if(e.added.length){o.append(e.deleted.length?", ":"","Added: ");for(var a=0;a<e.added.length;a++)n(e.added[a],"added")}return i.append(r),this},udiffData:function(e){for(var n=this.find(".gitty-diff"),i=e.split("\n"),r=t(t.el.pre({class:"udiff"})),o=0;o<i.length;o++){var a=i[o],s={"@":"udiff-hdr"," ":"udiff-ctx","+":"udiff-add","-":"udiff-del"};r.append(t.el.span({class:s[a.charAt(0)]},a),t.el.br())}n.append(r)}};t.fn.gitty=function(e){return a[e]?a[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery."+o):a._init.apply(this,arguments)}}(jQuery),{diffMeta:r,reduceMeta:o,diffTags:a}});var __whitespace={" ":!0,"\t":!0,"\n":!0,"\f":!0,"\r":!0},difflib={defaultJunkFunction:function(t){return __whitespace.hasOwnProperty(t)},stripLinebreaks:function(t){return t.replace(/^[\n\r]*|[\n\r]*$/g,"")},stringAsLines:function(t){for(var e=t.indexOf("\n"),n=t.indexOf("\r"),i=e>-1&&n>-1||n<0?"\n":"\r",r=t.split(i),o=0;o<r.length;o++)r[o]=difflib.stripLinebreaks(r[o]);return r},__reduce:function(t,e,n){if(null!=n)var i=n,r=0;else{if(!e)return null;var i=e[0],r=1}for(;r<e.length;r++)i=t(i,e[r]);return i},__ntuplecomp:function(t,e){for(var n=Math.max(t.length,e.length),i=0;i<n;i++){if(t[i]<e[i])return-1;if(t[i]>e[i])return 1}return t.length==e.length?0:t.length<e.length?-1:1},__calculate_ratio:function(t,e){return e?2*t/e:1},__isindict:function(t){return function(e){return t.hasOwnProperty(e)}},__dictget:function(t,e,n){return t.hasOwnProperty(e)?t[e]:n},SequenceMatcher:function(t,e,n){this.set_seqs=function(t,e){this.set_seq1(t),this.set_seq2(e)},this.set_seq1=function(t){t!=this.a&&(this.a=t,this.matching_blocks=this.opcodes=null)},this.set_seq2=function(t){t!=this.b&&(this.b=t,this.matching_blocks=this.opcodes=this.fullbcount=null,this.__chain_b())},this.__chain_b=function(){for(var t=this.b,e=t.length,n=this.b2j={},i={},r=0;r<t.length;r++){var o=t[r];if(n.hasOwnProperty(o)){var a=n[o];e>=200&&100*a.length>e?(i[o]=1,delete n[o]):a.push(r)}else n[o]=[r]}for(var o in i)i.hasOwnProperty(o)&&delete n[o];var s=this.isjunk,l={};if(s){for(var o in i)i.hasOwnProperty(o)&&s(o)&&(l[o]=1,delete i[o]);for(var o in n)n.hasOwnProperty(o)&&s(o)&&(l[o]=1,delete n[o])}this.isbjunk=difflib.__isindict(l),this.isbpopular=difflib.__isindict(i)},this.find_longest_match=function(t,e,n,i){for(var r,o=this.a,a=this.b,s=this.b2j,l=this.isbjunk,c=t,u=n,h=0,d=null,f={},p=[],g=t;g<e;g++){var m={},v=difflib.__dictget(s,o[g],p);for(var y in v)if(v.hasOwnProperty(y)){if(d=v[y],d<n)continue;if(d>=i)break;m[d]=r=difflib.__dictget(f,d-1,0)+1,r>h&&(c=g-r+1,u=d-r+1,h=r)}f=m}for(;c>t&&u>n&&!l(a[u-1])&&o[c-1]==a[u-1];)c--,u--,h++;for(;c+h<e&&u+h<i&&!l(a[u+h])&&o[c+h]==a[u+h];)h++;for(;c>t&&u>n&&l(a[u-1])&&o[c-1]==a[u-1];)c--,u--,h++;for(;c+h<e&&u+h<i&&l(a[u+h])&&o[c+h]==a[u+h];)h++;return[c,u,h]},this.get_matching_blocks=function(){if(null!=this.matching_blocks)return this.matching_blocks;for(var t,e,n,i,r,o,a,s,l,c=this.a.length,u=this.b.length,h=[[0,c,0,u]],d=[];h.length;)r=h.pop(),t=r[0],e=r[1],n=r[2],i=r[3],l=this.find_longest_match(t,e,n,i),o=l[0],a=l[1],s=l[2],s&&(d.push(l),t<o&&n<a&&h.push([t,o,n,a]),o+s<e&&a+s<i&&h.push([o+s,e,a+s,i]));d.sort(difflib.__ntuplecomp);var f,p,g,m=0,v=0,y=0,x=0,b=[];for(var _ in d)d.hasOwnProperty(_)&&(x=d[_],f=x[0],p=x[1],g=x[2],m+y==f&&v+y==p?y+=g:(y&&b.push([m,v,y]),m=f,v=p,y=g));return y&&b.push([m,v,y]),b.push([c,u,0]),this.matching_blocks=b,this.matching_blocks},this.get_opcodes=function(){if(null!=this.opcodes)return this.opcodes;var t=0,e=0,n=[];this.opcodes=n;var i,r,o,a,s,l=this.get_matching_blocks();for(var c in l)l.hasOwnProperty(c)&&(i=l[c],r=i[0],o=i[1],a=i[2],s="",t<r&&e<o?s="replace":t<r?s="delete":e<o&&(s="insert"),s&&n.push([s,t,r,e,o]),t=r+a,e=o+a,a&&n.push(["equal",r,t,o,e]));return n},this.get_grouped_opcodes=function(t){t||(t=3);var e=this.get_opcodes();e||(e=[["equal",0,1,0,1]]);var n,i,r,o,a,s;"equal"==e[0][0]&&(n=e[0],i=n[0],r=n[1],o=n[2],a=n[3],s=n[4],e[0]=[i,Math.max(r,o-t),o,Math.max(a,s-t),s]),"equal"==e[e.length-1][0]&&(n=e[e.length-1],i=n[0],r=n[1],o=n[2],a=n[3],s=n[4],e[e.length-1]=[i,r,Math.min(o,r+t),a,Math.min(s,a+t)]);var l=t+t,c=[],u=[];for(var h in e)e.hasOwnProperty(h)&&(n=e[h],i=n[0],r=n[1],o=n[2],a=n[3],s=n[4],"equal"==i&&o-r>l&&(c.push([i,r,Math.min(o,r+t),a,Math.min(s,a+t)]),u.push(c),c=[],r=Math.max(r,o-t),a=Math.max(a,s-t)),c.push([i,r,o,a,s]));return!c||1==c.length&&"equal"==c[0][0]||u.push(c),u},this.ratio=function(){return matches=difflib.__reduce(function(t,e){return t+e[e.length-1]},this.get_matching_blocks(),0),difflib.__calculate_ratio(matches,this.a.length+this.b.length)},this.quick_ratio=function(){var t,e;if(null==this.fullbcount){this.fullbcount=t={};for(var n=0;n<this.b.length;n++)e=this.b[n],t[e]=difflib.__dictget(t,e,0)+1}t=this.fullbcount;for(var i={},r=difflib.__isindict(i),o=numb=0,n=0;n<this.a.length;n++)e=this.a[n],r(e)?numb=i[e]:numb=difflib.__dictget(t,e,0),i[e]=numb-1,numb>0&&o++;return difflib.__calculate_ratio(o,this.a.length+this.b.length)},this.real_quick_ratio=function(){var t=this.a.length,e=this.b.length;return _calculate_ratio(Math.min(t,e),t+e)},this.isjunk=n?n:difflib.defaultJunkFunction,this.a=this.b=null,this.set_seqs(t,e)}};define("difflib",function(){}),diffview={buildView:function(t){function e(t,e){var n=document.createElement(t);return n.className=e,n}function n(t,e){var n=document.createElement(t);return n.appendChild(document.createTextNode(e)),n}function i(t,e,n){var i=document.createElement(t);return i.className=e,i.appendChild(document.createTextNode(n)),i}function r(t,r,o,a,s){return r<o?(t.appendChild(n("th",(r+1).toString())),t.appendChild(i("td",s,a[r].replace(/\t/g,"    "))),r+1):(t.appendChild(document.createElement("th")),t.appendChild(e("td","empty")),r)}function o(t,e,r,o,a){t.appendChild(n("th",null==e?"":(e+1).toString())),t.appendChild(n("th",null==r?"":(r+1).toString())),t.appendChild(i("td",a,o[null!=e?e:r].replace(/\t/g,"    ")))}var a=t.baseTextLines,s=t.newTextLines,l=t.opcodes,c=t.baseTextName?t.baseTextName:"Base Text",u=t.newTextName?t.newTextName:"New Text",h=t.contextSize,d=0==t.viewType||1==t.viewType?t.viewType:0;if(null==a)throw"Cannot build diff view; baseTextLines is not defined.";if(null==s)throw"Cannot build diff view; newTextLines is not defined.";if(!l)throw"Canno build diff view; opcodes is not defined.";var f=document.createElement("thead"),p=document.createElement("tr");f.appendChild(p),d?(p.appendChild(document.createElement("th")),p.appendChild(document.createElement("th")),p.appendChild(i("th","texttitle",c+" vs. "+u))):(p.appendChild(document.createElement("th")),p.appendChild(i("th","texttitle",c)),p.appendChild(document.createElement("th")),
+p.appendChild(i("th","texttitle",u))),f=[f];for(var g,m=[],v=0;v<l.length;v++){code=l[v],change=code[0];for(var y=code[1],x=code[2],b=code[3],_=code[4],w=Math.max(x-y,_-b),S=[],C=[],T=0;T<w;T++){if(h&&l.length>1&&(v>0&&T==h||0==v&&0==T)&&"equal"==change){var k=w-(0==v?1:2)*h;if(k>1){if(S.push(p=document.createElement("tr")),y+=k,b+=k,T+=k-1,p.appendChild(n("th","...")),d||p.appendChild(i("td","skip","")),p.appendChild(n("th","...")),p.appendChild(i("td","skip","")),v+1==l.length)break;continue}}S.push(p=document.createElement("tr")),d?"insert"==change?o(p,null,b++,s,change):"replace"==change?(C.push(g=document.createElement("tr")),y<x&&o(p,y++,null,a,"delete"),b<_&&o(g,null,b++,s,"insert")):"delete"==change?o(p,y++,null,a,change):o(p,y++,b++,a,change):(y=r(p,y,x,a,change),b=r(p,b,_,s,change))}for(var T=0;T<S.length;T++)m.push(S[T]);for(var T=0;T<C.length;T++)m.push(C[T])}m.push(p=i("th","author","diff view generated by ")),p.setAttribute("colspan",d?3:4),p.appendChild(g=n("a","jsdifflib")),g.setAttribute("href","http://github.com/cemerick/jsdifflib"),f.push(p=document.createElement("tbody"));for(var v in m)m.hasOwnProperty(v)&&p.appendChild(m[v]);p=e("table","diff"+(d?" inlinediff":""));for(var v in f)f.hasOwnProperty(v)&&p.appendChild(f[v]);return p}},define("diffview",function(){}),define("diff",["jquery","difflib","diffview"],function(){!function(t){var e="diff",n={_init:function(e){return this.each(function(){var n=difflib.stringAsLines(e.base),i=difflib.stringAsLines(e.head),r=new difflib.SequenceMatcher(n,i),o=r.get_opcodes(),a=void 0==e.contextSize?3:e.contextSize;this.appendChild(diffview.buildView({baseTextLines:n,newTextLines:i,opcodes:o,baseTextName:e.baseName||"Base text",newTextName:e.headName||"Current text",contextSize:a,viewType:t("inline").checked?1:0}))})}};t.fn.diff=function(i){return n[i]?n[i].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof i&&i?void t.error("Method "+i+" does not exist on jQuery."+e):n._init.apply(this,arguments)}}(jQuery)}),define("storage",["jquery","config","modal","form","gitty","history","tabbed","utils","laconic","diff"],function(t,e,n,i,r,o,a,s){function l(t){return t?t.split(".").slice(0,-1).join("."):null}function c(t){return t?t.split("/").pop():null}function u(e){if(e){for(var n=e.split("\n"),i=t(t.el.pre({class:"udiff"})),r=0;r<n.length;r++){var o=n[r],a={"@":"udiff-hdr"," ":"udiff-ctx","+":"udiff-add","-":"udiff-del"};i.append(t.el.span({class:a[o.charAt(0)]},o),t.el.br())}return i}return t(t.el.div({class:"udiff"},"No changes"))}function h(e){function n(e,n){r.append(t.el.span({class:n},e),t.el.br())}for(var i=e.split("\n"),r=t(t.el.pre({class:"udiff"})),o=null,a=0;a<i.length;a++){var s=i[a];"<<<<<<<"==s?(n(s,"edit-conflict-sep"),o="edit-conflict-me"):"edit-conflict-me"==o&&"======="==s?(n(s,"edit-conflict-sep"),o="edit-conflict-them"):"edit-conflict-them"==o&&">>>>>>>"==s?(n(s,"edit-conflict-sep"),o=null):o&&n(s,o)}return r}!function(t){function d(e,n){var i=t.el.table({class:"table table-striped"});t(i).append(t.el.tr(t.el.th("Path"),t.el.td(n.path))),t(i).append(t.el.tr(t.el.th("Modified"),t.el.td(new Date(1e3*n.last_modified).toLocaleString()))),t(i).append(t.el.tr(t.el.th("Loaded"),t.el.td(n.modified_since_loaded?"yes (modified)":n.loaded?"yes":"no"))),e.append(i)}function f(t,e){return"file_exists"==e.error?t+": file exists: "+e.file:JSON.stringify(e)}var p="storage",g={typeName:"program",is_clean:!0,markClean:function(t){}},m={_init:function(e){return this.each(function(){function n(e,n){var i=t(e.target);if(i.hasClass("storage")&&i.is(":visible")){var r=i.storage.apply(i,Array.prototype.slice.call(arguments,1));if("propagate"==r)return}e.stopPropagation()}var i=t(this),r=t.extend({},g,e);i.data(p,r),i.addClass("storage"),i.storage("update_tab_title"),i.on("save",function(t,e){n(t,"save",e)}),i.on("download",function(t){n(t,"download")}),i.on("fileInfo",function(t){n(t,"info")}),i.on("diff",function(t){n(t,"diff")}),i.on("revert",function(t){n(t,"revert")}),i.on("reload",function(t){n(t,"reload")}),i.on("chat-about-file",function(t){n(t,"chat")}),i.on("follow-file",function(t){n(t,"follow")}),i.on("activate-tab",function(t){}),i.on("data-is-clean",function(t,e){i.storage("markClean",e)}),i.on("fullscreen",function(t,e){e||i.storage("update_tab_title")}),t(window).bind("beforeunload",function(t){return i.storage("unload","beforeunload",t)}),i.storage("chat",(r.meta||{}).chat||"update")})},supportsType:function(t){var e=this.data(p),n=a.tabTypes[e.typeName];if("string"==typeof t&&(t={data:t}),t.meta&&t.meta.name||t.url){var i=t.meta&&t.meta.name?t.meta.name:t.url,r=i.split(".").pop();if(r!=n.dataType)return!1}return!0},setSource:function(n){var i=this.data(p);if("string"==typeof n&&(n={data:n}),this.storage("supportsType",n))return 0!=this.storage("unload","setSource")&&(n.meta?(i.file=n.meta.name,i.meta=n.meta,i.url=null,"HEAD"==n.meta.symbolic&&(n.url=e.http.locations.web_storage+n.meta.name)):(i.file=null,i.meta=null),i.url=n.url,i.st_type=n.st_type,i.chats=n.chats,i.setValue(n),i.cleanGeneration=i.changeGen(),i.cleanData=i.getValue(),i.cleanCheckpoint=n.cleanCheckpoint||"load",this.storage("update_tab_title"),n.url||(n.url=e.http.locations.swish),n.noHistory||o.push(n),this.storage("chat",n.chat||(n.meta||{}).chat||"update"),t(".storage").storage("chat_status",!0),this)},update_tab_title:function(e){return this.each(function(){var n=t(this),i=n.storage("docid");if("chats++"==e)n.tabbed("chats++",i);else{var r=n.data(p),o=a.tabTypes[r.typeName],s=l(r.file)||l(c(r.url))||o.label;i&&r.chats&&(r.chats.docid=i),n.tabbed("title",s,o.dataType),n.tabbed("chats",r.chats)}})},load:function(i){if(i){var r=this;this.data(p);t.ajax({url:e.http.locations.web_storage+i,dataType:"text",success:function(t){r.storage("setSource",{data:t,meta:{name:i}})},error:function(t){n.ajaxError(jqXHR)}})}return this},revert:function(){var t=this.data(p);return t.setValue(t.cleanData),t.cleanGeneration=t.changeGen(),t.markClean(!0),this},reload:function(){var i=this,r=i.data(p),o=e.http.locations.web_storage+encodeURI(r.file);return t.ajax({url:o,type:"GET",data:{format:"json"},success:function(e){e.url=o,e.st_type="gitty",e.noHistory=!0,i.storage("setSource",e),t("#chat").trigger("send",{type:"reloaded",file:r.file,commit:e.meta.commit})},error:function(t){n.ajaxError(t)}}),this},save:function(i,s){var l,c=this.data(p),u=a.tabTypes[c.typeName],h=e.http.locations.web_storage,d="POST",g=this;if(("filesys"==c.st_type||"external"==c.st_type)&&c.url)return this.storage("saveURL");if("as"==i)return this.storage("saveAs"),this;if(!c.file||i&&i.default||i&&i.name!=c.file||(h+=encodeURI(c.file),d="PUT"),"only-meta-data"==s){if(i=r.reduceMeta(i,c.meta),t.isEmptyObject(i))return void alert("No change");l={update:"meta-data"}}else if("POST"==d)l={data:c.getValue(),type:u.dataType};else if(c.isClean(c.cleanGeneration)){if(null==r.diffTags(c.meta.tags,i.tags))return void alert("No change")}else l={data:c.getValue(),type:u.dataType};return i&&(l.meta=i),c.meta&&(l.previous=c.meta.commit),t.ajax({url:h,dataType:"json",contentType:"application/json",type:d,data:JSON.stringify(l),success:function(e){e.error?n.alert(f("Could not save",e)):(c.meta&&c.meta.example!=e.meta.example&&g.closest(".swish").trigger("examples-changed"),c.file=e.file,c.meta=e.meta,c.st_type="gitty",c.cleanGeneration=c.changeGen(),c.cleanData=c.getValue(),c.cleanCheckpoint="save",c.markClean(!0),n.feedback({html:"Saved",owner:g}),"POST"==d&&(c.chats={docid:g.storage("docid"),total:0}),g.storage("update_tab_title"),g.storage("chat",(c.meta||{}).chat||"update"),t(".storage").storage("chat_status",!0),o.push(e))},error:function(t,e,i){409==t.status?g.storage("resolveEditConflict",JSON.parse(t.responseText)):403==t.status?n.alert("Permission denied.  Please try a different name"):(alert('Save failed; click "ok" to try again'),g.storage("saveAs"))}}),this},saveAs:function(e){function n(){this.append(t.el.form({class:"form-horizontal"},i.fields.hidden("identity",d.identity),i.fields.hidden("default",s.default),i.fields.hidden("chat",s.chat),d.identity?void 0:i.fields.hidden("avatar",d.avatar),i.fields.fileName(u?null:o.file,s.public,s.example),i.fields.title(s.title),i.fields.author(f,d.identity),c?i.fields.commit_message():void 0,i.fields.tags(s.tags),i.fields.modify(g,r),i.fields.follow(d.email),i.fields.buttons({label:u?"Fork "+h.label:c?"Update "+h.label:"Save "+h.label,action:function(t,e){return l.storage("save",e),!1}})))}var r,o=this.data(p),s=o.meta||{},l=this,c=Boolean(o.file),u=o.meta&&"HEAD"!=s.symbolic&&!s.default,h=a.tabTypes[o.typeName],d=t("#login").login("get_profile",["display_name","avatar","email","identity"]),f=d.display_name,g=s.modify;return void 0===s.public&&(s.public=!0),d.identity?g||(g=["login","owner"]):g=["any","login","owner"],r=d.identity==s.identity||d.identity&&!(s.identity||s.user),e=e||{},i.showDialog({title:e.title?e.title:u?"Fork from "+s.commit.substring(0,7):c?"Save new version":"Save "+h.label+" as",body:n}),this},saveURL:function(){var e=this.data(p),i=e.getValue(),r=a.type(e.url)||{},o=this;return e.isClean(e.cleanGeneration)?(alert("No change"),this):(t.ajax({url:e.url,dataType:"json",contentType:r.contentType||"text/plain",type:"PUT",data:i,success:function(t){t.error?n.alert(f("Could not save",t)):(e.cleanGeneration=e.changeGen(),e.cleanData=e.getValue(),e.cleanCheckpoint="save",e.markClean(!0),n.feedback({html:"Saved",owner:o}))},error:function(t){if(403==t.status){var i=e.url;delete e.meta,delete e.st_type,delete e.url,o.storage("saveAs",{title:"<div class='warning'>Could not save to "+i+"</div> Save a copy as"})}else n.ajaxError(t)}}),this)},resolveEditConflict:function(e){function n(){function n(e,n,i,r){var o={role:"presentation"},a=[];n&&a.push("active"),r&&a.push("disabled"),a!=[]&&(o.class=a.join(" "));var s=t.el.li(o,t.el.a({href:"#"+i,"data-toggle":"tab"},e));return s}function i(e,n){tabs.append(t.el.div({class:"tab-pane fade "+e+" "+n,id:e})),o.find('[href="#'+e+'"]').on("show.bs.tab",function(t){o.storage(e)})}var o=t(this);o.addClass("edit-conflict"),tabs=t(t.el.div({class:"tab-content"})),o.append(t.el.ul({class:"nav nav-tabs"},n("My edits",!0,"merge-my-edits"),n("Their edits",!1,"merge-server-edits"),n("Conflicts",!1,"merge-conflicts"))),o.append(tabs),i("merge-my-edits","in active"),i("merge-server-edits",""),i("merge-conflicts",""),o.data("edit-conflict",e),o.storage("merge-my-edits"),o.append(r=t.el.div({class:"form-group"},t.el.button({name:"merge",class:"btn btn-primary"},"Merge"),t.el.button({name:"discard-my-edits",class:"btn btn-primary"},"Discard my changes"),t.el.button({name:"discard-server-edits",class:"btn btn-primary"},"Discard changes on server"),t.el.button({name:"cancel",class:"btn btn-danger","data-dismiss":"modal"},"Cancel"))),t(r).on("click","button",function(e){return o.storage("editConflictAction",t(e.target).attr("name")),t(e.target).parents(".modal").modal("hide"),e.preventDefault(),!1})}var r;return e.storage=this,i.showDialog({title:"Edit conflict",body:n}),this},"merge-my-edits":function(){var e=t(this).data("edit-conflict");t(this).find(".merge-my-edits").empty().append(u(e.edit.me.data))},"merge-server-edits":function(){var e=t(this).data("edit-conflict");t(this).find(".merge-server-edits").empty().append(u(e.edit.server.data))},"merge-conflicts":function(){var e=t(this).data("edit-conflict"),n=t(this).find(".merge-conflicts");n.empty(),0!=e.patch_status?n.append(h(e.merged)):n.html("No merge conflicts")},editConflictAction:function(e){var n=t(this).data("edit-conflict"),i=t(n.storage).data(p);if("merge"==e)i.setValue(n.merged),i.meta.commit=n.edit.server.to.commit;else if("discard-my-edits"==e)t(n.storage).storage("reload");else if("discard-server-edits"==e){var i=t(n.storage).data(p);i.meta.commit=n.edit.server.to.commit}},download:function(){var e=this.data(p),n=a.tabTypes[e.typeName],i=e.getValue(),r="data:text/plain;charset=UTF-8,"+encodeURIComponent(i),o=t.el.a({href:r,download:e.file||"swish."+n.dataType});return this.append(o),o.click(),t(o).remove(),this},getData:function(e){var n=[];return e=e||{},this.each(function(){function i(t){r.meta[t]&&(o[t]=r.meta[t])}var r=t(this).data(p),o={};if(o.type=r.type,r.url&&(o.url=r.url),r.meta&&(i("name"),i("path"),i("modified"),i("loaded"),i("modified_since_loaded"),i("module")),1==t(this).closest(".tab-pane.active").length&&(o.active=!0),!e.type||e.name&&e.name.split(".").pop()==e.type){if(e.data){var a=r.getValue();o.modified=a!=r.cleanData,(1==e.data||o.modified&&"if_modified"==e.data)&&(o.data=a)}n.push(o)}}),n},match:function(e){for(var n=0;n<this.length;n++){me=t(this[n]);var i=me.data(p);if(e.file&&e.file==i.file)return me;if(e.url&&e.url==i.url)return me}},expose:function(t){var e=this.closest(".tab-pane");if(1==e.length){var i=e.closest(".tabbed");return i.tabbed("show",e.attr("id")),t&&n.feedback({html:t,owner:this}),this}},info:function(){function e(){"gitty"==r.st_type?(r.editor=a,this.gitty(r)):"filesys"==r.st_type?d(this,o):r.st_type||this.append(t.el.p("The source is not associated with a file. ","Use ",t.el.b("Save ...")," to save the source with meta information."))}var n,r=this.data(p),o=r.meta||{},a=this;return n="gitty"==r.st_type?t().gitty("title",o):"filesys"==r.st_type?"File system -- "+c(o.path):"external"==r.st_type?"External -- "+r.url:"Scratch source",i.showDialog({title:n,body:e}),this},diff:function(){function e(){var e=t.el.div(),i=n.getValue();if(this.append(e),i==n.cleanData)t(e).append(t.el.p("No changes"));else{var o,a=t.el.div({class:"btn-group diff",role:"group"},t.el.button({name:"close","data-dismiss":"modal",class:"btn btn-primary"},"Close"),o=t.el.button({name:"revert",class:"btn btn-danger","data-dismiss":"modal"},"Revert changes"));t(e).diff({base:n.cleanData,head:i,baseName:r[n.cleanCheckpoint]}),this.append(t.el.div({class:"wrapper text-center"},a)),t(o).on("click",function(e){t(".swish-event-receiver").trigger("revert")}),this.parents("div.modal-dialog").addClass("modal-wide")}}var n=this.data(p),r={load:"Loaded text",new:"New text",save:"Saved text"};return i.showDialog({title:"Changes since "+r[n.cleanCheckpoint],body:e}),this},getSelection:function(){if(this.hasClass("prolog-editor")){var t=this.prologEditor("getSelection");return t?t[0].selections:null}return this.hasClass("notebook")?this.notebook("getSelection"):void console.log("Don't know how to get selection from",this)},getSelectionLabel:function(t){function e(t){for(var e="",n=0;n<t.length;n++){var i=t[n];""!=e&&(e+=";"),e+="@L"+(i.from.line+1),i.to.line!=i.from.line&&(e+="-"+(i.to.line+1))}return e}if(t[0].selections){for(var n="",i=0;i<t.length;i++){var r=t[i];""!=n&&(n+=","),n+=(r.cell||"")+e(r.selections)}return n}return e(t)},restoreSelection:function(t){return this.hasClass("prolog-editor")?this.prologEditor("restoreSelection",t):this.hasClass("notebook")?this.notebook("restoreSelection",t):void console.log(t)},docid:function(t,e){if(e=e||this.data(p),!t||t==e.st_type){var n=e.meta||{};if("gitty"==e.st_type)return"gitty:"+n.name;if("filesys"==e.st_type)return"filesys:"+n.path;if("external"==e.st_type)return"url:"+e.url}},chat:function(e){var i=this.data(p),r=this.storage("docid","gitty");if(r){var o=this.closest(".tab-pane").find(".chatroom");if(o.length>0)"update"==e?o.chatroom("docid",r,"close"):s.flash(o);else if("update"!=e){var a="large"==e?80:20;o=t(t.el.div({class:"chatroom"})),o.chatroom({docid:r}),this.tile("split",o,"below",a,150).addClass("chat-container")}}else"update"==e?this.storage("close_chat"):i.st_type?n.alert("The chat facility is only available for user-saved files.<br>You can use the <b>Open hangout</b> menu from the top-right bell to access the hangout room."):n.alert("You can only chat about a saved document.<br>Please save your document and try again.");return this},close_chat:function(){this.closest(".chat-container").find(".chatroom").chatroom("close")},chat_message:function(e){return e.displayed||0!=e.create?this.each(function(){var n=t(this);if(e.docid==n.storage("docid")){var i=n.data(p);i.chats?(void 0!=i.chats.total&&i.chats.total++,void 0!=i.chats.count&&i.chats.count++):i.chats={total:1},n.storage("update_tab_title","chats++")}}):this},follow:function(){var t=this.storage("docid","gitty");t?n.server_form({title:"Follow file options",url:e.http.locations.follow_file_options,data:{docid:t}}):n.alert("Sorry, can only follow files")},unload:function(t,e){var n=this.data(p);if(n&&(n.meta&&o.addRecent({st_type:"gitty",id:n.meta.name}),n.cleanData!=n.getValue())){if("beforeunload"==t){var i="The source editor has unsaved changes.\nThese will be lost if you leave the page";return e=e||window.event,e&&(e.returnValue=i),i}var i="The source editor has unsaved changes.\nThese will be lost"+("setSource"==t?" if you load a new program":"closetab"==t?" close this tab":"");return confirm(i)}},close:function(){},markClean:function(t){var e=this.data(p);e.is_clean=t},chat_status:function(e){var n=[];this.each(function(){var e=t(this).data(p);if("gitty"==e.st_type&&e.meta&&e.meta.name){var i={file:e.meta.name};e.is_clean||(i.modified=!0),t(this).is(":visible")&&(i.visible=!0),n.push(i)}}),(e||n.length>0)&&t("#chat").trigger("send",{type:"has-open-files",files:n})}};t.fn.storage=function(e){return m[e]?m[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery."+p):m._init.apply(this,arguments)}}(jQuery)}),function(){"use strict";function t(t){t?(c[0]=c[16]=c[1]=c[2]=c[3]=c[4]=c[5]=c[6]=c[7]=c[8]=c[9]=c[10]=c[11]=c[12]=c[13]=c[14]=c[15]=0,this.blocks=c):this.blocks=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],this.h0=1732584193,this.h1=4023233417,this.h2=2562383102,this.h3=271733878,this.h4=3285377520,this.block=this.start=this.bytes=0,this.finalized=this.hashed=!1,this.first=!0}var e="object"==typeof window?window:{},n=!e.JS_SHA1_NO_NODE_JS&&"object"==typeof process&&process.versions&&process.versions.node;n&&(e=global);var i=!e.JS_SHA1_NO_COMMON_JS&&"object"==typeof module&&module.exports,r="function"==typeof define&&define.amd,o="0123456789abcdef".split(""),a=[-2147483648,8388608,32768,128],s=[24,16,8,0],l=["hex","array","digest","arrayBuffer"],c=[],u=function(e){return function(n){return new t(!0).update(n)[e]()}},h=function(){var e=u("hex");n&&(e=d(e)),e.create=function(){return new t},e.update=function(t){return e.create().update(t)};for(var i=0;i<l.length;++i){var r=l[i];e[r]=u(r)}return e},d=function(t){var e=require("crypto"),n=require("buffer").Buffer,i=function(i){if("string"==typeof i)return e.createHash("sha1").update(i,"utf8").digest("hex");if(i.constructor===ArrayBuffer)i=new Uint8Array(i);else if(void 0===i.length)return t(i);return e.createHash("sha1").update(new n(i)).digest("hex")};return i};t.prototype.update=function(t){if(!this.finalized){var n="string"!=typeof t;n&&t.constructor===e.ArrayBuffer&&(t=new Uint8Array(t));for(var i,r,o=0,a=t.length||0,l=this.blocks;o<a;){if(this.hashed&&(this.hashed=!1,l[0]=this.block,l[16]=l[1]=l[2]=l[3]=l[4]=l[5]=l[6]=l[7]=l[8]=l[9]=l[10]=l[11]=l[12]=l[13]=l[14]=l[15]=0),n)for(r=this.start;o<a&&r<64;++o)l[r>>2]|=t[o]<<s[3&r++];else for(r=this.start;o<a&&r<64;++o)i=t.charCodeAt(o),i<128?l[r>>2]|=i<<s[3&r++]:i<2048?(l[r>>2]|=(192|i>>6)<<s[3&r++],l[r>>2]|=(128|63&i)<<s[3&r++]):i<55296||i>=57344?(l[r>>2]|=(224|i>>12)<<s[3&r++],l[r>>2]|=(128|i>>6&63)<<s[3&r++],l[r>>2]|=(128|63&i)<<s[3&r++]):(i=65536+((1023&i)<<10|1023&t.charCodeAt(++o)),l[r>>2]|=(240|i>>18)<<s[3&r++],l[r>>2]|=(128|i>>12&63)<<s[3&r++],l[r>>2]|=(128|i>>6&63)<<s[3&r++],l[r>>2]|=(128|63&i)<<s[3&r++]);this.lastByteIndex=r,this.bytes+=r-this.start,r>=64?(this.block=l[16],this.start=r-64,this.hash(),this.hashed=!0):this.start=r}return this}},t.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var t=this.blocks,e=this.lastByteIndex;t[16]=this.block,t[e>>2]|=a[3&e],this.block=t[16],e>=56&&(this.hashed||this.hash(),t[0]=this.block,t[16]=t[1]=t[2]=t[3]=t[4]=t[5]=t[6]=t[7]=t[8]=t[9]=t[10]=t[11]=t[12]=t[13]=t[14]=t[15]=0),t[15]=this.bytes<<3,this.hash()}},t.prototype.hash=function(){var t,e,n,i=this.h0,r=this.h1,o=this.h2,a=this.h3,s=this.h4,l=this.blocks;for(e=16;e<80;++e)n=l[e-3]^l[e-8]^l[e-14]^l[e-16],l[e]=n<<1|n>>>31;for(e=0;e<20;e+=5)t=r&o|~r&a,n=i<<5|i>>>27,s=n+t+s+1518500249+l[e]<<0,r=r<<30|r>>>2,t=i&r|~i&o,n=s<<5|s>>>27,a=n+t+a+1518500249+l[e+1]<<0,i=i<<30|i>>>2,t=s&i|~s&r,n=a<<5|a>>>27,o=n+t+o+1518500249+l[e+2]<<0,s=s<<30|s>>>2,t=a&s|~a&i,n=o<<5|o>>>27,r=n+t+r+1518500249+l[e+3]<<0,a=a<<30|a>>>2,t=o&a|~o&s,n=r<<5|r>>>27,i=n+t+i+1518500249+l[e+4]<<0,o=o<<30|o>>>2;for(;e<40;e+=5)t=r^o^a,n=i<<5|i>>>27,s=n+t+s+1859775393+l[e]<<0,r=r<<30|r>>>2,t=i^r^o,n=s<<5|s>>>27,a=n+t+a+1859775393+l[e+1]<<0,i=i<<30|i>>>2,t=s^i^r,n=a<<5|a>>>27,o=n+t+o+1859775393+l[e+2]<<0,s=s<<30|s>>>2,t=a^s^i,n=o<<5|o>>>27,r=n+t+r+1859775393+l[e+3]<<0,a=a<<30|a>>>2,t=o^a^s,n=r<<5|r>>>27,i=n+t+i+1859775393+l[e+4]<<0,o=o<<30|o>>>2;for(;e<60;e+=5)t=r&o|r&a|o&a,n=i<<5|i>>>27,s=n+t+s-1894007588+l[e]<<0,r=r<<30|r>>>2,t=i&r|i&o|r&o,n=s<<5|s>>>27,a=n+t+a-1894007588+l[e+1]<<0,i=i<<30|i>>>2,t=s&i|s&r|i&r,n=a<<5|a>>>27,o=n+t+o-1894007588+l[e+2]<<0,s=s<<30|s>>>2,t=a&s|a&i|s&i,n=o<<5|o>>>27,r=n+t+r-1894007588+l[e+3]<<0,a=a<<30|a>>>2,t=o&a|o&s|a&s,n=r<<5|r>>>27,i=n+t+i-1894007588+l[e+4]<<0,o=o<<30|o>>>2;for(;e<80;e+=5)t=r^o^a,n=i<<5|i>>>27,s=n+t+s-899497514+l[e]<<0,r=r<<30|r>>>2,t=i^r^o,n=s<<5|s>>>27,a=n+t+a-899497514+l[e+1]<<0,i=i<<30|i>>>2,t=s^i^r,n=a<<5|a>>>27,o=n+t+o-899497514+l[e+2]<<0,s=s<<30|s>>>2,t=a^s^i,n=o<<5|o>>>27,r=n+t+r-899497514+l[e+3]<<0,a=a<<30|a>>>2,t=o^a^s,n=r<<5|r>>>27,i=n+t+i-899497514+l[e+4]<<0,o=o<<30|o>>>2;this.h0=this.h0+i<<0,this.h1=this.h1+r<<0,this.h2=this.h2+o<<0,this.h3=this.h3+a<<0,this.h4=this.h4+s<<0},t.prototype.hex=function(){this.finalize();var t=this.h0,e=this.h1,n=this.h2,i=this.h3,r=this.h4;return o[t>>28&15]+o[t>>24&15]+o[t>>20&15]+o[t>>16&15]+o[t>>12&15]+o[t>>8&15]+o[t>>4&15]+o[15&t]+o[e>>28&15]+o[e>>24&15]+o[e>>20&15]+o[e>>16&15]+o[e>>12&15]+o[e>>8&15]+o[e>>4&15]+o[15&e]+o[n>>28&15]+o[n>>24&15]+o[n>>20&15]+o[n>>16&15]+o[n>>12&15]+o[n>>8&15]+o[n>>4&15]+o[15&n]+o[i>>28&15]+o[i>>24&15]+o[i>>20&15]+o[i>>16&15]+o[i>>12&15]+o[i>>8&15]+o[i>>4&15]+o[15&i]+o[r>>28&15]+o[r>>24&15]+o[r>>20&15]+o[r>>16&15]+o[r>>12&15]+o[r>>8&15]+o[r>>4&15]+o[15&r]},t.prototype.toString=t.prototype.hex,t.prototype.digest=function(){this.finalize();var t=this.h0,e=this.h1,n=this.h2,i=this.h3,r=this.h4;return[t>>24&255,t>>16&255,t>>8&255,255&t,e>>24&255,e>>16&255,e>>8&255,255&e,n>>24&255,n>>16&255,n>>8&255,255&n,i>>24&255,i>>16&255,i>>8&255,255&i,r>>24&255,r>>16&255,r>>8&255,255&r]},t.prototype.array=t.prototype.digest,t.prototype.arrayBuffer=function(){this.finalize();var t=new ArrayBuffer(20),e=new DataView(t);return e.setUint32(0,this.h0),e.setUint32(4,this.h1),e.setUint32(8,this.h2),e.setUint32(12,this.h3),e.setUint32(16,this.h4),t};var f=h();i?module.exports=f:(e.sha1=f,r&&define("sha1",[],function(){return f}))}(),define("notebook",["jquery","config","tabbed","form","preferences","modal","prolog","links","laconic","runner","storage","sha1"],function($,config,tabbed,form,preferences,modal,prolog,links){function glyphButton(t,e,n,i,r){r=r||"sm";var o=$.el.a({href:"#",class:"btn btn-"+i+" btn-"+r+" action-"+e,title:n,"data-action":e},$.el.span({class:"glyphicon glyphicon-"+t}));return o}function imageButton(t,e,n){n=n||"sm";var i=$.el.a({href:"#",class:"btn btn-default btn-image btn-"+n+" action-"+t,title:e,"data-action":t},$.el.span({class:"image-icon"}));return i}function glyphButtonGlyph(t,e,n){var i=t.find("a[data-action="+e+"] > span.glyphicon");i.removeClass(function(t,e){return e.match(/glyphicon-[-a-z]*/g).join(" ")}).addClass("glyphicon-"+n)}function sep(){return $.el.span({class:"thin-space"}," ")}function Notebook(t){this.my_cell=t.cell}var cellTypes={program:{label:"Program",prefix:"p"},query:{label:"Query",prefix:"q"},markdown:{label:"Markdown",prefix:"md"},html:{label:"HTML",prefix:"htm"}};!function(t){function e(e){var n=t(e).find(".nb-cell.active");return 1==n.length?n.first():null}function n(e){function n(t){if(attrs=t.match(/[-a-z]+="[^"]*"/g),attrs){for(var e=t.match(/^<[a-z]* /),n=0;n<attrs.length;n++){var i=attrs[n].split(/=(.*)/);attrs[n]=i[0].toLowerCase()+"="+i[1]}return e[0]+attrs.sort().join(" ")+">"}return t}var i=t(t.el.div(e)).html(),r=[];return i.replace(/(<div [^>]*>|<\/div>)/g,function(t){var e;return"</div>"==t?(e=r.pop(),e?"\n"+t+"\n":t):(e=null!=t.match(/(nb-cell|notebook)/),r.push(e),e?"\n"+n(t)+"\n":t)}).slice(1)}var i="notebook",r=null,o={_init:function(e){return e=e||{},this.each(function(){function n(){var e=t.el.span({class:"glyphicon glyphicon-menu-hamburger"}),n=form.widgets.dropdownButton(e,{divClass:"notebook-menu btn-transparent",ulClass:"pull-right",client:s,actions:{"Delete cell":function(){this.notebook("delete")},"Copy cell":function(){this.notebook("copy")},"Paste cell":function(){this.notebook("paste")},"Move cell up":function(){this.notebook("up")},"Move cell down":function(){this.notebook("down")},"Insert cell":function(){this.notebook("insertBelow")},"--":"Notebook actions","Exit fullscreen":function(){this.notebook("fullscreen",!1)}}});return n}function r(t){var e=a.data(t);e&&(l[t]=e)}var o,a,s=t(this),l={},c={};s.addClass("notebook"),s.addClass("swish-event-receiver"),s.append(o=t.el.div({class:"nb-toolbar"},glyphButton("trash","delete","Delete cell","warning"),glyphButton("copy","copy","Copy cell","default"),glyphButton("paste","paste","Paste cell below","default"),sep(),glyphButton("chevron-up","up","Move cell up","default"),glyphButton("chevron-down","down","Move cell down","default"),sep(),glyphButton("plus","insertBelow","Insert cell below","primary"),glyphButton("fullscreen","fullscreen","Full screen","default"))),s.append(n()),s.append(t.el.div({class:"nb-view",tabIndex:"-1"},a=t.el.div({class:"nb-content"}),t.el.div({class:"nb-bottom"}))),t(o).on("click","a.btn",function(e){var n=t(e.target).closest("a").data("action");return s.notebook(n),e.preventDefault(),!1}),t(a).on("click",".nb-cell-buttons a.btn",function(e){var n=t(e.target).closest("a"),i=n.closest(".nb-cell"),r=n.data("action");return i.nbCell(r),e.preventDefault(),!1}),s.focusin(function(e){var n=t(e.target).closest(".nb-cell");n.length>0?s.notebook("active",n):t(e.target).closest(".nb-view").length>0&&s.find(".nb-content").children(".nb-cell.active").nbCell("active",!1)}),s.focusout(function(e){t(e.target).closest(".notebook")[0]!=s[0]&&s.find(".nb-content").children(".nb-cell.active").nbCell("active",!1)}),s.on("activate-tab",function(e){if(e.target==s[0]){var n=s.find(".nb-content").children(".nb-cell.program"),i=n.filter(".active"),r=i[0]||n[0];r&&t(r).find(".prolog-editor").prologEditor("makeCurrent"),e.stopPropagation()}}),s.data(i,c);var a=s.find(".notebook-data");if(e.value)s.notebook("value",e.value);else if(a.length>0){r("file"),r("url"),r("title"),r("meta"),r("st_type"),r("chats");var u=s.storage("docid",void 0,l),h=preferences.getDocVal(u,"fullscreen",!0);s.notebook("value",a.text(),{fullscreen:h}),a.remove()}else s.notebook("placeHolder");s.notebook("setupStorage",l),s.on("data-is-clean",function(e,n){if(t(e.target).hasClass("prolog-editor"))return s.notebook("checkModified"),e.stopPropagation(),!1}),s.on("fullscreen",function(t,e){preferences.setDocVal(u,"fullscreen",e)})})},delete:function(t){return t=t||e(this),t&&(this.notebook("active",t.next()||t.prev()),t.nbCell("close"),this.notebook("updatePlaceHolder")),this.notebook("checkModified"),this},copy:function(i){if(i=i||e(this)){var o=t.el.div({class:"notebook"});t(o).append(t(i).nbCell("saveDOM")),t(o).find(".nb-cell").removeAttr("name"),r=n(o)}},paste:function(e){var n=this;if(e=e||r){var i=t.el.div();t(i).html(e);var o=t(i).find(".nb-cell");if(o.length>0)return t(i).find(".nb-cell").each(function(){n.notebook("insert",{where:"below",restore:t(this)})}),this;modal.alert("Not a SWISH notebook")}else modal.alert("Clipboard is empty")},up:function(t){return t=t||e(this),t&&(t.insertBefore(t.prev()),this.notebook("checkModified")),this},down:function(t){return t=t||e(this),t&&(t.insertAfter(t.next()),this.notebook("checkModified")),this},insertAbove:function(){return this.notebook("insert",{where:"above"})},insertBelow:function(){return 0==this.notebook("insert",{where:"below",if_visible:!0})&&modal.alert("<p>New cell would appear outside the visible area of the notebook.<p>Please select the cell below which you want the new cell to appear or scroll to the bottom of the notebook."),this},run:function(t){t=t||e(this),t&&t.nbCell("run")},fullscreen:function(e){if(void 0==e&&(e=!this.hasClass("fullscreen")),e){var n=this.closest(".chat-container"),i=1==n.length?n:this;t("body.swish").swish("fullscreen",i,this)}else t("body.swish").swish("exitFullscreen");return this},cellType:function(t,n){t=t||e(this),t&&t.nbCell("type",n)},getSelection:function(){return this.notebook("assignCellNames").find(".prolog-editor").prologEditor("getSelection")},restoreSelection:function(t){return this.notebook("assignCellNames").find(".prolog-editor").prologEditor("restoreSelection",t)},checkModified:function(){return this.each(function(){var e=t(this),n=e.data("storage"),i=n.cleanGeneration==e.notebook("changeGen");e.notebook("markClean",i)})},markClean:function(e){return this.each(function(){var n=t(this),r=n.data(i);r.clean_signalled!=e&&(r.clean_signalled=e,n.trigger("data-is-clean",e)),e&&n.find(".prolog-editor").prologEditor("setIsClean")})},active:function(t,e){function n(t){t.find(".nb-content .nb-cell.not-for-query").removeClass("not-for-query")}if(t){var i=this.find(".nb-content .nb-cell.active");1==t.length?1==i.length&&t[0]==i[0]||(n(this),i.nbCell("active",!1),t.nbCell("active",!0),e&&t.focus()):(n(this),i.nbCell("active",!1))}},insert:function(n){n=n||{};var i,r=e(this),o=n.cell||t.el.div({class:"nb-cell"}),a=this.find(".nb-view");if(n.if_visible&&a.find(".nb-content > div.nb-cell").length>0&&(i=a[0].getBoundingClientRect()),r)if("above"==n.where){if(i){var s=r[0].getBoundingClientRect().top;if(s<i.top)return!1}t(o).insertBefore(r)}else{if(i){var l=r[0].getBoundingClientRect().bottom;if(l>i.bottom-20)return!1}t(o).insertAfter(r)}else{var c=this.find(".nb-content");if(i){var u=c[0].getBoundingClientRect().bottom;if(u>i.bottom-20)return!1}c.append(o)}return n.cell||t(o).nbCell(n.restore),t(o).nbCell("assignName"),this.notebook("updatePlaceHolder"),this.notebook("active",t(o)),this.notebook("checkModified"),this},setupStorage:function(e){var n=this;return e=t.extend(e,{getValue:function(){return n.notebook("value")},setValue:function(t){return n.notebook("setSource",t)},changeGen:function(){return n.notebook("changeGen")},isClean:function(t){var e=n.notebook("changeGen");return t==e},markClean:function(t){n.notebook("markClean",t)},cleanGeneration:this.notebook("changeGen"),cleanData:this.notebook("value"),cleanCheckpoint:"load",typeName:"notebook"}),this.storage(e)},setSource:function(t){"string"==typeof t&&(t={data:t}),this.notebook("value",t.data)},value:function(e,i){if(i=i||{},void 0==e){var r=t.el.div({class:"notebook"});return this.notebook("assignCellNames",!1),this.find(".nb-cell").each(function(){cell=t(this),i.skipEmpty&&cell.nbCell("isEmpty")||t(r).append(cell.nbCell("saveDOM"))}),n(r)}var o=this.find(".nb-content"),r=t.el.div();o.html(""),r.innerHTML=e,void 0==i.fullscreen&&(i.fullscreen=t(r).find("div.notebook").hasClass("fullscreen")),i.fullscreen&&(this.removeClass("fullscreen"),this.notebook("fullscreen",!0)),t(r).find(".nb-cell").each(function(){var e=t.el.div({class:"nb-cell"});o.append(e),t(e).nbCell(t(this))}),this.find(".nb-cell").nbCell("onload"),this.notebook("updatePlaceHolder")},changeGen:function(){var e=[];return this.find(".nb-cell").each(function(){cell=t(this),e.push(cell.nbCell("changeGen"))}),sha1(e.join())},assignCellNames:function(t){return this.find(".nb-cell").nbCell("assignName"),0!=t&&this.notebook("checkModified"),this},updatePlaceHolder:function(){0==this.find(".nb-content").children().length?this.notebook("placeHolder"):this.find(".nb-placeholder").remove();
+},placeHolder:function(){var e=t.el.div({class:"nb-placeholder"});t.ajax({url:config.http.locations.help+"/notebook.html",dataType:"html",success:function(n){t(e).html(n)}}),this.find(".nb-content").append(e)}};tabbed.tabTypes.notebook={dataType:"swinb",typeName:"notebook",label:"Notebook",contentType:"text/x-prolog-notebook",order:200,create:function(e,n){t(e).notebook(n)}},t.fn.notebook=function(e){return o[e]?o[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery."+i):o._init.apply(this,arguments)}}(jQuery),function($){function cellText(t){return t.find(".editor").prologEditor("getSource",void 0,!0)}function fileInsertInput(){var t=$('<input type="file" name="file">');return t.on("change",function(t){var e=new FileReader;return e.onload=function(n){var i=$(t.target).closest(".nb-cell"),r=i.closest(".notebook");r.notebook("paste",e.result)&&i.remove()},e.readAsText(t.target.files[0]),t.preventDefault(),!1}),t}function typeMore(){var t=$('<div class="form-more"> <a href="#">more<a></div>');return t.find("a").on("click",function(t){var e=$(t.target).closest(".form-more");e.hide(400),e.next().show(400)}),t[0]}function typeLess(){for(var t=$('<div class="form-less" style="display:none"> <div><a href="#" class="less">less<a></div></div>'),e=0;e<arguments.length;e++)t.append(arguments[e]);return t.find("a.less").on("click",function(t){var e=$(t.target).closest(".form-less");e.hide(400),e.prev().show(400)}),t[0]}var pluginName="nbCell",id=0,methods={_init:function(t){return this.each(function(){var e,n=$(this),i={};if(n.data(pluginName,i),n.attr("tabIndex",-1),n.attr("id","nbc"+id++),t instanceof jQuery)n.nbCell("restoreDOM",t);else{var r=glyphButton("remove-circle","close","Close","default","xs");n.append(r),$(r).addClass("close-select"),$(r).on("click",function(){n.nbCell("close")}),n.append($.el.div({class:"nb-type-select"},$.el.label("Create a "),e=$.el.div({class:"btn-group",role:"group"}),$.el.label("cell here.")));for(var o in cellTypes)cellTypes.hasOwnProperty(o)&&$(e).append($.el.button({type:"button",class:"btn btn-default","data-type":o},cellTypes[o].label));$(e).on("click",".btn",function(t){n.nbCell("type",$(t.target).data("type"))}),n.append($.el.div({class:"nb-type-more"},typeMore(),typeLess($.el.label("Insert notebook from local file "),fileInsertInput()[0])))}})},active:function(t){var e=this.data(pluginName);if(t)switch(this.addClass("active"),e.type){case"program":this.find(".editor").prologEditor("makeCurrent");break;case"query":var n=this.prevAll(".program").first().find(".editor");1==n.length&&n.prologEditor("makeCurrent"),this.closest(".notebook").find(".nb-cell.program").not(this.nbCell("program_cells")).addClass("not-for-query")}else if(this.length>0)switch(this.removeClass("active"),e.type){case"markdown":case"html":this.hasClass("runnable")&&this.nbCell("run")}},type:function(t){var e=this.data(pluginName);return e.type!=t&&(methods.type[t].apply(this),e.type=t,this.addClass(t),this.removeAttr("name"),this.nbCell("assignName")),this},assignName:function(){return this.each(function(){var t=$(this);if(!t.attr("name")){var e=t.data(pluginName);if(e.type){var n=cellTypes[e.type].prefix,r=t.closest(".notebook");for(i=1;;i++){var o=n+i;if(0==r.find("*[name="+o+"]").length){t.attr("name",o);break}}}}})},run:function(){var t=arguments;return this.each(function(){var e=$(this);if(e.hasClass("runnable")){var n=e.data(pluginName);return methods.run[n.type].apply(e,t)}console.log("Cell is not runnable: ",e)})},runTabled:function(){return this.nbCell("run",{tabled:!0})},onload:function(){var t=arguments;return this.each(function(){var e=$(this),n=e.data(pluginName);methods.onload[n.type]&&methods.onload[n.type].apply(e,t)}),this.nbCell("refresh")},close:function(){return this.find(".prolog-runner").prologRunner("close"),this.remove()},refresh:function(){return this.hasClass("program")&&this.find("a[data-action='background']").attr("title",this.hasClass("background")?"Used for all queries in this notebook":"Used for queries below this cell"),this},getSettings:function(){return{tabled:"true"==this.data("tabled"),run:"onload"==this.data("run"),chunk:parseInt(this.data("chunk")||"1"),name:this.attr("name")}},settings:function(){function t(){this.append($.el.form({class:"form-horizontal"},form.fields.checkboxes([{name:"tabled",label:"table results",value:n.tabled,title:"Table results"},{name:"run",label:"run on page load",value:n.run,title:"Run when document is loaded"}],{col:3}),form.fields.chunk(n.chunk),form.fields.name(n.name||""),form.fields.buttons({label:"Apply",offset:3,action:function(t,i){i.tabled!=n.tabled&&(i.tabled?e.data("tabled","true"):e.removeData("tabled")),i.run!=n.run&&(i.run?e.data("run","onload"):e.removeData("run")),i.chunk!=n.chunk&&(1!=i.chunk?e.data("chunk",""+i.chunk):e.removeData("chunk"));var r=i.name?i.name.trim():"";r!=n.name&&(r?e.attr("name",r):e.attr("name",null)),e.closest(".notebook").notebook("checkModified")}})))}var e=this,n=this.nbCell("getSettings");form.showDialog({title:"Set options for query",body:t})},singleline:function(){return this.toggleClass("singleline"),this.find(".editor").prologEditor("refresh"),glyphButtonGlyph(this,"singleline",this.hasClass("singleline")?"triangle-left":"triangle-bottom"),this.find("a[data-action=singleline]").blur(),this},background:function(){return this.toggleClass("background"),this.find("a[data-action=background]").blur(),this.closest(".notebook").notebook("checkModified"),this.nbCell("refresh"),this},program_cells:function(){var t=(this.data(pluginName),this.closest(".notebook").find(".nb-cell.program.background"));return this.hasClass("program")?this.hasClass("background")||(t=t.add(this)):t=t.add(this.prevAll(".program").first()),t},programs:function(){var t=this.nbCell("program_cells");return t.find(".editor")},isEmpty:function(){return methods.isEmpty[this.data(pluginName).type].call(this)},saveDOM:function(){return methods.saveDOM[this.data(pluginName).type].call(this)},restoreDOM:function(t){function e(t){for(var e in cellTypes)if(cellTypes.hasOwnProperty(e)&&t.hasClass(e))return e}var n=this.data(pluginName);n.type=e(t),methods.restoreDOM[n.type].apply(this,arguments),this.addClass(n.type)},changeGen:function(){var t=this.data(pluginName).type;return t?methods.changeGen[t].call(this):0},text:function(){return cellText(this)}};methods.type.markdown=function(t){function e(e){void 0!=t[e]&&(i.attr(e,""+t[e]),delete t[e])}var n,i=this;t=t||{},t.mode="markdown",e("name"),this.html(""),this.append(n=$.el.div({class:"editor"})),$(n).prologEditor(t),this.addClass("runnable")},methods.type.html=function(t){function e(e){void 0!=t[e]&&(i.attr(e,""+t[e]),delete t[e])}var n,i=this;t=t||{},t.mode="htmlmixed",e("name"),this.html(""),this.append(n=$.el.div({class:"editor"})),$(n).prologEditor(t),this.addClass("runnable")},methods.type.program=function(t){var e,n=this;t=t||{},t.autoCurrent=!1,t.getSource=function(){var t=n.nbCell("programs");return t.prologEditor("getSource","source",!0)},this.html("");var i=$.el.div({class:"btn-group nb-cell-buttons",role:"group"},glyphButton("triangle-bottom","singleline","Show only first line","default","xs"),imageButton("background","Use as background program","xs"));this.append(i,e=$.el.div({class:"editor with-buttons"})),t.background&&this.addClass("background"),t.singleline&&this.nbCell("singleline"),$(e).prologEditor(t)},methods.type.query=function(t){function e(e){void 0!=t[e]&&(o.data(e,""+t[e]),delete t[e])}function n(e){void 0!=t[e]&&(o.attr(e,""+t[e]),delete t[e])}function i(t){this.find(".editor.query").prologEditor("wrapSolution",$(t).text())}var r,o=this;this.html(""),t=t||{},void 0==t.tabled&&(t.tabled=preferences.getVal("tabled_results")),e("tabled"),e("chunk"),e("run"),n("name"),t=$.extend({},t,{role:"query",sourceID:function(){return o.nbCell("programs").prologEditor("getSourceID")}});var a=$.el.div({class:"btn-group nb-cell-buttons",role:"group"},glyphButton("wrench","settings","Settings","default","xs"),glyphButton("play","run","Run query","primary","xs")),s=form.widgets.dropdownButton($.el.span({class:"glyphicon glyphicon-menu-hamburger"}),{client:o,divClass:"nb-query-menu",actions:{"Aggregate (count all)":i,"--":null,Projection:i,"Order by":i,Distinct:i,Limit:i,"---":null,"Download answers as CSV":function(){var t=cellText(this).replace(/\.\s*$/,""),e=this.nbCell("programs").prologEditor("getSource","source",!0),n={},i=this.attr("name");i&&(n.disposition=i),prolog.downloadCSV(t,e,n)}}});this.append(a,$.el.div({class:"query with-buttons"},s,$.el.span({class:"prolog-prompt"},"?-"),r=$.el.div({class:"editor query"}))),$(r).prologEditor(t),this.addClass("runnable")},methods.run.markdown=function(t){function e(t){var n=$(t.target).closest(".nb-cell"),i=n.data("markdownText");n.removeData("markdownText"),methods.type.markdown.call(n,{value:i}),n.off("dblclick",e),n.off("click",links.followLink)}function n(n){i.html(n),i.removeClass("runnable"),i.data("markdownText",t),i.on("dblclick",e),i.on("click","a",links.followLink)}var i=this;t=t||cellText(this),""!=t.trim()?$.ajax({type:"POST",url:config.http.locations.markdown,data:t,contentType:"text/plain; charset=UTF-8",success:n}):n("<div class='nb-placeholder'>Empty markdown cell.  Double click to edit</div>")},methods.run.html=function(htmlText,options){function makeEditable(t){var e=$(t.target).closest(".nb-cell"),n=e.data("htmlText");e.removeData("htmlText"),methods.type.html.call(e,{value:n}),e.off("dblclick",makeEditable),e.off("click",links.followLink)}function runScripts(){if(1==config.swish.notebook.eval_script&&0!=options.eval_script){var scripts=[];if(cell.find("script").each(function(){var t=this.getAttribute("type")||"text/javascript";"text/javascript"==t&&scripts.push(this.textContent)}),scripts.length>0){var script="(function(notebook){"+scripts.join("\n")+"})",nb=new Notebook({cell:cell[0]});try{eval(script)(nb)}catch(t){alert(t)}}}}function runHTML(t){cell[0].innerHTML=t,runScripts()}function setHTML(t){runHTML(t),cell.removeClass("runnable"),cell.data("htmlText",htmlText),cell.on("dblclick",makeEditable),cell.on("click","a",links.followLink)}var cell=this;return options=options||{},0==options.html?void runScripts():(htmlText=(htmlText||cellText(this)).trim(),void setHTML(""!=htmlText?htmlText:"<div class='nb-placeholder'>Empty HTML cell.  Double click to edit</div>"))},methods.run.program=function(){modal.alert("Please define a query to run this program")},methods.run.query=function(t){var e=this.nbCell("programs"),n=this.nbCell("getSettings"),i=cellText(this);if(t=t||{},t.bindings){var r="";if("string"==typeof t.bindings)r=t.bindings;else for(var o in t.bindings)t.bindings.hasOwnProperty(o)&&(r&&(r+=", "),r+=o+" = "+Pengine.stringify(t.bindings[o]));r&&(i=r+", ("+prolog.trimFullStop(i)+")")}var a={source:e.prologEditor("getSource","source",!0),query:i,tabled:n.tabled||!1,chunk:n.chunk,title:!1,query_editor:this.find(".prolog-editor.query")};e[0]&&(a.editor=e[0]);var s=$.el.div({class:"prolog-runner"});this.find(".prolog-runner").prologRunner("close"),this.append(s),$(s).prologRunner(a)},methods.onload.query=function(){"onload"==this.data("run")&&this.nbCell("run")},methods.onload.html=function(){return methods.run.html.call(this,void 0,{html:!1,eval_script:!0})},methods.saveDOM.markdown=function(){function t(t){var e;(e=cell.attr(t))&&e&&$(n).attr(t,e)}var e=this.data("markdownText")||cellText(this),n=$.el.div({class:"nb-cell markdown"},e);return t("name"),n},methods.saveDOM.html=function(){function t(t){var e;(e=cell.attr(t))&&e&&$(n).attr(t,e)}var e=this.data("htmlText")||cellText(this),n=$.el.div({class:"nb-cell html"});return $(n).html(e),t("name"),n},methods.saveDOM.program=function(){function t(t){n.hasClass(t)&&$(i).attr("data-"+t,!0)}function e(t){var e;(e=n.attr(t))&&e&&$(i).attr(t,e)}var n=this,i=$.el.div({class:"nb-cell program"},cellText(this));return t("background"),t("singleline"),e("name"),i},methods.saveDOM.query=function(){function t(t,e){return!("tabled"!=t||e&&"false"!=e)}function e(e){var n;(n=i.data(e))&&!t(e,n)&&$(r).attr("data-"+e,n)}function n(t){var e;(e=i.attr(t))&&e&&$(r).attr(t,e)}var i=this,r=$.el.div({class:"nb-cell query"},cellText(this));return e("tabled"),e("chunk"),e("run"),n("name"),r},methods.restoreDOM.markdown=function(t){function e(e){var i;(i=t.attr(e))&&i&&n.attr(e,i)}var n=this,i=t.text().trim();n.data("markdownText",i),e("name"),methods.run.markdown.call(this,i)},methods.restoreDOM.html=function(t){function e(e){var i;(i=t.attr(e))&&i&&n.attr(e,i)}var n=this;e("name"),methods.run.html.call(this,t.html(),{eval_script:!1})},methods.restoreDOM.program=function(t){function e(e){var n;(n=t.data(e))&&(r[e]=n)}function n(e){var n;(n=t.attr(e))&&n&&i.attr(e,n)}var i=this,r={value:t.text().trim()};e("background"),e("singleline"),n("name"),methods.type.program.call(this,r)},methods.restoreDOM.query=function(t){function e(e){var n;(n=t.data(e))&&("chunk"==e?i.chunk=parseInt(n):i[e]=n)}function n(e){var n;(n=t.attr(e))&&(i[e]=n)}var i={value:t.text().trim()};e("tabled"),e("chunk"),e("run"),n("name"),void 0==i.tabled&&(i.tabled=!1),methods.type.query.call(this,i)},methods.changeGen.markdown=function(){var t=this.data("markdownText")||cellText(this);return sha1(t)},methods.changeGen.html=function(){var t=this.data("htmlText")||cellText(this);return sha1(t)},methods.changeGen.program=function(){function t(t,i){n.hasClass(t)&&(e+=i)}var e="",n=this;return t("background","B"),t("singleline","S"),e+="V"+cellText(this),sha1(e)},methods.changeGen.query=function(){function t(t,e){var r;(r=i.data(t))&&(n+=e+r)}function e(t,e){var r;(r=i.attr(t))&&(n+=e+r)}var n="",i=this;return t("tabled","T"),t("chunk","C"),t("run","R"),e("name","N"),n+="V"+cellText(this),sha1(n)},methods.isEmpty.markdown=function(){var t=this.data("markdownText")||cellText(this);return""==t.trim()},methods.isEmpty.html=function(){var t=this.data("htmlText")||cellText(this);return""==t.trim()},methods.isEmpty.program=function(){return""==cellText(this).trim()},methods.isEmpty.query=function(){return""==cellText(this).trim()},$.fn.nbCell=function(t){return methods[t]?methods[t].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof t&&t?void $.error("Method "+t+" does not exist on jQuery."+pluginName):methods._init.apply(this,arguments)}}(jQuery),Notebook.prototype.swish=function(t){var e=this.cell().nbCell("programs"),n=e.prologEditor("getSource","source",!0);return n&&(t.src=n),$.swish(t)},Notebook.prototype.cell=function(t){return t?this.notebook().find('.nb-cell[name="'+t+'"]'):$(this.my_cell)},Notebook.prototype.notebook=function(){return $(this.my_cell).closest(".notebook")},Notebook.prototype.run=function(t,e){var n={};e&&(n.bindings=e),this.cell(t).nbCell("run",n)},Notebook.prototype.submit=function(t,e){var n=this.$(t),i=form.serializeAsObject(n);form.formError(n,null),this.swish({ask:e.predicate+"(("+Pengine.stringify(i)+"))",onerror:function(t){form.formError(n,t)},onsuccess:e.onsuccess})},Notebook.prototype.$=function(t){return this.cell().find(t)}}),define("navbar",["jquery","preferences","form","laconic"],function(t,e,n){!function(t){function i(i,r,o){function a(e){if(e)return t.el.span({class:"dropdown-icon glyphicon glyphicon-"+e})}if(void 0==o);else if("--"==o)i.append(t.el.li({class:"divider"}));else if("function"==typeof o){var s,l;if(o.typeIcon)s=t.el.a(n.widgets.typeIcon(o.typeIcon),r);else if(o.glyph)s=t.el.a(a(o.glyph),r);else if((l=r.indexOf("("))>0){var c=r.substr(l);s=t.el.a({class:"accelerated"},r.substr(0,l).trim(),t.el.span({class:"accell-spacer"},c),t.el.span({class:"accell-text"},c))}else s=t.el.a(r);t(s).data("navbar-action",o),o.name&&t(s).attr("id",o.name),i.append(t.el.li(s))}else if("checkbox"==o.type){var u=t(t.el.input({type:"checkbox"}));void 0!==o.preference?(u.addClass("swish-event-receiver"),e.getVal(o.preference)&&u.prop("checked",!0),u.on("click",function(){e.setVal(o.preference,t(this).prop("checked"))}),u.on("preference",function(t){t.name==o.preference&&u.prop("checked",t.value)})):(o.checked&&u.prop("checked",o.checked),u.on("click",function(){o.action(t(this).prop("checked"))})),i.append(t.el.li({class:"checkbox"},u[0],t.el.span(r)))}else if("submenu"==o.type){var h=t.el.ul({class:"dropdown-menu sub-menu"});if(i.append(t.el.li(t.el.a({class:"trigger right-caret"},a(o.glyph),r),h)),o.action&&t(h).data("navbar-action",o.action),o.items)for(var l=0;l<o.items.length;l++)t(h).append(t.el.li(t.el.a(o.items[l])));o.update&&t(h).on("update",function(t){o.update.call(t.target)})}else alert("Unknown navbar item")}function r(e,n){return e.find(".dropdown-menu").filter(function(){return t(this).attr("name")==n})}function o(e,n){if(!t(e).hasClass("trigger")){var i=t(e).data("navbar-action")||t(e).parents("ul").data("navbar-action");return s.call(e,n),i?(n.preventDefault(),i.call(e,n)):t(e).hasClass("trigger")&&a.call(e,n),!1}a.call(e,n)}function a(e){var n=t(this).next(),i=t(this).parent().parent();(t(this).hasClass("left-caret")||t(this).hasClass("right-caret"))&&t(this).toggleClass("right-caret left-caret"),i.find(".left-caret").not(this).toggleClass("right-caret left-caret"),i.find(".sub-menu:visible").not(n).hide(),n.trigger("update"),n.toggle(),e.stopPropagation()}function s(e){var n=t(this).closest(".dropdown");n.find(".left-caret").toggleClass("right-caret left-caret"),n.find(".sub-menu:visible").hide()}var l="navbar",c={_init:function(e){return this.each(function(){var n=t(this);for(var i in e)e.hasOwnProperty(i)&&(n.navbar("appendDropdown",i),n.navbar("populateDropdown",i,e[i]));n.on("click","a",function(t){o(this,t)})})},appendDropdown:function(e){var n=this.children(".nav.navbar-nav.menubar"),i=t.el.ul({name:e,class:"dropdown-menu"}),r=t.el.li({class:"dropdown"},t.el.a({class:"dropdown-toggle","data-toggle":"dropdown"},e,t.el.b({class:"caret"})),i);return n.append(r),this},populateDropdown:function(t,e){if("function"==typeof e)e(this,t);else{var n=r(this,t);for(var o in e)e.hasOwnProperty(o)&&i(n,o,e[o])}},clearDropdown:function(t){var e=r(this,t);return e.html(""),this},extendDropdown:function(t,e,n){var o=r(this,t);i(o,e,n)}};t.fn.navbar=function(e){return c[e]?c[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery."+l):c._init.apply(this,arguments)}}(jQuery)}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/addon/hint/templates-hint",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){function e(t,e){return t.slice(0,e.length).toUpperCase()==e.toUpperCase()}function n(t){}function i(){this.marked=[],this.selectableMarkers=[],this.varIndex=-1}function r(t){return t._templateStack?t._templateStack.length:0}function o(t){this.name=t.name,this.description=t.description,this.text=t.text,t.varTemplates&&(this.varTemplates=t.varTemplates),null!=t.template?this.source=t.template:null!=t.tokens&&(this._tokens=t.tokens)}function a(t){for(var e=[],n=!1,i=null,r="",o=0;o<t.length;o++){var a=t.charAt(o);if("\n"==a)""!=r&&e.push(r),r="",e.push(a),i=null;else{var s=!0;if(n)"}"==a&&(n=!1,s=!1,"cursor"==r?e.push({cursor:!0}):"line_selection"==r?e.push({line_selection:!0}):e.push({variable:r}),r="");else if("$"==a&&o+1<=t.length){o++;var l=t.charAt(o);"{"==l&&(n=!0,s=!1,""!=r&&e.push(r),r="")}s&&"$"!=i?(r+=a,i=a):i=null}}return""!=r&&e.push(r),e}function s(t,e){var n=t.findMarksAt(e.from);if(n)for(var i=0;i<n.length;i++){var r=n[i];if(r._templateVar)return r}return null}function l(t,e){var n=t._templateState;if(e.origin&&n&&!n.updating)try{n.updating=!0;var i=s(t,e);if(null==i)f(t);else for(var r=i.find(),o=t.getRange(r.from,r.to),a=0;a<n.marked.length;a++){var l=n.marked[a];if(l!=i&&l._templateVar==i._templateVar){var c=l.find();t.replaceRange(o,c.from,c.to)}}}finally{n.updating=!1}}function c(t){n("template","endCompletion()",r(t)),r(t)&&f(t,!0)}function u(t,e){var n=t._templateState;if(n.selectableMarkers.length>0){if(n.varIndex++,n.varIndex>=n.selectableMarkers.length){if(e)return void d(t);n.varIndex=0}var i=n.selectableMarkers[n.varIndex],r=i.find();t.setSelection(r.from,r.to);for(var o=(i._templateVar,0);o<n.marked.length;o++){var a=n.marked[o];a==i?(a.className="",a.startStyle="",a.endStyle=""):a._templateVar==i._templateVar?(a.className="CodeMirror-templates-variable-selected",a.startStyle="",a.endStyle=""):(a.className="CodeMirror-templates-variable",a.startStyle="CodeMirror-templates-variable-start",a.endStyle="CodeMirror-templates-variable-end")}t.refresh()}else d(t)}function h(e){function n(t,e){return t.ch==e.ch&&t.line==e.line}var i=e._templateState,r=i.selectableMarkers[i.varIndex],o={state:i};e._hintTemplateMarker&&(o.marker=e._hintTemplateMarker),e._templateStack||(e._templateStack=[]),e._templateStack.push(o),delete e._templateState,e._hintTemplateMarker=r;var a=r.find(),s=e.listSelections();1==s.length&&n(s[0].anchor,a.from)&&n(s[0].head,a.to)&&e.replaceRange("☰",a.from,a.to),t.commands.autocomplete(e)}function d(t){var e=t._templateState.cursor;if(null!=e){var n=e.find();null!=n&&t.setSelection(n,n)}f(t)}function f(t,e){function i(){n("template","Canceled?");for(var e=0;e<r.marked.length;e++){var i=r.marked[e];if(i==t._hintTemplateMarker){var o=i.find();o&&"☰"==t.getRange(o.from,o.to)&&t.replaceRange(i._templateVar,o.from,o.to)}}}var r=t._templateState;if(r){n("template","Uninstall, clearing: ",r.marked.length);for(var o=0;o<r.marked.length;o++)r.marked[o].clear();null!=r.cursor&&r.cursor.clear(),r.marked.length=0,r.selectableMarkers.length=0}else n("template","Uninstall, no state");if(t._templateStack&&t._templateStack.length>0){n("template","Popping from level",t._templateStack.length);var a=t._templateStack.pop();r=t._templateState=a.state,e&&t._hintTemplateMarker&&i(),a.marker?t._hintTemplateMarker=a.marker:delete t._hintTemplateMarker}else n("template","Leaving template mode"),t.off("change",l),t.off("endCompletion",c),t.removeKeyMap(m),delete t._templateState,delete t._hintTemplateMarker}var p=[],g=t.Pos;t.templatesHint={};var m={Tab:u,Enter:function(t){u(t,!0)},Esc:f,"Ctrl-Space":h};o.prototype.tokens=function(){return null==this._tokens&&(this._tokens=a(this.source)),this._tokens},o.prototype.content=function(){if(null==this._content){for(var t=this.tokens(),e="",n=0;n<t.length;n++){var i=t[n];"string"==typeof i?e+=i:i.variable&&(e+=i.variable)}this._content=e}return this._content},o.prototype.insert=function(t,e){function o(t){if(a.varTemplates&&a.varTemplates[t])return a.varTemplates[t]}var a=this,s=r(t);if(n("template","Insert, nested",s,"template",a),(t._templateState||s)&&(n("template","Uninstall from insert()",s),f(t)),a.text)return void t.replaceRange(a.text,e.from,e.to);var h=new i;t._templateState=h;for(var d=this.tokens(),p="",v=e.from.line,y=e.from.ch,x=[],b=[],_=null,w=0;w<d.length;w++){var S=d[w];if("string"==typeof S)p+=S,"\n"==S?(v++,y=0):y+=S.length;else if(S.variable){p+=S.variable;var C=g(v,y),T=g(v,y+S.variable.length),k=0!=b[S.variable];y+=S.variable.length,x.push({from:C,to:T,variable:S.variable,selectable:k}),b[S.variable]=!1}else S.cursor&&(_=g(v,y))}var C=e.from,T=e.to,A=C.line;t.replaceRange(p,C,T);for(var w=0;w<x.length;w++){var M=x[w],C=M.from,T=M.to,L=t.markText(C,T,{className:"CodeMirror-templates-variable",startStyle:"CodeMirror-templates-variable-start",endStyle:"CodeMirror-templates-variable-end",inclusiveLeft:!0,inclusiveRight:!0,clearWhenEmpty:!1,_templateVar:M.variable,_templates:o(M.variable)});h.marked.push(L),1==M.selectable&&h.selectableMarkers.push(L)}null!=_&&(h.cursor=t.setBookmark(_));for(var E=p.split("\n"),P=1;P<E.length;P++){var N=A+P;t.indentLine(N)}s||(t.on("change",l),n("template","Installing endCompletion"),t.on("endCompletion",c),t.addKeyMap(m)),u(t,!0)},t.templatesHint.getCompletions=function(n,i,r){var o=n.doc.mode.name,a=p[o];if(a)for(var s=0;s<a.length;s++){var l=a[s];if(e(l.name,r)){var c=l.name;l.description&&(c+="- "+l.description);var u="CodeMirror-hint-template";l.className&&(u=l.className);var h={className:u,text:c,template:l};h.data=h,h.hint=function(t,e,n){n.template.insert(t,e)},h.info=function(e){var i=e.template.content();if(t.runMode){var r=document.createElement("div");return r.className="cm-s-default",n.options&&n.options.theme&&(r.className="cm-s-"+n.options.theme),t.runMode(i,n.getMode().name,r),r}return i},i.push(h)}}},t.templatesHint.Template=o,t.templatesHint.addTemplates=function(t){var e=t.context;if(e){var n=p[e];n||(n=[],p[e]=n),t.templates.forEach(function(t){n.push(new o(t))})}}}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/mode/prolog/prolog-template-hint",["../../lib/codemirror","../../addon/hint/templates-hint","jquery","config","laconic"],t):t(CodeMirror)}(function(t,e,n,i){"use strict";function r(t){function e(t){var e=/[-+?:^@!]*([A-Z][A-Za-z_0-9]*)/g,n=/\bis\s+(det|nondet|semidet|fail|multi)$/;if(i.template||(i.template=t.replace(e,"$${$1}").replace(n,""),i.template.match(/\${cursor}/)||(i.template+="${cursor}")),i.displayText||(i.displayText=t),!i.varTemplates){var r=t.match(/:[A-Z][A-Za-z_0-9]*/g);if(r&&r.length>0){for(var o={},a=0;a<r.length;a++)o[r[a].substring(1)]=l;i.varTemplates=o}}}var i=this,r=["template","displayText","text",{from:"summary",to:"description"},"className","varTemplates"];if("string"==typeof t)this.displayText=t,this.text=t;else{for(var o=0;o<r.length;o++){var a=r[o];"string"==typeof a?t[a]&&(this[a]=t[a]):t[a.from]&&(this[a.to]=t[a.from])}t.mode&&e(t.mode),t.classes&&(t.className=t.classes.join(" "))}this.render=function(t,e,i){n(t).append(i.displayText)},this.info=function(t){return t.description}}function o(e,n,i){function o(t,e){return t.slice(0,e.length)==e}var a=n.token.string,s=[],c=l;e._hintTemplateMarker&&("☰"==a&&(a=""),c=e._hintTemplateMarker._templates);var u=a.length>0&&!a.match(/\w/);if(c)for(var h=0;h<c.length;h++){var d=c[h];if("string"==typeof d)o(d,a)&&s.push(new r(d));else{var f=["name","mode","template","text"];if(u)d.name&&d.name.indexOf(a)>=0&&s.push(new r(d));else for(var p=0;p<f.length;p++)if(d[f[p]]){o(d[f[p]],a)&&s.push(new r(d));break}}}if(0==s.length)for(var g=t.hint.anyword,m=""==a&&e._hintTemplateMarker?{word:/[A-Z][A-Za-z0-9_]*/}:i,v=g(e,m),h=0;h<v.list.length;h++)s.push(new r(v.list[h]));return{list:s,from:n.position.from,to:n.position.to}}function a(e,n,i){var r=s(e),a=o(e,r,i);t.attachContextInfo(a),n(a)}function s(e){var n=e.getCursor(),i=e.getTokenAt(n),r=t.innerMode(e.getMode(),i.state);if("prolog"!=r.mode.name)return null;var o={from:new t.Pos(n.line,i.start),to:new t.Pos(n.line,i.end)};return{token:i,position:o}}var l=i.swish.templates||[];return r.prototype.hint=function(e,n,i){var r=new t.templatesHint.Template(this);r.insert(e,n)},a.async=!0,t.registerHelper("hint","prologTemplate",a),{getHints:a,getState:s}}),define("cm/mode/prolog/prolog-ctype",[],function(){function t(t){var n=t.charCodeAt(0),i=Math.floor(n/256);if(i<e){var r=de[i];return"number"==typeof r?r:r.charCodeAt(255&n)}return 0}var e=4353,n=1,i=2,r=4,o=8,a=16,s=32,l=64,c="@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\0@      ",u="",h="",d="\0\0\0\0\0\0\0\0\0\0",f="  ",p="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",g="@@@@@\0@\0@",m="\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",v="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",y="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0      \0\0\0\0",x="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",b="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0      \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0   \0\0\0\0\0",_="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0       \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",w="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0      \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",S="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",C="          \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",T="\0\0\0\0\0\0\0\0",k="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",A='\0\0\0\0\0"""""""""           \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',M="",L="\b\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",E="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0          \0\0\0\0\0\0",P="@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",N='\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\0\0\0',O="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",R="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",D="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",I="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",j="",V="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",H="\b\b\b\b\b\b\b\b\b\b\b@@@@@\b\b@@@@@\b\b@@@@@\0@@@@@@@@@@ \0\0                \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0       \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",F="                 \0\0\0\0\0\0",z="\0\0\0\0\0\0\0\0\0\0\0\0",q="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0                                                                                  ",G="\0                              ",B="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",$="\0\0\0\0\0\0\0 ",W="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",U="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",X="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",Y="\b\0\0\0",Q="\0\0\0\0\0\0\0\0\0    \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",Z="\0                                                          \0",K="\0\0\0\0\0\0\0\0\0\0",J="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",tt="\0\0\0\0\0\0\0\0\0\0\0\0",et="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0   \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",nt="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",it="\0\0\0\0      \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",rt="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",ot="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",at="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",st="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",lt="@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",ct="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@",ut="@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",ht="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@",dt="@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",ft="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@",pt="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",gt="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",mt="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",vt="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@",yt="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@@@\0\0",xt="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",bt="\0\0\0\0                                             \0\0\0     \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",_t="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",wt="\0    \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",St="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",Ct="\0\0\0\0\0\0\0\0\0\0        \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",Tt="      \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",kt="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0        \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0  \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",At="\0\0\0\0\0        \0\0\0\0\0        \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",Mt="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",Lt="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0                               \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",Et="\0\0\0\0                    \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",Pt="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",Nt="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",Ot="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",Rt="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",Dt="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",It="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",jt="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",Vt="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",Ht="\0\0\0\0\0\0\0\0\0\0",Ft="\0\0@@@@@@@@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",zt="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",qt="\0\0\0\0\0\0\0\0\0                  \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",Gt="\0\0\0\0\0\0\0\0\0\0\0\0",Bt="\0\0\0\0\0\0\0\0\0\0\0\0",$t="\0\0",Wt="\0\0",Ut="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",Xt="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",Yt="           \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",Qt="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",Zt="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",Kt="\0\0\0\0\0\0",Jt="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",te="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",ee="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",ne="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",ie="\0\0\0\0\0\0\0\0\0\0\0",re="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",oe="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",ae="\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",se="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",le="@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",ce="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@\0\0",ue="@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",he="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@\0\0",de=[c,u,h,d,f,p,g,m,v,y,x,b,_,w,S,C,T,3,k,A,M,3,L,E,P,N,O,R,D,I,j,V,H,F,16,z,q,16,16,G,16,16,16,B,$,W,U,X,Y,Q,Z,16,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,K,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,J,3,3,3,3,tt,3,et,nt,it,rt,ot,at,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,st,lt,0,0,ct,ut,0,0,ht,dt,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,ft,3,pt,gt,3,mt,vt,yt,xt,bt,_t,wt,St,0,0,0,Ct,Tt,kt,At,Mt,0,Lt,0,Et,Pt,0,0,0,0,Nt,0,0,0,0,0,0,0,0,0,3,3,3,Ot,Rt,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,Dt,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,It,0,0,0,0,jt,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,Vt,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,Ht,Ft,zt,qt,Gt,Bt,$t,Wt,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,Ut,0,Xt,Yt,Qt,Zt,Kt,Jt,te,ee,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,ne,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,ie,re,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,oe,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,ae,se,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,le,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,ce,ue,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,he,0];
+return{flags:t,id_start:function(e){return 0!=(t(e)&n)},id_continue:function(e){return 0!=(t(e)&i)},uppercase:function(e){return 0!=(t(e)&r)},separator:function(e){return 0!=(t(e)&o)},symbol:function(e){return 0!=(t(e)&a)},other:function(e){return 0!=(t(e)&s)},control:function(e){return 0!=(t(e)&l)}}}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/mode/prolog/prolog",["../../lib/codemirror","./prolog-ctype"],t):t(CodeMirror)}(function(t,e){"use strict";t.defineMode("prolog",function(n,i){function r(t,e,n){return e.tokenize=n,n(t,e)}function o(t,e,n){if(n>0){for(;n-- >0;)if(!e.test(t.next()))return!1}else for(;e.test(t.peek());)t.next();return!0}function a(t){var e=t.next();if(S.test(e))return!0;switch(e){case"u":return!!_.unicodeEscape&&o(t,T,4);case"U":return!!_.unicodeEscape&&o(t,T,8);case null:return!0;case"c":return t.eatSpace(),!0;case"x":return o(t,T,2)}return!!C.test(e)&&(!!o(t,C,-1)&&("\\"==t.peek()&&t.next(),!0))}function s(t,e,n){for(var i;null!=(i=t.next());){if(i==n&&n!=t.peek())return e.nesting.pop(),!1;if("\\"==i&&!a(t))return!1}return _.multiLineQuoted}function l(t){return t.nesting.slice(-1)[0]}function c(t){var e=l(t);e?0==e.arg?e.arg=1:"control"==e.type&&(t.goalStart=!1):t.goalStart=!1}function u(t){var e=l(t);e&&!e.alignment&&void 0!=e.arg&&(0==e.arg?e.alignment=e.leftCol?e.leftCol+4:e.column+4:e.alignment=e.column+1)}function h(t){var e=l(t);e?e.arg?e.arg++:"control"==e.type&&(t.goalStart=!0):t.goalStart=!0}function d(t){var e=l(t);return e?"control"==e.type:t.inBody}function f(t,e,n){return x=t,b=n,e}function p(t){return!(!t.eol()&&!/[\s%]/.test(t.peek()))}function g(t,n){var i=t.next();if("("==i)return"functor"==n.lastType?(n.nesting.push({functor:n.functorName,column:t.column(),leftCol:n.functorColumn,arg:0}),delete n.functorName,delete n.functorColumn):n.nesting.push({type:"control",closeColumn:t.column(),alignment:t.column()+4}),f("solo",null,"(");if("{"==i&&"tag"==n.lastType)return n.nesting.push({tag:n.tagName,column:t.column(),leftCol:n.tagColumn,arg:0}),delete n.tagName,delete n.tagColumn,f("dict_open",null);if("/"==i&&t.eat("*"))return r(t,n,y);if("%"==i)return t.skipToEnd(),f("comment","comment");if(c(n),k.test(i)){switch(i){case")":n.nesting.pop();break;case"]":return n.nesting.pop(),f("list_close",null,"]");case"}":var o=l(n),s=o&&o.tag?"dict_close":"brace_term_close";return n.nesting.pop(),f(s,null);case",":t.eol()&&(n.commaAtEOL=!0),h(n);case";":d(n)&&(n.goalStart=!0);break;case"[":return n.nesting.push({type:"list",closeColumn:t.column(),alignment:t.column()+2}),f("list_open",null,"[");case"{":return _.quasiQuotations&&t.eat("|")?(n.nesting.push({type:"quasi-quotation",alignment:t.column()+1}),f("qq_open","qq_open")):(n.nesting.push({type:"curly",closeColumn:t.column(),alignment:t.column()+2}),f("brace_term_open",null));case"|":if(_.quasiQuotations){if(t.eat("|"))return n.tokenize=v,f("qq_sep","qq_sep");if(t.eat("}"))return n.nesting.pop(),f("qq_close","qq_close")}d(n)&&(n.goalStart=!0)}return f("solo",null,i)}if('"'==i||"'"==i||"`"==i)return n.nesting.push({type:"quoted",alignment:t.column()+1}),r(t,n,m(i));if("0"==i){if(t.eat(/x/i))return t.eatWhile(/[\da-f]/i),f("number","number");if(t.eat(/o/i))return t.eatWhile(/[0-7]/i),f("number","number");if(t.eat(/'/)){var u=t.next();return"\\"!=u||a(t)?f("code","code"):f("error","error")}}if(/\d/.test(i)||/[+-]/.test(i)&&t.eat(/\d/))return _.groupedIntegers?t.match(/^\d*((_|\s+)\d+)*(?:\.\d+)?(?:[eE][+\-]?\d+)?/):t.match(/^\d*(?:\.\d+)?(?:[eE][+\-]?\d+)?/),f("-"==i?"neg-number":"+"==i?"pos-number":"number");if(e.symbol(i)){t.eatWhile(e.symbol);var g=t.current();return"."==g&&p(t)?l(n)?f("fullstop","error",g):f("fullstop","fullstop",g):A.test(g)?f("neck","neck",g):d(n)&&M.test(g)?(n.goalStart=!0,f("symbol","operator",g)):f("symbol","operator",g)}t.eatWhile(e.id_continue);var x=t.current();if("{"==t.peek()&&_.dicts)return n.tagName=x,n.tagColumn=t.column(),f("tag","tag",x);if("_"==i){if(1==x.length)return f("var","anon",x);var b=x.charAt(1);return e.uppercase(b)?f("var","var-2",x):f("var","var",x)}return e.uppercase(i)?f("var","var",x):"("==t.peek()?(n.functorName=x,n.functorColumn=t.column(),f("functor","functor",x)):f("atom","atom",x)}function m(t){return function(e,n){if(!s(e,n,t)){if(n.tokenize=g,"("==e.peek()){var i=e.current();return n.functorName=i,f("functor","functor",i)}if("{"==e.peek()&&_.dicts){var i=e.current();return n.tagName=i,f("tag","tag",i)}}return f(w[t],w[t])}}function v(t,e){for(var n,i=!1;n=t.next();){if("}"==n&&i){e.tokenize=g,t.backUp(2);break}i="|"==n}return f("qq_content","qq_content")}function y(t,e){for(var n,i=!1;n=t.next();){if("/"==n&&i){e.tokenize=g;break}i="*"==n}return f("comment","comment")}var x,b,_={quasiQuotations:!0,dicts:!0,unicodeEscape:!0,multiLineQuoted:!0,groupedIntegers:!0},w={'"':"string","'":"qatom","`":"bqstring"},S=/[abref\\'"nrtsv]/,C=/[0-7]/,T=/[0-9a-fA-F]/,k=/[[\]{}(),;|!]/,A=/^(:-|-->)$/,M=/^(,|;|->|\*->|\\+|\|)$/;return{startState:function(){return{tokenize:g,inBody:!1,goalStart:!1,lastType:null,nesting:new Array,curTerm:null,curToken:null}},token:function(t,e){if(null==e.curTerm&&i.metainfo&&(e.curTerm=0,e.curToken=0),t.sol()&&delete e.commaAtEOL,e.tokenize==g&&t.eatSpace())return t.eol()&&u(e),null;var n=e.tokenize(t,e);return t.eol()&&u(e),"neck"==x?(e.inBody=!0,e.goalStart=!0):"fullstop"==x&&(e.inBody=!1,e.goalStart=!1),e.lastType=x,"function"==typeof i.enrich&&(n=i.enrich(t,e,x,b,n)),n},indent:function(e,n){if(e.tokenize==y)return t.Pass;var i;return(i=l(e))?i.closeColumn&&!e.commaAtEOL?i.closeColumn:i.alignment:e.inBody?4:0},theme:"prolog",blockCommentStart:"/*",blockCommentEnd:"*/",blockCommentContinue:" * ",lineComment:"%"}}),t.defineMIME("text/x-prolog","prolog")}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/mode/prolog/prolog_keys",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";t.commands.prologStartIfThenElse=function(e){var n=e.getCursor("start"),i=e.getTokenAt(n,!0);return 1==i.state.goalStart?void e.replaceSelection("(   ","end"):t.Pass},t.commands.prologStartThen=function(e){function n(t){var e=t.nesting.length;return e>0?t.nesting[e-1]:null}function i(t){var e=n(t);return e?"control"==e.type:t.inBody}var r=e.getCursor("start"),o=e.getTokenAt(r,!0);return r.ch==o.end&&"operator"==o.type&&"-"==o.string&&i(o.state)?void e.replaceSelection(">  ","end"):t.Pass},t.commands.prologStartElse=function(e){var n=e.getCursor("start"),i=e.getTokenAt(n,!0);return 0!=i.start||n.ch!=i.end||/\S/.test(i.string)?t.Pass:void e.replaceSelection(";   ","end")},t.defineOption("prologKeys",null,function(e,n,i){if(i&&i!=t.Init&&e.removeKeyMap("prolog"),n){var r={name:"prolog","'('":"prologStartIfThenElse","'>'":"prologStartThen","';'":"prologStartElse","Ctrl-L":"refreshHighlight"};e.addKeyMap(r)}})}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/mode/prolog/prolog_query",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";t.commands.prologFireQuery=function(e){var n=e.lineCount(),i=e.getLine(n-1).length,r=e.getTokenAt({line:n,ch:i},!0);return"fullstop"==r.type?e.prologFireQuery(e.getValue()):t.Pass},t.defineOption("prologQuery",null,function(e,n,i){if(i&&i!=t.Init&&e.removeKeyMap("prologQuery"),"function"==typeof n){var r={name:"prologQuery",Enter:"prologFireQuery","Ctrl-Enter":"newlineAndIndent"};e.addKeyMap(r),e.prologFireQuery=n}})}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/mode/prolog/prolog_server",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";function e(t){"object"==typeof t&&(this.enabled=t.enabled||!1,this.role=t.role||"source",t.sourceID&&(this.sourceID=t.sourceID),this.url={change:t.url+"change",tokens:t.url+"tokens",leave:t.url+"leave",info:t.url+"info"},this.delay=t.delay?t.delay:a,this.generationFromServer=-1,this.tmo=null)}function n(t,e){var n=t.state.prologHighlightServer;null!=n&&null!=n.url&&n.enabled&&(n.tmo&&t.askRefresh(),void 0!==n.changes&&n.changes.push(e),"setValue"!=e.origin&&n.generationFromServer!=-1||(n.changes=void 0,t.serverAssistedHighlight()))}function i(t){var e=t.state.prologHighlightServer;if(null!=e&&null!=e.url&&null!=e.uuid){var n=e.uuid;delete e.uuid,$.ajax({url:e.url.leave,async:!1,contentType:"application/json",type:"POST",dataType:"json",data:JSON.stringify({uuid:n})})}}function r(){var t=(new Date).getTime(),e="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){var n=(t+16*Math.random())%16|0;return t=Math.floor(t/16),("x"==e?n:7&n|8).toString(16)});return e}function o(t,e,n,i,r){function o(t){var e=f.metainfo[t.curTerm];if(!e)return null;var n=e[t.curToken];return n?n:null}function a(){e.outOfSync||(console.log("Mismatch: ("+i+") "+n+"/"+p.type),e.outOfSync={okToken:e.curToken,okTerm:e.curTerm,skippedTerms:0,skippedTokens:[]}),f.editor.askRefresh()}function s(){var t=e.outOfSync;({curToken:t.okToken,curTerm:t.okTerm});return t.skippedTerms,null}function u(e){var n;if(i==e)return!0;if((n=e.lastIndexOf(i,1))>=0){for(var r=e.substring(i.length+n),o=0;o<r.length;o++)if(!t.eat(r.charAt(o)))return t.backUp(o),!1;return!0}return!1}function h(t){var e=t.slice(-1)[0];return e&&"quoted"==e.type}function d(t,e){if(t){if(!l[n])return i&&t.text==i?(e.curToken++,t.type):r;if(t.text&&i){if(u(t.text))return e.curToken++,t.type;return}if(l[n]==c[t.type])return"fullstop"==n?(e.curTerm++,e.curToken=0):h(e.nesting)||e.curToken++,t.type;if(l[n]==t.base)return e.curToken++,t.type;if("qatom"==n&&"atom"==c[t.type])return e.curToken++,t.type;if("number"==n&&"meta"==t.type)return e.curToken++,t.type;if("neg-number"==n&&t.text&&"-"==t.text)return e.curToken+=2,"number";if("pos-number"==n&&t.text&&"+"==t.text)return e.curToken+=2,"number"}}var f=this;if(null!=e.curTerm){var p,g;if(e.syntax_error)return"fullstop"==n&&(f.editor.askRefresh(),delete e.syntax_error),r;if(e.outOfSync){var m=e.outOfSync;if(m.skippedTerms<=3){if(m.skippedTokens.push({type:n,style:r,content:i}),g=s())return g;"fullstop"==n&&(m.skippedTokens=[],m.skippedTerms++)}return r}return(p=o(e))?void 0!==(g=d(p,e))?g:"syntax_error"==p.type?(e.syntax_error=!0,e.curToken=0,e.curTerm++,r):(a(),r+" outofsync"):(f.editor.askRefresh(),r)}return r}var a=1e3,s=1e3;t.defineOption("prologHighlightServer",!1,function(t,r,o){function a(){i(t)}t.state.prologHighlightServer?null==r?(i(t),t.off("change",n),window.removeEventListener("unload",a),delete t.state.prologHighlightServer,t.setOption("mode",{name:"prolog"})):r.enabled!=o.enabled&&(t.state.prologHighlightServer.enabled=r.enabled,r.enabled?(t.on("change",n),window.addEventListener("unload",a),t.lineCount()>0&&t.serverAssistedHighlight(!0)):(i(t),t.off("change",n),window.removeEventListener("unload",a),t.setOption("mode",{name:"prolog"}))):r&&(t.state.prologHighlightServer=new e(r),t.state.prologHighlightServer.enabled&&(t.on("change",n),window.addEventListener("unload",a),t.lineCount()>0&&t.serverAssistedHighlight(!0)))}),t.prototype.askRefresh=function(t){var e=this,n=e.state.prologHighlightServer;null!=n&&(void 0===t&&(t=n.delay),n.tmo&&clearTimeout(n.tmo),n.tmo=setTimeout(function(){e.serverAssistedHighlight()},t))},t.prototype.serverAssistedHighlight=function(t){function e(){var t=n.getOption("mode");return"object"!=typeof t?t={name:"prolog",enrich:o,editor:n}:t.enrich||(t.enrich=o,t.editor=n),t}var n=this,i=n.state.prologHighlightServer,a={};if(i.tmo=null,null!=i&&null!=i.url&&i.enabled&&(!n.isClean(i.generationFromServer)||t)){if(i.uuid)a.uuid=i.uuid,void 0==i.changes?(a.text=n.getValue(),a.text.length>s&&(i.changes=[])):(a.changes=i.changes,i.changes=[]);else{if(a.text=n.getValue(),""==a.text.trim())return;i.uuid=r(),a.uuid=i.uuid}a.role=i.role,"function"==typeof i.sourceID&&(a.sourceID=i.sourceID()),i.generationFromServer=n.changeGeneration(),$.ajax({url:i.url.tokens,dataType:"json",contentType:"application/json",type:"POST",data:JSON.stringify(a),success:function(t,i){var r=e();r.metainfo=t.tokens,n.setOption("mode",r)},error:function(t){409==t.status&&delete i.uuid}})}},t.commands.refreshHighlight=function(t){t.serverAssistedHighlight(!0)};var l={var:"var",atom:"atom",qatom:"qatom",bqstring:"string",symbol:"atom",functor:"functor",tag:"tag",number:"number",string:"string",code:"number","neg-number":"number","pos-number":"number",list_open:"list_open",list_close:"list_close",qq_open:"qq_open",qq_sep:"qq_sep",qq_close:"qq_close",dict_open:"dict_open",dict_close:"dict_close",brace_term_open:"brace_term_open",brace_term_close:"brace_term_close",neck:"neck",fullstop:"fullstop"},c={var:"var",singleton:"var",uatom:"var",atom:"atom",qatom:"qatom",string:"string",codes:"string",chars:"string",functor:"functor",tag:"tag",control:"atom",meta:"atom",op_type:"atom",int:"number",float:"number",key:"atom",sep:"atom",ext_quant:"atom",expanded:"expanded",comment_string:"string",identifier:"atom",delimiter:"atom",module:"atom",head_exported:"atom",head_public:"atom",head_extern:"atom",head_dynamic:"atom",head_multifile:"atom",head_unreferenced:"atom",head_hook:"atom",head_meta:"atom",head_constraint:"atom",head_imported:"atom",head_built_in:"atom",head_iso:"atom",head_def_iso:"atom",head_def_swi:"atom",head:"atom",goal_built_in:"atom",goal_imported:"atom",goal_autoload:"atom",goal_global:"atom",goal_undefined:"atom",goal_thread_local:"atom",goal_dynamic:"atom",goal_multifile:"atom",goal_expanded:"atom",goal_extern:"atom",goal_recursion:"atom",goal_meta:"atom",goal_foreign:"atom",goal_local:"atom",goal_constraint:"atom",goal_not_callable:"atom",xpce_method:"functor",xpce_class_builtin:"atom",xpce_class_lib:"atom",xpce_class_user:"atom",xpce_class_undef:"atom",option_name:"atom",no_option_name:"atom",flag_name:"atom",no_flag_name:"atom",file_no_depends:"atom",file:"atom",nofile:"atom",list_open:"list_open",list_close:"list_close",qq_open:"qq_open",qq_sep:"qq_sep",qq_close:"qq_close",qq_type:"atom",dict_open:"dict_open",dict_close:"dict_close",brace_term_open:"brace_term_open",brace_term_close:"brace_term_close",neck:"neck",fullstop:"fullstop",string_terminal:"string",html:"functor",entity:"atom",html_attribute:"functor",sgml_attr_function:"atom",http_location_for_id:"atom",http_no_location_for_id:"atom"};t.prototype.getEnrichedToken=function(t){if(null!=t.state.curTerm&&null!=t.state.curToken){var e,n=this.getOption("mode");if(n.metainfo&&(e=n.metainfo[t.state.curTerm]))return e[t.state.curToken-1]}},t.prototype.tokenInfo=function(t,e){var n=this.state.prologHighlightServer;return e||(e=$($.el.span({class:"token-info"},"..."))),$.ajax({url:n.url.info,data:t,success:function(t){e.html(t)}}),e[0]},t.prototype.getTokenReferences=function(t){function e(t,e){if(e&&0==e.indexOf("swish://"))return t.file=e.substring(8),!0}var n=[];switch(t.type){case"goal_local":var i={title:"Source for "+t.text+"/"+t.arity,line:t.line,regex:new RegExp("\\b"+RegExp.escape(t.text),"g"),showAllMatches:!0};e(i,t.file),n.push(i);break;case"file":var i={};e(i,t.path)&&(i.title="Included file "+i.file,n.push(i))}return n}}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/mode/xml/xml",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";var e={autoSelfClosers:{area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,frame:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0,menuitem:!0},implicitlyClosed:{dd:!0,li:!0,optgroup:!0,option:!0,p:!0,rp:!0,rt:!0,tbody:!0,td:!0,tfoot:!0,th:!0,tr:!0},contextGrabbers:{dd:{dd:!0,dt:!0},dt:{dd:!0,dt:!0},li:{li:!0},option:{option:!0,optgroup:!0},optgroup:{optgroup:!0},p:{address:!0,article:!0,aside:!0,blockquote:!0,dir:!0,div:!0,dl:!0,fieldset:!0,footer:!0,form:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,header:!0,hgroup:!0,hr:!0,menu:!0,nav:!0,ol:!0,p:!0,pre:!0,section:!0,table:!0,ul:!0},rp:{rp:!0,rt:!0},rt:{rp:!0,rt:!0},tbody:{tbody:!0,tfoot:!0},td:{td:!0,th:!0},tfoot:{tbody:!0},th:{td:!0,th:!0},thead:{tbody:!0,tfoot:!0},tr:{tr:!0}},doNotIndent:{pre:!0},allowUnquoted:!0,allowMissing:!0,caseFold:!0},n={autoSelfClosers:{},implicitlyClosed:{},contextGrabbers:{},doNotIndent:{},allowUnquoted:!1,allowMissing:!1,caseFold:!1};t.defineMode("xml",function(i,r){function o(t,e){function n(n){return e.tokenize=n,n(t,e)}var i=t.next();if("<"==i)return t.eat("!")?t.eat("[")?t.match("CDATA[")?n(l("atom","]]>")):null:t.match("--")?n(l("comment","-->")):t.match("DOCTYPE",!0,!0)?(t.eatWhile(/[\w\._\-]/),n(c(1))):null:t.eat("?")?(t.eatWhile(/[\w\._\-]/),e.tokenize=l("meta","?>"),"meta"):(k=t.eat("/")?"closeTag":"openTag",e.tokenize=a,"tag bracket");if("&"==i){var r;return r=t.eat("#")?t.eat("x")?t.eatWhile(/[a-fA-F\d]/)&&t.eat(";"):t.eatWhile(/[\d]/)&&t.eat(";"):t.eatWhile(/[\w\.\-:]/)&&t.eat(";"),r?"atom":"error"}return t.eatWhile(/[^&<]/),null}function a(t,e){var n=t.next();if(">"==n||"/"==n&&t.eat(">"))return e.tokenize=o,k=">"==n?"endTag":"selfcloseTag","tag bracket";if("="==n)return k="equals",null;if("<"==n){e.tokenize=o,e.state=f,e.tagName=e.tagStart=null;var i=e.tokenize(t,e);return i?i+" tag error":"tag error"}return/[\'\"]/.test(n)?(e.tokenize=s(n),e.stringStartCol=t.column(),e.tokenize(t,e)):(t.match(/^[^\s\u00a0=<>\"\']*[^\s\u00a0=<>\"\'\/]/),"word")}function s(t){var e=function(e,n){for(;!e.eol();)if(e.next()==t){n.tokenize=a;break}return"string"};return e.isInAttribute=!0,e}function l(t,e){return function(n,i){for(;!n.eol();){if(n.match(e)){i.tokenize=o;break}n.next()}return t}}function c(t){return function(e,n){for(var i;null!=(i=e.next());){if("<"==i)return n.tokenize=c(t+1),n.tokenize(e,n);if(">"==i){if(1==t){n.tokenize=o;break}return n.tokenize=c(t-1),n.tokenize(e,n)}}return"meta"}}function u(t,e,n){this.prev=t.context,this.tagName=e,this.indent=t.indented,this.startOfLine=n,(S.doNotIndent.hasOwnProperty(e)||t.context&&t.context.noIndent)&&(this.noIndent=!0)}function h(t){t.context&&(t.context=t.context.prev)}function d(t,e){for(var n;;){if(!t.context)return;if(n=t.context.tagName,!S.contextGrabbers.hasOwnProperty(n)||!S.contextGrabbers[n].hasOwnProperty(e))return;h(t)}}function f(t,e,n){return"openTag"==t?(n.tagStart=e.column(),p):"closeTag"==t?g:f}function p(t,e,n){return"word"==t?(n.tagName=e.current(),A="tag",y):(A="error",p)}function g(t,e,n){if("word"==t){var i=e.current();return n.context&&n.context.tagName!=i&&S.implicitlyClosed.hasOwnProperty(n.context.tagName)&&h(n),n.context&&n.context.tagName==i||S.matchClosing===!1?(A="tag",m):(A="tag error",v)}return A="error",v}function m(t,e,n){return"endTag"!=t?(A="error",m):(h(n),f)}function v(t,e,n){return A="error",m(t,e,n)}function y(t,e,n){if("word"==t)return A="attribute",x;if("endTag"==t||"selfcloseTag"==t){var i=n.tagName,r=n.tagStart;return n.tagName=n.tagStart=null,"selfcloseTag"==t||S.autoSelfClosers.hasOwnProperty(i)?d(n,i):(d(n,i),n.context=new u(n,i,r==n.indented)),f}return A="error",y}function x(t,e,n){return"equals"==t?b:(S.allowMissing||(A="error"),y(t,e,n))}function b(t,e,n){return"string"==t?_:"word"==t&&S.allowUnquoted?(A="string",y):(A="error",y(t,e,n))}function _(t,e,n){return"string"==t?_:y(t,e,n)}var w=i.indentUnit,S={},C=r.htmlMode?e:n;for(var T in C)S[T]=C[T];for(var T in r)S[T]=r[T];var k,A;return o.isInText=!0,{startState:function(t){var e={tokenize:o,state:f,indented:t||0,tagName:null,tagStart:null,context:null};return null!=t&&(e.baseIndent=t),e},token:function(t,e){if(!e.tagName&&t.sol()&&(e.indented=t.indentation()),t.eatSpace())return null;k=null;var n=e.tokenize(t,e);return(n||k)&&"comment"!=n&&(A=null,e.state=e.state(k||n,t,e),A&&(n="error"==A?n+" error":A)),n},indent:function(e,n,i){var r=e.context;if(e.tokenize.isInAttribute)return e.tagStart==e.indented?e.stringStartCol+1:e.indented+w;if(r&&r.noIndent)return t.Pass;if(e.tokenize!=a&&e.tokenize!=o)return i?i.match(/^(\s*)/)[0].length:0;if(e.tagName)return S.multilineTagIndentPastTag!==!1?e.tagStart+e.tagName.length+2:e.tagStart+w*(S.multilineTagIndentFactor||1);if(S.alignCDATA&&/<!\[CDATA\[/.test(n))return 0;var s=n&&/^<(\/)?([\w_:\.-]*)/.exec(n);if(s&&s[1])for(;r;){if(r.tagName==s[2]){r=r.prev;break}if(!S.implicitlyClosed.hasOwnProperty(r.tagName))break;r=r.prev}else if(s)for(;r;){var l=S.contextGrabbers[r.tagName];if(!l||!l.hasOwnProperty(s[2]))break;r=r.prev}for(;r&&r.prev&&!r.startOfLine;)r=r.prev;return r?r.indent+w:e.baseIndent||0},electricInput:/<\/[\s\w:]+>$/,blockCommentStart:"<!--",blockCommentEnd:"-->",configuration:S.htmlMode?"html":"xml",helperType:S.htmlMode?"html":"xml",skipAttribute:function(t){t.state==b&&(t.state=y)}}}),t.defineMIME("text/xml","xml"),t.defineMIME("application/xml","xml"),t.mimeModes.hasOwnProperty("text/html")||t.defineMIME("text/html",{name:"xml",htmlMode:!0})}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/mode/meta",["../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";t.modeInfo=[{name:"APL",mime:"text/apl",mode:"apl",ext:["dyalog","apl"]},{name:"PGP",mimes:["application/pgp","application/pgp-keys","application/pgp-signature"],mode:"asciiarmor",ext:["pgp"]},{name:"ASN.1",mime:"text/x-ttcn-asn",mode:"asn.1",ext:["asn","asn1"]},{name:"Asterisk",mime:"text/x-asterisk",mode:"asterisk",file:/^extensions\.conf$/i},{name:"Brainfuck",mime:"text/x-brainfuck",mode:"brainfuck",ext:["b","bf"]},{name:"C",mime:"text/x-csrc",mode:"clike",ext:["c","h"]},{name:"C++",mime:"text/x-c++src",mode:"clike",ext:["cpp","c++","cc","cxx","hpp","h++","hh","hxx"],alias:["cpp"]},{name:"Cobol",mime:"text/x-cobol",mode:"cobol",ext:["cob","cpy"]},{name:"C#",mime:"text/x-csharp",mode:"clike",ext:["cs"],alias:["csharp"]},{name:"Clojure",mime:"text/x-clojure",mode:"clojure",ext:["clj","cljc","cljx"]},{name:"ClojureScript",mime:"text/x-clojurescript",mode:"clojure",ext:["cljs"]},{name:"Closure Stylesheets (GSS)",mime:"text/x-gss",mode:"css",ext:["gss"]},{name:"CMake",mime:"text/x-cmake",mode:"cmake",ext:["cmake","cmake.in"],file:/^CMakeLists.txt$/},{name:"CoffeeScript",mime:"text/x-coffeescript",mode:"coffeescript",ext:["coffee"],alias:["coffee","coffee-script"]},{name:"Common Lisp",mime:"text/x-common-lisp",mode:"commonlisp",ext:["cl","lisp","el"],alias:["lisp"]},{name:"Cypher",mime:"application/x-cypher-query",mode:"cypher",ext:["cyp","cypher"]},{name:"Cython",mime:"text/x-cython",mode:"python",ext:["pyx","pxd","pxi"]},{name:"Crystal",mime:"text/x-crystal",mode:"crystal",ext:["cr"]},{name:"CSS",mime:"text/css",mode:"css",ext:["css"]},{name:"CQL",mime:"text/x-cassandra",mode:"sql",ext:["cql"]},{name:"D",mime:"text/x-d",mode:"d",ext:["d"]},{name:"Dart",mimes:["application/dart","text/x-dart"],mode:"dart",ext:["dart"]},{name:"diff",mime:"text/x-diff",mode:"diff",ext:["diff","patch"]},{name:"Django",mime:"text/x-django",mode:"django"},{name:"Dockerfile",mime:"text/x-dockerfile",mode:"dockerfile",file:/^Dockerfile$/},{name:"DTD",mime:"application/xml-dtd",mode:"dtd",ext:["dtd"]},{name:"Dylan",mime:"text/x-dylan",mode:"dylan",ext:["dylan","dyl","intr"]},{name:"EBNF",mime:"text/x-ebnf",mode:"ebnf"},{name:"ECL",mime:"text/x-ecl",mode:"ecl",ext:["ecl"]},{name:"edn",mime:"application/edn",mode:"clojure",ext:["edn"]},{name:"Eiffel",mime:"text/x-eiffel",mode:"eiffel",ext:["e"]},{name:"Elm",mime:"text/x-elm",mode:"elm",ext:["elm"]},{name:"Embedded Javascript",mime:"application/x-ejs",mode:"htmlembedded",ext:["ejs"]},{name:"Embedded Ruby",mime:"application/x-erb",mode:"htmlembedded",ext:["erb"]},{name:"Erlang",mime:"text/x-erlang",mode:"erlang",ext:["erl"]},{name:"Factor",mime:"text/x-factor",mode:"factor",ext:["factor"]},{name:"FCL",mime:"text/x-fcl",mode:"fcl"},{name:"Forth",mime:"text/x-forth",mode:"forth",ext:["forth","fth","4th"]},{name:"Fortran",mime:"text/x-fortran",mode:"fortran",ext:["f","for","f77","f90"]},{name:"F#",mime:"text/x-fsharp",mode:"mllike",ext:["fs"],alias:["fsharp"]},{name:"Gas",mime:"text/x-gas",mode:"gas",ext:["s"]},{name:"Gherkin",mime:"text/x-feature",mode:"gherkin",ext:["feature"]},{name:"GitHub Flavored Markdown",mime:"text/x-gfm",mode:"gfm",file:/^(readme|contributing|history).md$/i},{name:"Go",mime:"text/x-go",mode:"go",ext:["go"]},{name:"Groovy",mime:"text/x-groovy",mode:"groovy",ext:["groovy","gradle"],file:/^Jenkinsfile$/},{name:"HAML",mime:"text/x-haml",mode:"haml",ext:["haml"]},{name:"Haskell",mime:"text/x-haskell",mode:"haskell",ext:["hs"]},{name:"Haskell (Literate)",mime:"text/x-literate-haskell",mode:"haskell-literate",ext:["lhs"]},{name:"Haxe",mime:"text/x-haxe",mode:"haxe",ext:["hx"]},{name:"HXML",mime:"text/x-hxml",mode:"haxe",ext:["hxml"]},{name:"ASP.NET",mime:"application/x-aspx",mode:"htmlembedded",ext:["aspx"],alias:["asp","aspx"]},{name:"HTML",mime:"text/html",mode:"htmlmixed",ext:["html","htm"],alias:["xhtml"]},{name:"HTTP",mime:"message/http",mode:"http"},{name:"IDL",mime:"text/x-idl",mode:"idl",ext:["pro"]},{name:"Pug",mime:"text/x-pug",mode:"pug",ext:["jade","pug"],alias:["jade"]},{name:"Java",mime:"text/x-java",mode:"clike",ext:["java"]},{name:"Java Server Pages",mime:"application/x-jsp",mode:"htmlembedded",ext:["jsp"],alias:["jsp"]},{name:"JavaScript",mimes:["text/javascript","text/ecmascript","application/javascript","application/x-javascript","application/ecmascript"],mode:"javascript",ext:["js"],alias:["ecmascript","js","node"]},{name:"JSON",mimes:["application/json","application/x-json"],mode:"javascript",ext:["json","map"],alias:["json5"]},{name:"JSON-LD",mime:"application/ld+json",mode:"javascript",ext:["jsonld"],alias:["jsonld"]},{name:"JSX",mime:"text/jsx",mode:"jsx",ext:["jsx"]},{name:"Jinja2",mime:"null",mode:"jinja2"},{name:"Julia",mime:"text/x-julia",mode:"julia",ext:["jl"]},{name:"Kotlin",mime:"text/x-kotlin",mode:"clike",ext:["kt"]},{name:"LESS",mime:"text/x-less",mode:"css",ext:["less"]},{name:"LiveScript",mime:"text/x-livescript",mode:"livescript",ext:["ls"],alias:["ls"]},{name:"Lua",mime:"text/x-lua",mode:"lua",ext:["lua"]},{name:"Markdown",mime:"text/x-markdown",mode:"markdown",ext:["markdown","md","mkd"]},{name:"mIRC",mime:"text/mirc",mode:"mirc"},{name:"MariaDB SQL",mime:"text/x-mariadb",mode:"sql"},{name:"Mathematica",mime:"text/x-mathematica",mode:"mathematica",ext:["m","nb"]},{name:"Modelica",mime:"text/x-modelica",mode:"modelica",ext:["mo"]},{name:"MUMPS",mime:"text/x-mumps",mode:"mumps",ext:["mps"]},{name:"MS SQL",mime:"text/x-mssql",mode:"sql"},{name:"mbox",mime:"application/mbox",mode:"mbox",ext:["mbox"]},{name:"MySQL",mime:"text/x-mysql",mode:"sql"},{name:"Nginx",mime:"text/x-nginx-conf",mode:"nginx",file:/nginx.*\.conf$/i},{name:"NSIS",mime:"text/x-nsis",mode:"nsis",ext:["nsh","nsi"]},{name:"NTriples",mime:"text/n-triples",mode:"ntriples",ext:["nt"]},{name:"Objective C",mime:"text/x-objectivec",mode:"clike",ext:["m","mm"],alias:["objective-c","objc"]},{name:"OCaml",mime:"text/x-ocaml",mode:"mllike",ext:["ml","mli","mll","mly"]},{name:"Octave",mime:"text/x-octave",mode:"octave",ext:["m"]},{name:"Oz",mime:"text/x-oz",mode:"oz",ext:["oz"]},{name:"Pascal",mime:"text/x-pascal",mode:"pascal",ext:["p","pas"]},{name:"PEG.js",mime:"null",mode:"pegjs",ext:["jsonld"]},{name:"Perl",mime:"text/x-perl",mode:"perl",ext:["pl","pm"]},{name:"PHP",mime:"application/x-httpd-php",mode:"php",ext:["php","php3","php4","php5","phtml"]},{name:"Pig",mime:"text/x-pig",mode:"pig",ext:["pig"]},{name:"Plain Text",mime:"text/plain",mode:"null",ext:["txt","text","conf","def","list","log"]},{name:"PLSQL",mime:"text/x-plsql",mode:"sql",ext:["pls"]},{name:"PowerShell",mime:"application/x-powershell",mode:"powershell",ext:["ps1","psd1","psm1"]},{name:"Properties files",mime:"text/x-properties",mode:"properties",ext:["properties","ini","in"],alias:["ini","properties"]},{name:"ProtoBuf",mime:"text/x-protobuf",mode:"protobuf",ext:["proto"]},{name:"Python",mime:"text/x-python",mode:"python",ext:["BUILD","bzl","py","pyw"],file:/^(BUCK|BUILD)$/},{name:"Puppet",mime:"text/x-puppet",mode:"puppet",ext:["pp"]},{name:"Q",mime:"text/x-q",mode:"q",ext:["q"]},{name:"R",mime:"text/x-rsrc",mode:"r",ext:["r","R"],alias:["rscript"]},{name:"reStructuredText",mime:"text/x-rst",mode:"rst",ext:["rst"],alias:["rst"]},{name:"RPM Changes",mime:"text/x-rpm-changes",mode:"rpm"},{name:"RPM Spec",mime:"text/x-rpm-spec",mode:"rpm",ext:["spec"]},{name:"Ruby",mime:"text/x-ruby",mode:"ruby",ext:["rb"],alias:["jruby","macruby","rake","rb","rbx"]},{name:"Rust",mime:"text/x-rustsrc",mode:"rust",ext:["rs"]},{name:"SAS",mime:"text/x-sas",mode:"sas",ext:["sas"]},{name:"Sass",mime:"text/x-sass",mode:"sass",ext:["sass"]},{name:"Scala",mime:"text/x-scala",mode:"clike",ext:["scala"]},{name:"Scheme",mime:"text/x-scheme",mode:"scheme",ext:["scm","ss"]},{name:"SCSS",mime:"text/x-scss",mode:"css",ext:["scss"]},{name:"Shell",mime:"text/x-sh",mode:"shell",ext:["sh","ksh","bash"],alias:["bash","sh","zsh"],file:/^PKGBUILD$/},{name:"Sieve",mime:"application/sieve",mode:"sieve",ext:["siv","sieve"]},{name:"Slim",mimes:["text/x-slim","application/x-slim"],mode:"slim",ext:["slim"]},{name:"Smalltalk",mime:"text/x-stsrc",mode:"smalltalk",ext:["st"]},{name:"Smarty",mime:"text/x-smarty",mode:"smarty",ext:["tpl"]},{name:"Solr",mime:"text/x-solr",mode:"solr"},{name:"Soy",mime:"text/x-soy",mode:"soy",ext:["soy"],alias:["closure template"]},{name:"SPARQL",mime:"application/sparql-query",mode:"sparql",ext:["rq","sparql"],alias:["sparul"]},{name:"Spreadsheet",mime:"text/x-spreadsheet",mode:"spreadsheet",alias:["excel","formula"]},{name:"SQL",mime:"text/x-sql",mode:"sql",ext:["sql"]},{name:"SQLite",mime:"text/x-sqlite",mode:"sql"},{name:"Squirrel",mime:"text/x-squirrel",mode:"clike",ext:["nut"]},{name:"Stylus",mime:"text/x-styl",mode:"stylus",ext:["styl"]},{name:"Swift",mime:"text/x-swift",mode:"swift",ext:["swift"]},{name:"sTeX",mime:"text/x-stex",mode:"stex"},{name:"LaTeX",mime:"text/x-latex",mode:"stex",ext:["text","ltx"],alias:["tex"]},{name:"SystemVerilog",mime:"text/x-systemverilog",mode:"verilog",ext:["v"]},{name:"Tcl",mime:"text/x-tcl",mode:"tcl",ext:["tcl"]},{name:"Textile",mime:"text/x-textile",mode:"textile",ext:["textile"]},{name:"TiddlyWiki ",mime:"text/x-tiddlywiki",mode:"tiddlywiki"},{name:"Tiki wiki",mime:"text/tiki",mode:"tiki"},{name:"TOML",mime:"text/x-toml",mode:"toml",ext:["toml"]},{name:"Tornado",mime:"text/x-tornado",mode:"tornado"},{name:"troff",mime:"text/troff",mode:"troff",ext:["1","2","3","4","5","6","7","8","9"]},{name:"TTCN",mime:"text/x-ttcn",mode:"ttcn",ext:["ttcn","ttcn3","ttcnpp"]},{name:"TTCN_CFG",mime:"text/x-ttcn-cfg",mode:"ttcn-cfg",ext:["cfg"]},{name:"Turtle",mime:"text/turtle",mode:"turtle",ext:["ttl"]},{name:"TypeScript",mime:"application/typescript",mode:"javascript",ext:["ts"],alias:["ts"]},{name:"TypeScript-JSX",mime:"text/typescript-jsx",mode:"jsx",ext:["tsx"],alias:["tsx"]},{name:"Twig",mime:"text/x-twig",mode:"twig"},{name:"Web IDL",mime:"text/x-webidl",mode:"webidl",ext:["webidl"]},{name:"VB.NET",mime:"text/x-vb",mode:"vb",ext:["vb"]},{name:"VBScript",mime:"text/vbscript",mode:"vbscript",ext:["vbs"]},{name:"Velocity",mime:"text/velocity",mode:"velocity",ext:["vtl"]},{name:"Verilog",mime:"text/x-verilog",mode:"verilog",ext:["v"]},{name:"VHDL",mime:"text/x-vhdl",mode:"vhdl",ext:["vhd","vhdl"]},{name:"Vue.js Component",mimes:["script/x-vue","text/x-vue"],mode:"vue",ext:["vue"]},{name:"XML",mimes:["application/xml","text/xml"],mode:"xml",ext:["xml","xsl","xsd","svg"],alias:["rss","wsdl","xsd"]},{name:"XQuery",mime:"application/xquery",mode:"xquery",ext:["xy","xquery"]},{name:"Yacas",mime:"text/x-yacas",mode:"yacas",ext:["ys"]},{name:"YAML",mimes:["text/x-yaml","text/yaml"],mode:"yaml",ext:["yaml","yml"],alias:["yml"]},{name:"Z80",mime:"text/x-z80",mode:"z80",ext:["z80"]},{name:"mscgen",mime:"text/x-mscgen",mode:"mscgen",ext:["mscgen","mscin","msc"]},{name:"xu",mime:"text/x-xu",mode:"mscgen",
+ext:["xu"]},{name:"msgenny",mime:"text/x-msgenny",mode:"mscgen",ext:["msgenny"]}];for(var e=0;e<t.modeInfo.length;e++){var n=t.modeInfo[e];n.mimes&&(n.mime=n.mimes[0])}t.findModeByMIME=function(e){e=e.toLowerCase();for(var n=0;n<t.modeInfo.length;n++){var i=t.modeInfo[n];if(i.mime==e)return i;if(i.mimes)for(var r=0;r<i.mimes.length;r++)if(i.mimes[r]==e)return i}return/\+xml$/.test(e)?t.findModeByMIME("application/xml"):/\+json$/.test(e)?t.findModeByMIME("application/json"):void 0},t.findModeByExtension=function(e){for(var n=0;n<t.modeInfo.length;n++){var i=t.modeInfo[n];if(i.ext)for(var r=0;r<i.ext.length;r++)if(i.ext[r]==e)return i}},t.findModeByFileName=function(e){for(var n=0;n<t.modeInfo.length;n++){var i=t.modeInfo[n];if(i.file&&i.file.test(e))return i}var r=e.lastIndexOf("."),o=r>-1&&e.substring(r+1,e.length);if(o)return t.findModeByExtension(o)},t.findModeByName=function(e){e=e.toLowerCase();for(var n=0;n<t.modeInfo.length;n++){var i=t.modeInfo[n];if(i.name.toLowerCase()==e)return i;if(i.alias)for(var r=0;r<i.alias.length;r++)if(i.alias[r].toLowerCase()==e)return i}}}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror"),require("../xml/xml"),require("../meta")):"function"==typeof define&&define.amd?define("cm/mode/markdown/markdown",["../../lib/codemirror","../xml/xml","../meta"],t):t(CodeMirror)}(function(t){"use strict";t.defineMode("markdown",function(e,n){function i(n){if(t.findModeByName){var i=t.findModeByName(n);i&&(n=i.mime||i.mimes[0])}var r=t.getMode(e,n);return"null"==r.name?null:r}function r(t,e,n){return e.f=e.inline=n,n(t,e)}function o(t,e,n){return e.f=e.block=n,n(t,e)}function a(t){return!t||!/\S/.test(t.string)}function s(t){return t.linkTitle=!1,t.em=!1,t.strong=!1,t.strikethrough=!1,t.quote=0,t.indentedCode=!1,t.f==c&&(t.f=f,t.block=l),t.trailingSpace=0,t.trailingSpaceNewLine=!1,t.prevLine=t.thisLine,t.thisLine=null,null}function l(e,o){var s=e.sol(),l=o.list!==!1,c=o.indentedCode;o.indentedCode=!1,l&&(o.indentationDiff>=0?(o.indentationDiff<4&&(o.indentation-=o.indentationDiff),o.list=null):o.indentation>0?o.list=null:o.list=!1);var d=null;if(o.indentationDiff>=4)return e.skipToEnd(),c||a(o.prevLine)?(o.indentation-=4,o.indentedCode=!0,w.code):null;if(e.eatSpace())return null;if((d=e.match(A))&&d[1].length<=6)return o.header=d[1].length,n.highlightFormatting&&(o.formatting="header"),o.f=o.inline,h(o);if(!(a(o.prevLine)||o.quote||l||c)&&(d=e.match(M)))return o.header="="==d[0].charAt(0)?1:2,n.highlightFormatting&&(o.formatting="header"),o.f=o.inline,h(o);if(e.eat(">"))return o.quote=s?1:o.quote+1,n.highlightFormatting&&(o.formatting="quote"),e.eatSpace(),h(o);if("["===e.peek())return r(e,o,v);if(e.match(C,!0))return o.hr=!0,w.hr;if(d=e.match(T)){var f=d[1]?"ol":"ul";for(o.indentation=e.column()+e.current().length,o.list=!0;o.listStack&&e.column()<o.listStack[o.listStack.length-1];)o.listStack.pop();return o.listStack.push(o.indentation),n.taskLists&&e.match(k,!1)&&(o.taskList=!0),o.f=o.inline,n.highlightFormatting&&(o.formatting=["list","list-"+f]),h(o)}return n.fencedCodeBlocks&&(d=e.match(E,!0))?(o.fencedChars=d[1],o.localMode=i(d[2]),o.localMode&&(o.localState=t.startState(o.localMode)),o.f=o.block=u,n.highlightFormatting&&(o.formatting="code-block"),o.code=-1,h(o)):r(e,o,o.inline)}function c(e,n){var i=b.token(e,n.htmlState);if(!_){var r=t.innerMode(b,n.htmlState);("xml"==r.mode.name&&null===r.state.tagStart&&!r.state.context&&r.state.tokenize.isInText||n.md_inside&&e.current().indexOf(">")>-1)&&(n.f=f,n.block=l,n.htmlState=null)}return i}function u(t,e){if(e.fencedChars&&t.match(e.fencedChars)){n.highlightFormatting&&(e.formatting="code-block");var i=h(e);return e.localMode=e.localState=null,e.block=l,e.f=f,e.fencedChars=null,e.code=0,i}return e.fencedChars&&t.skipTo(e.fencedChars)?"comment":e.localMode?e.localMode.token(t,e.localState):(t.skipToEnd(),w.code)}function h(t){var e=[];if(t.formatting){e.push(w.formatting),"string"==typeof t.formatting&&(t.formatting=[t.formatting]);for(var i=0;i<t.formatting.length;i++)e.push(w.formatting+"-"+t.formatting[i]),"header"===t.formatting[i]&&e.push(w.formatting+"-"+t.formatting[i]+"-"+t.header),"quote"===t.formatting[i]&&(!n.maxBlockquoteDepth||n.maxBlockquoteDepth>=t.quote?e.push(w.formatting+"-"+t.formatting[i]+"-"+t.quote):e.push("error"))}if(t.taskOpen)return e.push("meta"),e.length?e.join(" "):null;if(t.taskClosed)return e.push("property"),e.length?e.join(" "):null;if(t.linkHref?e.push(w.linkHref,"url"):(t.strong&&e.push(w.strong),t.em&&e.push(w.em),t.strikethrough&&e.push(w.strikethrough),t.linkText&&e.push(w.linkText),t.code&&e.push(w.code),t.image&&e.push(w.image),t.imageAltText&&e.push(w.imageAltText,"link"),t.imageMarker&&e.push(w.imageMarker)),t.header&&e.push(w.header,w.header+"-"+t.header),t.quote&&(e.push(w.quote),!n.maxBlockquoteDepth||n.maxBlockquoteDepth>=t.quote?e.push(w.quote+"-"+t.quote):e.push(w.quote+"-"+n.maxBlockquoteDepth)),t.list!==!1){var r=(t.listStack.length-1)%3;r?1===r?e.push(w.list2):e.push(w.list3):e.push(w.list1)}return t.trailingSpaceNewLine?e.push("trailing-space-new-line"):t.trailingSpace&&e.push("trailing-space-"+(t.trailingSpace%2?"a":"b")),e.length?e.join(" "):null}function d(t,e){if(t.match(L,!0))return h(e)}function f(e,i){var r=i.text(e,i);if("undefined"!=typeof r)return r;if(i.list)return i.list=null,h(i);if(i.taskList){var a="x"!==e.match(k,!0)[1];return a?i.taskOpen=!0:i.taskClosed=!0,n.highlightFormatting&&(i.formatting="task"),i.taskList=!1,h(i)}if(i.taskOpen=!1,i.taskClosed=!1,i.header&&e.match(/^#+$/,!0))return n.highlightFormatting&&(i.formatting="header"),h(i);var s=e.next();if(i.linkTitle){i.linkTitle=!1;var l=s;"("===s&&(l=")"),l=(l+"").replace(/([.?*+^\[\]\\(){}|-])/g,"\\$1");var u="^\\s*(?:[^"+l+"\\\\]+|\\\\\\\\|\\\\.)"+l;if(e.match(new RegExp(u),!0))return w.linkHref}if("`"===s){var d=i.formatting;n.highlightFormatting&&(i.formatting="code"),e.eatWhile("`");var f=e.current().length;if(0==i.code)return i.code=f,h(i);if(f==i.code){var m=h(i);return i.code=0,m}return i.formatting=d,h(i)}if(i.code)return h(i);if("\\"===s&&(e.next(),n.highlightFormatting)){var v=h(i),y=w.formatting+"-escape";return v?v+" "+y:y}if("!"===s&&e.match(/\[[^\]]*\] ?(?:\(|\[)/,!1))return i.imageMarker=!0,i.image=!0,n.highlightFormatting&&(i.formatting="image"),h(i);if("["===s&&i.imageMarker&&e.match(/[^\]]*\](\(.*?\)| ?\[.*?\])/,!1))return i.imageMarker=!1,i.imageAltText=!0,n.highlightFormatting&&(i.formatting="image"),h(i);if("]"===s&&i.imageAltText){n.highlightFormatting&&(i.formatting="image");var v=h(i);return i.imageAltText=!1,i.image=!1,i.inline=i.f=g,v}if("["===s&&e.match(/[^\]]*\](\(.*\)| ?\[.*?\])/,!1)&&!i.image)return i.linkText=!0,n.highlightFormatting&&(i.formatting="link"),h(i);if("]"===s&&i.linkText&&e.match(/\(.*?\)| ?\[.*?\]/,!1)){n.highlightFormatting&&(i.formatting="link");var v=h(i);return i.linkText=!1,i.inline=i.f=g,v}if("<"===s&&e.match(/^(https?|ftps?):\/\/(?:[^\\>]|\\.)+>/,!1)){i.f=i.inline=p,n.highlightFormatting&&(i.formatting="link");var v=h(i);return v?v+=" ":v="",v+w.linkInline}if("<"===s&&e.match(/^[^> \\]+@(?:[^\\>]|\\.)+>/,!1)){i.f=i.inline=p,n.highlightFormatting&&(i.formatting="link");var v=h(i);return v?v+=" ":v="",v+w.linkEmail}if("<"===s&&e.match(/^(!--|[a-z]+(?:\s+[a-z_:.\-]+(?:\s*=\s*[^ >]+)?)*\s*>)/i,!1)){var x=e.string.indexOf(">",e.pos);if(x!=-1){var _=e.string.substring(e.start,x);/markdown\s*=\s*('|"){0,1}1('|"){0,1}/.test(_)&&(i.md_inside=!0)}return e.backUp(1),i.htmlState=t.startState(b),o(e,i,c)}if("<"===s&&e.match(/^\/\w*?>/))return i.md_inside=!1,"tag";if("*"===s||"_"===s){for(var S=1,C=1==e.pos?" ":e.string.charAt(e.pos-2);S<3&&e.eat(s);)S++;var T=e.peek()||" ",A=!/\s/.test(T)&&(!P.test(T)||/\s/.test(C)||P.test(C)),M=!/\s/.test(C)&&(!P.test(C)||/\s/.test(T)||P.test(T)),L=null,E=null;if(S%2&&(i.em||!A||"*"!==s&&M&&!P.test(C)?i.em!=s||!M||"*"!==s&&A&&!P.test(T)||(L=!1):L=!0),S>1&&(i.strong||!A||"*"!==s&&M&&!P.test(C)?i.strong!=s||!M||"*"!==s&&A&&!P.test(T)||(E=!1):E=!0),null!=E||null!=L){n.highlightFormatting&&(i.formatting=null==L?"strong":null==E?"em":"strong em"),L===!0&&(i.em=s),E===!0&&(i.strong=s);var m=h(i);return L===!1&&(i.em=!1),E===!1&&(i.strong=!1),m}}else if(" "===s&&(e.eat("*")||e.eat("_"))){if(" "===e.peek())return h(i);e.backUp(1)}if(n.strikethrough)if("~"===s&&e.eatWhile(s)){if(i.strikethrough){n.highlightFormatting&&(i.formatting="strikethrough");var m=h(i);return i.strikethrough=!1,m}if(e.match(/^[^\s]/,!1))return i.strikethrough=!0,n.highlightFormatting&&(i.formatting="strikethrough"),h(i)}else if(" "===s&&e.match(/^~~/,!0)){if(" "===e.peek())return h(i);e.backUp(2)}return" "===s&&(e.match(/ +$/,!1)?i.trailingSpace++:i.trailingSpace&&(i.trailingSpaceNewLine=!0)),h(i)}function p(t,e){var i=t.next();if(">"===i){e.f=e.inline=f,n.highlightFormatting&&(e.formatting="link");var r=h(e);return r?r+=" ":r="",r+w.linkInline}return t.match(/^[^>]+/,!0),w.linkInline}function g(t,e){if(t.eatSpace())return null;var i=t.next();return"("===i||"["===i?(e.f=e.inline=m("("===i?")":"]",0),n.highlightFormatting&&(e.formatting="link-string"),e.linkHref=!0,h(e)):"error"}function m(t){return function(e,i){var r=e.next();if(r===t){i.f=i.inline=f,n.highlightFormatting&&(i.formatting="link-string");var o=h(i);return i.linkHref=!1,o}return e.match(N[t]),i.linkHref=!0,h(i)}}function v(t,e){return t.match(/^([^\]\\]|\\.)*\]:/,!1)?(e.f=y,t.next(),n.highlightFormatting&&(e.formatting="link"),e.linkText=!0,h(e)):r(t,e,f)}function y(t,e){if(t.match(/^\]:/,!0)){e.f=e.inline=x,n.highlightFormatting&&(e.formatting="link");var i=h(e);return e.linkText=!1,i}return t.match(/^([^\]\\]|\\.)+/,!0),w.linkText}function x(t,e){return t.eatSpace()?null:(t.match(/^[^\s]+/,!0),void 0===t.peek()?e.linkTitle=!0:t.match(/^(?:\s+(?:"(?:[^"\\]|\\\\|\\.)+"|'(?:[^'\\]|\\\\|\\.)+'|\((?:[^)\\]|\\\\|\\.)+\)))?/,!0),e.f=e.inline=f,w.linkHref+" url")}var b=t.getMode(e,"text/html"),_="null"==b.name;void 0===n.highlightFormatting&&(n.highlightFormatting=!1),void 0===n.maxBlockquoteDepth&&(n.maxBlockquoteDepth=0),void 0===n.taskLists&&(n.taskLists=!1),void 0===n.strikethrough&&(n.strikethrough=!1),void 0===n.tokenTypeOverrides&&(n.tokenTypeOverrides={});var w={header:"header",code:"comment",quote:"quote",list1:"variable-2",list2:"variable-3",list3:"keyword",hr:"hr",image:"image",imageAltText:"image-alt-text",imageMarker:"image-marker",formatting:"formatting",linkInline:"link",linkEmail:"link",linkText:"link",linkHref:"string",em:"em",strong:"strong",strikethrough:"strikethrough"};for(var S in w)w.hasOwnProperty(S)&&n.tokenTypeOverrides[S]&&(w[S]=n.tokenTypeOverrides[S]);var C=/^([*\-_])(?:\s*\1){2,}\s*$/,T=/^(?:[*\-+]|^[0-9]+([.)]))\s+/,k=/^\[(x| )\](?=\s)/,A=n.allowAtxHeaderWithoutSpace?/^(#+)/:/^(#+)(?: |$)/,M=/^ *(?:\={1,}|-{1,})\s*$/,L=/^[^#!\[\]*_\\<>` "'(~]+/,E=new RegExp("^("+(n.fencedCodeBlocks===!0?"~~~+|```+":n.fencedCodeBlocks)+")[ \\t]*([\\w+#-]*)"),P=/[!\"#$%&\'()*+,\-\.\/:;<=>?@\[\\\]^_`{|}~—]/,N={")":/^(?:[^\\\(\)]|\\.|\((?:[^\\\(\)]|\\.)*\))*?(?=\))/,"]":/^(?:[^\\\[\]]|\\.|\[(?:[^\\\[\\]]|\\.)*\])*?(?=\])/},O={startState:function(){return{f:l,prevLine:null,thisLine:null,block:l,htmlState:null,indentation:0,inline:f,text:d,formatting:!1,linkText:!1,linkHref:!1,linkTitle:!1,code:0,em:!1,strong:!1,header:0,hr:!1,taskList:!1,list:!1,listStack:[],quote:0,trailingSpace:0,trailingSpaceNewLine:!1,strikethrough:!1,fencedChars:null}},copyState:function(e){return{f:e.f,prevLine:e.prevLine,thisLine:e.thisLine,block:e.block,htmlState:e.htmlState&&t.copyState(b,e.htmlState),indentation:e.indentation,localMode:e.localMode,localState:e.localMode?t.copyState(e.localMode,e.localState):null,inline:e.inline,text:e.text,formatting:!1,linkTitle:e.linkTitle,code:e.code,em:e.em,strong:e.strong,strikethrough:e.strikethrough,header:e.header,hr:e.hr,taskList:e.taskList,list:e.list,listStack:e.listStack.slice(0),quote:e.quote,indentedCode:e.indentedCode,trailingSpace:e.trailingSpace,trailingSpaceNewLine:e.trailingSpaceNewLine,md_inside:e.md_inside,fencedChars:e.fencedChars}},token:function(t,e){if(e.formatting=!1,t!=e.thisLine){var n=e.header||e.hr;if(e.header=0,e.hr=!1,t.match(/^\s*$/,!0)||n){if(s(e),!n)return null;e.prevLine=null}e.prevLine=e.thisLine,e.thisLine=t,e.taskList=!1,e.trailingSpace=0,e.trailingSpaceNewLine=!1,e.f=e.block;var i=t.match(/^\s*/,!0)[0].replace(/\t/g,"    ").length;if(e.indentationDiff=Math.min(i-e.indentation,4),e.indentation=e.indentation+e.indentationDiff,i>0)return null}return e.f(t,e)},innerMode:function(t){return t.block==c?{state:t.htmlState,mode:b}:t.localState?{state:t.localState,mode:t.localMode}:{state:t,mode:O}},blankLine:s,getType:h,closeBrackets:"()[]{}''\"\"``",fold:"markdown"};return O},"xml"),t.defineMIME("text/x-markdown","markdown")}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/addon/edit/matchbrackets",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){function e(t,e,i,r){var o=t.getLineHandle(e.line),l=e.ch-1,c=l>=0&&s[o.text.charAt(l)]||s[o.text.charAt(++l)];if(!c)return null;var u=">"==c.charAt(1)?1:-1;if(i&&u>0!=(l==e.ch))return null;var h=t.getTokenTypeAt(a(e.line,l+1)),d=n(t,a(e.line,l+(u>0?1:0)),u,h||null,r);return null==d?null:{from:a(e.line,l),to:d&&d.pos,match:d&&d.ch==c.charAt(0),forward:u>0}}function n(t,e,n,i,r){for(var o=r&&r.maxScanLineLength||1e4,l=r&&r.maxScanLines||1e3,c=[],u=r&&r.bracketRegex?r.bracketRegex:/[(){}[\]]/,h=n>0?Math.min(e.line+l,t.lastLine()+1):Math.max(t.firstLine()-1,e.line-l),d=e.line;d!=h;d+=n){var f=t.getLine(d);if(f){var p=n>0?0:f.length-1,g=n>0?f.length:-1;if(!(f.length>o))for(d==e.line&&(p=e.ch-(n<0?1:0));p!=g;p+=n){var m=f.charAt(p);if(u.test(m)&&(void 0===i||t.getTokenTypeAt(a(d,p+1))==i)){var v=s[m];if(">"==v.charAt(1)==n>0)c.push(m);else{if(!c.length)return{pos:a(d,p),ch:m};c.pop()}}}}}return d-n!=(n>0?t.lastLine():t.firstLine())&&null}function i(t,n,i){for(var r=t.state.matchBrackets.maxHighlightLineLength||1e3,s=[],l=t.listSelections(),c=0;c<l.length;c++){var u=l[c].empty()&&e(t,l[c].head,!1,i);if(u&&t.getLine(u.from.line).length<=r){var h=u.match?"CodeMirror-matchingbracket":"CodeMirror-nonmatchingbracket";s.push(t.markText(u.from,a(u.from.line,u.from.ch+1),{className:h})),u.to&&t.getLine(u.to.line).length<=r&&s.push(t.markText(u.to,a(u.to.line,u.to.ch+1),{className:h}))}}if(s.length){o&&t.state.focused&&t.focus();var d=function(){t.operation(function(){for(var t=0;t<s.length;t++)s[t].clear()})};if(!n)return d;setTimeout(d,800)}}function r(t){t.operation(function(){l&&(l(),l=null),l=i(t,!1,t.state.matchBrackets)})}var o=/MSIE \d/.test(navigator.userAgent)&&(null==document.documentMode||document.documentMode<8),a=t.Pos,s={"(":")>",")":"(<","[":"]>","]":"[<","{":"}>","}":"{<"},l=null;t.defineOption("matchBrackets",!1,function(e,n,i){i&&i!=t.Init&&(e.off("cursorActivity",r),l&&(l(),l=null)),n&&(e.state.matchBrackets="object"==typeof n?n:{},e.on("cursorActivity",r))}),t.defineExtension("matchBrackets",function(){i(this,!0)}),t.defineExtension("findMatchingBracket",function(t,n,i){return e(this,t,n,i)}),t.defineExtension("scanForBracket",function(t,e,i,r){return n(this,t,e,i,r)})}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/addon/comment/continuecomment",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){function e(e){if(e.getOption("disableInput"))return t.Pass;for(var i,r=e.listSelections(),o=[],a=0;a<r.length;a++){var s=r[a].head,l=e.getTokenAt(s);if("comment"!=l.type)return t.Pass;var c=t.innerMode(e.getMode(),l.state).mode;if(i){if(i!=c)return t.Pass}else i=c;var u=null;if(i.blockCommentStart&&i.blockCommentContinue){var h,d=l.string.indexOf(i.blockCommentEnd),f=e.getRange(t.Pos(s.line,0),t.Pos(s.line,l.end));if(d!=-1&&d==l.string.length-i.blockCommentEnd.length&&s.ch>=d);else if(0==l.string.indexOf(i.blockCommentStart)){if(u=f.slice(0,l.start),!/^\s*$/.test(u)){u="";for(var p=0;p<l.start;++p)u+=" "}}else(h=f.indexOf(i.blockCommentContinue))!=-1&&h+i.blockCommentContinue.length>l.start&&/^\s*$/.test(f.slice(0,h))&&(u=f.slice(0,h));null!=u&&(u+=i.blockCommentContinue)}if(null==u&&i.lineComment&&n(e)){var g=e.getLine(s.line),h=g.indexOf(i.lineComment);h>-1&&(u=g.slice(0,h),/\S/.test(u)?u=null:u+=i.lineComment+g.slice(h+i.lineComment.length).match(/^\s*/)[0])}if(null==u)return t.Pass;o[a]="\n"+u}e.operation(function(){for(var t=r.length-1;t>=0;t--)e.replaceRange(o[t],r[t].from(),r[t].to(),"+insert")})}function n(t){var e=t.getOption("continueComments");return!e||"object"!=typeof e||e.continueLineComment!==!1}for(var i=["clike","css","javascript"],r=0;r<i.length;++r)t.extendMode(i[r],{blockCommentContinue:" * "});t.defineOption("continueComments",null,function(n,i,r){if(r&&r!=t.Init&&n.removeKeyMap("continueComment"),i){var o="Enter";"string"==typeof i?o=i:"object"==typeof i&&i.key&&(o=i.key);var a={name:"continueComment"};a[o]=e,n.addKeyMap(a)}})}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/addon/comment/comment",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";function e(t){var e=t.search(o);return e==-1?0:e}function n(t,e,n){return/\bstring\b/.test(t.getTokenTypeAt(a(e.line,0)))&&!/^[\'\"\`]/.test(n)}function i(t,e){var n=t.getMode();return n.useInnerComments!==!1&&n.innerMode?t.getModeAt(e):n}var r={},o=/[^\s\u00a0]/,a=t.Pos;t.commands.toggleComment=function(t){t.toggleComment()},t.defineExtension("toggleComment",function(t){t||(t=r);for(var e=this,n=1/0,i=this.listSelections(),o=null,s=i.length-1;s>=0;s--){var l=i[s].from(),c=i[s].to();l.line>=n||(c.line>=n&&(c=a(n,0)),n=l.line,null==o?e.uncomment(l,c,t)?o="un":(e.lineComment(l,c,t),o="line"):"un"==o?e.uncomment(l,c,t):e.lineComment(l,c,t))}}),t.defineExtension("lineComment",function(t,s,l){l||(l=r);var c=this,u=i(c,t),h=c.getLine(t.line);if(null!=h&&!n(c,t,h)){var d=l.lineComment||u.lineComment;if(!d)return void((l.blockCommentStart||u.blockCommentStart)&&(l.fullLines=!0,c.blockComment(t,s,l)));var f=Math.min(0!=s.ch||s.line==t.line?s.line+1:s.line,c.lastLine()+1),p=null==l.padding?" ":l.padding,g=l.commentBlankLines||t.line==s.line;c.operation(function(){if(l.indent){for(var n=null,i=t.line;i<f;++i){var r=c.getLine(i),s=r.slice(0,e(r));(null==n||n.length>s.length)&&(n=s)}for(var i=t.line;i<f;++i){var r=c.getLine(i),u=n.length;(g||o.test(r))&&(r.slice(0,u)!=n&&(u=e(r)),c.replaceRange(n+d+p,a(i,0),a(i,u)))}}else for(var i=t.line;i<f;++i)(g||o.test(c.getLine(i)))&&c.replaceRange(d+p,a(i,0))})}}),t.defineExtension("blockComment",function(t,e,n){n||(n=r);var s=this,l=i(s,t),c=n.blockCommentStart||l.blockCommentStart,u=n.blockCommentEnd||l.blockCommentEnd;if(!c||!u)return void((n.lineComment||l.lineComment)&&0!=n.fullLines&&s.lineComment(t,e,n));if(!/\bcomment\b/.test(s.getTokenTypeAt(a(t.line,0)))){var h=Math.min(e.line,s.lastLine());h!=t.line&&0==e.ch&&o.test(s.getLine(h))&&--h;var d=null==n.padding?" ":n.padding;t.line>h||s.operation(function(){if(0!=n.fullLines){var i=o.test(s.getLine(h));s.replaceRange(d+u,a(h)),s.replaceRange(c+d,a(t.line,0));var r=n.blockCommentLead||l.blockCommentLead;if(null!=r)for(var f=t.line+1;f<=h;++f)(f!=h||i)&&s.replaceRange(r+d,a(f,0))}else s.replaceRange(u,e),s.replaceRange(c,t)})}}),t.defineExtension("uncomment",function(t,e,n){n||(n=r);var s,l=this,c=i(l,t),u=Math.min(0!=e.ch||e.line==t.line?e.line:e.line-1,l.lastLine()),h=Math.min(t.line,u),d=n.lineComment||c.lineComment,f=[],p=null==n.padding?" ":n.padding;t:if(d){for(var g=h;g<=u;++g){var m=l.getLine(g),v=m.indexOf(d);if(v>-1&&!/comment/.test(l.getTokenTypeAt(a(g,v+1)))&&(v=-1),v==-1&&o.test(m))break t;if(v>-1&&o.test(m.slice(0,v)))break t;f.push(m)}if(l.operation(function(){for(var t=h;t<=u;++t){var e=f[t-h],n=e.indexOf(d),i=n+d.length;n<0||(e.slice(i,i+p.length)==p&&(i+=p.length),s=!0,l.replaceRange("",a(t,n),a(t,i)))}}),s)return!0}var y=n.blockCommentStart||c.blockCommentStart,x=n.blockCommentEnd||c.blockCommentEnd;if(!y||!x)return!1;var b=n.blockCommentLead||c.blockCommentLead,_=l.getLine(h),w=_.indexOf(y);if(w==-1)return!1;var S=u==h?_:l.getLine(u),C=S.indexOf(x,u==h?w+y.length:0);C==-1&&h!=u&&(S=l.getLine(--u),C=S.indexOf(x));var T=a(h,w+1),k=a(u,C+1);if(C==-1||!/comment/.test(l.getTokenTypeAt(T))||!/comment/.test(l.getTokenTypeAt(k))||l.getRange(T,k,"\n").indexOf(x)>-1)return!1;var A=_.lastIndexOf(y,t.ch),M=A==-1?-1:_.slice(0,t.ch).indexOf(x,A+y.length);if(A!=-1&&M!=-1&&M+x.length!=t.ch)return!1;M=S.indexOf(x,e.ch);var L=S.slice(e.ch).lastIndexOf(y,M-e.ch);return A=M==-1||L==-1?-1:e.ch+L,(M==-1||A==-1||A==e.ch)&&(l.operation(function(){l.replaceRange("",a(u,C-(p&&S.slice(C-p.length,C)==p?p.length:0)),a(u,C+x.length));var t=w+y.length;if(p&&_.slice(t,t+p.length)==p&&(t+=p.length),l.replaceRange("",a(h,w),a(h,t)),b)for(var e=h+1;e<=u;++e){var n=l.getLine(e),i=n.indexOf(b);if(i!=-1&&!o.test(n.slice(0,i))){var r=i+b.length;p&&n.slice(r,r+p.length)==p&&(r+=p.length),l.replaceRange("",a(e,i),a(e,r))}}}),!0)})}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/addon/hint/show-hint",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";function e(t,e){this.cm=t,this.options=e,this.widget=null,this.debounce=0,this.tick=0,this.startPos=this.cm.getCursor("start"),this.startLen=this.cm.getLine(this.startPos.line).length-this.cm.getSelection().length;var n=this;t.on("cursorActivity",this.activityFunc=function(){n.cursorActivity()})}function n(e,n){var i=t.cmpPos(n.from,e.from);return i>0&&e.to.ch-e.from.ch!=n.to.ch-n.from.ch}function i(t,e,n){var i=t.options.hintOptions,r={};for(var o in g)r[o]=g[o];if(i)for(var o in i)void 0!==i[o]&&(r[o]=i[o]);if(n)for(var o in n)void 0!==n[o]&&(r[o]=n[o]);return r.hint.resolve&&(r.hint=r.hint.resolve(t,e)),r}function r(t){return"string"==typeof t?t:t.text}function o(t,e){function n(t,n){var r;r="string"!=typeof n?function(t){return n(t,e)}:i.hasOwnProperty(n)?i[n]:n,o[t]=r}var i={Up:function(){e.moveFocus(-1)},Down:function(){e.moveFocus(1)},PageUp:function(){e.moveFocus(-e.menuSize()+1,!0)},PageDown:function(){e.moveFocus(e.menuSize()-1,!0)},Home:function(){e.setFocus(0)},End:function(){e.setFocus(e.length-1)},Enter:e.pick,Tab:e.pick,Esc:e.close},r=t.options.customKeys,o=r?{}:i;if(r)for(var a in r)r.hasOwnProperty(a)&&n(a,r[a]);var s=t.options.extraKeys;if(s)for(var a in s)s.hasOwnProperty(a)&&n(a,s[a]);return o}function a(t,e){for(;e&&e!=t;){if("LI"===e.nodeName.toUpperCase()&&e.parentNode==t)return e;e=e.parentNode}}function s(e,n){this.completion=e,this.data=n,this.picked=!1;var i=this,s=e.cm,l=this.hints=document.createElement("ul");l.className="CodeMirror-hints",this.selectedHint=n.selectedHint||0;for(var c=n.list,u=0;u<c.length;++u){var f=l.appendChild(document.createElement("li")),p=c[u],g=h+(u!=this.selectedHint?"":" "+d);null!=p.className&&(g=p.className+" "+g),f.className=g,p.render?p.render(f,n,p):f.appendChild(document.createTextNode(p.displayText||r(p))),f.hintId=u}var m=s.cursorCoords(e.options.alignWithWord?n.from:null),v=m.left,y=m.bottom,x=!0;l.style.left=v+"px",l.style.top=y+"px";var b=window.innerWidth||Math.max(document.body.offsetWidth,document.documentElement.offsetWidth),_=window.innerHeight||Math.max(document.body.offsetHeight,document.documentElement.offsetHeight);(e.options.container||document.body).appendChild(l);var w=l.getBoundingClientRect(),S=w.bottom-_,C=l.scrollHeight>l.clientHeight+1,T=s.getScrollInfo();if(S>0){var k=w.bottom-w.top,A=m.top-(m.bottom-w.top);if(A-k>0)l.style.top=(y=m.top-k)+"px",x=!1;else if(k>_){l.style.height=_-5+"px",l.style.top=(y=m.bottom-w.top)+"px";var M=s.getCursor();n.from.ch!=M.ch&&(m=s.cursorCoords(M),l.style.left=(v=m.left)+"px",w=l.getBoundingClientRect())}}var L=w.right-b;if(L>0&&(w.right-w.left>b&&(l.style.width=b-5+"px",L-=w.right-w.left-b),l.style.left=(v=m.left-L)+"px"),C)for(var E=l.firstChild;E;E=E.nextSibling)E.style.paddingRight=s.display.nativeBarWidth+"px";if(s.addKeyMap(this.keyMap=o(e,{moveFocus:function(t,e){i.changeActive(i.selectedHint+t,e)},setFocus:function(t){i.changeActive(t)},menuSize:function(){return i.screenAmount()},length:c.length,close:function(){e.close()},pick:function(){i.pick()},data:n})),e.options.closeOnUnfocus){var P;s.on("blur",this.onBlur=function(){P=setTimeout(function(){e.close()},100)}),s.on("focus",this.onFocus=function(){clearTimeout(P)})}return s.on("scroll",this.onScroll=function(){var t=s.getScrollInfo(),n=s.getWrapperElement().getBoundingClientRect(),i=y+T.top-t.top,r=i-(window.pageYOffset||(document.documentElement||document.body).scrollTop);return x||(r+=l.offsetHeight),r<=n.top||r>=n.bottom?e.close():(l.style.top=i+"px",void(l.style.left=v+T.left-t.left+"px"))}),t.on(l,"dblclick",function(t){var e=a(l,t.target||t.srcElement);e&&null!=e.hintId&&(i.changeActive(e.hintId),i.pick())}),t.on(l,"click",function(t){var n=a(l,t.target||t.srcElement);n&&null!=n.hintId&&(i.changeActive(n.hintId),e.options.completeOnSingleClick&&i.pick())}),t.on(l,"mousedown",function(){setTimeout(function(){s.focus()},20)}),t.signal(n,"select",c[0],l.firstChild),!0}function l(t,e){if(!t.somethingSelected())return e;for(var n=[],i=0;i<e.length;i++)e[i].supportsSelection&&n.push(e[i]);return n}function c(t,e,n,i){if(t.async)t(e,i,n);else{var r=t(e,n);r&&r.then?r.then(i):i(r)}}function u(e,n){var i,r=e.getHelpers(n,"hint");if(r.length){var o=function(t,e,n){function i(r){return r==o.length?e(null):void c(o[r],t,n,function(t){t&&t.list.length>0?e(t):i(r+1)})}var o=l(t,r);i(0)};return o.async=!0,o.supportsSelection=!0,o}return(i=e.getHelper(e.getCursor(),"hintWords"))?function(e){return t.hint.fromList(e,{words:i})}:t.hint.anyword?function(e,n){return t.hint.anyword(e,n)}:function(){}}var h="CodeMirror-hint",d="CodeMirror-hint-active";t.showHint=function(t,e,n){if(!e)return t.showHint(n);n&&n.async&&(e.async=!0);var i={hint:e};if(n)for(var r in n)i[r]=n[r];return t.showHint(i)},t.defineExtension("showHint",function(n){n=i(this,this.getCursor("start"),n);var r=this.listSelections();if(!(r.length>1)){if(this.somethingSelected()){if(!n.hint.supportsSelection)return;for(var o=0;o<r.length;o++)if(r[o].head.line!=r[o].anchor.line)return}this.state.completionActive&&this.state.completionActive.close();var a=this.state.completionActive=new e(this,n);a.options.hint&&(t.signal(this,"startCompletion",this),a.update(!0))}});var f=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},p=window.cancelAnimationFrame||clearTimeout;e.prototype={close:function(){this.active()&&(this.cm.state.completionActive=null,this.tick=null,this.cm.off("cursorActivity",this.activityFunc),this.widget&&this.data&&t.signal(this.data,"close"),this.widget&&this.widget.close(),t.signal(this.cm,"endCompletion",this.cm))},active:function(){return this.cm.state.completionActive==this},pick:function(e,n){var i=e.list[n];i.hint?i.hint(this.cm,e,i):this.cm.replaceRange(r(i),i.from||e.from,i.to||e.to,"complete"),t.signal(e,"pick",i),this.close()},cursorActivity:function(){this.debounce&&(p(this.debounce),this.debounce=0);var t=this.cm.getCursor(),e=this.cm.getLine(t.line);if(t.line!=this.startPos.line||e.length-t.ch!=this.startLen-this.startPos.ch||t.ch<this.startPos.ch||this.cm.somethingSelected()||t.ch&&this.options.closeCharacters.test(e.charAt(t.ch-1)))this.close();else{var n=this;this.debounce=f(function(){n.update()}),this.widget&&this.widget.disable()}},update:function(t){if(null!=this.tick){var e=this,n=++this.tick;c(this.options.hint,this.cm,this.options,function(i){e.tick==n&&e.finishUpdate(i,t)})}},finishUpdate:function(e,i){this.data&&t.signal(this.data,"update");var r=this.widget&&this.widget.picked||i&&this.options.completeSingle;this.widget&&this.widget.close(),e&&this.data&&n(this.data,e)||(this.data=e,e&&e.list.length&&(r&&1==e.list.length?this.pick(e,0):(this.widget=new s(this,e),t.signal(e,"shown"))))}},s.prototype={close:function(){if(this.completion.widget==this){this.completion.widget=null,this.hints.parentNode.removeChild(this.hints),this.completion.cm.removeKeyMap(this.keyMap);var t=this.completion.cm;this.completion.options.closeOnUnfocus&&(t.off("blur",this.onBlur),t.off("focus",this.onFocus)),t.off("scroll",this.onScroll)}},disable:function(){this.completion.cm.removeKeyMap(this.keyMap);var t=this;this.keyMap={Enter:function(){t.picked=!0}},this.completion.cm.addKeyMap(this.keyMap)},pick:function(){this.completion.pick(this.data,this.selectedHint)},changeActive:function(e,n){if(e>=this.data.list.length?e=n?this.data.list.length-1:0:e<0&&(e=n?0:this.data.list.length-1),this.selectedHint!=e){var i=this.hints.childNodes[this.selectedHint];i.className=i.className.replace(" "+d,""),i=this.hints.childNodes[this.selectedHint=e],i.className+=" "+d,i.offsetTop<this.hints.scrollTop?this.hints.scrollTop=i.offsetTop-3:i.offsetTop+i.offsetHeight>this.hints.scrollTop+this.hints.clientHeight&&(this.hints.scrollTop=i.offsetTop+i.offsetHeight-this.hints.clientHeight+3),t.signal(this.data,"select",this.data.list[this.selectedHint],i)}},screenAmount:function(){return Math.floor(this.hints.clientHeight/this.hints.firstChild.offsetHeight)||1}},t.registerHelper("hint","auto",{resolve:u}),t.registerHelper("hint","fromList",function(e,n){var i=e.getCursor(),r=e.getTokenAt(i),o=t.Pos(i.line,r.end);if(r.string&&/\w/.test(r.string[r.string.length-1]))var a=r.string,s=t.Pos(i.line,r.start);else var a="",s=o;for(var l=[],c=0;c<n.words.length;c++){var u=n.words[c];u.slice(0,a.length)==a&&l.push(u)}if(l.length)return{list:l,from:s,to:o}}),t.commands.autocomplete=t.showHint;var g={hint:t.hint.auto,completeSingle:!0,alignWithWord:!0,closeCharacters:/[\s()\[\]{};:>,]/,closeOnUnfocus:!0,completeOnSingleClick:!0,container:null,customKeys:null,extraKeys:null};t.defineOption("hintOptions",null)}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/addon/hint/anyword-hint",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";var e=/[\w$]+/,n=500;t.registerHelper("hint","anyword",function(i,r){for(var o=r&&r.word||e,a=r&&r.range||n,s=i.getCursor(),l=i.getLine(s.line),c=s.ch,u=c;u&&o.test(l.charAt(u-1));)--u;for(var h=u!=c&&l.slice(u,c),d=r&&r.list||[],f={},p=new RegExp(o.source,"g"),g=-1;g<=1;g+=2)for(var m=s.line,v=Math.min(Math.max(m+g*a,i.firstLine()),i.lastLine())+g;m!=v;m+=g)for(var y,x=i.getLine(m);y=p.exec(x);)m==s.line&&y[0]===h||h&&0!=y[0].lastIndexOf(h,0)||Object.prototype.hasOwnProperty.call(f,y[0])||(f[y[0]]=!0,d.push(y[0]));return{list:d,from:t.Pos(s.line,u),to:t.Pos(s.line,c)}})}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/addon/display/placeholder",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){function e(t){t.state.placeholder&&(t.state.placeholder.parentNode.removeChild(t.state.placeholder),t.state.placeholder=null)}function n(t){e(t);var n=t.state.placeholder=document.createElement("pre");n.style.cssText="height: 0; overflow: visible",n.className="CodeMirror-placeholder";var i=t.getOption("placeholder");"string"==typeof i&&(i=document.createTextNode(i)),n.appendChild(i),t.display.lineSpace.insertBefore(n,t.display.lineSpace.firstChild)}function i(t){o(t)&&n(t)}function r(t){var i=t.getWrapperElement(),r=o(t);i.className=i.className.replace(" CodeMirror-empty","")+(r?" CodeMirror-empty":""),r?n(t):e(t)}function o(t){return 1===t.lineCount()&&""===t.getLine(0)}t.defineOption("placeholder","",function(n,o,a){var s=a&&a!=t.Init;if(o&&!s)n.on("blur",i),n.on("change",r),n.on("swapDoc",r),r(n);else if(!o&&s){n.off("blur",i),n.off("change",r),n.off("swapDoc",r),e(n);var l=n.getWrapperElement();l.className=l.className.replace(" CodeMirror-empty","")}o&&!n.hasFocus()&&i(n)})}),function(t){
+"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/addon/runmode/runmode",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";t.runMode=function(e,n,i,r){var o=t.getMode(t.defaults,n),a=/MSIE \d/.test(navigator.userAgent),s=a&&(null==document.documentMode||document.documentMode<9);if(i.appendChild){var l=r&&r.tabSize||t.defaults.tabSize,c=i,u=0;c.innerHTML="",i=function(t,e){if("\n"==t)return c.appendChild(document.createTextNode(s?"\r":t)),void(u=0);for(var n="",i=0;;){var r=t.indexOf("\t",i);if(r==-1){n+=t.slice(i),u+=t.length-i;break}u+=r-i,n+=t.slice(i,r);var o=l-u%l;u+=o;for(var a=0;a<o;++a)n+=" ";i=r+1}if(e){var h=c.appendChild(document.createElement("span"));h.className="cm-"+e.replace(/ +/g," cm-"),h.appendChild(document.createTextNode(n))}else c.appendChild(document.createTextNode(n))}}for(var h=t.splitLines(e),d=r&&r.state||t.startState(o),f=0,p=h.length;f<p;++f){f&&i("\n");var g=new t.StringStream(h[f]);for(!g.string&&o.blankLine&&o.blankLine(d);!g.eol();){var m=o.token(g,d);i(g.current(),m,f,g.start,d),g.start=g.pos}}}}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/addon/search/searchcursor",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";function e(t,e,r,o){if(this.atOccurrence=!1,this.doc=t,null==o&&"string"==typeof e&&(o=!1),r=r?t.clipPos(r):i(0,0),this.pos={from:r,to:r},"string"!=typeof e)e.global||(e=new RegExp(e.source,e.ignoreCase?"ig":"g")),this.matches=function(n,r){if(n){e.lastIndex=0;for(var o,a,s=t.getLine(r.line).slice(0,r.ch),l=0;;){e.lastIndex=l;var c=e.exec(s);if(!c)break;if(o=c,a=o.index,l=o.index+(o[0].length||1),l==s.length)break}var u=o&&o[0].length||0;u||(0==a&&0==s.length?o=void 0:a!=t.getLine(r.line).length&&u++)}else{e.lastIndex=r.ch;var s=t.getLine(r.line),o=e.exec(s),u=o&&o[0].length||0,a=o&&o.index;a+u==s.length||u||(u=1)}if(o&&u)return{from:i(r.line,a),to:i(r.line,a+u),match:o}};else{var a=e;o&&(e=e.toLowerCase());var s=o?function(t){return t.toLowerCase()}:function(t){return t},l=e.split("\n");if(1==l.length)e.length?this.matches=function(r,o){if(r){var l=t.getLine(o.line).slice(0,o.ch),c=s(l),u=c.lastIndexOf(e);if(u>-1)return u=n(l,c,u),{from:i(o.line,u),to:i(o.line,u+a.length)}}else{var l=t.getLine(o.line).slice(o.ch),c=s(l),u=c.indexOf(e);if(u>-1)return u=n(l,c,u)+o.ch,{from:i(o.line,u),to:i(o.line,u+a.length)}}}:this.matches=function(){};else{var c=a.split("\n");this.matches=function(e,n){var r=l.length-1;if(e){if(n.line-(l.length-1)<t.firstLine())return;if(s(t.getLine(n.line).slice(0,c[r].length))!=l[l.length-1])return;for(var o=i(n.line,c[r].length),a=n.line-1,u=r-1;u>=1;--u,--a)if(l[u]!=s(t.getLine(a)))return;var h=t.getLine(a),d=h.length-c[0].length;if(s(h.slice(d))!=l[0])return;return{from:i(a,d),to:o}}if(!(n.line+(l.length-1)>t.lastLine())){var h=t.getLine(n.line),d=h.length-c[0].length;if(s(h.slice(d))==l[0]){for(var f=i(n.line,d),a=n.line+1,u=1;u<r;++u,++a)if(l[u]!=s(t.getLine(a)))return;if(s(t.getLine(a).slice(0,c[r].length))==l[r])return{from:f,to:i(a,c[r].length)}}}}}}}function n(t,e,n){if(t.length==e.length)return n;for(var i=Math.min(n,t.length);;){var r=t.slice(0,i).toLowerCase().length;if(r<n)++i;else{if(!(r>n))return i;--i}}}var i=t.Pos;e.prototype={findNext:function(){return this.find(!1)},findPrevious:function(){return this.find(!0)},find:function(t){function e(t){var e=i(t,0);return n.pos={from:e,to:e},n.atOccurrence=!1,!1}for(var n=this,r=this.doc.clipPos(t?this.pos.from:this.pos.to);;){if(this.pos=this.matches(t,r))return this.atOccurrence=!0,this.pos.match||!0;if(t){if(!r.line)return e(0);r=i(r.line-1,this.doc.getLine(r.line-1).length)}else{var o=this.doc.lineCount();if(r.line==o-1)return e(o);r=i(r.line+1,0)}}},from:function(){if(this.atOccurrence)return this.pos.from},to:function(){if(this.atOccurrence)return this.pos.to},replace:function(e,n){if(this.atOccurrence){var r=t.splitLines(e);this.doc.replaceRange(r,this.pos.from,this.pos.to,n),this.pos.to=i(this.pos.from.line+r.length-1,r[r.length-1].length+(1==r.length?this.pos.from.ch:0))}}},t.defineExtension("getSearchCursor",function(t,n,i){return new e(this.doc,t,n,i)}),t.defineDocExtension("getSearchCursor",function(t,n,i){return new e(this,t,n,i)}),t.defineExtension("selectMatches",function(e,n){for(var i=[],r=this.getSearchCursor(e,this.getCursor("from"),n);r.findNext()&&!(t.cmpPos(r.to(),this.getCursor("to"))>0);)i.push({anchor:r.from(),head:r.to()});i.length&&this.setSelections(i,0)})}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/addon/dialog/dialog",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){function e(t,e,n){var i,r=t.getWrapperElement();return i=r.appendChild(document.createElement("div")),n?i.className="CodeMirror-dialog CodeMirror-dialog-bottom":i.className="CodeMirror-dialog CodeMirror-dialog-top","string"==typeof e?i.innerHTML=e:i.appendChild(e),i}function n(t,e){t.state.currentNotificationClose&&t.state.currentNotificationClose(),t.state.currentNotificationClose=e}t.defineExtension("openDialog",function(i,r,o){function a(t){if("string"==typeof t)h.value=t;else{if(c)return;c=!0,l.parentNode.removeChild(l),u.focus(),o.onClose&&o.onClose(l)}}o||(o={}),n(this,null);var s,l=e(this,i,o.bottom),c=!1,u=this,h=l.getElementsByTagName("input")[0];return h?(h.focus(),o.value&&(h.value=o.value,o.selectValueOnOpen!==!1&&h.select()),o.onInput&&t.on(h,"input",function(t){o.onInput(t,h.value,a)}),o.onKeyUp&&t.on(h,"keyup",function(t){o.onKeyUp(t,h.value,a)}),t.on(h,"keydown",function(e){o&&o.onKeyDown&&o.onKeyDown(e,h.value,a)||((27==e.keyCode||o.closeOnEnter!==!1&&13==e.keyCode)&&(h.blur(),t.e_stop(e),a()),13==e.keyCode&&r(h.value,e))}),o.closeOnBlur!==!1&&t.on(h,"blur",a)):(s=l.getElementsByTagName("button")[0])&&(t.on(s,"click",function(){a(),u.focus()}),o.closeOnBlur!==!1&&t.on(s,"blur",a),s.focus()),a}),t.defineExtension("openConfirm",function(i,r,o){function a(){c||(c=!0,s.parentNode.removeChild(s),u.focus())}n(this,null);var s=e(this,i,o&&o.bottom),l=s.getElementsByTagName("button"),c=!1,u=this,h=1;l[0].focus();for(var d=0;d<l.length;++d){var f=l[d];!function(e){t.on(f,"click",function(n){t.e_preventDefault(n),a(),e&&e(u)})}(r[d]),t.on(f,"blur",function(){--h,setTimeout(function(){h<=0&&a()},200)}),t.on(f,"focus",function(){++h})}}),t.defineExtension("openNotification",function(i,r){function o(){l||(l=!0,clearTimeout(a),s.parentNode.removeChild(s))}n(this,o);var a,s=e(this,i,r&&r.bottom),l=!1,c=r&&"undefined"!=typeof r.duration?r.duration:5e3;return t.on(s,"click",function(e){t.e_preventDefault(e),o()}),c&&(a=setTimeout(o,c)),o})}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror"),require("./searchcursor"),require("../dialog/dialog")):"function"==typeof define&&define.amd?define("cm/addon/search/search",["../../lib/codemirror","./searchcursor","../dialog/dialog"],t):t(CodeMirror)}(function(t){"use strict";function e(t,e){return"string"==typeof t?t=new RegExp(t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),e?"gi":"g"):t.global||(t=new RegExp(t.source,t.ignoreCase?"gi":"g")),{token:function(e){t.lastIndex=e.pos;var n=t.exec(e.string);return n&&n.index==e.pos?(e.pos+=n[0].length||1,"searching"):void(n?e.pos=n.index:e.skipToEnd())}}}function n(){this.posFrom=this.posTo=this.lastQuery=this.query=null,this.overlay=null}function i(t){return t.state.search||(t.state.search=new n)}function r(t){return"string"==typeof t&&t==t.toLowerCase()}function o(t,e,n){return t.getSearchCursor(e,n,r(e))}function a(t,e,n,i,r){t.openDialog(e,i,{value:n,selectValueOnOpen:!0,closeOnEnter:!1,onClose:function(){p(t)},onKeyDown:r})}function s(t,e,n,i,r){t.openDialog?t.openDialog(e,r,{value:i,selectValueOnOpen:!0}):r(prompt(n,i))}function l(t,e,n,i){t.openConfirm?t.openConfirm(e,i):confirm(n)&&i[0]()}function c(t){return t.replace(/\\(.)/g,function(t,e){return"n"==e?"\n":"r"==e?"\r":e})}function u(t){var e=t.match(/^\/(.*)\/([a-z]*)$/);if(e)try{t=new RegExp(e[1],e[2].indexOf("i")==-1?"":"i")}catch(t){}else t=c(t);return("string"==typeof t?""==t:t.test(""))&&(t=/x^/),t}function h(t,n,i){n.queryText=i,n.query=u(i),t.removeOverlay(n.overlay,r(n.query)),n.overlay=e(n.query,r(n.query)),t.addOverlay(n.overlay),t.showMatchesOnScrollbar&&(n.annotate&&(n.annotate.clear(),n.annotate=null),n.annotate=t.showMatchesOnScrollbar(n.query,r(n.query)))}function d(e,n,r,o){var l=i(e);if(l.query)return f(e,n);var c=e.getSelection()||l.lastQuery;if(r&&e.openDialog){var u=null,d=function(n,i){t.e_stop(i),n&&(n!=l.queryText&&(h(e,l,n),l.posFrom=l.posTo=e.getCursor()),u&&(u.style.opacity=1),f(e,i.shiftKey,function(t,n){var i;n.line<3&&document.querySelector&&(i=e.display.wrapper.querySelector(".CodeMirror-dialog"))&&i.getBoundingClientRect().bottom-4>e.cursorCoords(n,"window").top&&((u=i).style.opacity=.4)}))};a(e,v,c,d,function(n,r){var o=t.keyName(n),a=t.keyMap[e.getOption("keyMap")][o];a||(a=e.getOption("extraKeys")[o]),"findNext"==a||"findPrev"==a||"findPersistentNext"==a||"findPersistentPrev"==a?(t.e_stop(n),h(e,i(e),r),e.execCommand(a)):"find"!=a&&"findPersistent"!=a||(t.e_stop(n),d(r,n))}),o&&c&&(h(e,l,c),f(e,n))}else s(e,v,"Search for:",c,function(t){t&&!l.query&&e.operation(function(){h(e,l,t),l.posFrom=l.posTo=e.getCursor(),f(e,n)})})}function f(e,n,r){e.operation(function(){var a=i(e),s=o(e,a.query,n?a.posFrom:a.posTo);(s.find(n)||(s=o(e,a.query,n?t.Pos(e.lastLine()):t.Pos(e.firstLine(),0)),s.find(n)))&&(e.setSelection(s.from(),s.to()),e.scrollIntoView({from:s.from(),to:s.to()},20),a.posFrom=s.from(),a.posTo=s.to(),r&&r(s.from(),s.to()))})}function p(t){t.operation(function(){var e=i(t);e.lastQuery=e.query,e.query&&(e.query=e.queryText=null,t.removeOverlay(e.overlay),e.annotate&&(e.annotate.clear(),e.annotate=null))})}function g(t,e,n){t.operation(function(){for(var i=o(t,e);i.findNext();)if("string"!=typeof e){var r=t.getRange(i.from(),i.to()).match(e);i.replace(n.replace(/\$(\d)/g,function(t,e){return r[e]}))}else i.replace(n)})}function m(t,e){if(!t.getOption("readOnly")){var n=t.getSelection()||i(t).lastQuery,r='<span class="CodeMirror-search-label">'+(e?"Replace all:":"Replace:")+"</span>";s(t,r+y,r,n,function(n){n&&(n=u(n),s(t,x,"Replace with:","",function(i){if(i=c(i),e)g(t,n,i);else{p(t);var r=o(t,n,t.getCursor("from")),a=function(){var e,c=r.from();!(e=r.findNext())&&(r=o(t,n),!(e=r.findNext())||c&&r.from().line==c.line&&r.from().ch==c.ch)||(t.setSelection(r.from(),r.to()),t.scrollIntoView({from:r.from(),to:r.to()}),l(t,b,"Replace?",[function(){s(e)},a,function(){g(t,n,i)}]))},s=function(t){r.replace("string"==typeof n?i:i.replace(/\$(\d)/g,function(e,n){return t[n]})),a()};a()}}))})}}var v='<span class="CodeMirror-search-label">Search:</span> <input type="text" style="width: 10em" class="CodeMirror-search-field"/> <span style="color: #888" class="CodeMirror-search-hint">(Use /re/ syntax for regexp search)</span>',y=' <input type="text" style="width: 10em" class="CodeMirror-search-field"/> <span style="color: #888" class="CodeMirror-search-hint">(Use /re/ syntax for regexp search)</span>',x='<span class="CodeMirror-search-label">With:</span> <input type="text" style="width: 10em" class="CodeMirror-search-field"/>',b='<span class="CodeMirror-search-label">Replace?</span> <button>Yes</button> <button>No</button> <button>All</button> <button>Stop</button>';t.commands.find=function(t){p(t),d(t)},t.commands.findPersistent=function(t){p(t),d(t,!1,!0)},t.commands.findPersistentNext=function(t){d(t,!1,!0,!0)},t.commands.findPersistentPrev=function(t){d(t,!0,!0,!0)},t.commands.findNext=d,t.commands.findPrev=function(t){d(t,!0)},t.commands.clearSearch=p,t.commands.replace=m,t.commands.replaceAll=function(t){m(t,!0)}}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror"),require("../dialog/dialog")):"function"==typeof define&&define.amd?define("cm/addon/search/jump-to-line",["../../lib/codemirror","../dialog/dialog"],t):t(CodeMirror)}(function(t){"use strict";function e(t,e,n,i,r){t.openDialog?t.openDialog(e,r,{value:i,selectValueOnOpen:!0}):r(prompt(n,i))}function n(t,e){var n=Number(e);return/^[-+]/.test(e)?t.getCursor().line+n:n-1}var i='Jump to line: <input type="text" style="width: 10em" class="CodeMirror-search-field"/> <span style="color: #888" class="CodeMirror-search-hint">(Use line:column or scroll% syntax)</span>';t.commands.jumpToLine=function(t){var r=t.getCursor();e(t,i,"Jump to line:",r.line+1+":"+r.ch,function(e){if(e){var i;if(i=/^\s*([\+\-]?\d+)\s*\:\s*(\d+)\s*$/.exec(e))t.setCursor(n(t,i[1]),Number(i[2]));else if(i=/^\s*([\+\-]?\d+(\.\d+)?)\%\s*/.exec(e)){var o=Math.round(t.lineCount()*Number(i[1])/100);/^[-+]/.test(i[1])&&(o=r.line+o+1),t.setCursor(o-1,r.ch)}else(i=/^\s*\:?\s*([\+\-]?\d+)\s*/.exec(e))&&t.setCursor(n(t,i[1]),r.ch)}})},t.keyMap.default["Alt-G"]="jumpToLine"}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/addon/hover/text-hover",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";!function(){function e(e,n){function i(e){return r.parentNode?(r.style.top=Math.max(0,e.clientY-r.offsetHeight-5)+"px",void(r.style.left=e.clientX+5+"px")):t.off(document,"mousemove",i)}var r=document.createElement("div");return r.className="CodeMirror-hover-tooltip","string"==typeof n&&(n=document.createTextNode(n)),r.appendChild(n),document.body.appendChild(r),t.on(document,"mousemove",i),i(e),null!=r.style.opacity&&(r.style.opacity=1),r}function n(t){t.parentNode&&t.parentNode.removeChild(t)}function i(t){t.parentNode&&(null==t.style.opacity&&n(t),t.style.opacity=0,setTimeout(function(){n(t)},600))}function r(n,r,o,a,s){function l(){t.off(o,"mouseout",l),t.off(o,"click",l),o.className=o.className.replace(h,""),c&&(i(c),c=null),s.removeKeyMap(a.keyMap)}var c=e(n,r),u=setInterval(function(){if(c)for(var t=o;;t=t.parentNode){if(t==document.body)return;if(!t){l();break}}if(!c)return clearInterval(u)},400);t.on(o,"mouseout",l),t.on(o,"click",l),a.keyMap={Esc:l},s.addKeyMap(a.keyMap)}function o(t,e){this.options=e,this.timeout=null,e.delay?this.onMouseOver=function(e){s(t,e)}:this.onMouseOver=function(e){l(t,e)},this.keyMap=null}function a(e,n){if(n instanceof Function)return{getTextHover:n};if(n&&n!==!0||(n={}),n.getTextHover||(n.getTextHover=e.getHelper(t.Pos(0,0),"textHover")),!n.getTextHover)throw new Error("Required option 'getTextHover' missing (text-hover addon)");return n}function s(t,e){var n=t.state.textHover,i=n.options.delay;if(clearTimeout(n.timeout),e.srcElement){var r={srcElement:e.srcElement,clientX:e.clientX,clientY:e.clientY};e=r}n.timeout=setTimeout(function(){l(t,e)},i)}function l(t,e){var n=e.target||e.srcElement;if(n){var i=t.state.textHover,o=u(t,e),a=i.options.getTextHover(t,o,e);a&&(n.className+=h,"function"==typeof a?a(r,o,e,n,i,t):r(e,a,n,i,t))}}function c(e,n,i){if(i&&i!=t.Init&&(t.off(e.getWrapperElement(),"mouseover",e.state.textHover.onMouseOver),delete e.state.textHover),n){var r=e.state.textHover=new o(e,a(e,n));t.on(e.getWrapperElement(),"mouseover",r.onMouseOver)}}function u(t,e){for(var n=e.target||e.srcElement,i=n.innerText||n.textContent,r=0;r<d.length;r+=2){var o=t.coordsChar({left:e.clientX+d[r],top:e.clientY+d[r+1]}),a=t.getTokenAt(o);if(a&&a.string===i)return{token:a,pos:o}}}var h=" CodeMirror-hover",d=[0,0,0,5,0,-5,5,0,-5,0];t.defineOption("textHover",!1,c)}()}),define("cm/addon/hover/prolog-hover",["../../lib/codemirror","jquery","laconic"],function(t,e){"use strict";function n(t){return e.el.span({class:"pred-name"},t.text+"/"+t.arity)}function i(t,e,n){s[n]=e}function r(t,e){var n;return s[t.file]?s[t.file]:(n=t.file.lastIndexOf("/"))?t.file.substring(n+1):t.file}function o(t,n,i){return n&&n.file?e.el.div(a(t)+" included from ",e.el.span({class:"file-path"},n.file)):n&&n.line?a(t)+" defined in line "+n.line:"Locally defined "+t}function a(t){return t[0].toUpperCase()+t.slice(1)}var s={},l={goal_built_in:function(t,i){return t?e.el.div(n(t),i.tokenInfo(t)):"Built-in predicate"},goal_global:function(t,i){return t?e.el.div(n(t),i.tokenInfo(t)):"Global predicate"},goal_autoload:function(t,i){return t?e.el.div(n(t)," (autoload from ",r(t,i),"): ",i.tokenInfo(t)):"Autoloaded predicate"},goal_imported:function(t,i){return t?e.el.div(n(t)," (imported from ",r(t,i),"): ",i.tokenInfo(t)):"Imported predicate"},goal_recursion:"Recursive call",goal_dynamic:"Dynamic predicate",goal_undefined:"Undefined predicate",goal_local:function(t,e){return o("predicate",t,e)},goal_constraint:function(t,e){return o("CHR constraint",t,e)},head_unreferenced:"Predicate is not called",unused_import:"Imported predicate is not used",undefined_import:"Imported predicate is not defined",head_constraint:"CHR constraint",file:function(t,n){return t?(i(n,t.text,t.path),e.el.div("File: ",e.el.span({class:"file-path"},t.path))):"File name"},file_no_depends:function(t,n){return t?(i(n,t.text,t.path),e.el.div("File: ",e.el.span({class:"file-path"},t.path),e.el.div({class:"hover-remark"},"does not resolve any dependencies"))):"File name (does not resolve any dependencies)"},error:function(t,n){return t&&t.expected?e.el.div("error: ",e.el.strong(t.expected)," expected"):"error"},singleton:"Variable appearing only once",codes:"List of Unicode code points (integers)",chars:"List of one-character atoms",string:"Packed string (SWI7, use `text` for a list of codes)",qatom:"Quoted atom",uatom:"Uppercase atom due to var_prefix flag",tag:"Tag of a SWI7 dict",ext_quant:"Existential quantification operator",instantiation_error:"No variable allowed here",string_terminal:"Terminal (DCG)",head:null,control:null,fullstop:null,var:null,int:null,float:null,number:null,atom:null,functor:null,comment:null,neck:null,operator:null,sep:null,list_open:null,list_close:null,dict_open:null,dict_close:null};t.registerHelper("textHover","prolog",function(t,n,i){if(n){var r,o=n.token,a=l[o.type];if(void 0===a)return(r=t.getEnrichedToken(o))?r.summary&&"ask"===r.info?e.el.div(r.summary,t.tokenInfo(r)):r.summary?e.el.div(r.summary):e.el.div(o.type):e.el.div(o.type);if("function"==typeof a){var s=a(t.getEnrichedToken(o),t);return"string"==typeof s?e.el.div(s):s}if("string"==typeof a)return e.el.div(a)}return null})}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/addon/hint/show-context-info",["../../lib/codemirror"],t):t(CodeMirror)}(function(t){var e=null;t.attachContextInfo=function(n){t.on(n,"select",function(t,n){n=n.parentNode;var i=null;if(t.info&&(i=t.info(t)),i){var r=n.getBoundingClientRect();null==e&&(e=document.createElement("div"),e.className="CodeMirror-hints-contextInfo",document.body.appendChild(e)),e.innerHTML="",e.style.top=n.style.top,e.style.left=r.right+"px","string"==typeof i?e.innerHTML=i:e.appendChild(i),e.style.display="block"}else null!=e&&(e.innerHTML="",e.style.display="none")}),t.on(n,"close",function(){null!=e&&e.parentNode.removeChild(e),e=null})},t.showContextInfo=function(e){return function(n,i,r){r||(r=i);var o=e(n,r);return t.attachContextInfo(o),o}}}),function(t){"object"==typeof exports&&"object"==typeof module?t(require("../lib/codemirror")):"function"==typeof define&&define.amd?define("cm/keymap/emacs",["../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";function e(t,e){return t.line==e.line&&t.ch==e.ch}function n(t){R.push(t),R.length>50&&R.shift()}function i(t){return R.length?void(R[R.length-1]+=t):n(t)}function r(t){return R[R.length-(t?Math.min(t,1):1)]||""}function o(){return R.length>1&&R.pop(),r()}function a(t,r,o,a,s){null==s&&(s=t.getRange(r,o)),a&&D&&D.cm==t&&e(r,D.pos)&&t.isClean(D.gen)?i(s):n(s),t.replaceRange("",r,o,"+delete"),D=a?{cm:t,pos:r,gen:t.changeGeneration()}:null}function s(t,e,n){return t.findPosH(e,n,"char",!0)}function l(t,e,n){return t.findPosH(e,n,"word",!0)}function c(t,e,n){return t.findPosV(e,n,"line",t.doc.sel.goalColumn)}function u(t,e,n){return t.findPosV(e,n,"page",t.doc.sel.goalColumn)}function h(t,e,n){for(var i=e.line,r=t.getLine(i),o=/\S/.test(n<0?r.slice(0,e.ch):r.slice(e.ch)),a=t.firstLine(),s=t.lastLine();;){if(i+=n,i<a||i>s)return t.clipPos(O(i-n,n<0?0:null));r=t.getLine(i);var l=/\S/.test(r);if(l)o=!0;else if(o)return O(i,0)}}function d(t,e,n){for(var i=e.line,r=e.ch,o=t.getLine(e.line),a=!1;;){var s=o.charAt(r+(n<0?-1:0));if(s){if(a&&/[!?.]/.test(s))return O(i,r+(n>0?1:0));a||(a=/\w/.test(s)),r+=n}else{if(i==(n<0?t.firstLine():t.lastLine()))return O(i,r);if(o=t.getLine(i+n),!/\S/.test(o))return O(i,r);i+=n,r=n<0?o.length:0}}}function f(t,n,i){var r;if(t.findMatchingBracket&&(r=t.findMatchingBracket(n,!0))&&r.match&&(r.forward?1:-1)==i)return i>0?O(r.to.line,r.to.ch+1):r.to;for(var o=!0;;o=!1){var a=t.getTokenAt(n),s=O(n.line,i<0?a.start:a.end);if(!(o&&i>0&&a.end==n.ch)&&/\w/.test(a.string))return s;var l=t.findPosH(s,i,"char");if(e(s,l))return n;n=l}}function p(t,e){var n=t.state.emacsPrefix;return n?(w(t),"-"==n?-1:Number(n)):e?null:1}function g(t){var e="string"==typeof t?function(e){e.execCommand(t)}:t;return function(t){var n=p(t);e(t);for(var i=1;i<n;++i)e(t)}}function m(t,n,i,r){var o=p(t);o<0&&(r=-r,o=-o);for(var a=0;a<o;++a){var s=i(t,n,r);if(e(s,n))break;n=s}return n}function v(t,e){var n=function(n){n.extendSelection(m(n,n.getCursor(),t,e))};return n.motion=!0,n}function y(t,e,n){for(var i,r=t.listSelections(),o=r.length;o--;)i=r[o].head,a(t,i,m(t,i,e,n),!0)}function x(t){if(t.somethingSelected()){for(var e,n=t.listSelections(),i=n.length;i--;)e=n[i],a(t,e.anchor,e.head);return!0}}function b(t,e){return t.state.emacsPrefix?void("-"!=e&&(t.state.emacsPrefix+=e)):(t.state.emacsPrefix=e,t.on("keyHandled",_),void t.on("inputRead",S))}function _(t,e){t.state.emacsPrefixMap||I.hasOwnProperty(e)||w(t)}function w(t){t.state.emacsPrefix=null,t.off("keyHandled",_),t.off("inputRead",S)}function S(t,e){var n=p(t);if(n>1&&"+input"==e.origin){for(var i=e.text.join("\n"),r="",o=1;o<n;++o)r+=i;t.replaceSelection(r)}}function C(t){t.state.emacsPrefixMap=!0,t.addKeyMap(V),t.on("keyHandled",T),t.on("inputRead",T)}function T(t,e){("string"!=typeof e||!/^\d$/.test(e)&&"Ctrl-U"!=e)&&(t.removeKeyMap(V),t.state.emacsPrefixMap=!1,t.off("keyHandled",T),t.off("inputRead",T))}function k(t){t.setCursor(t.getCursor()),t.setExtending(!t.getExtending()),t.on("change",function(){t.setExtending(!1)})}function A(t){t.setExtending(!1),t.setCursor(t.getCursor())}function M(t,e,n){t.openDialog?t.openDialog(e+': <input type="text" style="width: 10em"/>',n,{bottom:!0}):n(prompt(e,""))}function L(t,e){var n=t.getCursor(),i=t.findPosH(n,1,"word");t.replaceRange(e(t.getRange(n,i)),n,i),t.setCursor(i)}function E(t){for(var e=t.getCursor(),n=e.line,i=e.ch,r=[];n>=t.firstLine();){for(var o=t.getLine(n),a=null==i?o.length:i;a>0;){var i=o.charAt(--a);if(")"==i)r.push("(");else if("]"==i)r.push("[");else if("}"==i)r.push("{");else if(/[\(\{\[]/.test(i)&&(!r.length||r.pop()!=i))return t.extendSelection(O(n,a))}--n,i=null}}function P(t){t.execCommand("clearSearch"),A(t)}function N(t){V[t]=function(e){b(e,t)},j["Ctrl-"+t]=function(e){b(e,t)},I["Ctrl-"+t]=!0}var O=t.Pos,R=[],D=null,I={"Alt-G":!0,"Ctrl-X":!0,"Ctrl-Q":!0,"Ctrl-U":!0};t.emacs={kill:a,killRegion:x,repeated:g};for(var j=t.keyMap.emacs=t.normalizeKeyMap({"Ctrl-W":function(t){a(t,t.getCursor("start"),t.getCursor("end"))},"Ctrl-K":g(function(t){var e=t.getCursor(),n=t.clipPos(O(e.line)),i=t.getRange(e,n);/\S/.test(i)||(i+="\n",n=O(e.line+1,0)),a(t,e,n,!0,i)}),"Alt-W":function(t){n(t.getSelection()),A(t)},"Ctrl-Y":function(t){var e=t.getCursor();t.replaceRange(r(p(t)),e,e,"paste"),t.setSelection(e,t.getCursor())},"Alt-Y":function(t){t.replaceSelection(o(),"around","paste")},"Ctrl-Space":k,"Ctrl-Shift-2":k,"Ctrl-F":v(s,1),"Ctrl-B":v(s,-1),Right:v(s,1),Left:v(s,-1),"Ctrl-D":function(t){y(t,s,1)},Delete:function(t){x(t)||y(t,s,1)},"Ctrl-H":function(t){y(t,s,-1)},Backspace:function(t){x(t)||y(t,s,-1)},"Alt-F":v(l,1),"Alt-B":v(l,-1),"Alt-D":function(t){y(t,l,1)},"Alt-Backspace":function(t){y(t,l,-1)},"Ctrl-N":v(c,1),"Ctrl-P":v(c,-1),Down:v(c,1),Up:v(c,-1),"Ctrl-A":"goLineStart","Ctrl-E":"goLineEnd",End:"goLineEnd",Home:"goLineStart","Alt-V":v(u,-1),"Ctrl-V":v(u,1),PageUp:v(u,-1),PageDown:v(u,1),"Ctrl-Up":v(h,-1),"Ctrl-Down":v(h,1),"Alt-A":v(d,-1),"Alt-E":v(d,1),"Alt-K":function(t){y(t,d,1)},"Ctrl-Alt-K":function(t){y(t,f,1)},"Ctrl-Alt-Backspace":function(t){y(t,f,-1)},"Ctrl-Alt-F":v(f,1),"Ctrl-Alt-B":v(f,-1),"Shift-Ctrl-Alt-2":function(t){var e=t.getCursor();t.setSelection(m(t,e,f,1),e)},"Ctrl-Alt-T":function(t){var e=f(t,t.getCursor(),-1),n=f(t,e,1),i=f(t,n,1),r=f(t,i,-1);t.replaceRange(t.getRange(r,i)+t.getRange(n,r)+t.getRange(e,n),e,i)},"Ctrl-Alt-U":g(E),"Alt-Space":function(t){for(var e=t.getCursor(),n=e.ch,i=e.ch,r=t.getLine(e.line);n&&/\s/.test(r.charAt(n-1));)--n;for(;i<r.length&&/\s/.test(r.charAt(i));)++i;t.replaceRange(" ",O(e.line,n),O(e.line,i))},"Ctrl-O":g(function(t){t.replaceSelection("\n","start")}),"Ctrl-T":g(function(t){t.execCommand("transposeChars")}),"Alt-C":g(function(t){L(t,function(t){var e=t.search(/\w/);return e==-1?t:t.slice(0,e)+t.charAt(e).toUpperCase()+t.slice(e+1).toLowerCase()})}),"Alt-U":g(function(t){L(t,function(t){return t.toUpperCase()})}),"Alt-L":g(function(t){L(t,function(t){return t.toLowerCase()})}),"Alt-;":"toggleComment","Ctrl-/":g("undo"),"Shift-Ctrl--":g("undo"),"Ctrl-Z":g("undo"),"Cmd-Z":g("undo"),"Shift-Alt-,":"goDocStart","Shift-Alt-.":"goDocEnd","Ctrl-S":"findNext","Ctrl-R":"findPrev","Ctrl-G":P,"Shift-Alt-5":"replace","Alt-/":"autocomplete",Enter:"newlineAndIndent","Ctrl-J":g(function(t){t.replaceSelection("\n","end")}),Tab:"indentAuto","Alt-G G":function(t){var e=p(t,!0);return null!=e&&e>0?t.setCursor(e-1):void M(t,"Goto line",function(e){var n;e&&!isNaN(n=Number(e))&&n==(0|n)&&n>0&&t.setCursor(n-1)})},"Ctrl-X Tab":function(t){t.indentSelection(p(t,!0)||t.getOption("indentUnit"))},"Ctrl-X Ctrl-X":function(t){t.setSelection(t.getCursor("head"),t.getCursor("anchor"))},"Ctrl-X Ctrl-S":"save","Ctrl-X Ctrl-W":"save","Ctrl-X S":"saveAll","Ctrl-X F":"open","Ctrl-X U":g("undo"),"Ctrl-X K":"close","Ctrl-X Delete":function(t){a(t,t.getCursor(),d(t,t.getCursor(),1),!0)},"Ctrl-X H":"selectAll","Ctrl-Q Tab":g("insertTab"),"Ctrl-U":C}),V={"Ctrl-G":w},H=0;H<10;++H)N(String(H));N("-")}),define("editor",["cm/lib/codemirror","config","preferences","form","cm/mode/prolog/prolog-template-hint","modal","tabbed","prolog","storage","cm/mode/prolog/prolog","cm/mode/prolog/prolog_keys","cm/mode/prolog/prolog_query","cm/mode/prolog/prolog_server","cm/mode/markdown/markdown","cm/addon/edit/matchbrackets","cm/addon/comment/continuecomment","cm/addon/comment/comment","cm/addon/hint/show-hint","cm/addon/hint/anyword-hint","cm/addon/display/placeholder","cm/addon/runmode/runmode","cm/addon/search/search","cm/addon/search/searchcursor","cm/addon/search/jump-to-line","cm/addon/dialog/dialog","cm/addon/hover/text-hover","cm/addon/hover/prolog-hover","cm/addon/hint/templates-hint","cm/addon/hint/show-context-info","jquery","laconic","cm/keymap/emacs"],function(t,e,n,i,r,o,a,s){function l(t,e){var n=[];e=e||"",n.push("<style>\n");for(var i in t)if(t.hasOwnProperty(i)){var r=t[i];n.push(e,i,"{");for(var o in r)r.hasOwnProperty(o)&&n.push(o,":",r[o],";");n.push("}\n")}n.push("</style>\n"),$("body").append(n.join(""))}!function(i){var l,c="prologEditor",u={prolog:{mode:"prolog",role:"source",placeholder:"Your Prolog rules and facts go here ...",lineNumbers:!0,autoCurrent:!0,save:!1,theme:"prolog",matchBrackets:!0,textHover:!0,prologKeys:!0,extraKeys:{"Ctrl-Space":"autocomplete","Alt-/":"autocomplete"},hintOptions:{hint:r.getHints,completeSingle:!1}},markdown:{mode:"markdown",placeholder:"Your markdown block goes here ...",lineWrapping:!0,save:!1}},h={query:{mode:"prolog",role:"query",placeholder:"Your query goes here ...",lineNumbers:!1,lineWrapping:!0,save:!1}},d={_init:function(r){return this.each(function(){function o(t){var e=p.long_click,n=t.clientX-e.clientX,i=t.clientY-e.clientY;Math.sqrt(n*n+i*i)>5&&a()}function a(){d.off("mousemove",o);var t=p.long_click;t.timeout&&(clearTimeout(t.timeout),t.target=void 0,t.timeout=void 0)}function s(t){var e=i(l).data(t);e&&(f[t]=e)}var l,d=i(this),f={},p={};r=r||{},r.mode=r.mode||"prolog";var g=i.extend({},u[r.mode]);r.role&&h[r.role]&&(g=i.extend(g,h[r.role])),g=i.extend(g,r),n.getVal("emacs-keybinding")&&(g.keyMap="emacs"),"prolog"==g.mode&&(p.role=g.role,g.getSource&&(p.getSource=g.getSource),e.http.locations.cm_highlight&&(g.prologHighlightServer={url:e.http.locations.cm_highlight,role:g.role,enabled:n.getVal("semantic-highlighting")},g.sourceID&&(g.prologHighlightServer.sourceID=g.sourceID),g.extraKeys["Ctrl-R"]="refreshHighlight"),"source"==g.role&&(g.continueComments="Enter",g.gutters=["Prolog-breakpoints"]),p.long_click={},d.on("mousedown",".CodeMirror-code",function(t){var e=p.long_click;e.clientX=t.clientX,e.clientY=t.clientY,d.on("mousemove",o),p.long_click.timeout=setTimeout(function(){a(),d.prologEditor("contextAction")},500)}),d.on("mouseup",function(t){a()})),(l=d.children("textarea")[0])?(s("file"),s("url"),s("title"),s("meta"),s("st_type"),s("chats"),p.cm=t.fromTextArea(l,g)):(g.value||(g.value=d.text()),p.cm=t(d[0],g)),d.data(c,p),d.prologEditor("loadMode",g.mode),d.addClass("swish-event-receiver"),d.addClass("prolog-editor"),d.on("preference",function(t,e){d.prologEditor("preference",e)}),d.on("print",function(){"query"!=p.role&&d.prologEditor("print")}),d.on("clearMessages",function(t){d.prologEditor("clearMessages")}),d.on("edit-command",function(t,e){d.prologEditor("execCommand",e)}),p.cm.on("blur",function(t){d.prologEditor("execCommand","prepare")}),g.save&&(f.typeName=g.typeName||"program",d.prologEditor("setupStorage",f)),"prolog"==g.mode&&"source"==p.role&&(d.on("activate-tab",function(t){g.autoCurrent&&d.prologEditor("makeCurrent"),p.cm.refresh()}),d.on("source-error",function(t,e){d.prologEditor("highlightError",e)}),d.on("pengine-died",function(t,e){if(p.pengines){var n=p.pengines.indexOf(e);n>=0&&p.pengines.splice(n,1)}p.traceMark&&p.traceMark.pengine==e&&(p.traceMark.clear(),p.traceMark=null)}),d.on("addExample",function(t,e){d.prologEditor("addExample",e)}),p.cm.on("gutterClick",function(t,e){function n(){return i('<span class="breakpoint-marker">&#9679;</span>')[0]}var r=t.lineInfo(e);r.gutterMarkers?t.setGutterMarker(e,"Prolog-breakpoints",null):t.setGutterMarker(e,"Prolog-breakpoints",n())})),p.cm.on("change",function(t,e){var n;if("setValue"==e.origin)n=!0;else{var i=d.data("storage"),r=i?i.cleanGeneration:p.cleanGeneration;n=p.cm.isClean(r)}d.prologEditor("markClean",n)})})},getOption:function(t){return this.data(c)[t]},setKeybinding:function(t){t=t||"default",this.data(c).cm.options.keyMap=t},loadMode:function(e){var n=this.data(c);return t.modes[e]?e!=n.mode&&n.cm.setOption("mode",e):require(["cm/mode/"+e+"/"+e],function(){n.cm.setOption("mode",e)}),this},isPengineSource:function(){var t=i(this).data(c);if(t&&"source"==t.role){var e=i(this).data("storage");if(e&&e.meta&&(e.meta.loaded||e.meta.module))return!1}return this},getBreakpoints:function(t){var e=[];return this.each(function(){for(var n=i(this).data(c),r=[],o=0,a=n.cm,s=a.firstLine(),l=a.lastLine();s<l;s++){var u=a.lineInfo(s);u.gutterMarkers&&r.push(o+s+1)}if(r.length>0){var h;if(n.pengines&&n.pengines.indexOf(t)>=0)h="pengine://"+t+"/src";else{var d=i(this).data("storage");d&&(h="swish://"+d.file)}h&&e.push({file:h,breakpoints:r})}}),e},getSource:function(t,e){var n=[];return this.each(function(){if(i(this).prologEditor("isPengineSource")){var r=i(this).data(c);if(r&&(!t||t==r.role)){var o;o="function"!=typeof r.getSource||e?r.cm.getValue():r.getSource(),n.push(o)}}}),n.join("\n\n")},getSourceEx:function(){var t={value:this.data(c).cm.getValue()
+},e=this.prologEditor("getBreakpoints");return e.length>0&&(t.breakpoints=e),t},docid:function(){var t;return this.hasClass("storage")?this.storage("docid"):(t=this.closest(".storage"))&&t.length>0&&(stdoc=t.storage("docid"),stdoc)?stdoc+"#"+this.closest(".nb-cell").attr("name"):void 0},getSourceID:function(){var t=[];return this.each(function(){var e=i(this).data(c);e&&e.cm&&e.cm.state.prologHighlightServer?t.push(e.cm.state.prologHighlightServer.uuid):t.push(null)}),t},setSource:function(t,e){if("string"==typeof t&&(t={data:t}),this.data("storage")&&1!=e)this.storage("setSource",t);else{var n=this.data(c);n.cm.setValue(t.data),(t.line||t.prompt)&&(n.cm.refresh(),t.line?this.prologEditor("gotoLine",t.line,t):this.prologEditor("showTracePort",t.prompt)),"source"==n.role&&i(".swish-event-receiver").trigger("program-loaded",this)}return this},makeCurrent:function(){return i(".swish-event-receiver").trigger("current-program",this),this},markClean:function(t){var e=this.data(c);e.clean_signalled!=t&&(e.clean_signalled=t,this.trigger("data-is-clean",t))},setIsClean:function(){return this.each(function(){var t=i(this),e=t.data(c);e.cleanGeneration=e.cm.changeGeneration()})},pengine:function(t){var e=this.data(c);if(e){if(t.add)return e.pengines=e.pengines||[],e.pengines.indexOf(t.add)<0&&e.pengines.push(t.add),this;if(t.has)return e.pengines&&e.pengines.indexOf(t.has)>=0}},print:function(n){function r(t){var e=i.el.iframe({src:"about:blank"});i("body").append(e),i("body",e.contentWindow.document).append(t),e.contentWindow.print()}var a=i.el.pre({class:"cm-s-prolog"});return n||(n=this.prologEditor("getSource")),t.runMode(n,"prolog",a),i.ajax({url:e.http.locations.swish+"js/codemirror/theme/prolog.css",dataType:"text",success:function(t){r(i.el.div(i.el.style(t),a))},error:function(t){o.ajaxError(t)}}),this},preference:function(t){var e=this.data(c);return"semantic-highlighting"==t.name&&e.cm.setOption("prologHighlightServer",{enabled:t.value}),"emacs-keybinding"==t.name&&(1==t.value?e.cm.setOption("keyMap","emacs"):e.cm.setOption("keyMap","default")),this},highlightError:function(t){if(t.location.file&&(1==t.location.file||this.prologEditor("isMyFile",t.location.file))){var e,n=this.data(c);t.location.ch&&(left=n.cm.charCoords({line:t.location.line-1,ch:t.location.ch-1},"local").left,e=i.el.div({class:"source-msg-charmark"},i.el.span({class:"glyphicon glyphicon-chevron-up"})),i(e).css("padding-left",left+"px"));var r=i.el.div({class:"source-msg error error-context",title:"Error message.  Click to remove"},e,i(t.data)[0],i.el.span({class:"glyphicon glyphicon-remove-circle"})),o=n.cm.addLineWidget(t.location.line-1,r);t.error_context&&i(r).data("error_context",t.error_context),i(r).on("click",function(e){t.error_handler&&0==t.error_handler(e)||o.clear()}),i(r).data("cm-widget",o)}return this},refreshHighlight:function(){var t=this.data(c);return t.cm.serverAssistedHighlight(!0),this},refresh:function(){var t=this.data(c);return t&&t.cm.refresh(),this},clearMessages:function(){return this.find(".source-msg").each(function(){i(this).data("cm-widget").clear()}),this.prologEditor("showTracePort",null),this},execCommand:function(t){if("prepare"==t)l=this[0];else if(l==this[0]){elem=i(l);var e=elem.data(c);e.cm.execCommand(t),elem.find(".Codemirror-dialog input").focus()}return this},isMyFile:function(t){var e="swish://";if(t.startsWith("pengine://")){var n=this.data(c);if(n.pengines&&(id=t.split("/")[2])&&n.pengines.indexOf(id)>=0)return!0}if(t.startsWith(e)){var i=this.data("storage");if(i&&t.slice(e.length)==i.file)return!0}return!1},showTracePort:function(t){if(0==this.length)return this;var e=this.data(c);if(e.traceMark&&(e.traceMark.clear(),e.traceMark=null),!(t&&t.source&&t.source.file))return this;var n=t.source.file;if(this.prologEditor("isMyFile",n)){if(t.source.from&&t.source.to){var i=e.cm.charOffsetToPos(t.source.from),r=e.cm.charOffsetToPos(t.source.to);this.is(":visible")||this.storage("expose","trace"),i&&r&&(e.traceMark=e.cm.markText(i,r,{className:"trace "+t.port}),e.traceMark.pengine=t.pengine,e.cm.scrollIntoView(i,50))}return this}},getSelection:function(){var t=[];return this.each(function(){function e(t,e){return t.line<e.line?-1:t.line>e.line?1:t.ch<e.ch?-1:t.ch>e.ch?1:0}function n(t){return{line:t.line,ch:0}}function r(t){return{line:t.line,ch:s.cm.getLine(t.line).length}}function o(t){return{line:t.line,ch:t.ch}}var a=i(this),s=a.data(c);if(1==s.cm.somethingSelected()){var l=s.cm.listSelections(),u={selections:[]},h=a.closest(".nb-cell").attr("name");h&&(u.cell=h);for(var d=0;d<l.length;d++){var f=l[d],p={};switch(e(f.anchor,f.head)){case-1:p.from=o(f.anchor),p.to=o(f.head);break;case 1:p.to=o(f.anchor),p.from=o(f.head);break;case 0:continue}p.string=s.cm.getRange(p.from,p.to),p.context=s.cm.getRange(n(p.from),r(p.to)),u.selections.push(p)}t.push(u)}}),t.length>0?t:null},restoreSelection:function(t){function e(t,e){function n(t){function e(t,e){for(var n=e.split("\n"),i=0;i<n.length;i++)if(r.getLine(t+i)!=n[i])return!1;return!0}function n(t,e){for(var n=e.split("\n"),i=0;i<n.length;i++){var o,a=r.getLine(t),s=n[i];if(0==i){if(i==n.length-1)return a.indexOf(s);if(o=a.indexOf(s),!(o>=0&&s.length+o==a.length))return-1}else if(i==n.length-1){if(0!=a.indexOf(s))return-1}else if(r.getLine(t+i)!=n[i])return-1}return o}function i(t,e,n){return n=n||0,{line:t.line+e,ch:t.ch+n}}if(r.getRange(t.from,t.to)==t.string)return{anchor:t.from,head:t.to};for(var o=r.firstLine(),a=r.lastLine(),s=0,l=1;t.from.line+s>=o&&t.to.line+s<=a;){var c;if(e(t.from.line+s,t.context))return{anchor:i(t.from,s),head:i(t.to,s),offset:s};if((c=n(t.from.line+s,t.string))>=0){var u=c-t.from.ch,h=t.to.line!=t.from.line?0:u;return{anchor:i(t.from,s,u),head:i(t.to,s,h),offset:s}}l++,s=Math.floor(l/2),l%2==1&&(s=-s)}}for(var i=t.data(c),r=i.cm,a=[],s="",l=0;l<e.length;l++){var u=n(e[l]);u&&(a.push(u),u.offset&&(""!=s&&(s+=";"),s+=u.offset))}if(a.length>0&&r.setSelections(a,0),""!=s||a.length<e.length){var h;h=a.length==e.length?"Found selections at offset "+s:""==s?"Could not restore all selections":"Only found some selections at offsets "+s,o.feedback({html:h,owner:t})}}function n(t){for(var e=0;e<r.length;e++)if(i(r[e]).closest(".nb-cell").attr("name")==t)return i(r[e])}if(t[0].cell)for(var r=this,a=0;a<t.length;a++){var s=t[a],l=n(s.cell);l&&e(l,s.selections)}else e(this,t);return this},getExamples:function(t,e){var n,r=t?t:this.prologEditor("getSource"),o=[];if(""==i.trim(r))return null;if(n=0==e?[t]:r.match(/\/\*\* *<?examples>?[\s\S]*?\*\//gim))for(var a=0;a<n.length;a++){var s=n[a].match(/^ *\?-[\s\S]*?[^-#$&*+.\/:<=>?@\\^~]\.\s/gm);if(s)for(var l=0;l<s.length;l++){var c=s[l].replace(/^ *\?-\s*/,"").replace(/\s*$/,"");o.push(c)}}return o},addExample:function(t){var e=this.data(c).cm,n=this.prologEditor("getSource"),i=this.prologEditor("search",/\/\*\* *<?examples>?/gim,{dir:-1,max:1}),r=this.prologEditor("search",/\*\//,{start:i.line,max:1});if(1==i.length){var r=this.prologEditor("search",/\*\//,{start:i[0].line,max:1}),a=this.prologEditor("getExamples",n);if(a&&a.indexOf(t)!=-1)return o.alert("Query is already in examples"),this;if(1!=r.length)return o.alert("/** <examples> block is not terminated with */"),this;t=t.split("\n").join("\n   "),e.setSelection({line:r[0].line-1,ch:0}),e.replaceSelection("?- "+t+"\n")}else e.setSelection({line:e.lastLine(),ch:0}),e.replaceSelection("/** <examples>\n?- "+t+"\n*/\n");return this},search:function(t,e){var n=this.data(c).cm,i=e.dir||1,r=void 0==e.start?n.firstLine():e.start,o=void 0==e.end?n.lastLine():e.end,a=[];if(i==-1&&o>r||1==i&&r>o){var s=r;r=o,o=s}if(i>0&&r>o||i<0&&r<o)return a;o+=i;for(var l=r;l!=o;l+=i){var u=n.getLine(l);if(u.search(t)>=0&&(a.push({line:l+1,text:u}),e.max&&e.max===a.length))return a}return a},gotoLine:function(t,e){function n(t){if(void 0!==t._searchMarkers){for(var e=0;e<t._searchMarkers.length;e++)t._searchMarkers[e].clear();t.off("cursorActivity",n)}t._searchMarkers=[]}function i(t,e){for(var n;n=r.exec(a.getLine(t));)a._searchMarkers.push(a.markText({line:t,ch:n.index},{line:t,ch:n.index+n[0].length},{className:e,clearOnEnter:!0,clearWhenEmpty:!0,title:"Search match"}))}var r,o=this.data(c),a=o.cm,s=0;n(a),e=e||{},r=e.regex,t-=1,r&&(s=a.getLine(t).search(r),s<0&&(s=0)),a.setCursor({line:t,ch:s});var l=a.getScrollInfo().clientHeight,u=a.charCoords({line:t,ch:0},"local");if(a.scrollTo(null,(u.top+u.bottom-l)/2),r){if(i(t,"CodeMirror-search-match"),e.showAllMatches)for(var h=a.getViewport(),d=h.from;d<h.to;d++)d!=t&&i(d,"CodeMirror-search-alt-match");a._searchMarkers.length>0&&a.on("cursorActivity",n)}else a._searchMarkers.push(a.markText({line:t,ch:0},{line:t,ch:a.getLine(t).length},{className:"CodeMirror-search-match",clearOnEnter:!0,clearWhenEmpty:!0,title:"Target line"}));return this},changeGen:function(){return this.data(c).cm.changeGeneration()},isClean:function(t){return this.data(c).cm.isClean(t)},setupStorage:function(t){var e=this.data(c),n=this;return t.setValue=function(t){n.prologEditor("setSource",t,!0)},t.getValue=function(){return e.cm.getValue()},t.changeGen=function(){return e.cm.changeGeneration()},t.isClean=function(t){return e.cm.isClean(t)},t.markClean=function(t){n.prologEditor("markClean",t)},t.cleanGeneration=e.cm.changeGeneration(),t.cleanData=e.cm.getValue(),t.cleanCheckpoint="load",this.storage(t),this},contextAction:function(){var t=this,e=this.data(c),n=e.cm.getCursor(),r=e.cm.getTokenAt(n,!0),a=e.cm.getEnrichedToken(r),s=e.cm.getTokenReferences(a);if(s&&s.length>0){for(var l=i.el.ul(),u=i.el.div({class:"goto-source"},i.el.div("Go to"),l),h=i.el.div({class:"edit-modal"},i.el.div({class:"mask"}),u),d=0;d<s.length;d++){var f=s[d];i(l).append(i.el.li(i.el.a({"data-locindex":d},f.title)))}var p=e.cm.cursorCoords(!0);i(u).css({top:p.bottom,left:p.left}),i("body").append(h),i(h).on("click",function(n){var r=i(n.target).data("locindex");if(i(h).remove(),void 0!==r){var a=s[r];if(a.file)t.closest(".swish").swish("playFile",a);else{var l;"query"==e.role?(l=t.closest(".prolog-query-editor").queryEditor("getProgramEditor"),l[0]||o.alert("No related program editor")):l=t,l&&l[0]&&l.prologEditor("gotoLine",a.line,a).focus()}}}),i(h).show()}return this},variables:function(e,n){function r(t){i(o).find(t).each(function(){var t=i(this).text();a.indexOf(t)<0&&a.push(t)})}var o=i.el.span({class:"query cm-s-prolog"}),a=[];return t.runMode(e,"prolog",o),r("span.cm-var"),n&&r("span.cm-var-2"),a},wrapSolution:function(t){function e(t,e){return o.prologEditor("setSource",t+"("+r+")"+e+".").focus(),o}function n(t){return o.prologEditor("setSource",t+r+".").focus(),o}function i(t){for(var e=[],n=0;n<a.length;n++)e.push("asc("+a[n]+")");return e.join(",")}var r=s.trimFullStop(this.prologEditor("getSource","query")),o=this,a=this.prologEditor("variables",r);switch(t){case"Aggregate (count all)":return e("aggregate_all(count, ",", Count)");case"Projection":return n("projection(["+a.join(",")+"]),\n");case"Order by":return e("order_by(["+i(a)+"], ",")");case"Distinct":return e("distinct(["+a.join(",")+"], ",")");case"Limit":return e("limit(10, ",")");case"Time":return e("time(",")");case"Debug (trace)":return e("trace, ","");default:alert('Unknown wrapper: "'+t+'"')}}};if(a.tabTypes.program={dataType:"pl",typeName:"program",label:"Program",contentType:"text/x-prolog",order:100,create:function(t,e){i(t).addClass("prolog-editor").prologEditor(i.extend({save:!0},e)).prologEditor("makeCurrent")}},e.swish.tab_types)for(var f={save:!0,lineNumbers:!0},p=0;p<e.swish.tab_types.length;p++){var g=e.swish.tab_types[p];if(g.editor){var m=i.extend({typeName:g.typeName},f,g.editor);g.create=function(t){i(t).addClass("prolog-editor").prologEditor(m)},a.tabTypes[g.typeName]=g}}i.fn.prologEditor=function(t){return d[t]?d[t].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof t&&t?void i.error("Method "+t+" does not exist on jQuery."+c):d._init.apply(this,arguments)}}(jQuery),t.prototype.charOffsetToPos=function(t){for(var e=this.firstLine(),n=this.lastLine(),i=0;e<n;e++){var r=this.getLine(e);if(i<=t&&i+r.length>=t)return{line:e,ch:t-i};i+=r.length+1}},t.keyMap.emacs.Enter="newlineAndIndent",e.swish.cm_style&&l(e.swish.cm_style,".cm-s-prolog span.cm-"),e.swish.cm_hover_style&&l(e.swish.cm_hover_style,".CodeMirror-hover-tooltip ")}),define("query",["jquery","config","preferences","cm/lib/codemirror","modal","laconic","editor"],function(t,e,n,i,r){!function(t){function i(e){return t(e).closest(".prolog-query-editor")}function o(e,n,r){var o=t.el.div({class:"btn-group dropup"},t.el.button({class:"btn btn-default btn-xs dropdown-toggle "+e,"data-toggle":"dropdown"},n,t.el.span({class:"caret"})),t.el.ul({class:"dropdown-menu "+e}));return t(o).on("click","a",function(){var e=t(this).closest("li");e.hasClass("add-example")?i(this).queryEditor("addExample"):i(this).queryEditor("setQuery",t(this).text())}),o}function a(e){function n(e){var n=e.examples();t.isArray(n)&&i(r).queryEditor("setExamples",n,!0)}var r=o("examples","Examples",e),a=t(r).find("ul");if("function"==typeof e.examples){var s=t.extend({},e);t(r).mousedown(function(t){1==t.which&&n(s)})}else if(e.examples)for(var l=e.examples,c=0;c<l.length;c++)a.append(t.el.li(t.el.a(l[c])));return r}function s(t){return o("history","History",t)}function l(e){for(var n,r="aggregate",o=e.aggregates||["Aggregate (count all)","--","Projection","Order by","Distinct","Limit","--","Time","Debug (trace)"],a=t.el.div({class:"btn-group dropup"},t.el.button({class:"btn btn-default btn-xs dropdown-toggle "+r,"data-toggle":"dropdown"},"Solutions",t.el.span({class:"caret"})),n=t.el.ul({class:"dropdown-menu "+r})),s=0;s<o.length;s++){var l=o[s];"--"==l?t(n).append(t.el.li({class:"divider"})):t(n).append(t.el.li(t.el.a(l)))}return t(a).on("click","a",function(){i(this).find(".query").prologEditor("wrapSolution",t(this).text())}),a}function c(e){var n=t.el.button({class:"run-btn-query",class:"btn btn-default btn-primary btn-xs"},"Run!");return t(n).on("click",function(){i(this).queryEditor("run",void 0,u(this))}),n}function u(e){return t(e).parent().find("input").prop("checked")}function h(i){var r=n.getVal("tabled_results"),o={type:"checkbox",name:"table"};void 0===r&&(r=e.swish.tabled_results),r&&(o.checked="checked");var a=t.el.input(o),s=t.el.span({class:"run-chk-table"},a," table results");return t(a).on("change",function(e){n.setVal("tabled_results",t(e.target).prop("checked"))}),s}var d="queryEditor",f={maxHistoryLength:50},p={_init:function(e){return this.each(function(){function n(){return t(u).find("input").prop("checked")}var i=t(this),r=t.extend({},f,e),o=t.el.div({class:"query"}),u=h(r);i.addClass("prolog-query-editor swish-event-receiver reactive-size"),i.append(o,t.el.div({class:"prolog-prompt"},"?-"),t.el.div({class:"query-buttons"},t.el.span({class:"buttons-left"},a(r),s(r),l(r)),t.el.span({class:"buttons-right"},u,c(r)))),t(o).append(i.children("textarea")).prologEditor({role:"query",sourceID:function(){return r.sourceID()},prologQuery:function(t){i.queryEditor("run",t,n())}}),i.data(d,r),t(o).prologEditor("getSource","query")||("object"==typeof r.examples?r.examples[0]&&t(o).prologEditor("setSource",r.examples[0]):i[d]("setProgramEditor",t(r.editor),!0)),i.on("current-program",function(e,n){i[d]("setProgramEditor",t(n))}),i.on("program-loaded",function(e,n){if(t(r.editor).data("prologEditor")==t(n).data("prologEditor")){var o=r.examples();i.queryEditor("setQuery",o&&o[0]?o[0]:"")}})})},setProgramEditor:function(e,n){var i=this.data(d);if(i.editor==e[0]&&!n)return this;if(i.editor=e[0],i.editor){i.examples=function(){var n=e.prologEditor("getExamples")||[],i=e.parents(".swish").swish("examples",!0)||[];return t.isArray(i)&&n.concat(i),n},e.prologEditor("isPengineSource")?i.source=function(){var n=e.prologEditor("getSource","source"),i=t(".background.prolog.source").text();return i&&(n+="\n%@background@\n"+i),n}:i.source="",i.sourceID=function(){return e.prologEditor("getSourceID")};var r=i.examples();r&&r[0]&&this.queryEditor("isClean")?this.queryEditor("setQuery",r[0]):e.prologEditor("refreshHighlight")}else i.examples=""},getProgramEditor:function(){var e=this.data(d);return e.editor?t(e.editor):t()},setExamples:function(e,n){function i(t){var e;if((e=r.data("examples"))&&e.length==t.length){for(var n=0;n<e.length;n++)if(e[n]!=t[n])return!1;return!0}return!1}var r=this.find("ul.examples");if(e||(e=[]),void 0===n&&(n=!0),n&&i(e))return this;n===!0&&r.html(""),r.find("li.add-example, li.divider").remove();for(var o=0;o<e.length;o++)r.append(t.el.li(t.el.a(e[o])));return r.data("examples",e.slice(0)),r.append(t.el.li({class:"divider"})),r.append(t.el.li({class:"add-example"},t.el.a("Add current query to examples"))),this},addExample:function(){var e=this.find(".query").prologEditor("getSource");return""!=e.trim()?t(".swish-event-receiver:visible").trigger("addExample",this.find(".query").prologEditor("getSource")):r.alert("The query window is empty"),this},addHistory:function(e){function n(){return i.children().filter(function(){return t(this).text()==e})}var i=this.find("ul.history"),r=this.data("queryEditor");if(e){var o;(o=n())&&o.remove(),i.children().length>=r.maxHistoryLength&&i.children().first().remove(),i.append(t.el.li(t.el.a(e)))}return this},setQuery:function(t){var e=this.data(d);return e.cleanGen=this.find(".query").prologEditor("setSource",t).focus().prologEditor("changeGen"),this},isClean:function(){var t=this.data(d);return!this.queryEditor("getQuery")||t.cleanGen&&this.find(".query").prologEditor("isClean",t.cleanGen)},getQuery:function(){return this.find(".query").prologEditor("getSource","query")},run:function(e,n){var i=this.data("queryEditor");if(void 0===e&&(e=this.queryEditor("getQuery")),e=t.trim(e),!e)return t(".swish-event-receiver").trigger("help",{file:"query.html"}),this;t(".swish-event-receiver").trigger("clearMessages");var r={query:e,editor:i.editor,query_editor:this.find(".query")};return"function"==typeof i.source?r.source=i.source(e):"string"==typeof i.source&&(r.source=i.source),n&&(r.tabled=!0),this.queryEditor("addHistory",e),i.runner.prologRunners("run",r),this}};t.fn.queryEditor=function(e){return p[e]?p[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery."+d):p._init.apply(this,arguments)}}(jQuery)}),define("term",["jquery"],function(){function t(){$(this).next().toggleClass("fold"),$(this).remove()}$(document).on("click",".pl-functor, .pl-infix",function(){var e=$(this).parent();$(e).toggleClass("fold"),$(e).before('<span class="pl-ellipsis">...</span>').prev().click(t)})}),define("login",["jquery","modal","config","form","laconic"],function(t,e,n,i){var r=["display_name","email","avatar"];!function(t){function o(t,e,n){t||(t=".force_logout");try{var i=navigator.userAgent.toLowerCase();if(i.indexOf("msie")!=-1)document.execCommand("ClearAuthenticationCache");else if(i.indexOf("webkit")!=-1&&"basic"==e){var r=a(n);r&&(r.open("GET",t,!0),r.setRequestHeader("Authorization","Basic logout"),r.send())}else{var r=a(n);r&&(r.open("GET",t,!0,"logout","logout"),r.send(""),r.abort())}}catch(t){return}}function a(t){var e;try{window.XMLHttpRequest?e=new XMLHttpRequest:window.ActiveXObject&&(e=new ActiveXObject("Microsoft.XMLHTTP")),t&&(e.addEventListener("load",t),e.addEventListener("error",t),e.addEventListener("abort",t))}catch(t){}return e}function s(t,e,n,i){var r=window.open(t,e,n),o=window.setInterval(function(){try{(null==r||r.closed)&&(window.clearInterval(o),i(r))}catch(t){}},1e3);return window.focus&&r.focus(),r}var l="login",c={_init:function(e){return this.each(function(){var e=t(this),n={};n.url=e.attr("href"),e.removeAttr("href"),e.on("click",function(t){e.hasClass("login")&&e.login("login",t)}),e.data(l,n),e.login("update","startup")})},update:function(e){var r=t(this);t.get(n.http.locations.user_info,{reason:e},function(e){if(e){n.swish.user=e,r.removeClass("login").addClass("logout");var o,a=r.find("span.logout span.value");o=e.avatar?t.el.img({class:"profile-picture",src:e.avatar}):t.el.span({class:"glyphicon glyphicon-user"}),o=t.el.span(o,t.el.b({class:"caret"})),a.html(""),a.append(i.widgets.dropdownButton(o,{divClass:"user-menu btn-transparent",ulClass:"pull-right",client:r,actions:{Logout:r.hasClass("no-logout")?void 0:function(){this.login("logout")},Profile:function(){this.login("profile")}}}))}else delete n.swish.user,r.removeClass("logout").addClass("login")},"json")},login:function(n){var i=t(this),r=this.data(l),o=t(n.target),a=r.url,c=o.closest("[data-server]").data("server"),u=o.closest("[data-frame]").data("frame")||"iframe";c&&(a+="?server="+encodeURIComponent(c)),"popup"==u?s(a,"_blank","location=true,status=true,height=400,width=800",function(){i.login("logged_in")}):e.show({title:"Login",body:function(){var e=t.el.button({name:"ok",class:"btn btn-primary login-cont","data-dismiss":"modal"},"Continue");this.append(t.el.iframe({class:"login",src:a}),e)},onclose:function(){i.login("logged_in")}})},logged_in:function(){this.login("update","login")},profile:function(){var i=t(this);e.server_form({title:"User profile",url:n.swish.user.swish_profile_url||n.http.locations.user_profile,onreply:function(){i.login("update","profile")}})},get_profile:function(e){function i(e,n){var i=t("#chat");if(1==i.length){var r=i.chat("self",[n]);r[n]&&(o[e]=r[n])}}var o={},a=n.swish.user||{};e=e||r;for(var s=0;s<e.length;s++){var l=e[s];a[l]?o[l]=a[l]:"display_name"==l?a.name?o.display_name=a.name:a.given_name&&a.family_name?o.display_name=a.given_name+" "+a.family_name:a.family_name?o.display_name=a.family_name:a.given_name?o.display_name=a.given_name:a.nick_name?o.display_name=a.nick_name:i("display_name","name"):"identity"==l?a.external_identity&&a.identity_provider&&(o.identity=a.identity_provider+":"+a.external_identity):"avatar"==l&&i("avatar","avatar")}return o},logout:function(){var i=n.swish.user,r=t(this);i&&(i.logout_url?t.ajax({url:i.logout_url,success:function(){r.login("update","logout_by_url")},error:function(t){e.ajaxError(t)}}):"basic"==i.auth_method||"digest"==i.auth_method?o(n.http.locations.http_logout,n.swish.user.auth_method,function(){r.login("update","logout_by_http")}):alert("Don't know how to logout"))}};t.fn.login=function(e){return c[e]?c[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery."+l):c._init.apply(this,arguments)}}(jQuery)}),!function(){function t(t){return t&&(t.ownerDocument||t.document||t).documentElement}function e(t){return t&&(t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView)}function n(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}function i(t){return null===t?NaN:+t}function r(t){return!isNaN(t)}function o(t){return{left:function(e,n,i,r){for(arguments.length<3&&(i=0),arguments.length<4&&(r=e.length);i<r;){var o=i+r>>>1;t(e[o],n)<0?i=o+1:r=o}return i},right:function(e,n,i,r){for(arguments.length<3&&(i=0),arguments.length<4&&(r=e.length);i<r;){var o=i+r>>>1;t(e[o],n)>0?r=o:i=o+1}return i}}}function a(t){return t.length}function s(t){for(var e=1;t*e%1;)e*=10;return e}function l(t,e){for(var n in e)Object.defineProperty(t.prototype,n,{value:e[n],enumerable:!1})}function c(){this._=Object.create(null)}function u(t){return(t+="")===xa||t[0]===ba?ba+t:t}function h(t){return(t+="")[0]===ba?t.slice(1):t}function d(t){return u(t)in this._}function f(t){return(t=u(t))in this._&&delete this._[t]}function p(){var t=[];for(var e in this._)t.push(h(e));return t}function g(){var t=0;for(var e in this._)++t;return t}function m(){for(var t in this._)return!1;return!0}function v(){this._=Object.create(null)}function y(t){return t}function x(t,e,n){return function(){var i=n.apply(e,arguments);return i===e?t:i}}function b(t,e){if(e in t)return e;e=e.charAt(0).toUpperCase()+e.slice(1);for(var n=0,i=_a.length;n<i;++n){var r=_a[n]+e;if(r in t)return r}}function _(){}function w(){}function S(t){function e(){for(var e,i=n,r=-1,o=i.length;++r<o;)(e=i[r].on)&&e.apply(this,arguments);return t}var n=[],i=new c;return e.on=function(e,r){var o,a=i.get(e);return arguments.length<2?a&&a.on:(a&&(a.on=null,n=n.slice(0,o=n.indexOf(a)).concat(n.slice(o+1)),i.remove(e)),r&&n.push(i.set(e,{on:r})),t)},e}function C(){la.event.preventDefault()}function T(){for(var t,e=la.event;t=e.sourceEvent;)e=t;return e}function k(t){for(var e=new w,n=0,i=arguments.length;++n<i;)e[arguments[n]]=S(e);return e.of=function(n,i){return function(r){try{var o=r.sourceEvent=la.event;r.target=t,la.event=r,e[r.type].apply(n,i)}finally{la.event=o}}},e}function A(t){return Sa(t,Aa),t}function M(t){return"function"==typeof t?t:function(){return Ca(t,this)}}function L(t){return"function"==typeof t?t:function(){return Ta(t,this)}}function E(t,e){function n(){this.removeAttribute(t)}function i(){this.removeAttributeNS(t.space,t.local)}function r(){this.setAttribute(t,e)}function o(){this.setAttributeNS(t.space,t.local,e)}function a(){var n=e.apply(this,arguments);null==n?this.removeAttribute(t):this.setAttribute(t,n)}function s(){var n=e.apply(this,arguments);null==n?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}return t=la.ns.qualify(t),null==e?t.local?i:n:"function"==typeof e?t.local?s:a:t.local?o:r}function P(t){return t.trim().replace(/\s+/g," ")}function N(t){return new RegExp("(?:^|\\s+)"+la.requote(t)+"(?:\\s+|$)","g")}function O(t){return(t+"").trim().split(/^|\s+/)}function R(t,e){function n(){for(var n=-1;++n<r;)t[n](this,e)}function i(){for(var n=-1,i=e.apply(this,arguments);++n<r;)t[n](this,i)}t=O(t).map(D);var r=t.length;return"function"==typeof e?i:n}function D(t){var e=N(t);return function(n,i){if(r=n.classList)return i?r.add(t):r.remove(t);var r=n.getAttribute("class")||"";i?(e.lastIndex=0,e.test(r)||n.setAttribute("class",P(r+" "+t))):n.setAttribute("class",P(r.replace(e," ")))}}function I(t,e,n){function i(){this.style.removeProperty(t)}function r(){this.style.setProperty(t,e,n)}function o(){var i=e.apply(this,arguments);null==i?this.style.removeProperty(t):this.style.setProperty(t,i,n)}return null==e?i:"function"==typeof e?o:r}function j(t,e){function n(){delete this[t]}function i(){this[t]=e}function r(){var n=e.apply(this,arguments);null==n?delete this[t]:this[t]=n}return null==e?n:"function"==typeof e?r:i}function V(t){function e(){var e=this.ownerDocument,n=this.namespaceURI;return n===Ma&&e.documentElement.namespaceURI===Ma?e.createElement(t):e.createElementNS(n,t)}function n(){return this.ownerDocument.createElementNS(t.space,t.local)}return"function"==typeof t?t:(t=la.ns.qualify(t)).local?n:e}function H(){var t=this.parentNode;t&&t.removeChild(this)}function F(t){return{__data__:t}}function z(t){return function(){return ka(this,t)}}function q(t){return arguments.length||(t=n),function(e,n){return e&&n?t(e.__data__,n.__data__):!e-!n}}function G(t,e){for(var n=0,i=t.length;n<i;n++)for(var r,o=t[n],a=0,s=o.length;a<s;a++)(r=o[a])&&e(r,a,n);return t}function B(t){return Sa(t,Ea),t}function $(t){var e,n;return function(i,r,o){var a,s=t[o].update,l=s.length;for(o!=n&&(n=o,e=0),r>=e&&(e=r+1);!(a=s[e])&&++e<l;);return a}}function W(t,e,n){function i(){var e=this[a];e&&(this.removeEventListener(t,e,e.$),delete this[a])}function r(){var r=l(e,ua(arguments));i.call(this),this.addEventListener(t,this[a]=r,r.$=n),r._=e}function o(){var e,n=new RegExp("^__on([^.]+)"+la.requote(t)+"$");for(var i in this)if(e=i.match(n)){var r=this[i];this.removeEventListener(e[1],r,r.$),delete this[i]}}var a="__on"+t,s=t.indexOf("."),l=U;s>0&&(t=t.slice(0,s));var c=Pa.get(t);return c&&(t=c,l=X),s?e?r:i:e?_:o}function U(t,e){return function(n){var i=la.event;la.event=n,e[0]=this.__data__;try{t.apply(this,e)}finally{la.event=i}}}function X(t,e){var n=U(t,e);return function(t){var e=this,i=t.relatedTarget;i&&(i===e||8&i.compareDocumentPosition(e))||n.call(e,t)}}function Y(n){var i=".dragsuppress-"+ ++Oa,r="click"+i,o=la.select(e(n)).on("touchmove"+i,C).on("dragstart"+i,C).on("selectstart"+i,C);if(null==Na&&(Na=!("onselectstart"in n)&&b(n.style,"userSelect")),Na){var a=t(n).style,s=a[Na];a[Na]="none"}return function(t){if(o.on(i,null),Na&&(a[Na]=s),t){var e=function(){o.on(r,null)};o.on(r,function(){C(),e()},!0),setTimeout(e,0)}}}function Q(t,n){n.changedTouches&&(n=n.changedTouches[0]);var i=t.ownerSVGElement||t;if(i.createSVGPoint){var r=i.createSVGPoint();if(Ra<0){var o=e(t);if(o.scrollX||o.scrollY){i=la.select("body").append("svg").style({position:"absolute",top:0,left:0,margin:0,padding:0,border:"none"},"important");var a=i[0][0].getScreenCTM();Ra=!(a.f||a.e),i.remove()}}return Ra?(r.x=n.pageX,r.y=n.pageY):(r.x=n.clientX,r.y=n.clientY),r=r.matrixTransform(t.getScreenCTM().inverse()),[r.x,r.y]}var s=t.getBoundingClientRect();return[n.clientX-s.left-t.clientLeft,n.clientY-s.top-t.clientTop]}function Z(){return la.event.changedTouches[0].identifier}function K(t){return t>0?1:t<0?-1:0}function J(t,e,n){return(e[0]-t[0])*(n[1]-t[1])-(e[1]-t[1])*(n[0]-t[0])}function tt(t){return t>1?0:t<-1?ja:Math.acos(t)}function et(t){return t>1?Fa:t<-1?-Fa:Math.asin(t)}function nt(t){return((t=Math.exp(t))-1/t)/2}function it(t){return((t=Math.exp(t))+1/t)/2}function rt(t){return((t=Math.exp(2*t))-1)/(t+1)}function ot(t){return(t=Math.sin(t/2))*t}function at(){}function st(t,e,n){return this instanceof st?(this.h=+t,this.s=+e,void(this.l=+n)):arguments.length<2?t instanceof st?new st(t.h,t.s,t.l):_t(""+t,wt,st):new st(t,e,n)}function lt(t,e,n){function i(t){return t>360?t-=360:t<0&&(t+=360),t<60?o+(a-o)*t/60:t<180?a:t<240?o+(a-o)*(240-t)/60:o}function r(t){return Math.round(255*i(t))}var o,a;return t=isNaN(t)?0:(t%=360)<0?t+360:t,e=isNaN(e)?0:e<0?0:e>1?1:e,n=n<0?0:n>1?1:n,a=n<=.5?n*(1+e):n+e-n*e,o=2*n-a,new vt(r(t+120),r(t),r(t-120))}function ct(t,e,n){return this instanceof ct?(this.h=+t,this.c=+e,void(this.l=+n)):arguments.length<2?t instanceof ct?new ct(t.h,t.c,t.l):t instanceof ht?ft(t.l,t.a,t.b):ft((t=St((t=la.rgb(t)).r,t.g,t.b)).l,t.a,t.b):new ct(t,e,n)}function ut(t,e,n){return isNaN(t)&&(t=0),isNaN(e)&&(e=0),new ht(n,Math.cos(t*=za)*e,Math.sin(t)*e)}function ht(t,e,n){return this instanceof ht?(this.l=+t,this.a=+e,void(this.b=+n)):arguments.length<2?t instanceof ht?new ht(t.l,t.a,t.b):t instanceof ct?ut(t.h,t.c,t.l):St((t=vt(t)).r,t.g,t.b):new ht(t,e,n)}function dt(t,e,n){var i=(t+16)/116,r=i+e/500,o=i-n/200;return r=pt(r)*Ka,i=pt(i)*Ja,o=pt(o)*ts,new vt(mt(3.2404542*r-1.5371385*i-.4985314*o),mt(-.969266*r+1.8760108*i+.041556*o),mt(.0556434*r-.2040259*i+1.0572252*o))}function ft(t,e,n){return t>0?new ct(Math.atan2(n,e)*qa,Math.sqrt(e*e+n*n),t):new ct(NaN,NaN,t)}function pt(t){return t>.206893034?t*t*t:(t-4/29)/7.787037}function gt(t){return t>.008856?Math.pow(t,1/3):7.787037*t+4/29}function mt(t){return Math.round(255*(t<=.00304?12.92*t:1.055*Math.pow(t,1/2.4)-.055))}function vt(t,e,n){return this instanceof vt?(this.r=~~t,this.g=~~e,void(this.b=~~n)):arguments.length<2?t instanceof vt?new vt(t.r,t.g,t.b):_t(""+t,vt,lt):new vt(t,e,n)}function yt(t){return new vt(t>>16,t>>8&255,255&t)}function xt(t){return yt(t)+""}function bt(t){return t<16?"0"+Math.max(0,t).toString(16):Math.min(255,t).toString(16)}function _t(t,e,n){var i,r,o,a=0,s=0,l=0;if(i=/([a-z]+)\((.*)\)/.exec(t=t.toLowerCase()))switch(r=i[2].split(","),i[1]){case"hsl":return n(parseFloat(r[0]),parseFloat(r[1])/100,parseFloat(r[2])/100);case"rgb":return e(Tt(r[0]),Tt(r[1]),Tt(r[2]))}return(o=is.get(t))?e(o.r,o.g,o.b):(null==t||"#"!==t.charAt(0)||isNaN(o=parseInt(t.slice(1),16))||(4===t.length?(a=(3840&o)>>4,a|=a>>4,s=240&o,s|=s>>4,l=15&o,l|=l<<4):7===t.length&&(a=(16711680&o)>>16,s=(65280&o)>>8,l=255&o)),e(a,s,l))}function wt(t,e,n){var i,r,o=Math.min(t/=255,e/=255,n/=255),a=Math.max(t,e,n),s=a-o,l=(a+o)/2;return s?(r=l<.5?s/(a+o):s/(2-a-o),i=t==a?(e-n)/s+(e<n?6:0):e==a?(n-t)/s+2:(t-e)/s+4,i*=60):(i=NaN,r=l>0&&l<1?0:i),new st(i,r,l)}function St(t,e,n){t=Ct(t),e=Ct(e),n=Ct(n);var i=gt((.4124564*t+.3575761*e+.1804375*n)/Ka),r=gt((.2126729*t+.7151522*e+.072175*n)/Ja),o=gt((.0193339*t+.119192*e+.9503041*n)/ts);
+return ht(116*r-16,500*(i-r),200*(r-o))}function Ct(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Tt(t){var e=parseFloat(t);return"%"===t.charAt(t.length-1)?Math.round(2.55*e):e}function kt(t){return"function"==typeof t?t:function(){return t}}function At(t){return function(e,n,i){return 2===arguments.length&&"function"==typeof n&&(i=n,n=null),Mt(e,n,t,i)}}function Mt(t,e,n,i){function r(){var t,e=l.status;if(!e&&Et(l)||e>=200&&e<300||304===e){try{t=n.call(o,l)}catch(t){return void a.error.call(o,t)}a.load.call(o,t)}else a.error.call(o,l)}var o={},a=la.dispatch("beforesend","progress","load","error"),s={},l=new XMLHttpRequest,c=null;return!this.XDomainRequest||"withCredentials"in l||!/^(http(s)?:)?\/\//.test(t)||(l=new XDomainRequest),"onload"in l?l.onload=l.onerror=r:l.onreadystatechange=function(){l.readyState>3&&r()},l.onprogress=function(t){var e=la.event;la.event=t;try{a.progress.call(o,l)}finally{la.event=e}},o.header=function(t,e){return t=(t+"").toLowerCase(),arguments.length<2?s[t]:(null==e?delete s[t]:s[t]=e+"",o)},o.mimeType=function(t){return arguments.length?(e=null==t?null:t+"",o):e},o.responseType=function(t){return arguments.length?(c=t,o):c},o.response=function(t){return n=t,o},["get","post"].forEach(function(t){o[t]=function(){return o.send.apply(o,[t].concat(ua(arguments)))}}),o.send=function(n,i,r){if(2===arguments.length&&"function"==typeof i&&(r=i,i=null),l.open(n,t,!0),null==e||"accept"in s||(s.accept=e+",*/*"),l.setRequestHeader)for(var u in s)l.setRequestHeader(u,s[u]);return null!=e&&l.overrideMimeType&&l.overrideMimeType(e),null!=c&&(l.responseType=c),null!=r&&o.on("error",r).on("load",function(t){r(null,t)}),a.beforesend.call(o,l),l.send(null==i?null:i),o},o.abort=function(){return l.abort(),o},la.rebind(o,a,"on"),null==i?o:o.get(Lt(i))}function Lt(t){return 1===t.length?function(e,n){t(null==e?n:null)}:t}function Et(t){var e=t.responseType;return e&&"text"!==e?t.response:t.responseText}function Pt(t,e,n){var i=arguments.length;i<2&&(e=0),i<3&&(n=Date.now());var r=n+e,o={c:t,t:r,n:null};return os?os.n=o:rs=o,os=o,as||(ss=clearTimeout(ss),as=1,ls(Nt)),o}function Nt(){var t=Ot(),e=Rt()-t;e>24?(isFinite(e)&&(clearTimeout(ss),ss=setTimeout(Nt,e)),as=0):(as=1,ls(Nt))}function Ot(){for(var t=Date.now(),e=rs;e;)t>=e.t&&e.c(t-e.t)&&(e.c=null),e=e.n;return t}function Rt(){for(var t,e=rs,n=1/0;e;)e.c?(e.t<n&&(n=e.t),e=(t=e).n):e=t?t.n=e.n:rs=e.n;return os=t,n}function Dt(t,e){return e-(t?Math.ceil(Math.log(t)/Math.LN10):1)}function It(t,e){var n=Math.pow(10,3*ya(8-e));return{scale:e>8?function(t){return t/n}:function(t){return t*n},symbol:t}}function jt(t){var e=t.decimal,n=t.thousands,i=t.grouping,r=t.currency,o=i&&n?function(t,e){for(var r=t.length,o=[],a=0,s=i[0],l=0;r>0&&s>0&&(l+s+1>e&&(s=Math.max(1,e-l)),o.push(t.substring(r-=s,r+s)),!((l+=s+1)>e));)s=i[a=(a+1)%i.length];return o.reverse().join(n)}:y;return function(t){var n=us.exec(t),i=n[1]||" ",a=n[2]||">",s=n[3]||"-",l=n[4]||"",c=n[5],u=+n[6],h=n[7],d=n[8],f=n[9],p=1,g="",m="",v=!1,y=!0;switch(d&&(d=+d.substring(1)),(c||"0"===i&&"="===a)&&(c=i="0",a="="),f){case"n":h=!0,f="g";break;case"%":p=100,m="%",f="f";break;case"p":p=100,m="%",f="r";break;case"b":case"o":case"x":case"X":"#"===l&&(g="0"+f.toLowerCase());case"c":y=!1;case"d":v=!0,d=0;break;case"s":p=-1,f="r"}"$"===l&&(g=r[0],m=r[1]),"r"!=f||d||(f="g"),null!=d&&("g"==f?d=Math.max(1,Math.min(21,d)):"e"!=f&&"f"!=f||(d=Math.max(0,Math.min(20,d)))),f=hs.get(f)||Vt;var x=c&&h;return function(t){var n=m;if(v&&t%1)return"";var r=t<0||0===t&&1/t<0?(t=-t,"-"):"-"===s?"":s;if(p<0){var l=la.formatPrefix(t,d);t=l.scale(t),n=l.symbol+m}else t*=p;t=f(t,d);var b,_,w=t.lastIndexOf(".");if(w<0){var S=y?t.lastIndexOf("e"):-1;S<0?(b=t,_=""):(b=t.substring(0,S),_=t.substring(S))}else b=t.substring(0,w),_=e+t.substring(w+1);!c&&h&&(b=o(b,1/0));var C=g.length+b.length+_.length+(x?0:r.length),T=C<u?new Array(C=u-C+1).join(i):"";return x&&(b=o(T+b,T.length?u-_.length:1/0)),r+=g,t=b+_,("<"===a?r+t+T:">"===a?T+r+t:"^"===a?T.substring(0,C>>=1)+r+t+T.substring(C):r+(x?t:T+t))+n}}}function Vt(t){return t+""}function Ht(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function Ft(t,e,n){function i(e){var n=t(e),i=o(n,1);return e-n<i-e?n:i}function r(n){return e(n=t(new fs(n-1)),1),n}function o(t,n){return e(t=new fs(+t),n),t}function a(t,i,o){var a=r(t),s=[];if(o>1)for(;a<i;)n(a)%o||s.push(new Date(+a)),e(a,1);else for(;a<i;)s.push(new Date(+a)),e(a,1);return s}function s(t,e,n){try{fs=Ht;var i=new Ht;return i._=t,a(i,e,n)}finally{fs=Date}}t.floor=t,t.round=i,t.ceil=r,t.offset=o,t.range=a;var l=t.utc=zt(t);return l.floor=l,l.round=zt(i),l.ceil=zt(r),l.offset=zt(o),l.range=s,t}function zt(t){return function(e,n){try{fs=Ht;var i=new Ht;return i._=e,t(i,n)._}finally{fs=Date}}}function qt(t){function e(t){function e(e){for(var n,r,o,a=[],s=-1,l=0;++s<i;)37===t.charCodeAt(s)&&(a.push(t.slice(l,s)),null!=(r=gs[n=t.charAt(++s)])&&(n=t.charAt(++s)),(o=M[n])&&(n=o(e,null==r?"e"===n?" ":"0":r)),a.push(n),l=s+1);return a.push(t.slice(l,s)),a.join("")}var i=t.length;return e.parse=function(e){var i={y:1900,m:0,d:1,H:0,M:0,S:0,L:0,Z:null},r=n(i,t,e,0);if(r!=e.length)return null;"p"in i&&(i.H=i.H%12+12*i.p);var o=null!=i.Z&&fs!==Ht,a=new(o?Ht:fs);return"j"in i?a.setFullYear(i.y,0,i.j):"W"in i||"U"in i?("w"in i||(i.w="W"in i?1:0),a.setFullYear(i.y,0,1),a.setFullYear(i.y,0,"W"in i?(i.w+6)%7+7*i.W-(a.getDay()+5)%7:i.w+7*i.U-(a.getDay()+6)%7)):a.setFullYear(i.y,i.m,i.d),a.setHours(i.H+(i.Z/100|0),i.M+i.Z%100,i.S,i.L),o?a._:a},e.toString=function(){return t},e}function n(t,e,n,i){for(var r,o,a,s=0,l=e.length,c=n.length;s<l;){if(i>=c)return-1;if(r=e.charCodeAt(s++),37===r){if(a=e.charAt(s++),o=L[a in gs?e.charAt(s++):a],!o||(i=o(t,n,i))<0)return-1}else if(r!=n.charCodeAt(i++))return-1}return i}function i(t,e,n){w.lastIndex=0;var i=w.exec(e.slice(n));return i?(t.w=S.get(i[0].toLowerCase()),n+i[0].length):-1}function r(t,e,n){b.lastIndex=0;var i=b.exec(e.slice(n));return i?(t.w=_.get(i[0].toLowerCase()),n+i[0].length):-1}function o(t,e,n){k.lastIndex=0;var i=k.exec(e.slice(n));return i?(t.m=A.get(i[0].toLowerCase()),n+i[0].length):-1}function a(t,e,n){C.lastIndex=0;var i=C.exec(e.slice(n));return i?(t.m=T.get(i[0].toLowerCase()),n+i[0].length):-1}function s(t,e,i){return n(t,M.c.toString(),e,i)}function l(t,e,i){return n(t,M.x.toString(),e,i)}function c(t,e,i){return n(t,M.X.toString(),e,i)}function u(t,e,n){var i=x.get(e.slice(n,n+=2).toLowerCase());return null==i?-1:(t.p=i,n)}var h=t.dateTime,d=t.date,f=t.time,p=t.periods,g=t.days,m=t.shortDays,v=t.months,y=t.shortMonths;e.utc=function(t){function n(t){try{fs=Ht;var e=new fs;return e._=t,i(e)}finally{fs=Date}}var i=e(t);return n.parse=function(t){try{fs=Ht;var e=i.parse(t);return e&&e._}finally{fs=Date}},n.toString=i.toString,n},e.multi=e.utc.multi=le;var x=la.map(),b=Bt(g),_=$t(g),w=Bt(m),S=$t(m),C=Bt(v),T=$t(v),k=Bt(y),A=$t(y);p.forEach(function(t,e){x.set(t.toLowerCase(),e)});var M={a:function(t){return m[t.getDay()]},A:function(t){return g[t.getDay()]},b:function(t){return y[t.getMonth()]},B:function(t){return v[t.getMonth()]},c:e(h),d:function(t,e){return Gt(t.getDate(),e,2)},e:function(t,e){return Gt(t.getDate(),e,2)},H:function(t,e){return Gt(t.getHours(),e,2)},I:function(t,e){return Gt(t.getHours()%12||12,e,2)},j:function(t,e){return Gt(1+ds.dayOfYear(t),e,3)},L:function(t,e){return Gt(t.getMilliseconds(),e,3)},m:function(t,e){return Gt(t.getMonth()+1,e,2)},M:function(t,e){return Gt(t.getMinutes(),e,2)},p:function(t){return p[+(t.getHours()>=12)]},S:function(t,e){return Gt(t.getSeconds(),e,2)},U:function(t,e){return Gt(ds.sundayOfYear(t),e,2)},w:function(t){return t.getDay()},W:function(t,e){return Gt(ds.mondayOfYear(t),e,2)},x:e(d),X:e(f),y:function(t,e){return Gt(t.getFullYear()%100,e,2)},Y:function(t,e){return Gt(t.getFullYear()%1e4,e,4)},Z:ae,"%":function(){return"%"}},L={a:i,A:r,b:o,B:a,c:s,d:te,e:te,H:ne,I:ne,j:ee,L:oe,m:Jt,M:ie,p:u,S:re,U:Ut,w:Wt,W:Xt,x:l,X:c,y:Qt,Y:Yt,Z:Zt,"%":se};return e}function Gt(t,e,n){var i=t<0?"-":"",r=(i?-t:t)+"",o=r.length;return i+(o<n?new Array(n-o+1).join(e)+r:r)}function Bt(t){return new RegExp("^(?:"+t.map(la.requote).join("|")+")","i")}function $t(t){for(var e=new c,n=-1,i=t.length;++n<i;)e.set(t[n].toLowerCase(),n);return e}function Wt(t,e,n){ms.lastIndex=0;var i=ms.exec(e.slice(n,n+1));return i?(t.w=+i[0],n+i[0].length):-1}function Ut(t,e,n){ms.lastIndex=0;var i=ms.exec(e.slice(n));return i?(t.U=+i[0],n+i[0].length):-1}function Xt(t,e,n){ms.lastIndex=0;var i=ms.exec(e.slice(n));return i?(t.W=+i[0],n+i[0].length):-1}function Yt(t,e,n){ms.lastIndex=0;var i=ms.exec(e.slice(n,n+4));return i?(t.y=+i[0],n+i[0].length):-1}function Qt(t,e,n){ms.lastIndex=0;var i=ms.exec(e.slice(n,n+2));return i?(t.y=Kt(+i[0]),n+i[0].length):-1}function Zt(t,e,n){return/^[+-]\d{4}$/.test(e=e.slice(n,n+5))?(t.Z=-e,n+5):-1}function Kt(t){return t+(t>68?1900:2e3)}function Jt(t,e,n){ms.lastIndex=0;var i=ms.exec(e.slice(n,n+2));return i?(t.m=i[0]-1,n+i[0].length):-1}function te(t,e,n){ms.lastIndex=0;var i=ms.exec(e.slice(n,n+2));return i?(t.d=+i[0],n+i[0].length):-1}function ee(t,e,n){ms.lastIndex=0;var i=ms.exec(e.slice(n,n+3));return i?(t.j=+i[0],n+i[0].length):-1}function ne(t,e,n){ms.lastIndex=0;var i=ms.exec(e.slice(n,n+2));return i?(t.H=+i[0],n+i[0].length):-1}function ie(t,e,n){ms.lastIndex=0;var i=ms.exec(e.slice(n,n+2));return i?(t.M=+i[0],n+i[0].length):-1}function re(t,e,n){ms.lastIndex=0;var i=ms.exec(e.slice(n,n+2));return i?(t.S=+i[0],n+i[0].length):-1}function oe(t,e,n){ms.lastIndex=0;var i=ms.exec(e.slice(n,n+3));return i?(t.L=+i[0],n+i[0].length):-1}function ae(t){var e=t.getTimezoneOffset(),n=e>0?"-":"+",i=ya(e)/60|0,r=ya(e)%60;return n+Gt(i,"0",2)+Gt(r,"0",2)}function se(t,e,n){vs.lastIndex=0;var i=vs.exec(e.slice(n,n+1));return i?n+i[0].length:-1}function le(t){for(var e=t.length,n=-1;++n<e;)t[n][0]=this(t[n][0]);return function(e){for(var n=0,i=t[n];!i[1](e);)i=t[++n];return i[0](e)}}function ce(){}function ue(t,e,n){var i=n.s=t+e,r=i-t,o=i-r;n.t=t-o+(e-r)}function he(t,e){t&&_s.hasOwnProperty(t.type)&&_s[t.type](t,e)}function de(t,e,n){var i,r=-1,o=t.length-n;for(e.lineStart();++r<o;)i=t[r],e.point(i[0],i[1],i[2]);e.lineEnd()}function fe(t,e){var n=-1,i=t.length;for(e.polygonStart();++n<i;)de(t[n],e,1);e.polygonEnd()}function pe(){function t(t,e){t*=za,e=e*za/2+ja/4;var n=t-i,a=n>=0?1:-1,s=a*n,l=Math.cos(e),c=Math.sin(e),u=o*c,h=r*l+u*Math.cos(s),d=u*a*Math.sin(s);Ss.add(Math.atan2(d,h)),i=t,r=l,o=c}var e,n,i,r,o;Cs.point=function(a,s){Cs.point=t,i=(e=a)*za,r=Math.cos(s=(n=s)*za/2+ja/4),o=Math.sin(s)},Cs.lineEnd=function(){t(e,n)}}function ge(t){var e=t[0],n=t[1],i=Math.cos(n);return[i*Math.cos(e),i*Math.sin(e),Math.sin(n)]}function me(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function ve(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1]-t[1]*e[0]]}function ye(t,e){t[0]+=e[0],t[1]+=e[1],t[2]+=e[2]}function xe(t,e){return[t[0]*e,t[1]*e,t[2]*e]}function be(t){var e=Math.sqrt(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=e,t[1]/=e,t[2]/=e}function _e(t){return[Math.atan2(t[1],t[0]),et(t[2])]}function we(t,e){return ya(t[0]-e[0])<Da&&ya(t[1]-e[1])<Da}function Se(t,e){t*=za;var n=Math.cos(e*=za);Ce(n*Math.cos(t),n*Math.sin(t),Math.sin(e))}function Ce(t,e,n){++Ts,As+=(t-As)/Ts,Ms+=(e-Ms)/Ts,Ls+=(n-Ls)/Ts}function Te(){function t(t,r){t*=za;var o=Math.cos(r*=za),a=o*Math.cos(t),s=o*Math.sin(t),l=Math.sin(r),c=Math.atan2(Math.sqrt((c=n*l-i*s)*c+(c=i*a-e*l)*c+(c=e*s-n*a)*c),e*a+n*s+i*l);ks+=c,Es+=c*(e+(e=a)),Ps+=c*(n+(n=s)),Ns+=c*(i+(i=l)),Ce(e,n,i)}var e,n,i;Is.point=function(r,o){r*=za;var a=Math.cos(o*=za);e=a*Math.cos(r),n=a*Math.sin(r),i=Math.sin(o),Is.point=t,Ce(e,n,i)}}function ke(){Is.point=Se}function Ae(){function t(t,e){t*=za;var n=Math.cos(e*=za),a=n*Math.cos(t),s=n*Math.sin(t),l=Math.sin(e),c=r*l-o*s,u=o*a-i*l,h=i*s-r*a,d=Math.sqrt(c*c+u*u+h*h),f=i*a+r*s+o*l,p=d&&-tt(f)/d,g=Math.atan2(d,f);Os+=p*c,Rs+=p*u,Ds+=p*h,ks+=g,Es+=g*(i+(i=a)),Ps+=g*(r+(r=s)),Ns+=g*(o+(o=l)),Ce(i,r,o)}var e,n,i,r,o;Is.point=function(a,s){e=a,n=s,Is.point=t,a*=za;var l=Math.cos(s*=za);i=l*Math.cos(a),r=l*Math.sin(a),o=Math.sin(s),Ce(i,r,o)},Is.lineEnd=function(){t(e,n),Is.lineEnd=ke,Is.point=Se}}function Me(t,e){function n(n,i){return n=t(n,i),e(n[0],n[1])}return t.invert&&e.invert&&(n.invert=function(n,i){return n=e.invert(n,i),n&&t.invert(n[0],n[1])}),n}function Le(){return!0}function Ee(t,e,n,i,r){var o=[],a=[];if(t.forEach(function(t){if(!((e=t.length-1)<=0)){var e,n=t[0],i=t[e];if(we(n,i)){r.lineStart();for(var s=0;s<e;++s)r.point((n=t[s])[0],n[1]);return void r.lineEnd()}var l=new Ne(n,t,null,!0),c=new Ne(n,null,l,!1);l.o=c,o.push(l),a.push(c),l=new Ne(i,t,null,!1),c=new Ne(i,null,l,!0),l.o=c,o.push(l),a.push(c)}}),a.sort(e),Pe(o),Pe(a),o.length){for(var s=0,l=n,c=a.length;s<c;++s)a[s].e=l=!l;for(var u,h,d=o[0];;){for(var f=d,p=!0;f.v;)if((f=f.n)===d)return;u=f.z,r.lineStart();do{if(f.v=f.o.v=!0,f.e){if(p)for(var s=0,c=u.length;s<c;++s)r.point((h=u[s])[0],h[1]);else i(f.x,f.n.x,1,r);f=f.n}else{if(p){u=f.p.z;for(var s=u.length-1;s>=0;--s)r.point((h=u[s])[0],h[1])}else i(f.x,f.p.x,-1,r);f=f.p}f=f.o,u=f.z,p=!p}while(!f.v);r.lineEnd()}}}function Pe(t){if(e=t.length){for(var e,n,i=0,r=t[0];++i<e;)r.n=n=t[i],n.p=r,r=n;r.n=n=t[0],n.p=r}}function Ne(t,e,n,i){this.x=t,this.z=e,this.o=n,this.e=i,this.v=!1,this.n=this.p=null}function Oe(t,e,n,i){return function(r,o){function a(e,n){var i=r(e,n);t(e=i[0],n=i[1])&&o.point(e,n)}function s(t,e){var n=r(t,e);m.point(n[0],n[1])}function l(){y.point=s,m.lineStart()}function c(){y.point=a,m.lineEnd()}function u(t,e){g.push([t,e]);var n=r(t,e);b.point(n[0],n[1])}function h(){b.lineStart(),g=[]}function d(){u(g[0][0],g[0][1]),b.lineEnd();var t,e=b.clean(),n=x.buffer(),i=n.length;if(g.pop(),p.push(g),g=null,i)if(1&e){t=n[0];var r,i=t.length-1,a=-1;if(i>0){for(_||(o.polygonStart(),_=!0),o.lineStart();++a<i;)o.point((r=t[a])[0],r[1]);o.lineEnd()}}else i>1&&2&e&&n.push(n.pop().concat(n.shift())),f.push(n.filter(Re))}var f,p,g,m=e(o),v=r.invert(i[0],i[1]),y={point:a,lineStart:l,lineEnd:c,polygonStart:function(){y.point=u,y.lineStart=h,y.lineEnd=d,f=[],p=[]},polygonEnd:function(){y.point=a,y.lineStart=l,y.lineEnd=c,f=la.merge(f);var t=Fe(v,p);f.length?(_||(o.polygonStart(),_=!0),Ee(f,Ie,t,n,o)):t&&(_||(o.polygonStart(),_=!0),o.lineStart(),n(null,null,1,o),o.lineEnd()),_&&(o.polygonEnd(),_=!1),f=p=null},sphere:function(){o.polygonStart(),o.lineStart(),n(null,null,1,o),o.lineEnd(),o.polygonEnd()}},x=De(),b=e(x),_=!1;return y}}function Re(t){return t.length>1}function De(){var t,e=[];return{lineStart:function(){e.push(t=[])},point:function(e,n){t.push([e,n])},lineEnd:_,buffer:function(){var n=e;return e=[],t=null,n},rejoin:function(){e.length>1&&e.push(e.pop().concat(e.shift()))}}}function Ie(t,e){return((t=t.x)[0]<0?t[1]-Fa-Da:Fa-t[1])-((e=e.x)[0]<0?e[1]-Fa-Da:Fa-e[1])}function je(t){var e,n=NaN,i=NaN,r=NaN;return{lineStart:function(){t.lineStart(),e=1},point:function(o,a){var s=o>0?ja:-ja,l=ya(o-n);ya(l-ja)<Da?(t.point(n,i=(i+a)/2>0?Fa:-Fa),t.point(r,i),t.lineEnd(),t.lineStart(),t.point(s,i),t.point(o,i),e=0):r!==s&&l>=ja&&(ya(n-r)<Da&&(n-=r*Da),ya(o-s)<Da&&(o-=s*Da),i=Ve(n,i,o,a),t.point(r,i),t.lineEnd(),t.lineStart(),t.point(s,i),e=0),t.point(n=o,i=a),r=s},lineEnd:function(){t.lineEnd(),n=i=NaN},clean:function(){return 2-e}}}function Ve(t,e,n,i){var r,o,a=Math.sin(t-n);return ya(a)>Da?Math.atan((Math.sin(e)*(o=Math.cos(i))*Math.sin(n)-Math.sin(i)*(r=Math.cos(e))*Math.sin(t))/(r*o*a)):(e+i)/2}function He(t,e,n,i){var r;if(null==t)r=n*Fa,i.point(-ja,r),i.point(0,r),i.point(ja,r),i.point(ja,0),i.point(ja,-r),i.point(0,-r),i.point(-ja,-r),i.point(-ja,0),i.point(-ja,r);else if(ya(t[0]-e[0])>Da){var o=t[0]<e[0]?ja:-ja;r=n*o/2,i.point(-o,r),i.point(0,r),i.point(o,r)}else i.point(e[0],e[1])}function Fe(t,e){var n=t[0],i=t[1],r=[Math.sin(n),-Math.cos(n),0],o=0,a=0;Ss.reset();for(var s=0,l=e.length;s<l;++s){var c=e[s],u=c.length;if(u)for(var h=c[0],d=h[0],f=h[1]/2+ja/4,p=Math.sin(f),g=Math.cos(f),m=1;;){m===u&&(m=0),t=c[m];var v=t[0],y=t[1]/2+ja/4,x=Math.sin(y),b=Math.cos(y),_=v-d,w=_>=0?1:-1,S=w*_,C=S>ja,T=p*x;if(Ss.add(Math.atan2(T*w*Math.sin(S),g*b+T*Math.cos(S))),o+=C?_+w*Va:_,C^d>=n^v>=n){var k=ve(ge(h),ge(t));be(k);var A=ve(r,k);be(A);var M=(C^_>=0?-1:1)*et(A[2]);(i>M||i===M&&(k[0]||k[1]))&&(a+=C^_>=0?1:-1)}if(!m++)break;d=v,p=x,g=b,h=t}}return(o<-Da||o<Da&&Ss<-Da)^1&a}function ze(t){function e(t,e){return Math.cos(t)*Math.cos(e)>o}function n(t){var n,o,l,c,u;return{lineStart:function(){c=l=!1,u=1},point:function(h,d){var f,p=[h,d],g=e(h,d),m=a?g?0:r(h,d):g?r(h+(h<0?ja:-ja),d):0;if(!n&&(c=l=g)&&t.lineStart(),g!==l&&(f=i(n,p),(we(n,f)||we(p,f))&&(p[0]+=Da,p[1]+=Da,g=e(p[0],p[1]))),g!==l)u=0,g?(t.lineStart(),f=i(p,n),t.point(f[0],f[1])):(f=i(n,p),t.point(f[0],f[1]),t.lineEnd()),n=f;else if(s&&n&&a^g){var v;m&o||!(v=i(p,n,!0))||(u=0,a?(t.lineStart(),t.point(v[0][0],v[0][1]),t.point(v[1][0],v[1][1]),t.lineEnd()):(t.point(v[1][0],v[1][1]),t.lineEnd(),t.lineStart(),t.point(v[0][0],v[0][1])))}!g||n&&we(n,p)||t.point(p[0],p[1]),n=p,l=g,o=m},lineEnd:function(){l&&t.lineEnd(),n=null},clean:function(){return u|(c&&l)<<1}}}function i(t,e,n){var i=ge(t),r=ge(e),a=[1,0,0],s=ve(i,r),l=me(s,s),c=s[0],u=l-c*c;if(!u)return!n&&t;var h=o*l/u,d=-o*c/u,f=ve(a,s),p=xe(a,h),g=xe(s,d);ye(p,g);var m=f,v=me(p,m),y=me(m,m),x=v*v-y*(me(p,p)-1);if(!(x<0)){var b=Math.sqrt(x),_=xe(m,(-v-b)/y);if(ye(_,p),_=_e(_),!n)return _;var w,S=t[0],C=e[0],T=t[1],k=e[1];C<S&&(w=S,S=C,C=w);var A=C-S,M=ya(A-ja)<Da,L=M||A<Da;if(!M&&k<T&&(w=T,T=k,k=w),L?M?T+k>0^_[1]<(ya(_[0]-S)<Da?T:k):T<=_[1]&&_[1]<=k:A>ja^(S<=_[0]&&_[0]<=C)){var E=xe(m,(-v+b)/y);return ye(E,p),[_,_e(E)]}}}function r(e,n){var i=a?t:ja-t,r=0;return e<-i?r|=1:e>i&&(r|=2),n<-i?r|=4:n>i&&(r|=8),r}var o=Math.cos(t),a=o>0,s=ya(o)>Da,l=gn(t,6*za);return Oe(e,n,l,a?[0,-t]:[-ja,t-ja])}function qe(t,e,n,i){return function(r){var o,a=r.a,s=r.b,l=a.x,c=a.y,u=s.x,h=s.y,d=0,f=1,p=u-l,g=h-c;if(o=t-l,p||!(o>0)){if(o/=p,p<0){if(o<d)return;o<f&&(f=o)}else if(p>0){if(o>f)return;o>d&&(d=o)}if(o=n-l,p||!(o<0)){if(o/=p,p<0){if(o>f)return;o>d&&(d=o)}else if(p>0){if(o<d)return;o<f&&(f=o)}if(o=e-c,g||!(o>0)){if(o/=g,g<0){if(o<d)return;o<f&&(f=o)}else if(g>0){if(o>f)return;o>d&&(d=o)}if(o=i-c,g||!(o<0)){if(o/=g,g<0){if(o>f)return;o>d&&(d=o)}else if(g>0){if(o<d)return;o<f&&(f=o)}return d>0&&(r.a={x:l+d*p,y:c+d*g}),f<1&&(r.b={x:l+f*p,y:c+f*g}),r}}}}}}function Ge(t,e,n,i){function r(i,r){return ya(i[0]-t)<Da?r>0?0:3:ya(i[0]-n)<Da?r>0?2:1:ya(i[1]-e)<Da?r>0?1:0:r>0?3:2}function o(t,e){return a(t.x,e.x)}function a(t,e){var n=r(t,1),i=r(e,1);return n!==i?n-i:0===n?e[1]-t[1]:1===n?t[0]-e[0]:2===n?t[1]-e[1]:e[0]-t[0]}return function(s){function l(t){for(var e=0,n=m.length,i=t[1],r=0;r<n;++r)for(var o,a=1,s=m[r],l=s.length,c=s[0];a<l;++a)o=s[a],c[1]<=i?o[1]>i&&J(c,o,t)>0&&++e:o[1]<=i&&J(c,o,t)<0&&--e,c=o;return 0!==e}function c(o,s,l,c){var u=0,h=0;if(null==o||(u=r(o,l))!==(h=r(s,l))||a(o,s)<0^l>0){do c.point(0===u||3===u?t:n,u>1?i:e);while((u=(u+l+4)%4)!==h)}else c.point(s[0],s[1])}function u(r,o){return t<=r&&r<=n&&e<=o&&o<=i}function h(t,e){u(t,e)&&s.point(t,e)}function d(){L.point=p,m&&m.push(v=[]),C=!0,S=!1,_=w=NaN}function f(){g&&(p(y,x),b&&S&&A.rejoin(),g.push(A.buffer())),L.point=h,S&&s.lineEnd()}function p(t,e){t=Math.max(-Vs,Math.min(Vs,t)),e=Math.max(-Vs,Math.min(Vs,e));var n=u(t,e);if(m&&v.push([t,e]),C)y=t,x=e,b=n,C=!1,n&&(s.lineStart(),s.point(t,e));else if(n&&S)s.point(t,e);else{var i={a:{x:_,y:w},b:{x:t,y:e}};M(i)?(S||(s.lineStart(),s.point(i.a.x,i.a.y)),s.point(i.b.x,i.b.y),n||s.lineEnd(),T=!1):n&&(s.lineStart(),s.point(t,e),T=!1)}_=t,w=e,S=n}var g,m,v,y,x,b,_,w,S,C,T,k=s,A=De(),M=qe(t,e,n,i),L={point:h,lineStart:d,lineEnd:f,polygonStart:function(){s=A,g=[],m=[],T=!0},polygonEnd:function(){s=k,g=la.merge(g);var e=l([t,i]),n=T&&e,r=g.length;(n||r)&&(s.polygonStart(),n&&(s.lineStart(),c(null,null,1,s),s.lineEnd()),r&&Ee(g,o,e,c,s),s.polygonEnd()),g=m=v=null}};return L}}function Be(t){var e=0,n=ja/3,i=sn(t),r=i(e,n);return r.parallels=function(t){return arguments.length?i(e=t[0]*ja/180,n=t[1]*ja/180):[e/ja*180,n/ja*180]},r}function $e(t,e){function n(t,e){var n=Math.sqrt(o-2*r*Math.sin(e))/r;return[n*Math.sin(t*=r),a-n*Math.cos(t)]}var i=Math.sin(t),r=(i+Math.sin(e))/2,o=1+i*(2*r-i),a=Math.sqrt(o)/r;return n.invert=function(t,e){var n=a-e;return[Math.atan2(t,n)/r,et((o-(t*t+n*n)*r*r)/(2*r))]},n}function We(){function t(t,e){Fs+=r*t-i*e,i=t,r=e}var e,n,i,r;$s.point=function(o,a){$s.point=t,e=i=o,n=r=a},$s.lineEnd=function(){t(e,n)}}function Ue(t,e){t<zs&&(zs=t),t>Gs&&(Gs=t),e<qs&&(qs=e),e>Bs&&(Bs=e)}function Xe(){function t(t,e){a.push("M",t,",",e,o)}function e(t,e){a.push("M",t,",",e),s.point=n}function n(t,e){a.push("L",t,",",e)}function i(){s.point=t}function r(){a.push("Z")}var o=Ye(4.5),a=[],s={point:t,lineStart:function(){s.point=e},lineEnd:i,polygonStart:function(){s.lineEnd=r},polygonEnd:function(){s.lineEnd=i,s.point=t},pointRadius:function(t){return o=Ye(t),s},result:function(){if(a.length){var t=a.join("");return a=[],t}}};return s}function Ye(t){return"m0,"+t+"a"+t+","+t+" 0 1,1 0,"+-2*t+"a"+t+","+t+" 0 1,1 0,"+2*t+"z"}function Qe(t,e){As+=t,Ms+=e,++Ls}function Ze(){function t(t,i){var r=t-e,o=i-n,a=Math.sqrt(r*r+o*o);Es+=a*(e+t)/2,Ps+=a*(n+i)/2,Ns+=a,Qe(e=t,n=i)}var e,n;Us.point=function(i,r){Us.point=t,Qe(e=i,n=r)}}function Ke(){Us.point=Qe}function Je(){function t(t,e){var n=t-i,o=e-r,a=Math.sqrt(n*n+o*o);Es+=a*(i+t)/2,Ps+=a*(r+e)/2,Ns+=a,a=r*t-i*e,Os+=a*(i+t),Rs+=a*(r+e),Ds+=3*a,Qe(i=t,r=e)}var e,n,i,r;Us.point=function(o,a){Us.point=t,Qe(e=i=o,n=r=a)},Us.lineEnd=function(){t(e,n)}}function tn(t){function e(e,n){t.moveTo(e+a,n),t.arc(e,n,a,0,Va)}function n(e,n){t.moveTo(e,n),s.point=i}function i(e,n){t.lineTo(e,n)}function r(){s.point=e}function o(){t.closePath()}var a=4.5,s={point:e,lineStart:function(){s.point=n},lineEnd:r,polygonStart:function(){s.lineEnd=o},polygonEnd:function(){s.lineEnd=r,s.point=e},pointRadius:function(t){return a=t,s},result:_};return s}function en(t){function e(t){return(s?i:n)(t)}function n(e){return on(e,function(n,i){n=t(n,i),e.point(n[0],n[1])})}function i(e){function n(n,i){n=t(n,i),e.point(n[0],n[1])}function i(){x=NaN,C.point=o,e.lineStart()}function o(n,i){var o=ge([n,i]),a=t(n,i);r(x,b,y,_,w,S,x=a[0],b=a[1],y=n,_=o[0],w=o[1],S=o[2],s,e),e.point(x,b)}function a(){C.point=n,e.lineEnd()}function l(){i(),C.point=c,C.lineEnd=u}function c(t,e){o(h=t,d=e),f=x,p=b,g=_,m=w,v=S,C.point=o}function u(){r(x,b,y,_,w,S,f,p,h,g,m,v,s,e),C.lineEnd=a,a()}var h,d,f,p,g,m,v,y,x,b,_,w,S,C={point:n,lineStart:i,lineEnd:a,polygonStart:function(){e.polygonStart(),C.lineStart=l},polygonEnd:function(){e.polygonEnd(),C.lineStart=i}};return C}function r(e,n,i,s,l,c,u,h,d,f,p,g,m,v){var y=u-e,x=h-n,b=y*y+x*x;if(b>4*o&&m--){var _=s+f,w=l+p,S=c+g,C=Math.sqrt(_*_+w*w+S*S),T=Math.asin(S/=C),k=ya(ya(S)-1)<Da||ya(i-d)<Da?(i+d)/2:Math.atan2(w,_),A=t(k,T),M=A[0],L=A[1],E=M-e,P=L-n,N=x*E-y*P;(N*N/b>o||ya((y*E+x*P)/b-.5)>.3||s*f+l*p+c*g<a)&&(r(e,n,i,s,l,c,M,L,k,_/=C,w/=C,S,m,v),v.point(M,L),r(M,L,k,_,w,S,u,h,d,f,p,g,m,v))}}var o=.5,a=Math.cos(30*za),s=16;return e.precision=function(t){return arguments.length?(s=(o=t*t)>0&&16,e):Math.sqrt(o)},e}function nn(t){var e=en(function(e,n){return t([e*qa,n*qa])});return function(t){return ln(e(t))}}function rn(t){this.stream=t}function on(t,e){return{point:e,sphere:function(){t.sphere()},lineStart:function(){t.lineStart()},lineEnd:function(){t.lineEnd()},polygonStart:function(){t.polygonStart()},polygonEnd:function(){t.polygonEnd()}}}function an(t){return sn(function(){return t})()}function sn(t){function e(t){return t=s(t[0]*za,t[1]*za),[t[0]*d+l,c-t[1]*d]}function n(t){return t=s.invert((t[0]-l)/d,(c-t[1])/d),t&&[t[0]*qa,t[1]*qa]}function i(){s=Me(a=hn(v,x,b),o);var t=o(g,m);return l=f-t[0]*d,c=p+t[1]*d,r()}function r(){return u&&(u.valid=!1,u=null),e}var o,a,s,l,c,u,h=en(function(t,e){return t=o(t,e),[t[0]*d+l,c-t[1]*d]}),d=150,f=480,p=250,g=0,m=0,v=0,x=0,b=0,_=js,w=y,S=null,C=null;return e.stream=function(t){return u&&(u.valid=!1),u=ln(_(a,h(w(t)))),u.valid=!0,u},e.clipAngle=function(t){return arguments.length?(_=null==t?(S=t,js):ze((S=+t)*za),r()):S},e.clipExtent=function(t){return arguments.length?(C=t,w=t?Ge(t[0][0],t[0][1],t[1][0],t[1][1]):y,r()):C},e.scale=function(t){return arguments.length?(d=+t,i()):d},e.translate=function(t){return arguments.length?(f=+t[0],p=+t[1],i()):[f,p]},e.center=function(t){return arguments.length?(g=t[0]%360*za,m=t[1]%360*za,i()):[g*qa,m*qa]},e.rotate=function(t){return arguments.length?(v=t[0]%360*za,x=t[1]%360*za,b=t.length>2?t[2]%360*za:0,i()):[v*qa,x*qa,b*qa]},la.rebind(e,h,"precision"),function(){return o=t.apply(this,arguments),e.invert=o.invert&&n,i()}}function ln(t){return on(t,function(e,n){t.point(e*za,n*za)})}function cn(t,e){return[t,e]}function un(t,e){return[t>ja?t-Va:t<-ja?t+Va:t,e]}function hn(t,e,n){return t?e||n?Me(fn(t),pn(e,n)):fn(t):e||n?pn(e,n):un}function dn(t){return function(e,n){return e+=t,[e>ja?e-Va:e<-ja?e+Va:e,n]}}function fn(t){var e=dn(t);return e.invert=dn(-t),e}function pn(t,e){function n(t,e){var n=Math.cos(e),s=Math.cos(t)*n,l=Math.sin(t)*n,c=Math.sin(e),u=c*i+s*r;return[Math.atan2(l*o-u*a,s*i-c*r),et(u*o+l*a)]}var i=Math.cos(t),r=Math.sin(t),o=Math.cos(e),a=Math.sin(e);return n.invert=function(t,e){var n=Math.cos(e),s=Math.cos(t)*n,l=Math.sin(t)*n,c=Math.sin(e),u=c*o-l*a;return[Math.atan2(l*o+c*a,s*i+u*r),et(u*i-s*r)]},n}function gn(t,e){var n=Math.cos(t),i=Math.sin(t);return function(r,o,a,s){var l=a*e;null!=r?(r=mn(n,r),o=mn(n,o),(a>0?r<o:r>o)&&(r+=a*Va)):(r=t+a*Va,o=t-.5*l);for(var c,u=r;a>0?u>o:u<o;u-=l)s.point((c=_e([n,-i*Math.cos(u),-i*Math.sin(u)]))[0],c[1])}}function mn(t,e){var n=ge(e);n[0]-=t,be(n);var i=tt(-n[1]);return((-n[2]<0?-i:i)+2*Math.PI-Da)%(2*Math.PI)}function vn(t,e,n){var i=la.range(t,e-Da,n).concat(e);return function(t){return i.map(function(e){return[t,e]})}}function yn(t,e,n){var i=la.range(t,e-Da,n).concat(e);return function(t){return i.map(function(e){return[e,t]})}}function xn(t){return t.source}function bn(t){return t.target}function _n(t,e,n,i){var r=Math.cos(e),o=Math.sin(e),a=Math.cos(i),s=Math.sin(i),l=r*Math.cos(t),c=r*Math.sin(t),u=a*Math.cos(n),h=a*Math.sin(n),d=2*Math.asin(Math.sqrt(ot(i-e)+r*a*ot(n-t))),f=1/Math.sin(d),p=d?function(t){var e=Math.sin(t*=d)*f,n=Math.sin(d-t)*f,i=n*l+e*u,r=n*c+e*h,a=n*o+e*s;return[Math.atan2(r,i)*qa,Math.atan2(a,Math.sqrt(i*i+r*r))*qa]}:function(){return[t*qa,e*qa]};return p.distance=d,p}function wn(){function t(t,r){var o=Math.sin(r*=za),a=Math.cos(r),s=ya((t*=za)-e),l=Math.cos(s);Xs+=Math.atan2(Math.sqrt((s=a*Math.sin(s))*s+(s=i*o-n*a*l)*s),n*o+i*a*l),e=t,n=o,i=a}var e,n,i;Ys.point=function(r,o){e=r*za,n=Math.sin(o*=za),i=Math.cos(o),Ys.point=t},Ys.lineEnd=function(){Ys.point=Ys.lineEnd=_}}function Sn(t,e){function n(e,n){var i=Math.cos(e),r=Math.cos(n),o=t(i*r);return[o*r*Math.sin(e),o*Math.sin(n)]}return n.invert=function(t,n){var i=Math.sqrt(t*t+n*n),r=e(i),o=Math.sin(r),a=Math.cos(r);return[Math.atan2(t*o,i*a),Math.asin(i&&n*o/i)]},n}function Cn(t,e){function n(t,e){a>0?e<-Fa+Da&&(e=-Fa+Da):e>Fa-Da&&(e=Fa-Da);var n=a/Math.pow(r(e),o);return[n*Math.sin(o*t),a-n*Math.cos(o*t)]}var i=Math.cos(t),r=function(t){return Math.tan(ja/4+t/2)},o=t===e?Math.sin(t):Math.log(i/Math.cos(e))/Math.log(r(e)/r(t)),a=i*Math.pow(r(t),o)/o;return o?(n.invert=function(t,e){var n=a-e,i=K(o)*Math.sqrt(t*t+n*n);return[Math.atan2(t,n)/o,2*Math.atan(Math.pow(a/i,1/o))-Fa]},n):kn}function Tn(t,e){function n(t,e){var n=o-e;return[n*Math.sin(r*t),o-n*Math.cos(r*t)]}var i=Math.cos(t),r=t===e?Math.sin(t):(i-Math.cos(e))/(e-t),o=i/r+t;return ya(r)<Da?cn:(n.invert=function(t,e){var n=o-e;return[Math.atan2(t,n)/r,o-K(r)*Math.sqrt(t*t+n*n)]},n)}function kn(t,e){return[t,Math.log(Math.tan(ja/4+e/2))]}function An(t){var e,n=an(t),i=n.scale,r=n.translate,o=n.clipExtent;return n.scale=function(){var t=i.apply(n,arguments);return t===n?e?n.clipExtent(null):n:t},n.translate=function(){var t=r.apply(n,arguments);return t===n?e?n.clipExtent(null):n:t},n.clipExtent=function(t){var a=o.apply(n,arguments);if(a===n){if(e=null==t){var s=ja*i(),l=r();o([[l[0]-s,l[1]-s],[l[0]+s,l[1]+s]])}}else e&&(a=null);return a},n.clipExtent(null)}function Mn(t,e){return[Math.log(Math.tan(ja/4+e/2)),-t]}function Ln(t){return t[0]}function En(t){return t[1]}function Pn(t){for(var e=t.length,n=[0,1],i=2,r=2;r<e;r++){for(;i>1&&J(t[n[i-2]],t[n[i-1]],t[r])<=0;)--i;n[i++]=r}return n.slice(0,i)}function Nn(t,e){return t[0]-e[0]||t[1]-e[1]}function On(t,e,n){return(n[0]-e[0])*(t[1]-e[1])<(n[1]-e[1])*(t[0]-e[0])}function Rn(t,e,n,i){var r=t[0],o=n[0],a=e[0]-r,s=i[0]-o,l=t[1],c=n[1],u=e[1]-l,h=i[1]-c,d=(s*(l-c)-h*(r-o))/(h*a-s*u);return[r+d*a,l+d*u]}function Dn(t){var e=t[0],n=t[t.length-1];return!(e[0]-n[0]||e[1]-n[1])}function In(){ii(this),this.edge=this.site=this.circle=null}function jn(t){var e=sl.pop()||new In;return e.site=t,e}function Vn(t){Xn(t),rl.remove(t),sl.push(t),ii(t)}function Hn(t){var e=t.circle,n=e.x,i=e.cy,r={x:n,y:i},o=t.P,a=t.N,s=[t];Vn(t);for(var l=o;l.circle&&ya(n-l.circle.x)<Da&&ya(i-l.circle.cy)<Da;)o=l.P,s.unshift(l),Vn(l),l=o;s.unshift(l),Xn(l);for(var c=a;c.circle&&ya(n-c.circle.x)<Da&&ya(i-c.circle.cy)<Da;)a=c.N,s.push(c),Vn(c),c=a;s.push(c),Xn(c);var u,h=s.length;for(u=1;u<h;++u)c=s[u],l=s[u-1],ti(c.edge,l.site,c.site,r);l=s[0],c=s[h-1],c.edge=Kn(l.site,c.site,null,r),Un(l),Un(c)}function Fn(t){for(var e,n,i,r,o=t.x,a=t.y,s=rl._;s;)if(i=zn(s,a)-o,i>Da)s=s.L;else{if(r=o-qn(s,a),!(r>Da)){i>-Da?(e=s.P,n=s):r>-Da?(e=s,n=s.N):e=n=s;break}if(!s.R){e=s;break}s=s.R}var l=jn(t);if(rl.insert(e,l),e||n){if(e===n)return Xn(e),n=jn(e.site),rl.insert(l,n),l.edge=n.edge=Kn(e.site,l.site),Un(e),void Un(n);if(!n)return void(l.edge=Kn(e.site,l.site));Xn(e),Xn(n);var c=e.site,u=c.x,h=c.y,d=t.x-u,f=t.y-h,p=n.site,g=p.x-u,m=p.y-h,v=2*(d*m-f*g),y=d*d+f*f,x=g*g+m*m,b={x:(m*y-f*x)/v+u,y:(d*x-g*y)/v+h};ti(n.edge,c,p,b),l.edge=Kn(c,t,null,b),n.edge=Kn(t,p,null,b),Un(e),Un(n)}}function zn(t,e){var n=t.site,i=n.x,r=n.y,o=r-e;if(!o)return i;var a=t.P;if(!a)return-(1/0);n=a.site;var s=n.x,l=n.y,c=l-e;if(!c)return s;var u=s-i,h=1/o-1/c,d=u/c;return h?(-d+Math.sqrt(d*d-2*h*(u*u/(-2*c)-l+c/2+r-o/2)))/h+i:(i+s)/2}function qn(t,e){var n=t.N;if(n)return zn(n,e);var i=t.site;return i.y===e?i.x:1/0}function Gn(t){this.site=t,this.edges=[]}function Bn(t){for(var e,n,i,r,o,a,s,l,c,u,h=t[0][0],d=t[1][0],f=t[0][1],p=t[1][1],g=il,m=g.length;m--;)if(o=g[m],o&&o.prepare())for(s=o.edges,l=s.length,a=0;a<l;)u=s[a].end(),i=u.x,r=u.y,c=s[++a%l].start(),e=c.x,n=c.y,(ya(i-e)>Da||ya(r-n)>Da)&&(s.splice(a,0,new ei(Jn(o.site,u,ya(i-h)<Da&&p-r>Da?{x:h,y:ya(e-h)<Da?n:p}:ya(r-p)<Da&&d-i>Da?{x:ya(n-p)<Da?e:d,y:p}:ya(i-d)<Da&&r-f>Da?{x:d,y:ya(e-d)<Da?n:f}:ya(r-f)<Da&&i-h>Da?{x:ya(n-f)<Da?e:h,y:f}:null),o.site,null)),++l)}function $n(t,e){return e.angle-t.angle}function Wn(){ii(this),this.x=this.y=this.arc=this.site=this.cy=null}function Un(t){var e=t.P,n=t.N;if(e&&n){var i=e.site,r=t.site,o=n.site;if(i!==o){var a=r.x,s=r.y,l=i.x-a,c=i.y-s,u=o.x-a,h=o.y-s,d=2*(l*h-c*u);if(!(d>=-Ia)){var f=l*l+c*c,p=u*u+h*h,g=(h*f-c*p)/d,m=(l*p-u*f)/d,h=m+s,v=ll.pop()||new Wn;v.arc=t,v.site=r,v.x=g+a,v.y=h+Math.sqrt(g*g+m*m),v.cy=h,t.circle=v;for(var y=null,x=al._;x;)if(v.y<x.y||v.y===x.y&&v.x<=x.x){if(!x.L){y=x.P;break}x=x.L}else{if(!x.R){y=x;break}x=x.R}al.insert(y,v),y||(ol=v)}}}}function Xn(t){var e=t.circle;e&&(e.P||(ol=e.N),al.remove(e),ll.push(e),ii(e),t.circle=null)}function Yn(t){for(var e,n=nl,i=qe(t[0][0],t[0][1],t[1][0],t[1][1]),r=n.length;r--;)e=n[r],(!Qn(e,t)||!i(e)||ya(e.a.x-e.b.x)<Da&&ya(e.a.y-e.b.y)<Da)&&(e.a=e.b=null,n.splice(r,1))}function Qn(t,e){var n=t.b;if(n)return!0;var i,r,o=t.a,a=e[0][0],s=e[1][0],l=e[0][1],c=e[1][1],u=t.l,h=t.r,d=u.x,f=u.y,p=h.x,g=h.y,m=(d+p)/2,v=(f+g)/2;if(g===f){if(m<a||m>=s)return;if(d>p){if(o){if(o.y>=c)return}else o={x:m,y:l};n={x:m,y:c}}else{if(o){if(o.y<l)return}else o={x:m,y:c};n={x:m,y:l}}}else if(i=(d-p)/(g-f),r=v-i*m,
+i<-1||i>1)if(d>p){if(o){if(o.y>=c)return}else o={x:(l-r)/i,y:l};n={x:(c-r)/i,y:c}}else{if(o){if(o.y<l)return}else o={x:(c-r)/i,y:c};n={x:(l-r)/i,y:l}}else if(f<g){if(o){if(o.x>=s)return}else o={x:a,y:i*a+r};n={x:s,y:i*s+r}}else{if(o){if(o.x<a)return}else o={x:s,y:i*s+r};n={x:a,y:i*a+r}}return t.a=o,t.b=n,!0}function Zn(t,e){this.l=t,this.r=e,this.a=this.b=null}function Kn(t,e,n,i){var r=new Zn(t,e);return nl.push(r),n&&ti(r,t,e,n),i&&ti(r,e,t,i),il[t.i].edges.push(new ei(r,t,e)),il[e.i].edges.push(new ei(r,e,t)),r}function Jn(t,e,n){var i=new Zn(t,null);return i.a=e,i.b=n,nl.push(i),i}function ti(t,e,n,i){t.a||t.b?t.l===n?t.b=i:t.a=i:(t.a=i,t.l=e,t.r=n)}function ei(t,e,n){var i=t.a,r=t.b;this.edge=t,this.site=e,this.angle=n?Math.atan2(n.y-e.y,n.x-e.x):t.l===e?Math.atan2(r.x-i.x,i.y-r.y):Math.atan2(i.x-r.x,r.y-i.y)}function ni(){this._=null}function ii(t){t.U=t.C=t.L=t.R=t.P=t.N=null}function ri(t,e){var n=e,i=e.R,r=n.U;r?r.L===n?r.L=i:r.R=i:t._=i,i.U=r,n.U=i,n.R=i.L,n.R&&(n.R.U=n),i.L=n}function oi(t,e){var n=e,i=e.L,r=n.U;r?r.L===n?r.L=i:r.R=i:t._=i,i.U=r,n.U=i,n.L=i.R,n.L&&(n.L.U=n),i.R=n}function ai(t){for(;t.L;)t=t.L;return t}function si(t,e){var n,i,r,o=t.sort(li).pop();for(nl=[],il=new Array(t.length),rl=new ni,al=new ni;;)if(r=ol,o&&(!r||o.y<r.y||o.y===r.y&&o.x<r.x))o.x===n&&o.y===i||(il[o.i]=new Gn(o),Fn(o),n=o.x,i=o.y),o=t.pop();else{if(!r)break;Hn(r.arc)}e&&(Yn(e),Bn(e));var a={cells:il,edges:nl};return rl=al=nl=il=null,a}function li(t,e){return e.y-t.y||e.x-t.x}function ci(t,e,n){return(t.x-n.x)*(e.y-t.y)-(t.x-e.x)*(n.y-t.y)}function ui(t){return t.x}function hi(t){return t.y}function di(){return{leaf:!0,nodes:[],point:null,x:null,y:null}}function fi(t,e,n,i,r,o){if(!t(e,n,i,r,o)){var a=.5*(n+r),s=.5*(i+o),l=e.nodes;l[0]&&fi(t,l[0],n,i,a,s),l[1]&&fi(t,l[1],a,i,r,s),l[2]&&fi(t,l[2],n,s,a,o),l[3]&&fi(t,l[3],a,s,r,o)}}function pi(t,e,n,i,r,o,a){var s,l=1/0;return function t(c,u,h,d,f){if(!(u>o||h>a||d<i||f<r)){if(p=c.point){var p,g=e-c.x,m=n-c.y,v=g*g+m*m;if(v<l){var y=Math.sqrt(l=v);i=e-y,r=n-y,o=e+y,a=n+y,s=p}}for(var x=c.nodes,b=.5*(u+d),_=.5*(h+f),w=e>=b,S=n>=_,C=S<<1|w,T=C+4;C<T;++C)if(c=x[3&C])switch(3&C){case 0:t(c,u,h,b,_);break;case 1:t(c,b,h,d,_);break;case 2:t(c,u,_,b,f);break;case 3:t(c,b,_,d,f)}}}(t,i,r,o,a),s}function gi(t,e){t=la.rgb(t),e=la.rgb(e);var n=t.r,i=t.g,r=t.b,o=e.r-n,a=e.g-i,s=e.b-r;return function(t){return"#"+bt(Math.round(n+o*t))+bt(Math.round(i+a*t))+bt(Math.round(r+s*t))}}function mi(t,e){var n,i={},r={};for(n in t)n in e?i[n]=xi(t[n],e[n]):r[n]=t[n];for(n in e)n in t||(r[n]=e[n]);return function(t){for(n in i)r[n]=i[n](t);return r}}function vi(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}function yi(t,e){var n,i,r,o=ul.lastIndex=hl.lastIndex=0,a=-1,s=[],l=[];for(t+="",e+="";(n=ul.exec(t))&&(i=hl.exec(e));)(r=i.index)>o&&(r=e.slice(o,r),s[a]?s[a]+=r:s[++a]=r),(n=n[0])===(i=i[0])?s[a]?s[a]+=i:s[++a]=i:(s[++a]=null,l.push({i:a,x:vi(n,i)})),o=hl.lastIndex;return o<e.length&&(r=e.slice(o),s[a]?s[a]+=r:s[++a]=r),s.length<2?l[0]?(e=l[0].x,function(t){return e(t)+""}):function(){return e}:(e=l.length,function(t){for(var n,i=0;i<e;++i)s[(n=l[i]).i]=n.x(t);return s.join("")})}function xi(t,e){for(var n,i=la.interpolators.length;--i>=0&&!(n=la.interpolators[i](t,e)););return n}function bi(t,e){var n,i=[],r=[],o=t.length,a=e.length,s=Math.min(t.length,e.length);for(n=0;n<s;++n)i.push(xi(t[n],e[n]));for(;n<o;++n)r[n]=t[n];for(;n<a;++n)r[n]=e[n];return function(t){for(n=0;n<s;++n)r[n]=i[n](t);return r}}function _i(t){return function(e){return e<=0?0:e>=1?1:t(e)}}function wi(t){return function(e){return 1-t(1-e)}}function Si(t){return function(e){return.5*(e<.5?t(2*e):2-t(2-2*e))}}function Ci(t){return t*t}function Ti(t){return t*t*t}function ki(t){if(t<=0)return 0;if(t>=1)return 1;var e=t*t,n=e*t;return 4*(t<.5?n:3*(t-e)+n-.75)}function Ai(t){return function(e){return Math.pow(e,t)}}function Mi(t){return 1-Math.cos(t*Fa)}function Li(t){return Math.pow(2,10*(t-1))}function Ei(t){return 1-Math.sqrt(1-t*t)}function Pi(t,e){var n;return arguments.length<2&&(e=.45),arguments.length?n=e/Va*Math.asin(1/t):(t=1,n=e/4),function(i){return 1+t*Math.pow(2,-10*i)*Math.sin((i-n)*Va/e)}}function Ni(t){return t||(t=1.70158),function(e){return e*e*((t+1)*e-t)}}function Oi(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375}function Ri(t,e){t=la.hcl(t),e=la.hcl(e);var n=t.h,i=t.c,r=t.l,o=e.h-n,a=e.c-i,s=e.l-r;return isNaN(a)&&(a=0,i=isNaN(i)?e.c:i),isNaN(o)?(o=0,n=isNaN(n)?e.h:n):o>180?o-=360:o<-180&&(o+=360),function(t){return ut(n+o*t,i+a*t,r+s*t)+""}}function Di(t,e){t=la.hsl(t),e=la.hsl(e);var n=t.h,i=t.s,r=t.l,o=e.h-n,a=e.s-i,s=e.l-r;return isNaN(a)&&(a=0,i=isNaN(i)?e.s:i),isNaN(o)?(o=0,n=isNaN(n)?e.h:n):o>180?o-=360:o<-180&&(o+=360),function(t){return lt(n+o*t,i+a*t,r+s*t)+""}}function Ii(t,e){t=la.lab(t),e=la.lab(e);var n=t.l,i=t.a,r=t.b,o=e.l-n,a=e.a-i,s=e.b-r;return function(t){return dt(n+o*t,i+a*t,r+s*t)+""}}function ji(t,e){return e-=t,function(n){return Math.round(t+e*n)}}function Vi(t){var e=[t.a,t.b],n=[t.c,t.d],i=Fi(e),r=Hi(e,n),o=Fi(zi(n,e,-r))||0;e[0]*n[1]<n[0]*e[1]&&(e[0]*=-1,e[1]*=-1,i*=-1,r*=-1),this.rotate=(i?Math.atan2(e[1],e[0]):Math.atan2(-n[0],n[1]))*qa,this.translate=[t.e,t.f],this.scale=[i,o],this.skew=o?Math.atan2(r,o)*qa:0}function Hi(t,e){return t[0]*e[0]+t[1]*e[1]}function Fi(t){var e=Math.sqrt(Hi(t,t));return e&&(t[0]/=e,t[1]/=e),e}function zi(t,e,n){return t[0]+=n*e[0],t[1]+=n*e[1],t}function qi(t){return t.length?t.pop()+",":""}function Gi(t,e,n,i){if(t[0]!==e[0]||t[1]!==e[1]){var r=n.push("translate(",null,",",null,")");i.push({i:r-4,x:vi(t[0],e[0])},{i:r-2,x:vi(t[1],e[1])})}else(e[0]||e[1])&&n.push("translate("+e+")")}function Bi(t,e,n,i){t!==e?(t-e>180?e+=360:e-t>180&&(t+=360),i.push({i:n.push(qi(n)+"rotate(",null,")")-2,x:vi(t,e)})):e&&n.push(qi(n)+"rotate("+e+")")}function $i(t,e,n,i){t!==e?i.push({i:n.push(qi(n)+"skewX(",null,")")-2,x:vi(t,e)}):e&&n.push(qi(n)+"skewX("+e+")")}function Wi(t,e,n,i){if(t[0]!==e[0]||t[1]!==e[1]){var r=n.push(qi(n)+"scale(",null,",",null,")");i.push({i:r-4,x:vi(t[0],e[0])},{i:r-2,x:vi(t[1],e[1])})}else 1===e[0]&&1===e[1]||n.push(qi(n)+"scale("+e+")")}function Ui(t,e){var n=[],i=[];return t=la.transform(t),e=la.transform(e),Gi(t.translate,e.translate,n,i),Bi(t.rotate,e.rotate,n,i),$i(t.skew,e.skew,n,i),Wi(t.scale,e.scale,n,i),t=e=null,function(t){for(var e,r=-1,o=i.length;++r<o;)n[(e=i[r]).i]=e.x(t);return n.join("")}}function Xi(t,e){return e=(e-=t=+t)||1/e,function(n){return(n-t)/e}}function Yi(t,e){return e=(e-=t=+t)||1/e,function(n){return Math.max(0,Math.min(1,(n-t)/e))}}function Qi(t){for(var e=t.source,n=t.target,i=Ki(e,n),r=[e];e!==i;)e=e.parent,r.push(e);for(var o=r.length;n!==i;)r.splice(o,0,n),n=n.parent;return r}function Zi(t){for(var e=[],n=t.parent;null!=n;)e.push(t),t=n,n=n.parent;return e.push(t),e}function Ki(t,e){if(t===e)return t;for(var n=Zi(t),i=Zi(e),r=n.pop(),o=i.pop(),a=null;r===o;)a=r,r=n.pop(),o=i.pop();return a}function Ji(t){t.fixed|=2}function tr(t){t.fixed&=-7}function er(t){t.fixed|=4,t.px=t.x,t.py=t.y}function nr(t){t.fixed&=-5}function ir(t,e,n){var i=0,r=0;if(t.charge=0,!t.leaf)for(var o,a=t.nodes,s=a.length,l=-1;++l<s;)o=a[l],null!=o&&(ir(o,e,n),t.charge+=o.charge,i+=o.charge*o.cx,r+=o.charge*o.cy);if(t.point){t.leaf||(t.point.x+=Math.random()-.5,t.point.y+=Math.random()-.5);var c=e*n[t.point.index];t.charge+=t.pointCharge=c,i+=c*t.point.x,r+=c*t.point.y}t.cx=i/t.charge,t.cy=r/t.charge}function rr(t,e){return la.rebind(t,e,"sort","children","value"),t.nodes=t,t.links=ur,t}function or(t,e){for(var n=[t];null!=(t=n.pop());)if(e(t),(r=t.children)&&(i=r.length))for(var i,r;--i>=0;)n.push(r[i])}function ar(t,e){for(var n=[t],i=[];null!=(t=n.pop());)if(i.push(t),(o=t.children)&&(r=o.length))for(var r,o,a=-1;++a<r;)n.push(o[a]);for(;null!=(t=i.pop());)e(t)}function sr(t){return t.children}function lr(t){return t.value}function cr(t,e){return e.value-t.value}function ur(t){return la.merge(t.map(function(t){return(t.children||[]).map(function(e){return{source:t,target:e}})}))}function hr(t){return t.x}function dr(t){return t.y}function fr(t,e,n){t.y0=e,t.y=n}function pr(t){return la.range(t.length)}function gr(t){for(var e=-1,n=t[0].length,i=[];++e<n;)i[e]=0;return i}function mr(t){for(var e,n=1,i=0,r=t[0][1],o=t.length;n<o;++n)(e=t[n][1])>r&&(i=n,r=e);return i}function vr(t){return t.reduce(yr,0)}function yr(t,e){return t+e[1]}function xr(t,e){return br(t,Math.ceil(Math.log(e.length)/Math.LN2+1))}function br(t,e){for(var n=-1,i=+t[0],r=(t[1]-i)/e,o=[];++n<=e;)o[n]=r*n+i;return o}function _r(t){return[la.min(t),la.max(t)]}function wr(t,e){return t.value-e.value}function Sr(t,e){var n=t._pack_next;t._pack_next=e,e._pack_prev=t,e._pack_next=n,n._pack_prev=e}function Cr(t,e){t._pack_next=e,e._pack_prev=t}function Tr(t,e){var n=e.x-t.x,i=e.y-t.y,r=t.r+e.r;return.999*r*r>n*n+i*i}function kr(t){function e(t){u=Math.min(t.x-t.r,u),h=Math.max(t.x+t.r,h),d=Math.min(t.y-t.r,d),f=Math.max(t.y+t.r,f)}if((n=t.children)&&(c=n.length)){var n,i,r,o,a,s,l,c,u=1/0,h=-(1/0),d=1/0,f=-(1/0);if(n.forEach(Ar),i=n[0],i.x=-i.r,i.y=0,e(i),c>1&&(r=n[1],r.x=r.r,r.y=0,e(r),c>2))for(o=n[2],Er(i,r,o),e(o),Sr(i,o),i._pack_prev=o,Sr(o,r),r=i._pack_next,a=3;a<c;a++){Er(i,r,o=n[a]);var p=0,g=1,m=1;for(s=r._pack_next;s!==r;s=s._pack_next,g++)if(Tr(s,o)){p=1;break}if(1==p)for(l=i._pack_prev;l!==s._pack_prev&&!Tr(l,o);l=l._pack_prev,m++);p?(g<m||g==m&&r.r<i.r?Cr(i,r=s):Cr(i=l,r),a--):(Sr(i,o),r=o,e(o))}var v=(u+h)/2,y=(d+f)/2,x=0;for(a=0;a<c;a++)o=n[a],o.x-=v,o.y-=y,x=Math.max(x,o.r+Math.sqrt(o.x*o.x+o.y*o.y));t.r=x,n.forEach(Mr)}}function Ar(t){t._pack_next=t._pack_prev=t}function Mr(t){delete t._pack_next,delete t._pack_prev}function Lr(t,e,n,i){var r=t.children;if(t.x=e+=i*t.x,t.y=n+=i*t.y,t.r*=i,r)for(var o=-1,a=r.length;++o<a;)Lr(r[o],e,n,i)}function Er(t,e,n){var i=t.r+n.r,r=e.x-t.x,o=e.y-t.y;if(i&&(r||o)){var a=e.r+n.r,s=r*r+o*o;a*=a,i*=i;var l=.5+(i-a)/(2*s),c=Math.sqrt(Math.max(0,2*a*(i+s)-(i-=s)*i-a*a))/(2*s);n.x=t.x+l*r+c*o,n.y=t.y+l*o-c*r}else n.x=t.x+i,n.y=t.y}function Pr(t,e){return t.parent==e.parent?1:2}function Nr(t){var e=t.children;return e.length?e[0]:t.t}function Or(t){var e,n=t.children;return(e=n.length)?n[e-1]:t.t}function Rr(t,e,n){var i=n/(e.i-t.i);e.c-=i,e.s+=n,t.c+=i,e.z+=n,e.m+=n}function Dr(t){for(var e,n=0,i=0,r=t.children,o=r.length;--o>=0;)e=r[o],e.z+=n,e.m+=n,n+=e.s+(i+=e.c)}function Ir(t,e,n){return t.a.parent===e.parent?t.a:n}function jr(t){return 1+la.max(t,function(t){return t.y})}function Vr(t){return t.reduce(function(t,e){return t+e.x},0)/t.length}function Hr(t){var e=t.children;return e&&e.length?Hr(e[0]):t}function Fr(t){var e,n=t.children;return n&&(e=n.length)?Fr(n[e-1]):t}function zr(t){return{x:t.x,y:t.y,dx:t.dx,dy:t.dy}}function qr(t,e){var n=t.x+e[3],i=t.y+e[0],r=t.dx-e[1]-e[3],o=t.dy-e[0]-e[2];return r<0&&(n+=r/2,r=0),o<0&&(i+=o/2,o=0),{x:n,y:i,dx:r,dy:o}}function Gr(t){var e=t[0],n=t[t.length-1];return e<n?[e,n]:[n,e]}function Br(t){return t.rangeExtent?t.rangeExtent():Gr(t.range())}function $r(t,e,n,i){var r=n(t[0],t[1]),o=i(e[0],e[1]);return function(t){return o(r(t))}}function Wr(t,e){var n,i=0,r=t.length-1,o=t[i],a=t[r];return a<o&&(n=i,i=r,r=n,n=o,o=a,a=n),t[i]=e.floor(o),t[r]=e.ceil(a),t}function Ur(t){return t?{floor:function(e){return Math.floor(e/t)*t},ceil:function(e){return Math.ceil(e/t)*t}}:wl}function Xr(t,e,n,i){var r=[],o=[],a=0,s=Math.min(t.length,e.length)-1;for(t[s]<t[0]&&(t=t.slice().reverse(),e=e.slice().reverse());++a<=s;)r.push(n(t[a-1],t[a])),o.push(i(e[a-1],e[a]));return function(e){var n=la.bisect(t,e,1,s)-1;return o[n](r[n](e))}}function Yr(t,e,n,i){function r(){var r=Math.min(t.length,e.length)>2?Xr:$r,l=i?Yi:Xi;return a=r(t,e,l,n),s=r(e,t,l,xi),o}function o(t){return a(t)}var a,s;return o.invert=function(t){return s(t)},o.domain=function(e){return arguments.length?(t=e.map(Number),r()):t},o.range=function(t){return arguments.length?(e=t,r()):e},o.rangeRound=function(t){return o.range(t).interpolate(ji)},o.clamp=function(t){return arguments.length?(i=t,r()):i},o.interpolate=function(t){return arguments.length?(n=t,r()):n},o.ticks=function(e){return Jr(t,e)},o.tickFormat=function(e,n){return to(t,e,n)},o.nice=function(e){return Zr(t,e),r()},o.copy=function(){return Yr(t,e,n,i)},r()}function Qr(t,e){return la.rebind(t,e,"range","rangeRound","interpolate","clamp")}function Zr(t,e){return Wr(t,Ur(Kr(t,e)[2])),Wr(t,Ur(Kr(t,e)[2])),t}function Kr(t,e){null==e&&(e=10);var n=Gr(t),i=n[1]-n[0],r=Math.pow(10,Math.floor(Math.log(i/e)/Math.LN10)),o=e/i*r;return o<=.15?r*=10:o<=.35?r*=5:o<=.75&&(r*=2),n[0]=Math.ceil(n[0]/r)*r,n[1]=Math.floor(n[1]/r)*r+.5*r,n[2]=r,n}function Jr(t,e){return la.range.apply(la,Kr(t,e))}function to(t,e,n){var i=Kr(t,e);if(n){var r=us.exec(n);if(r.shift(),"s"===r[8]){var o=la.formatPrefix(Math.max(ya(i[0]),ya(i[1])));return r[7]||(r[7]="."+eo(o.scale(i[2]))),r[8]="f",n=la.format(r.join("")),function(t){return n(o.scale(t))+o.symbol}}r[7]||(r[7]="."+no(r[8],i)),n=r.join("")}else n=",."+eo(i[2])+"f";return la.format(n)}function eo(t){return-Math.floor(Math.log(t)/Math.LN10+.01)}function no(t,e){var n=eo(e[2]);return t in Sl?Math.abs(n-eo(Math.max(ya(e[0]),ya(e[1]))))+ +("e"!==t):n-2*("%"===t)}function io(t,e,n,i){function r(t){return(n?Math.log(t<0?0:t):-Math.log(t>0?0:-t))/Math.log(e)}function o(t){return n?Math.pow(e,t):-Math.pow(e,-t)}function a(e){return t(r(e))}return a.invert=function(e){return o(t.invert(e))},a.domain=function(e){return arguments.length?(n=e[0]>=0,t.domain((i=e.map(Number)).map(r)),a):i},a.base=function(n){return arguments.length?(e=+n,t.domain(i.map(r)),a):e},a.nice=function(){var e=Wr(i.map(r),n?Math:Tl);return t.domain(e),i=e.map(o),a},a.ticks=function(){var t=Gr(i),a=[],s=t[0],l=t[1],c=Math.floor(r(s)),u=Math.ceil(r(l)),h=e%1?2:e;if(isFinite(u-c)){if(n){for(;c<u;c++)for(var d=1;d<h;d++)a.push(o(c)*d);a.push(o(c))}else for(a.push(o(c));c++<u;)for(var d=h-1;d>0;d--)a.push(o(c)*d);for(c=0;a[c]<s;c++);for(u=a.length;a[u-1]>l;u--);a=a.slice(c,u)}return a},a.tickFormat=function(t,n){if(!arguments.length)return Cl;arguments.length<2?n=Cl:"function"!=typeof n&&(n=la.format(n));var i=Math.max(1,e*t/a.ticks().length);return function(t){var a=t/o(Math.round(r(t)));return a*e<e-.5&&(a*=e),a<=i?n(t):""}},a.copy=function(){return io(t.copy(),e,n,i)},Qr(a,t)}function ro(t,e,n){function i(e){return t(r(e))}var r=oo(e),o=oo(1/e);return i.invert=function(e){return o(t.invert(e))},i.domain=function(e){return arguments.length?(t.domain((n=e.map(Number)).map(r)),i):n},i.ticks=function(t){return Jr(n,t)},i.tickFormat=function(t,e){return to(n,t,e)},i.nice=function(t){return i.domain(Zr(n,t))},i.exponent=function(a){return arguments.length?(r=oo(e=a),o=oo(1/e),t.domain(n.map(r)),i):e},i.copy=function(){return ro(t.copy(),e,n)},Qr(i,t)}function oo(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}function ao(t,e){function n(n){return o[((r.get(n)||("range"===e.t?r.set(n,t.push(n)):NaN))-1)%o.length]}function i(e,n){return la.range(t.length).map(function(t){return e+n*t})}var r,o,a;return n.domain=function(i){if(!arguments.length)return t;t=[],r=new c;for(var o,a=-1,s=i.length;++a<s;)r.has(o=i[a])||r.set(o,t.push(o));return n[e.t].apply(n,e.a)},n.range=function(t){return arguments.length?(o=t,a=0,e={t:"range",a:arguments},n):o},n.rangePoints=function(r,s){arguments.length<2&&(s=0);var l=r[0],c=r[1],u=t.length<2?(l=(l+c)/2,0):(c-l)/(t.length-1+s);return o=i(l+u*s/2,u),a=0,e={t:"rangePoints",a:arguments},n},n.rangeRoundPoints=function(r,s){arguments.length<2&&(s=0);var l=r[0],c=r[1],u=t.length<2?(l=c=Math.round((l+c)/2),0):(c-l)/(t.length-1+s)|0;return o=i(l+Math.round(u*s/2+(c-l-(t.length-1+s)*u)/2),u),a=0,e={t:"rangeRoundPoints",a:arguments},n},n.rangeBands=function(r,s,l){arguments.length<2&&(s=0),arguments.length<3&&(l=s);var c=r[1]<r[0],u=r[c-0],h=r[1-c],d=(h-u)/(t.length-s+2*l);return o=i(u+d*l,d),c&&o.reverse(),a=d*(1-s),e={t:"rangeBands",a:arguments},n},n.rangeRoundBands=function(r,s,l){arguments.length<2&&(s=0),arguments.length<3&&(l=s);var c=r[1]<r[0],u=r[c-0],h=r[1-c],d=Math.floor((h-u)/(t.length-s+2*l));return o=i(u+Math.round((h-u-(t.length-s)*d)/2),d),c&&o.reverse(),a=Math.round(d*(1-s)),e={t:"rangeRoundBands",a:arguments},n},n.rangeBand=function(){return a},n.rangeExtent=function(){return Gr(e.a[0])},n.copy=function(){return ao(t,e)},n.domain(t)}function so(t,e){function o(){var n=0,i=e.length;for(s=[];++n<i;)s[n-1]=la.quantile(t,n/i);return a}function a(t){if(!isNaN(t=+t))return e[la.bisect(s,t)]}var s;return a.domain=function(e){return arguments.length?(t=e.map(i).filter(r).sort(n),o()):t},a.range=function(t){return arguments.length?(e=t,o()):e},a.quantiles=function(){return s},a.invertExtent=function(n){return n=e.indexOf(n),n<0?[NaN,NaN]:[n>0?s[n-1]:t[0],n<s.length?s[n]:t[t.length-1]]},a.copy=function(){return so(t,e)},o()}function lo(t,e,n){function i(e){return n[Math.max(0,Math.min(a,Math.floor(o*(e-t))))]}function r(){return o=n.length/(e-t),a=n.length-1,i}var o,a;return i.domain=function(n){return arguments.length?(t=+n[0],e=+n[n.length-1],r()):[t,e]},i.range=function(t){return arguments.length?(n=t,r()):n},i.invertExtent=function(e){return e=n.indexOf(e),e=e<0?NaN:e/o+t,[e,e+1/o]},i.copy=function(){return lo(t,e,n)},r()}function co(t,e){function n(n){if(n<=n)return e[la.bisect(t,n)]}return n.domain=function(e){return arguments.length?(t=e,n):t},n.range=function(t){return arguments.length?(e=t,n):e},n.invertExtent=function(n){return n=e.indexOf(n),[t[n-1],t[n]]},n.copy=function(){return co(t,e)},n}function uo(t){function e(t){return+t}return e.invert=e,e.domain=e.range=function(n){return arguments.length?(t=n.map(e),e):t},e.ticks=function(e){return Jr(t,e)},e.tickFormat=function(e,n){return to(t,e,n)},e.copy=function(){return uo(t)},e}function ho(){return 0}function fo(t){return t.innerRadius}function po(t){return t.outerRadius}function go(t){return t.startAngle}function mo(t){return t.endAngle}function vo(t){return t&&t.padAngle}function yo(t,e,n,i){return(t-n)*e-(e-i)*t>0?0:1}function xo(t,e,n,i,r){var o=t[0]-e[0],a=t[1]-e[1],s=(r?i:-i)/Math.sqrt(o*o+a*a),l=s*a,c=-s*o,u=t[0]+l,h=t[1]+c,d=e[0]+l,f=e[1]+c,p=(u+d)/2,g=(h+f)/2,m=d-u,v=f-h,y=m*m+v*v,x=n-i,b=u*f-d*h,_=(v<0?-1:1)*Math.sqrt(Math.max(0,x*x*y-b*b)),w=(b*v-m*_)/y,S=(-b*m-v*_)/y,C=(b*v+m*_)/y,T=(-b*m+v*_)/y,k=w-p,A=S-g,M=C-p,L=T-g;return k*k+A*A>M*M+L*L&&(w=C,S=T),[[w-l,S-c],[w*n/x,S*n/x]]}function bo(t){function e(e){function a(){c.push("M",o(t(u),s))}for(var l,c=[],u=[],h=-1,d=e.length,f=kt(n),p=kt(i);++h<d;)r.call(this,l=e[h],h)?u.push([+f.call(this,l,h),+p.call(this,l,h)]):u.length&&(a(),u=[]);return u.length&&a(),c.length?c.join(""):null}var n=Ln,i=En,r=Le,o=_o,a=o.key,s=.7;return e.x=function(t){return arguments.length?(n=t,e):n},e.y=function(t){return arguments.length?(i=t,e):i},e.defined=function(t){return arguments.length?(r=t,e):r},e.interpolate=function(t){return arguments.length?(a="function"==typeof t?o=t:(o=Pl.get(t)||_o).key,e):a},e.tension=function(t){return arguments.length?(s=t,e):s},e}function _o(t){return t.length>1?t.join("L"):t+"Z"}function wo(t){return t.join("L")+"Z"}function So(t){for(var e=0,n=t.length,i=t[0],r=[i[0],",",i[1]];++e<n;)r.push("H",(i[0]+(i=t[e])[0])/2,"V",i[1]);return n>1&&r.push("H",i[0]),r.join("")}function Co(t){for(var e=0,n=t.length,i=t[0],r=[i[0],",",i[1]];++e<n;)r.push("V",(i=t[e])[1],"H",i[0]);return r.join("")}function To(t){for(var e=0,n=t.length,i=t[0],r=[i[0],",",i[1]];++e<n;)r.push("H",(i=t[e])[0],"V",i[1]);return r.join("")}function ko(t,e){return t.length<4?_o(t):t[1]+Lo(t.slice(1,-1),Eo(t,e))}function Ao(t,e){return t.length<3?wo(t):t[0]+Lo((t.push(t[0]),t),Eo([t[t.length-2]].concat(t,[t[1]]),e))}function Mo(t,e){return t.length<3?_o(t):t[0]+Lo(t,Eo(t,e))}function Lo(t,e){if(e.length<1||t.length!=e.length&&t.length!=e.length+2)return _o(t);var n=t.length!=e.length,i="",r=t[0],o=t[1],a=e[0],s=a,l=1;if(n&&(i+="Q"+(o[0]-2*a[0]/3)+","+(o[1]-2*a[1]/3)+","+o[0]+","+o[1],r=t[1],l=2),e.length>1){s=e[1],o=t[l],l++,i+="C"+(r[0]+a[0])+","+(r[1]+a[1])+","+(o[0]-s[0])+","+(o[1]-s[1])+","+o[0]+","+o[1];for(var c=2;c<e.length;c++,l++)o=t[l],s=e[c],i+="S"+(o[0]-s[0])+","+(o[1]-s[1])+","+o[0]+","+o[1]}if(n){var u=t[l];i+="Q"+(o[0]+2*s[0]/3)+","+(o[1]+2*s[1]/3)+","+u[0]+","+u[1]}return i}function Eo(t,e){for(var n,i=[],r=(1-e)/2,o=t[0],a=t[1],s=1,l=t.length;++s<l;)n=o,o=a,a=t[s],i.push([r*(a[0]-n[0]),r*(a[1]-n[1])]);return i}function Po(t){if(t.length<3)return _o(t);var e=1,n=t.length,i=t[0],r=i[0],o=i[1],a=[r,r,r,(i=t[1])[0]],s=[o,o,o,i[1]],l=[r,",",o,"L",Do(Rl,a),",",Do(Rl,s)];for(t.push(t[n-1]);++e<=n;)i=t[e],a.shift(),a.push(i[0]),s.shift(),s.push(i[1]),Io(l,a,s);return t.pop(),l.push("L",i),l.join("")}function No(t){if(t.length<4)return _o(t);for(var e,n=[],i=-1,r=t.length,o=[0],a=[0];++i<3;)e=t[i],o.push(e[0]),a.push(e[1]);for(n.push(Do(Rl,o)+","+Do(Rl,a)),--i;++i<r;)e=t[i],o.shift(),o.push(e[0]),a.shift(),a.push(e[1]),Io(n,o,a);return n.join("")}function Oo(t){for(var e,n,i=-1,r=t.length,o=r+4,a=[],s=[];++i<4;)n=t[i%r],a.push(n[0]),s.push(n[1]);for(e=[Do(Rl,a),",",Do(Rl,s)],--i;++i<o;)n=t[i%r],a.shift(),a.push(n[0]),s.shift(),s.push(n[1]),Io(e,a,s);return e.join("")}function Ro(t,e){var n=t.length-1;if(n)for(var i,r,o=t[0][0],a=t[0][1],s=t[n][0]-o,l=t[n][1]-a,c=-1;++c<=n;)i=t[c],r=c/n,i[0]=e*i[0]+(1-e)*(o+r*s),i[1]=e*i[1]+(1-e)*(a+r*l);return Po(t)}function Do(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]+t[3]*e[3]}function Io(t,e,n){t.push("C",Do(Nl,e),",",Do(Nl,n),",",Do(Ol,e),",",Do(Ol,n),",",Do(Rl,e),",",Do(Rl,n))}function jo(t,e){return(e[1]-t[1])/(e[0]-t[0])}function Vo(t){for(var e=0,n=t.length-1,i=[],r=t[0],o=t[1],a=i[0]=jo(r,o);++e<n;)i[e]=(a+(a=jo(r=o,o=t[e+1])))/2;return i[e]=a,i}function Ho(t){for(var e,n,i,r,o=[],a=Vo(t),s=-1,l=t.length-1;++s<l;)e=jo(t[s],t[s+1]),ya(e)<Da?a[s]=a[s+1]=0:(n=a[s]/e,i=a[s+1]/e,r=n*n+i*i,r>9&&(r=3*e/Math.sqrt(r),a[s]=r*n,a[s+1]=r*i));for(s=-1;++s<=l;)r=(t[Math.min(l,s+1)][0]-t[Math.max(0,s-1)][0])/(6*(1+a[s]*a[s])),o.push([r||0,a[s]*r||0]);return o}function Fo(t){return t.length<3?_o(t):t[0]+Lo(t,Ho(t))}function zo(t){for(var e,n,i,r=-1,o=t.length;++r<o;)e=t[r],n=e[0],i=e[1]-Fa,e[0]=n*Math.cos(i),e[1]=n*Math.sin(i);return t}function qo(t){function e(e){function l(){g.push("M",s(t(v),h),u,c(t(m.reverse()),h),"Z")}for(var d,f,p,g=[],m=[],v=[],y=-1,x=e.length,b=kt(n),_=kt(r),w=n===i?function(){return f}:kt(i),S=r===o?function(){return p}:kt(o);++y<x;)a.call(this,d=e[y],y)?(m.push([f=+b.call(this,d,y),p=+_.call(this,d,y)]),v.push([+w.call(this,d,y),+S.call(this,d,y)])):m.length&&(l(),m=[],v=[]);return m.length&&l(),g.length?g.join(""):null}var n=Ln,i=Ln,r=0,o=En,a=Le,s=_o,l=s.key,c=s,u="L",h=.7;return e.x=function(t){return arguments.length?(n=i=t,e):i},e.x0=function(t){return arguments.length?(n=t,e):n},e.x1=function(t){return arguments.length?(i=t,e):i},e.y=function(t){return arguments.length?(r=o=t,e):o},e.y0=function(t){return arguments.length?(r=t,e):r},e.y1=function(t){return arguments.length?(o=t,e):o},e.defined=function(t){return arguments.length?(a=t,e):a},e.interpolate=function(t){return arguments.length?(l="function"==typeof t?s=t:(s=Pl.get(t)||_o).key,c=s.reverse||s,u=s.closed?"M":"L",e):l},e.tension=function(t){return arguments.length?(h=t,e):h},e}function Go(t){return t.radius}function Bo(t){return[t.x,t.y]}function $o(t){return function(){var e=t.apply(this,arguments),n=e[0],i=e[1]-Fa;return[n*Math.cos(i),n*Math.sin(i)]}}function Wo(){return 64}function Uo(){return"circle"}function Xo(t){var e=Math.sqrt(t/ja);return"M0,"+e+"A"+e+","+e+" 0 1,1 0,"+-e+"A"+e+","+e+" 0 1,1 0,"+e+"Z"}function Yo(t){return function(){var e,n,i;(e=this[t])&&(i=e[n=e.active])&&(i.timer.c=null,i.timer.t=NaN,--e.count?delete e[n]:delete this[t],e.active+=.5,i.event&&i.event.interrupt.call(this,this.__data__,i.index))}}function Qo(t,e,n){return Sa(t,zl),t.namespace=e,t.id=n,t}function Zo(t,e,n,i){var r=t.id,o=t.namespace;return G(t,"function"==typeof n?function(t,a,s){t[o][r].tween.set(e,i(n.call(t,t.__data__,a,s)))}:(n=i(n),function(t){t[o][r].tween.set(e,n)}))}function Ko(t){return null==t&&(t=""),function(){this.textContent=t}}function Jo(t){return null==t?"__transition__":"__transition_"+t+"__"}function ta(t,e,n,i,r){function o(t){var e=g.delay;return u.t=e+l,e<=t?a(t-e):void(u.c=a)}function a(n){var r=p.active,o=p[r];o&&(o.timer.c=null,o.timer.t=NaN,--p.count,delete p[r],o.event&&o.event.interrupt.call(t,t.__data__,o.index));for(var a in p)if(+a<i){var c=p[a];c.timer.c=null,c.timer.t=NaN,--p.count,delete p[a]}u.c=s,Pt(function(){return u.c&&s(n||1)&&(u.c=null,u.t=NaN),1},0,l),p.active=i,g.event&&g.event.start.call(t,t.__data__,e),f=[],g.tween.forEach(function(n,i){(i=i.call(t,t.__data__,e))&&f.push(i)}),d=g.ease,h=g.duration}function s(r){for(var o=r/h,a=d(o),s=f.length;s>0;)f[--s].call(t,a);if(o>=1)return g.event&&g.event.end.call(t,t.__data__,e),--p.count?delete p[i]:delete t[n],1}var l,u,h,d,f,p=t[n]||(t[n]={active:0,count:0}),g=p[i];g||(l=r.time,u=Pt(o,0,l),g=p[i]={tween:new c,time:l,timer:u,delay:r.delay,duration:r.duration,ease:r.ease,index:e},r=null,++p.count)}function ea(t,e,n){t.attr("transform",function(t){var i=e(t);return"translate("+(isFinite(i)?i:n(t))+",0)"})}function na(t,e,n){t.attr("transform",function(t){var i=e(t);return"translate(0,"+(isFinite(i)?i:n(t))+")"})}function ia(t){return t.toISOString()}function ra(t,e,n){function i(e){return t(e)}function r(t,n){var i=t[1]-t[0],r=i/n,o=la.bisect(Ql,r);return o==Ql.length?[e.year,Kr(t.map(function(t){return t/31536e6}),n)[2]]:o?e[r/Ql[o-1]<Ql[o]/r?o-1:o]:[Jl,Kr(t,n)[2]]}return i.invert=function(e){return oa(t.invert(e))},i.domain=function(e){return arguments.length?(t.domain(e),i):t.domain().map(oa)},i.nice=function(t,e){function n(n){return!isNaN(n)&&!t.range(n,oa(+n+1),e).length}var o=i.domain(),a=Gr(o),s=null==t?r(a,10):"number"==typeof t&&r(a,t);return s&&(t=s[0],e=s[1]),i.domain(Wr(o,e>1?{floor:function(e){for(;n(e=t.floor(e));)e=oa(e-1);return e},ceil:function(e){for(;n(e=t.ceil(e));)e=oa(+e+1);return e}}:t))},i.ticks=function(t,e){var n=Gr(i.domain()),o=null==t?r(n,10):"number"==typeof t?r(n,t):!t.range&&[{range:t},e];return o&&(t=o[0],e=o[1]),t.range(n[0],oa(+n[1]+1),e<1?1:e)},i.tickFormat=function(){return n},i.copy=function(){return ra(t.copy(),e,n)},Qr(i,t)}function oa(t){return new Date(t)}function aa(t){return JSON.parse(t.responseText)}function sa(t){var e=ha.createRange();return e.selectNode(ha.body),e.createContextualFragment(t.responseText)}var la={version:"3.5.17"},ca=[].slice,ua=function(t){return ca.call(t)},ha=this.document;if(ha)try{ua(ha.documentElement.childNodes)[0].nodeType}catch(t){ua=function(t){for(var e=t.length,n=new Array(e);e--;)n[e]=t[e];return n}}if(Date.now||(Date.now=function(){return+new Date}),ha)try{ha.createElement("DIV").style.setProperty("opacity",0,"")}catch(t){var da=this.Element.prototype,fa=da.setAttribute,pa=da.setAttributeNS,ga=this.CSSStyleDeclaration.prototype,ma=ga.setProperty;da.setAttribute=function(t,e){fa.call(this,t,e+"")},da.setAttributeNS=function(t,e,n){pa.call(this,t,e,n+"")},ga.setProperty=function(t,e,n){ma.call(this,t,e+"",n)}}la.ascending=n,la.descending=function(t,e){return e<t?-1:e>t?1:e>=t?0:NaN},la.min=function(t,e){var n,i,r=-1,o=t.length;if(1===arguments.length){for(;++r<o;)if(null!=(i=t[r])&&i>=i){n=i;break}for(;++r<o;)null!=(i=t[r])&&n>i&&(n=i)}else{for(;++r<o;)if(null!=(i=e.call(t,t[r],r))&&i>=i){n=i;break}for(;++r<o;)null!=(i=e.call(t,t[r],r))&&n>i&&(n=i)}return n},la.max=function(t,e){var n,i,r=-1,o=t.length;if(1===arguments.length){for(;++r<o;)if(null!=(i=t[r])&&i>=i){n=i;break}for(;++r<o;)null!=(i=t[r])&&i>n&&(n=i)}else{for(;++r<o;)if(null!=(i=e.call(t,t[r],r))&&i>=i){n=i;break}for(;++r<o;)null!=(i=e.call(t,t[r],r))&&i>n&&(n=i)}return n},la.extent=function(t,e){var n,i,r,o=-1,a=t.length;if(1===arguments.length){for(;++o<a;)if(null!=(i=t[o])&&i>=i){n=r=i;break}for(;++o<a;)null!=(i=t[o])&&(n>i&&(n=i),r<i&&(r=i))}else{for(;++o<a;)if(null!=(i=e.call(t,t[o],o))&&i>=i){n=r=i;break}for(;++o<a;)null!=(i=e.call(t,t[o],o))&&(n>i&&(n=i),r<i&&(r=i))}return[n,r]},la.sum=function(t,e){var n,i=0,o=t.length,a=-1;if(1===arguments.length)for(;++a<o;)r(n=+t[a])&&(i+=n);else for(;++a<o;)r(n=+e.call(t,t[a],a))&&(i+=n);return i},la.mean=function(t,e){var n,o=0,a=t.length,s=-1,l=a;if(1===arguments.length)for(;++s<a;)r(n=i(t[s]))?o+=n:--l;else for(;++s<a;)r(n=i(e.call(t,t[s],s)))?o+=n:--l;if(l)return o/l},la.quantile=function(t,e){var n=(t.length-1)*e+1,i=Math.floor(n),r=+t[i-1],o=n-i;return o?r+o*(t[i]-r):r},la.median=function(t,e){var o,a=[],s=t.length,l=-1;if(1===arguments.length)for(;++l<s;)r(o=i(t[l]))&&a.push(o);else for(;++l<s;)r(o=i(e.call(t,t[l],l)))&&a.push(o);if(a.length)return la.quantile(a.sort(n),.5)},la.variance=function(t,e){var n,o,a=t.length,s=0,l=0,c=-1,u=0;if(1===arguments.length)for(;++c<a;)r(n=i(t[c]))&&(o=n-s,s+=o/++u,l+=o*(n-s));else for(;++c<a;)r(n=i(e.call(t,t[c],c)))&&(o=n-s,s+=o/++u,l+=o*(n-s));if(u>1)return l/(u-1)},la.deviation=function(){var t=la.variance.apply(this,arguments);return t?Math.sqrt(t):t};var va=o(n);la.bisectLeft=va.left,la.bisect=la.bisectRight=va.right,la.bisector=function(t){return o(1===t.length?function(e,i){return n(t(e),i)}:t)},la.shuffle=function(t,e,n){(o=arguments.length)<3&&(n=t.length,o<2&&(e=0));for(var i,r,o=n-e;o;)r=Math.random()*o--|0,i=t[o+e],t[o+e]=t[r+e],t[r+e]=i;return t},la.permute=function(t,e){for(var n=e.length,i=new Array(n);n--;)i[n]=t[e[n]];return i},la.pairs=function(t){for(var e,n=0,i=t.length-1,r=t[0],o=new Array(i<0?0:i);n<i;)o[n]=[e=r,r=t[++n]];return o},la.transpose=function(t){if(!(r=t.length))return[];for(var e=-1,n=la.min(t,a),i=new Array(n);++e<n;)for(var r,o=-1,s=i[e]=new Array(r);++o<r;)s[o]=t[o][e];return i},la.zip=function(){return la.transpose(arguments)},la.keys=function(t){var e=[];for(var n in t)e.push(n);return e},la.values=function(t){var e=[];for(var n in t)e.push(t[n]);return e},la.entries=function(t){var e=[];for(var n in t)e.push({key:n,value:t[n]});return e},la.merge=function(t){for(var e,n,i,r=t.length,o=-1,a=0;++o<r;)a+=t[o].length;for(n=new Array(a);--r>=0;)for(i=t[r],e=i.length;--e>=0;)n[--a]=i[e];return n};var ya=Math.abs;la.range=function(t,e,n){if(arguments.length<3&&(n=1,arguments.length<2&&(e=t,t=0)),(e-t)/n===1/0)throw new Error("infinite range");var i,r=[],o=s(ya(n)),a=-1;if(t*=o,e*=o,n*=o,n<0)for(;(i=t+n*++a)>e;)r.push(i/o);else for(;(i=t+n*++a)<e;)r.push(i/o);return r},la.map=function(t,e){var n=new c;if(t instanceof c)t.forEach(function(t,e){n.set(t,e)});else if(Array.isArray(t)){var i,r=-1,o=t.length;if(1===arguments.length)for(;++r<o;)n.set(r,t[r]);else for(;++r<o;)n.set(e.call(t,i=t[r],r),i)}else for(var a in t)n.set(a,t[a]);return n};var xa="__proto__",ba="\0";l(c,{has:d,get:function(t){return this._[u(t)]},set:function(t,e){return this._[u(t)]=e},remove:f,keys:p,values:function(){var t=[];for(var e in this._)t.push(this._[e]);return t},entries:function(){var t=[];for(var e in this._)t.push({key:h(e),value:this._[e]});return t},size:g,empty:m,forEach:function(t){for(var e in this._)t.call(this,h(e),this._[e])}}),la.nest=function(){function t(e,a,s){if(s>=o.length)return i?i.call(r,a):n?a.sort(n):a;for(var l,u,h,d,f=-1,p=a.length,g=o[s++],m=new c;++f<p;)(d=m.get(l=g(u=a[f])))?d.push(u):m.set(l,[u]);return e?(u=e(),h=function(n,i){u.set(n,t(e,i,s))}):(u={},h=function(n,i){u[n]=t(e,i,s)}),m.forEach(h),u}function e(t,n){if(n>=o.length)return t;var i=[],r=a[n++];return t.forEach(function(t,r){i.push({key:t,values:e(r,n)})}),r?i.sort(function(t,e){return r(t.key,e.key)}):i}var n,i,r={},o=[],a=[];return r.map=function(e,n){return t(n,e,0)},r.entries=function(n){return e(t(la.map,n,0),0)},r.key=function(t){return o.push(t),r},r.sortKeys=function(t){return a[o.length-1]=t,r},r.sortValues=function(t){return n=t,r},r.rollup=function(t){return i=t,r},r},la.set=function(t){var e=new v;if(t)for(var n=0,i=t.length;n<i;++n)e.add(t[n]);return e},l(v,{has:d,
+add:function(t){return this._[u(t+="")]=!0,t},remove:f,values:p,size:g,empty:m,forEach:function(t){for(var e in this._)t.call(this,h(e))}}),la.behavior={},la.rebind=function(t,e){for(var n,i=1,r=arguments.length;++i<r;)t[n=arguments[i]]=x(t,e,e[n]);return t};var _a=["webkit","ms","moz","Moz","o","O"];la.dispatch=function(){for(var t=new w,e=-1,n=arguments.length;++e<n;)t[arguments[e]]=S(t);return t},w.prototype.on=function(t,e){var n=t.indexOf("."),i="";if(n>=0&&(i=t.slice(n+1),t=t.slice(0,n)),t)return arguments.length<2?this[t].on(i):this[t].on(i,e);if(2===arguments.length){if(null==e)for(t in this)this.hasOwnProperty(t)&&this[t].on(i,null);return this}},la.event=null,la.requote=function(t){return t.replace(wa,"\\$&")};var wa=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,Sa={}.__proto__?function(t,e){t.__proto__=e}:function(t,e){for(var n in e)t[n]=e[n]},Ca=function(t,e){return e.querySelector(t)},Ta=function(t,e){return e.querySelectorAll(t)},ka=function(t,e){var n=t.matches||t[b(t,"matchesSelector")];return(ka=function(t,e){return n.call(t,e)})(t,e)};"function"==typeof Sizzle&&(Ca=function(t,e){return Sizzle(t,e)[0]||null},Ta=Sizzle,ka=Sizzle.matchesSelector),la.selection=function(){return la.select(ha.documentElement)};var Aa=la.selection.prototype=[];Aa.select=function(t){var e,n,i,r,o=[];t=M(t);for(var a=-1,s=this.length;++a<s;){o.push(e=[]),e.parentNode=(i=this[a]).parentNode;for(var l=-1,c=i.length;++l<c;)(r=i[l])?(e.push(n=t.call(r,r.__data__,l,a)),n&&"__data__"in r&&(n.__data__=r.__data__)):e.push(null)}return A(o)},Aa.selectAll=function(t){var e,n,i=[];t=L(t);for(var r=-1,o=this.length;++r<o;)for(var a=this[r],s=-1,l=a.length;++s<l;)(n=a[s])&&(i.push(e=ua(t.call(n,n.__data__,s,r))),e.parentNode=n);return A(i)};var Ma="http://www.w3.org/1999/xhtml",La={svg:"http://www.w3.org/2000/svg",xhtml:Ma,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};la.ns={prefix:La,qualify:function(t){var e=t.indexOf(":"),n=t;return e>=0&&"xmlns"!==(n=t.slice(0,e))&&(t=t.slice(e+1)),La.hasOwnProperty(n)?{space:La[n],local:t}:t}},Aa.attr=function(t,e){if(arguments.length<2){if("string"==typeof t){var n=this.node();return t=la.ns.qualify(t),t.local?n.getAttributeNS(t.space,t.local):n.getAttribute(t)}for(e in t)this.each(E(e,t[e]));return this}return this.each(E(t,e))},Aa.classed=function(t,e){if(arguments.length<2){if("string"==typeof t){var n=this.node(),i=(t=O(t)).length,r=-1;if(e=n.classList){for(;++r<i;)if(!e.contains(t[r]))return!1}else for(e=n.getAttribute("class");++r<i;)if(!N(t[r]).test(e))return!1;return!0}for(e in t)this.each(R(e,t[e]));return this}return this.each(R(t,e))},Aa.style=function(t,n,i){var r=arguments.length;if(r<3){if("string"!=typeof t){r<2&&(n="");for(i in t)this.each(I(i,t[i],n));return this}if(r<2){var o=this.node();return e(o).getComputedStyle(o,null).getPropertyValue(t)}i=""}return this.each(I(t,n,i))},Aa.property=function(t,e){if(arguments.length<2){if("string"==typeof t)return this.node()[t];for(e in t)this.each(j(e,t[e]));return this}return this.each(j(t,e))},Aa.text=function(t){return arguments.length?this.each("function"==typeof t?function(){var e=t.apply(this,arguments);this.textContent=null==e?"":e}:null==t?function(){this.textContent=""}:function(){this.textContent=t}):this.node().textContent},Aa.html=function(t){return arguments.length?this.each("function"==typeof t?function(){var e=t.apply(this,arguments);this.innerHTML=null==e?"":e}:null==t?function(){this.innerHTML=""}:function(){this.innerHTML=t}):this.node().innerHTML},Aa.append=function(t){return t=V(t),this.select(function(){return this.appendChild(t.apply(this,arguments))})},Aa.insert=function(t,e){return t=V(t),e=M(e),this.select(function(){return this.insertBefore(t.apply(this,arguments),e.apply(this,arguments)||null)})},Aa.remove=function(){return this.each(H)},Aa.data=function(t,e){function n(t,n){var i,r,o,a=t.length,h=n.length,d=Math.min(a,h),f=new Array(h),p=new Array(h),g=new Array(a);if(e){var m,v=new c,y=new Array(a);for(i=-1;++i<a;)(r=t[i])&&(v.has(m=e.call(r,r.__data__,i))?g[i]=r:v.set(m,r),y[i]=m);for(i=-1;++i<h;)(r=v.get(m=e.call(n,o=n[i],i)))?r!==!0&&(f[i]=r,r.__data__=o):p[i]=F(o),v.set(m,!0);for(i=-1;++i<a;)i in y&&v.get(y[i])!==!0&&(g[i]=t[i])}else{for(i=-1;++i<d;)r=t[i],o=n[i],r?(r.__data__=o,f[i]=r):p[i]=F(o);for(;i<h;++i)p[i]=F(n[i]);for(;i<a;++i)g[i]=t[i]}p.update=f,p.parentNode=f.parentNode=g.parentNode=t.parentNode,s.push(p),l.push(f),u.push(g)}var i,r,o=-1,a=this.length;if(!arguments.length){for(t=new Array(a=(i=this[0]).length);++o<a;)(r=i[o])&&(t[o]=r.__data__);return t}var s=B([]),l=A([]),u=A([]);if("function"==typeof t)for(;++o<a;)n(i=this[o],t.call(i,i.parentNode.__data__,o));else for(;++o<a;)n(i=this[o],t);return l.enter=function(){return s},l.exit=function(){return u},l},Aa.datum=function(t){return arguments.length?this.property("__data__",t):this.property("__data__")},Aa.filter=function(t){var e,n,i,r=[];"function"!=typeof t&&(t=z(t));for(var o=0,a=this.length;o<a;o++){r.push(e=[]),e.parentNode=(n=this[o]).parentNode;for(var s=0,l=n.length;s<l;s++)(i=n[s])&&t.call(i,i.__data__,s,o)&&e.push(i)}return A(r)},Aa.order=function(){for(var t=-1,e=this.length;++t<e;)for(var n,i=this[t],r=i.length-1,o=i[r];--r>=0;)(n=i[r])&&(o&&o!==n.nextSibling&&o.parentNode.insertBefore(n,o),o=n);return this},Aa.sort=function(t){t=q.apply(this,arguments);for(var e=-1,n=this.length;++e<n;)this[e].sort(t);return this.order()},Aa.each=function(t){return G(this,function(e,n,i){t.call(e,e.__data__,n,i)})},Aa.call=function(t){var e=ua(arguments);return t.apply(e[0]=this,e),this},Aa.empty=function(){return!this.node()},Aa.node=function(){for(var t=0,e=this.length;t<e;t++)for(var n=this[t],i=0,r=n.length;i<r;i++){var o=n[i];if(o)return o}return null},Aa.size=function(){var t=0;return G(this,function(){++t}),t};var Ea=[];la.selection.enter=B,la.selection.enter.prototype=Ea,Ea.append=Aa.append,Ea.empty=Aa.empty,Ea.node=Aa.node,Ea.call=Aa.call,Ea.size=Aa.size,Ea.select=function(t){for(var e,n,i,r,o,a=[],s=-1,l=this.length;++s<l;){i=(r=this[s]).update,a.push(e=[]),e.parentNode=r.parentNode;for(var c=-1,u=r.length;++c<u;)(o=r[c])?(e.push(i[c]=n=t.call(r.parentNode,o.__data__,c,s)),n.__data__=o.__data__):e.push(null)}return A(a)},Ea.insert=function(t,e){return arguments.length<2&&(e=$(this)),Aa.insert.call(this,t,e)},la.select=function(e){var n;return"string"==typeof e?(n=[Ca(e,ha)],n.parentNode=ha.documentElement):(n=[e],n.parentNode=t(e)),A([n])},la.selectAll=function(t){var e;return"string"==typeof t?(e=ua(Ta(t,ha)),e.parentNode=ha.documentElement):(e=ua(t),e.parentNode=null),A([e])},Aa.on=function(t,e,n){var i=arguments.length;if(i<3){if("string"!=typeof t){i<2&&(e=!1);for(n in t)this.each(W(n,t[n],e));return this}if(i<2)return(i=this.node()["__on"+t])&&i._;n=!1}return this.each(W(t,e,n))};var Pa=la.map({mouseenter:"mouseover",mouseleave:"mouseout"});ha&&Pa.forEach(function(t){"on"+t in ha&&Pa.remove(t)});var Na,Oa=0;la.mouse=function(t){return Q(t,T())};var Ra=this.navigator&&/WebKit/.test(this.navigator.userAgent)?-1:0;la.touch=function(t,e,n){if(arguments.length<3&&(n=e,e=T().changedTouches),e)for(var i,r=0,o=e.length;r<o;++r)if((i=e[r]).identifier===n)return Q(t,i)},la.behavior.drag=function(){function t(){this.on("mousedown.drag",o).on("touchstart.drag",a)}function n(t,e,n,o,a){return function(){function s(){var t,n,i=e(d,g);i&&(t=i[0]-x[0],n=i[1]-x[1],p|=t|n,x=i,f({type:"drag",x:i[0]+c[0],y:i[1]+c[1],dx:t,dy:n}))}function l(){e(d,g)&&(v.on(o+m,null).on(a+m,null),y(p),f({type:"dragend"}))}var c,u=this,h=la.event.target.correspondingElement||la.event.target,d=u.parentNode,f=i.of(u,arguments),p=0,g=t(),m=".drag"+(null==g?"":"-"+g),v=la.select(n(h)).on(o+m,s).on(a+m,l),y=Y(h),x=e(d,g);r?(c=r.apply(u,arguments),c=[c.x-x[0],c.y-x[1]]):c=[0,0],f({type:"dragstart"})}}var i=k(t,"drag","dragstart","dragend"),r=null,o=n(_,la.mouse,e,"mousemove","mouseup"),a=n(Z,la.touch,y,"touchmove","touchend");return t.origin=function(e){return arguments.length?(r=e,t):r},la.rebind(t,i,"on")},la.touches=function(t,e){return arguments.length<2&&(e=T().touches),e?ua(e).map(function(e){var n=Q(t,e);return n.identifier=e.identifier,n}):[]};var Da=1e-6,Ia=Da*Da,ja=Math.PI,Va=2*ja,Ha=Va-Da,Fa=ja/2,za=ja/180,qa=180/ja,Ga=Math.SQRT2,Ba=2,$a=4;la.interpolateZoom=function(t,e){var n,i,r=t[0],o=t[1],a=t[2],s=e[0],l=e[1],c=e[2],u=s-r,h=l-o,d=u*u+h*h;if(d<Ia)i=Math.log(c/a)/Ga,n=function(t){return[r+t*u,o+t*h,a*Math.exp(Ga*t*i)]};else{var f=Math.sqrt(d),p=(c*c-a*a+$a*d)/(2*a*Ba*f),g=(c*c-a*a-$a*d)/(2*c*Ba*f),m=Math.log(Math.sqrt(p*p+1)-p),v=Math.log(Math.sqrt(g*g+1)-g);i=(v-m)/Ga,n=function(t){var e=t*i,n=it(m),s=a/(Ba*f)*(n*rt(Ga*e+m)-nt(m));return[r+s*u,o+s*h,a*n/it(Ga*e+m)]}}return n.duration=1e3*i,n},la.behavior.zoom=function(){function t(t){t.on(P,h).on(Ua+".zoom",f).on("dblclick.zoom",p).on(R,d)}function n(t){return[(t[0]-T.x)/T.k,(t[1]-T.y)/T.k]}function i(t){return[t[0]*T.k+T.x,t[1]*T.k+T.y]}function r(t){T.k=Math.max(M[0],Math.min(M[1],t))}function o(t,e){e=i(e),T.x+=t[0]-e[0],T.y+=t[1]-e[1]}function a(e,n,i,a){e.__chart__={x:T.x,y:T.y,k:T.k},r(Math.pow(2,a)),o(m=n,i),e=la.select(e),L>0&&(e=e.transition().duration(L)),e.call(t.event)}function s(){_&&_.domain(b.range().map(function(t){return(t-T.x)/T.k}).map(b.invert)),S&&S.domain(w.range().map(function(t){return(t-T.y)/T.k}).map(w.invert))}function l(t){E++||t({type:"zoomstart"})}function c(t){s(),t({type:"zoom",scale:T.k,translate:[T.x,T.y]})}function u(t){--E||(t({type:"zoomend"}),m=null)}function h(){function t(){s=1,o(la.mouse(r),d),c(a)}function i(){h.on(N,null).on(O,null),f(s),u(a)}var r=this,a=D.of(r,arguments),s=0,h=la.select(e(r)).on(N,t).on(O,i),d=n(la.mouse(r)),f=Y(r);Fl.call(r),l(a)}function d(){function t(){var t=la.touches(p);return f=T.k,t.forEach(function(t){t.identifier in m&&(m[t.identifier]=n(t))}),t}function e(){var e=la.event.target;la.select(e).on(b,i).on(_,s),w.push(e);for(var n=la.event.changedTouches,r=0,o=n.length;r<o;++r)m[n[r].identifier]=null;var l=t(),c=Date.now();if(1===l.length){if(c-x<500){var u=l[0];a(p,u,m[u.identifier],Math.floor(Math.log(T.k)/Math.LN2)+1),C()}x=c}else if(l.length>1){var u=l[0],h=l[1],d=u[0]-h[0],f=u[1]-h[1];v=d*d+f*f}}function i(){var t,e,n,i,a=la.touches(p);Fl.call(p);for(var s=0,l=a.length;s<l;++s,i=null)if(n=a[s],i=m[n.identifier]){if(e)break;t=n,e=i}if(i){var u=(u=n[0]-t[0])*u+(u=n[1]-t[1])*u,h=v&&Math.sqrt(u/v);t=[(t[0]+n[0])/2,(t[1]+n[1])/2],e=[(e[0]+i[0])/2,(e[1]+i[1])/2],r(h*f)}x=null,o(t,e),c(g)}function s(){if(la.event.touches.length){for(var e=la.event.changedTouches,n=0,i=e.length;n<i;++n)delete m[e[n].identifier];for(var r in m)return void t()}la.selectAll(w).on(y,null),S.on(P,h).on(R,d),k(),u(g)}var f,p=this,g=D.of(p,arguments),m={},v=0,y=".zoom-"+la.event.changedTouches[0].identifier,b="touchmove"+y,_="touchend"+y,w=[],S=la.select(p),k=Y(p);e(),l(g),S.on(P,null).on(R,e)}function f(){var t=D.of(this,arguments);y?clearTimeout(y):(Fl.call(this),g=n(m=v||la.mouse(this)),l(t)),y=setTimeout(function(){y=null,u(t)},50),C(),r(Math.pow(2,.002*Wa())*T.k),o(m,g),c(t)}function p(){var t=la.mouse(this),e=Math.log(T.k)/Math.LN2;a(this,t,n(t),la.event.shiftKey?Math.ceil(e)-1:Math.floor(e)+1)}var g,m,v,y,x,b,_,w,S,T={x:0,y:0,k:1},A=[960,500],M=Xa,L=250,E=0,P="mousedown.zoom",N="mousemove.zoom",O="mouseup.zoom",R="touchstart.zoom",D=k(t,"zoomstart","zoom","zoomend");return Ua||(Ua="onwheel"in ha?(Wa=function(){return-la.event.deltaY*(la.event.deltaMode?120:1)},"wheel"):"onmousewheel"in ha?(Wa=function(){return la.event.wheelDelta},"mousewheel"):(Wa=function(){return-la.event.detail},"MozMousePixelScroll")),t.event=function(t){t.each(function(){var t=D.of(this,arguments),e=T;Vl?la.select(this).transition().each("start.zoom",function(){T=this.__chart__||{x:0,y:0,k:1},l(t)}).tween("zoom:zoom",function(){var n=A[0],i=A[1],r=m?m[0]:n/2,o=m?m[1]:i/2,a=la.interpolateZoom([(r-T.x)/T.k,(o-T.y)/T.k,n/T.k],[(r-e.x)/e.k,(o-e.y)/e.k,n/e.k]);return function(e){var i=a(e),s=n/i[2];this.__chart__=T={x:r-i[0]*s,y:o-i[1]*s,k:s},c(t)}}).each("interrupt.zoom",function(){u(t)}).each("end.zoom",function(){u(t)}):(this.__chart__=T,l(t),c(t),u(t))})},t.translate=function(e){return arguments.length?(T={x:+e[0],y:+e[1],k:T.k},s(),t):[T.x,T.y]},t.scale=function(e){return arguments.length?(T={x:T.x,y:T.y,k:null},r(+e),s(),t):T.k},t.scaleExtent=function(e){return arguments.length?(M=null==e?Xa:[+e[0],+e[1]],t):M},t.center=function(e){return arguments.length?(v=e&&[+e[0],+e[1]],t):v},t.size=function(e){return arguments.length?(A=e&&[+e[0],+e[1]],t):A},t.duration=function(e){return arguments.length?(L=+e,t):L},t.x=function(e){return arguments.length?(_=e,b=e.copy(),T={x:0,y:0,k:1},t):_},t.y=function(e){return arguments.length?(S=e,w=e.copy(),T={x:0,y:0,k:1},t):S},la.rebind(t,D,"on")};var Wa,Ua,Xa=[0,1/0];la.color=at,at.prototype.toString=function(){return this.rgb()+""},la.hsl=st;var Ya=st.prototype=new at;Ya.brighter=function(t){return t=Math.pow(.7,arguments.length?t:1),new st(this.h,this.s,this.l/t)},Ya.darker=function(t){return t=Math.pow(.7,arguments.length?t:1),new st(this.h,this.s,t*this.l)},Ya.rgb=function(){return lt(this.h,this.s,this.l)},la.hcl=ct;var Qa=ct.prototype=new at;Qa.brighter=function(t){return new ct(this.h,this.c,Math.min(100,this.l+Za*(arguments.length?t:1)))},Qa.darker=function(t){return new ct(this.h,this.c,Math.max(0,this.l-Za*(arguments.length?t:1)))},Qa.rgb=function(){return ut(this.h,this.c,this.l).rgb()},la.lab=ht;var Za=18,Ka=.95047,Ja=1,ts=1.08883,es=ht.prototype=new at;es.brighter=function(t){return new ht(Math.min(100,this.l+Za*(arguments.length?t:1)),this.a,this.b)},es.darker=function(t){return new ht(Math.max(0,this.l-Za*(arguments.length?t:1)),this.a,this.b)},es.rgb=function(){return dt(this.l,this.a,this.b)},la.rgb=vt;var ns=vt.prototype=new at;ns.brighter=function(t){t=Math.pow(.7,arguments.length?t:1);var e=this.r,n=this.g,i=this.b,r=30;return e||n||i?(e&&e<r&&(e=r),n&&n<r&&(n=r),i&&i<r&&(i=r),new vt(Math.min(255,e/t),Math.min(255,n/t),Math.min(255,i/t))):new vt(r,r,r)},ns.darker=function(t){return t=Math.pow(.7,arguments.length?t:1),new vt(t*this.r,t*this.g,t*this.b)},ns.hsl=function(){return wt(this.r,this.g,this.b)},ns.toString=function(){return"#"+bt(this.r)+bt(this.g)+bt(this.b)};var is=la.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});is.forEach(function(t,e){is.set(t,yt(e))}),la.functor=kt,la.xhr=At(y),la.dsv=function(t,e){function n(t,n,o){arguments.length<3&&(o=n,n=null);var a=Mt(t,e,null==n?i:r(n),o);return a.row=function(t){return arguments.length?a.response(null==(n=t)?i:r(t)):n},a}function i(t){return n.parse(t.responseText)}function r(t){return function(e){return n.parse(e.responseText,t)}}function o(e){return e.map(a).join(t)}function a(t){return s.test(t)?'"'+t.replace(/\"/g,'""')+'"':t}var s=new RegExp('["'+t+"\n]"),l=t.charCodeAt(0);return n.parse=function(t,e){var i;return n.parseRows(t,function(t,n){if(i)return i(t,n-1);var r=new Function("d","return {"+t.map(function(t,e){return JSON.stringify(t)+": d["+e+"]"}).join(",")+"}");i=e?function(t,n){return e(r(t),n)}:r})},n.parseRows=function(t,e){function n(){if(u>=c)return a;if(r)return r=!1,o;var e=u;if(34===t.charCodeAt(e)){for(var n=e;n++<c;)if(34===t.charCodeAt(n)){if(34!==t.charCodeAt(n+1))break;++n}u=n+2;var i=t.charCodeAt(n+1);return 13===i?(r=!0,10===t.charCodeAt(n+2)&&++u):10===i&&(r=!0),t.slice(e+1,n).replace(/""/g,'"')}for(;u<c;){var i=t.charCodeAt(u++),s=1;if(10===i)r=!0;else if(13===i)r=!0,10===t.charCodeAt(u)&&(++u,++s);else if(i!==l)continue;return t.slice(e,u-s)}return t.slice(e)}for(var i,r,o={},a={},s=[],c=t.length,u=0,h=0;(i=n())!==a;){for(var d=[];i!==o&&i!==a;)d.push(i),i=n();e&&null==(d=e(d,h++))||s.push(d)}return s},n.format=function(e){if(Array.isArray(e[0]))return n.formatRows(e);var i=new v,r=[];return e.forEach(function(t){for(var e in t)i.has(e)||r.push(i.add(e))}),[r.map(a).join(t)].concat(e.map(function(e){return r.map(function(t){return a(e[t])}).join(t)})).join("\n")},n.formatRows=function(t){return t.map(o).join("\n")},n},la.csv=la.dsv(",","text/csv"),la.tsv=la.dsv("\t","text/tab-separated-values");var rs,os,as,ss,ls=this[b(this,"requestAnimationFrame")]||function(t){setTimeout(t,17)};la.timer=function(){Pt.apply(this,arguments)},la.timer.flush=function(){Ot(),Rt()},la.round=function(t,e){return e?Math.round(t*(e=Math.pow(10,e)))/e:Math.round(t)};var cs=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"].map(It);la.formatPrefix=function(t,e){var n=0;return(t=+t)&&(t<0&&(t*=-1),e&&(t=la.round(t,Dt(t,e))),n=1+Math.floor(1e-12+Math.log(t)/Math.LN10),n=Math.max(-24,Math.min(24,3*Math.floor((n-1)/3)))),cs[8+n/3]};var us=/(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,hs=la.map({b:function(t){return t.toString(2)},c:function(t){return String.fromCharCode(t)},o:function(t){return t.toString(8)},x:function(t){return t.toString(16)},X:function(t){return t.toString(16).toUpperCase()},g:function(t,e){return t.toPrecision(e)},e:function(t,e){return t.toExponential(e)},f:function(t,e){return t.toFixed(e)},r:function(t,e){return(t=la.round(t,Dt(t,e))).toFixed(Math.max(0,Math.min(20,Dt(t*(1+1e-15),e))))}}),ds=la.time={},fs=Date;Ht.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){ps.setUTCDate.apply(this._,arguments)},setDay:function(){ps.setUTCDay.apply(this._,arguments)},setFullYear:function(){ps.setUTCFullYear.apply(this._,arguments)},setHours:function(){ps.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){ps.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){ps.setUTCMinutes.apply(this._,arguments)},setMonth:function(){ps.setUTCMonth.apply(this._,arguments)},setSeconds:function(){ps.setUTCSeconds.apply(this._,arguments)},setTime:function(){ps.setTime.apply(this._,arguments)}};var ps=Date.prototype;ds.year=Ft(function(t){return t=ds.day(t),t.setMonth(0,1),t},function(t,e){t.setFullYear(t.getFullYear()+e)},function(t){return t.getFullYear()}),ds.years=ds.year.range,ds.years.utc=ds.year.utc.range,ds.day=Ft(function(t){var e=new fs(2e3,0);return e.setFullYear(t.getFullYear(),t.getMonth(),t.getDate()),e},function(t,e){t.setDate(t.getDate()+e)},function(t){return t.getDate()-1}),ds.days=ds.day.range,ds.days.utc=ds.day.utc.range,ds.dayOfYear=function(t){var e=ds.year(t);return Math.floor((t-e-6e4*(t.getTimezoneOffset()-e.getTimezoneOffset()))/864e5)},["sunday","monday","tuesday","wednesday","thursday","friday","saturday"].forEach(function(t,e){e=7-e;var n=ds[t]=Ft(function(t){return(t=ds.day(t)).setDate(t.getDate()-(t.getDay()+e)%7),t},function(t,e){t.setDate(t.getDate()+7*Math.floor(e))},function(t){var n=ds.year(t).getDay();return Math.floor((ds.dayOfYear(t)+(n+e)%7)/7)-(n!==e)});ds[t+"s"]=n.range,ds[t+"s"].utc=n.utc.range,ds[t+"OfYear"]=function(t){var n=ds.year(t).getDay();return Math.floor((ds.dayOfYear(t)+(n+e)%7)/7)}}),ds.week=ds.sunday,ds.weeks=ds.sunday.range,ds.weeks.utc=ds.sunday.utc.range,ds.weekOfYear=ds.sundayOfYear;var gs={"-":"",_:" ",0:"0"},ms=/^\s*\d+/,vs=/^%/;la.locale=function(t){return{numberFormat:jt(t),timeFormat:qt(t)}};var ys=la.locale({decimal:".",thousands:",",grouping:[3],currency:["$",""],dateTime:"%a %b %e %X %Y",date:"%m/%d/%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});la.format=ys.numberFormat,la.geo={},ce.prototype={s:0,t:0,add:function(t){ue(t,this.t,xs),ue(xs.s,this.s,this),this.s?this.t+=xs.t:this.s=xs.t},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var xs=new ce;la.geo.stream=function(t,e){t&&bs.hasOwnProperty(t.type)?bs[t.type](t,e):he(t,e)};var bs={Feature:function(t,e){he(t.geometry,e)},FeatureCollection:function(t,e){for(var n=t.features,i=-1,r=n.length;++i<r;)he(n[i].geometry,e)}},_s={Sphere:function(t,e){e.sphere()},Point:function(t,e){t=t.coordinates,e.point(t[0],t[1],t[2])},MultiPoint:function(t,e){for(var n=t.coordinates,i=-1,r=n.length;++i<r;)t=n[i],e.point(t[0],t[1],t[2])},LineString:function(t,e){de(t.coordinates,e,0)},MultiLineString:function(t,e){for(var n=t.coordinates,i=-1,r=n.length;++i<r;)de(n[i],e,0)},Polygon:function(t,e){fe(t.coordinates,e)},MultiPolygon:function(t,e){for(var n=t.coordinates,i=-1,r=n.length;++i<r;)fe(n[i],e)},GeometryCollection:function(t,e){for(var n=t.geometries,i=-1,r=n.length;++i<r;)he(n[i],e)}};la.geo.area=function(t){return ws=0,la.geo.stream(t,Cs),ws};var ws,Ss=new ce,Cs={sphere:function(){ws+=4*ja},point:_,lineStart:_,lineEnd:_,polygonStart:function(){Ss.reset(),Cs.lineStart=pe},polygonEnd:function(){var t=2*Ss;ws+=t<0?4*ja+t:t,Cs.lineStart=Cs.lineEnd=Cs.point=_}};la.geo.bounds=function(){function t(t,e){x.push(b=[u=t,d=t]),e<h&&(h=e),e>f&&(f=e)}function e(e,n){var i=ge([e*za,n*za]);if(v){var r=ve(v,i),o=[r[1],-r[0],0],a=ve(o,r);be(a),a=_e(a);var l=e-p,c=l>0?1:-1,g=a[0]*qa*c,m=ya(l)>180;if(m^(c*p<g&&g<c*e)){var y=a[1]*qa;y>f&&(f=y)}else if(g=(g+360)%360-180,m^(c*p<g&&g<c*e)){var y=-a[1]*qa;y<h&&(h=y)}else n<h&&(h=n),n>f&&(f=n);m?e<p?s(u,e)>s(u,d)&&(d=e):s(e,d)>s(u,d)&&(u=e):d>=u?(e<u&&(u=e),e>d&&(d=e)):e>p?s(u,e)>s(u,d)&&(d=e):s(e,d)>s(u,d)&&(u=e)}else t(e,n);v=i,p=e}function n(){_.point=e}function i(){b[0]=u,b[1]=d,_.point=t,v=null}function r(t,n){if(v){var i=t-p;y+=ya(i)>180?i+(i>0?360:-360):i}else g=t,m=n;Cs.point(t,n),e(t,n)}function o(){Cs.lineStart()}function a(){r(g,m),Cs.lineEnd(),ya(y)>Da&&(u=-(d=180)),b[0]=u,b[1]=d,v=null}function s(t,e){return(e-=t)<0?e+360:e}function l(t,e){return t[0]-e[0]}function c(t,e){return e[0]<=e[1]?e[0]<=t&&t<=e[1]:t<e[0]||e[1]<t}var u,h,d,f,p,g,m,v,y,x,b,_={point:t,lineStart:n,lineEnd:i,polygonStart:function(){_.point=r,_.lineStart=o,_.lineEnd=a,y=0,Cs.polygonStart()},polygonEnd:function(){Cs.polygonEnd(),_.point=t,_.lineStart=n,_.lineEnd=i,Ss<0?(u=-(d=180),h=-(f=90)):y>Da?f=90:y<-Da&&(h=-90),b[0]=u,b[1]=d}};return function(t){f=d=-(u=h=1/0),x=[],la.geo.stream(t,_);var e=x.length;if(e){x.sort(l);for(var n,i=1,r=x[0],o=[r];i<e;++i)n=x[i],c(n[0],r)||c(n[1],r)?(s(r[0],n[1])>s(r[0],r[1])&&(r[1]=n[1]),s(n[0],r[1])>s(r[0],r[1])&&(r[0]=n[0])):o.push(r=n);for(var a,n,p=-(1/0),e=o.length-1,i=0,r=o[e];i<=e;r=n,++i)n=o[i],(a=s(r[1],n[0]))>p&&(p=a,u=n[0],d=r[1])}return x=b=null,u===1/0||h===1/0?[[NaN,NaN],[NaN,NaN]]:[[u,h],[d,f]]}}(),la.geo.centroid=function(t){Ts=ks=As=Ms=Ls=Es=Ps=Ns=Os=Rs=Ds=0,la.geo.stream(t,Is);var e=Os,n=Rs,i=Ds,r=e*e+n*n+i*i;return r<Ia&&(e=Es,n=Ps,i=Ns,ks<Da&&(e=As,n=Ms,i=Ls),r=e*e+n*n+i*i,r<Ia)?[NaN,NaN]:[Math.atan2(n,e)*qa,et(i/Math.sqrt(r))*qa]};var Ts,ks,As,Ms,Ls,Es,Ps,Ns,Os,Rs,Ds,Is={sphere:_,point:Se,lineStart:Te,lineEnd:ke,polygonStart:function(){Is.lineStart=Ae},polygonEnd:function(){Is.lineStart=Te}},js=Oe(Le,je,He,[-ja,-ja/2]),Vs=1e9;la.geo.clipExtent=function(){var t,e,n,i,r,o,a={stream:function(t){return r&&(r.valid=!1),r=o(t),r.valid=!0,r},extent:function(s){return arguments.length?(o=Ge(t=+s[0][0],e=+s[0][1],n=+s[1][0],i=+s[1][1]),r&&(r.valid=!1,r=null),a):[[t,e],[n,i]]}};return a.extent([[0,0],[960,500]])},(la.geo.conicEqualArea=function(){return Be($e)}).raw=$e,la.geo.albers=function(){return la.geo.conicEqualArea().rotate([96,0]).center([-.6,38.7]).parallels([29.5,45.5]).scale(1070)},la.geo.albersUsa=function(){function t(t){var o=t[0],a=t[1];return e=null,n(o,a),e||(i(o,a),e)||r(o,a),e}var e,n,i,r,o=la.geo.albers(),a=la.geo.conicEqualArea().rotate([154,0]).center([-2,58.5]).parallels([55,65]),s=la.geo.conicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]),l={point:function(t,n){e=[t,n]}};return t.invert=function(t){var e=o.scale(),n=o.translate(),i=(t[0]-n[0])/e,r=(t[1]-n[1])/e;return(r>=.12&&r<.234&&i>=-.425&&i<-.214?a:r>=.166&&r<.234&&i>=-.214&&i<-.115?s:o).invert(t)},t.stream=function(t){var e=o.stream(t),n=a.stream(t),i=s.stream(t);return{point:function(t,r){e.point(t,r),n.point(t,r),i.point(t,r)},sphere:function(){e.sphere(),n.sphere(),i.sphere()},lineStart:function(){e.lineStart(),n.lineStart(),i.lineStart()},lineEnd:function(){e.lineEnd(),n.lineEnd(),i.lineEnd()},polygonStart:function(){e.polygonStart(),n.polygonStart(),i.polygonStart()},polygonEnd:function(){e.polygonEnd(),n.polygonEnd(),i.polygonEnd()}}},t.precision=function(e){return arguments.length?(o.precision(e),a.precision(e),s.precision(e),t):o.precision()},t.scale=function(e){return arguments.length?(o.scale(e),a.scale(.35*e),s.scale(e),t.translate(o.translate())):o.scale()},t.translate=function(e){if(!arguments.length)return o.translate();var c=o.scale(),u=+e[0],h=+e[1];return n=o.translate(e).clipExtent([[u-.455*c,h-.238*c],[u+.455*c,h+.238*c]]).stream(l).point,i=a.translate([u-.307*c,h+.201*c]).clipExtent([[u-.425*c+Da,h+.12*c+Da],[u-.214*c-Da,h+.234*c-Da]]).stream(l).point,r=s.translate([u-.205*c,h+.212*c]).clipExtent([[u-.214*c+Da,h+.166*c+Da],[u-.115*c-Da,h+.234*c-Da]]).stream(l).point,t},t.scale(1070)};var Hs,Fs,zs,qs,Gs,Bs,$s={point:_,lineStart:_,lineEnd:_,polygonStart:function(){Fs=0,$s.lineStart=We},polygonEnd:function(){$s.lineStart=$s.lineEnd=$s.point=_,Hs+=ya(Fs/2)}},Ws={point:Ue,lineStart:_,lineEnd:_,polygonStart:_,polygonEnd:_},Us={point:Qe,lineStart:Ze,lineEnd:Ke,polygonStart:function(){Us.lineStart=Je},polygonEnd:function(){Us.point=Qe,Us.lineStart=Ze,Us.lineEnd=Ke}};la.geo.path=function(){function t(t){return t&&("function"==typeof s&&o.pointRadius(+s.apply(this,arguments)),a&&a.valid||(a=r(o)),la.geo.stream(t,a)),o.result()}function e(){return a=null,t}var n,i,r,o,a,s=4.5;return t.area=function(t){return Hs=0,la.geo.stream(t,r($s)),Hs},t.centroid=function(t){return As=Ms=Ls=Es=Ps=Ns=Os=Rs=Ds=0,la.geo.stream(t,r(Us)),Ds?[Os/Ds,Rs/Ds]:Ns?[Es/Ns,Ps/Ns]:Ls?[As/Ls,Ms/Ls]:[NaN,NaN]},t.bounds=function(t){return Gs=Bs=-(zs=qs=1/0),la.geo.stream(t,r(Ws)),[[zs,qs],[Gs,Bs]]},t.projection=function(t){return arguments.length?(r=(n=t)?t.stream||nn(t):y,e()):n},t.context=function(t){return arguments.length?(o=null==(i=t)?new Xe:new tn(t),"function"!=typeof s&&o.pointRadius(s),e()):i},t.pointRadius=function(e){return arguments.length?(s="function"==typeof e?e:(o.pointRadius(+e),+e),t):s},t.projection(la.geo.albersUsa()).context(null)},la.geo.transform=function(t){return{stream:function(e){var n=new rn(e);for(var i in t)n[i]=t[i];return n}}},rn.prototype={point:function(t,e){this.stream.point(t,e)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}},la.geo.projection=an,la.geo.projectionMutator=sn,(la.geo.equirectangular=function(){return an(cn)}).raw=cn.invert=cn,la.geo.rotation=function(t){function e(e){return e=t(e[0]*za,e[1]*za),e[0]*=qa,e[1]*=qa,e}return t=hn(t[0]%360*za,t[1]*za,t.length>2?t[2]*za:0),e.invert=function(e){return e=t.invert(e[0]*za,e[1]*za),e[0]*=qa,e[1]*=qa,e},e},un.invert=cn,la.geo.circle=function(){function t(){var t="function"==typeof i?i.apply(this,arguments):i,e=hn(-t[0]*za,-t[1]*za,0).invert,r=[];return n(null,null,1,{point:function(t,n){r.push(t=e(t,n)),t[0]*=qa,t[1]*=qa}}),{type:"Polygon",coordinates:[r]}}var e,n,i=[0,0],r=6;return t.origin=function(e){return arguments.length?(i=e,t):i},t.angle=function(i){return arguments.length?(n=gn((e=+i)*za,r*za),t):e},t.precision=function(i){return arguments.length?(n=gn(e*za,(r=+i)*za),t):r},t.angle(90)},la.geo.distance=function(t,e){var n,i=(e[0]-t[0])*za,r=t[1]*za,o=e[1]*za,a=Math.sin(i),s=Math.cos(i),l=Math.sin(r),c=Math.cos(r),u=Math.sin(o),h=Math.cos(o);return Math.atan2(Math.sqrt((n=h*a)*n+(n=c*u-l*h*s)*n),l*u+c*h*s)},la.geo.graticule=function(){function t(){return{type:"MultiLineString",coordinates:e()}}function e(){return la.range(Math.ceil(o/m)*m,r,m).map(d).concat(la.range(Math.ceil(c/v)*v,l,v).map(f)).concat(la.range(Math.ceil(i/p)*p,n,p).filter(function(t){return ya(t%m)>Da}).map(u)).concat(la.range(Math.ceil(s/g)*g,a,g).filter(function(t){return ya(t%v)>Da}).map(h))}var n,i,r,o,a,s,l,c,u,h,d,f,p=10,g=p,m=90,v=360,y=2.5;return t.lines=function(){return e().map(function(t){return{type:"LineString",coordinates:t}})},t.outline=function(){return{type:"Polygon",coordinates:[d(o).concat(f(l).slice(1),d(r).reverse().slice(1),f(c).reverse().slice(1))]}},t.extent=function(e){return arguments.length?t.majorExtent(e).minorExtent(e):t.minorExtent()},t.majorExtent=function(e){return arguments.length?(o=+e[0][0],r=+e[1][0],c=+e[0][1],l=+e[1][1],o>r&&(e=o,o=r,r=e),c>l&&(e=c,c=l,l=e),t.precision(y)):[[o,c],[r,l]]},t.minorExtent=function(e){return arguments.length?(i=+e[0][0],n=+e[1][0],s=+e[0][1],a=+e[1][1],i>n&&(e=i,i=n,n=e),s>a&&(e=s,s=a,a=e),t.precision(y)):[[i,s],[n,a]];
+},t.step=function(e){return arguments.length?t.majorStep(e).minorStep(e):t.minorStep()},t.majorStep=function(e){return arguments.length?(m=+e[0],v=+e[1],t):[m,v]},t.minorStep=function(e){return arguments.length?(p=+e[0],g=+e[1],t):[p,g]},t.precision=function(e){return arguments.length?(y=+e,u=vn(s,a,90),h=yn(i,n,y),d=vn(c,l,90),f=yn(o,r,y),t):y},t.majorExtent([[-180,-90+Da],[180,90-Da]]).minorExtent([[-180,-80-Da],[180,80+Da]])},la.geo.greatArc=function(){function t(){return{type:"LineString",coordinates:[e||i.apply(this,arguments),n||r.apply(this,arguments)]}}var e,n,i=xn,r=bn;return t.distance=function(){return la.geo.distance(e||i.apply(this,arguments),n||r.apply(this,arguments))},t.source=function(n){return arguments.length?(i=n,e="function"==typeof n?null:n,t):i},t.target=function(e){return arguments.length?(r=e,n="function"==typeof e?null:e,t):r},t.precision=function(){return arguments.length?t:0},t},la.geo.interpolate=function(t,e){return _n(t[0]*za,t[1]*za,e[0]*za,e[1]*za)},la.geo.length=function(t){return Xs=0,la.geo.stream(t,Ys),Xs};var Xs,Ys={sphere:_,point:_,lineStart:wn,lineEnd:_,polygonStart:_,polygonEnd:_},Qs=Sn(function(t){return Math.sqrt(2/(1+t))},function(t){return 2*Math.asin(t/2)});(la.geo.azimuthalEqualArea=function(){return an(Qs)}).raw=Qs;var Zs=Sn(function(t){var e=Math.acos(t);return e&&e/Math.sin(e)},y);(la.geo.azimuthalEquidistant=function(){return an(Zs)}).raw=Zs,(la.geo.conicConformal=function(){return Be(Cn)}).raw=Cn,(la.geo.conicEquidistant=function(){return Be(Tn)}).raw=Tn;var Ks=Sn(function(t){return 1/t},Math.atan);(la.geo.gnomonic=function(){return an(Ks)}).raw=Ks,kn.invert=function(t,e){return[t,2*Math.atan(Math.exp(e))-Fa]},(la.geo.mercator=function(){return An(kn)}).raw=kn;var Js=Sn(function(){return 1},Math.asin);(la.geo.orthographic=function(){return an(Js)}).raw=Js;var tl=Sn(function(t){return 1/(1+t)},function(t){return 2*Math.atan(t)});(la.geo.stereographic=function(){return an(tl)}).raw=tl,Mn.invert=function(t,e){return[-e,2*Math.atan(Math.exp(t))-Fa]},(la.geo.transverseMercator=function(){var t=An(Mn),e=t.center,n=t.rotate;return t.center=function(t){return t?e([-t[1],t[0]]):(t=e(),[t[1],-t[0]])},t.rotate=function(t){return t?n([t[0],t[1],t.length>2?t[2]+90:90]):(t=n(),[t[0],t[1],t[2]-90])},n([0,0,90])}).raw=Mn,la.geom={},la.geom.hull=function(t){function e(t){if(t.length<3)return[];var e,r=kt(n),o=kt(i),a=t.length,s=[],l=[];for(e=0;e<a;e++)s.push([+r.call(this,t[e],e),+o.call(this,t[e],e),e]);for(s.sort(Nn),e=0;e<a;e++)l.push([s[e][0],-s[e][1]]);var c=Pn(s),u=Pn(l),h=u[0]===c[0],d=u[u.length-1]===c[c.length-1],f=[];for(e=c.length-1;e>=0;--e)f.push(t[s[c[e]][2]]);for(e=+h;e<u.length-d;++e)f.push(t[s[u[e]][2]]);return f}var n=Ln,i=En;return arguments.length?e(t):(e.x=function(t){return arguments.length?(n=t,e):n},e.y=function(t){return arguments.length?(i=t,e):i},e)},la.geom.polygon=function(t){return Sa(t,el),t};var el=la.geom.polygon.prototype=[];el.area=function(){for(var t,e=-1,n=this.length,i=this[n-1],r=0;++e<n;)t=i,i=this[e],r+=t[1]*i[0]-t[0]*i[1];return.5*r},el.centroid=function(t){var e,n,i=-1,r=this.length,o=0,a=0,s=this[r-1];for(arguments.length||(t=-1/(6*this.area()));++i<r;)e=s,s=this[i],n=e[0]*s[1]-s[0]*e[1],o+=(e[0]+s[0])*n,a+=(e[1]+s[1])*n;return[o*t,a*t]},el.clip=function(t){for(var e,n,i,r,o,a,s=Dn(t),l=-1,c=this.length-Dn(this),u=this[c-1];++l<c;){for(e=t.slice(),t.length=0,r=this[l],o=e[(i=e.length-s)-1],n=-1;++n<i;)a=e[n],On(a,u,r)?(On(o,u,r)||t.push(Rn(o,a,u,r)),t.push(a)):On(o,u,r)&&t.push(Rn(o,a,u,r)),o=a;s&&t.push(t[0]),u=r}return t};var nl,il,rl,ol,al,sl=[],ll=[];Gn.prototype.prepare=function(){for(var t,e=this.edges,n=e.length;n--;)t=e[n].edge,t.b&&t.a||e.splice(n,1);return e.sort($n),e.length},ei.prototype={start:function(){return this.edge.l===this.site?this.edge.a:this.edge.b},end:function(){return this.edge.l===this.site?this.edge.b:this.edge.a}},ni.prototype={insert:function(t,e){var n,i,r;if(t){if(e.P=t,e.N=t.N,t.N&&(t.N.P=e),t.N=e,t.R){for(t=t.R;t.L;)t=t.L;t.L=e}else t.R=e;n=t}else this._?(t=ai(this._),e.P=null,e.N=t,t.P=t.L=e,n=t):(e.P=e.N=null,this._=e,n=null);for(e.L=e.R=null,e.U=n,e.C=!0,t=e;n&&n.C;)i=n.U,n===i.L?(r=i.R,r&&r.C?(n.C=r.C=!1,i.C=!0,t=i):(t===n.R&&(ri(this,n),t=n,n=t.U),n.C=!1,i.C=!0,oi(this,i))):(r=i.L,r&&r.C?(n.C=r.C=!1,i.C=!0,t=i):(t===n.L&&(oi(this,n),t=n,n=t.U),n.C=!1,i.C=!0,ri(this,i))),n=t.U;this._.C=!1},remove:function(t){t.N&&(t.N.P=t.P),t.P&&(t.P.N=t.N),t.N=t.P=null;var e,n,i,r=t.U,o=t.L,a=t.R;if(n=o?a?ai(a):o:a,r?r.L===t?r.L=n:r.R=n:this._=n,o&&a?(i=n.C,n.C=t.C,n.L=o,o.U=n,n!==a?(r=n.U,n.U=t.U,t=n.R,r.L=t,n.R=a,a.U=n):(n.U=r,r=n,t=n.R)):(i=t.C,t=n),t&&(t.U=r),!i){if(t&&t.C)return void(t.C=!1);do{if(t===this._)break;if(t===r.L){if(e=r.R,e.C&&(e.C=!1,r.C=!0,ri(this,r),e=r.R),e.L&&e.L.C||e.R&&e.R.C){e.R&&e.R.C||(e.L.C=!1,e.C=!0,oi(this,e),e=r.R),e.C=r.C,r.C=e.R.C=!1,ri(this,r),t=this._;break}}else if(e=r.L,e.C&&(e.C=!1,r.C=!0,oi(this,r),e=r.L),e.L&&e.L.C||e.R&&e.R.C){e.L&&e.L.C||(e.R.C=!1,e.C=!0,ri(this,e),e=r.L),e.C=r.C,r.C=e.L.C=!1,oi(this,r),t=this._;break}e.C=!0,t=r,r=r.U}while(!t.C);t&&(t.C=!1)}}},la.geom.voronoi=function(t){function e(t){var e=new Array(t.length),i=s[0][0],r=s[0][1],o=s[1][0],a=s[1][1];return si(n(t),s).cells.forEach(function(n,s){var l=n.edges,c=n.site,u=e[s]=l.length?l.map(function(t){var e=t.start();return[e.x,e.y]}):c.x>=i&&c.x<=o&&c.y>=r&&c.y<=a?[[i,a],[o,a],[o,r],[i,r]]:[];u.point=t[s]}),e}function n(t){return t.map(function(t,e){return{x:Math.round(o(t,e)/Da)*Da,y:Math.round(a(t,e)/Da)*Da,i:e}})}var i=Ln,r=En,o=i,a=r,s=cl;return t?e(t):(e.links=function(t){return si(n(t)).edges.filter(function(t){return t.l&&t.r}).map(function(e){return{source:t[e.l.i],target:t[e.r.i]}})},e.triangles=function(t){var e=[];return si(n(t)).cells.forEach(function(n,i){for(var r,o,a=n.site,s=n.edges.sort($n),l=-1,c=s.length,u=s[c-1].edge,h=u.l===a?u.r:u.l;++l<c;)r=u,o=h,u=s[l].edge,h=u.l===a?u.r:u.l,i<o.i&&i<h.i&&ci(a,o,h)<0&&e.push([t[i],t[o.i],t[h.i]])}),e},e.x=function(t){return arguments.length?(o=kt(i=t),e):i},e.y=function(t){return arguments.length?(a=kt(r=t),e):r},e.clipExtent=function(t){return arguments.length?(s=null==t?cl:t,e):s===cl?null:s},e.size=function(t){return arguments.length?e.clipExtent(t&&[[0,0],t]):s===cl?null:s&&s[1]},e)};var cl=[[-1e6,-1e6],[1e6,1e6]];la.geom.delaunay=function(t){return la.geom.voronoi().triangles(t)},la.geom.quadtree=function(t,e,n,i,r){function o(t){function o(t,e,n,i,r,o,a,s){if(!isNaN(n)&&!isNaN(i))if(t.leaf){var l=t.x,u=t.y;if(null!=l)if(ya(l-n)+ya(u-i)<.01)c(t,e,n,i,r,o,a,s);else{var h=t.point;t.x=t.y=t.point=null,c(t,h,l,u,r,o,a,s),c(t,e,n,i,r,o,a,s)}else t.x=n,t.y=i,t.point=e}else c(t,e,n,i,r,o,a,s)}function c(t,e,n,i,r,a,s,l){var c=.5*(r+s),u=.5*(a+l),h=n>=c,d=i>=u,f=d<<1|h;t.leaf=!1,t=t.nodes[f]||(t.nodes[f]=di()),h?r=c:s=c,d?a=u:l=u,o(t,e,n,i,r,a,s,l)}var u,h,d,f,p,g,m,v,y,x=kt(s),b=kt(l);if(null!=e)g=e,m=n,v=i,y=r;else if(v=y=-(g=m=1/0),h=[],d=[],p=t.length,a)for(f=0;f<p;++f)u=t[f],u.x<g&&(g=u.x),u.y<m&&(m=u.y),u.x>v&&(v=u.x),u.y>y&&(y=u.y),h.push(u.x),d.push(u.y);else for(f=0;f<p;++f){var _=+x(u=t[f],f),w=+b(u,f);_<g&&(g=_),w<m&&(m=w),_>v&&(v=_),w>y&&(y=w),h.push(_),d.push(w)}var S=v-g,C=y-m;S>C?y=m+S:v=g+C;var T=di();if(T.add=function(t){o(T,t,+x(t,++f),+b(t,f),g,m,v,y)},T.visit=function(t){fi(t,T,g,m,v,y)},T.find=function(t){return pi(T,t[0],t[1],g,m,v,y)},f=-1,null==e){for(;++f<p;)o(T,t[f],h[f],d[f],g,m,v,y);--f}else t.forEach(T.add);return h=d=t=u=null,T}var a,s=Ln,l=En;return(a=arguments.length)?(s=ui,l=hi,3===a&&(r=n,i=e,n=e=0),o(t)):(o.x=function(t){return arguments.length?(s=t,o):s},o.y=function(t){return arguments.length?(l=t,o):l},o.extent=function(t){return arguments.length?(null==t?e=n=i=r=null:(e=+t[0][0],n=+t[0][1],i=+t[1][0],r=+t[1][1]),o):null==e?null:[[e,n],[i,r]]},o.size=function(t){return arguments.length?(null==t?e=n=i=r=null:(e=n=0,i=+t[0],r=+t[1]),o):null==e?null:[i-e,r-n]},o)},la.interpolateRgb=gi,la.interpolateObject=mi,la.interpolateNumber=vi,la.interpolateString=yi;var ul=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,hl=new RegExp(ul.source,"g");la.interpolate=xi,la.interpolators=[function(t,e){var n=typeof e;return("string"===n?is.has(e.toLowerCase())||/^(#|rgb\(|hsl\()/i.test(e)?gi:yi:e instanceof at?gi:Array.isArray(e)?bi:"object"===n&&isNaN(e)?mi:vi)(t,e)}],la.interpolateArray=bi;var dl=function(){return y},fl=la.map({linear:dl,poly:Ai,quad:function(){return Ci},cubic:function(){return Ti},sin:function(){return Mi},exp:function(){return Li},circle:function(){return Ei},elastic:Pi,back:Ni,bounce:function(){return Oi}}),pl=la.map({in:y,out:wi,"in-out":Si,"out-in":function(t){return Si(wi(t))}});la.ease=function(t){var e=t.indexOf("-"),n=e>=0?t.slice(0,e):t,i=e>=0?t.slice(e+1):"in";return n=fl.get(n)||dl,i=pl.get(i)||y,_i(i(n.apply(null,ca.call(arguments,1))))},la.interpolateHcl=Ri,la.interpolateHsl=Di,la.interpolateLab=Ii,la.interpolateRound=ji,la.transform=function(t){var e=ha.createElementNS(la.ns.prefix.svg,"g");return(la.transform=function(t){if(null!=t){e.setAttribute("transform",t);var n=e.transform.baseVal.consolidate()}return new Vi(n?n.matrix:gl)})(t)},Vi.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var gl={a:1,b:0,c:0,d:1,e:0,f:0};la.interpolateTransform=Ui,la.layout={},la.layout.bundle=function(){return function(t){for(var e=[],n=-1,i=t.length;++n<i;)e.push(Qi(t[n]));return e}},la.layout.chord=function(){function t(){var t,c,h,d,f,p={},g=[],m=la.range(o),v=[];for(n=[],i=[],t=0,d=-1;++d<o;){for(c=0,f=-1;++f<o;)c+=r[d][f];g.push(c),v.push(la.range(o)),t+=c}for(a&&m.sort(function(t,e){return a(g[t],g[e])}),s&&v.forEach(function(t,e){t.sort(function(t,n){return s(r[e][t],r[e][n])})}),t=(Va-u*o)/t,c=0,d=-1;++d<o;){for(h=c,f=-1;++f<o;){var y=m[d],x=v[y][f],b=r[y][x],_=c,w=c+=b*t;p[y+"-"+x]={index:y,subindex:x,startAngle:_,endAngle:w,value:b}}i[y]={index:y,startAngle:h,endAngle:c,value:g[y]},c+=u}for(d=-1;++d<o;)for(f=d-1;++f<o;){var S=p[d+"-"+f],C=p[f+"-"+d];(S.value||C.value)&&n.push(S.value<C.value?{source:C,target:S}:{source:S,target:C})}l&&e()}function e(){n.sort(function(t,e){return l((t.source.value+t.target.value)/2,(e.source.value+e.target.value)/2)})}var n,i,r,o,a,s,l,c={},u=0;return c.matrix=function(t){return arguments.length?(o=(r=t)&&r.length,n=i=null,c):r},c.padding=function(t){return arguments.length?(u=t,n=i=null,c):u},c.sortGroups=function(t){return arguments.length?(a=t,n=i=null,c):a},c.sortSubgroups=function(t){return arguments.length?(s=t,n=null,c):s},c.sortChords=function(t){return arguments.length?(l=t,n&&e(),c):l},c.chords=function(){return n||t(),n},c.groups=function(){return i||t(),i},c},la.layout.force=function(){function t(t){return function(e,n,i,r){if(e.point!==t){var o=e.cx-t.x,a=e.cy-t.y,s=r-n,l=o*o+a*a;if(s*s/v<l){if(l<g){var c=e.charge/l;t.px-=o*c,t.py-=a*c}return!0}if(e.point&&l&&l<g){var c=e.pointCharge/l;t.px-=o*c,t.py-=a*c}}return!e.charge}}function e(t){t.px=la.event.x,t.py=la.event.y,l.resume()}var n,i,r,o,a,s,l={},c=la.dispatch("start","tick","end"),u=[1,1],h=.9,d=ml,f=vl,p=-30,g=yl,m=.1,v=.64,x=[],b=[];return l.tick=function(){if((r*=.99)<.005)return n=null,c.end({type:"end",alpha:r=0}),!0;var e,i,l,d,f,g,v,y,_,w=x.length,S=b.length;for(i=0;i<S;++i)l=b[i],d=l.source,f=l.target,y=f.x-d.x,_=f.y-d.y,(g=y*y+_*_)&&(g=r*a[i]*((g=Math.sqrt(g))-o[i])/g,y*=g,_*=g,f.x-=y*(v=d.weight+f.weight?d.weight/(d.weight+f.weight):.5),f.y-=_*v,d.x+=y*(v=1-v),d.y+=_*v);if((v=r*m)&&(y=u[0]/2,_=u[1]/2,i=-1,v))for(;++i<w;)l=x[i],l.x+=(y-l.x)*v,l.y+=(_-l.y)*v;if(p)for(ir(e=la.geom.quadtree(x),r,s),i=-1;++i<w;)(l=x[i]).fixed||e.visit(t(l));for(i=-1;++i<w;)l=x[i],l.fixed?(l.x=l.px,l.y=l.py):(l.x-=(l.px-(l.px=l.x))*h,l.y-=(l.py-(l.py=l.y))*h);c.tick({type:"tick",alpha:r})},l.nodes=function(t){return arguments.length?(x=t,l):x},l.links=function(t){return arguments.length?(b=t,l):b},l.size=function(t){return arguments.length?(u=t,l):u},l.linkDistance=function(t){return arguments.length?(d="function"==typeof t?t:+t,l):d},l.distance=l.linkDistance,l.linkStrength=function(t){return arguments.length?(f="function"==typeof t?t:+t,l):f},l.friction=function(t){return arguments.length?(h=+t,l):h},l.charge=function(t){return arguments.length?(p="function"==typeof t?t:+t,l):p},l.chargeDistance=function(t){return arguments.length?(g=t*t,l):Math.sqrt(g)},l.gravity=function(t){return arguments.length?(m=+t,l):m},l.theta=function(t){return arguments.length?(v=t*t,l):Math.sqrt(v)},l.alpha=function(t){return arguments.length?(t=+t,r?t>0?r=t:(n.c=null,n.t=NaN,n=null,c.end({type:"end",alpha:r=0})):t>0&&(c.start({type:"start",alpha:r=t}),n=Pt(l.tick)),l):r},l.start=function(){function t(t,i){if(!n){for(n=new Array(r),l=0;l<r;++l)n[l]=[];for(l=0;l<c;++l){var o=b[l];n[o.source.index].push(o.target),n[o.target.index].push(o.source)}}for(var a,s=n[e],l=-1,u=s.length;++l<u;)if(!isNaN(a=s[l][t]))return a;return Math.random()*i}var e,n,i,r=x.length,c=b.length,h=u[0],g=u[1];for(e=0;e<r;++e)(i=x[e]).index=e,i.weight=0;for(e=0;e<c;++e)i=b[e],"number"==typeof i.source&&(i.source=x[i.source]),"number"==typeof i.target&&(i.target=x[i.target]),++i.source.weight,++i.target.weight;for(e=0;e<r;++e)i=x[e],isNaN(i.x)&&(i.x=t("x",h)),isNaN(i.y)&&(i.y=t("y",g)),isNaN(i.px)&&(i.px=i.x),isNaN(i.py)&&(i.py=i.y);if(o=[],"function"==typeof d)for(e=0;e<c;++e)o[e]=+d.call(this,b[e],e);else for(e=0;e<c;++e)o[e]=d;if(a=[],"function"==typeof f)for(e=0;e<c;++e)a[e]=+f.call(this,b[e],e);else for(e=0;e<c;++e)a[e]=f;if(s=[],"function"==typeof p)for(e=0;e<r;++e)s[e]=+p.call(this,x[e],e);else for(e=0;e<r;++e)s[e]=p;return l.resume()},l.resume=function(){return l.alpha(.1)},l.stop=function(){return l.alpha(0)},l.drag=function(){return i||(i=la.behavior.drag().origin(y).on("dragstart.force",Ji).on("drag.force",e).on("dragend.force",tr)),arguments.length?void this.on("mouseover.force",er).on("mouseout.force",nr).call(i):i},la.rebind(l,c,"on")};var ml=20,vl=1,yl=1/0;la.layout.hierarchy=function(){function t(r){var o,a=[r],s=[];for(r.depth=0;null!=(o=a.pop());)if(s.push(o),(c=n.call(t,o,o.depth))&&(l=c.length)){for(var l,c,u;--l>=0;)a.push(u=c[l]),u.parent=o,u.depth=o.depth+1;i&&(o.value=0),o.children=c}else i&&(o.value=+i.call(t,o,o.depth)||0),delete o.children;return ar(r,function(t){var n,r;e&&(n=t.children)&&n.sort(e),i&&(r=t.parent)&&(r.value+=t.value)}),s}var e=cr,n=sr,i=lr;return t.sort=function(n){return arguments.length?(e=n,t):e},t.children=function(e){return arguments.length?(n=e,t):n},t.value=function(e){return arguments.length?(i=e,t):i},t.revalue=function(e){return i&&(or(e,function(t){t.children&&(t.value=0)}),ar(e,function(e){var n;e.children||(e.value=+i.call(t,e,e.depth)||0),(n=e.parent)&&(n.value+=e.value)})),e},t},la.layout.partition=function(){function t(e,n,i,r){var o=e.children;if(e.x=n,e.y=e.depth*r,e.dx=i,e.dy=r,o&&(a=o.length)){var a,s,l,c=-1;for(i=e.value?i/e.value:0;++c<a;)t(s=o[c],n,l=s.value*i,r),n+=l}}function e(t){var n=t.children,i=0;if(n&&(r=n.length))for(var r,o=-1;++o<r;)i=Math.max(i,e(n[o]));return 1+i}function n(n,o){var a=i.call(this,n,o);return t(a[0],0,r[0],r[1]/e(a[0])),a}var i=la.layout.hierarchy(),r=[1,1];return n.size=function(t){return arguments.length?(r=t,n):r},rr(n,i)},la.layout.pie=function(){function t(a){var s,l=a.length,c=a.map(function(n,i){return+e.call(t,n,i)}),u=+("function"==typeof i?i.apply(this,arguments):i),h=("function"==typeof r?r.apply(this,arguments):r)-u,d=Math.min(Math.abs(h)/l,+("function"==typeof o?o.apply(this,arguments):o)),f=d*(h<0?-1:1),p=la.sum(c),g=p?(h-l*f)/p:0,m=la.range(l),v=[];return null!=n&&m.sort(n===xl?function(t,e){return c[e]-c[t]}:function(t,e){return n(a[t],a[e])}),m.forEach(function(t){v[t]={data:a[t],value:s=c[t],startAngle:u,endAngle:u+=s*g+f,padAngle:d}}),v}var e=Number,n=xl,i=0,r=Va,o=0;return t.value=function(n){return arguments.length?(e=n,t):e},t.sort=function(e){return arguments.length?(n=e,t):n},t.startAngle=function(e){return arguments.length?(i=e,t):i},t.endAngle=function(e){return arguments.length?(r=e,t):r},t.padAngle=function(e){return arguments.length?(o=e,t):o},t};var xl={};la.layout.stack=function(){function t(s,l){if(!(d=s.length))return s;var c=s.map(function(n,i){return e.call(t,n,i)}),u=c.map(function(e){return e.map(function(e,n){return[o.call(t,e,n),a.call(t,e,n)]})}),h=n.call(t,u,l);c=la.permute(c,h),u=la.permute(u,h);var d,f,p,g,m=i.call(t,u,l),v=c[0].length;for(p=0;p<v;++p)for(r.call(t,c[0][p],g=m[p],u[0][p][1]),f=1;f<d;++f)r.call(t,c[f][p],g+=u[f-1][p][1],u[f][p][1]);return s}var e=y,n=pr,i=gr,r=fr,o=hr,a=dr;return t.values=function(n){return arguments.length?(e=n,t):e},t.order=function(e){return arguments.length?(n="function"==typeof e?e:bl.get(e)||pr,t):n},t.offset=function(e){return arguments.length?(i="function"==typeof e?e:_l.get(e)||gr,t):i},t.x=function(e){return arguments.length?(o=e,t):o},t.y=function(e){return arguments.length?(a=e,t):a},t.out=function(e){return arguments.length?(r=e,t):r},t};var bl=la.map({"inside-out":function(t){var e,n,i=t.length,r=t.map(mr),o=t.map(vr),a=la.range(i).sort(function(t,e){return r[t]-r[e]}),s=0,l=0,c=[],u=[];for(e=0;e<i;++e)n=a[e],s<l?(s+=o[n],c.push(n)):(l+=o[n],u.push(n));return u.reverse().concat(c)},reverse:function(t){return la.range(t.length).reverse()},default:pr}),_l=la.map({silhouette:function(t){var e,n,i,r=t.length,o=t[0].length,a=[],s=0,l=[];for(n=0;n<o;++n){for(e=0,i=0;e<r;e++)i+=t[e][n][1];i>s&&(s=i),a.push(i)}for(n=0;n<o;++n)l[n]=(s-a[n])/2;return l},wiggle:function(t){var e,n,i,r,o,a,s,l,c,u=t.length,h=t[0],d=h.length,f=[];for(f[0]=l=c=0,n=1;n<d;++n){for(e=0,r=0;e<u;++e)r+=t[e][n][1];for(e=0,o=0,s=h[n][0]-h[n-1][0];e<u;++e){for(i=0,a=(t[e][n][1]-t[e][n-1][1])/(2*s);i<e;++i)a+=(t[i][n][1]-t[i][n-1][1])/s;o+=a*t[e][n][1]}f[n]=l-=r?o/r*s:0,l<c&&(c=l)}for(n=0;n<d;++n)f[n]-=c;return f},expand:function(t){var e,n,i,r=t.length,o=t[0].length,a=1/r,s=[];for(n=0;n<o;++n){for(e=0,i=0;e<r;e++)i+=t[e][n][1];if(i)for(e=0;e<r;e++)t[e][n][1]/=i;else for(e=0;e<r;e++)t[e][n][1]=a}for(n=0;n<o;++n)s[n]=0;return s},zero:gr});la.layout.histogram=function(){function t(t,o){for(var a,s,l=[],c=t.map(n,this),u=i.call(this,c,o),h=r.call(this,u,c,o),o=-1,d=c.length,f=h.length-1,p=e?1:1/d;++o<f;)a=l[o]=[],a.dx=h[o+1]-(a.x=h[o]),a.y=0;if(f>0)for(o=-1;++o<d;)s=c[o],s>=u[0]&&s<=u[1]&&(a=l[la.bisect(h,s,1,f)-1],a.y+=p,a.push(t[o]));return l}var e=!0,n=Number,i=_r,r=xr;return t.value=function(e){return arguments.length?(n=e,t):n},t.range=function(e){return arguments.length?(i=kt(e),t):i},t.bins=function(e){return arguments.length?(r="number"==typeof e?function(t){return br(t,e)}:kt(e),t):r},t.frequency=function(n){return arguments.length?(e=!!n,t):e},t},la.layout.pack=function(){function t(t,o){var a=n.call(this,t,o),s=a[0],l=r[0],c=r[1],u=null==e?Math.sqrt:"function"==typeof e?e:function(){return e};if(s.x=s.y=0,ar(s,function(t){t.r=+u(t.value)}),ar(s,kr),i){var h=i*(e?1:Math.max(2*s.r/l,2*s.r/c))/2;ar(s,function(t){t.r+=h}),ar(s,kr),ar(s,function(t){t.r-=h})}return Lr(s,l/2,c/2,e?1:1/Math.max(2*s.r/l,2*s.r/c)),a}var e,n=la.layout.hierarchy().sort(wr),i=0,r=[1,1];return t.size=function(e){return arguments.length?(r=e,t):r},t.radius=function(n){return arguments.length?(e=null==n||"function"==typeof n?n:+n,t):e},t.padding=function(e){return arguments.length?(i=+e,t):i},rr(t,n)},la.layout.tree=function(){function t(t,r){var u=a.call(this,t,r),h=u[0],d=e(h);if(ar(d,n),d.parent.m=-d.z,or(d,i),c)or(h,o);else{var f=h,p=h,g=h;or(h,function(t){t.x<f.x&&(f=t),t.x>p.x&&(p=t),t.depth>g.depth&&(g=t)});var m=s(f,p)/2-f.x,v=l[0]/(p.x+s(p,f)/2+m),y=l[1]/(g.depth||1);or(h,function(t){t.x=(t.x+m)*v,t.y=t.depth*y})}return u}function e(t){for(var e,n={A:null,children:[t]},i=[n];null!=(e=i.pop());)for(var r,o=e.children,a=0,s=o.length;a<s;++a)i.push((o[a]=r={_:o[a],parent:e,children:(r=o[a].children)&&r.slice()||[],A:null,a:null,z:0,m:0,c:0,s:0,t:null,i:a}).a=r);return n.children[0]}function n(t){var e=t.children,n=t.parent.children,i=t.i?n[t.i-1]:null;if(e.length){Dr(t);var o=(e[0].z+e[e.length-1].z)/2;i?(t.z=i.z+s(t._,i._),t.m=t.z-o):t.z=o}else i&&(t.z=i.z+s(t._,i._));t.parent.A=r(t,i,t.parent.A||n[0])}function i(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function r(t,e,n){if(e){for(var i,r=t,o=t,a=e,l=r.parent.children[0],c=r.m,u=o.m,h=a.m,d=l.m;a=Or(a),r=Nr(r),a&&r;)l=Nr(l),o=Or(o),o.a=t,i=a.z+h-r.z-c+s(a._,r._),i>0&&(Rr(Ir(a,t,n),t,i),c+=i,u+=i),h+=a.m,c+=r.m,d+=l.m,u+=o.m;a&&!Or(o)&&(o.t=a,o.m+=h-u),r&&!Nr(l)&&(l.t=r,l.m+=c-d,n=t)}return n}function o(t){t.x*=l[0],t.y=t.depth*l[1]}var a=la.layout.hierarchy().sort(null).value(null),s=Pr,l=[1,1],c=null;return t.separation=function(e){return arguments.length?(s=e,t):s},t.size=function(e){return arguments.length?(c=null==(l=e)?o:null,t):c?null:l},t.nodeSize=function(e){return arguments.length?(c=null==(l=e)?null:o,t):c?l:null},rr(t,a)},la.layout.cluster=function(){function t(t,o){var a,s=e.call(this,t,o),l=s[0],c=0;ar(l,function(t){var e=t.children;e&&e.length?(t.x=Vr(e),t.y=jr(e)):(t.x=a?c+=n(t,a):0,t.y=0,a=t)});var u=Hr(l),h=Fr(l),d=u.x-n(u,h)/2,f=h.x+n(h,u)/2;return ar(l,r?function(t){t.x=(t.x-l.x)*i[0],t.y=(l.y-t.y)*i[1]}:function(t){t.x=(t.x-d)/(f-d)*i[0],t.y=(1-(l.y?t.y/l.y:1))*i[1]}),s}var e=la.layout.hierarchy().sort(null).value(null),n=Pr,i=[1,1],r=!1;return t.separation=function(e){return arguments.length?(n=e,t):n},t.size=function(e){return arguments.length?(r=null==(i=e),t):r?null:i},t.nodeSize=function(e){return arguments.length?(r=null!=(i=e),t):r?i:null},rr(t,e)},la.layout.treemap=function(){function t(t,e){for(var n,i,r=-1,o=t.length;++r<o;)i=(n=t[r]).value*(e<0?0:e),n.area=isNaN(i)||i<=0?0:i}function e(n){var o=n.children;if(o&&o.length){var a,s,l,c=h(n),u=[],d=o.slice(),p=1/0,g="slice"===f?c.dx:"dice"===f?c.dy:"slice-dice"===f?1&n.depth?c.dy:c.dx:Math.min(c.dx,c.dy);for(t(d,c.dx*c.dy/n.value),u.area=0;(l=d.length)>0;)u.push(a=d[l-1]),u.area+=a.area,"squarify"!==f||(s=i(u,g))<=p?(d.pop(),p=s):(u.area-=u.pop().area,r(u,g,c,!1),g=Math.min(c.dx,c.dy),u.length=u.area=0,p=1/0);u.length&&(r(u,g,c,!0),u.length=u.area=0),o.forEach(e)}}function n(e){var i=e.children;if(i&&i.length){var o,a=h(e),s=i.slice(),l=[];for(t(s,a.dx*a.dy/e.value),l.area=0;o=s.pop();)l.push(o),l.area+=o.area,null!=o.z&&(r(l,o.z?a.dx:a.dy,a,!s.length),l.length=l.area=0);i.forEach(n)}}function i(t,e){for(var n,i=t.area,r=0,o=1/0,a=-1,s=t.length;++a<s;)(n=t[a].area)&&(n<o&&(o=n),n>r&&(r=n));return i*=i,e*=e,i?Math.max(e*r*p/i,i/(e*o*p)):1/0}function r(t,e,n,i){var r,o=-1,a=t.length,s=n.x,c=n.y,u=e?l(t.area/e):0;if(e==n.dx){for((i||u>n.dy)&&(u=n.dy);++o<a;)r=t[o],r.x=s,r.y=c,r.dy=u,s+=r.dx=Math.min(n.x+n.dx-s,u?l(r.area/u):0);r.z=!0,r.dx+=n.x+n.dx-s,n.y+=u,n.dy-=u}else{for((i||u>n.dx)&&(u=n.dx);++o<a;)r=t[o],r.x=s,r.y=c,r.dx=u,c+=r.dy=Math.min(n.y+n.dy-c,u?l(r.area/u):0);r.z=!1,r.dy+=n.y+n.dy-c,n.x+=u,n.dx-=u}}function o(i){var r=a||s(i),o=r[0];return o.x=o.y=0,o.value?(o.dx=c[0],o.dy=c[1]):o.dx=o.dy=0,a&&s.revalue(o),t([o],o.dx*o.dy/o.value),(a?n:e)(o),d&&(a=r),r}var a,s=la.layout.hierarchy(),l=Math.round,c=[1,1],u=null,h=zr,d=!1,f="squarify",p=.5*(1+Math.sqrt(5));return o.size=function(t){return arguments.length?(c=t,o):c},o.padding=function(t){function e(e){var n=t.call(o,e,e.depth);return null==n?zr(e):qr(e,"number"==typeof n?[n,n,n,n]:n)}function n(e){return qr(e,t)}if(!arguments.length)return u;var i;return h=null==(u=t)?zr:"function"==(i=typeof t)?e:"number"===i?(t=[t,t,t,t],n):n,o},o.round=function(t){return arguments.length?(l=t?Math.round:Number,o):l!=Number},o.sticky=function(t){return arguments.length?(d=t,a=null,o):d},o.ratio=function(t){return arguments.length?(p=t,o):p},o.mode=function(t){return arguments.length?(f=t+"",o):f},rr(o,s)},la.random={normal:function(t,e){var n=arguments.length;return n<2&&(e=1),n<1&&(t=0),function(){var n,i,r;do n=2*Math.random()-1,i=2*Math.random()-1,r=n*n+i*i;while(!r||r>1);return t+e*n*Math.sqrt(-2*Math.log(r)/r)}},logNormal:function(){var t=la.random.normal.apply(la,arguments);return function(){return Math.exp(t())}},bates:function(t){var e=la.random.irwinHall(t);return function(){return e()/t}},irwinHall:function(t){return function(){for(var e=0,n=0;n<t;n++)e+=Math.random();return e}}},la.scale={};var wl={floor:y,ceil:y};la.scale.linear=function(){return Yr([0,1],[0,1],xi,!1)};var Sl={s:1,g:1,p:1,r:1,e:1};la.scale.log=function(){return io(la.scale.linear().domain([0,1]),10,!0,[1,10])};var Cl=la.format(".0e"),Tl={floor:function(t){return-Math.ceil(-t)},ceil:function(t){return-Math.floor(-t)}};la.scale.pow=function(){return ro(la.scale.linear(),1,[0,1])},la.scale.sqrt=function(){return la.scale.pow().exponent(.5)},la.scale.ordinal=function(){return ao([],{t:"range",a:[[]]})},la.scale.category10=function(){return la.scale.ordinal().range(kl)},la.scale.category20=function(){return la.scale.ordinal().range(Al)},la.scale.category20b=function(){return la.scale.ordinal().range(Ml)},la.scale.category20c=function(){return la.scale.ordinal().range(Ll)};var kl=[2062260,16744206,2924588,14034728,9725885,9197131,14907330,8355711,12369186,1556175].map(xt),Al=[2062260,11454440,16744206,16759672,2924588,10018698,14034728,16750742,9725885,12955861,9197131,12885140,14907330,16234194,8355711,13092807,12369186,14408589,1556175,10410725].map(xt),Ml=[3750777,5395619,7040719,10264286,6519097,9216594,11915115,13556636,9202993,12426809,15186514,15190932,8666169,11356490,14049643,15177372,8077683,10834324,13528509,14589654].map(xt),Ll=[3244733,7057110,10406625,13032431,15095053,16616764,16625259,16634018,3253076,7652470,10607003,13101504,7695281,10394312,12369372,14342891,6513507,9868950,12434877,14277081].map(xt);la.scale.quantile=function(){return so([],[])},la.scale.quantize=function(){return lo(0,1,[0,1])},la.scale.threshold=function(){return co([.5],[0,1])},la.scale.identity=function(){return uo([0,1])},la.svg={},la.svg.arc=function(){function t(){var t=Math.max(0,+n.apply(this,arguments)),c=Math.max(0,+i.apply(this,arguments)),u=a.apply(this,arguments)-Fa,h=s.apply(this,arguments)-Fa,d=Math.abs(h-u),f=u>h?0:1;if(c<t&&(p=c,c=t,t=p),d>=Ha)return e(c,f)+(t?e(t,1-f):"")+"Z";var p,g,m,v,y,x,b,_,w,S,C,T,k=0,A=0,M=[];if((v=(+l.apply(this,arguments)||0)/2)&&(m=o===El?Math.sqrt(t*t+c*c):+o.apply(this,arguments),f||(A*=-1),c&&(A=et(m/c*Math.sin(v))),t&&(k=et(m/t*Math.sin(v)))),c){y=c*Math.cos(u+A),x=c*Math.sin(u+A),b=c*Math.cos(h-A),_=c*Math.sin(h-A);var L=Math.abs(h-u-2*A)<=ja?0:1;if(A&&yo(y,x,b,_)===f^L){var E=(u+h)/2;y=c*Math.cos(E),x=c*Math.sin(E),b=_=null}}else y=x=0;if(t){w=t*Math.cos(h-k),S=t*Math.sin(h-k),C=t*Math.cos(u+k),T=t*Math.sin(u+k);var P=Math.abs(u-h+2*k)<=ja?0:1;if(k&&yo(w,S,C,T)===1-f^P){var N=(u+h)/2;w=t*Math.cos(N),S=t*Math.sin(N),C=T=null}}else w=S=0;if(d>Da&&(p=Math.min(Math.abs(c-t)/2,+r.apply(this,arguments)))>.001){g=t<c^f?0:1;var O=p,R=p;if(d<ja){var D=null==C?[w,S]:null==b?[y,x]:Rn([y,x],[C,T],[b,_],[w,S]),I=y-D[0],j=x-D[1],V=b-D[0],H=_-D[1],F=1/Math.sin(Math.acos((I*V+j*H)/(Math.sqrt(I*I+j*j)*Math.sqrt(V*V+H*H)))/2),z=Math.sqrt(D[0]*D[0]+D[1]*D[1]);R=Math.min(p,(t-z)/(F-1)),O=Math.min(p,(c-z)/(F+1))}if(null!=b){var q=xo(null==C?[w,S]:[C,T],[y,x],c,O,f),G=xo([b,_],[w,S],c,O,f);p===O?M.push("M",q[0],"A",O,",",O," 0 0,",g," ",q[1],"A",c,",",c," 0 ",1-f^yo(q[1][0],q[1][1],G[1][0],G[1][1]),",",f," ",G[1],"A",O,",",O," 0 0,",g," ",G[0]):M.push("M",q[0],"A",O,",",O," 0 1,",g," ",G[0])}else M.push("M",y,",",x);if(null!=C){var B=xo([y,x],[C,T],t,-R,f),$=xo([w,S],null==b?[y,x]:[b,_],t,-R,f);p===R?M.push("L",$[0],"A",R,",",R," 0 0,",g," ",$[1],"A",t,",",t," 0 ",f^yo($[1][0],$[1][1],B[1][0],B[1][1]),",",1-f," ",B[1],"A",R,",",R," 0 0,",g," ",B[0]):M.push("L",$[0],"A",R,",",R," 0 0,",g," ",B[0])}else M.push("L",w,",",S)}else M.push("M",y,",",x),null!=b&&M.push("A",c,",",c," 0 ",L,",",f," ",b,",",_),M.push("L",w,",",S),null!=C&&M.push("A",t,",",t," 0 ",P,",",1-f," ",C,",",T);return M.push("Z"),M.join("")}function e(t,e){return"M0,"+t+"A"+t+","+t+" 0 1,"+e+" 0,"+-t+"A"+t+","+t+" 0 1,"+e+" 0,"+t}var n=fo,i=po,r=ho,o=El,a=go,s=mo,l=vo;return t.innerRadius=function(e){return arguments.length?(n=kt(e),t):n},t.outerRadius=function(e){return arguments.length?(i=kt(e),t):i},t.cornerRadius=function(e){return arguments.length?(r=kt(e),t):r},t.padRadius=function(e){return arguments.length?(o=e==El?El:kt(e),t):o},t.startAngle=function(e){return arguments.length?(a=kt(e),t):a},t.endAngle=function(e){return arguments.length?(s=kt(e),t):s},t.padAngle=function(e){return arguments.length?(l=kt(e),t):l},t.centroid=function(){var t=(+n.apply(this,arguments)+ +i.apply(this,arguments))/2,e=(+a.apply(this,arguments)+ +s.apply(this,arguments))/2-Fa;return[Math.cos(e)*t,Math.sin(e)*t]},t};var El="auto";la.svg.line=function(){return bo(y)};var Pl=la.map({linear:_o,"linear-closed":wo,step:So,"step-before":Co,"step-after":To,basis:Po,"basis-open":No,"basis-closed":Oo,bundle:Ro,cardinal:Mo,"cardinal-open":ko,"cardinal-closed":Ao,monotone:Fo});Pl.forEach(function(t,e){e.key=t,e.closed=/-closed$/.test(t)});var Nl=[0,2/3,1/3,0],Ol=[0,1/3,2/3,0],Rl=[0,1/6,2/3,1/6];la.svg.line.radial=function(){var t=bo(zo);return t.radius=t.x,delete t.x,t.angle=t.y,delete t.y,t},Co.reverse=To,To.reverse=Co,la.svg.area=function(){return qo(y)},la.svg.area.radial=function(){var t=qo(zo);return t.radius=t.x,delete t.x,t.innerRadius=t.x0,delete t.x0,t.outerRadius=t.x1,delete t.x1,t.angle=t.y,delete t.y,t.startAngle=t.y0,delete t.y0,t.endAngle=t.y1,delete t.y1,t},la.svg.chord=function(){function t(t,s){var l=e(this,o,t,s),c=e(this,a,t,s);return"M"+l.p0+i(l.r,l.p1,l.a1-l.a0)+(n(l,c)?r(l.r,l.p1,l.r,l.p0):r(l.r,l.p1,c.r,c.p0)+i(c.r,c.p1,c.a1-c.a0)+r(c.r,c.p1,l.r,l.p0))+"Z"}function e(t,e,n,i){var r=e.call(t,n,i),o=s.call(t,r,i),a=l.call(t,r,i)-Fa,u=c.call(t,r,i)-Fa;return{r:o,a0:a,a1:u,p0:[o*Math.cos(a),o*Math.sin(a)],p1:[o*Math.cos(u),o*Math.sin(u)]}}function n(t,e){return t.a0==e.a0&&t.a1==e.a1}function i(t,e,n){return"A"+t+","+t+" 0 "+ +(n>ja)+",1 "+e}function r(t,e,n,i){return"Q 0,0 "+i}var o=xn,a=bn,s=Go,l=go,c=mo;return t.radius=function(e){return arguments.length?(s=kt(e),t):s},t.source=function(e){return arguments.length?(o=kt(e),t):o},t.target=function(e){return arguments.length?(a=kt(e),t):a},t.startAngle=function(e){return arguments.length?(l=kt(e),t):l},t.endAngle=function(e){return arguments.length?(c=kt(e),t):c},t},la.svg.diagonal=function(){function t(t,r){var o=e.call(this,t,r),a=n.call(this,t,r),s=(o.y+a.y)/2,l=[o,{x:o.x,y:s},{x:a.x,y:s},a];return l=l.map(i),"M"+l[0]+"C"+l[1]+" "+l[2]+" "+l[3]}var e=xn,n=bn,i=Bo;return t.source=function(n){return arguments.length?(e=kt(n),t):e},t.target=function(e){return arguments.length?(n=kt(e),t):n},t.projection=function(e){return arguments.length?(i=e,t):i},t},la.svg.diagonal.radial=function(){var t=la.svg.diagonal(),e=Bo,n=t.projection;return t.projection=function(t){return arguments.length?n($o(e=t)):e},t},la.svg.symbol=function(){function t(t,i){return(Dl.get(e.call(this,t,i))||Xo)(n.call(this,t,i))}var e=Uo,n=Wo;return t.type=function(n){return arguments.length?(e=kt(n),t):e},t.size=function(e){return arguments.length?(n=kt(e),t):n},t};var Dl=la.map({circle:Xo,cross:function(t){var e=Math.sqrt(t/5)/2;return"M"+-3*e+","+-e+"H"+-e+"V"+-3*e+"H"+e+"V"+-e+"H"+3*e+"V"+e+"H"+e+"V"+3*e+"H"+-e+"V"+e+"H"+-3*e+"Z"},diamond:function(t){var e=Math.sqrt(t/(2*jl)),n=e*jl;return"M0,"+-e+"L"+n+",0 0,"+e+" "+-n+",0Z"},square:function(t){var e=Math.sqrt(t)/2;return"M"+-e+","+-e+"L"+e+","+-e+" "+e+","+e+" "+-e+","+e+"Z"},"triangle-down":function(t){var e=Math.sqrt(t/Il),n=e*Il/2;return"M0,"+n+"L"+e+","+-n+" "+-e+","+-n+"Z"},"triangle-up":function(t){var e=Math.sqrt(t/Il),n=e*Il/2;return"M0,"+-n+"L"+e+","+n+" "+-e+","+n+"Z"}});la.svg.symbolTypes=Dl.keys();var Il=Math.sqrt(3),jl=Math.tan(30*za);Aa.transition=function(t){for(var e,n,i=Vl||++ql,r=Jo(t),o=[],a=Hl||{time:Date.now(),ease:ki,delay:0,duration:250},s=-1,l=this.length;++s<l;){o.push(e=[]);for(var c=this[s],u=-1,h=c.length;++u<h;)(n=c[u])&&ta(n,u,r,i,a),e.push(n)}return Qo(o,r,i)},Aa.interrupt=function(t){return this.each(null==t?Fl:Yo(Jo(t)));
+};var Vl,Hl,Fl=Yo(Jo()),zl=[],ql=0;zl.call=Aa.call,zl.empty=Aa.empty,zl.node=Aa.node,zl.size=Aa.size,la.transition=function(t,e){return t&&t.transition?Vl?t.transition(e):t:la.selection().transition(t)},la.transition.prototype=zl,zl.select=function(t){var e,n,i,r=this.id,o=this.namespace,a=[];t=M(t);for(var s=-1,l=this.length;++s<l;){a.push(e=[]);for(var c=this[s],u=-1,h=c.length;++u<h;)(i=c[u])&&(n=t.call(i,i.__data__,u,s))?("__data__"in i&&(n.__data__=i.__data__),ta(n,u,o,r,i[o][r]),e.push(n)):e.push(null)}return Qo(a,o,r)},zl.selectAll=function(t){var e,n,i,r,o,a=this.id,s=this.namespace,l=[];t=L(t);for(var c=-1,u=this.length;++c<u;)for(var h=this[c],d=-1,f=h.length;++d<f;)if(i=h[d]){o=i[s][a],n=t.call(i,i.__data__,d,c),l.push(e=[]);for(var p=-1,g=n.length;++p<g;)(r=n[p])&&ta(r,p,s,a,o),e.push(r)}return Qo(l,s,a)},zl.filter=function(t){var e,n,i,r=[];"function"!=typeof t&&(t=z(t));for(var o=0,a=this.length;o<a;o++){r.push(e=[]);for(var n=this[o],s=0,l=n.length;s<l;s++)(i=n[s])&&t.call(i,i.__data__,s,o)&&e.push(i)}return Qo(r,this.namespace,this.id)},zl.tween=function(t,e){var n=this.id,i=this.namespace;return arguments.length<2?this.node()[i][n].tween.get(t):G(this,null==e?function(e){e[i][n].tween.remove(t)}:function(r){r[i][n].tween.set(t,e)})},zl.attr=function(t,e){function n(){this.removeAttribute(s)}function i(){this.removeAttributeNS(s.space,s.local)}function r(t){return null==t?n:(t+="",function(){var e,n=this.getAttribute(s);return n!==t&&(e=a(n,t),function(t){this.setAttribute(s,e(t))})})}function o(t){return null==t?i:(t+="",function(){var e,n=this.getAttributeNS(s.space,s.local);return n!==t&&(e=a(n,t),function(t){this.setAttributeNS(s.space,s.local,e(t))})})}if(arguments.length<2){for(e in t)this.attr(e,t[e]);return this}var a="transform"==t?Ui:xi,s=la.ns.qualify(t);return Zo(this,"attr."+t,e,s.local?o:r)},zl.attrTween=function(t,e){function n(t,n){var i=e.call(this,t,n,this.getAttribute(r));return i&&function(t){this.setAttribute(r,i(t))}}function i(t,n){var i=e.call(this,t,n,this.getAttributeNS(r.space,r.local));return i&&function(t){this.setAttributeNS(r.space,r.local,i(t))}}var r=la.ns.qualify(t);return this.tween("attr."+t,r.local?i:n)},zl.style=function(t,n,i){function r(){this.style.removeProperty(t)}function o(n){return null==n?r:(n+="",function(){var r,o=e(this).getComputedStyle(this,null).getPropertyValue(t);return o!==n&&(r=xi(o,n),function(e){this.style.setProperty(t,r(e),i)})})}var a=arguments.length;if(a<3){if("string"!=typeof t){a<2&&(n="");for(i in t)this.style(i,t[i],n);return this}i=""}return Zo(this,"style."+t,n,o)},zl.styleTween=function(t,n,i){function r(r,o){var a=n.call(this,r,o,e(this).getComputedStyle(this,null).getPropertyValue(t));return a&&function(e){this.style.setProperty(t,a(e),i)}}return arguments.length<3&&(i=""),this.tween("style."+t,r)},zl.text=function(t){return Zo(this,"text",t,Ko)},zl.remove=function(){var t=this.namespace;return this.each("end.transition",function(){var e;this[t].count<2&&(e=this.parentNode)&&e.removeChild(this)})},zl.ease=function(t){var e=this.id,n=this.namespace;return arguments.length<1?this.node()[n][e].ease:("function"!=typeof t&&(t=la.ease.apply(la,arguments)),G(this,function(i){i[n][e].ease=t}))},zl.delay=function(t){var e=this.id,n=this.namespace;return arguments.length<1?this.node()[n][e].delay:G(this,"function"==typeof t?function(i,r,o){i[n][e].delay=+t.call(i,i.__data__,r,o)}:(t=+t,function(i){i[n][e].delay=t}))},zl.duration=function(t){var e=this.id,n=this.namespace;return arguments.length<1?this.node()[n][e].duration:G(this,"function"==typeof t?function(i,r,o){i[n][e].duration=Math.max(1,t.call(i,i.__data__,r,o))}:(t=Math.max(1,t),function(i){i[n][e].duration=t}))},zl.each=function(t,e){var n=this.id,i=this.namespace;if(arguments.length<2){var r=Hl,o=Vl;try{Vl=n,G(this,function(e,r,o){Hl=e[i][n],t.call(e,e.__data__,r,o)})}finally{Hl=r,Vl=o}}else G(this,function(r){var o=r[i][n];(o.event||(o.event=la.dispatch("start","end","interrupt"))).on(t,e)});return this},zl.transition=function(){for(var t,e,n,i,r=this.id,o=++ql,a=this.namespace,s=[],l=0,c=this.length;l<c;l++){s.push(t=[]);for(var e=this[l],u=0,h=e.length;u<h;u++)(n=e[u])&&(i=n[a][r],ta(n,u,a,o,{time:i.time,ease:i.ease,delay:i.delay+i.duration,duration:i.duration})),t.push(n)}return Qo(s,a,o)},la.svg.axis=function(){function t(t){t.each(function(){var t,c=la.select(this),u=this.__chart__||n,h=this.__chart__=n.copy(),d=null==l?h.ticks?h.ticks.apply(h,s):h.domain():l,f=null==e?h.tickFormat?h.tickFormat.apply(h,s):y:e,p=c.selectAll(".tick").data(d,h),g=p.enter().insert("g",".domain").attr("class","tick").style("opacity",Da),m=la.transition(p.exit()).style("opacity",Da).remove(),v=la.transition(p.order()).style("opacity",1),x=Math.max(r,0)+a,b=Br(h),_=c.selectAll(".domain").data([0]),w=(_.enter().append("path").attr("class","domain"),la.transition(_));g.append("line"),g.append("text");var S,C,T,k,A=g.select("line"),M=v.select("line"),L=p.select("text").text(f),E=g.select("text"),P=v.select("text"),N="top"===i||"left"===i?-1:1;if("bottom"===i||"top"===i?(t=ea,S="x",T="y",C="x2",k="y2",L.attr("dy",N<0?"0em":".71em").style("text-anchor","middle"),w.attr("d","M"+b[0]+","+N*o+"V0H"+b[1]+"V"+N*o)):(t=na,S="y",T="x",C="y2",k="x2",L.attr("dy",".32em").style("text-anchor",N<0?"end":"start"),w.attr("d","M"+N*o+","+b[0]+"H0V"+b[1]+"H"+N*o)),A.attr(k,N*r),E.attr(T,N*x),M.attr(C,0).attr(k,N*r),P.attr(S,0).attr(T,N*x),h.rangeBand){var O=h,R=O.rangeBand()/2;u=h=function(t){return O(t)+R}}else u.rangeBand?u=h:m.call(t,h,u);g.call(t,u,h),v.call(t,h,h)})}var e,n=la.scale.linear(),i=Gl,r=6,o=6,a=3,s=[10],l=null;return t.scale=function(e){return arguments.length?(n=e,t):n},t.orient=function(e){return arguments.length?(i=e in Bl?e+"":Gl,t):i},t.ticks=function(){return arguments.length?(s=ua(arguments),t):s},t.tickValues=function(e){return arguments.length?(l=e,t):l},t.tickFormat=function(n){return arguments.length?(e=n,t):e},t.tickSize=function(e){var n=arguments.length;return n?(r=+e,o=+arguments[n-1],t):r},t.innerTickSize=function(e){return arguments.length?(r=+e,t):r},t.outerTickSize=function(e){return arguments.length?(o=+e,t):o},t.tickPadding=function(e){return arguments.length?(a=+e,t):a},t.tickSubdivide=function(){return arguments.length&&t},t};var Gl="bottom",Bl={top:1,right:1,bottom:1,left:1};la.svg.brush=function(){function t(e){e.each(function(){var e=la.select(this).style("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush",o).on("touchstart.brush",o),a=e.selectAll(".background").data([0]);a.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),e.selectAll(".extent").data([0]).enter().append("rect").attr("class","extent").style("cursor","move");var s=e.selectAll(".resize").data(g,y);s.exit().remove(),s.enter().append("g").attr("class",function(t){return"resize "+t}).style("cursor",function(t){return $l[t]}).append("rect").attr("x",function(t){return/[ew]$/.test(t)?-3:null}).attr("y",function(t){return/^[ns]/.test(t)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),s.style("display",t.empty()?"none":null);var l,h=la.transition(e),d=la.transition(a);c&&(l=Br(c),d.attr("x",l[0]).attr("width",l[1]-l[0]),i(h)),u&&(l=Br(u),d.attr("y",l[0]).attr("height",l[1]-l[0]),r(h)),n(h)})}function n(t){t.selectAll(".resize").attr("transform",function(t){return"translate("+h[+/e$/.test(t)]+","+d[+/^s/.test(t)]+")"})}function i(t){t.select(".extent").attr("x",h[0]),t.selectAll(".extent,.n>rect,.s>rect").attr("width",h[1]-h[0])}function r(t){t.select(".extent").attr("y",d[0]),t.selectAll(".extent,.e>rect,.w>rect").attr("height",d[1]-d[0])}function o(){function o(){32==la.event.keyCode&&(L||(x=null,P[0]-=h[1],P[1]-=d[1],L=2),C())}function g(){32==la.event.keyCode&&2==L&&(P[0]+=h[1],P[1]+=d[1],L=0,C())}function m(){var t=la.mouse(_),e=!1;b&&(t[0]+=b[0],t[1]+=b[1]),L||(la.event.altKey?(x||(x=[(h[0]+h[1])/2,(d[0]+d[1])/2]),P[0]=h[+(t[0]<x[0])],P[1]=d[+(t[1]<x[1])]):x=null),A&&v(t,c,0)&&(i(T),e=!0),M&&v(t,u,1)&&(r(T),e=!0),e&&(n(T),S({type:"brush",mode:L?"move":"resize"}))}function v(t,e,n){var i,r,o=Br(e),l=o[0],c=o[1],u=P[n],g=n?d:h,m=g[1]-g[0];if(L&&(l-=u,c-=m+u),i=(n?p:f)?Math.max(l,Math.min(c,t[n])):t[n],L?r=(i+=u)+m:(x&&(u=Math.max(l,Math.min(c,2*x[n]-i))),u<i?(r=i,i=u):r=u),g[0]!=i||g[1]!=r)return n?s=null:a=null,g[0]=i,g[1]=r,!0}function y(){m(),T.style("pointer-events","all").selectAll(".resize").style("display",t.empty()?"none":null),la.select("body").style("cursor",null),N.on("mousemove.brush",null).on("mouseup.brush",null).on("touchmove.brush",null).on("touchend.brush",null).on("keydown.brush",null).on("keyup.brush",null),E(),S({type:"brushend"})}var x,b,_=this,w=la.select(la.event.target),S=l.of(_,arguments),T=la.select(_),k=w.datum(),A=!/^(n|s)$/.test(k)&&c,M=!/^(e|w)$/.test(k)&&u,L=w.classed("extent"),E=Y(_),P=la.mouse(_),N=la.select(e(_)).on("keydown.brush",o).on("keyup.brush",g);if(la.event.changedTouches?N.on("touchmove.brush",m).on("touchend.brush",y):N.on("mousemove.brush",m).on("mouseup.brush",y),T.interrupt().selectAll("*").interrupt(),L)P[0]=h[0]-P[0],P[1]=d[0]-P[1];else if(k){var O=+/w$/.test(k),R=+/^n/.test(k);b=[h[1-O]-P[0],d[1-R]-P[1]],P[0]=h[O],P[1]=d[R]}else la.event.altKey&&(x=P.slice());T.style("pointer-events","none").selectAll(".resize").style("display",null),la.select("body").style("cursor",w.style("cursor")),S({type:"brushstart"}),m()}var a,s,l=k(t,"brushstart","brush","brushend"),c=null,u=null,h=[0,0],d=[0,0],f=!0,p=!0,g=Wl[0];return t.event=function(t){t.each(function(){var t=l.of(this,arguments),e={x:h,y:d,i:a,j:s},n=this.__chart__||e;this.__chart__=e,Vl?la.select(this).transition().each("start.brush",function(){a=n.i,s=n.j,h=n.x,d=n.y,t({type:"brushstart"})}).tween("brush:brush",function(){var n=bi(h,e.x),i=bi(d,e.y);return a=s=null,function(r){h=e.x=n(r),d=e.y=i(r),t({type:"brush",mode:"resize"})}}).each("end.brush",function(){a=e.i,s=e.j,t({type:"brush",mode:"resize"}),t({type:"brushend"})}):(t({type:"brushstart"}),t({type:"brush",mode:"resize"}),t({type:"brushend"}))})},t.x=function(e){return arguments.length?(c=e,g=Wl[!c<<1|!u],t):c},t.y=function(e){return arguments.length?(u=e,g=Wl[!c<<1|!u],t):u},t.clamp=function(e){return arguments.length?(c&&u?(f=!!e[0],p=!!e[1]):c?f=!!e:u&&(p=!!e),t):c&&u?[f,p]:c?f:u?p:null},t.extent=function(e){var n,i,r,o,l;return arguments.length?(c&&(n=e[0],i=e[1],u&&(n=n[0],i=i[0]),a=[n,i],c.invert&&(n=c(n),i=c(i)),i<n&&(l=n,n=i,i=l),n==h[0]&&i==h[1]||(h=[n,i])),u&&(r=e[0],o=e[1],c&&(r=r[1],o=o[1]),s=[r,o],u.invert&&(r=u(r),o=u(o)),o<r&&(l=r,r=o,o=l),r==d[0]&&o==d[1]||(d=[r,o])),t):(c&&(a?(n=a[0],i=a[1]):(n=h[0],i=h[1],c.invert&&(n=c.invert(n),i=c.invert(i)),i<n&&(l=n,n=i,i=l))),u&&(s?(r=s[0],o=s[1]):(r=d[0],o=d[1],u.invert&&(r=u.invert(r),o=u.invert(o)),o<r&&(l=r,r=o,o=l))),c&&u?[[n,r],[i,o]]:c?[n,i]:u&&[r,o])},t.clear=function(){return t.empty()||(h=[0,0],d=[0,0],a=s=null),t},t.empty=function(){return!!c&&h[0]==h[1]||!!u&&d[0]==d[1]},la.rebind(t,l,"on")};var $l={n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},Wl=[["n","e","s","w","nw","ne","se","sw"],["e","w"],["n","s"],[]],Ul=ds.format=ys.timeFormat,Xl=Ul.utc,Yl=Xl("%Y-%m-%dT%H:%M:%S.%LZ");Ul.iso=Date.prototype.toISOString&&+new Date("2000-01-01T00:00:00.000Z")?ia:Yl,ia.parse=function(t){var e=new Date(t);return isNaN(e)?null:e},ia.toString=Yl.toString,ds.second=Ft(function(t){return new fs(1e3*Math.floor(t/1e3))},function(t,e){t.setTime(t.getTime()+1e3*Math.floor(e))},function(t){return t.getSeconds()}),ds.seconds=ds.second.range,ds.seconds.utc=ds.second.utc.range,ds.minute=Ft(function(t){return new fs(6e4*Math.floor(t/6e4))},function(t,e){t.setTime(t.getTime()+6e4*Math.floor(e))},function(t){return t.getMinutes()}),ds.minutes=ds.minute.range,ds.minutes.utc=ds.minute.utc.range,ds.hour=Ft(function(t){var e=t.getTimezoneOffset()/60;return new fs(36e5*(Math.floor(t/36e5-e)+e))},function(t,e){t.setTime(t.getTime()+36e5*Math.floor(e))},function(t){return t.getHours()}),ds.hours=ds.hour.range,ds.hours.utc=ds.hour.utc.range,ds.month=Ft(function(t){return t=ds.day(t),t.setDate(1),t},function(t,e){t.setMonth(t.getMonth()+e)},function(t){return t.getMonth()}),ds.months=ds.month.range,ds.months.utc=ds.month.utc.range;var Ql=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],Zl=[[ds.second,1],[ds.second,5],[ds.second,15],[ds.second,30],[ds.minute,1],[ds.minute,5],[ds.minute,15],[ds.minute,30],[ds.hour,1],[ds.hour,3],[ds.hour,6],[ds.hour,12],[ds.day,1],[ds.day,2],[ds.week,1],[ds.month,1],[ds.month,3],[ds.year,1]],Kl=Ul.multi([[".%L",function(t){return t.getMilliseconds()}],[":%S",function(t){return t.getSeconds()}],["%I:%M",function(t){return t.getMinutes()}],["%I %p",function(t){return t.getHours()}],["%a %d",function(t){return t.getDay()&&1!=t.getDate()}],["%b %d",function(t){return 1!=t.getDate()}],["%B",function(t){return t.getMonth()}],["%Y",Le]]),Jl={range:function(t,e,n){return la.range(Math.ceil(t/n)*n,+e,n).map(oa)},floor:y,ceil:y};Zl.year=ds.year,ds.scale=function(){return ra(la.scale.linear(),Zl,Kl)};var tc=Zl.map(function(t){return[t[0].utc,t[1]]}),ec=Xl.multi([[".%L",function(t){return t.getUTCMilliseconds()}],[":%S",function(t){return t.getUTCSeconds()}],["%I:%M",function(t){return t.getUTCMinutes()}],["%I %p",function(t){return t.getUTCHours()}],["%a %d",function(t){return t.getUTCDay()&&1!=t.getUTCDate()}],["%b %d",function(t){return 1!=t.getUTCDate()}],["%B",function(t){return t.getUTCMonth()}],["%Y",Le]]);tc.year=ds.year.utc,ds.scale.utc=function(){return ra(la.scale.linear(),tc,ec)},la.text=At(function(t){return t.responseText}),la.json=function(t,e){return Mt(t,"application/json",aa,e)},la.html=function(t,e){return Mt(t,"text/html",sa,e)},la.xml=At(function(t){return t.responseXML}),"function"==typeof define&&define.amd?(this.d3=la,define("d3",la)):"object"==typeof module&&module.exports?module.exports=la:this.d3=la}(),function(t){"use strict";function e(t){this.owner=t}function n(t,e){if(Object.create)e.prototype=Object.create(t.prototype);else{var n=function(){};n.prototype=t.prototype,e.prototype=new n}return e.prototype.constructor=e,e}function i(t){var e=this.internal=new r(this);e.loadConfig(t),e.beforeInit(t),e.init(),e.afterInit(t),function t(e,n,i){Object.keys(e).forEach(function(r){n[r]=e[r].bind(i),Object.keys(e[r]).length>0&&t(e[r],n[r],i)})}(s,this,this)}function r(e){var n=this;n.d3=t.d3?t.d3:"undefined"!=typeof require?require("d3"):void 0,n.api=e,n.config=n.getDefaultConfig(),n.data={},n.cache={},n.axes={}}function o(t){e.call(this,t)}function a(t,e){function n(t,e){t.attr("transform",function(t){return"translate("+Math.ceil(e(t)+b)+", 0)"})}function i(t,e){t.attr("transform",function(t){return"translate(0,"+Math.ceil(e(t))+")"})}function r(t){var e=t[0],n=t[t.length-1];return e<n?[e,n]:[n,e]}function o(t){var e,n,i=[];if(t.ticks)return t.ticks.apply(t,f);for(n=t.domain(),e=Math.ceil(n[0]);e<n[1];e++)i.push(e);return i.length>0&&i[0]>0&&i.unshift(i[0]-(i[1]-i[0])),i}function a(){var t,n=g.copy();return e.isCategory&&(t=g.domain(),n.domain([t[0],t[1]-1])),n}function s(t){var e=d?d(t):t;return"undefined"!=typeof e?e:""}function l(t){if(k)return k;var e={h:11.5,w:5.5};return t.select("text").text(s).each(function(t){var n=this.getBoundingClientRect(),i=s(t),r=n.height,o=i?n.width/i.length:void 0;r&&o&&(e.h=r,e.w=o)}).text(""),k=e,e}function c(n){return e.withoutTransition?n:t.transition(n)}function u(d){d.each(function(){function d(t,n){function i(t,e){o=void 0;for(var s=1;s<e.length;s++)if(" "===e.charAt(s)&&(o=s),r=e.substr(0,s+1),a=W.w*r.length,n<a)return i(t.concat(e.substr(0,o?o:s)),e.slice(o?o+1:s));return t.concat(e)}var r,o,a,l=s(t),c=[];return"[object Array]"===Object.prototype.toString.call(l)?l:((!n||n<=0)&&(n=Y?95:e.isCategory?Math.ceil(P(N[1])-P(N[0]))-12:110),i(c,l+""))}function f(t,e){var n=W.h;return 0===e&&(n="left"===m||"right"===m?-((U[t.index]-1)*(W.h/2)-3):".71em"),n}function _(t){var e=g(t)+(p?0:b);return j[0]<e&&e<j[1]?v:0}function w(t){return t?t>0?"start":"end":"middle"}function S(t){return t?"rotate("+t+")":""}function C(t){return t?8*Math.sin(Math.PI*(t/180)):0}function T(t){return t?11.5-2.5*(t/15)*(t>0?1:-1):X}var k,A,M,L=u.g=t.select(this),E=this.__chart__||g,P=this.__chart__=a(),N=x?x:o(P),O=L.selectAll(".tick").data(N,P),R=O.enter().insert("g",".domain").attr("class","tick").style("opacity",1e-6),D=O.exit().remove(),I=c(O).style("opacity",1),j=g.rangeExtent?g.rangeExtent():r(g.range()),V=L.selectAll(".domain").data([0]),H=(V.enter().append("path").attr("class","domain"),c(V));R.append("line"),R.append("text");var F=R.select("line"),z=I.select("line"),q=R.select("text"),G=I.select("text");e.isCategory?(b=Math.ceil((P(1)-P(0))/2),A=p?0:b,M=p?b:0):b=A=0;var B,$,W=l(L.select(".tick")),U=[],X=Math.max(v,0)+y,Y="left"===m||"right"===m;B=O.select("text"),$=B.selectAll("tspan").data(function(t,n){var i=e.tickMultiline?d(t,e.tickWidth):[].concat(s(t));return U[n]=i.length,i.map(function(t){return{index:n,splitted:t}})}),$.enter().append("tspan"),$.exit().remove(),$.text(function(t){return t.splitted});var Q=e.tickTextRotate;switch(m){case"bottom":k=n,F.attr("y2",v),q.attr("y",X),z.attr("x1",A).attr("x2",A).attr("y2",_),G.attr("x",0).attr("y",T(Q)).style("text-anchor",w(Q)).attr("transform",S(Q)),$.attr("x",0).attr("dy",f).attr("dx",C(Q)),H.attr("d","M"+j[0]+","+h+"V0H"+j[1]+"V"+h);break;case"top":k=n,F.attr("y2",-v),q.attr("y",-X),z.attr("x2",0).attr("y2",-v),G.attr("x",0).attr("y",-X),B.style("text-anchor","middle"),$.attr("x",0).attr("dy","0em"),H.attr("d","M"+j[0]+","+-h+"V0H"+j[1]+"V"+-h);break;case"left":k=i,F.attr("x2",-v),q.attr("x",-X),z.attr("x2",-v).attr("y1",M).attr("y2",M),G.attr("x",-X).attr("y",b),B.style("text-anchor","end"),$.attr("x",-X).attr("dy",f),H.attr("d","M"+-h+","+j[0]+"H0V"+j[1]+"H"+-h);break;case"right":k=i,F.attr("x2",v),q.attr("x",X),z.attr("x2",v).attr("y2",0),G.attr("x",X).attr("y",0),B.style("text-anchor","start"),$.attr("x",X).attr("dy",f),H.attr("d","M"+h+","+j[0]+"H0V"+j[1]+"H"+h)}if(P.rangeBand){var Z=P,K=Z.rangeBand()/2;E=P=function(t){return Z(t)+K}}else E.rangeBand?E=P:D.call(k,P);R.call(k,E),I.call(k,P)})}var h,d,f,p,g=t.scale.linear(),m="bottom",v=6,y=3,x=null,b=0,_=!0;return e=e||{},h=e.withOuterTick?6:0,u.scale=function(t){return arguments.length?(g=t,u):g},u.orient=function(t){return arguments.length?(m=t in{top:1,right:1,bottom:1,left:1}?t+"":"bottom",u):m},u.tickFormat=function(t){return arguments.length?(d=t,u):d},u.tickCentered=function(t){return arguments.length?(p=t,u):p},u.tickOffset=function(){return b},u.tickInterval=function(){var t,n;return e.isCategory?t=2*b:(n=u.g.select("path.domain").node().getTotalLength()-2*h,t=n/u.g.selectAll("line").size()),t===1/0?0:t},u.ticks=function(){return arguments.length?(f=arguments,u):f},u.tickCulling=function(t){return arguments.length?(_=t,u):_},u.tickValues=function(t){if("function"==typeof t)x=function(){return t(g.domain())};else{if(!arguments.length)return x;x=t}return u},u}var s,l,c,u={version:"0.4.11"};u.generate=function(t){return new i(t)},u.chart={fn:i.prototype,internal:{fn:r.prototype,axis:{fn:o.prototype}}},s=u.chart.fn,l=u.chart.internal.fn,c=u.chart.internal.axis.fn,l.beforeInit=function(){},l.afterInit=function(){},l.init=function(){var t=this,e=t.config;if(t.initParams(),e.data_url)t.convertUrlToData(e.data_url,e.data_mimeType,e.data_headers,e.data_keys,t.initWithData);else if(e.data_json)t.initWithData(t.convertJsonToData(e.data_json,e.data_keys));else if(e.data_rows)t.initWithData(t.convertRowsToData(e.data_rows));else{if(!e.data_columns)throw Error("url or json or rows or columns is required.");t.initWithData(t.convertColumnsToData(e.data_columns))}},l.initParams=function(){var t=this,e=t.d3,n=t.config;t.clipId="c3-"+ +new Date+"-clip",t.clipIdForXAxis=t.clipId+"-xaxis",t.clipIdForYAxis=t.clipId+"-yaxis",t.clipIdForGrid=t.clipId+"-grid",t.clipIdForSubchart=t.clipId+"-subchart",t.clipPath=t.getClipPath(t.clipId),t.clipPathForXAxis=t.getClipPath(t.clipIdForXAxis),t.clipPathForYAxis=t.getClipPath(t.clipIdForYAxis),t.clipPathForGrid=t.getClipPath(t.clipIdForGrid),t.clipPathForSubchart=t.getClipPath(t.clipIdForSubchart),t.dragStart=null,t.dragging=!1,t.flowing=!1,t.cancelClick=!1,t.mouseover=!1,t.transiting=!1,t.color=t.generateColor(),t.levelColor=t.generateLevelColor(),t.dataTimeFormat=n.data_xLocaltime?e.time.format:e.time.format.utc,t.axisTimeFormat=n.axis_x_localtime?e.time.format:e.time.format.utc,t.defaultAxisTimeFormat=t.axisTimeFormat.multi([[".%L",function(t){return t.getMilliseconds()}],[":%S",function(t){return t.getSeconds()}],["%I:%M",function(t){return t.getMinutes()}],["%I %p",function(t){return t.getHours()}],["%-m/%-d",function(t){return t.getDay()&&1!==t.getDate()}],["%-m/%-d",function(t){return 1!==t.getDate()}],["%-m/%-d",function(t){return t.getMonth()}],["%Y/%-m/%-d",function(){return!0}]]),t.hiddenTargetIds=[],t.hiddenLegendIds=[],t.focusedTargetIds=[],t.defocusedTargetIds=[],t.xOrient=n.axis_rotated?"left":"bottom",t.yOrient=n.axis_rotated?n.axis_y_inner?"top":"bottom":n.axis_y_inner?"right":"left",t.y2Orient=n.axis_rotated?n.axis_y2_inner?"bottom":"top":n.axis_y2_inner?"left":"right",t.subXOrient=n.axis_rotated?"left":"bottom",t.isLegendRight="right"===n.legend_position,t.isLegendInset="inset"===n.legend_position,t.isLegendTop="top-left"===n.legend_inset_anchor||"top-right"===n.legend_inset_anchor,t.isLegendLeft="top-left"===n.legend_inset_anchor||"bottom-left"===n.legend_inset_anchor,t.legendStep=0,t.legendItemWidth=0,t.legendItemHeight=0,t.currentMaxTickWidths={x:0,y:0,y2:0},t.rotated_padding_left=30,t.rotated_padding_right=n.axis_rotated&&!n.axis_x_show?0:30,t.rotated_padding_top=5,t.withoutFadeIn={},t.intervalForObserveInserted=void 0,t.axes.subx=e.selectAll([])},l.initChartElements=function(){this.initBar&&this.initBar(),this.initLine&&this.initLine(),this.initArc&&this.initArc(),this.initGauge&&this.initGauge(),this.initText&&this.initText()},l.initWithData=function(t){var e,n,i=this,r=i.d3,a=i.config,s=!0;i.axis=new o(i),i.initPie&&i.initPie(),i.initBrush&&i.initBrush(),i.initZoom&&i.initZoom(),a.bindto?"function"==typeof a.bindto.node?i.selectChart=a.bindto:i.selectChart=r.select(a.bindto):i.selectChart=r.selectAll([]),i.selectChart.empty()&&(i.selectChart=r.select(document.createElement("div")).style("opacity",0),i.observeInserted(i.selectChart),s=!1),i.selectChart.html("").classed("c3",!0),i.data.xs={},i.data.targets=i.convertDataToTargets(t),a.data_filter&&(i.data.targets=i.data.targets.filter(a.data_filter)),a.data_hide&&i.addHiddenTargetIds(a.data_hide===!0?i.mapToIds(i.data.targets):a.data_hide),a.legend_hide&&i.addHiddenLegendIds(a.legend_hide===!0?i.mapToIds(i.data.targets):a.legend_hide),i.hasType("gauge")&&(a.legend_show=!1),i.updateSizes(),i.updateScales(),i.x.domain(r.extent(i.getXDomain(i.data.targets))),i.y.domain(i.getYDomain(i.data.targets,"y")),i.y2.domain(i.getYDomain(i.data.targets,"y2")),i.subX.domain(i.x.domain()),i.subY.domain(i.y.domain()),i.subY2.domain(i.y2.domain()),i.orgXDomain=i.x.domain(),i.brush&&i.brush.scale(i.subX),a.zoom_enabled&&i.zoom.scale(i.x),i.svg=i.selectChart.append("svg").style("overflow","hidden").on("mouseenter",function(){return a.onmouseover.call(i)}).on("mouseleave",function(){return a.onmouseout.call(i)}),i.config.svg_classname&&i.svg.attr("class",i.config.svg_classname),e=i.svg.append("defs"),i.clipChart=i.appendClip(e,i.clipId),i.clipXAxis=i.appendClip(e,i.clipIdForXAxis),i.clipYAxis=i.appendClip(e,i.clipIdForYAxis),i.clipGrid=i.appendClip(e,i.clipIdForGrid),i.clipSubchart=i.appendClip(e,i.clipIdForSubchart),i.updateSvgSize(),n=i.main=i.svg.append("g").attr("transform",i.getTranslate("main")),i.initSubchart&&i.initSubchart(),i.initTooltip&&i.initTooltip(),i.initLegend&&i.initLegend(),i.initTitle&&i.initTitle(),n.append("text").attr("class",h.text+" "+h.empty).attr("text-anchor","middle").attr("dominant-baseline","middle"),i.initRegion(),i.initGrid(),n.append("g").attr("clip-path",i.clipPath).attr("class",h.chart),a.grid_lines_front&&i.initGridLines(),i.initEventRect(),i.initChartElements(),n.insert("rect",a.zoom_privileged?null:"g."+h.regions).attr("class",h.zoomRect).attr("width",i.width).attr("height",i.height).style("opacity",0).on("dblclick.zoom",null),a.axis_x_extent&&i.brush.extent(i.getDefaultExtent()),i.axis.init(),i.updateTargets(i.data.targets),s&&(i.updateDimension(),i.config.oninit.call(i),i.redraw({withTransition:!1,withTransform:!0,withUpdateXDomain:!0,withUpdateOrgXDomain:!0,withTransitionForAxis:!1})),i.bindResize(),i.api.element=i.selectChart.node()},l.smoothLines=function(t,e){var n=this;"grid"===e&&t.each(function(){var t=n.d3.select(this),e=t.attr("x1"),i=t.attr("x2"),r=t.attr("y1"),o=t.attr("y2");t.attr({x1:Math.ceil(e),x2:Math.ceil(i),y1:Math.ceil(r),y2:Math.ceil(o)})})},l.updateSizes=function(){var t=this,e=t.config,n=t.legend?t.getLegendHeight():0,i=t.legend?t.getLegendWidth():0,r=t.isLegendRight||t.isLegendInset?0:n,o=t.hasArcType(),a=e.axis_rotated||o?0:t.getHorizontalAxisHeight("x"),s=e.subchart_show&&!o?e.subchart_size_height+a:0;t.currentWidth=t.getCurrentWidth(),t.currentHeight=t.getCurrentHeight(),t.margin=e.axis_rotated?{top:t.getHorizontalAxisHeight("y2")+t.getCurrentPaddingTop(),right:o?0:t.getCurrentPaddingRight(),bottom:t.getHorizontalAxisHeight("y")+r+t.getCurrentPaddingBottom(),left:s+(o?0:t.getCurrentPaddingLeft())}:{top:4+t.getCurrentPaddingTop(),right:o?0:t.getCurrentPaddingRight(),bottom:a+s+r+t.getCurrentPaddingBottom(),left:o?0:t.getCurrentPaddingLeft()},t.margin2=e.axis_rotated?{top:t.margin.top,right:NaN,bottom:20+r,left:t.rotated_padding_left}:{top:t.currentHeight-s-r,right:NaN,bottom:a+r,left:t.margin.left},t.margin3={top:0,right:NaN,bottom:0,left:0},t.updateSizeForLegend&&t.updateSizeForLegend(n,i),t.width=t.currentWidth-t.margin.left-t.margin.right,t.height=t.currentHeight-t.margin.top-t.margin.bottom,t.width<0&&(t.width=0),t.height<0&&(t.height=0),t.width2=e.axis_rotated?t.margin.left-t.rotated_padding_left-t.rotated_padding_right:t.width,t.height2=e.axis_rotated?t.height:t.currentHeight-t.margin2.top-t.margin2.bottom,t.width2<0&&(t.width2=0),t.height2<0&&(t.height2=0),t.arcWidth=t.width-(t.isLegendRight?i+10:0),t.arcHeight=t.height-(t.isLegendRight?0:10),t.hasType("gauge")&&!e.gauge_fullCircle&&(t.arcHeight+=t.height-t.getGaugeLabelHeight()),t.updateRadius&&t.updateRadius(),t.isLegendRight&&o&&(t.margin3.left=t.arcWidth/2+1.1*t.radiusExpanded)},l.updateTargets=function(t){var e=this;e.updateTargetsForText(t),e.updateTargetsForBar(t),e.updateTargetsForLine(t),e.hasArcType()&&e.updateTargetsForArc&&e.updateTargetsForArc(t),e.updateTargetsForSubchart&&e.updateTargetsForSubchart(t),e.showTargets()},l.showTargets=function(){var t=this;t.svg.selectAll("."+h.target).filter(function(e){return t.isTargetToShow(e.id)}).transition().duration(t.config.transition_duration).style("opacity",1)},l.redraw=function(t,e){var n,i,r,o,a,s,l,c,u,d,f,p,g,m,v,y,x,b,_,S,C,T,k,A,M,L,E,P,N,O=this,R=O.main,D=O.d3,I=O.config,j=O.getShapeIndices(O.isAreaType),V=O.getShapeIndices(O.isBarType),H=O.getShapeIndices(O.isLineType),F=O.hasArcType(),z=O.filterTargetsToShow(O.data.targets),q=O.xv.bind(O);if(t=t||{},n=w(t,"withY",!0),i=w(t,"withSubchart",!0),r=w(t,"withTransition",!0),s=w(t,"withTransform",!1),l=w(t,"withUpdateXDomain",!1),c=w(t,"withUpdateOrgXDomain",!1),u=w(t,"withTrimXDomain",!0),g=w(t,"withUpdateXAxis",l),d=w(t,"withLegend",!1),f=w(t,"withEventRect",!0),p=w(t,"withDimension",!0),o=w(t,"withTransitionForExit",r),a=w(t,"withTransitionForAxis",r),_=r?I.transition_duration:0,S=o?_:0,C=a?_:0,e=e||O.axis.generateTransitions(C),d&&I.legend_show?O.updateLegend(O.mapToIds(O.data.targets),t,e):p&&O.updateDimension(!0),O.isCategorized()&&0===z.length&&O.x.domain([0,O.axes.x.selectAll(".tick").size()]),z.length?(O.updateXDomain(z,l,c,u),I.axis_x_tick_values||(A=O.axis.updateXAxisTickValues(z))):(O.xAxis.tickValues([]),O.subXAxis.tickValues([])),I.zoom_rescale&&!t.flow&&(E=O.x.orgDomain()),O.y.domain(O.getYDomain(z,"y",E)),O.y2.domain(O.getYDomain(z,"y2",E)),!I.axis_y_tick_values&&I.axis_y_tick_count&&O.yAxis.tickValues(O.axis.generateTickValues(O.y.domain(),I.axis_y_tick_count)),!I.axis_y2_tick_values&&I.axis_y2_tick_count&&O.y2Axis.tickValues(O.axis.generateTickValues(O.y2.domain(),I.axis_y2_tick_count)),O.axis.redraw(e,F),O.axis.updateLabels(r),(l||g)&&z.length)if(I.axis_x_tick_culling&&A){for(M=1;M<A.length;M++)if(A.length/M<I.axis_x_tick_culling_max){L=M;break}O.svg.selectAll("."+h.axisX+" .tick text").each(function(t){var e=A.indexOf(t);e>=0&&D.select(this).style("display",e%L?"none":"block")})}else O.svg.selectAll("."+h.axisX+" .tick text").style("display","block");m=O.generateDrawArea?O.generateDrawArea(j,!1):void 0,v=O.generateDrawBar?O.generateDrawBar(V):void 0,y=O.generateDrawLine?O.generateDrawLine(H,!1):void 0,x=O.generateXYForText(j,V,H,!0),b=O.generateXYForText(j,V,H,!1),n&&(O.subY.domain(O.getYDomain(z,"y")),O.subY2.domain(O.getYDomain(z,"y2"))),O.updateXgridFocus(),R.select("text."+h.text+"."+h.empty).attr("x",O.width/2).attr("y",O.height/2).text(I.data_empty_label_text).transition().style("opacity",z.length?0:1),O.updateGrid(_),O.updateRegion(_),O.updateBar(S),O.updateLine(S),O.updateArea(S),O.updateCircle(),O.hasDataLabel()&&O.updateText(S),O.redrawTitle&&O.redrawTitle(),O.redrawArc&&O.redrawArc(_,S,s),O.redrawSubchart&&O.redrawSubchart(i,e,_,S,j,V,H),R.selectAll("."+h.selectedCircles).filter(O.isBarType.bind(O)).selectAll("circle").remove(),I.interaction_enabled&&!t.flow&&f&&(O.redrawEventRect(),O.updateZoom&&O.updateZoom()),O.updateCircleY(),P=(O.config.axis_rotated?O.circleY:O.circleX).bind(O),N=(O.config.axis_rotated?O.circleX:O.circleY).bind(O),t.flow&&(k=O.generateFlow({targets:z,flow:t.flow,duration:t.flow.duration,drawBar:v,drawLine:y,drawArea:m,cx:P,cy:N,xv:q,xForText:x,yForText:b})),(_||k)&&O.isTabVisible()?D.transition().duration(_).each(function(){var e=[];[O.redrawBar(v,!0),O.redrawLine(y,!0),O.redrawArea(m,!0),O.redrawCircle(P,N,!0),O.redrawText(x,b,t.flow,!0),O.redrawRegion(!0),O.redrawGrid(!0)].forEach(function(t){t.forEach(function(t){e.push(t)})}),T=O.generateWait(),e.forEach(function(t){T.add(t)})}).call(T,function(){k&&k(),I.onrendered&&I.onrendered.call(O)}):(O.redrawBar(v),O.redrawLine(y),O.redrawArea(m),O.redrawCircle(P,N),O.redrawText(x,b,t.flow),O.redrawRegion(),O.redrawGrid(),I.onrendered&&I.onrendered.call(O)),O.mapToIds(O.data.targets).forEach(function(t){O.withoutFadeIn[t]=!0})},l.updateAndRedraw=function(t){var e,n=this,i=n.config;t=t||{},t.withTransition=w(t,"withTransition",!0),t.withTransform=w(t,"withTransform",!1),t.withLegend=w(t,"withLegend",!1),t.withUpdateXDomain=!0,t.withUpdateOrgXDomain=!0,t.withTransitionForExit=!1,t.withTransitionForTransform=w(t,"withTransitionForTransform",t.withTransition),n.updateSizes(),t.withLegend&&i.legend_show||(e=n.axis.generateTransitions(t.withTransitionForAxis?i.transition_duration:0),n.updateScales(),n.updateSvgSize(),n.transformAll(t.withTransitionForTransform,e)),n.redraw(t,e)},l.redrawWithoutRescale=function(){this.redraw({withY:!1,withSubchart:!1,withEventRect:!1,withTransitionForAxis:!1})},l.isTimeSeries=function(){return"timeseries"===this.config.axis_x_type},l.isCategorized=function(){return this.config.axis_x_type.indexOf("categor")>=0},l.isCustomX=function(){var t=this,e=t.config;return!t.isTimeSeries()&&(e.data_x||_(e.data_xs))},l.isTimeSeriesY=function(){return"timeseries"===this.config.axis_y_type},l.getTranslate=function(t){var e,n,i=this,r=i.config;return"main"===t?(e=y(i.margin.left),n=y(i.margin.top)):"context"===t?(e=y(i.margin2.left),n=y(i.margin2.top)):"legend"===t?(e=i.margin3.left,n=i.margin3.top):"x"===t?(e=0,n=r.axis_rotated?0:i.height):"y"===t?(e=0,n=r.axis_rotated?i.height:0):"y2"===t?(e=r.axis_rotated?0:i.width,n=r.axis_rotated?1:0):"subx"===t?(e=0,
+n=r.axis_rotated?0:i.height2):"arc"===t&&(e=i.arcWidth/2,n=i.arcHeight/2),"translate("+e+","+n+")"},l.initialOpacity=function(t){return null!==t.value&&this.withoutFadeIn[t.id]?1:0},l.initialOpacityForCircle=function(t){return null!==t.value&&this.withoutFadeIn[t.id]?this.opacityForCircle(t):0},l.opacityForCircle=function(t){var e=this.config.point_show?1:0;return d(t.value)?this.isScatterType(t)?.5:e:0},l.opacityForText=function(){return this.hasDataLabel()?1:0},l.xx=function(t){return t?this.x(t.x):null},l.xv=function(t){var e=this,n=t.value;return e.isTimeSeries()?n=e.parseDate(t.value):e.isCategorized()&&"string"==typeof t.value&&(n=e.config.axis_x_categories.indexOf(t.value)),Math.ceil(e.x(n))},l.yv=function(t){var e=this,n=t.axis&&"y2"===t.axis?e.y2:e.y;return Math.ceil(n(t.value))},l.subxx=function(t){return t?this.subX(t.x):null},l.transformMain=function(t,e){var n,i,r,o=this;e&&e.axisX?n=e.axisX:(n=o.main.select("."+h.axisX),t&&(n=n.transition())),e&&e.axisY?i=e.axisY:(i=o.main.select("."+h.axisY),t&&(i=i.transition())),e&&e.axisY2?r=e.axisY2:(r=o.main.select("."+h.axisY2),t&&(r=r.transition())),(t?o.main.transition():o.main).attr("transform",o.getTranslate("main")),n.attr("transform",o.getTranslate("x")),i.attr("transform",o.getTranslate("y")),r.attr("transform",o.getTranslate("y2")),o.main.select("."+h.chartArcs).attr("transform",o.getTranslate("arc"))},l.transformAll=function(t,e){var n=this;n.transformMain(t,e),n.config.subchart_show&&n.transformContext(t,e),n.legend&&n.transformLegend(t)},l.updateSvgSize=function(){var t=this,e=t.svg.select(".c3-brush .background");t.svg.attr("width",t.currentWidth).attr("height",t.currentHeight),t.svg.selectAll(["#"+t.clipId,"#"+t.clipIdForGrid]).select("rect").attr("width",t.width).attr("height",t.height),t.svg.select("#"+t.clipIdForXAxis).select("rect").attr("x",t.getXAxisClipX.bind(t)).attr("y",t.getXAxisClipY.bind(t)).attr("width",t.getXAxisClipWidth.bind(t)).attr("height",t.getXAxisClipHeight.bind(t)),t.svg.select("#"+t.clipIdForYAxis).select("rect").attr("x",t.getYAxisClipX.bind(t)).attr("y",t.getYAxisClipY.bind(t)).attr("width",t.getYAxisClipWidth.bind(t)).attr("height",t.getYAxisClipHeight.bind(t)),t.svg.select("#"+t.clipIdForSubchart).select("rect").attr("width",t.width).attr("height",e.size()?e.attr("height"):0),t.svg.select("."+h.zoomRect).attr("width",t.width).attr("height",t.height),t.selectChart.style("max-height",t.currentHeight+"px")},l.updateDimension=function(t){var e=this;t||(e.config.axis_rotated?(e.axes.x.call(e.xAxis),e.axes.subx.call(e.subXAxis)):(e.axes.y.call(e.yAxis),e.axes.y2.call(e.y2Axis))),e.updateSizes(),e.updateScales(),e.updateSvgSize(),e.transformAll(!1)},l.observeInserted=function(e){var n,i=this;return"undefined"==typeof MutationObserver?void t.console.error("MutationObserver not defined."):(n=new MutationObserver(function(r){r.forEach(function(r){"childList"===r.type&&r.previousSibling&&(n.disconnect(),i.intervalForObserveInserted=t.setInterval(function(){e.node().parentNode&&(t.clearInterval(i.intervalForObserveInserted),i.updateDimension(),i.brush&&i.brush.update(),i.config.oninit.call(i),i.redraw({withTransform:!0,withUpdateXDomain:!0,withUpdateOrgXDomain:!0,withTransition:!1,withTransitionForTransform:!1,withLegend:!0}),e.transition().style("opacity",1))},10))})}),void n.observe(e.node(),{attributes:!0,childList:!0,characterData:!0}))},l.bindResize=function(){var e=this,n=e.config;if(e.resizeFunction=e.generateResize(),e.resizeFunction.add(function(){n.onresize.call(e)}),n.resize_auto&&e.resizeFunction.add(function(){void 0!==e.resizeTimeout&&t.clearTimeout(e.resizeTimeout),e.resizeTimeout=t.setTimeout(function(){delete e.resizeTimeout,e.api.flush()},100)}),e.resizeFunction.add(function(){n.onresized.call(e)}),t.attachEvent)t.attachEvent("onresize",e.resizeFunction);else if(t.addEventListener)t.addEventListener("resize",e.resizeFunction,!1);else{var i=t.onresize;i?i.add&&i.remove||(i=e.generateResize(),i.add(t.onresize)):i=e.generateResize(),i.add(e.resizeFunction),t.onresize=i}},l.generateResize=function(){function t(){e.forEach(function(t){t()})}var e=[];return t.add=function(t){e.push(t)},t.remove=function(t){for(var n=0;n<e.length;n++)if(e[n]===t){e.splice(n,1);break}},t},l.endall=function(t,e){var n=0;t.each(function(){++n}).each("end",function(){--n||e.apply(this,arguments)})},l.generateWait=function(){var t=[],e=function(e,n){var i=setInterval(function(){var e=0;t.forEach(function(t){if(t.empty())return void(e+=1);try{t.transition()}catch(t){e+=1}}),e===t.length&&(clearInterval(i),n&&n())},10)};return e.add=function(e){t.push(e)},e},l.parseDate=function(e){var n,i=this;return e instanceof Date?n=e:"string"==typeof e?n=i.dataTimeFormat(i.config.data_xFormat).parse(e):"number"!=typeof e||isNaN(e)||(n=new Date(+e)),n&&!isNaN(+n)||t.console.error("Failed to parse x '"+e+"' to Date object"),n},l.isTabVisible=function(){var t;return"undefined"!=typeof document.hidden?t="hidden":"undefined"!=typeof document.mozHidden?t="mozHidden":"undefined"!=typeof document.msHidden?t="msHidden":"undefined"!=typeof document.webkitHidden&&(t="webkitHidden"),!document[t]},l.getDefaultConfig=function(){var t={bindto:"#chart",svg_classname:void 0,size_width:void 0,size_height:void 0,padding_left:void 0,padding_right:void 0,padding_top:void 0,padding_bottom:void 0,resize_auto:!0,zoom_enabled:!1,zoom_extent:void 0,zoom_privileged:!1,zoom_rescale:!1,zoom_onzoom:function(){},zoom_onzoomstart:function(){},zoom_onzoomend:function(){},zoom_x_min:void 0,zoom_x_max:void 0,interaction_brighten:!0,interaction_enabled:!0,onmouseover:function(){},onmouseout:function(){},onresize:function(){},onresized:function(){},oninit:function(){},onrendered:function(){},transition_duration:350,data_x:void 0,data_xs:{},data_xFormat:"%Y-%m-%d",data_xLocaltime:!0,data_xSort:!0,data_idConverter:function(t){return t},data_names:{},data_classes:{},data_groups:[],data_axes:{},data_type:void 0,data_types:{},data_labels:{},data_order:"desc",data_regions:{},data_color:void 0,data_colors:{},data_hide:!1,data_filter:void 0,data_selection_enabled:!1,data_selection_grouped:!1,data_selection_isselectable:function(){return!0},data_selection_multiple:!0,data_selection_draggable:!1,data_onclick:function(){},data_onmouseover:function(){},data_onmouseout:function(){},data_onselected:function(){},data_onunselected:function(){},data_url:void 0,data_headers:void 0,data_json:void 0,data_rows:void 0,data_columns:void 0,data_mimeType:void 0,data_keys:void 0,data_empty_label_text:"",subchart_show:!1,subchart_size_height:60,subchart_axis_x_show:!0,subchart_onbrush:function(){},color_pattern:[],color_threshold:{},legend_show:!0,legend_hide:!1,legend_position:"bottom",legend_inset_anchor:"top-left",legend_inset_x:10,legend_inset_y:0,legend_inset_step:void 0,legend_item_onclick:void 0,legend_item_onmouseover:void 0,legend_item_onmouseout:void 0,legend_equally:!1,legend_padding:0,legend_item_tile_width:10,legend_item_tile_height:10,axis_rotated:!1,axis_x_show:!0,axis_x_type:"indexed",axis_x_localtime:!0,axis_x_categories:[],axis_x_tick_centered:!1,axis_x_tick_format:void 0,axis_x_tick_culling:{},axis_x_tick_culling_max:10,axis_x_tick_count:void 0,axis_x_tick_fit:!0,axis_x_tick_values:null,axis_x_tick_rotate:0,axis_x_tick_outer:!0,axis_x_tick_multiline:!0,axis_x_tick_width:null,axis_x_max:void 0,axis_x_min:void 0,axis_x_padding:{},axis_x_height:void 0,axis_x_extent:void 0,axis_x_label:{},axis_y_show:!0,axis_y_type:void 0,axis_y_max:void 0,axis_y_min:void 0,axis_y_inverted:!1,axis_y_center:void 0,axis_y_inner:void 0,axis_y_label:{},axis_y_tick_format:void 0,axis_y_tick_outer:!0,axis_y_tick_values:null,axis_y_tick_rotate:0,axis_y_tick_count:void 0,axis_y_tick_time_value:void 0,axis_y_tick_time_interval:void 0,axis_y_padding:{},axis_y_default:void 0,axis_y2_show:!1,axis_y2_max:void 0,axis_y2_min:void 0,axis_y2_inverted:!1,axis_y2_center:void 0,axis_y2_inner:void 0,axis_y2_label:{},axis_y2_tick_format:void 0,axis_y2_tick_outer:!0,axis_y2_tick_values:null,axis_y2_tick_count:void 0,axis_y2_padding:{},axis_y2_default:void 0,grid_x_show:!1,grid_x_type:"tick",grid_x_lines:[],grid_y_show:!1,grid_y_lines:[],grid_y_ticks:10,grid_focus_show:!0,grid_lines_front:!0,point_show:!0,point_r:2.5,point_sensitivity:10,point_focus_expand_enabled:!0,point_focus_expand_r:void 0,point_select_r:void 0,line_connectNull:!1,line_step_type:"step",bar_width:void 0,bar_width_ratio:.6,bar_width_max:void 0,bar_zerobased:!0,area_zerobased:!0,area_above:!1,pie_label_show:!0,pie_label_format:void 0,pie_label_threshold:.05,pie_label_ratio:void 0,pie_expand:{},pie_expand_duration:50,gauge_fullCircle:!1,gauge_label_show:!0,gauge_label_format:void 0,gauge_min:0,gauge_max:100,gauge_startingAngle:-1*Math.PI/2,gauge_units:void 0,gauge_width:void 0,gauge_expand:{},gauge_expand_duration:50,donut_label_show:!0,donut_label_format:void 0,donut_label_threshold:.05,donut_label_ratio:void 0,donut_width:void 0,donut_title:"",donut_expand:{},donut_expand_duration:50,spline_interpolation_type:"cardinal",regions:[],tooltip_show:!0,tooltip_grouped:!0,tooltip_format_title:void 0,tooltip_format_name:void 0,tooltip_format_value:void 0,tooltip_position:void 0,tooltip_contents:function(t,e,n,i){return this.getTooltipContent?this.getTooltipContent(t,e,n,i):""},tooltip_init_show:!1,tooltip_init_x:0,tooltip_init_position:{top:"0px",left:"50px"},tooltip_onshow:function(){},tooltip_onhide:function(){},title_text:void 0,title_padding:{top:0,right:0,bottom:0,left:0},title_position:"top-center"};return Object.keys(this.additionalConfig).forEach(function(e){t[e]=this.additionalConfig[e]},this),t},l.additionalConfig={},l.loadConfig=function(t){function e(){var t=i.shift();return t&&n&&"object"==typeof n&&t in n?(n=n[t],e()):t?void 0:n}var n,i,r,o=this.config;Object.keys(o).forEach(function(a){n=t,i=a.split("_"),r=e(),m(r)&&(o[a]=r)})},l.getScale=function(t,e,n){return(n?this.d3.time.scale():this.d3.scale.linear()).range([t,e])},l.getX=function(t,e,n,i){var r,o=this,a=o.getScale(t,e,o.isTimeSeries()),s=n?a.domain(n):a;o.isCategorized()?(i=i||function(){return 0},a=function(t,e){var n=s(t)+i(t);return e?n:Math.ceil(n)}):a=function(t,e){var n=s(t);return e?n:Math.ceil(n)};for(r in s)a[r]=s[r];return a.orgDomain=function(){return s.domain()},o.isCategorized()&&(a.domain=function(t){return arguments.length?(s.domain(t),a):(t=this.orgDomain(),[t[0],t[1]+1])}),a},l.getY=function(t,e,n){var i=this.getScale(t,e,this.isTimeSeriesY());return n&&i.domain(n),i},l.getYScale=function(t){return"y2"===this.axis.getId(t)?this.y2:this.y},l.getSubYScale=function(t){return"y2"===this.axis.getId(t)?this.subY2:this.subY},l.updateScales=function(){var t=this,e=t.config,n=!t.x;t.xMin=e.axis_rotated?1:0,t.xMax=e.axis_rotated?t.height:t.width,t.yMin=e.axis_rotated?0:t.height,t.yMax=e.axis_rotated?t.width:1,t.subXMin=t.xMin,t.subXMax=t.xMax,t.subYMin=e.axis_rotated?0:t.height2,t.subYMax=e.axis_rotated?t.width2:1,t.x=t.getX(t.xMin,t.xMax,n?void 0:t.x.orgDomain(),function(){return t.xAxis.tickOffset()}),t.y=t.getY(t.yMin,t.yMax,n?e.axis_y_default:t.y.domain()),t.y2=t.getY(t.yMin,t.yMax,n?e.axis_y2_default:t.y2.domain()),t.subX=t.getX(t.xMin,t.xMax,t.orgXDomain,function(e){return e%1?0:t.subXAxis.tickOffset()}),t.subY=t.getY(t.subYMin,t.subYMax,n?e.axis_y_default:t.subY.domain()),t.subY2=t.getY(t.subYMin,t.subYMax,n?e.axis_y2_default:t.subY2.domain()),t.xAxisTickFormat=t.axis.getXAxisTickFormat(),t.xAxisTickValues=t.axis.getXAxisTickValues(),t.yAxisTickValues=t.axis.getYAxisTickValues(),t.y2AxisTickValues=t.axis.getY2AxisTickValues(),t.xAxis=t.axis.getXAxis(t.x,t.xOrient,t.xAxisTickFormat,t.xAxisTickValues,e.axis_x_tick_outer),t.subXAxis=t.axis.getXAxis(t.subX,t.subXOrient,t.xAxisTickFormat,t.xAxisTickValues,e.axis_x_tick_outer),t.yAxis=t.axis.getYAxis(t.y,t.yOrient,e.axis_y_tick_format,t.yAxisTickValues,e.axis_y_tick_outer),t.y2Axis=t.axis.getYAxis(t.y2,t.y2Orient,e.axis_y2_tick_format,t.y2AxisTickValues,e.axis_y2_tick_outer),n||(t.brush&&t.brush.scale(t.subX),e.zoom_enabled&&t.zoom.scale(t.x)),t.updateArc&&t.updateArc()},l.getYDomainMin=function(t){var e,n,i,r,o,a,s=this,l=s.config,c=s.mapToIds(t),u=s.getValuesAsIdKeyed(t);if(l.data_groups.length>0)for(a=s.hasNegativeValueInTargets(t),e=0;e<l.data_groups.length;e++)if(r=l.data_groups[e].filter(function(t){return c.indexOf(t)>=0}),0!==r.length)for(i=r[0],a&&u[i]&&u[i].forEach(function(t,e){u[i][e]=t<0?t:0}),n=1;n<r.length;n++)o=r[n],u[o]&&u[o].forEach(function(t,e){s.axis.getId(o)!==s.axis.getId(i)||!u[i]||a&&+t>0||(u[i][e]+=+t)});return s.d3.min(Object.keys(u).map(function(t){return s.d3.min(u[t])}))},l.getYDomainMax=function(t){var e,n,i,r,o,a,s=this,l=s.config,c=s.mapToIds(t),u=s.getValuesAsIdKeyed(t);if(l.data_groups.length>0)for(a=s.hasPositiveValueInTargets(t),e=0;e<l.data_groups.length;e++)if(r=l.data_groups[e].filter(function(t){return c.indexOf(t)>=0}),0!==r.length)for(i=r[0],a&&u[i]&&u[i].forEach(function(t,e){u[i][e]=t>0?t:0}),n=1;n<r.length;n++)o=r[n],u[o]&&u[o].forEach(function(t,e){s.axis.getId(o)!==s.axis.getId(i)||!u[i]||a&&+t<0||(u[i][e]+=+t)});return s.d3.max(Object.keys(u).map(function(t){return s.d3.max(u[t])}))},l.getYDomain=function(t,e,n){var i,r,o,a,s,l,c,u,h,f,p,g=this,m=g.config,v=t.filter(function(t){return g.axis.getId(t.id)===e}),y=n?g.filterByXDomain(v,n):v,b="y2"===e?m.axis_y2_min:m.axis_y_min,w="y2"===e?m.axis_y2_max:m.axis_y_max,S=g.getYDomainMin(y),C=g.getYDomainMax(y),T="y2"===e?m.axis_y2_center:m.axis_y_center,k=g.hasType("bar",y)&&m.bar_zerobased||g.hasType("area",y)&&m.area_zerobased,A="y2"===e?m.axis_y2_inverted:m.axis_y_inverted,M=g.hasDataLabel()&&m.axis_rotated,L=g.hasDataLabel()&&!m.axis_rotated;return S=d(b)?b:d(w)?S<w?S:w-10:S,C=d(w)?w:d(b)?b<C?C:b+10:C,0===y.length?"y2"===e?g.y2.domain():g.y.domain():(isNaN(S)&&(S=0),isNaN(C)&&(C=S),S===C&&(S<0?C=0:S=0),f=S>=0&&C>=0,p=S<=0&&C<=0,(d(b)&&f||d(w)&&p)&&(k=!1),k&&(f&&(S=0),p&&(C=0)),r=Math.abs(C-S),o=a=s=.1*r,"undefined"!=typeof T&&(l=Math.max(Math.abs(S),Math.abs(C)),C=T+l,S=T-l),M?(c=g.getDataLabelLength(S,C,"width"),u=x(g.y.range()),h=[c[0]/u,c[1]/u],a+=r*(h[1]/(1-h[0]-h[1])),s+=r*(h[0]/(1-h[0]-h[1]))):L&&(c=g.getDataLabelLength(S,C,"height"),a+=g.axis.convertPixelsToAxisPadding(c[1],r),s+=g.axis.convertPixelsToAxisPadding(c[0],r)),"y"===e&&_(m.axis_y_padding)&&(a=g.axis.getPadding(m.axis_y_padding,"top",a,r),s=g.axis.getPadding(m.axis_y_padding,"bottom",s,r)),"y2"===e&&_(m.axis_y2_padding)&&(a=g.axis.getPadding(m.axis_y2_padding,"top",a,r),s=g.axis.getPadding(m.axis_y2_padding,"bottom",s,r)),k&&(f&&(s=S),p&&(a=-C)),i=[S-s,C+a],A?i.reverse():i)},l.getXDomainMin=function(t){var e=this,n=e.config;return m(n.axis_x_min)?e.isTimeSeries()?this.parseDate(n.axis_x_min):n.axis_x_min:e.d3.min(t,function(t){return e.d3.min(t.values,function(t){return t.x})})},l.getXDomainMax=function(t){var e=this,n=e.config;return m(n.axis_x_max)?e.isTimeSeries()?this.parseDate(n.axis_x_max):n.axis_x_max:e.d3.max(t,function(t){return e.d3.max(t.values,function(t){return t.x})})},l.getXDomainPadding=function(t){var e,n,i,r,o=this,a=o.config,s=t[1]-t[0];return o.isCategorized()?n=0:o.hasType("bar")?(e=o.getMaxDataCount(),n=e>1?s/(e-1)/2:.5):n=.01*s,"object"==typeof a.axis_x_padding&&_(a.axis_x_padding)?(i=d(a.axis_x_padding.left)?a.axis_x_padding.left:n,r=d(a.axis_x_padding.right)?a.axis_x_padding.right:n):i=r="number"==typeof a.axis_x_padding?a.axis_x_padding:n,{left:i,right:r}},l.getXDomain=function(t){var e=this,n=[e.getXDomainMin(t),e.getXDomainMax(t)],i=n[0],r=n[1],o=e.getXDomainPadding(n),a=0,s=0;return i-r!==0||e.isCategorized()||(e.isTimeSeries()?(i=new Date(.5*i.getTime()),r=new Date(1.5*r.getTime())):(i=0===i?1:.5*i,r=0===r?-1:1.5*r)),(i||0===i)&&(a=e.isTimeSeries()?new Date(i.getTime()-o.left):i-o.left),(r||0===r)&&(s=e.isTimeSeries()?new Date(r.getTime()+o.right):r+o.right),[a,s]},l.updateXDomain=function(t,e,n,i,r){var o=this,a=o.config;return n&&(o.x.domain(r?r:o.d3.extent(o.getXDomain(t))),o.orgXDomain=o.x.domain(),a.zoom_enabled&&o.zoom.scale(o.x).updateScaleExtent(),o.subX.domain(o.x.domain()),o.brush&&o.brush.scale(o.subX)),e&&(o.x.domain(r?r:!o.brush||o.brush.empty()?o.orgXDomain:o.brush.extent()),a.zoom_enabled&&o.zoom.scale(o.x).updateScaleExtent()),i&&o.x.domain(o.trimXDomain(o.x.orgDomain())),o.x.domain()},l.trimXDomain=function(t){var e=this.getZoomDomain(),n=e[0],i=e[1];return t[0]<=n&&(t[1]=+t[1]+(n-t[0]),t[0]=n),i<=t[1]&&(t[0]=+t[0]-(t[1]-i),t[1]=i),t},l.isX=function(t){var e=this,n=e.config;return n.data_x&&t===n.data_x||_(n.data_xs)&&S(n.data_xs,t)},l.isNotX=function(t){return!this.isX(t)},l.getXKey=function(t){var e=this,n=e.config;return n.data_x?n.data_x:_(n.data_xs)?n.data_xs[t]:null},l.getXValuesOfXKey=function(t,e){var n,i=this,r=e&&_(e)?i.mapToIds(e):[];return r.forEach(function(e){i.getXKey(e)===t&&(n=i.data.xs[e])}),n},l.getIndexByX=function(t){var e=this,n=e.filterByX(e.data.targets,t);return n.length?n[0].index:null},l.getXValue=function(t,e){var n=this;return t in n.data.xs&&n.data.xs[t]&&d(n.data.xs[t][e])?n.data.xs[t][e]:e},l.getOtherTargetXs=function(){var t=this,e=Object.keys(t.data.xs);return e.length?t.data.xs[e[0]]:null},l.getOtherTargetX=function(t){var e=this.getOtherTargetXs();return e&&t<e.length?e[t]:null},l.addXs=function(t){var e=this;Object.keys(t).forEach(function(n){e.config.data_xs[n]=t[n]})},l.hasMultipleX=function(t){return this.d3.set(Object.keys(t).map(function(e){return t[e]})).size()>1},l.isMultipleX=function(){return _(this.config.data_xs)||!this.config.data_xSort||this.hasType("scatter")},l.addName=function(t){var e,n=this;return t&&(e=n.config.data_names[t.id],t.name=void 0!==e?e:t.id),t},l.getValueOnIndex=function(t,e){var n=t.filter(function(t){return t.index===e});return n.length?n[0]:null},l.updateTargetX=function(t,e){var n=this;t.forEach(function(t){t.values.forEach(function(i,r){i.x=n.generateTargetX(e[r],t.id,r)}),n.data.xs[t.id]=e})},l.updateTargetXs=function(t,e){var n=this;t.forEach(function(t){e[t.id]&&n.updateTargetX([t],e[t.id])})},l.generateTargetX=function(t,e,n){var i,r=this;return i=r.isTimeSeries()?t?r.parseDate(t):r.parseDate(r.getXValue(e,n)):r.isCustomX()&&!r.isCategorized()?d(t)?+t:r.getXValue(e,n):n},l.cloneTarget=function(t){return{id:t.id,id_org:t.id_org,values:t.values.map(function(t){return{x:t.x,value:t.value,id:t.id}})}},l.updateXs=function(){var t=this;t.data.targets.length&&(t.xs=[],t.data.targets[0].values.forEach(function(e){t.xs[e.index]=e.x}))},l.getPrevX=function(t){var e=this.xs[t-1];return"undefined"!=typeof e?e:null},l.getNextX=function(t){var e=this.xs[t+1];return"undefined"!=typeof e?e:null},l.getMaxDataCount=function(){var t=this;return t.d3.max(t.data.targets,function(t){return t.values.length})},l.getMaxDataCountTarget=function(t){var e,n=t.length,i=0;return n>1?t.forEach(function(t){t.values.length>i&&(e=t,i=t.values.length)}):e=n?t[0]:null,e},l.getEdgeX=function(t){var e=this;return t.length?[e.d3.min(t,function(t){return t.values[0].x}),e.d3.max(t,function(t){return t.values[t.values.length-1].x})]:[0,0]},l.mapToIds=function(t){return t.map(function(t){return t.id})},l.mapToTargetIds=function(t){var e=this;return t?[].concat(t):e.mapToIds(e.data.targets)},l.hasTarget=function(t,e){var n,i=this.mapToIds(t);for(n=0;n<i.length;n++)if(i[n]===e)return!0;return!1},l.isTargetToShow=function(t){return this.hiddenTargetIds.indexOf(t)<0},l.isLegendToShow=function(t){return this.hiddenLegendIds.indexOf(t)<0},l.filterTargetsToShow=function(t){var e=this;return t.filter(function(t){return e.isTargetToShow(t.id)})},l.mapTargetsToUniqueXs=function(t){var e=this,n=e.d3.set(e.d3.merge(t.map(function(t){return t.values.map(function(t){return+t.x})}))).values();return n=e.isTimeSeries()?n.map(function(t){return new Date(+t)}):n.map(function(t){return+t}),n.sort(function(t,e){return t<e?-1:t>e?1:t>=e?0:NaN})},l.addHiddenTargetIds=function(t){this.hiddenTargetIds=this.hiddenTargetIds.concat(t)},l.removeHiddenTargetIds=function(t){this.hiddenTargetIds=this.hiddenTargetIds.filter(function(e){return t.indexOf(e)<0})},l.addHiddenLegendIds=function(t){this.hiddenLegendIds=this.hiddenLegendIds.concat(t)},l.removeHiddenLegendIds=function(t){this.hiddenLegendIds=this.hiddenLegendIds.filter(function(e){return t.indexOf(e)<0})},l.getValuesAsIdKeyed=function(t){var e={};return t.forEach(function(t){e[t.id]=[],t.values.forEach(function(n){e[t.id].push(n.value)})}),e},l.checkValueInTargets=function(t,e){var n,i,r,o=Object.keys(t);for(n=0;n<o.length;n++)for(r=t[o[n]].values,i=0;i<r.length;i++)if(e(r[i].value))return!0;return!1},l.hasNegativeValueInTargets=function(t){return this.checkValueInTargets(t,function(t){return t<0})},l.hasPositiveValueInTargets=function(t){return this.checkValueInTargets(t,function(t){return t>0})},l.isOrderDesc=function(){var t=this.config;return"string"==typeof t.data_order&&"desc"===t.data_order.toLowerCase()},l.isOrderAsc=function(){var t=this.config;return"string"==typeof t.data_order&&"asc"===t.data_order.toLowerCase()},l.orderTargets=function(t){var e=this,n=e.config,i=e.isOrderAsc(),r=e.isOrderDesc();return i||r?t.sort(function(t,e){var n=function(t,e){return t+Math.abs(e.value)},r=t.values.reduce(n,0),o=e.values.reduce(n,0);return i?o-r:r-o}):f(n.data_order)&&t.sort(n.data_order),t},l.filterByX=function(t,e){return this.d3.merge(t.map(function(t){return t.values})).filter(function(t){return t.x-e===0})},l.filterRemoveNull=function(t){return t.filter(function(t){return d(t.value)})},l.filterByXDomain=function(t,e){return t.map(function(t){return{id:t.id,id_org:t.id_org,values:t.values.filter(function(t){return e[0]<=t.x&&t.x<=e[1]})}})},l.hasDataLabel=function(){var t=this.config;return!("boolean"!=typeof t.data_labels||!t.data_labels)||!("object"!=typeof t.data_labels||!_(t.data_labels))},l.getDataLabelLength=function(t,e,n){var i=this,r=[0,0],o=1.3;return i.selectChart.select("svg").selectAll(".dummy").data([t,e]).enter().append("text").text(function(t){return i.dataLabelFormat(t.id)(t)}).each(function(t,e){r[e]=this.getBoundingClientRect()[n]*o}).remove(),r},l.isNoneArc=function(t){return this.hasTarget(this.data.targets,t.id)},l.isArc=function(t){return"data"in t&&this.hasTarget(this.data.targets,t.data.id)},l.findSameXOfValues=function(t,e){var n,i=t[e].x,r=[];for(n=e-1;n>=0&&i===t[n].x;n--)r.push(t[n]);for(n=e;n<t.length&&i===t[n].x;n++)r.push(t[n]);return r},l.findClosestFromTargets=function(t,e){var n,i=this;return n=t.map(function(t){return i.findClosest(t.values,e)}),i.findClosest(n,e)},l.findClosest=function(t,e){var n,i=this,r=i.config.point_sensitivity;return t.filter(function(t){return t&&i.isBarType(t.id)}).forEach(function(t){var e=i.main.select("."+h.bars+i.getTargetSelectorSuffix(t.id)+" ."+h.bar+"-"+t.index).node();!n&&i.isWithinBar(e)&&(n=t)}),t.filter(function(t){return t&&!i.isBarType(t.id)}).forEach(function(t){var o=i.dist(t,e);o<r&&(r=o,n=t)}),n},l.dist=function(t,e){var n=this,i=n.config,r=i.axis_rotated?1:0,o=i.axis_rotated?0:1,a=n.circleY(t,t.index),s=n.x(t.x);return Math.sqrt(Math.pow(s-e[r],2)+Math.pow(a-e[o],2))},l.convertValuesToStep=function(t){var e,n=[].concat(t);if(!this.isCategorized())return t;for(e=t.length+1;0<e;e--)n[e]=n[e-1];return n[0]={x:n[0].x-1,value:n[0].value,id:n[0].id},n[t.length+1]={x:n[t.length].x+1,value:n[t.length].value,id:n[t.length].id},n},l.updateDataAttributes=function(t,e){var n=this,i=n.config,r=i["data_"+t];return"undefined"==typeof e?r:(Object.keys(e).forEach(function(t){r[t]=e[t]}),n.redraw({withLegend:!0}),r)},l.convertUrlToData=function(t,e,n,i,r){var o=this,a=e?e:"csv",s=o.d3.xhr(t);n&&Object.keys(n).forEach(function(t){s.header(t,n[t])}),s.get(function(t,e){var n;if(!e)throw new Error(t.responseURL+" "+t.status+" ("+t.statusText+")");n="json"===a?o.convertJsonToData(JSON.parse(e.response),i):"tsv"===a?o.convertTsvToData(e.response):o.convertCsvToData(e.response),r.call(o,n)})},l.convertXsvToData=function(t,e){var n,i=e.parseRows(t);return 1===i.length?(n=[{}],i[0].forEach(function(t){n[0][t]=null})):n=e.parse(t),n},l.convertCsvToData=function(t){return this.convertXsvToData(t,this.d3.csv)},l.convertTsvToData=function(t){return this.convertXsvToData(t,this.d3.tsv)},l.convertJsonToData=function(t,e){var n,i,r=this,o=[];return e?(e.x?(n=e.value.concat(e.x),r.config.data_x=e.x):n=e.value,o.push(n),t.forEach(function(t){var e=[];n.forEach(function(n){var i=r.findValueInJson(t,n);g(i)&&(i=null),e.push(i)}),o.push(e)}),i=r.convertRowsToData(o)):(Object.keys(t).forEach(function(e){o.push([e].concat(t[e]))}),i=r.convertColumnsToData(o)),i},l.findValueInJson=function(t,e){e=e.replace(/\[(\w+)\]/g,".$1"),e=e.replace(/^\./,"");for(var n=e.split("."),i=0;i<n.length;++i){var r=n[i];if(!(r in t))return;t=t[r]}return t},l.convertRowsToData=function(t){var e,n,i=t[0],r={},o=[];for(e=1;e<t.length;e++){for(r={},n=0;n<t[e].length;n++){if(g(t[e][n]))throw new Error("Source data is missing a component at ("+e+","+n+")!");r[i[n]]=t[e][n]}o.push(r)}return o},l.convertColumnsToData=function(t){var e,n,i,r=[];for(e=0;e<t.length;e++)for(i=t[e][0],n=1;n<t[e].length;n++){if(g(r[n-1])&&(r[n-1]={}),g(t[e][n]))throw new Error("Source data is missing a component at ("+e+","+n+")!");r[n-1][i]=t[e][n]}return r},l.convertDataToTargets=function(t,e){var n,i=this,r=i.config,o=i.d3.keys(t[0]).filter(i.isNotX,i),a=i.d3.keys(t[0]).filter(i.isX,i);return o.forEach(function(n){var o=i.getXKey(n);i.isCustomX()||i.isTimeSeries()?a.indexOf(o)>=0?i.data.xs[n]=(e&&i.data.xs[n]?i.data.xs[n]:[]).concat(t.map(function(t){return t[o]}).filter(d).map(function(t,e){return i.generateTargetX(t,n,e)})):r.data_x?i.data.xs[n]=i.getOtherTargetXs():_(r.data_xs)&&(i.data.xs[n]=i.getXValuesOfXKey(o,i.data.targets)):i.data.xs[n]=t.map(function(t,e){return e})}),o.forEach(function(t){if(!i.data.xs[t])throw new Error('x is not defined for id = "'+t+'".')}),n=o.map(function(e,n){var o=r.data_idConverter(e);return{id:o,id_org:e,values:t.map(function(t,a){var s,l=i.getXKey(e),c=t[l],u=null===t[e]||isNaN(t[e])?null:+t[e];return i.isCustomX()&&i.isCategorized()&&0===n&&!g(c)?(0===n&&0===a&&(r.axis_x_categories=[]),s=r.axis_x_categories.indexOf(c),s===-1&&(s=r.axis_x_categories.length,r.axis_x_categories.push(c))):s=i.generateTargetX(c,e,a),(g(t[e])||i.data.xs[e].length<=a)&&(s=void 0),{x:s,value:u,id:o}}).filter(function(t){return m(t.x)})}}),n.forEach(function(t){var e;r.data_xSort&&(t.values=t.values.sort(function(t,e){var n=t.x||0===t.x?t.x:1/0,i=e.x||0===e.x?e.x:1/0;return n-i})),e=0,t.values.forEach(function(t){t.index=e++}),i.data.xs[t.id].sort(function(t,e){return t-e})}),i.hasNegativeValue=i.hasNegativeValueInTargets(n),i.hasPositiveValue=i.hasPositiveValueInTargets(n),r.data_type&&i.setTargetType(i.mapToIds(n).filter(function(t){return!(t in r.data_types)}),r.data_type),n.forEach(function(t){i.addCache(t.id_org,t)}),n},l.load=function(t,e){var n=this;t&&(e.filter&&(t=t.filter(e.filter)),(e.type||e.types)&&t.forEach(function(t){var i=e.types&&e.types[t.id]?e.types[t.id]:e.type;n.setTargetType(t.id,i)}),n.data.targets.forEach(function(e){for(var n=0;n<t.length;n++)if(e.id===t[n].id){e.values=t[n].values,t.splice(n,1);break}}),n.data.targets=n.data.targets.concat(t)),n.updateTargets(n.data.targets),n.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0}),e.done&&e.done()},l.loadFromArgs=function(t){var e=this;t.data?e.load(e.convertDataToTargets(t.data),t):t.url?e.convertUrlToData(t.url,t.mimeType,t.headers,t.keys,function(n){e.load(e.convertDataToTargets(n),t)}):t.json?e.load(e.convertDataToTargets(e.convertJsonToData(t.json,t.keys)),t):t.rows?e.load(e.convertDataToTargets(e.convertRowsToData(t.rows)),t):t.columns?e.load(e.convertDataToTargets(e.convertColumnsToData(t.columns)),t):e.load(null,t)},l.unload=function(t,e){var n=this;return e||(e=function(){}),t=t.filter(function(t){return n.hasTarget(n.data.targets,t)}),t&&0!==t.length?(n.svg.selectAll(t.map(function(t){return n.selectorTarget(t)})).transition().style("opacity",0).remove().call(n.endall,e),void t.forEach(function(t){n.withoutFadeIn[t]=!1,n.legend&&n.legend.selectAll("."+h.legendItem+n.getTargetSelectorSuffix(t)).remove(),n.data.targets=n.data.targets.filter(function(e){return e.id!==t})})):void e()},l.categoryName=function(t){var e=this.config;return t<e.axis_x_categories.length?e.axis_x_categories[t]:t},l.initEventRect=function(){var t=this;t.main.select("."+h.chart).append("g").attr("class",h.eventRects).style("fill-opacity",0)},l.redrawEventRect=function(){var t,e,n=this,i=n.config,r=n.isMultipleX(),o=n.main.select("."+h.eventRects).style("cursor",i.zoom_enabled?i.axis_rotated?"ns-resize":"ew-resize":null).classed(h.eventRectsMultiple,r).classed(h.eventRectsSingle,!r);o.selectAll("."+h.eventRect).remove(),n.eventRect=o.selectAll("."+h.eventRect),r?(t=n.eventRect.data([0]),n.generateEventRectsForMultipleXs(t.enter()),n.updateEventRect(t)):(e=n.getMaxDataCountTarget(n.data.targets),o.datum(e?e.values:[]),n.eventRect=o.selectAll("."+h.eventRect),t=n.eventRect.data(function(t){return t}),n.generateEventRectsForSingleX(t.enter()),n.updateEventRect(t),t.exit().remove())},l.updateEventRect=function(t){var e,n,i,r,o,a,s=this,l=s.config;t=t||s.eventRect.data(function(t){return t}),s.isMultipleX()?(e=0,n=0,i=s.width,r=s.height):(!s.isCustomX()&&!s.isTimeSeries()||s.isCategorized()?(o=s.getEventRectWidth(),a=function(t){return s.x(t.x)-o/2}):(s.updateXs(),o=function(t){var e=s.getPrevX(t.index),n=s.getNextX(t.index);return null===e&&null===n?l.axis_rotated?s.height:s.width:(null===e&&(e=s.x.domain()[0]),null===n&&(n=s.x.domain()[1]),Math.max(0,(s.x(n)-s.x(e))/2))},a=function(t){var e=s.getPrevX(t.index),n=s.getNextX(t.index),i=s.data.xs[t.id][t.index];return null===e&&null===n?0:(null===e&&(e=s.x.domain()[0]),(s.x(i)+s.x(e))/2)}),e=l.axis_rotated?0:a,n=l.axis_rotated?a:0,i=l.axis_rotated?s.width:o,r=l.axis_rotated?o:s.height),t.attr("class",s.classEvent.bind(s)).attr("x",e).attr("y",n).attr("width",i).attr("height",r)},l.generateEventRectsForSingleX=function(t){var e=this,n=e.d3,i=e.config;t.append("rect").attr("class",e.classEvent.bind(e)).style("cursor",i.data_selection_enabled&&i.data_selection_grouped?"pointer":null).on("mouseover",function(t){var n=t.index;e.dragging||e.flowing||e.hasArcType()||(i.point_focus_expand_enabled&&e.expandCircles(n,null,!0),e.expandBars(n,null,!0),e.main.selectAll("."+h.shape+"-"+n).each(function(t){i.data_onmouseover.call(e.api,t)}))}).on("mouseout",function(t){var n=t.index;e.config&&(e.hasArcType()||(e.hideXGridFocus(),e.hideTooltip(),e.unexpandCircles(),e.unexpandBars(),e.main.selectAll("."+h.shape+"-"+n).each(function(t){i.data_onmouseout.call(e.api,t)})))}).on("mousemove",function(t){var r,o=t.index,a=e.svg.select("."+h.eventRect+"-"+o);e.dragging||e.flowing||e.hasArcType()||(e.isStepType(t)&&"step-after"===e.config.line_step_type&&n.mouse(this)[0]<e.x(e.getXValue(t.id,o))&&(o-=1),r=e.filterTargetsToShow(e.data.targets).map(function(t){return e.addName(e.getValueOnIndex(t.values,o))}),i.tooltip_grouped&&(e.showTooltip(r,this),e.showXGridFocus(r)),(!i.tooltip_grouped||i.data_selection_enabled&&!i.data_selection_grouped)&&e.main.selectAll("."+h.shape+"-"+o).each(function(){n.select(this).classed(h.EXPANDED,!0),i.data_selection_enabled&&a.style("cursor",i.data_selection_grouped?"pointer":null),i.tooltip_grouped||(e.hideXGridFocus(),e.hideTooltip(),i.data_selection_grouped||(e.unexpandCircles(o),e.unexpandBars(o)))}).filter(function(t){return e.isWithinShape(this,t)}).each(function(t){i.data_selection_enabled&&(i.data_selection_grouped||i.data_selection_isselectable(t))&&a.style("cursor","pointer"),i.tooltip_grouped||(e.showTooltip([t],this),e.showXGridFocus([t]),i.point_focus_expand_enabled&&e.expandCircles(o,t.id,!0),e.expandBars(o,t.id,!0))}))}).on("click",function(t){var r=t.index;if(!e.hasArcType()&&e.toggleShape){if(e.cancelClick)return void(e.cancelClick=!1);e.isStepType(t)&&"step-after"===i.line_step_type&&n.mouse(this)[0]<e.x(e.getXValue(t.id,r))&&(r-=1),e.main.selectAll("."+h.shape+"-"+r).each(function(t){(i.data_selection_grouped||e.isWithinShape(this,t))&&(e.toggleShape(this,t,r),
+e.config.data_onclick.call(e.api,t,this))})}}).call(i.data_selection_draggable&&e.drag?n.behavior.drag().origin(Object).on("drag",function(){e.drag(n.mouse(this))}).on("dragstart",function(){e.dragstart(n.mouse(this))}).on("dragend",function(){e.dragend()}):function(){})},l.generateEventRectsForMultipleXs=function(t){function e(){n.svg.select("."+h.eventRect).style("cursor",null),n.hideXGridFocus(),n.hideTooltip(),n.unexpandCircles(),n.unexpandBars()}var n=this,i=n.d3,r=n.config;t.append("rect").attr("x",0).attr("y",0).attr("width",n.width).attr("height",n.height).attr("class",h.eventRect).on("mouseout",function(){n.config&&(n.hasArcType()||e())}).on("mousemove",function(){var t,o,a,s,l=n.filterTargetsToShow(n.data.targets);if(!n.dragging&&!n.hasArcType(l)){if(t=i.mouse(this),o=n.findClosestFromTargets(l,t),!n.mouseover||o&&o.id===n.mouseover.id||(r.data_onmouseout.call(n.api,n.mouseover),n.mouseover=void 0),!o)return void e();a=n.isScatterType(o)||!r.tooltip_grouped?[o]:n.filterByX(l,o.x),s=a.map(function(t){return n.addName(t)}),n.showTooltip(s,this),r.point_focus_expand_enabled&&n.expandCircles(o.index,o.id,!0),n.expandBars(o.index,o.id,!0),n.showXGridFocus(s),(n.isBarType(o.id)||n.dist(o,t)<r.point_sensitivity)&&(n.svg.select("."+h.eventRect).style("cursor","pointer"),n.mouseover||(r.data_onmouseover.call(n.api,o),n.mouseover=o))}}).on("click",function(){var t,e,o=n.filterTargetsToShow(n.data.targets);n.hasArcType(o)||(t=i.mouse(this),e=n.findClosestFromTargets(o,t),e&&(n.isBarType(e.id)||n.dist(e,t)<r.point_sensitivity)&&n.main.selectAll("."+h.shapes+n.getTargetSelectorSuffix(e.id)).selectAll("."+h.shape+"-"+e.index).each(function(){(r.data_selection_grouped||n.isWithinShape(this,e))&&(n.toggleShape(this,e,e.index),n.config.data_onclick.call(n.api,e,this))}))}).call(r.data_selection_draggable&&n.drag?i.behavior.drag().origin(Object).on("drag",function(){n.drag(i.mouse(this))}).on("dragstart",function(){n.dragstart(i.mouse(this))}).on("dragend",function(){n.dragend()}):function(){})},l.dispatchEvent=function(e,n,i){var r=this,o="."+h.eventRect+(r.isMultipleX()?"":"-"+n),a=r.main.select(o).node(),s=a.getBoundingClientRect(),l=s.left+(i?i[0]:0),c=s.top+(i?i[1]:0),u=document.createEvent("MouseEvents");u.initMouseEvent(e,!0,!0,t,0,l,c,l,c,!1,!1,!1,!1,0,null),a.dispatchEvent(u)},l.getCurrentWidth=function(){var t=this,e=t.config;return e.size_width?e.size_width:t.getParentWidth()},l.getCurrentHeight=function(){var t=this,e=t.config,n=e.size_height?e.size_height:t.getParentHeight();return n>0?n:320/(t.hasType("gauge")&&!e.gauge_fullCircle?2:1)},l.getCurrentPaddingTop=function(){var t=this,e=t.config,n=d(e.padding_top)?e.padding_top:0;return t.title&&t.title.node()&&(n+=t.getTitlePadding()),n},l.getCurrentPaddingBottom=function(){var t=this.config;return d(t.padding_bottom)?t.padding_bottom:0},l.getCurrentPaddingLeft=function(t){var e=this,n=e.config;return d(n.padding_left)?n.padding_left:n.axis_rotated?n.axis_x_show?Math.max(v(e.getAxisWidthByAxisId("x",t)),40):1:!n.axis_y_show||n.axis_y_inner?e.axis.getYAxisLabelPosition().isOuter?30:1:v(e.getAxisWidthByAxisId("y",t))},l.getCurrentPaddingRight=function(){var t=this,e=t.config,n=10,i=t.isLegendRight?t.getLegendWidth()+20:0;return d(e.padding_right)?e.padding_right+1:e.axis_rotated?n+i:!e.axis_y2_show||e.axis_y2_inner?2+i+(t.axis.getY2AxisLabelPosition().isOuter?20:0):v(t.getAxisWidthByAxisId("y2"))+i},l.getParentRectValue=function(t){for(var e,n=this.selectChart.node();n&&"BODY"!==n.tagName;){try{e=n.getBoundingClientRect()[t]}catch(i){"width"===t&&(e=n.offsetWidth)}if(e)break;n=n.parentNode}return e},l.getParentWidth=function(){return this.getParentRectValue("width")},l.getParentHeight=function(){var t=this.selectChart.style("height");return t.indexOf("px")>0?+t.replace("px",""):0},l.getSvgLeft=function(t){var e=this,n=e.config,i=n.axis_rotated||!n.axis_rotated&&!n.axis_y_inner,r=n.axis_rotated?h.axisX:h.axisY,o=e.main.select("."+r).node(),a=o&&i?o.getBoundingClientRect():{right:0},s=e.selectChart.node().getBoundingClientRect(),l=e.hasArcType(),c=a.right-s.left-(l?0:e.getCurrentPaddingLeft(t));return c>0?c:0},l.getAxisWidthByAxisId=function(t,e){var n=this,i=n.axis.getLabelPositionById(t);return n.axis.getMaxTickWidth(t,e)+(i.isInner?20:40)},l.getHorizontalAxisHeight=function(t){var e=this,n=e.config,i=30;return"x"!==t||n.axis_x_show?"x"===t&&n.axis_x_height?n.axis_x_height:"y"!==t||n.axis_y_show?"y2"!==t||n.axis_y2_show?("x"===t&&!n.axis_rotated&&n.axis_x_tick_rotate&&(i=30+e.axis.getMaxTickWidth(t)*Math.cos(Math.PI*(90-n.axis_x_tick_rotate)/180)),"y"===t&&n.axis_rotated&&n.axis_y_tick_rotate&&(i=30+e.axis.getMaxTickWidth(t)*Math.cos(Math.PI*(90-n.axis_y_tick_rotate)/180)),i+(e.axis.getLabelPositionById(t).isInner?0:10)+("y2"===t?-10:0)):e.rotated_padding_top:!n.legend_show||e.isLegendRight||e.isLegendInset?1:10:8},l.getEventRectWidth=function(){return Math.max(0,this.xAxis.tickInterval())},l.getShapeIndices=function(t){var e,n,i=this,r=i.config,o={},a=0;return i.filterTargetsToShow(i.data.targets.filter(t,i)).forEach(function(t){for(e=0;e<r.data_groups.length;e++)if(!(r.data_groups[e].indexOf(t.id)<0))for(n=0;n<r.data_groups[e].length;n++)if(r.data_groups[e][n]in o){o[t.id]=o[r.data_groups[e][n]];break}g(o[t.id])&&(o[t.id]=a++)}),o.__max__=a-1,o},l.getShapeX=function(t,e,n,i){var r=this,o=i?r.subX:r.x;return function(i){var r=i.id in n?n[i.id]:0;return i.x||0===i.x?o(i.x)-t*(e/2-r):0}},l.getShapeY=function(t){var e=this;return function(n){var i=t?e.getSubYScale(n.id):e.getYScale(n.id);return i(n.value)}},l.getShapeOffset=function(t,e,n){var i=this,r=i.orderTargets(i.filterTargetsToShow(i.data.targets.filter(t,i))),o=r.map(function(t){return t.id});return function(t,a){var s=n?i.getSubYScale(t.id):i.getYScale(t.id),l=s(0),c=l;return r.forEach(function(n){var r=i.isStepType(t)?i.convertValuesToStep(n.values):n.values;n.id!==t.id&&e[n.id]===e[t.id]&&o.indexOf(n.id)<o.indexOf(t.id)&&("undefined"!=typeof r[a]&&+r[a].x===+t.x||(a=-1,r.forEach(function(e,n){e.x===t.x&&(a=n)})),a in r&&r[a].value*t.value>=0&&(c+=s(r[a].value)-l))}),c}},l.isWithinShape=function(t,e){var n,i=this,r=i.d3.select(t);return i.isTargetToShow(e.id)?"circle"===t.nodeName?n=i.isStepType(e)?i.isWithinStep(t,i.getYScale(e.id)(e.value)):i.isWithinCircle(t,1.5*i.pointSelectR(e)):"path"===t.nodeName&&(n=!r.classed(h.bar)||i.isWithinBar(t)):n=!1,n},l.getInterpolate=function(t){var e=this,n=e.isInterpolationType(e.config.spline_interpolation_type)?e.config.spline_interpolation_type:"cardinal";return e.isSplineType(t)?n:e.isStepType(t)?e.config.line_step_type:"linear"},l.initLine=function(){var t=this;t.main.select("."+h.chart).append("g").attr("class",h.chartLines)},l.updateTargetsForLine=function(t){var e,n,i=this,r=i.config,o=i.classChartLine.bind(i),a=i.classLines.bind(i),s=i.classAreas.bind(i),l=i.classCircles.bind(i),c=i.classFocus.bind(i);e=i.main.select("."+h.chartLines).selectAll("."+h.chartLine).data(t).attr("class",function(t){return o(t)+c(t)}),n=e.enter().append("g").attr("class",o).style("opacity",0).style("pointer-events","none"),n.append("g").attr("class",a),n.append("g").attr("class",s),n.append("g").attr("class",function(t){return i.generateClass(h.selectedCircles,t.id)}),n.append("g").attr("class",l).style("cursor",function(t){return r.data_selection_isselectable(t)?"pointer":null}),t.forEach(function(t){i.main.selectAll("."+h.selectedCircles+i.getTargetSelectorSuffix(t.id)).selectAll("."+h.selectedCircle).each(function(e){e.value=t.values[e.index].value})})},l.updateLine=function(t){var e=this;e.mainLine=e.main.selectAll("."+h.lines).selectAll("."+h.line).data(e.lineData.bind(e)),e.mainLine.enter().append("path").attr("class",e.classLine.bind(e)).style("stroke",e.color),e.mainLine.style("opacity",e.initialOpacity.bind(e)).style("shape-rendering",function(t){return e.isStepType(t)?"crispEdges":""}).attr("transform",null),e.mainLine.exit().transition().duration(t).style("opacity",0).remove()},l.redrawLine=function(t,e){return[(e?this.mainLine.transition(Math.random().toString()):this.mainLine).attr("d",t).style("stroke",this.color).style("opacity",1)]},l.generateDrawLine=function(t,e){var n=this,i=n.config,r=n.d3.svg.line(),o=n.generateGetLinePoints(t,e),a=e?n.getSubYScale:n.getYScale,s=function(t){return(e?n.subxx:n.xx).call(n,t)},l=function(t,e){return i.data_groups.length>0?o(t,e)[0][1]:a.call(n,t.id)(t.value)};return r=i.axis_rotated?r.x(l).y(s):r.x(s).y(l),i.line_connectNull||(r=r.defined(function(t){return null!=t.value})),function(t){var o,s=i.line_connectNull?n.filterRemoveNull(t.values):t.values,l=e?n.x:n.subX,c=a.call(n,t.id),u=0,h=0;return n.isLineType(t)?i.data_regions[t.id]?o=n.lineWithRegions(s,l,c,i.data_regions[t.id]):(n.isStepType(t)&&(s=n.convertValuesToStep(s)),o=r.interpolate(n.getInterpolate(t))(s)):(s[0]&&(u=l(s[0].x),h=c(s[0].value)),o=i.axis_rotated?"M "+h+" "+u:"M "+u+" "+h),o?o:"M 0 0"}},l.generateGetLinePoints=function(t,e){var n=this,i=n.config,r=t.__max__+1,o=n.getShapeX(0,r,t,!!e),a=n.getShapeY(!!e),s=n.getShapeOffset(n.isLineType,t,!!e),l=e?n.getSubYScale:n.getYScale;return function(t,e){var r=l.call(n,t.id)(0),c=s(t,e)||r,u=o(t),h=a(t);return i.axis_rotated&&(0<t.value&&h<r||t.value<0&&r<h)&&(h=r),[[u,h-(r-c)],[u,h-(r-c)],[u,h-(r-c)],[u,h-(r-c)]]}},l.lineWithRegions=function(t,e,n,i){function r(t,e){var n;for(n=0;n<e.length;n++)if(e[n].start<t&&t<=e[n].end)return!0;return!1}function o(t){return"M"+t[0][0]+" "+t[0][1]+" "+t[1][0]+" "+t[1][1]}var a,s,l,c,u,h,d,f,p,v,y,x,b=this,_=b.config,w=-1,S="M",C=b.isCategorized()?.5:0,T=[];if(m(i))for(a=0;a<i.length;a++)T[a]={},g(i[a].start)?T[a].start=t[0].x:T[a].start=b.isTimeSeries()?b.parseDate(i[a].start):i[a].start,g(i[a].end)?T[a].end=t[t.length-1].x:T[a].end=b.isTimeSeries()?b.parseDate(i[a].end):i[a].end;for(y=_.axis_rotated?function(t){return n(t.value)}:function(t){return e(t.x)},x=_.axis_rotated?function(t){return e(t.x)}:function(t){return n(t.value)},l=b.isTimeSeries()?function(t,i,r,a){var s,l=t.x.getTime(),c=i.x-t.x,h=new Date(l+c*r),d=new Date(l+c*(r+a));return s=_.axis_rotated?[[n(u(r)),e(h)],[n(u(r+a)),e(d)]]:[[e(h),n(u(r))],[e(d),n(u(r+a))]],o(s)}:function(t,i,r,a){var s;return s=_.axis_rotated?[[n(u(r),!0),e(c(r))],[n(u(r+a),!0),e(c(r+a))]]:[[e(c(r),!0),n(u(r))],[e(c(r+a),!0),n(u(r+a))]],o(s)},a=0;a<t.length;a++){if(g(T)||!r(t[a].x,T))S+=" "+y(t[a])+" "+x(t[a]);else for(c=b.getScale(t[a-1].x+C,t[a].x+C,b.isTimeSeries()),u=b.getScale(t[a-1].value,t[a].value),h=e(t[a].x)-e(t[a-1].x),d=n(t[a].value)-n(t[a-1].value),f=Math.sqrt(Math.pow(h,2)+Math.pow(d,2)),p=2/f,v=2*p,s=p;s<=1;s+=v)S+=l(t[a-1],t[a],s,p);w=t[a].x}return S},l.updateArea=function(t){var e=this,n=e.d3;e.mainArea=e.main.selectAll("."+h.areas).selectAll("."+h.area).data(e.lineData.bind(e)),e.mainArea.enter().append("path").attr("class",e.classArea.bind(e)).style("fill",e.color).style("opacity",function(){return e.orgAreaOpacity=+n.select(this).style("opacity"),0}),e.mainArea.style("opacity",e.orgAreaOpacity),e.mainArea.exit().transition().duration(t).style("opacity",0).remove()},l.redrawArea=function(t,e){return[(e?this.mainArea.transition(Math.random().toString()):this.mainArea).attr("d",t).style("fill",this.color).style("opacity",this.orgAreaOpacity)]},l.generateDrawArea=function(t,e){var n=this,i=n.config,r=n.d3.svg.area(),o=n.generateGetAreaPoints(t,e),a=e?n.getSubYScale:n.getYScale,s=function(t){return(e?n.subxx:n.xx).call(n,t)},l=function(t,e){return i.data_groups.length>0?o(t,e)[0][1]:a.call(n,t.id)(n.getAreaBaseValue(t.id))},c=function(t,e){return i.data_groups.length>0?o(t,e)[1][1]:a.call(n,t.id)(t.value)};return r=i.axis_rotated?r.x0(l).x1(c).y(s):r.x(s).y0(i.area_above?0:l).y1(c),i.line_connectNull||(r=r.defined(function(t){return null!==t.value})),function(t){var e,o=i.line_connectNull?n.filterRemoveNull(t.values):t.values,a=0,s=0;return n.isAreaType(t)?(n.isStepType(t)&&(o=n.convertValuesToStep(o)),e=r.interpolate(n.getInterpolate(t))(o)):(o[0]&&(a=n.x(o[0].x),s=n.getYScale(t.id)(o[0].value)),e=i.axis_rotated?"M "+s+" "+a:"M "+a+" "+s),e?e:"M 0 0"}},l.getAreaBaseValue=function(){return 0},l.generateGetAreaPoints=function(t,e){var n=this,i=n.config,r=t.__max__+1,o=n.getShapeX(0,r,t,!!e),a=n.getShapeY(!!e),s=n.getShapeOffset(n.isAreaType,t,!!e),l=e?n.getSubYScale:n.getYScale;return function(t,e){var r=l.call(n,t.id)(0),c=s(t,e)||r,u=o(t),h=a(t);return i.axis_rotated&&(0<t.value&&h<r||t.value<0&&r<h)&&(h=r),[[u,c],[u,h-(r-c)],[u,h-(r-c)],[u,c]]}},l.updateCircle=function(){var t=this;t.mainCircle=t.main.selectAll("."+h.circles).selectAll("."+h.circle).data(t.lineOrScatterData.bind(t)),t.mainCircle.enter().append("circle").attr("class",t.classCircle.bind(t)).attr("r",t.pointR.bind(t)).style("fill",t.color),t.mainCircle.style("opacity",t.initialOpacityForCircle.bind(t)),t.mainCircle.exit().remove()},l.redrawCircle=function(t,e,n){var i=this.main.selectAll("."+h.selectedCircle);return[(n?this.mainCircle.transition(Math.random().toString()):this.mainCircle).style("opacity",this.opacityForCircle.bind(this)).style("fill",this.color).attr("cx",t).attr("cy",e),(n?i.transition(Math.random().toString()):i).attr("cx",t).attr("cy",e)]},l.circleX=function(t){return t.x||0===t.x?this.x(t.x):null},l.updateCircleY=function(){var t,e,n=this;n.config.data_groups.length>0?(t=n.getShapeIndices(n.isLineType),e=n.generateGetLinePoints(t),n.circleY=function(t,n){return e(t,n)[0][1]}):n.circleY=function(t){return n.getYScale(t.id)(t.value)}},l.getCircles=function(t,e){var n=this;return(e?n.main.selectAll("."+h.circles+n.getTargetSelectorSuffix(e)):n.main).selectAll("."+h.circle+(d(t)?"-"+t:""))},l.expandCircles=function(t,e,n){var i=this,r=i.pointExpandedR.bind(i);n&&i.unexpandCircles(),i.getCircles(t,e).classed(h.EXPANDED,!0).attr("r",r)},l.unexpandCircles=function(t){var e=this,n=e.pointR.bind(e);e.getCircles(t).filter(function(){return e.d3.select(this).classed(h.EXPANDED)}).classed(h.EXPANDED,!1).attr("r",n)},l.pointR=function(t){var e=this,n=e.config;return e.isStepType(t)?0:f(n.point_r)?n.point_r(t):n.point_r},l.pointExpandedR=function(t){var e=this,n=e.config;return n.point_focus_expand_enabled?n.point_focus_expand_r?n.point_focus_expand_r:1.75*e.pointR(t):e.pointR(t)},l.pointSelectR=function(t){var e=this,n=e.config;return f(n.point_select_r)?n.point_select_r(t):n.point_select_r?n.point_select_r:4*e.pointR(t)},l.isWithinCircle=function(t,e){var n=this.d3,i=n.mouse(t),r=n.select(t),o=+r.attr("cx"),a=+r.attr("cy");return Math.sqrt(Math.pow(o-i[0],2)+Math.pow(a-i[1],2))<e},l.isWithinStep=function(t,e){return Math.abs(e-this.d3.mouse(t)[1])<30},l.initBar=function(){var t=this;t.main.select("."+h.chart).append("g").attr("class",h.chartBars)},l.updateTargetsForBar=function(t){var e,n,i=this,r=i.config,o=i.classChartBar.bind(i),a=i.classBars.bind(i),s=i.classFocus.bind(i);e=i.main.select("."+h.chartBars).selectAll("."+h.chartBar).data(t).attr("class",function(t){return o(t)+s(t)}),n=e.enter().append("g").attr("class",o).style("opacity",0).style("pointer-events","none"),n.append("g").attr("class",a).style("cursor",function(t){return r.data_selection_isselectable(t)?"pointer":null})},l.updateBar=function(t){var e=this,n=e.barData.bind(e),i=e.classBar.bind(e),r=e.initialOpacity.bind(e),o=function(t){return e.color(t.id)};e.mainBar=e.main.selectAll("."+h.bars).selectAll("."+h.bar).data(n),e.mainBar.enter().append("path").attr("class",i).style("stroke",o).style("fill",o),e.mainBar.style("opacity",r),e.mainBar.exit().transition().duration(t).style("opacity",0).remove()},l.redrawBar=function(t,e){return[(e?this.mainBar.transition(Math.random().toString()):this.mainBar).attr("d",t).style("fill",this.color).style("opacity",1)]},l.getBarW=function(t,e){var n=this,i=n.config,r="number"==typeof i.bar_width?i.bar_width:e?t.tickInterval()*i.bar_width_ratio/e:0;return i.bar_width_max&&r>i.bar_width_max?i.bar_width_max:r},l.getBars=function(t,e){var n=this;return(e?n.main.selectAll("."+h.bars+n.getTargetSelectorSuffix(e)):n.main).selectAll("."+h.bar+(d(t)?"-"+t:""))},l.expandBars=function(t,e,n){var i=this;n&&i.unexpandBars(),i.getBars(t,e).classed(h.EXPANDED,!0)},l.unexpandBars=function(t){var e=this;e.getBars(t).classed(h.EXPANDED,!1)},l.generateDrawBar=function(t,e){var n=this,i=n.config,r=n.generateGetBarPoints(t,e);return function(t,e){var n=r(t,e),o=i.axis_rotated?1:0,a=i.axis_rotated?0:1,s="M "+n[0][o]+","+n[0][a]+" L"+n[1][o]+","+n[1][a]+" L"+n[2][o]+","+n[2][a]+" L"+n[3][o]+","+n[3][a]+" z";return s}},l.generateGetBarPoints=function(t,e){var n=this,i=e?n.subXAxis:n.xAxis,r=t.__max__+1,o=n.getBarW(i,r),a=n.getShapeX(o,r,t,!!e),s=n.getShapeY(!!e),l=n.getShapeOffset(n.isBarType,t,!!e),c=e?n.getSubYScale:n.getYScale;return function(t,e){var i=c.call(n,t.id)(0),r=l(t,e)||i,u=a(t),h=s(t);return n.config.axis_rotated&&(0<t.value&&h<i||t.value<0&&i<h)&&(h=i),[[u,r],[u,h-(i-r)],[u+o,h-(i-r)],[u+o,r]]}},l.isWithinBar=function(t){var e=this.d3.mouse(t),n=t.getBoundingClientRect(),i=t.pathSegList.getItem(0),r=t.pathSegList.getItem(1),o=Math.min(i.x,r.x),a=Math.min(i.y,r.y),s=n.width,l=n.height,c=2,u=o-c,h=o+s+c,d=a+l+c,f=a-c;return u<e[0]&&e[0]<h&&f<e[1]&&e[1]<d},l.initText=function(){var t=this;t.main.select("."+h.chart).append("g").attr("class",h.chartTexts),t.mainText=t.d3.selectAll([])},l.updateTargetsForText=function(t){var e,n,i=this,r=i.classChartText.bind(i),o=i.classTexts.bind(i),a=i.classFocus.bind(i);e=i.main.select("."+h.chartTexts).selectAll("."+h.chartText).data(t).attr("class",function(t){return r(t)+a(t)}),n=e.enter().append("g").attr("class",r).style("opacity",0).style("pointer-events","none"),n.append("g").attr("class",o)},l.updateText=function(t){var e=this,n=e.config,i=e.barOrLineData.bind(e),r=e.classText.bind(e);e.mainText=e.main.selectAll("."+h.texts).selectAll("."+h.text).data(i),e.mainText.enter().append("text").attr("class",r).attr("text-anchor",function(t){return n.axis_rotated?t.value<0?"end":"start":"middle"}).style("stroke","none").style("fill",function(t){return e.color(t)}).style("fill-opacity",0),e.mainText.text(function(t,n,i){return e.dataLabelFormat(t.id)(t.value,t.id,n,i)}),e.mainText.exit().transition().duration(t).style("fill-opacity",0).remove()},l.redrawText=function(t,e,n,i){return[(i?this.mainText.transition():this.mainText).attr("x",t).attr("y",e).style("fill",this.color).style("fill-opacity",n?0:this.opacityForText.bind(this))]},l.getTextRect=function(t,e,n){var i,r=this.d3.select("body").append("div").classed("c3",!0),o=r.append("svg").style("visibility","hidden").style("position","fixed").style("top",0).style("left",0),a=this.d3.select(n).style("font");return o.selectAll(".dummy").data([t]).enter().append("text").classed(e?e:"",!0).style("font",a).text(t).each(function(){i=this.getBoundingClientRect()}),r.remove(),i},l.generateXYForText=function(t,e,n,i){var r=this,o=r.generateGetAreaPoints(t,!1),a=r.generateGetBarPoints(e,!1),s=r.generateGetLinePoints(n,!1),l=i?r.getXForText:r.getYForText;return function(t,e){var n=r.isAreaType(t)?o:r.isBarType(t)?a:s;return l.call(r,n(t,e),t,this)}},l.getXForText=function(t,e,n){var i,r,o=this,a=n.getBoundingClientRect();return o.config.axis_rotated?(r=o.isBarType(e)?4:6,i=t[2][1]+r*(e.value<0?-1:1)):i=o.hasType("bar")?(t[2][0]+t[0][0])/2:t[0][0],null===e.value&&(i>o.width?i=o.width-a.width:i<0&&(i=4)),i},l.getYForText=function(t,e,n){var i,r=this,o=n.getBoundingClientRect();return r.config.axis_rotated?i=(t[0][0]+t[2][0]+.6*o.height)/2:(i=t[2][1],e.value<0||0===e.value&&!r.hasPositiveValue?(i+=o.height,r.isBarType(e)&&r.isSafari()?i-=3:!r.isBarType(e)&&r.isChrome()&&(i+=3)):i+=r.isBarType(e)?-3:-6),null!==e.value||r.config.axis_rotated||(i<o.height?i=o.height:i>this.height&&(i=this.height-4)),i},l.setTargetType=function(t,e){var n=this,i=n.config;n.mapToTargetIds(t).forEach(function(t){n.withoutFadeIn[t]=e===i.data_types[t],i.data_types[t]=e}),t||(i.data_type=e)},l.hasType=function(t,e){var n=this,i=n.config.data_types,r=!1;return e=e||n.data.targets,e&&e.length?e.forEach(function(e){var n=i[e.id];(n&&n.indexOf(t)>=0||!n&&"line"===t)&&(r=!0)}):Object.keys(i).length?Object.keys(i).forEach(function(e){i[e]===t&&(r=!0)}):r=n.config.data_type===t,r},l.hasArcType=function(t){return this.hasType("pie",t)||this.hasType("donut",t)||this.hasType("gauge",t)},l.isLineType=function(t){var e=this.config,n=p(t)?t:t.id;return!e.data_types[n]||["line","spline","area","area-spline","step","area-step"].indexOf(e.data_types[n])>=0},l.isStepType=function(t){var e=p(t)?t:t.id;return["step","area-step"].indexOf(this.config.data_types[e])>=0},l.isSplineType=function(t){var e=p(t)?t:t.id;return["spline","area-spline"].indexOf(this.config.data_types[e])>=0},l.isAreaType=function(t){var e=p(t)?t:t.id;return["area","area-spline","area-step"].indexOf(this.config.data_types[e])>=0},l.isBarType=function(t){var e=p(t)?t:t.id;return"bar"===this.config.data_types[e]},l.isScatterType=function(t){var e=p(t)?t:t.id;return"scatter"===this.config.data_types[e]},l.isPieType=function(t){var e=p(t)?t:t.id;return"pie"===this.config.data_types[e]},l.isGaugeType=function(t){var e=p(t)?t:t.id;return"gauge"===this.config.data_types[e]},l.isDonutType=function(t){var e=p(t)?t:t.id;return"donut"===this.config.data_types[e]},l.isArcType=function(t){return this.isPieType(t)||this.isDonutType(t)||this.isGaugeType(t)},l.lineData=function(t){return this.isLineType(t)?[t]:[]},l.arcData=function(t){return this.isArcType(t.data)?[t]:[]},l.barData=function(t){return this.isBarType(t)?t.values:[]},l.lineOrScatterData=function(t){return this.isLineType(t)||this.isScatterType(t)?t.values:[]},l.barOrLineData=function(t){return this.isBarType(t)||this.isLineType(t)?t.values:[]},l.isInterpolationType=function(t){return["linear","linear-closed","basis","basis-open","basis-closed","bundle","cardinal","cardinal-open","cardinal-closed","monotone"].indexOf(t)>=0},l.initGrid=function(){var t=this,e=t.config,n=t.d3;t.grid=t.main.append("g").attr("clip-path",t.clipPathForGrid).attr("class",h.grid),e.grid_x_show&&t.grid.append("g").attr("class",h.xgrids),e.grid_y_show&&t.grid.append("g").attr("class",h.ygrids),e.grid_focus_show&&t.grid.append("g").attr("class",h.xgridFocus).append("line").attr("class",h.xgridFocus),t.xgrid=n.selectAll([]),e.grid_lines_front||t.initGridLines()},l.initGridLines=function(){var t=this,e=t.d3;t.gridLines=t.main.append("g").attr("clip-path",t.clipPathForGrid).attr("class",h.grid+" "+h.gridLines),t.gridLines.append("g").attr("class",h.xgridLines),t.gridLines.append("g").attr("class",h.ygridLines),t.xgridLines=e.selectAll([])},l.updateXGrid=function(t){var e=this,n=e.config,i=e.d3,r=e.generateGridData(n.grid_x_type,e.x),o=e.isCategorized()?e.xAxis.tickOffset():0;e.xgridAttr=n.axis_rotated?{x1:0,x2:e.width,y1:function(t){return e.x(t)-o},y2:function(t){return e.x(t)-o}}:{x1:function(t){return e.x(t)+o},x2:function(t){return e.x(t)+o},y1:0,y2:e.height},e.xgrid=e.main.select("."+h.xgrids).selectAll("."+h.xgrid).data(r),e.xgrid.enter().append("line").attr("class",h.xgrid),t||e.xgrid.attr(e.xgridAttr).style("opacity",function(){return+i.select(this).attr(n.axis_rotated?"y1":"x1")===(n.axis_rotated?e.height:0)?0:1}),e.xgrid.exit().remove()},l.updateYGrid=function(){var t=this,e=t.config,n=t.yAxis.tickValues()||t.y.ticks(e.grid_y_ticks);t.ygrid=t.main.select("."+h.ygrids).selectAll("."+h.ygrid).data(n),t.ygrid.enter().append("line").attr("class",h.ygrid),t.ygrid.attr("x1",e.axis_rotated?t.y:0).attr("x2",e.axis_rotated?t.y:t.width).attr("y1",e.axis_rotated?0:t.y).attr("y2",e.axis_rotated?t.height:t.y),t.ygrid.exit().remove(),t.smoothLines(t.ygrid,"grid")},l.gridTextAnchor=function(t){return t.position?t.position:"end"},l.gridTextDx=function(t){return"start"===t.position?4:"middle"===t.position?0:-4},l.xGridTextX=function(t){return"start"===t.position?-this.height:"middle"===t.position?-this.height/2:0},l.yGridTextX=function(t){return"start"===t.position?0:"middle"===t.position?this.width/2:this.width},l.updateGrid=function(t){var e,n,i,r=this,o=r.main,a=r.config;r.grid.style("visibility",r.hasArcType()?"hidden":"visible"),o.select("line."+h.xgridFocus).style("visibility","hidden"),a.grid_x_show&&r.updateXGrid(),r.xgridLines=o.select("."+h.xgridLines).selectAll("."+h.xgridLine).data(a.grid_x_lines),e=r.xgridLines.enter().append("g").attr("class",function(t){return h.xgridLine+(t.class?" "+t.class:"")}),e.append("line").style("opacity",0),e.append("text").attr("text-anchor",r.gridTextAnchor).attr("transform",a.axis_rotated?"":"rotate(-90)").attr("dx",r.gridTextDx).attr("dy",-5).style("opacity",0),r.xgridLines.exit().transition().duration(t).style("opacity",0).remove(),a.grid_y_show&&r.updateYGrid(),r.ygridLines=o.select("."+h.ygridLines).selectAll("."+h.ygridLine).data(a.grid_y_lines),n=r.ygridLines.enter().append("g").attr("class",function(t){return h.ygridLine+(t.class?" "+t.class:"")}),n.append("line").style("opacity",0),n.append("text").attr("text-anchor",r.gridTextAnchor).attr("transform",a.axis_rotated?"rotate(-90)":"").attr("dx",r.gridTextDx).attr("dy",-5).style("opacity",0),i=r.yv.bind(r),r.ygridLines.select("line").transition().duration(t).attr("x1",a.axis_rotated?i:0).attr("x2",a.axis_rotated?i:r.width).attr("y1",a.axis_rotated?0:i).attr("y2",a.axis_rotated?r.height:i).style("opacity",1),r.ygridLines.select("text").transition().duration(t).attr("x",a.axis_rotated?r.xGridTextX.bind(r):r.yGridTextX.bind(r)).attr("y",i).text(function(t){return t.text}).style("opacity",1),r.ygridLines.exit().transition().duration(t).style("opacity",0).remove()},l.redrawGrid=function(t){var e=this,n=e.config,i=e.xv.bind(e),r=e.xgridLines.select("line"),o=e.xgridLines.select("text");return[(t?r.transition():r).attr("x1",n.axis_rotated?0:i).attr("x2",n.axis_rotated?e.width:i).attr("y1",n.axis_rotated?i:0).attr("y2",n.axis_rotated?i:e.height).style("opacity",1),(t?o.transition():o).attr("x",n.axis_rotated?e.yGridTextX.bind(e):e.xGridTextX.bind(e)).attr("y",i).text(function(t){return t.text}).style("opacity",1)]},l.showXGridFocus=function(t){var e=this,n=e.config,i=t.filter(function(t){return t&&d(t.value)}),r=e.main.selectAll("line."+h.xgridFocus),o=e.xx.bind(e);n.tooltip_show&&(e.hasType("scatter")||e.hasArcType()||(r.style("visibility","visible").data([i[0]]).attr(n.axis_rotated?"y1":"x1",o).attr(n.axis_rotated?"y2":"x2",o),e.smoothLines(r,"grid")))},l.hideXGridFocus=function(){this.main.select("line."+h.xgridFocus).style("visibility","hidden")},l.updateXgridFocus=function(){var t=this,e=t.config;t.main.select("line."+h.xgridFocus).attr("x1",e.axis_rotated?0:-10).attr("x2",e.axis_rotated?t.width:-10).attr("y1",e.axis_rotated?-10:0).attr("y2",e.axis_rotated?-10:t.height)},l.generateGridData=function(t,e){var n,i,r,o,a=this,s=[],l=a.main.select("."+h.axisX).selectAll(".tick").size();if("year"===t)for(n=a.getXDomain(),i=n[0].getFullYear(),r=n[1].getFullYear(),o=i;o<=r;o++)s.push(new Date(o+"-01-01 00:00:00"));else s=e.ticks(10),s.length>l&&(s=s.filter(function(t){return(""+t).indexOf(".")<0}));return s},l.getGridFilterToRemove=function(t){return t?function(e){var n=!1;return[].concat(t).forEach(function(t){("value"in t&&e.value===t.value||"class"in t&&e.class===t.class)&&(n=!0)}),n}:function(){return!0}},l.removeGridLines=function(t,e){var n=this,i=n.config,r=n.getGridFilterToRemove(t),o=function(t){return!r(t)},a=e?h.xgridLines:h.ygridLines,s=e?h.xgridLine:h.ygridLine;n.main.select("."+a).selectAll("."+s).filter(r).transition().duration(i.transition_duration).style("opacity",0).remove(),e?i.grid_x_lines=i.grid_x_lines.filter(o):i.grid_y_lines=i.grid_y_lines.filter(o)},l.initTooltip=function(){var t,e=this,n=e.config;if(e.tooltip=e.selectChart.style("position","relative").append("div").attr("class",h.tooltipContainer).style("position","absolute").style("pointer-events","none").style("display","none"),n.tooltip_init_show){if(e.isTimeSeries()&&p(n.tooltip_init_x)){for(n.tooltip_init_x=e.parseDate(n.tooltip_init_x),t=0;t<e.data.targets[0].values.length&&e.data.targets[0].values[t].x-n.tooltip_init_x!==0;t++);n.tooltip_init_x=t}e.tooltip.html(n.tooltip_contents.call(e,e.data.targets.map(function(t){return e.addName(t.values[n.tooltip_init_x])}),e.axis.getXAxisTickFormat(),e.getYFormat(e.hasArcType()),e.color)),e.tooltip.style("top",n.tooltip_init_position.top).style("left",n.tooltip_init_position.left).style("display","block")}},l.getTooltipContent=function(t,e,n,i){var r,o,a,s,l,c,u=this,h=u.config,d=h.tooltip_format_title||e,f=h.tooltip_format_name||function(t){return t},p=h.tooltip_format_value||n,g=u.isOrderAsc();if(0===h.data_groups.length)t.sort(function(t,e){var n=t?t.value:null,i=e?e.value:null;return g?n-i:i-n});else{var m=u.orderTargets(u.data.targets).map(function(t){return t.id});t.sort(function(t,e){var n=t?t.value:null,i=e?e.value:null;return n>0&&i>0&&(n=t?m.indexOf(t.id):null,i=e?m.indexOf(e.id):null),g?n-i:i-n})}for(o=0;o<t.length;o++)if(t[o]&&(t[o].value||0===t[o].value)&&(r||(a=C(d?d(t[o].x):t[o].x),r="<table class='"+u.CLASS.tooltip+"'>"+(a||0===a?"<tr><th colspan='2'>"+a+"</th></tr>":"")),s=C(p(t[o].value,t[o].ratio,t[o].id,t[o].index,t)),void 0!==s)){if(null===t[o].name)continue;l=C(f(t[o].name,t[o].ratio,t[o].id,t[o].index)),c=u.levelColor?u.levelColor(t[o].value):i(t[o].id),r+="<tr class='"+u.CLASS.tooltipName+"-"+u.getTargetSelectorSuffix(t[o].id)+"'>",r+="<td class='name'><span style='background-color:"+c+"'></span>"+l+"</td>",r+="<td class='value'>"+s+"</td>",r+="</tr>"}return r+"</table>"},l.tooltipPosition=function(t,e,n,i){var r,o,a,s,l,c=this,u=c.config,h=c.d3,d=c.hasArcType(),f=h.mouse(i);return d?(o=(c.width-(c.isLegendRight?c.getLegendWidth():0))/2+f[0],s=c.height/2+f[1]+20):(r=c.getSvgLeft(!0),u.axis_rotated?(o=r+f[0]+100,a=o+e,l=c.currentWidth-c.getCurrentPaddingRight(),s=c.x(t[0].x)+20):(o=r+c.getCurrentPaddingLeft(!0)+c.x(t[0].x)+20,a=o+e,l=r+c.currentWidth-c.getCurrentPaddingRight(),s=f[1]+15),a>l&&(o-=a-l+20),s+n>c.currentHeight&&(s-=n+30)),s<0&&(s=0),{top:s,left:o}},l.showTooltip=function(t,e){var n,i,r,o=this,a=o.config,s=o.hasArcType(),c=t.filter(function(t){return t&&d(t.value)}),u=a.tooltip_position||l.tooltipPosition;0!==c.length&&a.tooltip_show&&(o.tooltip.html(a.tooltip_contents.call(o,t,o.axis.getXAxisTickFormat(),o.getYFormat(s),o.color)).style("display","block"),n=o.tooltip.property("offsetWidth"),i=o.tooltip.property("offsetHeight"),r=u.call(this,c,n,i,e),o.tooltip.style("top",r.top+"px").style("left",r.left+"px"))},l.hideTooltip=function(){this.tooltip.style("display","none")},l.initLegend=function(){var t=this;return t.legendItemTextBox={},t.legendHasRendered=!1,t.legend=t.svg.append("g").attr("transform",t.getTranslate("legend")),t.config.legend_show?void t.updateLegendWithDefaults():(t.legend.style("visibility","hidden"),void(t.hiddenLegendIds=t.mapToIds(t.data.targets)))},l.updateLegendWithDefaults=function(){var t=this;t.updateLegend(t.mapToIds(t.data.targets),{withTransform:!1,withTransitionForTransform:!1,withTransition:!1})},l.updateSizeForLegend=function(t,e){var n=this,i=n.config,r={top:n.isLegendTop?n.getCurrentPaddingTop()+i.legend_inset_y+5.5:n.currentHeight-t-n.getCurrentPaddingBottom()-i.legend_inset_y,left:n.isLegendLeft?n.getCurrentPaddingLeft()+i.legend_inset_x+.5:n.currentWidth-e-n.getCurrentPaddingRight()-i.legend_inset_x+.5};n.margin3={top:n.isLegendRight?0:n.isLegendInset?r.top:n.currentHeight-t,right:NaN,bottom:0,left:n.isLegendRight?n.currentWidth-e:n.isLegendInset?r.left:0}},l.transformLegend=function(t){var e=this;(t?e.legend.transition():e.legend).attr("transform",e.getTranslate("legend"))},l.updateLegendStep=function(t){this.legendStep=t},l.updateLegendItemWidth=function(t){this.legendItemWidth=t},l.updateLegendItemHeight=function(t){this.legendItemHeight=t},l.getLegendWidth=function(){var t=this;return t.config.legend_show?t.isLegendRight||t.isLegendInset?t.legendItemWidth*(t.legendStep+1):t.currentWidth:0},l.getLegendHeight=function(){var t=this,e=0;return t.config.legend_show&&(e=t.isLegendRight?t.currentHeight:Math.max(20,t.legendItemHeight)*(t.legendStep+1)),
+e},l.opacityForLegend=function(t){return t.classed(h.legendItemHidden)?null:1},l.opacityForUnfocusedLegend=function(t){return t.classed(h.legendItemHidden)?null:.3},l.toggleFocusLegend=function(t,e){var n=this;t=n.mapToTargetIds(t),n.legend.selectAll("."+h.legendItem).filter(function(e){return t.indexOf(e)>=0}).classed(h.legendItemFocused,e).transition().duration(100).style("opacity",function(){var t=e?n.opacityForLegend:n.opacityForUnfocusedLegend;return t.call(n,n.d3.select(this))})},l.revertLegend=function(){var t=this,e=t.d3;t.legend.selectAll("."+h.legendItem).classed(h.legendItemFocused,!1).transition().duration(100).style("opacity",function(){return t.opacityForLegend(e.select(this))})},l.showLegend=function(t){var e=this,n=e.config;n.legend_show||(n.legend_show=!0,e.legend.style("visibility","visible"),e.legendHasRendered||e.updateLegendWithDefaults()),e.removeHiddenLegendIds(t),e.legend.selectAll(e.selectorLegends(t)).style("visibility","visible").transition().style("opacity",function(){return e.opacityForLegend(e.d3.select(this))})},l.hideLegend=function(t){var e=this,n=e.config;n.legend_show&&b(t)&&(n.legend_show=!1,e.legend.style("visibility","hidden")),e.addHiddenLegendIds(t),e.legend.selectAll(e.selectorLegends(t)).style("opacity",0).style("visibility","hidden")},l.clearLegendItemTextBoxCache=function(){this.legendItemTextBox={}},l.updateLegend=function(t,e,n){function i(t,e){return C.legendItemTextBox[e]||(C.legendItemTextBox[e]=C.getTextRect(t.textContent,h.legendItem,t)),C.legendItemTextBox[e]}function r(e,n,r){function o(t,e){e||(a=(p-N-f)/2,a<E&&(a=(p-f)/2,N=0,V++)),j[t]=V,I[V]=C.isLegendInset?10:a,O[t]=N,N+=f}var a,s,l=0===r,c=r===t.length-1,u=i(e,n),h=u.width+P+(!c||C.isLegendRight||C.isLegendInset?A:0)+T.legend_padding,d=u.height+k,f=C.isLegendRight||C.isLegendInset?d:h,p=C.isLegendRight||C.isLegendInset?C.getLegendHeight():C.getLegendWidth();return l&&(N=0,V=0,M=0,L=0),T.legend_show&&!C.isLegendToShow(n)?void(R[n]=D[n]=j[n]=O[n]=0):(R[n]=h,D[n]=d,(!M||h>=M)&&(M=h),(!L||d>=L)&&(L=d),s=C.isLegendRight||C.isLegendInset?L:M,void(T.legend_equally?(Object.keys(R).forEach(function(t){R[t]=M}),Object.keys(D).forEach(function(t){D[t]=L}),a=(p-s*t.length)/2,a<E?(N=0,V=0,t.forEach(function(t){o(t)})):o(n,!0)):o(n)))}var o,a,s,l,c,u,d,f,p,g,v,y,x,b,_,S,C=this,T=C.config,k=4,A=10,M=0,L=0,E=10,P=T.legend_item_tile_width+5,N=0,O={},R={},D={},I=[0],j={},V=0;t=t.filter(function(t){return!m(T.data_names[t])||null!==T.data_names[t]}),e=e||{},v=w(e,"withTransition",!0),y=w(e,"withTransitionForTransform",!0),C.isLegendInset&&(V=T.legend_inset_step?T.legend_inset_step:t.length,C.updateLegendStep(V)),C.isLegendRight?(o=function(t){return M*j[t]},l=function(t){return I[j[t]]+O[t]}):C.isLegendInset?(o=function(t){return M*j[t]+10},l=function(t){return I[j[t]]+O[t]}):(o=function(t){return I[j[t]]+O[t]},l=function(t){return L*j[t]}),a=function(t,e){return o(t,e)+4+T.legend_item_tile_width},c=function(t,e){return l(t,e)+9},s=function(t,e){return o(t,e)},u=function(t,e){return l(t,e)-5},d=function(t,e){return o(t,e)-2},f=function(t,e){return o(t,e)-2+T.legend_item_tile_width},p=function(t,e){return l(t,e)+4},g=C.legend.selectAll("."+h.legendItem).data(t).enter().append("g").attr("class",function(t){return C.generateClass(h.legendItem,t)}).style("visibility",function(t){return C.isLegendToShow(t)?"visible":"hidden"}).style("cursor","pointer").on("click",function(t){T.legend_item_onclick?T.legend_item_onclick.call(C,t):C.d3.event.altKey?(C.api.hide(),C.api.show(t)):(C.api.toggle(t),C.isTargetToShow(t)?C.api.focus(t):C.api.revert())}).on("mouseover",function(t){T.legend_item_onmouseover?T.legend_item_onmouseover.call(C,t):(C.d3.select(this).classed(h.legendItemFocused,!0),!C.transiting&&C.isTargetToShow(t)&&C.api.focus(t))}).on("mouseout",function(t){T.legend_item_onmouseout?T.legend_item_onmouseout.call(C,t):(C.d3.select(this).classed(h.legendItemFocused,!1),C.api.revert())}),g.append("text").text(function(t){return m(T.data_names[t])?T.data_names[t]:t}).each(function(t,e){r(this,t,e)}).style("pointer-events","none").attr("x",C.isLegendRight||C.isLegendInset?a:-200).attr("y",C.isLegendRight||C.isLegendInset?-200:c),g.append("rect").attr("class",h.legendItemEvent).style("fill-opacity",0).attr("x",C.isLegendRight||C.isLegendInset?s:-200).attr("y",C.isLegendRight||C.isLegendInset?-200:u),g.append("line").attr("class",h.legendItemTile).style("stroke",C.color).style("pointer-events","none").attr("x1",C.isLegendRight||C.isLegendInset?d:-200).attr("y1",C.isLegendRight||C.isLegendInset?-200:p).attr("x2",C.isLegendRight||C.isLegendInset?f:-200).attr("y2",C.isLegendRight||C.isLegendInset?-200:p).attr("stroke-width",T.legend_item_tile_height),S=C.legend.select("."+h.legendBackground+" rect"),C.isLegendInset&&M>0&&0===S.size()&&(S=C.legend.insert("g","."+h.legendItem).attr("class",h.legendBackground).append("rect")),x=C.legend.selectAll("text").data(t).text(function(t){return m(T.data_names[t])?T.data_names[t]:t}).each(function(t,e){r(this,t,e)}),(v?x.transition():x).attr("x",a).attr("y",c),b=C.legend.selectAll("rect."+h.legendItemEvent).data(t),(v?b.transition():b).attr("width",function(t){return R[t]}).attr("height",function(t){return D[t]}).attr("x",s).attr("y",u),_=C.legend.selectAll("line."+h.legendItemTile).data(t),(v?_.transition():_).style("stroke",C.color).attr("x1",d).attr("y1",p).attr("x2",f).attr("y2",p),S&&(v?S.transition():S).attr("height",C.getLegendHeight()-12).attr("width",M*(V+1)+10),C.legend.selectAll("."+h.legendItem).classed(h.legendItemHidden,function(t){return!C.isTargetToShow(t)}),C.updateLegendItemWidth(M),C.updateLegendItemHeight(L),C.updateLegendStep(V),C.updateSizes(),C.updateScales(),C.updateSvgSize(),C.transformAll(y,n),C.legendHasRendered=!0},l.initTitle=function(){var t=this;t.title=t.svg.append("text").text(t.config.title_text).attr("class",t.CLASS.title)},l.redrawTitle=function(){var t=this;t.title.attr("x",t.xForTitle.bind(t)).attr("y",t.yForTitle.bind(t))},l.xForTitle=function(){var t,e=this,n=e.config,i=n.title_position||"left";return t=i.indexOf("right")>=0?e.currentWidth-e.getTextRect(e.title.node().textContent,e.CLASS.title,e.title.node()).width-n.title_padding.right:i.indexOf("center")>=0?(e.currentWidth-e.getTextRect(e.title.node().textContent,e.CLASS.title,e.title.node()).width)/2:n.title_padding.left},l.yForTitle=function(){var t=this;return t.config.title_padding.top+t.getTextRect(t.title.node().textContent,t.CLASS.title,t.title.node()).height},l.getTitlePadding=function(){var t=this;return t.yForTitle()+t.config.title_padding.bottom},n(e,o),o.prototype.init=function(){var t=this.owner,e=t.config,n=t.main;t.axes.x=n.append("g").attr("class",h.axis+" "+h.axisX).attr("clip-path",t.clipPathForXAxis).attr("transform",t.getTranslate("x")).style("visibility",e.axis_x_show?"visible":"hidden"),t.axes.x.append("text").attr("class",h.axisXLabel).attr("transform",e.axis_rotated?"rotate(-90)":"").style("text-anchor",this.textAnchorForXAxisLabel.bind(this)),t.axes.y=n.append("g").attr("class",h.axis+" "+h.axisY).attr("clip-path",e.axis_y_inner?"":t.clipPathForYAxis).attr("transform",t.getTranslate("y")).style("visibility",e.axis_y_show?"visible":"hidden"),t.axes.y.append("text").attr("class",h.axisYLabel).attr("transform",e.axis_rotated?"":"rotate(-90)").style("text-anchor",this.textAnchorForYAxisLabel.bind(this)),t.axes.y2=n.append("g").attr("class",h.axis+" "+h.axisY2).attr("transform",t.getTranslate("y2")).style("visibility",e.axis_y2_show?"visible":"hidden"),t.axes.y2.append("text").attr("class",h.axisY2Label).attr("transform",e.axis_rotated?"":"rotate(-90)").style("text-anchor",this.textAnchorForY2AxisLabel.bind(this))},o.prototype.getXAxis=function(t,e,n,i,r,o,s){var l=this.owner,c=l.config,u={isCategory:l.isCategorized(),withOuterTick:r,tickMultiline:c.axis_x_tick_multiline,tickWidth:c.axis_x_tick_width,tickTextRotate:s?0:c.axis_x_tick_rotate,withoutTransition:o},h=a(l.d3,u).scale(t).orient(e);return l.isTimeSeries()&&i&&"function"!=typeof i&&(i=i.map(function(t){return l.parseDate(t)})),h.tickFormat(n).tickValues(i),l.isCategorized()&&(h.tickCentered(c.axis_x_tick_centered),b(c.axis_x_tick_culling)&&(c.axis_x_tick_culling=!1)),h},o.prototype.updateXAxisTickValues=function(t,e){var n,i=this.owner,r=i.config;return(r.axis_x_tick_fit||r.axis_x_tick_count)&&(n=this.generateTickValues(i.mapTargetsToUniqueXs(t),r.axis_x_tick_count,i.isTimeSeries())),e?e.tickValues(n):(i.xAxis.tickValues(n),i.subXAxis.tickValues(n)),n},o.prototype.getYAxis=function(t,e,n,i,r,o,s){var l=this.owner,c=l.config,u={withOuterTick:r,withoutTransition:o,tickTextRotate:s?0:c.axis_y_tick_rotate},h=a(l.d3,u).scale(t).orient(e).tickFormat(n);return l.isTimeSeriesY()?h.ticks(l.d3.time[c.axis_y_tick_time_value],c.axis_y_tick_time_interval):h.tickValues(i),h},o.prototype.getId=function(t){var e=this.owner.config;return t in e.data_axes?e.data_axes[t]:"y"},o.prototype.getXAxisTickFormat=function(){var t=this.owner,e=t.config,n=t.isTimeSeries()?t.defaultAxisTimeFormat:t.isCategorized()?t.categoryName:function(t){return t<0?t.toFixed(0):t};return e.axis_x_tick_format&&(f(e.axis_x_tick_format)?n=e.axis_x_tick_format:t.isTimeSeries()&&(n=function(n){return n?t.axisTimeFormat(e.axis_x_tick_format)(n):""})),f(n)?function(e){return n.call(t,e)}:n},o.prototype.getTickValues=function(t,e){return t?t:e?e.tickValues():void 0},o.prototype.getXAxisTickValues=function(){return this.getTickValues(this.owner.config.axis_x_tick_values,this.owner.xAxis)},o.prototype.getYAxisTickValues=function(){return this.getTickValues(this.owner.config.axis_y_tick_values,this.owner.yAxis)},o.prototype.getY2AxisTickValues=function(){return this.getTickValues(this.owner.config.axis_y2_tick_values,this.owner.y2Axis)},o.prototype.getLabelOptionByAxisId=function(t){var e,n=this.owner,i=n.config;return"y"===t?e=i.axis_y_label:"y2"===t?e=i.axis_y2_label:"x"===t&&(e=i.axis_x_label),e},o.prototype.getLabelText=function(t){var e=this.getLabelOptionByAxisId(t);return p(e)?e:e?e.text:null},o.prototype.setLabelText=function(t,e){var n=this.owner,i=n.config,r=this.getLabelOptionByAxisId(t);p(r)?"y"===t?i.axis_y_label=e:"y2"===t?i.axis_y2_label=e:"x"===t&&(i.axis_x_label=e):r&&(r.text=e)},o.prototype.getLabelPosition=function(t,e){var n=this.getLabelOptionByAxisId(t),i=n&&"object"==typeof n&&n.position?n.position:e;return{isInner:i.indexOf("inner")>=0,isOuter:i.indexOf("outer")>=0,isLeft:i.indexOf("left")>=0,isCenter:i.indexOf("center")>=0,isRight:i.indexOf("right")>=0,isTop:i.indexOf("top")>=0,isMiddle:i.indexOf("middle")>=0,isBottom:i.indexOf("bottom")>=0}},o.prototype.getXAxisLabelPosition=function(){return this.getLabelPosition("x",this.owner.config.axis_rotated?"inner-top":"inner-right")},o.prototype.getYAxisLabelPosition=function(){return this.getLabelPosition("y",this.owner.config.axis_rotated?"inner-right":"inner-top")},o.prototype.getY2AxisLabelPosition=function(){return this.getLabelPosition("y2",this.owner.config.axis_rotated?"inner-right":"inner-top")},o.prototype.getLabelPositionById=function(t){return"y2"===t?this.getY2AxisLabelPosition():"y"===t?this.getYAxisLabelPosition():this.getXAxisLabelPosition()},o.prototype.textForXAxisLabel=function(){return this.getLabelText("x")},o.prototype.textForYAxisLabel=function(){return this.getLabelText("y")},o.prototype.textForY2AxisLabel=function(){return this.getLabelText("y2")},o.prototype.xForAxisLabel=function(t,e){var n=this.owner;return t?e.isLeft?0:e.isCenter?n.width/2:n.width:e.isBottom?-n.height:e.isMiddle?-n.height/2:0},o.prototype.dxForAxisLabel=function(t,e){return t?e.isLeft?"0.5em":e.isRight?"-0.5em":"0":e.isTop?"-0.5em":e.isBottom?"0.5em":"0"},o.prototype.textAnchorForAxisLabel=function(t,e){return t?e.isLeft?"start":e.isCenter?"middle":"end":e.isBottom?"start":e.isMiddle?"middle":"end"},o.prototype.xForXAxisLabel=function(){return this.xForAxisLabel(!this.owner.config.axis_rotated,this.getXAxisLabelPosition())},o.prototype.xForYAxisLabel=function(){return this.xForAxisLabel(this.owner.config.axis_rotated,this.getYAxisLabelPosition())},o.prototype.xForY2AxisLabel=function(){return this.xForAxisLabel(this.owner.config.axis_rotated,this.getY2AxisLabelPosition())},o.prototype.dxForXAxisLabel=function(){return this.dxForAxisLabel(!this.owner.config.axis_rotated,this.getXAxisLabelPosition())},o.prototype.dxForYAxisLabel=function(){return this.dxForAxisLabel(this.owner.config.axis_rotated,this.getYAxisLabelPosition())},o.prototype.dxForY2AxisLabel=function(){return this.dxForAxisLabel(this.owner.config.axis_rotated,this.getY2AxisLabelPosition())},o.prototype.dyForXAxisLabel=function(){var t=this.owner,e=t.config,n=this.getXAxisLabelPosition();return e.axis_rotated?n.isInner?"1.2em":-25-this.getMaxTickWidth("x"):n.isInner?"-0.5em":e.axis_x_height?e.axis_x_height-10:"3em"},o.prototype.dyForYAxisLabel=function(){var t=this.owner,e=this.getYAxisLabelPosition();return t.config.axis_rotated?e.isInner?"-0.5em":"3em":e.isInner?"1.2em":-10-(t.config.axis_y_inner?0:this.getMaxTickWidth("y")+10)},o.prototype.dyForY2AxisLabel=function(){var t=this.owner,e=this.getY2AxisLabelPosition();return t.config.axis_rotated?e.isInner?"1.2em":"-2.2em":e.isInner?"-0.5em":15+(t.config.axis_y2_inner?0:this.getMaxTickWidth("y2")+15)},o.prototype.textAnchorForXAxisLabel=function(){var t=this.owner;return this.textAnchorForAxisLabel(!t.config.axis_rotated,this.getXAxisLabelPosition())},o.prototype.textAnchorForYAxisLabel=function(){var t=this.owner;return this.textAnchorForAxisLabel(t.config.axis_rotated,this.getYAxisLabelPosition())},o.prototype.textAnchorForY2AxisLabel=function(){var t=this.owner;return this.textAnchorForAxisLabel(t.config.axis_rotated,this.getY2AxisLabelPosition())},o.prototype.getMaxTickWidth=function(t,e){var n,i,r,o,a,s=this.owner,l=s.config,c=0;return e&&s.currentMaxTickWidths[t]?s.currentMaxTickWidths[t]:(s.svg&&(n=s.filterTargetsToShow(s.data.targets),"y"===t?(i=s.y.copy().domain(s.getYDomain(n,"y")),r=this.getYAxis(i,s.yOrient,l.axis_y_tick_format,s.yAxisTickValues,!1,!0,!0)):"y2"===t?(i=s.y2.copy().domain(s.getYDomain(n,"y2")),r=this.getYAxis(i,s.y2Orient,l.axis_y2_tick_format,s.y2AxisTickValues,!1,!0,!0)):(i=s.x.copy().domain(s.getXDomain(n)),r=this.getXAxis(i,s.xOrient,s.xAxisTickFormat,s.xAxisTickValues,!1,!0,!0),this.updateXAxisTickValues(n,r)),o=s.d3.select("body").append("div").classed("c3",!0),a=o.append("svg").style("visibility","hidden").style("position","fixed").style("top",0).style("left",0),a.append("g").call(r).each(function(){s.d3.select(this).selectAll("text").each(function(){var t=this.getBoundingClientRect();c<t.width&&(c=t.width)}),o.remove()})),s.currentMaxTickWidths[t]=c<=0?s.currentMaxTickWidths[t]:c,s.currentMaxTickWidths[t])},o.prototype.updateLabels=function(t){var e=this.owner,n=e.main.select("."+h.axisX+" ."+h.axisXLabel),i=e.main.select("."+h.axisY+" ."+h.axisYLabel),r=e.main.select("."+h.axisY2+" ."+h.axisY2Label);(t?n.transition():n).attr("x",this.xForXAxisLabel.bind(this)).attr("dx",this.dxForXAxisLabel.bind(this)).attr("dy",this.dyForXAxisLabel.bind(this)).text(this.textForXAxisLabel.bind(this)),(t?i.transition():i).attr("x",this.xForYAxisLabel.bind(this)).attr("dx",this.dxForYAxisLabel.bind(this)).attr("dy",this.dyForYAxisLabel.bind(this)).text(this.textForYAxisLabel.bind(this)),(t?r.transition():r).attr("x",this.xForY2AxisLabel.bind(this)).attr("dx",this.dxForY2AxisLabel.bind(this)).attr("dy",this.dyForY2AxisLabel.bind(this)).text(this.textForY2AxisLabel.bind(this))},o.prototype.getPadding=function(t,e,n,i){var r="number"==typeof t?t:t[e];return d(r)?"ratio"===t.unit?t[e]*i:this.convertPixelsToAxisPadding(r,i):n},o.prototype.convertPixelsToAxisPadding=function(t,e){var n=this.owner,i=n.config.axis_rotated?n.width:n.height;return e*(t/i)},o.prototype.generateTickValues=function(t,e,n){var i,r,o,a,s,l,c,u=t;if(e)if(i=f(e)?e():e,1===i)u=[t[0]];else if(2===i)u=[t[0],t[t.length-1]];else if(i>2){for(a=i-2,r=t[0],o=t[t.length-1],s=(o-r)/(a+1),u=[r],l=0;l<a;l++)c=+r+s*(l+1),u.push(n?new Date(c):c);u.push(o)}return n||(u=u.sort(function(t,e){return t-e})),u},o.prototype.generateTransitions=function(t){var e=this.owner,n=e.axes;return{axisX:t?n.x.transition().duration(t):n.x,axisY:t?n.y.transition().duration(t):n.y,axisY2:t?n.y2.transition().duration(t):n.y2,axisSubX:t?n.subx.transition().duration(t):n.subx}},o.prototype.redraw=function(t,e){var n=this.owner;n.axes.x.style("opacity",e?0:1),n.axes.y.style("opacity",e?0:1),n.axes.y2.style("opacity",e?0:1),n.axes.subx.style("opacity",e?0:1),t.axisX.call(n.xAxis),t.axisY.call(n.yAxis),t.axisY2.call(n.y2Axis),t.axisSubX.call(n.subXAxis)},l.getClipPath=function(e){var n=t.navigator.appVersion.toLowerCase().indexOf("msie 9.")>=0;return"url("+(n?"":document.URL.split("#")[0])+"#"+e+")"},l.appendClip=function(t,e){return t.append("clipPath").attr("id",e).append("rect")},l.getAxisClipX=function(t){var e=Math.max(30,this.margin.left);return t?-(1+e):-(e-1)},l.getAxisClipY=function(t){return t?-20:-this.margin.top},l.getXAxisClipX=function(){var t=this;return t.getAxisClipX(!t.config.axis_rotated)},l.getXAxisClipY=function(){var t=this;return t.getAxisClipY(!t.config.axis_rotated)},l.getYAxisClipX=function(){var t=this;return t.config.axis_y_inner?-1:t.getAxisClipX(t.config.axis_rotated)},l.getYAxisClipY=function(){var t=this;return t.getAxisClipY(t.config.axis_rotated)},l.getAxisClipWidth=function(t){var e=this,n=Math.max(30,e.margin.left),i=Math.max(30,e.margin.right);return t?e.width+2+n+i:e.margin.left+20},l.getAxisClipHeight=function(t){return(t?this.margin.bottom:this.margin.top+this.height)+20},l.getXAxisClipWidth=function(){var t=this;return t.getAxisClipWidth(!t.config.axis_rotated)},l.getXAxisClipHeight=function(){var t=this;return t.getAxisClipHeight(!t.config.axis_rotated)},l.getYAxisClipWidth=function(){var t=this;return t.getAxisClipWidth(t.config.axis_rotated)+(t.config.axis_y_inner?20:0)},l.getYAxisClipHeight=function(){var t=this;return t.getAxisClipHeight(t.config.axis_rotated)},l.initPie=function(){var t=this,e=t.d3,n=t.config;t.pie=e.layout.pie().value(function(t){return t.values.reduce(function(t,e){return t+e.value},0)}),n.data_order||t.pie.sort(null)},l.updateRadius=function(){var t=this,e=t.config,n=e.gauge_width||e.donut_width;t.radiusExpanded=Math.min(t.arcWidth,t.arcHeight)/2,t.radius=.95*t.radiusExpanded,t.innerRadiusRatio=n?(t.radius-n)/t.radius:.6,t.innerRadius=t.hasType("donut")||t.hasType("gauge")?t.radius*t.innerRadiusRatio:0},l.updateArc=function(){var t=this;t.svgArc=t.getSvgArc(),t.svgArcExpanded=t.getSvgArcExpanded(),t.svgArcExpandedSub=t.getSvgArcExpanded(.98)},l.updateAngle=function(t){var e,n,i,r,o=this,a=o.config,s=!1,l=0;return a?(o.pie(o.filterTargetsToShow(o.data.targets)).forEach(function(e){s||e.data.id!==t.data.id||(s=!0,t=e,t.index=l),l++}),isNaN(t.startAngle)&&(t.startAngle=0),isNaN(t.endAngle)&&(t.endAngle=t.startAngle),o.isGaugeType(t.data)&&(e=a.gauge_min,n=a.gauge_max,i=Math.PI*(a.gauge_fullCircle?2:1)/(n-e),r=t.value<e?0:t.value<n?t.value-e:n-e,t.startAngle=a.gauge_startingAngle,t.endAngle=t.startAngle+i*r),s?t:null):null},l.getSvgArc=function(){var t=this,e=t.d3.svg.arc().outerRadius(t.radius).innerRadius(t.innerRadius),n=function(n,i){var r;return i?e(n):(r=t.updateAngle(n),r?e(r):"M 0 0")};return n.centroid=e.centroid,n},l.getSvgArcExpanded=function(t){var e=this,n=e.d3.svg.arc().outerRadius(e.radiusExpanded*(t?t:1)).innerRadius(e.innerRadius);return function(t){var i=e.updateAngle(t);return i?n(i):"M 0 0"}},l.getArc=function(t,e,n){return n||this.isArcType(t.data)?this.svgArc(t,e):"M 0 0"},l.transformForArcLabel=function(t){var e,n,i,r,o,a=this,s=a.config,l=a.updateAngle(t),c="";return l&&!a.hasType("gauge")&&(e=this.svgArc.centroid(l),n=isNaN(e[0])?0:e[0],i=isNaN(e[1])?0:e[1],r=Math.sqrt(n*n+i*i),o=a.hasType("donut")&&s.donut_label_ratio?f(s.donut_label_ratio)?s.donut_label_ratio(t,a.radius,r):s.donut_label_ratio:a.hasType("pie")&&s.pie_label_ratio?f(s.pie_label_ratio)?s.pie_label_ratio(t,a.radius,r):s.pie_label_ratio:a.radius&&r?(36/a.radius>.375?1.175-36/a.radius:.8)*a.radius/r:0,c="translate("+n*o+","+i*o+")"),c},l.getArcRatio=function(t){var e=this,n=e.config,i=Math.PI*(e.hasType("gauge")&&!n.gauge_fullCircle?1:2);return t?(t.endAngle-t.startAngle)/i:null},l.convertToArcData=function(t){return this.addName({id:t.data.id,value:t.value,ratio:this.getArcRatio(t),index:t.index})},l.textForArcLabel=function(t){var e,n,i,r,o,a=this;return a.shouldShowArcLabel()?(e=a.updateAngle(t),n=e?e.value:null,i=a.getArcRatio(e),r=t.data.id,a.hasType("gauge")||a.meetsArcLabelThreshold(i)?(o=a.getArcLabelFormat(),o?o(n,i,r):a.defaultArcValueFormat(n,i)):""):""},l.expandArc=function(e){var n,i=this;return i.transiting?void(n=t.setInterval(function(){i.transiting||(t.clearInterval(n),i.legend.selectAll(".c3-legend-item-focused").size()>0&&i.expandArc(e))},10)):(e=i.mapToTargetIds(e),void i.svg.selectAll(i.selectorTargets(e,"."+h.chartArc)).each(function(t){i.shouldExpand(t.data.id)&&i.d3.select(this).selectAll("path").transition().duration(i.expandDuration(t.data.id)).attr("d",i.svgArcExpanded).transition().duration(2*i.expandDuration(t.data.id)).attr("d",i.svgArcExpandedSub).each(function(t){i.isDonutType(t.data)})}))},l.unexpandArc=function(t){var e=this;e.transiting||(t=e.mapToTargetIds(t),e.svg.selectAll(e.selectorTargets(t,"."+h.chartArc)).selectAll("path").transition().duration(function(t){return e.expandDuration(t.data.id)}).attr("d",e.svgArc),e.svg.selectAll("."+h.arc).style("opacity",1))},l.expandDuration=function(t){var e=this,n=e.config;return e.isDonutType(t)?n.donut_expand_duration:e.isGaugeType(t)?n.gauge_expand_duration:e.isPieType(t)?n.pie_expand_duration:50},l.shouldExpand=function(t){var e=this,n=e.config;return e.isDonutType(t)&&n.donut_expand||e.isGaugeType(t)&&n.gauge_expand||e.isPieType(t)&&n.pie_expand},l.shouldShowArcLabel=function(){var t=this,e=t.config,n=!0;return t.hasType("donut")?n=e.donut_label_show:t.hasType("pie")&&(n=e.pie_label_show),n},l.meetsArcLabelThreshold=function(t){var e=this,n=e.config,i=e.hasType("donut")?n.donut_label_threshold:n.pie_label_threshold;return t>=i},l.getArcLabelFormat=function(){var t=this,e=t.config,n=e.pie_label_format;return t.hasType("gauge")?n=e.gauge_label_format:t.hasType("donut")&&(n=e.donut_label_format),n},l.getArcTitle=function(){var t=this;return t.hasType("donut")?t.config.donut_title:""},l.updateTargetsForArc=function(t){var e,n,i=this,r=i.main,o=i.classChartArc.bind(i),a=i.classArcs.bind(i),s=i.classFocus.bind(i);e=r.select("."+h.chartArcs).selectAll("."+h.chartArc).data(i.pie(t)).attr("class",function(t){return o(t)+s(t.data)}),n=e.enter().append("g").attr("class",o),n.append("g").attr("class",a),n.append("text").attr("dy",i.hasType("gauge")?"-.1em":".35em").style("opacity",0).style("text-anchor","middle").style("pointer-events","none")},l.initArc=function(){var t=this;t.arcs=t.main.select("."+h.chart).append("g").attr("class",h.chartArcs).attr("transform",t.getTranslate("arc")),t.arcs.append("text").attr("class",h.chartArcsTitle).style("text-anchor","middle").text(t.getArcTitle())},l.redrawArc=function(t,e,n){var i,r=this,o=r.d3,a=r.config,s=r.main;i=s.selectAll("."+h.arcs).selectAll("."+h.arc).data(r.arcData.bind(r)),i.enter().append("path").attr("class",r.classArc.bind(r)).style("fill",function(t){return r.color(t.data)}).style("cursor",function(t){return a.interaction_enabled&&a.data_selection_isselectable(t)?"pointer":null}).style("opacity",0).each(function(t){r.isGaugeType(t.data)&&(t.startAngle=t.endAngle=a.gauge_startingAngle),this._current=t}),i.attr("transform",function(t){return!r.isGaugeType(t.data)&&n?"scale(0)":""}).style("opacity",function(t){return t===this._current?0:1}).on("mouseover",a.interaction_enabled?function(t){var e,n;r.transiting||(e=r.updateAngle(t),e&&(n=r.convertToArcData(e),r.expandArc(e.data.id),r.api.focus(e.data.id),r.toggleFocusLegend(e.data.id,!0),r.config.data_onmouseover(n,this)))}:null).on("mousemove",a.interaction_enabled?function(t){var e,n,i=r.updateAngle(t);i&&(e=r.convertToArcData(i),n=[e],r.showTooltip(n,this))}:null).on("mouseout",a.interaction_enabled?function(t){var e,n;r.transiting||(e=r.updateAngle(t),e&&(n=r.convertToArcData(e),r.unexpandArc(e.data.id),r.api.revert(),r.revertLegend(),r.hideTooltip(),r.config.data_onmouseout(n,this)))}:null).on("click",a.interaction_enabled?function(t,e){var n,i=r.updateAngle(t);i&&(n=r.convertToArcData(i),r.toggleShape&&r.toggleShape(this,n,e),r.config.data_onclick.call(r.api,n,this))}:null).each(function(){r.transiting=!0}).transition().duration(t).attrTween("d",function(t){var e,n=r.updateAngle(t);return n?(isNaN(this._current.startAngle)&&(this._current.startAngle=0),isNaN(this._current.endAngle)&&(this._current.endAngle=this._current.startAngle),e=o.interpolate(this._current,n),this._current=e(0),function(n){var i=e(n);return i.data=t.data,r.getArc(i,!0)}):function(){return"M 0 0"}}).attr("transform",n?"scale(1)":"").style("fill",function(t){return r.levelColor?r.levelColor(t.data.values[0].value):r.color(t.data.id)}).style("opacity",1).call(r.endall,function(){r.transiting=!1}),i.exit().transition().duration(e).style("opacity",0).remove(),s.selectAll("."+h.chartArc).select("text").style("opacity",0).attr("class",function(t){return r.isGaugeType(t.data)?h.gaugeValue:""}).text(r.textForArcLabel.bind(r)).attr("transform",r.transformForArcLabel.bind(r)).style("font-size",function(t){return r.isGaugeType(t.data)?Math.round(r.radius/5)+"px":""}).transition().duration(t).style("opacity",function(t){return r.isTargetToShow(t.data.id)&&r.isArcType(t.data)?1:0}),s.select("."+h.chartArcsTitle).style("opacity",r.hasType("donut")||r.hasType("gauge")?1:0),r.hasType("gauge")&&(r.arcs.select("."+h.chartArcsBackground).attr("d",function(){var t={data:[{value:a.gauge_max}],startAngle:a.gauge_startingAngle,endAngle:-1*a.gauge_startingAngle};return r.getArc(t,!0,!0)}),r.arcs.select("."+h.chartArcsGaugeUnit).attr("dy",".75em").text(a.gauge_label_show?a.gauge_units:""),r.arcs.select("."+h.chartArcsGaugeMin).attr("dx",-1*(r.innerRadius+(r.radius-r.innerRadius)/(a.gauge_fullCircle?1:2))+"px").attr("dy","1.2em").text(a.gauge_label_show?a.gauge_min:""),r.arcs.select("."+h.chartArcsGaugeMax).attr("dx",r.innerRadius+(r.radius-r.innerRadius)/(a.gauge_fullCircle?1:2)+"px").attr("dy","1.2em").text(a.gauge_label_show?a.gauge_max:""))},l.initGauge=function(){var t=this.arcs;this.hasType("gauge")&&(t.append("path").attr("class",h.chartArcsBackground),t.append("text").attr("class",h.chartArcsGaugeUnit).style("text-anchor","middle").style("pointer-events","none"),t.append("text").attr("class",h.chartArcsGaugeMin).style("text-anchor","middle").style("pointer-events","none"),t.append("text").attr("class",h.chartArcsGaugeMax).style("text-anchor","middle").style("pointer-events","none"))},l.getGaugeLabelHeight=function(){return this.config.gauge_label_show?20:0},l.initRegion=function(){var t=this;t.region=t.main.append("g").attr("clip-path",t.clipPath).attr("class",h.regions)},l.updateRegion=function(t){var e=this,n=e.config;e.region.style("visibility",e.hasArcType()?"hidden":"visible"),e.mainRegion=e.main.select("."+h.regions).selectAll("."+h.region).data(n.regions),e.mainRegion.enter().append("g").append("rect").style("fill-opacity",0),e.mainRegion.attr("class",e.classRegion.bind(e)),e.mainRegion.exit().transition().duration(t).style("opacity",0).remove()},l.redrawRegion=function(t){var e=this,n=e.mainRegion.selectAll("rect").each(function(){var t=e.d3.select(this.parentNode).datum();e.d3.select(this).datum(t)}),i=e.regionX.bind(e),r=e.regionY.bind(e),o=e.regionWidth.bind(e),a=e.regionHeight.bind(e);return[(t?n.transition():n).attr("x",i).attr("y",r).attr("width",o).attr("height",a).style("fill-opacity",function(t){return d(t.opacity)?t.opacity:.1})]},l.regionX=function(t){var e,n=this,i=n.config,r="y"===t.axis?n.y:n.y2;return e="y"===t.axis||"y2"===t.axis?i.axis_rotated&&"start"in t?r(t.start):0:i.axis_rotated?0:"start"in t?n.x(n.isTimeSeries()?n.parseDate(t.start):t.start):0},l.regionY=function(t){var e,n=this,i=n.config,r="y"===t.axis?n.y:n.y2;return e="y"===t.axis||"y2"===t.axis?i.axis_rotated?0:"end"in t?r(t.end):0:i.axis_rotated&&"start"in t?n.x(n.isTimeSeries()?n.parseDate(t.start):t.start):0},l.regionWidth=function(t){var e,n=this,i=n.config,r=n.regionX(t),o="y"===t.axis?n.y:n.y2;return e="y"===t.axis||"y2"===t.axis?i.axis_rotated&&"end"in t?o(t.end):n.width:i.axis_rotated?n.width:"end"in t?n.x(n.isTimeSeries()?n.parseDate(t.end):t.end):n.width,e<r?0:e-r},l.regionHeight=function(t){var e,n=this,i=n.config,r=this.regionY(t),o="y"===t.axis?n.y:n.y2;return e="y"===t.axis||"y2"===t.axis?i.axis_rotated?n.height:"start"in t?o(t.start):n.height:i.axis_rotated&&"end"in t?n.x(n.isTimeSeries()?n.parseDate(t.end):t.end):n.height,e<r?0:e-r},l.isRegionOnX=function(t){return!t.axis||"x"===t.axis},l.drag=function(t){var e,n,i,r,o,a,s,l,c=this,u=c.config,d=c.main,f=c.d3;c.hasArcType()||u.data_selection_enabled&&(u.zoom_enabled&&!c.zoom.altDomain||u.data_selection_multiple&&(e=c.dragStart[0],n=c.dragStart[1],i=t[0],r=t[1],o=Math.min(e,i),a=Math.max(e,i),s=u.data_selection_grouped?c.margin.top:Math.min(n,r),l=u.data_selection_grouped?c.height:Math.max(n,r),d.select("."+h.dragarea).attr("x",o).attr("y",s).attr("width",a-o).attr("height",l-s),d.selectAll("."+h.shapes).selectAll("."+h.shape).filter(function(t){return u.data_selection_isselectable(t)}).each(function(t,e){var n,i,r,u,d,p,g=f.select(this),m=g.classed(h.SELECTED),v=g.classed(h.INCLUDED),y=!1;if(g.classed(h.circle))n=1*g.attr("cx"),i=1*g.attr("cy"),d=c.togglePoint,y=o<n&&n<a&&s<i&&i<l;else{if(!g.classed(h.bar))return;p=T(this),n=p.x,i=p.y,r=p.width,u=p.height,d=c.togglePath,y=!(a<n||n+r<o||l<i||i+u<s)}y^v&&(g.classed(h.INCLUDED,!v),g.classed(h.SELECTED,!m),d.call(c,!m,g,t,e))})))},l.dragstart=function(t){var e=this,n=e.config;e.hasArcType()||n.data_selection_enabled&&(e.dragStart=t,e.main.select("."+h.chart).append("rect").attr("class",h.dragarea).style("opacity",.1),e.dragging=!0)},l.dragend=function(){var t=this,e=t.config;t.hasArcType()||e.data_selection_enabled&&(t.main.select("."+h.dragarea).transition().duration(100).style("opacity",0).remove(),t.main.selectAll("."+h.shape).classed(h.INCLUDED,!1),t.dragging=!1)},l.selectPoint=function(t,e,n){var i=this,r=i.config,o=(r.axis_rotated?i.circleY:i.circleX).bind(i),a=(r.axis_rotated?i.circleX:i.circleY).bind(i),s=i.pointSelectR.bind(i);r.data_onselected.call(i.api,e,t.node()),i.main.select("."+h.selectedCircles+i.getTargetSelectorSuffix(e.id)).selectAll("."+h.selectedCircle+"-"+n).data([e]).enter().append("circle").attr("class",function(){return i.generateClass(h.selectedCircle,n)}).attr("cx",o).attr("cy",a).attr("stroke",function(){return i.color(e)}).attr("r",function(t){return 1.4*i.pointSelectR(t)}).transition().duration(100).attr("r",s)},l.unselectPoint=function(t,e,n){var i=this;i.config.data_onunselected.call(i.api,e,t.node()),i.main.select("."+h.selectedCircles+i.getTargetSelectorSuffix(e.id)).selectAll("."+h.selectedCircle+"-"+n).transition().duration(100).attr("r",0).remove()},l.togglePoint=function(t,e,n,i){t?this.selectPoint(e,n,i):this.unselectPoint(e,n,i)},l.selectPath=function(t,e){var n=this;n.config.data_onselected.call(n,e,t.node()),n.config.interaction_brighten&&t.transition().duration(100).style("fill",function(){return n.d3.rgb(n.color(e)).brighter(.75)})},l.unselectPath=function(t,e){var n=this;n.config.data_onunselected.call(n,e,t.node()),n.config.interaction_brighten&&t.transition().duration(100).style("fill",function(){return n.color(e)})},l.togglePath=function(t,e,n,i){t?this.selectPath(e,n,i):this.unselectPath(e,n,i)},l.getToggle=function(t,e){var n,i=this;return"circle"===t.nodeName?n=i.isStepType(e)?function(){}:i.togglePoint:"path"===t.nodeName&&(n=i.togglePath),n},l.toggleShape=function(t,e,n){var i=this,r=i.d3,o=i.config,a=r.select(t),s=a.classed(h.SELECTED),l=i.getToggle(t,e).bind(i);o.data_selection_enabled&&o.data_selection_isselectable(e)&&(o.data_selection_multiple||i.main.selectAll("."+h.shapes+(o.data_selection_grouped?i.getTargetSelectorSuffix(e.id):"")).selectAll("."+h.shape).each(function(t,e){
+var n=r.select(this);n.classed(h.SELECTED)&&l(!1,n.classed(h.SELECTED,!1),t,e)}),a.classed(h.SELECTED,!s),l(!s,a,e,n))},l.initBrush=function(){var t=this,e=t.d3;t.brush=e.svg.brush().on("brush",function(){t.redrawForBrush()}),t.brush.update=function(){return t.context&&t.context.select("."+h.brush).call(this),this},t.brush.scale=function(e){return t.config.axis_rotated?this.y(e):this.x(e)}},l.initSubchart=function(){var t=this,e=t.config,n=t.context=t.svg.append("g").attr("transform",t.getTranslate("context")),i=e.subchart_show?"visible":"hidden";n.style("visibility",i),n.append("g").attr("clip-path",t.clipPathForSubchart).attr("class",h.chart),n.select("."+h.chart).append("g").attr("class",h.chartBars),n.select("."+h.chart).append("g").attr("class",h.chartLines),n.append("g").attr("clip-path",t.clipPath).attr("class",h.brush).call(t.brush),t.axes.subx=n.append("g").attr("class",h.axisX).attr("transform",t.getTranslate("subx")).attr("clip-path",e.axis_rotated?"":t.clipPathForXAxis).style("visibility",e.subchart_axis_x_show?i:"hidden")},l.updateTargetsForSubchart=function(t){var e,n,i,r,o=this,a=o.context,s=o.config,l=o.classChartBar.bind(o),c=o.classBars.bind(o),u=o.classChartLine.bind(o),d=o.classLines.bind(o),f=o.classAreas.bind(o);s.subchart_show&&(r=a.select("."+h.chartBars).selectAll("."+h.chartBar).data(t).attr("class",l),i=r.enter().append("g").style("opacity",0).attr("class",l),i.append("g").attr("class",c),n=a.select("."+h.chartLines).selectAll("."+h.chartLine).data(t).attr("class",u),e=n.enter().append("g").style("opacity",0).attr("class",u),e.append("g").attr("class",d),e.append("g").attr("class",f),a.selectAll("."+h.brush+" rect").attr(s.axis_rotated?"width":"height",s.axis_rotated?o.width2:o.height2))},l.updateBarForSubchart=function(t){var e=this;e.contextBar=e.context.selectAll("."+h.bars).selectAll("."+h.bar).data(e.barData.bind(e)),e.contextBar.enter().append("path").attr("class",e.classBar.bind(e)).style("stroke","none").style("fill",e.color),e.contextBar.style("opacity",e.initialOpacity.bind(e)),e.contextBar.exit().transition().duration(t).style("opacity",0).remove()},l.redrawBarForSubchart=function(t,e,n){(e?this.contextBar.transition(Math.random().toString()).duration(n):this.contextBar).attr("d",t).style("opacity",1)},l.updateLineForSubchart=function(t){var e=this;e.contextLine=e.context.selectAll("."+h.lines).selectAll("."+h.line).data(e.lineData.bind(e)),e.contextLine.enter().append("path").attr("class",e.classLine.bind(e)).style("stroke",e.color),e.contextLine.style("opacity",e.initialOpacity.bind(e)),e.contextLine.exit().transition().duration(t).style("opacity",0).remove()},l.redrawLineForSubchart=function(t,e,n){(e?this.contextLine.transition(Math.random().toString()).duration(n):this.contextLine).attr("d",t).style("opacity",1)},l.updateAreaForSubchart=function(t){var e=this,n=e.d3;e.contextArea=e.context.selectAll("."+h.areas).selectAll("."+h.area).data(e.lineData.bind(e)),e.contextArea.enter().append("path").attr("class",e.classArea.bind(e)).style("fill",e.color).style("opacity",function(){return e.orgAreaOpacity=+n.select(this).style("opacity"),0}),e.contextArea.style("opacity",0),e.contextArea.exit().transition().duration(t).style("opacity",0).remove()},l.redrawAreaForSubchart=function(t,e,n){(e?this.contextArea.transition(Math.random().toString()).duration(n):this.contextArea).attr("d",t).style("fill",this.color).style("opacity",this.orgAreaOpacity)},l.redrawSubchart=function(t,e,n,i,r,o,a){var s,l,c,u=this,h=u.d3,d=u.config;u.context.style("visibility",d.subchart_show?"visible":"hidden"),d.subchart_show&&(h.event&&"zoom"===h.event.type&&u.brush.extent(u.x.orgDomain()).update(),t&&(u.brush.empty()||u.brush.extent(u.x.orgDomain()).update(),s=u.generateDrawArea(r,!0),l=u.generateDrawBar(o,!0),c=u.generateDrawLine(a,!0),u.updateBarForSubchart(n),u.updateLineForSubchart(n),u.updateAreaForSubchart(n),u.redrawBarForSubchart(l,n,n),u.redrawLineForSubchart(c,n,n),u.redrawAreaForSubchart(s,n,n)))},l.redrawForBrush=function(){var t=this,e=t.x;t.redraw({withTransition:!1,withY:t.config.zoom_rescale,withSubchart:!1,withUpdateXDomain:!0,withDimension:!1}),t.config.subchart_onbrush.call(t.api,e.orgDomain())},l.transformContext=function(t,e){var n,i=this;e&&e.axisSubX?n=e.axisSubX:(n=i.context.select("."+h.axisX),t&&(n=n.transition())),i.context.attr("transform",i.getTranslate("context")),n.attr("transform",i.getTranslate("subx"))},l.getDefaultExtent=function(){var t=this,e=t.config,n=f(e.axis_x_extent)?e.axis_x_extent(t.getXDomain(t.data.targets)):e.axis_x_extent;return t.isTimeSeries()&&(n=[t.parseDate(n[0]),t.parseDate(n[1])]),n},l.initZoom=function(){var t,e=this,n=e.d3,i=e.config;e.zoom=n.behavior.zoom().on("zoomstart",function(){t=n.event.sourceEvent,e.zoom.altDomain=n.event.sourceEvent.altKey?e.x.orgDomain():null,i.zoom_onzoomstart.call(e.api,n.event.sourceEvent)}).on("zoom",function(){e.redrawForZoom.call(e)}).on("zoomend",function(){var r=n.event.sourceEvent;r&&t.clientX===r.clientX&&t.clientY===r.clientY||(e.redrawEventRect(),e.updateZoom(),i.zoom_onzoomend.call(e.api,e.x.orgDomain()))}),e.zoom.scale=function(t){return i.axis_rotated?this.y(t):this.x(t)},e.zoom.orgScaleExtent=function(){var t=i.zoom_extent?i.zoom_extent:[1,10];return[t[0],Math.max(e.getMaxDataCount()/t[1],t[1])]},e.zoom.updateScaleExtent=function(){var t=x(e.x.orgDomain())/x(e.getZoomDomain()),n=this.orgScaleExtent();return this.scaleExtent([n[0]*t,n[1]*t]),this}},l.getZoomDomain=function(){var t=this,e=t.config,n=t.d3,i=n.min([t.orgXDomain[0],e.zoom_x_min]),r=n.max([t.orgXDomain[1],e.zoom_x_max]);return[i,r]},l.updateZoom=function(){var t=this,e=t.config.zoom_enabled?t.zoom:function(){};t.main.select("."+h.zoomRect).call(e).on("dblclick.zoom",null),t.main.selectAll("."+h.eventRect).call(e).on("dblclick.zoom",null)},l.redrawForZoom=function(){var t=this,e=t.d3,n=t.config,i=t.zoom,r=t.x;if(n.zoom_enabled&&0!==t.filterTargetsToShow(t.data.targets).length){if("mousemove"===e.event.sourceEvent.type&&i.altDomain)return r.domain(i.altDomain),void i.scale(r).updateScaleExtent();t.isCategorized()&&r.orgDomain()[0]===t.orgXDomain[0]&&r.domain([t.orgXDomain[0]-1e-10,r.orgDomain()[1]]),t.redraw({withTransition:!1,withY:n.zoom_rescale,withSubchart:!1,withEventRect:!1,withDimension:!1}),"mousemove"===e.event.sourceEvent.type&&(t.cancelClick=!0),n.zoom_onzoom.call(t.api,r.orgDomain())}},l.generateColor=function(){var t=this,e=t.config,n=t.d3,i=e.data_colors,r=_(e.color_pattern)?e.color_pattern:n.scale.category10().range(),o=e.data_color,a=[];return function(t){var e,n=t.id||t.data&&t.data.id||t;return i[n]instanceof Function?e=i[n](t):i[n]?e=i[n]:(a.indexOf(n)<0&&a.push(n),e=r[a.indexOf(n)%r.length],i[n]=e),o instanceof Function?o(e,t):e}},l.generateLevelColor=function(){var t=this,e=t.config,n=e.color_pattern,i=e.color_threshold,r="value"===i.unit,o=i.values&&i.values.length?i.values:[],a=i.max||100;return _(e.color_threshold)?function(t){var e,i,s=n[n.length-1];for(e=0;e<o.length;e++)if(i=r?t:100*t/a,i<o[e]){s=n[e];break}return s}:null},l.getYFormat=function(t){var e=this,n=t&&!e.hasType("gauge")?e.defaultArcValueFormat:e.yFormat,i=t&&!e.hasType("gauge")?e.defaultArcValueFormat:e.y2Format;return function(t,r,o){var a="y2"===e.axis.getId(o)?i:n;return a.call(e,t,r)}},l.yFormat=function(t){var e=this,n=e.config,i=n.axis_y_tick_format?n.axis_y_tick_format:e.defaultValueFormat;return i(t)},l.y2Format=function(t){var e=this,n=e.config,i=n.axis_y2_tick_format?n.axis_y2_tick_format:e.defaultValueFormat;return i(t)},l.defaultValueFormat=function(t){return d(t)?+t:""},l.defaultArcValueFormat=function(t,e){return(100*e).toFixed(1)+"%"},l.dataLabelFormat=function(t){var e,n=this,i=n.config.data_labels,r=function(t){return d(t)?+t:""};return e="function"==typeof i.format?i.format:"object"==typeof i.format?i.format[t]?i.format[t]===!0?r:i.format[t]:function(){return""}:r},l.hasCaches=function(t){for(var e=0;e<t.length;e++)if(!(t[e]in this.cache))return!1;return!0},l.addCache=function(t,e){this.cache[t]=this.cloneTarget(e)},l.getCaches=function(t){var e,n=[];for(e=0;e<t.length;e++)t[e]in this.cache&&n.push(this.cloneTarget(this.cache[t[e]]));return n};var h=l.CLASS={target:"c3-target",chart:"c3-chart",chartLine:"c3-chart-line",chartLines:"c3-chart-lines",chartBar:"c3-chart-bar",chartBars:"c3-chart-bars",chartText:"c3-chart-text",chartTexts:"c3-chart-texts",chartArc:"c3-chart-arc",chartArcs:"c3-chart-arcs",chartArcsTitle:"c3-chart-arcs-title",chartArcsBackground:"c3-chart-arcs-background",chartArcsGaugeUnit:"c3-chart-arcs-gauge-unit",chartArcsGaugeMax:"c3-chart-arcs-gauge-max",chartArcsGaugeMin:"c3-chart-arcs-gauge-min",selectedCircle:"c3-selected-circle",selectedCircles:"c3-selected-circles",eventRect:"c3-event-rect",eventRects:"c3-event-rects",eventRectsSingle:"c3-event-rects-single",eventRectsMultiple:"c3-event-rects-multiple",zoomRect:"c3-zoom-rect",brush:"c3-brush",focused:"c3-focused",defocused:"c3-defocused",region:"c3-region",regions:"c3-regions",title:"c3-title",tooltipContainer:"c3-tooltip-container",tooltip:"c3-tooltip",tooltipName:"c3-tooltip-name",shape:"c3-shape",shapes:"c3-shapes",line:"c3-line",lines:"c3-lines",bar:"c3-bar",bars:"c3-bars",circle:"c3-circle",circles:"c3-circles",arc:"c3-arc",arcs:"c3-arcs",area:"c3-area",areas:"c3-areas",empty:"c3-empty",text:"c3-text",texts:"c3-texts",gaugeValue:"c3-gauge-value",grid:"c3-grid",gridLines:"c3-grid-lines",xgrid:"c3-xgrid",xgrids:"c3-xgrids",xgridLine:"c3-xgrid-line",xgridLines:"c3-xgrid-lines",xgridFocus:"c3-xgrid-focus",ygrid:"c3-ygrid",ygrids:"c3-ygrids",ygridLine:"c3-ygrid-line",ygridLines:"c3-ygrid-lines",axis:"c3-axis",axisX:"c3-axis-x",axisXLabel:"c3-axis-x-label",axisY:"c3-axis-y",axisYLabel:"c3-axis-y-label",axisY2:"c3-axis-y2",axisY2Label:"c3-axis-y2-label",legendBackground:"c3-legend-background",legendItem:"c3-legend-item",legendItemEvent:"c3-legend-item-event",legendItemTile:"c3-legend-item-tile",legendItemHidden:"c3-legend-item-hidden",legendItemFocused:"c3-legend-item-focused",dragarea:"c3-dragarea",EXPANDED:"_expanded_",SELECTED:"_selected_",INCLUDED:"_included_"};l.generateClass=function(t,e){return" "+t+" "+t+this.getTargetSelectorSuffix(e)},l.classText=function(t){return this.generateClass(h.text,t.index)},l.classTexts=function(t){return this.generateClass(h.texts,t.id)},l.classShape=function(t){return this.generateClass(h.shape,t.index)},l.classShapes=function(t){return this.generateClass(h.shapes,t.id)},l.classLine=function(t){return this.classShape(t)+this.generateClass(h.line,t.id)},l.classLines=function(t){return this.classShapes(t)+this.generateClass(h.lines,t.id)},l.classCircle=function(t){return this.classShape(t)+this.generateClass(h.circle,t.index)},l.classCircles=function(t){return this.classShapes(t)+this.generateClass(h.circles,t.id)},l.classBar=function(t){return this.classShape(t)+this.generateClass(h.bar,t.index)},l.classBars=function(t){return this.classShapes(t)+this.generateClass(h.bars,t.id)},l.classArc=function(t){return this.classShape(t.data)+this.generateClass(h.arc,t.data.id)},l.classArcs=function(t){return this.classShapes(t.data)+this.generateClass(h.arcs,t.data.id)},l.classArea=function(t){return this.classShape(t)+this.generateClass(h.area,t.id)},l.classAreas=function(t){return this.classShapes(t)+this.generateClass(h.areas,t.id)},l.classRegion=function(t,e){return this.generateClass(h.region,e)+" "+("class"in t?t.class:"")},l.classEvent=function(t){return this.generateClass(h.eventRect,t.index)},l.classTarget=function(t){var e=this,n=e.config.data_classes[t],i="";return n&&(i=" "+h.target+"-"+n),e.generateClass(h.target,t)+i},l.classFocus=function(t){return this.classFocused(t)+this.classDefocused(t)},l.classFocused=function(t){return" "+(this.focusedTargetIds.indexOf(t.id)>=0?h.focused:"")},l.classDefocused=function(t){return" "+(this.defocusedTargetIds.indexOf(t.id)>=0?h.defocused:"")},l.classChartText=function(t){return h.chartText+this.classTarget(t.id)},l.classChartLine=function(t){return h.chartLine+this.classTarget(t.id)},l.classChartBar=function(t){return h.chartBar+this.classTarget(t.id)},l.classChartArc=function(t){return h.chartArc+this.classTarget(t.data.id)},l.getTargetSelectorSuffix=function(t){return t||0===t?("-"+t).replace(/[\s?!@#$%^&*()_=+,.<>'":;\[\]\/|~`{}\\]/g,"-"):""},l.selectorTarget=function(t,e){return(e||"")+"."+h.target+this.getTargetSelectorSuffix(t)},l.selectorTargets=function(t,e){var n=this;return t=t||[],t.length?t.map(function(t){return n.selectorTarget(t,e)}):null},l.selectorLegend=function(t){return"."+h.legendItem+this.getTargetSelectorSuffix(t)},l.selectorLegends=function(t){var e=this;return t&&t.length?t.map(function(t){return e.selectorLegend(t)}):null};var d=l.isValue=function(t){return t||0===t},f=l.isFunction=function(t){return"function"==typeof t},p=l.isString=function(t){return"string"==typeof t},g=l.isUndefined=function(t){return"undefined"==typeof t},m=l.isDefined=function(t){return"undefined"!=typeof t},v=l.ceil10=function(t){return 10*Math.ceil(t/10)},y=l.asHalfPixel=function(t){return Math.ceil(t)+.5},x=l.diffDomain=function(t){return t[1]-t[0]},b=l.isEmpty=function(t){return"undefined"==typeof t||null===t||p(t)&&0===t.length||"object"==typeof t&&0===Object.keys(t).length},_=l.notEmpty=function(t){return!l.isEmpty(t)},w=l.getOption=function(t,e,n){return m(t[e])?t[e]:n},S=l.hasValue=function(t,e){var n=!1;return Object.keys(t).forEach(function(i){t[i]===e&&(n=!0)}),n},C=l.sanitise=function(t){return"string"==typeof t?t.replace(/</g,"&lt;").replace(/>/g,"&gt;"):t},T=l.getPathBox=function(t){var e=t.getBoundingClientRect(),n=[t.pathSegList.getItem(0),t.pathSegList.getItem(1)],i=n[0].x,r=Math.min(n[0].y,n[1].y);return{x:i,y:r,width:e.width,height:e.height}};s.focus=function(t){var e,n=this.internal;t=n.mapToTargetIds(t),e=n.svg.selectAll(n.selectorTargets(t.filter(n.isTargetToShow,n))),this.revert(),this.defocus(),e.classed(h.focused,!0).classed(h.defocused,!1),n.hasArcType()&&n.expandArc(t),n.toggleFocusLegend(t,!0),n.focusedTargetIds=t,n.defocusedTargetIds=n.defocusedTargetIds.filter(function(e){return t.indexOf(e)<0})},s.defocus=function(t){var e,n=this.internal;t=n.mapToTargetIds(t),e=n.svg.selectAll(n.selectorTargets(t.filter(n.isTargetToShow,n))),e.classed(h.focused,!1).classed(h.defocused,!0),n.hasArcType()&&n.unexpandArc(t),n.toggleFocusLegend(t,!1),n.focusedTargetIds=n.focusedTargetIds.filter(function(e){return t.indexOf(e)<0}),n.defocusedTargetIds=t},s.revert=function(t){var e,n=this.internal;t=n.mapToTargetIds(t),e=n.svg.selectAll(n.selectorTargets(t)),e.classed(h.focused,!1).classed(h.defocused,!1),n.hasArcType()&&n.unexpandArc(t),n.config.legend_show&&(n.showLegend(t.filter(n.isLegendToShow.bind(n))),n.legend.selectAll(n.selectorLegends(t)).filter(function(){return n.d3.select(this).classed(h.legendItemFocused)}).classed(h.legendItemFocused,!1)),n.focusedTargetIds=[],n.defocusedTargetIds=[]},s.show=function(t,e){var n,i=this.internal;t=i.mapToTargetIds(t),e=e||{},i.removeHiddenTargetIds(t),n=i.svg.selectAll(i.selectorTargets(t)),n.transition().style("opacity",1,"important").call(i.endall,function(){n.style("opacity",null).style("opacity",1)}),e.withLegend&&i.showLegend(t),i.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0})},s.hide=function(t,e){var n,i=this.internal;t=i.mapToTargetIds(t),e=e||{},i.addHiddenTargetIds(t),n=i.svg.selectAll(i.selectorTargets(t)),n.transition().style("opacity",0,"important").call(i.endall,function(){n.style("opacity",null).style("opacity",0)}),e.withLegend&&i.hideLegend(t),i.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0})},s.toggle=function(t,e){var n=this,i=this.internal;i.mapToTargetIds(t).forEach(function(t){i.isTargetToShow(t)?n.hide(t,e):n.show(t,e)})},s.zoom=function(t){var e=this.internal;return t&&(e.isTimeSeries()&&(t=t.map(function(t){return e.parseDate(t)})),e.brush.extent(t),e.redraw({withUpdateXDomain:!0,withY:e.config.zoom_rescale}),e.config.zoom_onzoom.call(this,e.x.orgDomain())),e.brush.extent()},s.zoom.enable=function(t){var e=this.internal;e.config.zoom_enabled=t,e.updateAndRedraw()},s.unzoom=function(){var t=this.internal;t.brush.clear().update(),t.redraw({withUpdateXDomain:!0})},s.zoom.max=function(t){var e=this.internal,n=e.config,i=e.d3;return 0===t||t?void(n.zoom_x_max=i.max([e.orgXDomain[1],t])):n.zoom_x_max},s.zoom.min=function(t){var e=this.internal,n=e.config,i=e.d3;return 0===t||t?void(n.zoom_x_min=i.min([e.orgXDomain[0],t])):n.zoom_x_min},s.zoom.range=function(t){return arguments.length?(m(t.max)&&this.domain.max(t.max),void(m(t.min)&&this.domain.min(t.min))):{max:this.domain.max(),min:this.domain.min()}},s.load=function(t){var e=this.internal,n=e.config;return t.xs&&e.addXs(t.xs),"names"in t&&s.data.names.bind(this)(t.names),"classes"in t&&Object.keys(t.classes).forEach(function(e){n.data_classes[e]=t.classes[e]}),"categories"in t&&e.isCategorized()&&(n.axis_x_categories=t.categories),"axes"in t&&Object.keys(t.axes).forEach(function(e){n.data_axes[e]=t.axes[e]}),"colors"in t&&Object.keys(t.colors).forEach(function(e){n.data_colors[e]=t.colors[e]}),"cacheIds"in t&&e.hasCaches(t.cacheIds)?void e.load(e.getCaches(t.cacheIds),t.done):void("unload"in t?e.unload(e.mapToTargetIds("boolean"==typeof t.unload&&t.unload?null:t.unload),function(){e.loadFromArgs(t)}):e.loadFromArgs(t))},s.unload=function(t){var e=this.internal;t=t||{},t instanceof Array?t={ids:t}:"string"==typeof t&&(t={ids:[t]}),e.unload(e.mapToTargetIds(t.ids),function(){e.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0}),t.done&&t.done()})},s.flow=function(t){var e,n,i,r,o,a,s,l,c=this.internal,u=[],h=c.getMaxDataCount(),f=0,p=0;if(t.json)n=c.convertJsonToData(t.json,t.keys);else if(t.rows)n=c.convertRowsToData(t.rows);else{if(!t.columns)return;n=c.convertColumnsToData(t.columns)}e=c.convertDataToTargets(n,!0),c.data.targets.forEach(function(t){var n,i,r=!1;for(n=0;n<e.length;n++)if(t.id===e[n].id){for(r=!0,t.values[t.values.length-1]&&(p=t.values[t.values.length-1].index+1),f=e[n].values.length,i=0;i<f;i++)e[n].values[i].index=p+i,c.isTimeSeries()||(e[n].values[i].x=p+i);t.values=t.values.concat(e[n].values),e.splice(n,1);break}r||u.push(t.id)}),c.data.targets.forEach(function(t){var e,n;for(e=0;e<u.length;e++)if(t.id===u[e])for(p=t.values[t.values.length-1].index+1,n=0;n<f;n++)t.values.push({id:t.id,index:p+n,x:c.isTimeSeries()?c.getOtherTargetX(p+n):p+n,value:null})}),c.data.targets.length&&e.forEach(function(t){var e,n=[];for(e=c.data.targets[0].values[0].index;e<p;e++)n.push({id:t.id,index:e,x:c.isTimeSeries()?c.getOtherTargetX(e):e,value:null});t.values.forEach(function(t){t.index+=p,c.isTimeSeries()||(t.x+=p)}),t.values=n.concat(t.values)}),c.data.targets=c.data.targets.concat(e),i=c.getMaxDataCount(),o=c.data.targets[0],a=o.values[0],m(t.to)?(f=0,l=c.isTimeSeries()?c.parseDate(t.to):t.to,o.values.forEach(function(t){t.x<l&&f++})):m(t.length)&&(f=t.length),h?1===h&&c.isTimeSeries()&&(s=(o.values[o.values.length-1].x-a.x)/2,r=[new Date(+a.x-s),new Date(+a.x+s)],c.updateXDomain(null,!0,!0,!1,r)):(s=c.isTimeSeries()?o.values.length>1?o.values[o.values.length-1].x-a.x:a.x-c.getXDomain(c.data.targets)[0]:1,r=[a.x-s,a.x],c.updateXDomain(null,!0,!0,!1,r)),c.updateTargets(c.data.targets),c.redraw({flow:{index:a.index,length:f,duration:d(t.duration)?t.duration:c.config.transition_duration,done:t.done,orgDataCount:h},withLegend:!0,withTransition:h>1,withTrimXDomain:!1,withUpdateXAxis:!0})},l.generateFlow=function(t){var e=this,n=e.config,i=e.d3;return function(){var r,o,a,s=t.targets,l=t.flow,c=t.drawBar,u=t.drawLine,d=t.drawArea,f=t.cx,p=t.cy,g=t.xv,m=t.xForText,v=t.yForText,y=t.duration,b=1,_=l.index,w=l.length,S=e.getValueOnIndex(e.data.targets[0].values,_),C=e.getValueOnIndex(e.data.targets[0].values,_+w),T=e.x.domain(),k=l.duration||y,A=l.done||function(){},M=e.generateWait(),L=e.xgrid||i.selectAll([]),E=e.xgridLines||i.selectAll([]),P=e.mainRegion||i.selectAll([]),N=e.mainText||i.selectAll([]),O=e.mainBar||i.selectAll([]),R=e.mainLine||i.selectAll([]),D=e.mainArea||i.selectAll([]),I=e.mainCircle||i.selectAll([]);e.flowing=!0,e.data.targets.forEach(function(t){t.values.splice(0,w)}),a=e.updateXDomain(s,!0,!0),e.updateXGrid&&e.updateXGrid(!0),l.orgDataCount?r=1===l.orgDataCount||(S&&S.x)===(C&&C.x)?e.x(T[0])-e.x(a[0]):e.isTimeSeries()?e.x(T[0])-e.x(a[0]):e.x(S.x)-e.x(C.x):1!==e.data.targets[0].values.length?r=e.x(T[0])-e.x(a[0]):e.isTimeSeries()?(S=e.getValueOnIndex(e.data.targets[0].values,0),C=e.getValueOnIndex(e.data.targets[0].values,e.data.targets[0].values.length-1),r=e.x(S.x)-e.x(C.x)):r=x(a)/2,b=x(T)/x(a),o="translate("+r+",0) scale("+b+",1)",e.hideXGridFocus(),i.transition().ease("linear").duration(k).each(function(){M.add(e.axes.x.transition().call(e.xAxis)),M.add(O.transition().attr("transform",o)),M.add(R.transition().attr("transform",o)),M.add(D.transition().attr("transform",o)),M.add(I.transition().attr("transform",o)),M.add(N.transition().attr("transform",o)),M.add(P.filter(e.isRegionOnX).transition().attr("transform",o)),M.add(L.transition().attr("transform",o)),M.add(E.transition().attr("transform",o))}).call(M,function(){var t,i=[],r=[],o=[];if(w){for(t=0;t<w;t++)i.push("."+h.shape+"-"+(_+t)),r.push("."+h.text+"-"+(_+t)),o.push("."+h.eventRect+"-"+(_+t));e.svg.selectAll("."+h.shapes).selectAll(i).remove(),e.svg.selectAll("."+h.texts).selectAll(r).remove(),e.svg.selectAll("."+h.eventRects).selectAll(o).remove(),e.svg.select("."+h.xgrid).remove()}L.attr("transform",null).attr(e.xgridAttr),E.attr("transform",null),E.select("line").attr("x1",n.axis_rotated?0:g).attr("x2",n.axis_rotated?e.width:g),E.select("text").attr("x",n.axis_rotated?e.width:0).attr("y",g),O.attr("transform",null).attr("d",c),R.attr("transform",null).attr("d",u),D.attr("transform",null).attr("d",d),I.attr("transform",null).attr("cx",f).attr("cy",p),N.attr("transform",null).attr("x",m).attr("y",v).style("fill-opacity",e.opacityForText.bind(e)),P.attr("transform",null),P.select("rect").filter(e.isRegionOnX).attr("x",e.regionX.bind(e)).attr("width",e.regionWidth.bind(e)),n.interaction_enabled&&e.redrawEventRect(),A(),e.flowing=!1})}},s.selected=function(t){var e=this.internal,n=e.d3;return n.merge(e.main.selectAll("."+h.shapes+e.getTargetSelectorSuffix(t)).selectAll("."+h.shape).filter(function(){return n.select(this).classed(h.SELECTED)}).map(function(t){return t.map(function(t){var e=t.__data__;return e.data?e.data:e})}))},s.select=function(t,e,n){var i=this.internal,r=i.d3,o=i.config;o.data_selection_enabled&&i.main.selectAll("."+h.shapes).selectAll("."+h.shape).each(function(a,s){var l=r.select(this),c=a.data?a.data.id:a.id,u=i.getToggle(this,a).bind(i),d=o.data_selection_grouped||!t||t.indexOf(c)>=0,f=!e||e.indexOf(s)>=0,p=l.classed(h.SELECTED);l.classed(h.line)||l.classed(h.area)||(d&&f?o.data_selection_isselectable(a)&&!p&&u(!0,l.classed(h.SELECTED,!0),a,s):m(n)&&n&&p&&u(!1,l.classed(h.SELECTED,!1),a,s))})},s.unselect=function(t,e){var n=this.internal,i=n.d3,r=n.config;r.data_selection_enabled&&n.main.selectAll("."+h.shapes).selectAll("."+h.shape).each(function(o,a){var s=i.select(this),l=o.data?o.data.id:o.id,c=n.getToggle(this,o).bind(n),u=r.data_selection_grouped||!t||t.indexOf(l)>=0,d=!e||e.indexOf(a)>=0,f=s.classed(h.SELECTED);s.classed(h.line)||s.classed(h.area)||u&&d&&r.data_selection_isselectable(o)&&f&&c(!1,s.classed(h.SELECTED,!1),o,a)})},s.transform=function(t,e){var n=this.internal,i=["pie","donut"].indexOf(t)>=0?{withTransform:!0}:null;n.transformTo(e,t,i)},l.transformTo=function(t,e,n){var i=this,r=!i.hasArcType(),o=n||{withTransitionForAxis:r};o.withTransitionForTransform=!1,i.transiting=!1,i.setTargetType(t,e),i.updateTargets(i.data.targets),i.updateAndRedraw(o)},s.groups=function(t){var e=this.internal,n=e.config;return g(t)?n.data_groups:(n.data_groups=t,e.redraw(),n.data_groups)},s.xgrids=function(t){var e=this.internal,n=e.config;return t?(n.grid_x_lines=t,e.redrawWithoutRescale(),n.grid_x_lines):n.grid_x_lines},s.xgrids.add=function(t){var e=this.internal;return this.xgrids(e.config.grid_x_lines.concat(t?t:[]))},s.xgrids.remove=function(t){var e=this.internal;e.removeGridLines(t,!0)},s.ygrids=function(t){var e=this.internal,n=e.config;return t?(n.grid_y_lines=t,e.redrawWithoutRescale(),n.grid_y_lines):n.grid_y_lines},s.ygrids.add=function(t){var e=this.internal;return this.ygrids(e.config.grid_y_lines.concat(t?t:[]))},s.ygrids.remove=function(t){var e=this.internal;e.removeGridLines(t,!1)},s.regions=function(t){var e=this.internal,n=e.config;return t?(n.regions=t,e.redrawWithoutRescale(),n.regions):n.regions},s.regions.add=function(t){var e=this.internal,n=e.config;return t?(n.regions=n.regions.concat(t),e.redrawWithoutRescale(),n.regions):n.regions},s.regions.remove=function(t){var e,n,i,r=this.internal,o=r.config;return t=t||{},e=r.getOption(t,"duration",o.transition_duration),n=r.getOption(t,"classes",[h.region]),i=r.main.select("."+h.regions).selectAll(n.map(function(t){return"."+t})),(e?i.transition().duration(e):i).style("opacity",0).remove(),o.regions=o.regions.filter(function(t){var e=!1;return!t.class||(t.class.split(" ").forEach(function(t){n.indexOf(t)>=0&&(e=!0)}),!e)}),o.regions},s.data=function(t){var e=this.internal.data.targets;return"undefined"==typeof t?e:e.filter(function(e){return[].concat(t).indexOf(e.id)>=0})},s.data.shown=function(t){return this.internal.filterTargetsToShow(this.data(t))},s.data.values=function(t){var e,n=null;return t&&(e=this.data(t),n=e[0]?e[0].values.map(function(t){return t.value}):null),n},s.data.names=function(t){return this.internal.clearLegendItemTextBoxCache(),this.internal.updateDataAttributes("names",t)},s.data.colors=function(t){return this.internal.updateDataAttributes("colors",t)},s.data.axes=function(t){return this.internal.updateDataAttributes("axes",t)},s.category=function(t,e){var n=this.internal,i=n.config;return arguments.length>1&&(i.axis_x_categories[t]=e,n.redraw()),i.axis_x_categories[t]},s.categories=function(t){var e=this.internal,n=e.config;return arguments.length?(n.axis_x_categories=t,e.redraw(),n.axis_x_categories):n.axis_x_categories},s.color=function(t){var e=this.internal;return e.color(t)},s.x=function(t){var e=this.internal;return arguments.length&&(e.updateTargetX(e.data.targets,t),e.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})),e.data.xs},s.xs=function(t){var e=this.internal;return arguments.length&&(e.updateTargetXs(e.data.targets,t),e.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})),e.data.xs},s.axis=function(){},s.axis.labels=function(t){var e=this.internal;arguments.length&&(Object.keys(t).forEach(function(n){e.axis.setLabelText(n,t[n])}),e.axis.updateLabels())},s.axis.max=function(t){var e=this.internal,n=e.config;return arguments.length?("object"==typeof t?(d(t.x)&&(n.axis_x_max=t.x),d(t.y)&&(n.axis_y_max=t.y),d(t.y2)&&(n.axis_y2_max=t.y2)):n.axis_y_max=n.axis_y2_max=t,void e.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})):{x:n.axis_x_max,y:n.axis_y_max,y2:n.axis_y2_max}},s.axis.min=function(t){var e=this.internal,n=e.config;return arguments.length?("object"==typeof t?(d(t.x)&&(n.axis_x_min=t.x),d(t.y)&&(n.axis_y_min=t.y),d(t.y2)&&(n.axis_y2_min=t.y2)):n.axis_y_min=n.axis_y2_min=t,void e.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})):{x:n.axis_x_min,y:n.axis_y_min,y2:n.axis_y2_min}},s.axis.range=function(t){return arguments.length?(m(t.max)&&this.axis.max(t.max),void(m(t.min)&&this.axis.min(t.min))):{max:this.axis.max(),min:this.axis.min()}},s.legend=function(){},s.legend.show=function(t){var e=this.internal;e.showLegend(e.mapToTargetIds(t)),e.updateAndRedraw({withLegend:!0})},s.legend.hide=function(t){var e=this.internal;e.hideLegend(e.mapToTargetIds(t)),e.updateAndRedraw({withLegend:!0})},s.resize=function(t){var e=this.internal,n=e.config;n.size_width=t?t.width:null,n.size_height=t?t.height:null,this.flush()},s.flush=function(){var t=this.internal;t.updateAndRedraw({withLegend:!0,withTransition:!1,withTransitionForTransform:!1})},s.destroy=function(){var e=this.internal;if(t.clearInterval(e.intervalForObserveInserted),void 0!==e.resizeTimeout&&t.clearTimeout(e.resizeTimeout),t.detachEvent)t.detachEvent("onresize",e.resizeFunction);else if(t.removeEventListener)t.removeEventListener("resize",e.resizeFunction);else{var n=t.onresize;n&&n.add&&n.remove&&n.remove(e.resizeFunction)}return e.selectChart.classed("c3",!1).html(""),Object.keys(e).forEach(function(t){e[t]=null}),null},s.tooltip=function(){},s.tooltip.show=function(t){var e,n,i=this.internal;t.mouse&&(n=t.mouse),t.data?i.isMultipleX()?(n=[i.x(t.data.x),i.getYScale(t.data.id)(t.data.value)],e=null):e=d(t.data.index)?t.data.index:i.getIndexByX(t.data.x):"undefined"!=typeof t.x?e=i.getIndexByX(t.x):"undefined"!=typeof t.index&&(e=t.index),i.dispatchEvent("mouseover",e,n),i.dispatchEvent("mousemove",e,n),i.config.tooltip_onshow.call(i,t.data)},s.tooltip.hide=function(){this.internal.dispatchEvent("mouseout",0),this.internal.config.tooltip_onhide.call(this)};var k;l.isSafari=function(){var e=t.navigator.userAgent;return e.indexOf("Safari")>=0&&e.indexOf("Chrome")<0},l.isChrome=function(){var e=t.navigator.userAgent;return e.indexOf("Chrome")>=0},Function.prototype.bind||(Function.prototype.bind=function(t){if("function"!=typeof this)throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");var e=Array.prototype.slice.call(arguments,1),n=this,i=function(){},r=function(){return n.apply(this instanceof i?this:t,e.concat(Array.prototype.slice.call(arguments)))};return i.prototype=this.prototype,r.prototype=new i,r}),function(){"SVGPathSeg"in t||(t.SVGPathSeg=function(t,e,n){this.pathSegType=t,this.pathSegTypeAsLetter=e,this._owningPathSegList=n},SVGPathSeg.PATHSEG_UNKNOWN=0,SVGPathSeg.PATHSEG_CLOSEPATH=1,SVGPathSeg.PATHSEG_MOVETO_ABS=2,SVGPathSeg.PATHSEG_MOVETO_REL=3,SVGPathSeg.PATHSEG_LINETO_ABS=4,SVGPathSeg.PATHSEG_LINETO_REL=5,SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS=6,SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL=7,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS=8,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL=9,SVGPathSeg.PATHSEG_ARC_ABS=10,SVGPathSeg.PATHSEG_ARC_REL=11,SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS=12,SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL=13,SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS=14,SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL=15,SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS=16,SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL=17,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS=18,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL=19,SVGPathSeg.prototype._segmentChanged=function(){this._owningPathSegList&&this._owningPathSegList.segmentChanged(this)},t.SVGPathSegClosePath=function(t){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CLOSEPATH,"z",t)},SVGPathSegClosePath.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegClosePath.prototype.toString=function(){return"[object SVGPathSegClosePath]"},SVGPathSegClosePath.prototype._asPathString=function(){return this.pathSegTypeAsLetter},SVGPathSegClosePath.prototype.clone=function(){return new SVGPathSegClosePath(void 0)},t.SVGPathSegMovetoAbs=function(t,e,n){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_MOVETO_ABS,"M",t),this._x=e,this._y=n},SVGPathSegMovetoAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegMovetoAbs.prototype.toString=function(){return"[object SVGPathSegMovetoAbs]"},SVGPathSegMovetoAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x+" "+this._y},SVGPathSegMovetoAbs.prototype.clone=function(){return new SVGPathSegMovetoAbs(void 0,this._x,this._y)},Object.defineProperty(SVGPathSegMovetoAbs.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegMovetoAbs.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegMovetoRel=function(t,e,n){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_MOVETO_REL,"m",t),this._x=e,this._y=n},SVGPathSegMovetoRel.prototype=Object.create(SVGPathSeg.prototype),
+SVGPathSegMovetoRel.prototype.toString=function(){return"[object SVGPathSegMovetoRel]"},SVGPathSegMovetoRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x+" "+this._y},SVGPathSegMovetoRel.prototype.clone=function(){return new SVGPathSegMovetoRel(void 0,this._x,this._y)},Object.defineProperty(SVGPathSegMovetoRel.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegMovetoRel.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegLinetoAbs=function(t,e,n){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_LINETO_ABS,"L",t),this._x=e,this._y=n},SVGPathSegLinetoAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegLinetoAbs.prototype.toString=function(){return"[object SVGPathSegLinetoAbs]"},SVGPathSegLinetoAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x+" "+this._y},SVGPathSegLinetoAbs.prototype.clone=function(){return new SVGPathSegLinetoAbs(void 0,this._x,this._y)},Object.defineProperty(SVGPathSegLinetoAbs.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegLinetoAbs.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegLinetoRel=function(t,e,n){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_LINETO_REL,"l",t),this._x=e,this._y=n},SVGPathSegLinetoRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegLinetoRel.prototype.toString=function(){return"[object SVGPathSegLinetoRel]"},SVGPathSegLinetoRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x+" "+this._y},SVGPathSegLinetoRel.prototype.clone=function(){return new SVGPathSegLinetoRel(void 0,this._x,this._y)},Object.defineProperty(SVGPathSegLinetoRel.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegLinetoRel.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegCurvetoCubicAbs=function(t,e,n,i,r,o,a){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS,"C",t),this._x=e,this._y=n,this._x1=i,this._y1=r,this._x2=o,this._y2=a},SVGPathSegCurvetoCubicAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoCubicAbs.prototype.toString=function(){return"[object SVGPathSegCurvetoCubicAbs]"},SVGPathSegCurvetoCubicAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x1+" "+this._y1+" "+this._x2+" "+this._y2+" "+this._x+" "+this._y},SVGPathSegCurvetoCubicAbs.prototype.clone=function(){return new SVGPathSegCurvetoCubicAbs(void 0,this._x,this._y,this._x1,this._y1,this._x2,this._y2)},Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype,"x1",{get:function(){return this._x1},set:function(t){this._x1=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype,"y1",{get:function(){return this._y1},set:function(t){this._y1=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype,"x2",{get:function(){return this._x2},set:function(t){this._x2=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype,"y2",{get:function(){return this._y2},set:function(t){this._y2=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegCurvetoCubicRel=function(t,e,n,i,r,o,a){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL,"c",t),this._x=e,this._y=n,this._x1=i,this._y1=r,this._x2=o,this._y2=a},SVGPathSegCurvetoCubicRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoCubicRel.prototype.toString=function(){return"[object SVGPathSegCurvetoCubicRel]"},SVGPathSegCurvetoCubicRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x1+" "+this._y1+" "+this._x2+" "+this._y2+" "+this._x+" "+this._y},SVGPathSegCurvetoCubicRel.prototype.clone=function(){return new SVGPathSegCurvetoCubicRel(void 0,this._x,this._y,this._x1,this._y1,this._x2,this._y2)},Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype,"x1",{get:function(){return this._x1},set:function(t){this._x1=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype,"y1",{get:function(){return this._y1},set:function(t){this._y1=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype,"x2",{get:function(){return this._x2},set:function(t){this._x2=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype,"y2",{get:function(){return this._y2},set:function(t){this._y2=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegCurvetoQuadraticAbs=function(t,e,n,i,r){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS,"Q",t),this._x=e,this._y=n,this._x1=i,this._y1=r},SVGPathSegCurvetoQuadraticAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoQuadraticAbs.prototype.toString=function(){return"[object SVGPathSegCurvetoQuadraticAbs]"},SVGPathSegCurvetoQuadraticAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x1+" "+this._y1+" "+this._x+" "+this._y},SVGPathSegCurvetoQuadraticAbs.prototype.clone=function(){return new SVGPathSegCurvetoQuadraticAbs(void 0,this._x,this._y,this._x1,this._y1)},Object.defineProperty(SVGPathSegCurvetoQuadraticAbs.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticAbs.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticAbs.prototype,"x1",{get:function(){return this._x1},set:function(t){this._x1=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticAbs.prototype,"y1",{get:function(){return this._y1},set:function(t){this._y1=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegCurvetoQuadraticRel=function(t,e,n,i,r){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL,"q",t),this._x=e,this._y=n,this._x1=i,this._y1=r},SVGPathSegCurvetoQuadraticRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoQuadraticRel.prototype.toString=function(){return"[object SVGPathSegCurvetoQuadraticRel]"},SVGPathSegCurvetoQuadraticRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x1+" "+this._y1+" "+this._x+" "+this._y},SVGPathSegCurvetoQuadraticRel.prototype.clone=function(){return new SVGPathSegCurvetoQuadraticRel(void 0,this._x,this._y,this._x1,this._y1)},Object.defineProperty(SVGPathSegCurvetoQuadraticRel.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticRel.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticRel.prototype,"x1",{get:function(){return this._x1},set:function(t){this._x1=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticRel.prototype,"y1",{get:function(){return this._y1},set:function(t){this._y1=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegArcAbs=function(t,e,n,i,r,o,a,s){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_ARC_ABS,"A",t),this._x=e,this._y=n,this._r1=i,this._r2=r,this._angle=o,this._largeArcFlag=a,this._sweepFlag=s},SVGPathSegArcAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegArcAbs.prototype.toString=function(){return"[object SVGPathSegArcAbs]"},SVGPathSegArcAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._r1+" "+this._r2+" "+this._angle+" "+(this._largeArcFlag?"1":"0")+" "+(this._sweepFlag?"1":"0")+" "+this._x+" "+this._y},SVGPathSegArcAbs.prototype.clone=function(){return new SVGPathSegArcAbs(void 0,this._x,this._y,this._r1,this._r2,this._angle,this._largeArcFlag,this._sweepFlag)},Object.defineProperty(SVGPathSegArcAbs.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcAbs.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcAbs.prototype,"r1",{get:function(){return this._r1},set:function(t){this._r1=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcAbs.prototype,"r2",{get:function(){return this._r2},set:function(t){this._r2=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcAbs.prototype,"angle",{get:function(){return this._angle},set:function(t){this._angle=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcAbs.prototype,"largeArcFlag",{get:function(){return this._largeArcFlag},set:function(t){this._largeArcFlag=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcAbs.prototype,"sweepFlag",{get:function(){return this._sweepFlag},set:function(t){this._sweepFlag=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegArcRel=function(t,e,n,i,r,o,a,s){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_ARC_REL,"a",t),this._x=e,this._y=n,this._r1=i,this._r2=r,this._angle=o,this._largeArcFlag=a,this._sweepFlag=s},SVGPathSegArcRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegArcRel.prototype.toString=function(){return"[object SVGPathSegArcRel]"},SVGPathSegArcRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._r1+" "+this._r2+" "+this._angle+" "+(this._largeArcFlag?"1":"0")+" "+(this._sweepFlag?"1":"0")+" "+this._x+" "+this._y},SVGPathSegArcRel.prototype.clone=function(){return new SVGPathSegArcRel(void 0,this._x,this._y,this._r1,this._r2,this._angle,this._largeArcFlag,this._sweepFlag)},Object.defineProperty(SVGPathSegArcRel.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcRel.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcRel.prototype,"r1",{get:function(){return this._r1},set:function(t){this._r1=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcRel.prototype,"r2",{get:function(){return this._r2},set:function(t){this._r2=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcRel.prototype,"angle",{get:function(){return this._angle},set:function(t){this._angle=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcRel.prototype,"largeArcFlag",{get:function(){return this._largeArcFlag},set:function(t){this._largeArcFlag=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcRel.prototype,"sweepFlag",{get:function(){return this._sweepFlag},set:function(t){this._sweepFlag=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegLinetoHorizontalAbs=function(t,e){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS,"H",t),this._x=e},SVGPathSegLinetoHorizontalAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegLinetoHorizontalAbs.prototype.toString=function(){return"[object SVGPathSegLinetoHorizontalAbs]"},SVGPathSegLinetoHorizontalAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x},SVGPathSegLinetoHorizontalAbs.prototype.clone=function(){return new SVGPathSegLinetoHorizontalAbs(void 0,this._x)},Object.defineProperty(SVGPathSegLinetoHorizontalAbs.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegLinetoHorizontalRel=function(t,e){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL,"h",t),this._x=e},SVGPathSegLinetoHorizontalRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegLinetoHorizontalRel.prototype.toString=function(){return"[object SVGPathSegLinetoHorizontalRel]"},SVGPathSegLinetoHorizontalRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x},SVGPathSegLinetoHorizontalRel.prototype.clone=function(){return new SVGPathSegLinetoHorizontalRel(void 0,this._x)},Object.defineProperty(SVGPathSegLinetoHorizontalRel.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegLinetoVerticalAbs=function(t,e){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS,"V",t),this._y=e},SVGPathSegLinetoVerticalAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegLinetoVerticalAbs.prototype.toString=function(){return"[object SVGPathSegLinetoVerticalAbs]"},SVGPathSegLinetoVerticalAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._y},SVGPathSegLinetoVerticalAbs.prototype.clone=function(){return new SVGPathSegLinetoVerticalAbs(void 0,this._y)},Object.defineProperty(SVGPathSegLinetoVerticalAbs.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegLinetoVerticalRel=function(t,e){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL,"v",t),this._y=e},SVGPathSegLinetoVerticalRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegLinetoVerticalRel.prototype.toString=function(){return"[object SVGPathSegLinetoVerticalRel]"},SVGPathSegLinetoVerticalRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._y},SVGPathSegLinetoVerticalRel.prototype.clone=function(){return new SVGPathSegLinetoVerticalRel(void 0,this._y)},Object.defineProperty(SVGPathSegLinetoVerticalRel.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegCurvetoCubicSmoothAbs=function(t,e,n,i,r){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS,"S",t),this._x=e,this._y=n,this._x2=i,this._y2=r},SVGPathSegCurvetoCubicSmoothAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoCubicSmoothAbs.prototype.toString=function(){return"[object SVGPathSegCurvetoCubicSmoothAbs]"},SVGPathSegCurvetoCubicSmoothAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x2+" "+this._y2+" "+this._x+" "+this._y},SVGPathSegCurvetoCubicSmoothAbs.prototype.clone=function(){return new SVGPathSegCurvetoCubicSmoothAbs(void 0,this._x,this._y,this._x2,this._y2)},Object.defineProperty(SVGPathSegCurvetoCubicSmoothAbs.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicSmoothAbs.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicSmoothAbs.prototype,"x2",{get:function(){return this._x2},set:function(t){this._x2=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicSmoothAbs.prototype,"y2",{get:function(){return this._y2},set:function(t){this._y2=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegCurvetoCubicSmoothRel=function(t,e,n,i,r){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL,"s",t),this._x=e,this._y=n,this._x2=i,this._y2=r},SVGPathSegCurvetoCubicSmoothRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoCubicSmoothRel.prototype.toString=function(){return"[object SVGPathSegCurvetoCubicSmoothRel]"},SVGPathSegCurvetoCubicSmoothRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x2+" "+this._y2+" "+this._x+" "+this._y},SVGPathSegCurvetoCubicSmoothRel.prototype.clone=function(){return new SVGPathSegCurvetoCubicSmoothRel(void 0,this._x,this._y,this._x2,this._y2)},Object.defineProperty(SVGPathSegCurvetoCubicSmoothRel.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicSmoothRel.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicSmoothRel.prototype,"x2",{get:function(){return this._x2},set:function(t){this._x2=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicSmoothRel.prototype,"y2",{get:function(){return this._y2},set:function(t){this._y2=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegCurvetoQuadraticSmoothAbs=function(t,e,n){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS,"T",t),this._x=e,this._y=n},SVGPathSegCurvetoQuadraticSmoothAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoQuadraticSmoothAbs.prototype.toString=function(){return"[object SVGPathSegCurvetoQuadraticSmoothAbs]"},SVGPathSegCurvetoQuadraticSmoothAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x+" "+this._y},SVGPathSegCurvetoQuadraticSmoothAbs.prototype.clone=function(){return new SVGPathSegCurvetoQuadraticSmoothAbs(void 0,this._x,this._y)},Object.defineProperty(SVGPathSegCurvetoQuadraticSmoothAbs.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticSmoothAbs.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),t.SVGPathSegCurvetoQuadraticSmoothRel=function(t,e,n){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL,"t",t),this._x=e,this._y=n},SVGPathSegCurvetoQuadraticSmoothRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoQuadraticSmoothRel.prototype.toString=function(){return"[object SVGPathSegCurvetoQuadraticSmoothRel]"},SVGPathSegCurvetoQuadraticSmoothRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x+" "+this._y},SVGPathSegCurvetoQuadraticSmoothRel.prototype.clone=function(){return new SVGPathSegCurvetoQuadraticSmoothRel(void 0,this._x,this._y)},Object.defineProperty(SVGPathSegCurvetoQuadraticSmoothRel.prototype,"x",{get:function(){return this._x},set:function(t){this._x=t,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticSmoothRel.prototype,"y",{get:function(){return this._y},set:function(t){this._y=t,this._segmentChanged()},enumerable:!0}),SVGPathElement.prototype.createSVGPathSegClosePath=function(){return new SVGPathSegClosePath(void 0)},SVGPathElement.prototype.createSVGPathSegMovetoAbs=function(t,e){return new SVGPathSegMovetoAbs(void 0,t,e)},SVGPathElement.prototype.createSVGPathSegMovetoRel=function(t,e){return new SVGPathSegMovetoRel(void 0,t,e)},SVGPathElement.prototype.createSVGPathSegLinetoAbs=function(t,e){return new SVGPathSegLinetoAbs(void 0,t,e)},SVGPathElement.prototype.createSVGPathSegLinetoRel=function(t,e){return new SVGPathSegLinetoRel(void 0,t,e)},SVGPathElement.prototype.createSVGPathSegCurvetoCubicAbs=function(t,e,n,i,r,o){return new SVGPathSegCurvetoCubicAbs(void 0,t,e,n,i,r,o)},SVGPathElement.prototype.createSVGPathSegCurvetoCubicRel=function(t,e,n,i,r,o){return new SVGPathSegCurvetoCubicRel(void 0,t,e,n,i,r,o)},SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticAbs=function(t,e,n,i){return new SVGPathSegCurvetoQuadraticAbs(void 0,t,e,n,i)},SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticRel=function(t,e,n,i){return new SVGPathSegCurvetoQuadraticRel(void 0,t,e,n,i)},SVGPathElement.prototype.createSVGPathSegArcAbs=function(t,e,n,i,r,o,a){return new SVGPathSegArcAbs(void 0,t,e,n,i,r,o,a)},SVGPathElement.prototype.createSVGPathSegArcRel=function(t,e,n,i,r,o,a){return new SVGPathSegArcRel(void 0,t,e,n,i,r,o,a)},SVGPathElement.prototype.createSVGPathSegLinetoHorizontalAbs=function(t){return new SVGPathSegLinetoHorizontalAbs(void 0,t)},SVGPathElement.prototype.createSVGPathSegLinetoHorizontalRel=function(t){return new SVGPathSegLinetoHorizontalRel(void 0,t)},SVGPathElement.prototype.createSVGPathSegLinetoVerticalAbs=function(t){return new SVGPathSegLinetoVerticalAbs(void 0,t)},SVGPathElement.prototype.createSVGPathSegLinetoVerticalRel=function(t){return new SVGPathSegLinetoVerticalRel(void 0,t)},SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothAbs=function(t,e,n,i){return new SVGPathSegCurvetoCubicSmoothAbs(void 0,t,e,n,i)},SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothRel=function(t,e,n,i){return new SVGPathSegCurvetoCubicSmoothRel(void 0,t,e,n,i)},SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothAbs=function(t,e){return new SVGPathSegCurvetoQuadraticSmoothAbs(void 0,t,e)},SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothRel=function(t,e){return new SVGPathSegCurvetoQuadraticSmoothRel(void 0,t,e)}),"SVGPathSegList"in t||(t.SVGPathSegList=function(t){this._pathElement=t,this._list=this._parsePath(this._pathElement.getAttribute("d")),this._mutationObserverConfig={attributes:!0,attributeFilter:["d"]},this._pathElementMutationObserver=new MutationObserver(this._updateListFromPathMutations.bind(this)),this._pathElementMutationObserver.observe(this._pathElement,this._mutationObserverConfig)},Object.defineProperty(SVGPathSegList.prototype,"numberOfItems",{get:function(){return this._checkPathSynchronizedToList(),this._list.length},enumerable:!0}),Object.defineProperty(SVGPathElement.prototype,"pathSegList",{get:function(){return this._pathSegList||(this._pathSegList=new SVGPathSegList(this)),this._pathSegList},enumerable:!0}),Object.defineProperty(SVGPathElement.prototype,"normalizedPathSegList",{get:function(){return this.pathSegList},enumerable:!0}),Object.defineProperty(SVGPathElement.prototype,"animatedPathSegList",{get:function(){return this.pathSegList},enumerable:!0}),Object.defineProperty(SVGPathElement.prototype,"animatedNormalizedPathSegList",{get:function(){return this.pathSegList},enumerable:!0}),SVGPathSegList.prototype._checkPathSynchronizedToList=function(){this._updateListFromPathMutations(this._pathElementMutationObserver.takeRecords())},SVGPathSegList.prototype._updateListFromPathMutations=function(t){if(this._pathElement){var e=!1;t.forEach(function(t){"d"==t.attributeName&&(e=!0)}),e&&(this._list=this._parsePath(this._pathElement.getAttribute("d")))}},SVGPathSegList.prototype._writeListToPath=function(){this._pathElementMutationObserver.disconnect(),this._pathElement.setAttribute("d",SVGPathSegList._pathSegArrayAsString(this._list)),this._pathElementMutationObserver.observe(this._pathElement,this._mutationObserverConfig)},SVGPathSegList.prototype.segmentChanged=function(t){this._writeListToPath()},SVGPathSegList.prototype.clear=function(){this._checkPathSynchronizedToList(),this._list.forEach(function(t){t._owningPathSegList=null}),this._list=[],this._writeListToPath()},SVGPathSegList.prototype.initialize=function(t){return this._checkPathSynchronizedToList(),this._list=[t],t._owningPathSegList=this,this._writeListToPath(),t},SVGPathSegList.prototype._checkValidIndex=function(t){if(isNaN(t)||t<0||t>=this.numberOfItems)throw"INDEX_SIZE_ERR"},SVGPathSegList.prototype.getItem=function(t){return this._checkPathSynchronizedToList(),this._checkValidIndex(t),this._list[t]},SVGPathSegList.prototype.insertItemBefore=function(t,e){return this._checkPathSynchronizedToList(),e>this.numberOfItems&&(e=this.numberOfItems),t._owningPathSegList&&(t=t.clone()),this._list.splice(e,0,t),t._owningPathSegList=this,this._writeListToPath(),t},SVGPathSegList.prototype.replaceItem=function(t,e){return this._checkPathSynchronizedToList(),t._owningPathSegList&&(t=t.clone()),this._checkValidIndex(e),this._list[e]=t,t._owningPathSegList=this,this._writeListToPath(),t},SVGPathSegList.prototype.removeItem=function(t){this._checkPathSynchronizedToList(),this._checkValidIndex(t);var e=this._list[t];return this._list.splice(t,1),this._writeListToPath(),e},SVGPathSegList.prototype.appendItem=function(t){return this._checkPathSynchronizedToList(),t._owningPathSegList&&(t=t.clone()),this._list.push(t),t._owningPathSegList=this,this._writeListToPath(),t},SVGPathSegList._pathSegArrayAsString=function(t){var e="",n=!0;return t.forEach(function(t){n?(n=!1,e+=t._asPathString()):e+=" "+t._asPathString()}),e},SVGPathSegList.prototype._parsePath=function(t){if(!t||0==t.length)return[];var e=this,n=function(){this.pathSegList=[]};n.prototype.appendSegment=function(t){this.pathSegList.push(t)};var i=function(t){this._string=t,this._currentIndex=0,this._endIndex=this._string.length,this._previousCommand=SVGPathSeg.PATHSEG_UNKNOWN,this._skipOptionalSpaces()};i.prototype._isCurrentSpace=function(){var t=this._string[this._currentIndex];return t<=" "&&(" "==t||"\n"==t||"\t"==t||"\r"==t||"\f"==t)},i.prototype._skipOptionalSpaces=function(){for(;this._currentIndex<this._endIndex&&this._isCurrentSpace();)this._currentIndex++;return this._currentIndex<this._endIndex},i.prototype._skipOptionalSpacesOrDelimiter=function(){return!(this._currentIndex<this._endIndex&&!this._isCurrentSpace()&&","!=this._string.charAt(this._currentIndex))&&(this._skipOptionalSpaces()&&this._currentIndex<this._endIndex&&","==this._string.charAt(this._currentIndex)&&(this._currentIndex++,this._skipOptionalSpaces()),this._currentIndex<this._endIndex)},i.prototype.hasMoreData=function(){return this._currentIndex<this._endIndex},i.prototype.peekSegmentType=function(){var t=this._string[this._currentIndex];return this._pathSegTypeFromChar(t)},i.prototype._pathSegTypeFromChar=function(t){switch(t){case"Z":case"z":return SVGPathSeg.PATHSEG_CLOSEPATH;case"M":return SVGPathSeg.PATHSEG_MOVETO_ABS;case"m":return SVGPathSeg.PATHSEG_MOVETO_REL;case"L":return SVGPathSeg.PATHSEG_LINETO_ABS;case"l":return SVGPathSeg.PATHSEG_LINETO_REL;case"C":return SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS;case"c":return SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL;case"Q":return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS;case"q":return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL;case"A":return SVGPathSeg.PATHSEG_ARC_ABS;case"a":return SVGPathSeg.PATHSEG_ARC_REL;case"H":return SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS;case"h":return SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL;case"V":return SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS;case"v":return SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL;case"S":return SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS;case"s":return SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL;case"T":return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS;case"t":return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL;default:return SVGPathSeg.PATHSEG_UNKNOWN}},i.prototype._nextCommandHelper=function(t,e){return("+"==t||"-"==t||"."==t||t>="0"&&t<="9")&&e!=SVGPathSeg.PATHSEG_CLOSEPATH?e==SVGPathSeg.PATHSEG_MOVETO_ABS?SVGPathSeg.PATHSEG_LINETO_ABS:e==SVGPathSeg.PATHSEG_MOVETO_REL?SVGPathSeg.PATHSEG_LINETO_REL:e:SVGPathSeg.PATHSEG_UNKNOWN},i.prototype.initialCommandIsMoveTo=function(){if(!this.hasMoreData())return!0;var t=this.peekSegmentType();return t==SVGPathSeg.PATHSEG_MOVETO_ABS||t==SVGPathSeg.PATHSEG_MOVETO_REL},i.prototype._parseNumber=function(){var t=0,e=0,n=1,i=0,r=1,o=1,a=this._currentIndex;if(this._skipOptionalSpaces(),this._currentIndex<this._endIndex&&"+"==this._string.charAt(this._currentIndex)?this._currentIndex++:this._currentIndex<this._endIndex&&"-"==this._string.charAt(this._currentIndex)&&(this._currentIndex++,r=-1),!(this._currentIndex==this._endIndex||(this._string.charAt(this._currentIndex)<"0"||this._string.charAt(this._currentIndex)>"9")&&"."!=this._string.charAt(this._currentIndex))){for(var s=this._currentIndex;this._currentIndex<this._endIndex&&this._string.charAt(this._currentIndex)>="0"&&this._string.charAt(this._currentIndex)<="9";)this._currentIndex++;if(this._currentIndex!=s)for(var l=this._currentIndex-1,c=1;l>=s;)e+=c*(this._string.charAt(l--)-"0"),c*=10;if(this._currentIndex<this._endIndex&&"."==this._string.charAt(this._currentIndex)){if(this._currentIndex++,this._currentIndex>=this._endIndex||this._string.charAt(this._currentIndex)<"0"||this._string.charAt(this._currentIndex)>"9")return;for(;this._currentIndex<this._endIndex&&this._string.charAt(this._currentIndex)>="0"&&this._string.charAt(this._currentIndex)<="9";)i+=(this._string.charAt(this._currentIndex++)-"0")*(n*=.1)}if(this._currentIndex!=a&&this._currentIndex+1<this._endIndex&&("e"==this._string.charAt(this._currentIndex)||"E"==this._string.charAt(this._currentIndex))&&"x"!=this._string.charAt(this._currentIndex+1)&&"m"!=this._string.charAt(this._currentIndex+1)){if(this._currentIndex++,"+"==this._string.charAt(this._currentIndex)?this._currentIndex++:"-"==this._string.charAt(this._currentIndex)&&(this._currentIndex++,o=-1),this._currentIndex>=this._endIndex||this._string.charAt(this._currentIndex)<"0"||this._string.charAt(this._currentIndex)>"9")return;for(;this._currentIndex<this._endIndex&&this._string.charAt(this._currentIndex)>="0"&&this._string.charAt(this._currentIndex)<="9";)t*=10,t+=this._string.charAt(this._currentIndex)-"0",this._currentIndex++}var u=e+i;if(u*=r,t&&(u*=Math.pow(10,o*t)),a!=this._currentIndex)return this._skipOptionalSpacesOrDelimiter(),u}},i.prototype._parseArcFlag=function(){if(!(this._currentIndex>=this._endIndex)){var t=!1,e=this._string.charAt(this._currentIndex++);if("0"==e)t=!1;else{if("1"!=e)return;t=!0}return this._skipOptionalSpacesOrDelimiter(),t}},i.prototype.parseSegment=function(){var t=this._string[this._currentIndex],n=this._pathSegTypeFromChar(t);if(n==SVGPathSeg.PATHSEG_UNKNOWN){if(this._previousCommand==SVGPathSeg.PATHSEG_UNKNOWN)return null;if(n=this._nextCommandHelper(t,this._previousCommand),n==SVGPathSeg.PATHSEG_UNKNOWN)return null}else this._currentIndex++;switch(this._previousCommand=n,n){case SVGPathSeg.PATHSEG_MOVETO_REL:return new SVGPathSegMovetoRel(e,this._parseNumber(),this._parseNumber());case SVGPathSeg.PATHSEG_MOVETO_ABS:return new SVGPathSegMovetoAbs(e,this._parseNumber(),this._parseNumber());case SVGPathSeg.PATHSEG_LINETO_REL:return new SVGPathSegLinetoRel(e,this._parseNumber(),this._parseNumber());case SVGPathSeg.PATHSEG_LINETO_ABS:return new SVGPathSegLinetoAbs(e,this._parseNumber(),this._parseNumber());case SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL:return new SVGPathSegLinetoHorizontalRel(e,this._parseNumber());case SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS:return new SVGPathSegLinetoHorizontalAbs(e,this._parseNumber());case SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL:return new SVGPathSegLinetoVerticalRel(e,this._parseNumber());case SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS:return new SVGPathSegLinetoVerticalAbs(e,this._parseNumber());case SVGPathSeg.PATHSEG_CLOSEPATH:return this._skipOptionalSpaces(),new SVGPathSegClosePath(e);case SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL:var i={x1:this._parseNumber(),y1:this._parseNumber(),x2:this._parseNumber(),y2:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegCurvetoCubicRel(e,i.x,i.y,i.x1,i.y1,i.x2,i.y2);case SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS:var i={x1:this._parseNumber(),y1:this._parseNumber(),x2:this._parseNumber(),y2:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegCurvetoCubicAbs(e,i.x,i.y,i.x1,i.y1,i.x2,i.y2);case SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL:var i={x2:this._parseNumber(),y2:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()
+};return new SVGPathSegCurvetoCubicSmoothRel(e,i.x,i.y,i.x2,i.y2);case SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS:var i={x2:this._parseNumber(),y2:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegCurvetoCubicSmoothAbs(e,i.x,i.y,i.x2,i.y2);case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL:var i={x1:this._parseNumber(),y1:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegCurvetoQuadraticRel(e,i.x,i.y,i.x1,i.y1);case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS:var i={x1:this._parseNumber(),y1:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegCurvetoQuadraticAbs(e,i.x,i.y,i.x1,i.y1);case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL:return new SVGPathSegCurvetoQuadraticSmoothRel(e,this._parseNumber(),this._parseNumber());case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS:return new SVGPathSegCurvetoQuadraticSmoothAbs(e,this._parseNumber(),this._parseNumber());case SVGPathSeg.PATHSEG_ARC_REL:var i={x1:this._parseNumber(),y1:this._parseNumber(),arcAngle:this._parseNumber(),arcLarge:this._parseArcFlag(),arcSweep:this._parseArcFlag(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegArcRel(e,i.x,i.y,i.x1,i.y1,i.arcAngle,i.arcLarge,i.arcSweep);case SVGPathSeg.PATHSEG_ARC_ABS:var i={x1:this._parseNumber(),y1:this._parseNumber(),arcAngle:this._parseNumber(),arcLarge:this._parseArcFlag(),arcSweep:this._parseArcFlag(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegArcAbs(e,i.x,i.y,i.x1,i.y1,i.arcAngle,i.arcLarge,i.arcSweep);default:throw"Unknown path seg type."}};var r=new n,o=new i(t);if(!o.initialCommandIsMoveTo())return[];for(;o.hasMoreData();){var a=o.parseSegment();if(!a)return[];r.appendSegment(a)}return r.pathSegList})}(),"function"==typeof define&&define.amd?define("c3",["d3"],function(){return u}):"undefined"!=typeof exports&&"undefined"!=typeof module?module.exports=u:t.c3=u}(window),!function t(e,n,i){function r(a,s){if(!n[a]){if(!e[a]){var l="function"==typeof require&&require;if(!s&&l)return l(a,!0);if(o)return o(a,!0);var c=new Error("Cannot find module '"+a+"'");throw c.code="MODULE_NOT_FOUND",c}var u=n[a]={exports:{}};e[a][0].call(u.exports,function(t){var n=e[a][1][t];return r(n?n:t)},u,u.exports,t,e,n,i)}return n[a].exports}for(var o="function"==typeof require&&require,a=0;a<i.length;a++)r(i[a]);return r}({1:[function(t,e,n){var i=t("./svg-pan-zoom.js");!function(t,n){"function"==typeof define&&define.amd?define("svg-pan-zoom",[],function(){return i}):"undefined"!=typeof e&&e.exports&&(e.exports=i,t.svgPanZoom=i)}(window,document)},{"./svg-pan-zoom.js":4}],2:[function(t,e,n){var i=t("./svg-utilities");e.exports={enable:function(t){var e=t.svg.querySelector("defs");e||(e=document.createElementNS(i.svgNS,"defs"),t.svg.appendChild(e));var n=e.querySelector("style#svg-pan-zoom-controls-styles");if(!n){var r=document.createElementNS(i.svgNS,"style");r.setAttribute("id","svg-pan-zoom-controls-styles"),r.setAttribute("type","text/css"),r.textContent=".svg-pan-zoom-control { cursor: pointer; fill: black; fill-opacity: 0.333; } .svg-pan-zoom-control:hover { fill-opacity: 0.8; } .svg-pan-zoom-control-background { fill: white; fill-opacity: 0.5; } .svg-pan-zoom-control-background { fill-opacity: 0.8; }",e.appendChild(r)}var o=document.createElementNS(i.svgNS,"g");o.setAttribute("id","svg-pan-zoom-controls"),o.setAttribute("transform","translate("+(t.width-70)+" "+(t.height-76)+") scale(0.75)"),o.setAttribute("class","svg-pan-zoom-control"),o.appendChild(this._createZoomIn(t)),o.appendChild(this._createZoomReset(t)),o.appendChild(this._createZoomOut(t)),t.svg.appendChild(o),t.controlIcons=o},_createZoomIn:function(t){var e=document.createElementNS(i.svgNS,"g");e.setAttribute("id","svg-pan-zoom-zoom-in"),e.setAttribute("transform","translate(30.5 5) scale(0.015)"),e.setAttribute("class","svg-pan-zoom-control"),e.addEventListener("click",function(){t.getPublicInstance().zoomIn()},!1),e.addEventListener("touchstart",function(){t.getPublicInstance().zoomIn()},!1);var n=document.createElementNS(i.svgNS,"rect");n.setAttribute("x","0"),n.setAttribute("y","0"),n.setAttribute("width","1500"),n.setAttribute("height","1400"),n.setAttribute("class","svg-pan-zoom-control-background"),e.appendChild(n);var r=document.createElementNS(i.svgNS,"path");return r.setAttribute("d","M1280 576v128q0 26 -19 45t-45 19h-320v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-320q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h320v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h320q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z"),r.setAttribute("class","svg-pan-zoom-control-element"),e.appendChild(r),e},_createZoomReset:function(t){var e=document.createElementNS(i.svgNS,"g");e.setAttribute("id","svg-pan-zoom-reset-pan-zoom"),e.setAttribute("transform","translate(5 35) scale(0.4)"),e.setAttribute("class","svg-pan-zoom-control"),e.addEventListener("click",function(){t.getPublicInstance().reset()},!1),e.addEventListener("touchstart",function(){t.getPublicInstance().reset()},!1);var n=document.createElementNS(i.svgNS,"rect");n.setAttribute("x","2"),n.setAttribute("y","2"),n.setAttribute("width","182"),n.setAttribute("height","58"),n.setAttribute("class","svg-pan-zoom-control-background"),e.appendChild(n);var r=document.createElementNS(i.svgNS,"path");r.setAttribute("d","M33.051,20.632c-0.742-0.406-1.854-0.609-3.338-0.609h-7.969v9.281h7.769c1.543,0,2.701-0.188,3.473-0.562c1.365-0.656,2.048-1.953,2.048-3.891C35.032,22.757,34.372,21.351,33.051,20.632z"),r.setAttribute("class","svg-pan-zoom-control-element"),e.appendChild(r);var o=document.createElementNS(i.svgNS,"path");return o.setAttribute("d","M170.231,0.5H15.847C7.102,0.5,0.5,5.708,0.5,11.84v38.861C0.5,56.833,7.102,61.5,15.847,61.5h154.384c8.745,0,15.269-4.667,15.269-10.798V11.84C185.5,5.708,178.976,0.5,170.231,0.5z M42.837,48.569h-7.969c-0.219-0.766-0.375-1.383-0.469-1.852c-0.188-0.969-0.289-1.961-0.305-2.977l-0.047-3.211c-0.03-2.203-0.41-3.672-1.142-4.406c-0.732-0.734-2.103-1.102-4.113-1.102h-7.05v13.547h-7.055V14.022h16.524c2.361,0.047,4.178,0.344,5.45,0.891c1.272,0.547,2.351,1.352,3.234,2.414c0.731,0.875,1.31,1.844,1.737,2.906s0.64,2.273,0.64,3.633c0,1.641-0.414,3.254-1.242,4.84s-2.195,2.707-4.102,3.363c1.594,0.641,2.723,1.551,3.387,2.73s0.996,2.98,0.996,5.402v2.32c0,1.578,0.063,2.648,0.19,3.211c0.19,0.891,0.635,1.547,1.333,1.969V48.569z M75.579,48.569h-26.18V14.022h25.336v6.117H56.454v7.336h16.781v6H56.454v8.883h19.125V48.569z M104.497,46.331c-2.44,2.086-5.887,3.129-10.34,3.129c-4.548,0-8.125-1.027-10.731-3.082s-3.909-4.879-3.909-8.473h6.891c0.224,1.578,0.662,2.758,1.316,3.539c1.196,1.422,3.246,2.133,6.15,2.133c1.739,0,3.151-0.188,4.236-0.562c2.058-0.719,3.087-2.055,3.087-4.008c0-1.141-0.504-2.023-1.512-2.648c-1.008-0.609-2.607-1.148-4.796-1.617l-3.74-0.82c-3.676-0.812-6.201-1.695-7.576-2.648c-2.328-1.594-3.492-4.086-3.492-7.477c0-3.094,1.139-5.664,3.417-7.711s5.623-3.07,10.036-3.07c3.685,0,6.829,0.965,9.431,2.895c2.602,1.93,3.966,4.73,4.093,8.402h-6.938c-0.128-2.078-1.057-3.555-2.787-4.43c-1.154-0.578-2.587-0.867-4.301-0.867c-1.907,0-3.428,0.375-4.565,1.125c-1.138,0.75-1.706,1.797-1.706,3.141c0,1.234,0.561,2.156,1.682,2.766c0.721,0.406,2.25,0.883,4.589,1.43l6.063,1.43c2.657,0.625,4.648,1.461,5.975,2.508c2.059,1.625,3.089,3.977,3.089,7.055C108.157,41.624,106.937,44.245,104.497,46.331z M139.61,48.569h-26.18V14.022h25.336v6.117h-18.281v7.336h16.781v6h-16.781v8.883h19.125V48.569z M170.337,20.14h-10.336v28.43h-7.266V20.14h-10.383v-6.117h27.984V20.14z"),o.setAttribute("class","svg-pan-zoom-control-element"),e.appendChild(o),e},_createZoomOut:function(t){var e=document.createElementNS(i.svgNS,"g");e.setAttribute("id","svg-pan-zoom-zoom-out"),e.setAttribute("transform","translate(30.5 70) scale(0.015)"),e.setAttribute("class","svg-pan-zoom-control"),e.addEventListener("click",function(){t.getPublicInstance().zoomOut()},!1),e.addEventListener("touchstart",function(){t.getPublicInstance().zoomOut()},!1);var n=document.createElementNS(i.svgNS,"rect");n.setAttribute("x","0"),n.setAttribute("y","0"),n.setAttribute("width","1500"),n.setAttribute("height","1400"),n.setAttribute("class","svg-pan-zoom-control-background"),e.appendChild(n);var r=document.createElementNS(i.svgNS,"path");return r.setAttribute("d","M1280 576v128q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h896q26 0 45 19t19 45zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z"),r.setAttribute("class","svg-pan-zoom-control-element"),e.appendChild(r),e},disable:function(t){t.controlIcons&&(t.controlIcons.parentNode.removeChild(t.controlIcons),t.controlIcons=null)}}},{"./svg-utilities":5}],3:[function(t,e,n){var i=t("./svg-utilities"),r=t("./utilities"),o=function(t,e){this.init(t,e)};o.prototype.init=function(t,e){this.viewport=t,this.options=e,this.originalState={zoom:1,x:0,y:0},this.activeState={zoom:1,x:0,y:0},this.updateCTMCached=r.proxy(this.updateCTM,this),this.requestAnimationFrame=r.createRequestAnimationFrame(this.options.refreshRate),this.viewBox={x:0,y:0,width:0,height:0},this.cacheViewBox();var n=this.processCTM();this.setCTM(n),this.updateCTM()},o.prototype.cacheViewBox=function(){var t=this.options.svg.getAttribute("viewBox");if(t){var e=t.split(/[\s\,]/).filter(function(t){return t}).map(parseFloat);this.viewBox.x=e[0],this.viewBox.y=e[1],this.viewBox.width=e[2],this.viewBox.height=e[3];var n=Math.min(this.options.width/this.viewBox.width,this.options.height/this.viewBox.height);this.activeState.zoom=n,this.activeState.x=(this.options.width-this.viewBox.width*n)/2,this.activeState.y=(this.options.height-this.viewBox.height*n)/2,this.updateCTMOnNextFrame(),this.options.svg.removeAttribute("viewBox")}else this.simpleViewBoxCache()},o.prototype.simpleViewBoxCache=function(){var t=this.viewport.getBBox();this.viewBox.x=t.x,this.viewBox.y=t.y,this.viewBox.width=t.width,this.viewBox.height=t.height},o.prototype.getViewBox=function(){return r.extend({},this.viewBox)},o.prototype.processCTM=function(){var t=this.getCTM();if(this.options.fit||this.options.contain){var e;e=this.options.fit?Math.min(this.options.width/this.viewBox.width,this.options.height/this.viewBox.height):Math.max(this.options.width/this.viewBox.width,this.options.height/this.viewBox.height),t.a=e,t.d=e,t.e=-this.viewBox.x*e,t.f=-this.viewBox.y*e}if(this.options.center){var n=.5*(this.options.width-(this.viewBox.width+2*this.viewBox.x)*t.a),i=.5*(this.options.height-(this.viewBox.height+2*this.viewBox.y)*t.a);t.e=n,t.f=i}return this.originalState.zoom=t.a,this.originalState.x=t.e,this.originalState.y=t.f,t},o.prototype.getOriginalState=function(){return r.extend({},this.originalState)},o.prototype.getState=function(){return r.extend({},this.activeState)},o.prototype.getZoom=function(){return this.activeState.zoom},o.prototype.getRelativeZoom=function(){return this.activeState.zoom/this.originalState.zoom},o.prototype.computeRelativeZoom=function(t){return t/this.originalState.zoom},o.prototype.getPan=function(){return{x:this.activeState.x,y:this.activeState.y}},o.prototype.getCTM=function(){var t=this.options.svg.createSVGMatrix();return t.a=this.activeState.zoom,t.b=0,t.c=0,t.d=this.activeState.zoom,t.e=this.activeState.x,t.f=this.activeState.y,t},o.prototype.setCTM=function(t){var e=this.isZoomDifferent(t),n=this.isPanDifferent(t);if(e||n){if(e&&(this.options.beforeZoom(this.getRelativeZoom(),this.computeRelativeZoom(t.a))===!1?(t.a=t.d=this.activeState.zoom,e=!1):(this.updateCache(t),this.options.onZoom(this.getRelativeZoom()))),n){var i=this.options.beforePan(this.getPan(),{x:t.e,y:t.f}),o=!1,a=!1;i===!1?(t.e=this.getPan().x,t.f=this.getPan().y,o=a=!0):r.isObject(i)&&(i.x===!1?(t.e=this.getPan().x,o=!0):r.isNumber(i.x)&&(t.e=i.x),i.y===!1?(t.f=this.getPan().y,a=!0):r.isNumber(i.y)&&(t.f=i.y)),o&&a||!this.isPanDifferent(t)?n=!1:(this.updateCache(t),this.options.onPan(this.getPan()))}(e||n)&&this.updateCTMOnNextFrame()}},o.prototype.isZoomDifferent=function(t){return this.activeState.zoom!==t.a},o.prototype.isPanDifferent=function(t){return this.activeState.x!==t.e||this.activeState.y!==t.f},o.prototype.updateCache=function(t){this.activeState.zoom=t.a,this.activeState.x=t.e,this.activeState.y=t.f},o.prototype.pendingUpdate=!1,o.prototype.updateCTMOnNextFrame=function(){this.pendingUpdate||(this.pendingUpdate=!0,this.requestAnimationFrame.call(window,this.updateCTMCached))},o.prototype.updateCTM=function(){var t=this.getCTM();i.setCTM(this.viewport,t,this.defs),this.pendingUpdate=!1,this.options.onUpdatedCTM&&this.options.onUpdatedCTM(t)},e.exports=function(t,e){return new o(t,e)}},{"./svg-utilities":5,"./utilities":7}],4:[function(t,e,n){var i=t("./uniwheel"),r=t("./control-icons"),o=t("./utilities"),a=t("./svg-utilities"),s=t("./shadow-viewport"),l=function(t,e){this.init(t,e)},c={viewportSelector:".svg-pan-zoom_viewport",panEnabled:!0,controlIconsEnabled:!1,zoomEnabled:!0,dblClickZoomEnabled:!0,mouseWheelZoomEnabled:!0,preventMouseEventsDefault:!0,zoomScaleSensitivity:.1,minZoom:.5,maxZoom:10,fit:!0,contain:!1,center:!0,refreshRate:"auto",beforeZoom:null,onZoom:null,beforePan:null,onPan:null,customEventsHandler:null,eventsListenerElement:null,onUpdatedCTM:null};l.prototype.init=function(t,e){var n=this;this.svg=t,this.defs=t.querySelector("defs"),a.setupSvgAttributes(this.svg),this.options=o.extend(o.extend({},c),e),this.state="none";var i=a.getBoundingClientRectNormalized(t);this.width=i.width,this.height=i.height,this.viewport=s(a.getOrCreateViewport(this.svg,this.options.viewportSelector),{svg:this.svg,width:this.width,height:this.height,fit:this.options.fit,contain:this.options.contain,center:this.options.center,refreshRate:this.options.refreshRate,beforeZoom:function(t,e){return n.viewport&&n.options.beforeZoom?n.options.beforeZoom(t,e):void 0},onZoom:function(t){return n.viewport&&n.options.onZoom?n.options.onZoom(t):void 0},beforePan:function(t,e){return n.viewport&&n.options.beforePan?n.options.beforePan(t,e):void 0},onPan:function(t){return n.viewport&&n.options.onPan?n.options.onPan(t):void 0},onUpdatedCTM:function(t){return n.viewport&&n.options.onUpdatedCTM?n.options.onUpdatedCTM(t):void 0}});var l=this.getPublicInstance();l.setBeforeZoom(this.options.beforeZoom),l.setOnZoom(this.options.onZoom),l.setBeforePan(this.options.beforePan),l.setOnPan(this.options.onPan),l.setOnUpdatedCTM(this.options.onUpdatedCTM),this.options.controlIconsEnabled&&r.enable(this),this.lastMouseWheelEventTime=Date.now(),this.setupHandlers()},l.prototype.setupHandlers=function(){var t=this,e=null;if(this.eventListeners={mousedown:function(n){var i=t.handleMouseDown(n,e);return e=n,i},touchstart:function(n){var i=t.handleMouseDown(n,e);return e=n,i},mouseup:function(e){return t.handleMouseUp(e)},touchend:function(e){return t.handleMouseUp(e)},mousemove:function(e){return t.handleMouseMove(e)},touchmove:function(e){return t.handleMouseMove(e)},mouseleave:function(e){return t.handleMouseUp(e)},touchleave:function(e){return t.handleMouseUp(e)},touchcancel:function(e){return t.handleMouseUp(e)}},null!=this.options.customEventsHandler){this.options.customEventsHandler.init({svgElement:this.svg,eventsListenerElement:this.options.eventsListenerElement,instance:this.getPublicInstance()});var n=this.options.customEventsHandler.haltEventListeners;if(n&&n.length)for(var i=n.length-1;i>=0;i--)this.eventListeners.hasOwnProperty(n[i])&&delete this.eventListeners[n[i]]}for(var r in this.eventListeners)(this.options.eventsListenerElement||this.svg).addEventListener(r,this.eventListeners[r],!1);this.options.mouseWheelZoomEnabled&&(this.options.mouseWheelZoomEnabled=!1,this.enableMouseWheelZoom())},l.prototype.enableMouseWheelZoom=function(){if(!this.options.mouseWheelZoomEnabled){var t=this;this.wheelListener=function(e){return t.handleMouseWheel(e)},i.on(this.options.eventsListenerElement||this.svg,this.wheelListener,!1),this.options.mouseWheelZoomEnabled=!0}},l.prototype.disableMouseWheelZoom=function(){this.options.mouseWheelZoomEnabled&&(i.off(this.options.eventsListenerElement||this.svg,this.wheelListener,!1),this.options.mouseWheelZoomEnabled=!1)},l.prototype.handleMouseWheel=function(t){if(this.options.zoomEnabled&&"none"===this.state){this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1);var e=t.deltaY||1,n=Date.now()-this.lastMouseWheelEventTime,i=3+Math.max(0,30-n);this.lastMouseWheelEventTime=Date.now(),"deltaMode"in t&&0===t.deltaMode&&t.wheelDelta&&(e=0===t.deltaY?0:Math.abs(t.wheelDelta)/t.deltaY),e=e>-.3&&.3>e?e:(e>0?1:-1)*Math.log(Math.abs(e)+10)/i;var r=this.svg.getScreenCTM().inverse(),o=a.getEventPoint(t,this.svg).matrixTransform(r),s=Math.pow(1+this.options.zoomScaleSensitivity,-1*e);this.zoomAtPoint(s,o)}},l.prototype.zoomAtPoint=function(t,e,n){var i=this.viewport.getOriginalState();n?(t=Math.max(this.options.minZoom*i.zoom,Math.min(this.options.maxZoom*i.zoom,t)),t/=this.getZoom()):this.getZoom()*t<this.options.minZoom*i.zoom?t=this.options.minZoom*i.zoom/this.getZoom():this.getZoom()*t>this.options.maxZoom*i.zoom&&(t=this.options.maxZoom*i.zoom/this.getZoom());var r=this.viewport.getCTM(),o=e.matrixTransform(r.inverse()),a=this.svg.createSVGMatrix().translate(o.x,o.y).scale(t).translate(-o.x,-o.y),s=r.multiply(a);s.a!==r.a&&this.viewport.setCTM(s)},l.prototype.zoom=function(t,e){this.zoomAtPoint(t,a.getSvgCenterPoint(this.svg,this.width,this.height),e)},l.prototype.publicZoom=function(t,e){e&&(t=this.computeFromRelativeZoom(t)),this.zoom(t,e)},l.prototype.publicZoomAtPoint=function(t,e,n){if(n&&(t=this.computeFromRelativeZoom(t)),"SVGPoint"!==o.getType(e)){if(!("x"in e&&"y"in e))throw new Error("Given point is invalid");e=a.createSVGPoint(this.svg,e.x,e.y)}this.zoomAtPoint(t,e,n)},l.prototype.getZoom=function(){return this.viewport.getZoom()},l.prototype.getRelativeZoom=function(){return this.viewport.getRelativeZoom()},l.prototype.computeFromRelativeZoom=function(t){return t*this.viewport.getOriginalState().zoom},l.prototype.resetZoom=function(){var t=this.viewport.getOriginalState();this.zoom(t.zoom,!0)},l.prototype.resetPan=function(){this.pan(this.viewport.getOriginalState())},l.prototype.reset=function(){this.resetZoom(),this.resetPan()},l.prototype.handleDblClick=function(t){if(this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1),this.options.controlIconsEnabled){var e=t.target.getAttribute("class")||"";if(e.indexOf("svg-pan-zoom-control")>-1)return!1}var n;n=t.shiftKey?1/(2*(1+this.options.zoomScaleSensitivity)):2*(1+this.options.zoomScaleSensitivity);var i=a.getEventPoint(t,this.svg).matrixTransform(this.svg.getScreenCTM().inverse());this.zoomAtPoint(n,i)},l.prototype.handleMouseDown=function(t,e){this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1),o.mouseAndTouchNormalize(t,this.svg),this.options.dblClickZoomEnabled&&o.isDblClick(t,e)?this.handleDblClick(t):(this.state="pan",this.firstEventCTM=this.viewport.getCTM(),this.stateOrigin=a.getEventPoint(t,this.svg).matrixTransform(this.firstEventCTM.inverse()))},l.prototype.handleMouseMove=function(t){if(this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1),"pan"===this.state&&this.options.panEnabled){var e=a.getEventPoint(t,this.svg).matrixTransform(this.firstEventCTM.inverse()),n=this.firstEventCTM.translate(e.x-this.stateOrigin.x,e.y-this.stateOrigin.y);this.viewport.setCTM(n)}},l.prototype.handleMouseUp=function(t){this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1),"pan"===this.state&&(this.state="none")},l.prototype.fit=function(){var t=this.viewport.getViewBox(),e=Math.min(this.width/t.width,this.height/t.height);this.zoom(e,!0)},l.prototype.contain=function(){var t=this.viewport.getViewBox(),e=Math.max(this.width/t.width,this.height/t.height);this.zoom(e,!0)},l.prototype.center=function(){var t=this.viewport.getViewBox(),e=.5*(this.width-(t.width+2*t.x)*this.getZoom()),n=.5*(this.height-(t.height+2*t.y)*this.getZoom());this.getPublicInstance().pan({x:e,y:n})},l.prototype.updateBBox=function(){this.viewport.simpleViewBoxCache()},l.prototype.pan=function(t){var e=this.viewport.getCTM();e.e=t.x,e.f=t.y,this.viewport.setCTM(e)},l.prototype.panBy=function(t){var e=this.viewport.getCTM();e.e+=t.x,e.f+=t.y,this.viewport.setCTM(e)},l.prototype.getPan=function(){var t=this.viewport.getState();return{x:t.x,y:t.y}},l.prototype.resize=function(){var t=a.getBoundingClientRectNormalized(this.svg);this.width=t.width,this.height=t.height;var e=this.viewport;e.options.width=this.width,e.options.height=this.height,e.processCTM(),this.options.controlIconsEnabled&&(this.getPublicInstance().disableControlIcons(),this.getPublicInstance().enableControlIcons())},l.prototype.destroy=function(){var t=this;this.beforeZoom=null,this.onZoom=null,this.beforePan=null,this.onPan=null,this.onUpdatedCTM=null,null!=this.options.customEventsHandler&&this.options.customEventsHandler.destroy({svgElement:this.svg,eventsListenerElement:this.options.eventsListenerElement,instance:this.getPublicInstance()});for(var e in this.eventListeners)(this.options.eventsListenerElement||this.svg).removeEventListener(e,this.eventListeners[e],!1);this.disableMouseWheelZoom(),this.getPublicInstance().disableControlIcons(),this.reset(),u=u.filter(function(e){return e.svg!==t.svg}),delete this.options,delete this.viewport,delete this.publicInstance,delete this.pi,this.getPublicInstance=function(){return null}},l.prototype.getPublicInstance=function(){var t=this;return this.publicInstance||(this.publicInstance=this.pi={enablePan:function(){return t.options.panEnabled=!0,t.pi},disablePan:function(){return t.options.panEnabled=!1,t.pi},isPanEnabled:function(){return!!t.options.panEnabled},pan:function(e){return t.pan(e),t.pi},panBy:function(e){return t.panBy(e),t.pi},getPan:function(){return t.getPan()},setBeforePan:function(e){return t.options.beforePan=null===e?null:o.proxy(e,t.publicInstance),t.pi},setOnPan:function(e){return t.options.onPan=null===e?null:o.proxy(e,t.publicInstance),t.pi},enableZoom:function(){return t.options.zoomEnabled=!0,t.pi},disableZoom:function(){return t.options.zoomEnabled=!1,t.pi},isZoomEnabled:function(){return!!t.options.zoomEnabled},enableControlIcons:function(){return t.options.controlIconsEnabled||(t.options.controlIconsEnabled=!0,r.enable(t)),t.pi},disableControlIcons:function(){return t.options.controlIconsEnabled&&(t.options.controlIconsEnabled=!1,r.disable(t)),t.pi},isControlIconsEnabled:function(){return!!t.options.controlIconsEnabled},enableDblClickZoom:function(){return t.options.dblClickZoomEnabled=!0,t.pi},disableDblClickZoom:function(){return t.options.dblClickZoomEnabled=!1,t.pi},isDblClickZoomEnabled:function(){return!!t.options.dblClickZoomEnabled},enableMouseWheelZoom:function(){return t.enableMouseWheelZoom(),t.pi},disableMouseWheelZoom:function(){return t.disableMouseWheelZoom(),t.pi},isMouseWheelZoomEnabled:function(){return!!t.options.mouseWheelZoomEnabled},setZoomScaleSensitivity:function(e){return t.options.zoomScaleSensitivity=e,t.pi},setMinZoom:function(e){return t.options.minZoom=e,t.pi},setMaxZoom:function(e){return t.options.maxZoom=e,t.pi},setBeforeZoom:function(e){return t.options.beforeZoom=null===e?null:o.proxy(e,t.publicInstance),t.pi},setOnZoom:function(e){return t.options.onZoom=null===e?null:o.proxy(e,t.publicInstance),t.pi},zoom:function(e){return t.publicZoom(e,!0),t.pi},zoomBy:function(e){return t.publicZoom(e,!1),t.pi},zoomAtPoint:function(e,n){return t.publicZoomAtPoint(e,n,!0),t.pi},zoomAtPointBy:function(e,n){return t.publicZoomAtPoint(e,n,!1),t.pi},zoomIn:function(){return this.zoomBy(1+t.options.zoomScaleSensitivity),t.pi},zoomOut:function(){return this.zoomBy(1/(1+t.options.zoomScaleSensitivity)),t.pi},getZoom:function(){return t.getRelativeZoom()},setOnUpdatedCTM:function(e){return t.options.onUpdatedCTM=null===e?null:o.proxy(e,t.publicInstance),t.pi},resetZoom:function(){return t.resetZoom(),t.pi},resetPan:function(){return t.resetPan(),t.pi},reset:function(){return t.reset(),t.pi},fit:function(){return t.fit(),t.pi},contain:function(){return t.contain(),t.pi},center:function(){return t.center(),t.pi},updateBBox:function(){return t.updateBBox(),t.pi},resize:function(){return t.resize(),t.pi},getSizes:function(){return{width:t.width,height:t.height,realZoom:t.getZoom(),viewBox:t.viewport.getViewBox()}},destroy:function(){return t.destroy(),t.pi}}),this.publicInstance};var u=[],h=function(t,e){var n=o.getSvg(t);if(null===n)return null;for(var i=u.length-1;i>=0;i--)if(u[i].svg===n)return u[i].instance.getPublicInstance();return u.push({svg:n,instance:new l(n,e)}),u[u.length-1].instance.getPublicInstance()};e.exports=h},{"./control-icons":2,"./shadow-viewport":3,"./svg-utilities":5,"./uniwheel":6,"./utilities":7}],5:[function(t,e,n){var i=t("./utilities"),r="unknown";document.documentMode&&(r="ie"),e.exports={svgNS:"http://www.w3.org/2000/svg",xmlNS:"http://www.w3.org/XML/1998/namespace",xmlnsNS:"http://www.w3.org/2000/xmlns/",xlinkNS:"http://www.w3.org/1999/xlink",evNS:"http://www.w3.org/2001/xml-events",getBoundingClientRectNormalized:function(t){if(t.clientWidth&&t.clientHeight)return{width:t.clientWidth,height:t.clientHeight};if(t.getBoundingClientRect())return t.getBoundingClientRect();throw new Error("Cannot get BoundingClientRect for SVG.")},getOrCreateViewport:function(t,e){var n=null;if(n=i.isElement(e)?e:t.querySelector(e),!n){var r=Array.prototype.slice.call(t.childNodes||t.children).filter(function(t){return"defs"!==t.nodeName&&"#text"!==t.nodeName});1===r.length&&"g"===r[0].nodeName&&null===r[0].getAttribute("transform")&&(n=r[0])}if(!n){var o="viewport-"+(new Date).toISOString().replace(/\D/g,"");n=document.createElementNS(this.svgNS,"g"),n.setAttribute("id",o);var a=t.childNodes||t.children;if(a&&a.length>0)for(var s=a.length;s>0;s--)"defs"!==a[a.length-s].nodeName&&n.appendChild(a[a.length-s]);t.appendChild(n)}var l=[];return n.getAttribute("class")&&(l=n.getAttribute("class").split(" ")),~l.indexOf("svg-pan-zoom_viewport")||(l.push("svg-pan-zoom_viewport"),n.setAttribute("class",l.join(" "))),n},setupSvgAttributes:function(t){if(t.setAttribute("xmlns",this.svgNS),t.setAttributeNS(this.xmlnsNS,"xmlns:xlink",this.xlinkNS),t.setAttributeNS(this.xmlnsNS,"xmlns:ev",this.evNS),null!==t.parentNode){var e=t.getAttribute("style")||"";-1===e.toLowerCase().indexOf("overflow")&&t.setAttribute("style","overflow: hidden; "+e)}},internetExplorerRedisplayInterval:300,refreshDefsGlobal:i.throttle(function(){for(var t=document.querySelectorAll("defs"),e=t.length,n=0;e>n;n++){var i=t[n];i.parentNode.insertBefore(i,i)}},this.internetExplorerRedisplayInterval),setCTM:function(t,e,n){var i=this,o="matrix("+e.a+","+e.b+","+e.c+","+e.d+","+e.e+","+e.f+")";t.setAttributeNS(null,"transform",o),"transform"in t.style?t.style.transform=o:"-ms-transform"in t.style?t.style["-ms-transform"]=o:"-webkit-transform"in t.style&&(t.style["-webkit-transform"]=o),"ie"===r&&n&&(n.parentNode.insertBefore(n,n),window.setTimeout(function(){i.refreshDefsGlobal()},i.internetExplorerRedisplayInterval))},getEventPoint:function(t,e){var n=e.createSVGPoint();return i.mouseAndTouchNormalize(t,e),n.x=t.clientX,n.y=t.clientY,n},getSvgCenterPoint:function(t,e,n){return this.createSVGPoint(t,e/2,n/2)},createSVGPoint:function(t,e,n){var i=t.createSVGPoint();return i.x=e,i.y=n,i}}},{"./utilities":7}],6:[function(t,e,n){e.exports=function(){function t(t,e,n){var i=function(t){!t&&(t=window.event);var n={originalEvent:t,target:t.target||t.srcElement,type:"wheel",deltaMode:"MozMousePixelScroll"==t.type?0:1,deltaX:0,delatZ:0,preventDefault:function(){t.preventDefault?t.preventDefault():t.returnValue=!1}};return"mousewheel"==c?(n.deltaY=-.025*t.wheelDelta,t.wheelDeltaX&&(n.deltaX=-.025*t.wheelDeltaX)):n.deltaY=t.detail,e(n)};return h.push({element:t,fn:i,capture:n}),i}function e(t,e){for(var n=0;n<h.length;n++)if(h[n].element===t&&h[n].capture===e)return h[n].fn;return function(){}}function n(t,e){for(var n=0;n<h.length;n++)if(h[n].element===t&&h[n].capture===e)return h.splice(n,1)}function i(e,n,i,r){var o;o="wheel"===c?i:t(e,i,r),e[s](u+n,o,r||!1)}function r(t,i,r,o){var a;a="wheel"===c?r:e(t,o),t[l](u+i,a,o||!1),n(t,o)}function o(t,e,n){i(t,c,e,n),"DOMMouseScroll"==c&&i(t,"MozMousePixelScroll",e,n)}function a(t,e,n){r(t,c,e,n),"DOMMouseScroll"==c&&r(t,"MozMousePixelScroll",e,n)}var s,l,c,u="",h=[];return window.addEventListener?(s="addEventListener",l="removeEventListener"):(s="attachEvent",l="detachEvent",u="on"),c="onwheel"in document.createElement("div")?"wheel":void 0!==document.onmousewheel?"mousewheel":"DOMMouseScroll",{on:o,off:a}}()},{}],7:[function(t,e,n){function i(t){return function(e){window.setTimeout(e,t)}}e.exports={extend:function(t,e){t=t||{};for(var n in e)this.isObject(e[n])?t[n]=this.extend(t[n],e[n]):t[n]=e[n];return t},isElement:function(t){return t instanceof HTMLElement||t instanceof SVGElement||t instanceof SVGSVGElement||t&&"object"==typeof t&&null!==t&&1===t.nodeType&&"string"==typeof t.nodeName},isObject:function(t){return"[object Object]"===Object.prototype.toString.call(t)},isNumber:function(t){return!isNaN(parseFloat(t))&&isFinite(t)},getSvg:function(t){var e,n;if(this.isElement(t))e=t;else{if(!("string"==typeof t||t instanceof String))throw new Error("Provided selector is not an HTML object nor String");if(e=document.querySelector(t),!e)throw new Error("Provided selector did not find any elements. Selector: "+t)}if("svg"===e.tagName.toLowerCase())n=e;else if("object"===e.tagName.toLowerCase())n=e.contentDocument.documentElement;else{if("embed"!==e.tagName.toLowerCase())throw"img"===e.tagName.toLowerCase()?new Error('Cannot script an SVG in an "img" element. Please use an "object" element or an in-line SVG.'):new Error("Cannot get SVG.");n=e.getSVGDocument().documentElement}return n},proxy:function(t,e){return function(){return t.apply(e,arguments)}},getType:function(t){return Object.prototype.toString.apply(t).replace(/^\[object\s/,"").replace(/\]$/,"")},mouseAndTouchNormalize:function(t,e){if(void 0===t.clientX||null===t.clientX)if(t.clientX=0,t.clientY=0,void 0!==t.changedTouches&&t.changedTouches.length){if(void 0!==t.changedTouches[0].clientX)t.clientX=t.changedTouches[0].clientX,t.clientY=t.changedTouches[0].clientY;else if(void 0!==t.changedTouches[0].pageX){var n=e.getBoundingClientRect();t.clientX=t.changedTouches[0].pageX-n.left,t.clientY=t.changedTouches[0].pageY-n.top}}else void 0!==t.originalEvent&&void 0!==t.originalEvent.clientX&&(t.clientX=t.originalEvent.clientX,t.clientY=t.originalEvent.clientY)},isDblClick:function(t,e){if(2===t.detail)return!0;if(void 0!==e&&null!==e){var n=t.timeStamp-e.timeStamp,i=Math.sqrt(Math.pow(t.clientX-e.clientX,2)+Math.pow(t.clientY-e.clientY,2));return 250>n&&10>i}return!1},now:Date.now||function(){return(new Date).getTime()},throttle:function(t,e,n){var i,r,o,a=this,s=null,l=0;n||(n={});var c=function(){l=n.leading===!1?0:a.now(),s=null,o=t.apply(i,r),s||(i=r=null)};return function(){var u=a.now();l||n.leading!==!1||(l=u);var h=e-(u-l);return i=this,r=arguments,0>=h||h>e?(clearTimeout(s),s=null,l=u,o=t.apply(i,r),s||(i=r=null)):s||n.trailing===!1||(s=setTimeout(c,h)),o}},createRequestAnimationFrame:function(t){var e=null;return"auto"!==t&&60>t&&t>1&&(e=Math.floor(1e3/t)),null===e?window.requestAnimationFrame||i(33):i(e)}}},{}]},{},[1]),define("jswish",["jquery","config","preferences","history","modal","chat","splitter","bootstrap","pane","tabbed","notebook","navbar","search","editor","query","runner","term","laconic","login","chatroom","d3","c3","svg-pan-zoom"],function(t,e,n,i,r){n.setDefault("semantic-highlighting",!0),n.setDefault("emacs-keybinding",!1),
+function(t){function n(t,e){return e.glyph=t,e}function o(t,e){return e.typeIcon=t,e}function a(e,n){t(".swish-event-receiver").trigger(e,n)}function s(){t(".swish-logo").append(t.el.b(t.el.span({style:"color:darkblue"},"SWI"),t.el.span({style:"color:maroon"},"SH"))).css("margin-left","30px").css("font-size","24px").addClass("navbar-brand")}function l(){0==t("#modal").length&&(t("body").append(t.el.div({id:"modal"})),t("#modal").swishModal())}function c(){t(".tile").tile(),t(window).resize(function(){t(".tile").tile("resize")}),t(".tabbed").tabbed()}function u(){t(window).resize(function(){t(".reactive-size").trigger("reactive-resize")})}var h="swish",d={menu:{File:{"Save ...":n("cloud-upload",function(){a("save","as")}),"Info & history ...":n("info-sign",function(){a("fileInfo")}),Reload:n("refresh",function(){a("reload")}),"Open recent":{type:"submenu",glyph:"paperclip",action:function(e){i.openRecent(e,t(this).data("document"))},update:i.updateRecentUL},Share:"--","Follow ...":e.http.locations.follow_file_options?n("eye-open",function(){a("follow-file")}):void 0,"Start TogetherJS ...":o("togetherjs",function(){t("body").swish("collaborate")}),Export:"--",Download:n("floppy-save",function(){a("download")}),"Print ...":n("print",function(){a("print")})},Edit:{"Clear messages":function(){a("clearMessages")},Changes:"--","View changes":function(){a("diff")},Edit:"--","Find (Ctrl-F)":function(){a("edit-command","find")},"Find and replace (Shift-Ctrl-F)":function(){a("edit-command","replace")},"Jump to line (Alt-G)":function(){a("edit-command","jumpToLine")},Options:"--","Semantic highlighting":{preference:"semantic-highlighting",type:"checkbox"},"Emacs Keybinding":{preference:"emacs-keybinding",type:"checkbox",value:"false"}},Examples:function(e,n){t("body").swish("populateExamples",e,n)},Help:function(e,n){t("body").swish("populateHelp",e,n)}}},f={_init:function(n){return s(),l(),c(),u(),t("#search").search(),n=n||{},this.addClass("swish"),this.each(function(){var i=t(this),r={};t("#navbar").navbar(d.menu),t("#login").login();var o=t(".prolog-editor").prologEditor({save:!0});r.runner=t(".prolog-runners").prologRunners(),r.query=t(".prolog-query").queryEditor({source:function(){return i.swish("prologSource")},sourceID:function(){return o.prologEditor("getSourceID")},examples:i.swish("examples"),runner:r.runner,editor:o[0]}),t(".notebook").notebook(),!n.show_beware||swish.option&&0==swish.option.show_beware||a("help",{file:"beware.html",notagain:"beware"}),i.data(h,r),window.location.href.indexOf("&togetherjs=")>0&&i.swish("collaborate"),t("#chat").chat(""),t("#broadcast-bell").chatbell({empty_title:"Click to open chat"}),t("#chat-menu").on("click","a",function(n){var i=t(n.target).closest("a");switch(i.data("action")){case"chat-shared":t("body").swish("playFile",{file:e.swish.hangout,chat:"large"});case"chat-about-file":a("chat-about-file")}}),setInterval(function(){t(".each-minute").trigger("minute")},6e4)})},trigger:function(t,e){return a(t,e),this},playFile:function(n){var i=this;"string"==typeof n&&(n={file:n});var o=this.find(".storage").storage("match",n);if(o&&o.storage("expose","Already open"))return this;var a=e.http.locations.web_storage+n.file;return t.ajax({url:a,type:"GET",data:{format:"json"},success:function(t){function e(e){for(var i=0;i<e.length;i++){var r=e[i];n[r]&&(t[r]=n[r])}}t.url=a,t.st_type="gitty",e(["line","regex","showAllMatches","newTab","noHistory","prompt","chat"]),i.swish("setSource",t)},error:function(t){r.ajaxError(t)}}),this},playURL:function(e){var n=this,i=this.find(".storage").storage("match",e);return i&&i.storage("expose","Already open")?this:void t.ajax({url:e.url,type:"GET",data:{format:"json"},success:function(t){function i(t){for(var n=0;n<t.length;n++){var i=t[n];e[i]&&(r[i]=e[i])}}var r;if("string"==typeof t)r={data:t},r.st_type="external";else{if("object"!=typeof t||"string"!=typeof t.data)return void alert("Invalid data");r=t,r.st_type="filesys"}r.url=e.url,i(["line","regex","showAllMatches","newTab","noHistory","prompt"]),n.swish("setSource",r)},error:function(t){r.ajaxError(t)}})},setSource:function(t){var e=this.swish("isFullscreen");return e&&e.storage("setSource",t)||(e&&this.swish("exitFullscreen"),this.find(".tabbed").tabbed("tabFromSource",t)),this},openExampleFunction:function(t){var e=this;return"divider"==t.type?"--":"store"==t.type?function(){f.playFile.call(e,t.file)}:function(){f.playURL.call(e,{url:t.href})}},populateExamples:function(n,i){var r=this;return r.off("examples-changed").on("examples-changed",function(){t("#navbar").navbar("clearDropdown",i),r.swish("populateExamples",n,i)}),t.ajax(e.http.locations.swish_examples,{dataType:"json",success:function(e){for(var n=0;n<e.length;n++){var o,a,s=e[n];if("--"==s||"divider"==s.type)o="--",a="--";else{var l=s.file||s.href;o=s.title,a=r.swish("openExampleFunction",s),l&&(a.typeIcon=l.split(".").pop())}t("#navbar").navbar("extendDropdown",i,o,a)}}}),this},populateHelp:function(n,i){function r(t){return function(){a("help",{file:t.file})}}return t.ajax(e.http.locations.swish_help_index,{dataType:"json",success:function(e){for(var n=0;n<e.length;n++){var o,a,s=e[n];if("--"==s||"divider"==s.type)o="--",a="--";else{s.file;o=s.title,a=r(s)}t("#navbar").navbar("extendDropdown",i,o,a)}}}),this},prologSource:function(){var e,n=[];return(e=t(".prolog-editor").prologEditor("getSource","source"))&&n.push(e),(e=t(".background.prolog.source").text())&&n.push(e),n.join("\n\n")},breakpoints:function(t){return this.find(".prolog-editor").prologEditor("getBreakpoints",t)||[]},tabData:function(t){return t=t||{},t.active?this.find(".tab-pane.active .storage").storage("getData",t):this.find(".storage").storage("getData",t)},examples:function(e){var n=t(".examples.prolog").text();return n?t().prologEditor("getExamples",n,!1):1!=e?function(){return t(".prolog-editor").prologEditor("getExamples")}:void 0},fullscreen:function(e,n){var i=this.find(".container.tile-top");if(!i.hasClass("fullscreen")){var r=this.data("fullscreen");r||(r={},this.data("fullscreen",r)),i.addClass("fullscreen"),n=n||e,n.addClass("fullscreen hamburger"),r.fullscreen_origin=e.parent()[0],r.fullscreen_main=n[0],t(i.children()[0]).hide(),i.append(e),n.trigger("fullscreen",!0)}return this},exitFullscreen:function(){var e=this.find(".container.tile-top");if(e.hasClass("fullscreen")){var n=this.data("fullscreen"),i=t(e.children()[1]),r=n.fullscreen_main;return e.removeClass("fullscreen"),t(n.fullscreen_main).removeClass("fullscreen hamburger"),t(n.fullscreen_origin).append(i),n.fullscreen_origin=null,n.fullscreen_main=null,t(e.children()[0]).show(),t(r).trigger("fullscreen",!1),!0}return!1},isFullscreen:function(){var t=this.find(".container.tile-top");if(t.hasClass("fullscreen")){var e=t.find(".storage");if(0!=e.length)return e}},collaborate:function(){var e=this;return t(this).attr("data-end-togetherjs-html","End collaboration"),require(["https://togetherjs.com/togetherjs-min.js"],function(){TogetherJS(e)}),this}};t.fn.swish=function(e){return f[e]?f[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void t.error("Method "+e+" does not exist on jQuery."+h):f._init.apply(this,arguments)}}(jQuery)}),require.config({urlArgs:"ts="+(new Date).getTime(),waitSeconds:60,paths:{jquery:"../bower_components/jquery/dist/jquery.min","jquery-ui":"../bower_components/jquery-ui/jquery-ui.min",laconic:"../bower_components/laconic/laconic",bootstrap:"../bower_components/bootstrap/dist/js/bootstrap.min",bloodhound:"../bower_components/typeahead.js/dist/bloodhound",typeahead:"../bower_components/typeahead.js/dist/typeahead.jquery",splitter:"../bower_components/jquery.splitter/js/jquery.splitter-0.15.0",tagmanager:"../bower_components/tagmanager/tagmanager",sha1:"../bower_components/js-sha1/src/sha1",c3:"../bower_components/c3/c3",d3:"../bower_components/d3/d3","svg-pan-zoom":"../bower_components/svg-pan-zoom/dist/svg-pan-zoom.min",sparkline:"../bower_components/sparkline/dist/jquery.sparkline","cm/mode/prolog":"codemirror/mode/prolog","cm/addon/hover/prolog-hover":"codemirror/addon/hover/prolog-hover","cm/addon/hover/text-hover":"codemirror/addon/hover/text-hover","cm/addon/hint/templates-hint":"codemirror/addon/hint/templates-hint","cm/addon/hint/show-context-info":"codemirror/addon/hint/show-context-info",cm:"../bower_components/codemirror"},shim:{bootstrap:{deps:["jquery"]},typeahead:{deps:["jquery"],init:function(t){return require.s.contexts._.registry["typeahead.js"].factory(t)}},bloodhound:{deps:["jquery"]},splitter:{deps:["jquery"]},laconic:{deps:["jquery"]},tagmanager:{deps:["jquery"]}}}),require(["jquery","config","jswish"],function(t,e,n){require([e.http.locations.pengines+"/pengines.js"],function(){t(function(){t("body").swish(e.swish||{})})})}),define("swish",function(){});
 //# sourceMappingURL=swish-min.js.map
\ No newline at end of file
diff --git a/web/js/swish-min.js.gz b/web/js/swish-min.js.gz
index 2b0e71b..75da5b8 100644
Binary files a/web/js/swish-min.js.gz and b/web/js/swish-min.js.gz differ
diff --git a/web/js/swish-min.js.map b/web/js/swish-min.js.map
index 1a5b6a4..4cd0389 100644
--- a/web/js/swish-min.js.map
+++ b/web/js/swish-min.js.map
@@ -1 +1 @@
-{"version":3,"sources":["../bower_components/bootstrap/dist/js/bootstrap.min.js","../bower_components/jquery/dist/jquery.min.js","config.js","preferences.js","links.js","../bower_components/laconic/laconic.js","modal.js","../bower_components/tagmanager/tagmanager.js","form.js","history.js","utils.js","chat.js","../bower_components/jquery.splitter/js/jquery.splitter-0.15.0.js","pane.js","../bower_components/typeahead.js/dist/bloodhound.js","../bower_components/typeahead.js/dist/typeahead.jquery.js","search.js","tabbed.js","prolog.js","../bower_components/codemirror/lib/codemirror.js","answer.js","../bower_components/sparkline/dist/jquery.sparkline.js","download.js","runner.js","gitty.js","difflib.js","diffview.js","diff.js","storage.js","../bower_components/js-sha1/src/sha1.js","notebook.js","navbar.js","codemirror/addon/hint/templates-hint.js","codemirror/mode/prolog/prolog-template-hint.js","codemirror/mode/prolog/prolog.js","codemirror/mode/prolog/prolog_keys.js","codemirror/mode/prolog/prolog_query.js","codemirror/mode/prolog/prolog_server.js","../bower_components/codemirror/mode/xml/xml.js","../bower_components/codemirror/mode/meta.js","../bower_components/codemirror/mode/markdown/markdown.js","../bower_components/codemirror/addon/edit/matchbrackets.js","../bower_components/codemirror/addon/comment/continuecomment.js","../bower_components/codemirror/addon/comment/comment.js","../bower_components/codemirror/addon/hint/show-hint.js","../bower_components/codemirror/addon/hint/anyword-hint.js","../bower_components/codemirror/addon/display/placeholder.js","../bower_components/codemirror/addon/runmode/runmode.js","../bower_components/codemirror/addon/search/searchcursor.js","../bower_components/codemirror/addon/dialog/dialog.js","../bower_components/codemirror/addon/search/search.js","../bower_components/codemirror/addon/search/jump-to-line.js","codemirror/addon/hover/text-hover.js","codemirror/addon/hover/prolog-hover.js","codemirror/addon/hint/show-context-info.js","../bower_components/codemirror/keymap/emacs.js","editor.js","query.js","term.js","login.js","chatroom.js","../bower_components/d3/d3.js","../bower_components/c3/c3.js","../bower_components/svg-pan-zoom/dist/svg-pan-zoom.min.js","jswish.js","swish.js"],"names":["a","b","module","exports","document","Error","window","this","p","d","c","createElement","text","head","appendChild","parentNode","removeChild","w","length","r","type","isWindow","B","nodeName","toLowerCase","E","isFunction","grep","call","nodeType","i","D","test","filter","K","M","each","match","L","N","O","P","e","promise","done","fail","then","apply","slice","S","removeEventListener","ready","V","expando","uid","$","Y","JSON","parse","_","replace","Z","getAttribute","X","set","fa","f","g","h","cur","css","j","cssNumber","k","ba","exec","style","unit","start","end","ha","ownerDocument","ga","body","ia","display","W","get","da","na","getElementsByTagName","querySelectorAll","merge","oa","qa","l","createDocumentFragment","m","n","o","pa","ka","ma","_default","innerHTML","htmlPrefilter","lastChild","childNodes","firstChild","textContent","push","createTextNode","inArray","contains","la","va","wa","xa","activeElement","ya","off","arguments","guid","event","add","Ea","Fa","Ga","Ca","removeAttribute","Ha","hasData","access","events","handle","extend","Ia","ja","checked","defaultValue","Ja","q","s","checkClone","Ba","eq","html","map","clone","src","_evalUrl","Da","Ka","cleanData","Oa","Na","getPropertyValue","pixelMarginRight","Ma","La","width","minWidth","maxWidth","Pa","Wa","Va","toUpperCase","Ua","Xa","cssProps","Ya","Math","max","Za","ca","$a","boxSizingReliable","parseFloat","_a","prototype","init","eb","bb","hidden","requestAnimationFrame","setTimeout","fx","interval","tick","fb","ab","now","gb","height","opacity","hb","kb","tweeners","concat","ib","queue","_queueHooks","unqueued","empty","fire","always","cb","isEmptyObject","overflow","overflowX","overflowY","remove","jb","camelCase","Array","isArray","cssHooks","expand","prefilters","Deferred","elem","startTime","duration","tweens","run","notifyWith","resolveWith","props","opts","specialEasing","easing","originalProperties","originalOptions","createTween","Tween","stop","rejectWith","proxy","progress","complete","timer","anim","pb","join","qb","Ab","wb","Mb","unshift","Nb","dataTypes","Jb","Ob","ajaxSettings","flatOptions","Pb","contents","shift","mimeType","getResponseHeader","converters","Qb","responseFields","dataFilter","dataType","split","state","error","data","Object","getPrototypeOf","indexOf","toString","hasOwnProperty","fn","t","u","v","jquery","constructor","toArray","pushStack","prevObject","first","last","sort","splice","isPlainObject","random","isReady","noop","isNumeric","isNaN","globalEval","trim","makeArray","Date","support","Symbol","iterator","x","getElementById","id","G","getElementsByClassName","qsa","A","setAttribute","sa","cacheLength","attrHandle","sourceIndex","nextSibling","disabled","isDisabled","ea","ra","value","ta","dir","next","uniqueID","ua","I","relative","matches","za","find","TAG","y","z","uniqueSort","C","pop","F","H","J","RegExp","Q","R","T","U","ID","CLASS","ATTR","PSEUDO","CHILD","bool","needsContext","aa","String","fromCharCode","charCodeAt","isXML","documentElement","setDocument","defaultView","top","addEventListener","attachEvent","attributes","className","createComment","getById","getElementsByName","getAttributeNode","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","sortDetached","attr","specified","escape","detectDuplicates","sortStable","getText","nodeValue","selectors","createPseudo",">"," ","+","~","preFilter","pseudos","setFilters","not","has","innerText","lang","target","location","hash","root","focus","hasFocus","href","tabIndex","enabled","selected","selectedIndex","parent","header","input","button","even","odd","lt","gt","nth","radio","checkbox","file","password","image","submit","reset","filters","tokenize","compile","selector","select","expr","unique","isXMLDoc","escapeSelector","is","parseHTML","children","prev","closest","index","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","siblings","contentDocument","content","reverse","Callbacks","once","stopOnFalse","memory","disable","lock","locked","fireWith","fired","catch","pipe","notify","resolve","reject","TypeError","exceptionHook","stackTrace","getStackHook","when","console","warn","name","message","stack","readyException","readyWait","readyState","doScroll","cache","defineProperty","configurable","removeData","_data","_removeData","dequeue","clearQueue","source","show","hide","toggle","option","thead","col","tr","td","optgroup","tbody","tfoot","colgroup","caption","th","cloneNode","noCloneChecked","global","handler","triggered","dispatch","special","delegateType","bindType","origType","namespace","delegateCount","setup","teardown","removeEvent","fix","delegateTarget","preDispatch","handlers","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","handleObj","result","preventDefault","stopPropagation","postDispatch","addProp","Event","enumerable","originalEvent","writable","load","noBubble","trigger","blur","click","beforeunload","returnValue","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","isSimulated","stopImmediatePropagation","altKey","bubbles","cancelable","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","shiftKey","view","char","charCode","key","keyCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","which","mouseenter","mouseleave","pointerenter","pointerleave","on","one","Aa","detach","append","prepend","insertBefore","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","opener","getComputedStyle","cssText","marginLeft","marginRight","backgroundClip","clearCloneStyle","pixelPosition","reliableMarginLeft","Qa","Ra","Sa","position","visibility","Ta","letterSpacing","fontWeight","animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","lineHeight","order","orphans","widows","zIndex","zoom","float","setProperty","isFinite","getClientRects","getBoundingClientRect","left","margin","padding","border","prop","options","propHooks","pos","step","scrollTop","scrollLeft","linear","swing","cos","PI","db","Animation","*","tweener","prefilter","speed","speeds","old","fadeTo","animate","finish","timers","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","delay","clearTimeout","checkOn","optSelected","radioValue","lb","mb","removeAttr","attrHooks","nb","ob","removeProp","propFix","parseInt","for","class","addClass","removeClass","toggleClass","hasClass","rb","val","valHooks","sb","isTrigger","parentWindow","simulate","triggerHandler","hover","focusin","tb","ub","vb","parseXML","DOMParser","parseFromString","xb","yb","zb","param","encodeURIComponent","serialize","serializeArray","Bb","Cb","Db","Eb","Fb","Gb","Hb","Ib","Kb","Lb","active","lastModified","etag","url","isLocal","protocol","processData","async","contentType","accepts","xml","json","* text","text html","text json","text xml","context","ajaxSetup","ajaxPrefilter","ajaxTransport","ajax","ifModified","status","statusText","statusCode","getAllResponseHeaders","setRequestHeader","overrideMimeType","abort","method","crossDomain","host","traditional","hasContent","headers","beforeSend","success","timeout","send","getJSON","getScript","throws","wrapAll","firstElementChild","wrapInner","wrap","unwrap","visible","offsetWidth","offsetHeight","xhr","XMLHttpRequest","Rb","0","1223","Sb","cors","open","username","xhrFields","onload","onerror","onabort","onreadystatechange","responseType","responseText","binary","response","script","text script","charset","scriptCharset","Tb","Ub","jsonp","jsonpCallback","createHTMLDocument","implementation","animated","offset","setOffset","using","pageYOffset","clientTop","pageXOffset","clientLeft","offsetParent","scrollTo","Height","Width","","bind","unbind","delegate","undelegate","holdReady","parseJSON","define","amd","Vb","jQuery","Wb","noConflict","getCachedConfig","swish","config_hash","str","localStorage","getItem","KEY","config","setCachedConfig","setItem","stringify","alert","readNotAgain","err","hasLocalStore","defaults","preferences","persistent","setNotAgain","notagain","broadcast","setVal","setDefault","getVal","modal","functions","PlDoc","from","ev","parsePred","pred","substring","charAt","arity","decodeURIComponent","runQueryLink","isVar","vars","novars","qname","cell","prologEditor","nbCell","bindings","vr","feedback","owner","followLink","accept","swishStore","http","locations","swishExamples","startsWith","laconic","el","arg","undefined","substr","toExponential","toFixed","attributeMap","isEvent","child","acceptcharset","accesskey","allowtransparency","bgcolor","cellpadding","cellspacing","classname","colspan","csstext","defaultchecked","defaultselected","defaultvalue","frameborder","hspace","htmlfor","longdesc","maxlength","marginwidth","marginheight","noresize","noshade","readonly","rowspan","tabindex","valign","vspace","registerElement","renderer","deprecatedTags","tags","makeApply","tagName","dollar","WebkitTransition","MozTransition","OTransition","transition","emulateTransitionEnd","bsTransitionEnd","close","VERSION","TRANSITION_DURATION","Constructor","setState","$element","DEFAULTS","isLoading","loadingText","resetText","slide","to","pause","cycle","$indicators","paused","sliding","$active","$items","keyboard","keydown","clearInterval","setInterval","getItemIndex","getItemForDirection","direction","carousel","$trigger","transitioning","$parent","getParent","addAriaAndCollapsedClass","dimension","collapse","dropdown","$body","$dialog","$backdrop","isShown","originalBodyPad","scrollbarWidth","ignoreBackdropClick","remote","BACKDROP_TRANSITION_DURATION","backdrop","checkScrollbar","setScrollbar","resize","adjustDialog","enforceFocus","hideModal","handleUpdate","resetAdjustments","resetScrollbar","removeBackdrop","scrollHeight","clientHeight","paddingLeft","bodyIsOverflowing","paddingRight","innerWidth","right","abs","clientWidth","measureScrollbar","hoverState","inState","animation","placement","template","title","container","viewport","getOptions","$viewport","enter","leave","_options","fixTitle","getDefaults","getDelegateOptions","tip","isInStateTrue","getUID","setContent","getPosition","bottom","getCalculatedOffset","applyPlacement","$tip","round","getViewportAdjustedDelta","replaceArrow","arrow","getTitle","SVGElement","scroll","$arrow","enable","toggleEnabled","destroy","tooltip","getContent","popover","$scrollElement","offsets","targets","activeTarget","process","refresh","getScrollHeight","activate","clear","scrollspy","element","tab","$target","checkPosition","checkPositionWithEventLoop","affixed","unpin","pinnedOffset","RESET","getState","getPinnedOffset","affix","offsetBottom","offsetTop","links","form","closeButton","data-dismiss","notAgain","label","data-notagain","initTagsManagers","prefilled","tagsManager","pluginName","methods","_init","swishModal","icon","jqXHR","showHelp","that","help","showForm","showPlDoc","docURL","term","pldoc_doc_for","docBody","div","h2","md","modalel","role","onclose","server_form","require","jqXHDR","formel","serializeAsObject","obj","onreply","formError","showAjaxError","dom","h1","win","resizeIframe","iframe","contentWindow","ajaxError","CapitalizeFirstLetter","preventSubmitOnEnter","isClearInputOnEsc","externalTagId","prefillIdFieldName","prefillValueFieldName","AjaxPush","AjaxPushAllTags","AjaxPushParameters","delimiters","backspace","maxTags","hiddenTagListName","hiddenTagListId","output","deleteTagsOnBackspace","tagsContainer","tagCloseIcon","tagClass","validator","onlyTagList","tagList","fillInputOnTagRemove","publicMethods","pushTag","tag","ignoreEvents","alreadyInList","tlisLowerCase","tagId","idx","newTagId","newTagRemoveId","escaped","$el","lastTagObj","$self","tlis","tlid","privateMethods","trimTag","delimiterChars","$tagList","item","suggestion","blinkClass","backgroundColor","blinkBGColor_1","blinkBGColor_2","Infinity","post","tagClasses","TagIdToRemove","spliceTag","refreshHiddenTagList","showOrHide","popTag","tagBeingRemoved","cl","tagBaseClass","inputBaseClass","lhiddenTagList","baseDelimiter","change","killEvent","cancelBubble","keyInArray","ary","applyDelimiter","prefill","pta","pushAllTags","keyNums","delimeters","delimiterKeys","hiddenObj","rndid","albet","floor","navigator","userAgent","valgridw","LABELWIDTH","elemName","attrs","textInput","placeholder","tagInput","textarea","addSelect","ignore_empty","arr","inset","jvalue","code","errors","fieldError","field","msg","group","showDialog","formBroadcast","fields","fileName","public","example","fork","labeltext","community_examples","span","btn","author","identity","date","stamp","labels","toLocaleString","description","commit_message","modify","who","canmodify","checkboxes","follow","email","projection","csvFormat","list","format","limit","distinct","boxes","boxel","dopts","box","autocomplete","chunk","filename","action","data-toggle","cls","lblopts","widgets","glyphIcon","glyph","typeIcon","glyphIconButton","dropdownButton","divClass","ulClass","ul","actions","populateMenu","client","menu","runMenu","addMenuItem","onclick","li","history","reply","cpath","pathname","meta","pushState","recentMaxLength","addRecent","doc","equalDocument","d1","d2","recent","openRecent","st_type","updateRecentUL","gitty","onpopstate","utils","htmlEncode","flash","lastIndexOf","li_user","avatar","keypress","img","getTime","reconnect_delay","last_open","chat","connect","add_pref_param","pname","lead","swish_chat","ws","reconnect","connection","WebSocket","onmessage","origin","log","onopen","storage","empty_queue","disconnect","subscribe","channel","sub_channel","unsubscribe","subchannel","welcome","wsid","avatar_source","visitors","check_login","login","userCount","cnt","gazers","gazer","profile","reason","rejoined","avatars","joined","session_closed","chat-message","rooms","chatroom","docid","displayed","user","notifyUser","user_li","epos","outerWidth","time","unnotify","updateFiles","event_argv","addUser","removeUser","lost","tmo","user_info","users","rc","self","is_self","addUserFile","fli","data-file","removeUserFile","user_too","removeFile","count","splitter_id","splitters","current_splitter","get_position","settings","orientation","panel_1","panel_2","invisible","onDragStart","onDragEnd","onDrag","splitter","new_width","new_height","silent","sw","sw2","pw","outerHeight","isActive","not_null","paneInfo","pane","panes","second","flipdir","tile","resize_start","info","resize_save","percent","resizestart","rel","minheight","relto","sumh","splitContainer","factory","a0","isMsie","isBlankString","escapeRegExChars","isString","isNumber","isObject","isUndefined","isElement","isJQuery","toStr","collection","reverseArgs","every","some","mixin","getIdGenerator","counter","templatify","defer","debounce","func","wait","immediate","later","callNow","args","throttle","previous","remaining","tokenizers","whitespace","nonword","getObjTokenizer","tokenizer","keys","tokens","LruCache","maxSize","List","tail","Node","node","tailItem","size","moveToFront","PersistentStorage","override","prefix","ttlKey","keyMatcher","ls","LOCAL_STORAGE","_noop","encode","decode","gatherMatchingKeys","len","removeItem","_prefix","_ttlKey","isExpired","_safeSet","ttl","Transport","cancelled","lastReq","_send","transport","_get","limiter","_cache","sharedCache","pendingRequestsCount","pendingRequests","maxPendingRequests","setMaxPendingRequests","num","resetCache","_fingerprint","resp","fingerprint","onDeckRequestArgs","jqXhr","cancel","SearchIndex","datumTokenizer","queryTokenizer","identify","normalizeTokens","token","newNode","IDS","CHILDREN","array","seen","uniques","getIntersection","arrayA","arrayB","ai","bi","intersection","lenArrayA","lenArrayB","bootstrap","datums","trie","datum","chars","ch","ids","search","query","all","values","Prefetch","prepare","transform","thumbprint","cacheKey","_settings","store","fromCache","stored","fromNetwork","onError","onResponse","Remote","cancelLastRequest","oParser","parsePrefetch","callbackToDeferred","parseRemote","wildcard","rateLimitBy","rateLimitWait","toRemotePrepare","toLimiter","prepareByReplace","prepareByWildcard","idenityPrepare","onSuccess","deferred","sorter","initialize","sufficient","local","prefetch","Bloodhound","__ttAdapter","withAsync","sync","withoutAsync","_loadPrefetch","serialized","_initialize","addLocalToIndex","initPromise","force","processRemote","nonDuplicates","clearPrefetchCache","clearRemoteCache","ttAdapter","WWW","build","www","classes","defaultClassNames","buildCss","buildHtml","buildSelectors","wrapper","hint","borderColor","boxShadow","verticalAlign","inputWithNoHint","ltr","rtl","backgroundImage","dataset","selectable","cursor","highlight","EventBus","deprecationMap","render","cursorchange","_trigger","$e","deprecatedType","EventEmitter","types","bindContext","_callbacks","onAsync","onSync","callbacks","syncFlush","asyncFlush","getFlush","nextTick","flush","getNextTick","nextTickFn","setImmediate","getRegex","patterns","caseSensitive","wordsOnly","regexStr","escapedPatterns","pattern","hightlightTextNode","textNode","patternNode","wrapperNode","regex","splitText","traverse","childNode","TEXT_NODE_TYPE","Input","$hint","$input","queryWhenFocused","$overflowHelper","buildOverflowHelper","_checkLanguageDirection","setHint","getHint","clearHint","clearHintIfInvalid","whiteSpace","fontFamily","fontSize","fontStyle","fontVariant","wordSpacing","textIndent","textRendering","textTransform","areQueriesEquivalent","normalizeQuery","withModifier","specialKeyCodeMap","9","27","37","39","13","38","40","_onBlur","resetInputValue","_onFocus","_onKeydown","keyName","_managePreventDefault","_shouldTrigger","_onInput","_setQuery","getInputValue","areEquivalent","hasDifferentWhitespace","onBlur","onFocus","onKeydown","onInput","getLangDir","getQuery","setQuery","setInputValue","hasQueryChangedSinceLastFocus","valIsPrefixOfHint","isValid","hasOverflow","constraint","isCursorAtEnd","valueLength","selectionStart","range","selection","createRange","moveStart","Dataset","templates","notFound","isValidName","nameGenerator","displayFn","getDisplayFn","displayKey","getTemplates","_resetLastSuggestion","suggestionTemplate","pending","footer","extractData","_overwrite","suggestions","_renderSuggestions","_renderPending","_renderNotFound","_empty","_append","$lastSuggestion","_appendSuggestions","$fragment","_getSuggestionsFragment","_getHeader","_getFooter","fragment","_injectQuery","_query","update","syncCalled","rendered","canceled","isEmpty","Menu","initializeDataset","oDataset","$node","datasets","_onSelectableClick","_onRendered","_allDatasetsEmpty","_onCleared","_propagate","isDatasetEmpty","_getSelectables","_removeCursor","$selectable","getActiveSelectable","_ensureVisible","elTop","elBottom","nodeScrollTop","nodeHeight","onSelectableClick","isOpen","setLanguageDirection","selectableRelativeToCursor","delta","$selectables","$oldCursor","oldIndex","newIndex","setCursor","getSelectableData","getTopSelectable","updateDataset","isValidUpdate","clearDataset","destroyDataset","DefaultMenu","_show","_hide","Typeahead","onFocused","onBlurred","onEnterKeyed","onTabKeyed","onEscKeyed","onUpKeyed","onDownKeyed","onLeftKeyed","onRightKeyed","onQueryChanged","onWhitespaceChanged","eventBus","minLength","_hacks","_onSelectableClicked","_onAsyncRequested","_onAsyncCanceled","_onAsyncReceived","_onDatasetRendered","_onDatasetCleared","_onLangDirChanged","ctx","$menu","hasActive","_updateHint","_onFocused","_minLengthMet","_onBlurred","_onEnterKeyed","_onTabKeyed","_onEscKeyed","_onUpKeyed","moveCursor","_onDownKeyed","_onLeftKeyed","_onRightKeyed","_onQueryChanged","_onWhitespaceChanged","_openIfActive","escapedQuery","frontMatchRegEx","isEnabled","deactivate","$candidate","payload","cancelMove","ttEach","$els","typeahead","buildHintFromInput","getBackgroundStyles","spellcheck","prepInput","backgroundAttachment","backgroundOrigin","backgroundPosition","backgroundRepeat","backgroundSize","revert","$wrapper","$elOrNull","attach","defaultHint","defaultMenu","MenuConstructor","classNames","newVal","ret","contexts","registry","bloodHoundURL","fileTokenizer","renderFile","filetype","filebase","renderStoreSourceLine","hit","currentFile","alias","currentAlias","ext","renderSourceMatch","sourceLineTokenizer","renderSourceLine","predicateMatcher","ql","pl","templ","renderPredicate","mode","iso","summary","sourceMatcher","re","sourceRE","editor","line","renderUser","encodeURI","ttSources","sources","typeaheadProperties","files","swish_typeahead","storeContent","query_cache_length","store_content","predicates","of","showAllMatches","play","string","tabbed","tabTypes","wrapInTab","wrapped","glyphicon","genId","tabid","profileObject","profiles","newTab","prompt","clean","makeTabbed","create","newContentID","hr","tabFromSource","setSource","tabType","showTracePort","isPengineSrc","isStoreSrc","pengineID","editors","noHistory","addTab","removeTab","new_active","prologRunner","tabLabel","close_button","a1","data-id","anchor","chats","tabSelect","data-type","typeName","data-ext","typelabel","download","save","print","fileInfo","searchForm","sform","data-search-in","profileForm","def","pform","profileValue","navTabs","navTab","navContent","prolog","downloadCSV","infoBody","csv_formats","disposition","params","pengines","trimFullStop","application","opt","Pengine","CodeMirror","classTest","removeChildren","removeChildrenAndAdd","elt","eltP","activeElt","shadowRoot","current","joinClasses","as","copyObj","overwrite","countColumn","tabSize","startIndex","startValue","nextTab","findColumn","goal","skipped","min","spaceStr","spaceStrs","lst","out","insertSorted","score","priority","nothing","createObj","base","inst","isWordCharBasic","nonASCIISingleCaseWordChar","isWordChar","helper","isExtendingChar","extendingChars","skipExtendingChars","findFirst","mid","Display","place","scrollbarFiller","gutterFiller","lineDiv","selectionDiv","cursorDiv","measure","lineMeasure","lineSpace","lines","mover","sizer","sizerWidth","heightForcer","scrollerGap","gutters","lineGutter","scroller","ie","ie_version","webkit","gecko","mobile","draggable","viewFrom","viewTo","reportedViewFrom","reportedViewTo","renderedView","externalMeasured","viewOffset","lastWrapHeight","lastWrapWidth","updateLineNumbers","nativeBarWidth","barHeight","barWidth","scrollbarsClipped","lineNumWidth","lineNumInnerWidth","lineNumChars","alignWidgets","cachedCharWidth","cachedTextHeight","cachedPaddingH","maxLine","maxLineLength","maxLineChanged","wheelDX","wheelDY","wheelStartX","wheelStartY","selForContextMenu","activeTouch","getLine","sz","chunkSize","getBetween","iter","getLines","updateLineHeight","diff","lineNo","no","lineAtHeight","outer","i$1","lh","isLine","lineNumberFor","lineNumberFormatter","firstLineNumber","Pos","sticky","cmp","equalCursorPos","copyPos","maxPos","minPos","clipLine","clipPos","clipToLen","linelen","clipPosArray","seeReadOnlySpans","sawReadOnlySpans","seeCollapsedSpans","sawCollapsedSpans","MarkedSpan","marker","getMarkedSpanFor","spans","removeMarkedSpan","addMarkedSpan","markedSpans","attachLine","markedSpansBefore","startCh","isInsert","nw","startsBefore","inclusiveLeft","insertLeft","endsAfter","inclusiveRight","markedSpansAfter","endCh","stretchSpansOverChange","full","oldFirst","oldLast","sameLine","found","span$1","found$1","clearEmptySpans","newMarkers","gapMarkers","gap","i$2","i$3","clearWhenEmpty","removeReadOnlyRanges","markers","mark","readOnly","parts","mk","newParts","dfrom","dto","detachMarkedSpans","detachLine","attachMarkedSpans","extraLeft","extraRight","compareCollapsedMarkers","lenDiff","aPos","bPos","fromCmp","toCmp","collapsedSpanAtSide","sps","sp","collapsed","collapsedSpanAtStart","collapsedSpanAtEnd","conflictingCollapsedRange","lineNo$$1","visualLine","merged","visualLineEnd","visualLineContinued","visualLineNo","lineN","vis","visualLineEndNo","lastLine","lineIsHidden","widgetNode","lineIsHiddenInner","heightAtLine","lineObj","lineLength","findMaxLine","cm","iterateBidiSections","part","level","getBidiPartAt","bidiOther","getOrder","bidiOrdering","moveCharLogically","moveLogically","endOfLine","visually","moveInStorageOrder","prep","prepareMeasureForLine","targetTop","measureCharPrepared","moveVisually","bidi","partPos","mv","getWrappedLineExtent","lineWrapping","wrappedLineExtentChar","begin","wrappedLineExtent","searchInVisualLine","getRes","res","nextCh","getHandlers","emitter","_handlers","noHandlers","detachEvent","map$$1","signal","signalDOMEvent","e_defaultPrevented","codemirrorIgnore","signalCursorActivity","cursorActivity","curOp","cursorActivityHandlers","hasHandler","eventMixin","ctor","e_preventDefault","e_stopPropagation","e_stop","e_target","srcElement","e_button","mac","zeroWidthElement","zwspSupported","hasBadBidiRects","badBidiRects","txt","r0","r1","hasBadZoomedRects","badZoomedRects","normal","fromRange","defineMode","dependencies","modes","defineMIME","mime","spec","mimeModes","resolveMode","getMode","mfactory","modeObj","modeExtensions","exts","helperType","modeProps","prop$1","extendMode","properties","copyState","nstate","innerMode","startState","a2","highlightLine","forceToEnd","st","modeGen","lineClasses","runMode","loop","overlay","overlays","at","i_end","opaque","styles","bgClass","textClass","getLineStyles","updateFrontier","getStateBefore","maxHighlightLength","stateAfter","styleClasses","frontier","precise","findStartLine","processLine","startAt","stream","StringStream","callBlankLine","eol","readToken","blankLine","inner","takeToken","asArray","getObj","copy","extractLineClasses","lineClass","flattenSpans","curStart","curStyle","addModeClass","mName","minindent","minline","lim","indented","updateLine","estimateHeight","estHeight","cleanUpLine","interpretTokenStyle","styleToClassCacheWithMode","styleToClassCache","buildLineContent","lineView","builder","pre","trailingSpace","splitSpaces","getOption","rest","addToken","buildToken","buildTokenBadBidi","allowFrontierUpdate","insertLineContent","maps","caches","querySelector","defaultSpecialCharPlaceholder","startStyle","endStyle","displayText","specialChars","mustWrap","lastIndex","txt$1","tabWidth","specialCharPlaceholder","fullStyle","trailingBefore","spaceBefore","buildCollapsedSpan","ignoreWidget","widget","needsContentAttribute","setUneditable","allText","spanStyle","spanEndStyle","spanStartStyle","nextChange","foundBookmarks","endStyles","j$1","j$2","upto","tokenText","LineView","buildViewArray","nextPos","pushOperation","op","operationGroup","ops","ownsGroup","delayedCallbacks","fireCallbacksForOps","cursorActivityCalled","finishOperation","endCb","signalLater","orphanDelayedCallbacks","fireOrphanDelayed","delayed","updateLineForChanges","dims","changes","updateLineText","updateLineGutter","updateLineClasses","updateLineWidgets","ensureLineWrapped","updateLineBackground","background","getLineContent","built","wrapClass","gutter","gutterBackground","gutterClass","fixedGutter","fixedPos","gutterTotalWidth","gutterMarkers","lineNumbers","wrap$1","gutterWrap","lineNumber","gutterLeft","gutterWidth","alignable","insertLineWidgets","buildLineElement","insertLineWidgetsFor","allowAbove","handleMouseEvents","positionLineWidget","above","noHScroll","wrapperWidth","coverGutter","widgetHeight","parentStyle","eventInWidget","paddingTop","paddingVert","paddingH","currentStyle","scrollGap","displayWidth","displayHeight","ensureLineHeights","rect","wrapping","curWidth","heights","rects","mapFromLineView","updateExternalMeasurement","measureChar","bias","findViewForLine","findViewIndex","getDimensions","forceUpdate","hasHeights","prepared","varHeight","measureCharInner","bogus","rtop","rbottom","nodeAndOffsetInLineMap","mStart","mEnd","coverStart","coverEnd","getUsefulRect","nullRect","maybeUpdateRectForZooming","rSpan","charWidth","rbot","bot","singleCursorHeightPerLine","screen","logicalXDPI","deviceXDPI","scaleX","scaleY","logicalYDPI","deviceYDPI","clearLineMeasurementCacheFor","clearLineMeasurementCache","externalMeasure","clearCaches","pageScrollX","chrome","android","pageScrollY","marginTop","intoCoordSystem","includeWidgets","yOff","lOff","xOff","fromCoordSystem","coords","localBox","lineSpaceBox","charCoords","cursorCoords","preparedMeasure","getBidi","invert","other","estimateCoords","PosWithInfo","outside","xRel","coordsChar","coordsCharInner","mergedPos","assign","prevDiff","prevPos","beginLeft","textHeight","measureText","offsetLeft","compensateForHScroll","perLine","widgetsHeight","ceil","estimateLineHeights","est","posFromMouse","liberal","forRect","space","colDiff","updateSelection","showSelection","prepareSelection","primary","curFragment","cursors","selFragment","sel","ranges","primIndex","range$$1","showCursorWhenSelecting","drawSelectionCursor","drawSelectionRange","cursorHeight","otherCursor","rightSide","drawForLine","fromArg","toArg","lineLen","rightPos","leftPos","tmp","leftSide","sFrom","sTo","fromLine","toLine","singleVLine","leftEnd","rightStart","restartBlink","focused","blinker","cursorBlinkRate","ensureFocus","delayBlurEvent","delayingBlurEvent","receivedFocus","rmClass","alignHorizontally","comp","gutterW","align","maybeUpdateLineNumberWidth","innerW","updateGutterSpace","updateHeightsInViewport","prevBottom","updateWidgetHeight","visibleLines","ensure","ensureFrom","ensureTo","setScrollTop","updateDisplaySimple","scrollbars","startWorker","setScrollLeft","isScroller","scrollWidth","wheelEventDelta","dx","wheelDeltaX","dy","wheelDeltaY","axis","HORIZONTAL_AXIS","VERTICAL_AXIS","wheelDelta","wheelEventPixels","wheelPixelsPerUnit","onScrollWheel","canScrollX","canScrollY","currentWheelTarget","presto","pixels","wheelSamples","movedX","movedY","sample","measureForScrollbars","docH","viewHeight","viewWidth","barLeft","docHeight","updateScrollbars","startWidth","startHeight","updateScrollbarsInner","sizes","paddingBottom","borderBottom","coverGutterNextToScrollbar","initScrollbars","scrollbarModel","scrollbarStyle","maybeScrollWindow","innerHeight","phantom","scrollNode","scrollIntoView","scrollPosIntoView","changed","endCoords","scrollPos","calculateScrollPos","startTop","startLeft","snapMargin","screentop","docBottom","atTop","atBottom","newTop","screenleft","screenw","tooWide","addToScrollPos","resolveScrollToPos","ensureCursorVisible","getCursor","scrollToPos","cursorScrollMargin","sPos","startOperation","viewChanged","updateInput","typing","changeObjs","selectionChanged","updateMaxLine","nextOpId","endOperation","endOperations","endOperation_R1","endOperation_W1","endOperation_R2","endOperation_W2","i$4","endOperation_finish","maybeClipScrollbars","mustUpdate","DisplayUpdate","updatedDisplay","updateDisplayIfNeeded","barMeasure","adjustWidthTo","maxScrollLeft","preparedSelection","takeFocus","setDocumentHeight","postUpdateDisplay","forceScroll","maybeHiddenMarkers","unhidden","maybeUnhiddenMarkers","runInOp","operation","methodOp","docMethodOp","regChange","lendiff","resetView","cut","viewCuttingPoint","cut$1","cutTop","cutBot","regLineChange","oldN","newN","adjustView","countDirtyView","dirty","highlightWorker","workTime","changedLines","oldStyles","tooLong","highlighted","oldCls","newCls","ischange","workDelay","marginBottom","borderRightWidth","editorIsHidden","viewportMargin","different","wrapperHeight","toUpdate","patchDisplay","minHeight","oldDisplayWidth","updateNumbersFrom","rm","updateNumber","updateGutters","specs","gElt","setGuttersForLineNumbers","normalizeSelection","prim","inv","Range","Selection","simpleSelection","changeEnd","adjustForChange","computeSelAfterChange","offsetPos","computeReplacedSel","oldPrev","newPrev","loadMode","modeOption","resetModeState","isWholeLineUpdate","wholeLineUpdateBefore","updateDoc","estimateHeight$$1","spansFor","linesFor","Line","firstLine","lastText","lastSpans","nlines","insert","added","added$1","added$2","linkedDocs","sharedHistOnly","propagate","skip","sharedHist","linked","shared","attachDoc","setDirectionClass","directionChanged","History","startGen","undone","undoDepth","lastModTime","lastSelTime","lastOp","lastSelOp","lastOrigin","lastSelOrigin","generation","maxGeneration","historyChangeFromChange","histChange","attachLocalSpans","clearSelectionEvents","lastChangeEvent","hist","addChangeToHistory","selAfter","opId","historyEventDelay","pushSelectionToHistory","selectionEventCanBeMerged","somethingSelected","addSelectionToHistory","clearRedo","dest","equals","existing","removeClearedSpans","explicitlyCleared","getOldSpans","mergeOldSpans","stretched","oldCur","stretchCur","copyHistoryArray","newGroup","instantiateSel","deepCopy","newChanges","Number","extendRange","posBefore","extendSelection","setSelection","extendSelections","heads","newSel","replaceOneSelection","setSimpleSelection","filterSelectionChange","this$1","setSelectionReplaceHistory","setSelectionNoUndo","NaN","setSelectionInner","skipAtomicInSelection","reCheckSelection","sel_dontScroll","mayClear","newAnchor","skipAtomic","newHead","skipAtomicInner","oldPos","atomic","near","movePos","far","cantEdit","selectAll","filterChange","makeChange","ignoreReadOnly","suppressEdits","makeChangeInner","makeChangeSingleDoc","rebased","rebaseHist","makeChangeFromHistory","allowSelectionOnly","antiChanges","returned","shiftDoc","distance","removed","makeChangeSingleDocInEditor","recomputeMaxLength","checkWidthStart","changesHandler","changeHandler","replaceRange","splitLines","rebaseHistSelSingle","rebaseHistArray","sub","ok","copied","changeLine","changeType","adjustScrollWhenAboveVisible","addLineWidget","LineWidget","insertAt","aboveVisible","markText","markTextShared","TextMarker","replacedWith","addToHistory","curLine","clearOnEnter","clearHistory","nextMarkerId","isParent","SharedTextMarker","findSharedMarkers","findMarks","copySharedMarkers","mFrom","mTo","subMark","detachSharedMarkers","subMarker","onDrop","clearDragCursor","lastDrop","dataTransfer","isReadOnly","FileReader","File","read","loadFile","allowDropFileTypes","reader","lineSeparator","readAsText","draggingText","text$1","getData","listSelections","replaceSelection","setData","getSelection","effectAllowed","setDragImage","safari","_top","onDragOver","frag","dragCursor","forEachCodeMirror","byClass","ensureGlobalHandlers","globalsRegistered","registerGlobalHandlers","resizeTimer","onResize","setSize","normalizeKeyName","alt","ctrl","cmd","mod","normalizeKeyMap","keymap","keyname","lookupKey","getKeyMap","fallthrough","isModifierKey","keyNames","noShift","altGraphKey","flipCtrlCmd","keyMap","deleteNearSelection","compute","kill","toKill","replaced","lineStart","visual","lineEnd","lineStartSmart","firstNonWS","inWS","doHandleBinding","bound","dropShift","commands","ensurePolled","prevShift","Pass","lookupKeyForEditor","keyMaps","extraKeys","dispatchKey","seq","keySeq","stopSeq","handleKeyBinding","motion","handleCharBinding","onKeyDown","handled","lastStoppedKey","hasCopyEvent","showCrossHair","up","onKeyUp","onKeyPress","onMouseDown","supportsTouch","clickInGutter","selectingText","leftButtonDown","lastMiddleDown","captureRightClick","onContextMenu","lastDoubleClick","lastClick","contained","modifier","dragDrop","dragAndDrop","leftButtonStartDrag","leftButtonSelect","moved","dragEnd","mouseMove","dragStart","e2","addNew","extendTo","lastPos","startCol","posCol","startSel","ourIndex","oldRange","ourRange","findWordAt","ranges$1","sel_mouse","curCount","editorSize","move","chromeOS","word","gutterEvent","prevent","mX","mY","lineBox","contextMenuInGutter","themeChanged","theme","defineOptions","deflt","notOnInit","optionHandlers","Init","defineOption","setValue","lineSep","newBreaks","getInputField","windows","guttersChanged","wrappingChanged","integer","readOnlyChanged","dragDropChanged","resetPosition","getField","setDirection","wasOn","funcs","dragFunctions","over","drop","CodeMirror$1","Doc","inputStyles","inputStyle","pasteIncoming","cutIncoming","Delayed","autofocus","registerEventHandlers","finishInit","initHooks","finishTouch","touchFinished","prevTouch","isMouseLikeTouchEvent","touch","radiusX","radiusY","farAway","inp","indentLine","how","aggressive","indent","curSpace","indentation","curSpaceString","indentUnit","indentString","indentWithTabs","pos$1","setLastCopied","newLastCopied","lastCopied","applyTextInput","inserted","deleted","paste","textLines","splitLinesAuto","multiPaste","lineWise","changeEvent","triggerElectric","handlePaste","pasted","clipboardData","disableInput","electricChars","smartIndent","getModeAt","electricInput","copyableRanges","lineRange","getRange","disableBrowserMagic","hiddenTextarea","te","ios","findPosH","findNextLine","moveOnce","boundToLine","origDir","sawType","getHelper","hitSide","findPosV","pageSize","moveAmount","posToDOM","side","isInGutter","scan","badPos","bad","domTextBetween","recognizeMarker","closing","addText","walk","cmText","markerID","isBlock","domToPos","lineNode","locateNodeInLineView","topNode","curNode","dist","previousSibling","dist$1","fromTextArea","getValue","realSubmit","leaveSubmitMethodAlone","wrappedSubmit","getTextArea","toTextArea","getWrapperElement","addLegacyProps","cmpPos","platform","ie_upto10","ie_11up","edge","documentMode","qtwebkit","vendor","mac_geMountainLion","presto_version","endNode","setEnd","setStart","createTextRange","moveToElementText","moveEnd","selectInput","selectionEnd","_e","ms","sel_move","charType","lowTypes","arabicTypes","BidiSpan","bidiRE","isNeutral","isStrong","countsAsLeft","countsAsNum","outerType","type$1","prev$1","type$2","type$3","i$5","cur$1","type$4","i$6","end$1","replace$1","i$7","nstart","nl","rt","hasSelection","parentElement","compareEndPoints","oncopy","lastColumnPos","lastColumnValue","sol","peek","eat","eatWhile","eatSpace","skipToEnd","skipTo","backUp","column","consume","caseInsensitive","cased","hideFirstChars","NativeScrollbars","vert","horiz","checkedZeroWidth","needsH","needsV","sWidth","totalHeight","totalWidth","zeroWidthHack","disableHoriz","enableZeroWidthBar","disableVert","pointerEvents","bar","maybeDisable","elt$$1","elementFromPoint","NullScrollbars","native","null","here","there","LeafChunk","removeInner","insertInner","iterN","BranchChunk","oldHeight","leaf","maybeSpill","me","spilled","sibling","myIndex","used","oldH","withOp","dHeight","nextDocId","cleanGeneration","getLineHandle","getLineNumber","getLineHandleVisualStart","lineCount","extendSelectionsBy","setSelections","addSelection","getSelections","dup","replaceSelections","undo","redo","undoSelection","redoSelection","setExtending","getExtending","historySize","markClean","changeGeneration","forceSplit","isClean","gen","getHistory","setHistory","histData","setGutterMarker","gutterID","clearGutter","lineInfo","addLineClass","where","removeLineClass","removeLineWidget","setBookmark","realOpts","findMarksAt","getAllMarks","posFromIndex","sepSize","indexFromPos","copyHistory","linkedDoc","unlinkDoc","link","splitIds","iterLinkedDocs","getEditor","eachLine","3","8","16","17","18","19","20","32","33","34","35","36","44","45","46","59","61","91","92","93","106","107","109","110","111","127","173","186","187","188","189","190","191","192","219","220","221","222","63232","63233","63234","63235","63272","63273","63275","63276","63277","63302","basic","Left","Right","Up","Down","End","Home","PageUp","PageDown","Delete","Backspace","Shift-Backspace","Tab","Shift-Tab","Enter","Insert","Esc","pcDefault","Ctrl-A","Ctrl-D","Ctrl-Z","Shift-Ctrl-Z","Ctrl-Y","Ctrl-Home","Ctrl-End","Ctrl-Up","Ctrl-Down","Ctrl-Left","Ctrl-Right","Alt-Left","Alt-Right","Ctrl-Backspace","Ctrl-Delete","Ctrl-S","Ctrl-F","Ctrl-G","Shift-Ctrl-G","Shift-Ctrl-F","Shift-Ctrl-R","Ctrl-[","Ctrl-]","Ctrl-U","Shift-Ctrl-U","Alt-U","emacsy","Ctrl-B","Ctrl-P","Ctrl-N","Alt-F","Alt-B","Ctrl-E","Ctrl-V","Shift-Ctrl-V","Ctrl-H","Alt-D","Alt-Backspace","Ctrl-K","Ctrl-T","Ctrl-O","macDefault","Cmd-A","Cmd-D","Cmd-Z","Shift-Cmd-Z","Cmd-Y","Cmd-Home","Cmd-Up","Cmd-End","Cmd-Down","Cmd-Left","Cmd-Right","Ctrl-Alt-Backspace","Alt-Delete","Cmd-S","Cmd-F","Cmd-G","Shift-Cmd-G","Cmd-Alt-F","Shift-Cmd-Alt-F","Cmd-[","Cmd-]","Cmd-Backspace","Cmd-Delete","Cmd-U","Shift-Cmd-U","singleSelection","killLine","deleteLine","delLineLeft","delWrappedLineLeft","delWrappedLineRight","goDocStart","goDocEnd","goLineStart","goLineStartSmart","goLineEnd","goLineRight","goLineLeft","goLineLeftSmart","goLineUp","moveV","goLineDown","goPageUp","goPageDown","goCharLeft","moveH","goCharRight","goColumnLeft","goColumnRight","goWordLeft","goGroupRight","goGroupLeft","goWordRight","delCharBefore","deleteH","delCharAfter","delWordBefore","delWordAfter","delGroupBefore","delGroupAfter","indentAuto","indentSelection","indentMore","indentLess","insertTab","insertSoftTab","spaces","defaultTab","execCommand","transposeChars","newlineAndIndent","sels","openLine","toggleOverwrite","defineInitHook","addEditorMethods","helpers","setOption","getDoc","addKeyMap","removeKeyMap","addOverlay","modeSpec","removeOverlay","newRanges","getTokenAt","getLineTokens","getTokenTypeAt","getHelpers","_global","getStateAfter","defaultTextHeight","defaultCharWidth","getViewport","addWidget","triggerOnKeyDown","triggerOnKeyPress","triggerOnKeyUp","amount","rtlMoveVisually","goalColumn","goals","headPos","startChar","check","getScrollInfo","interpret","swapDoc","getScrollerElement","getGutterElement","registerHelper","registerGlobalHelper","predicate","ContentEditableInput","lastAnchorNode","lastAnchorOffset","lastFocusNode","lastFocusOffset","polling","composing","gracePeriod","readDOMTimeout","onCopyCut","lineWiseCopyCut","clearData","kludge","hadFocus","showPrimarySelection","updateFromDOM","readFromDOMSoon","forceCompositionEnd","showMultipleSelections","removeAllRanges","curAnchor","anchorNode","anchorOffset","curFocus","focusNode","focusOffset","rng","rangeCount","getRangeAt","addRange","startGracePeriod","rememberSelection","selectionInEditor","commonAncestorContainer","poll","pollSelection","pollInterval","pollContent","fromIndex","fromNode","toNode","toIndex","newText","oldText","cutFront","cutEnd","oldTop","maxCutFront","newBot","oldBot","maxCutEnd","chFrom","chTo","contentEditable","TextareaInput","prevInput","pollingFast","inaccurateSelection","prepareCopyCut","fastPoll","moveInputWithCursor","wrapOff","lineOff","teTop","teLeft","drawn","contextMenuPending","minimal","slowPoll","missed","same","prepareSelectAllHack","extval","rehide","oldWrapperCSS","oldCSS","detectingSelectAll","resetSelectionOnContextMenu","wrapperBox","oldScrollY","scrollY","mouseup","dontDelegate","contenteditable","defineExtension","defineDocExtension","version","answerHasOutput","answer","variables","residuals","renderSubstitutions","substs","var","renderAnswer","substitutions","renderTabledAnswer","table","findBinding","ensureResidualColumn","vname","binding","evalScripts","ajaxScript","eval","row","renderMulti","prologAnswer","selectMenu","hovering","startMenuTimeout","resetHover","closeSelectMenu","dt","downloadButton","showSelect","hideSelect","selectElementText","selectNodeContents","aSupportsDownload","outerHTML","extension","svg","prologText","sparkline","createClass","SPFormat","clipval","quartile","normalizeValue","normalizeValues","sum","addCSS","ensureArray","formatNumber","RangeMap","MouseHandler","Tooltip","barHighlightMixin","tristate","discrete","bullet","pie","defaultStyles","initStyles","VShape","VCanvas_base","VCanvas_canvas","VCanvas_vml","UNSET_OPTION","shapeCount","common","lineColor","fillColor","defaultPixelsPerValue","composite","tagValuesAttribute","tagOptionsPrefix","enableTagOptions","enableHighlight","highlightLighten","tooltipSkipNull","tooltipPrefix","tooltipSuffix","disableHiddenCheck","numberFormatter","numberDigitGroupCount","numberDigitGroupSep","numberDecimalMark","disableTooltips","disableInteraction","spotColor","highlightSpotColor","highlightLineColor","spotRadius","minSpotColor","maxSpotColor","lineWidth","normalRangeMin","normalRangeMax","normalRangeColor","drawNormalOnTop","chartRangeMin","chartRangeMax","chartRangeMinX","chartRangeMaxX","tooltipFormat","barColor","negBarColor","stackedBarColor","zeroColor","nullColor","zeroAxis","barSpacing","chartRangeClip","colorMap","posBarColor","zeroBarColor","tooltipValueLookups","-1","1","thresholdColor","thresholdValue","targetColor","targetWidth","performanceColor","rangeColors","sliceColors","borderWidth","raw","boxLineColor","boxFillColor","whiskerColor","outlierLineColor","outlierFillColor","medianColor","showOutliers","outlierIQR","tooltipFormatFieldlistKey","lq","med","uq","lo","ro","lw","rw","Class","_super","SPFormatClass","fre","precre","fclass","fieldset","lookups","lookupkey","fieldvalue","prec","lookup","spformat","vl","nf","vals","groupsize","groupsep","decsep","ignoreNull","total","createStyleSheet","WebkitAppearance","simpledraw","useExisting","interact","mhandler","canvas","getContext","namespaces","registerCanvas","cleardraw","RangeMapClass","rangelist","range_map","currentPageX","currentPageY","splist","displayTooltips","highlightEnabled","registerSparkline","updateDisplay","$canvas","mouseclick","removeTooltip","clickEvent","sparklines","mousemove","currentEl","updatePosition","spcount","needsRefresh","clearRegionHighlight","tooltiphtml","localX","localY","setRegionHighlight","getCurrentRegionTooltip","disableHighlight","sizeStyle","tooltipClassname","sizetipStyle","tooltipOffsetX","tooltipOffsetY","sizetip","updateWindowDims","scrollRight","getSize","mousex","mousey","userValues","userOptions","$this","sparkline_display_visible","extendedOptions","tagOptionType","tagValCache","getTagSetting","mergedOptions","pairs","keyval","defaultval","tagOption","_base","currentRegion","initTarget","interactive","canvasWidth","pixelWidth","canvasHeight","pixelHeight","getRegion","newRegion","removeHighlight","renderHighlight","changeHighlight","formats","formatlen","showFields","showFieldsKey","newFields","fv","formatter","fieldlen","entries","getCurrentRegionFields","isNull","suffix","calcHighlightColor","color","mult","rgbnew","highlightColor","lighten","newShapes","shapeids","regionShapes","renderRegion","replaceWithShapes","newShape","replaceWithShape","shapes","vertices","regionMap","xvalues","yvalues","yminmax","hightlightSpotId","lastShapeId","highlightSpot","vertex","drawCircle","highlightSpotId","insertAfterShape","drawLine","canvasTop","highlightLineId","removeShapeId","scanValues","isStr","valcount","maxy","maxyorg","miny","minyorg","maxx","minx","processRangeOptions","drawNormalRange","canvasLeft","rangey","ytop","drawRect","rangex","yvallast","path","paths","xnext","xpos","xposnext","yvalcount","lineShapes","fillShapes","plen","valueSpots","hlSpotsEnabled","drawShape","getLastShapeId","isStackString","groupMin","groupMax","stackRanges","numValues","vlen","xaxisOffset","clipMin","clipMax","stacked","vlist","slen","svals","yoffset","yMaxCalc","stackMin","stackMax","totalBarWidth","stackTotals","stackRangesNeg","canvasHeightEf","colorMapByIndex","colorMapByValue","calcColor","stacknum","valuenum","newColor","yoffsetNeg","minPlotted","allMin","halfHeight","itemWidth","pheight","valueShapes","regiondata","shapeid","getShapeAt","fieldkey","region","shape","renderRange","renderPerformance","renderTarget","rn","rangeval","rangewidth","perfval","perfwidth","targetval","targettop","targetheight","p1","t0","radius","newslice","renderSlice","circle","drawPieSlice","quartiles","loutlier","routlier","lwhisker","rwhisker","iqr","q1","q2","q3","unitSize","minValue","maxValue","appendShape","_pxregex","x1","y1","x2","y2","_genShape","startAngle","endAngle","getElement","_insert","_calculatePixelDims","shapetype","shapeargs","shapeseq","currentTargetShapeId","_getContext","strokeStyle","fillStyle","clearRect","_drawShape","beginPath","moveTo","lineTo","stroke","fill","targetX","targetY","isPointInPath","_drawCircle","arc","_drawPieSlice","closePath","_drawRect","sid","shapemap","groupel","insertAdjacentHTML","prerender","initial","closed","vel","vpath","startx","starty","endx","endy","sin","content_type","chs","downloader","glyphButton","runnerMenu","Collapse all","Expand all","Stop all","Clear","prologRunners","stretch","iconifyLast","runner","jrunner","alive","toggleIconic","scrollToBottom","onlydown","room","RS","addAnswer","results","aliveState","answerTable","tds","runScripts","scripts","my_node","breakpoints","registerSources","pengine","handleCreate","bps","resvar","residuals_var","ask","termNoFullStop","handleSuccess","more","handleFailure","handleStop","handlePrompt","wait_for","clickableLocations","matched","gotoError","econtext","handleOutput","clickableError","loc","error_context","error_handler","handleError","handleAbort","handlePing","keyBindings","65","112","titleBarButton","stateButton","controllerDiv","next10","next100","next1000","statusChart","spark","tabled","qspan","savedFocus","answers","server","oncreate","onsuccess","onfailure","onstop","onprompt","onoutput","onping","ping","outputHTML","syntaxError","query_editor","trace","capitalizeFirstLetter","respond","depth","port","exception","setPrompt","receiver","request","fdata","stopOrAbort","runners","populateActionMenu","Re-run","stateful","stats","toBytes","numberWithCommas","bytes","pow","stacks","colors","names","usage","trail","log10","tooltipChartTitle","node_id","unique_id","diffMeta","m1","m2","diffAttr","diffTags","reduceMeta","t1","t2","tabs","commits","commit","henabled","Boolean","symbolic","showMetaData","metaData","newMetaData","showHistory","playButton","data-click-to-select","data-single-select","web_storage","fillHistoryTable","changedAttributes","data-commit","setCommit","showDiff","fillDiff","addTag","udiffData","classmap","@","-","br","__whitespace","\t","\n","\f","\r","difflib","defaultJunkFunction","stripLinebreaks","stringAsLines","lfpos","crpos","linebreak","__reduce","__ntuplecomp","mlen","__calculate_ratio","__isindict","dict","__dictget","SequenceMatcher","isjunk","set_seqs","set_seq1","set_seq2","matching_blocks","opcodes","fullbcount","__chain_b","b2j","populardict","indices","junkdict","isbjunk","isbpopular","find_longest_match","alo","ahi","blo","bhi","besti","bestj","bestsize","j2len","newj2len","jdict","jkey","get_matching_blocks","qi","i2","j2","k2","i1","j1","k1","block","non_adjacent","get_opcodes","bj","blocks","get_grouped_opcodes","codes","nn","groups","ratio","triple","quick_ratio","avail","availhas","numb","real_quick_ratio","_calculate_ratio","diffview","buildView","celt","clazz","telt","ctelt","addCells","tidx","tend","addCellsInline","tidx2","baseTextLines","newTextLines","baseTextName","newTextName","contextSize","inline","viewType","tdata","node2","rows","be","ne","rowcnt","toprows","botrows","jump","newtxt","sm","baseName","headName","basename","udiff","editConflicts","addLine","filesysInfo","last_modified","modified_since_loaded","loaded","errorString","is_clean","onStorage","changeGen","cleanCheckpoint","update_tab_title","reload","what","default","textStatus","errorThrown","saveAs","saveAsBody","display_name","saveURL","resolveEditConflict","tabContent","bdiv","merge-my-edits","edit","merge-server-edits","merge-conflicts","patch_status","editConflictAction","copyMeta","modified","expose","new","selections","notebook","getSelectionLabel","editorLabel","ed","restoreSelection","percentage","close_chat","chat_message","follow_file_options","unload","why","confirm","chat_status","opened","Sha1","sharedMemory","h0","h3","h4","finalized","hashed","NODE_JS","JS_SHA1_NO_NODE_JS","versions","COMMON_JS","JS_SHA1_NO_COMMON_JS","AMD","HEX_CHARS","EXTRA","SHIFT","OUTPUT_TYPES","createOutputMethod","outputType","createMethod","nodeWrap","crypto","Buffer","nodeMethod","createHash","digest","ArrayBuffer","Uint8Array","notString","lastByteIndex","finalize","hex","arrayBuffer","buffer","dataView","DataView","setUint32","sha1","data-action","imageButton","glyphButtonGlyph","sep","Notebook","my_cell","cellTypes","program","markdown","currentCell","stringifyNotebookDOM","orderAttrs","nest","is_cell","clipboard","notebookMenu","Delete cell","Copy cell","Paste cell","Move cell up","Move cell down","Insert cell","--","Exit fullscreen","copyData","toolbar","focusout","eds","aeds","nc","prefs","fullscreen","delete","cells","restore","down","insertAbove","insertBelow","if_visible","chat_container","cellType","checkModified","clean_signalled","removeNotForQuery","viewrect","seltop","selbottom","cbottom","setupStorage","cgen","skipEmpty","assignCellNames","updatePlaceHolder","placeHolder","cellText","fileInsertInput","theFile","typeMore","typeLess","less","assignName","runTabled","getSettings","querySettingsBody","singleline","program_cells","programs","saveDOM","restoreDOM","domCellType","setAttr","autoCurrent","getSource","wrapSolution","sourceID","Aggregate (count all)","Projection","Order by","Distinct","Limit","---","Download answers as CSV","markdownText","makeEditable","setHTML","htmlText","eval_script","runHTML","pretext","copyAttr","copyClassAttr","isDefault","getAttr","addClassAttr","addData","addAttr","pcells","formsel","appendDropdown","accell","preference","pref","submenu","items","dropDownUL","clickNotSubMenu","clickSubMenu","grandparent","navbar","ul1","ul2","populateDropdown","clearDropdown","extendDropdown","DEBUG","topic","TemplateState","marked","selectableMarkers","varIndex","isNested","_templateStack","Template","varTemplates","_tokens","parseTemplate","varParsing","addChar","line_selection","variable","getMarkerChanged","textChanged","_templateVar","onChange","_templateState","updating","markerChanged","uninstall","posChanged","newContent","onEndCompletion","selectNextVariable","exitOnEnd","exit","hintValue","samePos","p2","_hintTemplateMarker","cursorPos","canceledMarker","ourMap","templatesMap","templatesHint","Ctrl-Space","_content","subTemplate","tvar","nested","startLine","_templates","targetLine","getCompletions","completions","completion","addTemplates","forEach","TemplatesHint","PrologHint","modeToTemplate","varp","detp","metav","vt","hintsFor","myTemplates","symbol","anyword","anyhint","getHints","callback","attachContextInfo","tokenPosition","cmConfig","parserConfig","chain","readDigits","readEsc","isSingleEscChar","unicodeEscape","isHexDigit","isOctalDigit","nextUntilUnescaped","nesting","multiLineQuoted","setArg1","goalStart","setArgAlignment","alignment","leftCol","nextArg","isControl","inBody","tp","cont","peekSpace","plTokenBase","lastType","functor","functorName","functorColumn","closeColumn","tagColumn","plTokenComment","isSoloChar","commaAtEOL","quasiQuotations","plTokenQuasiQuotation","plTokenString","groupedIntegers","isSymbolChar","atom","isNeck","isControlOp","dicts","sec","quote","quoteType","maybeEnd","\"","'","`","curTerm","curToken","metainfo","enrich","textAfter","blockCommentStart","blockCommentEnd","blockCommentContinue","lineComment","prologStartIfThenElse","prologStartThen","prologStartElse","'('","'>'","';'","Ctrl-L","prologFireQuery","endl","endc","Ctrl-Enter","State","DEFAULT_DELAY","generationFromServer","changeEditor","prologHighlightServer","askRefresh","serverAssistedHighlight","leaveEditor","uuid","generateUUID","enrichStyle","serverToken","outOfSync","okToken","okTerm","skippedTerms","skippedTokens","reSync","oos","matchTokenText","isQuoted","matchToken","syncOnType","serverSync","serverStyle","syntax_error","USE_CHANGES_IF_LONGER_THEN","leaveCM","modeOptions","refreshHighlight","qatom","bqstring","number","neg-number","pos-number","list_open","list_close","qq_open","qq_sep","qq_close","dict_open","dict_close","brace_term_open","brace_term_close","neck","fullstop","singleton","uatom","control","op_type","int","ext_quant","expanded","comment_string","identifier","delimiter","head_exported","head_public","head_extern","head_dynamic","head_multifile","head_unreferenced","head_hook","head_meta","head_constraint","head_imported","head_built_in","head_iso","head_def_iso","head_def_swi","goal_built_in","goal_imported","goal_autoload","goal_global","goal_undefined","goal_thread_local","goal_dynamic","goal_multifile","goal_expanded","goal_extern","goal_recursion","goal_meta","goal_foreign","goal_local","goal_constraint","goal_not_callable","xpce_method","xpce_class_builtin","xpce_class_lib","xpce_class_user","xpce_class_undef","option_name","no_option_name","flag_name","no_flag_name","file_no_depends","nofile","qq_type","string_terminal","entity","html_attribute","sgml_attr_function","http_location_for_id","http_no_location_for_id","getEnrichedToken","terminfo","tokenInfo","getTokenReferences","setFile","htmlConfig","autoSelfClosers","area","command","embed","frame","keygen","track","wbr","menuitem","implicitlyClosed","dd","rp","contextGrabbers","address","article","aside","blockquote","dl","h5","h6","hgroup","nav","ol","section","doNotIndent","allowUnquoted","allowMissing","caseFold","xmlConfig","editorConf","config_","inText","parser","inBlock","doctype","inTag","baseState","tagStart","inAttribute","stringStartCol","closure","isInAttribute","terminator","Context","startOfLine","noIndent","popContext","maybePopContext","nextTagName","parentTagName","tagNameState","closeTagNameState","setStyle","attrState","matchClosing","closeState","closeStateErr","_stream","attrEqState","attrValueState","attrContinuedState","htmlMode","isInText","baseIndent","fullLine","multilineTagIndentPastTag","multilineTagIndentFactor","alignCDATA","tagAfter","grabbers","configuration","skipAttribute","modeInfo","mimes","findModeByMIME","findModeByExtension","findModeByFileName","dot","findModeByName","cmCfg","modeCfg","switchInline","switchBlock","lineIsEmpty","linkTitle","em","strong","strikethrough","indentedCode","htmlBlock","inlineNormal","blockNormal","trailingSpaceNewLine","prevLine","thisLine","prevLineIsList","prevLineIsIndentedCode","indentationDiff","tokenTypes","atxHeaderRE","highlightFormatting","formatting","getType","setextHeaderRE","footnoteLink","hrRE","listRE","listType","listStack","taskLists","taskListRE","taskList","fencedCodeBlocks","fencedCodeRE","fencedChars","localMode","localState","htmlState","htmlModeMissing","md_inside","returnType","maxBlockquoteDepth","taskOpen","taskClosed","linkHref","linkText","imageAltText","imageMarker","listMod","list2","list3","list1","handleText","textRE","matchCh","previousFormatting","formattingEscape","linkInline","linkEmail","atts","leftFlanking","punctuation","rightFlanking","setEm","setStrong","getLinkHrefInside","endChar","returnState","linkRE","footnoteLinkInside","footnoteUrl","tokenTypeOverrides","tokenType","allowAtxHeaderWithoutSpace",")","]","forceBlankLine","closeBrackets","fold","findMatchingBracket","strict","matching","scanForBracket","forward","maxScanLen","maxScanLineLength","maxScanLines","bracketRegex","matchBrackets","autoclear","maxHighlightLen","maxHighlightLineLength","marks","ie_lt8","doMatchBrackets","currentlyHighlighted","(","[","{","}","continueComment","inserts","modeHere","continueLineCommentEnabled","continueLineComment","nonWS","probablyInsideString","useInnerComments","noOptions","toggleComment","minLine","uncomment","commentString","fullLines","blockComment","pad","blankLines","commentBlankLines","baseString","startString","endString","lastLineHasText","blockCommentLead","didSomething","lineString","endPos","endLine","insideStart","insideEnd","lastStart","firstEnd","almostLastStart","openEnd","foundEnd","Completion","startPos","startLen","activityFunc","isNewCompletion","parseOptions","hintOptions","defaultOptions","buildKeyMap","addBinding","baseMap","moveFocus","menuSize","setFocus","pick","custom","customKeys","extra","getHintElement","hintsElement","Widget","picked","hints","selectedHint","HINT_ELEMENT_CLASS","ACTIVE_HINT_ELEMENT_CLASS","hintId","alignWithWord","below","winW","winH","overlapY","scrolls","startScroll","curTop","overlapX","avoidWrap","changeActive","screenAmount","closeOnUnfocus","closingOnBlur","onScroll","curScroll","point","completeOnSingleClick","applicableHelpers","supportsSelection","fetchHints","resolveAutoHints","words","resolved","app","fromList","showHint","newOpts","completionActive","cancelAnimationFrame","closeCharacters","myTick","finishUpdate","completeSingle","auto","WORD","RANGE","curWord","clearPlaceholder","setPlaceholder","modespec","ie_lt9","SearchCursor","atOccurrence","ignoreCase","cutOff","newMatch","matchLen","origQuery","orig","adjustPos","origTarget","ln","folded","pos1","len1","findNext","findPrevious","savePosAndFail","getSearchCursor","dialogDiv","dialog","closeNotification","currentNotificationClose","onClose","selectValueOnOpen","closeOnEnter","closeOnBlur","blurring","doneTimer","searchOverlay","SearchState","posFrom","posTo","lastQuery","getSearchState","queryCaseInsensitive","persistentDialog","onEnter","openDialog","clearSearch","shortText","confirmDialog","fs","openConfirm","parseString","parseQuery","isRE","startSearch","queryText","showMatchesOnScrollbar","annotate","doSearch","rev","hiding","searchNext","queryDialog","dialogText","replaceQueryDialog","replacementQueryDialog","advance","doReplaceConfirm","doReplace","findPersistent","findPersistentNext","findPersistentPrev","findPrev","interpretLine","jumpDialog","jumpToLine","posStr","showTooltip","tt","hideTooltip","showTooltipFor","HOVER_CLASS","TextHoverState","onMouseOver","onMouseOverWithDelay","Function","getTextHover","textHover","newE","getTokenAndPosAt","optionHandler","nearby","predName","addFileTranslation","pathTranslations","localDef","tokenHelp","unused_import","undefined_import","expected","instantiation_error","comment","operator","et","contextInfo","information","showContextInfo","showHints","posEq","addToRing","killRing","growRingTop","getFromRing","popFromRing","mayGrow","lastKill","byChar","byWord","byLine","byPage","byParagraph","sawText","fst","hasText","bySentence","sawWord","byExpr","newPos","getPrefix","digits","emacsPrefix","clearPrefix","repeated","findEnd","by","killTo","killRegion","addPrefix","digit","maybeClearPrefix","maybeDuplicateInput","emacsPrefixMap","prefixPreservingKeys","addPrefixMap","prefixMap","maybeRemovePrefixMap","setMark","clearMark","getInput","operateOnWord","toEnclosingExpr","quit","regPrefix","Alt-G","Ctrl-X","Ctrl-Q","emacs","Ctrl-W","Alt-W","Alt-Y","Ctrl-Shift-2","Alt-V","Alt-A","Alt-E","Alt-K","Ctrl-Alt-K","Ctrl-Alt-F","Ctrl-Alt-B","Shift-Ctrl-Alt-2","Ctrl-Alt-T","leftStart","rightEnd","Ctrl-Alt-U","Alt-Space","Alt-C","letter","Alt-L","Alt-;","Ctrl-/","Shift-Ctrl--","Shift-Alt-,","Shift-Alt-.","Ctrl-R","Shift-Alt-5","Alt-/","Ctrl-J","Alt-G G","Ctrl-X Tab","Ctrl-X Ctrl-X","Ctrl-X Ctrl-S","Ctrl-X Ctrl-W","Ctrl-X S","Ctrl-X F","Ctrl-X U","Ctrl-X K","Ctrl-X Delete","Ctrl-X H","Ctrl-Q Tab","templateHint","loadStyleExtensions","sname","lastEditor","modeDefaults","prologKeys","roleDefaults","moveLongClick","lc","long_click","sqrt","cancelLongClick","cm_highlight","continueComments","traceMark","makeMarker","setKeybinding","schema","isPengineSource","storageData","getBreakpoints","direct","mysrc","getSourceEx","stdoc","getSourceID","makeCurrent","setIsClean","printWithIframe","highlightError","chmark","clearMessages","isMyFile","charOffsetToPos","cmploc","l1","l2","cppos","esel","cell_name","sr","restoreEditorSelection","findsel","contextMatch","l0","stringMatch","choff","cml","poff","goffset","soff","toff","cmsel","loffset","findEditor","getExamples","inComment","comments","exlist","exl","ex","addExample","gotoLine","clearSearchMarkers","_searchMarkers","markMatches","myHeight","vp","contextAction","data-locindex","coord","queryEditor","anon","addVars","wrapQuery","prefixQuery","tab_types","editDefaults","charno","cm_style","cm_hover_style","dropup","examplesButton","updateExamples","examples","mousedown","historyButton","aggregateButton","aggregates","runButton","tableSelected","tableCheckbox","tabled_results","maxHistoryLength","qediv","prologQuery","setProgramEditor","bg","getProgramEditor","setExamples","sameExamples","exs","ex0","addHistory","findInHistory","cleanGen","unfold","DEFAULT_USER_FIELDS","clearAuthenticationCache","page","oncomplete","agt","xmlhttp","createXMLObject","ActiveXObject","openPopup","uri","closeCallback","Logout","Profile","logged_in","swish_profile_url","user_profile","get_profile","set_from_chat","chat_key","given_name","family_name","nick_name","external_identity","identity_provider","logout","logout_url","auth_method","http_logout","sourceToolTip","ago","delim","aria-haspopup","aria-expanded","Include my query","Broadcast to help room","has_payload","muser","suser","profile_id","data-userid","payload_handlers","load_from_server","ifempty","chat_messages","messages","update_time","diffBody","conv","qe","dif","nwe","about","d3_documentElement","d3_window","d3_ascending","d3_number","d3_numeric","d3_bisector","compare","hi","d3_transposeLength","d3_range_integerScale","d3_class","d3_Map","d3_map_escape","d3_map_proto","d3_map_zero","d3_map_unescape","d3_map_has","d3_map_remove","d3_map_keys","d3_map_size","d3_map_empty","d3_Set","d3_identity","d3_rebind","d3_vendorSymbol","object","d3_vendorPrefixes","prefixName","d3_noop","d3_dispatch","d3_dispatch_event","listeners","listenerByName","listener","d3_eventPreventDefault","d3","d3_eventSource","sourceEvent","d3_eventDispatch","thiz","argumentz","e1","e0","d3_selection","d3_subclass","d3_selectionPrototype","d3_selection_selector","d3_select","d3_selection_selectorAll","d3_selectAll","d3_selection_attr","attrNull","attrNullNS","removeAttributeNS","attrConstant","attrConstantNS","setAttributeNS","attrFunction","attrFunctionNS","ns","qualify","d3_collapse","d3_selection_classedRe","requote","d3_selection_classes","d3_selection_classed","classedConstant","classedFunction","d3_selection_classedName","classList","d3_selection_style","styleNull","removeProperty","styleConstant","styleFunction","d3_selection_property","propertyNull","propertyConstant","propertyFunction","d3_selection_creator","namespaceURI","d3_nsXhtml","createElementNS","createNS","d3_selectionRemove","d3_selection_dataNode","__data__","d3_selection_filter","d3_selectMatches","d3_selection_sortComparator","comparator","d3_selection_each","d3_selection_enter","d3_selection_enterPrototype","d3_selection_enterInsertBefore","i0","j0","d3_selection_on","capture","onRemove","onAdd","d3_array","removeAll","d3_selection_onListener","d3_selection_onFilters","d3_selection_onFilter","related","d3_event_dragSuppress","d3_event_dragId","d3_event_dragSelect","suppressClick","d3_mousePoint","ownerSVGElement","createSVGPoint","d3_mouse_bug44083","scrollX","ctm","getScreenCTM","matrixTransform","inverse","d3_behavior_dragTouchId","d3_sgn","d3_cross2d","d3_acos","π","acos","d3_asin","halfπ","asin","d3_sinh","exp","d3_cosh","d3_tanh","d3_haversin","d3_color","d3_hsl","d3_rgb_parse","d3_rgb_hsl","d3_hsl_rgb","vv","d3_rgb","d3_hcl","d3_lab","d3_lab_hcl","d3_rgb_lab","rgb","d3_hcl_lab","d3_radians","d3_lab_rgb","d3_lab_xyz","d3_lab_X","d3_lab_Y","d3_lab_Z","d3_xyz_rgb","atan2","d3_degrees","d3_xyz_lab","d3_rgbNumber","d3_rgbString","d3_rgb_hex","hsl","d3_rgb_parseNumber","d3_rgb_names","d3_rgb_xyz","d3_functor","d3_xhrType","d3_xhr","d3_xhrHasResponse","XDomainRequest","onprogress","beforesend","rebind","d3_xhr_fixCallback","d3_timer","d3_timer_queueTail","d3_timer_queueHead","d3_timer_interval","d3_timer_timeout","d3_timer_frame","d3_timer_step","d3_timer_mark","d3_timer_sweep","d3_format_precision","LN10","d3_formatPrefix","scale","d3_locale_numberFormat","locale","locale_decimal","decimal","locale_thousands","thousands","locale_grouping","grouping","locale_currency","currency","formatGroup","specifier","d3_format_re","sign","zfill","comma","precision","exponent","d3_format_types","d3_format_typeDefault","zcomma","fullSuffix","negative","formatPrefix","d3_date_utc","UTC","d3_time_interval","d0","d3_date","times","range_utc","utc","d3_time_interval_utc","d3_locale_timeFormat","d3_time_format","d3_time_formatPads","d3_time_formats","d3_time_parse","localZ","setFullYear","getDay","setHours","d3_time_parsers","d3_time_parseWeekdayAbbrev","d3_time_dayAbbrevRe","d3_time_dayAbbrevLookup","d3_time_parseWeekday","d3_time_dayRe","d3_time_dayLookup","d3_time_parseMonthAbbrev","d3_time_monthAbbrevRe","d3_time_monthAbbrevLookup","d3_time_parseMonth","d3_time_monthRe","d3_time_monthLookup","d3_time_parseLocaleFull","d3_time_parseLocaleDate","d3_time_parseLocaleTime","d3_time_parseAmPm","d3_time_periodLookup","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_days","days","locale_shortDays","shortDays","locale_months","months","locale_shortMonths","shortMonths","multi","d3_time_formatMulti","d3_time_formatRe","d3_time_formatLookup","getMonth","d3_time_formatPad","getDate","getHours","d3_time","dayOfYear","getMilliseconds","getMinutes","getSeconds","sundayOfYear","mondayOfYear","getFullYear","d3_time_zone","%","d3_time_parseDay","d3_time_parseHour24","d3_time_parseDayOfYear","d3_time_parseMilliseconds","d3_time_parseMonthNumber","d3_time_parseMinutes","d3_time_parseSeconds","d3_time_parseWeekNumberSunday","d3_time_parseWeekdayNumber","d3_time_parseWeekNumberMonday","d3_time_parseYear","d3_time_parseFullYear","d3_time_parseZone","d3_time_parseLiteralPercent","d3_time_numberRe","d3_time_expandYear","getTimezoneOffset","zs","zh","zm","d3_time_percentRe","d3_adder","d3_adderSum","bv","av","d3_geo_streamGeometry","geometry","d3_geo_streamGeometryType","d3_geo_streamLine","coordinates","coordinate","d3_geo_streamPolygon","polygonStart","polygonEnd","d3_geo_areaRingStart","nextPoint","λ","φ","dλ","λ0","sdλ","adλ","cosφ","sinφ","sinφ0","cosφ0","d3_geo_areaRingSum","λ00","φ00","d3_geo_area","d3_geo_cartesian","spherical","d3_geo_cartesianDot","d3_geo_cartesianCross","d3_geo_cartesianAdd","d3_geo_cartesianScale","vector","d3_geo_cartesianNormalize","d3_geo_spherical","cartesian","d3_geo_sphericalEqual","ε","d3_geo_centroidPoint","d3_geo_centroidPointXYZ","d3_geo_centroidW0","d3_geo_centroidX0","d3_geo_centroidY0","d3_geo_centroidZ0","d3_geo_centroidLineStart","y0","z0","x0","d3_geo_centroidW1","d3_geo_centroidX1","d3_geo_centroidY1","d3_geo_centroidZ1","d3_geo_centroid","d3_geo_centroidLineEnd","d3_geo_centroidRingStart","cx","cy","cz","d3_geo_centroidX2","d3_geo_centroidY2","d3_geo_centroidZ2","d3_geo_compose","compose","d3_true","d3_geo_clipPolygon","segments","clipStartInside","interpolate","subject","clip","segment","p0","d3_geo_clipPolygonIntersection","d3_geo_clipPolygonLinkCircular","entry","points","isSubject","d3_geo_clip","pointVisible","clipStart","rotate","pointLine","pointRing","ring","ringListener","ringStart","ringEnd","ringSegments","polygon","polygonStarted","d3_geo_clipSegmentLength1","rotatedClipStart","d3_geo_pointInPolygon","d3_geo_clipSort","sphere","d3_geo_clipBufferListener","rejoin","d3_geo_clipAntimeridianLine","φ0","sλ0","λ1","φ1","sλ1","d3_geo_clipAntimeridianIntersect","cosφ1","sinλ0_λ1","atan","d3_geo_clipAntimeridianInterpolate","meridian","parallel","meridianNormal","polarAngle","winding","point0","antimeridian","τ","φarc","d3_geo_clipCircle","cr","c0","v0","v00","point2","point1","smallRadius","intersect","notHemisphere","two","n1","n2","n2n2","n1n2","determinant","c1","c2","n1xn2","uu","δλ","polar","d3_geo_circleInterpolate","d3_geom_clipLine","ax","ay","bx","d3_geo_clipExtent","corner","comparePoints","insidePolygon","wn","linePoint","v_","x_","y_","x__","y__","v__","bufferListener","d3_geo_clipExtentMAX","listener_","inside","d3_geo_conic","projectAt","d3_geo_projectionMutator","parallels","d3_geo_conicEqualArea","ρ","ρ0","ρ0_y","d3_geo_pathAreaRingStart","d3_geo_pathAreaPolygon","x00","y00","d3_geo_pathArea","d3_geo_pathBoundsPoint","d3_geo_pathBoundsX0","d3_geo_pathBoundsX1","d3_geo_pathBoundsY0","d3_geo_pathBoundsY1","d3_geo_pathBuffer","pointCircle","pointLineStart","lineEndPolygon","d3_geo_pathBufferCircle","pointRadius","d3_geo_pathCentroidPoint","d3_geo_pathCentroidLineStart","d3_geo_pathCentroid","d3_geo_pathCentroidLineEnd","d3_geo_pathCentroidRingStart","d3_geo_pathContext","d3_geo_resample","project","resample","maxDepth","resampleRecursive","resampleNone","d3_geo_transformPoint","resampleLineTo","b0","ringPoint","a00","b00","c00","b1","δ2","φ2","λ2","dx2","dy2","dz","cosMinDistance","d3_geo_pathProjectStream","d3_geo_projectionRadians","d3_geo_transform","d3_geo_projection","projectRotate","δx","δy","d3_geo_rotation","δφ","δγ","center","invalidate","valid","projectResample","preclip","d3_geo_clipAntimeridian","postclip","clipAngle","clipExtent","translate","d3_geo_equirectangular","d3_geo_identityRotation","d3_geo_rotationλ","d3_geo_rotationφγ","d3_geo_forwardRotationλ","rotation","cosδφ","sinδφ","cosδγ","sinδγ","d3_geo_circleAngle","angle","d3_geo_graticuleX","d3_geo_graticuleY","d3_source","d3_target","d3_geo_interpolate","cy0","sy0","cy1","sy1","kx0","ky0","kx1","ky1","d3_geo_lengthLineStart","cosΔλ","d3_geo_lengthSum","d3_geo_length","d3_geo_azimuthal","azimuthal","cosλ","sinc","cosc","d3_geo_conicConformal","tan","d3_geo_mercator","d3_geo_conicEquidistant","d3_geo_mercatorProjection","clipAuto","d3_geo_transverseMercator","d3_geom_pointX","d3_geom_pointY","d3_geom_hullUpper","hull","hs","d3_geom_hullOrder","d3_geom_polygonInside","d3_geom_polygonIntersect","x3","x21","x43","y3","y21","y43","d3_geom_polygonClosed","d3_geom_voronoiBeach","d3_geom_voronoiRedBlackNode","site","d3_geom_voronoiCreateBeach","beach","d3_geom_voronoiBeachPool","d3_geom_voronoiDetachBeach","d3_geom_voronoiDetachCircle","d3_geom_voronoiBeaches","d3_geom_voronoiRemoveBeach","disappearing","lArc","rArc","iArc","nArcs","d3_geom_voronoiSetEdgeEnd","d3_geom_voronoiCreateEdge","d3_geom_voronoiAttachCircle","d3_geom_voronoiAddBeach","dxl","dxr","directrix","d3_geom_voronoiLeftBreakPoint","d3_geom_voronoiRightBreakPoint","newArc","lSite","rSite","hc","rfocx","rfocy","pby2","lfocx","lfocy","plby2","hl","aby2","d3_geom_voronoiCell","edges","d3_geom_voronoiCloseCells","extent","iHalfEdge","halfEdges","nHalfEdges","d3_geom_voronoiCells","iCell","d3_geom_voronoiHalfEdge","d3_geom_voronoiCreateBorderEdge","d3_geom_voronoiHalfEdgeOrder","d3_geom_voronoiCircle","cSite","ε2","d3_geom_voronoiCirclePool","d3_geom_voronoiCircles","d3_geom_voronoiFirstCircle","d3_geom_voronoiClipEdges","d3_geom_voronoiEdges","d3_geom_voronoiConnectEdge","fm","lx","ly","rx","ry","fy","d3_geom_voronoiEdge","d3_geom_voronoiRedBlackTree","d3_geom_voronoiRedBlackRotateLeft","tree","d3_geom_voronoiRedBlackRotateRight","d3_geom_voronoiRedBlackFirst","d3_geom_voronoi","sites","bbox","d3_geom_voronoiVertexOrder","diagram","d3_geom_voronoiTriangleArea","d3_geom_quadtreeCompatX","d3_geom_quadtreeCompatY","d3_geom_quadtreeNode","nodes","d3_geom_quadtreeVisit","sx","sy","d3_geom_quadtreeFind","closestPoint","minDistance2","distance2","xm","ym","d3_interpolateRgb","ar","ag","d3_interpolateObject","d3_interpolate","d3_interpolateNumber","d3_interpolateString","am","bm","bs","d3_interpolate_numberA","d3_interpolate_numberB","interpolators","d3_interpolateArray","n0","d3_ease_clamp","d3_ease_reverse","d3_ease_reflect","d3_ease_quad","d3_ease_cubic","d3_ease_cubicInOut","t3","d3_ease_poly","d3_ease_sin","d3_ease_exp","d3_ease_circle","d3_ease_elastic","d3_ease_back","d3_ease_bounce","d3_interpolateHcl","hcl","ah","ac","al","bh","bc","bl","d3_interpolateHsl","d3_interpolateLab","lab","d3_interpolateRound","d3_transform","kx","d3_transformNormalize","kz","d3_transformDot","ky","d3_transformCombine","skew","d3_interpolateTransformPop","d3_interpolateTranslate","d3_interpolateRotate","d3_interpolateSkew","d3_interpolateScale","d3_interpolateTransform","d3_uninterpolateNumber","d3_uninterpolateClamp","d3_layout_bundlePath","lca","d3_layout_bundleLeastCommonAncestor","d3_layout_bundleAncestors","ancestors","aNodes","bNodes","aNode","bNode","sharedNode","d3_layout_forceDragstart","fixed","d3_layout_forceDragend","d3_layout_forceMouseover","px","py","d3_layout_forceMouseout","d3_layout_forceAccumulate","quad","alpha","charges","charge","pointCharge","d3_layout_hierarchyRebind","hierarchy","d3_layout_hierarchyLinks","d3_layout_hierarchyVisitBefore","d3_layout_hierarchyVisitAfter","nodes2","d3_layout_hierarchyChildren","d3_layout_hierarchyValue","d3_layout_hierarchySort","d3_layout_stackX","d3_layout_stackY","d3_layout_stackOut","d3_layout_stackOrderDefault","d3_layout_stackOffsetZero","d3_layout_stackMaxIndex","d3_layout_stackReduceSum","reduce","d3_layout_stackSum","d3_layout_histogramBinSturges","d3_layout_histogramBinFixed","LN2","d3_layout_histogramRange","d3_layout_packSort","d3_layout_packInsert","_pack_next","_pack_prev","d3_layout_packSplice","d3_layout_packIntersects","dr","d3_layout_packSiblings","xMin","xMax","yMin","yMax","d3_layout_packLink","d3_layout_packPlace","isect","s1","s2","d3_layout_packUnlink","d3_layout_packTransform","dc","d3_layout_treeSeparation","d3_layout_treeLeft","d3_layout_treeRight","d3_layout_treeMove","wm","wp","d3_layout_treeShift","d3_layout_treeAncestor","vim","ancestor","d3_layout_clusterY","d3_layout_clusterX","d3_layout_clusterLeft","d3_layout_clusterRight","d3_layout_treemapPadNull","d3_layout_treemapPad","d3_scaleExtent","domain","d3_scaleRange","rangeExtent","d3_scale_bilinear","uninterpolate","d3_scale_nice","nice","d3_scale_niceStep","d3_scale_niceIdentity","d3_scale_polylinear","bisect","d3_scale_linear","clamp","rescale","rangeRound","ticks","d3_scale_linearTicks","tickFormat","d3_scale_linearTickFormat","d3_scale_linearNice","d3_scale_linearRebind","d3_scale_linearTickRange","d3_scale_linearPrecision","d3_scale_linearFormatPrecision","d3_scale_linearFormatSignificant","d3_scale_log","positive","niced","d3_scale_logNiceNegative","d3_scale_logFormat","d3_scale_pow","powp","d3_scale_powPow","powb","d3_scale_ordinal","ranger","steps","rangeBand","xi","rangePoints","rangeRoundPoints","rangeBands","outerPadding","rangeRoundBands","d3_scale_quantile","thresholds","quantile","quantiles","invertExtent","d3_scale_quantize","d3_scale_threshold","d3_scale_identity","d3_zero","d3_svg_arcInnerRadius","innerRadius","d3_svg_arcOuterRadius","outerRadius","d3_svg_arcStartAngle","d3_svg_arcEndAngle","d3_svg_arcPadAngle","padAngle","d3_svg_arcSweep","d3_svg_arcCornerTangents","cw","x01","y01","ox","oy","cx0","cx1","dx0","dy0","dx1","dy1","d3_svg_line","tension","defined","d3_svg_lineLinear","interpolateKey","d3_svg_lineInterpolators","d3_svg_lineLinearClosed","d3_svg_lineStep","d3_svg_lineStepBefore","d3_svg_lineStepAfter","d3_svg_lineCardinalOpen","d3_svg_lineHermite","d3_svg_lineCardinalTangents","d3_svg_lineCardinalClosed","d3_svg_lineCardinal","tangents","pi","lp","d3_svg_lineBasis","d3_svg_lineDot4","d3_svg_lineBasisBezier3","d3_svg_lineBasisBezier","d3_svg_lineBasisOpen","d3_svg_lineBasisClosed","d3_svg_lineBundle","d3_svg_lineBasisBezier1","d3_svg_lineBasisBezier2","d3_svg_lineSlope","d3_svg_lineFiniteDifferences","d3_svg_lineMonotoneTangents","d3_svg_lineMonotone","d3_svg_lineRadial","d3_svg_area","points1","interpolateReverse","points0","fx0","fy0","fx1","fy1","d3_svg_chordRadius","d3_svg_diagonalProjection","d3_svg_diagonalRadialProjection","d3_svg_symbolSize","d3_svg_symbolType","d3_svg_symbolCircle","d3_selection_interruptNS","activeId","interrupt","d3_transition","d3_transitionPrototype","d3_transition_tween","tween","d3_transition_text","d3_transitionNamespace","d3_transitionNode","inherit","schedule","elapsed","cancelId","ease","d3_svg_axisX","d3_svg_axisY","d3_time_formatIsoNative","toISOString","d3_time_scale","tickMethod","d3_time_scaleSteps","year","d3_time_scaleMilliseconds","d3_time_scaleDate","d3_json","d3_html","d3_document","selectNode","createContextualFragment","d3_arraySlice","d3_element_prototype","Element","d3_element_setAttribute","d3_element_setAttributeNS","d3_style_prototype","CSSStyleDeclaration","d3_style_setProperty","ascending","descending","mean","median","numbers","variance","deviation","d3_bisect","bisectLeft","bisectRight","bisector","shuffle","permute","indexes","permutes","transpose","matrix","zip","arrays","mapType","rollup","sortValues","keyValue","setter","valuesByKey","sortKey","sortKeys","behavior","d3_requote_re","__proto__","property","d3_selectMatcher","Sizzle","subgroup","subnode","subgroups","d3_nsPrefix","xhtml","xlink","xmlns","getAttributeNS","classed","groupData","nodeData","updateNodes","enterNodes","exitNodes","nodeByKeyValue","keyValues","upgroup","mouse","drag","touchstart","dragstart","position1","dragId","position0","dragged","dragOffset","ended","dragSubject","dragName","dragRestore","correspondingElement","τε","SQRT2","ρ2","ρ4","interpolateZoom","ux0","uy0","w0","ux1","uy1","w1","coshr0","mousedowned","d3_behavior_zoomWheel","mousewheeled","dblclicked","touchstarted","scaleTo","scaleExtent","translateTo","zoomTo","__chart__","center0","zoomstarted","zooming","zoomed","zoomended","location0","d3_selection_interrupt","relocate","scale0","locations0","started","touchmove","touchend","touchtime","distance0","distance1","scale1","zoomName","mousewheelTimer","translate0","d3_behavior_zoomDelta","d3_behavior_zoomInfinity","deltaY","deltaMode","view1","d3_transitionInheritId","d3_hslPrototype","brighter","darker","d3_hclPrototype","d3_lab_K","d3_labPrototype","d3_rgbPrototype","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","dsv","typedResponse","formatRow","formatValue","reFormat","delimiterCode","parseRows","EOF","EOL","formatRows","fieldSet","csv","tsv","d3_formatPrefixes","toPrecision","getUTCDate","getUTCDay","getUTCFullYear","getUTCHours","getUTCMilliseconds","getUTCMinutes","getUTCMonth","getUTCSeconds","valueOf","setDate","d3_time_prototype","setUTCDate","setDay","setUTCDay","setUTCFullYear","setUTCHours","setMilliseconds","setUTCMilliseconds","setMinutes","setUTCMinutes","setMonth","setUTCMonth","setSeconds","setUTCSeconds","setTime","day","years","week","sunday","weeks","weekOfYear","numberFormat","timeFormat","d3_locale_enUS","geo","d3_adderTemp","d3_geo_streamObjectType","Feature","feature","FeatureCollection","features","Sphere","Point","MultiPoint","LineString","MultiLineString","Polygon","MultiPolygon","GeometryCollection","geometries","d3_geo_areaSum","bounds","equatorial","inflection","λ_","λi","φi","dλSum","λ__","φ__","compareRanges","withinRange","best","centroid","conicEqualArea","albers","albersUsa","lower48Point","alaskaPoint","hawaiiPoint","lower48","alaska","hawaii","pointStream","lower48Stream","alaskaStream","hawaiiStream","d3_geo_pathAreaSum","d3_geo_pathBounds","contextStream","cacheStream","projectStream","projectionMutator","equirectangular","Δλ","sinΔλ","sinφ1","graticule","X0","DX","X1","Y0","DY","Y1","outline","majorExtent","minorExtent","majorStep","minorStep","greatArc","source_","target_","d3_geo_azimuthalEqualArea","cosλcosφ","azimuthalEqualArea","d3_geo_azimuthalEquidistant","azimuthalEquidistant","conicConformal","conicEquidistant","d3_geo_gnomonic","gnomonic","mercator","d3_geo_orthographic","orthographic","d3_geo_stereographic","stereographic","transverseMercator","geom","flippedPoints","upper","lower","skipLeft","skipRight","d3_geom_polygonPrototype","grandpa","uncle","voronoi","polygons","d3_geom_voronoiClipExtent","triangles","s0","delaunay","quadtree","nx","ny","insertChild","nPoint","xs","ys","x1_","y1_","x2_","y2_","compat","visit","interpolateRgb","interpolateObject","interpolateNumber","interpolateString","interpolateArray","d3_ease_default","d3_ease","poly","cubic","elastic","back","bounce","d3_ease_mode","in","in-out","out-in","interpolateHcl","interpolateHsl","interpolateLab","interpolateRound","baseVal","consolidate","d3_transformIdentity","interpolateTransform","layout","bundle","chord","relayout","groupSums","groupIndex","subgroupIndex","chords","sortGroups","sortSubgroups","di","dj","subindex","sortChords","resort","repulse","dw","dn","theta2","chargeDistance2","dragmove","resume","distances","strengths","friction","linkDistance","d3_layout_forceLinkDistance","linkStrength","d3_layout_forceLinkStrength","d3_layout_forceChargeDistance2","gravity","weight","chargeDistance","theta","neighbors","candidates","childs","revalue","partition","arcs","d3_layout_pieSortByValue","series","orders","d3_layout_stackOrders","d3_layout_stackOffsets","inside-out","sums","tops","bottoms","silhouette","wiggle","s3","o0","zero","histogram","bin","bins","valuer","binner","frequency","pack","root0","root1","wrapTree","firstWalk","secondWalk","nodeSize","sizeNode","tx","separation","node1","midpoint","apportion","vip","vop","vom","sip","sop","sim","som","cluster","previousNode","treemap","squarify","worst","stickify","rmax","rmin","stickies","padFunction","padConstant","µ","σ","logNormal","bates","irwinHall","ordinal","category10","d3_category10","category20","d3_category20","category20b","d3_category20b","category20c","d3_category20c","quantize","threshold","circleSegment","ap","padRadius","d3_svg_arcAuto","cornerRadius","rc1","rc0","oc","kc","t30","t12","t03","t21","linear-closed","step-before","step-after","basis","basis-open","basis-closed","cardinal","cardinal-open","cardinal-closed","monotone","radial","curve","diagonal","p3","projection_","d3_svg_symbols","cross","diamond","d3_svg_symbolTan30","square","triangle-down","d3_svg_symbolSqrt3","triangle-up","symbolTypes","d3_transitionId","d3_transitionInherit","subnodes","nameNS","attrTween","attrTweenNS","styleString","styleTween","inheritId","id0","id1","tickTransform","tickValues","tickArguments_","tickFormat_","tickEnter","tickExit","tickUpdate","tickSpacing","innerTickSize","tickPadding","pathUpdate","lineEnter","lineUpdate","textEnter","textUpdate","orient","outerTickSize","d3_svg_axisDefaultOrient","d3_svg_axisOrients","tickSize","tickSubdivide","brush","brushstart","resizes","d3_svg_brushCursor","gUpdate","backgroundUpdate","redrawX","redrawY","redraw","xExtent","yExtent","dragging","keyup","brushmove","resizingX","move1","resizingY","event_","yClamp","xClamp","yExtentDomain","xExtentDomain","brushend","eventTarget","resizing","ey","d3_svg_brushResizes","extent1","extent0","yi","se","d3_time_formatUtc","d3_time_formatIso","seconds","minute","minutes","hour","timezone","hours","month","d3_time_scaleLocalMethods","d3_time_scaleLocalFormat","d3_time_scaleUtcMethods","d3_time_scaleUtcFormat","responseXML","API","derived","Chart","$$","internal","ChartInternal","loadConfig","beforeInit","afterInit","bindThis","argThis","c3_chart_fn","api","getDefaultConfig","axes","Axis","c3_axis","axisX","tickOffset","axisY","generateTicks","tickArguments","copyScale","newScale","isCategory","textFormatted","formatted","getSizeFor1Char","tickTextCharSize","transitionise","withoutTransition","splitTickText","splitted","spaceIndex","subtext","textWidth","sizeFor1Char","tickText","isVertical","tspanDy","counts","tickPosition","tickCentered","textAnchorForText","dxForText","yForText","tickLength","tickX","tickY","tspan","tickMultiline","tickWidth","tickTextRotate","tickCulling","withOuterTick","isCentered","tickInterval","getTotalLength","culling","c3_chart_internal_fn","c3_chart_internal_axis_fn","c3","generate","chart","initParams","data_url","convertUrlToData","data_mimeType","data_headers","data_keys","initWithData","data_json","convertJsonToData","data_rows","convertRowsToData","data_columns","convertColumnsToData","clipId","clipIdForXAxis","clipIdForYAxis","clipIdForGrid","clipIdForSubchart","clipPath","getClipPath","clipPathForXAxis","clipPathForYAxis","clipPathForGrid","clipPathForSubchart","flowing","cancelClick","mouseover","transiting","generateColor","levelColor","generateLevelColor","dataTimeFormat","data_xLocaltime","axisTimeFormat","axis_x_localtime","defaultAxisTimeFormat","hiddenTargetIds","hiddenLegendIds","focusedTargetIds","defocusedTargetIds","xOrient","axis_rotated","yOrient","axis_y_inner","y2Orient","axis_y2_inner","subXOrient","isLegendRight","legend_position","isLegendInset","isLegendTop","legend_inset_anchor","isLegendLeft","legendStep","legendItemWidth","legendItemHeight","currentMaxTickWidths","rotated_padding_left","rotated_padding_right","axis_x_show","rotated_padding_top","withoutFadeIn","intervalForObserveInserted","subx","initChartElements","initBar","initLine","initArc","initGauge","initText","defs","main","initPie","initBrush","initZoom","bindto","selectChart","observeInserted","convertDataToTargets","data_filter","data_hide","addHiddenTargetIds","mapToIds","legend_hide","addHiddenLegendIds","hasType","legend_show","updateSizes","updateScales","getXDomain","getYDomain","subX","subY","subY2","orgXDomain","zoom_enabled","onmouseover","onmouseout","svg_classname","clipChart","appendClip","clipXAxis","clipYAxis","clipGrid","clipSubchart","updateSvgSize","getTranslate","initSubchart","initTooltip","initLegend","initTitle","initRegion","initGrid","grid_lines_front","initGridLines","initEventRect","zoom_privileged","regions","zoomRect","axis_x_extent","getDefaultExtent","updateTargets","updateDimension","oninit","withTransition","withTransform","withUpdateXDomain","withUpdateOrgXDomain","withTransitionForAxis","bindResize","smoothLines","legendHeight","legend","getLegendHeight","legendWidth","getLegendWidth","legendHeightForBottom","hasArc","hasArcType","xAxisHeight","getHorizontalAxisHeight","subchartHeight","subchart_show","subchart_size_height","currentWidth","getCurrentWidth","currentHeight","getCurrentHeight","getCurrentPaddingTop","getCurrentPaddingRight","getCurrentPaddingBottom","getCurrentPaddingLeft","margin2","margin3","updateSizeForLegend","width2","height2","arcWidth","arcHeight","gauge_fullCircle","getGaugeLabelHeight","updateRadius","radiusExpanded","updateTargetsForText","updateTargetsForBar","updateTargetsForLine","updateTargetsForArc","updateTargetsForSubchart","showTargets","isTargetToShow","transition_duration","transitions","withY","withSubchart","withTransitionForExit","withTrimXDomain","withLegend","withEventRect","withDimension","withUpdateXAxis","drawArea","drawBar","xForText","durationForExit","durationForAxis","waitForDraw","flow","intervalForCulling","xDomainForZoom","areaIndices","getShapeIndices","isAreaType","barIndices","isBarType","lineIndices","isLineType","hideAxis","targetsToShow","filterTargetsToShow","xv","generateTransitions","updateLegend","isCategorized","updateXDomain","axis_x_tick_values","updateXAxisTickValues","xAxis","subXAxis","zoom_rescale","orgDomain","axis_y_tick_values","axis_y_tick_count","yAxis","generateTickValues","axis_y2_tick_values","axis_y2_tick_count","y2Axis","updateLabels","axis_x_tick_culling","axis_x_tick_culling_max","generateDrawArea","generateDrawBar","generateDrawLine","generateXYForText","updateXgridFocus","data_empty_label_text","updateGrid","updateRegion","updateBar","updateArea","updateCircle","hasDataLabel","updateText","redrawTitle","redrawArc","redrawSubchart","selectedCircles","interaction_enabled","redrawEventRect","updateZoom","updateCircleY","circleY","circleX","generateFlow","isTabVisible","transitionsToWait","redrawBar","redrawLine","redrawArea","redrawCircle","redrawText","redrawRegion","redrawGrid","generateWait","onrendered","updateAndRedraw","withTransitionForTransform","transformAll","redrawWithoutRescale","isTimeSeries","axis_x_type","isCustomX","data_x","notEmpty","data_xs","isTimeSeriesY","axis_y_type","asHalfPixel","initialOpacity","initialOpacityForCircle","opacityForCircle","point_show","isValue","isScatterType","opacityForText","xx","parseDate","axis_x_categories","yv","yScale","subxx","transformMain","axisY2","chartArcs","transformContext","transformLegend","getXAxisClipX","getXAxisClipY","getXAxisClipWidth","getXAxisClipHeight","getYAxisClipX","getYAxisClipY","getYAxisClipWidth","getYAxisClipHeight","withoutAxis","observer","MutationObserver","mutations","mutation","observe","childList","characterData","resizeFunction","generateResize","onresize","resize_auto","resizeTimeout","onresized","callResizeFunctions","resizeFunctions","endall","parsedDate","data_xFormat","mozHidden","msHidden","webkitHidden","size_width","size_height","padding_left","padding_right","padding_top","padding_bottom","zoom_extent","zoom_onzoom","zoom_onzoomstart","zoom_onzoomend","zoom_x_min","zoom_x_max","interaction_brighten","data_xSort","data_idConverter","data_names","data_classes","data_groups","data_axes","data_type","data_types","data_labels","data_order","data_regions","data_color","data_colors","data_selection_enabled","data_selection_grouped","data_selection_isselectable","data_selection_multiple","data_selection_draggable","data_onclick","data_onmouseover","data_onmouseout","data_onselected","data_onunselected","subchart_axis_x_show","subchart_onbrush","color_pattern","color_threshold","legend_inset_x","legend_inset_y","legend_inset_step","legend_item_onclick","legend_item_onmouseover","legend_item_onmouseout","legend_equally","legend_padding","legend_item_tile_width","legend_item_tile_height","axis_x_tick_centered","axis_x_tick_format","axis_x_tick_count","axis_x_tick_fit","axis_x_tick_rotate","axis_x_tick_outer","axis_x_tick_multiline","axis_x_tick_width","axis_x_max","axis_x_min","axis_x_padding","axis_x_height","axis_x_label","axis_y_show","axis_y_max","axis_y_min","axis_y_inverted","axis_y_center","axis_y_label","axis_y_tick_format","axis_y_tick_outer","axis_y_tick_rotate","axis_y_tick_time_value","axis_y_tick_time_interval","axis_y_padding","axis_y_default","axis_y2_show","axis_y2_max","axis_y2_min","axis_y2_inverted","axis_y2_center","axis_y2_label","axis_y2_tick_format","axis_y2_tick_outer","axis_y2_padding","axis_y2_default","grid_x_show","grid_x_type","grid_x_lines","grid_y_show","grid_y_lines","grid_y_ticks","grid_focus_show","point_r","point_sensitivity","point_focus_expand_enabled","point_focus_expand_r","point_select_r","line_connectNull","line_step_type","bar_width","bar_width_ratio","bar_width_max","bar_zerobased","area_zerobased","area_above","pie_label_show","pie_label_format","pie_label_threshold","pie_label_ratio","pie_expand","pie_expand_duration","gauge_label_show","gauge_label_format","gauge_min","gauge_max","gauge_startingAngle","gauge_units","gauge_width","gauge_expand","gauge_expand_duration","donut_label_show","donut_label_format","donut_label_threshold","donut_label_ratio","donut_width","donut_title","donut_expand","donut_expand_duration","spline_interpolation_type","tooltip_show","tooltip_grouped","tooltip_format_title","tooltip_format_name","tooltip_format_value","tooltip_position","tooltip_contents","defaultTitleFormat","defaultValueFormat","getTooltipContent","tooltip_init_show","tooltip_init_x","tooltip_init_position","tooltip_onshow","tooltip_onhide","title_text","title_padding","title_position","additionalConfig","this_config","isDefined","getScale","forTimeseries","getX","_scale","getY","getYScale","getId","getSubYScale","forInit","subXMin","subXMax","subYMin","subYMax","xAxisTickFormat","getXAxisTickFormat","xAxisTickValues","getXAxisTickValues","yAxisTickValues","getYAxisTickValues","y2AxisTickValues","getY2AxisTickValues","getXAxis","getYAxis","updateArc","getYDomainMin","baseId","idsInGroup","hasNegativeValue","getValuesAsIdKeyed","hasNegativeValueInTargets","getYDomainMax","hasPositiveValue","hasPositiveValueInTargets","axisId","xDomain","domainLength","yDomainAbs","lengths","isAllPositive","isAllNegative","targetsByAxisId","yTargets","filterByXDomain","yDomainMin","yDomainMax","isZeroBased","isInverted","showHorizontalDataLabel","showVerticalDataLabel","getDataLabelLength","diffDomain","convertPixelsToAxisPadding","getPadding","getXDomainMin","getXDomainMax","getXDomainPadding","maxDataCount","getMaxDataCount","firstX","lastX","withTrim","updateScaleExtent","trimXDomain","zoomDomain","getZoomDomain","isX","hasValue","isNotX","getXKey","getXValuesOfXKey","xValues","getIndexByX","filterByX","getXValue","getOtherTargetXs","idsForX","getOtherTargetX","addXs","hasMultipleX","isMultipleX","addName","getValueOnIndex","valueOnIndex","updateTargetX","generateTargetX","updateTargetXs","rawX","cloneTarget","id_org","updateXs","getPrevX","getNextX","getMaxDataCountTarget","maxTarget","getEdgeX","mapToTargetIds","hasTarget","targetId","isLegendToShow","mapTargetsToUniqueXs","targetIds","removeHiddenTargetIds","removeHiddenLegendIds","checkValueInTargets","checker","isOrderDesc","isOrderAsc","orderTargets","orderAsc","orderDesc","reducer","t1Sum","t2Sum","filterRemoveNull","paddingCoef","dataLabelFormat","isNoneArc","isArc","findSameXOfValues","sames","findClosestFromTargets","findClosest","minDist","bars","getTargetSelectorSuffix","isWithinBar","xIndex","yIndex","convertValuesToStep","converted","updateDataAttributes","req","responseURL","convertTsvToData","convertCsvToData","convertXsvToData","xsv","targetKeys","new_rows","new_row","findValueInJson","pathArray","columns","appendXs","xKey","convertedId","v1","v2","setTargetType","addCache","loadFromArgs","selectorTarget","legendItem","categoryName","eventRects","eventRectUpdate","maxDataCountTarget","eventRectsMultiple","eventRectsSingle","eventRect","generateEventRectsForMultipleXs","updateEventRect","generateEventRectsForSingleX","rectW","rectX","getEventRectWidth","prevX","nextX","thisX","classEvent","eventRectEnter","expandCircles","expandBars","hideXGridFocus","unexpandCircles","unexpandBars","selectedData","isStepType","showXGridFocus","EXPANDED","isWithinShape","toggleShape","dragend","mouseout","sameXData","dispatchEvent","createEvent","initMouseEvent","getParentWidth","getParentHeight","getTitlePadding","withoutRecompute","ceil10","getAxisWidthByAxisId","getYAxisLabelPosition","isOuter","defaultPadding","legendWidthOnRight","getY2AxisLabelPosition","getParentRectValue","getSvgLeft","hasLeftAxisRect","leftAxisClass","leftAxis","svgRect","chartRect","svgLeft","getLabelPositionById","getMaxTickWidth","isInner","typeFilter","__max__","getShapeX","targetsNum","isSub","getShapeY","getShapeOffset","isWithin","isWithinStep","isWithinCircle","pointSelectR","getInterpolate","interpolation","isInterpolationType","isSplineType","chartLines","mainLineUpdate","mainLineEnter","classChartLine","classLines","classAreas","classCircles","classFocus","chartLine","generateClass","selectedCircle","mainLine","lineData","classLine","getPoints","generateGetLinePoints","yScaleGetter","xValue","yValue","lineWithRegions","lineTargetsNum","lineOffset","posX","posY","_regions","isWithinRegions","generateM","sWithRegion","xp","yp","diffx2","xOffset","x_diff","xv0","xv1","mainArea","areas","classArea","orgAreaOpacity","generateGetAreaPoints","value0","getAreaBaseValue","value1","areaTargetsNum","areaOffset","mainCircle","circles","lineOrScatterData","classCircle","pointR","getCircles","pointExpandedR","d3_this","chartBars","mainBarUpdate","mainBarEnter","classChartBar","classBars","chartBar","barData","classBar","mainBar","getBarW","barTargetsNum","getBars","generateGetBarPoints","indexX","indexY","barW","barX","barY","barOffset","seg0","pathSegList","seg1","chartTexts","mainText","mainTextUpdate","mainTextEnter","classChartText","classTexts","chartText","barOrLineData","classText","texts","forFlow","getTextRect","dummy","font","forX","getAreaPoints","getBarPoints","getLinePoints","getter","getXForText","getYForText","textElement","xPos","yPos","isSafari","isChrome","isPieType","isGaugeType","isDonutType","isArcType","arcData","grid","xgrids","ygrids","xgridFocus","xgrid","gridLines","xgridLines","ygridLines","updateXGrid","withoutUpdate","xgridData","generateGridData","xgridAttr","updateYGrid","gridValues","ygrid","gridTextAnchor","gridTextDx","xGridTextX","yGridTextX","xgridLine","ygridLine","dataToShow","focusEl","firstYear","lastYear","gridData","tickNum","getGridFilterToRemove","removeGridLines","toRemove","toShow","tooltipContainer","getYFormat","titleFormat","nameFormat","valueFormat","sanitise","tooltipName","tooltipPosition","tWidth","tHeight","tooltipLeft","tooltipRight","tooltipTop","chartRight","forArc","positionFunction","legendItemTextBox","legendHasRendered","updateLegendWithDefaults","insetLegendPosition","updateLegendStep","updateLegendItemWidth","updateLegendItemHeight","opacityForLegend","legendItemHidden","opacityForUnfocusedLegend","toggleFocusLegend","legendItemFocused","revertLegend","showLegend","selectorLegends","hideLegend","clearLegendItemTextBoxCache","getTextBox","updatePositions","updateValues","withoutStep","areaLength","totalLength","itemLength","posMin","margins","maxLength","isLast","tileWidth","itemHeight","maxHeight","widths","xForLegend","xForLegendText","xForLegendRect","yForLegend","yForLegendText","yForLegendRect","x1ForLegendTile","x2ForLegendTile","yForLegendTile","tiles","legendItemEvent","legendItemTile","legendBackground","xForTitle","yForTitle","axisXLabel","textAnchorForXAxisLabel","axisYLabel","textAnchorForYAxisLabel","axisY2Label","textAnchorForY2AxisLabel","withoutRotateTickText","axisParams","getTickValues","getLabelOptionByAxisId","getLabelText","setLabelText","getLabelPosition","defaultPosition","isLeft","isCenter","isRight","isTop","isMiddle","isBottom","getXAxisLabelPosition","textForXAxisLabel","textForYAxisLabel","textForY2AxisLabel","xForAxisLabel","forHorizontal","dxForAxisLabel","textAnchorForAxisLabel","xForXAxisLabel","xForYAxisLabel","xForY2AxisLabel","dxForXAxisLabel","dxForYAxisLabel","dxForY2AxisLabel","dyForXAxisLabel","dyForYAxisLabel","dyForY2AxisLabel","tickCount","forTimeSeries","targetCount","tickValue","axisSubX","isHidden","isIE9","appVersion","URL","getAxisClipX","getAxisClipY","getAxisClipWidth","getAxisClipHeight","innerRadiusRatio","svgArc","getSvgArc","svgArcExpanded","getSvgArcExpanded","svgArcExpandedSub","updateAngle","gMin","gMax","gTic","gValue","updated","rate","getArc","transformForArcLabel","getArcRatio","whole","convertToArcData","textForArcLabel","shouldShowArcLabel","meetsArcLabelThreshold","getArcLabelFormat","defaultArcValueFormat","expandArc","selectorTargets","chartArc","shouldExpand","expandDuration","unexpandArc","shouldShow","getArcTitle","mainPieUpdate","mainPieEnter","classChartArc","classArcs","chartArcsTitle","mainArc","classArc","_current","interpolated","gaugeValue","chartArcsBackground","chartArcsGaugeUnit","chartArcsGaugeMin","chartArcsGaugeMax","mainRegion","classRegion","parentData","regionX","regionY","regionWidth","regionHeight","isRegionOnX","mx","my","minX","maxX","minY","maxY","altDomain","dragarea","_x","_y","_w","_h","isSelected","SELECTED","isIncluded","INCLUDED","togglePoint","getPathBox","togglePath","selectPoint","unselectPoint","selectPath","unselectPath","getToggle","redrawForBrush","contextLineEnter","contextLineUpdate","contextBarEnter","contextBarUpdate","updateBarForSubchart","contextBar","redrawBarForSubchart","drawBarOnSub","updateLineForSubchart","contextLine","redrawLineForSubchart","drawLineOnSub","updateAreaForSubchart","contextArea","redrawAreaForSubchart","drawAreaOnSub","startEvent","redrawForZoom","orgScaleExtent","asValue","formatForY","yFormat","formatForY2","y2Format","defaultFormat","hasCaches","getCaches","defocused","classShape","classShapes","classTarget","additionalClassSuffix","additionalClass","classFocused","classDefocused","selectorLegend","defocus","unzoom","categories","cacheIds","dataCount","baseTarget","baseValue","notfoundIds","orgDataCount","missing","translateX","flowIndex","flowLength","flowStart","flowEnd","durationForFlow","resetOther","isTargetId","isTargetIndex","unselect","transformTo","optionsForRedraw","grids","shown","category","oThis","aArgs","fToBind","fNOP","fBound","SVGPathSeg","typeAsLetter","owningPathSegList","pathSegType","pathSegTypeAsLetter","_owningPathSegList","PATHSEG_UNKNOWN","PATHSEG_CLOSEPATH","PATHSEG_MOVETO_ABS","PATHSEG_MOVETO_REL","PATHSEG_LINETO_ABS","PATHSEG_LINETO_REL","PATHSEG_CURVETO_CUBIC_ABS","PATHSEG_CURVETO_CUBIC_REL","PATHSEG_CURVETO_QUADRATIC_ABS","PATHSEG_CURVETO_QUADRATIC_REL","PATHSEG_ARC_ABS","PATHSEG_ARC_REL","PATHSEG_LINETO_HORIZONTAL_ABS","PATHSEG_LINETO_HORIZONTAL_REL","PATHSEG_LINETO_VERTICAL_ABS","PATHSEG_LINETO_VERTICAL_REL","PATHSEG_CURVETO_CUBIC_SMOOTH_ABS","PATHSEG_CURVETO_CUBIC_SMOOTH_REL","PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS","PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL","_segmentChanged","segmentChanged","SVGPathSegClosePath","_asPathString","SVGPathSegMovetoAbs","SVGPathSegMovetoRel","SVGPathSegLinetoAbs","SVGPathSegLinetoRel","SVGPathSegCurvetoCubicAbs","_x1","_y1","_x2","_y2","SVGPathSegCurvetoCubicRel","SVGPathSegCurvetoQuadraticAbs","SVGPathSegCurvetoQuadraticRel","SVGPathSegArcAbs","r2","largeArcFlag","sweepFlag","_r1","_r2","_angle","_largeArcFlag","_sweepFlag","SVGPathSegArcRel","SVGPathSegLinetoHorizontalAbs","SVGPathSegLinetoHorizontalRel","SVGPathSegLinetoVerticalAbs","SVGPathSegLinetoVerticalRel","SVGPathSegCurvetoCubicSmoothAbs","SVGPathSegCurvetoCubicSmoothRel","SVGPathSegCurvetoQuadraticSmoothAbs","SVGPathSegCurvetoQuadraticSmoothRel","SVGPathElement","createSVGPathSegClosePath","createSVGPathSegMovetoAbs","createSVGPathSegMovetoRel","createSVGPathSegLinetoAbs","createSVGPathSegLinetoRel","createSVGPathSegCurvetoCubicAbs","createSVGPathSegCurvetoCubicRel","createSVGPathSegCurvetoQuadraticAbs","createSVGPathSegCurvetoQuadraticRel","createSVGPathSegArcAbs","createSVGPathSegArcRel","createSVGPathSegLinetoHorizontalAbs","createSVGPathSegLinetoHorizontalRel","createSVGPathSegLinetoVerticalAbs","createSVGPathSegLinetoVerticalRel","createSVGPathSegCurvetoCubicSmoothAbs","createSVGPathSegCurvetoCubicSmoothRel","createSVGPathSegCurvetoQuadraticSmoothAbs","createSVGPathSegCurvetoQuadraticSmoothRel","SVGPathSegList","pathElement","_pathElement","_list","_parsePath","_mutationObserverConfig","attributeFilter","_pathElementMutationObserver","_updateListFromPathMutations","_checkPathSynchronizedToList","_pathSegList","takeRecords","mutationRecords","hasPathMutations","record","attributeName","_writeListToPath","_pathSegArrayAsString","pathSeg","newItem","_checkValidIndex","numberOfItems","insertItemBefore","replaceItem","appendItem","pathSegArray","Builder","appendSegment","Source","_string","_currentIndex","_endIndex","_previousCommand","_skipOptionalSpaces","_isCurrentSpace","character","_skipOptionalSpacesOrDelimiter","hasMoreData","peekSegmentType","lookahead","_pathSegTypeFromChar","_nextCommandHelper","previousCommand","initialCommandIsMoveTo","_parseNumber","frac","expsign","startIntPartIndex","scanIntPartIndex","multiplier","_parseArcFlag","flag","flagChar","parseSegment","arcAngle","arcLarge","arcSweep","svgPanZoom","./svg-pan-zoom.js","2","svgNS","_createZoomIn","_createZoomReset","_createZoomOut","controlIcons","getPublicInstance","zoomIn","zoomOut","./svg-utilities","originalState","activeState","updateCTMCached","updateCTM","createRequestAnimationFrame","refreshRate","viewBox","cacheViewBox","processCTM","setCTM","updateCTMOnNextFrame","simpleViewBoxCache","getBBox","getViewBox","getCTM","fit","contain","getOriginalState","getZoom","getRelativeZoom","computeRelativeZoom","getPan","createSVGMatrix","isZoomDifferent","isPanDifferent","beforeZoom","updateCache","onZoom","beforePan","onPan","pendingUpdate","onUpdatedCTM","./utilities","4","viewportSelector","panEnabled","controlIconsEnabled","zoomEnabled","dblClickZoomEnabled","mouseWheelZoomEnabled","preventMouseEventsDefault","zoomScaleSensitivity","minZoom","maxZoom","customEventsHandler","eventsListenerElement","setupSvgAttributes","getBoundingClientRectNormalized","getOrCreateViewport","setBeforeZoom","setOnZoom","setBeforePan","setOnPan","setOnUpdatedCTM","lastMouseWheelEventTime","setupHandlers","eventListeners","handleMouseDown","handleMouseUp","handleMouseMove","touchleave","touchcancel","svgElement","instance","haltEventListeners","enableMouseWheelZoom","wheelListener","handleMouseWheel","disableMouseWheelZoom","getEventPoint","zoomAtPoint","multiply","getSvgCenterPoint","publicZoom","computeFromRelativeZoom","publicZoomAtPoint","resetZoom","resetPan","pan","handleDblClick","mouseAndTouchNormalize","isDblClick","firstEventCTM","stateOrigin","updateBBox","panBy","disableControlIcons","enableControlIcons","publicInstance","enablePan","disablePan","isPanEnabled","enableZoom","disableZoom","isZoomEnabled","isControlIconsEnabled","enableDblClickZoom","disableDblClickZoom","isDblClickZoomEnabled","isMouseWheelZoomEnabled","setZoomScaleSensitivity","setMinZoom","setMaxZoom","zoomBy","zoomAtPointBy","getSizes","realZoom","getSvg","./control-icons","./shadow-viewport","./uniwheel","5","xmlNS","xmlnsNS","xlinkNS","evNS","internetExplorerRedisplayInterval","refreshDefsGlobal","6","deltaX","delatZ","onmousewheel","7","HTMLElement","SVGSVGElement","getSVGDocument","leading","trailing","menuBroadcast","swishLogo","setupModal","setupPanes","setupResize","Save ...","Info & history ...","Reload","Open recent","Share","Follow ...","Chat ...","Chat help room ...","Start TogetherJS ...","Export","Download","Print ...","Edit","Clear messages","Changes","View changes","Find (Ctrl-F)","Find and replace (Shift-Ctrl-F)","Jump to line (Alt-G)","Options","Semantic highlighting","Emacs Keybinding","Examples","Help","show_beware","playFile","copyAttrs","playURL","openExampleFunction","populateExamples","swish_examples","populateHelp","openHelpFunction","swish_help_index","prologSource","tabData","onlyglobal","fullscreen_origin","fullscreen_main","exitFullscreen","collaborate","TogetherJS","urlArgs","waitSeconds","jquery-ui","bloodhound","tagmanager","svg-pan-zoom","cm/mode/prolog","cm/addon/hover/prolog-hover","cm/addon/hover/text-hover","cm/addon/hint/templates-hint","cm/addon/hint/show-context-info","shim","deps"],"mappings":"AAKA,ICJA,SAAAA,EAAAC,GAAA,YAAA,iBAAAC,SAAA,gBAAAA,QAAAC,QAAAD,OAAAC,QAAAH,EAAAI,SAAAH,EAAAD,GAAA,GAAA,SAAAA,GAAA,IAAAA,EAAAI,SAAA,KAAA,IAAAC,OAAA,2CAAA,OAAAJ,GAAAD,IAAAC,EAAAD,IAAA,mBAAAM,QAAAA,OAAAC,KAAA,SAAAP,EAAAC,GAAA,YAAA,SAAAO,GAAAR,EAAAC,GAAAA,EAAAA,GAAAQ,EAAA,IAAAC,GAAAT,EAAAU,cAAA,SAAAD,GAAAE,KAAAZ,EAAAC,EAAAY,KAAAC,YAAAJ,GAAAK,WAAAC,YAAAN,GAAA,QAAAO,GAAAjB,GAAA,GAAAC,KAAAD,GAAA,UAAAA,IAAAA,EAAAkB,OAAAR,EAAAS,GAAAC,KAAApB,EAAA,OAAA,aAAAU,IAAAS,GAAAE,SAAArB,KAAA,UAAAU,GAAA,IAAAT,GAAA,gBAAAA,IAAAA,EAAA,GAAAA,EAAA,IAAAD,IAAA,QAAAsB,GAAAtB,EAAAC,GAAA,MAAAD,GAAAuB,UAAAvB,EAAAuB,SAAAC,gBAAAvB,EAAAuB,cAAA,QAAAC,GAAAzB,EAAAC,EAAAS,GAAA,MAAAS,IAAAO,WAAAzB,GAAAkB,GAAAQ,KAAA3B,EAAA,SAAAA,EAAAS,GAAA,QAAAR,EAAA2B,KAAA5B,EAAAS,EAAAT,KAAAU,IAAAT,EAAA4B,SAAAV,GAAAQ,KAAA3B,EAAA,SAAAA,GAAA,MAAAA,KAAAC,IAAAS,IAAA,gBAAAT,GAAAkB,GAAAQ,KAAA3B,EAAA,SAAAA,GAAA,MAAA8B,IAAAF,KAAA3B,EAAAD,IAAA,IAAAU,IAAAqB,GAAAC,KAAA/B,GAAAkB,GAAAc,OAAAhC,EAAAD,EAAAU,IAAAT,EAAAkB,GAAAc,OAAAhC,EAAAD,GAAAmB,GAAAQ,KAAA3B,EAAA,SAAAA,GAAA,MAAA8B,IAAAF,KAAA3B,EAAAD,IAAA,IAAAU,GAAA,IAAAV,EAAA6B,YAAA,QAAAK,GAAAlC,EAAAC,GAAA,MAAAD,EAAAA,EAAAC,KAAA,IAAAD,EAAA6B,WAAA,MAAA7B,GAAA,QAAAmC,GAAAnC,GAAA,GAAAC,KAAA,OAAAkB,IAAAiB,KAAApC,EAAAqC,MAAAC,QAAA,SAAAtC,EAAAU,GAAAT,EAAAS,IAAA,IAAAT,EAAA,QAAAsC,GAAAvC,GAAA,MAAAA,GAAA,QAAAwC,GAAAxC,GAAA,KAAAA,GAAA,QAAAyC,GAAAzC,EAAAC,EAAAS,EAAAD,GAAA,GAAAiC,EAAA,KAAA1C,GAAAmB,GAAAO,WAAAgB,EAAA1C,EAAA2C,SAAAD,EAAAd,KAAA5B,GAAA4C,KAAA3C,GAAA4C,KAAAnC,GAAAV,GAAAmB,GAAAO,WAAAgB,EAAA1C,EAAA8C,MAAAJ,EAAAd,KAAA5B,EAAAC,EAAAS,GAAAT,EAAA8C,MAAA,QAAA/C,GAAAgD,MAAAvC,IAAA,MAAAT,GAAAU,EAAAqC,MAAA,QAAA/C,KAAA,QAAAiD,KAAAxC,GAAAyC,oBAAA,mBAAAD,GACAjD,EAAAkD,oBAAA,OAAAD,GAAA9B,GAAAgC,QAAA,QAAAC,KAAA7C,KAAA8C,QAAAlC,GAAAkC,QAAAD,EAAAE,MAAA,QAAAC,GAAAvD,GAAA,MAAA,SAAAA,GAAA,UAAAA,IAAA,SAAAA,EAAA,KAAAA,KAAAA,EAAA,IAAAA,EAAAwD,GAAAxB,KAAAhC,GAAAyD,KAAAC,MAAA1D,GAAAA,GAAA,QAAA2D,GAAA3D,EAAAC,EAAAS,GAAA,GAAAD,EAAA,IAAA,SAAAC,GAAA,IAAAV,EAAA6B,SAAA,GAAApB,EAAA,QAAAR,EAAA2D,QAAAC,GAAA,OAAArC,cAAAd,EAAAV,EAAA8D,aAAArD,GAAA,gBAAAC,GAAA,CAAA,IAAAA,EAAA6C,EAAA7C,GAAA,MAAAgC,IAAAqB,GAAAC,IAAAhE,EAAAC,EAAAS,OAAAA,GAAA,MAAA,OAAAA,GAAA,QAAAuD,GAAAjE,EAAAC,EAAAS,EAAAD,GAAA,GAAAiC,GAAAwB,EAAA,EAAAC,EAAA,GAAAC,EAAA3D,EAAA,WAAA,MAAAA,GAAA4D,OAAA,WAAA,MAAAlD,IAAAmD,IAAAtE,EAAAC,EAAA,KAAA6B,EAAAsC,IAAAG,EAAA7D,GAAAA,EAAA,KAAAS,GAAAqD,UAAAvE,GAAA,GAAA,MAAAwE,GAAAtD,GAAAqD,UAAAvE,IAAA,OAAAsE,IAAAzC,IAAA4C,GAAAC,KAAAxD,GAAAmD,IAAAtE,EAAAC,GAAA,IAAAwE,GAAAA,EAAA,KAAAF,EAAA,CAAAA,EAAAA,GAAAE,EAAA,GAAA/D,EAAAA,MAAA+D,GAAA3C,GAAA,CAAA,GAAAoC,GAAAA,GAAA,KAAAO,GAAAP,EAAA/C,GAAAyD,MAAA5E,EAAAC,EAAAwE,EAAAF,SAAAL,KAAAA,EAAAE,IAAAtC,IAAA,IAAAoC,KAAAC,GAAA,MAAAzD,KAAA+D,GAAAA,IAAA3C,GAAA,EAAAY,EAAAhC,EAAA,GAAA+D,GAAA/D,EAAA,GAAA,GAAAA,EAAA,IAAAA,EAAA,GAAAD,IAAAA,EAAAoE,KAAAN,EAAA9D,EAAAqE,MAAAL,EAAAhE,EAAAsE,IAAArC,IAAAA,EAAA,QAAAsC,GAAAhF,GAAA,GAAAC,GAAAS,EAAAV,EAAAiF,cAAAxE,EAAAT,EAAAuB,SAAAmB,EAAAwC,GAAAzE,EAAA,OAAAiC,GAAAA,GAAAzC,EAAAS,EAAAyE,KAAArE,YAAAJ,EAAAC,cAAAF,IAAAiC,EAAAvB,GAAAmD,IAAArE,EAAA,WAAAA,EAAAc,WAAAC,YAAAf,GAAA,SAAAyC,IAAAA,EAAA,SAAAwC,GAAAzE,GAAAiC,EAAAA,GAAA,QAAA0C,GAAApF,EAAAC,GAAA,IAAA,GAAAS,GAAAD,EAAAiC,KAAAwB,EAAA,EAAAC,EAAAnE,EAAAkB,OAAAgD,EAAAC,EAAAD,IAAAzD,EAAAT,EAAAkE,GAAAzD,EAAAmE,QAAAlE,EAAAD,EAAAmE,MAAAS,QAAApF,GAAA,SAAAS,IAAAgC,EAAAwB,GAAAoB,GAAAC,IAAA9E,EAAA,YAAA,KAAAiC,EAAAwB,KAAAzD,EAAAmE,MAAAS,QAAA,KAAA,KAAA5E,EAAAmE,MAAAS,SAAAG,GAAA/E,KAAAiC,EAAAwB,GAAAc,EAAAvE,KAAA,SAAAC,IAAAgC,EAAAwB,GAAA,OAAAoB,GAAAtB,IAAAvD,EAAA,UAAAC,IAAA,KAAAwD,EAAA,EAAAA,EAAAC,EAAAD,IAAA,MAAAxB,EAAAwB,KAAAlE,EAAAkE,GAAAU,MAAAS,QAAA3C,EAAAwB,GAAA,OAAAlE,GAAA,QAAAyF,GAAAzF,EAAAC,GAAA,GAAAS,EAAA,OAAAA,GAAA,mBAAAV,GAAA0F,qBAAA1F,EAAA0F,qBAAAzF,GAAA,KAAA,mBAAAD,GAAA2F,iBAAA3F,EAAA2F,iBAAA1F,GAAA,QAAA,SAAAA,GAAAA,GAAAqB,EAAAtB,EAAAC,GAAAkB,GAAAyE,OAAA5F,GAAAU,GAAAA,EAAA,QAAAmF,GAAA7F,EAAAC,GAAA,IAAA,GAAAS,GAAA,EAAAD,EAAAT,EAAAkB,OAAAR,EAAAD,EAAAC,IAAA4E,GAAAtB,IAAAhE,EAAAU,GAAA,cAAAT,GAAAqF,GAAAC,IAAAtF,EAAAS,GAAA,eAAA,QAAAoF,GAAA9F,EAAAC,EAAAS,EAAAD,EAAAiC,GAAA,IAAA,GAAAwB,GAAAC,EAAAC,EAAAtC,EAAAyC,EAAAE,EAAAsB,EAAA9F,EAAA+F,yBAAAC,KAAAC,EAAA,EAAAC,EAAAnG,EAAAkB,OAAAgF,EAAAC,EAAAD,IAAA,GAAAhC,EAAAlE,EAAAkG,GAAAhC,GAAA,IAAAA,EAAA,GAAA,WAAA/C,GAAAC,KAAA8C,GAAA/C,GAAAyE,MAAAK,EAAA/B,EAAArC,UAAAqC,GAAAA,OAAA,IAAAkC,GAAApE,KAAAkC,GAAA,CAAA,IAAAC,EAAAA,GAAA4B,EAAAjF,YAAAb,EAAAU,cAAA,QAAAyD,GAAAiC,GAAA1B,KAAAT,KAAA,GAAA,KAAA,GAAA1C,cAAAM,EAAAwE,GAAAlC,IAAAkC,GAAAC,SAAApC,EAAAqC,UAAA1E,EAAA,GAAAX,GAAAsF,cAAAvC,GAAApC,EAAA,GAAA2C,EAAA3C,EAAA,GAAA2C,KAAAN,EAAAA,EAAAuC,SAAAvF,IAAAyE,MAAAK,EAAA9B,EAAAwC,YAAAxC,EAAA4B,EAAAa,WAAAzC,EAAA0C,YAAA,OAAAZ,GAAAa,KAAA7G,EAAA8G,eAAA7C,GAAA,KAAA6B,EAAAc,YAAA,GAAAX,EAAA,EAAAhC,EAAA+B,EAAAC,MAAA,GAAAzF,GAAAU,GAAA6F,QAAA9C,EAAAzD,IAAA,EAAAiC,GAAAA,EAAAoE,KAAA5C,OAAA,IAAAK,EAAApD,GAAA8F,SAAA/C,EAAAe,cAAAf,GAAAC,EAAAsB,EAAAM,EAAAjF,YAAAoD,GAAA,UAAAK,GAAAsB,EAAA1B,GAAAzD,EAAA,IAAA+D,EAAA,EAAAP,EAAAC,EAAAM,MAAAyC,GAAAlF,KAAAkC,EAAA9C,MAAA,KAAAV,EAAAoG,KAAA5C,EAAA,OAAA6B,GAAA,QAAAoB,KAAA,OAAA,EAAA,QAAAC,KAAA,OAAA,EAAA,QAAAC,KAAA,IAAA,MAAA5G,IAAA6G,cAAA,MAAAtH,KAAA,QAAAuH,GAAAvH,EAAAC,EAAAS,EAAAD,EAAAiC,EAAAwB,GAAA,GAAAC,GAAAC,CAAA,IAAA,gBAAAnE,GAAA,CAAA,gBAAAS,KAAAD,EAAAA,GAAAC,EAAAA,EAAA,OAAA,KAAA0D,IAAAnE,GAAAsH,EAAAvH,EAAAoE,EAAA1D,EAAAD,EAAAR,EAAAmE,GAAAF,EAAA,OAAAlE,GAAA,GAAA,MAAAS,GAAA,MAAAiC,GAAAA,EAAAhC,EAAAD,EAAAC,EAAA,QAAA,MAAAgC,IAAA,gBAAAhC,IAAAgC,EAAAjC,EAAAA,EAAA,SAAAiC,EAAAjC,EAAAA,EAAAC,EAAAA,EAAA,SAAAgC,KAAA,EAAAA,EAAA0E,MAAA,KAAA1E,EAAA,MAAA1C,EAAA,OAAA,KAAAkE,IAAAC,EAAAzB,EAAAA,EAAA,SAAA1C,GAAA,MAAAmB,MAAAqG,IAAAxH,GAAAmE,EAAApB,MAAAxC,KAAAkH,YAAA/E,EAAAgF,KAAAvD,EAAAuD,OAAAvD,EAAAuD,KAAAvG,GAAAuG,SAAA1H,EAAAoC,KAAA,WAAAjB,GAAAwG,MAAAC,IAAArH,KAAAN,EAAAyC,EAAAjC,EAAAC,KAAA,QAAAmH,GAAA7H,EAAAC,GAAA,MAAAqB,GAAAtB,EAAA,UAAAsB,EAAA,KAAArB,EAAA4B,SAAA5B,EAAAA,EAAA2G,WAAA,MAAAzF,GAAA,SAAAnB,GAAA,IAAAA,EAAAA,EAAA,QAAA8H,GAAA9H,GAAA,MAAAA,GAAAoB,MAAA,OAAApB,EAAA8D,aAAA,SAAA,IAAA9D,EAAAoB,KAAApB,EAAA,QAAA+H,GAAA/H,GAAA,GAAAC,GAAA+H,GAAArD,KAAA3E,EAAAoB,KAAA,OAAAnB,GAAAD,EAAAoB,KAAAnB,EAAA,GAAAD,EAAAiI,gBAAA,QAAAjI,EAAA,QAAAkI,GAAAlI,EAAAC,GAAA,GAAAS,GAAAD,EAAAiC,EAAAwB,EAAAC,EAAAC,EAAAtC,EAAAyC,CAAA,IAAA,IAAAtE,EAAA4B,SAAA,CAAA,GAAAyD,GAAA6C,QAAAnI,KAAAkE,EAAAoB,GAAA8C,OAAApI,GAAAmE,EAAAmB,GAAAtB,IAAA/D,EAAAiE,GAAAK,EAAAL,EAAAmE,QAAA,OAAAlE,GAAAmE,OAAAnE,EAAAkE,SAAA,KAAA3F,IAAA6B,GAAA,IAAA7D,EAAA,EAAAD,EAAA8D,EAAA7B,GAAAxB,OAAAR,EAAAD,EAAAC,IAAAS,GAAAwG,MAAAC,IAAA3H,EAAAyC,EAAA6B,EAAA7B,GAAAhC,IAAAqD,GAAAoE,QAAAnI,KAAAoE,EAAAL,GAAAqE,OAAApI,GAAA8B,EAAAX,GAAAoH,UAAAnE,GAAAL,GAAAC,IAAA/D,EAAA6B,KAAA,QAAA0G,GAAAxI,EAAAC,GAAA,GAAAS,GAAAT,EAAAsB,SAAAC,aAAA,WAAAd,GAAA+H,GAAAzG,KAAAhC,EAAAoB,MAAAnB,EAAAyI,QAAA1I,EAAA0I,QAAA,UAAAhI,GAAA,aAAAA,IAAAT,EAAA0I,aAAA3I,EAAA2I,cAAA,QAAAC,GAAA5I,EAAAC,EAAAS,EAAAD,GAAAR,EAAAkE,GAAApB,SAAA9C,EAAA,IAAAyC,GAAAwB,EAAAE,EAAAtC,EAAAyC,EAAAE,EAAAsB,EAAA,EAAAE,EAAAjG,EAAAkB,OAAAgF,EAAAD,EAAA,EAAA4C,EAAA5I,EAAA,GAAA6I,EAAA3H,GAAAO,WAAAmH,EAAA,IAAAC,GAAA7C,EAAA,GAAA,gBAAA4C,KAAA1C,GAAA4C,YAAAC,GAAAhH,KAAA6G,GAAA,MAAA7I,GAAAoC,KAAA,SAAAM,GAAA,GAAAwB,GAAAlE,EAAAiJ,GAAAvG,EAAAoG,KAAA7I,EAAA,GAAA4I,EAAAjH,KAAArB,KAAAmC,EAAAwB,EAAAgF,SAAAN,EAAA1E,EAAAjE,EAAAS,EAAAD,IAAA,IAAAwF,IAAAvD,EAAAoD,EAAA7F,EAAAD,EAAA,GAAAiF,eAAA,EAAAjF,EAAAS,GAAAyD,EAAAxB,EAAAkE,WAAA,IAAAlE,EAAAiE,WAAAzF,SAAAwB,EAAAwB,GAAAA,GAAAzD,GAAA,CAAA,IAAA2D,EAAAjD,GAAAgI,IAAA1D,EAAA/C,EAAA,UAAAoF,GAAAhG,EAAAsC,EAAAlD,OAAA6E,EAAAE,EAAAF,IAAAxB,EAAA7B,EAAAqD,IAAAG,IAAA3B,EAAApD,GAAAiI,MAAA7E,GAAA,GAAA,GAAAzC,GAAAX,GAAAyE,MAAAxB,EAAAqB,EAAAlB,EAAA,YAAA7D,EAAAkB,KAAA5B,EAAA+F,GAAAxB,EAAAwB,EAAA,IAAAjE,EAAA,IAAA2C,EAAAL,EAAAA,EAAAlD,OAAA,GAAA+D,cAAA9D,GAAAgI,IAAA/E,EAAA2D,GAAAhC,EAAA,EAAAA,EAAAjE,EAAAiE,IAAAxB,EAAAH,EAAA2B,GAAAmB,GAAAlF,KAAAuC,EAAAnD,MAAA,MAAAkE,GAAA8C,OAAA7D,EAAA,eAAApD,GAAA8F,SAAAxC,EAAAF,KAAAA,EAAA8E,IAAAlI,GAAAmI,UAAAnI,GAAAmI,SAAA/E,EAAA8E,KAAA7I,EAAA+D,EAAAsC,YAAAjD,QAAA2F,GAAA,IAAA9E,IAAA,MAAAzE,GAAA,QAAAwJ,GAAAxJ,EAAAC,EAAAS,GAAA,IAAA,GAAAD,GAAAiC,EAAAzC,EAAAkB,GAAAc,OAAAhC,EAAAD,GAAAA,EAAAkE,EAAA,EAAA,OAAAzD,EAAAiC,EAAAwB,IAAAA,IAAAxD,GAAA,IAAAD,EAAAoB,UAAAV,GAAAsI,UAAAhE,EAAAhF,IAAAA,EAAAM,aAAAL,GAAAS,GAAA8F,SAAAxG,EAAAwE,cAAAxE,IAAAoF,EAAAJ,EAAAhF,EAAA,WAAAA,EAAAM,WAAAC,YAAAP,GAAA,OAAAT,GAAA,QAAA0J,GAAA1J,EAAAC,EAAAS,GAAA,GAAAD,GAAAiC,EAAAwB,EAAAC,EAAAC,EAAApE,EAAA4E,KAAA,OAAAlE,GAAAA,GAAAiJ,GAAA3J,GAAAU,IAAAyD,EAAAzD,EAAAkJ,iBAAA3J,IAAAS,EAAAT,GAAA,KAAAkE,GAAAhD,GAAA8F,SAAAjH,EAAAiF,cAAAjF,KAAAmE,EAAAhD,GAAAyD,MAAA5E,EAAAC,KAAAkG,GAAA0D,oBAAAC,GAAA9H,KAAAmC,IAAA4F,GAAA/H,KAAA/B,KAAAQ,EAAA2D,EAAA4F,MAAAtH,EAAA0B,EAAA6F,SAAA/F,EAAAE,EAAA8F,SAAA9F,EAAA6F,SAAA7F,EAAA8F,SAAA9F,EAAA4F,MAAA7F,EAAAA,EAAAzD,EAAAsJ,MAAA5F,EAAA4F,MAAAvJ,EAAA2D,EAAA6F,SAAAvH,EAAA0B,EAAA8F,SAAAhG,IAAA,SAAAC,EAAAA,EAAA,GAAAA,EAAA,QAAAgG,GAAAnK,EAAAC,GAAA,OAAAsF,IAAA,WAAA,MAAAvF,gBAAAO,MAAAgF,KAAAhF,KAAAgF,IAAAtF,GAAA8C,MAAAxC,KAAAkH,aAAA,QAAA2C,GAAApK,GAAA,GAAAA,IAAAqK,IAAA,MAAArK,EAAA,KAAA,GAAAC,GAAAD,EAAA,GAAAsK,cAAAtK,EAAAgD,MAAA,GAAAtC,EAAA6J,GAAArJ,OAAAR,KAAA,GAAAV,EAAAuK,GAAA7J,GAAAT,EAAAD,IAAAqK,IAAA,MAAArK,GAAA,QAAAwK,GAAAxK,GAAA,GAAAC,GAAAkB,GAAAsJ,SAAAzK,EAAA,OAAAC,KAAAA,EAAAkB,GAAAsJ,SAAAzK,GAAAoK,EAAApK,IAAAA,GAAAC,EAAA,QAAAyK,GAAA1K,EAAAC,EAAAS,GAAA,GAAAD,GAAAiE,GAAAC,KAAA1E,EAAA,OAAAQ,GAAAkK,KAAAC,IAAA,EAAAnK,EAAA,IAAAC,GAAA,KAAAD,EAAA,IAAA,MAAAR,EAAA,QAAA4K,GAAA7K,EAAAC,EAAAS,EAAAD,EAAAiC,GAAA,GAAAwB,GAAAC,EAAA,CAAA,KAAAD,EAAAxD,KAAAD,EAAA,SAAA,WAAA,EAAA,UAAAR,EAAA,EAAA,EAAAiE,EAAA,EAAAA,GAAA,EAAA,WAAAxD,IAAAyD,GAAAhD,GAAAmD,IAAAtE,EAAAU,EAAAoK,GAAA5G,IAAA,EAAAxB,IAAAjC,GAAA,YAAAC,IAAAyD,GAAAhD,GAAAmD,IAAAtE,EAAA,UAAA8K,GAAA5G,IAAA,EAAAxB,IAAA,WAAAhC,IAAAyD,GAAAhD,GAAAmD,IAAAtE,EAAA,SAAA8K,GAAA5G,GAAA,SAAA,EAAAxB,MAAAyB,GAAAhD,GAAAmD,IAAAtE,EAAA,UAAA8K,GAAA5G,IAAA,EAAAxB,GAAA,YAAAhC,IAAAyD,GAAAhD,GAAAmD,IAAAtE,EAAA,SAAA8K,GAAA5G,GAAA,SAAA,EAAAxB,IAAA,OAAAyB,GAAA,QAAA4G,GAAA/K,EAAAC,EAAAS,GAAA,GAAAD,GAAAiC,EAAAiH,GAAA3J,GAAAkE,EAAAwF,EAAA1J,EAAAC,EAAAyC,GAAAyB,EAAA,eAAAhD,GAAAmD,IAAAtE,EAAA,aAAA,EAAA0C,EAAA,OAAAoH,IAAA9H,KAAAkC,GAAAA,GAAAzD,EAAA0D,IAAAgC,GAAA6E,qBAAA9G,IAAAlE,EAAA4E,MAAA3E,IAAA,SAAAiE,IAAAA,EAAAlE,EAAA,SAAAC,EAAA,GAAAqK,cAAArK,EAAA+C,MAAA,KAAAkB,EAAA+G,WAAA/G,IAAA,EAAAA,EAAA2G,EAAA7K,EAAAC,EAAAS,IAAAyD,EAAA,SAAA,WAAA1D,EAAAiC,GAAA,MAAA,QAAAwI,GAAAlL,EAAAC,EAAAS,EAAAD,EAAAiC,GAAA,MAAA,IAAAwI,GAAAC,UAAAC,KAAApL,EAAAC,EAAAS,EAAAD,EAAAiC,GAAA,QAAA2I,KAAAC,KAAA7K,GAAA8K,UAAA,GAAAvL,EAAAwL,sBAAAxL,EAAAwL,sBAAAH,GAAArL,EAAAyL,WAAAJ,EAAAlK,GAAAuK,GAAAC,UAAAxK,GAAAuK,GAAAE,QAAA,QAAAC,KAAA,MAAA7L,GAAAyL,WAAA,WAAAK,GAAA,SAAAA,GAAA3K,GAAA4K,MAAA,QAAAC,GAAAhM,EAAAC,GAAA,GAAAS,GAAAD,EAAA,EAAAiC,GAAAuJ,OAAAjM,EAAA,KAAAC,EAAAA,EAAA,EAAA,EAAAQ,EAAA,EAAAA,GAAA,EAAAR,EAAAS,EAAAoK,GAAArK,GAAAiC,EAAA,SAAAhC,GAAAgC,EAAA,UAAAhC,GAAAV,CAAA,OAAAC,KAAAyC,EAAAwJ,QAAAxJ,EAAAsH,MAAAhK,GAAA0C,EAAA,QAAAyJ,GAAAnM,EAAAC,EAAAS,GAAA,IAAA,GAAAD,GAAAiC,GAAA0J,EAAAC,SAAApM,QAAAqM,OAAAF,EAAAC,SAAA,MAAAnI,EAAA,EAAAC,EAAAzB,EAAAxB,OAAAgD,EAAAC,EAAAD,IAAA,GAAAzD,EAAAiC,EAAAwB,GAAAtC,KAAAlB,EAAAT,EAAAD,GAAA,MAAAS,GAAA,QAAA8L,GAAAvM,EAAAC,EAAAS,GAAA,GAAAD,GAAAiC,EAAAwB,EAAAC,EAAAC,EAAAtC,EAAAyC,EAAAE,EAAAsB,EAAA,SAAA9F,IAAA,UAAAA,GAAAgG,EAAA1F,KAAA2F,KAAAC,EAAAnG,EAAA4E,MAAApE,EAAAR,EAAA6B,UAAA2D,GAAAxF,GAAA6I,EAAAvD,GAAAC,IAAAvF,EAAA,SAAAU,GAAA8L,QAAArI,EAAAhD,GAAAsL,YAAAzM,EAAA,MAAA,MAAAmE,EAAAuI,WAAAvI,EAAAuI,SAAA,EAAAtI,EAAAD,EAAAwI,MAAAC,KAAAzI,EAAAwI,MAAAC,KAAA,WAAAzI,EAAAuI,UAAAtI,MAAAD,EAAAuI,WAAAzG,EAAA4G,OAAA,WAAA5G,EAAA4G,OAAA,WAAA1I,EAAAuI,WAAAvL,GAAAqL,MAAAxM,EAAA,MAAAkB,QAAAiD,EAAAwI,MAAAC,WAAA,KAAAnM,IAAAR,GAAA,GAAAyC,EAAAzC,EAAAQ,GAAAqM,GAAA9K,KAAAU,GAAA,CAAA,SAAAzC,GAAAQ,GAAAyD,EAAAA,GAAA,WAAAxB,EAAAA,KAAAlC,EAAA,OAAA,QAAA,CAAA,GAAA,SAAAkC,IAAAmG,GAAA,SAAAA,EAAApI,GAAA,QAAAD,IAAA,EAAA0F,EAAAzF,GAAAoI,GAAAA,EAAApI,IAAAU,GAAAyD,MAAA5E,EAAAS,GAAA,GAAAqB,GAAAX,GAAA4L,cAAA9M,GAAA6B,IAAAX,GAAA4L,cAAA7G,GAAA,CAAAH,GAAA,IAAA/F,EAAA6B,WAAAnB,EAAAsM,UAAA7G,EAAA6G,SAAA7G,EAAA8G,UAAA9G,EAAA+G,WAAA3I,EAAAsE,GAAAA,EAAAxD,QAAA,MAAAd,IAAAA,EAAAe,GAAAC,IAAAvF,EAAA,YAAAyE,EAAAtD,GAAAmD,IAAAtE,EAAA,WAAA,SAAAyE,IAAAF,EAAAE,EAAAF,GAAAa,GAAApF,IAAA,GAAAuE,EAAAvE,EAAA4E,MAAAS,SAAAd,EAAAE,EAAAtD,GAAAmD,IAAAtE,EAAA,WAAAoF,GAAApF,OAAA,WAAAyE,GAAA,iBAAAA,GAAA,MAAAF,IAAA,SAAApD,GAAAmD,IAAAtE,EAAA,WAAA8B,IAAAmE,EAAArD,KAAA,WAAAuD,EAAAd,QAAAd,IAAA,MAAAA,IAAAE,EAAA0B,EAAAd,QAAAd,EAAA,SAAAE,EAAA,GAAAA,IAAA0B,EAAAd,QAAA,iBAAA3E,EAAAsM,WAAA7G,EAAA6G,SAAA,SAAA/G,EAAA4G,OAAA,WAAA1G,EAAA6G,SAAAtM,EAAAsM,SAAA,GAAA7G,EAAA8G,UAAAvM,EAAAsM,SAAA,GAAA7G,EAAA+G,UAAAxM,EAAAsM,SAAA,MAAAlL,GAAA,CAAA,KAAArB,IAAAyF,GAAApE,IAAA+G,EAAA,UAAAA,KAAArI,EAAAqI,EAAA0C,QAAA1C,EAAAvD,GAAA8C,OAAApI,EAAA,UAAAqF,QAAAd,IAAAL,IAAA2E,EAAA0C,QAAA/K,GAAAA,GAAA4E,GAAApF,IAAA,GAAAiG,EAAArD,KAAA,WAAApC,GAAA4E,GAAApF,IAAAsF,GAAA6H,OAAAnN,EAAA,SAAA,KAAAS,IAAAyF,GAAA/E,GAAAyD,MAAA5E,EAAAS,EAAAyF,EAAAzF,OAAAqB,EAAAqK,EAAA3L,EAAAqI,EAAApI,GAAA,EAAAA,EAAAwF,GAAAxF,IAAAoI,KAAAA,EAAApI,GAAAqB,EAAAgD,MAAAtE,IAAAsB,EAAAiD,IAAAjD,EAAAgD,MAAAhD,EAAAgD,MAAA,KAAA,QAAAsI,GAAApN,EAAAC,GAAA,GAAAS,GAAAD,EAAAiC,EAAAwB,EAAAC,CAAA,KAAAzD,IAAAV,GAAA,GAAAS,EAAAU,GAAAkM,UAAA3M,GAAAgC,EAAAzC,EAAAQ,GAAAyD,EAAAlE,EAAAU,GAAA4M,MAAAC,QAAArJ,KAAAxB,EAAAwB,EAAA,GAAAA,EAAAlE,EAAAU,GAAAwD,EAAA,IAAAxD,IAAAD,IAAAT,EAAAS,GAAAyD,QAAAlE,GAAAU,IAAAyD,EAAAhD,GAAAqM,SAAA/M,GAAA0D,GAAA,UAAAA,GAAA,CAAAD,EAAAC,EAAAsJ,OAAAvJ,SAAAlE,GAAAS,EAAA,KAAAC,IAAAwD,GAAAxD,IAAAV,KAAAA,EAAAU,GAAAwD,EAAAxD,GAAAT,EAAAS,GAAAgC,OAAAzC,GAAAQ,GAAAiC,EAAA,QAAA0J,GAAApM,EAAAC,EAAAS,GAAA,GAAAD,GAAAiC,EAAAwB,EAAA,EAAAC,EAAAiI,EAAAsB,WAAAxM,OAAAkD,EAAAjD,GAAAwM,WAAAd,OAAA,iBAAA/K,GAAA8L,OAAA9L,EAAA,WAAA,GAAAY,EAAA,OAAA,CAAA,KAAA,GAAAzC,GAAA6L,IAAAD,IAAAnL,EAAAiK,KAAAC,IAAA,EAAArG,EAAAsJ,UAAAtJ,EAAAuJ,SAAA7N,GAAAQ,EAAAC,EAAA6D,EAAAuJ,UAAA,EAAA5J,EAAA,EAAAzD,EAAA0D,EAAA,EAAArC,EAAAyC,EAAAwJ,OAAA7M,OAAAiD,EAAArC,EAAAqC,IAAAI,EAAAwJ,OAAA5J,GAAA6J,IAAA9J,EAAA,OAAAE,GAAA6J,WAAAjO,GAAAuE,EAAAL,EAAAxD,IAAAwD,EAAA,GAAApC,EAAApB,GAAAoB,GAAAsC,EAAA6J,WAAAjO,GAAAuE,EAAA,EAAA,IAAAH,EAAA8J,YAAAlO,GAAAuE,KAAA,IAAAA,EAAAH,EAAAzB,SAAAiL,KAAA5N,EAAAmO,MAAAhN,GAAAoH,UAAAtI,GAAAmO,KAAAjN,GAAAoH,QAAA,GAAA8F,iBAAAC,OAAAnN,GAAAmN,OAAA/H,UAAA7F,GAAA6N,mBAAAtO,EAAAuO,gBAAA9N,EAAAmN,UAAA/B,IAAAD,IAAAiC,SAAApN,EAAAoN,SAAAC,UAAAU,YAAA,SAAAxO,EAAAS,GAAA,GAAAD,GAAAU,GAAAuN,MAAA1O,EAAAuE,EAAA6J,KAAAnO,EAAAS,EAAA6D,EAAA6J,KAAAC,cAAApO,IAAAsE,EAAA6J,KAAAE,OAAA,OAAA/J,GAAAwJ,OAAAjH,KAAArG,GAAAA,GAAAkO,KAAA,SAAA1O,GAAA,GAAAS,GAAA,EAAAD,EAAAR,EAAAsE,EAAAwJ,OAAA7M,OAAA,CAAA,IAAAwB,EAAA,MAAAnC,KAAA,KAAAmC,GAAA,EAAAhC,EAAAD,EAAAC,IAAA6D,EAAAwJ,OAAArN,GAAAsN,IAAA,EAAA,OAAA/N,IAAAmE,EAAA6J,WAAAjO,GAAAuE,EAAA,EAAA,IAAAH,EAAA8J,YAAAlO,GAAAuE,EAAAtE,KAAAmE,EAAAwK,WAAA5O,GAAAuE,EAAAtE,IAAAM,QAAAkE,EAAAF,EAAA4J,KAAA,KAAAf,EAAA3I,EAAAF,EAAA6J,KAAAC,eAAAnK,EAAAC,EAAAD,IAAA,GAAAzD,EAAA2L,EAAAsB,WAAAxJ,GAAAtC,KAAA2C,EAAAvE,EAAAyE,EAAAF,EAAA6J,MAAA,MAAAjN,IAAAO,WAAAjB,EAAAkO,QAAAxN,GAAAsL,YAAAlI,EAAAqJ,KAAArJ,EAAA6J,KAAA5B,OAAAmC,KAAAxN,GAAA0N,MAAApO,EAAAkO,KAAAlO,IAAAA,CAAA,OAAAU,IAAAgI,IAAA1E,EAAA0H,EAAA5H,GAAApD,GAAAO,WAAA6C,EAAA6J,KAAAtJ,QAAAP,EAAA6J,KAAAtJ,MAAAlD,KAAA5B,EAAAuE,GAAAA,EAAAuK,SAAAvK,EAAA6J,KAAAU,UAAAlM,KAAA2B,EAAA6J,KAAAxL,KAAA2B,EAAA6J,KAAAW,UAAAlM,KAAA0B,EAAA6J,KAAAvL,MAAAgK,OAAAtI,EAAA6J,KAAAvB,QAAA1L,GAAAuK,GAAAsD,MAAA7N,GAAAoH,OAAAzG,GAAA8L,KAAA5N,EAAAiP,KAAA1K,EAAAiI,MAAAjI,EAAA6J,KAAA5B,SAAAjI,EACA,QAAA2K,GAAAlP,GAAA,GAAAC,GAAAD,EAAAqC,MAAAC,OAAA,OAAArC,GAAAkP,KAAA,KAAA,QAAAC,GAAApP,GAAA,MAAAA,GAAA8D,cAAA9D,EAAA8D,aAAA,UAAA,GAAA,QAAAuL,GAAArP,EAAAC,EAAAS,EAAAD,GAAA,GAAAiC,EAAA,IAAA4K,MAAAC,QAAAtN,GAAAkB,GAAAiB,KAAAnC,EAAA,SAAAA,EAAAyC,GAAAhC,GAAA4O,GAAAtN,KAAAhC,GAAAS,EAAAT,EAAA0C,GAAA2M,EAAArP,EAAA,KAAA,gBAAA0C,IAAA,MAAAA,EAAAzC,EAAA,IAAA,IAAAyC,EAAAhC,EAAAD,SAAA,IAAAC,GAAA,WAAAS,GAAAC,KAAAnB,GAAAQ,EAAAT,EAAAC,OAAA,KAAAyC,IAAAzC,GAAAoP,EAAArP,EAAA,IAAA0C,EAAA,IAAAzC,EAAAyC,GAAAhC,EAAAD,GAAA,QAAA8O,GAAAvP,GAAA,MAAA,UAAAC,EAAAS,GAAA,gBAAAT,KAAAS,EAAAT,EAAAA,EAAA,IAAA,IAAAQ,GAAAiC,EAAA,EAAAwB,EAAAjE,EAAAuB,cAAAa,MAAAC,OAAA,IAAAnB,GAAAO,WAAAhB,GAAA,KAAAD,EAAAyD,EAAAxB,MAAA,MAAAjC,EAAA,IAAAA,EAAAA,EAAAuC,MAAA,IAAA,KAAAhD,EAAAS,GAAAT,EAAAS,QAAA+O,QAAA9O,KAAAV,EAAAS,GAAAT,EAAAS,QAAAqG,KAAApG,IAAA,QAAA+O,GAAAzP,EAAAC,EAAAS,EAAAD,GAAA,QAAA0D,GAAAC,GAAA,GAAAtC,EAAA,OAAAY,GAAA0B,IAAA,EAAAjD,GAAAiB,KAAApC,EAAAoE,OAAA,SAAApE,EAAAoE,GAAA,GAAAG,GAAAH,EAAAnE,EAAAS,EAAAD,EAAA,OAAA,gBAAA8D,IAAAL,GAAAxB,EAAA6B,GAAAL,IAAApC,EAAAyC,GAAA,QAAAtE,EAAAyP,UAAAF,QAAAjL,GAAAJ,EAAAI,IAAA,KAAAzC,EAAA,GAAAY,MAAAwB,EAAAlE,IAAA2P,EAAA,OAAAxL,GAAAlE,EAAAyP,UAAA,MAAAhN,EAAA,MAAAyB,EAAA,KAAA,QAAAyL,GAAA5P,EAAAC,GAAA,GAAAS,GAAAD,EAAAiC,EAAAvB,GAAA0O,aAAAC,eAAA,KAAApP,IAAAT,GAAA,SAAAA,EAAAS,MAAAgC,EAAAhC,GAAAV,EAAAS,IAAAA,OAAAC,GAAAT,EAAAS,GAAA,OAAAD,IAAAU,GAAAoH,QAAA,EAAAvI,EAAAS,GAAAT,EAAA,QAAA+P,GAAA/P,EAAAC,EAAAS,GAAA,IAAA,GAAAD,GAAAiC,EAAAwB,EAAAC,EAAAC,EAAApE,EAAAgQ,SAAAlO,EAAA9B,EAAA0P,UAAA,MAAA5N,EAAA,IAAAA,EAAAmO,QAAA,SAAAxP,IAAAA,EAAAT,EAAAkQ,UAAAjQ,EAAAkQ,kBAAA,gBAAA,IAAA1P,EAAA,IAAAiC,IAAA0B,GAAA,GAAAA,EAAA1B,IAAA0B,EAAA1B,GAAAV,KAAAvB,GAAA,CAAAqB,EAAA0N,QAAA9M,EAAA,OAAA,GAAAZ,EAAA,IAAApB,GAAAwD,EAAApC,EAAA,OAAA,CAAA,IAAAY,IAAAhC,GAAA,CAAA,IAAAoB,EAAA,IAAA9B,EAAAoQ,WAAA1N,EAAA,IAAAZ,EAAA,IAAA,CAAAoC,EAAAxB,CAAA,OAAAyB,IAAAA,EAAAzB,GAAAwB,EAAAA,GAAAC,EAAA,GAAAD,EAAA,MAAAA,KAAApC,EAAA,IAAAA,EAAA0N,QAAAtL,GAAAxD,EAAAwD,GAAA,QAAAmM,IAAArQ,EAAAC,EAAAS,EAAAD,GAAA,GAAAiC,GAAAwB,EAAAC,EAAAC,EAAAtC,EAAAyC,KAAAE,EAAAzE,EAAA0P,UAAA1M,OAAA,IAAAyB,EAAA,GAAA,IAAAN,IAAAnE,GAAAoQ,WAAA7L,EAAAJ,EAAA3C,eAAAxB,EAAAoQ,WAAAjM,EAAA,KAAAD,EAAAO,EAAAwL,QAAA/L,GAAA,GAAAlE,EAAAsQ,eAAApM,KAAAxD,EAAAV,EAAAsQ,eAAApM,IAAAjE,IAAA6B,GAAArB,GAAAT,EAAAuQ,aAAAtQ,EAAAD,EAAAuQ,WAAAtQ,EAAAD,EAAAwQ,WAAA1O,EAAAoC,EAAAA,EAAAO,EAAAwL,QAAA,GAAA,MAAA/L,EAAAA,EAAApC,MAAA,IAAA,MAAAA,GAAAA,IAAAoC,EAAA,CAAA,GAAAC,EAAAI,EAAAzC,EAAA,IAAAoC,IAAAK,EAAA,KAAAL,IAAAC,EAAA,IAAAzB,IAAA6B,GAAA,GAAAH,EAAA1B,EAAA+N,MAAA,KAAArM,EAAA,KAAAF,IAAAC,EAAAI,EAAAzC,EAAA,IAAAsC,EAAA,KAAAG,EAAA,KAAAH,EAAA,KAAA,CAAAD,KAAA,EAAAA,EAAAI,EAAA7B,GAAA6B,EAAA7B,MAAA,IAAAwB,EAAAE,EAAA,GAAAK,EAAA+K,QAAApL,EAAA,IAAA,OAAA,GAAAD,KAAA,EAAA,GAAAA,GAAAnE,EAAA,OAAAC,EAAAkE,EAAAlE,OAAA,KAAAA,EAAAkE,EAAAlE,GAAA,MAAA8F,GAAA,OAAA2K,MAAA,cAAAC,MAAAxM,EAAA4B,EAAA,sBAAAjE,EAAA,OAAAoC,IAAA,OAAAwM,MAAA,UAAAE,KAAA3Q,GAFA,GAAAS,OAAAD,GAAAT,EAAAI,SAAAsC,GAAAmO,OAAAC,eAAA5M,GAAAxD,GAAAsC,MAAAmB,GAAAzD,GAAA4L,OAAAlI,GAAA1D,GAAAoG,KAAAhF,GAAApB,GAAAqQ,QAAAxM,MAAAE,GAAAF,GAAAyM,SAAAjL,GAAAxB,GAAA0M,eAAAhL,GAAAF,GAAAiL,SAAA9K,GAAAD,GAAArE,KAAAiP,QAAA1K,MAAA0C,GAAA,QAAA1H,GAAA,SAAAnB,EAAAC,GAAA,MAAA,IAAAkB,IAAA+P,GAAA9F,KAAApL,EAAAC,IAAA6I,GAAA,qCAAAqI,GAAA,QAAAC,GAAA,YAAAC,GAAA,SAAArR,EAAAC,GAAA,MAAAA,GAAAqK,cAAAnJ,IAAA+P,GAAA/P,GAAAgK,WAAAmG,OAAAzI,GAAA0I,YAAApQ,GAAAD,OAAA,EAAAsQ,QAAA,WAAA,MAAAtN,IAAAtC,KAAArB,OAAAgF,IAAA,SAAAvF,GAAA,MAAA,OAAAA,EAAAkE,GAAAtC,KAAArB,MAAAP,EAAA,EAAAO,KAAAP,EAAAO,KAAAW,QAAAX,KAAAP,IAAAyR,UAAA,SAAAzR,GAAA,GAAAC,GAAAkB,GAAAyE,MAAArF,KAAAgR,cAAAvR,EAAA,OAAAC,GAAAyR,WAAAnR,KAAAN,GAAAmC,KAAA,SAAApC,GAAA,MAAAmB,IAAAiB,KAAA7B,KAAAP,IAAAmJ,IAAA,SAAAnJ,GAAA,MAAAO,MAAAkR,UAAAtQ,GAAAgI,IAAA5I,KAAA,SAAAN,EAAAS,GAAA,MAAAV,GAAA4B,KAAA3B,EAAAS,EAAAT,OAAA+C,MAAA,WAAA,MAAAzC,MAAAkR,UAAAvN,GAAAnB,MAAAxC,KAAAkH,aAAAkK,MAAA,WAAA,MAAApR,MAAA0I,GAAA,IAAA2I,KAAA,WAAA,MAAArR,MAAA0I,IAAA,IAAAA,GAAA,SAAAjJ,GAAA,GAAAC,GAAAM,KAAAW,OAAAR,GAAAV,GAAAA,EAAA,EAAAC,EAAA,EAAA,OAAAM,MAAAkR,UAAA/Q,GAAA,GAAAA,EAAAT,GAAAM,KAAAG,SAAAqE,IAAA,WAAA,MAAAxE,MAAAmR,YAAAnR,KAAAgR,eAAAzK,KAAA1C,GAAAyN,KAAAnR,GAAAmR,KAAAC,OAAApR,GAAAoR,QAAA3Q,GAAAoH,OAAApH,GAAA+P,GAAA3I,OAAA,WAAA,GAAAvI,GAAAC,EAAAS,EAAAD,EAAAiC,EAAAwB,EAAAC,EAAAsD,UAAA,OAAArD,EAAA,EAAAtC,EAAA2F,UAAAvG,OAAAqD,GAAA,CAAA,KAAA,iBAAAJ,KAAAI,EAAAJ,EAAAA,EAAAsD,UAAArD,OAAAA,KAAA,gBAAAD,IAAAhD,GAAAO,WAAAyC,KAAAA,MAAAC,IAAAtC,IAAAqC,EAAA5D,KAAA6D,KAAAA,EAAAtC,EAAAsC,IAAA,GAAA,OAAApE,EAAAyH,UAAArD,IAAA,IAAAnE,IAAAD,GAAAU,EAAAyD,EAAAlE,GAAAQ,EAAAT,EAAAC,GAAAkE,IAAA1D,IAAA8D,GAAA9D,IAAAU,GAAA4Q,cAAAtR,KAAAiC,EAAA4K,MAAAC,QAAA9M,MAAAiC,GAAAA,GAAA,EAAAwB,EAAAxD,GAAA4M,MAAAC,QAAA7M,GAAAA,MAAAwD,EAAAxD,GAAAS,GAAA4Q,cAAArR,GAAAA,KAAAyD,EAAAlE,GAAAkB,GAAAoH,OAAAhE,EAAAL,EAAAzD,IAAA,SAAAA,IAAA0D,EAAAlE,GAAAQ,GAAA,OAAA0D,IAAAhD,GAAAoH,QAAAlF,QAAA,UAAAwF,GAAA8B,KAAAqH,UAAApO,QAAA,MAAA,IAAAqO,SAAA,EAAAtB,MAAA,SAAA3Q,GAAA,KAAA,IAAAK,OAAAL,IAAAkS,KAAA,aAAAxQ,WAAA,SAAA1B,GAAA,MAAA,aAAAmB,GAAAC,KAAApB,IAAAqB,SAAA,SAAArB,GAAA,MAAA,OAAAA,GAAAA,IAAAA,EAAAM,QAAA6R,UAAA,SAAAnS,GAAA,GAAAC,GAAAkB,GAAAC,KAAApB,EAAA,QAAA,WAAAC,GAAA,WAAAA,KAAAmS,MAAApS,EAAAiL,WAAAjL,KAAA+R,cAAA,SAAA/R,GAAA,GAAAC,GAAAS,CAAA,UAAAV,GAAA,oBAAAyE,GAAA7C,KAAA5B,KAAAC,EAAAyC,GAAA1C,MAAAU,EAAAqF,GAAAnE,KAAA3B,EAAA,gBAAAA,EAAAsR,YAAA,kBAAA7Q,IAAAuF,GAAArE,KAAAlB,KAAAwF,MAAA6G,cAAA,SAAA/M,GAAA,GAAAC,EAAA,KAAAA,IAAAD,GAAA,OAAA,CAAA,QAAA,GAAAoB,KAAA,SAAApB,GAAA,MAAA,OAAAA,EAAAA,EAAA,GAAA,gBAAAA,IAAA,kBAAAA,GAAAuE,GAAAE,GAAA7C,KAAA5B,KAAA,eAAAA,IAAAqS,WAAA,SAAArS,GAAAQ,EAAAR,IAAAqN,UAAA,SAAArN,GAAA,MAAAA,GAAA4D,QAAAuN,GAAA,OAAAvN,QAAAwN,GAAAC,KAAAjP,KAAA,SAAApC,EAAAC,GAAA,GAAAS,GAAAD,EAAA,CAAA,IAAAQ,EAAAjB,GAAA,IAAAU,EAAAV,EAAAkB,OAAAT,EAAAC,GAAAT,EAAA2B,KAAA5B,EAAAS,GAAAA,EAAAT,EAAAS,OAAA,EAAAA,SAAA,KAAAA,IAAAT,GAAA,GAAAC,EAAA2B,KAAA5B,EAAAS,GAAAA,EAAAT,EAAAS,OAAA,EAAA,KAAA,OAAAT,IAAAsS,KAAA,SAAAtS,GAAA,MAAA,OAAAA,EAAA,IAAAA,EAAA,IAAA4D,QAAAkF,GAAA,KAAAyJ,UAAA,SAAAvS,EAAAC,GAAA,GAAAS,GAAAT,KAAA,OAAA,OAAAD,IAAAiB,EAAA4P,OAAA7Q,IAAAmB,GAAAyE,MAAAlF,EAAA,gBAAAV,IAAAA,GAAAA,GAAAoE,GAAAxC,KAAAlB,EAAAV,IAAAU,GAAAsG,QAAA,SAAAhH,EAAAC,EAAAS,GAAA,MAAA,OAAAT,GAAA,EAAA6B,GAAAF,KAAA3B,EAAAD,EAAAU,IAAAkF,MAAA,SAAA5F,EAAAC,GAAA,IAAA,GAAAS,IAAAT,EAAAiB,OAAAT,EAAA,EAAAiC,EAAA1C,EAAAkB,OAAAT,EAAAC,EAAAD,IAAAT,EAAA0C,KAAAzC,EAAAQ,EAAA,OAAAT,GAAAkB,OAAAwB,EAAA1C,GAAA2B,KAAA,SAAA3B,EAAAC,EAAAS,GAAA,IAAA,GAAAD,GAAAiC,KAAAwB,EAAA,EAAAC,EAAAnE,EAAAkB,OAAAkD,GAAA1D,EAAAwD,EAAAC,EAAAD,IAAAzD,GAAAR,EAAAD,EAAAkE,GAAAA,GAAAzD,IAAA2D,GAAA1B,EAAAoE,KAAA9G,EAAAkE,GAAA,OAAAxB,IAAAyG,IAAA,SAAAnJ,EAAAC,EAAAS,GAAA,GAAAD,GAAAiC,EAAAwB,EAAA,EAAAE,IAAA,IAAAnD,EAAAjB,GAAA,IAAAS,EAAAT,EAAAkB,OAAAgD,EAAAzD,EAAAyD,IAAAxB,EAAAzC,EAAAD,EAAAkE,GAAAA,EAAAxD,GAAA,MAAAgC,GAAA0B,EAAA0C,KAAApE,OAAA,KAAAwB,IAAAlE,GAAA0C,EAAAzC,EAAAD,EAAAkE,GAAAA,EAAAxD,GAAA,MAAAgC,GAAA0B,EAAA0C,KAAApE,EAAA,OAAAyB,IAAApB,SAAAqB,IAAAsD,KAAA,EAAAmH,MAAA,SAAA7O,EAAAC,GAAA,GAAAS,GAAAD,EAAAiC,CAAA,IAAA,gBAAAzC,KAAAS,EAAAV,EAAAC,GAAAA,EAAAD,EAAAA,EAAAU,GAAAS,GAAAO,WAAA1B,GAAA,MAAAS,GAAAyD,GAAAtC,KAAA6F,UAAA,GAAA/E,EAAA,WAAA,MAAA1C,GAAA+C,MAAA9C,GAAAM,KAAAE,EAAA6L,OAAApI,GAAAtC,KAAA6F,cAAA/E,EAAAgF,KAAA1H,EAAA0H,KAAA1H,EAAA0H,MAAAvG,GAAAuG,OAAAhF,GAAAqJ,IAAAyG,KAAAzG,IAAA0G,QAAAtM,KAAA,kBAAAuM,UAAAvR,GAAA+P,GAAAwB,OAAAC,UAAAjS,GAAAgS,OAAAC,WAAAxR,GAAAiB,KAAA,uEAAAqO,MAAA,KAAA,SAAAzQ,EAAAC,GAAAsE,GAAA,WAAAtE,EAAA,KAAAA,EAAAuB,eAAA,IAAAoR,IAAA,SAAA5S,GAAA,QAAAkF,GAAAlF,EAAAC,EAAAQ,EAAAiC,GAAA,GAAAwB,GAAAE,EAAAG,EAAAE,EAAAsB,EAAAI,EAAAhF,EAAA2H,EAAA7I,GAAAA,EAAAgF,cAAAhE,EAAAhB,EAAAA,EAAA4B,SAAA,CAAA,IAAApB,EAAAA,MAAA,gBAAAT,KAAAA,GAAA,IAAAiB,GAAA,IAAAA,GAAA,KAAAA,EAAA,MAAAR,EAAA,KAAAiC,KAAAzC,EAAAA,EAAAgF,eAAAhF,EAAAoR,KAAAnL,GAAAD,EAAAhG,GAAAA,EAAAA,GAAAiG,EAAA1F,GAAA,CAAA,GAAA,KAAAS,IAAA8E,EAAAlC,GAAAc,KAAA3E,IAAA,GAAAkE,EAAA6B,EAAA,IAAA,GAAA,IAAA9E,EAAA,CAAA,KAAAsD,EAAAtE,EAAA4S,eAAA3O,IAAA,MAAAzD,EAAA,IAAA8D,EAAAuO,KAAA5O,EAAA,MAAAzD,GAAAqG,KAAAvC,GAAA9D,MAAA,IAAAqI,IAAAvE,EAAAuE,EAAA+J,eAAA3O,KAAAiN,EAAAlR,EAAAsE,IAAAA,EAAAuO,KAAA5O,EAAA,MAAAzD,GAAAqG,KAAAvC,GAAA9D,MAAA,CAAA,GAAAsF,EAAA,GAAA,MAAAgN,GAAAhQ,MAAAtC,EAAAR,EAAAyF,qBAAA1F,IAAAS,CAAA,KAAAyD,EAAA6B,EAAA,KAAArF,EAAAsS,wBAAA/S,EAAA+S,uBAAA,MAAAD,GAAAhQ,MAAAtC,EAAAR,EAAA+S,uBAAA9O,IAAAzD,EAAA,GAAAC,EAAAuS,MAAAC,EAAAlT,EAAA,QAAA6I,IAAAA,EAAA7G,KAAAhC,IAAA,CAAA,GAAA,IAAAiB,EAAA6H,EAAA7I,EAAAkB,EAAAnB,MAAA,IAAA,WAAAC,EAAAsB,SAAAC,cAAA,CAAA,KAAAiD,EAAAxE,EAAA6D,aAAA,OAAAW,EAAAA,EAAAb,QAAAc,GAAAoG,IAAA7K,EAAAkT,aAAA,KAAA1O,EAAA2M,GAAAjL,EAAAhC,EAAAnE,GAAAoE,EAAA+B,EAAAjF,OAAAkD,KAAA+B,EAAA/B,GAAA,IAAAK,EAAA,IAAA2O,EAAAjN,EAAA/B,GAAAjD,GAAAgF,EAAAgJ,KAAA,KAAArG,EAAAvF,GAAAvB,KAAAhC,IAAA8F,EAAA7F,EAAAc,aAAAd,EAAA,GAAAkB,EAAA,IAAA,MAAA4R,GAAAhQ,MAAAtC,EAAAqI,EAAAnD,iBAAAxE,IAAAV,EAAA,MAAAmS,IAAA,QAAAnO,IAAA2M,GAAAnR,EAAAgI,gBAAA,QAAA,MAAAnG,GAAA9B,EAAA4D,QAAAnB,GAAA,MAAAxC,EAAAQ,EAAAiC,GAAA,QAAAsC,KAAA,QAAA/E,GAAAS,EAAAgC,GAAA,MAAA1C,GAAA8G,KAAApG,EAAA,KAAAD,EAAA4S,mBAAApT,GAAAD,EAAAiQ,SAAAhQ,EAAAS,EAAA,KAAAgC,EAAA,GAAA1C,KAAA,OAAAC,GAAA,QAAAmF,GAAApF,GAAA,MAAAA,GAAAoR,IAAA,EAAApR,EAAA,QAAAyI,GAAAzI,GAAA,GAAAC,GAAAiG,EAAAvF,cAAA,WAAA,KAAA,QAAAX,EAAAC,GAAA,MAAAS,GAAA,OAAA,EAAA,QAAAT,EAAAc,YAAAd,EAAAc,WAAAC,YAAAf,GAAAA,EAAA,MAAA,QAAAoG,GAAArG,EAAAC,GAAA,IAAA,GAAAS,GAAAV,EAAAyQ,MAAA,KAAA/N,EAAAhC,EAAAQ,OAAAwB,KAAAjC,EAAA6S,WAAA5S,EAAAgC,IAAAzC,EAAA,QAAAiH,GAAAlH,EAAAC,GAAA,GAAAS,GAAAT,GAAAD,EAAAS,EAAAC,GAAA,IAAAV,EAAA6B,UAAA,IAAA5B,EAAA4B,UAAA7B,EAAAuT,YAAAtT,EAAAsT,WAAA,IAAA9S,EAAA,MAAAA,EAAA,IAAAC,EAAA,KAAAA,EAAAA,EAAA8S,aAAA,GAAA9S,IAAAT,EAAA,OAAA,CAAA,OAAAD,GAAA,GAAA,EAAA,QAAAsG,GAAAtG,GAAA,MAAA,UAAAC,GAAA,GAAAS,GAAAT,EAAAsB,SAAAC,aAAA,OAAA,UAAAd,GAAAT,EAAAmB,OAAApB,GAAA,QAAAyF,GAAAzF,GAAA,MAAA,UAAAC,GAAA,GAAAS,GAAAT,EAAAsB,SAAAC,aAAA,QAAA,UAAAd,GAAA,WAAAA,IAAAT,EAAAmB,OAAApB,GAAA,QAAA6F,GAAA7F,GAAA,MAAA,UAAAC,GAAA,MAAA,QAAAA,GAAAA,EAAAc,YAAAd,EAAAwT,YAAA,EAAA,SAAAxT,GAAA,SAAAA,GAAAc,WAAAd,EAAAc,WAAA0S,WAAAzT,EAAAC,EAAAwT,WAAAzT,EAAAC,EAAAyT,aAAA1T,GAAAC,EAAAyT,cAAA1T,GAAA2T,GAAA1T,KAAAD,EAAAC,EAAAwT,WAAAzT,EAAA,SAAAC,IAAAA,EAAAwT,WAAAzT,GAAA,QAAAoG,GAAApG,GAAA,MAAAoF,GAAA,SAAAnF,GAAA,MAAAA,IAAAA,EAAAmF,EAAA,SAAA1E,EAAAD,GAAA,IAAA,GAAAiC,GAAAwB,EAAAlE,KAAAU,EAAAQ,OAAAjB,GAAAkE,EAAAD,EAAAhD,OAAAiD,KAAAzD,EAAAgC,EAAAwB,EAAAC,MAAAzD,EAAAgC,KAAAjC,EAAAiC,GAAAhC,EAAAgC,SAAA,QAAAoD,GAAA9F,GAAA,MAAAA,IAAA,mBAAAA,GAAA0F,sBAAA1F,EAAA,QAAA4T,MAAA,QAAAR,GAAApT,GAAA,IAAA,GAAAC,GAAA,EAAAS,EAAAV,EAAAkB,OAAAT,EAAA,GAAAR,EAAAS,EAAAT,IAAAQ,GAAAT,EAAAC,GAAA4T,KAAA,OAAApT,GAAA,QAAAqT,GAAA9T,EAAAC,EAAAS,GAAA,GAAAD,GAAAR,EAAA8T,IAAArR,EAAAzC,EAAA+T,KAAA9P,EAAAxB,GAAAjC,EAAA0D,EAAAzD,GAAA,eAAAwD,EAAAE,EAAAwO,GAAA,OAAA3S,GAAA0R,MAAA,SAAA1R,EAAAS,EAAAgC,GAAA,KAAAzC,EAAAA,EAAAQ,IAAA,GAAA,IAAAR,EAAA4B,UAAAsC,EAAA,MAAAnE,GAAAC,EAAAS,EAAAgC,EAAA,QAAA,GAAA,SAAAzC,EAAAS,EAAAoB,GAAA,GAAAyC,GAAAE,EAAAsB,EAAAE,GAAAhF,EAAAmD,EAAA,IAAAtC,GAAA,KAAA7B,EAAAA,EAAAQ,IAAA,IAAA,IAAAR,EAAA4B,UAAAsC,IAAAnE,EAAAC,EAAAS,EAAAoB,GAAA,OAAA,MAAA,MAAA7B,EAAAA,EAAAQ,IAAA,GAAA,IAAAR,EAAA4B,UAAAsC,EAAA,GAAA4B,EAAA9F,EAAAmR,KAAAnR,EAAAmR,OAAA3M,EAAAsB,EAAA9F,EAAAgU,YAAAlO,EAAA9F,EAAAgU,cAAAvR,GAAAA,IAAAzC,EAAAsB,SAAAC,cAAAvB,EAAAA,EAAAQ,IAAAR,MAAA,CAAA,IAAAsE,EAAAE,EAAAP,KAAAK,EAAA,KAAAtD,GAAAsD,EAAA,KAAAH,EAAA,MAAA6B,GAAA,GAAA1B,EAAA,EAAA,IAAAE,EAAAP,GAAA+B,EAAAA,EAAA,GAAAjG,EAAAC,EAAAS,EAAAoB,GAAA,OAAA,EAAA,OAAA,GAAA,QAAAoS,GAAAlU,GAAA,MAAAA,GAAAkB,OAAA,EAAA,SAAAjB,EAAAS,EAAAD,GAAA,IAAA,GAAAiC,GAAA1C,EAAAkB,OAAAwB,KAAA,IAAA1C,EAAA0C,GAAAzC,EAAAS,EAAAD,GAAA,OAAA,CAAA,QAAA,GAAAT,EAAA,GAAA,QAAAmH,GAAAnH,EAAAC,EAAAS,GAAA,IAAA,GAAAD,GAAA,EAAAiC,EAAAzC,EAAAiB,OAAAT,EAAAiC,EAAAjC,IAAAyE,EAAAlF,EAAAC,EAAAQ,GAAAC,EAAA,OAAAA,GAAA,QAAA0G,GAAApH,EAAAC,EAAAS,EAAAD,EAAAiC,GAAA,IAAA,GAAAwB,GAAAC,KAAAC,EAAA,EAAAtC,EAAA9B,EAAAkB,OAAAqD,EAAA,MAAAtE,EAAAmE,EAAAtC,EAAAsC,KAAAF,EAAAlE,EAAAoE,MAAA1D,IAAAA,EAAAwD,EAAAzD,EAAAiC,KAAAyB,EAAA2C,KAAA5C,GAAAK,GAAAtE,EAAA6G,KAAA1C,IAAA,OAAAD,GAAA,QAAAkD,GAAArH,EAAAC,EAAAS,EAAAD,EAAAiC,EAAAwB,GAAA,MAAAzD,KAAAA,EAAA2Q,KAAA3Q,EAAA4G,EAAA5G,IAAAiC,IAAAA,EAAA0O,KAAA1O,EAAA2E,EAAA3E,EAAAwB,IAAAkB,EAAA,SAAAlB,EAAAC,EAAAC,EAAAtC,GAAA,GAAAyC,GAAAE,EAAAsB,EAAAE,KAAAC,KAAAC,EAAAhC,EAAAjD,OAAAV,EAAA0D,GAAAiD,EAAAlH,GAAA,IAAAmE,EAAAvC,UAAAuC,GAAAA,MAAAyE,GAAA7I,IAAAkE,GAAAjE,EAAAO,EAAA4G,EAAA5G,EAAAyF,EAAAjG,EAAAoE,EAAAtC,GAAAX,EAAAT,EAAAgC,IAAAwB,EAAAlE,EAAAmG,GAAA1F,MAAA0D,EAAA0E,CAAA,IAAAnI,GAAAA,EAAAmI,EAAA1H,EAAAiD,EAAAtC,GAAArB,EAAA,IAAA8D,EAAA6C,EAAAjG,EAAA+E,GAAAzF,EAAA8D,KAAAH,EAAAtC,GAAA2C,EAAAF,EAAArD,OAAAuD,MAAAsB,EAAAxB,EAAAE,MAAAtD,EAAA+E,EAAAzB,MAAAoE,EAAA3C,EAAAzB,IAAAsB,GAAA,IAAA7B,GAAA,GAAAxB,GAAA1C,EAAA,CAAA,GAAA0C,EAAA,CAAA,IAAA6B,KAAAE,EAAAtD,EAAAD,OAAAuD,MAAAsB,EAAA5E,EAAAsD,KAAAF,EAAAuC,KAAA+B,EAAApE,GAAAsB,EAAArD,GAAA,KAAAvB,KAAAoD,EAAAzC,GAAA,IAAA2C,EAAAtD,EAAAD,OAAAuD,MAAAsB,EAAA5E,EAAAsD,MAAAF,EAAA7B,EAAAyR,GAAAjQ,EAAA6B,GAAAE,EAAAxB,KAAA,IAAAP,EAAAK,KAAAJ,EAAAI,GAAAwB,SAAA5E,GAAAiG,EAAAjG,IAAAgD,EAAAhD,EAAA2Q,OAAA3L,EAAAhF,EAAAD,QAAAC,GAAAuB,EAAAA,EAAA,KAAAyB,EAAAhD,EAAAW,GAAAiR,EAAAhQ,MAAAoB,EAAAhD,KAAA,QAAAoG,GAAAvH,GAAA,IAAA,GAAAC,GAAAS,EAAAgC,EAAAwB,EAAAlE,EAAAkB,OAAAiD,EAAA1D,EAAA2T,SAAApU,EAAA,GAAAoB,MAAAgD,EAAAD,GAAA1D,EAAA2T,SAAA,KAAAtS,EAAAqC,EAAA,EAAA,EAAAM,EAAAqP,EAAA,SAAA9T,GAAA,MAAAA,KAAAC,GAAAmE,GAAA,GAAA2B,EAAA+N,EAAA,SAAA9T,GAAA,MAAAmU,IAAAlU,EAAAD,IAAA,GAAAoE,GAAA,GAAA6B,GAAA,SAAAjG,EAAAU,EAAAD,GAAA,GAAAiC,IAAAyB,IAAA1D,GAAAC,IAAA6D,MAAAtE,EAAAS,GAAAmB,SAAA4C,EAAAzE,EAAAU,EAAAD,GAAAsF,EAAA/F,EAAAU,EAAAD,GAAA,OAAAR,GAAA,KAAAyC,IAAAZ,EAAAoC,EAAApC,IAAA,GAAApB,EAAAD,EAAA2T,SAAApU,EAAA8B,GAAAV,MAAA6E,GAAA6N,EAAAI,EAAAjO,GAAAvF,QAAA,CAAA,GAAAA,EAAAD,EAAAwB,OAAAjC,EAAA8B,GAAAV,MAAA2B,MAAA,KAAA/C,EAAA8B,GAAAuS,SAAA3T,EAAA0Q,GAAA,CAAA,IAAA1O,IAAAZ,EAAAY,EAAAwB,IAAAzD,EAAA2T,SAAApU,EAAA0C,GAAAtB,MAAAsB,KAAA,MAAA2E,GAAAvF,EAAA,GAAAoS,EAAAjO,GAAAnE,EAAA,GAAAsR,EAAApT,EAAAgD,MAAA,EAAAlB,EAAA,GAAAwK,QAAAuH,MAAA,MAAA7T,EAAA8B,EAAA,GAAAV,KAAA,IAAA,MAAAwC,QAAAnB,GAAA,MAAA/B,EAAAoB,EAAAY,GAAA6E,EAAAvH,EAAAgD,MAAAlB,EAAAY,IAAAA,EAAAwB,GAAAqD,EAAAvH,EAAAA,EAAAgD,MAAAN,IAAAA,EAAAwB,GAAAkP,EAAApT,IAAAiG,EAAAa,KAAApG,GAAA,MAAAwT,GAAAjO,GAAA,QAAAqO,GAAAtU,EAAAC,GAAA,GAAAS,GAAAT,EAAAiB,OAAA,EAAAwB,EAAA1C,EAAAkB,OAAA,EAAAgD,EAAA,SAAAA,EAAAC,EAAAC,EAAAtC,EAAA2C,GAAA,GAAAsB,GAAAI,EAAA0C,EAAA1H,EAAA,EAAA2H,EAAA,IAAAqI,EAAAjN,MAAAkN,KAAAC,EAAA9M,EAAAqO,EAAA1O,GAAAxB,GAAAjC,EAAA8T,KAAAC,IAAA,IAAA/P,GAAAgQ,EAAAxT,GAAA,MAAAoQ,EAAA,EAAA1G,KAAAqH,UAAA,GAAA0C,EAAA9B,EAAA1R,MAAA,KAAAuD,IAAAF,EAAAJ,IAAA+B,GAAA/B,GAAAM,GAAAqE,IAAA4L,GAAA,OAAA3O,EAAA6M,EAAA9J,IAAAA,IAAA,CAAA,GAAApG,GAAAqD,EAAA,CAAA,IAAAI,EAAA,EAAAhC,GAAA4B,EAAAd,gBAAAiB,IAAAD,EAAAF,GAAA3B,GAAA5D,GAAAqI,EAAA7I,EAAAmG,MAAA,GAAA0C,EAAA9C,EAAA5B,GAAA+B,EAAA9B,GAAA,CAAAtC,EAAAgF,KAAAf,EAAA,OAAAtB,IAAAxD,EAAAwT,GAAA/T,KAAAqF,GAAA8C,GAAA9C,IAAA5E,IAAA+C,GAAAiN,EAAArK,KAAAf,IAAA,GAAA5E,GAAA2H,EAAApI,GAAAoI,IAAA3H,EAAA,CAAA,IAAAgF,EAAA,EAAA0C,EAAA5I,EAAAkG,MAAA0C,EAAAsI,EAAAC,EAAAjN,EAAAC,EAAA,IAAAF,EAAA,CAAA,GAAA/C,EAAA,EAAA,KAAA2H,KAAAqI,EAAArI,IAAAsI,EAAAtI,KAAAsI,EAAAtI,GAAArH,EAAAG,KAAAE,GAAAsP,GAAAhK,EAAAgK,GAAA2B,EAAAhQ,MAAAjB,EAAAsP,GAAA3M,IAAAP,GAAAkN,EAAAlQ,OAAA,GAAAC,EAAAlB,EAAAiB,OAAA,GAAAgE,EAAAyP,WAAA7S,GAAA,MAAA2C,KAAAxD,EAAAwT,EAAAlQ,EAAA8M,GAAAF,EAAA,OAAAzQ,GAAA0E,EAAAlB,GAAAA,EAAA,GAAAjE,GAAAS,EAAAD,EAAAiC,EAAAwB,EAAAC,EAAAC,EAAAtC,EAAAyC,EAAAE,EAAAsB,EAAAE,EAAAC,EAAAC,EAAA3F,EAAAqI,EAAA1H,EAAA2H,EAAAqI,EAAAC,EAAA,SAAA,EAAA,GAAAoB,MAAAnB,EAAArR,EAAAI,SAAAa,EAAA,EAAA2R,EAAA,EAAA6B,EAAAzP,IAAA0P,EAAA1P,IAAAkO,EAAAlO,IAAA1D,EAAA,SAAAtB,EAAAC,GAAA,MAAAD,KAAAC,IAAA8F,GAAA,GAAA,GAAA6O,KAAA3D,eAAAlP,KAAAN,EAAAM,EAAA8S,IAAAC,EAAA/S,EAAA+E,KAAAiM,EAAAhR,EAAA+E,KAAAiO,EAAAhT,EAAAiB,MAAAmR,GAAA,SAAAnU,EAAAC,GAAA,IAAA,GAAAS,GAAA,EAAAD,EAAAT,EAAAkB,OAAAR,EAAAD,EAAAC,IAAA,GAAAV,EAAAU,KAAAT,EAAA,MAAAS,EAAA,QAAA,GAAAsU,GAAA,6HAAA9S,GAAA,sBAAAI,GAAA,gCAAAH,GAAA,MAAAD,GAAA,KAAAI,GAAA,OAAAJ,GAAA,gBAAAA,GAAA,2DAAAI,GAAA,OAAAJ,GAAA,OAAAK,GAAA,KAAAD,GAAA,wFAAAH,GAAA,eAAAK,GAAA,GAAAyS,QAAA/S,GAAA,IAAA,KAAAO,GAAA,GAAAwS,QAAA,IAAA/S,GAAA,8BAAAA,GAAA,KAAA,KAAAgT,GAAA,GAAAD,QAAA,IAAA/S,GAAA,KAAAA,GAAA,KAAAiT,GAAA,GAAAF,QAAA,IAAA/S,GAAA,WAAAA,GAAA,IAAAA,GAAA,KAAAe,GAAA,GAAAgS,QAAA,IAAA/S,GAAA,iBAAAA,GAAA,OAAA,KAAAkT,GAAA,GAAAH,QAAA1S,IAAA8S,GAAA,GAAAJ,QAAA,IAAA3S,GAAA,KAAAc,IAAAkS,GAAA,GAAAL,QAAA,MAAA3S,GAAA,KAAAiT,MAAA,GAAAN,QAAA,QAAA3S,GAAA,KAAAkS,IAAA,GAAAS,QAAA,KAAA3S,GAAA,SAAAkT,KAAA,GAAAP,QAAA,IAAA9S,IAAAsT,OAAA,GAAAR,QAAA,IAAA1S,IAAAmT,MAAA,GAAAT,QAAA,yDAAA/S,GAAA,+BAAAA,GAAA,cAAAA,GAAA,aAAAA,GAAA,SAAA,KAAAyT,KAAA,GAAAV,QAAA,OAAAD,GAAA,KAAA,KAAAY,aAAA,GAAAX,QAAA,IAAA/S,GAAA,mDAAAA,GAAA,mBAAAA,GAAA,mBAAA,MAAAoD,GAAA,sCAAAvB,GAAA,SAAAP,GAAA,yBAAAK,GAAA,mCAAAN,GAAA,OAAAI,GAAA,GAAAsR,QAAA,qBAAA/S,GAAA,MAAAA,GAAA,OAAA,MAAA2T,GAAA,SAAA7V,EAAAC,EAAAS,GAAA,GAAAD,GAAA,KAAAR,EAAA,KAAA,OAAAQ,KAAAA,GAAAC,EAAAT,EAAAQ,EAAA,EAAAqV,OAAAC,aAAAtV,EAAA,OAAAqV,OAAAC,aAAAtV,GAAA,GAAA,MAAA,KAAAA,EAAA,QAAAiE,GAAA,sDAAAoG,GAAA,SAAA9K,EAAAC,GAAA,MAAAA,GAAA,OAAAD,EAAA,IAAAA,EAAAgD,MAAA,GAAA,GAAA,KAAAhD,EAAAgW,WAAAhW,EAAAkB,OAAA,GAAA8P,SAAA,IAAA,IAAA,KAAAhR,GAAAwF,GAAA,WAAAS,KAAA0N,GAAAG,EAAA,SAAA9T,GAAA,MAAAA,GAAAyT,YAAA,IAAA,QAAAzT,IAAA,SAAAA,MAAA+T,IAAA,aAAAC,KAAA,UAAA,KAAAjB,EAAAhQ,MAAAhB,EAAAgT,EAAAnT,KAAAyP,EAAA1K,YAAA0K,EAAA1K,YAAA5E,EAAAsP,EAAA1K,WAAAzF,QAAAW,SAAA,MAAAoC,GAAA8O,GAAAhQ,MAAAhB,EAAAb,OAAA,SAAAlB,EAAAC,GAAA6U,EAAA/R,MAAA/C,EAAA+U,EAAAnT,KAAA3B,KAAA,SAAAD,EAAAC,GAAA,IAAA,GAAAS,GAAAV,EAAAkB,OAAAT,EAAA,EAAAT,EAAAU,KAAAT,EAAAQ,OAAAT,EAAAkB,OAAAR,EAAA,IAAAA,EAAAwE,EAAAuN,WAAAvO,EAAAgB,EAAA+Q,MAAA,SAAAjW,GAAA,GAAAC,GAAAD,IAAAA,EAAAiF,eAAAjF,GAAAkW,eAAA,SAAAjW,GAAA,SAAAA,EAAAsB,UAAA0E,EAAAf,EAAAiR,YAAA,SAAAnW,GAAA,GAAAC,GAAAyC,EAAAyB,EAAAnE,EAAAA,EAAAiF,eAAAjF,EAAAqR,CAAA,OAAAlN,KAAA+B,GAAA,IAAA/B,EAAAtC,UAAAsC,EAAA+R,iBAAAhQ,EAAA/B,EAAAgC,EAAAD,EAAAgQ,gBAAA1V,GAAA0D,EAAAgC,GAAAmL,IAAAnL,IAAAxD,EAAAwD,EAAAkQ,cAAA1T,EAAA2T,MAAA3T,IAAAA,EAAA4T,iBAAA5T,EAAA4T,iBAAA,SAAA9Q,IAAA,GAAA9C,EAAA6T,aAAA7T,EAAA6T,YAAA,WAAA/Q,KAAA9E,EAAA8V,WAAA/N,EAAA,SAAAzI,GAAA,MAAAA,GAAAyW,UAAA,KAAAzW,EAAA8D,aAAA,eAAApD,EAAAgF,qBAAA+C,EAAA,SAAAzI,GAAA,MAAAA,GAAAc,YAAAoF,EAAAwQ,cAAA,MAAA1W,EAAA0F,qBAAA,KAAAxE,SAAAR,EAAAsS,uBAAAxP,GAAAxB,KAAAkE,EAAA8M,wBAAAtS,EAAAiW,QAAAlO,EAAA,SAAAzI,GAAA,MAAAmG,GAAArF,YAAAd,GAAA8S,GAAA1B,GAAAlL,EAAA0Q,oBAAA1Q,EAAA0Q,kBAAAxF,GAAAlQ,SAAAR,EAAAiW,SAAAlW,EAAAwB,OAAAqT,GAAA,SAAAtV,GAAA,GAAAC,GAAAD,EAAA4D,QAAAD,GAAAkS,GAAA,OAAA,UAAA7V,GAAA,MAAAA,GAAA8D,aAAA,QAAA7D,IAAAQ,EAAA8T,KAAAe,GAAA,SAAAtV,EAAAC,GAAA,GAAA,mBAAAA,GAAA4S,gBAAArS,EAAA,CAAA,GAAAE,GAAAT,EAAA4S,eAAA7S,EAAA,OAAAU,IAAAA,UAAAD,EAAAwB,OAAAqT,GAAA,SAAAtV,GAAA,GAAAC,GAAAD,EAAA4D,QAAAD,GAAAkS,GAAA,OAAA,UAAA7V,GAAA,GAAAU,GAAA,mBAAAV,GAAA6W,kBAAA7W,EAAA6W,iBAAA,KAAA,OAAAnW,IAAAA,EAAAmT,QAAA5T,IAAAQ,EAAA8T,KAAAe,GAAA,SAAAtV,EAAAC,GAAA,GAAA,mBAAAA,GAAA4S,gBAAArS,EAAA,CAAA,GAAAE,GAAAD,EAAAiC,EAAAwB,EAAAjE,EAAA4S,eAAA7S,EAAA,IAAAkE,EAAA,CAAA,GAAAxD,EAAAwD,EAAA2S,iBAAA,MAAAnW,GAAAA,EAAAmT,QAAA7T,EAAA,OAAAkE,EAAA,KAAAxB,EAAAzC,EAAA2W,kBAAA5W,GAAAS,EAAA,EAAAyD,EAAAxB,EAAAjC,MAAA,GAAAC,EAAAwD,EAAA2S,iBAAA,MAAAnW,GAAAA,EAAAmT,QAAA7T,EAAA,OAAAkE,GAAA,YAAAzD,EAAA8T,KAAAC,IAAA9T,EAAAgF,qBAAA,SAAA1F,EAAAC,GAAA,MAAA,mBAAAA,GAAAyF,qBAAAzF,EAAAyF,qBAAA1F,GAAAU,EAAAuS,IAAAhT,EAAA0F,iBAAA3F,GAAA,QAAA,SAAAA,EAAAC,GAAA,GAAAS,GAAAD,KAAAiC,EAAA,EAAAwB,EAAAjE,EAAAyF,qBAAA1F,EAAA,IAAA,MAAAA,EAAA,CAAA,KAAAU,EAAAwD,EAAAxB,MAAA,IAAAhC,EAAAmB,UAAApB,EAAAqG,KAAApG,EAAA,OAAAD,GAAA,MAAAyD,IAAAzD,EAAA8T,KAAAgB,MAAA7U,EAAAsS,wBAAA,SAAAhT,EAAAC,GAAA,GAAA,mBAAAA,GAAA+S,wBAAAxS,EAAA,MAAAP,GAAA+S,uBAAAhT,IAAAmB,KAAA0H,MAAAnI,EAAAuS,IAAAzP,GAAAxB,KAAAkE,EAAAP,qBAAA8C,EAAA,SAAAzI,GAAAmG,EAAArF,YAAAd,GAAAwG,UAAA,UAAA4K,EAAA,qBAAAA,EAAA,kEAAApR,EAAA2F,iBAAA,wBAAAzE,QAAA2H,EAAA/B,KAAA,SAAA5E,GAAA,gBAAAlC,EAAA2F,iBAAA,cAAAzE,QAAA2H,EAAA/B,KAAA,MAAA5E,GAAA,aAAA8S,GAAA,KAAAhV,EAAA2F,iBAAA,QAAAyL,EAAA,MAAAlQ,QAAA2H,EAAA/B,KAAA,MAAA9G,EAAA2F,iBAAA,YAAAzE,QAAA2H,EAAA/B,KAAA,YAAA9G,EAAA2F,iBAAA,KAAAyL,EAAA,MAAAlQ,QAAA2H,EAAA/B,KAAA,cAAA2B,EAAA,SAAAzI,GAAAA,EAAAwG,UAAA,mFAAA,IAAAvG,GAAAiG,EAAAvF,cAAA,QAAAV,GAAAkT,aAAA,OAAA,UAAAnT,EAAAc,YAAAb,GAAAkT,aAAA,OAAA,KAAAnT,EAAA2F,iBAAA,YAAAzE,QAAA2H,EAAA/B,KAAA,OAAA5E,GAAA,eAAA,IAAAlC,EAAA2F,iBAAA,YAAAzE,QAAA2H,EAAA/B,KAAA,WAAA,aAAAX,EAAArF,YAAAd,GAAAyT,UAAA,EAAA,IAAAzT,EAAA2F,iBAAA,aAAAzE,QAAA2H,EAAA/B,KAAA,WAAA,aAAA9G,EAAA2F,iBAAA,QAAAkD,EAAA/B,KAAA,YAAApG,EAAAoW,gBAAAtT,GAAAxB,KAAA8G,EAAA3C,EAAAkO,SAAAlO,EAAA4Q,uBAAA5Q,EAAA6Q,oBAAA7Q,EAAA8Q,kBAAA9Q,EAAA+Q,qBAAAzO,EAAA,SAAAzI,GAAAU,EAAAyW,kBAAArO,EAAAlH,KAAA5B,EAAA,KAAA8I,EAAAlH,KAAA5B,EAAA,aAAAmB,EAAA2F,KAAA,KAAAvE,MAAAsG,EAAAA,EAAA3H,QAAA,GAAA+T,QAAApM,EAAAsG,KAAA,MAAAhO,EAAAA,EAAAD,QAAA,GAAA+T,QAAA9T,EAAAgO,KAAA,MAAAlP,EAAAuD,GAAAxB,KAAAmE,EAAAiR,yBAAAjG,EAAAlR,GAAAuD,GAAAxB,KAAAmE,EAAAc,UAAA,SAAAjH,EAAAC,GAAA,GAAAS,GAAA,IAAAV,EAAA6B,SAAA7B,EAAAkW,gBAAAlW,EAAAS,EAAAR,GAAAA,EAAAc,UAAA,OAAAf,KAAAS,MAAAA,GAAA,IAAAA,EAAAoB,YAAAnB,EAAAuG,SAAAvG,EAAAuG,SAAAxG,GAAAT,EAAAoX,yBAAA,GAAApX,EAAAoX,wBAAA3W,MAAA,SAAAT,EAAAC,GAAA,GAAAA,EAAA,KAAAA,EAAAA,EAAAc,YAAA,GAAAd,IAAAD,EAAA,OAAA,CAAA,QAAA,GAAAsB,EAAArB,EAAA,SAAAD,EAAAC,GAAA,GAAAD,IAAAC,EAAA,MAAA8F,IAAA,EAAA,CAAA,IAAAtF,IAAAT,EAAAoX,yBAAAnX,EAAAmX,uBAAA,OAAA3W,GAAAA,GAAAA,GAAAT,EAAAiF,eAAAjF,MAAAC,EAAAgF,eAAAhF,GAAAD,EAAAoX,wBAAAnX,GAAA,EAAA,EAAAQ,IAAAC,EAAA2W,cAAApX,EAAAmX,wBAAApX,KAAAS,EAAAT,IAAAkG,GAAAlG,EAAAiF,gBAAAoM,GAAAF,EAAAE,EAAArR,IAAA,EAAAC,IAAAiG,GAAAjG,EAAAgF,gBAAAoM,GAAAF,EAAAE,EAAApR,GAAA,EAAAwE,EAAA0P,GAAA1P,EAAAzE,GAAAmU,GAAA1P,EAAAxE,GAAA,EAAA,EAAAQ,GAAA,EAAA,IAAA,SAAAT,EAAAC,GAAA,GAAAD,IAAAC,EAAA,MAAA8F,IAAA,EAAA,CAAA,IAAArF,GAAAD,EAAA,EAAAiC,EAAA1C,EAAAe,WAAAmD,EAAAjE,EAAAc,WAAAoD,GAAAnE,GAAAoE,GAAAnE,EAAA,KAAAyC,IAAAwB,EAAA,MAAAlE,KAAAkG,GAAA,EAAAjG,IAAAiG,EAAA,EAAAxD,GAAA,EAAAwB,EAAA,EAAAO,EAAA0P,GAAA1P,EAAAzE,GAAAmU,GAAA1P,EAAAxE,GAAA,CAAA,IAAAyC,IAAAwB,EAAA,MAAAgD,GAAAlH,EAAAC,EAAA,KAAAS,EAAAV,EAAAU,EAAAA,EAAAK,YAAAoD,EAAAqL,QAAA9O,EAAA,KAAAA,EAAAT,EAAAS,EAAAA,EAAAK,YAAAqD,EAAAoL,QAAA9O,EAAA,MAAAyD,EAAA1D,KAAA2D,EAAA3D,IAAAA,GAAA,OAAAA,GAAAyG,EAAA/C,EAAA1D,GAAA2D,EAAA3D,IAAA0D,EAAA1D,KAAA4Q,GAAA,EAAAjN,EAAA3D,KAAA4Q,EAAA,EAAA,GAAAnL,GAAAA,GAAAhB,EAAAmP,QAAA,SAAArU,EAAAC,GAAA,MAAAiF,GAAAlF,EAAA,KAAA,KAAAC,IAAAiF,EAAA4R,gBAAA,SAAA9W,EAAAC,GAAA,IAAAD,EAAAiF,eAAAjF,KAAAkG,GAAAD,EAAAjG,GAAAC,EAAAA,EAAA2D,QAAAX,GAAA,UAAAvC,EAAAoW,iBAAAtW,IAAA0S,EAAAjT,EAAA,QAAAkB,IAAAA,EAAAa,KAAA/B,OAAA4I,IAAAA,EAAA7G,KAAA/B,IAAA,IAAA,GAAAQ,GAAAqI,EAAAlH,KAAA5B,EAAAC,EAAA,IAAAQ,GAAAC,EAAAyW,mBAAAnX,EAAAI,UAAA,KAAAJ,EAAAI,SAAAyB,SAAA,MAAApB,GAAA,MAAAiC,IAAA,MAAAwC,GAAAjF,EAAAiG,EAAA,MAAAlG,IAAAkB,OAAA,GAAAgE,EAAA+B,SAAA,SAAAjH,EAAAC,GAAA,OAAAD,EAAAiF,eAAAjF,KAAAkG,GAAAD,EAAAjG,GAAAmR,EAAAnR,EAAAC,IAAAiF,EAAAoS,KAAA,SAAAtX,EAAAC,IAAAD,EAAAiF,eAAAjF,KAAAkG,GAAAD,EAAAjG,EAAA,IAAA0C,GAAAjC,EAAA6S,WAAArT,EAAAuB,eAAA0C,EAAAxB,GAAAkS,EAAAhT,KAAAnB,EAAA6S,WAAArT,EAAAuB,eAAAkB,EAAA1C,EAAAC,GAAAO,GAAA,MAAA,OAAA,UAAA0D,EAAAA,EAAAxD,EAAA8V,aAAAhW,EAAAR,EAAA8D,aAAA7D,IAAAiE,EAAAlE,EAAA6W,iBAAA5W,KAAAiE,EAAAqT,UAAArT,EAAA2P,MAAA,MAAA3O,EAAAsS,OAAA,SAAAxX,GAAA,OAAAA,EAAA,IAAA4D,QAAAc,GAAAoG,KAAA5F,EAAAyL,MAAA,SAAA3Q,GAAA,KAAA,IAAAK,OAAA,0CAAAL,IAAAkF,EAAAyP,WAAA,SAAA3U,GAAA,GAAAC,GAAAQ,KAAAiC,EAAA,EAAAwB,EAAA,CAAA,IAAA6B,GAAArF,EAAA+W,iBAAAhT,GAAA/D,EAAAgX,YAAA1X,EAAAgD,MAAA,GAAAhD,EAAA6R,KAAAvQ,GAAAyE,EAAA,CAAA,KAAA9F,EAAAD,EAAAkE,MAAAjE,IAAAD,EAAAkE,KAAAxB,EAAAjC,EAAAqG,KAAA5C,GAAA,MAAAxB,KAAA1C,EAAA8R,OAAArR,EAAAiC,GAAA,GAAA,MAAA+B,GAAA,KAAAzE,GAAA0C,EAAAwC,EAAAyS,QAAA,SAAA3X,GAAA,GAAAC,GAAAS,EAAA,GAAAD,EAAA,EAAAyD,EAAAlE,EAAA6B,QAAA,IAAAqC,GAAA,GAAA,IAAAA,GAAA,IAAAA,GAAA,KAAAA,EAAA,CAAA,GAAA,gBAAAlE,GAAA6G,YAAA,MAAA7G,GAAA6G,WAAA,KAAA7G,EAAAA,EAAA4G,WAAA5G,EAAAA,EAAAA,EAAAwT,YAAA9S,GAAAgC,EAAA1C,OAAA,IAAA,IAAAkE,GAAA,IAAAA,EAAA,MAAAlE,GAAA4X,cAAA,MAAA3X,EAAAD,EAAAS,MAAAC,GAAAgC,EAAAzC,EAAA,OAAAS,IAAAD,EAAAyE,EAAA2S,WAAAxE,YAAA,GAAAyE,aAAA1S,EAAA/C,MAAAe,GAAAkQ,cAAAiB,QAAAH,UAAA2D,KAAAhE,IAAA,aAAApC,OAAA,GAAAqG,KAAAjE,IAAA,cAAAkE,KAAAlE,IAAA,kBAAApC,OAAA,GAAAuG,KAAAnE,IAAA,oBAAAoE,WAAA3C,KAAA,SAAAxV,GAAA,MAAAA,GAAA,GAAAA,EAAA,GAAA4D,QAAAD,GAAAkS,IAAA7V,EAAA,IAAAA,EAAA,IAAAA,EAAA,IAAAA,EAAA,IAAA,IAAA4D,QAAAD,GAAAkS,IAAA,OAAA7V,EAAA,KAAAA,EAAA,GAAA,IAAAA,EAAA,GAAA,KAAAA,EAAAgD,MAAA,EAAA,IAAA0S,MAAA,SAAA1V,GAAA,MAAAA,GAAA,GAAAA,EAAA,GAAAwB,cAAA,QAAAxB,EAAA,GAAAgD,MAAA,EAAA,IAAAhD,EAAA,IAAAkF,EAAAyL,MAAA3Q,EAAA,IAAAA,EAAA,KAAAA,EAAA,GAAAA,EAAA,IAAAA,EAAA,IAAA,GAAA,GAAA,SAAAA,EAAA,IAAA,QAAAA,EAAA,KAAAA,EAAA,KAAAA,EAAA,GAAAA,EAAA,IAAA,QAAAA,EAAA,KAAAA,EAAA,IAAAkF,EAAAyL,MAAA3Q,EAAA,IAAAA,GAAAyV,OAAA,SAAAzV,GAAA,GAAAC,GAAAS,GAAAV,EAAA,IAAAA,EAAA,EAAA,OAAAoD,IAAAsS,MAAA1T,KAAAhC,EAAA,IAAA,MAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,IAAAA,EAAA,IAAA,GAAAU,GAAA0U,GAAApT,KAAAtB,KAAAT,EAAAkE,EAAAzD,GAAA,MAAAT,EAAAS,EAAAqQ,QAAA,IAAArQ,EAAAQ,OAAAjB,GAAAS,EAAAQ,UAAAlB,EAAA,GAAAA,EAAA,GAAAgD,MAAA,EAAA/C,GAAAD,EAAA,GAAAU,EAAAsC,MAAA,EAAA/C,IAAAD,EAAAgD,MAAA,EAAA,MAAAf,QAAAuS,IAAA,SAAAxU,GAAA,GAAAC,GAAAD,EAAA4D,QAAAD,GAAAkS,IAAArU,aAAA,OAAA,MAAAxB,EAAA,WAAA,OAAA,GAAA,SAAAA,GAAA,MAAAA,GAAAuB,UAAAvB,EAAAuB,SAAAC,gBAAAvB,IAAAsV,MAAA,SAAAvV,GAAA,GAAAC,GAAAwU,EAAAzU,EAAA,IAAA,OAAAC,KAAAA,EAAA,GAAAgV,QAAA,MAAA/S,GAAA,IAAAlC,EAAA,IAAAkC,GAAA,SAAAuS,EAAAzU,EAAA,SAAAA,GAAA,MAAAC,GAAA+B,KAAA,gBAAAhC,GAAAyW,WAAAzW,EAAAyW,WAAA,mBAAAzW,GAAA8D,cAAA9D,EAAA8D,aAAA,UAAA,OAAA0R,KAAA,SAAAxV,EAAAC,EAAAS,GAAA,MAAA,UAAAD,GAAA,GAAAiC,GAAAwC,EAAAoS,KAAA7W,EAAAT,EAAA,OAAA,OAAA0C,EAAA,OAAAzC,GAAAA,IAAAyC,GAAA,GAAA,MAAAzC,EAAAyC,IAAAhC,EAAA,OAAAT,EAAAyC,IAAAhC,EAAA,OAAAT,EAAAS,GAAA,IAAAgC,EAAAqO,QAAArQ,GAAA,OAAAT,EAAAS,GAAAgC,EAAAqO,QAAArQ,IAAA,EAAA,OAAAT,EAAAS,GAAAgC,EAAAM,OAAAtC,EAAAQ,UAAAR,EAAA,OAAAT,GAAA,IAAAyC,EAAAkB,QAAApB,GAAA,KAAA,KAAAuO,QAAArQ,IAAA,EAAA,OAAAT,IAAAyC,IAAAhC,GAAAgC,EAAAM,MAAA,EAAAtC,EAAAQ,OAAA,KAAAR,EAAA,QAAAgV,MAAA,SAAA1V,EAAAC,EAAAS,EAAAD,EAAAiC,GAAA,GAAAwB,GAAA,QAAAlE,EAAAgD,MAAA,EAAA,GAAAmB,EAAA,SAAAnE,EAAAgD,OAAA,GAAAoB,EAAA,YAAAnE,CAAA,OAAA,KAAAQ,GAAA,IAAAiC,EAAA,SAAA1C,GAAA,QAAAA,EAAAe,YAAA,SAAAd,EAAAS,EAAAoB,GAAA,GAAAyC,GAAAE,EAAAsB,EAAAE,EAAAC,EAAAC,EAAA3F,EAAA0D,IAAAC,EAAA,cAAA,kBAAA0E,EAAA5I,EAAAc,WAAAI,EAAAiD,GAAAnE,EAAAsB,SAAAC,cAAAsH,GAAAhH,IAAAsC,EAAA+M,GAAA,CAAA,IAAAtI,EAAA,CAAA,GAAA3E,EAAA,CAAA,KAAA1D,GAAA,CAAA,IAAAyF,EAAAhG,EAAAgG,EAAAA,EAAAzF,IAAA,GAAA4D,EAAA6B,EAAA1E,SAAAC,gBAAAL,EAAA,IAAA8E,EAAApE,SAAA,OAAA,CAAAsE,GAAA3F,EAAA,SAAAR,IAAAmG,GAAA,cAAA,OAAA,EAAA,GAAAA,GAAAhC,EAAA0E,EAAAjC,WAAAiC,EAAAnC,WAAAvC,GAAA2E,GAAA,IAAA7C,EAAA4C,EAAA9C,EAAAE,EAAAmL,KAAAnL,EAAAmL,OAAA3M,EAAAsB,EAAAE,EAAAgO,YAAAlO,EAAAE,EAAAgO,cAAA1P,EAAAE,EAAAzE,OAAAkG,EAAA3B,EAAA,KAAAtD,GAAAsD,EAAA,GAAA4M,EAAAjL,GAAA3B,EAAA,GAAA0B,EAAAC,GAAA2C,EAAAlC,WAAAT,GAAAD,IAAAC,GAAAD,GAAAA,EAAAzF,KAAA2Q,EAAAjL,EAAA,IAAAC,EAAA0O,OAAA,GAAA,IAAA5O,EAAApE,YAAAsP,GAAAlL,IAAAhG,EAAA,CAAAwE,EAAAzE,IAAAiB,EAAAiF,EAAAiL,EAAA,YAAA,IAAArI,IAAA7C,EAAAhG,EAAA8F,EAAAE,EAAAmL,KAAAnL,EAAAmL,OAAA3M,EAAAsB,EAAAE,EAAAgO,YAAAlO,EAAAE,EAAAgO,cAAA1P,EAAAE,EAAAzE,OAAAkG,EAAA3B,EAAA,KAAAtD,GAAAsD,EAAA,GAAA4M,EAAAjL,GAAAiL,KAAA,EAAA,MAAAlL,IAAAC,GAAAD,GAAAA,EAAAzF,KAAA2Q,EAAAjL,EAAA,IAAAC,EAAA0O,UAAAzQ,EAAA6B,EAAA1E,SAAAC,gBAAAL,EAAA,IAAA8E,EAAApE,cAAAsP,IAAArI,IAAA/C,EAAAE,EAAAmL,KAAAnL,EAAAmL,OAAA3M,EAAAsB,EAAAE,EAAAgO,YAAAlO,EAAAE,EAAAgO,cAAAxP,EAAAzE,IAAAiB,EAAAkQ,IAAAlL,IAAAhG,MAAA,MAAAkR,IAAAzO,EAAAyO,IAAA1Q,GAAA0Q,EAAA1Q,IAAA,GAAA0Q,EAAA1Q,GAAA,KAAAgV,OAAA,SAAAzV,EAAAC,GAAA,GAAAS,GAAAgC,EAAAjC,EAAA2X,QAAApY,IAAAS,EAAA4X,WAAArY,EAAAwB,gBAAA0D,EAAAyL,MAAA,uBAAA3Q,EAAA,OAAA0C,GAAA0O,GAAA1O,EAAAzC,GAAAyC,EAAAxB,OAAA,GAAAR,GAAAV,EAAAA,EAAA,GAAAC,GAAAQ,EAAA4X,WAAApH,eAAAjR,EAAAwB,eAAA4D,EAAA,SAAApF,EAAAU,GAAA,IAAA,GAAAD,GAAAyD,EAAAxB,EAAA1C,EAAAC,GAAAkE,EAAAD,EAAAhD,OAAAiD,KAAA1D,EAAA0T,GAAAnU,EAAAkE,EAAAC,IAAAnE,EAAAS,KAAAC,EAAAD,GAAAyD,EAAAC,MAAA,SAAAnE,GAAA,MAAA0C,GAAA1C,EAAA,EAAAU,KAAAgC,IAAA0V,SAAAE,IAAAlT,EAAA,SAAApF,GAAA,GAAAC,MAAAS,KAAAD,EAAA2D,EAAApE,EAAA4D,QAAAnB,GAAA,MAAA,OAAAhC,GAAA2Q,GAAAhM,EAAA,SAAApF,EAAAC,EAAAS,EAAAgC,GAAA,IAAA,GAAAwB,GAAAC,EAAA1D,EAAAT,EAAA,KAAA0C,MAAA0B,EAAApE,EAAAkB,OAAAkD,MAAAF,EAAAC,EAAAC,MAAApE,EAAAoE,KAAAnE,EAAAmE,GAAAF,MAAA,SAAAlE,EAAA0C,EAAAwB,GAAA,MAAAjE,GAAA,GAAAD,EAAAS,EAAAR,EAAA,KAAAiE,EAAAxD,GAAAT,EAAA,GAAA,MAAAS,EAAAmU,SAAA0D,IAAAnT,EAAA,SAAApF,GAAA,MAAA,UAAAC,GAAA,MAAAiF,GAAAlF,EAAAC,GAAAiB,OAAA,KAAA+F,SAAA7B,EAAA,SAAApF,GAAA,MAAAA,GAAAA,EAAA4D,QAAAD,GAAAkS,IAAA,SAAA5V,GAAA,OAAAA,EAAA4G,aAAA5G,EAAAuY,WAAA9V,EAAAzC,IAAA8Q,QAAA/Q,IAAA,KAAAyY,KAAArT,EAAA,SAAApF,GAAA,MAAAqV,IAAArT,KAAAhC,GAAA,KAAAkF,EAAAyL,MAAA,qBAAA3Q,GAAAA,EAAAA,EAAA4D,QAAAD,GAAAkS,IAAArU,cAAA,SAAAvB,GAAA,GAAAS,EAAA,GAAA,IAAAA,EAAAF,EAAAP,EAAAwY,KAAAxY,EAAA6D,aAAA,aAAA7D,EAAA6D,aAAA,QAAA,MAAApD,GAAAA,EAAAc,cAAAd,IAAAV,GAAA,IAAAU,EAAAqQ,QAAA/Q,EAAA,YAAAC,EAAAA,EAAAc,aAAA,IAAAd,EAAA4B,SAAA,QAAA;GAAA6W,OAAA,SAAAzY,GAAA,GAAAS,GAAAV,EAAA2Y,UAAA3Y,EAAA2Y,SAAAC,IAAA,OAAAlY,IAAAA,EAAAsC,MAAA,KAAA/C,EAAA6S,IAAA+F,KAAA,SAAA7Y,GAAA,MAAAA,KAAAmG,GAAA2S,MAAA,SAAA9Y,GAAA,MAAAA,KAAAkG,EAAAoB,iBAAApB,EAAA6S,UAAA7S,EAAA6S,gBAAA/Y,EAAAoB,MAAApB,EAAAgZ,OAAAhZ,EAAAiZ,WAAAC,QAAArT,GAAA,GAAA4N,SAAA5N,GAAA,GAAA6C,QAAA,SAAA1I,GAAA,GAAAC,GAAAD,EAAAuB,SAAAC,aAAA,OAAA,UAAAvB,KAAAD,EAAA0I,SAAA,WAAAzI,KAAAD,EAAAmZ,UAAAA,SAAA,SAAAnZ,GAAA,MAAAA,GAAAe,YAAAf,EAAAe,WAAAqY,cAAApZ,EAAAmZ,YAAA,GAAAxM,MAAA,SAAA3M,GAAA,IAAAA,EAAAA,EAAA4G,WAAA5G,EAAAA,EAAAA,EAAAwT,YAAA,GAAAxT,EAAA6B,SAAA,EAAA,OAAA,CAAA,QAAA,GAAAwX,OAAA,SAAArZ,GAAA,OAAAS,EAAA2X,QAAAzL,MAAA3M,IAAAsZ,OAAA,SAAAtZ,GAAA,MAAA+D,IAAA/B,KAAAhC,EAAAuB,WAAAgY,MAAA,SAAAvZ,GAAA,MAAAsF,IAAAtD,KAAAhC,EAAAuB,WAAAiY,OAAA,SAAAxZ,GAAA,GAAAC,GAAAD,EAAAuB,SAAAC,aAAA,OAAA,UAAAvB,GAAA,WAAAD,EAAAoB,MAAA,WAAAnB,GAAAW,KAAA,SAAAZ,GAAA,GAAAC,EAAA,OAAA,UAAAD,EAAAuB,SAAAC,eAAA,SAAAxB,EAAAoB,OAAA,OAAAnB,EAAAD,EAAA8D,aAAA,UAAA,SAAA7D,EAAAuB,gBAAAmQ,MAAAvL,EAAA,WAAA,OAAA,KAAAwL,KAAAxL,EAAA,SAAApG,EAAAC,GAAA,OAAAA,EAAA,KAAAgJ,GAAA7C,EAAA,SAAApG,EAAAC,EAAAS,GAAA,OAAAA,EAAA,EAAAA,EAAAT,EAAAS,KAAA+Y,KAAArT,EAAA,SAAApG,EAAAC,GAAA,IAAA,GAAAS,GAAA,EAAAA,EAAAT,EAAAS,GAAA,EAAAV,EAAA8G,KAAApG,EAAA,OAAAV,KAAA0Z,IAAAtT,EAAA,SAAApG,EAAAC,GAAA,IAAA,GAAAS,GAAA,EAAAA,EAAAT,EAAAS,GAAA,EAAAV,EAAA8G,KAAApG,EAAA,OAAAV,KAAA2Z,GAAAvT,EAAA,SAAApG,EAAAC,EAAAS,GAAA,IAAA,GAAAD,GAAAC,EAAA,EAAAA,EAAAT,EAAAS,IAAAD,GAAA,GAAAT,EAAA8G,KAAArG,EAAA,OAAAT,KAAA4Z,GAAAxT,EAAA,SAAApG,EAAAC,EAAAS,GAAA,IAAA,GAAAD,GAAAC,EAAA,EAAAA,EAAAT,EAAAS,IAAAD,EAAAR,GAAAD,EAAA8G,KAAArG,EAAA,OAAAT,OAAAS,EAAA2X,QAAAyB,IAAApZ,EAAA2X,QAAAnP,EAAA,KAAAhJ,KAAA6Z,OAAA,EAAAC,UAAA,EAAAC,MAAA,EAAAC,UAAA,EAAAC,OAAA,GAAAzZ,EAAA2X,QAAAnY,GAAAqG,EAAArG,EAAA,KAAAA,KAAAka,QAAA,EAAAC,OAAA,GAAA3Z,EAAA2X,QAAAnY,GAAAwF,EAAAxF,EAAA,OAAA2T,GAAAzI,UAAA1K,EAAA4Z,QAAA5Z,EAAA2X,QAAA3X,EAAA4X,WAAA,GAAAzE,GAAAzP,EAAAe,EAAAoV,SAAA,SAAAta,EAAAC,GAAA,GAAAS,GAAAgC,EAAAwB,EAAAC,EAAAC,EAAAtC,EAAAyC,EAAAE,EAAAiQ,EAAA1U,EAAA,IAAA,IAAAyE,EAAA,MAAAxE,GAAA,EAAAwE,EAAAzB,MAAA,EAAA,KAAAoB,EAAApE,EAAA8B,KAAAyC,EAAA9D,EAAA0X,UAAA/T,GAAA,CAAA1D,KAAAgC,EAAAwS,GAAAvQ,KAAAP,MAAA1B,IAAA0B,EAAAA,EAAApB,MAAAN,EAAA,GAAAxB,SAAAkD,GAAAtC,EAAAgF,KAAA5C,OAAAxD,GAAA,GAAAgC,EAAAyS,GAAAxQ,KAAAP,MAAA1D,EAAAgC,EAAAuN,QAAA/L,EAAA4C,MAAA+M,MAAAnT,EAAAU,KAAAsB,EAAA,GAAAkB,QAAAnB,GAAA,OAAA2B,EAAAA,EAAApB,MAAAtC,EAAAQ,QAAA,KAAAiD,IAAA1D,GAAAwB,SAAAS,EAAAU,GAAAe,GAAAQ,KAAAP,KAAAG,EAAAJ,MAAAzB,EAAA6B,EAAAJ,GAAAzB,MAAAhC,EAAAgC,EAAAuN,QAAA/L,EAAA4C,MAAA+M,MAAAnT,EAAAU,KAAA+C,EAAAkQ,QAAA3R,IAAA0B,EAAAA,EAAApB,MAAAtC,EAAAQ,QAAA,KAAAR,EAAA,MAAA,MAAAT,GAAAmE,EAAAlD,OAAAkD,EAAAc,EAAAyL,MAAA3Q,GAAA0U,EAAA1U,EAAA8B,GAAAkB,MAAA,IAAAoB,EAAAc,EAAAqV,QAAA,SAAAva,EAAAC,GAAA,GAAAS,GAAAD,KAAAiC,KAAAwB,EAAAgP,EAAAlT,EAAA,IAAA,KAAAkE,EAAA,CAAA,IAAAjE,IAAAA,EAAAkE,EAAAnE,IAAAU,EAAAT,EAAAiB,OAAAR,KAAAwD,EAAAqD,EAAAtH,EAAAS,IAAAwD,EAAAkN,GAAA3Q,EAAAqG,KAAA5C,GAAAxB,EAAAoE,KAAA5C,EAAAA,GAAAgP,EAAAlT,EAAAsU,EAAA5R,EAAAjC,IAAAyD,EAAAsW,SAAAxa,EAAA,MAAAkE,IAAApC,EAAAoD,EAAAuV,OAAA,SAAAza,EAAAC,EAAAS,EAAAgC,GAAA,GAAAwB,GAAApC,EAAAyC,EAAAE,EAAAsB,EAAAE,EAAA,kBAAAjG,IAAAA,EAAAkG,GAAAxD,GAAAyB,EAAAnE,EAAAiG,EAAAuU,UAAAxa,EAAA,IAAAU,EAAAA,MAAA,IAAAwF,EAAAhF,OAAA,CAAA,GAAAY,EAAAoE,EAAA,GAAAA,EAAA,GAAAlD,MAAA,GAAAlB,EAAAZ,OAAA,GAAA,QAAAqD,EAAAzC,EAAA,IAAAV,MAAA,IAAAnB,EAAA4B,UAAArB,GAAAC,EAAA2T,SAAAtS,EAAA,GAAAV,MAAA,CAAA,GAAAnB,GAAAQ,EAAA8T,KAAAe,GAAA/Q,EAAA8P,QAAA,GAAAzQ,QAAAD,GAAAkS,IAAA5V,QAAA,IAAAA,EAAA,MAAAS,EAAAuF,KAAAhG,EAAAA,EAAAc,YAAAf,EAAAA,EAAAgD,MAAAlB,EAAAmO,QAAA4D,MAAA3S,QAAA,IAAAgD,EAAAd,GAAAwS,aAAA5T,KAAAhC,GAAA,EAAA8B,EAAAZ,OAAAgD,MAAAK,EAAAzC,EAAAoC,IAAAzD,EAAA2T,SAAA3P,EAAAF,EAAAnD,QAAA,IAAA2E,EAAAtF,EAAA8T,KAAA9P,MAAA/B,EAAAqD,EAAAxB,EAAA8P,QAAA,GAAAzQ,QAAAD,GAAAkS,IAAAtS,GAAAvB,KAAAF,EAAA,GAAAV,OAAA0E,EAAA7F,EAAAc,aAAAd,IAAA,CAAA,GAAA6B,EAAAgQ,OAAA5N,EAAA,GAAAlE,EAAA0C,EAAAxB,QAAAkS,EAAAtR,IAAA9B,EAAA,MAAA+S,GAAAhQ,MAAArC,EAAAgC,GAAAhC,CAAA,QAAA,OAAAuF,GAAA7B,EAAApE,EAAAkG,IAAAxD,EAAAzC,GAAAO,EAAAE,GAAAT,GAAAsD,GAAAvB,KAAAhC,IAAA8F,EAAA7F,EAAAc,aAAAd,GAAAS,GAAAA,EAAAgX,WAAAtG,EAAAX,MAAA,IAAAoB,KAAAvQ,GAAA6N,KAAA,MAAAiC,EAAA1Q,EAAA+W,mBAAA1R,EAAAE,IAAAvF,EAAA2W,aAAA5O,EAAA,SAAAzI,GAAA,MAAA,GAAAA,EAAAoX,wBAAAlR,EAAAvF,cAAA,eAAA8H,EAAA,SAAAzI,GAAA,MAAAA,GAAAwG,UAAA,mBAAA,MAAAxG,EAAA4G,WAAA9C,aAAA,WAAAuC,EAAA,yBAAA,SAAArG,EAAAC,EAAAS,GAAA,IAAAA,EAAA,MAAAV,GAAA8D,aAAA7D,EAAA,SAAAA,EAAAuB,cAAA,EAAA,KAAAd,EAAA8V,YAAA/N,EAAA,SAAAzI,GAAA,MAAAA,GAAAwG,UAAA,WAAAxG,EAAA4G,WAAAuM,aAAA,QAAA,IAAA,KAAAnT,EAAA4G,WAAA9C,aAAA,YAAAuC,EAAA,QAAA,SAAArG,EAAAC,EAAAS,GAAA,IAAAA,GAAA,UAAAV,EAAAuB,SAAAC,cAAA,MAAAxB,GAAA2I,eAAAF,EAAA,SAAAzI,GAAA,MAAA,OAAAA,EAAA8D,aAAA,eAAAuC,EAAA2O,GAAA,SAAAhV,EAAAC,EAAAS,GAAA,GAAAD,EAAA,KAAAC,EAAA,MAAAV,GAAAC,MAAA,EAAAA,EAAAuB,eAAAf,EAAAT,EAAA6W,iBAAA5W,KAAAQ,EAAA8W,UAAA9W,EAAAoT,MAAA,OAAA3O,GAAAlF,EAAAmB,IAAAoT,KAAA3B,GAAAzR,GAAAuZ,KAAA9H,GAAAiF,UAAA1W,GAAAuZ,KAAA,KAAAvZ,GAAAuZ,KAAAtC,QAAAjX,GAAAwT,WAAAxT,GAAAwZ,OAAA/H,GAAA+B,WAAAxT,GAAAP,KAAAgS,GAAA+E,QAAAxW,GAAAyZ,SAAAhI,GAAAqD,MAAA9U,GAAA8F,SAAA2L,GAAA3L,SAAA9F,GAAA0Z,eAAAjI,GAAA4E,MAAA,IAAA/C,IAAA,SAAAzU,EAAAC,EAAAS,GAAA,IAAA,GAAAD,MAAAiC,EAAA,SAAAhC,GAAAV,EAAAA,EAAAC,KAAA,IAAAD,EAAA6B,UAAA,GAAA,IAAA7B,EAAA6B,SAAA,CAAA,GAAAa,GAAAvB,GAAAnB,GAAA8a,GAAApa,GAAA,KAAAD,GAAAqG,KAAA9G,GAAA,MAAAS,IAAAiU,GAAA,SAAA1U,EAAAC,GAAA,IAAA,GAAAS,MAAAV,EAAAA,EAAAA,EAAAwT,YAAA,IAAAxT,EAAA6B,UAAA7B,IAAAC,GAAAS,EAAAoG,KAAA9G,EAAA,OAAAU,IAAAwS,GAAA/R,GAAAuZ,KAAArY,MAAAuT,aAAAhB,GAAA,kEAAA7S,GAAA,gBAAAZ,IAAAc,OAAA,SAAAjC,EAAAC,EAAAS,GAAA,GAAAD,GAAAR,EAAA,EAAA,OAAAS,KAAAV,EAAA,QAAAA,EAAA,KAAA,IAAAC,EAAAiB,QAAA,IAAAT,EAAAoB,SAAAV,GAAAoT,KAAAuC,gBAAArW,EAAAT,IAAAS,MAAAU,GAAAoT,KAAAF,QAAArU,EAAAmB,GAAAQ,KAAA1B,EAAA,SAAAD,GAAA,MAAA,KAAAA,EAAA6B,aAAAV,GAAA+P,GAAA3I,QAAAgM,KAAA,SAAAvU,GAAA,GAAAC,GAAAS,EAAAD,EAAAF,KAAAW,OAAAwB,EAAAnC,IAAA,IAAA,gBAAAP,GAAA,MAAAO,MAAAkR,UAAAtQ,GAAAnB,GAAAiC,OAAA,WAAA,IAAAhC,EAAA,EAAAA,EAAAQ,EAAAR,IAAA,GAAAkB,GAAA8F,SAAAvE,EAAAzC,GAAAM,MAAA,OAAA,IAAA,KAAAG,EAAAH,KAAAkR,cAAAxR,EAAA,EAAAA,EAAAQ,EAAAR,IAAAkB,GAAAoT,KAAAvU,EAAA0C,EAAAzC,GAAAS,EAAA,OAAAD,GAAA,EAAAU,GAAAwT,WAAAjU,GAAAA,GAAAuB,OAAA,SAAAjC,GAAA,MAAAO,MAAAkR,UAAAhQ,EAAAlB,KAAAP,OAAA,KAAAsY,IAAA,SAAAtY,GAAA,MAAAO,MAAAkR,UAAAhQ,EAAAlB,KAAAP,OAAA,KAAA8a,GAAA,SAAA9a,GAAA,QAAAyB,EAAAlB,KAAA,gBAAAP,IAAAkT,GAAAlR,KAAAhC,GAAAmB,GAAAnB,GAAAA,OAAA,GAAAkB,SAAA,IAAA4T,IAAA/B,GAAA,sCAAAgC,GAAA5T,GAAA+P,GAAA9F,KAAA,SAAApL,EAAAC,EAAAS,GAAA,GAAAgC,GAAAwB,CAAA,KAAAlE,EAAA,MAAAO,KAAA,IAAAG,EAAAA,GAAAoU,GAAA,gBAAA9U,GAAA,CAAA,GAAA0C,EAAA,MAAA1C,EAAA,IAAA,MAAAA,EAAAA,EAAAkB,OAAA,IAAAlB,EAAAkB,QAAA,GAAA,KAAAlB,EAAA,MAAA+S,GAAApO,KAAA3E,IAAA0C,IAAAA,EAAA,IAAAzC,EAAA,OAAAA,GAAAA,EAAAqR,QAAArR,GAAAS,GAAA6T,KAAAvU,GAAAO,KAAAgR,YAAAtR,GAAAsU,KAAAvU,EAAA,IAAA0C,EAAA,GAAA,CAAA,GAAAzC,EAAAA,YAAAkB,IAAAlB,EAAA,GAAAA,EAAAkB,GAAAyE,MAAArF,KAAAY,GAAA4Z,UAAArY,EAAA,GAAAzC,GAAAA,EAAA4B,SAAA5B,EAAAgF,eAAAhF,EAAAQ,IAAA,IAAAmU,GAAA5S,KAAAU,EAAA,KAAAvB,GAAA4Q,cAAA9R,GAAA,IAAAyC,IAAAzC,GAAAkB,GAAAO,WAAAnB,KAAAmC,IAAAnC,KAAAmC,GAAAzC,EAAAyC,IAAAnC,KAAA+W,KAAA5U,EAAAzC,EAAAyC,GAAA,OAAAnC,MAAA,MAAA2D,GAAAzD,GAAAoS,eAAAnQ,EAAA,IAAAwB,IAAA3D,KAAA,GAAA2D,EAAA3D,KAAAW,OAAA,GAAAX,KAAA,MAAAP,GAAA6B,UAAAtB,KAAA,GAAAP,EAAAO,KAAAW,OAAA,EAAAX,MAAAY,GAAAO,WAAA1B,GAAA,SAAAU,EAAAyC,MAAAzC,EAAAyC,MAAAnD,GAAAA,EAAAmB,IAAAA,GAAAoR,UAAAvS,EAAAO,MAAAwU,IAAA5J,UAAAhK,GAAA+P,GAAA4D,GAAA3T,GAAAV,GAAA,IAAA0T,IAAA,iCAAAa,IAAAgG,UAAA,EAAAhL,UAAA,EAAAgE,MAAA,EAAAiH,MAAA,EAAA9Z,IAAA+P,GAAA3I,QAAAgQ,IAAA,SAAAvY,GAAA,GAAAC,GAAAkB,GAAAnB,EAAAO,MAAAG,EAAAT,EAAAiB,MAAA,OAAAX,MAAA0B,OAAA,WAAA,IAAA,GAAAjC,GAAA,EAAAA,EAAAU,EAAAV,IAAA,GAAAmB,GAAA8F,SAAA1G,KAAAN,EAAAD,IAAA,OAAA,KAAAkb,QAAA,SAAAlb,EAAAC,GAAA,GAAAS,GAAAD,EAAA,EAAAiC,EAAAnC,KAAAW,OAAAgD,KAAAC,EAAA,gBAAAnE,IAAAmB,GAAAnB,EAAA,KAAAkT,GAAAlR,KAAAhC,GAAA,KAAAS,EAAAiC,EAAAjC,IAAA,IAAAC,EAAAH,KAAAE,GAAAC,GAAAA,IAAAT,EAAAS,EAAAA,EAAAK,WAAA,GAAAL,EAAAmB,SAAA,KAAAsC,EAAAA,EAAAgX,MAAAza,IAAA,EAAA,IAAAA,EAAAmB,UAAAV,GAAAoT,KAAAuC,gBAAApW,EAAAV,IAAA,CAAAkE,EAAA4C,KAAApG,EAAA,OAAA,MAAAH,MAAAkR,UAAAvN,EAAAhD,OAAA,EAAAC,GAAAwT,WAAAzQ,GAAAA,IAAAiX,MAAA,SAAAnb,GAAA,MAAAA,GAAA,gBAAAA,GAAA8B,GAAAF,KAAAT,GAAAnB,GAAAO,KAAA,IAAAuB,GAAAF,KAAArB,KAAAP,EAAAsR,OAAAtR,EAAA,GAAAA,GAAAO,KAAA,IAAAA,KAAA,GAAAQ,WAAAR,KAAAoR,QAAAyJ,UAAAla,QAAA,GAAA0G,IAAA,SAAA5H,EAAAC,GAAA,MAAAM,MAAAkR,UAAAtQ,GAAAwT,WAAAxT,GAAAyE,MAAArF,KAAAgF,MAAApE,GAAAnB,EAAAC,OAAAob,QAAA,SAAArb,GAAA,MAAAO,MAAAqH,IAAA,MAAA5H,EAAAO,KAAAmR,WAAAnR,KAAAmR,WAAAzP,OAAAjC,OAAAmB,GAAAiB,MAAAiX,OAAA,SAAArZ,GAAA,GAAAC,GAAAD,EAAAe,UAAA,OAAAd,IAAA,KAAAA,EAAA4B,SAAA5B,EAAA,MAAAqb,QAAA,SAAAtb,GAAA,MAAAyU,IAAAzU,EAAA,eAAAub,aAAA,SAAAvb,EAAAC,EAAAS,GAAA,MAAA+T,IAAAzU,EAAA,aAAAU,IAAAsT,KAAA,SAAAhU,GAAA,MAAAkC,GAAAlC,EAAA,gBAAAib,KAAA,SAAAjb,GAAA,MAAAkC,GAAAlC,EAAA,oBAAAwb,QAAA,SAAAxb,GAAA,MAAAyU,IAAAzU,EAAA,gBAAAob,QAAA,SAAApb,GAAA,MAAAyU,IAAAzU,EAAA,oBAAAyb,UAAA,SAAAzb,EAAAC,EAAAS,GAAA,MAAA+T,IAAAzU,EAAA,cAAAU,IAAAgb,UAAA,SAAA1b,EAAAC,EAAAS,GAAA,MAAA+T,IAAAzU,EAAA,kBAAAU,IAAAib,SAAA,SAAA3b,GAAA,MAAA0U,KAAA1U,EAAAe,gBAAA6F,WAAA5G,IAAAgb,SAAA,SAAAhb,GAAA,MAAA0U,IAAA1U,EAAA4G,aAAAoJ,SAAA,SAAAhQ,GAAA,MAAAsB,GAAAtB,EAAA,UAAAA,EAAA4b,iBAAAta,EAAAtB,EAAA,cAAAA,EAAAA,EAAA6b,SAAA7b,GAAAmB,GAAAyE,SAAA5F,EAAA2G,eAAA,SAAA3G,EAAAC,GAAAkB,GAAA+P,GAAAlR,GAAA,SAAAU,EAAAD,GAAA,GAAAiC,GAAAvB,GAAAgI,IAAA5I,KAAAN,EAAAS,EAAA,OAAA,UAAAV,EAAAgD,OAAA,KAAAvC,EAAAC,GAAAD,GAAA,gBAAAA,KAAAiC,EAAAvB,GAAAc,OAAAxB,EAAAiC,IAAAnC,KAAAW,OAAA,IAAA8T,GAAAhV,IAAAmB,GAAAwT,WAAAjS,GAAAyR,GAAAnS,KAAAhC,IAAA0C,EAAAoZ,WAAAvb,KAAAkR,UAAA/O,KAAA,IAAAJ,IAAA,mBAAAnB,IAAA4a,UAAA,SAAA/b,GAAAA,EAAA,gBAAAA,GAAAmC,EAAAnC,GAAAmB,GAAAoH,UAAAvI,EAAA,IAAAC,GAAAS,EAAAD,EAAAiC,EAAAwB,KAAAC,KAAAC,GAAA,EAAAtC,EAAA,WAAA,IAAAY,EAAAA,GAAA1C,EAAAgc,KAAAvb,EAAAR,GAAA,EAAAkE,EAAAjD,OAAAkD,GAAA,EAAA,IAAA1D,EAAAyD,EAAA8L,UAAA7L,EAAAF,EAAAhD,QAAAgD,EAAAE,GAAArB,MAAArC,EAAA,GAAAA,EAAA,OAAA,GAAAV,EAAAic,cAAA7X,EAAAF,EAAAhD,OAAAR,GAAA,EAAAV,GAAAkc,SAAAxb,GAAA,GAAAT,GAAA,EAAAyC,IAAAwB,EAAAxD,KAAA,KAAA6D,GAAAqD,IAAA,WAAA,MAAA1D,KAAAxD,IAAAT,IAAAmE,EAAAF,EAAAhD,OAAA,EAAAiD,EAAA2C,KAAApG,IAAA,QAAAD,GAAAR,GAAAkB,GAAAiB,KAAAnC,EAAA,SAAAA,EAAAS,GAAAS,GAAAO,WAAAhB,GAAAV,EAAA2a,QAAApW,EAAAgU,IAAA7X,IAAAwD,EAAA4C,KAAApG,GAAAA,GAAAA,EAAAQ,QAAA,WAAAC,GAAAC,KAAAV,IAAAD,EAAAC,MAAA+G,WAAA/G,IAAAT,GAAA6B,KAAAvB,MAAA4M,OAAA,WAAA,MAAAhM,IAAAiB,KAAAqF,UAAA,SAAAzH,EAAAC,GAAA,IAAA,GAAAS,IAAAA,EAAAS,GAAA6F,QAAA/G,EAAAiE,EAAAxD,KAAA,GAAAwD,EAAA4N,OAAApR,EAAA,GAAAA,GAAA0D,GAAAA,MAAA7D,MAAAgY,IAAA,SAAAvY,GAAA,MAAAA,GAAAmB,GAAA6F,QAAAhH,EAAAkE,IAAA,EAAAA,EAAAhD,OAAA,GAAAyL,MAAA,WAAA,MAAAzI,KAAAA,MAAA3D,MAAA4b,QAAA,WAAA,MAAAzZ,GAAAyB,KAAAD,EAAAxD,EAAA,GAAAH,MAAAkT,SAAA,WAAA,OAAAvP,GAAAkY,KAAA,WAAA,MAAA1Z,GAAAyB,KAAAzD,GAAAT,IAAAiE,EAAAxD,EAAA,IAAAH,MAAA8b,OAAA,WAAA,QAAA3Z,GAAA4Z,SAAA,SAAAtc,EAAAU,GAAA,MAAAgC,KAAAhC,EAAAA,MAAAA,GAAAV,EAAAU,EAAAsC,MAAAtC,EAAAsC,QAAAtC,GAAAyD,EAAA2C,KAAApG,GAAAT,GAAA6B,KAAAvB,MAAAqM,KAAA,WAAA,MAAArI,GAAA+X,SAAA/b,KAAAkH,WAAAlH,MAAAgc,MAAA,WAAA,QAAA9b,GAAA,OAAA8D,IAAApD,GAAAoH,QAAAoF,SAAA,SAAA1N,GAAA,GAAAS,KAAA,SAAA,WAAAS,GAAA4a,UAAA,UAAA5a,GAAA4a,UAAA,UAAA,IAAA,UAAA,OAAA5a,GAAA4a,UAAA,eAAA5a,GAAA4a,UAAA,eAAA,EAAA,aAAA,SAAA,OAAA5a,GAAA4a,UAAA,eAAA5a,GAAA4a,UAAA,eAAA,EAAA,aAAAtb,EAAA,UAAAiC,GAAAgO,MAAA,WAAA,MAAAjQ,IAAAoM,OAAA,WAAA,MAAA3I,GAAAtB,KAAA6E,WAAA5E,KAAA4E,WAAAlH,MAAAic,MAAA,SAAAxc,GAAA,MAAA0C,GAAAI,KAAA,KAAA9C,IAAAyc,KAAA,WAAA,GAAAzc,GAAAyH,SAAA,OAAAtG,IAAAwM,SAAA,SAAA1N,GAAAkB,GAAAiB,KAAA1B,EAAA,SAAAA,EAAAD,GAAA,GAAAiC,GAAAvB,GAAAO,WAAA1B,EAAAS,EAAA,MAAAT,EAAAS,EAAA,GAAAyD,GAAAzD,EAAA,IAAA,WAAA,GAAAT,GAAA0C,GAAAA,EAAAK,MAAAxC,KAAAkH,UAAAzH,IAAAmB,GAAAO,WAAA1B,EAAA2C,SAAA3C,EAAA2C,UAAAmM,SAAA7O,EAAAyc,QAAA9Z,KAAA3C,EAAA0c,SAAA9Z,KAAA5C,EAAA2c,QAAA3c,EAAAQ,EAAA,GAAA,QAAAF,KAAAmC,GAAA1C,GAAAyH,eAAAzH,EAAA,OAAA2C,WAAAG,KAAA,SAAA7C,EAAAQ,EAAAiC,GAAA,QAAAyB,GAAAlE,EAAAS,EAAAD,EAAAiC,GAAA,MAAA,YAAA,GAAA0B,GAAA7D,KAAAuB,EAAA2F,UAAAlD,EAAA,WAAA,GAAAvE,GAAAuE,CAAA,MAAAtE,EAAAiE,GAAA,CAAA,GAAAlE,EAAAS,EAAAsC,MAAAqB,EAAAtC,GAAA9B,IAAAU,EAAAiC,UAAA,KAAA,IAAAka,WAAA,2BAAAtY,GAAAvE,IAAA,gBAAAA,IAAA,kBAAAA,KAAAA,EAAA8C,KAAA3B,GAAAO,WAAA6C,GAAA7B,EAAA6B,EAAA3C,KAAA5B,EAAAmE,EAAAD,EAAAxD,EAAA6B,EAAAG,GAAAyB,EAAAD,EAAAxD,EAAA8B,EAAAE,KAAAwB,IAAAK,EAAA3C,KAAA5B,EAAAmE,EAAAD,EAAAxD,EAAA6B,EAAAG,GAAAyB,EAAAD,EAAAxD,EAAA8B,EAAAE,GAAAyB,EAAAD,EAAAxD,EAAA6B,EAAA7B,EAAAuN,eAAAxN,IAAA8B,IAAA6B,EAAA,OAAAtC,GAAA9B,KAAA0C,GAAAhC,EAAAwN,aAAA9J,EAAAtC,MAAA2C,EAAA/B,EAAA6B,EAAA,WAAA,IAAAA,IAAA,MAAAvE,GAAAmB,GAAAwM,SAAAmP,eAAA3b,GAAAwM,SAAAmP,cAAA9c,EAAAyE,EAAAsY,YAAA9c,EAAA,GAAAiE,IAAAzD,IAAA+B,IAAA4B,EAAA,OAAAtC,GAAA9B,IAAAU,EAAAkO,WAAAxK,EAAAtC,KAAA7B,GAAAwE,KAAAtD,GAAAwM,SAAAqP,eAAAvY,EAAAsY,WAAA5b,GAAAwM,SAAAqP,gBAAAhd,EAAAyL,WAAAhH,KAAA,GAAAP,GAAA,CAAA,OAAA/C,IAAAwM,SAAA,SAAA3N,GAAAU,EAAA,GAAA,GAAAkH,IAAAzD,EAAA,EAAAnE,EAAAmB,GAAAO,WAAAgB,GAAAA,EAAAH,EAAAvC,EAAAiO,aAAAvN,EAAA,GAAA,GAAAkH,IAAAzD,EAAA,EAAAnE,EAAAmB,GAAAO,WAAAzB,GAAAA,EAAAsC,IAAA7B,EAAA,GAAA,GAAAkH,IAAAzD,EAAA,EAAAnE,EAAAmB,GAAAO,WAAAjB,GAAAA,EAAA+B,MAAAG,WAAAA,QAAA,SAAA3C,GAAA,MAAA,OAAAA,EAAAmB,GAAAoH,OAAAvI,EAAA0C,GAAAA,IAAAwB,IAAA,OAAA/C,IAAAiB,KAAA1B,EAAA,SAAAV,EAAAC,GAAA,GAAAkE,GAAAlE,EAAA,GAAAmE,EAAAnE,EAAA,EAAAyC,GAAAzC,EAAA,IAAAkE,EAAAyD,IAAAxD,GAAAD,EAAAyD,IAAA,WAAAnH,EAAA2D,GAAA1D,EAAA,EAAAV,GAAA,GAAAmc,QAAAzb,EAAA,GAAA,GAAA0b,MAAAjY,EAAAyD,IAAA3H,EAAA,GAAA2M,MAAA1I,EAAAjE,EAAA,IAAA,WAAA,MAAAiE,GAAAjE,EAAA,GAAA,QAAAM,OAAA2D,EAAA,OAAA3D,KAAAkH,WAAAlH,MAAA2D,EAAAjE,EAAA,GAAA,QAAAkE,EAAAmY,WAAA5Z,EAAAC,QAAAuB,GAAAjE,GAAAA,EAAA2B,KAAAsC,EAAAA,GAAAA,GAAA+Y,KAAA,SAAAjd,GAAA,GAAAC,GAAAwH,UAAAvG,OAAAR,EAAAT,EAAAQ,EAAA6M,MAAA5M,GAAAgC,EAAAwB,GAAAtC,KAAA6F,WAAAtD,EAAAhD,GAAAwM,WAAAvJ,EAAA,SAAApE,GAAA,MAAA,UAAAU,GAAAD,EAAAT,GAAAO,KAAAmC,EAAA1C,GAAAyH,UAAAvG,OAAA,EAAAgD,GAAAtC,KAAA6F,WAAA/G,IAAAT,GAAAkE,EAAA+J,YAAAzN,EAAAiC,IAAA,IAAAzC,GAAA,IAAAwC,EAAAzC,EAAAmE,EAAAvB,KAAAwB,EAAA1D,IAAAic,QAAAxY,EAAAyY,QAAA3c,GAAA,YAAAkE,EAAAuM,SAAAvP,GAAAO,WAAAgB,EAAAhC,IAAAgC,EAAAhC,GAAAoC,OAAA,MAAAqB,GAAArB,MAAA,MAAApC,KAAA+B,EAAAC,EAAAhC,GAAA0D,EAAA1D,GAAAyD,EAAAyY,OAAA,OAAAzY,GAAAxB,YAAA,IAAAuS,IAAA,wDAAA/T,IAAAwM,SAAAmP,cAAA,SAAA7c,EAAAS,GAAAV,EAAAkd,SAAAld,EAAAkd,QAAAC,MAAAld,GAAAiV,GAAAlT,KAAA/B,EAAAmd,OAAApd,EAAAkd,QAAAC,KAAA,8BAAAld,EAAAod,QAAApd,EAAAqd,MAAA5c,IAAAS,GAAAoc,eAAA,SAAAtd,GAAAD,EAAAyL,WAAA,WAAA,KAAAxL,KAAA,IAAAkV,IAAAhU,GAAAwM,UAAAxM,IAAA+P,GAAA/N,MAAA,SAAAnD,GAAA,MAAAmV,IAAArS,KAAA9C,GAAA,MAAA,SAAAA,GAAAmB,GAAAoc,eAAAvd,KAAAO,MAAAY,GAAAoH,QAAA0J,SAAA,EAAAuL,UAAA,EAAAra,MAAA,SAAAnD,IAAAA,KAAA,IAAAmB,GAAAqc,UAAArc,GAAA8Q,WAAA9Q,GAAA8Q,SAAA,EAAAjS,KAAA,KAAAmB,GAAAqc,UAAA,GAAArI,GAAAjH,YAAAzN,IAAAU,SAAAA,GAAAgC,MAAAL,KAAAqS,GAAArS,KACA,aAAArC,GAAAgd,YAAA,YAAAhd,GAAAgd,aAAAhd,GAAAyV,gBAAAwH,SAAA1d,EAAAyL,WAAAtK,GAAAgC,QAAA1C,GAAA6V,iBAAA,mBAAArT,GAAAjD,EAAAsW,iBAAA,OAAArT,GAAA,IAAAmS,IAAA,SAAApV,EAAAC,EAAAS,EAAAD,EAAAiC,EAAAwB,EAAAC,GAAA,GAAAC,GAAA,EAAAtC,EAAA9B,EAAAkB,OAAAqD,EAAA,MAAA7D,CAAA,IAAA,WAAAS,GAAAC,KAAAV,GAAA,CAAAgC,GAAA,CAAA,KAAA0B,IAAA1D,GAAA0U,GAAApV,EAAAC,EAAAmE,EAAA1D,EAAA0D,IAAA,EAAAF,EAAAC,OAAA,IAAA,SAAA1D,IAAAiC,GAAA,EAAAvB,GAAAO,WAAAjB,KAAA0D,GAAA,GAAAI,IAAAJ,GAAAlE,EAAA2B,KAAA5B,EAAAS,GAAAR,EAAA,OAAAsE,EAAAtE,EAAAA,EAAA,SAAAD,EAAAC,EAAAS,GAAA,MAAA6D,GAAA3C,KAAAT,GAAAnB,GAAAU,MAAAT,GAAA,KAAAmE,EAAAtC,EAAAsC,IAAAnE,EAAAD,EAAAoE,GAAA1D,EAAAyD,EAAA1D,EAAAA,EAAAmB,KAAA5B,EAAAoE,GAAAA,EAAAnE,EAAAD,EAAAoE,GAAA1D,IAAA,OAAAgC,GAAA1C,EAAAuE,EAAAtE,EAAA2B,KAAA5B,GAAA8B,EAAA7B,EAAAD,EAAA,GAAAU,GAAAwD,GAAAmR,GAAA,SAAArV,GAAA,MAAA,KAAAA,EAAA6B,UAAA,IAAA7B,EAAA6B,YAAA7B,EAAA6B,SAAAuB,GAAAE,IAAA,EAAAF,EAAA+H,WAAAwS,MAAA,SAAA3d,GAAA,GAAAC,GAAAD,EAAAO,KAAA8C,QAAA,OAAApD,KAAAA,KAAAoV,GAAArV,KAAAA,EAAA6B,SAAA7B,EAAAO,KAAA8C,SAAApD,EAAA4Q,OAAA+M,eAAA5d,EAAAO,KAAA8C,SAAAwQ,MAAA5T,EAAA4d,cAAA,MAAA5d,GAAA+D,IAAA,SAAAhE,EAAAC,EAAAS,GAAA,GAAAD,GAAAiC,EAAAnC,KAAAod,MAAA3d,EAAA,IAAA,gBAAAC,GAAAyC,EAAAvB,GAAAkM,UAAApN,IAAAS,MAAA,KAAAD,IAAAR,GAAAyC,EAAAvB,GAAAkM,UAAA5M,IAAAR,EAAAQ,EAAA,OAAAiC,IAAA6C,IAAA,SAAAvF,EAAAC,GAAA,MAAA,UAAAA,EAAAM,KAAAod,MAAA3d,GAAAA,EAAAO,KAAA8C,UAAArD,EAAAO,KAAA8C,SAAAlC,GAAAkM,UAAApN,KAAAmI,OAAA,SAAApI,EAAAC,EAAAS,GAAA,MAAA,UAAAT,GAAAA,GAAA,gBAAAA,IAAA,SAAAS,EAAAH,KAAAgF,IAAAvF,EAAAC,IAAAM,KAAAyD,IAAAhE,EAAAC,EAAAS,GAAA,SAAAA,EAAAA,EAAAT,IAAAkN,OAAA,SAAAnN,EAAAC,GAAA,GAAAS,GAAAD,EAAAT,EAAAO,KAAA8C,QAAA,IAAA,SAAA5C,EAAA,CAAA,GAAA,SAAAR,EAAA,CAAAqN,MAAAC,QAAAtN,GAAAA,EAAAA,EAAAkJ,IAAAhI,GAAAkM,YAAApN,EAAAkB,GAAAkM,UAAApN,GAAAA,EAAAA,IAAAQ,IAAAR,GAAAA,EAAAoC,MAAAC,SAAA5B,EAAAT,EAAAiB,MAAA,MAAAR,WAAAD,GAAAR,EAAAS,KAAA,SAAAT,GAAAkB,GAAA4L,cAAAtM,MAAAT,EAAA6B,SAAA7B,EAAAO,KAAA8C,SAAA,aAAArD,GAAAO,KAAA8C,YAAA8E,QAAA,SAAAnI,GAAA,GAAAC,GAAAD,EAAAO,KAAA8C,QAAA,OAAA,UAAApD,IAAAkB,GAAA4L,cAAA9M,IAAA,IAAAqF,IAAA,GAAAlC,GAAAW,GAAA,GAAAX,GAAAI,GAAA,gCAAAK,GAAA,QAAA1C,IAAAoH,QAAAJ,QAAA,SAAAnI,GAAA,MAAA+D,IAAAoE,QAAAnI,IAAAsF,GAAA6C,QAAAnI,IAAA4Q,KAAA,SAAA5Q,EAAAC,EAAAS,GAAA,MAAAqD,IAAAqE,OAAApI,EAAAC,EAAAS,IAAAod,WAAA,SAAA9d,EAAAC,GAAA8D,GAAAoJ,OAAAnN,EAAAC,IAAA8d,MAAA,SAAA/d,EAAAC,EAAAS,GAAA,MAAA4E,IAAA8C,OAAApI,EAAAC,EAAAS,IAAAsd,YAAA,SAAAhe,EAAAC,GAAAqF,GAAA6H,OAAAnN,EAAAC,MAAAkB,GAAA+P,GAAA3I,QAAAqI,KAAA,SAAA5Q,EAAAC,GAAA,GAAAS,GAAAD,EAAAiC,EAAAwB,EAAA3D,KAAA,GAAA4D,EAAAD,GAAAA,EAAAsS,UAAA,IAAA,SAAAxW,EAAA,CAAA,GAAAO,KAAAW,SAAAwB,EAAAqB,GAAAwB,IAAArB,GAAA,IAAAA,EAAArC,WAAAyD,GAAAC,IAAArB,EAAA,iBAAA,CAAA,IAAAxD,EAAAyD,EAAAjD,OAAAR,KAAAyD,EAAAzD,KAAAD,EAAA0D,EAAAzD,GAAA0c,KAAA,IAAA3c,EAAAsQ,QAAA,WAAAtQ,EAAAU,GAAAkM,UAAA5M,EAAAuC,MAAA,IAAAW,EAAAO,EAAAzD,EAAAiC,EAAAjC,KAAA6E,IAAAtB,IAAAE,EAAA,gBAAA,GAAA,MAAAxB,GAAA,MAAA,gBAAA1C,GAAAO,KAAA6B,KAAA,WAAA2B,GAAAC,IAAAzD,KAAAP,KAAAoV,GAAA7U,KAAA,SAAAN,GAAA,GAAAS,EAAA,IAAAwD,GAAA,SAAAjE,EAAA,CAAA,GAAAS,EAAAqD,GAAAwB,IAAArB,EAAAlE,GAAA,SAAAU,EAAA,MAAAA,EAAA,IAAAA,EAAAiD,EAAAO,EAAAlE,GAAA,SAAAU,EAAA,MAAAA,OAAAH,MAAA6B,KAAA,WAAA2B,GAAAC,IAAAzD,KAAAP,EAAAC,MAAA,KAAAA,EAAAwH,UAAAvG,OAAA,EAAA,MAAA,IAAA4c,WAAA,SAAA9d,GAAA,MAAAO,MAAA6B,KAAA,WAAA2B,GAAAoJ,OAAA5M,KAAAP,QAAAmB,GAAAoH,QAAAiE,MAAA,SAAAxM,EAAAC,EAAAS,GAAA,GAAAD,EAAA,IAAAT,EAAA,MAAAC,IAAAA,GAAA,MAAA,QAAAQ,EAAA6E,GAAAC,IAAAvF,EAAAC,GAAAS,KAAAD,GAAA6M,MAAAC,QAAA7M,GAAAD,EAAA6E,GAAA8C,OAAApI,EAAAC,EAAAkB,GAAAoR,UAAA7R,IAAAD,EAAAqG,KAAApG,IAAAD,OAAAwd,QAAA,SAAAje,EAAAC,GAAAA,EAAAA,GAAA,IAAA,IAAAS,GAAAS,GAAAqL,MAAAxM,EAAAC,GAAAQ,EAAAC,EAAAQ,OAAAwB,EAAAhC,EAAAuP,QAAA/L,EAAA/C,GAAAsL,YAAAzM,EAAAC,GAAAkE,EAAA,WAAAhD,GAAA8c,QAAAje,EAAAC,GAAA,gBAAAyC,IAAAA,EAAAhC,EAAAuP,QAAAxP,KAAAiC,IAAA,OAAAzC,GAAAS,EAAA8O,QAAA,oBAAAtL,GAAAyK,KAAAjM,EAAAd,KAAA5B,EAAAmE,EAAAD,KAAAzD,GAAAyD,GAAAA,EAAAyI,MAAAC,QAAAH,YAAA,SAAAzM,EAAAC,GAAA,GAAAS,GAAAT,EAAA,YAAA,OAAAqF,IAAAC,IAAAvF,EAAAU,IAAA4E,GAAA8C,OAAApI,EAAAU,GAAAiM,MAAAxL,GAAA4a,UAAA,eAAAnU,IAAA,WAAAtC,GAAA6H,OAAAnN,GAAAC,EAAA,QAAAS,WAAAS,GAAA+P,GAAA3I,QAAAiE,MAAA,SAAAxM,EAAAC,GAAA,GAAAS,GAAA,CAAA,OAAA,gBAAAV,KAAAC,EAAAD,EAAAA,EAAA,KAAAU,KAAA+G,UAAAvG,OAAAR,EAAAS,GAAAqL,MAAAjM,KAAA,GAAAP,GAAA,SAAAC,EAAAM,KAAAA,KAAA6B,KAAA,WAAA,GAAA1B,GAAAS,GAAAqL,MAAAjM,KAAAP,EAAAC,EAAAkB,IAAAsL,YAAAlM,KAAAP,GAAA,OAAAA,GAAA,eAAAU,EAAA,IAAAS,GAAA8c,QAAA1d,KAAAP,MAAAie,QAAA,SAAAje,GAAA,MAAAO,MAAA6B,KAAA,WAAAjB,GAAA8c,QAAA1d,KAAAP,MAAAke,WAAA,SAAAle,GAAA,MAAAO,MAAAiM,MAAAxM,GAAA,UAAA2C,QAAA,SAAA3C,EAAAC,GAAA,GAAAS,GAAAD,EAAA,EAAAiC,EAAAvB,GAAAwM,WAAAzJ,EAAA3D,KAAA4D,EAAA5D,KAAAW,OAAAkD,EAAA,aAAA3D,GAAAiC,EAAAwL,YAAAhK,GAAAA,IAAA,KAAA,gBAAAlE,KAAAC,EAAAD,EAAAA,EAAA,QAAAA,EAAAA,GAAA,KAAAmE,KAAAzD,EAAA4E,GAAAC,IAAArB,EAAAC,GAAAnE,EAAA,cAAAU,GAAAA,EAAAiM,QAAAlM,IAAAC,EAAAiM,MAAA/E,IAAAxD,GAAA,OAAAA,KAAA1B,EAAAC,QAAA1C,KAAA,IAAA4V,IAAA,sCAAAsI,OAAAzZ,GAAA,GAAAuQ,QAAA,iBAAAY,GAAA,cAAA,KAAA/K,IAAA,MAAA,QAAA,SAAA,QAAAtF,GAAA,SAAAxF,EAAAC,GAAA,MAAAD,GAAAC,GAAAD,EAAA,SAAAA,EAAA4E,MAAAS,SAAA,KAAArF,EAAA4E,MAAAS,SAAAlE,GAAA8F,SAAAjH,EAAAiF,cAAAjF,IAAA,SAAAmB,GAAAmD,IAAAtE,EAAA,YAAA2T,GAAA,SAAA3T,EAAAC,EAAAS,EAAAD,GAAA,GAAAiC,GAAAwB,EAAAC,IAAA,KAAAD,IAAAjE,GAAAkE,EAAAD,GAAAlE,EAAA4E,MAAAV,GAAAlE,EAAA4E,MAAAV,GAAAjE,EAAAiE,EAAAxB,GAAAhC,EAAAqC,MAAA/C,EAAAS,MAAA,KAAAyD,IAAAjE,GAAAD,EAAA4E,MAAAV,GAAAC,EAAAD,EAAA,OAAAxB,IAAAwC,KAAA/D,IAAA+P,GAAA3I,QAAA6V,KAAA,WAAA,MAAAhZ,GAAA7E,MAAA,IAAA8d,KAAA,WAAA,MAAAjZ,GAAA7E,OAAA+d,OAAA,SAAAte,GAAA,MAAA,iBAAAA,GAAAA,EAAAO,KAAA6d,OAAA7d,KAAA8d,OAAA9d,KAAA6B,KAAA,WAAAoD,GAAAjF,MAAAY,GAAAZ,MAAA6d,OAAAjd,GAAAZ,MAAA8d,WAAA,IAAA5V,IAAA,wBAAApC,GAAA,iCAAAa,GAAA,4BAAAZ,IAAAiY,QAAA,EAAA,+BAAA,aAAAC,OAAA,EAAA,UAAA,YAAAC,KAAA,EAAA,oBAAA,uBAAAC,IAAA,EAAA,iBAAA,oBAAAC,IAAA,EAAA,qBAAA,yBAAApY,UAAA,EAAA,GAAA,IAAAD,IAAAsY,SAAAtY,GAAAiY,OAAAjY,GAAAuY,MAAAvY,GAAAwY,MAAAxY,GAAAyY,SAAAzY,GAAA0Y,QAAA1Y,GAAAkY,MAAAlY,GAAA2Y,GAAA3Y,GAAAqY,EAAA,IAAAvY,IAAA,aAAA,WAAA,GAAApG,GAAAS,GAAAuF,yBAAA/F,EAAAD,EAAAc,YAAAL,GAAAE,cAAA,QAAAD,EAAAD,GAAAE,cAAA,QAAAD,GAAAyS,aAAA,OAAA,SAAAzS,EAAAyS,aAAA,UAAA,WAAAzS,EAAAyS,aAAA,OAAA,KAAAlT,EAAAa,YAAAJ,GAAAyF,GAAA4C,WAAA9I,EAAAif,WAAA,GAAAA,WAAA,GAAAxY,UAAAgC,QAAAzI,EAAAuG,UAAA,yBAAAL,GAAAgZ,iBAAAlf,EAAAif,WAAA,GAAAxY,UAAAiC,eAAA,IAAAiL,IAAAnT,GAAAyV,gBAAA9C,GAAA,OAAAU,GAAA,iDAAAI,GAAA,qBAAA/S,IAAAwG,OAAAyX,UAAAxX,IAAA,SAAA5H,EAAAC,EAAAS,EAAAD,EAAAiC,GAAA,GAAAwB,GAAAC,EAAAC,EAAAtC,EAAAyC,EAAAE,EAAAsB,EAAAE,EAAAC,EAAAC,EAAA3F,EAAAqI,EAAAvD,GAAAC,IAAAvF,EAAA,IAAA6I,EAAA,IAAAnI,EAAA2e,UAAAnb,EAAAxD,EAAAA,EAAAwD,EAAAmb,QAAA3c,EAAAwB,EAAAsW,UAAA9X,GAAAvB,GAAAoT,KAAAuC,gBAAAlD,GAAAlR,GAAAhC,EAAAgH,OAAAhH,EAAAgH,KAAAvG,GAAAuG,SAAA5F,EAAA+G,EAAAR,UAAAvG,EAAA+G,EAAAR,YAAAlE,EAAA0E,EAAAP,UAAAnE,EAAA0E,EAAAP,OAAA,SAAArI,GAAA,MAAA,mBAAAkB,KAAAA,GAAAwG,MAAA2X,YAAArf,EAAAmB,KAAAD,GAAAwG,MAAA4X,SAAAxc,MAAA/C,EAAAyH,WAAA,SAAAxH,GAAAA,GAAA,IAAAoC,MAAAC,MAAA,IAAAiC,EAAAtE,EAAAiB,OAAAqD,KAAAH,EAAA8P,GAAAvP,KAAA1E,EAAAsE,QAAA2B,EAAA1F,EAAA4D,EAAA,GAAA+B,GAAA/B,EAAA,IAAA,IAAAqM,MAAA,KAAAoB,OAAA3L,IAAAH,EAAA5E,GAAAwG,MAAA6X,QAAAtZ,OAAAA,GAAAxD,EAAAqD,EAAA0Z,aAAA1Z,EAAA2Z,WAAAxZ,EAAAH,EAAA5E,GAAAwG,MAAA6X,QAAAtZ,OAAAzB,EAAAtD,GAAAoH,QAAAnH,KAAA8E,EAAAyZ,SAAAnf,EAAAoQ,KAAAnQ,EAAA4e,QAAA3e,EAAAgH,KAAAhH,EAAAgH,KAAA8S,SAAA9X,EAAAkT,aAAAlT,GAAAvB,GAAAuZ,KAAArY,MAAAuT,aAAA5T,KAAAU,GAAAkd,UAAAzZ,EAAAgJ,KAAA,MAAAjL,IAAA+B,EAAAnE,EAAAoE,MAAAD,EAAAnE,EAAAoE,MAAAD,EAAA4Z,cAAA,EAAA9Z,EAAA+Z,OAAA/Z,EAAA+Z,MAAAle,KAAA5B,EAAAS,EAAA0F,EAAAhC,MAAA,GAAAnE,EAAAsW,kBAAAtW,EAAAsW,iBAAApQ,EAAA/B,IAAA4B,EAAA6B,MAAA7B,EAAA6B,IAAAhG,KAAA5B,EAAAyE,GAAAA,EAAA4a,QAAA3X,OAAAjD,EAAA4a,QAAA3X,KAAAhH,EAAAgH,OAAAhF,EAAAuD,EAAA6L,OAAA7L,EAAA4Z,gBAAA,EAAApb,GAAAwB,EAAAa,KAAArC,GAAAtD,GAAAwG,MAAAyX,OAAAlZ,IAAA,IAAAiH,OAAA,SAAAnN,EAAAC,EAAAS,EAAAD,EAAAiC,GAAA,GAAAwB,GAAAC,EAAAC,EAAAtC,EAAAyC,EAAAE,EAAAsB,EAAAE,EAAAC,EAAAC,EAAA3F,EAAAqI,EAAAvD,GAAA6C,QAAAnI,IAAAsF,GAAAC,IAAAvF,EAAA,IAAA6I,IAAA/G,EAAA+G,EAAAR,QAAA,CAAA,IAAApI,GAAAA,GAAA,IAAAoC,MAAAC,MAAA,IAAAiC,EAAAtE,EAAAiB,OAAAqD,KAAA,GAAAH,EAAA8P,GAAAvP,KAAA1E,EAAAsE,QAAA2B,EAAA1F,EAAA4D,EAAA,GAAA+B,GAAA/B,EAAA,IAAA,IAAAqM,MAAA,KAAAoB,OAAA3L,EAAA,CAAA,IAAAH,EAAA5E,GAAAwG,MAAA6X,QAAAtZ,OAAAA,GAAAzF,EAAAsF,EAAA0Z,aAAA1Z,EAAA2Z,WAAAxZ,EAAAD,EAAAnE,EAAAoE,OAAA9B,EAAAA,EAAA,IAAA,GAAA6Q,QAAA,UAAA9O,EAAAgJ,KAAA,iBAAA,WAAAhL,EAAAD,EAAA+B,EAAA/E,OAAAgD,KAAAO,EAAAwB,EAAA/B,IAAAxB,GAAAlC,IAAAiE,EAAAkb,UAAAjf,GAAAA,EAAAgH,OAAAjD,EAAAiD,MAAAtD,IAAAA,EAAApC,KAAAyC,EAAAmb,YAAAnf,GAAAA,IAAAgE,EAAA+V,WAAA,OAAA/Z,IAAAgE,EAAA+V,YAAAvU,EAAA6L,OAAA5N,EAAA,GAAAO,EAAA+V,UAAAvU,EAAA4Z,gBAAA9Z,EAAAoH,QAAApH,EAAAoH,OAAAvL,KAAA5B,EAAAyE,GAAAN,KAAA8B,EAAA/E,SAAA6E,EAAAga,UAAAha,EAAAga,SAAAne,KAAA5B,EAAAmG,EAAA0C,EAAAP,WAAA,GAAAnH,GAAA6e,YAAAhgB,EAAAkG,EAAA2C,EAAAP,cAAAxG,GAAAoE,QAAA,KAAAA,IAAApE,GAAAX,GAAAwG,MAAAwF,OAAAnN,EAAAkG,EAAAjG,EAAAsE,GAAA7D,EAAAD,GAAA,EAAAU,IAAA4L,cAAAjL,IAAAwD,GAAA6H,OAAAnN,EAAA,mBAAAuf,SAAA,SAAAvf,GAAA,GAAAU,GAAAD,EAAAiC,EAAAwB,EAAAC,EAAAC,EAAAnE,EAAAkB,GAAAwG,MAAAsY,IAAAjgB,GAAA8B,EAAA,GAAAwL,OAAA7F,UAAAvG,QAAAqD,GAAAe,GAAAC,IAAAhF,KAAA,eAAAN,EAAAmB,UAAAqD,EAAAtD,GAAAwG,MAAA6X,QAAAvf,EAAAmB,SAAA,KAAAU,EAAA,GAAA7B,EAAAS,EAAA,EAAAA,EAAA+G,UAAAvG,OAAAR,IAAAoB,EAAApB,GAAA+G,UAAA/G,EAAA,IAAAT,EAAAigB,eAAA3f,MAAAkE,EAAA0b,aAAA1b,EAAA0b,YAAAve,KAAArB,KAAAN,MAAA,EAAA,CAAA,IAAAmE,EAAAjD,GAAAwG,MAAAyY,SAAAxe,KAAArB,KAAAN,EAAAsE,GAAA7D,EAAA,GAAAwD,EAAAE,EAAA1D,QAAAT,EAAAogB,wBAAA,IAAApgB,EAAAqgB,cAAApc,EAAA0J,KAAAnN,EAAA,GAAA0D,EAAAD,EAAAkc,SAAA3f,QAAAR,EAAAsgB,iCAAAtgB,EAAAugB,aAAAvgB,EAAAugB,WAAAxe,KAAAmC,EAAAyb,aAAA3f,EAAAwgB,UAAAtc,EAAAlE,EAAA2Q,KAAAzM,EAAAyM,KAAAlO,IAAAvB,GAAAwG,MAAA6X,QAAArb,EAAAwb,eAAArX,QAAAnE,EAAAkb,SAAAtc,MAAAmB,EAAA0J,KAAA9L,GAAA,SAAAY,IAAAzC,EAAAygB,OAAAhe,MAAA,IAAAzC,EAAA0gB,iBAAA1gB,EAAA2gB,mBAAA,OAAAnc,GAAAoc,cAAApc,EAAAoc,aAAAjf,KAAArB,KAAAN,GAAAA,EAAAygB,SAAAN,SAAA,SAAApgB,EAAAC,GAAA,GAAAS,GAAAD,EAAAiC,EAAAwB,EAAAC,EAAAC,KAAAtC,EAAA7B,EAAA4f,cAAAtb,EAAAvE,EAAA0Y,MAAA,IAAA5W,GAAAyC,EAAA1C,YAAA,UAAA7B,EAAAoB,MAAApB,EAAAwZ,QAAA,GAAA,KAAAjV,IAAAhE,KAAAgE,EAAAA,EAAAxD,YAAAR,KAAA,GAAA,IAAAgE,EAAA1C,WAAA,UAAA7B,EAAAoB,MAAAmD,EAAAkP,YAAA,GAAA,CAAA,IAAAvP,KAAAC,KAAAzD,EAAA,EAAAA,EAAAoB,EAAApB,IAAAD,EAAAR,EAAAS,GAAAgC,EAAAjC,EAAA+Z,SAAA,IAAA,SAAArW,EAAAzB,KAAAyB,EAAAzB,GAAAjC,EAAAmV,aAAAzU,GAAAuB,EAAAnC,MAAA4a,MAAA5W,IAAA,EAAApD,GAAAoT,KAAA7R,EAAAnC,KAAA,MAAAgE,IAAArD,QAAAiD,EAAAzB,IAAAwB,EAAA4C,KAAArG,EAAAyD,GAAAhD,QAAAkD,EAAA0C,MAAA8G,KAAArJ,EAAA6b,SAAAlc,IAAA,MAAAK,GAAAhE,KAAAuB,EAAA7B,EAAAiB,QAAAkD,EAAA0C,MAAA8G,KAAArJ,EAAA6b,SAAAngB,EAAA+C,MAAAlB,KAAAsC,GAAA0c,QAAA,SAAA9gB,EAAAC,GAAA4Q,OAAA+M,eAAAzc,GAAA4f,MAAA5V,UAAAnL,GAAAghB,YAAA,EAAAnD,cAAA,EAAAtY,IAAApE,GAAAO,WAAAzB,GAAA,WAAA,GAAAM,KAAA0gB,cAAA,MAAAhhB,GAAAM,KAAA0gB,gBAAA,WAAA,GAAA1gB,KAAA0gB,cAAA,MAAA1gB,MAAA0gB,cAAAjhB,IAAAgE,IAAA,SAAA/D,GAAA4Q,OAAA+M,eAAArd,KAAAP,GAAAghB,YAAA,EAAAnD,cAAA,EAAAqD,UAAA,EAAArN,MAAA5T,QAAAggB,IAAA,SAAAjgB,GAAA,MAAAA,GAAAmB,GAAAkC,SAAArD,EAAA,GAAAmB,IAAA4f,MAAA/gB,IAAAwf,SAAA2B,MAAAC,UAAA,GAAAtI,OAAAuI,QAAA,WAAA,GAAA9gB,OAAA8G,KAAA9G,KAAAuY,MAAA,MAAAvY,MAAAuY,SAAA,GAAA2G,aAAA,WAAA6B,MAAAD,QAAA,WAAA,GAAA9gB,OAAA8G,KAAA9G,KAAA+gB,KAAA,MAAA/gB,MAAA+gB,QAAA,GAAA7B,aAAA,YAAA8B,OAAAF,QAAA,WAAA,GAAA,aAAA9gB,KAAAa,MAAAb,KAAAghB,OAAAjgB,EAAAf,KAAA,SAAA,MAAAA,MAAAghB,SAAA,GAAAhb,SAAA,SAAAvG,GAAA,MAAAsB,GAAAtB,EAAA0Y,OAAA,OAAA8I,cAAAX,aAAA,SAAA7gB,GAAA,SAAAA,EAAA0gB,QAAA1gB,EAAAihB,gBAAAjhB,EAAAihB,cAAAQ,YAAAzhB,EAAA0gB,YAAAvf,GAAA6e,YAAA,SAAAhgB,EAAAC,EAAAS,GAAAV,EAAAkD,qBAAAlD,EAAAkD,oBAAAjD,EAAAS,IAAAS,GAAA4f,MAAA,SAAA/gB,EAAAC,GAAA,MAAAM,gBAAAY,IAAA4f,OAAA/gB,GAAAA,EAAAoB,MAAAb,KAAA0gB,cAAAjhB,EAAAO,KAAAa,KAAApB,EAAAoB,KAAAb,KAAAmhB,mBAAA1hB,EAAA2hB,kBAAA,SAAA3hB,EAAA2hB,kBAAA3hB,EAAAyhB,eAAA,EAAAta,EAAAC,EAAA7G,KAAAmY,OAAA1Y,EAAA0Y,QAAA,IAAA1Y,EAAA0Y,OAAA7W,SAAA7B,EAAA0Y,OAAA3X,WAAAf,EAAA0Y,OAAAnY,KAAA+f,cAAAtgB,EAAAsgB,cAAA/f,KAAAqhB,cAAA5hB,EAAA4hB,eAAArhB,KAAAa,KAAApB,EAAAC,GAAAkB,GAAAoH,OAAAhI,KAAAN,GAAAM,KAAAshB,UAAA7hB,GAAAA,EAAA6hB,WAAA1gB,GAAA4K,WAAAxL,KAAAY,GAAAkC,UAAA,IAAA,GAAAlC,IAAA4f,MAAA/gB,EAAAC,IAAAkB,GAAA4f,MAAA5V,WAAAoG,YAAApQ,GAAA4f,MAAAW,mBAAAta,EAAAiZ,qBAAAjZ,EAAAmZ,8BAAAnZ,EAAA0a,aAAA,EAAAnB,eAAA,WAAA,GAAA3gB,GAAAO,KAAA0gB,aAAA1gB,MAAAmhB,mBAAAva,EAAAnH,IAAAO,KAAAuhB,aAAA9hB,EAAA2gB,kBAAAC,gBAAA,WAAA,GAAA5gB,GAAAO,KAAA0gB,aAAA1gB,MAAA8f,qBAAAlZ,EAAAnH,IAAAO,KAAAuhB,aAAA9hB,EAAA4gB,mBAAAmB,yBAAA,WAAA,GAAA/hB,GAAAO,KAAA0gB,aAAA1gB,MAAAggB,8BAAApZ,EAAAnH,IAAAO,KAAAuhB,aAAA9hB,EAAA+hB,2BAAAxhB,KAAAqgB,oBAAAzf,GAAAiB,MAAA4f,QAAA,EAAAC,SAAA,EAAAC,YAAA,EAAAC,gBAAA,EAAAC,SAAA,EAAAC,QAAA,EAAAC,YAAA,EAAAC,SAAA,EAAAC,OAAA,EAAAC,OAAA,EAAAC,UAAA,EAAAC,MAAA,EAAAC,MAAA,EAAAC,UAAA,EAAAC,KAAA,EAAAC,SAAA,EAAAvJ,QAAA,EAAAwJ,SAAA,EAAAC,SAAA,EAAAC,SAAA,EAAAC,SAAA,EAAAC,SAAA,EAAAC,WAAA,EAAAC,aAAA,EAAAC,SAAA,EAAAC,SAAA,EAAAC,eAAA,EAAAC,WAAA,EAAAC,SAAA,EAAAC,MAAA,SAAA5jB,GAAA,GAAAC,GAAAD,EAAAwZ,MAAA,OAAA,OAAAxZ,EAAA4jB,OAAAxQ,GAAApR,KAAAhC,EAAAoB,MAAA,MAAApB,EAAA6iB,SAAA7iB,EAAA6iB,SAAA7iB,EAAA+iB,SAAA/iB,EAAA4jB,OAAA,SAAA3jB,GAAA6T,GAAA9R,KAAAhC,EAAAoB,MAAA,EAAAnB,EAAA,EAAA,EAAAA,EAAA,EAAA,EAAAA,EAAA,EAAA,EAAAD,EAAA4jB,QAAAziB,GAAAwG,MAAAmZ,SAAA3f,GAAAiB,MAAAyhB,WAAA,YAAAC,WAAA,WAAAC,aAAA,cAAAC,aAAA,cAAA,SAAAhkB,EAAAC,GAAAkB,GAAAwG,MAAA6X,QAAAxf,IAAAyf,aAAAxf,EAAAyf,SAAAzf,EAAAqI,OAAA,SAAAtI,GAAA,GAAAU,GAAAD,EAAAF,KAAAmC,EAAA1C,EAAA4hB,cAAA1d,EAAAlE,EAAAygB,SAAA,OAAA/d,KAAAA,IAAAjC,GAAAU,GAAA8F,SAAAxG,EAAAiC,MAAA1C,EAAAoB,KAAA8C,EAAAyb,SAAAjf,EAAAwD,EAAAmb,QAAAtc,MAAAxC,KAAAkH,WAAAzH,EAAAoB,KAAAnB,GAAAS,MAAAS,GAAA+P,GAAA3I,QAAA0b,GAAA,SAAAjkB,EAAAC,EAAAS,EAAAD,GAAA,MAAA8G,GAAAhH,KAAAP,EAAAC,EAAAS,EAAAD,IAAAyjB,IAAA,SAAAlkB,EAAAC,EAAAS,EAAAD,GAAA,MAAA8G,GAAAhH,KAAAP,EAAAC,EAAAS,EAAAD,EAAA,IAAA+G,IAAA,SAAAxH,EAAAC,EAAAS,GAAA,GAAAD,GAAAiC,CAAA,IAAA1C,GAAAA,EAAA2gB,gBAAA3gB,EAAAygB,UAAA,MAAAhgB,GAAAT,EAAAygB,UAAAtf,GAAAnB,EAAAkgB,gBAAA1Y,IAAA/G,EAAAmf,UAAAnf,EAAAkf,SAAA,IAAAlf,EAAAmf,UAAAnf,EAAAkf,SAAAlf,EAAA+Z,SAAA/Z,EAAA4e,SAAA9e,IAAA,IAAA,gBAAAP,GAAA,CAAA,IAAA0C,IAAA1C,GAAAO,KAAAiH,IAAA9E,EAAAzC,EAAAD,EAAA0C,GAAA,OAAAnC,MAAA,MAAAN,MAAA,GAAA,kBAAAA,KAAAS,EAAAT,EAAAA,EAAA,QAAAS,KAAA,IAAAA,EAAA0G,GAAA7G,KAAA6B,KAAA,WAAAjB,GAAAwG,MAAAwF,OAAA5M,KAAAP,EAAAU,EAAAT,OAAA,IAAAqU,IAAA,8FAAA6P,GAAA,wBAAAnb,GAAA,oCAAAhB,GAAA,cAAAuB,GAAA,0CAAApI,IAAAoH,QAAA9B,cAAA,SAAAzG,GAAA,MAAAA,GAAA4D,QAAA0Q,GAAA,cAAAlL,MAAA,SAAApJ,EAAAC,EAAAS,GAAA,GAAAD,GAAAiC,EAAAwB,EAAAC,EAAAC,EAAApE,EAAAkf,WAAA,GAAApd,EAAAX,GAAA8F,SAAAjH,EAAAiF,cAAAjF,EAAA,MAAAmG,GAAAgZ,gBAAA,IAAAnf,EAAA6B,UAAA,KAAA7B,EAAA6B,UAAAV,GAAAyZ,SAAA5a,IAAA,IAAAmE,EAAAsB,EAAArB,GAAAF,EAAAuB,EAAAzF,GAAAS,EAAA,EAAAiC,EAAAwB,EAAAhD,OAAAT,EAAAiC,EAAAjC,IAAA+H,EAAAtE,EAAAzD,GAAA0D,EAAA1D,GAAA,IAAAR,EAAA,GAAAS,EAAA,IAAAwD,EAAAA,GAAAuB,EAAAzF,GAAAmE,EAAAA,GAAAsB,EAAArB,GAAA3D,EAAA,EAAAiC,EAAAwB,EAAAhD,OAAAT,EAAAiC,EAAAjC,IAAAyH,EAAAhE,EAAAzD,GAAA0D,EAAA1D,QAAAyH,GAAAlI,EAAAoE,EAAA,OAAAD,GAAAsB,EAAArB,EAAA,UAAAD,EAAAjD,OAAA,GAAA2E,EAAA1B,GAAArC,GAAA2D,EAAAzF,EAAA,WAAAoE,GAAAqF,UAAA,SAAAzJ,GAAA,IAAA,GAAAC,GAAAS,EAAAD,EAAAiC,EAAAvB,GAAAwG,MAAA6X,QAAAtb,EAAA,EAAA,UAAAxD,EAAAV,EAAAkE,IAAAA,IAAA,GAAAmR,GAAA3U,GAAA,CAAA,GAAAT,EAAAS,EAAA4E,GAAAjC,SAAA,CAAA,GAAApD,EAAAoI,OAAA,IAAA5H,IAAAR,GAAAoI,OAAA3F,EAAAjC,GAAAU,GAAAwG,MAAAwF,OAAAzM,EAAAD,GAAAU,GAAA6e,YAAAtf,EAAAD,EAAAR,EAAAqI,OAAA5H,GAAA4E,GAAAjC,SAAA,OAAA3C,EAAAqD,GAAAV,WAAA3C,EAAAqD,GAAAV,SAAA,YAAAlC,GAAA+P,GAAA3I,QAAA6b,OAAA,SAAApkB,GAAA,MAAAwJ,GAAAjJ,KAAAP,GAAA,IAAAmN,OAAA,SAAAnN,GAAA,MAAAwJ,GAAAjJ,KAAAP,IAAAY,KAAA,SAAAZ,GAAA,MAAAoV,IAAA7U,KAAA,SAAAP,GAAA,MAAA,UAAAA,EAAAmB,GAAAP,KAAAL,MAAAA,KAAAoM,QAAAvK,KAAA,WAAA,IAAA7B,KAAAsB,UAAA,KAAAtB,KAAAsB,UAAA,IAAAtB,KAAAsB,WAAAtB,KAAAsG,YAAA7G,MAAA,KAAAA,EAAAyH,UAAAvG,SAAAmjB,OAAA,WAAA,MAAAzb,GAAArI,KAAAkH,UAAA,SAAAzH,GAAA,GAAA,IAAAO,KAAAsB,UAAA,KAAAtB,KAAAsB,UAAA,IAAAtB,KAAAsB,SAAA,CAAA,GAAA5B,GAAA4H,EAAAtH,KAAAP,EAAAC,GAAAa,YAAAd,OAAAskB,QAAA,WAAA,MAAA1b,GAAArI,KAAAkH,UAAA,SAAAzH,GAAA,GAAA,IAAAO,KAAAsB,UAAA,KAAAtB,KAAAsB,UAAA,IAAAtB,KAAAsB,SAAA,CAAA,GAAA5B,GAAA4H,EAAAtH,KAAAP,EAAAC,GAAAskB,aAAAvkB,EAAAC,EAAA2G,gBAAA4d,OAAA,WAAA,MAAA5b,GAAArI,KAAAkH,UAAA,SAAAzH,GAAAO,KAAAQ,YAAAR,KAAAQ,WAAAwjB,aAAAvkB,EAAAO,SAAAkkB,MAAA,WAAA,MAAA7b,GAAArI,KAAAkH,UAAA,SAAAzH,GAAAO,KAAAQ,YAAAR,KAAAQ,WAAAwjB,aAAAvkB,EAAAO,KAAAiT,gBAAA7G,MAAA,WAAA,IAAA,GAAA3M,GAAAC,EAAA,EAAA,OAAAD,EAAAO,KAAAN,IAAAA,IAAA,IAAAD,EAAA6B,WAAAV,GAAAsI,UAAAhE,EAAAzF,GAAA,IAAAA,EAAA6G,YAAA,GAAA,OAAAtG,OAAA6I,MAAA,SAAApJ,EAAAC,GAAA,MAAAD,GAAA,MAAAA,GAAAA,EAAAC,EAAA,MAAAA,EAAAD,EAAAC,EAAAM,KAAA4I,IAAA,WAAA,MAAAhI,IAAAiI,MAAA7I,KAAAP,EAAAC,MAAAiJ,KAAA,SAAAlJ,GAAA,MAAAoV,IAAA7U,KAAA,SAAAP,GAAA,GAAAC,GAAAM,KAAA,OAAAG,EAAA,EAAAD,EAAAF,KAAAW,MAAA,IAAA,SAAAlB,GAAA,IAAAC,EAAA4B,SAAA,MAAA5B,GAAAuG,SAAA,IAAA,gBAAAxG,KAAAmkB,GAAAniB,KAAAhC,KAAAsG,IAAAD,GAAA1B,KAAA3E,KAAA,GAAA,KAAA,GAAAwB,eAAA,CAAAxB,EAAAmB,GAAAsF,cAAAzG,EAAA,KAAA,KAAAU,EAAAD,EAAAC,IAAAT,EAAAM,KAAAG,OAAA,IAAAT,EAAA4B,WAAAV,GAAAsI,UAAAhE,EAAAxF,GAAA,IAAAA,EAAAuG,UAAAxG,EAAAC,GAAA,EAAA,MAAAyC,KAAAzC,GAAAM,KAAAoM,QAAA0X,OAAArkB,IAAA,KAAAA,EAAAyH,UAAAvG,SAAAwjB,YAAA,WAAA,GAAA1kB,KAAA,OAAA4I,GAAArI,KAAAkH,UAAA,SAAAxH,GAAA,GAAAS,GAAAH,KAAAQ,UAAAI,IAAA6F,QAAAzG,KAAAP,GAAA,IAAAmB,GAAAsI,UAAAhE,EAAAlF,OAAAG,GAAAA,EAAAikB,aAAA1kB,EAAAM,QAAAP,MAAAmB,GAAAiB,MAAAwiB,SAAA,SAAAC,UAAA,UAAAN,aAAA,SAAAO,YAAA,QAAAC,WAAA,eAAA,SAAA/kB,EAAAC,GAAAkB,GAAA+P,GAAAlR,GAAA,SAAAA,GAAA,IAAA,GAAAU,GAAAD,KAAAiC,EAAAvB,GAAAnB,GAAAkE,EAAAxB,EAAAxB,OAAA,EAAAiD,EAAA,EAAAA,GAAAD,EAAAC,IAAAzD,EAAAyD,IAAAD,EAAA3D,KAAAA,KAAA6I,OAAA,GAAAjI,GAAAuB,EAAAyB,IAAAlE,GAAAS,GAAA0D,GAAArB,MAAAtC,EAAAC,EAAA6E,MAAA,OAAAhF,MAAAkR,UAAAhR,KAAA,IAAAsJ,IAAA,UAAAD,GAAA,GAAAmL,QAAA,KAAAY,GAAA,kBAAA,KAAAlM,GAAA,SAAA1J,GAAA,GAAAS,GAAAT,EAAAgF,cAAAmR,WAAA,OAAA1V,IAAAA,EAAAskB,SAAAtkB,EAAAV,GAAAU,EAAAukB,iBAAAhlB,KAAA,WAAA,QAAAA,KAAA,GAAA6B,EAAA,CAAAA,EAAA8C,MAAAsgB,QAAA,4GAAApjB,EAAA0E,UAAA,GAAAoN,GAAA9S,YAAAsD,EAAA,IAAAnE,GAAAD,EAAAilB,iBAAAnjB,EAAApB,GAAA,OAAAT,EAAAoW,IAAAlS,EAAA,QAAAlE,EAAAklB,WAAAziB,EAAA,QAAAzC,EAAA+J,MAAAlI,EAAA8C,MAAAwgB,YAAA,MAAAlhB,EAAA,QAAAjE,EAAAmlB,YAAAxR,GAAA5S,YAAAoD,GAAAtC,EAAA,MAAA,GAAApB,GAAAgC,EAAAwB,EAAAC,EAAAC,EAAA3D,GAAAE,cAAA,OAAAmB,EAAArB,GAAAE,cAAA,MAAAmB,GAAA8C,QAAA9C,EAAA8C,MAAAygB,eAAA,cAAAvjB,EAAAod,WAAA,GAAAta,MAAAygB,eAAA,GAAAlf,GAAAmf,gBAAA,gBAAAxjB,EAAA8C,MAAAygB,eAAAjhB,EAAAQ,MAAAsgB,QAAA,4FAAA9gB,EAAAtD,YAAAgB,GAAAX,GAAAoH,OAAApC,IAAAof,cAAA,WAAA,MAAAtlB,KAAAS,GAAAsK,kBAAA,WAAA,MAAA/K,KAAAyC,GAAAmH,iBAAA,WAAA,MAAA5J,KAAAiE,GAAAshB,mBAAA,WAAA,MAAAvlB,KAAAkE,QAAA,IAAAshB,IAAA,4BAAAC,GAAA,MAAAC,IAAAC,SAAA,WAAAC,WAAA,SAAAxgB,QAAA,SAAAygB,IAAAC,cAAA,IAAAC,WAAA,OAAAzb,IAAA,SAAA,MAAA,MAAAF,GAAA5J,GAAAE,cAAA,OAAAiE,KAAAzD,IAAAoH,QAAAiF,UAAAtB,SAAA3G,IAAA,SAAAvF,EAAAC,GAAA,GAAAA,EAAA,CAAA,GAAAS,GAAAgJ,EAAA1J,EAAA,UAAA,OAAA,KAAAU,EAAA,IAAAA,MAAA8D,WAAAyhB,yBAAA,EAAAC,aAAA,EAAAC,aAAA,EAAAC,UAAA,EAAAC,YAAA,EAAAL,YAAA,EAAAM,YAAA,EAAApa,SAAA,EAAAqa,OAAA,EAAAC,SAAA,EAAAC,QAAA,EAAAC,QAAA,EAAAC,MAAA,GAAAlc,UAAAmc,MAAA,YAAAhiB,MAAA,SAAA5E,EAAAC,EAAAS,EAAAD,GAAA,GAAAT,GAAA,IAAAA,EAAA6B,UAAA,IAAA7B,EAAA6B,UAAA7B,EAAA4E,MAAA,CAAA,GAAAlC,GAAAwB,EAAAC,EAAAC,EAAAjD,GAAAkM,UAAApN,GAAA6B,EAAA4jB,GAAA1jB,KAAA/B,GAAAsE,EAAAvE,EAAA4E,KAAA,OAAA9C,KAAA7B,EAAAuK,EAAApG,IAAAD,EAAAhD,GAAAqM,SAAAvN,IAAAkB,GAAAqM,SAAApJ,GAAA,SAAA1D,EAAAyD,GAAA,OAAAA,IAAA,UAAAzB,EAAAyB,EAAAoB,IAAAvF,GAAA,EAAAS,IAAAiC,EAAA6B,EAAAtE,IAAAiE,QAAAxD,GAAA,WAAAwD,IAAAxB,EAAAgC,GAAAC,KAAAjE,KAAAgC,EAAA,KAAAhC,EAAAuD,EAAAjE,EAAAC,EAAAyC,GAAAwB,EAAA,eAAA,MAAAxD,GAAAA,IAAAA,IAAA,WAAAwD,IAAAxD,GAAAgC,GAAAA,EAAA,KAAAvB,GAAAqD,UAAAJ,GAAA,GAAA,OAAA+B,GAAAmf,iBAAA,KAAA5kB,GAAA,IAAAT,EAAA8Q,QAAA,gBAAAxM,EAAAtE,GAAA,WAAAkE,GAAA,OAAAA,IAAA,UAAAzD,EAAAyD,EAAAH,IAAAhE,EAAAU,EAAAD,MAAAqB,EAAAyC,EAAAsiB,YAAA5mB,EAAAS,GAAA6D,EAAAtE,GAAAS,QAAA4D,IAAA,SAAAtE,EAAAC,EAAAS,EAAAD,GAAA,GAAAiC,GAAAwB,EAAAC,EAAAC,EAAAjD,GAAAkM,UAAApN,GAAA6B,EAAA4jB,GAAA1jB,KAAA/B,EAAA,OAAA6B,KAAA7B,EAAAuK,EAAApG,IAAAD,EAAAhD,GAAAqM,SAAAvN,IAAAkB,GAAAqM,SAAApJ,GAAAD,GAAA,OAAAA,KAAAzB,EAAAyB,EAAAoB,IAAAvF,GAAA,EAAAU,IAAA,SAAAgC,IAAAA,EAAAgH,EAAA1J,EAAAC,EAAAQ,IAAA,WAAAiC,GAAAzC,IAAA6lB,MAAApjB,EAAAojB,GAAA7lB,IAAA,KAAAS,GAAAA,GAAAwD,EAAA+G,WAAAvI,GAAAhC,KAAA,GAAAomB,SAAA5iB,GAAAA,GAAA,EAAAxB,GAAAA,KAAAvB,GAAAiB,MAAA,SAAA,SAAA,SAAApC,EAAAC,GAAAkB,GAAAqM,SAAAvN,IAAAsF,IAAA,SAAAvF,EAAAU,EAAAD,GAAA,GAAAC,EAAA,OAAA+kB,GAAAzjB,KAAAb,GAAAmD,IAAAtE,EAAA,aAAAA,EAAA+mB,iBAAA7lB,QAAAlB,EAAAgnB,wBAAAhd,MAAAe,EAAA/K,EAAAC,EAAAQ,GAAAkT,GAAA3T,EAAA2lB,GAAA,WAAA,MAAA5a,GAAA/K,EAAAC,EAAAQ,MAAAuD,IAAA,SAAAhE,EAAAU,EAAAD,GAAA,GAAAiC,GAAAwB,EAAAzD,GAAAkJ,GAAA3J,GAAAmE,EAAA1D,GAAAoK,EAAA7K,EAAAC,EAAAQ,EAAA,eAAAU,GAAAmD,IAAAtE,EAAA,aAAA,EAAAkE,GAAAA,EAAA,OAAAC,KAAAzB,EAAAgC,GAAAC,KAAAjE,KAAA,QAAAgC,EAAA,IAAA,QAAA1C,EAAA4E,MAAA3E,GAAAS,EAAAA,EAAAS,GAAAmD,IAAAtE,EAAAC,IAAAyK,EAAA1K,EAAAU,EAAAyD,OAAAhD,GAAAqM,SAAA2X,WAAAhb,EAAAhE,GAAAqf,mBAAA,SAAAxlB,EAAAC,GAAA,GAAAA,EAAA,OAAAgL,WAAAvB,EAAA1J,EAAA,gBAAAA,EAAAgnB,wBAAAC,KAAAtT,GAAA3T,GAAAmlB,WAAA,GAAA,WAAA,MAAAnlB,GAAAgnB,wBAAAC,QAAA,OAAA9lB,GAAAiB,MAAA8kB,OAAA,GAAAC,QAAA,GAAAC,OAAA,SAAA,SAAApnB,EAAAC,GAAAkB,GAAAqM,SAAAxN,EAAAC,IAAAwN,OAAA,SAAA/M,GAAA,IAAA,GAAAD,GAAA,EAAAiC,KAAAwB,EAAA,gBAAAxD,GAAAA,EAAA+P,MAAA,MAAA/P,GAAAD,EAAA,EAAAA,IAAAiC,EAAA1C,EAAA8K,GAAArK,GAAAR,GAAAiE,EAAAzD,IAAAyD,EAAAzD,EAAA,IAAAyD,EAAA,EAAA,OAAAxB,KAAAqH,GAAA/H,KAAAhC,KAAAmB,GAAAqM,SAAAxN,EAAAC,GAAA+D,IAAA0G,KAAAvJ,GAAA+P,GAAA3I,QAAAjE,IAAA,SAAAtE,EAAAC,GAAA,MAAAmV,IAAA7U,KAAA,SAAAP,EAAAC,EAAAS,GAAA,GAAAD,GAAAiC,EAAAwB,KAAAC,EAAA,CAAA,IAAAmJ,MAAAC,QAAAtN,GAAA,CAAA,IAAAQ,EAAAkJ,GAAA3J,GAAA0C,EAAAzC,EAAAiB,OAAAiD,EAAAzB,EAAAyB,IAAAD,EAAAjE,EAAAkE,IAAAhD,GAAAmD,IAAAtE,EAAAC,EAAAkE,IAAA,EAAA1D,EAAA,OAAAyD,GAAA,MAAA,UAAAxD,EAAAS,GAAAyD,MAAA5E,EAAAC,EAAAS,GAAAS,GAAAmD,IAAAtE,EAAAC,IAAAD,EAAAC,EAAAwH,UAAAvG,OAAA,MAAAC,GAAAuN,MAAAxD,EAAAA,EAAAC,WAAAoG,YAAArG,EAAAE,KAAA,SAAApL,EAAAC,EAAAS,EAAAD,EAAAiC,EAAAwB,GAAA3D,KAAAqN,KAAA5N,EAAAO,KAAA8mB,KAAA3mB,EAAAH,KAAA+N,OAAA5L,GAAAvB,GAAAmN,OAAA/H,SAAAhG,KAAA+mB,QAAArnB,EAAAM,KAAAuE,MAAAvE,KAAAwL,IAAAxL,KAAA8D,MAAA9D,KAAAwE,IAAAtE,EAAAF,KAAAsE,KAAAX,IAAA/C,GAAAqD,UAAA9D,GAAA,GAAA,OAAA2D,IAAA,WAAA,GAAArE,GAAAkL,EAAAqc,UAAAhnB,KAAA8mB,KAAA,OAAArnB,IAAAA,EAAAuF,IAAAvF,EAAAuF,IAAAhF,MAAA2K,EAAAqc,UAAAhhB,SAAAhB,IAAAhF,OAAAyN,IAAA,SAAAhO,GAAA,GAAAC,GAAAS,EAAAwK,EAAAqc,UAAAhnB,KAAA8mB,KAAA,OAAA9mB,MAAA+mB,QAAAxZ,SAAAvN,KAAAinB,IAAAvnB,EAAAkB,GAAAmN,OAAA/N,KAAA+N,QAAAtO,EAAAO,KAAA+mB,QAAAxZ,SAAA9N,EAAA,EAAA,EAAAO,KAAA+mB,QAAAxZ,UAAAvN,KAAAinB,IAAAvnB,EAAAD,EAAAO,KAAAwL,KAAAxL,KAAAwE,IAAAxE,KAAAuE,OAAA7E,EAAAM,KAAAuE,MAAAvE,KAAA+mB,QAAAG,MAAAlnB,KAAA+mB,QAAAG,KAAA7lB,KAAArB,KAAAqN,KAAArN,KAAAwL,IAAAxL,MAAAG,GAAAA,EAAAsD,IAAAtD,EAAAsD,IAAAzD,MAAA2K,EAAAqc,UAAAhhB,SAAAvC,IAAAzD,MAAAA,OAAA2K,EAAAC,UAAAC,KAAAD,UAAAD,EAAAC,UAAAD,EAAAqc,WAAAhhB,UAAAhB,IAAA,SAAAvF,GAAA,GAAAC,EAAA,OAAA,KAAAD,EAAA4N,KAAA/L,UAAA,MAAA7B,EAAA4N,KAAA5N,EAAAqnB,OAAA,MAAArnB,EAAA4N,KAAAhJ,MAAA5E,EAAAqnB,MAAArnB,EAAA4N,KAAA5N,EAAAqnB,OAAApnB,EAAAkB,GAAAmD,IAAAtE,EAAA4N,KAAA5N,EAAAqnB,KAAA,IAAApnB,GAAA,SAAAA,EAAAA,EAAA,IAAA+D,IAAA,SAAAhE,GAAAmB,GAAAuK,GAAA+b,KAAAznB,EAAAqnB,MAAAlmB,GAAAuK,GAAA+b,KAAAznB,EAAAqnB,MAAArnB,GAAA,IAAAA,EAAA4N,KAAA/L,UAAA,MAAA7B,EAAA4N,KAAAhJ,MAAAzD,GAAAsJ,SAAAzK,EAAAqnB,SAAAlmB,GAAAqM,SAAAxN,EAAAqnB,MAAArnB,EAAA4N,KAAA5N,EAAAqnB,MAAArnB,EAAA+L,IAAA5K,GAAAyD,MAAA5E,EAAA4N,KAAA5N,EAAAqnB,KAAArnB,EAAA+L,IAAA/L,EAAA6E,SAAAqG,EAAAqc,UAAAG,UAAAxc,EAAAqc,UAAAI,YAAA3jB,IAAA,SAAAhE,GAAAA,EAAA4N,KAAA/L,UAAA7B,EAAA4N,KAAA7M,aAAAf,EAAA4N,KAAA5N,EAAAqnB,MAAArnB,EAAA+L,OAAA5K,GAAAmN,QAAAsZ,OAAA,SAAA5nB,GAAA,MAAAA,IAAA6nB,MAAA,SAAA7nB,GAAA,MAAA,GAAA2K,KAAAmd,IAAA9nB,EAAA2K,KAAAod,IAAA,GAAAxhB,SAAA,SAAApF,GAAAuK,GAAAR,EAAAC,UAAAC,KAAAjK,GAAAuK,GAAA+b,OAAA,IAAA3b,IAAAR,GAAAwB,GAAA,yBAAAkb,GAAA,aAAA7mB,IAAA8mB,UAAA9mB,GAAAoH,OAAA6D,GAAAC,UAAA6b,KAAA,SAAAloB,EAAAC,GAAA,GAAAS,GAAAH,KAAAkO,YAAAzO,EAAAC,EAAA,OAAAgE,GAAAvD,EAAAkN,KAAA5N,EAAA0E,GAAAC,KAAA1E,GAAAS,GAAAA,KAAAynB,QAAA,SAAAnoB,EAAAC,GAAAkB,GAAAO,WAAA1B,IAAAC,EAAAD,EAAAA,GAAA,MAAAA,EAAAA,EAAAqC,MAAAC,GAAA,KAAA,GAAA5B,GAAAD,EAAA,EAAAiC,EAAA1C,EAAAkB,OAAAT,EAAAiC,EAAAjC,IAAAC,EAAAV,EAAAS,GAAA2L,EAAAC,SAAA3L,GAAA0L,EAAAC,SAAA3L,OAAA0L,EAAAC,SAAA3L,GAAA8O,QAAAvP,IAAAyN,YAAAnB,GAAA6b,UAAA,SAAApoB,EAAAC,GAAAA,EAAAmM,EAAAsB,WAAA8B,QAAAxP,GAAAoM,EAAAsB,WAAA5G,KAAA9G,MAAAmB,GAAAknB,MAAA,SAAAroB,EAAAC,EAAAS,GAAA,GAAAD,GAAAT,GAAA,gBAAAA,GAAAmB,GAAAoH,UAAAvI,IAAA+O,SAAArO,IAAAA,GAAAT,GAAAkB,GAAAO,WAAA1B,IAAAA,EAAA8N,SAAA9N,EAAAsO,OAAA5N,GAAAT,GAAAA,IAAAkB,GAAAO,WAAAzB,IAAAA,EAAA,OAAAkB,IAAAuK,GAAAlE,IAAA/G,EAAAqN,SAAA,EAAA,gBAAArN,GAAAqN,WAAArN,EAAAqN,WAAA3M,IAAAuK,GAAA4c,OAAA7nB,EAAAqN,SAAA3M,GAAAuK,GAAA4c,OAAA7nB,EAAAqN,UAAArN,EAAAqN,SAAA3M,GAAAuK,GAAA4c,OAAA/hB,UAAA,MAAA9F,EAAA+L,OAAA/L,EAAA+L,SAAA,IAAA/L,EAAA+L,MAAA,MAAA/L,EAAA8nB,IAAA9nB,EAAAsO,SAAAtO,EAAAsO,SAAA,WAAA5N,GAAAO,WAAAjB,EAAA8nB,MAAA9nB,EAAA8nB,IAAA3mB,KAAArB,MAAAE,EAAA+L,OAAArL,GAAA8c,QAAA1d,KAAAE,EAAA+L,QAAA/L,GAAAU,GAAA+P,GAAA3I,QAAAigB,OAAA,SAAAxoB,EAAAC,EAAAS,EAAAD,GAAA,MAAAF,MAAA0B,OAAAuD,IAAAlB,IAAA,UAAA,GAAA8Z,OAAArZ,MAAA0jB,SAAAvc,QAAAjM,GAAAD,EAAAU,EAAAD,IAAAgoB,QAAA,SAAAzoB,EAAAC,EAAAS,EAAAD,GAAA,GAAAiC,GAAAvB,GAAA4L,cAAA/M,GAAAkE,EAAA/C,GAAAknB,MAAApoB,EAAAS,EAAAD,GAAA0D,EAAA,WAAA,GAAAlE,GAAAmM,EAAA7L,KAAAY,GAAAoH,UAAAvI,GAAAkE,IAAAxB,GAAA4C,GAAAC,IAAAhF,KAAA,YAAAN,EAAA0O,MAAA,GAAA,OAAAxK,GAAAukB,OAAAvkB,EAAAzB,GAAAwB,EAAAsI,SAAA,EAAAjM,KAAA6B,KAAA+B,GAAA5D,KAAAiM,MAAAtI,EAAAsI,MAAArI,IAAAwK,KAAA,SAAA3O,EAAAC,EAAAS,GAAA,GAAAD,GAAA,SAAAT,GAAA,GAAAC,GAAAD,EAAA2O,WAAA3O,GAAA2O,KAAA1O,EAAAS,GAAA,OAAA,gBAAAV,KAAAU,EAAAT,EAAAA,EAAAD,EAAAA,EAAA,QAAAC,GAAAD,KAAA,GAAAO,KAAAiM,MAAAxM,GAAA,SAAAO,KAAA6B,KAAA,WAAA,GAAAnC,IAAA,EAAAyC,EAAA,MAAA1C,GAAAA,EAAA,aAAAkE,EAAA/C,GAAAwnB,OAAAxkB,EAAAmB,GAAAC,IAAAhF,KAAA,IAAAmC,EAAAyB,EAAAzB,IAAAyB,EAAAzB,GAAAiM,MAAAlO,EAAA0D,EAAAzB,QAAA,KAAAA,IAAAyB,GAAAA,EAAAzB,IAAAyB,EAAAzB,GAAAiM,MAAAqZ,GAAAhmB,KAAAU,IAAAjC,EAAA0D,EAAAzB;AAAA,IAAAA,EAAAwB,EAAAhD,OAAAwB,KAAAwB,EAAAxB,GAAAkL,OAAArN,MAAA,MAAAP,GAAAkE,EAAAxB,GAAA8J,QAAAxM,IAAAkE,EAAAxB,GAAAuM,KAAAN,KAAAjO,GAAAT,GAAA,EAAAiE,EAAA4N,OAAApP,EAAA,KAAAzC,GAAAS,GAAAS,GAAA8c,QAAA1d,KAAAP,MAAA0oB,OAAA,SAAA1oB,GAAA,MAAAA,MAAA,IAAAA,EAAAA,GAAA,MAAAO,KAAA6B,KAAA,WAAA,GAAAnC,GAAAS,EAAA4E,GAAAC,IAAAhF,MAAAE,EAAAC,EAAAV,EAAA,SAAA0C,EAAAhC,EAAAV,EAAA,cAAAkE,EAAA/C,GAAAwnB,OAAAxkB,EAAA1D,EAAAA,EAAAS,OAAA,CAAA,KAAAR,EAAAgoB,QAAA,EAAAvnB,GAAAqL,MAAAjM,KAAAP,MAAA0C,GAAAA,EAAAiM,MAAAjM,EAAAiM,KAAA/M,KAAArB,MAAA,GAAAN,EAAAiE,EAAAhD,OAAAjB,KAAAiE,EAAAjE,GAAA2N,OAAArN,MAAA2D,EAAAjE,GAAAuM,QAAAxM,IAAAkE,EAAAjE,GAAAgP,KAAAN,MAAA,GAAAzK,EAAA4N,OAAA7R,EAAA,GAAA,KAAAA,EAAA,EAAAA,EAAAkE,EAAAlE,IAAAQ,EAAAR,IAAAQ,EAAAR,GAAAyoB,QAAAjoB,EAAAR,GAAAyoB,OAAA9mB,KAAArB,YAAAG,GAAAgoB,YAAAvnB,GAAAiB,MAAA,SAAA,OAAA,QAAA,SAAApC,EAAAC,GAAA,GAAAS,GAAAS,GAAA+P,GAAAjR,EAAAkB,IAAA+P,GAAAjR,GAAA,SAAAD,EAAAS,EAAAiC,GAAA,MAAA,OAAA1C,GAAA,iBAAAA,GAAAU,EAAAqC,MAAAxC,KAAAkH,WAAAlH,KAAAkoB,QAAAzc,EAAA/L,GAAA,GAAAD,EAAAS,EAAAiC,MAAAvB,GAAAiB,MAAAwmB,UAAA5c,EAAA,QAAA6c,QAAA7c,EAAA,QAAA8c,YAAA9c,EAAA,UAAA+c,QAAA7c,QAAA,QAAA8c,SAAA9c,QAAA,QAAA+c,YAAA/c,QAAA,WAAA,SAAAlM,EAAAC,GAAAkB,GAAA+P,GAAAlR,GAAA,SAAAA,EAAAU,EAAAD,GAAA,MAAAF,MAAAkoB,QAAAxoB,EAAAD,EAAAU,EAAAD,MAAAU,GAAAwnB,UAAAxnB,GAAAuK,GAAAE,KAAA,WAAA,GAAA5L,GAAAC,EAAA,EAAAS,EAAAS,GAAAwnB,MAAA,KAAA7c,GAAA3K,GAAA4K,MAAA9L,EAAAS,EAAAQ,OAAAjB,IAAAD,EAAAU,EAAAT,GAAAD,KAAAU,EAAAT,KAAAD,GAAAU,EAAAoR,OAAA7R,IAAA,EAAAS,GAAAQ,QAAAC,GAAAuK,GAAAiD,OAAA7C,GAAA,QAAA3K,GAAAuK,GAAAsD,MAAA,SAAAhP,GAAAmB,GAAAwnB,OAAA7hB,KAAA9G,GAAAmB,GAAAuK,GAAA5G,SAAA3D,GAAAuK,GAAAC,SAAA,GAAAxK,GAAAuK,GAAA5G,MAAA,WAAAwG,KAAAA,IAAA,EAAAD,MAAAlK,GAAAuK,GAAAiD,KAAA,WAAArD,GAAA,MAAAnK,GAAAuK,GAAA4c,QAAAY,KAAA,IAAAC,KAAA,IAAA5iB,SAAA,KAAApF,GAAA+P,GAAAkY,MAAA,SAAAnpB,EAAAS,GAAA,MAAAT,GAAAkB,GAAAuK,GAAAvK,GAAAuK,GAAA4c,OAAAroB,IAAAA,EAAAA,EAAAS,EAAAA,GAAA,KAAAH,KAAAiM,MAAA9L,EAAA,SAAAA,EAAAD,GAAA,GAAAiC,GAAA1C,EAAAyL,WAAA/K,EAAAT,EAAAQ,GAAAkO,KAAA,WAAA3O,EAAAqpB,aAAA3mB,OAAA,WAAA,GAAA1C,GAAAS,GAAAE,cAAA,SAAAV,EAAAQ,GAAAE,cAAA,UAAAD,EAAAT,EAAAa,YAAAL,GAAAE,cAAA,UAAAX,GAAAoB,KAAA,WAAA+E,GAAAmjB,QAAA,KAAAtpB,EAAA6T,MAAA1N,GAAAojB,YAAA7oB,EAAAyY,SAAAnZ,EAAAS,GAAAE,cAAA,SAAAX,EAAA6T,MAAA,IAAA7T,EAAAoB,KAAA,QAAA+E,GAAAqjB,WAAA,MAAAxpB,EAAA6T,QAAA,IAAA4V,IAAAC,GAAAvoB,GAAAuZ,KAAApH,UAAAnS,IAAA+P,GAAA3I,QAAA+O,KAAA,SAAAtX,EAAAC,GAAA,MAAAmV,IAAA7U,KAAAY,GAAAmW,KAAAtX,EAAAC,EAAAwH,UAAAvG,OAAA,IAAAyoB,WAAA,SAAA3pB,GAAA,MAAAO,MAAA6B,KAAA,WAAAjB,GAAAwoB,WAAAppB,KAAAP,QAAAmB,GAAAoH,QAAA+O,KAAA,SAAAtX,EAAAC,EAAAS,GAAA,GAAAD,GAAAiC,EAAAwB,EAAAlE,EAAA6B,QAAA,IAAA,IAAAqC,GAAA,IAAAA,GAAA,IAAAA,EAAA,MAAA,mBAAAlE,GAAA8D,aAAA3C,GAAAkmB,KAAArnB,EAAAC,EAAAS,IAAA,IAAAwD,GAAA/C,GAAAyZ,SAAA5a,KAAA0C,EAAAvB,GAAAyoB,UAAA3pB,EAAAuB,iBAAAL,GAAAuZ,KAAArY,MAAAsT,KAAA3T,KAAA/B,GAAAwpB,GAAA,SAAA,SAAA/oB,EAAA,OAAAA,MAAAS,IAAAwoB,WAAA3pB,EAAAC,GAAAyC,GAAA,OAAAA,IAAA,UAAAjC,EAAAiC,EAAAsB,IAAAhE,EAAAU,EAAAT,IAAAQ,GAAAT,EAAAmT,aAAAlT,EAAAS,EAAA,IAAAA,GAAAgC,GAAA,OAAAA,IAAA,QAAAjC,EAAAiC,EAAA6C,IAAAvF,EAAAC,IAAAQ,GAAAA,EAAAU,GAAAoT,KAAA+C,KAAAtX,EAAAC,GACA,MAAAQ,EAAA,OAAAA,KAAAmpB,WAAAxoB,MAAA4C,IAAA,SAAAhE,EAAAC,GAAA,IAAAkG,GAAAqjB,YAAA,UAAAvpB,GAAAqB,EAAAtB,EAAA,SAAA,CAAA,GAAAU,GAAAV,EAAA6T,KAAA,OAAA7T,GAAAmT,aAAA,OAAAlT,GAAAS,IAAAV,EAAA6T,MAAAnT,GAAAT,MAAA0pB,WAAA,SAAA3pB,EAAAC,GAAA,GAAAS,GAAAD,EAAA,EAAAiC,EAAAzC,GAAAA,EAAAoC,MAAAC,GAAA,IAAAI,GAAA,IAAA1C,EAAA6B,SAAA,KAAAnB,EAAAgC,EAAAjC,MAAAT,EAAAiI,gBAAAvH,MAAA+oB,IAAAzlB,IAAA,SAAAhE,EAAAC,EAAAS,GAAA,MAAAT,MAAA,EAAAkB,GAAAwoB,WAAA3pB,EAAAU,GAAAV,EAAAmT,aAAAzS,EAAAA,GAAAA,IAAAS,GAAAiB,KAAAjB,GAAAuZ,KAAArY,MAAAsT,KAAAwI,OAAA9b,MAAA,QAAA,SAAArC,EAAAC,GAAA,GAAAS,GAAAgpB,GAAAzpB,IAAAkB,GAAAoT,KAAA+C,IAAAoS,IAAAzpB,GAAA,SAAAD,EAAAC,EAAAQ,GAAA,GAAAiC,GAAAwB,EAAAC,EAAAlE,EAAAuB,aAAA,OAAAf,KAAAyD,EAAAwlB,GAAAvlB,GAAAulB,GAAAvlB,GAAAzB,EAAAA,EAAA,MAAAhC,EAAAV,EAAAC,EAAAQ,GAAA0D,EAAA,KAAAulB,GAAAvlB,GAAAD,GAAAxB,IAAA,IAAAmnB,IAAA,sCAAAC,GAAA,eAAA3oB,IAAA+P,GAAA3I,QAAA8e,KAAA,SAAArnB,EAAAC,GAAA,MAAAmV,IAAA7U,KAAAY,GAAAkmB,KAAArnB,EAAAC,EAAAwH,UAAAvG,OAAA,IAAA6oB,WAAA,SAAA/pB,GAAA,MAAAO,MAAA6B,KAAA,iBAAA7B,MAAAY,GAAA6oB,QAAAhqB,IAAAA,QAAAmB,GAAAoH,QAAA8e,KAAA,SAAArnB,EAAAC,EAAAS,GAAA,GAAAD,GAAAiC,EAAAwB,EAAAlE,EAAA6B,QAAA,IAAA,IAAAqC,GAAA,IAAAA,GAAA,IAAAA,EAAA,MAAA,KAAAA,GAAA/C,GAAAyZ,SAAA5a,KAAAC,EAAAkB,GAAA6oB,QAAA/pB,IAAAA,EAAAyC,EAAAvB,GAAAomB,UAAAtnB,IAAA,SAAAS,EAAAgC,GAAA,OAAAA,IAAA,UAAAjC,EAAAiC,EAAAsB,IAAAhE,EAAAU,EAAAT,IAAAQ,EAAAT,EAAAC,GAAAS,EAAAgC,GAAA,OAAAA,IAAA,QAAAjC,EAAAiC,EAAA6C,IAAAvF,EAAAC,IAAAQ,EAAAT,EAAAC,IAAAsnB,WAAAtO,UAAA1T,IAAA,SAAAvF,GAAA,GAAAC,GAAAkB,GAAAoT,KAAA+C,KAAAtX,EAAA,WAAA,OAAAC,GAAAgqB,SAAAhqB,EAAA,IAAA4pB,GAAA7nB,KAAAhC,EAAAuB,WAAAuoB,GAAA9nB,KAAAhC,EAAAuB,WAAAvB,EAAAgZ,KAAA,GAAA,KAAAgR,SAAAE,IAAA,UAAAC,MAAA,eAAAhkB,GAAAojB,cAAApoB,GAAAomB,UAAApO,UAAA5T,IAAA,SAAAvF,GAAA,GAAAC,GAAAD,EAAAe,UAAA,OAAAd,IAAAA,EAAAc,YAAAd,EAAAc,WAAAqY,cAAA,MAAApV,IAAA,SAAAhE,GAAA,GAAAC,GAAAD,EAAAe,UAAAd,KAAAA,EAAAmZ,cAAAnZ,EAAAc,YAAAd,EAAAc,WAAAqY,kBAAAjY,GAAAiB,MAAA,WAAA,WAAA,YAAA,cAAA,cAAA,UAAA,UAAA,SAAA,cAAA,mBAAA,WAAAjB,GAAA6oB,QAAAzpB,KAAAiB,eAAAjB,OAAAY,GAAA+P,GAAA3I,QAAA6hB,SAAA,SAAApqB,GAAA,GAAAC,GAAAS,EAAAD,EAAAiC,EAAAwB,EAAAC,EAAAC,EAAAtC,EAAA,CAAA,IAAAX,GAAAO,WAAA1B,GAAA,MAAAO,MAAA6B,KAAA,SAAAnC,GAAAkB,GAAAZ,MAAA6pB,SAAApqB,EAAA4B,KAAArB,KAAAN,EAAAmP,EAAA7O,SAAA,IAAA,gBAAAP,IAAAA,EAAA,IAAAC,EAAAD,EAAAqC,MAAAC,QAAA5B,EAAAH,KAAAuB,MAAA,GAAAY,EAAA0M,EAAA1O,GAAAD,EAAA,IAAAC,EAAAmB,UAAA,IAAAqN,EAAAxM,GAAA,IAAA,CAAA,IAAAyB,EAAA,EAAAD,EAAAjE,EAAAkE,MAAA1D,EAAAsQ,QAAA,IAAA7M,EAAA,KAAA,IAAAzD,GAAAyD,EAAA,IAAAE,GAAA8K,EAAAzO,GAAAiC,IAAA0B,GAAA1D,EAAAyS,aAAA,QAAA/O,GAAA,MAAA7D,OAAA8pB,YAAA,SAAArqB,GAAA,GAAAC,GAAAS,EAAAD,EAAAiC,EAAAwB,EAAAC,EAAAC,EAAAtC,EAAA,CAAA,IAAAX,GAAAO,WAAA1B,GAAA,MAAAO,MAAA6B,KAAA,SAAAnC,GAAAkB,GAAAZ,MAAA8pB,YAAArqB,EAAA4B,KAAArB,KAAAN,EAAAmP,EAAA7O,SAAA,KAAAkH,UAAAvG,OAAA,MAAAX,MAAA+W,KAAA,QAAA,GAAA,IAAA,gBAAAtX,IAAAA,EAAA,IAAAC,EAAAD,EAAAqC,MAAAC,QAAA5B,EAAAH,KAAAuB,MAAA,GAAAY,EAAA0M,EAAA1O,GAAAD,EAAA,IAAAC,EAAAmB,UAAA,IAAAqN,EAAAxM,GAAA,IAAA,CAAA,IAAAyB,EAAA,EAAAD,EAAAjE,EAAAkE,MAAA,KAAA1D,EAAAsQ,QAAA,IAAA7M,EAAA,MAAA,GAAAzD,EAAAA,EAAAmD,QAAA,IAAAM,EAAA,IAAA,IAAAE,GAAA8K,EAAAzO,GAAAiC,IAAA0B,GAAA1D,EAAAyS,aAAA,QAAA/O,GAAA,MAAA7D,OAAA+pB,YAAA,SAAAtqB,EAAAC,GAAA,GAAAS,SAAAV,EAAA,OAAA,iBAAAC,IAAA,WAAAS,EAAAT,EAAAM,KAAA6pB,SAAApqB,GAAAO,KAAA8pB,YAAArqB,GAAAmB,GAAAO,WAAA1B,GAAAO,KAAA6B,KAAA,SAAA1B,GAAAS,GAAAZ,MAAA+pB,YAAAtqB,EAAA4B,KAAArB,KAAAG,EAAA0O,EAAA7O,MAAAN,GAAAA,KAAAM,KAAA6B,KAAA,WAAA,GAAAnC,GAAAQ,EAAAiC,EAAAwB,CAAA,IAAA,WAAAxD,EAAA,IAAAD,EAAA,EAAAiC,EAAAvB,GAAAZ,MAAA2D,EAAAlE,EAAAqC,MAAAC,QAAArC,EAAAiE,EAAAzD,MAAAiC,EAAA6nB,SAAAtqB,GAAAyC,EAAA2nB,YAAApqB,GAAAyC,EAAA0nB,SAAAnqB,OAAA,UAAAD,GAAA,YAAAU,IAAAT,EAAAmP,EAAA7O,MAAAN,GAAAqF,GAAAtB,IAAAzD,KAAA,gBAAAN,GAAAM,KAAA4S,cAAA5S,KAAA4S,aAAA,QAAAlT,GAAAD,KAAA,EAAA,GAAAsF,GAAAC,IAAAhF,KAAA,kBAAA,QAAAgqB,SAAA,SAAAvqB,GAAA,GAAAC,GAAAS,EAAAD,EAAA,CAAA,KAAAR,EAAA,IAAAD,EAAA,IAAAU,EAAAH,KAAAE,MAAA,GAAA,IAAAC,EAAAmB,WAAA,IAAAqN,EAAAE,EAAA1O,IAAA,KAAAqQ,QAAA9Q,IAAA,EAAA,OAAA,CAAA,QAAA,IAAA,IAAAuqB,IAAA,KAAArpB,IAAA+P,GAAA3I,QAAAkiB,IAAA,SAAAzqB,GAAA,GAAAC,GAAAS,EAAAD,EAAAiC,EAAAnC,KAAA,EAAA,OAAAkH,WAAAvG,QAAAT,EAAAU,GAAAO,WAAA1B,GAAAO,KAAA6B,KAAA,SAAA1B,GAAA,GAAAgC,EAAA,KAAAnC,KAAAsB,WAAAa,EAAAjC,EAAAT,EAAA4B,KAAArB,KAAAG,EAAAS,GAAAZ,MAAAkqB,OAAAzqB,EAAA,MAAA0C,EAAAA,EAAA,GAAA,gBAAAA,GAAAA,GAAA,GAAA4K,MAAAC,QAAA7K,KAAAA,EAAAvB,GAAAgI,IAAAzG,EAAA,SAAA1C,GAAA,MAAA,OAAAA,EAAA,GAAAA,EAAA,MAAAC,EAAAkB,GAAAupB,SAAAnqB,KAAAa,OAAAD,GAAAupB,SAAAnqB,KAAAgB,SAAAC,eAAAvB,GAAA,OAAAA,IAAA,SAAAA,EAAA+D,IAAAzD,KAAAmC,EAAA,WAAAnC,KAAAsT,MAAAnR,OAAAA,GAAAzC,EAAAkB,GAAAupB,SAAAhoB,EAAAtB,OAAAD,GAAAupB,SAAAhoB,EAAAnB,SAAAC,eAAAvB,GAAA,OAAAA,IAAA,UAAAS,EAAAT,EAAAsF,IAAA7C,EAAA,UAAAhC,GAAAA,EAAAgC,EAAAmR,MAAA,gBAAAnT,GAAAA,EAAAkD,QAAA4mB,GAAA,IAAA,MAAA9pB,EAAA,GAAAA,IAAA,UAAAS,GAAAoH,QAAAmiB,UAAAnM,QAAAhZ,IAAA,SAAAvF,GAAA,GAAAC,GAAAkB,GAAAoT,KAAA+C,KAAAtX,EAAA,QAAA,OAAA,OAAAC,EAAAA,EAAAiP,EAAA/N,GAAAP,KAAAZ,MAAAya,QAAAlV,IAAA,SAAAvF,GAAA,GAAAC,GAAAS,EAAAD,EAAAiC,EAAA1C,EAAAsnB,QAAApjB,EAAAlE,EAAAoZ,cAAAjV,EAAA,eAAAnE,EAAAoB,KAAAgD,EAAAD,EAAA,QAAArC,EAAAqC,EAAAD,EAAA,EAAAxB,EAAAxB,MAAA,KAAAT,EAAAyD,EAAA,EAAApC,EAAAqC,EAAAD,EAAA,EAAAzD,EAAAqB,EAAArB,IAAA,GAAAC,EAAAgC,EAAAjC,IAAAC,EAAAyY,UAAA1Y,IAAAyD,KAAAxD,EAAA+S,YAAA/S,EAAAK,WAAA0S,WAAAnS,EAAAZ,EAAAK,WAAA,aAAA,CAAA,GAAAd,EAAAkB,GAAAT,GAAA+pB,MAAAtmB,EAAA,MAAAlE,EAAAmE,GAAA0C,KAAA7G,GAAA,MAAAmE,IAAAJ,IAAA,SAAAhE,EAAAC,GAAA,IAAA,GAAAS,GAAAD,EAAAiC,EAAA1C,EAAAsnB,QAAApjB,EAAA/C,GAAAoR,UAAAtS,GAAAkE,EAAAzB,EAAAxB,OAAAiD,KAAA1D,EAAAiC,EAAAyB,IAAA1D,EAAA0Y,SAAAhY,GAAA6F,QAAA7F,GAAAupB,SAAAnM,OAAAhZ,IAAA9E,GAAAyD,IAAA,KAAAxD,GAAA,EAAA,OAAAA,KAAAV,EAAAoZ,eAAA,GAAAlV,OAAA/C,GAAAiB,MAAA,QAAA,YAAA,WAAAjB,GAAAupB,SAAAnqB,OAAAyD,IAAA,SAAAhE,EAAAC,GAAA,GAAAqN,MAAAC,QAAAtN,GAAA,MAAAD,GAAA0I,QAAAvH,GAAA6F,QAAA7F,GAAAnB,GAAAyqB,MAAAxqB,IAAA,IAAAkG,GAAAmjB,UAAAnoB,GAAAupB,SAAAnqB,MAAAgF,IAAA,SAAAvF,GAAA,MAAA,QAAAA,EAAA8D,aAAA,SAAA,KAAA9D,EAAA6T,SAAA,IAAA8W,IAAA,iCAAAxpB,IAAAoH,OAAApH,GAAAwG,OAAA0Z,QAAA,SAAAphB,EAAAS,EAAAgC,EAAAwB,GAAA,GAAAC,GAAAC,EAAAtC,EAAAyC,EAAAE,EAAAwB,EAAAC,EAAAC,GAAAzD,GAAAjC,IAAAD,EAAAuF,GAAAnE,KAAA3B,EAAA,QAAAA,EAAAmB,KAAAnB,EAAA4I,EAAA9C,GAAAnE,KAAA3B,EAAA,aAAAA,EAAA2f,UAAAnP,MAAA,OAAA,IAAArM,EAAAtC,EAAAY,EAAAA,GAAAjC,GAAA,IAAAiC,EAAAb,UAAA,IAAAa,EAAAb,WAAA8oB,GAAA3oB,KAAAxB,EAAAW,GAAAwG,MAAA2X,aAAA9e,EAAAuQ,QAAA,MAAA,IAAAlI,EAAArI,EAAAiQ,MAAA,KAAAjQ,EAAAqI,EAAAoH,QAAApH,EAAAgJ,QAAApN,EAAAjE,EAAAuQ,QAAA,KAAA,GAAA,KAAAvQ,EAAAP,EAAAA,EAAAkB,GAAAkC,SAAApD,EAAA,GAAAkB,IAAA4f,MAAAvgB,EAAA,gBAAAP,IAAAA,GAAAA,EAAA2qB,UAAA1mB,EAAA,EAAA,EAAAjE,EAAA2f,UAAA/W,EAAAsG,KAAA,KAAAlP,EAAAugB,WAAAvgB,EAAA2f,UAAA,GAAA3K,QAAA,UAAApM,EAAAsG,KAAA,iBAAA,WAAA,KAAAlP,EAAAygB,OAAA,OAAAzgB,EAAAyY,SAAAzY,EAAAyY,OAAAhW,GAAAhC,EAAA,MAAAA,GAAAT,GAAAkB,GAAAoR,UAAA7R,GAAAT,IAAAiG,EAAA/E,GAAAwG,MAAA6X,QAAAhf,OAAA0D,IAAAgC,EAAAmb,SAAAnb,EAAAmb,QAAAte,MAAAL,EAAAhC,MAAA,GAAA,CAAA,IAAAwD,IAAAgC,EAAAkb,WAAAjgB,GAAAE,SAAAqB,GAAA,CAAA,IAAA6B,EAAA2B,EAAAuZ,cAAAjf,EAAAmqB,GAAA3oB,KAAAuC,EAAA/D,KAAA4D,EAAAA,EAAArD,YAAAqD,EAAAA,EAAAA,EAAArD,WAAAoF,EAAAW,KAAA1C,GAAAtC,EAAAsC,CAAAtC,MAAAY,EAAAuC,eAAAxE,KAAA0F,EAAAW,KAAAhF,EAAAsU,aAAAtU,EAAA+oB,cAAA7qB,GAAA,IAAAmE,EAAA,GAAAC,EAAA+B,EAAAhC,QAAAlE,EAAAogB,wBAAApgB,EAAAmB,KAAA+C,EAAA,EAAAI,EAAA2B,EAAAwZ,UAAAlf,EAAAyF,GAAAX,GAAAC,IAAAnB,EAAA,eAAAnE,EAAAmB,OAAAkE,GAAAC,IAAAnB,EAAA,UAAA6B,GAAAA,EAAAlD,MAAAqB,EAAA1D,GAAAuF,EAAAxB,GAAAL,EAAAK,GAAAwB,GAAAA,EAAAlD,OAAAsS,GAAAjR,KAAAnE,EAAAygB,OAAAza,EAAAlD,MAAAqB,EAAA1D,GAAAT,EAAAygB,UAAA,GAAAzgB,EAAA0gB,iBAAA,OAAA1gB,GAAAmB,KAAAZ,EAAA0D,GAAAjE,EAAAyhB,sBAAAxb,EAAAK,UAAAL,EAAAK,SAAAxD,MAAAoD,EAAA0O,MAAAnU,MAAA,IAAA2U,GAAA3S,IAAA+B,GAAAtD,GAAAO,WAAAgB,EAAAlC,MAAAW,GAAAE,SAAAqB,KAAAZ,EAAAY,EAAA+B,GAAA3C,IAAAY,EAAA+B,GAAA,MAAAtD,GAAAwG,MAAA2X,UAAA9e,EAAAkC,EAAAlC,KAAAW,GAAAwG,MAAA2X,UAAA,OAAAxd,IAAAY,EAAA+B,GAAA3C,IAAA7B,EAAAygB,SAAAoK,SAAA,SAAA9qB,EAAAC,EAAAS,GAAA,GAAAD,GAAAU,GAAAoH,OAAA,GAAApH,IAAA4f,MAAArgB,GAAAU,KAAApB,EAAA8hB,aAAA,GAAA3gB,IAAAwG,MAAA0Z,QAAA5gB,EAAA,KAAAR,MAAAkB,GAAA+P,GAAA3I,QAAA8Y,QAAA,SAAArhB,EAAAC,GAAA,MAAAM,MAAA6B,KAAA,WAAAjB,GAAAwG,MAAA0Z,QAAArhB,EAAAC,EAAAM,SAAAwqB,eAAA,SAAA/qB,EAAAC,GAAA,GAAAS,GAAAH,KAAA,EAAA,IAAAG,EAAA,MAAAS,IAAAwG,MAAA0Z,QAAArhB,EAAAC,EAAAS,GAAA,MAAAS,GAAAiB,KAAA,wLAAAqO,MAAA,KAAA,SAAAzQ,EAAAC,GAAAkB,GAAA+P,GAAAjR,GAAA,SAAAD,EAAAU,GAAA,MAAA+G,WAAAvG,OAAA,EAAAX,KAAA0jB,GAAAhkB,EAAA,KAAAD,EAAAU,GAAAH,KAAA8gB,QAAAphB,MAAAkB,GAAA+P,GAAA3I,QAAAyiB,MAAA,SAAAhrB,EAAAC,GAAA,MAAAM,MAAAsjB,WAAA7jB,GAAA8jB,WAAA7jB,GAAAD,MAAAmG,GAAA8kB,QAAA,aAAAjrB,GAAAmG,GAAA8kB,SAAA9pB,GAAAiB,MAAA0W,MAAA,UAAAwI,KAAA,YAAA,SAAAthB,EAAAC,GAAA,GAAAS,GAAA,SAAAV,GAAAmB,GAAAwG,MAAAmjB,SAAA7qB,EAAAD,EAAA0Y,OAAAvX,GAAAwG,MAAAsY,IAAAjgB,IAAAmB,IAAAwG,MAAA6X,QAAAvf,IAAA6f,MAAA,WAAA,GAAArf,GAAAF,KAAA0E,eAAA1E,KAAAmC,EAAA4C,GAAA8C,OAAA3H,EAAAR,EAAAyC,IAAAjC,EAAA6V,iBAAAtW,EAAAU,GAAA,GAAA4E,GAAA8C,OAAA3H,EAAAR,GAAAyC,GAAA,GAAA,IAAAqd,SAAA,WAAA,GAAAtf,GAAAF,KAAA0E,eAAA1E,KAAAmC,EAAA4C,GAAA8C,OAAA3H,EAAAR,GAAA,CAAAyC,GAAA4C,GAAA8C,OAAA3H,EAAAR,EAAAyC,IAAAjC,EAAAyC,oBAAAlD,EAAAU,GAAA,GAAA4E,GAAA6H,OAAA1M,EAAAR,OAAA,IAAAirB,IAAAlrB,EAAA2Y,SAAAwS,GAAAhqB,GAAA4K,MAAAqf,GAAA,IAAAjqB,IAAAkqB,SAAA,SAAAprB,GAAA,GAAAS,EAAA,KAAAT,GAAA,gBAAAA,GAAA,MAAA,KAAA,KAAAS,GAAA,GAAAV,GAAAsrB,WAAAC,gBAAAtrB,EAAA,YAAA,MAAAQ,GAAAC,EAAA,OAAA,MAAAA,KAAAA,EAAAgF,qBAAA,eAAAxE,QAAAC,GAAAwP,MAAA,gBAAA1Q,GAAAS,EAAA,IAAA4O,IAAA,QAAAkc,GAAA,SAAAC,GAAA,wCAAAC,GAAA,oCAAAvqB,IAAAwqB,MAAA,SAAA3rB,EAAAC,GAAA,GAAAS,GAAAD,KAAAiC,EAAA,SAAA1C,EAAAC,GAAA,GAAAS,GAAAS,GAAAO,WAAAzB,GAAAA,IAAAA,CAAAQ,GAAAA,EAAAS,QAAA0qB,mBAAA5rB,GAAA,IAAA4rB,mBAAA,MAAAlrB,EAAA,GAAAA,GAAA,IAAA4M,MAAAC,QAAAvN,IAAAA,EAAAsR,SAAAnQ,GAAA4Q,cAAA/R,GAAAmB,GAAAiB,KAAApC,EAAA,WAAA0C,EAAAnC,KAAA6c,KAAA7c,KAAAsT,aAAA,KAAAnT,IAAAV,GAAAqP,EAAA3O,EAAAV,EAAAU,GAAAT,EAAAyC,EAAA,OAAAjC,GAAA0O,KAAA,MAAAhO,GAAA+P,GAAA3I,QAAAsjB,UAAA,WAAA,MAAA1qB,IAAAwqB,MAAAprB,KAAAurB,mBAAAA,eAAA,WAAA,MAAAvrB,MAAA4I,IAAA,WAAA,GAAAnJ,GAAAmB,GAAAkmB,KAAA9mB,KAAA,WAAA,OAAAP,GAAAmB,GAAAoR,UAAAvS,GAAAO,OAAA0B,OAAA,WAAA,GAAAjC,GAAAO,KAAAa,IAAA,OAAAb,MAAA6c,OAAAjc,GAAAZ,MAAAua,GAAA,cAAA4Q,GAAA1pB,KAAAzB,KAAAgB,YAAAkqB,GAAAzpB,KAAAhC,KAAAO,KAAAmI,UAAAD,GAAAzG,KAAAhC,MAAAmJ,IAAA,SAAAnJ,EAAAC,GAAA,GAAAS,GAAAS,GAAAZ,MAAAkqB,KAAA,OAAA,OAAA/pB,EAAA,KAAA4M,MAAAC,QAAA7M,GAAAS,GAAAgI,IAAAzI,EAAA,SAAAV,GAAA,OAAAod,KAAAnd,EAAAmd,KAAAvJ,MAAA7T,EAAA4D,QAAA4nB,GAAA,YAAApO,KAAAnd,EAAAmd,KAAAvJ,MAAAnT,EAAAkD,QAAA4nB,GAAA,WAAAjmB,QAAA,IAAAwmB,IAAA,OAAAC,GAAA,OAAAC,GAAA,gBAAAC,GAAA,6BAAAC,GAAA,4DAAAC,GAAA,iBAAAC,GAAA,QAAAC,MAAA3c,MAAA4c,GAAA,KAAAjgB,OAAA,KAAAkgB,GAAA/rB,GAAAE,cAAA,IAAA6rB,IAAAxT,KAAAkS,GAAAlS,KAAA7X,GAAAoH,QAAAkkB,OAAA,EAAAC,gBAAAC,QAAA9c,cAAA+c,IAAA1B,GAAAlS,KAAA5X,KAAA,MAAAyrB,QAAAV,GAAAnqB,KAAAkpB,GAAA4B,UAAA1N,QAAA,EAAA2N,aAAA,EAAAC,OAAA,EAAAC,YAAA,mDAAAC,SAAAhF,IAAAqE,GAAA3rB,KAAA,aAAAsI,KAAA,YAAAikB,IAAA,4BAAAC,KAAA,qCAAApd,UAAAmd,IAAA,UAAAjkB,KAAA,SAAAkkB,KAAA,YAAA9c,gBAAA6c,IAAA,cAAAvsB,KAAA,eAAAwsB,KAAA,gBAAAhd,YAAAid,SAAAvX,OAAAwX,aAAA,EAAAC,YAAA9pB,KAAAC,MAAA8pB,WAAArsB,GAAAkqB,UAAAvb,aAAA8c,KAAA,EAAAa,SAAA,IAAAC,UAAA,SAAA1tB,EAAAC,GAAA,MAAAA,GAAA2P,EAAAA,EAAA5P,EAAAmB,GAAA0O,cAAA5P,GAAA2P,EAAAzO,GAAA0O,aAAA7P,IAAA2tB,cAAApe,EAAA+c,IAAAsB,cAAAre,EAAAI,IAAAke,KAAA,SAAA5tB,EAAAS,GAAA,QAAAwS,GAAAjT,EAAAS,EAAAD,EAAA2D,GAAA,GAAAG,GAAA0B,EAAAC,EAAAmL,EAAApQ,EAAA2R,EAAAlS,CAAA+D,KAAAA,GAAA,EAAA3C,GAAA9B,EAAAqpB,aAAAvnB,GAAAY,EAAA,OAAAyB,EAAAC,GAAA,GAAAqQ,EAAAgJ,WAAAxd,EAAA,EAAA,EAAA,EAAAsE,EAAAtE,GAAA,KAAAA,EAAA,KAAA,MAAAA,EAAAQ,IAAA4Q,EAAAtB,EAAA5J,EAAAsO,EAAAhU,IAAA4Q,EAAAhB,GAAAlK,EAAAkL,EAAAoD,EAAAlQ,GAAAA,GAAA4B,EAAA2nB,aAAA7sB,EAAAwT,EAAAtE,kBAAA,iBAAAlP,IAAAE,GAAAurB,aAAAxoB,GAAAjD,GAAAA,EAAAwT,EAAAtE,kBAAA,QAAAlP,IAAAE,GAAAwrB,KAAAzoB,GAAAjD,IAAA,MAAAhB,GAAA,SAAAkG,EAAA/E,KAAAwR,EAAA,YAAA,MAAA3S,EAAA2S,EAAA,eAAAA,EAAAvB,EAAAX,MAAAzK,EAAAoL,EAAAT,KAAA1K,EAAAmL,EAAAV,MAAApM,GAAA2B,KAAAA,EAAA0M,GAAA3S,GAAA2S,IAAAA,EAAA,QAAA3S,EAAA,IAAAA,EAAA,KAAAwU,EAAAsZ,OAAA9tB,EAAAwU,EAAAuZ,YAAAttB,GAAAkS,GAAA,GAAArO,EAAAuE,EAAAoF,YAAA1N,GAAAyF,EAAA2M,EAAA6B,IAAA3L,EAAA8F,WAAApO,GAAAiU,EAAA7B,EAAA1M,IAAAuO,EAAAwZ,WAAA7c,GAAAA,EAAA,OAAArL,GAAA8C,EAAAwY,QAAA9c,EAAA,cAAA,aAAAkQ,EAAAtO,EAAA5B,EAAA0B,EAAAC,IAAAiL,EAAAmL,SAAA9b,GAAAiU,EAAA7B,IAAA7M,IAAA8C,EAAAwY,QAAA,gBAAA5M,EAAAtO,MAAAhF,GAAAsrB,QAAAtrB,GAAAwG,MAAA0Z,QAAA,cAAA,gBAAAphB,KAAAS,EAAAT,EAAAA,EAAA,QAAAS,EAAAA,KAAA,IAAAgC,GAAAwB,EAAAC,EAAAC,EAAAtC,EAAAyC,EAAAE,EAAAsB,EAAAE,EAAAC,EAAAC,EAAAhF,GAAAusB,aAAAhtB,GAAAF,EAAA2F,EAAAsnB,SAAAtnB,EAAA0C,EAAA1C,EAAAsnB,UAAAjtB,EAAAqB,UAAArB,EAAA8Q,QAAAnQ,GAAAX,GAAAW,GAAAwG,MAAAmB,EAAA3H,GAAAwM,WAAAwD,EAAAhQ,GAAA4a,UAAA,eAAA3K,EAAAjL,EAAA8nB,eAAA5c,KAAApQ,KAAA2R,EAAA,WAAA6B,GAAAgJ,WAAA,EAAAtN,kBAAA,SAAAnQ,GAAA,GAAAC,EAAA,IAAAwE,EAAA,CAAA,IAAAL,EAAA,IAAAA,KAAAnE,EAAAisB,GAAAvnB,KAAAR,IAAAC,EAAAnE,EAAA,GAAAuB,eAAAvB,EAAA,EAAAA,GAAAmE,EAAApE,EAAAwB,eAAA,MAAA,OAAAvB,EAAA,KAAAA,GAAAiuB,sBAAA,WAAA,MAAAzpB,GAAAN,EAAA,MAAAgqB,iBAAA,SAAAnuB,EAAAC,GAAA,MAAA,OAAAwE,IAAAzE,EAAAiB,EAAAjB,EAAAwB,eAAAP,EAAAjB,EAAAwB,gBAAAxB,EAAAqR,EAAArR,GAAAC,GAAAM,MAAA6tB,iBAAA,SAAApuB,GAAA,MAAA,OAAAyE,IAAA0B,EAAA+J,SAAAlQ,GAAAO,MAAA0tB,WAAA,SAAAjuB,GAAA,GAAAC,EAAA,IAAAD,EAAA,GAAAyE,EAAAgQ,EAAA5H,OAAA7M,EAAAyU,EAAAsZ,aAAA,KAAA9tB,IAAAD,GAAAoR,EAAAnR,IAAAmR,EAAAnR,GAAAD,EAAAC,GAAA,OAAAM,OAAA8tB,MAAA,SAAAruB,GAAA,GAAAC,GAAAD,GAAA4S,CAAA,OAAAlQ,IAAAA,EAAA2rB,MAAApuB,GAAAiT,EAAA,EAAAjT,GAAAM,MAAA,IAAAuI,EAAAnG,QAAA8R,GAAAtO,EAAAymB,MAAA3sB,GAAAkG,EAAAymB,KAAA1B,GAAAlS,MAAA,IAAApV,QAAAyoB,GAAAnB,GAAA4B,SAAA,MAAA3mB,EAAA/E,KAAAV,EAAA4tB,QAAA5tB,EAAAU,MAAA+E,EAAAmoB,QAAAnoB,EAAA/E,KAAA+E,EAAAuJ,WAAAvJ,EAAAqK,UAAA,KAAAhP,cAAAa,MAAAC,MAAA,IAAA,MAAA6D,EAAAooB,YAAA,CAAAhqB,EAAA9D,GAAAE,cAAA,IAAA,KAAA4D,EAAAyU,KAAA7S,EAAAymB,IAAAroB,EAAAyU,KAAAzU,EAAAyU,KAAA7S,EAAAooB,YAAA/B,GAAAM,SAAA,KAAAN,GAAAgC,MAAAjqB,EAAAuoB,SAAA,KAAAvoB,EAAAiqB,KAAA,MAAA9Z,GAAAvO,EAAAooB,aAAA,GAAA,GAAApoB,EAAAyK,MAAAzK,EAAA4mB,aAAA,gBAAA5mB,GAAAyK,OAAAzK,EAAAyK,KAAAzP,GAAAwqB,MAAAxlB,EAAAyK,KAAAzK,EAAAsoB,cAAAhf,EAAA6c,GAAAnmB,EAAAzF,EAAA+T,GAAAhQ,EAAA,MAAAgQ,EAAA1O,GAAA5E,GAAAwG,OAAAxB,EAAAiZ,OAAArZ,GAAA,IAAA5E,GAAAsrB,UAAAtrB,GAAAwG,MAAA0Z,QAAA,aAAAlb,EAAA/E,KAAA+E,EAAA/E,KAAAkJ,cAAAnE,EAAAuoB,YAAAtC,GAAApqB,KAAAmE,EAAA/E,MAAA8C,EAAAiC,EAAAymB,IAAAhpB,QAAAooB,GAAA,IAAA7lB,EAAAuoB,WAAAvoB,EAAAyK,MAAAzK,EAAA4mB,aAAA,KAAA5mB,EAAA8mB,aAAA,IAAAlc,QAAA,uCAAA5K,EAAAyK,KAAAzK,EAAAyK,KAAAhN,QAAAmoB,GAAA,OAAA7lB,EAAAC,EAAAymB,IAAA5pB,MAAAkB,EAAAhD,QAAAiF,EAAAyK,OAAA1M,IAAAknB,GAAAppB,KAAAkC,GAAA,IAAA,KAAAiC,EAAAyK,WAAAzK,GAAAyK,MAAAzK,EAAAwX,SAAA,IAAAzZ,EAAAA,EAAAN,QAAAqoB,GAAA,MAAA/lB,GAAAklB,GAAAppB,KAAAkC,GAAA,IAAA,KAAA,KAAAinB,MAAAjlB,GAAAC,EAAAymB,IAAA1oB,EAAAgC,GAAAC,EAAA2nB,aAAA3sB,GAAAurB,aAAAxoB,IAAAuQ,EAAA0Z,iBAAA,oBAAAhtB,GAAAurB,aAAAxoB,IAAA/C,GAAAwrB,KAAAzoB,IAAAuQ,EAAA0Z,iBAAA,gBAAAhtB,GAAAwrB,KAAAzoB,MAAAiC,EAAAyK,MAAAzK,EAAAuoB,YAAAvoB,EAAA8mB,eAAA,GAAAvsB,EAAAusB,cAAAxY,EAAA0Z,iBAAA,eAAAhoB,EAAA8mB,aAAAxY,EAAA0Z,iBAAA,SAAAhoB,EAAAuJ,UAAA,IAAAvJ,EAAA+mB,QAAA/mB,EAAAuJ,UAAA,IAAAvJ,EAAA+mB,QAAA/mB,EAAAuJ,UAAA,KAAA,MAAAvJ,EAAAuJ,UAAA,GAAA,KAAA6c,GAAA,WAAA,IAAApmB,EAAA+mB,QAAA,KAAA,KAAAjnB,IAAAE,GAAAwoB,QAAAla,EAAA0Z,iBAAAloB,EAAAE,EAAAwoB,QAAA1oB,GAAA,IAAAE,EAAAyoB,aAAAzoB,EAAAyoB,WAAAhtB,KAAApB,EAAAiU,EAAAtO,MAAA,GAAA1B,GAAA,MAAAgQ,GAAA4Z,OAAA,IAAAzb,EAAA,QAAAzB,EAAAvJ,IAAAzB,EAAA4I,UAAA0F,EAAA7R,KAAAuD,EAAA0oB,SAAApa,EAAA5R,KAAAsD,EAAAwK,OAAAjO,EAAA+M,EAAAE,GAAAxJ,EAAAzF,EAAA+T,GAAA,CAAA,GAAAA,EAAAgJ,WAAA,EAAA1X,GAAA8C,EAAAwY,QAAA,YAAA5M,EAAAtO,IAAA1B,EAAA,MAAAgQ,EAAAtO,GAAA6mB,OAAA7mB,EAAA2oB,QAAA,IAAAhtB,EAAA9B,EAAAyL,WAAA,WAAAgJ,EAAA4Z,MAAA,YAAAloB,EAAA2oB,SAAA,KAAArqB,GAAA,EAAA/B,EAAAqsB,KAAA1d,EAAA6B,GAAA,MAAAwB,GAAA,GAAAjQ,EAAA,KAAAiQ,EAAAxB,IAAA,EAAAwB,QAAAxB,IAAA,EAAA,eAAA,OAAAuB,IAAAua,QAAA,SAAAhvB,EAAAC,EAAAS,GAAA,MAAAS,IAAAoE,IAAAvF,EAAAC,EAAAS,EAAA,SAAAuuB,UAAA,SAAAjvB,EAAAC,GAAA,MAAAkB,IAAAoE,IAAAvF,EAAA,OAAAC,EAAA,aAAAkB,GAAAiB,MAAA,MAAA,QAAA,SAAApC,EAAAC,GAAAkB,GAAAlB,GAAA,SAAAD,EAAAU,EAAAD,EAAAiC,GAAA,MAAAvB,IAAAO,WAAAhB,KAAAgC,EAAAA,GAAAjC,EAAAA,EAAAC,EAAAA,EAAA,QAAAS,GAAA0sB,KAAA1sB,GAAAoH,QAAAqkB,IAAA5sB,EAAAoB,KAAAnB,EAAAuQ,SAAA9N,EAAAkO,KAAAlQ,EAAAmuB,QAAApuB,GAAAU,GAAA4Q,cAAA/R,IAAAA,OAAAmB,GAAAmI,SAAA,SAAAtJ,GAAA,MAAAmB,IAAA0sB,MAAAjB,IAAA5sB,EAAAoB,KAAA,MAAAoP,SAAA,SAAAmN,OAAA,EAAAqP,OAAA,EAAA5N,QAAA,EAAA8P,QAAA,KAAA/tB,GAAA+P,GAAA3I,QAAA4mB,QAAA,SAAAnvB,GAAA,GAAAC,EAAA,OAAAM,MAAA,KAAAY,GAAAO,WAAA1B,KAAAA,EAAAA,EAAA4B,KAAArB,KAAA,KAAAN,EAAAkB,GAAAnB,EAAAO,KAAA,GAAA0E,eAAAgE,GAAA,GAAAG,OAAA,GAAA7I,KAAA,GAAAQ,YAAAd,EAAAskB,aAAAhkB,KAAA,IAAAN,EAAAkJ,IAAA,WAAA,IAAA,GAAAnJ,GAAAO,KAAAP,EAAAovB,mBAAApvB,EAAAA,EAAAovB,iBAAA,OAAApvB,KAAAqkB,OAAA9jB,OAAAA,MAAA8uB,UAAA,SAAArvB,GAAA,MAAAmB,IAAAO,WAAA1B,GAAAO,KAAA6B,KAAA,SAAAnC,GAAAkB,GAAAZ,MAAA8uB,UAAArvB,EAAA4B,KAAArB,KAAAN,MAAAM,KAAA6B,KAAA,WAAA,GAAAnC,GAAAkB,GAAAZ,MAAAG,EAAAT,EAAA+P,UAAAtP,GAAAQ,OAAAR,EAAAyuB,QAAAnvB,GAAAC,EAAAokB,OAAArkB,MAAAsvB,KAAA,SAAAtvB,GAAA,GAAAC,GAAAkB,GAAAO,WAAA1B,EAAA,OAAAO,MAAA6B,KAAA,SAAA1B,GAAAS,GAAAZ,MAAA4uB,QAAAlvB,EAAAD,EAAA4B,KAAArB,KAAAG,GAAAV,MAAAuvB,OAAA,SAAAvvB,GAAA,MAAAO,MAAA8Y,OAAArZ,GAAAsY,IAAA,QAAAlW,KAAA,WAAAjB,GAAAZ,MAAAmkB,YAAAnkB,KAAAoG,cAAApG,QAAAY,GAAAuZ,KAAAtC,QAAA7M,OAAA,SAAAvL,GAAA,OAAAmB,GAAAuZ,KAAAtC,QAAAoX,QAAAxvB,IAAAmB,GAAAuZ,KAAAtC,QAAAoX,QAAA,SAAAxvB,GAAA,SAAAA,EAAAyvB,aAAAzvB,EAAA0vB,cAAA1vB,EAAA+mB,iBAAA7lB,SAAAC,GAAA0O,aAAA8f,IAAA,WAAA,IAAA,MAAA,IAAA3vB,GAAA4vB,eAAA,MAAA3vB,KAAA,IAAA4vB,KAAAC,EAAA,IAAAC,KAAA,KAAAC,GAAA7uB,GAAA0O,aAAA8f,KAAAxpB,IAAA8pB,OAAAD,IAAA,mBAAAA,IAAA7pB,GAAA0nB,KAAAmC,KAAAA,GAAA7uB,GAAAysB,cAAA,SAAA3tB,GAAA,GAAAS,GAAAD,CAAA,IAAA0F,GAAA8pB,MAAAD,KAAA/vB,EAAAsuB,YAAA,OAAAQ,KAAA,SAAArsB,EAAAwB,GAAA,GAAAC,GAAAC,EAAAnE,EAAA0vB,KAAA,IAAAvrB,EAAA8rB,KAAAjwB,EAAAmB,KAAAnB,EAAA2sB,IAAA3sB,EAAA+sB,MAAA/sB,EAAAkwB,SAAAlwB,EAAAga,UAAAha,EAAAmwB,UAAA,IAAAjsB,IAAAlE,GAAAmwB,UAAAhsB,EAAAD,GAAAlE,EAAAmwB,UAAAjsB,EAAAlE,GAAAiQ,UAAA9L,EAAAgqB,kBAAAhqB,EAAAgqB,iBAAAnuB,EAAAiQ,UAAAjQ,EAAAsuB,aAAA7rB,EAAA,sBAAAA,EAAA,oBAAA,iBAAA,KAAAyB,IAAAzB,GAAA0B,EAAA+pB,iBAAAhqB,EAAAzB,EAAAyB,GAAAzD,GAAA,SAAAV,GAAA,MAAA,YAAAU,IAAAA,EAAAD,EAAA2D,EAAAisB,OAAAjsB,EAAAksB,QAAAlsB,EAAAmsB,QAAAnsB,EAAAosB,mBAAA,KAAA,UAAAxwB,EAAAoE,EAAAiqB,QAAA,UAAAruB,EAAA,gBAAAoE,GAAA2pB,OAAA7pB,EAAA,EAAA,SAAAA,EAAAE,EAAA2pB,OAAA3pB,EAAA4pB,YAAA9pB,EAAA2rB,GAAAzrB,EAAA2pB,SAAA3pB,EAAA2pB,OAAA3pB,EAAA4pB,WAAA,UAAA5pB,EAAAqsB,cAAA,SAAA,gBAAArsB,GAAAssB,cAAAC,OAAAvsB,EAAAwsB,WAAAhwB,KAAAwD,EAAAssB,cAAAtsB,EAAA8pB,4BAAA9pB,EAAAisB,OAAA3vB,IAAAD,EAAA2D,EAAAksB,QAAA5vB,EAAA,SAAA,SAAA0D,EAAAmsB,QAAAnsB,EAAAmsB,QAAA9vB,EAAA2D,EAAAosB,mBAAA,WAAA,IAAApsB,EAAAqZ,YAAAzd,EAAAyL,WAAA,WAAA/K,GAAAD,OAAAC,EAAAA,EAAA,QAAA,KAAA0D,EAAA2qB,KAAA9uB,EAAAyuB,YAAAzuB,EAAA2Q,MAAA,MAAA,MAAA9O,GAAA,GAAApB,EAAA,KAAAoB,KAAAusB,MAAA,WAAA3tB,GAAAA,QAAAS,GAAAwsB,cAAA,SAAA3tB,GAAAA,EAAAuuB,cAAAvuB,EAAAgQ,SAAA6gB,QAAA,KAAA1vB,GAAAusB,WAAAR,SAAA2D,OAAA,6FAAA7gB,UAAA6gB,OAAA,2BAAAzgB,YAAA0gB,cAAA,SAAA9wB,GAAA,MAAAmB,IAAAkR,WAAArS,GAAAA,MAAAmB,GAAAwsB,cAAA,SAAA,SAAA3tB,GAAA,SAAAA,EAAA2d,QAAA3d,EAAA2d,OAAA,GAAA3d,EAAAuuB,cAAAvuB,EAAAoB,KAAA,SAAAD,GAAAysB,cAAA,SAAA,SAAA5tB,GAAA,GAAAA,EAAAuuB,YAAA,CAAA,GAAAtuB,GAAAS,CAAA,QAAAquB,KAAA,SAAArsB,EAAAwB,GAAAjE,EAAAkB,GAAA,YAAAkmB,MAAA0J,QAAA/wB,EAAAgxB,cAAA3nB,IAAArJ,EAAA4sB,MAAA3I,GAAA,aAAAvjB,EAAA,SAAAV,GAAAC,EAAAkN,SAAAzM,EAAA,KAAAV,GAAAkE,EAAA,UAAAlE,EAAAoB,KAAA,IAAA,IAAApB,EAAAoB,QAAAX,GAAAI,KAAAC,YAAAb,EAAA,KAAAouB,MAAA,WAAA3tB,GAAAA,QAAA,IAAAuwB,OAAAC,GAAA,mBAAA/vB,IAAAusB,WAAAyD,MAAA,WAAAC,cAAA,WAAA,GAAApxB,GAAAixB,GAAApc,OAAA1T,GAAAkC,QAAA,IAAA8nB,IAAA,OAAA5qB,MAAAP,IAAA,EAAAA,KAAAmB,GAAAwsB,cAAA,aAAA,SAAA1tB,EAAAS,EAAAD,GAAA,GAAAiC,GAAAwB,EAAAC,EAAAC,EAAAnE,EAAAkxB,SAAA,IAAAD,GAAAlvB,KAAA/B,EAAA2sB,KAAA,MAAA,gBAAA3sB,GAAA2Q,MAAA,KAAA3Q,EAAAgtB,aAAA,IAAAlc,QAAA,sCAAAmgB,GAAAlvB,KAAA/B,EAAA2Q,OAAA,OAAA,IAAAxM,GAAA,UAAAnE,EAAAyP,UAAA,GAAA,MAAAhN,GAAAzC,EAAAmxB,cAAAjwB,GAAAO,WAAAzB,EAAAmxB,eAAAnxB,EAAAmxB,gBAAAnxB,EAAAmxB,cAAAhtB,EAAAnE,EAAAmE,GAAAnE,EAAAmE,GAAAR,QAAAstB,GAAA,KAAAxuB,GAAAzC,EAAAkxB,SAAA,IAAAlxB,EAAA2sB,MAAAxB,GAAAppB,KAAA/B,EAAA2sB,KAAA,IAAA,KAAA3sB,EAAAkxB,MAAA,IAAAzuB,GAAAzC,EAAAmQ,WAAA,eAAA,WAAA,MAAAjM,IAAAhD,GAAAwP,MAAAjO,EAAA,mBAAAyB,EAAA,IAAAlE,EAAAyP,UAAA,GAAA,OAAAxL,EAAAlE,EAAA0C,GAAA1C,EAAA0C,GAAA,WAAAyB,EAAAsD,WAAAhH,EAAAoM,OAAA,WAAA,SAAA3I,EAAA/C,GAAAnB,GAAA+pB,WAAArnB,GAAA1C,EAAA0C,GAAAwB,EAAAjE,EAAAyC,KAAAzC,EAAAmxB,cAAA1wB,EAAA0wB,cAAAH,GAAAnqB,KAAApE,IAAAyB,GAAAhD,GAAAO,WAAAwC,IAAAA,EAAAC,EAAA,IAAAA,EAAAD,EAAA,SAAA,WAAAiC,GAAAkrB,mBAAA,WAAA,GAAArxB,GAAAS,GAAA6wB,eAAAD,mBAAA,IAAAlsB,IAAA,OAAAnF,GAAAwG,UAAA,6BAAA,IAAAxG,EAAA2G,WAAAzF,UAAAC,GAAA4Z,UAAA,SAAA/a,EAAAC,EAAAS,GAAA,GAAA,gBAAAV,GAAA,QAAA,kBAAAC,KAAAS,EAAAT,EAAAA,GAAA,EAAA,IAAAyC,GAAAwB,EAAAC,CAAA,OAAAlE,KAAAkG,GAAAkrB,oBAAApxB,EAAAQ,GAAA6wB,eAAAD,mBAAA,IAAA3uB,EAAAzC,EAAAU,cAAA,QAAA+B,EAAAsW,KAAAvY,GAAAkY,SAAAK,KAAA/Y,EAAAY,KAAAC,YAAA4B,IAAAzC,EAAAQ,IAAAyD,EAAA0Q,GAAAjQ,KAAA3E,GAAAmE,GAAAzD,MAAAwD,GAAAjE,EAAAU,cAAAuD,EAAA,MAAAA,EAAA4B,GAAA9F,GAAAC,EAAAkE,GAAAA,GAAAA,EAAAjD,QAAAC,GAAAgD,GAAAgJ,SAAAhM,GAAAyE,SAAA1B,EAAAyC,cAAAxF,GAAA+P,GAAAiQ,KAAA,SAAAnhB,EAAAC,EAAAS,GAAA,GAAAD,GAAAiC,EAAAwB,EAAAC,EAAA5D,KAAA6D,EAAApE,EAAA+Q,QAAA,IAAA,OAAA3M,IAAA,IAAA3D,EAAAyO,EAAAlP,EAAAgD,MAAAoB,IAAApE,EAAAA,EAAAgD,MAAA,EAAAoB,IAAAjD,GAAAO,WAAAzB,IAAAS,EAAAT,EAAAA,EAAA,QAAAA,GAAA,gBAAAA,KAAAyC,EAAA,QAAAyB,EAAAjD,OAAA,GAAAC,GAAA0sB,MAAAjB,IAAA5sB,EAAAoB,KAAAsB,GAAA,MAAA8N,SAAA,OAAAI,KAAA3Q,IAAA2C,KAAA,SAAA5C,GAAAkE,EAAAuD,UAAAtD,EAAA+E,KAAAzI,EAAAU,GAAA,SAAAkjB,OAAAljB,GAAA4Z,UAAA/a,IAAAuU,KAAA9T,GAAAT,KAAA6M,OAAAnM,GAAA,SAAAV,EAAAC,GAAAkE,EAAA/B,KAAA,WAAA1B,EAAAqC,MAAAxC,KAAA2D,IAAAlE,EAAA0wB,aAAAzwB,EAAAD,QAAAO,MAAAY,GAAAiB,MAAA,YAAA,WAAA,eAAA,YAAA,cAAA,YAAA,SAAApC,EAAAC,GAAAkB,GAAA+P,GAAAjR,GAAA,SAAAD,GAAA,MAAAO,MAAA0jB,GAAAhkB,EAAAD,MAAAmB,GAAAuZ,KAAAtC,QAAAmZ,SAAA,SAAAvxB,GAAA,MAAAmB,IAAAQ,KAAAR,GAAAwnB,OAAA,SAAA1oB,GAAA,MAAAD,KAAAC,EAAA2N,OAAA1M,QAAAC,GAAAqwB,QAAAC,UAAA,SAAAzxB,EAAAC,EAAAS,GAAA,GAAAD,GAAAiC,EAAAwB,EAAAC,EAAAC,EAAAtC,EAAAyC,EAAAE,EAAAtD,GAAAmD,IAAAtE,EAAA,YAAA+F,EAAA5E,GAAAnB,GAAAiG,IAAA,YAAAxB,IAAAzE,EAAA4E,MAAAghB,SAAA,YAAAxhB,EAAA2B,EAAAyrB,SAAAttB,EAAA/C,GAAAmD,IAAAtE,EAAA,OAAA8B,EAAAX,GAAAmD,IAAAtE,EAAA,QAAAuE,GAAA,aAAAE,GAAA,UAAAA,KAAAP,EAAApC,GAAAiP,QAAA,SAAA,EAAAxM,GAAA9D,EAAAsF,EAAA6f,WAAAzhB,EAAA1D,EAAA4V,IAAA3T,EAAAjC,EAAAwmB,OAAA9iB,EAAA8G,WAAA/G,IAAA,EAAAxB,EAAAuI,WAAAnJ,IAAA,GAAAX,GAAAO,WAAAzB,KAAAA,EAAAA,EAAA2B,KAAA5B,EAAAU,EAAAS,GAAAoH,UAAAnE,KAAA,MAAAnE,EAAAoW,MAAApQ,EAAAoQ,IAAApW,EAAAoW,IAAAjS,EAAAiS,IAAAlS,GAAA,MAAAlE,EAAAgnB,OAAAhhB,EAAAghB,KAAAhnB,EAAAgnB,KAAA7iB,EAAA6iB,KAAAvkB,GAAA,SAAAzC,GAAAA,EAAAyxB,MAAA9vB,KAAA5B,EAAAiG,GAAAF,EAAAzB,IAAA2B,KAAA9E,GAAA+P,GAAA3I,QAAAipB,OAAA,SAAAxxB,GAAA,GAAAyH,UAAAvG,OAAA,MAAA,UAAAlB,EAAAO,KAAAA,KAAA6B,KAAA,SAAAnC,GAAAkB,GAAAqwB,OAAAC,UAAAlxB,KAAAP,EAAAC,IAAA,IAAAA,GAAAS,EAAAD,EAAAiC,EAAAwB,EAAA3D,KAAA,EAAA,OAAA2D,GAAAA,EAAA6iB,iBAAA7lB,QAAAT,EAAAyD,EAAA8iB,wBAAA/mB,EAAAiE,EAAAe,cAAAvE,EAAAT,EAAAiW,gBAAAxT,EAAAzC,EAAAmW,aAAAC,IAAA5V,EAAA4V,IAAA3T,EAAAivB,YAAAjxB,EAAAkxB,UAAA3K,KAAAxmB,EAAAwmB,KAAAvkB,EAAAmvB,YAAAnxB,EAAAoxB,cAAAzb,IAAA,EAAA4Q,KAAA,GAAA,QAAArB,SAAA,WAAA,GAAArlB,KAAA,GAAA,CAAA,GAAAP,GAAAC,EAAAS,EAAAH,KAAA,GAAAE,GAAA4V,IAAA,EAAA4Q,KAAA,EAAA,OAAA,UAAA9lB,GAAAmD,IAAA5D,EAAA,YAAAT,EAAAS,EAAAsmB,yBAAAhnB,EAAAO,KAAAwxB,eAAA9xB,EAAAM,KAAAixB,SAAAlwB,EAAAtB,EAAA,GAAA,UAAAS,EAAAT,EAAAwxB,UAAA/wB,GAAA4V,IAAA5V,EAAA4V,IAAAlV,GAAAmD,IAAAtE,EAAA,GAAA,kBAAA,GAAAinB,KAAAxmB,EAAAwmB,KAAA9lB,GAAAmD,IAAAtE,EAAA,GAAA,mBAAA,MAAAqW,IAAApW,EAAAoW,IAAA5V,EAAA4V,IAAAlV,GAAAmD,IAAA5D,EAAA,aAAA,GAAAumB,KAAAhnB,EAAAgnB,KAAAxmB,EAAAwmB,KAAA9lB,GAAAmD,IAAA5D,EAAA,cAAA,MAAAqxB,aAAA,WAAA,MAAAxxB,MAAA4I,IAAA,WAAA,IAAA,GAAAnJ,GAAAO,KAAAwxB,aAAA/xB,GAAA,WAAAmB,GAAAmD,IAAAtE,EAAA,aAAAA,EAAAA,EAAA+xB,YAAA,OAAA/xB,IAAA4T,QAAAzS,GAAAiB,MAAAulB,WAAA,cAAAD,UAAA,eAAA,SAAA1nB,EAAAC,GAAA,GAAAS,GAAA,gBAAAT,CAAAkB,IAAA+P,GAAAlR,GAAA,SAAAS,GAAA,MAAA2U,IAAA7U,KAAA,SAAAP,EAAAS,EAAAiC,GAAA,GAAAwB,EAAA,OAAA/C,IAAAE,SAAArB,GAAAkE,EAAAlE,EAAA,IAAAA,EAAA6B,WAAAqC,EAAAlE,EAAAoW,aAAA,SAAA1T,EAAAwB,EAAAA,EAAAjE,GAAAD,EAAAS,QAAAyD,EAAAA,EAAA8tB,SAAAtxB,EAAAwD,EAAA2tB,YAAAnvB,EAAAhC,EAAAgC,EAAAwB,EAAAytB,aAAA3xB,EAAAS,GAAAiC,IAAA1C,EAAAS,EAAAgH,UAAAvG,WAAAC,GAAAiB,MAAA,MAAA,QAAA,SAAApC,EAAAC,GAAAkB,GAAAqM,SAAAvN,GAAAkK,EAAAhE,GAAAof,cAAA,SAAAvlB,EAAAU,GAAA,GAAAA,EAAA,MAAAA,GAAAgJ,EAAA1J,EAAAC,GAAA6J,GAAA9H,KAAAtB,GAAAS,GAAAnB,GAAA4lB,WAAA3lB,GAAA,KAAAS,MAAAS,GAAAiB,MAAA6vB,OAAA,SAAAC,MAAA,SAAA,SAAAlyB,EAAAC,GAAAkB,GAAAiB,MAAA+kB,QAAA,QAAAnnB,EAAA6b,QAAA5b,EAAAkyB,GAAA,QAAAnyB,GAAA,SAAAU,EAAAD,GAAAU,GAAA+P,GAAAzQ,GAAA,SAAAiC,EAAAwB,GAAA,GAAAC,GAAAsD,UAAAvG,SAAAR,GAAA,iBAAAgC,IAAA0B,EAAA1D,IAAAgC,KAAA,GAAAwB,KAAA,EAAA,SAAA,SAAA,OAAAkR,IAAA7U,KAAA,SAAAN,EAAAS,EAAAgC,GAAA,GAAAwB,EAAA,OAAA/C,IAAAE,SAAApB,GAAA,IAAAQ,EAAAsQ,QAAA,SAAA9Q,EAAA,QAAAD,GAAAC,EAAAG,SAAA8V,gBAAA,SAAAlW,GAAA,IAAAC,EAAA4B,UAAAqC,EAAAjE,EAAAiW,gBAAAvL,KAAAC,IAAA3K,EAAAkF,KAAA,SAAAnF,GAAAkE,EAAA,SAAAlE,GAAAC,EAAAkF,KAAA,SAAAnF,GAAAkE,EAAA,SAAAlE,GAAAkE,EAAA,SAAAlE,KAAA,SAAA0C,EAAAvB,GAAAmD,IAAArE,EAAAS,EAAA0D,GAAAjD,GAAAyD,MAAA3E,EAAAS,EAAAgC,EAAA0B,IAAAnE,EAAAkE,EAAAzB,EAAA,OAAAyB,QAAAhD,GAAA+P,GAAA3I,QAAA6pB,KAAA,SAAApyB,EAAAC,EAAAS,GAAA,MAAAH,MAAA0jB,GAAAjkB,EAAA,KAAAC,EAAAS,IAAA2xB,OAAA,SAAAryB,EAAAC,GAAA,MAAAM,MAAAiH,IAAAxH,EAAA,KAAAC,IAAAqyB,SAAA,SAAAtyB,EAAAC,EAAAS,EAAAD,GAAA,MAAAF,MAAA0jB,GAAAhkB,EAAAD,EAAAU,EAAAD,IAAA8xB,WAAA,SAAAvyB,EAAAC,EAAAS,GAAA,MAAA,KAAA+G,UAAAvG,OAAAX,KAAAiH,IAAAxH,EAAA,MAAAO,KAAAiH,IAAAvH,EAAAD,GAAA,KAAAU,MAAAS,GAAAqxB,UAAA,SAAAxyB,GAAAA,EAAAmB,GAAAqc,YAAArc,GAAAgC,OAAA,IAAAhC,GAAAoM,QAAAD,MAAAC,QAAApM,GAAAsxB,UAAAhvB,KAAAC,MAAAvC,GAAAI,SAAAD,EAAA,kBAAAoxB,SAAAA,OAAAC,KAAAD,OAAA,YAAA,WAAA,MAAAvxB,KAAA,IAAAyxB,IAAA5yB,EAAA6yB,OAAAC,GAAA9yB,EAAAuD,CAAA,OAAApC,IAAA4xB,WAAA,SAAA9yB,GAAA,MAAAD,GAAAuD,IAAApC,KAAAnB,EAAAuD,EAAAuvB,IAAA7yB,GAAAD,EAAA6yB,SAAA1xB,KAAAnB,EAAA6yB,OAAAD,IAAAzxB,IAAAlB,IAAAD,EAAA6yB,OAAA7yB,EAAAuD,EAAApC,IAAAA,KCmDAuxB,OAAA,UAAA,UACA,SAAAnvB,GAUA,QAAAyvB,KACA,GAAA,mBAAA,UAAA1yB,OAAA2yB,MAAAC,YAAA,CACA,GAAAC,EAEA,KAAAA,EAAAC,aAAAC,QAAAC,MACAzf,MAAApQ,KAAAC,MAAAyvB,GACAtf,MAAA+E,MAAAtY,OAAA2yB,MAAAC,aACA,MAAArf,OAAA0f,QAKA,QAAAC,GAAAD,GACA,mBAAA,UAAAjzB,OAAA2yB,MAAAC,aACAE,aAAAK,QAAAH,EAAA7vB,KAAAiwB,WACA9a,KAAAtY,OAAA2yB,MAAAC,YACAK,OAAAA,KAzBA,GAOAA,GAPAD,EAAA,aA8CA,OAhBAC,KACAA,EAAAP,MACAzvB,EAAAsqB,KAAA,qBACArd,SAAA,OACAwc,OAAA,EACA6B,QAAA,SAAAje,GACA2iB,EAAA3iB,EACA4iB,EAAAD,IAEA5iB,MAAA,WACAgjB,MAAA,gDAMAJ,IC1DAb,OAAA,eAAA,UACA,SAAAnvB,GA0FA,QAAAqwB,KACA,GAAAT,GAAAC,aAAAC,QAAA,aAAA,IAGA,KACAziB,KAAAnN,KAAAC,MAAAyvB,GACA,gBAAA,QACAviB,SACA,MAAAijB,GACAjjB,QAGA,MAAAA,MArGA,GAAAkjB,GAAA,mBAAA,SACAC,KAEAC,GAKAC,WAAA,WACA,MAAAH,IAQAI,YAAA,SAAAphB,GACA,GAAAghB,EAAA,CACA,GAAAljB,GAAAgjB,GAEAhjB,GAAAG,QAAA+B,GAAA,IACAlC,EAAA9J,KAAAgM,GACAsgB,aAAAK,QAAA,WAAAhwB,KAAAiwB,UAAA9iB,OAUAujB,SAAA,SAAArhB,GACA,GAAAghB,EAAA,CACA,GAAAljB,GAAAgjB,GACA,OAAAhjB,GAAAG,QAAA+B,IAAA,EAEA,OAAA,GAMAshB,UAAA,SAAAhX,EAAAvJ,GACAtQ,EAAA,yBAAA8d,QAAA,cACAjE,KAAAA,EACAvJ,MAAAA,KAWAwgB,OAAA,SAAAjX,EAAAvJ,GACAigB,GACAV,aAAAK,QAAArW,EAAA3Z,KAAAiwB,UAAA7f,IAEAtT,KAAA6zB,UAAAhX,EAAAvJ,IAOAygB,WAAA,SAAAlX,EAAAvJ,GACAkgB,EAAA3W,GAAAvJ,GAMA0gB,OAAA,SAAAnX,GACA,GAAA0W,EAAA,CACA,GAAAX,EAEA,IAAAA,EAAAC,aAAAC,QAAAjW,GAEA,MADAvJ,OAAApQ,KAAAC,MAAAyvB,GACAtf,MAGA,MAAAkgB,GAAA3W,IAmBA,OAAA4W,KC1GAtB,OAAA,SAAA,SAAA,SAAA,SACA,SAAAnvB,EAAAgwB,EAAAiB,GAEA,GAAAC,IAOAC,MAAA,SAAAC,EAAAC,GACA,QAAAC,GAAA/rB,GACA,GACAhH,GADAgzB,IAOA,KAJAhzB,EAAAgH,EAAAiI,QAAA,MAAA,IACA+jB,EAAA50B,OAAA4I,EAAAisB,UAAA,EAAAjzB,GACAgH,EAAAA,EAAA9F,MAAAlB,EAAA,KAEAA,EAAAgH,EAAAiI,QAAA,MAAA,IACA+jB,EAAA1X,KAAAtU,EAAAisB,UAAA,EAAAjzB,GACA,KAAAgH,EAAAksB,OAAAlzB,EAAA,GACAgzB,EAAAG,MAAAhL,SAAAnhB,EAAA9F,MAAAlB,EAAA,IAAA,EAEAgzB,EAAAG,MAAAhL,SAAAnhB,EAAA9F,MAAAlB,EAAA,KAEAsQ,MAAA0iB,EAAAG,QACA,MAAAH,GAIA,GAAAH,EAAA,CACA,GAAAG,GAAAD,EAAAK,mBAAAP,GAEA,IAAAG,EAKA,MAJAvxB,GAAAqxB,EAAAlc,QAAAwC,QAAA,cAAAsZ,MAAA,QACAjxB,EAAA,yBAAA8d,QAAA,QAAAyT,GACAF,EAAAjU,kBAEA,EAIA,OAAA,GAUAwU,aAAA,SAAAn1B,EAAA40B,GAWA,QAAAQ,GAAA3wB,GACA,IAAA,GAAA3C,GAAA,EAAAA,EAAAuzB,EAAAn0B,OAAAY,IACA,GAAAuzB,EAAAvzB,GAAAN,eAAAiD,EAAAjD,cACA,MAAA6zB,GAAAvzB,EAEAwzB,GAAAxuB,KAAArC,GAfA,GAAAolB,GAAA7pB,EAAAkb,QAAA,aACAqa,EAAAv1B,EAAA4Q,KAAA,SACA4kB,EAAA3L,EAAAtV,KAAA,kBAAAghB,EAAA,KAEA,IAAAC,EAAA,CACA,GAAAH,GAAA9xB,IAAAkyB,aAAA,YAAAD,EAAAE,OAAA,SAAA,GACAC,EAAA,GACArO,KACAgO,IAUA/xB,GAAAnB,KAAApC,EAAA4Q,OAAA,SAAAnM,EAAA4M,GACA,GAAAukB,EAEA,WAAAnxB,IAAAmxB,EAAAR,EAAA3wB,MACA,IAAAkxB,IACAA,GAAA,MACAA,GAAAC,EAAA,OAAAvkB,EAAA,OAIAikB,EAAAp0B,OAAA,GACAszB,EAAAqB,UACAC,MAAAjM,EACAzoB,KAAA,UACA0M,SAAA,IACA5E,KAAA,oBAAAosB,EAAAnmB,KAAA,MAAA,kCACAomB,EAAA,SAIA,IAAAI,IACArO,EAAAqO,SAAAA,GAEAH,EAAAE,OAAA,MAAApO,KAkBAyO,WAAA,SAAAnB,GAIA,QAAAoB,KACApzB,GAAA,EACAgyB,EAAAjU,iBAEApd,EAAAqxB,EAAAlc,QAAAwC,QAAA,cAAAsZ,MAAA,QAPA,GAAAx0B,GAAAuD,EAAAqxB,EAAAlc,QAAAwC,QAAA,KACAtY,GAAA,CASA,IAAA5C,EAAAsX,KAAA,QAAA,CACA,GAGAkd,GAHAyB,EAAA1C,EAAA2C,KAAAC,UAAAlD,MAAA,KACAmD,EAAA7C,EAAA2C,KAAAC,UAAAlD,MAAA,WACAja,EAAAhZ,EAAAsX,KAAA,OAGA,IAAA0B,EAAAqd,WAAAJ,KAAAjd,EAAA3W,MAAA,KACA2zB,IACAhc,KAAAhB,EAAAhW,MAAAizB,EAAA/0B,QACAqC,EAAAqxB,EAAAlc,QAAAwC,QAAA,UAAA+X,MAAA,WAAAjZ,UACA,IAAAha,EAAAuqB,SAAA,SACAyL,IACAxB,EAAAb,MAAA,sDACA,IAAA3zB,EAAAuqB,SAAA,SACAvR,EAAAqd,WAAAD,KAAApd,EAAA3W,MAAA,KACA2zB,IACAzyB,EAAAqxB,EAAAlc,QAAAwC,QAAA,UACA+X,MAAA,WAAArG,IAAA5T,QACA,IAAAhZ,EAAAuqB,SAAA,YAAAvR,EAAA3W,MAAA,cACAO,EAAA6xB,EAAAC,MAAA1b,EAAAvI,MAAA,cAAAoE,MAAA+f,OACA,IAAA5b,EAAA3W,MAAA,WACAO,EAAA6xB,EAAAC,MAAA1b,EAAAvI,MAAA,WAAAoE,MAAA+f,OACA,IAAA,IAAAJ,EAAAjxB,EAAAqxB,EAAAlc,QAAAwC,QAAA,eAAAha,QACA8X,EAAA3W,MAAA,KACA,CAAA,GACAqW,GADA5F,EAAAkG,EAAAvI,MAAA,KAAAoE,KAGA,KAAA6D,EAAA8b,EAAAjgB,KAAA,IAAAzB,IAAA5R,SACA0B,GAAA,EACAgyB,EAAAjU,iBACA6T,EAAA/L,SAAAf,UAAAhP,EAAAkN,WAAAvP,KAAA,MAIAzT,IACAgyB,EAAAjU,iBACArgB,OAAA4vB,KAAAlX,EAAA,eAEAhZ,GAAA4Q,KAAA,UACA6jB,EAAAU,aAAAn1B,EAAA40B,IAKA,OAAAH,KCnNA,SAAAhH,GAgDA,QAAA6I,KAMA,IAAA,GAHAC,GAAAn2B,SAAAO,cAAA8G,UAAA,IAGA3F,EAAA,EAAAA,EAAA2F,UAAAvG,OAAAY,IAAA,CACA,GAAA00B,GAAA/uB,UAAA3F,EACA,IAAA,OAAA00B,GAAAC,SAAAD,EAGA,GAAA,IAAAA,EAAA30B,SACA00B,EAAAz1B,YAAA01B,OAKA,IACA,KAAAA,GAAAA,GAAAA,EAAAxgB,YAAAwgB,EAAAE,QACA,IAAAF,GAAAA,GAAAA,EAAAG,eAAAH,EAAAI,QAEAL,EAAAz1B,YAAAV,SAAA2G,eAAAyvB,QAKA,IAAA,IAAA10B,GAAA,gBAAA,IACA,IAAA,GAAAghB,KAAA0T,GACA,GAAAA,EAAAvlB,eAAA6R,GAAA,CACA,GAAAjP,GAAA2iB,EAAA1T,EACA,IAAA,OAAAjP,GAAA4iB,SAAA5iB,EAAA,CACAiP,EAAAA,EAAAthB,cACAshB,EAAA+T,EAAA/T,IAAAA,CAKA,IAAAgU,GAAA,MAAAhU,EAAAkS,OAAA,IAAA,MAAAlS,EAAAkS,OAAA,EACA8B,IACAL,SAAAD,EAAAxd,MAAA,YAAA8J,GACAyT,EAAApjB,aAAA,OAAA,KAEAojB,EAAAzT,GAAAjP,GAKA,UAAAiP,GAAAyT,EAAA3xB,MAAAuO,aACAojB,EAAA3xB,MAAAuO,aAAA,UAAAU,GAMA,cAAAiP,GAAA,YAAAA,EACAyT,EAAAzT,GAAAjP,EAKA0iB,EAAApjB,aAAA2P,EAAAjP,SAQA,IAAA,mBAAAhD,OAAA1F,UAAA6F,SAAApP,KAAA40B,GACA,IAAA,GAAAjyB,GAAA,EAAAA,EAAAiyB,EAAAt1B,OAAAqD,IAAA,CACA,GAAAwyB,GAAAP,EAAAjyB,EACA,KAAAwyB,EAAAl1B,UACA00B,EAAAz1B,YAAAi2B,IAgBA,MAPAR,GAAA3R,SAAA,SAAA7jB,GAIA,MAHA,KAAAA,EAAAc,UAAA,IAAAtB,KAAAsB,UACAd,EAAAD,YAAAP,MAEAA,MAGAg2B,EArIA,GAAAM,IACAG,cAAA,gBACAC,UAAA,YACAC,kBAAA,oBACAC,QAAA,UACAC,YAAA,cACAC,YAAA,cACAlN,MAAA,YACAmN,UAAA,YACAC,QAAA,UACAC,QAAA,QACAC,eAAA,iBACAC,gBAAA,kBACAC,aAAA,eACAzN,IAAA,UACA0N,YAAA,cACAC,OAAA,SACAC,QAAA,UACAC,SAAA,WACAC,UAAA,YACAC,YAAA,cACAC,aAAA,eACAC,SAAA,WACAC,QAAA,UACAC,SAAA,WACAC,QAAA,UACAC,SAAA,WACAC,OAAA,SACAC,OAAA,SA8GAnC,GAAAoC,gBAAA,SAAAtb,EAAAub,GACArC,EAAAlZ,KACAkZ,EAAAlZ,GAAA,WACA,GAAAmZ,GAAAD,EAAA,OAAAnM,MAAA/M,GAEA,OADAub,GAAA51B,MAAAwzB,EAAAjpB,MAAAnC,UAAAnI,MAAApB,KAAA6F,YACA8uB,IAgCA,KAAA,GA1BAqC,IAAA,UAAA,SAAA,WAAA,MAAA,SAAA,MACA,OAAA,QAAA,WAAA,WAAA,SAAA,KAAA,IAAA,OAGAC,GAAA,IAAA,OAAA,UAAA,OAAA,UAAA,QAAA,QAAA,IACA,OAAA,MAAA,aAAA,OAAA,KAAA,SAAA,SAAA,UACA,OAAA,OAAA,MAAA,WAAA,UAAA,WAAA,KAAA,MACA,UAAA,MAAA,MAAA,KAAA,KAAA,KAAA,QAAA,WACA,aAAA,SAAA,SAAA,OAAA,KAAA,KAAA,KAAA,KAAA,KACA,KAAA,OAAA,SAAA,SAAA,KAAA,OAAA,IAAA,SAAA,MACA,QAAA,MAAA,SAAA,MAAA,QAAA,SAAA,KAAA,OAAA,MACA,OAAA,OAAA,OAAA,QAAA,MAAA,WAAA,SAAA,KACA,WAAA,SAAA,SAAA,IAAA,UAAA,QAAA,MAAA,WACA,IAAA,KAAA,KAAA,OAAA,IAAA,OAAA,SAAA,UAAA,SACA,QAAA,SAAA,OAAA,SAAA,QAAA,MAAA,UAAA,MACA,QAAA,QAAA,KAAA,WAAA,QAAA,KAAA,QAAA,OAAA,QACA,KAAA,KAAA,MAAA,QAAA,OAAAvsB,OAAAssB,GAGAE,EAAA,SAAAC,GACA,MAAA,YACA,MAAAzC,GAAAvzB,MAAAxC,MACAw4B,GAAAzsB,OAAAgB,MAAAnC,UAAAnI,MAAApB,KAAA6F,eAIA3F,EAAA,EAAAA,EAAA+2B,EAAA33B,OAAAY,IACAw0B,EAAAuC,EAAA/2B,IAAAg3B,EAAAD,EAAA/2B,GAIA,IAAA,mBAAA5B,SAAAA,OAAAC,QACAD,OAAAC,QAAAm2B,MAIA,CACA,GAAA0C,GAAAvL,EAAAlqB,KACAy1B,GAAAzC,GAAAD,EACA7I,EAAAlqB,EAAAy1B,IAEAz4B,MAEAmyB,OAAA,WAAA,UAAA,cL/LA,mBAAAG,QAAA,KAAA,IAAAxyB,OAAA,2CAAA,SAAAL,GAAA,YAAA,IAAAC,GAAAD,EAAAkR,GAAAI,OAAAb,MAAA,KAAA,GAAAA,MAAA,IAAA,IAAAxQ,EAAA,GAAA,GAAAA,EAAA,GAAA,GAAA,GAAAA,EAAA,IAAA,GAAAA,EAAA,IAAAA,EAAA,GAAA,GAAAA,EAAA,GAAA,EAAA,KAAA,IAAAI,OAAA,6FAAAwyB,SAAA,SAAA7yB,GAAA,YAAA,SAAAC,KAAA,GAAAD,GAAAI,SAAAO,cAAA,aAAAV,GAAAg5B,iBAAA,sBAAAC,cAAA,gBAAAC,YAAA,gCAAAC,WAAA,gBAAA,KAAA,GAAA14B,KAAAT,GAAA,GAAA,SAAAD,EAAA4E,MAAAlE,GAAA,OAAAqE,IAAA9E,EAAAS,GAAA,QAAA,EAAAV,EAAAkR,GAAAmoB,qBAAA,SAAAp5B,GAAA,GAAAS,IAAA,EAAAD,EAAAF,IAAAP,GAAAO,MAAA2jB,IAAA,kBAAA,WAAAxjB,GAAA,GAAA,IAAAgC,GAAA,WAAAhC,GAAAV,EAAAS,GAAA4gB,QAAArhB,EAAAyS,QAAA2mB,WAAAr0B,KAAA,OAAA0G,YAAA/I,EAAAzC,GAAAM,MAAAP,EAAA,WAAAA,EAAAyS,QAAA2mB,WAAAn5B,IAAAD,EAAAyS,QAAA2mB,aAAAp5B,EAAA2H,MAAA6X,QAAA8Z,iBAAA5Z,SAAA1f,EAAAyS,QAAA2mB,WAAAr0B,IAAA0a,aAAAzf,EAAAyS,QAAA2mB,WAAAr0B,IAAAuD,OAAA,SAAArI,GAAA,GAAAD,EAAAC,EAAAyY,QAAAoC,GAAAva,MAAA,MAAAN,GAAAwgB,UAAApB,QAAAtc,MAAAxC,KAAAkH,iBAAAorB,SAAA,SAAA7yB,GAAA,YAAA,SAAAC,GAAAA,GAAA,MAAAM,MAAA6B,KAAA,WAAA,GAAA1B,GAAAV,EAAAO,MAAAmC,EAAAhC,EAAAkQ,KAAA,WAAAlO,IAAAhC,EAAAkQ,KAAA,WAAAlO,EAAA,GAAAjC,GAAAF,OAAA,gBAAAN,IAAAyC,EAAAzC,GAAA2B,KAAAlB,KAAA,GAAAA,GAAA,yBAAAD,EAAA,SAAAR,GAAAD,EAAAC,GAAAgkB,GAAA,QAAAvjB,EAAAH,KAAAg5B,OAAA94B,GAAA+4B,QAAA,QAAA/4B,EAAAg5B,oBAAA,IAAAh5B,EAAA0K,UAAAouB,MAAA,SAAAt5B,GAAA,QAAAS,KAAAyD,EAAAigB,SAAA/C,QAAA,mBAAAlU,SAAA,GAAAzK,GAAA1C,EAAAO,MAAA2D,EAAAxB,EAAA4U,KAAA,cAAApT,KAAAA,EAAAxB,EAAA4U,KAAA,QAAApT,EAAAA,GAAAA,EAAAN,QAAA,iBAAA,IAAA,IAAAO,GAAAnE,EAAA,MAAAkE,KAAAA,EAAAjE,IAAAA,EAAA0gB,iBAAAxc,EAAAjD,SAAAiD,EAAAzB,EAAAwY,QAAA,WAAA/W,EAAAkd,QAAAphB,EAAAD,EAAA+gB,MAAA,mBAAA9gB,EAAAyhB,uBAAAvd,EAAAkmB,YAAA,MAAArqB,EAAAyS,QAAA2mB,YAAAj1B,EAAAomB,SAAA,QAAApmB,EAAA+f,IAAA,kBAAAxjB,GAAA24B,qBAAA54B,EAAAg5B,qBAAA/4B,KAAA,IAAAgC,GAAA1C,EAAAkR,GAAAyiB,KAAA3zB,GAAAkR,GAAAyiB,MAAA1zB,EAAAD,EAAAkR,GAAAyiB,MAAA+F,YAAAj5B,EAAAT,EAAAkR,GAAAyiB,MAAAZ,WAAA,WAAA,MAAA/yB,GAAAkR,GAAAyiB,MAAAjxB,EAAAnC,MAAAP,EAAAI,UAAA6jB,GAAA,0BAAAvjB,EAAAD,EAAA0K,UAAAouB,QAAA1G,SAAA,SAAA7yB,GAAA,YAAA,SAAAC,GAAAA,GAAA,MAAAM,MAAA6B,KAAA,WAAA,GAAA3B,GAAAT,EAAAO,MAAAmC,EAAAjC,EAAAmQ,KAAA,aAAA1M,EAAA,gBAAAjE,IAAAA,CAAAyC,IAAAjC,EAAAmQ,KAAA,YAAAlO,EAAA,GAAAhC,GAAAH,KAAA2D,IAAA,UAAAjE,EAAAyC,EAAA4b,SAAAre,GAAAyC,EAAAi3B,SAAA15B,KAAA,GAAAS,GAAA,SAAAT,EAAAQ,GAAAF,KAAAq5B,SAAA55B,EAAAC,GAAAM,KAAA+mB,QAAAtnB,EAAAuI,UAAA7H,EAAAm5B,SAAAp5B,GAAAF,KAAAu5B,WAAA,EAAAp5B,GAAA84B,QAAA,QAAA94B,EAAAm5B,UAAAE,YAAA,cAAAr5B,EAAAyK,UAAAwuB,SAAA,SAAA15B,GAAA,GAAAS,GAAA,WAAAD,EAAAF,KAAAq5B,SAAAl3B,EAAAjC,EAAAqa,GAAA,SAAA,MAAA,OAAA5W,EAAAzD,EAAAmQ,MAAA3Q,IAAA,OAAA,MAAAiE,EAAA81B,WAAAv5B,EAAAmQ,KAAA,YAAAnQ,EAAAiC,MAAA+I,WAAAzL,EAAA6O,MAAA,WAAApO,EAAAiC,GAAA,MAAAwB,EAAAjE,GAAAM,KAAA+mB,QAAArnB,GAAAiE,EAAAjE,IAAA,eAAAA,GAAAM,KAAAu5B,WAAA;AAAAr5B,EAAA2pB,SAAA1pB,GAAA4W,KAAA5W,EAAAA,GAAA2mB,KAAA3mB,GAAA,IAAAH,KAAAu5B,YAAAv5B,KAAAu5B,WAAA,EAAAr5B,EAAA4pB,YAAA3pB,GAAAipB,WAAAjpB,GAAA2mB,KAAA3mB,GAAA,KAAAH,MAAA,IAAAG,EAAAyK,UAAAmT,OAAA,WAAA,GAAAte,IAAA,EAAAC,EAAAM,KAAAq5B,SAAA1e,QAAA,0BAAA,IAAAjb,EAAAiB,OAAA,CAAA,GAAAR,GAAAH,KAAAq5B,SAAArlB,KAAA,QAAA,UAAA7T,EAAA2mB,KAAA,SAAA3mB,EAAA2mB,KAAA,aAAArnB,GAAA,GAAAC,EAAAsU,KAAA,WAAA8V,YAAA,UAAA9pB,KAAAq5B,SAAAxP,SAAA,WAAA,YAAA1pB,EAAA2mB,KAAA,UAAA3mB,EAAA2mB,KAAA,aAAA9mB,KAAAq5B,SAAArP,SAAA,YAAAvqB,GAAA,GAAAO,KAAAq5B,SAAAtP,YAAA,WAAA5pB,EAAA2mB,KAAA,UAAA9mB,KAAAq5B,SAAArP,SAAA,WAAAvqB,GAAAU,EAAA2gB,QAAA,cAAA9gB,MAAAq5B,SAAAtiB,KAAA,gBAAA/W,KAAAq5B,SAAArP,SAAA,WAAAhqB,KAAAq5B,SAAAtP,YAAA,UAAA,IAAA7pB,GAAAT,EAAAkR,GAAAsI,MAAAxZ,GAAAkR,GAAAsI,OAAAvZ,EAAAD,EAAAkR,GAAAsI,OAAAkgB,YAAAh5B,EAAAV,EAAAkR,GAAAsI,OAAAuZ,WAAA,WAAA,MAAA/yB,GAAAkR,GAAAsI,OAAA/Y,EAAAF,MAAAP,EAAAI,UAAA6jB,GAAA,2BAAA,0BAAA,SAAAvjB,GAAA,GAAAD,GAAAT,EAAAU,EAAAgY,QAAAwC,QAAA,OAAAjb,GAAA2B,KAAAnB,EAAA,UAAAT,EAAAU,EAAAgY,QAAAoC,GAAA,iDAAApa,EAAAigB,iBAAAlgB,EAAAqa,GAAA,gBAAAra,EAAA4gB,QAAA,SAAA5gB,EAAA8T,KAAA,gCAAA5C,QAAA0P,QAAA,YAAA4C,GAAA,mDAAA,0BAAA,SAAAhkB,GAAAD,EAAAC,EAAAyY,QAAAwC,QAAA,QAAAoP,YAAA,QAAA,eAAAtoB,KAAA/B,EAAAmB,UAAAyxB,SAAA,SAAA7yB,GAAA,YAAA,SAAAC,GAAAA,GAAA,MAAAM,MAAA6B,KAAA,WAAA,GAAA3B,GAAAT,EAAAO,MAAAmC,EAAAjC,EAAAmQ,KAAA,eAAA1M,EAAAlE,EAAAuI,UAAA7H,EAAAm5B,SAAAp5B,EAAAmQ,OAAA,gBAAA3Q,IAAAA,GAAAkE,EAAA,gBAAAlE,GAAAA,EAAAiE,EAAA+1B,KAAAv3B,IAAAjC,EAAAmQ,KAAA,cAAAlO,EAAA,GAAAhC,GAAAH,KAAA2D,IAAA,gBAAAjE,GAAAyC,EAAAw3B,GAAAj6B,GAAAkE,EAAAzB,EAAAyB,KAAAD,EAAAyH,UAAAjJ,EAAAy3B,QAAAC,UAAA,GAAA15B,GAAA,SAAAT,EAAAS,GAAAH,KAAAq5B,SAAA55B,EAAAC,GAAAM,KAAA85B,YAAA95B,KAAAq5B,SAAArlB,KAAA,wBAAAhU,KAAA+mB,QAAA5mB,EAAAH,KAAA+5B,OAAA,KAAA/5B,KAAAg6B,QAAA,KAAAh6B,KAAAoL,SAAA,KAAApL,KAAAi6B,QAAA,KAAAj6B,KAAAk6B,OAAA,KAAAl6B,KAAA+mB,QAAAoT,UAAAn6B,KAAAq5B,SAAA3V,GAAA,sBAAAjkB,EAAA6O,MAAAtO,KAAAo6B,QAAAp6B,OAAA,SAAAA,KAAA+mB,QAAA6S,SAAA,gBAAA/5B,UAAA8V,kBAAA3V,KAAAq5B,SAAA3V,GAAA,yBAAAjkB,EAAA6O,MAAAtO,KAAA45B,MAAA55B,OAAA0jB,GAAA,yBAAAjkB,EAAA6O,MAAAtO,KAAA65B,MAAA75B,OAAAG,GAAA84B,QAAA,QAAA94B,EAAA+4B,oBAAA,IAAA/4B,EAAAm5B,UAAAluB,SAAA,IAAAwuB,MAAA,QAAA7K,MAAA,EAAAoL,UAAA,GAAAh6B,EAAAyK,UAAAwvB,QAAA,SAAA36B,GAAA,IAAA,kBAAAgC,KAAAhC,EAAA0Y,OAAAqgB,SAAA,CAAA,OAAA/4B,EAAA4jB,OAAA,IAAA,IAAArjB,KAAA0a,MAAA,MAAA,KAAA,IAAA1a,KAAAyT,MAAA,MAAA,SAAA,OAAAhU,EAAA2gB,mBAAAjgB,EAAAyK,UAAAivB,MAAA,SAAAn6B,GAAA,MAAAA,KAAAM,KAAA+5B,QAAA,GAAA/5B,KAAAoL,UAAAivB,cAAAr6B,KAAAoL,UAAApL,KAAA+mB,QAAA3b,WAAApL,KAAA+5B,SAAA/5B,KAAAoL,SAAAkvB,YAAA76B,EAAA6O,MAAAtO,KAAAyT,KAAAzT,MAAAA,KAAA+mB,QAAA3b,WAAApL,MAAAG,EAAAyK,UAAA2vB,aAAA,SAAA96B,GAAA,MAAAO,MAAAk6B,OAAAz6B,EAAAqZ,SAAA2B,SAAA,SAAAza,KAAAk6B,OAAAtf,MAAAnb,GAAAO,KAAAi6B,UAAA95B,EAAAyK,UAAA4vB,oBAAA,SAAA/6B,EAAAC,GAAA,GAAAS,GAAAH,KAAAu6B,aAAA76B,GAAAQ,EAAA,QAAAT,GAAA,IAAAU,GAAA,QAAAV,GAAAU,GAAAH,KAAAk6B,OAAAv5B,OAAA,CAAA,IAAAT,IAAAF,KAAA+mB,QAAAgI,KAAA,MAAArvB,EAAA,IAAAyC,GAAA,QAAA1C,GAAA,EAAA,EAAAkE,GAAAxD,EAAAgC,GAAAnC,KAAAk6B,OAAAv5B,MAAA,OAAAX,MAAAk6B,OAAAxxB,GAAA/E,IAAAxD,EAAAyK,UAAA+uB,GAAA,SAAAl6B,GAAA,GAAAC,GAAAM,KAAAG,EAAAH,KAAAu6B,aAAAv6B,KAAAi6B,QAAAj6B,KAAAq5B,SAAArlB,KAAA,gBAAA,MAAAvU,EAAAO,KAAAk6B,OAAAv5B,OAAA,GAAAlB,EAAA,GAAA,MAAAO,MAAAg6B,QAAAh6B,KAAAq5B,SAAA1V,IAAA,mBAAA,WAAAjkB,EAAAi6B,GAAAl6B,KAAAU,GAAAV,EAAAO,KAAA45B,QAAAC,QAAA75B,KAAA05B,MAAAj6B,EAAAU,EAAA,OAAA,OAAAH,KAAAk6B,OAAAxxB,GAAAjJ,KAAAU,EAAAyK,UAAAgvB,MAAA,SAAAl6B,GAAA,MAAAA,KAAAM,KAAA+5B,QAAA,GAAA/5B,KAAAq5B,SAAArlB,KAAA,gBAAArT,QAAAlB,EAAAyS,QAAA2mB,aAAA74B,KAAAq5B,SAAAvY,QAAArhB,EAAAyS,QAAA2mB,WAAAr0B,KAAAxE,KAAA65B,OAAA,IAAA75B,KAAAoL,SAAAivB,cAAAr6B,KAAAoL,UAAApL,MAAAG,EAAAyK,UAAA6I,KAAA,WAAA,IAAAzT,KAAAg6B,QAAA,MAAAh6B,MAAA05B,MAAA,SAAAv5B,EAAAyK,UAAA8P,KAAA,WAAA,IAAA1a,KAAAg6B,QAAA,MAAAh6B,MAAA05B,MAAA,SAAAv5B,EAAAyK,UAAA8uB,MAAA,SAAAh6B,EAAAQ,GAAA,GAAAiC,GAAAnC,KAAAq5B,SAAArlB,KAAA,gBAAArQ,EAAAzD,GAAAF,KAAAw6B,oBAAA96B,EAAAyC,GAAAyB,EAAA5D,KAAAoL,SAAAvH,EAAA,QAAAnE,EAAA,OAAA,QAAA6B,EAAAvB,IAAA,IAAA2D,EAAAqmB,SAAA,UAAA,MAAAhqB,MAAAg6B,SAAA,CAAA,IAAAh2B,GAAAL,EAAA,GAAAO,EAAAzE,EAAA+gB,MAAA,qBAAAa,cAAArd,EAAAy2B,UAAA52B,GAAA,IAAA7D,KAAAq5B,SAAAvY,QAAA5c,IAAAA,EAAAid,qBAAA,CAAA,GAAAnhB,KAAAg6B,SAAA,EAAAp2B,GAAA5D,KAAA45B,QAAA55B,KAAA85B,YAAAn5B,OAAA,CAAAX,KAAA85B,YAAA9lB,KAAA,WAAA8V,YAAA,SAAA,IAAAtkB,GAAA/F,EAAAO,KAAA85B,YAAArf,WAAAza,KAAAu6B,aAAA52B,IAAA6B,IAAAA,EAAAqkB,SAAA,UAAA,GAAAnkB,GAAAjG,EAAA+gB,MAAA,oBAAAa,cAAArd,EAAAy2B,UAAA52B,GAAA,OAAApE,GAAAyS,QAAA2mB,YAAA74B,KAAAq5B,SAAArP,SAAA,UAAArmB,EAAAkmB,SAAAnqB,GAAAiE,EAAA,GAAAurB,YAAA/sB,EAAA0nB,SAAAhmB,GAAAF,EAAAkmB,SAAAhmB,GAAA1B,EAAAwhB,IAAA,kBAAA,WAAAhgB,EAAAmmB,aAAApqB,EAAAmE,GAAA+K,KAAA,MAAAib,SAAA,UAAA1nB,EAAA2nB,aAAA,SAAAjmB,GAAA+K,KAAA,MAAArN,EAAAy4B,SAAA,EAAA9uB,WAAA,WAAA3J,EAAA83B,SAAAvY,QAAApb,IAAA,KAAAozB,qBAAA34B,EAAA+4B,uBAAA/2B,EAAA2nB,YAAA,UAAAnmB,EAAAkmB,SAAA,UAAA7pB,KAAAg6B,SAAA,EAAAh6B,KAAAq5B,SAAAvY,QAAApb,IAAA9B,GAAA5D,KAAA65B,QAAA75B,MAAA,IAAAE,GAAAT,EAAAkR,GAAA+pB,QAAAj7B,GAAAkR,GAAA+pB,SAAAh7B,EAAAD,EAAAkR,GAAA+pB,SAAAvB,YAAAh5B,EAAAV,EAAAkR,GAAA+pB,SAAAlI,WAAA,WAAA,MAAA/yB,GAAAkR,GAAA+pB,SAAAx6B,EAAAF,KAAA,IAAAmC,GAAA,SAAAhC,GAAA,GAAAD,GAAAiC,EAAA1C,EAAAO,MAAA2D,EAAAlE,EAAA0C,EAAA4U,KAAA,iBAAA7W,EAAAiC,EAAA4U,KAAA,UAAA7W,EAAAmD,QAAA,iBAAA,IAAA,IAAAM,EAAAqmB,SAAA,YAAA,CAAA,GAAApmB,GAAAnE,EAAAuI,UAAArE,EAAA0M,OAAAlO,EAAAkO,QAAAxM,EAAA1B,EAAA4U,KAAA,gBAAAlT,KAAAD,EAAAwH,UAAA,GAAA1L,EAAA2B,KAAAsC,EAAAC,GAAAC,GAAAF,EAAA0M,KAAA,eAAAspB,GAAA91B,GAAA1D,EAAAigB,kBAAA3gB,GAAAI,UAAA6jB,GAAA,6BAAA,eAAAvhB,GAAAuhB,GAAA,6BAAA,kBAAAvhB,GAAA1C,EAAAM,QAAA2jB,GAAA,OAAA,WAAAjkB,EAAA,0BAAAoC,KAAA,WAAA,GAAA1B,GAAAV,EAAAO,KAAAN,GAAA2B,KAAAlB,EAAAA,EAAAkQ,aAAAiiB,SAAA,SAAA7yB,GAAA,YAAA,SAAAC,GAAAA,GAAA,GAAAS,GAAAD,EAAAR,EAAAqX,KAAA,iBAAA5W,EAAAT,EAAAqX,KAAA,UAAA5W,EAAAkD,QAAA,iBAAA,GAAA,OAAA5D,GAAAS,GAAA,QAAAC,GAAAT,GAAA,MAAAM,MAAA6B,KAAA,WAAA,GAAA1B,GAAAV,EAAAO,MAAAmC,EAAAhC,EAAAkQ,KAAA,eAAA1M,EAAAlE,EAAAuI,UAAA9H,EAAAo5B,SAAAn5B,EAAAkQ,OAAA,gBAAA3Q,IAAAA,IAAAyC,GAAAwB,EAAAoa,QAAA,YAAAtc,KAAA/B,KAAAiE,EAAAoa,QAAA,GAAA5b,GAAAhC,EAAAkQ,KAAA,cAAAlO,EAAA,GAAAjC,GAAAF,KAAA2D,IAAA,gBAAAjE,IAAAyC,EAAAzC,OAAA,GAAAQ,GAAA,SAAAR,EAAAS,GAAAH,KAAAq5B,SAAA55B,EAAAC,GAAAM,KAAA+mB,QAAAtnB,EAAAuI,UAAA9H,EAAAo5B,SAAAn5B,GAAAH,KAAA26B,SAAAl7B,EAAA,mCAAAC,EAAA6S,GAAA,6CAAA7S,EAAA6S,GAAA,MAAAvS,KAAA46B,cAAA,KAAA56B,KAAA+mB,QAAAjO,OAAA9Y,KAAA66B,QAAA76B,KAAA86B,YAAA96B,KAAA+6B,yBAAA/6B,KAAAq5B,SAAAr5B,KAAA26B,UAAA36B,KAAA+mB,QAAAhJ,QAAA/d,KAAA+d,SAAA7d,GAAA+4B,QAAA,QAAA/4B,EAAAg5B,oBAAA,IAAAh5B,EAAAo5B,UAAAvb,QAAA,GAAA7d,EAAA0K,UAAAowB,UAAA,WAAA,GAAAv7B,GAAAO,KAAAq5B,SAAArP,SAAA,QAAA,OAAAvqB,GAAA,QAAA,UAAAS,EAAA0K,UAAAiT,KAAA,WAAA,IAAA7d,KAAA46B,gBAAA56B,KAAAq5B,SAAArP,SAAA,MAAA,CAAA,GAAAtqB,GAAAyC,EAAAnC,KAAA66B,SAAA76B,KAAA66B,QAAApgB,SAAA,UAAAA,SAAA,mBAAA,MAAAtY,GAAAA,EAAAxB,SAAAjB,EAAAyC,EAAAkO,KAAA,eAAA3Q,GAAAA,EAAAk7B,gBAAA,CAAA,GAAAj3B,GAAAlE,EAAA+gB,MAAA,mBAAA,IAAAxgB,KAAAq5B,SAAAvY,QAAAnd,IAAAA,EAAAwd,qBAAA,CAAAhf,GAAAA,EAAAxB,SAAAR,EAAAkB,KAAAc,EAAA,QAAAzC,GAAAyC,EAAAkO,KAAA,cAAA,MAAA,IAAAzM,GAAA5D,KAAAg7B,WAAAh7B,MAAAq5B,SAAAvP,YAAA,YAAAD,SAAA,cAAAjmB,GAAA,GAAAmT,KAAA,iBAAA,GAAA/W,KAAA26B,SAAA7Q,YAAA,aAAA/S,KAAA,iBAAA,GAAA/W,KAAA46B,cAAA,CAAA,IAAA/2B,GAAA,WAAA7D,KAAAq5B,SAAAvP,YAAA,cAAAD,SAAA,eAAAjmB,GAAA,IAAA5D,KAAA46B,cAAA,EAAA56B,KAAAq5B,SAAAvY,QAAA,qBAAA,KAAArhB,EAAAyS,QAAA2mB,WAAA,MAAAh1B,GAAAxC,KAAArB,KAAA,IAAAuB,GAAA9B,EAAAqN,WAAA,SAAAlJ,GAAAgL,KAAA,KAAA5O,MAAAq5B,SAAA1V,IAAA,kBAAAlkB,EAAA6O,MAAAzK,EAAA7D,OAAA84B,qBAAA54B,EAAAg5B,qBAAAt1B,GAAA5D,KAAAq5B,SAAA,GAAA93B,QAAArB,EAAA0K,UAAAkT,KAAA,WAAA,IAAA9d,KAAA46B,eAAA56B,KAAAq5B,SAAArP,SAAA,MAAA,CAAA,GAAAtqB,GAAAD,EAAA+gB,MAAA,mBAAA,IAAAxgB,KAAAq5B,SAAAvY,QAAAphB,IAAAA,EAAAyhB,qBAAA,CAAA,GAAAhhB,GAAAH,KAAAg7B,WAAAh7B,MAAAq5B,SAAAl5B,GAAAH,KAAAq5B,SAAAl5B,MAAA,GAAAgvB,aAAAnvB,KAAAq5B,SAAAxP,SAAA,cAAAC,YAAA,eAAA/S,KAAA,iBAAA,GAAA/W,KAAA26B,SAAA9Q,SAAA,aAAA9S,KAAA,iBAAA,GAAA/W,KAAA46B,cAAA,CAAA,IAAAz4B,GAAA,WAAAnC,KAAA46B,cAAA,EAAA56B,KAAAq5B,SAAAvP,YAAA,cAAAD,SAAA,YAAA/I,QAAA,sBAAA,OAAArhB,GAAAyS,QAAA2mB,eAAA74B,MAAAq5B,SAAAl5B,GAAA,GAAAwjB,IAAA,kBAAAlkB,EAAA6O,MAAAnM,EAAAnC,OAAA84B,qBAAA54B,EAAAg5B,qBAAA/2B,EAAAd,KAAArB,SAAAE,EAAA0K,UAAAmT,OAAA,WAAA/d,KAAAA,KAAAq5B,SAAArP,SAAA,MAAA,OAAA,WAAA9pB,EAAA0K,UAAAkwB,UAAA,WAAA,MAAAr7B,GAAAO,KAAA+mB,QAAAjO,QAAA9E,KAAA,yCAAAhU,KAAA+mB,QAAAjO,OAAA,MAAAjX,KAAApC,EAAA6O,MAAA,SAAAnO,EAAAD,GAAA,GAAAiC,GAAA1C,EAAAS,EAAAF,MAAA+6B,yBAAAr7B,EAAAyC,GAAAA,IAAAnC,OAAAwE,OAAAtE,EAAA0K,UAAAmwB,yBAAA,SAAAt7B,EAAAC,GAAA,GAAAS,GAAAV,EAAAuqB,SAAA,KAAAvqB,GAAAsX,KAAA,gBAAA5W,GAAAT,EAAAqqB,YAAA,aAAA5pB,GAAA4W,KAAA,gBAAA5W,GAAA,IAAAgC,GAAA1C,EAAAkR,GAAAsqB,QAAAx7B,GAAAkR,GAAAsqB,SAAA96B,EAAAV,EAAAkR,GAAAsqB,SAAA9B,YAAAj5B,EAAAT,EAAAkR,GAAAsqB,SAAAzI,WAAA,WAAA,MAAA/yB,GAAAkR,GAAAsqB,SAAA94B,EAAAnC,MAAAP,EAAAI,UAAA6jB,GAAA,6BAAA,2BAAA,SAAAxjB,GAAA,GAAAiC,GAAA1C,EAAAO,KAAAmC,GAAA4U,KAAA,gBAAA7W,EAAAkgB,gBAAA,IAAAzc,GAAAjE,EAAAyC,GAAAyB,EAAAD,EAAA0M,KAAA,eAAAxM,EAAAD,EAAA,SAAAzB,EAAAkO,MAAAlQ,GAAAkB,KAAAsC,EAAAE,MAAAyuB,SAAA,SAAA7yB,GAAA,YAAA,SAAAC,GAAAA,GAAA,GAAAS,GAAAT,EAAAqX,KAAA,cAAA5W,KAAAA,EAAAT,EAAAqX,KAAA,QAAA5W,EAAAA,GAAA,YAAAsB,KAAAtB,IAAAA,EAAAkD,QAAA,iBAAA,IAAA,IAAAnD,GAAAC,GAAAV,EAAAU,EAAA,OAAAD,IAAAA,EAAAS,OAAAT,EAAAR,EAAAoZ,SAAA,QAAA3Y,GAAAA,GAAAA,GAAA,IAAAA,EAAAkjB,QAAA5jB,EAAA0C,GAAAyK,SAAAnN,EAAAkE,GAAA9B,KAAA,WAAA,GAAA3B,GAAAT,EAAAO,MAAAmC,EAAAzC,EAAAQ,GAAAyD,GAAA0d,cAAArhB,KAAAmC,GAAA6nB,SAAA,UAAA7pB,GAAA,SAAAA,EAAAU,MAAA,kBAAAY,KAAAtB,EAAAgY,OAAAqgB,UAAA/4B,EAAAiH,SAAAvE,EAAA,GAAAhC,EAAAgY,UAAAhW,EAAA2e,QAAA3gB,EAAAV,EAAA+gB,MAAA,mBAAA7c,IAAAxD,EAAAghB,uBAAAjhB,EAAA6W,KAAA,gBAAA,SAAA5U,EAAA2nB,YAAA,QAAAhJ,QAAArhB,EAAA+gB,MAAA,qBAAA7c,UAAA,QAAAzD,GAAAR,GAAA,MAAAM,MAAA6B,KAAA,WAAA,GAAA1B,GAAAV,EAAAO,MAAAE,EAAAC,EAAAkQ,KAAA,cAAAnQ,IAAAC,EAAAkQ,KAAA,cAAAnQ,EAAA,GAAA0D,GAAA5D,OAAA,gBAAAN,IAAAQ,EAAAR,GAAA2B,KAAAlB,KAAA,GAAAgC,GAAA,qBAAAwB,EAAA,2BAAAC,EAAA,SAAAlE,GAAAD,EAAAC,GAAAgkB,GAAA,oBAAA1jB,KAAA+d,QAAAna,GAAAq1B,QAAA,QAAAr1B,EAAAgH,UAAAmT,OAAA,SAAA7d,GAAA,GAAAiC,GAAA1C,EAAAO,KAAA,KAAAmC,EAAAoY,GAAA,wBAAA,CAAA,GAAA5W,GAAAjE,EAAAyC,GAAAyB,EAAAD,EAAAqmB,SAAA,OAAA,IAAA7pB,KAAAyD,EAAA,CAAA,gBAAA/D,UAAA8V,kBAAAhS,EAAAgX,QAAA,eAAAha,QAAAlB,EAAAI,SAAAO,cAAA,QAAAypB,SAAA,qBAAAtF,YAAA9kB,EAAAO,OAAA0jB,GAAA,QAAAvjB,EAAA,IAAA0D,IAAAwd,cAAArhB,KAAA,IAAA2D,EAAAmd,QAAA5gB,EAAAT,EAAA+gB,MAAA,mBAAA3c,IAAA3D,EAAAihB,qBAAA,MAAAhf,GAAA2e,QAAA,SAAA/J,KAAA,gBAAA,QAAApT,EAAAomB,YAAA,QAAAjJ,QAAArhB,EAAA+gB,MAAA,oBAAA3c,IAAA,OAAA,IAAAD,EAAAgH,UAAAwvB,QAAA,SAAAj6B,GAAA,GAAA,gBAAAsB,KAAAtB,EAAAkjB,SAAA,kBAAA5hB,KAAAtB,EAAAgY,OAAAqgB,SAAA,CAAA,GAAAt4B,GAAAT,EAAAO,KAAA,IAAAG,EAAAigB,iBAAAjgB,EAAAkgB,mBAAAngB,EAAAqa,GAAA,wBAAA,CAAA,GAAApY,GAAAzC,EAAAQ,GAAA0D,EAAAzB,EAAA6nB,SAAA,OAAA,KAAApmB,GAAA,IAAAzD,EAAAkjB,OAAAzf,GAAA,IAAAzD,EAAAkjB,MAAA,MAAA,KAAAljB,EAAAkjB,OAAAlhB,EAAA6R,KAAArQ,GAAAmd,QAAA,SAAA5gB,EAAA4gB,QAAA,QAAA,IAAAjd,GAAA,+BAAAtC,EAAAY,EAAA6R,KAAA,iBAAAnQ,EAAA,IAAAtC,EAAAZ,OAAA,CAAA,GAAAqD,GAAAzC,EAAAqZ,MAAAza,EAAAgY,OAAA,KAAAhY,EAAAkjB,OAAArf,EAAA,GAAAA,IAAA,IAAA7D,EAAAkjB,OAAArf,EAAAzC,EAAAZ,OAAA,GAAAqD,KAAAA,IAAAA,EAAA,GAAAzC,EAAAmH,GAAA1E,GAAA8c,QAAA,YAAA,IAAAjd,GAAApE,EAAAkR,GAAAuqB,QAAAz7B,GAAAkR,GAAAuqB,SAAAh7B,EAAAT,EAAAkR,GAAAuqB,SAAA/B,YAAAv1B,EAAAnE,EAAAkR,GAAAuqB,SAAA1I,WAAA,WAAA,MAAA/yB,GAAAkR,GAAAuqB,SAAAr3B,EAAA7D,MAAAP,EAAAI,UAAA6jB,GAAA,6BAAAvjB,GAAAujB,GAAA,6BAAA,iBAAA,SAAAjkB,GAAAA,EAAA4gB,oBAAAqD,GAAA,6BAAA/f,EAAAC,EAAAgH,UAAAmT,QAAA2F,GAAA,+BAAA/f,EAAAC,EAAAgH,UAAAwvB,SAAA1W,GAAA,+BAAA,iBAAA9f,EAAAgH,UAAAwvB,UAAA9H,SAAA,SAAA7yB,GAAA,YAAA,SAAAC,GAAAA,EAAAQ,GAAA,MAAAF,MAAA6B,KAAA,WAAA,GAAAM,GAAA1C,EAAAO,MAAA2D,EAAAxB,EAAAkO,KAAA,YAAAzM,EAAAnE,EAAAuI,UAAA7H,EAAAm5B,SAAAn3B,EAAAkO,OAAA,gBAAA3Q,IAAAA,EAAAiE,IAAAxB,EAAAkO,KAAA,WAAA1M,EAAA,GAAAxD,GAAAH,KAAA4D,IAAA,gBAAAlE,GAAAiE,EAAAjE,GAAAQ,GAAA0D,EAAAia,MAAAla,EAAAka,KAAA3d,KAAA,GAAAC,GAAA,SAAAT,EAAAS,GAAAH,KAAA+mB,QAAA5mB,EAAAH,KAAAm7B,MAAA17B,EAAAI,SAAA+E,MAAA5E,KAAAq5B,SAAA55B,EAAAC,GAAAM,KAAAo7B,QAAAp7B,KAAAq5B,SAAArlB,KAAA,iBAAAhU,KAAAq7B,UAAA,KAAAr7B,KAAAs7B,QAAA,KAAAt7B,KAAAu7B,gBAAA,KAAAv7B,KAAAw7B,eAAA,EAAAx7B,KAAAy7B,qBAAA,EAAAz7B,KAAA+mB,QAAA2U,QAAA17B,KAAAq5B,SAAArlB,KAAA,kBAAA4M,KAAA5gB,KAAA+mB,QAAA2U,OAAAj8B,EAAA6O,MAAA,WAAAtO,KAAAq5B,SAAAvY,QAAA,oBAAA9gB,OAAAG,GAAA84B,QAAA,QAAA94B,EAAA+4B,oBAAA,IAAA/4B,EAAAw7B,6BAAA,IAAAx7B,EAAAm5B,UAAAsC,UAAA,EAAAzB,UAAA,EAAAtc,MAAA,GAAA1d,EAAAyK,UAAAmT,OAAA,SAAAte,GAAA,MAAAO,MAAAs7B,QAAAt7B,KAAA8d,OAAA9d,KAAA6d,KAAApe,IAAAU,EAAAyK,UAAAiT,KAAA,SAAAne,GAAA,GAAAQ,GAAAF,KAAAmC,EAAA1C,EAAA+gB,MAAA,iBAAAa,cAAA3hB,GAAAM,MAAAq5B,SAAAvY,QAAA3e,GAAAnC,KAAAs7B,SAAAn5B,EAAAgf,uBAAAnhB,KAAAs7B,SAAA,EAAAt7B,KAAA67B,iBAAA77B,KAAA87B,eAAA97B,KAAAm7B,MAAAtR,SAAA,cAAA7pB,KAAAiX,SAAAjX,KAAA+7B,SAAA/7B,KAAAq5B,SAAA3V,GAAA,yBAAA,yBAAAjkB,EAAA6O,MAAAtO,KAAA8d,KAAA9d,OAAAA,KAAAo7B,QAAA1X,GAAA,6BAAA,WAAAxjB,EAAAm5B,SAAA1V,IAAA,2BAAA,SAAAjkB,GAAAD,EAAAC,EAAAyY,QAAAoC,GAAAra,EAAAm5B,YAAAn5B,EAAAu7B,qBAAA,OAAAz7B,KAAA47B,SAAA,WAAA,GAAAz5B,GAAA1C,EAAAyS,QAAA2mB,YAAA34B,EAAAm5B,SAAArP,SAAA,OAAA9pB,GAAAm5B,SAAAvgB,SAAAnY,QAAAT,EAAAm5B,SAAAhV,SAAAnkB,EAAAi7B,OAAAj7B,EAAAm5B,SAAAxb,OAAAsJ,UAAA,GAAAjnB,EAAA87B,eAAA75B,GAAAjC,EAAAm5B,SAAA,GAAAnK,YAAAhvB,EAAAm5B,SAAAxP,SAAA,MAAA3pB,EAAA+7B,cAAA,IAAAt4B,GAAAlE,EAAA+gB,MAAA,kBAAAa,cAAA3hB,GAAAyC,GAAAjC,EAAAk7B,QAAAzX,IAAA,kBAAA,WAAAzjB,EAAAm5B,SAAAvY,QAAA,SAAAA,QAAAnd,KAAAm1B,qBAAA34B,EAAA+4B,qBAAAh5B,EAAAm5B,SAAAvY,QAAA,SAAAA,QAAAnd,OAAAxD,EAAAyK,UAAAkT,KAAA,SAAApe,GAAAA,GAAAA,EAAA0gB,iBAAA1gB,EAAAD,EAAA+gB,MAAA,iBAAAxgB,KAAAq5B,SAAAvY,QAAAphB,GAAAM,KAAAs7B,UAAA57B,EAAAyhB,uBAAAnhB,KAAAs7B,SAAA,EAAAt7B,KAAAiX,SAAAjX,KAAA+7B,SAAAt8B,EAAAI,UAAAoH,IAAA,oBAAAjH,KAAAq5B,SAAAvP,YAAA,MAAA7iB,IAAA,0BAAAA,IAAA,4BAAAjH,KAAAo7B,QAAAn0B,IAAA,8BAAAxH,EAAAyS,QAAA2mB,YAAA74B,KAAAq5B,SAAArP,SAAA,QAAAhqB,KAAAq5B,SAAA1V,IAAA,kBAAAlkB,EAAA6O,MAAAtO,KAAAk8B,UAAAl8B,OAAA84B,qBAAA34B,EAAA+4B,qBAAAl5B,KAAAk8B,cAAA/7B,EAAAyK,UAAAqxB,aAAA,WAAAx8B,EAAAI,UAAAoH,IAAA,oBAAAyc,GAAA,mBAAAjkB,EAAA6O,MAAA,SAAA7O,GAAAI,WAAAJ,EAAA0Y,QAAAnY,KAAAq5B,SAAA,KAAA55B,EAAA0Y,QAAAnY,KAAAq5B,SAAArhB,IAAAvY,EAAA0Y,QAAAxX,QAAAX,KAAAq5B,SAAAvY,QAAA,UAAA9gB,QAAAG,EAAAyK,UAAAqM,OAAA,WAAAjX,KAAAs7B,SAAAt7B,KAAA+mB,QAAAoT,SAAAn6B,KAAAq5B,SAAA3V,GAAA,2BAAAjkB,EAAA6O,MAAA,SAAA7O,GAAA,IAAAA,EAAA4jB,OAAArjB,KAAA8d,QAAA9d,OAAAA,KAAAs7B,SAAAt7B,KAAAq5B,SAAApyB,IAAA,6BAAA9G,EAAAyK,UAAAmxB,OAAA,WAAA/7B,KAAAs7B,QAAA77B,EAAAM,QAAA2jB,GAAA,kBAAAjkB,EAAA6O,MAAAtO,KAAAm8B,aAAAn8B,OAAAP,EAAAM,QAAAkH,IAAA,oBAAA9G,EAAAyK,UAAAsxB,UAAA,WAAA,GAAAz8B,GAAAO,IAAAA,MAAAq5B,SAAAvb,OAAA9d,KAAA47B,SAAA,WAAAn8B,EAAA07B,MAAArR,YAAA,cAAArqB,EAAA28B,mBAAA38B,EAAA48B,iBAAA58B,EAAA45B,SAAAvY,QAAA,sBAAA3gB,EAAAyK,UAAA0xB,eAAA,WAAAt8B,KAAAq7B,WAAAr7B,KAAAq7B,UAAAzuB,SAAA5M,KAAAq7B,UAAA,MAAAl7B,EAAAyK,UAAAgxB,SAAA,SAAAl8B,GAAA,GAAAQ,GAAAF,KAAAmC,EAAAnC,KAAAq5B,SAAArP,SAAA,QAAA,OAAA,EAAA,IAAAhqB,KAAAs7B,SAAAt7B,KAAA+mB,QAAA6U,SAAA,CAAA,GAAAj4B,GAAAlE,EAAAyS,QAAA2mB,YAAA12B,CAAA,IAAAnC,KAAAq7B,UAAA57B,EAAAI,SAAAO,cAAA,QAAAypB,SAAA,kBAAA1nB,GAAAkiB,SAAArkB,KAAAm7B,OAAAn7B,KAAAq5B,SAAA3V,GAAA,yBAAAjkB,EAAA6O,MAAA,SAAA7O,GAAA,MAAAO,MAAAy7B,yBAAAz7B,KAAAy7B,qBAAA,QAAAh8B,EAAA0Y,SAAA1Y,EAAAsgB,gBAAA,UAAA/f,KAAA+mB,QAAA6U,SAAA57B,KAAAq5B,SAAA,GAAA9gB,QAAAvY,KAAA8d,UAAA9d,OAAA2D,GAAA3D,KAAAq7B,UAAA,GAAAnM,YAAAlvB,KAAAq7B,UAAAxR,SAAA,OAAAnqB,EAAA,MAAAiE,GAAA3D,KAAAq7B,UAAA1X,IAAA,kBAAAjkB,GAAAo5B,qBAAA34B,EAAAw7B,8BAAAj8B,QAAA,KAAAM,KAAAs7B,SAAAt7B,KAAAq7B,UAAA,CAAAr7B,KAAAq7B,UAAAvR,YAAA,KAAA,IAAAlmB,GAAA,WAAA1D,EAAAo8B,iBAAA58B,GAAAA,IAAAD,GAAAyS,QAAA2mB,YAAA74B,KAAAq5B,SAAArP,SAAA,QAAAhqB,KAAAq7B,UAAA1X,IAAA,kBAAA/f,GAAAk1B,qBAAA34B,EAAAw7B,8BAAA/3B,QAAAlE,IAAAA,KAAAS,EAAAyK,UAAAuxB,aAAA,WAAAn8B,KAAAg8B,gBAAA77B,EAAAyK,UAAAoxB,aAAA,WAAA,GAAAv8B,GAAAO,KAAAq5B,SAAA,GAAAkD,aAAA18B,SAAA8V,gBAAA6mB,YAAAx8B,MAAAq5B,SAAAt1B,KAAA04B,aAAAz8B,KAAA08B,mBAAAj9B,EAAAO,KAAAw7B,eAAA,GAAAmB,aAAA38B,KAAA08B,oBAAAj9B,EAAAO,KAAAw7B,eAAA,MAAAr7B,EAAAyK,UAAAwxB,iBAAA,WAAAp8B,KAAAq5B,SAAAt1B,KAAA04B,YAAA,GAAAE,aAAA,MAAAx8B,EAAAyK,UAAAixB,eAAA,WAAA,GAAAp8B,GAAAM,OAAA68B,UAAA,KAAAn9B,EAAA,CAAA,GAAAC,GAAAG,SAAA8V,gBAAA8Q,uBAAAhnB,GAAAC,EAAAm9B,MAAAzyB,KAAA0yB,IAAAp9B,EAAAgnB,MAAA1mB,KAAA08B,kBAAA78B,SAAA+E,KAAAm4B,YAAAt9B,EAAAO,KAAAw7B,eAAAx7B,KAAAg9B,oBAAA78B,EAAAyK,UAAAkxB,aAAA,WAAA,GAAAr8B,GAAAiqB,SAAA1pB,KAAAm7B,MAAAp3B,IAAA,kBAAA,EAAA,GAAA/D,MAAAu7B,gBAAA17B,SAAA+E,KAAAP,MAAAs4B,cAAA,GAAA38B,KAAA08B,mBAAA18B,KAAAm7B,MAAAp3B,IAAA,gBAAAtE,EAAAO,KAAAw7B,iBAAAr7B,EAAAyK,UAAAyxB,eAAA,WAAAr8B,KAAAm7B,MAAAp3B,IAAA,gBAAA/D,KAAAu7B,kBAAAp7B,EAAAyK,UAAAoyB,iBAAA,WAAA,GAAAv9B,GAAAI,SAAAO,cAAA,MAAAX,GAAAyW,UAAA,0BAAAlW,KAAAm7B,MAAArX,OAAArkB,EAAA,IAAAC,GAAAD,EAAAyvB,YAAAzvB,EAAAs9B,WAAA,OAAA/8B,MAAAm7B,MAAA,GAAA16B,YAAAhB,GAAAC,EAAA,IAAAQ,GAAAT,EAAAkR,GAAAsjB,KAAAx0B,GAAAkR,GAAAsjB,MAAAv0B,EAAAD,EAAAkR,GAAAsjB,MAAAkF,YAAAh5B,EAAAV,EAAAkR,GAAAsjB,MAAAzB,WAAA,WAAA,MAAA/yB,GAAAkR,GAAAsjB,MAAA/zB,EAAAF,MAAAP,EAAAI,UAAA6jB,GAAA,0BAAA,wBAAA,SAAAvjB,GAAA,GAAAD,GAAAT,EAAAO,MAAAmC,EAAAjC,EAAA6W,KAAA,QAAApT,EAAAlE,EAAAS,EAAA6W,KAAA,gBAAA5U,GAAAA,EAAAkB,QAAA,iBAAA,KAAAO,EAAAD,EAAA0M,KAAA,YAAA,SAAA5Q,EAAAuI,QAAA0zB,QAAA,IAAAj6B,KAAAU,IAAAA,GAAAwB,EAAA0M,OAAAnQ,EAAAmQ,OAAAnQ,GAAAqa,GAAA,MAAApa,EAAAigB,iBAAAzc,EAAAggB,IAAA,gBAAA,SAAAlkB,GAAAA,EAAA0hB,sBAAAxd,EAAAggB,IAAA,kBAAA,WAAAzjB,EAAAqa,GAAA,aAAAra,EAAA4gB,QAAA,aAAAphB,EAAA2B,KAAAsC,EAAAC,EAAA5D,SAAAsyB,SAAA,SAAA7yB,GAAA,YAAA,SAAAC,GAAAA,GAAA,MAAAM,MAAA6B,KAAA,WAAA,GAAA3B,GAAAT,EAAAO,MAAAmC,EAAAjC,EAAAmQ,KAAA,cAAA1M,EAAA,gBAAAjE,IAAAA,GAAAyC,GAAA,eAAAV,KAAA/B,KAAAyC,GAAAjC,EAAAmQ,KAAA,aAAAlO,EAAA,GAAAhC,GAAAH,KAAA2D,IAAA,gBAAAjE,IAAAyC,EAAAzC,QAAA,GAAAS,GAAA,SAAAV,EAAAC,GAAAM,KAAAa,KAAA,KAAAb,KAAA+mB,QAAA,KAAA/mB,KAAA2Y,QAAA,KAAA3Y,KAAAuuB,QAAA,KAAAvuB,KAAAi9B,WAAA,KAAAj9B,KAAAq5B,SAAA,KAAAr5B,KAAAk9B,QAAA,KAAAl9B,KAAA6K,KAAA,UAAApL,EAAAC,GAAAS,GAAA84B,QAAA,QAAA94B,EAAA+4B,oBAAA,IAAA/4B,EAAAm5B,UAAA6D,WAAA,EAAAC,UAAA,MAAAnjB,UAAA,EAAAojB,SAAA,+GAAAvc,QAAA,cAAAwc,MAAA,GAAAzU,MAAA,EAAAlgB,MAAA,EAAA40B,WAAA,EAAAC,UAAAvjB,SAAA,OAAA2M,QAAA,IAAAzmB,EAAAyK,UAAAC,KAAA,SAAAnL,EAAAS,EAAAD,GAAA,GAAAF,KAAA2Y,SAAA,EAAA3Y,KAAAa,KAAAnB,EAAAM,KAAAq5B,SAAA55B,EAAAU,GAAAH,KAAA+mB,QAAA/mB,KAAAy9B,WAAAv9B,GAAAF,KAAA09B,UAAA19B,KAAA+mB,QAAAyW,UAAA/9B,EAAAA,EAAA0B,WAAAnB,KAAA+mB,QAAAyW,UAAAx9B,KAAA+mB,QAAAyW,SAAAn8B,KAAArB,KAAAA,KAAAq5B,UAAAr5B,KAAA+mB,QAAAyW,SAAAvjB,UAAAja,KAAA+mB,QAAAyW,UAAAx9B,KAAAk9B,SAAAlc,OAAA,EAAAyJ,OAAA,EAAAlS,OAAA,GAAAvY,KAAAq5B,SAAA,YAAAx5B,UAAAmR,cAAAhR,KAAA+mB,QAAA9M,SAAA,KAAA,IAAAna,OAAA,yDAAAE,KAAAa,KAAA,kCAAA,KAAA,GAAAsB,GAAAnC,KAAA+mB,QAAAjG,QAAA5Q,MAAA,KAAAvM,EAAAxB,EAAAxB,OAAAgD,KAAA,CAAA,GAAAC,GAAAzB,EAAAwB,EAAA,IAAA,SAAAC,EAAA5D,KAAAq5B,SAAA3V,GAAA,SAAA1jB,KAAAa,KAAAb,KAAA+mB,QAAA9M,SAAAxa,EAAA6O,MAAAtO,KAAA+d,OAAA/d,WAAA,IAAA,UAAA4D,EAAA,CAAA,GAAAC,GAAA,SAAAD,EAAA,aAAA,UAAArC,EAAA,SAAAqC,EAAA,aAAA,UAAA5D,MAAAq5B,SAAA3V,GAAA7f,EAAA,IAAA7D,KAAAa,KAAAb,KAAA+mB,QAAA9M,SAAAxa,EAAA6O,MAAAtO,KAAA29B,MAAA39B,OAAAA,KAAAq5B,SAAA3V,GAAAniB,EAAA,IAAAvB,KAAAa,KAAAb,KAAA+mB,QAAA9M,SAAAxa,EAAA6O,MAAAtO,KAAA49B,MAAA59B,QAAAA,KAAA+mB,QAAA9M,SAAAja,KAAA69B,SAAAp+B,EAAAuI,UAAAhI,KAAA+mB,SAAAjG,QAAA,SAAA7G,SAAA,KAAAja,KAAA89B,YAAA39B,EAAAyK,UAAAmzB,YAAA,WAAA,MAAA59B,GAAAm5B,UAAAn5B,EAAAyK,UAAA6yB,WAAA,SAAA/9B,GAAA,MAAAA,GAAAD,EAAAuI,UAAAhI,KAAA+9B,cAAA/9B,KAAAq5B,SAAAhpB,OAAA3Q,GAAAA,EAAAmpB,OAAA,gBAAAnpB,GAAAmpB,QAAAnpB,EAAAmpB,OAAAhL,KAAAne,EAAAmpB,MAAA/K,KAAApe,EAAAmpB,QAAAnpB,GAAAS,EAAAyK,UAAAozB,mBAAA,WAAA,GAAAt+B,MAAAS,EAAAH,KAAA+9B,aAAA,OAAA/9B,MAAA69B,UAAAp+B,EAAAoC,KAAA7B,KAAA69B,SAAA,SAAAp+B,EAAAS,GAAAC,EAAAV,IAAAS,IAAAR,EAAAD,GAAAS,KAAAR,GAAAS,EAAAyK,UAAA+yB,MAAA,SAAAj+B,GAAA,GAAAS,GAAAT,YAAAM,MAAAgR,YAAAtR,EAAAD,EAAAC,EAAAqgB,eAAA1P,KAAA,MAAArQ,KAAAa,KAAA,OAAAV,KAAAA,EAAA,GAAAH,MAAAgR,YAAAtR,EAAAqgB,cAAA/f,KAAAg+B,sBAAAv+B,EAAAC,EAAAqgB,eAAA1P,KAAA,MAAArQ,KAAAa,KAAAV,IAAAT,YAAAD,GAAA+gB,QAAArgB,EAAA+8B,QAAA,WAAAx9B,EAAAmB,KAAA,QAAA,UAAA,GAAAV,EAAA89B,MAAAjU,SAAA,OAAA,MAAA7pB,EAAA88B,gBAAA98B,EAAA88B,WAAA,OAAAnU,aAAA3oB,EAAAouB,SAAApuB,EAAA88B,WAAA,KAAA98B,EAAA4mB,QAAA8B,OAAA1oB,EAAA4mB,QAAA8B,MAAAhL,UAAA1d,EAAAouB,QAAArjB,WAAA,WAAA,MAAA/K,EAAA88B,YAAA98B,EAAA0d,QAAA1d,EAAA4mB,QAAA8B,MAAAhL,OAAA1d,EAAA0d,SAAA1d,EAAAyK,UAAAszB,cAAA,WAAA,IAAA,GAAAz+B,KAAAO,MAAAk9B,QAAA,GAAAl9B,KAAAk9B,QAAAz9B,GAAA,OAAA,CAAA,QAAA,GAAAU,EAAAyK,UAAAgzB,MAAA,SAAAl+B,GAAA,GAAAS,GAAAT,YAAAM,MAAAgR,YAAAtR,EAAAD,EAAAC,EAAAqgB,eAAA1P,KAAA,MAAArQ,KAAAa,KAAA,IAAAV,IAAAA,EAAA,GAAAH,MAAAgR,YAAAtR,EAAAqgB,cAAA/f,KAAAg+B,sBAAAv+B,EAAAC,EAAAqgB,eAAA1P,KAAA,MAAArQ,KAAAa,KAAAV,IAAAT,YAAAD,GAAA+gB,QAAArgB,EAAA+8B,QAAA,YAAAx9B,EAAAmB,KAAA,QAAA,UAAA,IAAAV,EAAA+9B,gBAAA,MAAApV,cAAA3oB,EAAAouB,SAAApuB,EAAA88B,WAAA,MAAA98B,EAAA4mB,QAAA8B,OAAA1oB,EAAA4mB,QAAA8B,MAAA/K,UAAA3d,EAAAouB,QAAArjB,WAAA,WAAA,OAAA/K,EAAA88B,YAAA98B,EAAA2d,QAAA3d,EAAA4mB,QAAA8B,MAAA/K,OAAA3d,EAAA2d,QAAA3d,EAAAyK,UAAAiT,KAAA,WAAA,GAAAne,GAAAD,EAAA+gB,MAAA,WAAAxgB,KAAAa,KAAA,IAAAb,KAAAmuB,cAAAnuB,KAAA2Y,QAAA,CAAA3Y,KAAAq5B,SAAAvY,QAAAphB,EAAA,IAAAQ,GAAAT,EAAAiH,SAAA1G,KAAAq5B,SAAA,GAAA30B,cAAAiR,gBAAA3V,KAAAq5B,SAAA,GAAA,IAAA35B,EAAAyhB,uBAAAjhB,EAAA,MAAA,IAAAiC,GAAAnC,KAAA2D,EAAA3D,KAAAi+B,MAAAr6B,EAAA5D,KAAAm+B,OAAAn+B,KAAAa,KAAAb,MAAAo+B,aAAAz6B,EAAAoT,KAAA,KAAAnT,GAAA5D,KAAAq5B,SAAAtiB,KAAA,mBAAAnT,GAAA5D,KAAA+mB,QAAAoW,WAAAx5B,EAAAkmB,SAAA,OAAA,IAAAhmB,GAAA,kBAAA7D,MAAA+mB,QAAAqW,UAAAp9B,KAAA+mB,QAAAqW,UAAA/7B,KAAArB,KAAA2D,EAAA,GAAA3D,KAAAq5B,SAAA,IAAAr5B,KAAA+mB,QAAAqW,UAAA77B,EAAA,eAAAyC,EAAAzC,EAAAE,KAAAoC,EAAAG,KAAAH,EAAAA,EAAAR,QAAA9B,EAAA,KAAA,OAAAoC,EAAAkgB,SAAA9f,KAAA+R,IAAA,EAAA4Q,KAAA,EAAA5hB,QAAA,UAAA+kB,SAAAhmB,GAAAwM,KAAA,MAAArQ,KAAAa,KAAAb,MAAAA,KAAA+mB,QAAAwW,UAAA55B,EAAA0gB,SAAArkB,KAAA+mB,QAAAwW,WAAA55B,EAAA4gB,YAAAvkB,KAAAq5B,UAAAr5B,KAAAq5B,SAAAvY,QAAA,eAAA9gB,KAAAa,KAAA,IAAAqD,GAAAlE,KAAAq+B,cAAA74B,EAAA7B,EAAA,GAAAurB,YAAAxpB,EAAA/B,EAAA,GAAAwrB,YAAA,IAAAnrB,EAAA,CAAA,GAAA2B,GAAA9B,EAAA+B,EAAA5F,KAAAq+B,YAAAr+B,KAAA09B,UAAA75B,GAAA,UAAAA,GAAAK,EAAAo6B,OAAA54B,EAAAE,EAAA04B,OAAA,MAAA,OAAAz6B,GAAAK,EAAA4R,IAAApQ,EAAAE,EAAAkQ,IAAA,SAAA,SAAAjS,GAAAK,EAAA24B,MAAAr3B,EAAAI,EAAA6D,MAAA,OAAA,QAAA5F,GAAAK,EAAAwiB,KAAAlhB,EAAAI,EAAA8gB,KAAA,QAAA7iB,EAAAF,EAAAmmB,YAAAnkB,GAAAkkB,SAAAhmB,GAAA,GAAA5D,GAAAD,KAAAu+B,oBAAA16B,EAAAK,EAAAsB,EAAAE,EAAA1F,MAAAw+B,eAAAv+B,EAAA4D,EAAA,IAAAyE,GAAA,WAAA,GAAA7I,GAAA0C,EAAA86B,UAAA96B,GAAAk3B,SAAAvY,QAAA,YAAA3e,EAAAtB,MAAAsB,EAAA86B,WAAA,KAAA,OAAAx9B,GAAA0C,EAAAy7B,MAAAz7B,GAAA1C,GAAAyS,QAAA2mB,YAAA74B,KAAAy+B,KAAAzU,SAAA,QAAArmB,EAAAggB,IAAA,kBAAArb,GAAAwwB,qBAAA34B,EAAA+4B,qBAAA5wB,MAAAnI,EAAAyK,UAAA4zB,eAAA,SAAA9+B,EAAAS,GAAA,GAAAD,GAAAF,KAAAi+B,MAAA97B,EAAAjC,EAAA,GAAAgvB,YAAAvrB,EAAAzD,EAAA,GAAAivB,aAAAvrB,EAAA8lB,SAAAxpB,EAAA6D,IAAA,cAAA,IAAAF,EAAA6lB,SAAAxpB,EAAA6D,IAAA,eAAA,GAAA8N,OAAAjO,KAAAA,EAAA,GAAAiO,MAAAhO,KAAAA,EAAA,GAAAnE,EAAAoW,KAAAlS,EAAAlE,EAAAgnB,MAAA7iB,EAAApE,EAAAwxB,OAAAC,UAAAhxB,EAAA,GAAAT,EAAAuI,QAAAmpB,MAAA,SAAA1xB,GAAAS,EAAA6D,KAAA+R,IAAA1L,KAAAs0B,MAAAj/B,EAAAqW,KAAA4Q,KAAAtc,KAAAs0B,MAAAj/B,EAAAinB,UAAAhnB,GAAA,GAAAQ,EAAA2pB,SAAA,KAAA,IAAAtoB,GAAArB,EAAA,GAAAgvB,YAAAlrB,EAAA9D,EAAA,GAAAivB,YAAA,QAAAhvB,GAAA6D,GAAAL,IAAAjE,EAAAoW,IAAApW,EAAAoW,IAAAnS,EAAAK,EAAA,IAAAE,GAAAlE,KAAA2+B,yBAAAx+B,EAAAT,EAAA6B,EAAAyC,EAAAE,GAAAwiB,KAAAhnB,EAAAgnB,MAAAxiB,EAAAwiB,KAAAhnB,EAAAoW,KAAA5R,EAAA4R,GAAA,IAAAtQ,GAAA,aAAA/D,KAAAtB,GAAAuF,EAAAF,EAAA,EAAAtB,EAAAwiB,KAAAvkB,EAAAZ,EAAA,EAAA2C,EAAA4R,IAAAnS,EAAAK,EAAA2B,EAAAH,EAAA,cAAA,cAAAtF,GAAA+wB,OAAAvxB,GAAAM,KAAA4+B,aAAAl5B,EAAAxF,EAAA,GAAAyF,GAAAH,IAAArF,EAAAyK,UAAAg0B,aAAA,SAAAn/B,EAAAC,EAAAS,GAAAH,KAAA6+B,QAAA96B,IAAA5D,EAAA,OAAA,MAAA,IAAA,EAAAV,EAAAC,GAAA,KAAAqE,IAAA5D,EAAA,MAAA,OAAA,KAAAA,EAAAyK,UAAAwzB,WAAA,WAAA,GAAA3+B,GAAAO,KAAAi+B,MAAAv+B,EAAAM,KAAA8+B,UAAAr/B,GAAAuU,KAAA,kBAAAhU,KAAA+mB,QAAApe,KAAA,OAAA,QAAAjJ,GAAAD,EAAAqqB,YAAA,kCAAA3pB,EAAAyK,UAAAkT,KAAA,SAAApe,GAAA,QAAAQ,KAAA,MAAAiC,EAAA86B,YAAAt5B,EAAAkgB,SAAA1hB,EAAAk3B,UAAAl3B,EAAAk3B,SAAAjQ,WAAA,oBAAAtI,QAAA,aAAA3e,EAAAtB,MAAAnB,GAAAA,IAAA,GAAAyC,GAAAnC,KAAA2D,EAAAlE,EAAAO,KAAAy+B,MAAA76B,EAAAnE,EAAA+gB,MAAA,WAAAxgB,KAAAa,KAAA,IAAAb,KAAAq5B,SAAAvY,QAAAld,IAAAA,EAAAud,qBAAA,MAAAxd,GAAAmmB,YAAA,MAAArqB,EAAAyS,QAAA2mB,YAAAl1B,EAAAqmB,SAAA,QAAArmB,EAAAggB,IAAA,kBAAAzjB,GAAA44B,qBAAA34B,EAAA+4B,qBAAAh5B,IAAAF,KAAAi9B,WAAA,KAAAj9B,MAAAG,EAAAyK,UAAAkzB,SAAA,WAAA,GAAAr+B,GAAAO,KAAAq5B,UAAA55B,EAAAsX,KAAA,UAAA,gBAAAtX,GAAAsX,KAAA,yBAAAtX,EAAAsX,KAAA,sBAAAtX,EAAAsX,KAAA,UAAA,IAAAA,KAAA,QAAA,KAAA5W,EAAAyK,UAAAujB,WAAA,WAAA,MAAAnuB,MAAA8+B,YAAA3+B,EAAAyK,UAAAyzB,YAAA,SAAA3+B,GAAAA,EAAAA,GAAAM,KAAAq5B,QAAA,IAAAl5B,GAAAT,EAAA,GAAAQ,EAAA,QAAAC,EAAAq4B,QAAAr2B,EAAAhC,EAAAsmB,uBAAA,OAAAtkB,EAAAsH,QAAAtH,EAAA1C,EAAAuI,UAAA7F,GAAAsH,MAAAtH,EAAA06B,MAAA16B,EAAAukB,KAAAhb,OAAAvJ,EAAAm8B,OAAAn8B,EAAA2T,MAAA,IAAAnS,GAAA5D,OAAAg/B,YAAA5+B,YAAAJ,QAAAg/B,WAAAn7B,EAAA1D,GAAA4V,IAAA,EAAA4Q,KAAA,GAAA/iB,EAAA,KAAAjE,EAAAuxB,SAAAptB,GAAAm7B,OAAA9+B,EAAAL,SAAA8V,gBAAAwR,WAAAtnB,SAAA+E,KAAAuiB,UAAAznB,EAAAynB,aAAA5lB,EAAArB,GAAAuJ,MAAAhK,EAAAM,QAAA0J,QAAAiC,OAAAjM,EAAAM,QAAA2L,UAAA,IAAA,OAAAjM,GAAAuI,UAAA7F,EAAA0B,EAAAtC,EAAAqC,IAAAzD,EAAAyK,UAAA2zB,oBAAA,SAAA9+B,EAAAC,EAAAS,EAAAD,GAAA,MAAA,UAAAT,GAAAqW,IAAApW,EAAAoW,IAAApW,EAAAgM,OAAAgb,KAAAhnB,EAAAgnB,KAAAhnB,EAAA+J,MAAA,EAAAtJ,EAAA,GAAA,OAAAV,GAAAqW,IAAApW,EAAAoW,IAAA5V,EAAAwmB,KAAAhnB,EAAAgnB,KAAAhnB,EAAA+J,MAAA,EAAAtJ,EAAA,GAAA,QAAAV,GAAAqW,IAAApW,EAAAoW,IAAApW,EAAAgM,OAAA,EAAAxL,EAAA,EAAAwmB,KAAAhnB,EAAAgnB,KAAAvmB,IAAA2V,IAAApW,EAAAoW,IAAApW,EAAAgM,OAAA,EAAAxL,EAAA,EAAAwmB,KAAAhnB,EAAAgnB,KAAAhnB,EAAA+J,QAAAtJ,EAAAyK,UAAA+zB,yBAAA,SAAAl/B,EAAAC,EAAAS,EAAAD,GAAA,GAAAiC,IAAA2T,IAAA,EAAA4Q,KAAA,EAAA,KAAA1mB,KAAA09B,UAAA,MAAAv7B,EAAA,IAAAwB,GAAA3D,KAAA+mB,QAAAyW,UAAAx9B,KAAA+mB,QAAAyW,SAAA5W,SAAA,EAAAhjB,EAAA5D,KAAAq+B,YAAAr+B,KAAA09B,UAAA,IAAA,aAAAj8B,KAAAhC,GAAA,CAAA,GAAAoE,GAAAnE,EAAAoW,IAAAnS,EAAAC,EAAAo7B,OAAAz9B,EAAA7B,EAAAoW,IAAAnS,EAAAC,EAAAo7B,OAAA9+B,CAAA2D,GAAAD,EAAAkS,IAAA3T,EAAA2T,IAAAlS,EAAAkS,IAAAjS,EAAAtC,EAAAqC,EAAAkS,IAAAlS,EAAA8H,SAAAvJ,EAAA2T,IAAAlS,EAAAkS,IAAAlS,EAAA8H,OAAAnK,OAAA,CAAA,GAAAyC,GAAAtE,EAAAgnB,KAAA/iB,EAAAO,EAAAxE,EAAAgnB,KAAA/iB,EAAAxD,CAAA6D,GAAAJ,EAAA8iB,KAAAvkB,EAAAukB,KAAA9iB,EAAA8iB,KAAA1iB,EAAAE,EAAAN,EAAAi5B,QAAA16B,EAAAukB,KAAA9iB,EAAA8iB,KAAA9iB,EAAA6F,MAAAvF,GAAA,MAAA/B,IAAAhC,EAAAyK,UAAAk0B,SAAA,WAAA,GAAAr/B,GAAAC,EAAAM,KAAAq5B,SAAAl5B,EAAAH,KAAA+mB,OAAA,OAAAtnB,GAAAC,EAAAqX,KAAA,yBAAA,kBAAA5W,GAAAm9B,MAAAn9B,EAAAm9B,MAAAj8B,KAAA3B,EAAA,IAAAS,EAAAm9B,QAAAn9B,EAAAyK,UAAAuzB,OAAA,SAAA1+B,GAAA,EAAAA,OAAA,IAAA2K,KAAAqH,gBAAA5R,SAAAyS,eAAA7S,GAAA,OAAAA,IAAAU,EAAAyK,UAAAqzB,IAAA,WAAA,IAAAj+B,KAAAy+B,OAAAz+B,KAAAy+B,KAAAh/B,EAAAO,KAAA+mB,QAAAsW,UAAA,GAAAr9B,KAAAy+B,KAAA99B,QAAA,KAAA,IAAAb,OAAAE,KAAAa,KAAA,kEAAA,OAAAb,MAAAy+B,MAAAt+B,EAAAyK,UAAAi0B,MAAA,WAAA,MAAA7+B,MAAAi/B,OAAAj/B,KAAAi/B,QAAAj/B,KAAAi+B,MAAAjqB,KAAA,mBAAA7T,EAAAyK,UAAAs0B,OAAA,WAAAl/B,KAAA2Y,SAAA,GAAAxY,EAAAyK,UAAAgR,QAAA,WAAA5b,KAAA2Y,SAAA,GAAAxY,EAAAyK,UAAAu0B,cAAA,WAAAn/B,KAAA2Y,SAAA3Y,KAAA2Y,SAAAxY,EAAAyK,UAAAmT,OAAA,SAAAre,GAAA,GAAAS,GAAAH,IAAAN,KAAAS,EAAAV,EAAAC,EAAAqgB,eAAA1P,KAAA,MAAArQ,KAAAa,MAAAV,IAAAA,EAAA,GAAAH,MAAAgR,YAAAtR,EAAAqgB,cAAA/f,KAAAg+B,sBAAAv+B,EAAAC,EAAAqgB,eAAA1P,KAAA,MAAArQ,KAAAa,KAAAV,KAAAT,GAAAS,EAAA+8B,QAAAlc,OAAA7gB,EAAA+8B,QAAAlc,MAAA7gB,EAAA+9B,gBAAA/9B,EAAAw9B,MAAAx9B,GAAAA,EAAAy9B,MAAAz9B,IAAAA,EAAA89B,MAAAjU,SAAA,MAAA7pB,EAAAy9B,MAAAz9B,GAAAA,EAAAw9B,MAAAx9B,IAAAA,EAAAyK,UAAAw0B,QAAA,WAAA,GAAA3/B,GAAAO,IAAA8oB,cAAA9oB,KAAAuuB,SAAAvuB,KAAA8d,KAAA,WAAAre,EAAA45B,SAAApyB,IAAA,IAAAxH,EAAAoB,MAAA0c,WAAA,MAAA9d,EAAAoB,MAAApB,EAAAg/B,MAAAh/B,EAAAg/B,KAAA5a,SAAApkB,EAAAg/B,KAAA,KAAAh/B,EAAAw/B,OAAA,KAAAx/B,EAAAi+B,UAAA,KAAAj+B,EAAA45B,SAAA,OAAA,IAAAn5B,GAAAT,EAAAkR,GAAA0uB,OAAA5/B,GAAAkR,GAAA0uB,QAAA3/B,EAAAD,EAAAkR,GAAA0uB,QAAAlG,YAAAh5B,EAAAV,EAAAkR,GAAA0uB,QAAA7M,WAAA,WAAA,MAAA/yB,GAAAkR,GAAA0uB,QAAAn/B,EAAAF,OAAAsyB,SAAA,SAAA7yB,GAAA,YAAA,SAAAC,GAAAA,GAAA,MAAAM,MAAA6B,KAAA,WAAA,GAAA3B,GAAAT,EAAAO,MAAAmC,EAAAjC,EAAAmQ,KAAA,cAAA1M,EAAA,gBAAAjE,IAAAA,GAAAyC,GAAA,eAAAV,KAAA/B,KAAAyC,GAAAjC,EAAAmQ,KAAA,aAAAlO,EAAA,GAAAhC,GAAAH,KAAA2D,IAAA,gBAAAjE,IAAAyC,EAAAzC,QAAA,GAAAS,GAAA,SAAAV,EAAAC,GAAAM,KAAA6K,KAAA,UAAApL,EAAAC,GAAA,KAAAD,EAAAkR,GAAA0uB,QAAA,KAAA,IAAAv/B,OAAA,8BAAAK,GAAA84B,QAAA,QAAA94B,EAAAm5B,SAAA75B,EAAAuI,UAAAvI,EAAAkR,GAAA0uB,QAAAlG,YAAAG,UAAA8D,UAAA,QAAAtc,QAAA,QAAAxF,QAAA,GAAA+hB,SAAA,0IAAAl9B,EAAAyK,UAAAnL,EAAAuI,UAAAvI,EAAAkR,GAAA0uB,QAAAlG,YAAAvuB,WAAAzK,EAAAyK,UAAAoG,YAAA7Q,EAAAA,EAAAyK,UAAAmzB,YAAA,WAAA,MAAA59B,GAAAm5B,UAAAn5B,EAAAyK,UAAAwzB,WAAA,WAAA,GAAA3+B,GAAAO,KAAAi+B,MAAAv+B,EAAAM,KAAA8+B,WAAA3+B,EAAAH,KAAAs/B,YAAA7/B,GAAAuU,KAAA,kBAAAhU,KAAA+mB,QAAApe,KAAA,OAAA,QAAAjJ,GAAAD,EAAAuU,KAAA,oBAAAyG,WAAAoJ,SAAArf,MAAAxE,KAAA+mB,QAAApe,KAAA,gBAAAxI,GAAA,OAAA,SAAA,QAAAA,GAAAV,EAAAqqB,YAAA,iCAAArqB,EAAAuU,KAAA,kBAAArL,QAAAlJ,EAAAuU,KAAA,kBAAA8J,QAAA3d,EAAAyK,UAAAujB,WAAA,WAAA,MAAAnuB,MAAA8+B,YAAA9+B,KAAAs/B,cAAAn/B,EAAAyK,UAAA00B,WAAA,WAAA,GAAA7/B,GAAAO,KAAAq5B,SAAA35B,EAAAM,KAAA+mB,OAAA,OAAAtnB,GAAAsX,KAAA,kBAAA,kBAAArX,GAAA4b,QAAA5b,EAAA4b,QAAAja,KAAA5B,EAAA,IAAAC,EAAA4b,UAAAnb,EAAAyK,UAAAi0B,MAAA,WAAA,MAAA7+B,MAAAi/B,OAAAj/B,KAAAi/B,QAAAj/B,KAAAi+B,MAAAjqB,KAAA,UAAA,IAAA9T,GAAAT,EAAAkR,GAAA4uB,OAAA9/B,GAAAkR,GAAA4uB,QAAA7/B,EAAAD,EAAAkR,GAAA4uB,QAAApG,YAAAh5B,EAAAV,EAAAkR,GAAA4uB,QAAA/M,WAAA,WAAA,MAAA/yB,GAAAkR,GAAA4uB,QAAAr/B,EAAAF,OAAAsyB,SAAA,SAAA7yB,GAAA,YAAA,SAAAC,GAAAS,EAAAD,GAAAF,KAAAm7B,MAAA17B,EAAAI,SAAA+E,MAAA5E,KAAAw/B,eAAA//B,EAAAA,EAAAU,GAAAoa,GAAA1a,SAAA+E,MAAA7E,OAAAI,GAAAH,KAAA+mB,QAAAtnB,EAAAuI,UAAAtI,EAAA45B,SAAAp5B,GAAAF,KAAAia,UAAAja,KAAA+mB,QAAA5O,QAAA,IAAA,eAAAnY,KAAAy/B,WAAAz/B,KAAA0/B,WAAA1/B,KAAA2/B,aAAA,KAAA3/B,KAAAu8B,aAAA,EAAAv8B,KAAAw/B,eAAA9b,GAAA,sBAAAjkB,EAAA6O,MAAAtO,KAAA4/B,QAAA5/B,OAAAA,KAAA6/B,UAAA7/B,KAAA4/B,UAAA,QAAAz/B,GAAAA,GAAA,MAAAH,MAAA6B,KAAA,WAAA,GAAA3B,GAAAT,EAAAO,MAAAmC,EAAAjC,EAAAmQ,KAAA,gBAAA1M,EAAA,gBAAAxD,IAAAA,CAAAgC,IAAAjC,EAAAmQ,KAAA,eAAAlO,EAAA,GAAAzC,GAAAM,KAAA2D,IAAA,gBAAAxD,IAAAgC,EAAAhC,OAAAT,EAAAu5B,QAAA,QAAAv5B,EAAA45B,UAAArI,OAAA,IAAAvxB,EAAAkL,UAAAk1B,gBAAA,WAAA,MAAA9/B,MAAAw/B,eAAA,GAAAjD,cAAAnyB,KAAAC,IAAArK,KAAAm7B,MAAA,GAAAoB,aAAA18B,SAAA8V,gBAAA4mB,eAAA78B,EAAAkL,UAAAi1B,QAAA,WAAA,GAAAngC,GAAAM,KAAAG,EAAA,SAAAD,EAAA,CAAAF,MAAAy/B,WAAAz/B,KAAA0/B,WAAA1/B,KAAAu8B,aAAAv8B,KAAA8/B,kBAAArgC,EAAAqB,SAAAd,KAAAw/B,eAAA,MAAAr/B,EAAA,WAAAD,EAAAF,KAAAw/B,eAAArY,aAAAnnB,KAAAm7B,MAAAnnB,KAAAhU,KAAAia,UAAArR,IAAA,WAAA,GAAAlJ,GAAAD,EAAAO,MAAAmC,EAAAzC,EAAA2Q,KAAA,WAAA3Q,EAAAqX,KAAA,QAAApT,EAAA,MAAAlC,KAAAU,IAAA1C,EAAA0C,EAAA,OAAAwB,IAAAA,EAAAhD,QAAAgD,EAAA4W,GAAA,eAAA5W,EAAAxD,KAAA2V,IAAA5V,EAAAiC,KAAA,OAAAmP,KAAA,SAAA7R,EAAAC,GAAA,MAAAD,GAAA,GAAAC,EAAA,KAAAmC,KAAA,WAAAnC,EAAA+/B,QAAAl5B,KAAAvG,KAAA,IAAAN,EAAAggC,QAAAn5B,KAAAvG,KAAA,OAAAN,EAAAkL,UAAAg1B,QAAA,WAAA,GAAAngC,GAAAC,EAAAM,KAAAw/B,eAAArY,YAAAnnB,KAAA+mB,QAAAkK,OAAA9wB,EAAAH,KAAA8/B,kBAAA5/B,EAAAF,KAAA+mB,QAAAkK,OAAA9wB,EAAAH,KAAAw/B,eAAA9zB,SAAAvJ,EAAAnC,KAAAy/B,QAAA97B,EAAA3D,KAAA0/B,QAAA97B,EAAA5D,KAAA2/B,YAAA,IAAA3/B,KAAAu8B,cAAAp8B,GAAAH,KAAA6/B,UAAAngC,GAAAQ,EAAA,MAAA0D,KAAAnE,EAAAkE,EAAAA,EAAAhD,OAAA,KAAAX,KAAA+/B,SAAAtgC,EAAA,IAAAmE,GAAAlE,EAAAyC,EAAA,GAAA,MAAAnC,MAAA2/B,aAAA,KAAA3/B,KAAAggC,OAAA,KAAAvgC,EAAA0C,EAAAxB,OAAAlB,KAAAmE,GAAAD,EAAAlE,IAAAC,GAAAyC,EAAA1C,KAAA,SAAA0C,EAAA1C,EAAA,IAAAC,EAAAyC,EAAA1C,EAAA,KAAAO,KAAA+/B,SAAAp8B,EAAAlE,KAAAC,EAAAkL,UAAAm1B,SAAA,SAAArgC,GACAM,KAAA2/B,aAAAjgC,EAAAM,KAAAggC,OAAA,IAAA7/B,GAAAH,KAAAia,SAAA,iBAAAva,EAAA,MAAAM,KAAAia,SAAA,UAAAva,EAAA,KAAAQ,EAAAT,EAAAU,GAAA4a,QAAA,MAAA8O,SAAA,SAAA3pB,GAAA4Y,OAAA,kBAAAnY,SAAAT,EAAAA,EAAAya,QAAA,eAAAkP,SAAA,WAAA3pB,EAAA4gB,QAAA,0BAAAphB,EAAAkL,UAAAo1B,MAAA,WAAAvgC,EAAAO,KAAAia,UAAAe,aAAAhb,KAAA+mB,QAAA5O,OAAA,WAAA2R,YAAA,UAAA,IAAA5pB,GAAAT,EAAAkR,GAAAsvB,SAAAxgC,GAAAkR,GAAAsvB,UAAA9/B,EAAAV,EAAAkR,GAAAsvB,UAAA9G,YAAAz5B,EAAAD,EAAAkR,GAAAsvB,UAAAzN,WAAA,WAAA,MAAA/yB,GAAAkR,GAAAsvB,UAAA//B,EAAAF,MAAAP,EAAAM,QAAA2jB,GAAA,6BAAA,WAAAjkB,EAAA,uBAAAoC,KAAA,WAAA,GAAAnC,GAAAD,EAAAO,KAAAG,GAAAkB,KAAA3B,EAAAA,EAAA2Q,aAAAiiB,SAAA,SAAA7yB,GAAA,YAAA,SAAAC,GAAAA,GAAA,MAAAM,MAAA6B,KAAA,WAAA,GAAA3B,GAAAT,EAAAO,MAAAmC,EAAAjC,EAAAmQ,KAAA,SAAAlO,IAAAjC,EAAAmQ,KAAA,SAAAlO,EAAA,GAAAhC,GAAAH,OAAA,gBAAAN,IAAAyC,EAAAzC,OAAA,GAAAS,GAAA,SAAAT,GAAAM,KAAAkgC,QAAAzgC,EAAAC,GAAAS,GAAA84B,QAAA,QAAA94B,EAAA+4B,oBAAA,IAAA/4B,EAAAyK,UAAAiT,KAAA,WAAA,GAAAne,GAAAM,KAAAkgC,QAAA//B,EAAAT,EAAAib,QAAA,0BAAAza,EAAAR,EAAA2Q,KAAA,SAAA,IAAAnQ,IAAAA,EAAAR,EAAAqX,KAAA,QAAA7W,EAAAA,GAAAA,EAAAmD,QAAA,iBAAA,MAAA3D,EAAAoZ,OAAA,MAAAkR,SAAA,UAAA,CAAA,GAAA7nB,GAAAhC,EAAA6T,KAAA,kBAAArQ,EAAAlE,EAAA+gB,MAAA,eAAAa,cAAA3hB,EAAA,KAAAkE,EAAAnE,EAAA+gB,MAAA,eAAAa,cAAAlf,EAAA,IAAA,IAAAA,EAAA2e,QAAAnd,GAAAjE,EAAAohB,QAAAld,IAAAA,EAAAud,uBAAAxd,EAAAwd,qBAAA,CAAA,GAAAtd,GAAApE,EAAAS,EAAAF,MAAA+/B,SAAArgC,EAAAib,QAAA,MAAAxa,GAAAH,KAAA+/B,SAAAl8B,EAAAA,EAAAiV,SAAA,WAAA3W,EAAA2e,SAAAjgB,KAAA,gBAAAwgB,cAAA3hB,EAAA,KAAAA,EAAAohB,SAAAjgB,KAAA,eAAAwgB,cAAAlf,EAAA,UAAAhC,EAAAyK,UAAAm1B,SAAA,SAAArgC,EAAAQ,EAAAiC,GAAA,QAAAwB,KAAAC,EAAAkmB,YAAA,UAAA9V,KAAA,8BAAA8V,YAAA,UAAAtlB,MAAAwP,KAAA,uBAAA+C,KAAA,iBAAA,GAAArX,EAAAmqB,SAAA,UAAA7V,KAAA,uBAAA+C,KAAA,iBAAA,GAAAlT,GAAAnE,EAAA,GAAAwvB,YAAAxvB,EAAAmqB,SAAA,OAAAnqB,EAAAoqB,YAAA,QAAApqB,EAAAoZ,OAAA,kBAAAnY,QAAAjB,EAAAib,QAAA,eAAAkP,SAAA,UAAArlB,MAAAwP,KAAA,uBAAA+C,KAAA,iBAAA,GAAA5U,GAAAA,IAAA,GAAAyB,GAAA1D,EAAA8T,KAAA,aAAAnQ,EAAA1B,GAAA1C,EAAAyS,QAAA2mB,aAAAj1B,EAAAjD,QAAAiD,EAAAomB,SAAA,WAAA9pB,EAAA8T,KAAA,WAAArT,OAAAiD,GAAAjD,QAAAkD,EAAAD,EAAA+f,IAAA,kBAAAhgB,GAAAm1B,qBAAA34B,EAAA+4B,qBAAAv1B,IAAAC,EAAAkmB,YAAA,MAAA,IAAA5pB,GAAAT,EAAAkR,GAAAwvB,GAAA1gC,GAAAkR,GAAAwvB,IAAAzgC,EAAAD,EAAAkR,GAAAwvB,IAAAhH,YAAAh5B,EAAAV,EAAAkR,GAAAwvB,IAAA3N,WAAA,WAAA,MAAA/yB,GAAAkR,GAAAwvB,IAAAjgC,EAAAF,KAAA,IAAAmC,GAAA,SAAAhC,GAAAA,EAAAigB,iBAAA1gB,EAAA2B,KAAA5B,EAAAO,MAAA,QAAAP,GAAAI,UAAA6jB,GAAA,wBAAA,sBAAAvhB,GAAAuhB,GAAA,wBAAA,uBAAAvhB,IAAAmwB,SAAA,SAAA7yB,GAAA,YAAA,SAAAC,GAAAA,GAAA,MAAAM,MAAA6B,KAAA,WAAA,GAAA3B,GAAAT,EAAAO,MAAAmC,EAAAjC,EAAAmQ,KAAA,YAAA1M,EAAA,gBAAAjE,IAAAA,CAAAyC,IAAAjC,EAAAmQ,KAAA,WAAAlO,EAAA,GAAAhC,GAAAH,KAAA2D;AAAA,gBAAAjE,IAAAyC,EAAAzC,OAAA,GAAAS,GAAA,SAAAT,EAAAQ,GAAAF,KAAA+mB,QAAAtnB,EAAAuI,UAAA7H,EAAAm5B,SAAAp5B,GAAAF,KAAAogC,QAAA3gC,EAAAO,KAAA+mB,QAAA5O,QAAAuL,GAAA,2BAAAjkB,EAAA6O,MAAAtO,KAAAqgC,cAAArgC,OAAA0jB,GAAA,0BAAAjkB,EAAA6O,MAAAtO,KAAAsgC,2BAAAtgC,OAAAA,KAAAq5B,SAAA55B,EAAAC,GAAAM,KAAAugC,QAAA,KAAAvgC,KAAAwgC,MAAA,KAAAxgC,KAAAygC,aAAA,KAAAzgC,KAAAqgC,gBAAAlgC,GAAA84B,QAAA,QAAA94B,EAAAugC,MAAA,+BAAAvgC,EAAAm5B,UAAArI,OAAA,EAAA9Y,OAAApY,QAAAI,EAAAyK,UAAA+1B,SAAA,SAAAlhC,EAAAC,EAAAS,EAAAD,GAAA,GAAAiC,GAAAnC,KAAAogC,QAAAjZ,YAAAxjB,EAAA3D,KAAAq5B,SAAApI,SAAArtB,EAAA5D,KAAAogC,QAAA10B,QAAA,IAAA,MAAAvL,GAAA,OAAAH,KAAAugC,QAAA,MAAAp+B,GAAAhC,GAAA,KAAA,IAAA,UAAAH,KAAAugC,QAAA,MAAA,OAAApgC,IAAAgC,EAAAnC,KAAAwgC,OAAA78B,EAAAmS,MAAA,WAAA3T,EAAAyB,GAAAnE,EAAAS,IAAA,QAAA,IAAA2D,GAAA,MAAA7D,KAAAugC,QAAAh/B,EAAAsC,EAAA1B,EAAAwB,EAAAmS,IAAA9R,EAAAH,EAAAD,EAAAlE,CAAA,OAAA,OAAAS,GAAAgC,GAAAhC,EAAA,MAAA,MAAAD,GAAAqB,EAAAyC,GAAAvE,EAAAS,GAAA,UAAAC,EAAAyK,UAAAg2B,gBAAA,WAAA,GAAA5gC,KAAAygC,aAAA,MAAAzgC,MAAAygC,YAAAzgC,MAAAq5B,SAAAvP,YAAA3pB,EAAAugC,OAAA7W,SAAA,QAAA,IAAApqB,GAAAO,KAAAogC,QAAAjZ,YAAAznB,EAAAM,KAAAq5B,SAAApI,QAAA,OAAAjxB,MAAAygC,aAAA/gC,EAAAoW,IAAArW,GAAAU,EAAAyK,UAAA01B,2BAAA,WAAAp1B,WAAAzL,EAAA6O,MAAAtO,KAAAqgC,cAAArgC,MAAA,IAAAG,EAAAyK,UAAAy1B,cAAA,WAAA,GAAArgC,KAAAq5B,SAAA9e,GAAA,YAAA,CAAA,GAAA7a,GAAAM,KAAAq5B,SAAA3tB,SAAAxL,EAAAF,KAAA+mB,QAAAkK,OAAA9uB,EAAAjC,EAAA4V,IAAAnS,EAAAzD,EAAAo+B,OAAA16B,EAAAwG,KAAAC,IAAA5K,EAAAI,UAAA6L,SAAAjM,EAAAI,SAAA+E,MAAA8G,SAAA,iBAAAxL,KAAAyD,EAAAxB,EAAAjC,GAAA,kBAAAiC,KAAAA,EAAAjC,EAAA4V,IAAA9V,KAAAq5B,WAAA,kBAAA11B,KAAAA,EAAAzD,EAAAo+B,OAAAt+B,KAAAq5B,UAAA,IAAAx1B,GAAA7D,KAAA2gC,SAAA/8B,EAAAlE,EAAAyC,EAAAwB,EAAA,IAAA3D,KAAAugC,SAAA18B,EAAA,CAAA,MAAA7D,KAAAwgC,OAAAxgC,KAAAq5B,SAAAt1B,IAAA,MAAA,GAAA,IAAAxC,GAAA,SAAAsC,EAAA,IAAAA,EAAA,IAAAG,EAAAvE,EAAA+gB,MAAAjf,EAAA,YAAA,IAAAvB,KAAAq5B,SAAAvY,QAAA9c,GAAAA,EAAAmd,qBAAA,MAAAnhB,MAAAugC,QAAA18B,EAAA7D,KAAAwgC,MAAA,UAAA38B,EAAA7D,KAAA4gC,kBAAA,KAAA5gC,KAAAq5B,SAAAvP,YAAA3pB,EAAAugC,OAAA7W,SAAAtoB,GAAAuf,QAAAvf,EAAA8B,QAAA,QAAA,WAAA,aAAA,UAAAQ,GAAA7D,KAAAq5B,SAAApI,QAAAnb,IAAAlS,EAAAlE,EAAAiE,KAAA,IAAAzD,GAAAT,EAAAkR,GAAAkwB,KAAAphC,GAAAkR,GAAAkwB,MAAAnhC,EAAAD,EAAAkR,GAAAkwB,MAAA1H,YAAAh5B,EAAAV,EAAAkR,GAAAkwB,MAAArO,WAAA,WAAA,MAAA/yB,GAAAkR,GAAAkwB,MAAA3gC,EAAAF,MAAAP,EAAAM,QAAA2jB,GAAA,OAAA,WAAAjkB,EAAA,sBAAAoC,KAAA,WAAA,GAAA1B,GAAAV,EAAAO,MAAAE,EAAAC,EAAAkQ,MAAAnQ,GAAA+wB,OAAA/wB,EAAA+wB,WAAA,MAAA/wB,EAAA4gC,eAAA5gC,EAAA+wB,OAAAqN,OAAAp+B,EAAA4gC,cAAA,MAAA5gC,EAAA6gC,YAAA7gC,EAAA+wB,OAAAnb,IAAA5V,EAAA6gC,WAAArhC,EAAA2B,KAAAlB,EAAAD,QAAAoyB,QACAH,OAAA,aAAA,UAAA,cMqCAA,OAAA,SAAA,SAAA,SAAA,cAAA,QAAA,OACA,UAAA,aACA,SAAAnvB,EAAAgwB,EAAAS,EAAAuN,EAAAC,GA+YA,MA3YA,UAAAj+B,GAqTA,QAAAk+B,KACA,GAAAjoB,GAAAjW,EAAAgzB,GAAA/c,QAAApY,KAAA,SAAA+oB,MAAA,QACAuX,eAAA,SAgBA,OAdAn+B,GAAAiW,GACAtQ,KAAA,WACA+a,GAAA,QAAA,SAAA2Q,GACAA,EAAAjU,iBACApd,EAAAqxB,EAAAlc,QAAAwC,QAAA,UACA3G,KAAA,mBACAnS,KAAA,WACA,GAAAmB,EAAAhD,MAAA8mB,KAAA,WAEA,MADA2M,GAAAE,YAAA3wB,EAAAhD,MAAA+W,KAAA,mBACA,MAKAkC,EAGA,QAAAmoB,GAAAra,GACA,MAAAA,GAAA6M,UAAAH,EAAAC,aACA1wB,EAAAgzB,GAAAqL,MAAAr+B,EAAAgzB,GAAAhd,OAAAnY,KAAA,WACAygC,gBAAAva,EAAA6M,SACA/W,KAAA,YAEA,sBAEA,GAQA,QAAA0kB,KACA,GAAA99B,GAAAT,EAAAhD,MAAAgU,KAAA,YAEAvQ,GAAA5B,KAAA,WACA,GAAAwL,GAAArK,EAAAhD,MACAs4B,EAAAjrB,EAAAgD,KAAA,aACA0W,IAEAuR,KAAAvR,EAAAya,UAAAlJ,GAEAjrB,EAAAo0B,YAAA1a,KAnWA,GAAA2a,GAAA,aAGAC,GAKAC,MAAA,SAAA7a,GACA,MAAA/mB,MAAA6B,KAAA,WACA,GAAAwL,GAAArK,EAAAhD,KAEAqN,GAAAwc,SAAA,wBACAxc,EAAAqW,GAAA,OAAA,SAAA2Q,EAAAhkB,GACAhD,EAAAw0B,WAAA,WAAAxxB,KAEAhD,EAAAqW,GAAA,QAAA,SAAA2Q,EAAAhkB,GACAhD,EAAAw0B,WAAA,YAAAxxB,KAEAhD,EAAAqW,GAAA,OAAA,SAAA2Q,EAAAhkB,GACAhD,EAAAw0B,WAAA,WAAAxxB,KAEAhD,EAAAqW,GAAA,SAAA,SAAA2Q,EAAAhkB,GACAhD,EAAAw0B,WAAA,OAAAxxB,KAEAhD,EAAAqW,GAAA,QAAA,SAAA2Q,EAAAhkB,GACAhD,EAAAw0B,WAAA,OAAAxxB,KAEAhD,EAAAqW,GAAA,QAAA,SAAA2Q,EAAAzB,GACA,GAAAkP,GAAA,wDACAz0B,GAAAw0B,WAAA,QAAAvE,MAAAwE,EAAAl9B,KAAAguB,MAEAvlB,EAAAqW,GAAA,YAAA,SAAA2Q,EAAA0N,GACA10B,EAAAw0B,WAAA,gBAAAE,KAEA10B,EAAAqW,GAAA,WAAA,SAAA2Q,EAAAtN,GACA1Z,EAAAw0B,WAAA,WAAA9a,KAEA1Z,EAAAqW,GAAA,OAAA,SAAA2Q,EAAAtN,GACA1Z,EAAAw0B,WAAA,OAAA9a,KAEA1Z,EAAAqW,GAAA,cAAA,SAAA2Q,EAAAtN,GACA1Z,EAAAw0B,WAAA,cAAA9a,QAaAib,SAAA,SAAAjb,GACA,GAAAkb,GAAAjiC,IAEA+mB,GAAA6M,UAAAH,EAAAG,SAAA7M,EAAA6M,WAGA5wB,EAAAsqB,MAAAjB,IAAA2G,EAAA2C,KAAAC,UAAAsM,KAAA,IAAAnb,EAAAtN,KACAxJ,SAAA,OACAqe,QAAA,SAAAje,GACA,GAAAktB,GAAAv6B,EAAA,QACAu6B,GAAA50B,KAAA0H,GACA4xB,EAAAJ,WAAA,OACA7+B,EAAAgF,QACAs1B,MAAAC,EAAAvpB,KAAA,SAAA3T,OACAuE,KAAA24B,GACAxW,QAWAob,SAAA,SAAApb,GACA,GAAAkb,GAAAjiC,IAEAgD,GAAAsqB,MAAAjB,IAAA2G,EAAA2C,KAAAC,UAAAqL,KAAA,IAAAla,EAAAtN,KACAxJ,SAAA,OACAqe,QAAA,SAAAje,GACA,GAAAktB,GAAAv6B,EAAA,QACAu6B,GAAA50B,KAAA0H,GACA4xB,EAAAJ,WAAA,OACA7+B,EAAAgF,QACAs1B,MAAAC,EAAAvpB,KAAA,UAAA3T,OACAuE,KAAA24B,GACAxW,QAWAqb,UAAA,SAAArb,GACA,QAAAsb,GAAAtb,GACA,GAAAub,GAAA,IAAAvb,EAAAlK,KAAA,KAAAkK,EAAA2N,KAGA,OAFA3N,GAAApnB,SACA2iC,EAAAvb,EAAApnB,OAAA,IAAA2iC,GACAtP,EAAA2C,KAAAC,UAAA2M,cACA,wBACAlX,mBAAAiX,GAGA,QAAAE,GAAAlnB,EAAA+Q,GAEA,MADA/Q,GAAAP,QAAA,oBAAA8O,SAAA,yBACA,sFAEAwC,EAAA,cAIA,GAAAhc,IAAAitB,MAAA,oBACA14B,KAAA,WACA,MAAA49B,GAAAxiC,KAAAqiC,EAAAtb,KAIA,OAAA/mB,MAAA6hC,WAAA,OAAAxxB,IAgBAwN,KAAA,SAAAkJ,GACA,GAAAzL,GAAAtY,EAAAgzB,GAAAyM,KAAA7Y,MAAA,eACA0T,EAAAt6B,EAAAgzB,GAAA0M,KACAC,EAAA3/B,EAAAgzB,GAAAyM,KAAA7Y,MAAA,iBACA5mB,EAAAgzB,GAAAyM,KAAA7Y,MAAA,gBACAwX,EAAAra,GACAma,IACA5D,GACAhiB,GACAsnB,EAAA5/B,EAAAgzB,GAAAyM,KAAA7Y,MAAA,aAAArX,GAAA,YACAylB,UAAA,EAAA6K,KAAA,UAEA7/B,EAAAgzB,GAAAyM,KAAA7Y,MAAA,gBACA+Y,GAOA,IANA5b,EAAA6M,UAAAH,EAAAC,cACA1wB,EAAA2/B,GAAA7e,OAAA9gB,EAAAgzB,GAAAyM,KACA7Y,MAAA,gBACAwX,EAAAra,KAEAzL,EAAAtY,EAAAsY,GACA,kBAAAyL,GAAA,KAAA,CACA,GAAA5mB,GAAA4mB,EAAAniB,KAAAvD,KAAAia,EACAnb,IACAmb,EAAAwI,OAAA3jB,OAEAmb,GAAA3S,KAAAoe,EAAAniB,KAYA,OAVA5B,GAAAs6B,GAAA30B,KAAAoe,EAAAuW,OACAt6B,EAAA4/B,GAAA3O,OAAApW,MAAA,IACA6F,GAAA,QAAA,IAAAsd,EAAAxL,YACA9R,GAAA,iBAAA6d,GACA7d,GAAA,kBAAA,WACAqD,EAAA+b,SACA/b,EAAA+b,UACA9/B,EAAAhD,MAAA4M,WAGA5M,MAcA+iC,YAAA,SAAAhc,GACA,GAAA6b,GAAA5/B,EAAAhD,KAKA,OAHAk2B,UAAA+K,IACAA,EAAA+B,QAAA,SAEAhjC,KAAA6hC,WAAA,QACAvE,MAAAvW,EAAAuW,MACA14B,KAAA,WACAyI,KAAArK,EAAAhD,MACAgD,EAAAsqB,MAAAjB,IAAAtF,EAAAsF,IACAhc,KAAA0W,EAAA1W,KACAie,QAAA,SAAAje,GACAhD,KAAAyW,OAAAzT,IAEAD,MAAA,SAAA6yB,GACAL,EAAAf,WAAA,gBAAAoB,MAIA51B,KAAAqW,GAAA,QAAA,sBAAA,SAAA2Q,GACA,GAAA6O,GAAAlgC,EAAAqxB,EAAAlc,QAAAwC,QAAA,QACAtK,EAAA4wB,EAAAkC,kBAAAD,GAAA,GACAjqB,EAAAjW,EAAAqxB,EAAAlc,QAAAwC,QAAA,SA0CA,OAxCA,IAAA1B,EAAA5I,KAAA,aACArN,EAAAsqB,MAAAjB,IAAApT,EAAA5I,KAAA,UACAie,QAAA,SAAA8U,GAKA,MAJAnqB,GAAA0B,QAAA,UAAAsZ,MAAA,QACAlN,EAAAsc,SACAtc,EAAAsc,QAAAhiC,KAAA4X,EAAA,GAAAmqB,GACA/O,EAAAjU,kBACA,GAEAhQ,MAAA,SAAA6yB,GACAL,EAAAf,WAAA,gBAAAoB,MAIAjgC,EAAAsqB,MAAAjB,IAAApT,EAAA5I,KAAA,UACAA,KAAAnN,KAAAiwB,UAAA9iB,GACAJ,SAAA,OACAyc,YAAA,mBACA7rB,KAAA,OACAytB,QAAA,SAAA8U,GACA,MAAA,WAAAA,EAAA5V,QACAvU,EAAA0B,QAAA,UAAAsZ,MAAA,QACAlN,EAAAsc,SACAtc,EAAAsc,QAAAhiC,KAAA4X,EAAA,GAAAmqB,GACA/O,EAAAjU,kBACA,QACA,SAAAgjB,EAAA5V,OACAyT,EAAAqC,UAAAJ,EAAAE,EAAAhzB,OAEAgjB,MAAA,mBACAlwB,KAAAigC,kBAAAC,MAGAhzB,MAAA,SAAA6yB,GACAL,EAAAf,WAAA,gBAAAoB,MAKA5O,EAAAjU,kBACA,QASAmjB,cAAA,SAAAxB,GACA,GAAAyB,GAAAxgC,EAAAgzB,GAAAyM,KAEAz/B,GAAAwgC,GAAA76B,KAAAo5B,EAAA5R,aACA,IAAAsT,GAAAzgC,EAAAwgC,GAAAxvB,KAAA,MACAspB,EAAAmG,EAAApjC,QAAA,cACAojC,GAAA72B,QAEA,IAAAyD,IAAAitB,MAAAA,EACA14B,KAAA4+B,EAGAxjC,MAAA6hC,WAAA,OAAAxxB,IAaAilB,SAAA,SAAAvO,GACA,GAAA2c,GAAA1gC,EAAAgzB,GAAAyM,KAAA7Y,MAAA,YAAA7C,EAAAlmB,MAAA,IASA,OARAmC,GAAA0gC,GAAA/6B,KAAAoe,EAAApe,MAEA3F,EAAA+jB,EAAAwO,OAAA,QAAAzR,OAAA4f,GACAx4B,WAAA,WACAlI,EAAA0gC,GAAA5lB,KAAA,IAAA,WACA9a,EAAA0gC,GAAA92B,YAEAma,EAAAxZ,UAAA,MACAvN,MA0DAD,QAAA4jC,aAAA,SAAAC,GACAA,EAAAv/B,MAAAqH,OAAA,EACAk4B,EAAAv/B,MAAAqH,OAAAk4B,EAAAC,cAAAhkC,SAAA+E,KAAA23B,aAAA,GACA,MAiBAv5B,EAAA2N,GAAAkxB,WAAA,SAAA9T,GACA,MAAA4T,GAAA5T,GACA4T,EAAA5T,GACAvrB,MAAAxC,KAAA+M,MAAAnC,UAAAnI,MAAApB,KAAA6F,UAAA,IACA,gBAAA6mB,IAAAA,MAGA/qB,GAAAoN,MAAA,UAAA2d,EAAA,6BAAA2T,GAFAC,EAAAC,MAAAp/B,MAAAxC,KAAAkH,aAKAorB,SAGAwR,UAAA,SAAA/B,GACA/+B,EAAA,yBAAA8d,QAAA,YAAAihB,IAEAzM,SAAA,SAAAvO,GACA/jB,EAAA,yBAAA8d,QAAA,WAAAiG,IAEAqM,MAAA,SAAArM,GACA/jB,EAAA,yBAAA8d,QAAA,QAAAiG,IAEAlJ,KAAA,SAAAkJ,GACA/jB,EAAA,yBAAA8d,QAAA,OAAAiG,IAEAgc,YAAA,SAAAhc,GACA/jB,EAAA,yBAAA8d,QAAA,cAAAiG,OC3bA,SAAA/jB,GAEA,YAEA,IAAAwwB,IACAgO,UAAA,KACAuC,uBAAA,EACAC,sBAAA,EACAC,mBAAA,EACAC,eAAA,EACAC,mBAAA,KACAC,sBAAA,QACAC,SAAA,KACAC,gBAAA,KACAC,mBAAA,KACAC,YAAA,EAAA,GAAA,IACAC,WAAA,GACAC,QAAA,EACAC,kBAAA,KACAC,gBAAA,KACAvhC,SAAA,EACAwhC,OAAA,KACAC,uBAAA,EACAC,cAAA,KACAC,aAAA,IACAC,SAAA,GACAC,UAAA,KACAC,aAAA,EACAC,QAAA,KACAC,sBAAA,GAGAC,GACAC,QAAA,SAAAC,EAAAC,EAAAvB,GACA,GAAAwB,GAAAC,EAAAt7B,EAAAu7B,EACAC,EAAAC,EAAAC,EAAAC,EACAr9B,EAAAs9B,EAAAC,EAFAC,EAAAnjC,EAAAhD,MAAA6N,EAAAs4B,EAAA91B,KAAA,QACA+1B,EAAAD,EAAA91B,KAAA,QAAAg2B,EAAAF,EAAA91B,KAAA,OAKA,IAFAm1B,EAAAc,EAAAC,QAAAf,EAAA33B,EAAA24B,gBAEAhB,KAAAA,EAAA7kC,QAAA,GAAA,CAGA,GAAAkN,EAAAs3B,aAAAjP,SAAAroB,EAAAu3B,SAGAv3B,EAAAu3B,QAAA,CACA,GAAAqB,GAAA54B,EAAAu3B,OAGApiC,GAAAnB,KAAA4kC,EAAA,SAAA7rB,EAAA8rB,GACAD,EAAA7rB,GAAA8rB,EAAAzlC,eAEA,IAAA0lC,GAAA3jC,EAAAyD,QAAA++B,EAAAvkC,cAAAwlC,EAEA,KAAA,IAAAE,EAEA,OAWA,GALA94B,EAAAk2B,uBAAAyB,EAAA7kC,OAAA,IACA6kC,EAAAA,EAAA/Q,OAAA,GAAA1qB,cAAAy7B,EAAA/iC,MAAA,GAAAxB,eAIA4M,EAAAq3B,YAAAr3B,EAAAq3B,UAAAM,GAEA,WADAW,GAAArlB,QAAA,aAAA0kB,EAKA,MAAA33B,EAAA62B,QAAA,GAAA0B,EAAAzlC,QAAAkN,EAAA62B,SAAA,CAeA,GAbAgB,GAAA,EAEAC,EAAArT,OAAA1pB,IAAAw9B,EAAA,SAAA/4B,GACA,MAAAA,GAAApM,gBAGA4kC,EAAA7iC,EAAAyD,QAAA++B,EAAAvkC,cAAA0kC,IAEA,IAAAE,IAEAH,GAAA,GAGAA,EAEA,GADAS,EAAArlB,QAAA,gBAAA0kB,GACA33B,EAAA+4B,WACA,IAAA,GAAArlC,GAAA,EAAAA,EAAA,IAAAA,EACAyB,EAAA,IAAAmjC,EAAA91B,KAAA,YAAA,IAAAg2B,EAAAR,IAAA55B,MAAA,SAAAwH,GACAzQ,EAAAhD,MAAA+pB,YAAAlc,EAAA+4B,YACAnzB,MACAoV,MAAA,SAGA7lB,GAAA,IAAAmjC,EAAA91B,KAAA,YAAA,IAAAg2B,EAAAR,IAAAz3B,OACA8Z,SAAA2e,gBAAAh5B,EAAAi5B,gBAAA,KACA5e,SAAA2e,gBAAAh5B,EAAAk5B,gBAAA,KACA7e,SAAA2e,gBAAAh5B,EAAAi5B,gBAAA,KACA5e,SAAA2e,gBAAAh5B,EAAAk5B,gBAAA,KACA7e,SAAA2e,gBAAAh5B,EAAAi5B,gBAAA,KACA5e,SAAA2e,gBAAAh5B,EAAAk5B,gBAAA,SAGAl5B,GAAAq2B,iBAAA,GACAhO,SAAAgO,GACAlhC,EAAAoN,MAAA,wCAAAo1B,GAEAI,EAAA1B,IAEA75B,EAAAD,KAAAC,IAAA7H,MAAA,KAAA6jC,GACAh8B,EAAAA,MAAA28B,EAAAA,GAAA,EAAA38B,EAEAu7B,IAAAv7B,GAEAo7B,GAAAU,EAAArlB,QAAA,cAAA0kB,EAAAI,IACAQ,EAAA7/B,KAAAi/B,GACAa,EAAA9/B,KAAAq/B,GAEAH,GACA,OAAA53B,EAAAw2B,UAAA,MAAAx2B,EAAAy2B,iBACAthC,EAAAyD,QAAA++B,EAAA33B,EAAA2zB,cAAA,GACAx+B,EAAAikC,KAAAp5B,EAAAw2B,SAAArhC,EAAAgF,QAAAw9B,IAAAA,GAAA33B,EAAA02B,qBAMAuB,EAAAK,EAAA91B,KAAA,YAAA,IAAAu1B,EACAG,EAAAI,EAAA91B,KAAA,YAAA,YAAAu1B,EACAI,EAAAhjC,EAAA,WAAA3C,KAAAmlC,GAAA78B,OAEAA,EAAA,gBAAA29B,EAAAY,WAAA7lC,KAAA8kC,GAAA,SAAAL,EAAA,KACAn9B,GAAA,SAAAq9B,EAAA,UACAr9B,GAAA,yCAAAo9B,EAAA,oBAAAH,EAAA,KACAj9B,GAAAkF,EAAAm3B,aAAA,eACAiB,EAAAjjC,EAAA2F,GAEA,OAAAkF,EAAAk3B,cACA/hC,EAAA6K,EAAAk3B,eAAAjhB,OAAAmiB,GAEAI,EAAA1lC,OAAA,GACAulC,EAAAC,EAAA/qB,SAAA,IAAA+qB,EAAA91B,KAAA,YAAA,IAAAg2B,EAAAA,EAAA1lC,OAAA,IACAulC,EAAAhiB,MAAA+hB,IAEAE,EAAAliB,OAAAgiB,GAIAA,EAAAjyB,KAAA,IAAA+xB,GAAAriB,GAAA,QAAAyiB,EAAA,SAAAhkC,GACAA,EAAAie,gBACA,IAAA+mB,GAAAzd,SAAA1mB,EAAAhD,MAAA+W,KAAA,iBACAuvB,GAAAc,UAAA/lC,KAAA8kC,EAAAgB,EAAAhlC,EAAAkO,QAGAi2B,EAAAe,qBAAAhmC,KAAA8kC,GAEAV,GAAAU,EAAArlB,QAAA,aAAA0kB,EAAAI,IAEAU,EAAAgB,WAAAjmC,KAAA8kC,EAKAA,GAAAjc,IAAA,OAGAqd,OAAA,WACA,GAAA3B,GAAA4B,EAAArB,EAAAnjC,EAAAhD,MACAomC,EAAAD,EAAA91B,KAAA,QACAg2B,EAAAF,EAAA91B,KAAA,OAEAg2B,GAAA1lC,OAAA,IACAilC,EAAAS,EAAA/xB,MAEAkzB,EAAApB,EAAAA,EAAAzlC,OAAA,GACAwlC,EAAArlB,QAAA,cAAA0mB,EAAA5B,IACAQ,EAAA9xB,MAGAtR,EAAA,IAAAmjC,EAAA91B,KAAA,YAAA,IAAAu1B,GAAAh5B,SACA05B,EAAAe,qBAAAhmC,KAAA8kC,GACAA,EAAArlB,QAAA,aAAA0mB,EAAA5B,MAKAx5B,MAAA,WAGA,IAFA,GAAAw5B,GAAAO,EAAAnjC,EAAAhD,MAAAomC,EAAAD,EAAA91B,KAAA,QAAAg2B,EAAAF,EAAA91B,KAAA,QAEAg2B,EAAA1lC,OAAA,GACAilC,EAAAS,EAAA/xB,MACA8xB,EAAA9xB,MAEAtR,EAAA,IAAAmjC,EAAA91B,KAAA,YAAA,IAAAu1B,GAAAh5B,SACA05B,EAAAe,qBAAAhmC,KAAA8kC,EAGAA,GAAArlB,QAAA,aAAA,MAEAwlB,EAAAgB,WAAAjmC,KAAA8kC,IAMA7N,KAAA,WACA,GAAA6N,GAAAnmC,KAAAomC,EAAAD,EAAA91B,KAAA,OACA,OAAA+1B,KAIAE,GACAgB,WAAA,WACA,GAAAnB,GAAAnmC,KAAA6N,EAAAs4B,EAAA91B,KAAA,QAAA+1B,EAAAD,EAAA91B,KAAA,OAEAxC,GAAA62B,QAAA,GAAA0B,EAAAzlC,OAAAkN,EAAA62B,UACAyB,EAAAtoB,OACAsoB,EAAArlB,QAAA,YAGAjT,EAAA62B,QAAA,GAAA0B,EAAAzlC,QAAAkN,EAAA62B,UACAyB,EAAAroB,OACAqoB,EAAArlB,QAAA,aAIAomB,WAAA,WACA,GACAO,GADAtB,EAAAnjC,EAAAhD,MAAA6N,EAAAs4B,EAAA91B,KAAA,QAAAq3B,EAAA75B,EAAA65B,aACAC,EAAA95B,EAAA85B,cAaA,OAXAF,GAAAC,EAEAvB,EAAApvB,KAAA,UACA/T,EAAAnB,KAAAskC,EAAApvB,KAAA,SAAA7G,MAAA,KAAA,SAAA0K,EAAAtH,GACAA,EAAA9C,QAAAm3B,EAAA,QAAA,IACAF,GAAA,IAAAC,EAAAp0B,EAAAkhB,UAAAmT,EAAAhnC,WAKA8mC,GAAA55B,EAAAo3B,SAAA,IAAAp3B,EAAAo3B,SAAA,IAIAsB,QAAA,SAAAf,EAAAgB,GACA,GAAAjlC,EAIA,KAHAikC,EAAAxiC,EAAA+O,KAAAyzB,GAEAjkC,EAAA,EACAA,EAAAikC,EAAA7kC,QACAqC,EAAAyD,QAAA++B,EAAA/vB,WAAAlU,GAAAilC,MAAA,EADAjlC,KAGA,MAAAikC,GAAAhR,UAAA,EAAAjzB,IAGA8lC,qBAAA,WACA,GAAAlB,GAAAnjC,EAAAhD,MAAAomC,EAAAD,EAAA91B,KAAA,QAAAu3B,EAAAzB,EAAA91B,KAAA,iBAEAu3B,IACA5kC,EAAA4kC,GAAA1d,IAAAkc,EAAAx3B,KAAAu3B,EAAA91B,KAAA,QAAAw3B,gBAAAC,SAGA3B,EAAArlB,QAAA,aAAAslB,EAAAx3B,KAAAu3B,EAAA91B,KAAA,QAAAw3B,iBAGAE,UAAA,SAAA5lC,GACAA,EAAA6lC,cAAA,EACA7lC,EAAA+e,aAAA,EACA/e,EAAAke,kBACAle,EAAAie,kBAGA6nB,WAAA,SAAA9lC,EAAA+lC,GACA,MAAAllC,GAAAyD,QAAAtE,EAAAkhB,MAAA6kB,MAAA,GAGAC,eAAA,SAAAhmC,GACA,GAAAgkC,GAAAnjC,EAAAhD,KACAslC,GAAAC,QAAAlkC,KAAA8kC,EAAAnjC,EAAAhD,MAAAkqB,OACA/nB,EAAAie,kBAGAgoB,QAAA,SAAAC,GACA,GAAAlC,GAAAnjC,EAAAhD,MACA6N,EAAAs4B,EAAA91B,KAAA,OACArN,GAAAnB,KAAAwmC,EAAA,SAAA9lB,EAAA2H,GACArc,EAAAq2B,iBAAA,EACAoB,EAAAC,QAAAlkC,KAAA8kC,EAAAjc,EAAArc,EAAAu2B,wBAAA,EAAAla,EAAArc,EAAAs2B,qBAEAmB,EAAAC,QAAAlkC,KAAA8kC,EAAAjc,GAAA,MAKAoe,YAAA,SAAAnmC,EAAAqjC,GACA,GAAAW,GAAAnjC,EAAAhD,MAAA6N,EAAAs4B,EAAA91B,KAAA,QAAA+1B,EAAAD,EAAA91B,KAAA,OACAxC,GAAAy2B,kBACA,cAAAniC,EAAAtB,MAAAmC,EAAAyD,QAAA++B,EAAA33B,EAAA2zB,cAAA,GACAx+B,EAAAikC,KAAAp5B,EAAAw2B,SAAArhC,EAAAgF,QAAAswB,KAAA8N,EAAAx3B,KAAAf,EAAAg6B,gBAAAh6B,EAAA02B,uBAKA6C,UAAA,SAAAxB,GACA,GACA4B,GADArB,EAAAnmC,KAAAomC,EAAAD,EAAA91B,KAAA,QAAAg2B,EAAAF,EAAA91B,KAAA,QAAAw1B,EAAA7iC,EAAAyD,QAAAm/B,EAAAS,IAMA,IAAAR,IACA2B,EAAApB,EAAAP,GACAM,EAAArlB,QAAA,eAAA0mB,EAAA5B,IACA5iC,EAAA,IAAAmjC,EAAA91B,KAAA,YAAA,IAAAu1B,GAAAh5B,SACAw5B,EAAA70B,OAAAs0B,EAAA,GACAQ,EAAA90B,OAAAs0B,EAAA,GACAS,EAAAe,qBAAAhmC,KAAA8kC,GACAA,EAAArlB,QAAA,cAAA0mB,EAAA5B,KAIAU,EAAAgB,WAAAjmC,KAAA8kC,IAMAt7B,KAAA,SAAAkc,GACA,GAAAyd,GAAA+D,EAAA16B,EAAA7K,EAAAgF,UAAAwrB,EAAAzM,EAiJA,OA/IAlZ,GAAA82B,kBAAA,OAAA92B,EAAA82B,kBACA,UAAA3kC,KAAA+W,KAAA,QACAlJ,EAAA82B,kBAEAH,EAAA32B,EAAA26B,YAAA36B,EAAA22B,WACA+D,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IACA16B,EAAA24B,kBACA34B,EAAA46B,iBAEAzlC,EAAAnB,KAAA2iC,EAAA,SAAAjjC,EAAAuP,GACA9N,EAAAyD,QAAAqK,EAAAy3B,MAAA,EACA16B,EAAA46B,cAAAliC,KAAAuK,GAEAjD,EAAA24B,eAAAjgC,KAAAuK,KAIAjD,EAAAg6B,cAAAtyB,OAAAC,aAAA3H,EAAA24B,eAAA,IAAA,IACA34B,EAAA65B,aAAA,SACA75B,EAAA85B,eAAA,WAEA3kC,EAAA7B,WAAA0M,EAAAq3B,aAAAr3B,EAAAq3B,UAAA,MAEAllC,KAAA6B,KAAA,WACA,GAAAskC,GAAAnjC,EAAAhD,MAAA0oC,EAAA,GAAAC,EAAA,GAAAC,EAAA,sDAGA,IAAAzC,EAAA91B,KAAA,cAAA,OAAA,CACA81B,GAAA91B,KAAA,cAAA,EAEA,KAAA,GAAA9O,GAAA,EAAAA,EAAA,EAAAA,IACAonC,GAAAC,EAAAnU,OAAArqB,KAAAy+B,MAAAz+B,KAAAqH,SAAAm3B,EAAAjoC,QAiGA,IA9FAwlC,EAAA91B,KAAA,WAAAs4B,GAGAxC,EAAA91B,KAAA,OAAAxC,GACAwC,KAAA,WACAA,KAAA,WAEA,OAAAxC,EAAAg3B,QACA6D,EAAA1lC,EAAA,YACAnC,KAAA,SACAgc,KAAAhP,EAAA82B,oBAEAwB,EAAAjiB,MAAAwkB,GACAvC,EAAA91B,KAAA,iBAAAq4B,IAEAvC,EAAA91B,KAAA,iBAAArN,EAAA6K,EAAAg3B,SAGAh3B,EAAAy2B,kBACA6B,EAAAziB,GAAA,aAAA4iB,EAAAgC,aACAnC,EAAAziB,GAAA,YAAA4iB,EAAAgC,aACAnC,EAAAziB,GAAA,YAAA4iB,EAAAgC,cAIAnC,EAAAziB,GAAA,iBAAA,SAAAvhB,GACAa,EAAAhD,MAAAu/B,SAAAv8B,EAAAhD,MAAAu/B,QAAA,UAIA1xB,EAAAo2B,mBACAkC,EAAAziB,GAAA,QAAA,SAAAvhB,GACA,KAAAA,EAAAkhB,QAEArgB,EAAAhD,MAAAkqB,IAAA,IACAoc,EAAAyB,UAAA5lC,MAKAgkC,EAAAziB,GAAA,WAAA,SAAAvhB,GAEAmkC,EAAA2B,WAAA9lC,EAAA0L,EAAA24B,iBACAF,EAAA6B,eAAA9mC,KAAA8kC,EAAAhkC,KAIAgkC,EAAAziB,GAAA,UAAA,SAAAvhB,GAEA,KAAAA,EAAAkhB,OACAxV,EAAAm2B,sBACAsC,EAAAyB,UAAA5lC,GAKAmkC,EAAA2B,WAAA9lC,EAAA0L,EAAA46B,gBACAnC,EAAA6B,eAAA9mC,KAAA8kC,EAAAhkC,KAKA0L,EAAAi3B,uBACAqB,EAAAziB,GAAA,UAAA,SAAAvhB,GACAmkC,EAAA2B,WAAA9lC,EAAA0L,EAAA42B,YAEAzhC,EAAAhD,MAAAkqB,MAAAvpB,QAAA,IACA2kC,EAAAiC,OAAAlmC,KAAA8kC,GACAG,EAAAyB,UAAA5lC,MAOA0L,EAAAw3B,sBACAc,EAAAziB,GAAA,YAAA,SAAAvhB,EAAAqjC,GACAxiC,EAAAhD,MAAAkqB,IAAAsb,KAIAW,EAAA2B,OAAA,SAAA3lC,GACA,SAAAV,KAAAqnC,UAAAC,UAAA9nC,gBACAklC,EAAA5tB,QAQA+tB,EAAAyB,UAAA5lC,KAGA,OAAA0L,EAAA2zB,UACA,gBAAA3zB,GAAA,UACAy4B,EAAA8B,QAAA/mC,KAAA8kC,EAAAt4B,EAAA2zB,WACA,gBAAA3zB,GAAA,UACAy4B,EAAA8B,QAAA/mC,KAAA8kC,EAAAt4B,EAAA2zB,UAAAtxB,MAAArC,EAAAg6B,gBACA,kBAAAh6B,GAAA,WACAy4B,EAAA8B,QAAA/mC,KAAA8kC,EAAAt4B,EAAA2zB,iBAEA,IAAA,OAAA3zB,EAAAg3B,OAAA,CACA,GAAA7hC,EAAA6K,EAAAg3B,SAAA7hC,EAAA6K,EAAAg3B,QAAA3a,MAAA,CAAAlnB,EAAA6K,EAAAg3B,QACAyB,EAAA8B,QAAA/mC,KAAA8kC,EAAAnjC,EAAA6K,EAAAg3B,QAAA3a,MAAAha,MAAArC,EAAAg6B,mBAKA7nC,MAIAgD,GAAA2N,GAAA8wB,YAAA,SAAA1T,GACA,GAAAoY,GAAAnjC,EAAAhD,KAEA,OAAA,KAAAA,MAEAslC,EAAAvX,GACAuX,EAAAvX,GAAAvrB,MAAA2jC,EAAAp5B,MAAAnC,UAAAnI,MAAApB,KAAA6F,UAAA,IACA,gBAAA6mB,IAAAA,GAGA/qB,EAAAoN,MAAA,UAAA2d,EAAA,qBACA,GAHAuY,EAAAz7B,KAAArI,MAAAxC,KAAAkH,WALAlH,OAYAsyB,QAEAH,OAAA,cAAA,UAAA,cCrdAA,OAAA,QAAA,SAAA,SAAA,QAAA,UAAA,cACA,SAAAnvB,EAAAgwB,EAAAiB,GAglBA,QAAA+U,GAAArjC,GAEA,MADAuwB,UAAAvwB,IAAAA,EAAAsjC,GACA,WAAA,GAAAtjC,GAOA,QAAA07B,GAAA6H,EAAA7oC,EAAAoJ,GAEA,MADAA,GAAAA,GAAAw/B,EACAjmC,EAAAgzB,GAAAqL,OAAAzX,MAAA,wBAAAngB,EAAAkgB,IAAAuf,GAAA7oC,GAGA,QAAAmZ,GAAAqD,EAAAkK,GACA,GAAAoiB,IAAAtsB,KAAAA,EAAAhc,KAAA,WAIA,OAHAkmB,GAAAA,MACAA,EAAA5e,UAAAghC,EAAAhhC,QAAA,WACA4e,EAAAuW,QAAA6L,EAAA7L,MAAAvW,EAAAuW,OACAt6B,EAAAgzB,GAAAhd,MAAAmwB,GAGA,QAAAC,GAAAvsB,EAAAkK,GACA,GAAAoiB,IAAAtsB,KAAAA,EAAAhc,KAAA,OAAA+oB,MAAA,eAQA,OAPA7C,GAAAA,MACAA,EAAAsiB,cAAAF,EAAAE,YAAAtiB,EAAAsiB,aACAtiB,EAAAuW,QAAA6L,EAAA7L,MAAAvW,EAAAuW,OACAvW,EAAAzT,QAAA61B,EAAA71B,MAAAyT,EAAAzT,OACAyT,EAAA7T,WAAAi2B,EAAAj2B,SAAA6T,EAAA7T,UACA6T,EAAA+Q,WAAAqR,EAAArR,SAAA/Q,EAAA+Q,UACA/Q,EAAAlmB,OAAAsoC,EAAAtoC,KAAAkmB,EAAAlmB,MACAmC,EAAAgzB,GAAAhd,MAAAmwB,GAGA,QAAAG,GAAAzsB,EAAAwsB,EAAA/Q,GACA,GAAA6Q,IAAAtsB,KAAAA,EAAAhc,KAAA,OACA+oB,MAAA,oBAEAyf,KAAAF,EAAAE,YAAAA,EACA,IAAAh8B,GAAArK,EAAAgzB,GAAAhd,MAAAmwB,EAGA,OAFA7Q,IACAt1B,EAAAqK,GAAAgD,KAAA,YAAAioB,GACAjrB,EAQA,QAAAk8B,GAAA1sB,EAAAkK,GACA,GAAAoiB,IAAAtsB,KAAAA,EAAA+M,MAAA,eAKA,OAJA7C,GAAAA,MAEAA,EAAAsiB,cAAAF,EAAAE,YAAAtiB,EAAAsiB,aAEArmC,EAAAgzB,GAAAuT,SAAAJ,EAAApiB,EAAAzT,OAAA,IAaA,QAAA4G,GAAA2C,EAAAuX,EAAArN,GAKA,QAAAyiB,GAAArnC,GACA,GAAA,gBAAA,GACAA,GAAA4kB,EAAAzT,MACA4G,EAAA4J,OAAA9gB,EAAAgzB,GAAAhY,QAAApF,SAAA,YAAAzW,IAEA+X,EAAA4J,OAAA9gB,EAAAgzB,GAAAhY,OAAA7b,QAEA,CACA,GAAA0L,IAAAyF,MAAAnR,EAAAmR,MACAnR,GAAAmR,OAAAyT,EAAAzT,QACAzF,EAAA+K,SAAA,YAEAsB,EAAA4J,OAAA9gB,EAAAgzB,GAAAhY,OAAAnQ,EAAA1L,EAAAk/B,SAhBA,GAAAnnB,GAAAlX,EAAAA,EAAAgzB,GAAA9b,QAAA0P,MAAA,eAAA/M,KAAAA,IAEAkK,GAAAA,KAkBA,KAAA,GAAAxlB,GAAA,EAAAA,EAAA6yB,EAAAzzB,OAAAY,IACAioC,EAAApV,EAAA7yB,GAEA,OAAA2Y,GAAA,GA3qBA,GAAA+uB,GAAA,EAEAhI,GAWAkC,kBAAA,SAAAlC,EAAAwI,GACA,GAAAC,GAAAzI,EAAA1V,iBACAoe,KACAvG,IAGAnC,GAAAjtB,KAAA,wBAAAnS,KAAA,WACA,GAAAwL,GAAArK,EAAAhD,MACAyD,IAEA4J,GAAA2G,KAAA,iBAAAnS,KAAA,WACA,GAAAgb,GAAA7Z,EAAAhD,MAAA+W,KAAA,OACAtT,GAAA8C,KAAAsW,KAEAxP,EAAA2G,KAAA,SAAAnS,KAAA,WACA,GAAAgb,GAAA7Z,EAAAhD,MAAA+W,KAAA,OACA4yB,GAAApjC,KAAAsW,KAGAumB,EAAA/1B,EAAA0J,KAAA,SAAAtT,GAGA,KAAA,GAAAlC,GAAA,EAAAA,EAAAmoC,EAAA/oC,OAAAY,IAAA,CACA,GAIAqoC,GAJA/sB,EAAA6sB,EAAAnoC,GAAAsb,KACAvJ,EAAAo2B,EAAAnoC,GAAA+R,MACA0F,EAAAioB,EAAAjtB,KAAA,UAAA6I,EAAA,MACAhc,EAAAmY,EAAA8N,KAAA,SAGA8iB,EAAA5wB,EAAA3I,KAAA,eACA+yB,EAAAvmB,GAAA+sB,EACA,IAAAt2B,GAAA,GAAAm2B,IAEA,UAAA5oC,GAAA,GAAAgc,EAAArM,QAAA,YACAqM,EAAAA,EAAApa,MAAA,UAAA9B,QACAu1B,QAAAkN,EAAAvmB,GACAumB,EAAAvmB,GAAAvJ,EAAApD,MAAA,KAEAkzB,EAAAvmB,GAAAvJ,EAAApD,MAAA,KAAAnE,OAAAq3B,EAAAvmB,KAEA,QAAAhc,GAAAmY,EAAAgR,SAAA,YACA,IAAA1W,IACA4iB,SAAAkN,EAAAvmB,GACAumB,EAAAvmB,GAAAtW,KAAA+M,GAEA8vB,EAAAvmB,IAAAvJ,IAEA,UAAAzS,EACAuiC,EAAAvmB,GAAA6M,SAAApW,GACA,YAAAzS,EACA8oC,EAAAn5B,QAAAqM,KAAA,IACAumB,EAAAvmB,GAAA,MAAAvJ,GAEA8vB,EAAAvmB,GAAAvJ,GAeA,MATA2tB,GAAAjtB,KAAA,mBAAAnS,KAAA,WACA,GAAA2X,GAAAxW,EAAAhD,MACA6c,EAAArD,EAAAsN,KAAA,OACA,IAAAtN,EAAAsN,KAAA,aACAoP,SAAAkN,EAAAvmB,IACA8sB,EAAAn5B,QAAAqM,KAAA,IACAumB,EAAAvmB,IAAA,KAGAumB,GASAE,UAAA,SAAAJ,EAAA9yB,GAIA,GAHA8yB,EAAAlvB,KAAA,cAAA8V,YAAA,aACAoZ,EAAAlvB,KAAA,2BAAApH,SAEAwD,EACA,GAAA,cAAAA,EAAAy5B,MAAA,eAAAz5B,EAAAy5B,KAAA,CACAC,OAAA15B,EAAAC,KAAAH,MAAA,KACA,KAAA,GAAA3O,GAAA,EAAAA,EAAAuoC,OAAAnpC,OAAAY,IAAA,CACA,GAAAy0B,GAAA8T,OAAAvoC,GAAA2O,MAAA,YAEA+wB,GAAA8I,WAAA7G,EAAAlN,EAAA,GAAAA,EAAA,SAGA/B,GAAAb,MAAAhjB,EAAAC,OAKA05B,WAAA,SAAA9I,EAAA+I,EAAAC,GACA,GAAAjxB,GAAAioB,EAAAjtB,KAAA,cAAAg2B,EAAA,IAEA,IAAAhxB,EAAArY,OAAA,EAAA,CACA,GAAAupC,GAAAlxB,EAAA2B,QAAA,cAEA3B,GAAAF,SAAAkR,SAAA,iBACAhR,EAAAA,EAAAF,UAEAoxB,EAAArgB,SAAA,aACA7Q,EAAAkL,MAAAlhB,EAAAgzB,GAAA/1B,GAAA2pB,MAAA,0BAAAqgB,QAEA7W,OAAA,qBAAA4W,IAIAG,WAAA,SAAA95B,GACArN,EAAA,yBAAA8d,QAAA,SAAAzQ,IAQA+5B,cAAA,SAAAhjC,EAAAiJ,GACArN,EAAA,yBAAA8d,QAAA1Z,EAAAiJ,IAGAg6B,QACAC,SAAA,SAAAztB,EAAA0tB,EAAAC,EAAAt3B,GACA,GAEAu3B,GAAAzxB,EAFA0xB,EAAA1X,EAAAN,MAAAiY,mBAAA,0BAAA,gBACAv+B,EAAA,0CAEAiB,EACArK,EAAAgzB,GAAAyM,KAAA7Y,MAAA,cACAyX,EAAA,OAAAqJ,GACA1nC,EAAAgzB,GAAAyM,KAAA7Y,MAAAof,KACAhmC,EAAAgzB,GAAAyM,KAAA7Y,MAAA,eACA5mB,EAAAgzB,GAAA4U,MAAAhhB,MAAA,oBACA0T,MAAA,iDAEA9jB,EAAA,UACArR,QAAAoiC,KAEAvX,EAAAN,MAAAiY,mBACA3nC,EAAAgzB,GAAA4U,MAAAhhB,MAAA,oBACA0T,MAAA,oCAEA9jB,EAAA,WACArR,QAAAqiC,KACAtU,OACAld,EAAAowB,EAAA,QACAC,YAAA,QAAAj9B,EACAkxB,MAAA,8BACAhqB,MAAAuJ,EACA3J,SAAAA,IACAu3B,EAAAznC,EAAAgzB,GAAA4U,MAAAhhB,MAAA,mBAEA5mB,EAAAgzB,GAAA/c,QAAA2Q,MAAA,kBACA/oB,KAAA,UACA,WAQA,OANAmC,GAAAynC,GAAA/mB,GAAA,QAAA,WACA,GAAAmnB,GAAA7nC,EAAAgW,GAAA2B,QAAA,QAAA3G,KAAA,mBACAhR,GAAAgW,GAAAjC,KAAA,cAAA,WAAA3K,GACApJ,EAAAgW,GAAAkR,IAAA,IACA2gB,EAAAxqC,KAAAwqC,EAAAxqC,OAAAgD,QAAA,SAAA,WAEAgK,GAGAiwB,MAAA,SAAAA,GACA,GAAAjwB,GACArK,EAAAgzB,GAAAyM,KAAA7Y,MAAA,cACAyX,EAAA,QAAA,SACAr+B,EAAAgzB,GAAAyM,KAAA7Y,MAAAof,KACAI,EAAA,SACAC,YAAA,oBACA/1B,MAAAgqB,KACA,OAAAjwB,IAOAy9B,OAAA,SAAAA,EAAAC,GACA,GAAAhkB,IAAAsiB,YAAA,YAAA/1B,MAAAw3B,EAEAA,IAAAC,IACAhkB,EAAA+Q,UAAA,EACA/Q,EAAAuW,MAAA,uBAGA,IAAAjwB,GACArK,EAAAgzB,GAAAyM,KAAA7Y,MAAA,cACAyX,EAAA,SAAA,UACAr+B,EAAAgzB,GAAAyM,KAAA7Y,MAAAof,KACAI,EAAA,SAAAriB,IACA,OAAA1Z,IAGA29B,KAAA,SAAAC,EAAAC,EAAAruB,GACAA,EAAAA,GAAAwkB,CACA,IAAAh0B,GACArK,EAAAgzB,GAAAyM,KAAA7Y,MAAA,cACAyX,EAAAxkB,EAAAquB,GACAloC,EAAAgzB,GAAAyM,KAAA7Y,MAAAof,KACAI,EAAAvsB,GACA3J,UAAA,EACAI,MAAA,GAAArB,MAAA,IAAAg5B,GAAAE,oBAEA,OAAA99B,IAGA+9B,YAAA,SAAAA,GACA,GAAA/9B,GACArK,EAAAgzB,GAAAyM,KAAA7Y,MAAA,cACAyX,EAAA,cAAA,eACAr+B,EAAAgzB,GAAAyM,KAAA7Y,MAAAof,KACAO,EAAA,eAAAj2B,MAAA83B,KACA,OAAA/9B,IAGAg+B,eAAA,SAAApB,GACA,GAAA58B,GACArK,EAAAgzB,GAAAyM,KAAA7Y,MAAA,cACAyX,EAAA,iBAAA,WACAr+B,EAAAgzB,GAAAyM,KAAA7Y,MAAAof,KACAO,EAAA,kBACAj2B,MAAA22B,EACAZ,YAAA,gCAEA,OAAAh8B,IAGAirB,KAAA,SAAAA,GACA,GAAAjrB,GACArK,EAAAgzB,GAAAyM,KAAA7Y,MAAA,cACAyX,EAAA,OAAA,QACAr+B,EAAAgzB,GAAAyM,KAAA7Y,MAAAof,KACAM,EAAA,OAAA,8BAAAhR,IACA,OAAAjrB,IAOAi+B,OAAA,SAAAC,EAAAC,GAMA,QAAAnkC,GAAAkb,EAAA8e,GACAgJ,EAAA9jC,MAAAsW,KAAA0F,EACA8e,MAAAA,EACA/tB,MAAAi4B,EAAA/6B,QAAA+R,KAAA,EACAuV,UAAA0T,IATA,GAAAnB,MACAx8B,GAAAgP,KAAA,SAAAwkB,MAAA,uBACAxgC,KAAA,QAoBA,OATAwG,GAAA,MAAA,UACAA,EAAA,QAAA,mBACAA,EAAA,QAAA,WAEAmkC,EAGA39B,EAAAyvB,MAAA,uDAFAzvB,EAAAyvB,MAAA,sDAIA2D,EAAAoJ,OAAAoB,WAAApB,EAAAx8B,IAGA69B,OAAA,SAAAC,GACA,MAAA1K,GAAAoJ,OAAAoB,aACA5uB,KAAA,SAAAwkB,MAAA,uBACA/tB,QAAAq4B,EAAA7T,UAAA6T,KAGA9uB,KAAA,UAAAwkB,MAAA,GACA/D,MAAA,sFAKAsO,WAAA,SAAAA,GACA,GAAAv+B,GACArK,EAAAgzB,GAAAyM,KAAA7Y,MAAA,cACAyX,EAAA,aAAA,cACAr+B,EAAAgzB,GAAAyM,KAAA7Y,MAAAof,KACAI,EAAA,cACAC,YAAA,UAAA/1B,MAAAs4B,KACA,OAAAv+B,IAGAw+B,UAAA,SAAAC,EAAAC,GACA,GAAA1+B,EAgBA,OAdAy+B,GAAAA,IAAA,UACAC,EAAAA,GAAAD,EAAA,GAGAz+B,EADA,GAAAy+B,EAAAnrC,OACAqC,EAAAgzB,GAAAhd,OAAAnY,KAAA,SAAAgc,KAAA,SAAAvJ,MAAAw4B,EAAA,KAEA9oC,EAAAgzB,GAAAyM,KAAA7Y,MAAA,cACAyX,EAAA,SAAA,UACAr+B,EAAAgzB,GAAAyM,KAAA7Y,MAAAof,KACA9uB,EAAA,SACA4xB,GACAx4B,MAAAy4B,OAaAC,MAAA,SAAAA,EAAAC,GACA,GAAA5+B,GACArK,EAAAgzB,GAAAyM,KAAA7Y,MAAA,cACAyX,EAAA,OAAA,oBACAr+B,EAAAgzB,GAAAyM,KAAA7Y,MAAAof,KACAhmC,EAAAgzB,GAAAyM,KAAA7Y,MAAA,eACA5mB,EAAAgzB,GAAA4U,MAAAhhB,MAAA,oBACA0T,MAAA,2CAEA9jB,EAAA,YACArR,QAAA8jC,KAEA7C,EAAA,SACAC,YAAA,6CACA/L,MAAA,gBACAhqB,MAAA04B,MACA,OAAA3+B,IAOAo+B,WAAA,SAAAS,EAAAnlB,GACA,GAAAolB,EAEAplB,GAAA/jB,EAAAgF,QAAA6U,KAAA,UAAAwkB,MAAA,UAAAnjB,IAAA+qB,GACAliB,MAEA,IAAAqlB,IAAAxiB,MAAA,sBAAA,GAAA7C,EAAA7I,KACArB,KAAAkK,EAAAlK,KAEAkK,GAAAuW,QAAA8O,EAAA9O,MAAAvW,EAAAuW,OACAvW,EAAAlmB,OAAAurC,EAAAxiB,OAAA,IAAA7C,EAAAlmB,KAMA,KAAA,GALAwM,GACArK,EAAAgzB,GAAAyM,KAAA7Y,MAAA,cACAyX,EAAAta,EAAAlK,KAAAkK,EAAAsa,MAAAta,EAAA7I,KACAiuB,EAAAnpC,EAAAgzB,GAAAyM,IAAA2J,IAEAloC,EAAA,EAAAA,EAAAgoC,EAAAvrC,OAAAuD,IAAA,CACA,GAAAmoC,GAAAH,EAAAhoC,GACA2J,GAAAhN,KAAA,WAAAgc,KAAAwvB,EAAAxvB,KAAAyvB,aAAA,QACAD,GAAA/4B,QACAzF,EAAA1F,QAAA,WACAkkC,EAAAvU,WACAjqB,EAAAqF,SAAA,YACAlQ,EAAAmpC,GAAAroB,OAAA9gB,EAAAgzB,GAAAqL,OAAAzX,MAAA,mBACA5mB,EAAAgzB,GAAAhd,MAAAnL,GAAAw+B,EAAAhL,QAGA,MAAAh0B,IAGAk/B,MAAA,SAAAj5B,GACA,GAAAjG,GACArK,EAAAgzB,GAAAyM,KAAA7Y,MAAA,cACAyX,EAAA,QAAA,oBAAA,GACAr+B,EAAAgzB,GAAAyM,KAAA7Y,MAAA,YACA5mB,EAAAgzB,GAAAyM,KAAA7Y,MAAA,eACAwf,EAAA,SACA9L,MAAA,8BACAz8B,KAAA,SACAyS,MAAAA,MACA,OAAAjG,IAGAwP,KAAA,SAAAA,EAAAqB,GACAA,EAAAA,GAAA,CACA,IAAA7Q,GACArK,EAAAgzB,GAAAyM,KAAA7Y,MAAA,cACAyX,EAAA,OAAA,OAAAnjB,GACAlb,EAAAgzB,GAAAyM,KAAA7Y,MAAA,WAAA,GAAA1L,IACAkrB,EAAA,QACAC,YAAA,OACA/1B,MAAAuJ,KACA,OAAAxP,IAGAm/B,SAAA,SAAA3vB,EAAAqB,GACAA,EAAAA,GAAA,CACA,IAAA7Q,GACArK,EAAAgzB,GAAAyM,KAAA7Y,MAAA,cACAyX,EAAA,WAAA,YAAAnjB,GACAlb,EAAAgzB,GAAAyM,KAAA7Y,MAAA,WAAA,GAAA1L,IACAkrB,EAAA,YACAC,YAAA,YACA/1B,MAAAuJ,KACA,OAAAxP,IAGArC,OAAA,SAAA6R,EAAAvJ,GACA,GAAA4iB,SAAA5iB,EACA,MAAAtQ,GAAAgzB,GAAAhd,OAAAnY,KAAA,SAAAgc,KAAAA,EAAAvJ,MAAAA,KAYAmP,QAAA,SAAAsE,GACAA,EAAAA,KACA,IAAAsa,GAAAta,EAAAsa,OAAA,eACApQ,EAAAlK,EAAAkK,QAAAgY,EACAhwB,EAAAjW,EAAAgzB,GAAA/c,QAAA4D,KAAA,OACA+M,MAAA,mBAEAyX,EAEAr+B,GAAAiW,GAAAyK,GAAA,QAAA,SAAA2Q,GACA,GAAAhnB,GAAArK,EAAAqxB,EAAAlc,QAAA4C,QAAA,QAAA,GACA1K,EAAA4wB,EAAAkC,kBAAAngC,EAAAqK,GAKA,OAHA0Z,GAAA0lB,OAAApY,EAAAhkB,GACArN,EAAAqxB,EAAAlc,QAAA4C,QAAA,UAAAkZ,MAAA,QACAI,EAAAjU,kBACA,GAGA,IAAA/S,GACArK,EAAAgzB,GAAAyM,KAAA7Y,MAAA,cACA5mB,EAAAgzB,GAAAyM,KAAA7Y,MAAA,iBAAAqH,EAAA,YAAA,GAAAA,IACAhY,EACAjW,EAAAgzB,GAAA/c,QAAA4D,KAAA,SACA+M,MAAA,iBACAuX,eAAA,SACA,WACA,OAAA9zB,IAUAkM,MAAA,SAAAsD,EAAA4F,EAAA5hB,GACA,GAAAwM,GAAArK,EAAAgzB,GAAAyM,KAAA7Y,MAAA,YAAA8iB,cAAA,WACA7rC,GAAAA,GAAA,OAEA,KAAA,GAAAU,GAAA,EAAAA,EAAAkhB,EAAA9hB,OAAAY,IAAA,CACA,GAAAorC,GAAA,wBACAlqB,GAAAlhB,GAAA2qB,SACAygB,GAAA,UAEA,IAAA9+B,IAAAhN,KAAAA,EAAAgc,KAAAA,EACAyvB,aAAA,MACAh5B,MAAAmP,EAAAlhB,GAAA+R,OAEAs5B,GAAAhjB,MAAA+iB,EACAlqB,GAAAlhB,GAAA+7B,QACAsP,EAAAtP,MAAA7a,EAAAlhB,GAAA+7B,OACAt6B,EAAAqK,GAAAyW,OAAA9gB,EAAAgzB,GAAAqL,MAAAuL,EACA5pC,EAAAgzB,GAAAhd,MAAAnL,GACA4U,EAAAlhB,GAAA8/B,QAGA,MAAAh0B,KAIAw/B,SACAC,UAAA,SAAAC,GACA,MAAA/pC,GAAAgzB,GAAA4U,MAAAhhB,MAAA,uBAAAmjB,KAGAC,SAAA,SAAAnsC,GACA,MAAAmC,GAAAgzB,GAAA4U,MAAAhhB,MAAA,2BAAA/oB,KAGAosC,gBAAA,SAAAF,EAAAhmB,GACA,GAAAoiB,IAAAvf,MAAA,MAAA/oB,KAAA,SAMA,OAJAkmB,GAAA0lB,SAAAtD,EAAA,eAAApiB,EAAA0lB,QACA1lB,EAAAuW,QAAA6L,EAAA7L,MAAAvW,EAAAuW,OACAvW,EAAA6C,QAAAuf,EAAAvf,OAAA,IAAA7C,EAAA6C,OAEA5mB,EAAAgzB,GAAA/c,OAAAkwB,EAAAlI,EAAA4L,QAAAC,UAAAC,KAgBAG,eAAA,SAAApL,EAAA/a,GACAA,IAAAA,KACA,IAAA4lB,GAAA5lB,EAAAomB,SACAC,EAAArmB,EAAAqmB,QAEAlS,EAAAl4B,EAAAgzB,GAAAyM,KACA7Y,MAAA,sBAAA+iB,EAAA,IAAAA,EAAA,KACA3pC,EAAAgzB,GAAA/c,QACA2Q,MAAA,kBACA8iB,cAAA,YACA5K,GACA9+B,EAAAgzB,GAAAqX,IAAAzjB,MAAA,iBAAAwjB,EAAA,IAAAA,EAAA,MAKA,OAHArmB,GAAAumB,SACArM,EAAA4L,QAAAU,aAAAvqC,EAAAk4B,GAAAnU,EAAAymB,OAAAzmB,EAAAumB,SAEApS,GAGAqS,aAAA,SAAAE,EAAAD,EAAAF,GAGA,QAAAI,GAAArZ,EAAA50B,GACA,GAAAgtC,GAAAzpC,EAAAvD,GAAA4Q,KAAA,SAEAo8B,IACAA,EAAAprC,KAAAmsC,EAAA/tC,GAGA,QAAAkuC,GAAAtM,EAAAuM,GACA,GAAA1X,SAAA0X,EACA,GAAA,GAAAvM,EAAA7wB,QAAA,MACA68B,EAAAvpB,OAAA9gB,EAAAgzB,GAAA6X,IAAAjkB,MAAA,iBACA,CACA,GAAAnqB,GAAAuD,EAAAgzB,GAAAv2B,EAAA4hC,EAEAr+B,GAAAvD,GAAA4Q,KAAA,SAAAu9B,GACAP,EAAAvpB,OAAA9gB,EAAAgzB,GAAA6X,GAAApuC,KAjBA,GAAA4tC,GAAAI,EAAAz5B,KAAA,iBAsBA,KAAA,GAAAvU,KAAA6tC,GACAA,EAAA58B,eAAAjR,IACAkuC,EAAAluC,EAAA6tC,EAAA7tC,GAMA,OAFA4tC,GAAA3pB,GAAA,QAAA,IAAA,SAAA2Q,GAAAqZ,EAAArZ,EAAAr0B,QAEAytC,IAyGA,OAAAxM,KCjrBA9O,OAAA,WAAA,SAAA,cAAA,QACA,SAAAnvB,EAAAywB,EAAAwN,GACA,GAAA6M,IAWAvnC,KAAA,SAAAwnC,GACA,GAAAC,GAAAjuC,OAAAqY,SAAA61B,QAEA,IAAAD,GAAAD,EAAA1hB,IAAA,CACA,GAAAlc,IAAAiI,SAAA21B,EAAA1hB,IAEA0hB,GAAAG,OACA/9B,EAAA+9B,KAAAH,EAAAG,MAEAnuC,OAAA+tC,QAAAK,UAAAh+B,EAAA,GAAA49B,EAAA1hB,KACAxsB,SAAAy9B,MAAA,aACAyQ,EAAAt0B,KAAAs0B,EAAAt0B,KACA,4BAOAnF,IAAA,SAAAnS,GACAA,EAAAgO,QACAhO,EAAAgO,MAAA+9B,MAAA/rC,EAAAgO,MAAA+9B,KAAArxB,KACA7Z,EAAA,UAAA0vB,MAAA,WAAAvwB,EAAAgO,MAAA+9B,KAAArxB,MACA1a,EAAAgO,MAAAiI,WACArY,OAAAqY,SAAAjW,EAAAgO,MAAAiI,YASAg2B,gBAAA,GAaAC,UAAA,SAAAC,GAGA,QAAAC,GAAAC,EAAAC,GACA,MAAAD,GAAA3tC,MAAA4tC,EAAA5tC,MAAA2tC,EAAAj8B,IAAAk8B,EAAAl8B,GAGA,IAAA,GANAm8B,GAAAjb,EAAAO,OAAA,uBAMAzyB,EAAA,EAAAA,EAAAmtC,EAAA/tC,OAAAY,IACA,GAAAgtC,EAAAD,EAAAI,EAAAntC,IAAA,CACAmtC,EAAAn9B,OAAAhQ,EAAA,EACA,OAGA,KAAAmtC,EAAA/tC,OAAA,EAAAmtC,EAAAM,iBACAM,EAAAp6B,KACAo6B,GAAAn9B,OAAA,EAAA,EAAA+8B,GAEA7a,EAAAK,OAAA,kBAAA4a,IAGAC,WAAA,SAAAta,EAAAia,GACA,MAAAR,GAAAa,WAAAL,EAAAM,SAAAva,EAAAia,IAOAO,eAAA,WACA,GAAAxB,GAAArqC,EAAAhD,MACA0uC,EAAAjb,EAAAO,OAAA,sBAEAqZ,GAAA1kC,KAAA,GACA,KAAA,GAAApH,GAAA,EAAAA,EAAAmtC,EAAA/tC,OAAAY,IAAA,CACA,GAAAY,GAAAusC,EAAAntC,EAEA,IAAAY,EAAAoQ,GAAA,CACA,GAAA9S,GAAAuD,EAAAgzB,GAAAv2B,EAAAwhC,EAAA4L,QAAAG,SAAA7qC,EAAAoQ,GAAArC,MAAA,KAAAoE,OACAnS,EAAAk/B,OAAAl/B,EAAAoQ,GAEAvP,GAAAvD,GAAA4Q,KAAA,WAAAlO,GACAkrC,EAAAvpB,OAAA9gB,EAAAgzB,GAAA6X,GAAApuC,OAeA,OANAquC,GAAAa,WAAAG,MAAA,SAAAza,EAAAia,GACAtrC,EAAAqxB,EAAAlc,QAAA4C,QAAA,UAAA2X,MAAA,WAAA4b,EAAA/7B,KAGAxS,OAAAgvC,WAAAjB,EAAAx5B,IAEAw5B,ICrHA3b,OAAA,SAAA,UACA,SAAAnvB,GAEA,GAAAgsC,IAKAC,WAAA,SAAA5uC,GACA,MAAAA,GACAR,SAAAO,cAAA,KACAG,YAAAV,SAAA2G,eAAAnG,IACAG,WACAyF,UAJA,IAOAipC,MAAA,SAAA9L,GACAA,EAAAvZ,SAAA,SACA3e,WAAA,WAAAk4B,EAAAtZ,YAAA,UAAA,OAUA,OANA,kBAAAvU,QAAA3K,UAAAkrB,aACAvgB,OAAA3K,UAAAkrB,WAAA,SAAAlD,GACA,MAAA,KAAA5yB,KAAAmvC,YAAAvc,EAAA,KAIAoc,IC5BA7c,OAAA,QAAA,SAAA,SAAA,cAAA,OAAA,SACA,SAAAnvB,EAAAgwB,EAAAS,EAAAwN,EAAA+N,IAEA,SAAAhsC,GAukBA,QAAAosC,GAAA78B,EAAAwU,GACAA,EAAAA,KACA,IAAAsmB,GACA5tC,EACAod,EAAAkK,EAAAlK,IAEAA,IAAA,QAAAkK,EAAA8b,OACAhmB,EAAA,MACAA,IACAA,EAAAtK,EAEA,IAAAs7B,GAAA7qC,EAAAgzB,GAAA6X,IAAAjkB,MAAA,gBAAArX,GAAAA,EAAA+qB,MAAAzgB,GACApd,EAAAuD,EAAAgzB,GAAAv2B,GAAAmqB,MAAA,yBACA8iB,cAAA,YAEA2C,EAAAtoB,IACAsmB,EAAArqC,EAAAgzB,GAAAqX,IAAAzjB,MAAA,2BACA0T,MAAA,KAGA,IAAA,QAAAvW,EAAA8b,KAAA,CACA7/B,EAAAvD,GAAAqkB,OAAA9gB,EAAAgzB,GAAAt2B,GAAAkqB,MAAA,UAEA,IAAA5Q,GAAAhW,EAAAgzB,GAAAhd,OAAAnY,KAAA,OACAwoC,YAAA,YACA/1B,MAAAyT,EAAAlK,MAAA,GACAygB,MAAA,aAEA+P,GAAAvpB,OAAA9gB,EAAAgzB,GAAA6X,GAAA70B,IACAhW,EAAAgW,GAAAs2B,SAAA,SAAAjb,GACA,GAAA,IAAAA,EAAAhR,MAAA,CACA,GAAAxG,GAAA7Z,EAAAgW,GAAAkR,MAAAnY,MAEA,KAAA8K,IACA7Z,EAAA,SAAA8d,QAAA,QACAjgB,KAAA,gBACAgc,KAAAA,IAEA4W,EAAAK,OAAA,YAAAjX,IAEA7Z,EAAAgW,GAAA2B,QAAA,kBAAAmP,YAAA,WAIAmX,EAAA4L,QAAAU,aAAAvqC,EAAA6qC,GAAA7qC,EAAA,aAOAqqC,EAAAvpB,OAAA9gB,EAAAgzB,GAAA6X,IAAAjkB,MAAA,aAGA,MAAAikB,GAGA,QAAAwB,GAAAtoB,GACA,MAAAA,GAAAsoB,OACArsC,EAAAgzB,GAAAuZ,KAAA3lB,MAAA,SAAA9gB,IAAAie,EAAAsoB,SAGArsC,EAAAgzB,GAAA4U,MAAAhhB,MAAA,oCAOA,QAAA4lB,KACA,GAAAtvC,GAAA,GAAA+R,KACA,OAAA/R,GAAAsvC,UA7oBA,GAAA9N,GAAA,OACA+N,EAAA,GACAC,EAAA,KAGA/N,GACAC,MAAA,SAAA7a,GACA,MAAA/mB,MAAA6B,KAAA,WACA,GAAAwL,GAAArK,EAAAhD,MACAqQ,IAEAhD,GAAAgD,KAAAqxB,EAAArxB,GAGAhD,EAAAqW,GAAA,QAAA,SAAA2Q,GACA,GAAAwZ,GAAA7qC,EAAAqxB,EAAAlc,QAAAwC,QAAA,UAEA,IAAAkzB,EAAAltC,QACA0M,EAAAsiC,KAAA,WAAA9B,EAAA92B,KAAA,SAEA1J,EAAAqW,GAAA,OAAA,SAAA2Q,EAAA4V,GACA58B,EAAAsiC,KAAA,OAAA1F,KAEAjnC,EAAAjD,QAAA8xB,KAAA,eAAA,WACAxkB,EAAAsiC,KAAA,gBAIA3c,EAAAN,MAAAid,MACAtiC,EAAAsiC,KAAA,cAYAC,QAAA,WAOA,QAAAC,GAAAhzB,EAAAizB,GACA,GAAAx8B,GAAAmgB,EAAAO,OAAA8b,EAEAx8B,KACA,eAAAw8B,IAEAx8B,EAAA0f,EAAA2C,KAAAC,UAAAyZ,OAAA/7B,EAAApD,MAAA,KAAAoE,OAGA+X,GAAA0jB,EAAAlzB,EAAA,IAAAwO,mBAAA/X,GACAy8B,EAAA,KAhBA,GAAA1iC,GAAArN,KACAqQ,EAAArQ,KAAAqQ,KAAAqxB,GACArV,EAAAtsB,OAAAqY,SAAA6V,KAAA+E,EAAA2C,KAAAC,UAAAoa,WACAD,EAAA,IACAE,EAAAlwC,OAAAqY,SAAAmU,SAAAlpB,QAAA,OAAA,KAgBAwsC,GAAA,SAAA,eACAA,EAAA,WAAA,aAEAx/B,EAAA6/B,YACA7jB,GAAA0jB,EAAA,aAAA1kB,mBAAAhb,EAAA6/B,WACAH,EAAA,KAGA1/B,EAAA8/B,WAAA,GAAAC,WAAAH,EAAA,KAAA5jB,GACA,iCAEAhc,EAAA8/B,WAAApgB,QAAA,SAAA3f,GACA/C,EAAAsiC,KAAA,YAAAzZ,SAEA7lB,EAAA8/B,WAAArN,QAAA,SAAAzO,GACA,MAAAqb,EACAD,EAAA,MACAA,GAAA,GAEAD,IAAAE,EAAA,IACAD,EAAA,GACAA,EAAA,MACAA,GAAA,GAEAvkC,WAAA,WACAmC,EAAAsiC,KAAA,YACAF,IAEAp/B,EAAA8/B,WAAAE,UAAA,SAAAluC,GACA,GAAA8nC,GAAA/mC,KAAAC,MAAAhB,EAAAkO,KACA45B,GAAAqG,OAAAnuC,EAAAmuC,OACArG,EAAAppC,KACAwM,EAAAsiC,KAAA1F,EAAAppC,KAAAopC,GAEAttB,QAAA4zB,IAAApuC,IAEAkO,EAAA8/B,WAAAK,OAAA,WACAnjC,EAAAsiC,KAAA,eACA3sC,EAAA,YAAAytC,QAAA,iBAIAC,YAAA,WAGA,IAFA,GAAArgC,GAAArQ,KAAAqQ,KAAAqxB,GAEArxB,EAAApE,OAAAoE,EAAApE,WAAA,GAAAoE,EAAA8/B,WAAAjzB,YAAA,CACA,GAAA0V,GAAAviB,EAAApE,MAAAyD,OACAW,GAAA8/B,WAAA3hB,KAAAoE,KAIA+d,WAAA,WACA,GAAAtgC,GAAArQ,KAAAqQ,KAAAqxB,EAOA,OALA1hC,MAAA2vC,KAAA,QAAA9uC,KAAA,WACAwP,EAAA8/B,WAAArN,QAAA,aACAzyB,EAAA8/B,WAAAnX,QACA3oB,EAAA8/B,WAAAja,OAEAl2B,MAWAwuB,KAAA,SAAAyb,GACA,GAAA55B,GAAArQ,KAAAqQ,KAAAqxB,EAEA,IAAArxB,GAAAA,EAAA8/B,WAAA,CACA,GAAAvd,GAAA1vB,KAAAiwB,UAAA8W,EAEA,IAAA55B,EAAA8/B,WAAAjzB,YACA7M,EAAApE,MAGAoE,EAAApE,MAAA1F,KAAAqsB,GAFAviB,EAAApE,OAAA2mB,GAGA5yB,KAAA2vC,KAAA,YAEAt/B,EAAA8/B,WAAA3hB,KAAAoE,GAIA,MAAA5yB,OAGA4wC,UAAA,SAAAC,EAAAC,GACA,GAAA7G,IAAAppC,KAAA,YAAAgwC,QAAAA,EAEAC,KACA7G,EAAA6G,YAAAA,GAEA9wC,KAAA2vC,KAAA,OAAA1F,IAGA8G,YAAA,SAAAF,EAAAG,GACA,GAAA/G,IAAAppC,KAAA,cAAAgwC,QAAAA,EAEAC,eACA7G,EAAA6G,YAAAA,aAEA9wC,KAAA2vC,KAAA,OAAA1F,IAYAgH,QAAA,SAAA9uC,GACA,GAAAkO,GAAArN,EAAAhD,MAAAqQ,KAAAqxB,EAEArxB,GAAA6gC,MAAA7gC,EAAA6gC,MAAA/uC,EAAA+uC,MACAlxC,KAAA2I,KAAA,IAGA0H,EAAA6gC,KAAA/uC,EAAA+uC,KACA7gC,EAAA6/B,UAAA/tC,EAAA+tC,UACA/tC,EAAAktC,QAAA,aAAAltC,EAAAgvC,eACA1d,EAAAK,OAAA,cAAA3xB,EAAAktC,QACAltC,EAAA0gC,KAAA,MAEA,IAAAgL,GAAA7tC,KAAA2vC,KAAA,UAAAxtC,EACAa,GAAA6qC,GAAAhkB,SAAA,UACA7pB,KAAA2vC,KAAA,YAAAxtC,EAAAivC,UACA1B,EAAAF,IAEArtC,EAAAkvC,aACAruC,EAAA,UAAAsuC,MAAA,SAAA,UAGAC,UAAA,SAAAC,GACA,GAAAnkC,GAAArK,EAAA,cAEAkzB,SAAAsb,EACAnkC,EAAAyL,SAAAgF,QAEAzQ,EAAAyL,SAAA+E,OACAxQ,EAAAhN,KAAAmxC,KAUAC,OAAA,SAAAtvC,GACA,GAAAA,EAAAsvC,OACA,IAAA,GAAAlwC,GAAA,EAAAA,EAAAY,EAAAsvC,OAAA9wC,OAAAY,IAAA,CACA,GAAAmwC,GAAAvvC,EAAAsvC,OAAAlwC,EACAvB,MAAA2vC,KAAA,UAAA+B,GACAA,EAAAj4B,MACAzZ,KAAA2vC,KAAA,cAAA+B,EAAAR,KAAAQ,EAAAj4B,QAUAk4B,QAAA,SAAAxvC,GACA,GAAA0rC,GAAA7qC,EAAA,IAAAb,EAAA+uC,KAEArD,GAAApzB,SAAA,KAAA9R,KAAA,IAAAmb,OAAAurB,EAAAltC,IACAA,EAAAktC,SACArsC,EAAA,iBAAAb,EAAA+uC,KAAA,gBAAAn6B,KAAA,MAAA5U,EAAAktC,QACA,aAAAltC,EAAAgvC,eACA1d,EAAAK,OAAA,cAAA3xB,EAAAktC,SAGAltC,EAAA0a,OACAgxB,EAAA/mB,KAAA,QAAA3kB,EAAA0a,MACA,iBAAA1a,EAAAyvC,SACAzvC,EAAAwG,KAAA,YAAAqmC,EAAAC,WAAA9sC,EAAA0a,MAAA,OACA7c,KAAA2vC,KAAA,aAAAxtC,MASA0vC,SAAA,SAAA1vC,GACA,GAAA2vC,GAAA9uC,EAAA,IAAAb,EAAA+uC,KAEAlxC,MAAA2vC,KAAA,OAAAmC,GAAA,GACA3vC,EAAAivC,UACApxC,KAAA2vC,KAAA,YAAAxtC,EAAAivC,WAMAW,OAAA,SAAA5vC,GACAA,EAAAivC,UACApxC,KAAA2vC,KAAA,YAAAxtC,EAAAivC,WAGAY,eAAA,WACAhvC,EAAA,UAAAsuC,MAAA,SAAA,mBAMAn1B,OAAA,SAAAha,GACAnC,KAAA2vC,KAAA,aAAAxtC,IAOA8vC,eAAA,SAAA9vC,GACA,GAAA+vC,GAAAlvC,EAAA,gBAAAmvC,SAAA,QAAAhwC,EAAAiwC,MAEAF,GAAAvxC,OAAA,GACAuxC,EAAAC,SAAA,MAAAhwC,GACAA,EAAAkwC,WAAA,GAEArvC,EAAA,IAAAb,EAAAmwC,KAAA//B,IAAA5R,OAAA,IACAspC,IAAAjnC,EAAAgF,UAAA7F,GACA8nC,IAAAiH,KAAA/uC,EAAAmwC,KAAA//B,GACA03B,IAAAthC,KAAA,gBACA3I,KAAA2vC,KAAA,aAAA1F,MAIAjnC,EAAA,YAAAytC,QAAA,eAAAtuC,IAkBAowC,WAAA,SAAAxrB,GACA,GAAA1Z,GAAArN,KACAwyC,EAAAxyC,KAAA2vC,KAAA,UAAA5oB,EAEA,IAAAyrB,EAAA7xC,OAAA,EAAA,CACA,GAAA8hC,GAAAz/B,EAAAgzB,GAAAyM,KAAA7Y,MAAA,4BACArX,GAAA,OAAAwU,EAAAmqB,OAEAuB,EAAAD,EAAAvhB,QAUA,IARAjuB,EAAA,QAAA8gB,OAAA2e,GACAz/B,EAAAy/B,GAAA95B,KAAAoe,EAAApe,MACA5E,KAAA2iB,KAAA+rB,EAAA/rB,KAAA8rB,EAAA/oC,QAAAzG,EAAAy/B,GAAAiQ,aAAA,GACA58B,IAAA28B,EAAA38B,IAAA08B,EAAA9mC,SAAA,KAEAgY,GAAA,QAAA,WAAA1gB,EAAAy/B,GAAA71B,WACAiR,KAAAkJ,EAAAyB,QAAA,KAEA,IAAAzB,EAAA4rB,KAAA,CACA,GAAAA,GAAA5rB,EAAA4rB,IAEAA,KACAA,EAAAH,EAAAxoB,SAAA,UAAA,IAAA,KAEA9e,WAAA,WACAlI,EAAAy/B,GAAA3kB,KAAAiJ,EAAA0B,SAAA,IAAA,WACApb,EAAAsiC,KAAA,WAAA5oB,EAAAmqB,SAEAyB,GAGA3yC,KAAA2vC,KAAA,cAAA5oB,KAIA6rB,SAAA,SAAA1B,GAMA,MALAluC,GAAA,QAAAkuC,GAAAtkC,SAEA5J,EAAA,IAAAkuC,GAAAlnB,SAAA,YACAhqB,KAAA2vC,KAAA,aAAAuB,GAEAlxC,MAGA6yC,YAAA,SAAA9rB,GAGA,QAAAtN,KACA,MAAAsN,GAAA+rB,WAAA,GAHA,GAAAziC,GAAArN,EAAAhD,MAAAqQ,KAAAqxB,EAMA,IAAA,UAAA3a,EAAA3f,MACApH,KAAA2vC,KAAA,cAAA5oB,EAAAmqB,KAAAz3B,SACA,IAAA,UAAAsN,EAAA3f,MAAA,CACA,GAAA8pC,GAAAnqB,EAAAmqB,MAAA7gC,EAAA6gC,KAAAhb,OAAAnP,EAAAmqB,IACAlxC,MAAA2vC,KAAA,iBAAAuB,EAAAz3B,KAAA,KAWAs5B,QAAA,SAAAhsB,GACA,GAAA8mB,GAAA7qC,EAAA,IAAA+jB,EAAAmqB,KASA,OAPA,IAAArD,EAAAltC,QACAktC,EAAA7qC,EAAAosC,EAAAroB,EAAAmqB,KAAAnqB,IACA/mB,KAAA+jB,QAAA8pB,IAEA7tC,KAAA2vC,KAAA,OAAA9B,GAAA,GAGAA,GAOAmF,WAAA,SAAA9B,GACA,gBAAAA,KACAA,GAAAA,KAAAA,IAGAhb,SAAAgb,EAAAE,UACApxC,KAAA2vC,KAAA,YAAAuB,EAAAE,SACA,IAAAvD,GAAA7qC,EAAA,IAAAkuC,EAAAA,KACA,OAAA,IAAArD,EAAAltC,OACAX,MAEA,SAAAkxC,EAAAU,OACA5uC,EAAA,QAAAkuC,EAAAA,MAAAvwC,OAAA,EACAktC,EAAAhkB,SAAA,WAEAgkB,EAAA/vB,KAAA,IAAA,WAAA9d,KAAA4M,WAEA5M,KAAA2vC,KAAA,OAAA9B,GAAA,GAGA7tC,OAQAizC,KAAA,SAAApF,EAAAoF,GACAA,EACApF,EAAAhkB,SAAA,QAEAgkB,EAAA/jB,YAAA,QAGA+jB,EAAAhsC,KAAA,WACA,GAAAwL,GAAArK,EAAAhD,KACA,IAAAizC,EACA5lC,EAAAgD,KAAA,aACAnF,WAAA,WACAlI,EAAA,IAAAkuC,KAAAA,MAAAlnB,SAAA,SACAhnB,EAAA,IAAAkuC,KAAAA,MAAAtkC,UACA,UACA,CACA,GAAAsmC,GAAA7lC,EAAAgD,KAAA,aACA6iC,KACApqB,aAAAoqB,GACA7lC,EAAAgD,KAAA,aAAA6lB,aAWAid,UAAA,SAAA9I,GACA,GAAAwD,GAAA7qC,EAAAhD,MACAsyC,IAKA,MAHAjI,GAAAA,EAAA75B,QAAA,OAAA,KACA8hC,EAAA//B,GAAAs7B,EAAA92B,KAAA,QAEAszB,GAAAA,EAAA75B,QAAA,SAAA,EAAA,CACA,GAAAqM,GAAAgxB,EAAA/mB,KAAA,QACAjK,IAAA,OAAAA,IACAy1B,EAAAz1B,KAAAA,GAMA,QAJAwtB,GAAAA,EAAA75B,QAAA,WAAA,KACA8hC,EAAAjD,OAAAxB,EAAA75B,KAAA,cAAA+C,KAAA,QAGAu7B,GASAc,MAAA,SAAA/I;AACA,GAAA+I,MACAC,GAAAD,MAAAA,EAeA,OAbApzC,MAAAgU,KAAA,eAAAnS,KAAA,WACA,GAAAwL,GAAArK,EAAAhD,MACAszC,EAAAjmC,EAAA2c,SAAA,UACAsoB,EAAAjlC,EAAAsiC,KAAA,YAAA2D,EAAApd,OAAAmU,EAEAiJ,KACAD,EAAAC,KAAAtwC,EAAAgF,UAAAsqC,GACAA,EAAAiB,SAAA,GAGAH,EAAA7sC,KAAA+rC,KAGAe,GAMAC,KAAA,SAAAjJ,GACA,GAAAwD,GAAA7tC,KAAAgU,KAAA,qBAEA,OAAA65B,GAAA8B,KAAA,YAAAtF,IAMAmJ,YAAA,SAAAtC,EAAAz3B,GACA,GAEAg6B,GAFA5F,EAAA7qC,EAAA,IAAAkuC,GACA7D,EAAAQ,EAAA75B,KAAA,mBAUA,IAPAq5B,EAAAr5B,KAAA,WAAAnS,KAAA,WACA,GAAAmB,EAAAhD,MAAAqQ,KAAA,SAAAoJ,EAEA,MADAg6B,GAAAzzC,MACA,IAIAk2B,QAAAud,EAAA,CACA,GAAA5yC,GAAA4Y,EAAAvJ,MAAA,KAAAoE,KACA+4B,GAAAvpB,OACA9gB,EAAAgzB,GAAA6X,IAAAjkB,MAAA,OAAA8pB,YAAAj6B,EAAA6jB,MAAA,eACAt6B,EAAAgzB,GAAAv2B,EAAAuD,EAAAgzB,GAAA4U,MAAAhhB,MAAA,2BAAA/oB,IACA4Y,KAGA,MAAAzZ,OAUA2zC,eAAA,SAAAzC,EAAAz3B,EAAAm6B,GAGA,QAAAC,GAAArB,GACA,GAAAnF,GAAAmF,EAAA/3B,SAAA,mBAEA4yB,GAAAr5B,KAAA,WAAAnS,KAAA,WACA,GAAAmB,EAAAhD,MAAAqQ,KAAA,SAAAoJ,EAMA,MALAzW,GAAAhD,MAAA4M,SACAgnC,IACApB,EAAAxoB,SAAA,WACA,GAAAqjB,EAAAr5B,KAAA,WAAArT,QACA0M,EAAAsiC,KAAA,aAAA6C,EAAAz7B,KAAA,QACA,IAZA,GAAA1J,GAAArN,IAiBAkxC,GACA2C,EAAA7wC,EAAA,IAAAkuC,IAEAlxC,KAAAya,WAAA5Y,KAAA,WACAgyC,EAAA7wC,EAAAhD,MAAAyZ,EAAAm6B,MAgGA5wC,GAAA2N,GAAAg/B,KAAA,SAAA5hB,GACA,MAAA4T,GAAA5T,GACA4T,EAAA5T,GACAvrB,MAAAxC,KAAA+M,MAAAnC,UAAAnI,MAAApB,KAAA6F,UAAA,IACA,gBAAA6mB,IAAAA,MAGA/qB,GAAAoN,MAAA,UAAA2d,EAAA,6BAAA2T,GAFAC,EAAAC,MAAAp/B,MAAAxC,KAAAkH,aAKAorB,UCpsBA,SAAAtvB,EAAAkzB,GACA,GAAA4d,GAAA,EACAC,EAAA,KACAC,KACAC,EAAA,IACAjxC,GAAA2N,GAAAT,MAAA,SAAA6W,GA0CA,QAAAmtB,GAAA7uB,GACA,GAAA,gBAAAA,GACA,MAAAA,EACA,IAAA,gBAAAA,GAAA,CACA,GAAAvjB,GAAAujB,EAAAvjB,MAAA,qBACA,IAAAA,EAAA,CACA,GAAA,MAAAA,EAAA,GACA,OAAAA,EAAA,EAEA,IAAA,YAAAqyC,EAAAC,YACA,MAAA3qC,IAAA3H,EAAA,GAAA,GACA,IAAA,cAAAqyC,EAAAC,YACA,MAAA1oC,IAAA5J,EAAA,GAAA,MArDA,GAAAuO,GAAArQ,KAAAqQ,KAAA,WACA,IAAAA,EACA,MAAAA,EAEA,IAAAgkC,GACAC,EACAH,EAAAnxC,EAAAgF,QACAgkC,MAAA,IACAoI,YAAA,aACA/uB,SAAA,MACAkvB,WAAA,EACAC,YAAAxxC,EAAA2O,KACA8iC,UAAAzxC,EAAA2O,KACA+iC,OAAA1xC,EAAA2O,MACAoV,MACA/mB,MAAAm0C,SAAAA,CACA,IAAAxH,GACAlyB,EAAAza,KAAAya,UACA,aAAA05B,EAAAC,aACAC,EAAA55B,EAAArJ,QAAAyY,SAAA,cACAyqB,EAAAD,EAAA5gC,OAAAoW,SAAA,eACA8iB,EAAA,aACA,cAAAwH,EAAAC,cACAC,EAAA55B,EAAArJ,QAAAyY,SAAA,aACAyqB,EAAAD,EAAA5gC,OAAAoW,SAAA,gBACA8iB,EAAA,aAEAwH,EAAAI,YACA5H,GAAA,sBAEA,IAAAljC,GAAAzJ,KAAAyJ,QACAiC,EAAA1L,KAAA0L,SACA6G,EAAAuhC,GACA9zC,MAAA6pB,SAAA,iBACA,IAKAxE,GALAsvB,EAAA3xC,EAAA,UAAA6mB,SAAA8iB,GAAA9a,KAAA,wBAAA,WACAkiB,EAAAxhC,IACAsf,KAAA,sBAAA,WACAkiB,EAAA,OACAxvB,YAAA8vB,GA0BAf,EAAAtwC,EAAAgF,OAAAhI,MACA6/B,QAAA,WACA,GAAA+U,GAAA50C,KAAAyJ,QACAorC,EAAA70C,KAAA0L,QACAjC,IAAAmrC,GAAAlpC,GAAAmpC,IACAprC,EAAAzJ,KAAAyJ,QACAiC,EAAA1L,KAAA0L,SACA4nC,EAAAjuB,SAAAA,KAGAA,SAAA,WACA,MAAA,YAAA8uB,EAAAC,YACA,SAAAzuC,EAAAmvC,GACA,GAAAnvC,IAAAuwB,EACA,MAAA7Q,EAEAA,GAAA6uB,EAAAvuC,EACA,IAAAovC,GAAAJ,EAAAlrC,QACAurC,EAAAD,EAAA,CACA,IAAAZ,EAAAI,UAAA,CACA,GAAAU,GAAAZ,EAAA5qC,MAAA4b,GAAAqtB,YACA4B,GAAA7qC,MAAA6pC,EAAA7pC,QAAAwrC,GACAN,EAAA5wC,IAAA,OAAAkxC,EAAAD,OACA,CACA,GAAAC,GAAAZ,EAAA5qC,MAAA4b,EAAA2vB,GAAAtC,YACA4B,GAAA7qC,MAAA6pC,EAAA7pC,QAAAwrC,EAAAF,GACAJ,EAAA5wC,IAAA,OAAAkxC,GAMA,MAHAH,IACAxB,EAAAt/B,KAAA,mBAAA8M,QAAA,mBAEAwyB,GAEA,cAAAa,EAAAC,YACA,SAAAzuC,EAAAmvC,GACA,GAAAnvC,IAAAuwB,EACA,MAAA7Q,EAEAA,GAAA6uB,EAAAvuC,EACA,IAAAovC,GAAAJ,EAAAjpC,SACAspC,EAAAD,EAAA,CACA,IAAAZ,EAAAI,UAAA,CACA,GAAAU,GAAAZ,EAAA3oC,OAAA2Z,GAAA6vB,aACAZ,GAAA5oC,OAAA4nC,EAAA5nC,SAAAupC,GACAN,EAAA5wC,IAAA,MAAAkxC,EAAAD,OACA,CACA,GAAAC,GAAAZ,EAAA3oC,OAAA2Z,EAAA2vB,GAAAE,aACAZ,GAAA5oC,OAAA4nC,EAAA5nC,SAAAupC,EAAAF,GACAJ,EAAA5wC,IAAA,MAAAkxC,GAMA,MAHAH,IACAxB,EAAAt/B,KAAA,mBAAA8M,QAAA,mBAEAwyB,GAGAtwC,EAAA2O,QAGAyiC,YAAAD,EAAAC,YACApI,MAAAmI,EAAAnI,MACAmJ,SAAA,WACA,MAAApB,KAAAxhC,GAEA6sB,QAAA,WACAkU,EAAAxpB,YAAA,kBACA6qB,EAAA7iB,OAAA,cACA6iB,EAAA7iB,OAAA,cACA6iB,EAAA7iB,OAAA,cACA6iB,EAAA7iB,OAAA,aACA6iB,EAAA7iB,OAAA,YACA6iB,EAAA7iB,OAAA,cACA6iB,EAAA7iB,OAAA,eACA,YAAAqiB,EAAAC,aACAC,EAAAvqB,YAAA,cACAwqB,EAAAxqB,YAAA,gBACA,cAAAqqB,EAAAC,cACAC,EAAAvqB,YAAA,aACAwqB,EAAAxqB,YAAA,iBAEAwpB,EAAAxhB,OAAA,mBACAwhB,EAAAt/B,KAAA,mBAAA8M,QAAA,mBACAkzB,EAAAzhC,GAAA,KACAoiC,EAAA/nC,QAEA,KAAA,GADAwoC,IAAA,EACA7zC,EAAAyyC,EAAArzC,OAAAY,KACA,GAAA,OAAAyyC,EAAAzyC,GAAA,CACA6zC,GAAA,CACA,OAIAA,IACApyC,EAAAnD,SAAA8V,iBAAAmc,OAAA,aACA9uB,EAAAjD,QAAA+xB,OAAA,mBACAwhB,EAAAjjC,KAAA,WAAA,MACA2jC,KACAF,EAAA,KAIAR,GAAAzhB,KAAA,kBAAA,SAAA1vB,GACA,GAAA8kB,GAAAqsB,EAAAjuB,UACA,aAAAiuB,EAAAc,aACAntB,EAAAqsB,EAAA7pC,QACAwd,EAAAqsB,EAAA7pC,QAAA6pC,EAAAtH,MAAA,EACA,cAAAsH,EAAAc,aACAntB,EAAAqsB,EAAA5nC,WACAub,EAAAqsB,EAAA5nC,SAAA4nC,EAAAtH,MAAA,GAEA/kB,EAAAqsB,EAAAtH,QACA/kB,EAAAqsB,EAAAtH,MAAA,GAEAsH,EAAAjuB,SAAA4B,GAAA,IAGA,IAAAA,EAqFA,OApFA,YAAAktB,EAAAC,YAEAntB,EADAA,EAAAxd,EAAA0qC,EAAAnI,MACAviC,EAAA0qC,EAAAnI,MAEAkI,EAAAC,EAAA9uB,UAEA,cAAA8uB,EAAAC,cAGAntB,EADAA,EAAAvb,EAAAyoC,EAAAnI,MACAtgC,EAAAyoC,EAAAnI,MAEAkI,EAAAC,EAAA9uB,WAGA4B,EAAAktB,EAAAnI,QACA/kB,EAAAktB,EAAAnI,OAEAsH,EAAAjuB,SAAA4B,GAAA,GACA,GAAA+sB,EAAArzC,SACAqC,EAAAjD,QAAA8xB,KAAA,kBAAA,WACA7uB,EAAAnB,KAAAmyC,EAAA,SAAAzyC,EAAAozC,GACAA,GAAAA,EAAA9U,cAGA78B,EAAAnD,SAAA8V,iBAAAkc,KAAA,yCAAA,SAAA1vB,GACA,GAAA,OAAA4xC,EAIA,MAHAE,GAAAD,EAAAD,GACA/wC,EAAA,oCAAAe,IAAA,SAAAkwC,EAAAx5B,WAAA/R,GAAA,GAAA3E,IAAA,WAAAwgB,YAAA0vB,GACAA,EAAAE,SAAAK,YAAAryC,IACA,IAEA0vB,KAAA,8EAAA,SAAA1vB,GACA8xC,IACAjxC,EAAA,iBAAA4J,SACAqnC,EAAAE,SAAAM,UAAAtyC,GACA8xC,EAAA,QAEApiB,KAAA,wCAAA,SAAA1vB,GACA,GAAA,OAAA8xC,EAAA,CACA,GAAAjI,GAAAiI,EAAAjI,MACA/a,EAAAgjB,EAAAhjB,QACA,IAAA,YAAAgjB,EAAAG,YAAA,CACA,GAAAnyB,GAAA9f,EAAA8f,KACA9f,GAAAue,eAAAve,EAAAue,cAAAkB,iBACAK,EAAA9f,EAAAue,cAAAkB,eAAA,GAAAK,MAEA,IAAA5P,GAAA4P,EAAAgP,EAAAvK,IACArU,IAAA4hC,EAAAjI,MACA35B,EAAA4hC,EAAAjI,MAAA,EACA35B,GAAA4hC,EAAAxqC,QAAAuiC,IACA35B,EAAA4hC,EAAAxqC,QAAAuiC,EAAA,GAEA35B,EAAA4hC,EAAAjI,OACA35B,EAAA4hC,EAAAxqC,QAAAuiC,IACAiI,EAAA5uB,SAAAhT,GAAA,GACA4hC,EAAAjgC,KAAA,mBACA8M,QAAA,mBACA3e,EAAAie,sBAEA,IAAA,cAAA6zB,EAAAG,YAAA,CACA,GAAAlyB,GAAA/f,EAAA+f,KACA/f,GAAAue,eAAAve,EAAAue,cAAAkB,iBACAM,EAAA/f,EAAAue,cAAAkB,eAAA,GAAAM,MAEA,IAAAhO,GAAAgO,EAAA+O,EAAAnb,GACA5B,IAAA+/B,EAAAjI,MACA93B,EAAA+/B,EAAAjI,MAAA,EACA93B,GAAA+/B,EAAAvoC,SAAAsgC,IACA93B,EAAA+/B,EAAAvoC,SAAAsgC,EAAA,GAEA93B,EAAA+/B,EAAAjI,OACA93B,EAAA+/B,EAAAvoC,SAAAsgC,IACAiI,EAAA5uB,SAAAnR,GAAA,GACA+/B,EAAAjgC,KAAA,mBACA8M,QAAA,mBACA3e,EAAAie,kBAGA6zB,EAAAE,SAAAO,OAAAvyC,OAIA6xC,EAAAztC,KAAA+sC,GACAA,EAAAjjC,KAAA,WAAAijC,GACAA,IAEAhhB,QAEAH,OAAA,YAAA,UAAA,cC1PAA,OAAA,QAAA,SAAA,YACA,YAEA,SAAAnvB,GAyKA,QAAAqyC,GAAAC,GACA,GAAAC,GAAAD,EAAA76B,UAEA,QAAAk6B,SAAAW,EAAAplC,QACAkB,MAAApO,EAAAuyC,EAAA,IAAA96B,WAAA,GACA+6B,OAAAxyC,EAAAuyC,EAAA,IAAA96B,WAAA,IAIA,QAAAg7B,GAAAjiC,GACA,MAAA,cAAAA,EAAA,WAAA,aAlLA,GAAAkuB,GAAA,OAGAC,GAIAC,MAAA,SAAA7a,GACA,MAAA/mB,MAAA6B,KAAA,WACA,GAAAwL,GAAArK,EAAAhD,MACAwT,EAAAnG,EAAA2c,SAAA,cAAA,WAAA,aACA/C,EAAA5Z,EAAA0J,KAAA,cACAw+B,EAAAloC,EAAAoN,UAEAwM,GAAAA,GAAA,MAEAsuB,EAAA1zC,KAAA,WACAmB,EAAAhD,MAAA+uB,KAAA,sCAEA1hB,EAAAwc,SAAA,kBACAxc,EAAA6C,OAAAkkC,YAAA5gC,EACA6R,SAAA4B,EACA+kB,MAAA,GACAwI,YAAA,WAAAnnC,EAAAqoC,KAAA,iBACAhB,OAAA,SAAArgB,GAAAkhB,EAAAz0B,QAAA,gBACA2zB,UAAA,WAAApnC,EAAAqoC,KAAA,kBAEAroC,EAAAqoC,KAAA,eAEAroC,EAAAqW,GAAA,aAAA,SAAA2Q,EAAAnK,GACA7c,EAAAqoC,KAAA,eAKAC,aAAA,WACA,MAAA31C,MAAA6B,KAAA,WACA,GAAAwL,GAAArK,EAAAhD,MACA41C,EAAAP,EAAAhoC,EAEAA,GAAA2G,KAAA,kBAAA8M,QAAA,wBACA80B,EAAAjB,SAAAP,gBAUAyB,YAAA,WAoBA,MAnBA71C,MAAA6B,KAAA,WACA,GAEAlB,GAAAsmB,EAFA5Z,EAAArK,EAAAhD,MACA41C,EAAAP,EAAAhoC,EAGA,eAAAuoC,EAAAjB,SAAAP,aACAzzC,EAAA0M,EAAA3B,SACAub,EAAAjkB,EAAA4yC,EAAAxkC,OAAA1F,WAEA/K,EAAA0M,EAAA5D,QACAwd,EAAAjkB,EAAA4yC,EAAAxkC,OAAA3H,QAGA,IAAAqsC,GAAA1rC,KAAAs0B,MAAA,IAAAzX,EAAAtmB,GAAA,GAEAi1C,GAAAjB,SAAAoB,YAAAD,IAGA91C,KAAAgU,KAAA,kBAAA8M,QAAA,mBACA9gB,MASA+7B,OAAA,WACA,MAAA/7B,MAAA6B,KAAA,WACA,GAAAwL,GAAArK,EAAAhD,MACA20C,EAAAtnC,EAAA6C,OAEAykC,GAAAoB,cACApB,EAAAtvB,SAAAsvB,EAAAoB,aACApB,EAAAR,SAAAO,OAAArnC,OAmBA6C,MAAA,SAAAolC,EAAAU,EAAA/uB,EAAAgvB,GACAD,EAAAA,GAAA,OAEA,IAAAE,GAAAl2C,KACAwT,EAAA,SAAAwiC,GAAA,SAAAA,EAAA,aAAA,WACAl9B,EAAAo9B,EAAAnnB,KAAA,oCACA0mB,EAAAjiC,GACA,WACAsF,QAEAod,SAAAjP,EACAA,EAAA,GACAA,EAAA,GACAA,EAAA,GACAA,EAAA,KACAA,EAAA,IAEAgvB,GAAA,cAAAziC,IACA2iC,KAAAn2C,KAAA0L,SACAgb,KAAAyvB,KAAAlvB,EAAA,IACAP,KAAAuvB,GAAAA,EAAA,GAAAE,OACAlvB,EAAA,IAAAgvB,EAAAE,OAIA,SAAAH,GAAA,QAAAA,EACAl9B,EAAAiL,QAAAuxB,IAEAruB,EAAA,IAAAA,EACAnO,EAAAgL,OAAAwxB,GAGA,IAAAC,GAAAvyC,EAAAkzC,GAAA7uC,IAAAiuC,EAaA,OAZAC,GAAAxmB,KAAA,oCAEAjW,EAAA5I,OAAAkkC,YAAA5gC,EACA6R,SAAA4B,EAAA,IACA+kB,MAAA,GACAwI,YAAA,WAAA17B,EAAA48B,KAAA,iBACAhB,OAAA,WAAAa,EAAAz0B,QAAA,gBACA2zB,UAAA,WAAA37B,EAAA48B,KAAA,kBAEA58B,EAAA48B,KAAA,eACAH,EAAAz0B,QAAA,eAEAhI,GAOAkgB,MAAA,WACA,GAAAsc,GAAAt1C,KACAo2C,EAAAd,EAAA36B,QAAA,kBAEAy7B,GAAAlmC,QAAAkvB,UACAkW,EAAAx8B,SAAAlM,SACAwpC,EAAA37B,WAAArJ,QAAAqJ,WAAArJ,QAAA4d,SAAAA,UAyCAhsB,GAAA2N,GAAA+kC,KAAA,SAAA3nB,GACA,MAAA4T,GAAA5T,GACA4T,EAAA5T,GACAvrB,MAAAxC,KAAA+M,MAAAnC,UAAAnI,MAAApB,KAAA6F,UAAA,IACA,gBAAA6mB,IAAAA,MAGA/qB,GAAAoN,MAAA,UAAA2d,EAAA,6BAAA2T,GAFAC,EAAAC,MAAAp/B,MAAAxC,KAAAkH,aAKAorB,UCjQA,SAAAha,EAAA+9B,GACA,kBAAAlkB,SAAAA,OAAAC,IACAD,OAAA,cAAA,UAAA,SAAAmkB,GACA,MAAAh+B,GAAA,WAAA+9B,EAAAC,KAEA,gBAAA12C,SACAD,OAAAC,QAAAy2C,EAAArT,QAAA,WAEA1qB,EAAA,WAAA+9B,EAAA/jB,SAEAtyB,KAAA,SAAAgD,GACA,GAAAI,GAAA,WACA,YACA,QACAmzC,OAAA,WACA,QAAA,kBAAA90C,KAAAqnC,UAAAC,YAAAD,UAAAC,UAAAjnC,MAAA,4BAAA,IAEA00C,cAAA,SAAA5jB,GACA,OAAAA,GAAA,QAAAnxB,KAAAmxB,IAEA6jB,iBAAA,SAAA7jB,GACA,MAAAA,GAAAvvB,QAAA,sCAAA,SAEAqzC,SAAA,SAAAtT,GACA,MAAA,gBAAAA,IAEAuT,SAAA,SAAAvT,GACA,MAAA,gBAAAA,IAEAp2B,QAAAhK,EAAAgK,QACA7L,WAAA6B,EAAA7B,WACAy1C,SAAA5zC,EAAAwO,cACAqlC,YAAA,SAAAzT,GACA,MAAA,mBAAAA,IAEA0T,UAAA,SAAA1T,GACA,SAAAA,GAAA,IAAAA,EAAA9hC,WAEAy1C,SAAA,SAAA3T,GACA,MAAAA,aAAApgC,IAEAg0C,MAAA,SAAAzuC,GACA,MAAAnF,GAAAyzC,YAAAtuC,IAAA,OAAAA,EAAA,GAAAA,EAAA,IAEAspB,KAAA7uB,EAAAsL,MACAzM,KAAA,SAAAo1C,EAAA1qC,GAEA,QAAA2qC,GAAAt8B,EAAAtH,GACA,MAAA/G,GAAA+G,EAAAsH,GAFA5X,EAAAnB,KAAAo1C,EAAAC,IAKAtuC,IAAA5F,EAAA4F,IACAlH,OAAAsB,EAAA5B,KACA+1C,MAAA,SAAA/T,EAAA3hC,GACA,GAAA0e,IAAA,CACA,OAAAijB,IAGApgC,EAAAnB,KAAAuhC,EAAA,SAAA7gB,EAAA2H,GACA,KAAA/J,EAAA1e,EAAAJ,KAAA,KAAA6oB,EAAA3H,EAAA6gB,IACA,OAAA,MAGAjjB,GAPAA,GASAi3B,KAAA,SAAAhU,EAAA3hC,GACA,GAAA0e,IAAA,CACA,OAAAijB,IAGApgC,EAAAnB,KAAAuhC,EAAA,SAAA7gB,EAAA2H,GACA,GAAA/J,EAAA1e,EAAAJ,KAAA,KAAA6oB,EAAA3H,EAAA6gB,GACA,OAAA,MAGAjjB,GAPAA,GASAk3B,MAAAr0C,EAAAgF,OACA+iC,SAAA,SAAA14B,GACA,MAAAA,IAEAxJ,MAAA,SAAAu6B,GACA,MAAApgC,GAAAgF,QAAA,KAAAo7B,IAEAkU,eAAA,WACA,GAAAC,GAAA,CACA,OAAA,YACA,MAAAA,OAGAC,WAAA,SAAApU,GAEA,QAAA/F,KACA,MAAA9nB,QAAA6tB,GAFA,MAAApgC,GAAA7B,WAAAiiC,GAAAA,EAAA/F,GAKAoa,MAAA,SAAA9mC,GACAzF,WAAAyF,EAAA,IAEA+mC,SAAA,SAAAC,EAAAC,EAAAC,GACA,GAAAtpB,GAAApO,CACA,OAAA,YACA,GAAA23B,GAAAC,EAAA7qB,EAAAltB,KAAAg4C,EAAA9wC,SAaA,OAZA4wC,GAAA,WACAvpB,EAAA,KACAspB,IACA13B,EAAAw3B,EAAAn1C,MAAA0qB,EAAA8qB,KAGAD,EAAAF,IAAAtpB,EACAzF,aAAAyF,GACAA,EAAArjB,WAAA4sC,EAAAF,GACAG,IACA53B,EAAAw3B,EAAAn1C,MAAA0qB,EAAA8qB,IAEA73B,IAGA83B,SAAA,SAAAN,EAAAC,GACA,GAAA1qB,GAAA8qB,EAAAzpB,EAAApO,EAAA+3B,EAAAJ,CAOA,OANAI,GAAA,EACAJ,EAAA,WACAI,EAAA,GAAAjmC,MACAsc,EAAA,KACApO,EAAAw3B,EAAAn1C,MAAA0qB,EAAA8qB,IAEA,WACA,GAAAxsC,GAAA,GAAAyG,MAAAkmC,EAAAP,GAAApsC,EAAA0sC,EAWA,OAVAhrB,GAAAltB,KACAg4C,EAAA9wC,UACAixC,GAAA,GACArvB,aAAAyF,GACAA,EAAA,KACA2pB,EAAA1sC,EACA2U,EAAAw3B,EAAAn1C,MAAA0qB,EAAA8qB,IACAzpB,IACAA,EAAArjB,WAAA4sC,EAAAK,IAEAh4B,IAGAgT,UAAA,SAAAjJ,GACA,MAAA9mB,GAAAszC,SAAAxsB,GAAAA,EAAAhnB,KAAAiwB,UAAAjJ,IAEAvY,KAAA,iBAGAsnB,EAAA,SACAmf,EAAA,WACA,YASA,SAAAC,GAAAzlB,GAEA,MADAA,GAAAxvB,EAAA4zC,MAAApkB,GACAA,EAAAA,EAAA1iB,MAAA,UAEA,QAAAooC,GAAA1lB,GAEA,MADAA,GAAAxvB,EAAA4zC,MAAApkB,GACAA,EAAAA,EAAA1iB,MAAA,UAEA,QAAAqoC,GAAAC,GACA,MAAA,UAAAC,GAEA,MADAA,GAAAr1C,EAAA4J,QAAAyrC,GAAAA,KAAAh2C,MAAApB,KAAA6F,UAAA,GACA,SAAAtB,GACA,GAAA8yC,KAIA,OAHAt1C,GAAAvB,KAAA42C,EAAA,SAAAv0C,GACAw0C,EAAAA,EAAA3sC,OAAAysC,EAAAp1C,EAAA4zC,MAAApxC,EAAA1B,QAEAw0C,IAxBA,OACAJ,QAAAA,EACAD,WAAAA,EACAjV,KACAkV,QAAAC,EAAAD,GACAD,WAAAE,EAAAF,QAwBAM,EAAA,WACA,YACA,SAAAA,GAAAC,GACA54C,KAAA44C,QAAAx1C,EAAAuzC,SAAAiC,GAAAA,EAAA,IACA54C,KAAA6Z,QACA7Z,KAAA44C,SAAA,IACA54C,KAAAyD,IAAAzD,KAAAgF,IAAAhC,EAAA2O,MAkCA,QAAAknC,KACA74C,KAAAM,KAAAN,KAAA84C,KAAA,KAoBA,QAAAC,GAAAx2B,EAAA2H,GACAlqB,KAAAuiB,IAAAA,EACAviB,KAAAkqB,IAAAA,EACAlqB,KAAA0a,KAAA1a,KAAAyT,KAAA,KAEA,MAzDArQ,GAAAi0C,MAAAsB,EAAA/tC,WACAnH,IAAA,SAAA8e,EAAA2H,GACA,GAAA8uB,GAAAC,EAAAj5C,KAAA8rC,KAAAgN,IACA94C,MAAAk5C,MAAAl5C,KAAA44C,UACA54C,KAAA8rC,KAAAl/B,OAAAqsC,SACAj5C,MAAAqY,KAAA4gC,EAAA12B,KACAviB,KAAAk5C,SAEAF,EAAAh5C,KAAAqY,KAAAkK,KACAy2B,EAAA9uB,IAAAA,EACAlqB,KAAA8rC,KAAAqN,YAAAH,KAEAA,EAAA,GAAAD,GAAAx2B,EAAA2H,GACAlqB,KAAA8rC,KAAAzkC,IAAA2xC,GACAh5C,KAAAqY,KAAAkK,GAAAy2B,EACAh5C,KAAAk5C,SAGAl0C,IAAA,SAAAud,GACA,GAAAy2B,GAAAh5C,KAAAqY,KAAAkK,EACA,IAAAy2B,EAEA,MADAh5C,MAAA8rC,KAAAqN,YAAAH,GACAA,EAAA9uB,KAGArQ,MAAA,WACA7Z,KAAAk5C,KAAA,EACAl5C,KAAAqY,QACArY,KAAA8rC,KAAA,GAAA+M,MAMAz1C,EAAAi0C,MAAAwB,EAAAjuC,WACAvD,IAAA,SAAA2xC,GACAh5C,KAAAM,OACA04C,EAAAvlC,KAAAzT,KAAAM,KACAN,KAAAM,KAAAoa,KAAAs+B,GAEAh5C,KAAAM,KAAA04C,EACAh5C,KAAA84C,KAAA94C,KAAA84C,MAAAE,GAEApsC,OAAA,SAAAosC,GACAA,EAAAt+B,KAAAs+B,EAAAt+B,KAAAjH,KAAAulC,EAAAvlC,KAAAzT,KAAAM,KAAA04C,EAAAvlC,KACAulC,EAAAvlC,KAAAulC,EAAAvlC,KAAAiH,KAAAs+B,EAAAt+B,KAAA1a,KAAA84C,KAAAE,EAAAt+B,MAEAy+B,YAAA,SAAAH,GACAh5C,KAAA4M,OAAAosC,GACAh5C,KAAAqH,IAAA2xC,MAQAL,KAEAS,EAAA,WACA,YASA,SAAAA,GAAA/5B,EAAAg6B,GACAr5C,KAAAs5C,QAAA,KAAAj6B,EAAA,MAAAzQ,KAAA,IACA5O,KAAAu5C,OAAA,UACAv5C,KAAAw5C,WAAA,GAAA9kC,QAAA,IAAAtR,EAAAqzC,iBAAAz2C,KAAAs5C,SACAt5C,KAAAy5C,GAAAJ,GAAAK,GACA15C,KAAAy5C,IAAAz5C,KAAA25C,QAsDA,QAAAnuC,KACA,OAAA,GAAAyG,OAAAu9B,UAEA,QAAAoK,GAAA1vB,GACA,MAAAhnB,MAAAiwB,UAAA/vB,EAAAyzC,YAAA3sB,GAAA,KAAAA,GAEA,QAAA2vB,GAAA3vB,GACA,MAAAlnB,GAAAkvB,UAAAhI,GAEA,QAAA4vB,GAAAN,GACA,GAAAj4C,GAAAghB,EAAAk2B,KAAAsB,EAAAL,EAAA/4C,MACA,KAAAY,EAAA,EAAAA,EAAAw4C,EAAAx4C,KACAghB,EAAAm3B,EAAAn3B,IAAAhhB,IAAAO,MAAA03C,IACAf,EAAAlyC,KAAAgc,EAAAlf,QAAAm2C,EAAA,IAGA,OAAAf,GAnFA,GAAAiB,EACA,KACAA,EAAA35C,OAAA8yB,aACA6mB,EAAAxmB,QAAA,MAAA,KACAwmB,EAAAM,WAAA,OACA,MAAA1mB,GACAomB,EAAA,KA4DA,MAnDAt2C,GAAAi0C,MAAA+B,EAAAxuC,WACAqvC,QAAA,SAAA13B,GACA,MAAAviB,MAAAs5C,OAAA/2B,GAEA23B,QAAA,SAAA33B,GACA,MAAAviB,MAAAi6C,QAAA13B,GAAAviB,KAAAu5C,QAEAI,MAAA,WACA35C,KAAAgF,IAAAhF,KAAAyD,IAAAzD,KAAA4M,OAAA5M,KAAAggC,MAAAhgC,KAAAm6C,UAAA/2C,EAAAuO,MAEAyoC,SAAA,SAAA73B,EAAA2H,GACA,IACAlqB,KAAAy5C,GAAAvmB,QAAA3Q,EAAA2H,GACA,MAAAoJ,GACA,uBAAAA,EAAAzW,OACA7c,KAAAggC,QACAhgC,KAAA25C,WAIA30C,IAAA,SAAAud,GAIA,MAHAviB,MAAAm6C,UAAA53B,IACAviB,KAAA4M,OAAA2V,GAEAs3B,EAAA75C,KAAAy5C,GAAA3mB,QAAA9yB,KAAAi6C,QAAA13B,MAEA9e,IAAA,SAAA8e,EAAA2H,EAAAmwB,GAMA,MALAj3C,GAAAuzC,SAAA0D,GACAr6C,KAAAo6C,SAAAp6C,KAAAk6C,QAAA33B,GAAAq3B,EAAApuC,IAAA6uC,IAEAr6C,KAAAy5C,GAAAO,WAAAh6C,KAAAk6C,QAAA33B,IAEAviB,KAAAo6C,SAAAp6C,KAAAi6C,QAAA13B,GAAAq3B,EAAA1vB,KAEAtd,OAAA,SAAA2V,GAGA,MAFAviB,MAAAy5C,GAAAO,WAAAh6C,KAAAk6C,QAAA33B,IACAviB,KAAAy5C,GAAAO,WAAAh6C,KAAAi6C,QAAA13B,IACAviB,MAEAggC,MAAA,WACA,GAAAz+B,GAAAk3C,EAAAqB,EAAA95C,KAAAw5C,WACA,KAAAj4C,EAAAk3C,EAAA93C,OAAAY,KACAvB,KAAA4M,OAAA6rC,EAAAl3C,GAEA,OAAAvB,OAEAm6C,UAAA,SAAA53B,GACA,GAAA83B,GAAAR,EAAA75C,KAAAy5C,GAAA3mB,QAAA9yB,KAAAk6C,QAAA33B,IACA,UAAAnf,EAAAuzC,SAAA0D,IAAA7uC,IAAA6uC,MAGAjB,KAoBAkB,EAAA,WACA,YAEA,SAAAA,GAAA10C,GACAA,EAAAA,MACA5F,KAAAu6C,WAAA,EACAv6C,KAAAw6C,QAAA,KACAx6C,KAAAy6C,MAAA70C,EAAA80C,UACA16C,KAAA26C,KAAA/0C,EAAAg1C,QAAAh1C,EAAAg1C,QAAA56C,KAAA26C,MAAA36C,KAAA26C,KACA36C,KAAA66C,OAAAj1C,EAAAwX,SAAA,EAAA,GAAAu7B,GAAA,GAAAmC,EAPA,GAAAC,GAAA,EAAAC,KAAAC,EAAA,EAAAH,EAAA,GAAAnC,GAAA,GAqEA,OA5DA2B,GAAAY,sBAAA,SAAAC,GACAF,EAAAE,GAEAb,EAAAc,WAAA,WACAN,EAAAjhC,SAEAzW,EAAAi0C,MAAAiD,EAAA1vC,WACAywC,aAAA,SAAAz1C,GAEA,MADAA,GAAAA,MACAA,EAAAymB,IAAAzmB,EAAA/E,KAAAmC,EAAAooB,MAAAxlB,EAAAyK,WAEAsqC,KAAA,SAAA/0C,EAAA2G,GAcA,QAAAlK,GAAAi5C,GACA/uC,EAAA,KAAA+uC,GACArZ,EAAA4Y,OAAAp3C,IAAA83C,EAAAD,GAEA,QAAAh5C,KACAiK,GAAA,GAEA,QAAAD,KACAyuC,UACAC,GAAAO,GACAtZ,EAAAuZ,oBACAvZ,EAAA0Y,KAAAn4C,MAAAy/B,EAAAA,EAAAuZ,mBACAvZ,EAAAuZ,kBAAA,MAzBA,GAAAD,GAAAE,EAAAxZ,EAAAjiC,IACAu7C,GAAAv7C,KAAAq7C,aAAAz1C,GACA5F,KAAAu6C,WAAAgB,IAAAv7C,KAAAw6C,WAGAiB,EAAAT,EAAAO,IACAE,EAAAp5C,KAAAA,GAAAC,KAAAA,GACAy4C,EAAAE,GACAF,IACAC,EAAAO,GAAAv7C,KAAAy6C,MAAA70C,GAAAvD,KAAAA,GAAAC,KAAAA,GAAAgK,OAAAA,IAEAtM,KAAAw7C,qBAAA/4C,MAAApB,KAAA6F,UAAA,KAkBAlC,IAAA,SAAAY,EAAA2G,GACA,GAAA+uC,GAAAC,CACAhvC,GAAAA,GAAAvJ,EAAA2O,KACA/L,EAAAxC,EAAAszC,SAAA9wC,IACAymB,IAAAzmB,GACAA,MACA21C,EAAAv7C,KAAAq7C,aAAAz1C,GACA5F,KAAAu6C,WAAA,EACAv6C,KAAAw6C,QAAAe,GACAD,EAAAt7C,KAAA66C,OAAA71C,IAAAu2C,IACAhvC,EAAA,KAAA+uC,GAEAt7C,KAAA26C,KAAA/0C,EAAA2G,IAGAmvC,OAAA,WACA17C,KAAAu6C,WAAA,KAGAD,KAEAqB,EAAA57C,OAAA47C,YAAA,WACA,YAEA,SAAAA,GAAA/1C,GACAA,EAAAA,MACAA,EAAAg2C,gBAAAh2C,EAAAi2C,gBACA74C,EAAAoN,MAAA,uDAEApQ,KAAA87C,SAAAl2C,EAAAk2C,UAAA14C,EAAA+vB,UACAnzB,KAAA47C,eAAAh2C,EAAAg2C,eACA57C,KAAA67C,eAAAj2C,EAAAi2C,eACA77C,KAAA6Z,QA2EA,QAAAkiC,GAAArD,GAOA,MANAA,GAAAt1C,EAAA1B,OAAAg3C,EAAA,SAAAsD,GACA,QAAAA,IAEAtD,EAAAt1C,EAAAwF,IAAA8vC,EAAA,SAAAsD,GACA,MAAAA,GAAA/6C,gBAIA,QAAAg7C,KACA,GAAAjD,KAGA,OAFAA,GAAAkD,MACAlD,EAAAmD,MACAnD,EAEA,QAAA5+B,GAAAgiC,GAEA,IAAA,GADAC,MAAAC,KACA/6C,EAAA,EAAAw4C,EAAAqC,EAAAz7C,OAAAY,EAAAw4C,EAAAx4C,IACA86C,EAAAD,EAAA76C,MACA86C,EAAAD,EAAA76C,KAAA,EACA+6C,EAAA/1C,KAAA61C,EAAA76C,IAGA,OAAA+6C,GAEA,QAAAC,GAAAC,EAAAC,GACA,GAAAC,GAAA,EAAAC,EAAA,EAAAC,IACAJ,GAAAA,EAAAlrC,OACAmrC,EAAAA,EAAAnrC,MAEA,KADA,GAAAurC,GAAAL,EAAA77C,OAAAm8C,EAAAL,EAAA97C,OACA+7C,EAAAG,GAAAF,EAAAG,GACAN,EAAAE,GAAAD,EAAAE,GACAD,IACAF,EAAAE,GAAAD,EAAAE,GACAA,KAEAC,EAAAr2C,KAAAi2C,EAAAE,IACAA,IACAC,IAGA,OAAAC,GA7HA,GAAAT,GAAA,IAAAD,EAAA,GAmFA,OAxEA94C,GAAAi0C,MAAAsE,EAAA/wC,WACAmyC,UAAA,SAAAn3C,GACA5F,KAAAg9C,OAAAp3C,EAAAo3C,OACAh9C,KAAAi9C,KAAAr3C,EAAAq3C,MAEA51C,IAAA,SAAAgJ,GACA,GAAA4xB,GAAAjiC,IACAqQ,GAAAjN,EAAA4J,QAAAqD,GAAAA,GAAAA,GACAjN,EAAAvB,KAAAwO,EAAA,SAAA6sC,GACA,GAAA3qC,GAAAmmC,CACAzW,GAAA+a,OAAAzqC,EAAA0vB,EAAA6Z,SAAAoB,IAAAA,EACAxE,EAAAqD,EAAA9Z,EAAA2Z,eAAAsB,IACA95C,EAAAvB,KAAA62C,EAAA,SAAAsD,GACA,GAAAhD,GAAAmE,EAAAC,CAGA,KAFApE,EAAA/W,EAAAgb,KACAE,EAAAnB,EAAA9rC,MAAA,IACAktC,EAAAD,EAAAztC,SACAspC,EAAAA,EAAAmD,GAAAiB,KAAApE,EAAAmD,GAAAiB,GAAAnB,KACAjD,EAAAkD,GAAA31C,KAAAgM,QAKAvN,IAAA,SAAAq4C,GACA,GAAApb,GAAAjiC,IACA,OAAAoD,GAAAwF,IAAAy0C,EAAA,SAAA9qC,GACA,MAAA0vB,GAAA+a,OAAAzqC,MAGA+qC,OAAA,SAAAC,GACA,GAAA7E,GAAA5kC,EAAAmuB,EAAAjiC,IAoBA,OAnBA04C,GAAAqD,EAAA/7C,KAAA67C,eAAA0B,IACAn6C,EAAAvB,KAAA62C,EAAA,SAAAsD,GACA,GAAAhD,GAAAmE,EAAAC,EAAAC,CACA,IAAAvpC,GAAA,IAAAA,EAAAnT,OACA,OAAA,CAIA,KAFAq4C,EAAA/W,EAAAgb,KACAE,EAAAnB,EAAA9rC,MAAA,IACA8oC,IAAAoE,EAAAD,EAAAztC,UACAspC,EAAAA,EAAAmD,GAAAiB,EAEA,OAAApE,IAAA,IAAAmE,EAAAx8C,QACA08C,EAAArE,EAAAkD,GAAAz5C,MAAA,QACAqR,EAAAA,EAAAyoC,EAAAzoC,EAAAupC,GAAAA,KAEAvpC,MACA,KAGAA,EAAA1Q,EAAAwF,IAAAwR,EAAAtG,GAAA,SAAAvB,GACA,MAAA0vB,GAAA+a,OAAAzqC,SAGAirC,IAAA,WACA,GAAAC,KACA,KAAA,GAAAl7B,KAAAviB,MAAAg9C,OACAS,EAAAl3C,KAAAvG,KAAAg9C,OAAAz6B,GAEA,OAAAk7B,IAEA5jC,MAAA,WACA7Z,KAAAg9C,UACAh9C,KAAAi9C,KAAAhB,KAEA3wB,UAAA,WACA,OACA0xB,OAAAh9C,KAAAg9C,OACAC,KAAAj9C,KAAAi9C,SAIAtB,KA6CA+B,EAAA,WACA,YAOA,SAAAA,GAAA93C,GACA5F,KAAAqsB,IAAAzmB,EAAAymB,IACArsB,KAAAq6C,IAAAz0C,EAAAy0C,IACAr6C,KAAAod,MAAAxX,EAAAwX,MACApd,KAAA29C,QAAA/3C,EAAA+3C,QACA39C,KAAA49C,UAAAh4C,EAAAg4C,UACA59C,KAAA06C,UAAA90C,EAAA80C,UACA16C,KAAA69C,WAAAj4C,EAAAi4C,WACA79C,KAAAywC,QAAA,GAAA2I,GAAAxzC,EAAAk4C,UAdA,GAAArF,EA8DA,OA7DAA,IACApoC,KAAA,OACAkc,SAAA,WACAsxB,WAAA,cAYAz6C,EAAAi0C,MAAAqG,EAAA9yC,WACAmzC,UAAA,WACA,OACA1xB,IAAArsB,KAAAqsB,IACAxrB,KAAA,MACAoP,SAAA,SAGA+tC,MAAA,SAAA3tC,GACArQ,KAAAod,QAGApd,KAAAywC,QAAAhtC,IAAAg1C,EAAApoC,KAAAA,EAAArQ,KAAAq6C,KACAr6C,KAAAywC,QAAAhtC,IAAAg1C,EAAAlsB,SAAAnU,SAAAmU,SAAAvsB,KAAAq6C,KACAr6C,KAAAywC,QAAAhtC,IAAAg1C,EAAAoF,WAAA79C,KAAA69C,WAAA79C,KAAAq6C,OAEA4D,UAAA,WACA,GAAA9D,GAAA+D,IACA,OAAAl+C,MAAAod,OAGA8gC,EAAA7tC,KAAArQ,KAAAywC,QAAAzrC,IAAAyzC,EAAApoC,MACA6tC,EAAA3xB,SAAAvsB,KAAAywC,QAAAzrC,IAAAyzC,EAAAlsB,UACA2xB,EAAAL,WAAA79C,KAAAywC,QAAAzrC,IAAAyzC,EAAAoF,YACA1D,EAAA+D,EAAAL,aAAA79C,KAAA69C,YAAAK,EAAA3xB,WAAAnU,SAAAmU,SACA2xB,EAAA7tC,OAAA8pC,EAAA+D,EAAA7tC,KAAA,MANA,MAQA8tC,YAAA,SAAA5xC,GAOA,QAAA6xC,KACA7xC,GAAA,GAEA,QAAA8xC,GAAA/C,GACA/uC,EAAA,KAAA01B,EAAA2b,UAAAtC,IAVA,GAAAnH,GAAAlS,EAAAjiC,IACAuM,KAGA4nC,EAAAn0C,KAAA29C,QAAA39C,KAAA+9C,aACA/9C,KAAA06C,UAAAvG,GAAA7xC,KAAA87C,GAAA/7C,KAAAg8C,KAQAre,MAAA,WAEA,MADAhgC,MAAAywC,QAAAzQ,QACAhgC,QAGA09C,KAEAY,EAAA,WACA,YACA,SAAAA,GAAA14C,GACA5F,KAAAqsB,IAAAzmB,EAAAymB,IACArsB,KAAA29C,QAAA/3C,EAAA+3C,QACA39C,KAAA49C,UAAAh4C,EAAAg4C,UACA59C,KAAA06C,UAAA,GAAAJ,IACAl9B,MAAAxX,EAAAwX,MACAw9B,QAAAh1C,EAAAg1C,QACAF,UAAA90C,EAAA80C,YA2BA,MAxBAt3C,GAAAi0C,MAAAiH,EAAA1zC,WACAmzC,UAAA,WACA,OACA1xB,IAAArsB,KAAAqsB,IACAxrB,KAAA,MACAoP,SAAA,SAGAjL,IAAA,SAAAu4C,EAAAhxC,GAQA,QAAA8xC,GAAA/qB,EAAAgoB,GACA/uC,EAAA+mB,KAAA2O,EAAA2b,UAAAtC,IARA,GAAAnH,GAAAlS,EAAAjiC,IACA,IAAAuM,EAKA,MAFAgxC,GAAAA,GAAA,GACApJ,EAAAn0C,KAAA29C,QAAAJ,EAAAv9C,KAAA+9C,aACA/9C,KAAA06C,UAAA11C,IAAAmvC,EAAAkK,IAKAE,kBAAA,WACAv+C,KAAA06C,UAAAgB,YAGA4C,KAEAE,EAAA,WACA,YA0BA,SAAAC,GAAA74C,GACA,GAAA4tB,EACA,OAAA5tB,IAGA4tB,GACAnH,IAAA,KACAguB,IAAA,MACAj9B,OAAA,EACA0gC,SAAA,KACAD,WAAA,GACAF,QAAAv6C,EAAA2nC,SACA6S,UAAAx6C,EAAA2nC,SACA2P,UAAA,MAEA90C,EAAAxC,EAAAszC,SAAA9wC,IACAymB,IAAAzmB,GACAA,EACAA,EAAAxC,EAAAi0C,MAAA7jB,EAAA5tB,IACAA,EAAAymB,KAAArpB,EAAAoN,MAAA,mCACAxK,EAAAg4C,UAAAh4C,EAAAlE,QAAAkE,EAAAg4C,UACAh4C,EAAAk4C,SAAAl4C,EAAAk4C,UAAAl4C,EAAAymB,IACAzmB,EAAAi4C,WAAA5kB,EAAArzB,EAAAi4C,WACAj4C,EAAA80C,UAAA90C,EAAA80C,UAAAgE,EAAA94C,EAAA80C,WAAA13C,EAAAsqB,KACA1nB,GArBA,KAuBA,QAAA+4C,GAAA/4C,GACA,GAAA4tB,EACA,IAAA5tB,EA4BA,MAzBA4tB,IACAnH,IAAA,KACAjP,OAAA,EACAugC,QAAA,KACAt6C,QAAA,KACAu7C,SAAA,KACAhE,QAAA,KACAiE,YAAA,WACAC,cAAA,IACAlB,UAAAx6C,EAAA2nC,SACA2P,UAAA,MAEA90C,EAAAxC,EAAAszC,SAAA9wC,IACAymB,IAAAzmB,GACAA,EACAA,EAAAxC,EAAAi0C,MAAA7jB,EAAA5tB,IACAA,EAAAymB,KAAArpB,EAAAoN,MAAA,iCACAxK,EAAAg4C,UAAAh4C,EAAAlE,QAAAkE,EAAAg4C,UACAh4C,EAAA+3C,QAAAoB,EAAAn5C,GACAA,EAAAg1C,QAAAoE,EAAAp5C,GACAA,EAAA80C,UAAA90C,EAAA80C,UAAAgE,EAAA94C,EAAA80C,WAAA13C,EAAAsqB,WACA1nB,GAAAvC,cACAuC,GAAAg5C,eACAh5C,GAAAi5C,kBACAj5C,GAAAk5C,cACAl5C,EAEA,QAAAm5C,GAAAn5C,GAgBA,QAAAq5C,GAAA1B,EAAApJ,GAEA,MADAA,GAAA9nB,IAAAhpB,EAAA8wC,EAAA9nB,IAAAkxB,GACApJ,EAEA,QAAA+K,GAAA3B,EAAApJ,GAEA,MADAA,GAAA9nB,IAAA8nB,EAAA9nB,IAAAhpB,QAAAu7C,EAAAvzB,mBAAAkyB,IACApJ,EAEA,QAAAgL,GAAA5B,EAAApJ,GACA,MAAAA,GAxBA,GAAAwJ,GAAAt6C,EAAAu7C,CAIA,OAHAjB,GAAA/3C,EAAA+3C,QACAt6C,EAAAuC,EAAAvC,QACAu7C,EAAAh5C,EAAAg5C,SACAjB,EACAA,EAGAA,EADAt6C,EACA47C,EACAr5C,EAAAg5C,SACAM,EAEAC,EAeA,QAAAH,GAAAp5C,GASA,QAAA8xC,GAAAE,GACA,MAAA,UAAAjnC,GACA,MAAAvN,GAAAs0C,SAAA/mC,EAAAinC,IAGA,QAAAK,GAAAL,GACA,MAAA,UAAAjnC,GACA,MAAAvN,GAAA60C,SAAAtnC,EAAAinC,IAfA,GAAAgD,GAAA7sB,EAAA6pB,CAOA,OANAgD,GAAAh1C,EAAAg1C,QACA7sB,EAAAnoB,EAAAi5C,YACAjH,EAAAhyC,EAAAk5C,cACAlE,IACAA,EAAA,cAAAn5C,KAAAssB,GAAAkqB,EAAAL,GAAAF,EAAAE,IAEAgD,EAYA,QAAA8D,GAAA/tC,GACA,MAAA,UAAA/K,GAIA,QAAAw5C,GAAA9D,GACAl4C,EAAAq0C,MAAA,WACA4H,EAAAjjC,QAAAk/B,KAGA,QAAA8C,GAAA9qB,GACAlwB,EAAAq0C,MAAA,WACA4H,EAAAhjC,OAAAiX,KAVA,GAAA+rB,GAAAr8C,EAAAoK,UAEA,OADAuD,GAAA/K,EAAAw5C,EAAAhB,GACAiB,GAvIA,MAAA,UAAAz5C,GACA,GAAA4tB,GAAA8rB,CAsBA,OArBA9rB,IACA+rB,YAAA,EACAzD,SAAA14C,EAAA+vB,UACAyoB,eAAA,KACAC,eAAA,KACA2D,WAAA,EACAF,OAAA,KACAG,SACAC,SAAA,KACAhkB,OAAA,MAEA91B,EAAAxC,EAAAi0C,MAAA7jB,EAAA5tB,QACAA,EAAAg2C,gBAAA54C,EAAAoN,MAAA,+BACAxK,EAAAi2C,gBAAA74C,EAAAoN,MAAA,8BACAkvC,EAAA15C,EAAA05C,OACA15C,EAAA05C,OAAAA,EAAA,SAAAjtC,GACA,MAAAA,GAAAf,KAAAguC,IACAl8C,EAAA2nC,SACAnlC,EAAA65C,MAAAr8C,EAAAjC,WAAAyE,EAAA65C,OAAA75C,EAAA65C,QAAA75C,EAAA65C,MACA75C,EAAA85C,SAAAjB,EAAA74C,EAAA85C,UACA95C,EAAA81B,OAAAijB,EAAA/4C,EAAA81B,QACA91B,MA8HA+5C,EAAA,WACA,YAGA,SAAAA,GAAA/5C,GACAA,EAAA44C,EAAA54C,GACA5F,KAAAs/C,OAAA15C,EAAA05C,OACAt/C,KAAA87C,SAAAl2C,EAAAk2C,SACA97C,KAAAw/C,WAAA55C,EAAA45C,WACAx/C,KAAAy/C,MAAA75C,EAAA65C,MACAz/C,KAAA07B,OAAA91B,EAAA81B,OAAA,GAAA4iB,GAAA14C,EAAA81B,QAAA,KACA17B,KAAA0/C,SAAA95C,EAAA85C,SAAA,GAAAhC,GAAA93C,EAAA85C,UAAA,KACA1/C,KAAA4a,MAAA,GAAA+gC,IACAG,SAAA97C,KAAA87C,SACAF,eAAAh2C,EAAAg2C,eACAC,eAAAj2C,EAAAi2C,iBAEAj2C,EAAA25C,cAAA,GAAAv/C,KAAAu/C,aAfA,GAAAv3B,EAiHA,OAhHAA,GAAAjoB,QAAAA,OAAA4/C,WAgBAA,EAAAntB,WAAA,WAEA,MADAzyB,UAAAA,OAAA4/C,WAAA33B,GACA23B,GAEAA,EAAAvH,WAAAA,EACAh1C,EAAAi0C,MAAAsI,EAAA/0C,WACAg1C,YAAA,WAGA,QAAAC,GAAAtC,EAAAuC,EAAArzB,GACA,MAAAwV,GAAAqb,OAAAC,EAAAuC,EAAArzB,GAEA,QAAAszB,GAAAxC,EAAAuC,GACA,MAAA7d,GAAAqb,OAAAC,EAAAuC,GANA,GAAA7d,GAAAjiC,IACA,OAAAA,MAAA07B,OAAAmkB,EAAAE,GAQAC,cAAA,WAYA,QAAA39C,GAAAixB,EAAAjjB,GACA,MAAAijB,GACA+rB,EAAAhjC,UAEA4lB,EAAA56B,IAAAgJ,GACA4xB,EAAAyd,SAAA1B,MAAA/b,EAAArnB,MAAA0Q,iBACA+zB,GAAAjjC,WAjBA,GAAAijC,GAAAY,EAAAhe,EAAAjiC,IAUA,OATAq/C,GAAAr8C,EAAAoK,WACApN,KAAA0/C,UAEAO,EAAAjgD,KAAA0/C,SAAAzB,cACAj+C,KAAA4a,MAAAmiC,UAAAkD,GACAZ,EAAAjjC,WAEApc,KAAA0/C,SAAAvB,YAAA97C,GALAg9C,EAAAjjC,UAOAijC,EAAAj9C,WAUA89C,YAAA,WAKA,QAAAC,KACAle,EAAA56B,IAAA46B,EAAAwd,OALA,GAAAxd,GAAAjiC,IAGA,OAFAA,MAAAggC,SACAhgC,KAAAogD,YAAApgD,KAAAggD,iBAAA39C,KAAA89C,GACAngD,KAAAogD,aAKAb,WAAA,SAAAc,GACA,OAAArgD,KAAAogD,aAAAC,EAAArgD,KAAAkgD,cAAAlgD,KAAAogD,aAEA/4C,IAAA,SAAAgJ,GAEA,MADArQ,MAAA4a,MAAAvT,IAAAgJ,GACArQ,MAEAgF,IAAA,SAAAq4C,GAEA,MADAA,GAAAj6C,EAAA4J,QAAAqwC,GAAAA,KAAA56C,MAAApB,KAAA6F,WACAlH,KAAA4a,MAAA5V,IAAAq4C,IAEAC,OAAA,SAAAC,EAAAuC,EAAArzB,GAUA,QAAA6zB,GAAA5kB,GACA,GAAA6kB,KACAn9C,GAAAvB,KAAA65B,EAAA,SAAA96B,IACAwC,EAAAg0C,KAAAqI,EAAA,SAAAj6C,GACA,MAAAy8B,GAAA6Z,SAAAl7C,KAAAqhC,EAAA6Z,SAAAt2C,MACA+6C,EAAAh6C,KAAA3F,KAEA6rB,GAAAA,EAAA8zB,GAhBA,GAAAd,GAAAxd,EAAAjiC,IAQA,OAPAy/C,GAAAz/C,KAAAs/C,OAAAt/C,KAAA4a,MAAA0iC,OAAAC,IACAuC,EAAA9/C,KAAA07B,OAAA+jB,EAAAh9C,QAAAg9C,GACAz/C,KAAA07B,QAAA+jB,EAAA9+C,OAAAX,KAAAw/C,WACAx/C,KAAA07B,OAAA12B,IAAAu4C,EAAA+C,GACAtgD,KAAA07B,QACA17B,KAAA07B,OAAA6iB,oBAEAv+C,MAWAw9C,IAAA,WACA,MAAAx9C,MAAA4a,MAAA4iC,OAEAxd,MAAA,WAEA,MADAhgC,MAAA4a,MAAAf,QACA7Z,MAEAwgD,mBAAA,WAEA,MADAxgD,MAAA0/C,UAAA1/C,KAAA0/C,SAAA1f,QACAhgC,MAEAygD,iBAAA,WAEA,MADAnG,GAAAc,aACAp7C,MAEA0gD,UAAA,WACA,MAAA1gD,MAAA4/C,iBAGAD,IAEA,OAAAA,KC94BA,SAAArnC,EAAA+9B,GACA,kBAAAlkB,SAAAA,OAAAC,IACAD,OAAA,gBAAA,UAAA,SAAAmkB,GACA,MAAAD,GAAAC,KAEA,gBAAA12C,SACAD,OAAAC,QAAAy2C,EAAArT,QAAA,WAEAqT,EAAA/jB,SAEAtyB,KAAA,SAAAgD,GACA,GAAAI,GAAA,WACA,YACA,QACAmzC,OAAA,WACA,QAAA,kBAAA90C,KAAAqnC,UAAAC,YAAAD,UAAAC,UAAAjnC,MAAA,4BAAA,IAEA00C,cAAA,SAAA5jB,GACA,OAAAA,GAAA,QAAAnxB,KAAAmxB,IAEA6jB,iBAAA,SAAA7jB,GACA,MAAAA,GAAAvvB,QAAA,sCAAA,SAEAqzC,SAAA,SAAAtT,GACA,MAAA,gBAAAA,IAEAuT,SAAA,SAAAvT,GACA,MAAA,gBAAAA,IAEAp2B,QAAAhK,EAAAgK,QACA7L,WAAA6B,EAAA7B,WACAy1C,SAAA5zC,EAAAwO,cACAqlC,YAAA,SAAAzT,GACA,MAAA,mBAAAA,IAEA0T,UAAA,SAAA1T,GACA,SAAAA,GAAA,IAAAA,EAAA9hC,WAEAy1C,SAAA,SAAA3T,GACA,MAAAA,aAAApgC,IAEAg0C,MAAA,SAAAzuC,GACA,MAAAnF,GAAAyzC,YAAAtuC,IAAA,OAAAA,EAAA,GAAAA,EAAA,IAEAspB,KAAA7uB,EAAAsL,MACAzM,KAAA,SAAAo1C,EAAA1qC,GAEA,QAAA2qC,GAAAt8B,EAAAtH,GACA,MAAA/G,GAAA+G,EAAAsH,GAFA5X,EAAAnB,KAAAo1C,EAAAC,IAKAtuC,IAAA5F,EAAA4F,IACAlH,OAAAsB,EAAA5B,KACA+1C,MAAA,SAAA/T,EAAA3hC,GACA,GAAA0e,IAAA,CACA,OAAAijB,IAGApgC,EAAAnB,KAAAuhC,EAAA,SAAA7gB,EAAA2H,GACA,KAAA/J,EAAA1e,EAAAJ,KAAA,KAAA6oB,EAAA3H,EAAA6gB,IACA,OAAA,MAGAjjB,GAPAA,GASAi3B,KAAA,SAAAhU,EAAA3hC,GACA,GAAA0e,IAAA,CACA,OAAAijB,IAGApgC,EAAAnB,KAAAuhC,EAAA,SAAA7gB,EAAA2H,GACA,GAAA/J,EAAA1e,EAAAJ,KAAA,KAAA6oB,EAAA3H,EAAA6gB,GACA,OAAA,MAGAjjB,GAPAA,GASAk3B,MAAAr0C,EAAAgF,OACA+iC,SAAA,SAAA14B,GACA,MAAAA,IAEAxJ,MAAA,SAAAu6B,GACA,MAAApgC,GAAAgF,QAAA,KAAAo7B,IAEAkU,eAAA,WACA,GAAAC,GAAA,CACA,OAAA,YACA,MAAAA,OAGAC,WAAA,SAAApU,GAEA,QAAA/F,KACA,MAAA9nB,QAAA6tB,GAFA,MAAApgC,GAAA7B,WAAAiiC,GAAAA,EAAA/F,GAKAoa,MAAA,SAAA9mC,GACAzF,WAAAyF,EAAA,IAEA+mC,SAAA,SAAAC,EAAAC,EAAAC,GACA,GAAAtpB,GAAApO,CACA,OAAA,YACA,GAAA23B,GAAAC,EAAA7qB,EAAAltB,KAAAg4C,EAAA9wC,SAaA,OAZA4wC,GAAA,WACAvpB,EAAA,KACAspB,IACA13B,EAAAw3B,EAAAn1C,MAAA0qB,EAAA8qB,KAGAD,EAAAF,IAAAtpB,EACAzF,aAAAyF,GACAA,EAAArjB,WAAA4sC,EAAAF,GACAG,IACA53B,EAAAw3B,EAAAn1C,MAAA0qB,EAAA8qB,IAEA73B,IAGA83B,SAAA,SAAAN,EAAAC,GACA,GAAA1qB,GAAA8qB,EAAAzpB,EAAApO,EAAA+3B,EAAAJ,CAOA,OANAI,GAAA,EACAJ,EAAA,WACAI,EAAA,GAAAjmC,MACAsc,EAAA,KACApO,EAAAw3B,EAAAn1C,MAAA0qB,EAAA8qB,IAEA,WACA,GAAAxsC,GAAA,GAAAyG,MAAAkmC,EAAAP,GAAApsC,EAAA0sC,EAWA,OAVAhrB,GAAAltB,KACAg4C,EAAA9wC,UACAixC,GAAA,GACArvB,aAAAyF,GACAA,EAAA,KACA2pB,EAAA1sC,EACA2U,EAAAw3B,EAAAn1C,MAAA0qB,EAAA8qB,IACAzpB,IACAA,EAAArjB,WAAA4sC,EAAAK,IAEAh4B,IAGAgT,UAAA,SAAAjJ,GACA,MAAA9mB,GAAAszC,SAAAxsB,GAAAA,EAAAhnB,KAAAiwB,UAAAjJ,IAEAvY,KAAA,iBAGAgvC,EAAA,WACA,YAeA,SAAAC,GAAAh7C,GACA,GAAAi7C,GAAAC,CAQA,OAPAA,GAAA19C,EAAAi0C,SAAA0J,EAAAn7C,GACAi7C,GACA98C,IAAAi9C,IACAF,QAAAA,EACAn4C,KAAAs4C,EAAAH,GACAxpC,UAAA4pC,EAAAJ,KAGA/8C,IAAA88C,EAAA98C,IACA4E,KAAAk4C,EAAAl4C,KACAm4C,QAAAD,EAAAC,QACAxpC,UAAAupC,EAAAvpC,UACA+/B,MAAA,SAAAzxC,GACAxC,EAAAi0C,MAAAzxC,EAAAi7C,KAIA,QAAAI,GAAA9gD,GACA,OACAghD,QAAA,gBAAAhhD,EAAAghD,QAAA,YACA1T,KAAA,eAAAttC,EAAAstC,KAAA,YAGA,QAAAyT,GAAAJ,GACA,GAAAxpC,KAIA,OAHAlU,GAAAvB,KAAAi/C,EAAA,SAAAhwC,EAAA5M,GACAoT,EAAApT,GAAA,IAAA4M,IAEAwG,EAEA,QAAA0pC,KACA,GAAAj9C,IACAo9C,SACA97B,SAAA,WACAvgB,QAAA,gBAEAs8C,MACA/7B,SAAA,WACAvP,IAAA,IACA4Q,KAAA,IACA26B,YAAA,cACAC,UAAA,OACA31C,QAAA,KAEAqN,OACAqM,SAAA,WACAk8B,cAAA,MACA1a,gBAAA,eAEA2a,iBACAn8B,SAAA,WACAk8B,cAAA,OAEA9T,MACApoB,SAAA,WACAvP,IAAA,OACA4Q,KAAA,IACAP,OAAA,MACArhB,QAAA,QAEA28C,KACA/6B,KAAA,IACAmW,MAAA,QAEA6kB,KACAh7B,KAAA,OACAmW,MAAA,MAQA,OALAz5B,GAAAmzC,UACAnzC,EAAAi0C,MAAAtzC,EAAAiV,OACA2oC,gBAAA,wFAGA59C,EA1FA,GAAAg9C,IACAI,QAAA,oBACAnoC,MAAA,WACAooC,KAAA,UACA3T,KAAA,UACAmU,QAAA,aACAjb,WAAA,gBACAkb,WAAA,gBACAz1C,MAAA,WACAujB,KAAA,UACAmyB,OAAA,YACAC,UAAA,eAEA,OAAAnB,MAgFAoB,EAAA,WACA,YASA,SAAAA,GAAAp8C,GACAA,GAAAA,EAAAowB,IACAhzB,EAAAoN,MAAA,mCAEApQ,KAAAimC,IAAAjjC,EAAA4C,EAAAowB,IAZA,GAAA3W,GAAA4iC,CAoCA,OAnCA5iC,GAAA,aACA4iC,GACAC,OAAA,WACAC,aAAA,gBACAjoC,OAAA,WACAoyB,aAAA,iBAQAlpC,EAAAi0C,MAAA2K,EAAAp3C,WACAw3C,SAAA,SAAAvhD,EAAAm3C,GACA,GAAAqK,EAIA,OAHAA,GAAAr/C,EAAAwd,MAAAnB,EAAAxe,IACAm3C,EAAAA,OAAA/oC,QAAAozC,GACAriD,KAAAimC,IAAAnlB,QAAAte,MAAAxC,KAAAimC,IAAA+R,GACAqK,GAEAp+B,OAAA,SAAApjB,GACA,GAAAm3C,GAAAqK,CAGA,OAFArK,MAAAv1C,MAAApB,KAAA6F,UAAA,GACAm7C,EAAAriD,KAAAoiD,SAAA,SAAAvhD,EAAAm3C,GACAqK,EAAAlhC,sBAEAL,QAAA,SAAAjgB,GACA,GAAAyhD,EACAtiD,MAAAoiD,SAAAvhD,KAAA4B,MAAApB,KAAA6F,UAAA,KACAo7C,EAAAL,EAAAphD,KACAb,KAAAoiD,SAAAE,KAAA7/C,MAAApB,KAAA6F,UAAA,OAIA86C,KAEAO,EAAA,WACA,YAQA,SAAA7+B,GAAAqK,EAAAy0B,EAAAj2C,EAAA2gB,GACA,GAAArsB,EACA,KAAA0L,EACA,MAAAvM,KAKA,KAHAwiD,EAAAA,EAAAtyC,MAAAykC,GACApoC,EAAA2gB,EAAAu1B,EAAAl2C,EAAA2gB,GAAA3gB,EACAvM,KAAA0iD,WAAA1iD,KAAA0iD,eACA7hD,EAAA2hD,EAAA9yC,SACA1P,KAAA0iD,WAAA7hD,GAAAb,KAAA0iD,WAAA7hD,KACAi/C,QACArzB,UAEAzsB,KAAA0iD,WAAA7hD,GAAAktB,GAAAxnB,KAAAgG,EAEA,OAAAvM,MAEA,QAAA2iD,GAAAH,EAAAj2C,EAAA2gB,GACA,MAAAxJ,GAAAriB,KAAArB,KAAA,QAAAwiD,EAAAj2C,EAAA2gB,GAEA,QAAA01B,GAAAJ,EAAAj2C,EAAA2gB,GACA,MAAAxJ,GAAAriB,KAAArB,KAAA,OAAAwiD,EAAAj2C,EAAA2gB,GAEA,QAAAjmB,GAAAu7C,GACA,GAAA3hD,EACA,KAAAb,KAAA0iD,WACA,MAAA1iD,KAGA,KADAwiD,EAAAA,EAAAtyC,MAAAykC,GACA9zC,EAAA2hD,EAAA9yC,eACA1P,MAAA0iD,WAAA7hD,EAEA,OAAAb,MAEA,QAAA8gB,GAAA0hC,GACA,GAAA3hD,GAAAgiD,EAAA7K,EAAA8K,EAAAC,CACA,KAAA/iD,KAAA0iD,WACA,MAAA1iD,KAIA,KAFAwiD,EAAAA,EAAAtyC,MAAAykC,GACAqD,KAAAv1C,MAAApB,KAAA6F,UAAA,IACArG,EAAA2hD,EAAA9yC,WAAAmzC,EAAA7iD,KAAA0iD,WAAA7hD,KACAiiD,EAAAE,EAAAH,EAAA/C,KAAA9/C,MAAAa,GAAAkL,OAAAisC,IACA+K,EAAAC,EAAAH,EAAAp2B,MAAAzsB,MAAAa,GAAAkL,OAAAisC,IACA8K,KAAAG,EAAAF,EAEA,OAAA/iD,MAEA,QAAAgjD,GAAAH,EAAA31B,EAAA8qB,GAEA,QAAAkL,KAEA,IAAA,GADA3I,GACAh5C,EAAA,EAAAw4C,EAAA8I,EAAAliD,QAAA45C,GAAAh5C,EAAAw4C,EAAAx4C,GAAA,EACAg5C,EAAAsI,EAAAthD,GAAAiB,MAAA0qB,EAAA8qB,MAAA,CAEA,QAAAuC,EANA,MAAA2I,GASA,QAAAC,KACA,GAAAC,EAcA,OAZAA,GADArjD,OAAAsjD,aACA,SAAA1yC,GACA0yC,aAAA,WACA1yC,OAIA,SAAAA,GACAzF,WAAA,WACAyF,KACA,IAKA,QAAA8xC,GAAA9xC,EAAAuc,GACA,MAAAvc,GAAAkhB,KAAAlhB,EAAAkhB,KAAA3E,GAAA,WACAvc,EAAAnO,MAAA0qB,KAAAzqB,MAAApB,KAAA6F,UAAA,KApFA,GAAAytC,GAAA,MAAAsO,EAAAE,GACA,QACAP,OAAAA,EACAD,QAAAA,EACA17C,IAAAA,EACA6Z,QAAAA,MAmFAihC,EAAA,SAAAzT,GACA,YA0CA,SAAAgV,GAAAC,EAAAC,EAAAC,GAEA,IAAA,GADAC,GAAAC,KACApiD,EAAA,EAAAw4C,EAAAwJ,EAAA5iD,OAAAY,EAAAw4C,EAAAx4C,IACAoiD,EAAAp9C,KAAAnD,EAAAqzC,iBAAA8M,EAAAhiD,IAGA,OADAmiD,GAAAD,EAAA,OAAAE,EAAA/0C,KAAA,KAAA,OAAA,IAAA+0C,EAAA/0C,KAAA,KAAA,IACA40C,EAAA,GAAA9uC,QAAAgvC,GAAA,GAAAhvC,QAAAgvC,EAAA,KA/CA,GAAAlwB,IACAwlB,KAAA,KACA4K,QAAA,KACAprB,QAAA,SACAtiB,UAAA,KACAutC,WAAA,EACAD,eAAA,EAEA,OAAA,UAAA59C,GASA,QAAAi+C,GAAAC,GACA,GAAAhiD,GAAAiiD,EAAAC,CASA,QARAliD,EAAAmiD,EAAA7/C,KAAA0/C,EAAAzzC,SACA2zC,EAAA1V,EAAAluC,cAAAwF,EAAA4yB,SACA5yB,EAAAsQ,YAAA8tC,EAAA9tC,UAAAtQ,EAAAsQ,WACA6tC,EAAAD,EAAAI,UAAApiD,EAAA8Y,OACAmpC,EAAAG,UAAApiD,EAAA,GAAAnB,QACAqjD,EAAAzjD,YAAAwjD,EAAAplC,WAAA,IACAmlC,EAAAtjD,WAAA4jB,aAAA4/B,EAAAD,MAEAjiD,EAEA,QAAAqiD,GAAAnuB,EAAA6tB,GAEA,IAAA,GADAO,GAAAC,EAAA,EACA9iD,EAAA,EAAAA,EAAAy0B,EAAA5vB,WAAAzF,OAAAY,IACA6iD,EAAApuB,EAAA5vB,WAAA7E,GACA6iD,EAAA9iD,WAAA+iD,EACA9iD,GAAAsiD,EAAAO,GAAA,EAAA,EAEAD,EAAAC,EAAAP,GA3BA,GAAAI,EACAr+C,GAAAxC,EAAAi0C,SAAA7jB,EAAA5tB,GACAA,EAAAozC,MAAApzC,EAAAg+C,UAGAh+C,EAAAg+C,QAAAxgD,EAAA4J,QAAApH,EAAAg+C,SAAAh+C,EAAAg+C,SAAAh+C,EAAAg+C,SACAK,EAAAX,EAAA19C,EAAAg+C,QAAAh+C,EAAA49C,cAAA59C,EAAA69C,WACAU,EAAAv+C,EAAAozC,KAAA6K,MAiCA9jD,OAAAF,UACAykD,EAAA,WACA,YAWA,SAAAA,GAAA1+C,EAAAi7C,GACAj7C,EAAAA,MACAA,EAAAoT,OACAhW,EAAAoN,MAAA,oBAEAywC,EAAAxJ,MAAAr3C,MACAA,KAAAukD,MAAAvhD,EAAA4C,EAAAw7C,MACAphD,KAAAwkD,OAAAxhD,EAAA4C,EAAAoT,OACAhZ,KAAAu9C,MAAAv9C,KAAAwkD,OAAAt6B,MACAlqB,KAAAykD,iBAAAzkD,KAAAwY,WAAAxY,KAAAu9C,MAAA,KACAv9C,KAAA0kD,gBAAAC,EAAA3kD,KAAAwkD,QACAxkD,KAAA4kD,0BACA,IAAA5kD,KAAAukD,MAAA5jD,SACAX,KAAA6kD,QAAA7kD,KAAA8kD,QAAA9kD,KAAA+kD,UAAA/kD,KAAAglD,mBAAA5hD,EAAAuO,MAsKA,QAAAgzC,GAAAH,GACA,MAAAxhD,GAAA,kCAAAe,KACAshB,SAAA,WACAC,WAAA,SACA2/B,WAAA,MACAC,WAAAV,EAAAzgD,IAAA,eACAohD,SAAAX,EAAAzgD,IAAA,aACAqhD,UAAAZ,EAAAzgD,IAAA,cACAshD,YAAAb,EAAAzgD,IAAA,gBACA0hB,WAAA++B,EAAAzgD,IAAA,eACAuhD,YAAAd,EAAAzgD,IAAA,gBACAyhB,cAAAg/B,EAAAzgD,IAAA,kBACAwhD,WAAAf,EAAAzgD,IAAA,eACAyhD,cAAAhB,EAAAzgD,IAAA,kBACA0hD,cAAAjB,EAAAzgD,IAAA,oBACAwgB,YAAAigC,GAEA,QAAAkB,GAAAjmD,EAAAC,GACA,MAAA4kD,GAAAqB,eAAAlmD,KAAA6kD,EAAAqB,eAAAjmD,GAEA,QAAAkmD,GAAAvD,GACA,MAAAA,GAAA5gC,QAAA4gC,EAAAxgC,SAAAwgC,EAAArgC,SAAAqgC,EAAAlgC,SAlNA,GAAA0jC,EA4LA,OA3LAA,IACAC,EAAA,MACAC,GAAA,MACAC,GAAA,OACAC,GAAA,QACAC,GAAA,QACAC,GAAA,KACAC,GAAA,QAkBA9B,EAAAqB,eAAA,SAAA/yB,GACA,MAAAxvB,GAAA4zC,MAAApkB,GAAAvvB,QAAA,QAAA,IAAAA,QAAA,UAAA,MAEAD,EAAAi0C,MAAAiN,EAAA15C,UAAA23C,GACA8D,QAAA,WACArmD,KAAAsmD,kBACAtmD,KAAA8gB,QAAA,YAEAylC,SAAA,WACAvmD,KAAAykD,iBAAAzkD,KAAAu9C,MACAv9C,KAAA8gB,QAAA,YAEA0lC,WAAA,SAAAnE,GACA,GAAAoE,GAAAZ,EAAAxD,EAAAh/B,OAAAg/B,EAAA7/B,QACAxiB,MAAA0mD,sBAAAD,EAAApE,GACAoE,GAAAzmD,KAAA2mD,eAAAF,EAAApE,IACAriD,KAAA8gB,QAAA2lC,EAAA,QAAApE,IAGAuE,SAAA,WACA5mD,KAAA6mD,UAAA7mD,KAAA8mD,iBACA9mD,KAAAglD,qBACAhlD,KAAA4kD,2BAEA8B,sBAAA,SAAAD,EAAApE,GACA,GAAAjiC,EACA,QAAAqmC,GACA,IAAA,KACA,IAAA,OACArmC,GAAAwlC,EAAAvD,EACA,MAEA,SACAjiC,GAAA,EAEAA,GAAAiiC,EAAAjiC,kBAEAumC,eAAA,SAAAF,EAAApE,GACA,GAAAvhC,EACA,QAAA2lC,GACA,IAAA,MACA3lC,GAAA8kC,EAAAvD,EACA,MAEA,SACAvhC,GAAA,EAEA,MAAAA,IAEA8jC,wBAAA,WACA,GAAApxC,IAAAxT,KAAAwkD,OAAAzgD,IAAA,cAAA,OAAA9C,aACAjB,MAAAwT,MAAAA,IACAxT,KAAAwT,IAAAA,EACAxT,KAAAukD,MAAAxtC,KAAA,MAAAvD,GACAxT,KAAA8gB,QAAA,iBAAAtN,KAGAqzC,UAAA,SAAA38B,EAAA4qB,GACA,GAAAiS,GAAAC,CACAD,GAAArB,EAAAx7B,EAAAlqB,KAAAu9C,OACAyJ,IAAAD,GAAA/mD,KAAAu9C,MAAA58C,SAAAupB,EAAAvpB,OACAX,KAAAu9C,MAAArzB,EACA4qB,GAAAiS,GAEAjS,GAAAkS,GACAhnD,KAAA8gB,QAAA,oBAAA9gB,KAAAu9C,OAFAv9C,KAAA8gB,QAAA,eAAA9gB,KAAAu9C,QAKA1rB,KAAA,WACA,GAAAo1B,GAAAC,EAAAC,EAAAC,EAAAnlB,EAAAjiC,IAgBA,OAfAinD,GAAA7jD,EAAAyuB,KAAA7xB,KAAAqmD,QAAArmD,MACAknD,EAAA9jD,EAAAyuB,KAAA7xB,KAAAumD,SAAAvmD,MACAmnD,EAAA/jD,EAAAyuB,KAAA7xB,KAAAwmD,WAAAxmD,MACAonD,EAAAhkD,EAAAyuB,KAAA7xB,KAAA4mD,SAAA5mD,MACAA,KAAAwkD,OAAA9gC,GAAA,UAAAujC,GAAAvjC,GAAA,WAAAwjC,GAAAxjC,GAAA,aAAAyjC,IACA/jD,EAAAmzC,UAAAnzC,EAAAmzC,SAAA,EACAv2C,KAAAwkD,OAAA9gC,GAAA,WAAA0jC,GAEApnD,KAAAwkD,OAAA9gC,GAAA,yCAAA,SAAA2+B,GACAwD,EAAAxD,EAAAh/B,OAAAg/B,EAAA7/B,UAGApf,EAAAq0C,MAAAr0C,EAAAyuB,KAAAoQ,EAAA2kB,SAAA3kB,EAAAogB,MAGAriD,MAEAuY,MAAA,WACAvY,KAAAwkD,OAAAjsC,SAEAwI,KAAA,WACA/gB,KAAAwkD,OAAAzjC,QAEAsmC,WAAA,WACA,MAAArnD,MAAAwT,KAEA8zC,SAAA,WACA,MAAAtnD,MAAAu9C,OAAA,IAEAgK,SAAA,SAAAr9B,EAAA4qB,GACA90C,KAAAwnD,cAAAt9B,GACAlqB,KAAA6mD,UAAA38B,EAAA4qB,IAEA2S,8BAAA,WACA,MAAAznD,MAAAu9C,QAAAv9C,KAAAykD,kBAEAqC,cAAA,WACA,MAAA9mD,MAAAwkD,OAAAt6B,OAEAs9B,cAAA,SAAAl0C,GACAtT,KAAAwkD,OAAAt6B,IAAA5W,GACAtT,KAAAglD,qBACAhlD,KAAA4kD,2BAEA0B,gBAAA,WACAtmD,KAAAwnD,cAAAxnD,KAAAu9C,QAEAuH,QAAA,WACA,MAAA9kD,MAAAukD,MAAAr6B,OAEA26B,QAAA,SAAAvxC,GACAtT,KAAAukD,MAAAr6B,IAAA5W,IAEAyxC,UAAA,WACA/kD,KAAA6kD,QAAA,KAEAG,mBAAA,WACA,GAAA96B,GAAAk3B,EAAAsG,EAAAC,CACAz9B,GAAAlqB,KAAA8mD,gBACA1F,EAAAphD,KAAA8kD,UACA4C,EAAAx9B,IAAAk3B,GAAA,IAAAA,EAAA5wC,QAAA0Z,GACAy9B,EAAA,KAAAz9B,GAAAw9B,IAAA1nD,KAAA4nD,eACAD,GAAA3nD,KAAA+kD,aAEAvsC,SAAA,WACA,MAAAxY,MAAAwkD,OAAAjqC,GAAA,WAEAqtC,YAAA,WACA,GAAAC,GAAA7nD,KAAAwkD,OAAA/6C,QAAA,CAEA,OADAzJ,MAAA0kD,gBAAArkD,KAAAL,KAAA8mD,iBACA9mD,KAAA0kD,gBAAAj7C,SAAAo+C,GAEAC,cAAA,WACA,GAAAC,GAAAC,EAAAC,CAGA,OAFAF,GAAA/nD,KAAAwkD,OAAAt6B,MAAAvpB,OACAqnD,EAAAhoD,KAAAwkD,OAAA,GAAAwD,eACA5kD,EAAAuzC,SAAAqR,GACAA,IAAAD,GACAloD,SAAAqoD,YACAD,EAAApoD,SAAAqoD,UAAAC,cACAF,EAAAG,UAAA,aAAAL,GACAA,IAAAE,EAAA5nD,KAAAM,SAIAy+B,QAAA,WACAp/B,KAAAukD,MAAAt9C,IAAA,OACAjH,KAAAwkD,OAAAv9C,IAAA,OACAjH,KAAA0kD,gBAAA93C,SACA5M,KAAAukD,MAAAvkD,KAAAwkD,OAAAxkD,KAAA0kD,gBAAA1hD,EAAA,YAGAshD,KAyBA+D,EAAA,WACA,YAOA,SAAAA,GAAAziD,EAAAi7C,GACAj7C,EAAAA,MACAA,EAAA0iD,UAAA1iD,EAAA0iD,cACA1iD,EAAA0iD,UAAAC,SAAA3iD,EAAA0iD,UAAAC,UAAA3iD,EAAA0iD,UAAAl8C,MACAxG,EAAAgY,QACA5a,EAAAoN,MAAA,kBAEAxK,EAAAozC,MACAh2C,EAAAoN,MAAA,gBAEAxK,EAAAiX,OAAA2rC,EAAA5iD,EAAAiX,OACA7Z,EAAAoN,MAAA,yBAAAxK,EAAAiX,MAEAgkC,EAAAxJ,MAAAr3C,MACAA,KAAA+hD,YAAAn8C,EAAAm8C,UACA/hD,KAAA6c,KAAAjX,EAAAiX,MAAA4rC,IACAzoD,KAAAgsC,MAAApmC,EAAAomC,OAAA,EACAhsC,KAAA0oD,UAAAC,EAAA/iD,EAAAd,SAAAc,EAAAgjD,YACA5oD,KAAAsoD,UAAAO,EAAAjjD,EAAA0iD,UAAAtoD,KAAA0oD,WACA1oD,KAAA4d,OAAAhY,EAAAgY,OAAAgiC,YAAAh6C,EAAAgY,OAAAgiC,cAAAh6C,EAAAgY,OACA5d,KAAAysB,MAAArpB,EAAAyzC,YAAAjxC,EAAA6mB,OAAAzsB,KAAA4d,OAAAjd,OAAA,IAAAiF,EAAA6mB,MACAzsB,KAAA8oD,uBACA9oD,KAAAimC,IAAAjjC,EAAA4C,EAAAozC,MAAAnvB,SAAA7pB,KAAA8gD,QAAAc,SAAA/3B,SAAA7pB,KAAA8gD,QAAAc,QAAA,IAAA5hD,KAAA6c,MA0JA,QAAA8rC,GAAA7jD,GAGA,QAAA4jD,GAAAtlB,GACA,MAAAA,GAAAt+B,GAFA,MADAA,GAAAA,GAAA1B,EAAA+vB,UACA/vB,EAAAjC,WAAA2D,GAAAA,EAAA4jD,EAKA,QAAAG,GAAAP,EAAAI,GAQA,QAAAK,GAAA77B,GACA,MAAAlqB,GAAA,SAAA3C,KAAAqoD,EAAAx7B,IARA,OACAq7B,SAAAD,EAAAC,UAAAnlD,EAAAo0C,WAAA8Q,EAAAC,UACAS,QAAAV,EAAAU,SAAA5lD,EAAAo0C,WAAA8Q,EAAAU,SACAjwC,OAAAuvC,EAAAvvC,QAAA3V,EAAAo0C,WAAA8Q,EAAAvvC,QACAkwC,OAAAX,EAAAW,QAAA7lD,EAAAo0C,WAAA8Q,EAAAW,QACAtiB,WAAA2hB,EAAA3hB,YAAAoiB,GAMA,QAAAP,GAAA51B,GACA,MAAA,mBAAAnxB,KAAAmxB,GA1MA,GAAA6lB,GAAAgQ,CAqLA,OApLAhQ,IACAvuB,IAAA,wBACAkZ,IAAA,wBAEAqlB,EAAArlD,EAAAk0C,iBAyBA+Q,EAAAa,YAAA,SAAAlzB,GACA,GAAAiQ,GAAAjjC,EAAAgzB,EACA,OAAAiQ,GAAA51B,KAAAooC,EAAArV,MAEAlZ,IAAA+b,EAAA51B,KAAAooC,EAAAvuB,MAAA,GACAkZ,IAAA6C,EAAA51B,KAAAooC,EAAArV,MAAA,MAGA,MAEAhgC,EAAAi0C,MAAAgR,EAAAz9C,UAAA23C,GACA4G,WAAA,SAAA5L,EAAA6L,GACAA,EAAAA,MACAA,EAAAzoD,OACAX,KAAAqpD,mBAAA9L,EAAA6L,GACAppD,KAAAysB,OAAAzsB,KAAAsoD,UAAAU,QACAhpD,KAAAspD,eAAA/L,IACAv9C,KAAAysB,OAAAzsB,KAAAsoD,UAAAC,SACAvoD,KAAAupD,gBAAAhM,GAEAv9C,KAAAwpD,SAEAxpD,KAAA8gB,QAAA,WAAA9gB,KAAA6c,KAAAusC,GAAA,IAEAK,QAAA,SAAAlM,EAAA6L;AACAA,EAAAA,MACAA,EAAAzoD,QAAAX,KAAA0pD,gBAAA/oD,OACAX,KAAA2pD,mBAAApM,EAAA6L,GACAA,EAAAzoD,OACAX,KAAAqpD,mBAAA9L,EAAA6L,IACAppD,KAAA0pD,gBAAA/oD,QAAAX,KAAAsoD,UAAAC,UACAvoD,KAAAupD,gBAAAhM,GAEAv9C,KAAA8gB,QAAA,WAAA9gB,KAAA6c,KAAAusC,GAAA,IAEAC,mBAAA,SAAA9L,EAAA6L,GACA,GAAAQ,EACAA,GAAA5pD,KAAA6pD,wBAAAtM,EAAA6L,GACAppD,KAAA0pD,gBAAAE,EAAAnvC,WAAApJ,OACArR,KAAAimC,IAAAt9B,KAAAihD,GAAA7lC,QAAA/jB,KAAA8pD,WAAAvM,EAAA6L,IAAAtlC,OAAA9jB,KAAA+pD,WAAAxM,EAAA6L,KAEAO,mBAAA,SAAApM,EAAA6L,GACA,GAAAQ,GAAAF,CACAE,GAAA5pD,KAAA6pD,wBAAAtM,EAAA6L,GACAM,EAAAE,EAAAnvC,WAAApJ,OACArR,KAAA0pD,gBAAAxlC,MAAA0lC,GACA5pD,KAAA0pD,gBAAAA,GAEAJ,eAAA,SAAA/L,GACA,GAAAlgB,GAAAr9B,KAAAsoD,UAAAU,OACAhpD,MAAA8oD,uBACAzrB,GAAAr9B,KAAAimC,IAAAt9B,KAAA00B,GACAkgB,MAAAA,EACAqE,QAAA5hD,KAAA6c,SAGA0sC,gBAAA,SAAAhM,GACA,GAAAlgB,GAAAr9B,KAAAsoD,UAAAC,QACAvoD,MAAA8oD,uBACAzrB,GAAAr9B,KAAAimC,IAAAt9B,KAAA00B,GACAkgB,MAAAA,EACAqE,QAAA5hD,KAAA6c,SAGA2sC,OAAA,WACAxpD,KAAAimC,IAAA75B,QACApM,KAAA8oD,wBAEAe,wBAAA,SAAAtM,EAAA6L,GACA,GAAAY,GAAA/nB,EAAAjiC,IAaA,OAZAgqD,GAAAnqD,SAAA4F,yBACArC,EAAAvB,KAAAunD,EAAA,SAAAziB,GACA,GAAAV,GAAA/Y,CACAA,GAAA+U,EAAAgoB,aAAA1M,EAAA5W,GACAV,EAAAjjC,EAAAi/B,EAAAqmB,UAAA3hB,WAAAzZ,IAAA7c,KAAAooC,EAAArV,IAAAuD,GAAAt2B,KAAAooC,EAAAvuB,IAAA+X,EAAAymB,UAAA/hB,IAAA9c,SAAAoY,EAAA6e,QAAAna,WAAA,IAAA1E,EAAA6e,QAAAe,YACAmI,EAAAzpD,YAAA0lC,EAAA,MAEAjmC,KAAA+hD,WAAAA,GACA7rC,UAAAlW,KAAA8gD,QAAAiB,UACA/I,KAAAgR,EACApG,QAAArG,IAEAv6C,EAAAgnD,IAEAD,WAAA,SAAAxM,EAAA6L,GACA,MAAAppD,MAAAsoD,UAAAW,OAAAjpD,KAAAsoD,UAAAW,QACA1L,MAAAA,EACA6L,YAAAA,EACAxH,QAAA5hD,KAAA6c,OACA,MAEAitC,WAAA,SAAAvM,EAAA6L,GACA,MAAAppD,MAAAsoD,UAAAvvC,OAAA/Y,KAAAsoD,UAAAvvC,QACAwkC,MAAAA,EACA6L,YAAAA,EACAxH,QAAA5hD,KAAA6c,OACA,MAEAisC,qBAAA,WACA9oD,KAAA0pD,gBAAA1mD,KAEAinD,aAAA,SAAA1M,EAAAna,GACA,MAAAhgC,GAAAwzC,SAAAxT,GAAAhgC,EAAAi0C,OACA6S,OAAA3M,GACAna,GAAAA,GAEA+mB,OAAA,SAAA5M,GAUA,QAAAuC,GAAAsJ,GACAgB,IAGAA,GAAA,EACAhB,GAAAA,OAAA3mD,MAAA,EAAAw/B,EAAA+J,OACAqe,EAAAjB,EAAAzoD,OACAshC,EAAAknB,WAAA5L,EAAA6L,GACAiB,EAAApoB,EAAA+J,OAAA/J,EAAAxV,OACAwV,EAAAnhB,QAAA,iBAAAy8B,IAGA,QAAA9wB,GAAA28B,GACAA,EAAAA,OACAkB,GAAAD,EAAApoB,EAAA+J,QACA/J,EAAAyZ,OAAA14C,EAAA2O,KACA04C,GAAAjB,EAAAzoD,OACAshC,EAAAwnB,QAAAlM,EAAA6L,EAAA3mD,MAAA,EAAAw/B,EAAA+J,MAAAqe,IACApoB,EAAAxV,OAAAwV,EAAAnhB,QAAA,gBAAAy8B,IA3BA,GAAAtb,GAAAjiC,KAAAsqD,GAAA,EAAAF,GAAA,EAAAC,EAAA,CACArqD,MAAA07C,SACA17C,KAAA07C,OAAA,WACA4O,GAAA,EACAroB,EAAAyZ,OAAA14C,EAAA2O,KACAswB,EAAAxV,OAAAwV,EAAAnhB,QAAA,gBAAAy8B,IAEAv9C,KAAA4d,OAAA2/B,EAAAuC,EAAArzB,IACA29B,GAAAtK,OAuBApE,OAAA14C,EAAA2O,KACAquB,MAAA,WACAhgC,KAAAwpD,SACAxpD,KAAA07C,SACA17C,KAAA8gB,QAAA,YAEAypC,QAAA,WACA,MAAAvqD,MAAAimC,IAAA1rB,GAAA,WAEA6kB,QAAA,WACAp/B,KAAAimC,IAAAjjC,EAAA,YAGAqlD,KAwBAmC,EAAA,WACA,YACA,SAAAA,GAAA5kD,EAAAi7C,GAUA,QAAA4J,GAAAC,GACA,GAAA1R,GAAA/W,EAAA0oB,MAAA32C,KAAA02C,EAAA1R,MAAA5nC,OAEA,OADAs5C,GAAA1R,KAAAA,EAAAr4C,OAAAq4C,EAAAh2C,EAAA,SAAAqhB,SAAA4d,EAAA0oB,OACA,GAAAtC,GAAAqC,EAAA7J,GAZA,GAAA5e,GAAAjiC,IACA4F,GAAAA,MACAA,EAAAozC,MACAh2C,EAAAoN,MAAA,oBAEAywC,EAAAxJ,MAAAr3C,MACAA,KAAA2qD,MAAA3nD,EAAA4C,EAAAozC,MACAh5C,KAAAu9C,MAAA,KACAv9C,KAAA4qD,SAAAxnD,EAAAwF,IAAAhD,EAAAglD,SAAAH,GA6HA,MAtHArnD,GAAAi0C,MAAAmT,EAAA5/C,UAAA23C,GACAsI,mBAAA,SAAAxI,GACAriD,KAAA8gB,QAAA,oBAAA9d,EAAAq/C,EAAAtiC,iBAEA+qC,YAAA,SAAAjqD,EAAA+gD,EAAAwH,EAAA38B,GACAzsB,KAAA2qD,MAAA5gC,YAAA/pB,KAAA8gD,QAAA10C,MAAApM,KAAA+qD,qBACA/qD,KAAA8gB,QAAA,kBAAA8gC,EAAAwH,EAAA38B,IAEAu+B,WAAA,WACAhrD,KAAA2qD,MAAA5gC,YAAA/pB,KAAA8gD,QAAA10C,MAAApM,KAAA+qD,qBACA/qD,KAAA8gB,QAAA,mBAEAmqC,WAAA,WACAjrD,KAAA8gB,QAAAte,MAAAxC,KAAAkH,YAEA6jD,kBAAA,WAEA,QAAAG,GAAAtJ,GACA,MAAAA,GAAA2I,UAFA,MAAAnnD,GAAA+zC,MAAAn3C,KAAA4qD,SAAAM,IAKAC,gBAAA,WACA,MAAAnrD,MAAA2qD,MAAA32C,KAAAhU,KAAAsX,UAAAuqC,aAEAuJ,cAAA,WACA,GAAAC,GAAArrD,KAAAsrD,qBACAD,IAAAA,EAAAvhC,YAAA9pB,KAAA8gD,QAAAgB,SAEAyJ,eAAA,SAAAtlB,GACA,GAAAulB,GAAAC,EAAAC,EAAAC,CACAH,GAAAvlB,EAAA5gB,WAAAvP,IACA21C,EAAAD,EAAAvlB,EAAAiP,aAAA,GACAwW,EAAA1rD,KAAA2qD,MAAAxjC,YACAwkC,EAAA3rD,KAAA2qD,MAAAj/C,SAAAge,SAAA1pB,KAAA2qD,MAAA5mD,IAAA,cAAA,IAAA2lB,SAAA1pB,KAAA2qD,MAAA5mD,IAAA,iBAAA,IACAynD,EAAA,EACAxrD,KAAA2qD,MAAAxjC,UAAAukC,EAAAF,GACAG,EAAAF,GACAzrD,KAAA2qD,MAAAxjC,UAAAukC,GAAAD,EAAAE,KAGA95B,KAAA,WACA,GAAA+5B,GAAA3pB,EAAAjiC,IAMA,OALA4rD,GAAAxoD,EAAAyuB,KAAA7xB,KAAA6qD,mBAAA7qD,MACAA,KAAA2qD,MAAAjnC,GAAA,WAAA1jB,KAAAsX,UAAAuqC,WAAA+J,GACAxoD,EAAAvB,KAAA7B,KAAA4qD,SAAA,SAAAhJ,GACAA,EAAAgB,OAAA,iBAAA3gB,EAAAgpB,WAAAhpB,GAAA2gB,OAAA,gBAAA3gB,EAAAgpB,WAAAhpB,GAAA2gB,OAAA,gBAAA3gB,EAAAgpB,WAAAhpB,GAAA2gB,OAAA,WAAA3gB,EAAA6oB,YAAA7oB,GAAA2gB,OAAA,UAAA3gB,EAAA+oB,WAAA/oB,KAEAjiC,MAEA6rD,OAAA,WACA,MAAA7rD,MAAA2qD,MAAA3gC,SAAAhqB,KAAA8gD,QAAAnxB,OAEAA,KAAA,WACA3vB,KAAA2qD,MAAA9gC,SAAA7pB,KAAA8gD,QAAAnxB,OAEAqJ,MAAA,WACAh5B,KAAA2qD,MAAA7gC,YAAA9pB,KAAA8gD,QAAAnxB,MACA3vB,KAAAorD,iBAEAU,qBAAA,SAAAt4C,GACAxT,KAAA2qD,MAAA5zC,KAAA,MAAAvD,IAEAu4C,2BAAA,SAAAC,GACA,GAAAC,GAAAC,EAAAC,EAAAC,CAOA,OANAF,GAAAlsD,KAAAsrD,sBACAW,EAAAjsD,KAAAmrD,kBACAgB,EAAAD,EAAAD,EAAArxC,MAAAsxC,IAAA,EACAE,EAAAD,EAAAH,EACAI,GAAAA,EAAA,IAAAH,EAAAtrD,OAAA,GAAA,EACAyrD,EAAAA,GAAA,EAAAH,EAAAtrD,OAAA,EAAAyrD,EACAA,KAAA,EAAA,KAAAH,EAAAvjD,GAAA0jD,IAEAC,UAAA,SAAAhB,GACArrD,KAAAorD,iBACAC,EAAAA,GAAAA,EAAAj6C,WACAi6C,EAAAxhC,SAAA7pB,KAAA8gD,QAAAgB,QACA9hD,KAAAurD,eAAAF,KAGAiB,kBAAA,SAAArmB,GACA,MAAAA,IAAAA,EAAAtlC,OAAA0nD,EAAAa,YAAAjjB,GAAA,MAEAqlB,oBAAA,WACA,GAAAD,GAAArrD,KAAAmrD,kBAAAzpD,OAAA1B,KAAAsX,UAAAwqC,QAAA1wC,OACA,OAAAi6C,GAAA1qD,OAAA0qD,EAAA,MAEAkB,iBAAA,WACA,GAAAlB,GAAArrD,KAAAmrD,kBAAA/5C,OACA,OAAAi6C,GAAA1qD,OAAA0qD,EAAA,MAEAlB,OAAA,SAAA5M,GAOA,QAAAiP,GAAA5K,GACAA,EAAAuI,OAAA5M,GAPA,GAAAkP,GAAAlP,IAAAv9C,KAAAu9C,KAKA,OAJAkP,KACAzsD,KAAAu9C,MAAAA,EACAn6C,EAAAvB,KAAA7B,KAAA4qD,SAAA4B,IAEAC,GAKArgD,MAAA,WAIA,QAAAsgD,GAAA9K,GACAA,EAAA5hB,QAJA58B,EAAAvB,KAAA7B,KAAA4qD,SAAA8B,GACA1sD,KAAAu9C,MAAA,KACAv9C,KAAA2qD,MAAA9gC,SAAA7pB,KAAA8gD,QAAA10C,QAKAgzB,QAAA,WAIA,QAAAutB,GAAA/K,GACAA,EAAAxiB,UAJAp/B,KAAA2qD,MAAA1jD,IAAA,OACAjH,KAAA2qD,MAAA3nD,EAAA,SACAI,EAAAvB,KAAA7B,KAAA4qD,SAAA+B,MAMAnC,KAEAoC,EAAA,WACA,YAEA,SAAAA,KACApC,EAAAhoD,MAAAxC,QAAAyC,MAAApB,KAAA6F,UAAA,IAFA,GAAAqB,GAAAiiD,EAAA5/C,SAwCA,OApCAxH,GAAAi0C,MAAAuV,EAAAhiD,UAAA4/C,EAAA5/C,WACA+kB,KAAA,WAEA,OADA3vB,KAAA+qD,qBAAA/qD,KAAA6sD,QACAtkD,EAAAonB,KAAAntB,MAAAxC,QAAAyC,MAAApB,KAAA6F,UAAA,KAEA8xB,MAAA,WAEA,MADAh5B,MAAA8sD,QACAvkD,EAAAywB,MAAAx2B,MAAAxC,QAAAyC,MAAApB,KAAA6F,UAAA,KAEA4jD,YAAA,WAMA,MALA9qD,MAAA+qD,oBACA/qD,KAAA8sD,QAEA9sD,KAAA6rD,UAAA7rD,KAAA6sD,QAEAtkD,EAAAuiD,YAAAtoD,MAAAxC,QAAAyC,MAAApB,KAAA6F,UAAA,KAEA8jD,WAAA,WAMA,MALAhrD,MAAA+qD,oBACA/qD,KAAA8sD,QAEA9sD,KAAA6rD,UAAA7rD,KAAA6sD,QAEAtkD,EAAAyiD,WAAAxoD,MAAAxC,QAAAyC,MAAApB,KAAA6F,UAAA,KAEA4kD,qBAAA,SAAAt4C,GAEA,MADAxT,MAAA2qD,MAAA5mD,IAAA,QAAAyP,EAAAxT,KAAA+D,IAAA09C,IAAAzhD,KAAA+D,IAAA29C,KACAn5C,EAAAujD,qBAAAtpD,MAAAxC,QAAAyC,MAAApB,KAAA6F,UAAA,KAEA4lD,MAAA,WACA9sD,KAAA2qD,MAAA7sC,QAEA+uC,MAAA,WACA7sD,KAAA2qD,MAAA5mD,IAAA,UAAA,YAGA6oD,KAEAG,EAAA,WACA,YACA,SAAAA,GAAAnnD,EAAAi7C,GACA,GAAAmM,GAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,CACA9nD,GAAAA,MACAA,EAAAoT,OACAhW,EAAAoN,MAAA,iBAEAxK,EAAA6nC,MACAzqC,EAAAoN,MAAA,gBAEAxK,EAAA+nD,UACA3qD,EAAAoN,MAAA,qBAEAywC,EAAAxJ,MAAAr3C,MACAA,KAAA2tD,SAAA/nD,EAAA+nD,SACA3tD,KAAA4tD,UAAAxqD,EAAAuzC,SAAA/wC,EAAAgoD,WAAAhoD,EAAAgoD,UAAA,EACA5tD,KAAAgZ,MAAApT,EAAAoT,MACAhZ,KAAAytC,KAAA7nC,EAAA6nC,KACAztC,KAAA2Y,SAAA,EACA3Y,KAAAksB,QAAA,EACAlsB,KAAAgZ,MAAAR,YAAAxY,KAAA+/B,WACA//B,KAAAwT,IAAAxT,KAAAgZ,MAAAquC,aACArnD,KAAA6tD,SACA7tD,KAAAytC,KAAA5b,OAAA+wB,OAAA,oBAAA5iD,KAAA8tD,qBAAA9tD,MAAA4iD,OAAA,iBAAA5iD,KAAA+tD,kBAAA/tD,MAAA4iD,OAAA,gBAAA5iD,KAAAguD,iBAAAhuD,MAAA4iD,OAAA,gBAAA5iD,KAAAiuD,iBAAAjuD,MAAA4iD,OAAA,kBAAA5iD,KAAAkuD,mBAAAluD,MAAA4iD,OAAA,iBAAA5iD,KAAAmuD,kBAAAnuD,MACAgtD,EAAA7sD,EAAAH,KAAA,WAAA,OAAA,cACAitD,EAAA9sD,EAAAH,KAAA,aAAA,cACAktD,EAAA/sD,EAAAH,KAAA,WAAA,SAAA,iBACAmtD,EAAAhtD,EAAAH,KAAA,WAAA,SAAA,eACAotD,EAAAjtD,EAAAH,KAAA,WAAA,eACAqtD,EAAAltD,EAAAH,KAAA,WAAA,OAAA,cACAstD,EAAAntD,EAAAH,KAAA,WAAA,OAAA,gBACAutD,EAAAptD,EAAAH,KAAA,WAAA,SAAA,gBACAwtD,EAAArtD,EAAAH,KAAA,WAAA,SAAA,iBACAytD,EAAAttD,EAAAH,KAAA,gBAAA,mBACA0tD,EAAAvtD,EAAAH,KAAA,gBAAA,wBACAA,KAAAgZ,MAAA6Y,OAAA+wB,OAAA,UAAAoK,EAAAhtD,MAAA4iD,OAAA,UAAAqK,EAAAjtD,MAAA4iD,OAAA,aAAAsK,EAAAltD,MAAA4iD,OAAA,WAAAuK,EAAAntD,MAAA4iD,OAAA,WAAAwK,EAAAptD,MAAA4iD,OAAA,UAAAyK,EAAArtD,MAAA4iD,OAAA,YAAA0K,EAAAttD,MAAA4iD,OAAA,YAAA2K,EAAAvtD,MAAA4iD,OAAA,aAAA4K,EAAAxtD,MAAA4iD,OAAA,eAAA6K,EAAAztD,MAAA4iD,OAAA,oBAAA8K,EAAA1tD,MAAA4iD,OAAA,iBAAA5iD,KAAAouD,kBAAApuD,MAmOA,QAAAG,GAAAkuD,GACA,GAAA1sB,MAAAl/B,MAAApB,KAAA6F,UAAA,EACA,OAAA,YACA,GAAA8wC,MAAAv1C,MAAApB,KAAA6F,UACA9D,GAAAvB,KAAA8/B,EAAA,SAAA5T,GACA,MAAAsgC,GAAAtgC,GAAAvrB,MAAA6rD,EAAArW,MANA,MAhOA50C,GAAAi0C,MAAA0V,EAAAniD,WACAijD,OAAA,WACA,GAAArJ,GAAA8J,CACA9J,GAAAxkD,KAAAgZ,MAAAwrC,QAAAxhD,EAAA,SACAsrD,EAAAtuD,KAAAytC,KAAAkd,OAAA3nD,EAAA,SACAwhD,EAAA9gC,GAAA,UAAA,SAAA2+B,GACA,GAAAn2B,GAAAipB,EAAAoZ,CACAriC,GAAArsB,SAAAkH,cACAouC,EAAAmZ,EAAA/zC,GAAA2R,GACAqiC,EAAAD,EAAAt2C,IAAAkU,GAAAvrB,OAAA,EACAyC,EAAAmzC,WAAApB,GAAAoZ,KACAlM,EAAAjiC,iBACAiiC,EAAA7gC,2BACApe,EAAAq0C,MAAA,WACA+M,EAAAjsC,aAIA+1C,EAAA5qC,GAAA,eAAA,SAAA2+B,GACAA,EAAAjiC,oBAGA0tC,qBAAA,SAAAjtD,EAAAolC,GACAjmC,KAAAka,OAAA+rB,IAEAkoB,kBAAA,WACAnuD,KAAAwuD,eAEAN,mBAAA,SAAArtD,EAAA+gD,EAAAwH,EAAA38B,GACAzsB,KAAAwuD,cACAxuD,KAAA2tD,SAAA7sC,QAAA,SAAAsoC,EAAA38B,EAAAm1B,IAEAmM,kBAAA,SAAAltD,EAAA+gD,EAAArE,GACAv9C,KAAA2tD,SAAA7sC,QAAA,eAAAy8B,EAAAqE,IAEAoM,iBAAA,SAAAntD,EAAA+gD,EAAArE,GACAv9C,KAAA2tD,SAAA7sC,QAAA,cAAAy8B,EAAAqE,IAEAqM,iBAAA,SAAAptD,EAAA+gD,EAAArE,GACAv9C,KAAA2tD,SAAA7sC,QAAA,eAAAy8B,EAAAqE,IAEA6M,WAAA,WACAzuD,KAAA0uD,iBAAA1uD,KAAAytC,KAAA0c,OAAAnqD,KAAAgZ,MAAAsuC,aAEAqH,WAAA,WACA3uD,KAAAgZ,MAAAyuC,iCACAznD,KAAA2tD,SAAA7sC,QAAA,SAAA9gB,KAAAgZ,MAAAsuC,aAGAsH,cAAA,SAAA/tD,EAAAwhD,GACA,GAAAgJ,IACAA,EAAArrD,KAAAytC,KAAA6d,wBACAtrD,KAAAka,OAAAmxC,IAAAhJ,EAAAjiC,kBAGAyuC,YAAA,SAAAhuD,EAAAwhD,GACA,GAAAgJ,IACAA,EAAArrD,KAAAytC,KAAA6d,uBACAtrD,KAAAka,OAAAmxC,IAAAhJ,EAAAjiC,kBACAirC,EAAArrD,KAAAytC,KAAA8e,qBACAvsD,KAAAssC,aAAA+e,IAAAhJ,EAAAjiC,kBAGA0uC,YAAA,WACA9uD,KAAAg5B,SAEA+1B,WAAA,WACA/uD,KAAAgvD,YAAA,IAEAC,aAAA,WACAjvD,KAAAgvD,WAAA,IAEAE,aAAA,WACA,QAAAlvD,KAAAwT,KAAAxT,KAAAgZ,MAAA8uC,iBACA9nD,KAAAssC,aAAAtsC,KAAAytC,KAAA8e,qBAGA4C,cAAA,WACA,QAAAnvD,KAAAwT,KAAAxT,KAAAgZ,MAAA8uC,iBACA9nD,KAAAssC,aAAAtsC,KAAAytC,KAAA8e,qBAGA6C,gBAAA,SAAAjtD,EAAAo7C,GACAv9C,KAAA0uD,cAAAnR,GAAAv9C,KAAAytC,KAAA0c,OAAA5M,GAAAv9C,KAAAytC,KAAArhC,SAEAijD,qBAAA,WACArvD,KAAAwuD,eAEAJ,kBAAA,SAAAjsD,EAAAqR,GACAxT,KAAAwT,MAAAA,IACAxT,KAAAwT,IAAAA,EACAxT,KAAAytC,KAAAqe,qBAAAt4C,KAGA87C,cAAA,WACAtvD,KAAAm1C,YAAAn1C,KAAA2vB,QAEA++B,cAAA,SAAAnR,GAEA,MADAA,GAAAn6C,EAAAszC,SAAA6G,GAAAA,EAAAv9C,KAAAgZ,MAAAsuC,YAAA,GACA/J,EAAA58C,QAAAX,KAAA4tD,WAEAY,YAAA,WACA,GAAAnD,GAAAh7C,EAAA6Z,EAAAqzB,EAAAgS,EAAAC,EAAA1tD,CACAupD,GAAArrD,KAAAytC,KAAA8e,mBACAl8C,EAAArQ,KAAAytC,KAAA6e,kBAAAjB,GACAnhC,EAAAlqB,KAAAgZ,MAAA8tC,iBACAz2C,GAAAjN,EAAAozC,cAAAtsB,IAAAlqB,KAAAgZ,MAAA4uC,cAOA5nD,KAAAgZ,MAAA+rC,aANAxH,EAAA+G,EAAAqB,eAAAz7B,GACAqlC,EAAAnsD,EAAAqzC,iBAAA8G,GACAiS,EAAA,GAAA96C,QAAA,OAAA66C,EAAA,SAAA,KACAztD,EAAA0tD,EAAAprD,KAAAiM,EAAA6Z,KACApoB,GAAA9B,KAAAgZ,MAAA6rC,QAAA36B,EAAApoB,EAAA,MAKA2tD,UAAA,WACA,MAAAzvD,MAAA2Y,SAEAumB,OAAA,WACAl/B,KAAA2Y,SAAA,GAEAiD,QAAA,WACA5b,KAAA2Y,SAAA,GAEAw8B,SAAA,WACA,MAAAn1C,MAAAksB,QAEA6T,SAAA,WACA,QAAA//B,KAAAm1C,eAEAn1C,KAAAyvD,aAAAzvD,KAAA2tD,SAAA1pC,OAAA,aAGAjkB,KAAAksB,QAAA,EACAlsB,KAAA2tD,SAAA7sC,QAAA,WACA,IAGA4uC,WAAA,WACA,OAAA1vD,KAAAm1C,aAEAn1C,KAAA2tD,SAAA1pC,OAAA,UAGAjkB,KAAAksB,QAAA,EACAlsB,KAAAg5B,QACAh5B,KAAA2tD,SAAA7sC,QAAA,SACA,IAGA+qC,OAAA,WACA,MAAA7rD,MAAAytC,KAAAoe,UAEAl8B,KAAA,WAMA,MALA3vB,MAAA6rD,UAAA7rD,KAAA2tD,SAAA1pC,OAAA,UACAjkB,KAAAytC,KAAA9d,OACA3vB,KAAAwuD,cACAxuD,KAAA2tD,SAAA7sC,QAAA,SAEA9gB,KAAA6rD,UAEA7yB,MAAA,WAOA,MANAh5B,MAAA6rD,WAAA7rD,KAAA2tD,SAAA1pC,OAAA,WACAjkB,KAAAytC,KAAAzU,QACAh5B,KAAAgZ,MAAA+rC,YACA/kD,KAAAgZ,MAAAstC,kBACAtmD,KAAA2tD,SAAA7sC,QAAA,WAEA9gB,KAAA6rD,UAEA/3B,OAAA,SAAA5J,GACAlqB,KAAAgZ,MAAAuuC,SAAAnkD,EAAA4zC,MAAA9sB,KAEA8J,OAAA,WACA,MAAAh0B,MAAAgZ,MAAAsuC,YAEAptC,OAAA,SAAAmxC,GACA,GAAAh7C,GAAArQ,KAAAytC,KAAA6e,kBAAAjB,EACA,UAAAh7C,GAAArQ,KAAA2tD,SAAA1pC,OAAA,SAAA5T,EAAA+yB,QACApjC,KAAAgZ,MAAAuuC,SAAAl3C,EAAA6Z,KAAA,GACAlqB,KAAA2tD,SAAA7sC,QAAA,SAAAzQ,EAAA+yB,KACApjC,KAAAg5B,SACA,IAIAsT,aAAA,SAAA+e,GACA,GAAA9N,GAAAltC,EAAAs3C,CAIA,OAHApK,GAAAv9C,KAAAgZ,MAAAsuC,WACAj3C,EAAArQ,KAAAytC,KAAA6e,kBAAAjB,GACA1D,EAAAt3C,GAAAktC,IAAAltC,EAAA6Z,OACAy9B,GAAA3nD,KAAA2tD,SAAA1pC,OAAA,eAAA5T,EAAA+yB,QACApjC,KAAAgZ,MAAAuuC,SAAAl3C,EAAA6Z,KACAlqB,KAAA2tD,SAAA7sC,QAAA,eAAAzQ,EAAA+yB,MACA,IAIA4rB,WAAA,SAAAhD,GACA,GAAAzO,GAAAoS,EAAAt/C,EAAAu/C,EAAAC,CAMA,OALAtS,GAAAv9C,KAAAgZ,MAAAsuC,WACAqI,EAAA3vD,KAAAytC,KAAAse,2BAAAC,GACA37C,EAAArQ,KAAAytC,KAAA6e,kBAAAqD,GACAC,EAAAv/C,EAAAA,EAAA+yB,IAAA,KACAysB,EAAA7vD,KAAA0uD,iBAAA1uD,KAAAytC,KAAA0c,OAAA5M,IACAsS,IAAA7vD,KAAA2tD,SAAA1pC,OAAA,eAAA2rC,KACA5vD,KAAAytC,KAAA4e,UAAAsD,GACAt/C,EACArQ,KAAAgZ,MAAAwuC,cAAAn3C,EAAA6Z,MAEAlqB,KAAAgZ,MAAAstC,kBACAtmD,KAAAwuD,eAEAxuD,KAAA2tD,SAAA7sC,QAAA,eAAA8uC,IACA,IAIAxwB,QAAA,WACAp/B,KAAAgZ,MAAAomB,UACAp/B,KAAAytC,KAAArO,aAGA2tB,MAWA,WACA,YAwKA,SAAA+C,GAAAC,EAAAp/C,GACAo/C,EAAAluD,KAAA,WACA,GAAAmuD,GAAAxL,EAAAxhD,EAAAhD,OACAgwD,EAAAxL,EAAAn0C,KAAAooC,EAAAuX,aAAAr/C,EAAAq/C,EAAAxL,KAGA,QAAAyL,GAAAzL,EAAA3D,GACA,MAAA2D,GAAA37C,QAAAghB,SAAAg3B,EAAAC,QAAAM,MAAA7jC,aAAAxZ,IAAA88C,EAAA98C,IAAAq9C,MAAAr9C,IAAAmsD,EAAA1L,IAAA19B,KAAA,YAAA,GAAAsC,WAAA,gCAAArS,MACAu1B,aAAA,MACA6jB,WAAA,QACAn4B,UAAA,IAGA,QAAAo4B,GAAA5L,EAAA3D,GACA2D,EAAAn0C,KAAAooC,EAAAtP,OACA31B,IAAAgxC,EAAAztC,KAAA,OACAu1B,aAAAkY,EAAAztC,KAAA,gBACAo5C,WAAA3L,EAAAztC,KAAA,cACA1S,MAAAmgD,EAAAztC,KAAA,WAEAytC,EAAA36B,SAAAg3B,EAAAC,QAAA9nC,OAAAjC,MACAu1B,aAAA,MACA6jB,YAAA,GAEA,MACA3L,EAAAztC,KAAA,QAAAytC,EAAAztC,KAAA,MAAA,QACA,MAAA5U,IACA,MAAAqiD,GAEA,QAAA0L,GAAAjqB,GACA,OACAoqB,qBAAApqB,EAAAliC,IAAA,yBACA+gB,eAAAmhB,EAAAliC,IAAA,mBACA8iC,gBAAAZ,EAAAliC,IAAA,oBACA49C,gBAAA1b,EAAAliC,IAAA,oBACAusD,iBAAArqB,EAAAliC,IAAA,qBACAwsD,mBAAAtqB,EAAAliC,IAAA,uBACAysD,iBAAAvqB,EAAAliC,IAAA,qBACA0sD,eAAAxqB,EAAAliC,IAAA,oBAGA,QAAA2sD,GAAAlM,GACA,GAAA3D,GAAA8P,CACA9P,GAAA2D,EAAAn0C,KAAAooC,EAAAoI,KACA8P,EAAAnM,EAAA1rC,SAAApX,OAAAm/C,EAAAvpC,UAAA6pC,SACA/9C,EAAAvB,KAAA2iD,EAAAn0C,KAAAooC,EAAAtP,OAAA,SAAAjf,EAAA3H,GACAnf,EAAAyzC,YAAA3sB,GAAAs6B,EAAAp7B,WAAA7G,GAAAiiC,EAAAztC,KAAAwL,EAAA2H,KAEAs6B,EAAAjnC,WAAAk7B,EAAAuX,WAAAzyC,WAAAk7B,EAAAoI,KAAAtjC,WAAAk7B,EAAA1hC,MAAA+S,YAAA+2B,EAAAC,QAAA9nC,OACA23C,EAAAhwD,SACA6jD,EAAA3gC,SAAAU,YAAAosC,GACAA,EAAA/jD,UAGA,QAAAgkD,GAAAxtB,GACA,GAAAukB,GAAA1hB,CAGA,OAFA0hB,GAAAvkD,EAAA2zC,SAAA3T,IAAAhgC,EAAA0zC,UAAA1T,GACA6C,EAAA0hB,EAAA3kD,EAAAogC,GAAAhyB,WACA60B,EAAAtlC,OAAAslC,EAAA,KAjOA,GAAAje,GAAAywB,EAAA9W,CACA3Z,GAAAhlB,EAAA2N,GAAAq/C,UACAvX,GACAoI,IAAA,SACA1X,MAAA,WACA6mB,UAAA,gBAEAruB,GACA4d,WAAA,SAAA35C,EAAAglD,GAMA,QAAAiG,KACA,GAAArM,GAAAmM,EAAApM,EAAA+J,EAAAwC,EAAAC,EAAApD,EAAA30C,EAAAy0B,EAAAuiB,EAAAgB,CACA5tD,GAAAvB,KAAA+oD,EAAA,SAAA1qD,GACAA,EAAA6hD,YAAAn8C,EAAAm8C,YAEAyC,EAAAxhD,EAAAhD,MACA2wD,EAAA3tD,EAAA69C,EAAAl4C,KAAAw4C,SACAoD,EAAAqM,EAAAhrD,EAAAw7C,MACAkN,EAAAsC,EAAAhrD,EAAA6nC,MACAqjB,EAAAlrD,EAAAw7C,QAAA,IAAAmD,EACAwM,EAAAnrD,EAAA6nC,QAAA,IAAA6gB,EACAwC,IAAAvM,EAAA0L,EAAAzL,EAAA3D,IACAkQ,IAAAzC,EAAAtrD,EAAA69C,EAAAl4C,KAAA8kC,MAAA1pC,IAAA88C,EAAA98C,IAAA0pC,OACA8W,GAAAA,EAAAr6B,IAAA,IACAs6B,EAAA4L,EAAA5L,EAAA3D,IACAiQ,GAAAC,KACAJ,EAAA5sD,IAAA88C,EAAA98C,IAAAo9C,SACAqD,EAAAzgD,IAAA+sD,EAAAjQ,EAAA98C,IAAAiV,MAAA6nC,EAAA98C,IAAAy9C,iBACAgD,EAAAz1B,KAAA4hC,GAAA73C,SAAAiL,QAAA+sC,EAAAvM,EAAA,MAAAzgC,OAAAitC,EAAAzC,EAAA,OAEA0C,EAAAD,EAAAnE,EAAApC,EACAmD,EAAA,GAAA3L,IACAhsB,GAAAwuB,IAEAxrC,EAAA,GAAAsrC,IACAlD,KAAAmD,EACAvrC,MAAAwrC,GACA3D,GACApT,EAAA,GAAAujB,IACAhY,KAAAsV,EACA1D,SAAAA,GACA/J,GACAmP,EAAA,GAAAjD,IACA/zC,MAAAA,EACAy0B,KAAAA,EACAkgB,SAAAA,EACAC,UAAAhoD,EAAAgoD,WACA/M,GACA2D,EAAAn0C,KAAAooC,EAAAoI,IAAAA,GACA2D,EAAAn0C,KAAAooC,EAAAuX,UAAAA,GA5CA,GAAAnP,EAIA,OAHA+J,GAAAxnD,EAAA4J,QAAA49C,GAAAA,KAAAnoD,MAAApB,KAAA6F,UAAA,GACAtB,EAAAA,MACAi7C,EAAAF,EAAA/6C,EAAAqrD,YACAjxD,KAAA6B,KAAAgvD,IA2CApB,UAAA,WACA,GAAA92C,EAIA,OAHAm3C,GAAA9vD,KAAAoR,QAAA,SAAAR,GACA+H,EAAA/H,EAAA6+C,cAEA92C,GAEAumB,OAAA,WAIA,MAHA4wB,GAAA9vD,KAAA,SAAA4Q,GACAA,EAAAsuB,WAEAl/B,MAEA4b,QAAA,WAIA,MAHAk0C,GAAA9vD,KAAA,SAAA4Q,GACAA,EAAAgL,YAEA5b,MAEAm1C,SAAA,WACA,GAAAjpB,EAIA,OAHA4jC,GAAA9vD,KAAAoR,QAAA,SAAAR,GACAsb,EAAAtb,EAAAukC,aAEAjpB,GAEA6T,SAAA,WAIA,MAHA+vB,GAAA9vD,KAAA,SAAA4Q,GACAA,EAAAmvB,aAEA//B,MAEA0vD,WAAA,WAIA,MAHAI,GAAA9vD,KAAA,SAAA4Q,GACAA,EAAA8+C,eAEA1vD,MAEA6rD,OAAA,WACA,GAAAl8B,EAIA,OAHAmgC,GAAA9vD,KAAAoR,QAAA,SAAAR,GACA+e,EAAA/e,EAAAi7C,WAEAl8B,GAEAA,KAAA,WAIA,MAHAmgC,GAAA9vD,KAAA,SAAA4Q,GACAA,EAAA+e,SAEA3vB,MAEAg5B,MAAA,WAIA,MAHA82B,GAAA9vD,KAAA,SAAA4Q,GACAA,EAAAooB,UAEAh5B,MAEAka,OAAA,SAAA8b,GACA,GAAA1H,IAAA,EAAA2X,EAAAjjC,EAAAgzB,EAIA,OAHA85B,GAAA9vD,KAAAoR,QAAA,SAAAR,GACA0d,EAAA1d,EAAAsJ,OAAA+rB,KAEA3X,GAEAge,aAAA,SAAAtW,GACA,GAAA1H,IAAA,EAAA2X,EAAAjjC,EAAAgzB,EAIA,OAHA85B,GAAA9vD,KAAAoR,QAAA,SAAAR,GACA0d,EAAA1d,EAAA07B,aAAArG,KAEA3X,GAEA0gC,WAAA,SAAAhD,GACA,GAAA19B,IAAA,CAIA,OAHAwhC,GAAA9vD,KAAAoR,QAAA,SAAAR,GACA0d,EAAA1d,EAAAo+C,WAAAhD,KAEA19B,GAEApE,IAAA,SAAAgnC,GACA,GAAA3T,EACA,OAAAr2C,WAAAvG,QAMAmvD,EAAA9vD,KAAA,SAAA4Q,GACAA,EAAAkjB,OAAAo9B,KAEAlxD,OARA8vD,EAAA9vD,KAAAoR,QAAA,SAAAR,GACA2sC,EAAA3sC,EAAAojB,WAEAupB,IAQAne,QAAA,WAKA,MAJA0wB,GAAA9vD,KAAA,SAAAgwD,EAAAxL,GACAkM,EAAAlM,GACAwL,EAAA5wB,YAEAp/B,OAGAgD,EAAA2N,GAAAq/C,UAAA,SAAAjiC,GACA,MAAA4T,GAAA5T,GACA4T,EAAA5T,GAAAvrB,MAAAxC,QAAAyC,MAAApB,KAAA6F,UAAA,IAEAy6B,EAAA4d,WAAA/8C,MAAAxC,KAAAkH,YAGAlE,EAAA2N,GAAAq/C,UAAAx9B,WAAA,WAEA,MADAxvB,GAAA2N,GAAAq/C,UAAAhoC,EACAhoB,WAgEAmyB,OAAA,aAAA,UAAA,SAAAtT,GACA,MAAA,YACA,GAAAsyC,GAAAxgD,CAKA,OAJAA,GAAA,SAAA3N,GACA,MAAAggC,SAAAz6B,EAAA6oD,SAAAhuD,EAAAiuD,SAAA,gBAAAhb,QAAArzC,IAEAmuD,EAAAxgD,EAAAnO,MAAAqc,EAAA3X,aAGAlH,OCx9CAmyB,OAAA,UAAA,SAAA,SAAA,QAAA,aAAA,aACA,SAAAnvB,EAAAgwB,EAAAgc,EAAA2Q,IAEA,SAAA38C,GA0cA,QAAAsuD,GAAAjlC,EAAAkxB,GACA,GAAAlxB,GAAAA,EAAAhpB,QAAA,SACAgoB,mBAAAkyB,IACAz7C,EAAAkB,EAAA,qCAAAknB,KAIA,OAHApoB,KACAuqB,GAAA,UAAAvqB,GAEAuqB,EAhdA,GAAAqV,GAAA,SAGAC,GAOAC,MAAA,SAAA7a,GAGA,MAFAA,GAAAA,MAEA/mB,KAAA6B,KAAA,WAmBA,QAAA0vD,GAAA5tD,GACA,OAAAA,EAAA20B,UAAA/xB,KAAA5C,EAAAkZ,MAGA,QAAA20C,GAAA7tD,GACA,QAAA8tD,GAAAh4C,GACA,MAAAA,GAAAvJ,MAAA,KAAAoE,MAEA,QAAAo9C,GAAAj4C,GACA,MAAAA,GAAAvJ,MAAA,KAAAzN,MAAA,GAAA,GAAAmM,KAAA,KAGA,GAAAgkB,GAAA,uCACA6+B,EAAA9tD,EAAAkZ,MACA,4BAEAmyB,EAAAC,WAAAyiB,EAAA/tD,EAAAkZ,MAGA,IAAAlZ,EAAA20B,KAAA,CACA1F,GAAA,wBACA,KAAA,GAAArxB,GAAA,EAAAA,EAAAoC,EAAA20B,KAAA33B,OAAAY,IAAA,CACA,GAAAikC,GAAA7hC,EAAA20B,KAAA/2B,EACAqxB,IAAA,wBACAoc,EAAAC,WAAAzJ,GACA,UAEA5S,GAAA,UASA,MANAjvB,GAAA25B,QACA1K,GAAA,8BACAoc,EAAAC,WAAAtrC,EAAA25B,OACA,UACA1K,GAAA,SAyBA,QAAA++B,GAAAC,GACA,GAAAh/B,GAAA,EAEA,IAAAg/B,EAAAn4C,MAAAo4C,GAAAD,EAAAE,OAAAC,EAAA,CACA,GAAAC,GAAAJ,EAAAn4C,KAAAvJ,MAAA,KAAAoE,KACAu9C,GAAAD,EAAAn4C,KACAs4C,EAAAH,EAAAE,MACAl/B,EAAA,wCAAAo/B,EAAA,gCAEAhjB,EAAAC,WAAA2iB,EAAAn4C,MACA,gBAIA,MAAAmZ,GAAAq/B,EAAAL,GAsBA,QAAAM,GAAAN,GACA,MAAAjS,GAAAvH,WAAAC,WAAAuZ,EAAAvxD,MAGA,QAAA8xD,GAAAP,GACA,GAAAh/B,GAAA,EAgBA,OAdAg/B,GAAAn4C,MAAAo4C,GAAAD,EAAAE,OAAAC,IACAF,EAAAD,EAAAn4C,KACAs4C,EAAAH,EAAAE,MACAl/B,EAAA,wCAAAg/B,EAAAI,IAAA,iCAEAhjB,EAAAC,WAAA2iB,EAAAE,OACA,sCACA9iB,EAAAC,WAAA2iB,EAAAn4C,MACA,kBAIAm4C,EAAAvxD,OACAuyB,GAAAq/B,EAAAL,IACAh/B,EAQA,QAAAw/B,GAAA9pD,EAAAiE,GAMA,IAAA,GALA+7C,GAAAt1B,EAAAN,MAAA41B,UACAx0C,KACAu+C,EAAA/pD,EAAA4H,MAAA,KACAoiD,KAEA/wD,EAAA,EAAAA,EAAA8wD,EAAA1xD,OAAAY,IACA+wD,EAAA/rD,MAAA+yC,OAAA+Y,EAAA9wD,GAAA0iD,MAAA,GAAAvvC,QAAA,IAAA29C,EAAA9wD,KAEA,KAAA,GAAAA,GAAA,EAAAA,EAAA+mD,EAAA3nD,OAAAY,IAAA,CACA,GAAAgxD,GAAAjK,EAAA/mD,EAEA,IAAA20B,SAAAq8B,EAAA79B,MAAA,CACA,IAAA,GAAA1wB,GAAA,EAAAlC,GAAA,EAAAkC,EAAAsuD,EAAA3xD,QAAAmB,EAAAkC,IACAuuD,EAAA11C,KAAAiZ,WAAAw8B,EAAAtuD,GAAAs1C,SACAiZ,EAAA11C,KAAA/a,MAAAwwD,EAAAtuD,GAAAigD,SACAniD,GAAA,EAEAA,IACAgS,EAAAvN,KAAAgsD,IAIAhmD,EAAAuH,GAIA,QAAA0+C,GAAAvyD,GACA,GAAA2yB,GAAA,gCA6BA,OA3BA3yB,GAAAY,OAAA+xB,GAAA,IAAA3yB,EAAAY,MACAZ,EAAAwyD,OAAA7/B,GAAA,YACA3yB,EAAAwyD,MAEA7/B,GAAA,4BAEAoc,EAAAC,WAAAhvC,EAAA4c,MACA,IACA5c,EAAAy0B,MACA,UAEAz0B,EAAAyyD,MACA9/B,GAAA,yBACA3yB,EAAAyyD,MACA9/B,GAAA,mCACAA,GAAA,WAGA3yB,EAAA0yD,UACA//B,GAAA,8BACAoc,EAAAC,WAAAhvC,EAAA0yD,SACA,UACA//B,GAAA,SAGAA,GAAA,SAWA,QAAAggC,GAAAtqD,EAAAiE,GAEA,GADAgxC,EAAAj1C,EACAA,EAAA3H,OAAA,EAAA,QAEA,IAAAmT,MACA++C,EAAA,GAAAn+C,QAAA,MAAApM,EAAA,IACAwqD,GAAAD,EAEA7vD,EAAA,kBAAAnB,KAAA,WAIA,IAAA,GAHAkxD,GAAA/yD,KACA0F,EAAA1C,EAAA+vD,GAAA79B,aAAA,SAAA29B,GAAAxoD,IAAA,IAEA9I,EAAA,EAAAA,EAAAmE,EAAA/E,OAAAY,IACAmE,EAAAnE,GAAAwxD,OAAAA,EACArtD,EAAAnE,GAAA0iD,MAAA6O,EACAh/C,EAAAvN,KAAAb,EAAAnE,MAIAgL,EAAAuH,GAIA,QAAAm+C,GAAAL,GACA,GACArwD,GADAlB,EAAAuxD,EAAAvxD,MAGAkB,EAAAlB,EAAAi9C,OAAAwV,IAAA,KACAzyD,EAAA,MAAAA,EAAAoC,MAAAlB,EAAA,KACAlB,EAAAM,OAAA,KACAN,EAAAA,EAAAm0B,UAAA,EAAA,IAEA,IAAA5B,GAAA,8EAGAg/B,EAAAoB,KACA,gCAEAhkB,EAAAC,WAAA5uC,GACA,sBAIA,OAAAuyB,GAsBA,QAAAqgC,GAAArB,GACA,QAAAviB,GAAAuiB,GACA,MAAAA,GAAAviB,OACA,4BAAA6jB,UAAAtB,EAAAviB,QAAA,KAEA,GAIA,GAAAzc,GAAA,8BACAyc,EAAAuiB,GACA,0BACA5iB,EAAAC,WAAA2iB,EAAA/0C,MACA,eAGA,OAAA+V,GAgEA,QAAAugC,GAAA/+B,GAIA,IAAA,GAHAg/B,MACAtqD,EAAAsrB,EAAA/wB,QAAA,OAAA,KAAA6M,MAAA,KAEA3O,EAAA,EAAAA,EAAAuH,EAAAnI,OAAAY,IACA6xD,EAAA7sD,KAAA8sD,EAAAvqD,EAAAvH,IAGA,OAAA6xD,GAzWA,GACA7V,GADAlwC,EAAArK,EAAAhD,MAOAszD,EAAA,GAAA3T,IACA9iC,KAAA,QACA6e,QAAArP,IAAA2G,EAAA2C,KAAAC,UAAA29B,gBACA,qBACA3U,SAAA,UAEAhD,eAAA2V,EACA1V,eAAA8D,EAAAvH,WAAAC,YAEAib,GAAA/T,YA6CA,IAAAiU,GAAA,GAAA7T,IACA9iC,KAAA,gBACAmvB,MAAA,GACA5uB,OAAA,EACAse,QACArP,IAAA2G,EAAA2C,KAAAC,UAAA29B,gBACA,8BACAlwD,QAAAiuD,GAEA1V,eAAAsW,EACArW,eAAA8D,EAAAvH,WAAAC,YAEAmb,GAAAjU,YAEA,IAAAsS,GAAA,KACAE,EAAA,KAsBAqB,EAAA,GAAAzT,IACA9iC,KAAA,SACAmvB,MAAA,GACA5uB,OAAA,EACAq2C,mBAAA,EACA/3B,QACArP,IAAA2G,EAAA2C,KAAAC,UAAA29B,gBACA,wBACAlwD,QAAAiuD,GAEA1V,eAAAsW,EACArW,eAAA8D,EAAAvH,WAAAC,YAEA+a,GAAA7T,YA+FA,IAAAuT,GAqDA1f,EAAA,GAAAuM,IACA9iC,KAAA,QACAmvB,MAAA,GACA5uB,OAAA,EACAse,QACArP,IAAA2G,EAAA2C,KAAAC,UAAA29B,gBACA,qBACAlwD,QAAAiuD,GAEA1V,eAAAsW,EACArW,eAAA8D,EAAAvH,WAAAC,YAEAjF,GAAAmM,YA0BA,IAAA8T,IACAz1C,QACAf,KAAA,SACA/X,QAAA,OACA8Y,OAAAg1C,EACAtK,WAAA3hB,WAAAsrB,IAEAmB,SACAv2C,KAAA,UACA/X,QAAA,OACA8Y,OAAAw1C,EAAA1S,YACA4H,WAAA3hB,WAAAwrB,GACAnmB,MAAA,IAEAsnB,OACAz2C,KAAA,QACA/X,QAAA,OACA8Y,OAAA01C,EAAA5S,YACA4H,WAAA3hB,WAAA6qB,IAEAkC,eACA72C,KAAA,gBACA/X,QAAA,OACA8Y,OAAA41C,EAAA9S,YACA4H,WAAA3hB,WAAAgrB,IAEAgC,YACA92C,KAAA,aACA/X,QAAA,SAAA7E,GACA,MAAAA,GAAA4c,KAAA,IAAA5c,EAAAy0B,OAEA9W,OAAAw0C,EACA9J,WAAA3hB,WAAA6rB,IAEApf,OACAv2B,KAAA,QACA/X,QAAA,OACA8Y,OAAAw1B,EAAAsN,YACA4H,WAAA3hB,WAAAssB,KAMAW,EAAAP,EAAAD,QAAAx1C,MACAy1C,GAAAD,QAAAx1C,OAAA,SAAAtV,EAAAiE,GAIA,MAHAslD,GAAA,KACAE,EAAA,KACAe,EAAA,GAAAp+C,QAAAA,OAAAuC,OAAA3O,IACAsrD,EAAAtrD,EAAAiE,IAsBAc,EAAA2iD,WAAApC,UAAA,EACA7L,WAAA,GAEAoR,EAAA9lD,EAAAgD,KAAA,eACAqT,GAAA,6CACA,SAAA2Q,EAAA6oB,GAEA,GAAA,GAAAn2B,EAAAu2B,OACAjwC,EAAAgD,KAAA,aAAA6sC,OAEA,IAAA,SAAAA,EAAAr8C,KACAq8C,EAAAK,QACAL,EAAA+G,MAAA,GAAAvvC,QAAAA,OAAAuC,OAAAimC,EAAAK,OAAA,KACAL,EAAA2W,gBAAA,GAEA7wD,EAAAqxB,EAAAlc,QAAAwC,QAAA,UAAA+X,MAAA,WAAAwqB,OACA,IAAAhnB,SAAAgnB,EAAAxoB,MACA1xB,EAAA,yBAAA8d,QAAA,QAAAo8B,OACA,IAAAhnB,SAAAgnB,EAAA6V,QACA78B,SAAAgnB,EAAA8V,KACAhwD,EAAAk6C,EAAA6V,QAAA79B,aAAA,WAAAgoB,EAAA8V,MACA/O,MAAA/G,EAAA+G,MACA4P,gBAAA,QAEA,IAAA39B,SAAAgnB,EAAA4U,MAAA,CACA,GAAAzlC,GAAA6mC,UAAA,IAAAhW,EAAA4U,MACA,IAAA5U,EAAAzjC,KACA,IAAAyjC,EAAA8U,KACA8B,GAAAznC,IAAAA,EAAA2mC,KAAA9V,EAAA8V,KAEA9V,GAAAK,QACAuW,EAAA7P,MAAA,GAAAvvC,QAAAA,OAAAuC,OAAAimC,EAAAK,OAAA,KACAuW,EAAAD,gBAAA,GAGA7wD,EAAAqxB,EAAAlc,QAAAwC,QAAA,UAAA+X,MAAA,UAAAohC,OAEAzmD,GAAAgD,KAAA,aAAA6sC,GACAvgC,QAAA4zB,IAAAljC,EAAAgD,KAAA,iBAKA,GAAA0W,EAAAu2B,QACAjwC,EAAAsN,QAAA,QAAAf,OAAA,SAAAya,GACA,GAAAhkB,GAAAhD,EAAAgD,KAAA,cACAuiB,EAAAvlB,EAAA6c,KAUA,OARA7Z,IAAAA,EAAA6sC,OAAA7sC,EAAA6sC,MAAA7b,OAAAzO,IACAviB,EAAAuiB,GAEAvlB,EAAA6c,IAAA,IACA7c,EAAAgD,KAAA,aAAA,MAEAhD,EAAAiwC,OAAA,SAAAjtC,IAEA,OAaAitC,OAAA,SAAAh1C,GACA8qB,MAAA,6EA0BApwB,GAAA2N,GAAA2sC,OAAA,SAAAvvB,GACA,MAAA4T,GAAA5T,GACA4T,EAAA5T,GACAvrB,MAAAxC,KAAA+M,MAAAnC,UAAAnI,MAAApB,KAAA6F,UAAA,IACA,gBAAA6mB,IAAAA,MAGA/qB,GAAAoN,MAAA,UAAA2d,EAAA,6BAAA2T,GAFAC,EAAAC,MAAAp/B,MAAAxC,KAAAkH,aAKAorB,QAEA5d,OAAAuC,OAAA,SAAA88C,GACA,MAAAA,GAAA1wD,QAAA,yBAAA,WCrfA8uB,OAAA,UAAA,SAAA,OAAA,SAAA,cAAA,QACA,UAAA,UACA,SAAAnvB,EAAAi+B,EAAAjO,EAAAS,EAAAQ,GACA,GAAA+/B,IACAC,YACApzD,KAAA,SAAAuzB,GACA,GAAA49B,GAAA59B,EAAAlkB,MAAA,KAAAoE,KAEA,KAAA,GAAApQ,KAAA8vD,GAAAC,SACA,GAAAD,EAAAC,SAAAvjD,eAAAxM,IACA8vD,EAAAC,SAAA/vD,GAAA+L,UAAA+hD,EACA,MAAAgC,GAAAC,SAAA/vD,IA0pBA,OArpBA,UAAAlB,GA8lBA,QAAAkxD,GAAA1wB,EAAAjxB,EAAA2Z,GACAlpB,EAAAwgC,GAAAzU,KAAA,6CAAAxc,EAAA,WACA,IAAA4hD,GAAAnxD,EAAAwgC,GAAA1qB,QAKA,OAHAoT,IACAioC,EAAAtqC,SAAA,UAEAsqC,EAGA,QAAAC,GAAArnB,EAAA72B,GACA,GAAA00B,GAAA5nC,EAAAgzB,GAAA4U,MAAAhhB,MAAA,uBAAAmjB,GAKA,OAHA72B,IACAlT,EAAA4nC,GAAA/gB,SAAA3T,GAEA00B,EAGA,QAAAypB,KACA,MAAA,cAAAC,IAGA,QAAAC,GAAA13C,GACA,GAAAmW,EAAAN,MAAA8hC,SACA,IAAA,GAAAjzD,GAAA,EAAAA,EAAAyxB,EAAAN,MAAA8hC,SAAA7zD,OAAAY,IACA,GAAAyxB,EAAAN,MAAA8hC,SAAAjzD,GAAA+R,OAAAuJ,EACA,MAAAmW,GAAAN,MAAA8hC,SAAAjzD,GAxnBA,GAAAmgC,GAAA,SACA4yB,EAAA,EAGA3yB,GASAC,MAAA,SAAA7a,GAGA,MAFAA,GAAAA,MAEA/mB,KAAA6B,KAAA,WACA,GAAAwL,GAAArK,EAAAhD,MACAqQ,IAEAA,GAAAokD,OAAA1tC,EAAA0tC,OACApkD,EAAA4jD,SAAAltC,EAAAktC,UAAAD,EAAAC,SACA5mD,EAAAgD,KAAAqxB,EAAArxB,GAEAhD,EAAAwc,SAAA,UACAxc,EAAA2mD,OAAA,cAEA3mD,EAAAqW,GAAA,SAAA,SAAA2Q,EAAAvrB,GACAuE,EAAA2mD,OAAA,gBAAAlrD,KAEAuE,EAAAqW,GAAA,iBAAA,SAAA2Q,EAAAqgC,GACArnD,EAAA2mD,OAAA,gBAAAU,KAEArnD,EAAAqW,GAAA,gBAAA,SAAA2Q,EAAAsgC,GACA,GAAAx0B,GAAAn9B,EAAAqxB,EAAAlc,QAAAwC,QAAA,aACAlb,EAAA4N,EAAA2mD,OAAA,SAAA7zB,EAAAppB,KAAA,MAEAtX,KACAk1D,EACAl1D,EAAAqqB,YAAA,cAEArqB,EAAAoqB,SAAA,oBASA+qC,WAAA,WACA,GAAAn6C,GAAAza,KAAAya,WACA4yB,EAAArqC,EAAAgzB,GAAAqX,IAAAzjB,MAAA,eACAiZ,KAAA,YAEApzB,EAAAzM,EAAAgzB,GAAAyM,KAAA7Y,MAAA,eAEA5pB,MAAA+jB,QAAAtU,GACAzP,KAAA+jB,QAAAspB,GAEArqC,EAAAqqC,GAAA3pB,GAAA,QAAA,cAAA,SAAA2Q,GACA,GAAA9hB,GAAAvP,EAAAqxB,EAAAlc,QAAAW,SAAA/B,KAAA,UACA/T,GAAAqxB,EAAAlc,QAAA4C,QAAA,WAAA3J,QAAA4iD,OAAA,YAAAzhD,GACA8hB,EAAAjU,mBAEApd,EAAAqqC,GAAA3pB,GAAA,QAAA,IAAA,SAAA2Q,GACArxB,EAAAqxB,EAAAlc,QAAAwC,QAAA,KAAAwlB,IAAA,QACA9L,EAAAjU,kBAIA,KAAA,GAAA7e,GAAA,EAAAA,EAAAkZ,EAAA9Z,OAAAY,IAAA,CACA,GAAAi1B,GAAAxzB,EAAAyX,EAAAlZ,IACAgR,EAAA8hD,IACAhzB,EAAA7K,EAAAzf,KAAA,eAAA,UACAiiB,EAAA,YAAAxC,EAAAzf,KAAA,cACAmV,EAAA3qB,GAAAkZ,EAAA9Z,OAAA,EAEAktC,EAAA7tC,KAAAg0D,OAAA,WAAAzhD,EAAA8uB,EAAArI,EACA9M,IACAlpB,EAAA6qC,GAAAhkB,SAAA,UACA7mB,EAAAqqC,GAAAvpB,OAAA+pB,GACA7qC,EAAAyM,GAAAqU,OAAAowC,EAAAlxD,EAAAyX,EAAAlZ,IAAAgR,EAAA2Z,IAIA,GAAA2oC,GAAA7xD,EAAAgzB,GAAAv2B,GAAAmqB,MAAA,kBACA0T,MAAA,kBAEA82B,EAAA,QACApxD,GAAAqqC,GAAAvpB,OAAA9gB,EAAAgzB,GAAA6X,IAAAhL,KAAA,gBAAAgyB,IACA7xD,EAAA6xD,GAAAnxC,GAAA,QAAA,SAAA2Q,GACA,GAAA2/B,GAAAhxD,EAAAqxB,EAAAlc,QAAA4C,QAAA,WAAA3J,OAIA,OAFA4iD,GAAAA,OAAA,UACA3/B,EAAAjU,kBACA,IAIApd,EAAAqqC,GAAA3pB,GAAA,eAAA,IAAA,SAAA2Q,GACA,GAAAygC,GAAA9xD,EAAAqxB,EAAAlc,QAAA9H,KAAA,KACArN,GAAA,IAAA8xD,EAAA,0BAAAh0C,QAAA,kBAGA,GAAA9gB,KAAAg0D,OAAA,cAAAv5C,WAAA9Z,QACAX,KAAAg0D,OAAA,WAaAS,OAAA,SAAAjxB,GACA,GAAAnzB,GAAArQ,KAAAqQ,KAAAqxB,EAaA,OAXAxL,SAAAsN,IACAnzB,EAAAokD,OACAjxB,EAAAnzB,EAAAokD,UAEAjxB,EAAAxjC,KAAAg0D,OAAA,aACAhxD,EAAAwgC,GAAA1f,OAAA9jB,KAAAg0D,OAAA,eACAhxD,EAAAgzB,GAAA++B,KACA/0D,KAAAg0D,OAAA,iBAIAh0D,KAAAg0D,OAAA,SAAAxwB,GAAAtX,QAAA,EAAA8M,OAAA,KAOAg8B,cAAA,SAAAlsD,GACA,GAAAoR,GAAAla,KAAAgU,KAAA,oBACA,IAAAkG,EAAAvZ,OAAA,EAAA,CACA,GAAAw/B,GAAAn9B,EAAAkX,EAAA,IAAAS,QAAA,YACA3a,MAAAg0D,OAAA,OAAA7zB,EAAAppB,KAAA,OACA,gBAAA,UACAjO,GAAA2rD,OACAz0D,KAAAg0D,OAAA,YAAA7zB,EAAAr3B,OACA,CACA,GAAAq3B,GAAAngC,KAAAg0D,OAAA,SAAAhxD,EAAA,iBACA,iBAAA,UACA8F,GAAA2rD,OACAz0D,KAAAg0D,OAAA,YAAA7zB,EAAAr3B,IACA9I,KAAAg0D,OAAA,YAAA7zB,EAAAppB,KAAA,OAIA,MAAA/W,OAQAi1D,UAAA,SAAA90B,EAAAr3B,GACA,GAAA,gBAAA,KACAA,EAAAolC,MAAAplC,EAAAolC,KAAArxB,MAAA/T,EAAAujB,KACA,CAAA,GAAAxP,GAAA/T,EAAAolC,MAAAplC,EAAAolC,KAAArxB,KAAA/T,EAAAolC,KAAArxB,KAAA/T,EAAAujB,IACA6oC,EAAAlB,EAAAnzD,KAAAgc,GACAvB,EAAAtY,EAAAgzB,GAAAyM,KAOA,OALAtC,GAAAx3B,KAAA,IACAw3B,EAAA6zB,OAAA,QAAAkB,EAAA7zB,MAAA6zB,EAAAjlD,UACAkwB,EAAArc,OAAAxI,GACA45C,EAAAL,OAAAv5C,GACAtY,EAAAsY,GAAAwF,QAAA,SAAAhY,IACA,EAGA,OAAA,GAiBAqsD,cAAA,SAAAT,GAMA,QAAAU,KAGA,GAAA37C,EAAAqc,WAAA,cACA,MAAArc,GAAAvJ,MAAA,KAAA,GAGA,QAAAmlD,KACA,GAAA/b,GAAA,UACA,IAAA7/B,EAAAqc,WAAAwjB,GACA,MAAA7/B,GAAAhX,MAAA62C,EAAA34C,QAfA,GAAA+zD,GAAAA,EAAA92C,QAAA82C,EAAA92C,OAAAnE,KAAA,CACA,GACA67C,GAAAtX,EACAuX,EAFA97C,EAAAi7C,EAAA92C,OAAAnE,IAiBA,IAAA67C,EAAAF,IACAG,EAAAv1D,KAAAgU,KAAA,kBACAtS,OAAA,SAAAH,EAAAY,GACA,MAAAa,GAAAb,GAAA+yB,aAAA,WAAAld,IAAAs9C,UAEA,KAAAtX,EAAAqX,OACAE,EAAAv1D,KAAAgU,KAAA,YACAy8B,QAAA,SAAAh3B,KAAAukC,KAEAuX,GAQA,MAPAv1D,MAAA2a,QAAA,UACA+X,MAAA,YACAjZ,KAAAukC,EACAyW,QAAA,EACAe,WAAA,EACAd,OAAAA,IAEA10D,IAIAu1D,IACAA,EAAArgC,aAAA,gBAAAw/B,GAGA,MAAA10D,OAeAy1D,OAAA,SAAAn6C,EAAAyL,GACA,GAAAsmB,GAAArtC,KAAAg0D,OAAA,WACAzhD,EAAA8hD,IACAl0B,EAAA+zB,EAAA54C,EAAA/I,EAAAwU,EAAAiS,MAEAh5B,MAAAg0D,OAAA,cAAAlwC,OAAAqc,EAEA,IAAA0N,GAAA7tC,KAAAg0D,OAAA,WAAAzhD,EAAA,UAAAymB,MAAA,UAEA67B,EAAAxnB,EAAAr5B,KAAA,YASA,OARA,IAAA6gD,EAAAl0D,OACAqC,EAAA6qC,GAAA7pB,aAAA6wC,EAAAzjD,QAAA0H,UAEAu0B,EAAAvpB,OAAA+pB,GAEA9mB,EAAAmF,QACAlpB,EAAA6qC,GAAA75B,KAAA,KAAA5C,QAAA+uB,IAAA,QAEAA,GAUAu1B,UAAA,SAAAnjD,GACA,GAEAojD,GAFA9nB,EAAA7tC,KAAAg0D,OAAA,WAAAhgD,KAAA,cAAAzB,EAAA,MAAAuG,SACAqnB,EAAAn9B,EAAA,IAAAuP,EAGA,IAAA4tB,EAAAnsB,KAAA,YAAAy8B,QAAA,SAAA,cAGAtQ,EAAA5lB,GAAA,cACAo7C,EAAA9nB,EAAAnzB,QAAAmzB,EAAAp6B,QACAo6B,EAAAjhC,SAEAuzB,EAAAnsB,KAAA,kBAAA4hD,aAAA,SACAz1B,EAAAnsB,KAAA,YAAAy8B,QAAA,SACAtQ,EAAAvzB,SACA+oD,GAAAA,EAAAh1D,OAAA,EACAg1D,EAAA3hD,KAAA,KAAA5C,QAAA+uB,IAAA,QACA,GAAAngC,KAAAg0D,OAAA,cAAAv5C,WAAA9Z,QACAX,KAAAg0D,OAAA,UAGAhxD,EAAA,YAAAytC,QAAA,eAAA,KAOA5yB,KAAA,SAAAtL,GACA,GAAA9S,GAAAO,KAAAg0D,OAAA,SAAAzhD,EACA9S,IACAA,EAAA0gC,IAAA,QAGAn9B,EAAA,YAAAytC,QAAA,eAAA,IAYAolB,SAAA,SAAAtjD,EAAA8uB,EAAArI,EAAAn4B,GACA,GAAAi1D,GACAnmB,CAEA3W,KACA88B,EAAA1B,EAAA,SAAA,UACApxD,EAAA8yD,GAAA/+C,KAAA,QAAA,cAEAlW,EAAAA,GAAA,IAEA,IAAAk1D,GAAA/yD,EAAAgzB,GAAAv2B,GAAAmqB,MAAA,UAAAnR,KAAA,IAAAlG,EAAAyjD,UAAAzjD,GACAvP,EAAAgzB,GAAA4U,MAAAhhB,MAAA,sBAAA/oB,IACAmC,EAAAgzB,GAAA4U,MAAAhhB,MAAA,YACA0T,MAAA,yDAEAqS,EAAA3sC,EAAAgzB,GAAAv2B,GAAAmqB,MAAA,WACA0T,MAAA,2BAEA2D,EAAA4L,QAAAC,UAAA,QACA9pC,EAAAgzB,GAAA4U,MAAAhhB,MAAA,oBACA5mB,EAAAgzB,GAAA4U,MAAAhhB,MAAA,aAAAyX,GACAy0B,GACAjoB,EAAA7qC,EAAAgzB,GAAA6X,IAAAhL,KAAA,gBAAAkzB,EAQA,OANA/yD,GAAA2sC,GAAAjsB,GAAA,QAAA,SAAA2Q,GACA,GAAA9hB,GAAAvP,EAAAqxB,EAAAlc,QAAAwC,QAAA,aAAAtK,KAAA,KAEA,OADArN,GAAA,IAAAuP,GAAAyB,KAAA,YAAAy8B,QAAA,SACA,IAGA5C,GAQAooB,OAAA,WACA,GAAA91B,GAAAngC,KAAA2a,QAAA,YAEA,IAAA,GAAAwlB,EAAAx/B,OAAA,CAIA,GAAAqzD,GAAA7zB,EAAAxlB,QAAA,WACApI,EAAA4tB,EAAAppB,KAAA,MACAs2B,EAAA2mB,EAAAA,OAAA,WACAv0D,EAAA4tC,EAAAr5B,KAAA,aAAAzB,EAAA,IAEA,OAAA9S,KAUA69B,MAAA,SAAAA,EAAAz8B,GACA,GAAApB,GAAAO,KAAAg0D,OAAA,SAEA,IAAAv0D,IACAA,EAAAuU,KAAA,cAAA3T,KAAAi9B,GACAz8B,GAAA,CACA,GAAAihC,GAAAriC,EAAAuU,KAAA,YACA8tB,GAAAhY,cACAgY,EAAAjY,SAAA,sBAAAhpB,GAIA,MAAAb,OAQAk2D,MAAA,SAAAA,GACA,GAAAz2D,GAAAO,KAAAg0D,OAAA,SAEA,IAAAv0D,EAAA,CACA,GAAAmrC,GAAAnrC,EAAAuU,KAAA,YAEAkiD,IAAAA,EAAApiB,OACAlJ,EAAA52B,KAAA,mBAAA3T,KAAA61D,EAAApiB,OACAlJ,EAAA/gB,SAAA,eAEA+gB,EAAA9gB,YAAA,cAIA,MAAA9pB,OAQAm2D,UAAA,WACA,GAAA9lD,GAAArQ,KAAAqQ,KAAAqxB,GACA8B,EAAAxgC,EAAAgzB,GAAAyM,KAAA7Y,MAAA,iBACA5mB,EAAAgzB,GAAAyM,KAAA7Y,MAAA,iBACA5mB,EAAAgzB,GAAAqL,OAAAzX,MAAA,eACA,aACAhmB,EAAAZ,EAAAgzB,GAAAyM,KAAA7Y,MAAA,YAAAiZ,KAAA,UACA7/B,EAAAgzB,GAAAqL,OAAAzX,MAAA,gBAAA,UACA44B,IAEA,KAAA,GAAAt+C,KAAAmM,GAAA4jD,SACA5jD,EAAA4jD,SAAAvjD,eAAAxM,IACAmM,EAAA4jD,SAAA/vD,GAAA8hB,OACAw8B,EAAAj8C,KAAArC,EAEAs+C,GAAAlxC,KAAA,SAAA7R,EAAAC,GACA,MAAA2Q,GAAA4jD,SAAAx0D,GAAAumB,MAAA3V,EAAA4jD,SAAAv0D,GAAAsmB,OAGA,KAAA,GAAAzkB,GAAA,EAAAA,EAAAihD,EAAA7hD,OAAAY,IAAA,CACA,GAAAV,GAAAwP,EAAA4jD,SAAAzR,EAAAjhD,GAEAyB,GAAAY,GAAAkgB,OAAA9gB,EAAAgzB,GAAA/c,QAAApY,KAAA,SACA+oB,MAAA,kBACAwsC,YAAAv1D,EAAAw1D,SACAC,WAAAz1D,EAAAoP,UAEApP,EAAAwgC,QA4CA,MAzCAr+B,GAAAY,GAAA8f,GAAA,QAAA,OAAA,SAAA2Q,GACA,GAAAxzB,GAAAmC,EAAAqxB,EAAAlc,QAAA9H,KAAA,QACA8vB,EAAAn9B,EAAAqxB,EAAAlc,QAAAwC,QAAA,aACAW,EAAAtY,EAAAgzB,GAAAyM,MACA1b,EAAA/jB,EAAAgF,UAAAgsD,EAAAC,SAAApzD,IACA8wC,EAAAxR,EAAAnsB,KAAA,sCAAAkW,KAEAynB,KACA5qB,EAAA4qB,QAAAA,EACA5qB,EAAAzT,MAAA6sB,EAAA6zB,OAAA,eAAAriB,EACAqiB,EAAAC,SAAApzD,GAAAoP,UACAimB,QAAAnP,EAAAzT,OACAmgB,EAAAK,OAAA,kBAAA6d,IAGAxR,EAAAx3B,KAAA,IACAw3B,EAAA6zB,OAAA,QAAAjtC,EAAAsa,MAAAta,EAAA9W,UACAkwB,EAAArc,OAAAxI,GACA04C,EAAAC,SAAApzD,GAAAg0D,OAAAv5C,EAAAyL,KAEA/jB,EAAAY,GAAAimB,SAAA,wBACA7mB,EAAAY,GAAA8f,GAAA,+BAAA,SAAA2Q,GACA,GAAA8L,GAAAn9B,EAAAqxB,EAAAlc,QAAAwC,QAAA,YACA,IAAAwlB,EAAA5lB,GAAA,YAAA,CACA,GAAAg8C,IAAAC,SAAA,uBACAC,KAAA,mBACAC,MAAA,oBACAC,SAAA,6BAGA1iC,GAAAb,MAAA,2BAAAmjC,EAAAliC,EAAAxzB,OACAwzB,EAAAhU,qBAGArd,EAAAY,GAAA8f,GAAA,mBAAA,SAAA2Q,EAAAsd,GACA3uC,EAAAqxB,EAAAlc,QAAAnE,KAAA,UAAAnS,KAAA,WACAmB,EAAAhD,MAAA8mB,KAAA,WACA6qB,EAAA9wC,KAAA2P,QAAAxN,EAAAhD,MAAAqQ,KAAA,QAAA,OAIAmzB,GAGAozB,WAAA,WACA,GAAAC,GAAA7zD,EAAAgzB,GAAAiL,MAAArX,MAAA,kBACA5mB,EAAAgzB,GAAAqL,OAAAzX,MAAA,iBAAA,+BACA5mB,EAAAgzB,GAAAyM,KACA7Y,MAAA,eACA5mB,EAAAgzB,GAAAhd,OAAAnY,KAAA,OACA+oB,MAAA,sBACAyf,YAAA,iBACAytB,iBAAA,0BAEA9zD,EAAAgzB,GAAAyM,KAAA7Y,MAAA,mBACA5mB,EAAAgzB,GAAA/c,QAAA2Q,MAAA,kBAAA/oB,KAAA,UACAmC,EAAAgzB,GAAAz0B,GAAAqoB,MAAA,kCACA5mB,EAAAgzB,GAAAyM,KAAA7Y,MAAA,eACAqX,EAAAoJ,OAAA9wB,MAAA,WACA8nB,MAAA,gBAAA/tB,MAAA,QACA+tB,MAAA,gBAAA/tB,MAAA,MAAA4Y,QAAA,IACAmV,MAAA,WAAA/tB,MAAA,eAIA,OAFAtQ,GAAA6zD,GAAA7iD,KAAA,gBAAAspC,SAEAuZ,GAGAE,YAAA,WACA,GAAA/jC,EAAAN,MAAA8hC,UAAAxhC,EAAAN,MAAA8hC,SAAA7zD,OAAA,EAAA,CAGA,IAAA,GAFAq2D,GAEAz1D,EAAA,EAAAA,EAAAyxB,EAAAN,MAAA8hC,SAAA7zD,OAAAY,UACAyxB,GAAAN,MAAA8hC,SAAAjzD,GAAA2qB,MAGA,IAAA8qC,EAAAvjC,EAAAO,OAAA,mBACA,IAAA,GAAAzyB,GAAA,EAAAA,EAAAyxB,EAAAN,MAAA8hC,SAAA7zD,OAAAY,IACAyxB,EAAAN,MAAA8hC,SAAAjzD,GAAA+R,OAAA0jD,IACAhkC,EAAAN,MAAA8hC,SAAAjzD,GAAA2qB,QAAA,OAGA8G,GAAAN,MAAA8hC,SAAA,GAAAtoC,QAAA,CAGA,IAAA+qC,GACAj0D,EAAAgzB,GAAAyM,KACA7Y,MAAA,kBACA5mB,EAAAgzB,GAAAqL,OAAAzX,MAAA,eAAA,YACA5mB,EAAAgzB,GAAAyM,KAAA7Y,MAAA,8BACAqX,EAAAoJ,OAAA9wB,MAAA,UAAAyZ,EAAAN,MAAA8hC,WACAxxD,EAAAgzB,GAAAqL,OAAAzX,MAAA,gBAAA,WAUA,OARA5mB,GAAAi0D,GAAAvzC,GAAA,QAAA,SAAA2Q,GACA,GAAAna,GAAAlX,EAAAqxB,EAAAlc,QAAAnE,KAAA,SAAAkW,MACAynB,EAAA4iB,EAAAr6C,EACAlX,GAAAqxB,EAAAlc,QAAAwC,QAAA,aACA3G,KAAA,6BACA8M,QAAA,mBAAA6wB,KAGAslB,IAIAC,aAAA,SAAAr6C,EAAAm1C,GACA,GAAA3lC,GAAA2G,EAAA2C,KAAAC,UAAAlD,MAAA,WAAA7V,EAAA,IAAAm1C,CACA,OAAAhvD,GAAAsqB,MAAAjB,IAAAA,EACAxrB,KAAA,MACAwP,MAAA07B,OAAA,OACAtf,OAAA,EACArc,MAAA,SAAA2xB,GACA9N,EAAA6P,UAAA/B,MAEA5R,cAMAgnC,QAAA,WACA,MAAAn3D,MAAAgU,KAAA,eAAA5C,SAGAgmD,OAAA,SAAA7kD,GACA,GAAA9S,GAAAO,KAAAgU,KAAA,eAAA5C,QAAA4C,KAAA,cAAAzB,EAAA,KACA,IAAA9S,EAAAkB,OAAA,EACA,MAAAlB,IAGA43D,WAAA,WACA,MAAAr3D,MAAAgU,KAAA,mBAAA5C,SAuDApO,GAAA2N,GAAAqjD,OAAA,SAAAjmC,GACA,MAAA4T,GAAA5T,GACA4T,EAAA5T,GACAvrB,MAAAxC,KAAA+M,MAAAnC,UAAAnI,MAAApB,KAAA6F,UAAA,IACA,gBAAA6mB,IAAAA,MAGA/qB,GAAAoN,MAAA,UAAA2d,EAAA,6BAAA2T,GAFAC,EAAAC,MAAAp/B,MAAAxC,KAAAkH,aAKAorB,QAEA0hC,IC/pBA7hC,OAAA,UAAA,SAAA,SAAA,OAAA,eAGA,SAAAnvB,EAAAgwB,EAAAiO,EAAAxN,GACA,GAAA6jC,IAgBAC,YAAA,SAAAha,EAAA3/B,EAAAmJ,GAUA,QAAAhQ,GAAA8F,EAAAvJ,GACA,MAAAtQ,GAAAgzB,GAAAhd,OAAAnY,KAAA,SAAAgc,KAAAA,EAAAvJ,MAAAA,IAsCA,QAAAkkD,KACA,GAAAt0B,GAAAlgC,EAAAgzB,GAAAiL,MACArX,MAAA,mBACAqX,EAAAoJ,OAAAuB,WAAA9W,EAAAlmB,KAAA,MACAqyB,EAAAoJ,OAAAwB,UAAA7Y,EAAAN,MAAA+kC,YACAhkC,EAAAO,OAAA,cACAiN,EAAAoJ,OAAA2B,MAAA,UAAA,GACA/K,EAAAoJ,OAAAmC,SAAAkrB,EAAA,GACAz2B,EAAAoJ,OAAA5nB,SACA4e,MAAA,eACAoL,OAAA,SAAApY,EAAAsjC,GAMA,MALAtjC,GAAAjU,iBACA4S,EAAAN,MAAA+kC,YAAA92D,OAAA,GACA8yB,EAAAK,OAAA,YAAA6jC,EAAA5rB,QACAurB,EAAAC,YAAAha,EAAA3/B,EAAA+5C,IAEA,KAGA33D,MAAA8jB,OAAAof,GA9DA,GALAnc,EAAAA,MACAA,EAAA2wC,YAAA3wC,EAAA2wC,aACA3wC,EAAAylB,UACA,oBAEAzlB,EAAA6kB,WAAA,CACA,GAAA1I,GACA6I,EAAAhlB,EAAAglB,QAAA,QAQA,IAFAhlB,EAAAklB,WACAsR,EAAA,aAAAx2B,EAAA6kB,WAAA,MAAA2R,EAAA,MACAx2B,EAAAilB,MAAA,CACA,GAAAA,GAAAtiB,SAAA3C,EAAAilB,MAAA3oC,QAAA,QAAA,IAEA,IAAA,gBAAA,GAIA,MADA+vB,OAAA,mBAAArM,EAAAilB,QACA,CAHAuR,GAAA,SAAAvR,EAAA,KAAAuR,EAAA,KAOAra,EAAAlgC,EAAAgzB,GAAAiL,MAAAlT,OAAA,OACA0e,OAAAzZ,EAAA2C,KAAAC,UAAAgiC,SAAA,UACAz/C,OAAA,UAEApB,EAAA,SAAA,OACAA,EAAA,QAAA,MACAA,EAAA,YAAA,OACAA,EAAA,cAAAgQ,EAAA2wC,aACA3gD,EAAA,cAAA,SACAA,EAAA,MAAAwmC,GACAxmC,EAAA,WAAA6G,GACA7G,EAAA,WAAAg1B,EAAA,IAAAhlB,EAAA6kB,WAAA,MACAjvB,QAAA4zB,IAAArN,GACAlgC,EAAA,QAAA8gB,OAAAof,GACAA,EAAAtpB,SACA5W,EAAAkgC,GAAAt2B,aACA,CACA,GAAAkoB,GAAA9xB,IAAAkyB,aAAA,YAAAqoB,GACAma,EAAA3wC,EAAA2wC,WACAA,GAAAlnD,QAAA,KAAA,IACAknD,GAAA,QAwBAz2B,EAAAkJ,YAAA7M,MAAA;AACA14B,KAAA4yD,IAIA,MAAAx3D,OAMA63D,aAAA,SAAAtvD,GACA,MAAAA,GAAAlF,QAAA,UAAA,KAMA0jB,SACA+wC,YAAA,QACAvrB,MAAA,GA2BA,OAXAvpC,GAAA0vB,MAAA,SAAA3L,GACA,IAAA,GAAAgxC,KAAAT,GAAAvwC,QACAuwC,EAAAvwC,QAAArW,eAAAqnD,KACAhxC,EAAArW,eAAAqnD,KACAhxC,EAAAgxC,GAAAT,EAAAvwC,QAAAgxC,GAIA,OAAA,IAAAC,SAAAjxC,IAGAuwC,ICpLA,SAAAz4C,EAAAw3B,GACA,gBAAAz2C,UAAA,mBAAAD,QAAAA,OAAAC,QAAAy2C,IACA,kBAAAlkB,SAAAA,OAAAC,IAAAD,OAAA,oBAAAkkB,GACAx3B,EAAAo5C,WAAA5hB,KACAr2C,KAAA,WAAA,YAoCA,SAAAk4D,GAAAvrB,GAAA,MAAA,IAAAj4B,QAAA,UAAAi4B,EAAA,iBAWA,QAAAwrB,GAAAh2D,GACA,IAAA,GAAA2xC,GAAA3xC,EAAAiE,WAAAzF,OAAAmzC,EAAA,IAAAA,EACA3xC,EAAA1B,YAAA0B,EAAAkE,WACA,OAAAlE,GAGA,QAAAi2D,GAAAt/C,EAAA3W,GACA,MAAAg2D,GAAAr/C,GAAAvY,YAAA4B,GAGA,QAAAk2D,GAAA7yB,EAAAlqB,EAAApF,EAAA7R,GACA,GAAAlC,GAAAtC,SAAAO,cAAAolC,EAGA,IAFAtvB,IAAA/T,EAAA+T,UAAAA,GACA7R,IAAAlC,EAAAkC,MAAAsgB,QAAAtgB,GACA,gBAAAiX,GAAAnZ,EAAA5B,YAAAV,SAAA2G,eAAA8U,QACA,IAAAA,EAAA,IAAA,GAAA/Z,GAAA,EAAAA,EAAA+Z,EAAA3a,SAAAY,EAAAY,EAAA5B,YAAA+a,EAAA/Z,GACA,OAAAY,GAGA,QAAAm2D,GAAA9yB,EAAAlqB,EAAApF,EAAA7R,GACA,GAAAlC,GAAAk2D,EAAA7yB,EAAAlqB,EAAApF,EAAA7R,EAEA,OADAlC,GAAAyQ,aAAA,OAAA,gBACAzQ,EAoBA,QAAAuE,GAAAoS,EAAA0d,GAGA,GAFA,GAAAA,EAAAl1B,WACAk1B,EAAAA,EAAAh2B,YACAsY,EAAApS,SACA,MAAAoS,GAAApS,SAAA8vB,EACA,GAEA,IADA,IAAAA,EAAAl1B,WAAAk1B,EAAAA,EAAAvI,MACAuI,GAAA1d,EAAA,OAAA,QACA0d,EAAAA,EAAAh2B,YAGA,QAAA+3D,KAIA,GAAAxxD,EACA,KACAA,EAAAlH,SAAAkH,cACA,MAAA5E,GACA4E,EAAAlH,SAAA+E,MAAA,KAEA,KAAAmC,GAAAA,EAAAyxD,YAAAzxD,EAAAyxD,WAAAzxD,eACAA,EAAAA,EAAAyxD,WAAAzxD,aACA,OAAAA,GAGA,QAAA8iB,GAAAmvB,EAAArM,GACA,GAAA8rB,GAAAzf,EAAA9iC,SACAgiD,GAAAvrB,GAAAlrC,KAAAg3D,KAAAzf,EAAA9iC,YAAAuiD,EAAA,IAAA,IAAA9rB,GAEA,QAAA+rB,GAAAj5D,EAAAC,GAEA,IAAA,GADAi5D,GAAAl5D,EAAAyQ,MAAA,KACA3O,EAAA,EAAAA,EAAAo3D,EAAAh4D,OAAAY,IACAo3D,EAAAp3D,KAAA22D,EAAAS,EAAAp3D,IAAAE,KAAA/B,KAAAA,GAAA,IAAAi5D,EAAAp3D,GACA,OAAA7B,GASA,QAAAmyB,GAAAluB,GACA,GAAAq0C,GAAAjrC,MAAAnC,UAAAnI,MAAApB,KAAA6F,UAAA,EACA,OAAA,YAAA,MAAAvD,GAAAnB,MAAA,KAAAw1C,IAGA,QAAA4gB,GAAAx1B,EAAAjrB,EAAA0gD,GACA1gD,IAAAA,KACA,KAAA,GAAA2O,KAAAsc,IACAA,EAAA1yB,eAAAoW,IAAA+xC,KAAA,GAAA1gD,EAAAzH,eAAAoW,KACA3O,EAAA2O,GAAAsc,EAAAtc,GACA,OAAA3O,GAKA,QAAA2gD,GAAA/E,EAAAvvD,EAAAu0D,EAAAC,EAAAC,GACA,MAAAz0D,IACAA,EAAAuvD,EAAAzW,OAAA,eACA94C,IAAA,IAAAA,EAAAuvD,EAAApzD,QAEA,KAAA,GAAAY,GAAAy3D,GAAA,EAAArzD,EAAAszD,GAAA,IAAA,CACA,GAAAC,GAAAnF,EAAAvjD,QAAA,KAAAjP,EACA,IAAA23D,EAAA,GAAAA,GAAA10D,EACA,MAAAmB,IAAAnB,EAAAjD,EACAoE,IAAAuzD,EAAA33D,EACAoE,GAAAozD,EAAApzD,EAAAozD,EACAx3D,EAAA23D,EAAA,GAUA,QAAA1oD,GAAA4rC,EAAAic,GACA,IAAA,GAAA92D,GAAA,EAAAA,EAAA66C,EAAAz7C,SAAAY,EACA,GAAA66C,EAAA76C,IAAA82D,EAAA,MAAA92D,EACA,QAAA,EAiBA,QAAA43D,GAAApF,EAAAqF,EAAAL,GACA,IAAA,GAAA9xC,GAAA,EAAA/I,EAAA,IAAA,CACA,GAAAg7C,GAAAnF,EAAAvjD,QAAA,KAAAyW,EACAiyC,KAAA,IAAAA,EAAAnF,EAAApzD,OACA,IAAA04D,GAAAH,EAAAjyC,CACA,IAAAiyC,GAAAnF,EAAApzD,QAAAud,EAAAm7C,GAAAD,EACA,MAAAnyC,GAAA7c,KAAAkvD,IAAAD,EAAAD,EAAAl7C,EAIA,IAHAA,GAAAg7C,EAAAjyC,EACA/I,GAAA66C,EAAA76C,EAAA66C,EACA9xC,EAAAiyC,EAAA,EACAh7C,GAAAk7C,EAAA,MAAAnyC,IAKA,QAAAsyC,GAAA5zD,GACA,KAAA6zD,GAAA74D,QAAAgF,GACA6zD,GAAAjzD,KAAAkzD,EAAAD,IAAA,IACA,OAAAA,IAAA7zD,GAGA,QAAA8zD,GAAA/vB,GAAA,MAAAA,GAAAA,EAAA/oC,OAAA,GAEA,QAAAiI,GAAAwzC,EAAAz4C,GAEA,IAAA,GADA+1D,MACAn4D,EAAA,EAAAA,EAAA66C,EAAAz7C,OAAAY,IAAAm4D,EAAAn4D,GAAAoC,EAAAy4C,EAAA76C,GAAAA,EACA,OAAAm4D,GAGA,QAAAC,GAAAvd,EAAA9oC,EAAAsmD,GAEA,IADA,GAAA3yC,GAAA,EAAA4yC,EAAAD,EAAAtmD,GACA2T,EAAAm1B,EAAAz7C,QAAAi5D,EAAAxd,EAAAn1B,KAAA4yC,GAAA5yC,GACAm1B,GAAA7qC,OAAA0V,EAAA,EAAA3T,GAGA,QAAAwmD,MAEA,QAAAC,GAAAC,EAAApsD,GACA,GAAAqsD,EAQA,OAPA3pD,QAAAukD,OACAoF,EAAA3pD,OAAAukD,OAAAmF,IAEAF,EAAAlvD,UAAAovD,EACAC,EAAA,GAAAH,IAEAlsD,GAAAgrD,EAAAhrD,EAAAqsD,GACAA,EAIA,QAAAC,GAAA9c,GACA,MAAA,KAAA37C,KAAA27C,IAAAA,EAAA,MACAA,EAAArzC,eAAAqzC,EAAAn8C,eAAAk5D,GAAA14D,KAAA27C,IAEA,QAAAgd,GAAAhd,EAAAid,GACA,MAAAA,MACAA,EAAAz8C,OAAApN,QAAA,QAAA,GAAA0pD,EAAA9c,KACAid,EAAA54D,KAAA27C,GAFA8c,EAAA9c,GAKA,QAAAmN,GAAAnnB,GACA,IAAA,GAAAz9B,KAAAy9B,GAAA,GAAAA,EAAA1yB,eAAA/K,IAAAy9B,EAAAz9B,GAAA,OAAA,CACA,QAAA,EASA,QAAA20D,GAAAld,GAAA,MAAAA,GAAA3nC,WAAA,IAAA,KAAA8kD,GAAA94D,KAAA27C,GAGA,QAAAod,GAAA5nC,EAAA3L,EAAAzT,GACA,MAAAA,EAAA,EAAAyT,EAAA,EAAAA,EAAA2L,EAAAjyB,SAAA25D,EAAA1nC,EAAA6B,OAAAxN,KAAAA,GAAAzT,CACA,OAAAyT,GAKA,QAAAwzC,GAAAlmC,EAAAH,EAAAuF,GACA,OAAA,CACA,GAAAvvB,KAAA0yB,IAAA1I,EAAAuF,IAAA,EAAA,MAAApF,GAAAH,GAAAA,EAAAuF,CACA,IAAA+gC,GAAAtwD,KAAAy+B,OAAAzU,EAAAuF,GAAA,EACApF,GAAAmmC,GAAA/gC,EAAA+gC,EACAtmC,EAAAsmC,GAQA,QAAAC,GAAAC,EAAAtsB,EAAAt1B,GACA,GAAA9Y,GAAAF,IACAA,MAAAgZ,MAAAA,EAGA9Y,EAAA26D,gBAAAxC,EAAA,MAAA,KAAA,+BACAn4D,EAAA26D,gBAAAjoD,aAAA,iBAAA,QAGA1S,EAAA46D,aAAAzC,EAAA,MAAA,KAAA,4BACAn4D,EAAA46D,aAAAloD,aAAA,iBAAA,QAEA1S,EAAA66D,QAAAzC,EAAA,MAAA,KAAA,mBAEAp4D,EAAA86D,aAAA3C,EAAA,MAAA,KAAA,KAAA,kCACAn4D,EAAA+6D,UAAA5C,EAAA,MAAA,KAAA,sBAEAn4D,EAAAg7D,QAAA7C,EAAA,MAAA,KAAA,sBAEAn4D,EAAAi7D,YAAA9C,EAAA,MAAA,KAAA,sBAEAn4D,EAAAk7D,UAAA9C,EAAA,OAAAp4D,EAAAg7D,QAAAh7D,EAAAi7D,YAAAj7D,EAAA86D,aAAA96D,EAAA+6D,UAAA/6D,EAAA66D,SACA,KAAA,oCACA,IAAAM,GAAA/C,EAAA,OAAAp4D,EAAAk7D,WAAA,mBAEAl7D,GAAAo7D,MAAAjD,EAAA,OAAAgD,GAAA,KAAA,sBAEAn7D,EAAAq7D,MAAAlD,EAAA,OAAAn4D,EAAAo7D,OAAA,oBACAp7D,EAAAs7D,WAAA,KAIAt7D,EAAAu7D,aAAApD,EAAA,MAAA,KAAA,KAAA,+BAAAqD,GAAA,mBAEAx7D,EAAAy7D,QAAAtD,EAAA,MAAA,KAAA,sBACAn4D,EAAA07D,WAAA,KAEA17D,EAAA27D,SAAAxD,EAAA,OAAAn4D,EAAAq7D,MAAAr7D,EAAAu7D,aAAAv7D,EAAAy7D,SAAA,qBACAz7D,EAAA27D,SAAAjpD,aAAA,WAAA,MAEA1S,EAAAihD,QAAAkX,EAAA,OAAAn4D,EAAA26D,gBAAA36D,EAAA46D,aAAA56D,EAAA27D,UAAA,cAGAC,IAAAC,GAAA,IAAA77D,EAAAy7D,QAAAt3D,MAAA8hB,QAAA,EAAAjmB,EAAA27D,SAAAx3D,MAAAs4B,aAAA,GACAq/B,IAAAC,IAAAC,KAAAh8D,EAAA27D,SAAAM,WAAA,GAEAvB,IACAA,EAAAr6D,YAAAq6D,EAAAr6D,YAAAL,EAAAihD,SACAyZ,EAAA16D,EAAAihD,UAIAjhD,EAAAk8D,SAAAl8D,EAAAm8D,OAAA/tB,EAAAl9B,MACAlR,EAAAo8D,iBAAAp8D,EAAAq8D,eAAAjuB,EAAAl9B,MAEAlR,EAAAkiB,QACAliB,EAAAs8D,aAAA,KAGAt8D,EAAAu8D,iBAAA,KAEAv8D,EAAAw8D,WAAA,EACAx8D,EAAAy8D,eAAAz8D,EAAA08D,cAAA,EACA18D,EAAA28D,kBAAA,KAEA38D,EAAA48D,eAAA58D,EAAA68D,UAAA78D,EAAA88D,SAAA,EACA98D,EAAA+8D,mBAAA,EAIA/8D,EAAAg9D,aAAAh9D,EAAAi9D,kBAAAj9D,EAAAk9D,aAAA,KAIAl9D,EAAAm9D,cAAA,EAEAn9D,EAAAo9D,gBAAAp9D,EAAAq9D,iBAAAr9D,EAAAs9D,eAAA,KAIAt9D,EAAAu9D,QAAA,KACAv9D,EAAAw9D,cAAA,EACAx9D,EAAAy9D,gBAAA,EAGAz9D,EAAA09D,QAAA19D,EAAA29D,QAAA39D,EAAA49D,YAAA59D,EAAA69D,YAAA,KAGA79D,EAAAwP,OAAA,EAIAxP,EAAA89D,kBAAA,KAEA99D,EAAA+9D,YAAA,KAEAjlD,EAAAnO,KAAA3K,GAIA,QAAAg+D,GAAA5vB,EAAA3oC,GAEA,GADAA,GAAA2oC,EAAAl9B,MACAzL,EAAA,GAAAA,GAAA2oC,EAAA4K,KAAA,KAAA,IAAAp5C,OAAA,qBAAA6F,EAAA2oC,EAAAl9B,OAAA,oBAEA,KADA,GAAAm7B,GAAA+B,GACA/B,EAAA8uB,OACA,IAAA,GAAA95D,GAAA,KAAAA,EAAA,CACA,GAAAi1B,GAAA+V,EAAA9xB,SAAAlZ,GAAA48D,EAAA3nC,EAAA4nC,WACA,IAAAz4D,EAAAw4D,EAAA,CAAA5xB,EAAA/V,CAAA,OACA7wB,GAAAw4D,EAGA,MAAA5xB,GAAA8uB,MAAA11D,GAKA,QAAA04D,GAAA/vB,EAAA/pC,EAAAC,GACA,GAAAk1D,MAAA/zD,EAAApB,EAAAyuD,IAQA,OAPA1kB,GAAAgwB,KAAA/5D,EAAAyuD,KAAAxuD,EAAAwuD,KAAA,EAAA,SAAAA,GACA,GAAA3yD,GAAA2yD,EAAA3yD,IACAsF,IAAAnB,EAAAwuD,OAAA3yD,EAAAA,EAAAoC,MAAA,EAAA+B,EAAA44C,KACAz3C,GAAApB,EAAAyuD,OAAA3yD,EAAAA,EAAAoC,MAAA8B,EAAA64C,KACAsc,EAAAnzD,KAAAlG,KACAsF,IAEA+zD,EAGA,QAAA6E,GAAAjwB,EAAAla,EAAAuF,GACA,GAAA+/B,KAEA,OADAprB,GAAAgwB,KAAAlqC,EAAAuF,EAAA,SAAAq5B,GAAA0G,EAAAnzD,KAAAysD,EAAA3yD,QACAq5D,EAKA,QAAA8E,GAAAxL,EAAAtnD,GACA,GAAA+yD,GAAA/yD,EAAAsnD,EAAAtnD,MACA,IAAA+yD,EAAA,IAAA,GAAA94D,GAAAqtD,EAAArtD,EAAAA,EAAAA,EAAAmT,OAAAnT,EAAA+F,QAAA+yD,EAKA,QAAAC,GAAA1L,GACA,GAAA,MAAAA,EAAAl6C,OAAA,MAAA,KAEA,KAAA,GADAhV,GAAAkvD,EAAAl6C,OAAA6lD,EAAAnuD,EAAA1M,EAAAu3D,MAAArI,GACAzmB,EAAAzoC,EAAAgV,OAAAyzB,EAAAzoC,EAAAyoC,EAAAA,EAAAA,EAAAzzB,OACA,IAAA,GAAAvX,GAAA,EACAgrC,EAAA9xB,SAAAlZ,IAAAuC,IADAvC,EAEAo9D,GAAApyB,EAAA9xB,SAAAlZ,GAAA68D,WAGA,OAAAO,GAAA76D,EAAAsN,MAKA,QAAAwtD,GAAAryB,EAAA1oC,GACA,GAAA8B,GAAA4mC,EAAAn7B,KACAytD,GAAA,EAAA,CACA,IAAA,GAAAC,GAAA,EAAAA,EAAAvyB,EAAA9xB,SAAA9Z,SAAAm+D,EAAA,CACA,GAAAtoC,GAAA+V,EAAA9xB,SAAAqkD,GAAA1hB,EAAA5mB,EAAA9qB,MACA,IAAA7H,EAAAu5C,EAAA,CAAA7Q,EAAA/V,CAAA,SAAAqoC,GACAh7D,GAAAu5C,EACAz3C,GAAA6wB,EAAA4nC,YAEA,MAAAz4D,UACA4mC,EAAA8uB,MAEA,KADA,GAAA95D,GAAA,EACAA,EAAAgrC,EAAA8uB,MAAA16D,SAAAY,EAAA,CACA,GAAAyxD,GAAAzmB,EAAA8uB,MAAA95D,GAAAw9D,EAAA/L,EAAAtnD,MACA,IAAA7H,EAAAk7D,EAAA,KACAl7D,IAAAk7D,EAEA,MAAAp5D,GAAApE,EAGA,QAAAy9D,GAAA1wB,EAAA9oC,GAAA,MAAAA,IAAA8oC,EAAAl9B,OAAA5L,EAAA8oC,EAAAl9B,MAAAk9B,EAAA4K,KAEA,QAAA+lB,GAAAl4C,EAAAxlB,GACA,MAAAgU,QAAAwR,EAAAm4C,oBAAA39D,EAAAwlB,EAAAo4C,kBAIA,QAAAC,GAAApM,EAAA5V,EAAAiiB,GAGA,MAFA,UAAAA,IAAAA,EAAA,MAEAr/D,eAAAo/D,IACAp/D,KAAAgzD,KAAAA,EACAhzD,KAAAo9C,GAAAA,OACAp9C,KAAAq/D,OAAAA,IAHA,GAAAD,GAAApM,EAAA5V,EAAAiiB,GAQA,QAAAC,GAAA7/D,EAAAC,GAAA,MAAAD,GAAAuzD,KAAAtzD,EAAAszD,MAAAvzD,EAAA29C,GAAA19C,EAAA09C,GAEA,QAAAmiB,GAAA9/D,EAAAC,GAAA,MAAAD,GAAA4/D,QAAA3/D,EAAA2/D,QAAA,GAAAC,EAAA7/D,EAAAC,GAEA,QAAA8/D,GAAAntD,GAAA,MAAA+sD,GAAA/sD,EAAA2gD,KAAA3gD,EAAA+qC,IACA,QAAAqiB,GAAAhgE,EAAAC,GAAA,MAAA4/D,GAAA7/D,EAAAC,GAAA,EAAAA,EAAAD,EACA,QAAAigE,GAAAjgE,EAAAC,GAAA,MAAA4/D,GAAA7/D,EAAAC,GAAA,EAAAD,EAAAC,EAIA,QAAAigE,GAAArxB,EAAA3oC,GAAA,MAAAyE,MAAAC,IAAAikC,EAAAl9B,MAAAhH,KAAAkvD,IAAA3zD,EAAA2oC,EAAAl9B,MAAAk9B,EAAA4K,KAAA,IACA,QAAA0mB,GAAAtxB,EAAArnB,GACA,GAAAA,EAAA+rC,KAAA1kB,EAAAl9B,MAAA,MAAAguD,GAAA9wB,EAAAl9B,MAAA,EACA,IAAAC,GAAAi9B,EAAAl9B,MAAAk9B,EAAA4K,KAAA,CACA,OAAAjyB,GAAA+rC,KAAA3hD,EAAA+tD,EAAA/tD,EAAA6sD,EAAA5vB,EAAAj9B,GAAAhR,KAAAM,QACAk/D,EAAA54C,EAAAi3C,EAAA5vB,EAAArnB,EAAA+rC,MAAA3yD,KAAAM,QAEA,QAAAk/D,GAAA54C,EAAA64C,GACA,GAAA1iB,GAAAn2B,EAAAm2B,EACA,OAAA,OAAAA,GAAAA,EAAA0iB,EAAAV,EAAAn4C,EAAA+rC,KAAA8M,GACA1iB,EAAA,EAAAgiB,EAAAn4C,EAAA+rC,KAAA,GACA/rC,EAEA,QAAA84C,GAAAzxB,EAAA8N,GAEA,IAAA,GADAsd,MACAn4D,EAAA,EAAAA,EAAA66C,EAAAz7C,OAAAY,IAAAm4D,EAAAn4D,GAAAq+D,EAAAtxB,EAAA8N,EAAA76C,GACA,OAAAm4D,GAOA,QAAAsG,KACAC,IAAA,EAGA,QAAAC,KACAC,IAAA,EAKA,QAAAC,GAAAC,EAAAjsC,EAAAuF,GACA35B,KAAAqgE,OAAAA,EACArgE,KAAAo0B,KAAAA,EAAAp0B,KAAA25B,GAAAA,EAIA,QAAA2mC,GAAAC,EAAAF,GACA,GAAAE,EAAA,IAAA,GAAAh/D,GAAA,EAAAA,EAAAg/D,EAAA5/D,SAAAY,EAAA,CACA,GAAAqpC,GAAA21B,EAAAh/D,EACA,IAAAqpC,EAAAy1B,QAAAA,EAAA,MAAAz1B,IAKA,QAAA41B,GAAAD,EAAA31B,GAEA,IAAA,GADAhqC,GACAW,EAAA,EAAAA,EAAAg/D,EAAA5/D,SAAAY,EACAg/D,EAAAh/D,IAAAqpC,IAAAhqC,IAAAA,OAAA2F,KAAAg6D,EAAAh/D,GACA,OAAAX,GAGA,QAAA6/D,GAAAzN,EAAApoB,GACAooB,EAAA0N,YAAA1N,EAAA0N,YAAA1N,EAAA0N,YAAA30D,QAAA6+B,KAAAA,GACAA,EAAAy1B,OAAAM,WAAA3N,GAOA,QAAA4N,GAAA54C,EAAA64C,EAAAC,GACA,GAAAC,EACA,IAAA/4C,EAAA,IAAA,GAAAzmB,GAAA,EAAAA,EAAAymB,EAAArnB,SAAAY,EAAA,CACA,GAAAqpC,GAAA5iB,EAAAzmB,GAAA8+D,EAAAz1B,EAAAy1B,OACAW,EAAA,MAAAp2B,EAAAxW,OAAAisC,EAAAY,cAAAr2B,EAAAxW,MAAAysC,EAAAj2B,EAAAxW,KAAAysC,EACA,IAAAG,GAAAp2B,EAAAxW,MAAAysC,GAAA,YAAAR,EAAAx/D,QAAAigE,IAAAl2B,EAAAy1B,OAAAa,YAAA,CACA,GAAAC,GAAA,MAAAv2B,EAAAjR,KAAA0mC,EAAAe,eAAAx2B,EAAAjR,IAAAknC,EAAAj2B,EAAAjR,GAAAknC,IAAAE,IAAAA,OAAAx6D,KAAA,GAAA65D,GAAAC,EAAAz1B,EAAAxW,KAAA+sC,EAAA,KAAAv2B,EAAAjR,MAGA,MAAAonC,GAEA,QAAAM,GAAAr5C,EAAAs5C,EAAAR,GACA,GAAAC,EACA,IAAA/4C,EAAA,IAAA,GAAAzmB,GAAA,EAAAA,EAAAymB,EAAArnB,SAAAY,EAAA,CACA,GAAAqpC,GAAA5iB,EAAAzmB,GAAA8+D,EAAAz1B,EAAAy1B,OACAc,EAAA,MAAAv2B,EAAAjR,KAAA0mC,EAAAe,eAAAx2B,EAAAjR,IAAA2nC,EAAA12B,EAAAjR,GAAA2nC,EACA,IAAAH,GAAAv2B,EAAAxW,MAAAktC,GAAA,YAAAjB,EAAAx/D,QAAAigE,GAAAl2B,EAAAy1B,OAAAa,YAAA,CACA,GAAAF,GAAA,MAAAp2B,EAAAxW,OAAAisC,EAAAY,cAAAr2B,EAAAxW,MAAAktC,EAAA12B,EAAAxW,KAAAktC,IAAAP,IAAAA,OAAAx6D,KAAA,GAAA65D,GAAAC,EAAAW,EAAA,KAAAp2B,EAAAxW,KAAAktC,EACA,MAAA12B,EAAAjR,GAAA,KAAAiR,EAAAjR,GAAA2nC,KAGA,MAAAP,GASA,QAAAQ,GAAAjzB,EAAAxG,GACA,GAAAA,EAAA05B,KAAA,MAAA,KACA,IAAAC,GAAAzC,EAAA1wB,EAAAxG,EAAA1T,KAAA4+B,OAAAkL,EAAA5vB,EAAAxG,EAAA1T,KAAA4+B,MAAA0N,YACAgB,EAAA1C,EAAA1wB,EAAAxG,EAAAnO,GAAAq5B,OAAAkL,EAAA5vB,EAAAxG,EAAAnO,GAAAq5B,MAAA0N,WACA,KAAAe,IAAAC,EAAA,MAAA,KAEA,IAAAb,GAAA/4B,EAAA1T,KAAAgpB,GAAAkkB,EAAAx5B,EAAAnO,GAAAyjB,GAAA0jB,EAAA,GAAAxB,EAAAx3B,EAAA1T,KAAA0T,EAAAnO,IAEAvoB,EAAAwvD,EAAAa,EAAAZ,EAAAC,GACAzvD,EAAAgwD,EAAAK,EAAAJ,EAAAR,GAGAa,EAAA,GAAA75B,EAAAznC,KAAAM,OAAAswB,EAAAwoC,EAAA3xB,EAAAznC,MAAAM,QAAAghE,EAAAd,EAAA,EACA,IAAAzvD,EAEA,IAAA,GAAA7P,GAAA,EAAAA,EAAA6P,EAAAzQ,SAAAY,EAAA,CACA,GAAAqpC,GAAAx5B,EAAA7P,EACA,IAAA,MAAAqpC,EAAAjR,GAAA,CACA,GAAAioC,GAAAtB,EAAAjvD,EAAAu5B,EAAAy1B,OACAuB,GACAD,IAAA/2B,EAAAjR,GAAA,MAAAioC,EAAAjoC,GAAA,KAAAioC,EAAAjoC,GAAA1I,GADA2Z,EAAAjR,GAAAknC,GAKA,GAAAxvD,EAEA,IAAA,GAAAytD,GAAA,EAAAA,EAAAztD,EAAA1Q,SAAAm+D,EAAA,CACA,GAAA+C,GAAAxwD,EAAAytD,EAEA,IADA,MAAA+C,EAAAloC,KAAAkoC,EAAAloC,IAAA1I,GACA,MAAA4wC,EAAAztC,KAAA,CACA,GAAA0tC,GAAAxB,EAAAlvD,EAAAywD,EAAAxB,OACAyB,KACAD,EAAAztC,KAAAnD,EACA0wC,IAAAvwD,IAAAA,OAAA7K,KAAAs7D,QAGAA,GAAAztC,MAAAnD,EACA0wC,IAAAvwD,IAAAA,OAAA7K,KAAAs7D,GAKAzwD,IAAAA,EAAA2wD,GAAA3wD,IACAC,GAAAA,GAAAD,IAAAC,EAAA0wD,GAAA1wD,GAEA,IAAA2wD,IAAA5wD,EACA,KAAAuwD,EAAA,CAEA,GAAAM,GAAAC,EAAAp6B,EAAAznC,KAAAM,OAAA,CACA,IAAAuhE,EAAA,GAAA9wD,EACA,IAAA,GAAA+wD,GAAA,EAAAA,EAAA/wD,EAAAzQ,SAAAwhE,EACA,MAAA/wD,EAAA+wD,GAAAxoC,KACAsoC,IAAAA,OAAA17D,KAAA,GAAA65D,GAAAhvD,EAAA+wD,GAAA9B,OAAA,KAAA,MACA,KAAA,GAAA+B,GAAA,EAAAA,EAAAF,IAAAE,EACAJ,EAAAz7D,KAAA07D,EACAD,GAAAz7D,KAAA8K,GAEA,MAAA2wD,GAKA,QAAAD,IAAAxB,GACA,IAAA,GAAAh/D,GAAA,EAAAA,EAAAg/D,EAAA5/D,SAAAY,EAAA,CACA,GAAAqpC,GAAA21B,EAAAh/D,EACA,OAAAqpC,EAAAxW,MAAAwW,EAAAxW,MAAAwW,EAAAjR,IAAAiR,EAAAy1B,OAAAgC,kBAAA,GACA9B,EAAAhvD,OAAAhQ,IAAA,GAEA,MAAAg/D,GAAA5/D,OACA4/D,EADA,KAKA,QAAA+B,IAAAh0B,EAAAla,EAAAuF,GACA,GAAA4oC,GAAA,IAQA,IAPAj0B,EAAAgwB,KAAAlqC,EAAA4+B,KAAAr5B,EAAAq5B,KAAA,EAAA,SAAAA,GACA,GAAAA,EAAA0N,YAAA,IAAA,GAAAn/D,GAAA,EAAAA,EAAAyxD,EAAA0N,YAAA//D,SAAAY,EAAA,CACA,GAAAihE,GAAAxP,EAAA0N,YAAAn/D,GAAA8+D,QACAmC,EAAAC,UAAAF,GAAA/xD,EAAA+xD,EAAAC,KAAA,IACAD,IAAAA,OAAAh8D,KAAAi8D,OAGAD,EAAA,MAAA,KAEA,KAAA,GADAG,KAAAtuC,KAAAA,EAAAuF,GAAAA,IACAp4B,EAAA,EAAAA,EAAAghE,EAAA5hE,SAAAY,EAEA,IAAA,GADAohE,GAAAJ,EAAAhhE,GAAAmE,EAAAi9D,EAAA3uD,KAAA,GACAhQ,EAAA,EAAAA,EAAA0+D,EAAA/hE,SAAAqD,EAAA,CACA,GAAA/D,GAAAyiE,EAAA1+D,EACA,MAAAs7D,EAAAr/D,EAAA05B,GAAAj0B,EAAA0uB,MAAA,GAAAkrC,EAAAr/D,EAAAm0B,KAAA1uB,EAAAi0B,IAAA,GAAA,CACA,GAAAipC,IAAA5+D,EAAA,GAAA6+D,EAAAvD,EAAAr/D,EAAAm0B,KAAA1uB,EAAA0uB,MAAA0uC,EAAAxD,EAAAr/D,EAAA05B,GAAAj0B,EAAAi0B,KACAkpC,EAAA,IAAAF,EAAA1B,gBAAA4B,IACAD,EAAAr8D,MAAA6tB,KAAAn0B,EAAAm0B,KAAAuF,GAAAj0B,EAAA0uB,QACA0uC,EAAA,IAAAH,EAAAvB,iBAAA0B,IACAF,EAAAr8D,MAAA6tB,KAAA1uB,EAAAi0B,GAAAA,GAAA15B,EAAA05B,KACA+oC,EAAAnxD,OAAA/O,MAAAkgE,EAAAE,GACA5+D,GAAA4+D,EAAAjiE,OAAA,GAGA,MAAA+hE,GAIA,QAAAK,IAAA/P,GACA,GAAAuN,GAAAvN,EAAA0N,WACA,IAAAH,EAAA,CACA,IAAA,GAAAh/D,GAAA,EAAAA,EAAAg/D,EAAA5/D,SAAAY,EACAg/D,EAAAh/D,GAAA8+D,OAAA2C,WAAAhQ,EACAA,GAAA0N,YAAA,MAEA,QAAAuC,IAAAjQ,EAAAuN,GACA,GAAAA,EAAA,CACA,IAAA,GAAAh/D,GAAA,EAAAA,EAAAg/D,EAAA5/D,SAAAY,EACAg/D,EAAAh/D,GAAA8+D,OAAAM,WAAA3N,EACAA,GAAA0N,YAAAH,GAKA,QAAA2C,IAAA7C,GAAA,MAAAA,GAAAY,eAAA,EAAA,EACA,QAAAkC,IAAA9C,GAAA,MAAAA,GAAAe,eAAA,EAAA,EAKA,QAAAgC,IAAA3jE,EAAAC,GACA,GAAA2jE,GAAA5jE,EAAA47D,MAAA16D,OAAAjB,EAAA27D,MAAA16D,MACA,IAAA,GAAA0iE,EAAA,MAAAA,EACA,IAAAC,GAAA7jE,EAAAuU,OAAAuvD,EAAA7jE,EAAAsU,OACAwvD,EAAAlE,EAAAgE,EAAAlvC,KAAAmvC,EAAAnvC,OAAA8uC,GAAAzjE,GAAAyjE,GAAAxjE,EACA,IAAA8jE,EAAA,OAAAA,CACA,IAAAC,GAAAnE,EAAAgE,EAAA3pC,GAAA4pC,EAAA5pC,KAAAwpC,GAAA1jE,GAAA0jE,GAAAzjE,EACA,OAAA+jE,GAAAA,EACA/jE,EAAA6S,GAAA9S,EAAA8S,GAKA,QAAAmxD,IAAA1Q,EAAAzuD,GACA,GAAAq9D,GAAA+B,EAAAxD,IAAAnN,EAAA0N,WACA,IAAAiD,EAAA,IAAA,GAAAC,GAAA,OAAAriE,EAAA,EAAAA,EAAAoiE,EAAAhjE,SAAAY,EACAqiE,EAAAD,EAAApiE,GACAqiE,EAAAvD,OAAAwD,WAAA,OAAAt/D,EAAAq/D,EAAAxvC,KAAAwvC,EAAAjqC,OACAioC,GAAAwB,GAAAxB,EAAAgC,EAAAvD,QAAA,KACAuB,EAAAgC,EAAAvD,OAEA,OAAAuB,GAEA,QAAAkC,IAAA9Q,GAAA,MAAA0Q,IAAA1Q,GAAA,GACA,QAAA+Q,IAAA/Q,GAAA,MAAA0Q,IAAA1Q,GAAA,GAKA,QAAAgR,IAAA11B,EAAA21B,EAAA7vC,EAAAuF,EAAA0mC,GACA,GAAArN,GAAAkL,EAAA5vB,EAAA21B,GACAN,EAAAxD,IAAAnN,EAAA0N,WACA,IAAAiD,EAAA,IAAA,GAAApiE,GAAA,EAAAA,EAAAoiE,EAAAhjE,SAAAY,EAAA,CACA,GAAAqiE,GAAAD,EAAApiE,EACA,IAAAqiE,EAAAvD,OAAAwD,UAAA,CACA,GAAAjC,GAAAgC,EAAAvD,OAAArsD,KAAA,GACAwvD,EAAAlE,EAAAsC,EAAAxtC,KAAAA,IAAA8uC,GAAAU,EAAAvD,QAAA6C,GAAA7C,GACAoD,EAAAnE,EAAAsC,EAAAjoC,GAAAA,IAAAwpC,GAAAS,EAAAvD,QAAA8C,GAAA9C,EACA,MAAAmD,GAAA,GAAAC,GAAA,GAAAD,GAAA,GAAAC,GAAA,KACAD,GAAA,IAAAI,EAAAvD,OAAAe,gBAAAf,EAAAY,cAAA3B,EAAAsC,EAAAjoC,GAAAvF,IAAA,EAAAkrC,EAAAsC,EAAAjoC,GAAAvF,GAAA,IACAovC,GAAA,IAAAI,EAAAvD,OAAAe,gBAAAf,EAAAY,cAAA3B,EAAAsC,EAAAxtC,KAAAuF,IAAA,EAAA2lC,EAAAsC,EAAAxtC,KAAAuF,GAAA,IACA,OAAA,IAQA,QAAAuqC,IAAAlR,GAEA,IADA,GAAAmR,GACAA,EAAAL,GAAA9Q,IACAA,EAAAmR,EAAAnwD,MAAA,GAAA,GAAAg/C,IACA,OAAAA,GAGA,QAAAoR,IAAApR,GAEA,IADA,GAAAmR,GACAA,EAAAJ,GAAA/Q,IACAA,EAAAmR,EAAAnwD,KAAA,GAAA,GAAAg/C,IACA,OAAAA,GAKA,QAAAqR,IAAArR,GAEA,IADA,GAAAmR,GAAA9I,EACA8I,EAAAJ,GAAA/Q,IACAA,EAAAmR,EAAAnwD,KAAA,GAAA,GAAAg/C,MACAqI,IAAAA,OAAA90D,KAAAysD,EAEA,OAAAqI,GAKA,QAAAiJ,IAAAh2B,EAAAi2B,GACA,GAAAvR,GAAAkL,EAAA5vB,EAAAi2B,GAAAC,EAAAN,GAAAlR,EACA,OAAAA,IAAAwR,EAAAD,EACA7F,EAAA8F,GAKA,QAAAC,IAAAn2B,EAAAi2B,GACA,GAAAA,EAAAj2B,EAAAo2B,WAAA,MAAAH,EACA,IAAAJ,GAAAnR,EAAAkL,EAAA5vB,EAAAi2B,EACA,KAAAI,GAAAr2B,EAAA0kB,GAAA,MAAAuR,EACA,MAAAJ,EAAAJ,GAAA/Q,IACAA,EAAAmR,EAAAnwD,KAAA,GAAA,GAAAg/C,IACA,OAAA0L,GAAA1L,GAAA,EAMA,QAAA2R,IAAAr2B,EAAA0kB,GACA,GAAA2Q,GAAAxD,IAAAnN,EAAA0N,WACA,IAAAiD,EAAA,IAAA,GAAAC,GAAA,OAAAriE,EAAA,EAAAA,EAAAoiE,EAAAhjE,SAAAY,EAEA,GADAqiE,EAAAD,EAAApiE,GACAqiE,EAAAvD,OAAAwD,UAAA,CACA,GAAA,MAAAD,EAAAxvC,KAAA,OAAA,CACA,KAAAwvC,EAAAvD,OAAAuE,YACA,GAAAhB,EAAAxvC,MAAAwvC,EAAAvD,OAAAY,eAAA4D,GAAAv2B,EAAA0kB,EAAA4Q,GACA,OAAA,GAGA,QAAAiB,IAAAv2B,EAAA0kB,EAAApoB,GACA,GAAA,MAAAA,EAAAjR,GAAA,CACA,GAAAn1B,GAAAomC,EAAAy1B,OAAArsD,KAAA,GAAA,EACA,OAAA6wD,IAAAv2B,EAAA9pC,EAAAwuD,KAAAsN,EAAA97D,EAAAwuD,KAAA0N,YAAA91B,EAAAy1B,SAEA,GAAAz1B,EAAAy1B,OAAAe,gBAAAx2B,EAAAjR,IAAAq5B,EAAA3yD,KAAAM,OACA,OAAA,CACA,KAAA,GAAAijE,GAAA,OAAAriE,EAAA,EAAAA,EAAAyxD,EAAA0N,YAAA//D,SAAAY,EAEA,GADAqiE,EAAA5Q,EAAA0N,YAAAn/D,GACAqiE,EAAAvD,OAAAwD,YAAAD,EAAAvD,OAAAuE,YAAAhB,EAAAxvC,MAAAwW,EAAAjR,KACA,MAAAiqC,EAAAjqC,IAAAiqC,EAAAjqC,IAAAiR,EAAAxW,QACAwvC,EAAAvD,OAAAY,eAAAr2B,EAAAy1B,OAAAe,iBACAyD,GAAAv2B,EAAA0kB,EAAA4Q,GAAA,OAAA,EAKA,QAAAkB,IAAAC,GACAA,EAAAb,GAAAa,EAGA,KAAA,GADAlhE,GAAA,EAAA0oC,EAAAw4B,EAAAjsD,OACAvX,EAAA,EAAAA,EAAAgrC,EAAA8uB,MAAA16D,SAAAY,EAAA,CACA,GAAAyxD,GAAAzmB,EAAA8uB,MAAA95D,EACA,IAAAyxD,GAAA+R,EAAA,KACAlhE,IAAAmvD,EAAAtnD,OAEA,IAAA,GAAAzL,GAAAssC,EAAAzzB,OAAA7Y,EAAAssC,EAAAtsC,EAAAA,EAAAssC,EAAAzzB,OACA,IAAA,GAAAgmD,GAAA,EAAAA,EAAA7+D,EAAAwa,SAAA9Z,SAAAm+D,EAAA,CACA,GAAAh7D,GAAA7D,EAAAwa,SAAAqkD,EACA,IAAAh7D,GAAAyoC,EAAA,KACA1oC,IAAAC,EAAA4H,OAGA,MAAA7H,GAMA,QAAAmhE,IAAAhS,GACA,GAAA,GAAAA,EAAAtnD,OAAA,MAAA,EAEA,KADA,GAAAy4D,GAAApqB,EAAAiZ,EAAA3yD,KAAAM,OAAAmD,EAAAkvD,EACAmR,EAAAL,GAAAhgE,IAAA,CACA,GAAA89D,GAAAuC,EAAAnwD,KAAA,GAAA,EACAlQ,GAAA89D,EAAAxtC,KAAA4+B,KACAjZ,GAAA6nB,EAAAxtC,KAAAgpB,GAAAwkB,EAAAjoC,GAAAyjB,GAGA,IADAt5C,EAAAkvD,EACAmR,EAAAJ,GAAAjgE,IAAA,CACA,GAAAg+D,GAAAqC,EAAAnwD,KAAA,GAAA,EACA+lC,IAAAj2C,EAAAzD,KAAAM,OAAAmhE,EAAA1tC,KAAAgpB,GACAt5C,EAAAg+D,EAAAnoC,GAAAq5B,KACAjZ,GAAAj2C,EAAAzD,KAAAM,OAAAmhE,EAAAnoC,GAAAyjB,GAEA,MAAArD,GAIA,QAAAkrB,IAAAC,GACA,GAAAhlE,GAAAglE,EAAApgE,QAAAwpC,EAAA42B,EAAA52B,GACApuC,GAAAu9D,QAAAS,EAAA5vB,EAAAA,EAAAl9B,OACAlR,EAAAw9D,cAAAsH,GAAA9kE,EAAAu9D,SACAv9D,EAAAy9D,gBAAA,EACArvB,EAAAgwB,KAAA,SAAAtL,GACA,GAAAjZ,GAAAirB,GAAAhS,EACAjZ,GAAA75C,EAAAw9D,gBACAx9D,EAAAw9D,cAAA3jB,EACA75C,EAAAu9D,QAAAzK,KAOA,QAAAmS,IAAAn/C,EAAAoO,EAAAuF,EAAAh2B,GACA,IAAAqiB,EAAA,MAAAriB,GAAAywB,EAAAuF,EAAA,MAEA,KAAA,GADAioC,IAAA,EACArgE,EAAA,EAAAA,EAAAykB,EAAArlB,SAAAY,EAAA,CACA,GAAA6jE,GAAAp/C,EAAAzkB,IACA6jE,EAAAhxC,KAAAuF,GAAAyrC,EAAAzrC,GAAAvF,GAAAA,GAAAuF,GAAAyrC,EAAAzrC,IAAAvF,KACAzwB,EAAAyG,KAAAC,IAAA+6D,EAAAhxC,KAAAA,GAAAhqB,KAAAkvD,IAAA8L,EAAAzrC,GAAAA,GAAA,GAAAyrC,EAAAC,MAAA,MAAA,OACAzD,GAAA,GAGAA,GAAAj+D,EAAAywB,EAAAuF,EAAA,OAIA,QAAA2rC,IAAAt/C,EAAAo3B,EAAAiiB,GACA,GAAAuC,EACA2D,IAAA,IACA,KAAA,GAAAhkE,GAAA,EAAAA,EAAAykB,EAAArlB,SAAAY,EAAA,CACA,GAAAuC,GAAAkiB,EAAAzkB,EACA,IAAAuC,EAAAswB,KAAAgpB,GAAAt5C,EAAA61B,GAAAyjB,EAAA,MAAA77C,EACAuC,GAAA61B,IAAAyjB,IACAt5C,EAAAswB,MAAAtwB,EAAA61B,IAAA,UAAA0lC,EAAAuC,EAAArgE,EACAgkE,GAAAhkE,GAEAuC,EAAAswB,MAAAgpB,IACAt5C,EAAAswB,MAAAtwB,EAAA61B,IAAA,UAAA0lC,EAAAuC,EAAArgE,EACAgkE,GAAAhkE,GAGA,MAAA,OAAAqgE,EAAAA,EAAA2D,GA8KA,QAAAC,IAAAxS,EAAAv4B,GACA,GAAAzU,GAAAgtC,EAAAhtC,KAEA,OADA,OAAAA,IAAAA,EAAAgtC,EAAAhtC,MAAAy/C,GAAAzS,EAAA3yD,KAAAo6B,IACAzU,EAGA,QAAA0/C,IAAA1S,EAAA5V,EAAA5pC,GACA,GAAA2E,GAAAqiD,EAAAxH,EAAA3yD,KAAA+8C,EAAA5pC,EAAAA,EACA,OAAA2E,GAAA,GAAAA,EAAA66C,EAAA3yD,KAAAM,OAAA,KAAAwX,EAGA,QAAAwtD,IAAA3S,EAAAzuD,EAAAiP,GACA,GAAA4pC,GAAAsoB,GAAA1S,EAAAzuD,EAAA64C,GAAA5pC,EACA,OAAA,OAAA4pC,EAAA,KAAA,GAAAgiB,GAAA76D,EAAAyuD,KAAA5V,EAAA5pC,EAAA,EAAA,QAAA,UAGA,QAAAoyD,IAAAC,EAAAX,EAAAH,EAAArG,EAAAlrD,GACA,GAAAqyD,EAAA,CACA,GAAA7/C,GAAAw/C,GAAAT,EAAAG,EAAA52B,IAAA7T,UACA,IAAAzU,EAAA,CACA,GAGAo3B,GAHAgoB,EAAA5xD,EAAA,EAAAimD,EAAAzzC,GAAAA,EAAA,GACA8/C,EAAAtyD,EAAA,IAAA,GAAA4xD,EAAAC,OACAhG,EAAAyG,EAAA,QAAA,QAQA,IAAAV,EAAAC,MAAA,EAAA,CACA,GAAAU,GAAAC,GAAAd,EAAAH,EACA3nB,GAAA5pC,EAAA,EAAAuxD,EAAA1kE,KAAAM,OAAA,EAAA,CACA,IAAAslE,GAAAC,GAAAhB,EAAAa,EAAA3oB,GAAAtnC,GACAsnC,GAAAqd,EAAA,SAAArd,GAAA,MAAA8oB,IAAAhB,EAAAa,EAAA3oB,GAAAtnC,KAAAmwD,GAAAzyD,EAAA,IAAA,GAAA4xD,EAAAC,OAAAD,EAAAhxC,KAAAgxC,EAAAzrC,GAAA,EAAAyjB,GACA,UAAAiiB,IAAAjiB,EAAAsoB,GAAAX,EAAA3nB,EAAA,GAAA,QACAA,GAAA5pC,EAAA,EAAA4xD,EAAAzrC,GAAAyrC,EAAAhxC,IACA,OAAA,IAAAgrC,GAAAV,EAAAthB,EAAAiiB,IAGA,MAAA,IAAAD,GAAAV,EAAAlrD,EAAA,EAAAuxD,EAAA1kE,KAAAM,OAAA,EAAA6S,EAAA,EAAA,SAAA,SAGA,QAAA2yD,IAAAjB,EAAAlS,EAAAzuD,EAAAiP,GACA,GAAA4yD,GAAAZ,GAAAxS,EAAAkS,EAAA52B,IAAA7T,UACA,KAAA2rC,EAAA,MAAAT,IAAA3S,EAAAzuD,EAAAiP,EACAjP,GAAA64C,IAAA4V,EAAA3yD,KAAAM,QACA4D,EAAA64C,GAAA4V,EAAA3yD,KAAAM,OACA4D,EAAA86D,OAAA,UACA96D,EAAA64C,IAAA,IACA74C,EAAA64C,GAAA,EACA74C,EAAA86D,OAAA,QAEA,IAAAgH,GAAAf,GAAAc,EAAA7hE,EAAA64C,GAAA74C,EAAA86D,QAAA+F,EAAAgB,EAAAC,EACA,IAAA,OAAAnB,EAAA52B,IAAA7T,WAAA2qC,EAAAC,MAAA,GAAA,IAAA7xD,EAAA,EAAA4xD,EAAAzrC,GAAAp1B,EAAA64C,GAAAgoB,EAAAhxC,KAAA7vB,EAAA64C,IAGA,MAAAuoB,IAAA3S,EAAAzuD,EAAAiP,EAGA,IACAuyD,GADAO,EAAA,SAAAr/C,EAAAzT,GAAA,MAAAkyD,IAAA1S,EAAA/rC,YAAAm4C,GAAAn4C,EAAAm2B,GAAAn2B,EAAAzT,IAEA+yD,EAAA,SAAAnpB,GACA,MAAA8nB,GAAAn+C,QAAAy/C,cACAT,EAAAA,GAAAC,GAAAd,EAAAlS,GACAyT,GAAAvB,EAAAlS,EAAA+S,EAAA3oB,KAFAspB,MAAA,EAAAliE,IAAAwuD,EAAA3yD,KAAAM,SAIAgmE,EAAAJ,EAAA,UAAAhiE,EAAA86D,OAAAiH,EAAA/hE,GAAA,GAAAA,EAAA64C,GAEA,IAAA,OAAA8nB,EAAA52B,IAAA7T,WAAA,GAAA2qC,EAAAC,MAAA,CACA,GAAAS,GAAA,GAAAV,EAAAC,OAAA7xD,EAAA,EACA4pC,EAAAkpB,EAAA/hE,EAAAuhE,EAAA,GAAA,EACA,IAAA,MAAA1oB,IAAA0oB,EAAA1oB,GAAAgoB,EAAAzrC,IAAAyjB,GAAAupB,EAAAniE,IAAA44C,GAAAgoB,EAAAhxC,MAAAgpB,GAAAupB,EAAAD,OAAA,CAEA,GAAArH,GAAAyG,EAAA,SAAA,OACA,OAAA,IAAA1G,GAAA76D,EAAAyuD,KAAA5V,EAAAiiB,IAOA,GAAAuH,GAAA,SAAAP,EAAA7yD,EAAAmzD,GAKA,IAJA,GAAAE,GAAA,SAAAzpB,EAAA0oB,GAAA,MAAAA,GACA,GAAA1G,GAAA76D,EAAAyuD,KAAAsT,EAAAlpB,EAAA,GAAA,UACA,GAAAgiB,GAAA76D,EAAAyuD,KAAA5V,EAAA,UAEAipB,GAAA,GAAAA,EAAAD,EAAAzlE,OAAA0lE,GAAA7yD,EAAA,CACA,GAAA4xD,GAAAgB,EAAAC,GACAP,EAAAtyD,EAAA,IAAA,GAAA4xD,EAAAC,OACAjoB,EAAA0oB,EAAAa,EAAAD,MAAAJ,EAAAK,EAAAniE,KAAA,EACA,IAAA4gE,EAAAhxC,MAAAgpB,GAAAA,EAAAgoB,EAAAzrC,GAAA,MAAAktC,GAAAzpB,EAAA0oB,EAEA,IADA1oB,EAAA0oB,EAAAV,EAAAhxC,KAAAkyC,EAAAlB,EAAAzrC,IAAA,GACAgtC,EAAAD,OAAAtpB,GAAAA,EAAAupB,EAAAniE,IAAA,MAAAqiE,GAAAzpB,EAAA0oB,KAKAgB,EAAAF,EAAAP,EAAA7yD,EAAAA,EAAAmzD,EACA,IAAAG,EAAA,MAAAA,EAGA,IAAAC,GAAAvzD,EAAA,EAAAmzD,EAAAniE,IAAA8hE,EAAAK,EAAAD,OAAA,EACA,OAAA,OAAAK,GAAAvzD,EAAA,GAAAuzD,GAAA/T,EAAA3yD,KAAAM,UACAmmE,EAAAF,EAAApzD,EAAA,EAAA,EAAA4yD,EAAAzlE,OAAA,EAAA6S,EAAA+yD,EAAAQ,KAKA,KAJAD,EAyBA,QAAAE,IAAAC,EAAApmE,GACA,MAAAomE,GAAAC,WAAAD,EAAAC,UAAArmE,IAAAsmE,GAGA,QAAAlgE,IAAAggE,EAAApmE,EAAA8C,GACA,GAAAsjE,EAAAtkE,oBACAskE,EAAAtkE,oBAAA9B,EAAA8C,GAAA,OACA,IAAAsjE,EAAAG,YACAH,EAAAG,YAAA,KAAAvmE,EAAA8C,OACA,CACA,GAAA0jE,GAAAJ,EAAAC,UAAAx9B,EAAA29B,GAAAA,EAAAxmE,EACA,IAAA6oC,EAAA,CACA,GAAA9uB,GAAApK,EAAAk5B,EAAA/lC,EACAiX,IAAA,IACAysD,EAAAxmE,GAAA6oC,EAAAjnC,MAAA,EAAAmY,GAAA7O,OAAA29B,EAAAjnC,MAAAmY,EAAA,OAKA,QAAA0sD,IAAAL,EAAApmE,GACA,GAAAgf,GAAAmnD,GAAAC,EAAApmE,EACA,IAAAgf,EAAAlf,OAEA,IAAA,GADAq3C,GAAAjrC,MAAAnC,UAAAnI,MAAApB,KAAA6F,UAAA,GACA3F,EAAA,EAAAA,EAAAse,EAAAlf,SAAAY,EAAAse,EAAAte,GAAAiB,MAAA,KAAAw1C,GAMA,QAAAuvB,IAAArC,EAAA/iE,EAAAk3C,GAIA,MAHA,gBAAAl3C,KACAA,GAAAtB,KAAAsB,EAAAie,eAAA,WAAApgB,KAAAohB,kBAAA,KACAkmD,GAAApC,EAAA7rB,GAAAl3C,EAAAtB,KAAAqkE,EAAA/iE,GACAqlE,GAAArlE,IAAAA,EAAAslE,iBAGA,QAAAC,IAAAxC,GACA,GAAAx7B,GAAAw7B,EAAAgC,WAAAhC,EAAAgC,UAAAS,cACA,IAAAj+B,EAEA,IAAA,GADAjmC,GAAAyhE,EAAA0C,MAAAC,yBAAA3C,EAAA0C,MAAAC,2BACAtmE,EAAA,EAAAA,EAAAmoC,EAAA/oC,SAAAY,EAAAiP,EAAA/M,EAAAimC,EAAAnoC,MAAA,GACAkC,EAAA8C,KAAAmjC,EAAAnoC,IAGA,QAAAumE,IAAAb,EAAApmE,GACA,MAAAmmE,IAAAC,EAAApmE,GAAAF,OAAA,EAKA,QAAAonE,IAAAC,GACAA,EAAAp9D,UAAA8Y,GAAA,SAAA7iB,EAAA8C,GAAA+f,GAAA1jB,KAAAa,EAAA8C,IACAqkE,EAAAp9D,UAAA3D,IAAA,SAAApG,EAAA8C,GAAAsD,GAAAjH,KAAAa,EAAA8C,IAMA,QAAAskE,IAAA9lE,GACAA,EAAAie,eAAAje,EAAAie,iBACAje,EAAA+e,aAAA,EAEA,QAAAgnD,IAAA/lE,GACAA,EAAAke,gBAAAle,EAAAke,kBACAle,EAAA6lC,cAAA,EAEA,QAAAw/B,IAAArlE,GACA,MAAA,OAAAA,EAAAif,iBAAAjf,EAAAif,iBAAA,GAAAjf,EAAA+e,YAEA,QAAAinD,IAAAhmE,GAAA8lE,GAAA9lE,GAAA+lE,GAAA/lE,GAEA,QAAAimE,IAAAjmE,GAAA,MAAAA,GAAAgW,QAAAhW,EAAAkmE,WACA,QAAAC,IAAAnmE,GACA,GAAAzC,GAAAyC,EAAAkhB,KAOA,OANA,OAAA3jB,IACA,EAAAyC,EAAA8W,OAAAvZ,EAAA,EACA,EAAAyC,EAAA8W,OAAAvZ,EAAA,EACA,EAAAyC,EAAA8W,SAAAvZ,EAAA,IAEA6oE,IAAApmE,EAAA0f,SAAA,GAAAniB,IAAAA,EAAA,GACAA,EAaA,QAAA8oE,IAAAtN,GACA,GAAA,MAAAuN,GAAA,CACA,GAAAhnE,GAAA42D,EAAA,OAAA,IACAD,GAAA8C,EAAA7C,EAAA,QAAA52D,EAAA5B,SAAA2G,eAAA,QACA,GAAA00D,EAAA70D,WAAA8oB,eACAs5C,GAAAhnE,EAAAytB,aAAA,GAAAztB,EAAA0tB,aAAA,KAAA2sC,IAAAC,GAAA,IAEA,GAAA/iB,GAAAyvB,GAAApQ,EAAA,OAAA,KACAA,EAAA,OAAA,IAAA,KAAA,wDAEA,OADArf,GAAApmC,aAAA,UAAA,IACAomC,EAKA,QAAA0vB,IAAAxN,GACA,GAAA,MAAAyN,GAAA,MAAAA,GACA,IAAAC,GAAAxQ,EAAA8C,EAAAr7D,SAAA2G,eAAA,QACAqiE,EAAA5gB,GAAA2gB,EAAA,EAAA,GAAAniD,wBACAqiD,EAAA7gB,GAAA2gB,EAAA,EAAA,GAAAniD,uBAEA,OADA0xC,GAAA+C,MACA2N,GAAAA,EAAAniD,MAAAmiD,EAAAhsC,SACA8rC,GAAAG,EAAAjsC,MAAAgsC,EAAAhsC,MAAA,GA0CA,QAAAksC,IAAA7N,GACA,GAAA,MAAA8N,GAAA,MAAAA,GACA,IAAAhwB,GAAAof,EAAA8C,EAAA7C,EAAA,OAAA,MACA4Q,EAAAjwB,EAAAvyB,wBACAyiD,EAAAjhB,GAAAjP,EAAA,EAAA,GAAAvyB,uBACA,OAAAuiD,IAAA5+D,KAAA0yB,IAAAmsC,EAAAviD,KAAAwiD,EAAAxiD,MAAA,EAUA,QAAAyiD,IAAAtsD,EAAA41C,GACAvrD,UAAAvG,OAAA,IACA8xD,EAAA2W,aAAAr8D,MAAAnC,UAAAnI,MAAApB,KAAA6F,UAAA,IACAmiE,GAAAxsD,GAAA41C,EAGA,QAAA6W,IAAAC,EAAAC,GACAC,GAAAF,GAAAC,EAKA,QAAAE,IAAAF,GACA,GAAA,gBAAAA,IAAAC,GAAA/4D,eAAA84D,GACAA,EAAAC,GAAAD,OACA,IAAAA,GAAA,gBAAAA,GAAA3sD,MAAA4sD,GAAA/4D,eAAA84D,EAAA3sD,MAAA,CACA,GAAA+kD,GAAA6H,GAAAD,EAAA3sD,KACA,iBAAA+kD,KAAAA,GAAA/kD,KAAA+kD,IACA4H,EAAAzP,EAAA6H,EAAA4H,GACAA,EAAA3sD,KAAA+kD,EAAA/kD,SACA,CAAA,GAAA,gBAAA2sD,IAAA,0BAAA/nE,KAAA+nE,GACA,MAAAE,IAAA,kBACA,IAAA,gBAAAF,IAAA,2BAAA/nE,KAAA+nE,GACA,MAAAE,IAAA,oBAEA,MAAA,gBAAAF,IAAA3sD,KAAA2sD,GACAA,IAAA3sD,KAAA,QAKA,QAAA8sD,IAAA5iD,EAAAyiD,GACAA,EAAAE,GAAAF,EACA,IAAAI,GAAAP,GAAAG,EAAA3sD,KACA,KAAA+sD,EAAA,MAAAD,IAAA5iD,EAAA,aACA,IAAA8iD,GAAAD,EAAA7iD,EAAAyiD,EACA,IAAAM,GAAAp5D,eAAA84D,EAAA3sD,MAAA,CACA,GAAAktD,GAAAD,GAAAN,EAAA3sD,KACA,KAAA,GAAAiK,KAAAijD,GACAA,EAAAr5D,eAAAoW,KACA+iD,EAAAn5D,eAAAoW,KAAA+iD,EAAA,IAAA/iD,GAAA+iD,EAAA/iD,IACA+iD,EAAA/iD,GAAAijD,EAAAjjD,IAKA,GAFA+iD,EAAAhtD,KAAA2sD,EAAA3sD,KACA2sD,EAAAQ,aAAAH,EAAAG,WAAAR,EAAAQ,YACAR,EAAAS,UAAA,IAAA,GAAAC,KAAAV,GAAAS,UACAJ,EAAAK,GAAAV,EAAAS,UAAAC,EAEA,OAAAL,GAMA,QAAAM,IAAA1X,EAAA2X,GACA,GAAAL,GAAAD,GAAAp5D,eAAA+hD,GAAAqX,GAAArX,GAAAqX,GAAArX,KACAmG,GAAAwR,EAAAL,GAGA,QAAAM,IAAA5X,EAAAtiD,GACA,GAAAA,KAAA,EAAA,MAAAA,EACA,IAAAsiD,EAAA4X,UAAA,MAAA5X,GAAA4X,UAAAl6D,EACA,IAAAm6D,KACA,KAAA,GAAA3kE,KAAAwK,GAAA,CACA,GAAA+Z,GAAA/Z,EAAAxK,EACAukB,aAAAnd,SAAAmd,EAAAA,EAAAne,YACAu+D,EAAA3kE,GAAAukB,EAEA,MAAAogD,GAKA,QAAAC,IAAA9X,EAAAtiD,GAEA,IADA,GAAAylC,GACA6c,EAAA8X,YACA30B,EAAA6c,EAAA8X,UAAAp6D,GACAylC,GAAAA,EAAA6c,MAAAA,IACAtiD,EAAAylC,EAAAzlC,MACAsiD,EAAA7c,EAAA6c,IAEA,OAAA7c,KAAA6c,KAAAA,EAAAtiD,MAAAA,GAGA,QAAAq6D,IAAA/X,EAAAsD,EAAA0U,GACA,OAAAhY,EAAA+X,YAAA/X,EAAA+X,WAAAzU,EAAA0U,GAqFA,QAAAC,IAAAxF,EAAAlS,EAAA7iD,EAAAw6D,GAGA,GAAAC,IAAA1F,EAAA/0D,MAAA06D,SAAAC,IAEAC,IAAA7F,EAAAlS,EAAA3yD,KAAA6kE,EAAA52B,IAAAmkB,KAAAtiD,EAAA,SAAA3L,EAAAH,GAAA,MAAAumE,GAAArkE,KAAA/B,EAAAH,IACAymE,EAAAH,EA4BA,KAAA,GAzBAK,GAAA,SAAAplE,GACA,GAAAqlE,GAAA/F,EAAA/0D,MAAA+6D,SAAAtlE,GAAArE,EAAA,EAAA4pE,EAAA,CACAJ,IAAA7F,EAAAlS,EAAA3yD,KAAA4qE,EAAAxY,MAAA,EAAA,SAAAjuD,EAAAH,GAGA,IAFA,GAAAE,GAAAhD,EAEA4pE,EAAA3mE,GAAA,CACA,GAAA4mE,GAAAR,EAAArpE,EACA6pE,GAAA5mE,GACAomE,EAAAr5D,OAAAhQ,EAAA,EAAAiD,EAAAomE,EAAArpE,EAAA,GAAA6pE,GACA7pE,GAAA,EACA4pE,EAAA/gE,KAAAkvD,IAAA90D,EAAA4mE,GAEA,GAAA/mE,EACA,GAAA4mE,EAAAI,OACAT,EAAAr5D,OAAAhN,EAAAhD,EAAAgD,EAAAC,EAAA,WAAAH,GACA9C,EAAAgD,EAAA,MAEA,MAAAA,EAAAhD,EAAAgD,GAAA,EAAA,CACA,GAAAT,GAAA8mE,EAAArmE,EAAA,EACAqmE,GAAArmE,EAAA,IAAAT,EAAAA,EAAA,IAAA,IAAA,WAAAO,IAGAymE,IAGAllE,EAAA,EAAAA,EAAAs/D,EAAA/0D,MAAA+6D,SAAAvqE,SAAAiF,EAAAolE,EAAAplE,EAEA,QAAA0lE,OAAAV,EAAA9pB,QAAAgqB,EAAAS,SAAAT,EAAAU,UAAAV,EAAA,MAGA,QAAAW,IAAAvG,EAAAlS,EAAA0Y,GACA,IAAA1Y,EAAAsY,QAAAtY,EAAAsY,OAAA,IAAApG,EAAA/0D,MAAA06D,QAAA,CACA,GAAA16D,GAAAw7D,GAAAzG,EAAAxG,EAAA1L,IACA7yC,EAAAuqD,GAAAxF,EAAAlS,EAAAA,EAAA3yD,KAAAM,OAAAukE,EAAAn+C,QAAA6kD,mBAAAvB,GAAAnF,EAAA52B,IAAAmkB,KAAAtiD,GAAAA,EACA6iD,GAAA6Y,WAAA17D,EACA6iD,EAAAsY,OAAAnrD,EAAAmrD,OACAnrD,EAAA2gC,QAAAkS,EAAA8Y,aAAA3rD,EAAA2gC,QACAkS,EAAA8Y,eAAA9Y,EAAA8Y,aAAA,MACAJ,IAAAxG,EAAA52B,IAAAy9B,UAAA7G,EAAA52B,IAAAy9B,WAEA,MAAA/Y,GAAAsY,OAGA,QAAAK,IAAAzG,EAAAv/D,EAAAqmE,GACA,GAAA19B,GAAA42B,EAAA52B,IAAAxpC,EAAAogE,EAAApgE,OACA,KAAAwpC,EAAAmkB,KAAA+X,WAAA,OAAA,CACA,IAAAvjD,GAAAglD,GAAA/G,EAAAv/D,EAAAqmE,GAAA77D,EAAA8W,EAAAqnB,EAAAl9B,OAAA8sD,EAAA5vB,EAAArnB,EAAA,GAAA4kD,UAUA,OARA17D,GADAA,EACAk6D,GAAA/7B,EAAAmkB,KAAAtiD,GADAq6D,GAAAl8B,EAAAmkB,MAEAnkB,EAAAgwB,KAAAr3C,EAAAthB,EAAA,SAAAqtD,GACAkZ,GAAAhH,EAAAlS,EAAA3yD,KAAA8P,EACA,IAAAsmD,GAAAxvC,GAAAthB,EAAA,GAAAshB,EAAA,GAAA,GAAAA,GAAAniB,EAAAs3D,UAAAn1C,EAAAniB,EAAAu3D,MACArJ,GAAA6Y,WAAApV,EAAA4T,GAAA/7B,EAAAmkB,KAAAtiD,GAAA,OACA8W,IAEA+kD,IAAA19B,EAAAy9B,SAAA9kD,GACA9W,EAMA,QAAA+7D,IAAAhH,EAAA7kE,EAAA8P,EAAAg8D,GACA,GAAA1Z,GAAAyS,EAAA52B,IAAAmkB,KACA2Z,EAAA,GAAAC,IAAAhsE,EAAA6kE,EAAAn+C,QAAAgyC,QAGA,KAFAqT,EAAA7nE,MAAA6nE,EAAAnlD,IAAAklD,GAAA,EACA,IAAA9rE,GAAAisE,GAAA7Z,EAAAtiD,IACAi8D,EAAAG,OACAC,GAAA/Z,EAAA2Z,EAAAj8D,GACAi8D,EAAA7nE,MAAA6nE,EAAAnlD,IAIA,QAAAqlD,IAAA7Z,EAAAtiD,GACA,GAAAsiD,EAAAga,UAAA,MAAAha,GAAAga,UAAAt8D,EACA,IAAAsiD,EAAA8X,UAAA,CACA,GAAAmC,GAAAnC,GAAA9X,EAAAtiD,EACA,OAAAu8D,GAAAja,KAAAga,UAAAC,EAAAja,KAAAga,UAAAC,EAAAv8D,OAAA,QAGA,QAAAq8D,IAAA/Z,EAAA2Z,EAAAj8D,EAAAu8D,GACA,IAAA,GAAAnrE,GAAA,EAAAA,EAAA,GAAAA,IAAA,CACAmrE,IAAAA,EAAA,GAAAnC,GAAA9X,EAAAtiD,GAAAsiD,KACA,IAAApuD,GAAAouD,EAAAzW,MAAAowB,EAAAj8D,EACA,IAAAi8D,EAAAnlD,IAAAmlD,EAAA7nE,MAAA,MAAAF,GAEA,KAAA,IAAAvE,OAAA,QAAA2yD,EAAA51C,KAAA,8BAIA,QAAA8vD,IAAAzH,EAAAj+C,EAAA+kD,EAAAY,GACA,GAOAvoE,GAPAwoE,EAAA,SAAAC,GAAA,OACAvoE,MAAA6nE,EAAA7nE,MAAAC,IAAA4nE,EAAAnlD,IACA8sC,OAAAqY,EAAA3T,UACA53D,KAAAwD,GAAA,KACA8L,MAAA28D,EAAAzC,GAAA/7B,EAAAmkB,KAAAtiD,GAAAA,IAGAm+B,EAAA42B,EAAA52B,IAAAmkB,EAAAnkB,EAAAmkB,IACAxrC,GAAA24C,EAAAtxB,EAAArnB,EACA,IACAyxB,GADAsa,EAAAkL,EAAA5vB,EAAArnB,EAAA+rC,MAAA7iD,EAAAw7D,GAAAzG,EAAAj+C,EAAA+rC,KAAAgZ,GACAI,EAAA,GAAAC,IAAArZ,EAAA3yD,KAAA6kE,EAAAn+C,QAAAgyC,QAEA,KADA6T,IAAAl0B,OACAk0B,GAAAR,EAAAnlD,IAAAA,EAAAm2B,MAAAgvB,EAAAG,OACAH,EAAA7nE,MAAA6nE,EAAAnlD,IACA5iB,EAAAmoE,GAAA/Z,EAAA2Z,EAAAj8D,GACAy8D,GAAAl0B,EAAAnyC,KAAAsmE,GAAA,GAEA,OAAAD,GAAAl0B,EAAAm0B,IAGA,QAAAE,IAAAlsE,EAAAgkC,GACA,GAAAhkC,EAAA,OAAA,CACA,GAAAmsE,GAAAnsE,EAAAiB,MAAA,oCACA,KAAAkrE,EAAA,KACAnsE,GAAAA,EAAA4B,MAAA,EAAAuqE,EAAApyD,OAAA/Z,EAAA4B,MAAAuqE,EAAApyD,MAAAoyD,EAAA,GAAArsE,OACA,IAAAmmB,GAAAkmD,EAAA,GAAA,UAAA,WACA,OAAAnoC,EAAA/d,GACA+d,EAAA/d,GAAAkmD,EAAA,GACA,GAAAt4D,QAAA,UAAAs4D,EAAA,GAAA,WAAAvrE,KAAAojC,EAAA/d,MACA+d,EAAA/d,IAAA,IAAAkmD,EAAA,IAEA,MAAAnsE,GAIA,QAAAkqE,IAAA7F,EAAA7kE,EAAAoyD,EAAAtiD,EAAAxM,EAAAmnE,EAAAH,GACA,GAAAsC,GAAAxa,EAAAwa,YACA,OAAAA,IAAAA,EAAA/H,EAAAn+C,QAAAkmD,aACA,IACA5oE,GADA6oE,EAAA,EAAAC,EAAA,KACAf,EAAA,GAAAC,IAAAhsE,EAAA6kE,EAAAn+C,QAAAgyC,SACA2T,EAAAxH,EAAAn+C,QAAAqmD,eAAA,KAEA,KADA,IAAA/sE,GAAA0sE,GAAAT,GAAA7Z,EAAAtiD,GAAA26D,IACAsB,EAAAG,OAAA,CASA,GARAH,EAAAnlD,IAAAi+C,EAAAn+C,QAAA6kD,oBACAqB,GAAA,EACAtC,GAAAuB,GAAAhH,EAAA7kE,EAAA8P,EAAAi8D,EAAAnlD,KACAmlD,EAAAnlD,IAAA5mB,EAAAM,OACA0D,EAAA,MAEAA,EAAA0oE,GAAAP,GAAA/Z,EAAA2Z,EAAAj8D,EAAAu8D,GAAA5B,GAEA4B,EAAA,CACA,GAAAW,GAAAX,EAAA,GAAA7vD,IACAwwD,KAAAhpE,EAAA,MAAAA,EAAAgpE,EAAA,IAAAhpE,EAAAgpE,IAEA,IAAAJ,GAAAE,GAAA9oE,EAAA,CACA,KAAA6oE,EAAAd,EAAA7nE,OACA2oE,EAAA9iE,KAAAkvD,IAAA8S,EAAA7nE,MAAA2oE,EAAA,KACAvpE,EAAAupE,EAAAC,EAEAA,GAAA9oE,EAEA+nE,EAAA7nE,MAAA6nE,EAAAnlD,IAEA,KAAAimD,EAAAd,EAAAnlD,KAAA,CAIA,GAAAA,GAAA7c,KAAAkvD,IAAA8S,EAAAnlD,IAAAimD,EAAA,IACAvpE,GAAAsjB,EAAAkmD,GACAD,EAAAjmD,GASA,QAAAglD,IAAA/G,EAAAv/D,EAAAqmE,GAGA,IAAA,GAFAsB,GAAAC,EAAAj/B,EAAA42B,EAAA52B,IACAk/B,EAAAxB,GAAA,EAAArmE,GAAAu/D,EAAA52B,IAAAmkB,KAAA8X,UAAA,IAAA,KACAjtB,EAAA33C,EAAA23C,EAAAkwB,IAAAlwB,EAAA,CACA,GAAAA,GAAAhP,EAAAl9B,MAAA,MAAAk9B,GAAAl9B,KACA,IAAA4hD,GAAAkL,EAAA5vB,EAAAgP,EAAA,EACA,IAAA0V,EAAA6Y,cAAAG,GAAA1uB,GAAAhP,EAAAy9B,UAAA,MAAAzuB,EACA,IAAAmwB,GAAA3U,EAAA9F,EAAA3yD,KAAA,KAAA6kE,EAAAn+C,QAAAgyC,UACA,MAAAwU,GAAAD,EAAAG,KACAF,EAAAjwB,EAAA,EACAgwB,EAAAG,GAGA,MAAAF,GAmBA,QAAAG,IAAA1a,EAAA3yD,EAAAqgE,EAAAiN,GACA3a,EAAA3yD,KAAAA,EACA2yD,EAAA6Y,aAAA7Y,EAAA6Y,WAAA,MACA7Y,EAAAsY,SAAAtY,EAAAsY,OAAA,MACA,MAAAtY,EAAAhtC,QAAAgtC,EAAAhtC,MAAA,MACA+8C,GAAA/P,GACAiQ,GAAAjQ,EAAA0N,EACA,IAAAkN,GAAAD,EAAAA,EAAA3a,GAAA,CACA4a,IAAA5a,EAAAtnD,QAAA8yD,EAAAxL,EAAA4a,GAIA,QAAAC,IAAA7a,GACAA,EAAAl6C,OAAA,KACAiqD,GAAA/P,GAQA,QAAA8a,IAAAzpE,EAAA0iB,GACA,IAAA1iB,GAAA,QAAA5C,KAAA4C,GAAA,MAAA,KACA,IAAA+Y,GAAA2J,EAAAqmD,aAAAW,GAAAC,EACA,OAAA5wD,GAAA/Y,KACA+Y,EAAA/Y,GAAAA,EAAAhB,QAAA,OAAA,UAQA,QAAA4qE,IAAA/I,EAAAgJ,GAIA,GAAA5yD,GAAAg9C,EAAA,OAAA,KAAA,KAAA0D,GAAA,sBAAA,MACAmS,GAAAC,IAAA9V,EAAA,OAAAh9C,GAAA,mBAAAA,QAAAA,EACA4C,IAAA,EAAA+I,IAAA,EAAAi+C,GAAAA,EACAmJ,eAAA,EACAC,aAAAxS,IAAAE,KAAAkJ,EAAAqJ,UAAA,gBACAL,GAAAhT,UAGA,KAAA,GAAA35D,GAAA,EAAAA,IAAA2sE,EAAAM,KAAAN,EAAAM,KAAA7tE,OAAA,GAAAY,IAAA,CACA,GAAAyxD,GAAAzxD,EAAA2sE,EAAAM,KAAAjtE,EAAA,GAAA2sE,EAAAlb,KAAAhtC,EAAA,MACAmoD,GAAAlnD,IAAA,EACAknD,EAAAM,SAAAC,GAGAhG,GAAAxD,EAAApgE,QAAAo2D,WAAAl1C,EAAAw/C,GAAAxS,EAAAkS,EAAA52B,IAAA7T,cACA0zC,EAAAM,SAAAE,GAAAR,EAAAM,SAAAzoD,IACAmoD,EAAAvlE,MACA,IAAAgmE,GAAAV,GAAAhJ,EAAApgE,QAAA23D,kBAAAiC,EAAA1L,EACA6b,IAAA7b,EAAAmb,EAAA1C,GAAAvG,EAAAlS,EAAA4b,IACA5b,EAAA8Y,eACA9Y,EAAA8Y,aAAAP,UACA4C,EAAA5C,QAAA7S,EAAA1F,EAAA8Y,aAAAP,QAAA4C,EAAA5C,SAAA,KACAvY,EAAA8Y,aAAAN,YACA2C,EAAA3C,UAAA9S,EAAA1F,EAAA8Y,aAAAN,UAAA2C,EAAA3C,WAAA,MAIA,GAAA2C,EAAAvlE,IAAAjI,QACAwtE,EAAAvlE,IAAArC,KAAA,EAAA,EAAA4nE,EAAA7yD,QAAA/a,YAAAioE,GAAAtD,EAAApgE,QAAAo2D,WAGA,GAAA35D,GACA2sE,EAAAhT,QAAAtyD,IAAAulE,EAAAvlE,IACAslE,EAAAhT,QAAA99C,YAEA8wD,EAAAhT,QAAA4T,OAAAZ,EAAAhT,QAAA4T,UAAAvoE,KAAA4nE,EAAAvlE,MACAslE,EAAAhT,QAAA6T,SAAAb,EAAAhT,QAAA6T,YAAAxoE,UAKA,GAAAy1D,GAAA,CACA,GAAA3qD,GAAA88D,EAAA7yD,QAAAnV,WACA,aAAA1E,KAAA4P,EAAA6E,YAAA7E,EAAA29D,eAAA39D,EAAA29D,cAAA,cACAb,EAAA7yD,QAAApF,UAAA,oBAOA,MAJAoxD,IAAApC,EAAA,aAAAA,EAAAgJ,EAAAlb,KAAAmb,EAAAC,KACAD,EAAAC,IAAAl4D,YACAi4D,EAAA3C,UAAA9S,EAAAyV,EAAAC,IAAAl4D,UAAAi4D,EAAA3C,WAAA,KAEA2C,EAGA,QAAAc,IAAA7xB,GACA,GAAApB,GAAAqc,EAAA,OAAA,IAAA,iBAGA,OAFArc,GAAA1e,MAAA,MAAA8f,EAAA3nC,WAAA,GAAAhF,SAAA,IACAurC,EAAAppC,aAAA,aAAAopC,EAAA1e,OACA0e,EAKA,QAAA0yB,IAAAP,EAAA9tE,EAAAgE,EAAA6qE,EAAAC,EAAA7xC,EAAAv5B,GACA,GAAA1D,EAAA,CACA,GAEAib,GAFA8zD,EAAAjB,EAAAG,YAAAA,GAAAjuE,EAAA8tE,EAAAE,eAAAhuE,EACA4e,EAAAkvD,EAAAjJ,GAAA/0D,MAAAk/D,aAAAC,GAAA,CAEA,IAAArwD,EAAAxd,KAAApB,GAMA,CACAib,EAAAzb,SAAA4F,wBAEA,KADA,GAAAwhB,GAAA,IACA,CACAhI,EAAAswD,UAAAtoD,CACA,IAAAvhB,GAAAuZ,EAAA7a,KAAA/D,GACAg5D,EAAA3zD,EAAAA,EAAAkV,MAAAqM,EAAA5mB,EAAAM,OAAAsmB,CACA,IAAAoyC,EAAA,CACA,GAAAuP,GAAA/oE,SAAA2G,eAAA4oE,EAAA3sE,MAAAwkB,EAAAA,EAAAoyC,GACAyC,KAAAC,GAAA,EAAAzgD,EAAA/a,YAAA83D,EAAA,QAAAuQ,KACAttD,EAAA/a,YAAAqoE,GACAuF,EAAAvlE,IAAArC,KAAA4nE,EAAAlnD,IAAAknD,EAAAlnD,IAAAoyC,EAAAuP,GACAuF,EAAAjwD,KAAAm7C,EACA8U,EAAAlnD,KAAAoyC,EAEA,IAAA3zD,EAAA,KACAuhB,IAAAoyC,EAAA,CACA,IAAAmW,GAAA,MACA,IAAA,MAAA9pE,EAAA,GAAA,CACA,GAAAqzD,GAAAoV,EAAAjJ,GAAAn+C,QAAAgyC,QAAA0W,EAAA1W,EAAAoV,EAAAjwD,IAAA66C,CACAyW,GAAAl0D,EAAA/a,YAAA83D,EAAA,OAAAkB,EAAAkW,GAAA,WACAD,EAAA58D,aAAA,OAAA,gBACA48D,EAAA58D,aAAA,UAAA,MACAu7D,EAAAjwD,KAAAuxD,MACA,MAAA/pE,EAAA,IAAA,MAAAA,EAAA,IACA8pE,EAAAl0D,EAAA/a,YAAA83D,EAAA,OAAA,MAAA3yD,EAAA,GAAA,IAAA,IAAA,mBACA8pE,EAAA58D,aAAA,UAAAlN,EAAA,IACAyoE,EAAAjwD,KAAA,IAEAsxD,EAAArB,EAAAjJ,GAAAn+C,QAAA2oD,uBAAAhqE,EAAA,IACA8pE,EAAA58D,aAAA,UAAAlN,EAAA,IACAo2D,IAAAC,GAAA,EAAAzgD,EAAA/a,YAAA83D,EAAA,QAAAmX,KACAl0D,EAAA/a,YAAAivE,GACArB,EAAAjwD,KAAA,EAEAiwD,GAAAvlE,IAAArC,KAAA4nE,EAAAlnD,IAAAknD,EAAAlnD,IAAA,EAAAuoD,GACArB,EAAAlnD,WAzCAknD,GAAAjwD,KAAA7d,EAAAM,OACA2a,EAAAzb,SAAA2G,eAAA4oE,GACAjB,EAAAvlE,IAAArC,KAAA4nE,EAAAlnD,IAAAknD,EAAAlnD,IAAA5mB,EAAAM,OAAA2a,GACAwgD,IAAAC,GAAA,IAAAuT,GAAA,GACAnB,EAAAlnD,KAAA5mB,EAAAM,MAyCA,IADAwtE,EAAAE,cAAA,IAAAe,EAAA35D,WAAApV,EAAAM,OAAA,GACA0D,GAAA6qE,GAAAC,GAAAG,GAAAvrE,EAAA,CACA,GAAA4rE,GAAAtrE,GAAA,EACA6qE,KAAAS,GAAAT,GACAC,IAAAQ,GAAAR,EACA,IAAAnzB,GAAAqc,EAAA,QAAA/8C,GAAAq0D,EAAA5rE,EAEA,OADAu5B,KAAA0e,EAAA1e,MAAAA,GACA6wC,EAAA7yD,QAAA/a,YAAAy7C,GAEAmyB,EAAA7yD,QAAA/a,YAAA+a,IAGA,QAAAgzD,IAAAjuE,EAAAuvE,GACA,GAAAvvE,EAAAM,OAAA,IAAA,KAAAc,KAAApB,GAAA,MAAAA,EAEA,KAAA,GADAwvE,GAAAD,EAAAzvD,EAAA,GACA5e,EAAA,EAAAA,EAAAlB,EAAAM,OAAAY,IAAA,CACA,GAAA67C,GAAA/8C,EAAAo0B,OAAAlzB,EACA,MAAA67C,IAAAyyB,GAAAtuE,GAAAlB,EAAAM,OAAA,GAAA,IAAAN,EAAAoV,WAAAlU,EAAA,KACA67C,EAAA,KACAj9B,GAAAi9B,EACAyyB,EAAA,KAAAzyB,EAEA,MAAAj9B,GAKA,QAAAwuD,IAAAjC,EAAA1mD,GACA,MAAA,UAAAmoD,EAAA9tE,EAAAgE,EAAA6qE,EAAAC,EAAA7xC,EAAAv5B,GACAM,EAAAA,EAAAA,EAAA,mBAAA,iBAEA,KADA,GAAAE,GAAA4pE,EAAAlnD,IAAAziB,EAAAD,EAAAlE,EAAAM,SACA,CAGA,IAAA,GADAykE,GAAA,OACA7jE,EAAA,EAAAA,EAAAykB,EAAArlB,SACAykE,EAAAp/C,EAAAzkB,KACA6jE,EAAAzrC,GAAAp1B,GAAA6gE,EAAAhxC,MAAA7vB,IAFAhD,KAIA,GAAA6jE,EAAAzrC,IAAAn1B,EAAA,MAAAkoE,GAAAyB,EAAA9tE,EAAAgE,EAAA6qE,EAAAC,EAAA7xC,EAAAv5B,EACA2oE,GAAAyB,EAAA9tE,EAAAoC,MAAA,EAAA2iE,EAAAzrC,GAAAp1B,GAAAF,EAAA6qE,EAAA,KAAA5xC,EAAAv5B,GACAmrE,EAAA,KACA7uE,EAAAA,EAAAoC,MAAA2iE,EAAAzrC,GAAAp1B,GACAA,EAAA6gE,EAAAzrC,KAKA,QAAAm2C,IAAA3B,EAAAj1B,EAAAmnB,EAAA0P,GACA,GAAAC,IAAAD,GAAA1P,EAAAuE,UACAoL,IAAA7B,EAAAvlE,IAAArC,KAAA4nE,EAAAlnD,IAAAknD,EAAAlnD,IAAAiyB,EAAA82B,IACAD,GAAA5B,EAAAjJ,GAAApgE,QAAAkU,MAAAi3D,wBACAD,IACAA,EAAA7B,EAAA7yD,QAAA/a,YAAAV,SAAAO,cAAA,UACA4vE,EAAAp9D,aAAA,YAAAytD,EAAA9tD,KAEAy9D,IACA7B,EAAAjJ,GAAApgE,QAAAkU,MAAAk3D,cAAAF,GACA7B,EAAA7yD,QAAA/a,YAAAyvE,IAEA7B,EAAAlnD,KAAAiyB,EACAi1B,EAAAE,eAAA,EAKA,QAAAQ,IAAA7b,EAAAmb,EAAA7C,GACA,GAAA/K,GAAAvN,EAAA0N,YAAAyP,EAAAnd,EAAA3yD,KAAA8qE,EAAA,CACA,IAAA5K,EAQA,IAFA,GAAAl8D,GAAAN,EACAqsE,EAAAC,EAAAC,EAAAhzC,EAAAumC,EADA9pB,EAAAo2B,EAAAxvE,OAAAsmB,EAAA,EAAA1lB,EAAA,EAAAlB,EAAA,GACAkwE,EAAA,IACA,CACA,GAAAA,GAAAtpD,EAAA,CACAmpD,EAAAC,EAAAC,EAAAhzC,EAAAv5B,EAAA,GACA8/D,EAAA,KAAA0M,EAAAvpC,EAAAA,CAEA,KAAA,GADAwpC,MAAAC,EAAA,OACAzsE,EAAA,EAAAA,EAAAu8D,EAAA5/D,SAAAqD,EAAA,CACA,GAAA4/D,GAAArD,EAAAv8D,GAAA0B,EAAAk+D,EAAAvD,MACA,aAAA36D,EAAA7E,MAAA+iE,EAAAxvC,MAAAnN,GAAAvhB,EAAAk/D,WACA4L,EAAAjqE,KAAAb,GACAk+D,EAAAxvC,MAAAnN,IAAA,MAAA28C,EAAAjqC,IAAAiqC,EAAAjqC,GAAA1S,GAAAvhB,EAAAm+D,WAAAD,EAAAjqC,IAAA1S,GAAA28C,EAAAxvC,MAAAnN,IACA,MAAA28C,EAAAjqC,IAAAiqC,EAAAjqC,IAAA1S,GAAAspD,EAAA3M,EAAAjqC,KACA42C,EAAA3M,EAAAjqC,GACA02C,EAAA,IAEA3qE,EAAAwQ,YAAAk6D,GAAA,IAAA1qE,EAAAwQ,WACAxQ,EAAA3B,MAAAA,GAAAA,EAAAA,EAAA,IAAA,IAAA2B,EAAA3B,KACA2B,EAAAwpE,YAAAtL,EAAAxvC,MAAAnN,IAAAqpD,GAAA,IAAA5qE,EAAAwpE,YACAxpE,EAAAypE,UAAAvL,EAAAjqC,IAAA42C,IAAAE,IAAAA,OAAAlqE,KAAAb,EAAAypE,SAAAvL,EAAAjqC,IACAj0B,EAAA43B,QAAAA,IAAAA,EAAA53B,EAAA43B,OACA53B,EAAAm+D,aAAAA,GAAAT,GAAAS,EAAAxD,OAAA36D,GAAA,KACAm+D,EAAAD,IACAA,EAAAxvC,KAAAnN,GAAAspD,EAAA3M,EAAAxvC,OACAm8C,EAAA3M,EAAAxvC,MAGA,GAAAq8C,EAAA,IAAA,GAAAC,GAAA,EAAAA,EAAAD,EAAA9vE,OAAA+vE,GAAA,EACAD,EAAAC,EAAA,IAAAH,IAAAF,GAAA,IAAAI,EAAAC,GAEA,KAAA7M,GAAAA,EAAAzvC,MAAAnN,EAAA,IAAA,GAAA0pD,GAAA,EAAAA,EAAAH,EAAA7vE,SAAAgwE,EACAb,GAAA3B,EAAA,EAAAqC,EAAAG,GACA,IAAA9M,IAAAA,EAAAzvC,MAAA,IAAAnN,EAAA,CAGA,GAFA6oD,GAAA3B,GAAA,MAAAtK,EAAAlqC,GAAAogB,EAAA,EAAA8pB,EAAAlqC,IAAA1S,EACA48C,EAAAxD,OAAA,MAAAwD,EAAAzvC,MACA,MAAAyvC,EAAAlqC,GAAA,MACAkqC,GAAAlqC,IAAA1S,IAAA48C,GAAA,IAGA,GAAA58C,GAAA8yB,EAAA,KAGA,KADA,GAAA62B,GAAAxmE,KAAAkvD,IAAAvf,EAAAw2B,KACA,CACA,GAAAlwE,EAAA,CACA,GAAAmE,GAAAyiB,EAAA5mB,EAAAM,MACA,KAAAkjE,EAAA,CACA,GAAAgN,GAAArsE,EAAAosE,EAAAvwE,EAAAoC,MAAA,EAAAmuE,EAAA3pD,GAAA5mB,CACA8tE,GAAAM,SAAAN,EAAA0C,EAAAxsE,EAAAA,EAAA+rE,EAAAA,EACAE,EAAArpD,EAAA4pD,EAAAlwE,QAAA4vE,EAAAF,EAAA,GAAA/yC,EAAAv5B,GAEA,GAAAS,GAAAosE,EAAA,CAAAvwE,EAAAA,EAAAoC,MAAAmuE,EAAA3pD,GAAAA,EAAA2pD,CAAA,OACA3pD,EAAAziB,EACA8rE,EAAA,GAEAjwE,EAAA8vE,EAAA1tE,MAAA0oE,EAAAA,EAAAG,EAAA/pE,MACA8C,EAAAypE,GAAAxC,EAAA/pE,KAAA4sE,EAAAjJ,GAAAn+C,cA5DA,KAAA,GAAA+3C,GAAA,EAAAA,EAAAwM,EAAA3qE,OAAAm+D,GAAA,EACAqP,EAAAM,SAAAN,EAAAgC,EAAA1tE,MAAA0oE,EAAAA,EAAAG,EAAAxM,IAAAgP,GAAAxC,EAAAxM,EAAA,GAAAqP,EAAAjJ,GAAAn+C,UAoEA,QAAA+pD,IAAAxiC,EAAA0kB,EAAAuR,GAEAvkE,KAAAgzD,KAAAA,EAEAhzD,KAAAwuE,KAAAnK,GAAArR,GAEAhzD,KAAAk5C,KAAAl5C,KAAAwuE,KAAA9P,EAAAjF,EAAAz5D,KAAAwuE,OAAAjK,EAAA,EAAA,EACAvkE,KAAAg5C,KAAAh5C,KAAAK,KAAA,KACAL,KAAAgL,OAAA25D,GAAAr2B,EAAA0kB,GAIA,QAAA+d,IAAA7L,EAAA9wC,EAAAuF,GAEA,IAAA,GADAq3C,GAAA50B,KACAn1B,EAAAmN,EAAAnN,EAAA0S,EAAA1S,EAAA+pD,EAAA,CACA,GAAA5uD,GAAA,GAAA0uD,IAAA5L,EAAA52B,IAAA4vB,EAAAgH,EAAA52B,IAAArnB,GAAAA,EACA+pD,GAAA/pD,EAAA7E,EAAA82B,KACAkD,EAAA71C,KAAA6b,GAEA,MAAAg6B,GAKA,QAAA60B,IAAAC,GACAC,GACAA,GAAAC,IAAA7qE,KAAA2qE,GAEAA,EAAAG,UAAAF,IACAC,KAAAF,GACAI,qBAKA,QAAAC,IAAArnC,GAGA,GAAA2Y,GAAA3Y,EAAAonC,iBAAA/vE,EAAA,CACA,GAAA,CACA,KAAAA,EAAAshD,EAAAliD,OAAAY,IACAshD,EAAAthD,GAAAF,KAAA,KACA,KAAA,GAAA2C,GAAA,EAAAA,EAAAkmC,EAAAknC,IAAAzwE,OAAAqD,IAAA,CACA,GAAAktE,GAAAhnC,EAAAknC,IAAAptE,EACA,IAAAktE,EAAArJ,uBACA,KAAAqJ,EAAAM,qBAAAN,EAAArJ,uBAAAlnE,QACAuwE,EAAArJ,uBAAAqJ,EAAAM,wBAAAnwE,KAAA,KAAA6vE,EAAAhM,WAEA3jE,EAAAshD,EAAAliD,QAGA,QAAA8wE,IAAAP,EAAAQ,GACA,GAAAxnC,GAAAgnC,EAAAG,SACA,IAAAnnC,EAEA,IAAAqnC,GAAArnC,GACA,QACAinC,GAAA,KACAO,EAAAxnC,IAaA,QAAAynC,IAAA1K,EAAApmE,GACA,GAAA6oC,GAAAs9B,GAAAC,EAAApmE,EACA,IAAA6oC,EAAA/oC,OAAA,CACA,GAAAmrC,GAAAkM,EAAAjrC,MAAAnC,UAAAnI,MAAApB,KAAA6F,UAAA,EACAiqE,IACArlC,EAAAqlC,GAAAG,iBACAM,GACA9lC,EAAA8lC,IAEA9lC,EAAA8lC,MACA1mE,WAAA2mE,GAAA,GAMA,KAAA,GAJA7G,GAAA,SAAAzpE,GACAuqC,EAAAvlC,KAAA,WAAA,MAAAmjC,GAAAnoC,GAAAiB,MAAA,KAAAw1C,MAGAz2C,EAAA,EAAAA,EAAAmoC,EAAA/oC,SAAAY,EACAypE,EAAAzpE,IAGA,QAAAswE,MACA,GAAAC,GAAAF,EACAA,IAAA,IACA,KAAA,GAAArwE,GAAA,EAAAA,EAAAuwE,EAAAnxE,SAAAY,EAAAuwE,EAAAvwE,KAMA,QAAAwwE,IAAA7M,EAAAgJ,EAAA3J,EAAAyN,GACA,IAAA,GAAAhuE,GAAA,EAAAA,EAAAkqE,EAAA+D,QAAAtxE,OAAAqD,IAAA,CACA,GAAAnD,GAAAqtE,EAAA+D,QAAAjuE,EACA,SAAAnD,EAAAqxE,GAAAhN,EAAAgJ,GACA,UAAArtE,EAAAsxE,GAAAjN,EAAAgJ,EAAA3J,EAAAyN,GACA,SAAAnxE,EAAAuxE,GAAAlN,EAAAgJ,GACA,UAAArtE,GAAAwxE,GAAAnN,EAAAgJ,EAAA8D,GAEA9D,EAAA+D,QAAA,KAKA,QAAAK,IAAApE,GAQA,MAPAA,GAAAl1B,MAAAk1B,EAAA7tE,OACA6tE,EAAAl1B,KAAAqf,EAAA,MAAA,KAAA,KAAA,sBACA6V,EAAA7tE,KAAAG,YACA0tE,EAAA7tE,KAAAG,WAAA4jB,aAAA8pD,EAAAl1B,KAAAk1B,EAAA7tE,MACA6tE,EAAAl1B,KAAAz4C,YAAA2tE,EAAA7tE,MACAy7D,IAAAC,GAAA,IAAAmS,EAAAl1B,KAAA30C,MAAA8hB,OAAA,IAEA+nD,EAAAl1B,KAGA,QAAAu5B,IAAArN,EAAAgJ,GACA,GAAAvhC,GAAAuhC,EAAA3C,QAAA2C,EAAA3C,QAAA,KAAA2C,EAAAlb,KAAAuY,SAAA,IAAA2C,EAAAlb,KAAAuY,OAEA,IADA5+B,IAAAA,GAAA,8BACAuhC,EAAAsE,WACA7lC,EAAAuhC,EAAAsE,WAAAt8D,UAAAy2B,GACAuhC,EAAAsE,WAAAhyE,WAAAC,YAAAytE,EAAAsE,YAAAtE,EAAAsE,WAAA,UACA,IAAA7lC,EAAA,CACA,GAAA5d,GAAAujD,GAAApE,EACAA,GAAAsE,WAAAzjD,EAAA/K,aAAAq0C,EAAA,MAAA,KAAA1rB,GAAA5d,EAAA1oB,YACA6+D,EAAApgE,QAAAkU,MAAAk3D,cAAAhC,EAAAsE,aAMA,QAAAC,IAAAvN,EAAAgJ,GACA,GAAAlc,GAAAkT,EAAApgE,QAAA23D,gBACA,OAAAzK,IAAAA,EAAAgB,MAAAkb,EAAAlb,MACAkS,EAAApgE,QAAA23D,iBAAA,KACAyR,EAAAhT,QAAAlJ,EAAAkJ,QACAlJ,EAAA0gB,OAEAzE,GAAA/I,EAAAgJ,GAMA,QAAAgE,IAAAhN,EAAAgJ,GACA,GAAAvhC,GAAAuhC,EAAA7tE,KAAA6V,UACAw8D,EAAAD,GAAAvN,EAAAgJ,EACAA,GAAA7tE,MAAA6tE,EAAAl1B,OAAAk1B,EAAAl1B,KAAA05B,EAAAtE,KACAF,EAAA7tE,KAAAG,WAAA4jB,aAAAsuD,EAAAtE,IAAAF,EAAA7tE,MACA6tE,EAAA7tE,KAAAqyE,EAAAtE,IACAsE,EAAAnH,SAAA2C,EAAA3C,SAAAmH,EAAAlH,WAAA0C,EAAA1C,WACA0C,EAAA3C,QAAAmH,EAAAnH,QACA2C,EAAA1C,UAAAkH,EAAAlH,UACA4G,GAAAlN,EAAAgJ,IACAvhC,IACAuhC,EAAA7tE,KAAA6V,UAAAy2B,GAIA,QAAAylC,IAAAlN,EAAAgJ,GACAqE,GAAArN,EAAAgJ,GACAA,EAAAlb,KAAA2f,UACAL,GAAApE,GAAAh4D,UAAAg4D,EAAAlb,KAAA2f,UACAzE,EAAAl1B,MAAAk1B,EAAA7tE,OACA6tE,EAAAl1B,KAAA9iC,UAAA,GACA,IAAAs1D,GAAA0C,EAAA1C,UAAA0C,EAAA1C,UAAA,KAAA0C,EAAAlb,KAAAwY,WAAA,IAAA0C,EAAAlb,KAAAwY,SACA0C,GAAA7tE,KAAA6V,UAAAs1D,GAAA,GAGA,QAAA2G,IAAAjN,EAAAgJ,EAAA3J,EAAAyN,GASA,GARA9D,EAAA0E,SACA1E,EAAAl1B,KAAAv4C,YAAAytE,EAAA0E,QACA1E,EAAA0E,OAAA,MAEA1E,EAAA2E,mBACA3E,EAAAl1B,KAAAv4C,YAAAytE,EAAA2E,kBACA3E,EAAA2E,iBAAA,MAEA3E,EAAAlb,KAAA8f,YAAA,CACA,GAAA/jD,GAAAujD,GAAApE,EACAA,GAAA2E,iBAAAxa,EAAA,MAAA,KAAA,gCAAA6V,EAAAlb,KAAA8f,YACA,UAAA5N,EAAAn+C,QAAAgsD,YAAAf,EAAAgB,UAAAhB,EAAAiB,kBAAA,cAAAjB,EAAA,iBAAA,MACA9M,EAAApgE,QAAAkU,MAAAk3D,cAAAhC,EAAA2E,kBACA9jD,EAAA/K,aAAAkqD,EAAA2E,iBAAA3E,EAAA7tE,MAEA,GAAAkiE,GAAA2L,EAAAlb,KAAAkgB,aACA,IAAAhO,EAAAn+C,QAAAosD,aAAA5Q,EAAA,CACA,GAAA6Q,GAAAd,GAAApE,GACAmF,EAAAnF,EAAA0E,OAAAva,EAAA,MAAA,KAAA,4BAAA,UAAA6M,EAAAn+C,QAAAgsD,YAAAf,EAAAgB,UAAAhB,EAAAiB,kBAAA,KAUA,IATA/N,EAAApgE,QAAAkU,MAAAk3D,cAAAmD,GACAD,EAAApvD,aAAAqvD,EAAAnF,EAAA7tE,MACA6tE,EAAAlb,KAAA8f,cACAO,EAAAn9D,WAAA,IAAAg4D,EAAAlb,KAAA8f,cACA5N,EAAAn+C,QAAAosD,aAAA5Q,GAAAA,EAAA,4BACA2L,EAAAoF,WAAAD,EAAA9yE,YACA83D,EAAA,MAAA4G,EAAAiG,EAAAn+C,QAAAw9C,GACA,8CACA,SAAAyN,EAAAuB,WAAA,0BAAA,cAAArO,EAAApgE,QAAA,kBAAA,QACAy9D,EAAA,IAAA,GAAAr+D,GAAA,EAAAA,EAAAghE,EAAAn+C,QAAA40C,QAAAh7D,SAAAuD,EAAA,CACA,GAAAqO,GAAA2yD,EAAAn+C,QAAA40C,QAAAz3D,GAAA09D,EAAAW,EAAA7xD,eAAA6B,IAAAgwD,EAAAhwD,EACAqvD,IACAyR,EAAA9yE,YAAA83D,EAAA,OAAAuJ,GAAA,wBACA,SAAAoQ,EAAAuB,WAAAhhE,GAAA,cAAAy/D,EAAAwB,YAAAjhE,GAAA,SAKA,QAAA8/D,IAAAnN,EAAAgJ,EAAA8D,GACA9D,EAAAuF,YAAAvF,EAAAuF,UAAA,KACA,KAAA,GAAAz6B,GAAAk1B,EAAAl1B,KAAA3yC,WAAAoN,EAAA,OAAAulC,EAAAA,EAAAvlC,EACAA,EAAAulC,EAAA/lC,YACA,yBAAA+lC,EAAA9iC,WACAg4D,EAAAl1B,KAAAv4C,YAAAu4C,EAEA06B,IAAAxO,EAAAgJ,EAAA8D,GAIA,QAAA2B,IAAAzO,EAAAgJ,EAAA3J,EAAAyN,GACA,GAAAU,GAAAD,GAAAvN,EAAAgJ,EAQA,OAPAA,GAAA7tE,KAAA6tE,EAAAl1B,KAAA05B,EAAAtE,IACAsE,EAAAnH,UAAA2C,EAAA3C,QAAAmH,EAAAnH,SACAmH,EAAAlH,YAAA0C,EAAA1C,UAAAkH,EAAAlH,WAEA4G,GAAAlN,EAAAgJ,GACAiE,GAAAjN,EAAAgJ,EAAA3J,EAAAyN,GACA0B,GAAAxO,EAAAgJ,EAAA8D,GACA9D,EAAAl1B,KAKA,QAAA06B,IAAAxO,EAAAgJ,EAAA8D,GAEA,GADA4B,GAAA1O,EAAAgJ,EAAAlb,KAAAkb,EAAA8D,GAAA,GACA9D,EAAAM,KAAA,IAAA,GAAAjtE,GAAA,EAAAA,EAAA2sE,EAAAM,KAAA7tE,OAAAY,IACAqyE,GAAA1O,EAAAgJ,EAAAM,KAAAjtE,GAAA2sE,EAAA8D,GAAA,GAGA,QAAA4B,IAAA1O,EAAAlS,EAAAkb,EAAA8D,EAAA6B,GACA,GAAA7gB,EAAAnmB,QAEA,IAAA,GADA9d,GAAAujD,GAAApE,GACA3sE,EAAA,EAAA0uC,EAAA+iB,EAAAnmB,QAAAtrC,EAAA0uC,EAAAtvC,SAAAY,EAAA,CACA,GAAAyuE,GAAA//B,EAAA1uC,GAAAy3C,EAAAqf,EAAA,OAAA2X,EAAAh3B,MAAA,wBACAg3B,GAAA8D,mBAAA96B,EAAApmC,aAAA,mBAAA,QACAmhE,GAAA/D,EAAAh3B,EAAAk1B,EAAA8D,GACA9M,EAAApgE,QAAAkU,MAAAk3D,cAAAl3B,GACA66B,GAAA7D,EAAAgE,MACAjlD,EAAA/K,aAAAg1B,EAAAk1B,EAAA0E,QAAA1E,EAAA7tE,MAEA0uB,EAAAxuB,YAAAy4C,GACA24B,GAAA3B,EAAA,WAIA,QAAA+D,IAAA/D,EAAAh3B,EAAAk1B,EAAA8D,GACA,GAAAhC,EAAAiE,UAAA,EACA/F,EAAAuF,YAAAvF,EAAAuF,eAAAltE,KAAAyyC,EACA,IAAAvvC,GAAAuoE,EAAAkC,YACAl7B,GAAA30C,MAAAqiB,KAAAsrD,EAAAgB,SAAA,KACAhD,EAAAmE,cACA1qE,GAAAuoE,EAAAiB,iBACAj6B,EAAA30C,MAAAo4B,YAAAu1C,EAAAiB,iBAAA,MAEAj6B,EAAA30C,MAAAoF,MAAAA,EAAA,KAEAumE,EAAAmE,cACAn7B,EAAA30C,MAAA8hB,OAAA,EACA6yB,EAAA30C,MAAAghB,SAAA,WACA2qD,EAAAiE,YAAAj7B,EAAA30C,MAAAugB,YAAAotD,EAAAiB,iBAAA,OAIA,QAAAmB,IAAApE,GACA,GAAA,MAAAA,EAAAtkE,OAAA,MAAAskE,GAAAtkE,MACA,IAAAw5D,GAAA8K,EAAA1hC,IAAA42B,EACA,KAAAA,EAAA,MAAA,EACA,KAAAx+D,EAAA7G,SAAA+E,KAAAorE,EAAAh3B,MAAA,CACA,GAAAq7B,GAAA,qBACArE,GAAAmE,cACAE,GAAA,iBAAAnP,EAAApgE,QAAA62D,QAAAzsC,YAAA,OACA8gD,EAAAiE,YACAI,GAAA,UAAAnP,EAAApgE,QAAAq8C,QAAApkB,YAAA,OACAq7B,EAAA8M,EAAApgE,QAAAo2D,QAAA7C,EAAA,OAAA2X,EAAAh3B,MAAA,KAAAq7B,IAEA,MAAArE,GAAAtkE,OAAAskE,EAAAh3B,KAAAx4C,WAAA2uB,aAIA,QAAAmlD,IAAAxvE,EAAA3C,GACA,IAAA,GAAAwD,GAAAyiE,GAAAjmE,GAAAwD,GAAAb,EAAAq8C,QAAAx7C,EAAAA,EAAAnF,WACA,IAAAmF,GAAA,GAAAA,EAAArE,UAAA,QAAAqE,EAAApC,aAAA,qBACAoC,EAAAnF,YAAAsE,EAAAy2D,OAAA51D,GAAAb,EAAAw2D,MACA,OAAA,EAMA,QAAAiZ,IAAAzvE,GAAA,MAAAA,GAAAs2D,UAAAr6B,UACA,QAAAyzC,IAAA1vE,GAAA,MAAAA,GAAAw2D,MAAAnsC,aAAArqB,EAAAs2D,UAAAjsC,aACA,QAAAslD,IAAA3vE,GACA,GAAAA,EAAA04D,eAAA,MAAA14D,GAAA04D,cACA,IAAAr7D,GAAAi2D,EAAAtzD,EAAAo2D,QAAA7C,EAAA,MAAA,MACAh0D,EAAAtE,OAAA2kB,iBAAA3kB,OAAA2kB,iBAAAviB,GAAAA,EAAAuyE,aACArkE,GAAAqW,KAAAgD,SAAArlB,EAAAo4B,aAAAI,MAAAnT,SAAArlB,EAAAs4B,cAEA,OADA9qB,OAAAxB,EAAAqW,OAAA7U,MAAAxB,EAAAwsB,SAAA/3B,EAAA04D,eAAAntD,GACAA,EAGA,QAAAskE,IAAAzP,GAAA,MAAAxJ,IAAAwJ,EAAApgE,QAAAg4D,eACA,QAAA8X,IAAA1P,GACA,MAAAA,GAAApgE,QAAA+2D,SAAA9+B,YAAA43C,GAAAzP,GAAAA,EAAApgE,QAAAk4D,SAEA,QAAA6X,IAAA3P,GACA,MAAAA,GAAApgE,QAAA+2D,SAAAr/B,aAAAm4C,GAAAzP,GAAAA,EAAApgE,QAAAi4D,UAOA,QAAA+X,IAAA5P,EAAAgJ,EAAA6G,GACA,GAAAC,GAAA9P,EAAAn+C,QAAAy/C,aACAyO,EAAAD,GAAAJ,GAAA1P,EACA,KAAAgJ,EAAAhT,QAAAga,SAAAF,GAAA9G,EAAAhT,QAAAzxD,OAAAwrE,EAAA,CACA,GAAAC,GAAAhH,EAAAhT,QAAAga,UACA,IAAAF,EAAA,CACA9G,EAAAhT,QAAAzxD,MAAAwrE,CAEA,KAAA,GADAE,GAAAjH,EAAA7tE,KAAAgG,WAAAmgB,iBACAjlB,EAAA,EAAAA,EAAA4zE,EAAAx0E,OAAA,EAAAY,IAAA,CACA,GAAAuC,GAAAqxE,EAAA5zE,GAAAkS,EAAA0hE,EAAA5zE,EAAA,EACA6I,MAAA0yB,IAAAh5B,EAAAw6B,OAAA7qB,EAAA6qB,QAAA,GACA42C,EAAA3uE,MAAAzC,EAAAw6B,OAAA7qB,EAAAqC,KAAA,EAAAi/D,EAAAj/D,MAGAo/D,EAAA3uE,KAAAwuE,EAAAz2C,OAAAy2C,EAAAj/D,MAOA,QAAAs/D,IAAAlH,EAAAlb,EAAAuR,GACA,GAAA2J,EAAAlb,MAAAA,EACA,OAAApqD,IAAAslE,EAAAhT,QAAAtyD,IAAAwU,MAAA8wD,EAAAhT,QAAA99C,MACA,KAAA,GAAA7b,GAAA,EAAAA,EAAA2sE,EAAAM,KAAA7tE,OAAAY,IACA,GAAA2sE,EAAAM,KAAAjtE,IAAAyxD,EACA,OAAApqD,IAAAslE,EAAAhT,QAAA4T,KAAAvtE,GAAA6b,MAAA8wD,EAAAhT,QAAA6T,OAAAxtE,GACA,KAAA,GAAAu9D,GAAA,EAAAA,EAAAoP,EAAAM,KAAA7tE,OAAAm+D,IACA,GAAAJ,EAAAwP,EAAAM,KAAA1P,IAAAyF,EACA,OAAA37D,IAAAslE,EAAAhT,QAAA4T,KAAAhQ,GAAA1hD,MAAA8wD,EAAAhT,QAAA6T,OAAAjQ,GAAA76C,QAAA,GAKA,QAAAoxD,IAAAnQ,EAAAlS,GACAA,EAAAkR,GAAAlR,EACA,IAAAuR,GAAA7F,EAAA1L,GACA5wC,EAAA8iD,EAAApgE,QAAA23D,iBAAA,GAAAqU,IAAA5L,EAAA52B,IAAA0kB,EAAAuR,EACAniD,GAAAmiD,MAAAA,CACA,IAAAmO,GAAAtwD,EAAAswD,MAAAzE,GAAA/I,EAAA9iD,EAGA,OAFAA,GAAA/hB,KAAAqyE,EAAAtE,IACAhW,EAAA8M,EAAApgE,QAAAq2D,YAAAuX,EAAAtE,KACAhsD,EAKA,QAAAkzD,IAAApQ,EAAAlS,EAAA5V,EAAAm4B,GACA,MAAArP,IAAAhB,EAAAc,GAAAd,EAAAlS,GAAA5V,EAAAm4B,GAIA,QAAAC,IAAAtQ,EAAAX,GACA,GAAAA,GAAAW,EAAApgE,QAAAs3D,UAAAmI,EAAAW,EAAApgE,QAAAu3D,OACA,MAAA6I,GAAApgE,QAAAsd,KAAAqzD,GAAAvQ,EAAAX;AACA,GAAAvS,GAAAkT,EAAApgE,QAAA23D,gBACA,OAAAzK,IAAAuS,GAAAvS,EAAAuS,OAAAA,EAAAvS,EAAAuS,MAAAvS,EAAA9Y,KACA8Y,EADA,OASA,QAAAgU,IAAAd,EAAAlS,GACA,GAAAuR,GAAA7F,EAAA1L,GACA5wC,EAAAozD,GAAAtQ,EAAAX,EACAniD,KAAAA,EAAA/hB,KACA+hB,EAAA,KACAA,GAAAA,EAAA6vD,UACAF,GAAA7M,EAAA9iD,EAAAmiD,EAAAmR,GAAAxQ,IACAA,EAAA0C,MAAA+N,aAAA,GAEAvzD,IACAA,EAAAizD,GAAAnQ,EAAAlS,GAEA,IAAApd,GAAAw/B,GAAAhzD,EAAA4wC,EAAAuR,EACA,QACAvR,KAAAA,EAAA5wC,KAAAA,EAAA2yD,KAAA,KACAnsE,IAAAgtC,EAAAhtC,IAAAwU,MAAAw4B,EAAAx4B,MAAA6G,OAAA2xB,EAAA3xB,OACA2xD,YAAA,GAMA,QAAA1P,IAAAhB,EAAA2Q,EAAAz4B,EAAAm4B,EAAAO,GACAD,EAAA5xD,SAAAm5B,GAAA,EACA,IAAAwkB,GAAAr/C,EAAA66B,GAAAm4B,GAAA,GAaA,OAZAM,GAAAz4D,MAAA1M,eAAA6R,GACAq/C,EAAAiU,EAAAz4D,MAAAmF,IAEAszD,EAAAd,OACAc,EAAAd,KAAAc,EAAAzzD,KAAA/hB,KAAAomB,yBACAovD,EAAAD,aACAd,GAAA5P,EAAA2Q,EAAAzzD,KAAAyzD,EAAAd,MACAc,EAAAD,YAAA,GAEAhU,EAAAmU,GAAA7Q,EAAA2Q,EAAAz4B,EAAAm4B,GACA3T,EAAAoU,QAAAH,EAAAz4D,MAAAmF,GAAAq/C,KAEAl7C,KAAAk7C,EAAAl7C,KAAAmW,MAAA+kC,EAAA/kC,MACA/mB,IAAAggE,EAAAlU,EAAAqU,KAAArU,EAAA9rD,IACAwoB,OAAAw3C,EAAAlU,EAAAsU,QAAAtU,EAAAtjC,QAKA,QAAA63C,IAAA9O,EAAAjqB,EAAAm4B,GAIA,IAAA,GAHAv8B,GAAAz0C,EAAAC,EAAAy2B,EAAAm7C,EAAAC,EAGA90E,EAAA,EAAAA,EAAA8lE,EAAA1mE,OAAAY,GAAA,EAcA,GAbA60E,EAAA/O,EAAA9lE,GACA80E,EAAAhP,EAAA9lE,EAAA,GACA67C,EAAAg5B,GACA7xE,EAAA,EAAAC,EAAA,EACAy2B,EAAA,QACAmiB,EAAAi5B,GACA9xE,EAAA64C,EAAAg5B,EACA5xE,EAAAD,EAAA,IACAhD,GAAA8lE,EAAA1mE,OAAA,GAAAy8C,GAAAi5B,GAAAhP,EAAA9lE,EAAA,GAAA67C,KACA54C,EAAA6xE,EAAAD,EACA7xE,EAAAC,EAAA,EACA44C,GAAAi5B,IAAAp7C,EAAA,UAEA,MAAA12B,EAAA,CAIA,GAHAy0C,EAAAquB,EAAA9lE,EAAA,GACA60E,GAAAC,GAAAd,IAAAv8B,EAAAkoB,WAAA,OAAA,WACAjmC,EAAAs6C,GACA,QAAAA,GAAA,GAAAhxE,EACA,KAAAhD,GAAA8lE,EAAA9lE,EAAA,IAAA8lE,EAAA9lE,EAAA,IAAA8lE,EAAA9lE,EAAA,GAAA2/D,YACAloB,EAAAquB,GAAA9lE,GAAA,GAAA,GACA05B,EAAA,MAEA,IAAA,SAAAs6C,GAAAhxE,GAAA8xE,EAAAD,EACA,KAAA70E,EAAA8lE,EAAA1mE,OAAA,GAAA0mE,EAAA9lE,EAAA,IAAA8lE,EAAA9lE,EAAA,KAAA8lE,EAAA9lE,EAAA,GAAA2/D,YACAloB,EAAAquB,GAAA9lE,GAAA,GAAA,GACA05B,EAAA,OAEA,OAGA,OAAA+d,KAAAA,EAAAz0C,MAAAA,EAAAC,IAAAA,EAAAy2B,SAAAA,EAAAq7C,WAAAF,EAAAG,SAAAF,GAGA,QAAAG,IAAArB,EAAAI,GACA,GAAAR,GAAA0B,EACA,IAAA,QAAAlB,EAAA,IAAA,GAAAh0E,GAAA,EAAAA,EAAA4zE,EAAAx0E,SACAo0E,EAAAI,EAAA5zE,IAAAmlB,MAAAquD,EAAAl4C,MADAt7B,SAEA,KAAA,GAAAu9D,GAAAqW,EAAAx0E,OAAA,EAAAm+D,GAAA,IACAiW,EAAAI,EAAArW,IAAAp4C,MAAAquD,EAAAl4C,MADAiiC,KAGA,MAAAiW,GAGA,QAAAgB,IAAA7Q,EAAA2Q,EAAAz4B,EAAAm4B,GACA,GAGAR,GAHAna,EAAAub,GAAAN,EAAAjtE,IAAAw0C,EAAAm4B,GACAv8B,EAAA4hB,EAAA5hB,KAAAz0C,EAAAq2D,EAAAr2D,MAAAC,EAAAo2D,EAAAp2D,IAAAy2B,EAAA2/B,EAAA3/B,QAGA,IAAA,GAAA+d,EAAA13C,SAAA,CACA,IAAA,GAAAw9D,GAAA,EAAAA,EAAA,EAAAA,IAAA,CACA,KAAAv6D,GAAA+1D,EAAAub,EAAA7iB,KAAA3yD,KAAAo0B,OAAAmmC,EAAA0b,WAAA/xE,OAAAA,CACA,MAAAq2D,EAAA0b,WAAA9xE,EAAAo2D,EAAA2b,UAAAjc,EAAAub,EAAA7iB,KAAA3yD,KAAAo0B,OAAAmmC,EAAA0b,WAAA9xE,OAAAA,CAKA,IAHAuwE,EADAjZ,IAAAC,GAAA,GAAA,GAAAx3D,GAAAC,GAAAo2D,EAAA2b,SAAA3b,EAAA0b,WACAt9B,EAAAx4C,WAAAimB,wBAEA+vD,GAAAvuB,GAAAjP,EAAAz0C,EAAAC,GAAAgiB,iBAAA+uD,GACAR,EAAAruD,MAAAquD,EAAAl4C,OAAA,GAAAt4B,EAAA,KACAC,GAAAD,EACAA,GAAA,EACA02B,EAAA,QAEA6gC,IAAAC,GAAA,KAAAgZ,EAAA2B,GAAAxR,EAAApgE,QAAAo2D,QAAA6Z,QACA,CACAxwE,EAAA,IAAA02B,EAAAs6C,EAAA,QACA,IAAAJ,EAEAJ,GADA7P,EAAAn+C,QAAAy/C,eAAA2O,EAAAn8B,EAAAxyB,kBAAA7lB,OAAA,EACAw0E,EAAA,SAAAI,EAAAJ,EAAAx0E,OAAA,EAAA,GAEAq4C,EAAAvyB,wBAEA,GAAAq1C,IAAAC,GAAA,IAAAx3D,KAAAwwE,IAAAA,EAAAruD,OAAAquD,EAAAl4C,OAAA,CACA,GAAA85C,GAAA39B,EAAAx4C,WAAAgmB,iBAAA,EAEAuuD,GADA4B,GACAjwD,KAAAiwD,EAAAjwD,KAAAmW,MAAA85C,EAAAjwD,KAAAkwD,GAAA1R,EAAApgE,SAAAgR,IAAA6gE,EAAA7gE,IAAAwoB,OAAAq4C,EAAAr4C,QAEAm4C,GAOA,IAJA,GAAAR,GAAAlB,EAAAj/D,IAAA+/D,EAAAd,KAAAj/D,IAAA+gE,EAAA9B,EAAAz2C,OAAAu3C,EAAAd,KAAAj/D,IACA4kD,GAAAub,EAAAY,GAAA,EACA3B,EAAAW,EAAAzzD,KAAA84C,QAAAga,QACA3zE,EAAA,EACAA,EAAA2zE,EAAAv0E,OAAA,KACA+5D,EAAAwa,EAAA3zE,IADAA,KAEA,GAAAuU,GAAAvU,EAAA2zE,EAAA3zE,EAAA,GAAA,EAAAu1E,EAAA5B,EAAA3zE,GACA4e,GAAAuG,MAAA,SAAAuU,EAAA85C,EAAAl4C,MAAAk4C,EAAAruD,MAAAmvD,EAAAd,KAAAruD,KACAmW,OAAA,QAAA5B,EAAA85C,EAAAruD,KAAAquD,EAAAl4C,OAAAg5C,EAAAd,KAAAruD,KACA5Q,IAAAA,EAAAwoB,OAAAw4C,EAIA,OAHA/B,GAAAruD,MAAAquD,EAAAl4C,QAAA1c,EAAA61D,OAAA,GACA9Q,EAAAn+C,QAAAgwD,4BAAA52D,EAAA81D,KAAAA,EAAA91D,EAAA+1D,QAAAW,GAEA12D,EAKA,QAAAu2D,IAAAxb,EAAA6Z,GACA,IAAAh1E,OAAAi3E,QAAA,MAAAA,OAAAC,aACAD,OAAAC,aAAAD,OAAAE,aAAAnO,GAAA7N,GACA,MAAA6Z,EACA,IAAAoC,GAAAH,OAAAC,YAAAD,OAAAE,WACAE,EAAAJ,OAAAK,YAAAL,OAAAM,UACA,QAAA5wD,KAAAquD,EAAAruD,KAAAywD,EAAAt6C,MAAAk4C,EAAAl4C,MAAAs6C,EACArhE,IAAAi/D,EAAAj/D,IAAAshE,EAAA94C,OAAAy2C,EAAAz2C,OAAA84C,GAGA,QAAAG,IAAArJ,GACA,GAAAA,EAAAhT,UACAgT,EAAAhT,QAAA99C,SACA8wD,EAAAhT,QAAAga,QAAA,KACAhH,EAAAM,MAAA,IAAA,GAAAjtE,GAAA,EAAAA,EAAA2sE,EAAAM,KAAA7tE,OAAAY,IACA2sE,EAAAhT,QAAA6T,OAAAxtE,MAIA,QAAAi2E,IAAAtS,GACAA,EAAApgE,QAAA2yE,gBAAA,KACAtf,EAAA+M,EAAApgE,QAAAq2D,YACA,KAAA,GAAA55D,GAAA,EAAAA,EAAA2jE,EAAApgE,QAAAsd,KAAAzhB,OAAAY,IACAg2E,GAAArS,EAAApgE,QAAAsd,KAAA7gB,IAGA,QAAAm2E,IAAAxS,GACAsS,GAAAtS,GACAA,EAAApgE,QAAAw4D,gBAAA4H,EAAApgE,QAAAy4D,iBAAA2H,EAAApgE,QAAA04D,eAAA,KACA0H,EAAAn+C,QAAAy/C,eAAAtB,EAAApgE,QAAA64D,gBAAA,GACAuH,EAAApgE,QAAAs4D,aAAA,KAGA,QAAAua,MAIA,MAAAC,KAAAC,KAAAh4E,SAAA+E,KAAA6hB,wBAAAC,KAAAgD,SAAAhF,iBAAA7kB,SAAA+E,MAAAggB,aACA7kB,OAAAuxB,cAAAzxB,SAAA8V,iBAAA9V,SAAA+E,MAAAwiB,WAEA,QAAA0wD,MACA,MAAAF,KAAAC,KAAAh4E,SAAA+E,KAAA6hB,wBAAA3Q,IAAA4T,SAAAhF,iBAAA7kB,SAAA+E,MAAAmzE,YACAh4E,OAAAqxB,cAAAvxB,SAAA8V,iBAAA9V,SAAA+E,MAAAuiB,UAOA,QAAA6wD,IAAA9S,EAAAH,EAAAgQ,EAAA7nD,EAAA+qD,GACA,IAAAA,GAAAlT,EAAAl4B,QAAA,IAAA,GAAAtrC,GAAA,EAAAA,EAAAwjE,EAAAl4B,QAAAlsC,SAAAY,EAAA,GAAAwjE,EAAAl4B,QAAAtrC,GAAAyyE,MAAA,CACA,GAAA96B,GAAAk7B,GAAArP,EAAAl4B,QAAAtrC,GACAwzE,GAAAj/D,KAAAojC,EAAA67B,EAAAz2C,QAAA4a,EAEA,GAAA,QAAAhsB,EAAA,MAAA6nD,EACA7nD,KAAAA,EAAA,QACA,IAAAgrD,GAAApT,GAAAC,EAGA,IAFA,SAAA73C,EAAAgrD,GAAA3D,GAAArP,EAAApgE,SACAozE,GAAAhT,EAAApgE,QAAA43D,WACA,QAAAxvC,GAAA,UAAAA,EAAA,CACA,GAAAirD,GAAAjT,EAAApgE,QAAAs2D,UAAA30C,uBACAyxD,IAAAC,EAAAriE,KAAA,UAAAoX,EAAA,EAAA4qD,KACA,IAAAM,GAAAD,EAAAzxD,MAAA,UAAAwG,EAAA,EAAAyqD,KACA5C,GAAAruD,MAAA0xD,EAAArD,EAAAl4C,OAAAu7C,EAGA,MADArD,GAAAj/D,KAAAoiE,EAAAnD,EAAAz2C,QAAA45C,EACAnD,EAKA,QAAAsD,IAAAnT,EAAAoT,EAAAprD,GACA,GAAA,OAAAA,EAAA,MAAAorD,EACA,IAAA5xD,GAAA4xD,EAAA5xD,KAAA5Q,EAAAwiE,EAAAxiE,GAEA,IAAA,QAAAoX,EACAxG,GAAAixD,KACA7hE,GAAAgiE,SACA,IAAA,SAAA5qD,IAAAA,EAAA,CACA,GAAAqrD,GAAArT,EAAApgE,QAAAy2D,MAAA90C,uBACAC,IAAA6xD,EAAA7xD,KACA5Q,GAAAyiE,EAAAziE,IAGA,GAAA0iE,GAAAtT,EAAApgE,QAAAs2D,UAAA30C,uBACA,QAAAC,KAAAA,EAAA8xD,EAAA9xD,KAAA5Q,IAAAA,EAAA0iE,EAAA1iE,KAGA,QAAA2iE,IAAAvT,EAAAj+C,EAAAiG,EAAA63C,EAAAwQ,GAEA,MADAxQ,KAAAA,EAAA7G,EAAAgH,EAAA52B,IAAArnB,EAAA+rC,OACAglB,GAAA9S,EAAAH,EAAAuQ,GAAApQ,EAAAH,EAAA99C,EAAAm2B,GAAAm4B,GAAAroD,GAmBA,QAAAwrD,IAAAxT,EAAAj+C,EAAAiG,EAAA63C,EAAA4T,EAAA7C,GAGA,QAAA9wE,GAAAo4C,EAAAvgB,GACA,GAAAn3B,GAAAwgE,GAAAhB,EAAAyT,EAAAv7B,EAAAvgB,EAAA,QAAA,OAAAi5C,EAEA,OADAj5C,GAAAn3B,EAAAghB,KAAAhhB,EAAAm3B,MAAAn3B,EAAAm3B,MAAAn3B,EAAAghB,KACAsxD,GAAA9S,EAAAH,EAAAr/D,EAAAwnB,GAYA,QAAA0rD,GAAAx7B,EAAAipB,EAAAwS,GACA,GAAAzT,GAAAp/C,EAAAqgD,GAAAxpC,EAAAuoC,EAAAC,MAAA,GAAA,CACA,OAAArgE,GAAA6zE,EAAAz7B,EAAA,EAAAA,EAAAvgB,GAAAg8C,GAnBA9T,EAAAA,GAAA7G,EAAAgH,EAAA52B,IAAArnB,EAAA+rC,MACA2lB,IAAAA,EAAA3S,GAAAd,EAAAH,GAMA,IAAA/+C,GAAAw/C,GAAAT,EAAAG,EAAA52B,IAAA7T,WAAA2iB,EAAAn2B,EAAAm2B,GAAAiiB,EAAAp4C,EAAAo4C,MAQA,IAPAjiB,GAAA2nB,EAAA1kE,KAAAM,QACAy8C,EAAA2nB,EAAA1kE,KAAAM,OACA0+D,EAAA,UACAjiB,GAAA,IACAA,EAAA,EACAiiB,EAAA,UAEAr5C,EAAA,MAAAhhB,GAAA,UAAAq6D,EAAAjiB,EAAA,EAAAA,EAAA,UAAAiiB,EAMA,IAAAgH,GAAAf,GAAAt/C,EAAAo3B,EAAAiiB,GACAyZ,EAAAvT,GACAr7C,EAAA0uD,EAAAx7B,EAAAipB,EAAA,UAAAhH,EAEA,OADA,OAAAyZ,IAAA5uD,EAAA4uD,MAAAF,EAAAx7B,EAAA07B,EAAA,UAAAzZ,IACAn1C,EAKA,QAAA6uD,IAAA7T,EAAAj+C,GACA,GAAAP,GAAA,CACAO,GAAA24C,EAAAsF,EAAA52B,IAAArnB,GACAi+C,EAAAn+C,QAAAy/C,eAAA9/C,EAAAkwD,GAAA1R,EAAApgE,SAAAmiB,EAAAm2B,GACA,IAAA2nB,GAAA7G,EAAAgH,EAAA52B,IAAArnB,EAAA+rC,MACAl9C,EAAAgvD,GAAAC,GAAAwP,GAAArP,EAAApgE,QACA,QAAA4hB,KAAAA,EAAAmW,MAAAnW,EAAA5Q,IAAAA,EAAAwoB,OAAAxoB,EAAAivD,EAAAr5D,QASA,QAAAstE,IAAAhmB,EAAA5V,EAAAiiB,EAAA4Z,EAAAC,GACA,GAAAjyD,GAAAm4C,EAAApM,EAAA5V,EAAAiiB,EAGA,OAFAp4C,GAAAiyD,KAAAA,EACAD,IAAAhyD,EAAAgyD,SAAA,GACAhyD,EAKA,QAAAkyD,IAAAjU,EAAA7yD,EAAA6B,GACA,GAAAo6B,GAAA42B,EAAA52B,GAEA,IADAp6B,GAAAgxD,EAAApgE,QAAA43D,WACAxoD,EAAA,EAAA,MAAA8kE,IAAA1qC,EAAAl9B,MAAA,EAAA,MAAA,GAAA,EACA,IAAAmzD,GAAA3F,EAAAtwB,EAAAp6B,GAAA7C,EAAAi9B,EAAAl9B,MAAAk9B,EAAA4K,KAAA,CACA,IAAAqrB,EAAAlzD,EACA,MAAA2nE,IAAA1qC,EAAAl9B,MAAAk9B,EAAA4K,KAAA,EAAAglB,EAAA5vB,EAAAj9B,GAAAhR,KAAAM,OAAA,MAAA,EAAA,EACA0R,GAAA,IAAAA,EAAA,EAGA,KADA,GAAA0yD,GAAA7G,EAAA5vB,EAAAi2B,KACA,CACA,GAAA3C,GAAAwX,GAAAlU,EAAAH,EAAAR,EAAAlyD,EAAA6B,GACAiwD,EAAAJ,GAAAgB,GACAsU,EAAAlV,GAAAA,EAAAnwD,KAAA,GAAA,EACA,KAAAmwD,KAAAvC,EAAAxkB,GAAAi8B,EAAAjlD,KAAAgpB,IAAAwkB,EAAAxkB,IAAAi8B,EAAAjlD,KAAAgpB,IAAAwkB,EAAAsX,KAAA,GAGA,MAAAtX,EAFA2C,GAAA7F,EAAAqG,EAAAsU,EAAA1/C,GAAAq5B,OAMA,QAAA2T,IAAAzB,EAAAH,EAAA4T,EAAAzkE,GACA,GAAAgnD,GAAA,SAAA9d,GAAA,MAAA46B,IAAA9S,EAAAH,EAAAmB,GAAAhB,EAAAyT,EAAAv7B,GAAA,SACA54C,EAAAugE,EAAA1kE,KAAAM,OACA+lE,EAAAjM,EAAA,SAAArd,GAAA,MAAA8d,GAAA9d,EAAA,GAAA9e,QAAApqB,GAAA1P,EAAA,EAEA,OADAA,GAAAi2D,EAAA,SAAArd,GAAA,MAAA8d,GAAA9d,GAAAtnC,IAAA5B,GAAAwyD,EAAAliE,IACAkiE,MAAAA,EAAAliE,IAAAA,GAGA,QAAAiiE,IAAAvB,EAAAH,EAAA4T,EAAAxgE,GACA,GAAA8tD,GAAA+R,GAAA9S,EAAAH,EAAAmB,GAAAhB,EAAAyT,EAAAxgE,GAAA,QAAArC,GACA,OAAA6wD,IAAAzB,EAAAH,EAAA4T,EAAA1S,GAGA,QAAAmT,IAAAlU,EAAAH,EAAAd,EAAA5xD,EAAA6B,GACAA,GAAA4wD,GAAAC,EACA,IAEA99C,GAFAy/C,EAAA,EAAAliE,EAAAugE,EAAA1kE,KAAAM,OACAg4E,EAAA3S,GAAAd,EAAAH,GAEA/+C,EAAAw/C,GAAAT,EAAAG,EAAA52B,IAAA7T,UACA,IAAAzU,EAAA,CACA,GAAAk/C,EAAAn+C,QAAAy/C,aAAA,CACA,GAAA8S,EACAA,GAAA3S,GAAAzB,EAAAH,EAAA4T,EAAAzkE,GAAAwyD,EAAA4S,EAAA5S,MAAAliE,EAAA80E,EAAA90E,IAAA80E,EAEAryD,EAAA,GAAAm4C,GAAA6E,EAAAyC,EACA,IAEA6S,GAAAC,EAFAC,EAAAf,GAAAxT,EAAAj+C,EAAA,OAAA89C,EAAA4T,GAAAjyD,KACAlT,EAAAimE,EAAApnE,EAAA,GAAA,EACAosD,EAAAgb,EAAApnE,CACA,GAAA,CAIA,GAHAknE,EAAA9a,EACA+a,EAAAvyD,EACAA,EAAAk/C,GAAAjB,EAAAH,EAAA99C,EAAAzT,GACA,MAAAyT,GAAAA,EAAAm2B,GAAAspB,GAAAliE,IAAA,UAAAyiB,EAAAo4C,OAAAp4C,EAAAm2B,GAAA,EAAAn2B,EAAAm2B,IAAA,CACAn2B,EAAAuyD,CACA,OAEA/a,EAAAia,GAAAxT,EAAAj+C,EAAA,OAAA89C,EAAA4T,GAAAjyD,KAAArU,QACAmB,EAAA,GAAAirD,EAAA,GAAAr0D,KAAA0yB,IAAA2hC,IAAAr0D,KAAA0yB,IAAAy8C,GACA,IAAAnvE,KAAA0yB,IAAA2hC,GAAAr0D,KAAA0yB,IAAAy8C,GAAA,CACA,GAAA9a,EAAA,GAAA8a,EAAA,EAAA,KAAA,IAAAz5E,OAAA,gDACAmnB,GAAAuyD,OAEA,CACA,GAAAp8B,GAAAqd,EAAA,SAAArd,GACA,GAAA/Q,GAAA2rC,GAAA9S,EAAAH,EAAAmB,GAAAhB,EAAAyT,EAAAv7B,GAAA,OACA,OAAA/Q,GAAAv2B,IAAA5B,GAEA1P,EAAA4F,KAAAkvD,IAAAlc,EAAA54C,IACA,KAEA6nC,EAAA/N,QAAApqB,KACAm4B,EAAA3lB,KAAArU,KACAg6B,EAAAxP,MAAAxqB,IACAA,EAAAg6B,EAAA3lB,KAAA2lB,EAAAxP,MAAAxqB,IACAq0D,EAAAliE,EACA44C,GAAAod,EAAAuK,EAAA1kE,KAAA+8C,EAAA,GACAn2B,EAAA,GAAAm4C,GAAA6E,EAAA7mB,EAAAA,GAAA54C,EAAA,SAAA,SAEA,GAAA8zE,GAAAI,GAAAxT,EAAAj+C,EAAA,OAAA89C,EAAA4T,EAGA,QAFAzkE,EAAAokE,EAAAxiE,KAAAwiE,EAAAh6C,OAAApqB,KAAA+S,EAAAgyD,SAAA,GACAhyD,EAAAiyD,KAAA7mE,EAAAimE,EAAA5xD,MAAA,EAAArU,EAAAimE,EAAAz7C,MAAA,EAAA,EACA5V,EAKA,QAAAyyD,IAAA50E,GACA,GAAA,MAAAA,EAAAy4D,iBAAA,MAAAz4D,GAAAy4D,gBACA,IAAA,MAAAoc,GAAA,CACAA,GAAAthB,EAAA,MAGA,KAAA,GAAA92D,GAAA,EAAAA,EAAA,KAAAA,EACAo4E,GAAAp5E,YAAAV,SAAA2G,eAAA,MACAmzE,GAAAp5E,YAAA83D,EAAA,MAEAshB,IAAAp5E,YAAAV,SAAA2G,eAAA,MAEA4xD,EAAAtzD,EAAAo2D,QAAAye,GACA,IAAAjuE,GAAAiuE,GAAAxqD,aAAA,EAGA,OAFAzjB,GAAA,IAAA5G,EAAAy4D,iBAAA7xD,GACAysD,EAAArzD,EAAAo2D,SACAxvD,GAAA,EAIA,QAAAkrE,IAAA9xE,GACA,GAAA,MAAAA,EAAAw4D,gBAAA,MAAAx4D,GAAAw4D,eACA,IAAArH,GAAAoC,EAAA,OAAA,cACA+V,EAAA/V,EAAA,OAAApC,GACAmC,GAAAtzD,EAAAo2D,QAAAkT,EACA,IAAA2G,GAAA9e,EAAAxvC,wBAAAhd,GAAAsrE,EAAAl4C,MAAAk4C,EAAAruD,MAAA,EAEA,OADAjd,GAAA,IAAA3E,EAAAw4D,gBAAA7zD,GACAA,GAAA,GAKA,QAAAisE,IAAAxQ,GAGA,IAAA,GAFAhlE,GAAAglE,EAAApgE,QAAA4hB,KAAAjd,KACA8pE,EAAArzE,EAAAy7D,QAAApqC,WACA5rB,EAAAzF,EAAAy7D,QAAAt1D,WAAA9E,EAAA,EAAAoE,EAAAA,EAAAA,EAAAsN,cAAA1R,EACAmlB,EAAAw+C,EAAAn+C,QAAA40C,QAAAp6D,IAAAoE,EAAAi0E,WAAAj0E,EAAA4rB,WAAAgiD,EACA9pE,EAAAy7D,EAAAn+C,QAAA40C,QAAAp6D,IAAAoE,EAAAo3B,WAEA,QAAAi2C,SAAA6G,GAAA35E,GACA+yE,iBAAA/yE,EAAAy7D,QAAAzsC,YACAqkD,WAAA7sD,EACA8sD,YAAA/pE,EACAyqE,aAAAh0E,EAAAihD,QAAApkB,aAMA,QAAA88C,IAAA/0E,GACA,MAAAA,GAAA+2D,SAAAp1C,wBAAAC,KAAA5hB,EAAAy2D,MAAA90C,wBAAAC,KAMA,QAAAinD,IAAAzI,GACA,GAAAxmD,GAAAg7D,GAAAxU,EAAApgE,SAAAkwE,EAAA9P,EAAAn+C,QAAAy/C,aACAsT,EAAA9E,GAAA5qE,KAAAC,IAAA,EAAA66D,EAAApgE,QAAA+2D,SAAA9+B,YAAA65C,GAAA1R,EAAApgE,SAAA,EACA,OAAA,UAAAkuD,GACA,GAAA2R,GAAAO,EAAA52B,IAAA0kB,GAAA,MAAA,EAEA,IAAA+mB,GAAA,CACA,IAAA/mB,EAAAnmB,QAAA,IAAA,GAAAtrC,GAAA,EAAAA,EAAAyxD,EAAAnmB,QAAAlsC,OAAAY,IACAyxD,EAAAnmB,QAAAtrC,GAAAmK,SAAAquE,GAAA/mB,EAAAnmB,QAAAtrC,GAAAmK,OAGA,OAAAspE,GACA+E,GAAA3vE,KAAA4vE,KAAAhnB,EAAA3yD,KAAAM,OAAAm5E,IAAA,GAAAp7D,EAEAq7D,EAAAr7D,GAIA,QAAAu7D,IAAA/U,GACA,GAAA52B,GAAA42B,EAAA52B,IAAA4rC,EAAAvM,GAAAzI,EACA52B,GAAAgwB,KAAA,SAAAtL,GACA,GAAA4a,GAAAsM,EAAAlnB,EACA4a,IAAA5a,EAAAtnD,QAAA8yD,EAAAxL,EAAA4a,KASA,QAAAuM,IAAAjV,EAAA/iE,EAAAi4E,EAAAC,GACA,GAAAv1E,GAAAogE,EAAApgE,OACA,KAAAs1E,GAAA,QAAAhS,GAAAjmE,GAAAoB,aAAA,kBAAA,MAAA,KAEA,IAAA8O,GAAA6B,EAAAomE,EAAAx1E,EAAAs2D,UAAA30C,uBAEA,KAAApU,EAAAlQ,EAAAugB,QAAA43D,EAAA5zD,KAAAxS,EAAA/R,EAAAwgB,QAAA23D,EAAAxkE,IACA,MAAA3T,GAAA,MAAA,MACA,GAAA6wD,GAAAslB,EAAAa,GAAAjU,EAAA7yD,EAAA6B,EACA,IAAAmmE,GAAA,GAAA/B,EAAAY,OAAAlmB,EAAAkL,EAAAgH,EAAA52B,IAAAgqC,EAAAtlB,MAAA3yD,MAAAM,QAAA23E,EAAAl7B,GAAA,CACA,GAAAm9B,GAAAzhB,EAAA9F,EAAAA,EAAAryD,OAAAukE,EAAAn+C,QAAAgyC,SAAA/F,EAAAryD,MACA23E,GAAAlZ,EAAAkZ,EAAAtlB,KAAA5oD,KAAAC,IAAA,EAAAD,KAAAs0B,OAAArsB,EAAAoiE,GAAAvP,EAAApgE,SAAA4hB,MAAAkwD,GAAA1R,EAAApgE,UAAAy1E,IAEA,MAAAjC,GAKA,QAAA7C,IAAAvQ,EAAAv/D,GACA,GAAAA,GAAAu/D,EAAApgE,QAAAu3D,OAAA,MAAA,KAEA,IADA12D,GAAAu/D,EAAApgE,QAAAs3D,SACAz2D,EAAA,EAAA,MAAA,KAEA,KAAA,GADAyc,GAAA8iD,EAAApgE,QAAAsd,KACA7gB,EAAA,EAAAA,EAAA6gB,EAAAzhB,OAAAY,IAEA,GADAoE,GAAAyc,EAAA7gB,GAAA23C,KACAvzC,EAAA,EAAA,MAAApE,GAIA,QAAAi5E,IAAAtV,GACAA,EAAApgE,QAAAkU,MAAAyhE,cAAAvV,EAAApgE,QAAAkU,MAAA0hE,oBAGA,QAAAA,IAAAxV,EAAAyV,GAKA,IAAA,GAJArsC,GAAA42B,EAAA52B,IAAAnuB,KACAy6D,EAAAz6D,EAAA06D,QAAAh7E,SAAA4F,yBACAq1E,EAAA36D,EAAA+nC,UAAAroD,SAAA4F,yBAEAlE,EAAA,EAAAA,EAAA+sC,EAAAysC,IAAAC,OAAAr6E,OAAAY,IACA,GAAAo5E,KAAA,GAAAp5E,GAAA+sC,EAAAysC,IAAAE,UAAA,CACA,GAAAC,GAAA5sC,EAAAysC,IAAAC,OAAAz5E,EACA,MAAA25E,EAAA9mD,OAAA4+B,MAAAkS,EAAApgE,QAAAu3D,QAAA6e,EAAAvhD,KAAAq5B,KAAAkS,EAAApgE,QAAAs3D,UAAA,CACA,GAAAyH,GAAAqX,EAAA9uE,SACAy3D,GAAAqB,EAAAn+C,QAAAo0D,0BACAC,GAAAlW,EAAAgW,EAAA56E,KAAAs6E,GACA/W,GACAwX,GAAAnW,EAAAgW,EAAAJ,IAEA,MAAA36D,GAIA,QAAAi7D,IAAAlW,EAAA5kE,EAAAukC,GACA,GAAA5d,GAAAyxD,GAAAxT,EAAA5kE,EAAA,MAAA,KAAA,MAAA4kE,EAAAn+C,QAAAgwD,2BAEAj1B,EAAAjd,EAAAtkC,YAAA83D,EAAA,MAAA,IAAA,qBAKA,IAJAvW,EAAAz9C,MAAAqiB,KAAAO,EAAAP,KAAA,KACAo7B,EAAAz9C,MAAAyR,IAAAmR,EAAAnR,IAAA,KACAgsC,EAAAz9C,MAAAqH,OAAAtB,KAAAC,IAAA,EAAA4c,EAAAqX,OAAArX,EAAAnR,KAAAovD,EAAAn+C,QAAAu0D,aAAA,KAEAr0D,EAAA6xD,MAAA,CAEA,GAAAyC,GAAA12C,EAAAtkC,YAAA83D,EAAA,MAAA,IAAA,gDACAkjB,GAAAl3E,MAAAS,QAAA,GACAy2E,EAAAl3E,MAAAqiB,KAAAO,EAAA6xD,MAAApyD,KAAA,KACA60D,EAAAl3E,MAAAyR,IAAAmR,EAAA6xD,MAAAhjE,IAAA,KACAylE,EAAAl3E,MAAAqH,OAAA,KAAAub,EAAA6xD,MAAAx6C,OAAArX,EAAA6xD,MAAAhjE,KAAA,MAKA,QAAAulE,IAAAnW,EAAAgW,EAAAr2C,GAMA,QAAAx9B,GAAAqf,EAAA5Q,EAAArM,EAAA60B,GACAxoB,EAAA,IAAAA,EAAA,GACAA,EAAA1L,KAAAs0B,MAAA5oB,GACAwoB,EAAAl0B,KAAAs0B,MAAAJ,GACA0rB,EAAAzpD,YAAA83D,EAAA,MAAA,KAAA,sBAAA,6BAAA3xC,EAAA,0CAAA5Q,EAAA,eAAA,MAAArM,EAAA+xE,EAAA90D,EAAAjd,GAAA,8CAAA60B,EAAAxoB,GAAA,OAGA,QAAA2lE,GAAAzoB,EAAA0oB,EAAAC,GAIA,QAAArD,GAAAl7B,EAAAm4B,GACA,MAAAkD,IAAAvT,EAAA9F,EAAApM,EAAA5V,GAAA,MAAA2nB,EAAAwQ,GAJA,GAEAhxE,GAAAC,EAFAugE,EAAA7G,EAAA5vB,EAAA0kB,GACA4oB,EAAA7W,EAAA1kE,KAAAM,MA+BA,OAzBAwkE,IAAAK,GAAAT,EAAAz2B,EAAA7T,WAAAihD,GAAA,EAAA,MAAAC,EAAAC,EAAAD,EAAA,SAAAvnD,EAAAuF,EAAAnmB,GACA,GAAAqoE,GAAAn1D,EAAAmW,EAAAi/C,EAAAxD,EAAAlkD,EAAA,OACA,IAAAA,GAAAuF,EACAkiD,EAAAC,EACAp1D,EAAAmW,EAAAi/C,EAAAp1D,SACA,CAEA,GADAm1D,EAAAvD,EAAA3+C,EAAA,EAAA,SACA,OAAAnmB,EAAA,CAAA,GAAAuoE,GAAAD,CAAAA,GAAAD,EAAAA,EAAAE,EACAr1D,EAAAo1D,EAAAp1D,KACAmW,EAAAg/C,EAAAh/C,MAEA,MAAA6+C,GAAA,GAAAtnD,IAAA1N,EAAAs1D,GACAH,EAAA/lE,IAAAgmE,EAAAhmE,IAAA,IACAzO,EAAAqf,EAAAo1D,EAAAhmE,IAAA,KAAAgmE,EAAAx9C,QACA5X,EAAAs1D,EACAF,EAAAx9C,OAAAu9C,EAAA/lE,KAAAzO,EAAAqf,EAAAo1D,EAAAx9C,OAAA,KAAAu9C,EAAA/lE,MAEA,MAAA6lE,GAAAhiD,GAAAiiD,IAAA/+C,EAAA2+C,KACAj3E,GAAAu3E,EAAAhmE,IAAAvR,EAAAuR,KAAAgmE,EAAAhmE,KAAAvR,EAAAuR,KAAAgmE,EAAAp1D,KAAAniB,EAAAmiB,QACAniB,EAAAu3E,KACAt3E,GAAAq3E,EAAAv9C,OAAA95B,EAAA85B,QAAAu9C,EAAAv9C,QAAA95B,EAAA85B,QAAAu9C,EAAAh/C,MAAAr4B,EAAAq4B,SACAr4B,EAAAq3E,GACAn1D,EAAAs1D,EAAA,IAAAt1D,EAAAs1D,GACA30E,EAAAqf,EAAAm1D,EAAA/lE,IAAA+mB,EAAAnW,EAAAm1D,EAAAv9C,WAEA/5B,MAAAA,EAAAC,IAAAA,GA7CA,GAAAM,GAAAogE,EAAApgE,QAAAwpC,EAAA42B,EAAA52B,IACA0b,EAAAnqD,SAAA4F,yBACAmhB,EAAA6tD,GAAAvP,EAAApgE,SAAAk3E,EAAAp1D,EAAAF,KACA80D,EAAApxE,KAAAC,IAAAvF,EAAA02D,WAAAoZ,GAAA1P,GAAApgE,EAAAy2D,MAAAqe,YAAAhzD,EAAAiW,MA6CAo/C,EAAAf,EAAA9mD,OAAA8nD,EAAAhB,EAAAvhD,IACA,IAAAsiD,EAAAjpB,MAAAkpB,EAAAlpB,KACAyoB,EAAAQ,EAAAjpB,KAAAipB,EAAA7+B,GAAA8+B,EAAA9+B,QACA,CACA,GAAA++B,GAAAje,EAAA5vB,EAAA2tC,EAAAjpB,MAAAopB,EAAAle,EAAA5vB,EAAA4tC,EAAAlpB,MACAqpB,EAAAnY,GAAAiY,IAAAjY,GAAAkY,GACAE,EAAAb,EAAAQ,EAAAjpB,KAAAipB,EAAA7+B,GAAAi/B,EAAAF,EAAA97E,KAAAM,OAAA,EAAA,MAAA6D,IACA+3E,EAAAd,EAAAS,EAAAlpB,KAAAqpB,EAAA,EAAA,KAAAH,EAAA9+B,IAAA74C,KACA83E,KACAC,EAAAxmE,IAAAymE,EAAAzmE,IAAA,GACAzO,EAAAi1E,EAAAz/C,MAAAy/C,EAAAxmE,IAAA,KAAAwmE,EAAAh+C,QACAj3B,EAAA20E,EAAAO,EAAAzmE,IAAAymE,EAAA71D,KAAA61D,EAAAj+C,SAEAj3B,EAAAi1E,EAAAz/C,MAAAy/C,EAAAxmE,IAAAymE,EAAA71D,KAAA41D,EAAAz/C,MAAAy/C,EAAAh+C,SAGAg+C,EAAAh+C,OAAAi+C,EAAAzmE,KACAzO,EAAA20E,EAAAM,EAAAh+C,OAAA,KAAAi+C,EAAAzmE,KAGA+uB,EAAAtkC,YAAAypD,GAIA,QAAAwyB,IAAAtX,GACA,GAAAA,EAAA/0D,MAAAssE,QAAA,CACA,GAAA33E,GAAAogE,EAAApgE,OACAu1B,eAAAv1B,EAAA43E,QACA,IAAAh5D,IAAA,CACA5e,GAAAm2D,UAAA52D,MAAAihB,WAAA,GACA4/C,EAAAn+C,QAAA41D,gBAAA,EACA73E,EAAA43E,QAAApiD,YAAA,WAAA,MAAAx1B,GAAAm2D,UAAA52D,MAAAihB,YAAA5B,GAAAA,GAAA,GAAA,UACAwhD,EAAAn+C,QAAA41D,iBACAzX,EAAAn+C,QAAA41D,gBAAA,IACA73E,EAAAm2D,UAAA52D,MAAAihB,WAAA,WAGA,QAAAs3D,IAAA1X,GACAA,EAAA/0D,MAAAssE,UAAAvX,EAAApgE,QAAAkU,MAAAT,QAAA2uC,GAAAge,IAGA,QAAA2X,IAAA3X,GACAA,EAAA/0D,MAAA2sE,mBAAA,EACA5xE,WAAA,WAAAg6D,EAAA/0D,MAAA2sE,oBACA5X,EAAA/0D,MAAA2sE,mBAAA,EACA71B,GAAAie,KACA,KAGA,QAAAhe,IAAAge,EAAA/iE,GACA+iE,EAAA/0D,MAAA2sE,oBAAA5X,EAAA/0D,MAAA2sE,mBAAA,GAEA,YAAA5X,EAAAn+C,QAAA07C,WACAyC,EAAA/0D,MAAAssE,UACAnV,GAAApC,EAAA,QAAAA,EAAA/iE,GACA+iE,EAAA/0D,MAAAssE,SAAA,EACA5yD,EAAAq7C,EAAApgE,QAAAq8C,QAAA,sBAIA+jB,EAAA0C,OAAA1C,EAAApgE,QAAAk5D,mBAAAkH,EAAA52B,IAAAysC,MACA7V,EAAApgE,QAAAkU,MAAAa,QACAmiD,IAAA9wD,WAAA,WAAA,MAAAg6D,GAAApgE,QAAAkU,MAAAa,OAAA,IAAA,KAEAqrD,EAAApgE,QAAAkU,MAAA+jE,iBAEAP,GAAAtX,IAEA,QAAAje,IAAAie,EAAA/iE,GACA+iE,EAAA/0D,MAAA2sE,oBAEA5X,EAAA/0D,MAAAssE,UACAnV,GAAApC,EAAA,OAAAA,EAAA/iE,GACA+iE,EAAA/0D,MAAAssE,SAAA,EACAO,GAAA9X,EAAApgE,QAAAq8C,QAAA,uBAEA9mB,cAAA6qC,EAAApgE,QAAA43E,SACAxxE,WAAA,WAAAg6D,EAAA/0D,MAAAssE,UAAAvX,EAAApgE,QAAA4K,OAAA,IAAA,MAKA,QAAAutE,IAAA/X,GACA,GAAApgE,GAAAogE,EAAApgE,QAAAsd,EAAAtd,EAAAsd,IACA,IAAAtd,EAAAu4D,cAAAv4D,EAAA62D,QAAAt1D,YAAA6+D,EAAAn+C,QAAAgsD,YAAA,CAGA,IAAA,GAFAmK,GAAArD,GAAA/0E,GAAAA,EAAA+2D,SAAAz0C,WAAA89C,EAAA52B,IAAAlnB,WACA+1D,EAAAr4E,EAAA62D,QAAAzsC,YAAAxI,EAAAw2D,EAAA,KACA37E,EAAA,EAAAA,EAAA6gB,EAAAzhB,OAAAY,IAAA,IAAA6gB,EAAA7gB,GAAAyJ,OAAA,CACAk6D,EAAAn+C,QAAAgsD,cACA3wD,EAAA7gB,GAAAqxE,SACAxwD,EAAA7gB,GAAAqxE,OAAAvuE,MAAAqiB,KAAAA,GACAtE,EAAA7gB,GAAAsxE,mBACAzwD,EAAA7gB,GAAAsxE,iBAAAxuE,MAAAqiB,KAAAA,GAEA,IAAA02D,GAAAh7D,EAAA7gB,GAAAkyE,SACA,IAAA2J,EAAA,IAAA,GAAAp5E,GAAA,EAAAA,EAAAo5E,EAAAz8E,OAAAqD,IACAo5E,EAAAp5E,GAAAK,MAAAqiB,KAAAA,EAEAw+C,EAAAn+C,QAAAgsD,cACAjuE,EAAA62D,QAAAt3D,MAAAqiB,KAAAw2D,EAAAC,EAAA,OAMA,QAAAE,IAAAnY,GACA,IAAAA,EAAAn+C,QAAAosD,YAAA,OAAA,CACA,IAAA7kC,GAAA42B,EAAA52B,IAAAj9B,EAAA4tD,EAAAiG,EAAAn+C,QAAAunB,EAAAl9B,MAAAk9B,EAAA4K,KAAA,GAAAp0C,EAAAogE,EAAApgE,OACA,IAAAuM,EAAA1Q,QAAAmE,EAAAs4D,aAAA,CACA,GAAA37D,GAAAqD,EAAAo2D,QAAA36D,YAAA83D,EAAA,OAAAA,EAAA,MAAAhnD,IACA,gDACAisE,EAAA77E,EAAA4E,WAAA6oB,YAAAtI,EAAAnlB,EAAAytB,YAAAouD,CAOA,OANAx4E,GAAA82D,WAAAv3D,MAAAoF,MAAA,GACA3E,EAAAq4D,kBAAA/yD,KAAAC,IAAAizE,EAAAx4E,EAAA82D,WAAA1sC,YAAAtI,GAAA,EACA9hB,EAAAo4D,aAAAp4D,EAAAq4D,kBAAAv2C,EACA9hB,EAAAs4D,aAAAt4D,EAAAq4D,kBAAA9rD,EAAA1Q,QAAA,EACAmE,EAAA82D,WAAAv3D,MAAAoF,MAAA3E,EAAAo4D,aAAA,KACAqgB,GAAArY,IACA,EAEA,OAAA,EAKA,QAAAsY,IAAAtY,GAGA,IAAA,GAFApgE,GAAAogE,EAAApgE,QACA24E,EAAA34E,EAAAi2D,QAAAh6B,UACAx/B,EAAA,EAAAA,EAAAuD,EAAAsd,KAAAzhB,OAAAY,IAAA,CACA,GAAAuC,GAAAgB,EAAAsd,KAAA7gB,GAAAmK,EAAA,MACA,KAAA5H,EAAAkH,OAAA,CACA,GAAA8wD,IAAAC,GAAA,EAAA,CACA,GAAA+a,GAAAhzE,EAAAk1C,KAAAjY,UAAAj9B,EAAAk1C,KAAA7pB,YACAzjB,GAAAorE,EAAA2G,EACAA,EAAA3G,MACA,CACA,GAAAzqC,GAAAvoC,EAAAk1C,KAAAvyB,uBACA/a,GAAA2gC,EAAA/N,OAAA+N,EAAAv2B,IAEA,GAAA2oD,GAAA36D,EAAAkvD,KAAAtnD,OAAAA,CAEA,IADAA,EAAA,IAAAA,EAAAguE,GAAA50E,KACA25D,EAAA,MAAAA,GAAA,QACAD,EAAA16D,EAAAkvD,KAAAtnD,GACAgyE,GAAA55E,EAAAkvD,MACAlvD,EAAA0qE,MAAA,IAAA,GAAAxqE,GAAA,EAAAA,EAAAF,EAAA0qE,KAAA7tE,OAAAqD,IACA05E,GAAA55E,EAAA0qE,KAAAxqE,MAOA,QAAA05E,IAAA1qB,GACA,GAAAA,EAAAnmB,QAAA,IAAA,GAAAtrC,GAAA,EAAAA,EAAAyxD,EAAAnmB,QAAAlsC,SAAAY,EACAyxD,EAAAnmB,QAAAtrC,GAAAmK,OAAAsnD,EAAAnmB,QAAAtrC,GAAAy3C,KAAAx4C,WAAA2uB,aAMA,QAAAwuD,IAAA74E,EAAAwpC,EAAA9Q,GACA,GAAA1nB,GAAA0nB,GAAA,MAAAA,EAAA1nB,IAAA1L,KAAAC,IAAA,EAAAmzB,EAAA1nB,KAAAhR,EAAA+2D,SAAA10C,SACArR,GAAA1L,KAAAy+B,MAAA/yB,EAAAy+D,GAAAzvE,GACA,IAAAw5B,GAAAd,GAAA,MAAAA,EAAAc,OAAAd,EAAAc,OAAAxoB,EAAAhR,EAAAq8C,QAAA3kB,aAEApI,EAAAwqC,EAAAtwB,EAAAx4B,GAAA6jB,EAAAilC,EAAAtwB,EAAAhQ,EAGA,IAAAd,GAAAA,EAAAogD,OAAA,CACA,GAAAC,GAAArgD,EAAAogD,OAAAxpD,KAAA4+B,KAAA8qB,EAAAtgD,EAAAogD,OAAAjkD,GAAAq5B,IACA6qB,GAAAzpD,GACAA,EAAAypD,EACAlkD,EAAAilC,EAAAtwB,EAAAw2B,GAAA5G,EAAA5vB,EAAAuvC,IAAA/4E,EAAAq8C,QAAA3kB,eACApyB,KAAAkvD,IAAAwkB,EAAAxvC,EAAAo2B,aAAA/qC,IACAvF,EAAAwqC,EAAAtwB,EAAAw2B,GAAA5G,EAAA5vB,EAAAwvC,IAAAh5E,EAAAq8C,QAAA3kB,cACA7C,EAAAmkD,GAGA,OAAA1pD,KAAAA,EAAAuF,GAAAvvB,KAAAC,IAAAsvB,EAAAvF,EAAA,IAKA,QAAA2pD,IAAA7Y,EAAAh7C,GACA9f,KAAA0yB,IAAAooC,EAAA52B,IAAAnnB,UAAA+C,GAAA,IACAg7C,EAAA52B,IAAAnnB,UAAA+C,EACA+xC,IAAA+hB,GAAA9Y,GAAApvD,IAAAoU,IACAg7C,EAAApgE,QAAA+2D,SAAA10C,WAAA+C,IAAAg7C,EAAApgE,QAAA+2D,SAAA10C,UAAA+C,GACAg7C,EAAApgE,QAAAm5E,WAAAF,aAAA7zD,GACA+xC,IAAA+hB,GAAA9Y,GACAgZ,GAAAhZ,EAAA,MAIA,QAAAiZ,IAAAjZ,EAAAh7C,EAAAk0D,IACAA,EAAAl0D,GAAAg7C,EAAA52B,IAAAlnB,WAAAhd,KAAA0yB,IAAAooC,EAAA52B,IAAAlnB,WAAA8C,GAAA,KACAA,EAAA9f,KAAAkvD,IAAApvC,EAAAg7C,EAAApgE,QAAA+2D,SAAAwiB,YAAAnZ,EAAApgE,QAAA+2D,SAAA9+B,aACAmoC,EAAA52B,IAAAlnB,WAAA8C,EACA+yD,GAAA/X,GACAA,EAAApgE,QAAA+2D,SAAAz0C,YAAA8C,IAAAg7C,EAAApgE,QAAA+2D,SAAAz0C,WAAA8C,GACAg7C,EAAApgE,QAAAm5E,WAAAE,cAAAj0D,IAyBA,QAAAo0D,IAAAn8E,GACA,GAAAo8E,GAAAp8E,EAAAq8E,YAAAC,EAAAt8E,EAAAu8E,WAIA,OAHA,OAAAH,GAAAp8E,EAAA2f,QAAA3f,EAAAw8E,MAAAx8E,EAAAy8E,kBAAAL,EAAAp8E,EAAA2f,QACA,MAAA28D,GAAAt8E,EAAA2f,QAAA3f,EAAAw8E,MAAAx8E,EAAA08E,cAAAJ,EAAAt8E,EAAA2f,OACA,MAAA28D,IAAAA,EAAAt8E,EAAA28E,aACAzsE,EAAAksE,EAAArqE,EAAAuqE,GAEA,QAAAM,IAAA58E,GACA,GAAA6pD,GAAAsyB,GAAAn8E,EAGA,OAFA6pD,GAAA35C,GAAA2sE,GACAhzB,EAAA93C,GAAA8qE,GACAhzB,EAGA,QAAAizB,IAAA/Z,EAAA/iE,GACA,GAAA6pD,GAAAsyB,GAAAn8E,GAAAo8E,EAAAvyB,EAAA35C,EAAAosE,EAAAzyB,EAAA93C,EAEApP,EAAAogE,EAAApgE,QAAAk6B,EAAAl6B,EAAA+2D,SAEAqjB,EAAAlgD,EAAAq/C,YAAAr/C,EAAAjC,YACAoiD,EAAAngD,EAAAzC,aAAAyC,EAAAxC,YACA,IAAA+hD,GAAAW,GAAAT,GAAAU,EAAA,CAMA,GAAAV,GAAAlW,IAAAvM,GACA6C,EAAA,IAAA,GAAA/6D,GAAA3B,EAAAgW,OAAAiK,EAAAtd,EAAAsd,KAAAte,GAAAk7B,EAAAl7B,EAAAA,EAAAtD,WACA,IAAA,GAAAe,GAAA,EAAAA,EAAA6gB,EAAAzhB,OAAAY,IACA,GAAA6gB,EAAA7gB,GAAAy3C,MAAAl1C,EAAA,CACAohE,EAAApgE,QAAAs6E,mBAAAt7E,CACA,MAAA+6D,GAYA,GAAA0f,IAAAtiB,KAAAojB,IAAA,MAAAL,GAWA,MAVAP,IAAAU,GACApB,GAAA7Y,EAAA96D,KAAAC,IAAA,EAAAD,KAAAkvD,IAAAt6B,EAAA7X,UAAAs3D,EAAAO,GAAAhgD,EAAAzC,aAAAyC,EAAAxC,gBACA2hD,GAAAjZ,EAAA96D,KAAAC,IAAA,EAAAD,KAAAkvD,IAAAt6B,EAAA5X,WAAAm3D,EAAAS,GAAAhgD,EAAAq/C,YAAAr/C,EAAAjC,iBAKA0hD,GAAAA,GAAAU,IACAlX,GAAA9lE,QACA2C,EAAAg5D,YAAA,KAMA,IAAA2gB,GAAA,MAAAO,GAAA,CACA,GAAAM,GAAAb,EAAAO,GACAlpE,EAAAovD,EAAA52B,IAAAnnB,UAAA2vD,EAAAhhE,EAAAhR,EAAAq8C,QAAA3kB,YACA8iD,GAAA,EAAAxpE,EAAA1L,KAAAC,IAAA,EAAAyL,EAAAwpE,EAAA,IACAxI,EAAA1sE,KAAAkvD,IAAA4L,EAAA52B,IAAA5iC,OAAAorE,EAAAwI,EAAA,IACAtB,GAAA9Y,GAAApvD,IAAAA,EAAAwoB,OAAAw4C,IAGAyI,GAAA,KACA,MAAAz6E,EAAAg5D,aACAh5D,EAAAg5D,YAAA9+B,EAAA5X,WAAAtiB,EAAAi5D,YAAA/+B,EAAA7X,UACAriB,EAAA84D,QAAA2gB,EAAAz5E,EAAA+4D,QAAA4gB,EACAvzE,WAAA,WACA,GAAA,MAAApG,EAAAg5D,YAAA,CACA,GAAA0hB,GAAAxgD,EAAA5X,WAAAtiB,EAAAg5D,YACA2hB,EAAAzgD,EAAA7X,UAAAriB,EAAAi5D,YACA2hB,EAAAD,GAAA36E,EAAA+4D,SAAA4hB,EAAA36E,EAAA+4D,SACA2hB,GAAA16E,EAAA84D,SAAA4hB,EAAA16E,EAAA84D,OACA94D,GAAAg5D,YAAAh5D,EAAAi5D,YAAA,KACA2hB,IACAV,IAAAA,GAAAO,GAAAG,IAAAH,GAAA,KACAA,MACA,OAEAz6E,EAAA84D,SAAA2gB,EAAAz5E,EAAA+4D,SAAA4gB,KASA,QAAAkB,IAAAza,GACA,GAAAhlE,GAAAglE,EAAApgE,QAAAq4E,EAAAj9E,EAAAy7D,QAAAzsC,YACA0wD,EAAAx1E,KAAAs0B,MAAAwmC,EAAA52B,IAAA5iC,OAAA8oE,GAAAtP,EAAApgE,SACA,QACA03B,aAAAt8B,EAAA27D,SAAAr/B,aACAqjD,WAAA3/E,EAAAihD,QAAA3kB,aACA6hD,YAAAn+E,EAAA27D,SAAAwiB,YAAAthD,YAAA78B,EAAA27D,SAAA9+B,YACA+iD,UAAA5/E,EAAAihD,QAAApkB,YACAgjD,QAAA7a,EAAAn+C,QAAAgsD,YAAAoK,EAAA,EACA6C,UAAAJ,EACArjD,aAAAqjD,EAAAjL,GAAAzP,GAAAhlE,EAAA68D,UACAD,eAAA58D,EAAA48D,eACA0W,YAAA2J,GA4GA,QAAA8C,IAAA/a,EAAAhK,GACAA,IAAAA,EAAAykB,GAAAza,GACA,IAAAgb,GAAAhb,EAAApgE,QAAAk4D,SAAAmjB,EAAAjb,EAAApgE,QAAAi4D,SACAqjB,IAAAlb,EAAAhK,EACA,KAAA,GAAA35D,GAAA,EAAAA,EAAA,GAAA2+E,GAAAhb,EAAApgE,QAAAk4D,UAAAmjB,GAAAjb,EAAApgE,QAAAi4D,UAAAx7D,IACA2+E,GAAAhb,EAAApgE,QAAAk4D,UAAAkI,EAAAn+C,QAAAy/C,cACAgX,GAAAtY,GACAkb,GAAAlb,EAAAya,GAAAza,IACAgb,EAAAhb,EAAApgE,QAAAk4D,SAAAmjB,EAAAjb,EAAApgE,QAAAi4D,UAMA,QAAAqjB,IAAAlb,EAAAhK,GACA,GAAAh7D,GAAAglE,EAAApgE,QACAu7E,EAAAngF,EAAA+9E,WAAA9zB,OAAA+Q,EAEAh7D,GAAAq7D,MAAAl3D,MAAAs4B,cAAAz8B,EAAA88D,SAAAqjB,EAAAxjD,OAAA,KACA38B,EAAAq7D,MAAAl3D,MAAAi8E,eAAApgF,EAAA68D,UAAAsjB,EAAA/hD,QAAA,KACAp+B,EAAAu7D,aAAAp3D,MAAAk8E,aAAAF,EAAA/hD,OAAA,uBAEA+hD,EAAAxjD,OAAAwjD,EAAA/hD,QACAp+B,EAAA26D,gBAAAx2D,MAAAS,QAAA,QACA5E,EAAA26D,gBAAAx2D,MAAAqH,OAAA20E,EAAA/hD,OAAA,KACAp+B,EAAA26D,gBAAAx2D,MAAAoF,MAAA42E,EAAAxjD,MAAA,MACA38B,EAAA26D,gBAAAx2D,MAAAS,QAAA,GACAu7E,EAAA/hD,QAAA4mC,EAAAn+C,QAAAy5D,4BAAAtb,EAAAn+C,QAAAgsD,aACA7yE,EAAA46D,aAAAz2D,MAAAS,QAAA,QACA5E,EAAA46D,aAAAz2D,MAAAqH,OAAA20E,EAAA/hD,OAAA,KACAp+B,EAAA46D,aAAAz2D,MAAAoF,MAAAyxD,EAAAsY,YAAA,MACAtzE,EAAA46D,aAAAz2D,MAAAS,QAAA,GAKA,QAAA27E,IAAAvb,GACAA,EAAApgE,QAAAm5E,aACA/Y,EAAApgE,QAAAm5E,WAAAj+C,QACAklC,EAAApgE,QAAAm5E,WAAAp0D,UACAmzD,GAAA9X,EAAApgE,QAAAq8C,QAAA+jB,EAAApgE,QAAAm5E,WAAAp0D,WAGAq7C,EAAApgE,QAAAm5E,WAAA,GAAAyC,IAAAxb,EAAAn+C,QAAA45D,gBAAA,SAAA3nC,GACAksB,EAAApgE,QAAAq8C,QAAAn9B,aAAAg1B,EAAAksB,EAAApgE,QAAA+1D,iBAEAn3C,GAAAs1B,EAAA,YAAA,WACAksB,EAAA/0D,MAAAssE,SAAAvxE,WAAA,WAAA,MAAAg6D,GAAApgE,QAAAkU,MAAAT,SAAA,KAEAygC,EAAApmC,aAAA,iBAAA,SACA,SAAAqU,EAAA03D,GACA,cAAAA,EAAAR,GAAAjZ,EAAAj+C,GACA82D,GAAA7Y,EAAAj+C,IACAi+C,GACAA,EAAApgE,QAAAm5E,WAAAp0D,UACAA,EAAAq7C,EAAApgE,QAAAq8C,QAAA+jB,EAAApgE,QAAAm5E,WAAAp0D,UAOA,QAAA+2D,IAAA1b,EAAA6P,GACA,IAAAxN,GAAArC,EAAA,wBAAA,CAEA,GAAApgE,GAAAogE,EAAApgE,QAAAunC,EAAAvnC,EAAAy2D,MAAA90C,wBAAAtJ,EAAA,IAGA,IAFA43D,EAAAj/D,IAAAu2B,EAAAv2B,IAAA,EAAAqH,GAAA,EACA43D,EAAAz2C,OAAA+N,EAAAv2B,KAAA/V,OAAA8gF,aAAAhhF,SAAA8V,gBAAA6mB,gBAAArf,GAAA,GACA,MAAAA,IAAA2jE,GAAA,CACA,GAAAC,GAAA1oB,EAAA,MAAA,IAAA,KAAA,uDAAA0c,EAAAj/D,IAAAhR,EAAA43D,WAAA6X,GAAArP,EAAApgE,UAAA,0CAAAiwE,EAAAz2C,OAAAy2C,EAAAj/D,IAAA6+D,GAAAzP,GAAApgE,EAAAi4D,WAAA,uCAAAgY,EAAA,KAAA,cAAA3qE,KAAAC,IAAA,EAAA0qE,EAAAl4C,MAAAk4C,EAAAruD,MAAA,MACAw+C,GAAApgE,QAAAs2D,UAAA76D,YAAAwgF,GACAA,EAAAC,eAAA7jE,GACA+nD,EAAApgE,QAAAs2D,UAAA36D,YAAAsgF,KAOA,QAAAE,IAAA/b,EAAAj+C,EAAAziB,EAAAmiB,GACA,MAAAA,IAAAA,EAAA,EAEA,KAAA,GADAouD,GACA/oC,EAAA,EAAAA,EAAA,EAAAA,IAAA,CACA,GAAAk1C,IAAA,EACA5I,EAAAI,GAAAxT,EAAAj+C,GACAk6D,EAAA38E,GAAAA,GAAAyiB,EAAAyxD,GAAAxT,EAAA1gE,GAAA8zE,CACAvD,IAAAruD,KAAAtc,KAAAkvD,IAAAgf,EAAA5xD,KAAAy6D,EAAAz6D,MACA5Q,IAAA1L,KAAAkvD,IAAAgf,EAAAxiE,IAAAqrE,EAAArrE,KAAA6Q,EACAkW,MAAAzyB,KAAAC,IAAAiuE,EAAA5xD,KAAAy6D,EAAAz6D,MACA4X,OAAAl0B,KAAAC,IAAAiuE,EAAAh6C,OAAA6iD,EAAA7iD,QAAA3X,EACA,IAAAy6D,GAAAC,GAAAnc,EAAA6P,GACAuM,EAAApc,EAAA52B,IAAAnnB,UAAAo6D,EAAArc,EAAA52B,IAAAlnB,UASA,IARA,MAAAg6D,EAAAj6D,YACA42D,GAAA7Y,EAAAkc,EAAAj6D,WACA/c,KAAA0yB,IAAAooC,EAAA52B,IAAAnnB,UAAAm6D,GAAA,IAAAJ,GAAA,IAEA,MAAAE,EAAAh6D,aACA+2D,GAAAjZ,EAAAkc,EAAAh6D,YACAhd,KAAA0yB,IAAAooC,EAAA52B,IAAAlnB,WAAAm6D,GAAA,IAAAL,GAAA,KAEAA,EAAA,MAEA,MAAAnM,GAIA,QAAAiM,IAAA9b,EAAA6P,GACA,GAAAqM,GAAAC,GAAAnc,EAAA6P,EACA,OAAAqM,EAAAj6D,WAAA42D,GAAA7Y,EAAAkc,EAAAj6D,WACA,MAAAi6D,EAAAh6D,YAAA+2D,GAAAjZ,EAAAkc,EAAAh6D,YAOA,QAAAi6D,IAAAnc,EAAA6P,GACA,GAAAjwE,GAAAogE,EAAApgE,QAAA08E,EAAA9H,GAAAxU,EAAApgE,QACAiwE,GAAAj/D,IAAA,IAAAi/D,EAAAj/D,IAAA,EACA,IAAA2rE,GAAAvc,EAAA0C,OAAA,MAAA1C,EAAA0C,MAAAzgD,UAAA+9C,EAAA0C,MAAAzgD,UAAAriB,EAAA+2D,SAAA10C,UACA6vD,EAAAnC,GAAA3P,GAAA/kD,IACA40D,GAAAz2C,OAAAy2C,EAAAj/D,IAAAkhE,IAAAjC,EAAAz2C,OAAAy2C,EAAAj/D,IAAAkhE,EACA,IAAA0K,GAAAxc,EAAA52B,IAAA5iC,OAAA8oE,GAAA1vE,GACA68E,EAAA5M,EAAAj/D,IAAA0rE,EAAAI,EAAA7M,EAAAz2C,OAAAojD,EAAAF,CACA,IAAAzM,EAAAj/D,IAAA2rE,EACAthE,EAAAgH,UAAAw6D,EAAA,EAAA5M,EAAAj/D,QACA,IAAAi/D,EAAAz2C,OAAAmjD,EAAAzK,EAAA,CACA,GAAA6K,GAAAz3E,KAAAkvD,IAAAyb,EAAAj/D,KAAA8rE,EAAAF,EAAA3M,EAAAz2C,QAAA04C,EACA6K,IAAAJ,IAAAthE,EAAAgH,UAAA06D,GAGA,GAAAC,GAAA5c,EAAA0C,OAAA,MAAA1C,EAAA0C,MAAAxgD,WAAA89C,EAAA0C,MAAAxgD,WAAAtiB,EAAA+2D,SAAAz0C,WACA26D,EAAAnN,GAAA1P,IAAAA,EAAAn+C,QAAAgsD,YAAAjuE,EAAA62D,QAAAzsC,YAAA,GACA8yD,EAAAjN,EAAAl4C,MAAAk4C,EAAAruD,KAAAq7D,CAQA,OAPAC,KAAAjN,EAAAl4C,MAAAk4C,EAAAruD,KAAAq7D,GACAhN,EAAAruD,KAAA,GACAvG,EAAAiH,WAAA,EACA2tD,EAAAruD,KAAAo7D,EACA3hE,EAAAiH,WAAAhd,KAAAC,IAAA,EAAA0qE,EAAAruD,MAAAs7D,EAAA,EAAA,KACAjN,EAAAl4C,MAAAklD,EAAAD,EAAA,IACA3hE,EAAAiH,WAAA2tD,EAAAl4C,OAAAmlD,EAAA,EAAA,IAAAD,GACA5hE,EAKA,QAAA8hE,IAAA/c,EAAAx+C,EAAA5Q,GACA,MAAA4Q,GAAA,MAAA5Q,GAAAosE,GAAAhd,GACA,MAAAx+C,IACAw+C,EAAA0C,MAAAxgD,YAAA,MAAA89C,EAAA0C,MAAAxgD,WAAA89C,EAAA52B,IAAAlnB,WAAA89C,EAAA0C,MAAAxgD,YAAAV,GACA,MAAA5Q,IACAovD,EAAA0C,MAAAzgD,WAAA,MAAA+9C,EAAA0C,MAAAzgD,UAAA+9C,EAAA52B,IAAAnnB,UAAA+9C,EAAA0C,MAAAzgD,WAAArR,GAKA,QAAAqsE,IAAAjd,GACAgd,GAAAhd,EACA,IAAAphE,GAAAohE,EAAAkd,YAAAhuD,EAAAtwB,EAAA61B,EAAA71B,CACAohE,GAAAn+C,QAAAy/C,eACApyC,EAAAtwB,EAAAs5C,GAAAgiB,EAAAt7D,EAAAkvD,KAAAlvD,EAAAs5C,GAAA,GAAAt5C,EACA61B,EAAAylC,EAAAt7D,EAAAkvD,KAAAlvD,EAAAs5C,GAAA,IAEA8nB,EAAA0C,MAAAya,aAAAjuD,KAAAA,EAAAuF,GAAAA,EAAAhT,OAAAu+C,EAAAn+C,QAAAu7D,oBAOA,QAAAJ,IAAAhd,GACA,GAAAgW,GAAAhW,EAAA0C,MAAAya,WACA,IAAAnH,EAAA,CACAhW,EAAA0C,MAAAya,YAAA,IACA,IAAAjuD,GAAA2kD,GAAA7T,EAAAgW,EAAA9mD,MAAAuF,EAAAo/C,GAAA7T,EAAAgW,EAAAvhD,IACA4oD,EAAAlB,GAAAnc,GACAx+C,KAAAtc,KAAAkvD,IAAAllC,EAAA1N,KAAAiT,EAAAjT,MACA5Q,IAAA1L,KAAAkvD,IAAAllC,EAAAte,IAAA6jB,EAAA7jB,KAAAolE,EAAAv0D,OACAkW,MAAAzyB,KAAAC,IAAA+pB,EAAAyI,MAAAlD,EAAAkD,OACAyB,OAAAl0B,KAAAC,IAAA+pB,EAAAkK,OAAA3E,EAAA2E,QAAA48C,EAAAv0D,QAEAu+C,GAAAzzC,SAAA8wD,EAAAn7D,WAAAm7D,EAAAp7D,YAYA,QAAAq7D,IAAAtd,GACAA,EAAA0C,OACA1C,GAAAA,EACAud,aAAA,EACAtC,YAAAjb,EAAA52B,IAAA5iC,OACAiqE,aAAA,EACA+M,YAAA,KACAC,QAAA,EACAC,WAAA,KACA/a,uBAAA,KACA2J,qBAAA,EACAqR,kBAAA,EACAC,eAAA,EACA17D,WAAA,KAAAD,UAAA,KACAk7D,YAAA,KACA9pE,OAAA,EACAhG,KAAAwwE,IAEA9R,GAAA/L,EAAA0C,OAIA,QAAAob,IAAA9d,GACA,GAAAgM,GAAAhM,EAAA0C,KACA6J,IAAAP,EAAA,SAAAhnC,GACA,IAAA,GAAA3oC,GAAA,EAAAA,EAAA2oC,EAAAknC,IAAAzwE,OAAAY,IACA2oC,EAAAknC,IAAA7vE,GAAA2jE,GAAA0C,MAAA,IACAqb,IAAA/4C,KAMA,QAAA+4C,IAAA/4C,GAEA,IAAA,GADAknC,GAAAlnC,EAAAknC,IACA7vE,EAAA,EAAAA,EAAA6vE,EAAAzwE,OAAAY,IACA2hF,GAAA9R,EAAA7vE,GACA,KAAA,GAAAu9D,GAAA,EAAAA,EAAAsS,EAAAzwE,OAAAm+D,IACAqkB,GAAA/R,EAAAtS,GACA,KAAA,GAAAqD,GAAA,EAAAA,EAAAiP,EAAAzwE,OAAAwhE,IACAihB,GAAAhS,EAAAjP,GACA,KAAA,GAAAC,GAAA,EAAAA,EAAAgP,EAAAzwE,OAAAyhE,IACAihB,GAAAjS,EAAAhP,GACA,KAAA,GAAAkhB,GAAA,EAAAA,EAAAlS,EAAAzwE,OAAA2iF,IACAC,GAAAnS,EAAAkS,IAGA,QAAAJ,IAAAhS,GACA,GAAAhM,GAAAgM,EAAAhM,GAAApgE,EAAAogE,EAAApgE,OACA0+E,IAAAte,GACAgM,EAAA4R,eAAA7d,GAAAC,GAEAgM,EAAAuS,WAAAvS,EAAAuR,aAAAvR,EAAAyE,aAAA,MAAAzE,EAAA/pD,WACA+pD,EAAAmR,cAAAnR,EAAAmR,YAAAjuD,KAAA4+B,KAAAluD,EAAAs3D,UACA8U,EAAAmR,YAAA1oD,GAAAq5B,MAAAluD,EAAAu3D,SACAv3D,EAAA64D,gBAAAuH,EAAAn+C,QAAAy/C,aACA0K,EAAA/mB,OAAA+mB,EAAAuS,YACA,GAAAC,IAAAxe,EAAAgM,EAAAuS,aAAA3tE,IAAAo7D,EAAA/pD,UAAAy2D,OAAA1M,EAAAmR,aAAAnR,EAAAyE,aAGA,QAAAwN,IAAAjS,GACAA,EAAAyS,eAAAzS,EAAAuS,YAAAG,GAAA1S,EAAAhM,GAAAgM,EAAA/mB,QAGA,QAAAi5B,IAAAlS,GACA,GAAAhM,GAAAgM,EAAAhM,GAAApgE,EAAAogE,EAAApgE,OACAosE,GAAAyS,gBAAAnG,GAAAtY,GAEAgM,EAAA2S,WAAAlE,GAAAza,GAKApgE,EAAA64D,iBAAAuH,EAAAn+C,QAAAy/C,eACA0K,EAAA4S,cAAAxO,GAAApQ,EAAApgE,EAAA24D,QAAA34D,EAAA24D,QAAAp9D,KAAAM,QAAA+lB,KAAA,EACAw+C,EAAApgE,QAAA02D,WAAA0V,EAAA4S,cACA5S,EAAA2S,WAAAxF,YACAj0E,KAAAC,IAAAvF,EAAA+2D,SAAA9+B,YAAAj4B,EAAAy2D,MAAAqe,WAAA1I,EAAA4S,cAAAnP,GAAAzP,GAAAA,EAAApgE,QAAAk4D,UACAkU,EAAA6S,cAAA35E,KAAAC,IAAA,EAAAvF,EAAAy2D,MAAAqe,WAAA1I,EAAA4S,cAAAlP,GAAA1P,MAGAgM,EAAAyS,gBAAAzS,EAAA2R,oBACA3R,EAAA8S,kBAAAl/E,EAAAkU,MAAA0hE,iBAAAxJ,EAAA34D,QAGA,QAAA8qE,IAAAnS,GACA,GAAAhM,GAAAgM,EAAAhM,EAEA,OAAAgM,EAAA4S,gBACA5e,EAAApgE,QAAAy2D,MAAAl3D,MAAAqF,SAAAwnE,EAAA4S,cAAA,KACA5S,EAAA6S,cAAA7e,EAAA52B,IAAAlnB,YACA+2D,GAAAjZ,EAAA96D,KAAAkvD,IAAA4L,EAAApgE,QAAA+2D,SAAAz0C,WAAA8pD,EAAA6S,gBAAA,GACA7e,EAAApgE,QAAA64D,gBAAA,EAGA,IAAAsmB,GAAA/S,EAAA34D,OAAA24D,EAAA34D,OAAAggD,OAAA14D,SAAA2Y,UAAA3Y,SAAA2Y,WACA04D,GAAA8S,mBACA9e,EAAApgE,QAAAkU,MAAAyhE,cAAAvJ,EAAA8S,kBAAAC,IACA/S,EAAAyS,gBAAAzS,EAAAiP,aAAAjb,EAAA52B,IAAA5iC,SACAu0E,GAAA/a,EAAAgM,EAAA2S,YACA3S,EAAAyS,gBACAO,GAAAhf,EAAAgM,EAAA2S,YAEA3S,EAAA2R,kBAAArG,GAAAtX,GAEAA,EAAA/0D,MAAAssE,SAAAvL,EAAAwR,aACAxd,EAAApgE,QAAAkU,MAAAa,MAAAq3D,EAAAyR,QACAsB,GAAArH,GAAA1L,EAAAhM,IAGA,QAAAqe,IAAArS,GACA,GAAAhM,GAAAgM,EAAAhM,GAAApgE,EAAAogE,EAAApgE,QAAAwpC,EAAA42B,EAAA52B,GAqBA,IAnBA4iC,EAAAyS,gBAAAQ,GAAAjf,EAAAgM,EAAA/mB,QAGA,MAAArlD,EAAAg5D,aAAA,MAAAoT,EAAA/pD,WAAA,MAAA+pD,EAAA9pD,aAAA8pD,EAAAmR,cACAv9E,EAAAg5D,YAAAh5D,EAAAi5D,YAAA,MAGA,MAAAmT,EAAA/pD,WAAAriB,EAAA+2D,SAAA10C,WAAA+pD,EAAA/pD,YAAA+pD,EAAAkT,cACA91C,EAAAnnB,UAAA/c,KAAAC,IAAA,EAAAD,KAAAkvD,IAAAx0D,EAAA+2D,SAAAt/B,aAAAz3B,EAAA+2D,SAAAr/B,aAAA00C,EAAA/pD,YACAriB,EAAAm5E,WAAAF,aAAAzvC,EAAAnnB,WACAriB,EAAA+2D,SAAA10C,UAAAmnB,EAAAnnB,WAEA,MAAA+pD,EAAA9pD,YAAAtiB,EAAA+2D,SAAAz0C,YAAA8pD,EAAA9pD,aAAA8pD,EAAAkT,cACA91C,EAAAlnB,WAAAhd,KAAAC,IAAA,EAAAD,KAAAkvD,IAAAx0D,EAAA+2D,SAAAwiB,YAAAv5E,EAAA+2D,SAAA9+B,YAAAm0C,EAAA9pD,aACAtiB,EAAAm5E,WAAAE,cAAA7vC,EAAAlnB,YACAtiB,EAAA+2D,SAAAz0C,WAAAknB,EAAAlnB,WACA61D,GAAA/X,IAGAgM,EAAAmR,YAAA,CACA,GAAAtN,GAAAkM,GAAA/b,EAAAtF,EAAAtxB,EAAA4iC,EAAAmR,YAAAjuD,MACAwrC,EAAAtxB,EAAA4iC,EAAAmR,YAAA1oD,IAAAu3C,EAAAmR,YAAA17D,OACAi6D,IAAA1b,EAAA6P,GAKA,GAAA/pE,GAAAkmE,EAAAmT,mBAAAC,EAAApT,EAAAqT,oBACA,IAAAv5E,EAAA,IAAA,GAAAzJ,GAAA,EAAAA,EAAAyJ,EAAArK,SAAAY,EACAyJ,EAAAzJ,GAAA85D,MAAA16D,QAAA2mE,GAAAt8D,EAAAzJ,GAAA,OACA,IAAA+iF,EAAA,IAAA,GAAAxlB,GAAA,EAAAA,EAAAwlB,EAAA3jF,SAAAm+D,EACAwlB,EAAAxlB,GAAAzD,MAAA16D,QAAA2mE,GAAAgd,EAAAxlB,GAAA,SAEAh6D,GAAAq8C,QAAAhyB,eACAmf,EAAAnnB,UAAA+9C,EAAApgE,QAAA+2D,SAAA10C,WAGA+pD,EAAA0R,YACAtb,GAAApC,EAAA,UAAAA,EAAAgM,EAAA0R,YACA1R,EAAA/mB,QACA+mB,EAAA/mB,OAAAhiC,SAIA,QAAAq8D,IAAAtf,EAAAvhE,GACA,GAAAuhE,EAAA0C,MAAA,MAAAjkE,IACA6+E,IAAAtd,EACA,KAAA,MAAAvhE,KACA,QAAAq/E,GAAA9d,IAGA,QAAAuf,IAAAvf,EAAAvhE,GACA,MAAA,YACA,GAAAuhE,EAAA0C,MAAA,MAAAjkE,GAAAnB,MAAA0iE,EAAAh+D,UACAs7E,IAAAtd,EACA,KAAA,MAAAvhE,GAAAnB,MAAA0iE,EAAAh+D,WACA,QAAA87E,GAAA9d,KAKA,QAAAwf,IAAA/gF,GACA,MAAA,YACA,GAAA3D,KAAA4nE,MAAA,MAAAjkE,GAAAnB,MAAAxC,KAAAkH,UACAs7E,IAAAxiF,KACA,KAAA,MAAA2D,GAAAnB,MAAAxC,KAAAkH,WACA,QAAA87E,GAAAhjF,QAGA,QAAA2kF,IAAAhhF,GACA,MAAA,YACA,GAAAuhE,GAAAllE,KAAAklE,EACA,KAAAA,GAAAA,EAAA0C,MAAA,MAAAjkE,GAAAnB,MAAAxC,KAAAkH,UACAs7E,IAAAtd,EACA,KAAA,MAAAvhE,GAAAnB,MAAAxC,KAAAkH,WACA,QAAA87E,GAAA9d,KAUA,QAAA0f,IAAA1f,EAAA9wC,EAAAuF,EAAAkrD,GACA,MAAAzwD,IAAAA,EAAA8wC,EAAA52B,IAAAl9B,OACA,MAAAuoB,IAAAA,EAAAurC,EAAA52B,IAAAl9B,MAAA8zD,EAAA52B,IAAA4K,MACA2rC,IAAAA,EAAA,EAEA,IAAA//E,GAAAogE,EAAApgE,OAOA,IANA+/E,GAAAlrD,EAAA70B,EAAAu3D,SACA,MAAAv3D,EAAA+3D,mBAAA/3D,EAAA+3D,kBAAAzoC,KACAtvB,EAAA+3D,kBAAAzoC,GAEA8wC,EAAA0C,MAAA6a,aAAA,EAEAruD,GAAAtvB,EAAAu3D,OACA8D,IAAAmE,GAAAY,EAAA52B,IAAAla,GAAAtvB,EAAAu3D,QACAyoB,GAAA5f,OACA,IAAAvrC,GAAA70B,EAAAs3D,SACA+D,IAAAsE,GAAAS,EAAA52B,IAAA3U,EAAAkrD,GAAA//E,EAAAs3D,SACA0oB,GAAA5f,IAEApgE,EAAAs3D,UAAAyoB,EACA//E,EAAAu3D,QAAAwoB,OAEA,IAAAzwD,GAAAtvB,EAAAs3D,UAAAziC,GAAA70B,EAAAu3D,OACAyoB,GAAA5f,OACA,IAAA9wC,GAAAtvB,EAAAs3D,SAAA,CACA,GAAA2oB,GAAAC,GAAA9f,EAAAvrC,EAAAA,EAAAkrD,EAAA,EACAE,IACAjgF,EAAAsd,KAAAtd,EAAAsd,KAAA3f,MAAAsiF,EAAAnqE,OACA9V,EAAAs3D,SAAA2oB,EAAAxgB,MACAz/D,EAAAu3D,QAAAwoB,GAEAC,GAAA5f,OAEA,IAAAvrC,GAAA70B,EAAAu3D,OAAA,CACA,GAAA4oB,GAAAD,GAAA9f,EAAA9wC,EAAAA,GAAA,EACA6wD,IACAngF,EAAAsd,KAAAtd,EAAAsd,KAAA3f,MAAA,EAAAwiF,EAAArqE,OACA9V,EAAAu3D,OAAA4oB,EAAA1gB,OAEAugB,GAAA5f,OAEA,CACA,GAAAggB,GAAAF,GAAA9f,EAAA9wC,EAAAA,GAAA,GACA+wD,EAAAH,GAAA9f,EAAAvrC,EAAAA,EAAAkrD,EAAA,EACAK,IAAAC,GACArgF,EAAAsd,KAAAtd,EAAAsd,KAAA3f,MAAA,EAAAyiF,EAAAtqE,OACA7O,OAAAglE,GAAA7L,EAAAggB,EAAA3gB,MAAA4gB,EAAA5gB,QACAx4D,OAAAjH,EAAAsd,KAAA3f,MAAA0iF,EAAAvqE,QACA9V,EAAAu3D,QAAAwoB,GAEAC,GAAA5f,GAIA,GAAAlT,GAAAltD,EAAA23D,gBACAzK,KACAr4B,EAAAq4B,EAAAuS,MACAvS,EAAAuS,OAAAsgB,EACAzwD,EAAA49B,EAAAuS,MAAAvS,EAAA9Y,OACAp0C,EAAA23D,iBAAA,OAMA,QAAA2oB,IAAAlgB,EAAAlS,EAAAnyD,GACAqkE,EAAA0C,MAAA6a,aAAA,CACA,IAAA39E,GAAAogE,EAAApgE,QAAAktD,EAAAkT,EAAApgE,QAAA23D,gBAIA,IAHAzK,GAAAgB,GAAAhB,EAAAuS,OAAAvR,EAAAhB,EAAAuS,MAAAvS,EAAA9Y,OACAp0C,EAAA23D,iBAAA,QAEAzJ,EAAAluD,EAAAs3D,UAAApJ,GAAAluD,EAAAu3D,QAAA,CACA,GAAA6R,GAAAppE,EAAAsd,KAAAqzD,GAAAvQ,EAAAlS,GACA,IAAA,MAAAkb,EAAAl1B,KAAA,CACA,GAAAtP,GAAAwkC,EAAA+D,UAAA/D,EAAA+D,WACAzhE,GAAAk5B,EAAA7oC,KAAA,GAAA6oC,EAAAnjC,KAAA1F,KAIA,QAAAikF,IAAA5f,GACAA,EAAApgE,QAAAs3D,SAAA8I,EAAApgE,QAAAu3D,OAAA6I,EAAA52B,IAAAl9B,MACA8zD,EAAApgE,QAAAsd,QACA8iD,EAAApgE,QAAA43D,WAAA,EAGA,QAAAsoB,IAAA9f,EAAAmgB,EAAAC,EAAA9xE,GACA,GAAAirD,GAAA7jD,EAAA66D,GAAAvQ,EAAAmgB,GAAAjjE,EAAA8iD,EAAApgE,QAAAsd,IACA,KAAA+9C,IAAAmlB,GAAApgB,EAAA52B,IAAAl9B,MAAA8zD,EAAA52B,IAAA4K,KACA,OAAAt+B,MAAAA,EAAA2pD,MAAA+gB,EAEA,KAAA,GADA3/E,GAAAu/D,EAAApgE,QAAAs3D,SACA76D,EAAA,EAAAA,EAAAqZ,EAAArZ,IACAoE,GAAAyc,EAAA7gB,GAAA23C,IACA,IAAAvzC,GAAA0/E,EAAA,CACA,GAAA7xE,EAAA,EAAA,CACA,GAAAoH,GAAAwH,EAAAzhB,OAAA,EAAA,MAAA,KACA89D,GAAA94D,EAAAyc,EAAAxH,GAAAs+B,KAAAmsC,EACAzqE,QAEA6jD,GAAA94D,EAAA0/E,CAEAA,IAAA5mB,EAAA6mB,GAAA7mB,EAEA,KAAA6F,GAAAY,EAAA52B,IAAAg3C,IAAAA,GAAA,CACA,GAAA1qE,IAAApH,EAAA,EAAA,EAAA4O,EAAAzhB,OAAA,GAAA,MAAA,KACA2kF,IAAA9xE,EAAA4O,EAAAxH,GAAApH,EAAA,EAAA,EAAA,IAAA0lC,KACAt+B,GAAApH,EAEA,OAAAoH,MAAAA,EAAA2pD,MAAA+gB,GAKA,QAAAC,IAAArgB,EAAA9wC,EAAAuF,GACA,GAAA70B,GAAAogE,EAAApgE,QAAAsd,EAAAtd,EAAAsd,IACA,IAAAA,EAAAzhB,QAAAyzB,GAAAtvB,EAAAu3D,QAAA1iC,GAAA70B,EAAAs3D,UACAt3D,EAAAsd,KAAA2uD,GAAA7L,EAAA9wC,EAAAuF,GACA70B,EAAAs3D,SAAAhoC,IAEAtvB,EAAAs3D,SAAAhoC,EACAtvB,EAAAsd,KAAA2uD,GAAA7L,EAAA9wC,EAAAtvB,EAAAs3D,UAAArwD,OAAAjH,EAAAsd,MACAtd,EAAAs3D,SAAAhoC,IACAtvB,EAAAsd,KAAAtd,EAAAsd,KAAA3f,MAAAgzE,GAAAvQ,EAAA9wC,KACAtvB,EAAAs3D,SAAAhoC,EACAtvB,EAAAu3D,OAAA1iC,EACA70B,EAAAsd,KAAAtd,EAAAsd,KAAArW,OAAAglE,GAAA7L,EAAApgE,EAAAu3D,OAAA1iC,IACA70B,EAAAu3D,OAAA1iC,IACA70B,EAAAsd,KAAAtd,EAAAsd,KAAA3f,MAAA,EAAAgzE,GAAAvQ,EAAAvrC,MAEA70B,EAAAu3D,OAAA1iC,EAKA,QAAA6rD,IAAAtgB,GAEA,IAAA,GADA9iD,GAAA8iD,EAAApgE,QAAAsd,KAAAqjE,EAAA,EACAlkF,EAAA,EAAAA,EAAA6gB,EAAAzhB,OAAAY,IAAA,CACA,GAAA2sE,GAAA9rD,EAAA7gB,EACA2sE,GAAAljE,QAAAkjE,EAAAl1B,OAAAk1B,EAAA+D,WAAAwT,EAEA,MAAAA,GAKA,QAAAvH,IAAAhZ,EAAAvyB,GACAuyB,EAAA52B,IAAAmkB,KAAA+X,YAAAtF,EAAA52B,IAAAy9B,SAAA7G,EAAApgE,QAAAu3D,QACA6I,EAAA/0D,MAAA4xC,UAAAt+C,IAAAkvC,EAAA9gB,EAAA6zD,GAAAxgB,IAGA,QAAAwgB,IAAAxgB,GACA,GAAA52B,GAAA42B,EAAA52B,GAEA,IADAA,EAAAy9B,SAAAz9B,EAAAl9B,QAAAk9B,EAAAy9B,SAAAz9B,EAAAl9B,SACAk9B,EAAAy9B,UAAA7G,EAAApgE,QAAAu3D,QAAA,CACA,GAAA73D,IAAA,GAAAyN,MAAAizD,EAAAn+C,QAAA4+D,SACAx1E,EAAAk6D,GAAA/7B,EAAAmkB,KAAAkZ,GAAAzG,EAAA52B,EAAAy9B,WACA6Z,IAEAt3C,GAAAgwB,KAAAhwB,EAAAy9B,SAAA3hE,KAAAkvD,IAAAhrB,EAAAl9B,MAAAk9B,EAAA4K,KAAAgsB,EAAApgE,QAAAu3D,OAAA,KAAA,SAAArJ,GACA,GAAA1kB,EAAAy9B,UAAA7G,EAAApgE,QAAAs3D,SAAA,CACA,GAAAypB,GAAA7yB,EAAAsY,OAAAwa,EAAA9yB,EAAA3yD,KAAAM,OAAAukE,EAAAn+C,QAAA6kD,mBACAma,EAAArb,GAAAxF,EAAAlS,EAAA8yB,EAAAzb,GAAA/7B,EAAAmkB,KAAAtiD,GAAAA,GAAA,EACA6iD,GAAAsY,OAAAya,EAAAza,MACA,IAAA0a,GAAAhzB,EAAA8Y,aAAAma,EAAAF,EAAAjlC,OACAmlC,GAAAjzB,EAAA8Y,aAAAma,EACAD,IAAAhzB,EAAA8Y,aAAA,KAGA,KAAA,GAFAoa,IAAAL,GAAAA,EAAAllF,QAAAqyD,EAAAsY,OAAA3qE,QACAqlF,GAAAC,KAAAD,IAAAC,GAAAD,EAAAza,SAAA0a,EAAA1a,SAAAya,EAAAxa,WAAAya,EAAAza,WACAjqE,EAAA,GAAA2kF,GAAA3kF,EAAAskF,EAAAllF,SAAAY,EAAA2kF,EAAAL,EAAAtkF,IAAAyxD,EAAAsY,OAAA/pE,EACA2kF,IAAAN,EAAAr/E,KAAA+nC,EAAAy9B,UACA/Y,EAAA6Y,WAAAia,EAAA31E,EAAAk6D,GAAA/7B,EAAAmkB,KAAAtiD,OAEA6iD,GAAA3yD,KAAAM,QAAAukE,EAAAn+C,QAAA6kD,oBACAM,GAAAhH,EAAAlS,EAAA3yD,KAAA8P,GACA6iD,EAAA6Y,WAAAv9B,EAAAy9B,SAAA,GAAA,EAAA1B,GAAA/7B,EAAAmkB,KAAAtiD,GAAA,IAGA,MADAm+B,EAAAy9B,UACA,GAAA95D,MAAAzN,EAEA,MADA05E,IAAAhZ,EAAAA,EAAAn+C,QAAAo/D,YACA,IAGAP,EAAAjlF,QAAA6jF,GAAAtf,EAAA,WACA,IAAA,GAAA3jE,GAAA,EAAAA,EAAAqkF,EAAAjlF,OAAAY,IACA6jF,GAAAlgB,EAAA0gB,EAAArkF,GAAA,WAgCA,QAAAiiF,IAAAte,GACA,GAAApgE,GAAAogE,EAAApgE,SACAA,EAAAm4D,mBAAAn4D,EAAA+2D,SAAA3sC,cACApqB,EAAAg4D,eAAAh4D,EAAA+2D,SAAA3sC,YAAApqB,EAAA+2D,SAAA9+B,YACAj4B,EAAA22D,aAAAp3D,MAAAqH,OAAAipE,GAAAzP,GAAA,KACApgE,EAAAy2D,MAAAl3D,MAAA+hF,cAAAthF,EAAAg4D,eAAA,KACAh4D,EAAAy2D,MAAAl3D,MAAAgiF,iBAAA1R,GAAAzP,GAAA,KACApgE,EAAAm4D,mBAAA,GAOA,QAAA2mB,IAAA1e,EAAA/a,GACA,GAAArlD,GAAAogE,EAAApgE,QAAAwpC,EAAA42B,EAAA52B,GAEA,IAAA6b,EAAAm8B,eAEA,MADAxB,IAAA5f,IACA,CAIA,KAAA/a,EAAA9J,OACA8J,EAAAl7B,QAAAmF,MAAAtvB,EAAAs3D,UAAAjS,EAAAl7B,QAAA0K,IAAA70B,EAAAu3D,SACA,MAAAv3D,EAAA+3D,mBAAA/3D,EAAA+3D,mBAAA/3D,EAAAu3D,SACAv3D,EAAA03D,cAAA13D,EAAAsd,MAAA,GAAAojE,GAAAtgB,GACA,OAAA,CAEAmY,IAAAnY,KACA4f,GAAA5f,GACA/a,EAAA6nB,KAAA0D,GAAAxQ,GAIA,IAAA1gE,GAAA8pC,EAAAl9B,MAAAk9B,EAAA4K,KACA9kB,EAAAhqB,KAAAC,IAAA8/C,EAAAl7B,QAAAmF,KAAA8wC,EAAAn+C,QAAAw/D,eAAAj4C,EAAAl9B,OACAuoB,EAAAvvB,KAAAkvD,IAAA90D,EAAA2lD,EAAAl7B,QAAA0K,GAAAurC,EAAAn+C,QAAAw/D,eACAzhF,GAAAs3D,SAAAhoC,GAAAA,EAAAtvB,EAAAs3D,SAAA,KAAAhoC,EAAAhqB,KAAAC,IAAAikC,EAAAl9B,MAAAtM,EAAAs3D,WACAt3D,EAAAu3D,OAAA1iC,GAAA70B,EAAAu3D,OAAA1iC,EAAA,KAAAA,EAAAvvB,KAAAkvD,IAAA90D,EAAAM,EAAAu3D,SACA8D,KACA/rC,EAAAkwC,GAAAY,EAAA52B,IAAAla,GACAuF,EAAA8qC,GAAAS,EAAA52B,IAAA3U,GAGA,IAAA6sD,GAAApyD,GAAAtvB,EAAAs3D,UAAAziC,GAAA70B,EAAAu3D,QACAv3D,EAAA63D,gBAAAxS,EAAAs8B,eAAA3hF,EAAA83D,eAAAzS,EAAA+pB,YACAqR,IAAArgB,EAAA9wC,EAAAuF,GAEA70B,EAAA43D,WAAAoI,GAAA5G,EAAAgH,EAAA52B,IAAAxpC,EAAAs3D,WAEA8I,EAAApgE,QAAAw2D,MAAAj3D,MAAAyR,IAAAhR,EAAA43D,WAAA,IAEA,IAAAgqB,GAAAlB,GAAAtgB,EACA,KAAAshB,GAAA,GAAAE,IAAAv8B,EAAA9J,OAAAv7C,EAAA03D,cAAA13D,EAAAsd,OACA,MAAAtd,EAAA+3D,mBAAA/3D,EAAA+3D,mBAAA/3D,EAAAu3D,QACA,OAAA,CAIA,IAAAogB,GAAAlkB,GAuBA,OAtBAmuB,GAAA,IAAA5hF,EAAAi2D,QAAA12D,MAAAS,QAAA,QACA6hF,GAAAzhB,EAAApgE,EAAA+3D,kBAAA1S,EAAA6nB,MACA0U,EAAA,IAAA5hF,EAAAi2D,QAAA12D,MAAAS,QAAA,IACAA,EAAA03D,aAAA13D,EAAAsd,KAGAq6D,GAAAlkB,KAAAkkB,GAAAA,EAAAttD,cAAAstD,EAAAlkE,QAIA4/C,EAAArzD,EAAAm2D,WACA9C,EAAArzD,EAAAk2D,cACAl2D,EAAA62D,QAAAt3D,MAAAqH,OAAA5G,EAAAy2D,MAAAl3D,MAAAuiF,UAAA,EAEAJ,IACA1hF,EAAA63D,eAAAxS,EAAAs8B,cACA3hF,EAAA83D,cAAAzS,EAAA+pB,aACAgK,GAAAhZ,EAAA,MAGApgE,EAAA+3D,kBAAA,MAEA,EAGA,QAAAsnB,IAAAjf,EAAA/a,GAGA,IAAA,GAFA3sB,GAAA2sB,EAAA3sB,SAEApsB,GAAA,GACAA,GAAA8zD,EAAAn+C,QAAAy/C,cAAArc,EAAA08B,iBAAAjS,GAAA1P,KAEA1nC,GAAA,MAAAA,EAAA1nB,MACA0nB,GAAA1nB,IAAA1L,KAAAkvD,IAAA4L,EAAA52B,IAAA5iC,OAAA8oE,GAAAtP,EAAApgE,SAAA+vE,GAAA3P,GAAA1nC,EAAA1nB,OAGAq0C,EAAAl7B,QAAA0uD,GAAAzY,EAAApgE,QAAAogE,EAAA52B,IAAA9Q,KACA2sB,EAAAl7B,QAAAmF,MAAA8wC,EAAApgE,QAAAs3D,UAAAjS,EAAAl7B,QAAA0K,IAAAurC,EAAApgE,QAAAu3D,WAGAunB,GAAA1e,EAAA/a,GAXA/4C,GAAA,EAAA,CAYAosE,GAAAtY,EACA,IAAA2e,GAAAlE,GAAAza,EACAsV,IAAAtV,GACA+a,GAAA/a,EAAA2e,GACAK,GAAAhf,EAAA2e,GAGA15B,EAAAmd,OAAApC,EAAA,SAAAA,GACAA,EAAApgE,QAAAs3D,UAAA8I,EAAApgE,QAAAw3D,kBAAA4I,EAAApgE,QAAAu3D,QAAA6I,EAAApgE,QAAAy3D,iBACApS,EAAAmd,OAAApC,EAAA,iBAAAA,EAAAA,EAAApgE,QAAAs3D,SAAA8I,EAAApgE,QAAAu3D,QACA6I,EAAApgE,QAAAw3D,iBAAA4I,EAAApgE,QAAAs3D,SAAA8I,EAAApgE,QAAAy3D,eAAA2I,EAAApgE,QAAAu3D,QAIA,QAAA2hB,IAAA9Y,EAAA1nC,GACA,GAAA2sB,GAAA,GAAAu5B,IAAAxe,EAAA1nC,EACA,IAAAomD,GAAA1e,EAAA/a,GAAA,CACAqzB,GAAAtY,GACAif,GAAAjf,EAAA/a,EACA,IAAA05B,GAAAlE,GAAAza,EACAsV,IAAAtV,GACA+a,GAAA/a,EAAA2e,GACAK,GAAAhf,EAAA2e,GACA15B,EAAAhiC,UAQA,QAAAw+D,IAAAzhB,EAAA4hB,EAAA9U,GAIA,QAAA+U,GAAA/tC,GACA,GAAAvlC,GAAAulC,EAAA/lC,WAMA,OAJA+oD,KAAAuM,IAAArD,EAAApgE,QAAAs6E,oBAAApmC,EACAA,EAAA30C,MAAAS,QAAA,OAEAk0C,EAAAx4C,WAAAC,YAAAu4C,GACAvlC,EAMA,IAAA,GAhBA3O,GAAAogE,EAAApgE,QAAAquE,EAAAjO,EAAAn+C,QAAAosD,YACA51C,EAAAz4B,EAAAi2D,QAAAj3D,EAAAy5B,EAAAl3B,WAYA+b,EAAAtd,EAAAsd,KAAAmiD,EAAAz/D,EAAAs3D,SAGA76D,EAAA,EAAAA,EAAA6gB,EAAAzhB,OAAAY,IAAA,CACA,GAAA2sE,GAAA9rD,EAAA7gB,EACA,IAAA2sE,EAAAljE,YACA,IAAAkjE,EAAAl1B,MAAAk1B,EAAAl1B,KAAAx4C,YAAA+8B,EAGA,CACA,KAAAz5B,GAAAoqE,EAAAl1B,MAAAl1C,EAAAijF,EAAAjjF,EACA,IAAAkjF,GAAA7T,GAAA,MAAA2T,GACAA,GAAAviB,GAAA2J,EAAAoF,UACApF,GAAA+D,UACAzhE,EAAA09D,EAAA+D,QAAA,WAAA,IAAA+U,GAAA,GACAjV,GAAA7M,EAAAgJ,EAAA3J,EAAAyN,IAEAgV,IACA7uB,EAAA+V,EAAAoF,YACApF,EAAAoF,WAAA/yE,YAAAV,SAAA2G,eAAAy4D,EAAAiG,EAAAn+C,QAAAw9C,MAEAzgE,EAAAoqE,EAAAl1B,KAAA/lC,gBAfA,CACA,GAAA+lC,GAAA26B,GAAAzO,EAAAgJ,EAAA3J,EAAAyN,EACAz0C,GAAAvZ,aAAAg1B,EAAAl1C,GAeAygE,GAAA2J,EAAAh1B,KAEA,KAAAp1C,GAAAA,EAAAijF,EAAAjjF,GAGA,QAAAy5E,IAAArY,GACA,GAAAz7D,GAAAy7D,EAAApgE,QAAA62D,QAAAzsC,WACAg2C,GAAApgE,QAAAy2D,MAAAl3D,MAAAugB,WAAAnb,EAAA,KAGA,QAAAy6E,IAAAhf,EAAAhK,GACAgK,EAAApgE,QAAAy2D,MAAAl3D,MAAAuiF,UAAA1rB,EAAA8kB,UAAA,KACA9a,EAAApgE,QAAA22D,aAAAp3D,MAAAyR,IAAAolD,EAAA8kB,UAAA,KACA9a,EAAApgE,QAAA62D,QAAAt3D,MAAAqH,OAAAwvD,EAAA8kB,UAAA9a,EAAApgE,QAAAi4D,UAAA4X,GAAAzP,GAAA,KAKA,QAAA+hB,IAAA/hB,GACA,GAAAvJ,GAAAuJ,EAAApgE,QAAA62D,QAAAurB,EAAAhiB,EAAAn+C,QAAA40C,OACAxD,GAAAwD,EAEA,KADA,GAAAp6D,GAAA,EACAA,EAAA2lF,EAAAvmF,SAAAY,EAAA,CACA,GAAAuxE,GAAAoU,EAAA3lF,GACA4lF,EAAAxrB,EAAAp7D,YAAA83D,EAAA,MAAA,KAAA,qBAAAya,GACA,2BAAAA,IACA5N,EAAApgE,QAAA82D,WAAAurB,EACAA,EAAA9iF,MAAAoF,OAAAy7D,EAAApgE,QAAAo4D,cAAA,GAAA,MAGAvB,EAAAt3D,MAAAS,QAAAvD,EAAA,GAAA,OACAg8E,GAAArY,GAKA,QAAAkiB,IAAArgE,GACA,GAAA66C,GAAApxD,EAAAuW,EAAA40C,QAAA,yBACAiG,KAAA,GAAA76C,EAAAosD,YACApsD,EAAA40C,QAAA50C,EAAA40C,QAAA5vD,QAAA,2BACA61D,GAAA,IAAA76C,EAAAosD,cACApsD,EAAA40C,QAAA50C,EAAA40C,QAAAl5D,MAAA,GACAskB,EAAA40C,QAAApqD,OAAAqwD,EAAA,IAoEA,QAAAylB,IAAArM,EAAAC,GACA,GAAAqM,GAAAtM,EAAAC,EACAD,GAAA1pE,KAAA,SAAA7R,EAAAC,GAAA,MAAA4/D,GAAA7/D,EAAA20B,OAAA10B,EAAA00B,UACA6mD,EAAAzqE,EAAAwqE,EAAAsM,EACA,KAAA,GAAA/lF,GAAA,EAAAA,EAAAy5E,EAAAr6E,OAAAY,IAAA,CACA,GAAAuC,GAAAk3E,EAAAz5E,GAAAmZ,EAAAsgE,EAAAz5E,EAAA,EACA,IAAA+9D,EAAA5kD,EAAAif,KAAA71B,EAAAswB,SAAA,EAAA,CACA,GAAAA,GAAAsrC,EAAAhlD,EAAA0Z,OAAAtwB,EAAAswB,QAAAuF,EAAA8lC,EAAA/kD,EAAAif,KAAA71B,EAAA61B,MACA4tD,EAAA7sE,EAAAtO,QAAAtI,EAAAswB,QAAAtwB,EAAAxD,KAAAoa,EAAA0Z,QAAA1Z,EAAApa,IACAiB,IAAA05E,KAAAA,EACAD,EAAAzpE,SAAAhQ,EAAA,EAAA,GAAAimF,IAAAD,EAAA5tD,EAAAvF,EAAAmzD,EAAAnzD,EAAAuF,KAGA,MAAA,IAAA8tD,IAAAzM,EAAAC,GAGA,QAAAyM,IAAAzxB,EAAA31D,GACA,MAAA,IAAAmnF,KAAA,GAAAD,IAAAvxB,EAAA31D,GAAA21D,IAAA,GAKA,QAAA0xB,IAAA7/C,GACA,MAAAA,GAAAznC,KACA++D,EAAAt3B,EAAA1T,KAAA4+B,KAAAlrB,EAAAznC,KAAAM,OAAA,EACA84D,EAAA3xB,EAAAznC,MAAAM,QAAA,GAAAmnC,EAAAznC,KAAAM,OAAAmnC,EAAA1T,KAAAgpB,GAAA,IAFAtV,EAAAnO,GAOA,QAAAiuD,IAAA3gE,EAAA6gB,GACA,GAAAw3B,EAAAr4C,EAAA6gB,EAAA1T,MAAA,EAAA,MAAAnN,EACA,IAAAq4C,EAAAr4C,EAAA6gB,EAAAnO,KAAA,EAAA,MAAAguD,IAAA7/C,EAEA,IAAAkrB,GAAA/rC,EAAA+rC,KAAAlrB,EAAAznC,KAAAM,QAAAmnC,EAAAnO,GAAAq5B,KAAAlrB,EAAA1T,KAAA4+B,MAAA,EAAA5V,EAAAn2B,EAAAm2B,EAEA,OADAn2B,GAAA+rC,MAAAlrB,EAAAnO,GAAAq5B,OAAA5V,GAAAuqC,GAAA7/C,GAAAsV,GAAAtV,EAAAnO,GAAAyjB,IACAgiB,EAAApM,EAAA5V,GAGA,QAAAyqC,IAAAv5C,EAAAxG,GAEA,IAAA,GADA4xB,MACAn4D,EAAA,EAAAA,EAAA+sC,EAAAysC,IAAAC,OAAAr6E,OAAAY,IAAA,CACA,GAAA0mD,GAAA3Z,EAAAysC,IAAAC,OAAAz5E,EACAm4D,GAAAnzD,KAAA,GAAAihF,IAAAI,GAAA3/B,EAAAgO,OAAAnuB,GACA8/C,GAAA3/B,EAAA3nD,KAAAwnC,KAEA,MAAAu/C,IAAA3tB,EAAAprB,EAAAysC,IAAAE,WAGA,QAAA6M,IAAA7gE,EAAAe,EAAA+4C,GACA,MAAA95C,GAAA+rC,MAAAhrC,EAAAgrC,KACAoM,EAAA2B,EAAA/N,KAAA/rC,EAAAm2B,GAAAp1B,EAAAo1B,GAAA2jB,EAAA3jB,IAEAgiB,EAAA2B,EAAA/N,MAAA/rC,EAAA+rC,KAAAhrC,EAAAgrC,MAAA/rC,EAAAm2B,IAKA,QAAA2qC,IAAAz5C,EAAA2jC,EAAA7wB,GAGA,IAAA,GAFAsY,MACAsuB,EAAA5oB,EAAA9wB,EAAAl9B,MAAA,GAAA62E,EAAAD,EACAzmF,EAAA,EAAAA,EAAA0wE,EAAAtxE,OAAAY,IAAA,CACA,GAAAumC,GAAAmqC,EAAA1wE,GACA6yB,EAAA0zD,GAAAhgD,EAAA1T,KAAA4zD,EAAAC,GACAtuD,EAAAmuD,GAAAH,GAAA7/C,GAAAkgD,EAAAC,EAGA,IAFAD,EAAAlgD,EAAAnO,GACAsuD,EAAAtuD,EACA,UAAAynB,EAAA,CACA,GAAA6G,GAAA3Z,EAAAysC,IAAAC,OAAAz5E,GAAAgmF,EAAAjoB,EAAArX,EAAA3nD,KAAA2nD,EAAAgO,QAAA,CACAyD,GAAAn4D,GAAA,GAAAimF,IAAAD,EAAA5tD,EAAAvF,EAAAmzD,EAAAnzD,EAAAuF,OAEA+/B,GAAAn4D,GAAA,GAAAimF,IAAApzD,EAAAA,GAGA,MAAA,IAAAqzD,IAAA/tB,EAAAprB,EAAAysC,IAAAE,WAKA,QAAAiN,IAAAhjB,GACAA,EAAA52B,IAAAmkB,KAAAkX,GAAAzE,EAAAn+C,QAAAm+C,EAAA52B,IAAA65C,YACAC,GAAAljB,GAGA,QAAAkjB,IAAAljB,GACAA,EAAA52B,IAAAgwB,KAAA,SAAAtL,GACAA,EAAA6Y,aAAA7Y,EAAA6Y,WAAA,MACA7Y,EAAAsY,SAAAtY,EAAAsY,OAAA,QAEApG,EAAA52B,IAAAy9B,SAAA7G,EAAA52B,IAAAl9B,MACA8sE,GAAAhZ,EAAA,KACAA,EAAA/0D,MAAA06D,UACA3F,EAAA0C,OAAAgd,GAAA1f,GAQA,QAAAmjB,IAAA/5C,EAAAxG,GACA,MAAA,IAAAA,EAAA1T,KAAAgpB,IAAA,GAAAtV,EAAAnO,GAAAyjB,IAAA,IAAAqc,EAAA3xB,EAAAznC,SACAiuC,EAAA42B,IAAA52B,EAAA42B,GAAAn+C,QAAAuhE,uBAIA,QAAAC,IAAAj6C,EAAAxG,EAAA44B,EAAA8nB;AACA,QAAAC,GAAA9iF,GAAA,MAAA+6D,GAAAA,EAAA/6D,GAAA,KACA,QAAAwkD,GAAA6I,EAAA3yD,EAAAkgE,GACAmN,GAAA1a,EAAA3yD,EAAAkgE,EAAAioB,GACA7W,GAAA3e,EAAA,SAAAA,EAAAlrB,GAEA,QAAA4gD,GAAAnkF,EAAAC,GAEA,IAAA,GADA2b,MACA5e,EAAAgD,EAAAhD,EAAAiD,IAAAjD,EACA4e,EAAA5Z,KAAA,GAAAoiF,IAAAtoF,EAAAkB,GAAAknF,EAAAlnF,GAAAinF,GACA,OAAAroE,GAGA,GAAAiU,GAAA0T,EAAA1T,KAAAuF,EAAAmO,EAAAnO,GAAAt5B,EAAAynC,EAAAznC,KACAuoF,EAAA1qB,EAAA5vB,EAAAla,EAAA4+B,MAAA0R,EAAAxG,EAAA5vB,EAAA3U,EAAAq5B,MACA61B,EAAApvB,EAAAp5D,GAAAyoF,EAAAL,EAAApoF,EAAAM,OAAA,GAAAooF,EAAApvD,EAAAq5B,KAAA5+B,EAAA4+B,IAGA,IAAAlrB,EAAA05B,KACAlzB,EAAA06C,OAAA,EAAAN,EAAA,EAAAroF,EAAAM,SACA2tC,EAAA1hC,OAAAvM,EAAAM,OAAA2tC,EAAA4K,KAAA74C,EAAAM,YACA,IAAA0nF,GAAA/5C,EAAAxG,GAAA,CAGA,GAAAmhD,GAAAP,EAAA,EAAAroF,EAAAM,OAAA,EACAwpD,GAAAua,EAAAA,EAAArkE,KAAAyoF,GACAC,GAAAz6C,EAAA1hC,OAAAwnB,EAAA4+B,KAAA+1B,GACAE,EAAAtoF,QAAA2tC,EAAA06C,OAAA50D,EAAA4+B,KAAAi2B,OACA,IAAAL,GAAAlkB,EACA,GAAA,GAAArkE,EAAAM,OACAwpD,EAAAy+B,EAAAA,EAAAvoF,KAAAoC,MAAA,EAAA2xB,EAAAgpB,IAAAyrC,EAAAD,EAAAvoF,KAAAoC,MAAAk3B,EAAAyjB,IAAA0rC,OACA,CACA,GAAAI,GAAAR,EAAA,EAAAroF,EAAAM,OAAA,EACAuoF,GAAA3iF,KAAA,GAAAoiF,IAAAE,EAAAD,EAAAvoF,KAAAoC,MAAAk3B,EAAAyjB,IAAA0rC,EAAAN,IACAr+B,EAAAy+B,EAAAA,EAAAvoF,KAAAoC,MAAA,EAAA2xB,EAAAgpB,IAAA/8C,EAAA,GAAAooF,EAAA,IACAn6C,EAAA06C,OAAA50D,EAAA4+B,KAAA,EAAAk2B,OAEA,IAAA,GAAA7oF,EAAAM,OACAwpD,EAAAy+B,EAAAA,EAAAvoF,KAAAoC,MAAA,EAAA2xB,EAAAgpB,IAAA/8C,EAAA,GAAAqkE,EAAArkE,KAAAoC,MAAAk3B,EAAAyjB,IAAAqrC,EAAA,IACAn6C,EAAA1hC,OAAAwnB,EAAA4+B,KAAA,EAAA+1B,OACA,CACA5+B,EAAAy+B,EAAAA,EAAAvoF,KAAAoC,MAAA,EAAA2xB,EAAAgpB,IAAA/8C,EAAA,GAAAooF,EAAA,IACAt+B,EAAAua,EAAAmkB,EAAAnkB,EAAArkE,KAAAoC,MAAAk3B,EAAAyjB,IAAA0rC,EACA,IAAAK,GAAAT,EAAA,EAAAroF,EAAAM,OAAA,EACAooF,GAAA,GAAAz6C,EAAA1hC,OAAAwnB,EAAA4+B,KAAA,EAAA+1B,EAAA,GACAz6C,EAAA06C,OAAA50D,EAAA4+B,KAAA,EAAAm2B,GAGAxX,GAAArjC,EAAA,SAAAA,EAAAxG,GAIA,QAAAshD,IAAA96C,EAAA3qC,EAAA0lF,GACA,QAAAC,GAAAh7C,EAAAi7C,EAAAC,GACA,GAAAl7C,EAAAm7C,OAAA,IAAA,GAAAloF,GAAA,EAAAA,EAAA+sC,EAAAm7C,OAAA9oF,SAAAY,EAAA,CACA,GAAAy0C,GAAA1H,EAAAm7C,OAAAloF,EACA,IAAAy0C,EAAA1H,KAAAi7C,EAAA,CACA,GAAAG,GAAAF,GAAAxzC,EAAAwzC,UACAH,KAAAK,IACA/lF,EAAAqyC,EAAA1H,IAAAo7C,GACAJ,EAAAtzC,EAAA1H,IAAAA,EAAAo7C,MAGAJ,EAAAh7C,EAAA,MAAA,GAIA,QAAAq7C,IAAAzkB,EAAA52B,GACA,GAAAA,EAAA42B,GAAA,KAAA,IAAAplE,OAAA,mCACAolE,GAAA52B,IAAAA,EACAA,EAAA42B,GAAAA,EACA+U,GAAA/U,GACAgjB,GAAAhjB,GACA0kB,GAAA1kB,GACAA,EAAAn+C,QAAAy/C,cAAAvB,GAAAC,GACAA,EAAAn+C,QAAA0rC,KAAAnkB,EAAA65C,WACAvD,GAAA1f,GAGA,QAAA0kB,IAAA1kB,IACA,OAAAA,EAAA52B,IAAA7T,UAAA5Q,EAAAmzD,IAAA9X,EAAApgE,QAAAi2D,QAAA,kBAGA,QAAA8uB,IAAA3kB,GACAsf,GAAAtf,EAAA,WACA0kB,GAAA1kB,GACA0f,GAAA1f,KAIA,QAAA4kB,IAAAC,GAIA/pF,KAAAqC,QAAArC,KAAAgqF,UACAhqF,KAAAiqF,UAAAjjD,EAAAA,EAGAhnC,KAAAkqF,YAAAlqF,KAAAmqF,YAAA,EACAnqF,KAAAoqF,OAAApqF,KAAAqqF,UAAA,KACArqF,KAAAsqF,WAAAtqF,KAAAuqF,cAAA,KAEAvqF,KAAAwqF,WAAAxqF,KAAAyqF,cAAAV,GAAA,EAKA,QAAAW,IAAAp8C,EAAAxG,GACA,GAAA6iD,IAAAv2D,KAAAorC,EAAA13B,EAAA1T,MAAAuF,GAAAguD,GAAA7/C,GAAAznC,KAAAg+D,EAAA/vB,EAAAxG,EAAA1T,KAAA0T,EAAAnO,IAGA,OAFAixD,IAAAt8C,EAAAq8C,EAAA7iD,EAAA1T,KAAA4+B,KAAAlrB,EAAAnO,GAAAq5B,KAAA,GACAo2B,GAAA96C,EAAA,SAAAA,GAAA,MAAAs8C,IAAAt8C,EAAAq8C,EAAA7iD,EAAA1T,KAAA4+B,KAAAlrB,EAAAnO,GAAAq5B,KAAA,KAAA,GACA23B,EAKA,QAAAE,IAAAzuC,GACA,KAAAA,EAAAz7C,QAAA,CACA,GAAA0Q,GAAAooD,EAAArd,EACA,KAAA/qC,EAAA2pE,OACA,KADA5+B,GAAA9nC,OAOA,QAAAw2E,IAAAC,EAAA1qC,GACA,MAAAA,IACAwqC,GAAAE,EAAA1oF,MACAo3D,EAAAsxB,EAAA1oF,OACA0oF,EAAA1oF,KAAA1B,SAAA84D,EAAAsxB,EAAA1oF,MAAA24E,OACAvhB,EAAAsxB,EAAA1oF,MACA0oF,EAAA1oF,KAAA1B,OAAA,IAAAoqF,EAAA1oF,KAAA0oF,EAAA1oF,KAAA1B,OAAA,GAAAq6E,QACA+P,EAAA1oF,KAAAiS,MACAmlD,EAAAsxB,EAAA1oF,OAFA,OASA,QAAA2oF,IAAA18C,EAAAxG,EAAAmjD,EAAAC,GACA,GAAAH,GAAAz8C,EAAAR,OACAi9C,GAAAf,OAAArpF,OAAA,CACA,IAAAmD,GACAuN,EADAshC,GAAA,GAAA1gC,KAGA,KAAA84E,EAAAX,QAAAc,GACAH,EAAAT,YAAAxiD,EAAAwI,QAAAxI,EAAAwI,SACA,KAAAxI,EAAAwI,OAAA7b,OAAA,IAAA6Z,EAAA42B,IAAA6lB,EAAAb,YAAAv3C,EAAArE,EAAA42B,GAAAn+C,QAAAokE,mBACA,KAAArjD,EAAAwI,OAAA7b,OAAA,OACA3wB,EAAAgnF,GAAAC,EAAAA,EAAAX,QAAAc,IAEA75E,EAAAooD,EAAA31D,EAAAmuE,SACA,GAAA3S,EAAAx3B,EAAA1T,KAAA0T,EAAAnO,KAAA,GAAA2lC,EAAAx3B,EAAA1T,KAAA/iB,EAAAsoB,IAGAtoB,EAAAsoB,GAAAguD,GAAA7/C,GAGAhkC,EAAAmuE,QAAA1rE,KAAAmkF,GAAAp8C,EAAAxG,QAEA,CAEA,GAAA7jB,GAAAw1C,EAAAsxB,EAAA1oF,KAMA,KALA4hB,GAAAA,EAAA+2D,QACAoQ,GAAA98C,EAAAysC,IAAAgQ,EAAA1oF,MACAyB,GAAAmuE,SAAAyY,GAAAp8C,EAAAxG,IACA0iD,WAAAO,EAAAP,YACAO,EAAA1oF,KAAAkE,KAAAzC,GACAinF,EAAA1oF,KAAA1B,OAAAoqF,EAAAd,WACAc,EAAA1oF,KAAAqN,QACAq7E,EAAA1oF,KAAA,GAAA24E,QAAA+P,EAAA1oF,KAAAqN,QAGAq7E,EAAA1oF,KAAAkE,KAAA0kF,GACAF,EAAAP,aAAAO,EAAAN,cACAM,EAAAb,YAAAa,EAAAZ,YAAAx3C,EACAo4C,EAAAX,OAAAW,EAAAV,UAAAa,EACAH,EAAAT,WAAAS,EAAAR,cAAAziD,EAAAwI,OAEAj/B,GAAAi2D,GAAAh5B,EAAA,gBAGA,QAAA+8C,IAAA/8C,EAAAgC,EAAA51B,EAAAqgE,GACA,GAAA39B,GAAA9M,EAAA7b,OAAA,EACA,OAAA,KAAA2oB,GACA,KAAAA,GACA1iC,EAAAsgE,OAAAr6E,QAAAo6E,EAAAC,OAAAr6E,QACA+Z,EAAA4wE,qBAAAvQ,EAAAuQ,qBACA,GAAAr5E,MAAAq8B,EAAAR,QAAAq8C,cAAA77C,EAAA42B,GAAA52B,EAAA42B,GAAAn+C,QAAAokE,kBAAA,KAOA,QAAAI,IAAAj9C,EAAAysC,EAAAmQ,EAAAnkE,GACA,GAAAgkE,GAAAz8C,EAAAR,QAAAwC,EAAAvpB,GAAAA,EAAAupB,MAMA46C,IAAAH,EAAAV,WACA/5C,GAAAy6C,EAAAR,eAAAj6C,IACAy6C,EAAAb,aAAAa,EAAAZ,aAAAY,EAAAT,YAAAh6C,GACA+6C,GAAA/8C,EAAAgC,EAAAmpB,EAAAsxB,EAAA1oF,MAAA04E,IACAgQ,EAAA1oF,KAAA0oF,EAAA1oF,KAAA1B,OAAA,GAAAo6E,EAEAqQ,GAAArQ,EAAAgQ,EAAA1oF,MAEA0oF,EAAAZ,aAAA,GAAAl4E,MACA84E,EAAAR,cAAAj6C,EACAy6C,EAAAV,UAAAa,EACAnkE,GAAAA,EAAAykE,aAAA,GACAX,GAAAE,EAAAf,QAGA,QAAAoB,IAAArQ,EAAA0Q,GACA,GAAA31E,GAAA2jD,EAAAgyB,EACA31E,IAAAA,EAAAklE,QAAAllE,EAAA41E,OAAA3Q,IACA0Q,EAAAllF,KAAAw0E,GAIA,QAAA6P,IAAAt8C,EAAAxG,EAAA1T,EAAAuF,GACA,GAAAgyD,GAAA7jD,EAAA,SAAAwG,EAAA/7B,IAAA5M,EAAA,CACA2oC,GAAAgwB,KAAAl0D,KAAAC,IAAAikC,EAAAl9B,MAAAgjB,GAAAhqB,KAAAkvD,IAAAhrB,EAAAl9B,MAAAk9B,EAAA4K,KAAAvf,GAAA,SAAAq5B,GACAA,EAAA0N,eACAirB,IAAAA,EAAA7jD,EAAA,SAAAwG,EAAA/7B,SAAA5M,GAAAqtD,EAAA0N,eACA/6D,IAMA,QAAAimF,IAAArrB,GACA,IAAAA,EAAA,MAAA,KAEA,KAAA,GADA7G,GACAn4D,EAAA,EAAAA,EAAAg/D,EAAA5/D,SAAAY,EACAg/D,EAAAh/D,GAAA8+D,OAAAwrB,kBAAAnyB,IAAAA,EAAA6G,EAAA99D,MAAA,EAAAlB,IACAm4D,GAAAA,EAAAnzD,KAAAg6D,EAAAh/D,GAEA,OAAAm4D,GAAAA,EAAA/4D,OAAA+4D,EAAA,KAAA6G,EAIA,QAAAurB,IAAAx9C,EAAAxG,GACA,GAAA85B,GAAA95B,EAAA,SAAAwG,EAAA/7B,GACA,KAAAqvD,EAAA,MAAA,KAEA,KAAA,GADAb,MACAx/D,EAAA,EAAAA,EAAAumC,EAAAznC,KAAAM,SAAAY,EACAw/D,EAAAx6D,KAAAqlF,GAAAhqB,EAAArgE,IACA,OAAAw/D,GAOA,QAAAgrB,IAAAz9C,EAAAxG,GACA,GAAA9f,GAAA8jE,GAAAx9C,EAAAxG,GACAkkD,EAAAzqB,EAAAjzB,EAAAxG,EACA,KAAA9f,EAAA,MAAAgkE,EACA,KAAAA,EAAA,MAAAhkE,EAEA,KAAA,GAAAzmB,GAAA,EAAAA,EAAAymB,EAAArnB,SAAAY,EAAA,CACA,GAAA0qF,GAAAjkE,EAAAzmB,GAAA2qF,EAAAF,EAAAzqF,EACA,IAAA0qF,GAAAC,EACA3rB,EAAA,IAAA,GAAAv8D,GAAA,EAAAA,EAAAkoF,EAAAvrF,SAAAqD,EAAA,CAEA,IAAA,GADA4mC,GAAAshD,EAAAloF,GACAE,EAAA,EAAAA,EAAA+nF,EAAAtrF,SAAAuD,EACA,GAAA+nF,EAAA/nF,GAAAm8D,QAAAz1B,EAAAy1B,OAAA,QAAAE,EACA0rB,GAAA1lF,KAAAqkC,OAEAshD,KACAlkE,EAAAzmB,GAAA2qF,GAGA,MAAAlkE,GAKA,QAAAmkE,IAAArkF,EAAAskF,EAAAC,GAEA,IAAA,GADAvf,MACAvrE,EAAA,EAAAA,EAAAuG,EAAAnH,SAAAY,EAAA,CACA,GAAA6F,GAAAU,EAAAvG,EACA,IAAA6F,EAAA4zE,OACAlO,EAAAvmE,KAAA8lF,EAAA5E,GAAA78E,UAAA0hF,SAAAjrF,KAAA+F,GAAAA,OADA,CAIA,GAAA6qE,GAAA7qE,EAAA6qE,QAAAsa,IACAzf,GAAAvmE,MAAA0rE,QAAAsa,GACA,KAAA,GAAAvoF,GAAA,EAAAA,EAAAiuE,EAAAtxE,SAAAqD,EAAA,CACA,GAAA8jC,GAAAmqC,EAAAjuE,GAAA0B,EAAA,MAEA,IADA6mF,EAAAhmF,MAAA6tB,KAAA0T,EAAA1T,KAAAuF,GAAAmO,EAAAnO,GAAAt5B,KAAAynC,EAAAznC,OACA+rF,EAAA,IAAA,GAAAtlE,KAAAghB,IAAApiC,EAAAohB,EAAAhlB,MAAA,mBACA0O,EAAA47E,EAAAI,OAAA9mF,EAAA,MAAA,IACA+zD,EAAA8yB,GAAAzlE,GAAAghB,EAAAhhB,SACAghB,GAAAhhB,MAKA,MAAAgmD,GAWA,QAAA2f,IAAAn+C,EAAA2Z,EAAA3nD,EAAAw4E,GACA,GAAAxqC,EAAA42B,IAAA52B,EAAA42B,GAAApgE,QAAA4K,OAAA4+B,EAAAtmC,OAAA,CACA,GAAAiuD,GAAAhO,EAAAgO,MACA,IAAA6iB,EAAA,CACA,GAAA4T,GAAAptB,EAAAh/D,EAAA21D,GAAA,CACAy2B,IAAAptB,EAAAwZ,EAAA7iB,GAAA,GACAA,EAAA31D,EACAA,EAAAw4E,GACA4T,GAAAptB,EAAAh/D,EAAAw4E,GAAA,IACAx4E,EAAAw4E,GAGA,MAAA,IAAA0O,IAAAvxB,EAAA31D,GAEA,MAAA,IAAAknF,IAAA1O,GAAAx4E,EAAAA,GAKA,QAAAqsF,IAAAr+C,EAAAhuC,EAAAw4E,EAAA/xD,GACA6lE,GAAAt+C,EAAA,GAAAm5C,KAAAgF,GAAAn+C,EAAAA,EAAAysC,IAAAJ,UAAAr6E,EAAAw4E,IAAA,GAAA/xD,GAKA,QAAA8lE,IAAAv+C,EAAAw+C,EAAA/lE,GAEA,IAAA,GADA2yC,MACAn4D,EAAA,EAAAA,EAAA+sC,EAAAysC,IAAAC,OAAAr6E,OAAAY,IACAm4D,EAAAn4D,GAAAkrF,GAAAn+C,EAAAA,EAAAysC,IAAAC,OAAAz5E,GAAAurF,EAAAvrF,GAAA,KACA,IAAAwrF,GAAA1F,GAAA3tB,EAAAprB,EAAAysC,IAAAE,UACA2R,IAAAt+C,EAAAy+C,EAAAhmE,GAIA,QAAAimE,IAAA1+C,EAAA/sC,EAAA0mD,EAAAlhC,GACA,GAAAi0D,GAAA1sC,EAAAysC,IAAAC,OAAAv4E,MAAA,EACAu4E,GAAAz5E,GAAA0mD,EACA2kC,GAAAt+C,EAAA+4C,GAAArM,EAAA1sC,EAAAysC,IAAAE,WAAAl0D,GAIA,QAAAkmE,IAAA3+C,EAAA2nB,EAAA31D,EAAAymB,GACA6lE,GAAAt+C,EAAAo5C,GAAAzxB,EAAA31D,GAAAymB,GAKA,QAAAmmE,IAAA5+C,EAAAysC,EAAAh0D,GACA,GAAAqc,IACA43C,OAAAD,EAAAC,OACA7wB,OAAA,SAAA6wB,GACA,GAAAmS,GAAAntF,IAEAA,MAAAg7E,SACA,KAAA,GAAAz5E,GAAA,EAAAA,EAAAy5E,EAAAr6E,OAAAY,IACA4rF,EAAAnS,OAAAz5E,GAAA,GAAAimF,IAAA5nB,EAAAtxB,EAAA0sC,EAAAz5E,GAAA00D,QACA2J,EAAAtxB,EAAA0sC,EAAAz5E,GAAAjB,QAEAgwC,OAAAvpB,GAAAA,EAAAupB,OAIA,OAFAg3B,IAAAh5B,EAAA,wBAAAA,EAAAlL,GACAkL,EAAA42B,IAAAoC,GAAAh5B,EAAA42B,GAAA,wBAAA52B,EAAA42B,GAAA9hC,GACAA,EAAA43C,QAAAD,EAAAC,OAAAqM,GAAAjkD,EAAA43C,OAAA53C,EAAA43C,OAAAr6E,OAAA,GACAo6E,EAGA,QAAAqS,IAAA9+C,EAAAysC,EAAAh0D,GACA,GAAA1kB,GAAAisC,EAAAR,QAAAzrC,KAAAgP,EAAAooD,EAAAp3D,EACAgP,IAAAA,EAAA2pE,QACA34E,EAAAA,EAAA1B,OAAA,GAAAo6E,EACAsS,GAAA/+C,EAAAysC,EAAAh0D,IAEA6lE,GAAAt+C,EAAAysC,EAAAh0D,GAKA,QAAA6lE,IAAAt+C,EAAAysC,EAAAh0D,GACAsmE,GAAA/+C,EAAAysC,EAAAh0D,GACAwkE,GAAAj9C,EAAAA,EAAAysC,IAAAzsC,EAAA42B,GAAA52B,EAAA42B,GAAA0C,MAAAr1D,GAAA+6E,IAAAvmE,GAGA,QAAAsmE,IAAA/+C,EAAAysC,EAAAh0D,IACA+gD,GAAAx5B,EAAA,0BAAAA,EAAA42B,IAAA4C,GAAAx5B,EAAA42B,GAAA,4BACA6V,EAAAmS,GAAA5+C,EAAAysC,EAAAh0D,GAEA,IAAAwuD,GAAAxuD,GAAAA,EAAAwuD,OACAjW,EAAAyb,EAAAJ,UAAAr6E,KAAAguC,EAAAysC,IAAAJ,UAAAr6E,MAAA,GAAA,EAAA,EACAitF,IAAAj/C,EAAAk/C,GAAAl/C,EAAAysC,EAAAxF,GAAA,IAEAxuD,GAAAA,EAAAiY,UAAA,IAAAsP,EAAA42B,IACAid,GAAA7zC,EAAA42B,IAGA,QAAAqoB,IAAAj/C,EAAAysC,GACAA,EAAA2Q,OAAAp9C,EAAAysC,OAEAzsC,EAAAysC,IAAAA,EAEAzsC,EAAA42B,KACA52B,EAAA42B,GAAA0C,MAAA8a,YAAAp0C,EAAA42B,GAAA0C,MAAAib,kBAAA,EACAnb,GAAAp5B,EAAA42B,KAEAyM,GAAArjC,EAAA,iBAAAA,IAKA,QAAAm/C,IAAAn/C,GACAi/C,GAAAj/C,EAAAk/C,GAAAl/C,EAAAA,EAAAysC,IAAA,MAAA,GAAA2S,IAKA,QAAAF,IAAAl/C,EAAAysC,EAAAxF,EAAAoY,GAEA,IAAA,GADAj0B,GACAn4D,EAAA,EAAAA,EAAAw5E,EAAAC,OAAAr6E,OAAAY,IAAA,CACA,GAAA0mD,GAAA8yB,EAAAC,OAAAz5E,GACAymB,EAAA+yD,EAAAC,OAAAr6E,QAAA2tC,EAAAysC,IAAAC,OAAAr6E,QAAA2tC,EAAAysC,IAAAC,OAAAz5E,GACAqsF,EAAAC,GAAAv/C,EAAA2Z,EAAAgO,OAAAjuC,GAAAA,EAAAiuC,OAAAsf,EAAAoY,GACAG,EAAAD,GAAAv/C,EAAA2Z,EAAA3nD,KAAA0nB,GAAAA,EAAA1nB,KAAAi1E,EAAAoY,IACAj0B,GAAAk0B,GAAA3lC,EAAAgO,QAAA63B,GAAA7lC,EAAA3nD,QACAo5D,IAAAA,EAAAqhB,EAAAC,OAAAv4E,MAAA,EAAAlB,IACAm4D,EAAAn4D,GAAA,GAAAimF,IAAAoG,EAAAE,IAGA,MAAAp0B,GAAA2tB,GAAA3tB,EAAAqhB,EAAAE,WAAAF,EAGA,QAAAgT,IAAAz/C,EAAArnB,EAAA+mE,EAAAx6E,EAAAm6E,GACA,GAAA36B,GAAAkL,EAAA5vB,EAAArnB,EAAA+rC,KACA,IAAAA,EAAA0N,YAAA,IAAA,GAAAn/D,GAAA,EAAAA,EAAAyxD,EAAA0N,YAAA//D,SAAAY,EAAA,CACA,GAAAqiE,GAAA5Q,EAAA0N,YAAAn/D,GAAAmE,EAAAk+D,EAAAvD,MACA,KAAA,MAAAuD,EAAAxvC,OAAA1uB,EAAAu7D,cAAA2C,EAAAxvC,MAAAnN,EAAAm2B,GAAAwmB,EAAAxvC,KAAAnN,EAAAm2B,OACA,MAAAwmB,EAAAjqC,KAAAj0B,EAAA07D,eAAAwC,EAAAjqC,IAAA1S,EAAAm2B,GAAAwmB,EAAAjqC,GAAA1S,EAAAm2B,KAAA,CACA,GAAAuwC,IACArmB,GAAA5hE,EAAA,qBACAA,EAAAmmF,mBAAA,CACA,GAAA74B,EAAA0N,YACA,GAAAn/D,CAAA,UADA,MAIA,IAAAmE,EAAAuoF,OAAA,QAEA,IAAAD,EAAA,CACA,GAAAE,GAAAxoF,EAAAsO,KAAAR,EAAA,EAAA,GAAA,GAAAirD,EAAA,MAGA,KAFAjrD,EAAA,EAAA9N,EAAA07D,eAAA17D,EAAAu7D,iBACAitB,EAAAC,GAAA7/C,EAAA4/C,GAAA16E,EAAA06E,GAAAA,EAAAl7B,MAAA/rC,EAAA+rC,KAAAA,EAAA,OACAk7B,GAAAA,EAAAl7B,MAAA/rC,EAAA+rC,OAAAyL,EAAAa,EAAA4uB,EAAAF,MAAAx6E,EAAA,EAAAirD,EAAA,EAAAA,EAAA,GACA,MAAAsvB,IAAAz/C,EAAA4/C,EAAAjnE,EAAAzT,EAAAm6E,GAGA,GAAAS,GAAA1oF,EAAAsO,KAAAR,EAAA,GAAA,EAAA,EAGA,QAFAA,EAAA,EAAA9N,EAAAu7D,cAAAv7D,EAAA07D,kBACAgtB,EAAAD,GAAA7/C,EAAA8/C,EAAA56E,EAAA46E,EAAAp7B,MAAA/rC,EAAA+rC,KAAAA,EAAA,OACAo7B,EAAAL,GAAAz/C,EAAA8/C,EAAAnnE,EAAAzT,EAAAm6E,GAAA,MAGA,MAAA1mE,GAIA,QAAA4mE,IAAAv/C,EAAArnB,EAAA+mE,EAAAzY,EAAAoY,GACA,GAAAn6E,GAAA+hE,GAAA,EACA3T,EAAAmsB,GAAAz/C,EAAArnB,EAAA+mE,EAAAx6E,EAAAm6E,KACAA,GAAAI,GAAAz/C,EAAArnB,EAAA+mE,EAAAx6E,GAAA,IACAu6E,GAAAz/C,EAAArnB,EAAA+mE,GAAAx6E,EAAAm6E,KACAA,GAAAI,GAAAz/C,EAAArnB,EAAA+mE,GAAAx6E,GAAA,EACA,OAAAouD,GAIAA,GAHAtzB,EAAA+/C,UAAA,EACAjvB,EAAA9wB,EAAAl9B,MAAA,IAKA,QAAA+8E,IAAA7/C,EAAArnB,EAAAzT,EAAAw/C,GACA,MAAAx/C,GAAA,GAAA,GAAAyT,EAAAm2B,GACAn2B,EAAA+rC,KAAA1kB,EAAAl9B,MAAAwuD,EAAAtxB,EAAA8wB,EAAAn4C,EAAA+rC,KAAA,IACA,KACAx/C,EAAA,GAAAyT,EAAAm2B,KAAA4V,GAAAkL,EAAA5vB,EAAArnB,EAAA+rC,OAAA3yD,KAAAM,OACAsmB,EAAA+rC,KAAA1kB,EAAAl9B,MAAAk9B,EAAA4K,KAAA,EAAAkmB,EAAAn4C,EAAA+rC,KAAA,EAAA,GACA,KAEA,GAAAoM,GAAAn4C,EAAA+rC,KAAA/rC,EAAAm2B,GAAA5pC,GAIA,QAAA86E,IAAAppB,GACAA,EAAA0nB,aAAAxtB,EAAA8F,EAAA0jB,YAAA,GAAAxpB,EAAA8F,EAAAR,YAAAgpB,IAMA,QAAAa,IAAAjgD,EAAAxG,EAAAqiB,GACA,GAAA/mB,IACAknB,UAAA,EACAl2B,KAAA0T,EAAA1T,KACAuF,GAAAmO,EAAAnO,GACAt5B,KAAAynC,EAAAznC,KACAiwC,OAAAxI,EAAAwI,OACAoL,OAAA,WAAA,MAAAtY,GAAAknB,UAAA,GAWA,OATAH,KAAA/mB,EAAA+mB,OAAA,SAAA/1B,EAAAuF,EAAAt5B,EAAAiwC,GACAlc,IAAAgP,EAAAhP,KAAAwrC,EAAAtxB,EAAAla,IACAuF,IAAAyJ,EAAAzJ,GAAAimC,EAAAtxB,EAAA3U,IACAt5B,IAAA+iC,EAAA/iC,KAAAA,GACA61B,SAAAoa,IAAAlN,EAAAkN,OAAAA,KAEAg3B,GAAAh5B,EAAA,eAAAA,EAAAlL,GACAkL,EAAA42B,IAAAoC,GAAAh5B,EAAA42B,GAAA,eAAA52B,EAAA42B,GAAA9hC,GAEAA,EAAAknB,SAAA,MACAl2B,KAAAgP,EAAAhP,KAAAuF,GAAAyJ,EAAAzJ,GAAAt5B,KAAA+iC,EAAA/iC,KAAAiwC,OAAAlN,EAAAkN,QAKA,QAAAk+C,IAAAlgD,EAAAxG,EAAA2mD,GACA,GAAAngD,EAAA42B,GAAA,CACA,IAAA52B,EAAA42B,GAAA0C,MAAA,MAAA6c,IAAAn2C,EAAA42B,GAAAspB,IAAAlgD,EAAAxG,EAAA2mD,EACA,IAAAngD,EAAA42B,GAAA/0D,MAAAu+E,cAAA,OAGA,KAAA5mB,GAAAx5B,EAAA,iBAAAA,EAAA42B,IAAA4C,GAAAx5B,EAAA42B,GAAA,mBACAp9B,EAAAymD,GAAAjgD,EAAAxG,GAAA,IADA,CAOA,GAAA53B,GAAA+vD,KAAAwuB,GAAAnsB,GAAAh0B,EAAAxG,EAAA1T,KAAA0T,EAAAnO,GACA,IAAAzpB,EACA,IAAA,GAAA3O,GAAA2O,EAAAvP,OAAA,EAAAY,GAAA,IAAAA,EACAotF,GAAArgD,GAAAla,KAAAlkB,EAAA3O,GAAA6yB,KAAAuF,GAAAzpB,EAAA3O,GAAAo4B,GAAAt5B,KAAAkB,GAAA,IAAAumC,EAAAznC,WAEAsuF,IAAArgD,EAAAxG,IAIA,QAAA6mD,IAAArgD,EAAAxG,GACA,GAAA,GAAAA,EAAAznC,KAAAM,QAAA,IAAAmnC,EAAAznC,KAAA,IAAA,GAAAi/D,EAAAx3B,EAAA1T,KAAA0T,EAAAnO,IAAA,CACA,GAAAsxD,GAAApD,GAAAv5C,EAAAxG,EACAkjD,IAAA18C,EAAAxG,EAAAmjD,EAAA38C,EAAA42B,GAAA52B,EAAA42B,GAAA0C,MAAAr1D,GAAA+6E,KAEAsB,GAAAtgD,EAAAxG,EAAAmjD,EAAA1pB,EAAAjzB,EAAAxG,GACA,IAAA+mD,KAEAzF,IAAA96C,EAAA,SAAAA,EAAAk7C,GACAA,GAAAh5E,EAAAq+E,EAAAvgD,EAAAR,WAAA,IACAghD,GAAAxgD,EAAAR,QAAAhG,GACA+mD,EAAAtoF,KAAA+nC,EAAAR,UAEA8gD,GAAAtgD,EAAAxG,EAAA,KAAAy5B,EAAAjzB,EAAAxG,OAKA,QAAAinD,IAAAzgD,EAAAztC,EAAAmuF,GACA,IAAA1gD,EAAA42B,KAAA52B,EAAA42B,GAAA/0D,MAAAu+E,eAAAM,EAAA,CAQA,IANA,GAAA5nF,GAAA2jF,EAAAz8C,EAAAR,QAAAm9C,EAAA38C,EAAAysC,IACAn9D,EAAA,QAAA/c,EAAAkqF,EAAA1oF,KAAA0oF,EAAAf,OAAAyB,EAAA,QAAA5qF,EAAAkqF,EAAAf,OAAAe,EAAA1oF,KAIAd,EAAA,EACAA,EAAAqc,EAAAjd,SACAyG,EAAAwW,EAAArc,GACAytF,GAAA5nF,EAAA4zE,QAAA5zE,EAAAskF,OAAAp9C,EAAAysC,KAAA3zE,EAAA4zE,QAFAz5E,KAKA,GAAAA,GAAAqc,EAAAjd,OAAA,CAGA,IAFAoqF,EAAAT,WAAAS,EAAAR,cAAA,KAGAnjF,EAAAwW,EAAAtJ,MACAlN,EAAA4zE,QAFA,CAIA,GADAoQ,GAAAhkF,EAAAqkF,GACAuD,IAAA5nF,EAAAskF,OAAAp9C,EAAAysC,KAEA,WADA6R,IAAAt+C,EAAAlnC,GAAAokF,WAAA,GAGAP,GAAA7jF,EAOA,GAAA6nF,KACA7D,IAAAH,EAAAQ,GACAA,EAAAllF,MAAA0rE,QAAAgd,EAAAzE,WAAAO,EAAAP,aACAO,EAAAP,WAAApjF,EAAAojF,cAAAO,EAAAN,aA6BA,KAAA,GA3BA/oF,GAAAomE,GAAAx5B,EAAA,iBAAAA,EAAA42B,IAAA4C,GAAAx5B,EAAA42B,GAAA,gBAEA8F,EAAA,SAAAzpE,GACA,GAAAumC,GAAA1gC,EAAA6qE,QAAA1wE,EAEA,IADAumC,EAAAwI,OAAAzvC,EACAa,IAAA6sF,GAAAjgD,EAAAxG,GAAA,GAEA,MADAlqB,GAAAjd,OAAA,IAIAsuF,GAAA1oF,KAAAmkF,GAAAp8C,EAAAxG,GAEA,IAAA5jB,GAAA3iB,EAAAsmF,GAAAv5C,EAAAxG,GAAA2xB,EAAA77C,EACAgxE,IAAAtgD,EAAAxG,EAAA5jB,EAAA6nE,GAAAz9C,EAAAxG,KACAvmC,GAAA+sC,EAAA42B,IAAA52B,EAAA42B,GAAA8b,gBAAA5sD,KAAA0T,EAAA1T,KAAAuF,GAAAguD,GAAA7/C,IACA,IAAA+mD,KAGAzF,IAAA96C,EAAA,SAAAA,EAAAk7C,GACAA,GAAAh5E,EAAAq+E,EAAAvgD,EAAAR,WAAA,IACAghD,GAAAxgD,EAAAR,QAAAhG,GACA+mD,EAAAtoF,KAAA+nC,EAAAR,UAEA8gD,GAAAtgD,EAAAxG,EAAA,KAAAikD,GAAAz9C,EAAAxG,OAIAg3B,EAAA13D,EAAA6qE,QAAAtxE,OAAA,EAAAm+D,GAAA,IAAAA,EAAA,CACA,GAAAowB,GAAAlkB,EAAAlM,EAEA,IAAAowB,EAAA,MAAAA,GAAAp+E,KAMA,QAAAq+E,IAAA7gD,EAAA8gD,GACA,GAAA,GAAAA,IACA9gD,EAAAl9B,OAAAg+E,EACA9gD,EAAAysC,IAAA,GAAA0M,IAAA7+E,EAAA0lC,EAAAysC,IAAAC,OAAA,SAAA/yB,GAAA,MAAA,IAAAu/B,IACApoB,EAAAnX,EAAAgO,OAAAjD,KAAAo8B,EAAAnnC,EAAAgO,OAAA7Y,IACAgiB,EAAAnX,EAAA3nD,KAAA0yD,KAAAo8B,EAAAnnC,EAAA3nD,KAAA88C,OACA9O,EAAAysC,IAAAE,WACA3sC,EAAA42B,IAAA,CACA0f,GAAAt2C,EAAA42B,GAAA52B,EAAAl9B,MAAAk9B,EAAAl9B,MAAAg+E,EAAAA,EACA,KAAA,GAAAlvF,GAAAouC,EAAA42B,GAAApgE,QAAAU,EAAAtF,EAAAk8D,SAAA52D,EAAAtF,EAAAm8D,OAAA72D,IACA4/E,GAAA92C,EAAA42B,GAAA1/D,EAAA,WAMA,QAAAopF,IAAAtgD,EAAAxG,EAAAmjD,EAAA1qB,GACA,GAAAjyB,EAAA42B,KAAA52B,EAAA42B,GAAA0C,MACA,MAAA6c,IAAAn2C,EAAA42B,GAAA0pB,IAAAtgD,EAAAxG,EAAAmjD,EAAA1qB,EAEA,IAAAz4B,EAAAnO,GAAAq5B,KAAA1kB,EAAAl9B,MAEA,WADA+9E,IAAA7gD,EAAAxG,EAAAznC,KAAAM,OAAA,GAAAmnC,EAAAnO,GAAAq5B,KAAAlrB,EAAA1T,KAAA4+B,MAGA,MAAAlrB,EAAA1T,KAAA4+B,KAAA1kB,EAAAo2B,YAAA,CAGA,GAAA58B,EAAA1T,KAAA4+B,KAAA1kB,EAAAl9B,MAAA,CACA,GAAA1B,GAAAo4B,EAAAznC,KAAAM,OAAA,GAAA2tC,EAAAl9B,MAAA02B,EAAA1T,KAAA4+B,KACAm8B,IAAA7gD,EAAA5+B,GACAo4B,GAAA1T,KAAAgrC,EAAA9wB,EAAAl9B,MAAA,GAAAuoB,GAAAylC,EAAAt3B,EAAAnO,GAAAq5B,KAAAtjD,EAAAo4B,EAAAnO,GAAAyjB,IACA/8C,MAAAo5D,EAAA3xB,EAAAznC,OAAAiwC,OAAAxI,EAAAwI,QAEA,GAAAj/B,GAAAi9B,EAAAo2B,UACA58B,GAAAnO,GAAAq5B,KAAA3hD,IACAy2B,GAAA1T,KAAA0T,EAAA1T,KAAAuF,GAAAylC,EAAA/tD,EAAA6sD,EAAA5vB,EAAAj9B,GAAAhR,KAAAM,QACAN,MAAAynC,EAAAznC,KAAA,IAAAiwC,OAAAxI,EAAAwI,SAGAxI,EAAAunD,QAAAhxB,EAAA/vB,EAAAxG,EAAA1T,KAAA0T,EAAAnO,IAEAsxD,IAAAA,EAAApD,GAAAv5C,EAAAxG,IACAwG,EAAA42B,GAAAoqB,GAAAhhD,EAAA42B,GAAAp9B,EAAAy4B,GACAgoB,GAAAj6C,EAAAxG,EAAAy4B,GACA8sB,GAAA/+C,EAAA28C,EAAAyC,KAKA,QAAA4B,IAAApqB,EAAAp9B,EAAAy4B,GACA,GAAAjyB,GAAA42B,EAAA52B,IAAAxpC,EAAAogE,EAAApgE,QAAAsvB,EAAA0T,EAAA1T,KAAAuF,EAAAmO,EAAAnO,GAEA41D,GAAA,EAAAC,EAAAp7D,EAAA4+B,IACAkS,GAAAn+C,QAAAy/C,eACAgpB,EAAA9wB,EAAAwF,GAAAhG,EAAA5vB,EAAAla,EAAA4+B,QACA1kB,EAAAgwB,KAAAkxB,EAAA71D,EAAAq5B,KAAA,EAAA,SAAAA,GACA,GAAAA,GAAAluD,EAAA24D,QAEA,MADA8xB,IAAA,GACA,KAKAjhD,EAAAysC,IAAAr0E,SAAAohC,EAAA1T,KAAA0T,EAAAnO,KAAA,GACA+tC,GAAAxC,GAEAqjB,GAAAj6C,EAAAxG,EAAAy4B,EAAAoN,GAAAzI,IAEAA,EAAAn+C,QAAAy/C,eACAl4B,EAAAgwB,KAAAkxB,EAAAp7D,EAAA4+B,KAAAlrB,EAAAznC,KAAAM,OAAA,SAAAqyD,GACA,GAAAjZ,GAAAirB,GAAAhS,EACAjZ,GAAAj1C,EAAA44D,gBACA54D,EAAA24D,QAAAzK,EACAluD,EAAA44D,cAAA3jB,EACAj1C,EAAA64D,gBAAA,EACA4xB,GAAA,KAGAA,IAAArqB,EAAA0C,MAAAkb,eAAA,IAIAx0C,EAAAy9B,SAAA3hE,KAAAkvD,IAAAhrB,EAAAy9B,SAAA33C,EAAA4+B,MACAkrB,GAAAhZ,EAAA,IAEA,IAAA2f,GAAA/8C,EAAAznC,KAAAM,QAAAg5B,EAAAq5B,KAAA5+B,EAAA4+B,MAAA,CAEAlrB,GAAA05B,KACAojB,GAAA1f,GACA9wC,EAAA4+B,MAAAr5B,EAAAq5B,MAAA,GAAAlrB,EAAAznC,KAAAM,QAAA0nF,GAAAnjB,EAAA52B,IAAAxG,GAGA88C,GAAA1f,EAAA9wC,EAAA4+B,KAAAr5B,EAAAq5B,KAAA,EAAA6xB,GAFAO,GAAAlgB,EAAA9wC,EAAA4+B,KAAA,OAIA,IAAAy8B,GAAA3nB,GAAA5C,EAAA,WAAAwqB,EAAA5nB,GAAA5C,EAAA,SACA,IAAAwqB,GAAAD,EAAA,CACA,GAAArsD,IACAhP,KAAAA,EAAAuF,GAAAA,EACAt5B,KAAAynC,EAAAznC,KACAgvF,QAAAvnD,EAAAunD,QACA/+C,OAAAxI,EAAAwI,OAEAo/C,IAAA/d,GAAAzM,EAAA,SAAAA,EAAA9hC,GACAqsD,IAAAvqB,EAAA0C,MAAAgb,aAAA1d,EAAA0C,MAAAgb,gBAAAr8E,KAAA68B,GAEA8hC,EAAApgE,QAAAk5D,kBAAA,KAGA,QAAA2xB,IAAArhD,EAAAzE,EAAAzV,EAAAuF,EAAA2W,GAEA,GADA3W,IAAAA,EAAAvF,GACAkrC,EAAA3lC,EAAAvF,GAAA,EAAA,CAAA,GAAA2nD,GAAApiD,CAAAA,GAAAvF,EAAAA,EAAA2nD,EACA,gBAAAlyC,KAAAA,EAAAyE,EAAAshD,WAAA/lD,IACA2kD,GAAAlgD,GAAAla,KAAAA,EAAAuF,GAAAA,EAAAt5B,KAAAwpC,EAAAyG,OAAAA,IAKA,QAAAu/C,IAAA5oE,EAAAmN,EAAAuF,EAAA8kC,GACA9kC,EAAA1S,EAAA+rC,KACA/rC,EAAA+rC,MAAAyL,EACArqC,EAAAnN,EAAA+rC,OACA/rC,EAAA+rC,KAAA5+B,EACAnN,EAAAm2B,GAAA,GAWA,QAAA0yC,IAAA1zC,EAAAhoB,EAAAuF,EAAA8kC,GACA,IAAA,GAAAl9D,GAAA,EAAAA,EAAA66C,EAAAz7C,SAAAY,EAAA,CACA,GAAAwuF,GAAA3zC,EAAA76C,GAAAyuF,GAAA,CACA,IAAAD,EAAA/U,OAAA,CACA+U,EAAAE,SAAAF,EAAA3zC,EAAA76C,GAAAwuF,EAAAzD,WAAAyD,EAAAE,QAAA,EACA,KAAA,GAAAjsF,GAAA,EAAAA,EAAA+rF,EAAA/U,OAAAr6E,OAAAqD,IACA6rF,GAAAE,EAAA/U,OAAAh3E,GAAAiyD,OAAA7hC,EAAAuF,EAAA8kC,GACAoxB,GAAAE,EAAA/U,OAAAh3E,GAAA1D,KAAA8zB,EAAAuF,EAAA8kC,OAJA,CAQA,IAAA,GAAAiS,GAAA,EAAAA,EAAAqf,EAAA9d,QAAAtxE,SAAA+vE,EAAA,CACA,GAAA5sE,GAAAisF,EAAA9d,QAAAvB,EACA,IAAA/2C,EAAA71B,EAAAswB,KAAA4+B,KACAlvD,EAAAswB,KAAAgrC,EAAAt7D,EAAAswB,KAAA4+B,KAAAyL,EAAA36D,EAAAswB,KAAAgpB,IACAt5C,EAAA61B,GAAAylC,EAAAt7D,EAAA61B,GAAAq5B,KAAAyL,EAAA36D,EAAA61B,GAAAyjB,QACA,IAAAhpB,GAAAtwB,EAAA61B,GAAAq5B,KAAA,CACAg9B,GAAA,CACA,QAGAA,IACA5zC,EAAA7qC,OAAA,EAAAhQ,EAAA,GACAA,EAAA,KAKA,QAAAutF,IAAA/D,EAAAjjD,GACA,GAAA1T,GAAA0T,EAAA1T,KAAA4+B,KAAAr5B,EAAAmO,EAAAnO,GAAAq5B,KAAAyL,EAAA32B,EAAAznC,KAAAM,QAAAg5B,EAAAvF,GAAA,CACA07D,IAAA/E,EAAA1oF,KAAA+xB,EAAAuF,EAAA8kC,GACAqxB,GAAA/E,EAAAf,OAAA51D,EAAAuF,EAAA8kC,GAMA,QAAAyxB,IAAA5hD,EAAAvmC,EAAAooF,EAAAjf,GACA,GAAAvS,GAAA52D,EAAAirD,EAAAjrD,CAGA,OAFA,gBAAAA,GAAAirD,EAAAkL,EAAA5vB,EAAAqxB,EAAArxB,EAAAvmC,IACA42D,EAAAD,EAAA32D,GACA,MAAA42D,EAAA,MACAuS,EAAAle,EAAA2L,IAAArwB,EAAA42B,IAAAkgB,GAAA92C,EAAA42B,GAAAvG,EAAAwxB,GACAn9B,GAoOA,QAAAo9B,IAAAlrB,EAAAlS,EAAAyL,GACAqG,GAAA9R,IAAAkS,EAAA0C,OAAA1C,EAAA0C,MAAAzgD,WAAA+9C,EAAA52B,IAAAnnB,YACA86D,GAAA/c,EAAA,KAAAzG,GAGA,QAAA4xB,IAAA/hD,EAAAvmC,EAAAixC,EAAAjyB,GACA,GAAAipD,GAAA,GAAAsgB,IAAAhiD,EAAA0K,EAAAjyB,GACAm+C,EAAA52B,EAAA42B,EAgBA,OAfAA,IAAA8K,EAAAiE,YAAA/O,EAAApgE,QAAAu4D,cAAA,GACA6yB,GAAA5hD,EAAAvmC,EAAA,SAAA,SAAAirD,GACA,GAAAnmB,GAAAmmB,EAAAnmB,UAAAmmB,EAAAnmB,WAIA,IAHA,MAAAmjC,EAAAugB,SAAA1jD,EAAAtmC,KAAAypE,GACAnjC,EAAAt7B,OAAAnH,KAAAkvD,IAAAzsB,EAAAlsC,OAAA,EAAAyJ,KAAAC,IAAA,EAAA2lE,EAAAugB,WAAA,EAAAvgB,GACAA,EAAAhd,KAAAA,EACAkS,IAAAP,GAAAr2B,EAAA0kB,GAAA,CACA,GAAAw9B,GAAA1rB,GAAA9R,GAAA1kB,EAAAnnB,SACAq3C,GAAAxL,EAAAA,EAAAtnD,OAAA0oE,GAAApE,IACAwgB,GAAAvO,GAAA/c,EAAA,KAAA8K,EAAAtkE,QACAw5D,EAAA0C,MAAA+N,aAAA,EAEA,OAAA,IAEAhE,GAAAzM,EAAA,kBAAAA,EAAA8K,EAAA,gBAAAjoE,GAAAA,EAAA22D,EAAA32D,IACAioE,EA6IA,QAAAygB,IAAAniD,EAAAla,EAAAuF,EAAA5S,EAAAlmB,GAIA,GAAAkmB,GAAAA,EAAA2iE,OAAA,MAAAgH,IAAApiD,EAAAla,EAAAuF,EAAA5S,EAAAlmB,EAEA,IAAAytC,EAAA42B,KAAA52B,EAAA42B,GAAA0C,MAAA,MAAA6c,IAAAn2C,EAAA42B,GAAAurB,IAAAniD,EAAAla,EAAAuF,EAAA5S,EAAAlmB,EAEA,IAAAw/D,GAAA,GAAAswB,IAAAriD,EAAAztC,GAAA49D,EAAAa,EAAAlrC,EAAAuF,EAGA,IAFA5S,GAAA6xC,EAAA7xC,EAAAs5C,GAAA,GAEA5B,EAAA,GAAA,GAAAA,GAAA4B,EAAAgC,kBAAA,EACA,MAAAhC,EAQA,IAPAA,EAAAuwB,eAEAvwB,EAAAwD,WAAA,EACAxD,EAAAuE,WAAAtM,EAAA,QAAA+H,EAAAuwB,cAAA,qBACA7pE,EAAA+sD,mBAAAzT,EAAAuE,WAAAhyD,aAAA,mBAAA,QACAmU,EAAAm6C,aAAAb,EAAAuE,WAAA1D,YAAA,IAEAb,EAAAwD,UAAA,CACA,GAAAG,GAAA11B,EAAAla,EAAA4+B,KAAA5+B,EAAAuF,EAAA0mC,IACAjsC,EAAA4+B,MAAAr5B,EAAAq5B,MAAAgR,GAAA11B,EAAA3U,EAAAq5B,KAAA5+B,EAAAuF,EAAA0mC,GACA,KAAA,IAAAvgE,OAAA,mEACAogE,KAGAG,EAAAwwB,cACA7F,GAAA18C,GAAAla,KAAAA,EAAAuF,GAAAA,EAAA2W,OAAA,YAAAhC,EAAAysC,IAAAuS,IAEA,IAAAxK,GAAAgO,EAAA18D,EAAA4+B,KAAAkS,EAAA52B,EAAA42B,EA0BA,IAzBA52B,EAAAgwB,KAAAwyB,EAAAn3D,EAAAq5B,KAAA,EAAA,SAAAA,GACAkS,GAAA7E,EAAAwD,YAAAqB,EAAAn+C,QAAAy/C,cAAAtC,GAAAlR,IAAAkS,EAAApgE,QAAA24D,UACAqlB,GAAA,GACAziB,EAAAwD,WAAAitB,GAAA18D,EAAA4+B,MAAAwL,EAAAxL,EAAA,GACAyN,EAAAzN,EAAA,GAAAoN,GAAAC,EACAywB,GAAA18D,EAAA4+B,KAAA5+B,EAAAgpB,GAAA,KACA0zC,GAAAn3D,EAAAq5B,KAAAr5B,EAAAyjB,GAAA,SACA0zC,IAGAzwB,EAAAwD,WAAAv1B,EAAAgwB,KAAAlqC,EAAA4+B,KAAAr5B,EAAAq5B,KAAA,EAAA,SAAAA,GACA2R,GAAAr2B,EAAA0kB,IAAAwL,EAAAxL,EAAA,KAGAqN,EAAA0wB,cAAArtE,GAAA28C,EAAA,oBAAA,WAAA,MAAAA,GAAArgC,UAEAqgC,EAAAoC,WACAzC,KACA1xB,EAAAR,QAAAzrC,KAAA1B,QAAA2tC,EAAAR,QAAAk8C,OAAArpF,SACA2tC,EAAA0iD,gBAEA3wB,EAAAwD,YACAxD,EAAA9tD,KAAA0+E,GACA5wB,EAAA4tB,QAAA,GAEA/oB,EAAA,CAGA,GADA4d,IAAA5d,EAAA0C,MAAAkb,eAAA,GACAziB,EAAAwD,UACA+gB,GAAA1f,EAAA9wC,EAAA4+B,KAAAr5B,EAAAq5B,KAAA,OACA,IAAAqN,EAAAnqD,WAAAmqD,EAAA/iC,OAAA+iC,EAAA6O,YAAA7O,EAAA8O,UAAA9O,EAAAt8D,IACA,IAAA,GAAAxC,GAAA6yB,EAAA4+B,KAAAzxD,GAAAo4B,EAAAq5B,KAAAzxD,IAAA6jF,GAAAlgB,EAAA3jE,EAAA,OACA8+D,GAAA4tB,QAAAR,GAAAvoB,EAAA52B,KACAqjC,GAAAzM,EAAA,cAAAA,EAAA7E,GAEA,MAAAA,GAgCA,QAAAqwB,IAAApiD,EAAAla,EAAAuF,EAAA5S,EAAAlmB,GACAkmB,EAAA6xC,EAAA7xC,GACAA,EAAA2iE,QAAA,CACA,IAAAnnB,IAAAkuB,GAAAniD,EAAAla,EAAAuF,EAAA5S,EAAAlmB,IAAA85E,EAAApY,EAAA,GACAyN,EAAAjpD,EAAA69C,UAQA,OAPAwkB,IAAA96C,EAAA,SAAAA,GACA0hC,IAAAjpD,EAAA69C,WAAAoL,EAAArxD,WAAA,IACA4jD,EAAAh8D,KAAAkqF,GAAAniD,EAAAsxB,EAAAtxB,EAAAla,GAAAwrC,EAAAtxB,EAAA3U,GAAA5S,EAAAlmB,GACA,KAAA,GAAAU,GAAA,EAAAA,EAAA+sC,EAAAm7C,OAAA9oF,SAAAY,EACA,GAAA+sC,EAAAm7C,OAAAloF,GAAA2vF,SAAA,MACAvW,GAAAlhB,EAAA8I,KAEA,GAAA4uB,IAAA5uB,EAAAoY,GAGA,QAAAyW,IAAA9iD,GACA,MAAAA,GAAA+iD,UAAAjyB,EAAA9wB,EAAAl9B,MAAA,GAAAk9B,EAAAsxB,QAAAR,EAAA9wB,EAAAo2B,aAAA,SAAAh/D,GAAA,MAAAA,GAAAoT,SAGA,QAAAw4E,IAAAhjD,EAAAi0B,GACA,IAAA,GAAAhhE,GAAA,EAAAA,EAAAghE,EAAA5hE,OAAAY,IAAA,CACA,GAAA8+D,GAAAkC,EAAAhhE,GAAA0lB,EAAAo5C,EAAArsD,OACAu9E,EAAAjjD,EAAAsxB,QAAA34C,EAAAmN,MAAAo9D,EAAAljD,EAAAsxB,QAAA34C,EAAA0S,GACA,IAAA2lC,EAAAiyB,EAAAC,GAAA,CACA,GAAAC,GAAAhB,GAAAniD,EAAAijD,EAAAC,EAAAnxB,EAAAsa,QAAAta,EAAAsa,QAAA95E,KACAw/D,GAAAkC,QAAAh8D,KAAAkrF,GACAA,EAAA34E,OAAAunD,IAKA,QAAAqxB,IAAAnvB,GAaA,IAAA,GAZAyI,GAAA,SAAAzpE,GACA,GAAA8+D,GAAAkC,EAAAhhE,GAAAkoF,GAAAppB,EAAAsa,QAAArsC,IACA86C,IAAA/oB,EAAAsa,QAAArsC,IAAA,SAAApuC,GAAA,MAAAupF,GAAAljF,KAAArG,IACA,KAAA,GAAA8D,GAAA,EAAAA,EAAAq8D,EAAAkC,QAAA5hE,OAAAqD,IAAA,CACA,GAAA2tF,GAAAtxB,EAAAkC,QAAAv+D,EACAwM,GAAAi5E,EAAAkI,EAAArjD,OAAA,IACAqjD,EAAA74E,OAAA,KACAunD,EAAAkC,QAAAhxD,OAAAvN,IAAA,MAKAzC,EAAA,EAAAA,EAAAghE,EAAA5hE,OAAAY,IAAAypE,EAAAzpE,GA6aA,QAAAqwF,IAAAzvF,GACA,GAAA+iE,GAAAllE,IAEA,IADA6xF,GAAA3sB,IACAqC,GAAArC,EAAA/iE,KAAAmyE,GAAApP,EAAApgE,QAAA3C,GAAA,CAEA8lE,GAAA9lE,GACA25D,KAAAg2B,IAAA,GAAA7/E,MACA,IAAAgV,GAAAkzD,GAAAjV,EAAA/iE,GAAA,GAAAmxD,EAAAnxD,EAAA4vF,aAAAz+B,KACA,IAAArsC,IAAAi+C,EAAA8sB,aAGA,GAAA1+B,GAAAA,EAAA3yD,QAAAZ,OAAAkyF,YAAAlyF,OAAAmyF,KAuBA,IAAA,GAtBAvsF,GAAA2tD,EAAA3yD,OAAAN,EAAA0M,MAAApH,GAAAwsF,EAAA,EACAC,EAAA,SAAA34E,EAAAlY,GACA,IAAA2jE,EAAAn+C,QAAAsrE,oBACA7hF,EAAA00D,EAAAn+C,QAAAsrE,mBAAA54E,EAAA5Y,QAAA,EADA,CAIA,GAAAyxF,GAAA,GAAAL,WACAK,GAAAxiE,OAAA20D,GAAAvf,EAAA,WACA,GAAA5pD,GAAAg3E,EAAAnyE,MAGA,IAFA,0BAAA1e,KAAA6Z,KAAAA,EAAA,IACAjb,EAAAkB,GAAA+Z,IACA62E,GAAAxsF,EAAA,CACAshB,EAAA24C,EAAAsF,EAAA52B,IAAArnB,EACA,IAAA6gB,IAAA1T,KAAAnN,EAAA0S,GAAA1S,EACA5mB,KAAA6kE,EAAA52B,IAAAshD,WAAAvvF,EAAAuO,KAAAs2D,EAAA52B,IAAAikD,kBACAjiD,OAAA,QACAk+C,IAAAtpB,EAAA52B,IAAAxG,GACAslD,GAAAloB,EAAA52B,IAAAo5C,GAAAzgE,EAAA0gE,GAAA7/C,QAGAwqD,EAAAE,WAAA/4E,KAEAlY,EAAA,EAAAA,EAAAoE,IAAApE,EAAA6wF,EAAA9+B,EAAA/xD,GAAAA,OACA,CAEA,GAAA2jE,EAAA/0D,MAAAsiF,cAAAvtB,EAAA52B,IAAAysC,IAAAr0E,SAAAugB,IAAA,EAIA,MAHAi+C,GAAA/0D,MAAAsiF,aAAAtwF,OAEA+I,YAAA,WAAA,MAAAg6D,GAAApgE,QAAAkU,MAAAT,SAAA,GAGA,KACA,GAAAm6E,GAAAvwF,EAAA4vF,aAAAY,QAAA,OACA,IAAAD,EAAA,CACA,GAAA95E,EAIA,IAHAssD,EAAA/0D,MAAAsiF,eAAAvtB,EAAA/0D,MAAAsiF,aAAA3lB,OACAl0D,EAAAssD,EAAA0tB,kBACAvF,GAAAnoB,EAAA52B,IAAAo5C,GAAAzgE,EAAAA,IACArO,EAAA,IAAA,GAAAkmD,GAAA,EAAAA,EAAAlmD,EAAAjY,SAAAm+D,EACA6wB,GAAAzqB,EAAA52B,IAAA,GAAA11B,EAAAkmD,GAAA7I,OAAAr9C,EAAAkmD,GAAAx+D,KAAA,OACA4kE,GAAA2tB,iBAAAH,EAAA,SAAA,SACAxtB,EAAApgE,QAAAkU,MAAAT,SAGA,MAAApW,OAIA,QAAAqyC,IAAA0wB,EAAA/iE,GACA,GAAA25D,MAAAoJ,EAAA/0D,MAAAsiF,eAAA,GAAAxgF,MAAA6/E,GAAA,KAAA,WAAA3pB,IAAAhmE,EACA,KAAAolE,GAAArC,EAAA/iE,KAAAmyE,GAAApP,EAAApgE,QAAA3C,KAEAA,EAAA4vF,aAAAe,QAAA,OAAA5tB,EAAA6tB,gBACA5wF,EAAA4vF,aAAAiB,cAAA,WAIA7wF,EAAA4vF,aAAAkB,eAAAC,IAAA,CACA,GAAA3jD,GAAA8oB,EAAA,MAAA,KAAA,KAAA,oCACA9oB,GAAAzmC,IAAA,6EACAu2E,KACA9vC,EAAA9lC,MAAA8lC,EAAA7jC,OAAA,EACAw5D,EAAApgE,QAAAq8C,QAAA5gD,YAAAgvC,GAEAA,EAAA4jD,KAAA5jD,EAAAxO,WAEA5+B,EAAA4vF,aAAAkB,aAAA1jD,EAAA,EAAA,GACA8vC,IAAA9vC,EAAA/uC,WAAAC,YAAA8uC,IAIA,QAAA6jD,IAAAluB,EAAA/iE,GACA,GAAA8kB,GAAAkzD,GAAAjV,EAAA/iE,EACA,IAAA8kB,EAAA,CACA,GAAAosE,GAAAxzF,SAAA4F,wBACA21E,IAAAlW,EAAAj+C,EAAAosE,GACAnuB,EAAApgE,QAAAwuF,aACApuB,EAAApgE,QAAAwuF,WAAAj7B,EAAA,MAAA,KAAA,6CACA6M,EAAApgE,QAAAs2D,UAAAp3C,aAAAkhD,EAAApgE,QAAAwuF,WAAApuB,EAAApgE,QAAAm2D,YAEA7C,EAAA8M,EAAApgE,QAAAwuF,WAAAD,IAGA,QAAAxB,IAAA3sB,GACAA,EAAApgE,QAAAwuF,aACApuB,EAAApgE,QAAAs2D,UAAA36D,YAAAykE,EAAApgE,QAAAwuF,YACApuB,EAAApgE,QAAAwuF,WAAA,MAQA,QAAAC,IAAA5vF,GACA,GAAA9D,SAAA+E,KAAA6N,uBAEA,IAAA,GADA+gF,GAAA3zF,SAAA+E,KAAA6N,uBAAA,cACAlR,EAAA,EAAAA,EAAAiyF,EAAA7yF,OAAAY,IAAA,CACA,GAAA2jE,GAAAsuB,EAAAjyF,GAAA02D,UACAiN,IAAAvhE,EAAAuhE,IAKA,QAAAuuB,MACAC,KACAC,KACAD,IAAA,GAEA,QAAAC,MAEA,GAAAC,EACAlwE,IAAA3jB,OAAA,SAAA,WACA,MAAA6zF,IAAAA,EAAA1oF,WAAA,WACA0oF,EAAA,KACAL,GAAAM,KACA,QAGAnwE,GAAA3jB,OAAA,OAAA,WAAA,MAAAwzF,IAAAtsC,MAGA,QAAA4sC,IAAA3uB,GACA,GAAAhlE,GAAAglE,EAAApgE,OACA5E,GAAAy8D,gBAAAz8D,EAAAihD,QAAA3kB,cAAAt8B,EAAA08D,eAAA18D,EAAAihD,QAAApkB,cAGA78B,EAAAo9D,gBAAAp9D,EAAAq9D,iBAAAr9D,EAAAs9D,eAAA,KACAt9D,EAAA+8D,mBAAA,EACAiI,EAAA4uB,WAkEA,QAAAC,IAAAl3E,GACA,GAAA6lD,GAAA7lD,EAAA3M,MAAA,SACA2M,GAAA6lD,EAAAA,EAAA/hE,OAAA,EAEA,KAAA,GADAqzF,GAAAC,EAAAvkF,EAAAwkF,EACA3yF,EAAA,EAAAA,EAAAmhE,EAAA/hE,OAAA,EAAAY,IAAA,CACA,GAAA4yF,GAAAzxB,EAAAnhE,EACA,IAAA,kBAAAE,KAAA0yF,GAAAD,GAAA,MACA,IAAA,YAAAzyF,KAAA0yF,GAAAH,GAAA,MACA,IAAA,sBAAAvyF,KAAA0yF,GAAAF,GAAA,MACA,CAAA,IAAA,cAAAxyF,KAAA0yF,GACA,KAAA,IAAAr0F,OAAA,+BAAAq0F,EADAzkF,IAAA,GAOA,MAJAskF,KAAAn3E,EAAA,OAAAA,GACAo3E,IAAAp3E,EAAA,QAAAA,GACAq3E,IAAAr3E,EAAA,OAAAA,GACAnN,IAAAmN,EAAA,SAAAA,GACAA,EAQA,QAAAu3E,IAAAC,GACA,GAAAvnB,KACA,KAAA,GAAAwnB,KAAAD,GAAA,GAAAA,EAAA3jF,eAAA4jF,GAAA,CACA,GAAAhhF,GAAA+gF,EAAAC,EACA,IAAA,mCAAA7yF,KAAA6yF,GAAA,QACA,IAAA,OAAAhhF,EAAA,OAAA+gF,GAAAC,EAAA,UAGA,IAAA,GADA77C,GAAA7vC,EAAA0rF,EAAApkF,MAAA,KAAA6jF,IACAxyF,EAAA,EAAAA,EAAAk3C,EAAA93C,OAAAY,IAAA,CACA,GAAA2oB,GAAA,OAAArN,EAAA,MACAtb,IAAAk3C,EAAA93C,OAAA,GACAkc,EAAA47B,EAAA7pC,KAAA,KACAsb,EAAA5W,IAEAuJ,EAAA47B,EAAAh2C,MAAA,EAAAlB,EAAA,GAAAqN,KAAA,KACAsb,EAAA,MAEA,IAAAxP,GAAAoyD,EAAAjwD,EACA,IAAAnC,GACA,GAAAA,GAAAwP,EAAA,KAAA,IAAApqB,OAAA,6BAAA+c,OADAiwD,GAAAjwD,GAAAqN,QAGAmqE,GAAAC,GAEA,IAAA,GAAAxtE,KAAAgmD,GAAAunB,EAAAvtE,GAAAgmD,EAAAhmD,EACA,OAAAutE,GAGA,QAAAE,IAAAhyE,EAAA8kD,EAAAt/D,EAAAmlB,GACAm6C,EAAAmtB,GAAAntB,EACA,IAAAzF,GAAAyF,EAAAhmE,KAAAgmE,EAAAhmE,KAAAkhB,EAAA2K,GAAAm6C,EAAA9kD,EACA,IAAAq/C,KAAA,EAAA,MAAA,SACA,IAAA,QAAAA,EAAA,MAAA,OACA,IAAA,MAAAA,GAAA75D,EAAA65D,GAAA,MAAA,SAEA,IAAAyF,EAAAotB,YAAA,CACA,GAAA,kBAAAnkF,OAAA1F,UAAA6F,SAAApP,KAAAgmE,EAAAotB,aACA,MAAAF,IAAAhyE,EAAA8kD,EAAAotB,YAAA1sF,EAAAmlB,EACA,KAAA,GAAA3rB,GAAA,EAAAA,EAAA8lE,EAAAotB,YAAA9zF,OAAAY,IAAA,CACA,GAAA4e,GAAAo0E,GAAAhyE,EAAA8kD,EAAAotB,YAAAlzF,GAAAwG,EAAAmlB,EACA,IAAA/M,EAAA,MAAAA,KAOA,QAAAu0E,IAAAphF,GACA,GAAAuJ,GAAA,gBAAAvJ,GAAAA,EAAAqhF,GAAArhF,EAAAkP,QACA,OAAA,QAAA3F,GAAA,OAAAA,GAAA,SAAAA,GAAA,OAAAA,EAIA,QAAA4pC,IAAAr/C,EAAAwtF,GACA,GAAAvV,IAAA,IAAAj4E,EAAAob,SAAApb,EAAA,KAAA,OAAA,CACA,IAAA4yD,GAAA26B,GAAAvtF,EAAAob,SAAA3F,EAAAm9C,CACA,OAAA,OAAAn9C,IAAAzV,EAAAytF,cACAztF,EAAAqa,QAAA,OAAAu4C,IAAAn9C,EAAA,OAAAA,IACAi4E,GAAA1tF,EAAA4a,QAAA5a,EAAAya,UAAA,QAAAm4C,IAAAn9C,EAAA,QAAAA,IACAi4E,GAAA1tF,EAAAya,QAAAza,EAAA4a,UAAA,OAAAg4C,IAAAn9C,EAAA,OAAAA,IACA+3E,GAAAxtF,EAAA+a,UAAA,SAAA63C,IAAAn9C,EAAA,SAAAA,GACAA,GAGA,QAAA23E,IAAAtqE,GACA,MAAA,gBAAAA,GAAA6qE,GAAA7qE,GAAAA,EAKA,QAAA8qE,IAAA9vB,EAAA+vB,GAIA,IAAA,GAHAja,GAAA9V,EAAA52B,IAAAysC,IAAAC,OAAAka,KAGA3zF,EAAA,EAAAA,EAAAy5E,EAAAr6E,OAAAY,IAAA,CAEA,IADA,GAAA4zF,GAAAF,EAAAja,EAAAz5E,IACA2zF,EAAAv0F,QAAA2+D,EAAA61B,EAAA/gE,KAAAqlC,EAAAy7B,GAAAv7D,KAAA,GAAA,CACA,GAAAy7D,GAAAF,EAAA5gF,KACA,IAAAgrD,EAAA81B,EAAAhhE,KAAA+gE,EAAA/gE,MAAA,EAAA,CACA+gE,EAAA/gE,KAAAghE,EAAAhhE,IACA,QAGA8gE,EAAA3uF,KAAA4uF,GAGA3Q,GAAAtf,EAAA,WACA,IAAA,GAAA3jE,GAAA2zF,EAAAv0F,OAAA,EAAAY,GAAA,EAAAA,IACAouF,GAAAzqB,EAAA52B,IAAA,GAAA4mD,EAAA3zF,GAAA6yB,KAAA8gE,EAAA3zF,GAAAo4B,GAAA,UACAwoD,IAAAjd,KAmJA,QAAAmwB,IAAAnwB,EAAAX,GACA,GAAAvR,GAAAkL,EAAAgH,EAAA52B,IAAAi2B,GACA+wB,EAAApxB,GAAAlR,EAEA,OADAsiC,IAAAtiC,IAAAuR,EAAA7F,EAAA42B,IACA1vB,IAAA,EAAAV,EAAAowB,EAAA/wB,EAAA,GAEA,QAAAgxB,IAAArwB,EAAAX,GACA,GAAAvR,GAAAkL,EAAAgH,EAAA52B,IAAAi2B,GACA+wB,EAAAlxB,GAAApR,EAEA,OADAsiC,IAAAtiC,IAAAuR,EAAA7F,EAAA42B,IACA1vB,IAAA,EAAAV,EAAAlS,EAAAuR,GAAA,GAEA,QAAAixB,IAAAtwB,EAAAj+C,GACA,GAAA1iB,GAAA8wF,GAAAnwB,EAAAj+C,EAAA+rC,MACAA,EAAAkL,EAAAgH,EAAA52B,IAAA/pC,EAAAyuD,MACAhtC,EAAAw/C,GAAAxS,EAAAkS,EAAA52B,IAAA7T,UACA,KAAAzU,GAAA,GAAAA,EAAA,GAAAq/C,MAAA,CACA,GAAAowB,GAAArrF,KAAAC,IAAA,EAAA2oD,EAAA3yD,KAAAi9C,OAAA,OACAo4C,EAAAzuE,EAAA+rC,MAAAzuD,EAAAyuD,MAAA/rC,EAAAm2B,IAAAq4C,GAAAxuE,EAAAm2B,EACA,OAAAgiB,GAAA76D,EAAAyuD,KAAA0iC,EAAA,EAAAD,EAAAlxF,EAAA86D,QAEA,MAAA96D,GAIA,QAAAoxF,IAAAzwB,EAAA0wB,EAAAC,GACA,GAAA,gBAAAD,KACAA,EAAAE,GAAAF,IACAA,GAAA,OAAA,CAIA1wB,GAAApgE,QAAAkU,MAAA+8E,cACA,IAAAC,GAAA9wB,EAAApgE,QAAA4K,MAAArN,GAAA,CACA,KACA6iE,EAAA8sB,eAAA9sB,EAAA/0D,MAAAu+E,eAAA,GACAmH,IAAA3wB,EAAApgE,QAAA4K,OAAA,GACArN,EAAAuzF,EAAA1wB,IAAA+wB,GACA,QACA/wB,EAAApgE,QAAA4K,MAAAsmF,EACA9wB,EAAA/0D,MAAAu+E,eAAA,EAEA,MAAArsF,GAGA,QAAA6zF,IAAAhxB,EAAAroD,EAAA9U,GACA,IAAA,GAAAxG,GAAA,EAAAA,EAAA2jE,EAAA/0D,MAAAgmF,QAAAx1F,OAAAY,IAAA,CACA,GAAA4e,GAAAo0E,GAAA13E,EAAAqoD,EAAA/0D,MAAAgmF,QAAA50F,GAAAwG,EAAAm9D,EACA,IAAA/kD,EAAA,MAAAA,GAEA,MAAA+kD,GAAAn+C,QAAAqvE,WAAA7B,GAAA13E,EAAAqoD,EAAAn+C,QAAAqvE,UAAAruF,EAAAm9D,IACAqvB,GAAA13E,EAAAqoD,EAAAn+C,QAAAguE,OAAAhtF,EAAAm9D,GAIA,QAAAmxB,IAAAnxB,EAAAroD,EAAA1a,EAAA4F,GACA,GAAAuuF,GAAApxB,EAAA/0D,MAAAomF,MACA,IAAAD,EAAA,CACA,GAAA5B,GAAA73E,GAAA,MAAA,SACA25E,IAAA/yF,IAAA,GAAA,WACAyhE,EAAA/0D,MAAAomF,QAAAD,IACApxB,EAAA/0D,MAAAomF,OAAA,KACArxB,EAAApgE,QAAAkU,MAAAa,WAGAgD,EAAAy5E,EAAA,IAAAz5E,EAEA,GAAAsD,GAAA+1E,GAAAhxB,EAAAroD,EAAA9U,EAYA,OAVA,SAAAoY,IACA+kD,EAAA/0D,MAAAomF,OAAA15E,GACA,WAAAsD,GACAwxD,GAAAzM,EAAA,aAAAA,EAAAroD,EAAA1a,GAEA,WAAAge,GAAA,SAAAA,IACA8nD,GAAA9lE,GACAq6E,GAAAtX,IAGAoxB,IAAAn2E,GAAA,MAAA1e,KAAAob,IACAorD,GAAA9lE,IACA,KAEAge,EAIA,QAAAs2E,IAAAvxB,EAAA/iE,GACA,GAAA0a,GAAA4pC,GAAAtkD,GAAA,EACA,SAAA0a,IAEA1a,EAAAggB,WAAA+iD,EAAA/0D,MAAAomF,OAIAF,GAAAnxB,EAAA,SAAAroD,EAAA1a,EAAA,SAAAzC,GAAA,MAAAi2F,IAAAzwB,EAAAxlE,GAAA,MACA22F,GAAAnxB,EAAAroD,EAAA1a,EAAA,SAAAzC,GACA,GAAA,gBAAAA,GAAA,WAAA+B,KAAA/B,GAAAA,EAAAg3F,OACA,MAAAf,IAAAzwB,EAAAxlE,KAGA22F,GAAAnxB,EAAAroD,EAAA1a,EAAA,SAAAzC,GAAA,MAAAi2F,IAAAzwB,EAAAxlE,MAKA,QAAAi3F,IAAAzxB,EAAA/iE,EAAAi7C,GACA,MAAAi5C,IAAAnxB,EAAA,IAAA9nB,EAAA,IAAAj7C,EAAA,SAAAzC,GAAA,MAAAi2F,IAAAzwB,EAAAxlE,GAAA,KAIA,QAAAk3F,IAAAz0F,GACA,GAAA+iE,GAAAllE,IAEA,IADAklE,EAAA0C,MAAArvD,MAAAggD,KACAgP,GAAArC,EAAA/iE,GAAA,CAEA25D,IAAAC,GAAA,IAAA,IAAA55D,EAAAqgB,UAAArgB,EAAA+e,aAAA,EACA,IAAA2oB,GAAA1nC,EAAAqgB,OACA0iD,GAAApgE,QAAA4K,MAAA,IAAAm6B,GAAA1nC,EAAAggB,QACA,IAAA00E,GAAAJ,GAAAvxB,EAAA/iE,EACAk9E,MACAyX,GAAAD,EAAAhtD,EAAA,MAEAgtD,GAAA,IAAAhtD,IAAAktD,KAAAxuB,GAAApmE,EAAA6f,QAAA7f,EAAA0f,UACAqjD,EAAA2tB,iBAAA,GAAA,KAAA,QAIA,IAAAhpD,GAAA,2BAAApoC,KAAAyjE,EAAApgE,QAAAi2D,QAAA7kD,YACA8gF,GAAA9xB,IAGA,QAAA8xB,IAAA9xB,GAIA,QAAA+xB,GAAA90F,GACA,IAAAA,EAAAqgB,SAAArgB,EAAAsf,SACAu7D,GAAAjiB,EAAA,wBACA9zD,GAAApH,SAAA,QAAAo3F,GACAhwF,GAAApH,SAAA,YAAAo3F,IAPA,GAAAl8B,GAAAmK,EAAApgE,QAAAi2D,OACAlxC,GAAAkxC,EAAA,wBASAr3C,GAAA7jB,SAAA,QAAAo3F,GACAvzE,GAAA7jB,SAAA,YAAAo3F,GAGA,QAAAC,IAAA/0F,GACA,IAAAA,EAAAqgB,UAAAxiB,KAAAsuC,IAAAysC,IAAArrE,OAAA,GACA63D,GAAAvnE,KAAAmC,GAGA,QAAAg1F,IAAAh1F,GACA,GAAA+iE,GAAAllE,IACA,MAAAs0E,GAAApP,EAAApgE,QAAA3C,IAAAolE,GAAArC,EAAA/iE,IAAAA,EAAA0f,UAAA1f,EAAAsf,QAAA8mD,IAAApmE,EAAA6f,SAAA,CACA,GAAAQ,GAAArgB,EAAAqgB,QAAAF,EAAAngB,EAAAmgB,QACA,IAAA+8D,IAAA78D,GAAAs0E,GAAA,MAAAA,IAAA,SAAA7uB,IAAA9lE,EACA,KAAAk9E,IAAAl9E,EAAAkhB,SAAAlhB,EAAAkhB,MAAA,MAAAozE,GAAAvxB,EAAA/iE,GAAA,CACA,GAAAi7C,GAAA7nC,OAAAC,aAAA,MAAA8M,EAAAE,EAAAF,EAEA,OAAA86B,IACAu5C,GAAAzxB,EAAA/iE,EAAAi7C,IACA8nB,EAAApgE,QAAAkU,MAAAm+E,WAAAh1F,MAQA,QAAAi1F,IAAAj1F,GACA,GAAA+iE,GAAAllE,KAAA8E,EAAAogE,EAAApgE,OACA,MAAAyiE,GAAArC,EAAA/iE,IAAA2C,EAAAm5D,aAAAn5D,EAAAkU,MAAAq+E,iBAAA,CAIA,GAHAvyF,EAAAkU,MAAA+8E,eACAjxF,EAAA4K,MAAAvN,EAAAggB,SAEAmyD,GAAAxvE,EAAA3C,GAOA,YANA65D,KAGAl3D,EAAA+2D,SAAAM,WAAA,EACAjxD,WAAA,WAAA,MAAApG,GAAA+2D,SAAAM,WAAA,GAAA,MAIA,KAAAm7B,GAAApyB,EAAA/iE,GAAA,CACA,GAAAoC,GAAA41E,GAAAjV,EAAA/iE,EAGA,QAFApC,OAAAwY,QAEA+vD,GAAAnmE,IACA,IAAA,GAEA+iE,EAAA/0D,MAAAonF,cACAryB,EAAA/0D,MAAAonF,cAAAp1F,GACAoC,EACAizF,GAAAtyB,EAAA/iE,EAAAoC,GACA6jE,GAAAjmE,IAAA2C,EAAA+2D,UACAoM,GAAA9lE,EACA,MACA,KAAA,GACA65D,KAAAkJ,EAAA/0D,MAAAsnF,gBAAA,GAAAxlF,OACA1N,GAAAooF,GAAAznB,EAAA52B,IAAA/pC,GACA2G,WAAA,WAAA,MAAApG,GAAAkU,MAAAT,SAAA,IACA0vD,GAAA9lE,EACA,MACA,KAAA,GACAu1F,GAAAC,GAAAzyB,EAAA/iE,GACA06E,GAAA3X,MAOA,QAAAsyB,IAAAtyB,EAAA/iE,EAAAoC,GACAu3D,GAAA5wD,WAAA2mB,EAAA+qD,GAAA1X,GAAA,GACAA,EAAA0C,MAAArvD,MAAAggD,GAEA,IAAA13D,GAAA2K,GAAA,GAAAyG,KACA2lF,KAAAA,GAAAjlD,KAAAnnC,EAAA,KAAA,GAAA8zD,EAAAs4B,GAAA3wE,IAAA1iB,GACA1D,EAAA,SACAg3F,IAAAA,GAAAllD,KAAAnnC,EAAA,KAAA,GAAA8zD,EAAAu4B,GAAA5wE,IAAA1iB,IACA1D,EAAA,SACA+2F,IAAAjlD,KAAAnnC,EAAAyb,IAAA1iB,KAEA1D,EAAA,SACAg3F,IAAAllD,KAAAnnC,EAAAyb,IAAA1iB,GAGA,IAAAuzF,GAAA/c,EAAA7V,EAAA52B,IAAAysC,IAAAgd,EAAAxvB,GAAApmE,EAAA6f,QAAA7f,EAAA0f,OACAqjD,GAAAn+C,QAAAixE,UAAAC,KAAA/yB,EAAA8sB,cACA,UAAAnxF,IAAAi3F,EAAA/c,EAAAr0E,SAAAnC,KAAA,IACA+6D,GAAAw4B,EAAA/c,EAAAC,OAAA8c,IAAA1jE,OAAA7vB,GAAA,GAAAA,EAAA20E,KAAA,KACA5Z,EAAAw4B,EAAAn+D,KAAAp1B,GAAA,GAAAA,EAAA20E,KAAA,GACAgf,GAAAhzB,EAAA/iE,EAAAoC,EAAAwzF,GAEAI,GAAAjzB,EAAA/iE,EAAAoC,EAAA1D,EAAAk3F,GAKA,QAAAG,IAAAhzB,EAAA/iE,EAAAoC,EAAAwzF,GACA,GAAAjzF,GAAAogE,EAAApgE,QAAAszF,GAAA,EACAC,EAAA5T,GAAAvf,EAAA,SAAA/iE,GACA65D,KAAAl3D,EAAA+2D,SAAAM,WAAA,GACA+I,EAAA/0D,MAAAsiF,cAAA,EACAxrF,GAAApH,SAAA,UAAAw4F,GACApxF,GAAApH,SAAA,YAAAy4F,GACArxF,GAAAnC,EAAA+2D,SAAA,YAAA08B,GACAtxF,GAAAnC,EAAA+2D,SAAA,OAAAw8B,GACAD,IACAnwB,GAAA9lE,GACA41F,GACApL,GAAAznB,EAAA52B,IAAA/pC,GAEAy3D,IAAAF,IAAA,GAAAC,GACA7wD,WAAA,WAAArL,SAAA+E,KAAA2T,QAAAzT,EAAAkU,MAAAT,SAAA,IAEAzT,EAAAkU,MAAAT,WAGA+/E,EAAA,SAAAE,GACAJ,EAAAA,GAAAhuF,KAAA0yB,IAAA36B,EAAAugB,QAAA81E,EAAA91E,SAAAtY,KAAA0yB,IAAA36B,EAAAwgB,QAAA61E,EAAA71E,UAAA,IAEA41E,EAAA,WAAA,MAAAH,IAAA,EAEAp8B,MAAAl3D,EAAA+2D,SAAAM,WAAA,GACA+I,EAAA/0D,MAAAsiF,aAAA4F,EACAA,EAAAvrB,KAAAvE,GAAApmE,EAAAsf,OAAAtf,EAAA0f,QAEA/c,EAAA+2D,SAAAm8B,UAAAlzF,EAAA+2D,SAAAm8B,WACAt0E,GAAA7jB,SAAA,UAAAw4F,GACA30E,GAAA7jB,SAAA,YAAAy4F,GACA50E,GAAA5e,EAAA+2D,SAAA,YAAA08B,GACA70E,GAAA5e,EAAA+2D,SAAA,OAAAw8B,GAEAxb,GAAA3X,GACAh6D,WAAA,WAAA,MAAApG,GAAAkU,MAAAT,SAAA,IAIA,QAAA4/E,IAAAjzB,EAAA/iE,EAAAoC,EAAA1D,EAAA43F,GAsDA,QAAAC,GAAAzxE,GACA,GAAA,GAAAq4C,EAAAq5B,EAAA1xE,GAGA,GAFA0xE,EAAA1xE,EAEA,QAAApmB,EAAA,CAKA,IAAA,GAJAm6E,MAAAjiB,EAAAmM,EAAAn+C,QAAAgyC,QACA6/B,EAAA9/B,EAAAoF,EAAA5vB,EAAA/pC,EAAAyuD,MAAA3yD,KAAAkE,EAAA64C,GAAA2b,GACA8/B,EAAA//B,EAAAoF,EAAA5vB,EAAArnB,EAAA+rC,MAAA3yD,KAAA4mB,EAAAm2B,GAAA2b,GACAryC,EAAAtc,KAAAkvD,IAAAs/B,EAAAC,GAAAh8D,EAAAzyB,KAAAC,IAAAuuF,EAAAC,GACA7lC,EAAA5oD,KAAAkvD,IAAA/0D,EAAAyuD,KAAA/rC,EAAA+rC,MAAAxuD,EAAA4F,KAAAkvD,IAAA4L,EAAAR,WAAAt6D,KAAAC,IAAA9F,EAAAyuD,KAAA/rC,EAAA+rC,OACAA,GAAAxuD,EAAAwuD,IAAA,CACA,GAAA3yD,GAAA69D,EAAA5vB,EAAA0kB,GAAA3yD,KAAAy7E,EAAA3iB,EAAA94D,EAAAqmB,EAAAqyC,EACAryC,IAAAmW,EACAm+C,EAAAz0E,KAAA,GAAAihF,IAAApoB,EAAApM,EAAA8oB,GAAA1c,EAAApM,EAAA8oB,KACAz7E,EAAAM,OAAAm7E,GACAd,EAAAz0E,KAAA,GAAAihF,IAAApoB,EAAApM,EAAA8oB,GAAA1c,EAAApM,EAAAmG,EAAA94D,EAAAw8B,EAAAk8B,MAEAiiB,EAAAr6E,QAAAq6E,EAAAz0E,KAAA,GAAAihF,IAAAjjF,EAAAA,IACAqoF,GAAAt+C,EAAA+4C,GAAAyR,EAAA9d,OAAAv4E,MAAA,EAAAs2F,GAAAhtF,OAAAivE,GAAA+d,IACAzoD,OAAA,SAAAtR,QAAA,IACAkmC,EAAA8b,eAAA/5D,OACA,CACA,GAAA+xE,GAAAC,EACAhjC,EAAA+iC,EAAA/iC,OAAA31D,EAAA2mB,CACA,IAAA,UAAApmB,EAAA,CACA,GAAAq6E,EAEAA,GADA,UAAAr6E,EACAqkE,EAAAg0B,WAAAjyE,GAEA,GAAAugE,IAAApoB,EAAAn4C,EAAA+rC,KAAA,GAAA4M,EAAAtxB,EAAA8wB,EAAAn4C,EAAA+rC,KAAA,EAAA,KACAsM,EAAA4b,EAAAjlB,OAAAA,GAAA,GACA31D,EAAA46E,EAAA56E,KACA21D,EAAAyJ,EAAAs5B,EAAA5kE,OAAA8mD,EAAAjlB,UAEA31D,EAAA46E,EAAAjlB,OACAA,EAAAwJ,EAAAu5B,EAAAr/D,KAAAuhD,EAAA56E,OAGA,GAAA64F,GAAAL,EAAA9d,OAAAv4E,MAAA,EACA02F,GAAAJ,GAAA,GAAAvR,IAAA5nB,EAAAtxB,EAAA2nB,GAAA31D,GACAssF,GAAAt+C,EAAA+4C,GAAA8R,EAAAJ,GAAAK,KAWA,QAAApxF,GAAA7F,GACA,GAAAk3F,KAAA9hD,EACAzzC,EAAAq2E,GAAAjV,EAAA/iE,GAAA,EAAA,QAAAtB,EACA,IAAAiD,EACA,GAAA,GAAAw7D,EAAAx7D,EAAA60F,GAAA,CACAzzB,EAAA0C,MAAArvD,MAAAggD,IACAmgC,EAAA50F,EACA,IAAAmrB,GAAA0uD,GAAA74E,EAAAwpC,IACAxqC,EAAAkvD,MAAA/jC,EAAA0K,IAAA71B,EAAAkvD,KAAA/jC,EAAAmF,OACAlpB,WAAAu5E,GAAAvf,EAAA,WAAA3tB,GAAA8hD,GAAArxF,EAAA7F,KAAA,SACA,CACA,GAAA82E,GAAA92E,EAAAwgB,QAAA22E,EAAAxjF,KAAA,GAAA3T,EAAAwgB,QAAA22E,EAAAh7D,OAAA,GAAA,CACA26C,IAAA/tE,WAAAu5E,GAAAvf,EAAA,WACA3tB,GAAA8hD,IACAv0F,EAAA+2D,SAAA10C,WAAA8xD,EACAjxE,EAAA7F,MACA,KAIA,QAAAE,GAAAF,GACA+iE,EAAA/0D,MAAAonF,eAAA,EACAhgD,EAAAvQ,EAAAA,EACAihC,GAAA9lE,GACA2C,EAAAkU,MAAAT,QACAtR,GAAApH,SAAA,YAAA05F,GACAtyF,GAAApH,SAAA,UAAAo3F,GACA3oD,EAAAR,QAAAy8C,cAAA,KAnIA,GAAAzlF,GAAAogE,EAAApgE,QAAAwpC,EAAA42B,EAAA52B,GACA25B,IAAA9lE,EAEA,IAAA82F,GAAAF,EAAAD,EAAAxqD,EAAAysC,IAAAC,EAAA8d,EAAA9d,MAYA,IAXAyd,IAAAt2F,EAAAggB,UACA42E,EAAAzqD,EAAAysC,IAAAr0E,SAAAnC,GAEA00F,EADAF,GAAA,EACA/d,EAAA+d,GAEA,GAAAvR,IAAAjjF,EAAAA,KAEA00F,EAAA3qD,EAAAysC,IAAAJ,UACAoe,EAAAzqD,EAAAysC,IAAAE,WAGAue,GAAAr3F,EAAAggB,UAAAhgB,EAAA6f,QAAA7f,EAAAsf,OACA5gB,EAAA,OACA43F,IAAAQ,EAAA,GAAAzR,IAAAjjF,EAAAA,IACAA,EAAA41E,GAAAjV,EAAA/iE,GAAA,GAAA,GACA42F,GAAA,MACA,IAAA,UAAAl4F,EAAA,CACA,GAAA44F,GAAAv0B,EAAAg0B,WAAA30F,EAEA00F,GADA/zB,EAAApgE,QAAA4K,OAAA4+B,EAAAtmC,OACAykF,GAAAn+C,EAAA2qD,EAAAQ,EAAAxjC,OAAAwjC,EAAAn5F,MAEAm5F,MACA,IAAA,UAAA54F,EAAA,CACA,GAAAmyD,GAAA,GAAAw0B,IAAApoB,EAAA76D,EAAAyuD,KAAA,GAAA4M,EAAAtxB,EAAA8wB,EAAA76D,EAAAyuD,KAAA,EAAA,IAEAimC,GADA/zB,EAAApgE,QAAA4K,OAAA4+B,EAAAtmC,OACAykF,GAAAn+C,EAAA2qD,EAAAjmC,EAAAiD,OAAAjD,EAAA1yD,MAEA0yD,MAEAimC,GAAAxM,GAAAn+C,EAAA2qD,EAAA10F,EAGAk0F,GAIAM,IAAA,GACAA,EAAA/d,EAAAr6E,OACAisF,GAAAt+C,EAAA+4C,GAAArM,EAAAjvE,QAAAktF,IAAAF,IACA/5D,QAAA,EAAAsR,OAAA,YACA0qC,EAAAr6E,OAAA,GAAAq6E,EAAA+d,GAAA3sF,SAAA,UAAAvL,IAAAsB,EAAAggB,UACAyqE,GAAAt+C,EAAA+4C,GAAArM,EAAAv4E,MAAA,EAAAs2F,GAAAhtF,OAAAivE,EAAAv4E,MAAAs2F,EAAA,IAAA,IACA/5D,QAAA,EAAAsR,OAAA,WACAwoD,EAAAxqD,EAAAysC,KAEAiS,GAAA1+C,EAAAyqD,EAAAE,EAAAG,KAZAL,EAAA,EACAnM,GAAAt+C,EAAA,GAAAm5C,KAAAwR,GAAA,GAAAG,IACAN,EAAAxqD,EAAAysC,IAaA,IAAA4d,GAAAp0F,EA6CA+0F,EAAAx0F,EAAAq8C,QAAA16B,wBAKA8wB,EAAA,EAgCAgiD,EAAA9U,GAAAvf,EAAA,SAAA/iE,GACAmmE,GAAAnmE,GACA6F,EAAA7F,GADAE,EAAAF,KAGA80F,EAAAxS,GAAAvf,EAAA7iE,EACA6iE,GAAA/0D,MAAAonF,cAAAN,EACAvzE,GAAA7jB,SAAA,YAAA05F,GACA71E,GAAA7jB,SAAA,UAAAo3F,GAMA,QAAAyC,IAAAx0B,EAAA/iE,EAAAtB,EAAA84F,GACA,GAAAC,GAAAC,CACA,KAAAD,EAAAz3F,EAAAugB,QAAAm3E,EAAA13F,EAAAwgB,QACA,MAAAxgB,GAAA,OAAA,EACA,GAAAy3F,GAAAxvF,KAAAy+B,MAAAq8B,EAAApgE,QAAA62D,QAAAl1C,wBAAAoW,OAAA,OAAA,CACA88D,IAAA1xB,GAAA9lE,EAEA,IAAA2C,GAAAogE,EAAApgE,QACAg1F,EAAAh1F,EAAAi2D,QAAAt0C,uBAEA,IAAAozE,EAAAC,EAAAx7D,SAAAwpC,GAAA5C,EAAArkE,GAAA,MAAA2mE,IAAArlE,EACA03F,IAAAC,EAAAhkF,IAAAhR,EAAA43D,UAEA,KAAA,GAAAn7D,GAAA,EAAAA,EAAA2jE,EAAAn+C,QAAA40C,QAAAh7D,SAAAY,EAAA,CACA,GAAAqC,GAAAkB,EAAA62D,QAAAv1D,WAAA7E,EACA,IAAAqC,GAAAA,EAAA6iB,wBAAAoW,OAAA+8D,EAAA,CACA,GAAA5mC,GAAA4L,EAAAsG,EAAA52B,IAAAurD,GACAjnB,EAAA1N,EAAAn+C,QAAA40C,QAAAp6D,EAEA,OADA+lE,IAAApC,EAAArkE,EAAAqkE,EAAAlS,EAAA4f,EAAAzwE,GACAqlE,GAAArlE,KAKA,QAAAm1F,IAAApyB,EAAA/iE,GACA,MAAAu3F,IAAAx0B,EAAA/iE,EAAA,eAAA,GAQA,QAAAw1F,IAAAzyB,EAAA/iE,GACAmyE,GAAApP,EAAApgE,QAAA3C,IAAA43F,GAAA70B,EAAA/iE,IACAolE,GAAArC,EAAA/iE,EAAA,gBACA+iE,EAAApgE,QAAAkU,MAAA2+E,cAAAx1F,GAGA,QAAA43F,IAAA70B,EAAA/iE,GACA,QAAA2lE,GAAA5C,EAAA,sBACAw0B,GAAAx0B,EAAA/iE,EAAA,qBAAA,GAGA,QAAA63F,IAAA90B,GACAA,EAAApgE,QAAAq8C,QAAAjrC,UAAAgvD,EAAApgE,QAAAq8C,QAAAjrC,UAAA7S,QAAA,eAAA,IACA6hE,EAAAn+C,QAAAkzE,MAAA52F,QAAA,aAAA,UACAq0E,GAAAxS,GAQA,QAAAg1B,IAAAjiC,GAGA,QAAAj6C,GAAAnB,EAAAs9E,EAAApyF,EAAAqyF,GACAniC,EAAAzkC,SAAA3W,GAAAs9E,EACApyF,IAAAsyF,EAAAx9E,GACAu9E,EAAA,SAAAl1B,EAAAh7C,EAAAlC,GAAAA,GAAAsyE,IAAAvyF,EAAAm9D,EAAAh7C,EAAAlC,IAAAjgB,GALA,GAAAsyF,GAAApiC,EAAAoiC,cAQApiC,GAAAsiC,aAAAv8E,EAGAi6C,EAAAqiC,KAAAA,GAIAt8E,EAAA,QAAA,GAAA,SAAAknD,EAAAh7C,GAAA,MAAAg7C,GAAAs1B,SAAAtwE,KAAA,GACAlM,EAAA,OAAA,KAAA,SAAAknD,EAAAh7C,GACAg7C,EAAA52B,IAAA65C,WAAAj+D,EACAg+D,GAAAhjB,KACA,GAEAlnD,EAAA,aAAA,EAAAkqE,IAAA,GACAlqE,EAAA,kBAAA,GACAA,EAAA,eAAA,GACAA,EAAA,UAAA,EAAA,SAAAknD,GACAkjB,GAAAljB,GACAwS,GAAAxS,GACA0f,GAAA1f,KACA,GACAlnD,EAAA,gBAAA,KAAA,SAAAknD,EAAAh7C,GAEA,GADAg7C,EAAA52B,IAAAmsD,QAAAvwE,EACAA,EAAA,CACA,GAAAwwE,MAAAh8B,EAAAwG,EAAA52B,IAAAl9B,KACA8zD,GAAA52B,IAAAgwB,KAAA,SAAAtL,GACA,IAAA,GAAA/rC,GAAA,IAAA,CACA,GAAA26C,GAAA5O,EAAA3yD,KAAAmQ,QAAA0Z,EAAAjD,EACA,IAAA26C,IAAA,EAAA,KACA36C,GAAA26C,EAAA13C,EAAAvpB,OACA+5F,EAAAn0F,KAAA64D,EAAAV,EAAAkD,IAEAlD,KAEA,KAAA,GAAAn9D,GAAAm5F,EAAA/5F,OAAA,EAAAY,GAAA,EAAAA,IACAouF,GAAAzqB,EAAA52B,IAAApkB,EAAAwwE,EAAAn5F,GAAA69D,EAAAs7B,EAAAn5F,GAAAyxD,KAAA0nC,EAAAn5F,GAAA67C,GAAAlzB,EAAAvpB,YAEAqd,EAAA,eAAA,2EAAA,SAAAknD,EAAAh7C,EAAAlC,GACAk9C,EAAA/0D,MAAAk/D,aAAA,GAAA36D,QAAAwV,EAAAtM,QAAAsM,EAAAzoB,KAAA,MAAA,GAAA,OAAA,KACAumB,GAAAsyE,IAAAp1B,EAAArlC,YAEA7hB,EAAA,yBAAAixD,GAAA,SAAA/J,GAAA,MAAAA,GAAArlC,YAAA,GACA7hB,EAAA,iBAAA,GACAA,EAAA,aAAAk+C,GAAA,kBAAA,WAAA,WACA,KAAA,IAAAp8D,OAAA,6DACA,GACAke,EAAA,cAAA,EAAA,SAAAknD,EAAAh7C,GAAA,MAAAg7C,GAAAy1B,gBAAAxqC,WAAAjmC,IAAA,GACAlM,EAAA,mBAAA48E,IACA58E,EAAA,yBAAA,GAEAA,EAAA,QAAA,UAAA,SAAAknD,GACA80B,GAAA90B,GACA21B,GAAA31B,KACA,GACAlnD,EAAA,SAAA,UAAA,SAAAknD,EAAAh7C,EAAAlC,GACA,GAAAvU,GAAA+gF,GAAAtqE,GACAxP,EAAAsN,GAAAsyE,IAAA9F,GAAAxsE,EACAtN,IAAAA,EAAAmJ,QAAAnJ,EAAAmJ,OAAAqhD,EAAAzxD,GACAA,EAAAo9C,QAAAp9C,EAAAo9C,OAAAqU,EAAAxqD,GAAA,QAEAsD,EAAA,YAAA,MAEAA,EAAA,gBAAA,EAAA88E,IAAA,GACA98E,EAAA,aAAA,SAAAknD,GACAkiB,GAAAliB,EAAAn+C,SACA8zE,GAAA31B,KACA,GACAlnD,EAAA,eAAA,EAAA,SAAAknD,EAAAh7C,GACAg7C,EAAApgE,QAAA62D,QAAAt3D,MAAAqiB,KAAAwD,EAAA2vD,GAAA3U,EAAApgE,SAAA,KAAA,IACAogE,EAAArlC,YACA,GACA7hB,EAAA,8BAAA,EAAA,SAAAknD,GAAA,MAAA+a,IAAA/a,KAAA,GACAlnD,EAAA,iBAAA,SAAA,SAAAknD,GACAub,GAAAvb,GACA+a,GAAA/a,GACAA,EAAApgE,QAAAm5E,WAAAF,aAAA7Y,EAAA52B,IAAAnnB,WACA+9C,EAAApgE,QAAAm5E,WAAAE,cAAAjZ,EAAA52B,IAAAlnB,cACA,GACApJ,EAAA,eAAA,EAAA,SAAAknD,GACAkiB,GAAAliB,EAAAn+C,SACA8zE,GAAA31B,KACA,GACAlnD,EAAA,kBAAA,EAAA68E,IAAA,GACA78E,EAAA,sBAAA,SAAA+8E,GAAA,MAAAA,IAAAF,IAAA,GACA78E,EAAA,2BAAA,EAAAw8D,IAAA,GAEAx8D,EAAA,+BAAA,GACAA,EAAA,mBAAA,GAEAA,EAAA,YAAA,EAAA,SAAAknD,EAAAh7C,GACA,YAAAA,GACA+8B,GAAAie,GACAA,EAAApgE,QAAAkU,MAAA+H,OACAmkD,EAAApgE,QAAAoO,UAAA,GAEAgyD,EAAApgE,QAAAoO,UAAA,EAEAgyD,EAAApgE,QAAAkU,MAAAgiF,gBAAA9wE,KAEAlM,EAAA,gBAAA,EAAA,SAAAknD,EAAAh7C,GAAAA,GAAAg7C,EAAApgE,QAAAkU,MAAAa,UAAA,GACAmE,EAAA,YAAA,EAAAi9E,IACAj9E,EAAA,qBAAA,MAEAA,EAAA,kBAAA,KACAA,EAAA,qBAAA,GACAA,EAAA,eAAA,EAAAw8D,IAAA,GACAx8D,EAAA,6BAAA,EAAAw8D,IAAA,GACAx8D,EAAA,WAAA,KACAA,EAAA,YAAA,KACAA,EAAA,gBAAA,EAAAoqE,IAAA,GACApqE,EAAA,gBAAA,EAAAoqE,IAAA,GACApqE,EAAA,eAAA,KACAA,EAAA,YAAA,IAAA,SAAAknD,EAAAh7C,GAAA,MAAAg7C,GAAA52B,IAAAR,QAAAm8C,UAAA//D,IACAlM,EAAA,oBAAA,MACAA,EAAA,iBAAA,GAAA,SAAAknD,GAAA,MAAAA,GAAArlC,YAAA,GACA7hB,EAAA,qBAAA,IAAAoqE,IAAA,GACApqE,EAAA,uBAAA,EAAA,SAAAknD,EAAAh7C,GACAA,GAAAg7C,EAAApgE,QAAAkU,MAAAkiF,kBAGAl9E,EAAA,WAAA,KAAA,SAAAknD,EAAAh7C,GAAA,MAAAg7C,GAAApgE,QAAAkU,MAAAmiF,WAAAziF,SAAAwR,GAAA,KACAlM,EAAA,YAAA,MACAA,EAAA,YAAA,MAAA,SAAAknD,EAAAh7C,GAAA,MAAAg7C,GAAA52B,IAAA8sD,aAAAlxE,KAAA,GAGA,QAAA2wE,IAAA31B,GACA+hB,GAAA/hB,GACA0f,GAAA1f,GACA+X,GAAA/X,GAGA,QAAA+1B,IAAA/1B,EAAA5xD,EAAA0U,GACA,GAAAqzE,GAAArzE,GAAAA,GAAAsyE,EACA,KAAAhnF,IAAA+nF,EAAA,CACA,GAAAC,GAAAp2B,EAAApgE,QAAAy2F,cACAx9E,EAAAzK,EAAAoQ,GAAAzc,EACA8W,GAAAmnD,EAAApgE,QAAA+2D,SAAA,YAAAy/B,EAAA/2F,OACAwZ,EAAAmnD,EAAApgE,QAAA+2D,SAAA,YAAAy/B,EAAA39D,OACA5f,EAAAmnD,EAAApgE,QAAA+2D,SAAA,WAAAy/B,EAAAE,MACAz9E,EAAAmnD,EAAApgE,QAAA+2D,SAAA,YAAAy/B,EAAA19D,OACA7f,EAAAmnD,EAAApgE,QAAA+2D,SAAA,OAAAy/B,EAAAG,OAIA,QAAAX,IAAA51B,GACAA,EAAAn+C,QAAAy/C,cACA38C,EAAAq7C,EAAApgE,QAAAq8C,QAAA,mBACA+jB,EAAApgE,QAAAy2D,MAAAl3D,MAAAqF,SAAA,GACAw7D,EAAApgE,QAAA02D,WAAA,OAEAwhB,GAAA9X,EAAApgE,QAAAq8C,QAAA,mBACA8jB,GAAAC,IAEA+U,GAAA/U,GACA0f,GAAA1f,GACAwS,GAAAxS,GACAh6D,WAAA,WAAA,MAAA+0E,IAAA/a,IAAA,KAMA,QAAAw2B,IAAA9gC,EAAA7zC,GACA,GAAAomE,GAAAntF,IAEA,MAAAA,eAAA07F,KAAA,MAAA,IAAAA,IAAA9gC,EAAA7zC,EAEA/mB,MAAA+mB,QAAAA,EAAAA,EAAA6xC,EAAA7xC,MAEA6xC,EAAAplC,GAAAzM,GAAA,GACAqgE,GAAArgE,EAEA,IAAAunB,GAAAvnB,EAAAzT,KACA,iBAAAg7B,KAAAA,EAAA,GAAAqtD,IAAArtD,EAAAvnB,EAAA0rC,KAAA,KAAA1rC,EAAAwrE,cAAAxrE,EAAA0T,YACAz6B,KAAAsuC,IAAAA,CAEA,IAAAt1B,GAAA,GAAA0iF,IAAAE,YAAA70E,EAAA80E,YAAA77F,MACA8E,EAAA9E,KAAA8E,QAAA,GAAA61D,GAAAC,EAAAtsB,EAAAt1B,EACAlU,GAAAq8C,QAAA8W,WAAAj4D,KACAinF,GAAAjnF,MACAg6F,GAAAh6F,MACA+mB,EAAAy/C,eACAxmE,KAAA8E,QAAAq8C,QAAAjrC,WAAA,oBACAuqE,GAAAzgF,MAEAA,KAAAmQ,OACAgmF,WACAjrB,YACAL,QAAA,EACAhS,WAAA,EACAikB,mBAAA,EACAL,SAAA,EACAiS,eAAA,EACAoN,eAAA,EAAAC,aAAA,EACAxE,eAAA,EACA9E,cAAA,EACA1wC,UAAA,GAAAi6C,IACAzF,OAAA,KACAlnB,aAAA,MAGAtoD,EAAAk1E,YAAA//B,IAAAp3D,EAAAkU,MAAAT,QAIAujD,IAAAC,GAAA,IAAA7wD,WAAA,WAAA,MAAAiiF,GAAAroF,QAAAkU,MAAAa,OAAA,IAAA,IAEAqiF,GAAAl8F,MACAyzF,KAEAjR,GAAAxiF,MACAA,KAAA4nE,MAAA+N,aAAA,EACAgU,GAAA3pF,KAAAsuC,GAEAvnB,EAAAk1E,YAAA//B,IAAAl8D,KAAAwY,WACAtN,WAAA2mB,EAAAq1B,GAAAlnD,MAAA,IAEAinD,GAAAjnD,KAEA,KAAA,GAAA+3D,KAAAsiC,IAAAA,GAAA3pF,eAAAqnD,IACAsiC,GAAAtiC,GAAAo1B,EAAApmE,EAAAgxC,GAAAuiC,GACAjd,IAAAr9E,MACA+mB,EAAAo1E,YAAAp1E,EAAAo1E,WAAAn8F,KACA,KAAA,GAAAuB,GAAA,EAAAA,EAAA66F,GAAAz7F,SAAAY,EAAA66F,GAAA76F,GAAA4rF,EACAnK,IAAAhjF,MAGAg8D,IAAAj1C,EAAAy/C,cACA,sBAAA9hD,iBAAA5f,EAAAi2D,SAAAvV,gBACA1gD,EAAAi2D,QAAA12D,MAAAmhD,cAAA,QASA,QAAA02C,IAAAh3B,GAsBA,QAAAm3B,KACAn8F,EAAA+9D,cACAq+B,EAAApxF,WAAA,WAAA,MAAAhL,GAAA+9D,YAAA,MAAA,KACAs+B,EAAAr8F,EAAA+9D,YACAs+B,EAAA/3F,KAAA,GAAAyN,OAGA,QAAAuqF,GAAAr6F,GACA,GAAA,GAAAA,EAAAihB,QAAAziB,OAAA,OAAA,CACA,IAAA87F,GAAAt6F,EAAAihB,QAAA,EACA,OAAAq5E,GAAAC,SAAA,GAAAD,EAAAE,SAAA,EAEA,QAAAC,GAAAH,EAAA3jB,GACA,GAAA,MAAAA,EAAApyD,KAAA,OAAA,CACA,IAAA63D,GAAAzF,EAAApyD,KAAA+1E,EAAA/1E,KAAA+3D,EAAA3F,EAAAhjE,IAAA2mF,EAAA3mF,GACA,OAAAyoE,GAAAA,EAAAE,EAAAA,EAAA,IApCA,GAAAv+E,GAAAglE,EAAApgE,OACA4e,IAAAxjB,EAAA27D,SAAA,YAAA4oB,GAAAvf,EAAAkyB,KAEAt7B,IAAAC,GAAA,GACAr4C,GAAAxjB,EAAA27D,SAAA,WAAA4oB,GAAAvf,EAAA,SAAA/iE,GACA,IAAAolE,GAAArC,EAAA/iE,GAAA,CACA,GAAA8kB,GAAAkzD,GAAAjV,EAAA/iE,EACA,IAAA8kB,IAAAqwE,GAAApyB,EAAA/iE,KAAAmyE,GAAApP,EAAApgE,QAAA3C,GAAA,CACA8lE,GAAA9lE,EACA,IAAAs3F,GAAAv0B,EAAAg0B,WAAAjyE,EACA0lE,IAAAznB,EAAA52B,IAAAmrD,EAAAxjC,OAAAwjC,EAAAn5F,WAGAojB,GAAAxjB,EAAA27D,SAAA,WAAA,SAAA15D,GAAA,MAAAolE,IAAArC,EAAA/iE,IAAA8lE,GAAA9lE,KAIAu1F,IAAAh0E,GAAAxjB,EAAA27D,SAAA,cAAA,SAAA15D,GAAA,MAAAw1F,IAAAzyB,EAAA/iE,IAGA,IAAAm6F,GAAAC,GAAA/3F,IAAA,EAkBAkf,IAAAxjB,EAAA27D,SAAA,aAAA,SAAA15D,GACA,IAAAolE,GAAArC,EAAA/iE,KAAAq6F,EAAAr6F,GAAA,CACAjC,EAAA8Y,MAAA+8E,eACAjtE,aAAAwzE,EACA,IAAA9wF,IAAA,GAAAyG,KACA/R,GAAA+9D,aAAA15D,MAAAiH,EAAA4sF,OAAA,EACA19E,KAAAlP,EAAA+wF,EAAA/3F,KAAA,IAAA+3F,EAAA,MACA,GAAAp6F,EAAAihB,QAAAziB,SACAT,EAAA+9D,YAAAv3C,KAAAvkB,EAAAihB,QAAA,GAAAnB,MACA/hB,EAAA+9D,YAAAnoD,IAAA3T,EAAAihB,QAAA,GAAAlB,UAIAwB,GAAAxjB,EAAA27D,SAAA,YAAA,WACA37D,EAAA+9D,cAAA/9D,EAAA+9D,YAAAm6B,OAAA,KAEA10E,GAAAxjB,EAAA27D,SAAA,WAAA,SAAA15D,GACA,GAAAs6F,GAAAv8F,EAAA+9D,WACA,IAAAw+B,IAAAnoB,GAAAp0E,EAAAiC,IAAA,MAAAs6F,EAAA/1E,OACA+1E,EAAArE,OAAA,GAAAnmF,MAAAwqF,EAAAl4F,MAAA,IAAA,CACA,GAAA0jD,GAAAhhC,EAAAi+C,EAAAiU,WAAAj5E,EAAA+9D,YAAA,OAEAhW,IADAw0C,EAAA/hF,MAAAkiF,EAAAH,EAAAA,EAAA/hF,MACA,GAAA8sE,IAAAvgE,EAAAA,IACAw1E,EAAA/hF,KAAAA,MAAAkiF,EAAAH,EAAAA,EAAA/hF,KAAAA,MACAwqD,EAAAg0B,WAAAjyE,GAEA,GAAAugE,IAAApoB,EAAAn4C,EAAA+rC,KAAA,GAAA4M,EAAAsF,EAAA52B,IAAA8wB,EAAAn4C,EAAA+rC,KAAA,EAAA,KACAkS,EAAA0nB,aAAA3kC,EAAAgO,OAAAhO,EAAA3nD,MACA4kE,EAAA3sD,QACA0vD,GAAA9lE,GAEAk6F,MAEA34E,GAAAxjB,EAAA27D,SAAA,cAAAwgC,GAIA34E,GAAAxjB,EAAA27D,SAAA,SAAA,WACA37D,EAAA27D,SAAAr/B,eACAuhD,GAAA7Y,EAAAhlE,EAAA27D,SAAA10C,WACAg3D,GAAAjZ,EAAAhlE,EAAA27D,SAAAz0C,YAAA,GACAkgD,GAAApC,EAAA,SAAAA,MAKAxhD,GAAAxjB,EAAA27D,SAAA,aAAA,SAAA15D,GAAA,MAAA88E,IAAA/Z,EAAA/iE,KACAuhB,GAAAxjB,EAAA27D,SAAA,iBAAA,SAAA15D;AAAA,MAAA88E,IAAA/Z,EAAA/iE,KAGAuhB,GAAAxjB,EAAAihD,QAAA,SAAA,WAAA,MAAAjhD,GAAAihD,QAAAh6B,UAAAjnB,EAAAihD,QAAA/5B,WAAA,IAEAlnB,EAAAq7F,eACA59D,MAAA,SAAAx7B,GAAAolE,GAAArC,EAAA/iE,IAAAgmE,GAAAhmE,IACAq5F,KAAA,SAAAr5F,GAAAolE,GAAArC,EAAA/iE,KAAAixF,GAAAluB,EAAA/iE,GAAAgmE,GAAAhmE,KACAoC,MAAA,SAAApC,GAAA,MAAAqyC,IAAA0wB,EAAA/iE,IACAs5F,KAAAhX,GAAAvf,EAAA0sB,IACAh0D,MAAA,SAAAz7B,GAAAolE,GAAArC,EAAA/iE,IAAA0vF,GAAA3sB,IAGA,IAAA23B,GAAA38F,EAAA8Y,MAAAmiF,UACAz3E,IAAAm5E,EAAA,QAAA,SAAA16F,GAAA,MAAA+0F,IAAA71F,KAAA6jE,EAAA/iE,KACAuhB,GAAAm5E,EAAA,UAAApY,GAAAvf,EAAA0xB,KACAlzE,GAAAm5E,EAAA,WAAApY,GAAAvf,EAAAiyB,KACAzzE,GAAAm5E,EAAA,QAAA,SAAA16F,GAAA,MAAA+kD,IAAAge,EAAA/iE,KACAuhB,GAAAm5E,EAAA,OAAA,SAAA16F,GAAA,MAAA8kD,IAAAie,EAAA/iE,KAWA,QAAA26F,IAAA53B,EAAAv/D,EAAAo3F,EAAAC,GACA,GAAA7sF,GAAAm+B,EAAA42B,EAAA52B,GACA,OAAAyuD,IAAAA,EAAA,OACA,SAAAA,IAGAzuD,EAAAmkB,KAAAwqC,OACA9sF,EAAAw7D,GAAAzG,EAAAv/D,GADAo3F,EAAA,OAIA,IAAAhkC,GAAAmM,EAAAn+C,QAAAgyC,QACA/F,EAAAkL,EAAA5vB,EAAA3oC,GAAAu3F,EAAApkC,EAAA9F,EAAA3yD,KAAA,KAAA04D,EACA/F,GAAA6Y,aAAA7Y,EAAA6Y,WAAA,KACA,IAAAsxB,GAAAC,EAAApqC,EAAA3yD,KAAAyB,MAAA,QAAA,EACA,IAAAk7F,GAAA,KAAAv7F,KAAAuxD,EAAA3yD,OAGA,GAAA,SAAA08F,IACAI,EAAA7uD,EAAAmkB,KAAAwqC,OAAA9sF,EAAA6iD,EAAA3yD,KAAAoC,MAAA26F,EAAAz8F,QAAAqyD,EAAA3yD,MACA88F,GAAAlH,IAAAkH,EAAA,KAAA,CACA,IAAAH,EAAA,MACAD,GAAA,YANAI,GAAA,EACAJ,EAAA,KAQA,SAAAA,EACAI,EAAAx3F,EAAA2oC,EAAAl9B,MAAA0nD,EAAAoF,EAAA5vB,EAAA3oC,EAAA,GAAAtF,KAAA,KAAA04D,GACA,EACA,OAAAgkC,EACAI,EAAAD,EAAAh4B,EAAAn+C,QAAAs2E,WACA,YAAAN,EACAI,EAAAD,EAAAh4B,EAAAn+C,QAAAs2E,WACA,gBAAAN,KACAI,EAAAD,EAAAH,GAEAI,EAAA/yF,KAAAC,IAAA,EAAA8yF,EAEA,IAAAG,GAAA,GAAAr2E,EAAA,CACA,IAAAi+C,EAAAn+C,QAAAw2E,eACA,IAAA,GAAAh8F,GAAA6I,KAAAy+B,MAAAs0D,EAAApkC,GAAAx3D,IAAAA,EAAA0lB,GAAA8xC,EAAAukC,GAAA,IAGA,IAFAr2E,EAAAk2E,IAAAG,GAAA/jC,EAAA4jC,EAAAl2E,IAEAq2E,GAAAF,EAGA,MAFAzN,IAAArhD,EAAAgvD,EAAAl+B,EAAAz5D,EAAA,GAAAy5D,EAAAz5D,EAAAy3F,EAAAz8F,QAAA,UACAqyD,EAAA6Y,WAAA,MACA,CAIA,KAAA,GAAA/M,GAAA,EAAAA,EAAAxwB,EAAAysC,IAAAC,OAAAr6E,OAAAm+D,IAAA,CACA,GAAA7W,GAAA3Z,EAAAysC,IAAAC,OAAAlc,EACA,IAAA7W,EAAA3nD,KAAA0yD,MAAArtD,GAAAsiD,EAAA3nD,KAAA88C,GAAAggD,EAAAz8F,OAAA,CACA,GAAA68F,GAAAp+B,EAAAz5D,EAAAy3F,EAAAz8F,OACAqsF,IAAA1+C,EAAAwwB,EAAA,GAAA0oB,IAAAgW,EAAAA,GACA,SAWA,QAAAC,IAAAC,GACAC,GAAAD,EAGA,QAAAE,IAAA14B,EAAA24B,EAAAC,EAAA/iB,EAAAzqC,GACA,GAAAhC,GAAA42B,EAAA52B,GACA42B,GAAApgE,QAAA4K,OAAA,EACAqrE,IAAAA,EAAAzsC,EAAAysC,IAEA,IAAAgjB,GAAA74B,EAAA/0D,MAAA2rF,eAAA,SAAAxrD,EACA0tD,EAAAC,GAAAJ,GAAAK,EAAA,IAEA,IAAAH,GAAAhjB,EAAAC,OAAAr6E,OAAA,EACA,GAAAg9F,IAAAA,GAAAt9F,KAAAuO,KAAA,OAAAivF,GACA,GAAA9iB,EAAAC,OAAAr6E,OAAAg9F,GAAAt9F,KAAAM,QAAA,EAAA,CACAu9F,IACA,KAAA,GAAA38F,GAAA,EAAAA,EAAAo8F,GAAAt9F,KAAAM,OAAAY,IACA28F,EAAA33F,KAAA+nC,EAAAshD,WAAA+N,GAAAt9F,KAAAkB,UAEAy8F,GAAAr9F,QAAAo6E,EAAAC,OAAAr6E,SACAu9F,EAAAt1F,EAAAo1F,EAAA,SAAAx4F,GAAA,OAAAA,KAMA,KAAA,GAFAk9E,GAEA5jB,EAAAic,EAAAC,OAAAr6E,OAAA,EAAAm+D,GAAA,EAAAA,IAAA,CACA,GAAAoc,GAAAH,EAAAC,OAAAlc,GACA1qC,EAAA8mD,EAAA9mD,OAAAuF,EAAAuhD,EAAAvhD,IACAuhD,GAAA9uE,UACA0xF,GAAAA,EAAA,EACA1pE,EAAAgrC,EAAAhrC,EAAA4+B,KAAA5+B,EAAAgpB,GAAA0gD,GACA54B,EAAA/0D,MAAA0oD,YAAAklC,EACApkE,EAAAylC,EAAAzlC,EAAAq5B,KAAA5oD,KAAAkvD,IAAA4E,EAAA5vB,EAAA3U,EAAAq5B,MAAA3yD,KAAAM,OAAAg5B,EAAAyjB,GAAAqc,EAAAukC,GAAAr9F,SACAg9F,IAAAA,GAAAQ,UAAAR,GAAAt9F,KAAAuO,KAAA,OAAAivF,IACAzpE,EAAAuF,EAAAylC,EAAAhrC,EAAA4+B,KAAA,KAEA0vB,EAAAxd,EAAA0C,MAAA8a,WACA,IAAA0b,IAAAhqE,KAAAA,EAAAuF,GAAAA,EAAAt5B,KAAA69F,EAAAA,EAAAp/B,EAAAo/B,EAAAv9F,QAAAq9F,EACA1tD,OAAAA,IAAAytD,EAAA,QAAA74B,EAAA/0D,MAAA4rF,YAAA,MAAA,UACAvN,IAAAtpB,EAAA52B,IAAA8vD,GACAzsB,GAAAzM,EAAA,YAAAA,EAAAk5B,GAEAP,IAAAE,GACAM,GAAAn5B,EAAA24B,GAEA1b,GAAAjd,GACAA,EAAA0C,MAAA8a,YAAAA,EACAxd,EAAA0C,MAAA+a,QAAA,EACAzd,EAAA/0D,MAAA2rF,cAAA52B,EAAA/0D,MAAA4rF,aAAA,EAGA,QAAAuC,IAAAn8F,EAAA+iE,GACA,GAAAq5B,GAAAp8F,EAAAq8F,eAAAr8F,EAAAq8F,cAAA7L,QAAA,OACA,IAAA4L,EAIA,MAHAp8F,GAAAie,iBACA8kD,EAAA8sB,cAAA9sB,EAAAn+C,QAAA03E,cACAja,GAAAtf,EAAA,WAAA,MAAA04B,IAAA14B,EAAAq5B,EAAA,EAAA,KAAA,YACA,EAIA,QAAAF,IAAAn5B,EAAA24B,GAEA,GAAA34B,EAAAn+C,QAAA23E,eAAAx5B,EAAAn+C,QAAA43E,YAGA,IAAA,GAFA5jB,GAAA7V,EAAA52B,IAAAysC,IAEAx5E,EAAAw5E,EAAAC,OAAAr6E,OAAA,EAAAY,GAAA,EAAAA,IAAA,CACA,GAAA25E,GAAAH,EAAAC,OAAAz5E,EACA,MAAA25E,EAAA56E,KAAA88C,GAAA,KAAA77C,GAAAw5E,EAAAC,OAAAz5E,EAAA,GAAAjB,KAAA0yD,MAAAkoB,EAAA56E,KAAA0yD,MAAA,CACA,GAAAP,GAAAyS,EAAA05B,UAAA1jB,EAAA56E,MACAmtE,GAAA,CACA,IAAAhb,EAAAisC,eACA,IAAA,GAAA16F,GAAA,EAAAA,EAAAyuD,EAAAisC,cAAA/9F,OAAAqD,IACA,GAAA65F,EAAArtF,QAAAiiD,EAAAisC,cAAAjqE,OAAAzwB,KAAA,EAAA,CACAypE,EAAAqvB,GAAA53B,EAAAgW,EAAA56E,KAAA0yD,KAAA,QACA,YAEAP,GAAAosC,eACApsC,EAAAosC,cAAAp9F,KAAAy8D,EAAAgH,EAAA52B,IAAA4sC,EAAA56E,KAAA0yD,MAAA3yD,KAAAoC,MAAA,EAAAy4E,EAAA56E,KAAA88C,OACAqwB,EAAAqvB,GAAA53B,EAAAgW,EAAA56E,KAAA0yD,KAAA,SAEAya,IAAAkE,GAAAzM,EAAA,gBAAAA,EAAAgW,EAAA56E,KAAA0yD,QAIA,QAAA8rC,IAAA55B,GAEA,IAAA,GADA7kE,MAAA26E,KACAz5E,EAAA,EAAAA,EAAA2jE,EAAA52B,IAAAysC,IAAAC,OAAAr6E,OAAAY,IAAA,CACA,GAAAyxD,GAAAkS,EAAA52B,IAAAysC,IAAAC,OAAAz5E,GAAAjB,KAAA0yD,KACA+rC,GAAA9oC,OAAAmJ,EAAApM,EAAA,GAAA1yD,KAAA8+D,EAAApM,EAAA,EAAA,GACAgoB,GAAAz0E,KAAAw4F,GACA1+F,EAAAkG,KAAA2+D,EAAA85B,SAAAD,EAAA9oC,OAAA8oC,EAAAz+F,OAEA,OAAAD,KAAAA,EAAA26E,OAAAA,GAGA,QAAAikB,IAAAj1D,EAAAmmB,GACAnmB,EAAAp3B,aAAA,cAAA,OACAo3B,EAAAp3B,aAAA,iBAAA,OACAo3B,EAAAp3B,aAAA,eAAAu9C,GAGA,QAAA+uC,MACA,GAAAC,GAAA9mC,EAAA,WAAA,KAAA,KAAA,wFACA51B,EAAA41B,EAAA,OAAA8mC,GAAA,KAAA,iEAUA,OALAnjC,IAAAmjC,EAAA96F,MAAAoF,MAAA,SACA01F,EAAAvsF,aAAA,OAAA,OAEAwsF,KAAAD,EAAA96F,MAAAwiB,OAAA,mBACAo4E,GAAAE,GACA18D,EA8cA,QAAA48D,IAAA/wD,EAAArnB,EAAAzT,EAAAlP,EAAAuhE,GAIA,QAAAy5B,KACA,GAAA95F,GAAAyhB,EAAA+rC,KAAAx/C,CACA,SAAAhO,EAAA8oC,EAAAl9B,OAAA5L,GAAA8oC,EAAAl9B,MAAAk9B,EAAA4K,QACAjyB,EAAA,GAAAm4C,GAAA55D,EAAAyhB,EAAAm2B,GAAAn2B,EAAAo4C,QACA0F,EAAA7G,EAAA5vB,EAAA9oC,IAEA,QAAA+5F,GAAAC,GACA,GAAA/rF,EAMA,IAJAA,EADAoyD,EACAM,GAAA73B,EAAA42B,GAAAH,EAAA99C,EAAAzT,GAEAmyD,GAAAZ,EAAA99C,EAAAzT,GAEA,MAAAC,EAAA,CACA,GAAA+rF,IAAAF,IAGA,OAAA,CAFAr4E,GAAA2+C,GAAAC,EAAAv3B,EAAA42B,GAAAH,EAAA99C,EAAA+rC,KAAAx/C,OAIAyT,GAAAxT,CAEA,QAAA,EAxBA,GAAAu6E,GAAA/mE,EACAw4E,EAAAjsF,EACAuxD,EAAA7G,EAAA5vB,EAAArnB,EAAA+rC,KAyBA,IAAA,QAAA1uD,EACAi7F,QACA,IAAA,UAAAj7F,EACAi7F,GAAA,OACA,IAAA,QAAAj7F,GAAA,SAAAA,EAGA,IAAA,GAFAo7F,GAAA,KAAAx1D,EAAA,SAAA5lC,EACA+1D,EAAA/rB,EAAA42B,IAAA52B,EAAA42B,GAAAy6B,UAAA14E,EAAA,aACA7V,GAAA,IACAoC,EAAA,IAAA+rF,GAAAnuF,GADAA,GAAA,EAAA,CAEA,GAAAtN,GAAAihE,EAAA1kE,KAAAo0B,OAAAxN,EAAAm2B,KAAA,KACAv8C,EAAAu5D,EAAAt2D,EAAAu2D,GAAA,IACAnwB,GAAA,MAAApmC,EAAA,KACAomC,GAAA,KAAAzoC,KAAAqC,GAAA,KACA,GAEA,KADAomC,GAAA94B,GAAAvQ,IAAAA,EAAA,KACA6+F,GAAAA,GAAA7+F,EAAA,CACA2S,EAAA,IAAAA,EAAA,EAAA+rF,IAAAt4E,EAAAo4C,OAAA,QACA,OAIA,GADAx+D,IAAA6+F,EAAA7+F,GACA2S,EAAA,IAAA+rF,GAAAnuF,GAAA,MAGA,GAAA+O,GAAA0tE,GAAAv/C,EAAArnB,EAAA+mE,EAAAyR,GAAA,EAEA,OADAlgC,GAAAyuB,EAAA7tE,KAAAA,EAAAy/E,SAAA,GACAz/E,EAMA,QAAA0/E,IAAA36B,EAAAj+C,EAAAzT,EAAAlP,GACA,GAAA4P,GAAAo6B,EAAA42B,EAAA52B,IAAAj8B,EAAA4U,EAAAP,IACA,IAAA,QAAApiB,EAAA,CACA,GAAAw7F,GAAA11F,KAAAkvD,IAAA4L,EAAApgE,QAAAq8C,QAAA3kB,aAAAz8B,OAAA8gF,aAAAhhF,SAAA8V,gBAAA6mB,cACAujE,EAAA31F,KAAAC,IAAAy1F,EAAA,GAAApmB,GAAAxU,EAAApgE,SAAA,EACAoP,IAAAV,EAAA,EAAAyT,EAAAqX,OAAArX,EAAAnR,KAAAtC,EAAAusF,MAEA,QAAAz7F,IACA4P,EAAAV,EAAA,EAAAyT,EAAAqX,OAAA,EAAArX,EAAAnR,IAAA,EAGA,KADA,GAAAqC,GAEAA,EAAAghE,GAAAjU,EAAA7yD,EAAA6B,GACAiE,EAAA8gE,SAFA,CAGA,GAAAzlE,EAAA,EAAAU,GAAA,EAAAA,GAAAo6B,EAAA5iC,OAAA,CAAAyM,EAAAynF,SAAA,CAAA,OACA1rF,GAAA,EAAAV,EAEA,MAAA2E,GA8WA,QAAA6nF,IAAA96B,EAAAj+C,GACA,GAAA7E,GAAAozD,GAAAtQ,EAAAj+C,EAAA+rC,KACA,KAAA5wC,GAAAA,EAAApX,OAAA,MAAA,KACA,IAAAgoD,GAAAkL,EAAAgH,EAAA52B,IAAArnB,EAAA+rC,MACApd,EAAAw/B,GAAAhzD,EAAA4wC,EAAA/rC,EAAA+rC,MAEAhtC,EAAAw/C,GAAAxS,EAAAkS,EAAA52B,IAAA7T,WAAAwlE,EAAA,MACA,IAAAj6E,EAAA,CACA,GAAAqgD,GAAAf,GAAAt/C,EAAAiB,EAAAm2B,GACA6iD,GAAA55B,EAAA,EAAA,QAAA,OAEA,GAAAlmD,GAAAg2D,GAAAvgC,EAAAhtC,IAAAqe,EAAAm2B,GAAA6iD,EAEA,OADA9/E,GAAA8Q,OAAA,SAAA9Q,EAAA8a,SAAA9a,EAAA3b,IAAA2b,EAAA5b,MACA4b,EAGA,QAAA+/E,IAAAlnD,GACA,IAAA,GAAAmnD,GAAAnnD,EAAAmnD,EAAAA,EAAAA,EAAA3/F,WACA,GAAA,4BAAAiB,KAAA0+F,EAAAjqF,WAAA,OAAA,CACA,QAAA,EAGA,QAAAkqF,IAAAn5E,EAAAo5E,GAAA,MAAAA,KAAAp5E,EAAAo5E,KAAA,GAAAp5E,EAEA,QAAAq5E,IAAAp7B,EAAA9wC,EAAAuF,EAAAwiD,EAAAC,GAEA,QAAAmkB,GAAAhuF,GAAA,MAAA,UAAA8tD,GAAA,MAAAA,GAAA9tD,IAAAA,GACA,QAAAymB,KACAwnE,IACAngG,GAAAo6F,EACA+F,GAAA,GAGA,QAAAC,GAAA7tE,GACAA,IACAoG,IACA34B,GAAAuyB,GAGA,QAAA8tE,GAAA1nD,GACA,GAAA,GAAAA,EAAA13C,SAAA,CACA,GAAAq/F,GAAA3nD,EAAAz1C,aAAA,UACA,IAAA,MAAAo9F,EAEA,WADAF,GAAAE,GAAA3nD,EAAA1yC,YAAAjD,QAAA,UAAA,IAGA,IAAA63E,GAAA0lB,EAAA5nD,EAAAz1C,aAAA,YACA,IAAAq9F,EAAA,CACA,GAAAh/B,GAAAsD,EAAAmsB,UAAAjyB,EAAA+c,EAAA,GAAA/c,EAAAgd,EAAA,EAAA,GAAAmkB,GAAAK,GAGA,aAFAh/B,EAAAjhE,SAAAu6E,EAAAtZ,EAAA,GAAA5tD,SACAysF,EAAApiC,EAAA6G,EAAA52B,IAAA4sC,EAAA9mD,KAAA8mD,EAAAvhD,IAAA/qB,KAAA6rF,KAGA,GAAA,SAAAzhD,EAAAz1C,aAAA,mBAAA,MACA,IAAAs9F,GAAA,iBAAAp/F,KAAAu3C,EAAAh4C,SACA6/F,IAAA7nE,GACA,KAAA,GAAAz3B,GAAA,EAAAA,EAAAy3C,EAAA5yC,WAAAzF,OAAAY,IACAm/F,EAAA1nD,EAAA5yC,WAAA7E,GACAs/F,KAAAL,GAAA,OACA,IAAAxnD,EAAA13C,UACAm/F,EAAAznD,EAAA3hC,WAGA,IAtCA,GAAAhX,GAAA,GAAAmgG,GAAA,EAAA/F,EAAAv1B,EAAA52B,IAAAikD,gBAuCAmO,EAAAtsE,GACAA,GAAAuF,GACAvF,EAAAA,EAAAnhB,WAEA,OAAA5S,GAGA,QAAAygG,IAAA57B,EAAAlsB,EAAA/nB,GACA,GAAA8vE,EACA,IAAA/nD,GAAAksB,EAAApgE,QAAAi2D,QAAA,CAEA,GADAgmC,EAAA77B,EAAApgE,QAAAi2D,QAAA30D,WAAA6qB,IACA8vE,EAAA,MAAAX,IAAAl7B,EAAAtF,QAAAR,EAAA8F,EAAApgE,QAAAu3D,OAAA,KAAA,EACArjB,GAAA,KAAA/nB,EAAA,MAEA,KAAA8vE,EAAA/nD,GAAA+nD,EAAAA,EAAAvgG,WAAA,CACA,IAAAugG,GAAAA,GAAA77B,EAAApgE,QAAAi2D,QAAA,MAAA,KACA,IAAAgmC,EAAAvgG,YAAAugG,EAAAvgG,YAAA0kE,EAAApgE,QAAAi2D,QAAA,MAGA,IAAA,GAAAx5D,GAAA,EAAAA,EAAA2jE,EAAApgE,QAAAsd,KAAAzhB,OAAAY,IAAA,CACA,GAAA2sE,GAAAhJ,EAAApgE,QAAAsd,KAAA7gB,EACA,IAAA2sE,EAAAl1B,MAAA+nD,EACA,MAAAC,IAAA9yB,EAAAl1B,EAAA/nB,IAIA,QAAA+vE,IAAA9yB,EAAAl1B,EAAA/nB,GAqBA,QAAAjd,GAAA8vC,EAAAm9C,EAAAhwE,GACA,IAAA,GAAA1vB,IAAA,EAAAA,GAAAutE,EAAAA,EAAAnuE,OAAA,GAAAY,IAEA,IAAA,GADA8lE,GAAA9lE,EAAA,EAAA25D,EAAAtyD,IAAAkmE,EAAAvtE,GACAyC,EAAA,EAAAA,EAAAqjE,EAAA1mE,OAAAqD,GAAA,EAAA,CACA,GAAAk9F,GAAA75B,EAAArjE,EAAA,EACA,IAAAk9F,GAAAp9C,GAAAo9C,GAAAD,EAAA,CACA,GAAAjuC,GAAA0L,EAAAn9D,EAAA,EAAA2sE,EAAAlb,KAAAkb,EAAAM,KAAAjtE,IACA67C,EAAAiqB,EAAArjE,GAAAitB,CAEA,QADAA,EAAA,GAAAiwE,GAAAp9C,KAAA1G,EAAAiqB,EAAArjE,GAAAitB,EAAA,EAAA,KACAmuC,EAAApM,EAAA5V,KA7BA,GAAA+D,GAAA+sB,EAAA7tE,KAAAgG,WAAAg6F,GAAA,CACA,KAAArnD,IAAAtyC,EAAAy6C,EAAAnI,GAAA,MAAAonD,IAAAhhC,EAAAV,EAAAwP,EAAAlb,MAAA,IAAA,EACA,IAAAha,GAAAmI,IACAk/C,GAAA,EACArnD,EAAAmI,EAAA/6C,WAAA6qB,GACAA,EAAA,GACA+nB,GAAA,CACA,GAAAga,GAAAkb,EAAAM,KAAA/U,EAAAyU,EAAAM,MAAAN,EAAAlb,IACA,OAAAotC,IAAAhhC,EAAAV,EAAA1L,GAAAA,EAAA3yD,KAAAM,QAAA0/F,GAIA,GAAAv8C,GAAA,GAAA9K,EAAA13C,SAAA03C,EAAA,KAAAioD,EAAAjoD,CAKA,KAJA8K,GAAA,GAAA9K,EAAA5yC,WAAAzF,QAAA,GAAAq4C,EAAA3yC,WAAA/E,WACAwiD,EAAA9K,EAAA3yC,WACA4qB,IAAAA,EAAA6yB,EAAAzsC,UAAA1W,SAEAsgG,EAAAzgG,YAAA2gD,GAAA8/C,EAAAA,EAAAzgG,UACA,IAAA06D,GAAAgT,EAAAhT,QAAA4T,EAAA5T,EAAA4T,KAgBAlN,EAAA5tD,EAAA8vC,EAAAm9C,EAAAhwE,EACA,IAAA2wC,EAAA,MAAAw+B,IAAAx+B,EAAAy+B,EAGA,KAAA,GAAAn8E,GAAA+8E,EAAAhuF,YAAAkuF,EAAAr9C,EAAAA,EAAAzsC,UAAA1W,OAAAswB,EAAA,EAAA/M,EAAAA,EAAAA,EAAAjR,YAAA,CAEA,GADA2uD,EAAA5tD,EAAAkQ,EAAAA,EAAA7d,WAAA,GAEA,MAAA+5F,IAAAhhC,EAAAwC,EAAA5O,KAAA4O,EAAAxkB,GAAA+jD,GAAAd,EAEAc,IAAAj9E,EAAA5d,YAAA3F,OAEA,IAAA,GAAAsjB,GAAAg9E,EAAAG,gBAAAC,EAAApwE,EAAAhN,EAAAA,EAAAA,EAAAm9E,gBAAA,CAEA,GADAx/B,EAAA5tD,EAAAiQ,EAAAA,EAAA5d,YAAA,GAEA,MAAA+5F,IAAAhhC,EAAAwC,EAAA5O,KAAA4O,EAAAxkB,GAAAikD,GAAAhB,EAEAgB,IAAAp9E,EAAA3d,YAAA3F,QAmWA,QAAA2gG,IAAA/3D,EAAAxiB,GAeA,QAAA0vC,KAAAltB,EAAAj2B,MAAA4xD,EAAAq8B,WANA,GARAx6E,EAAAA,EAAA6xC,EAAA7xC,MACAA,EAAAzT,MAAAi2B,EAAAj2B,OACAyT,EAAAiR,UAAAuR,EAAA7wB,WACAqO,EAAAiR,SAAAuR,EAAA7wB,WACAqO,EAAAsiB,aAAAE,EAAAF,cACAtiB,EAAAsiB,YAAAE,EAAAF,aAGA,MAAAtiB,EAAAk1E,UAAA,CACA,GAAAzjF,GAAA+/C,GACAxxC,GAAAk1E,UAAAzjF,GAAA+wB,GACA,MAAAA,EAAAhmC,aAAA,cAAAiV,GAAA3Y,SAAA+E,KAKA,GAAA48F,EACA,IAAAj4D,EAAAtI,OACAvd,GAAA6lB,EAAAtI,KAAA,SAAAw1B,IAEA1vC,EAAA06E,wBAAA,CACA,GAAAxgE,GAAAsI,EAAAtI,IACAugE,GAAAvgE,EAAArnB,MACA,KACA,GAAA8nF,GAAAzgE,EAAArnB,OAAA,WACA68C,IACAx1B,EAAArnB,OAAA4nF,EACAvgE,EAAArnB,SACAqnB,EAAArnB,OAAA8nF,GAEA,MAAAv/F,KAIA4kB,EAAAo1E,WAAA,SAAAj3B,GACAA,EAAAzO,KAAAA,EACAyO,EAAAy8B,YAAA,WAAA,MAAAp4D,IACA27B,EAAA08B,WAAA,WACA18B,EAAA08B,WAAA/vF,MACA4kD,IACAltB,EAAA/oC,WAAAC,YAAAykE,EAAA28B,qBACAt4D,EAAAllC,MAAAS,QAAA,GACAykC,EAAAtI,OACAh6B,GAAAsiC,EAAAtI,KAAA,SAAAw1B,GACA,kBAAAltB,GAAAtI,KAAArnB,SACA2vB,EAAAtI,KAAArnB,OAAA4nF,MAKAj4D,EAAAllC,MAAAS,QAAA,MACA,IAAAogE,GAAAw2B,GAAA,SAAA1iD,GAAA,MAAAzP,GAAA/oC,WAAAwjB,aAAAg1B,EAAAzP,EAAAt2B,cACA8T,EACA,OAAAm+C,GAGA,QAAA48B,IAAA7pC,GACAA,EAAAhxD,IAAAA,GACAgxD,EAAAv0C,GAAAA,GACAu0C,EAAA8mB,iBAAAA,GACA9mB,EAAA0jC,IAAAA,GACA1jC,EAAA23B,WAAAqO,GACAhmC,EAAAa,YAAAA,EACAb,EAAAkB,WAAAA,EACAlB,EAAAmC,WAAAF,EACAjC,EAAAg+B,KAAAA,GACAh+B,EAAAqP,OAAAA,GACArP,EAAA0wB,KAAAA,GACA1wB,EAAA0vB,UAAAA,GACA1vB,EAAAyoB,eAAAA,GACAzoB,EAAAmH,IAAAA,EACAnH,EAAA8pC,OAAAziC,EACArH,EAAAoR,MAAAA,GACApR,EAAAwR,UAAAA,GACAxR,EAAAyR,YAAAA,GACAzR,EAAA0R,QAAAA,GACA1R,EAAA6R,eAAAA,GACA7R,EAAAkS,WAAAA,GACAlS,EAAAoS,UAAAA,GACApS,EAAAuS,WAAAA,GACAvS,EAAAsS,UAAAA,GACAtS,EAAA69B,SAAAA,GACA79B,EAAA88B,OAAAA,GACA98B,EAAAxR,QAAAA,GACAwR,EAAAy8B,cAAAA,GACAz8B,EAAAs8B,UAAAA,GACAt8B,EAAAm8B,gBAAAA,GACAn8B,EAAAoU,aAAAA,GACApU,EAAAk5B,iBAAAA,GACAl5B,EAAA04B,WAAAA,GACA14B,EAAAq4B,WAAAA,GACAr4B,EAAAgQ,iBAAAA,GACAhQ,EAAAiQ,kBAAAA,GACAjQ,EAAAkQ,OAAAA,GACAlQ,EAAApuC,SAAAA,EACAouC,EAAAvxD,SAAAA,EACAuxD,EAAA+kB,QAAAA,GACA/kB,EAAA08B,SAAAA,GA3iSA,GAAA5rD,IAAAD,UAAAC,UACAi5D,GAAAl5D,UAAAk5D,SAEA/lC,GAAA,aAAAx6D,KAAAsnC,IACAk5D,GAAA,UAAAxgG,KAAAsnC,IACAm5D,GAAA,wCAAA99F,KAAA2kC,IACAo5D,GAAA,cAAA/9F,KAAA2kC,IACA+yB,GAAAmmC,IAAAC,IAAAC,GACApmC,GAAAD,KAAAmmC,GAAApiG,SAAAuiG,cAAA,IAAAD,IAAAD,IAAA,IACAlmC,IAAAmmC,IAAA,WAAA1gG,KAAAsnC,IACAs5D,GAAArmC,IAAA,eAAAv6D,KAAAsnC,IACA6uC,IAAAuqB,IAAA,WAAA1gG,KAAAsnC,IACAs2C,GAAA,UAAA59E,KAAAsnC,IACAmqD,GAAA,iBAAAzxF,KAAAqnC,UAAAw5D,QACAC,GAAA,+BAAA9gG,KAAAsnC,IACA+3C,GAAA,YAAAr/E,KAAAsnC,IAEAq2D,IAAA+C,IAAA,cAAA1gG,KAAAsnC,KAAA,cAAAtnC,KAAAsnC,IACA8uC,GAAA,UAAAp2E,KAAAsnC,IAEAmzB,GAAAkjC,IAAAvnB,IAAA,mDAAAp2E,KAAAsnC,IACAw/B,GAAA62B,IAAA,MAAA39F,KAAAugG,IACAxI,GAAA,WAAA/3F,KAAAsnC,IACA6xD,GAAA,OAAAn5F,KAAAugG,IAEAQ,GAAAnjB,IAAAt2C,GAAAjnC,MAAA,sBACA0gG,MAAAA,GAAAhW,OAAAgW,GAAA,KACAA,IAAAA,IAAA,KAAAnjB,IAAA,EAAArjB,IAAA,EAEA,IAuCA/T,IAvCA6sC,GAAAvsB,KAAA85B,IAAAhjB,KAAA,MAAAmjB,IAAAA,GAAA,QACA9K,GAAAz7B,IAAAH,IAAAC,IAAA,EAIAihB,GAAA,SAAAhkC,EAAArM,GACA,GAAA8rB,GAAAzf,EAAA9iC,UACApU,EAAAo2D,EAAAvrB,GAAAvoC,KAAAq0D,EACA,IAAA32D,EAAA,CACA,GAAAoiB,GAAAu0C,EAAAh2D,MAAAX,EAAA8Y,MAAA9Y,EAAA,GAAAnB,OACAq4C,GAAA9iC,UAAAuiD,EAAAh2D,MAAA,EAAAX,EAAA8Y,QAAAsJ,EAAApiB,EAAA,GAAAoiB,EAAA,KA8BA+jC,IAAApoD,SAAAsoD,YAAA,SAAAnP,EAAAz0C,EAAAC,EAAAi+F,GACA,GAAA7hG,GAAAf,SAAAsoD,aAGA,OAFAvnD,GAAA8hG,OAAAD,GAAAzpD,EAAAx0C,GACA5D,EAAA+hG,SAAA3pD,EAAAz0C,GACA3D,GAEA,SAAAo4C,EAAAz0C,EAAAC,GACA,GAAA5D,GAAAf,SAAA+E,KAAAg+F,iBACA,KAAAhiG,EAAAiiG,kBAAA7pD,EAAAx4C,YACA,MAAA2B,GAAA,MAAAvB,GAIA,MAHAA,GAAAq6B,UAAA,GACAr6B,EAAAkiG,QAAA,YAAAt+F,GACA5D,EAAAwnD,UAAA,YAAA7jD,GACA3D,EAwCA,IAAAmiG,IAAA,SAAA/pD,GAAAA,EAAA9+B,SACAklF,IACA2D,GAAA,SAAA/pD,GAAAA,EAAAgP,eAAA,EAAAhP,EAAAgqD,aAAAhqD,EAAA1lC,MAAA3S,QACAm7D,KACAinC,GAAA,SAAA/pD,GAAA,IAAAA,EAAA9+B,SAAA,MAAA+oF,MAgCA,IAAAjH,IAAA,WAAAh8F,KAAAuS,GAAA,KACAypF,IAAApxF,UAAAnH,IAAA,SAAAy/F,EAAAv/F,GACAmlB,aAAA9oB,KAAAuS,IACAvS,KAAAuS,GAAArH,WAAAvH,EAAAu/F,GAUA,IA+mCAz6B,IAeAE,GA9nCAjN,GAAA,GAIAu6B,IAAAxlF,SAAA,WAAA,MAAA,oBAGAi9E,IAAA1uD,QAAA,GACAo6D,IAAA9oD,OAAA,UACA6yD,IAAA7yD,OAAA,SAkBAkpB,IAAA,IAmCAW,GAAA,4GAqBAI,GAAA,64DAyPA0F,IAAA,EACAE,IAAA,EAsYAoF,GAAA,KA0CAE,GAAA,WAKA,QAAA29B,GAAAv5D,GACA,MAAAA,IAAA,IAAAw5D,EAAA5uE,OAAAoV,GACA,MAAAA,GAAAA,GAAA,KAAA,IACA,MAAAA,GAAAA,GAAA,KAAAy5D,EAAA7uE,OAAAoV,EAAA,MACA,MAAAA,GAAAA,GAAA,KAAA,IACA,MAAAA,GAAAA,GAAA,KAAA,IACA,MAAAA,EAAA,IACA,IAMA,QAAA05D,GAAAl+B,EAAAjxC,EAAAuF,GACA35B,KAAAqlE,MAAAA,EACArlE,KAAAo0B,KAAAA,EAAAp0B,KAAA25B,GAAAA,EAlBA,GAAA0pE,GAAA,2PAEAC,EAAA,6PAWAE,EAAA,4CACAC,EAAA,SAAAC,EAAA,QAAAC,EAAA,SAAAC,EAAA,MAOA,OAAA,UAAAhxE,EAAA6H,GACA,GAAAopE,GAAA,OAAAppE,EAAA,IAAA,GAEA,IAAA,GAAA7H,EAAAjyB,QAAA,OAAA85B,IAAA+oE,EAAA/hG,KAAAmxB,GAAA,OAAA,CAEA,KAAA,GADAmnB,GAAAnnB,EAAAjyB,OAAA6hD,KACAjhD,EAAA,EAAAA,EAAAw4C,IAAAx4C,EACAihD,EAAAj8C,KAAA68F,EAAAxwE,EAAAnd,WAAAlU,IAMA,KAAA,GAAAu9D,GAAA,EAAApkD,EAAAmpF,EAAA/kC,EAAA/kB,IAAA+kB,EAAA,CACA,GAAAj+D,GAAA2hD,EAAAsc,EACA,MAAAj+D,EAAA2hD,EAAAsc,GAAApkD,EACAA,EAAA7Z,EAQA,IAAA,GAAAshE,GAAA,EAAAr+D,EAAA+/F,EAAA1hC,EAAApoB,IAAAooB,EAAA,CACA,GAAA2hC,GAAAthD,EAAA2f,EACA,MAAA2hC,GAAA,KAAAhgG,EAAA0+C,EAAA2f,GAAA,IACAuhC,EAAAjiG,KAAAqiG,KAAAhgG,EAAAggG,EAAA,KAAAA,IAAAthD,EAAA2f,GAAA,MAMA,IAAA,GAAAC,GAAA,EAAA2hC,EAAAvhD,EAAA,GAAA4f,EAAAroB,EAAA,IAAAqoB,EAAA,CACA,GAAA4hC,GAAAxhD,EAAA4f,EACA,MAAA4hC,GAAA,KAAAD,GAAA,KAAAvhD,EAAA4f,EAAA,GAAA5f,EAAA4f,GAAA,IACA,KAAA4hC,GAAAD,GAAAvhD,EAAA4f,EAAA,IACA,KAAA2hC,GAAA,KAAAA,IAAAvhD,EAAA4f,GAAA2hC,GACAA,EAAAC,EAOA,IAAA,GAAA1gB,GAAA,EAAAA,EAAAvpC,IAAAupC,EAAA,CACA,GAAA2gB,GAAAzhD,EAAA8gC,EACA,IAAA,KAAA2gB,EAAAzhD,EAAA8gC,GAAA,QACA,IAAA,KAAA2gB,EAAA,CACA,GAAAz/F,GAAA,MACA,KAAAA,EAAA8+E,EAAA,EAAA9+E,EAAAu1C,GAAA,KAAAyI,EAAAh+C,KAAAA,GAEA,IAAA,GADAnB,GAAAigF,GAAA,KAAA9gC,EAAA8gC,EAAA,IAAA9+E,EAAAu1C,GAAA,KAAAyI,EAAAh+C,GAAA,IAAA,IACAR,EAAAs/E,EAAAt/E,EAAAQ,IAAAR,EAAAw+C,EAAAx+C,GAAAX,CACAigF,GAAA9+E,EAAA,GAOA,IAAA,GAAA0/F,GAAA,EAAAC,EAAAN,EAAAK,EAAAnqD,IAAAmqD,EAAA,CACA,GAAAE,GAAA5hD,EAAA0hD,EACA,MAAAC,GAAA,KAAAC,EAAA5hD,EAAA0hD,GAAA,IACAR,EAAAjiG,KAAA2iG,KAAAD,EAAAC,GASA,IAAA,GAAAC,GAAA,EAAAA,EAAAtqD,IAAAsqD,EACA,GAAAZ,EAAAhiG,KAAA+gD,EAAA6hD,IAAA,CACA,GAAAC,GAAA,MACA,KAAAA,EAAAD,EAAA,EAAAC,EAAAvqD,GAAA0pD,EAAAhiG,KAAA+gD,EAAA8hD,MAAAA,GAIA,IAAA,GAHArgF,GAAA,MAAAogF,EAAA7hD,EAAA6hD,EAAA,GAAAR,GACA3/E,EAAA,MAAAogF,EAAAvqD,EAAAyI,EAAA8hD,GAAAT,GACAU,EAAAtgF,GAAAC,EAAAD,EAAA,IAAA,IAAA4/E,EACAnzB,EAAA2zB,EAAA3zB,EAAA4zB,IAAA5zB,EAAAluB,EAAAkuB,GAAA6zB,CACAF,GAAAC,EAAA,EAUA,IAAA,GADA5+F,GAAAsgB,KACAw+E,EAAA,EAAAA,EAAAzqD,GACA,GAAA4pD,EAAAliG,KAAA+gD,EAAAgiD,IAAA,CACA,GAAAjgG,GAAAigG,CACA,OAAAA,EAAAA,EAAAzqD,GAAA4pD,EAAAliG,KAAA+gD,EAAAgiD,MAAAA,GACAx+E,EAAAzf,KAAA,GAAAg9F,GAAA,EAAAh/F,EAAAigG,QACA,CACA,GAAAv9E,GAAAu9E,EAAAr5B,EAAAnlD,EAAArlB,MACA,OAAA6jG,EAAAA,EAAAzqD,GAAA,KAAAyI,EAAAgiD,KAAAA,GACA,IAAA,GAAA7zB,GAAA1pD,EAAA0pD,EAAA6zB,GACA,GAAAZ,EAAAniG,KAAA+gD,EAAAmuB,IAAA,CACA1pD,EAAA0pD,GAAA3qD,EAAAzU,OAAA45D,EAAA,EAAA,GAAAo4B,GAAA,EAAAt8E,EAAA0pD,GACA,IAAA8zB,GAAA9zB,CACA,OAAAA,EAAAA,EAAA6zB,GAAAZ,EAAAniG,KAAA+gD,EAAAmuB,MAAAA,GACA3qD,EAAAzU,OAAA45D,EAAA,EAAA,GAAAo4B,GAAA,EAAAkB,EAAA9zB,IACA1pD,EAAA0pD,QACAA,CAEA1pD,GAAAu9E,GAAAx+E,EAAAzU,OAAA45D,EAAA,EAAA,GAAAo4B,GAAA,EAAAt8E,EAAAu9E,IAYA,MATA,IAAAx+E,EAAA,GAAAq/C,QAAA3/D,EAAAktB,EAAA9wB,MAAA,WACAkkB,EAAA,GAAAoO,KAAA1uB,EAAA,GAAA/E,OACAqlB,EAAA/W,QAAA,GAAAs0F,GAAA,EAAA,EAAA79F,EAAA,GAAA/E,UAEA,GAAA84D,EAAAzzC,GAAAq/C,QAAA3/D,EAAAktB,EAAA9wB,MAAA,WACA23D,EAAAzzC,GAAA2T,IAAAj0B,EAAA,GAAA/E,OACAqlB,EAAAzf,KAAA,GAAAg9F,GAAA,EAAAxpD,EAAAr0C,EAAA,GAAA/E,OAAAo5C,KAGA,OAAAtf,EAAAzU,EAAAzK,UAAAyK,MA4HAmhD,MAEAzjD,GAAA,SAAAujD,EAAApmE,EAAA8C,GACA,GAAAsjE,EAAAlxD,iBACAkxD,EAAAlxD,iBAAAlV,EAAA8C,GAAA,OACA,IAAAsjE,EAAAjxD,YACAixD,EAAAjxD,YAAA,KAAAnV,EAAA8C,OACA,CACA,GAAA0jE,GAAAJ,EAAAC,YAAAD,EAAAC,aACAG,GAAAxmE,IAAAwmE,EAAAxmE,IAAAsmE,IAAAp7D,OAAApI,KAwFAs0F,GAAA,WAGA,GAAAn8B,IAAAC,GAAA,EAAA,OAAA,CACA,IAAAt5B,GAAA41B,EAAA,MACA,OAAA,aAAA51B,IAAA,YAAAA,MA+BAw7D,GAAA,GAAA,QAAA/tF,MAAA,MAAAvP,OAAA,SAAAozD,GAEA,IADA,GAAA9sC,GAAA,EAAA9G,KAAA3a,EAAAuuD,EAAApzD,OACAsmB,GAAAzhB,GAAA,CACA,GAAAk/F,GAAA3wC,EAAAvjD,QAAA,KAAAyW,EACAy9E,KAAA,IAAAA,EAAA3wC,EAAApzD,OACA,IAAAqyD,GAAAe,EAAAtxD,MAAAwkB,EAAA,MAAA8sC,EAAAt/B,OAAAiwE,EAAA,GAAAA,EAAA,EAAAA,GACAC,EAAA3xC,EAAAxiD,QAAA,KACAm0F,KAAA,GACAxkF,EAAA5Z,KAAAysD,EAAAvwD,MAAA,EAAAkiG,IACA19E,GAAA09E,EAAA,IAEAxkF,EAAA5Z,KAAAysD,GACA/rC,EAAAy9E,EAAA,GAGA,MAAAvkF,IACA,SAAA4zC,GAAA,MAAAA,GAAA7jD,MAAA,aAEA00F,GAAA7kG,OAAAgzF,aAAA,SAAAoM,GACA,IAAA,MAAAA,GAAAn3C,gBAAAm3C,EAAA6D,aACA,MAAA7gG,GAAA,OAAA,IACA,SAAAg9F,GACA,GAAAjkB,EACA,KAAAA,EAAAikB,EAAAz6F,cAAAwjD,UAAAC,cACA,MAAAhmD,IACA,SAAA+4E,GAAAA,EAAA2pB,iBAAA1F,IACA,GAAAjkB,EAAA4pB,iBAAA,aAAA5pB,IAGA6b,GAAA,WACA,GAAA50F,GAAAk2D,EAAA,MACA,OAAA,UAAAl2D,KACAA,EAAAyQ,aAAA,SAAA,WACA,kBAAAzQ,GAAA4iG,WAGA/7B,GAAA,KAUAK,MACAI,MA2DAK,MAwCAuC,GAAA,SAAAtY,EAAAgF,GACA/4D,KAAAinB,IAAAjnB,KAAAuE,MAAA,EACAvE,KAAA+zD,OAAAA,EACA/zD,KAAA+4D,QAAAA,GAAA,EACA/4D,KAAAglG,cAAAhlG,KAAAilG,gBAAA,EACAjlG,KAAAq1F,UAAA,EAGAhpB,IAAAzhE,UAAA2hE,IAAA,WAAA,MAAAvsE,MAAAinB,KAAAjnB,KAAA+zD,OAAApzD,QACA0rE,GAAAzhE,UAAAs6F,IAAA,WAAA,MAAAllG,MAAAinB,KAAAjnB,KAAAq1F,WACAhpB,GAAAzhE,UAAAu6F,KAAA,WAAA,MAAAnlG,MAAA+zD,OAAAt/B,OAAAz0B,KAAAinB,MAAAiP,QACAm2C,GAAAzhE,UAAA6I,KAAA,WACA,GAAAzT,KAAAinB,IAAAjnB,KAAA+zD,OAAApzD,OACA,MAAAX,MAAA+zD,OAAAt/B,OAAAz0B,KAAAinB,QAEAolD,GAAAzhE,UAAAw6F,IAAA,SAAAtjG,GACA,GACAkuF,GADA5yC,EAAAp9C,KAAA+zD,OAAAt/B,OAAAz0B,KAAAinB,IAIA,IAFA+oE,EAAA,gBAAAluF,GAAAs7C,GAAAt7C,EACAs7C,IAAAt7C,EAAAL,KAAAK,EAAAL,KAAA27C,GAAAt7C,EAAAs7C,IACA,QAAAp9C,KAAAinB,IAAAm2B,GAEAivB,GAAAzhE,UAAAy6F,SAAA,SAAAvjG,GAEA,IADA,GAAAyC,GAAAvE,KAAAinB,IACAjnB,KAAAolG,IAAAtjG,KACA,MAAA9B,MAAAinB,IAAA1iB,GAEA8nE,GAAAzhE,UAAA06F,SAAA,WAIA,IAHA,GAAAnY,GAAAntF,KAEAuE,EAAAvE,KAAAinB,IACA,aAAAxlB,KAAAzB,KAAA+zD,OAAAt/B,OAAAz0B,KAAAinB,SAAAkmE,EAAAlmE,GACA,OAAAjnB,MAAAinB,IAAA1iB,GAEA8nE,GAAAzhE,UAAA26F,UAAA,WAAAvlG,KAAAinB,IAAAjnB,KAAA+zD,OAAApzD,QACA0rE,GAAAzhE,UAAA46F,OAAA,SAAApoD,GACA,GAAAwkB,GAAA5hE,KAAA+zD,OAAAvjD,QAAA4sC,EAAAp9C,KAAAinB,IACA,IAAA26C,GAAA,EAAA,MAAA5hE,MAAAinB,IAAA26C,GAAA,GAEAyK,GAAAzhE,UAAA66F,OAAA,SAAA9/F,GAAA3F,KAAAinB,KAAAthB,GACA0mE,GAAAzhE,UAAA86F,OAAA,WAKA,MAJA1lG,MAAAglG,cAAAhlG,KAAAuE,QACAvE,KAAAilG,gBAAAnsC,EAAA94D,KAAA+zD,OAAA/zD,KAAAuE,MAAAvE,KAAA+4D,QAAA/4D,KAAAglG,cAAAhlG,KAAAilG,iBACAjlG,KAAAglG,cAAAhlG,KAAAuE,OAEAvE,KAAAilG,iBAAAjlG,KAAAq1F,UAAAv8B,EAAA94D,KAAA+zD,OAAA/zD,KAAAq1F,UAAAr1F,KAAA+4D,SAAA,IAEAsT,GAAAzhE,UAAAuyF,YAAA,WACA,MAAArkC,GAAA94D,KAAA+zD,OAAA,KAAA/zD,KAAA+4D,UACA/4D,KAAAq1F,UAAAv8B,EAAA94D,KAAA+zD,OAAA/zD,KAAAq1F,UAAAr1F,KAAA+4D,SAAA,IAEAsT,GAAAzhE,UAAA9I,MAAA,SAAA8hD,EAAA+hD,EAAAC,GACA,GAAA,gBAAAhiD,GAOA,CACA,GAAA9hD,GAAA9B,KAAA+zD,OAAAtxD,MAAAzC,KAAAinB,KAAAnlB,MAAA8hD,EACA,OAAA9hD,IAAAA,EAAA8Y,MAAA,EAAA,MACA9Y,GAAA6jG,KAAA,IAAA3lG,KAAAinB,KAAAnlB,EAAA,GAAAnB,QACAmB,GAVA,GAAA+jG,GAAA,SAAAjzE,GAAA,MAAAgzE,GAAAhzE,EAAA3xB,cAAA2xB,GACAuD,EAAAn2B,KAAA+zD,OAAA59B,OAAAn2B,KAAAinB,IAAA28B,EAAAjjD,OACA,IAAAklG,EAAA1vE,IAAA0vE,EAAAjiD,GAEA,MADA+hD,MAAA,IAAA3lG,KAAAinB,KAAA28B,EAAAjjD,SACA,GASA0rE,GAAAzhE,UAAA6tD,QAAA,WAAA,MAAAz4D,MAAA+zD,OAAAtxD,MAAAzC,KAAAuE,MAAAvE,KAAAinB,MACAolD,GAAAzhE,UAAAk7F,eAAA,SAAAngG,EAAA+mE,GACA1sE,KAAAq1F,WAAA1vF,CACA,KAAA,MAAA+mE,KACA,QAAA1sE,KAAAq1F,WAAA1vF,GA8MA,IAAAgjF,IAAA,SAAAtoF,EAAAqgE,EAAAiN,GACA3tE,KAAAK,KAAAA,EACA4iE,GAAAjjE,KAAA0gE,GACA1gE,KAAA0L,OAAAiiE,EAAAA,EAAA3tE,MAAA,EAGA2oF,IAAA/9E,UAAA8zD,OAAA,WAAA,MAAAA,GAAA1+D,OACA+nE,GAAA4gB,GAyBA,IAgiCAhP,IAhiCA3L,MACAD,MAiSAoD,GAAA,KAwCAS,GAAA,KAsXA6E,IAAA/vD,KAAA,EAAAmW,MAAA,EAAA/mB,IAAA,EAAAwoB,OAAA,GAuwBAihD,GAAA,EACAP,GAAA,IAKAljB,IAAAkjB,IAAA,IACA/iB,GAAA+iB,GAAA,GACApH,GAAAoH,IAAA,GACAkU,KAAAlU,IAAA,EAAA,EA+GA,IAAA+mB,IAAA,SAAAnrC,EAAA57B,EAAAkmC,GACAllE,KAAAklE,GAAAA,CACA,IAAA8gC,GAAAhmG,KAAAgmG,KAAA3tC,EAAA,OAAAA,EAAA,MAAA,KAAA,KAAA,mBAAA,yBACA4tC,EAAAjmG,KAAAimG,MAAA5tC,EAAA,OAAAA,EAAA,MAAA,KAAA,KAAA,kCAAA,wBACAuC,GAAAorC,GAAAprC,EAAAqrC,GAEAviF,GAAAsiF,EAAA,SAAA,WACAA,EAAAxpE,cAAAwC,EAAAgnE,EAAA7+E,UAAA,cAEAzD,GAAAuiF,EAAA,SAAA,WACAA,EAAAlpE,aAAAiC,EAAAinE,EAAA7+E,WAAA,gBAGApnB,KAAAkmG,kBAAA,EAEApqC,IAAAC,GAAA,IAAA/7D,KAAAimG,MAAA5hG,MAAAuiF,UAAA5mF,KAAAgmG,KAAA3hG,MAAAqF,SAAA,QAGAq8F,IAAAn7F,UAAAu/C,OAAA,SAAA+Q,GACA,GAAAirC,GAAAjrC,EAAAmjB,YAAAnjB,EAAAn+B,YAAA,EACAqpE,EAAAlrC,EAAA3+B,aAAA2+B,EAAA1+B,aAAA,EACA6pE,EAAAnrC,EAAA4B,cAEA,IAAAspC,EAAA,CACApmG,KAAAgmG,KAAA3hG,MAAAS,QAAA,QACA9E,KAAAgmG,KAAA3hG,MAAAi6B,OAAA6nE,EAAAE,EAAA,KAAA,GACA,IAAAC,GAAAprC,EAAA2kB,YAAAsmB,EAAAE,EAAA,EAEArmG,MAAAgmG,KAAA3/F,WAAAhC,MAAAqH,OACAtB,KAAAC,IAAA,EAAA6wD,EAAA3+B,aAAA2+B,EAAA1+B,aAAA8pE,GAAA,SAEAtmG,MAAAgmG,KAAA3hG,MAAAS,QAAA,GACA9E,KAAAgmG,KAAA3/F,WAAAhC,MAAAqH,OAAA,GAGA,IAAAy6F,EAAA,CACAnmG,KAAAimG,MAAA5hG,MAAAS,QAAA,QACA9E,KAAAimG,MAAA5hG,MAAAw4B,MAAAupE,EAAAC,EAAA,KAAA,IACArmG,KAAAimG,MAAA5hG,MAAAqiB,KAAAw0C,EAAA6kB,QAAA,IACA,IAAAwmB,GAAArrC,EAAA4kB,UAAA5kB,EAAA6kB,SAAAqmB,EAAAC,EAAA,EACArmG,MAAAimG,MAAA5/F,WAAAhC,MAAAoF,MACAW,KAAAC,IAAA,EAAA6wD,EAAAmjB,YAAAnjB,EAAAn+B,YAAAwpE,GAAA,SAEAvmG,MAAAimG,MAAA5hG,MAAAS,QAAA,GACA9E,KAAAimG,MAAA5/F,WAAAhC,MAAAoF,MAAA,GAQA,QALAzJ,KAAAkmG,kBAAAhrC,EAAA1+B,aAAA,IACA,GAAA6pE,GAAArmG,KAAAwmG,gBACAxmG,KAAAkmG,kBAAA,IAGArpE,MAAAupE,EAAAC,EAAA,EAAA/nE,OAAA6nE,EAAAE,EAAA,IAGAN,GAAAn7F,UAAAuzE,cAAA,SAAAl3D,GACAjnB,KAAAimG,MAAA7+E,YAAAH,IAAAjnB,KAAAimG,MAAA7+E,WAAAH,GACAjnB,KAAAymG,cAAAzmG,KAAA0mG,mBAAA1mG,KAAAimG,MAAAjmG,KAAAymG,aAAA,UAGAV,GAAAn7F,UAAAmzE,aAAA,SAAA92D,GACAjnB,KAAAgmG,KAAA7+E,WAAAF,IAAAjnB,KAAAgmG,KAAA7+E,UAAAF,GACAjnB,KAAA2mG,aAAA3mG,KAAA0mG,mBAAA1mG,KAAAgmG,KAAAhmG,KAAA2mG,YAAA,SAGAZ,GAAAn7F,UAAA47F,cAAA,WACA,GAAA9lG,GAAA6nE,KAAAg6B,GAAA,OAAA,MACAviG,MAAAimG,MAAA5hG,MAAAqH,OAAA1L,KAAAgmG,KAAA3hG,MAAAoF,MAAA/I,EACAV,KAAAimG,MAAA5hG,MAAAuiG,cAAA5mG,KAAAgmG,KAAA3hG,MAAAuiG,cAAA,OACA5mG,KAAAymG,aAAA,GAAAzK,IACAh8F,KAAA2mG,YAAA,GAAA3K,KAGA+J,GAAAn7F,UAAA87F,mBAAA,SAAAG,EAAAh+E,EAAAhoB,GAEA,QAAAimG,KAOA,GAAAz6D,GAAAw6D,EAAApgF,wBACAsgF,EAAA,QAAAlmG,EAAAhB,SAAAmnG,iBAAA36D,EAAAxP,MAAA,GAAAwP,EAAAv2B,IAAAu2B,EAAA/N,QAAA,GACAz+B,SAAAmnG,kBAAA36D,EAAAxP,MAAAwP,EAAA3lB,MAAA,EAAA2lB,EAAA/N,OAAA,EACAyoE,IAAAF,EAAAA,EAAAxiG,MAAAuiG,cAAA,OACA/9E,EAAAplB,IAAA,IAAAqjG,GAZAD,EAAAxiG,MAAAuiG,cAAA,OAcA/9E,EAAAplB,IAAA,IAAAqjG,IAGAf,GAAAn7F,UAAAo1B,MAAA,WACA,GAAAlnB,GAAA9Y,KAAAimG,MAAAzlG,UACAsY,GAAArY,YAAAT,KAAAimG,OACAntF,EAAArY,YAAAT,KAAAgmG,MAGA,IAAAiB,IAAA,YAEAA,IAAAr8F,UAAAu/C,OAAA,WAAA,OAAA7rB,OAAA,EAAAzB,MAAA,IACAoqE,GAAAr8F,UAAAuzE,cAAA,aACA8oB,GAAAr8F,UAAAmzE,aAAA,aACAkpB,GAAAr8F,UAAAo1B,MAAA,YAoCA,IAAA0gD,KAAAwmB,OAAAnB,GAAAoB,KAAAF,IA6JAlkB,GAAA,EAqYAW,GAAA,SAAAxe,EAAA1nC,EAAA6iB,GACA,GAAAv7C,GAAAogE,EAAApgE,OAEA9E,MAAAw9B,SAAAA,EAEAx9B,KAAAivB,QAAA0uD,GAAA74E,EAAAogE,EAAA52B,IAAA9Q,GACAx9B,KAAAsmF,gBAAAxhF,EAAAq8C,QAAAjyB,YACAlvB,KAAAymF,cAAA3hF,EAAAq8C,QAAA3kB,aACAx8B,KAAAk0E,aAAApvE,EAAAq8C,QAAApkB,YACA/8B,KAAA6mF,gBAAAjS,GAAA1P,GACAllE,KAAAqgD,MAAAA,EACArgD,KAAAgyE,KAAA0D,GAAAxQ,GACAllE,KAAA8H,UAGA47E,IAAA94E,UAAA08D,OAAA,SAAAL,EAAApmE,GACAinE,GAAAb,EAAApmE,IACAb,KAAA8H,OAAAvB,KAAAW,YAEAw8E,GAAA94E,UAAAud,OAAA,WAGA,IAAA,GAFAglE,GAAAntF,KAEAuB,EAAA,EAAAA,EAAAvB,KAAA8H,OAAAnH,OAAAY,IACA+lE,GAAA9kE,MAAA,KAAA2qF,EAAArlF,OAAAvG,IA+NA,IAAAkmF,IAAA,SAAAzM,EAAAC,GACAj7E,KAAAg7E,OAAAA,EACAh7E,KAAAi7E,UAAAA,EAGAwM,IAAA78E,UAAA+vE,QAAA,WAAA,MAAA36E,MAAAg7E,OAAAh7E,KAAAi7E,YAEAwM,GAAA78E,UAAA8gF,OAAA,SAAA5S,GACA,GAAAqU,GAAAntF,IAEA,IAAA84E,GAAA94E,KAAA,OAAA,CACA,IAAA84E,EAAAmC,WAAAj7E,KAAAi7E,WAAAnC,EAAAkC,OAAAr6E,QAAAX,KAAAg7E,OAAAr6E,OAAA,OAAA,CACA,KAAA,GAAAY,GAAA,EAAAA,EAAAvB,KAAAg7E,OAAAr6E,OAAAY,IAAA,CACA,GAAA6lG,GAAAja,EAAAnS,OAAAz5E,GAAA8lG,EAAAvuB,EAAAkC,OAAAz5E,EACA,KAAAg+D,EAAA6nC,EAAAnxC,OAAAoxC,EAAApxC,UAAAsJ,EAAA6nC,EAAA9mG,KAAA+mG,EAAA/mG,MAAA,OAAA,EAEA,OAAA,GAGAmnF,GAAA78E,UAAA0hF,SAAA,WAIA,IAAA,GAHAa,GAAAntF,KAEA05D,KACAn4D,EAAA,EAAAA,EAAAvB,KAAAg7E,OAAAr6E,OAAAY,IACAm4D,EAAAn4D,GAAA,GAAAimF,IAAAhoB,EAAA2tB,EAAAnS,OAAAz5E,GAAA00D,QAAAuJ,EAAA2tB,EAAAnS,OAAAz5E,GAAAjB,MACA,OAAA,IAAAmnF,IAAA/tB,EAAA15D,KAAAi7E,YAGAwM,GAAA78E,UAAA0gF,kBAAA,WAGA,IAAA,GAFA6B,GAAAntF,KAEAuB,EAAA,EAAAA,EAAAvB,KAAAg7E,OAAAr6E,OAAAY,IACA,IAAA4rF,EAAAnS,OAAAz5E,GAAA6K,QAAA,OAAA,CACA,QAAA,GAGAq7E,GAAA78E,UAAAlE,SAAA,SAAAugB,EAAAziB,GACA,GAAA2oF,GAAAntF,IAEAwE,KAAAA,EAAAyiB,EACA,KAAA,GAAA1lB,GAAA,EAAAA,EAAAvB,KAAAg7E,OAAAr6E,OAAAY,IAAA,CACA,GAAA0mD,GAAAklC,EAAAnS,OAAAz5E,EACA,IAAA+9D,EAAA96D,EAAAyjD,EAAA7zB,SAAA,GAAAkrC,EAAAr4C,EAAAghC,EAAAtuB,OAAA,EACA,MAAAp4B,GAEA,OAAA,EAGA,IAAAimF,IAAA,SAAAvxB,EAAA31D,GACAN,KAAAi2D,OAAAA,EAAAj2D,KAAAM,KAAAA,EAGAknF,IAAA58E,UAAAwpB,KAAA,WAAA,MAAAsrC,GAAA1/D,KAAAi2D,OAAAj2D,KAAAM,OACAknF,GAAA58E,UAAA+uB,GAAA,WAAA,MAAA8lC,GAAAz/D,KAAAi2D,OAAAj2D,KAAAM,OACAknF,GAAA58E,UAAAwB,MAAA,WAAA,MAAApM,MAAAM,KAAA0yD,MAAAhzD,KAAAi2D,OAAAjD,MAAAhzD,KAAAM,KAAA88C,IAAAp9C,KAAAi2D,OAAA7Y,GAu7BA,IAAAkqD,IAAA,SAAAjsC,GACA,GAAA8xB,GAAAntF,IAEAA,MAAAq7D,MAAAA,EACAr7D,KAAA8Y,OAAA,IAEA,KAAA,GADApN,GAAA,EACAnK,EAAA,EAAAA,EAAA85D,EAAA16D,SAAAY,EACA85D,EAAA95D,GAAAuX,OAAAq0E,EACAzhF,GAAA2vD,EAAA95D,GAAAmK,MAEA1L,MAAA0L,OAAAA,EAGA47F,IAAA18F,UAAAwzD,UAAA,WAAA,MAAAp+D,MAAAq7D,MAAA16D,QAGA2mG,GAAA18F,UAAA28F,YAAA,SAAAp8B,EAAAxlE,GAGA,IAAA,GAFAwnF,GAAAntF,KAEAuB,EAAA4pE,EAAAhpE,EAAAgpE,EAAAxlE,EAAApE,EAAAY,IAAAZ,EAAA,CACA,GAAAyxD,GAAAm6B,EAAA9xB,MAAA95D,EACA4rF,GAAAzhF,QAAAsnD,EAAAtnD,OACAmiE,GAAA7a,GACA2e,GAAA3e,EAAA,UAEAhzD,KAAAq7D,MAAA9pD,OAAA45D,EAAAxlE,IAIA2hG,GAAA18F,UAAAqwB,SAAA,SAAAogC,GACAA,EAAA90D,KAAA/D,MAAA64D,EAAAr7D,KAAAq7D,QAKAisC,GAAA18F,UAAA48F,YAAA,SAAAr8B,EAAA9P,EAAA3vD,GACA,GAAAyhF,GAAAntF,IAEAA,MAAA0L,QAAAA,EACA1L,KAAAq7D,MAAAr7D,KAAAq7D,MAAA54D,MAAA,EAAA0oE,GAAAp/D,OAAAsvD,GAAAtvD,OAAA/L,KAAAq7D,MAAA54D,MAAA0oE,GACA,KAAA,GAAA5pE,GAAA,EAAAA,EAAA85D,EAAA16D,SAAAY,EAAA85D,EAAA95D,GAAAuX,OAAAq0E,GAIAma,GAAA18F,UAAA68F,MAAA,SAAAt8B,EAAAxlE,EAAAurE,GAGA,IAAA,GAFAic,GAAAntF,KAEAmC,EAAAgpE,EAAAxlE,EAAAwlE,EAAAhpE,IAAAgpE,EACA,GAAA+F,EAAAic,EAAA9xB,MAAA8P,IAAA,OAAA,EAGA,IAAAu8B,IAAA,SAAAjtF,GACA,GAAA0yE,GAAAntF,IAEAA,MAAAya,SAAAA,CAEA,KAAA,GADAy+B,GAAA,EAAAxtC,EAAA,EACAnK,EAAA,EAAAA,EAAAkZ,EAAA9Z,SAAAY,EAAA,CACA,GAAA67C,GAAA3iC,EAAAlZ,EACA23C,IAAAkE,EAAAghB,YAAA1yD,GAAA0xC,EAAA1xC,OACA0xC,EAAAtkC,OAAAq0E,EAEAntF,KAAAk5C,KAAAA,EACAl5C,KAAA0L,OAAAA,EACA1L,KAAA8Y,OAAA,KAGA4uF,IAAA98F,UAAAwzD,UAAA,WAAA,MAAAp+D,MAAAk5C,MAEAwuD,GAAA98F,UAAA28F,YAAA,SAAAp8B,EAAAxlE,GACA,GAAAwnF,GAAAntF,IAEAA,MAAAk5C,MAAAvzC,CACA,KAAA,GAAApE,GAAA,EAAAA,EAAAvB,KAAAya,SAAA9Z,SAAAY,EAAA,CACA,GAAAi1B,GAAA22D,EAAA1yE,SAAAlZ,GAAA48D,EAAA3nC,EAAA4nC,WACA,IAAA+M,EAAAhN,EAAA,CACA,GAAA4oB,GAAA38E,KAAAkvD,IAAA3zD,EAAAw4D,EAAAgN,GAAAw8B,EAAAnxE,EAAA9qB,MAIA,IAHA8qB,EAAA+wE,YAAAp8B,EAAA4b,GACAoG,EAAAzhF,QAAAi8F,EAAAnxE,EAAA9qB,OACAyyD,GAAA4oB,IAAAoG,EAAA1yE,SAAAlJ,OAAAhQ,IAAA,GAAAi1B,EAAA1d,OAAA,MACA,IAAAnT,GAAAohF,GAAA,KACA5b,GAAA,MACAA,IAAAhN,EAIA,GAAAn+D,KAAAk5C,KAAAvzC,EAAA,KACA3F,KAAAya,SAAA9Z,OAAA,KAAAX,KAAAya,SAAA,YAAA6sF,MAAA,CACA,GAAAjsC,KACAr7D,MAAAi7B,SAAAogC,GACAr7D,KAAAya,UAAA,GAAA6sF,IAAAjsC,IACAr7D,KAAAya,SAAA,GAAA3B,OAAA9Y,OAIA0nG,GAAA98F,UAAAqwB,SAAA,SAAAogC,GAGA,IAAA,GAFA8xB,GAAAntF,KAEAuB,EAAA,EAAAA,EAAAvB,KAAAya,SAAA9Z,SAAAY,EAAA4rF,EAAA1yE,SAAAlZ,GAAA05B,SAAAogC,IAGAqsC,GAAA98F,UAAA48F,YAAA,SAAAr8B,EAAA9P,EAAA3vD,GACA,GAAAyhF,GAAAntF,IAEAA,MAAAk5C,MAAAmiB,EAAA16D,OACAX,KAAA0L,QAAAA,CACA,KAAA,GAAAnK,GAAA,EAAAA,EAAAvB,KAAAya,SAAA9Z,SAAAY,EAAA,CACA,GAAAi1B,GAAA22D,EAAA1yE,SAAAlZ,GAAA48D,EAAA3nC,EAAA4nC,WACA,IAAA+M,GAAAhN,EAAA,CAEA,GADA3nC,EAAAgxE,YAAAr8B,EAAA9P,EAAA3vD,GACA8qB,EAAA6kC,OAAA7kC,EAAA6kC,MAAA16D,OAAA,GAAA,CAIA,IAAA,GADAw3C,GAAA3hB,EAAA6kC,MAAA16D,OAAA,GAAA,GACAsmB,EAAAkxB,EAAAlxB,EAAAuP,EAAA6kC,MAAA16D,QAAA,CACA,GAAAinG,GAAA,GAAAN,IAAA9wE,EAAA6kC,MAAA54D,MAAAwkB,EAAAA,GAAA,IACAuP,GAAA9qB,QAAAk8F,EAAAl8F,OACAyhF,EAAA1yE,SAAAlJ,SAAAhQ,EAAA,EAAAqmG,GACAA,EAAA9uF,OAAAq0E,EAEA32D,EAAA6kC,MAAA7kC,EAAA6kC,MAAA54D,MAAA,EAAA01C,GACAg1C,EAAA0a,aAEA,MAEA18B,GAAAhN,IAKAupC,GAAA98F,UAAAi9F,WAAA,WACA,KAAA7nG,KAAAya,SAAA9Z,QAAA,IAAA,CACA,GAAAmnG,GAAA9nG,IACA,GAAA,CACA,GAAA+nG,GAAAD,EAAArtF,SAAAlJ,OAAAu2F,EAAArtF,SAAA9Z,OAAA,EAAA,GACAqnG,EAAA,GAAAN,IAAAK,EACA,IAAAD,EAAAhvF,OAKA,CACAgvF,EAAA5uD,MAAA8uD,EAAA9uD,KACA4uD,EAAAp8F,QAAAs8F,EAAAt8F,MACA,IAAAu8F,GAAAz3F,EAAAs3F,EAAAhvF,OAAA2B,SAAAqtF,EACAA,GAAAhvF,OAAA2B,SAAAlJ,OAAA02F,EAAA,EAAA,EAAAD,OATA,CACA,GAAAl7B,GAAA,GAAA46B,IAAAI,EAAArtF,SACAqyD,GAAAh0D,OAAAgvF,EACAA,EAAArtF,UAAAqyD,EAAAk7B,GACAF,EAAAh7B,EAOAk7B,EAAAlvF,OAAAgvF,EAAAhvF,aACAgvF,EAAArtF,SAAA9Z,OAAA,GACAmnG,GAAAhvF,OAAA+uF,eAGAH,GAAA98F,UAAA68F,MAAA,SAAAt8B,EAAAxlE,EAAAurE,GAGA,IAAA,GAFAic,GAAAntF,KAEAuB,EAAA,EAAAA,EAAAvB,KAAAya,SAAA9Z,SAAAY,EAAA,CACA,GAAAi1B,GAAA22D,EAAA1yE,SAAAlZ,GAAA48D,EAAA3nC,EAAA4nC,WACA,IAAA+M,EAAAhN,EAAA,CACA,GAAA+pC,GAAA99F,KAAAkvD,IAAA3zD,EAAAw4D,EAAAgN,EACA,IAAA30C,EAAAixE,MAAAt8B,EAAA+8B,EAAAh3B,GAAA,OAAA,CACA,IAAA,IAAAvrE,GAAAuiG,GAAA,KACA/8B,GAAA,MACAA,IAAAhN,GAMA,IAAAmyB,IAAA,SAAAhiD,EAAA0K,EAAAjyB,GACA,GAAAomE,GAAAntF,IAEA,IAAA+mB,EAAA,IAAA,GAAAgxC,KAAAhxC,GAAAA,EAAArW,eAAAqnD,KACAo1B,EAAAp1B,GAAAhxC,EAAAgxC,GACA/3D,MAAAsuC,IAAAA,EACAtuC,KAAAg5C,KAAAA,EAGAs3C,IAAA1lF,UAAAo1B,MAAA,WACA,GAAAmtD,GAAAntF,KAEAklE,EAAAllE,KAAAsuC,IAAA42B,GAAAj1B,EAAAjwC,KAAAgzD,KAAAnmB,QAAAmmB,EAAAhzD,KAAAgzD,KAAA2L,EAAAD,EAAA1L,EACA,IAAA,MAAA2L,GAAA1uB,EAAA,CACA,IAAA,GAAA1uC,GAAA,EAAAA,EAAA0uC,EAAAtvC,SAAAY,EAAA0uC,EAAA1uC,IAAA4rF,GAAAl9C,EAAA1+B,OAAAhQ,IAAA,EACA0uC,GAAAtvC,SAAAqyD,EAAAnmB,QAAA,KACA,IAAAnhC,GAAA0oE,GAAAp0E,KACAw+D,GAAAxL,EAAA5oD,KAAAC,IAAA,EAAA2oD,EAAAtnD,OAAAA,IACAw5D,IACAsf,GAAAtf,EAAA,WACAkrB,GAAAlrB,EAAAlS,GAAAtnD,GACA05E,GAAAlgB,EAAAvG,EAAA,YAEAgT,GAAAzM,EAAA,oBAAAA,EAAAllE,KAAA2+D,MAIA2xB,GAAA1lF,UAAAs2E,QAAA,WACA,GAAAiM,GAAAntF,KAEAmoG,EAAAnoG,KAAA0L,OAAAw5D,EAAAllE,KAAAsuC,IAAA42B,GAAAlS,EAAAhzD,KAAAgzD,IACAhzD,MAAA0L,OAAA,IACA,IAAA+yD,GAAA2V,GAAAp0E,MAAAmoG,CACA1pC,KACAD,EAAAxL,EAAAA,EAAAtnD,OAAA+yD,GACAyG,GACAsf,GAAAtf,EAAA,WACAA,EAAA0C,MAAA+N,aAAA,EACAya,GAAAlrB,EAAAlS,EAAAyL,GACAkT,GAAAzM,EAAA,oBAAAA,EAAAioB,EAAAzuB,EAAA1L,QAIA+U,GAAAuoB,GA2CA,IAAAW,IAAA,EAEAN,GAAA,SAAAriD,EAAAztC,GACAb,KAAAq7D,SACAr7D,KAAAa,KAAAA,EACAb,KAAAsuC,IAAAA,EACAtuC,KAAAuS,KAAA0+E,GAIAN,IAAA/lF,UAAAo1B,MAAA,WACA,GAAAmtD,GAAAntF,IAEA,KAAAA,KAAA6rF,kBAAA,CACA,GAAA3mB,GAAAllE,KAAAsuC,IAAA42B,GAAAkjC,EAAAljC,IAAAA,EAAA0C,KAEA,IADAwgC,GAAA5lB,GAAAtd,GACA4C,GAAA9nE,KAAA,SAAA,CACA,GAAA4hE,GAAA5hE,KAAAgU,MACA4tD,IAAA+P,GAAA3xE,KAAA,QAAA4hE,EAAAxtC,KAAAwtC,EAAAjoC,IAGA,IAAA,GADA2/B,GAAA,KAAAjvD,EAAA,KACA9I,EAAA,EAAAA,EAAAvB,KAAAq7D,MAAA16D,SAAAY,EAAA,CACA,GAAAyxD,GAAAm6B,EAAA9xB,MAAA95D,GACAqpC,EAAA01B,EAAAtN,EAAA0N,YAAAysB,EACAjoB,KAAAioB,EAAAtpB,UAAAuhB,GAAAlgB,EAAAxG,EAAA1L,GAAA,QACAkS,IACA,MAAAt6B,EAAAjR,KAAAtvB,EAAAq0D,EAAA1L,IACA,MAAApoB,EAAAxW,OAAAklC,EAAAoF,EAAA1L,KAEAA,EAAA0N,YAAAF,EAAAxN,EAAA0N,YAAA91B,GACA,MAAAA,EAAAxW,MAAA+4D,EAAAtpB,YAAAc,GAAAwoB,EAAA7+C,IAAA0kB,IAAAkS,GACA1G,EAAAxL,EAAA0mB,GAAAxU,EAAApgE,UAEA,GAAAogE,GAAAllE,KAAA6jE,YAAAqB,EAAAn+C,QAAAy/C,aAAA,IAAA,GAAA1H,GAAA,EAAAA,EAAA9+D,KAAAq7D,MAAA16D,SAAAm+D,EAAA,CACA,GAAAw2B,GAAApxB,GAAAipB,EAAA9xB,MAAAyD,IAAA/kB,EAAAirB,GAAAswB,EACAv7C,GAAAmrB,EAAApgE,QAAA44D,gBACAwH,EAAApgE,QAAA24D,QAAA63B,EACApwB,EAAApgE,QAAA44D,cAAA3jB,EACAmrB,EAAApgE,QAAA64D,gBAAA,GAIA,MAAArE,GAAA4L,GAAAllE,KAAA6jE,WAAA+gB,GAAA1f,EAAA5L,EAAAjvD,EAAA,GACArK,KAAAq7D,MAAA16D,OAAA,EACAX,KAAA6rF,mBAAA,EACA7rF,KAAAiuF,QAAAjuF,KAAAsuC,IAAA+/C,WACAruF,KAAAsuC,IAAA+/C,UAAA,EACAnpB,GAAAuoB,GAAAvoB,EAAA52B,MAEA42B,GAAAyM,GAAAzM,EAAA,gBAAAA,EAAAllE,KAAAs5D,EAAAjvD,GACA+9F,GAAAplB,GAAA9d,GACAllE,KAAA8Y,QAAA9Y,KAAA8Y,OAAAknB,UAQA2wD,GAAA/lF,UAAAoJ,KAAA,SAAAisF,EAAAl7B,GACA,GAAAooB,GAAAntF,IAEA,OAAAigG,GAAA,YAAAjgG,KAAAa,OAAAo/F,EAAA,EAEA,KAAA,GADA7rE,GAAAuF,EACAp4B,EAAA,EAAAA,EAAAvB,KAAAq7D,MAAA16D,SAAAY,EAAA,CACA,GAAAyxD,GAAAm6B,EAAA9xB,MAAA95D,GACAqpC,EAAA01B,EAAAtN,EAAA0N,YAAAysB,EACA,IAAA,MAAAviD,EAAAxW,OACAA,EAAAgrC,EAAA2F,EAAA/R,EAAA0L,EAAA1L,GAAApoB,EAAAxW,MACA6rE,IAAA,GAAA,MAAA7rE,EAEA,IAAA,MAAAwW,EAAAjR,KACAA,EAAAylC,EAAA2F,EAAA/R,EAAA0L,EAAA1L,GAAApoB,EAAAjR,IACA,GAAAsmE,GAAA,MAAAtmE,GAGA,MAAAvF,KAAAA,KAAAA,EAAAuF,GAAAA,IAKAg3D,GAAA/lF,UAAAs2E,QAAA,WACA,GAAAiM,GAAAntF,KAEAinB,EAAAjnB,KAAAgU,MAAA,GAAA,GAAAg8D,EAAAhwE,KAAAklE,EAAAllE,KAAAsuC,IAAA42B,EACAj+C,IAAAi+C,GACAsf,GAAAtf,EAAA,WACA,GAAAlS,GAAA/rC,EAAA+rC,KAAAuR,EAAA7F,EAAAz3C,EAAA+rC,MACA5wC,EAAAozD,GAAAtQ,EAAAX,EAMA,IALAniD,IACAm1D,GAAAn1D,GACA8iD,EAAA0C,MAAAib,iBAAA3d,EAAA0C,MAAA+N,aAAA,GAEAzQ,EAAA0C,MAAAkb,eAAA,GACAne,GAAAqL,EAAA1hC,IAAA0kB,IAAA,MAAAgd,EAAAtkE,OAAA,CACA,GAAAi8F,GAAA33B,EAAAtkE,MACAskE,GAAAtkE,OAAA,IACA,IAAA28F,GAAAj0B,GAAApE,GAAA23B,CACAU,IACA7pC,EAAAxL,EAAAA,EAAAtnD,OAAA28F,GAEA12B,GAAAzM,EAAA,gBAAAA,EAAAioB,MAIAwD,GAAA/lF,UAAA+1D,WAAA,SAAA3N,GACA,IAAAhzD,KAAAq7D,MAAA16D,QAAAX,KAAAsuC,IAAA42B,GAAA,CACA,GAAAgM,GAAAlxE,KAAAsuC,IAAA42B,GAAA0C,KACAsJ,GAAAmT,oBAAA7zE,EAAA0gE,EAAAmT,mBAAArkF,QAAA,IACAkxE,EAAAqT,uBAAArT,EAAAqT,0BAAAh+E,KAAAvG,MAEAA,KAAAq7D,MAAA90D,KAAAysD,IAGA29B,GAAA/lF,UAAAo4D,WAAA,SAAAhQ,GAEA,GADAhzD,KAAAq7D,MAAA9pD,OAAAf,EAAAxQ,KAAAq7D,MAAArI,GAAA,IACAhzD,KAAAq7D,MAAA16D,QAAAX,KAAAsuC,IAAA42B,GAAA,CACA,GAAAgM,GAAAlxE,KAAAsuC,IAAA42B,GAAA0C,OAAAsJ,EAAAmT,qBAAAnT,EAAAmT,wBAAA99E,KAAAvG,QAGA+nE,GAAA4oB,GA6EA,IAAAQ,IAAA,SAAA5uB,EAAAoY,GACA,GAAAwS,GAAAntF,IAEAA,MAAAuiE,QAAAA,EACAviE,KAAA26E,QAAAA,CACA,KAAA,GAAAp5E,GAAA,EAAAA,EAAAghE,EAAA5hE,SAAAY,EACAghE,EAAAhhE,GAAAuX,OAAAq0E,EAGAgE,IAAAvmF,UAAAo1B,MAAA,WACA,GAAAmtD,GAAAntF,IAEA,KAAAA,KAAA6rF,kBAAA,CACA7rF,KAAA6rF,mBAAA,CACA,KAAA,GAAAtqF,GAAA,EAAAA,EAAAvB,KAAAuiE,QAAA5hE,SAAAY,EACA4rF,EAAA5qB,QAAAhhE,GAAAy+B,OACA2xC,IAAA3xE,KAAA,WAGAmxF,GAAAvmF,UAAAoJ,KAAA,SAAAisF,EAAAl7B,GACA,MAAA/kE,MAAA26E,QAAA3mE,KAAAisF,EAAAl7B,IAEAgD,GAAAopB,GAiDA,IAAAmX,IAAA,EACA3M,GAAA,SAAAt7F,EAAAoyD,EAAAm2B,EAAA6R,EAAAhgE,GACA,KAAAz6B,eAAA27F,KAAA,MAAA,IAAAA,IAAAt7F,EAAAoyD,EAAAm2B,EAAA6R,EAAAhgE,EACA,OAAAmuD,IAAAA,EAAA,GAEA8e,GAAArmG,KAAArB,MAAA,GAAAsnG,KAAA,GAAA3e,IAAA,GAAA,UACA3oF,KAAAoR,MAAAw3E,EACA5oF,KAAAmnB,UAAAnnB,KAAAonB,WAAA,EACApnB,KAAAquF,UAAA,EACAruF,KAAAuoG,gBAAA,EACAvoG,KAAA+rE,SAAA6c,CACA,IAAArkF,GAAA66D,EAAAwpB,EAAA,EACA5oF,MAAA+6E,IAAA2M,GAAAnjF,GACAvE,KAAA8tC,QAAA,GAAAg8C,IAAA,MACA9pF,KAAAuS,KAAA+1F,GACAtoG,KAAAmoF,WAAA11B,EACAzyD,KAAAy6F,QAAAA,EACAz6F,KAAAy6B,UAAA,OAAAA,EAAA,MAAA,MACAz6B,KAAAgI,QAAA,EAEA,gBAAA3H,KAAAA,EAAAL,KAAA4vF,WAAAvvF,IACAkoF,GAAAvoF,MAAAo0B,KAAA7vB,EAAAo1B,GAAAp1B,EAAAlE,KAAAA,IACAusF,GAAA5sF,KAAA0nF,GAAAnjF,GAAAmpF,IAGAiO,IAAA/wF,UAAAmvD,EAAA2tC,GAAA98F,WACAoG,YAAA2qF,GAKAr9B,KAAA,SAAAlqC,EAAAuF,EAAAu3C,GACAA,EAAAlxE,KAAAynG,MAAArzE,EAAAp0B,KAAAoR,MAAAuoB,EAAAvF,EAAA88C,GACAlxE,KAAAynG,MAAAznG,KAAAoR,MAAApR,KAAAoR,MAAApR,KAAAk5C,KAAA9kB,IAIA40D,OAAA,SAAA7d,EAAA9P,GAEA,IAAA,GADA3vD,GAAA,EACAnK,EAAA,EAAAA,EAAA85D,EAAA16D,SAAAY,EAAAmK,GAAA2vD,EAAA95D,GAAAmK,MACA1L,MAAAwnG,YAAAr8B,EAAAnrE,KAAAoR,MAAAiqD,EAAA3vD,IAEAkB,OAAA,SAAAu+D,EAAAxlE,GAAA3F,KAAAunG,YAAAp8B,EAAAnrE,KAAAoR,MAAAzL,IAKA47F,SAAA,SAAA9G,GACA,GAAAp/B,GAAAkD,EAAAv+D,KAAAA,KAAAoR,MAAApR,KAAAoR,MAAApR,KAAAk5C,KACA,OAAAuhD,MAAA,EAAAp/B,EACAA,EAAAzsD,KAAA6rF,GAAAz6F,KAAAuyF,kBAEAiI,SAAA7V,GAAA,SAAA96C,GACA,GAAA/zB,GAAAspD,EAAAp/D,KAAAoR,MAAA,GAAAC,EAAArR,KAAAoR,MAAApR,KAAAk5C,KAAA,CACAs1C,IAAAxuF,MAAAo0B,KAAAte,EAAA6jB,GAAAylC,EAAA/tD,EAAA6sD,EAAAl+D,KAAAqR,GAAAhR,KAAAM,QACAN,KAAAL,KAAA4vF,WAAA/lD,GAAAyG,OAAA,WAAAkxB,MAAA,IAAA,GACAxhE,KAAAklE,IAAAllE,KAAAklE,GAAAzzC,SAAA,EAAA,GACAm7D,GAAA5sF,KAAA0nF,GAAA5xE,GAAA43E,MAEAiC,aAAA,SAAA9lD,EAAAzV,EAAAuF,EAAA2W,GACAlc,EAAAwrC,EAAA5/D,KAAAo0B,GACAuF,EAAAA,EAAAimC,EAAA5/D,KAAA25B,GAAAvF,EACAu7D,GAAA3vF,KAAA6pC,EAAAzV,EAAAuF,EAAA2W,IAEA0uD,SAAA,SAAA5qE,EAAAuF,EAAA8gE,GACA,GAAAp/B,GAAAgD,EAAAr+D,KAAA4/D,EAAA5/D,KAAAo0B,GAAAwrC,EAAA5/D,KAAA25B,GACA,OAAA8gE,MAAA,EAAAp/B,EACAA,EAAAzsD,KAAA6rF,GAAAz6F,KAAAuyF,kBAGAr0B,QAAA,SAAAlL,GAAA,GAAAxtD,GAAAxF,KAAAwoG,cAAAx1C,EAAA,OAAAxtD,IAAAA,EAAAnF,MAEAmoG,cAAA,SAAAx1C,GAAA,GAAAgM,EAAAh/D,KAAAgzD,GAAA,MAAAkL,GAAAl+D,KAAAgzD,IACAy1C,cAAA,SAAAz1C,GAAA,MAAA0L,GAAA1L,IAEA01C,yBAAA,SAAA11C,GAEA,MADA,gBAAAA,KAAAA,EAAAkL,EAAAl+D,KAAAgzD,IACAkR,GAAAlR,IAGA21C,UAAA,WAAA,MAAA3oG,MAAAk5C,MACA0vC,UAAA,WAAA,MAAA5oF,MAAAoR,OACAszD,SAAA,WAAA,MAAA1kE,MAAAoR,MAAApR,KAAAk5C,KAAA,GAEA0mB,QAAA,SAAA34C,GAAA,MAAA24C,GAAA5/D,KAAAinB,IAEAm7D,UAAA,SAAA79E,GACA,GAAA0iB,GAAAi0D,EAAAl7E,KAAA+6E,IAAAJ,SAKA,OAJA1zD,GAAA,MAAA1iB,GAAA,QAAAA,EAAA22E,EAAA56E,KACA,UAAAiE,EAAA22E,EAAAjlB,OACA,OAAA1xD,GAAA,MAAAA,GAAAA,KAAA,EAAA22E,EAAAvhD,KACAuhD,EAAA9mD,QAGAw+D,eAAA,WAAA,MAAA5yF,MAAA+6E,IAAAC,QACAsQ,kBAAA,WAAA,MAAAtrF,MAAA+6E,IAAAuQ,qBAEAj/B,UAAAs4B,GAAA,SAAA3xB,EAAA5V,EAAAr2B,GACAkmE,GAAAjtF,KAAA4/D,EAAA5/D,KAAA,gBAAAgzD,GAAAoM,EAAApM,EAAA5V,GAAA,GAAA4V,GAAA,KAAAjsC,KAEA6lE,aAAAjI,GAAA,SAAA1uB,EAAA31D,EAAAymB,GACAkmE,GAAAjtF,KAAA4/D,EAAA5/D,KAAAi2D,GAAA2J,EAAA5/D,KAAAM,GAAA21D,GAAAlvC,KAEA4lE,gBAAAhI,GAAA,SAAArkF,EAAAw4E,EAAA/xD,GACA4lE,GAAA3sF,KAAA4/D,EAAA5/D,KAAAM,GAAAw4E,GAAAlZ,EAAA5/D,KAAA84E,GAAA/xD,KAEA8lE,iBAAAlI,GAAA,SAAAmI,EAAA/lE,GACA8lE,GAAA7sF,KAAA+/D,EAAA//D,KAAA8sF,GAAA/lE,KAEA6hF,mBAAAjkB,GAAA,SAAAhhF,EAAAojB,GACA,GAAA+lE,GAAAlkF,EAAA5I,KAAA+6E,IAAAC,OAAAr3E,EACAkpF,IAAA7sF,KAAA+/D,EAAA//D,KAAA8sF,GAAA/lE,KAEA8hF,cAAAlkB,GAAA,SAAA3J,EAAAL,EAAA5zD,GACA,GAAAomE,GAAAntF,IAEA,IAAAg7E,EAAAr6E,OAAA,CAEA,IAAA,GADA+4D,MACAn4D,EAAA,EAAAA,EAAAy5E,EAAAr6E,OAAAY,IACAm4D,EAAAn4D,GAAA,GAAAimF,IAAA5nB,EAAAutB,EAAAnS,EAAAz5E,GAAA00D,QACA2J,EAAAutB,EAAAnS,EAAAz5E,GAAAjB,MACA,OAAAq6E,IAAAA,EAAAvwE,KAAAkvD,IAAA0hB,EAAAr6E,OAAA,EAAAX,KAAA+6E,IAAAE,YACA2R,GAAA5sF,KAAAqnF,GAAA3tB,EAAAihB,GAAA5zD,MAEA+hF,aAAAnkB,GAAA,SAAA1uB,EAAA31D,EAAAymB,GACA,GAAAi0D,GAAAh7E,KAAA+6E,IAAAC,OAAAv4E,MAAA,EACAu4E,GAAAz0E,KAAA,GAAAihF,IAAA5nB,EAAA5/D,KAAAi2D,GAAA2J,EAAA5/D,KAAAM,GAAA21D,KACA22B,GAAA5sF,KAAAqnF,GAAArM,EAAAA,EAAAr6E,OAAA,GAAAomB,KAGAgsE,aAAA,SAAA0H,GAIA,IAAA,GADAp/B,GAFA8xB,EAAAntF,KAEAg7E,EAAAh7E,KAAA+6E,IAAAC,OACAz5E,EAAA,EAAAA,EAAAy5E,EAAAr6E,OAAAY,IAAA,CACA,GAAAw5E,GAAA1c,EAAA8uB,EAAAnS,EAAAz5E,GAAA6yB,OAAA4mD,EAAAz5E,GAAAo4B,KACA0hC,GAAAA,EAAAA,EAAAtvD,OAAAgvE,GAAAA,EAEA,MAAA0f,MAAA,EAAAp/B,EACAA,EAAAzsD,KAAA6rF,GAAAz6F,KAAAuyF,kBAEAwW,cAAA,SAAAtO,GAIA,IAAA,GAHAtN,GAAAntF,KAEA0iE,KAAAsY,EAAAh7E,KAAA+6E,IAAAC,OACAz5E,EAAA,EAAAA,EAAAy5E,EAAAr6E,OAAAY,IAAA,CACA,GAAAw5E,GAAA1c,EAAA8uB,EAAAnS,EAAAz5E,GAAA6yB,OAAA4mD,EAAAz5E,GAAAo4B,KACA8gE,MAAA,IAAA1f,EAAAA,EAAAnsE,KAAA6rF,GAAAtN,EAAAoF,kBACA7vB,EAAAnhE,GAAAw5E,EAEA,MAAArY,IAEAmwB,iBAAA,SAAAhpD,EAAA5O,EAAAqV,GAEA,IAAA,GADA04D,MACAznG,EAAA,EAAAA,EAAAvB,KAAA+6E,IAAAC,OAAAr6E,OAAAY,IACAynG,EAAAznG,GAAAsoC,CACA7pC,MAAAipG,kBAAAD,EAAA/tE,EAAAqV,GAAA,WAEA24D,kBAAAtkB,GAAA,SAAA96C,EAAA5O,EAAAqV,GAIA,IAAA,GAHA68C,GAAAntF,KAEAiyE,KAAA8I,EAAA/6E,KAAA+6E,IACAx5E,EAAA,EAAAA,EAAAw5E,EAAAC,OAAAr6E,OAAAY,IAAA,CACA,GAAA25E,GAAAH,EAAAC,OAAAz5E,EACA0wE,GAAA1wE,IAAA6yB,KAAA8mD,EAAA9mD,OAAAuF,GAAAuhD,EAAAvhD,KAAAt5B,KAAA8sF,EAAAyC,WAAA/lD,EAAAtoC,IAAA+uC,OAAAA,GAGA,IAAA,GADAy8C,GAAA9xD,GAAA,OAAAA,GAAA8sD,GAAA/nF,KAAAiyE,EAAAh3C,GACA6jC,EAAAmT,EAAAtxE,OAAA,EAAAm+D,GAAA,EAAAA,IACA0vB,GAAArB,EAAAlb,EAAAnT,GACAiuB,GAAAK,GAAAptF,KAAA+sF,GACA/sF,KAAAklE,IAAAid,GAAAniF,KAAAklE,MAEAgkC,KAAAvkB,GAAA,WAAAoK,GAAA/uF,KAAA,UACAmpG,KAAAxkB,GAAA,WAAAoK,GAAA/uF,KAAA,UACAopG,cAAAzkB,GAAA,WAAAoK,GAAA/uF,KAAA,QAAA,KACAqpG,cAAA1kB,GAAA,WAAAoK,GAAA/uF,KAAA,QAAA,KAEAspG,aAAA,SAAAp/E,GAAAlqB,KAAAgI,OAAAkiB,GACAq/E,aAAA,WAAA,MAAAvpG,MAAAgI,QAEAwhG,YAAA,WAEA,IAAA,GADAze,GAAA/qF,KAAA8tC,QAAAzrC,EAAA,EAAA2nF,EAAA,EACAzoF,EAAA,EAAAA,EAAAwpF,EAAA1oF,KAAA1B,OAAAY,IAAAwpF,EAAA1oF,KAAAd,GAAAy5E,UAAA34E,CACA,KAAA,GAAAy8D,GAAA,EAAAA,EAAAisB,EAAAf,OAAArpF,OAAAm+D,IAAAisB,EAAAf,OAAAlrB,GAAAkc,UAAAgP,CACA,QAAAkf,KAAA7mG,EAAA8mG,KAAAnf,IAEAgH,aAAA,WAAAhxF,KAAA8tC,QAAA,GAAAg8C,IAAA9pF,KAAA8tC,QAAA28C,gBAEAgf,UAAA,WACAzpG,KAAAuoG,gBAAAvoG,KAAA0pG,kBAAA,IAEAA,iBAAA,SAAAC,GAGA,MAFAA,KACA3pG,KAAA8tC,QAAAs8C,OAAApqF,KAAA8tC,QAAAu8C,UAAArqF,KAAA8tC,QAAAw8C,WAAA,MACAtqF,KAAA8tC,QAAA08C,YAEAof,QAAA,SAAAC,GACA,MAAA7pG,MAAA8tC,QAAA08C,aAAAqf,GAAA7pG,KAAAuoG,kBAGAuB,WAAA,WACA,OAAAznG,KAAA8pF,GAAAnsF,KAAA8tC,QAAAzrC,MACA2nF,OAAAmC,GAAAnsF,KAAA8tC,QAAAk8C,UAEA+f,WAAA,SAAAC,GACA,GAAAjf,GAAA/qF,KAAA8tC,QAAA,GAAAg8C,IAAA9pF,KAAA8tC,QAAA28C,cACAM,GAAA1oF,KAAA8pF,GAAA6d,EAAA3nG,KAAAI,MAAA,GAAA,MAAA,GACAsoF,EAAAf,OAAAmC,GAAA6d,EAAAhgB,OAAAvnF,MAAA,GAAA,MAAA,IAGAwnG,gBAAAtlB,GAAA,SAAA3xB,EAAAk3C,EAAA52F,GACA,MAAA48E,IAAAlwF,KAAAgzD,EAAA,SAAA,SAAAA,GACA,GAAAuP,GAAAvP,EAAAkgB,gBAAAlgB,EAAAkgB,iBAGA,OAFA3Q,GAAA2nC,GAAA52F,GACAA,GAAAi3C,EAAAgY,KAAAvP,EAAAkgB,cAAA,OACA,MAIAi3B,YAAAxlB,GAAA,SAAAulB,GACA,GAAA/c,GAAAntF,IAEAA,MAAAs+D,KAAA,SAAAtL,GACAA,EAAAkgB,eAAAlgB,EAAAkgB,cAAAg3B,IACAha,GAAA/C,EAAAn6B,EAAA,SAAA,WAGA,MAFAA,GAAAkgB,cAAAg3B,GAAA;AACA3/C,EAAAyI,EAAAkgB,iBAAAlgB,EAAAkgB,cAAA,OACA,QAMAk3B,SAAA,SAAAp3C,GACA,GAAArtD,EACA,IAAA,gBAAAqtD,GAAA,CACA,IAAAgM,EAAAh/D,KAAAgzD,GAAA,MAAA,KAGA,IAFArtD,EAAAqtD,EACAA,EAAAkL,EAAAl+D,KAAAgzD,IACAA,EAAA,MAAA,UAGA,IADArtD,EAAA+4D,EAAA1L,GACA,MAAArtD,EAAA,MAAA,KAEA,QAAAqtD,KAAArtD,EAAAoC,OAAAirD,EAAA3yD,KAAA2yD,EAAA3yD,KAAA6yE,cAAAlgB,EAAAkgB,cACA1H,UAAAxY,EAAAwY,UAAAD,QAAAvY,EAAAuY,QAAAoH,UAAA3f,EAAA2f,UACA9lC,QAAAmmB,EAAAnmB,UAGAw9D,aAAA1lB,GAAA,SAAA58E,EAAAuiG,EAAA39D,GACA,MAAAujD,IAAAlwF,KAAA+H,EAAA,UAAAuiG,EAAA,SAAA,QAAA,SAAAt3C,GACA,GAAAlsC,GAAA,QAAAwjF,EAAA,YACA,cAAAA,EAAA,UACA,UAAAA,EAAA,cAAA,WACA,IAAAt3C,EAAAlsC,GACA,CAAA,GAAAoxC,EAAAvrB,GAAAlrC,KAAAuxD,EAAAlsC,IAAA,OAAA,CACAksC,GAAAlsC,IAAA,IAAA6lB,MAFAqmB,GAAAlsC,GAAA6lB,CAGA,QAAA,MAGA49D,gBAAA5lB,GAAA,SAAA58E,EAAAuiG,EAAA39D,GACA,MAAAujD,IAAAlwF,KAAA+H,EAAA,UAAAuiG,EAAA,SAAA,QAAA,SAAAt3C,GACA,GAAAlsC,GAAA,QAAAwjF,EAAA,YACA,cAAAA,EAAA,UACA,UAAAA,EAAA,cAAA,YACAxmG,EAAAkvD,EAAAlsC,EACA,KAAAhjB,EAAA,OAAA,CACA,IAAA,MAAA6oC,EAAAqmB,EAAAlsC,GAAA,SACA,CACA,GAAA86C,GAAA99D,EAAAhC,MAAAo2D,EAAAvrB,GACA,KAAAi1B,EAAA,OAAA,CACA,IAAAp9D,GAAAo9D,EAAAhnD,MAAAgnD,EAAA,GAAAjhE,MACAqyD,GAAAlsC,GAAAhjB,EAAArB,MAAA,EAAAm/D,EAAAhnD,QAAAgnD,EAAAhnD,OAAApW,GAAAV,EAAAnD,OAAA,IAAA,IAAAmD,EAAArB,MAAA+B,IAAA,KAEA,OAAA,MAIA6rF,cAAA1L,GAAA,SAAA58E,EAAAixC,EAAAjyB,GACA,MAAAspE,IAAArwF,KAAA+H,EAAAixC,EAAAjyB,KAEAyjF,iBAAA,SAAAx6B,GAAAA,EAAAhwC,SAEAywD,SAAA,SAAAr8D,EAAAuF,EAAA5S,GACA,MAAA0pE,IAAAzwF,KAAA4/D,EAAA5/D,KAAAo0B,GAAAwrC,EAAA5/D,KAAA25B,GAAA5S,EAAAA,GAAAA,EAAAlmB,MAAA,UAEA4pG,YAAA,SAAAxjF,EAAAF,GACA,GAAA2jF,IAAA9Z,aAAA7pE,IAAA,MAAAA,EAAAzlB,SAAAylB,EAAAipD,OAAAjpD,GACAm6C,WAAAn6C,GAAAA,EAAAm6C,WACAmB,gBAAA,EAAAqnB,OAAA3iE,GAAAA,EAAA2iE,OACA5V,kBAAA/sD,GAAAA,EAAA+sD,kBAEA,OADA7sD,GAAA24C,EAAA5/D,KAAAinB,GACAwpE,GAAAzwF,KAAAinB,EAAAA,EAAAyjF,EAAA,aAEAC,YAAA,SAAA1jF,GACAA,EAAA24C,EAAA5/D,KAAAinB,EACA,IAAAs7C,MAAAhC,EAAArC,EAAAl+D,KAAAinB,EAAA+rC,MAAA0N,WACA,IAAAH,EAAA,IAAA,GAAAh/D,GAAA,EAAAA,EAAAg/D,EAAA5/D,SAAAY,EAAA,CACA,GAAAqpC,GAAA21B,EAAAh/D,IACA,MAAAqpC,EAAAxW,MAAAwW,EAAAxW,MAAAnN,EAAAm2B,MACA,MAAAxS,EAAAjR,IAAAiR,EAAAjR,IAAA1S,EAAAm2B,KACAmlB,EAAAh8D,KAAAqkC,EAAAy1B,OAAAvnD,QAAA8xB,EAAAy1B,QAEA,MAAAkC,IAEA8uB,UAAA,SAAAj9D,EAAAuF,EAAAj4B,GACA0yB,EAAAwrC,EAAA5/D,KAAAo0B,GAAAuF,EAAAimC,EAAA5/D,KAAA25B,EACA,IAAAioC,MAAAqC,EAAA7vC,EAAA4+B,IAaA,OAZAhzD,MAAAs+D,KAAAlqC,EAAA4+B,KAAAr5B,EAAAq5B,KAAA,EAAA,SAAAA,GACA,GAAAuN,GAAAvN,EAAA0N,WACA,IAAAH,EAAA,IAAA,GAAAh/D,GAAA,EAAAA,EAAAg/D,EAAA5/D,OAAAY,IAAA,CACA,GAAAqpC,GAAA21B,EAAAh/D,EACA,OAAAqpC,EAAAjR,IAAAsqC,GAAA7vC,EAAA4+B,MAAA5+B,EAAAgpB,IAAAxS,EAAAjR,IACA,MAAAiR,EAAAxW,MAAA6vC,GAAA7vC,EAAA4+B,MACA,MAAApoB,EAAAxW,MAAA6vC,GAAAtqC,EAAAq5B,MAAApoB,EAAAxW,MAAAuF,EAAAyjB,IACA17C,IAAAA,EAAAkpC,EAAAy1B,SACAuB,EAAAr7D,KAAAqkC,EAAAy1B,OAAAvnD,QAAA8xB,EAAAy1B,UAEA4D,IAEArC,GAEAgpC,YAAA,WACA,GAAAroC,KAMA,OALAviE,MAAAs+D,KAAA,SAAAtL,GACA,GAAA2Q,GAAA3Q,EAAA0N,WACA,IAAAiD,EAAA,IAAA,GAAApiE,GAAA,EAAAA,EAAAoiE,EAAAhjE,SAAAY,EACA,MAAAoiE,EAAApiE,GAAA6yB,MAAAmuC,EAAAh8D,KAAAo9D,EAAApiE,GAAA8+D,UAEAkC,GAGAsoC,aAAA,SAAA5jG,GACA,GAAAm2C,GAAA6mB,EAAAjkE,KAAAoR,MAAA05F,EAAA9qG,KAAAuyF,gBAAA5xF,MAOA,OANAX,MAAAs+D,KAAA,SAAAtL,GACA,GAAAmL,GAAAnL,EAAA3yD,KAAAM,OAAAmqG,CACA,OAAA3sC,GAAAl3D,GAAAm2C,EAAAn2C,GAAA,IACAA,GAAAk3D,QACA8F,KAEArE,EAAA5/D,KAAAo/D,EAAA6E,EAAA7mB,KAEA2tD,aAAA,SAAAzyB,GACAA,EAAA1Y,EAAA5/D,KAAAs4E,EACA,IAAA19D,GAAA09D,EAAAl7B,EACA,IAAAk7B,EAAAtlB,KAAAhzD,KAAAoR,OAAAknE,EAAAl7B,GAAA,EAAA,MAAA,EACA,IAAA0tD,GAAA9qG,KAAAuyF,gBAAA5xF,MAIA,OAHAX,MAAAs+D,KAAAt+D,KAAAoR,MAAAknE,EAAAtlB,KAAA,SAAAA,GACAp4C,GAAAo4C,EAAA3yD,KAAAM,OAAAmqG,IAEAlwF,GAGAkyD,KAAA,SAAAk+B,GACA,GAAA18D,GAAA,GAAAqtD,IAAAp9B,EAAAv+D,KAAAA,KAAAoR,MAAApR,KAAAoR,MAAApR,KAAAk5C,MACAl5C,KAAAmoF,WAAAnoF,KAAAoR,MAAApR,KAAAy6F,QAAAz6F,KAAAy6B,UAQA,OAPA6T,GAAAnnB,UAAAnnB,KAAAmnB,UAAAmnB,EAAAlnB,WAAApnB,KAAAonB,WACAknB,EAAAysC,IAAA/6E,KAAA+6E,IACAzsC,EAAAtmC,QAAA,EACAgjG,IACA18D,EAAAR,QAAAm8C,UAAAjqF,KAAA8tC,QAAAm8C,UACA37C,EAAAy7D,WAAA/pG,KAAA8pG,eAEAx7D,GAGA28D,UAAA,SAAAlkF,GACAA,IAAAA,KACA,IAAAqN,GAAAp0B,KAAAoR,MAAAuoB,EAAA35B,KAAAoR,MAAApR,KAAAk5C,IACA,OAAAnyB,EAAAqN,MAAArN,EAAAqN,KAAAA,IAAAA,EAAArN,EAAAqN,MACA,MAAArN,EAAA4S,IAAA5S,EAAA4S,GAAAA,IAAAA,EAAA5S,EAAA4S,GACA,IAAAmzC,GAAA,GAAA6uB,IAAAp9B,EAAAv+D,KAAAo0B,EAAAuF,GAAA5S,EAAA0rC,MAAAzyD,KAAAmoF,WAAA/zD,EAAAp0B,KAAAy6F,QAAAz6F,KAAAy6B,UAKA,OAJA1T,GAAAyiE,aAAA1c,EAAAh/B,QAAA9tC,KAAA8tC,UACA9tC,KAAAypF,SAAAzpF,KAAAypF,YAAAljF,MAAA+nC,IAAAw+B,EAAA0c,WAAAziE,EAAAyiE,aACA1c,EAAA2c,SAAAn7C,IAAAtuC,KAAAkxF,UAAA,EAAA1H,WAAAziE,EAAAyiE,aACA8H,GAAAxkB,EAAAskB,GAAApxF,OACA8sE,GAEAo+B,UAAA,SAAApyB,GACA,GAAAqU,GAAAntF,IAGA,IADA84E,YAAA4iB,MAAA5iB,EAAAA,EAAAxqC,KACAtuC,KAAAypF,OAAA,IAAA,GAAAloF,GAAA,EAAAA,EAAAvB,KAAAypF,OAAA9oF,SAAAY,EAAA,CACA,GAAA4pG,GAAAhe,EAAA1D,OAAAloF,EACA,IAAA4pG,EAAA78D,KAAAwqC,EAAA,CACAqU,EAAA1D,OAAAl4E,OAAAhQ,EAAA,GACAu3E,EAAAoyB,UAAA/d,GACAuE,GAAAN,GAAAjE,GACA,QAGA,GAAArU,EAAAhrC,SAAA9tC,KAAA8tC,QAAA,CACA,GAAAs9D,IAAAtyB,EAAAvmE,GACA62E,IAAAtQ,EAAA,SAAAxqC,GAAA,MAAA88D,GAAA7kG,KAAA+nC,EAAA/7B,MAAA,GACAumE,EAAAhrC,QAAA,GAAAg8C,IAAA,MACAhR,EAAAhrC,QAAAzrC,KAAA8pF,GAAAnsF,KAAA8tC,QAAAzrC,KAAA+oG,GACAtyB,EAAAhrC,QAAAk8C,OAAAmC,GAAAnsF,KAAA8tC,QAAAk8C,OAAAohB,KAGAC,eAAA,SAAA1nG,GAAAylF,GAAAppF,KAAA2D,IAEAgmE,QAAA,WAAA,MAAA3pE,MAAAyyD,MACA64C,UAAA,WAAA,MAAAtrG,MAAAklE,IAEA0qB,WAAA,SAAAh9D,GACA,MAAA5yB,MAAAy6F,QAAA7nE,EAAA1iB,MAAAlQ,KAAAy6F,SACAwD,GAAArrE,IAEA2/D,cAAA,WAAA,MAAAvyF,MAAAy6F,SAAA,MAEAW,aAAAzW,GAAA,SAAAnxE,GACA,OAAAA,IAAAA,EAAA,OACAA,GAAAxT,KAAAy6B,YACAz6B,KAAAy6B,UAAAjnB,EACAxT,KAAAs+D,KAAA,SAAAtL,GAAA,MAAAA,GAAAhtC,MAAA,OACAhmB,KAAAklE,IAAA2kB,GAAA7pF,KAAAklE,SAKAy2B,GAAA/wF,UAAA2gG,SAAA5P,GAAA/wF,UAAA0zD,IAkKA,KAAA,GA9JAwzB,IAAA,EAqHA4B,IAAA,EA6BAiB,IACA6W,EAAA,QAAAC,EAAA,YAAA3lD,EAAA,MAAAI,GAAA,QAAAwlD,GAAA,QAAAC,GAAA,OAAAC,GAAA,MACAC,GAAA,QAAAC,GAAA,WAAA/lD,GAAA,MAAAgmD,GAAA,QAAAC,GAAA,SAAAC,GAAA,WAAAC,GAAA,MACAC,GAAA,OAAAnmD,GAAA,OAAAG,GAAA,KAAAF,GAAA,QAAAG,GAAA,OAAAgmD,GAAA,YAAAC,GAAA,SACAC,GAAA,SAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,MAAAC,GAAA,MAAAC,GAAA,MACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,SACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,KACAC,IAAA,IAAAC,IAAA,IAAAC,MAAA,KAAAC,MAAA,OAAAC,MAAA,OAAAC,MAAA,QAAAC,MAAA,SACAC,MAAA,OAAAC,MAAA,MAAAC,MAAA,SAAAC,MAAA,WAAAC,MAAA,UAIAhtG,GAAA,EAAAA,GAAA,GAAAA,KAAAozF,GAAApzF,GAAA,IAAAozF,GAAApzF,GAAA,IAAAgU,OAAAhU,GAEA,KAAA,GAAAu9D,IAAA,GAAAA,IAAA,GAAAA,KAAA61B,GAAA71B,IAAAvpD,OAAAC,aAAAspD,GAEA,KAAA,GAAAqD,IAAA,EAAAA,IAAA,GAAAA,KAAAwyB,GAAAxyB,GAAA,KAAAwyB,GAAAxyB,GAAA,OAAA,IAAAA,EAEA,IAAA4yB,MAEAA,IAAAyZ,OACAC,KAAA,aAAAC,MAAA,cAAAC,GAAA,WAAAC,KAAA,aACAC,IAAA,YAAAC,KAAA,mBAAAC,OAAA,WAAAC,SAAA,aACAC,OAAA,eAAAC,UAAA,gBAAAC,kBAAA,gBACAC,IAAA,aAAAC,YAAA,aACAC,MAAA,mBAAAC,OAAA,kBACAC,IAAA,mBAKAza,GAAA0a,WACAC,SAAA,YAAAC,SAAA,aAAAC,SAAA,OAAAC,eAAA,OAAAC,SAAA,OACAC,YAAA,aAAAC,WAAA,WAAAC,UAAA,WAAAC,YAAA,aACAC,YAAA,cAAAC,aAAA,eAAAC,WAAA,cAAAC,YAAA,YACAC,iBAAA,iBAAAC,cAAA,gBAAAC,SAAA,OAAAC,SAAA,OACAC,SAAA,WAAAC,eAAA,WAAAC,eAAA,UAAAC,eAAA,aACAC,SAAA,aAAAC,SAAA,aACAC,SAAA,gBAAAC,eAAA,gBAAAC,QAAA,gBACA1c,YAAA,SAGAM,GAAAqc,QACAV,SAAA,cAAAW,SAAA,aAAAC,SAAA,WAAAC,SAAA,aACAC,QAAA,cAAAC,QAAA,aAAA/B,SAAA,cAAAgC,SAAA,YACAC,SAAA,aAAAC,eAAA,WAAAjC,SAAA,eAAAkC,SAAA,gBACAC,QAAA,eAAAC,gBAAA,gBAAAC,SAAA,WAAAC,SAAA,iBACAC,SAAA,YAEAnd,GAAAod,YACAC,QAAA,YAAAC,QAAA,aAAAC,QAAA,OAAAC,cAAA,OAAAC,QAAA,OACAC,WAAA,aAAAC,SAAA,aAAAC,UAAA,WAAAC,WAAA,WAAAvC,WAAA,cACAC,YAAA,eAAAuC,WAAA,aAAAC,YAAA,cAAAf,gBAAA,iBACAgB,qBAAA,gBAAAC,aAAA,gBAAAC,QAAA,OAAAC,QAAA,OACAC,QAAA,WAAAC,cAAA,WAAAC,YAAA,UAAAC,kBAAA,aACAC,QAAA,aAAAC,QAAA,aAAAC,gBAAA,qBAAAC,aAAA,sBACAC,QAAA,gBAAAC,cAAA,gBAAA3D,UAAA,aAAAC,YAAA,WACAzb,aAAA,QAAA,WAEAM,GAAA,QAAAxsB,GAAAwsB,GAAAod,WAAApd,GAAA0a,SA0HA,IAiWA5X,IACAD,GAlWA9B,IACAxH,UAAAA,GACAulB,gBAAA,SAAA3uC,GAAA,MAAAA,GAAA0nB,aAAA1nB,EAAAkd,UAAA,UAAAld,EAAAkd,UAAA,QAAAsL,KACAomB,SAAA,SAAA5uC,GAAA,MAAA8vB,IAAA9vB,EAAA,SAAAjd,GACA,GAAAA,EAAA77C,QAAA,CACA,GAAA2tC,GAAAmkB,EAAAgH,EAAA52B,IAAA2Z,EAAA3nD,KAAA0yD,MAAA3yD,KAAAM,MACA,OAAAsnD,GAAA3nD,KAAA88C,IAAArD,GAAAkO,EAAA3nD,KAAA0yD,KAAAkS,EAAAR,YACAtwC,KAAA6zB,EAAA3nD,KAAAq5B,GAAAylC,EAAAnX,EAAA3nD,KAAA0yD,KAAA,EAAA,KAEA5+B,KAAA6zB,EAAA3nD,KAAAq5B,GAAAylC,EAAAnX,EAAA3nD,KAAA0yD,KAAAjZ,IAEA,OAAA3lB,KAAA6zB,EAAA7zB,OAAAuF,GAAAsuB,EAAAtuB,SAGAo6E,WAAA,SAAA7uC,GAAA,MAAA8vB,IAAA9vB,EAAA,SAAAjd,GAAA,OACA7zB,KAAAgrC,EAAAnX,EAAA7zB,OAAA4+B,KAAA,GACAr5B,GAAAimC,EAAAsF,EAAA52B,IAAA8wB,EAAAnX,EAAAtuB,KAAAq5B,KAAA,EAAA,QAEAghD,YAAA,SAAA9uC,GAAA,MAAA8vB,IAAA9vB,EAAA,SAAAjd,GAAA,OACA7zB,KAAAgrC,EAAAnX,EAAA7zB,OAAA4+B,KAAA,GAAAr5B,GAAAsuB,EAAA7zB,WAEA6/E,mBAAA,SAAA/uC,GAAA,MAAA8vB,IAAA9vB,EAAA,SAAAjd,GACA,GAAAnyC,GAAAovD,EAAAuT,WAAAxwB,EAAA3nD,KAAA,OAAAwV,IAAA,EACAgmE,EAAA5W,EAAAiU,YAAAzyD,KAAA,EAAA5Q,IAAAA,GAAA,MACA,QAAAse,KAAA0nD,EAAAniD,GAAAsuB,EAAA7zB,WAEA8/E,oBAAA,SAAAhvC,GAAA,MAAA8vB,IAAA9vB,EAAA,SAAAjd,GACA,GAAAnyC,GAAAovD,EAAAuT,WAAAxwB,EAAA3nD,KAAA,OAAAwV,IAAA,EACA+lE,EAAA3W,EAAAiU,YAAAzyD,KAAAw+C,EAAApgE,QAAAi2D,QAAA7rC,YAAA,IAAApZ,IAAAA,GAAA,MACA,QAAAse,KAAA6zB,EAAA7zB,OAAAuF,GAAAkiD,MAEAqtB,KAAA,SAAAhkC,GAAA,MAAAA,GAAAgkC,QACAC,KAAA,SAAAjkC,GAAA,MAAAA,GAAAikC,QACAC,cAAA,SAAAlkC,GAAA,MAAAA,GAAAkkC,iBACAC,cAAA,SAAAnkC,GAAA,MAAAA,GAAAmkC,iBACA8K,WAAA,SAAAjvC,GAAA,MAAAA,GAAAynB,gBAAAvtB,EAAA8F,EAAA0jB,YAAA,KACAwrB,SAAA,SAAAlvC,GAAA,MAAAA,GAAAynB,gBAAAvtB,EAAA8F,EAAAR,cACA2vC,YAAA,SAAAnvC,GAAA,MAAAA,GAAA0jC,mBAAA,SAAA3gD,GAAA,MAAAotC,IAAAnwB,EAAAjd,EAAA3nD,KAAA0yD,QACA1iB,OAAA,QAAAilC,KAAA,KAEA++B,iBAAA,SAAApvC,GAAA,MAAAA,GAAA0jC,mBAAA,SAAA3gD,GAAA,MAAAutC,IAAAtwB,EAAAjd,EAAA3nD,QACAgwC,OAAA,QAAAilC,KAAA,KAEAg/B,UAAA,SAAArvC,GAAA,MAAAA,GAAA0jC,mBAAA,SAAA3gD,GAAA,MAAAstC,IAAArwB,EAAAjd,EAAA3nD,KAAA0yD,QACA1iB,OAAA,QAAAilC,MAAA,KAEAi/B,YAAA,SAAAtvC,GAAA,MAAAA,GAAA0jC,mBAAA,SAAA3gD,GACA,GAAAnyC,GAAAovD,EAAAuT,WAAAxwB,EAAA3nD,KAAA,OAAAwV,IAAA,CACA,OAAAovD,GAAAiU,YAAAzyD,KAAAw+C,EAAApgE,QAAAi2D,QAAA7rC,YAAA,IAAApZ,IAAAA,GAAA,QACAqtF,KACAsR,WAAA,SAAAvvC,GAAA,MAAAA,GAAA0jC,mBAAA,SAAA3gD,GACA,GAAAnyC,GAAAovD,EAAAuT,WAAAxwB,EAAA3nD,KAAA,OAAAwV,IAAA,CACA,OAAAovD,GAAAiU,YAAAzyD,KAAA,EAAA5Q,IAAAA,GAAA,QACAqtF,KACAuR,gBAAA,SAAAxvC,GAAA,MAAAA,GAAA0jC,mBAAA,SAAA3gD,GACA,GAAAnyC,GAAAovD,EAAAuT,WAAAxwB,EAAA3nD,KAAA,OAAAwV,IAAA,EACAmR,EAAAi+C,EAAAiU,YAAAzyD,KAAA,EAAA5Q,IAAAA,GAAA,MACA,OAAAmR,GAAAm2B,GAAA8nB,EAAAhH,QAAAj3C,EAAA+rC,MAAA1V,OAAA,MAAAk4C,GAAAtwB,EAAAjd,EAAA3nD,MACA2mB,GACAk8E,KACAwR,SAAA,SAAAzvC,GAAA,MAAAA,GAAA0vC,OAAA,EAAA,SACAC,WAAA,SAAA3vC,GAAA,MAAAA,GAAA0vC,MAAA,EAAA,SACAE,SAAA,SAAA5vC,GAAA,MAAAA,GAAA0vC,OAAA,EAAA,SACAG,WAAA,SAAA7vC,GAAA,MAAAA,GAAA0vC,MAAA,EAAA,SACAI,WAAA,SAAA9vC,GAAA,MAAAA,GAAA+vC,OAAA,EAAA,SACAC,YAAA,SAAAhwC,GAAA,MAAAA,GAAA+vC,MAAA,EAAA,SACAE,aAAA,SAAAjwC,GAAA,MAAAA,GAAA+vC,OAAA,EAAA,WACAG,cAAA,SAAAlwC,GAAA,MAAAA,GAAA+vC,MAAA,EAAA,WACAI,WAAA,SAAAnwC,GAAA,MAAAA,GAAA+vC,OAAA,EAAA,SACAK,aAAA,SAAApwC,GAAA,MAAAA,GAAA+vC,MAAA,EAAA,UACAM,YAAA,SAAArwC,GAAA,MAAAA,GAAA+vC,OAAA,EAAA,UACAO,YAAA,SAAAtwC,GAAA,MAAAA,GAAA+vC,MAAA,EAAA,SACAQ,cAAA,SAAAvwC,GAAA,MAAAA,GAAAwwC,SAAA,EAAA,SACAC,aAAA,SAAAzwC,GAAA,MAAAA,GAAAwwC,QAAA,EAAA,SACAE,cAAA,SAAA1wC,GAAA,MAAAA,GAAAwwC,SAAA,EAAA,SACAG,aAAA,SAAA3wC,GAAA,MAAAA,GAAAwwC,QAAA,EAAA,SACAI,eAAA,SAAA5wC,GAAA,MAAAA,GAAAwwC,SAAA,EAAA,UACAK,cAAA,SAAA7wC,GAAA,MAAAA,GAAAwwC,QAAA,EAAA,UACAM,WAAA,SAAA9wC,GAAA,MAAAA,GAAA+wC,gBAAA,UACAC,WAAA,SAAAhxC,GAAA,MAAAA,GAAA+wC,gBAAA,QACAE,WAAA,SAAAjxC,GAAA,MAAAA,GAAA+wC,gBAAA,aACAG,UAAA,SAAAlxC,GAAA,MAAAA,GAAA2tB,iBAAA,OACAwjB,cAAA,SAAAnxC,GAEA,IAAA,GADAoxC,MAAAt7B,EAAA9V,EAAA0tB,iBAAA75B,EAAAmM,EAAAn+C,QAAAgyC,QACAx3D,EAAA,EAAAA,EAAAy5E,EAAAr6E,OAAAY,IAAA,CACA,GAAA0lB,GAAA+zD,EAAAz5E,GAAA6yB,OACAlW,EAAA46C,EAAAoM,EAAAhH,QAAAj3C,EAAA+rC,MAAA/rC,EAAAm2B,GAAA2b,EACAu9C,GAAA/vG,KAAAgzD,EAAAR,EAAA76C,EAAA66C,IAEAmM,EAAA+jC,kBAAAqN,IAEAC,WAAA,SAAArxC,GACAA,EAAAomB,oBAAApmB,EAAA+wC,gBAAA,OACA/wC,EAAAsxC,YAAA,cASAC,eAAA,SAAAvxC,GAAA,MAAAsf,IAAAtf,EAAA,WAEA,IAAA,GADA8V,GAAA9V,EAAA0tB,iBAAA7F,KACAxrF,EAAA,EAAAA,EAAAy5E,EAAAr6E,OAAAY,IACA,GAAAy5E,EAAAz5E,GAAA6K,QAAA,CACA,GAAAtI,GAAAk3E,EAAAz5E,GAAAjB,KAAA0yD,EAAAkL,EAAAgH,EAAA52B,IAAAxqC,EAAAkvD,MAAA3yD,IACA,IAAA2yD,EAEA,GADAlvD,EAAAs5C,IAAA4V,EAAAryD,SAAAmD,EAAA,GAAAs7D,GAAAt7D,EAAAkvD,KAAAlvD,EAAAs5C,GAAA,IACAt5C,EAAAs5C,GAAA,EACAt5C,EAAA,GAAAs7D,GAAAt7D,EAAAkvD,KAAAlvD,EAAAs5C,GAAA,GACA8nB,EAAAyqB,aAAA38B,EAAAv+B,OAAA3wB,EAAAs5C,GAAA,GAAA4V,EAAAv+B,OAAA3wB,EAAAs5C,GAAA,GACAgiB,EAAAt7D,EAAAkvD,KAAAlvD,EAAAs5C,GAAA,GAAAt5C,EAAA,kBACA,IAAAA,EAAAkvD,KAAAkS,EAAA52B,IAAAl9B,MAAA,CACA,GAAAsJ,GAAAwjD,EAAAgH,EAAA52B,IAAAxqC,EAAAkvD,KAAA,GAAA3yD,IACAqa,KACA5W,EAAA,GAAAs7D,GAAAt7D,EAAAkvD,KAAA,GACAkS,EAAAyqB,aAAA38B,EAAAv+B,OAAA,GAAAywC,EAAA52B,IAAAikD,gBACA73E,EAAA+Z,OAAA/Z,EAAA/Z,OAAA,GACAy+D,EAAAt7D,EAAAkvD,KAAA,EAAAt4C,EAAA/Z,OAAA,GAAAmD,EAAA,eAIAipF,EAAAxmF,KAAA,GAAAihF,IAAA1jF,EAAAA,IAEAohE,EAAA2jC,cAAA9b,MAEA2pB,iBAAA,SAAAxxC,GAAA,MAAAsf,IAAAtf,EAAA,WAEA,IAAA,GADAyxC,GAAAzxC,EAAA0tB,iBACArxF,EAAAo1G,EAAAh2G,OAAA,EAAAY,GAAA,EAAAA,IACA2jE,EAAAyqB,aAAAzqB,EAAA52B,IAAAikD,gBAAAokB,EAAAp1G,GAAA00D,OAAA0gD,EAAAp1G,GAAAjB,KAAA,SACAq2G,GAAAzxC,EAAA0tB,gBACA,KAAA,GAAA9zB,GAAA,EAAAA,EAAA63C,EAAAh2G,OAAAm+D,IACAoG,EAAA43B,WAAA6Z,EAAA73C,GAAA1qC,OAAA4+B,KAAA,MAAA,EACAmvB,IAAAjd,MAEA0xC,SAAA,SAAA1xC,GAAA,MAAAA,GAAA2tB,iBAAA,KAAA,UACAgkB,gBAAA,SAAA3xC,GAAA,MAAAA,GAAA2xC,oBA0DArgB,GAAA,GAAAwF,IAwDAlF,GAAA,KAiXAwD,IAAA7pF,SAAA,WAAA,MAAA,oBAEA+iB,MACA6mE,KAoPAqB,IAAAloE,SAAAA,GAEAkoE,GAAArB,eAAAA,EA8GA,IAAA+B,MACAV,IAAAob,eAAA,SAAAnzG,GAAA,MAAAy4F,IAAA71F,KAAA5C,GAqEA,IAAAg6F,IAAA,KAgIAoZ,GAAA,SAAA9+C,GACA,GAAAoiC,GAAApiC,EAAAoiC,eAEA2c,EAAA/+C,EAAA++C,UAEA/+C,GAAArtD,WACAoG,YAAAinD,EACA1/C,MAAA,WAAAxY,OAAAwY,QAAAvY,KAAA8E,QAAAkU,MAAAT,SAEA0+F,UAAA,SAAAj5F,EAAA1K,GACA,GAAAyT,GAAA/mB,KAAA+mB,QAAAiB,EAAAjB,EAAA/I,EACA+I,GAAA/I,IAAA1K,GAAA,QAAA0K,IACA+I,EAAA/I,GAAA1K,EACA+mF,EAAA3pF,eAAAsN,IACAymE,GAAAzkF,KAAAq6F,EAAAr8E,IAAAhe,KAAAsT,EAAA0U,GACAs/C,GAAAtnE,KAAA,eAAAA,KAAAge,KAGAuwD,UAAA,SAAAvwD,GAAA,MAAAhe,MAAA+mB,QAAA/I,IACAk5F,OAAA,WAAA,MAAAl3G,MAAAsuC,KAEA6oE,UAAA,SAAA9vC,EAAA/oC,GACAt+B,KAAAmQ,MAAAgmF,QAAA73D,EAAA,OAAA,WAAAk2D,GAAAntB,KAEA+vC,aAAA,SAAA/vC,GAEA,IAAA,GADAyH,GAAA9uE,KAAAmQ,MAAAgmF,QACA50F,EAAA,EAAAA,EAAAutE,EAAAnuE,SAAAY,EACA,GAAAutE,EAAAvtE,IAAA8lE,GAAAyH,EAAAvtE,GAAAsb,MAAAwqD,EAEA,MADAyH,GAAAv9D,OAAAhQ,EAAA,IACA,GAIA81G,WAAA3yB,GAAA,SAAAlb,EAAAziD,GACA,GAAA0rC,GAAA+W,EAAAxtB,MAAAwtB,EAAAvR,EAAA0R,QAAA3pE,KAAA+mB,QAAAyiD,EACA,IAAA/W,EAAA+X,WAAA,KAAA,IAAA1qE,OAAA,gCACA65D,GAAA35D,KAAAmQ,MAAA+6D,UACAzY,KAAAA,EAAA6kD,SAAA9tC,EAAA6B,OAAAtkD,GAAAA,EAAAskD,OACAxR,SAAA9yC,GAAAA,EAAA8yC,UAAA,GACA,SAAAoR,GAAA,MAAAA,GAAApR,WACA75D,KAAAmQ,MAAA06D,UACA+Z,GAAA5kF,QAEAu3G,cAAA7yB,GAAA,SAAAlb,GAIA,IAAA,GAHA2jB,GAAAntF,KAEAkrE,EAAAlrE,KAAAmQ,MAAA+6D,SACA3pE,EAAA,EAAAA,EAAA2pE,EAAAvqE,SAAAY,EAAA,CACA,GAAAuC,GAAAonE,EAAA3pE,GAAA+1G,QACA,IAAAxzG,GAAA0lE,GAAA,gBAAAA,IAAA1lE,EAAA+Y,MAAA2sD,EAIA,MAHA0B,GAAA35D,OAAAhQ,EAAA,GACA4rF,EAAAh9E,MAAA06D,cACA+Z,IAAAuI,MAMA2P,WAAApY,GAAA,SAAA/+E,EAAA6N,EAAAwpF,GACA,gBAAAxpF,IAAA,gBAAAA,KACAA,EAAA,MAAAA,EAAAxT,KAAA+mB,QAAA43E,YAAA,QAAA,OACAnrF,EAAA,MAAA,YAEAwrD,EAAAh/D,KAAAsuC,IAAA3oC,IAAAm3F,GAAA98F,KAAA2F,EAAA6N,EAAAwpF,KAEAiZ,gBAAAvxB,GAAA,SAAAqY,GAIA,IAAA,GAHA5P,GAAAntF,KAEAg7E,EAAAh7E,KAAAsuC,IAAAysC,IAAAC,OAAAx2E,GAAA,EACAjD,EAAA,EAAAA,EAAAy5E,EAAAr6E,OAAAY,IAAA,CACA,GAAA25E,GAAAF,EAAAz5E,EACA,IAAA25E,EAAA9uE,QASA8uE,EAAA56E,KAAA0yD,KAAAxuD,IACAs4F,GAAA3P,EAAAjS,EAAA56E,KAAA0yD,KAAA+pC,GAAA,GACAv4F,EAAA02E,EAAA56E,KAAA0yD,KACAzxD,GAAA4rF,EAAA7+C,IAAAysC,IAAAE,WAAAkH,GAAAgL,QAZA,CACA,GAAA/4D,GAAA8mD,EAAA9mD,OAAAuF,EAAAuhD,EAAAvhD,KACAp1B,EAAA6F,KAAAC,IAAA7F,EAAA4vB,EAAA4+B,KACAxuD,GAAA4F,KAAAkvD,IAAA6zB,EAAAzoB,WAAA/qC,EAAAq5B,MAAAr5B,EAAAyjB,GAAA,EAAA,IAAA,CACA,KAAA,GAAAp5C,GAAAO,EAAAP,EAAAQ,IAAAR,EACA84F,GAAA3P,EAAAnpF,EAAA+4F,EACA,IAAAya,GAAArqB,EAAA7+C,IAAAysC,IAAAC,MACA,IAAA5mD,EAAAgpB,IAAA49B,EAAAr6E,QAAA62G,EAAA72G,QAAA62G,EAAAj2G,GAAA6yB,OAAAgpB,GAAA,GACA4vC,GAAAG,EAAA7+C,IAAA/sC,EAAA,GAAAimF,IAAApzD,EAAAojF,EAAAj2G,GAAAo4B,MAAA+zD,QAWA+pB,WAAA,SAAAxwF,EAAA+kD,GACA,MAAAW,IAAA3sE,KAAAinB,EAAA+kD,IAGA0rC,cAAA,SAAA1kD,EAAAgZ,GACA,MAAAW,IAAA3sE,KAAAo/D,EAAApM,GAAAgZ,GAAA,IAGA2rC,eAAA,SAAA1wF,GACAA,EAAA24C,EAAA5/D,KAAAsuC,IAAArnB,EACA,IAEApmB,GAFAyqE,EAAAG,GAAAzrE,KAAAk+D,EAAAl+D,KAAAsuC,IAAArnB,EAAA+rC,OACA/uC,EAAA,EAAAC,GAAAonD,EAAA3qE,OAAA,GAAA,EAAAy8C,EAAAn2B,EAAAm2B,EAEA,IAAA,GAAAA,EAAAv8C,EAAAyqE,EAAA,OACA,QAAA,CACA,GAAA5Q,GAAAz2C,EAAAC,GAAA,CACA,KAAAw2C,EAAA4Q,EAAA,EAAA5Q,EAAA,GAAA,IAAAtd,EAAAl5B,EAAAw2C,MACA,CAAA,KAAA4Q,EAAA,EAAA5Q,EAAA,GAAAtd,GACA,CAAAv8C,EAAAyqE,EAAA,EAAA5Q,EAAA,EAAA,OADAz2C,EAAAy2C,EAAA,GAGA,GAAAqqB,GAAAlkF,EAAAA,EAAA2P,QAAA,aAAA,CACA,OAAAu0E,GAAA,EAAAlkF,EAAA,GAAAkkF,EAAA,KAAAlkF,EAAA4B,MAAA,EAAAsiF,EAAA,IAGA6Z,UAAA,SAAA33E,GACA,GAAAwrC,GAAAzyD,KAAAsuC,IAAAmkB,IACA,OAAAA,GAAA8X,UACAtS,EAAAsS,UAAA9X,EAAAzyD,KAAAy3G,WAAAxwF,GAAA9W,OAAAsiD,KADAA,GAIAktC,UAAA,SAAA14E,EAAApmB,GACA,MAAAb,MAAA43G,WAAA3wF,EAAApmB,GAAA,IAGA+2G,WAAA,SAAA3wF,EAAApmB,GACA,GAAAssF,GAAAntF,KAEA4hE,IACA,KAAAo1C,EAAAtmG,eAAA7P,GAAA,MAAA+gE,EACA,IAAA1/B,GAAA80E,EAAAn2G,GAAA4xD,EAAAzyD,KAAA4+F,UAAA33E,EACA,IAAA,gBAAAwrC,GAAA5xD,GACAqhC,EAAAuwB,EAAA5xD,KAAA+gE,EAAAr7D,KAAA27B,EAAAuwB,EAAA5xD,SACA,IAAA4xD,EAAA5xD,GACA,IAAA,GAAAU,GAAA,EAAAA,EAAAkxD,EAAA5xD,GAAAF,OAAAY,IAAA,CACA,GAAA2oB,GAAAgY,EAAAuwB,EAAA5xD,GAAAU,GACA2oB,IAAA03C,EAAAr7D,KAAA2jB,OAEAuoC,GAAAuX,YAAA9nC,EAAAuwB,EAAAuX,YACApI,EAAAr7D,KAAA27B,EAAAuwB,EAAAuX,aACA9nC,EAAAuwB,EAAA51C,OACA+kD,EAAAr7D,KAAA27B,EAAAuwB,EAAA51C,MAEA,KAAA,GAAAiiD,GAAA,EAAAA,EAAA58B,EAAA21E,QAAAl3G,OAAAm+D,IAAA,CACA,GAAAh7D,GAAAo+B,EAAA21E,QAAA/4C,EACAh7D,GAAAywB,KAAAk+B,EAAA06B,IAAA38E,EAAAoxD,EAAA99D,EAAAomB,OAAA,GACA03C,EAAAr7D,KAAAzC,EAAAomB,KAEA,MAAA03C,IAGAk2C,cAAA,SAAA9kD,EAAAgZ,GACA,GAAA19B,GAAAtuC,KAAAsuC,GAEA,OADA0kB,GAAA2M,EAAArxB,EAAA,MAAA0kB,EAAA1kB,EAAAl9B,MAAAk9B,EAAA4K,KAAA,EAAA8Z,GACA2Y,GAAA3rE,KAAAgzD,EAAA,EAAAgZ,IAGA0M,aAAA,SAAAn0E,EAAAkuD,GACA,GAAAxrC,GAAAi0D,EAAAl7E,KAAAsuC,IAAAysC,IAAAJ,SAIA,OAHA1zD,GAAA,MAAA1iB,EAAA22E,EAAA56E,KACA,gBAAAiE,GAAAq7D,EAAA5/D,KAAAsuC,IAAA/pC,GACAA,EAAA22E,EAAA9mD,OAAA8mD,EAAAvhD,KACA++C,GAAA14E,KAAAinB,EAAAwrC,GAAA,SAGAgmB,WAAA,SAAAxxD,EAAAwrC,GACA,MAAAgmB,IAAAz4E,KAAA4/D,EAAA5/D,KAAAsuC,IAAArnB,GAAAwrC,GAAA,SAGA0mB,WAAA,SAAAb,EAAA7lB,GAEA,MADA6lB,GAAAD,GAAAr4E,KAAAs4E,EAAA7lB,GAAA,QACA0mB,GAAAn5E,KAAAs4E,EAAA5xD,KAAA4xD,EAAAxiE,MAGA8oD,aAAA,SAAAlzD,EAAA+mD,GAEA,MADA/mD,GAAA2sE,GAAAr4E,MAAA8V,IAAApK,EAAAgb,KAAA,GAAA+rC,GAAA,QAAA38C,IACA8oD,EAAA5+D,KAAAsuC,IAAA5iC,EAAA1L,KAAA8E,QAAA43D,aAEAoI,aAAA,SAAA9R,EAAAP,EAAAwlB,GACA,GAAAlT,GAAAvgE,GAAA,CACA,IAAA,gBAAAwuD,GAAA,CACA,GAAA3hD,GAAArR,KAAAsuC,IAAAl9B,MAAApR,KAAAsuC,IAAA4K,KAAA,CACA8Z,GAAAhzD,KAAAsuC,IAAAl9B,MAAA4hD,EAAAhzD,KAAAsuC,IAAAl9B,MACA4hD,EAAA3hD,IAAA2hD,EAAA3hD,EAAA7M,GAAA,GACAugE,EAAA7G,EAAAl+D,KAAAsuC,IAAA0kB,OAEA+R,GAAA/R,CAEA,OAAAglB,IAAAh4E,KAAA+kE,GAAAjvD,IAAA,EAAA4Q,KAAA,GAAA+rC,GAAA,OAAAwlB,GAAAzzE,GAAAsR,KACAtR,EAAAxE,KAAAsuC,IAAA5iC,OAAAo5D,GAAAC,GAAA,IAGAgzC,kBAAA,WAAA,MAAAr+B,IAAA15E,KAAA8E,UACAkzG,iBAAA,WAAA,MAAAphC,IAAA52E,KAAA8E,UAEAmzG,YAAA,WAAA,OAAA7jF,KAAAp0B,KAAA8E,QAAAs3D,SAAAziC,GAAA35B,KAAA8E,QAAAu3D,SAEA67C,UAAA,SAAAjxF,EAAA+xB,EAAAha,EAAAgnE,EAAAC,GACA,GAAAnhG,GAAA9E,KAAA8E,OACAmiB,GAAAyxD,GAAA14E,KAAA4/D,EAAA5/D,KAAAsuC,IAAArnB,GACA,IAAAnR,GAAAmR,EAAAqX,OAAA5X,EAAAO,EAAAP,IAKA,IAJAsyB,EAAA30C,MAAAghB,SAAA,WACA2zB,EAAApmC,aAAA,mBAAA,QACA5S,KAAA8E,QAAAkU,MAAAk3D,cAAAl3B,GACAl0C,EAAAy2D,MAAAh7D,YAAAy4C,GACA,QAAAgtD,EACAlwF,EAAAmR,EAAAnR,QACA,IAAA,SAAAkwF,GAAA,QAAAA,EAAA,CACA,GAAA9tE,GAAA9tB,KAAAC,IAAAvF,EAAAq8C,QAAA3kB,aAAAx8B,KAAAsuC,IAAA5iC,QACA4rB,EAAAltB,KAAAC,IAAAvF,EAAAy2D,MAAAx+B,YAAAj4B,EAAAs2D,UAAAr+B,cAEA,SAAAipE,GAAA/+E,EAAAqX,OAAA0a,EAAA7pB,aAAA+I,IAAAjR,EAAAnR,IAAAkjC,EAAA7pB,aACArZ,EAAAmR,EAAAnR,IAAAkjC,EAAA7pB,aACAlI,EAAAqX,OAAA0a,EAAA7pB,cAAA+I,IACApiB,EAAAmR,EAAAqX,QACA5X,EAAAsyB,EAAA9pB,YAAAoI,IACA5Q,EAAA4Q,EAAA0hB,EAAA9pB,aAEA8pB,EAAA30C,MAAAyR,IAAAA,EAAA,KACAkjC,EAAA30C,MAAAqiB,KAAAsyB,EAAA30C,MAAAw4B,MAAA,GACA,SAAAopE,GACAv/E,EAAA5hB,EAAAy2D,MAAAx+B,YAAAic,EAAA9pB,YACA8pB,EAAA30C,MAAAw4B,MAAA,QAEA,QAAAopE,EAAAv/E,EAAA,EACA,UAAAu/E,IAAAv/E,GAAA5hB,EAAAy2D,MAAAx+B,YAAAic,EAAA9pB,aAAA,GACA8pB,EAAA30C,MAAAqiB,KAAAA,EAAA,MAEAsY,GACAgiD,GAAAhhF,MAAA0mB,KAAAA,EAAA5Q,IAAAA,EAAA+mB,MAAAnW,EAAAsyB,EAAA9pB,YAAAoP,OAAAxoB,EAAAkjC,EAAA7pB,gBAGAgpF,iBAAAzzB,GAAAkS,IACAwhB,kBAAA1zB,GAAAyS,IACAkhB,eAAAnhB,GAEAsf,YAAA,SAAAtiB,GACA,GAAA4B,GAAAplF,eAAAwjF,GACA,MAAA4B,IAAA5B,GAAA7yF,KAAA,KAAArB,OAGAq+F,gBAAA3Z,GAAA,SAAArkF,GAAAg+F,GAAAr+F,KAAAK,KAEAg/F,SAAA,SAAAjrE,EAAAkkF,EAAAh0G,EAAAuhE,GACA,GAAAsnB,GAAAntF,KAEAwT,EAAA,CACA8kG,GAAA,IAAA9kG,GAAA,EAAA8kG,GAAAA,EAEA,KAAA,GADAx0G,GAAA87D,EAAA5/D,KAAAsuC,IAAAla,GACA7yB,EAAA,EAAAA,EAAA+2G,IACAx0G,EAAAu7F,GAAAlS,EAAA7+C,IAAAxqC,EAAA0P,EAAAlP,EAAAuhE,IACA/hE,EAAA87F,WAFAr+F,GAIA,MAAAuC,IAGAmxG,MAAAvwB,GAAA,SAAAlxE,EAAAlP,GACA,GAAA6oF,GAAAntF,IAEAA,MAAA4oG,mBAAA,SAAA1tB,GACA,MAAAiS,GAAAroF,QAAA4K,OAAAy9E,EAAA7+C,IAAAtmC,QAAAkzE,EAAA9uE,QACAizF,GAAAlS,EAAA7+C,IAAA4sC,EAAA56E,KAAAkT,EAAAlP,EAAA6oF,EAAApmE,QAAAwxF,iBAEA/kG,EAAA,EAAA0nE,EAAA9mD,OAAA8mD,EAAAvhD,MACAwpE,MAGAuS,QAAAhxB,GAAA,SAAAlxE,EAAAlP,GACA,GAAAy2E,GAAA/6E,KAAAsuC,IAAAysC,IAAAzsC,EAAAtuC,KAAAsuC,GACAysC,GAAAuQ,oBACAh9C,EAAAukD,iBAAA,GAAA,KAAA,WAEAmC,GAAAh1F,KAAA,SAAAk7E,GACA,GAAApC,GAAAumB,GAAA/wD,EAAA4sC,EAAA56E,KAAAkT,EAAAlP,GAAA,EACA,OAAAkP,GAAA,GAAA4gB,KAAA0kD,EAAAn/C,GAAAuhD,EAAA56E,OAAA8zB,KAAA8mD,EAAA56E,KAAAq5B,GAAAm/C,OAIA+mB,SAAA,SAAAzrE,EAAAkkF,EAAAh0G,EAAAk0G,GACA,GAAArrB,GAAAntF,KAEAwT,EAAA,EAAAnB,EAAAmmG,CACAF,GAAA,IAAA9kG,GAAA,EAAA8kG,GAAAA,EAEA,KAAA,GADAx0G,GAAA87D,EAAA5/D,KAAAsuC,IAAAla,GACA7yB,EAAA,EAAAA,EAAA+2G,IAAA/2G,EAAA,CACA,GAAA+2E,GAAAI,GAAAyU,EAAArpF,EAAA,MAIA,IAHA,MAAAuO,EAAAA,EAAAimE,EAAA5xD,KACA4xD,EAAA5xD,KAAArU,EACAvO,EAAA+7F,GAAA1S,EAAA7U,EAAA9kE,EAAAlP,GACAR,EAAA87F,QAAA,MAEA,MAAA97F,IAGA8wG,MAAAlwB,GAAA,SAAAlxE,EAAAlP,GACA,GAAA6oF,GAAAntF,KAEAsuC,EAAAtuC,KAAAsuC,IAAAmqE,KACAx9E,GAAAj7B,KAAA8E,QAAA4K,QAAA4+B,EAAAtmC,QAAAsmC,EAAAysC,IAAAuQ,mBAYA,IAXAh9C,EAAAs6D,mBAAA,SAAA1tB,GACA,GAAAjgD,EACA,MAAAznB,GAAA,EAAA0nE,EAAA9mD,OAAA8mD,EAAAvhD,IACA,IAAA++E,GAAAhgC,GAAAyU,EAAAjS,EAAA56E,KAAA,MACA,OAAA46E,EAAAs9B,aAAAE,EAAAhyF,KAAAw0D,EAAAs9B,YACAC,EAAAlyG,KAAAmyG,EAAAhyF,KACA,IAAAO,GAAA44E,GAAA1S,EAAAurB,EAAAllG,EAAAlP,EAGA,OAFA,QAAAA,GAAA42E,GAAA5sC,EAAAysC,IAAAJ,WACAsH,GAAAkL,EAAA,KAAA1U,GAAA0U,EAAAlmE,EAAA,OAAAnR,IAAA4iG,EAAA5iG,KACAmR,GACAk8E,IACAsV,EAAA93G,OAAA,IAAA,GAAAY,GAAA,EAAAA,EAAA+sC,EAAAysC,IAAAC,OAAAr6E,OAAAY,IACA+sC,EAAAysC,IAAAC,OAAAz5E,GAAAi3G,WAAAC,EAAAl3G,KAIA23F,WAAA,SAAAjyE,GACA,GAAAqnB,GAAAtuC,KAAAsuC,IAAA0kB,EAAAkL,EAAA5vB,EAAArnB,EAAA+rC,MAAA3yD,KACAkE,EAAA0iB,EAAAm2B,GAAA54C,EAAAyiB,EAAAm2B,EACA,IAAA4V,EAAA,CACA,GAAAqH,GAAAr6D,KAAA2/F,UAAA14E,EAAA,YACA,WAAAA,EAAAo4C,QAAA76D,GAAAwuD,EAAAryD,SAAA4D,IAAAC,IAAAD,CAMA,KALA,GAAAo0G,GAAA3lD,EAAAv+B,OAAAlwB,GACAq0G,EAAAx+C,EAAAu+C,EAAAt+C,GACA,SAAAjd,GAAA,MAAAgd,GAAAhd,EAAAid,IACA,KAAA54D,KAAAk3G,GAAA,SAAAv7D,GAAA,MAAA,KAAA37C,KAAA27C,IACA,SAAAA,GAAA,OAAA,KAAA37C,KAAA27C,KAAAgd,EAAAhd,IACA74C,EAAA,GAAAq0G,EAAA5lD,EAAAv+B,OAAAlwB,EAAA,OAAAA,CACA,MAAAC,EAAAwuD,EAAAryD,QAAAi4G,EAAA5lD,EAAAv+B,OAAAjwB,OAAAA,EAEA,MAAA,IAAAgjF,IAAApoB,EAAAn4C,EAAA+rC,KAAAzuD,GAAA66D,EAAAn4C,EAAA+rC,KAAAxuD,KAGAqyG,gBAAA,SAAAvjG,GACA,MAAAA,GAAAA,GAAAtT,KAAAmQ,MAAA0oD,aACA74D,KAAAmQ,MAAA0oD,WAAA74D,KAAAmQ,MAAA0oD,WACAhvC,EAAA7pB,KAAA8E,QAAAm2D,UAAA,wBAEA+hB,GAAAh9E,KAAA8E,QAAAm2D,UAAA,wBAEAqM,GAAAtnE,KAAA,kBAAAA,KAAAA,KAAAmQ,MAAA0oD,aAEArgD,SAAA,WAAA,MAAAxY,MAAA8E,QAAAkU,MAAAmiF,YAAA5iC,KACAy5B,WAAA,WAAA,SAAAhyF,KAAA+mB,QAAA07C,WAAAziE,KAAAsuC,IAAA+/C,WAEA58D,SAAAizD,GAAA,SAAAryE,EAAA6B,GACA,MAAA7B,GAAA,MAAA6B,GAAAguE,GAAAliF,MACA,MAAAqS,IAAArS,KAAA4nE,MAAAxgD,WAAA/U,GACA,MAAA6B,IAAAlU,KAAA4nE,MAAAzgD,UAAAjT,KAEA2kG,cAAA,WACA,GAAAh9C,GAAA77D,KAAA8E,QAAA+2D,QACA,QAAAn1C,KAAAm1C,EAAAz0C,WAAAtR,IAAA+lD,EAAA10C,UACAzb,OAAAmwD,EAAAt/B,aAAAo4C,GAAA30E,MAAAA,KAAA8E,QAAAi4D,UACAtzD,MAAAoyD,EAAAwiB,YAAA1J,GAAA30E,MAAAA,KAAA8E,QAAAk4D,SACAxgC,aAAAq4C,GAAA70E,MAAA+8B,YAAA63C,GAAA50E,QAGAghF,eAAA0D,GAAA,SAAAxJ,EAAAv0D,GAYA,GAXA,MAAAu0D,GACAA,GAAA9mD,KAAAp0B,KAAAsuC,IAAAysC,IAAAJ,UAAAr6E,KAAAq5B,GAAA,MACA,MAAAhT,IAAAA,EAAA3mB,KAAA+mB,QAAAu7D,qBACA,gBAAApH,GACAA,GAAA9mD,KAAAgrC,EAAA8b,EAAA,GAAAvhD,GAAA,MACA,MAAAuhD,EAAA9mD,OACA8mD,GAAA9mD,KAAA8mD,EAAAvhD,GAAA,OAEAuhD,EAAAvhD,KAAAuhD,EAAAvhD,GAAAuhD,EAAA9mD,MACA8mD,EAAAv0D,OAAAA,GAAA,EAEA,MAAAu0D,EAAA9mD,KAAA4+B,KACAkvB,GAAAliF,MACAA,KAAA4nE,MAAAya,YAAAnH,MACA,CACA,GAAAqH,GAAAlB,GAAArhF,MACA0mB,KAAAtc,KAAAkvD,IAAA4hB,EAAA9mD,KAAA1N,KAAAw0D,EAAAvhD,GAAAjT,MACA5Q,IAAA1L,KAAAkvD,IAAA4hB,EAAA9mD,KAAAte,IAAAolE,EAAAvhD,GAAA7jB,KAAAolE,EAAAv0D,OACAkW,MAAAzyB,KAAAC,IAAA6wE,EAAA9mD,KAAAyI,MAAAq+C,EAAAvhD,GAAAkD,OACAyB,OAAAl0B,KAAAC,IAAA6wE,EAAA9mD,KAAAkK,OAAA48C,EAAAvhD,GAAA2E,QAAA48C,EAAAv0D,QAEA3mB,MAAAyxB,SAAA8wD,EAAAn7D,WAAAm7D,EAAAp7D,cAIA2sE,QAAApP,GAAA,SAAAj7E,EAAAiC,GACA,GAAAyhF,GAAAntF,KAEA84G,EAAA,SAAA5uF,GAAA,MAAA,gBAAAA,IAAA,QAAAzoB,KAAA8T,OAAA2U,IAAAA,EAAA,KAAAA,EACA,OAAAzgB,IAAAzJ,KAAA8E,QAAAq8C,QAAA98C,MAAAoF,MAAAqvG,EAAArvG,IACA,MAAAiC,IAAA1L,KAAA8E,QAAAq8C,QAAA98C,MAAAqH,OAAAotG,EAAAptG,IACA1L,KAAA+mB,QAAAy/C,cAAAgR,GAAAx3E,KACA,IAAAikE,GAAAjkE,KAAA8E,QAAAs3D,QACAp8D,MAAAsuC,IAAAgwB,KAAA2F,EAAAjkE,KAAA8E,QAAAu3D,OAAA,SAAArJ,GACA,GAAAA,EAAAnmB,QAAA,IAAA,GAAAtrC,GAAA,EAAAA,EAAAyxD,EAAAnmB,QAAAlsC,OAAAY,IACA,GAAAyxD,EAAAnmB,QAAAtrC,GAAA0yE,UAAA,CAAAmR,GAAA+H,EAAAlpB,EAAA,SAAA,SACAA,IAEAjkE,KAAA4nE,MAAA+N,aAAA,EACArO,GAAAtnE,KAAA,UAAAA,QAGAykF,UAAA,SAAA9gF,GAAA,MAAA6gF,IAAAxkF,KAAA2D,IAEAk8B,QAAA6kD,GAAA,WACA,GAAAijB,GAAA3nG,KAAA8E,QAAAy4D,gBACAqnB,IAAA5kF,MACAA,KAAA4nE,MAAA+N,aAAA,EACA+B,GAAA13E,MACAA,KAAAyxB,SAAAzxB,KAAAsuC,IAAAlnB,WAAApnB,KAAAsuC,IAAAnnB,WACAo2D,GAAAv9E,OACA,MAAA2nG,GAAAv9F,KAAA0yB,IAAA6qE,EAAAjuB,GAAA15E,KAAA8E,UAAA,KACAm1E,GAAAj6E,MACAsnE,GAAAtnE,KAAA,UAAAA,QAGA+4G,QAAAr0B,GAAA,SAAAp2C,GACA,GAAAtmB,GAAAhoB,KAAAsuC,GAQA,OAPAtmB,GAAAk9C,GAAA,KACAykB,GAAA3pF,KAAAsuC,GACAopC,GAAA13E,MACAA,KAAA8E,QAAAkU,MAAAa,QACA7Z,KAAAyxB,SAAA6c,EAAAlnB,WAAAknB,EAAAnnB,WACAnnB,KAAA4nE,MAAAwc,aAAA,EACAzS,GAAA3xE,KAAA,UAAAA,KAAAgoB,GACAA,IAGA2yE,cAAA,WAAA,MAAA36F,MAAA8E,QAAAkU,MAAAmiF,YACA0G,kBAAA,WAAA,MAAA7hG,MAAA8E,QAAAq8C,SACA63D,mBAAA,WAAA,MAAAh5G,MAAA8E,QAAA+2D,UACAo9C,iBAAA,WAAA,MAAAj5G,MAAA8E,QAAA62D,UAEAoM,GAAA9P,GAEAA,EAAAihD,eAAA,SAAAr4G,EAAAgc,EAAAvJ,GACA0jG,EAAAtmG,eAAA7P,KAAAm2G,EAAAn2G,GAAAo3D,EAAAp3D,IAAAg3G,aACAb,EAAAn2G,GAAAgc,GAAAvJ,GAEA2kD,EAAAkhD,qBAAA,SAAAt4G,EAAAgc,EAAAu8F,EAAA9lG,GACA2kD,EAAAihD,eAAAr4G,EAAAgc,EAAAvJ,GACA0jG,EAAAn2G,GAAAg3G,QAAAtxG,MAAAguB,KAAA6kF,EAAAlvF,IAAA5W,MA+FA+lG,GAAA,SAAAn0C,GACAllE,KAAAklE,GAAAA,EACAllE,KAAAs5G,eAAAt5G,KAAAu5G,iBAAAv5G,KAAAw5G,cAAAx5G,KAAAy5G,gBAAA,KACAz5G,KAAA05G,QAAA,GAAA1d,IACAh8F,KAAA25G,UAAA,KACA35G,KAAA45G,aAAA,EACA55G,KAAA65G,eAAA,KAGAR,IAAAzuG,UAAAC,KAAA,SAAA/F,GAgCA,QAAAg1G,GAAA33G,GACA,IAAAolE,GAAArC,EAAA/iE,GAAA,CACA,GAAA+iE,EAAAomB,oBACAmS,IAAAU,UAAA,EAAA99F,KAAA6kE,EAAA6jC,kBACA,OAAA5mG,EAAAtB,MAAAqkE,EAAA2tB,iBAAA,GAAA,KAAA,WACA,CAAA,IAAA3tB,EAAAn+C,QAAAgzF,gBACA,MAEA,IAAA/+B,GAAA8jB,GAAA55B,EACAu4B,KAAAU,UAAA,EAAA99F,KAAA26E,EAAA36E,OACA,OAAA8B,EAAAtB,MACAqkE,EAAAuf,UAAA,WACAvf,EAAA2jC,cAAA7tB,EAAAA,OAAA,EAAA0S,IACAxoB,EAAA2tB,iBAAA,GAAA,KAAA,SAIA,GAAA1wF,EAAAq8F,cAAA,CACAr8F,EAAAq8F,cAAAwb,WACA,IAAA1+F,GAAAqiF,GAAAt9F,KAAAuO,KAAA,KAGA,IADAzM,EAAAq8F,cAAA1L,QAAA,OAAAx3E,GACAnZ,EAAAq8F,cAAA7L,QAAA,SAAAr3E,EAEA,WADAnZ,GAAAie,iBAKA,GAAA65F,GAAA/a,KAAAC,EAAA8a,EAAA5zG,UACA6+D,GAAApgE,QAAAs2D,UAAAp3C,aAAAi2F,EAAA/0C,EAAApgE,QAAAs2D,UAAA/0D,YACA84F,EAAA7rF,MAAAqqF,GAAAt9F,KAAAuO,KAAA,KACA,IAAAsrG,GAAAr6G,SAAAkH,aACAg8F,IAAA5D,GACAj0F,WAAA,WACAg6D,EAAApgE,QAAAs2D,UAAA36D,YAAAw5G,GACAC,EAAA3hG,QACA2hG,GAAAz3E,GAAAzpB,EAAAmhG,wBACA,KApEA,GAAAhtB,GAAAntF,KAEAgZ,EAAAhZ,KAAAklE,EAAAlsD,EAAAksD,GACAziC,EAAAzpB,EAAAypB,IAAA39B,EAAAi2D,OACAkkC,IAAAx8D,EAAAyiC,EAAAn+C,QAAAopC,YAEAzsC,GAAA+e,EAAA,QAAA,SAAAtgC,GACAolE,GAAArC,EAAA/iE,IAAAm8F,GAAAn8F,EAAA+iE,IAEAnJ,IAAA,IAAA7wD,WAAAu5E,GAAAvf,EAAA,WAAA,MAAAioB,GAAAitB,kBAAA,MAGA12F,GAAA+e,EAAA,mBAAA,SAAAtgC,GACAgrF,EAAAwsB,WAAAtpG,KAAAlO,EAAAkO,KAAAhO,MAAA,KAEAqhB,GAAA+e,EAAA,oBAAA,SAAAtgC,GACAgrF,EAAAwsB,YAAAxsB,EAAAwsB,WAAAtpG,KAAAlO,EAAAkO,KAAAhO,MAAA,MAEAqhB,GAAA+e,EAAA,iBAAA,SAAAtgC,GACAgrF,EAAAwsB,YACAx3G,EAAAkO,MAAA88E,EAAAwsB,UAAAtpG,MAAA88E,EAAAktB,kBACAltB,EAAAwsB,UAAAt3G,MAAA,KAIAqhB,GAAA+e,EAAA,aAAA,WAAA,MAAAzpB,GAAAshG,wBAEA52F,GAAA+e,EAAA,QAAA,WACA0qD,EAAAwsB,WAAAxsB,EAAAktB,oBA0CA32F,GAAA+e,EAAA,OAAAq3E,GACAp2F,GAAA+e,EAAA,MAAAq3E,IAGAT,GAAAzuG,UAAA8vE,iBAAA,WACA,GAAAv6D,GAAAu6D,GAAA16E,KAAAklE,IAAA,EAEA,OADA/kD,GAAA5H,MAAAvY,KAAAklE,GAAA/0D,MAAAssE,QACAt8D,GAGAk5F,GAAAzuG,UAAA6vE,cAAA,SAAA7kC,EAAAquC,GACAruC,GAAA51C,KAAAklE,GAAApgE,QAAAsd,KAAAzhB,UACAi1C,EAAAr9B,OAAA0rE,IAAAjkF,KAAAm6G,uBACAn6G,KAAAu6G,uBAAA3kE,KAGAyjE,GAAAzuG,UAAAuvG,qBAAA,WACA,GAAAp/B,GAAAh7E,OAAAgzF,eAAA7tB,EAAAllE,KAAAklE,GAAAoiB,EAAApiB,EAAA52B,IAAAysC,IAAAJ,UACAvmD,EAAAkzD,EAAAlzD,OAAAuF,EAAA2tD,EAAA3tD,IAEA,IAAAurC,EAAApgE,QAAAu3D,QAAA6I,EAAApgE,QAAAs3D,UAAAhoC,EAAA4+B,MAAAkS,EAAApgE,QAAAu3D,QAAA1iC,EAAAq5B,KAAAkS,EAAApgE,QAAAs3D,SAEA,WADA2e,GAAAy/B,iBAIA,IAAAC,GAAA3Z,GAAA57B,EAAA6V,EAAA2/B,WAAA3/B,EAAA4/B,cACAC,EAAA9Z,GAAA57B,EAAA6V,EAAA8/B,UAAA9/B,EAAA+/B,YACA,KAAAL,GAAAA,EAAApa,MAAAua,GAAAA,EAAAva,KACA,GAAA/gC,EAAAI,EAAA+6C,EAAAG,GAAAxmF,IACA,GAAAkrC,EAAAG,EAAAg7C,EAAAG,GAAAjhF,GAFA,CAKA,GAAAvX,GAAA8iD,EAAApgE,QAAAsd,KACA7d,EAAA6vB,EAAA4+B,MAAAkS,EAAApgE,QAAAs3D,UAAA4jC,GAAA96B,EAAA9wC,KACA4kB,KAAA52B,EAAA,GAAA84C,QAAAtyD,IAAA,GAAAqoB,OAAA,GACAzsB,EAAAm1B,EAAAq5B,KAAAkS,EAAApgE,QAAAu3D,QAAA2jC,GAAA96B,EAAAvrC,EACA,KAAAn1B,EAAA,CACA,GAAA02D,GAAA94C,EAAAA,EAAAzhB,OAAA,GAAAu6D,QACAmM,EAAAnM,EAAA4T,KAAA5T,EAAA4T,KAAA5T,EAAA4T,KAAAnuE,OAAA,GAAAu6D,EAAAtyD,GACApE,IAAAw0C,KAAAquB,EAAAA,EAAA1mE,OAAA,GAAAswB,OAAAo2C,EAAAA,EAAA1mE,OAAA,GAAA0mE,EAAAA,EAAA1mE,OAAA,IAGA,IAAA4D,IAAAC,EAEA,WADAu2E,GAAAy/B,iBAIA,IAAAO,GAAA/yF,EAAA+yD,EAAAigC,YAAAjgC,EAAAkgC,WAAA,EACA,KAAAF,EAAA9yD,GAAA1jD,EAAAy0C,KAAAz0C,EAAA0sB,OAAAzsB,EAAAysB,OAAAzsB,EAAAw0C,MACA,MAAA72C,IACA44G,KACA9+C,IAAAiJ,EAAA/0D,MAAAssE,SACA1B,EAAA9/C,SAAA12B,EAAAy0C,KAAAz0C,EAAA0sB,QACA8pF,EAAAl3C,YACAkX,EAAAy/B,kBACAz/B,EAAAmgC,SAAAH,MAGAhgC,EAAAy/B,kBACAz/B,EAAAmgC,SAAAH,IAEA/yF,GAAA,MAAA+yD,EAAA2/B,WAAA3/B,EAAAmgC,SAAAlzF,GACAi0C,IAAAj8D,KAAAm7G,oBAEAn7G,KAAAo7G,sBAGA/B,GAAAzuG,UAAAuwG,iBAAA,WACA,GAAAhuB,GAAAntF,IAEA8oB,cAAA9oB,KAAA45G,aACA55G,KAAA45G,YAAA1uG,WAAA,WACAiiF,EAAAysB,aAAA,EACAzsB,EAAAtK,oBACAsK,EAAAjoB,GAAAuf,UAAA,WAAA,MAAA0I,GAAAjoB,GAAA0C,MAAAib,kBAAA,KACA,KAGAw2B,GAAAzuG,UAAA2vG,uBAAA,SAAA3kE,GACAwiB,EAAAp4D,KAAAklE,GAAApgE,QAAAm2D,UAAArlB,EAAAilC,SACAziB,EAAAp4D,KAAAklE,GAAApgE,QAAAk2D,aAAAplB,EAAAsS,YAGAmxD,GAAAzuG,UAAAwwG,kBAAA,WACA,GAAArgC,GAAAh7E,OAAAgzF,cACA/yF,MAAAs5G,eAAAv+B,EAAA2/B,WAAA16G,KAAAu5G,iBAAAx+B,EAAA4/B,aACA36G,KAAAw5G,cAAAz+B,EAAA8/B,UAAA76G,KAAAy5G,gBAAA1+B,EAAA+/B,aAGAzB,GAAAzuG,UAAAywG,kBAAA,WACA,GAAAtgC,GAAAh7E,OAAAgzF,cACA,KAAAhY,EAAAigC,WAAA,OAAA,CACA,IAAAhiE,GAAA+hC,EAAAkgC,WAAA,GAAAK,uBACA,OAAA50G,GAAA1G,KAAAyiC,IAAAuW,IAGAqgE,GAAAzuG,UAAA2N,MAAA,WACA,YAAAvY,KAAAklE,GAAAn+C,QAAA07C,WACAziE,KAAAq7G,qBACAr7G,KAAAy6E,cAAAz6E,KAAA06E,oBAAA,GACA16E,KAAAyiC,IAAAlqB,UAGA8gG,GAAAzuG,UAAAmW,KAAA,WAAA/gB,KAAAyiC,IAAA1hB,QACAs4F,GAAAzuG,UAAAuwF,SAAA,WAAA,MAAAn7F,MAAAyiC,KAEA42E,GAAAzuG,UAAAysF,cAAA,WAAA,OAAA,GAEAgiB,GAAAzuG,UAAAmyE,cAAA,WAOA,QAAAw+B,KACAviG,EAAAksD,GAAA/0D,MAAAssE,UACAzjE,EAAAwiG,gBACAxiG,EAAA0gG,QAAAj2G,IAAAuV,EAAAksD,GAAAn+C,QAAA00F,aAAAF,IATA,GAAAviG,GAAAhZ,IACAA,MAAAq7G,oBACAr7G,KAAAw7G,gBAEAh3B,GAAAxkF,KAAAklE,GAAA,WAAA,MAAAlsD,GAAAksD,GAAA0C,MAAAib,kBAAA,IAQA7iF,KAAA05G,QAAAj2G,IAAAzD,KAAAklE,GAAAn+C,QAAA00F,aAAAF,IAGAlC,GAAAzuG,UAAAi4E,iBAAA,WACA,GAAA9H,GAAAh7E,OAAAgzF,cACA,OAAAhY,GAAA2/B,YAAA16G,KAAAs5G,gBAAAv+B,EAAA4/B,cAAA36G,KAAAu5G,kBACAx+B,EAAA8/B,WAAA76G,KAAAw5G,eAAAz+B,EAAA+/B,aAAA96G,KAAAy5G,iBAGAJ,GAAAzuG,UAAA4wG,cAAA,WACA,GAAA,MAAAx7G,KAAA65G,iBAAA75G,KAAA45G,aAAA55G,KAAA6iF,mBAAA,CACA,GAAA9H,GAAAh7E,OAAAgzF,eAAA7tB,EAAAllE,KAAAklE,EAOA,IAAA2S,IAAAD,IAAA53E,KAAAklE,GAAAn+C,QAAA40C,QAAAh7D,QAAAu/F,GAAAnlB,EAAA2/B,YAIA,MAHA16G,MAAAklE,GAAAizC,kBAAAt3G,KAAA,UAAA2hB,QAAA,EAAApC,eAAAhW,KAAA0yB,MACA98B,KAAA+gB,WACA/gB,MAAAuY,OAGA,KAAAvY,KAAA25G,UAAA,CACA35G,KAAAo7G,mBACA,IAAAnlD,GAAA6qC,GAAA57B,EAAA6V,EAAA2/B,WAAA3/B,EAAA4/B,cACAr6G,EAAAwgG,GAAA57B,EAAA6V,EAAA8/B,UAAA9/B,EAAA+/B,YACA7kD,IAAA31D,GAAAkkF,GAAAtf,EAAA,WACA0nB,GAAA1nB,EAAA52B,IAAAo5C,GAAAzxB,EAAA31D,GAAAotF,KACAz3B,EAAAoqC,KAAA//F,EAAA+/F,OAAAn7B,EAAA0C,MAAAib,kBAAA,QAIAw2B,GAAAzuG,UAAA8wG,YAAA,WACA,MAAA17G,KAAA65G,iBACA/wF,aAAA9oB,KAAA65G,gBACA75G,KAAA65G,eAAA,KAGA,IAAA30C,GAAAllE,KAAAklE,GAAApgE,EAAAogE,EAAApgE,QAAAi2E,EAAA7V,EAAA52B,IAAAysC,IAAAJ,UACAvmD,EAAA2mD,EAAA3mD,OAAAuF,EAAAohD,EAAAphD,IAKA,IAJA,GAAAvF,EAAAgpB,IAAAhpB,EAAA4+B,KAAAkS,EAAA0jB,cACAx0D,EAAAgrC,EAAAhrC,EAAA4+B,KAAA,EAAAkL,EAAAgH,EAAA52B,IAAAla,EAAA4+B,KAAA,GAAAryD,SACAg5B,EAAAyjB,IAAA8gB,EAAAgH,EAAA52B,IAAA3U,EAAAq5B,MAAA3yD,KAAAM,QAAAg5B,EAAAq5B,KAAAkS,EAAAR,aACA/qC,EAAAylC,EAAAzlC,EAAAq5B,KAAA,EAAA,IACA5+B,EAAA4+B,KAAAluD,EAAAs3D,UAAAziC,EAAAq5B,KAAAluD,EAAAu3D,OAAA,EAAA,OAAA,CAEA,IAAAs/C,GAAAx/B,EAAAy/B,CACAxnF,GAAA4+B,MAAAluD,EAAAs3D,UAAA,IAAAu/C,EAAAlmC,GAAAvQ,EAAA9wC,EAAA4+B,QACAmpB,EAAAzd,EAAA55D,EAAAsd,KAAA,GAAA4wC,MACA4oD,EAAA92G,EAAAsd,KAAA,GAAA42B,OAEAmjC,EAAAzd,EAAA55D,EAAAsd,KAAAu5F,GAAA3oD,MACA4oD,EAAA92G,EAAAsd,KAAAu5F,EAAA,GAAA3iE,KAAA/lC,YAEA,IACAmpE,GAAAy/B,EADAC,EAAArmC,GAAAvQ,EAAAvrC,EAAAq5B,KAUA,IARA8oD,GAAAh3G,EAAAsd,KAAAzhB,OAAA,GACAy7E,EAAAt3E,EAAAu3D,OAAA,EACAw/C,EAAA/2G,EAAAi2D,QAAA50D,YAEAi2E,EAAA1d,EAAA55D,EAAAsd,KAAA05F,EAAA,GAAA9oD,MAAA,EACA6oD,EAAA/2G,EAAAsd,KAAA05F,EAAA,GAAA9iE,KAAAooD,kBAGAwa,EAAA,OAAA,CAGA,KAFA,GAAAG,GAAA72C,EAAA52B,IAAAshD,WAAA0Q,GAAAp7B,EAAA02C,EAAAC,EAAA1/B,EAAAC,IACA4/B,EAAA39C,EAAA6G,EAAA52B,IAAA8wB,EAAA+c,EAAA,GAAA/c,EAAAgd,EAAAle,EAAAgH,EAAA52B,IAAA8tC,GAAA/7E,KAAAM,SACAo7G,EAAAp7G,OAAA,GAAAq7G,EAAAr7G,OAAA,GACA,GAAA84D,EAAAsiD,IAAAtiD,EAAAuiD,GAAAD,EAAAznG,MAAA0nG,EAAA1nG,MAAA8nE,QACA,CAAA,GAAA2/B,EAAA,IAAAC,EAAA,GACA,KADAD,GAAArsG,QAAAssG,EAAAtsG,QAAAysE,IAMA,IAFA,GAAA8/B,GAAA,EAAAC,EAAA,EACAr6B,EAAAk6B,EAAA,GAAAI,EAAAH,EAAA,GAAAI,EAAAhyG,KAAAkvD,IAAAuoB,EAAAlhF,OAAAw7G,EAAAx7G,QACAs7G,EAAAG,GAAAv6B,EAAApsE,WAAAwmG,IAAAE,EAAA1mG,WAAAwmG,MACAA,CAIA,KAHA,GAAAI,GAAA5iD,EAAAsiD,GAAAO,EAAA7iD,EAAAuiD,GACAO,EAAAnyG,KAAAkvD,IAAA+iD,EAAA17G,QAAA,GAAAo7G,EAAAp7G,OAAAs7G,EAAA,GACAK,EAAA37G,QAAA,GAAAq7G,EAAAr7G,OAAAs7G,EAAA,IACAC,EAAAK,GACAF,EAAA5mG,WAAA4mG,EAAA17G,OAAAu7G,EAAA,IAAAI,EAAA7mG,WAAA6mG,EAAA37G,OAAAu7G,EAAA,MACAA,CAEA,IAAA,GAAAH,EAAAp7G,QAAA,GAAAq7G,EAAAr7G,QAAAw7E,GAAA/nD,EAAA4+B,KACA,KAAAipD,GAAAA,EAAA7nF,EAAAgpB,IACAi/D,EAAA5mG,WAAA4mG,EAAA17G,OAAAu7G,EAAA,IAAAI,EAAA7mG,WAAA6mG,EAAA37G,OAAAu7G,EAAA,IACAD,IACAC,GAIAH,GAAAA,EAAAp7G,OAAA,GAAA07G,EAAA55G,MAAA,EAAA45G,EAAA17G,OAAAu7G,GAAA74G,QAAA,WAAA,IACA04G,EAAA,GAAAA,EAAA,GAAAt5G,MAAAw5G,GAAA54G,QAAA,WAAA,GAEA,IAAAm5G,GAAAp9C,EAAA+c,EAAA8/B,GACAQ,EAAAr9C,EAAAgd,EAAA4/B,EAAAr7G,OAAA84D,EAAAuiD,GAAAr7G,OAAAu7G,EAAA,EACA,OAAAH,GAAAp7G,OAAA,GAAAo7G,EAAA,IAAAz8C,EAAAk9C,EAAAC,IACA9sB,GAAAzqB,EAAA52B,IAAAytE,EAAAS,EAAAC,EAAA,WACA,GAFA,QAMApD,GAAAzuG,UAAAmrF,aAAA,WACA/1F,KAAAs6G,uBAEAjB,GAAAzuG,UAAAiP,MAAA,WACA7Z,KAAAs6G,uBAEAjB,GAAAzuG,UAAA0vG,oBAAA,WACAt6G,KAAA25G,YACA7wF,aAAA9oB,KAAA65G,gBACA75G,KAAA25G,UAAA,KACA35G,KAAAo6G,gBACAp6G,KAAAyiC,IAAA1hB,OACA/gB,KAAAyiC,IAAAlqB,UAEA8gG,GAAAzuG,UAAAyvG,gBAAA,WACA,GAAAltB,GAAAntF,IAEA,OAAAA,KAAA65G,iBACA75G,KAAA65G,eAAA3uG,WAAA,WAEA,GADAiiF,EAAA0sB,eAAA,KACA1sB,EAAAwsB,UAAA,CACA,IAAAxsB,EAAAwsB,UAAAt3G,KACA,MADA8qF,GAAAwsB,UAAA,KAGAxsB,EAAAitB,iBACA,MAGAf,GAAAzuG,UAAAwvG,cAAA,WACA,GAAAjtB,GAAAntF,MAEAA,KAAAklE,GAAA8sB,cAAAhyF,KAAA07G,eACAl3B,GAAAxkF,KAAAklE,GAAA,WAAA,MAAA0f,IAAAuI,EAAAjoB,OAGAm0C,GAAAzuG,UAAAslE,cAAA,SAAAl3B,GACAA,EAAA0jE,gBAAA,SAGArD,GAAAzuG,UAAAusF,WAAA,SAAAh1F,GACA,GAAAA,EAAAmgB,WACAngB,EAAAie,iBACApgB,KAAAklE,GAAA8sB,cACAvN,GAAAzkF,KAAAklE,GAAA04B,IAAA59F,KAAAklE,GAAA3vD,OAAAC,aAAA,MAAArT,EAAAmgB,SAAAngB,EAAAqgB,QAAArgB,EAAAmgB,UAAA,KAGA+2F,GAAAzuG,UAAAowF,gBAAA,SAAA9wE,GACAlqB,KAAAyiC,IAAAi6E,gBAAAnnG,OAAA,YAAA2U,IAGAmvF,GAAAzuG,UAAA+sF,cAAA,aACA0hB,GAAAzuG,UAAAswF,cAAA,aAEAme,GAAAzuG,UAAAqlE,uBAAA,CAqJA,IAAA0sC,IAAA,SAAAz3C,GACAllE,KAAAklE,GAAAA,EAEAllE,KAAA48G,UAAA,GAKA58G,KAAA68G,aAAA,EAEA78G,KAAA05G,QAAA,GAAA1d,IAGAh8F,KAAA88G,qBAAA,EAEA98G,KAAA4kG,cAAA,EACA5kG,KAAA25G,UAAA,KAGAgD,IAAA/xG,UAAAC,KAAA,SAAA/F,GA2BA,QAAAi4G,GAAA56G,GACA,IAAAolE,GAAArC,EAAA/iE,GAAA,CACA,GAAA+iE,EAAAomB,oBACAmS,IAAAU,UAAA,EAAA99F,KAAA6kE,EAAA6jC,kBACA/vF,EAAA8jG,sBACA9jG,EAAA4jG,UAAA,GACA5jG,EAAA8jG,qBAAA,EACA3d,EAAA7rF,MAAAqqF,GAAAt9F,KAAAuO,KAAA,MACAm0F,GAAA5D,QAEA,CAAA,IAAAj6B,EAAAn+C,QAAAgzF,gBACA,MAEA,IAAA/+B,GAAA8jB,GAAA55B,EACAu4B,KAAAU,UAAA,EAAA99F,KAAA26E,EAAA36E,OACA,OAAA8B,EAAAtB,KACAqkE,EAAA2jC,cAAA7tB,EAAAA,OAAA,KAAA0S,KAEA10E,EAAA4jG,UAAA,GACAzd,EAAA7rF,MAAA0nE,EAAA36E,KAAAuO,KAAA,MACAm0F,GAAA5D,IAGA,OAAAh9F,EAAAtB,OAAAqkE,EAAA/0D,MAAA4rF,aAAA,IAjDA,GAAA5O,GAAAntF,KAEAgZ,EAAAhZ,KAAAklE,EAAAllE,KAAAklE,GAGAziC,EAAAziC,KAAAmhD,QAAA+9C,KAGAC,EAAAn/F,KAAAupC,SAAA9G,EAAAp8B,UACAvB,GAAAq8C,QAAAn9B,aAAAye,EAAA39B,EAAAq8C,QAAA96C,YAGA+4F,KAAAD,EAAA96F,MAAAoF,MAAA,OAEAia,GAAAy7E,EAAA,QAAA,WACArjC,IAAAC,IAAA,GAAAoxB,EAAAyX,eAAAzX,EAAAyX,aAAA,MACA5rF,EAAAuiG,SAGA73F,GAAAy7E,EAAA,QAAA,SAAAh9F,GACAolE,GAAArC,EAAA/iE,IAAAm8F,GAAAn8F,EAAA+iE,KAEAA,EAAA/0D,MAAA2rF,eAAA,EACA9iF,EAAAgkG,cA4BAt5F,GAAAy7E,EAAA,MAAA4d,GACAr5F,GAAAy7E,EAAA,OAAA4d,GAEAr5F,GAAA5e,EAAA+2D,SAAA,QAAA,SAAA15D,GACAmyE,GAAAxvE,EAAA3C,IAAAolE,GAAArC,EAAA/iE,KACA+iE,EAAA/0D,MAAA2rF,eAAA,EACA9iF,EAAAT,WAIAmL,GAAA5e,EAAAs2D,UAAA,cAAA,SAAAj5D,GACAmyE,GAAAxvE,EAAA3C,IAAA8lE,GAAA9lE,KAGAuhB,GAAAy7E,EAAA,mBAAA,WACA,GAAA56F,GAAA2gE,EAAAkd,UAAA,OACAppE,GAAA2gG,WAAA3gG,EAAA2gG,UAAA1xD,MAAAjoB,QACAhnB,EAAA2gG,WACAp1G,MAAAA,EACA0jD,MAAAid,EAAAurB,SAAAlsF,EAAA2gE,EAAAkd,UAAA,OAAAlsE,UAAA,4BAGAwN,GAAAy7E,EAAA,iBAAA,WACAnmF,EAAA2gG,YACA3gG,EAAAuiG,OACAviG,EAAA2gG,UAAA1xD,MAAAjoB,QACAhnB,EAAA2gG,UAAA,SAKAgD,GAAA/xG,UAAA8vE,iBAAA,WAEA,GAAAxV,GAAAllE,KAAAklE,GAAApgE,EAAAogE,EAAApgE,QAAAwpC,EAAA42B,EAAA52B,IACAnuB,EAAAu6D,GAAAxV,EAGA,IAAAA,EAAAn+C,QAAAk2F,oBAAA,CACA,GAAAvE,GAAAhgC,GAAAxT,EAAA52B,EAAAysC,IAAAJ,UAAAr6E,KAAA,OACA48G,EAAAp4G,EAAAq8C,QAAA16B,wBAAA02F,EAAAr4G,EAAAi2D,QAAAt0C,uBACAtG,GAAAi9F,MAAAhzG,KAAAC,IAAA,EAAAD,KAAAkvD,IAAAx0D,EAAAq8C,QAAA3kB,aAAA,GACAk8E,EAAA5iG,IAAAqnG,EAAArnG,IAAAonG,EAAApnG,MACAqK,EAAAk9F,OAAAjzG,KAAAC,IAAA,EAAAD,KAAAkvD,IAAAx0D,EAAAq8C,QAAApkB,YAAA,GACA27E,EAAAhyF,KAAAy2F,EAAAz2F,KAAAw2F,EAAAx2F,OAGA,MAAAvG,IAGAw8F,GAAA/xG,UAAA6vE,cAAA,SAAA6iC,GACA,GAAAp4C,GAAAllE,KAAAklE,GAAApgE,EAAAogE,EAAApgE,OACAszD,GAAAtzD,EAAAm2D,UAAAqiD,EAAAziC,SACAziB,EAAAtzD,EAAAk2D,aAAAsiD,EAAAp1D,WACA,MAAAo1D,EAAAF,QACAp9G,KAAAmhD,QAAA98C,MAAAyR,IAAAwnG,EAAAF,MAAA,KACAp9G,KAAAmhD,QAAA98C,MAAAqiB,KAAA42F,EAAAD,OAAA,OAMAV,GAAA/xG,UAAAiP,MAAA,SAAA8oE,GACA,IAAA3iF,KAAAu9G,mBAAA,CACA,GAAAC,GAAA5kG,EAAAssD,EAAAllE,KAAAklE,GAAA52B,EAAA42B,EAAA52B,GACA,IAAA42B,EAAAomB,oBAAA,CACAtrF,KAAA48G,UAAA,EACA,IAAA1hC,GAAA5sC,EAAAysC,IAAAJ,SACA6iC,GAAAzmB,KACA7b,EAAAvhD,KAAAq5B,KAAAkoB,EAAA9mD,OAAA4+B,KAAA,MAAAp6C,EAAAssD,EAAA6tB,gBAAApyF,OAAA,IACA,IAAA2a,GAAAkiG,EAAA,IAAA5kG,GAAAssD,EAAA6tB,cACA/yF,MAAAupC,SAAAj2B,MAAAgI,EACA4pD,EAAA/0D,MAAAssE,SAAAsmB,GAAA/iG,KAAAupC,UACAuyB,IAAAC,IAAA,IAAA/7D,KAAA4kG,aAAAtpF,OACAqnE,KACA3iF,KAAA48G,UAAA58G,KAAAupC,SAAAj2B,MAAA,GACAwoD,IAAAC,IAAA,IAAA/7D,KAAA4kG,aAAA,MAEA5kG,MAAA88G,oBAAAU,IAGAb,GAAA/xG,UAAAuwF,SAAA,WAAA,MAAAn7F,MAAAupC,UAEAozE,GAAA/xG,UAAAysF,cAAA,WAAA,OAAA,GAEAslB,GAAA/xG,UAAA2N,MAAA,WACA,GAAA,YAAAvY,KAAAklE,GAAAn+C,QAAA07C,YAAAvG,IAAA3D,KAAAv4D,KAAAupC,UACA,IAAAvpC,KAAAupC,SAAAhxB,QACA,MAAApW,MAIAw6G,GAAA/xG,UAAAmW,KAAA,WAAA/gB,KAAAupC,SAAAxoB,QAEA47F,GAAA/xG,UAAAswF,cAAA,WACAl7F,KAAAmhD,QAAA98C,MAAAyR,IAAA9V,KAAAmhD,QAAA98C,MAAAqiB,KAAA,GAGAi2F,GAAA/xG,UAAAmyE,cAAA,WAAA/8E,KAAAy9G,YAIAd,GAAA/xG,UAAA6yG,SAAA,WACA,GAAAtwB,GAAAntF,IAEAA,MAAA68G,aACA78G,KAAA05G,QAAAj2G,IAAAzD,KAAAklE,GAAAn+C,QAAA00F,aAAA,WACAtuB,EAAAouB,OACApuB,EAAAjoB,GAAA/0D,MAAAssE,SAAA0Q,EAAAswB,cAOAd,GAAA/xG,UAAAoyG,SAAA,WAGA,QAAA/8G,KACA,GAAAihF,GAAAloE,EAAAuiG,MACAr6B,IAAAw8B,GACA1kG,EAAA6jG,aAAA,EAAA7jG,EAAAykG,aADAC,GAAA,EAAA1kG,EAAA0gG,QAAAj2G,IAAA,GAAAxD,IAJA,GAAAy9G,IAAA,EAAA1kG,EAAAhZ,IACAgZ,GAAA6jG,aAAA,EAMA7jG,EAAA0gG,QAAAj2G,IAAA,GAAAxD,IASA08G,GAAA/xG,UAAA2wG,KAAA,WACA,GAAApuB,GAAAntF,KAEAklE,EAAAllE,KAAAklE,GAAAlsD,EAAAhZ,KAAAupC,SAAAqzE,EAAA58G,KAAA48G,SAKA,IAAA58G,KAAAu9G,qBAAAr4C,EAAA/0D,MAAAssE,SACAmoB,GAAA5rF,KAAA4jG,IAAA58G,KAAA25G,WACAz0C,EAAA8sB,cAAA9sB,EAAAn+C,QAAA03E,cAAAv5B,EAAA/0D,MAAAomF,OACA,OAAA,CAEA,IAAAl2F,GAAA2Y,EAAA1F,KAEA,IAAAjT,GAAAu8G,IAAA13C,EAAAomB,oBAAA,OAAA,CAIA,IAAAxvB,IAAAC,IAAA,GAAA/7D,KAAA4kG,eAAAvkG,GACAkoE,IAAA,kBAAA9mE,KAAApB,GAEA,MADA6kE,GAAApgE,QAAAkU,MAAAa,SACA,CAGA,IAAAqrD,EAAA52B,IAAAysC,KAAA7V,EAAApgE,QAAAk5D,kBAAA,CACA,GAAA5sD,GAAA/Q,EAAAoV,WAAA,EAEA,IADA,MAAArE,GAAAwrG,IAAAA,EAAA,KACA,MAAAxrG,EAAA,MAAApR,MAAA6Z,QAAA7Z,KAAAklE,GAAAsxC,YAAA,QAIA,IADA,GAAAmH,GAAA,EAAAn4G,EAAA4E,KAAAkvD,IAAAsjD,EAAAj8G,OAAAN,EAAAM,QACAg9G,EAAAn4G,GAAAo3G,EAAAnnG,WAAAkoG,IAAAt9G,EAAAoV,WAAAkoG,MAAAA,CAgBA,OAdAn5B,IAAAtf,EAAA,WACA04B,GAAA14B,EAAA7kE,EAAAoC,MAAAk7G,GAAAf,EAAAj8G,OAAAg9G,EACA,KAAAxwB,EAAAwsB,UAAA,WAAA;AAGAt5G,EAAAM,OAAA,KAAAN,EAAAmQ,QAAA,OAAA,EAAAwI,EAAA1F,MAAA65E,EAAAyvB,UAAA,GACAzvB,EAAAyvB,UAAAv8G,EAEA8sF,EAAAwsB,YACAxsB,EAAAwsB,UAAA1xD,MAAAjoB,QACAmtD,EAAAwsB,UAAA1xD,MAAAid,EAAAurB,SAAAtD,EAAAwsB,UAAAp1G,MAAA2gE,EAAAkd,UAAA,OACAlsE,UAAA,6BAGA,GAGAymG,GAAA/xG,UAAAmrF,aAAA,WACA/1F,KAAA68G,aAAA78G,KAAAu7G,SAAAv7G,KAAA68G,aAAA,IAGAF,GAAA/xG,UAAAusF,WAAA,WACAr7B,IAAAC,IAAA,IAAA/7D,KAAA4kG,aAAA,MACA5kG,KAAAg9G,YAGAL,GAAA/xG,UAAA+sF,cAAA,SAAAx1F,GA6BA,QAAAy7G,KACA,GAAA,MAAAze,EAAAn3C,eAAA,CACA,GAAApvC,GAAAssD,EAAAomB,oBACAuyB,EAAA,KAAAjlG,EAAAumF,EAAA7rF,MAAA,GACA6rF,GAAA7rF,MAAA,IACA6rF,EAAA7rF,MAAAuqG,EACA7kG,EAAA4jG,UAAAhkG,EAAA,GAAA,IACAumF,EAAAn3C,eAAA,EAAAm3C,EAAA6D,aAAA6a,EAAAl9G,OAGAmE,EAAAk5D,kBAAAkH,EAAA52B,IAAAysC,KAGA,QAAA+iC,KAOA,GANA9kG,EAAAukG,oBAAA,EACAvkG,EAAAmoC,QAAA98C,MAAAsgB,QAAAo5F,EACA5e,EAAA96F,MAAAsgB,QAAAq5F,EACAliD,IAAAC,GAAA,GAAAj3D,EAAAm5E,WAAAF,aAAAj5E,EAAA+2D,SAAA10C,UAAAi6D,GAGA,MAAA+d,EAAAn3C,eAAA,GACA8T,IAAAA,IAAAC,GAAA,IAAA6hD,GACA,IAAAr8G,GAAA,EAAAg6G,EAAA,WACAz2G,EAAAk5D,mBAAAkH,EAAA52B,IAAAysC,KAAA,GAAAokB,EAAAn3C,gBACAm3C,EAAA6D,aAAA,GAAA,KAAAhqF,EAAA4jG,UACAn4B,GAAAvf,EAAAopB,IAAAppB,GACA3jE,IAAA,GACAuD,EAAAm5G,mBAAA/yG,WAAAqwG,EAAA,MAEAz2G,EAAAk5D,kBAAA,KACAl5D,EAAAkU,MAAAa,SAGA/U,GAAAm5G,mBAAA/yG,WAAAqwG,EAAA,MA7DA,GAAAviG,GAAAhZ,KAAAklE,EAAAlsD,EAAAksD,GAAApgE,EAAAogE,EAAApgE,QAAAq6F,EAAAnmF,EAAAuwB,SACAtiB,EAAAkzD,GAAAjV,EAAA/iE,GAAAi/E,EAAAt8E,EAAA+2D,SAAA10C,SACA,IAAAF,IAAAo4D,GAAA,CAIA,GAAAxlE,GAAAqrD,EAAAn+C,QAAAm3F,2BACArkG,IAAAqrD,EAAA52B,IAAAysC,IAAAr0E,SAAAugB,KAAA,GACAw9D,GAAAvf,EAAA0nB,IAAA1nB,EAAA52B,IAAAo5C,GAAAzgE,GAAAymE,GAEA,IAAAswB,GAAA7e,EAAA96F,MAAAsgB,QAAAo5F,EAAA/kG,EAAAmoC,QAAA98C,MAAAsgB,OACA3L,GAAAmoC,QAAA98C,MAAAsgB,QAAA,oBACA,IAAAw5F,GAAAnlG,EAAAmoC,QAAA16B,uBACA04E,GAAA96F,MAAAsgB,QAAA,+DAAAxiB,EAAAwgB,QAAAw7F,EAAAroG,IAAA,GAAA,cAAA3T,EAAAugB,QAAAy7F,EAAAz3F,KAAA,GAAA,0CAAAo1C,GAAA,2BAAA,eAAA,mHACA,IAAAsiD,EAoDA,IAnDApiD,KAAAoiD,EAAAr+G,OAAAs+G,SACAv5G,EAAAkU,MAAAT,QACAyjD,IAAAj8D,OAAA0xB,SAAA,KAAA2sF,GACAt5G,EAAAkU,MAAAa,QAEAqrD,EAAAomB,sBAAA6T,EAAA7rF,MAAA0F,EAAA4jG,UAAA,KACA5jG,EAAAukG,oBAAA,EACAz4G,EAAAk5D,kBAAAkH,EAAA52B,IAAAysC,IACAjyD,aAAAhkB,EAAAm5G,oBA0CAniD,IAAAC,IAAA,GAAA6hD,IACAlmB,GAAA,CACAvvB,GAAAhmE,EACA,IAAAm8G,GAAA,WACAr3G,GAAAlH,OAAA,UAAAu+G,GACApzG,WAAA4yG,EAAA,IAEAp6F,IAAA3jB,OAAA,UAAAu+G,OAEApzG,YAAA4yG,EAAA,MAIAnB,GAAA/xG,UAAAowF,gBAAA,SAAA9wE,GACAA,GAAAlqB,KAAA6Z,SAGA8iG,GAAA/xG,UAAAslE,cAAA,aAEAysC,GAAA/xG,UAAAqlE,uBAAA,EAyGAiqB,GAAAwB,IAEAqb,GAAArb,GAGA,IAAA6iB,IAAA,gDAAAruG,MAAA,IACA,KAAA,GAAA4W,MAAA60E,IAAA/wF,UAAA+wF,GAAA/wF,UAAA8F,eAAAoW,KAAAtW,EAAA+tG,GAAAz3F,IAAA,IACA40E,GAAA9wF,UAAAkc,IAAA,SAAAiH,GACA,MAAA,YAAA,MAAAA,GAAAvrB,MAAAxC,KAAAsuC,IAAApnC,aACAy0F,GAAA/wF,UAAAkc,KAuCA,OArCAihD,IAAA4zB,IAIAD,GAAAE,aAAAryD,SAAAozE,GAAA6B,gBAAAnF,IAOA3d,GAAAvyB,WAAA,SAAAtsD,GACA6+E,GAAAloE,SAAAi/B,MAAA,QAAA51C,IAAA6+E,GAAAloE,SAAAi/B,KAAA51C,GACAssD,GAAA3mE,MAAAxC,KAAAkH,YAGAw0F,GAAApyB,WAAAA,GAGAoyB,GAAAvyB,WAAA,OAAA,WAAA,OAAAntB,MAAA,SAAAowB,GAAA,MAAAA,GAAAm5B,gBACA7J,GAAApyB,WAAA,aAAA,QAIAoyB,GAAA+iB,gBAAA,SAAA5hG,EAAA86B,GACA+jD,GAAA9wF,UAAAiS,GAAA86B,GAEA+jD,GAAAgjB,mBAAA,SAAA7hG,EAAA86B,GACAgkD,GAAA/wF,UAAAiS,GAAA86B,GAGA+jD,GAAA4F,aAAAA,GAEAQ,GAAApG,IAEAA,GAAAijB,QAAA,SAEAjjB,KCrkSAvpE,OAAA,UAAA,SAAA,WACA,YAMA,SAAAnvB,GAmEA,QAAA47G,iBAAAC,GACA,MAAAA,GAAAC,UAAAn+G,OAAA,GAAAk+G,EAAAE,UAGA,QAAAC,qBAAAC,EAAAt2G,GACAA,EAAApC,KAAA,iDACA,KAAA,GAAAgC,GAAA,EAAAA,EAAA02G,EAAAt+G,OAAA4H,IACAI,EAAApC,KAAA,+BACA,wBAAA04G,EAAA12G,GAAA22G,IAAA,aACAD,EAAA12G,GAAA+K,MAAA,WACA/K,EAAA02G,EAAAt+G,OAAA,GACAgI,EAAApC,KAAA,UAIA,QAAA44G,cAAAN,GAGA,IAAA,GAFAl2G,MACAysB,EAAAypF,EAAAC,UACAv9G,EAAA,EAAAA,EAAA6zB,EAAAz0B,OAAAY,IAAA,CAEA,IAAA,GADAuzB,GAAAM,EAAA7zB,GAAAu9G,UACAhuG,EAAA,EAAAA,EAAAgkB,EAAAn0B,OAAA,EAAAmQ,IACAnI,EAAApC,KAAA,yBAAAuuB,EAAAhkB,GAAA,aACA,wBAAAgkB,EAAAhkB,EAAA,GAAA,YAEAnI,GAAApC,KAAA,yBAAAuuB,EAAAA,EAAAn0B,OAAA,GACA,aAAAy0B,EAAA7zB,GAAA+R,OACA8hB,EAAA7zB,GAAA69G,eACAJ,oBAAA5pF,EAAA7zB,GAAA69G,cAAAz2G,IAEApH,EAAA6zB,EAAAz0B,OAAA,GAAAk+G,EAAAE,YACAp2G,EAAApC,KAAA,UAGA,GAAAw4G,EACA,IAAAA,EAAAF,EAAAE,UACA,IAAA,GAAAx9G,GAAA,EAAAA,EAAAw9G,EAAAp+G,OAAAY,IACAoH,EAAApC,KAAAw4G,EAAAx9G,IACAA,EAAAw9G,EAAAp+G,OAAA,GACAgI,EAAApC,KAAA,SAGA,OAAAoC,GAAAiG,KAAA,IASA,QAAAywG,oBAAAR,EAAAS,GAGA,QAAAC,GAAA1iG,GAEA,IAAA,GADAuY,GAAAypF,EAAAC,UACAv9G,EAAA,EAAAA,EAAA6zB,EAAAz0B,OAAAY,IAEA,IAAA,GADAuzB,GAAAM,EAAA7zB,GAAAu9G,UACAhuG,EAAA,EAAAA,EAAAgkB,EAAAn0B,OAAAmQ,IACA,GAAAgkB,EAAAhkB,IAAA+L,EACA,MAAAuY,GAAA7zB,EAGA,OAAA,MAkBA,QAAAi+G,KACA,GAAAF,EAAAtrG,KAAA,8BAAArT,SACAqC,EAAA,6CAAAghB,aACAs7F,EAAAtrG,KAAA,gCACAhR,EAAA,aAAAghB,aACAs7F,EAAAtrG,KAAA,sBApBA,IAAA,GAdArL,MAcApH,EAAA,EAAAA,EAAAs9G,EAAAjzE,WAAAjrC,OAAAY,IAAA,CACA,GAAAk+G,GAAAZ,EAAAjzE,WAAArqC,GACAm+G,EAAAH,EAAAE,EAEA92G,GAAApC,KAAA,QACAm5G,GACA/2G,EAAApC,KAAAm5G,EAAApsG,OACAosG,EAAAN,eACAJ,oBAAAU,EAAAN,cAAAz2G,IAEAA,EAAApC,KAAA,wBAAAk5G,EAAA,WAEA92G,EAAApC,KAAA,SAYA,GAAAw4G,EACA,IAAAA,EAAAF,EAAAE,UAAA,CACAS,IACA72G,EAAApC,KAAA,OACA,KAAA,GAAAhF,GAAA,EAAAA,EAAAw9G,EAAAp+G,OAAAY,IACAoH,EAAApC,KAAAw4G,EAAAx9G,IACAA,EAAAw9G,EAAAp+G,OAAA,GACAgI,EAAApC,KAAA,SAEAoC,GAAApC,KAAA,SAMA,MAHAs4G,GAAAvlG,KACA3Q,EAAApC,KAAA,0BAAAs4G,EAAAvlG,IAAA,SAEA3Q,EAAAiG,KAAA,IAWA,QAAA+wG,aAAAtyG,MACAA,KAAA2G,KAAA,UAAAnS,KAAA,WACA,GAAAhB,MAAAb,KAAAuD,aAAA,SAAA,iBACA,oBAAA1C,OACAmC,EAAA48G,WAAA58G,EAAAhD,MACA6/G,KAAA7/G,KAAAsG,gBAGAtD,EAAA48G,kBACA58G,GAAA48G,WA9LA,GAAAl+E,YAAA,eAGAC,SAyCAC,MAAA,SAAAi9E,GACA,MAAA7+G,MAAA6B,KAAA,WACA,GAAAwL,GAAArK,EAAAhD,KAEA,IAAA4+G,gBAAAC,GACA,GAAAxxG,EAAAkN,GAAA,SAAA,CACA,GAAAulG,GAAA98G,EAAAgzB,GAAA7X,IACA9Q,GAAAyW,OAAAg8F,GACAA,EAAA75G,UAAAo5G,mBAAAR,EAAAxxG,GACAsyG,YAAA38G,EAAA88G,IACA98G,EAAA88G,GAAA9rG,KAAA,iBAAA+rG,kBAEA1yG,GAAA,GAAApH,UAAAk5G,aAAAN,GACAc,YAAAtyG,GACAA,EAAA2G,KAAA,iBAAA+rG,kBAGA1yG,GAAAyW,OAAA9gB,EAAAgzB,GAAA4U,MAAAhhB,MAAA,eAAA,YAkJA5mB,GAAA2N,GAAAqvG,aAAA,SAAAjyF,GACA,MAAA4T,SAAA5T,GACA4T,QAAA5T,GACAvrB,MAAAxC,KAAA+M,MAAAnC,UAAAnI,MAAApB,KAAA6F,UAAA,IACA,gBAAA6mB,IAAAA,MAGA/qB,GAAAoN,MAAA,UAAA2d,EAAA,6BAAA2T,YAFAC,QAAAC,MAAAp/B,MAAAxC,KAAAkH,aAMAorB,QAMA,SAAAtvB,GAuOA,QAAAi9G,KACA,GAAAxyE,GAAAzqC,EAAA,iBAwBA,OAtBAyqC,GAAA,KACAA,EAAAzqC,EAAAA,EAAAgzB,GAAAiL,MAAA1uB,GAAA,gBACAlO,MAAA,kBAGAopC,EAAA/pB,GAAA,QAAA,IAAA,SAAA2Q,GACA,GAAA50B,GAAAuD,EAAAqxB,EAAAlc,QAAAwC,QAAA,KACApZ,EAAA9B,EAAA4Q,KAAA,KAGA,OADAo9B,GAAAp9B,KAAA,UAAA0vG,YAAAtgH,EAAA4Q,KAAA,UAAA9O,IACA,IAEAksC,EAAA/pB,GAAA,QAAA,WACA,GAAA9iB,GAAAoC,EAAA,6BAAAA,EAAAhD,OAAAkqB,KACAujB,GAAAp9B,KAAA,UAAA0vG,YAAA,SAAAr2F,SAAA9oB,MAEA6sC,EAAAhjB,MAAA,WAAAy1F,GAAA,EAAAC,KACA,WAAAC,MAEAp9G,EAAA,QAAA8gB,OAAA2pB,IAGAA,EAGA,QAAA4yE,KACA,IAAAH,EAAA,CACA,GAAAzyE,GAAAwyE,IACA9nG,EAAAs1B,EAAAp9B,KAAA,SAEA8H,KACAA,EAAA2R,YAAA,oBACA2jB,EAAAp9B,KAAA,SAAA,OAEAo9B,EAAA3vB,KAAA,MAIA,QAAAqiG,KACA5xF,EAAArjB,WAAA,WACAm1G,KACA,KAGA,QAAAD,KACAF,GAAA,EACAC,IAGA,QAAA5nB,GAAAlkE,GACA,GAAAisF,GAAAjsF,EAAA3T,cAAAqxE,YAEA,OADAuuB,GAAAxtB,QAAA,OAAA9vF,EAAAqxB,EAAAlc,QAAA4nG,YAAA,gBACA,EA7RA,GAAAr+E,GAAA,cACAnT,EAAA,EACA2xF,GAAA,EAGAv+E,GACAC,MAAA,SAAA7a,GACA,MAAA/mB,MAAA6B,KAAA,WACA,GAAAwL,GAAArK,EAAAhD,MACAqQ,GAAAooD,QAAA,GACA3zD,KACAmV,EAAAjX,EAAAgzB,GAAAyM,KAAA7Y,MAAA,wBAEAroB,EAAA,CACA8L,GAAAoN,WAAA5Y,KAAA,WACA,GAAAk7F,GAAA/5F,EAAAhD,MAAA+D,IAAA,UAEAe,GAAAyB,KAAAw2F,GACA,GAAAx7F,KACA8L,EAAAtJ,IAAA,UAAAg5F,GACA/5F,EAAAhD,MAAA+W,KAAA,aAAA,IAEA/T,EAAAhD,MAAA8d,SAGAzN,EAAAvL,QAAAA,EACAuI,EAAAyW,OAAA7J,GAEAjX,EAAAiX,GAAAwQ,MAAA,SAAA4J,GAAAhnB,EAAA0yG,YAAA,aAAA1rF,IACA,SAAAA,GAAAhnB,EAAA0yG,YAAA,aAAA1rF,KACAhnB,EAAA0J,KAAA,aAAA,GACA8a,KAAA,YAAA0mE,GAEAlrF,EAAAgD,KAAAqxB,EAAArxB,MAQA4vG,WAAA,WAKA,QAAAM,GAAAh/G,EAAAsb,GACA,GAAAygB,GAAAyP,CAcA,OAZA,eAAAlwB,GACAygB,EAAA,OACAyP,EAAA,SAEAzP,EAAA,WACAyP,EAAA,YAGAlC,IAAA,qDACAtpC,EAAA,kBAAAwrC,EAAA,YAAAzP,EAAA,sCACAyP,EAAA,gBAEAlC,IAIA,IAAA,GAvBAx6B,GAAArQ,KAAAqQ,KAAAqxB,GACAxnB,GAAA,8BACAO,EAAAza,KAAAya,WAoBAlZ,EAAA,EACAA,EAAA,EAAAA,EAAA8O,EAAAvL,QAAAnE,OAAAY,IAAA,CACA,GAAAX,GAAAoC,EAAAyX,EAAAlZ,IACAsb,EAAAjc,EAAAmW,KAAA,cAEA8F,KAEAA,EADA,GAAAtb,EACA,mBAEA,kBAAAA,EAAA,GAAA,KAGA2Y,EAAA3T,KAAA,4BACAg6G,EAAAh/G,EAAAsb,GACA,4CAAAtb,EAAA,KACAA,GAAA8O,EAAAooD,SAAAv+C,EAAA3T,KAAA,YACA2T,EAAA3T,KAAA,KAAAsW,EAAA,UAIA,MADA3C,GAAA3T,KAAA,UACA2T,EAAAtL,KAAA,KAGA4xG,WAAA,SAAAnsF,GACA,GAGAlc,GAHA9K,EAAArN,KACAytC,EAAAwyE,IACAh5F,EAAAjnB,KAAAixB,QAGAivF,IAAA,EACA3xF,IACAzF,aAAAyF,GACAA,EAAA,IAGApW,EAAAs1B,EAAAp9B,KAAA,YACA8H,EAAA2R,YAAA,oBACA2jB,EAAAp9B,KAAA,SAAAhD,GAEAogC,EAAA9kC,KAAA3I,KAAA+/G,YAAA,eACAtyE,EAAA1pC,KAAA+R,IAAAmR,EAAAnR,IAAA,EAAA,KACA4Q,KAAAO,EAAAP,KAAA,EAAA,OACA7I,KAAA,KAEA7d,KAAA6pB,SAAA,qBAGA42F,WAAA,SAAApsF,GACA+rF,KAOAlmG,OAAA,SAAA3Y,GACA,GAAA8O,GAAArQ,KAAAqQ,KAAAqxB,EAEA,IAAArxB,EAAAooD,SAAAl3D,EAAA,CACA,GAAAi1B,GAAAx2B,KAAAya,WACAsiF,EAAA1sF,EAAAvL,QAAAvD,EAEAyB,GAAAwzB,EAAAnmB,EAAAooD,UAAA36C,KAAA,KACA9a,EAAAwzB,EAAAj1B,IAAAsc,KAAA,IAAA,WAAA7a,EAAAhD,MAAA+D,IAAA,UAAAg5F,KACA/8F,KAAA+D,IAAA,UAAAg5F,GACA/5F,EAAAwzB,EAAAj1B,IAAAgZ,GAAA,yBACAva,KAAA+W,KAAA,aAAA,GAEA/W,KAAA+W,KAAA,aAAA,GAGA1G,EAAAooD,QAAAl3D,EAGA8+G,KAGAvzC,KAAA,SAAAvrE,GAKA,QAAAm/G,GAAA1qF,GACA,GAAAiyB,GAAApoD,SAAAsoD,aACAF,GAAA04D,mBAAA3qF,EACA,IAAAkyB,GAAAnoD,OAAAgzF,cACA7qC,GAAAsyD,kBACAtyD,EAAAgzD,SAAAjzD,GATA,GAAAzxB,GAAAx2B,KAAAya,WACApK,EAAArQ,KAAAqQ,KAAAqxB,GACA1Z,EAAA3X,EAAAooD,OAUAz4D,MAAA+/G,YAAA,SAAAx+G,GACAm/G,EAAAlqF,EAAAj1B,GACA,KACA1B,SAAA22G,YAAA,QACA,MAAAr0G,GACAixB,MAAA,6CAIA,MAFApzB,MAAA+/G,YAAA,SAAA/3F,GAEAhoB,MAUAw2D,SAAA,SAAAj1D,GAMA,QAAAq/G,KACA,MAAA1qF,SAAAlzB,EAAA,OAAA,GAAAwzD,SANA,GAGAnmD,GAHAmmB,EAAAx2B,KAAAya,WACAu+B,EAAAh2C,EAAAwzB,EAAAj1B,IACAywD,EAAA,MAOA,IAAAhZ,EAAAhvB,SAAA,cAAA,CACA,GAAAppB,KACAo4C,GAAAA,EAAAl4B,QAAA,aAAAlgB,GACAA,EAAAs/B,SACA7vB,EAAAzP,EAAAs/B,QAAA2gF,UACA7uD,EAAApxD,EAAAkgH,WAAA,OACAjgH,KAAAD,EAAA8rB,aAAA,aAEA0G,MAAA,wCAEA,IAAA,GAAA4lB,EAAAhlC,KAAA,OAAArT,OAAA,CACA,GAAAogH,GAAA/nE,EAAAhlC,KAAA,MACA+sG,GAAAhqG,KAAA,UACAgqG,EAAAhqG,KAAA,QAAA,8BACA1G,EAAA0wG,EAAA,GAAAF,UACA7uD,EAAA,MACAnxD,KAAA,oBAEAwP,GAAA2oC,EAAArwC,OACA9H,KAAA,WAGA+/G,OACA//G,KAAA,2BAEA,IAAA4X,GAAA,QAAA5X,KAAA,kBACAwqB,mBAAAhb,GAEA5Q,EAAAuD,EAAAgzB,GAAAv2B,GAAAgZ,KAAAA,EACA+9C,SAAA,kBAAAxE,GAMA,OAJAhyD,MAAA8jB,OAAArkB,GACAA,EAAAuhB,QACAhe,EAAAvD,GAAAmN,SAEA5M,MAMAghH,WAAA,WACA,MAAAhhH,MAAAgU,KAAA,yBAAA3T,QA0EA2C,GAAA2N,GAAAovG,YAAA,SAAAhyF,GACA,MAAA4T,GAAA5T,GACA4T,EAAA5T,GACAvrB,MAAAxC,KAAA+M,MAAAnC,UAAAnI,MAAApB,KAAA6F,UAAA,IACA,gBAAA6mB,IAAAA,MAGA/qB,GAAAoN,MAAA,UAAA2d,EAAA,6BAAA2T,GAFAC,EAAAC,MAAAp/B,MAAAxC,KAAAkH,aAKAorB,UC9XA,SAAAzyB,EAAAuK,EAAA8rB,IACA,SAAAmgB,GACA,kBAAAlkB,SAAAA,OAAAC,IACAD,OAAA,aAAA,UAAAkkB,GACA/jB,SAAAA,OAAA3hB,GAAAswG,WACA5qE,EAAA/jB,SAGA,SAAAtvB,GACA,YAEA,IACA+6B,GAAAmjF,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACA30G,EAAA+pC,EAAA6G,EAAAgkE,EAAAC,EAAAC,EAAAC,EAAAC,EACAC,EAAAC,EAAAC,EACA/uD,EAAA6zC,EAAAmb,EAAAC,EAAAC,EAAAC,EAAA91E,EAAA+1E,EAAAC,EACAC,EAAAC,EAAAC,EAAAC,EAAAz5D,EALA05D,KAKAC,EAAA,CAKA5kF,GAAA,WACA,OAEA6kF,QACA/hH,KAAA,OACAgiH,UAAA,OACAC,UAAA,OACAC,sBAAA,EACAt5G,MAAA,OACAiC,OAAA,OACAs3G,WAAA,EACAC,mBAAA,SACAC,iBAAA,QACAC,kBAAA,EACAC,iBAAA,EACAC,iBAAA,IACAC,iBAAA,EACAC,cAAA,GACAC,cAAA,GACAC,oBAAA,EACAC,iBAAA,EACAC,sBAAA,EACAC,oBAAA,IACAC,kBAAA,IACAC,iBAAA,EACAC,oBAAA,GAGA/wD,MACAgxD,UAAA,OACAC,mBAAA,OACAC,mBAAA,OACAC,WAAA,IACAC,aAAA,OACAC,aAAA,OACAC,UAAA,EACAC,eAAAruF,EACAsuF,eAAAtuF,EACAuuF,iBAAA,OACAC,iBAAA,EACAC,cAAAzuF,EACA0uF,cAAA1uF,EACA2uF,eAAA3uF,EACA4uF,eAAA5uF,EACA6uF,cAAA,GAAA5D,GAAA,4EAGAta,KACAme,SAAA,UACAC,YAAA,OACAC,iBAAA,UAAA,UAAA,UAAA,UAAA,UACA,UAAA,UAAA,WACAC,UAAAjvF,EACAkvF,UAAAlvF,EACAmvF,UAAA,EACAroD,SAAA,EACAsoD,WAAA,EACAV,cAAA1uF,EACAyuF,cAAAzuF,EACAqvF,gBAAA,EACAC,SAAAtvF,EACA6uF,cAAA,GAAA5D,GAAA,gFAGAa,UACAhlD,SAAA,EACAsoD,WAAA,EACAG,YAAA,OACAR,YAAA,OACAS,aAAA,OACAF,YACAT,cAAA,GAAA5D,GAAA,+DACAwE,qBAAA/8G,KAAAg9G,KAAA,OAAAr2F,EAAA,OAAAs2F,EAAA,SAGA5D,UACAl8F,WAAA,OACA+/F,eAAA5vF,EACA6vF,eAAA,EACAnB,cAAA1uF,EACAyuF,cAAAzuF,EACAqvF,gBAAA,EACAR,cAAA,GAAA5D,GAAA,kCAGAe,QACA8D,YAAA,OACAC,YAAA,EACAC,iBAAA,OACAC,aAAA,UAAA,UAAA,WACAnsD,KAAA9jC,EACA6uF,cAAA,GAAA5D,GAAA,mCACAwE,qBAAAt7E,QAAAzpC,EAAA,QAAAX,EAAA,cAAA2Q,EAAA,YAGAuxG,KACAlxF,OAAA,EACAm1F,aAAA,UAAA,UAAA,UAAA,UAAA,UACA,UAAA,UAAA,WACAC,YAAA,EACAhlE,YAAA,OACA0jE,cAAA,GAAA5D,GAAA,6EAGA90E,KACAi6E,KAAA,EACAC,aAAA,OACAC,aAAA,OACAC,aAAA,OACAC,iBAAA,OACAC,iBAAA,OACAC,YAAA,OACAC,cAAA,EACAC,WAAA,IACA3C,WAAA,IACAhsG,OAAA+d,EACA8vF,YAAA,OACApB,cAAA1uF,EACAyuF,cAAAzuF,EACA6uF,cAAA,GAAA5D,GAAA,+BACA4F,0BAAA,QACApB,qBAAAt7E,QAAA28E,GAAA,iBAAAC,IAAA,SACAC,GAAA,iBAAAC,GAAA,eAAAC,GAAA,gBACAC,GAAA,eAAAC,GAAA,qBAMAlF,EAAA,siBA2BAlB,EAAA,WACA,GAAAqG,GAAAvvE,CAoBA,OAnBAuvE,GAAA,WACAvnH,KAAA6K,KAAArI,MAAAxC,KAAAkH,YAEAA,UAAAvG,OAAA,GACAuG,UAAA,IACAqgH,EAAA38G,UAAA5H,EAAAgF,OAAA,GAAAd,WAAA,GAAAA,UAAAA,UAAAvG,OAAA,IACA4mH,EAAAC,OAAAtgH,UAAA,GAAA0D,WAEA28G,EAAA38G,UAAA1D,UAAAA,UAAAvG,OAAA,GAEAuG,UAAAvG,OAAA,IACAq3C,EAAAjrC,MAAAnC,UAAAnI,MAAApB,KAAA6F,UAAA,GAAA,GACA8wC,EAAA/oC,QAAAs4G,EAAA38G,WACA5H,EAAAgF,OAAAxF,MAAAQ,EAAAg1C,KAGAuvE,EAAA38G,UAAA1D,UAAA,GAEAqgH,EAAA38G,UAAA+hC,IAAA46E,EACAA,GASAvkH,EAAAykH,cAAAtG,EAAAD,GACAwG,IAAA,8BACAC,OAAA,eAEA98G,KAAA,SAAAkhC,EAAA67E,GACA5nH,KAAA+rC,OAAAA,EACA/rC,KAAA4nH,OAAAA,GAGA1lE,OAAA,SAAA2lE,EAAAC,EAAA/gG,GACA,GAEAjlB,GAAAk6C,EAAA+rE,EAAAC,EAAAC,EAFA30E,EAAAtzC,KACAqqC,EAAAw9E,CAEA,OAAA7nH,MAAA+rC,OAAA1oC,QAAArD,KAAA0nH,IAAA,WACA,GAAAQ,EAWA,OAVAlsE,GAAA90C,UAAA,GACA6gH,EAAA7gH,UAAA,GACApF,EAAAwxC,EAAAq0E,OAAAvjH,KAAA43C,GACAl6C,GACAmmH,EAAAnmH,EAAA,GACAk6C,EAAAl6C,EAAA,IAEAmmH,GAAA,EAEAD,EAAA39E,EAAA2R,GACAgsE,IAAA9xF,EACA,GAEA6xF,GAAAD,GAAAA,EAAAC,IACAG,EAAAJ,EAAAC,GACAG,EAAAljH,IACA8iH,EAAAC,GAAA/iH,IAAAgjH,IAAAA,EAEAF,EAAAC,GAAAC,IAAAA,IAGArxE,EAAAqxE,KAEAA,EADAjhG,EAAA/hB,IAAA,mBACA+hB,EAAA/hB,IAAA,mBAAAgjH,GAEArG,EAAAqG,EAAAC,EACAlhG,EAAA/hB,IAAA,yBACA+hB,EAAA/hB,IAAA,uBACA+hB,EAAA/hB,IAAA,uBAGAgjH,QAMAhlH,EAAAmlH,SAAA,SAAAp8E,EAAA67E,GACA,MAAA,IAAAzG,GAAAp1E,EAAA67E,IAGAxG,EAAA,SAAAl3F,EAAAovC,EAAAjvD,GACA,MAAA6f,GAAAovC,EACAA,EAEApvC,EAAA7f,EACAA,EAEA6f,GAGAm3F,EAAA,SAAA5jE,EAAAn1C,GACA,GAAA8/G,EACA,OAAA,KAAA9/G,GACA8/G,EAAAh+G,EAAAy+B,MAAA4U,EAAA98C,OAAA,GACA88C,EAAA98C,OAAA,EAAA88C,EAAA2qE,IAAA3qE,EAAA2qE,EAAA,GAAA3qE,EAAA2qE,IAAA,GAEA3qE,EAAA98C,OAAA,GACAynH,GAAA3qE,EAAA98C,OAAA2H,EAAAA,GAAA,EACA8/G,EAAA,GAAA3qE,EAAArzC,EAAAy+B,MAAAu/E,IAAA3qE,EAAArzC,EAAAy+B,MAAAu/E,GAAA,IAAA,EAAA3qE,EAAA2qE,EAAA,KAEAA,GAAA3qE,EAAA98C,OAAA2H,EAAA,GAAA,EACA8/G,EAAA,GAAA3qE,EAAArzC,EAAAy+B,MAAAu/E,IAAA3qE,EAAArzC,EAAAy+B,MAAAu/E,GAAA,IAAA,EAAA3qE,EAAA2qE,EAAA,KAMA9G,EAAA,SAAAp3F,GACA,GAAAm+F,EACA,QAAAn+F,GACA,IAAA,YACAA,EAAAgM,CACA,MACA,KAAA,OACAhM,EAAA,IACA,MACA,KAAA,OACAA,GAAA,CACA,MACA,KAAA,QACAA,GAAA,CACA,MACA,SACAm+F,EAAA39G,WAAAwf,GACAA,GAAAm+F,IACAn+F,EAAAm+F,GAGA,MAAAn+F,IAGAq3F,EAAA,SAAA+G,GACA,GAAA/mH,GAAA4e,IACA,KAAA5e,EAAA+mH,EAAA3nH,OAAAY,KACA4e,EAAA5e,GAAA+/G,EAAAgH,EAAA/mH,GAEA,OAAA4e,IAGAvT,EAAA,SAAA07G,EAAA5mH,GACA,GAAAH,GAAA6mH,EAAAjoG,IACA,KAAA5e,EAAA,EAAA6mH,EAAAE,EAAA3nH,OAAAY,EAAA6mH,EAAA7mH,IACA+mH,EAAA/mH,KAAAG,GACAye,EAAA5Z,KAAA+hH,EAAA/mH,GAGA,OAAA4e,IAGAw2B,EAAA,SAAAwE,GACA,OAAAtpC,MAAAnH,WAAAywC,KAAA50B,SAAA40B,IAGAwmE,EAAA,SAAAxmE,EAAA8sE,EAAAM,EAAAC,EAAAC,GACA,GAAAxoH,GAAAsB,CAMA,KALA45C,GAAA8sE,KAAA,EAAAv9G,WAAAywC,GAAA1qC,WAAA0qC,EAAA9kB,QAAA4xF,IAAA/3G,MAAA,IACAjQ,GAAAA,EAAA+C,EAAAyD,QAAA,IAAA00C,IAAA,EAAAA,EAAAx6C,OAAAV,EACAA,EAAAk7C,EAAAx6C,SACAw6C,EAAAl7C,GAAAwoH,GAEAlnH,EAAAtB,EAAAsoH,EAAAhnH,EAAA,EAAAA,GAAAgnH,EACAptE,EAAA5pC,OAAAhQ,EAAA,EAAAinH,EAEA,OAAArtE,GAAAvsC,KAAA,KAKA4uC,EAAA,SAAAtzB,EAAAwf,EAAAg/E,GACA,GAAAnnH,EACA,KAAAA,EAAAmoC,EAAA/oC,OAAAY,KACA,KAAAmnH,GAAA,OAAAh/E,EAAAnoC,KACAmoC,EAAAnoC,KAAA2oB,EACA,OAAA,CAGA,QAAA,GAIAs3F,EAAA,SAAA8G,GACA,GAAA/mH,GAAAonH,EAAA,CACA,KAAApnH,EAAA+mH,EAAA3nH,OAAAY,KACAonH,GAAA,gBAAAL,GAAA/mH,GAAA+mH,EAAA/mH,GAAA,CAEA,OAAAonH,IAGAjH,EAAA,SAAAx3F,GACA,MAAAlnB,GAAAgK,QAAAkd,GAAAA,GAAAA,IAIAu3F,EAAA,SAAA19G,GACA,GAAAyhC,EAEA3lC,GAAA+oH,iBACA/oH,EAAA+oH,mBAAAjkG,QAAA5gB,GAEAyhC,EAAA3lC,EAAAO,cAAA,SACAolC,EAAA3kC,KAAA,WACAhB,EAAAsF,qBAAA,QAAA,GAAA5E,YAAAilC,GACAA,EAAA,gBAAA3lC,GAAA+E,KAAAP,MAAAwkH,iBAAA,YAAA,aAAA9kH,IAKAf,EAAA2N,GAAAm4G,WAAA,SAAAr/G,EAAAiC,EAAAq9G,EAAAC,GACA,GAAA7wG,GAAA8wG,CACA,IAAAF,IAAA5wG,EAAAnY,KAAAqQ,KAAA,iBACA,MAAA8H,EAGA,IAAAnV,EAAA2N,GAAAswG,UAAAiI,UAAA,EAEA,OAAA,CAEA,IAAAlmH,EAAA2N,GAAAswG,UAAAiI,SAAAhzF,EAAA,CAEA,GAAAF,GAAAn2B,EAAAO,cAAA,SACA,IAAA41B,EAAAmzF,YAAAnzF,EAAAmzF,WAAA,MAEAnmH,EAAA2N,GAAAswG,UAAAiI,OAAA,SAAAz/G,EAAAiC,EAAAyM,EAAA6wG,GACA,MAAA,IAAAxG,GAAA/4G,EAAAiC,EAAAyM,EAAA6wG,QAEA,CAAA,IAAAnpH,EAAAupH,YAAAvpH,EAAAupH,WAAAt4G,EASA,MADA9N,GAAA2N,GAAAswG,UAAAiI,QAAA,GACA,CAPArpH,GAAAupH,WAAA/hH,IAAA,IAAA,gCAAA,gBACArE,EAAA2N,GAAAswG,UAAAiI,OAAA,SAAAz/G,EAAAiC,EAAAyM,EAAA6wG,GACA,MAAA,IAAAvG,GAAAh5G,EAAAiC,EAAAyM,KAsBA,MAbA1O,KAAAysB,IACAzsB,EAAAzG,EAAAhD,MAAA48B,cAEAlxB,IAAAwqB,IACAxqB,EAAA1I,EAAAhD,MAAA6gF,eAGA1oE,EAAAnV,EAAA2N,GAAAswG,UAAAiI,OAAAz/G,EAAAiC,EAAA1L,KAAAgpH,GAEAC,EAAAjmH,EAAAhD,MAAAqQ,KAAA,iBACA44G,GACAA,EAAAI,eAAAlxG,GAEAA,GAGAnV,EAAA2N,GAAA24G,UAAA,WACA,GAAAnxG,GAAAnY,KAAAqQ,KAAA,eACA8H,IACAA,EAAA0B,SAIA7W,EAAAumH,cAAA3H,EAAAV,GACAr2G,KAAA,SAAAjC,GACA,GAAA2Z,GAAA0lC,EAAAuhE,IACA,KAAAjnG,IAAA3Z,GACAA,EAAA8H,eAAA6R,IAAA,gBAAAA,IAAAA,EAAA/R,QAAA,MAAA,IACAy3C,EAAA1lC,EAAArS,MAAA,KACA+3C,EAAA,GAAA,IAAAA,EAAA,GAAAtnD,SAAAqmC,EAAAA,GAAAt8B,WAAAu9C,EAAA,IACAA,EAAA,GAAA,IAAAA,EAAA,GAAAtnD,OAAAqmC,EAAAA,EAAAt8B,WAAAu9C,EAAA,IACAA,EAAA,GAAAr/C,EAAA2Z,GACAinG,EAAAjjH,KAAA0hD,GAGAjoD,MAAA4I,IAAAA,EACA5I,KAAAwpH,UAAAA,IAAA,GAGAxkH,IAAA,SAAAsO,GACA,GACA/R,GAAA0mD,EAAA9nC,EADAqpG,EAAAxpH,KAAAwpH,SAEA,KAAArpG,EAAAngB,KAAA4I,IAAA0K,MAAA4iB,EACA,MAAA/V,EAEA,IAAAqpG,EACA,IAAAjoH,EAAAioH,EAAA7oH,OAAAY,KAEA,GADA0mD,EAAAuhE,EAAAjoH,GACA0mD,EAAA,IAAA30C,GAAA20C,EAAA,IAAA30C,EACA,MAAA20C,GAAA,EAIA,OAAA/xB,MAKAlzB,EAAAymH,UAAA,SAAA7gH,GACA,MAAA,IAAAg5G,GAAAh5G,IAGAi5G,EAAAX,GACAr2G,KAAA,SAAAmrB,EAAAjP,GACA,GAAAkf,GAAAjjC,EAAAgzB,EACAh2B,MAAAimC,IAAAA,EACAjmC,KAAA+mB,QAAAA,EACA/mB,KAAA0pH,aAAA,EACA1pH,KAAA2pH,aAAA,EACA3pH,KAAAg2B,GAAAA,EACAh2B,KAAA4pH,UACA5pH,KAAAq/B,QAAA,KACAr/B,KAAAw7F,MAAA,EACAx7F,KAAA6pH,iBAAA9iG,EAAA/hB,IAAA,mBACAhF,KAAA8pH,kBAAA/iG,EAAA/hB,IAAA,qBAGA+kH,kBAAA,SAAAnmD,GACA5jE,KAAA4pH,OAAArjH,KAAAq9D,GACA5jE,KAAAw7F,MACAx7F,KAAAgqH,iBAIAX,eAAA,SAAAH,GACA,GAAAe,GAAAjnH,EAAAkmH,EAAAA,OACAlpH,MAAAkpH,OAAAA,EACAlpH,KAAAiqH,QAAAA,EACAA,EAAA3mG,WAAAtgB,EAAAsL,MAAAtO,KAAAsjB,WAAAtjB,OACAiqH,EAAA1mG,WAAAvgB,EAAAsL,MAAAtO,KAAAujB,WAAAvjB,OACAiqH,EAAAjpG,MAAAhe,EAAAsL,MAAAtO,KAAAkqH,WAAAlqH,QAGA6Z,MAAA,SAAAswG,GACAnqH,KAAA4pH,UACA5pH,KAAAq/B,SAAA8qF,IACAnqH,KAAAq/B,QAAAzyB,SACA5M,KAAAq/B,QAAAnJ,IAIAg0F,WAAA,SAAA/nH,GACA,GAAAioH,GAAApnH,EAAAwd,MAAA,iBACA4pG,GAAA1pG,cAAAve,EACAioH,EAAAC,WAAArqH,KAAA4pH,OACA5pH,KAAAimC,IAAAnlB,QAAAspG,IAGA9mG,WAAA,SAAAnhB,GACAa,EAAAnD,EAAA+E,MAAAktB,OAAA,iBACA9uB,EAAAnD,EAAA+E,MAAAitB,KAAA,gBAAA7uB,EAAAsL,MAAAtO,KAAAsqH,UAAAtqH,OACAA,KAAAw7F,MAAA,EACAx7F,KAAA0pH,aAAAvnH,EAAA8f,MACAjiB,KAAA2pH,aAAAxnH,EAAA+f,MACAliB,KAAAuqH,UAAApoH,EAAAgW,QACAnY,KAAAq/B,SAAAr/B,KAAA6pH,kBACA7pH,KAAAq/B,QAAA,GAAAyiF,GAAA9hH,KAAA+mB,SACA/mB,KAAAq/B,QAAAmrF,eAAAroH,EAAA8f,MAAA9f,EAAA+f,QAEAliB,KAAAgqH,iBAGAzmG,WAAA,WACAvgB,EAAAnD,EAAA+E,MAAAktB,OAAA,gBACA,IAGA8xC,GAAAriE,EAHAqoH,EAAA5pH,KAAA4pH,OACAa,EAAAb,EAAAjpH,OACA+pH,GAAA,CAUA,KARA1qH,KAAAw7F,MAAA,EACAx7F,KAAAuqH,UAAA,KAEAvqH,KAAAq/B,UACAr/B,KAAAq/B,QAAAzyB,SACA5M,KAAAq/B,QAAA,MAGA99B,EAAA,EAAAA,EAAAkpH,EAAAlpH,IACAqiE,EAAAgmD,EAAAroH,GACAqiE,EAAA+mD,yBACAD,GAAA,EAIAA,IACA1qH,KAAAkpH,OAAAhnE,UAIAooE,UAAA,SAAAnoH,GACAnC,KAAA0pH,aAAAvnH,EAAA8f,MACAjiB,KAAA2pH,aAAAxnH,EAAA+f,MACAliB,KAAAuqH,UAAApoH,EAAAgW,OACAnY,KAAAq/B,SACAr/B,KAAAq/B,QAAAmrF,eAAAroH,EAAA8f,MAAA9f,EAAA+f,OAEAliB,KAAAgqH,iBAGAA,cAAA,WACA,GAMAY,GAAAhnD,EAAAriE,EAAA4e,EAAAi+E,EANAwrB,EAAA5pH,KAAA4pH,OACAa,EAAAb,EAAAjpH,OACA+pH,GAAA,EACAz5F,EAAAjxB,KAAAiqH,QAAAh5F,SACA45F,EAAA7qH,KAAA0pH,aAAAz4F,EAAAvK,KACAokG,EAAA9qH,KAAA2pH,aAAA14F,EAAAnb,GAEA,IAAA9V,KAAAw7F,KAAA,CAGA,IAAAj6F,EAAA,EAAAA,EAAAkpH,EAAAlpH,IACAqiE,EAAAgmD,EAAAroH,GACA4e,EAAAyjD,EAAAmnD,mBAAA/qH,KAAAuqH,UAAAM,EAAAC,GACA3qG,IACAuqG,GAAA,EAGA,IAAAA,EAAA,CAIA,GAHAtsB,EAAAp7F,EAAAwd,MAAA,yBACA49E,EAAAisB,WAAArqH,KAAA4pH,OACA5pH,KAAAimC,IAAAnlB,QAAAs9E,GACAp+F,KAAAq/B,QAAA,CAEA,IADAurF,EAAA,GACArpH,EAAA,EAAAA,EAAAkpH,EAAAlpH,IACAqiE,EAAAgmD,EAAAroH,GACAqpH,GAAAhnD,EAAAonD,yBAEAhrH,MAAAq/B,QAAAjB,WAAAwsF,GAEA5qH,KAAAirH,kBACAjrH,KAAAkpH,OAAAhnE,SAGA,OAAA/hC,GACAngB,KAAAujB,iBAMAu+F,EAAAZ,GACAgK,UAAA,8GAKArgH,KAAA,SAAAkc,GACA,GAEAkK,GAFAk6F,EAAApkG,EAAA/hB,IAAA,mBAAA,cACAomH,EAAAprH,KAAAkrH,SAEAlrH,MAAAu9B,UAAAxW,EAAA/hB,IAAA,qBAAAnF,EAAA+E,KACA5E,KAAAqrH,eAAAtkG,EAAA/hB,IAAA,iBAAA,IACAhF,KAAAsrH,eAAAvkG,EAAA/hB,IAAA,iBAAA,IAEAhC,EAAA,eAAA4J,SACA5J,EAAA,eAAA4J,SACA5M,KAAAurH,QAAAvoH,EAAA,UACAuP,GAAA,aACAlO,MAAA+mH,EACAxhG,MAAAuhG,IAEAnrH,KAAAq/B,QAAAr8B,EAAA,UACAuP,GAAA,aACAqX,MAAAuhG,IACA9mG,SAAArkB,KAAAu9B,WAEAtM,EAAAjxB,KAAAq/B,QAAApO,SACAjxB,KAAA45E,WAAA3oD,EAAAvK,KACA1mB,KAAA+gC,UAAA9P,EAAAnb,IACA9V,KAAAgL,QAAA,EACAhI,EAAAjD,QAAA+xB,OAAA,yBACA9uB,EAAAjD,QAAA8xB,KAAA,wBAAA7uB,EAAAsL,MAAAtO,KAAAwrH,iBAAAxrH,OACAA,KAAAwrH,oBAGAA,iBAAA,WACAxrH,KAAAmnB,UAAAnkB,EAAAjD,QAAAonB,YACAnnB,KAAAonB,WAAApkB,EAAAjD,QAAAqnB,aACApnB,KAAAyrH,YAAAzrH,KAAAonB,WAAApkB,EAAAjD,QAAA0J,QACAzJ,KAAAwqH,kBAGAkB,QAAA,SAAApwG,GACAtb,KAAAurH,QAAA5iH,KAAA2S,GAAA+I,SAAArkB,KAAAu9B,WACAv9B,KAAAyJ,MAAAzJ,KAAAurH,QAAA9hH,QAAA,EACAzJ,KAAA0L,OAAA1L,KAAAurH,QAAA7/G,SACA1L,KAAAurH,QAAA3+G,UAGAwxB,WAAA,SAAA9iB,GACA,MAAAA,IAKAtb,KAAA0rH,QAAApwG,GACAtb,KAAAq/B,QAAA12B,KAAA2S,GACAvX,KACA0F,MAAAzJ,KAAAyJ,MACAiC,OAAA1L,KAAA0L,OACA4Z,WAAA,iBAEAtlB,KAAAgL,SACAhL,KAAAgL,QAAA,EACAhL,KAAAwqH,qBAbAxqH,KAAAq/B,QAAAt7B,IAAA,aAAA,eACA/D,KAAAgL,QAAA,KAgBAw/G,eAAA,SAAAn4G,EAAA6B,GACA,GAAA7B,IAAA6jB,EAAA,CACA,GAAAl2B,KAAA2rH,SAAAz1F,EACA,MAEA7jB,GAAArS,KAAA2rH,OAAA3rH,KAAA45E,WACA1lE,EAAAlU,KAAA4rH,OAAA5rH,KAAA+gC,cAGA/gC,MAAA2rH,OAAAt5G,GAAArS,KAAA45E,WACA55E,KAAA4rH,OAAA13G,GAAAlU,KAAA+gC,SAEA/gC,MAAA0L,QAAA1L,KAAAyJ,QAAAzJ,KAAAgL,SAIAkJ,GAAAlU,KAAA0L,OAAA1L,KAAAsrH,eACAj5G,GAAArS,KAAAqrH,eAEAn3G,EAAAlU,KAAAmnB,YACAjT,EAAAlU,KAAAmnB,WAEA9U,EAAArS,KAAAonB,WACA/U,EAAArS,KAAAonB,WACA/U,EAAArS,KAAAyJ,MAAAzJ,KAAAyrH,cACAp5G,EAAArS,KAAAyrH,YAAAzrH,KAAAyJ,OAGAzJ,KAAAq/B,QAAAt7B,KACA2iB,KAAArU,EACAyD,IAAA5B,MAIAtH,OAAA,WACA5M,KAAAq/B,QAAAzyB,SACA5M,KAAAurH,QAAA3+G,SACA5M,KAAAurH,QAAAvrH,KAAAq/B,QAAAnJ,EACAlzB,EAAAjD,QAAA+xB,OAAA,4BAIAuwF,EAAA,WACAZ,EAAAW,IAGAp/G,EAAAq/G,GAEAr5D,KACAhmD,EAAA2N,GAAAswG,UAAA,SAAA4K,EAAAC,GACA,MAAA9rH,MAAA6B,KAAA,WACA,GAEAqgD,GAAA3gD,EAFAwlB,EAAA,GAAA/jB,GAAA2N,GAAAswG,UAAAl6F,QAAA/mB,KAAA8rH,GACAC,EAAA/oH,EAAAhD,KAyDA,IAvDAkiD,EAAA,WACA,GAAAzE,GAAAh0C,EAAAiC,EAAAqwE,EAAAktC,EAAArlD,EAAA0kD,CAsCA,OArCA,SAAAuD,GAAAA,IAAA31F,GACAoyF,EAAAtoH,KAAAuD,aAAAwjB,EAAA/hB,IAAA,uBACAsjH,IAAApyF,GAAA,OAAAoyF,IACAA,EAAAyD,EAAApjH,QAEA80C,EAAA6qE,EAAAjlH,QAAA,4BAAA,IAAA6M,MAAA,MAEAutC,EAAAouE,EAGApiH,EAAA,SAAAsd,EAAA/hB,IAAA,SAAAy4C,EAAA98C,OAAAomB,EAAA/hB,IAAA,yBAAA+hB,EAAA/hB,IAAA,SACA,SAAA+hB,EAAA/hB,IAAA,UACA+hB,EAAA/hB,IAAA,cAAAhC,EAAAqN,KAAArQ,KAAA,kBAEA+7E,EAAAl8E,EAAAO,cAAA,QACA27E,EAAA91E,UAAA,IACA8lH,EAAApjH,KAAAozE,GACArwE,EAAA1I,EAAA+4E,GAAA8E,eAAA79E,EAAA+4E,GAAArwE,SACA1I,EAAA+4E,GAAAnvE,SACAmvE,EAAA,MAGArwE,EAAAqb,EAAA/hB,IAAA,UAGA+hB,EAAA/hB,IAAA,sBASAikH,GAAA,GARAA,EAAAjmH,EAAAqN,KAAArQ,KAAA,iBACAipH,EAGAliG,EAAA/hB,IAAA,cACAikH,EAAApvG,SAHAovG,EAAA,GAAApH,GAAA7hH,KAAA+mB,GACA/jB,EAAAqN,KAAArQ,KAAA,gBAAAipH,KAQAliG,EAAA/hB,IAAA,eAAAhC,EAAAqN,KAAArQ,KAAA,qBACAgD,EAAAqN,KAAArQ,KAAA,oBACAozB,MAAA,sFACApwB,EAAAqN,KAAArQ,KAAA,kBAAA,MAKA4jE,EAAA,IAAA5gE,EAAA2N,GAAAswG,UAAAl6F,EAAA/hB,IAAA,UAAAhF,KAAAy9C,EAAA12B,EAAAtd,EAAAiC,GAEAk4D,EAAA1hB,cAEA+mE,GACAA,EAAAc,kBAAAnmD,MAGA5gE,EAAAhD,MAAA2I,SAAAoe,EAAA/hB,IAAA,uBAAAhC,EAAAhD,MAAAua,GAAA,aAAAvX,EAAAhD,MAAA+a,QAAA,QAAApa,OAAA,CACA,IAAAomB,EAAA/hB,IAAA,cAAAhC,EAAAqN,KAAArQ,KAAA,gBAEA,IAAAuB,EAAAynD,EAAAroD,OAAAY,EAAAA,IACAynD,EAAAznD,EAAA,GAAA,IAAAvB,MACAgpD,EAAAz3C,OAAAhQ,EAAA,EAAA,EAIAynD,GAAAziD,MAAAvG,KAAAkiD,IACAl/C,EAAAqN,KAAArQ,KAAA,gBAAA,OAEAkiD,GAAA7gD,KAAArB,SAKAgD,EAAA2N,GAAAswG,UAAAztF,SAAAuK,IAGA/6B,EAAAgpH,0BAAA,WACA,GAAAh2F,GAAAz0B,EAAA+wD,EACAjwD,IACA,KAAAd,EAAA,EAAA+wD,EAAAtJ,EAAAroD,OAAAY,EAAA+wD,EAAA/wD,IACAy0B,EAAAgzB,EAAAznD,GAAA,GACAyB,EAAAgzB,GAAAzb,GAAA,cAAAvX,EAAAgzB,GAAAjb,UAAAR,GAAA,YACAyuC,EAAAznD,GAAA,GAAAF,KAAA20B,GACAhzB,EAAAqN,KAAA24C,EAAAznD,GAAA,GAAA,gBAAA,GACAc,EAAAkE,KAAAhF,IACAyB,EAAAgzB,GAAArb,QAAA,QAAAha,QAAAqC,EAAAqN,KAAA2lB,EAAA,kBAKAhzB,EAAAqN,KAAA24C,EAAAznD,GAAA,GAAA,gBAAA,GACAc,EAAAkE,KAAAhF,GAGA,KAAAA,EAAAc,EAAA1B,OAAAY,EAAAA,IACAynD,EAAAz3C,OAAAlP,EAAAd,EAAA,GAAA,IAQAyB,EAAA2N,GAAAswG,UAAAl6F,QAAAm6F,GACAr2G,KAAA,SAAA26B,EAAAsmF,GACA,GAAAG,GAAAz4F,EAAAwmC,EAAAkyD,CACAlsH,MAAA8rH,YAAAA,EAAAA,MACA9rH,KAAAwlC,IAAAA,EACAxlC,KAAAmsH,eACA34F,EAAAxwB,EAAA2N,GAAAswG,UAAAztF,SACAwmC,EAAAxmC,EAAAovF,OACA5iH,KAAAkjH,iBAAA4I,EAAA3I,mBAAA2I,EAAA5I,kBAAAlpD,EAAAkpD,kBAEAgJ,EAAAlsH,KAAAosH,cAAA,QAEAH,EADAC,IAAAxJ,EACAlvF,EAAAs4F,EAAAjrH,MAAAm5D,EAAAn5D,MAEA2yB,EAAA04F,GAEAlsH,KAAAqsH,cAAArpH,EAAAgF,UAAAgyD,EAAAiyD,EAAAH,IAIAM,cAAA,SAAA7pG,GACA,GACA2H,GAAA3oB,EAAA+qH,EAAAC,EADAjzE,EAAAt5C,KAAAkjH,gBAEA,IAAA5pE,KAAA,GAAAA,IAAApjB,EACA,MAAAwsF,EAEA,IAAA1iH,KAAAmsH,YAAAz7G,eAAA6R,GACA2H,EAAAlqB,KAAAmsH,YAAA5pG,QACA,CAEA,GADA2H,EAAAlqB,KAAAwlC,IAAAjiC,aAAA+1C,EAAA/2B,GACA2H,IAAAgM,GAAA,OAAAhM,EACAA,EAAAw4F,MACA,IAAA,MAAAx4F,EAAAiM,OAAA,EAAA,GAEA,IADAjM,EAAAA,EAAAiM,OAAA,EAAAjM,EAAAvpB,OAAA,GAAAuP,MAAA,KACA3O,EAAA2oB,EAAAvpB,OAAAY,KACA2oB,EAAA3oB,GAAA+/G,EAAAp3F,EAAA3oB,GAAA8B,QAAA,iBAAA,SAEA,IAAA,MAAA6mB,EAAAiM,OAAA,EAAA,GAGA,IAFAm2F,EAAApiG,EAAAiM,OAAA,EAAAjM,EAAAvpB,OAAA,GAAAuP,MAAA,KACAga,KACA3oB,EAAA+qH,EAAA3rH,OAAAY,KACAgrH,EAAAD,EAAA/qH,GAAA2O,MAAA,IAAA,GACAga,EAAAqiG,EAAA,GAAAlpH,QAAA,iBAAA,KAAAi+G,EAAAiL,EAAA,GAAAlpH,QAAA,iBAAA,SAGA6mB,GAAAo3F,EAAAp3F,EAEAlqB,MAAAmsH,YAAA5pG,IAAA2H,EAEA,MAAAA,IAGAllB,IAAA,SAAAud,EAAAiqG,GACA,GACArsG,GADAssG,EAAAzsH,KAAAosH,cAAA7pG,EAEA,OAAAkqG,KAAA/J,EACA+J,GAEAtsG,EAAAngB,KAAAqsH,cAAA9pG,MAAA2T,EAAAs2F,EAAArsG,KAKAnd,EAAA2N,GAAAswG,UAAAyL,MAAAxL,GACAhuG,UAAA,EAEArI,KAAA,SAAAmrB,EAAAynB,EAAA12B,EAAAtd,EAAAiC,GACA1L,KAAAg2B,GAAAA,EACAh2B,KAAAimC,IAAAjjC,EAAAgzB,GACAh2B,KAAAy9C,OAAAA,EACAz9C,KAAA+mB,QAAAA,EACA/mB,KAAAyJ,MAAAA,EACAzJ,KAAA0L,OAAAA,EACA1L,KAAA2sH,cAAAz2F,GAMA02F,WAAA,WACA,GAAAC,IAAA7sH,KAAA+mB,QAAA/hB,IAAA,uBACAhF,KAAAmY,OAAAnY,KAAAimC,IAAA6iF,WAAA9oH,KAAAyJ,MAAAzJ,KAAA0L,OAAA1L,KAAA+mB,QAAA/hB,IAAA,aAAA6nH,KAGA7sH,KAAA8sH,YAAA9sH,KAAAmY,OAAA40G,WACA/sH,KAAAgtH,aAAAhtH,KAAAmY,OAAA80G,aAHAjtH,KAAAkT,UAAA,GAUAgvC,OAAA,WACA,OAAAliD,KAAAkT,WACAlT,KAAAg2B,GAAA/vB,UAAA,IACA,IAQAinH,UAAA,SAAA76G,EAAA6B,KAMA62G,mBAAA,SAAA/0F,EAAA3jB,EAAA6B,GACA,GAEAi5G,GAFAR,EAAA3sH,KAAA2sH,cACA7C,GAAA9pH,KAAA+mB,QAAA/hB,IAAA,mBAEA,OAAAqN,GAAArS,KAAA8sH,aAAA54G,EAAAlU,KAAAgtH,cAAA36G,EAAA,GAAA6B,EAAA,EACA,MAEAi5G,EAAAntH,KAAAktH,UAAAl3F,EAAA3jB,EAAA6B,GACAy4G,IAAAQ,IACAR,IAAAz2F,GAAA4zF,GACA9pH,KAAAotH,kBAEAptH,KAAA2sH,cAAAQ,EACAA,IAAAj3F,GAAA4zF,GACA9pH,KAAAqtH,mBAEA,KAQA1C,qBAAA,WACA,MAAA3qH,MAAA2sH,gBAAAz2F,IACAl2B,KAAAotH,kBACAptH,KAAA2sH,cAAAz2F,GACA,IAKAm3F,gBAAA,WACArtH,KAAAstH,iBAAA,IAGAF,gBAAA,WACAptH,KAAAstH,iBAAA,IAGAA,gBAAA,SAAAvrE,KAKAipE,wBAAA,WACA,GAGA3gF,GAAAkjF,EAAAC,EAAA5F,EAAAvnH,EAAAkB,EACAksH,EAAAC,EAAAC,EAAAC,EACAC,EAAA9hF,EAAA+hF,EAAA9pH,EALA+iB,EAAA/mB,KAAA+mB,QACAhO,EAAA,GACAg1G,IAIA,IAAA/tH,KAAA2sH,gBAAAz2F,EACA,MAAA,EAIA,IAFAmU,EAAArqC,KAAAguH,yBACAH,EAAA9mG,EAAA/hB,IAAA,oBAEA,MAAA6oH,GAAA7tH,KAAA+mB,EAAAsjB,EAMA,IAJAtjB,EAAA/hB,IAAA,uBACA+T,GAAA,6BAAAgO,EAAA/hB,IAAA,qBAAA,YAEAuoH,EAAAvtH,KAAA+mB,QAAA/hB,IAAA,kBACAuoH,EACA,MAAA,EAUA,IARAvqH,EAAAgK,QAAAugH,KACAA,GAAAA,IAEAvqH,EAAAgK,QAAAq9B,KACAA,GAAAA,IAEAojF,EAAAztH,KAAA+mB,QAAA/hB,IAAA,0BACA0oH,EAAA1tH,KAAA+mB,QAAA/hB,IAAA,6BACAyoH,GAAAC,EAAA,CAGA,IADAC,KACApsH,EAAA8oC,EAAA1pC,OAAAY,KACAqsH,EAAAvjF,EAAA9oC,GAAAmsH,IACA1pH,EAAAhB,EAAAyD,QAAAmnH,EAAAH,MAAA,IACAE,EAAA3pH,GAAAqmC,EAAA9oC,GAGA8oC,GAAAsjF,EAIA,IAFAH,EAAAD,EAAA5sH,OACAmtH,EAAAzjF,EAAA1pC,OACAY,EAAA,EAAAA,EAAAisH,EAAAjsH,IAMA,IALAwqC,EAAAwhF,EAAAhsH,GACA,gBAAAwqC,KACAA,EAAA,GAAAo1E,GAAAp1E,IAEA67E,EAAA77E,EAAA67E,QAAA,WACA5jH,EAAA,EAAAA,EAAA8pH,EAAA9pH,IACAqmC,EAAArmC,GAAAiqH,QAAAlnG,EAAA/hB,IAAA,qBACAhC,EAAAgF,OAAAqiC,EAAArmC,IACAs1C,OAAAvyB,EAAA/hB,IAAA,iBACAkpH,OAAAnnG,EAAA/hB,IAAA,mBAEA3E,EAAA0rC,EAAAmW,OAAA7X,EAAArmC,GAAA+iB,EAAA/hB,IAAA,uBAAA+hB,GACAgnG,EAAAxnH,KAAA,eAAAqhH,EAAA,KAAAvnH,EAAA,UAIA,OAAA0tH,GAAAptH,OACAoY,EAAAg1G,EAAAn/G,KAAA,MAEA,IAGAo/G,uBAAA,aAEAG,mBAAA,SAAAC,EAAArnG,GACA,GAEA5jB,GAAAkrH,EAAAC,EAAA/sH,EAFAgtH,EAAAxnG,EAAA/hB,IAAA,kBACAwpH,EAAAznG,EAAA/hB,IAAA,mBAEA,IAAAupH,EACA,MAAAA,EAEA,IAAAC,IAEArrH,EAAA,qCAAAiB,KAAAgqH,IAAA,8CAAAhqH,KAAAgqH,IACA,CAGA,IAFAE,KACAD,EAAA,IAAAD,EAAAztH,OAAA,GAAA,EACAY,EAAA,EAAAA,EAAA,EAAAA,IACA+sH,EAAA/sH,GAAA6/G,EAAAh3G,EAAAs0B,MAAAhV,SAAAvmB,EAAA5B,EAAA,GAAA,IAAA8sH,EAAAG,GAAA,EAAA,IAEA,OAAA,OAAAF,EAAA1/G,KAAA,KAAA,IAIA,MAAAw/G,MAKArM,GACAuL,gBAAA,SAAAvrE,GACA,GAGA0sE,GAHA9B,EAAA3sH,KAAA2sH,cACAx0G,EAAAnY,KAAAmY,OACAu2G,EAAA1uH,KAAA2uH,aAAAhC,EAGA+B,KACAD,EAAAzuH,KAAA4uH,aAAAjC,EAAA5qE,GACA/+C,EAAAgK,QAAAyhH,IAAAzrH,EAAAgK,QAAA0hH,IACAv2G,EAAA02G,kBAAAH,EAAAD,GACAzuH,KAAA2uH,aAAAhC,GAAA3pH,EAAA4F,IAAA6lH,EAAA,SAAAK,GACA,MAAAA,GAAAv8G,OAGA4F,EAAA42G,iBAAAL,EAAAD,GACAzuH,KAAA2uH,aAAAhC,GAAA8B,EAAAl8G,MAKA2vC,OAAA,WACA,GAGA8sE,GAAA3xE,EAAA97C,EAAAyC,EAHAy5C,EAAAz9C,KAAAy9C,OACAtlC,EAAAnY,KAAAmY,OACAw2G,EAAA3uH,KAAA2uH,YAGA,IAAA3uH,KAAA2sC,IAAA66E,OAAAtlE,OAAA7gD,KAAArB,MAAA,CAGA,IAAAuB,EAAAk8C,EAAA98C,OAAAY,KAEA,GADAytH,EAAAhvH,KAAA4uH,aAAArtH,GAEA,GAAAyB,EAAAgK,QAAAgiH,GAAA,CAEA,IADA3xE,KACAr5C,EAAAgrH,EAAAruH,OAAAqD,KACAgrH,EAAAhrH,GAAA8f,SACAu5B,EAAA92C,KAAAyoH,EAAAhrH,GAAAuO,GAEAo8G,GAAAptH,GAAA87C,MAEA2xE,GAAAlrG,SACA6qG,EAAAptH,GAAAytH,EAAAz8G,OAIAo8G,GAAAptH,GAAA,IAGA4W,GAAA+pC,YAOAl/C,EAAA2N,GAAAswG,UAAAjuD,KAAAA,EAAAkuD,EAAAl+G,EAAA2N,GAAAswG,UAAAyL,OACA7rH,KAAA,OAEAgK,KAAA,SAAAmrB,EAAAynB,EAAA12B,EAAAtd,EAAAiC,GACAsnD,EAAAw0D,OAAA38G,KAAAxJ,KAAArB,KAAAg2B,EAAAynB,EAAA12B,EAAAtd,EAAAiC,GACA1L,KAAAivH,YACAjvH,KAAAkvH,aACAlvH,KAAAmvH,WACAnvH,KAAAovH,WACApvH,KAAAqvH,WACArvH,KAAAsvH,iBAAA,KACAtvH,KAAAuvH,YAAA,KACAvvH,KAAA4sH,cAGAM,UAAA,SAAAl3F,EAAA3jB,EAAA6B,GACA,GAAA3S,GACA2tH,EAAAlvH,KAAAkvH,SACA,KAAA3tH,EAAA2tH,EAAAvuH,OAAAY,KACA,GAAA,OAAA2tH,EAAA3tH,IAAA8Q,GAAA68G,EAAA3tH,GAAA,IAAA8Q,GAAA68G,EAAA3tH,GAAA,GACA,MAAA2tH,GAAA3tH,GAAA,EAGA,OAAA20B,IAGA83F,uBAAA,WACA,GAAArB,GAAA3sH,KAAA2sH,aACA,QACAsB,OAAA,OAAAjuH,KAAAovH,QAAAzC,GACAt6G,EAAArS,KAAAmvH,QAAAxC,GACAz4G,EAAAlU,KAAAovH,QAAAzC,GACAyB,MAAApuH,KAAA+mB,QAAA/hB,IAAA,aACA89G,UAAA9iH,KAAA+mB,QAAA/hB,IAAA,aACAisB,OAAA07F,IAIAU,gBAAA,WACA,GAOAmC,GAAA9kD,EAPAiiD,EAAA3sH,KAAA2sH,cACAx0G,EAAAnY,KAAAmY,OACAs3G,EAAAzvH,KAAAivH,SAAAtC,GACA5lG,EAAA/mB,KAAA+mB,QACAo9F,EAAAp9F,EAAA/hB,IAAA,cACAi/G,EAAAl9F,EAAA/hB,IAAA,sBACAk/G,EAAAn9F,EAAA/hB,IAAA,qBAGAyqH,KAGAtL,GAAAF,IACAuL,EAAAr3G,EAAAu3G,WAAAD,EAAA,GAAAA,EAAA,GACAtL,EAAAjuF,EAAA+tF,GACAjkH,KAAA2vH,gBAAAH,EAAAj9G,GACA4F,EAAAy3G,iBAAA5vH,KAAAuvH,YAAAC,IAEAtL,IACAx5C,EAAAvyD,EAAA03G,SAAAJ,EAAA,GAAAzvH,KAAA8vH,UAAAL,EAAA,GACAzvH,KAAA8vH,UAAA9vH,KAAAgtH,aAAA9I,GACAlkH,KAAA+vH,gBAAArlD,EAAAn4D,GACA4F,EAAAy3G,iBAAA5vH,KAAAuvH,YAAA7kD,MAIA0iD,gBAAA,WACA,GAAAj1G,GAAAnY,KAAAmY,MACAnY,MAAA2vH,kBACAx3G,EAAA63G,cAAAhwH,KAAA2vH,iBACA3vH,KAAA2vH,gBAAA,MAEA3vH,KAAA+vH,kBACA53G,EAAA63G,cAAAhwH,KAAA+vH,iBACA/vH,KAAA+vH,gBAAA,OAIAE,WAAA,WACA,GAKA1uH,GAAA2oB,EAAAgmG,EAAAljH,EAAA42D,EALAnmB,EAAAz9C,KAAAy9C,OACA0yE,EAAA1yE,EAAA98C,OACAwuH,EAAAnvH,KAAAmvH,QACAC,EAAApvH,KAAAovH,QACAC,EAAArvH,KAAAqvH,OAEA,KAAA9tH,EAAA,EAAAA,EAAA4uH,EAAA5uH,IACA2oB,EAAAuzB,EAAAl8C,GACA2uH,EAAA,gBAAAzyE,GAAAl8C,GACAyL,EAAA,gBAAAywC,GAAAl8C,IAAAk8C,EAAAl8C,YAAAwL,OACA62D,EAAAssD,GAAAzyE,EAAAl8C,GAAA2O,MAAA,KACAggH,GAAA,IAAAtsD,EAAAjjE,QACAwuH,EAAA5oH,KAAAimF,OAAA5oB,EAAA,KACAwrD,EAAA7oH,KAAAimF,OAAA5oB,EAAA,KACAyrD,EAAA9oH,KAAAimF,OAAA5oB,EAAA,MACA52D,GACAmiH,EAAA5oH,KAAA2jB,EAAA,IACAklG,EAAA7oH,KAAA2jB,EAAA,IACAmlG,EAAA9oH,KAAA2jB,EAAA,MAEAilG,EAAA5oH,KAAAhF,GACA,OAAAk8C,EAAAl8C,IAAA,SAAAk8C,EAAAl8C,GACA6tH,EAAA7oH,KAAA,OAEA6oH,EAAA7oH,KAAAimF,OAAAtiE,IACAmlG,EAAA9oH,KAAAimF,OAAAtiE,KAIAlqB,MAAA+mB,QAAA/hB,IAAA,aACAmqH,EAAAnvH,KAAA+mB,QAAA/hB,IAAA,YAGAhF,KAAAowH,KAAApwH,KAAAqwH,QAAAjmH,EAAAC,IAAA7H,MAAA4H,EAAAilH,GACArvH,KAAAswH,KAAAtwH,KAAAuwH,QAAAnmH,EAAAkvD,IAAA92D,MAAA4H,EAAAilH,GAEArvH,KAAAwwH,KAAApmH,EAAAC,IAAA7H,MAAA4H,EAAA+kH,GACAnvH,KAAAywH,KAAArmH,EAAAkvD,IAAA92D,MAAA4H,EAAA+kH,GAEAnvH,KAAAmvH,QAAAA,EACAnvH,KAAAovH,QAAAA,EACApvH,KAAAqvH,QAAAA,GAIAqB,oBAAA,WACA,GAAA3pG,GAAA/mB,KAAA+mB,QACAw9F,EAAAx9F,EAAA/hB,IAAA,kBACAw/G,EAAAz9F,EAAA/hB,IAAA,iBAEAu/G,KAAAruF,IACAquF,EAAAvkH,KAAAswH,OACAtwH,KAAAswH,KAAA/L,GAEAC,EAAAxkH,KAAAowH,OACApwH,KAAAowH,KAAA5L,IAGAz9F,EAAA/hB,IAAA,mBAAAkxB,IAAAnP,EAAA/hB,IAAA,mBAAA+hB,EAAA/hB,IAAA,iBAAAhF,KAAAswH,QACAtwH,KAAAswH,KAAAvpG,EAAA/hB,IAAA,kBAEA+hB,EAAA/hB,IAAA,mBAAAkxB,IAAAnP,EAAA/hB,IAAA,mBAAA+hB,EAAA/hB,IAAA,iBAAAhF,KAAAowH,QACApwH,KAAAowH,KAAArpG,EAAA/hB,IAAA,kBAEA+hB,EAAA/hB,IAAA,oBAAAkxB,IAAAnP,EAAA/hB,IAAA,oBAAA+hB,EAAA/hB,IAAA,kBAAAhF,KAAAywH,QACAzwH,KAAAywH,KAAA1pG,EAAA/hB,IAAA,mBAEA+hB,EAAA/hB,IAAA,oBAAAkxB,IAAAnP,EAAA/hB,IAAA,oBAAA+hB,EAAA/hB,IAAA,kBAAAhF,KAAAwwH,QACAxwH,KAAAwwH,KAAAzpG,EAAA/hB,IAAA,oBAKA2rH,gBAAA,SAAAC,EAAAd,EAAA9C,EAAAF,EAAA+D,GACA,GAAAtM,GAAAvkH,KAAA+mB,QAAA/hB,IAAA,kBACAw/G,EAAAxkH,KAAA+mB,QAAA/hB,IAAA,kBACA8rH,EAAAhB,EAAA1lH,EAAAs0B,MAAAsuF,EAAAA,IAAAxI,EAAAxkH,KAAAswH,MAAAO,IACAnlH,EAAAtB,EAAAs0B,MAAAsuF,GAAAxI,EAAAD,GAAAsM,EACA7wH,MAAAmY,OAAA44G,SAAAH,EAAAE,EAAAhE,EAAAphH,EAAAwqB,EAAAl2B,KAAA+mB,QAAA/hB,IAAA,qBAAA8e,UAGAo+B,OAAA,WACA,GAOA8uE,GAAAH,EAAAI,EACAnB,EAAAc,EACAnB,EAAAyB,EAAAC,EAAA9+G,EAAA6B,EAAAk9G,EAAAC,EAAAC,EACAjgH,EAAAoC,EAAA89G,EAAAC,EAAAC,EAAAC,EACAC,EAAAC,EAAAxD,EAAAe,EAAAC,EAAA7tH,EAXAwlB,EAAA/mB,KAAA+mB,QACA5O,EAAAnY,KAAAmY,OACA20G,EAAA9sH,KAAA8sH,YACAE,EAAAhtH,KAAAgtH,aACAiC,EAAAjvH,KAAAivH,SACA9K,EAAAp9F,EAAA/hB,IAAA,cACAkqH,EAAAlvH,KAAAkvH,SAOA,IAAAl8D,EAAAw0D,OAAAtlE,OAAA7gD,KAAArB,QAIAA,KAAAiwH,aACAjwH,KAAA0wH,sBAEAvB,EAAAnvH,KAAAmvH,QACAC,EAAApvH,KAAAovH,QAEApvH,KAAAqvH,QAAA1uH,UAAAX,KAAAovH,QAAAzuH,OAAA,IAAA,CA+CA,IA1CAmvH,EAAAc,EAAA,EAEAI,EAAAhxH,KAAAwwH,KAAAxwH,KAAAywH,OAAA,EAAA,EAAAzwH,KAAAwwH,KAAAxwH,KAAAywH,KACAI,EAAA7wH,KAAAowH,KAAApwH,KAAAswH,OAAA,EAAA,EAAAtwH,KAAAowH,KAAApwH,KAAAswH,KACAW,EAAAjxH,KAAAovH,QAAAzuH,OAAA,EAEAwjH,IAAA2I,EAAA,EAAA3I,GAAA6I,EAAA,EAAA7I,KACAA,EAAA,GAEAA,IAEAyN,EAAA7qG,EAAA/hB,IAAA,wBAAA+hB,EAAA/hB,IAAA,uBACA4sH,GAAA7qG,EAAA/hB,IAAA,iBAAA+hB,EAAA/hB,IAAA,cAAAoqH,EAAA6B,KAAAjxH,KAAAswH,QACAtD,GAAA5iH,EAAA4vE,KAAAmqC,KAEAyN,GAAA7qG,EAAA/hB,IAAA,iBAAA+hB,EAAA/hB,IAAA,cAAAoqH,EAAA6B,KAAAjxH,KAAAowH,QACApD,GAAA5iH,EAAA4vE,KAAAmqC,GACA2L,GAAA1lH,EAAA4vE,KAAAmqC,KAEAyN,IACA7qG,EAAA/hB,IAAA,iBAAA+hB,EAAA/hB,IAAA,mBAAAoqH,EAAA,KAAApvH,KAAAswH,MAAAlB,EAAA,KAAApvH,KAAAowH,SACAQ,GAAAxmH,EAAA4vE,KAAAmqC,GACA2I,GAAA1iH,EAAA4vE,KAAAmqC,KAEAyN,GAAA7qG,EAAA/hB,IAAA,cACA+hB,EAAA/hB,IAAA,iBAAA+hB,EAAA/hB,IAAA,kBACAoqH,EAAA6B,KAAAjxH,KAAAswH,MAAAlB,EAAA6B,KAAAjxH,KAAAowH,SACAtD,GAAA1iH,EAAA4vE,KAAAmqC,KAKA6I,IAEAjmG,EAAA/hB,IAAA,oBAAAkxB,GAAAnP,EAAA/hB,IAAA,oBACAhF,KAAA2wH,gBAAAC,EAAAd,EAAA9C,EAAAF,EAAA+D,GAGAK,KACAC,GAAAD,GACA7/G,EAAAoC,EAAA,KACA89G,EAAAnC,EAAAzuH,OACAY,EAAA,EAAAA,EAAAgwH,EAAAhwH,IACA8Q,EAAA88G,EAAA5tH,GACA6vH,EAAAjC,EAAA5tH,EAAA,GACA2S,EAAAk7G,EAAA7tH,GACA8vH,EAAAT,EAAAxmH,EAAAs0B,OAAArsB,EAAArS,KAAAywH,OAAA3D,EAAAkE,IACAM,EAAA/vH,EAAAgwH,EAAA,EAAAX,EAAAxmH,EAAAs0B,OAAA0yF,EAAApxH,KAAAywH,OAAA3D,EAAAkE,IAAAlE,EACAr5G,EAAA49G,GAAAC,EAAAD,GAAA,EACAnC,EAAA3tH,IAAA8P,GAAA,EAAAoC,EAAAlS,GACA8P,EAAAoC,EACA,OAAAS,EACA3S,IACA,OAAA6tH,EAAA7tH,EAAA,KACA2vH,KACAC,EAAA5qH,KAAA2qH,IAEAjC,EAAA1oH,KAAA,QAGA2N,EAAAlU,KAAAswH,OACAp8G,EAAAlU,KAAAswH,MAEAp8G,EAAAlU,KAAAowH,OACAl8G,EAAAlU,KAAAowH,MAEAc,EAAAvwH,QAEAuwH,EAAA3qH,MAAA8qH,EAAAvB,EAAA9C,IAEAyC,GAAA4B,EAAAvB,EAAA1lH,EAAAs0B,MAAAsuF,EAAAA,IAAA94G,EAAAlU,KAAAswH,MAAAO,KACAK,EAAA3qH,KAAAkpH,GACAR,EAAA1oH,KAAAkpH,GAOA,KAHA+B,KACAC,KACAC,EAAAP,EAAAxwH,OACAY,EAAA,EAAAA,EAAAmwH,EAAAnwH,IACA2vH,EAAAC,EAAA5vH,GACA2vH,EAAAvwH,SACAomB,EAAA/hB,IAAA,eACAksH,EAAA3qH,MAAA2qH,EAAAA,EAAAvwH,OAAA,GAAA,GAAAmvH,EAAA9C,IACAyE,EAAAlrH,KAAA2qH,EAAAzuH,MAAA,IACAyuH,EAAA58G,OAIA48G,EAAAvwH,OAAA,IAEAuwH,EAAA,IAAAA,EAAA,GAAA,GAAAA,EAAA,GAAA,KAEAM,EAAAjrH,KAAA2qH,GAMA,KADAQ,EAAAD,EAAA9wH,OACAY,EAAA,EAAAA,EAAAmwH,EAAAnwH,IACA4W,EAAA05G,UAAAJ,EAAAlwH,GACAwlB,EAAA/hB,IAAA,aAAA+hB,EAAA/hB,IAAA,cAAA8e,QAQA,KALAiD,EAAA/hB,IAAA,oBAAAkxB,GAAAnP,EAAA/hB,IAAA,oBACAhF,KAAA2wH,gBAAAC,EAAAd,EAAA9C,EAAAF,EAAA+D,GAGAa,EAAAF,EAAA7wH,OACAY,EAAA,EAAAA,EAAAmwH,EAAAnwH,IACA4W,EAAA05G,UAAAL,EAAAjwH,GAAAwlB,EAAA/hB,IAAA,aAAAkxB,EACAnP,EAAA/hB,IAAA,cAAA8e,QAGA,IAAAqgG,GAAAp9F,EAAA/hB,IAAA,cAKA,IAJA2sH,EAAA5qG,EAAA/hB,IAAA,cACA2sH,EAAA3sH,MAAAkxB,IACAy7F,EAAA,GAAA/P,GAAA+P,IAEApwH,EAAA,EAAAA,EAAAgwH,EAAAhwH,IACA6sH,EAAAuD,EAAA3sH,IAAAoqH,EAAA7tH,IACA6sH,GACAj2G,EAAAu3G,WAAAkB,EAAAxmH,EAAAs0B,OAAAywF,EAAA5tH,GAAAvB,KAAAywH,OAAA3D,EAAAkE,IACAlB,EAAA1lH,EAAAs0B,MAAAsuF,EAAAA,IAAAoC,EAAA7tH,GAAAvB,KAAAswH,MAAAO,IACA1M,EAAAjuF,EACAk4F,GAAAtqG,QAKAqgG,IAAAp9F,EAAA/hB,IAAA,cAAA,OAAAoqH,EAAA6B,IACA94G,EAAAu3G,WAAAkB,EAAAxmH,EAAAs0B,OAAAywF,EAAAA,EAAAxuH,OAAA,GAAAX,KAAAywH,OAAA3D,EAAAkE,IACAlB,EAAA1lH,EAAAs0B,MAAAsuF,EAAAA,IAAAoC,EAAA6B,GAAAjxH,KAAAswH,MAAAO,IACA1M,EAAAjuF,EACAnP,EAAA/hB,IAAA,cAAA8e,SAEA9jB,KAAAowH,OAAApwH,KAAAuwH,UACApM,GAAAp9F,EAAA/hB,IAAA,kBACAqN,EAAA88G,EAAAnsH,EAAAyD,QAAAzG,KAAAuwH,QAAAnB,IACAj3G,EAAAu3G,WAAAkB,EAAAxmH,EAAAs0B,OAAArsB,EAAArS,KAAAywH,OAAA3D,EAAAkE,IACAlB,EAAA1lH,EAAAs0B,MAAAsuF,EAAAA,IAAAhtH,KAAAuwH,QAAAvwH,KAAAswH,MAAAO,IACA1M,EAAAjuF,EACAnP,EAAA/hB,IAAA,iBAAA8e,UAEAqgG,GAAAp9F,EAAA/hB,IAAA,kBACAqN,EAAA88G,EAAAnsH,EAAAyD,QAAAzG,KAAAqwH,QAAAjB,IACAj3G,EAAAu3G,WAAAkB,EAAAxmH,EAAAs0B,OAAArsB,EAAArS,KAAAywH,OAAA3D,EAAAkE,IACAlB,EAAA1lH,EAAAs0B,MAAAsuF,EAAAA,IAAAhtH,KAAAqwH,QAAArwH,KAAAswH,MAAAO,IACA1M,EAAAjuF,EACAnP,EAAA/hB,IAAA,iBAAA8e,WAIA9jB,KAAAuvH,YAAAp3G,EAAA25G,iBACA9xH,KAAA8vH,UAAAA,EACA33G,EAAA+pC,aAOAl/C,EAAA2N,GAAAswG,UAAApa,IAAAA,EAAAqa,EAAAl+G,EAAA2N,GAAAswG,UAAAyL,MAAA3K,GACAlhH,KAAA,MAEAgK,KAAA,SAAAmrB,EAAAynB,EAAA12B,EAAAtd,EAAAiC,GACA,GAOAqmH,GAAAC,EAAAC,EAAAC,EACAC,EAAA5wH,EAAA6wH,EAAAnqE,EAAAo9D,EAAAgN,EAAA/4D,EAAAjvD,EAAAioH,EAAAC,EACAC,EAAAC,EAAAzuH,EAAA0uH,EAAAC,EAAAzoG,EAAA0oG,EAAAC,EATA71D,EAAAtzC,SAAA3C,EAAA/hB,IAAA,YAAA,IACAsgH,EAAA57F,SAAA3C,EAAA/hB,IAAA,cAAA,IACA2/G,EAAA59F,EAAA/hB,IAAA,iBACA4/G,EAAA79F,EAAA/hB,IAAA,iBACAugH,EAAAx+F,EAAA/hB,IAAA,kBACA8tH,EAAA9rF,EAAAA,EACA+rF,IAAA/rF,EAAAA,EAOA,KAHA6/D,EAAA2gB,OAAA38G,KAAAxJ,KAAArB,KAAAg2B,EAAAynB,EAAA12B,EAAAtd,EAAAiC,GAGAnK,EAAA,EAAA6wH,EAAA30E,EAAA98C,OAAAY,EAAA6wH,EAAA7wH,IACA2oB,EAAAuzB,EAAAl8C,GACAwwH,EAAA,gBAAA,IAAA7nG,EAAA1Z,QAAA,MAAA,GACAuhH,GAAA/uH,EAAAgK,QAAAkd,MACAsoG,GAAA;AACAT,IACA7nG,EAAAuzB,EAAAl8C,GAAAggH,EAAAr3F,EAAAha,MAAA,OAEAga,EAAAtd,EAAAsd,EAAA,MACA8nG,EAAA5nH,EAAAkvD,IAAA92D,MAAA4H,EAAA8f,GACA+nG,EAAA7nH,EAAAC,IAAA7H,MAAA4H,EAAA8f,GACA8nG,EAAAc,IACAA,EAAAd,GAEAC,EAAAc,IACAA,EAAAd,GAKAjyH,MAAAwyH,QAAAA,EACAxyH,KAAA2uH,gBACA3uH,KAAAg9D,SAAAA,EACAh9D,KAAAslH,WAAAA,EACAtlH,KAAAgzH,cAAAh2D,EAAAsoD,EACAtlH,KAAAyJ,MAAAA,EAAAg0C,EAAA98C,OAAAq8D,GAAAvf,EAAA98C,OAAA,GAAA2kH,EAEAtlH,KAAA4sH,aAEArH,IACA+M,EAAA3N,IAAAzuF,IAAA8Q,EAAAA,GAAA29E,EACA4N,EAAA3N,IAAA1uF,EAAA8Q,EAAAA,EAAA49E,GAGAuN,KACAD,EAAAM,KAAAL,CACA,IAAAc,MACAC,IACA,KAAA3xH,EAAA,EAAA6wH,EAAA30E,EAAA98C,OAAAY,EAAA6wH,EAAA7wH,IACA,GAAAixH,EAKA,IAJAC,EAAAh1E,EAAAl8C,GACAk8C,EAAAl8C,GAAAoxH,KACAM,EAAA1xH,GAAA,EACA2wH,EAAA3wH,GAAA2xH,EAAA3xH,GAAA,EACAyC,EAAA,EAAA0uH,EAAAD,EAAA9xH,OAAAqD,EAAA0uH,EAAA1uH,IACAkmB,EAAAyoG,EAAA3uH,GAAAuhH,EAAAnE,EAAAqR,EAAAzuH,GAAAsuH,EAAAC,GAAAE,EAAAzuH,GACA,OAAAkmB,IACAA,EAAA,IACA+oG,EAAA1xH,IAAA2oB,GAEA4oG,EAAA,GAAAC,EAAA,EACA7oG,EAAA,EACAgpG,EAAA3xH,IAAA6I,EAAA0yB,IAAA5S,GAEAgoG,EAAA3wH,IAAA2oB,EAGAgoG,EAAA3wH,IAAA6I,EAAA0yB,IAAA5S,GAAAA,EAAA,EAAA6oG,EAAAD,IAEAX,EAAA5rH,KAAA2jB,QAIAA,GAAAq7F,EAAAnE,EAAA3jE,EAAAl8C,GAAA+wH,EAAAC,GAAA90E,EAAAl8C,GACA2oB,EAAAuzB,EAAAl8C,GAAA+/G,EAAAp3F,GACA,OAAAA,GACAioG,EAAA5rH,KAAA2jB,EAIAlqB,MAAAqK,IAAAA,EAAAD,EAAAC,IAAA7H,MAAA4H,EAAA+nH,GACAnyH,KAAAs5D,IAAAA,EAAAlvD,EAAAkvD,IAAA92D,MAAA4H,EAAA+nH,GACAnyH,KAAA+yH,SAAAA,EAAAP,EAAApoH,EAAAC,IAAA7H,MAAA4H,EAAA6oH,GAAA5oH,EACArK,KAAA8yH,SAAAA,EAAAN,EAAApoH,EAAAkvD,IAAA92D,MAAA4H,EAAA+nH,GAAA74D,EAEAvyC,EAAA/hB,IAAA,mBAAAkxB,IAAAnP,EAAA/hB,IAAA,mBAAA+hB,EAAA/hB,IAAA,iBAAAs0D,KACAA,EAAAvyC,EAAA/hB,IAAA,kBAEA+hB,EAAA/hB,IAAA,mBAAAkxB,IAAAnP,EAAA/hB,IAAA,mBAAA+hB,EAAA/hB,IAAA,iBAAAqF,KACAA,EAAA0c,EAAA/hB,IAAA,kBAGAhF,KAAAqlH,SAAAA,EAAAt+F,EAAA/hB,IAAA,YAAA,GAEAqtH,EADA/4D,GAAA,GAAAjvD,GAAA,GAAAg7G,EACA,EACA,GAAAA,EACA/rD,EACAA,EAAA,EACAA,EAEAjvD,EAEArK,KAAAqyH,YAAAA,EAEApqE,EAAAuqE,EAAApoH,EAAAC,IAAA7H,MAAA4H,EAAA8nH,GAAA9nH,EAAAC,IAAA7H,MAAA4H,EAAA8oH,GAAA7oH,EAAAivD,EAIAt5D,KAAAmzH,eAAA9N,GAAA/rD,EAAA,EAAAt5D,KAAAgtH,aAAA,EAAAhtH,KAAAgtH,aAAA,EAEA1zD,EAAA+4D,GACAQ,EAAAL,GAAAnoH,GAAA,EAAA0oH,EAAA1oH,EACAuoH,GAAAC,EAAAR,GAAApqE,EAAAjoD,KAAAgtH,aACA4F,IAAAxoH,EAAA4vE,KAAA44C,KACA5yH,KAAAmzH,gBAAA,EACAP,EAAAxoH,EAAA4vE,KAAA44C,KAGAA,EAAA5yH,KAAAgtH,aAEAhtH,KAAA4yH,QAAAA,EAEA5vH,EAAAgK,QAAA+Z,EAAA/hB,IAAA,cACAhF,KAAAozH,gBAAArsG,EAAA/hB,IAAA,YACAhF,KAAAqzH,gBAAA,OAEArzH,KAAAozH,gBAAA,KACApzH,KAAAqzH,gBAAAtsG,EAAA/hB,IAAA,YACAhF,KAAAqzH,iBAAArzH,KAAAqzH,gBAAAruH,MAAAkxB,IACAl2B,KAAAqzH,gBAAA,GAAAzR,GAAA5hH,KAAAqzH,mBAIArzH,KAAAioD,MAAAA,GAGAilE,UAAA,SAAAl3F,EAAA3jB,EAAA6B,GACA,GAAAiM,GAAA/V,EAAAy+B,MAAAx2B,EAAArS,KAAAgzH,cACA,OAAA7yG,GAAA,GAAAA,GAAAngB,KAAAy9C,OAAA98C,OAAAu1B,EAAA/V,GAGA6tG,uBAAA,WACA,GAGA16G,GAAA/R,EAHAorH,EAAA3sH,KAAA2sH,cACAlvE,EAAAikE,EAAA1hH,KAAAy9C,OAAAkvE,IACAxsG,IAEA,KAAA5e,EAAAk8C,EAAA98C,OAAAY,KACA+R,EAAAmqC,EAAAl8C,GACA4e,EAAA5Z,MACA0nH,OAAA,OAAA36G,EACAA,MAAAA,EACA86G,MAAApuH,KAAAszH,UAAA/xH,EAAA+R,EAAAq5G,GACA17F,OAAA07F,GAGA,OAAAxsG,IAGAmzG,UAAA,SAAAC,EAAAjgH,EAAAkgH,GACA,GAGApF,GAAAqF,EAHAL,EAAApzH,KAAAozH,gBACAC,EAAArzH,KAAAqzH,gBACAtsG,EAAA/mB,KAAA+mB,OAeA,OAZAqnG,GADApuH,KAAAwyH,QACAzrG,EAAA/hB,IAAA,mBAEAsO,EAAA,EAAAyT,EAAA/hB,IAAA,eAAA+hB,EAAA/hB,IAAA,YAEA,IAAAsO,GAAAyT,EAAA/hB,IAAA,eAAAkxB,IACAk4F,EAAArnG,EAAA/hB,IAAA,cAEAquH,IAAAI,EAAAJ,EAAAruH,IAAAsO,IACA86G,EAAAqF,EACAL,GAAAA,EAAAzyH,OAAA6yH,IACApF,EAAAgF,EAAAI,IAEAxwH,EAAAgK,QAAAohH,GAAAA,EAAAmF,EAAAnF,EAAAztH,QAAAytH,GAMAQ,aAAA,SAAA4E,EAAAzxE,GACA,GAUA7tC,GAAAxI,EAAA0iH,EAAAH,EAAAyF,EAAAnyH,EAAA4uH,EAAAjmG,EAAAypG,EAAAC,EAVAtL,EAAAtoH,KAAAy9C,OAAA+1E,GACAzsG,EAAA/mB,KAAA+mB,QACAsrG,EAAAryH,KAAAqyH,YACAlyG,KACA8nC,EAAAjoD,KAAAioD,MACAuqE,EAAAxyH,KAAAwyH,QACAr6G,EAAAnY,KAAAmY,OACA9F,EAAAmhH,EAAAxzH,KAAAgzH,cACAG,EAAAnzH,KAAAmzH,eACAP,EAAA5yH,KAAA4yH,OASA,IANAtK,EAAAtlH,EAAAgK,QAAAs7G,GAAAA,GAAAA,GACA6H,EAAA7H,EAAA3nH,OACAupB,EAAAo+F,EAAA,GACA2F,EAAAzwE,EAAA,KAAA8qE,GACAsL,EAAAp2E,EAAA60E,EAAA/J,GAAA,GAEA2F,EACA,MAAAlnG,GAAA/hB,IAAA,cACAopH,EAAArsE,EAAAh7B,EAAA/hB,IAAA,aAAAhF,KAAAmuH,mBAAApnG,EAAA/hB,IAAA,aAAA+hB,GACA7S,EAAA0+G,EAAA,EAAAA,EAAA,EAAAA,EACAz6G,EAAA44G,SAAA1+G,EAAA6B,EAAAlU,KAAAg9D,SAAA,EAAA,EAAAoxD,EAAAA,IAEAl4F,CAIA,KADAw9F,EAAAd,EACArxH,EAAA,EAAAA,EAAA4uH,EAAA5uH,IAAA,CAGA,GAFA2oB,EAAAo+F,EAAA/mH,GAEAixH,GAAAtoG,IAAAmoG,EAAA,CACA,IAAAuB,GAAAD,EACA,QAEAA,IAAA,EAIAjoH,EADAu8C,EAAA,EACA79C,EAAAy+B,MAAAsqF,GAAA/oH,EAAA0yB,IAAA5S,EAAAmoG,GAAApqE,IAAA,EAEA,EAEA/9B,EAAAmoG,GAAAnoG,IAAAmoG,GAAA,IAAAO,GACA1+G,EAAAw/G,EACAA,GAAAhoH,IAEAwI,EAAA0+G,EAAAlnH,EACAknH,GAAAlnH,GAEA0iH,EAAApuH,KAAAszH,UAAA/xH,EAAA2oB,EAAAspG,GACAzxE,IACAqsE,EAAApuH,KAAAmuH,mBAAAC,EAAArnG,IAEA5G,EAAA5Z,KAAA4R,EAAA44G,SAAA1+G,EAAA6B,EAAAlU,KAAAg9D,SAAA,EAAAtxD,EAAA,EAAA0iH,EAAAA,IAEA,MAAA,KAAAjuG,EAAAxf,OACAwf,EAAA,GAEAA,KAOAnd,EAAA2N,GAAAswG,UAAAe,SAAAA,EAAAd,EAAAl+G,EAAA2N,GAAAswG,UAAAyL,MAAA3K,GACAlhH,KAAA,WAEAgK,KAAA,SAAAmrB,EAAAynB,EAAA12B,EAAAtd,EAAAiC,GACA,GAAAsxD,GAAAtzC,SAAA3C,EAAA/hB,IAAA,YAAA,IACAsgH,EAAA57F,SAAA3C,EAAA/hB,IAAA,cAAA,GACAg9G,GAAAwF,OAAA38G,KAAAxJ,KAAArB,KAAAg2B,EAAAynB,EAAA12B,EAAAtd,EAAAiC,GAEA1L,KAAA2uH,gBACA3uH,KAAAg9D,SAAAA,EACAh9D,KAAAslH,WAAAA,EACAtlH,KAAAgzH,cAAAh2D,EAAAsoD,EACAtlH,KAAAy9C,OAAAz6C,EAAA4F,IAAA60C,EAAA+uC,QACAxsF,KAAAyJ,MAAAA,EAAAg0C,EAAA98C,OAAAq8D,GAAAvf,EAAA98C,OAAA,GAAA2kH,EAEAtiH,EAAAgK,QAAA+Z,EAAA/hB,IAAA,cACAhF,KAAAozH,gBAAArsG,EAAA/hB,IAAA,YACAhF,KAAAqzH,gBAAA,OAEArzH,KAAAozH,gBAAA,KACApzH,KAAAqzH,gBAAAtsG,EAAA/hB,IAAA,YACAhF,KAAAqzH,iBAAArzH,KAAAqzH,gBAAAruH,MAAAkxB,IACAl2B,KAAAqzH,gBAAA,GAAAzR,GAAA5hH,KAAAqzH,mBAGArzH,KAAA4sH,cAGAM,UAAA,SAAAl3F,EAAA3jB,EAAA6B,GACA,MAAA9J,GAAAy+B,MAAAx2B,EAAArS,KAAAgzH,gBAGAhF,uBAAA,WACA,GAAArB,GAAA3sH,KAAA2sH,aACA,QACAsB,OAAAjuH,KAAAy9C,OAAAkvE,KAAAz2F,EACA5iB,MAAAtT,KAAAy9C,OAAAkvE,GACAyB,MAAApuH,KAAAszH,UAAAtzH,KAAAy9C,OAAAkvE,GAAAA,GACA17F,OAAA07F,IAIA2G,UAAA,SAAAhgH,EAAAkgH,GACA,GAIApF,GAAAqF,EAJAh2E,EAAAz9C,KAAAy9C,OACA12B,EAAA/mB,KAAA+mB,QACAqsG,EAAApzH,KAAAozH,gBACAC,EAAArzH,KAAAqzH,eAcA,OAVAjF,GADAiF,IAAAI,EAAAJ,EAAAruH,IAAAsO,IACAmgH,EACAL,GAAAA,EAAAzyH,OAAA6yH,EACAJ,EAAAI,GACA/1E,EAAA+1E,GAAA,EACAzsG,EAAA/hB,IAAA,eACAy4C,EAAA+1E,GAAA,EACAzsG,EAAA/hB,IAAA,eAEA+hB,EAAA/hB,IAAA,iBAKA4pH,aAAA,SAAA4E,EAAAzxE,GACA,GAGAirE,GAAAthH,EAAAmoH,EACAxhH,EAAA6B,EAAAk6G,EAJA3wE,EAAAz9C,KAAAy9C,OACA12B,EAAA/mB,KAAA+mB,QACA5O,EAAAnY,KAAAmY,MAmBA,IAfA60G,EAAA70G,EAAA80G,YACA4G,EAAAzpH,EAAAs0B,MAAAsuF,EAAA,GAEA36G,EAAAmhH,EAAAxzH,KAAAgzH,cACAv1E,EAAA+1E,GAAA,GACAt/G,EAAA2/G,EACAnoH,EAAAmoH,EAAA,GACAp2E,EAAA+1E,GAAA,GACAt/G,EAAA,EACAxI,EAAAmoH,EAAA,IAEA3/G,EAAA2/G,EAAA,EACAnoH,EAAA,GAEA0iH,EAAApuH,KAAAszH,UAAA71E,EAAA+1E,GAAAA,GACA,OAAApF,EAMA,MAHArsE,KACAqsE,EAAApuH,KAAAmuH,mBAAAC,EAAArnG,IAEA5O,EAAA44G,SAAA1+G,EAAA6B,EAAAlU,KAAAg9D,SAAA,EAAAtxD,EAAA,EAAA0iH,EAAAA,MAOAprH,EAAA2N,GAAAswG,UAAAgB,SAAAA,EAAAf,EAAAl+G,EAAA2N,GAAAswG,UAAAyL,MAAA3K,GACAlhH,KAAA,WAEAgK,KAAA,SAAAmrB,EAAAynB,EAAA12B,EAAAtd,EAAAiC,GACAu2G,EAAAuF,OAAA38G,KAAAxJ,KAAArB,KAAAg2B,EAAAynB,EAAA12B,EAAAtd,EAAAiC,GAEA1L,KAAA2uH,gBACA3uH,KAAAy9C,OAAAA,EAAAz6C,EAAA4F,IAAA60C,EAAA+uC,QACAxsF,KAAAs5D,IAAAlvD,EAAAkvD,IAAA92D,MAAA4H,EAAAqzC,GACAz9C,KAAAqK,IAAAD,EAAAC,IAAA7H,MAAA4H,EAAAqzC,GACAz9C,KAAAioD,MAAAjoD,KAAAqK,IAAArK,KAAAs5D,IACAt5D,KAAAyJ,MAAAA,EAAA,SAAAsd,EAAA/hB,IAAA,SAAA,EAAAy4C,EAAA98C,OAAAX,KAAAyJ,MACAzJ,KAAAoL,SAAAhB,EAAAy+B,MAAAp/B,EAAAg0C,EAAA98C,QACAX,KAAA8zH,UAAArqH,EAAAg0C,EAAA98C,OACAomB,EAAA/hB,IAAA,mBAAAkxB,IAAAnP,EAAA/hB,IAAA,mBAAA+hB,EAAA/hB,IAAA,iBAAAhF,KAAAs5D,OACAt5D,KAAAs5D,IAAAvyC,EAAA/hB,IAAA,kBAEA+hB,EAAA/hB,IAAA,mBAAAkxB,IAAAnP,EAAA/hB,IAAA,mBAAA+hB,EAAA/hB,IAAA,iBAAAhF,KAAAqK,OACArK,KAAAqK,IAAA0c,EAAA/hB,IAAA,kBAEAhF,KAAA4sH,aACA5sH,KAAAmY,SACAnY,KAAA+lB,WAAA,SAAAgB,EAAA/hB,IAAA,cAAAoF,EAAAs0B,MAAA,GAAA1+B,KAAAgtH,cAAAjmG,EAAA/hB,IAAA,gBAIAkoH,UAAA,SAAAl3F,EAAA3jB,EAAA6B,GACA,MAAA9J,GAAAy+B,MAAAx2B,EAAArS,KAAA8zH,YAGA9F,uBAAA,WACA,GAAArB,GAAA3sH,KAAA2sH,aACA,QACAsB,OAAAjuH,KAAAy9C,OAAAkvE,KAAAz2F,EACA5iB,MAAAtT,KAAAy9C,OAAAkvE,GACA17F,OAAA07F,IAIAiC,aAAA,SAAA4E,EAAAzxE,GACA,GAUA+uE,GAAA5mG,EAAAkkG,EAAA/7G,EAVAorC,EAAAz9C,KAAAy9C,OACA12B,EAAA/mB,KAAA+mB,QACAuyC,EAAAt5D,KAAAs5D,IACAjvD,EAAArK,KAAAqK,IACA49C,EAAAjoD,KAAAioD,MACA78C,EAAApL,KAAAoL,SACA+M,EAAAnY,KAAAmY,OACA60G,EAAAhtH,KAAAgtH,aACAjnG,EAAA/lB,KAAA+lB,WACAguG,EAAA/G,EAAAjnG,CAUA,OAPAmE,GAAAk3F,EAAA3jE,EAAA+1E,GAAAl6D,EAAAjvD,GACAgI,EAAAmhH,EAAApoH,EACA0lH,EAAA1mH,EAAAs0B,MAAAq1F,EAAAA,IAAA7pG,EAAAovC,GAAArR,IACAmmE,EAAArnG,EAAA/hB,IAAA,mBAAAklB,EAAAnD,EAAA/hB,IAAA,kBAAA+hB,EAAA/hB,IAAA,kBAAA+hB,EAAA/hB,IAAA,aACA+8C,IACAqsE,EAAApuH,KAAAmuH,mBAAAC,EAAArnG,IAEA5O,EAAA03G,SAAAx9G,EAAAy+G,EAAAz+G,EAAAy+G,EAAA/qG,EAAAqoG,MAOAprH,EAAA2N,GAAAswG,UAAAiB,OAAAA,EAAAhB,EAAAl+G,EAAA2N,GAAAswG,UAAAyL,OACA7rH,KAAA,SAEAgK,KAAA,SAAAmrB,EAAAynB,EAAA12B,EAAAtd,EAAAiC,GACA,GAAA4tD,GAAAjvD,EAAAi+G,CACApG,GAAAsF,OAAA38G,KAAAxJ,KAAArB,KAAAg2B,EAAAynB,EAAA12B,EAAAtd,EAAAiC,GAGA1L,KAAAy9C,OAAAA,EAAA8jE,EAAA9jE,GAEA6qE,EAAA7qE,EAAAh7C,QACA6lH,EAAA,GAAA,OAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GACAA,EAAA,GAAA,OAAA7qE,EAAA,GAAA6qE,EAAA,GAAAA,EAAA,GACAhvD,EAAAlvD,EAAAkvD,IAAA92D,MAAA4H,EAAAqzC,GACApzC,EAAAD,EAAAC,IAAA7H,MAAA4H,EAAAqzC,GAEA6b,EADAvyC,EAAA/hB,IAAA,UAAAkxB,EACAojC,EAAA,EAAAA,EAAA,EAEAvyC,EAAA/hB,IAAA,QAEAhF,KAAAs5D,IAAAA,EACAt5D,KAAAqK,IAAAA,EACArK,KAAAioD,MAAA59C,EAAAivD,EACAt5D,KAAAgvH,UACAhvH,KAAAg0H,eACAh0H,KAAAi0H,cACAj0H,KAAAyJ,MAAAA,EAAA,SAAAsd,EAAA/hB,IAAA,SAAA,QAAAyE,EACAzJ,KAAAmY,OAAAnY,KAAAimC,IAAA6iF,WAAAr/G,EAAAiC,EAAAqb,EAAA/hB,IAAA,cACAy4C,EAAA98C,SACAX,KAAAkT,UAAA,GAEAlT,KAAA4sH,cAGAM,UAAA,SAAAl3F,EAAA3jB,EAAA6B,GACA,GAAAggH,GAAAl0H,KAAAmY,OAAAg8G,WAAAn+F,EAAA3jB,EAAA6B,EACA,OAAAggH,KAAAh+F,GAAAl2B,KAAAgvH,OAAAkF,KAAAh+F,EAAAl2B,KAAAgvH,OAAAkF,GAAAh+F,GAGA83F,uBAAA,WACA,GAAArB,GAAA3sH,KAAA2sH,aACA,QACAyH,SAAAzH,EAAAx2F,OAAA,EAAA,GACA7iB,MAAAtT,KAAAy9C,OAAAkvE,EAAAx2F,OAAA,IACAk+F,OAAA1H,IAIAW,gBAAA,SAAAvrE,GACA,GAEAuyE,GAFA3H,EAAA3sH,KAAA2sH,cACAuH,EAAAl0H,KAAAg0H,YAAArH,EAGA,cADA3sH,MAAAgvH,OAAAkF,GACAvH,EAAAx2F,OAAA,EAAA,IACA,IAAA,IACAm+F,EAAAt0H,KAAAu0H,YAAA5H,EAAAx2F,OAAA,GAAA4rB,EACA,MACA,KAAA,IACAuyE,EAAAt0H,KAAAw0H,kBAAAzyE,EACA,MACA,KAAA,IACAuyE,EAAAt0H,KAAAy0H,aAAA1yE,GAGA/hD,KAAAg0H,YAAArH,GAAA2H,EAAA/hH,GACAvS,KAAAgvH,OAAAsF,EAAA/hH,IAAAo6G,EACA3sH,KAAAmY,OAAA42G,iBAAAmF,EAAAI,IAGAC,YAAA,SAAAG,EAAA3yE,GACA,GAAA4yE,GAAA30H,KAAAy9C,OAAAi3E,GACAE,EAAAxqH,EAAAs0B,MAAA1+B,KAAA8sH,cAAA6H,EAAA30H,KAAAs5D,KAAAt5D,KAAAioD,QACAmmE,EAAApuH,KAAA+mB,QAAA/hB,IAAA,eAAA0vH,EAAA,EAIA,OAHA3yE,KACAqsE,EAAApuH,KAAAmuH,mBAAAC,EAAApuH,KAAA+mB,UAEA/mB,KAAAmY,OAAA44G,SAAA,EAAA,EAAA6D,EAAA,EAAA50H,KAAAgtH,aAAA,EAAAoB,EAAAA,IAGAoG,kBAAA,SAAAzyE,GACA,GAAA8yE,GAAA70H,KAAAy9C,OAAA,GACAq3E,EAAA1qH,EAAAs0B,MAAA1+B,KAAA8sH,cAAA+H,EAAA70H,KAAAs5D,KAAAt5D,KAAAioD,QACAmmE,EAAApuH,KAAA+mB,QAAA/hB,IAAA,mBAIA,OAHA+8C,KACAqsE,EAAApuH,KAAAmuH,mBAAAC,EAAApuH,KAAA+mB,UAEA/mB,KAAAmY,OAAA44G,SAAA,EAAA3mH,EAAAs0B,MAAA,GAAA1+B,KAAAgtH,cAAA8H,EAAA,EACA1qH,EAAAs0B,MAAA,GAAA1+B,KAAAgtH,cAAA,EAAAoB,EAAAA,IAGAqG,aAAA,SAAA1yE,GACA,GAAAgzE,GAAA/0H,KAAAy9C,OAAA,GACAprC,EAAAjI,EAAAs0B,MAAA1+B,KAAA8sH,cAAAiI,EAAA/0H,KAAAs5D,KAAAt5D,KAAAioD,OAAAjoD,KAAA+mB,QAAA/hB,IAAA,eAAA,GACAgwH,EAAA5qH,EAAAs0B,MAAA,GAAA1+B,KAAAgtH,cACAiI,EAAAj1H,KAAAgtH,aAAA,EAAAgI,EACA5G,EAAApuH,KAAA+mB,QAAA/hB,IAAA,cAIA,OAHA+8C,KACAqsE,EAAApuH,KAAAmuH,mBAAAC,EAAApuH,KAAA+mB,UAEA/mB,KAAAmY,OAAA44G,SAAA1+G,EAAA2iH,EAAAh1H,KAAA+mB,QAAA/hB,IAAA,eAAA,EAAAiwH,EAAA,EAAA7G,EAAAA,IAGAlsE,OAAA,WACA,GAEA3gD,GAAA+yH,EAFAlC,EAAApyH,KAAAy9C,OAAA98C,OACAwX,EAAAnY,KAAAmY,MAEA,IAAA+pG,EAAAsF,OAAAtlE,OAAA7gD,KAAArB,MAAA,CAGA,IAAAuB,EAAA,EAAAA,EAAA6wH,EAAA7wH,IACA+yH,EAAAt0H,KAAAu0H,YAAAhzH,GAAAuiB,SACA9jB,KAAAgvH,OAAAsF,EAAA/hH,IAAA,IAAAhR,EACAvB,KAAAg0H,YAAA,IAAAzyH,GAAA+yH,EAAA/hH,EAEA,QAAAvS,KAAAy9C,OAAA,KACA62E,EAAAt0H,KAAAw0H,oBAAA1wG,SACA9jB,KAAAgvH,OAAAsF,EAAA/hH,IAAA,KACAvS,KAAAg0H,YAAAkB,GAAAZ,EAAA/hH,IAEA,OAAAvS,KAAAy9C,OAAA,KACA62E,EAAAt0H,KAAAy0H,eAAA3wG,SACA9jB,KAAAgvH,OAAAsF,EAAA/hH,IAAA,KACAvS,KAAAg0H,YAAAmB,GAAAb,EAAA/hH,IAEA4F,EAAA+pC,aAOAl/C,EAAA2N,GAAAswG,UAAAkB,IAAAA,EAAAjB,EAAAl+G,EAAA2N,GAAAswG,UAAAyL,OACA7rH,KAAA,MAEAgK,KAAA,SAAAmrB,EAAAynB,EAAA12B,EAAAtd,EAAAiC,GACA,GAAAnK,GAAAonH,EAAA,CAYA,IAVAxG,EAAAqF,OAAA38G,KAAAxJ,KAAArB,KAAAg2B,EAAAynB,EAAA12B,EAAAtd,EAAAiC,GAEA1L,KAAAgvH,UACAhvH,KAAAg0H,eACAh0H,KAAAy9C,OAAAA,EAAAz6C,EAAA4F,IAAA60C,EAAA+uC,QAEA,SAAAzlE,EAAA/hB,IAAA,WACAhF,KAAAyJ,MAAAzJ,KAAA0L,QAGA+xC,EAAA98C,OAAA,EACA,IAAAY,EAAAk8C,EAAA98C,OAAAY,KACAonH,GAAAlrE,EAAAl8C,EAGAvB,MAAA2oH,MAAAA,EACA3oH,KAAA4sH,aACA5sH,KAAAo1H,OAAAhrH,EAAAy+B,MAAAz+B,EAAAkvD,IAAAt5D,KAAA8sH,YAAA9sH,KAAAgtH,cAAA,IAGAE,UAAA,SAAAl3F,EAAA3jB,EAAA6B,GACA,GAAAggH,GAAAl0H,KAAAmY,OAAAg8G,WAAAn+F,EAAA3jB,EAAA6B,EACA,OAAAggH,KAAAh+F,GAAAl2B,KAAAgvH,OAAAkF,KAAAh+F,EAAAl2B,KAAAgvH,OAAAkF,GAAAh+F,GAGA83F,uBAAA,WACA,GAAArB,GAAA3sH,KAAA2sH,aACA,QACAsB,OAAAjuH,KAAAy9C,OAAAkvE,KAAAz2F,EACA5iB,MAAAtT,KAAAy9C,OAAAkvE,GACA72E,QAAA91C,KAAAy9C,OAAAkvE,GAAA3sH,KAAA2oH,MAAA,IACAyF,MAAApuH,KAAA+mB,QAAA/hB,IAAA,eAAA2nH,EAAA3sH,KAAA+mB,QAAA/hB,IAAA,eAAArE,QACAswB,OAAA07F,IAIAW,gBAAA,SAAAvrE,GACA,GAAA4qE,GAAA3sH,KAAA2sH,cACA0I,EAAAr1H,KAAAs1H,YAAA3I,EAAA5qE,GACAmyE,EAAAl0H,KAAAg0H,YAAArH,SACA3sH,MAAAgvH,OAAAkF,GACAl0H,KAAAmY,OAAA42G,iBAAAmF,EAAAmB,GACAr1H,KAAAg0H,YAAArH,GAAA0I,EAAA9iH,GACAvS,KAAAgvH,OAAAqG,EAAA9iH,IAAAo6G,GAGA2I,YAAA,SAAA9B,EAAAzxE,GACA,GASAx9C,GAAAC,EAAAjD,EAAA6wH,EAAAhE,EATAj2G,EAAAnY,KAAAmY,OACA4O,EAAA/mB,KAAA+mB,QACAquG,EAAAp1H,KAAAo1H,OACA/O,EAAAt/F,EAAA/hB,IAAA,eACAisB,EAAAlK,EAAA/hB,IAAA,UACAuwH,EAAA,EAAAnrH,EAAAod,GACAi2B,EAAAz9C,KAAAy9C,OACAkrE,EAAA3oH,KAAA2oH,MACAl1G,EAAAwd,EAAA,EAAA7mB,EAAAod,IAAAyJ,EAAA,KAAA,CAIA,KADAmhG,EAAA30E,EAAA98C,OACAY,EAAA,EAAAA,EAAA6wH,EAAA7wH,IAAA,CAMA,GALAgD,EAAAkP,EACAjP,EAAAiP,EACAk1G,EAAA,IACAnkH,EAAAiP,EAAA8hH,GAAA93E,EAAAl8C,GAAAonH,IAEA6K,IAAAjyH,EAMA,MALA6sH,GAAArnG,EAAA/hB,IAAA,eAAAzD,EAAAwlB,EAAA/hB,IAAA,eAAArE,QACAohD,IACAqsE,EAAApuH,KAAAmuH,mBAAAC,EAAArnG,IAGA5O,EAAAq9G,aAAAJ,EAAAA,EAAAA,EAAA/O,EAAA9hH,EAAAC,EAAA0xB,EAAAk4F,EAEA36G,GAAAjP,IAIA09C,OAAA,WACA,GAKAoyE,GAAA/yH,EALA4W,EAAAnY,KAAAmY,OACAslC,EAAAz9C,KAAAy9C,OACA12B,EAAA/mB,KAAA+mB,QACAquG,EAAAp1H,KAAAo1H,OACA/O,EAAAt/F,EAAA/hB,IAAA,cAGA,IAAAm9G,EAAAqF,OAAAtlE,OAAA7gD,KAAArB,MAAA,CAOA,IAJAqmH,GACAluG,EAAAu3G,WAAA0F,EAAAA,EAAAhrH,EAAAy+B,MAAAusF,EAAA/O,EAAA,GACAt/F,EAAA/hB,IAAA,eAAAkxB,EAAAmwF,GAAAviG,SAEAviB,EAAAk8C,EAAA98C,OAAAY,KACAk8C,EAAAl8C,KACA+yH,EAAAt0H,KAAAs1H,YAAA/zH,GAAAuiB,SACA9jB,KAAAg0H,YAAAzyH,GAAA+yH,EAAA/hH,GACAvS,KAAAgvH,OAAAsF,EAAA/hH,IAAAhR,EAGA4W,GAAA+pC,aAOAl/C,EAAA2N,GAAAswG,UAAA50E,IAAAA,EAAA60E,EAAAl+G,EAAA2N,GAAAswG,UAAAyL,OACA7rH,KAAA,MAEAgK,KAAA,SAAAmrB,EAAAynB,EAAA12B,EAAAtd,EAAAiC,GACA2gC,EAAAm7E,OAAA38G,KAAAxJ,KAAArB,KAAAg2B,EAAAynB,EAAA12B,EAAAtd,EAAAiC,GACA1L,KAAAy9C,OAAAz6C,EAAA4F,IAAA60C,EAAA+uC,QACAxsF,KAAAyJ,MAAA,SAAAsd,EAAA/hB,IAAA,SAAA,QAAAyE,EACAzJ,KAAA4sH,aACA5sH,KAAAy9C,OAAA98C,SACAX,KAAAkT,SAAA,IAOAg6G,UAAA,WACA,MAAA,IAGAc,uBAAA,WACA,GAAA7tG,KACA6pB,MAAA,KAAA12B,MAAAtT,KAAAy1H,UAAA,KACAzrF,MAAA,MAAA12B,MAAAtT,KAAAy1H,UAAA,KACAzrF,MAAA,KAAA12B,MAAAtT,KAAAy1H,UAAA,IAcA,OAZAz1H,MAAA01H,WAAAx/F,GACA/V,EAAA5Z,MAAAyjC,MAAA,KAAA12B,MAAAtT,KAAA01H,WAEA11H,KAAA21H,WAAAz/F,GACA/V,EAAA5Z,MAAAyjC,MAAA,KAAA12B,MAAAtT,KAAA21H,WAEA31H,KAAA41H,WAAA1/F,GACA/V,EAAA5Z,MAAAyjC,MAAA,KAAA12B,MAAAtT,KAAA41H,WAEA51H,KAAA61H,WAAA3/F,GACA/V,EAAA5Z,MAAAyjC,MAAA,KAAA12B,MAAAtT,KAAA61H,WAEA11G,GAGA+hC,OAAA,WACA,GASA0zE,GAAAF,EAAAI,EAAAC,EAAAC,EAAAC,EAAAJ,EAAAF,EAAAp0H,EACA23C,EAAAg9E,EAVA/9G,EAAAnY,KAAAmY,OACAslC,EAAAz9C,KAAAy9C,OACA20E,EAAA30E,EAAA98C,OACAomB,EAAA/mB,KAAA+mB,QACA+lG,EAAA9sH,KAAA8sH,YACAE,EAAAhtH,KAAAgtH,aACAmJ,EAAApvG,EAAA/hB,IAAA,mBAAAkxB,EAAA9rB,EAAAkvD,IAAA92D,MAAA4H,EAAAqzC,GAAA12B,EAAA/hB,IAAA,iBACAoxH,EAAArvG,EAAA/hB,IAAA,mBAAAkxB,EAAA9rB,EAAAC,IAAA7H,MAAA4H,EAAAqzC,GAAA12B,EAAA/hB,IAAA,iBACA4rH,EAAA,CAIA,IAAAvkF,EAAAm7E,OAAAtlE,OAAA7gD,KAAArB,MAAA,CAIA,GAAA+mB,EAAA/hB,IAAA,OACA+hB,EAAA/hB,IAAA,iBAAAy4C,EAAA98C,OAAA,GACA+0H,EAAAj4E,EAAA,GACAm4E,EAAAn4E,EAAA,GACAs4E,EAAAt4E,EAAA,GACAu4E,EAAAv4E,EAAA,GACAw4E,EAAAx4E,EAAA,GACAo4E,EAAAp4E,EAAA,GACAk4E,EAAAl4E,EAAA,KAEAm4E,EAAAn4E,EAAA,GACAs4E,EAAAt4E,EAAA,GACAu4E,EAAAv4E,EAAA,GACAw4E,EAAAx4E,EAAA,GACAo4E,EAAAp4E,EAAA,QAQA,IALAA,EAAAnsC,KAAA,SAAA7R,EAAAC,GAAA,MAAAD,GAAAC,IACAq2H,EAAA1U,EAAA5jE,EAAA,GACAu4E,EAAA3U,EAAA5jE,EAAA,GACAw4E,EAAA5U,EAAA5jE,EAAA,GACAq4E,EAAAG,EAAAF,EACAhvG,EAAA/hB,IAAA,gBAAA,CAEA,IADA4wH,EAAAC,EAAA3/F,EACA30B,EAAA,EAAAA,EAAA6wH,EAAA7wH,IACAq0H,IAAA1/F,GAAAunB,EAAAl8C,GAAAw0H,EAAAD,EAAA/uG,EAAA/hB,IAAA,gBACA4wH,EAAAn4E,EAAAl8C,IAEAk8C,EAAAl8C,GAAA00H,EAAAH,EAAA/uG,EAAA/hB,IAAA,gBACA6wH,EAAAp4E,EAAAl8C,GAGAm0H,GAAAj4E,EAAA,GACAk4E,EAAAl4E,EAAA20E,EAAA,OAEAwD,GAAAn4E,EAAA,GACAo4E,EAAAp4E,EAAA20E,EAAA,EAGApyH,MAAAy1H,WAAAM,EAAAC,EAAAC,GACAj2H,KAAA41H,SAAAA,EACA51H,KAAA61H,SAAAA,EACA71H,KAAA01H,SAAAA,EACA11H,KAAA21H,SAAAA,EAEAO,EAAApJ,GAAAsJ,EAAAD,EAAA,GACApvG,EAAA/hB,IAAA,kBACA4rH,EAAAxmH,EAAA4vE,KAAAjzD,EAAA/hB,IAAA,eACA8nH,GAAA,EAAA1iH,EAAA4vE,KAAAjzD,EAAA/hB,IAAA,eACAkxH,EAAApJ,GAAAsJ,EAAAD,EAAA,GACAT,EAAAE,GACAz9G,EAAAu3G,YAAAgG,EAAAS,GAAAD,EAAAtF,EACA5D,EAAA,EACAjmG,EAAA/hB,IAAA,cACA+hB,EAAA/hB,IAAA,oBACA+hB,EAAA/hB,IAAA,qBAAA8e,SAEA6xG,EAAAE,GACA19G,EAAAu3G,YAAAiG,EAAAQ,GAAAD,EAAAtF,EACA5D,EAAA,EACAjmG,EAAA/hB,IAAA,cACA+hB,EAAA/hB,IAAA,oBACA+hB,EAAA/hB,IAAA,qBAAA8e,UAKA3L,EAAA44G,SACA3mH,EAAAs0B,OAAAq3F,EAAAI,GAAAD,EAAAtF,GACAxmH,EAAAs0B,MAAA,GAAAsuF,GACA5iH,EAAAs0B,OAAAu3F,EAAAF,GAAAG,GACA9rH,EAAAs0B,MAAA,GAAAsuF,GACAjmG,EAAA/hB,IAAA,gBACA+hB,EAAA/hB,IAAA,iBAAA8e,SAEA3L,EAAA03G,SACAzlH,EAAAs0B,OAAAk3F,EAAAO,GAAAD,EAAAtF,GACAxmH,EAAAs0B,MAAAsuF,EAAA,GACA5iH,EAAAs0B,OAAAq3F,EAAAI,GAAAD,EAAAtF,GACAxmH,EAAAs0B,MAAAsuF,EAAA,GACAjmG,EAAA/hB,IAAA,cAAA8e,SACA3L,EAAA03G,SACAzlH,EAAAs0B,OAAAk3F,EAAAO,GAAAD,EAAAtF,GACAxmH,EAAAs0B,MAAAsuF,EAAA,GACA5iH,EAAAs0B,OAAAk3F,EAAAO,GAAAD,EAAAtF,GACAxmH,EAAAs0B,MAAAsuF,EAAAA,EAAA,GACAjmG,EAAA/hB,IAAA,iBAAA8e,SAEA3L,EAAA03G,SAAAzlH,EAAAs0B,OAAAm3F,EAAAM,GAAAD,EAAAtF,GACAxmH,EAAAs0B,MAAAsuF,EAAA,GACA5iH,EAAAs0B,OAAAu3F,EAAAE,GAAAD,EAAAtF,GACAxmH,EAAAs0B,MAAAsuF,EAAA,GACAjmG,EAAA/hB,IAAA,cAAA8e,SACA3L,EAAA03G,SACAzlH,EAAAs0B,OAAAm3F,EAAAM,GAAAD,EAAAtF,GACAxmH,EAAAs0B,MAAAsuF,EAAA,GACA5iH,EAAAs0B,OAAAm3F,EAAAM,GAAAD,EAAAtF,GACAxmH,EAAAs0B,MAAAsuF,EAAAA,EAAA,GACAjmG,EAAA/hB,IAAA,iBAAA8e,SAEA3L,EAAA03G,SACAzlH,EAAAs0B,OAAAs3F,EAAAG,GAAAD,EAAAtF,GACAxmH,EAAAs0B,MAAA,GAAAsuF,GACA5iH,EAAAs0B,OAAAs3F,EAAAG,GAAAD,EAAAtF,GACAxmH,EAAAs0B,MAAA,GAAAsuF,GACAjmG,EAAA/hB,IAAA,gBAAA8e,SACAiD,EAAA/hB,IAAA,YACAk0C,EAAA9uC,EAAA4vE,KAAAjzD,EAAA/hB,IAAA,eACAmT,EAAA03G,SACAzlH,EAAAs0B,OAAA3X,EAAA/hB,IAAA,UAAAmxH,GAAAD,EAAAtF,GACAxmH,EAAAs0B,MAAAsuF,EAAA,EAAA9zE,GACA9uC,EAAAs0B,OAAA3X,EAAA/hB,IAAA,UAAAmxH,GAAAD,EAAAtF,GACAxmH,EAAAs0B,MAAAsuF,EAAA,EAAA9zE,GACAnyB,EAAA/hB,IAAA,gBAAA8e,SACA3L,EAAA03G,SACAzlH,EAAAs0B,OAAA3X,EAAA/hB,IAAA,UAAAmxH,GAAAD,EAAAtF,EAAA13E,GACA9uC,EAAAs0B,MAAAsuF,EAAA,GACA5iH,EAAAs0B,OAAA3X,EAAA/hB,IAAA,UAAAmxH,GAAAD,EAAAtF,EAAA13E,GACA9uC,EAAAs0B,MAAAsuF,EAAA,GACAjmG,EAAA/hB,IAAA,gBAAA8e,UAEA3L,EAAA+pC,aAOAogE,EAAApB,GACAr2G,KAAA,SAAAsN,EAAA5F,EAAA1R,EAAAm3C,GACAh4C,KAAAmY,OAAAA,EACAnY,KAAAuS,GAAAA,EACAvS,KAAAa,KAAAA,EACAb,KAAAg4C,KAAAA,GAEAl0B,OAAA,WAEA,MADA9jB,MAAAmY,OAAAk+G,YAAAr2H,MACAA,QAIAuiH,EAAArB,GACAoV,SAAA,kBAEAzrH,KAAA,SAAApB,EAAAiC,EAAAyM,GACA1O,IAGAzJ,KAAAyJ,MAAAA,EACAzJ,KAAA0L,OAAAA,EACA1L,KAAAmY,OAAAA,EACAnY,KAAAuvH,YAAA,KACAp3G,EAAA,KACAA,EAAAA,EAAA,IAEAnV,EAAAqN,KAAA8H,EAAA,eAAAnY,QAGA6vH,SAAA,SAAA0G,EAAAC,EAAAC,EAAAC,EAAA7T,EAAAyB,GACA,MAAAtkH,MAAA6xH,YAAA0E,EAAAC,IAAAC,EAAAC,IAAA7T,EAAAyB,IAGAuN,UAAA,SAAAX,EAAArO,EAAAC,EAAAwB,GACA,MAAAtkH,MAAA22H,UAAA,SAAAzF,EAAArO,EAAAC,EAAAwB,KAGAoL,WAAA,SAAAr9G,EAAA6B,EAAAkhH,EAAAvS,EAAAC,EAAAwB,GACA,MAAAtkH,MAAA22H,UAAA,UAAAtkH,EAAA6B,EAAAkhH,EAAAvS,EAAAC,EAAAwB,KAGAkR,aAAA,SAAAnjH,EAAA6B,EAAAkhH,EAAAwB,EAAAC,EAAAhU,EAAAC,GACA,MAAA9iH,MAAA22H,UAAA,YAAAtkH,EAAA6B,EAAAkhH,EAAAwB,EAAAC,EAAAhU,EAAAC,KAGAiO,SAAA,SAAA1+G,EAAA6B,EAAAzK,EAAAiC,EAAAm3G,EAAAC,GACA,MAAA9iH,MAAA22H,UAAA,QAAAtkH,EAAA6B,EAAAzK,EAAAiC,EAAAm3G,EAAAC,KAGAgU,WAAA,WACA,MAAA92H,MAAAkpH,QAMA4I,eAAA,WACA,MAAA9xH,MAAAuvH,aAMA11G,MAAA,WACAuZ,MAAA,0BAGA2jG,QAAA,SAAA/gG,EAAA7d,GACAnV,EAAAmV,GAAAxP,KAAAqtB,IAMAghG,oBAAA,SAAAvtH,EAAAiC,EAAAw9G,GAEA,GAAApnH,EACAA,GAAA9B,KAAAs2H,SAAAlyH,KAAAsH,GACA5J,EACA9B,KAAAitH,YAAAnrH,EAAA,GAEA9B,KAAAitH,YAAAjqH,EAAAkmH,GAAAx9G,SAEA5J,EAAA9B,KAAAs2H,SAAAlyH,KAAAqF,GACA3H,EACA9B,KAAA+sH,WAAAjrH,EAAA,GAEA9B,KAAA+sH,WAAA/pH,EAAAkmH,GAAAz/G,SAOAktH,UAAA,SAAAM,EAAAC,GACA,GAAA3kH,GAAAowG,GAEA,OADAuU,GAAAjoH,QAAAsD,GACA,GAAA+vG,GAAAtiH,KAAAuS,EAAA0kH,EAAAC,IAMAb,YAAA,SAAA/B,GACAlhG,MAAA,gCAMA27F,iBAAA,SAAAmF,EAAAI,GACAlhG,MAAA,qCAMAw8F,iBAAA,SAAAsE,EAAAI,GACAlhG,MAAA,qCAMA48F,cAAA,SAAAkE,GACA9gG,MAAA,kCAMA+gG,WAAA,SAAAn+F,EAAA3jB,EAAA6B,GACAkf,MAAA,+BAMA8uB,OAAA,WACA9uB,MAAA,6BAIAovF,EAAAtB,EAAAqB,GACA13G,KAAA,SAAApB,EAAAiC,EAAAyM,EAAA6wG,GACAxG,EAAAgF,OAAA38G,KAAAxJ,KAAArB,KAAAyJ,EAAAiC,EAAAyM,GACAnY,KAAAkpH,OAAArpH,EAAAO,cAAA,UACA+X,EAAA,KACAA,EAAAA,EAAA,IAEAnV,EAAAqN,KAAA8H,EAAA,eAAAnY,MACAgD,EAAAhD,KAAAkpH,QAAAnlH,KAAAe,QAAA,eAAA2E,MAAAA,EAAAiC,OAAAA,EAAA61C,cAAA,QACAvhD,KAAA+2H,QAAA/2H,KAAAkpH,OAAA/wG,GACAnY,KAAAg3H,oBAAAvtH,EAAAiC,EAAA1L,KAAAkpH,QACAlpH,KAAAkpH,OAAAz/G,MAAAzJ,KAAA+sH,WACA/sH,KAAAkpH,OAAAx9G,OAAA1L,KAAAitH,YACAjtH,KAAAgpH,SAAAA,EACAhpH,KAAAgvH,UACAhvH,KAAAm3H,YACAn3H,KAAAo3H,qBAAAlhG,EACAlzB,EAAAhD,KAAAkpH,QAAAnlH,KAAA0F,MAAAzJ,KAAA+sH,WAAArhH,OAAA1L,KAAAitH,eAGAoK,YAAA,SAAAxU,EAAAC,EAAAwB,GACA,GAAAp3F,GAAAltB,KAAAkpH,OAAAC,WAAA,KAQA,OAPAtG,KAAA3sF,IACAhJ,EAAAoqG,YAAAzU,GAEA31F,EAAAo3F,UAAAA,IAAApuF,EAAA,EAAAouF,EACAxB,IAAA5sF,IACAhJ,EAAAqqG,UAAAzU,GAEA51F,GAGArT,MAAA,WACA,GAAAqT,GAAAltB,KAAAq3H,aACAnqG,GAAAsqG,UAAA,EAAA,EAAAx3H,KAAA+sH,WAAA/sH,KAAAitH,aACAjtH,KAAAgvH,UACAhvH,KAAAm3H,YACAn3H,KAAAo3H,qBAAAlhG,GAGAuhG,WAAA,SAAAvD,EAAAhD,EAAArO,EAAAC,EAAAwB,GACA,GACA/iH,GAAAmwH,EADAxkG,EAAAltB,KAAAq3H,YAAAxU,EAAAC,EAAAwB,EAIA,KAFAp3F,EAAAwqG,YACAxqG,EAAAyqG,OAAAzG,EAAA,GAAA,GAAA,GAAAA,EAAA,GAAA,GAAA,IACA3vH,EAAA,EAAAmwH,EAAAR,EAAAvwH,OAAAY,EAAAmwH,EAAAnwH,IACA2rB,EAAA0qG,OAAA1G,EAAA3vH,GAAA,GAAA,GAAA2vH,EAAA3vH,GAAA,GAAA,GAEAshH,KAAA3sF,GACAhJ,EAAA2qG,SAEA/U,IAAA5sF,GACAhJ,EAAA4qG,OAEA93H,KAAA+3H,UAAA7hG,GAAAl2B,KAAAg4H,UAAA9hG,GACAhJ,EAAA+qG,cAAAj4H,KAAA+3H,QAAA/3H,KAAAg4H,WACAh4H,KAAAo3H,qBAAAlD,IAIAgE,YAAA,SAAAhE,EAAA7hH,EAAA6B,EAAAkhH,EAAAvS,EAAAC,EAAAwB,GACA,GAAAp3F,GAAAltB,KAAAq3H,YAAAxU,EAAAC,EAAAwB,EACAp3F,GAAAwqG,YACAxqG,EAAAirG,IAAA9lH,EAAA6B,EAAAkhH,EAAA,EAAA,EAAAhrH,EAAAod,IAAA,GACAxnB,KAAA+3H,UAAA7hG,GAAAl2B,KAAAg4H,UAAA9hG,GACAhJ,EAAA+qG,cAAAj4H,KAAA+3H,QAAA/3H,KAAAg4H,WACAh4H,KAAAo3H,qBAAAlD,GAEArR,IAAA3sF,GACAhJ,EAAA2qG,SAEA/U,IAAA5sF,GACAhJ,EAAA4qG,QAIAM,cAAA,SAAAlE,EAAA7hH,EAAA6B,EAAAkhH,EAAAwB,EAAAC,EAAAhU,EAAAC,GACA,GAAA51F,GAAAltB,KAAAq3H,YAAAxU,EAAAC,EACA51F,GAAAwqG,YACAxqG,EAAAyqG,OAAAtlH,EAAA6B,GACAgZ,EAAAirG,IAAA9lH,EAAA6B,EAAAkhH,EAAAwB,EAAAC,GAAA,GACA3pG,EAAA0qG,OAAAvlH,EAAA6B,GACAgZ,EAAAmrG,YACAxV,IAAA3sF,GACAhJ,EAAA2qG,SAEA/U,GACA51F,EAAA4qG,OAEA93H,KAAA+3H,UAAA7hG,GAAAl2B,KAAAg4H,UAAA9hG,GACAhJ,EAAA+qG,cAAAj4H,KAAA+3H,QAAA/3H,KAAAg4H,WACAh4H,KAAAo3H,qBAAAlD,IAIAoE,UAAA,SAAApE,EAAA7hH,EAAA6B,EAAAzK,EAAAiC,EAAAm3G,EAAAC,GACA,MAAA9iH,MAAAy3H,WAAAvD,IAAA7hH,EAAA6B,IAAA7B,EAAA5I,EAAAyK,IAAA7B,EAAA5I,EAAAyK,EAAAxI,IAAA2G,EAAA6B,EAAAxI,IAAA2G,EAAA6B,IAAA2uG,EAAAC,IAGAuT,YAAA,SAAA/B,GAIA,MAHAt0H,MAAAgvH,OAAAsF,EAAA/hH,IAAA+hH,EACAt0H,KAAAm3H,SAAA5wH,KAAA+tH,EAAA/hH,IACAvS,KAAAuvH,YAAA+E,EAAA/hH,GACA+hH,EAAA/hH,IAGAw8G,iBAAA,SAAAmF,EAAAI,GACA,GACA/yH,GADA41H,EAAAn3H,KAAAm3H,QAGA,KADAn3H,KAAAgvH,OAAAsF,EAAA/hH,IAAA+hH,EACA/yH,EAAA41H,EAAAx2H,OAAAY,KACA41H,EAAA51H,IAAA2yH,IACAiD,EAAA51H,GAAA+yH,EAAA/hH,UAGAvS,MAAAgvH,OAAAkF,IAGArF,kBAAA,SAAAH,EAAAM,GACA,GAEAuJ,GAAAh3H,EAAA6P,EAFA+lH,EAAAn3H,KAAAm3H,SACAqB,IAGA,KAAAj3H,EAAAmtH,EAAA/tH,OAAAY,KACAi3H,EAAA9J,EAAAntH,KAAA,CAEA,KAAAA,EAAA41H,EAAAx2H,OAAAY,KACAg3H,EAAApB,EAAA51H,GACAi3H,EAAAD,KACApB,EAAA5lH,OAAAhQ,EAAA,SACAvB,MAAAgvH,OAAAuJ,GACAnnH,EAAA7P,EAGA,KAAAA,EAAAytH,EAAAruH,OAAAY,KACA41H,EAAA5lH,OAAAH,EAAA,EAAA49G,EAAAztH,GAAAgR,IACAvS,KAAAgvH,OAAAA,EAAAztH,GAAAgR,IAAAy8G,EAAAztH,IAKAquH,iBAAA,SAAAsE,EAAAI,GACA,GACA/yH,GADA41H,EAAAn3H,KAAAm3H,QAEA,KAAA51H,EAAA41H,EAAAx2H,OAAAY,KACA,GAAA41H,EAAA51H,KAAA2yH,EAGA,MAFAiD,GAAA5lH,OAAAhQ,EAAA,EAAA,EAAA+yH,EAAA/hH,SACAvS,KAAAgvH,OAAAsF,EAAA/hH,IAAA+hH,IAMAtE,cAAA,SAAAkE,GACA,GACA3yH,GADA41H,EAAAn3H,KAAAm3H,QAEA,KAAA51H,EAAA41H,EAAAx2H,OAAAY,KACA,GAAA41H,EAAA51H,KAAA2yH,EAAA,CACAiD,EAAA5lH,OAAAhQ,EAAA,EACA,aAGAvB,MAAAgvH,OAAAkF,IAGAC,WAAA,SAAAn+F,EAAA3jB,EAAA6B,GAIA,MAHAlU,MAAA+3H,QAAA1lH,EACArS,KAAAg4H,QAAA9jH,EACAlU,KAAAkiD,SACAliD,KAAAo3H,sBAGAl1E,OAAA,WACA,GAIAgyE,GAAAI,EAAA/yH,EAJA41H,EAAAn3H,KAAAm3H,SACAnI,EAAAhvH,KAAAgvH,OACArM,EAAAwU,EAAAx2H,OACAusB,EAAAltB,KAAAq3H,aAGA,KADAnqG,EAAAsqG,UAAA,EAAA,EAAAx3H,KAAA+sH,WAAA/sH,KAAAitH,aACA1rH,EAAA,EAAAA,EAAAohH,EAAAphH,IACA2yH,EAAAiD,EAAA51H,GACA+yH,EAAAtF,EAAAkF,GACAl0H,KAAA,QAAAs0H,EAAAzzH,MAAA2B,MAAAxC,KAAAs0H,EAAAt8E,KAEAh4C,MAAAgpH,WAEAhpH,KAAAgvH,UACAhvH,KAAAm3H,gBAMA1U,EAAAvB,EAAAqB,GACA13G,KAAA,SAAApB,EAAAiC,EAAAyM,GACA,GAAAsgH,EACAhW,GAAA+E,OAAA38G,KAAAxJ,KAAArB,KAAAyJ,EAAAiC,EAAAyM,GACAA,EAAA,KACAA,EAAAA,EAAA,IAEAnV,EAAAqN,KAAA8H,EAAA,eAAAnY,MACAA,KAAAkpH,OAAArpH,EAAAO,cAAA,QACA4C,EAAAhD,KAAAkpH,QAAAnlH,KAAAe,QAAA,eAAAugB,SAAA,WAAA5Y,SAAA,SAAAhD,MAAAA,EAAAiC,OAAAA,EAAAib,OAAA,MAAAC,QAAA,MAAA26B,cAAA,QACAvhD,KAAA+2H,QAAA/2H,KAAAkpH,OAAA/wG,GACAnY,KAAAg3H,oBAAAvtH,EAAAiC,EAAA1L,KAAAkpH,QACAlpH,KAAAkpH,OAAAz/G,MAAAzJ,KAAA+sH,WACA/sH,KAAAkpH,OAAAx9G,OAAA1L,KAAAitH,YACAwL,EAAA,yCAAAz4H,KAAA+sH,WAAA,IAAA/sH,KAAAitH,YAAA,iDACAjtH,KAAA+sH,WAAA,aAAA/sH,KAAAitH,YAAA,kBACAjtH,KAAAkpH,OAAAwP,mBAAA,YAAAD,GACAz4H,KAAAkqC,MAAAlnC,EAAAhD,KAAAkpH,QAAAzuG,WAAA,GACAza,KAAAqqD,UAAA,EACArqD,KAAA24H,UAAA,IAGAlB,WAAA,SAAAvD,EAAAhD,EAAArO,EAAAC,EAAAwB,GACA,GACAsU,GAAAf,EAAAC,EAAAe,EAAAC,EAAApH,EAAAnwH,EADAw3H,IAEA,KAAAx3H,EAAA,EAAAmwH,EAAAR,EAAAvwH,OAAAY,EAAAmwH,EAAAnwH,IACAw3H,EAAAx3H,GAAA,GAAA2vH,EAAA3vH,GAAA,GAAA,IAAA2vH,EAAA3vH,GAAA,EAcA,OAZAq3H,GAAAG,EAAAxnH,OAAA,EAAA,GACA+yG,EAAAA,IAAApuF,EAAA,EAAAouF,EACAuT,EAAAhV,IAAA3sF,EAAA,oBAAA,kBAAAouF,EAAA,oBAAAzB,EAAA,KACAiV,EAAAhV,IAAA5sF,EAAA,kBAAA,eAAA4sF,EAAA,mBACA+V,EAAAE,EAAA,KAAAA,EAAAA,EAAAp4H,OAAA,GAAA,KAAA,GACAm4H,EAAA,yCAAA94H,KAAA+sH,WAAA,IAAA/sH,KAAAitH,YAAA,kBACAiH,EAAA,KACA2D,EACAC,EACA,qDAAA93H,KAAAitH,YAAA,YAAAjtH,KAAA+sH,WAAA,wCACA6L,EAAA,MAAAG,EAAAnqH,KAAA,MAAA,IAAAiqH,EAAA,kBAKAX,YAAA,SAAAhE,EAAA7hH,EAAA6B,EAAAkhH,EAAAvS,EAAAC,EAAAwB,GACA,GAAAuT,GAAAC,EAAAgB,CAUA,OATAzmH,IAAA+iH,EACAlhH,GAAAkhH,EACAyC,EAAAhV,IAAA3sF,EAAA,oBAAA,kBAAAouF,EAAA,oBAAAzB,EAAA,KACAiV,EAAAhV,IAAA5sF,EAAA,kBAAA,eAAA4sF,EAAA,mBACAgW,EAAA,wBACA5E,EAAA,KACA2D,EACAC,EACA,iCAAA5jH,EAAA,YAAA7B,EAAA,aAAA,EAAA+iH,EAAA,cAAA,EAAAA,EAAA,iBAKAgD,cAAA,SAAAlE,EAAA7hH,EAAA6B,EAAAkhH,EAAAwB,EAAAC,EAAAhU,EAAAC,GACA,GAAAiW,GAAAC,EAAAC,EAAAC,EAAAC,EAAAtB,EAAAC,EAAAgB,CACA,IAAAlC,IAAAC,EACA,MAAA,EAYA,IAVAA,EAAAD,IAAA,EAAAxsH,EAAAod,KACAovG,EAAA,EACAC,EAAA,EAAAzsH,EAAAod,IAGAwxG,EAAA3mH,EAAAjI,EAAAs0B,MAAAt0B,EAAAmd,IAAAqvG,GAAAxB,GACA6D,EAAA/kH,EAAA9J,EAAAs0B,MAAAt0B,EAAAgvH,IAAAxC,GAAAxB,GACA8D,EAAA7mH,EAAAjI,EAAAs0B,MAAAt0B,EAAAmd,IAAAsvG,GAAAzB,GACA+D,EAAAjlH,EAAA9J,EAAAs0B,MAAAt0B,EAAAgvH,IAAAvC,GAAAzB,GAEA4D,IAAAE,GAAAD,IAAAE,EAAA,CACA,GAAAtC,EAAAD,EAAAxsH,EAAAod,GAEA,MAAA,EAGAwxG,GAAAE,EAAA7mH,EAAA+iH,EACA6D,EAAAE,EAAAjlH,EAGA,MAAA8kH,KAAAE,GAAAD,IAAAE,GAAAtC,EAAAD,EAAAxsH,EAAAod,GACA,IAGAuxG,GAAA1mH,EAAA+iH,EAAAlhH,EAAAkhH,EAAA/iH,EAAA+iH,EAAAlhH,EAAAkhH,EAAA4D,EAAAC,EAAAC,EAAAC,GACAtB,EAAAhV,IAAA3sF,EAAA,oBAAA,oCAAA2sF,EAAA,KACAiV,EAAAhV,IAAA5sF,EAAA,kBAAA,eAAA4sF,EAAA,mBACAgW,EAAA,yCAAA94H,KAAA+sH,WAAA,IAAA/sH,KAAAitH,YAAA,kBACAiH,EAAA,KACA2D,EACAC,EACA,qDAAA93H,KAAAitH,YAAA,YAAAjtH,KAAA+sH,WAAA,wCACA16G,EAAA,IAAA6B,EAAA,OAAA6kH,EAAAnqH,KAAA,MAAA,sBAKA0pH,UAAA,SAAApE,EAAA7hH,EAAA6B,EAAAzK,EAAAiC,EAAAm3G,EAAAC,GACA,MAAA9iH,MAAAy3H,WAAAvD,IAAA7hH,EAAA6B,IAAA7B,EAAA6B,EAAAxI,IAAA2G,EAAA5I,EAAAyK,EAAAxI,IAAA2G,EAAA5I,EAAAyK,IAAA7B,EAAA6B,IAAA2uG,EAAAC,IAGAjpG,MAAA,WACA7Z,KAAAkqC,MAAAjkC,UAAA,IAGAowH,YAAA,SAAA/B,GACA,GAAAwE,GAAA94H,KAAA,QAAAs0H,EAAAzzH,MAAA2B,MAAAxC,KAAAs0H,EAAAt8E,KAOA,OANAh4C,MAAAqqD,SACArqD,KAAAkqC,MAAAwuF,mBAAA,YAAAI,GAEA94H,KAAA24H,WAAAG,EAEA94H,KAAAuvH,YAAA+E,EAAA/hH,GACA+hH,EAAA/hH,IAGAw8G,iBAAA,SAAAmF,EAAAI,GACA,GAAA3oC,GAAA3oF,EAAA,YAAAkxH,GACA4E,EAAA94H,KAAA,QAAAs0H,EAAAzzH,MAAA2B,MAAAxC,KAAAs0H,EAAAt8E,KACA2zC,GAAA,GAAAk1B,UAAAiY,GAGAjK,kBAAA,SAAAH,EAAAM,GAEA,GAGAztH,GAHAoqF,EAAA3oF,EAAA,YAAA0rH,EAAA,IACArrH,EAAA,GACAqvH,EAAA1D,EAAAruH,MAEA,KAAAY,EAAA,EAAAA,EAAAmxH,EAAAnxH,IACA8B,GAAArD,KAAA,QAAAgvH,EAAAztH,GAAAV,MAAA2B,MAAAxC,KAAAgvH,EAAAztH,GAAAy2C,KAGA,KADA2zC,EAAA,GAAAk1B,UAAAx9G,EACA9B,EAAA,EAAAA,EAAAmtH,EAAA/tH,OAAAY,IACAyB,EAAA,YAAA0rH,EAAAntH,IAAAqL,UAIAgjH,iBAAA,SAAAsE,EAAAI,GACA,GAAA3oC,GAAA3oF,EAAA,YAAAkxH,GACA4E,EAAA94H,KAAA,QAAAs0H,EAAAzzH,MAAA2B,MAAAxC,KAAAs0H,EAAAt8E,KACA2zC,GAAA,GAAA+sC,mBAAA,WAAAI,IAGA9I,cAAA,SAAAkE,GACA,GAAAvoC,GAAA3oF,EAAA,YAAAkxH,EACAl0H,MAAAkqC,MAAAzpC,YAAAkrF,EAAA,KAGAwoC,WAAA,SAAAn+F,EAAA3jB,EAAA6B,GACA,GAAAggH,GAAAl+F,EAAAzjB,GAAA4jB,OAAA,EACA,OAAA+9F,IAGAhyE,OAAA,WACAliD,KAAAqqD,WAEArqD,KAAAkqC,MAAAjkC,UAAAjG,KAAA24H,UACA34H,KAAAqqD,UAAA,SAKAxqD,SAAAuK,MCj8FA+nB,OAAA,YAAA,SAAA,WACA,YAEA,SAAAnvB,GACA,GAAA0+B,GAAA,aAGAC,GASAC,MAAA,SAAA7a,GACA,MAAA/mB,MAAA6B,KAAA,WAWA,QAAA++G,KACA,MAAA1qF,SAAAlzB,EAAA,OAAA,GAAAwzD,SAXA,GAAAnpD,GAAArK,EAAAhD,MACAqQ,EAAArN,EAAAgF,QACA6U,KAAA,iBACAm1C,IAAA,OACAjrC,GAEAlmB,EAAAwP,EAAAgpH,aACAx8G,EAAAxM,EAAAm8B,UAAA,qBACA8sF,EAAAjpH,EAAAmgB,SAAA,eAMAowF,MAAA//G,IACAA,EAAA,2BAEA,IAAA4X,GAAA,QAAA5X,EAAA,IAAAy4H,EAAA,GACA7gH,IAAA,UAAA6gH,EAAAjpH,EAAAA,KAAAgb,mBAAAhb,EAAAA,MAEAhD,EAAA0J,KAAA,WAAA8F,GACAxP,EAAA0J,KAAA,OAAA0B,GACApL,EAAA0J,KAAA,QAAA,wCACA1J,EAAAhN,KAAAwc,GAEAxP,EAAAwc,SAAA,4BACAxc,EAAAyW,OAAA9gB,EAAAgzB,GAAA4U,MAAAhhB,MAAA,qCAgBA5mB,GAAA2N,GAAA4oH,WAAA,SAAAxrG,GACA,MAAA4T,GAAA5T,GACA4T,EAAA5T,GACAvrB,MAAAxC,KAAA+M,MAAAnC,UAAAnI,MAAApB,KAAA6F,UAAA,IACA,gBAAA6mB,IAAAA,MAGA/qB,GAAAoN,MAAA,UAAA2d,EAAA,6BAAA2T,GAFAC,EAAAC,MAAAp/B,MAAAxC,KAAAkH,aAKAorB,UCpEAH,OAAA,UAAA,SAAA,SAAA,cACA,oBAAA,OAAA,SAAA,QAAA,QACA,SAAA,UAAA,YAAA,WAAA,UAEA,SAAAnvB,EAAAgwB,OAAAS,YACAwkC,WAAAh3B,KAAAq2B,OAAAt2B,MAAA/M,OAuvCA,QAAAulG,aAAAzsF,EAAAzP,GACA,GAAAuN,GAAA7nC,EAAAgzB,GAAAv2B,GAAAgZ,KAAA,IAAAmR,MAAA,4BACA0T,MAAAA,GACAt6B,EAAAgzB,GAAA4U,MAAAhhB,MAAA,uBAAAmjB,IAEA,OAAAlC,IAtvCA,SAAA7nC,GACA,GAAA0+B,GAAA,gBAGAC,GAMAC,MAAA,SAAA7a,GACA,MAAA/mB,MAAA6B,KAAA,WAIA,QAAA43H,KACA,GAAA33F,GAAA9+B,EAAAgzB,GAAA4U,MAAAhhB,MAAA,uCACA6jB,EAAAxM,KAAA4L,QAAAK,eACApL,GACAqL,SAAA,+BACAC,QAAA,aACAI,OAAAngC,EACAigC,SACAosF,eAAA,WACA15H,KAAAgU,KAAA,kBAAA4hD,aAAA,gBAAA,IAEA+jE,aAAA,WACA35H,KAAAgU,KAAA,kBAAA4hD,aAAA,gBAAA,IAEAgkE,WAAA,WACA55H,KAAAgU,KAAA,kBAAA4hD,aAAA,SAEAikE,MAAA,WAAA75H,KAAA85H,cAAA,YAIA,OAAArsF,GAxBA,GAAApgC,GAAArK,EAAAhD,MACAqQ,IA0BAA,GAAA0pH,QAAA/2H,EAAAA,EAAAgzB,GAAAyM,KAAA7Y,MAAA,aACAvZ,EAAAq8D,MAAA1pE,EAAAA,EAAAgzB,GAAAyM,KAAA7Y,MAAA,WAEAvc,EAAAyW,OAAA21G,KACApsH,EAAAyW,OAAAzT,EAAA0pH,SACA1sH,EAAAyW,OAAAzT,EAAAq8D,OAEAr/D,EAAAqW,GAAA,cAAA,WACArW,EAAAysH,cAAA,kBAAA,KAGAzsH,EAAAgD,KAAAqxB,EAAArxB,MAgBA5C,IAAA,SAAA8vC,GACA,GAAAltC,GAAArQ,KAAAqQ,KAAA,gBAEAktC,GAAAy8E,aACAh6H,KAAA85H,cAAA,cAEA,IAAAG,GAAAj3H,EAAAgzB,GAAAyM,KAAA7Y,MAAA,iBAMA,OAJAvZ,GAAAq8D,MAAA5oD,OAAAm2G,GACAj3H,EAAAi3H,GAAArkE,aAAArY,GACAv9C,KAAA85H,cAAA,kBAEA95H,MAOAggC,MAAA,WACAhgC,KAAAgU,KAAA,kBAAA4hD,aAAA,UAOAokE,YAAA,WACA,GAAAE,GAAAl3H,EAAAhD,KAAA0sE,OAAAjyD,WAAApJ,MAEA,IAAA,GAAA6oH,EAAAv5H,OACA,CAAA,GAAAs5H,GAAAC,EAAAtkE,cAEAqkE,GAAAE,SACAF,EAAAG,cAAA,GAGA,MAAAp6H,OAaAq6H,eAAA,SAAAC,GAaA,MAZAt6H,MAAA6B,KAAA,WACA,GAAAwL,GAAArK,EAAAhD,MACAqQ,EAAAhD,EAAAgD,KAAA,iBACA3E,EAAA2E,EAAAq8D,MAAAhhE,SACA6uH,EAAAltH,EAAA3B,SAAAA,EAAA,EAAA,GAEA6uH,EAAA,GAAAD,KAAA,KACAjqH,EAAA0pH,QAAAruH,OAAA6uH,EAAA,EAAAA,EAAA,GACAltH,EAAA8Z,UAAAzb,MAIA1L,MAkBAgD,GAAA2N,GAAAmpH,cAAA,SAAA/rG,GACA,MAAA4T,GAAA5T,GACA4T,EAAA5T,GACAvrB,MAAAxC,KAAA+M,MAAAnC,UAAAnI,MAAApB,KAAA6F,UAAA,IACA,gBAAA6mB,IAAAA,MAGA/qB,GAAAoN,MAAA,UAAA2d,EAAA,6BAAA2T,GAFAC,EAAAC,MAAAp/B,MAAAxC,KAAAkH,aAKAorB,QAOA,SAAAtvB,GA0tBA,QAAAw3H,IAAApmG,GACA,MAAApxB,GAAAoxB,GAAAzZ,QAAA,mBAGA,QAAA8/G,WAAAR,EAAAtxH,GACA,GAAA+xH,GAAAT,EAAAjmH,KAAA,kBAEA,OADA0mH,GAAA52G,OAAAnb,GACA3I,KAGA,QAAA26H,YAAAxqH,GACA,OAAAA,GACA,IAAA,UACA,IAAA,YACA,IAAA,aACA,IAAA,aACA,OAAA,CACA,SACA,OAAA,GAIA,QAAAyqH,aAAAhvF,GACA,GAAAivF,KAAAjxG,MAAA,cAEA,KAAAroB,EAAA,EAAAA,EAAAqqC,EAAAjrC,OAAAY,IACAs5H,EAAAt0H,KAAAvD,EAAAgzB,GAAAtX,IAAAkL,MAAA,WAAAgiB,EAAArqC,IACAs5H,GAAAt0H,KAAAvD,EAAAgzB,GAAAtX,IAAAkL,MAAA,cAAA,IAEA,IAAA01F,GAAAt8G,EAAAgzB,GAAAspF,OAAA11F,MAAA,kBACA5mB,EAAAgzB,GAAA1X,MAAAtb,EAAAgzB,GAAA7X,GAAA3b,MAAAxC,KAAA66H,IAEA,OAAAvb,GAQA,QAAAwb,YAAAztH,MACA,GAAA0tH,WASA,IARA1tH,KAAArK,EAAAqK,MAEAA,KAAA2G,KAAA,UAAAnS,KAAA,WACA,GAAAhB,GAAAb,KAAAuD,aAAA,SAAA,iBACA,oBAAA1C,GACAk6H,QAAAx0H,KAAAvG,KAAAsG,eAGAy0H,QAAAp6H,OAAA,EAAA,CACA,GAAA2vB,QAAA,mBAAAyqG,QAAAnsH,KAAA,MAAA,KACAoqC,KAAA,GAAAD,OACAC,KAAA3rC,KAAA,IAGA,KACAwyG,KAAAvvF,QAAA0oB,MACA,MAAA72C,GACAixB,MAAAjxB,KAKA,QAAA42C,MAAAhyB,GACA/mB,KAAAg7H,QAAAj0G,EAAAiyB,KAsBA,QAAAiiF,aAAAhB,GACA,GAAA5pH,GAAA4pH,EAAA5pH,KAAAqxB,WAEA,OAAA1+B,GAAAi3H,GAAAl/G,QAAA,UAAA2X,MAAA,cAAAriB,EAAAinD,OAAA/kD,IAGA,QAAA2oH,iBAAAC,GACA,GAAAlB,GAAAkB,EAAAp0G,QAAAkzG,OACA5pH,EAAA4pH,EAAA5pH,KAAAqxB,WAEArxB,GAAAktC,MAAAwV,QACA/vD,EAAAqN,EAAAktC,MAAAwV,QAAA79B,aAAA,WAAA7tB,IAAA8zH,EAAA5oH,KAGA,QAAA6oH,gBACA,GAGAC,GAHAhuH,EAAArN,KAAAm7H,QAAAp0G,QAAAkzG,OACA5pH,EAAAhD,EAAAgD,KAAAqxB,YACA3a,KAEAu0G,EAAAtoG,OAAAN,MAAA6oG,eAAA,WAEAL,iBAAAl7H,KAAAm7H,UAEAE,EAAAJ,YAAA5tH,MACA0Z,EAAAk0G,YAAAjjE,QAAA7kC,UAAAkoG,IACAhrH,EAAAk8B,QACAxlB,EAAAwlB,MAAAl8B,EAAAk8B,OAEAvsC,KAAAm7H,QAAAK,IAAA,uBACAC,eAAAprH,EAAAktC,MAAAA,OACA,QAAA+9E,EAAA,IAAAv0G,GACA1Z,EAAAuoD,aAAA,WAAA,WAGA,QAAA8lE,iBAGA,IAAA,GAFAruH,GAAArN,KAAAm7H,QAAAp0G,QAAAkzG,OAEA14H,EAAA,EAAAA,EAAAvB,KAAAqQ,KAAA1P,OAAAY,IAAA,CACA,GAAAs9G,GAAA7+G,KAAAqQ,KAAA9O,EACAvB,MAAA4rC,aACAizE,EAAAjzE,WAAA5rC,KAAA4rC,YAEAv+B,EAAAuoD,aAAA,eAAAipD,GAEA7+G,KAAA2yC,KAAA,IACA8nF,UAAAptH,EAAArK,EAAAgzB,GAAAyM,KACA7Y,MAAA,WACA5mB,EAAAgzB,GAAA4U,KAAA5qC,KAAA2yC,KAAAtc,QAAA,GACA,uBAEAhpB,EAAAuoD,aAAA,WAAA51D,KAAA27H,KAAA,YAAA,QAGA,QAAAC,iBACA,GAAAvuH,GAAArN,KAAAm7H,QAAAp0G,QAAAkzG,MAEAQ,WAAAptH,EAAArK,EAAAgzB,GAAA4U,MAAAhhB,MAAA,gBAAA,UACAvc,EAAAuoD,aAAA,WAAA,SAGA,QAAAimE,cACA,GAAAxuH,GAAArN,KAAAm7H,QAAAp0G,QAAAkzG,MAEA5sH,GAAAuoD,aAAA,WAAA,WAGA,QAAAkmE,gBACA,GAAAzuH,GAAArN,KAAAm7H,QAAAp0G,QAAAkzG,OACA5pH,EAAAhD,EAAAgD,KAAA,gBACAqkD,EAAA10D,KAAAqQ,MAAA,4BAIA,IAFAA,EAAA0rH,SAAA,OAEA,gBAAA,GAAA,CACA,GAAA,SAAArnE,EAAA7zD,KACA,MAAAwM,GAAAuoD,aAAA,QAAA51D,KACA,IAAA,QAAA00D,EAAA7zD,KACA,MAAAwM,GAAAuoD,aAAA,OAAA51D,KACA,IAAA,UAAA00D,EAAA7zD,KACA,MAAAwM,GAAAuoD,aAAA,SAAA51D,KACA,YAAA00D,EAAA7zD,MACA6zD,EAAAA,EAAAA,QAAA,YACArkD,EAAA0rH,SAAA,QAEArnE,EAAAxxD,KAAAiwB,UAAAuhC,GAIArnD,EAAAuoD,aAAA,YAAAlB,GACArnD,EAAAuoD,aAAA,WAAA,cASA,QAAAomE,oBAAA/xF,EAAA8oB,GACA,GAAAnP,GAAA,sCAEA,OAAA3Z,GAAA5mC,QAAAugD,EAAA,SAAAq4E,GACA,GAAAjpE,GAAAipE,EAAAn6H,MAAA8hD,GAAA,EACA,OAAA,+HAEAoP,EAAA,oBAIA,QAAAkpE,WAAA7nG,GACA,GAAA50B,GAAAuD,EAAAqxB,EAAAlc,QAAAwC,QAAA,gBACA0zC,EAAArrD,EAAAqxB,EAAAlc,QAAAwC,QAAA,kBACAwhH,EAAA9tE,EAAAh+C,KAAA,gBAEA,IAAA5Q,EAAA,GAAA,CACA,GAAAuzD,GAAAtpC,SAAAjqB,EAAAuU,KAAA,aAAA3T,QACAoZ,EAAAha,EAAAuU,KAAA,aAAA3T,MAWA,OATAg0B,GAAAjU,iBAEA3G,EACA40C,EAAA1zC,QAAA,cACA+X,MAAA,YAAAjZ,KAAAA,EAAAu5C,KAAAA,IAEAhwD,EAAAm5H,EAAAppE,QAAA79B,aAAA,WAAA89B,IAGA,EACAmpE,EAAA/jH,SAAAqB,KACA40C,EAAA1zC,QAAA,cACA+X,MAAA,WAAAypG,EAAA/jH,UAEApV,EAAAm5H,EAAAppE,QAAA79B,aAAA,WAAAinG,EAAA/jH,SAAA46C,MAWA,QAAAopE,cAAAnyF,GAiBA,QAAAoyF,KACA,GAAAzpG,GAAA0pG,EAAA7iH,KAAA,IAAA6iH,EAAAtpE,KAAA,GACAspE,GAAAl/E,KAAAxqB,GAAA0pG,EAAAl/E,GAAA,KACAxqB,GAAA,OAEAqX,EAAA55B,KAAA2rH,mBACA/xF,EAAA55B,KAAAhN,QAAA,GAAAqR,QAAAke,EAAA,KAAA,IACAupG,EAAAppE,QAEAnoB,EAAAv9B,EAAAuoD,aAAA,aAAA3rB,EAAA55B,MAEArN,EAAA4nC,GAAA/gB,SAAA,iBACA7mB,EAAA4nC,GAAA9mB,OAAA9gB,EAAAgzB,GAAA4U,MAAAhhB,MAAA,oCACA5mB,EAAA4nC,GAAA7zB,KAAA,QAAA,+CACA/T,EAAA4nC,GAAAlnB,GAAA,QAAAw4G,WACAl5H,EAAA4nC,GAAAv6B,KAAA,gBAAA8rH,GA/BA,GAAA9uH,GAAA48B,EAAAkxF,QAAAp0G,QAAAkzG,OACA5pH,EAAAhD,EAAAgD,KAAAqxB,WAEA,IAAArxB,EAAA,CAGA,GAAA,gBAAA45B,GAAA,KAAA,CACA,GAAAkyF,IAAAppE,OAAA1iD,EAAAktC,MAAAwV,OAIA,IAFA9oB,EAAA55B,KAAA45B,EAAA55B,KAAAhN,QAAA,oBAAA,IAEA4mC,EAAA7xB,SAAA,CACA,GAEAwyB,GAFA0xF,EAAAryF,EAAA7xB,SACAkhC,EAAA,UAqBA,IAAAgjF,EAAA7iH,KAAAqc,WAAAwjB,GAAA,CACA,GAAA7/B,GAAA6iH,EAAA7iH,KAAAhX,MAAA62C,EAAA34C,OACAw7H,GAAA/jH,UAAAqB,KAAAA,EAAAu5C,KAAAspE,EAAAtpE,MACAqpE,QACAC,GAAA7iH,KAAAqc,WAAA,gBACAqmG,EAAA/jH,UAAA46C,KAAAspE,EAAAtpE,MACAqpE,EAAAhsH,EAAAktC,MAAAwV,QAEAmoE,iBAAAjxF,EAAAkxF,SACAlxF,EAAAsyF,cAAAJ,EACAlyF,EAAAuyF,cAAAN,UACAl5H,EAAA,yBAAA8d,QAAA,eAAAmpB,OACA,CACA,GAAAW,GAAAv9B,EAAAuoD,aAAA,aACAomE,mBAAA/xF,EAAA55B,KACA8rH,EAAAppE,QACA/vD,GAAA4nC,GAAAlnB,GAAA,QAAAw4G,WACAl5H,EAAA4nC,GAAAv6B,KAAA,gBAAA8rH,QAEA,gBAAAlyF,GAAA,KACA58B,EAAAuoD,aAAA3rB,EAAA55B,KAAAo8B,OAAAxC,EAAA55B,MAEAsM,QAAA4zB,IAAAtG,EAAA55B,KAEAmqH,IAAAntH,GAAAysH,cAAA,mBAGA,QAAA2C,eACA,GAAApvH,GAAArN,KAAAm7H,QAAAp0G,QAAAkzG,MAGA,sBAAAj6H,KAAA6pC,KACA7pC,KAAA8c,QAAA,6GAGA,gBAAA9c,MAAA,KACAA,KAAA8c,QAAA9c,KAAAqQ,KACAhN,QAAA,GAAAqR,QAAA,IAAA1U,KAAAm7H,QAAA5oH,GAAA,KAAA,KAAA,IAEAvS,KAAA8c,QAAA,gBAGAzP,EAAAuoD,aAAA,QAAA51D,MACAqN,EAAAuoD,aAAA,WAAA,SAGA,QAAA8mE,eACA,GAAArvH,GAAArN,KAAAm7H,QAAAp0G,QAAAkzG,OACA5pH,EAAAhD,EAAAgD,KAAA,eAEAA,IACAhD,EAAAuoD,aAAA,QAAA,2BACAvoD,EAAAuoD,aAAA,WAAA,YAEA51D,KAAAm7H,QAAA/7F,UAIA,QAAAu9F,cACA,GAAAtvH,GAAArN,KAAAm7H,QAAAp0G,QAAAkzG,MAEA5sH,GAAAuoD,aAAA,OAAA51D,KAAAqQ,MASA,QAAAuuG,iBAAAC,GACA,MAAAA,GAAAC,UAAAn+G,OAAA,GAAAk+G,EAAAE,UAGA,QAAA0c,gBAAAlzH,GACA,MAAAgN,QAAAvS,EAAA+O,KAAAxJ,IAAAlF,QAAA,MAAA,IA7iCA,GAAAq+B,YAAA,eAGAk7F,aAAArwB,GAAA,OACAY,IAAA,OACApB,GAAA,OACAwB,IAAA,OACArnD,GAAA,OACA22E,GAAA,cACA92E,GAAA,cACAumD,GAAA,QACAwwB,IAAA,QAIAn7F,SAWAC,MAAA,SAAA2b,GACA,MAAAv9C,MAAA6B,KAAA,WAIA,QAAAk7H,GAAAhwF,EAAAzP,EAAAmP,GACA,GAAA5B,GAAA7nC,EAAAgzB,GAAA/c,QAAAqkB,MAAAA,EAAA1T,MAAA,OAAA6iB,GACAzpC,EAAAgzB,GAAA4U,MAAAhhB,MAAA,uBAAAmjB,IAEA,OADA/pC,GAAA6nC,GAAAnnB,GAAA,QAAA,WAAArW,EAAAuoD,aAAAnpB,KACA5B,EAGA,QAAAmyF,KACA,GAAAl7F,GAAA9+B,EAAAgzB,GAAA4U,MAAAhhB,MAAA,gCAEA,OAAAqX,MAAA4L,QAAAK,eAAApL,GAGA,QAAAm7F,KACA,QAAAxpH,KAAApG,EAAAuoD,aAAA,OAAA,GACA,QAAAsnE,KAAA7vH,EAAAuoD,aAAA,OAAA,IACA,QAAAunE,KAAA9vH,EAAAuoD,aAAA,OAAA,KACA,QAAAwnE,KAAA/vH,EAAAuoD,aAAA,OAAA,KACA,QAAAxnD,KAAAiC,EAAAinD,OAAAlpD,OACA,QAAA0f,KAAAzd,EAAAinD,OAAAxpC,QAEA,QAAA7U,GAAAwzB,EAAApL,GACA,GAAAwJ,GAAA7nC,EAAAgzB,GAAA/c,OAAAooB,EAEA,OADAr+B,GAAA6nC,GAAAnnB,GAAA,QAAA+oB,GACA5B,EAGA,QAAA7xB,KACA,GAAA6jF,GAAA75F,EAAAgzB,GAAAhd,OAAA4Q,MAAA,iBACAihB,EAAA7nC,EAAAgzB,GAAA/c,OAAA,OAgBA,OAdAjW,GAAA65F,GAAAvtD,SAAA,SAAAjb,GACA,MAAA,KAAAA,EAAAhR,OACAhW,EAAAuoD,aAAA,UAAA5yD,EAAA65F,GAAA3yE,QACAlnB,EAAA65F,GAAA3yE,IAAA,IACAmK,EAAAjU,kBACA,QACA,OAAAiU,EAAA9R,KACA8R,EAAAhU,qBAGArd,EAAA6nC,GAAAnnB,GAAA,QAAA,WACArW,EAAAuoD,aAAA,UAAA5yD,EAAA65F,GAAA3yE,UAGAlR,MAAA6jF,EAAA5jF,OAAA4xB,GAGA,QAAAwyF,KACA,GAAAC,GAAAt6H,EAAAgzB,GAAA4U,MAAAhhB,MAAA,cAAA,GAEA,OAAA0zG,GAGA,GAAAzgC,GAAA7jF,IACAypB,EAAAz/B,EAAAgzB,GAAAyM,KAAA7Y,MAAA,yBACA5mB,EAAAgzB,GAAA4U,MAAAhhB,MAAA,WACA3Q,EAAA6U,EAAA,UACA9qB,EAAAgzB,GAAA4U,MAAAhhB,MAAA,aACA3Q,EAAAxF,EAAA,QACAwF,EAAAikH,EAAA,MACAjkH,EAAAkkH,EAAA,OACAlkH,EAAAmkH,EAAA,SAAA,IACAnkH,EAAA7K,EAAA,SACApL,EAAAgzB,GAAA4U,MAAAhhB,MAAA,cACA3Q,EAAA6U,EAAA,SAAA+uE,EAAA5jF,OACAjW,EAAAgzB,GAAA4U,KAAAiyD,EAAA7jF,QACAqkH,IAEA,OAAA56F,GAxEA,GAAAp1B,GAAArK,EAAAhD,MACAqQ,IA6EA,IAHAhD,EAAAwc,SAAA,qCACA0zB,EAAAggF,QACAlwH,EAAAwc,SAAA,UACA,GAAA0zB,EAAAjgB,MAAA,CACA,GAAAkgG,GAAAx6H,EAAAgzB,GAAA4U,MAAAhhB,MAAA,qBACAquC,YAAA8S,QAAAxtB,EAAAA,MAAA,SAAAigF,GACAnwH,EAAAyW,OAAA9gB,EAAAgzB,GAAAyM,KACA7Y,MAAA,8BACAmzG,EAAA,gBAAA,QAAA,SACAA,EAAA,QAAA,UAAA,gBACAA,EAAA,WAAA,eAAA,eACAC,IACAQ,QACA,CACA,GAAAxkG,GAAAwgG,YAAA,gBAAA,QACAnsH,GAAAyW,OAAAkV,GACAh2B,EAAAg2B,GAAAtV,GAAA,QAAA,WACArW,EAAAuoD,aAAA,WA0DA,MAvDArY,GAAAhR,QACAl8B,EAAAk8B,MAAAgR,EAAAhR,OACAl/B,EAAAyW,OAAA9gB,EAAAgzB,GAAAyM,KAAA7Y,MAAA,+BACAvc,EAAAyW,OAAAm5G,KAEA5vH,EAAAgD,KAAA,eAAAA,GAEAhD,EAAAuoD,aAAA,sBACAvoD,EAAA+sB,QAAA,SAAA/F,GACA,cAAAhnB,EAAAuoD,aAAA,aACAvhC,EAAAxS,SAAAwS,EAAA5S,QACAm7G,YAAAvoG,EAAAhR,SACAgR,EAAAjU,iBACA/S,EAAAuoD,aAAAgnE,YAAAvoG,EAAAhR,WAIAhW,EAAAqW,GAAA,QAAA,IAAAsd,MAAAxL,YAEAnlB,EAAAotH,WAAA59H,SAAAkH,cACAsG,EAAA0J,KAAA,YAAA,GACA1J,EAAAkL,QAEAlI,EAAAktC,MAAAA,EACAltC,EAAAqtH,QAAA,EAMA16F,SAAAhQ,OAAA2C,KAAAC,UAAAgiC,SAAA,gBACA,WAEAvnD,EAAAinD,OAAA,GAAAU,UACA2lE,OAAA3qG,OAAA2C,KAAAC,UAAAgiC,SACAqiE,OAAA5sH,EACAyqD,YAAA,QACAhvD,IAAAy0C,EAAA3/B,OACAwhB,SAAA,EACA2M,OAAA,YACA6xF,SAAAxC,aACAyC,UAAAnC,cACAoC,UAAAlC,cACAmC,OAAAlC,WACAmC,SAAAlC,aACAmC,SAAA7B,aACA8B,OAAAvB,WACA5sG,QAAA0sG,YACAzsG,QAAA0sG,cACArsH,EAAAinD,OAAAnnD,MAAA,OACA6iB,OAAAN,MAAAyrG,MAAAjoG,QAAA7lB,EAAAinD,OAAA6mE,MACA9tH,EAAAinD,OAAA6mE,KAAA,IAAAnrG,OAAAN,MAAAyrG,QAIAn+H,QAYAm/G,aAAA,SAAAN,GACA,GAAAxuG,GAAArQ,KAAAqQ,KAAA,gBACA6I,IAAA7I,EAAAqtH,QAAA,GAAA,CAEA,IAAArtH,EAAAktC,MAAAggF,OAAA,CACA,GAAA,GAAAltH,EAAAqtH,QAcA,MAHA7e,GAAAjzE,WAAAv7B,EAAAu7B,WACAizE,EAAAvlG,IAAAjJ,EAAAqtH,QACA16H,EAAAqN,EAAAivG,OAAAU,aAAAnB,GACA7+G,IAbA,IAAA6+G,EAAAjzE,YAAAizE,EAAAjzE,WAAAjrC,OAAA,EAAA,CACA,GAAA2+G,GAAAsb,YAAA/b,EAAAjzE,WAMA,OALA6uF,WAAAz6H,KAAAs/G,GACAjvG,EAAAivG,MAAAA,EACAjvG,EAAAu7B,WAAAizE,EAAAjzE,WACAizE,EAAAvlG,IAAAjJ,EAAAqtH,QACA16H,EAAAqN,EAAAivG,OAAAU,aAAAnB,GACA7+G,MAUA,GAAAyiC,GAAAz/B,EAAAgzB,GAAAyM,KAAA7Y,MAAA,WAAA1Q,EAAA,OAAA,QACAlW,EAAAgzB,GAAA4U,MAAAhhB,MAAA,aAAAvZ,EAAAqtH,SAEAjD,WAAAz6H,KAAAyiC,GACAz/B,EAAAy/B,GAAAu9E,aAAAnB,IAQAuf,WAAA,SAAA/tH,GACA,GAAAu6B,GAAA5nC,EAAAgzB,GAAA4U;AAAAhhB,MAAA,UAIA,OAHA6wG,WAAAz6H,KAAA4qC,GACAA,EAAA3kC,UAAAoK,EACAyqH,WAAAlwF,GACAA,GAMA21E,eAAA,SAAAn9E,GACA,GAAAnqB,GAAAjW,EAAAgzB,GAAAv2B,GAAAmqB,MAAA,YACA6wG,WAAAz6H,KAAAiZ,GACAjW,EAAAiW,GAAAsgH,WAAAn2F,IASAi7F,YAAA,SAAAt3G,GACA,GAAA1W,GAAArQ,KAAAqQ,KAAAqxB,WAOA,OALA3a,GAAA1W,KAAA,iCACA0W,EAAAjK,QACA,SACAiK,EAAA3O,SAAAqB,MAAA,EACAzW,EAAAqN,EAAAktC,MAAA+gF,cAAAppG,aAAA,iBAAAnO,GACA/mB,MAYAoQ,MAAA,SAAA2W,GACA,GAAAkjB,EAEA,IAAA,gBAAA,GAAA,CACA,GAAA,QAAAljB,EAAA8iB,KAKA,MAJA4wF,WAAAz6H,KAAAgD,EAAAgzB,GAAAyM,KACA7Y,MAAA,MACA0T,MAAA,8BAEAt9B,IACA,IAAA,gBAAA+mB,EAAA8iB,KACA,CAAA,GAAAnkC,GAAAqhB,EAAAjK,QAAAhb,MAAA,iCAEA4D,IAAA,GAAAA,EAAA/E,SACAX,KAAA41D,aAAA,eACAx9C,UACA46C,KAAAtpC,SAAAhkB,EAAA,IAAA,EACA03C,GAAA1zB,SAAAhkB,EAAA,KAEAoX,QAAApX,EAAA,KAEAukC,EAAA,+DAGAA,IACAA,EAAAljB,EAAAjK,aAEAmtB,GAAAljB,CAGA,OADA0zG,WAAAz6H,KAAAgD,EAAAgzB,GAAAo4C,KAAAxkD,MAAA,4BAAAqgB,IACAjqC,MAMAu+H,MAAA,SAAAluH,GAMA,QAAAmuH,GAAAzqE,GACA,MAAAA,GAAAt/B,OAAA,GAAA1qB,cAAAgqD,EAAAtxD,MAAA,GAGA,QAAAwW,GAAAooB,EAAAoL,EAAAvf,GACA,GAAA2d,GAAA7nC,EAAAgzB,GAAA/c,QAAA2Q,MAAA6iB,EACAnP,MAAA+D,GAEAr+B,EAAAgzB,GAAA4U,KAAAvJ,GAQA,OAPAr+B,GAAA6nC,GAAAnnB,GAAA,QAAA,SAAA2Q,GACA6B,SAAAhJ,IACAuf,GAAA,IAAAurB,QAAA7kC,UAAAjG,EAAAmH,IAAA,KAEAhkB,EAAA8qH,QAAAsD,QAAAhyF,GACAzpC,EAAAqxB,EAAAlc,QAAAW,SAAAlM,WAEAi+B,EArBA,GACAuuB,GAAAp2D,EAAAgzB,GAAA4U,MAAAhhB,MAAA,SACA8qC,EAAArkD,EAAAA,IACArN,GAAAo2D,GAAAzwD,KAAA+rD,EAAA0E,MAqBAqhE,UAAAz6H,KACAgD,EAAAgzB,GAAAyM,KAAA7Y,MAAA,gBACA5mB,EAAAgzB,GAAA4U,MAAAhhB,MAAA,QACAvlB,MAAA,UAAA,EAAAqwD,EAAAgqE,MAAA,GAAA,MACA,KACA17H,EAAAgzB,GAAA4U,MAAAhhB,MAAA,QAAA8qC,EAAAiqE,MAEAH,EAAA9pE,EAAAiqE,MACA,KACAvlE,IACA,aAAA1E,EAAAiqE,MACAlE,UAAAz6H,KACAgD,EAAAgzB,GAAAyM,KAAA7Y,MAAA,oBACA8qC,EAAAkqE,UAAA9hH,UACA29G,UAAAz6H,KACAgD,EAAAgzB,GAAAyM,KAAA7Y,MAAA,iBACA3Q,EAAA,WAAA,UAAA,SAAAob,GACA,MAAA4mG,aAAAj4H,EAAAqxB,EAAAlc,QACAwC,QAAA,qBAEA1B,EAAA,YAAA,YACAA,EAAA,YAAA,QACAA,EAAA,WAAA,MACAA,EAAA,QAAA,SACAA,EAAA,QAAA,WAEAjZ,KAAA2a,QAAA,UACA3G,KAAA,WACA8M,QAAA,iBAAA4zC,GAEA10D,KAAA41D,aAAA,WAAA,eAQAipE,UAAA,SAAA5+H,GACAD,KAAAgU,KAAA,qBAAA+C,KAAA,cAAA9W,IAMAqyB,OAAA,SAAAoiC,GACA,GACAoqE,GADAC,EAAArqE,EAAArkD,IAGA,IAAA,gBAAA0uH,GAAA,SACAD,EAAA97H,EAAA+7H,EAAA9kH,cACA,IAAA,gBAAA8kH,GAAA,SAAA,CACA,OAAAA,EAAA9kH,SAAA3B,MACA,IAAA,OAAAA,KAAAtY,IAAA,MACA,KAAA,QAAAsY,KAAAtY,KAAA2a,QAAA,UAGAmkH,EADA,IAAAC,EAAA9kH,SAAA81E,IACAz3E,KAEAA,KAAAtE,KAAA+qH,EAAA9kH,SAAA81E,KAIApzE,QAAA4zB,IAAAuuF,EACA,IAAA3+G,GAAA2+G,EAAAC,EAAAhxG,QAAAvrB,MAAAs8H,EAAAC,EAAA73H,UACAyV,SAAA4zB,IAAApwB,GAEAu0C,EAAAymE,QAAAsD,QAAAzmE,QAAA7kC,UAAAhT,KASA8gB,KAAA,SAAAyzB,GACA,GAAArkD,GAAArQ,KAAAqQ,KAAA,eAEA4jB,OAAApW,MACAyf,MAAA,0BACA14B,KAAA,WACA5E,KAAA2I,KAAA+rD,EAAArkD,KAAA1H,MACA3I,KAAAgU,KAAA,oBAAAspC,QAAAA,QAAA,IAEAt9C,KAAA0jB,GAAA,QAAA,sBAAA,SAAA2Q,GACA,GAAApb,GAAAjW,EAAAqxB,EAAAlc,QAAAwC,QAAA,UACA8xB,EAAAxzB,EAAA5I,KAAA,SAEA,IAAA,OAAAo8B,EAAA,CACA,GAAAvJ,GAAAlgC,EAAAqxB,EAAAlc,QAAAwC,QAAA,QACAqkH,EAAA/9F,KAAAkC,kBAAAD,GAAA,GACA36B,EAAAyvD,QAAA7kC,UAAA6rG,EACA3uH,GAAAinD,OAAAmnE,QAAAl2H,OACA,UAAAkkC,GACAp8B,EAAAinD,OAAAmnE,QAAA,SAKA,OAHAxlH,GAAA0B,QAAA,UAAAsZ,MAAA,QAEAI,EAAAjU,kBACA,QAaAq+G,QAAA,SAAAp+H,GACA,GAAAgQ,GAAArQ,KAAAqQ,KAAA,eAEA,IAAA,QAAAA,EAAA0rH,UAEA,GADAxzH,EAAAkzH,eAAAp7H,GACA,IAAAkI,EACA,MAAA,UAEAA,GAAAyvD,QAAA7kC,UAAA9yB,EAAA,KAKA,OAFAo6H,WAAAz6H,KAAAgD,EAAAgzB,GAAAyM,KAAA7Y,MAAA,YAAAvpB,IACAgQ,EAAAinD,OAAAmnE,QAAAl2H,GACAvI,MAMAoO,KAAA,WACA,MAAApO,MAAA6B,KAAA,WACA,GAAAwL,GAAArK,EAAAhD,MACAqQ,EAAAhD,EAAAgD,KAAA,eACAA,GAAAinD,OAAAlpD,UASA6wH,YAAA,WACA,MAAAj/H,MAAA6B,KAAA,WACA,GAAAwL,GAAArK,EAAAhD,MACAqQ,EAAAhD,EAAAgD,KAAA,gBACAF,EAAA9C,EAAAuoD,aAAA,WAEA,QAAAzlD,GACA,IAAA,UACA,IAAA,aACAE,EAAAinD,OAAAxpC,OACA,MACA,KAAA,YACAzd,EAAAinD,OAAAlpD,WAUAqF,KAAA,SAAA84B,GACA,MAAAvsC,MAAA6B,KAAA,WACA,GAAAwL,GAAArK,EAAAhD,MACAqQ,EAAAhD,EAAAgD,KAAA,eACAA,GAAAinD,OAAA7jD,KAAA84B,GACAl/B,EAAAuoD,aAAA,WAAA,cAOA9nC,MAAA,WACA,MAAA9tB,MAAA6B,KAAA,WACA,GAAAwL,GAAArK,EAAAhD,MACAqQ,EAAAhD,EAAAgD,KAAA,eACAA,GAAAinD,OAAAxpC,WAQAkL,MAAA,WACA,GAAAh5B,KAAAW,OAAA,CACA,GAAAu+H,GAAA1E,GAAAx6H,KAEAA,MAAA6B,KAAA,WACA,GAAAwL,GAAArK,EAAAhD,MACAqQ,EAAAhD,EAAAgD,KAAA,eAEAhD,GAAAuoD,aAAA,WACA5yD,EAAA,kBAAA8d,QAAA,eAAAzQ,EAAAinD,OAAA/kD,IACAlC,EAAAinD,OAAAxpC,WAGA9tB,KAAA4M,SAEAsyH,EAAApF,cAAA,kBAAA,GAEA,MAAA95H,OAMAkiC,KAAA,WACAl/B,EAAA,yBAAA8d,QAAA,QAAArH,KAAA,iBAQA2gH,aAAA,SAAA12G,GAWA,MAVAwS,SAAAxS,EACA1jB,KAAA+pB,YAAA,UACArG,EACA1jB,KAAA6pB,SAAA,UAEA7pB,KAAA8pB,YAAA,UAGA0wG,GAAAx6H,MAAA85H,cAAA,kBAAA,GAEA95H,MAOAm/H,mBAAA,SAAA7xF,GACA,GAAAG,GAAAztC,KAAAgU,KAAA,oCAOA,OALAs5B,GAAAtqC,EAAAgF,QAAAo3H,SAAA,WAAAziH,QAAA4zB,IAAA,UAAAvwC,QACAstC,GAEArM,KAAA4L,QAAAU,aAAAE,EAAAztC,KAAAstC,GAEAttC,MAMAu3D,YAAA,SAAAxwC,GACA,GAAA1W,GAAArQ,KAAAqQ,KAAA,gBACAktC,EAAAk+E,eAAAprH,EAAAktC,MAAAA,MAIA,OAFA+Z,QAAAC,YAAAha,EAAAltC,EAAAktC,MAAA3/B,OAAAmJ,GAEA/mB,MAuBAo5B,SAAA,SAAAjpB,GACA,GAAAE,GAAArQ,KAAAqQ,KAAA,eAEA,IAAAA,EAAA,CAGA,GAAAA,EAAAinD,OAAAnnD,OAAAA,EAAA,CACA,GAAAkvH,GAAAr/H,KAAAgU,KAAA,cAEAqrH,GAAAv1G,YAAAzZ,EAAAinD,OAAAnnD,OAAA0Z,SAAA1Z,GACAE,EAAAinD,OAAAnnD,MAAAA,GACAwqH,WAAAxqH,IAAAE,EAAAotH,YACAz6H,EAAAqN,EAAAotH,YAAAllH,QACAlI,EAAAotH,WAAA,MACA,cAAAttH,GACAnQ,KAAAgU,KAAA,SAAAuE,QAIA,GAAA2mH,GAAA1E,GAAAx6H,KAWA,OAVA26H,YAAAxqH,GAIA,aAAAA,GAAA,QAAAA,EACAjF,WAAA,WAAAg0H,EAAApF,cAAA,mBAAA,KAEAoF,EAAApF,cAAA,mBANA92H,EAAA,kBAAA8d,QAAA,eAAAzQ,EAAAinD,OAAA/kD,IACAlC,EAAAinD,OAAAl4B,UACAl0B,WAAA,WAAAg0H,EAAApF,cAAA,mBAAA,MAOA95H,OAOA2gC,SAAA,WACA,GAAAtwB,GAAArQ,KAAAqQ,KAAA,eAEA,OAAAA,GAAAinD,OAAAjnD,EAAAinD,OAAAnnD,MAAA,QAQAgqH,MAAA,WACA,MAAAQ,YAAA36H,KAAA41D,aAAA,cAMAuoE,KAAA,SAAAmB,GAmBA,QAAAC,GAAAvzF,EAAArmC,GAGA,QAAA65H,GAAAntH,GACAA,EAAAA,EAAA5B,UAEA,KADA,GAAAmzC,GAAA,iBACAA,EAAAniD,KAAA4Q,IACAA,EAAAA,EAAAhP,QAAAugD,EAAA,QACA,OAAAvxC,GAPA,GAAAotH,GAAAr1H,KAAAs0B,MAAAt0B,KAAAs1H,IAAA,GAAA/5H,GAAA,IAAAqmC,EAUA,OAAAwzF,GAAAC,GA7BA,GAAApvH,GAAArQ,KAAAqQ,KAAA,eAEA,IAAAA,GAAAA,EAAAinD,QAAA,WAAAjnD,EAAAinD,OAAAnnD,MAAA,CACA,GAAAmtH,GAAAt9H,KAAAgU,KAAA,eACA2rH,GAAA,SAAA,QAAA,SACAC,GAAA,MAAA,OAAA,SACAC,GAAA,UAAA,SAAA,UACApoG,EAAA,EAKA,KAHApnB,EAAAsvH,SACAtvH,EAAAsvH,QAAA9gH,QAAAihH,UAAArgF,OAAAqgF,UAAAC,OAAAD,YAEAv+H,EAAA,EAAAA,EAAAo+H,EAAAh/H,OAAAY,IAAA,CACA,GAAAgH,GAAAo3H,EAAAp+H,GACAyqC,EAAAszF,EAAAK,OAAAp3H,GAAAyjC,MACA8zF,EAAAR,EAAAK,OAAAp3H,GAAAu3H,MAEAjvH,EAAAzG,KAAA41H,MAAAF,EAAA9zF,EAAA,IAeA37B,GAAAsvH,OAAAp3H,GAAAyjC,MAAAA,EACA37B,EAAAsvH,OAAAp3H,GAAAu3H,MAAAn/H,QAAA82B,IACApnB,EAAAsvH,OAAAp3H,GAAAu3H,MAAAzvH,EAAAsvH,OAAAp3H,GAAAu3H,MAAAr9H,MAAA,IACA4N,EAAAsvH,OAAAp3H,GAAAu3H,MAAAv5H,KAAAsK,GACAysH,EAAArc,UAAA5wG,EAAAsvH,OAAAp3H,GAAAu3H,OACAp0H,OAAA4xH,EAAAxkH,SAAApN,SACAs3G,UAAAzhH,EAAA,EACAojH,cAAA,EACAC,cAAA,EACA/B,UAAA+c,EAAAr+H,GACAgiH,cAAAsc,EAAAt+H,GACAiiH,cAAA,SACAyc,kBAAA,GAAA1+H,EAAA,cAAA20B,OACAwtF,gBAAA,SAAA/9G,GACA,MAAA45H,GAAAvzF,EAAArmC,UAqDAu6H,QAAA,CA6BAnnF,MAAAnuC,UAAAouC,KAAA,WACA,MAAAh2C,GAAAhD,KAAAg7H,UAOAjiF,KAAAnuC,UAAAu1H,UAAA,WAGA,MAFAngI,MAAA+C,MACA/C,KAAA+C,IAAAm9H,WACAlgI,KAAA+C,KAmRAC,EAAA2N,GAAAilD,aAAA,SAAA7nC,GACA,MAAA4T,SAAA5T,GACA4T,QAAA5T,GACAvrB,MAAAxC,KAAA+M,MAAAnC,UAAAnI,MAAApB,KAAA6F,UAAA,IACA,gBAAA6mB,IAAAA,MAGA/qB,GAAAoN,MAAA,UAAA2d,EAAA,6BAAA2T,YAFAC,QAAAC,MAAAp/B,MAAAxC,KAAAkH,aAKAorB,UCvvCAH,OAAA,SAAA,SAAA,SAAA,OAAA,QAAA,WACA,SAAAnvB,EAAAgwB,EAAAiO,EAAAhN,GA+ZA,QAAAmsG,GAAAC,EAAAC,GAGA,QAAAC,GAAA9gI,IACA4gI,EAAA5gI,IAAA6gI,EAAA7gI,KAAA4gI,EAAA5gI,IAAA6gI,EAAA7gI,KACAg/D,EAAAh/D,IAAA20B,KAAAisG,EAAA5gI,GAAAk6B,GAAA2mG,EAAA7gI,KAJA,GAAAg/D,KAiBA,OAVA8hE,GAAA,UACAA,EAAA,SACAA,EAAA,QACAA,EAAA,UACAA,EAAA,WACAA,EAAA,SAEArgI,EAAAsgI,EAAAH,EAAA/nG,KAAAgoG,EAAAhoG,SACAmmC,EAAAnmC,KAAAp4B,GAEA8C,EAAAwJ,cAAAiyD,GAAA,KAAAA,EAGA,QAAAgiE,GAAAvyF,EAAAlmB,GACA,GAAApnB,KAEA,KAAA,GAAAsD,KAAAgqC,GACA,GAAAA,EAAAx9B,eAAAxM,GAAA,CACA,aAAAgqC,GAAAhqC,IACA,IAAA,SACA,GAAAlB,EAAAgK,QAAAkhC,EAAAhqC,MACAs8H,EAAAtyF,EAAAhqC,GAAA8jB,EAAA9jB,IACA,QAEA,MACA,KAAA,SACA,IAAA,UACA,GAAA8jB,EAAA9jB,IAAAgqC,EAAAhqC,GACA,SAGAtD,EAAAsD,GAAAgqC,EAAAhqC,GAIA,MAAAtD,GAQA,QAAA4/H,GAAAE,EAAAC,GAMA,QAAA13C,GAAAy3C,EAAAC,GAGA,IAAA,GAFAlhI,MAEA8B,EAAA,EAAAA,EAAAo/H,EAAAhgI,OAAAY,IACAm/H,EAAAlwH,QAAAmwH,EAAAp/H,IAAA,GACA9B,EAAA8G,KAAAo6H,EAAAp/H,GAGA,OAAA9B,GAbA,GAAAS,GAAAu+D,IAmBA,OAjBAiiE,GAAAA,MACAC,EAAAA,OAaAzgI,EAAA+oF,EAAAy3C,EAAAC,IAAAhgI,OAAA,IAAA89D,EAAAwqB,MAAA/oF,IACAA,EAAA+oF,EAAA03C,EAAAD,IAAA//H,OAAA,IAAA89D,EAAAq/B,QAAA59F,GAEA8C,EAAAwJ,cAAAiyD,GAAA,KAAAA,EAGA,MAveA,UAAAz7D,GACA,GAAA0+B,GAAA,QAGAC,GAKAC,MAAA,SAAA7a,GACA,MAAA/mB,MAAA6B,KAAA,WAWA,QAAAs+B,GAAAkB,EAAAnV,EAAA3Z,EAAAW,GACA,GAAAi2B,IAAAtG,KAAA,gBACAie,IACA50B,IAAA40B,EAAAv6C,KAAA,UACA2M,GAAA4tC,EAAAv6C,KAAA,YACAu6C,QACA3X,EAAAvf,MAAAk3B,EAAAlyC,KAAA,KACA,IAAAvB,GACArK,EAAAgzB,GAAA6X,GAAA1E,EAAAnmC,EAAAgzB,GAAAv2B,GAAAgZ,KAAA,IAAAlG,EAAAm6B,cAAA,OAAArL,GACA,OAAAh0B,GAnBA,GAGAuzH,GAHAvzH,EAAArK,EAAAhD,MACAqQ,EAAAhD,EAAAgD,KAAAqxB,OACAwM,EAAAnnB,EAAAmnB,IAGA79B,GAAAwwH,WACAxwH,EAAAwwH,QAAA3yF,EAAA4yF,QAAA5yF,EACA79B,EAAAywH,OAAA5yF,EAAA4yF,OACAzwH,EAAA0iD,OAAAhsC,EAAAgsC,OAcAguE,UAAAC,QAAA9yF,EAAAgK,UACA0oF,EAAA59H,EAAAA,EAAAgzB,GAAAyM,KAAA7Y,MAAA,iBAEAvc,EAAAyW,OAAA9gB,EAAAgzB,GAAAqX,IACAzjB,MAAA,gBACAuW,EAAA,aAAA,EAAA,mBACAA,EAAA,WAAA,EAAA,gBAAA4gG,UACA5gG,EAAA,WAAA,EAAA,aAAA4gG,YACA1zH,EAAAyW,OAAA88G,GAGAA,EAAA98G,OAAA9gB,EAAAgzB,GAAAyM,KAAA7Y,MAAA,0CACArX,GAAA,qBACAlF,EAAA2G,KAAA,6BAAA0P,GAAA,cAAA,SAAA2Q,GACAhnB,EAAAyhC,MAAA,kBAIA8xF,EAAA98G,OAAA9gB,EAAAgzB,GAAAyM,KAAA7Y,MAAA,8BACArX,GAAA,mBACAlF,EAAA2G,KAAA,2BAAA0P,GAAA,cAAA,SAAA2Q,GACAhnB,EAAAyhC,MAAA,iBAIA8xF,EAAA98G,OAAA9gB,EAAAgzB,GAAAyM,KAAA7Y,MAAA,2BACArX,GAAA,gBACAlF,EAAA2G,KAAA,wBAAA0P,GAAA,cAAA,SAAA2Q,GACAhnB,EAAAyhC,MAAA,cAGAzhC,EAAAgD,KAAAqxB,EAAArxB,GAEAhD,EAAAyhC,MAAA,mBAQAxR,MAAA,SAAA4Q,GACA,GAAA5Q,GAAAt6B,EAAAgzB,GAAA4U,KAAA,QAAA5nC,EAAAgzB,GAAA4U,MAAAhhB,MAAA,YAAAskB,EAAArxB,MAKA,OAJA,QAAAqxB,EAAA+yF,UAAA/yF,EAAA4yF,QACA99H,EAAAs6B,GAAAxZ,OAAA,IAAA9gB,EAAAgzB,GAAA4U,MAAAhhB,MAAA,eACAskB,EAAA4yF,OAAAtsG,UAAA,EAAA,KAEA8I,GAYA4jG,aAAA,WACA,MAAAlhI,MAAA6B,KAAA,WACA,GAGAqhC,GAHA71B,EAAArK,EAAAhD,MACAqQ,EAAAhD,EAAAgD,KAAAqxB,GACAvB,EAAA9yB,EAAA2G,KAAA,oBAEAk6B,EAAA79B,EAAAwwH,QAAAxwH,EAAAywH,OAEAzwH,GAAA8wH,UAAA9wH,EAAAywH,SAEAzwH,EAAA8wH,SAAA9wH,EAAAywH,OAEA3gG,EAAAx3B,KAAA,IACAu6B,EAAAlgC,EAAAgzB,GAAAiL,MAAArX,MAAA,mBACAqX,EAAAoJ,OAAAC,SAAA4D,EAAArxB,KAAAqxB,EAAA3D,OAAA2D,EAAA1D,SACA,GACAvJ,EAAAoJ,OAAA/M,MAAA4Q,EAAA5Q,OACA2D,EAAAoJ,OAAAS,OAAAoD,EAAApD,QACA7J,EAAAoJ,OAAAW,KAAAkD,EAAAyE,KAAA,OAAA,QACA1R,EAAAoJ,OAAA/R,KAAA4V,EAAA5V,OAEA,QAAA4V,EAAA+yF,UACAj+H,EAAAkgC,GAAApf,OACAmd,EAAAoJ,OAAA5nB,SACA4e,MAAA,mBACAoL,OAAA,SAAApY,EAAA+sG,GAEA,MADA/wH,GAAA0iD,OAAAtiB,QAAA,OAAA2wF,EAAA,mBACA,MAKAjhG,EAAArc,OAAAof,OAYAm+F,YAAA,WACA,MAAArhI,MAAA6B,KAAA,WACA,GAIAy/H,GAJAj0H,EAAArK,EAAAhD,MACAqQ,EAAAhD,EAAAgD,KAAAqxB,GACAvB,EAAA9yB,EAAA2G,KAAA,kBACAk6B,EAAA79B,EAAAwwH,QAAAxwH,EAAAywH,OAGA,KAAAzwH,EAAAy9B,QAAA,CAGA3N,EAAAx3B,KAAA,IACAw3B,EAAArc,OAAA9gB,EAAAgzB,GAAAspF,OACA11F,MAAA,oDACA23G,wBAAA,EACAC,sBAAA,GAEAx+H,EAAAgzB,GAAA7X,GAAAnb,EAAAgzB,GAAAtX,GAAA,WACA1b,EAAAgzB,GAAAtX,GAAA,QACA1b,EAAAgzB,GAAAtX,GAAA,QACA1b,EAAAgzB,GAAAtX,GAAA,YACA1b,EAAAgzB,GAAA1X,UAEAgjH,EAAArgG,EAAA4L,QAAAI,gBACA,QACA3P,MAAA,wCACA1T,MAAA,gBAEAuW,EAAArc,OAAAw9G,GACAt+H,EAAAs+H,GAAA59G,GAAA,QAAA,SAAA2Q,GACA,GAAAyrF,GAAAzyG,EAAA2G,KAAA,aACA,IAAA,GAAA8rG,EAAAn/G,OAAA,CACA,GAAAmgI,GAAAhhB,EAAAzvG,KAAA,SAEA,SAAAA,EAAAwwH,QAAAC,GAAAG,SACAxnH,KAAApJ,EAAAwwH,QAAAC,GAAAjkH,KAEApD,KAAAqnH,EAEAzzH,EAAA0N,QAAA,UAAA2X,MAAA,WAAAjZ,MACAzW,EAAA,cAAAixB,MAAA,QAEA,OAAA,GAGA,IAAA5H,GAAA2G,EAAA2C,KAAAC,UAAA6rG,YACAvuE,UAAAhlB,EAAArxB,KAEA7Z,GAAAsqB,MAAAjB,IAAAA,EACAK,YAAA,mBACA7rB,KAAA,MACAwP,MAAA07B,OAAA,UACA2yF,MAAA,EACA/kG,GAAAtpB,EAAAywH,QAEAxyG,QAAA,SAAAyf,GACA1gC,EAAAyhC,MAAA,mBAAAf,GACA19B,EAAAy9B,QAAAz9B,EAAAywH,QAEA1wH,MAAA,SAAA6yB,GACAhP,EAAA6P,UAAA/B,cASA2/F,iBAAA,SAAA5zF,GAYA,QAAA6zF,GAAAtB,GACA,GAAAC,GAAA7hE,EACApxD,EAAArK,EAAAgzB,GAAA4U,MAEA,IAAAy1F,EAAAnoF,UACA,IAAAooF,EAAAjwH,EAAAwwH,QAAAR,EAAAnoF,aACAumB,EAAA2hE,EAAAC,EAAAC,IAAA,CACA,GAAAx4F,GAAA,CAEA,KAAA,GAAA5nC,KAAAu+D,GACA,GAAAA,EAAA/tD,eAAAxQ,GAAA,CACA,GAAAk9C,GAAA,QAAAl9C,EAAA,UAAAogI,EAAAzjH,KAAA3c,CACA8C,GAAAqK,GAAAyW,OAAA,GAAAgkB,IAAA5R,OAAA,KACAlzB,EAAAgzB,GAAA4U,MAAAhhB,MAAA,eAAAwzB,UAKAp6C,GAAAqK,GAAAyW,OAAA,UAGA,OAAAzW,GA5BA,IAAA,GAJAyhC,GAAA9uC,KACAqQ,EAAArQ,KAAAqQ,KAAAqxB,GACA49E,EAAAt/G,KAAAgU,KAAA,8BAEAzS,EAAA,EAAAA,EAAAusC,EAAAntC,OAAAY,IAAA,CACA,GAAAsC,GAAAiqC,EAAAvsC,EAEA8O,GAAAwwH,QAAAh9H,EAAAi9H,UACAzwH,EAAAwwH,QAAAh9H,EAAAi9H,QAAAj9H,GA2BA,IAAA,GAAAtC,GAAA,EAAAA,EAAAusC,EAAAntC,OAAAY,IAAA,CACA,GACA4c,GADAta,EAAAiqC,EAAAvsC,EAGA,IAAAA,GAAAusC,EAAAntC,OAAA,GACAkD,EAAAq0C,WAAA7nC,EAAAywH,OAAAj9H,EAAAq0C,UACA,KAEA,IAAA/O,IAAAy4F,cAAA/9H,EAAAi9H,OACAzwH,GAAAywH,QAAAj9H,EAAAi9H,SACA33F,EAAAvf,MAAA,WAEAzL,EAAAnb,EAAAgzB,GAAA7X,GAAAgrB,EACAnmC,EAAAgzB,GAAA5X,IAAAwL,MAAA,kBACA/lB,EAAAwnC,gBAAA,cACAroC,EAAAgzB,GAAA5X,IAAAwL,MAAA,QACA,GAAA3X,MAAA,IAAApO,EAAA8uC,MAAAxH,kBACAnoC,EAAAgzB,GAAA5X,IAAAwL,MAAA,UACA/lB,EAAAinC,QAAA,aACA9nC,EAAAgzB,GAAA5X,IAAAwL,MAAA,WACA+3G,EAAA99H,KACAy7G,EAAAx7F,OAAA3F,GAGAmhG,EAAA57F,GAAA,QAAA,KAAA,SAAA2Q,GACA,GAAAlW,GAAAnb,EAAAqxB,EAAAlc,QAAA4C,QAAA,MACA+lH,EAAA3iH,EAAA9N,KAAA,SAEAy+B,GAAAA,MAAA,YAAAgyF,MASAe,UAAA,SAAAf,GACA,GAAAzwH,GAAArQ,KAAAqQ,KAAAqxB,GACAgB,EAAA1iC,KAAA8Y,OAAA,kBAAA9E,KAAA,KAQA,OANA0uB,GAAA/5B,KAAA,IACA+5B,EAAA5e,OAAA9jB,KAAA8uC,MAAA,QAAAz+B,EAAAwwH,QAAAC,KACA9gI,KAAAgU,KAAA,cAAA8V,YAAA,WACA9pB,KAAAgU,KAAA,kBAAA8sH,EAAA,KAAAj3G,SAAA,WACAxZ,EAAAywH,OAAAA,EAEA9gI,MAeA8hI,SAAA,WACA,MAAA9hI,MAAA6B,KAAA,WACA,GAAAwL,GAAArK,EAAAhD,MACAqQ,EAAAhD,EAAAgD,KAAAqxB,EAEA,IAAArxB,EAAAouD,MAAApuD,EAAAywH,OAAA,CAGAzzH,EAAA2G,KAAA,eAAArL,KAAA,GACA,IAAA0jB,GAAA2G,EAAA2C,KAAAC,UAAA6rG,YACAvuE,UAAA7iD,EAAAywH,OAEA99H,GAAAsqB,MAAAjB,IAAAA,EACAK,YAAA,mBACA7rB,KAAA,MACAwP,MAAA07B,OAAA,QAEAzd,QAAA,SAAAyf,GACA1gC,EAAAyhC,MAAA,WAAAf,GACA19B,EAAAouD,KAAApuD,EAAAywH,QAEA1wH,MAAA,SAAA2xB,GACA9N,EAAA6P,UAAA/B,UAMAggG,SAAA,SAAAtjE,GACAA,EAAAnmC,MAAAt4B,KAAA8uC,MAAA,WAAA2vB,EAAAnmC,MACAmmC,EAAApuD,MAAArQ,KAAA8uC,MAAA,YAAA2vB,EAAApuD,OAGAmwH,SAAA,SAAA/hE,GAQA,QAAAujE,GAAAx8F,EAAAtvB,GACA00B,EAAA9mB,OAAA9gB,EAAAgzB,GAAA4U,MAAAhhB,MAAA,YAAA1T,GAAAsvB,IARA,GAAArF,GAAAngC,KAAAgU,KAAA,eACAyuB,EAAAz/B,EAAAA,EAAAgzB,GAAAyM,KAAA7Y,MAAA,aACA5mB,EAAAgzB,GAAAqL,MAAA,UACAuJ,EAAA5nC,EAAAA,EAAAgzB,GAAA4U,MAAAhhB,MAAA,cAQA,IANA6Y,EAAA3e,OAAA8mB,GAMA6zB,EAAAq/B,QAAAn9F,OAAA,CACAiqC,EAAA9mB,OAAA,YACA,KAAA,GAAAviB,GAAA,EAAAA,EAAAk9D,EAAAq/B,QAAAn9F,OAAAY,IACAygI,EAAAvjE,EAAAq/B,QAAAv8F,GAAA,WAEA,GAAAk9D,EAAAwqB,MAAAtoF,OAAA,CACAiqC,EAAA9mB,OAAA26C,EAAAq/B,QAAAn9F,OAAA,KAAA,GAAA,UACA,KAAA,GAAAY,GAAA,EAAAA,EAAAk9D,EAAAwqB,MAAAtoF,OAAAY,IACAygI,EAAAvjE,EAAAwqB,MAAA1nF,GAAA,SAKA,MAFA4+B,GAAArc,OAAA2e,GAEAziC,MAGAiiI,UAAA,SAAAxjE,GAKA,IAAA,GAJAt+B,GAAAngC,KAAAgU,KAAA,eACAqnD,EAAAoD,EAAAvuD,MAAA,MACAk+D,EAAAprE,EAAAA,EAAAgzB,GAAAo4C,KAAAxkD,MAAA,WAEAroB,EAAA,EAAAA,EAAA85D,EAAA16D,OAAAY,IAAA,CACA,GAAAyxD,GAAAqI,EAAA95D,GACA2gI,GAAAC,IAAA,YACA1qH,IAAA,YACAC,IAAA,YACA0qH,IAAA,YAEAh0D,GAAAtqD,OAAA9gB,EAAAgzB,GAAA4U,MAAAhhB,MAAAs4G,EAAAlvE,EAAAv+B,OAAA,KAAAu+B,GACAhwD,EAAAgzB,GAAAqsG,MAGAliG,EAAArc,OAAAsqD,IAeAprE,GAAA2N,GAAAm+B,MAAA,SAAA/gB,GACA,MAAA4T,GAAA5T,GACA4T,EAAA5T,GACAvrB,MAAAxC,KAAA+M,MAAAnC,UAAAnI,MAAApB,KAAA6F,UAAA,IACA,gBAAA6mB,IAAAA,MAGA/qB,GAAAoN,MAAA,UAAA2d,EAAA,6BAAA2T,GAFAC,EAAAC,MAAAp/B,MAAAxC,KAAAkH,aAKAorB,SAmFA8tG,SAAAA,EACAK,WAAAA,EACAD,SAAAA,IC3fA,IAAA8B,eAAA7qH,KAAA,EAAA8qH,MAAA,EAAAC,MAAA,EAAAC,MAAA,EAAAC,MAAA,GAEAC,SACAC,oBAAA,SAAAziI,GACA,MAAAmiI,cAAA5xH,eAAAvQ,IAGA0iI,gBAAA,SAAAjwG,GAAA,MAAAA,GAAAvvB,QAAA,qBAAA,KAEAy/H,cAAA,SAAAlwG,GAMA,IAAA,GALAmwG,GAAAnwG,EAAApiB,QAAA,MACAwyH,EAAApwG,EAAApiB,QAAA,MACAyyH,EAAAF,GAAA,GAAAC,GAAA,GAAAA,EAAA,EAAA,KAAA,KAEA3nE,EAAAzoC,EAAA1iB,MAAA+yH,GACA1hI,EAAA,EAAAA,EAAA85D,EAAA16D,OAAAY,IACA85D,EAAA95D,GAAAohI,QAAAE,gBAAAxnE,EAAA95D,GAGA,OAAA85D,IAIA6nE,SAAA,SAAAvrF,EAAA7L,EAAA8sF,GACA,GAAA,MAAAA,EACA,GAAAtlH,GAAAslH,EACA/yF,EAAA,MACA,CAAA,IAAAiG,EAIA,MAAA,KAHA,IAAAx4B,GAAAw4B,EAAA,GACAjG,EAAA,EAKA,KAAAA,EAAAiG,EAAAnrC,OAAAklC,IACAvyB,EAAAqkC,EAAArkC,EAAAw4B,EAAAjG,GAGA,OAAAvyB,IAIA6vH,aAAA,SAAA1jI,EAAAC,GAEA,IAAA,GADA0jI,GAAAh5H,KAAAC,IAAA5K,EAAAkB,OAAAjB,EAAAiB,QACAY,EAAA,EAAAA,EAAA6hI,EAAA7hI,IAAA,CACA,GAAA9B,EAAA8B,GAAA7B,EAAA6B,GAAA,OAAA,CACA,IAAA9B,EAAA8B,GAAA7B,EAAA6B,GAAA,MAAA,GAGA,MAAA9B,GAAAkB,QAAAjB,EAAAiB,OAAA,EAAAlB,EAAAkB,OAAAjB,EAAAiB,QAAA,EAAA,GAGA0iI,kBAAA,SAAAvvH,EAAAnT,GACA,MAAAA,GAAA,EAAAmT,EAAAnT,EAAA,GAMA2iI,WAAA,SAAAC,GACA,MAAA,UAAAhhH,GAAA,MAAAghH,GAAA7yH,eAAA6R,KAIAihH,UAAA,SAAAD,EAAAhhH,EAAAna,GACA,MAAAm7H,GAAA7yH,eAAA6R,GAAAghH,EAAAhhH,GAAAna,GAGAq7H,gBAAA,SAAAhkI,EAAAC,EAAAgkI,GACA1jI,KAAA2jI,SAAA,SAAAlkI,EAAAC,GACAM,KAAA4jI,SAAAnkI,GACAO,KAAA6jI,SAAAnkI,IAGAM,KAAA4jI,SAAA,SAAAnkI,GACAA,GAAAO,KAAAP,IACAO,KAAAP,EAAAA,EACAO,KAAA8jI,gBAAA9jI,KAAA+jI,QAAA,OAGA/jI,KAAA6jI,SAAA,SAAAnkI,GACAA,GAAAM,KAAAN,IACAM,KAAAN,EAAAA,EACAM,KAAA8jI,gBAAA9jI,KAAA+jI,QAAA/jI,KAAAgkI,WAAA,KACAhkI,KAAAikI,cAGAjkI,KAAAikI,UAAA,WAKA,IAAA,GAJAvkI,GAAAM,KAAAN,EACAiG,EAAAjG,EAAAiB,OACAujI,EAAAlkI,KAAAkkI,OACAC,KACA5iI,EAAA,EAAAA,EAAA7B,EAAAiB,OAAAY,IAAA,CACA,GAAA82D,GAAA34D,EAAA6B,EACA,IAAA2iI,EAAAxzH,eAAA2nD,GAAA,CACA,GAAA+rE,GAAAF,EAAA7rE,EACA1yD,IAAA,KAAA,IAAAy+H,EAAAzjI,OAAAgF,GACAw+H,EAAA9rE,GAAA,QACA6rE,GAAA7rE,IAEA+rE,EAAA79H,KAAAhF,OAGA2iI,GAAA7rE,IAAA92D,GAIA,IAAA,GAAA82D,KAAA8rE,GACAA,EAAAzzH,eAAA2nD,UACA6rE,GAAA7rE,EAIA,IAAAqrE,GAAA1jI,KAAA0jI,OACAW,IACA,IAAAX,EAAA,CACA,IAAA,GAAArrE,KAAA8rE,GACAA,EAAAzzH,eAAA2nD,IAAAqrE,EAAArrE,KACAgsE,EAAAhsE,GAAA,QACA8rE,GAAA9rE,GAGA,KAAA,GAAAA,KAAA6rE,GACAA,EAAAxzH,eAAA2nD,IAAAqrE,EAAArrE,KACAgsE,EAAAhsE,GAAA,QACA6rE,GAAA7rE,IAKAr4D,KAAAskI,QAAA3B,QAAAW,WAAAe,GACArkI,KAAAukI,WAAA5B,QAAAW,WAAAa,IAGAnkI,KAAAwkI,mBAAA,SAAAC,EAAAC,EAAAC,EAAAC,GAaA,IAAA,GAJA1gI,GARAzE,EAAAO,KAAAP,EACAC,EAAAM,KAAAN,EACAwkI,EAAAlkI,KAAAkkI,IACAI,EAAAtkI,KAAAskI,QACAO,EAAAJ,EACAK,EAAAH,EACAI,EAAA,EACA/gI,EAAA,KAGAghI,KACAlrE,KACAv4D,EAAAkjI,EAAAljI,EAAAmjI,EAAAnjI,IAAA,CACA,GAAA0jI,MACAC,EAAAvC,QAAAa,UAAAU,EAAAzkI,EAAA8B,GAAAu4D,EACA,KAAA,GAAAqrE,KAAAD,GACA,GAAAA,EAAAx0H,eAAAy0H,GAAA,CAEA,GADAnhI,EAAAkhI,EAAAC,GACAnhI,EAAA2gI,EAAA,QACA,IAAA3gI,GAAA4gI,EAAA,KACAK,GAAAjhI,GAAAE,EAAAy+H,QAAAa,UAAAwB,EAAAhhI,EAAA,EAAA,GAAA,EACAE,EAAA6gI,IACAF,EAAAtjI,EAAA2C,EAAA,EACA4gI,EAAA9gI,EAAAE,EAAA,EACA6gI,EAAA7gI,GAIA8gI,EAAAC,EAGA,KAAAJ,EAAAJ,GAAAK,EAAAH,IAAAL,EAAA5kI,EAAAolI,EAAA,KAAArlI,EAAAolI,EAAA,IAAAnlI,EAAAolI,EAAA,IACAD,IACAC,IACAC,GAGA,MAAAF,EAAAE,EAAAL,GAAAI,EAAAC,EAAAH,IACAN,EAAA5kI,EAAAolI,EAAAC,KACAtlI,EAAAolI,EAAAE,IAAArlI,EAAAolI,EAAAC,IACAA,GAGA,MAAAF,EAAAJ,GAAAK,EAAAH,GAAAL,EAAA5kI,EAAAolI,EAAA,KAAArlI,EAAAolI,EAAA,IAAAnlI,EAAAolI,EAAA,IACAD,IACAC,IACAC,GAGA,MAAAF,EAAAE,EAAAL,GAAAI,EAAAC,EAAAH,GAAAN,EAAA5kI,EAAAolI,EAAAC,KACAtlI,EAAAolI,EAAAE,IAAArlI,EAAAolI,EAAAC,IACAA,GAGA,QAAAF,EAAAC,EAAAC,IAGA/kI,KAAAolI,oBAAA,WACA,GAAA,MAAAplI,KAAA8jI,gBAAA,MAAA9jI,MAAA8jI,eAOA,KANA,GAKAW,GAAAC,EAAAC,EAAAC,EAAAS,EAAA9jI,EAAAyC,EAAAE,EAAAmO,EALA1L,EAAA3G,KAAAP,EAAAkB,OACAuoB,EAAAlpB,KAAAN,EAAAiB,OAEAsL,IAAA,EAAAtF,EAAA,EAAAuiB,IACA46G,KAEA73H,EAAAtL,QACA0kI,EAAAp5H,EAAAqI,MACAmwH,EAAAY,EAAA,GACAX,EAAAW,EAAA,GACAV,EAAAU,EAAA,GACAT,EAAAS,EAAA,GACAhzH,EAAArS,KAAAwkI,mBAAAC,EAAAC,EAAAC,EAAAC,GACArjI,EAAA8Q,EAAA,GACArO,EAAAqO,EAAA,GACAnO,EAAAmO,EAAA,GAEAnO,IACA4/H,EAAAv9H,KAAA8L,GACAoyH,EAAAljI,GAAAojI,EAAA3gI,GACAiI,EAAA1F,MAAAk+H,EAAAljI,EAAAojI,EAAA3gI,IACAzC,EAAA2C,EAAAwgI,GAAA1gI,EAAAE,EAAA0gI,GACA34H,EAAA1F,MAAAhF,EAAA2C,EAAAwgI,EAAA1gI,EAAAE,EAAA0gI,IAIAd,GAAAxyH,KAAAqxH,QAAAQ,aAEA,IACAmC,GAAAC,EAAAC,EADAC,EAAA,EAAAC,EAAA,EAAAC,EAAA,EAAAC,EAAA,EAEAC,IACA,KAAA,GAAAhgG,KAAAi+F,GACAA,EAAApzH,eAAAm1B,KACA+/F,EAAA9B,EAAAj+F,GACAy/F,EAAAM,EAAA,GACAL,EAAAK,EAAA,GACAJ,EAAAI,EAAA,GACAH,EAAAE,GAAAL,GAAAI,EAAAC,GAAAJ,EACAI,GAAAH,GAEAG,GAAAE,EAAAt/H,MAAAk/H,EAAAC,EAAAC,IACAF,EAAAH,EACAI,EAAAH,EACAI,EAAAH,GASA,OAJAG,IAAAE,EAAAt/H,MAAAk/H,EAAAC,EAAAC,IAEAE,EAAAt/H,MAAAI,EAAAuiB,EAAA,IACAlpB,KAAA8jI,gBAAA+B,EACA7lI,KAAA8jI,iBAGA9jI,KAAA8lI,YAAA,WACA,GAAA,MAAA9lI,KAAA+jI,QAAA,MAAA/jI,MAAA+jI,OACA,IAAAxiI,GAAA,EACAyC,EAAA,EACA66G,IACA7+G,MAAA+jI,QAAAllB,CACA,IAAA+mB,GAAAlpF,EAAAqpF,EAAA7sF,EAAA1T,EACAwgG,EAAAhmI,KAAAolI,qBACA,KAAA,GAAAv/F,KAAAmgG,GACAA,EAAAt1H,eAAAm1B,KACA+/F,EAAAI,EAAAngG,GACA6W,EAAAkpF,EAAA,GACAG,EAAAH,EAAA,GACA1sF,EAAA0sF,EAAA,GACApgG,EAAA,GACAjkC,EAAAm7C,GAAA14C,EAAA+hI,EACAvgG,EAAA,UACAjkC,EAAAm7C,EACAlX,EAAA,SACAxhC,EAAA+hI,IACAvgG,EAAA,UAEAA,GAAAq5E,EAAAt4G,MAAAi/B,EAAAjkC,EAAAm7C,EAAA14C,EAAA+hI,IACAxkI,EAAAm7C,EAAAxD,EACAl1C,EAAA+hI,EAAA7sF,EAEAA,GAAA2lE,EAAAt4G,MAAA,QAAAm2C,EAAAn7C,EAAAwkI,EAAA/hI,IAIA,OAAA66G,IAKA7+G,KAAAimI,oBAAA,SAAAtgI,GACAA,IAAAA,EAAA,EACA,IAAAugI,GAAAlmI,KAAA8lI,aACAI,KAAAA,IAAA,QAAA,EAAA,EAAA,EAAA,IACA,IAAAr8F,GAAArE,EAAAigG,EAAAH,EAAAI,EAAAH,CACA,UAAAW,EAAA,GAAA,KACAr8F,EAAAq8F,EAAA,GACA1gG,EAAAqE,EAAA,GACA47F,EAAA57F,EAAA,GACAy7F,EAAAz7F,EAAA,GACA67F,EAAA77F,EAAA,GACA07F,EAAA17F,EAAA,GACAq8F,EAAA,IAAA1gG,EAAAp7B,KAAAC,IAAAo7H,EAAAH,EAAA3/H,GAAA2/H,EAAAl7H,KAAAC,IAAAq7H,EAAAH,EAAA5/H,GAAA4/H,IAEA,SAAAW,EAAAA,EAAAvlI,OAAA,GAAA,KACAkpC,EAAAq8F,EAAAA,EAAAvlI,OAAA,GACA6kC,EAAAqE,EAAA,GACA47F,EAAA57F,EAAA,GACAy7F,EAAAz7F,EAAA,GACA67F,EAAA77F,EAAA,GACA07F,EAAA17F,EAAA,GACAq8F,EAAAA,EAAAvlI,OAAA,IAAA6kC,EAAAigG,EAAAr7H,KAAAkvD,IAAAgsE,EAAAG,EAAA9/H,GAAA+/H,EAAAt7H,KAAAkvD,IAAAisE,EAAAG,EAAA//H,IAGA,IAAAwgI,GAAAxgI,EAAAA,EACAukC,KACAk8F,IACA,KAAA,GAAAvgG,KAAAqgG,GACAA,EAAAx1H,eAAAm1B,KACAgE,EAAAq8F,EAAArgG,GACAL,EAAAqE,EAAA,GACA47F,EAAA57F,EAAA,GACAy7F,EAAAz7F,EAAA,GACA67F,EAAA77F,EAAA,GACA07F,EAAA17F,EAAA,GACA,SAAArE,GAAA8/F,EAAAG,EAAAU,IACAj8F,EAAA3jC,MAAAi/B,EAAAigG,EAAAr7H,KAAAkvD,IAAAgsE,EAAAG,EAAA9/H,GAAA+/H,EAAAt7H,KAAAkvD,IAAAisE,EAAAG,EAAA//H,KACAygI,EAAA7/H,KAAA2jC,GACAA,KACAu7F,EAAAr7H,KAAAC,IAAAo7H,EAAAH,EAAA3/H,GACA+/H,EAAAt7H,KAAAC,IAAAq7H,EAAAH,EAAA5/H,IAGAukC,EAAA3jC,MAAAi/B,EAAAigG,EAAAH,EAAAI,EAAAH,IAMA,QAFAr7F,GAAA,GAAAA,EAAAvpC,QAAA,SAAAupC,EAAA,GAAA,IAAAk8F,EAAA7/H,KAAA2jC,GAEAk8F,GAGApmI,KAAAqmI,MAAA,WAIA,MAHAvyH,SAAA6uH,QAAAO,SACA,SAAA1hB,EAAA8kB,GAAA,MAAA9kB,GAAA8kB,EAAAA,EAAA3lI,OAAA,IACAX,KAAAolI,sBAAA,GACAzC,QAAAU,kBAAAvvH,QAAA9T,KAAAP,EAAAkB,OAAAX,KAAAN,EAAAiB,SAGAX,KAAAumI,YAAA,WACA,GAAAvC,GAAA3rE,CACA,IAAA,MAAAr4D,KAAAgkI,WAAA,CACAhkI,KAAAgkI,WAAAA,IACA,KAAA,GAAAziI,GAAA,EAAAA,EAAAvB,KAAAN,EAAAiB,OAAAY,IACA82D,EAAAr4D,KAAAN,EAAA6B,GACAyiI,EAAA3rE,GAAAsqE,QAAAa,UAAAQ,EAAA3rE,EAAA,GAAA,EAGA2rE,EAAAhkI,KAAAgkI,UAKA,KAAA,GAHAwC,MACAC,EAAA9D,QAAAW,WAAAkD,GACA1yH,EAAA4yH,KAAA,EACAnlI,EAAA,EAAAA,EAAAvB,KAAAP,EAAAkB,OAAAY,IACA82D,EAAAr4D,KAAAP,EAAA8B,GACAklI,EAAApuE,GACAquE,KAAAF,EAAAnuE,GAEAquE,KAAA/D,QAAAa,UAAAQ,EAAA3rE,EAAA,GAEAmuE,EAAAnuE,GAAAquE,KAAA,EACAA,KAAA,GAAA5yH,GAGA,OAAA6uH,SAAAU,kBAAAvvH,EAAA9T,KAAAP,EAAAkB,OAAAX,KAAAN,EAAAiB,SAGAX,KAAA2mI,iBAAA,WACA,GAAAhgI,GAAA3G,KAAAP,EAAAkB,OACAuoB,EAAAlpB,KAAAN,EAAAiB,MACA,OAAAimI,kBAAAx8H,KAAAkvD,IAAA3yD,EAAAuiB,GAAAviB,EAAAuiB,IAGAlpB,KAAA0jI,OAAAA,EAAAA,EAAAf,QAAAC,oBACA5iI,KAAAP,EAAAO,KAAAN,EAAA,KACAM,KAAA2jI,SAAAlkI,EAAAC,IAKAyyB,QAAA,UAAA,cCjYA00G,UAiBAC,UAAA,SAAAnvE,GAgBA,QAAAovE,GAAAlqH,EAAAmqH,GACA,GAAA7kI,GAAAtC,SAAAO,cAAAyc,EAEA,OADA1a,GAAA+T,UAAA8wH,EACA7kI,EAGA,QAAA8kI,GAAApqH,EAAAxc,GACA,GAAA8B,GAAAtC,SAAAO,cAAAyc,EAEA,OADA1a,GAAA5B,YAAAV,SAAA2G,eAAAnG,IACA8B,EAGA,QAAA+kI,GAAArqH,EAAAmqH,EAAA3mI,GACA,GAAA8B,GAAAtC,SAAAO,cAAAyc,EAGA,OAFA1a,GAAA+T,UAAA8wH,EACA7kI,EAAA5B,YAAAV,SAAA2G,eAAAnG,IACA8B,EA8BA,QAAAglI,GAAArnB,EAAAsnB,EAAAC,EAAArpC,EAAAl2D,GACA,MAAAs/F,GAAAC,GACAvnB,EAAAv/G,YAAA0mI,EAAA,MAAAG,EAAA,GAAA32H,aACAqvG,EAAAv/G,YAAA2mI,EAAA,KAAAp/F,EAAAk2D,EAAAopC,GAAA/jI,QAAA,MAAA,UACA+jI,EAAA,IAEAtnB,EAAAv/G,YAAAV,SAAAO,cAAA,OACA0/G,EAAAv/G,YAAAwmI,EAAA,KAAA,UACAK,GAIA,QAAAE,GAAAxnB,EAAAsnB,EAAAG,EAAAvpC,EAAAl2D,GACAg4E,EAAAv/G,YAAA0mI,EAAA,KAAA,MAAAG,EAAA,IAAAA,EAAA,GAAA32H,aACAqvG,EAAAv/G,YAAA0mI,EAAA,KAAA,MAAAM,EAAA,IAAAA,EAAA,GAAA92H,aACAqvG,EAAAv/G,YAAA2mI,EAAA,KAAAp/F,EAAAk2D,EAAA,MAAAopC,EAAAA,EAAAG,GAAAlkI,QAAA,MAAA,UA5EA,GAAAmkI,GAAA7vE,EAAA6vE,cACAC,EAAA9vE,EAAA8vE,aACA1D,EAAApsE,EAAAosE,QACA2D,EAAA/vE,EAAA+vE,aAAA/vE,EAAA+vE,aAAA,YACAC,EAAAhwE,EAAAgwE,YAAAhwE,EAAAgwE,YAAA,WACAC,EAAAjwE,EAAAiwE,YACAC,EAAA,GAAAlwE,EAAAmwE,UAAA,GAAAnwE,EAAAmwE,SAAAnwE,EAAAmwE,SAAA,CAEA,IAAA,MAAAN,EACA,KAAA,uDACA,IAAA,MAAAC,EACA,KAAA,sDACA,KAAA1D,EACA,KAAA,gDAqBA,IAAAgE,GAAAloI,SAAAO,cAAA,SACA44C,EAAAn5C,SAAAO,cAAA,KACA2nI,GAAAxnI,YAAAy4C,GACA6uF,GACA7uF,EAAAz4C,YAAAV,SAAAO,cAAA,OACA44C,EAAAz4C,YAAAV,SAAAO,cAAA,OACA44C,EAAAz4C,YAAA2mI,EAAA,KAAA,YAAAQ,EAAA,QAAAC,MAEA3uF,EAAAz4C,YAAAV,SAAAO,cAAA,OACA44C,EAAAz4C,YAAA2mI,EAAA,KAAA,YAAAQ,IACA1uF,EAAAz4C,YAAAV,SAAAO,cAAA,OACA44C,EAAAz4C,YAAA2mI,EAAA,KAAA,YAAAS,KAEAI,GAAAA,EAgCA,KAAA,GA7BAC,GADAC,KA8BApiG,EAAA,EAAAA,EAAAk+F,EAAApjI,OAAAklC,IAAA,CACAgE,KAAAk6F,EAAAl+F,GACAiC,OAAA+B,KAAA,EAQA,KAAA,GAPAnqC,GAAAmqC,KAAA,GACAq+F,EAAAr+F,KAAA,GACAlkC,EAAAkkC,KAAA,GACAs+F,EAAAt+F,KAAA,GACAu+F,EAAAh+H,KAAAC,IAAA69H,EAAAxoI,EAAAyoI,EAAAxiI,GACA0iI,KACAC,KACA/mI,EAAA,EAAAA,EAAA6mI,EAAA7mI,IAAA,CAEA,GAAAqmI,GAAA7D,EAAApjI,OAAA,IAAAklC,EAAA,GAAAtkC,GAAAqmI,GAAA,GAAA/hG,GAAA,GAAAtkC,IAAA,SAAAumC,OAAA,CACA,GAAAygG,GAAAH,GAAA,GAAAviG,EAAA,EAAA,GAAA+hG,CACA,IAAAW,EAAA,EAAA,CAYA,GAXAF,EAAA9hI,KAAAyyC,EAAAn5C,SAAAO,cAAA,OAEAV,GAAA6oI,EACA5iI,GAAA4iI,EACAhnI,GAAAgnI,EAAA,EACAvvF,EAAAz4C,YAAA0mI,EAAA,KAAA,QACAY,GAAA7uF,EAAAz4C,YAAA2mI,EAAA,KAAA,OAAA,KACAluF,EAAAz4C,YAAA0mI,EAAA,KAAA,QACAjuF,EAAAz4C,YAAA2mI,EAAA,KAAA,OAAA,KAGArhG,EAAA,GAAAk+F,EAAApjI,OACA,KAEA,WAKA0nI,EAAA9hI,KAAAyyC,EAAAn5C,SAAAO,cAAA,OACAynI,EACA,UAAA//F,OACAw/F,EAAAtuF,EAAA,KAAArzC,IAAA8hI,EAAA3/F,QACA,WAAAA,QACAwgG,EAAA/hI,KAAAyhI,EAAAnoI,SAAAO,cAAA,OACAV,EAAAwoI,GAAAZ,EAAAtuF,EAAAt5C,IAAA,KAAA8nI,EAAA,UACA7hI,EAAAwiI,GAAAb,EAAAU,EAAA,KAAAriI,IAAA8hI,EAAA,WACA,UAAA3/F,OACAw/F,EAAAtuF,EAAAt5C,IAAA,KAAA8nI,EAAA1/F,QAGAw/F,EAAAtuF,EAAAt5C,IAAAiG,IAAA6hI,EAAA1/F,SAGApoC,EAAAynI,EAAAnuF,EAAAt5C,EAAAwoI,EAAAV,EAAA1/F,QACAniC,EAAAwhI,EAAAnuF,EAAArzC,EAAAwiI,EAAAV,EAAA3/F,SAIA,IAAA,GAAAvmC,GAAA,EAAAA,EAAA8mI,EAAA1nI,OAAAY,IAAA0mI,EAAA1hI,KAAA8hI,EAAA9mI,GACA,KAAA,GAAAA,GAAA,EAAAA,EAAA+mI,EAAA3nI,OAAAY,IAAA0mI,EAAA1hI,KAAA+hI,EAAA/mI,IAGA0mI,EAAA1hI,KAAAyyC,EAAAkuF,EAAA,KAAA,SAAA,4BACAluF,EAAApmC,aAAA,UAAAi1H,EAAA,EAAA,GACA7uF,EAAAz4C,YAAAynI,EAAAf,EAAA,IAAA,cACAe,EAAAp1H,aAAA,OAAA,wCAEAm1H,EAAAxhI,KAAAyyC,EAAAn5C,SAAAO,cAAA,SACA,KAAA,GAAAylC,KAAAoiG,GAAAA,EAAAv3H,eAAAm1B,IAAAmT,EAAAz4C,YAAA0nI,EAAApiG,GAEAmT,GAAA+tF,EAAA,QAAA,QAAAc,EAAA,cAAA,IACA,KAAA,GAAAhiG,KAAAkiG,GAAAA,EAAAr3H,eAAAm1B,IAAAmT,EAAAz4C,YAAAwnI,EAAAliG,GACA,OAAAmT,KAKA7mB,OAAA,WAAA,cC3JAA,OAAA,QAAA,SAAA,UAAA,YACA,YAEA,SAAAnvB,GACA,GAAA0+B,GAAA,OAGAC,GAYAC,MAAA,SAAA7a,GACA,MAAA/mB,MAAA6B,KAAA,WACA,GAAAm4D,GAAA2oE,QAAAG,cAAA/7G,EAAAizC,MACAwuE,EAAA7F,QAAAG,cAAA/7G,EAAAzmB,MACAmoI,EAAA,GAAA9F,SAAAc,gBAAAzpE,EAAAwuE,GACAzE,EAAA0E,EAAA3C,cACA8B,EAAA1xG,QAAAnP,EAAA6gH,YACA,EAAA7gH,EAAA6gH,WAEA5nI,MAAAO,YAAAsmI,SAAAC,WACAU,cAAAxtE,EACAytE,aAAAe,EACAzE,QAAAA,EACA2D,aAAA3gH,EAAA2hH,UAAA,YACAf,YAAA5gH,EAAA4hH,UAAA,eACAf,YAAAA,EACAE,SAAA9kI,EAAA,UAAAmF,QAAA,EAAA,QAiBAnF,GAAA2N,GAAA8tD,KAAA,SAAA1wC,GACA,MAAA4T,GAAA5T,GACA4T,EAAA5T,GACAvrB,MAAAxC,KAAA+M,MAAAnC,UAAAnI,MAAApB,KAAA6F,UAAA,IACA,gBAAA6mB,IAAAA,MAGA/qB,GAAAoN,MAAA,UAAA2d,EAAA,6BAAA2T,GAFAC,EAAAC,MAAAp/B,MAAAxC,KAAAkH,aAKAorB,UC7DAH,OAAA,WAAA,SAAA,SAAA,QAAA,OAAA,QACA,UAAA,SAAA,QACA,UAAA,QAEA,SAAAnvB,EAAAgwB,EAAAiB,EAAAgN,EAAA6N,EAAAhB,EAAAkmB,EAAAhlB,GAmmCA,QAAA0iB,GAAAj4C,GACA,MAAAA,GAAAA,EAAAvJ,MAAA,KAAAzN,MAAA,GAAA,GAAAmM,KAAA,KAAA,KAGA,QAAAg6H,GAAA1X,GACA,MAAAA,GAAAA,EAAAhhH,MAAA,KAAAoE,MAAA,KAGA,QAAAu0H,GAAApqE,GACA,GAAAA,EAAA,CAIA,IAAA,GAHApD,GAAAoD,EAAAvuD,MAAA,MACAk+D,EAAAprE,EAAAA,EAAAgzB,GAAAo4C,KAAAxkD,MAAA,WAEAroB,EAAA,EAAAA,EAAA85D,EAAA16D,OAAAY,IAAA,CACA,GAAAyxD,GAAAqI,EAAA95D,GACA2gI,GAAAC,IAAA,YACA1qH,IAAA,YACAC,IAAA,YACA0qH,IAAA,YAEAh0D,GAAAtqD,OAAA9gB,EAAAgzB,GAAA4U,MAAAhhB,MAAAs4G,EAAAlvE,EAAAv+B,OAAA,KAAAu+B,GACAhwD,EAAAgzB,GAAAqsG,MAEA,MAAAj0D,GAEA,MAAAprE,GAAAA,EAAAgzB,GAAAyM,KAAA7Y,MAAA,SAAA,eAIA,QAAAk/G,GAAA3kE,GAKA,QAAA4kE,GAAA/1E,EAAArmB,GACAyhC,EAAAtqD,OAAA9gB,EAAAgzB,GAAA4U,MAAAhhB,MAAA+iB,GAAAqmB,GACAhwD,EAAAgzB,GAAAqsG,MAGA,IAAA,GATAhnE,GAAA8I,EAAAj0D,MAAA,MACAk+D,EAAAprE,EAAAA,EAAAgzB,GAAAo4C,KAAAxkD,MAAA,WACA+iB,EAAA,KAOAprC,EAAA,EAAAA,EAAA85D,EAAA16D,OAAAY,IAAA,CACA,GAAAyxD,GAAAqI,EAAA95D,EAEA,YAAAyxD,GACA+1E,EAAA/1E,EAAA,qBACArmB,EAAA,oBACA,oBAAAA,GAAA,WAAAqmB,GACA+1E,EAAA/1E,EAAA,qBACArmB,EAAA,sBACA,sBAAAA,GAAA,WAAAqmB,GACA+1E,EAAA/1E,EAAA,qBACArmB,EAAA,MACAA,GACAo8F,EAAA/1E,EAAArmB,GAIA,MAAAyhC,IAzpCA,SAAAprE,GAkjCA,QAAAgmI,GAAA/nG,EAAAiN,GACA,GAAAoxE,GAAAt8G,EAAAgzB,GAAAspF,OAAA11F,MAAA,uBAEA5mB,GAAAs8G,GAAAx7F,OAAA9gB,EAAAgzB,GAAA7X,GAAAnb,EAAAgzB,GAAAtX,GAAA,QACA1b,EAAAgzB,GAAA5X,GAAA8vB,EAAAgjF,QACAluH,EAAAs8G,GAAAx7F,OAAA9gB,EAAAgzB,GAAA7X,GAAAnb,EAAAgzB,GAAAtX,GAAA,YACA1b,EAAAgzB,GAAA5X,GAAA,GAAAnM,MAAA,IAAAi8B,EAAA+6F,eACA99F,oBACAnoC,EAAAs8G,GAAAx7F,OAAA9gB,EAAAgzB,GAAA7X,GAAAnb,EAAAgzB,GAAAtX,GAAA,UACA1b,EAAAgzB,GAAA5X,GAAA8vB,EAAAg7F,sBAAA,iBACAh7F,EAAAi7F,OAAA,MAAA,QAEAloG,EAAAnd,OAAAw7F,GAGA,QAAA8pB,GAAA38F,EAAAr8B,GACA,MAAA,eAAAA,EAAAA,MACAq8B,EAAA,kBAAAr8B,EAAAqJ,KAGAvW,KAAAiwB,UAAA/iB,GArkCA,GAAAsxB,GAAA,UAEAlO,GACA6iC,SAAA,UACAgzE,UAAA,EACA5/B,UAAA,SAAA90C,MAIAhzB,GAYAC,MAAA,SAAA7a,GACA,MAAA/mB,MAAA6B,KAAA,WAcA,QAAAynI,GAAAj1G,EAAAtG,GACA,GAAA5V,GAAAnV,EAAAqxB,EAAAlc,OAEA,IAAAA,EAAA6R,SAAA,YAAA7R,EAAAoC,GAAA,YAAA,CACA,GAAA84B,GAAAl7B,EAAAs4B,QAAAjuC,MACA2V,EACApL,MAAAnC,UAAAnI,MAAApB,KAAA6F,UAAA,GACA,IAAA,aAAAmsC,EACA,OAEAhf,EAAAhU,kBAvBA,GAAAhT,GAAArK,EAAAhD,MACAqQ,EAAArN,EAAAgF,UAAAwrB,EAAAzM,EAEA1Z,GAAAgD,KAAAqxB,EAAArxB,GACAhD,EAAAwc,SAAA,WACAxc,EAAAojC,QAAA,oBAqBApjC,EAAAqW,GAAA,SAAA,SAAA2Q,EAAAvrB,GACAwgI,EAAAj1G,EAAA,YAAAvrB,KAEAuE,EAAAqW,GAAA,OAAA,SAAA2Q,EAAAhkB,GACAi5H,EAAAj1G,EAAA,OAAAhkB,KAEAhD,EAAAqW,GAAA,WAAA,SAAA2Q,GACAi1G,EAAAj1G,EAAA,cAEAhnB,EAAAqW,GAAA,WAAA,SAAA2Q,GACAi1G,EAAAj1G,EAAA,UAEAhnB,EAAAqW,GAAA,OAAA,SAAA2Q,GACAi1G,EAAAj1G,EAAA,UAEAhnB,EAAAqW,GAAA,SAAA,SAAA2Q,GACAi1G,EAAAj1G,EAAA,YAEAhnB,EAAAqW,GAAA,SAAA,SAAA2Q,GACAi1G,EAAAj1G,EAAA,YAEAhnB,EAAAqW,GAAA,kBAAA,SAAA2Q,GACAi1G,EAAAj1G,EAAA,UAEAhnB,EAAAqW,GAAA,cAAA,SAAA2Q,GACAi1G,EAAAj1G,EAAA,YAEAhnB,EAAAqW,GAAA,eAAA,SAAA2Q,MAGAhnB,EAAAqW,GAAA,gBAAA,SAAA2Q,EAAAsgC,GACAtnD,EAAAojC,QAAA,YAAAkkB,KAEAtnD,EAAAqW,GAAA,aAAA,SAAA2Q,EAAAnK,GACAA,GACA7c,EAAAojC,QAAA,sBAGAztC,EAAAjD,QAAA8xB,KAAA,eAAA,SAAAwC,GACA,MAAAhnB,GAAAojC,QAAA,SAAA,eAAApc,KAGAhnB,EAAAojC,QAAA,QAAApgC,EAAA69B,UAAAyB,MAAA,aAWAslB,UAAA,SAAAnsD,GACA,GAAAuH,GAAArQ,KAAAqQ,KAAAqxB,GACA7gC,EAAAmzD,EAAAC,SAAA5jD,EAAAgmD,SAKA,IAHA,gBAAA,KACAvtD,GAAAuH,KAAAvH,IAEAA,EAAA2rD,OACA,MAAA,WAEA,IAAA3rD,EAAAolC,MAAAplC,EAAAolC,KAAArxB,MAAA/T,EAAAujB,IACA,CAAA,GAAAxP,GAAA/T,EAAAolC,MAAAplC,EAAAolC,KAAArxB,KAAA/T,EAAAolC,KAAArxB,KAAA/T,EAAAujB,IACA2lC,EAAAn1C,EAAA3M,MAAA,KAAAoE,KAEA,IAAA09C,GAAAnxD,EAAAoP,SACA,MAAA,YAGA,MAAA,IAAAjQ,KAAAywC,QAAA,SAAA,eAGA3nC,EAAAolC,MACA79B,EAAAoJ,KAAA3Q,EAAAolC,KAAArxB,KACAxM,EAAA69B,KAAAplC,EAAAolC,KACA79B,EAAAgc,IAAA,KACA,QAAAvjB,EAAAolC,KAAA+yF,WACAn4H,EAAAujB,IAAA2G,EAAA2C,KAAAC,UAAA6rG,YAAA34H,EAAAolC,KAAArxB,QAEAxM,EAAAoJ,KAAA,KACApJ,EAAA69B,KAAA,MAEA79B,EAAAgc,IAAAvjB,EAAAujB,IACAhc,EAAAu+B,QAAA9lC,EAAA8lC,QACAv+B,EAAA6lD,MAAAptD,EAAAotD,MAEA7lD,EAAAmqF,SAAA1xF,GACAuH,EAAAk4F,gBAAAl4F,EAAAk5H,YACAl5H,EAAAnH,UAAAJ,EAAAuH,KACAA,EAAAm5H,gBAAA1gI,EAAA0gI,iBAAA,OAEAxpI,KAAAywC,QAAA,oBAEA3nC,EAAAujB,MAAAvjB,EAAAujB,IAAA2G,EAAA2C,KAAAC,UAAAlD,OACA5pB,EAAA0sD,WAAA1nB,EAAAvnC,KAAAuC,GAEA9I,KAAAywC,QAAA,OAAA3nC,EAAA6mC,OAAA7mC,EAAAolC,UAAAyB,MAAA,UACA3sC,EAAA,YAAAytC,QAAA,eAAA,GAEAzwC,OAMAypI,iBAAA,WACA,MAAAzpI,MAAA6B,KAAA,WACA,GAAAwL,GAAArK,EAAAhD,MACAqQ,EAAAhD,EAAAgD,KAAAqxB,GACA7gC,EAAAmzD,EAAAC,SAAA5jD,EAAAgmD,UAEA/4B,EAAAo0B,EAAArhD,EAAAoJ,OACAi4C,EAAAk3E,EAAAv4H,EAAAgc,OACAxrB,EAAAwgC,KAEAh0B,GAAA2mD,OAAA,QAAA12B,EAAAz8B,EAAAoP,UACA5C,EAAA2mD,OAAA,QAAA3jD,EAAA6lD,UAOAt1C,KAAA,SAAAnH,GACA,GAAAA,EAAA,CACA,GAAAwoB,GAAAjiC,IACAA,MAAAqQ,KAAAqxB,EAEA1+B,GAAAsqB,MAAAjB,IAAA2G,EAAA2C,KAAAC,UAAA6rG,YAAAhoH,EACAxJ,SAAA,OACAqe,QAAA,SAAAje,GACA4xB,EAAAwO,QAAA,aACApgC,KAAAA,EACA69B,MAAArxB,KAAApD,MAIArJ,MAAA,SAAA6yB,GACAhP,EAAA6P,UAAA/B,UAIA,MAAA/hC,OAMA0wD,OAAA,WACA,GAAArgD,GAAArQ,KAAAqQ,KAAAqxB,EAKA,OAHArxB,GAAAmqF,SAAAnqF,EAAAnH,WACAmH,EAAAk4F,gBAAAl4F,EAAAk5H,YACAl5H,EAAAo5F,WAAA,GACAzpG,MAMA0pI,OAAA,WACA,GAAAr8H,GAAArN,KACAqQ,EAAAhD,EAAAgD,KAAAqxB,GACArV,EAAA2G,EAAA2C,KAAAC,UAAA6rG,YACAvuE,UAAA7iD,EAAAoJ,KAqBA,OAnBAzW,GAAAsqB,MAAAjB,IAAAA,EACAxrB,KAAA,MACAwP,MAAA07B,OAAA,QACAzd,QAAA,SAAAyf,GACAA,EAAA1hB,IAAAA,EACA0hB,EAAAa,QAAA,QACAb,EAAAynB,WAAA,EACAnoD,EAAAojC,QAAA,YAAA1C,GACA/qC,EAAA,SAAA8d,QAAA,QACAjgB,KAAA,WACA4Y,KAAApJ,EAAAoJ,KACAqnH,OAAA/yF,EAAAG,KAAA4yF,UAGA1wH,MAAA,SAAA2xB,GACA9N,EAAA6P,UAAA/B,MAIA/hC,MAsBAy2D,KAAA,SAAAvoB,EAAAy7F,GACA,GAKA1iG,GALA52B,EAAArQ,KAAAqQ,KAAAqxB,GACA7gC,EAAAmzD,EAAAC,SAAA5jD,EAAAgmD,UACAhqC,EAAA2G,EAAA2C,KAAAC,UAAA6rG,YACA1zG,EAAA,OACA1gB,EAAArN,IAGA,KAAA,WAAAqQ,EAAAu+B,SAAA,YAAAv+B,EAAAu+B,UAAAv+B,EAAAgc,IACA,MAAArsB,MAAAywC,QAAA,UAEA,IAAA,MAAAvC,EAEA,MADAluC,MAAAywC,QAAA,UACAzwC,IAUA,KAPAqQ,EAAAoJ,MACAy0B,GAAAA,EAAA07F,SACA17F,GAAAA,EAAArxB,MAAAxM,EAAAoJ,OACA4S,GAAA6mC,UAAA7iD,EAAAoJ,MACAsU,EAAA,OAGA,kBAAA47G,EAAA,CAEA,GADAz7F,EAAAY,EAAA2xF,WAAAvyF,EAAA79B,EAAA69B,MACAlrC,EAAAwJ,cAAA0hC,GAEA,WADA9a,OAAA,YAGA6T,IAAAkjB,OAAA,iBACA,IAAA,QAAAp8B,EACAkZ,GAAA52B,KAAAA,EAAAkxF,WACA1gG,KAAAA,EAAAoP,cAGA,IAAAI,EAAAu5F,QAAAv5F,EAAAk4F,kBAIA,GAAA,MAAAz5D,EAAA0xF,SAAAnwH,EAAA69B,KAAA5V,KAAA4V,EAAA5V,MAEA,WADAlF,OAAA,iBAJA6T,IAAA52B,KAAAA,EAAAkxF,WACA1gG,KAAAA,EAAAoP,SA0DA,OAlDAi+B,KACAjH,EAAAiH,KAAAA,GACA79B,EAAA69B,OACAjH,EAAAiR,SAAA7nC,EAAA69B,KAAA4yF,QAEA99H,EAAAsqB,MAAAjB,IAAAA,EACApc,SAAA,OACAyc,YAAA,mBACA7rB,KAAAktB,EACA1d,KAAAnN,KAAAiwB,UAAA8T,GACA3Y,QAAA,SAAAyf,GACAA,EAAA39B,MACA6jB,EAAAb,MAAAg2G,EAAA,iBAAAr7F,KAEA19B,EAAA69B,MACA79B,EAAA69B,KAAA1D,SAAAuD,EAAAG,KAAA1D,SACAn9B,EAAAsN,QAAA,UAAAmG,QAAA,oBAEAzQ,EAAAoJ,KAAAs0B,EAAAt0B,KACApJ,EAAA69B,KAAAH,EAAAG,KACA79B,EAAAu+B,QAAA,QACAv+B,EAAAk4F,gBAAAl4F,EAAAk5H,YACAl5H,EAAAnH,UAAAmH,EAAAkxF,WACAlxF,EAAAm5H,gBAAA,OACAn5H,EAAAo5F,WAAA,GACAx1E,EAAAqB,UAAA3sB,KAAA,QACA4sB,MAAAloB,IAGA,QAAA0gB,IACA1d,EAAA6lD,MAAA,GACA7oD,EAAAojC,QAAA,oBACApjC,EAAAojC,QAAA,QAAApgC,EAAA69B,UAAAyB,MAAA,UACA3sC,EAAA,YAAAytC,QAAA,eAAA,GACA3C,EAAAvnC,KAAAwnC,KAGA39B,MAAA,SAAA2xB,EAAA8nG,EAAAC,GACA,KAAA/nG,EAAAvU,OACAngB,EAAAojC,QAAA,sBACAvtC,KAAAC,MAAA4+B,EAAA5R,eACA,KAAA4R,EAAAvU,OACAyG,EAAAb,MAAA,oDAEAA,MAAA,wCACA/lB,EAAAojC,QAAA,cAKAzwC,MAMA+pI,OAAA,SAAAhjH,GA8BA,QAAAijH,KACAhqI,KAAA8jB,OAAA9gB,EAAAgzB,GAAAiL,MACArX,MAAA,mBACAqX,EAAAoJ,OAAAr/B,OAAA,WAAA2mC,EAAA5G,UACA9J,EAAAoJ,OAAAr/B,OAAA,UAAAkjC,EAAA07F,SACA3oG,EAAAoJ,OAAAr/B,OAAA,OAAAkjC,EAAAyB,MACAgC,EAAA5G,SAAA7U,OACA+K,EAAAoJ,OAAAr/B,OAAA,SAAA2mC,EAAAtC,QACApO,EAAAoJ,OAAAC,SAAAG,EAAA,KAAAp6B,EAAAoJ,KACAy0B,EAAA3D,OAAA2D,EAAA1D,SACAvJ,EAAAoJ,OAAA/M,MAAA4Q,EAAA5Q,OACA2D,EAAAoJ,OAAAS,OAAAA,EAAA6G,EAAA5G,UACAof,EAAAlpB,EAAAoJ,OAAAgB,iBAAAnV,OACA+K,EAAAoJ,OAAA/R,KAAA4V,EAAA5V,MACA2I,EAAAoJ,OAAAiB,OAAAA,EAAAE,GACAvK,EAAAoJ,OAAAqB,OAAAiG,EAAAhG,OACA1K,EAAAoJ,OAAA5nB,SACA4e,MAAAoJ,EAAA,QAAA5pC,EAAAwgC,MACA8oB,EAAA,UAAAtpD,EAAAwgC,MACA,QAAAxgC,EAAAwgC,MACAoL,OAAA,SAAApY,EAAAskC,GAEA,MADA5F,GAAAtiB,QAAA,OAAAkoB,IACA,OAnDA,GAYAntB,GAZAn7B,EAAArQ,KAAAqQ,KAAAqxB,GACAwM,EAAA79B,EAAA69B,SACA6kB,EAAA/yD,KACAmqD,EAAA62E,QAAA3wH,EAAAoJ,MACAgxB,EAAAp6B,EAAA69B,MAAA,QAAAA,EAAA+yF,WAAA/yF,EAAA07F,QACA/oI,EAAAmzD,EAAAC,SAAA5jD,EAAAgmD,UACA1kB,EAAA3uC,EAAA,UAAAsuC,MAAA,eACA,eAAA,SAAA,QACA,aAEAxG,EAAA6G,EAAAs4F,aACA3+F,EAAA4C,EAAA5C,MAoDA,OAjDApV,UAAAgY,EAAA3D,SACA2D,EAAA3D,QAAA,GAEAe,IAEAA,EADAqG,EAAA5G,UACA,QAAA,UAEA,MAAA,QAAA,UAGAS,EAAAmG,EAAA5G,UAAAmD,EAAAnD,UACA4G,EAAA5G,YAAAmD,EAAAnD,UAAAmD,EAAAoE,MAEAvrB,EAAAA,MA6BAka,EAAAkJ,YAAA7M,MAAAvW,EAAAuW,MAAAvW,EAAAuW,MACAmN,EAAA,aAAAyD,EAAA4yF,OAAAtsG,UAAA,EAAA,GACA21B,EAAA,mBACA,QAAAtpD,EAAAwgC,MAAA,MACAz8B,KAAAolI,IAGAhqI,MAOAkqI,QAAA,WACA,GAAAnjH,GAAA/mB,KAAAqQ,KAAAqxB,GACArxB,EAAA0W,EAAAw6E,WACA1gG,EAAAmzD,EAAAnzD,KAAAkmB,EAAAsF,SACAhf,EAAArN,IAEA,OAAA+mB,GAAA6iF,QAAA7iF,EAAAwhF,kBACAn1E,MAAA,aACApzB,OAGAgD,EAAAsqB,MAAAjB,IAAAtF,EAAAsF,IACApc,SAAA,OACAyc,YAAA7rB,EAAA6rB,aAAA,aACA7rB,KAAA,MACAwP,KAAAA,EACAie,QAAA,SAAAyf,GACAA,EAAA39B,MACA6jB,EAAAb,MAAAg2G,EAAA,iBAAAr7F,KAEAhnB,EAAAwhF,gBAAAxhF,EAAAwiH,YACAxiH,EAAA7d,UAAA6d,EAAAw6E,WACAx6E,EAAAyiH,gBAAA,OACAziH,EAAA0iF,WAAA,GACAx1E,EAAAqB,UAAA3sB,KAAA,QACA4sB,MAAAloB,MAIA+C,MAAA,SAAA2xB,GACA,GAAA,KAAAA,EAAAvU,OAAA,CACA,GAAAnB,GAAAtF,EAAAsF,UACAtF,GAAA,WACAA,GAAA,cACAA,GAAA,IACA1Z,EAAAojC,QAAA,UACAnT,MAAA,0CAAAjR,EACA,8BAGA4H,GAAA6P,UAAA/B,MAKA/hC,OAOAmqI,oBAAA,SAAApjH,GAKA,QAAAniB,KAKA,QAAAixD,GAAAx0B,EAAAnV,EAAA3Z,EAAAW,GACA,GAAAi2B,IAAAtG,KAAA,gBACAie,IACA50B,IAAA40B,EAAAv6C,KAAA,UACA2M,GAAA4tC,EAAAv6C,KAAA,YACAu6C,QACA3X,EAAAvf,MAAAk3B,EAAAlyC,KAAA,KACA,IAAAvB,GACArK,EAAAgzB,GAAA6X,GAAA1E,EAAAnmC,EAAAgzB,GAAAv2B,GAAAgZ,KAAA,IAAAlG,EAAAm6B,cAAA,OAAArL,GACA,OAAAh0B,GAWA,QAAA+8H,GAAA73H,EAAAo6B,GACAi0F,KAAA98G,OAAA9gB,EAAAgzB,GAAAyM,KAAA7Y,MAAA,iBAAArX,EAAA,IAAAo6B,EAAAp6B,GAAAA,KACAlF,EAAA2G,KAAA,WAAAzB,EAAA,MAAAmR,GAAA,cAAA,SAAA2Q,GACAhnB,EAAAojC,QAAAl+B,KA3BA,GAAAlF,GAAArK,EAAAhD,KAEAqN,GAAAwc,SAAA,iBAcA+2G,KAAA59H,EAAAA,EAAAgzB,GAAAyM,KAAA7Y,MAAA,iBACAvc,EAAAyW,OAAA9gB,EAAAgzB,GAAAqX,IACAzjB,MAAA,gBACAisC,EAAA,YAAA,EAAA,kBACAA,EAAA,eAAA,EAAA,sBACAA,EAAA,aAAA,EAAA,qBACAxoD,EAAAyW,OAAA88G,MASAwJ,EAAA,iBAAA,aACAA,EAAA,qBAAA,IACAA,EAAA,kBAAA,IAEA/8H,EAAAgD,KAAA,gBAAA0W,GAEA1Z,EAAAojC,QAAA,kBAEApjC,EAAAyW,OAAAumH,EACArnI,EAAAgzB,GAAAyM,KAAA7Y,MAAA,cACA5mB,EAAAgzB,GAAA/c,QAAA4D,KAAA,QACA+M,MAAA,mBACA,SACA5mB,EAAAgzB,GAAA/c,QAAA4D,KAAA,mBACA+M,MAAA,mBACA,sBACA5mB,EAAAgzB,GAAA/c,QAAA4D,KAAA,uBACA+M,MAAA,mBACA,6BACA5mB,EAAAgzB,GAAA/c,QAAA4D,KAAA,SACA+M,MAAA,iBACAuX,eAAA,SACA,YAGAn+B,EAAAqnI,GAAA3mH,GAAA,QAAA,SAAA,SAAA2Q,GAIA,MAHAhnB,GAAAojC,QAAA,qBAAAztC,EAAAqxB,EAAAlc,QAAApB,KAAA,SACA/T,EAAAqxB,EAAAlc,QAAA4C,QAAA,UAAAkZ,MAAA,QACAI,EAAAjU,kBACA,IAjEA,GAAAiqH,EAyEA,OAvEAtjH,GAAA0pB,QAAAzwC,KAmEAihC,EAAAkJ,YAAA7M,MAAA,gBACA14B,KAAAA,IAGA5E,MAGAsqI,iBAAA,WACA,GAAAj6H,GAAArN,EAAAhD,MAAAqQ,KAAA,gBACArN,GAAAhD,MAAAgU,KAAA,mBACA5H,QACA0X,OAAA+kH,EAAAx4H,EAAAk6H,KAAAziC,GAAAz3F,QAGAm6H,qBAAA,WACA,GAAAn6H,GAAArN,EAAAhD,MAAAqQ,KAAA,gBACArN,GAAAhD,MAAAgU,KAAA,uBACA5H,QACA0X,OAAA+kH,EAAAx4H,EAAAk6H,KAAA5M,OAAAttH,QAGAo6H,kBAAA,WACA,GAAAp6H,GAAArN,EAAAhD,MAAAqQ,KAAA,iBACA8vB,EAAAn9B,EAAAhD,MAAAgU,KAAA,mBAEAmsB,GAAA/zB,QACA,GAAAiE,EAAAq6H,aACAvqG,EAAArc,OAAAglH,EAAAz4H,EAAA8zD,SAEAhkC,EAAAx3B,KAAA,uBAIAgiI,mBAAA,SAAAl+F,GACA,GAAA1lB,GAAA/jB,EAAAhD,MAAAqQ,KAAA,iBACAA,EAAArN,EAAA+jB,EAAA0pB,SAAApgC,KAAAqxB,EAEA,IAAA,SAAA+K,EACAp8B,EAAAmqF,SAAAzzE,EAAAo9C,QACA9zD,EAAA69B,KAAA4yF,OAAA/5G,EAAAwjH,KAAA5M,OAAAhkG,GAAAmnG,WACA,IAAA,oBAAAr0F,EACAzpC,EAAA+jB,EAAA0pB,SAAAA,QAAA,cACA,IAAA,wBAAAhE,EAAA,CACA,GAAAp8B,GAAArN,EAAA+jB,EAAA0pB,SAAApgC,KAAAqxB,EACArxB,GAAA69B,KAAA4yF,OAAA/5G,EAAAwjH,KAAA5M,OAAAhkG,GAAAmnG,SASAtqE,SAAA,WACA,GAAAzvC,GAAA/mB,KAAAqQ,KAAAqxB,GACA7gC,EAAAmzD,EAAAC,SAAAltC,EAAAsvC,UACAhmD,EAAA0W,EAAAw6E,WACA9oF,EAAA,iCACA4S,mBAAAhb,GAEA5Q,EAAAuD,EAAAgzB,GAAAv2B,GAAAgZ,KAAAA,EACA+9C,SAAAzvC,EAAAtN,MAAA,SAAA5Y,EAAAoP,UAMA,OAJAjQ,MAAA8jB,OAAArkB,GACAA,EAAAuhB,QACAhe,EAAAvD,GAAAmN,SAEA5M,MAYA2yF,QAAA,SAAA5rE,GACA,GAAA5G,KA2CA,OAzCA4G,GAAAA,MAEA/mB,KAAA6B,KAAA,WAOA,QAAA+oI,GAAA/tH,GACAxM,EAAA69B,KAAArxB,KACAumB,EAAAvmB,GAAAxM,EAAA69B,KAAArxB,IARA,GAAAxM,GAAArN,EAAAhD,MAAAqQ,KAAAqxB,GACA0B,IAqBA,IAnBAA,EAAAviC,KAAAwP,EAAAxP,KACAwP,EAAAgc,MAAA+W,EAAA/W,IAAAhc,EAAAgc,KACAhc,EAAA69B,OAMA08F,EAAA,QACAA,EAAA,QACAA,EAAA,YACAA,EAAA,UACAA,EAAA,yBACAA,EAAA,WAGA,GAAA5nI,EAAAhD,MAAA2a,QAAA,oBAAAha,SACAyiC,EAAAlX,QAAA,IAEAnF,EAAAlmB,MACAkmB,EAAAlK,MACAkK,EAAAlK,KAAA3M,MAAA,KAAAoE,OAAAyS,EAAAlmB,KAAA,CACA,GAAAkmB,EAAA1W,KAAA,CACA,GAAAiD,GAAAjD,EAAAkxF,UAEAn+D,GAAAynG,SAAAv3H,GAAAjD,EAAAnH,WACA,GAAA6d,EAAA1W,MACA+yB,EAAAynG,UAAA,eAAA9jH,EAAA1W,QACA+yB,EAAA/yB,KAAAiD,GAGA6M,EAAA5Z,KAAA68B,MAIAjjB,GAOAre,MAAA,SAAA63B,GACA,IAAA,GAAAz1B,GAAA,EAAAA,EAAAlE,KAAAW,OAAAuD,IAAA,CACA4jG,GAAA9kG,EAAAhD,KAAAkE,GACA,IAAAmM,GAAAy3F,GAAAz3F,KAAAqxB,EAEA,IAAA/H,EAAAlgB,MAAAkgB,EAAAlgB,MAAApJ,EAAAoJ,KACA,MAAAquF,GACA,IAAAnuE,EAAAtN,KAAAsN,EAAAtN,KAAAhc,EAAAgc,IACA,MAAAy7E,MASAgjC,OAAA,SAAAl5F,GACA,GAAAzR,GAAAngC,KAAA2a,QAAA,YACA,IAAA,GAAAwlB,EAAAx/B,OAAA,CACA,GAAAqzD,GAAA7zB,EAAAxlB,QAAA,UAOA,OANAq5C,GAAAA,OAAA,OAAA7zB,EAAAppB,KAAA,OACA66B,GACA3d,EAAAqB,UAAA3sB,KAAAipC,EACArc,MAAAv1B,OAGAA,OAQA41C,KAAA,WAgBA,QAAA4hB,KACA,SAAAnnD,EAAAu+B,SACAv+B,EAAA0iD,OAAAA,EACA/yD,KAAA8uC,MAAAz+B,IACA,WAAAA,EAAAu+B,QACAo6F,EAAAhpI,KAAAkuC,GACA79B,EAAAu+B,SACA5uC,KAAA8jB,OAAA9gB,EAAAgzB,GAAA/1B,EAAA,6CACA,OACA+C,EAAAgzB,GAAAt2B,EAAA,YACA,+CAzBA,GAGA49B,GAHAjtB,EAAArQ,KAAAqQ,KAAAqxB,GACAwM,EAAA79B,EAAA69B,SACA6kB,EAAA/yD,IAgCA,OA5BAs9B,GADA,SAAAjtB,EAAAu+B,QACA5rC,IAAA8rC,MAAA,QAAAZ,GACA,WAAA79B,EAAAu+B,QACA,kBAAAg6F,EAAA16F,EAAAgjF,MACA,YAAA7gH,EAAAu+B,QACA,eAAAv+B,EAAAgc,IAEA;AAkBA4U,EAAAkJ,YAAA7M,MAAAA,EACA14B,KAAA4yD,IAGAx3D,MAMAy+D,KAAA,WAOA,QAAAjH,KACA,GAAAiH,GAAAz7D,EAAAgzB,GAAAyM,MACAg2B,EAAApoD,EAAAkxF,UAIA,IAFAvhG,KAAA8jB,OAAA26C,GAEAhG,GAAApoD,EAAAnH,UACAlG,EAAAy7D,GAAA36C,OAAA9gB,EAAAgzB,GAAA/1B,EAAA,mBACA,CACA,GAAAgqB,GACAxH,EAAAzf,EAAAgzB,GAAAyM,KAAA7Y,MAAA,iBACAiZ,KAAA,SAEA7/B,EAAAgzB,GAAA/c,QAAA4D,KAAA,QACAskB,eAAA,QACAvX,MAAA,mBAEA,SACAK,EACAjnB,EAAAgzB,GAAA/c,QAAA4D,KAAA,SACA+M,MAAA,iBACAuX,eAAA,SAEA,kBACAn+B,GAAAy7D,GAAAA,MAAAzE,KAAA3pD,EAAAnH,UACA5I,KAAAm4D,EACAiwE,SAAAA,EAAAr4H,EAAAm5H,mBAEAxpI,KAAA8jB,OAAA9gB,EAAAgzB,GAAAyM,KAAA7Y,MAAA,uBAAAnH,IACAzf,EAAAinB,GAAAvG,GAAA,QAAA,SAAA2Q,GACArxB,EAAA,yBAAA8d,QAAA,YAEA9gB,KAAA+a,QAAA,oBAAA8O,SAAA,eAtCA,GAAAxZ,GAAArQ,KAAAqQ,KAAAqxB,GACAgnG,GAAA9nH,KAAA,cACAmqH,IAAA,WACAt0E,KAAA,aA2CA,OAJAx1B,GAAAkJ,YAAA7M,MAAA,iBAAAorG,EAAAr4H,EAAAm5H,iBACA5kI,KAAA4yD,IAGAx3D,MAOA+yF,aAAA,WACA,GAAA/yF,KAAAgqB,SAAA,iBAAA,CACA,GAAA+wD,GAAA/6E,KAAAk1B,aAAA,eACA,OAAA6lD,GAAAA,EAAA,GAAAiwD,WAAA,KACA,MAAAhrI,MAAAgqB,SAAA,YACAhqB,KAAAirI,SAAA,oBAEAtuH,SAAA4zB,IAAAwqC,IAQAmwD,kBAAA,SAAAnwD,GACA,QAAAowD,GAAAx0B,GAEA,IAAA,GADAt1E,GAAA,GACA9/B,EAAA,EAAAA,EAAAo1G,EAAAh2G,OAAAY,IAAA,CACA,GAAAgH,GAAAouG,EAAAp1G,EACA,KAAA8/B,IACAA,GAAA,KACAA,GAAA,MAAA94B,EAAA6rB,KAAA4+B,KAAA,GACAzqD,EAAAoxB,GAAAq5B,MAAAzqD,EAAA6rB,KAAA4+B,OACA3xB,GAAA,KAAA94B,EAAAoxB,GAAAq5B,KAAA,IAEA,MAAA3xB,GAGA,GAAA05C,EAAA,GAAA9lD,KAAA,CAGA,IAAA,GAFAoM,GAAA,GAEA9/B,EAAA,EAAAA,EAAAw5E,EAAAp6E,OAAAY,IAAA,CACA,GAAA6pI,GAAArwD,EAAAx5E,EACA,KAAA8/B,IACAA,GAAA,KACAA,GAAA+pG,EAAAn2G,KAAAk2G,EAAAC,EAAAJ,YAEA,MAAA3pG,GAEA,MAAA8pG,GAAApwD,IAOAswD,iBAAA,SAAAtwD,GACA,MAAA/6E,MAAAgqB,SAAA,iBACAhqB,KAAAk1B,aAAA,mBAAA6lD,GACA/6E,KAAAgqB,SAAA,YACAhqB,KAAAirI,SAAA,mBAAAlwD,OAEAp+D,SAAA4zB,IAAAwqC,IAWA3oC,MAAA,SAAAvxC,EAAAwP,GAGA,GAFAA,EAAAA,GAAArQ,KAAAqQ,KAAAqxB,IAEA7gC,GAAAA,GAAAwP,EAAAu+B,QAAA,CACA,GAAAV,GAAA79B,EAAA69B,QAEA,IAAA,SAAA79B,EAAAu+B,QACA,MAAA,SAAAV,EAAArxB,IACA,IAAA,WAAAxM,EAAAu+B,QACA,MAAA,WAAAV,EAAAgjF,IACA,IAAA,YAAA7gH,EAAAu+B,QACA,MAAA,OAAAv+B,EAAAgc,MAQAsjB,KAAA,SAAAlD,GACA,GAAAp8B,GAAArQ,KAAAqQ,KAAAqxB,GACA0Q,EAAApyC,KAAAywC,QAAA,QAAA,QAEA,IAAA2B,EAAA,CACA,GAAAzC,GAAA3vC,KAAA2a,QAAA,aAAA3G,KAAA,YAEA,IAAA27B,EAAAhvC,OAAA,EACA,UAAA8rC,EACAkD,EAAAwC,SAAA,QAAAC,EAAA,SAEApD,EAAAE,MAAAS,OACA,IAAA,UAAAlD,EAAA,CACA,GAAA6+F,GAAA,SAAA7+F,EAAA,GAAA,EACAkD,GAAA3sC,EAAAA,EAAAgzB,GAAAyM,KAAA7Y,MAAA,cAEA+lB,EAAAwC,UAAAC,MAAAA,IACApyC,KAAA01C,KAAA,QAAA/F,EAAA,QAAA27F,EAAA,KACAzhH,SAAA,uBAEA,UAAA4iB,EACAzsC,KAAAywC,QAAA,cACApgC,EAAAu+B,QAIA3a,EAAAb,MAAA,gJAHAa,EAAAb,MAAA,6FASA,OAAApzB,OAMAurI,WAAA,WACAvrI,KAAA2a,QAAA,mBAAA3G,KAAA,aAAAm+B,SAAA,UAQAq5F,aAAA,SAAAvhG,GACA,MAAAA,GAAAoI,WAAA,GAAApI,EAAA4qB,OAGA70D,KAAA6B,KAAA,WACA,GAAAwL,GAAArK,EAAAhD,KAEA,IAAAiqC,EAAAmI,OAAA/kC,EAAAojC,QAAA,SAAA,CACA,GAAApgC,GAAAhD,EAAAgD,KAAAqxB,EAEArxB,GAAA6lD,OAAA7lD,EAAA6lD,MAAApiB,MACAzjC,EAAA6lD,MAAApiB,QAEAzjC,EAAA6lD,OAAApiB,MAAA,GAEAzmC,EAAAojC,QAAA,uBAbAzwC,MAsBA0rC,OAAA,WACA,GAAA0G,GAAApyC,KAAAywC,QAAA,QAAA,QAEA2B,GACAne,EAAA8O,aACAzF,MAAA,sBACAjR,IAAA2G,EAAA2C,KAAAC,UAAA61G,oBACAp7H,MAAA+hC,MAAAA,KAGAne,EAAAb,MAAA,iCAWAs4G,OAAA,SAAAC,EAAAt3G,GACA,GAAAhkB,GAAArQ,KAAAqQ,KAAAqxB,EAEA,IAAArxB,IAGAA,EAAA69B,MACAJ,EAAAO,WAAAO,QAAA,QACAr8B,GAAAlC,EAAA69B,KAAArxB,OAIAxM,EAAAnH,WAAAmH,EAAAkxF,YAAA,CACA,GAAA,gBAAAoqC,EAAA,CACA,GAAA7uH,GAAA,kFAOA,OAJAuX,GAAAA,GAAAt0B,OAAAqH,MACAitB,IACAA,EAAAnT,YAAApE,GAEAA,EAEA,GAAAA,GAAA,8DAEA,aAAA6uH,EAAA,6BACA,YAAAA,EAAA,kBAAA,GAGA,OAAAC,SAAA9uH,KAUAkc,MAAA,aAMAywE,UAAA,SAAA90C,GACA,GAAAtkD,GAAArQ,KAAAqQ,KAAAqxB,EAEArxB,GAAAg5H,SAAA10E,GAWAk3E,YAAA,SAAAv/H,GACA,GAAAw/H,KAEA9rI,MAAA6B,KAAA,WACA,GAAAwO,GAAArN,EAAAhD,MAAAqQ,KAAAqxB,EAEA,IAAA,SAAArxB,EAAAu+B,SAAAv+B,EAAA69B,MAAA79B,EAAA69B,KAAArxB,KAAA,CACA,GAAA1M,IAAAsJ,KAAApJ,EAAA69B,KAAArxB,KAEAxM,GAAAg5H,WAAAl5H,EAAA06H,UAAA,GACA7nI,EAAAhD,MAAAua,GAAA,cAAApK,EAAA8e,SAAA,GACA68G,EAAAvlI,KAAA4J,OAIA7D,GAAAw/H,EAAAnrI,OAAA,IACAqC,EAAA,SAAA8d,QAAA,QACAjgB,KAAA,iBACAyyD,MAAAw4E,KA4CA9oI,GAAA2N,GAAA8/B,QAAA,SAAA1iB,GACA,MAAA4T,GAAA5T,GACA4T,EAAA5T,GACAvrB,MAAAxC,KAAA+M,MAAAnC,UAAAnI,MAAApB,KAAA6F,UAAA,IACA,gBAAA6mB,IAAAA,MAGA/qB,GAAAoN,MAAA,UAAA2d,EAAA,6BAAA2T,GAFAC,EAAAC,MAAAp/B,MAAAxC,KAAAkH,aAKAorB,UCzoCA,WACA,YAwDA,SAAAy5G,GAAAC,GACAA,GACAhG,EAAA,GAAAA,EAAA,IAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GACAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GACAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,IAAAA,EAAA,IACAA,EAAA,IAAAA,EAAA,IAAAA,EAAA,IAAAA,EAAA,IAAA,EACAhmI,KAAAgmI,OAAAA,GAEAhmI,KAAAgmI,QAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAGAhmI,KAAAisI,GAAA,WACAjsI,KAAAyjC,GAAA,WACAzjC,KAAA0iC,GAAA,WACA1iC,KAAAksI,GAAA,UACAlsI,KAAAmsI,GAAA,WAEAnsI,KAAA4lI,MAAA5lI,KAAAuE,MAAAvE,KAAAy/H,MAAA,EACAz/H,KAAAosI,UAAApsI,KAAAqsI,QAAA,EACArsI,KAAAoR,OAAA,EAzEA,GAAAkH,GAAA,gBAAAvY,QAAAA,UACAusI,GAAAh0H,EAAAi0H,oBAAA,gBAAA3sG,UAAAA,QAAA4sG,UAAA5sG,QAAA4sG,SAAAxzF,IACAszF,KACAh0H,EAAAuG,OAEA,IAAA4tH,IAAAn0H,EAAAo0H,sBAAA,gBAAA/sI,SAAAA,OAAAC,QACA+sI,EAAA,kBAAAx6G,SAAAA,OAAAC,IACAw6G,EAAA,mBAAA18H,MAAA,IACA28H,IAAA,WAAA,QAAA,MAAA,KACAC,GAAA,GAAA,GAAA,EAAA,GACAC,GAAA,MAAA,QAAA,SAAA,eAEA/G,KAEAgH,EAAA,SAAAC,GACA,MAAA,UAAAnwH,GACA,MAAA,IAAAivH,IAAA,GAAA5hF,OAAArtC,GAAAmwH,OAIAC,EAAA,WACA,GAAAn/G,GAAAi/G,EAAA,MACAV,KACAv+G,EAAAo/G,EAAAp/G,IAEAA,EAAA8mC,OAAA,WACA,MAAA,IAAAk3E,IAEAh+G,EAAAo8B,OAAA,SAAArtC,GACA,MAAAiR,GAAA8mC,SAAA1K,OAAArtC,GAEA,KAAA,GAAAvb,GAAA,EAAAA,EAAAwrI,EAAApsI,SAAAY,EAAA,CACA,GAAAV,GAAAksI,EAAAxrI,EACAwsB,GAAAltB,GAAAmsI,EAAAnsI,GAEA,MAAAktB,IAGAo/G,EAAA,SAAAp/G,GACA,GAAAq/G,GAAApqG,QAAA,UACAqqG,EAAArqG,QAAA,UAAAqqG,OACAC,EAAA,SAAAxwH,GACA,GAAA,gBAAAA,GACA,MAAAswH,GAAAG,WAAA,QAAApjF,OAAArtC,EAAA,QAAA0wH,OAAA,MACA,IAAA1wH,EAAA9L,cAAAy8H,YACA3wH,EAAA,GAAA4wH,YAAA5wH,OACA,IAAAoZ,SAAApZ,EAAAnc,OACA,MAAAotB,GAAAjR,EAEA,OAAAswH,GAAAG,WAAA,QAAApjF,OAAA,GAAAkjF,GAAAvwH,IAAA0wH,OAAA,OAEA,OAAAF,GAyBAvB,GAAAnhI,UAAAu/C,OAAA,SAAArtC,GACA,IAAA9c,KAAAosI,UAAA,CAGA,GAAAuB,GAAA,gBAAA,EACAA,IAAA7wH,EAAA9L,cAAAsH,EAAAm1H,cACA3wH,EAAA,GAAA4wH,YAAA5wH,GAIA,KAFA,GAAA+sB,GAAAtoC,EAAAqZ,EAAA,EAAAja,EAAAmc,EAAAnc,QAAA,EAAAqlI,EAAAhmI,KAAAgmI,OAEAprH,EAAAja,GAAA,CAUA,GATAX,KAAAqsI,SACArsI,KAAAqsI,QAAA,EACArG,EAAA,GAAAhmI,KAAA4lI,MACAI,EAAA,IAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GACAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GACAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,IAAAA,EAAA,IACAA,EAAA,IAAAA,EAAA,IAAAA,EAAA,IAAAA,EAAA,IAAA,GAGA2H,EACA,IAAApsI,EAAAvB,KAAAuE,MAAAqW,EAAAja,GAAAY,EAAA,KAAAqZ,EACAorH,EAAAzkI,GAAA,IAAAub,EAAAlC,IAAAkyH,EAAA,EAAAvrI,SAGA,KAAAA,EAAAvB,KAAAuE,MAAAqW,EAAAja,GAAAY,EAAA,KAAAqZ,EACAivB,EAAA/sB,EAAArH,WAAAmF,GACAivB,EAAA,IACAm8F,EAAAzkI,GAAA,IAAAsoC,GAAAijG,EAAA,EAAAvrI,KACAsoC,EAAA,MACAm8F,EAAAzkI,GAAA,KAAA,IAAAsoC,GAAA,IAAAijG,EAAA,EAAAvrI,KACAykI,EAAAzkI,GAAA,KAAA,IAAA,GAAAsoC,IAAAijG,EAAA,EAAAvrI,MACAsoC,EAAA,OAAAA,GAAA,OACAm8F,EAAAzkI,GAAA,KAAA,IAAAsoC,GAAA,KAAAijG,EAAA,EAAAvrI,KACAykI,EAAAzkI,GAAA,KAAA,IAAAsoC,GAAA,EAAA,KAAAijG,EAAA,EAAAvrI,KACAykI,EAAAzkI,GAAA,KAAA,IAAA,GAAAsoC,IAAAijG,EAAA,EAAAvrI,OAEAsoC,EAAA,QAAA,KAAAA,IAAA,GAAA,KAAA/sB,EAAArH,aAAAmF,IACAorH,EAAAzkI,GAAA,KAAA,IAAAsoC,GAAA,KAAAijG,EAAA,EAAAvrI,KACAykI,EAAAzkI,GAAA,KAAA,IAAAsoC,GAAA,GAAA,KAAAijG,EAAA,EAAAvrI,KACAykI,EAAAzkI,GAAA,KAAA,IAAAsoC,GAAA,EAAA,KAAAijG,EAAA,EAAAvrI,KACAykI,EAAAzkI,GAAA,KAAA,IAAA,GAAAsoC,IAAAijG,EAAA,EAAAvrI,KAKAvB,MAAA4tI,cAAArsI,EACAvB,KAAAy/H,OAAAl+H,EAAAvB,KAAAuE,MACAhD,GAAA,IACAvB,KAAA4lI,MAAAI,EAAA,IACAhmI,KAAAuE,MAAAhD,EAAA,GACAvB,KAAAqY,OACArY,KAAAqsI,QAAA,GAEArsI,KAAAuE,MAAAhD,EAGA,MAAAvB,QAGA+rI,EAAAnhI,UAAAijI,SAAA,WACA,IAAA7tI,KAAAosI,UAAA,CAGApsI,KAAAosI,WAAA,CACA,IAAApG,GAAAhmI,KAAAgmI,OAAAzkI,EAAAvB,KAAA4tI,aACA5H,GAAA,IAAAhmI,KAAA4lI,MACAI,EAAAzkI,GAAA,IAAAsrI,EAAA,EAAAtrI,GACAvB,KAAA4lI,MAAAI,EAAA,IACAzkI,GAAA,KACAvB,KAAAqsI,QACArsI,KAAAqY,OAEA2tH,EAAA,GAAAhmI,KAAA4lI,MACAI,EAAA,IAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GACAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GACAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,IAAAA,EAAA,IACAA,EAAA,IAAAA,EAAA,IAAAA,EAAA,IAAAA,EAAA,IAAA,GAEAA,EAAA,IAAAhmI,KAAAy/H,OAAA,EACAz/H,KAAAqY,SAGA0zH,EAAAnhI,UAAAyN,KAAA,WACA,GACA1U,GAAAK,EAAA4M,EADAnR,EAAAO,KAAAisI,GAAAvsI,EAAAM,KAAAyjC,GAAAtjC,EAAAH,KAAA0iC,GAAAxiC,EAAAF,KAAAksI,GAAA/pI,EAAAnC,KAAAmsI,GACAnG,EAAAhmI,KAAAgmI,MAEA,KAAAhiI,EAAA,GAAAA,EAAA,KAAAA,EACA4M,EAAAo1H,EAAAhiI,EAAA,GAAAgiI,EAAAhiI,EAAA,GAAAgiI,EAAAhiI,EAAA,IAAAgiI,EAAAhiI,EAAA,IACAgiI,EAAAhiI,GAAA4M,GAAA,EAAAA,IAAA,EAGA,KAAA5M,EAAA,EAAAA,EAAA,GAAAA,GAAA,EACAL,EAAAjE,EAAAS,GAAAT,EAAAQ,EACA0Q,EAAAnR,GAAA,EAAAA,IAAA,GACA0C,EAAAyO,EAAAjN,EAAAxB,EAAA,WAAA6jI,EAAAhiI,IAAA,EACAtE,EAAAA,GAAA,GAAAA,IAAA,EAEAiE,EAAAlE,EAAAC,GAAAD,EAAAU,EACAyQ,EAAAzO,GAAA,EAAAA,IAAA,GACAjC,EAAA0Q,EAAAjN,EAAAzD,EAAA,WAAA8lI,EAAAhiI,EAAA,IAAA,EACAvE,EAAAA,GAAA,GAAAA,IAAA,EAEAkE,EAAAxB,EAAA1C,GAAA0C,EAAAzC,EACAkR,EAAA1Q,GAAA,EAAAA,IAAA,GACAC,EAAAyQ,EAAAjN,EAAAxD,EAAA,WAAA6lI,EAAAhiI,EAAA,IAAA,EACA7B,EAAAA,GAAA,GAAAA,IAAA,EAEAwB,EAAAzD,EAAAiC,GAAAjC,EAAAT,EACAmR,EAAAzQ,GAAA,EAAAA,IAAA,GACAT,EAAAkR,EAAAjN,EAAAjE,EAAA,WAAAsmI,EAAAhiI,EAAA,IAAA,EACA9D,EAAAA,GAAA,GAAAA,IAAA,EAEAyD,EAAAxD,EAAAD,GAAAC,EAAAgC,EACAyO,EAAAlR,GAAA,EAAAA,IAAA,GACAD,EAAAmR,EAAAjN,EAAAlE,EAAA,WAAAumI,EAAAhiI,EAAA,IAAA,EACA7D,EAAAA,GAAA,GAAAA,IAAA,CAGA,MAAA6D,EAAA,GAAAA,GAAA,EACAL,EAAAjE,EAAAS,EAAAD,EACA0Q,EAAAnR,GAAA,EAAAA,IAAA,GACA0C,EAAAyO,EAAAjN,EAAAxB,EAAA,WAAA6jI,EAAAhiI,IAAA,EACAtE,EAAAA,GAAA,GAAAA,IAAA,EAEAiE,EAAAlE,EAAAC,EAAAS,EACAyQ,EAAAzO,GAAA,EAAAA,IAAA,GACAjC,EAAA0Q,EAAAjN,EAAAzD,EAAA,WAAA8lI,EAAAhiI,EAAA,IAAA,EACAvE,EAAAA,GAAA,GAAAA,IAAA,EAEAkE,EAAAxB,EAAA1C,EAAAC,EACAkR,EAAA1Q,GAAA,EAAAA,IAAA,GACAC,EAAAyQ,EAAAjN,EAAAxD,EAAA,WAAA6lI,EAAAhiI,EAAA,IAAA,EACA7B,EAAAA,GAAA,GAAAA,IAAA,EAEAwB,EAAAzD,EAAAiC,EAAA1C,EACAmR,EAAAzQ,GAAA,EAAAA,IAAA,GACAT,EAAAkR,EAAAjN,EAAAjE,EAAA,WAAAsmI,EAAAhiI,EAAA,IAAA,EACA9D,EAAAA,GAAA,GAAAA,IAAA,EAEAyD,EAAAxD,EAAAD,EAAAiC,EACAyO,EAAAlR,GAAA,EAAAA,IAAA,GACAD,EAAAmR,EAAAjN,EAAAlE,EAAA,WAAAumI,EAAAhiI,EAAA,IAAA,EACA7D,EAAAA,GAAA,GAAAA,IAAA,CAGA,MAAA6D,EAAA,GAAAA,GAAA,EACAL,EAAAjE,EAAAS,EAAAT,EAAAQ,EAAAC,EAAAD,EACA0Q,EAAAnR,GAAA,EAAAA,IAAA,GACA0C,EAAAyO,EAAAjN,EAAAxB,EAAA,WAAA6jI,EAAAhiI,IAAA,EACAtE,EAAAA,GAAA,GAAAA,IAAA,EAEAiE,EAAAlE,EAAAC,EAAAD,EAAAU,EAAAT,EAAAS,EACAyQ,EAAAzO,GAAA,EAAAA,IAAA,GACAjC,EAAA0Q,EAAAjN,EAAAzD,EAAA,WAAA8lI,EAAAhiI,EAAA,IAAA,EACAvE,EAAAA,GAAA,GAAAA,IAAA,EAEAkE,EAAAxB,EAAA1C,EAAA0C,EAAAzC,EAAAD,EAAAC,EACAkR,EAAA1Q,GAAA,EAAAA,IAAA,GACAC,EAAAyQ,EAAAjN,EAAAxD,EAAA,WAAA6lI,EAAAhiI,EAAA,IAAA,EACA7B,EAAAA,GAAA,GAAAA,IAAA,EAEAwB,EAAAzD,EAAAiC,EAAAjC,EAAAT,EAAA0C,EAAA1C,EACAmR,EAAAzQ,GAAA,EAAAA,IAAA,GACAT,EAAAkR,EAAAjN,EAAAjE,EAAA,WAAAsmI,EAAAhiI,EAAA,IAAA,EACA9D,EAAAA,GAAA,GAAAA,IAAA,EAEAyD,EAAAxD,EAAAD,EAAAC,EAAAgC,EAAAjC,EAAAiC,EACAyO,EAAAlR,GAAA,EAAAA,IAAA,GACAD,EAAAmR,EAAAjN,EAAAlE,EAAA,WAAAumI,EAAAhiI,EAAA,IAAA,EACA7D,EAAAA,GAAA,GAAAA,IAAA,CAGA,MAAA6D,EAAA,GAAAA,GAAA,EACAL,EAAAjE,EAAAS,EAAAD,EACA0Q,EAAAnR,GAAA,EAAAA,IAAA,GACA0C,EAAAyO,EAAAjN,EAAAxB,EAAA,UAAA6jI,EAAAhiI,IAAA,EACAtE,EAAAA,GAAA,GAAAA,IAAA,EAEAiE,EAAAlE,EAAAC,EAAAS,EACAyQ,EAAAzO,GAAA,EAAAA,IAAA,GACAjC,EAAA0Q,EAAAjN,EAAAzD,EAAA,UAAA8lI,EAAAhiI,EAAA,IAAA,EACAvE,EAAAA,GAAA,GAAAA,IAAA,EAEAkE,EAAAxB,EAAA1C,EAAAC,EACAkR,EAAA1Q,GAAA,EAAAA,IAAA,GACAC,EAAAyQ,EAAAjN,EAAAxD,EAAA,UAAA6lI,EAAAhiI,EAAA,IAAA,EACA7B,EAAAA,GAAA,GAAAA,IAAA,EAEAwB,EAAAzD,EAAAiC,EAAA1C,EACAmR,EAAAzQ,GAAA,EAAAA,IAAA,GACAT,EAAAkR,EAAAjN,EAAAjE,EAAA,UAAAsmI,EAAAhiI,EAAA,IAAA,EACA9D,EAAAA,GAAA,GAAAA,IAAA,EAEAyD,EAAAxD,EAAAD,EAAAiC,EACAyO,EAAAlR,GAAA,EAAAA,IAAA,GACAD,EAAAmR,EAAAjN,EAAAlE,EAAA,UAAAumI,EAAAhiI,EAAA,IAAA,EACA7D,EAAAA,GAAA,GAAAA,IAAA,CAGAH,MAAAisI,GAAAjsI,KAAAisI,GAAAxsI,GAAA,EACAO,KAAAyjC,GAAAzjC,KAAAyjC,GAAA/jC,GAAA,EACAM,KAAA0iC,GAAA1iC,KAAA0iC,GAAAviC,GAAA,EACAH,KAAAksI,GAAAlsI,KAAAksI,GAAAhsI,GAAA,EACAF,KAAAmsI,GAAAnsI,KAAAmsI,GAAAhqI,GAAA,GAGA4pI,EAAAnhI,UAAAkjI,IAAA,WACA9tI,KAAA6tI,UAEA,IAAA5B,GAAAjsI,KAAAisI,GAAAxoG,EAAAzjC,KAAAyjC,GAAAf,EAAA1iC,KAAA0iC,GAAAwpG,EAAAlsI,KAAAksI,GAAAC,EAAAnsI,KAAAmsI,EAEA,OAAAS,GAAAX,GAAA,GAAA,IAAAW,EAAAX,GAAA,GAAA,IACAW,EAAAX,GAAA,GAAA,IAAAW,EAAAX,GAAA,GAAA,IACAW,EAAAX,GAAA,GAAA,IAAAW,EAAAX,GAAA,EAAA,IACAW,EAAAX,GAAA,EAAA,IAAAW,EAAA,GAAAX,GACAW,EAAAnpG,GAAA,GAAA,IAAAmpG,EAAAnpG,GAAA,GAAA,IACAmpG,EAAAnpG,GAAA,GAAA,IAAAmpG,EAAAnpG,GAAA,GAAA,IACAmpG,EAAAnpG,GAAA,GAAA,IAAAmpG,EAAAnpG,GAAA,EAAA,IACAmpG,EAAAnpG,GAAA,EAAA,IAAAmpG,EAAA,GAAAnpG,GACAmpG,EAAAlqG,GAAA,GAAA,IAAAkqG,EAAAlqG,GAAA,GAAA,IACAkqG,EAAAlqG,GAAA,GAAA,IAAAkqG,EAAAlqG,GAAA,GAAA,IACAkqG,EAAAlqG,GAAA,GAAA,IAAAkqG,EAAAlqG,GAAA,EAAA,IACAkqG,EAAAlqG,GAAA,EAAA,IAAAkqG,EAAA,GAAAlqG,GACAkqG,EAAAV,GAAA,GAAA,IAAAU,EAAAV,GAAA,GAAA,IACAU,EAAAV,GAAA,GAAA,IAAAU,EAAAV,GAAA,GAAA,IACAU,EAAAV,GAAA,GAAA,IAAAU,EAAAV,GAAA,EAAA,IACAU,EAAAV,GAAA,EAAA,IAAAU,EAAA,GAAAV,GACAU,EAAAT,GAAA,GAAA,IAAAS,EAAAT,GAAA,GAAA,IACAS,EAAAT,GAAA,GAAA,IAAAS,EAAAT,GAAA,GAAA,IACAS,EAAAT,GAAA,GAAA,IAAAS,EAAAT,GAAA,EAAA,IACAS,EAAAT,GAAA,EAAA,IAAAS,EAAA,GAAAT,IAGAJ,EAAAnhI,UAAA6F,SAAAs7H,EAAAnhI,UAAAkjI,IAEA/B,EAAAnhI,UAAA4iI,OAAA,WACAxtI,KAAA6tI,UAEA,IAAA5B,GAAAjsI,KAAAisI,GAAAxoG,EAAAzjC,KAAAyjC,GAAAf,EAAA1iC,KAAA0iC,GAAAwpG,EAAAlsI,KAAAksI,GAAAC,EAAAnsI,KAAAmsI,EAEA,QACAF,GAAA,GAAA,IAAAA,GAAA,GAAA,IAAAA,GAAA,EAAA,IAAA,IAAAA,EACAxoG,GAAA,GAAA,IAAAA,GAAA,GAAA,IAAAA,GAAA,EAAA,IAAA,IAAAA,EACAf,GAAA,GAAA,IAAAA,GAAA,GAAA,IAAAA,GAAA,EAAA,IAAA,IAAAA,EACAwpG,GAAA,GAAA,IAAAA,GAAA,GAAA,IAAAA,GAAA,EAAA,IAAA,IAAAA,EACAC,GAAA,GAAA,IAAAA,GAAA,GAAA,IAAAA,GAAA,EAAA,IAAA,IAAAA,IAIAJ,EAAAnhI,UAAAwxC,MAAA2vF,EAAAnhI,UAAA4iI,OAEAzB,EAAAnhI,UAAAmjI,YAAA,WACA/tI,KAAA6tI,UAEA,IAAAG,GAAA,GAAAP,aAAA,IACAQ,EAAA,GAAAC,UAAAF,EAMA,OALAC,GAAAE,UAAA,EAAAnuI,KAAAisI,IACAgC,EAAAE,UAAA,EAAAnuI,KAAAyjC,IACAwqG,EAAAE,UAAA,EAAAnuI,KAAA0iC,IACAurG,EAAAE,UAAA,GAAAnuI,KAAAksI,IACA+B,EAAAE,UAAA,GAAAnuI,KAAAmsI,IACA6B,EAGA,IAAApuI,GAAAstI,GAEAT,GACA9sI,OAAAC,QAAAA,GAEA0Y,EAAA81H,KAAAxuI,EACA+sI,GACAx6G,OAAA,UAAA,WACA,MAAAvyB,SC1TAuyB,OAAA,YAAA,SAAA,SAAA,SAAA,OACA,cAAA,QAAA,SAAA,QACA,UAAA,SAAA,UAAA,QAEA,SAAAnvB,EAAAgwB,OAAAghC,OAAA/yB,KAAAxN,YAAAQ,MAAAqjC,OAAAt2B,OAspDA,QAAAw4F,aAAAzsF,EAAAN,EAAAnP,EAAAj5B,EAAA60C,GACAA,EAAAA,GAAA,IACA,IAAArO,GAAA7nC,EAAAgzB,GAAAv2B,GAAAgZ,KAAA,IACAmR,MAAA,WAAAvlB,EAAA,QAAA60C,EAAA,WAAAzM,EACAnP,MAAAA,EAAA+wG,cAAA5hG,GACAzpC,EAAAgzB,GAAA4U,MAAAhhB,MAAA,uBAAAmjB,IAEA,OAAAlC,GAGA,QAAAyjG,aAAA7hG,EAAAnP,EAAA4b,GACAA,EAAAA,GAAA,IACA,IAAArO,GAAA7nC,EAAAgzB,GAAAv2B,GAAAgZ,KAAA,IACAmR,MAAA,iCAAAsvB,EAAA,WAAAzM,EACAnP,MAAAA,EAAA+wG,cAAA5hG,GACAzpC,EAAAgzB,GAAA4U,MAAAhhB,MAAA,eAEA,OAAAihB,GAGA,QAAA0jG,kBAAAlhI,EAAAo/B,EAAAM,GACA,GAAAnC,GAAAv9B,EAAA2G,KAAA,iBAAAy4B,EAAA,qBAEA7B,GAAA9gB,YAAA,SAAAvoB,EAAAgH,GACA,MAAAA,GAAAzG,MAAA,sBAAA8M,KAAA,OACAib,SAAA,aAAAkjB,GAGA,QAAAyhG,OACA,MAAAxrI,GAAAgzB,GAAA4U,MAAAhhB,MAAA,cAAA,KAOA,QAAA6kH,UAAA1nH,GACA/mB,KAAA0uI,QAAA3nH,EAAAkO,KAzrDA,GAAA05G,YACAC,SAAAvtG,MAAA,UAAAiY,OAAA,KACAiE,OAAAlc,MAAA,QAAAiY,OAAA,KACAu1F,UAAAxtG,MAAA,WAAAiY,OAAA,MACA3wC,MAAA04B,MAAA,OAAAiY,OAAA,SAGA,SAAAt2C,GA0jBA,QAAA8rI,GAAAxlH,GACA,GAAA4C,GAAAlpB,EAAAsmB,GAAAtV,KAAA,kBAEA,OAAA,IAAAkY,EAAAvrB,OACAurB,EAAA9a,QAEA,KAGA,QAAA29H,GAAAvrG,GAMA,QAAAwrG,GAAAzmI,GAEA,GADA4gC,MAAA5gC,EAAAzG,MAAA,oBACAqnC,MAAA,CAEA,IAAA,GADA5kC,GAAAgE,EAAAzG,MAAA,aACAP,EAAA,EAAAA,EAAA4nC,MAAAxoC,OAAAY,IAAA,CACA,GAAAiE,GAAA2jC,MAAA5nC,GAAA2O,MAAA,QACAi5B,OAAA5nC,GAAAiE,EAAA,GAAAvE,cAAA,IAAAuE,EAAA,GAEA,MAAAjB,GAAA,GAAA4kC,MAAA73B,OAAA1C,KAAA,KAAA,IAEA,MAAArG,GAGA,GAAAI,GAAA3F,EAAAA,EAAAgzB,GAAAyM,IAAAe,IAAA76B,OACAsmI,IACA,OAAAtmI,GAAAtF,QAAA,yBAAA,SAAAuN,GACA,GAAAs+H,EACA,OAAA,UAAAt+H,GACAs+H,EAAAD,EAAA36H,MACA46H,EAAA,KAAAt+H,EAAA,KAAAA,IAEAs+H,EAAA,MAAAt+H,EAAA9O,MAAA,sBACAmtI,EAAA1oI,KAAA2oI,GACAA,EAAA,KAAAF,EAAAp+H,GAAA,KAAAA,KAEAnO,MAAA,GAjmBA,GAAAi/B,GAAA,WACAytG,EAAA,KAGAxtG,GAQAC,MAAA,SAAA7a,GAEA,MADAA,GAAAA,MACA/mB,KAAA6B,KAAA,WASA,QAAAutI,KACA,GAAAttG,GAAA9+B,EAAAgzB,GAAA4U,MAAAhhB,MAAA,uCACA6jB,EAAAxM,KAAA4L,QAAAK,eACApL,GACAqL,SAAA,gCACAC,QAAA,aACAI,OAAAngC,EACAigC,SACA+hG,cAAA,WAAArvI,KAAAirI,SAAA,WACAqE,YAAA,WAAAtvI,KAAAirI,SAAA,SACAsE,aAAA,WAAAvvI,KAAAirI,SAAA,UACAuE,eAAA,WAAAxvI,KAAAirI,SAAA,OACAwE,iBAAA,WAAAzvI,KAAAirI,SAAA,SACAyE,cAAA,WAAA1vI,KAAAirI,SAAA,gBACA0E,KAAA,mBACAC,kBAAA,WAAA5vI,KAAAirI,SAAA,cAAA,MAIA,OAAAx9F,GA6EA,QAAAoiG,GAAAhzH,GACA,GAAAvJ,GAAAgI,EAAAjL,KAAAwM,EACAvJ,KACAm9B,EAAA5zB,GAAAvJ,GA3GA,GAGAw8H,GAAAx0H,EAHAjO,EAAArK,EAAAhD,MACAywC,KACApgC,IAGAhD,GAAAwc,SAAA,YACAxc,EAAAwc,SAAA,wBAwBAxc,EAAAyW,OAAAgsH,EAAA9sI,EAAAgzB,GAAAyM,KACA7Y,MAAA,cACA4vG,YAAA,QAAA,SAAA,cAAA,WACAA,YAAA,OAAA,OAAA,YAAA,WACAA,YAAA,QAAA,QAAA,mBAAA,WACAgV,MACAhV,YAAA,aAAA,KAAA,eAAA,WACAA,YAAA,eAAA,OAAA,iBAAA,WACAgV,MACAhV,YAAA,OAAA,cAAA,oBAAA,WACAA,YAAA,aAAA,aAAA,cAAA,aAEAnsH,EAAAyW,OAAAsrH,KACA/hI,EAAAyW,OAAA9gB,EAAAgzB,GAAAyM,KAAA7Y,MAAA,UAAAlR,SAAA,MACA4C,EAAAtY,EAAAgzB,GAAAyM,KAAA7Y,MAAA,eACA5mB,EAAAgzB,GAAAyM,KAAA7Y,MAAA,gBAEA5mB,EAAA8sI,GAAApsH,GAAA,QAAA,QAAA,SAAA2Q,GACA,GAAAoY,GAAAzpC,EAAAqxB,EAAAlc,QAAAwC,QAAA,KAAAtK,KAAA,SAGA,OAFAhD,GAAA49H,SAAAx+F,GACApY,EAAAjU,kBACA,IAGApd,EAAAsY,GAAAoI,GAAA,QAAA,yBAAA,SAAA2Q,GACA,GAAA50B,GAAAuD,EAAAqxB,EAAAlc,QAAAwC,QAAA,KACAsa,EAAAx1B,EAAAkb,QAAA,YAEA8xB,EAAAhtC,EAAA4Q,KAAA,SAGA,OAFA4kB,GAAAE,OAAAsX,GACApY,EAAAjU,kBACA,IAGA/S,EAAAqd,QAAA,SAAA2J,GACA,GAAAY,GAAAjyB,EAAAqxB,EAAAlc,QAAAwC,QAAA,WACAsa,GAAAt0B,OAAA,EACA0M,EAAA49H,SAAA,SAAAh2G,GACAjyB,EAAAqxB,EAAAlc,QAAAwC,QAAA,YAAAha,OAAA,GACA0M,EAAA2G,KAAA,eAAAyG,SAAA,mBACA0a,OAAA,UAAA,KAGA9nB,EAAA0iI,SAAA,SAAA17G,GACArxB,EAAAqxB,EAAAlc,QAAAwC,QAAA,aAAA,IAAAtN,EAAA,IACAA,EAAA2G,KAAA,eAAAyG,SAAA,mBACA0a,OAAA,UAAA,KAOA9nB,EAAAqW,GAAA,eAAA,SAAA2Q,GACA,GAAAA,EAAAlc,QAAA9K,EAAA,GAAA,CACA,GAAA2iI,GAAA3iI,EAAA2G,KAAA,eACAyG,SAAA,oBACAw1H,EAAAD,EAAAtuI,OAAA,WACAwuI,EAAAD,EAAA,IAAAD,EAAA,EAEAE,IACAltI,EAAAktI,GAAAl8H,KAAA,kBAAAkhB,aAAA,eAEAb,EAAAhU,qBAIAhT,EAAAgD,KAAAqxB,EAAArxB,EAGA,IAAAiL,GAAAjO,EAAA2G,KAAA,iBACA,IAAA+S,EAAAzT,MACAjG,EAAA49H,SAAA,QAAAlkH,EAAAzT,WACA,IAAAgI,EAAA3a,OAAA,EAAA,CAQAkvI,EAAA,QACAA,EAAA,OACAA,EAAA,SACAA,EAAA,QACAA,EAAA,WACAA,EAAA,QAEA,IAAAz9F,GAAA/kC,EAAAojC,QAAA,QAAAva,OAAAua,GACA0/F,EAAA18G,YAAAO,OAAAoe,KAAAg+F,YAAA,EAEA/iI,GAAA49H,SAAA,QAAA3vH,EAAAjb,QACA+vI,WAAAD,EAAAC,aAEA90H,EAAA1O,aAEAS,GAAA49H,SAAA,cAGA59H,GAAA49H,SAAA,eAAAx6F,GACApjC,EAAAqW,GAAA,gBAAA,SAAA2Q,EAAAsgC,GACA,GAAA3xD,EAAAqxB,EAAAlc,QAAA6R,SAAA,iBAGA,MAFA3c,GAAA49H,SAAA,iBACA52G,EAAAhU,mBACA,IAGAhT,EAAAqW,GAAA,aAAA,SAAA2Q,EAAAnK,GACA,GAAAimH,GAAA18G,YAAAO,OAAAoe,MACA+9F,GAAAC,WAAAlmH,EACAuJ,YAAAK,OAAAse,EAAA+9F,QASAE,OAAA,SAAAp7G,GAQA,MAPAA,GAAAA,GAAA65G,EAAA9uI,MACAi1B,IACAj1B,KAAAirI,SAAA,SAAAh2G,EAAAxhB,QAAAwhB,EAAAva,QACAua,EAAAE,OAAA,SACAn1B,KAAAirI,SAAA,sBAEAjrI,KAAAirI,SAAA,iBACAjrI,MAGA8sE,KAAA,SAAA73C,GAEA,GADAA,EAAAA,GAAA65G,EAAA9uI,MACA,CACA,GAAAwjC,GAAAxgC,EAAAgzB,GAAAyM,KAAA7Y,MAAA,YACA5mB,GAAAwgC,GAAA1f,OAAA9gB,EAAAiyB,GAAAE,OAAA,YACAnyB,EAAAwgC,GAAAxvB,KAAA,YAAAoV,WAAA,QACA+lH,EAAAJ,EAAAvrG,KAIAu6D,MAAA,SAAA19F,GACA,GAAAipB,GAAAtpB,IAGA,IADAK,EAAAA,GAAA8uI,EACA,CACA,GAAA3rG,GAAAxgC,EAAAgzB,GAAAyM,KAEAz/B,GAAAwgC,GAAA76B,KAAAtI,EACA,IAAAiwI,GAAAttI,EAAAwgC,GAAAxvB,KAAA,WACA,IAAAs8H,EAAA3vI,OAAA,EAOA,MANAqC,GAAAwgC,GAAAxvB,KAAA,YAAAnS,KAAA,WACAynB,EAAA2hH,SAAA,UACA3gC,MAAA,QACAimC,QAAAvtI,EAAAhD,UAGAA,IAEAi0B,OAAAb,MAAA,4BAGAa,OAAAb,MAAA,uBAIA6jE,GAAA,SAAAhiE,GAMA,MALAA,GAAAA,GAAA65G,EAAA9uI,MACAi1B,IACAA,EAAAjR,aAAAiR,EAAAva,QACA1a,KAAAirI,SAAA,kBAEAjrI,MAGAwwI,KAAA,SAAAv7G,GAMA,MALAA,GAAAA,GAAA65G,EAAA9uI,MACAi1B,IACAA,EAAA1Q,YAAA0Q,EAAAxhB,QACAzT,KAAAirI,SAAA,kBAEAjrI,MAGAywI,YAAA,WACA,MAAAzwI,MAAAirI,SAAA,UAAA3gC,MAAA,WAGAomC,YAAA,WASA,MARA,IAAA1wI,KAAAirI,SAAA,UAAA3gC,MAAA,QAAAqmC,YAAA,KACA18G,MAAAb,MAAA,oLAOApzB,MAGAyN,IAAA,SAAAwnB,GACAA,EAAAA,GAAA65G,EAAA9uI,MACAi1B,GACAA,EAAAE,OAAA,QAGAi7G,WAAA,SAAAlmH,GAIA,GAHAgM,QAAAhM,IACAA,GAAAlqB,KAAAgqB,SAAA,eAEAE,EAAA,CACA,GAAA0mH,GAAA5wI,KAAA2a,QAAA,mBACAq+B,EAAA,GAAA43F,EAAAjwI,OAAAiwI,EAAA5wI,IACAgD,GAAA,cAAA0vB,MAAA,aAAAsmB,EAAAh5C,UAEAgD,GAAA,cAAA0vB,MAAA,iBAGA,OAAA1yB,OAGA6wI,SAAA,SAAA57G,EAAAp0B,GACAo0B,EAAAA,GAAA65G,EAAA9uI,MACAi1B,GACAA,EAAAE,OAAA,OAAAt0B,IAOAkyF,aAAA,WACA,MAAA/yF,MAAAirI,SAAA,mBACAj3H,KAAA,kBACAkhB,aAAA,iBAGAm2G,iBAAA,SAAAtwD,GACA,MAAA/6E,MAAAirI,SAAA,mBACAj3H,KAAA,kBACAkhB,aAAA,mBAAA6lD,IAQA+1D,cAAA,WACA,MAAA9wI,MAAA6B,KAAA,WACA,GAAAynB,GAAAtmB,EAAAhD,MACAg+C,EAAA10B,EAAAjZ,KAAA,WACAskD,EAAA3W,EAAAuqD,iBAAAj/E,EAAA2hH,SAAA,YAEA3hH,GAAA2hH,SAAA,YAAAt2E,MASA80C,UAAA,SAAA90C,GACA,MAAA30D,MAAA6B,KAAA,WACA,GAAAynB,GAAAtmB,EAAAhD,MACAqQ,EAAAiZ,EAAAjZ,KAAAqxB,EAEArxB,GAAA0gI,iBAAAp8E,IACAtkD,EAAA0gI,gBAAAp8E,EACArrC,EAAAxI,QAAA,gBAAA6zC,IAGAA,GACArrC,EAAAtV,KAAA,kBAAAkhB,aAAA,iBAcAhJ,OAAA,SAAA+I,EAAA1c,GAIA,QAAAy4H,GAAA3jI,GACAA,EAAA2G,KAAA,sCACA8V,YAAA,iBALA,GAAAmL,EAAA,CACA,GAAAwjC,GAAAz4D,KAAAgU,KAAA,8BAOA,IAAAihB,EAAAt0B,OACA,GAAA83D,EAAA93D,QAAAs0B,EAAA,IAAAwjC,EAAA,KACAu4E,EAAAhxI,MACAy4D,EAAAtjC,OAAA,UAAA,GACAF,EAAAE,OAAA,UAAA,GACA5c,GACA0c,EAAA1c,UAGAy4H,EAAAhxI,MACAy4D,EAAAtjC,OAAA,UAAA,MAeA6zD,OAAA,SAAAjiE,GACAA,EAAAA,KACA,IAGAkqH,GAHA/6F,EAAA44F,EAAA9uI,MACAi1B,EAAAlO,EAAAkO,MAAAjyB,EAAAgzB,GAAAyM,KAAA7Y,MAAA,YACAxH,EAAApiB,KAAAgU,KAAA,WAQA,IALA+S,EAAA4pH,YACAvuH,EAAApO,KAAA,6BAAArT,OAAA,IACAswI,EAAA7uH,EAAA,GAAAqE,yBAGAyvB,EACA,GAAA,SAAAnvB,EAAAujF,MAAA,CACA,GAAA2mC,EAAA,CACA,GAAAC,GAAAh7F,EAAA,GAAAzvB,wBAAA3Q,GACA,IAAAo7H,EAAAD,EAAAn7H,IACA,OAAA,EAEA9S,EAAAiyB,GAAAjR,aAAAkyB,OACA,CACA,GAAA+6F,EAAA,CACA,GAAAE,GAAAj7F,EAAA,GAAAzvB,wBAAA6X,MAEA,IAAA6yG,EAAAF,EAAA3yG,OAAA,GACA,OAAA,EAEAt7B,EAAAiyB,GAAA1Q,YAAA2xB,OAEA,CACA,GAAA56B,GAAAtb,KAAAgU,KAAA,cAEA,IAAAi9H,EAAA,CACA,GAAAG,GAAA91H,EAAA,GAAAmL,wBAAA6X,MAEA,IAAA8yG,EAAAH,EAAA3yG,OAAA,GACA,OAAA,EAEAhjB,EAAAwI,OAAAmR,GAWA,MARAlO,GAAAkO,MACAjyB,EAAAiyB,GAAAE,OAAApO,EAAAwpH,SAEAvtI,EAAAiyB,GAAAE,OAAA,cACAn1B,KAAAirI,SAAA,qBACAjrI,KAAAirI,SAAA,SAAAjoI,EAAAiyB,IACAj1B,KAAAirI,SAAA,iBAEAjrI,MAUAqxI,aAAA,SAAA5gG,GACA,GAAAw6F,GAAAjrI,IAyBA,OAvBAywC,GAAAztC,EAAAgF,OAAAyoC,GACA8wD,SAAA,WACA,MAAA0pC,GAAAA,SAAA,UAEAzwC,SAAA,SAAA58E,GACA,MAAAqtH,GAAAA,SAAA,YAAArtH,IAEA2rH,UAAA,WACA,MAAA0B,GAAAA,SAAA,cAEArhC,QAAA,SAAAC,GACA,GAAAynC,GAAArG,EAAAA,SAAA,YACA,OAAAphC,IAAAynC,GAEA7nC,UAAA,SAAA90C,GACAs2E,EAAAA,SAAA,YAAAt2E,IAEA4zC,gBAAAvoG,KAAAirI,SAAA,aACA/hI,UAAAlJ,KAAAirI,SAAA,SACAzB,gBAAA,OACAnzE,SAAA,aAGAr2D,KAAAywC,QAAAA,IAMAwkB,UAAA,SAAAr3C,GACA,gBAAA,KACAA,GAAAvN,KAAAuN,IAEA5d,KAAAirI,SAAA,QAAArtH,EAAAvN,OAcAiD,MAAA,SAAA4W,EAAAnD,GAGA,GAFAA,EAAAA,MAEAmP,QAAAhM,EAAA,CACA,GAAAsZ,GAAAxgC,EAAAgzB,GAAAyM,KAAA7Y,MAAA,YAOA,OANA5pB,MAAAgU,KAAA,YAAAnS,KAAA,WACAozB,KAAAjyB,EAAAhD,MACA+mB,EAAAwqH,WAAAt8G,KAAAE,OAAA,YACAnyB,EAAAwgC,GAAA1f,OAAAmR,KAAAE,OAAA,cAGA45G,EAAAvrG,GAEA,GACAloB,GAAAtb,KAAAgU,KAAA,eACAwvB,EAAAxgC,EAAAgzB,GAAAyM,KAEAnnB,GAAA3S,KAAA,IACA66B,EAAAv9B,UAAAikB,EAEAgM,QAAAnP,EAAAqpH,aACArpH,EAAAqpH,WAAAptI,EAAAwgC,GAAAxvB,KAAA,gBAAAgW,SAAA,eACAjD,EAAAqpH,aACApwI,KAAA8pB,YAAA,cACA9pB,KAAAirI,SAAA,cAAA,IAGAjoI,EAAAwgC,GAAAxvB,KAAA,YAAAnS,KAAA,WACA,GAAAozB,GAAAjyB,EAAAgzB,GAAAyM,KAAA7Y,MAAA,WACAtO,GAAAwI,OAAAmR,GACAjyB,EAAAiyB,GAAAE,OAAAnyB,EAAAhD,SAGAA,KAAAgU,KAAA,YAAAmhB,OAAA,UACAn1B,KAAAirI,SAAA,sBAQA1B,UAAA,WACA,GAAAz9F,KAKA,OAJA9rC,MAAAgU,KAAA,YAAAnS,KAAA,WACAozB,KAAAjyB,EAAAhD,MACA8rC,EAAAvlC,KAAA0uB,KAAAE,OAAA,gBAEAi5G,KAAAtiG,EAAAl9B,SASA4iI,gBAAA,WAEA,MADAxxI,MAAAgU,KAAA,WAAAmhB,OAAA,cACAn1B,KAAAirI,SAAA,kBAQAwG,kBAAA,WACA,GAAAzxI,KAAAgU,KAAA,eAAAyG,WAAA9Z,OACAX,KAAAirI,SAAA,eAEAjrI,KAAAgU,KAAA,mBAAApH,UAGA8kI,YAAA,WACA,GAAAroG,GAAArmC,EAAAgzB,GAAAyM,KAAA7Y,MAAA,kBAEA5mB,GAAAsqB,MAAAjB,IAAA2G,OAAA2C,KAAAC,UAAAsM,KAAA,iBACAjyB,SAAA,OACAqe,QAAA,SAAAje,GACArN,EAAAqmC,GAAA1gC,KAAA0H,MAGArQ,KAAAgU,KAAA,eAAA8P,OAAAulB,IAsDA2qB,QAAAC,SAAAg3E,UACAh7H,SAAA,QACAomD,SAAA,WACAh1B,MAAA,WACA3U,YAAA,yBACA1G,MAAA,IACA6uC,OAAA,SAAArxB,EAAAzc,GACA/jB,EAAAwgC,GAAAynG,SAAAlkH,KAeA/jB,EAAA2N,GAAAs6H,SAAA,SAAAl9G,GACA,MAAA4T,GAAA5T,GACA4T,EAAA5T,GACAvrB,MAAAxC,KAAA+M,MAAAnC,UAAAnI,MAAApB,KAAA6F,UAAA,IACA,gBAAA6mB,IAAAA,MAGA/qB,GAAAoN,MAAA,UAAA2d,EAAA,6BAAA2T,GAFAC,EAAAC,MAAAp/B,MAAAxC,KAAAkH,aAKAorB,QAMA,SAAAtvB,GAi7BA,QAAA2uI,UAAA18G,GACA,MAAAA,GAAAjhB,KAAA,WAAAkhB,aAAA,YAAAgB,QAAA,GAOA,QAAA07G,mBACA,GAAA3wG,GAAAj+B,EAAA,kCAiBA,OAfAi+B,GAAAvd,GAAA,SAAA,SAAA2Q,GACA,GAAAi+D,GAAA,GAAAL,WAWA,OAVAK,GAAAxiE,OAAA,SAAA+hH,GACA,GAAA58G,GAAAjyB,EAAAqxB,EAAAlc,QAAAwC,QAAA,YACA2O,EAAA2L,EAAAta,QAAA,YAEA2O,GAAA2hH,SAAA,QAAA34C,EAAAnyE,SACA8U,EAAAroB,UAEA0lF,EAAAE,WAAAn+D,EAAAlc,OAAAm7C,MAAA,IAEAj/B,EAAAjU,kBACA,IAGA6gB,EAGA,QAAA6wG,YACA,GAAArvG,GAAAz/B,EAAA,oDAQA,OALAy/B,GAAAzuB,KAAA,KAAA0P,GAAA,QAAA,SAAA2Q,GACA,GAAAsnG,GAAA34H,EAAAqxB,EAAAlc,QAAAwC,QAAA,aACAghH,GAAA79G,KAAA,KACA69G,EAAAloH,OAAAoK,KAAA,OAEA4kB,EAAA,GAGA,QAAAsvG,YAIA,IAAA,GAHAtvG,GAAAz/B,EAAA,kGAGAzB,EAAA,EAAAA,EAAA2F,UAAAvG,OAAAY,IACAkhC,EAAA3e,OAAA5c,UAAA3F,GAQA,OANAkhC,GAAAzuB,KAAA,UAAA0P,GAAA,QAAA,SAAA2Q,GACA,GAAA29G,GAAAhvI,EAAAqxB,EAAAlc,QAAAwC,QAAA,aACAq3H,GAAAl0H,KAAA,KACAk0H,EAAAt3H,OAAAmD,KAAA,OAGA4kB,EAAA,GAt+BA,GAAAf,YAAA,SACAnvB,GAAA,EAGAovB,SAMAC,MAAA,SAAA4B,GACA,MAAAxjC,MAAA6B,KAAA,WACA,GAEA+B,GAFAyJ,EAAArK,EAAAhD,MACAqQ,IAOA,IAJAhD,EAAAgD,KAAAqxB,WAAArxB,GACAhD,EAAA0J,KAAA,YAAA,GACA1J,EAAA0J,KAAA,KAAA,MAAAxE,MAEAixB,YAAAlR,QACAjlB,EAAA8nB,OAAA,aAAAqO,OACA,CACA,GAAAxK,GAAAwgG,YAAA,gBAAA,QAAA,QACA,UAAA,KACAnsH,GAAAyW,OAAAkV,GACAh2B,EAAAg2B,GAAAnP,SAAA,gBACA7mB,EAAAg2B,GAAAtV,GAAA,QAAA,WACArW,EAAA8nB,OAAA,WAGA9nB,EAAAyW,OAAA9gB,EAAAgzB,GAAAyM,KAAA7Y,MAAA,kBACA5mB,EAAAgzB,GAAAqL,MAAA,aACAz9B,EAAAZ,EAAAgzB,GAAAyM,KAAA7Y,MAAA,YAAAiZ,KAAA,UACA7/B,EAAAgzB,GAAAqL,MAAA,eAEA,KAAA,GAAAn9B,KAAAyqI,WACAA,UAAAj+H,eAAAxM,IACAlB,EAAAY,GAAAkgB,OAAA9gB,EAAAgzB,GAAA/c,QAAApY,KAAA,SACA+oB,MAAA,kBACAwsC,YAAAlyD,GAEAyqI,UAAAzqI,GAAAm9B,OAGAr+B,GAAAY,GAAA8f,GAAA,QAAA,OAAA,SAAA2Q,GACAhnB,EAAA8nB,OAAA,OAAAnyB,EAAAqxB,EAAAlc,QAAA9H,KAAA,WAGAhD,EAAAyW,OAAA9gB,EAAAgzB,GAAAyM,KAAA7Y,MAAA,gBACAkoH,WACAC,SAAA/uI,EAAAgzB,GAAAqL,MAAA,oCAEAuwG,kBAAA,UAQA1lH,OAAA,SAAAhC,GACA,GAAA7Z,GAAArQ,KAAAqQ,KAAAqxB,WAEA,IAAAxX,EAEA,OADAlqB,KAAA6pB,SAAA,UACAxZ,EAAAxP,MACA,IAAA,UACAb,KAAAgU,KAAA,WAAAkhB,aAAA,cACA,MACA,KAAA,QACA,GAAAk2G,GAAAprI,KAAA6a,QAAA,YAAAzJ,QAAA4C,KAAA,UACA,IAAAo3H,EAAAzqI,QACAyqI,EAAAl2G,aAAA,eACAl1B,KAAA2a,QAAA,aACA3G,KAAA,oBACA+D,IAAA/X,KAAAm1B,OAAA,kBACAtL,SAAA,qBAGA,IAAA7pB,KAAAW,OAAA,EAEA,OADAX,KAAA8pB,YAAA,UACAzZ,EAAAxP,MACA,IAAA,WACA,IAAA,OACAb,KAAAgqB,SAAA,aACAhqB,KAAAm1B,OAAA,SAQAt0B,KAAA,SAAAA,GACA,GAAAwP,GAAArQ,KAAAqQ,KAAAqxB,WAQA,OAPArxB,GAAAxP,MAAAA,IACA8gC,QAAA9gC,KAAAA,GAAA2B,MAAAxC,MACAqQ,EAAAxP,KAAAA,EACAb,KAAA6pB,SAAAhpB,GACAb,KAAAopB,WAAA,QACAppB,KAAAm1B,OAAA,eAEAn1B,MAOAiyI,WAAA,WACA,MAAAjyI,MAAA6B,KAAA,WACA,GAAAozB,GAAAjyB,EAAAhD,KAEA,KAAAi1B,EAAAle,KAAA,QAAA,CACA,GAAA1G,GAAA4kB,EAAA5kB,KAAAqxB,WACA,IAAArxB,EAAAxP,KAAA,CACA,GAAAy4C,GAAAq1F,UAAAt+H,EAAAxP,MAAAy4C,OACAhwB,EAAA2L,EAAAta,QAAA,YAEA,KAAApZ,EAAA,GAAAA,IAAA,CACA,GAAAsb,GAAAy8B,EAAA/3C,CACA,IAAA,GAAA+nB,EAAAtV,KAAA,UAAA6I,EAAA,KAAAlc,OAAA,CACAs0B,EAAAle,KAAA,OAAA8F,EACA,cAWApP,IAAA,WACA,GAAAuqC,GAAA9wC,SAEA,OAAAlH,MAAA6B,KAAA,WACA,GAAAozB,GAAAjyB,EAAAhD,KACA,IAAAi1B,EAAAjL,SAAA,YAAA,CACA,GAAA3Z,GAAA4kB,EAAA5kB,KAAAqxB,WAEA,OAAAC,SAAAl0B,IAAA4C,EAAAxP,MAAA2B,MAAAyyB,EAAA+iB,GAEAr7B,QAAA4zB,IAAA,yBAAAtb,MAKAi9G,UAAA,WACA,MAAAlyI,MAAAm1B,OAAA,OAAAooG,QAAA,KAGAztG,OAAA,WACA,GAAAkoB,GAAA9wC,SAUA,OARAlH,MAAA6B,KAAA,WACA,GAAAozB,GAAAjyB,EAAAhD,MACAqQ,EAAA4kB,EAAA5kB,KAAAqxB,WAEAC,SAAA7R,OAAAzf,EAAAxP,OACA8gC,QAAA7R,OAAAzf,EAAAxP,MAAA2B,MAAAyyB,EAAA+iB,KAGAh4C,KAAAm1B,OAAA,YAGA6D,MAAA,WAEA,MADAh5B,MAAAgU,KAAA,kBAAA4hD,aAAA,SACA51D,KAAA4M,UAGAizB,QAAA,WAQA,MAPA7/B,MAAAgqB,SAAA,YACAhqB,KAAAgU,KAAA,+BACA+C,KAAA,QAAA/W,KAAAgqB,SAAA,cACA,wCACA,oCAGAhqB,MAGAmyI,YAAA,WACA,OACA5U,OAAA,QAAAv9H,KAAAqQ,KAAA,UACA5C,IAAA,UAAAzN,KAAAqQ,KAAA,OACAk8B,MAAA7iB,SAAA1pB,KAAAqQ,KAAA,UAAA,KACAwM,KAAA7c,KAAA+W,KAAA,UAQAo9B,SAAA,WAIA,QAAAi+F,KACApyI,KAAA8jB,OAAA9gB,EAAAgzB,GAAAiL,MACArX,MAAA,mBAEAqX,KAAAoJ,OAAAoB,aACA5uB,KAAA,SACAwkB,MAAA,gBACA/tB,MAAAmlD,EAAA8kE,OACAjgG,MAAA,kBAEAzgB,KAAA,MACAwkB,MAAA,mBACA/tB,MAAAmlD,EAAAhrD,IACA6vB,MAAA,iCAEApf,IAAA,IACA+iB,KAAAoJ,OAAAkC,MAAAksB,EAAAlsB,OACAtL,KAAAoJ,OAAAxtB,KAAA47C,EAAA57C,MAAA,IACAokB,KAAAoJ,OAAA5nB,SACA4e,MAAA,QACApQ,OAAA,EACAwb,OAAA,SAAApY,EAAAopB,GACAA,EAAA8/E,QAAA9kE,EAAA8kE,SACA9/E,EAAA8/E,OACAlwH,EAAAgD,KAAA,SAAA,QAEAhD,EAAAkQ,WAAA,WAEAkgC,EAAAhwC,KAAAgrD,EAAAhrD,MACAgwC,EAAAhwC,IACAJ,EAAAgD,KAAA,MAAA,UAEAhD,EAAAkQ,WAAA,QAEAkgC,EAAAlR,OAAAksB,EAAAlsB,QACA,GAAAkR,EAAAlR,MACAl/B,EAAAgD,KAAA,QAAA,GAAAotC,EAAAlR,OAEAl/B,EAAAkQ,WAAA,SAEA,IAAAV,GAAA4gC,EAAA5gC,KAAA4gC,EAAA5gC,KAAA9K,OAAA,EACA8K,IAAA47C,EAAA57C,OACAA,EACAxP,EAAA0J,KAAA,OAAA8F,GAEAxP,EAAA0J,KAAA,OAAA,OAEA1J,EAAAsN,QAAA,aAAAswH,SAAA,sBAlDA,GAAA59H,GAAArN,KACAy4D,EAAAz4D,KAAAm1B,OAAA,cAsDA8L,MAAAkJ,YAAA7M,MAAA,wBACA14B,KAAAwtI,KAOAC,WAAA,WAQA,MAPAryI,MAAA+pB,YAAA,cACA/pB,KAAAgU,KAAA,WAAAkhB,aAAA,WACAq5G,iBAAAvuI,KAAA,aACAA,KAAAgqB,SAAA,cACA,gBACA,mBACAhqB,KAAAgU,KAAA,6BAAA+M,OACA/gB,MAMAwyE,WAAA,WAKA,MAJAxyE,MAAA+pB,YAAA,cACA/pB,KAAAgU,KAAA,6BAAA+M,OACA/gB,KAAA2a,QAAA,aAAAswH,SAAA,iBACAjrI,KAAAm1B,OAAA,WACAn1B,MAWAsyI,cAAA,WACA,GACAC,IADAvyI,KAAAqQ,KAAAqxB,YACA1hC,KAAA2a,QAAA,aACA3G,KAAA,+BAOA,OANAhU,MAAAgqB,SAAA,WACAhqB,KAAAgqB,SAAA,gBACAuoH,EAAAA,EAAAlrI,IAAArH,OAEAuyI,EAAAA,EAAAlrI,IAAArH,KAAA6a,QAAA,YAAAzJ,SAEAmhI,GAGAA,SAAA,WACA,GAAAjC,GAAAtwI,KAAAm1B,OAAA,gBACA,OAAAm7G,GAAAt8H,KAAA,YAGAu2C,QAAA,WACA,MAAA5oB,SAAA4oB,QAAAvqD,KAAAqQ,KAAAqxB,YAAA7gC,MAAAQ,KAAArB,OAGAwyI,QAAA,WACA,MAAA7wG,SAAA6wG,QAAAxyI,KAAAqQ,KAAAqxB,YAAA7gC,MAAAQ,KAAArB,OAGAyyI,WAAA,SAAAjvG,GAGA,QAAAkvG,GAAAlvG,GACA,IAAA,GAAAt/B,KAAAyqI,WACA,GAAAA,UAAAj+H,eAAAxM,IAAAs/B,EAAAxZ,SAAA9lB,GACA,MAAAA,GALA,GAAAmM,GAAArQ,KAAAqQ,KAAAqxB,WASArxB,GAAAxP,KAAA6xI,EAAAlvG,GACA7B,QAAA8wG,WAAApiI,EAAAxP,MAAA2B,MAAAxC,KAAAkH,WACAlH,KAAA6pB,SAAAxZ,EAAAxP,OAMA0oI,UAAA,WACA,GAAA1oI,GAAAb,KAAAqQ,KAAAqxB,YAAA7gC,IAEA,OAAAA,GACA8gC,QAAA4nG,UAAA1oI,GAAAQ,KAAArB,MAEA,GAGAK,KAAA,WACA,MAAAsxI,UAAA3xI,OAQA2hC,SAAA9gC,KAAAguI,SAAA,SAAA9nH,GAOA,QAAA4rH,GAAA91H,GACAqZ,QAAAnP,EAAAlK,KACAoY,EAAAle,KAAA8F,EAAA,GAAAkK,EAAAlK,UACAkK,GAAAlK,IATA,GAAAk2C,GACA99B,EAAAj1B,IAEA+mB,GAAAA,MACAA,EAAA0rC,KAAA,WAQAkgF,EAAA,QAEA3yI,KAAA2I,KAAA,IACA3I,KAAA8jB,OAAAivC,EAAA/vD,EAAAgzB,GAAAyM,KAAA7Y,MAAA,YACA5mB,EAAA+vD,GAAA79B,aAAAnO,GACA/mB,KAAA6pB,SAAA,aAGA8X,QAAA9gC,KAAA8H,KAAA,SAAAoe,GAOA,QAAA4rH,GAAA91H,GACAqZ,QAAAnP,EAAAlK,KACAoY,EAAAle,KAAA8F,EAAA,GAAAkK,EAAAlK,UACAkK,GAAAlK,IATA,GAAAk2C,GACA99B,EAAAj1B,IAEA+mB,GAAAA,MACAA,EAAA0rC,KAAA,YAQAkgF,EAAA,QAEA3yI,KAAA2I,KAAA,IACA3I,KAAA8jB,OAAAivC,EAAA/vD,EAAAgzB,GAAAyM,KAAA7Y,MAAA,YACA5mB,EAAA+vD,GAAA79B,aAAAnO,GACA/mB,KAAA6pB,SAAA,aAGA8X,QAAA9gC,KAAA+tI,QAAA,SAAA7nH,GACA,GACAgsC,GADA99B,EAAAj1B,IAGA+mB,GAAAA,MACAA,EAAA6rH,aAAA,EACA7rH,EAAA8rH,UAAA,WACA,GAAAN,GAAAt9G,EAAAE,OAAA,WACA,OAAAo9G,GAAAr9G,aAAA,YAAA,UAAA,IAGAl1B,KAAA2I,KAAA,GAEA,IAAA8Z,GAAAzf,EAAAgzB,GAAAyM,KACA7Y,MAAA,4BAAAiZ,KAAA,SACA22F,YAAA,kBAAA,aAAA,uBACA,UAAA,MACA8U,YAAA,aAAA,4BAAA,MACAtuI,MAAA8jB,OAAArB,EACAswC,EAAA/vD,EAAAgzB,GAAAyM,KAAA7Y,MAAA,yBACA7C,EAAAyrD,YACAxyE,KAAA6pB,SAAA,cAEA9C,EAAAsrH,YACAryI,KAAAm1B,OAAA,cAEAnyB,EAAA+vD,GAAA79B,aAAAnO,IAGA4a,QAAA9gC,KAAA08C,MAAA,SAAAx2B,GAUA,QAAA+rE,GAAAj2E,GACAqZ,QAAAnP,EAAAlK,KACAoY,EAAA5kB,KAAAwM,EAAA,GAAAkK,EAAAlK,UACAkK,GAAAlK,IAGA,QAAA81H,GAAA91H,GACAqZ,QAAAnP,EAAAlK,KACAoY,EAAAle,KAAA8F,EAAA,GAAAkK,EAAAlK,UACAkK,GAAAlK,IAsBA,QAAAi2H,GAAArzI,GACAO,KAAAgU,KAAA,iBAAAkhB,aAAA,eAAAlyB,EAAAvD,GAAAY,QAzCA,GAAA0yD,GACA99B,EAAAj1B,IAEAA,MAAA2I,KAAA,IAEAoe,EAAAA,MACAmP,QAAAnP,EAAAw2G,SACAx2G,EAAAw2G,OAAA9pG,YAAAO,OAAA,mBAcA8+D,EAAA,UACAA,EAAA,SACAA,EAAA,OACA6/C,EAAA,QAEA5rH,EAAA/jB,EAAAgF,UAAA+e,GACA8b,KAAA,QACAkwG,SAAA,WACA,MAAA99G,GAAAE,OAAA,YAAAD,aAAA,iBAIA,IAAAzS,GAAAzf,EAAAgzB,GAAAyM,KACA7Y,MAAA,4BAAAiZ,KAAA,SACA22F,YAAA,SAAA,WAAA,WACA,UAAA,MACAA,YAAA,OAAA,MAAA,YACA,UAAA,OAMA/rF,EAAAxM,KAAA4L,QAAAK,eACAlqC,EAAAgzB,GAAA4U,MAAAhhB,MAAA,wCACA4jB,OAAAvY,EACAkY,SAAA,gBACAG,SACA0lG,wBAAAF,EACAnD,KAAA,KACAsD,WAAAH,EACAI,WAAAJ,EACAK,SAAAL,EACAM,MAAAN,EACAO,MAAA,KACAC,0BAAA,WACA,GAAA/1F,GAAAo0F,SAAA3xI,MAAAqD,QAAA,SAAA,IACAua,EAAA5d,KAAAm1B,OAAA,YACAD,aAAA,YAAA,UAAA,GACAnO,KACAlK,EAAA7c,KAAA+W,KAAA,OACA8F,KACAkK,EAAA2wC,YAAA76C,GACAy6C,OAAAC,YAAAha,EAAA3/B,EAAAmJ,MAKA/mB,MAAA8jB,OAAArB,EACAzf,EAAAgzB,GAAAyM,KAAA7Y,MAAA,sBACA6jB,EACAzqC,EAAAgzB,GAAA4U,MAAAhhB,MAAA,iBAAA,MACAmpC,EAAA/vD,EAAAgzB,GAAAyM,KAAA7Y,MAAA,mBAEA5mB,EAAA+vD,GAAA79B,aAAAnO,GACA/mB,KAAA6pB,SAAA,aAQA8X,QAAAl0B,IAAAohI,SAAA,SAAA0E,GAKA,QAAAC,GAAAn/G,GACA,GAAAY,GAAAjyB,EAAAqxB,EAAAlc,QAAAwC,QAAA,YACAta,EAAA40B,EAAA5kB,KAAA,eACA4kB,GAAA1X,WAAA,gBACAokB,QAAA9gC,KAAAguI,SAAAxtI,KAAA4zB,GAAA3hB,MAAAjT,IACA40B,EAAAhuB,IAAA,WAAAusI,GACAv+G,EAAAhuB,IAAA,QAAA+5B,MAAAxL,YAIA,QAAAi+G,GAAApjI,GACA4kB,EAAAtsB,KAAA0H,GACA4kB,EAAAnL,YAAA,YACAmL,EAAA5kB,KAAA,eAAAkjI,GACAt+G,EAAAvR,GAAA,WAAA8vH,GACAv+G,EAAAvR,GAAA,QAAA,IAAAsd,MAAAxL,YAnBA,GAAAP,GAAAj1B,IAEAuzI,GAAAA,GAAA5B,SAAA3xI,MAoBA,IAAAuzI,EAAAxhI,OACA/O,EAAAsqB,MAAAzsB,KAAA,OACAwrB,IAAA2G,OAAA2C,KAAAC,UAAAi5G,SACAx+H,KAAAkjI,EACA7mH,YAAA,4BACA4B,QAAAmlH,IAGAA,EAAA,iFAMA9xG,QAAAl0B,IAAA9E,KAAA,SAAA+qI,SAAA3sH,SAWA,QAAAysH,cAAAn/G,GACA,GAAAY,GAAAjyB,EAAAqxB,EAAAlc,QAAAwC,QAAA,YACAta,EAAA40B,EAAA5kB,KAAA,WACA4kB,GAAA1X,WAAA,YACAokB,QAAA9gC,KAAA8H,KAAAtH,KAAA4zB,GAAA3hB,MAAAjT,IACA40B,EAAAhuB,IAAA,WAAAusI,cACAv+G,EAAAhuB,IAAA,QAAA+5B,MAAAxL,YAGA,QAAAslG,cACA,GAAA,GAAA9nG,OAAAN,MAAAu4G,SAAA0I,aACA,GAAA5sH,QAAA4sH,YAAA,CACA,GAAA5Y,WAQA,IANA9lG,KAAAjhB,KAAA,UAAAnS,KAAA,WACA,GAAAhB,GAAAb,KAAAuD,aAAA,SAAA,iBACA,oBAAA1C,GACAk6H,QAAAx0H,KAAAvG,KAAAsG,eAGAy0H,QAAAp6H,OAAA,EAAA,CACA,GAAA2vB,QAAA,uBAAAyqG,QAAAnsH,KAAA,MAAA,KACA0a,GAAA,GAAAmlH,WACAx5G,KAAAA,KAAA,IAGA,KACA4qF,KAAAvvF,QAAAhH,IACA,MAAAnnB,GACAixB,MAAAjxB,MAMA,QAAAyxI,SAAAvjI,GACA4kB,KAAA,GAAAhvB,UAAAoK,EACAyqH,aAGA,QAAA2Y,SAAApjI,GACAujI,QAAAvjI,GACA4kB,KAAAnL,YAAA,YACAmL,KAAA5kB,KAAA,WAAAqjI,UACAz+G,KAAAvR,GAAA,WAAA8vH,cACAv+G,KAAAvR,GAAA,QAAA,IAAAsd,MAAAxL,YAvDA,GAAAP,MAAAj1B,IAGA,OADA+mB,SAAAA,YACA,GAAAA,QAAApe,SACAmyH,eAIA4Y,UAAAA,UAAA/B,SAAA3xI,OAAA+R,WAmDA0hI,SADA,IAAAC,SACAA,SAEA,8EAMA/xG,QAAAl0B,IAAAmhI,QAAA,WACA36G,MAAAb,MAAA,8CAWAuO,QAAAl0B,IAAA8vC,MAAA,SAAAx2B,GACA,GAAAwrH,GAAAvyI,KAAAm1B,OAAA,YACAgf,EAAAn0C,KAAAm1B,OAAA,eACA90B,EAAAsxI,SAAA3xI,KAGA,IADA+mB,EAAAA,MACAA,EAAAqO,SAAA,CACA,GAAAy+G,GAAA,EACA,IAAA,gBAAA9sH,GAAA,SACA8sH,EAAA9sH,EAAAqO,aAEA,KAAA,GAAAlxB,KAAA6iB,GAAAqO,SACArO,EAAAqO,SAAA1kB,eAAAxM,KACA2vI,IACAA,GAAA,MACAA,GAAA3vI,EAAA,MAAA8zD,QAAA7kC,UAAApM,EAAAqO,SAAAlxB,IAIA2vI,KACAxzI,EAAAwzI,EAAA,MAAAv8E,OAAAO,aAAAx3D,GAAA,KAEA,GAAAk9C,IAAA3/B,OAAA20H,EAAAr9G,aAAA,YACA,UAAA,GACAqoB,MAAAl9C,EACAk9H,OAAAppF,EAAAopF,SAAA,EACAhxF,MAAA4H,EAAA5H,MACAjP,OAAA,EACAghG,aAAAt+H,KAAAgU,KAAA,wBAEAu+H,GAAA,KACAh1F,EAAAwV,OAAAw/E,EAAA,GAEA,IAAAtY,GAAAj3H,EAAAgzB,GAAAyM,KAAA7Y,MAAA,iBACA5pB,MAAAgU,KAAA,kBAAA4hD,aAAA,SACA51D,KAAA8jB,OAAAm2G,GACAj3H,EAAAi3H,GAAArkE,aAAArY,IASA5b,QAAA7R,OAAAytB,MAAA,WACA,UAAAv9C,KAAAqQ,KAAA,QACArQ,KAAAm1B,OAAA,QAGAwM,QAAA7R,OAAAnnB,KAAA,WACA,MAAAg5B,SAAAl0B,IAAA9E,KAAAtH,KAAArB,KACAk2B,QACAvtB,MAAA,EAAAgrI,aAAA,KAUAhyG,QAAA6wG,QAAA3D,SAAA,WAIA,QAAAiF,GAAAj3H,GACA,GAAAvJ,IACAA,EAAA2hB,KAAAle,KAAA8F,KAAAvJ,GACAtQ,EAAAwgC,GAAAzsB,KAAA8F,EAAAvJ,GANA,GAAAjT,GAAAL,KAAAqQ,KAAA,iBAAAshI,SAAA3xI,MACAwjC,EAAAxgC,EAAAgzB,GAAAyM,KAAA7Y,MAAA,oBAAAvpB,EAWA,OAFAyzI,GAAA,QAEAtwG,GAGA7B,QAAA6wG,QAAA7pI,KAAA,WAOA,QAAAmrI,GAAAj3H,GACA,GAAAvJ,IACAA,EAAA2hB,KAAAle,KAAA8F,KAAAvJ,GACAtQ,EAAAwgC,GAAAzsB,KAAA8F,EAAAvJ,GATA,GAAAjT,GAAAL,KAAAqQ,KAAA,aAAAshI,SAAA3xI,MACAwjC,EAAAxgC,EAAAgzB,GAAAyM,KAAA7Y,MAAA,gBAaA,OAVA5mB,GAAAwgC,GAAA76B,KAAAtI,GAQAyzI,EAAA,QAEAtwG,GAGA7B,QAAA6wG,QAAA5D,QAAA,WAIA,QAAAmF,GAAAl3H,GACAoY,EAAAjL,SAAAnN,IACA7Z,EAAAwgC,GAAAzsB,KAAA,QAAA8F,GAAA,GAGA,QAAAi3H,GAAAj3H,GACA,GAAAvJ,IACAA,EAAA2hB,EAAAle,KAAA8F,KAAAvJ,GACAtQ,EAAAwgC,GAAAzsB,KAAA8F,EAAAvJ,GAXA,GAAA2hB,GAAAj1B,KACAwjC,EAAAxgC,EAAAgzB,GAAAyM,KAAA7Y,MAAA,mBAAA+nH,SAAA3xI,MAkBA,OAJA+zI,GAAA,cACAA,EAAA,cACAD,EAAA,QAEAtwG,GAGA7B,QAAA6wG,QAAAj1F,MAAA,WAIA,QAAAy2F,GAAAn3H,EAAAvJ,GACA,QAAA,UAAAuJ,GAAAvJ,GAAA,SAAAA,GAIA,QAAAu8H,GAAAhzH,GACA,GAAAvJ,IACAA,EAAA2hB,EAAA5kB,KAAAwM,MAAAm3H,EAAAn3H,EAAAvJ,IACAtQ,EAAAwgC,GAAAzsB,KAAA,QAAA8F,EAAAvJ,GAGA,QAAAwgI,GAAAj3H,GACA,GAAAvJ,IACAA,EAAA2hB,EAAAle,KAAA8F,KAAAvJ,GACAtQ,EAAAwgC,GAAAzsB,KAAA8F,EAAAvJ,GAjBA,GAAA2hB,GAAAj1B,KACAwjC,EAAAxgC,EAAAgzB,GAAAyM,KAAA7Y,MAAA,iBAAA+nH,SAAA3xI,MAyBA,OALA6vI,GAAA,UACAA,EAAA,SACAA,EAAA,OACAiE,EAAA,QAEAtwG,GAKA7B,QAAA8wG,WAAA5D,SAAA,SAAArrG,GAMA,QAAAswG,GAAAj3H,GACA,GAAAvJ,IACAA,EAAAkwB,EAAAzsB,KAAA8F,KAAAvJ,GACA2hB,EAAAle,KAAA8F,EAAAvJ,GARA,GAAA2hB,GAAAj1B,KACAK,EAAAmjC,EAAAnjC,OAAA0R,MAEAkjB,GAAA5kB,KAAA,eAAAhQ,GAQAyzI,EAAA,QAEAnyG,QAAAl0B,IAAAohI,SAAAxtI,KAAArB,KAAAK,IAGAshC,QAAA8wG,WAAA9pI,KAAA,SAAA66B,GAGA,QAAAswG,GAAAj3H,GACA,GAAAvJ,IACAA,EAAAkwB,EAAAzsB,KAAA8F,KAAAvJ,GACA2hB,EAAAle,KAAA8F,EAAAvJ,GALA,GAAA2hB,GAAAj1B,IAQA8zI,GAAA,QAEAnyG,QAAAl0B,IAAA9E,KAAAtH,KAAArB,KAAAwjC,EAAA76B,QAAAgrI,aAAA,KAGAhyG,QAAA8wG,WAAA7D,QAAA,SAAAprG,GAIA,QAAAywG,GAAAp3H,GACA,GAAAvJ,IACAA,EAAAkwB,EAAAnzB,KAAAwM,MACAhP,EAAAgP,GAAAvJ,GAGA,QAAAwgI,GAAAj3H,GACA,GAAAvJ,IACAA,EAAAkwB,EAAAzsB,KAAA8F,KAAAvJ,GACA2hB,EAAAle,KAAA8F,EAAAvJ,GAZA,GAAA2hB,GAAAj1B,KACA6N,GAAAyF,MAAAkwB,EAAAnjC,OAAA0R,OAeAkiI,GAAA,cACAA,EAAA,cACAH,EAAA,QAEAnyG,QAAA9gC,KAAA+tI,QAAAvtI,KAAArB,KAAA6N,IAGA8zB,QAAA8wG,WAAAl1F,MAAA,SAAA/Z,GAGA,QAAAmvD,GAAA91E,GACA,GAAAvJ,IACAA,EAAAkwB,EAAAnzB,KAAAwM,MACA,SAAAA,EACAhP,EAAA0+B,MAAA7iB,SAAApW,GAEAzF,EAAAgP,GAAAvJ,GAGA,QAAA2gI,GAAAp3H,GACA,GAAAvJ,IACAA,EAAAkwB,EAAAzsB,KAAA8F,MACAhP,EAAAgP,GAAAvJ,GAdA,GAAAzF,IAAAyF,MAAAkwB,EAAAnjC,OAAA0R,OAkBA4gF,GAAA,UACAA,EAAA,SACAA,EAAA,OACAshD,EAAA,QACA/9G,QAAAroB,EAAA0vH,SACA1vH,EAAA0vH,QAAA,GAEA57F,QAAA9gC,KAAA08C,MAAAl8C,KAAArB,KAAA6N,IAKA8zB,QAAA4nG,UAAAsF,SAAA,WACA,GAAAxuI,GAAAL,KAAAqQ,KAAA,iBAAAshI,SAAA3xI,KAEA,OAAAouI,MAAA/tI,IAGAshC,QAAA4nG,UAAA5gI,KAAA,WACA,GAAAtI,GAAAL,KAAAqQ,KAAA,aAAAshI,SAAA3xI,KAEA,OAAAouI,MAAA/tI;EAGAshC,QAAA4nG,UAAAqF,QAAA,WAIA,QAAAsF,GAAAr3H,EAAA0F,GACA0S,EAAAjL,SAAAnN,KACAxc,GAAAkiB,GALA,GAAAliB,GAAA,GACA40B,EAAAj1B,IAWA,OAJAk0I,GAAA,aAAA,KACAA,EAAA,aAAA,KAEA7zI,GAAA,IAAAsxI,SAAA3xI,MACAouI,KAAA/tI,IAGAshC,QAAA4nG,UAAAhsF,MAAA,WAIA,QAAA42F,GAAAt3H,EAAA0F,GACA,GAAAjP,IAEAA,EAAA2hB,EAAA5kB,KAAAwM,MACAxc,GAAAkiB,EAAAjP,GAEA,QAAA8gI,GAAAv3H,EAAA0F,GACA,GAAAjP,IAEAA,EAAA2hB,EAAAle,KAAA8F,MACAxc,GAAAkiB,EAAAjP,GAbA,GAAAjT,GAAA,GACA40B,EAAAj1B,IAqBA,OANAm0I,GAAA,SAAA,KACAA,EAAA,QAAA,KACAA,EAAA,MAAA,KACAC,EAAA,OAAA,KACA/zI,GAAA,IAAAsxI,SAAA3xI,MAEAouI,KAAA/tI,IAKAshC,QAAA4oB,QAAAskF,SAAA,WACA,GAAAxuI,GAAAL,KAAAqQ,KAAA,iBAAAshI,SAAA3xI,KAEA,OAAA,IAAAK,EAAA0R,QAGA4vB,QAAA4oB,QAAA5hD,KAAA,WACA,GAAAtI,GAAAL,KAAAqQ,KAAA,aAAAshI,SAAA3xI,KAEA,OAAA,IAAAK,EAAA0R,QAGA4vB,QAAA4oB,QAAAqkF,QAAA,WACA,MAAA,IAAA+C,SAAA3xI,MAAA+R,QAGA4vB,QAAA4oB,QAAAhN,MAAA,WACA,MAAA,IAAAo0F,SAAA3xI,MAAA+R,QA4EA/O,EAAA2N,GAAAwkB,OAAA,SAAApH,GACA,MAAA4T,SAAA5T,GACA4T,QAAA5T,GACAvrB,MAAAxC,KAAA+M,MAAAnC,UAAAnI,MAAApB,KAAA6F,UAAA,IACA,gBAAA6mB,IAAAA,MAGA/qB,GAAAoN,MAAA,UAAA2d,EAAA,6BAAA2T,YAFAC,QAAAC,MAAAp/B,MAAAxC,KAAAkH,aAKAorB,QA6CAm8G,SAAA7jI,UAAA8nB,MAAA,SAAA3L,GACA,GAAAstH,GAAAr0I,KAAAi1B,OAAAE,OAAA,YACAvX,EAAAy2H,EAAAn/G,aAAA,YAAA,UAAA,EAKA,OAHAtX,KACAmJ,EAAAje,IAAA8U,GAEA5a,EAAA0vB,MAAA3L,IAQA0nH,SAAA7jI,UAAAqqB,KAAA,SAAApY,GACA,MAAAA,GACA7c,KAAAirI,WAAAj3H,KAAA,kBAAA6I,EAAA,MAEA7Z,EAAAhD,KAAA0uI,UAMAD,SAAA7jI,UAAAqgI,SAAA,WACA,MAAAjoI,GAAAhD,KAAA0uI,SAAA/zH,QAAA,cAQA8zH,SAAA7jI,UAAA6C,IAAA,SAAAwnB,EAAAG,GACA,GAAArO,KACAqO,KACArO,EAAAqO,SAAAA,GAEAp1B,KAAAi1B,KAAAA,GAAAE,OAAA,MAAApO,IAaA0nH,SAAA7jI,UAAAgP,OAAA,SAAA06H,EAAAvtH,GACA,GAAAmc,GAAAljC,KAAAgD,EAAAsxI,GACAjkI,EAAA4wB,KAAAkC,kBAAAD,EAEAjC,MAAAqC,UAAAJ,EAAA,MACAljC,KAAA0yB,OACA8oG,IAAAz0G,EAAAqyF,UAAA,KAAAphD,QAAA7kC,UAAA9iB,GAAA,KACA0f,QAAA,SAAA1f,GAAA4wB,KAAAqC,UAAAJ,EAAA7yB,IACAwtH,UAAA92G,EAAA82G,aAIA4Q,SAAA7jI,UAAA5H,EAAA,SAAAiX,GACA,MAAAja,MAAAi1B,OAAAjhB,KAAAiG,MCxwDAkY,OAAA,UAAA,SAAA,cAAA,OAAA,WACA,SAAAnvB,EAAAywB,EAAAwN,IAEA,SAAAj+B,GA0HA,QAAAuxI,GAAAr5G,EAAAmG,EAAAta,GACA,QAAAgmB,GAAAlwB,GACA,GAAAA,EACA,MAAA7Z,GAAAgzB,GAAA4U,MACAhhB,MAAA,qCAAA/M,IAIA,GAAAqZ,QAAAnP,OAEA,IAAA,MAAAA,EACAmU,EAAApX,OAAA9gB,EAAAgzB,GAAA6X,IAAAjkB,MAAA,iBACA,IAAA,kBAAA,GAAA,CACA,GAAAnqB,GACA8B,CAEA,IAAAwlB,EAAAimB,SACAvtC,EAAAuD,EAAAgzB,GAAAv2B,EAAAwhC,EAAA4L,QAAAG,SAAAjmB,EAAAimB,UACA3L,OACA,IAAAta,EAAAgmB,MACAttC,EAAAuD,EAAAgzB,GAAAv2B,EAAAstC,EAAAhmB,EAAAgmB,OAAA1L,OACA,KAAA9/B,EAAA8/B,EAAA7wB,QAAA,MAAA,EAAA,CACA,GAAAgkI,GAAAnzG,EAAAlL,OAAA50B,EACA9B,GAAAuD,EAAAgzB,GAAAv2B,GAAAmqB,MAAA,eACAyX,EAAAlL,OAAA,EAAA50B,GAAAwQ,OACA/O,EAAAgzB,GAAA4U,MAAAhhB,MAAA,iBAAA4qH,GACAxxI,EAAAgzB,GAAA4U,MAAAhhB,MAAA,eAAA4qH,QAEA/0I,GAAAuD,EAAAgzB,GAAAv2B,EAAA4hC,EAGAr+B,GAAAvD,GAAA4Q,KAAA,gBAAA0W,GACAA,EAAAlK,MACA7Z,EAAAvD,GAAAsX,KAAA,KAAAgQ,EAAAlK,MAEAqe,EAAApX,OAAA9gB,EAAAgzB,GAAA6X,GAAApuC,QAEA,IAAA,YAAAsnB,EAAAlmB,KAAA,CACA,GAAA0L,GAAAvJ,EAAAA,EAAAgzB,GAAAhd,OAAAnY,KAAA,aAEAq1B,UAAAnP,EAAA0tH,YACAloI,EAAAsd,SAAA,wBACA4J,EAAAO,OAAAjN,EAAA0tH,aACAloI,EAAAua,KAAA,WAAA,GACAva,EAAAmX,GAAA,QAAA,WACA+P,EAAAK,OAAA/M,EAAA0tH,WAAAzxI,EAAAhD,MAAA8mB,KAAA,cAEAva,EAAAmX,GAAA,aAAA,SAAAgxH,GACAA,EAAA73H,MAAAkK,EAAA0tH,YACAloI,EAAAua,KAAA,UAAA4tH,EAAAphI,WAGAyT,EAAA5e,SACAoE,EAAAua,KAAA,UAAAC,EAAA5e,SAEAoE,EAAAmX,GAAA,QAAA,WACAqD,EAAA0lB,OAAAzpC,EAAAhD,MAAA8mB,KAAA,eAGAoU,EAAApX,OAAA9gB,EAAAgzB,GAAA6X,IAAAjkB,MAAA,YACArd,EAAA,GACAvJ,EAAAgzB,GAAA4U,KAAAvJ,SACA,IAAA,WAAAta,EAAAlmB,KAAA,CACA,GAAA8zI,GAAA3xI,EAAAgzB,GAAAqX,IAAAzjB,MAAA,0BAQA,IANAsR,EAAApX,OAAA9gB,EAAAgzB,GAAA6X,GAAA7qC,EAAAgzB,GAAAv2B,GAAAmqB,MAAA,uBACAmjB,EAAAhmB,EAAAgmB,OACA1L,GACAszG,IACA5tH,EAAA0lB,QACAzpC,EAAA2xI,GAAAtkI,KAAA,gBAAA0W,EAAA0lB,QACA1lB,EAAA6tH,MACA,IAAA,GAAArzI,GAAA,EAAAA,EAAAwlB,EAAA6tH,MAAAj0I,OAAAY,IACAyB,EAAA2xI,GAAA7wH,OAAA9gB,EAAAgzB,GAAA6X,GAAA7qC,EAAAgzB,GAAAv2B,EAAAsnB,EAAA6tH,MAAArzI,KAGAwlB,GAAAojC,QACAnnD,EAAA2xI,GAAAjxH,GAAA,SAAA,SAAA2Q,GACAtN,EAAAojC,OAAA9oD,KAAAgzB,EAAAlc,cAIAib,OAAA,uBAKA,QAAAyhH,GAAAvrH,EAAAzM,GACA,MAAAyM,GAAAtV,KAAA,kBAAAtS,OAAA,WACA,MAAAsB,GAAAhD,MAAA+W,KAAA,SAAA8F,IAIA,QAAA6wB,GAAAjuC,EAAA40B,GACA,IAAArxB,EAAAvD,GAAAuqB,SAAA,WAEA,CACA,GAAAyiB,GAAAzpC,EAAAvD,GAAA4Q,KAAA,kBACArN,EAAAvD,GAAAsb,QAAA,MAAA1K,KAAA,gBAWA,OATAykI,GAAAzzI,KAAA5B,EAAA40B,GAEAoY,GACApY,EAAAjU,iBACAqsB,EAAAprC,KAAA5B,EAAA40B,IACArxB,EAAAvD,GAAAuqB,SAAA,YACA+qH,EAAA1zI,KAAA5B,EAAA40B,IAGA,EAdA0gH,EAAA1zI,KAAA5B,EAAA40B,GAwBA,QAAA0gH,GAAA1gH,GACA,GAAAokC,GAAAz1D,EAAAhD,MAAAyT,OACAuhI,EAAAhyI,EAAAhD,MAAA8Y,SAAAA,UAEA9V,EAAAhD,MAAAgqB,SAAA,eACAhnB,EAAAhD,MAAAgqB,SAAA,iBACAhnB,EAAAhD,MAAA+pB,YAAA,0BAEAirH,EAAAhhI,KAAA,eACA+D,IAAA/X,MACA+pB,YAAA,0BACAirH,EAAAhhI,KAAA,qBACA+D,IAAA0gD,GAAA36C,OAEA26C,EAAA33C,QAAA,UACA23C,EAAA16C,SACAsW,EAAAhU,kBAGA,QAAAy0H,GAAAzgH,GACA,GAAA/b,GAAAtV,EAAAhD,MAAA2a,QAAA,YAEArC,GAAAtE,KAAA,eAAA+V,YAAA,0BACAzR,EAAAtE,KAAA,qBAAA8J,OAvQA,GAAA4jB,GAAA,SAGAC,GAiBAC,MAAA,SAAA0L,GAEA,MAAAttC,MAAA6B,KAAA,WACA,GAAAwL,GAAArK,EAAAhD,KAGA,KAAA,GAAAC,KAAAqtC,GACAA,EAAA58B,eAAAzQ,KACAoN,EAAA4nI,OAAA,iBAAAh1I,GACAoN,EAAA4nI,OAAA,mBAAAh1I,EAAAqtC,EAAArtC,IAIAoN,GAAAqW,GAAA,QAAA,IAAA,SAAA2Q,GAAAqZ,EAAA1tC,KAAAq0B,QAOAkgH,eAAA,SAAAlzG,GACA,GAAA6zG,GAAAl1I,KAAAya,SAAA,2BACA06H,EAAAnyI,EAAAgzB,GAAAqX,IAAAxwB,KAAAwkB,EAAAzX,MAAA,kBACAikB,EAAA7qC,EAAAgzB,GAAA6X,IAAAjkB,MAAA,YACA5mB,EAAAgzB,GAAAv2B,GAAAmqB,MAAA,kBACA8iB,cAAA,YAEArL,EACAr+B,EAAAgzB,GAAAt2B,GAAAkqB,MAAA,WACAurH,EAIA,OAFAD,GAAApxH,OAAA+pB,GAEA7tC,MAUAo1I,iBAAA,SAAAv4H,EAAAywB,GACA,GAAA,kBAAA,GACAA,EAAAttC,KAAA6c,OACA,CACA,GAAAwwB,GAAAwnG,EAAA70I,KAAA6c,EAEA,KAAA,GAAA5c,KAAAqtC,GACAA,EAAA58B,eAAAzQ,IACAs0I,EAAAlnG,EAAAptC,EAAAqtC,EAAArtC,MASAo1I,cAAA,SAAAx4H,GACA,GAAAwwB,GAAAwnG,EAAA70I,KAAA6c,EAGA,OADAwwB,GAAA1kC,KAAA,IACA3I,MAWAs1I,eAAA,SAAAz4H,EAAAwkB,EAAAuM,GACA,GAAAP,GAAAwnG,EAAA70I,KAAA6c,EAEA03H,GAAAlnG,EAAAhM,EAAAuM,IA6LA5qC,GAAA2N,GAAAskI,OAAA,SAAAlnH,GACA,MAAA4T,GAAA5T,GACA4T,EAAA5T,GACAvrB,MAAAxC,KAAA+M,MAAAnC,UAAAnI,MAAApB,KAAA6F,UAAA,IACA,gBAAA6mB,IAAAA,MAGA/qB,GAAAoN,MAAA,UAAA2d,EAAA,6BAAA2T,GAFAC,EAAAC,MAAAp/B,MAAAxC,KAAAkH,aAKAorB,UAKA,SAAA6hE,GC9VA,gBAAAv0F,UAAA,gBAAAD,QACAw0F,EAAAnxD,QAAA,yBACA,kBAAA7Q,SAAAA,OAAAC,IACAD,OAAA,gCAAA,wBAAAgiE,GAEAA,EAAAl8B,aACA,SAAAA,GAIA,QAAAniC,GAAAlD,EAAAopB,GACA,MAAAppB,GAAAnwB,MAAA,EAAAu5C,EAAAr7C,QAAAoJ,eAAAiyC,EAAAjyC,cAGA,QAAAwrI,GAAAC,IAkBA,QAAAC,KACAz1I,KAAA01I,UACA11I,KAAA21I,qBACA31I,KAAA41I,UAAA,EAGA,QAAAC,GAAA3wE,GACA,MAAAA,GAAA4wE,eAAA5wE,EAAA4wE,eAAAn1I,OAAA,EAoBA,QAAAo1I,GAAA1lI,GACArQ,KAAA6c,KAAAxM,EAAAwM,KACA7c,KAAAorC,YAAA/6B,EAAA+6B,YACAprC,KAAAK,KAAAgQ,EAAAhQ,KACAgQ,EAAA2lI,eACAh2I,KAAAg2I,aAAA3lI,EAAA2lI,cAEA,MAAA3lI,EAAAgtB,SACAr9B,KAAA4d,OAAAvN,EAAAgtB,SACA,MAAAhtB,EAAAqoC,SACA14C,KAAAi2I,QAAA5lI,EAAAqoC,QA8BA,QAAAw9F,GAAA56H,GAKA,IAAA,GAJAo9B,MACAy9F,GAAA,EACA9kI,EAAA,KACA2qC,EAAA,GACAz6C,EAAA,EAAAA,EAAA+Z,EAAA3a,OAAAY,IAAA,CACA,GAAAk3D,GAAAn9C,EAAAmZ,OAAAlzB,EACA,IAAA,MAAAk3D,EACA,IAAAzc,GACAtD,EAAAnyC,KAAAy1C,GAEAA,EAAA,GACAtD,EAAAnyC,KAAAkyD,GACApnD,EAAA,SACA,CACA,GAAA+kI,IAAA,CACA,IAAAD,EACA,KAAA19E,IACA09E,GAAA,EACAC,GAAA,EACA,UAAAp6F,EACAtD,EAAAnyC,MACAu7C,QAAA,IAEA,kBAAA9F,EACAtD,EAAAnyC,MACA8vI,gBAAA,IAGA39F,EAAAnyC,MACA+vI,SAAAt6F,IAGAA,EAAA,QAGA,IAAA,KAAAyc,GAAAl3D,EAAA,GAAA+Z,EAAA3a,OAAA,CACAY,GACA,IAAAkS,GAAA6H,EAAAmZ,OAAAlzB,EACA,MAAAkS,IACA0iI,GAAA,EACAC,GAAA,EACA,IAAAp6F,GACAtD,EAAAnyC,KAAAy1C,GAEAA,EAAA,IAKAo6F,GAAA,KAAA/kI,GACA2qC,GAAAyc,EACApnD,EAAAonD,GAEApnD,EAAA,MAOA,MAHA,IAAA2qC,GACAtD,EAAAnyC,KAAAy1C,GAEAtD,EAIA,QAAA69F,GAAArxE,EAAAsxE,GACA,GAAAj0E,GAAA2C,EAAAylC,YAAA6rC,EAAApiH,KACA,IAAAmuC,EACA,IAAA,GAAAhhE,GAAA,EAAAA,EAAAghE,EAAA5hE,OAAAY,IAAA,CACA,GAAA8+D,GAAAkC,EAAAhhE,EACA,IAAA8+D,EAAAo2E,aACA,MAAAp2E,GAIA,MAAA,MASA,QAAAq2E,GAAAxxE,EAAAsxE,GACA,GAAArmI,GAAA+0D,EAAAyxE,cACA,IAAAH,EAAAlmG,QAAAngC,IAAAA,EAAAymI,SAGA,IACAzmI,EAAAymI,UAAA,CACA,IAAAC,GAAAN,EAAArxE,EAAAsxE,EACA,IAAA,MAAAK,EACAC,EAAA5xE,OAIA,KAAA,GAFA6xE,GAAAF,EAAA7iI,OACAgjI,EAAA9xE,EAAA85B,SAAA+3C,EAAA3iH,KAAA2iH,EAAAp9G,IACAp4B,EAAA,EAAAA,EAAA4O,EAAAulI,OAAA/0I,OAAAY,IAAA,CACA,GAAA8+D,GAAAlwD,EAAAulI,OAAAn0I,EACA,IAAA8+D,GAAAw2E,GACAx2E,EAAAo2E,cAAAI,EAAAJ,aAAA,CACA,GAAAxvH,GAAAo5C,EAAArsD,MACAkxD,GAAAyqB,aAAAqnD,EAAA/vH,EAAAmN,KAAAnN,EAAA0S,MAIA,QACAxpB,EAAAymI,UAAA,GAIA,QAAAK,GAAA/xE,GACAqwE,EAAA,WAAA,kBAAAM,EAAA3wE,IACA2wE,EAAA3wE,IACA4xE,EAAA5xE,GAAA,GAGA,QAAAgyE,GAAAhyE,EAAAiyE,GACA,GAAAhnI,GAAA+0D,EAAAyxE,cACA,IAAAxmI,EAAAwlI,kBAAAh1I,OAAA,EAAA,CAEA,GADAwP,EAAAylI,WACAzlI,EAAAylI,UAAAzlI,EAAAwlI,kBAAAh1I,OAAA,CAGA,GAAAw2I,EAEA,WADAC,GAAAlyE,EAGA/0D,GAAAylI,SAAA,EAEA,GAAAv1E,GAAAlwD,EAAAwlI,kBAAAxlI,EAAAylI,UACA3uH,EAAAo5C,EAAArsD,MACAkxD,GAAA0nB,aAAA3lE,EAAAmN,KAAAnN,EAAA0S,GAEA,KAAA,GAAAp4B,IADA8+D,EAAAo2E,aACA,GAAAl1I,EAAA4O,EAAAulI,OAAA/0I,OAAAY,IAAA,CACA,GAAAmE,GAAAyK,EAAAulI,OAAAn0I,EACAmE,IAAA26D,GACA36D,EAAAwQ,UAAA,GACAxQ,EAAAwpE,WAAA,GACAxpE,EAAAypE,SAAA,IAEAzpE,EAAA+wI,cAAAp2E,EAAAo2E,cACA/wI,EAAAwQ,UAAA,yCACAxQ,EAAAwpE,WAAA,GACAxpE,EAAAypE,SAAA,KAEAzpE,EAAAwQ,UAAA,gCACAxQ,EAAAwpE,WAAA,sCACAxpE,EAAAypE,SAAA,qCAIAjK,EAAArlC,cAGAu3G,GAAAlyE,GAOA,QAAAmyE,GAAAnyE,GAaA,QAAAoyE,GAAApiB,EAAAqiB,GACA,MAAAriB,GAAA93E,IAAAm6F,EAAAn6F,IAAA83E,EAAAliE,MAAAukF,EAAAvkF,KAbA,GAAA7iD,GAAA+0D,EAAAyxE,eACAt2E,EAAAlwD,EAAAwlI,kBAAAxlI,EAAAylI,UACAl7H,GAAAvK,MAAAA,EAEA+0D,GAAAsyE,sBACA98H,EAAA2lD,OAAA6E,EAAAsyE,qBAEAtyE,EAAA4wE,iBACA5wE,EAAA4wE,mBACA5wE,EAAA4wE,eAAAvvI,KAAAmU,SACAwqD,GAAAyxE,eAMAzxE,EAAAsyE,oBAAAn3E,CACA,IAAAp5C,GAAAo5C,EAAArsD,OACA2iG,EAAAzxC,EAAA0tB,gBACA,IAAA+jB,EAAAh2G,QACA22I,EAAA3gC,EAAA,GAAA1gD,OAAAhvC,EAAAmN,OACAkjH,EAAA3gC,EAAA,GAAAr2G,KAAA2mB,EAAA0S,KACAurC,EAAAyqB,aAAA,IAAA1oE,EAAAmN,KAAAnN,EAAA0S,IAGAs+B,EAAA69B,SAAAxpD,aAAA44B,GAmHA,QAAAkyE,GAAAlyE,GAEA,GAAApjB,GAAAojB,EAAAyxE,eAAA70F,MACA,IAAA,MAAAA,EAAA,CACA,GAAA21F,GAAA31F,EAAA9tC,MACA,OAAAyjI,GACAvyE,EAAA0nB,aAAA6qD,EAAAA,GAGAX,EAAA5xE,GAGA,QAAA4xE,GAAA5xE,EAAA5a,GAGA,QAAAotF,KACAnC,EAAA,WAAA,YAEA,KAAA,GAAAh0I,GAAA,EAAAA,EAAA4O,EAAAulI,OAAA/0I,OAAAY,IAAA,CACA,GAAAihE,GAAAryD,EAAAulI,OAAAn0I,EACA,IAAAihE,GAAA0C,EAAAsyE,oBAAA,CACA,GAAAvwH,GAAAu7C,EAAAxuD,MACAiT,IAAA,KAAAi+C,EAAA85B,SAAA/3E,EAAAmN,KAAAnN,EAAA0S,KACAurC,EAAAyqB,aAAAntB,EAAAi0E,aAAAxvH,EAAAmN,KAAAnN,EAAA0S,MAVA,GAAAxpB,GAAA+0D,EAAAyxE,cAeA,IAAAxmI,EAAA,CACAolI,EAAA,WAAA,wBAAAplI,EAAAulI,OAAA/0I,OACA,KAAA,GAAAY,GAAA,EAAAA,EAAA4O,EAAAulI,OAAA/0I,OAAAY,IACA4O,EAAAulI,OAAAn0I,GAAAy+B,OAEA,OAAA7vB,EAAA2xC,QACA3xC,EAAA2xC,OAAA9hB,QAEA7vB,EAAAulI,OAAA/0I,OAAA,EACAwP,EAAAwlI,kBAAAh1I,OAAA,MAEA40I,GAAA,WAAA,sBAGA,IAAArwE,EAAA4wE,gBAAA5wE,EAAA4wE,eAAAn1I,OAAA,EAAA,CACA40I,EAAA,WAAA,qBAAArwE,EAAA4wE,eAAAn1I,OACA,IAAA+Z,GAAAwqD,EAAA4wE,eAAAxhI,KACAnE,GAAA+0D,EAAAyxE,eAAAj8H,EAAAvK,MACAm6C,GAAA4a,EAAAsyE,qBACAE,IACAh9H,EAAA2lD,OACA6E,EAAAsyE,oBAAA98H,EAAA2lD,aAEA6E,GAAAsyE,wBAGAjC,GAAA,WAAA,yBACArwE,EAAAj+D,IAAA,SAAAyvI,GACAxxE,EAAAj+D,IAAA,gBAAAgwI,GACA/xE,EAAAkyC,aAAAugC,SACAzyE,GAAAyxE,qBACAzxE,GAAAsyE,oBAtcA,GAAAI,MACAx4E,EAAAnH,EAAAmH,GAUAnH,GAAA4/E,gBAOA,IAAAF,IACAvoC,IAAA8nC,EACA5nC,MAAA,SAAApqC,GAAAgyE,EAAAhyE,GAAA,IACAsqC,IAAAsnC,EACAgB,aAAAT,EA4CAtB,GAAAnrI,UAAA8tC,OAAA,WAIA,MAHA,OAAA14C,KAAAi2I,UACAj2I,KAAAi2I,QAAAC,EAAAl2I,KAAA4d,SAEA5d,KAAAi2I,SAGAF,EAAAnrI,UAAA0Q,QAAA,WACA,GAAA,MAAAtb,KAAA+3I,SAAA,CAGA,IAAA,GAFAr/F,GAAA14C,KAAA04C,SACAp9B,EAAA,GACA/Z,EAAA,EAAAA,EAAAm3C,EAAA/3C,OAAAY,IAAA,CACA,GAAAy6C,GAAAtD,EAAAn3C,EACA,iBAAAy6C,GACA1gC,GAAA0gC,EACAA,EAAAs6F,WACAh7H,GAAA0gC,EAAAs6F,UAKAt2I,KAAA+3I,SAAAz8H,EAEA,MAAAtb,MAAA+3I,UAkMAhC,EAAAnrI,UAAAo+E,OAAA,SAAA9jB,EAAA70D,GA8DA,QAAA2nI,GAAAC,GACA,GAAA56G,EAAA24G,cAAA34G,EAAA24G,aAAAiC,GACA,MAAA56G,GAAA24G,aAAAiC,GA/DA,GAAA56G,GAAAr9B,KACAk4I,EAAArC,EAAA3wE,EAQA,IANAqwE,EAAA,WAAA,iBAAA2C,EAAA,WAAA76G,IACA6nC,EAAAyxE,gBAAAuB,KACA3C,EAAA,WAAA,0BAAA2C,GACApB,EAAA5xE,IAGA7nC,EAAAh9B,KAEA,WADA6kE,GAAAyqB,aAAAtyD,EAAAh9B,KAAAgQ,EAAA+jB,KAAA/jB,EAAAspB,GAIA,IAAAxpB,GAAA,GAAAslI,EACAvwE,GAAAyxE,eAAAxmI,CASA,KAAA,GAPAuoC,GAAA14C,KAAA04C,SACAp9B,EAAA,GACA03C,EAAA3iD,EAAA+jB,KAAA4+B,KACA90C,EAAA7N,EAAA+jB,KAAAgpB,GACAmlB,KACAu8C,KACAh9D,EAAA,KACAvgD,EAAA,EAAAA,EAAAm3C,EAAA/3C,OAAAY,IAAA,CACA,GAAAy6C,GAAAtD,EAAAn3C,EACA,IAAA,gBAAAy6C,GACA1gC,GAAA0gC,EACA,MAAAA,GACAgX,IACA90C,EAAA,GAEAA,GAAA89B,EAAAr7C,WAEA,IAAAq7C,EAAAs6F,SAAA,CACAh7H,GAAA0gC,EAAAs6F,QACA,IAAAliH,GAAAgrC,EAAApM,EAAA90C,GACAyb,EAAAylC,EAAApM,EAAA90C,EACA89B,EAAAs6F,SAAA31I,QACAkhD,EAAA,GAAAi9D,EAAA9iE,EAAAs6F,SACAp4H,IAAA89B,EAAAs6F,SAAA31I,OACA4hE,EAAAh8D,MACA6tB,KAAAA,EACAuF,GAAAA,EACA28G,SAAAt6F,EAAAs6F,SACAz0F,WAAAA,IAEAi9D,EAAA9iE,EAAAs6F,WAAA,MACAt6F,GAAA8F,SACAA,EAAAsd,EAAApM,EAAA90C,IAMA,GAAAkW,GAAA/jB,EAAA+jB,KACAuF,EAAAtpB,EAAAspB,GACAw+G,EAAA/jH,EAAA4+B,IACAkS,GAAAyqB,aAAAr0E,EAAA8Y,EAAAuF,EAEA,KAAA,GAAAp4B,GAAA,EAAAA,EAAAghE,EAAA5hE,OAAAY,IAAA,CAOA,GAAA8+D,GAAAkC,EAAAhhE,GAAA6yB,EAAAisC,EAAAjsC,KAAAuF,EAAA0mC,EAAA1mC,GACA82D,EAAAvrB,EAAAurB,SAAAr8D,EAAAuF,GACAzjB,UAAA,gCACAg5D,WAAA,sCACAC,SAAA,oCACAlO,eAAA,EACAG,gBAAA,EACAiB,gBAAA,EACAo0E,aAAAp2E,EAAAi2E,SACA8B,WAAAJ,EAAA33E,EAAAi2E,WAEAnmI,GAAAulI,OAAAnvI,KAAAkqF,GACA,GAAApwB,EAAAxe,YACA1xC,EAAAwlI,kBAAApvI,KAAAkqF,GAIA,MAAA3uC,IACA3xC,EAAA2xC,OAAAojB,EAAAulC,YAAA3oD,GASA,KAAA,GADAuZ,GAAA//C,EAAApL,MAAA,MACAmC,EAAA,EAAAA,EAAAgpD,EAAA16D,OAAA0R,IAAA,CACA,GAAAgmI,GAAAF,EAAA9lI,CACA6yD,GAAA43B,WAAAu7C,GAKAH,IACAhzE,EAAAxhD,GAAA,SAAAgzH,GACAnB,EAAA,WAAA,4BACArwE,EAAAxhD,GAAA,gBAAAuzH,GACA/xE,EAAAiyC,UAAAwgC,IAGAT,EAAAhyE,GAAA,IAkEAjN,EAAA4/E,cAAAS,eAAA,SAAApzE,EAAAqzE,EAAAl4I,GACA,GAAAoyD,GAAAyS,EAAA52B,IAAAmkB,KAAA51C,KACAivB,EAAA8rG,EAAAnlF,EACA,IAAA3mB,EACA,IAAA,GAAAvqC,GAAA,EAAAA,EAAAuqC,EAAAnrC,OAAAY,IAAA,CACA,GAAA87B,GAAAyO,EAAAvqC,EACA,IAAAu0B,EAAAuH,EAAAxgB,KAAAxc,GAAA,CACA,GAAAghC,GAAAhE,EAAAxgB,IACAwgB,GAAA+N,cACA/J,GAAA,KAAAhE,EAAA+N,YAEA,IAAAl1B,GAAA,0BACAmnB,GAAAnnB,YACAA,EAAAmnB,EAAAnnB,UACA,IAAAsiI,IACAtiI,UAAAA,EACA7V,KAAAghC,EACAhE,SAAAA,EAEAm7G,GAAAnoI,KAAAmoI,EACAA,EAAAp3F,KAAA,SAAA8jB,EAAA70D,EAAAmoI,GACAA,EAAAn7G,SAAA2rD,OAAA9jB,EAAA70D,IAEAmoI,EAAA5iG,KAAA,SAAA4iG,GACA,GAAAl9H,GAAAk9H,EAAAn7G,SAAA/hB,SAEA,IAAA28C,EAAA8S,QAAA,CACA,GAAA5qD,GAAAtgB,SAAAO,cAAA,MAKA,OAJA+f,GAAAjK,UAAA,eACAgvD,EAAAn+C,SAAAm+C,EAAAn+C,QAAAkzE,QACA95E,EAAAjK,UAAA,QAAAgvD,EAAAn+C,QAAAkzE,OACAhiC,EAAA8S,QAAAzvD,EAAA4pD,EAAAyE,UAAA9sD,KAAAsD,GACAA,EAEA,MAAA7E,IAEAi9H,EAAAhyI,KAAAiyI,MAMAvgF,EAAA4/E,cAAA9B,SAAAA,EAEA99E,EAAA4/E,cAAAY,aAAA,SAAAnwF,GACA,GAAAp7B,GAAAo7B,EAAAp7B,OACA,IAAAA,EAAA,CACA,GAAA4e,GAAA8rG,EAAA1qH,EACA4e,KACAA,KACA8rG,EAAA1qH,GAAA4e,GAEAwc,EAAAA,UAAAowF,QAAA,SAAAr7G,GACAyO,EAAAvlC,KAAA,GAAAwvI,GAAA14G,UCtgBA,SAAA82D,GACA,gBAAAv0F,UAAA,gBAAAD,QACAw0F,EAAAnxD,QAAA,yBACA,kBAAA7Q,SAAAA,OAAAC,IACAD,OAAA,uCAAA,uBACA,kCACA,SAAA,SAAA,WACAgiE,GAEAA,EAAAl8B,aACA,SAAAA,EAAA0gF,EAAA31I,EAAAgwB,GACA,YAIA,SAAA4lH,GAAA7xH,GAGA,QAAA8xH,GAAApmF,GACA,GAAAqmF,GAAA,kCACAC,EAAA,yCAYA,IAVA33F,EAAA/jB,WACA+jB,EAAA/jB,SAAAo1B,EAAApvD,QAAAy1I,EAAA,UACAz1I,QAAA01I,EAAA,IACA33F,EAAA/jB,SAAAv7B,MAAA,gBACAs/C,EAAA/jB,UAAA,cAGA+jB,EAAAguB,cACAhuB,EAAAguB,YAAA3c,IAEArR,EAAA40F,aAAA,CACA,GAAAgD,GAAAvmF,EAAA3wD,MAAA,uBAEA,IAAAk3I,GAAAA,EAAAr4I,OAAA,EAAA,CAGA,IAAA,GAFAs4I,MAEA13I,EAAA,EAAAA,EAAAy3I,EAAAr4I,OAAAY,IACA03I,EAAAD,EAAAz3I,GAAAizB,UAAA,IAAA8zB,CAEAlH,GAAA40F,aAAAiD,IAzBA,GAAA73F,GAAAphD,KA8BA8sE,GAAA,WACA,cACA,QACA14C,KAAA,UAAAuF,GAAA,eACA,YACA,eAGA,IAAA,gBAAA,GACA35B,KAAAovE,YAAAroD,EACA/mB,KAAAK,KAAA0mB,MACA,CACA,IAAA,GAAAxlB,GAAA,EAAAA,EAAAurE,EAAAnsE,OAAAY,IAAA,CACA,GAAAioE,GAAAsD,EAAAvrE,EACA,iBAAA,GACAwlB,EAAAyiD,KACAxpE,KAAAwpE,GAAAziD,EAAAyiD,IAEAziD,EAAAyiD,EAAAp1C,QACAp0B,KAAAwpE,EAAA7vC,IAAA5S,EAAAyiD,EAAAp1C,OAIArN,EAAA0rC,MACAomF,EAAA9xH,EAAA0rC,MAEA1rC,EAAA+5B,UACA/5B,EAAA7Q,UAAA6Q,EAAA+5B,QAAAlyC,KAAA,MAWA5O,KAAAkiD,OAAA,SAAArU,EAAAx9B,EAAAy3F,GACA9kG,EAAA6qC,GAAA/pB,OAAAgkF,EAAA14B,cAOApvE,KAAA41C,KAAA,SAAAkyD,GACA,MAAAA,GAAA18D,aASA,QAAA8tG,GAAAh0E,EAAA/0D,EAAA4W,GAKA,QAAA+O,GAAAlD,EAAAruB,GACA,MAAAquB,GAAAnwB,MAAA,EAAA8B,EAAA5D,SAAA4D,EALA,GAAAlE,GAAA8P,EAAA6rC,MAAA+X,OACA2mE,KACAye,EAAA7wF,CAMA4c,GAAAsyE,sBACA,KAAAn3I,IACAA,EAAA,IACA84I,EAAAj0E,EAAAsyE,oBAAAY,WAGA,IAAAgB,GAAA/4I,EAAAM,OAAA,IAAAN,EAAAyB,MAAA,KAEA,IAAAq3I,EACA,IAAA,GAAA53I,GAAA,EAAAA,EAAA43I,EAAAx4I,OAAAY,IAAA,CACA,GAAAgxD,GAAA4mF,EAAA53I,EACA,IAAA,gBAAA,GACAu0B,EAAAy8B,EAAAlyD,IACAq6H,EAAAn0H,KAAA,GAAAqyI,GAAArmF,QACA,CACA,GAAAloB,IAAA,OAAA,OAAA,WAAA,OAEA,IAAA+uG,EACA7mF,EAAA11C,MAAA01C,EAAA11C,KAAArM,QAAAnQ,IAAA,GACAq6H,EAAAn0H,KAAA,GAAAqyI,GAAArmF,QAEA,KAAA,GAAAvuD,GAAA,EAAAA,EAAAqmC,EAAA1pC,OAAAqD,IACA,GAAAuuD,EAAAloB,EAAArmC,IACA,CAAA8xB,EAAAy8B,EAAAloB,EAAArmC,IAAA3D,IACAq6H,EAAAn0H,KAAA,GAAAqyI,GAAArmF,GAEA,SAQA,GAAA,GAAAmoE,EAAA/5H,OAKA,IAAA,GAJA04I,GAAAphF,EAAA7W,KAAAi4F,QACAxrI,EAAA,IAAAxN,GAAA6kE,EAAAsyE,qBACA/9C,KAAA,sBAAA1yE,EACAuyH,EAAAD,EAAAn0E,EAAAr3D,GACAtM,EAAA,EAAAA,EAAA+3I,EAAAxtG,KAAAnrC,OAAAY,IACAm5H,EAAAn0H,KAAA,GAAAqyI,GAAAU,EAAAxtG,KAAAvqC,IAGA,QAAAuqC,KAAA4uF,EACAtmG,KAAAjkB,EAAAkV,SAAA+O,KACAuF,GAAAxpB,EAAAkV,SAAAsU,IAIA,QAAA4/G,GAAAr0E,EAAAs0E,EAAAzyH,GACA,GAAA5W,GAAAwwB,EAAAukC,GAEA70D,EAAA6oI,EAAAh0E,EAAA/0D,EAAA4W,EACAkxC,GAAAwhF,kBAAAppI,GACAmpI,EAAAnpI,GAIA,QAAAswB,GAAAukC,GACA,GAAAphE,GAAAohE,EAAAkd,YACApmC,EAAAkpB,EAAAuyC,WAAA3zG,GAEA4oE,EAAAzU,EAAAsS,UAAArF,EAAAyE,UAAA3tB,EAAA7rC,MACA,IAAA,UAAAu8D,EAAAja,KAAA51C,KACA,MAAA,KAGA,IAAA68H,IACAtlH,KAAA,GAAA6jC,GAAAmH,IAAAt7D,EAAAkvD,KAAAhX,EAAAz3C,OACAo1B,GAAA,GAAAs+B,GAAAmH,IAAAt7D,EAAAkvD,KAAAhX,EAAAx3C,KAGA,QAAAw3C,MAAAA,EACA32B,SAAAq0H,GA3KA,GAAApxF,GAAAt1B,EAAAN,MAAA41B,aAiLA,OA7FAswF,GAAAhuI,UAAAw2C,KAAA,SAAA8jB,EAAA70D,EAAAmoI,GACA,GAAAn7G,GAAA,GAAA46B,GAAA4/E,cAAA9B,SAAA/1I,KACAq9B,GAAA2rD,OAAA9jB,EAAA70D,IAoEAkpI,EAAA9sH,OAAA,EAqBAwrC,EAAAihD,eAAA,OAAA,iBAAAqgC,IAGAA,SAAAA,EACA54G,SAAAA,KC9LA,SAAAwzD,GACA,gBAAAv0F,UAAA,gBAAAD,QACAw0F,EAAAnxD,QAAA,yBACA,kBAAA7Q,SAAAA,OAAAC,IACAD,OAAA,yBAAA,wBAAAgiE,GAEAA,EAAAl8B,aACA,SAAAA,GACA,YAEAA,GAAAkR,WAAA,SAAA,SAAAwwE,EAAAC,GAEA,QAAAC,GAAAztE,EAAAj8D,EAAAxM,GAEA,MADAwM,GAAA4J,SAAApW,EACAA,EAAAyoE,EAAAj8D,GAiCA,QAAA2pI,GAAA1tE,EAAAvZ,EAAA/e,GACA,GAAAA,EAAA,GACA,KAAAA,KAAA,GACA,IAAA+e,EAAApxD,KAAA2qE,EAAA34D,QACA,OAAA,MAGA,MAAAo/C,EAAApxD,KAAA2qE,EAAA+4B,SACA/4B,EAAA34D,MAEA,QAAA,EAGA,QAAAsmI,GAAA3tE,GACA,GAAA34D,GAAA24D,EAAA34D,MACA,IAAAumI,EAAAv4I,KAAAgS,GACA,OAAA,CACA,QAAAA,GACA,IAAA,IACA,QAAAuf,EAAAinH,eACAH,EAAA1tE,EAAA8tE,EAAA,EAEA,KAAA,IACA,QAAAlnH,EAAAinH,eACAH,EAAA1tE,EAAA8tE,EAAA,EAEA,KAAA,MAAA,OAAA,CACA,KAAA,IAAA,MAAA9tE,GAAAk5B,YAAA,CACA,KAAA,IAAA,MAAAw0C,GAAA1tE,EAAA8tE,EAAA,GAEA,QAAAC,EAAA14I,KAAAgS,OACAqmI,EAAA1tE,EAAA+tE,GAAA,KAEA,MAAA/tE,EAAA+4B,QACA/4B,EAAA34D,QACA,IAKA,QAAA2mI,GAAAhuE,EAAAj8D,EAAA3L,GAEA,IADA,GAAAiP,GACA,OAAAA,EAAA24D,EAAA34D,SAAA,CACA,GAAAA,GAAAjP,GAAAA,GAAA4nE,EAAA+4B,OAEA,MADAh1F,GAAAkqI,QAAA/lI,OACA,CAEA,IAAA,MAAAb,IACAsmI,EAAA3tE,GACA,OAAA,EAGA,MAAAp5C,GAAAsnH,gBAOA,QAAAD,GAAAlqI,GACA,MAAAA,GAAAkqI,QAAA53I,OAAA,GAAA,GAIA,QAAA83I,GAAApqI,GACA,GAAA8+H,GAAAoL,EAAAlqI,EACA8+H,GACA,GAAAA,EAAAh5G,IACAg5G,EAAAh5G,IAAA,EACA,WAAAg5G,EAAApuI,OACAsP,EAAAqqI,WAAA,GAEArqI,EAAAqqI,WAAA,EAGA,QAAAC,GAAAtqI,GACA,GAAA8+H,GAAAoL,EAAAlqI,EACA8+H,KAAAA,EAAAyL,WAAAxkH,QAAA+4G,EAAAh5G,MACA,GAAAg5G,EAAAh5G,IACAg5G,EAAAyL,UAAAzL,EAAA0L,QAAA1L,EAAA0L,QAAA,EAAA1L,EAAAvpC,OAAA,EAEAupC,EAAAyL,UAAAzL,EAAAvpC,OAAA,GAIA,QAAAk1C,GAAAzqI,GACA,GAAA8+H,GAAAoL,EAAAlqI,EACA8+H,GACAA,EAAAh5G,IACAg5G,EAAAh5G,MACA,WAAAg5G,EAAApuI,OACAsP,EAAAqqI,WAAA,GAEArqI,EAAAqqI,WAAA,EAGA,QAAAK,GAAA1qI,GACA,GAAA8+H,GAAAoL,EAAAlqI,EACA,OAAA8+H,GACA,WAAAA,EAAApuI,KAKAsP,EAAA2qI,OAMA,QAAA3pF,GAAA4pF,EAAA12I,EAAA22I,GAEA,MADAn6I,GAAAk6I,EAAAz/H,EAAA0/H,EACA32I,EAGA,QAAA42I,GAAA7uE,GACA,SAAAA,EAAAG,QACA,QAAA9qE,KAAA2qE,EAAA+4B,SAUA,QAAA+1C,GAAA9uE,EAAAj8D,GACA,GAAAitC,GAAAgvB,EAAA34D,MAEA,IAAA,KAAA2pC,EAeA,MAdA,WAAAjtC,EAAAgrI,UACAhrI,EAAAkqI,QAAA9zI,MAAA60I,QAAAjrI,EAAAkrI,YACA31C,OAAAt5B,EAAAs5B,SACAi1C,QAAAxqI,EAAAmrI,cACArlH,IAAA,UAEA9lB,GAAAkrI,kBACAlrI,GAAAmrI,eAEAnrI,EAAAkqI,QAAA9zI,MAAA1F,KAAA,UACA06I,YAAAnvE,EAAAs5B,SACAg1C,UAAAtuE,EAAAs5B,SAAA,IAGAv0C,EAAA,OAAA,KAAA,IAGA,IAAA,KAAA/T,GAAA,OAAAjtC,EAAAgrI,SAQA,MAPAhrI,GAAAkqI,QAAA9zI,MAAAi/B,IAAAr1B,EAAAqoB,QACAktE,OAAAt5B,EAAAs5B,SACAi1C,QAAAxqI,EAAAqrI,UACAvlH,IAAA,UAEA9lB,GAAAqoB,cACAroB,GAAAqrI,UACArqF,EAAA,YAAA,KAGA,IAAA,KAAA/T,GAAAgvB,EAAAg5B,IAAA,KACA,MAAAy0C,GAAAztE,EAAAj8D,EAAAsrI,EAEA,IAAA,KAAAr+F,EAEA,MADAgvB,GAAAm5B,YACAp0C,EAAA,UAAA,UAKA,IAFAopF,EAAApqI,GAEAurI,EAAAj6I,KAAA27C,GAAA,CACA,OAAAA,GACA,IAAA,IACAjtC,EAAAkqI,QAAA/lI,KACA,MACA,KAAA,IAEA,MADAnE,GAAAkqI,QAAA/lI,MACA68C,EAAA,aAAA,KAAA,IACA,KAAA,IACA,GAAA89E,GAAAoL,EAAAlqI,GACAtP,EAAAouI,GAAAA,EAAAzpG,IAAA,aAAA,kBAGA,OADAr1B,GAAAkqI,QAAA/lI,MACA68C,EAAAtwD,EAAA,KAEA,KAAA,IACAurE,EAAAG,QACAp8D,EAAAwrI,YAAA,GACAf,EAAAzqI,EAEA,KAAA,IACA0qI,EAAA1qI,KACAA,EAAAqqI,WAAA,EACA,MACA,KAAA,IAKA,MAJArqI,GAAAkqI,QAAA9zI,MAAA1F,KAAA,OACA06I,YAAAnvE,EAAAs5B,SACAg1C,UAAAtuE,EAAAs5B,SAAA,IAEAv0C,EAAA,YAAA,KAAA,IAEA,KAAA,IACA,MAAAn+B,GAAA4oH,iBAAAxvE,EAAAg5B,IAAA,MACAj1F,EAAAkqI,QAAA9zI,MAAA1F,KAAA,kBACA65I,UAAAtuE,EAAAs5B,SAAA,IAEAv0C,EAAA,UAAA,aAEAhhD,EAAAkqI,QAAA9zI,MAAA1F,KAAA,QACA06I,YAAAnvE,EAAAs5B,SACAg1C,UAAAtuE,EAAAs5B,SAAA,IAEAv0C,EAAA,kBAAA,MAGA,KAAA,IACA,GAAAn+B,EAAA4oH,gBAAA,CACA,GAAAxvE,EAAAg5B,IAAA,KAEA,MADAj1F,GAAA4J,SAAA8hI,EACA1qF,EAAA,SAAA,SACA,IAAAib,EAAAg5B,IAAA,KAEA,MADAj1F,GAAAkqI,QAAA/lI,MACA68C,EAAA,WAAA,YAGA0pF,EAAA1qI,KACAA,EAAAqqI,WAAA,GAGA,MAAArpF,GAAA,OAAA,KAAA/T,GAGA,GAAA,KAAAA,GAAA,KAAAA,GAAA,KAAAA,EAIA,MAHAjtC,GAAAkqI,QAAA9zI,MAAA1F,KAAA,SACA65I,UAAAtuE,EAAAs5B,SAAA,IAEAm0C,EAAAztE,EAAAj8D,EAAA2rI,EAAA1+F,GAGA,IAAA,KAAAA,EAAA,CACA,GAAAgvB,EAAAg5B,IAAA,MAEA,MADAh5B,GAAAi5B,SAAA,YACAl0C,EAAA,SAAA,SAEA,IAAAib,EAAAg5B,IAAA,MAEA,MADAh5B,GAAAi5B,SAAA,UACAl0C,EAAA,SAAA,SAEA,IAAAib,EAAAg5B,IAAA,KAAA,CACA,GAAA3xF,GAAA24D,EAAA34D,MACA,OAAA,MAAAA,GACAsmI,EAAA3tE,GAGAjb,EAAA,OAAA,QAFAA,EAAA,QAAA,UAMA,GAAA,KAAA1vD,KAAA27C,IAAA,OAAA37C,KAAA27C,IAAAgvB,EAAAg5B,IAAA,MAKA,MAJApyE,GAAA+oH,gBACA3vE,EAAAtqE,MAAA,iDAEAsqE,EAAAtqE,MAAA,oCACAqvD,EAAA,KAAA/T,EAAA,aACA,KAAAA,EAAA,aACA,SAGA,IAAA4+F,EAAAv6I,KAAA27C,GAAA,CACAgvB,EAAAi5B,SAAA22C,EACA,IAAAC,GAAA7vE,EAAA3T,SACA,OAAA,KAAAwjF,GAAAhB,EAAA7uE,GACAiuE,EAAAlqI,GACAghD,EAAA,WAAA,QAAA8qF,GAEA9qF,EAAA,WAAA,WAAA8qF,GACAC,EAAAz6I,KAAAw6I,GACA9qF,EAAA,OAAA,OAAA8qF,GACApB,EAAA1qI,IAAAgsI,EAAA16I,KAAAw6I,IACA9rI,EAAAqqI,WAAA,EACArpF,EAAA,SAAA,WAAA8qF,IAEA9qF,EAAA,SAAA,WAAA8qF,GAGA7vE,EAAAi5B,SAAA,QACA,IAAA5L,GAAArtB,EAAA3T,SACA,IAAA,KAAA2T,EAAA+4B,QAAAnyE,EAAAopH,MAGA,MAFAjsI,GAAAqoB,QAAAihE,EACAtpF,EAAAqrI,UAAApvE,EAAAs5B,SACAv0C,EAAA,MAAA,MAAAsoC,EACA,IAAA,KAAAr8C,EAAA,CACA,GAAA,GAAAq8C,EAAA94F,OACA,MAAAwwD,GAAA,MAAA,OAAAsoC,EAEA,IAAA4iD,GAAA5iD,EAAAhlE,OAAA,EACA,OAAA4nH,IAAAA,EAAAtyI,cACAonD,EAAA,MAAA,QAAAsoC,GAEAtoC,EAAA,MAAA,MAAAsoC,GACA,MAAAr8C,IAAAA,EAAArzC,cACAonD,EAAA,MAAA,MAAAsoC,GACA,KAAArtB,EAAA+4B,QACAh1F,EAAAkrI,YAAA5hD,EACAtpF,EAAAmrI,cAAAlvE,EAAAs5B,SACAv0C,EAAA,UAAA,UAAAsoC,IAEAtoC,EAAA,OAAA,OAAAsoC,GAGA,QAAAqiD,GAAAQ,GACA,MAAA,UAAAlwE,EAAAj8D,GACA,IAAAiqI,EAAAhuE,EAAAj8D,EAAAmsI,GAAA,CAEA,GADAnsI,EAAA4J,SAAAmhI,EACA,KAAA9uE,EAAA+4B,OAAA,CACA,GAAA1L,GAAArtB,EAAA3T,SAEA,OADAtoD,GAAAkrI,YAAA5hD,EACAtoC,EAAA,UAAA,UAAAsoC,GAEA,GAAA,KAAArtB,EAAA+4B,QAAAnyE,EAAAopH,MAAA,CACA,GAAA3iD,GAAArtB,EAAA3T,SAEA,OADAtoD,GAAAqoB,QAAAihE,EACAtoC,EAAA,MAAA,MAAAsoC,IAGA,MAAAtoC,GAAAorF,EAAAD,GAAAC,EAAAD,KAIA,QAAAT,GAAAzvE,EAAAj8D,GAEA,IADA,GAAAitC,GAAAo/F,GAAA,EACAp/F,EAAAgvB,EAAA34D,QAAA,CACA,GAAA,KAAA2pC,GAAAo/F,EAAA,CACArsI,EAAA4J,SAAAmhI,EACA9uE,EAAAq5B,OAAA,EACA,OAEA+2C,EAAA,KAAAp/F,EAEA,MAAA+T,GAAA,aAAA,cAGA,QAAAsqF,GAAArvE,EAAAj8D,GAEA,IADA,GAAAitC,GAAAo/F,GAAA,EACAp/F,EAAAgvB,EAAA34D,QAAA,CACA,GAAA,KAAA2pC,GAAAo/F,EAAA,CACArsI,EAAA4J,SAAAmhI,CACA,OAEAsB,EAAA,KAAAp/F,EAEA,MAAA+T,GAAA,UAAA,WAxXA,GAuIAtwD,GAAAya,EAvIA0X,GAAA4oH,iBAAA,EACAQ,OAAA,EACAnC,eAAA,EACAK,iBAAA,EACAyB,iBAAA,GAGAQ,GAAAE,IAAA,SACAC,IAAA,QACAC,IAAA,YAGA3C,EAAA,mBACAG,EAAA,QACAD,EAAA,cAEA8B,EAAA,wBACAN,EAAA,gBACAQ,EAAA,aACAC,EAAA,wBA6WA,QACA3xE,WAAA,WACA,OACAzwD,SAAAmhI,EACAJ,QAAA,EACAN,WAAA,EACAW,SAAA,KACAd,QAAA,GAAAttI,OACA6vI,QAAA,KACAC,SAAA,OAIA7gG,MAAA,SAAAowB,EAAAj8D,GAWA,GARA,MAAAA,EAAAysI,SAAAhD,EAAAkD,WACA3sI,EAAAysI,QAAA,EACAzsI,EAAA0sI,SAAA,GAGAzwE,EAAA84B,aACA/0F,GAAAwrI,WAEAxrI,EAAA4J,UAAAmhI,GAAA9uE,EAAAk5B,WAGA,MAFAl5B,GAAAG,OACAkuE,EAAAtqI,GACA,IAGA,IAAA9L,GAAA8L,EAAA4J,SAAAqyD,EAAAj8D,EAkBA,OAhBAi8D,GAAAG,OACAkuE,EAAAtqI,GAEA,QAAAtP,GACAsP,EAAA2qI,QAAA,EACA3qI,EAAAqqI,WAAA,GACA,YAAA35I,IACAsP,EAAA2qI,QAAA,EACA3qI,EAAAqqI,WAAA,GAGArqI,EAAAgrI,SAAAt6I,EAEA,kBAAA+4I,GAAA,SACAv1I,EAAAu1I,EAAAmD,OAAA3wE,EAAAj8D,EAAAtP,EAAAya,EAAAjX,IAEAA,GAGA44F,OAAA,SAAA9sF,EAAA6sI,GACA,GAAA7sI,EAAA4J,UAAA0hI,EAAA,MAAAxjF,GAAAg+B,IAEA,IAAAg5C,EACA,QAAAA,EAAAoL,EAAAlqI,IACA8+H,EAAAsM,cAAAprI,EAAAwrI,WACA1M,EAAAsM,YACAtM,EAAAyL,UAEAvqI,EAAA2qI,OAGA,EAFA,GAKA7gD,MAAA,SAEAgjD,kBAAA,KACAC,gBAAA,KACAC,qBAAA,MACAC,YAAA,OAIAnlF,EAAAqR,WAAA,gBAAA,YCheA,SAAA6qB,GACA,gBAAAv0F,UAAA,gBAAAD,QACAw0F,EAAAnxD,QAAA,yBACA,kBAAA7Q,SAAAA,OAAAC,IACAD,OAAA,8BAAA,wBAAAgiE,GAEAA,EAAAl8B,aACA,SAAAA,GACA,YAkBAA,GAAA69B,SAAAunD,sBAAA,SAAAn4E,GACA,GAAA3gE,GAAA2gE,EAAAkd,UAAA,SACApmC,EAAAkpB,EAAAuyC,WAAAlzG,GAAA,EAEA,OAAA,IAAAy3C,EAAA7rC,MAAAqqI,cACAt1E,GAAA2tB,iBAAA,OAAA,OAIA56B,EAAAg+B,MAGAh+B,EAAA69B,SAAAwnD,gBAAA,SAAAp4E,GAOA,QAAAm1E,GAAAlqI,GACA,GAAA4pC,GAAA5pC,EAAAkqI,QAAA15I,MACA,OAAAo5C,GAAA,EACA5pC,EAAAkqI,QAAAtgG,EAAA,GACA,KAGA,QAAA8gG,GAAA1qI,GACA,GAAA8+H,GAAAoL,EAAAlqI,EACA,OAAA8+H,GACA,WAAAA,EAAApuI,KAKAsP,EAAA2qI,OArBA,GAAAv2I,GAAA2gE,EAAAkd,UAAA,SACApmC,EAAAkpB,EAAAuyC,WAAAlzG,GAAA,EAuBA,OAAAA,GAAA64C,IAAApB,EAAAx3C,KACA,YAAAw3C,EAAAn7C,MACA,KAAAm7C,EAAA+X,QACA8mF,EAAA7+F,EAAA7rC,WACA+0D,GAAA2tB,iBAAA,MAAA,OAIA56B,EAAAg+B,MAGAh+B,EAAA69B,SAAAynD,gBAAA,SAAAr4E,GACA,GAAA3gE,GAAA2gE,EAAAkd,UAAA,SACApmC,EAAAkpB,EAAAuyC,WAAAlzG,GAAA,EAEA,OAAA,IAAAy3C,EAAAz3C,OAAAA,EAAA64C,IAAApB,EAAAx3C,KACA,KAAA/C,KAAAu6C,EAAA+X,QAKAkE,EAAAg+B,SAJA/wB,GAAA2tB,iBAAA,OAAA,QAOA56B,EAAAsiC,aAAA,aAAA,KAAA,SAAAr1B,EAAAh7C,EAAAxP,GAGA,GAFAA,GAAAA,GAAAu9C,EAAAqiC,MACAp1B,EAAAkyC,aAAA,UACAltF,EAAA,CACA,GAAAthB,IAAAiU,KAAA,SACA2gI,MAAA,wBACAC,MAAA,kBACAC,MAAA,kBACAC,SAAA,mBAEAz4E,GAAAiyC,UAAAvuG,QCjGA,SAAAurF,GACA,gBAAAv0F,UAAA,gBAAAD,QACAw0F,EAAAnxD,QAAA,yBACA,kBAAA7Q,SAAAA,OAAAC,IACAD,OAAA,+BAAA,wBAAAgiE,GAEAA,EAAAl8B,aACA,SAAAA,GACA,YAEAA,GAAA69B,SAAA8nD,gBAAA,SAAA14E,GACA,GAAA24E,GAAA34E,EAAAyjC,YACAm1C,EAAA54E,EAAAhH,QAAA2/E,EAAA,GAAAl9I,OACAq7C,EAAAkpB,EAAAuyC,YAAAzkD,KAAA6qF,EAAAzgG,GAAA0gG,IAAA,EAEA,OAAA,YAAA9hG,EAAAn7C,KACAqkE,EAAA04E,gBAAA14E,EAAAq8B,YAEAtpC,EAAAg+B,MAGAh+B,EAAAsiC,aAAA,cAAA,KAAA,SAAAr1B,EAAAvtB,EAAAj9B,GAGA,GAFAA,GAAAA,GAAAu9C,EAAAqiC,MACAp1B,EAAAkyC,aAAA,eACA,kBAAA,GAAA,CACA,GAAAxuG,IAAAiU,KAAA,cACAyyF,MAAA,kBACAyuC,aAAA,mBAEA74E,GAAAiyC,UAAAvuG,GACAs8D,EAAA04E,gBAAAjmG,OCxBA,SAAAw8C,GACA,gBAAAv0F,UAAA,gBAAAD,QACAw0F,EAAAnxD,QAAA,yBACA,kBAAA7Q,SAAAA,OAAAC,IACAD,OAAA,gCAAA,wBAAAgiE,GAEAA,EAAAl8B,aACA,SAAAA,GACA,YAKA,SAAA+lF,GAAAj3H,GACA,gBAAAA,KACA/mB,KAAA2Y,QAAAoO,EAAApO,UAAA,EACA3Y,KAAA6iC,KAAA9b,EAAA8b,MAAA,SACA9b,EAAAgsH,WACA/yI,KAAA+yI,SAAAhsH,EAAAgsH,UACA/yI,KAAAqsB,KAAAyb,OAAA/gB,EAAAsF,IAAA,SACAqsB,OAAA3xB,EAAAsF,IAAA,SACAuR,MAAA7W,EAAAsF,IAAA,QACAupB,KAAA7uB,EAAAsF,IAAA,QAEArsB,KAAA6oB,MAAA9B,EAAA8B,MAAA9B,EAAA8B,MAAAo1H,EACAj+I,KAAAk+I,sBAAA,EACAl+I,KAAAkzC,IAAA,MAaA,QAAAirG,GAAAj5E,EAAAp9B,GACA,GAAA33B,GAAA+0D,EAAA/0D,MAAAiuI,qBAEA,OAAAjuI,GAAA,MAAAA,EAAAkc,KAAAlc,EAAAwI,UAGAxI,EAAA+iC,KACAgyB,EAAAm5E,aAGAnoH,SAAA/lB,EAAA8hE,SACA9hE,EAAA8hE,QAAA1rE,KAAAuhC,GAEA,YAAAA,EAAAwI,QACAngC,EAAA+tI,uBAAA,IACA/tI,EAAA8hE,QAAA/7C,OACAgvC,EAAAo5E,4BAIA,QAAAC,GAAAr5E,GACA,GAAA/0D,GAAA+0D,EAAA/0D,MAAAiuI,qBAEA,IAAA,MAAAjuI,GAAA,MAAAA,EAAAkc,KAAA,MAAAlc,EAAAquI,KAAA,CAEA,GAAAA,GAAAruI,EAAAquI,WACAruI,GAAAquI,KAEAx7I,EAAAsqB,MAAAjB,IAAAlc,EAAAkc,IAAAuR,MACAnR,OAAA,EACAC,YAAA,mBACA7rB,KAAA,OACAoP,SAAA,OACAI,KAAAnN,KAAAiwB,WAAAqrH,KAAAA,OA8IA,QAAAC,KACA,GAAAv+I,IAAA,GAAA+R,OAAAu9B,UACAgvG,EAAA,uCACAn7I,QAAA,QAAA,SAAAlD,GACA,GAAAS,IAAAV,EAAA,GAAAkK,KAAAqH,UAAA,GAAA,CAEA,OADAvR,GAAAkK,KAAAy+B,MAAA3oC,EAAA,KACA,KAAAC,EAAAS,EAAA,EAAAA,EAAA,GAAA6P,SAAA,KAEA,OAAA+tI,GAoIA,QAAAE,GAAAtyE,EAAAj8D,EAAAtP,EAAAya,EAAAjX,GAOA,QAAAs6I,GAAAxuI,GACA,GAAAmyB,GAAAs3G,EAAAkD,SAAA3sI,EAAAysI,QACA,KAAAt6G,EAAA,MAAA,KACA,IAAA0Z,GAAA1Z,EAAAnyB,EAAA0sI,SACA,OAAA7gG,GAEAA,EAFA,KAUA,QAAA4iG,KACAzuI,EAAAyuI,YACAjiI,QAAA4zB,IAAA,cAAAj1B,EAAA,KAAAza,EAAA,IAAAm7C,EAAAn7C,MACAsP,EAAAyuI,WAAAC,QAAA1uI,EAAA0sI,SACAiC,OAAA3uI,EAAAysI,QACAmC,aAAA,EACAC,mBAGApF,EAAA7mF,OAAAsrF,aAgBA,QAAAY,KACA,GAAAC,GAAA/uI,EAAAyuI,YACA/B,SAAAqC,EAAAL,QACAjC,QAAAsC,EAAAJ,QASA,OALAI,GAAAH,aAKA,KAWA,QAAAI,GAAAtuE,GACA,GAAAtsE,EAEA,IAAA+W,GAAAu1D,EACA,OAAA,CAEA,KAAAtsE,EAAAssE,EAAA1hC,YAAA7zB,EAAA,KAAA,EAAA,CAEA,IAAA,GADAoL,GAAAmqD,EAAAr8C,UAAAlZ,EAAA3a,OAAA4D,GACAhD,EAAA,EAAAA,EAAAmlB,EAAA/lB,OAAAY,IACA,IAAA6qE,EAAAg5B,IAAA1+E,EAAA+N,OAAAlzB,IAEA,MADA6qE,GAAAq5B,OAAAlkG,IACA,CAGA,QAAA,EAGA,OAAA,EASA,QAAA69I,GAAA/E,GACA,GAAAhpI,GAAAgpI,EAAA53I,OAAA,GAAA,EACA,OAAA4O,IAAA,UAAAA,EAAAxQ,KAaA,QAAAw+I,GAAArjG,EAAA7rC,GACA,GAAA6rC,EAAA,CACA,IAAAsjG,EAAAz+I,GAwCA,MAAAya,IAAA0gC,EAAA37C,MAAAib,GACAnL,EAAA0sI,WACA7gG,EAAAn7C,MAEAwD,CA3CA,IAAA23C,EAAA37C,MAAAib,EAAA,CACA,GAAA6jI,EAAAnjG,EAAA37C,MAEA,MADA8P,GAAA0sI,WACA7gG,EAAAn7C,IAGA,QACA,GAAAy+I,EAAAz+I,IAAA0+I,EAAAvjG,EAAAn7C,MAOA,MANA,YAAAA,GACAsP,EAAAysI,UACAzsI,EAAA0sI,SAAA,GACAuC,EAAAjvI,EAAAkqI,UACAlqI,EAAA0sI,WAEA7gG,EAAAn7C,IACA,IAAAy+I,EAAAz+I,IAAAm7C,EAAAge,KAEA,MADA7pD,GAAA0sI,WACA7gG,EAAAn7C,IACA,IAAA,SAAAA,GAAA,QAAA0+I,EAAAvjG,EAAAn7C,MAEA,MADAsP,GAAA0sI,WACA7gG,EAAAn7C,IACA,IAAA,UAAAA,GAAA,QAAAm7C,EAAAn7C,KAEA,MADAsP,GAAA0sI,WACA7gG,EAAAn7C,IACA,IAAA,cAAAA,GACAm7C,EAAA37C,MAAA,KAAA27C,EAAA37C,KAKA,MADA8P,GAAA0sI,UAAA,EACA,QACA,IAAA,cAAAh8I,GACAm7C,EAAA37C,MAAA,KAAA27C,EAAA37C,KAKA,MADA8P,GAAA0sI,UAAA,EACA,UArJA,GAAAjD,GAAA55I,IAoKA,IAAA,MAAAmQ,EAAAysI,QAAA,CACA,GAAA5gG,GACAwjG,CAIA,IAAArvI,EAAAsvI,aAKA,MAJA,YAAA5+I,IACA+4I,EAAA7mF,OAAAsrF,mBACAluI,GAAAsvI,cAEAp7I,CAGA,IAAA8L,EAAAyuI,UAAA,CACA,GAAAM,GAAA/uI,EAAAyuI,SAEA,IAAAM,EAAAH,cAAA,EAAA,CAMA,GALAG,EAAAF,cAAAz4I,MAAA1F,KAAAA,EACAwD,MAAAA,EACAiX,QAAAA,IAGAkkI,EAAAP,IACA,MAAAO,EACA,aAAA3+I,IACAq+I,EAAAF,iBACAE,EAAAH,gBAIA,MAAA16I,GAGA,OAAA23C,EAAA2iG,EAAAxuI,IAOA+lB,UAAAspH,EAAAH,EAAArjG,EAAA7rC,IACAqvI,EACA,gBAAAxjG,EAAAn7C,MACAsP,EAAAsvI,cAAA,EACAtvI,EAAA0sI,SAAA,EACA1sI,EAAAysI,UACAv4I,IAEAu6I,IACAv6I,EAAA,eAfAu1I,EAAA7mF,OAAAsrF,aACAh6I,GAkBA,MAAAA,GAnjBA,GAAA45I,GAAA,IACAyB,EAAA,GAuEAznF,GAAAsiC,aAAA,yBAAA,EAAA,SAAAr1B,EAAAh7C,EAAAlC,GACA,QAAA23H,KAAApB,EAAAr5E,GAEAA,EAAA/0D,MAAAiuI,sBACA,MAAAl0H,GACAq0H,EAAAr5E,GACAA,EAAAj+D,IAAA,SAAAk3I,GACAp+I,OAAA4C,oBAAA,SAAAg9I,SACAz6E,GAAA/0D,MAAAiuI,sBACAl5E,EAAA+xC,UAAA,QAAAp6F,KAAA,YAEAqN,EAAAvR,SAAAqP,EAAArP,UACAusD,EAAA/0D,MAAAiuI,sBAAAzlI,QAAAuR,EAAAvR,QACAuR,EAAAvR,SACAusD,EAAAxhD,GAAA,SAAAy6H,GACAp+I,OAAAgW,iBAAA,SAAA4pI,GACAz6E,EAAAyjC,YAAA,GACAzjC,EAAAo5E,yBAAA,KAGAC,EAAAr5E,GACAA,EAAAj+D,IAAA,SAAAk3I,GACAp+I,OAAA4C,oBAAA,SAAAg9I,GACAz6E,EAAA+xC,UAAA,QAAAp6F,KAAA,aAIAqN,IACAg7C,EAAA/0D,MAAAiuI,sBAAA,GAAAJ,GAAA9zH,GACAg7C,EAAA/0D,MAAAiuI,sBAAAzlI,UACAusD,EAAAxhD,GAAA,SAAAy6H,GACAp+I,OAAAgW,iBAAA,SAAA4pI,GACAz6E,EAAAyjC,YAAA,GACAzjC,EAAAo5E,yBAAA,OAOArmF,EAAArtD,UAAAyzI,WAAA,SAAA1rG,GACA,GAAAuyB,GAAAllE,KACAmQ,EAAA+0D,EAAA/0D,MAAAiuI,qBAEA,OAAAjuI,IAGA+lB,SAAAyc,IACAA,EAAAxiC,EAAA0Y,OAEA1Y,EAAA+iC,KACApqB,aAAA3Y,EAAA+iC,KAEA/iC,EAAA+iC,IAAAhoC,WAAA,WAAAg6D,EAAAo5E,2BACA3rG,KAIAslB,EAAArtD,UAAA0zI,wBAAA,SAAAhyI,GAWA,QAAAszI,KACA,GAAA/xI,GAAAq3D,EAAAqJ,UAAA,OAWA,OATA,gBAAA,GACA1gE,GAAAgP,KAAA,SACAkgI,OAAA2B,EACA3rF,OAAAmS,GAEAr3D,EAAAkvI,SACAlvI,EAAAkvI,OAAA2B,EACA7wI,EAAAklD,OAAAmS,GAEAr3D,EAtBA,GAAAq3D,GAAAllE,KACAmQ,EAAA+0D,EAAA/0D,MAAAiuI,sBACAn0G,IAIA,IAFA95B,EAAA+iC,IAAA,KAEA,MAAA/iC,GAAA,MAAAA,EAAAkc,KAAAlc,EAAAwI,WACAusD,EAAA0kC,QAAAz5F,EAAA+tI,uBAAA5xI,GADA,CAmBA,GAAA6D,EAAAquI,KACAv0G,EAAAu0G,KAAAruI,EAAAquI,KACAtoH,QAAA/lB,EAAA8hE,SACAhoC,EAAA5pC,KAAA6kE,EAAAq8B,WACAt3D,EAAA5pC,KAAAM,OAAA++I,IACAvvI,EAAA8hE,cAEAhoC,EAAAgoC,QAAA9hE,EAAA8hE,QACA9hE,EAAA8hE,gBAEA,CAEA,GADAhoC,EAAA5pC,KAAA6kE,EAAAq8B,WACA,IAAAt3D,EAAA5pC,KAAA0R,OACA,MACA5B,GAAAquI,KAAAC,IACAx0G,EAAAu0G,KAAAruI,EAAAquI,KAEAv0G,EAAApH,KAAA1yB,EAAA0yB,KACA,kBAAA1yB,GAAA,WACA85B,EAAA8oG,SAAA5iI,EAAA4iI,YAEA5iI,EAAA+tI,qBAAAh5E,EAAAwkC,mBACA1mG,EAAAsqB,MAAAjB,IAAAlc,EAAAkc,IAAAqsB,OACAzoC,SAAA,OACAyc,YAAA,mBACA7rB,KAAA,OACAwP,KAAAnN,KAAAiwB,UAAA8W,GACA3b,QAAA,SAAAje,EAAAmd,GACA,GAAA3f,GAAA+xI,GACA/xI,GAAAivI,SAAAzsI,EAAAqoC,OACAwsB,EAAA+xC,UAAA,OAAAppG,IAEAuC,MAAA,SAAA2xB,GACA,KAAAA,EAAAvU,cACArd,GAAAquI,UAUAvmF,EAAA69B,SAAA+pD,iBAAA,SAAA36E,GACAA,EAAAo5E,yBAAA,GAcA,IAAAgB,IAAApgC,IAAA,MACA+8B,KAAA,OACA6D,MAAA,QACAC,SAAA,SACA3G,OAAA,OACAgC,QAAA,UACA51G,IAAA,MACAw6G,OAAA,SACAjsF,OAAA,SACAlqB,KAAA,SACAo2G,aAAA,SACAC,aAAA,SACAC,UAAA,YACAC,WAAA,aACAC,QAAA,UACAC,OAAA,SACAC,SAAA,WACAC,UAAA,YACAC,WAAA,aACAC,gBAAA,kBACAC,iBAAA,mBACAC,KAAA,OACAC,SAAA,YAEAtB,GAAArgC,IAAA,MACA4hC,UAAA,MACAC,MAAA,MACA9E,KAAA,OACA6D,MAAA,QACA/rF,OAAA,SACAmyE,MAAA,SACA/oF,MAAA,SACAi+F,QAAA,UACA51G,IAAA,MACAw7G,QAAA,OACA9yG,KAAA,OACA+yG,QAAA,OACAC,IAAA,SACA76H,MAAA,SACA9D,IAAA,OACAisH,IAAA,OACA2S,UAAA,OAEAC,SAAA,WACAC,eAAA,SACAC,WAAA,OACAC,UAAA,OACA5hJ,OAAA,OAEA6hJ,cAAA,OACAC,YAAA,OACAC,YAAA,OACAC,aAAA,OACAC,eAAA,OACAC,kBAAA,OACAC,UAAA,OACAC,UAAA,OACAC,gBAAA,OACAC,cAAA,OACAC,cAAA,OACAC,SAAA,OACAC,aAAA,OACAC,aAAA,OACA/hJ,KAAA,OAEAgiJ,cAAA,OACAC,cAAA,OACAC,cAAA,OACAC,YAAA,OACAC,eAAA,OACAC,kBAAA,OACAC,aAAA,OACAC,eAAA,OACAC,cAAA,OACAC,YAAA,OACAC,eAAA,OACAC,UAAA,OACAC,aAAA,OACAC,WAAA,OACAC,gBAAA,OACAC,kBAAA,OAEAC,YAAA,UACAC,mBAAA,OACAC,eAAA,OACAC,gBAAA,OACAC,iBAAA,OAEAC,YAAA,OACAC,eAAA,OACAC,UAAA,OACAC,aAAA,OAEAC,gBAAA,OACAtqI,KAAA,OACAuqI,OAAA,OAEA7D,UAAA,YACAC,WAAA,aACAC,QAAA,UACAC,OAAA,SACAC,SAAA,WACA0D,QAAA,OACAzD,UAAA,YACAC,WAAA,aACAC,gBAAA,kBACAC,iBAAA,mBACAC,KAAA,OACAC,SAAA,WAEAqD,gBAAA,SAEAv7I,KAAA,UACAw7I,OAAA,OACAC,eAAA,UACAC,mBAAA,OACAC,qBAAA,OACAC,wBAAA,OA8OAtsF,GAAArtD,UAAA45I,iBAAA,SAAAxoG,GACA,GAAA,MAAAA,EAAA7rC,MAAAysI,SAAA,MAAA5gG,EAAA7rC,MAAA0sI,SACA,CAAA,GACA4H,GADAt0I,EAAAnQ,KAAAuuE,UAAA,OAGA,IAAAp+D,EAAA2sI,WAAA2H,EAAAt0I,EAAA2sI,SAAA9gG,EAAA7rC,MAAAysI,UACA,MAAA6H,GAAAzoG,EAAA7rC,MAAA0sI,SAAA,KAaA5kF,EAAArtD,UAAA85I,UAAA,SAAA1oG,EAAA3uC,GACA,GAAA8C,GAAAnQ,KAAAmQ,MAAAiuI,qBAYA,OAVA/wI,KACAA,EAAArK,EAAAA,EAAAgzB,GAAA4U,MAAAhhB,MAAA,cAAA,SAEA5mB,EAAAsqB,MAAAjB,IAAAlc,EAAAkc,IAAAupB,KACAvlC,KAAA2rC,EACA1tB,QAAA,SAAAje,GACAhD,EAAA1E,KAAA0H,MAIAhD,EAAA,IAQA4qD,EAAArtD,UAAA+5I,mBAAA,SAAA3oG,GAGA,QAAA4oG,GAAAxhH,EAAAhP,GACA,GAAAA,GAAA,GAAAA,EAAA5jB,QAAA,YAEA,MADA4yB,GAAA3pB,KAAA2a,EAAAI,UAAA,IACA,EALA,GAAArU,KASA,QAAA67B,EAAAn7C,MACA,IAAA,aACA,GAAAuiC,IACA9F,MAAA,cAAA0e,EAAA37C,KAAA,IAAA27C,EAAAtnB,MACAs+B,KAAAhX,EAAAgX,KACA/O,MAAA,GAAAvvC,QAAA,MAAAA,OAAAuC,OAAA+kC,EAAA37C,MAAA,KACAwzD,gBAAA,EAEA+wF,GAAAxhH,EAAA4Y,EAAAviC,MACA0G,EAAA5Z,KAAA68B,EACA,MACA,KAAA,OACA,GAAAA,KAEAwhH,GAAAxhH,EAAA4Y,EAAAk1E,QACA9tF,EAAA9F,MAAA,iBAAA8F,EAAA3pB,KACA0G,EAAA5Z,KAAA68B,IAKA,MAAAjjB,MCjpBA,SAAAg0E,GACA,gBAAAv0F,UAAA,gBAAAD,QACAw0F,EAAAnxD,QAAA,yBACA,kBAAA7Q,SAAAA,OAAAC,IACAD,OAAA,mBAAA,wBAAAgiE,GAEAA,EAAAl8B,aACA,SAAAA,GACA,YAEA,IAAA4sF,IACAC,iBAAAC,MAAA,EAAA/qF,MAAA,EAAAqoE,IAAA,EAAAnkH,KAAA,EAAA8mI,SAAA,EACAC,OAAA,EAAAC,OAAA,EAAAnwF,IAAA,EAAAxlB,KAAA,EAAAv2B,OAAA,EACAmsI,QAAA,EAAAh6C,MAAA,EAAAj9D,MAAA,EAAA9iB,OAAA,EAAAxN,QAAA,EACAwnI,OAAA,EAAAC,KAAA,EAAAC,UAAA,GACAC,kBAAAC,IAAA,EAAA33G,IAAA,EAAAxvB,UAAA,EAAAL,QAAA,EAAA/d,GAAA,EACAwlJ,IAAA,EAAA9gD,IAAA,EAAArmF,OAAA,EAAAF,IAAA,EAAAG,OAAA,EACAG,IAAA,EAAAP,IAAA,GACAunI,iBACAF,IAAAA,IAAA,EAAAllC,IAAA,GACAA,IAAAklC,IAAA,EAAAllC,IAAA,GACAzyE,IAAAA,IAAA,GACA7vB,QAAAA,QAAA,EAAAK,UAAA,GACAA,UAAAA,UAAA,GACApe,GAAA0lJ,SAAA,EAAAC,SAAA,EAAAC,OAAA,EAAAC,YAAA,EAAAtyI,KAAA,EACAivB,KAAA,EAAAsjH,IAAA,EAAAl+B,UAAA,EAAA5+D,QAAA,EAAAhoB,MAAA,EACAwC,IAAA,EAAAf,IAAA,EAAAwpG,IAAA,EAAAC,IAAA,EAAA6Z,IAAA,EAAAC,IAAA,EACAltI,QAAA,EAAAmtI,QAAA,EAAAnxF,IAAA,EAAAtnB,MAAA,EAAA04G,KAAA,EAAAC,IAAA,EACAnmJ,GAAA,EAAAmuE,KAAA,EAAAi4E,SAAA,EAAA/mC,OAAA,EAAAjyE,IAAA,GACAo4G,IAAAA,IAAA,EAAA9gD,IAAA,GACAA,IAAA8gD,IAAA,EAAA9gD,IAAA,GACArmF,OAAAA,OAAA,EAAAC,OAAA,GACAH,IAAAA,IAAA,EAAAM,IAAA,GACAH,OAAAD,OAAA,GACAI,IAAAN,IAAA,EAAAM,IAAA,GACAT,OAAAK,OAAA,EAAAC,OAAA,GACAJ,IAAAA,IAAA,IAEAmoI,aAAAl4E,KAAA,GACAm4E,eAAA,EACAC,cAAA,EACAC,UAAA,GAGAC,GACA5B,mBACAS,oBACAG,mBACAY,eACAC,eAAA,EACAC,cAAA,EACAC,UAAA,EAGAxuF,GAAAkR,WAAA,MAAA,SAAAw9E,EAAAC,GAUA,QAAAC,GAAAz6E,EAAAj8D,GACA,QAAA0pI,GAAAiN,GAEA,MADA32I,GAAA4J,SAAA+sI,EACAA,EAAA16E,EAAAj8D,GAGA,GAAAitC,GAAAgvB,EAAA34D,MACA,IAAA,KAAA2pC,EACA,MAAAgvB,GAAAg5B,IAAA,KACAh5B,EAAAg5B,IAAA,KACAh5B,EAAAtqE,MAAA,UAAA+3I,EAAAkN,EAAA,OAAA,QACA,KACA36E,EAAAtqE,MAAA,MACA+3I,EAAAkN,EAAA,UAAA,QACA36E,EAAAtqE,MAAA,WAAA,GAAA,IACAsqE,EAAAi5B,SAAA,aACAw0C,EAAAmN,EAAA,KAEA,KAEA56E,EAAAg5B,IAAA,MACAh5B,EAAAi5B,SAAA,aACAl1F,EAAA4J,SAAAgtI,EAAA,OAAA,MACA,SAEAlmJ,EAAAurE,EAAAg5B,IAAA,KAAA,WAAA,UACAj1F,EAAA4J,SAAAktI,EACA,cAEA,IAAA,KAAA7pG,EAAA,CACA,GAAA4yC,EAUA,OAPAA,GAFA5jB,EAAAg5B,IAAA,KACAh5B,EAAAg5B,IAAA,KACAh5B,EAAAi5B,SAAA,eAAAj5B,EAAAg5B,IAAA,KAEAh5B,EAAAi5B,SAAA,SAAAj5B,EAAAg5B,IAAA,KAGAh5B,EAAAi5B,SAAA,cAAAj5B,EAAAg5B,IAAA,KAEApV,EAAA,OAAA,QAGA,MADA5jB,GAAAi5B,SAAA,SACA,KAKA,QAAA4hD,GAAA76E,EAAAj8D,GACA,GAAAitC,GAAAgvB,EAAA34D,MACA,IAAA,KAAA2pC,GAAA,KAAAA,GAAAgvB,EAAAg5B,IAAA,KAGA,MAFAj1F,GAAA4J,SAAA8sI,EACAhmJ,EAAA,KAAAu8C,EAAA,SAAA,eACA,aACA,IAAA,KAAAA,EAEA,MADAv8C,GAAA,SACA,IACA,IAAA,KAAAu8C,EAAA,CACAjtC,EAAA4J,SAAA8sI,EACA12I,EAAAA,MAAA+2I,EACA/2I,EAAAqoB,QAAAroB,EAAAg3I,SAAA,IACA,IAAA1zI,GAAAtD,EAAA4J,SAAAqyD,EAAAj8D,EACA,OAAAsD,GAAAA,EAAA,aAAA,YACA,MAAA,SAAAhS,KAAA27C,IACAjtC,EAAA4J,SAAAqtI,EAAAhqG,GACAjtC,EAAAk3I,eAAAj7E,EAAAs5B,SACAv1F,EAAA4J,SAAAqyD,EAAAj8D,KAEAi8D,EAAAtqE,MAAA,4CACA,QAIA,QAAAslJ,GAAA9K,GACA,GAAAgL,GAAA,SAAAl7E,EAAAj8D,GACA,MAAAi8D,EAAAG,OACA,GAAAH,EAAA34D,QAAA6oI,EAAA,CACAnsI,EAAA4J,SAAAktI,CACA,OAGA,MAAA,SAGA,OADAK,GAAAC,eAAA,EACAD,EAGA,QAAAP,GAAA1iJ,EAAAmjJ,GACA,MAAA,UAAAp7E,EAAAj8D,GACA,MAAAi8D,EAAAG,OAAA,CACA,GAAAH,EAAAtqE,MAAA0lJ,GAAA,CACAr3I,EAAA4J,SAAA8sI,CACA,OAEAz6E,EAAA34D,OAEA,MAAApP,IAGA,QAAA2iJ,GAAAtoB,GACA,MAAA,UAAAtyD,EAAAj8D,GAEA,IADA,GAAAitC,GACA,OAAAA,EAAAgvB,EAAA34D,SAAA,CACA,GAAA,KAAA2pC,EAEA,MADAjtC,GAAA4J,SAAAitI,EAAAtoB,EAAA,GACAvuH,EAAA4J,SAAAqyD,EAAAj8D,EACA,IAAA,KAAAitC,EAAA,CACA,GAAA,GAAAshF,EAAA,CACAvuH,EAAA4J,SAAA8sI,CACA,OAGA,MADA12I,GAAA4J,SAAAitI,EAAAtoB,EAAA,GACAvuH,EAAA4J,SAAAqyD,EAAAj8D,IAIA,MAAA,QAIA,QAAAs3I,GAAAt3I,EAAAqoB,EAAAkvH,GACA1nJ,KAAA0a,KAAAvK,EAAA+c,QACAltB,KAAAw4B,QAAAA,EACAx4B,KAAAi9F,OAAA9sF,EAAAs9D,SACAztE,KAAA0nJ,YAAAA,GACA10H,EAAAszH,YAAA51I,eAAA8nB,IAAAroB,EAAA+c,SAAA/c,EAAA+c,QAAAy6H,YACA3nJ,KAAA2nJ,UAAA,GAEA,QAAAC,GAAAz3I,GACAA,EAAA+c,UAAA/c,EAAA+c,QAAA/c,EAAA+c,QAAAxS,MAEA,QAAAmtI,GAAA13I,EAAA23I,GAEA,IADA,GAAAC,KACA,CACA,IAAA53I,EAAA+c,QACA,MAGA,IADA66H,EAAA53I,EAAA+c,QAAAsL,SACAxF,EAAA0yH,gBAAAh1I,eAAAq3I,KACA/0H,EAAA0yH,gBAAAqC,GAAAr3I,eAAAo3I,GACA,MAEAF,GAAAz3I,IAIA,QAAA+2I,GAAArmJ,EAAAurE,EAAAj8D,GACA,MAAA,WAAAtP,GACAsP,EAAAg3I,SAAA/6E,EAAAs5B,SACAsiD,GACA,YAAAnnJ,EACAonJ,EAEAf,EAGA,QAAAc,GAAAnnJ,EAAAurE,EAAAj8D,GACA,MAAA,QAAAtP,GACAsP,EAAAqoB,QAAA4zC,EAAA3T,UACAyvF,EAAA,MACAC,IAEAD,EAAA,QACAF,GAGA,QAAAC,GAAApnJ,EAAAurE,EAAAj8D,GACA,GAAA,QAAAtP,EAAA,CACA,GAAA23B,GAAA4zC,EAAA3T,SAIA,OAHAtoD,GAAA+c,SAAA/c,EAAA+c,QAAAsL,SAAAA,GACAxF,EAAAuyH,iBAAA70I,eAAAP,EAAA+c,QAAAsL,UACAovH,EAAAz3I,GACAA,EAAA+c,SAAA/c,EAAA+c,QAAAsL,SAAAA,GAAAxF,EAAAo1H,gBAAA,GACAF,EAAA;AACAG,IAEAH,EAAA,YACAI,GAIA,MADAJ,GAAA,QACAI,EAIA,QAAAD,GAAAxnJ,EAAA0nJ,EAAAp4I,GACA,MAAA,UAAAtP,GACAqnJ,EAAA,QACAG,IAEAT,EAAAz3I,GACA+2I,GAEA,QAAAoB,GAAAznJ,EAAAurE,EAAAj8D,GAEA,MADA+3I,GAAA,QACAG,EAAAxnJ,EAAAurE,EAAAj8D,GAGA,QAAAg4I,GAAAtnJ,EAAA0nJ,EAAAp4I,GACA,GAAA,QAAAtP,EAEA,MADAqnJ,GAAA,YACAM,CACA,IAAA,UAAA3nJ,GAAA,gBAAAA,EAAA,CACA,GAAA23B,GAAAroB,EAAAqoB,QAAA2uH,EAAAh3I,EAAAg3I,QASA,OARAh3I,GAAAqoB,QAAAroB,EAAAg3I,SAAA,KACA,gBAAAtmJ,GACAmyB,EAAA8xH,gBAAAp0I,eAAA8nB,GACAqvH,EAAA13I,EAAAqoB,IAEAqvH,EAAA13I,EAAAqoB,GACAroB,EAAA+c,QAAA,GAAAu6H,GAAAt3I,EAAAqoB,EAAA2uH,GAAAh3I,EAAAs9D,WAEAy5E,EAGA,MADAgB,GAAA,QACAC,EAEA,QAAAK,GAAA3nJ,EAAAurE,EAAAj8D,GACA,MAAA,UAAAtP,EAAA4nJ,GACAz1H,EAAAwzH,eAAA0B,EAAA,SACAC,EAAAtnJ,EAAAurE,EAAAj8D,IAEA,QAAAs4I,GAAA5nJ,EAAAurE,EAAAj8D,GACA,MAAA,UAAAtP,EAAA6nJ,EACA,QAAA7nJ,GAAAmyB,EAAAuzH,eAAA2B,EAAA,SAAAC,IACAD,EAAA,QACAC,EAAAtnJ,EAAAurE,EAAAj8D,IAEA,QAAAu4I,GAAA7nJ,EAAAurE,EAAAj8D,GACA,MAAA,UAAAtP,EAAA6nJ,EACAP,EAAAtnJ,EAAAurE,EAAAj8D,GA/OA,GAAAktF,GAAAspD,EAAAtpD,WACArqE,KACAQ,EAAAozH,EAAA+B,SAAA9D,EAAA6B,CACA,KAAA,GAAA5/H,KAAA0M,GAAAR,EAAAlM,GAAA0M,EAAA1M,EACA,KAAA,GAAAA,KAAA8/H,GAAA5zH,EAAAlM,GAAA8/H,EAAA9/H,EAGA,IAAAjmB,GAAAqnJ,CA2OA,OA3LArB,GAAA+B,UAAA,GA4LAp+E,WAAA,SAAAq+E,GACA,GAAA14I,IAAA4J,SAAA8sI,EACA12I,MAAA+2I,EACAz5E,SAAAo7E,GAAA,EACArwH,QAAA,KAAA2uH,SAAA,KACAj6H,QAAA,KAEA,OADA,OAAA27H,IAAA14I,EAAA04I,WAAAA,GACA14I,GAGA6rC,MAAA,SAAAowB,EAAAj8D,GAIA,IAHAA,EAAAqoB,SAAA4zC,EAAA84B,QACA/0F,EAAAs9D,SAAArB,EAAA+wB,eAEA/wB,EAAAk5B,WAAA,MAAA,KACAzkG,GAAA,IACA,IAAAwD,GAAA8L,EAAA4J,SAAAqyD,EAAAj8D,EAOA,QANA9L,GAAAxD,IAAA,WAAAwD,IACA6jJ,EAAA,KACA/3I,EAAAA,MAAAA,EAAAA,MAAAtP,GAAAwD,EAAA+nE,EAAAj8D,GACA+3I,IACA7jJ,EAAA,SAAA6jJ,EAAA7jJ,EAAA,SAAA6jJ,IAEA7jJ,GAGA44F,OAAA,SAAA9sF,EAAA6sI,EAAA8L,GACA,GAAA57H,GAAA/c,EAAA+c,OAEA,IAAA/c,EAAA4J,SAAAwtI,cACA,MAAAp3I,GAAAg3I,UAAAh3I,EAAAs9D,SACAt9D,EAAAk3I,eAAA,EAEAl3I,EAAAs9D,SAAA4vB,CAEA,IAAAnwE,GAAAA,EAAAy6H,SAAA,MAAA1vF,GAAAg+B,IACA,IAAA9lF,EAAA4J,UAAAktI,GAAA92I,EAAA4J,UAAA8sI,EACA,MAAAiC,GAAAA,EAAAhnJ,MAAA,UAAA,GAAAnB,OAAA,CAEA,IAAAwP,EAAAqoB,QACA,MAAAxF,GAAA+1H,6BAAA,EACA54I,EAAAg3I,SAAAh3I,EAAAqoB,QAAA73B,OAAA,EAEAwP,EAAAg3I,SAAA9pD,GAAArqE,EAAAg2H,0BAAA,EAEA,IAAAh2H,EAAAi2H,YAAA,cAAAxnJ,KAAAu7I,GAAA,MAAA,EACA,IAAAkM,GAAAlM,GAAA,sBAAA54I,KAAA44I,EACA,IAAAkM,GAAAA,EAAA,GACA,KAAAh8H,GAAA,CACA,GAAAA,EAAAsL,SAAA0wH,EAAA,GAAA,CACAh8H,EAAAA,EAAAxS,IACA,OACA,IAAAsY,EAAAuyH,iBAAA70I,eAAAwc,EAAAsL,SAGA,KAFAtL,GAAAA,EAAAxS,SAKA,IAAAwuI,EACA,KAAAh8H,GAAA,CACA,GAAAi8H,GAAAn2H,EAAA0yH,gBAAAx4H,EAAAsL,QACA,KAAA2wH,IAAAA,EAAAz4I,eAAAw4I,EAAA,IAGA,KAFAh8H,GAAAA,EAAAxS,KAKA,KAAAwS,GAAAA,EAAAxS,OAAAwS,EAAAw6H,aACAx6H,EAAAA,EAAAxS,IACA,OAAAwS,GAAAA,EAAA+vE,OAAAI,EACAltF,EAAA04I,YAAA,GAGAhqD,cAAA,gBACAo+C,kBAAA,OACAC,gBAAA,MAEAkM,cAAAp2H,EAAA21H,SAAA,OAAA,MACA3+E,WAAAh3C,EAAA21H,SAAA,OAAA,MAEAU,cAAA,SAAAl5I,GACAA,EAAAA,OAAAs4I,IACAt4I,EAAAA,MAAAg4I,OAKAlwF,EAAAqR,WAAA,WAAA,OACArR,EAAAqR,WAAA,kBAAA,OACArR,EAAAwR,UAAA/4D,eAAA,cACAunD,EAAAqR,WAAA,aAAAzsD,KAAA,MAAA8rI,UAAA,MCpYA,SAAAx0D,GACA,gBAAAv0F,UAAA,gBAAAD,QACAw0F,EAAAnxD,QAAA,sBACA,kBAAA7Q,SAAAA,OAAAC,IACAD,OAAA,gBAAA,qBAAAgiE,GAEAA,EAAAl8B,aACA,SAAAA,GACA,YAEAA,GAAAqxF,WACAzsI,KAAA,MAAA0sD,KAAA,WAAA9W,KAAA,MAAAT,KAAA,SAAA,SACAn1C,KAAA,MAAA0sI,OAAA,kBAAA,uBAAA,6BAAA92F,KAAA,aAAAT,KAAA,SACAn1C,KAAA,QAAA0sD,KAAA,kBAAA9W,KAAA,QAAAT,KAAA,MAAA,UACAn1C,KAAA,WAAA0sD,KAAA,kBAAA9W,KAAA,WAAAh5C,KAAA,wBACAoD,KAAA,YAAA0sD,KAAA,mBAAA9W,KAAA,YAAAT,KAAA,IAAA,QACAn1C,KAAA,IAAA0sD,KAAA,cAAA9W,KAAA,QAAAT,KAAA,IAAA,OACAn1C,KAAA,MAAA0sD,KAAA,gBAAA9W,KAAA,QAAAT,KAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,KAAA,OAAAF,OAAA,SACAj1C,KAAA,QAAA0sD,KAAA,eAAA9W,KAAA,QAAAT,KAAA,MAAA,SACAn1C,KAAA,KAAA0sD,KAAA,gBAAA9W,KAAA,QAAAT,KAAA,MAAAF,OAAA,YACAj1C,KAAA,UAAA0sD,KAAA,iBAAA9W,KAAA,UAAAT,KAAA,MAAA,OAAA,UACAn1C,KAAA,gBAAA0sD,KAAA,uBAAA9W,KAAA,UAAAT,KAAA,UACAn1C,KAAA,4BAAA0sD,KAAA,aAAA9W,KAAA,MAAAT,KAAA,SACAn1C,KAAA,QAAA0sD,KAAA,eAAA9W,KAAA,QAAAT,KAAA,QAAA,YAAAv4C,KAAA,qBACAoD,KAAA,eAAA0sD,KAAA,sBAAA9W,KAAA,eAAAT,KAAA,UAAAF,OAAA,SAAA,mBACAj1C,KAAA,cAAA0sD,KAAA,qBAAA9W,KAAA,aAAAT,KAAA,KAAA,OAAA,MAAAF,OAAA,UACAj1C,KAAA,SAAA0sD,KAAA,6BAAA9W,KAAA,SAAAT,KAAA,MAAA,YACAn1C,KAAA,SAAA0sD,KAAA,gBAAA9W,KAAA,SAAAT,KAAA,MAAA,MAAA,SACAn1C,KAAA,UAAA0sD,KAAA,iBAAA9W,KAAA,UAAAT,KAAA,QACAn1C,KAAA,MAAA0sD,KAAA,WAAA9W,KAAA,MAAAT,KAAA,SACAn1C,KAAA,MAAA0sD,KAAA,mBAAA9W,KAAA,MAAAT,KAAA,SACAn1C,KAAA,IAAA0sD,KAAA,WAAA9W,KAAA,IAAAT,KAAA,OACAn1C,KAAA,OAAA0sI,OAAA,mBAAA,eAAA92F,KAAA,OAAAT,KAAA,UACAn1C,KAAA,OAAA0sD,KAAA,cAAA9W,KAAA,OAAAT,KAAA,OAAA,WACAn1C,KAAA,SAAA0sD,KAAA,gBAAA9W,KAAA,WACA51C,KAAA,aAAA0sD,KAAA,oBAAA9W,KAAA,aAAAh5C,KAAA,iBACAoD,KAAA,MAAA0sD,KAAA,sBAAA9W,KAAA,MAAAT,KAAA,SACAn1C,KAAA,QAAA0sD,KAAA,eAAA9W,KAAA,QAAAT,KAAA,QAAA,MAAA,UACAn1C,KAAA,OAAA0sD,KAAA,cAAA9W,KAAA,SACA51C,KAAA,MAAA0sD,KAAA,aAAA9W,KAAA,MAAAT,KAAA,SACAn1C,KAAA,MAAA0sD,KAAA,kBAAA9W,KAAA,UAAAT,KAAA,SACAn1C,KAAA,SAAA0sD,KAAA,gBAAA9W,KAAA,SAAAT,KAAA,OACAn1C,KAAA,MAAA0sD,KAAA,aAAA9W,KAAA,MAAAT,KAAA,SACAn1C,KAAA,sBAAA0sD,KAAA,oBAAA9W,KAAA,eAAAT,KAAA,SACAn1C,KAAA,gBAAA0sD,KAAA,oBAAA9W,KAAA,eAAAT,KAAA,SACAn1C,KAAA,SAAA0sD,KAAA,gBAAA9W,KAAA,SAAAT,KAAA,SACAn1C,KAAA,SAAA0sD,KAAA,gBAAA9W,KAAA,SAAAT,KAAA,YACAn1C,KAAA,MAAA0sD,KAAA,aAAA9W,KAAA,QACA51C,KAAA,QAAA0sD,KAAA,eAAA9W,KAAA,QAAAT,KAAA,QAAA,MAAA,SACAn1C,KAAA,UAAA0sD,KAAA,iBAAA9W,KAAA,UAAAT,KAAA,IAAA,MAAA,MAAA,SACAn1C,KAAA,KAAA0sD,KAAA,gBAAA9W,KAAA,SAAAT,KAAA,MAAAF,OAAA,YACAj1C,KAAA,MAAA0sD,KAAA,aAAA9W,KAAA,MAAAT,KAAA,OACAn1C,KAAA,UAAA0sD,KAAA,iBAAA9W,KAAA,UAAAT,KAAA,aACAn1C,KAAA,2BAAA0sD,KAAA,aAAA9W,KAAA,MAAAh5C,KAAA,wCACAoD,KAAA,KAAA0sD,KAAA,YAAA9W,KAAA,KAAAT,KAAA,QACAn1C,KAAA,SAAA0sD,KAAA,gBAAA9W,KAAA,SAAAT,KAAA,SAAA,UAAAv4C,KAAA,kBACAoD,KAAA,OAAA0sD,KAAA,cAAA9W,KAAA,OAAAT,KAAA,UACAn1C,KAAA,UAAA0sD,KAAA,iBAAA9W,KAAA,UAAAT,KAAA,QACAn1C,KAAA,qBAAA0sD,KAAA,0BAAA9W,KAAA,mBAAAT,KAAA,SACAn1C,KAAA,OAAA0sD,KAAA,cAAA9W,KAAA,OAAAT,KAAA,QACAn1C,KAAA,OAAA0sD,KAAA,cAAA9W,KAAA,OAAAT,KAAA,UACAn1C,KAAA,UAAA0sD,KAAA,qBAAA9W,KAAA,eAAAT,KAAA,QAAAF,OAAA,MAAA,UACAj1C,KAAA,OAAA0sD,KAAA,YAAA9W,KAAA,YAAAT,KAAA,OAAA,OAAAF,OAAA,WACAj1C,KAAA,OAAA0sD,KAAA,eAAA9W,KAAA,SACA51C,KAAA,MAAA0sD,KAAA,aAAA9W,KAAA,MAAAT,KAAA,SACAn1C,KAAA,MAAA0sD,KAAA,aAAA9W,KAAA,MAAAT,KAAA,OAAA,OAAAF,OAAA,UACAj1C,KAAA,OAAA0sD,KAAA,cAAA9W,KAAA,QAAAT,KAAA,UACAn1C,KAAA,oBAAA0sD,KAAA,oBAAA9W,KAAA,eAAAT,KAAA,OAAAF,OAAA,SACAj1C,KAAA,aAAA0sI,OAAA,kBAAA,kBAAA,yBAAA,2BAAA,0BACA92F,KAAA,aAAAT,KAAA,MAAAF,OAAA,aAAA,KAAA,UACAj1C,KAAA,OAAA0sI,OAAA,mBAAA,sBAAA92F,KAAA,aAAAT,KAAA,OAAA,OAAAF,OAAA,WACAj1C,KAAA,UAAA0sD,KAAA,sBAAA9W,KAAA,aAAAT,KAAA,UAAAF,OAAA,YACAj1C,KAAA,MAAA0sD,KAAA,WAAA9W,KAAA,MAAAT,KAAA,SACAn1C,KAAA,SAAA0sD,KAAA,OAAA9W,KAAA,WACA51C,KAAA,QAAA0sD,KAAA,eAAA9W,KAAA,QAAAT,KAAA,QACAn1C,KAAA,SAAA0sD,KAAA,gBAAA9W,KAAA,QAAAT,KAAA,QACAn1C,KAAA,OAAA0sD,KAAA,cAAA9W,KAAA,MAAAT,KAAA,UACAn1C,KAAA,aAAA0sD,KAAA,oBAAA9W,KAAA,aAAAT,KAAA,MAAAF,OAAA,QACAj1C,KAAA,MAAA0sD,KAAA,aAAA9W,KAAA,MAAAT,KAAA,SACAn1C,KAAA,WAAA0sD,KAAA,kBAAA9W,KAAA,WAAAT,KAAA,WAAA,KAAA,SACAn1C,KAAA,OAAA0sD,KAAA,YAAA9W,KAAA,SACA51C,KAAA,cAAA0sD,KAAA,iBAAA9W,KAAA,QACA51C,KAAA,cAAA0sD,KAAA,qBAAA9W,KAAA,cAAAT,KAAA,IAAA,QACAn1C,KAAA,WAAA0sD,KAAA,kBAAA9W,KAAA,WAAAT,KAAA,QACAn1C,KAAA,QAAA0sD,KAAA,eAAA9W,KAAA,QAAAT,KAAA,SACAn1C,KAAA,SAAA0sD,KAAA,eAAA9W,KAAA,QACA51C,KAAA,OAAA0sD,KAAA,mBAAA9W,KAAA,OAAAT,KAAA,UACAn1C,KAAA,QAAA0sD,KAAA,eAAA9W,KAAA,QACA51C,KAAA,QAAA0sD,KAAA,oBAAA9W,KAAA,QAAAh5C,KAAA,oBACAoD,KAAA,OAAA0sD,KAAA,cAAA9W,KAAA,OAAAT,KAAA,MAAA,SACAn1C,KAAA,WAAA0sD,KAAA,iBAAA9W,KAAA,WAAAT,KAAA,QACAn1C,KAAA,cAAA0sD,KAAA,oBAAA9W,KAAA,QAAAT,KAAA,IAAA,MAAAF,OAAA,cAAA,UACAj1C,KAAA,QAAA0sD,KAAA,eAAA9W,KAAA,SAAAT,KAAA,KAAA,MAAA,MAAA,SACAn1C,KAAA,SAAA0sD,KAAA,gBAAA9W,KAAA,SAAAT,KAAA,OACAn1C,KAAA,KAAA0sD,KAAA,YAAA9W,KAAA,KAAAT,KAAA,QACAn1C,KAAA,SAAA0sD,KAAA,gBAAA9W,KAAA,SAAAT,KAAA,IAAA,SACAn1C,KAAA,SAAA0sD,KAAA,OAAA9W,KAAA,QAAAT,KAAA,YACAn1C,KAAA,OAAA0sD,KAAA,cAAA9W,KAAA,OAAAT,KAAA,KAAA,QACAn1C,KAAA,MAAA0sD,KAAA,0BAAA9W,KAAA,MAAAT,KAAA,MAAA,OAAA,OAAA,OAAA,WACAn1C,KAAA,MAAA0sD,KAAA,aAAA9W,KAAA,MAAAT,KAAA,SACAn1C,KAAA,aAAA0sD,KAAA,aAAA9W,KAAA,OAAAT,KAAA,MAAA,OAAA,OAAA,MAAA,OAAA,SACAn1C,KAAA,QAAA0sD,KAAA,eAAA9W,KAAA,MAAAT,KAAA,SACAn1C,KAAA,aAAA0sD,KAAA,2BAAA9W,KAAA,aAAAT,KAAA,MAAA,OAAA,UACAn1C,KAAA,mBAAA0sD,KAAA,oBAAA9W,KAAA,aAAAT,KAAA,aAAA,MAAA,MAAAF,OAAA,MAAA,gBACAj1C,KAAA,WAAA0sD,KAAA,kBAAA9W,KAAA,WAAAT,KAAA,WACAn1C,KAAA,SAAA0sD,KAAA,gBAAA9W,KAAA,SAAAT,KAAA,QAAA,MAAA,KAAA,OAAAv4C,KAAA,mBACAoD,KAAA,SAAA0sD,KAAA,gBAAA9W,KAAA,SAAAT,KAAA,QACAn1C,KAAA,IAAA0sD,KAAA,WAAA9W,KAAA,IAAAT,KAAA,OACAn1C,KAAA,IAAA0sD,KAAA,cAAA9W,KAAA,IAAAT,KAAA,IAAA,KAAAF,OAAA,aACAj1C,KAAA,mBAAA0sD,KAAA,aAAA9W,KAAA,MAAAT,KAAA,OAAAF,OAAA,SACAj1C,KAAA,cAAA0sD,KAAA,qBAAA9W,KAAA,QACA51C,KAAA,WAAA0sD,KAAA,kBAAA9W,KAAA,MAAAT,KAAA,UACAn1C,KAAA,OAAA0sD,KAAA,cAAA9W,KAAA,OAAAT,KAAA,MAAAF,OAAA,QAAA,UAAA,OAAA,KAAA,SACAj1C,KAAA,OAAA0sD,KAAA,iBAAA9W,KAAA,OAAAT,KAAA,QACAn1C,KAAA,MAAA0sD,KAAA,aAAA9W,KAAA,MAAAT,KAAA,SACAn1C,KAAA,OAAA0sD,KAAA,cAAA9W,KAAA,OAAAT,KAAA,UACAn1C,KAAA,QAAA0sD,KAAA,eAAA9W,KAAA,QAAAT,KAAA,WACAn1C,KAAA,SAAA0sD,KAAA,gBAAA9W,KAAA,SAAAT,KAAA,MAAA,QACAn1C,KAAA,OAAA0sD,KAAA,cAAA9W,KAAA,MAAAT,KAAA,UACAn1C,KAAA,QAAA0sD,KAAA,YAAA9W,KAAA,QAAAT,KAAA,KAAA,MAAA,QAAAF,OAAA,OAAA,KAAA,OAAAr4C,KAAA,eACAoD,KAAA,QAAA0sD,KAAA,oBAAA9W,KAAA,QAAAT,KAAA,MAAA,WACAn1C,KAAA,OAAA0sI,OAAA,cAAA,sBAAA92F,KAAA,OAAAT,KAAA,UACAn1C,KAAA,YAAA0sD,KAAA,eAAA9W,KAAA,YAAAT,KAAA,QACAn1C,KAAA,SAAA0sD,KAAA,gBAAA9W,KAAA,SAAAT,KAAA,SACAn1C,KAAA,OAAA0sD,KAAA,cAAA9W,KAAA,SACA51C,KAAA,MAAA0sD,KAAA,aAAA9W,KAAA,MAAAT,KAAA,OAAAF,OAAA,sBACAj1C,KAAA,SAAA0sD,KAAA,2BAAA9W,KAAA,SAAAT,KAAA,KAAA,UAAAF,OAAA,YACAj1C,KAAA,cAAA0sD,KAAA,qBAAA9W,KAAA,cAAAX,OAAA,QAAA,aACAj1C,KAAA,MAAA0sD,KAAA,aAAA9W,KAAA,MAAAT,KAAA,SACAn1C,KAAA,SAAA0sD,KAAA,gBAAA9W,KAAA,QACA51C,KAAA,WAAA0sD,KAAA,kBAAA9W,KAAA,QAAAT,KAAA,SACAn1C,KAAA,SAAA0sD,KAAA,cAAA9W,KAAA,SAAAT,KAAA,UACAn1C,KAAA,QAAA0sD,KAAA,eAAA9W,KAAA,QAAAT,KAAA,WACAn1C,KAAA,OAAA0sD,KAAA,cAAA9W,KAAA,SACA51C,KAAA,QAAA0sD,KAAA,eAAA9W,KAAA,OAAAT,KAAA,OAAA,OAAAF,OAAA,SACAj1C,KAAA,gBAAA0sD,KAAA,uBAAA9W,KAAA,UAAAT,KAAA,OACAn1C,KAAA,MAAA0sD,KAAA,aAAA9W,KAAA,MAAAT,KAAA,SACAn1C,KAAA,UAAA0sD,KAAA,iBAAA9W,KAAA,UAAAT,KAAA,aACAn1C,KAAA,cAAA0sD,KAAA,oBAAA9W,KAAA,eACA51C,KAAA,YAAA0sD,KAAA,YAAA9W,KAAA,SACA51C,KAAA,OAAA0sD,KAAA,cAAA9W,KAAA,OAAAT,KAAA,UACAn1C,KAAA,UAAA0sD,KAAA,iBAAA9W,KAAA,YACA51C,KAAA,QAAA0sD,KAAA,aAAA9W,KAAA,QAAAT,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,OACAn1C,KAAA,OAAA0sD,KAAA,cAAA9W,KAAA,OAAAT,KAAA,OAAA,QAAA,YACAn1C,KAAA,WAAA0sD,KAAA,kBAAA9W,KAAA,WAAAT,KAAA,SACAn1C,KAAA,SAAA0sD,KAAA,cAAA9W,KAAA,SAAAT,KAAA,SACAn1C,KAAA,aAAA0sD,KAAA,yBAAA9W,KAAA,aAAAT,KAAA,MAAAF,OAAA,QACAj1C,KAAA,iBAAA0sD,KAAA,sBAAA9W,KAAA,MAAAT,KAAA,OAAAF,OAAA,SACAj1C,KAAA,OAAA0sD,KAAA,cAAA9W,KAAA,SACA51C,KAAA,UAAA0sD,KAAA,gBAAA9W,KAAA,SAAAT,KAAA,YACAn1C,KAAA,SAAA0sD,KAAA,YAAA9W,KAAA,KAAAT,KAAA,QACAn1C,KAAA,WAAA0sD,KAAA,gBAAA9W,KAAA,WAAAT,KAAA,SACAn1C,KAAA,WAAA0sD,KAAA,gBAAA9W,KAAA,WAAAT,KAAA,SACAn1C,KAAA,UAAA0sD,KAAA,iBAAA9W,KAAA,UAAAT,KAAA,OACAn1C,KAAA,OAAA0sD,KAAA,cAAA9W,KAAA,OAAAT,KAAA,MAAA,UACAn1C,KAAA,mBAAA0sI,OAAA,eAAA,cAAA92F,KAAA,MAAAT,KAAA,SACAn1C,KAAA,MAAA0sI,OAAA,kBAAA,YAAA92F,KAAA,MAAAT,KAAA,MAAA,MAAA,MAAA,OAAAF,OAAA,MAAA,OAAA,SACAj1C,KAAA,SAAA0sD,KAAA,qBAAA9W,KAAA,SAAAT,KAAA,KAAA,YACAn1C,KAAA,QAAA0sD,KAAA,eAAA9W,KAAA,QAAAT,KAAA,QACAn1C,KAAA,OAAA0sI,OAAA,cAAA,aAAA92F,KAAA,OAAAT,KAAA,OAAA,OAAAF,OAAA,SACAj1C,KAAA,MAAA0sD,KAAA,aAAA9W,KAAA,MAAAT,KAAA,SACAn1C,KAAA,SAAA0sD,KAAA,gBAAA9W,KAAA,SAAAT,KAAA,SAAA,QAAA,SACAn1C,KAAA,KAAA0sD,KAAA,YAAA9W,KAAA,SAAAT,KAAA,QACAn1C,KAAA,UAAA0sD,KAAA,iBAAA9W,KAAA,SAAAT,KAAA,YAGA,KAAA,GAAAzwD,GAAA,EAAAA,EAAA02D,EAAAqxF,SAAA3oJ,OAAAY,IAAA,CACA,GAAAq0C,GAAAqiB,EAAAqxF,SAAA/nJ,EACAq0C,GAAA2zG,QAAA3zG,EAAA2zB,KAAA3zB,EAAA2zG,MAAA,IAGAtxF,EAAAuxF,eAAA,SAAAjgF,GACAA,EAAAA,EAAAtoE,aACA,KAAA,GAAAM,GAAA,EAAAA,EAAA02D,EAAAqxF,SAAA3oJ,OAAAY,IAAA,CACA,GAAAq0C,GAAAqiB,EAAAqxF,SAAA/nJ,EACA,IAAAq0C,EAAA2zB,MAAAA,EAAA,MAAA3zB,EACA,IAAAA,EAAA2zG,MAAA,IAAA,GAAAvlJ,GAAA,EAAAA,EAAA4xC,EAAA2zG,MAAA5oJ,OAAAqD,IACA,GAAA4xC,EAAA2zG,MAAAvlJ,IAAAulE,EAAA,MAAA3zB,GAEA,MAAA,SAAAn0C,KAAA8nE,GAAAtR,EAAAuxF,eAAA,mBACA,UAAA/nJ,KAAA8nE,GAAAtR,EAAAuxF,eAAA,oBAAA,QAGAvxF,EAAAwxF,oBAAA,SAAAz3F,GACA,IAAA,GAAAzwD,GAAA,EAAAA,EAAA02D,EAAAqxF,SAAA3oJ,OAAAY,IAAA,CACA,GAAAq0C,GAAAqiB,EAAAqxF,SAAA/nJ,EACA,IAAAq0C,EAAAoc,IAAA,IAAA,GAAAhuD,GAAA,EAAAA,EAAA4xC,EAAAoc,IAAArxD,OAAAqD,IACA,GAAA4xC,EAAAoc,IAAAhuD,IAAAguD,EAAA,MAAApc,KAIAqiB,EAAAyxF,mBAAA,SAAAl9G,GACA,IAAA,GAAAjrC,GAAA,EAAAA,EAAA02D,EAAAqxF,SAAA3oJ,OAAAY,IAAA,CACA,GAAAq0C,GAAAqiB,EAAAqxF,SAAA/nJ,EACA,IAAAq0C,EAAAn8B,MAAAm8B,EAAAn8B,KAAAhY,KAAA+qC,GAAA,MAAAoJ,GAEA,GAAA+zG,GAAAn9G,EAAA2C,YAAA,KACA6iB,EAAA23F,GAAA,GAAAn9G,EAAAhY,UAAAm1H,EAAA,EAAAn9G,EAAA7rC,OACA,IAAAqxD,EAAA,MAAAiG,GAAAwxF,oBAAAz3F,IAGAiG,EAAA2xF,eAAA,SAAA/sI,GACAA,EAAAA,EAAA5b,aACA,KAAA,GAAAM,GAAA,EAAAA,EAAA02D,EAAAqxF,SAAA3oJ,OAAAY,IAAA,CACA,GAAAq0C,GAAAqiB,EAAAqxF,SAAA/nJ,EACA,IAAAq0C,EAAA/4B,KAAA5b,eAAA4b,EAAA,MAAA+4B,EACA,IAAAA,EAAAkc,MAAA,IAAA,GAAA9tD,GAAA,EAAAA,EAAA4xC,EAAAkc,MAAAnxD,OAAAqD,IACA,GAAA4xC,EAAAkc,MAAA9tD,GAAA/C,eAAA4b,EAAA,MAAA+4B,OC/MA,SAAAu+C,GACA,gBAAAv0F,UAAA,gBAAAD,QACAw0F,EAAAnxD,QAAA,wBAAAA,QAAA,cAAAA,QAAA,YACA,kBAAA7Q,SAAAA,OAAAC,IACAD,OAAA,6BAAA,uBAAA,aAAA,WAAAgiE,GAEAA,EAAAl8B,aACA,SAAAA,GACA,YAEAA,GAAAkR,WAAA,WAAA,SAAA0gF,EAAAC,GAKA,QAAAngF,GAAA9sD,GACA,GAAAo7C,EAAA2xF,eAAA,CACA,GAAAhoF,GAAA3J,EAAA2xF,eAAA/sI,EACA+kD,KAAA/kD,EAAA+kD,EAAA2H,MAAA3H,EAAA2nF,MAAA,IAEA,GAAA92F,GAAAwF,EAAA0R,QAAAkgF,EAAAhtI,EACA,OAAA,QAAA41C,EAAA51C,KAAA,KAAA41C,EAkEA,QAAAs3F,GAAA39E,EAAAj8D,EAAAxM,GAEA,MADAwM,GAAAxM,EAAAwM,EAAA03H,OAAAlkI,EACAA,EAAAyoE,EAAAj8D,GAGA,QAAA65I,GAAA59E,EAAAj8D,EAAAxM,GAEA,MADAwM,GAAAxM,EAAAwM,EAAAy1H,MAAAjiI,EACAA,EAAAyoE,EAAAj8D,GAGA,QAAA85I,GAAAj3F,GACA,OAAAA,IAAA,KAAAvxD,KAAAuxD,EAAAe,QAKA,QAAA0Y,GAAAt8D,GAuBA,MArBAA,GAAA+5I,WAAA,EAEA/5I,EAAAg6I,IAAA,EAEAh6I,EAAAi6I,QAAA,EAEAj6I,EAAAk6I,eAAA,EAEAl6I,EAAAmsI,MAAA,EAEAnsI,EAAAm6I,cAAA,EACAn6I,EAAAxM,GAAA4mJ,IACAp6I,EAAAxM,EAAA6mJ,EACAr6I,EAAAy1H,MAAA6kB,GAGAt6I,EAAAk+D,cAAA,EACAl+D,EAAAu6I,sBAAA,EAEAv6I,EAAAw6I,SAAAx6I,EAAAy6I,SACAz6I,EAAAy6I,SAAA,KACA,KAGA,QAAAH,GAAAr+E,EAAAj8D,GAEA,GAAA+0F,GAAA94B,EAAA84B,MAEA2lD,EAAA16I,EAAA27B,QAAA,EACAg/G,EAAA36I,EAAAm6I,YAEAn6I,GAAAm6I,cAAA,EAEAO,IACA16I,EAAA46I,iBAAA,GACA56I,EAAA46I,gBAAA,IACA56I,EAAAgtF,aAAAhtF,EAAA46I,iBAEA56I,EAAA27B,KAAA,MACA37B,EAAAgtF,YAAA,EACAhtF,EAAA27B,KAAA,KAEA37B,EAAA27B,MAAA,EAIA,IAAAhqC,GAAA,IACA,IAAAqO,EAAA46I,iBAAA,EAEA,MADA3+E,GAAAm5B,YACAulD,GAAAb,EAAA95I,EAAAw6I,WACAx6I,EAAAgtF,aAAA,EACAhtF,EAAAm6I,cAAA,EACAU,EAAAnhH,MAEA,IAEA,IAAAuiC,EAAAk5B,WACA,MAAA,KACA,KAAAxjG,EAAAsqE,EAAAtqE,MAAAmpJ,KAAAnpJ,EAAA,GAAAnB,QAAA,EAIA,MAHAwP,GAAA4I,OAAAjX,EAAA,GAAAnB,OACAmpJ,EAAAoB,sBAAA/6I,EAAAg7I,WAAA,UACAh7I,EAAAxM,EAAAwM,EAAA03H,OACAujB,EAAAj7I,EACA,MAAA85I,EAAA95I,EAAAw6I,WAAAx6I,EAAAmsI,OAAAuO,GACAC,KAAAhpJ,EAAAsqE,EAAAtqE,MAAAupJ,IAIA,MAHAl7I,GAAA4I,OAAA,KAAAjX,EAAA,GAAA2yB,OAAA,GAAA,EAAA,EACAq1H,EAAAoB,sBAAA/6I,EAAAg7I,WAAA,UACAh7I,EAAAxM,EAAAwM,EAAA03H,OACAujB,EAAAj7I,EACA,IAAAi8D,EAAAg5B,IAAA,KAIA,MAHAj1F,GAAAmsI,MAAAp3C,EAAA,EAAA/0F,EAAAmsI,MAAA,EACAwN,EAAAoB,sBAAA/6I,EAAAg7I,WAAA,SACA/+E,EAAAk5B,WACA8lD,EAAAj7I,EACA,IAAA,MAAAi8D,EAAA+4B,OACA,MAAA4kD,GAAA39E,EAAAj8D,EAAAm7I,EACA,IAAAl/E,EAAAtqE,MAAAypJ,GAAA,GAEA,MADAp7I,GAAA4kD,IAAA,EACAi2F,EAAAj2F,EACA,IAAAjzD,EAAAsqE,EAAAtqE,MAAA0pJ,GAAA,CACA,GAAAC,GAAA3pJ,EAAA,GAAA,KAAA,IAOA,KANAqO,EAAAgtF,YAAA/wB,EAAAs5B,SAAAt5B,EAAA3T,UAAA93D,OACAwP,EAAA27B,MAAA,EAKA37B,EAAAu7I,WAAAt/E,EAAAs5B,SAAAv1F,EAAAu7I,UAAAv7I,EAAAu7I,UAAA/qJ,OAAA,IACAwP,EAAAu7I,UAAAp3I,KAWA,OAPAnE,GAAAu7I,UAAAnlJ,KAAA4J,EAAAgtF,aAEA2sD,EAAA6B,WAAAv/E,EAAAtqE,MAAA8pJ,GAAA,KACAz7I,EAAA07I,UAAA,GAEA17I,EAAAxM,EAAAwM,EAAA03H,OACAiiB,EAAAoB,sBAAA/6I,EAAAg7I,YAAA,OAAA,QAAAM,IACAL,EAAAj7I,GACA,MAAA25I,GAAAgC,mBAAAhqJ,EAAAsqE,EAAAtqE,MAAAiqJ,GAAA,KACA57I,EAAA67I,YAAAlqJ,EAAA,GAEAqO,EAAA87I,UAAAtiF,EAAA7nE,EAAA,IACAqO,EAAA87I,YAAA97I,EAAA+7I,WAAAj0F,EAAAuS,WAAAr6D,EAAA87I,YACA97I,EAAAxM,EAAAwM,EAAAy1H,MAAAnmF,EACAqqG,EAAAoB,sBAAA/6I,EAAAg7I,WAAA,cACAh7I,EAAA05B,MAAA,EACAuhH,EAAAj7I,IAGA45I,EAAA39E,EAAAj8D,EAAAA,EAAA03H,QAGA,QAAA0iB,GAAAn+E,EAAAj8D,GACA,GAAA9L,GAAAskJ,EAAA3sG,MAAAowB,EAAAj8D,EAAAg8I,UACA,KAAAC,EAAA,CACA,GAAA1/E,GAAAzU,EAAAsS,UAAAo+E,EAAAx4I,EAAAg8I,YACA,OAAAz/E,EAAAja,KAAA51C,MAAA,OAAA6vD,EAAAv8D,MAAAg3I,WACAz6E,EAAAv8D,MAAA+c,SAAAw/C,EAAAv8D,MAAA4J,SAAA6uI,UACAz4I,EAAAk8I,WAAAjgF,EAAA3T,UAAAjoD,QAAA,MAAA,KACAL,EAAAxM,EAAA6mJ,EACAr6I,EAAAy1H,MAAA6kB,EACAt6I,EAAAg8I,UAAA,MAGA,MAAA9nJ,GAGA,QAAAo7C,GAAA2sB,EAAAj8D,GACA,GAAAA,EAAA67I,aAAA5/E,EAAAtqE,MAAAqO,EAAA67I,aAAA,CACAlC,EAAAoB,sBAAA/6I,EAAAg7I,WAAA,aACA,IAAAmB,GAAAlB,EAAAj7I,EAMA,OALAA,GAAA87I,UAAA97I,EAAA+7I,WAAA,KACA/7I,EAAAy1H,MAAA6kB,EACAt6I,EAAAxM,EAAA6mJ,EACAr6I,EAAA67I,YAAA,KACA77I,EAAA05B,KAAA,EACAyiH,EACA,MAAAn8I,GAAA67I,aAAA5/E,EAAAo5B,OAAAr1F,EAAA67I,aACA,UACA77I,EAAA87I,UACA97I,EAAA87I,UAAAjwG,MAAAowB,EAAAj8D,EAAA+7I,aAEA9/E,EAAAm5B,YACAylD,EAAAnhH,MAKA,QAAAuhH,GAAAj7I,GACA,GAAAm7D,KAEA,IAAAn7D,EAAAg7I,WAAA,CACA7/E,EAAA/kE,KAAAykJ,EAAAG,YAEA,gBAAAh7I,GAAAg7I,aAAAh7I,EAAAg7I,YAAAh7I,EAAAg7I,YAEA,KAAA,GAAA5pJ,GAAA,EAAAA,EAAA4O,EAAAg7I,WAAAxqJ,OAAAY,IACA+pE,EAAA/kE,KAAAykJ,EAAAG,WAAA,IAAAh7I,EAAAg7I,WAAA5pJ,IAEA,WAAA4O,EAAAg7I,WAAA5pJ,IACA+pE,EAAA/kE,KAAAykJ,EAAAG,WAAA,IAAAh7I,EAAAg7I,WAAA5pJ,GAAA,IAAA4O,EAAA4I,QAKA,UAAA5I,EAAAg7I,WAAA5pJ,MACAuoJ,EAAAyC,oBAAAzC,EAAAyC,oBAAAp8I,EAAAmsI,MACAhxE,EAAA/kE,KAAAykJ,EAAAG,WAAA,IAAAh7I,EAAAg7I,WAAA5pJ,GAAA,IAAA4O,EAAAmsI,OAEAhxE,EAAA/kE,KAAA,UAMA,GAAA4J,EAAAq8I,SAEA,MADAlhF,GAAA/kE,KAAA,QACA+kE,EAAA3qE,OAAA2qE,EAAA18D,KAAA,KAAA,IAEA,IAAAuB,EAAAs8I,WAEA,MADAnhF,GAAA/kE,KAAA,YACA+kE,EAAA3qE,OAAA2qE,EAAA18D,KAAA,KAAA,IA6BA,IA1BAuB,EAAAu8I,SACAphF,EAAA/kE,KAAAykJ,EAAA0B,SAAA,QAEAv8I,EAAAi6I,QAAA9+E,EAAA/kE,KAAAykJ,EAAAZ,QACAj6I,EAAAg6I,IAAA7+E,EAAA/kE,KAAAykJ,EAAAb,IACAh6I,EAAAk6I,eAAA/+E,EAAA/kE,KAAAykJ,EAAAX,eACAl6I,EAAAw8I,UAAArhF,EAAA/kE,KAAAykJ,EAAA2B,UACAx8I,EAAA05B,MAAAyhC,EAAA/kE,KAAAykJ,EAAAnhH,MACA15B,EAAAwJ,OAAA2xD,EAAA/kE,KAAAykJ,EAAArxI,OACAxJ,EAAAy8I,cAAAthF,EAAA/kE,KAAAykJ,EAAA4B,aAAA,QACAz8I,EAAA08I,aAAAvhF,EAAA/kE,KAAAykJ,EAAA6B,cAGA18I,EAAA4I,QAAAuyD,EAAA/kE,KAAAykJ,EAAAjyI,OAAAiyI,EAAAjyI,OAAA,IAAA5I,EAAA4I,QAEA5I,EAAAmsI,QACAhxE,EAAA/kE,KAAAykJ,EAAA1O,QAGAwN,EAAAyC,oBAAAzC,EAAAyC,oBAAAp8I,EAAAmsI,MACAhxE,EAAA/kE,KAAAykJ,EAAA1O,MAAA,IAAAnsI,EAAAmsI,OAEAhxE,EAAA/kE,KAAAykJ,EAAA1O,MAAA,IAAAwN,EAAAyC,qBAIAp8I,EAAA27B,QAAA,EAAA,CACA,GAAAghH,IAAA38I,EAAAu7I,UAAA/qJ,OAAA,GAAA,CACAmsJ,GAEA,IAAAA,EACAxhF,EAAA/kE,KAAAykJ,EAAA+B,OAEAzhF,EAAA/kE,KAAAykJ,EAAAgC,OAJA1hF,EAAA/kE,KAAAykJ,EAAAiC,OAcA,MANA98I,GAAAu6I,qBACAp/E,EAAA/kE,KAAA,2BACA4J,EAAAk+D,eACA/C,EAAA/kE,KAAA,mBAAA4J,EAAAk+D,cAAA,EAAA,IAAA,MAGA/C,EAAA3qE,OAAA2qE,EAAA18D,KAAA,KAAA,KAGA,QAAAs+I,GAAA9gF,EAAAj8D,GACA,GAAAi8D,EAAAtqE,MAAAqrJ,GAAA,GACA,MAAA/B,GAAAj7I,GAKA,QAAAq6I,GAAAp+E,EAAAj8D,GACA,GAAA9L,GAAA8L,EAAA9P,KAAA+rE,EAAAj8D,EACA,IAAA,mBAAA9L,GACA,MAAAA,EAEA,IAAA8L,EAAA27B,KAEA,MADA37B,GAAA27B,KAAA,KACAs/G,EAAAj7I,EAGA,IAAAA,EAAA07I,SAAA,CACA,GAAAW,GAAA,MAAApgF,EAAAtqE,MAAA8pJ,GAAA,GAAA,EAKA,OAJAY,GAAAr8I,EAAAq8I,UAAA,EACAr8I,EAAAs8I,YAAA,EACA3C,EAAAoB,sBAAA/6I,EAAAg7I,WAAA,QACAh7I,EAAA07I,UAAA,EACAT,EAAAj7I,GAMA,GAHAA,EAAAq8I,UAAA,EACAr8I,EAAAs8I,YAAA,EAEAt8I,EAAA4I,QAAAqzD,EAAAtqE,MAAA,QAAA,GAEA,MADAgoJ,GAAAoB,sBAAA/6I,EAAAg7I,WAAA,UACAC,EAAAj7I,EAGA,IAAAitC,GAAAgvB,EAAA34D,MAGA,IAAAtD,EAAA+5I,UAAA,CACA/5I,EAAA+5I,WAAA,CACA,IAAAkD,GAAAhwG,CACA,OAAAA,IACAgwG,EAAA,KAEAA,GAAAA,EAAA,IAAA/pJ,QAAA,yBAAA,OACA,IAAA4gD,GAAA,aAAAmpG,EAAA,yBAAAA,CACA,IAAAhhF,EAAAtqE,MAAA,GAAA4S,QAAAuvC,IAAA,GACA,MAAA+mG,GAAA0B,SAKA,GAAA,MAAAtvG,EAAA,CACA,GAAAiwG,GAAAl9I,EAAAg7I,UACArB,GAAAoB,sBAAA/6I,EAAAg7I,WAAA,QACA/+E,EAAAi5B,SAAA,IACA,IAAAvxD,GAAAs4B,EAAA3T,UAAA93D,MACA,IAAA,GAAAwP,EAAA05B,KAEA,MADA15B,GAAA05B,KAAAiK,EACAs3G,EAAAj7I,EACA,IAAA2jC,GAAA3jC,EAAA05B,KAAA,CACA,GAAAj5B,GAAAw6I,EAAAj7I,EAEA,OADAA,GAAA05B,KAAA,EACAj5B,EAGA,MADAT,GAAAg7I,WAAAkC,EACAjC,EAAAj7I,GAEA,GAAAA,EAAA05B,KACA,MAAAuhH,GAAAj7I,EAGA,IAAA,OAAAitC,IACAgvB,EAAA34D,OACAq2I,EAAAoB,qBAAA,CACA,GAAArqJ,GAAAuqJ,EAAAj7I,GACAm9I,EAAAtC,EAAAG,WAAA,SACA,OAAAtqJ,GAAAA,EAAA,IAAAysJ,EAAAA,EAIA,GAAA,MAAAlwG,GAAAgvB,EAAAtqE,MAAA,yBAAA,GAIA,MAHAqO,GAAA08I,aAAA,EACA18I,EAAAwJ,OAAA,EACAmwI,EAAAoB,sBAAA/6I,EAAAg7I,WAAA,SACAC,EAAAj7I,EAGA,IAAA,MAAAitC,GAAAjtC,EAAA08I,aAAAzgF,EAAAtqE,MAAA,+BAAA,GAIA,MAHAqO,GAAA08I,aAAA,EACA18I,EAAAy8I,cAAA,EACA9C,EAAAoB,sBAAA/6I,EAAAg7I,WAAA,SACAC,EAAAj7I,EAGA,IAAA,MAAAitC,GAAAjtC,EAAAy8I,aAAA,CACA9C,EAAAoB,sBAAA/6I,EAAAg7I,WAAA,QACA,IAAAtqJ,GAAAuqJ,EAAAj7I,EAIA,OAHAA,GAAAy8I,cAAA,EACAz8I,EAAAwJ,OAAA,EACAxJ,EAAA03H,OAAA13H,EAAAxM,EAAA+oJ,EACA7rJ,EAGA,GAAA,MAAAu8C,GAAAgvB,EAAAtqE,MAAA,8BAAA,KAAAqO,EAAAwJ,MAGA,MAFAxJ,GAAAw8I,UAAA,EACA7C,EAAAoB,sBAAA/6I,EAAAg7I,WAAA,QACAC,EAAAj7I,EAGA,IAAA,MAAAitC,GAAAjtC,EAAAw8I,UAAAvgF,EAAAtqE,MAAA,qBAAA,GAAA,CACAgoJ,EAAAoB,sBAAA/6I,EAAAg7I,WAAA,OACA,IAAAtqJ,GAAAuqJ,EAAAj7I,EAGA,OAFAA,GAAAw8I,UAAA,EACAx8I,EAAA03H,OAAA13H,EAAAxM,EAAA+oJ,EACA7rJ,EAGA,GAAA,MAAAu8C,GAAAgvB,EAAAtqE,MAAA,wCAAA,GAAA,CACAqO,EAAAxM,EAAAwM,EAAA03H,OAAA0lB,EACAzD,EAAAoB,sBAAA/6I,EAAAg7I,WAAA,OACA,IAAAtqJ,GAAAuqJ,EAAAj7I,EAMA,OALAtP,GACAA,GAAA,IAEAA,EAAA,GAEAA,EAAAmqJ,EAAAuC,WAGA,GAAA,MAAAnwG,GAAAgvB,EAAAtqE,MAAA,8BAAA,GAAA,CACAqO,EAAAxM,EAAAwM,EAAA03H,OAAA0lB,EACAzD,EAAAoB,sBAAA/6I,EAAAg7I,WAAA,OACA,IAAAtqJ,GAAAuqJ,EAAAj7I,EAMA,OALAtP,GACAA,GAAA,IAEAA,EAAA,GAEAA,EAAAmqJ,EAAAwC,UAGA,GAAA,MAAApwG,GAAAgvB,EAAAtqE,MAAA,2DAAA,GAAA,CACA,GAAA0C,GAAA4nE,EAAArY,OAAAvjD,QAAA,IAAA47D,EAAAnlD,IACA,IAAAziB,IAAA,EAAA,CACA,GAAAipJ,GAAArhF,EAAArY,OAAAv/B,UAAA43C,EAAA7nE,MAAAC,EACA,wCAAA/C,KAAAgsJ,KAAAt9I,EAAAk8I,WAAA,GAIA,MAFAjgF,GAAAq5B,OAAA,GACAt1F,EAAAg8I,UAAAl0F,EAAAuS,WAAAm+E,GACAqB,EAAA59E,EAAAj8D,EAAAo6I,GAGA,GAAA,MAAAntG,GAAAgvB,EAAAtqE,MAAA,YAEA,MADAqO,GAAAk8I,WAAA,EACA,KACA,IAAA,MAAAjvG,GAAA,MAAAA,EAAA,CAEA,IADA,GAAArD,GAAA,EAAA91B,EAAA,GAAAmoD,EAAAnlD,IAAA,IAAAmlD,EAAArY,OAAAt/B,OAAA23C,EAAAnlD,IAAA,GACA8yB,EAAA,GAAAqyB,EAAAg5B,IAAAhoD,IAAArD,GACA,IAAA71B,GAAAkoD,EAAA+4B,QAAA,IAEAuoD,GAAA,KAAAjsJ,KAAAyiB,MAAAypI,EAAAlsJ,KAAAyiB,IAAA,KAAAziB,KAAAwiB,IAAA0pI,EAAAlsJ,KAAAwiB,IACA2pI,GAAA,KAAAnsJ,KAAAwiB,MAAA0pI,EAAAlsJ,KAAAwiB,IAAA,KAAAxiB,KAAAyiB,IAAAypI,EAAAlsJ,KAAAyiB,IACA2pI,EAAA,KAAAC,EAAA,IAaA,IAZA/zG,EAAA,IACA5pC,EAAAg6I,KAAAuD,GAAA,MAAAtwG,GAAAwwG,IAAAD,EAAAlsJ,KAAAwiB,GAEA9T,EAAAg6I,IAAA/sG,IAAAwwG,GAAA,MAAAxwG,GAAAswG,IAAAC,EAAAlsJ,KAAAyiB,KACA2pI,GAAA,GAFAA,GAAA,GAIA9zG,EAAA,IACA5pC,EAAAi6I,SAAAsD,GAAA,MAAAtwG,GAAAwwG,IAAAD,EAAAlsJ,KAAAwiB,GAEA9T,EAAAi6I,QAAAhtG,IAAAwwG,GAAA,MAAAxwG,GAAAswG,IAAAC,EAAAlsJ,KAAAyiB,KACA4pI,GAAA,GAFAA,GAAA,GAIA,MAAAA,GAAA,MAAAD,EAAA,CACA/D,EAAAoB,sBAAA/6I,EAAAg7I,WAAA,MAAA0C,EAAA,SAAA,MAAAC,EAAA,KAAA,aACAD,KAAA,IAAA19I,EAAAg6I,GAAA/sG,GACA0wG,KAAA,IAAA39I,EAAAi6I,OAAAhtG,EACA,IAAAxsC,GAAAw6I,EAAAj7I,EAGA,OAFA09I,MAAA,IAAA19I,EAAAg6I,IAAA,GACA2D,KAAA,IAAA39I,EAAAi6I,QAAA,GACAx5I,OAEA,IAAA,MAAAwsC,IACAgvB,EAAAg5B,IAAA,MAAAh5B,EAAAg5B,IAAA,MAAA,CACA,GAAA,MAAAh5B,EAAA+4B,OACA,MAAAimD,GAAAj7I,EAEAi8D,GAAAq5B,OAAA,GAKA,GAAAqkD,EAAAO,cACA,GAAA,MAAAjtG,GAAAgvB,EAAAi5B,SAAAjoD,GAAA,CACA,GAAAjtC,EAAAk6I,cAAA,CACAP,EAAAoB,sBAAA/6I,EAAAg7I,WAAA,gBACA,IAAAv6I,GAAAw6I,EAAAj7I,EAEA,OADAA,GAAAk6I,eAAA,EACAz5I,EACA,GAAAw7D,EAAAtqE,MAAA,UAAA,GAGA,MAFAqO,GAAAk6I,eAAA,EACAP,EAAAoB,sBAAA/6I,EAAAg7I,WAAA,iBACAC,EAAAj7I,OAEA,IAAA,MAAAitC,GACAgvB,EAAAtqE,MAAA,OAAA,GAAA,CACA,GAAA,MAAAsqE,EAAA+4B,OACA,MAAAimD,GAAAj7I,EAEAi8D,GAAAq5B,OAAA,GAcA,MARA,MAAAroD,IACAgvB,EAAAtqE,MAAA,OAAA,GACAqO,EAAAk+D,gBACAl+D,EAAAk+D,gBACAl+D,EAAAu6I,sBAAA,IAIAU,EAAAj7I,GAGA,QAAAo9I,GAAAnhF,EAAAj8D,GACA,GAAAitC,GAAAgvB,EAAA34D,MAEA,IAAA,MAAA2pC,EAAA,CACAjtC,EAAAxM,EAAAwM,EAAA03H,OAAA2iB,EACAV,EAAAoB,sBAAA/6I,EAAAg7I,WAAA,OACA,IAAAtqJ,GAAAuqJ,EAAAj7I,EAMA,OALAtP,GACAA,GAAA,IAEAA,EAAA,GAEAA,EAAAmqJ,EAAAuC,WAKA,MAFAnhF,GAAAtqE,MAAA,UAAA,GAEAkpJ,EAAAuC,WAGA,QAAAb,GAAAtgF,EAAAj8D,GAEA,GAAAi8D,EAAAk5B,WACA,MAAA,KAEA,IAAAloD,GAAAgvB,EAAA34D,MACA,OAAA,MAAA2pC,GAAA,MAAAA,GACAjtC,EAAAxM,EAAAwM,EAAA03H,OAAAkmB,EAAA,MAAA3wG,EAAA,IAAA,IAAA,GACA0sG,EAAAoB,sBAAA/6I,EAAAg7I,WAAA,eACAh7I,EAAAu8I,UAAA,EACAtB,EAAAj7I,IAEA,QAQA,QAAA49I,GAAAC,GACA,MAAA,UAAA5hF,EAAAj8D,GACA,GAAAitC,GAAAgvB,EAAA34D,MAEA,IAAA2pC,IAAA4wG,EAAA,CACA79I,EAAAxM,EAAAwM,EAAA03H,OAAA2iB,EACAV,EAAAoB,sBAAA/6I,EAAAg7I,WAAA,cACA,IAAA8C,GAAA7C,EAAAj7I,EAEA,OADAA,GAAAu8I,UAAA,EACAuB,EAKA,MAFA7hF,GAAAtqE,MAAAosJ,EAAAF,IACA79I,EAAAu8I,UAAA,EACAtB,EAAAj7I,IAIA,QAAAm7I,GAAAl/E,EAAAj8D,GACA,MAAAi8D,GAAAtqE,MAAA,sBAAA,IACAqO,EAAAxM,EAAAwqJ,EACA/hF,EAAA34D,OACAq2I,EAAAoB,sBAAA/6I,EAAAg7I,WAAA,QACAh7I,EAAAw8I,UAAA,EACAvB,EAAAj7I,IAEA45I,EAAA39E,EAAAj8D,EAAAq6I,GAGA,QAAA2D,GAAA/hF,EAAAj8D,GACA,GAAAi8D,EAAAtqE,MAAA,QAAA,GAAA,CACAqO,EAAAxM,EAAAwM,EAAA03H,OAAAumB,EACAtE,EAAAoB,sBAAA/6I,EAAAg7I,WAAA,OACA,IAAAmB,GAAAlB,EAAAj7I,EAEA,OADAA,GAAAw8I,UAAA,EACAL,EAKA,MAFAlgF,GAAAtqE,MAAA,mBAAA,GAEAkpJ,EAAA2B,SAGA,QAAAyB,GAAAhiF,EAAAj8D,GAEA,MAAAi8D,GAAAk5B,WACA,MAGAl5B,EAAAtqE,MAAA,WAAA,GAEAo0B,SAAAk2C,EAAA+4B,OACAh1F,EAAA+5I,WAAA,EAEA99E,EAAAtqE,MAAA,uFAAA,GAEAqO,EAAAxM,EAAAwM,EAAA03H,OAAA2iB,EACAQ,EAAA0B,SAAA,QA1oBA,GAAA/D,GAAA1wF,EAAA0R,QAAAkgF,EAAA,aACAuC,EAAA,QAAAzD,EAAA9rI,IAaAqZ,UAAA4zH,EAAAoB,sBACApB,EAAAoB,qBAAA,GAIAh1H,SAAA4zH,EAAAyC,qBACAzC,EAAAyC,mBAAA,GAQAr2H,SAAA4zH,EAAA6B,YAAA7B,EAAA6B,WAAA,GAGAz1H,SAAA4zH,EAAAO,gBACAP,EAAAO,eAAA,GAGAn0H,SAAA4zH,EAAAuE,qBACAvE,EAAAuE,sBAEA,IAAArD,IACAjyI,OAAA,SACA8wB,KAAA,UACAyyG,MAAA,QACA2Q,MAAA,aACAF,MAAA,aACAC,MAAA,UACAj4F,GAAA,KACAp7C,MAAA,QACAizI,aAAA,iBACAC,YAAA,eACA1B,WAAA,aACAoC,WAAA,OACAC,UAAA,OACAb,SAAA,OACAD,SAAA,SACAvC,GAAA,KACAC,OAAA,SACAC,cAAA,gBAGA,KAAA,GAAAiE,KAAAtD,GACAA,EAAAt6I,eAAA49I,IAAAxE,EAAAuE,mBAAAC,KACAtD,EAAAsD,GAAAxE,EAAAuE,mBAAAC,GAIA,IAAA/C,GAAA,6BACAC,EAAA,+BACAI,EAAA,mBACAX,EAAAnB,EAAAyE,2BAAA,QAAA,eACAlD,EAAA,0BACA8B,EAAA,0BACApB,EAAA,GAAAr3I,QAAA,MAAAo1I,EAAAgC,oBAAA,EAAA,YAAAhC,EAAAgC,kBACA,uBACA6B,EAAA,8CAmgBAO,GACAM,IAAA,oDACAC,IAAA,sDA+DAh8F,GACA+X,WAAA,WACA,OACA7mE,EAAA8mJ,EAEAE,SAAA,KACAC,SAAA,KAEAhlB,MAAA6kB,EACA0B,UAAA,KACAhvD,YAAA,EAEA0qC,OAAA2iB,EACAnqJ,KAAA6sJ,EAEA/B,YAAA,EACAwB,UAAA,EACAD,UAAA,EACAxC,WAAA,EACArgH,KAAA,EACAsgH,IAAA,EACAC,QAAA,EACArxI,OAAA,EACAg8C,IAAA,EACA82F,UAAA,EACA//G,MAAA,EACA4/G,aACApP,MAAA,EACAjuE,cAAA,EACAq8E,sBAAA,EACAL,eAAA,EACA2B,YAAA,OAIA3hF,UAAA,SAAA9hE,GACA,OACA5E,EAAA4E,EAAA5E,EAEAgnJ,SAAApiJ,EAAAoiJ,SACAC,SAAAriJ,EAAAqiJ,SAEAhlB,MAAAr9H,EAAAq9H,MACAumB,UAAA5jJ,EAAA4jJ,WAAAl0F,EAAAoS,UAAAs+E,EAAApgJ,EAAA4jJ,WACAhvD,YAAA50F,EAAA40F,YAEA8uD,UAAA1jJ,EAAA0jJ,UACAC,WAAA3jJ,EAAA0jJ,UAAAh0F,EAAAoS,UAAA9hE,EAAA0jJ,UAAA1jJ,EAAA2jJ,YAAA,KAEArkB,OAAAt/H,EAAAs/H,OACAxnI,KAAAkI,EAAAlI,KACA8qJ,YAAA,EACAjB,UAAA3hJ,EAAA2hJ,UACArgH,KAAAthC,EAAAshC,KACAsgH,GAAA5hJ,EAAA4hJ,GACAC,OAAA7hJ,EAAA6hJ,OACAC,cAAA9hJ,EAAA8hJ,cACAtxI,OAAAxQ,EAAAwQ,OACAg8C,GAAAxsD,EAAAwsD,GACA82F,SAAAtjJ,EAAAsjJ,SACA//G,KAAAvjC,EAAAujC,KACA4/G,UAAAnjJ,EAAAmjJ,UAAAjpJ,MAAA,GACA65I,MAAA/zI,EAAA+zI,MACAgO,aAAA/hJ,EAAA+hJ,aACAj8E,cAAA9lE,EAAA8lE,cACAq8E,qBAAAniJ,EAAAmiJ,qBACA2B,UAAA9jJ,EAAA8jJ,UACAL,YAAAzjJ,EAAAyjJ,cAIAhwG,MAAA,SAAAowB,EAAAj8D,GAKA,GAFAA,EAAAg7I,YAAA,EAEA/+E,GAAAj8D,EAAAy6I,SAAA,CACA,GAAA8D,GAAAv+I,EAAA4I,QAAA5I,EAAA4kD,EAMA,IAHA5kD,EAAA4I,OAAA,EACA5I,EAAA4kD,IAAA,EAEAqX,EAAAtqE,MAAA,SAAA,IAAA4sJ,EAAA,CAEA,GADAjiF,EAAAt8D,IACAu+I,EAAA,MAAA,KACAv+I,GAAAw6I,SAAA,KAGAx6I,EAAAw6I,SAAAx6I,EAAAy6I,SACAz6I,EAAAy6I,SAAAx+E,EAGAj8D,EAAA07I,UAAA,EAGA17I,EAAAk+D,cAAA,EACAl+D,EAAAu6I,sBAAA,EAEAv6I,EAAAxM,EAAAwM,EAAAy1H,KACA,IAAAzoC,GAAA/wB,EAAAtqE,MAAA,QAAA,GAAA,GAAAuB,QAAA,MAAA,QAAA1C,MAGA,IAFAwP,EAAA46I,gBAAA3gJ,KAAAkvD,IAAA6jC,EAAAhtF,EAAAgtF,YAAA,GACAhtF,EAAAgtF,YAAAhtF,EAAAgtF,YAAAhtF,EAAA46I,gBACA5tD,EAAA,EAAA,MAAA,MAEA,MAAAhtF,GAAAxM,EAAAyoE,EAAAj8D,IAGAo6D,UAAA,SAAAp6D,GACA,MAAAA,GAAAy1H,OAAA2kB,GAAAp6I,MAAAA,EAAAg8I,UAAA15F,KAAAk2F,GACAx4I,EAAA+7I,YAAA/7I,MAAAA,EAAA+7I,WAAAz5F,KAAAtiD,EAAA87I,YACA97I,MAAAA,EAAAsiD,KAAAA,IAGAga,UAAAA,EAEA2+E,QAAAA,EAEAuD,cAAA,iBACAC,KAAA,WAEA,OAAAn8F,IACA,OAEAwF,EAAAqR,WAAA,kBAAA,cCrxBA,SAAA6qB,GACA,gBAAAv0F,UAAA,gBAAAD,QACAw0F,EAAAnxD,QAAA,yBACA,kBAAA7Q,SAAAA,OAAAC,IACAD,OAAA,+BAAA,wBAAAgiE,GAEAA,EAAAl8B,aACA,SAAAA,GAQA,QAAA42F,GAAA3pF,EAAAolC,EAAAwkD,EAAA97H,GACA,GAAAggC,GAAAkS,EAAAsjC,cAAA8B,EAAAt3C,MAAA/rC,EAAAqjF,EAAAltD,GAAA,EACAt7C,EAAAmlB,GAAA,GAAA8nI,EAAA/7F,EAAA3yD,KAAAo0B,OAAAxN,KAAA8nI,EAAA/7F,EAAA3yD,KAAAo0B,SAAAxN,GACA,KAAAnlB,EAAA,MAAA,KACA,IAAA0R,GAAA,KAAA1R,EAAA2yB,OAAA,GAAA,GAAA,CACA,IAAAq6H,GAAAt7I,EAAA,IAAAyT,GAAAqjF,EAAAltD,IAAA,MAAA,KACA,IAAA/4C,GAAA6gE,EAAAyyC,eAAAv4C,EAAAkrC,EAAAt3C,KAAA/rC,EAAA,IAEA26C,EAAAotF,EAAA9pF,EAAA9F,EAAAkrC,EAAAt3C,KAAA/rC,GAAAzT,EAAA,EAAA,EAAA,IAAAA,EAAAnP,GAAA,KAAA2uB,EACA,OAAA,OAAA4uC,EAAA,MACAxtC,KAAAgrC,EAAAkrC,EAAAt3C,KAAA/rC,GAAA0S,GAAAioC,GAAAA,EAAA36C,IACAnlB,MAAA8/D,GAAAA,EAAAxkB,IAAAt7C,EAAA2yB,OAAA,GAAAw6H,QAAAz7I,EAAA,GAUA,QAAAw7I,GAAA9pF,EAAAolC,EAAA92F,EAAAnP,EAAA2uB,GAQA,IAAA,GAPAk8H,GAAAl8H,GAAAA,EAAAm8H,mBAAA,IACAC,EAAAp8H,GAAAA,EAAAo8H,cAAA,IAEAryI,KACA81C,EAAA7/B,GAAAA,EAAAq8H,aAAAr8H,EAAAq8H,aAAA,YACA95D,EAAA/hF,EAAA,EAAApJ,KAAAkvD,IAAAgxC,EAAAt3C,KAAAo8F,EAAAlqF,EAAAR,WAAA,GACAt6D,KAAAC,IAAA66D,EAAA0jB,YAAA,EAAA0hB,EAAAt3C,KAAAo8F,GACA1wF,EAAA4rC,EAAAt3C,KAAA0L,GAAA62B,EAAA72B,GAAAlrD,EAAA,CACA,GAAAw/C,GAAAkS,EAAAhH,QAAAQ,EACA,IAAA1L,EAAA,CACA,GAAA/rC,GAAAzT,EAAA,EAAA,EAAAw/C,EAAAryD,OAAA,EAAA6D,EAAAgP,EAAA,EAAAw/C,EAAAryD,QAAA,CACA,MAAAqyD,EAAAryD,OAAAuuJ,GAEA,IADAxwF,GAAA4rC,EAAAt3C,OAAA/rC,EAAAqjF,EAAAltD,IAAA5pC,EAAA,EAAA,EAAA,IACAyT,GAAAziB,EAAAyiB,GAAAzT,EAAA,CACA,GAAA4pC,GAAA4V,EAAAv+B,OAAAxN,EACA,IAAA4rC,EAAApxD,KAAA27C,KAAAlnB,SAAA7xB,GAAA6gE,EAAAyyC,eAAAv4C,EAAAV,EAAAz3C,EAAA,KAAA5iB,GAAA,CACA,GAAAvC,GAAAitJ,EAAA3xG,EACA,IAAA,KAAAt7C,EAAA2yB,OAAA,IAAAjhB,EAAA,EAAAuJ,EAAAxW,KAAA62C,OACA,CAAA,IAAArgC,EAAApc,OAAA,OAAAsmB,IAAAm4C,EAAAV,EAAAz3C,GAAAm2B,GAAAA,EACArgC,GAAAzI,UAIA,MAAAoqD,GAAAlrD,IAAAA,EAAA,EAAA0xD,EAAAR,WAAAQ,EAAA0jB,cAAA,KAGA,QAAA0mE,GAAApqF,EAAAqqF,EAAAv8H,GAIA,IAAA,GAFAw8H,GAAAtqF,EAAA/0D,MAAAm/I,cAAAG,wBAAA,IACAC,KAAA10E,EAAA9V,EAAA0tB,iBACArxF,EAAA,EAAAA,EAAAy5E,EAAAr6E,OAAAY,IAAA,CACA,GAAAO,GAAAk5E,EAAAz5E,GAAA6K,SAAAyiJ,EAAA3pF,EAAA8V,EAAAz5E,GAAAjB,MAAA,EAAA0yB,EACA,IAAAlxB,GAAAojE,EAAAhH,QAAAp8D,EAAAsyB,KAAA4+B,MAAAryD,QAAA6uJ,EAAA,CACA,GAAAnrJ,GAAAvC,EAAAA,MAAA,6BAAA,+BACA4tJ,GAAAnpJ,KAAA2+D,EAAAurB,SAAA3uF,EAAAsyB,KAAAgrC,EAAAt9D,EAAAsyB,KAAA4+B,KAAAlxD,EAAAsyB,KAAAgpB,GAAA,IAAAlnC,UAAA7R,KACAvC,EAAA63B,IAAAurC,EAAAhH,QAAAp8D,EAAA63B,GAAAq5B,MAAAryD,QAAA6uJ,GACAE,EAAAnpJ,KAAA2+D,EAAAurB,SAAA3uF,EAAA63B,GAAAylC,EAAAt9D,EAAA63B,GAAAq5B,KAAAlxD,EAAA63B,GAAAyjB,GAAA,IAAAlnC,UAAA7R,MAIA,GAAAqrJ,EAAA/uJ,OAAA,CAGAgvJ,GAAAzqF,EAAA/0D,MAAAssE,SAAAvX,EAAA3sD,OAEA,IAAAynB,GAAA,WACAklC,EAAAuf,UAAA,WACA,IAAA,GAAAljF,GAAA,EAAAA,EAAAmuJ,EAAA/uJ,OAAAY,IAAAmuJ,EAAAnuJ,GAAAy+B,UAGA,KAAAuvH,EACA,MAAAvvH,EADA90B,YAAA80B,EAAA,MAMA,QAAA4vH,GAAA1qF,GACAA,EAAAuf,UAAA,WACAorE,IAAAA,IAAAA,EAAA,MACAA,EAAAP,EAAApqF,GAAA,EAAAA,EAAA/0D,MAAAm/I,iBAxFA,GAAAK,GAAA,UAAAluJ,KAAAqnC,UAAAC,aACA,MAAAlpC,SAAAuiG,cAAAviG,SAAAuiG,aAAA,GAEAhjC,EAAAnH,EAAAmH,IAEA2vF,GAAAe,IAAA,KAAAtB,IAAA,KAAAuB,IAAA,KAAAtB,IAAA,KAAAuB,IAAA,KAAAC,IAAA,MA+EAJ,EAAA,IAQA53F,GAAAsiC,aAAA,iBAAA,EAAA,SAAAr1B,EAAAh7C,EAAAlC,GACAA,GAAAA,GAAAiwC,EAAAqiC,OACAp1B,EAAAj+D,IAAA,iBAAA2oJ,GACAC,IAAAA,IAAAA,EAAA,OAEA3lI,IACAg7C,EAAA/0D,MAAAm/I,cAAA,gBAAAplI,GAAAA,KACAg7C,EAAAxhD,GAAA,iBAAAksI,MAIA33F,EAAAwmD,gBAAA,gBAAA,WAAA6wC,EAAAtvJ,MAAA,KACAi4D,EAAAwmD,gBAAA,sBAAA,SAAAx3F,EAAA6nI,EAAA97H,GACA,MAAA67H,GAAA7uJ,KAAAinB,EAAA6nI,EAAA97H,KAEAilC,EAAAwmD,gBAAA,iBAAA,SAAAx3F,EAAAzT,EAAAnP,EAAA2uB,GACA,MAAAg8H,GAAAhvJ,KAAAinB,EAAAzT,EAAAnP,EAAA2uB,OCpHA,SAAAmhE,GACA,gBAAAv0F,UAAA,gBAAAD,QACAw0F,EAAAnxD,QAAA,yBACA,kBAAA7Q,SAAAA,OAAAC,IACAD,OAAA,oCAAA,wBAAAgiE,GAEAA,EAAAl8B,aACA,SAAAA,GAMA,QAAAi4F,GAAAhrF,GACA,GAAAA,EAAAqJ,UAAA,gBAAA,MAAAtW,GAAAg+B,IAEA,KAAA,GADAxjC,GAAAuoB,EAAA9V,EAAA0tB,iBAAAu9D,KACA5uJ,EAAA,EAAAA,EAAAy5E,EAAAr6E,OAAAY,IAAA,CACA,GAAA0lB,GAAA+zD,EAAAz5E,GAAAjB,KAAA07C,EAAAkpB,EAAAuyC,WAAAxwF,EACA,IAAA,WAAA+0B,EAAAn7C,KAAA,MAAAo3D,GAAAg+B,IACA,IAAAm6D,GAAAn4F,EAAAsS,UAAArF,EAAAyE,UAAA3tB,EAAA7rC,OAAAsiD,IACA,IAAAA,GACA,GAAAA,GAAA29F,EAAA,MAAAn4F,GAAAg+B,SADAxjC,GAAA29F,CAGA,IAAApnE,GAAA,IACA,IAAAv2B,EAAAwqF,mBAAAxqF,EAAA0qF,qBAAA,CACA,GACAv7E,GADAp9D,EAAAw3C,EAAA+X,OAAAvjD,QAAAiiD,EAAAyqF,iBACA17E,EAAA0D,EAAA85B,SAAA/mC,EAAAmH,IAAAn4C,EAAA+rC,KAAA,GAAAiF,EAAAmH,IAAAn4C,EAAA+rC,KAAAhX,EAAAx3C,KACA,IAAAA,IAAA,GAAAA,GAAAw3C,EAAA+X,OAAApzD,OAAA8xD,EAAAyqF,gBAAAv8I,QAAAsmB,EAAAm2B,IAAA54C,OAEA,IAAA,GAAAw3C,EAAA+X,OAAAvjD,QAAAiiD,EAAAwqF,oBAEA,GADAj0D,EAAAxnB,EAAA/+D,MAAA,EAAAu5C,EAAAz3C,QACA,QAAA9C,KAAAunF,GAAA,CACAA,EAAA,EACA,KAAA,GAAAhlF,GAAA,EAAAA,EAAAg4C,EAAAz3C,QAAAP,EAAAglF,GAAA,UAEApnB,EAAAJ,EAAAhxD,QAAAiiD,EAAA0qF,yBAAA,GACAv7E,EAAAnP,EAAA0qF,qBAAAx8I,OAAAq7C,EAAAz3C,OACA,QAAA9C,KAAA+/D,EAAA/+D,MAAA,EAAAm/D,MACAonB,EAAAxnB,EAAA/+D,MAAA,EAAAm/D,GAEA,OAAAonB,IAAAA,GAAAv2B,EAAA0qF,sBAEA,GAAA,MAAAn0D,GAAAv2B,EAAA2qF,aAAAiT,EAAAnrF,GAAA,CACA,GAAAlS,GAAAkS,EAAAhH,QAAAj3C,EAAA+rC,MAAA4O,EAAA5O,EAAAxiD,QAAAiiD,EAAA2qF,YACAx7E,IAAA,IACAonB,EAAAh2B,EAAAvwD,MAAA,EAAAm/D,GACA,KAAAngE,KAAAunF,GAAAA,EAAA,KACAA,GAAAv2B,EAAA2qF,YAAApqF,EAAAvwD,MAAAm/D,EAAAnP,EAAA2qF,YAAAz8I,QAAAmB,MAAA,QAAA,IAGA,GAAA,MAAAknF,EAAA,MAAA/wB,GAAAg+B,IACAk6D,GAAA5uJ,GAAA,KAAAynF,EAGA9jB,EAAAuf,UAAA,WACA,IAAA,GAAAljF,GAAAy5E,EAAAr6E,OAAA,EAAAY,GAAA,EAAAA,IACA2jE,EAAAyqB,aAAAwgE,EAAA5uJ,GAAAy5E,EAAAz5E,GAAA6yB,OAAA4mD,EAAAz5E,GAAAo4B,KAAA,aAIA,QAAA02H,GAAAnrF,GACA,GAAAnN,GAAAmN,EAAAqJ,UAAA,mBACA,QAAAxW,GAAA,gBAAAA,IACAA,EAAAu4F,uBAAA,EArDA,IAAA,GAFAjnF,IAAA,QAAA,MAAA,cAEA9nE,EAAA,EAAAA,EAAA8nE,EAAA1oE,SAAAY,EACA02D,EAAAkS,WAAAd,EAAA9nE,IAAA47I,qBAAA,OAwDAllF,GAAAsiC,aAAA,mBAAA,KAAA,SAAAr1B,EAAAh7C,EAAAxP,GAGA,GAFAA,GAAAA,GAAAu9C,EAAAqiC,MACAp1B,EAAAkyC,aAAA,mBACAltF,EAAA,CACA,GAAA3H,GAAA,OACA,iBAAA2H,GACA3H,EAAA2H,EACA,gBAAAA,IAAAA,EAAA3H,MACAA,EAAA2H,EAAA3H,IACA,IAAA3Z,IAAAiU,KAAA,kBACAjU,GAAA2Z,GAAA2tI,EACAhrF,EAAAiyC,UAAAvuG,QC9EA,SAAAurF,GACA,gBAAAv0F,UAAA,gBAAAD,QACAw0F,EAAAnxD,QAAA,yBACA,kBAAA7Q,SAAAA,OAAAC,IACAD,OAAA,4BAAA,wBAAAgiE,GAEAA,EAAAl8B,aACA,SAAAA,GACA,YAMA,SAAAw9B,GAAA7iE,GACA,GAAAgvC,GAAAhvC,EAAA0qB,OAAAizG,EACA,OAAA3uF,KAAA,EAAA,EAAAA,EA4BA,QAAA4uF,GAAAtrF,EAAAj+C,EAAA+rC,GACA,MAAA,aAAAvxD,KAAAyjE,EAAAyyC,eAAAv4C,EAAAn4C,EAAA+rC,KAAA,OAAA,YAAAvxD,KAAAuxD,GAGA,QAAA2W,GAAAzE,EAAAj+C,GACA,GAAAwrC,GAAAyS,EAAAyE,SACA,OAAAlX,GAAAg+F,oBAAA,GAAAh+F,EAAA8X,UAAArF,EAAA05B,UAAA33E,GAAAwrC,EAxCA,GAAAi+F,MACAH,EAAA,cACAnxF,EAAAnH,EAAAmH,GAOAnH,GAAA69B,SAAA66D,cAAA,SAAAzrF,GACAA,EAAAyrF,iBAGA14F,EAAAwmD,gBAAA,gBAAA,SAAA13F,GACAA,IAAAA,EAAA2pI,EAGA,KAAA,GAFAxrF,GAAAllE,KACA4wJ,EAAA5pH,EAAAA,EAAAg0C,EAAAh7E,KAAA4yF,iBAAAngC,EAAA,KACAlxD,EAAAy5E,EAAAr6E,OAAA,EAAAY,GAAA,EAAAA,IAAA,CACA,GAAA6yB,GAAA4mD,EAAAz5E,GAAA6yB,OAAAuF,EAAAqhD,EAAAz5E,GAAAo4B,IACAvF,GAAA4+B,MAAA49F,IACAj3H,EAAAq5B,MAAA49F,IAAAj3H,EAAAylC,EAAAwxF,EAAA,IACAA,EAAAx8H,EAAA4+B,KACA,MAAAP,EACAyS,EAAA2rF,UAAAz8H,EAAAuF,EAAA5S,GAAA0rC,EAAA,MACAyS,EAAAk4E,YAAAhpH,EAAAuF,EAAA5S,GAAA0rC,EAAA,QACA,MAAAA,EACAyS,EAAA2rF,UAAAz8H,EAAAuF,EAAA5S,GAEAm+C,EAAAk4E,YAAAhpH,EAAAuF,EAAA5S,OAeAkxC,EAAAwmD,gBAAA,cAAA,SAAArqF,EAAAuF,EAAA5S,GACAA,IAAAA,EAAA2pI,EACA,IAAAp9G,GAAAtzC,KAAAyyD,EAAAkX,EAAAr2B,EAAAlf,GACAw0D,EAAAt1C,EAAA4qB,QAAA9pC,EAAA4+B,KACA,IAAA,MAAA41B,IAAA4nE,EAAAl9G,EAAAlf,EAAAw0D,GAAA,CAEA,GAAAkoE,GAAA/pI,EAAAq2H,aAAA3qF,EAAA2qF,WACA,KAAA0T,EAKA,aAJA/pI,EAAAk2H,mBAAAxqF,EAAAwqF,qBACAl2H,EAAAgqI,WAAA,EACAz9G,EAAA09G,aAAA58H,EAAAuF,EAAA5S,IAKA,IAAAviB,GAAA4F,KAAAkvD,IAAA,GAAA3/B,EAAAyjB,IAAAzjB,EAAAq5B,MAAA5+B,EAAA4+B,KAAAr5B,EAAAq5B,KAAA,EAAAr5B,EAAAq5B,KAAA1f,EAAAoxB,WAAA,GACAusF,EAAA,MAAAlqI,EAAAH,QAAA,IAAAG,EAAAH,QACAsqI,EAAAnqI,EAAAoqI,mBAAA/8H,EAAA4+B,MAAAr5B,EAAAq5B,IAEA1f,GAAAmxC,UAAA,WACA,GAAA19D,EAAAk2E,OAAA,CAEA,IAAA,GADAm0D,GAAA,KACA7vJ,EAAA6yB,EAAA4+B,KAAAzxD,EAAAiD,IAAAjD,EAAA,CACA,GAAAyxD,GAAA1f,EAAA4qB,QAAA38D,GACA82C,EAAA2a,EAAAvwD,MAAA,EAAAgzF,EAAAziC,KACA,MAAAo+F,GAAAA,EAAAzwJ,OAAA03C,EAAA13C,UACAywJ,EAAA/4G,GAGA,IAAA,GAAA92C,GAAA6yB,EAAA4+B,KAAAzxD,EAAAiD,IAAAjD,EAAA,CACA,GAAAyxD,GAAA1f,EAAA4qB,QAAA38D,GAAAwjF,EAAAqsE,EAAAzwJ,QACAuwJ,GAAAX,EAAA9uJ,KAAAuxD,MACAA,EAAAvwD,MAAA,EAAAsiF,IAAAqsE,IAAArsE,EAAA0Q,EAAAziC,IACA1f,EAAAq8C,aAAAyhE,EAAAN,EAAAG,EAAA7xF,EAAA79D,EAAA,GAAA69D,EAAA79D,EAAAwjF,UAGA,KAAA,GAAAxjF,GAAA6yB,EAAA4+B,KAAAzxD,EAAAiD,IAAAjD,GACA2vJ,GAAAX,EAAA9uJ,KAAA6xC,EAAA4qB,QAAA38D,MACA+xC,EAAAq8C,aAAAmhE,EAAAG,EAAA7xF,EAAA79D,EAAA,SAMA02D,EAAAwmD,gBAAA,eAAA,SAAArqF,EAAAuF,EAAA5S,GACAA,IAAAA,EAAA2pI,EACA,IAAAp9G,GAAAtzC,KAAAyyD,EAAAkX,EAAAr2B,EAAAlf,GACAi9H,EAAAtqI,EAAAk2H,mBAAAxqF,EAAAwqF,kBACAqU,EAAAvqI,EAAAm2H,iBAAAzqF,EAAAyqF;AACA,IAAAmU,IAAAC,EAGA,aAFAvqI,EAAAq2H,aAAA3qF,EAAA2qF,cAAA,GAAAr2H,EAAAgqI,WACAz9G,EAAA8pG,YAAAhpH,EAAAuF,EAAA5S,GAGA,KAAA,cAAAtlB,KAAA6xC,EAAAqkE,eAAAv4C,EAAAhrC,EAAA4+B,KAAA,KAAA,CAEA,GAAAxuD,GAAA4F,KAAAkvD,IAAA3/B,EAAAq5B,KAAA1f,EAAAoxB,WACAlgE,IAAA4vB,EAAA4+B,MAAA,GAAAr5B,EAAAyjB,IAAAmzG,EAAA9uJ,KAAA6xC,EAAA4qB,QAAA15D,OAAAA,CAEA,IAAAysJ,GAAA,MAAAlqI,EAAAH,QAAA,IAAAG,EAAAH,OACAwN,GAAA4+B,KAAAxuD,GAEA8uC,EAAAmxC,UAAA,WACA,GAAA,GAAA19D,EAAAgqI,UAAA,CACA,GAAAQ,GAAAhB,EAAA9uJ,KAAA6xC,EAAA4qB,QAAA15D,GACA8uC,GAAAq8C,aAAAshE,EAAAK,EAAAlyF,EAAA56D,IACA8uC,EAAAq8C,aAAA0hE,EAAAJ,EAAA7xF,EAAAhrC,EAAA4+B,KAAA,GACA,IAAAjjB,GAAAhpB,EAAAyqI,kBAAA/+F,EAAA++F,gBACA,IAAA,MAAAzhH,EAAA,IAAA,GAAAxuC,GAAA6yB,EAAA4+B,KAAA,EAAAzxD,GAAAiD,IAAAjD,GACAA,GAAAiD,GAAA+sJ,IACAj+G,EAAAq8C,aAAA5/C,EAAAkhH,EAAA7xF,EAAA79D,EAAA,QAEA+xC,GAAAq8C,aAAA2hE,EAAA33H,GACA2Z,EAAAq8C,aAAA0hE,EAAAj9H,QAKA6jC,EAAAwmD,gBAAA,YAAA,SAAArqF,EAAAuF,EAAA5S,GACAA,IAAAA,EAAA2pI,EACA,IAKAe,GALAn+G,EAAAtzC,KAAAyyD,EAAAkX,EAAAr2B,EAAAlf,GACA5vB,EAAA4F,KAAAkvD,IAAA,GAAA3/B,EAAAyjB,IAAAzjB,EAAAq5B,MAAA5+B,EAAA4+B,KAAAr5B,EAAAq5B,KAAAr5B,EAAAq5B,KAAA,EAAA1f,EAAAoxB,YAAAngE,EAAA6F,KAAAkvD,IAAAllC,EAAA4+B,KAAAxuD,GAGAktJ,EAAA3qI,EAAAq2H,aAAA3qF,EAAA2qF,YAAA/hF,KACA41F,EAAA,MAAAlqI,EAAAH,QAAA,IAAAG,EAAAH,OACAw2H,GACA,GAAAsU,EAAA,CACA,IAAA,GAAAnwJ,GAAAgD,EAAAhD,GAAAiD,IAAAjD,EAAA,CACA,GAAAyxD,GAAA1f,EAAA4qB,QAAA38D,GACAqgE,EAAA5O,EAAAxiD,QAAAkhJ,EAEA,IADA9vF,GAAA,IAAA,UAAAngE,KAAA6xC,EAAAqkE,eAAAv4C,EAAA79D,EAAAqgE,EAAA,OAAAA,GAAA,GACAA,IAAA,GAAA2uF,EAAA9uJ,KAAAuxD,GAAA,KAAAoqF,EACA,IAAAx7E,GAAA,GAAA2uF,EAAA9uJ,KAAAuxD,EAAAvwD,MAAA,EAAAm/D,IAAA,KAAAw7E,EACA/hF,GAAA90D,KAAAysD,GAYA,GAVA1f,EAAAmxC,UAAA,WACA,IAAA,GAAAljF,GAAAgD,EAAAhD,GAAAiD,IAAAjD,EAAA,CACA,GAAAyxD,GAAAqI,EAAA95D,EAAAgD,GACA0iB,EAAA+rC,EAAAxiD,QAAAkhJ,GAAAC,EAAA1qI,EAAAyqI,EAAA/wJ,MACAsmB,GAAA,IACA+rC,EAAAvwD,MAAAkvJ,EAAAA,EAAAV,EAAAtwJ,SAAAswJ,IAAAU,GAAAV,EAAAtwJ,QACA8wJ,GAAA,EACAn+G,EAAAq8C,aAAA,GAAAvwB,EAAA79D,EAAA0lB,GAAAm4C,EAAA79D,EAAAowJ,QAGAF,EAAA,OAAA,EAIA,GAAAJ,GAAAtqI,EAAAk2H,mBAAAxqF,EAAAwqF,kBACAqU,EAAAvqI,EAAAm2H,iBAAAzqF,EAAAyqF,eACA,KAAAmU,IAAAC,EAAA,OAAA,CACA,IAAAvhH,GAAAhpB,EAAAyqI,kBAAA/+F,EAAA++F,iBACArZ,EAAA7kG,EAAA4qB,QAAA35D,GAAAorB,EAAAwoH,EAAA3nI,QAAA6gJ,EACA,IAAA1hI,IAAA,EAAA,OAAA,CACA,IAAAiiI,GAAAptJ,GAAAD,EAAA4zI,EAAA7kG,EAAA4qB,QAAA15D,GACAw0B,EAAA44H,EAAAphJ,QAAA8gJ,EAAA9sJ,GAAAD,EAAAorB,EAAA0hI,EAAA1wJ,OAAA,EACAq4B,KAAA,GAAAz0B,GAAAC,IACAotJ,EAAAt+G,EAAA4qB,UAAA15D,GACAw0B,EAAA44H,EAAAphJ,QAAA8gJ,GAEA,IAAAO,GAAAzyF,EAAA76D,EAAAorB,EAAA,GAAAmiI,EAAA1yF,EAAA56D,EAAAw0B,EAAA,EACA,IAAAA,IAAA,IACA,UAAAv3B,KAAA6xC,EAAAqkE,eAAAk6C,MACA,UAAApwJ,KAAA6xC,EAAAqkE,eAAAm6C,KACAx+G,EAAA0rD,SAAA6yD,EAAAC,EAAA,MAAAthJ,QAAA8gJ,IAAA,EACA,OAAA,CAIA,IAAAS,GAAA5Z,EAAAhpG,YAAAkiH,EAAAj9H,EAAAgpB,IACA40G,EAAAD,IAAA,GAAA,EAAA5Z,EAAA11I,MAAA,EAAA2xB,EAAAgpB,IAAA5sC,QAAA8gJ,EAAAS,EAAAV,EAAA1wJ,OACA,IAAAoxJ,IAAA,GAAAC,IAAA,GAAAA,EAAAV,EAAA3wJ,QAAAyzB,EAAAgpB,GAAA,OAAA,CAEA40G,GAAAJ,EAAAphJ,QAAA8gJ,EAAA33H,EAAAyjB,GACA,IAAA60G,GAAAL,EAAAnvJ,MAAAk3B,EAAAyjB,IAAAjO,YAAAkiH,EAAAW,EAAAr4H,EAAAyjB,GAEA,OADA20G,GAAAC,IAAA,GAAAC,IAAA,GAAA,EAAAt4H,EAAAyjB,GAAA60G,GACAD,IAAA,GAAAD,IAAA,GAAAA,GAAAp4H,EAAAyjB,MAEA9J,EAAAmxC,UAAA,WACAnxC,EAAAq8C,aAAA,GAAAvwB,EAAA56D,EAAAw0B,GAAAi4H,GAAAW,EAAAnvJ,MAAAu2B,EAAAi4H,EAAAtwJ,OAAAq4B,IAAAi4H,EAAAA,EAAAtwJ,OAAA,IACAy+D,EAAA56D,EAAAw0B,EAAAs4H,EAAA3wJ,QACA,IAAAuxJ,GAAAviI,EAAA0hI,EAAA1wJ,MAGA,IAFAswJ,GAAA9Y,EAAA11I,MAAAyvJ,EAAAA,EAAAjB,EAAAtwJ,SAAAswJ,IAAAiB,GAAAjB,EAAAtwJ,QACA2yC,EAAAq8C,aAAA,GAAAvwB,EAAA76D,EAAAorB,GAAAyvC,EAAA76D,EAAA2tJ,IACAniH,EAAA,IAAA,GAAAxuC,GAAAgD,EAAA,EAAAhD,GAAAiD,IAAAjD,EAAA,CACA,GAAAyxD,GAAA1f,EAAA4qB,QAAA38D,GAAAqgE,EAAA5O,EAAAxiD,QAAAu/B,EACA,IAAA6xB,IAAA,IAAA2uF,EAAA9uJ,KAAAuxD,EAAAvwD,MAAA,EAAAm/D,IAAA,CACA,GAAAuwF,GAAAvwF,EAAA7xB,EAAApvC,MACAswJ,IAAAj+F,EAAAvwD,MAAA0vJ,EAAAA,EAAAlB,EAAAtwJ,SAAAswJ,IAAAkB,GAAAlB,EAAAtwJ,QACA2yC,EAAAq8C,aAAA,GAAAvwB,EAAA79D,EAAAqgE,GAAAxC,EAAA79D,EAAA4wJ,SAGA,OC/MA,SAAAh+D,GACA,gBAAAv0F,UAAA,gBAAAD,QACAw0F,EAAAnxD,QAAA,yBACA,kBAAA7Q,SAAAA,OAAAC,IACAD,OAAA,2BAAA,wBAAAgiE,GAEAA,EAAAl8B,aACA,SAAAA,GACA,YAqCA,SAAAm6F,GAAAltF,EAAAn+C,GACA/mB,KAAAklE,GAAAA,EACAllE,KAAA+mB,QAAAA,EACA/mB,KAAAgwE,OAAA,KACAhwE,KAAA03C,SAAA,EACA13C,KAAAqL,KAAA,EACArL,KAAAqyJ,SAAAryJ,KAAAklE,GAAAkd,UAAA,SACApiF,KAAAsyJ,SAAAtyJ,KAAAklE,GAAAhH,QAAAl+D,KAAAqyJ,SAAAr/F,MAAAryD,OAAAX,KAAAklE,GAAA6tB,eAAApyF,MAEA,IAAA2yC,GAAAtzC,IACAklE,GAAAxhD,GAAA,iBAAA1jB,KAAAuyJ,aAAA,WAAAj/G,EAAAq0B,mBA+EA,QAAA6qF,GAAAxqI,EAAA+4C,GACA,GAAAq3B,GAAAngC,EAAA8pC,OAAAhhC,EAAA3sC,KAAApM,EAAAoM,KACA,OAAAgkE,GAAA,GAAApwE,EAAA2R,GAAAyjB,GAAAp1B,EAAAoM,KAAAgpB,IAAA2jB,EAAApnC,GAAAyjB,GAAA2jB,EAAA3sC,KAAAgpB,GAGA,QAAAq1G,GAAAvtF,EAAAj+C,EAAAF,GACA,GAAAgsC,GAAAmS,EAAAn+C,QAAA2rI,YACAh5F,IACA,KAAA,GAAA5yC,KAAA6rI,GAAAj5F,EAAA5yC,GAAA6rI,EAAA7rI,EACA,IAAAisC,EAAA,IAAA,GAAAjsC,KAAAisC,GACA78B,SAAA68B,EAAAjsC,KAAA4yC,EAAA5yC,GAAAisC,EAAAjsC,GACA,IAAAC,EAAA,IAAA,GAAAD,KAAAC,GACAmP,SAAAnP,EAAAD,KAAA4yC,EAAA5yC,GAAAC,EAAAD,GAEA,OADA4yC,GAAAtY,KAAAhlC,UAAAs9C,EAAAtY,KAAAsY,EAAAtY,KAAAhlC,QAAA8oD,EAAAj+C,IACAyyC,EAGA,QAAAtiD,GAAAohI,GACA,MAAA,gBAAAA,GAAAA,EACAA,EAAAn4I,KAGA,QAAAuyJ,GAAApa,EAAAzwI,GAcA,QAAA8qJ,GAAAtwI,EAAA2H,GACA,GAAA0rE,EAEAA,GADA,gBAAA1rE,GACA,SAAAg7C,GAAA,MAAAh7C,GAAAg7C,EAAAn9D,IAEA+qJ,EAAApiJ,eAAAwZ,GACA4oI,EAAA5oI,GAEAA,EACAytH,EAAAp1H,GAAAqzE,EAtBA,GAAAk9D,IACAnkD,GAAA,WAAA5mG,EAAAgrJ,WAAA,IACAnkD,KAAA,WAAA7mG,EAAAgrJ,UAAA,IACAhkD,OAAA,WAAAhnG,EAAAgrJ,WAAAhrJ,EAAAirJ,WAAA,GAAA,IACAhkD,SAAA,WAAAjnG,EAAAgrJ,UAAAhrJ,EAAAirJ,WAAA,GAAA,IACAlkD,KAAA,WAAA/mG,EAAAkrJ,SAAA,IACApkD,IAAA,WAAA9mG,EAAAkrJ,SAAAlrJ,EAAApH,OAAA,IACA2uG,MAAAvnG,EAAAmrJ,KACA9jD,IAAArnG,EAAAmrJ,KACA1jD,IAAAznG,EAAAixB,OAEAm6H,EAAA3a,EAAAzxH,QAAAqsI,WACAzb,EAAAwb,KAAAL,CAYA,IAAAK,EACA,IAAA,GAAA5wI,KAAA4wI,GAAAA,EAAAziJ,eAAA6R,IACAswI,EAAAtwI,EAAA4wI,EAAA5wI,GACA,IAAA8wI,GAAA7a,EAAAzxH,QAAAqvE,SACA,IAAAi9D,EACA,IAAA,GAAA9wI,KAAA8wI,GAAAA,EAAA3iJ,eAAA6R,IACAswI,EAAAtwI,EAAA8wI,EAAA9wI,GACA,OAAAo1H,GAGA,QAAA2b,GAAAC,EAAAv9H,GACA,KAAAA,GAAAA,GAAAu9H,GAAA,CACA,GAAA,OAAAv9H,EAAAh1B,SAAA+I,eAAAisB,EAAAx1B,YAAA+yJ,EAAA,MAAAv9H,EACAA,GAAAA,EAAAx1B,YAIA,QAAAgzJ,GAAAhb,EAAAnoI,GACArQ,KAAAw4I,WAAAA,EACAx4I,KAAAqQ,KAAAA,EACArQ,KAAAyzJ,QAAA,CACA,IAAAzjF,GAAAhwE,KAAAklE,EAAAszE,EAAAtzE,GAEAwuF,EAAA1zJ,KAAA0zJ,MAAA7zJ,SAAAO,cAAA,KACAszJ,GAAAx9I,UAAA,mBACAlW,KAAA2zJ,aAAAtjJ,EAAAsjJ,cAAA,CAGA,KAAA,GADApb,GAAAloI,EAAAy7B,KACAvqC,EAAA,EAAAA,EAAAg3I,EAAA53I,SAAAY,EAAA,CACA,GAAA82D,GAAAq7F,EAAAnzJ,YAAAV,SAAAO,cAAA,OAAA0D,EAAAy0I,EAAAh3I,GACA2U,EAAA09I,GAAAryJ,GAAAvB,KAAA2zJ,aAAA,GAAA,IAAAE,EACA,OAAA/vJ,EAAAoS,YAAAA,EAAApS,EAAAoS,UAAA,IAAAA,GACAmiD,EAAAniD,UAAAA,EACApS,EAAAo+C,OAAAp+C,EAAAo+C,OAAAmW,EAAAhoD,EAAAvM,GACAu0D,EAAA93D,YAAAV,SAAA2G,eAAA1C,EAAAsrE,aAAAh4D,EAAAtT,KACAu0D,EAAAy7F,OAAAvyJ,EAGA,GAAA0lB,GAAAi+C,EAAAwT,aAAA8/D,EAAAzxH,QAAAgtI,cAAA1jJ,EAAA+jB,KAAA,MACA1N,EAAAO,EAAAP,KAAA5Q,EAAAmR,EAAAqX,OAAA01H,GAAA,CACAN,GAAArvJ,MAAAqiB,KAAAA,EAAA,KACAgtI,EAAArvJ,MAAAyR,IAAAA,EAAA,IAEA,IAAAm+I,GAAAl0J,OAAA68B,YAAAxyB,KAAAC,IAAAxK,SAAA+E,KAAAsqB,YAAArvB,SAAA8V,gBAAAuZ,aACAglI,EAAAn0J,OAAA8gF,aAAAz2E,KAAAC,IAAAxK,SAAA+E,KAAAuqB,aAAAtvB,SAAA8V,gBAAAwZ,eACAqpH,EAAAzxH,QAAAwW,WAAA19B,SAAA+E,MAAArE,YAAAmzJ,EACA,IAAArnH,GAAAqnH,EAAAjtI,wBAAA0tI,EAAA9nH,EAAA/N,OAAA41H,EACAE,EAAAV,EAAAn3H,aAAAm3H,EAAAl3H,aAAA,EACA63H,EAAAnvF,EAAA2zC,eAEA,IAAAs7C,EAAA,EAAA,CACA,GAAAzoJ,GAAA2gC,EAAA/N,OAAA+N,EAAAv2B,IAAAw+I,EAAArtI,EAAAnR,KAAAmR,EAAAqX,OAAA+N,EAAAv2B,IACA,IAAAw+I,EAAA5oJ,EAAA,EACAgoJ,EAAArvJ,MAAAyR,KAAAA,EAAAmR,EAAAnR,IAAApK,GAAA,KACAsoJ,GAAA,MACA,IAAAtoJ,EAAAwoJ,EAAA,CACAR,EAAArvJ,MAAAqH,OAAAwoJ,EAAA,EAAA,KACAR,EAAArvJ,MAAAyR,KAAAA,EAAAmR,EAAAqX,OAAA+N,EAAAv2B,KAAA,IACA,IAAAgsC,GAAAojB,EAAAkd,WACA/xE,GAAA+jB,KAAAgpB,IAAA0E,EAAA1E,KACAn2B,EAAAi+C,EAAAwT,aAAA52B,GACA4xG,EAAArvJ,MAAAqiB,MAAAA,EAAAO,EAAAP,MAAA,KACA2lB,EAAAqnH,EAAAjtI,0BAIA,GAAA8tI,GAAAloH,EAAAxP,MAAAo3H,CAQA,IAPAM,EAAA,IACAloH,EAAAxP,MAAAwP,EAAA3lB,KAAAutI,IACAP,EAAArvJ,MAAAoF,MAAAwqJ,EAAA,EAAA,KACAM,GAAAloH,EAAAxP,MAAAwP,EAAA3lB,KAAAutI,GAEAP,EAAArvJ,MAAAqiB,MAAAA,EAAAO,EAAAP,KAAA6tI,GAAA,MAEAH,EAAA,IAAA,GAAAp7G,GAAA06G,EAAArtJ,WAAA2yC,EAAAA,EAAAA,EAAA/lC,YACA+lC,EAAA30C,MAAAs4B,aAAAuoC,EAAApgE,QAAAg4D,eAAA,IAYA,IAVAoI,EAAAiyC,UAAAn3G,KAAA+0F,OAAA69D,EAAApa,GACAua,UAAA,SAAAptJ,EAAA6uJ,GAAAxkF,EAAAykF,aAAAzkF,EAAA2jF,aAAAhuJ,EAAA6uJ,IACAvB,SAAA,SAAAttJ,GAAAqqE,EAAAykF,aAAA9uJ,IACAqtJ,SAAA,WAAA,MAAAhjF,GAAA0kF,gBACA/zJ,OAAA43I,EAAA53I,OACAq4B,MAAA,WAAAw/G,EAAAx/G,SACAk6H,KAAA,WAAAljF,EAAAkjF,QACA7iJ,KAAAA,KAGAmoI,EAAAzxH,QAAA4tI,eAAA,CACA,GAAAC,EACA1vF,GAAAxhD,GAAA,OAAA1jB,KAAAinD,OAAA,WAAA2tG,EAAA1pJ,WAAA,WAAAstI,EAAAx/G,SAAA,OACAksC,EAAAxhD,GAAA,QAAA1jB,KAAAknD,QAAA,WAAAp+B,aAAA8rI,KA+BA,MA5BA1vF,GAAAxhD,GAAA,SAAA1jB,KAAA60J,SAAA,WACA,GAAAC,GAAA5vF,EAAA2zC,gBAAA9lD,EAAAmS,EAAA28B,oBAAAp7E,wBACAo7D,EAAA/rE,EAAAu+I,EAAAv+I,IAAAg/I,EAAAh/I,IACAi/I,EAAAlzE,GAAA9hF,OAAAqxB,cAAAvxB,SAAA8V,iBAAA9V,SAAA+E,MAAAuiB,UAEA,OADA6sI,KAAAe,GAAArB,EAAAvkI,cACA4lI,GAAAhiG,EAAAj9C,KAAAi/I,GAAAhiG,EAAAz0B,OAAAk6G,EAAAx/G,SACA06H,EAAArvJ,MAAAyR,IAAA+rE,EAAA,UACA6xE,EAAArvJ,MAAAqiB,KAAAA,EAAA2tI,EAAA3tI,KAAAouI,EAAApuI,KAAA,SAGAuxC,EAAAv0C,GAAAgwI,EAAA,WAAA,SAAAvxJ,GACA,GAAAyO,GAAA0iJ,EAAAI,EAAAvxJ,EAAAgW,QAAAhW,EAAAkmE,WACAz3D,IAAA,MAAAA,EAAAkjJ,SAAA9jF,EAAAykF,aAAA7jJ,EAAAkjJ,QAAA9jF,EAAAkjF,UAGAj7F,EAAAv0C,GAAAgwI,EAAA,QAAA,SAAAvxJ,GACA,GAAAyO,GAAA0iJ,EAAAI,EAAAvxJ,EAAAgW,QAAAhW,EAAAkmE,WACAz3D,IAAA,MAAAA,EAAAkjJ,SACA9jF,EAAAykF,aAAA7jJ,EAAAkjJ,QACAtb,EAAAzxH,QAAAiuI,uBAAAhlF,EAAAkjF,UAIAj7F,EAAAv0C,GAAAgwI,EAAA,YAAA,WACAxoJ,WAAA,WAAAg6D,EAAA3sD,SAAA,MAGA0/C,EAAAqP,OAAAj3D,EAAA,SAAAkoI,EAAA,GAAAmb,EAAArtJ,aACA,EAmDA,QAAA4uJ,GAAA/vF,EAAA8xC,GACA,IAAA9xC,EAAAomB,oBAAA,MAAA0rB,EAEA,KAAA,GADA72F,MACA5e,EAAA,EAAAA,EAAAy1G,EAAAr2G,OAAAY,IACAy1G,EAAAz1G,GAAA2zJ,mBAAA/0I,EAAA5Z,KAAAywG,EAAAz1G,GACA,OAAA4e,GAGA,QAAAg1I,GAAA/zG,EAAA8jB,EAAAn+C,EAAAyyH,GACA,GAAAp4F,EAAA30B,MACA20B,EAAA8jB,EAAAs0E,EAAAzyH,OACA,CACA,GAAA5G,GAAAihC,EAAA8jB,EAAAn+C,EACA5G,IAAAA,EAAA5d,KAAA4d,EAAA5d,KAAAi3I,GACAA,EAAAr5H,IAIA,QAAAi1I,GAAAlwF,EAAAj+C,GACA,GAAAouI,GAAAr+C,EAAA9xC,EAAA0yC,WAAA3wF,EAAA,OACA,IAAA+vF,EAAAr2G,OAAA,CACA,GAAA20J,GAAA,SAAApwF,EAAAs0E,EAAAzyH,GAEA,QAAAtZ,GAAAlM,GACA,MAAAA,IAAAg0J,EAAA50J,OAAA64I,EAAA,UACA2b,GAAAI,EAAAh0J,GAAA2jE,EAAAn+C,EAAA,SAAA5G,GACAA,GAAAA,EAAA2rB,KAAAnrC,OAAA,EAAA64I,EAAAr5H,GACA1S,EAAAlM,EAAA,KALA,GAAAg0J,GAAAN,EAAA/vF,EAAA8xC,EAQAvpG,GAAA,GAIA,OAFA6nJ,GAAA7oI,OAAA,EACA6oI,EAAAJ,mBAAA,EACAI,EACA,OAAAD,EAAAnwF,EAAAy6B,UAAAz6B,EAAAkd,YAAA,cACA,SAAAld,GAAA,MAAAjN,GAAA7W,KAAAo0G,SAAAtwF,GAAAmwF,MAAAA,KACAp9F,EAAA7W,KAAAi4F,QACA,SAAAn0E,EAAAn+C,GAAA,MAAAkxC,GAAA7W,KAAAi4F,QAAAn0E,EAAAn+C,IAEA,aA/XA,GAAA6sI,GAAA,kBACAC,EAAA,wBAIA57F,GAAAw9F,SAAA,SAAAvwF,EAAAq0E,EAAAxyH,GACA,IAAAwyH,EAAA,MAAAr0E,GAAAuwF,SAAA1uI,EACAA,IAAAA,EAAA0F,QAAA8sH,EAAA9sH,OAAA,EACA,IAAAipI,IAAAt0G,KAAAm4F,EACA,IAAAxyH,EAAA,IAAA,GAAAD,KAAAC,GAAA2uI,EAAA5uI,GAAAC,EAAAD,EACA,OAAAo+C,GAAAuwF,SAAAC,IAGAz9F,EAAAwmD,gBAAA,WAAA,SAAA13F,GACAA,EAAA0rI,EAAAzyJ,KAAAA,KAAAoiF,UAAA,SAAAr7D,EACA,IAAAikH,GAAAhrI,KAAA4yF,gBACA,MAAAo4C,EAAArqI,OAAA,GAAA,CAIA,GAAAX,KAAAsrF,oBAAA,CACA,IAAAvkE,EAAAq6B,KAAA8zG,kBAAA,MAEA,KAAA,GAAA3zJ,GAAA,EAAAA,EAAAypI,EAAArqI,OAAAY,IACA,GAAAypI,EAAAzpI,GAAAjB,KAAA0yD,MAAAg4E,EAAAzpI,GAAA00D,OAAAjD,KAAA,OAGAhzD,KAAAmQ,MAAAwlJ,kBAAA31J,KAAAmQ,MAAAwlJ,iBAAA38H,OACA,IAAAw/G,GAAAx4I,KAAAmQ,MAAAwlJ,iBAAA,GAAAvD,GAAApyJ,KAAA+mB,EACAyxH,GAAAzxH,QAAAq6B,OAEA6W,EAAAqP,OAAAtnE,KAAA,kBAAAA,MACAw4I,EAAAruF,QAAA,MAgBA,IAAAl/C,GAAAlL,OAAAkL,uBAAA,SAAA0F,GACA,MAAAzF,YAAAyF,EAAA,IAAA,KAEAilJ,EAAA71J,OAAA61J,sBAAA9sI,YAEAspI,GAAAxnJ,WACAouB,MAAA,WACAh5B,KAAAksB,WACAlsB,KAAAklE,GAAA/0D,MAAAwlJ,iBAAA,KACA31J,KAAAqL,KAAA,KACArL,KAAAklE,GAAAj+D,IAAA,iBAAAjH,KAAAuyJ,cAEAvyJ,KAAAgwE,QAAAhwE,KAAAqQ,MAAA4nD,EAAAqP,OAAAtnE,KAAAqQ,KAAA,SACArQ,KAAAgwE,QAAAhwE,KAAAgwE,OAAAh3C,QACAi/B,EAAAqP,OAAAtnE,KAAAklE,GAAA,gBAAAllE,KAAAklE,MAGAh5C,OAAA,WACA,MAAAlsB,MAAAklE,GAAA/0D,MAAAwlJ,kBAAA31J,MAGAkzJ,KAAA,SAAA7iJ,EAAA9O,GACA,GAAAi3I,GAAAnoI,EAAAy7B,KAAAvqC,EACAi3I,GAAAp3F,KAAAo3F,EAAAp3F,KAAAphD,KAAAklE,GAAA70D,EAAAmoI,GACAx4I,KAAAklE,GAAAyqB,aAAAv4E,EAAAohI,GAAAA,EAAApkH,MAAA/jB,EAAA+jB,KACAokH,EAAA7+G,IAAAtpB,EAAAspB,GAAA,YACAs+B,EAAAqP,OAAAj3D,EAAA,OAAAmoI,GACAx4I,KAAAg5B,SAGA2uC,eAAA,WACA3nE,KAAA03C,WACAk+G,EAAA51J,KAAA03C,UACA13C,KAAA03C,SAAA,EAGA,IAAAzwB,GAAAjnB,KAAAklE,GAAAkd,YAAApvB,EAAAhzD,KAAAklE,GAAAhH,QAAAj3C,EAAA+rC,KACA,IAAA/rC,EAAA+rC,MAAAhzD,KAAAqyJ,SAAAr/F,MAAAA,EAAAryD,OAAAsmB,EAAAm2B,IAAAp9C,KAAAsyJ,SAAAtyJ,KAAAqyJ,SAAAj1G,IACAn2B,EAAAm2B,GAAAp9C,KAAAqyJ,SAAAj1G,IAAAp9C,KAAAklE,GAAAomB,qBACArkE,EAAAm2B,IAAAp9C,KAAA+mB,QAAA8uI,gBAAAp0J,KAAAuxD,EAAAv+B,OAAAxN,EAAAm2B,GAAA,IACAp9C,KAAAg5B,YACA,CACA,GAAAsa,GAAAtzC,IACAA,MAAA03C,SAAAzsC,EAAA,WAAAqoC,EAAA6W,WACAnqD,KAAAgwE,QAAAhwE,KAAAgwE,OAAAp0D,YAIAuuC,OAAA,SAAA/4C,GACA,GAAA,MAAApR,KAAAqL,KAAA,CACA,GAAAioC,GAAAtzC,KAAA81J,IAAA91J,KAAAqL,IACA8pJ,GAAAn1J,KAAA+mB,QAAAq6B,KAAAphD,KAAAklE,GAAAllE,KAAA+mB,QAAA,SAAA1W,GACAijC,EAAAjoC,MAAAyqJ,GAAAxiH,EAAAyiH,aAAA1lJ,EAAAe,OAIA2kJ,aAAA,SAAA1lJ,EAAAe,GACApR,KAAAqQ,MAAA4nD,EAAAqP,OAAAtnE,KAAAqQ,KAAA,SAEA,IAAAojJ,GAAAzzJ,KAAAgwE,QAAAhwE,KAAAgwE,OAAAyjF,QAAAriJ,GAAApR,KAAA+mB,QAAAivI,cACAh2J,MAAAgwE,QAAAhwE,KAAAgwE,OAAAh3C,QAEA3oB,GAAArQ,KAAAqQ,MAAAmiJ,EAAAxyJ,KAAAqQ,KAAAA,KACArQ,KAAAqQ,KAAAA,EAEAA,GAAAA,EAAAy7B,KAAAnrC,SACA8yJ,GAAA,GAAApjJ,EAAAy7B,KAAAnrC,OACAX,KAAAkzJ,KAAA7iJ,EAAA,IAEArQ,KAAAgwE,OAAA,GAAAwjF,GAAAxzJ,KAAAqQ,GACA4nD,EAAAqP,OAAAj3D,EAAA,cAiLAmjJ,EAAA5oJ,WACAouB,MAAA,WACA,GAAAh5B,KAAAw4I,WAAAxoE,QAAAhwE,KAAA,CACAA,KAAAw4I,WAAAxoE,OAAA,KACAhwE,KAAA0zJ,MAAAlzJ,WAAAC,YAAAT,KAAA0zJ,OACA1zJ,KAAAw4I,WAAAtzE,GAAAkyC,aAAAp3G,KAAA+0F,OAEA,IAAA7vB,GAAAllE,KAAAw4I,WAAAtzE,EACAllE,MAAAw4I,WAAAzxH,QAAA4tI,iBACAzvF,EAAAj+D,IAAA,OAAAjH,KAAAinD,QACAie,EAAAj+D,IAAA,QAAAjH,KAAAknD,UAEAge,EAAAj+D,IAAA,SAAAjH,KAAA60J,YAGAj5I,QAAA,WACA5b,KAAAw4I,WAAAtzE,GAAAkyC,aAAAp3G,KAAA+0F,OACA,IAAA/kB,GAAAhwE,IACAA,MAAA+0F,QAAAua,MAAA,WAAAt/B,EAAAyjF,QAAA,IACAzzJ,KAAAw4I,WAAAtzE,GAAAiyC,UAAAn3G,KAAA+0F,SAGAm+D,KAAA,WACAlzJ,KAAAw4I,WAAA0a,KAAAlzJ,KAAAqQ,KAAArQ,KAAA2zJ,eAGAc,aAAA,SAAAlzJ,EAAAizJ,GAKA,GAJAjzJ,GAAAvB,KAAAqQ,KAAAy7B,KAAAnrC,OACAY,EAAAizJ,EAAAx0J,KAAAqQ,KAAAy7B,KAAAnrC,OAAA,EAAA,EACAY,EAAA,IACAA,EAAAizJ,EAAA,EAAAx0J,KAAAqQ,KAAAy7B,KAAAnrC,OAAA,GACAX,KAAA2zJ,cAAApyJ,EAAA,CACA,GAAAy3C,GAAAh5C,KAAA0zJ,MAAAttJ,WAAApG,KAAA2zJ,aACA36G,GAAA9iC,UAAA8iC,EAAA9iC,UAAA7S,QAAA,IAAAwwJ,EAAA,IACA76G,EAAAh5C,KAAA0zJ,MAAAttJ,WAAApG,KAAA2zJ,aAAApyJ,GACAy3C,EAAA9iC,WAAA,IAAA29I,EACA76G,EAAAjY,UAAA/gC,KAAA0zJ,MAAAvsI,UACAnnB,KAAA0zJ,MAAAvsI,UAAA6xB,EAAAjY,UAAA,EACAiY,EAAAjY,UAAAiY,EAAA7pB,aAAAnvB,KAAA0zJ,MAAAvsI,UAAAnnB,KAAA0zJ,MAAAl3H,eACAx8B,KAAA0zJ,MAAAvsI,UAAA6xB,EAAAjY,UAAAiY,EAAA7pB,aAAAnvB,KAAA0zJ,MAAAl3H,aAAA,GACAy7B,EAAAqP,OAAAtnE,KAAAqQ,KAAA,SAAArQ,KAAAqQ,KAAAy7B,KAAA9rC,KAAA2zJ,cAAA36G,KAGA07G,aAAA,WACA,MAAAtqJ,MAAAy+B,MAAA7oC,KAAA0zJ,MAAAl3H,aAAAx8B,KAAA0zJ,MAAArtJ,WAAA8oB,eAAA,IAgDA8oC,EAAAihD,eAAA,OAAA,QACA98F,QAAAg5I,IAGAn9F,EAAAihD,eAAA,OAAA,WAAA,SAAAh0C,EAAAn+C,GACA,GAAAjjB,GAAAohE,EAAAkd,YAAApmC,EAAAkpB,EAAAuyC,WAAA3zG,GACA61B,EAAAs+B,EAAAmH,IAAAt7D,EAAAkvD,KAAAhX,EAAAx3C,IACA,IAAAw3C,EAAA+X,QAAA,KAAAtyD,KAAAu6C,EAAA+X,OAAA/X,EAAA+X,OAAApzD,OAAA,IACA,GAAA2hC,GAAA0Z,EAAA+X,OAAA3/B,EAAA6jC,EAAAmH,IAAAt7D,EAAAkvD,KAAAhX,EAAAz3C,WAEA,IAAA+9B,GAAA,GAAAlO,EAAAuF,CAGA,KAAA,GADAioC,MACArgE,EAAA,EAAAA,EAAAwlB,EAAAsuI,MAAA10J,OAAAY,IAAA,CACA,GAAAk4F,GAAA1yE,EAAAsuI,MAAA9zJ,EACAk4F,GAAAh3F,MAAA,EAAA6/B,EAAA3hC,SAAA2hC,GACAs/B,EAAAr7D,KAAAkzF,GAGA,GAAA73B,EAAAjhE,OAAA,OAAAmrC,KAAA81B,EAAAxtC,KAAAA,EAAAuF,GAAAA,KAGAs+B,EAAA69B,SAAAxpD,aAAA2rB,EAAAw9F,QAEA,IAAA9C,IACAvxG,KAAA6W,EAAA7W,KAAA60G,KACAD,gBAAA,EACAjC,eAAA,EACA8B,gBAAA,mBACAlB,gBAAA,EACAK,uBAAA,EACAz3H,UAAA,KACA61H,WAAA,KACAh9D,UAAA,KAGAn+B,GAAAsiC,aAAA,cAAA,QCjbA,SAAApG,GACA,gBAAAv0F,UAAA,gBAAAD,QACAw0F,EAAAnxD,QAAA,yBACA,kBAAA7Q,SAAAA,OAAAC,IACAD,OAAA,8BAAA,wBAAAgiE,GAEAA,EAAAl8B,aACA,SAAAA,GACA,YAEA,IAAAi+F,GAAA,SAAAC,EAAA,GAEAl+F,GAAAihD,eAAA,OAAA,UAAA,SAAAnmD,EAAAhsC,GAKA,IAJA,GAAA0yE,GAAA1yE,GAAAA,EAAA0yE,MAAAy8D,EACAjuG,EAAAlhC,GAAAA,EAAAkhC,OAAAkuG,EACAryJ,EAAAivD,EAAAqvB,YAAA0O,EAAA/9B,EAAAmL,QAAAp6D,EAAAkvD,MACAxuD,EAAAV,EAAAs5C,GAAA74C,EAAAC,EACAD,GAAAk1F,EAAAh4F,KAAAqvF,EAAAr8D,OAAAlwB,EAAA,OAAAA,CAKA,KAAA,GAJA6xJ,GAAA7xJ,GAAAC,GAAAssF,EAAAruF,MAAA8B,EAAAC,GAEAsnC,EAAA/kB,GAAAA,EAAA+kB,SAAAuQ,KACAwW,EAAA,GAAAn+C,QAAA+kF,EAAA77E,OAAA,KACApK,GAAA,EAAAA,GAAA,EAAAA,GAAA,EAEA,IADA,GAAAw/C,GAAAlvD,EAAAkvD,KAAA4+F,EAAAxnJ,KAAAkvD,IAAAlvD,KAAAC,IAAA2oD,EAAAx/C,EAAAy0C,EAAA8K,EAAA61B,aAAA71B,EAAA2R,YAAAlxD,EACAw/C,GAAA4+F,EAAA5+F,GAAAx/C,EAEA,IADA,GAAA9N,GAAArF,EAAA0yD,EAAAmL,QAAAlL,GACAttD,EAAAmtD,EAAAzuD,KAAA/D,IACA2yD,GAAAlvD,EAAAkvD,MAAAttD,EAAA,KAAA0wJ,GACAA,GAAA,GAAA1wJ,EAAA,GAAAypC,YAAAinH,EAAA,IAAA9lJ,OAAA1F,UAAA8F,eAAArP,KAAAg7C,EAAA32C,EAAA,MACA22C,EAAA32C,EAAA,KAAA,EACAomC,EAAAvlC,KAAAb,EAAA,IAKA,QAAAomC,KAAAA,EAAA1X,KAAA6jC,EAAAmH,IAAAt7D,EAAAkvD,KAAAzuD,GAAAo1B,GAAAs+B,EAAAmH,IAAAt7D,EAAAkvD,KAAAxuD,QCnCA,SAAA2vF,GACA,gBAAAv0F,UAAA,gBAAAD,QACAw0F,EAAAnxD,QAAA,yBACA,kBAAA7Q,SAAAA,OAAAC,IACAD,OAAA,gCAAA,wBAAAgiE,GAEAA,EAAAl8B,aACA,SAAAA,GAoBA,QAAAo+F,GAAAnxF,GACAA,EAAA/0D,MAAAk5B,cACA67B,EAAA/0D,MAAAk5B,YAAA7oC,WAAAC,YAAAykE,EAAA/0D,MAAAk5B,aACA67B,EAAA/0D,MAAAk5B,YAAA,MAGA,QAAAitH,GAAApxF,GACAmxF,EAAAnxF,EACA,IAAA7M,GAAA6M,EAAA/0D,MAAAk5B,YAAAxpC,SAAAO,cAAA,MACAi4D,GAAAh0D,MAAAsgB,QAAA,+BACA0zC,EAAAniD,UAAA,wBACA,IAAAw7H,GAAAxsE,EAAAqJ,UAAA,cACA,iBAAAmjE,KAAAA,EAAA7xI,SAAA2G,eAAAkrI,IACAr5E,EAAA93D,YAAAmxI,GACAxsE,EAAApgE,QAAAs2D,UAAAp3C,aAAAq0C,EAAA6M,EAAApgE,QAAAs2D,UAAA/0D,YAGA,QAAA4gD,GAAAie,GACA3a,EAAA2a,IAAAoxF,EAAApxF,GAEA,QAAAwxE,GAAAxxE,GACA,GAAA/jB,GAAA+jB,EAAA28B,oBAAAz1F,EAAAm+C,EAAA2a,EACA/jB,GAAAjrC,UAAAirC,EAAAjrC,UAAA7S,QAAA,oBAAA,KAAA+I,EAAA,oBAAA,IAEAA,EAAAkqJ,EAAApxF,GACAmxF,EAAAnxF,GAGA,QAAA3a,GAAA2a,GACA,MAAA,KAAAA,EAAAyjC,aAAA,KAAAzjC,EAAAhH,QAAA,GAhDAjG,EAAAsiC,aAAA,cAAA,GAAA,SAAAr1B,EAAAh7C,EAAAlC,GACA,GAAAtN,GAAAsN,GAAAA,GAAAiwC,EAAAqiC,IACA,IAAApwE,IAAAxP,EACAwqD,EAAAxhD,GAAA,OAAAujC,GACAie,EAAAxhD,GAAA,SAAAgzH,GACAxxE,EAAAxhD,GAAA,UAAAgzH,GACAA,EAAAxxE,OACA,KAAAh7C,GAAAxP,EAAA,CACAwqD,EAAAj+D,IAAA,OAAAggD,GACAie,EAAAj+D,IAAA,SAAAyvI,GACAxxE,EAAAj+D,IAAA,UAAAyvI,GACA2f,EAAAnxF,EACA,IAAA/jB,GAAA+jB,EAAA28B,mBACA1gD,GAAAjrC,UAAAirC,EAAAjrC,UAAA7S,QAAA,oBAAA,IAGA6mB,IAAAg7C,EAAA1sD,YAAAyuC,EAAAie,OCxBA,SAAAivB,GACA,gBAAAv0F,UAAA,gBAAAD,QACAw0F,EAAAnxD,QAAA,yBACA,kBAAA7Q,SAAAA,OAAAC,IACAD,OAAA,4BAAA,wBAAAgiE,GAEAA,EAAAl8B,aACA,SAAAA,GACA,YAEAA,GAAA8S,QAAA,SAAAhX,EAAAwiG,EAAA/c,EAAAzyH,GACA,GAAA0rC,GAAAwF,EAAA0R,QAAA1R,EAAAzkC,SAAA+iI,GACAz6F,EAAA,UAAAr6D,KAAAqnC,UAAAC,WACAytH,EAAA16F,IAAA,MAAAj8D,SAAAuiG,cAAAviG,SAAAuiG,aAAA,EAEA,IAAAo3C,EAAAj5I,YAAA,CACA,GAAAw4D,GAAAhyC,GAAAA,EAAAgyC,SAAAd,EAAAzkC,SAAAulC,QACA/f,EAAAwgG,EAAAt7H,EAAA,CACA86B,GAAA/yC,UAAA,GACAuzI,EAAA,SAAAn5I,EAAAgE,GACA,GAAA,MAAAhE,EAKA,MAFA24C,GAAAz4C,YAAAV,SAAA2G,eAAAgwJ,EAAA,KAAAn2J,SACA6d,EAAA,EAKA,KAAA,GAFA5C,GAAA,GAEA2L,EAAA,IAAA,CACA,GAAA4e,GAAAxlC,EAAAmQ,QAAA,KAAAyW,EACA,IAAA4e,IAAA,EAAA,CACAvqB,GAAAjb,EAAAoC,MAAAwkB,GACA/I,GAAA7d,EAAAM,OAAAsmB,CACA,OAEA/I,GAAA2nB,EAAA5e,EACA3L,GAAAjb,EAAAoC,MAAAwkB,EAAA4e,EACA,IAAAqT,GAAA6f,EAAA76C,EAAA66C,CACA76C,IAAAg7B,CACA,KAAA,GAAA33C,GAAA,EAAAA,EAAA23C,IAAA33C,EAAA+Z,GAAA,GACA2L,GAAA4e,EAAA,EAIA,GAAAxhC,EAAA,CACA,GAAAu/D,GAAA5qB,EAAAz4C,YAAAV,SAAAO,cAAA,QACAwjE,GAAA1tD,UAAA,MAAA7R,EAAAhB,QAAA,MAAA,QACAugE,EAAArjE,YAAAV,SAAA2G,eAAA8U,QAEA09B,GAAAz4C,YAAAV,SAAA2G,eAAA8U,KAMA,IAAA,GADA+/C,GAAApD,EAAA23B,WAAA77B,GAAA5jD,EAAA4W,GAAAA,EAAA5W,OAAA8nD,EAAAuS,WAAA/X,GACAlxD,EAAA,EAAAY,EAAAk5D,EAAA16D,OAAAY,EAAAY,IAAAZ,EAAA,CACAA,GAAAi4I,EAAA,KACA,IAAAptE,GAAA,GAAAnU,GAAAoU,aAAAhR,EAAA95D,GAEA,MADA6qE,EAAArY,QAAAtB,EAAAga,WAAAha,EAAAga,UAAAt8D,IACAi8D,EAAAG,OAAA,CACA,GAAAloE,GAAAouD,EAAAzW,MAAAowB,EAAAj8D,EACAqpI,GAAAptE,EAAA3T,UAAAp0D,EAAA9C,EAAA6qE,EAAA7nE,MAAA4L,GACAi8D,EAAA7nE,MAAA6nE,EAAAnlD,SC/DA,SAAAktE,GACA,gBAAAv0F,UAAA,gBAAAD,QACAw0F,EAAAnxD,QAAA,yBACA,kBAAA7Q,SAAAA,OAAAC,IACAD,OAAA,gCAAA,wBAAAgiE,GAEAA,EAAAl8B,aACA,SAAAA,GACA,YAGA,SAAAw+F,GAAAnoH,EAAAiP,EAAAt2B,EAAAw/H,GAWA,GAVAzmJ,KAAA02J,cAAA,EAAA12J,KAAAsuC,IAAAA,EACA,MAAAm4G,GAAA,gBAAAlpG,KAAAkpG,GAAA,GAEAx/H,EAAAA,EAAAqnB,EAAAsxB,QAAA34C,GAAAm4C,EAAA,EAAA,GACAp/D,KAAAinB,KAAAmN,KAAAnN,EAAA0S,GAAA1S,GAMA,gBAAAs2B,GACAA,EAAA1+B,SAAA0+B,EAAA,GAAA7oC,QAAA6oC,EAAA3/B,OAAA2/B,EAAAo5G,WAAA,KAAA,MACA32J,KAAA8T,QAAA,SAAAyH,EAAA0L,GACA,GAAA1L,EAAA,CACAgiC,EAAAgyB,UAAA,CAEA,KADA,GAAAztE,GAAAyC,EAAAyuD,EAAA1kB,EAAA4vB,QAAAj3C,EAAA+rC,MAAAvwD,MAAA,EAAAwkB,EAAAm2B,IAAAw5G,EAAA,IACA,CACAr5G,EAAAgyB,UAAAqnF,CACA,IAAAC,GAAAt5G,EAAAn5C,KAAA4uD,EACA,KAAA6jG,EAAA,KAIA,IAHA/0J,EAAA+0J,EACAtyJ,EAAAzC,EAAA8Y,MACAg8I,EAAA90J,EAAA8Y,OAAA9Y,EAAA,GAAAnB,QAAA,GACAi2J,GAAA5jG,EAAAryD,OAAA,MAEA,GAAAm2J,GAAAh1J,GAAAA,EAAA,GAAAnB,QAAA,CACAm2J,KACA,GAAAvyJ,GAAA,GAAAyuD,EAAAryD,OAAAmB,EAAAo0B,OACA3xB,GAAA+pC,EAAA4vB,QAAAj3C,EAAA+rC,MAAAryD,QACAm2J,SAGA,CACAv5G,EAAAgyB,UAAAtoD,EAAAm2B,EACA,IAAA4V,GAAA1kB,EAAA4vB,QAAAj3C,EAAA+rC,MAAAlxD,EAAAy7C,EAAAn5C,KAAA4uD,GACA8jG,EAAAh1J,GAAAA,EAAA,GAAAnB,QAAA,EACA4D,EAAAzC,GAAAA,EAAA8Y,KACArW,GAAAuyJ,GAAA9jG,EAAAryD,QAAAm2J,IAAAA,EAAA,GAEA,GAAAh1J,GAAAg1J,EACA,OAAA1iI,KAAAgrC,EAAAn4C,EAAA+rC,KAAAzuD,GACAo1B,GAAAylC,EAAAn4C,EAAA+rC,KAAAzuD,EAAAuyJ,GACAh1J,MAAAA,QAEA,CACA,GAAAi1J,GAAAx5G,CACAkpG,KAAAlpG,EAAAA,EAAAt8C,cACA,IAAA2tJ,GAAAnI,EAAA,SAAA7zH,GAAA,MAAAA,GAAA3xB,eAAA,SAAA2xB,GAAA,MAAAA,IACAza,EAAAolC,EAAArtC,MAAA,KAEA,IAAA,GAAAiI,EAAAxX,OACA48C,EAAA58C,OAKAX,KAAA8T,QAAA,SAAAyH,EAAA0L,GACA,GAAA1L,EAAA,CACA,GAAAy7I,GAAA1oH,EAAA4vB,QAAAj3C,EAAA+rC,MAAAvwD,MAAA,EAAAwkB,EAAAm2B,IAAA4V,EAAA47F,EAAAoI,GACAl1J,EAAAkxD,EAAA7jB,YAAAoO,EACA,IAAAz7C,GAAA,EAEA,MADAA,GAAAm1J,EAAAD,EAAAhkG,EAAAlxD,IACAsyB,KAAAgrC,EAAAn4C,EAAA+rC,KAAAlxD,GAAA63B,GAAAylC,EAAAn4C,EAAA+rC,KAAAlxD,EAAAi1J,EAAAp2J,aAEA,CACA,GAAAq2J,GAAA1oH,EAAA4vB,QAAAj3C,EAAA+rC,MAAAvwD,MAAAwkB,EAAAm2B,IAAA4V,EAAA47F,EAAAoI,GACAl1J,EAAAkxD,EAAAxiD,QAAA+sC,EACA,IAAAz7C,GAAA,EAEA,MADAA,GAAAm1J,EAAAD,EAAAhkG,EAAAlxD,GAAAmlB,EAAAm2B,IACAhpB,KAAAgrC,EAAAn4C,EAAA+rC,KAAAlxD,GAAA63B,GAAAylC,EAAAn4C,EAAA+rC,KAAAlxD,EAAAi1J,EAAAp2J,WAfAX,KAAA8T,QAAA,iBAoBA,CACA,GAAAojJ,GAAAH,EAAA7mJ,MAAA,KACAlQ,MAAA8T,QAAA,SAAAyH,EAAA0L,GACA,GAAA5V,GAAA8G,EAAAxX,OAAA,CACA,IAAA4a,EAAA,CACA,GAAA0L,EAAA+rC,MAAA76C,EAAAxX,OAAA,GAAA2tC,EAAAs6C,YAAA,MACA,IAAAgmE,EAAAtgH,EAAA4vB,QAAAj3C,EAAA+rC,MAAAvwD,MAAA,EAAAy0J,EAAA7lJ,GAAA1Q,UAAAwX,EAAAA,EAAAxX,OAAA,GAAA,MAEA,KAAA,GADAg5B,GAAAylC,EAAAn4C,EAAA+rC,KAAAkkG,EAAA7lJ,GAAA1Q,QACAw2J,EAAAlwI,EAAA+rC,KAAA,EAAAzxD,EAAA8P,EAAA,EAAA9P,GAAA,IAAAA,IAAA41J,EACA,GAAAh/I,EAAA5W,IAAAqtJ,EAAAtgH,EAAA4vB,QAAAi5F,IAAA,MACA,IAAAnkG,GAAA1kB,EAAA4vB,QAAAi5F,GAAApyE,EAAA/xB,EAAAryD,OAAAu2J,EAAA,GAAAv2J,MACA,IAAAiuJ,EAAA57F,EAAAvwD,MAAAsiF,KAAA5sE,EAAA,GAAA,MACA,QAAAic,KAAAgrC,EAAA+3F,EAAApyE,GAAAprD,GAAAA,GAEA,KAAA1S,EAAA+rC,MAAA76C,EAAAxX,OAAA,GAAA2tC,EAAAo2B,YAAA,CACA,GAAA1R,GAAA1kB,EAAA4vB,QAAAj3C,EAAA+rC,MAAA+xB,EAAA/xB,EAAAryD,OAAAu2J,EAAA,GAAAv2J,MACA,IAAAiuJ,EAAA57F,EAAAvwD,MAAAsiF,KAAA5sE,EAAA,GAAA,CAEA,IAAA,GADAic,GAAAgrC,EAAAn4C,EAAA+rC,KAAA+xB,GACAoyE,EAAAlwI,EAAA+rC,KAAA,EAAAzxD,EAAA,EAAAA,EAAA8P,IAAA9P,IAAA41J,EACA,GAAAh/I,EAAA5W,IAAAqtJ,EAAAtgH,EAAA4vB,QAAAi5F,IAAA,MACA,IAAAvI,EAAAtgH,EAAA4vB,QAAAi5F,GAAA10J,MAAA,EAAAy0J,EAAA7lJ,GAAA1Q,UAAAwX,EAAA9G,GACA,OAAA+iB,KAAAA,EAAAuF,GAAAylC,EAAA+3F,EAAAD,EAAA7lJ,GAAA1Q,cAmDA,QAAAs2J,GAAAD,EAAAI,EAAAnwI,GACA,GAAA+vI,EAAAr2J,QAAAy2J,EAAAz2J,OAAA,MAAAsmB,EACA,KAAA,GAAAowI,GAAAjtJ,KAAAkvD,IAAAryC,EAAA+vI,EAAAr2J,UAAA,CACA,GAAA22J,GAAAN,EAAAv0J,MAAA,EAAA40J,GAAAp2J,cAAAN,MACA,IAAA22J,EAAArwI,IAAAowI,MACA,CAAA,KAAAC,EAAArwI,GACA,MAAAowI,KADAA,IA1JA,GAAAj4F,GAAAnH,EAAAmH,GAyGAq3F,GAAA7rJ,WACA2sJ,SAAA,WAAA,MAAAv3J,MAAAgU,MAAA,IACAwjJ,aAAA,WAAA,MAAAx3J,MAAAgU,MAAA,IAEAA,KAAA,SAAAuH,GAEA,QAAAk8I,GAAAzkG,GACA,GAAA/rC,GAAAm4C,EAAApM,EAAA,EAGA,OAFA1f,GAAArsB,KAAAmN,KAAAnN,EAAA0S,GAAA1S,GACAqsB,EAAAojH,cAAA,GACA,EAGA,IARA,GAAApjH,GAAAtzC,KAAAinB,EAAAjnB,KAAAsuC,IAAAsxB,QAAArkD,EAAAvb,KAAAinB,IAAAmN,KAAAp0B,KAAAinB,IAAA0S,MAQA,CACA,GAAA35B,KAAAinB,IAAAjnB,KAAA8T,QAAAyH,EAAA0L,GAEA,MADAjnB,MAAA02J,cAAA,EACA12J,KAAAinB,IAAAnlB,QAAA,CAEA,IAAAyZ,EAAA,CACA,IAAA0L,EAAA+rC,KAAA,MAAAykG,GAAA,EACAxwI,GAAAm4C,EAAAn4C,EAAA+rC,KAAA,EAAAhzD,KAAAsuC,IAAA4vB,QAAAj3C,EAAA+rC,KAAA,GAAAryD,YAEA,CACA,GAAA88D,GAAAz9D,KAAAsuC,IAAAq6D,WACA,IAAA1hF,EAAA+rC,MAAAyK,EAAA,EAAA,MAAAg6F,GAAAh6F,EACAx2C,GAAAm4C,EAAAn4C,EAAA+rC,KAAA,EAAA,MAKA5+B,KAAA,WAAA,GAAAp0B,KAAA02J,aAAA,MAAA12J,MAAAinB,IAAAmN,MACAuF,GAAA,WAAA,GAAA35B,KAAA02J,aAAA,MAAA12J,MAAAinB,IAAA0S,IAEAt2B,QAAA,SAAA04G,EAAAzrE,GACA,GAAAtwC,KAAA02J,aAAA,CACA,GAAAr7F,GAAApD,EAAA23B,WAAAmsB,EACA/7G,MAAAsuC,IAAAqhD,aAAAt0B,EAAAr7D,KAAAinB,IAAAmN,KAAAp0B,KAAAinB,IAAA0S,GAAA2W,GACAtwC,KAAAinB,IAAA0S,GAAAylC,EAAAp/D,KAAAinB,IAAAmN,KAAA4+B,KAAAqI,EAAA16D,OAAA,EACA06D,EAAAA,EAAA16D,OAAA,GAAAA,QAAA,GAAA06D,EAAA16D,OAAAX,KAAAinB,IAAAmN,KAAAgpB,GAAA,OAgBA6a,EAAAwmD,gBAAA,kBAAA,SAAAlhE,EAAAt2B,EAAAw/H,GACA,MAAA,IAAAgQ,GAAAz2J,KAAAsuC,IAAAiP,EAAAt2B,EAAAw/H,KAEAxuF,EAAAymD,mBAAA,kBAAA,SAAAnhE,EAAAt2B,EAAAw/H,GACA,MAAA,IAAAgQ,GAAAz2J,KAAAu9C,EAAAt2B,EAAAw/H,KAGAxuF,EAAAwmD,gBAAA,gBAAA,SAAAlhE,EAAAkpG,GAGA,IAFA,GAAAzrE,MACAl3E,EAAA9D,KAAA03J,gBAAAn6G,EAAAv9C,KAAAoiF,UAAA,QAAAqkE,GACA3iJ,EAAAyzJ,cACAt/F,EAAA8pC,OAAAj+F,EAAA61B,KAAA35B,KAAAoiF,UAAA,OAAA,IACApH,EAAAz0E,MAAA0vD,OAAAnyD,EAAAswB,OAAA9zB,KAAAwD,EAAA61B,MAEAqhD,GAAAr6E,QACAX,KAAA6oG,cAAA7tB,EAAA,OCrLA,SAAAmZ,GACA,gBAAAv0F,UAAA,gBAAAD,QACAw0F,EAAAnxD,QAAA,yBACA,kBAAA7Q,SAAAA,OAAAC,IACAD,OAAA,0BAAA,wBAAAgiE,GAEAA,EAAAl8B,aACA,SAAAA,GACA,QAAA0/F,GAAAzyF,EAAA7nC,EAAAiB,GACA,GACAs5H,GADA7oI,EAAAm2C,EAAA28B,mBAaA,OAXA+1D,GAAA7oI,EAAAxuB,YAAAV,SAAAO,cAAA,QACAk+B,EACAs5H,EAAA1hJ,UAAA,6CAEA0hJ,EAAA1hJ,UAAA,0CAEA,gBAAAmnB,GACAu6H,EAAA3xJ,UAAAo3B,EAEAu6H,EAAAr3J,YAAA88B,GAEAu6H,EAGA,QAAAC,GAAA3yF,EAAAhU,GACAgU,EAAA/0D,MAAA2nJ,0BACA5yF,EAAA/0D,MAAA2nJ,2BACA5yF,EAAA/0D,MAAA2nJ,yBAAA5mG,EAGA+G,EAAAwmD,gBAAA,aAAA,SAAAphF,EAAAm8G,EAAAzyH,GAOA,QAAAiS,GAAAk4B,GACA,GAAA,gBAAAA,GACA2rC,EAAAvpF,MAAA49C,MACA,CACA,GAAA2nE,EAAA,MACAA,IAAA,EACA++B,EAAAp3J,WAAAC,YAAAm3J,GACA9vD,EAAAvvF,QAEAwO,EAAAgxI,SAAAhxI,EAAAgxI,QAAAH,IAfA7wI,IAAAA,MAEA8wI,EAAA73J,KAAA,KAEA,IAeAiZ,GAfA2+I,EAAAD,EAAA33J,KAAAq9B,EAAAtW,EAAAuX,QACAu6F,GAAA,EAAA/wB,EAAA9nG,KAcA68F,EAAA+6D,EAAAzyJ,qBAAA,SAAA,EAqCA,OApCA03F,IACAA,EAAAtkF,QAEAwO,EAAAzT,QACAupF,EAAAvpF,MAAAyT,EAAAzT,MACAyT,EAAAixI,qBAAA,GACAn7D,EAAA3iF,UAIA6M,EAAAqgC,SACA6Q,EAAAv0C,GAAAm5E,EAAA,QAAA,SAAA16F,GAAA4kB,EAAAqgC,QAAAjlD,EAAA06F,EAAAvpF,MAAA0lB,KACAjS,EAAAmwE,SACAj/B,EAAAv0C,GAAAm5E,EAAA,QAAA,SAAA16F,GAAA4kB,EAAAmwE,QAAA/0F,EAAA06F,EAAAvpF,MAAA0lB,KAEAi/B,EAAAv0C,GAAAm5E,EAAA,UAAA,SAAA16F,GACA4kB,GAAAA,EAAA6vE,WAAA7vE,EAAA6vE,UAAAz0F,EAAA06F,EAAAvpF,MAAA0lB,MACA,IAAA72B,EAAAqgB,SAAAuE,EAAAkxI,gBAAA,GAAA,IAAA91J,EAAAqgB,WACAq6E,EAAA97E,OACAk3C,EAAAkQ,OAAAhmE,GACA62B,KAEA,IAAA72B,EAAAqgB,SAAAg3H,EAAA38C,EAAAvpF,MAAAnR,MAGA4kB,EAAAmxI,eAAA,GAAAjgG,EAAAv0C,GAAAm5E,EAAA,OAAA7jE,KACA/f,EAAA2+I,EAAAzyJ,qBAAA,UAAA,MACA8yD,EAAAv0C,GAAAzK,EAAA,QAAA,WACA+f,IACA8uE,EAAAvvF,UAGAwO,EAAAmxI,eAAA,GAAAjgG,EAAAv0C,GAAAzK,EAAA,OAAA+f,GAEA/f,EAAAV,SAEAygB,IAGAi/B,EAAAwmD,gBAAA,cAAA,SAAAphF,EAAAwlB,EAAA97B,GAKA,QAAAiS,KACA6/F,IACAA,GAAA,EACA++B,EAAAp3J,WAAAC,YAAAm3J,GACA9vD,EAAAvvF,SARAs/I,EAAA73J,KAAA,KACA,IAAA43J,GAAAD,EAAA33J,KAAAq9B,EAAAtW,GAAAA,EAAAuX,QACA7b,EAAAm1I,EAAAzyJ,qBAAA,UACA0zH,GAAA,EAAA/wB,EAAA9nG,KAAAm4J,EAAA,CAOA11I,GAAA,GAAAlK,OACA,KAAA,GAAAhX,GAAA,EAAAA,EAAAkhB,EAAA9hB,SAAAY,EAAA,CACA,GAAA7B,GAAA+iB,EAAAlhB,IACA,SAAAi4I,GACAvhF,EAAAv0C,GAAAhkB,EAAA,QAAA,SAAAyC,GACA81D,EAAAgQ,iBAAA9lE,GACA62B,IACAwgH,GAAAA,EAAA1xC,MAEAjlD,EAAAthD,IACA02D,EAAAv0C,GAAAhkB,EAAA,OAAA,aACAy4J,EACAjtJ,WAAA,WAAAitJ,GAAA,GAAAn/H,KAAA,OAEAi/B,EAAAv0C,GAAAhkB,EAAA,QAAA,aAAAy4J,OAYAlgG,EAAAwmD,gBAAA,mBAAA,SAAAphF,EAAAtW,GAMA,QAAAiS,KACA6/F,IACAA,GAAA,EACA/vG,aAAAsvI,GACAR,EAAAp3J,WAAAC,YAAAm3J,IATAC,EAAA73J,KAAAg5B,EACA,IACAo/H,GADAR,EAAAD,EAAA33J,KAAAq9B,EAAAtW,GAAAA,EAAAuX,QACAu6F,GAAA,EACAtrH,EAAAwZ,GAAA,mBAAAA,GAAAxZ,SAAAwZ,EAAAxZ,SAAA,GAiBA,OARA0qD,GAAAv0C,GAAAk0I,EAAA,QAAA,SAAAz1J,GACA81D,EAAAgQ,iBAAA9lE,GACA62B,MAGAzrB,IACA6qJ,EAAAltJ,WAAA8tB,EAAAzrB,IAEAyrB,MC/IA,SAAAm7D,GACA,gBAAAv0F,UAAA,gBAAAD,QACAw0F,EAAAnxD,QAAA,wBAAAA,QAAA,kBAAAA,QAAA,qBACA,kBAAA7Q,SAAAA,OAAAC,IACAD,OAAA,0BAAA,uBAAA,iBAAA,oBAAAgiE,GAEAA,EAAAl8B,aACA,SAAAA,GACA,YAEA,SAAAogG,GAAA96G,EAAAqoD,GAMA,MALA,gBAAAroD,GACAA,EAAA,GAAA7oC,QAAA6oC,EAAAl6C,QAAA,sCAAA,QAAAuiG,EAAA,KAAA,KACAroD,EAAA1+B,SACA0+B,EAAA,GAAA7oC,QAAA6oC,EAAA3/B,OAAA2/B,EAAAo5G,WAAA,KAAA,OAEA36G,MAAA,SAAAowB,GACA7uB,EAAAgyB,UAAAnD,EAAAnlD,GACA,IAAAnlB,GAAAy7C,EAAAn5C,KAAAgoE,EAAArY,OACA,OAAAjyD,IAAAA,EAAA8Y,OAAAwxD,EAAAnlD,KACAmlD,EAAAnlD,KAAAnlB,EAAA,GAAAnB,QAAA,EACA,kBACAmB,EACAsqE,EAAAnlD,IAAAnlB,EAAA8Y,MAEAwxD,EAAAm5B,eAKA,QAAA+yD,KACAt4J,KAAAu4J,QAAAv4J,KAAAw4J,MAAAx4J,KAAAy4J,UAAAz4J,KAAAu9C,MAAA,KACAv9C,KAAAirE,QAAA,KAGA,QAAAytF,GAAAxzF,GACA,MAAAA,GAAA/0D,MAAAmtC,SAAA4nB,EAAA/0D,MAAAmtC,OAAA,GAAAg7G,IAGA,QAAAK,GAAAp7G,GACA,MAAA,gBAAAA,IAAAA,GAAAA,EAAAt8C,cAGA,QAAAy2J,GAAAxyF,EAAA3nB,EAAAt2B,GAEA,MAAAi+C,GAAAwyF,gBAAAn6G,EAAAt2B,EAAA0xI,EAAAp7G,IAGA,QAAAq7G,GAAA1zF,EAAA7kE,EAAA85F,EAAA0+D,EAAAjiE,GACA1xB,EAAA4zF,WAAAz4J,EAAAw4J,GACAvlJ,MAAA6mF,EACA69D,mBAAA,EACAC,cAAA,EACAF,QAAA,WAAAgB,EAAA7zF,IACA0xB,UAAAA,IAIA,QAAAghE,GAAA1yF,EAAA7kE,EAAA24J,EAAA7+D,EAAAx2F,GACAuhE,EAAA4zF,WAAA5zF,EAAA4zF,WAAAz4J,EAAAsD,GAAA2P,MAAA6mF,EAAA69D,mBAAA,IACAr0J,EAAA+wD,OAAAskG,EAAA7+D,IAGA,QAAA8+D,GAAA/zF,EAAA7kE,EAAA24J,EAAAE,GACAh0F,EAAAi0F,YAAAj0F,EAAAi0F,YAAA94J,EAAA64J,GACAttB,QAAAotB,IAAAE,EAAA,KAGA,QAAAE,GAAArlG,GACA,MAAAA,GAAA1wD,QAAA,SAAA,SAAAD,EAAAg6C,GACA,MAAA,KAAAA,EAAA,KACA,KAAAA,EAAA,KACAA,IAIA,QAAAi8G,GAAA97G,GACA,GAAA+7G,GAAA/7G,EAAAz7C,MAAA,qBACA,IAAAw3J,EACA,IAAA/7G,EAAA,GAAA7oC,QAAA4kJ,EAAA,GAAAA,EAAA,GAAA9oJ,QAAA,OAAA,EAAA,GAAA,KACA,MAAArO,QAEAo7C,GAAA67G,EAAA77G,EAIA,QAFA,gBAAAA,GAAA,IAAAA,EAAAA,EAAA97C,KAAA,OACA87C,EAAA,MACAA,EAMA,QAAAg8G,GAAAr0F,EAAA/0D,EAAAotC,GACAptC,EAAAqpJ,UAAAj8G,EACAptC,EAAAotC,MAAA87G,EAAA97G,GACA2nB,EAAAqyC,cAAApnG,EAAA86D,QAAA0tF,EAAAxoJ,EAAAotC,QACAptC,EAAA86D,QAAAotF,EAAAloJ,EAAAotC,MAAAo7G,EAAAxoJ,EAAAotC,QACA2nB,EAAAmyC,WAAAlnG,EAAA86D,SACA/F,EAAAu0F,yBACAtpJ,EAAAupJ,WAAAvpJ,EAAAupJ,SAAA15H,QAAA7vB,EAAAupJ,SAAA,MACAvpJ,EAAAupJ,SAAAx0F,EAAAu0F,uBAAAtpJ,EAAAotC,MAAAo7G,EAAAxoJ,EAAAotC,SAIA,QAAAo8G,GAAAz0F,EAAA00F,EAAAlmI,EAAAmkB,GACA,GAAA1nC,GAAAuoJ,EAAAxzF,EACA,IAAA/0D,EAAAotC,MAAA,MAAAg6G,GAAAryF,EAAA00F,EACA,IAAAtxJ,GAAA48D,EAAA6tB,gBAAA5iF,EAAAsoJ,SACA,IAAA/kI,GAAAwxC,EAAA4zF,WAAA,CACA,GAAAe,GAAA,KACAC,EAAA,SAAAv8G,EAAAn2C,GACA6wD,EAAAkQ,OAAA/gE,GACAm2C,IACAA,GAAAptC,EAAAqpJ,YACAD,EAAAr0F,EAAA/0D,EAAAotC,GACAptC,EAAAooJ,QAAApoJ,EAAAqoJ,MAAAtzF,EAAAkd,aAEAy3E,IAAAA,EAAAx1J,MAAAsH,QAAA,GACA4rJ,EAAAryF,EAAA99D,EAAA+a,SAAA,SAAA/e,EAAAu2B,GACA,GAAAi+H,EACAj+H,GAAAq5B,KAAA,GAAAnzD,SAAAmvE,gBACA4oF,EAAA1yF,EAAApgE,QAAAq8C,QAAA6tB,cAAA,wBACA4oF,EAAAnxI,wBAAA6X,OAAA,EAAA4mC,EAAAwT,aAAA/+C,EAAA,UAAA7jB,OACA+jJ,EAAAjC,GAAAvzJ,MAAAsH,QAAA,OAGAitJ,GAAA1zF,EAAA60F,EAAAzxJ,EAAAwxJ,EAAA,SAAA1yJ,EAAAm2C,GACA,GAAAkJ,GAAAwR,EAAAxR,QAAAr/C,GACA8sF,EAAAj8B,EAAA88B,OAAA7vB,EAAAqJ,UAAA,WAAA9nB,EACAytC,KAAAA,EAAAhvB,EAAAqJ,UAAA,aAAA9nB,IACA,YAAAytC,GAAA,YAAAA,GACA,sBAAAA,GAAA,sBAAAA,GACAj8B,EAAAkQ,OAAA/gE,GACAmyJ,EAAAr0F,EAAAwzF,EAAAxzF,GAAA3nB,GACA2nB,EAAAsxC,YAAAtiB,IACA,QAAAA,GAAA,kBAAAA,IACAj8B,EAAAkQ,OAAA/gE,GACA0yJ,EAAAv8G,EAAAn2C,MAGAywC,GAAAvvC,IACAixJ,EAAAr0F,EAAA/0D,EAAA7H,GACAivJ,EAAAryF,EAAA00F,QAGAhC,GAAA1yF,EAAA60F,EAAA,cAAAzxJ,EAAA,SAAAi1C,GACAA,IAAAptC,EAAAotC,OAAA2nB,EAAAuf,UAAA,WACA80E,EAAAr0F,EAAA/0D,EAAAotC,GACAptC,EAAAooJ,QAAApoJ,EAAAqoJ,MAAAtzF,EAAAkd,YACAm1E,EAAAryF,EAAA00F,OAMA,QAAArC,GAAAryF,EAAA00F,EAAApgB,GAAAt0E,EAAAuf,UAAA,WACA,GAAAt0E,GAAAuoJ,EAAAxzF,GACApjB,EAAA41G,EAAAxyF,EAAA/0D,EAAAotC,MAAAq8G,EAAAzpJ,EAAAooJ,QAAApoJ,EAAAqoJ,QACA12G,EAAA9tC,KAAA4lJ,KACA93G,EAAA41G,EAAAxyF,EAAA/0D,EAAAotC,MAAAq8G,EAAA3hG,EAAAmH,IAAA8F,EAAAR,YAAAzM,EAAAmH,IAAA8F,EAAA0jB,YAAA,IACA9mC,EAAA9tC,KAAA4lJ,OAEA10F,EAAA0nB,aAAA9qC,EAAA1tB,OAAA0tB,EAAAnoB,MACAurC,EAAA8b,gBAAA5sD,KAAA0tB,EAAA1tB,OAAAuF,GAAAmoB,EAAAnoB,MAAA,IACAxpB,EAAAooJ,QAAAz2G,EAAA1tB,OAAAjkB,EAAAqoJ,MAAA12G,EAAAnoB,KACA6/G,GAAAA,EAAA13F,EAAA1tB,OAAA0tB,EAAAnoB,SAGA,QAAAo/H,GAAA7zF,GAAAA,EAAAuf,UAAA,WACA,GAAAt0E,GAAAuoJ,EAAAxzF,EACA/0D,GAAAsoJ,UAAAtoJ,EAAAotC,MACAptC,EAAAotC,QACAptC,EAAAotC,MAAAptC,EAAAqpJ,UAAA,KACAt0F,EAAAqyC,cAAApnG,EAAA86D,SACA96D,EAAAupJ,WAAAvpJ,EAAAupJ,SAAA15H,QAAA7vB,EAAAupJ,SAAA,SAQA,QAAAl1I,GAAA0gD,EAAA3nB,EAAAl9C,GACA6kE,EAAAuf,UAAA,WACA,IAAA,GAAA3iC,GAAA41G,EAAAxyF,EAAA3nB,GAAAuE,EAAAy1G,YACA,GAAA,gBAAAh6G,GAAA,CACA,GAAAz7C,GAAAojE,EAAA85B,SAAAl9C,EAAA1tB,OAAA0tB,EAAAnoB,MAAA73B,MAAAy7C,EACAuE,GAAAz+C,QAAAhD,EAAAgD,QAAA,UAAA,SAAAD,EAAA7B,GAAA,MAAAO,GAAAP,UACAugD,GAAAz+C,QAAAhD,KAKA,QAAAgD,GAAA6hE,EAAA1nB,GACA,IAAA0nB,EAAAqJ,UAAA,YAAA,CACA,GAAAhxB,GAAA2nB,EAAA6tB,gBAAA2lE,EAAAxzF,GAAAuzF,UACAuB,EAAA,0CAAAx8G,EAAA,eAAA,YAAA,SACAo6G,GAAA1yF,EAAA80F,EAAAC,EAAAD,EAAAz8G,EAAA,SAAAA,GACAA,IACAA,EAAA87G,EAAA97G,GACAq6G,EAAA1yF,EAAAg1F,EAAA,gBAAA,GAAA,SAAA75J,GAEA,GADAA,EAAA+4J,EAAA/4J,GACAm9C,EACAh5B,EAAA0gD,EAAA3nB,EAAAl9C,OACA,CACA04J,EAAA7zF,EACA,IAAApjB,GAAA41G,EAAAxyF,EAAA3nB,EAAA2nB,EAAAkd,UAAA,SACA+3E,EAAA,WACA,GAAAr4J,GAAAyC,EAAAu9C,EAAA1tB,SACAtyB,EAAAggD,EAAAy1G,cACAz1G,EAAA41G,EAAAxyF,EAAA3nB,KACAz7C,EAAAggD,EAAAy1G,aACAhzJ,GAAAu9C,EAAA1tB,OAAA4+B,MAAAzuD,EAAAyuD,MAAAlR,EAAA1tB,OAAAgpB,IAAA74C,EAAA64C,MAEA8nB,EAAA0nB,aAAA9qC,EAAA1tB,OAAA0tB,EAAAnoB,MACAurC,EAAA8b,gBAAA5sD,KAAA0tB,EAAA1tB,OAAAuF,GAAAmoB,EAAAnoB,OACAs/H,EAAA/zF,EAAAk1F,EAAA,YACA,WAAAC,EAAAv4J,IAAAq4J,EACA,WAAA31I,EAAA0gD,EAAA3nB,EAAAl9C,QAEAg6J,EAAA,SAAAv4J,GACAggD,EAAAz+C,QAAA,gBAAAk6C,GAAAl9C,EACAA,EAAAgD,QAAA,UAAA,SAAAD,EAAA7B,GAAA,MAAAO,GAAAP,MACA44J,IAEAA,YAxIA,GAAAJ,GACA,oOAuFAE,EACA,gLACAC,EAAA,8HACAE,EAAA,2IAmDAniG,GAAA69B,SAAA9hF,KAAA,SAAAkxD,GAAA6zF,EAAA7zF,GAAAy0F,EAAAz0F,IACAjN,EAAA69B,SAAAwkE,eAAA,SAAAp1F,GAAA6zF,EAAA7zF,GAAAy0F,EAAAz0F,GAAA,GAAA,IACAjN,EAAA69B,SAAAykE,mBAAA,SAAAr1F,GAAAy0F,EAAAz0F,GAAA,GAAA,GAAA,IACAjN,EAAA69B,SAAA0kE,mBAAA,SAAAt1F,GAAAy0F,EAAAz0F,GAAA,GAAA,GAAA,IACAjN,EAAA69B,SAAAyhE,SAAAoC,EACA1hG,EAAA69B,SAAA2kE,SAAA,SAAAv1F,GAAAy0F,EAAAz0F,GAAA,IACAjN,EAAA69B,SAAAijE,YAAAA,EACA9gG,EAAA69B,SAAAzyF,QAAAA,EACA40D,EAAA69B,SAAAtxE,WAAA,SAAA0gD,GAAA7hE,EAAA6hE,GAAA,MCrPA,SAAAivB,GACA,gBAAAv0F,UAAA,gBAAAD,QACAw0F,EAAAnxD,QAAA,wBAAAA,QAAA,qBACA,kBAAA7Q,SAAAA,OAAAC,IACAD,OAAA,gCAAA,uBAAA,oBAAAgiE,GAEAA,EAAAl8B,aACA,SAAAA,GACA,YAEA,SAAA2/F,GAAA1yF,EAAA7kE,EAAA24J,EAAA7+D,EAAAx2F,GACAuhE,EAAA4zF,WAAA5zF,EAAA4zF,WAAAz4J,EAAAsD,GAAA2P,MAAA6mF,EAAA69D,mBAAA,IACAr0J,EAAA+wD,OAAAskG,EAAA7+D,IAMA,QAAAugE,GAAAx1F,EAAAnR,GACA,GAAA5Y,GAAAqxC,OAAAz4B,EACA,OAAA,QAAAtyD,KAAAsyD,GAAAmR,EAAAkd,YAAApvB,KAAA7X,EACAA,EAAA,EANA,GAAAw/G,GACA,4LAQA1iG,GAAA69B,SAAA8kE,WAAA,SAAA11F,GACA,GAAAphE,GAAAohE,EAAAkd,WACAw1E,GAAA1yF,EAAAy1F,EAAA,gBAAA72J,EAAAkvD,KAAA,EAAA,IAAAlvD,EAAAs5C,GAAA,SAAAy9G,GACA,GAAAA,EAAA,CAEA,GAAA/4J,EACA,IAAAA,EAAA,oCAAAsC,KAAAy2J,GACA31F,EAAA7Y,UAAAquG,EAAAx1F,EAAApjE,EAAA,IAAA0qF,OAAA1qF,EAAA,SACA,IAAAA,EAAA,gCAAAsC,KAAAy2J,GAAA,CACA,GAAA7nG,GAAA5oD,KAAAs0B,MAAAwmC,EAAAyjC,YAAAnc,OAAA1qF,EAAA,IAAA,IACA,SAAAL,KAAAK,EAAA,MAAAkxD,EAAAlvD,EAAAkvD,KAAAA,EAAA,GACAkS,EAAA7Y,UAAA2G,EAAA,EAAAlvD,EAAAs5C,SACAt7C,EAAA,4BAAAsC,KAAAy2J,KACA31F,EAAA7Y,UAAAquG,EAAAx1F,EAAApjE,EAAA,IAAAgC,EAAAs5C,QAKA6a,EAAA88B,OAAA,QAAA,SAAA,eAGA,SAAAZ,GCjDA,gBAAAv0F,UAAA,gBAAAD,QACAw0F,EAAAnxD,QAAA,yBACA,kBAAA7Q,SAAAA,OAAAC,IACAD,OAAA,6BAAA,wBAAAgiE,GAEAA,EAAAl8B,aACA,SAAAA,GACA,cAEA,WAKA,QAAA6iG,GAAA34J,EAAAmZ,GASA,QAAA+J,GAAAljB,GACA,MAAA44J,GAAAv6J,YAEAu6J,EAAA12J,MAAAyR,IAAA1L,KAAAC,IAAA,EAAAlI,EAAAwgB,QAAAo4I,EAAA5rI,aAAA,GAAA,UACA4rI,EAAA12J,MAAAqiB,KAAAvkB,EAAAugB,QAAA,EAAA,OAFAu1C,EAAAhxD,IAAApH,SAAA,YAAAwlB,GAVA,GAAA01I,GAAAl7J,SAAAO,cAAA,MAkBA,OAjBA26J,GAAA7kJ,UAAA,2BACA,gBAAAoF,KACAA,EAAAzb,SAAA2G,eAAA8U,IAEAy/I,EAAAx6J,YAAA+a,GACAzb,SAAA+E,KAAArE,YAAAw6J,GAQA9iG,EAAAv0C,GAAA7jB,SAAA,YAAAwlB,GACAA,EAAAljB,GACA,MAAA44J,EAAA12J,MAAAsH,UACAovJ,EAAA12J,MAAAsH,QAAA,GACAovJ,EAEA,QAAAh0E,GAAA1uB,GACAA,EAAA73D,YACA63D,EAAA73D,WAAAC,YAAA43D,GAEA,QAAA2iG,GAAAD,GACAA,EAAAv6J,aAEA,MAAAu6J,EAAA12J,MAAAsH,SACAo7E,EAAAg0E,GACAA,EAAA12J,MAAAsH,QAAA,EACAT,WAAA,WACA67E,EAAAg0E,IACA,MAGA,QAAAE,GAAA94J,EAAAmZ,EAAA09B,EAAA7oC,EAAA+0D,GAEA,QAAApnD,KACAm6C,EAAAhxD,IAAA+xC,EAAA,WAAAl7B,GACAm6C,EAAAhxD,IAAA+xC,EAAA,QAAAl7B,GACAk7B,EAAA9iC,UAAA8iC,EAAA9iC,UAAA7S,QAAA63J,EAAA,IACA77H,IACA27H,EAAA37H,GACAA,EAAA,MAEA6lC,EAAAkyC,aAAAjnG,EAAA4kF,QATA,GAAA11D,GAAAy7H,EAAA34J,EAAAmZ,GAWAigG,EAAAjhF,YAAA,WACA,GAAA+E,EACA,IAAA,GAAA15B,GAAAqzC,GAAArzC,EAAAA,EAAAnF,WAAA,CACA,GAAAmF,GAAA9F,SAAA+E,KACA,MACA,KAAAe,EAAA,CACAmY,GACA,QAGA,IAAAuhB,EACA,MAAAhF,eAAAkhF,IACA,IACAtjD,GAAAv0C,GAAAs1B,EAAA,WAAAl7B,GACAm6C,EAAAv0C,GAAAs1B,EAAA,QAAAl7B,GACA3N,EAAA4kF,QAAAya,IAAA1xF,GACAonD,EAAAiyC,UAAAhnG,EAAA4kF,QAGA,QAAAomE,GAAAj2F,EAAAn+C,GACA/mB,KAAA+mB,QAAAA,EACA/mB,KAAAuuB,QAAA,KACAxH,EAAA8B,MACA7oB,KAAAo7J,YAAA,SAAAj5J,GACAk5J,EAAAn2F,EAAA/iE,IAGAnC,KAAAo7J,YAAA,SAAAj5J,GACAi5J,EAAAl2F,EAAA/iE,IAGAnC,KAAA+0F,OAAA,KAGA,QAAA09D,GAAAvtF,EAAAn+C,GACA,GAAAA,YAAAu0I,UACA,OACAC,aAAAx0I,EAMA,IAJAA,GAAAA,KAAA,IACAA,MACAA,EAAAw0I,eACAx0I,EAAAw0I,aAAAr2F,EAAAy6B,UAAA1nC,EAAAmH,IAAA,EAAA,GAAA,eACAr4C,EAAAw0I,aACA,KAAA,IAAAz7J,OACA,4DACA,OAAAinB,GAGA,QAAAs0I,GAAAn2F,EAAA/iE,GACA,GAAAgO,GAAA+0D,EAAA/0D,MAAAqrJ,UAAA3yI,EAAA1Y,EAAA4W,QAAA8B,KAEA,IADAC,aAAA3Y,EAAAoe,SACApsB,EAAAkmE,WAAA,CAEA,GAAAozF,IAAApzF,WAAAlmE,EAAAkmE,WAAA3lD,QAAAvgB,EAAAugB,QAAAC,QAAAxgB,EAAAwgB,QACAxgB,GAAAs5J,EAEAtrJ,EAAAoe,QAAArjB,WAAA,WAAAkwJ,EAAAl2F,EAAA/iE,IAAA0mB,GAGA,QAAAuyI,GAAAl2F,EAAA/iE,GACA,GAAA62C,GAAA72C,EAAAgW,QAAAhW,EAAAkmE,UACA,IAAArvB,EAAA,CACA,GAAA7oC,GAAA+0D,EAAA/0D,MAAAqrJ,UAAAnrJ,EAAAqrJ,EAAAx2F,EAAA/iE,GACAmZ,EAAAnL,EAAA4W,QAAAw0I,aAAAr2F,EAAA70D,EAAAlO,EACAmZ,KACA09B,EAAA9iC,WAAAglJ,EACA,kBAAA5/I,GACAA,EAAA2/I,EAAA5qJ,EAAAlO,EAAA62C,EAAA7oC,EAAA+0D,GAEA+1F,EAAA94J,EAAAmZ,EAAA09B,EAAA7oC,EAAA+0D,KAKA,QAAAy2F,GAAAz2F,EAAAh7C,EAAAlC,GAOA,GANAA,GAAAA,GAAAiwC,EAAAqiC,OACAriC,EAAAhxD,IAAAi+D,EAAA28B,oBAAA,YACA38B,EAAA/0D,MAAAqrJ,UAAAJ,mBACAl2F,GAAA/0D,MAAAqrJ,WAGAtxI,EAAA,CACA,GAAA/Z,GAAA+0D,EAAA/0D,MAAAqrJ,UAAA,GAAAL,GAAAj2F,EAAAutF,EAAAvtF,EACAh7C,GACA+tC,GAAAv0C,GAAAwhD,EAAA28B,oBAAA,YAAA1xF,EAAAirJ,cASA,QAAAM,GAAAx2F,EAAA/iE,GAGA,IAAA,GAFA62C,GAAA72C,EAAAgW,QAAAhW,EAAAkmE,WAAAhoE,EAAA24C,EAAA/gC,WACA+gC,EAAA1yC,YACA/E,EAAA,EAAAA,EAAAq6J,EAAAj7J,OAAAY,GAAA,EAAA,CACA,GAAA0lB,GAAAi+C,EAAAiU,YACAzyD,KAAAvkB,EAAAugB,QAAAk5I,EAAAr6J,GACAuU,IAAA3T,EAAAwgB,QAAAi5I,EAAAr6J,EAAA,KAEAy6C,EAAAkpB,EAAAuyC,WAAAxwF,EACA,IAAA+0B,GAAAA,EAAA+X,SAAA1zD,EACA,OACA27C,MAAAA,EACA/0B,IAAAA,IA5JA,GAAAi0I,GAAA,oBA8IAU,GAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAoBA3jG,GAAAsiC,aAAA,aAAA,EAAAohE,QAMAxpI,OAAA,+BAAA,uBCpLA,SACA,WAEA,SAAA8lC,EAAAj1D,GACA,YA0HA,SAAA64J,GAAAxrJ,GACA,MAAArN,GAAAgzB,GAAA4U,MAAAhhB,MAAA,aACAvZ,EAAAhQ,KAAA,IAAAgQ,EAAAqkB,OAGA,QAAAonI,GAAA52F,EAAA7kE,EAAA6wH,GACA6qC,EAAA7qC,GAAA7wH,EAGA,QAAAiqC,GAAAj6B,EAAA60D,GACA,GAAA7zD,EAEA,OAAA0qJ,GAAA1rJ,EAAAoJ,MACAsiJ,EAAA1rJ,EAAAoJ,OAEApI,EAAAhB,EAAAoJ,KAAA01B,YAAA,MACA9+B,EAAAoJ,KAAA+a,UAAAnjB,EAAA,GAEAhB,EAAAoJ,KAGA,QAAAuiJ,GAAAn7J,EAAAwP,EAAA60D,GACA,MAAA70D,IAAAA,EAAAoJ,KACAzW,EAAAgzB,GAAAyM,IAAA+7F,EAAA39H,GACA,kBACAmC,EAAAgzB,GAAA4U,MAAAhhB,MAAA,aACAvZ,EAAAoJ,OACApJ,GAAAA,EAAA2iD,KACAwrE,EAAA39H,GAAA,oBAAAwP,EAAA2iD,KAEA,mBAAAnyD,EAIA,QAAA29H,GAAAzqE,GACA,MAAAA,GAAA,GAAAhqD,cAAAgqD,EAAAtxD,MAAA,GA3JA,GAAAs5J,MAEAE,GACA3Z,cAAA,SAAAjyI,EAAA60D,GACA,MAAA70D,GACArN,EAAAgzB,GAAAyM,IAAAo5H,EAAAxrJ,GACA60D,EAAAw/E,UAAAr0I,IAEA,sBAIAoyI,YAAA,SAAApyI,EAAA60D,GACA,MAAA70D,GACArN,EAAAgzB,GAAAyM,IAAAo5H,EAAAxrJ,GACA60D,EAAAw/E,UAAAr0I,IAEA,oBAIAmyI,cAAA,SAAAnyI,EAAA60D,GACA,MAAA70D,GACArN,EAAAgzB,GAAAyM,IAAAo5H,EAAAxrJ,GAAA,mBACAi6B,EAAAj6B,EAAA60D,GAAA,MACAA,EAAAw/E,UAAAr0I,IAEA,wBAIAkyI,cAAA,SAAAlyI,EAAA60D,GACA,MAAA70D,GACArN,EAAAgzB,GAAAyM,IAAAo5H,EAAAxrJ,GAAA,mBACAi6B,EAAAj6B,EAAA60D,GAAA,MACAA,EAAAw/E,UAAAr0I,IAEA,sBAIA2yI,eAAA,iBACAJ,aAAA,oBACAF,eAAA,sBACAS,WAAA,SAAA9yI,EAAA60D,GACA,MAAA82F,GAAA,YAAA3rJ,EAAA60D,IAEAk+E,gBAAA,SAAA/yI,EAAA60D,GACA,MAAA82F,GAAA,iBAAA3rJ,EAAA60D,IAEA28E,kBAAA,0BACAqa,cAAA,iCACAC,iBAAA,oCACAna,gBAAA,iBAEAvoI,KAAA,SAAApJ,EAAA60D,GACA,MAAA70D,IACAyrJ,EAAA52F,EAAA70D,EAAAhQ,KAAAgQ,EAAA6gH,MACAluH,EAAAgzB,GAAAyM,IAAA,SACAz/B,EAAAgzB,GAAA4U,MAAAhhB,MAAA,aACAvZ,EAAA6gH,QAEA,aAIA6yB,gBAAA,SAAA1zI,EAAA60D,GACA,MAAA70D,IACAyrJ,EAAA52F,EAAA70D,EAAAhQ,KAAAgQ,EAAA6gH,MACAluH,EAAAgzB,GAAAyM,IAAA,SACAz/B,EAAAgzB,GAAA4U,MAAAhhB,MAAA,aACAvZ,EAAA6gH,MACAluH,EAAAgzB,GAAAyM,KAAA7Y,MAAA,gBACA,uCAGA,iDAIAxZ,MAAA,SAAAC,EAAA60D,GACA,MAAA70D,IACAA,EAAA+rJ,SACAp5J,EAAAgzB,GAAAyM,IAAA,UAAAz/B,EAAAgzB,GAAAo0H,OAAA/5I,EAAA+rJ,UAAA,aAGA,SAGAtb,UAAA,+BACA5a,MAAA,yCACA/oF,MAAA,8BACA4W,OAAA,uDACA+rF,MAAA,cACAiB,MAAA,wCACAv7G,IAAA,qBACA27G,UAAA,sCACAkb,oBAAA,2BAEAnY,gBAAA,iBAEA5jJ,KAAA,KACA0gJ,QAAA,KACAH,SAAA,KACA3hC,IAAA,KACAgiC,IAAA,KACA76H,MAAA,KACA25H,OAAA,KACA/D,KAAA,KACAb,QAAA,KACAkhB,QAAA,KACA1b,KAAA,KACA2b,SAAA,KACA/tB,IAAA,KACA2R,UAAA,KACAC,WAAA,KACAI,UAAA,KACAC,WAAA,KAyCAxoF,GAAAihD,eAAA,YAAA,SAAA,SAAAh0C,EAAA70D,EAAA2oC,GACA,GAAA3oC,EAAA,CACA,GAEAmsJ,GAFAxgH,EAAA3rC,EAAA2rC,MACA9Z,EAAA+5H,EAAAjgH,EAAAn7C,KAGA,IAAAq1B,SAAAgM,EAWA,OAAAs6H,EAAAt3F,EAAAs/E,iBAAAxoG,IACAwgH,EAAA7pG,SAAA,QAAA6pG,EAAA5mH,KACA5yC,EAAAgzB,GAAAyM,IAAA+5H,EAAA7pG,QAAAuS,EAAAw/E,UAAA8X,IACAA,EAAA7pG,QACA3vD,EAAAgzB,GAAAyM,IAAA+5H,EAAA7pG,SAEA3vD,EAAAgzB,GAAAyM,IAAAuZ,EAAAn7C,MAEAmC,EAAAgzB,GAAAyM,IAAAuZ,EAAAn7C,KAlBA,IAAA,kBAAA,GAAA,CACA,GAAAD,GAAAshC,EAAAgjC,EAAAs/E,iBAAAxoG,GAAAkpB,EAEA,OAAA,gBAAA,GACAliE,EAAAgzB,GAAAyM,IAAA7hC,GAEAA,EACA,GAAA,gBAAA,GACA,MAAAoC,GAAAgzB,GAAAyM,IAAAP,GAcA,MAAA,UAKA,SAAAiyD,GCtMA,gBAAAv0F,UAAA,gBAAAD,QACAw0F,EAAAnxD,QAAA,yBACA,kBAAA7Q,SAAAA,OAAAC,IACAD,OAAA,mCAAA,wBAAAgiE,GAEAA,EAAAl8B,aACA,SAAAA,GACA,GAAAwkG,GAAA,IAEAxkG,GAAAwhF,kBAAA,SAAAppI,GACA4nD,EAAAv0C,GAAArT,EAAA,SAAA,SAAAmoI,EAAAkb,GACAA,EAAAA,EAAAlzJ,UACA,IAAAk8J,GAAA,IAIA,IAHAlkB,EAAA5iG,OACA8mH,EAAAlkB,EAAA5iG,KAAA4iG;AAEAkkB,EAAA,CACA,GAAArwH,GAAAqnH,EAAAjtI,uBACA,OAAAg2I,IACAA,EAAA58J,SAAAO,cAAA,OACAq8J,EAAAvmJ,UAAA,+BACArW,SAAA+E,KAAArE,YAAAk8J,IAEAA,EAAAx2J,UAAA,GACAw2J,EAAAp4J,MAAAyR,IAAA49I,EAAArvJ,MAAAyR,IACA2mJ,EAAAp4J,MAAAqiB,KAAA2lB,EAAAxP,MAAA,KACA,gBAAA6/H,GACAD,EAAAx2J,UAAAy2J,EAEAD,EAAAl8J,YAAAm8J,GAEAD,EAAAp4J,MAAAS,QAAA,YAEA,OAAA23J,IACAA,EAAAx2J,UAAA,GACAw2J,EAAAp4J,MAAAS,QAAA,UAKAmzD,EAAAv0C,GAAArT,EAAA,QAAA,WACA,MAAAosJ,GACAA,EAAAj8J,WAAAC,YAAAg8J,GAEAA,EAAA,QAKAxkG,EAAA0kG,gBAAA,SAAApjB,GACA,MAAA,UAAAr0E,EAAA03F,EAAA71I,GACAA,IACAA,EAAA61I,EACA,IAAAvsJ,GAAAkpI,EAAAr0E,EAAAn+C,EAEA,OADAkxC,GAAAwhF,kBAAAppI,GACAA,MCrDA,SAAA8jF,GACA,gBAAAv0F,UAAA,gBAAAD,QACAw0F,EAAAnxD,QAAA,sBACA,kBAAA7Q,SAAAA,OAAAC,IACAD,OAAA,mBAAA,qBAAAgiE,GAEAA,EAAAl8B,aACA,SAAAA,GACA,YAGA,SAAA4kG,GAAAp9J,EAAAC,GAAA,MAAAD,GAAAuzD,MAAAtzD,EAAAszD,MAAAvzD,EAAA29C,IAAA19C,EAAA09C,GAKA,QAAA0/G,GAAAlqI,GACAmqI,EAAAx2J,KAAAqsB,GACAmqI,EAAAp8J,OAAA,IAAAo8J,EAAArtJ,QAEA,QAAAstJ,GAAApqI,GACA,MAAAmqI,GAAAp8J,YACAo8J,EAAAA,EAAAp8J,OAAA,IAAAiyB,GADAkqI,EAAAlqI,GAGA,QAAAqqI,GAAAt3J,GAAA,MAAAo3J,GAAAA,EAAAp8J,QAAAgF,EAAAyE,KAAAkvD,IAAA3zD,EAAA,GAAA,KAAA,GACA,QAAAu3J,KAAA,MAAAH,GAAAp8J,OAAA,GAAAo8J,EAAAzoJ,MAAA2oJ,IAIA,QAAA/nE,GAAAhwB,EAAA9wC,EAAAuF,EAAAwjI,EAAA98J,GACA,MAAAA,IAAAA,EAAA6kE,EAAA85B,SAAA5qE,EAAAuF,IAEAwjI,GAAAC,GAAAA,EAAAl4F,IAAAA,GAAA23F,EAAAzoI,EAAAgpI,EAAAn2I,MAAAi+C,EAAA0kC,QAAAwzD,EAAAvzD,KACAmzD,EAAA38J,GAEAy8J,EAAAz8J,GACA6kE,EAAAyqB,aAAA,GAAAv7D,EAAAuF,EAAA,WAEAyjI,EAAAD,GAAAj4F,GAAAA,EAAAj+C,IAAAmN,EAAAy1E,IAAA3kC,EAAAwkC,oBACA,KAKA,QAAA2zD,GAAAn4F,EAAAj+C,EAAAzT,GACA,MAAA0xD,GAAAm6B,SAAAp4E,EAAAzT,EAAA,QAAA,GAGA,QAAA8pJ,GAAAp4F,EAAAj+C,EAAAzT,GACA,MAAA0xD,GAAAm6B,SAAAp4E,EAAAzT,EAAA,QAAA,GAGA,QAAA+pJ,GAAAr4F,EAAAj+C,EAAAzT,GACA,MAAA0xD,GAAA26B,SAAA54E,EAAAzT,EAAA,OAAA0xD,EAAA52B,IAAAysC,IAAAy9B,YAGA,QAAAglD,GAAAt4F,EAAAj+C,EAAAzT,GACA,MAAA0xD,GAAA26B,SAAA54E,EAAAzT,EAAA,OAAA0xD,EAAA52B,IAAAysC,IAAAy9B,YAGA,QAAAilD,GAAAv4F,EAAAj+C,EAAAzT,GAIA,IAHA,GAAAmrD,GAAA13C,EAAA+rC,KAAAA,EAAAkS,EAAAhH,QAAAS,GACA++F,EAAA,KAAAj8J,KAAA+R,EAAA,EAAAw/C,EAAAvwD,MAAA,EAAAwkB,EAAAm2B,IAAA4V,EAAAvwD,MAAAwkB,EAAAm2B,KACAugH,EAAAz4F,EAAA0jB,YAAAnvB,EAAAyL,EAAAR,aACA,CAEA,GADA/F,GAAAnrD,EACAmrD,EAAAg/F,GAAAh/F,EAAAlF,EACA,MAAAyL,GAAAtF,QAAAR,EAAAT,EAAAnrD,EAAAA,EAAA,EAAA,EAAA,MACAw/C,GAAAkS,EAAAhH,QAAAS,EACA,IAAAi/F,GAAA,KAAAn8J,KAAAuxD,EACA,IAAA4qG,EAAAF,GAAA,MACA,IAAAA,EAAA,MAAAt+F,GAAAT,EAAA,IAIA,QAAAk/F,GAAA34F,EAAAj+C,EAAAzT,GAGA,IAFA,GAAAw/C,GAAA/rC,EAAA+rC,KAAA5V,EAAAn2B,EAAAm2B,GACA/8C,EAAA6kE,EAAAhH,QAAAj3C,EAAA+rC,MAAA8qG,GAAA,IACA,CACA,GAAArqJ,GAAApT,EAAAo0B,OAAA2oB,GAAA5pC,EAAA,GAAA,EAAA,GACA,IAAAC,EAAA,CAQA,GAAAqqJ,GAAA,QAAAr8J,KAAAgS,GAAA,MAAA2rD,GAAApM,EAAA5V,GAAA5pC,EAAA,EAAA,EAAA,GACAsqJ,KAAAA,EAAA,KAAAr8J,KAAAgS,IACA2pC,GAAA5pC,MAVA,CACA,GAAAw/C,IAAAx/C,EAAA,EAAA0xD,EAAA0jB,YAAA1jB,EAAAR,YAAA,MAAAtF,GAAApM,EAAA5V,EAEA,IADA/8C,EAAA6kE,EAAAhH,QAAAlL,EAAAx/C,IACA,KAAA/R,KAAApB,GAAA,MAAA++D,GAAApM,EAAA5V,EACA4V,IAAAx/C,EACA4pC,EAAA5pC,EAAA,EAAAnT,EAAAM,OAAA,IASA,QAAAo9J,GAAA74F,EAAAj+C,EAAAzT,GACA,GAAAub,EACA,IAAAm2C,EAAA2pF,sBAAA9/H,EAAAm2C,EAAA2pF,oBAAA5nI,GAAA,KACA8H,EAAAjtB,QAAAitB,EAAAkgI,QAAA,GAAA,IAAAz7I,EACA,MAAAA,GAAA,EAAA4rD,EAAArwC,EAAA4K,GAAAq5B,KAAAjkC,EAAA4K,GAAAyjB,GAAA,GAAAruB,EAAA4K,EAEA,KAAA,GAAAvoB,IAAA,GAAAA,GAAA,EAAA,CACA,GAAA4qC,GAAAkpB,EAAAuyC,WAAAxwF,GACA/C,EAAAk7C,EAAAn4C,EAAA+rC,KAAAx/C,EAAA,EAAAwoC,EAAAz3C,MAAAy3C,EAAAx3C,IACA,MAAA4M,GAAAoC,EAAA,GAAAwoC,EAAAx3C,KAAAyiB,EAAAm2B,KAAA,KAAA37C,KAAAu6C,EAAA+X,QAKA,MAAA7vC,EAJA,IAAA85I,GAAA94F,EAAAm6B,SAAAn7E,EAAA1Q,EAAA,OACA,IAAAqpJ,EAAA34I,EAAA85I,GAAA,MAAA/2I,EACAA,GAAA+2I,GASA,QAAAC,GAAA/4F,EAAA8G,GACA,GAAAkyF,GAAAh5F,EAAA/0D,MAAAguJ,WACA,OAAAD,IACAE,EAAAl5F,GACA,KAAAg5F,GAAA,EAAA1xE,OAAA0xE,IAFAlyF,EAAA,KAAA,EAKA,QAAAqyF,GAAAnqE,GACA,GAAAvwF,GAAA,gBAAAuwF,GAAA,SAAAhvB,GAAAA,EAAAsxC,YAAAtiB,IAAAA,CACA,OAAA,UAAAhvB,GACA,GAAA5rB,GAAA2kH,EAAA/4F,EACAvhE,GAAAuhE,EACA,KAAA,GAAA3jE,GAAA,EAAAA,EAAA+3C,IAAA/3C,EAAAoC,EAAAuhE,IAIA,QAAAo5F,GAAAp5F,EAAAj+C,EAAAs3I,EAAA/qJ,GACA,GAAA8lC,GAAA2kH,EAAA/4F,EACA5rB,GAAA,IAAA9lC,GAAAA,EAAA8lC,GAAAA,EACA,KAAA,GAAA/3C,GAAA,EAAAA,EAAA+3C,IAAA/3C,EAAA,CACA,GAAAy8J,GAAAO,EAAAr5F,EAAAj+C,EAAAzT,EACA,IAAAqpJ,EAAAmB,EAAA/2I,GAAA,KACAA,GAAA+2I,EAEA,MAAA/2I,GAGA,QAAAsyE,GAAAglE,EAAA/qJ,GACA,GAAA7P,GAAA,SAAAuhE,GACAA,EAAAynB,gBAAA2xE,EAAAp5F,EAAAA,EAAAkd,YAAAm8E,EAAA/qJ,IAGA,OADA7P,GAAA+yF,QAAA,EACA/yF,EAGA,QAAA66J,GAAAt5F,EAAAq5F,EAAA/qJ,GAGA,IAFA,GAAAsuC,GAAAkpF,EAAA9lE,EAAA0tB,iBACArxF,EAAAypI,EAAArqI,OACAY,KACAugD,EAAAkpF,EAAAzpI,GAAAjB,KACA40F,EAAAhwB,EAAApjB,EAAAw8G,EAAAp5F,EAAApjB,EAAAy8G,EAAA/qJ,IAAA,GAIA,QAAAirJ,GAAAv5F,GACA,GAAAA,EAAAomB,oBAAA,CAGA,IAFA,GAAApjC,GAAA8iF,EAAA9lE,EAAA0tB,iBACArxF,EAAAypI,EAAArqI,OACAY,KACA2mD,EAAA8iF,EAAAzpI,GACA2zF,EAAAhwB,EAAAhd,EAAA+N,OAAA/N,EAAA5nD,KAEA,QAAA,GAIA,QAAAo+J,GAAAx5F,EAAAy5F,GACA,MAAAz5F,GAAA/0D,MAAAguJ,iBACA,KAAAQ,IAAAz5F,EAAA/0D,MAAAguJ,aAAAQ,KAIAz5F,EAAA/0D,MAAAguJ,YAAAQ,EACAz5F,EAAAxhD,GAAA,aAAAk7I,OACA15F,GAAAxhD,GAAA,YAAAm7I,IAKA,QAAAD,GAAA15F,EAAAjvC,GACAivC,EAAA/0D,MAAA2uJ,gBAAAC,EAAAruJ,eAAAulB,IACAmoI,EAAAl5F,GAGA,QAAAk5F,GAAAl5F,GACAA,EAAA/0D,MAAAguJ,YAAA,KACAj5F,EAAAj+D,IAAA,aAAA23J,GACA15F,EAAAj+D,IAAA,YAAA43J,GAGA,QAAAA,GAAA35F,EAAA99D,GACA,GAAA4hG,GAAAi1D,EAAA/4F,EACA,IAAA8jC,EAAA,GAAA,UAAA5hG,EAAAkpC,OAAA,CAEA,IAAA,GADA3sB,GAAAvc,EAAA/G,KAAAuO,KAAA,MAAAg6D,EAAA,GACArnE,EAAA,EAAAA,EAAAynG,IAAAznG,EAAAqnE,GAAAjlD,CACAuhD,GAAA2tB,iBAAAjqB,IAIA,QAAAo2F,GAAA95F,GACAA,EAAA/0D,MAAA2uJ,gBAAA,EACA55F,EAAAiyC,UAAA8nD,GACA/5F,EAAAxhD,GAAA,aAAAw7I,GACAh6F,EAAAxhD,GAAA,YAAAw7I,GAGA,QAAAA,GAAAh6F,EAAAjvC,IACA,gBAAAA,KAAA,OAAAx0B,KAAAw0B,IAAA,UAAAA,KACAivC,EAAAkyC,aAAA6nD,GACA/5F,EAAA/0D,MAAA2uJ,gBAAA,EACA55F,EAAAj+D,IAAA,aAAAi4J,GACAh6F,EAAAj+D,IAAA,YAAAi4J,IAKA,QAAAC,GAAAj6F,GACAA,EAAA7Y,UAAA6Y,EAAAkd,aACAld,EAAAokC,cAAApkC,EAAAqkC,gBACArkC,EAAAxhD,GAAA,SAAA,WAAAwhD,EAAAokC,cAAA,KAGA,QAAA81D,GAAAl6F,GACAA,EAAAokC,cAAA,GACApkC,EAAA7Y,UAAA6Y,EAAAkd,aAGA,QAAAi9E,GAAAn6F,EAAAj7B,EAAAtmC,GACAuhE,EAAA4zF,WACA5zF,EAAA4zF,WAAA7uH,EAAA,6CAAAtmC,GAAA26B,QAAA,IAEA36B,EAAA+wD,OAAAzqB,EAAA,KAGA,QAAAq1H,GAAAp6F,EAAAgM,GACA,GAAA3sE,GAAA2gE,EAAAkd,YAAA59E,EAAA0gE,EAAAm6B,SAAA96F,EAAA,EAAA,OACA2gE,GAAAyqB,aAAAze,EAAAhM,EAAA85B,SAAAz6F,EAAAC,IAAAD,EAAAC,GACA0gE,EAAA7Y,UAAA7nD,GAGA,QAAA+6J,GAAAr6F,GAGA,IAFA,GAAAj+C,GAAAi+C,EAAAkd,YAAApvB,EAAA/rC,EAAA+rC,KAAA5V,EAAAn2B,EAAAm2B,GACArgC,KACAi2C,GAAAkS,EAAA0jB,aAAA,CAEA,IAAA,GADAvoF,GAAA6kE,EAAAhH,QAAAlL,GACAzxD,EAAA,MAAA67C,EAAA/8C,EAAAM,OAAAy8C,EAAA77C,EAAA,GAAA,CACA,GAAA67C,GAAA/8C,EAAAo0B,SAAAlzB,EACA,IAAA,KAAA67C,EACArgC,EAAAxW,KAAA,SACA,IAAA,KAAA62C,EACArgC,EAAAxW,KAAA,SACA,IAAA,KAAA62C,EACArgC,EAAAxW,KAAA,SACA,IAAA,WAAA9E,KAAA27C,MAAArgC,EAAApc,QAAAoc,EAAAzI,OAAA8oC,GACA,MAAA8nB,GAAAynB,gBAAAvtB,EAAApM,EAAAzxD,MAEAyxD,EAAA5V,EAAA,MAIA,QAAAoiH,GAAAt6F,GACAA,EAAAsxC,YAAA,eACA4oD,EAAAl6F,GA0IA,QAAAu6F,GAAAv/J,GACA++J,EAAA/+J,GAAA,SAAAglE,GAAAw5F,EAAAx5F,EAAAhlE,IACA60F,EAAA,QAAA70F,GAAA,SAAAglE,GAAAw5F,EAAAx5F,EAAAhlE,IACA6+J,EAAA,QAAA7+J,IAAA,EA9YA,GAAAk/D,GAAAnH,EAAAmH,IAKA29F,KAYAK,EAAA,KA2JA2B,GAAAW,SAAA,EAAAC,UAAA,EAAAC,UAAA,EAAA3uD,UAAA,EAwFAh5C,GAAA4nG,OAAA3qE,KAAAA,EAAAupE,WAAAA,EAAAJ,SAAAA,EA4IA,KAAA,GAxIAtpE,GAAA98B,EAAA88B,OAAA8qE,MAAA5nG,EAAAm8B,iBACA0rE,SAAA,SAAA56F,GAAAgwB,EAAAhwB,EAAAA,EAAAkd,UAAA,SAAAld,EAAAkd,UAAA,SACA4vB,SAAAqsD,EAAA,SAAAn5F,GACA,GAAA3gE,GAAA2gE,EAAAkd,YAAA59E,EAAA0gE,EAAAtF,QAAAR,EAAA76D,EAAAyuD,OACA3yD,EAAA6kE,EAAA85B,SAAAz6F,EAAAC,EACA,MAAA/C,KAAApB,KACAA,GAAA,KACAmE,EAAA46D,EAAA76D,EAAAyuD,KAAA,EAAA,IAEAkiC,EAAAhwB,EAAA3gE,EAAAC,GAAA,EAAAnE,KAEA0/J,QAAA,SAAA76F,GACA43F,EAAA53F,EAAA6tB,gBACAqsE,EAAAl6F,IAEA4qC,SAAA,SAAA5qC,GACA,GAAA3gE,GAAA2gE,EAAAkd,WACAld,GAAAyqB,aAAAstE,EAAAgB,EAAA/4F,IAAA3gE,EAAAA,EAAA,SACA2gE,EAAA0nB,aAAAroF,EAAA2gE,EAAAkd,cAEA49E,QAAA,SAAA96F,GAAAA,EAAA2tB,iBAAAqqE,IAAA,SAAA,UAEAplB,aAAAqnB,EAAAc,eAAAd,EAEAzuD,SAAAnX,EAAA8jE,EAAA,GAAAhsD,SAAA9X,EAAA8jE,GAAA,GACA3uD,MAAAnV,EAAA8jE,EAAA,GAAA5uD,KAAAlV,EAAA8jE,GAAA,GACA1tD,SAAA,SAAAzqC,GAAAs5F,EAAAt5F,EAAAm4F,EAAA,IACApuD,OAAA,SAAA/pC,GAAAu5F,EAAAv5F,IAAAs5F,EAAAt5F,EAAAm4F,EAAA,IACAxrD,SAAA,SAAA3sC,GAAAs5F,EAAAt5F,EAAAm4F,GAAA,IACAnuD,UAAA,SAAAhqC,GAAAu5F,EAAAv5F,IAAAs5F,EAAAt5F,EAAAm4F,GAAA,IAEA7rD,QAAAjY,EAAA+jE,EAAA,GAAA7rD,QAAAlY,EAAA+jE,GAAA,GACAxrD,QAAA,SAAA5sC,GAAAs5F,EAAAt5F,EAAAo4F,EAAA,IACAvrD,gBAAA,SAAA7sC,GAAAs5F,EAAAt5F,EAAAo4F,GAAA,IAEA/rD,SAAAhY,EAAAgkE,EAAA,GAAAjsD,SAAA/X,EAAAgkE,GAAA,GACA3uD,KAAArV,EAAAgkE,EAAA,GAAA5uD,GAAApV,EAAAgkE,GAAA,GACA7tD,SAAA,cAAAgC,SAAA,YACA7C,IAAA,YAAAC,KAAA,cAEAoxD,QAAA3mE,EAAAikE,GAAA,GAAA7rD,SAAApY,EAAAikE,EAAA,GACAzuD,OAAAxV,EAAAikE,GAAA,GAAAxuD,SAAAzV,EAAAikE,EAAA,GAEAvtD,UAAA1W,EAAAkkE,GAAA,GAAAvtD,YAAA3W,EAAAkkE,EAAA,GAEA0C,QAAA5mE,EAAAskE,GAAA,GAAAuC,QAAA7mE,EAAAskE,EAAA,GACAwC,QAAA,SAAAn7F,GAAAs5F,EAAAt5F,EAAA24F,EAAA,IAEAyC,aAAA,SAAAp7F,GAAAs5F,EAAAt5F,EAAA64F,EAAA,IACAhrD,qBAAA,SAAA7tC,GAAAs5F,EAAAt5F,EAAA64F,GAAA,IACAwC,aAAAhnE,EAAAwkE,EAAA,GAAAyC,aAAAjnE,EAAAwkE,GAAA,GAEA0C,mBAAA,SAAAv7F,GACA,GAAApjB,GAAAojB,EAAAkd,WACAld,GAAA0nB,aAAA0xE,EAAAp5F,EAAApjB,EAAAi8G,EAAA,GAAAj8G,IAEA4+G,aAAA,SAAAx7F,GACA,GAAAy7F,GAAA5C,EAAA74F,EAAAA,EAAAkd,aAAA,GAAA9F,EAAAyhF,EAAA74F,EAAAy7F,EAAA,GACAC,EAAA7C,EAAA74F,EAAAoX,EAAA,GAAAC,EAAAwhF,EAAA74F,EAAA07F,GAAA,EACA17F,GAAAyqB,aAAAzqB,EAAA85B,SAAAziB,EAAAqkF,GAAA17F,EAAA85B,SAAA1iB,EAAAC,GACArX,EAAA85B,SAAA2hE,EAAArkF,GAAAqkF,EAAAC,IAEAC,aAAAxC,EAAAkB,GAEAuB,YAAA,SAAA57F,GAEA,IADA,GAAAj+C,GAAAi+C,EAAAkd,YAAAhuD,EAAAnN,EAAAm2B,GAAAzjB,EAAA1S,EAAAm2B,GAAA/8C,EAAA6kE,EAAAhH,QAAAj3C,EAAA+rC,MACA5+B,GAAA,KAAA3yB,KAAApB,EAAAo0B,OAAAL,EAAA,OAAAA,CACA,MAAAuF,EAAAt5B,EAAAM,QAAA,KAAAc,KAAApB,EAAAo0B,OAAAkF,OAAAA,CACAurC,GAAAyqB,aAAA,IAAAvwB,EAAAn4C,EAAA+rC,KAAA5+B,GAAAgrC,EAAAn4C,EAAA+rC,KAAAr5B,KAEAu4E,SAAAmsD,EAAA,SAAAn5F,GAAAA,EAAA2tB,iBAAA,KAAA,WACAof,SAAAosD,EAAA,SAAAn5F,GACAA,EAAAsxC,YAAA,oBAGAuqD,QAAA1C,EAAA,SAAAn5F,GACAo6F,EAAAp6F,EAAA,SAAAxkE,GACA,GAAAsgK,GAAAtgK,EAAA48C,OAAA,KACA,OAAA0jH,KAAA,EAAAtgK,EACAA,EAAA+B,MAAA,EAAAu+J,GAAAtgK,EAAA+zB,OAAAusI,GAAAj3J,cAAArJ,EAAA+B,MAAAu+J,EAAA,GAAA//J,kBAGAkwG,QAAAktD,EAAA,SAAAn5F,GACAo6F,EAAAp6F,EAAA,SAAAxkE,GAAA,MAAAA,GAAAqJ,kBAEAk3J,QAAA5C,EAAA,SAAAn5F,GACAo6F,EAAAp6F,EAAA,SAAAxkE,GAAA,MAAAA,GAAAO,kBAGAigK,QAAA,gBAEAC,SAAA9C,EAAA,QAAA+C,eAAA/C,EAAA,QACAzuD,SAAAyuD,EAAA,QAAA/rD,QAAA+rD,EAAA,QACAgD,cAAA,aAAAC,cAAA,WACA7wD,SAAA,WAAA8wD,SAAA,WAAA5wD,SAAA6uD,EAAAgC,cAAA,UACAC,QAAA,eACAnyD,MAAA,mBACAoyD,SAAArD,EAAA,SAAAn5F,GAAAA,EAAA2tB,iBAAA,KAAA,SACAuc,IAAA,aAEAuyD,UAAA,SAAAz8F,GACA,GAAA5rB,GAAA2kH,EAAA/4F,GAAA,EACA,OAAA,OAAA5rB,GAAAA,EAAA,EAAA4rB,EAAA7Y,UAAA/S,EAAA,OAEA+lH,GAAAn6F,EAAA,YAAA,SAAAtyC,GACA,GAAAuoB,EACAvoB,KAAA/gB,MAAAspC,EAAAqxC,OAAA55D,KAAAuoB,IAAA,EAAAA,IAAAA,EAAA,GACA+pB,EAAA7Y,UAAAlR,EAAA,MAIAymH,aAAA,SAAA18F,GACAA,EAAA+wC,gBAAAgoD,EAAA/4F,GAAA,IAAAA,EAAAqJ,UAAA,gBAEAszF,gBAAA,SAAA38F,GACAA,EAAA0nB,aAAA1nB,EAAAkd,UAAA,QAAAld,EAAAkd,UAAA,YAEA0/E,gBAAA,OACAC,gBAAA,OACAC,WAAA,UACAC,WAAA,OACAC,WAAA7D,EAAA,QACA8D,WAAA,QACAC,gBAAA,SAAAl9F,GAAAgwB,EAAAhwB,EAAAA,EAAAkd,YAAAy7E,EAAA34F,EAAAA,EAAAkd,YAAA,IAAA,IACAigF,WAAA,YAEAC,aAAAjE,EAAA,aACAptD,SAAA+tD,IAGAC,GAAAtuD,SAAAytD,GAMA78J,EAAA,EAAAA,EAAA,KAAAA,EAAAk+J,EAAAlqJ,OAAAhU,GACAk+J,GAAA,OCjXAttI,OAAA,UAAA,oBACA,SACA,cACA,OACA,sCACA,QACA,SACA,SAEA,UAEA,wBACA,6BACA,8BACA,+BAEA,4BAEA,8BACA,mCACA,2BACA,0BACA,6BACA,+BACA,2BACA,yBACA,+BACA,+BACA,yBAEA,4BACA,8BAEA,+BACA,kCAEA,SAAA,UAEA,mBAEA,SAAA8lC,EAAAjlC,EAAAS,EAAAwN,EAAAshI,EACAtuI,EAAA+/B,EAAAsD,GAk9CA,QAAAkrG,GAAAn+J,EAAAi1C,GACA,GAAAopB,KAEAppB,GAAAA,GAAA,GAEAopB,EAAAn8D,KAAA,YACA,KAAA,GAAAk8J,KAAAp+J,GACA,GAAAA,EAAAqM,eAAA+xJ,GAAA,CACA,GAAAt5H,GAAA9kC,EAAAo+J,EAEA//F,GAAAn8D,KAAA+yC,EAAAmpH,EAAA,IAEA,KAAA,GAAAhjK,KAAA0pC,GACAA,EAAAz4B,eAAAjR,IACAijE,EAAAn8D,KAAA9G,EAAA,IAAA0pC,EAAA1pC,GAAA,IAIAijE,GAAAn8D,KAAA,OAGAm8D,EAAAn8D,KAAA,cAEAvD,EAAA,QAAA8gB,OAAA4+C,EAAA9zD,KAAA,MAv+CA,SAAA5L,GACA,GA2CA0/J,GA3CAhhI,EAAA,eAEAihI,GACArrG,QACA7E,KAAA,SACA5vB,KAAA,SACAwG,YAAA,0CACA8pC,aAAA,EACAy/D,aAAA,EACAn8E,MAAA,EACAwjC,MAAA,SACAq1D,eAAA,EACAkM,WAAA,EACAoH,YAAA,EACAxsE,WACA0hD,aAAA,eACA2pB,QAAA,gBAEA/O,aACAtxG,KAAAmhH,EAAAhpB,SACAyc,gBAAA,IAIAnnB,UACAp8E,KAAA,WACAppB,YAAA,oCACAm9B,cAAA,EACA/P,MAAA,IAIAosG,GACAtlH,OACAkV,KAAA,SACA5vB,KAAA,QACAwG,YAAA,2BACA8pC,aAAA,EACA3M,cAAA,EACA/P,MAAA,IAOA90B,GAyBAC,MAAA,SAAA/zB,GAEA,MAAA7N,MAAA6B,KAAA,WA0CA,QAAAihK,GAAAzuI,GACA,GAAA0uI,GAAA1yJ,EAAA2yJ,WACAzkF,EAAAlqD,EAAA3R,QAAAqgJ,EAAArgJ,QACA+7D,EAAApqD,EAAA1R,QAAAogJ,EAAApgJ,OACAvY,MAAA64J,KAAA1kF,EAAAA,EAAAE,EAAAA,GAAA,GACAykF,IAEA,QAAAA,KACA71J,EAAApG,IAAA,YAAA67J,EACA,IAAAC,GAAA1yJ,EAAA2yJ,UACAD,GAAAx0I,UACAzF,aAAAi6I,EAAAx0I,SACAw0I,EAAA5qJ,OAAA+d,OACA6sI,EAAAx0I,QAAA2H,QAwBA,QAAA25G,GAAAhzH,GACA,GAAAvJ,GAAAtQ,EAAAuQ,GAAAlD,KAAAwM,EACAvJ,KACAm9B,EAAA5zB,GAAAvJ,GAjFA,GAGAC,GAHAlG,EAAArK,EAAAhD,MACAywC,KACApgC,IAGAxC,GAAAA,MACAA,EAAA4kD,KAAA5kD,EAAA4kD,MAAA,QAEA,IAAA1rC,GAAA/jB,EAAAgF,UAAA26J,EAAA90J,EAAA4kD,MACA5kD,GAAAg1B,MAAAggI,EAAAh1J,EAAAg1B,QACA9b,EAAA/jB,EAAAgF,OAAA+e,EAAA87I,EAAAh1J,EAAAg1B,QACA9b,EAAA/jB,EAAAgF,OAAA+e,EAAAlZ,GAEA4lB,EAAAO,OAAA,sBACAjN,EAAAguE,OAAA,SAEA,UAAAhuE,EAAA0rC,OACApiD,EAAAwyB,KAAA9b,EAAA8b,KACA9b,EAAA8rH,YACAxiI,EAAAwiI,UAAA9rH,EAAA8rH,WAEA7/G,EAAA2C,KAAAC,UAAAutI,eACAp8I,EAAAq3H,uBACA/xH,IAAA2G,EAAA2C,KAAAC,UAAAutI,aACAtgI,KAAA9b,EAAA8b,KACAlqB,QAAA8a,EAAAO,OAAA,0BAEAjN,EAAAgsH,WACAhsH,EAAAq3H,sBAAArL,SAAAhsH,EAAAgsH,UACAhsH,EAAAqvE,UAAA,UAAA,oBAGA,UAAArvE,EAAA8b,OACA9b,EAAAq8I,iBAAA,QACAr8I,EAAA40C,SAAA,uBAMAtrD,EAAA2yJ,cAkBA31J,EAAAqW,GAAA,YAAA,mBAAA,SAAA2Q,GACA,GAAA0uI,GAAA1yJ,EAAA2yJ,UAEAD,GAAArgJ,QAAA2R,EAAA3R,QACAqgJ,EAAApgJ,QAAA0R,EAAA1R,QACAtV,EAAAqW,GAAA,YAAAo/I,GACAzyJ,EAAA2yJ,WAAAz0I,QAAArjB,WAAA,WACAg4J,IACA71J,EAAA6nB,aAAA,kBACA,OAEA7nB,EAAAqW,GAAA,UAAA,SAAA2Q,GACA6uI,QAOA3vJ,EAAAlG,EAAAoN,SAAA,YAAA,KAQAo1H,EAAA,QACAA,EAAA,OACAA,EAAA,SACAA,EAAA,QACAA,EAAA,WACAA,EAAA,SAEAx/H,EAAA60D,GAAAjN,EAAAqpC,aAAA/tF,EAAAwT,KAEAA,EAAAzT,QACAyT,EAAAzT,MAAAjG,EAAAhN,QACAgQ,EAAA60D,GAAAjN,EAAA5qD,EAAA,GAAA0Z,IAGA1Z,EAAAgD,KAAAqxB,EAAArxB,GACAhD,EAAA6nB,aAAA,WAAAnO,EAAA0rC,MAEAplD,EAAAwc,SAAA,wBACAxc,EAAAwc,SAAA,iBACAxc,EAAAqW,GAAA,aAAA,SAAA2Q,EAAAqgH,GACArnI,EAAA6nB,aAAA,aAAAw/G,KAEArnI,EAAAqW,GAAA,QAAA,WACA,SAAArT,EAAAwyB,MACAx1B,EAAA6nB,aAAA,WAEA7nB,EAAAqW,GAAA,gBAAA,SAAA2Q,GACAhnB,EAAA6nB,aAAA,mBAEA7nB,EAAAqW,GAAA,eAAA,SAAA2Q,EAAA2wH,GACA33I,EAAA6nB,aAAA,cAAA8vH,KAEA30I,EAAA60D,GAAAxhD,GAAA,OAAA,SAAA2Q,GACAhnB,EAAA6nB,aAAA,cAAA,aAGAnO,EAAA0vC,OACAhmB,EAAA4lB,SAAAtvC,EAAAsvC,UAAA,UACAhpD,EAAA6nB,aAAA,eAAAub,IAGA,UAAA1pB,EAAA0rC,MAAA,UAAApiD,EAAAwyB,OACAx1B,EAAAqW,GAAA,eAAA,SAAA2Q,GACAtN,EAAA6rH,aACAvlI,EAAA6nB,aAAA,eACA7kB,EAAA60D,GAAArlC,YAGAxyB,EAAAqW,GAAA,eAAA,SAAA2Q,EAAAjkB,GACA/C,EAAA6nB,aAAA,iBAAA9kB,KAEA/C,EAAAqW,GAAA,eAAA,SAAA2Q,EAAA9hB,GACA,GAAAlC,EAAAunD,SAAA,CACA,GAAAr2D,GAAA8O,EAAAunD,SAAApnD,QAAA+B,EACAhR,IAAA,GACA8O,EAAAunD,SAAArmD,OAAAhQ,EAAA,GAEA8O,EAAAgzJ,WAAAhzJ,EAAAgzJ,UAAAloC,SAAA5oH,IACAlC,EAAAgzJ,UAAArjI,QACA3vB,EAAAgzJ,UAAA,QAGAh2J,EAAAqW,GAAA,aAAA,SAAA2Q,EAAAkpB,GACAlwC,EAAA6nB,aAAA,aAAAqoB,KAEAltC,EAAA60D,GAAAxhD,GAAA,cAAA,SAAAwhD,EAAAv/D,GAGA,QAAA29J,KACA,MAAAtgK,GAAA,kDAAA,GAHA,GAAA4yC,GAAAsvB,EAAAklC,SAAAzkG,EAMAiwC,GAAAs9B,cACAhO,EAAA+kC,gBAAAtkG,EAAA,qBAAA,MAEAu/D,EAAA+kC,gBAAAtkG,EAAA,qBAAA29J,QAIAjzJ,EAAA60D,GAAAxhD,GAAA,SAAA,SAAAwhD,EAAAp9B,GACA,GAAA6sB,EAEA,IAAA,YAAA7sB,EAAAwI,OACAqkB,GAAA,MACA,CACA,GAAA3W,GAAA3wC,EAAAgD,KAAA,WACAw5F,EAAA7rD,EAAAA,EAAAuqD,gBAAAl4F,EAAAk4F,eAEA5zC,GAAAtkD,EAAA60D,GAAA0kC,QAAAC,GAGAx8F,EAAA6nB,aAAA,YAAAy/B,QAYA4Z,UAAA,SAAAxW,GACA,MAAA/3D,MAAAqQ,KAAAqxB,GAAAq2B,IAUAwrG,cAAA,SAAAC,GACAA,EAAAA,GAAA,UACAxjK,KAAAqQ,KAAAqxB,GAAAwjC,GAAAn+C,QAAAguE,OAAAyuE,GAQAt7E,SAAA,SAAAz1B,GACA,GAAApiD,GAAArQ,KAAAqQ,KAAAqxB,EAWA,OATAu2B,GAAAoR,MAAA5W,GAKAA,GAAApiD,EAAAoiD,MACApiD,EAAA60D,GAAA+xC,UAAA,OAAAxkD,GALAzvB,SAAA,WAAAyvB,EAAA,IAAAA,GACA,WACApiD,EAAA60D,GAAA+xC,UAAA,OAAAxkD,KAMAzyD,MAWAyjK,gBAAA,WACA,GAAApzJ,GAAArN,EAAAhD,MAAAqQ,KAAAqxB,EACA,IAAArxB,GAAA,UAAAA,EAAAwyB,KAAA,CACA,GAAA6gI,GAAA1gK,EAAAhD,MAAAqQ,KAAA,UAEA,IAAAqzJ,GAAAA,EAAAx1H,OACAw1H,EAAAx1H,KAAAi7F,QACAu6B,EAAAx1H,KAAAvuC,QACA,OAAA,EAIA,MAAAK,OAWA2jK,eAAA,SAAAruG,GACA,GAAAn1C,KAkCA,OAhCAngB,MAAA6B,KAAA,WAQA,IAPA,GAAAwO,GAAArN,EAAAhD,MAAAqQ,KAAAqxB,GACAu5F,KACAhqG,EAAA,EACAi0C,EAAA70D,EAAA60D,GACAlS,EAAAkS,EAAA0jB,YACAv3E,EAAA6zD,EAAAR,WAEA1R,EAAA3hD,EAAA2hD,IAAA,CACA,GAAApd,GAAAsvB,EAAAklC,SAAAp3C,EACApd,GAAAs9B,eACA+nD,EAAA10H,KAAA0qB,EAAA+hC,EAAA,GAGA,GAAAioE,EAAAt6H,OAAA,EAAA,CACA,GAAA8Y,EAEA,IAAApJ,EAAAunD,UAAAvnD,EAAAunD,SAAApnD,QAAA8kD,IAAA,EACA77C,EAAA,aAAA67C,EAAA,WACA,CACA,GAAAtX,GAAAh7C,EAAAhD,MAAAqQ,KAAA,UACA2tC,KACAvkC,EAAA,WAAAukC,EAAAvkC,MAGAA,GACA0G,EAAA5Z,MAAAkT,KAAAA,EACAwhH,YAAAA,OAKA96G,GAeA0yH,UAAA,SAAAhwG,EAAA+gI,GACA,GAAA96J,KAwBA,OAtBA9I,MAAA6B,KAAA,WACA,GAAAmB,EAAAhD,MAAAk1B,aAAA,mBAAA,CACA,GAAA7kB,GAAArN,EAAAhD,MAAAqQ,KAAAqxB,EAEA,IAAArxB,KACAwyB,GAAAA,GAAAxyB,EAAAwyB,MAAA,CACA,GAAAghI,EAMAA,GAHA,kBAAAxzJ,GAAA,WAAAuzJ,EAGAvzJ,EAAA60D,GAAAq8B,WAFAlxF,EAAAwiI,YAMA/pI,EAAAvC,KAAAs9J,OAMA/6J,EAAA8F,KAAA,SAMAk1J,YAAA,WACA,GAAA1gI,IAAA9vB,MAAAtT,KAAAqQ,KAAAqxB,GAAAwjC,GAAAq8B,YAEA85B,EAAAr7H,KAAAk1B,aAAA,iBAIA,OAHAmmG,GAAA16H,OAAA,IACAyiC,EAAA63F,YAAAI,GAEAj4F,GAOAgP,MAAA,WACA,GAAAw4B,EAEA,OAAA5qE,MAAAgqB,SAAA,WACAhqB,KAAAywC,QAAA,UACAm6B,EAAA5qE,KAAA2a,QAAA,cAAAiwD,EAAAjqE,OAAA,IACAojK,MAAAn5F,EAAAn6B,QAAA,SACAszH,OACAA,MAAA,IAAA/jK,KAAA2a,QAAA,YAAA5D,KAAA,QAHA,QAYAitJ,YAAA,WACA,GAAA3mH,KAWA,OATAr9C,MAAA6B,KAAA,WACA,GAAAwO,GAAArN,EAAAhD,MAAAqQ,KAAAqxB,EAEArxB,IAAAA,EAAA60D,IAAA70D,EAAA60D,GAAA/0D,MAAAiuI,sBACA/gG,EAAA92C,KAAA8J,EAAA60D,GAAA/0D,MAAAiuI,sBAAAI,MAEAnhG,EAAA92C,KAAA,QAGA82C,GAUA4X,UAAA,SAAAr3C,EAAAgmJ,GAIA,GAHA,gBAAA,KACAhmJ,GAAAvN,KAAAuN,IAEA5d,KAAAqQ,KAAA,YAAA,GAAAuzJ,EACA5jK,KAAAywC,QAAA,YAAA7yB,OACA,CACA,GAAAvN,GAAArQ,KAAAqQ,KAAAqxB,EAEArxB,GAAA60D,GAAAs1B,SAAA58E,EAAAvN,OACAuN,EAAAo1C,MAAAp1C,EAAA82C,UACArkD,EAAA60D,GAAArlC,UAEAjiB,EAAAo1C,KACAhzD,KAAAk1B,aAAA,WAAAtX,EAAAo1C,KAAAp1C,GAEA5d,KAAAk1B,aAAA,gBAAAtX,EAAA82C,SAIA,UAAArkD,EAAAwyB,MACA7/B,EAAA,yBAAA8d,QAAA,iBAAA9gB,MAEA,MAAAA,OAOAikK,YAAA,WAEA,MADAjhK,GAAA,yBAAA8d,QAAA,kBAAA9gB,MACAA,MAQAypG,UAAA,SAAA90C,GACA,GAAAtkD,GAAArQ,KAAAqQ,KAAAqxB,EAEArxB,GAAA0gI,iBAAAp8E,IACAtkD,EAAA0gI,gBAAAp8E,EACA30D,KAAA8gB,QAAA,gBAAA6zC,KAQAuvG,WAAA,WACA,MAAAlkK,MAAA6B,KAAA,WACA,GAAAwL,GAAArK,EAAAhD,MACAqQ,EAAAhD,EAAAgD,KAAAqxB,EACArxB,GAAAk4F,gBAAAl4F,EAAA60D,GAAAwkC,sBASAyxB,QAAA,SAAAp0G,GACA,GAAA1W,GAAArQ,KAAAqQ,KAAAqxB,EAEA,IAAArxB,EAAA,CACA,GAAA0W,EAAA1f,IAKA,MAJAgJ,GAAAunD,SAAAvnD,EAAAunD,aACAvnD,EAAAunD,SAAApnD,QAAAuW,EAAA1f,KAAA,GACAgJ,EAAAunD,SAAArxD,KAAAwgB,EAAA1f,KAEArH,IACA,IAAA+mB,EAAA/O,IACA,MAAA3H,GAAAunD,UACAvnD,EAAAunD,SAAApnD,QAAAuW,EAAA/O,MAAA,IAWA0+C,MAAA,SAAA5tD,GAOA,QAAAq7J,GAAA92J,GACA,GAAAu2B,GAAA5gC,EAAAgzB,GAAA4N,QAAA96B,IAAA,eACA9F,GAAA,QAAA8gB,OAAA8f,GACA5gC,EAAA,OAAA4gC,EAAAC,cAAAhkC,UAAAikB,OAAAzW,GACAu2B,EAAAC,cAAA6yB,QAVA,GAAA0X,GAAAprE,EAAAgzB,GAAAo4C,KAAAxkD,MAAA,eAwBA,OAtBA9gB,KAAAA,EAAA9I,KAAAk1B,aAAA,cAEA+iC,EAAA8S,QAAAjiE,EAAA,SAAAslE,GASAprE,EAAAsqB,MAAAjB,IAAA2G,EAAA2C,KAAAC,UAAAlD,MAAA,iCACAziB,SAAA,OACAqe,QAAA,SAAAje,GACA8zJ,EAAAnhK,EAAAgzB,GAAAyM,IAAAz/B,EAAAgzB,GAAA3xB,MAAAgM,GACA+9D,KAEAh+D,MAAA,SAAA6yB,GACAhP,EAAA6P,UAAAb,MAIAjjC,MAYAy0I,WAAA,SAAAC,GACA,GAAArkI,GAAArQ,KAAAqQ,KAAAqxB,EAeA,OAbA,yBAAAgzG,EAAA73H,MACAxM,EAAA60D,GAAA+xC,UAAA,yBACAt+F,QAAA+7H,EAAAphI,QAGA,oBAAAohI,EAAA73H,OACA,GAAA63H,EAAAphI,MACAjD,EAAA60D,GAAA+xC,UAAA,SAAA,SAEA5mG,EAAA60D,GAAA+xC,UAAA,SAAA,YAIAj3G,MAWAokK,eAAA,SAAAh0J,GACA,GAAAA,EAAAgI,SAAAqB,OACA,GAAArJ,EAAAgI,SAAAqB,MACAzZ,KAAAk1B,aAAA,WAAA9kB,EAAAgI,SAAAqB,OAAA,CACA,GACA4qJ,GADAh0J,EAAArQ,KAAAqQ,KAAAqxB,EAGAtxB,GAAAgI,SAAAglC,KACA12B,KAAArW,EAAA60D,GAAAuT,YAAAzlB,KAAA5iD,EAAAgI,SAAA46C,KAAA,EACA5V,GAAAhtC,EAAAgI,SAAAglC,GAAA,GAEA,SAAA12B,KACA29I,EAAArhK,EAAAgzB,GAAAyM,KAAA7Y,MAAA,uBACA5mB,EAAAgzB,GAAA4U,MAAAhhB,MAAA,oCACA5mB,EAAAqhK,GAAAtgK,IAAA,eAAA2iB,KAAA,MAGA,IAAArZ,GAAArK,EAAAgzB,GAAAyM,KAAA7Y,MAAA,iCACA0T,MAAA,mCAEA+mI,EACArhK,EAAAoN,EAAAC,MAAA,GACArN,EAAAgzB,GAAA4U,MAAAhhB,MAAA,uCACAomD,EAAA3/D,EAAA60D,GAAAmrB,cAAAjgF,EAAAgI,SAAA46C,KAAA,EAAA3lD,EAEA+C,GAAAmsH,eACAv5H,EAAAqK,GAAAgD,KAAA,gBAAAD,EAAAmsH,eACAv5H,EAAAqK,GAAAqW,GAAA,QAAA,SAAA2Q,GACAjkB,EAAAosH,eACA,GAAApsH,EAAAosH,cAAAnoG,IAEA27C,EAAAhwC,UAEAh9B,EAAAqK,GAAAgD,KAAA,YAAA2/D,GAGA,MAAAhwE,OAOA6/I,iBAAA,WACA,GAAAxvI,GAAArQ,KAAAqQ,KAAAqxB,EAEA,OADArxB,GAAA60D,GAAAo5E,yBAAA,GACAt+I,MAMA6/B,QAAA,WACA,GAAAxvB,GAAArQ,KAAAqQ,KAAAqxB,EAGA,OAFArxB,IACAA,EAAA60D,GAAArlC,UACA7/B,MAMAskK,cAAA,WAOA,MANAtkK,MAAAgU,KAAA,eAAAnS,KAAA,WACAmB,EAAAhD,MAAAqQ,KAAA,aAAA2vB,UAGAhgC,KAAAk1B,aAAA,gBAAA,MAEAl1B,MASAw2G,YAAA,SAAAwuC,GACA,GAAA,WAAAA,EACA0d,EAAA1iK,KAAA,OACA,IAAA0iK,GAAA1iK,KAAA,GAAA,CACAqN,KAAArK,EAAA0/J,EACA,IAAAryJ,GAAAhD,KAAAgD,KAAAqxB,EACArxB,GAAA60D,GAAAsxC,YAAAwuC,GACA33I,KAAA2G,KAAA,4BAAAuE,QAGA,MAAAvY,OASAukK,SAAA,SAAA9qJ,GACA,GAAA6/B,GAAA,UAEA,IAAA7/B,EAAAqc,WAAA,cAAA,CACA,GAAAzlB,GAAArQ,KAAAqQ,KAAAqxB,EAEA,IAAArxB,EAAAunD,WACArlD,GAAAkH,EAAAvJ,MAAA,KAAA,KACAG,EAAAunD,SAAApnD,QAAA+B,KAAA,EACA,OAAA,EAGA,GAAAkH,EAAAqc,WAAAwjB,GAAA,CACA,GAAA0E,GAAAh+C,KAAAqQ,KAAA,UAEA,IAAA2tC,GAAAvkC,EAAAhX,MAAA62C,EAAA34C,SAAAq9C,EAAAvkC,KACA,OAAA,EAGA,OAAA,GAWA07C,cAAA,SAAAT,GACA,GAAA,GAAA10D,KAAAW,OACA,MAAAX,KAEA,IAAAqQ,GAAArQ,KAAAqQ,KAAAqxB,EAOA,IALArxB,EAAAgzJ,YACAhzJ,EAAAgzJ,UAAArjI,QACA3vB,EAAAgzJ,UAAA,QAGA3uG,GAAAA,EAAA92C,QAAA82C,EAAA92C,OAAAnE,MAuBA,MAAAzZ,KAtBA,IAAAyZ,GAAAi7C,EAAA92C,OAAAnE,IAEA,IAAAzZ,KAAAk1B,aAAA,WAAAzb,GAAA,CACA,GAAAi7C,EAAA92C,OAAAwW,MAAAsgC,EAAA92C,OAAA+b,GAAA,CACA,GAAAvF,GAAA/jB,EAAA60D,GAAAs/F,gBAAA9vG,EAAA92C,OAAAwW,MACAuF,EAAAtpB,EAAA60D,GAAAs/F,gBAAA9vG,EAAA92C,OAAA+b,GAEA35B,MAAAua,GAAA,aACAva,KAAAywC,QAAA,SAAA,SAEArc,GAAAuF,IACAtpB,EAAAgzJ,UAAAhzJ,EAAA60D,GAAAurB,SAAAr8D,EAAAuF,GACAzjB,UAAA,SAAAw+C,EAAAiqE,OAEAtuH,EAAAgzJ,UAAAloC,QAAAzmE,EAAAymE,QACA9qH,EAAA60D,GAAA8b,eAAA5sD,EAAA,KAIA,MAAAp0B,QAgBA+yF,aAAA,WACA,GAAA7qC,KAsDA,OApDAloD,MAAA6B,KAAA,WAiBA,QAAA4iK,GAAAC,EAAAC,GACA,MAAAD,GAAA1xG,KAAA2xG,EAAA3xG,MAAA,EACA0xG,EAAA1xG,KAAA2xG,EAAA3xG,KAAA,EACA0xG,EAAAtnH,GAAAunH,EAAAvnH,IAAA,EACAsnH,EAAAtnH,GAAAunH,EAAAvnH,GAAA,EACA,EAEA,QAAA8nD,GAAAj+E,GACA,OAAA+rC,KAAA/rC,EAAA+rC,KAAA5V,GAAA,GAEA,QAAAmvB,GAAAtlD,GACA,OAAA+rC,KAAA/rC,EAAA+rC,KAAA5V,GAAA/sC,EAAA60D,GAAAhH,QAAAj3C,EAAA+rC,MAAAryD,QAEA,QAAAikK,GAAA39I,GACA,OAAA+rC,KAAA/rC,EAAA+rC,KAAA5V,GAAAn2B,EAAAm2B,IA9BA,GAAAguF,GAAApoI,EAAAhD,MACAqQ,EAAA+6H,EAAA/6H,KAAAqxB,EAEA,IAAA,GAAArxB,EAAA60D,GAAAomB,oBAAA,CACA,GAAAvQ,GAAA1qE,EAAA60D,GAAA0tB,iBACAiyE,GAAA75B,eAGA85B,EAAA15B,EAAAzwH,QAAA,YAAA5D,KAAA,OACA+tJ,KACAD,EAAA5vI,KAAA6vI,EAEA,KAAA,GAAAvjK,GAAA,EAAAA,EAAAw5E,EAAAp6E,OAAAY,IAAA,CACA,GAAAgH,GAAAwyE,EAAAx5E,GACAwjK,IAmBAN,GAAAl8J,EAAA0tD,OAAA1tD,EAAAjI,OACAykK,EAAA3wI,KAAAwwI,EAAAr8J,EAAA0tD,QACA8uG,EAAAprI,GAAAirI,EAAAr8J,EAAAjI,QAEAykK,EAAAprI,GAAAirI,EAAAr8J,EAAA0tD,QACA8uG,EAAA3wI,KAAAwwI,EAAAr8J,EAAAjI,OAGAykK,EAAAhxG,OAAA1jD,EAAA60D,GAAA85B,SAAA+lE,EAAA3wI,KAAA2wI,EAAAprI,IACAorI,EAAA73I,QAAA7c,EAAA60D,GAAA85B,SAAAkG,EAAA6/D,EAAA3wI,MAAAm4C,EAAAw4F,EAAAprI,KAEAkrI,EAAA75B,WAAAzkI,KAAAw+J,GAGA78G,EAAA3hD,KAAAs+J,MAIA38G,EAAAvnD,OAAA,EAAAunD,EAAA,MAOAmjF,iBAAA,SAAAnjF,GACA,QAAA88G,GAAA55B,EAAArwD,GAMA,QAAAkqF,GAAA18J,GASA,QAAA28J,GAAAC,EAAA58J,GAEA,IAAA,GADA8yD,GAAA9yD,EAAA2H,MAAA,MACA3O,EAAA,EAAAA,EAAA85D,EAAA16D,OAAAY,IACA,GAAA2jE,EAAAhH,QAAAinG,EAAA5jK,IAAA85D,EAAA95D,GACA,OAAA,CAEA,QAAA,EAGA,QAAA6jK,GAAAD,EAAA58J,GAEA,IAAA,GADA8yD,GAAA9yD,EAAA2H,MAAA,MACA3O,EAAA,EAAAA,EAAA85D,EAAA16D,OAAAY,IAAA,CACA,GAEA8jK,GAFAC,EAAApgG,EAAAhH,QAAAinG,GACA3/J,EAAA61D,EAAA95D,EAGA,IAAA,GAAAA,EAAA,CACA,GAAAA,GAAA85D,EAAA16D,OAAA,EACA,MAAA2kK,GAAA90J,QAAAhL,EAIA,IAFA6/J,EAAAC,EAAA90J,QAAAhL,KAEA6/J,GAAA,GAAA7/J,EAAA7E,OAAA0kK,GAAAC,EAAA3kK,QACA,OAAA,MAEA,IAAAY,GAAA85D,EAAA16D,OAAA,GACA,GAAA,GAAA2kK,EAAA90J,QAAAhL,GACA,OAAA,MAEA,IAAA0/D,EAAAhH,QAAAinG,EAAA5jK,IAAA85D,EAAA95D,GACA,OAAA,EAGA,MAAA8jK,GAGA,QAAAE,GAAAtlK,EAAAuF,EAAA43C,GAEA,MADAA,GAAAA,GAAA,GACA4V,KAAA/yD,EAAA+yD,KAAAxtD,EAAA43C,GAAAn9C,EAAAm9C,GAAAA,GA9CA,GAAA8nB,EAAA85B,SAAAz2F,EAAA6rB,KAAA7rB,EAAAoxB,KAAApxB,EAAAwrD,OACA,OAAAkC,OAAA1tD,EAAA6rB,KAAA9zB,KAAAiI,EAAAoxB,GAgDA,KA9CA,GAAAp1B,GAAA2gE,EAAA0jB,YACApkF,EAAA0gE,EAAAR,WACAzzC,EAAA,EACAu0I,EAAA,EA2CAj9J,EAAA6rB,KAAA4+B,KAAA/hC,GAAA1sB,GACAgE,EAAAoxB,GAAAq5B,KAAA/hC,GAAAzsB,GAAA,CACA,GAAA44C,EAEA,IAAA8nH,EAAA38J,EAAA6rB,KAAA4+B,KAAA/hC,EAAA1oB,EAAA2kB,SACA,OAAA+oC,OAAAsvG,EAAAh9J,EAAA6rB,KAAAnD,GACA3wB,KAAAilK,EAAAh9J,EAAAoxB,GAAA1I,GACAA,OAAAA,EAEA,KAAAmsB,EAAAgoH,EAAA78J,EAAA6rB,KAAA4+B,KAAA/hC,EAAA1oB,EAAAwrD,UAAA,EAAA,CACA,GAAA0xG,GAAAroH,EAAA70C,EAAA6rB,KAAAgpB,GACAsoH,EAAAn9J,EAAAoxB,GAAAq5B,MAAAzqD,EAAA6rB,KAAA4+B,KAAA,EAAAyyG,CAEA,QAAAxvG,OAAAsvG,EAAAh9J,EAAA6rB,KAAAnD,EAAAw0I,GACAnlK,KAAAilK,EAAAh9J,EAAAoxB,GAAA1I,EAAAy0I,GACAz0I,OAAAA,GAIAu0I,IACAv0I,EAAA7mB,KAAAy+B,MAAA28H,EAAA,GACAA,EAAA,GAAA,IACAv0I,GAAAA,IAKA,IAAA,GAlFA5gB,GAAA+6H,EAAA/6H,KAAAqxB,GACAwjC,EAAA70D,EAAA60D,GACAygG,KACAC,EAAA,GA+EArkK,EAAA,EAAAA,EAAAw5E,EAAAp6E,OAAAY,IAAA,CACA,GAAAX,GAAAqkK,EAAAlqF,EAAAx5E,GACAX,KACA+kK,EAAAp/J,KAAA3F,GACAA,EAAAqwB,SACA,IAAA20I,IACAA,GAAA,KACAA,GAAAhlK,EAAAqwB,SAOA,GAFA00I,EAAAhlK,OAAA,GACAukE,EAAA2jC,cAAA88D,EAAA,GACA,IAAAC,GAAAD,EAAAhlK,OAAAo6E,EAAAp6E,OAAA,CACA,GAAAspC,EAGAA,GADA07H,EAAAhlK,QAAAo6E,EAAAp6E,OACA,8BAAAilK,EACA,IAAAA,EACA,mCAEA,yCAAAA,EAEA3xI,EAAAqB,UAAA3sB,KAAAshC,EAAA1U,MAAA61G,KAWA,QAAAy6B,GAAAhpJ,GACA,IAAA,GAAAtb,GAAA,EAAAA,EAAAg0D,EAAA50D,OAAAY,IACA,GAAAyB,EAAAuyD,EAAAh0D,IAAAoZ,QAAA,YAAA5D,KAAA,SAAA8F,EACA,MAAA7Z,GAAAuyD,EAAAh0D,IATA,GAAA2mD,EAAA,GAAAjzB,KAGA,IAAA,GAFAsgC,GAAAv1D,KAEAuB,EAAA,EAAAA,EAAA2mD,EAAAvnD,OAAAY,IAAA,CACA,GAAAgH,GAAA2/C,EAAA3mD,GASA6pI,EAAAy6B,EAAAt9J,EAAA0sB,KACAm2G,IACA45B,EAAA55B,EAAA7iI,EAAAyiI,gBAGAg6B,GAAAhlK,KAAAkoD,EAGA,OAAAloD,OAeA8lK,YAAA,SAAAh9J,EAAAi9J,GACA,GACAC,GADApoJ,EAAA9U,EAAAA,EAAA9I,KAAAk1B,aAAA,aAEA+wI,IAEA,IAAA,IAAAjjK,EAAA+O,KAAA6L,GACA,MAAA,KAOA,IAJAooJ,EADA,GAAAD,GACAj9J,GAEA8U,EAAA9b,MAAA,uCAGA,IAAA,GAAAP,GAAA,EAAAA,EAAAykK,EAAArlK,OAAAY,IAAA,CACA,GAAA2kK,GAAAF,EAAAzkK,GAAAO,MAAA,6CAEA,IAAAokK,EACA,IAAA,GAAAliK,GAAA,EAAAA,EAAAkiK,EAAAvlK,OAAAqD,IAAA,CACA,GAAAmiK,GAAAD,EAAAliK,GAAAX,QAAA,YAAA,IACAA,QAAA,OAAA,GACA4iK,GAAA1/J,KAAA4/J,IAMA,MAAAF,IAOAG,WAAA,SAAA7oH,GACA,GAAA2nB,GAAAllE,KAAAqQ,KAAAqxB,GAAAwjC,GACAtnD,EAAA5d,KAAAk1B,aAAA,aACA3wB,EAAAvE,KAAAk1B,aAAA,SACA,2BAAA1hB,KAAA,EAAAnJ,IAAA,IACA7F,EAAAxE,KAAAk1B,aAAA,SAAA,QAAA3wB,MAAAA,EAAAyuD,KAAA3oD,IAAA,GAEA,IAAA,GAAA9F,EAAA5D,QAAA,GAAA6D,EAAA7D,OAAA,CACA,GAAA83D,GAAAz4D,KAAAk1B,aAAA,cAAAtX,EAEA,IAAA66C,GAAAA,EAAAjoD,QAAA+sC,KAAA,EAEA,MADAtpB,GAAAb,MAAA,gCACApzB,IAGAklE,GAAA0nB,cAAA55B,KAAAxuD,EAAA,GAAAwuD,KAAA,EAAA5V,GAAA,IACA8nB,EAAA2tB,iBAAA,MAAAt1C,EAAA,UAEA2nB,GAAA0nB,cAAA55B,KAAAkS,EAAAR,WAAAtnB,GAAA,IACA8nB,EAAA2tB,iBAAA,sBACAt1C,EAAA,SAIA,OAAAv9C,OAYAs9C,OAAA,SAAAuV,EAAA9rC,GACA,GAAAm+C,GAAAllE,KAAAqQ,KAAAqxB,GAAAwjC,GACA1xD,EAAAuT,EAAAvT,KAAA,EACAjP,EAAA2gE,EAAA0jB,YACApkF,EAAA0gE,EAAAR,WACA5wD,IAEA,IAAAN,IAAA,EACA,CAAA,GAAAuoE,GAAAx3E,CACAA,GAAAC,EACAA,EAAAu3E,EAKA,GAHA7lD,SAAAnP,EAAAxiB,QACAA,EAAAwiB,EAAAxiB,OAEAiP,EAAA,GAAAjP,EAAAC,GACAgP,EAAA,GAAAjP,EAAAC,EACA,MAAAsP,EACAtP,IAAAgP,CAEA,KAAA,GAAAjS,GAAAgD,EAAAhD,GAAAiD,EAAAjD,GAAAiS,EAAA,CACA,GAAAw/C,GAAAkS,EAAAhH,QAAA38D,EACA,IAAAyxD,EAAA1V,OAAAuV,IAAA,IACA/+C,EAAAvN,MAAAysD,KAAAzxD,EAAA,EAAAlB,KAAA2yD,IACAjsC,EAAA1c,KAAA0c,EAAA1c,MAAAyJ,EAAAnT,QACA,MAAAmT,GAIA,MAAAA,IAcAuyJ,SAAA,SAAArzG,EAAAjsC,GAMA,QAAAu/I,GAAAphG,GACA,GAAAhvC,SAAAgvC,EAAAqhG,eAAA,CACA,IAAA,GAAAhlK,GAAA,EAAAA,EAAA2jE,EAAAqhG,eAAA5lK,OAAAY,IACA2jE,EAAAqhG,eAAAhlK,GAAAy+B,OACAklC,GAAAj+D,IAAA,iBAAAq/J,GAEAphG,EAAAqhG,kBAoBA,QAAAC,GAAAxzG,EAAA98C,GAGA,IAFA,GAAApU,GAEAA,EAAA+wD,EAAAzuD,KAAA8gE,EAAAhH,QAAAlL,KACAkS,EAAAqhG,eAAAhgK,KACA2+D,EAAAurB,UAAAz9B,KAAAA,EAAA5V,GAAAt7C,EAAA8Y,QACAo4C,KAAAA,EAAA5V,GAAAt7C,EAAA8Y,MAAA9Y,EAAA,GAAAnB,SACAuV,UAAAA,EACA66E,cAAA,EACA1uB,gBAAA,EACA/kC,MAAA,kBAzCA,GAGAu1B,GAHAxiD,EAAArQ,KAAAqQ,KAAAqxB,GACAwjC,EAAA70D,EAAA60D,GACA9nB,EAAA,CAYAkpH,GAAAphG,GACAn+C,EAAAA,MACA8rC,EAAA9rC,EAAAk9B,MACA+O,GAAA,EAEAH,IACAzV,EAAA8nB,EAAAhH,QAAAlL,GAAA1V,OAAAuV,GACAzV,EAAA,IACAA,EAAA,IAGA8nB,EAAA7Y,WAAA2G,KAAAA,EAAA5V,GAAAA,GACA,IAAAqpH,GAAAvhG,EAAA2zC,gBAAAr8E,aACA87C,EAAApT,EAAAuT,YAAAzlB,KAAAA,EAAA5V,GAAA,GAAA,QAGA,IAFA8nB,EAAAzzC,SAAA,MAAA6mD,EAAAxiE,IAAAwiE,EAAAh6C,OAAAmoI,GAAA,GAEA5zG,EAAA,CAiBA,GADA2zG,EAAAxzG,EAAA,2BACAjsC,EAAA8sC,eAGA,IAAA,GAFA6yG,GAAAxhG,EAAA+yC,cAEA12G,EAAAmlK,EAAAtyI,KAAA7yB,EAAAmlK,EAAA/sI,GAAAp4B,IACAA,GAAAyxD,GACAwzG,EAAAjlK,EAAA,8BAKA2jE,GAAAqhG,eAAA5lK,OAAA,GACAukE,EAAAxhD,GAAA,iBAAA4iJ,OAEAphG,GAAAqhG,eAAAhgK,KACA2+D,EAAAurB,UAAAz9B,KAAAA,EAAA5V,GAAA,IACA4V,KAAAA,EAAA5V,GAAA8nB,EAAAhH,QAAAlL,GAAAryD,SACAuV,UAAA,0BACA66E,cAAA,EACA1uB,gBAAA,EACA/kC,MAAA,gBAIA,OAAAt9B,OAMAupI,UAAA,WACA,MAAAvpI,MAAAqQ,KAAAqxB,GAAAwjC,GAAAwkC,oBAGAE,QAAA,SAAAC,GACA,MAAA7pG,MAAAqQ,KAAAqxB,GAAAwjC,GAAA0kC,QAAAC,IAMAwnC,aAAA,SAAA5gG,GACA,GAAApgC,GAAArQ,KAAAqQ,KAAAqxB,GACAr0B,EAAArN,IAuBA,OArBAywC,GAAA+pD,SAAA,SAAA58E,GACAvQ,EAAA6nB,aAAA,YAAAtX,GAAA,IAEA6yB,EAAA8wD,SAAA,WACA,MAAAlxF,GAAA60D,GAAAq8B,YAEA9wD,EAAA84F,UAAA,WACA,MAAAl5H,GAAA60D,GAAAwkC,oBAEAj5D,EAAAm5D,QAAA,SAAApf,GACA,MAAAn6E,GAAA60D,GAAA0kC,QAAApf,IAEA/5C,EAAAg5D,UAAA,SAAA90C,GACAtnD,EAAA6nB,aAAA,YAAAy/B,IAGAlkB,EAAA83D,gBAAAl4F,EAAA60D,GAAAwkC,mBACAj5D,EAAAvnC,UAAAmH,EAAA60D,GAAAq8B,WACA9wD,EAAA+4F,gBAAA,OAEAxpI,KAAAywC,QAAAA,GACAzwC,MAMA2mK,cAAA,WACA,GAAAt5J,GAAArN,KACAqQ,EAAArQ,KAAAqQ,KAAAqxB,GACA0lE,EAAA/2F,EAAA60D,GAAAkd,YACApmC,EAAA3rC,EAAA60D,GAAAuyC,WAAArQ,GAAA,GACAo1D,EAAAnsJ,EAAA60D,GAAAs/E,iBAAAxoG,GACApmB,EAAAvlB,EAAA60D,GAAAy/E,mBAAA6X,EAEA,IAAA5mI,GAAAA,EAAAj1B,OAAA,EAAA,CAOA,IAAA,GANA0sC,GAAArqC,EAAAgzB,GAAAqX,KACAnzB,EAAAlX,EAAAgzB,GAAAyM,KAAA7Y,MAAA,eAAA5mB,EAAAgzB,GAAAyM,IAAA,SAAA4K,GACAzK,EAAA5/B,EAAAgzB,GAAAyM,KAAA7Y,MAAA,cACA5mB,EAAAgzB,GAAAyM,KAAA7Y,MAAA,SACA1P,GAEA3Y,EAAA,EAAAA,EAAAq0B,EAAAj1B,OAAAY,IAAA,CACA,GAAA+6H,GAAA1mG,EAAAr0B,EACAyB,GAAAqqC,GAAAvpB,OAAA9gB,EAAAgzB,GAAA6X,GAAA7qC,EAAAgzB,GAAAv2B,GAAAmnK,gBAAArlK,GAAA+6H,EAAAh/F,SAGA,GAAAupI,GAAAx2J,EAAA60D,GAAAwT,cAAA,EACA11E,GAAAkX,GAAAnW,KAAA+R,IAAA+wJ,EAAAvoI,OAAA5X,KAAAmgJ,EAAAngJ,OAEA1jB,EAAA,QAAA8gB,OAAA8e,GACA5/B,EAAA4/B,GAAAlf,GAAA,QAAA,SAAA2Q,GACA,GAAA9yB,GAAAyB,EAAAqxB,EAAAlc,QAAA9H,KAAA,WAGA,IAFArN,EAAA4/B,GAAAh2B,SAEAspB,SAAA30B,EAAA,CACA,GAAA+6H,GAAA1mG,EAAAr0B,EAEA,IAAA+6H,EAAA7iH,KACApM,EAAAsN,QAAA,UAAA+X,MAAA,WAAA4pG,OACA,CACA,GAAAvpE,EAIA,UAAA1iD,EAAAwyB,MACAkwB,EAAA1lD,EAAAsN,QAAA,wBACAmsJ,YAAA,oBAEA/zG,EAAA,IACA9+B,EAAAb,MAAA,8BAEA2/B,EAAA1lD,EAGA0lD,GAAAA,EAAA,IACAA,EAAA79B,aAAA,WAAAonG,EAAAtpE,KAAAspE,GAAA/jH,YAMAvV,EAAA4/B,GAAA/kB,OAGA,MAAA7d,OAcA8+G,UAAA,SAAAvhE,EAAAwpH,GAMA,QAAAC,GAAA/sJ,GACAjX,EAAAw6H,GAAAxpH,KAAAiG,GAAApY,KAAA,WACA,GAAAgb,GAAA7Z,EAAAhD,MAAAK,MACAy0B,GAAAtkB,QAAAqM,GAAA,GACAiY,EAAAvuB,KAAAsW,KATA,GAAA2gH,GAAAx6H,EAAAgzB,GAAA4U,MAAAhhB,MAAA,sBACAkL,IAgBA,OAdAmjC,GAAA8S,QAAAxtB,EAAA,SAAAigF,GAUAwpC,EAAA,eACAD,GACAC,EAAA,iBAEAlyI,GASAg+G,aAAA,SAAA3xF,GAKA,QAAA8lH,GAAA74F,EAAAnnC,GAGA,MAFAhF,GAAA/M,aAAA,YAAAk5C,EAAA,IAAA7wB,EAAA,IAAAtW,EAAA,KACA1uB,QACA0pB,EAGA,QAAAilI,GAAA94F,GAGA,MAFAnsC,GAAA/M,aAAA,YAAAk5C,EAAA7wB,EAAA,KACAhlC,QACA0pB,EAGA,QAAAjc,GAAAxgB,GAEA,IAAA,GADAwgB,MACAzkB,EAAA,EAAAA,EAAAuzB,EAAAn0B,OAAAY,IACAykB,EAAAzf,KAAA,OAAAuuB,EAAAvzB,GAAA,IACA,OAAAykB,GAAApX,KAAA,KApBA,GAAA2uC,GAAA+Z,EAAAO,aAAA73D,KAAAk1B,aAAA,YAAA,UACA+M,EAAAjiC,KACA80B,EAAA90B,KAAAk1B,aAAA,YAAAqoB,EAqBA,QAAA4D,GACA,IAAA,wBACA,MAAA8lH,GAAA,wBAAA,WACA,KAAA,aACA,MAAAC,GAAA,eAAApyI,EAAAlmB,KAAA,KAAA,QACA,KAAA,WACA,MAAAq4J,GAAA,aAAAjhJ,EAAA8O,GAAA,MAAA,IACA,KAAA,WACA,MAAAmyI,GAAA,aAAAnyI,EAAAlmB,KAAA,KAAA,MAAA,IACA,KAAA,QACA,MAAAq4J,GAAA,aAAA,IACA,KAAA,OACA,MAAAA,GAAA,QAAA,IACA,KAAA,gBACA,MAAAA,GAAA,UAAA,GACA,SACA7zI,MAAA,qBAAA+tB,EAAA,OAkBA,IAbA6S,EAAAC,SAAA26E,SACA3+H,SAAA,KACAomD,SAAA,UACAh1B,MAAA,UACA3U,YAAA,gBACA1G,MAAA,IACA6uC,OAAA,SAAArxB,EAAAzc,GACA/jB,EAAAwgC,GAAA3Z,SAAA,iBACAqL,aAAAlyB,EAAAgF,QAAAyuD,MAAA,GAAA1vC,IACAmO,aAAA,iBAIAlC,EAAAN,MAAAy0I,UAMA,IAAA,GALAC,IACA3wG,MAAA,EACA0c,aAAA,GAGA5xE,EAAA,EAAAA,EAAAyxB,EAAAN,MAAAy0I,UAAAxmK,OAAAY,IAAA,CACA,GAAA2zD,GAAAliC,EAAAN,MAAAy0I,UAAA5lK,EACA,IAAA2zD,EAAAnC,OAAA,CACA,GAAAhsC,GAAA/jB,EAAAgF,QAAAquD,SAAAnB,EAAAmB,UACA+wG,EACAlyG,EAAAnC,OAEAmC,GAAAL,OAAA,SAAArxB,GACAxgC,EAAAwgC,GAAA3Z,SAAA,iBACAqL,aAAAnO,IAGAitC,EAAAC,SAAAiB,EAAAmB,UAAAnB,GAsBAlyD,EAAA2N,GAAAukB,aAAA,SAAAnH,GACA,MAAA4T,GAAA5T,GACA4T,EAAA5T,GACAvrB,MAAAxC,KAAA+M,MAAAnC,UAAAnI,MAAApB,KAAA6F,UAAA,IACA,gBAAA6mB,IAAAA,MAGA/qB,GAAAoN,MAAA,UAAA2d,EAAA,6BAAA2T,GAFAC,EAAAC,MAAAp/B,MAAAxC,KAAAkH,aAKAorB,QAMA2lC,EAAArtD,UAAA45J,gBAAA,SAAAvzI,GAKA,IAJA,GAAA+hC,GAAAhzD,KAAA4oF,YACAv3E,EAAArR,KAAA0kE,WACA2iG,EAAA,EAEAr0G,EAAA3hD,EAAA2hD,IAAA,CACA,GAAA3yD,GAAAL,KAAAk+D,QAAAlL,EAEA,IAAAq0G,GAAAp2I,GAAAo2I,EAAAhnK,EAAAM,QAAAswB,EACA,OAAA+hC,KAAAA,EAAA5V,GAAAnsB,EAAAo2I,EAEAA,IAAAhnK,EAAAM,OAAA,IASAs3D,EAAA88B,OAAA8qE,MAAAvwD,MAAA,mBA+CAt8E,EAAAN,MAAA40I,UACA9E,EAAAxvI,EAAAN,MAAA40I,SACA,yBACAt0I,EAAAN,MAAA60I,gBACA/E,EAAAxvI,EAAAN,MAAA60I,eACA,gCCzhDAp1I,OAAA,SAAA,SAAA,SAAA,cAAA,oBAAA,QACA,UAAA,UAEA,SAAAnvB,EAAAgwB,EAAAS,EAAAwkC,EAAAhkC,IAEA,SAAAjxB,GAmTA,QAAA2R,GAAAyf,GACA,MAAApxB,GAAAoxB,GAAAzZ,QAAA,wBAGA,QAAA6sJ,GAAA76H,EAAAtL,EAAAta,GACA,GAAAygJ,GAAAxkK,EAAAgzB,GAAAyM,KACA7Y,MAAA,oBACA5mB,EAAAgzB,GAAA/c,QACA2Q,MAAA,0CAAA+iB,EACAD,cAAA,YACArL,EACAr+B,EAAAgzB,GAAA4U,MAAAhhB,MAAA,WACA5mB,EAAAgzB,GAAAqX,IAAAzjB,MAAA,iBAAA+iB,IAWA,OATA3pC,GAAAwkK,GAAA9jJ,GAAA,QAAA,IAAA,WACA,GAAAmqB,GAAA7qC,EAAAhD,MAAA2a,QAAA,KAEAkzB,GAAA7jB,SAAA,eACArV,EAAA3U,MAAA8mK,YAAA,cAEAnyJ,EAAA3U,MAAA8mK,YAAA,WAAA9jK,EAAAhD,MAAAK,UAGAmnK,EAGA,QAAAC,GAAA1gJ,GAIA,QAAA2gJ,GAAA3gJ,GACA,GAAA+kB,GAAA/kB,EAAA4gJ,UAEA3kK,GAAAgK,QAAA8+B,IACAn3B,EAAAqhB,GAAA8wI,YAAA,cAAAh7H,GAAA,GAPA,GAAA9V,GAAAwxI,EAAA,WAAA,WAAAzgJ,GACAsmB,EAAArqC,EAAAgzB,GAAAhiB,KAAA,KASA,IAAA,kBAAA+S,GAAA,SAAA,CACA,GAAA+lD,GAAA9pE,EAAAgF,UAAA+e,EACA/jB,GAAAgzB,GAAA4xI,UAAA,SAAAvzI,GACA,GAAAA,EAAAhR,OACAqkJ,EAAA56F,SAGA,IAAA/lD,EAAA4gJ,SAGA,IAAA,GAFA77H,GAAA/kB,EAAA4gJ,SAEApmK,EAAA,EAAAA,EAAAuqC,EAAAnrC,OAAAY,IACA8rC,EAAAvpB,OAAA9gB,EAAAgzB,GAAA6X,GAAA7qC,EAAAgzB,GAAAv2B,EAAAqsC,EAAAvqC,KAIA,OAAAy0B,GAGA,QAAA6xI,GAAA9gJ,GACA,MAAAygJ,GAAA,UAAA,UAAAzgJ,GAGA,QAAA+gJ,GAAA/gJ,GAwBA,IAAA,GAXAsmB,GAZAV,EAAA,YACAb,EAAA/kB,EAAAghJ,aACA,wBACA,KACA,aACA,WACA,WACA,QACA,KACA,OACA,iBAIAP,EAAAxkK,EAAAgzB,GAAAyM,KACA7Y,MAAA,oBACA5mB,EAAAgzB,GAAA/c,QACA2Q,MAAA,0CAAA+iB,EACAD,cAAA,YACA,YACA1pC,EAAAgzB,GAAA4U,MAAAhhB,MAAA,WACAyjB,EAAArqC,EAAAgzB,GAAAqX,IAAAzjB,MAAA,iBAAA+iB,KAEAprC,EAAA,EAAAA,EAAAuqC,EAAAnrC,OAAAY,IAAA,CACA,GAAAwtB,GAAA+c,EAAAvqC,EAEA,OAAAwtB,EACA/rB,EAAAqqC,GAAAvpB,OAAA9gB,EAAAgzB,GAAA6X,IAAAjkB,MAAA,aAEA5mB,EAAAqqC,GAAAvpB,OAAA9gB,EAAAgzB,GAAA6X,GAAA7qC,EAAAgzB,GAAAv2B,EAAAsvB,KAOA,MAJA/rB,GAAAwkK,GAAA9jJ,GAAA,QAAA,IAAA,WACA/O,EAAA3U,MAAAgU,KAAA,UAAAkhB,aAAA,eAAAlyB,EAAAhD,MAAAK,UAGAmnK,EAGA,QAAAQ,GAAAjhJ,GACA,GAAA9N,GACAjW,EAAAgzB,GAAA/c,QACA2Q,MAAA,gBACAA,MAAA,sCAEA,OAMA,OAJA5mB,GAAAiW,GAAAyK,GAAA,QAAA,WACA/O,EAAA3U,MAAA8mK,YAAA,MAAA5wI,OAAA+xI,EAAAjoK,SAGAiZ,EAGA,QAAAgvJ,GAAA7zI,GACA,MAAApxB,GAAAoxB,GAAAtb,SAAA9E,KAAA,SAAA8S,KAAA,WAGA,QAAAohJ,GAAAnhJ,GACA,GAAA5e,GAAAsrB,EAAAO,OAAA,kBACAjd,GAAAlW,KAAA,WAAAgc,KAAA,QAEAqZ,UAAA/tB,IACAA,EAAA6qB,EAAAN,MAAAy1I,gBAEAhgK,IACA4O,EAAA5O,QAAA,UAEA,IAAA6Q,GAAAhW,EAAAgzB,GAAAhd,MAAAjC,GACAyC,EAAAxW,EAAAgzB,GAAA4U,MAAAhhB,MAAA,iBACA5Q,EAAA,iBAMA,OALAhW,GAAAgW,GAAA0K,GAAA,SAAA,SAAA2Q,GACAZ,EAAAK,OAAA,iBACA9wB,EAAAqxB,EAAAlc,QAAA2O,KAAA,cAGAtN,EA1bA,GAAAkoB,GAAA,cAEAlO,GACA40I,iBAAA,IAIAzmI,GAUAC,MAAA,SAAA7a,GACA,MAAA/mB,MAAA6B,KAAA,WAmBA,QAAAomK,KACA,MAAAjlK,GAAAu6H,GAAAvpH,KAAA,SAAA8S,KAAA,WAnBA,GAAAzZ,GAAArK,EAAAhD,MACAqQ,EAAArN,EAAAgF,UAAAwrB,EAAAzM,GACAshJ,EAAArlK,EAAAgzB,GAAAyM,KAAA7Y,MAAA,UACA2zG,EAAA2qC,EAAA73J,EAEAhD,GAAAwc,SAAA,0DAEAxc,EAAAyW,OAAAukJ,EACArlK,EAAAgzB,GAAAyM,KAAA7Y,MAAA,iBAAA,MACA5mB,EAAAgzB,GAAAyM,KAAA7Y,MAAA,iBACA5mB,EAAAgzB,GAAA4U,MAAAhhB,MAAA,gBACA69I,EAAAp3J,GACAw3J,EAAAx3J,GACAy3J,EAAAz3J,IACArN,EAAAgzB,GAAA4U,MAAAhhB,MAAA,iBACA2zG,EACAyqC,EAAA33J,MAMArN,EAAAqlK,GAAAvkJ,OAAAzW,EAAAoN,SAAA,aACAya,cAAA2N,KAAA,QACAkwG,SAAA,WACA,MAAA1iI,GAAA0iI,YAEAu1B,YAAA,SAAAhgK,GACA+E,EAAAy5J,YAAA,MAAAx+J,EAAA2/J,QAIA56J,EAAAgD,KAAAqxB,EAAArxB,GAEArN,EAAAqlK,GAAAnzI,aAAA,YAAA,WACA,gBAAA7kB,GAAA,SACAA,EAAAs3J,SAAA,IACA3kK,EAAAqlK,GAAAnzI,aAAA,YAAA7kB,EAAAs3J,SAAA,IAEAt6J,EAAAq0B,GAAA,mBAAA1+B,EAAAqN,EAAA0iD,SAAA,IAIA1lD,EAAAqW,GAAA,kBAAA,SAAA2Q,EAAA0+B,GACA1lD,EAAAq0B,GAAA,mBAAA1+B,EAAA+vD,MAEA1lD,EAAAqW,GAAA,iBAAA,SAAA2Q,EAAA0+B,GACA,GAAA/vD,EAAAqN,EAAA0iD,QAAA1iD,KAAA,iBACArN,EAAA+vD,GAAA1iD,KAAA,gBAAA,CACA,GAAA61J,GAAA71J,EAAAs3J,UACAt6J,GAAAy5J,YAAA,WAAAZ,GAAAA,EAAA,GAAAA,EAAA,GAAA,UAUAqC,iBAAA,SAAAx1G,EAAA1S,GACA,GAAAhwC,GAAArQ,KAAAqQ,KAAAqxB,EAEA,IAAArxB,EAAA0iD,QAAAA,EAAA,KAAA1S,EACA,MAAArgD,KAGA,IADAqQ,EAAA0iD,OAAAA,EAAA,GACA1iD,EAAA0iD,OAAA,CACA1iD,EAAAs3J,SAAA,WACA,GAAAzB,GAAAnzG,EAAA79B,aAAA,mBACArW,EAAAk0C,EAAAh4C,QAAA,UAAA2X,MAAA,YAAA,MAKA,OAHA1vB,GAAAgK,QAAA6R,IACAqnJ,EAAAn6J,OAAA8S,GAEAqnJ,GAEAnzG,EAAA79B,aAAA,mBACA7kB,EAAAuN,OAAA,WACA,GAAA9U,GAAAiqD,EAAA79B,aAAA,YAAA,UACAszI,EAAAxlK,EAAA,6BAAA3C,MAKA,OAHAmoK,KACA1/J,GAAA,oBAAA0/J,GAEA1/J,GAGAuH,EAAAuN,OAAA,GAEAvN,EAAA0iI,SAAA,WACA,MAAAhgF,GAAA79B,aAAA,eAGA,IAAAgxI,GAAA71J,EAAAs3J,UACAzB,IAAAA,EAAA,IAAAlmK,KAAA8mK,YAAA,WACA9mK,KAAA8mK,YAAA,WAAAZ,EAAA,IAEAnzG,EAAA79B,aAAA,wBAGA7kB,GAAAs3J,SAAA,IAOAc,iBAAA,WACA,GAAAp4J,GAAArQ,KAAAqQ,KAAAqxB,EAEA,OAAArxB,GAAA0iD,OACA/vD,EAAAqN,EAAA0iD,QAEA/vD,KASA0lK,YAAA,SAAA58H,EAAA9L,GASA,QAAA2oI,GAAAC,GACA,GAAAC,EAEA,KAAAA,EAAAx7H,EAAAh9B,KAAA,cACAw4J,EAAAloK,QAAAioK,EAAAjoK,OAAA,CACA,IAAA,GAAAY,GAAA,EAAAA,EAAAsnK,EAAAloK,OAAAY,IACA,GAAAsnK,EAAAtnK,IAAAqnK,EAAArnK,GACA,OAAA,CAEA,QAAA,EAEA,OAAA,EAnBA,GAAA8rC,GAAArtC,KAAAgU,KAAA,cAKA,IAHA83B,IAAAA,MACA5V,SAAA8J,IAAAA,GAAA,GAEAA,GAAA2oI,EAAA78H,GACA,MAAA9rC,KAgBAggC,MAAA,GACAqN,EAAA1kC,KAAA,IACA0kC,EAAAr5B,KAAA,8BAAApH,QACA,KAAA,GAAArL,GAAA,EAAAA,EAAAuqC,EAAAnrC,OAAAY,IACA8rC,EAAAvpB,OAAA9gB,EAAAgzB,GAAA6X,GAAA7qC,EAAAgzB,GAAAv2B,EAAAqsC,EAAAvqC,KAOA,OALA8rC,GAAAh9B,KAAA,WAAAy7B,EAAArpC,MAAA,IACA4qC,EAAAvpB,OAAA9gB,EAAAgzB,GAAA6X,IAAAjkB,MAAA,aACAyjB,EAAAvpB,OAAA9gB,EAAAgzB,GAAA6X,IAAAjkB,MAAA,eACA5mB,EAAAgzB,GAAAv2B,EAAA,mCAEAO,MAMAomK,WAAA,WACA,GAAA7oH,GAAAv9C,KAAAgU,KAAA,UAAAkhB,aAAA,YAUA,OARA,IAAAqoB,EAAAxrC,OACA/O,EAAA,iCACA8d,QAAA,aACA9gB,KAAAgU,KAAA,UAAAkhB,aAAA,cAEAjB,EAAAb,MAAA,6BAGApzB,MASA8oK,WAAA,SAAAvrH,GAIA,QAAAwrH,KACA,MAAA17H,GAAA5yB,WAAA/Y,OAAA,WACA,MAAAsB,GAAAhD,MAAAK,QAAAk9C,IALA,GAAAlQ,GAAArtC,KAAAgU,KAAA,cACA3D,EAAArQ,KAAAqQ,KAAA,cAQA,IAAAktC,EAAA,CACA,GAAA1P,IAEAA,EAAAk7H,MACAl7H,EAAAjhC,SACAygC,EAAA5yB,WAAA9Z,QAAA0P,EAAA+3J,kBACA/6H,EAAA5yB,WAAArJ,QAAAxE,SACAygC,EAAAvpB,OAAA9gB,EAAAgzB,GAAA6X,GAAA7qC,EAAAgzB,GAAAv2B,EAAA89C,KAGA,MAAAv9C,OAOAunD,SAAA,SAAAhK,GACA,GAAAltC,GAAArQ,KAAAqQ,KAAAqxB,EAQA,OANArxB,GAAA24J,SACAhpK,KAAAgU,KAAA,UACAkhB,aAAA,YAAAqoB,GACAhlC,QACA2c,aAAA,aAEAl1B,MAGA4pG,QAAA,WACA,GAAAv5F,GAAArQ,KAAAqQ,KAAAqxB,EAEA,QAAA1hC,KAAA8mK,YAAA,aACAz2J,EAAA24J,UACAhpK,KAAAgU,KAAA,UAAAkhB,aAAA,UAAA7kB,EAAA24J,WAQA1hH,SAAA,WACA,MAAAtnD,MAAAgU,KAAA,UAAAkhB,aAAA,YAAA,UAYAznB,IAAA,SAAAnF,EAAAi1H,GACA,GAAAltH,GAAArQ,KAAAqQ,KAAA,cAKA,IAHA6lB,SAAA5tB,IAAAA,EAAAtI,KAAA8mK,YAAA,aACAx+J,EAAAtF,EAAA+O,KAAAzJ,IAEAA,EAEA,MADAtF,GAAA,yBAAA8d,QAAA,QAAArH,KAAA,eACAzZ,IAEAgD,GAAA,yBAAA8d,QAAA,gBAEA,IAAAy8B,IAAAA,MAAAj1C,EACAyqD,OAAA1iD,EAAA0iD,OACAurE,aAAAt+H,KAAAgU,KAAA,UAaA,OAVA,kBAAA3D,GAAA,OACAktC,EAAA3/B,OAAAvN,EAAAuN,OAAAtV,GACA,gBAAA+H,GAAA,SACAktC,EAAA3/B,OAAAvN,EAAAuN,QACA2/G,IACAhgF,EAAAggF,QAAA,GAEAv9H,KAAA8mK,YAAA,aAAAx+J,GACA+H,EAAA4pH,OAAAH,cAAA,MAAAv8E,GAEAv9C,MAkKAgD,GAAA2N,GAAAm2J,YAAA,SAAA/4I,GACA,MAAA4T,GAAA5T,GACA4T,EAAA5T,GACAvrB,MAAAxC,KAAA+M,MAAAnC,UAAAnI,MAAApB,KAAA6F,UAAA,IACA,gBAAA6mB,IAAAA,MAGA/qB,GAAAoN,MAAA,UAAA2d,EAAA,6BAAA2T,GAFAC,EAAAC,MAAAp/B,MAAAxC,KAAAkH,aAKAorB,UCneAH,OAAA,QAAA,UACA,WAEA,QAAA82I,KACAjmK,EAAAhD,MAAAyT,OAAAsW,YAAA,QACA/mB,EAAAhD,MAAA4M,SAGA5J,EAAAnD,UAAA6jB,GAAA,QAAA,yBAAA,WACA,GAAAzjB,GAAA+C,EAAAhD,MAAA8Y,QACA9V,GAAA/C,GAAA8pB,YAAA,QACA/mB,EAAA/C,GAAAgkB,OAAA,wCAAAvJ,OAAAsG,MAAAioJ,OCFA92I,OAAA,SAAA,SAAA,QAAA,SAAA,OAAA,WACA,SAAAnvB,EAAAixB,EAAAjB,EAAAiO,GAEA,GAAAioI,IAAA,eAAA,QAAA,WAEA,SAAAlmK,GAqNA,QAAAmmK,GAAAC,EAAAr7I,EAAAs7I,GAGAD,IAAAA,EAAA,gBACA,KACA,GAAAE,GAAAxgI,UAAAC,UAAA9nC,aAEA,IAAAqoK,EAAA94J,QAAA,UAAA,EACA3Q,SAAA22G,YAAA,gCACA,IAAA8yD,EAAA94J,QAAA,YAAA,GAAA,SAAAud,EAAA,CACA,GAAAw7I,GAAAC,EAAAH,EAEAE,KACAA,EAAA55I,KAAA,MAAAy5I,GAAA,GACAG,EAAA37I,iBAAA,gBAAA;AACA27I,EAAA/6I,YAEA,CACA,GAAA+6I,GAAAC,EAAAH,EAEAE,KACAA,EAAA55I,KAAA,MAAAy5I,GAAA,EAAA,SAAA,UACAG,EAAA/6I,KAAA,IACA+6I,EAAAz7I,UAGA,MAAA3rB,GAEA,QAIA,QAAAqnK,GAAAH,GACA,GAAAE,EAEA,KACAxpK,OAAAsvB,eACAk6I,EAAA,GAAAl6I,gBACAtvB,OAAA0pK,gBACAF,EAAA,GAAAE,eAAA,sBAGAJ,IACAE,EAAAxzJ,iBAAA,OAAAszJ,GACAE,EAAAxzJ,iBAAA,QAAAszJ,GACAE,EAAAxzJ,iBAAA,QAAAszJ,IAEA,MAAAlnK,IAGA,MAAAonK,GASA,QAAAG,GAAAC,EAAA9sJ,EAAAkK,EAAA6iJ,GACA,GAAAlmI,GAAA3jC,OAAA4vB,KAAAg6I,EAAA9sJ,EAAAkK,GACA3b,EAAArL,OAAAu6B,YAAA,WACA,KACA,MAAAoJ,GAAAA,EAAAm1F,UACA94H,OAAAs6B,cAAAjvB,GACAw+J,EAAAlmI,IAGA,MAAAvhC,MAEA,IAKA,OAHApC,QAAAwY,OACAmrB,EAAAnrB,QAEAmrB,EA/RA,GAAAhC,GAAA,QAGAC,GACAC,MAAA,SAAA7a,GACA,MAAA/mB,MAAA6B,KAAA,WACA,GAAAwL,GAAArK,EAAAhD,MACAqQ,IAEAA,GAAAgc,IAAAhf,EAAA0J,KAAA,QACA1J,EAAA+b,WAAA,QAEA/b,EAAAqW,GAAA,QAAA,SAAA2Q,GACAhnB,EAAA2c,SAAA,UACA3c,EAAAikC,MAAA,QAAAjd,KAGAhnB,EAAAgD,KAAAqxB,EAAArxB,GACAhD,EAAAikC,MAAA,SAAA,cAOA6Y,OAAA,SAAAwhF,GACA,GAAAt+H,GAAArK,EAAAhD,KACAgD,GAAAgC,IAAAguB,EAAA2C,KAAAC,UAAAud,WAAAvB,OAAA+5F,GACA,SAAAvoG,GACA,GAAAA,EAAA,CACApQ,EAAAN,MAAA4f,KAAAlP,EACA/1B,EAAAyc,YAAA,SAAAD,SAAA,SAEA,IACAiY,GADA8I,EAAAv9B,EAAA2G,KAAA,yBAIA8tB,GADAsB,EAAAiM,OACArsC,EAAAgzB,GAAAuZ,KAAA3lB,MAAA,kBACA9gB,IAAAs6B,EAAAiM,SAGArsC,EAAAgzB,GAAA4U,MAAAhhB,MAAA,6BAEAkY,EAAA9+B,EAAAgzB,GAAA4U,KAAA9I,EAAA9+B,EAAAgzB,GAAAt2B,GAAAkqB,MAAA,WACAghB,EAAAjiC,KAAA,IACAiiC,EAAA9mB,OAAAmd,EAAA4L,QAAAK,eAAApL,GACAqL,SAAA,4BACAC,QAAA,aACAI,OAAAngC,EACAigC,SACAu8H,OAAAx8J,EAAA2c,SAAA,aAAAkM,OACA,WACAl2B,KAAAsxC,MAAA,WAEAw4H,QAAA,WACA9pK,KAAAsxC,MAAA,2BAKAte,GAAAN,MAAA4f,KACAjlC,EAAAyc,YAAA,UAAAD,SAAA,UAGA,SAMAynB,MAAA,SAAAjd,GACA,GAAAhnB,GAAArK,EAAAhD,MACAqQ,EAAArQ,KAAAqQ,KAAAqxB,GACAvpB,EAAAnV,EAAAqxB,EAAAlc,QACAkU,EAAAhc,EAAAgc,IACAsxG,EAAAxlH,EAAAwC,QAAA,iBAAAtK,KAAA,UACA60I,EAAA/sI,EAAAwC,QAAA,gBAAAtK,KAAA,UAAA,QAEAstH,KACAtxG,GAAA,WAAAhB,mBAAAsyG,IAEA,SAAAunB,EACAwkB,EAAAr9I,EAAA,SACA,iDACA,WACAhf,EAAAikC,MAAA,eAGArd,EAAApW,MACAyf,MAAA,QACA14B,KAAA,WACA,GAAAqU,GAAAjW,EAAAgzB,GAAA/c,QAAA4D,KAAA,KACA+M,MAAA,6BACAuX,eAAA,SAEA,WACAnhC,MAAA8jB,OAAA9gB,EAAAgzB,GAAA4N,QAAAha,MAAA,QAAA9gB,IAAAujB,IACApT,IAEA6pB,QAAA,WACAz1B,EAAAikC,MAAA,iBASAy4H,UAAA,WACA/pK,KAAAsxC,MAAA,SAAA,UAOAK,QAAA,WACA,GAAAL,GAAAtuC,EAAAhD,KAEAi0B,GAAA8O,aACAzF,MAAA,eACAjR,IAAA2G,EAAAN,MAAA4f,KAAA03H,mBACAh3I,EAAA2C,KAAAC,UAAAq0I,aACA5mI,QAAA,WAAAiO,EAAAA,MAAA,SAAA,eAWA44H,YAAA,SAAA7/H,GAIA,QAAA8/H,GAAA5nJ,EAAA6nJ,GACA,GAAAz6H,GAAA3sC,EAAA,QACA,IAAA,GAAA2sC,EAAAhvC,OAAA,CACA,GAAAmQ,GAAA6+B,EAAAA,KAAA,QAAAy6H,GACAt5J,GAAAs5J,KAAAx0H,EAAArzB,GAAAzR,EAAAs5J,KAPA,GAAAx0H,MACAxS,EAAApQ,EAAAN,MAAA4f,QAUAjI,GAAAA,GAAA6+H,CACA,KAAA,GAAA3nK,GAAA,EAAAA,EAAA8oC,EAAA1pC,OAAAY,IAAA,CACA,GAAAghB,GAAA8nB,EAAA9oC,EAEA6hC,GAAA7gB,GACAqzB,EAAArzB,GAAA6gB,EAAA7gB,GACA,gBAAAA,EACA6gB,EAAAvmB,KACA+4B,EAAAq0F,aAAA7mG,EAAAvmB,KACAumB,EAAAinI,YAAAjnI,EAAAknI,YACA10H,EAAAq0F,aAAA7mG,EAAAinI,WAAA,IAAAjnI,EAAAknI,YACAlnI,EAAAknI,YACA10H,EAAAq0F,aAAA7mG,EAAAknI,YACAlnI,EAAAinI,WACAz0H,EAAAq0F,aAAA7mG,EAAAinI,WACAjnI,EAAAmnI,UACA30H,EAAAq0F,aAAA7mG,EAAAmnI,UAEAJ,EAAA,eAAA,QACA,YAAA5nJ,EACA6gB,EAAAonI,mBAAApnI,EAAAqnI,oBACA70H,EAAA7K,SAAA3H,EAAAqnI,kBAAA,IAAArnI,EAAAonI,mBACA,UAAAjoJ,GACA4nJ,EAAA,SAAA,UAIA,MAAAv0H,IAMA80H,OAAA,WACA,GAAAp4H,GAAAtf,EAAAN,MAAA4f,KACAjlC,EAAArK,EAAAhD,KAEAsyC,KACAA,EAAAq4H,WACA3nK,EAAAsqB,MAAAjB,IAAAimB,EAAAq4H,WACAr8I,QAAA,WACAjhB,EAAAikC,MAAA,SAAA,kBAEAlhC,MAAA,SAAA6yB,GACAhP,EAAA6P,UAAAb,MAGA,SAAAqP,EAAAs4H,aACA,UAAAt4H,EAAAs4H,YACAzB,EAAAn2I,EAAA2C,KAAAC,UAAAi1I,YACA73I,EAAAN,MAAA4f,KAAAs4H,YACA,WACAv9J,EAAAikC,MAAA,SAAA,oBAGAle,MAAA,8BAoGApwB,GAAA2N,GAAA2gC,MAAA,SAAAvjB,GACA,MAAA4T,GAAA5T,GACA4T,EAAA5T,GACAvrB,MAAAxC,KAAA+M,MAAAnC,UAAAnI,MAAApB,KAAA6F,UAAA,IACA,gBAAA6mB,IAAAA,MAGA/qB,GAAAoN,MAAA,UAAA2d,EAAA,6BAAA2T,GAFAC,EAAAC,MAAAp/B,MAAAxC,KAAAkH,aAKAorB,UC9TAH,OAAA,YAAA,SAAA,OAAA,oBAAA,QAAA,SACA,QAAA,QACA,WAEA,SAAAnvB,EAAAi+B,EAAAg3B,EAAAjpB,EAAAhc,EAAAiB,EAAA+M,IAEA,SAAAh+B,GAwaA,QAAA8nK,GAAAz9J,EAAAvE,GACA,GAAAslE,GAAAprE,EAAAgzB,GAAAo4C,KAAAxkD,MAAA,eAEAquC,GAAA8S,QAAAjiE,EAAA,SAAAslE,GAEA/gE,EAAA0J,KAAA,QAAA/T,EAAAgzB,GAAAyM,IAAA2rC,GAAAnoE,WACAoH,EAAAgD,KAAA,QAAA,GACAhD,EAAAgD,KAAA,YAAA,UACAhD,EAAAgD,KAAA,UAAA,SACAhD,EAAAgyB,UAGA,QAAAwL,GAAAkC,EAAAlsC,EAAAy8B,GACA,MAAA2D,GAAA4L,QAAAI,gBAAAF,GACAnjB,MAAA,UAAA/oB,EAAAy8B,MAAAA,IAGA,QAAAytI,GAAAp4H,GACA,GAAAo4H,IAAA,GAAA94J,OAAAu9B,UAAA,IAAAmD,CAEA,OAAAo4H,GAAA,GAAA,WACAA,EAAA,GAAA,0BACAA,EAAA3gK,KAAAs0B,MAAAqsI,EAAA,IACAA,EAAA,IAAAA,EAAA,gBACAA,EAAA3gK,KAAAs0B,MAAAqsI,EAAA,IACAA,EAAA,GAAAA,EAAA,cACAA,EAAA3gK,KAAAs0B,MAAAqsI,EAAA,IACAA,EAAA,IAAAA,EAAA,aACAA,EAAA3gK,KAAAs0B,MAAAqsI,EAAA,KACAA,EAAA,iBAMA,QAAAl8B,GAAAxuI,GA+BA,QAAA0uB,GAAAyW,GACA,MAAA,UAAA1jC,EAAAwZ,GACA,MAAA,IAAAkqB,EAAA,IAAAlqB,EAAA,KAAAkqB,EAAA,KAIA,IAAA,GApCAniC,KACA4gD,MAAA,6BACAtM,KAAA,SAAA71C,GACA,MAAA,iDAAAA,EAAA,KACAA,EAAA,UAGAmiD,MAAA,gCACAtM,KAAA,SAAA71C,GACA,MAAA,4BACAkxB,EAAA2C,KAAAC,UAAA6rG,YACA3/H,EAAA,KACAA,EAAA,UAGAmiD,MAAA,SACAtM,KAAA,SAAA71C,EAAAwZ,GACA,MAAA,SAAAA,EAAA,aAGA2oC,MAAA,iCACAtM,KAAA,SAAA71C,EAAAwZ,GACA,MAAA,SAAAA,EAAA,aAGA0vJ,MAAA,MAAAvrK,EAAA,SAAA0U,EAAA,SAAAqxB,IAAA,MACAwlI,MAAA,KAAAvrK,EAAA,QAAA0U,EAAA,QAAAqxB,IAAA,MACAwlI,MAAA,IAAAvrK,EAAA,OAAA0U,EAAA,OAAAqxB,IAAA,MASAjkC,EAAA,EAAAA,EAAA8B,EAAA1C,OAAAY,IAAA,CACA,GAAAX,GAAAyC,EAAA9B,EAEAX,GAAAqjD,MACA5jD,EAAAA,EAAAgD,QAAAzC,EAAAqjD,MAAArjD,EAAA+2C,MACA/2C,EAAAoqK,QACA3qK,EAAAA,EAAAgD,QAAAqR,OAAA9T,EAAAnB,EAAA,MAAAmB,EAAAoqK,MAAA,MAAApqK,EAAAuT,EAAA,KACA4a,EAAAnuB,EAAA4kC,OAIA,MAAAnlC,GA1fA,GAAAqhC,GAAA,WAGAC,GAMAC,MAAA,SAAA7a,GACA,MAAA/mB,MAAA6B,KAAA,WACA,GAEAgpC,GAAArc,EACAwK,EACA34B,EAJAgN,EAAArK,EAAAhD,MACAqQ,IAKAA,GAAA+hC,MAAArrB,EAAAqrB,MACA/kC,EAAAgD,KAAAqxB,EAAArxB,GAEAhD,EAAAwc,SAAA,wBAIAghB,EAAA7nC,EAAAgzB,GAAAyM,KAAA7Y,MAAA,oBACA4E,EAAAxrB,EAAAgzB,GAAA/c,QAAApY,KAAA,SACA+oB,MAAA,0BACA,QACA5mB,EAAAgzB,GAAA/c,QAAApY,KAAA,SACA+oB,MAAA,sCAEA8iB,cAAA,WACAu+H,iBAAA,EACAC,iBAAA,GAEAloK,EAAAgzB,GAAA4U,MAAAhhB,MAAA,WACAyjB,GAAArqC,EAAAgzB,GAAAqX,IAAAzjB,MAAA,8BACAvpB,EAAA2C,EAAAgzB,GAAAuT,UAAAF,YAAA,+BAGAh8B,EAAAyW,OAAA9gB,EAAAgzB,GAAAyM,KAAA7Y,MAAA,qBACA5mB,EAAAgzB,GAAAyM,KAAA7Y,MAAA,YACA5mB,EAAAgzB,GAAAyM,KAAA7Y,MAAA,WACAoP,EAAAh2B,EAAAgzB,GAAA4U,MAAAhhB,MAAA,2CACA5mB,EAAAgzB,GAAAyM,KAAA7Y,MAAA,cACA5mB,EAAAgzB,GAAAspF,OAAA11F,MAAA,cACA5mB,EAAAgzB,GAAA7X,GAAAnb,EAAAgzB,GAAA5X,IAAAwL,MAAA,aAAAvpB,GACA2C,EAAAgzB,GAAA5X,IAAAwL,MAAA,aAAAihB,OAEA7nC,EAAAwrB,GAAA9K,GAAA,QAAA,WACArW,EAAA8kC,SAAA,UAIAlR,EAAA4L,QAAAU,aAAAvqC,EAAA6nC,GAAAx9B,GACA89J,mBAAA,WACA,GAAA5tH,GAAAv6C,EAAA,wBAAA8jK,YAAA,WACA,KAAAvpH,EAAAxrC,OACA/R,KAAAmyC,SAAA,QACAyd,UAAA/uD,KAAA,QAAA08C,MAAAA,MAEAtpB,EAAAb,MAAA,+BAGAg4I,yBAAA,WACA,oBAAA/6J,EAAA+hC,OACApyC,KAAAmyC,SAAA,QACAC,MAAA,mBACAwd,UAAA/uD,KAAA,QAAAuxC,MAAA/hC,EAAA+hC,QACApS,OAAA,IAEAhgC,KAAAmyC,SAAA,SAEAle,EAAAb,MAAA,6EAKApwB,EAAAg2B,GAAAtV,GAAA,QAAA,WACArW,EAAAqoC,KAAA,WAEA1yC,EAAA3C,GAAAivC,SAAA,SAAAjb,GACA,GAAA,IAAAA,EAAAhR,MAGA,MAFAhW,GAAA8kC,SAAA,QACA9d,EAAAjU,kBACA,IAGA/S,EAAAqW,GAAA,QAAA,gBAAA,SAAA2Q,GACA,GACAnK,GADAjR,EAAAjW,EAAAqxB,EAAAlc,QAAAwC,QAAA,SAUA,QAPAuP,EAAAjR,EAAA5I,KAAA,WACAhD,EAAAsN,QAAA,UAAA+X,MAAA,WAAAxI,IACAA,EAAAjR,EAAA5I,KAAA,UACAhD,EAAA8kC,SAAA,OAAAjoB,GAGAmK,EAAAjU,kBACA,IAEA/S,EAAAqW,GAAA,QAAA,WAAAsd,EAAAxL,YACAnoB,EAAAqW,GAAA,cAAA,WACArW,EAAA8kC,SAAA,kBAAA,KAEA9kC,EAAAqW,GAAA,SAAA,WACArW,EAAA8kC,SAAA,iBAGA9kC,EAAA8kC,SAAA,uBAIAnZ,MAAA,WACA,MAAAh5B,MAAA01C,KAAA,UASAlnB,KAAA,SAAAzH,GACAA,EAAAA,KACA,IAAA1W,GAAArQ,KAAAqQ,KAAAqxB,GACAuI,GAAAppC,KAAA,gBACA0S,EAAAvT,KAAAgU,KAAA,WACAi2B,GAAA5pC,KAAAkT,EAAA2W,MAAAnY,MACA,IAAA69C,GAAA7oC,EAAA6oC,YACAy7G,GAAA,EACAnjH,EAAAloD,KAAAmyC,SAAA,WAAA1B,QAAA,eAEAyX,IACA0H,EAAArpD,MAAA1F,KAAA,YAAAqnD,UAAAA,GAEA,KAAA,GAAA3mD,GAAA,EAAAA,EAAAquD,EAAAjvD,OAAAY,IACA,GAAA,SAAAquD,EAAAruD,GAAAV,KAAA,CACAwqK,GAAA,CACA,OAIA,IAAAphI,EAAA5pC,MAAAgrK,GACAtkJ,EAAAiZ,SAAA,GACAzsB,EAAA2W,IAAA,IAEA+f,EAAA2lB,QAAAA,EACA3lB,EAAAmI,MAAArrB,EAAAqrB,OAAA/hC,EAAA+hC,MACArrB,EAAA6C,QACAqgB,EAAArgB,MAAA7C,EAAA6C,OAEA5mB,EAAA,SAAA2sC,KAAA,OAAA1F,IACAljB,EAAA6oC,SACA37B,EAAAb,MAAA,uBAOAqd,QAAA,WACA,MAAAzwC,MAAA2a,QAAA,aAAA3G,KAAA,aAUA3M,IAAA,SAAA4iC,GACA,GAAA55B,GAAArQ,KAAAqQ,KAAAqxB,GACA4pI,EAAArhI,EAAAqI,SACAi5H,EAAAv4I,EAAAN,MAAA4f,QAEA,IAAArI,EAAAmI,OAAA/hC,EAAA+hC,MACA,MAAApyC,KAEA,IAAAszC,GAAAtwC,EAAA,SAAA2sC,KAAA,QACA4D,EAAA+3H,EAAA/4J,IAAA+4J,EAAA/4J,IAAA+gC,EAAA/gC,IACA+4J,EAAAj8H,QAAAi8H,EAAAj8H,QAAAiE,EAAAjE,QACAi8H,EAAAE,YAAAF,EAAAE,YAAAD,EAAAC,UAUA,IARAn+J,KAAArK,EAAAA,EAAAgzB,GAAAyM,KAAA7Y,MAAA,gBAAA2pB,EAAA,QAAA,IACAk4H,cAAAH,EAAAp6H,SACAqC,GAAA+3H,EAAAj8H,QACAhiC,KAAAyW,OAAA9gB,EAAAgzB,GAAAuZ,KAAA3lB,MAAA,SAAA9gB,IAAAwiK,EAAAj8H,UAEAhiC,KAAAyW,OAAA9gB,EAAAgzB,GAAA4U,MAAAhhB,MAAA,eACA2pB,EAAA,KAAA+3H,EAAAzuJ,OAEAotB,EAAA0I,KAAA,CACA,GAAArV,GAAA,GAAArrB,MAAA,IAAAg4B,EAAA0I,MAAAxH,gBACA99B,MAAAyW,OAAA9gB,EAAAgzB,GAAA4U,MAAAhhB,MAAA,YAAA0T,MAAAA,GACA,IAAAytI,EAAA9gI,EAAA0I,MAAA,OACAtlC,KAAAgD,KAAA,OAAA45B,EAAA0I,MAKA,GAFA3yC,KAAAgU,KAAA,UAAA8P,OAAAzW,MAEA48B,EAAA2lB,QACA,IAAA,GAAAruD,GAAA,EAAAA,EAAA0oC,EAAA2lB,QAAAjvD,OAAAY,IAAA,CACA,GAAA+wD,GAAAroB,EAAA2lB,QAAAruD,EACAmqK,GAAAp5G,EAAAzxD,MACA6qK,EAAAp5G,EAAAzxD,MAAAQ,KAAAgM,KAAAilD,GAEA31C,QAAA4zB,IAAA+hB,GAIA,GAAA3pD,EAQA,IAPAshC,EAAAthC,KACAA,EAAAshC,EAAAthC,KACAshC,EAAA5pC,OACAsI,EAAA3F,EAAAA,EAAAgzB,GAAA4U,KAAAX,EAAA5pC,OAAAsI,OACAA,EAAAkmI,EAAAlmI,IAGAA,EAAA,CACA,GAAAiiC,GAAA5nC,EAAAgzB,GAAA4U,MAAAhhB,MAAA,qBACA5mB,GAAA4nC,GAAAjiC,KAAAA,GACA0E,KAAAyW,OAAA8mB,GAKA,MAFA5qC,MAAAmyC,SAAA,kBAEAnyC,MAGA2rK,iBAAA,SAAAC,GACA,GAAAv7J,GAAArQ,KAAAqQ,KAAAqxB,GACAr0B,EAAArK,EAAAhD,KAiBA,OAfAgD,GAAAgC,IAAAguB,EAAA2C,KAAAC,UAAAi2I,eACAz5H,MAAA/hC,EAAA+hC,OAEA,SAAA05H,GACA,GAAAF,GAAA,GAAAE,EAAAnrK,OACA0M,EAAA8kC,SAAA,aAEA,KAAA,GAAA5wC,GAAA,EAAAA,EAAAuqK,EAAAnrK,OAAAY,IACA8L,EAAA8kC,SAAA,MAAA25H,EAAAvqK,MAGAe,KAAA,SAAAy/B,EAAA8nG,EAAAC,GACA71G,EAAA6P,UAAA/B,KAGA/hC,MAGA+rK,YAAA,WACA,MAAA/rK,MAAAgU,KAAA,iBAAAnS,KAAA,WACA,GACA8wC,GADAtlC,EAAArK,EAAAhD,OAEA2yC,EAAAtlC,EAAAgD,KAAA,UACAhD,EAAA2G,KAAA,cAAA3T,KAAA,IAAA0qK,EAAAp4H,GAAA,SAYA8rB,KAAA,SAAA13C,GACA,QAAA3W,GAAA2xB,GACA9N,EAAA6P,UAAA/B,GAGA/+B,EAAAsqB,MACAjB,IAAA2G,EAAA2C,KAAAC,UAAA6rG,YAAA16G,EAAAqN,KACA/jB,MAAA07B,OAAA,OACAzd,QAAA,SAAA8F,GACApxB,EAAAsqB,MACAjB,IAAA2G,EAAA2C,KAAAC,UAAA6rG,YAAA16G,EAAA4S,GACAtpB,MAAA07B,OAAA,OACAzd,QAAA,SAAAqL,GAEA,QAAAqyI,KACA,GAAAvtG,GAAAz7D,EAAAgzB,GAAAyM,KAEAziC,MAAA8jB,OAAA26C,GACAz7D,EAAAy7D,GAAAA,MACAzE,KAAA5lC,EACA9zB,KAAAq5B,EACA+uG,SAAA3hH,EAAAlK,KAAA,YACA8rH,SAAA5hH,EAAAlK,KAAA,aAEA7c,KAAA+a,QAAA,oBAAA8O,SAAA,cAGAoX,EAAAkJ,YACA7M,MAAA,qBACA14B,KAAAonK,KAGA57J,MAAAA,KAGAA,MAAAA,KAQAgiC,MAAA,SAAAA,EAAAw5H,GACA,GAAAv7J,GAAArQ,KAAAqQ,KAAAqxB,EAEArxB,GAAA+hC,OAAAA,IACApyC,KAAAgU,KAAA,UAAArL,KAAA,IACA0H,EAAA+hC,MAAAA,EACApyC,KAAAmyC,SAAA,mBAAAy5H,KAQA15H,MAAA,SAAAE,GACA,GAAAF,KASA,OAPAlyC,MAAA6B,KAAA,WACA,GAAA04H,GAAAv3H,EAAAhD,MACAqQ,EAAAkqH,EAAAlqH,KAAAqxB,EACArxB,GAAA+hC,OAAAA,GACAF,EAAA3rC,KAAAvG,QAGAgD,EAAAkvC,IAGAmoF,eAAA,SAAAC,GAcA,MAbAt6H,MAAA6B,KAAA,WACA,GAAAwL,GAAArK,EAAAhD,KACA0sE,OAAAr/D,EAAA2G,KAAA,aACAi4J,KAAA5+J,EAAA2G,KAAA,qBACA,IAAAtI,GAAAghE,MAAAhhE,SACA6uH,EAAA0xC,KAAAvgK,SAAAA,EAAA,EAAA,GAEA6uH,EAAA,GAAAD,KAAA,KACA2xC,KAAAj4J,KAAA,eAAAtI,OAAA6uH,EAAA,EAAAA,EAAA,GACA0xC,KAAA9kJ,UAAAzb,MAIA1L,OASA0rK,GACAxjH,UAAA,SAAAA,GACA,GAAAzX,GAAAzwC,KAAAmyC,SAAA,WACA9Q,EAAAoP,EAAAA,QAAA,oBAAAyX,EAAAA,WACArd,EAAA7nC,EAAAA,EAAAgzB,GAAA/c,QAAA2Q,MAAA,0BAEAyX,EAAA,IACAJ,EAAA4L,QAAAC,UAAA,aACAjC,GAAAnnB,GAAA,QAAA,WACA+sB,EAAAA,QAAA,mBAAAyX,EAAAA,aAGAloD,KAAA8jB,OAAA,IAAA+mB,EAAA,MAGA0S,MAAA,SAAAA,GACA,GAAA1S,GAAA7nC,EAAAA,EAAAgzB,GAAA/c,QAAA2Q,MAAA,0BAEA,SACAqX,EAAA4L,QAAAC,UAAA,aACAjC,GAAAnnB,GAAA,QAAA,WACA,GAAAwoJ,GAAAlpK,EAAA,uBAEAkpK,GAAApF,YAAA,WAAAvpH,EAAAA,OACAvO,EAAAE,MAAAg9H,EAAAl4J,KAAA,kBAEA82J,EAAAjgI,EAAA0S,EAAAA,OAEAv9C,KAAA8jB,OAAA,IAAA+mB,EAAA,MAGAsf,OAAA,SAAAA,GACA,GAAAniC,GAAAmkJ,EAAAC,CAEApsK,MAAA8jB,OAAA,IAAA9gB,EAAAgzB,GAAA4U,MACAhhB,MAAA,UACA5B,EAAA6iB,EAAA,OAAA,cAAA,oBACAshI,EAAAthI,EAAA,UAAA,WAAA,gBACAuhI,EAAAvhI,EAAA,OAAA,cAAA,qBAAA,KAEA7nC,EAAAglB,GAAA3X,KAAA,SAAA85C,EAAAjS,UACAl1C,EAAAmpK,GAAA97J,KAAA,QAAA+jB,KAAA+1B,EAAAjS,SAAAve,GAAAwwB,EAAA22E,OACAjkH,KAAAstC,EAAAttC,OACA7Z,EAAAopK,GAAA/7J,KAAA,SAAA85C,EAAA22E,SAGAurC,MAAA,SAAAA,GACA,GAAA5yJ,GAAA4yJ,EAAAj6H,MAAA/uC,QAAA,SAAA,GAEArD,MAAA8jB,OAAA,IACA9gB,EAAAgzB,GAAAv2B,GACAgZ,KAAAua,EAAA2C,KAAAC,UAAA6rG,YAAAhoH,EACAmQ,MAAA,gCACAnQ,GAAA,MAwGAzW,GAAA2N,GAAAwhC,SAAA,SAAApkB,GACA,MAAA4T,GAAA5T,GACA4T,EAAA5T,GACAvrB,MAAAxC,KAAA+M,MAAAnC,UAAAnI,MAAApB,KAAA6F,UAAA,IACA,gBAAA6mB,IAAAA,MAGA/qB,GAAAoN,MAAA,UAAA2d,EAAA,6BAAA2T,GAFAC,EAAAC,MAAAp/B,MAAAxC,KAAAkH,aAKAorB,WAGA,WChkBA,QAAAg6I,GAAAtzH,GACA,MAAAA,KAAAA,EAAAt0C,eAAAs0C,EAAAn5C,UAAAm5C,GAAArjC,gBAEA,QAAA42J,GAAAvzH,GACA,MAAAA,KAAAA,EAAAt0C,eAAAs0C,EAAAt0C,cAAAmR,aAAAmjC,EAAAn5C,UAAAm5C,GAAAA,EAAAnjC,aAiCA,QAAA22J,GAAA/sK,EAAAC,GACA,MAAAD,GAAAC,GAAA,EAAAD,EAAAC,EAAA,EAAAD,GAAAC,EAAA,EAAA4tF,IA8DA,QAAAm/E,GAAAp6J,GACA,MAAA,QAAAA,EAAAi7E,KAAAj7E,EAEA,QAAAq6J,GAAAr6J,GACA,OAAAR,MAAAQ,GA0DA,QAAAs6J,GAAAC,GACA,OACAlmJ,KAAA,SAAAjnB,EAAA4S,EAAA80G,EAAA0lD,GAGA,IAFA3lK,UAAAvG,OAAA,IAAAwmH,EAAA,GACAjgH,UAAAvG,OAAA,IAAAksK,EAAAptK,EAAAkB,QACAwmH,EAAA0lD,GAAA,CACA,GAAAnyG,GAAAysD,EAAA0lD,IAAA,CACAD,GAAAntK,EAAAi7D,GAAAroD,GAAA,EAAA80G,EAAAzsD,EAAA,EAAAmyG,EAAAnyG,EAEA,MAAAysD,IAEAtqF,MAAA,SAAAp9B,EAAA4S,EAAA80G,EAAA0lD,GAGA,IAFA3lK,UAAAvG,OAAA,IAAAwmH,EAAA,GACAjgH,UAAAvG,OAAA,IAAAksK,EAAAptK,EAAAkB,QACAwmH,EAAA0lD,GAAA,CACA,GAAAnyG,GAAAysD,EAAA0lD,IAAA,CACAD,GAAAntK,EAAAi7D,GAAAroD,GAAA,EAAAw6J,EAAAnyG,EAAAysD,EAAAzsD,EAAA,EAEA,MAAAysD,KA2CA,QAAA2lD,GAAA5sK,GACA,MAAAA,GAAAS,OAmDA,QAAAosK,GAAA16J,GAEA,IADA,GAAAnO,GAAA,EACAmO,EAAAnO,EAAA,GAAAA,GAAA,EACA,OAAAA,GAEA,QAAA8oK,GAAAhlG,EAAAoC,GACA,IAAA,GAAA7nD,KAAA6nD,GACA95D,OAAA+M,eAAA2qD,EAAAp9D,UAAA2X,GACAjP,MAAA82D,EAAA7nD,GACA9B,YAAA,IAkBA,QAAAwsJ,KACAjtK,KAAAoD,EAAAkN,OAAAukD,OAAA,MAgCA,QAAAq4G,GAAA3qJ,GACA,OAAAA,GAAA,MAAA4qJ,IAAA5qJ,EAAA,KAAA6qJ,GAAAA,GAAA7qJ,EAAAA,EAEA,QAAA8qJ,GAAA9qJ,GACA,OAAAA,GAAA,IAAA,KAAA6qJ,GAAA7qJ,EAAA9f,MAAA,GAAA8f,EAEA,QAAA+qJ,GAAA/qJ,GACA,MAAA2qJ,GAAA3qJ,IAAAviB,MAAAoD,EAEA,QAAAmqK,GAAAhrJ,GACA,OAAAA,EAAA2qJ,EAAA3qJ,KAAAviB,MAAAoD,SAAApD,MAAAoD,EAAAmf,GAEA,QAAAirJ,KACA,GAAA/0H,KACA,KAAA,GAAAl2B,KAAAviB,MAAAoD,EAAAq1C,EAAAlyC,KAAA8mK,EAAA9qJ,GACA,OAAAk2B,GAEA,QAAAg1H,KACA,GAAAv0H,GAAA,CACA,KAAA,GAAA32B,KAAAviB,MAAAoD,IAAA81C,CACA,OAAAA,GAEA,QAAAw0H,KACA,IAAA,GAAAnrJ,KAAAviB,MAAAoD,EAAA,OAAA,CACA,QAAA,EAsEA,QAAAuqK,KACA3tK,KAAAoD,EAAAkN,OAAAukD,OAAA,MAiBA,QAAA+4G,GAAA1tK,GACA,MAAAA,GAOA,QAAA2tK,GAAA11J,EAAAyF,EAAAmQ,GACA,MAAA,YACA,GAAAza,GAAAya,EAAAvrB,MAAAob,EAAA1W,UACA,OAAAoM,KAAAsK,EAAAzF,EAAA7E,GAGA,QAAAw6J,GAAAC,EAAAlxJ,GACA,GAAAA,IAAAkxJ,GAAA,MAAAlxJ,EACAA,GAAAA,EAAA4X,OAAA,GAAA1qB,cAAA8S,EAAApa,MAAA,EACA,KAAA,GAAAlB,GAAA,EAAAoE,EAAAqoK,GAAArtK,OAAAY,EAAAoE,IAAApE,EAAA,CACA,GAAA0sK,GAAAD,GAAAzsK,GAAAsb,CACA,IAAAoxJ,IAAAF,GAAA,MAAAE,IAIA,QAAAC,MAMA,QAAAC,MAeA,QAAAC,GAAApvJ,GAEA,QAAA5X,KAEA,IADA,GAAA5B,GAAA2O,EAAAk6J,EAAA9sK,GAAA,EAAAoE,EAAAwO,EAAAxT,SACAY,EAAAoE,IAAAH,EAAA2O,EAAA5S,GAAAmiB,KAAAle,EAAAhD,MAAAxC,KAAAkH,UACA,OAAA8X,GAJA,GAAAqvJ,MAAAC,EAAA,GAAArB,EAmBA,OAbA7lK,GAAAsc,GAAA,SAAA7G,EAAA0xJ,GACA,GAAAhtK,GAAAiE,EAAA8oK,EAAAtpK,IAAA6X,EACA,OAAA3V,WAAAvG,OAAA,EAAA6E,GAAAA,EAAAke,IACAle,IACAA,EAAAke,GAAA,KACA2qJ,EAAAA,EAAA5rK,MAAA,EAAAlB,EAAA8sK,EAAA79J,QAAAhL,IAAAuG,OAAAsiK,EAAA5rK,MAAAlB,EAAA,IACA+sK,EAAA1hK,OAAAiQ,IAEA0xJ,GAAAF,EAAA9nK,KAAA+nK,EAAA7qK,IAAAoZ,GACA6G,GAAA6qJ,KAEAvvJ,IAEA5X,EAGA,QAAAonK,KACAC,GAAArnK,MAAAgZ,iBAEA,QAAAsuJ,KAEA,IADA,GAAAnmK,GAAApG,EAAAssK,GAAArnK,MACAmB,EAAApG,EAAAwsK,aAAAxsK,EAAAoG,CACA,OAAApG,GAEA,QAAAysK,GAAAz2J,GAEA,IADA,GAAA6G,GAAA,GAAAmvJ,GAAA5sK,EAAA,EAAAoE,EAAAuB,UAAAvG,SACAY,EAAAoE,GAAAqZ,EAAA9X,UAAA3F,IAAA6sK,EAAApvJ,EAaA,OAZAA,GAAA40C,GAAA,SAAAi7G,EAAAC,GACA,MAAA,UAAAC,GACA,IACA,GAAAC,GAAAD,EAAAJ,YAAAF,GAAArnK,KACA2nK,GAAA52J,OAAAA,EACAs2J,GAAArnK,MAAA2nK,EACA/vJ,EAAA+vJ,EAAAluK,MAAA2B,MAAAqsK,EAAAC,GACA,QACAL,GAAArnK,MAAA4nK,KAIAhwJ,EAWA,QAAAiwJ,GAAA7oC,GAEA,MADA8oC,IAAA9oC,EAAA+oC,IACA/oC,EAyCA,QAAAgpC,GAAAn1J,GACA,MAAA,kBAAAA,GAAAA,EAAA,WACA,MAAAo1J,IAAAp1J,EAAAja,OAgBA,QAAAsvK,GAAAr1J,GACA,MAAA,kBAAAA,GAAAA,EAAA,WACA,MAAAs1J,IAAAt1J,EAAAja,OAkCA,QAAAwvK,GAAA3yJ,EAAAvJ,GAEA,QAAAm8J,KACAzvK,KAAA0H,gBAAAmV,GAEA,QAAA6yJ,KACA1vK,KAAA2vK,kBAAA9yJ,EAAAy9D,MAAAz9D,EAAA4iC,OAEA,QAAAmwH,KACA5vK,KAAA4S,aAAAiK,EAAAvJ,GAEA,QAAAu8J,KACA7vK,KAAA8vK,eAAAjzJ,EAAAy9D,MAAAz9D,EAAA4iC,MAAAnsC,GAEA,QAAAy8J,KACA,GAAA19J,GAAAiB,EAAA9Q,MAAAxC,KAAAkH,UACA,OAAAmL,EAAArS,KAAA0H,gBAAAmV,GAAA7c,KAAA4S,aAAAiK,EAAAxK,GAEA,QAAA29J,KACA,GAAA39J,GAAAiB,EAAA9Q,MAAAxC,KAAAkH,UACA,OAAAmL,EAAArS,KAAA2vK,kBAAA9yJ,EAAAy9D,MAAAz9D,EAAA4iC,OAAAz/C,KAAA8vK,eAAAjzJ,EAAAy9D,MAAAz9D,EAAA4iC,MAAAptC,GAEA,MArBAwK,GAAA4xJ,GAAAwB,GAAAC,QAAArzJ,GAqBA,MAAAvJ,EAAAuJ,EAAA4iC,MAAAiwH,EAAAD,EAAA,kBAAAn8J,GAAAuJ,EAAA4iC,MAAAuwH,EAAAD,EAAAlzJ,EAAA4iC,MAAAowH,EAAAD,EAEA,QAAAO,GAAA5nK,GACA,MAAAA,GAAAwJ,OAAA1O,QAAA,OAAA,KAmBA,QAAA+sK,GAAAvzJ,GACA,MAAA,IAAAnI,QAAA,aAAA+5J,GAAA4B,QAAAxzJ,GAAA,aAAA,KAEA,QAAAyzJ,GAAAzzJ,GACA,OAAAA,EAAA,IAAA9K,OAAA7B,MAAA,SAEA,QAAAqgK,GAAA1zJ,EAAAvJ,GAGA,QAAAk9J,KAEA,IADA,GAAAjvK,IAAA,IACAA,EAAAoE,GAAAkX,EAAAtb,GAAAvB,KAAAsT,GAEA,QAAAm9J,KAEA,IADA,GAAAlvK,IAAA,EAAA8Q,EAAAiB,EAAA9Q,MAAAxC,KAAAkH,aACA3F,EAAAoE,GAAAkX,EAAAtb,GAAAvB,KAAAqS,GARAwK,EAAAyzJ,EAAAzzJ,GAAAjU,IAAA8nK,EACA,IAAA/qK,GAAAkX,EAAAlc,MASA,OAAA,kBAAA2S,GAAAm9J,EAAAD,EAEA,QAAAE,GAAA7zJ,GACA,GAAAg2C,GAAAu9G,EAAAvzJ,EACA,OAAA,UAAAm8B,EAAA1lC,GACA,GAAAnT,EAAA64C,EAAA23H,UAAA,MAAAr9J,GAAAnT,EAAAkH,IAAAwV,GAAA1c,EAAAyM,OAAAiQ,EACA,IAAA1c,GAAA64C,EAAAz1C,aAAA,UAAA,EACA+P,IACAu/C,EAAA0c,UAAA,EACA1c,EAAApxD,KAAAtB,IAAA64C,EAAApmC,aAAA,QAAAu9J,EAAAhwK,EAAA,IAAA0c,KAEAm8B,EAAApmC,aAAA,QAAAu9J,EAAAhwK,EAAAkD,QAAAwvD,EAAA,QAoBA,QAAA+9G,GAAA/zJ,EAAAvJ,EAAAumD,GACA,QAAAg3G,KACA7wK,KAAAqE,MAAAysK,eAAAj0J,GAEA,QAAAk0J,KACA/wK,KAAAqE,MAAAiiB,YAAAzJ,EAAAvJ,EAAAumD,GAEA,QAAAm3G,KACA,GAAA3+J,GAAAiB,EAAA9Q,MAAAxC,KAAAkH,UACA,OAAAmL,EAAArS,KAAAqE,MAAAysK,eAAAj0J,GAAA7c,KAAAqE,MAAAiiB,YAAAzJ,EAAAxK,EAAAwnD,GAEA,MAAA,OAAAvmD,EAAAu9J,EAAA,kBAAAv9J,GAAA09J,EAAAD,EAUA,QAAAE,GAAAp0J,EAAAvJ,GACA,QAAA49J,WACAlxK,MAAA6c,GAEA,QAAAs0J,KACAnxK,KAAA6c,GAAAvJ,EAEA,QAAA89J,KACA,GAAA/+J,GAAAiB,EAAA9Q,MAAAxC,KAAAkH,UACA,OAAAmL,QAAArS,MAAA6c,GAAA7c,KAAA6c,GAAAxK,EAEA,MAAA,OAAAiB,EAAA49J,EAAA,kBAAA59J,GAAA89J,EAAAD,EA4BA,QAAAE,GAAAx0J,GACA,QAAAg4C,KACA,GAAAh1D,GAAAG,KAAA0E,cAAA2a,EAAArf,KAAAsxK,YACA,OAAAjyJ,KAAAkyJ,IAAA1xK,EAAA8V,gBAAA27J,eAAAC,GAAA1xK,EAAAO,cAAAyc,GAAAhd,EAAA2xK,gBAAAnyJ,EAAAxC,GAEA,QAAA40J,KACA,MAAAzxK,MAAA0E,cAAA8sK,gBAAA30J,EAAAy9D,MAAAz9D,EAAA4iC,OAEA,MAAA,kBAAA5iC,GAAAA,GAAAA,EAAA4xJ,GAAAwB,GAAAC,QAAArzJ,IAAA4iC,MAAAgyH,EAAA58G,EAYA,QAAA68G,KACA,GAAA54J,GAAA9Y,KAAAQ,UACAsY,IAAAA,EAAArY,YAAAT,MAmFA,QAAA2xK,GAAAthK,GACA,OACAuhK,SAAAvhK,GAoBA,QAAAwhK,GAAA53J,GACA,MAAA,YACA,MAAA63J,IAAA9xK,KAAAia,IAmBA,QAAA83J,GAAAC,GAEA,MADA9qK,WAAAvG,SAAAqxK,EAAAxF,GACA,SAAA/sK,EAAAC,GACA,MAAAD,IAAAC,EAAAsyK,EAAAvyK,EAAAmyK,SAAAlyK,EAAAkyK,WAAAnyK,GAAAC,GAQA,QAAAuyK,GAAA7rC,EAAAoT,GACA,IAAA,GAAAx1I,GAAA,EAAA0B,EAAA0gI,EAAAzlI,OAAAqD,EAAA0B,EAAA1B,IACA,IAAA,GAAAg1C,GAAA9O,EAAAk8F,EAAApiI,GAAAzC,EAAA,EAAAoE,EAAAukC,EAAAvpC,OAAAY,EAAAoE,EAAApE,KACAy3C,EAAA9O,EAAA3oC,KAAAi4I,EAAAxgG,EAAAz3C,EAAAyC,EAGA,OAAAoiI,GA0BA,QAAA8rC,GAAAhqH,GAEA,MADAgnH,IAAAhnH,EAAAiqH,IACAjqH,EA+BA,QAAAkqH,GAAAz0I,GACA,GAAA00I,GAAAC,CACA,OAAA,UAAApyK,EAAAqB,EAAAyC,GACA,GAAAg1C,GAAA9O,EAAAvM,EAAA35B,GAAAmmD,OAAAxkD,EAAAukC,EAAAvpC,MAGA,KAFAqD,GAAAsuK,IAAAA,EAAAtuK,EAAAquK,EAAA,GACA9wK,GAAA8wK,IAAAA,EAAA9wK,EAAA,KACAy3C,EAAA9O,EAAAmoI,OAAAA,EAAA1sK,IACA,MAAAqzC,IAsCA,QAAAu5H,GAAA1xK,EAAA0tK,EAAAiE,GAKA,QAAAC,KACA,GAAAjtK,GAAAxF,KAAA6c,EACArX,KACAxF,KAAA2C,oBAAA9B,EAAA2E,EAAAA,EAAAxC,SACAhD,MAAA6c,IAGA,QAAA61J,KACA,GAAAltK,GAAAupB,EAAAw/I,EAAAoE,GAAAzrK,WACAurK,GAAApxK,KAAArB,MACAA,KAAA+V,iBAAAlV,EAAAb,KAAA6c,GAAArX,EAAAA,EAAAxC,EAAAwvK,GACAhtK,EAAApC,EAAAmrK,EAEA,QAAAqE,KACA,GAAA9wK,GAAA+wD,EAAA,GAAAn+C,QAAA,eAAA+5J,GAAA4B,QAAAxvK,GAAA,IACA,KAAA,GAAAgc,KAAA7c,MACA,GAAA8B,EAAA+a,EAAA/a,MAAA+wD,GAAA,CACA,GAAArtD,GAAAxF,KAAA6c,EACA7c,MAAA2C,oBAAAb,EAAA,GAAA0D,EAAAA,EAAAxC,SACAhD,MAAA6c,IAvBA,GAAAA,GAAA,OAAAhc,EAAAU,EAAAV,EAAA2P,QAAA,KAAAue,EAAA8jJ,CACAtxK,GAAA,IAAAV,EAAAA,EAAA4B,MAAA,EAAAlB,GACA,IAAAG,GAAAoxK,GAAA9tK,IAAAnE,EAyBA,OAxBAa,KAAAb,EAAAa,EAAAqtB,EAAAgkJ,GAwBAxxK,EAAAgtK,EAAAmE,EAAAD,EAAAlE,EAAAL,EAAA0E,EAWA,QAAAC,GAAAtE,EAAAO,GACA,MAAA,UAAA3sK,GACA,GAAAyD,GAAA6oK,GAAArnK,KACAqnK,IAAArnK,MAAAjF,EACA2sK,EAAA,GAAA9uK,KAAA4xK,QACA,KACArD,EAAA/rK,MAAAxC,KAAA8uK,GACA,QACAL,GAAArnK,MAAAxB,IAIA,QAAAmtK,GAAAxE,EAAAO,GACA,GAAAtpK,GAAAqtK,EAAAtE,EAAAO,EACA,OAAA,UAAA3sK,GACA,GAAAgW,GAAAnY,KAAAgzK,EAAA7wK,EAAAkf,aACA2xJ,KAAAA,IAAA76J,GAAA,EAAA66J,EAAAn8J,wBAAAsB,KACA3S,EAAAnE,KAAA8W,EAAAhW,IAKA,QAAA8wK,GAAAj6H,GACA,GAAAn8B,GAAA,oBAAAq2J,GAAAlyJ,EAAA,QAAAnE,EAAAnc,EAAA+tK,GAAAv0J,OAAAqyJ,EAAAvzH,IAAAt1B,GAAA,YAAA7G,EAAA2xJ,GAAA9qJ,GAAA,YAAA7G,EAAA2xJ,GAAA9qJ,GAAA,cAAA7G,EAAA2xJ,EAIA,IAHA,MAAA2E,KACAA,KAAA,iBAAAn6H,KAAA80H,EAAA90H,EAAA30C,MAAA,eAEA8uK,GAAA,CACA,GAAA9uK,GAAAioK,EAAAtzH,GAAA30C,MAAA6V,EAAA7V,EAAA8uK,GACA9uK,GAAA8uK,IAAA,OAEA,MAAA,UAAAC,GAGA,GAFA1yK,EAAAgjB,GAAA7G,EAAA,MACAs2J,KAAA9uK,EAAA8uK,IAAAj5J,GACAk5J,EAAA,CACA,GAAAnsK,GAAA,WACAvG,EAAAgjB,GAAA1C,EAAA,MAEAtgB,GAAAgjB,GAAA1C,EAAA,WACAwtJ,IACAvnK,MACA,GACAiE,WAAAjE,EAAA,KAQA,QAAAosK,GAAA91I,EAAAp7B,GACAA,EAAAyf,iBAAAzf,EAAAA,EAAAyf,eAAA,GACA,IAAAm/F,GAAAxjF,EAAA+1I,iBAAA/1I,CACA,IAAAwjF,EAAAwyD,eAAA,CACA,GAAAxe,GAAAh0C,EAAAwyD,gBACA,IAAAC,GAAA,EAAA,CACA,GAAAzzK,GAAAwsK,EAAAhvI,EACA,IAAAx9B,EAAA0zK,SAAA1zK,EAAAs+G,QAAA,CACA0C,EAAA0tD,GAAAv0J,OAAA,QAAA4J,OAAA,OAAAzf,OACAghB,SAAA,WACAvP,IAAA,EACA4Q,KAAA,EACAC,OAAA,EACAC,QAAA,EACAC,OAAA,QACA,YACA,IAAA6sJ,GAAA3yD,EAAA,GAAA,GAAA4yD,cACAH,MAAAE,EAAA/vK,GAAA+vK,EAAAvxK,GACA4+G,EAAAn0G,UAMA,MAHA4mK,KAAAze,EAAA1iJ,EAAAlQ,EAAA8f,MAAA8yI,EAAA7gJ,EAAA/R,EAAA+f,QAAA6yI,EAAA1iJ,EAAAlQ,EAAAugB,QACAqyI,EAAA7gJ,EAAA/R,EAAAwgB,SACAoyI,EAAAA,EAAA6e,gBAAAr2I,EAAAo2I,eAAAE,YACA9e,EAAA1iJ,EAAA0iJ,EAAA7gJ,GAEA,GAAA6gE,GAAAx3C,EAAA9W,uBACA,QAAAtkB,EAAAugB,QAAAqyD,EAAAruD,KAAA6W,EAAAhM,WAAApvB,EAAAwgB,QAAAoyD,EAAAj/D,IAAAynB,EAAAlM,WA2DA,QAAAyiJ,KACA,MAAArF,IAAArnK,MAAAwa,eAAA,GAAA0/H,WAWA,QAAAyyB,GAAA1hK,GACA,MAAAA,GAAA,EAAA,EAAAA,EAAA,GAAA,EAAA,EAEA,QAAA2hK,GAAAv0K,EAAAC,EAAAS,GACA,OAAAT,EAAA,GAAAD,EAAA,KAAAU,EAAA,GAAAV,EAAA,KAAAC,EAAA,GAAAD,EAAA,KAAAU,EAAA,GAAAV,EAAA,IAEA,QAAAw0K,IAAA5hK,GACA,MAAAA,GAAA,EAAA,EAAAA,GAAA,EAAA6hK,GAAA9pK,KAAA+pK,KAAA9hK,GAEA,QAAA+hK,IAAA/hK,GACA,MAAAA,GAAA,EAAAgiK,GAAAhiK,GAAA,GAAAgiK,GAAAjqK,KAAAkqK,KAAAjiK,GAEA,QAAAkiK,IAAAliK,GACA,QAAAA,EAAAjI,KAAAoqK,IAAAniK,IAAA,EAAAA,GAAA,EAEA,QAAAoiK,IAAApiK,GACA,QAAAA,EAAAjI,KAAAoqK,IAAAniK,IAAA,EAAAA,GAAA,EAEA,QAAAqiK,IAAAriK,GACA,QAAAA,EAAAjI,KAAAoqK,IAAA,EAAAniK,IAAA,IAAAA,EAAA,GAEA,QAAAsiK,IAAAtiK,GACA,OAAAA,EAAAjI,KAAAgvH,IAAA/mH,EAAA,IAAAA,EAuSA,QAAAuiK,OAKA,QAAAC,IAAAhxK,EAAA0E,EAAA/C,GACA,MAAAxF,gBAAA60K,KAAA70K,KAAA6D,GAAAA,EAAA7D,KAAAuI,GAAAA,OAAAvI,KAAAwF,GAAAA,IAAA0B,UAAAvG,OAAA,EAAAkD,YAAAgxK,IAAA,GAAAA,IAAAhxK,EAAAA,EAAAA,EAAA0E,EAAA1E,EAAA2B,GAAAsvK,GAAA,GAAAjxK,EAAAkxK,GAAAF,IAAA,GAAAA,IAAAhxK,EAAA0E,EAAA/C,GAcA,QAAAwvK,IAAAnxK,EAAA0E,EAAA/C,GAOA,QAAAsL,GAAAjN,GAEA,MADAA,GAAA,IAAAA,GAAA,IAAAA,EAAA,IAAAA,GAAA,KACAA,EAAA,GAAAw8H,GAAAC,EAAAD,GAAAx8H,EAAA,GACAA,EAAA,IAAAy8H,EACAz8H,EAAA,IAAAw8H,GAAAC,EAAAD,IAAA,IAAAx8H,GAAA,GACAw8H,EAEA,QAAA40C,GAAApxK,GACA,MAAAuG,MAAAs0B,MAAA,IAAA5tB,EAAAjN,IAdA,GAAAw8H,GAAAC,CAgBA,OAfAz8H,GAAAgO,MAAAhO,GAAA,GAAAA,GAAA,KAAA,EAAAA,EAAA,IAAAA,EACA0E,EAAAsJ,MAAAtJ,GAAA,EAAAA,EAAA,EAAA,EAAAA,EAAA,EAAA,EAAAA,EACA/C,EAAAA,EAAA,EAAA,EAAAA,EAAA,EAAA,EAAAA,EACA86H,EAAA96H,GAAA,GAAAA,GAAA,EAAA+C,GAAA/C,EAAA+C,EAAA/C,EAAA+C,EACA83H,EAAA,EAAA76H,EAAA86H,EAWA,GAAA40C,IAAAD,EAAApxK,EAAA,KAAAoxK,EAAApxK,GAAAoxK,EAAApxK,EAAA,MAGA,QAAAsxK,IAAAtxK,EAAA1D,EAAAqF,GACA,MAAAxF,gBAAAm1K,KAAAn1K,KAAA6D,GAAAA,EAAA7D,KAAAG,GAAAA,OAAAH,KAAAwF,GAAAA,IAAA0B,UAAAvG,OAAA,EAAAkD,YAAAsxK,IAAA,GAAAA,IAAAtxK,EAAAA,EAAAA,EAAA1D,EAAA0D,EAAA2B,GAAA3B,YAAAuxK,IAAAC,GAAAxxK,EAAA2B,EAAA3B,EAAApE,EAAAoE,EAAAnE,GAAA21K,IAAAxxK,EAAAyxK,IAAAzxK,EAAA4qK,GAAA8G,IAAA1xK,IAAAjD,EAAAiD,EAAAD,EAAAC,EAAAnE,IAAA8F,EAAA3B,EAAApE,EAAAoE,EAAAnE,GAAA,GAAAy1K,IAAAtxK,EAAA1D,EAAAqF,GAYA,QAAAgwK,IAAA3xK,EAAA1D,EAAAqF,GAGA,MAFAqM,OAAAhO,KAAAA,EAAA,GACAgO,MAAA1R,KAAAA,EAAA,GACA,GAAAi1K,IAAA5vK,EAAA4E,KAAAmd,IAAA1jB,GAAA4xK,IAAAt1K,EAAAiK,KAAAgvH,IAAAv1H,GAAA1D,GAGA,QAAAi1K,IAAA5vK,EAAA/F,EAAAC,GACA,MAAAM,gBAAAo1K,KAAAp1K,KAAAwF,GAAAA,EAAAxF,KAAAP,GAAAA,OAAAO,KAAAN,GAAAA,IAAAwH,UAAAvG,OAAA,EAAA6E,YAAA4vK,IAAA,GAAAA,IAAA5vK,EAAAA,EAAAA,EAAA/F,EAAA+F,EAAA9F,GAAA8F,YAAA2vK,IAAAK,GAAAhwK,EAAA3B,EAAA2B,EAAArF,EAAAqF,EAAAA,GAAA8vK,IAAA9vK,EAAA0vK,GAAA1vK,IAAA5E,EAAA4E,EAAA5B,EAAA4B,EAAA9F,GAAA,GAAA01K,IAAA5vK,EAAA/F,EAAAC,GAcA,QAAAg2K,IAAAlwK,EAAA/F,EAAAC,GACA,GAAAwU,IAAA1O,EAAA,IAAA,IAAA6M,EAAA6B,EAAAzU,EAAA,IAAA0U,EAAAD,EAAAxU,EAAA,GAIA,OAHA2S,GAAAsjK,GAAAtjK,GAAAujK,GACA1hK,EAAAyhK,GAAAzhK,GAAA2hK,GACA1hK,EAAAwhK,GAAAxhK,GAAA2hK,GACA,GAAAZ,IAAAa,GAAA,UAAA1jK,EAAA,UAAA6B,EAAA,SAAAC,GAAA4hK,IAAA,QAAA1jK,EAAA,UAAA6B,EAAA,QAAAC,GAAA4hK,GAAA,SAAA1jK,EAAA,SAAA6B,EAAA,UAAAC,IAEA,QAAAkhK,IAAA7vK,EAAA/F,EAAAC,GACA,MAAA8F,GAAA,EAAA,GAAA2vK,IAAA/qK,KAAA4rK,MAAAt2K,EAAAD,GAAAw2K,GAAA7rK,KAAA64J,KAAAxjK,EAAAA,EAAAC,EAAAA,GAAA8F,GAAA,GAAA2vK,IAAA7nF,IAAAA,IAAA9nF,GAEA,QAAAmwK,IAAAtjK,GACA,MAAAA,GAAA,WAAAA,EAAAA,EAAAA,GAAAA,EAAA,EAAA,IAAA,SAEA,QAAA6jK,IAAA7jK,GACA,MAAAA,GAAA,QAAAjI,KAAAs1H,IAAArtH,EAAA,EAAA,GAAA,SAAAA,EAAA,EAAA,GAEA,QAAA0jK,IAAAn1K,GACA,MAAAwJ,MAAAs0B,MAAA,KAAA99B,GAAA,OAAA,MAAAA,EAAA,MAAAwJ,KAAAs1H,IAAA9+H,EAAA,EAAA,KAAA,OAGA,QAAAs0K,IAAAt0K,EAAAgD,EAAAlE,GACA,MAAAM,gBAAAk1K,KAAAl1K,KAAAY,IAAAA,EAAAZ,KAAA4D,IAAAA,OAAA5D,KAAAN,IAAAA,IAAAwH,UAAAvG,OAAA,EAAAC,YAAAs0K,IAAA,GAAAA,IAAAt0K,EAAAA,EAAAA,EAAAgD,EAAAhD,EAAAlB,GAAAo1K,GAAA,GAAAl0K,EAAAs0K,GAAAF,IAAA,GAAAE,IAAAt0K,EAAAgD,EAAAlE,GAEA,QAAAy2K,IAAA7iK,GACA,MAAA,IAAA4hK,IAAA5hK,GAAA,GAAAA,GAAA,EAAA,IAAA,IAAAA,GAEA,QAAA8iK,IAAA9iK,GACA,MAAA6iK,IAAA7iK,GAAA,GAsBA,QAAA+iK,IAAAvlK,GACA,MAAAA,GAAA,GAAA,IAAA1G,KAAAC,IAAA,EAAAyG,GAAAL,SAAA,IAAArG,KAAAkvD,IAAA,IAAAxoD,GAAAL,SAAA,IAEA,QAAAqkK,IAAA/oI,EAAAwpI,EAAAe,GACA,GAAAj2C,GAAAC,EAAAlS,EAAAxtH,EAAA,EAAAgD,EAAA,EAAAlE,EAAA,CAEA,IADA2gI,EAAA,mBAAAj8H,KAAA2nC,EAAAA,EAAA9qC,eAGA,OADAq/H,EAAAD,EAAA,GAAAnwH,MAAA,KACAmwH,EAAA,IACA,IAAA,MAEA,MAAAi2C,GAAA5rK,WAAA41H,EAAA,IAAA51H,WAAA41H,EAAA,IAAA,IAAA51H,WAAA41H,EAAA,IAAA,IAGA,KAAA,MAEA,MAAAi1C,GAAAgB,GAAAj2C,EAAA,IAAAi2C,GAAAj2C,EAAA,IAAAi2C,GAAAj2C,EAAA,KAIA,OAAAlS,EAAAooD,GAAAxxK,IAAA+mC,IACAwpI,EAAAnnD,EAAAxtH,EAAAwtH,EAAAxqH,EAAAwqH,EAAA1uH,IAEA,MAAAqsC,GAAA,MAAAA,EAAAtX,OAAA,IAAA5iB,MAAAu8G,EAAA1kG,SAAAqiB,EAAAtpC,MAAA,GAAA,OACA,IAAAspC,EAAAprC,QACAC,GAAA,KAAAwtH,IAAA,EACAxtH,GAAAA,GAAA,EACAgD,EAAA,IAAAwqH,EACAxqH,GAAAA,GAAA,EACAlE,EAAA,GAAA0uH,EACA1uH,GAAAA,GAAA,GACA,IAAAqsC,EAAAprC,SACAC,GAAA,SAAAwtH,IAAA,GACAxqH,GAAA,MAAAwqH,IAAA,EACA1uH,EAAA,IAAA0uH,IAGAmnD,EAAA30K,EAAAgD,EAAAlE,IAEA,QAAAq1K,IAAAn0K,EAAAgD,EAAAlE,GACA,GAAAmE,GAAA0E,EAAA+wD,EAAAlvD,KAAAkvD,IAAA14D,GAAA,IAAAgD,GAAA,IAAAlE,GAAA,KAAA2K,EAAAD,KAAAC,IAAAzJ,EAAAgD,EAAAlE,GAAAQ,EAAAmK,EAAAivD,EAAA9zD,GAAA6E,EAAAivD,GAAA,CASA,OARAp5D,IACAqI,EAAA/C,EAAA,GAAAtF,GAAAmK,EAAAivD,GAAAp5D,GAAA,EAAAmK,EAAAivD,GACAz1D,EAAAjD,GAAAyJ,GAAAzG,EAAAlE,GAAAQ,GAAA0D,EAAAlE,EAAA,EAAA,GAAAkE,GAAAyG,GAAA3K,EAAAkB,GAAAV,EAAA,GAAAU,EAAAgD,GAAA1D,EAAA,EACA2D,GAAA,KAEAA,EAAAypF,IACA/kF,EAAA/C,EAAA,GAAAA,EAAA,EAAA,EAAA3B,GAEA,GAAAgxK,IAAAhxK,EAAA0E,EAAA/C,GAEA,QAAA8vK,IAAA10K,EAAAgD,EAAAlE,GACAkB,EAAA61K,GAAA71K,GACAgD,EAAA6yK,GAAA7yK,GACAlE,EAAA+2K,GAAA/2K,EACA,IAAA2S,GAAA6jK,IAAA,SAAAt1K,EAAA,SAAAgD,EAAA,SAAAlE,GAAAk2K,IAAA1hK,EAAAgiK,IAAA,SAAAt1K,EAAA,SAAAgD,EAAA,QAAAlE,GAAAm2K,IAAA1hK,EAAA+hK,IAAA,SAAAt1K,EAAA,QAAAgD,EAAA,SAAAlE,GAAAo2K,GACA,OAAAV,IAAA,IAAAlhK,EAAA,GAAA,KAAA7B,EAAA6B,GAAA,KAAAA,EAAAC,IAEA,QAAAsiK,IAAA71K,GACA,OAAAA,GAAA,MAAA,OAAAA,EAAA,MAAAwJ,KAAAs1H,KAAA9+H,EAAA,MAAA,MAAA,KAEA,QAAA21K,IAAAp2K,GACA,GAAAwD,GAAA+G,WAAAvK,EACA,OAAA,MAAAA,EAAAs0B,OAAAt0B,EAAAQ,OAAA,GAAAyJ,KAAAs0B,MAAA,KAAA/6B,GAAAA,EA2JA,QAAA+yK,IAAA5lK,GACA,MAAA,kBAAAA,GAAAA,EAAA,WACA,MAAAA,IAKA,QAAA6lK,IAAAtmJ,GACA,MAAA,UAAAhE,EAAA1c,EAAA6pI,GAGA,MAFA,KAAAtyI,UAAAvG,QAAA,kBAAAgP,KAAA6pI,EAAA7pI,EACAA,EAAA,MACAinK,GAAAvqJ,EAAA1c,EAAA0gB,EAAAmpH,IAGA,QAAAo9B,IAAAvqJ,EAAA1c,EAAA0gB,EAAAmpH,GAMA,QAAA/a,KACA,GAAAt+G,GAAAqN,EAAAuxG,EAAAvxG,MACA,KAAAA,GAAAqpJ,GAAA93C,IAAAvxG,GAAA,KAAAA,EAAA,KAAA,MAAAA,EAAA,CACA,IACArN,EAAAkQ,EAAAhvB,KAAA+tB,EAAA2vG,GACA,MAAA58H,GAEA,WADA6c,GAAA5O,MAAA/O,KAAA+tB,EAAAjtB,GAGA6c,EAAA4B,KAAAvf,KAAA+tB,EAAAjP,OAEAnB,GAAA5O,MAAA/O,KAAA+tB,EAAA2vG,GAhBA,GAAA3vG,MAAApQ,EAAAyvJ,GAAAzvJ,SAAA,aAAA,WAAA,OAAA,SAAAoP,KAAA2wG,EAAA,GAAA1vG,gBAAAa,EAAA,IAwEA,QAvEAlwB,KAAA82K,gBAAA,mBAAA/3C,KAAA,oBAAAt9H,KAAA4qB,KAAA0yG,EAAA,GAAA+3C,iBACA,UAAA/3C,GAAAA,EAAAjvG,OAAAivG,EAAAhvG,QAAA0uG,EAAAM,EAAA9uG,mBAAA,WACA8uG,EAAA7hH,WAAA,GAAAuhH,KAgBAM,EAAAg4C,WAAA,SAAA3vK,GACA,GAAAxB,GAAA6oK,GAAArnK,KACAqnK,IAAArnK,MAAAA,CACA,KACA4X,EAAAzQ,SAAAlN,KAAA+tB,EAAA2vG,GACA,QACA0vC,GAAArnK,MAAAxB,IAGAwpB,EAAArW,OAAA,SAAA8D,EAAAvJ,GAEA,MADAuJ,IAAAA,EAAA,IAAA5b,cACAiG,UAAAvG,OAAA,EAAAytB,EAAAvR,IACA,MAAAvJ,QAAA8a,GAAAvR,GAAAuR,EAAAvR,GAAAvJ,EAAA,GACA8b,IAEAA,EAAAzf,SAAA,SAAA2D,GACA,MAAApM,WAAAvG,QACAgP,EAAA,MAAA2D,EAAA,KAAAA,EAAA,GACA8b,GAFAzf,GAIAyf,EAAAc,aAAA,SAAA5c,GACA,MAAApM,WAAAvG,QACAuvB,EAAA5c,EACA8b,GAFAc,GAIAd,EAAAiB,SAAA,SAAA/c,GAEA,MADA+c,GAAA/c,EACA8b,IAEA,MAAA,QAAAspH,QAAA,SAAA3qH,GACAqB,EAAArB,GAAA,WACA,MAAAqB,GAAAZ,KAAAhsB,MAAA4sB,GAAArB,GAAAhiB,OAAA4mK,GAAAzrK,gBAGAkoB,EAAAZ,KAAA,SAAAT,EAAA1d,EAAAmpI,GAIA,GAHA,IAAAtyI,UAAAvG,QAAA,kBAAA0P,KAAAmpI,EAAAnpI,EAAAA,EAAA,MACA0uH,EAAApvG,KAAA5B,EAAA1B,GAAA,GACA,MAAA1c,GAAA,UAAAye,KAAAA,EAAA,OAAAze,EAAA,QACAovH,EAAAnxG,iBAAA,IAAA,GAAA/Q,KAAAuR,GAAA2wG,EAAAnxG,iBAAA/Q,EAAAuR,EAAAvR,GAQA,OAPA,OAAAlN,GAAAovH,EAAAlxG,kBAAAkxG,EAAAlxG,iBAAAle,GACA,MAAAugB,IAAA6uG,EAAA7uG,aAAAA,GACA,MAAAspH,GAAApqH,EAAA1L,GAAA,QAAA81H,GAAA91H,GAAA,OAAA,SAAAq7G,GACAya,EAAA,KAAAza,KAEA//G,EAAAg4J,WAAA31K,KAAA+tB,EAAA2vG,GACAA,EAAAvwG,KAAA,MAAAne,EAAA,KAAAA,GACA+e,GAEAA,EAAAtB,MAAA,WAEA,MADAixG,GAAAjxG,QACAsB,GAEAq/I,GAAAwI,OAAA7nJ,EAAApQ,EAAA,MACA,MAAAw6H,EAAApqH,EAAAA,EAAApqB,IAAAkyK,GAAA19B,IAEA,QAAA09B,IAAA19B,GACA,MAAA,KAAAA,EAAA74I,OAAA,SAAAyP,EAAA2uH,GACAya,EAAA,MAAAppI,EAAA2uH,EAAA,OACAya,EAEA,QAAAq9B,IAAA93C,GACA,GAAAl+H,GAAAk+H,EAAA7uG,YACA,OAAArvB,IAAA,SAAAA,EAAAk+H,EAAA1uG,SAAA0uG,EAAA5uG,aAgHA,QAAAgnJ,IAAA39B,EAAA3wH,EAAAtmB,GACA,GAAAoD,GAAAuB,UAAAvG,MACAgF,GAAA,IAAAkjB,EAAA,GACAljB,EAAA,IAAApD,EAAA0P,KAAAzG,MACA,IAAAmnC,GAAApwC,EAAAsmB,EAAApa,GACAtO,EAAAq5I,EACA5oI,EAAA+hC,EACAhtC,EAAA,KASA,OAPAyxK,IAAAA,GAAAzxK,EAAA8I,EAAA4oK,GAAA5oK,EACA2oK,GAAA3oK,EACA6oK,KACAC,GAAAzuJ,aAAAyuJ,IACAD,GAAA,EACAE,GAAAC,KAEAhpK,EAEA,QAAAgpK,MACA,GAAAjsK,GAAAksK,KAAA7uJ,EAAA8uJ,KAAAnsK,CACAqd,GAAA,IACAtC,SAAAsC,KACAC,aAAAyuJ,IACAA,GAAArsK,WAAAusK,GAAA5uJ,IAEAyuJ,GAAA,IAEAA,GAAA,EACAE,GAAAC,KAOA,QAAAC,MAEA,IADA,GAAAlsK,GAAAyG,KAAAzG,MAAAiD,EAAA4oK,GACA5oK,GACAjD,GAAAiD,EAAAmC,GAAAnC,EAAAtO,EAAAqL,EAAAiD,EAAAmC,KAAAnC,EAAAtO,EAAA,MACAsO,EAAAA,EAAA9I,CAEA,OAAA6F,GAEA,QAAAmsK,MAEA,IADA,GAAAxiD,GAAAuL,EAAA22C,GAAA1kI,EAAA3L,EAAAA,EACA05F,GACAA,EAAAvgI,GACAugI,EAAA9vH,EAAA+hC,IAAAA,EAAA+tF,EAAA9vH,GACA8vH,GAAAvL,EAAAuL,GAAA/6H,GAEA+6H,EAAAvL,EAAAA,EAAAxvH,EAAA+6H,EAAA/6H,EAAA0xK,GAAA32C,EAAA/6H,CAIA,OADAyxK,IAAAjiD,EACAxiF,EAEA,QAAAilI,IAAAvlK,EAAApS,GACA,MAAAA,IAAAoS,EAAAjI,KAAA4vE,KAAA5vE,KAAAmmC,IAAAl+B,GAAAjI,KAAAytK,MAAA,GAgBA,QAAAC,IAAA53K,EAAAqB,GACA,GAAA2C,GAAAkG,KAAAs1H,IAAA,GAAA,EAAA5iG,GAAA,EAAAv7B,GACA,QACAw2K,MAAAx2K,EAAA,EAAA,SAAArB,GACA,MAAAA,GAAAgE,GACA,SAAAhE,GACA,MAAAA,GAAAgE,GAEAk1I,OAAAl5I,GAGA,QAAA83K,IAAAC,GACA,GAAAC,GAAAD,EAAAE,QAAAC,EAAAH,EAAAI,UAAAC,EAAAL,EAAAM,SAAAC,EAAAP,EAAAQ,SAAAC,EAAAJ,GAAAF,EAAA,SAAA9kK,EAAA7J,GAEA,IADA,GAAAlI,GAAA+R,EAAA3S,OAAAiQ,KAAA5M,EAAA,EAAAJ,EAAA00K,EAAA,GAAA33K,EAAA,EACAY,EAAA,GAAAqC,EAAA,IACAjD,EAAAiD,EAAA,EAAA6F,IAAA7F,EAAAwG,KAAAC,IAAA,EAAAZ,EAAA9I,IACAiQ,EAAArK,KAAA+M,EAAAkhB,UAAAjzB,GAAAqC,EAAArC,EAAAqC,OACAjD,GAAAiD,EAAA,GAAA6F,KACA7F,EAAA00K,EAAAt0K,GAAAA,EAAA,GAAAs0K,EAAA33K,OAEA,OAAAiQ,GAAA2K,UAAA3M,KAAAwpK,IACAxK,CACA,OAAA,UAAA+K,GACA,GAAA72K,GAAA82K,GAAAx0K,KAAAu0K,GAAA7gD,EAAAh2H,EAAA,IAAA,IAAAs7E,EAAAt7E,EAAA,IAAA,IAAA+2K,EAAA/2K,EAAA,IAAA,IAAAs3I,EAAAt3I,EAAA,IAAA,GAAAg3K,EAAAh3K,EAAA,GAAA2H,GAAA3H,EAAA,GAAAi3K,EAAAj3K,EAAA,GAAAk3K,EAAAl3K,EAAA,GAAAjB,EAAAiB,EAAA,GAAAi2K,EAAA,EAAAz+H,EAAA,GAAA40E,EAAA,GAAAnzB,GAAA,EAAAk+E,GAAA,CAMA,QALAD,IAAAA,GAAAA,EAAAxkJ,UAAA,KACAskJ,GAAA,MAAAhhD,GAAA,MAAA16C,KACA07F,EAAAhhD,EAAA,IACA16C,EAAA,KAEAv8E,GACA,IAAA,IACAk4K,GAAA,EACAl4K,EAAA,GACA,MAEA,KAAA,IACAk3K,EAAA,IACA7pD,EAAA,IACArtH,EAAA,GACA,MAEA,KAAA,IACAk3K,EAAA,IACA7pD,EAAA,IACArtH,EAAA,GACA,MAEA,KAAA,IACA,IAAA,IACA,IAAA,IACA,IAAA,IACA,MAAAu4I,IAAA9/F,EAAA,IAAAz4C,EAAAI,cAEA,KAAA,IACAg4K,GAAA,CAEA,KAAA,IACAl+E,GAAA,EACAi+E,EAAA,CACA,MAEA,KAAA,IACAjB,GAAA,EACAl3K,EAAA,IAGA,MAAAu4I,IAAA9/F,EAAAk/H,EAAA,GAAAtqD,EAAAsqD,EAAA,IACA,KAAA33K,GAAAm4K,IAAAn4K,EAAA,KACA,MAAAm4K,IACA,KAAAn4K,EAAAm4K,EAAA5uK,KAAAC,IAAA,EAAAD,KAAAkvD,IAAA,GAAA0/G,IAAA,KAAAn4K,GAAA,KAAAA,IAAAm4K,EAAA5uK,KAAAC,IAAA,EAAAD,KAAAkvD,IAAA,GAAA0/G,MAEAn4K,EAAAq4K,GAAAl0K,IAAAnE,IAAAs4K,EACA,IAAAC,GAAAN,GAAAC,CACA,OAAA,UAAAzlK,GACA,GAAA+lK,GAAAnrD,CACA,IAAAnzB,GAAAznF,EAAA,EAAA,MAAA,EACA,IAAAgmK,GAAAhmK,EAAA,GAAA,IAAAA,GAAA,EAAAA,EAAA,GAAAA,GAAAA,EAAA,KAAA,MAAAulK,EAAA,GAAAA,CACA,IAAAd,EAAA,EAAA,CACA,GAAAzzK,GAAAmqK,GAAA8K,aAAAjmK,EAAA0lK,EACA1lK,GAAAhP,EAAAyzK,MAAAzkK,GACA+lK,EAAA/0K,EAAA80I,OAAAlrB,MAEA56G,IAAAykK,CAEAzkK,GAAAzS,EAAAyS,EAAA0lK,EACA,IAAA/0J,GAAAC,EAAA3iB,EAAA+R,EAAA67B,YAAA,IACA,IAAA5tC,EAAA,EAAA,CACA,GAAAyC,GAAAi1K,EAAA3lK,EAAA67B,YAAA,MAAA,CACAnrC,GAAA,GAAAigB,EAAA3Q,EAAA4Q,EAAA,KAAAD,EAAA3Q,EAAAkhB,UAAA,EAAAxwB,GAAAkgB,EAAA5Q,EAAAkhB,UAAAxwB,QAEAigB,GAAA3Q,EAAAkhB,UAAA,EAAAjzB,GACA2iB,EAAAg0J,EAAA5kK,EAAAkhB,UAAAjzB,EAAA,IAEAu3K,GAAAC,IAAA90J,EAAAy0J,EAAAz0J,EAAA+iB,EAAAA,GACA,IAAArmC,GAAA24C,EAAA34C,OAAAsjB,EAAAtjB,OAAAujB,EAAAvjB,QAAAy4K,EAAA,EAAAE,EAAA34K,QAAAimB,EAAAjmB,EAAA8I,EAAA,GAAAsD,OAAApM,EAAA8I,EAAA9I,EAAA,GAAAiO,KAAAkpH,GAAA,EAIA,OAHAshD,KAAAn1J,EAAAy0J,EAAA9xJ,EAAA3C,EAAA2C,EAAAjmB,OAAA8I,EAAAya,EAAAvjB,OAAAqmC,EAAAA,IACAsyI,GAAAhgI,EACAhmC,EAAA2Q,EAAAC,GACA,MAAAk5D,EAAAk8F,EAAAhmK,EAAAsT,EAAA,MAAAw2D,EAAAx2D,EAAA0yJ,EAAAhmK,EAAA,MAAA8pE,EAAAx2D,EAAA4N,UAAA,EAAA7zB,IAAA,GAAA24K,EAAAhmK,EAAAsT,EAAA4N,UAAA7zB,GAAA24K,GAAAF,EAAA9lK,EAAAsT,EAAAtT,IAAA+lK,IAkCA,QAAAF,IAAA9mK,GACA,MAAAA,GAAA,GAGA,QAAAmnK,MACAx5K,KAAAoD,EAAA,GAAA6O,MAAA/K,UAAAvG,OAAA,EAAAsR,KAAAwnK,IAAAj3K,MAAAxC,KAAAkH,WAAAA,UAAA,IAiEA,QAAAwyK,IAAAj6H,EAAAv4B,EAAA84H,GACA,QAAAthH,GAAAsM,GACA,GAAA2uI,GAAAl6H,EAAAzU,GAAAwD,EAAAvd,EAAA0oJ,EAAA,EACA,OAAA3uI,GAAA2uI,EAAAnrI,EAAAxD,EAAA2uI,EAAAnrI,EAEA,QAAAwrC,GAAAhvC,GAEA,MADA9jB,GAAA8jB,EAAAyU,EAAA,GAAAm6H,IAAA5uI,EAAA,IAAA,GACAA,EAEA,QAAA/Z,GAAA+Z,EAAA9mC,GAEA,MADAgjB,GAAA8jB,EAAA,GAAA4uI,KAAA5uI,GAAA9mC,GACA8mC,EAEA,QAAAid,GAAAktE,EAAAuL,EAAApgB,GACA,GAAA3tE,GAAAqnC,EAAAm7C,GAAA0kD,IACA,IAAAv5D,EAAA,EACA,KAAA3tE,EAAA+tF,GACAsf,EAAArtG,GAAA2tE,GAAAu5D,EAAAtzK,KAAA,GAAA0L,OAAA0gC,IACAzrB,EAAAyrB,EAAA,OAGA,MAAAA,EAAA+tF,GAAAm5C,EAAAtzK,KAAA,GAAA0L,OAAA0gC,IAAAzrB,EAAAyrB,EAAA,EAEA,OAAAknI,GAEA,QAAAC,GAAA3kD,EAAAuL,EAAApgB,GACA,IACAs5D,GAAAJ,EACA,IAAAO,GAAA,GAAAP,GAEA,OADAO,GAAA32K,EAAA+xH,EACAltE,EAAA8xH,EAAAr5C,EAAApgB,GACA,QACAs5D,GAAA3nK,MAGAwtC,EAAA5W,MAAA4W,EACAA,EAAA/gB,MAAAA,EACA+gB,EAAAu6B,KAAAA,EACAv6B,EAAAxuB,OAAAA,EACAwuB,EAAAwI,MAAAA,CACA,IAAA8xH,GAAAt6H,EAAAs6H,IAAAC,GAAAv6H,EAMA,OALAs6H,GAAAlxI,MAAAkxI,EACAA,EAAAr7I,MAAAs7I,GAAAt7I,GACAq7I,EAAA//F,KAAAggG,GAAAhgG,GACA+/F,EAAA9oJ,OAAA+oJ,GAAA/oJ,GACA8oJ,EAAA9xH,MAAA6xH,EACAr6H,EAEA,QAAAu6H,IAAAjsJ,GACA,MAAA,UAAAid,EAAA9mC,GACA,IACA01K,GAAAJ,EACA,IAAAO,GAAA,GAAAP,GAEA,OADAO,GAAA32K,EAAA4nC,EACAjd,EAAAgsJ,EAAA71K,GAAAd,EACA,QACAw2K,GAAA3nK,OAoDA,QAAAgoK,IAAAhC,GAEA,QAAAiC,GAAA78I,GAEA,QAAA0O,GAAAf,GAEA,IADA,GAAA7qC,GAAAF,EAAA0D,EAAAowD,KAAAxyD,GAAA,EAAAyC,EAAA,IACAzC,EAAAoE,GACA,KAAA03B,EAAA5nB,WAAAlU,KACAwyD,EAAAxtD,KAAA82B,EAAA56B,MAAAuB,EAAAzC,IACA,OAAAtB,EAAAk6K,GAAAh6K,EAAAk9B,EAAA5I,SAAAlzB,OAAApB,EAAAk9B,EAAA5I,SAAAlzB,KACAoC,EAAAy2K,EAAAj6K,MAAAA,EAAAwD,EAAAqnC,EAAA,MAAA/qC,EAAA,MAAAE,EAAA,IAAA,IAAAF,IACA8zD,EAAAxtD,KAAApG,GACA6D,EAAAzC,EAAA,EAIA,OADAwyD,GAAAxtD,KAAA82B,EAAA56B,MAAAuB,EAAAzC,IACAwyD,EAAAnlD,KAAA,IAbA,GAAAjJ,GAAA03B,EAAA18B,MAwCA,OAzBAorC,GAAA5oC,MAAA,SAAA4wD,GACA,GAAA7zD,IACAgU,EAAA,KACAxO,EAAA,EACAxF,EAAA,EACAsU,EAAA,EACA5S,EAAA,EACAc,EAAA,EACAX,EAAA,EACAuB,EAAA,MACA/B,EAAA84K,EAAAn6K,EAAAm9B,EAAA02B,EAAA,EACA,IAAAxyD,GAAAwyD,EAAApzD,OAAA,MAAA,KACA,MAAAT,KAAAA,EAAAsU,EAAAtU,EAAAsU,EAAA,GAAA,GAAAtU,EAAAD,EACA,IAAAq6K,GAAA,MAAAp6K,EAAAoD,GAAAs2K,KAAAJ,GAAAxuI,EAAA,IAAAsvI,EAAAd,GAAAI,GAOA,OANA,KAAA15K,GAAA8qC,EAAAuvI,YAAAr6K,EAAAgU,EAAA,EAAAhU,EAAA8D,GAAA,KAAA9D,IAAA,KAAAA,IACA,KAAAA,KAAAA,EAAAQ,EAAA,KAAAR,GAAA,EAAA,GACA8qC,EAAAuvI,YAAAr6K,EAAAgU,EAAA,EAAA,GACA82B,EAAAuvI,YAAAr6K,EAAAgU,EAAA,EAAA,KAAAhU,IAAAA,EAAAQ,EAAA,GAAA,EAAA,EAAAR,EAAA6E,GAAAimC,EAAAwvI,SAAA,GAAA,EAAAt6K,EAAAQ,EAAA,EAAAR,EAAA4U,GAAAk2B,EAAAwvI,SAAA,GAAA,IACAxvI,EAAAuvI,YAAAr6K,EAAAgU,EAAAhU,EAAAwF,EAAAxF,EAAAA,GACA8qC,EAAAyvI,SAAAv6K,EAAAsU,GAAAtU,EAAAoD,EAAA,IAAA,GAAApD,EAAA0B,EAAA1B,EAAAoD,EAAA,IAAApD,EAAAwC,EAAAxC,EAAA6B,GACAu4K,EAAAtvI,EAAA5nC,EAAA4nC,GAEAe,EAAAt7B,SAAA,WACA,MAAA4sB,IAEA0O,EAEA,QAAAsuI,GAAArvI,EAAA3N,EAAA02B,EAAA/vD,GAEA,IADA,GAAA7D,GAAAF,EAAA2Q,EAAArP,EAAA,EAAAoE,EAAA03B,EAAA18B,OAAA+E,EAAAquD,EAAApzD,OACAY,EAAAoE,GAAA,CACA,GAAA3B,GAAA0B,EAAA,OAAA,CAEA,IADAvF,EAAAk9B,EAAA5nB,WAAAlU,KACA,KAAApB,GAGA,GAFAyQ,EAAAysB,EAAA5I,OAAAlzB,KACAtB,EAAAy6K,EAAA9pK,IAAAupK,IAAA98I,EAAA5I,OAAAlzB,KAAAqP,IACA3Q,IAAA+D,EAAA/D,EAAA+qC,EAAA+oB,EAAA/vD,IAAA,EAAA,OAAA,MACA,IAAA7D,GAAA4zD,EAAAt+C,WAAAzR,KACA,OAAA,EAGA,MAAAA,GA2HA,QAAA22K,GAAA3vI,EAAA+oB,EAAAxyD,GACAq5K,EAAArrG,UAAA,CACA,IAAA5pE,GAAAi1K,EAAAx2K,KAAA2vD,EAAAtxD,MAAAlB,GACA,OAAAoE,IAAAqlC,EAAAtqC,EAAAm6K,EAAA71K,IAAAW,EAAA,GAAA1E,eAAAM,EAAAoE,EAAA,GAAAhF,SAAA,EAEA,QAAAm6K,GAAA9vI,EAAA+oB,EAAAxyD,GACAw5K,EAAAxrG,UAAA,CACA,IAAA5pE,GAAAo1K,EAAA32K,KAAA2vD,EAAAtxD,MAAAlB,GACA,OAAAoE,IAAAqlC,EAAAtqC,EAAAs6K,EAAAh2K,IAAAW,EAAA,GAAA1E,eAAAM,EAAAoE,EAAA,GAAAhF,SAAA,EAEA,QAAAs6K,GAAAjwI,EAAA+oB,EAAAxyD,GACA25K,EAAA3rG,UAAA,CACA,IAAA5pE,GAAAu1K,EAAA92K,KAAA2vD,EAAAtxD,MAAAlB,GACA,OAAAoE,IAAAqlC,EAAAtlC,EAAAy1K,EAAAn2K,IAAAW,EAAA,GAAA1E,eAAAM,EAAAoE,EAAA,GAAAhF,SAAA,EAEA,QAAAy6K,GAAApwI,EAAA+oB,EAAAxyD,GACA85K,EAAA9rG,UAAA,CACA,IAAA5pE,GAAA01K,EAAAj3K,KAAA2vD,EAAAtxD,MAAAlB,GACA,OAAAoE,IAAAqlC,EAAAtlC,EAAA41K,EAAAt2K,IAAAW,EAAA,GAAA1E,eAAAM,EAAAoE,EAAA,GAAAhF,SAAA,EAEA,QAAA46K,GAAAvwI,EAAA+oB,EAAAxyD,GACA,MAAA84K,GAAArvI,EAAAovI,EAAAj6K,EAAAsQ,WAAAsjD,EAAAxyD,GAEA,QAAAi6K,GAAAxwI,EAAA+oB,EAAAxyD,GACA,MAAA84K,GAAArvI,EAAAovI,EAAA/nK,EAAA5B,WAAAsjD,EAAAxyD,GAEA,QAAAk6K,GAAAzwI,EAAA+oB,EAAAxyD,GACA,MAAA84K,GAAArvI,EAAAovI,EAAA52K,EAAAiN,WAAAsjD,EAAAxyD,GAEA,QAAAm6K,GAAA1wI,EAAA+oB,EAAAxyD,GACA,GAAAoE,GAAAg2K,EAAA32K,IAAA+uD,EAAAtxD,MAAAlB,EAAAA,GAAA,GAAAN,cACA,OAAA,OAAA0E,GAAA,GAAAqlC,EAAA/qC,EAAA0F,EAAApE,GAnNA,GAAAq6K,GAAA3D,EAAA4D,SAAAC,EAAA7D,EAAAjtI,KAAA+wI,EAAA9D,EAAAtlI,KAAAqpI,EAAA/D,EAAAgE,QAAAC,EAAAjE,EAAAkE,KAAAC,EAAAnE,EAAAoE,UAAAC,EAAArE,EAAAsE,OAAAC,EAAAvE,EAAAwE,WA2DAvC,GAAAH,IAAA,SAAA18I,GAEA,QAAA0O,GAAAf,GACA,IACA4uI,GAAAJ,EACA,IAAAO,GAAA,GAAAH,GAEA,OADAG,GAAA32K,EAAA4nC,EACAyU,EAAAs6H,GACA,QACAH,GAAA3nK,MARA,GAAAwtC,GAAAy6H,EAAA78I,EAqBA,OAVA0O,GAAA5oC,MAAA,SAAA4wD,GACA,IACA6lH,GAAAJ,EACA,IAAAxuI,GAAAyU,EAAAt8C,MAAA4wD,EACA,OAAA/oB,IAAAA,EAAA5nC,EACA,QACAw2K,GAAA3nK,OAGA85B,EAAAt7B,SAAAgvC,EAAAhvC,SACAs7B,GAEAmuI,EAAAwC,MAAAxC,EAAAH,IAAA2C,MAAAC,EACA,IAAAhB,GAAAlN,GAAA7lK,MAAAmyK,EAAA6B,GAAAV,GAAAlB,EAAA6B,GAAAX,GAAAtB,EAAAgC,GAAAR,GAAAvB,EAAAgC,GAAAT,GAAAf,EAAAuB,GAAAN,GAAAhB,EAAAuB,GAAAP,GAAApB,EAAA0B,GAAAJ,GAAArB,EAAA0B,GAAAL,EACAR,GAAAtjC,QAAA,SAAAz4I,EAAAsB,GACAo6K,EAAAl4K,IAAAxD,EAAAgB,cAAAM,IAEA,IAAA64K,IACA36K,EAAA,SAAAS,GACA,MAAAk8K,GAAAl8K,EAAAs6K,WAEA7nK,EAAA,SAAAzS,GACA,MAAAg8K,GAAAh8K,EAAAs6K,WAEA96K,EAAA,SAAAQ,GACA,MAAAs8K,GAAAt8K,EAAA48K,aAEA/7K,EAAA,SAAAb,GACA,MAAAo8K,GAAAp8K,EAAA48K,aAEA38K,EAAA+5K,EAAA0B,GACA17K,EAAA,SAAAA,EAAAD,GACA,MAAA88K,IAAA78K,EAAA88K,UAAA/8K,EAAA,IAEAkC,EAAA,SAAAjC,EAAAD,GACA,MAAA88K,IAAA78K,EAAA88K,UAAA/8K,EAAA,IAEAuU,EAAA,SAAAtU,EAAAD,GACA,MAAA88K,IAAA78K,EAAA+8K,WAAAh9K,EAAA,IAEA2T,EAAA,SAAA1T,EAAAD,GACA,MAAA88K,IAAA78K,EAAA+8K,WAAA,IAAA,GAAAh9K,EAAA,IAEA+D,EAAA,SAAA9D,EAAAD,GACA,MAAA88K,IAAA,EAAAG,GAAAC,UAAAj9K,GAAAD,EAAA,IAEA8B,EAAA,SAAA7B,EAAAD,GACA,MAAA88K,IAAA78K,EAAAk9K,kBAAAn9K,EAAA,IAEAyF,EAAA,SAAAxF,EAAAD,GACA,MAAA88K,IAAA78K,EAAA48K,WAAA,EAAA78K,EAAA,IAEA2B,EAAA,SAAA1B,EAAAD,GACA,MAAA88K,IAAA78K,EAAAm9K,aAAAp9K,EAAA,IAEAA,EAAA,SAAAC,GACA,MAAA87K,KAAA97K,EAAA+8K,YAAA,MAEAv6K,EAAA,SAAAxC,EAAAD,GACA,MAAA88K,IAAA78K,EAAAo9K,aAAAr9K,EAAA,IAEA6U,EAAA,SAAA5U,EAAAD,GACA,MAAA88K,IAAAG,GAAAK,aAAAr9K,GAAAD,EAAA,IAEAS,EAAA,SAAAR,GACA,MAAAA,GAAAs6K,UAEAz1K,EAAA,SAAA7E,EAAAD,GACA,MAAA88K,IAAAG,GAAAM,aAAAt9K,GAAAD,EAAA,IAEAoS,EAAA6nK,EAAA4B,GACAt4K,EAAA02K,EAAA6B,GACA7nK,EAAA,SAAAhU,EAAAD,GACA,MAAA88K,IAAA78K,EAAAu9K,cAAA,IAAAx9K,EAAA,IAEAgD,EAAA,SAAA/C,EAAAD,GACA,MAAA88K,IAAA78K,EAAAu9K,cAAA,IAAAx9K,EAAA,IAEAqD,EAAAo6K,GACAC,IAAA,WACA,MAAA,MAGAjD,GACAj7K,EAAAk7K,EACAhoK,EAAAmoK,EACAp7K,EAAAu7K,EACAl6K,EAAAq6K,EACAj7K,EAAAo7K,EACAr7K,EAAA09K,GACAz7K,EAAAy7K,GACAppK,EAAAqpK,GACAjqK,EAAAiqK,GACA75K,EAAA85K,GACA/7K,EAAAg8K,GACAr4K,EAAAs4K,GACAp8K,EAAAq8K,GACAh+K,EAAAy7K,EACAh5K,EAAAw7K,GACAppK,EAAAqpK,GACAz9K,EAAA09K,GACAr5K,EAAAs5K,GACAhsK,EAAAmpK,EACAh4K,EAAAi4K,EACAvnK,EAAAoqK,GACAr7K,EAAAs7K,GACAj7K,EAAAk7K,GACAb,IAAAc,GAmCA,OAAAvE,GAOA,QAAA6C,IAAAzpK,EAAAwkH,EAAAruH,GACA,GAAAovK,GAAAvlK,EAAA,EAAA,IAAA,GAAAygD,GAAA8kH,GAAAvlK,EAAAA,GAAA,GAAA3S,EAAAozD,EAAApzD,MACA,OAAAk4K,IAAAl4K,EAAA8I,EAAA,GAAAsD,OAAAtD,EAAA9I,EAAA,GAAAiO,KAAAkpH,GAAA/jE,EAAAA,GAEA,QAAA6oH,IAAA/8C,GACA,MAAA,IAAAnrH,QAAA,OAAAmrH,EAAAj3H,IAAA6lK,GAAA4B,SAAAzhK,KAAA,KAAA,IAAA,KAEA,QAAAiuK,IAAAh9C,GAEA,IADA,GAAAj3H,GAAA,GAAAqkK,GAAA1rK,GAAA,EAAAoE,EAAAk6H,EAAAl/H,SACAY,EAAAoE,GAAAiD,EAAAnF,IAAAo8H,EAAAt+H,GAAAN,cAAAM,EACA,OAAAqH,GAEA,QAAAw1K,IAAApzI,EAAA+oB,EAAAxyD,GACAm9K,GAAAnvG,UAAA,CACA,IAAA5pE,GAAA+4K,GAAAt6K,KAAA2vD,EAAAtxD,MAAAlB,EAAAA,EAAA,GACA,OAAAoE,IAAAqlC,EAAAtqC,GAAAiF,EAAA,GAAApE,EAAAoE,EAAA,GAAAhF,SAAA,EAEA,QAAAw9K,IAAAnzI,EAAA+oB,EAAAxyD,GACAm9K,GAAAnvG,UAAA,CACA,IAAA5pE,GAAA+4K,GAAAt6K,KAAA2vD,EAAAtxD,MAAAlB,GACA,OAAAoE,IAAAqlC,EAAAl2B,GAAAnP,EAAA,GAAApE,EAAAoE,EAAA,GAAAhF,SAAA,EAEA,QAAA09K,IAAArzI,EAAA+oB,EAAAxyD,GACAm9K,GAAAnvG,UAAA,CACA,IAAA5pE,GAAA+4K,GAAAt6K,KAAA2vD,EAAAtxD,MAAAlB,GACA,OAAAoE,IAAAqlC,EAAAjmC,GAAAY,EAAA,GAAApE,EAAAoE,EAAA,GAAAhF,SAAA,EAEA,QAAA49K,IAAAvzI,EAAA+oB,EAAAxyD,GACAm9K,GAAAnvG,UAAA,CACA,IAAA5pE,GAAA+4K,GAAAt6K,KAAA2vD,EAAAtxD,MAAAlB,EAAAA,EAAA,GACA,OAAAoE,IAAAqlC,EAAA92B,GAAAvO,EAAA,GAAApE,EAAAoE,EAAA,GAAAhF,SAAA,EAEA,QAAA29K,IAAAtzI,EAAA+oB,EAAAxyD,GACAm9K,GAAAnvG,UAAA,CACA,IAAA5pE,GAAA+4K,GAAAt6K,KAAA2vD,EAAAtxD,MAAAlB,EAAAA,EAAA,GACA,OAAAoE,IAAAqlC,EAAA92B,EAAAyqK,IAAAh5K,EAAA,IAAApE,EAAAoE,EAAA,GAAAhF,SAAA,EAEA,QAAA69K,IAAAxzI,EAAA+oB,EAAAxyD,GACA,MAAA,cAAAE,KAAAsyD,EAAAA,EAAAtxD,MAAAlB,EAAAA,EAAA,KAAAypC,EAAA1nC,GAAAywD,EACAxyD,EAAA,IAAA,EAEA,QAAAo9K,IAAAz+K,GACA,MAAAA,IAAAA,EAAA,GAAA,KAAA,KAEA,QAAA89K,IAAAhzI,EAAA+oB,EAAAxyD,GACAm9K,GAAAnvG,UAAA,CACA,IAAA5pE,GAAA+4K,GAAAt6K,KAAA2vD,EAAAtxD,MAAAlB,EAAAA,EAAA,GACA,OAAAoE,IAAAqlC,EAAAtlC,EAAAC,EAAA,GAAA,EAAApE,EAAAoE,EAAA,GAAAhF,SAAA,EAEA,QAAAi9K,IAAA5yI,EAAA+oB,EAAAxyD,GACAm9K,GAAAnvG,UAAA,CACA,IAAA5pE,GAAA+4K,GAAAt6K,KAAA2vD,EAAAtxD,MAAAlB,EAAAA,EAAA,GACA,OAAAoE,IAAAqlC,EAAA9qC,GAAAyF,EAAA,GAAApE,EAAAoE,EAAA,GAAAhF,SAAA,EAEA,QAAAm9K,IAAA9yI,EAAA+oB,EAAAxyD,GACAm9K,GAAAnvG,UAAA,CACA,IAAA5pE,GAAA+4K,GAAAt6K,KAAA2vD,EAAAtxD,MAAAlB,EAAAA,EAAA,GACA,OAAAoE,IAAAqlC,EAAAhnC,GAAA2B,EAAA,GAAApE,EAAAoE,EAAA,GAAAhF,SAAA,EAEA,QAAAk9K,IAAA7yI,EAAA+oB,EAAAxyD,GACAm9K,GAAAnvG,UAAA,CACA,IAAA5pE,GAAA+4K,GAAAt6K,KAAA2vD,EAAAtxD,MAAAlB,EAAAA,EAAA,GACA,OAAAoE,IAAAqlC,EAAAx2B,GAAA7O,EAAA,GAAApE,EAAAoE,EAAA,GAAAhF,SAAA,EAEA,QAAAs9K,IAAAjzI,EAAA+oB,EAAAxyD,GACAm9K,GAAAnvG,UAAA,CACA,IAAA5pE,GAAA+4K,GAAAt6K,KAAA2vD,EAAAtxD,MAAAlB,EAAAA,EAAA,GACA,OAAAoE,IAAAqlC,EAAAppC,GAAA+D,EAAA,GAAApE,EAAAoE,EAAA,GAAAhF,SAAA,EAEA,QAAAu9K,IAAAlzI,EAAA+oB,EAAAxyD,GACAm9K,GAAAnvG,UAAA,CACA,IAAA5pE,GAAA+4K,GAAAt6K,KAAA2vD,EAAAtxD,MAAAlB,EAAAA,EAAA,GACA,OAAAoE,IAAAqlC,EAAAtoC,GAAAiD,EAAA,GAAApE,EAAAoE,EAAA,GAAAhF,SAAA,EAEA,QAAAo9K,IAAA/yI,EAAA+oB,EAAAxyD,GACAm9K,GAAAnvG,UAAA,CACA,IAAA5pE,GAAA+4K,GAAAt6K,KAAA2vD,EAAAtxD,MAAAlB,EAAAA,EAAA,GACA,OAAAoE,IAAAqlC,EAAAjpC,GAAA4D,EAAA,GAAApE,EAAAoE,EAAA,GAAAhF,SAAA,EAEA,QAAA+8K,IAAAx9K,GACA,GAAAiU,GAAAjU,EAAA0+K,oBAAAC,EAAA1qK,EAAA,EAAA,IAAA,IAAA2qK,EAAAhiJ,GAAA3oB,GAAA,GAAA,EAAA4qK,EAAAjiJ,GAAA3oB,GAAA,EACA,OAAA0qK,GAAA9B,GAAA+B,EAAA,IAAA,GAAA/B,GAAAgC,EAAA,IAAA,GAEA,QAAAN,IAAAzzI,EAAA+oB,EAAAxyD,GACAy9K,GAAAzvG,UAAA,CACA,IAAA5pE,GAAAq5K,GAAA56K,KAAA2vD,EAAAtxD,MAAAlB,EAAAA,EAAA,GACA,OAAAoE,GAAApE,EAAAoE,EAAA,GAAAhF,QAAA,EAEA,QAAAg8K,IAAApvD,GAEA,IADA,GAAA5nH,GAAA4nH,EAAA5sH,OAAAY,GAAA,IACAA,EAAAoE,GAAA4nH,EAAAhsH,GAAA,GAAAvB,KAAAutH,EAAAhsH,GAAA,GACA,OAAA,UAAAypC,GAEA,IADA,GAAAzpC,GAAA,EAAAoC,EAAA4pH,EAAAhsH,IACAoC,EAAA,GAAAqnC,IAAArnC,EAAA4pH,IAAAhsH,EACA,OAAAoC,GAAA,GAAAqnC,IAyBA,QAAAi0I,OAiBA,QAAAC,IAAAz/K,EAAAC,EAAAkG,GACA,GAAAyM,GAAAzM,EAAA2C,EAAA9I,EAAAC,EAAAy/K,EAAA9sK,EAAA5S,EAAA2/K,EAAA/sK,EAAA8sK,CACAv5K,GAAAgL,EAAAnR,EAAA2/K,GAAA1/K,EAAAy/K,GASA,QAAAE,IAAAC,EAAA/Q,GACA+Q,GAAAC,GAAA7uK,eAAA4uK,EAAAz+K,OACA0+K,GAAAD,EAAAz+K,MAAAy+K,EAAA/Q,GA2CA,QAAAiR,IAAAC,EAAAlR,EAAA11C,GACA,GAAA6mD,GAAAn+K,GAAA,EAAAoE,EAAA85K,EAAA9+K,OAAAk4H,CAEA,KADA01C,EAAAl5E,cACA9zF,EAAAoE,GAAA+5K,EAAAD,EAAAl+K,GAAAgtK,EAAAxZ,MAAA2qB,EAAA,GAAAA,EAAA,GAAAA,EAAA,GACAnR,GAAAh5E,UAEA,QAAAoqF,IAAAF,EAAAlR,GACA,GAAAhtK,IAAA,EAAAoE,EAAA85K,EAAA9+K,MAEA,KADA4tK,EAAAqR,iBACAr+K,EAAAoE,GAAA65K,GAAAC,EAAAl+K,GAAAgtK,EAAA,EACAA,GAAAsR,aAyBA,QAAAC,MAOA,QAAAC,GAAAC,EAAAC,GACAD,GAAAvK,GACAwK,EAAAA,EAAAxK,GAAA,EAAAvB,GAAA,CACA,IAAAgM,GAAAF,EAAAG,EAAAC,EAAAF,GAAA,EAAA,GAAA,EAAAG,EAAAD,EAAAF,EAAAI,EAAAl2K,KAAAmd,IAAA04J,GAAAM,EAAAn2K,KAAAgvH,IAAA6mD,GAAA/7K,EAAAs8K,EAAAD,EAAA1vK,EAAA4vK,EAAAH,EAAAp8K,EAAAkG,KAAAmd,IAAA84J,GAAAvvK,EAAA5M,EAAAk8K,EAAAh2K,KAAAgvH,IAAAinD,EACAK,IAAAr5K,IAAA+C,KAAA4rK,MAAAllK,EAAAD,IACAsvK,EAAAH,EAAAS,EAAAH,EAAAE,EAAAD,EAXA,GAAAI,GAAAC,EAAAT,EAAAM,EAAAD,CACAK,IAAA9rB,MAAA,SAAAirB,EAAAC,GACAY,GAAA9rB,MAAAgrB,EACAI,GAAAQ,EAAAX,GAAAvK,GAAAgL,EAAAr2K,KAAAmd,IAAA04J,GAAAW,EAAAX,GAAAxK,GAAA,EAAAvB,GAAA,GACAsM,EAAAp2K,KAAAgvH,IAAA6mD,IASAY,GAAAtrF,QAAA,WACAwqF,EAAAY,EAAAC,IAGA,QAAAE,IAAAC,GACA,GAAAf,GAAAe,EAAA,GAAAd,EAAAc,EAAA,GAAAT,EAAAl2K,KAAAmd,IAAA04J,EACA,QAAAK,EAAAl2K,KAAAmd,IAAAy4J,GAAAM,EAAAl2K,KAAAgvH,IAAA4mD,GAAA51K,KAAAgvH,IAAA6mD,IAEA,QAAAe,IAAAvhL,EAAAC,GACA,MAAAD,GAAA,GAAAC,EAAA,GAAAD,EAAA,GAAAC,EAAA,GAAAD,EAAA,GAAAC,EAAA,GAEA,QAAAuhL,IAAAxhL,EAAAC,GACA,OAAAD,EAAA,GAAAC,EAAA,GAAAD,EAAA,GAAAC,EAAA,GAAAD,EAAA,GAAAC,EAAA,GAAAD,EAAA,GAAAC,EAAA,GAAAD,EAAA,GAAAC,EAAA,GAAAD,EAAA,GAAAC,EAAA,IAEA,QAAAwhL,IAAAzhL,EAAAC,GACAD,EAAA,IAAAC,EAAA,GACAD,EAAA,IAAAC,EAAA,GACAD,EAAA,IAAAC,EAAA,GAEA,QAAAyhL,IAAAC,EAAAl9K,GACA,OAAAk9K,EAAA,GAAAl9K,EAAAk9K,EAAA,GAAAl9K,EAAAk9K,EAAA,GAAAl9K,GAEA,QAAAm9K,IAAAnhL,GACA,GAAAsF,GAAA4E,KAAA64J,KAAA/iK,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GACAA,GAAA,IAAAsF,EACAtF,EAAA,IAAAsF,EACAtF,EAAA,IAAAsF,EAEA,QAAA87K,IAAAC,GACA,OAAAn3K,KAAA4rK,MAAAuL,EAAA,GAAAA,EAAA,IAAAnN,GAAAmN,EAAA,KAEA,QAAAC,IAAA/hL,EAAAC,GACA,MAAAo9B,IAAAr9B,EAAA,GAAAC,EAAA,IAAA+hL,IAAA3kJ,GAAAr9B,EAAA,GAAAC,EAAA,IAAA+hL,GA2JA,QAAAC,IAAA1B,EAAAC,GACAD,GAAAvK,EACA,IAAA6K,GAAAl2K,KAAAmd,IAAA04J,GAAAxK,GACAkM,IAAArB,EAAAl2K,KAAAmd,IAAAy4J,GAAAM,EAAAl2K,KAAAgvH,IAAA4mD,GAAA51K,KAAAgvH,IAAA6mD,IAEA,QAAA0B,IAAAtvK,EAAA6B,EAAAC,KACAytK,GACAC,KAAAxvK,EAAAwvK,IAAAD,GACAE,KAAA5tK,EAAA4tK,IAAAF,GACAG,KAAA5tK,EAAA4tK,IAAAH,GAEA,QAAAI,MAWA,QAAAjC,GAAAC,EAAAC,GACAD,GAAAvK,EACA,IAAA6K,GAAAl2K,KAAAmd,IAAA04J,GAAAxK,IAAApjK,EAAAiuK,EAAAl2K,KAAAmd,IAAAy4J,GAAA9rK,EAAAosK,EAAAl2K,KAAAgvH,IAAA4mD,GAAA7rK,EAAA/J,KAAAgvH,IAAA6mD,GAAAv/K,EAAA0J,KAAA4rK,MAAA5rK,KAAA64J,MAAAviK,EAAAuhL,EAAA9tK,EAAA+tK,EAAAhuK,GAAAxT,GAAAA,EAAAwhL,EAAA7vK,EAAA8vK,EAAAhuK,GAAAzT,GAAAA,EAAAyhL,EAAAjuK,EAAA+tK,EAAA5vK,GAAA3R,GAAAyhL,EAAA9vK,EAAA4vK,EAAA/tK,EAAAguK,EAAA/tK;AACAiuK,IAAA1hL,EACA2hL,IAAA3hL,GAAAyhL,GAAAA,EAAA9vK,IACAiwK,IAAA5hL,GAAAuhL,GAAAA,EAAA/tK,IACAquK,IAAA7hL,GAAAwhL,GAAAA,EAAA/tK,IACAwtK,GAAAQ,EAAAF,EAAAC,GAjBA,GAAAC,GAAAF,EAAAC,CACAM,IAAAztB,MAAA,SAAAirB,EAAAC,GACAD,GAAAvK,EACA,IAAA6K,GAAAl2K,KAAAmd,IAAA04J,GAAAxK,GACA0M,GAAA7B,EAAAl2K,KAAAmd,IAAAy4J,GACAiC,EAAA3B,EAAAl2K,KAAAgvH,IAAA4mD,GACAkC,EAAA93K,KAAAgvH,IAAA6mD,GACAuC,GAAAztB,MAAAgrB,EACA4B,GAAAQ,EAAAF,EAAAC,IAYA,QAAAO,MACAD,GAAAztB,MAAA2sB,GAEA,QAAAgB,MAiBA,QAAA3C,GAAAC,EAAAC,GACAD,GAAAvK,EACA,IAAA6K,GAAAl2K,KAAAmd,IAAA04J,GAAAxK,IAAApjK,EAAAiuK,EAAAl2K,KAAAmd,IAAAy4J,GAAA9rK,EAAAosK,EAAAl2K,KAAAgvH,IAAA4mD,GAAA7rK,EAAA/J,KAAAgvH,IAAA6mD,GAAA0C,EAAAV,EAAA9tK,EAAA+tK,EAAAhuK,EAAA0uK,EAAAV,EAAA7vK,EAAA8vK,EAAAhuK,EAAA0uK,EAAAV,EAAAjuK,EAAA+tK,EAAA5vK,EAAA3M,EAAA0E,KAAA64J,KAAA0f,EAAAA,EAAAC,EAAAA,EAAAC,EAAAA,GAAAhyK,EAAAsxK,EAAA9vK,EAAA4vK,EAAA/tK,EAAAguK,EAAA/tK,EAAArD,EAAApL,IAAAuuK,GAAApjK,GAAAnL,EAAAhF,EAAA0J,KAAA4rK,MAAAtwK,EAAAmL,EACAiyK,KAAAhyK,EAAA6xK,EACAI,IAAAjyK,EAAA8xK,EACAI,IAAAlyK,EAAA+xK,EACAT,IAAA1hL,EACA2hL,IAAA3hL,GAAAyhL,GAAAA,EAAA9vK,IACAiwK,IAAA5hL,GAAAuhL,GAAAA,EAAA/tK,IACAquK,IAAA7hL,GAAAwhL,GAAAA,EAAA/tK,IACAwtK,GAAAQ,EAAAF,EAAAC,GA1BA,GAAAvB,GAAAC,EAAAuB,EAAAF,EAAAC,CACAM,IAAAztB,MAAA,SAAAirB,EAAAC,GACAU,EAAAX,EAAAY,EAAAX,EACAuC,GAAAztB,MAAAgrB,EACAC,GAAAvK,EACA,IAAA6K,GAAAl2K,KAAAmd,IAAA04J,GAAAxK,GACA0M,GAAA7B,EAAAl2K,KAAAmd,IAAAy4J,GACAiC,EAAA3B,EAAAl2K,KAAAgvH,IAAA4mD,GACAkC,EAAA93K,KAAAgvH,IAAA6mD,GACA0B,GAAAQ,EAAAF,EAAAC,IAEAM,GAAAjtF,QAAA,WACAwqF,EAAAY,EAAAC,GACA4B,GAAAjtF,QAAAktF,GACAD,GAAAztB,MAAA2sB,IAeA,QAAAuB,IAAAxjL,EAAAC,GACA,QAAAwjL,GAAA7wK,EAAA6B,GACA,MAAA7B,GAAA5S,EAAA4S,EAAA6B,GAAAxU,EAAA2S,EAAA,GAAAA,EAAA,IAKA,MAHA5S,GAAAo5E,QAAAn5E,EAAAm5E,SAAAqqG,EAAArqG,OAAA,SAAAxmE,EAAA6B,GACA,MAAA7B,GAAA3S,EAAAm5E,OAAAxmE,EAAA6B,GAAA7B,GAAA5S,EAAAo5E,OAAAxmE,EAAA,GAAAA,EAAA,MAEA6wK,EAEA,QAAAC,MACA,OAAA,EAEA,QAAAC,IAAAC,EAAAzW,EAAA0W,EAAAC,EAAAhV,GACA,GAAAiV,MAAAC,IAuBA,IAtBAJ,EAAA3qC,QAAA,SAAAgrC,GACA,MAAA/9K,EAAA+9K,EAAA/iL,OAAA,IAAA,GAAA,CACA,GAAAgF,GAAAg+K,EAAAD,EAAA,GAAAxuD,EAAAwuD,EAAA/9K,EACA,IAAA67K,GAAAmC,EAAAzuD,GAAA,CACAq5C,EAAAl5E,WACA,KAAA,GAAA9zF,GAAA,EAAAA,EAAAoE,IAAApE,EAAAgtK,EAAAxZ,OAAA4uB,EAAAD,EAAAniL,IAAA,GAAAoiL,EAAA,GAEA,YADApV,GAAAh5E,UAGA,GAAA91F,GAAA,GAAAmkL,IAAAD,EAAAD,EAAA,MAAA,GAAAhkL,EAAA,GAAAkkL,IAAAD,EAAA,KAAAlkL,GAAA,EACAA,GAAAmG,EAAAlG,EACA8jL,EAAAj9K,KAAA9G,GACAgkL,EAAAl9K,KAAA7G,GACAD,EAAA,GAAAmkL,IAAA1uD,EAAAwuD,EAAA,MAAA,GACAhkL,EAAA,GAAAkkL,IAAA1uD,EAAA,KAAAz1H,GAAA,GACAA,EAAAmG,EAAAlG,EACA8jL,EAAAj9K,KAAA9G,GACAgkL,EAAAl9K,KAAA7G,MAEA+jL,EAAAnyK,KAAAs7J,GACAiX,GAAAL,GACAK,GAAAJ,GACAD,EAAA7iL,OAAA,CACA,IAAA,GAAAY,GAAA,EAAAuiL,EAAAR,EAAA39K,EAAA89K,EAAA9iL,OAAAY,EAAAoE,IAAApE,EACAkiL,EAAAliL,GAAAY,EAAA2hL,GAAAA,CAGA,KADA,GAAAC,GAAAhvB,EAAAxwJ,EAAAi/K,EAAA,KACA,CAEA,IADA,GAAA/qH,GAAAl0D,EAAAy/K,GAAA,EACAvrH,EAAA3nD,GAAA,IAAA2nD,EAAAA,EAAA9yD,KAAApB,EAAA,MACAw/K,GAAAtrH,EAAAtkD,EACAo6J,EAAAl5E,WACA,GAAA,CAEA,GADA58B,EAAA3nD,EAAA2nD,EAAA7yD,EAAAkL,GAAA,EACA2nD,EAAAt2D,EAAA,CACA,GAAA6hL,EACA,IAAA,GAAAziL,GAAA,EAAAoE,EAAAo+K,EAAApjL,OAAAY,EAAAoE,IAAApE,EAAAgtK,EAAAxZ,OAAAA,EAAAgvB,EAAAxiL,IAAA,GAAAwzJ,EAAA,QAEAwuB,GAAA9qH,EAAApmD,EAAAomD,EAAA9yD,EAAA0M,EAAA,EAAAk8J,EAEA91G,GAAAA,EAAA9yD,MACA,CACA,GAAAq+K,EAAA,CACAD,EAAAtrH,EAAAx4D,EAAAkU,CACA,KAAA,GAAA5S,GAAAwiL,EAAApjL,OAAA,EAAAY,GAAA,IAAAA,EAAAgtK,EAAAxZ,OAAAA,EAAAgvB,EAAAxiL,IAAA,GAAAwzJ,EAAA,QAEAwuB,GAAA9qH,EAAApmD,EAAAomD,EAAAx4D,EAAAoS,GAAA,EAAAk8J,EAEA91G,GAAAA,EAAAx4D,EAEAw4D,EAAAA,EAAA7yD,EACAm+K,EAAAtrH,EAAAtkD,EACA6vK,GAAAA,SACAvrH,EAAA3nD,EACAy9J,GAAAh5E,YAGA,QAAAsuF,IAAAznI,GACA,GAAAz2C,EAAAy2C,EAAAz7C,OAAA,CAEA,IADA,GAAAgF,GAAAjG,EAAA6B,EAAA,EAAA9B,EAAA28C,EAAA,KACA76C,EAAAoE,GACAlG,EAAAkG,EAAAjG,EAAA08C,EAAA76C,GACA7B,EAAAO,EAAAR,EACAA,EAAAC,CAEAD,GAAAkG,EAAAjG,EAAA08C,EAAA,GACA18C,EAAAO,EAAAR,GAEA,QAAAmkL,IAAA7uB,EAAAgvB,EAAAjrG,EAAAgrG,GACA9jL,KAAAqS,EAAA0iJ,EACA/0J,KAAAmU,EAAA4vK,EACA/jL,KAAA4F,EAAAkzE,EACA94E,KAAAmC,EAAA2hL,EACA9jL,KAAA8Q,GAAA,EACA9Q,KAAA2F,EAAA3F,KAAAC,EAAA,KAEA,QAAAgkL,IAAAC,EAAAvkH,EAAA4jH,EAAAY,GACA,MAAA,UAAAC,EAAA7V,GAuCA,QAAAxZ,GAAAirB,EAAAC,GACA,GAAAlrB,GAAAqvB,EAAApE,EAAAC,EACAiE,GAAAlE,EAAAjrB,EAAA,GAAAkrB,EAAAlrB,EAAA,KAAAwZ,EAAAxZ,MAAAirB,EAAAC,GAEA,QAAAoE,GAAArE,EAAAC,GACA,GAAAlrB,GAAAqvB,EAAApE,EAAAC,EACAjtH,GAAA+hG,MAAAA,EAAA,GAAAA,EAAA,IAEA,QAAA1/D,KACAouF,EAAA1uB,MAAAsvB,EACArxH,EAAAqiC,YAEA,QAAAE,KACAkuF,EAAA1uB,MAAAA,EACA/hG,EAAAuiC,UAIA,QAAA+uF,GAAAtE,EAAAC,GACAsE,EAAAh+K,MAAAy5K,EAAAC,GACA,IAAAlrB,GAAAqvB,EAAApE,EAAAC,EACAuE,GAAAzvB,MAAAA,EAAA,GAAAA,EAAA,IAEA,QAAA0vB,KACAD,EAAAnvF,YACAkvF,KAEA,QAAAG,KACAJ,EAAAC,EAAA,GAAA,GAAAA,EAAA,GAAA,IACAC,EAAAjvF,SACA,IAAAmuF,GAAA/uH,EAAA6vH,EAAA7vH,QAAAgwH,EAAA32C,EAAAA,SAAAroI,EAAAg/K,EAAAhkL,MAIA,IAHA4jL,EAAAjwK,MACAswK,EAAAr+K,KAAAg+K,GACAA,EAAA,KACA5+K,EACA,GAAA,EAAAgvD,EAAA,CACA+uH,EAAAiB,EAAA,EACA,IAAA5vB,GAAApvJ,EAAA+9K,EAAA/iL,OAAA,EAAAY,GAAA,CACA,IAAAoE,EAAA,EAAA,CAGA,IAFAk/K,IAAAtW,EAAAqR,eAAAiF,GAAA,GACAtW,EAAAl5E,cACA9zF,EAAAoE,GAAA4oK,EAAAxZ,OAAAA,EAAA2uB,EAAAniL,IAAA,GAAAwzJ,EAAA,GACAwZ,GAAAh5E,eAIA5vF,GAAA,GAAA,EAAAgvD,GAAAgwH,EAAAp+K,KAAAo+K,EAAArwK,MAAAvI,OAAA44K,EAAAj1K,UACA2zK,EAAA98K,KAAAo+K,EAAAjjL,OAAAojL,KArFA,GAsDAzB,GACAuB,EAAAL,EAvDAvxH,EAAA2M,EAAA4uG,GAAAwW,EAAAX,EAAAvrG,OAAAsrG,EAAA,GAAAA,EAAA,IACAV,GACA1uB,MAAAA,EACA1/D,UAAAA,EACAE,QAAAA,EACAqqF,aAAA,WACA6D,EAAA1uB,MAAAuvB,EACAb,EAAApuF,UAAAovF,EACAhB,EAAAluF,QAAAmvF,EACArB,KACAuB,MAEA/E,WAAA,WACA4D,EAAA1uB,MAAAA,EACA0uB,EAAApuF,UAAAA,EACAouF,EAAAluF,QAAAA,EACA8tF,EAAA5U,GAAAppK,MAAAg+K,EACA,IAAAC,GAAA0B,GAAAD,EAAAH,EACAvB,GAAA1iL,QACAkkL,IAAAtW,EAAAqR,eAAAiF,GAAA,GACAzB,GAAAC,EAAA4B,GAAA3B,EAAAC,EAAAhV,IACA+U,IACAuB,IAAAtW,EAAAqR,eAAAiF,GAAA,GACAtW,EAAAl5E,YACAkuF,EAAA,KAAA,KAAA,EAAAhV,GACAA,EAAAh5E,WAEAsvF,IAAAtW,EAAAsR,aAAAgF,GAAA,GACAxB,EAAAuB,EAAA,MAEAM,OAAA,WACA3W,EAAAqR,eACArR,EAAAl5E,YACAkuF,EAAA,KAAA,KAAA,EAAAhV,GACAA,EAAAh5E,UACAg5E,EAAAsR,eAoBA7xC,EAAAm3C,KAAAX,EAAA7kH,EAAAquE,GAAA62C,GAAA,CAgCA,OAAApB,IAGA,QAAAqB,IAAApB,GACA,MAAAA,GAAA/iL,OAAA,EAEA,QAAAwkL,MACA,GAAAnyH,GAAAqI,IACA,QACAg6B,UAAA,WACAh6B,EAAA90D,KAAAysD,OAEA+hG,MAAA,SAAAirB,EAAAC,GACAjtH,EAAAzsD,MAAAy5K,EAAAC,KAEA1qF,QAAA24E,EACAlgC,OAAA,WACA,GAAAA,GAAA3yE,CAGA,OAFAA,MACArI,EAAA,KACAg7E,GAEAo3C,OAAA,WACA/pH,EAAA16D,OAAA,GAAA06D,EAAA90D,KAAA80D,EAAA/mD,MAAAvI,OAAAsvD,EAAA3rD,YAIA,QAAAu1K,IAAAxlL,EAAAC,GACA,QAAAD,EAAAA,EAAA4S,GAAA,GAAA,EAAA5S,EAAA,GAAA40K,GAAAoN,GAAApN,GAAA50K,EAAA,MAAAC,EAAAA,EAAA2S,GAAA,GAAA,EAAA3S,EAAA,GAAA20K,GAAAoN,GAAApN,GAAA30K,EAAA,IAGA,QAAA2lL,IAAA9W,GACA,GAAA55G,GAAAwrH,EAAA7yF,IAAAg4F,EAAAh4F,IAAAi4F,EAAAj4F,GACA,QACA+H,UAAA,WACAk5E,EAAAl5E,YACA1gC,EAAA,GAEAogG,MAAA,SAAAywB,EAAAC,GACA,GAAAC,GAAAF,EAAA,EAAAtR,IAAAA,GAAAgM,EAAApjJ,GAAA0oJ,EAAArF,EACArjJ,IAAAojJ,EAAAhM,IAAAuN,IACAlT,EAAAxZ,MAAAorB,EAAAmF,GAAAA,EAAAG,GAAA,EAAA,EAAApR,IAAAA,IACA9F,EAAAxZ,MAAAwwB,EAAAD,GACA/W,EAAAh5E,UACAg5E,EAAAl5E,YACAk5E,EAAAxZ,MAAA2wB,EAAAJ,GACA/W,EAAAxZ,MAAAywB,EAAAF,GACA3wH,EAAA,GACA4wH,IAAAG,GAAAxF,GAAAhM,KACAp3I,GAAAqjJ,EAAAoF,GAAA9D,KAAAtB,GAAAoF,EAAA9D,IACA3kJ,GAAA0oJ,EAAAE,GAAAjE,KAAA+D,GAAAE,EAAAjE,IACA6D,EAAAK,GAAAxF,EAAAmF,EAAAE,EAAAC,GACAlX,EAAAxZ,MAAAwwB,EAAAD,GACA/W,EAAAh5E,UACAg5E,EAAAl5E,YACAk5E,EAAAxZ,MAAA2wB,EAAAJ,GACA3wH,EAAA,GAEA45G,EAAAxZ,MAAAorB,EAAAqF,EAAAF,EAAAG,GACAF,EAAAG,GAEAnwF,QAAA,WACAg5E,EAAAh5E,UACA4qF,EAAAmF,EAAAh4F,KAEA34B,MAAA,WACA,MAAA,GAAAA,IAIA,QAAAgxH,IAAAxF,EAAAmF,EAAAE,EAAAC,GACA,GAAAhF,GAAAmF,EAAAC,EAAAz7K,KAAAgvH,IAAA+mD,EAAAqF,EACA,OAAA1oJ,IAAA+oJ,GAAApE,GAAAr3K,KAAA07K,MAAA17K,KAAAgvH,IAAAksD,IAAAM,EAAAx7K,KAAAmd,IAAAk+J,IAAAr7K,KAAAgvH,IAAAosD,GAAAp7K,KAAAgvH,IAAAqsD,IAAAhF,EAAAr2K,KAAAmd,IAAA+9J,IAAAl7K,KAAAgvH,IAAA+mD,KAAAM,EAAAmF,EAAAC,KAAAP,EAAAG,GAAA,EAEA,QAAAM,IAAA3xJ,EAAAuF,EAAAc,EAAA8zI,GACA,GAAA0R,EACA,IAAA,MAAA7rJ,EACA6rJ,EAAAxlJ,EAAA45I,GACA9F,EAAAxZ,OAAAmf,GAAA+L,GACA1R,EAAAxZ,MAAA,EAAAkrB,GACA1R,EAAAxZ,MAAAmf,GAAA+L,GACA1R,EAAAxZ,MAAAmf,GAAA,GACA3F,EAAAxZ,MAAAmf,IAAA+L,GACA1R,EAAAxZ,MAAA,GAAAkrB,GACA1R,EAAAxZ,OAAAmf,IAAA+L,GACA1R,EAAAxZ,OAAAmf,GAAA,GACA3F,EAAAxZ,OAAAmf,GAAA+L,OACA,IAAAnjJ,GAAA1I,EAAA,GAAAuF,EAAA,IAAA8nJ,GAAA,CACA,GAAAl5K,GAAA6rB,EAAA,GAAAuF,EAAA,GAAAu6I,IAAAA,EACA+L,GAAAxlJ,EAAAlyB,EAAA,EACAgmK,EAAAxZ,OAAAxsJ,EAAA03K,GACA1R,EAAAxZ,MAAA,EAAAkrB,GACA1R,EAAAxZ,MAAAxsJ,EAAA03K,OAEA1R,GAAAxZ,MAAAp7H,EAAA,GAAAA,EAAA,IAGA,QAAAqrJ,IAAAjwB,EAAA6vB,GACA,GAAAoB,GAAAjxB,EAAA,GAAAkxB,EAAAlxB,EAAA,GAAAmxB,GAAA97K,KAAAgvH,IAAA4sD,IAAA57K,KAAAmd,IAAAy+J,GAAA,GAAAG,EAAA,EAAAC,EAAA,CACA1F,IAAA7mK,OACA,KAAA,GAAAtY,GAAA,EAAAoE,EAAAi/K,EAAAjkL,OAAAY,EAAAoE,IAAApE,EAAA,CACA,GAAAgjL,GAAAK,EAAArjL,GAAAmE,EAAA6+K,EAAA5jL,MACA,IAAA+E,EAEA,IADA,GAAA2gL,GAAA9B,EAAA,GAAApE,EAAAkG,EAAA,GAAAf,EAAAe,EAAA,GAAA,EAAAnS,GAAA,EAAAsM,EAAAp2K,KAAAgvH,IAAAksD,GAAA7E,EAAAr2K,KAAAmd,IAAA+9J,GAAAthL,EAAA,IACA,CACAA,IAAA0B,IAAA1B,EAAA,GACA+wJ,EAAAwvB,EAAAvgL,EACA,IAAAg8K,GAAAjrB,EAAA,GAAAkrB,EAAAlrB,EAAA,GAAA,EAAAmf,GAAA,EAAAqM,EAAAn2K,KAAAgvH,IAAA6mD,GAAAK,EAAAl2K,KAAAmd,IAAA04J,GAAAC,EAAAF,EAAAG,EAAAC,EAAAF,GAAA,EAAA,GAAA,EAAAG,EAAAD,EAAAF,EAAAoG,EAAAjG,EAAAnM,GAAAhwK,EAAAs8K,EAAAD,CAGA,IAFAG,GAAAr5K,IAAA+C,KAAA4rK,MAAA9xK,EAAAk8K,EAAAh2K,KAAAgvH,IAAAinD,GAAAI,EAAAH,EAAAp8K,EAAAkG,KAAAmd,IAAA84J,KACA8F,GAAAG,EAAApG,EAAAE,EAAAmG,GAAArG,EACAoG,EAAAnG,GAAA6F,EAAAhG,GAAAgG,EAAA,CACA,GAAA7tD,GAAA8oD,GAAAH,GAAAuF,GAAAvF,GAAA/rB,GACAssB,IAAAlpD,EACA,IAAAv7E,GAAAqkI,GAAAiF,EAAA/tD,EACAkpD,IAAAzkI,EACA,IAAA4pI,IAAAF,EAAApG,GAAA,GAAA,EAAA,GAAA9L,GAAAx3H,EAAA,KACAqpI,EAAAO,GAAAP,IAAAO,IAAAruD,EAAA,IAAAA,EAAA,OACAiuD,GAAAE,EAAApG,GAAA,EAAA,GAAA,GAGA,IAAAl8K,IAAA,KACAm8K,GAAAH,EAAAQ,EAAAD,EAAAE,EAAAH,EAAA+F,EAAAtxB,GAGA,OAAAoxB,GAAA1E,IAAA0E,EAAA1E,IAAAf,IAAAe,IAAA,EAAA2E,EAEA,QAAAK,IAAArxD,GAGA,QAAAnmG,GAAA+wJ,EAAAC,GACA,MAAA71K,MAAAmd,IAAAy4J,GAAA51K,KAAAmd,IAAA04J,GAAAyG,EAEA,QAAA/mH,GAAA4uG,GACA,GAAA8X,GAAAM,EAAAC,EAAAC,EAAAlyH,CACA,QACA0gC,UAAA,WACAwxF,EAAAD,GAAA,EACAjyH,EAAA,GAEAogG,MAAA,SAAAirB,EAAAC,GACA,GAAA6G,GAAAC,GAAA/G,EAAAC,GAAAnvK,EAAAme,EAAA+wJ,EAAAC,GAAA9/K,EAAA6mL,EAAAl2K,EAAA,EAAA+4B,EAAAm2I,EAAAC,GAAAnvK,EAAA+4B,EAAAm2I,GAAAA,EAAA,EAAA9L,IAAAA,IAAA+L,GAAA,CAUA,KATAoG,IAAAQ,EAAAD,EAAA91K,IAAAy9J,EAAAl5E,YACAvkF,IAAA81K,IACAE,EAAAG,EAAAZ,EAAAU,IACAvF,GAAA6E,EAAAS,IAAAtF,GAAAuF,EAAAD,MACAC,EAAA,IAAAtF,GACAsF,EAAA,IAAAtF,GACA3wK,EAAAme,EAAA83J,EAAA,GAAAA,EAAA,MAGAj2K,IAAA81K,EACAjyH,EAAA,EACA7jD,GACAy9J,EAAAl5E,YACAyxF,EAAAG,EAAAF,EAAAV,GACA9X,EAAAxZ,MAAA+xB,EAAA,GAAAA,EAAA,MAEAA,EAAAG,EAAAZ,EAAAU,GACAxY,EAAAxZ,MAAA+xB,EAAA,GAAAA,EAAA,IACAvY,EAAAh5E,WAEA8wF,EAAAS,MACA,IAAAI,GAAAb,GAAAW,EAAAl2K,EAAA,CACA,GAAAF,EACAzQ,GAAAwmL,KAAA/1K,EAAAq2K,EAAAF,EAAAV,GAAA,MACA1xH,EAAA,EACAqyH,GACAzY,EAAAl5E,YACAk5E,EAAAxZ,MAAAnkJ,EAAA,GAAA,GAAAA,EAAA,GAAA,IACA29J,EAAAxZ,MAAAnkJ,EAAA,GAAA,GAAAA,EAAA,GAAA,IACA29J,EAAAh5E,YAEAg5E,EAAAxZ,MAAAnkJ,EAAA,GAAA,GAAAA,EAAA,GAAA,IACA29J,EAAAh5E,UACAg5E,EAAAl5E,YACAk5E,EAAAxZ,MAAAnkJ,EAAA,GAAA,GAAAA,EAAA,GAAA,OAIAE,GAAAu1K,GAAA7E,GAAA6E,EAAAU,IACAxY,EAAAxZ,MAAAgyB,EAAA,GAAAA,EAAA,IAEAV,EAAAU,EAAAH,EAAA91K,EAAA61K,EAAAxmL,GAEAo1F,QAAA,WACAqxF,GAAArY,EAAAh5E,UACA8wF,EAAA,MAEA1xH,MAAA,WACA,MAAAA,IAAAkyH,GAAAD,IAAA,IAIA,QAAAK,GAAAxnL,EAAAC,EAAAynL,GACA,GAAAthL,GAAAi7K,GAAArhL,GAAAkP,EAAAmyK,GAAAphL,GACA0nL,GAAA,EAAA,EAAA,GAAAC,EAAApG,GAAAp7K,EAAA8I,GAAA24K,EAAAtG,GAAAqG,EAAAA,GAAAE,EAAAF,EAAA,GAAAG,EAAAF,EAAAC,EAAAA,CACA,KAAAC,EAAA,OAAAL,GAAA1nL,CACA,IAAAgoL,GAAAf,EAAAY,EAAAE,EAAAE,GAAAhB,EAAAa,EAAAC,EAAAG,EAAA1G,GAAAmG,EAAAC,GAAA10K,EAAAwuK,GAAAiG,EAAAK,GAAA1mL,EAAAogL,GAAAkG,EAAAK,EACAxG,IAAAvuK,EAAA5R,EACA,IAAA8P,GAAA82K,EAAAjnL,EAAAsgL,GAAAruK,EAAA9B,GAAA+2K,EAAA5G,GAAAnwK,EAAAA,GAAA8vH,EAAAjgI,EAAAA,EAAAknL,GAAA5G,GAAAruK,EAAAA,GAAA,EACA,MAAAguH,EAAA,GAAA,CACA,GAAA/vH,GAAAxG,KAAA64J,KAAAtiC,GAAAr4H,EAAA64K,GAAAtwK,IAAAnQ,EAAAkQ,GAAAg3K,EAGA,IAFA1G,GAAA54K,EAAAqK,GACArK,EAAAg5K,GAAAh5K,IACA6+K,EAAA,MAAA7+K,EACA,IAAA6L,GAAAgsK,EAAA1gL,EAAA,GAAA+lL,EAAA9lL,EAAA,GAAA4lL,EAAA7lL,EAAA,GAAAgmL,EAAA/lL,EAAA,EACA8lL,GAAArF,IAAAhsK,EAAAgsK,EAAAA,EAAAqF,EAAAA,EAAArxK,EACA,IAAA0zK,GAAArC,EAAArF,EAAA2H,EAAAhrJ,GAAA+qJ,EAAA3T,IAAAuN,GAAAuE,EAAA8B,GAAAD,EAAApG,EAEA,KADAqG,GAAArC,EAAAH,IAAAnxK,EAAAmxK,EAAAA,EAAAG,EAAAA,EAAAtxK,GACA6xK,EAAA8B,EAAAxC,EAAAG,EAAA,EAAAn9K,EAAA,IAAAw0B,GAAAx0B,EAAA,GAAA63K,GAAAsB,GAAA6D,EAAAG,GAAAH,GAAAh9K,EAAA,IAAAA,EAAA,IAAAm9K,EAAAoC,EAAA3T,IAAAiM,GAAA73K,EAAA,IAAAA,EAAA,IAAAk9K,GAAA,CACA,GAAAzvD,GAAAorD,GAAAtwK,IAAAnQ,EAAAkQ,GAAAg3K,EAEA,OADA1G,IAAAnrD,EAAApjH,IACArK,EAAAg5K,GAAAvrD,MAGA,QAAAlsF,GAAAm2I,EAAAC,GACA,GAAAr/K,GAAAomL,EAAA5xD,EAAA8+C,GAAA9+C,EAAAvrF,EAAA,CAGA,OAFAm2I,IAAAp/K,EAAAipC,GAAA,EAAAm2I,EAAAp/K,IAAAipC,GAAA,GACAo2I,GAAAr/K,EAAAipC,GAAA,EAAAo2I,EAAAr/K,IAAAipC,GAAA,GACAA,EA5FA,GAAA68I,GAAAt8K,KAAAmd,IAAA6tG,GAAA4xD,EAAAN,EAAA,EAAAQ,EAAApqJ,GAAA4pJ,GAAAjF,GAAA8B,EAAAwE,GAAA3yD,EAAA,EAAAqgD,GACA,OAAAwO,IAAAh1J,EAAA0wC,EAAA4jH,EAAAyD,GAAA,GAAA5xD,KAAA8+C,GAAA9+C,EAAA8+C,KA8FA,QAAA8T,IAAA7F,EAAAF,EAAA1rD,EAAAC,GACA,MAAA,UAAAxjE,GACA,GAAApyD,GAAAnB,EAAAuzD,EAAAvzD,EAAAC,EAAAszD,EAAAtzD,EAAAuoL,EAAAxoL,EAAA4S,EAAA61K,EAAAzoL,EAAAyU,EAAAi0K,EAAAzoL,EAAA2S,EAAAksJ,EAAA7+J,EAAAwU,EAAAihH,EAAA,EAAAuL,EAAA,EAAAniD,EAAA4pG,EAAAF,EAAAxpG,EAAA8/E,EAAA2pB,CAEA,IADAtnL,EAAAuhL,EAAA8F,EACA1pG,KAAA39E,EAAA,GAAA,CAEA,GADAA,GAAA29E,EACAA,EAAA,EAAA,CACA,GAAA39E,EAAAu0H,EAAA,MACAv0H,GAAA8/H,IAAAA,EAAA9/H,OACA,IAAA29E,EAAA,EAAA,CACA,GAAA39E,EAAA8/H,EAAA,MACA9/H,GAAAu0H,IAAAA,EAAAv0H,GAGA,GADAA,EAAA21H,EAAA0xD,EACA1pG,KAAA39E,EAAA,GAAA,CAEA,GADAA,GAAA29E,EACAA,EAAA,EAAA,CACA,GAAA39E,EAAA8/H,EAAA,MACA9/H,GAAAu0H,IAAAA,EAAAv0H,OACA,IAAA29E,EAAA,EAAA,CACA,GAAA39E,EAAAu0H,EAAA,MACAv0H,GAAA8/H,IAAAA,EAAA9/H,GAGA,GADAA,EAAAqhL,EAAAiG,EACAzpG,KAAA79E,EAAA,GAAA,CAEA,GADAA,GAAA69E,EACAA,EAAA,EAAA,CACA,GAAA79E,EAAAu0H,EAAA,MACAv0H,GAAA8/H,IAAAA,EAAA9/H,OACA,IAAA69E,EAAA,EAAA,CACA,GAAA79E,EAAA8/H,EAAA,MACA9/H,GAAAu0H,IAAAA,EAAAv0H,GAGA,GADAA,EAAA41H,EAAA0xD,EACAzpG,KAAA79E,EAAA,GAAA,CAEA,GADAA,GAAA69E,EACAA,EAAA,EAAA,CACA,GAAA79E,EAAA8/H,EAAA,MACA9/H,GAAAu0H,IAAAA,EAAAv0H,OACA,IAAA69E,EAAA,EAAA,CACA,GAAA79E,EAAAu0H,EAAA,MACAv0H,GAAA8/H,IAAAA,EAAA9/H,GAUA,MARAu0H,GAAA,IAAAniE,EAAAvzD,GACA4S,EAAA41K,EAAA9yD,EAAA52C,EACArqE,EAAAg0K,EAAA/yD,EAAA12C,IAEAiiD,EAAA,IAAA1tE,EAAAtzD,GACA2S,EAAA41K,EAAAvnD,EAAAniD,EACArqE,EAAAg0K,EAAAxnD,EAAAjiD,IAEAzrB,OAqBA,QAAAo1H,IAAAjG,EAAAF,EAAA1rD,EAAAC,GA2HA,QAAA6xD,GAAApoL,EAAAw6B,GACA,MAAAqC,IAAA78B,EAAA,GAAAkiL,GAAAV,GAAAhnJ,EAAA,EAAA,EAAA,EAAAqC,GAAA78B,EAAA,GAAAs2H,GAAAkrD,GAAAhnJ,EAAA,EAAA,EAAA,EAAAqC,GAAA78B,EAAA,GAAAgiL,GAAAR,GAAAhnJ,EAAA,EAAA,EAAA,EAAAA,EAAA,EAAA,EAAA,EAEA,QAAAmyI,GAAAntK,EAAAC,GACA,MAAA4oL,GAAA7oL,EAAA4S,EAAA3S,EAAA2S,GAEA,QAAAi2K,GAAA7oL,EAAAC,GACA,GAAA6K,GAAA89K,EAAA5oL,EAAA,GAAA8M,EAAA87K,EAAA3oL,EAAA,EACA,OAAA6K,KAAAgC,EAAAhC,EAAAgC,EAAA,IAAAhC,EAAA7K,EAAA,GAAAD,EAAA,GAAA,IAAA8K,EAAA9K,EAAA,GAAAC,EAAA,GAAA,IAAA6K,EAAA9K,EAAA,GAAAC,EAAA,GAAAA,EAAA,GAAAD,EAAA,GAlIA,MAAA,UAAA8uK,GA+BA,QAAAga,GAAAtoL,GAEA,IAAA,GADAuoL,GAAA,EAAA7iL,EAAAi/K,EAAAjkL,OAAAuT,EAAAjU,EAAA,GACAsB,EAAA,EAAAA,EAAAoE,IAAApE,EACA,IAAA,GAAA7B,GAAAsE,EAAA,EAAA8M,EAAA8zK,EAAArjL,GAAAmE,EAAAoL,EAAAnQ,OAAAlB,EAAAqR,EAAA,GAAA9M,EAAA0B,IAAA1B,EACAtE,EAAAoR,EAAA9M,GACAvE,EAAA,IAAAyU,EACAxU,EAAA,GAAAwU,GAAA8/J,EAAAv0K,EAAAC,EAAAO,GAAA,KAAAuoL,EAEA9oL,EAAA,IAAAwU,GAAA8/J,EAAAv0K,EAAAC,EAAAO,GAAA,KAAAuoL,EAEA/oL,EAAAC,CAGA,OAAA,KAAA8oL,EAEA,QAAAjF,GAAAnvJ,EAAAuF,EAAAc,EAAA8zI,GACA,GAAA9uK,GAAA,EAAAs2D,EAAA,CACA,IAAA,MAAA3hC,IAAA30B,EAAA4oL,EAAAj0J,EAAAqG,OAAAs7B,EAAAsyH,EAAA1uJ,EAAAc,KAAA6tJ,EAAAl0J,EAAAuF,GAAA,EAAAc,EAAA,GACA,EACA8zI,GAAAxZ,MAAA,IAAAt1J,GAAA,IAAAA,EAAA0iL,EAAA5rD,EAAA92H,EAAA,EAAA+2H,EAAAyrD,UACAxiL,GAAAA,EAAAg7B,EAAA,GAAA,KAAAs7B,OAEAw4G,GAAAxZ,MAAAp7H,EAAA,GAAAA,EAAA,IAGA,QAAAuqJ,GAAA7xK,EAAA6B,GACA,MAAAiuK,IAAA9vK,GAAAA,GAAAkkH,GAAA0rD,GAAA/tK,GAAAA,GAAAsiH,EAEA,QAAAu+B,GAAA1iJ,EAAA6B,GACAgwK,EAAA7xK,EAAA6B,IAAAq6J,EAAAxZ,MAAA1iJ,EAAA6B,GAGA,QAAAmhF,KACAouF,EAAA1uB,MAAA0zB,EACA7D,GAAAA,EAAAr+K,KAAAg+K,MACAnzK,GAAA,EACAs3K,GAAA,EACAC,EAAAC,EAAAt7F,IAEA,QAAAiI,KACA8tF,IACAoF,EAAAI,EAAAC,GACAC,GAAAL,GAAAM,EAAA5D,SACA/B,EAAA98K,KAAAyiL,EAAAh7C,WAEAy1C,EAAA1uB,MAAAA,EACA2zB,GAAAna,EAAAh5E,UAEA,QAAAkzF,GAAAp2K,EAAA6B,GACA7B,EAAAjI,KAAAC,KAAA4+K,GAAA7+K,KAAAkvD,IAAA2vH,GAAA52K,IACA6B,EAAA9J,KAAAC,KAAA4+K,GAAA7+K,KAAAkvD,IAAA2vH,GAAA/0K,GACA,IAAApD,GAAAozK,EAAA7xK,EAAA6B,EAEA,IADA0wK,GAAAL,EAAAh+K,MAAA8L,EAAA6B,IACA9C,EACAy3K,EAAAx2K,EAAAy2K,EAAA50K,EAAA60K,EAAAj4K,EACAM,GAAA,EACAN,IACAy9J,EAAAl5E,YACAk5E,EAAAxZ,MAAA1iJ,EAAA6B,QAGA,IAAApD,GAAA43K,EAAAna,EAAAxZ,MAAA1iJ,EAAA6B,OAAA,CACA,GAAA1O,IACA/F,GACA4S,EAAAs2K,EACAz0K,EAAA00K,GAEAlpL,GACA2S,EAAAA,EACA6B,EAAAA,GAGAyrD,GAAAn6D,IACAkjL,IACAna,EAAAl5E,YACAk5E,EAAAxZ,MAAAvvJ,EAAA/F,EAAA4S,EAAA7M,EAAA/F,EAAAyU,IAEAq6J,EAAAxZ,MAAAvvJ,EAAA9F,EAAA2S,EAAA7M,EAAA9F,EAAAwU,GACApD,GAAAy9J,EAAAh5E,UACA5gC,GAAA,GACA7jD,IACAy9J,EAAAl5E,YACAk5E,EAAAxZ,MAAA1iJ,EAAA6B,GACAygD,GAAA,GAIAg0H,EAAAt2K,EAAAu2K,EAAA10K,EAAAw0K,EAAA53K,EArHA,GAAAuyK,GAAAuB,EAAAL,EA6DAsE,EAAAC,EAAAC,EAAAJ,EAAAC,EAAAF,EAAAt3K,EAAAujD,EA7DAu0H,EAAA3a,EAAAya,EAAA7D,KAAAxlH,EAAAqoH,GAAA7F,EAAAF,EAAA1rD,EAAAC,GACAitD,GACA1uB,MAAAA,EACA1/D,UAAAA,EACAE,QAAAA,EACAqqF,aAAA,WACArR,EAAAya,EACA3F,KACAuB,KACAjwH,GAAA,GAEAkrH,WAAA,WACAtR,EAAA2a,EACA7F,EAAA5U,GAAAppK,MAAAg+K,EACA,IAAAC,GAAAiF,GAAApG,EAAA3rD,IAAA2yD,EAAAx0H,GAAA2uH,EAAAr0J,EAAAo0J,EAAA1iL,QACAwoL,GAAAl6J,KACAs/I,EAAAqR,eACAuJ,IACA5a,EAAAl5E,YACAkuF,EAAA,KAAA,KAAA,EAAAhV,GACAA,EAAAh5E,WAEAtmE,GACAm0J,GAAAC,EAAAzW,EAAA0W,EAAAC,EAAAhV,GAEAA,EAAAsR,cAEAwD,EAAAuB,EAAAL,EAAA,MA4FA,OAAAd,IAaA,QAAA2F,IAAAC,GACA,GAAA/D,GAAA,EAAAG,EAAAvR,GAAA,EAAAxuK,EAAA4jL,GAAAD,GAAAppL,EAAAyF,EAAA4/K,EAAAG,EAKA,OAJAxlL,GAAAspL,UAAA,SAAAnmL,GACA,MAAA8D,WAAAvG,OACA+E,EAAA4/K,EAAAliL,EAAA,GAAA8wK,GAAA,IAAAuR,EAAAriL,EAAA,GAAA8wK,GAAA,MADAoR,EAAApR,GAAA,IAAAuR,EAAAvR,GAAA,MAGAj0K,EAEA,QAAAupL,IAAAlE,EAAAG,GAEA,QAAAx2B,GAAA+wB,EAAAC,GACA,GAAAwJ,GAAAr/K,KAAA64J,KAAA5uJ,EAAA,EAAA1O,EAAAyE,KAAAgvH,IAAA6mD,IAAAt6K,CACA,QAAA8jL,EAAAr/K,KAAAgvH,IAAA4mD,GAAAr6K,GAAA+jL,EAAAD,EAAAr/K,KAAAmd,IAAAy4J,IAHA,GAAAQ,GAAAp2K,KAAAgvH,IAAAksD,GAAA3/K,GAAA66K,EAAAp2K,KAAAgvH,IAAAqsD,IAAA,EAAApxK,EAAA,EAAAmsK,GAAA,EAAA76K,EAAA66K,GAAAkJ,EAAAt/K,KAAA64J,KAAA5uJ,GAAA1O,CASA,OAJAspJ,GAAAp2E,OAAA,SAAAxmE,EAAA6B,GACA,GAAAy1K,GAAAD,EAAAx1K,CACA,QAAA9J,KAAA4rK,MAAA3jK,EAAAs3K,GAAAhkL,EAAAyuK,IAAA//J,GAAAhC,EAAAA,EAAAs3K,EAAAA,GAAAhkL,EAAAA,IAAA,EAAAA,MAEAspJ,EAmGA,QAAA26B,MAMA,QAAA7J,GAAA1tK,EAAA6B,GACA21K,IAAA5H,EAAA5vK,EAAA8vK,EAAAjuK,EACAiuK,EAAA9vK,EAAA4vK,EAAA/tK,EAPA,GAAA41K,GAAAC,EAAA5H,EAAAF,CACA+H,IAAAj1B,MAAA,SAAA1iJ,EAAA6B,GACA81K,GAAAj1B,MAAAgrB,EACA+J,EAAA3H,EAAA9vK,EAAA03K,EAAA9H,EAAA/tK,GAMA81K,GAAAz0F,QAAA,WACAwqF,EAAA+J,EAAAC,IAWA,QAAAE,IAAA53K,EAAA6B,GACA7B,EAAA63K,KAAAA,GAAA73K,GACAA,EAAA83K,KAAAA,GAAA93K,GACA6B,EAAAk2K,KAAAA,GAAAl2K,GACAA,EAAAm2K,KAAAA,GAAAn2K,GAEA,QAAAo2K,MA2BA,QAAAv1B,GAAA1iJ,EAAA6B,GACA85H,EAAAznI,KAAA,IAAA8L,EAAA,IAAA6B,EAAAq2K,GAEA,QAAAC,GAAAn4K,EAAA6B,GACA85H,EAAAznI,KAAA,IAAA8L,EAAA,IAAA6B,GACAk4D,EAAA2oF,MAAAsvB,EAEA,QAAAA,GAAAhyK,EAAA6B,GACA85H,EAAAznI,KAAA,IAAA8L,EAAA,IAAA6B,GAEA,QAAAqhF,KACAnpB,EAAA2oF,MAAAA,EAEA,QAAA01B,KACAz8C,EAAAznI,KAAA,KAxCA,GAAAgkL,GAAAG,GAAA,KAAA18C,KACA5hE,GACA2oF,MAAAA,EACA1/D,UAAA,WACAjpB,EAAA2oF,MAAAy1B,GAEAj1F,QAAAA,EACAqqF,aAAA,WACAxzG,EAAAmpB,QAAAk1F,GAEA5K,WAAA,WACAzzG,EAAAmpB,QAAAA,EACAnpB,EAAA2oF,MAAAA,GAEA41B,YAAA,SAAAvnL,GAEA,MADAmnL,GAAAG,GAAAtnL,GACAgpE,GAEAjsD,OAAA,WACA,GAAA6tH,EAAArtI,OAAA,CACA,GAAAwf,GAAA6tH,EAAAp/H,KAAA,GAEA,OADAo/H,MACA7tH,IAoBA,OAAAisD,GAEA,QAAAs+G,IAAAt1D,GACA,MAAA,MAAAA,EAAA,IAAAA,EAAA,IAAAA,EAAA,aAAA,EAAAA,EAAA,IAAAA,EAAA,IAAAA,EAAA,YAAA,EAAAA,EAAA,IAeA,QAAAw1D,IAAAv4K,EAAA6B,GACA2tK,IAAAxvK,EACAyvK,IAAA5tK,IACA6tK,GAEA,QAAA8I,MAMA,QAAA9K,GAAA1tK,EAAA6B,GACA,GAAAqqE,GAAAlsE,EAAA8vK,EAAA1jG,EAAAvqE,EAAA+tK,EAAA9tK,EAAA/J,KAAA64J,KAAA1kF,EAAAA,EAAAE,EAAAA,EACA4jG,KAAAluK,GAAAguK,EAAA9vK,GAAA,EACAiwK,IAAAnuK,GAAA8tK,EAAA/tK,GAAA,EACAquK,IAAApuK,EACAy2K,GAAAzI,EAAA9vK,EAAA4vK,EAAA/tK,GAVA,GAAAiuK,GAAAF,CACA6I,IAAA/1B,MAAA,SAAA1iJ,EAAA6B,GACA42K,GAAA/1B,MAAAgrB,EACA6K,GAAAzI,EAAA9vK,EAAA4vK,EAAA/tK,IAUA,QAAA62K,MACAD,GAAA/1B,MAAA61B,GAEA,QAAAI,MAMA,QAAAjL,GAAA1tK,EAAA6B,GACA,GAAAqqE,GAAAlsE,EAAA8vK,EAAA1jG,EAAAvqE,EAAA+tK,EAAA9tK,EAAA/J,KAAA64J,KAAA1kF,EAAAA,EAAAE,EAAAA,EACA4jG,KAAAluK,GAAAguK,EAAA9vK,GAAA,EACAiwK,IAAAnuK,GAAA8tK,EAAA/tK,GAAA,EACAquK,IAAApuK,EACAA,EAAA8tK,EAAA5vK,EAAA8vK,EAAAjuK,EACA4uK,IAAA3uK,GAAAguK,EAAA9vK,GACA0wK,IAAA5uK,GAAA8tK,EAAA/tK,GACA8uK,IAAA,EAAA7uK,EACAy2K,GAAAzI,EAAA9vK,EAAA4vK,EAAA/tK,GAdA,GAAA41K,GAAAC,EAAA5H,EAAAF,CACA6I,IAAA/1B,MAAA,SAAA1iJ,EAAA6B,GACA42K,GAAA/1B,MAAAgrB,EACA6K,GAAAd,EAAA3H,EAAA9vK,EAAA03K,EAAA9H,EAAA/tK,IAaA42K,GAAAv1F,QAAA,WACAwqF,EAAA+J,EAAAC,IAGA,QAAAkB,IAAA/9J,GAqBA,QAAA6nI,GAAA1iJ,EAAA6B,GACAgZ,EAAAyqG,OAAAtlH,EAAAs4K,EAAAz2K,GACAgZ,EAAAirG,IAAA9lH,EAAA6B,EAAAy2K,EAAA,EAAApE,IAEA,QAAAiE,GAAAn4K,EAAA6B,GACAgZ,EAAAyqG,OAAAtlH,EAAA6B,GACAk4D,EAAA2oF,MAAAsvB,EAEA,QAAAA,GAAAhyK,EAAA6B,GACAgZ,EAAA0qG,OAAAvlH,EAAA6B,GAEA,QAAAqhF,KACAnpB,EAAA2oF,MAAAA,EAEA,QAAA01B,KACAv9J,EAAAmrG,YAnCA,GAAAsyD,GAAA,IACAv+G,GACA2oF,MAAAA,EACA1/D,UAAA,WACAjpB,EAAA2oF,MAAAy1B,GAEAj1F,QAAAA,EACAqqF,aAAA,WACAxzG,EAAAmpB,QAAAk1F,GAEA5K,WAAA,WACAzzG,EAAAmpB,QAAAA,EACAnpB,EAAA2oF,MAAAA,GAEA41B,YAAA,SAAAvnL,GAEA,MADAunL,GAAAvnL,EACAgpE,GAEAjsD,OAAA+tJ,EAmBA,OAAA9hG,GAEA,QAAA8+G,IAAAC,GAEA,QAAAC,GAAAh/G,GACA,OAAAi/G,EAAAC,EAAAC,GAAAn/G,GAEA,QAAAm/G,GAAAn/G,GACA,MAAAo/G,IAAAp/G,EAAA,SAAA/5D,EAAA6B,GACA7B,EAAA84K,EAAA94K,EAAA6B,GACAk4D,EAAA2oF,MAAA1iJ,EAAA,GAAAA,EAAA,MAGA,QAAAi5K,GAAAl/G,GAeA,QAAA2oF,GAAA1iJ,EAAA6B,GACA7B,EAAA84K,EAAA94K,EAAA6B,GACAk4D,EAAA2oF,MAAA1iJ,EAAA,GAAAA,EAAA,IAEA,QAAAgjF,KACA8sF,EAAA70F,IACA89F,EAAAr2B,MAAA0zB,EACAr8G,EAAAipB,YAEA,QAAAozF,GAAAzI,EAAAC,GACA,GAAA9/K,GAAA2gL,IAAAd,EAAAC,IAAAhgL,EAAAkrL,EAAAnL,EAAAC,EACAwL,GAAAtJ,EAAAF,EAAA9B,EAAA7pI,EAAAo1I,EAAA/E,EAAAxE,EAAAliL,EAAA,GAAAgiL,EAAAhiL,EAAA,GAAAkgL,EAAAH,EAAA1pI,EAAAn2C,EAAA,GAAAurL,EAAAvrL,EAAA,GAAAwmL,EAAAxmL,EAAA,GAAAkrL,EAAAj/G,GACAA,EAAA2oF,MAAAotB,EAAAF,GAEA,QAAA1sF,KACA61F,EAAAr2B,MAAAA,EACA3oF,EAAAmpB,UAEA,QAAAkvF,KACApvF,IACA+1F,EAAAr2B,MAAA42B,EACAP,EAAA71F,QAAAmvF,EAEA,QAAAiH,GAAA3L,EAAAC,GACAwI,EAAA9H,EAAAX,EAAAY,EAAAX,GAAA6J,EAAA3H,EAAA4H,EAAA9H,EAAA2J,EAAAt1I,EAAAu1I,EAAAH,EAAAI,EAAAnF,EACAyE,EAAAr2B,MAAA0zB,EAEA,QAAA/D,KACA+G,EAAAtJ,EAAAF,EAAA9B,EAAA7pI,EAAAo1I,EAAA/E,EAAAmD,EAAAC,EAAApJ,EAAAiL,EAAAC,EAAAC,EAAAT,EAAAj/G,GACAg/G,EAAA71F,QAAAA,EACAA,IA5CA,GAAAorF,GAAAC,EAAAkJ,EAAAC,EAAA6B,EAAAC,EAAAC,EAAA3L,EAAAgC,EAAAF,EAAA3rI,EAAAo1I,EAAA/E,EACAyE,GACAr2B,MAAAA,EACA1/D,UAAAA,EACAE,QAAAA,EACAqqF,aAAA,WACAxzG,EAAAwzG,eACAwL,EAAA/1F,UAAAovF,GAEA5E,WAAA,WACAzzG,EAAAyzG,aACAuL,EAAA/1F,UAAAA,GAmCA,OAAA+1F,GAEA,QAAAK,GAAAtJ,EAAAF,EAAA9B,EAAA7pI,EAAAo1I,EAAA/E,EAAApwD,EAAAC,EAAAgvD,EAAAzvH,EAAAg2H,EAAAtE,EAAA/oD,EAAAtyD,GACA,GAAAmS,GAAAg4C,EAAA4rD,EAAA1jG,EAAA+3C,EAAAyrD,EAAAxzI,EAAA8vC,EAAAA,EAAAE,EAAAA,CACA,IAAAhwC,EAAA,EAAAu9I,GAAAttD,IAAA,CACA,GAAAj/H,GAAA62C,EAAAyf,EAAAr2D,EAAAgsL,EAAAK,EAAA5rL,EAAAwmL,EAAAc,EAAA/hL,EAAA0E,KAAA64J,KAAAxjK,EAAAA,EAAAC,EAAAA,EAAAS,EAAAA,GAAA8rL,EAAA7hL,KAAAkqK,KAAAn0K,GAAAuF,GAAAwmL,EAAApvJ,GAAAA,GAAA38B,GAAA,GAAAshL,IAAA3kJ,GAAAqjJ,EAAAqF,GAAA/D,IAAAtB,EAAAqF,GAAA,EAAAp7K,KAAA4rK,MAAAt2K,EAAAD,GAAAQ,EAAAkrL,EAAAe,EAAAD,GAAAx1D,EAAAx2H,EAAA,GAAAy2H,EAAAz2H,EAAA,GAAAksL,EAAA11D,EAAA0rD,EAAAiK,EAAA11D,EAAAurD,EAAAoK,EAAA5tG,EAAA0tG,EAAA5tG,EAAA6tG,GACAC,EAAAA,EAAA59I,EAAAu9I,GAAAlvJ,IAAAyhD,EAAA4tG,EAAA1tG,EAAA2tG,GAAA39I,EAAA,IAAA,IAAA6H,EAAAyf,EAAA21H,EAAAK,EAAApF,EAAAc,EAAA6E,KACAb,EAAAtJ,EAAAF,EAAA9B,EAAA7pI,EAAAo1I,EAAA/E,EAAAlwD,EAAAC,EAAAw1D,EAAAzsL,GAAAiG,EAAAhG,GAAAgG,EAAAvF,EAAAu+H,EAAAtyD,GACAA,EAAA2oF,MAAAt+B,EAAAC,GACA+0D,EAAAh1D,EAAAC,EAAAw1D,EAAAzsL,EAAAC,EAAAS,EAAAo2H,EAAAC,EAAAgvD,EAAAzvH,EAAAg2H,EAAAtE,EAAA/oD,EAAAtyD,KAlEA,GAAA4/G,GAAA,GAAAM,EAAAliL,KAAAmd,IAAA,GAAAkuJ,IAAA4V,EAAA,EA2EA,OALAD,GAAApS,UAAA,SAAA51K,GACA,MAAA8D,WAAAvG,QACA0qL,GAAAW,EAAA5oL,EAAAA,GAAA,GAAA,GACAgoL,GAFAhhL,KAAA64J,KAAA+oB,IAIAZ,EAiDA,QAAAmB,IAAApB,GACA,GAAAC,GAAAF,GAAA,SAAA74K,EAAA6B,GACA,MAAAi3K,IAAA94K,EAAA4jK,GAAA/hK,EAAA+hK,MAEA,OAAA,UAAA7pG,GACA,MAAAogH,IAAApB,EAAAh/G,KAYA,QAAAqgH,IAAArgH,GACApsE,KAAAosE,OAAAA,EAsBA,QAAAo/G,IAAAp/G,EAAA2oF,GACA,OACAA,MAAAA,EACAmwB,OAAA,WACA94G,EAAA84G,UAEA7vF,UAAA,WACAjpB,EAAAipB,aAEAE,QAAA,WACAnpB,EAAAmpB,WAEAqqF,aAAA,WACAxzG,EAAAwzG,gBAEAC,WAAA,WACAzzG,EAAAyzG,eAMA,QAAA6M,IAAAvB,GACA,MAAA7B,IAAA,WACA,MAAA6B,OAGA,QAAA7B,IAAAD,GAKA,QAAAz9I,GAAAmpH,GAEA,MADAA,GAAA43B,EAAA53B,EAAA,GAAA0gB,GAAA1gB,EAAA,GAAA0gB,KACA1gB,EAAA,GAAA7wJ,EAAA0oL,EAAAC,EAAA93B,EAAA,GAAA7wJ,GAEA,QAAA20E,GAAAk8E,GAEA,MADAA,GAAA43B,EAAA9zG,QAAAk8E,EAAA,GAAA63B,GAAA1oL,GAAA2oL,EAAA93B,EAAA,IAAA7wJ,GACA6wJ,IAAAA,EAAA,GAAAkhB,GAAAlhB,EAAA,GAAAkhB,IA4CA,QAAAp8J,KACA8yK,EAAA1J,GAAAmB,EAAA0I,GAAAjF,EAAAkF,EAAAC,GAAA7B,EACA,IAAA8B,GAAA9B,EAAAnL,EAAAC,EAGA,OAFA2M,GAAAv6K,EAAA46K,EAAA,GAAA/oL,EACA2oL,EAAA34K,EAAA+4K,EAAA,GAAA/oL,EACAgpL,IAEA,QAAAA,KAEA,MADA9gH,KAAAA,EAAA+gH,OAAA,EAAA/gH,EAAA,MACAxgC,EA/DA,GAAAu/I,GAAA/G,EAAAuI,EAGAC,EAAAC,EAAAzgH,EAHAghH,EAAAlC,GAAA,SAAA74K,EAAA6B,GAEA,MADA7B,GAAA84K,EAAA94K,EAAA6B,IACA7B,EAAA,GAAAnO,EAAA0oL,EAAAC,EAAAx6K,EAAA,GAAAnO,KACAA,EAAA,IAAAmO,EAAA,IAAA6B,EAAA,IAAA8rK,EAAA,EAAAC,EAAA,EAAA4H,EAAA,EAAAkF,EAAA,EAAAC,EAAA,EAAAK,EAAAC,GAAAC,EAAA3f,EAAA4f,EAAA,KAAAC,EAAA,IA8DA,OArDA7hJ,GAAAwgC,OAAA,SAAAvnC,GAIA,MAHAunC,KAAAA,EAAA+gH,OAAA,GACA/gH,EAAAogH,GAAAa,EAAAjJ,EAAAgJ,EAAAG,EAAA1oJ,MACAunC,EAAA+gH,OAAA,EACA/gH,GAEAxgC,EAAA4hJ,UAAA,SAAApqL,GACA,MAAA8D,WAAAvG,QACA0sL,EAAA,MAAAjqL,GAAAoqL,EAAApqL,EAAAkqL,IAAA7G,IAAA+G,GAAApqL,GAAAqyK,IACAyX,KAFAM,GAIA5hJ,EAAA6hJ,WAAA,SAAArqL,GACA,MAAA8D,WAAAvG,QACA8sL,EAAArqL,EACAmqL,EAAAnqL,EAAAglL,GAAAhlL,EAAA,GAAA,GAAAA,EAAA,GAAA,GAAAA,EAAA,GAAA,GAAAA,EAAA,GAAA,IAAAwqK,EACAsf,KAHAO,GAKA7hJ,EAAAmsI,MAAA,SAAA30K,GACA,MAAA8D,WAAAvG,QACAuD,GAAAd,EACAyW,KAFA3V,GAIA0nC,EAAA8hJ,UAAA,SAAAtqL,GACA,MAAA8D,WAAAvG,QACA0R,GAAAjP,EAAA,GACA8Q,GAAA9Q,EAAA,GACAyW,MAHAxH,EAAA6B,IAKA03B,EAAAqhJ,OAAA,SAAA7pL,GACA,MAAA8D,WAAAvG,QACAq/K,EAAA58K,EAAA,GAAA,IAAAqyK,GACAwK,EAAA78K,EAAA,GAAA,IAAAqyK,GACA57J,MAHAmmK,EAAA/J,GAAAgK,EAAAhK,KAKArqI,EAAAw4I,OAAA,SAAAhhL,GACA,MAAA8D,WAAAvG,QACAknL,EAAAzkL,EAAA,GAAA,IAAAqyK,GACAsX,EAAA3pL,EAAA,GAAA,IAAAqyK,GACAuX,EAAA5pL,EAAAzC,OAAA,EAAAyC,EAAA,GAAA,IAAAqyK,GAAA,EACA57J,MAJAguK,EAAA5R,GAAA8W,EAAA9W,GAAA+W,EAAA/W,KAMAxH,GAAAwI,OAAArrI,EAAAwhJ,EAAA,aAYA,WAGA,MAFAjC,GAAA9B,EAAA7mL,MAAAxC,KAAAkH,WACA0kC,EAAAitC,OAAAsyG,EAAAtyG,QAAAA,EACAh/D,KAGA,QAAA2yK,IAAApgH,GACA,MAAAo/G,IAAAp/G,EAAA,SAAA/5D,EAAA6B,GACAk4D,EAAA2oF,MAAA1iJ,EAAAojK,GAAAvhK,EAAAuhK,MAGA,QAAAkY,IAAA3N,EAAAC,GACA,OAAAD,EAAAC,GAiBA,QAAA2N,IAAA5N,EAAAC,GACA,OAAAD,EAAA9L,GAAA8L,EAAAuG,GAAAvG,GAAA9L,GAAA8L,EAAAuG,GAAAvG,EAAAC,GAGA,QAAA6M,IAAAjF,EAAAkF,EAAAC,GACA,MAAAnF,GAAAkF,GAAAC,EAAA/J,GAAA4K,GAAAhG,GAAAiG,GAAAf,EAAAC,IAAAa,GAAAhG,GAAAkF,GAAAC,EAAAc,GAAAf,EAAAC,GAAAY,GAEA,QAAAG,IAAAlG,GACA,MAAA,UAAA7H,EAAAC,GACA,MAAAD,IAAA6H,GAAA7H,EAAA9L,GAAA8L,EAAAuG,GAAAvG,GAAA9L,GAAA8L,EAAAuG,GAAAvG,EAAAC,IAGA,QAAA4N,IAAAhG,GACA,GAAAmG,GAAAD,GAAAlG,EAEA,OADAmG,GAAAn1G,OAAAk1G,IAAAlG,GACAmG,EAEA,QAAAF,IAAAf,EAAAC,GAEA,QAAAgB,GAAAhO,EAAAC,GACA,GAAAK,GAAAl2K,KAAAmd,IAAA04J,GAAA5tK,EAAAjI,KAAAmd,IAAAy4J,GAAAM,EAAApsK,EAAA9J,KAAAgvH,IAAA4mD,GAAAM,EAAAnsK,EAAA/J,KAAAgvH,IAAA6mD,GAAA/7K,EAAAiQ,EAAA85K,EAAA57K,EAAA67K,CACA,QAAA9jL,KAAA4rK,MAAA9hK,EAAAi6K,EAAAjqL,EAAAkqL,EAAA/7K,EAAA47K,EAAA95K,EAAA+5K,GAAA9Z,GAAAlwK,EAAAiqL,EAAAj6K,EAAAk6K,IAHA,GAAAH,GAAA7jL,KAAAmd,IAAAwlK,GAAAmB,EAAA9jL,KAAAgvH,IAAA2zD,GAAAoB,EAAA/jL,KAAAmd,IAAAylK,GAAAoB,EAAAhkL,KAAAgvH,IAAA4zD,EASA,OAJAgB,GAAAn1G,OAAA,SAAAmnG,EAAAC,GACA,GAAAK,GAAAl2K,KAAAmd,IAAA04J,GAAA5tK,EAAAjI,KAAAmd,IAAAy4J,GAAAM,EAAApsK,EAAA9J,KAAAgvH,IAAA4mD,GAAAM,EAAAnsK,EAAA/J,KAAAgvH,IAAA6mD,GAAA/7K,EAAAiQ,EAAAg6K,EAAAj6K,EAAAk6K,CACA,QAAAhkL,KAAA4rK,MAAA9hK,EAAAi6K,EAAAh6K,EAAAi6K,EAAA/7K,EAAA47K,EAAA/pL,EAAAgqL,GAAA9Z,GAAAlwK,EAAA+pL,EAAA57K,EAAA67K,KAEAF,EAkCA,QAAAjG,IAAA3yD,EAAA4jD,GACA,GAAA0N,GAAAt8K,KAAAmd,IAAA6tG,GAAA2vC,EAAA36J,KAAAgvH,IAAAhE,EACA,OAAA,UAAAhhG,EAAAuF,EAAAc,EAAA8zI,GACA,GAAArnJ,GAAAuT,EAAAu+I,CACA,OAAA5kJ,GACAA,EAAAi6J,GAAA3H,EAAAtyJ,GACAuF,EAAA00J,GAAA3H,EAAA/sJ,IACAc,EAAA,EAAArG,EAAAuF,EAAAvF,EAAAuF,KAAAvF,GAAAqG,EAAA8rJ,MAEAnyJ,EAAAghG,EAAA36F,EAAA8rJ,GACA5sJ,EAAAy7F,EAAA,GAAAluG,EAEA,KAAA,GAAA6tI,GAAAnkJ,EAAAwjB,EAAAqG,EAAA,EAAA7pB,EAAA+oB,EAAA/oB,EAAA+oB,EAAA/oB,GAAAsW,EACAqnJ,EAAAxZ,OAAAA,EAAAusB,IAAAoF,GAAA3hB,EAAA36J,KAAAmd,IAAA3W,IAAAm0J,EAAA36J,KAAAgvH,IAAAxoH,MAAA,GAAAmkJ,EAAA,KAIA,QAAAs5B,IAAA3H,EAAA3xB,GACA,GAAAt1J,GAAAqhL,GAAA/rB,EACAt1J,GAAA,IAAAinL,EACArF,GAAA5hL,EACA,IAAA6uL,GAAAra,IAAAx0K,EAAA,GACA,UAAAA,EAAA,GAAA,GAAA6uL,EAAAA,GAAA,EAAAlkL,KAAAod,GAAAi6J,KAAA,EAAAr3K,KAAAod,IAgFA,QAAA+mK,IAAAtM,EAAAzrD,EAAA/3C,GACA,GAAAvqE,GAAAu6J,GAAAxmH,MAAAg6H,EAAAzrD,EAAAirD,GAAAhjG,GAAA1yE,OAAAyqH,EACA,OAAA,UAAAnkH,GACA,MAAA6B,GAAAtL,IAAA,SAAAsL,GACA,OAAA7B,EAAA6B,MAIA,QAAAs6K,IAAArM,EAAA5rD,EAAAh4C,GACA,GAAAlsE,GAAAo8J,GAAAxmH,MAAAk6H,EAAA5rD,EAAAkrD,GAAAljG,GAAAxyE,OAAAwqH,EACA,OAAA,UAAAriH,GACA,MAAA7B,GAAAzJ,IAAA,SAAAyJ,GACA,OAAAA,EAAA6B,MAIA,QAAAu6K,IAAAvuL,GACA,MAAAA,GAAA0d,OAEA,QAAA8wK,IAAAxuL,GACA,MAAAA,GAAAiY,OA+BA,QAAAw2K,IAAAxM,EAAAF,EAAA1rD,EAAAC,GACA,GAAAo4D,GAAAxkL,KAAAmd,IAAA06J,GAAA4M,EAAAzkL,KAAAgvH,IAAA6oD,GAAA6M,EAAA1kL,KAAAmd,IAAAivG,GAAAu4D,EAAA3kL,KAAAgvH,IAAA5C,GAAAw4D,EAAAJ,EAAAxkL,KAAAmd,IAAA46J,GAAA8M,EAAAL,EAAAxkL,KAAAgvH,IAAA+oD,GAAA+M,EAAAJ,EAAA1kL,KAAAmd,IAAAgvG,GAAA44D,EAAAL,EAAA1kL,KAAAgvH,IAAA7C,GAAAr2H,EAAA,EAAAkK,KAAAkqK,KAAAlqK,KAAA64J,KAAA0R,GAAAn+C,EAAAyrD,GAAA2M,EAAAE,EAAAna,GAAAp+C,EAAA4rD,KAAAj+K,EAAA,EAAAkG,KAAAgvH,IAAAl5H,GACAqjL,EAAArjL,EAAA,SAAA0Q,GACA,GAAA7P,GAAAqJ,KAAAgvH,IAAAxoH,GAAA1Q,GAAAgE,EAAAyO,EAAAvI,KAAAgvH,IAAAl5H,EAAA0Q,GAAA1M,EAAAmO,EAAAM,EAAAq8K,EAAAjuL,EAAAmuL,EAAAh7K,EAAAvB,EAAAs8K,EAAAluL,EAAAouL,EAAAh7K,EAAAxB,EAAAk8K,EAAA9tL,EAAAguL,CACA,QAAA3kL,KAAA4rK,MAAA9hK,EAAA7B,GAAA4jK,GAAA7rK,KAAA4rK,MAAA7hK,EAAA/J,KAAA64J,KAAA5wJ,EAAAA,EAAA6B,EAAAA,IAAA+hK,KACA,WACA,OAAAkM,EAAAlM,GAAAgM,EAAAhM,IAGA,OADAsN,GAAAn0F,SAAAlvF,EACAqjL,EAgBA,QAAA6L,MASA,QAAArP,GAAAC,EAAAC,GACA,GAAAM,GAAAn2K,KAAAgvH,IAAA6mD,GAAAxK,IAAA6K,EAAAl2K,KAAAmd,IAAA04J,GAAArvK,EAAAksB,IAAAkjJ,GAAAvK,IAAA0K,GAAAkP,EAAAjlL,KAAAmd,IAAA3W,EACA0+K,KAAAllL,KAAA4rK,MAAA5rK,KAAA64J,MAAAryJ,EAAA0vK,EAAAl2K,KAAAgvH,IAAAxoH,IAAAA,GAAAA,EAAA6vK,EAAAF,EAAAC,EAAAF,EAAA+O,GAAAz+K,GAAA4vK,EAAAD,EAAAE,EAAAH,EAAA+O,GACAlP,EAAAH,EAAAQ,EAAAD,EAAAE,EAAAH,EAXA,GAAAH,GAAAK,EAAAC,CACA8O,IAAAx6B,MAAA,SAAAirB,EAAAC,GACAE,EAAAH,EAAAvK,GAAA+K,EAAAp2K,KAAAgvH,IAAA6mD,GAAAxK,IAAAgL,EAAAr2K,KAAAmd,IAAA04J,GACAsP,GAAAx6B,MAAAgrB,GAEAwP,GAAAh6F,QAAA,WACAg6F,GAAAx6B,MAAAw6B,GAAAh6F,QAAA24E,GAQA,QAAAshB,IAAAzX,EAAAuW,GACA,QAAAmB,GAAAzP,EAAAC,GACA,GAAAyP,GAAAtlL,KAAAmd,IAAAy4J,GAAAM,EAAAl2K,KAAAmd,IAAA04J,GAAA/7K,EAAA6zK,EAAA2X,EAAApP,EACA,QAAAp8K,EAAAo8K,EAAAl2K,KAAAgvH,IAAA4mD,GAAA97K,EAAAkG,KAAAgvH,IAAA6mD,IAMA,MAJAwP,GAAA52G,OAAA,SAAAxmE,EAAA6B,GACA,GAAAu1K,GAAAr/K,KAAA64J,KAAA5wJ,EAAAA,EAAA6B,EAAAA,GAAA/T,EAAAmuL,EAAA7E,GAAAkG,EAAAvlL,KAAAgvH,IAAAj5H,GAAAyvL,EAAAxlL,KAAAmd,IAAApnB,EACA,QAAAiK,KAAA4rK,MAAA3jK,EAAAs9K,EAAAlG,EAAAmG,GAAAxlL,KAAAkqK,KAAAmV,GAAAv1K,EAAAy7K,EAAAlG,KAEAgG,EAiBA,QAAAI,IAAAvK,EAAAG,GAKA,QAAAx2B,GAAA+wB,EAAAC,GACA1rK,EAAA,EACA0rK,GAAA5L,GAAAoN,KAAAxB,GAAA5L,GAAAoN,IAEAxB,EAAA5L,GAAAoN,KAAAxB,EAAA5L,GAAAoN,GAEA,IAAAgI,GAAAl1K,EAAAnK,KAAAs1H,IAAA9uH,EAAAqvK,GAAAt6K,EACA,QAAA8jL,EAAAr/K,KAAAgvH,IAAAzzH,EAAAq6K,GAAAzrK,EAAAk1K,EAAAr/K,KAAAmd,IAAA5hB,EAAAq6K,IAXA,GAAAS,GAAAr2K,KAAAmd,IAAA+9J,GAAA10K,EAAA,SAAAqvK,GACA,MAAA71K,MAAA0lL,IAAA5b,GAAA,EAAA+L,EAAA,IACAt6K,EAAA2/K,IAAAG,EAAAr7K,KAAAgvH,IAAAksD,GAAAl7K,KAAAmmC,IAAAkwI,EAAAr2K,KAAAmd,IAAAk+J,IAAAr7K,KAAAmmC,IAAA3/B,EAAA60K,GAAA70K,EAAA00K,IAAA/wK,EAAAksK,EAAAr2K,KAAAs1H,IAAA9uH,EAAA00K,GAAA3/K,GAAAA,CACA,OAAAA,IAUAspJ,EAAAp2E,OAAA,SAAAxmE,EAAA6B,GACA,GAAAy1K,GAAAp1K,EAAAL,EAAAu1K,EAAA1V,EAAApuK,GAAAyE,KAAA64J,KAAA5wJ,EAAAA,EAAAs3K,EAAAA,EACA,QAAAv/K,KAAA4rK,MAAA3jK,EAAAs3K,GAAAhkL,EAAA,EAAAyE,KAAA07K,KAAA17K,KAAAs1H,IAAAnrH,EAAAk1K,EAAA,EAAA9jL,IAAA0uK,KAEAplB,GAdA8gC,GAmBA,QAAAC,IAAA1K,EAAAG,GAGA,QAAAx2B,GAAA+wB,EAAAC,GACA,GAAAwJ,GAAAj3K,EAAAytK,CACA,QAAAwJ,EAAAr/K,KAAAgvH,IAAAzzH,EAAAq6K,GAAAxtK,EAAAi3K,EAAAr/K,KAAAmd,IAAA5hB,EAAAq6K,IAJA,GAAAS,GAAAr2K,KAAAmd,IAAA+9J,GAAA3/K,EAAA2/K,IAAAG,EAAAr7K,KAAAgvH,IAAAksD,IAAA7E,EAAAr2K,KAAAmd,IAAAk+J,KAAAA,EAAAH,GAAA9yK,EAAAiuK,EAAA96K,EAAA2/K,CACA,OAAAxoJ,IAAAn3B,GAAA87K,GAAAkM,IAKA1+B,EAAAp2E,OAAA,SAAAxmE,EAAA6B,GACA,GAAAy1K,GAAAn3K,EAAA0B,CACA,QAAA9J,KAAA4rK,MAAA3jK,EAAAs3K,GAAAhkL,EAAA6M,EAAAuhK,EAAApuK,GAAAyE,KAAA64J,KAAA5wJ,EAAAA,EAAAs3K,EAAAA,KAEA16B,GAWA,QAAA8gC,IAAA/P,EAAAC,GACA,OAAAD,EAAA51K,KAAAmmC,IAAAnmC,KAAA0lL,IAAA5b,GAAA,EAAA+L,EAAA,KAKA,QAAAgQ,IAAA9E,GACA,GAAA+E,GAAAxqL,EAAAgnL,GAAAvB,GAAApT,EAAAryK,EAAAqyK,MAAA2V,EAAAhoL,EAAAgoL,UAAAD,EAAA/nL,EAAA+nL,UAqBA,OApBA/nL,GAAAqyK,MAAA,WACA,GAAAjnK,GAAAinK,EAAAv1K,MAAAkD,EAAAwB,UACA,OAAA4J,KAAApL,EAAAwqL,EAAAxqL,EAAA+nL,WAAA,MAAA/nL,EAAAoL,GAEApL,EAAAgoL,UAAA,WACA,GAAA58K,GAAA48K,EAAAlrL,MAAAkD,EAAAwB,UACA,OAAA4J,KAAApL,EAAAwqL,EAAAxqL,EAAA+nL,WAAA,MAAA/nL,EAAAoL,GAEApL,EAAA+nL,WAAA,SAAArqL,GACA,GAAA0N,GAAA28K,EAAAjrL,MAAAkD,EAAAwB,UACA,IAAA4J,IAAApL,GACA,GAAAwqL,EAAA,MAAA9sL,EAAA,CACA,GAAAc,GAAAgwK,GAAA6D,IAAAnnK,EAAA88K,GACAD,KAAA78K,EAAA,GAAA1M,EAAA0M,EAAA,GAAA1M,IAAA0M,EAAA,GAAA1M,EAAA0M,EAAA,GAAA1M,UAEAgsL,KACAp/K,EAAA,KAEA,OAAAA,IAEApL,EAAA+nL,WAAA,MAmBA,QAAA0C,IAAAnQ,EAAAC,GACA,OAAA71K,KAAAmmC,IAAAnmC,KAAA0lL,IAAA5b,GAAA,EAAA+L,EAAA,KAAAD,GAiBA,QAAAoQ,IAAAlwL,GACA,MAAAA,GAAA,GAEA,QAAAmwL,IAAAnwL,GACA,MAAAA,GAAA,GA2BA,QAAAowL,IAAAvM,GAEA,IAAA,GADAp+K,GAAAo+K,EAAApjL,OAAA4vL,GAAA,EAAA,GAAAC,EAAA,EACAjvL,EAAA,EAAAA,EAAAoE,EAAApE,IAAA,CACA,KAAAivL,EAAA,GAAAxc,EAAA+P,EAAAwM,EAAAC,EAAA,IAAAzM,EAAAwM,EAAAC,EAAA,IAAAzM,EAAAxiL,KAAA,KAAAivL,CACAD,GAAAC,KAAAjvL,EAEA,MAAAgvL,GAAA9tL,MAAA,EAAA+tL,GAEA,QAAAC,IAAAhxL,EAAAC,GACA,MAAAD,GAAA,GAAAC,EAAA,IAAAD,EAAA,GAAAC,EAAA,GAqDA,QAAAgxL,IAAAzwL,EAAAR,EAAAC,GACA,OAAAA,EAAA,GAAAD,EAAA,KAAAQ,EAAA,GAAAR,EAAA,KAAAC,EAAA,GAAAD,EAAA,KAAAQ,EAAA,GAAAR,EAAA,IAEA,QAAAkxL,IAAAxwL,EAAAD,EAAAT,EAAAC,GACA,GAAA62H,GAAAp2H,EAAA,GAAAywL,EAAAnxL,EAAA,GAAAoxL,EAAA3wL,EAAA,GAAAq2H,EAAAu6D,EAAApxL,EAAA,GAAAkxL,EAAAp6D,EAAAr2H,EAAA,GAAA4wL,EAAAtxL,EAAA,GAAAuxL,EAAA9wL,EAAA,GAAAs2H,EAAAy6D,EAAAvxL,EAAA,GAAAqxL,EAAAp9K,GAAAm9K,GAAAt6D,EAAAu6D,GAAAE,GAAA16D,EAAAq6D,KAAAK,EAAAJ,EAAAC,EAAAE,EACA,QAAAz6D,EAAA5iH,EAAAk9K,EAAAr6D,EAAA7iH,EAAAq9K,GAEA,QAAAE,IAAAzR,GACA,GAAAhgL,GAAAggL,EAAA,GAAA//K,EAAA+/K,EAAAA,EAAA9+K,OAAA,EACA,SAAAlB,EAAA,GAAAC,EAAA,IAAAD,EAAA,GAAAC,EAAA,IAGA,QAAAyxL,MACAC,GAAApxL,MACAA,KAAAmiG,KAAAniG,KAAAqxL,KAAArxL,KAAAu1H,OAAA,KAEA,QAAA+7D,IAAAD,GACA,GAAAE,GAAAC,GAAAl9K,OAAA,GAAA68K,GAEA,OADAI,GAAAF,KAAAA,EACAE,EAEA,QAAAE,IAAAF,GACAG,GAAAH,GACAI,GAAA/kL,OAAA2kL,GACAC,GAAAjrL,KAAAgrL,GACAH,GAAAG,GAEA,QAAAK,IAAAL,GACA,GAAAh8D,GAAAg8D,EAAAh8D,OAAAljH,EAAAkjH,EAAAljH,EAAA6B,EAAAqhH,EAAAqtD,GAAAnzD,GACAp9G,EAAAA,EACA6B,EAAAA,GACAgkC,EAAAq5I,EAAArvL,EAAAuR,EAAA89K,EAAAvvL,EAAA6vL,GAAAN,EACAE,IAAAF,EAEA,KADA,GAAAO,GAAA55I,EACA45I,EAAAv8D,QAAAz4F,GAAAzqB,EAAAy/K,EAAAv8D,OAAAljH,GAAAovK,IAAA3kJ,GAAA5oB,EAAA49K,EAAAv8D,OAAAqtD,IAAAnB,IACAvpI,EAAA45I,EAAA5vL,EACA2vL,EAAA5iL,QAAA6iL,GACAL,GAAAK,GACAA,EAAA55I,CAEA25I,GAAA5iL,QAAA6iL,GACAJ,GAAAI,EAEA,KADA,GAAAC,GAAAt+K,EACAs+K,EAAAx8D,QAAAz4F,GAAAzqB,EAAA0/K,EAAAx8D,OAAAljH,GAAAovK,IAAA3kJ,GAAA5oB,EAAA69K,EAAAx8D,OAAAqtD,IAAAnB,IACAhuK,EAAAs+K,EAAA/vL,EACA6vL,EAAAtrL,KAAAwrL,GACAN,GAAAM,GACAA,EAAAt+K,CAEAo+K,GAAAtrL,KAAAwrL,GACAL,GAAAK,EACA,IAAAC,GAAAC,EAAAJ,EAAAlxL,MACA,KAAAqxL,EAAA,EAAAA,EAAAC,IAAAD,EACAD,EAAAF,EAAAG,GACAF,EAAAD,EAAAG,EAAA,GACAE,GAAAH,EAAA5vF,KAAA2vF,EAAAT,KAAAU,EAAAV,KAAA5hE,EAEAqiE,GAAAD,EAAA,GACAE,EAAAF,EAAAI,EAAA,GACAF,EAAA5vF,KAAAgwF,GAAAL,EAAAT,KAAAU,EAAAV,KAAA,KAAA5hE,GACA2iE,GAAAN,GACAM,GAAAL,GAEA,QAAAM,IAAAhB,GAEA,IADA,GAAAS,GAAAC,EAAAO,EAAAC,EAAAlgL,EAAAg/K,EAAAh/K,EAAAmgL,EAAAnB,EAAAn9K,EAAA8kC,EAAA24I,GAAAvuL,EACA41C,GAEA,GADAs5I,EAAAG,GAAAz5I,EAAAw5I,GAAAngL,EACAigL,EAAA7Q,GAAAzoI,EAAAA,EAAAj3C,MAAA,CAEA,GADAwwL,EAAAlgL,EAAAqgL,GAAA15I,EAAAw5I,KACAD,EAAA9Q,IAMA,CACA6Q,GAAA7Q,IACAqQ,EAAA94I,EAAA92C,EACA6vL,EAAA/4I,GACAu5I,GAAA9Q,IACAqQ,EAAA94I,EACA+4I,EAAA/4I,EAAAh3C,GAEA8vL,EAAAC,EAAA/4I,CAEA,OAfA,IAAAA,EAAApkC,EAAA,CACAk9K,EAAA94I,CACA,OAEAA,EAAAA,EAAApkC,EAeA,GAAA+9K,GAAArB,GAAAD,EAEA,IADAM,GAAA3oG,OAAA8oG,EAAAa,GACAb,GAAAC,EAAA,CACA,GAAAD,IAAAC,EAOA,MANAL,IAAAI,GACAC,EAAAT,GAAAQ,EAAAT,MACAM,GAAA3oG,OAAA2pG,EAAAZ,GACAY,EAAAxwF,KAAA4vF,EAAA5vF,KAAAgwF,GAAAL,EAAAT,KAAAsB,EAAAtB,MACAe,GAAAN,OACAM,IAAAL,EAGA,KAAAA,EAEA,YADAY,EAAAxwF,KAAAgwF,GAAAL,EAAAT,KAAAsB,EAAAtB,MAGAK,IAAAI,GACAJ,GAAAK,EACA,IAAAa,GAAAd,EAAAT,KAAApJ,EAAA2K,EAAAvgL,EAAA61K,EAAA0K,EAAA1+K,EAAAi0K,EAAAkJ,EAAAh/K,EAAA41K,EAAA1pB,EAAA8yB,EAAAn9K,EAAAg0K,EAAA2K,EAAAd,EAAAV,KAAA1O,EAAAkQ,EAAAxgL,EAAA41K,EAAArF,EAAAiQ,EAAA3+K,EAAAg0K,EAAAhoL,EAAA,GAAAioL,EAAAvF,EAAArkB,EAAAokB,GAAA/2K,EAAAu8K,EAAAA,EAAA5pB,EAAAA,EAAAu0B,EAAAnQ,EAAAA,EAAAC,EAAAA,EAAAnzD,GACAp9G,GAAAuwK,EAAAh3K,EAAA2yJ,EAAAu0B,GAAA5yL,EAAA+nL,EACA/zK,GAAAi0K,EAAA2K,EAAAnQ,EAAA/2K,GAAA1L,EAAAgoL,EAEAgK,IAAAH,EAAA5vF,KAAAywF,EAAAC,EAAApjE,GACAkjE,EAAAxwF,KAAAgwF,GAAAS,EAAAvB,EAAA,KAAA5hE,GACAsiE,EAAA5vF,KAAAgwF,GAAAd,EAAAwB,EAAA,KAAApjE,GACA2iE,GAAAN,GACAM,GAAAL,IAEA,QAAAU,IAAAt6D,EAAAq6D,GACA,GAAAnB,GAAAl5D,EAAAk5D,KAAA0B,EAAA1B,EAAAh/K,EAAA2gL,EAAA3B,EAAAn9K,EAAA++K,EAAAD,EAAAR,CACA,KAAAS,EAAA,MAAAF,EACA,IAAAjB,GAAA35D,EAAAj2H,CACA,KAAA4vL,EAAA,QAAA9qJ,EAAAA,EACAqqJ,GAAAS,EAAAT,IACA,IAAA6B,GAAA7B,EAAAh/K,EAAA8gL,EAAA9B,EAAAn9K,EAAAk/K,EAAAD,EAAAX,CACA,KAAAY,EAAA,MAAAF,EACA,IAAAG,GAAAH,EAAAH,EAAAO,EAAA,EAAAL,EAAA,EAAAG,EAAA1zL,EAAA2zL,EAAAD,CACA,OAAAE,KAAA5zL,EAAA0K,KAAA64J,KAAAvjK,EAAAA,EAAA,EAAA4zL,GAAAD,EAAAA,IAAA,EAAAD,GAAAD,EAAAC,EAAA,EAAAJ,EAAAC,EAAA,KAAAK,EAAAP,GACAA,EAAAG,GAAA,EAEA,QAAAR,IAAAv6D,EAAAq6D,GACA,GAAAT,GAAA55D,EAAAn2H,CACA,IAAA+vL,EAAA,MAAAU,IAAAV,EAAAS,EACA,IAAAnB,GAAAl5D,EAAAk5D,IACA,OAAAA,GAAAn9K,IAAAs+K,EAAAnB,EAAAh/K,EAAA20B,EAAAA,EAEA,QAAAusJ,IAAAlC,GACArxL,KAAAqxL,KAAAA,EACArxL,KAAAwzL,SAWA,QAAAC,IAAAC,GAEA,IADA,GAAAj9D,GAAAC,EAAAk6D,EAAAG,EAAA97J,EAAA0+J,EAAAC,EAAAC,EAAAtvL,EAAAC,EAAA29K,EAAAuR,EAAA,GAAA,GAAAn9D,EAAAm9D,EAAA,GAAA,GAAAzR,EAAAyR,EAAA,GAAA,GAAAl9D,EAAAk9D,EAAA,GAAA,GAAApjD,EAAAwjD,GAAAC,EAAAzjD,EAAA3vI,OACAozL,KAEA,GADA9+J,EAAAq7G,EAAAyjD,GACA9+J,GAAAA,EAAA0oB,UAIA,IAHAi2I,EAAA3+J,EAAAu+J,MACAK,EAAAD,EAAAjzL,OACAgzL,EAAA,EACAA,EAAAE,GACArvL,EAAAovL,EAAAD,GAAAnvL,MAAAosL,EAAApsL,EAAA6N,EAAA0+K,EAAAvsL,EAAA0P,EACA3P,EAAAqvL,IAAAD,EAAAE,GAAAtvL,QAAAkyH,EAAAlyH,EAAA8N,EAAAqkH,EAAAnyH,EAAA2P,GACA4oB,GAAA8zJ,EAAAn6D,GAAAgrD,IAAA3kJ,GAAAi0J,EAAAr6D,GAAA+qD,MACAmS,EAAAriL,OAAAoiL,EAAA,EAAA,GAAAK,IAAAC,GAAAh/J,EAAAo8J,KAAA7sL,EAAAs4B,GAAA8zJ,EAAAzO,GAAAV,IAAAjrD,EAAAu6D,EAAAtP,IACApvK,EAAA8vK,EACAjuK,EAAA4oB,GAAA25F,EAAA0rD,GAAAV,GAAA/qD,EAAAF,GACA15F,GAAAi0J,EAAAv6D,GAAAirD,IAAAlrD,EAAAq6D,EAAAnP,IACApvK,EAAAyqB,GAAA45F,EAAAF,GAAAirD,GAAAhrD,EAAAF,EACAriH,EAAAsiH,GACA15F,GAAA8zJ,EAAAr6D,GAAAkrD,IAAAsP,EAAA9O,EAAAR,IACApvK,EAAAkkH,EACAriH,EAAA4oB,GAAA25F,EAAAF,GAAAkrD,GAAA/qD,EAAAurD,GACAnlJ,GAAAi0J,EAAA9O,GAAAR,IAAAmP,EAAAzO,EAAAV,IACApvK,EAAAyqB,GAAA45F,EAAAurD,GAAAR,GAAAhrD,EAAA0rD,EACAjuK,EAAA+tK,GACA,MAAAhtJ,EAAAo8J,KAAA,SACAwC,GAKA,QAAAK,IAAAz0L,EAAAC,GACA,MAAAA,GAAA4uL,MAAA7uL,EAAA6uL,MAEA,QAAA6F,MACA/C,GAAApxL,MACAA,KAAAqS,EAAArS,KAAAkU,EAAAlU,KAAAm4H,IAAAn4H,KAAAqxL,KAAArxL,KAAA4iL,GAAA,KAEA,QAAAwP,IAAAj6D,GACA,GAAA25D,GAAA35D,EAAAj2H,EAAA6vL,EAAA55D,EAAAn2H,CACA,IAAA8vL,GAAAC,EAAA,CACA,GAAAa,GAAAd,EAAAT,KAAA+C,EAAAj8D,EAAAk5D,KAAAwB,EAAAd,EAAAV,IACA,IAAAuB,IAAAC,EAAA,CACA,GAAA1K,GAAAiM,EAAA/hL,EAAAksJ,EAAA61B,EAAAlgL,EAAA+zK,EAAA2K,EAAAvgL,EAAA81K,EAAAD,EAAA0K,EAAA1+K,EAAAqqJ,EAAAokB,EAAAkQ,EAAAxgL,EAAA81K,EAAAvF,EAAAiQ,EAAA3+K,EAAAqqJ,EACAr+J,EAAA,GAAA+nL,EAAArF,EAAAsF,EAAAvF,EACA,MAAAziL,IAAAm0L,IAAA,CACA,GAAA5vL,GAAAwjL,EAAAA,EAAAC,EAAAA,EAAA4K,EAAAnQ,EAAAA,EAAAC,EAAAA,EAAAvwK,GAAAuwK,EAAAn+K,EAAAyjL,EAAA4K,GAAA5yL,EAAAgU,GAAA+zK,EAAA6K,EAAAnQ,EAAAl+K,GAAAvE,EAAA0iL,EAAA1uK,EAAAqqJ,EACAhpC,EAAA++D,GAAAhgL,OAAA,GAAA6/K,GACA5+D,GAAA4C,IAAAA,EACA5C,EAAA87D,KAAA+C,EACA7+D,EAAAljH,EAAAA,EAAA81K,EACA5yD,EAAArhH,EAAA0uK,EAAAx4K,KAAA64J,KAAA5wJ,EAAAA,EAAA6B,EAAAA,GACAqhH,EAAAqtD,GAAAA,EACAzqD,EAAA5C,OAAAA,CAEA,KADA,GAAAtxG,GAAA,KAAA+0B,EAAAu7I,GAAAnxL,EACA41C,GACA,GAAAu8E,EAAArhH,EAAA8kC,EAAA9kC,GAAAqhH,EAAArhH,IAAA8kC,EAAA9kC,GAAAqhH,EAAAljH,GAAA2mC,EAAA3mC,EAAA,CACA,IAAA2mC,EAAAj3C,EAAA,CACAkiB,EAAA+0B,EAAA92C,CACA,OAFA82C,EAAAA,EAAAj3C,MAIA,CACA,IAAAi3C,EAAApkC,EAAA,CACAqP,EAAA+0B,CACA,OAFAA,EAAAA,EAAApkC,EAMA2/K,GAAAvrG,OAAA/kE,EAAAsxG,GACAtxG,IAAAuwK,GAAAj/D,MAEA,QAAAm8D,IAAAv5D,GACA,GAAA5C,GAAA4C,EAAA5C,MACAA,KACAA,EAAArzH,IAAAsyL,GAAAj/D,EAAAvzH,GACAuyL,GAAA3nL,OAAA2oH,GACA++D,GAAA/tL,KAAAgvH,GACA67D,GAAA77D,GACA4C,EAAA5C,OAAA,MAGA,QAAAk/D,IAAAf,GAEA,IADA,GAAAvxL,GAAAqxL,EAAAkB,GAAAjR,EAAAuE,GAAA0L,EAAA,GAAA,GAAAA,EAAA,GAAA,GAAAA,EAAA,GAAA,GAAAA,EAAA,GAAA,IAAAnyL,EAAAiyL,EAAA7yL,OACAY,KACAY,EAAAqxL,EAAAjyL,KACAozL,GAAAxyL,EAAAuxL,KAAAjQ,EAAAthL,IAAA26B,GAAA36B,EAAA1C,EAAA4S,EAAAlQ,EAAAzC,EAAA2S,GAAAovK,IAAA3kJ,GAAA36B,EAAA1C,EAAAyU,EAAA/R,EAAAzC,EAAAwU,GAAAutK,MACAt/K,EAAA1C,EAAA0C,EAAAzC,EAAA,KACA8zL,EAAAjiL,OAAAhQ,EAAA,IAIA,QAAAozL,IAAAxyF,EAAAuxF,GACA,GAAA7oK,GAAAs3E,EAAAziG,CACA,IAAAmrB,EAAA,OAAA,CACA,IAAA+pK,GAAAtpL,EAAA1E,EAAAu7F,EAAA1iG,EAAA0iL,EAAAuR,EAAA,GAAA,GAAAn9D,EAAAm9D,EAAA,GAAA,GAAAzR,EAAAyR,EAAA,GAAA,GAAAl9D,EAAAk9D,EAAA,GAAA,GAAAd,EAAAzwF,EAAA38F,EAAAqtL,EAAA1wF,EAAAvhG,EAAAi0L,EAAAjC,EAAAvgL,EAAAyiL,EAAAlC,EAAA1+K,EAAA6gL,EAAAlC,EAAAxgL,EAAA2iL,EAAAnC,EAAA3+K,EAAA/I,GAAA0pL,EAAAE,GAAA,EAAAE,GAAAH,EAAAE,GAAA,CACA,IAAAA,IAAAF,EAAA,CACA,GAAA3pL,EAAAg3K,GAAAh3K,GAAAorH,EAAA,MACA,IAAAs+D,EAAAE,EAAA,CACA,GAAAnuL,GAGA,GAAAA,EAAAsN,GAAAsiH,EAAA,WAHA5vH,IACAyL,EAAAlH,EACA+I,EAAA+tK,EAEAp3J,IACAxY,EAAAlH,EACA+I,EAAAsiH,OAEA,CACA,GAAA5vH,GAGA,GAAAA,EAAAsN,EAAA+tK,EAAA,WAHAr7K,IACAyL,EAAAlH,EACA+I,EAAAsiH,EAEA3rG,IACAxY,EAAAlH,EACA+I,EAAA+tK,QAMA,IAFA2S,GAAAC,EAAAE,IAAAC,EAAAF,GACAxpL,EAAA2pL,EAAAL,EAAAzpL,EACAypL,GAAA,GAAAA,EAAA,EACA,GAAAC,EAAAE,EAAA,CACA,GAAAnuL,GAGA,GAAAA,EAAAsN,GAAAsiH,EAAA,WAHA5vH,IACAyL,GAAA4vK,EAAA32K,GAAAspL,EACA1gL,EAAA+tK,EAEAp3J,IACAxY,GAAAmkH,EAAAlrH,GAAAspL,EACA1gL,EAAAsiH,OAEA,CACA,GAAA5vH,GAGA,GAAAA,EAAAsN,EAAA+tK,EAAA,WAHAr7K,IACAyL,GAAAmkH,EAAAlrH,GAAAspL,EACA1gL,EAAAsiH,EAEA3rG,IACAxY,GAAA4vK,EAAA32K,GAAAspL,EACA1gL,EAAA+tK,OAIA,IAAA6S,EAAAE,EAAA,CACA,GAAApuL,GAGA,GAAAA,EAAAyL,GAAAkkH,EAAA,WAHA3vH,IACAyL,EAAA8vK,EACAjuK,EAAA0gL,EAAAzS,EAAA72K,EAEAuf,IACAxY,EAAAkkH,EACAriH,EAAA0gL,EAAAr+D,EAAAjrH,OAEA,CACA,GAAA1E,GAGA,GAAAA,EAAAyL,EAAA8vK,EAAA,WAHAv7K,IACAyL,EAAAkkH,EACAriH,EAAA0gL,EAAAr+D,EAAAjrH,EAEAuf,IACAxY,EAAA8vK,EACAjuK,EAAA0gL,EAAAzS,EAAA72K,GAOA,MAFA62F,GAAA1iG,EAAAmH,EACAu7F,EAAAziG,EAAAmrB,GACA,EAEA,QAAAqqK,IAAAtC,EAAAC,GACA7yL,KAAAwF,EAAAotL,EACA5yL,KAAAY,EAAAiyL,EACA7yL,KAAAP,EAAAO,KAAAN,EAAA,KAEA,QAAAyyL,IAAAS,EAAAC,EAAAjsL,EAAAikB,GACA,GAAAs3E,GAAA,GAAA+yF,IAAAtC,EAAAC,EAMA,OALA6B,IAAAnuL,KAAA47F,GACAv7F,GAAAsrL,GAAA/vF,EAAAywF,EAAAC,EAAAjsL,GACAikB,GAAAqnK,GAAA/vF,EAAA0wF,EAAAD,EAAA/nK,GACAipK,GAAAlB,EAAArxL,GAAAiyL,MAAAjtL,KAAA,GAAAytL,IAAA7xF,EAAAywF,EAAAC,IACAiB,GAAAjB,EAAAtxL,GAAAiyL,MAAAjtL,KAAA,GAAAytL,IAAA7xF,EAAA0wF,EAAAD,IACAzwF,EAEA,QAAA8xF,IAAArB,EAAAhsL,EAAAikB,GACA,GAAAs3E,GAAA,GAAA+yF,IAAAtC,EAAA,KAIA,OAHAzwF,GAAA1iG,EAAAmH,EACAu7F,EAAAziG,EAAAmrB,EACA6pK,GAAAnuL,KAAA47F,GACAA,EAEA,QAAA+vF,IAAA/vF,EAAAywF,EAAAC,EAAApjE,GACAttB,EAAA1iG,GAAA0iG,EAAAziG,EAIAyiG,EAAA38F,IAAAqtL,EACA1wF,EAAAziG,EAAA+vH,EAEAttB,EAAA1iG,EAAAgwH,GANAttB,EAAA1iG,EAAAgwH,EACAttB,EAAA38F,EAAAotL,EACAzwF,EAAAvhG,EAAAiyL,GAOA,QAAAmB,IAAA7xF,EAAAywF,EAAAC,GACA,GAAAjsL,GAAAu7F,EAAA1iG,EAAAorB,EAAAs3E,EAAAziG,CACAM,MAAAmiG,KAAAA,EACAniG,KAAAqxL,KAAAuB,EACA5yL,KAAAsuL,MAAAuE,EAAAzoL,KAAA4rK,MAAA6c,EAAA3+K,EAAA0+K,EAAA1+K,EAAA2+K,EAAAxgL,EAAAugL,EAAAvgL,GAAA8vF,EAAA38F,IAAAotL,EAAAxoL,KAAA4rK,MAAAnrJ,EAAAxY,EAAAzL,EAAAyL,EAAAzL,EAAAsN,EAAA2W,EAAA3W,GAAA9J,KAAA4rK,MAAApvK,EAAAyL,EAAAwY,EAAAxY,EAAAwY,EAAA3W,EAAAtN,EAAAsN,GAUA,QAAAihL,MACAn1L,KAAAoD,EAAA,KAEA,QAAAguL,IAAAp4I,GACAA,EAAAlkC,EAAAkkC,EAAA3kC,EAAA2kC,EAAAj3C,EAAAi3C,EAAApkC,EAAAokC,EAAA92C,EAAA82C,EAAAh3C,EAAA,KAkKA,QAAAozL,IAAAC,EAAAr8I,GACA,GAAA/4C,GAAA+4C,EAAA1wC,EAAA0wC,EAAApkC,EAAAkE,EAAA7Y,EAAA6U,CACAgE,GACAA,EAAA/W,IAAA9B,EAAA6Y,EAAA/W,EAAAuG,EAAAwQ,EAAAlE,EAAAtM,EAEA+sL,EAAAjyL,EAAAkF,EAEAA,EAAAwM,EAAAgE,EACA7Y,EAAA6U,EAAAxM,EACArI,EAAA2U,EAAAtM,EAAAvG,EACA9B,EAAA2U,IAAA3U,EAAA2U,EAAAE,EAAA7U,GACAqI,EAAAvG,EAAA9B,EAEA,QAAAq1L,IAAAD,EAAAr8I,GACA,GAAA/4C,GAAA+4C,EAAA1wC,EAAA0wC,EAAAj3C,EAAA+W,EAAA7Y,EAAA6U,CACAgE,GACAA,EAAA/W,IAAA9B,EAAA6Y,EAAA/W,EAAAuG,EAAAwQ,EAAAlE,EAAAtM,EAEA+sL,EAAAjyL,EAAAkF,EAEAA,EAAAwM,EAAAgE,EACA7Y,EAAA6U,EAAAxM,EACArI,EAAA8B,EAAAuG,EAAAsM,EACA3U,EAAA8B,IAAA9B,EAAA8B,EAAA+S,EAAA7U,GACAqI,EAAAsM,EAAA3U,EAEA,QAAAs1L,IAAAv8I,GACA,KAAAA,EAAAj3C,GAAAi3C,EAAAA,EAAAj3C,CACA,OAAAi3C,GAEA,QAAAw8I,IAAAC,EAAAC,GACA,GAAAvT,GAAAF,EAAA1sD,EAAA87D,EAAAoE,EAAAnkL,KAAAqkL,IAAArhL,KAKA,KAJAogL,MACAZ,GAAA,GAAA/mL,OAAA0oL,EAAA90L,QACAgxL,GAAA,GAAAwD,IACAZ,GAAA,GAAAY,MAGA,GADA5/D,EAAAi/D,GACAnD,KAAA97D,GAAA87D,EAAAn9K,EAAAqhH,EAAArhH,GAAAm9K,EAAAn9K,IAAAqhH,EAAArhH,GAAAm9K,EAAAh/K,EAAAkjH,EAAAljH,GACAg/K,EAAAh/K,IAAA8vK,GAAAkP,EAAAn9K,IAAA+tK,IACA6R,GAAAzC,EAAA9vL,GAAA,GAAAgyL,IAAAlC,GACAgB,GAAAhB,GACAlP,EAAAkP,EAAAh/K,EAAA4vK,EAAAoP,EAAAn9K,GAEAm9K,EAAAoE,EAAAnhL,UACA,CAAA,IAAAihH,EAGA,KAFAq8D,IAAAr8D,EAAA4C,KAKAu9D,IAAAjB,GAAAiB,GAAAjC,GAAAiC,GACA,IAAAE,IACAtlD,MAAAwjD,GACAN,MAAAkB,GAGA,OADA/C,IAAA4C,GAAAG,GAAAZ,GAAA,KACA8B,EAEA,QAAAD,IAAAl2L,EAAAC,GACA,MAAAA,GAAAwU,EAAAzU,EAAAyU,GAAAxU,EAAA2S,EAAA5S,EAAA4S,EAqEA,QAAAwjL,IAAAp2L,EAAAC,EAAAS,GACA,OAAAV,EAAA4S,EAAAlS,EAAAkS,IAAA3S,EAAAwU,EAAAzU,EAAAyU,IAAAzU,EAAA4S,EAAA3S,EAAA2S,IAAAlS,EAAA+T,EAAAzU,EAAAyU,GAgHA,QAAA4hL,IAAA51L,GACA,MAAAA,GAAAmS,EAEA,QAAA0jL,IAAA71L,GACA,MAAAA,GAAAgU,EAEA,QAAA8hL,MACA,OACApuF,MAAA,EACAquF,SACAlhC,MAAA,KACA1iJ,EAAA,KACA6B,EAAA,MAGA,QAAAgiL,IAAAvyL,EAAAq1C,EAAAu9E,EAAAC,EAAAC,EAAAC,GACA,IAAA/yH,EAAAq1C,EAAAu9E,EAAAC,EAAAC,EAAAC,GAAA,CACA,GAAAy/D,GAAA,IAAA5/D,EAAAE,GAAA2/D,EAAA,IAAA5/D,EAAAE,GAAAj8G,EAAAu+B,EAAAi9I,KACAx7K,GAAA,IAAAy7K,GAAAvyL,EAAA8W,EAAA,GAAA87G,EAAAC,EAAA2/D,EAAAC,GACA37K,EAAA,IAAAy7K,GAAAvyL,EAAA8W,EAAA,GAAA07K,EAAA3/D,EAAAC,EAAA2/D,GACA37K,EAAA,IAAAy7K,GAAAvyL,EAAA8W,EAAA,GAAA87G,EAAA6/D,EAAAD,EAAAz/D,GACAj8G,EAAA,IAAAy7K,GAAAvyL,EAAA8W,EAAA,GAAA07K,EAAAC,EAAA3/D,EAAAC,IAGA,QAAA2/D,IAAA/9K,EAAAjG,EAAA6B,EAAAiuK,EAAAF,EAAA2O,EAAAG,GACA,GAAAuF,GAAAC,EAAAvvJ,EAAAA,CAiCA,OAhCA,SAAAhzB,GAAAglC,EAAAu9E,EAAAC,EAAAC,EAAAC,GACA,KAAAH,EAAAq6D,GAAAp6D,EAAAu6D,GAAAt6D,EAAA0rD,GAAAzrD,EAAAurD,GAAA,CACA,GAAAltB,EAAA/7G,EAAA+7G,MAAA,CACA,GAAAA,GAAAx2E,EAAAlsE,EAAA2mC,EAAA3mC,EAAAosE,EAAAvqE,EAAA8kC,EAAA9kC,EAAAsiL,EAAAj4G,EAAAA,EAAAE,EAAAA,CACA,IAAA+3G,EAAAD,EAAA,CACA,GAAAnnG,GAAAhlF,KAAA64J,KAAAszB,EAAAC,EACArU,GAAA9vK,EAAA+8E,EAAA6yF,EAAA/tK,EAAAk7E,EACAwhG,EAAAv+K,EAAA+8E,EAAA2hG,EAAA78K,EAAAk7E,EACAknG,EAAAvhC,GAIA,IAAA,GADAt6I,GAAAu+B,EAAAi9I,MAAAQ,EAAA,IAAAlgE,EAAAE,GAAAigE,EAAA,IAAAlgE,EAAAE,GAAA75F,EAAAxqB,GAAAokL,EAAAziC,EAAA9/I,GAAAwiL,EACAn1L,EAAAyyJ,GAAA,EAAAn3H,EAAA74B,EAAAzC,EAAA,EAAAA,EAAAyC,IAAAzC,EACA,GAAAy3C,EAAAv+B,EAAA,EAAAlZ,GAAA,OAAA,EAAAA,GACA,IAAA,GACAyS,EAAAglC,EAAAu9E,EAAAC,EAAAigE,EAAAC,EACA,MAEA,KAAA,GACA1iL,EAAAglC,EAAAy9I,EAAAjgE,EAAAC,EAAAigE,EACA,MAEA,KAAA,GACA1iL,EAAAglC,EAAAu9E,EAAAmgE,EAAAD,EAAA//D,EACA,MAEA,KAAA,GACA1iH,EAAAglC,EAAAy9I,EAAAC,EAAAjgE,EAAAC,MAIAp+G,EAAA6pK,EAAAF,EAAA2O,EAAAG,GACAuF,EAGA,QAAAK,IAAAl3L,EAAAC,GACAD,EAAAgvK,GAAA8G,IAAA91K,GACAC,EAAA+uK,GAAA8G,IAAA71K,EACA,IAAAk3L,GAAAn3L,EAAAmB,EAAAi2L,EAAAp3L,EAAAmE,EAAA2H,EAAA9L,EAAAC,EAAA2iI,EAAA3iI,EAAAkB,EAAAg2L,EAAApuB,EAAA9oK,EAAAkE,EAAAizL,EAAA9rL,EAAArL,EAAAA,EAAA6L,CACA,OAAA,UAAAqF,GACA,MAAA,IAAAylK,GAAAjsK,KAAAs0B,MAAAk4J,EAAAv0D,EAAAzxH,IAAAylK,GAAAjsK,KAAAs0B,MAAAm4J,EAAAruB,EAAA53J,IAAAylK,GAAAjsK,KAAAs0B,MAAAnzB,EAAAR,EAAA6F,KAIA,QAAAkmL,IAAAr3L,EAAAC,GACA,GAAAwE,GAAA3C,KAAApB,IACA,KAAA+D,IAAAzE,GACAyE,IAAAxE,GACA6B,EAAA2C,GAAA6yL,GAAAt3L,EAAAyE,GAAAxE,EAAAwE,IAEA/D,EAAA+D,GAAAzE,EAAAyE,EAGA,KAAAA,IAAAxE,GACAwE,IAAAzE,KACAU,EAAA+D,GAAAxE,EAAAwE,GAGA,OAAA,UAAA0M,GACA,IAAA1M,IAAA3C,GAAApB,EAAA+D,GAAA3C,EAAA2C,GAAA0M,EACA,OAAAzQ,IAIA,QAAA62L,IAAAv3L,EAAAC,GAEA,MADAD,IAAAA,EAAAC,GAAAA,EACA,SAAAkR,GACA,MAAAnR,IAAA,EAAAmR,GAAAlR,EAAAkR,GAIA,QAAAqmL,IAAAx3L,EAAAC,GACA,GAAAw3L,GAAAC,EAAAC,EAAAz6I,EAAA06I,GAAA9nH,UAAA+nH,GAAA/nH,UAAA,EAAAhuE,GAAA,EAAAgH,KAAAD,IAEA,KADA7I,GAAA,GAAAC,GAAA,IACAw3L,EAAAG,GAAAjzL,KAAA3E,MAAA03L,EAAAG,GAAAlzL,KAAA1E,MACA03L,EAAAD,EAAAv8K,OAAA+hC,IACAy6I,EAAA13L,EAAA+C,MAAAk6C,EAAAy6I,GACA7uL,EAAAhH,GAAAgH,EAAAhH,IAAA61L,EAAA7uL,IAAAhH,GAAA61L,IAEAF,EAAAA,EAAA,OAAAC,EAAAA,EAAA,IACA5uL,EAAAhH,GAAAgH,EAAAhH,IAAA41L,EAAA5uL,IAAAhH,GAAA41L,GAEA5uL,IAAAhH,GAAA,KACA+G,EAAA/B,MACAhF,EAAAA,EACA8Q,EAAA2kL,GAAAE,EAAAC,MAGAx6I,EAAA26I,GAAA/nH,SAMA,OAJA5yB,GAAAj9C,EAAAiB,SACAy2L,EAAA13L,EAAA+C,MAAAk6C,GACAp0C,EAAAhH,GAAAgH,EAAAhH,IAAA61L,EAAA7uL,IAAAhH,GAAA61L,GAEA7uL,EAAA5H,OAAA,EAAA2H,EAAA,IAAA5I,EAAA4I,EAAA,GAAA+J,EAAA,SAAAzB,GACA,MAAAlR,GAAAkR,GAAA,KACA,WACA,MAAAlR,KACAA,EAAA4I,EAAA3H,OAAA,SAAAiQ,GACA,IAAA,GAAAhL,GAAArE,EAAA,EAAAA,EAAA7B,IAAA6B,EAAAgH,GAAA3C,EAAA0C,EAAA/G,IAAAA,GAAAqE,EAAAyM,EAAAzB,EACA,OAAArI,GAAAqG,KAAA,MAKA,QAAAmoL,IAAAt3L,EAAAC,GAEA,IADA,GAAAiE,GAAApC,EAAAktK,GAAA8oB,cAAA52L,SACAY,GAAA,KAAAoC,EAAA8qK,GAAA8oB,cAAAh2L,GAAA9B,EAAAC,MACA,MAAAiE,GAOA,QAAA6zL,IAAA/3L,EAAAC,GACA,GAAA6B,GAAA8Q,KAAAlS,KAAA+E,EAAAzF,EAAAkB,OAAA2oB,EAAA5pB,EAAAiB,OAAA82L,EAAArtL,KAAAkvD,IAAA75D,EAAAkB,OAAAjB,EAAAiB,OACA,KAAAY,EAAA,EAAAA,EAAAk2L,IAAAl2L,EAAA8Q,EAAA9L,KAAAwwL,GAAAt3L,EAAA8B,GAAA7B,EAAA6B,IACA,MAAAA,EAAA2D,IAAA3D,EAAApB,EAAAoB,GAAA9B,EAAA8B,EACA,MAAAA,EAAA+nB,IAAA/nB,EAAApB,EAAAoB,GAAA7B,EAAA6B,EACA,OAAA,UAAAqP,GACA,IAAArP,EAAA,EAAAA,EAAAk2L,IAAAl2L,EAAApB,EAAAoB,GAAA8Q,EAAA9Q,GAAAqP,EACA,OAAAzQ,IA4CA,QAAAu3L,IAAA/zL,GACA,MAAA,UAAAiN,GACA,MAAAA,IAAA,EAAA,EAAAA,GAAA,EAAA,EAAAjN,EAAAiN,IAGA,QAAA+mL,IAAAh0L,GACA,MAAA,UAAAiN,GACA,MAAA,GAAAjN,EAAA,EAAAiN,IAGA,QAAAgnL,IAAAj0L,GACA,MAAA,UAAAiN,GACA,MAAA,IAAAA,EAAA,GAAAjN,EAAA,EAAAiN,GAAA,EAAAjN,EAAA,EAAA,EAAAiN,KAGA,QAAAinL,IAAAjnL,GACA,MAAAA,GAAAA,EAEA,QAAAknL,IAAAlnL,GACA,MAAAA,GAAAA,EAAAA,EAEA,QAAAmnL,IAAAnnL,GACA,GAAAA,GAAA,EAAA,MAAA,EACA,IAAAA,GAAA,EAAA,MAAA,EACA,IAAA+vH,GAAA/vH,EAAAA,EAAAonL,EAAAr3D,EAAA/vH,CACA,OAAA,IAAAA,EAAA,GAAAonL,EAAA,GAAApnL,EAAA+vH,GAAAq3D,EAAA,KAEA,QAAAC,IAAA91L,GACA,MAAA,UAAAyO,GACA,MAAAxG,MAAAs1H,IAAA9uH,EAAAzO,IAGA,QAAA+1L,IAAAtnL,GACA,MAAA,GAAAxG,KAAAmd,IAAA3W,EAAAyjK,IAEA,QAAA8jB,IAAAvnL,GACA,MAAAxG,MAAAs1H,IAAA,EAAA,IAAA9uH,EAAA,IAEA,QAAAwnL,IAAAxnL,GACA,MAAA,GAAAxG,KAAA64J,KAAA,EAAAryJ,EAAAA,GAEA,QAAAynL,IAAA54L,EAAAQ,GACA,GAAAsI,EAGA,OAFArB,WAAAvG,OAAA,IAAAV,EAAA,KACAiH,UAAAvG,OAAA4H,EAAAtI,EAAAsmL,GAAAn8K,KAAAkqK,KAAA,EAAA70K,IAAAA,EAAA,EAAA8I,EAAAtI,EAAA,GACA,SAAA2Q,GACA,MAAA,GAAAnR,EAAA2K,KAAAs1H,IAAA,GAAA,GAAA9uH,GAAAxG,KAAAgvH,KAAAxoH,EAAArI,GAAAg+K,GAAAtmL,IAGA,QAAAq4L,IAAA/vL,GAEA,MADAA,KAAAA,EAAA,SACA,SAAAqI,GACA,MAAAA,GAAAA,IAAArI,EAAA,GAAAqI,EAAArI,IAGA,QAAAgwL,IAAA3nL,GACA,MAAAA,GAAA,EAAA,KAAA,OAAAA,EAAAA,EAAAA,EAAA,EAAA,KAAA,QAAAA,GAAA,IAAA,MAAAA,EAAA,IAAAA,EAAA,IAAA,KAAA,QAAAA,GAAA,KAAA,MAAAA,EAAA,MAAA,QAAAA,GAAA,MAAA,MAAAA,EAAA,QAGA,QAAA4nL,IAAA/4L,EAAAC,GACAD,EAAAgvK,GAAAgqB,IAAAh5L,GACAC,EAAA+uK,GAAAgqB,IAAA/4L,EACA,IAAAg5L,GAAAj5L,EAAAoE,EAAA80L,EAAAl5L,EAAAU,EAAAy4L,EAAAn5L,EAAA+F,EAAAqzL,EAAAn5L,EAAAmE,EAAA60L,EAAAI,EAAAp5L,EAAAS,EAAAw4L,EAAAI,EAAAr5L,EAAA8F,EAAAozL,CAGA,OAFA/mL,OAAAinL,KAAAA,EAAA,EAAAH,EAAA9mL,MAAA8mL,GAAAj5L,EAAAS,EAAAw4L,GACA9mL,MAAAgnL,IAAAA,EAAA,EAAAH,EAAA7mL,MAAA6mL,GAAAh5L,EAAAmE,EAAA60L,GAAAG,EAAA,IAAAA,GAAA,IAAAA,GAAA,MAAAA,GAAA,KACA,SAAAjoL,GACA,MAAA4kK,IAAAkjB,EAAAG,EAAAjoL,EAAA+nL,EAAAG,EAAAloL,EAAAgoL,EAAAG,EAAAnoL,GAAA,IAIA,QAAAooL,IAAAv5L,EAAAC,GACAD,EAAAgvK,GAAA6H,IAAA72K,GACAC,EAAA+uK,GAAA6H,IAAA52K,EACA,IAAAg5L,GAAAj5L,EAAAoE,EAAA80D,EAAAl5D,EAAA8I,EAAAqwL,EAAAn5L,EAAA+F,EAAAqzL,EAAAn5L,EAAAmE,EAAA60L,EAAAtB,EAAA13L,EAAA6I,EAAAowD,EAAAogI,EAAAr5L,EAAA8F,EAAAozL,CAGA,OAFA/mL,OAAAulL,KAAAA,EAAA,EAAAz+H,EAAA9mD,MAAA8mD,GAAAj5D,EAAA6I,EAAAowD,GACA9mD,MAAAgnL,IAAAA,EAAA,EAAAH,EAAA7mL,MAAA6mL,GAAAh5L,EAAAmE,EAAA60L,GAAAG,EAAA,IAAAA,GAAA,IAAAA,GAAA,MAAAA,GAAA,KACA,SAAAjoL,GACA,MAAAokK,IAAA0jB,EAAAG,EAAAjoL,EAAA+nD,EAAAy+H,EAAAxmL,EAAAgoL,EAAAG,EAAAnoL,GAAA,IAIA,QAAAqoL,IAAAx5L,EAAAC,GACAD,EAAAgvK,GAAAyqB,IAAAz5L,GACAC,EAAA+uK,GAAAyqB,IAAAx5L,EACA,IAAAk5L,GAAAn5L,EAAA+F,EAAA8P,EAAA7V,EAAAA,EAAA8L,EAAA9L,EAAAC,EAAAq5L,EAAAr5L,EAAA8F,EAAAozL,EAAAz0L,EAAAzE,EAAAD,EAAA6V,EAAAvK,EAAArL,EAAAA,EAAA6L,CACA,OAAA,UAAAqF,GACA,MAAA8kK,IAAAkjB,EAAAG,EAAAnoL,EAAA0E,EAAAnR,EAAAyM,EAAArF,EAAAR,EAAA6F,GAAA,IAIA,QAAAuoL,IAAA15L,EAAAC,GAEA,MADAA,IAAAD,EACA,SAAAmR,GACA,MAAAxG,MAAAs0B,MAAAj/B,EAAAC,EAAAkR,IAaA,QAAAwoL,IAAA1zL,GACA,GAAAmjE,IAAAnjE,EAAAjG,EAAAiG,EAAAhG,GAAAopE,GAAApjE,EAAAvF,EAAAuF,EAAAxF,GAAAm5L,EAAAC,GAAAzwH,GAAA0wH,EAAAC,GAAA3wH,EAAAC,GAAA2wH,EAAAH,GAAAI,GAAA5wH,EAAAD,GAAA0wH,KAAA,CACA1wH,GAAA,GAAAC,EAAA,GAAAA,EAAA,GAAAD,EAAA,KACAA,EAAA,KAAA,EACAA,EAAA,KAAA,EACAwwH,IAAA,EACAE,IAAA,GAEAv5L,KAAAokL,QAAAiV,EAAAjvL,KAAA4rK,MAAAntG,EAAA,GAAAA,EAAA,IAAAz+D,KAAA4rK,OAAAltG,EAAA,GAAAA,EAAA,KAAAmtG,GACAj2K,KAAA0tL,WAAAhoL,EAAAvD,EAAAuD,EAAA/B,GACA3D,KAAA+3K,OAAAshB,EAAAI,GACAz5L,KAAA25L,KAAAF,EAAArvL,KAAA4rK,MAAAujB,EAAAE,GAAAxjB,GAAA,EAKA,QAAAujB,IAAA/5L,EAAAC,GACA,MAAAD,GAAA,GAAAC,EAAA,GAAAD,EAAA,GAAAC,EAAA,GAEA,QAAA45L,IAAA75L,GACA,GAAAyE,GAAAkG,KAAA64J,KAAAu2B,GAAA/5L,EAAAA,GAKA,OAJAyE,KACAzE,EAAA,IAAAyE,EACAzE,EAAA,IAAAyE,GAEAA,EAEA,QAAAw1L,IAAAj6L,EAAAC,EAAAwE,GAGA,MAFAzE,GAAA,IAAAyE,EAAAxE,EAAA,GACAD,EAAA,IAAAyE,EAAAxE,EAAA,GACAD,EAWA,QAAAm6L,IAAArxL,GACA,MAAAA,GAAA5H,OAAA4H,EAAA+L,MAAA,IAAA,GAEA,QAAAulL,IAAAtmL,EAAAoX,EAAApiB,EAAAD,GACA,GAAAiL,EAAA,KAAAoX,EAAA,IAAApX,EAAA,KAAAoX,EAAA,GAAA,CACA,GAAAppB,GAAAgH,EAAAhC,KAAA,aAAA,KAAA,IAAA,KAAA,IACA+B,GAAA/B,MACAhF,EAAAA,EAAA,EACA8Q,EAAA2kL,GAAAzjL,EAAA,GAAAoX,EAAA,MAEAppB,EAAAA,EAAA,EACA8Q,EAAA2kL,GAAAzjL,EAAA,GAAAoX,EAAA,WAEAA,EAAA,IAAAA,EAAA,KACApiB,EAAAhC,KAAA,aAAAokB,EAAA,KAGA,QAAAmvK,IAAAzmL,EAAA4W,EAAA1hB,EAAAD,GACA+K,IAAA4W,GACA5W,EAAA4W,EAAA,IAAAA,GAAA,IAAAA,EAAA5W,EAAA,MAAAA,GAAA,KACA/K,EAAA/B,MACAhF,EAAAgH,EAAAhC,KAAAqzL,GAAArxL,GAAA,UAAA,KAAA,KAAA,EACA8J,EAAA2kL,GAAA3jL,EAAA4W,MAEAA,GACA1hB,EAAAhC,KAAAqzL,GAAArxL,GAAA,UAAA0hB,EAAA,KAGA,QAAA8vK,IAAAlzL,EAAAkI,EAAAxG,EAAAD,GACAzB,IAAAkI,EACAzG,EAAA/B,MACAhF,EAAAgH,EAAAhC,KAAAqzL,GAAArxL,GAAA,SAAA,KAAA,KAAA,EACA8J,EAAA2kL,GAAAnwL,EAAAkI,KAEAA,GACAxG,EAAAhC,KAAAqzL,GAAArxL,GAAA,SAAAwG,EAAA,KAGA,QAAAirL,IAAAl0L,EAAA+F,EAAAtD,EAAAD,GACA,GAAAxC,EAAA,KAAA+F,EAAA,IAAA/F,EAAA,KAAA+F,EAAA,GAAA,CACA,GAAAtK,GAAAgH,EAAAhC,KAAAqzL,GAAArxL,GAAA,SAAA,KAAA,IAAA,KAAA,IACAD,GAAA/B,MACAhF,EAAAA,EAAA,EACA8Q,EAAA2kL,GAAAlxL,EAAA,GAAA+F,EAAA,MAEAtK,EAAAA,EAAA,EACA8Q,EAAA2kL,GAAAlxL,EAAA,GAAA+F,EAAA,UAEA,KAAAA,EAAA,IAAA,IAAAA,EAAA,IACAtD,EAAAhC,KAAAqzL,GAAArxL,GAAA,SAAAsD,EAAA,KAGA,QAAAouL,IAAAx6L,EAAAC,GACA,GAAA6I,MAAAD,IAOA,OANA7I,GAAAgvK,GAAA7wH,UAAAn+C,GAAAC,EAAA+uK,GAAA7wH,UAAAl+C,GACAm6L,GAAAp6L,EAAAiuL,UAAAhuL,EAAAguL,UAAAnlL,EAAAD,GACAwxL,GAAAr6L,EAAA2kL,OAAA1kL,EAAA0kL,OAAA77K,EAAAD,GACAyxL,GAAAt6L,EAAAk6L,KAAAj6L,EAAAi6L,KAAApxL,EAAAD,GACA0xL,GAAAv6L,EAAAs4K,MAAAr4K,EAAAq4K,MAAAxvK,EAAAD,GACA7I,EAAAC,EAAA,KACA,SAAAkR,GAEA,IADA,GAAAhL,GAAArE,GAAA,EAAAoE,EAAA2C,EAAA3H,SACAY,EAAAoE,GAAA4C,GAAA3C,EAAA0C,EAAA/G,IAAAA,GAAAqE,EAAAyM,EAAAzB,EACA,OAAArI,GAAAqG,KAAA,KAGA,QAAAsrL,IAAAz6L,EAAAC,GAEA,MADAA,IAAAA,GAAAD,GAAAA,IAAA,EAAAC,EACA,SAAA2S,GACA,OAAAA,EAAA5S,GAAAC,GAGA,QAAAy6L,IAAA16L,EAAAC,GAEA,MADAA,IAAAA,GAAAD,GAAAA,IAAA,EAAAC,EACA,SAAA2S,GACA,MAAAjI,MAAAC,IAAA,EAAAD,KAAAkvD,IAAA,GAAAjnD,EAAA5S,GAAAC,KAWA,QAAA06L,IAAAjvF,GAEA,IADA,GAAA5mG,GAAA4mG,EAAAvtF,OAAApZ,EAAA2mG,EAAAhzF,OAAAkiL,EAAAC,GAAA/1L,EAAAC,GAAAu/K,GAAAx/K,GACAA,IAAA81L,GACA91L,EAAAA,EAAAuU,OACAirK,EAAAx9K,KAAAhC,EAGA,KADA,GAAAL,GAAA6/K,EAAApjL,OACA6D,IAAA61L,GACAtW,EAAAxyK,OAAArN,EAAA,EAAAM,GACAA,EAAAA,EAAAsU,MAEA,OAAAirK,GAEA,QAAAwW,IAAAvhJ,GAEA,IADA,GAAAwhJ,MAAA1hL,EAAAkgC,EAAAlgC,OACA,MAAAA,GACA0hL,EAAAj0L,KAAAyyC,GACAA,EAAAlgC,EACAA,EAAAA,EAAAA,MAGA,OADA0hL,GAAAj0L,KAAAyyC,GACAwhJ,EAEA,QAAAF,IAAA76L,EAAAC,GACA,GAAAD,IAAAC,EAAA,MAAAD,EAEA,KADA,GAAAg7L,GAAAF,GAAA96L,GAAAi7L,EAAAH,GAAA76L,GAAAi7L,EAAAF,EAAAnmL,MAAAsmL,EAAAF,EAAApmL,MAAAumL,EAAA,KACAF,IAAAC,GACAC,EAAAF,EACAA,EAAAF,EAAAnmL,MACAsmL,EAAAF,EAAApmL,KAEA,OAAAumL,GA6UA,QAAAC,IAAA56L,GACAA,EAAA66L,OAAA,EAEA,QAAAC,IAAA96L,GACAA,EAAA66L,QAAA,EAEA,QAAAE,IAAA/6L,GACAA,EAAA66L,OAAA,EACA76L,EAAAg7L,GAAAh7L,EAAAmS,EAAAnS,EAAAi7L,GAAAj7L,EAAAgU,EAEA,QAAAknL,IAAAl7L,GACAA,EAAA66L,QAAA,EAEA,QAAAM,IAAAC,EAAAC,EAAAC,GACA,GAAA7Y,GAAA,EAAAC,EAAA,CAEA,IADA0Y,EAAAG,OAAA,GACAH,EAAA1zF,KAEA,IADA,GAAAznG,GAAA81L,EAAAqF,EAAArF,MAAAtwL,EAAAswL,EAAAt1L,OAAAY,GAAA,IACAA,EAAAoE,GACAxF,EAAA81L,EAAA10L,GACA,MAAApB,IACAk7L,GAAAl7L,EAAAo7L,EAAAC,GACAF,EAAAG,QAAAt7L,EAAAs7L,OACA9Y,GAAAxiL,EAAAs7L,OAAAt7L,EAAAwiL,GACAC,GAAAziL,EAAAs7L,OAAAt7L,EAAAyiL,GAGA,IAAA0Y,EAAAvmC,MAAA,CACAumC,EAAA1zF,OACA0zF,EAAAvmC,MAAA1iJ,GAAAjI,KAAAqH,SAAA,GACA6pL,EAAAvmC,MAAA7gJ,GAAA9J,KAAAqH,SAAA,GAEA,IAAAvN,GAAAq3L,EAAAC,EAAAF,EAAAvmC,MAAAn6I,MACA0gL,GAAAG,QAAAH,EAAAI,YAAAx3L,EACAy+K,GAAAz+K,EAAAo3L,EAAAvmC,MAAA1iJ,EACAuwK,GAAA1+K,EAAAo3L,EAAAvmC,MAAA7gJ,EAEAonL,EAAA3Y,GAAAA,EAAA2Y,EAAAG,OACAH,EAAA1Y,GAAAA,EAAA0Y,EAAAG,OA6DA,QAAAE,IAAA5tB,EAAA6tB,GAIA,MAHAntB,IAAAwI,OAAAlJ,EAAA6tB,EAAA,OAAA,WAAA,SACA7tB,EAAAkoB,MAAAloB,EACAA,EAAA/sI,MAAA66J,GACA9tB,EAEA,QAAA+tB,IAAA9iJ,EAAAwgG,GAEA,IADA,GAAAy8C,IAAAj9I,GACA,OAAAA,EAAAi9I,EAAA3hL,QAEA,GADAklI,EAAAxgG,IACAv+B,EAAAu+B,EAAAv+B,YAAA9U,EAAA8U,EAAA9Z,QAEA,IADA,GAAAgF,GAAA8U,IACA9U,GAAA,GAAAswL,EAAA1vL,KAAAkU,EAAA9U,IAIA,QAAAo2L,IAAA/iJ,EAAAwgG,GAEA,IADA,GAAAy8C,IAAAj9I,GAAAgjJ,KACA,OAAAhjJ,EAAAi9I,EAAA3hL,QAEA,GADA0nL,EAAAz1L,KAAAyyC,IACAv+B,EAAAu+B,EAAAv+B,YAAA9U,EAAA8U,EAAA9Z,QAEA,IADA,GAAAgF,GAAA8U,EAAAlZ,GAAA,IACAA,EAAAoE,GAAAswL,EAAA1vL,KAAAkU,EAAAlZ,GAGA,MAAA,OAAAy3C,EAAAgjJ,EAAA1nL,QACAklI,EAAAxgG,GAGA,QAAAijJ,IAAA/7L,GACA,MAAAA,GAAAua,SAEA,QAAAyhL,IAAAh8L,GACA,MAAAA,GAAAoT,MAEA,QAAA6oL,IAAA18L,EAAAC,GACA,MAAAA,GAAA4T,MAAA7T,EAAA6T,MAEA,QAAAuoL,IAAA5F,GACA,MAAAxnB,IAAAppK,MAAA4wL,EAAArtL,IAAA,SAAAkQ,GACA,OAAAA,EAAA2B,cAAA7R,IAAA,SAAA4tB,GACA,OACA5Y,OAAA9E,EACAX,OAAAqe,QAqJA,QAAA4lK,IAAAl8L,GACA,MAAAA,GAAAmS,EAEA,QAAAgqL,IAAAn8L,GACA,MAAAA,GAAAgU,EAEA,QAAAooL,IAAAp8L,EAAA+hL,EAAA/tK,GACAhU,EAAA+hL,GAAAA,EACA/hL,EAAAgU,EAAAA,EAiEA,QAAAqoL,IAAAlsL,GACA,MAAAo+J,IAAAxmH,MAAA53C,EAAA1P,QAEA,QAAA67L,IAAAnsL,GAEA,IADA,GAAArM,IAAA,EAAA0B,EAAA2K,EAAA,GAAA1P,OAAAshL,OACAj+K,EAAA0B,GAAAu8K,EAAAj+K,GAAA,CACA,OAAAi+K,GAEA,QAAAwa,IAAArgJ,GAEA,IADA,GAAAl4C,GAAA3C,EAAA,EAAAyC,EAAA,EAAA8M,EAAAsrC,EAAA,GAAA,GAAAz2C,EAAAy2C,EAAAz7C,OACAY,EAAAoE,IAAApE,GACA2C,EAAAk4C,EAAA76C,GAAA,IAAAuP,IACA9M,EAAAzC,EACAuP,EAAA5M,EAGA,OAAAF,GAEA,QAAA04L,IAAAx8L,GACA,MAAAA,GAAAy8L,OAAAC,GAAA,GAEA,QAAAA,IAAA38L,EAAAC,GACA,MAAAD,GAAAC,EAAA,GAgDA,QAAA28L,IAAA50I,EAAAxK,GACA,MAAAq/I,IAAA70I,EAAA79C,KAAA4vE,KAAA5vE,KAAAmmC,IAAAkN,EAAA98C,QAAAyJ,KAAA2yL,IAAA,IAEA,QAAAD,IAAA70I,EAAAtiD,GAEA,IADA,GAAA0M,IAAA,EAAA3S,GAAAuoD,EAAA,GAAAviD,GAAAuiD,EAAA,GAAAvoD,GAAAiG,EAAAhC,OACA0O,GAAA1M,GAAAhC,EAAA0O,GAAA3M,EAAA2M,EAAA3S,CACA,OAAAiE,GAEA,QAAAq5L,IAAAv/I,GACA,OAAAgxH,GAAAn1G,IAAA7b,GAAAgxH,GAAApkK,IAAAozC,IA2CA,QAAAw/I,IAAAx9L,EAAAC,GACA,MAAAD,GAAA6T,MAAA5T,EAAA4T,MAEA,QAAA4pL,IAAAz9L,EAAAC,GACA,GAAAS,GAAAV,EAAA09L,UACA19L,GAAA09L,WAAAz9L,EACAA,EAAA09L,WAAA39L,EACAC,EAAAy9L,WAAAh9L,EACAA,EAAAi9L,WAAA19L,EAEA,QAAA29L,IAAA59L,EAAAC,GACAD,EAAA09L,WAAAz9L,EACAA,EAAA09L,WAAA39L,EAEA,QAAA69L,IAAA79L,EAAAC,GACA,GAAA6+E,GAAA7+E,EAAA2S,EAAA5S,EAAA4S,EAAAosE,EAAA/+E,EAAAwU,EAAAzU,EAAAyU,EAAAqpL,EAAA99L,EAAAmB,EAAAlB,EAAAkB,CACA,OAAA,KAAA28L,EAAAA,EAAAh/G,EAAAA,EAAAE,EAAAA,EAEA,QAAA++G,IAAAxkJ,GAGA,QAAA48C,GAAA58C,GACAykJ,EAAArzL,KAAAkvD,IAAAtgB,EAAA3mC,EAAA2mC,EAAAp4C,EAAA68L,GACAC,EAAAtzL,KAAAC,IAAA2uC,EAAA3mC,EAAA2mC,EAAAp4C,EAAA88L,GACAC,EAAAvzL,KAAAkvD,IAAAtgB,EAAA9kC,EAAA8kC,EAAAp4C,EAAA+8L,GACAC,EAAAxzL,KAAAC,IAAA2uC,EAAA9kC,EAAA8kC,EAAAp4C,EAAAg9L,GANA,IAAA3H,EAAAj9I,EAAAv+B,YAAA9U,EAAAswL,EAAAt1L,QAAA,CACA,GAAAs1L,GAAAx2L,EAAAC,EAAAS,EAAAoB,EAAAyC,EAAAE,EAAAyB,EAAA83L,EAAAz2J,EAAAA,EAAA02J,IAAA12J,EAAAA,GAAA22J,EAAA32J,EAAAA,EAAA42J,IAAA52J,EAAAA,EAYA,IALAivJ,EAAAv9C,QAAAmlD,IACAp+L,EAAAw2L,EAAA,GACAx2L,EAAA4S,GAAA5S,EAAAmB,EACAnB,EAAAyU,EAAA,EACA0hF,EAAAn2F,GACAkG,EAAA,IACAjG,EAAAu2L,EAAA,GACAv2L,EAAA2S,EAAA3S,EAAAkB,EACAlB,EAAAwU,EAAA,EACA0hF,EAAAl2F,GACAiG,EAAA,GAQA,IAPAxF,EAAA81L,EAAA,GACA6H,GAAAr+L,EAAAC,EAAAS,GACAy1F,EAAAz1F,GACA+8L,GAAAz9L,EAAAU,GACAV,EAAA29L,WAAAj9L,EACA+8L,GAAA/8L,EAAAT,GACAA,EAAAD,EAAA09L,WACA57L,EAAA,EAAAA,EAAAoE,EAAApE,IAAA,CACAu8L,GAAAr+L,EAAAC,EAAAS,EAAA81L,EAAA10L,GACA,IAAAw8L,GAAA,EAAAC,EAAA,EAAAC,EAAA,CACA,KAAAj6L,EAAAtE,EAAAy9L,WAAAn5L,IAAAtE,EAAAsE,EAAAA,EAAAm5L,WAAAa,IACA,GAAAV,GAAAt5L,EAAA7D,GAAA,CACA49L,EAAA,CACA,OAGA,GAAA,GAAAA,EACA,IAAA75L,EAAAzE,EAAA29L,WAAAl5L,IAAAF,EAAAo5L,aACAE,GAAAp5L,EAAA/D,GADA+D,EAAAA,EAAAk5L,WAAAa,KAMAF,GACAC,EAAAC,GAAAD,GAAAC,GAAAv+L,EAAAkB,EAAAnB,EAAAmB,EAAAy8L,GAAA59L,EAAAC,EAAAsE,GAAAq5L,GAAA59L,EAAAyE,EAAAxE,GACA6B,MAEA27L,GAAAz9L,EAAAU,GACAT,EAAAS,EACAy1F,EAAAz1F,IAKA,GAAAwiL,IAAA8a,EAAAC,GAAA,EAAA9a,GAAA+a,EAAAC,GAAA,EAAAlX,EAAA,CACA,KAAAnlL,EAAA,EAAAA,EAAAoE,EAAApE,IACApB,EAAA81L,EAAA10L,GACApB,EAAAkS,GAAAswK,EACAxiL,EAAA+T,GAAA0uK,EACA8D,EAAAt8K,KAAAC,IAAAq8K,EAAAvmL,EAAAS,EAAAwJ,KAAA64J,KAAA9iK,EAAAkS,EAAAlS,EAAAkS,EAAAlS,EAAA+T,EAAA/T,EAAA+T,GAEA8kC,GAAAp4C,EAAA8lL,EACAuP,EAAAv9C,QAAAwlD,KAEA,QAAAL,IAAA7kJ,GACAA,EAAAmkJ,WAAAnkJ,EAAAokJ,WAAApkJ,EAEA,QAAAklJ,IAAAllJ,SACAA,GAAAmkJ,iBACAnkJ,GAAAokJ,WAEA,QAAAe,IAAAnlJ,EAAA3mC,EAAA6B,EAAAhQ,GACA,GAAAuW,GAAAu+B,EAAAv+B,QAIA,IAHAu+B,EAAA3mC,EAAAA,GAAAnO,EAAA80C,EAAA3mC,EACA2mC,EAAA9kC,EAAAA,GAAAhQ,EAAA80C,EAAA9kC,EACA8kC,EAAAp4C,GAAAsD,EACAuW,EAEA,IADA,GAAAlZ,IAAA,EAAAoE,EAAA8U,EAAA9Z,SACAY,EAAAoE,GAAAw4L,GAAA1jL,EAAAlZ,GAAA8Q,EAAA6B,EAAAhQ,GAGA,QAAA45L,IAAAr+L,EAAAC,EAAAS,GACA,GAAAsnB,GAAAhoB,EAAAmB,EAAAT,EAAAS,EAAA29E,EAAA7+E,EAAA2S,EAAA5S,EAAA4S,EAAAosE,EAAA/+E,EAAAwU,EAAAzU,EAAAyU,CACA,IAAAuT,IAAA82D,GAAAE,GAAA,CACA,GAAAx5E,GAAAvF,EAAAkB,EAAAT,EAAAS,EAAAw9L,EAAA7/G,EAAAA,EAAAE,EAAAA,CACAx5E,IAAAA,EACAwiB,GAAAA,CACA,IAAApV,GAAA,IAAAoV,EAAAxiB,IAAA,EAAAm5L,GAAAlqL,EAAA9J,KAAA64J,KAAA74J,KAAAC,IAAA,EAAA,EAAApF,GAAAwiB,EAAA22K,IAAA32K,GAAA22K,GAAA32K,EAAAxiB,EAAAA,KAAA,EAAAm5L,EACAj+L,GAAAkS,EAAA5S,EAAA4S,EAAAA,EAAAksE,EAAArqE,EAAAuqE,EACAt+E,EAAA+T,EAAAzU,EAAAyU,EAAA7B,EAAAosE,EAAAvqE,EAAAqqE,MAEAp+E,GAAAkS,EAAA5S,EAAA4S,EAAAoV,EACAtnB,EAAA+T,EAAAzU,EAAAyU,EAuHA,QAAAmqL,IAAA5+L,EAAAC,GACA,MAAAD,GAAAqZ,QAAApZ,EAAAoZ,OAAA,EAAA,EAEA,QAAAwlL,IAAAxtL,GACA,GAAA2J,GAAA3J,EAAA2J,QACA,OAAAA,GAAA9Z,OAAA8Z,EAAA,GAAA3J,EAAAF,EAEA,QAAA2tL,IAAAztL,GACA,GAAAnL,GAAA8U,EAAA3J,EAAA2J,QACA,QAAA9U,EAAA8U,EAAA9Z,QAAA8Z,EAAA9U,EAAA,GAAAmL,EAAAF,EAEA,QAAA4tL,IAAAC,EAAAC,EAAAhvL,GACA,GAAAo4B,GAAAp4B,GAAAgvL,EAAAn9L,EAAAk9L,EAAAl9L,EACAm9L,GAAAv+L,GAAA2nC,EACA42J,EAAAn2L,GAAAmH,EACA+uL,EAAAt+L,GAAA2nC,EACA42J,EAAAvqL,GAAAzE,EACAgvL,EAAAh5L,GAAAgK,EAEA,QAAAivL,IAAA7tL,GAEA,IADA,GAAApQ,GAAAgP,EAAA,EAAAo4B,EAAA,EAAArtB,EAAA3J,EAAA2J,SAAAlZ,EAAAkZ,EAAA9Z,SACAY,GAAA,GACAb,EAAA+Z,EAAAlZ,GACAb,EAAAyT,GAAAzE,EACAhP,EAAAgF,GAAAgK,EACAA,GAAAhP,EAAA6H,GAAAu/B,GAAApnC,EAAAP,GAGA,QAAAy+L,IAAAC,EAAA/tL,EAAAguL,GACA,MAAAD,GAAAp/L,EAAAqZ,SAAAhI,EAAAgI,OAAA+lL,EAAAp/L,EAAAq/L,EA4CA,QAAAC,IAAAtkL,GACA,MAAA,GAAAg0J,GAAApkK,IAAAoQ,EAAA,SAAA+b,GACA,MAAAA,GAAAtiB,IAGA,QAAA8qL,IAAAvkL,GACA,MAAAA,GAAAkiL,OAAA,SAAAtqL,EAAAmkB,GACA,MAAAnkB,GAAAmkB,EAAAnkB,GACA,GAAAoI,EAAA9Z,OAEA,QAAAs+L,IAAAjmJ,GACA,GAAAv+B,GAAAu+B,EAAAv+B,QACA,OAAAA,IAAAA,EAAA9Z,OAAAs+L,GAAAxkL,EAAA,IAAAu+B,EAEA,QAAAkmJ,IAAAlmJ,GACA,GAAArzC,GAAA8U,EAAAu+B,EAAAv+B,QACA,OAAAA,KAAA9U,EAAA8U,EAAA9Z,QAAAu+L,GAAAzkL,EAAA9U,EAAA,IAAAqzC,EAoJA,QAAAmmJ,IAAAnmJ,GACA,OACA3mC,EAAA2mC,EAAA3mC,EACA6B,EAAA8kC,EAAA9kC,EACAqqE,GAAAvlC,EAAAulC,GACAE,GAAAzlC,EAAAylC,IAGA,QAAA2gH,IAAApmJ,EAAApyB,GACA,GAAAvU,GAAA2mC,EAAA3mC,EAAAuU,EAAA,GAAA1S,EAAA8kC,EAAA9kC,EAAA0S,EAAA,GAAA23D,EAAAvlC,EAAAulC,GAAA33D,EAAA,GAAAA,EAAA,GAAA63D,EAAAzlC,EAAAylC,GAAA73D,EAAA,GAAAA,EAAA,EASA,OARA23D,GAAA,IACAlsE,GAAAksE,EAAA,EACAA,EAAA,GAEAE,EAAA,IACAvqE,GAAAuqE,EAAA,EACAA,EAAA,IAGApsE,EAAAA,EACA6B,EAAAA,EACAqqE,GAAAA,EACAE,GAAAA,GAsCA,QAAA4gH,IAAAC,GACA,GAAA/6L,GAAA+6L,EAAA,GAAAlxL,EAAAkxL,EAAAA,EAAA3+L,OAAA,EACA,OAAA4D,GAAA6J,GAAA7J,EAAA6J,IAAAA,EAAA7J,GAEA,QAAAg7L,IAAAxnB,GACA,MAAAA,GAAAynB,YAAAznB,EAAAynB,cAAAH,GAAAtnB,EAAA9vH,SAEA,QAAAw3I,IAAAH,EAAAr3I,EAAAy3I,EAAAnc,GACA,GAAA1yK,GAAA6uL,EAAAJ,EAAA,GAAAA,EAAA,IAAA/9L,EAAAgiL,EAAAt7H,EAAA,GAAAA,EAAA,GACA,OAAA,UAAA51C,GACA,MAAA9Q,GAAAsP,EAAAwB,KAGA,QAAAstL,IAAAL,EAAAM,GACA,GAAArhH,GAAA8zF,EAAA,EAAA5sC,EAAA65D,EAAA3+L,OAAA,EAAAwhL,EAAAmd,EAAAjtB,GAAA97C,EAAA+oE,EAAA75D,EAOA,OANAlP,GAAA4rD,IACA5jG,EAAA8zF,EAAAA,EAAA5sC,EAAAA,EAAAlnD,EACAA,EAAA4jG,EAAAA,EAAA5rD,EAAAA,EAAAh4C,GAEA+gH,EAAAjtB,GAAAutB,EAAA/2J,MAAAs5I,GACAmd,EAAA75D,GAAAm6D,EAAA5lH,KAAAu8C,GACA+oE,EAEA,QAAAO,IAAA34K,GACA,MAAAA,IACA2hB,MAAA,SAAAx2B,GACA,MAAAjI,MAAAy+B,MAAAx2B,EAAA6U,GAAAA,GAEA8yD,KAAA,SAAA3nE,GACA,MAAAjI,MAAA4vE,KAAA3nE,EAAA6U,GAAAA,IAEA44K,GAMA,QAAAC,IAAAT,EAAAr3I,EAAAy3I,EAAAnc,GACA,GAAA1yK,MAAAtP,KAAAyC,EAAA,EAAAE,EAAAkG,KAAAkvD,IAAAgmI,EAAA3+L,OAAAsnD,EAAAtnD,QAAA,CAKA,KAJA2+L,EAAAp7L,GAAAo7L,EAAA,KACAA,EAAAA,EAAA78L,QAAA8Y;AACA0sC,EAAAA,EAAAxlD,QAAA8Y,aAEAvX,GAAAE,GACA2M,EAAAtK,KAAAm5L,EAAAJ,EAAAt7L,EAAA,GAAAs7L,EAAAt7L,KACAzC,EAAAgF,KAAAg9K,EAAAt7H,EAAAjkD,EAAA,GAAAikD,EAAAjkD,IAEA,OAAA,UAAAqO,GACA,GAAArO,GAAAyqK,GAAAuxB,OAAAV,EAAAjtL,EAAA,EAAAnO,GAAA,CACA,OAAA3C,GAAAyC,GAAA6M,EAAA7M,GAAAqO,KAMA,QAAA4tL,IAAAX,EAAAr3I,EAAAs7H,EAAA2c,GAEA,QAAAC,KACA,GAAA94K,GAAAjd,KAAAkvD,IAAAgmI,EAAA3+L,OAAAsnD,EAAAtnD,QAAA,EAAAo/L,GAAAN,GAAAC,EAAAQ,EAAA/F,GAAAD,EAGA,OAFAr1J,GAAAxd,EAAAi4K,EAAAr3I,EAAAy3I,EAAAnc,GACAvqK,EAAAqO,EAAA4gC,EAAAq3I,EAAAI,EAAA3I,IACAhf,EAEA,QAAAA,GAAA1lK,GACA,MAAAwyB,GAAAxyB,GARA,GAAAwyB,GAAA7rB,CAiDA,OAvCA++J,GAAAl/F,OAAA,SAAA3kE,GACA,MAAA8E,GAAA9E,IAEA6jK,EAAAunB,OAAA,SAAAjtL,GACA,MAAAnL,WAAAvG,QACA2+L,EAAAjtL,EAAAzJ,IAAA4jF,QACA2zG,KAFAb,GAIAvnB,EAAA9vH,MAAA,SAAA51C,GACA,MAAAnL,WAAAvG,QACAsnD,EAAA51C,EACA8tL,KAFAl4I,GAIA8vH,EAAAqoB,WAAA,SAAA/tL,GACA,MAAA0lK,GAAA9vH,MAAA51C,GAAAkxK,YAAA4V,KAEAphB,EAAAmoB,MAAA,SAAA7tL,GACA,MAAAnL,WAAAvG,QACAu/L,EAAA7tL,EACA8tL,KAFAD,GAIAnoB,EAAAwL,YAAA,SAAAlxK,GACA,MAAAnL,WAAAvG,QACA4iL,EAAAlxK,EACA8tL,KAFA5c,GAIAxL,EAAAsoB,MAAA,SAAA36L,GACA,MAAA46L,IAAAhB,EAAA55L,IAEAqyK,EAAAwoB,WAAA,SAAA76L,EAAAqmC,GACA,MAAAy0J,IAAAlB,EAAA55L,EAAAqmC,IAEAgsI,EAAA6nB,KAAA,SAAAl6L,GAEA,MADA+6L,IAAAnB,EAAA55L,GACAy6L,KAEApoB,EAAAjrG,KAAA,WACA,MAAAmzH,IAAAX,EAAAr3I,EAAAs7H,EAAA2c,IAEAC,IAEA,QAAAO,IAAA3oB,EAAA1wJ,GACA,MAAAonJ,IAAAwI,OAAAc,EAAA1wJ,EAAA,QAAA,aAAA,cAAA,SAEA,QAAAo5K,IAAAnB,EAAA55L,GAGA,MAFAi6L,IAAAL,EAAAO,GAAAc,GAAArB,EAAA55L,GAAA,KACAi6L,GAAAL,EAAAO,GAAAc,GAAArB,EAAA55L,GAAA,KACA45L,EAEA,QAAAqB,IAAArB,EAAA55L,GACA,MAAAA,IAAAA,EAAA,GACA,IAAAguL,GAAA2L,GAAAC,GAAA10J,EAAA8oJ,EAAA,GAAAA,EAAA,GAAAxsK,EAAA9c,KAAAs1H,IAAA,GAAAt1H,KAAAy+B,MAAAz+B,KAAAmmC,IAAA3F,EAAAllC,GAAA0E,KAAAytK,OAAAvkJ,EAAA5tB,EAAAklC,EAAA1jB,CAKA,OAJAoM,IAAA,IAAApM,GAAA,GAAAoM,GAAA,IAAApM,GAAA,EAAAoM,GAAA,MAAApM,GAAA,GACAwsK,EAAA,GAAAtpL,KAAA4vE,KAAA05G,EAAA,GAAAxsK,GAAAA,EACAwsK,EAAA,GAAAtpL,KAAAy+B,MAAA6qJ,EAAA,GAAAxsK,GAAAA,EAAA,GAAAA,EACAwsK,EAAA,GAAAxsK,EACAwsK,EAEA,QAAA4M,IAAAhB,EAAA55L,GACA,MAAA+oK,IAAAxmH,MAAAzlD,MAAAisK,GAAAkyB,GAAArB,EAAA55L,IAEA,QAAA86L,IAAAlB,EAAA55L,EAAAqmC,GACA,GAAAkc,GAAA04I,GAAArB,EAAA55L,EACA,IAAAqmC,EAAA,CACA,GAAAjqC,GAAA82K,GAAAx0K,KAAA2nC,EAEA,IADAjqC,EAAA4N,QACA,MAAA5N,EAAA,GAAA,CACA,GAAAw3C,GAAAm1H,GAAA8K,aAAAnvK,KAAAC,IAAAyyB,GAAAmrB,EAAA,IAAAnrB,GAAAmrB,EAAA,KAIA,OAHAnmD,GAAA,KAAAA,EAAA,GAAA,IAAA8+L,GAAAtnJ,EAAAy+H,MAAA9vH,EAAA,MACAnmD,EAAA,GAAA,IACAiqC,EAAA0iI,GAAA1iI,OAAAjqC,EAAA8M,KAAA,KACA,SAAA1O,GACA,MAAA6rC,GAAAuN,EAAAy+H,MAAA73K,IAAAo5C,EAAA8/F,QAGAt3I,EAAA,KAAAA,EAAA,GAAA,IAAA++L,GAAA/+L,EAAA,GAAAmmD,IACAlc,EAAAjqC,EAAA8M,KAAA,QAEAm9B,GAAA,KAAA60J,GAAA34I,EAAA,IAAA,GAEA,OAAAwmH,IAAA1iI,OAAAA,GASA,QAAA60J,IAAAttL,GACA,OAAAlJ,KAAAy+B,MAAAz+B,KAAAmmC,IAAAj9B,GAAAlJ,KAAAytK,KAAA,KAEA,QAAAgpB,IAAAhgM,EAAAonD,GACA,GAAAhoD,GAAA2gM,GAAA34I,EAAA,GACA,OAAApnD,KAAAigM,IAAA12L,KAAA0yB,IAAA78B,EAAA2gM,GAAAx2L,KAAAC,IAAAyyB,GAAAmrB,EAAA,IAAAnrB,GAAAmrB,EAAA,UAAA,MAAApnD,GAAAZ,EAAA,GAAA,MAAAY,GAKA,QAAAkgM,IAAA15K,EAAA2yC,EAAAgnI,EAAA1B,GACA,QAAA/uJ,GAAAl+B,GACA,OAAA2uL,EAAA52L,KAAAmmC,IAAAl+B,EAAA,EAAA,EAAAA,IAAAjI,KAAAmmC,IAAAl+B,EAAA,EAAA,GAAAA,IAAAjI,KAAAmmC,IAAAypB,GAEA,QAAA0lE,GAAArtH,GACA,MAAA2uL,GAAA52L,KAAAs1H,IAAA1lE,EAAA3nD,IAAAjI,KAAAs1H,IAAA1lE,GAAA3nD,GAEA,QAAA0lK,GAAA1lK,GACA,MAAAgV,GAAAkpB,EAAAl+B,IAoDA,MAlDA0lK,GAAAl/F,OAAA,SAAAxmE,GACA,MAAAqtH,GAAAr4G,EAAAwxD,OAAAxmE,KAEA0lK,EAAAunB,OAAA,SAAAjtL,GACA,MAAAnL,WAAAvG,QACAqgM,EAAA3uL,EAAA,IAAA,EACAgV,EAAAi4K,QAAAA,EAAAjtL,EAAAzJ,IAAA4jF,SAAA5jF,IAAA2nC,IACAwnI,GAHAunB,GAKAvnB,EAAA/9G,KAAA,SAAA52D,GACA,MAAA8D,WAAAvG,QACAq5D,GAAA52D,EACAikB,EAAAi4K,OAAAA,EAAA12L,IAAA2nC,IACAwnI,GAHA/9G,GAKA+9G,EAAA6nB,KAAA,WACA,GAAAqB,GAAAtB,GAAAL,EAAA12L,IAAA2nC,GAAAywJ,EAAA52L,KAAA82L,GAGA,OAFA75K,GAAAi4K,OAAA2B,GACA3B,EAAA2B,EAAAr4L,IAAA82H,GACAq4C,GAEAA,EAAAsoB,MAAA,WACA,GAAA3M,GAAA2L,GAAAC,GAAAe,KAAAxvL,EAAA6iL,EAAA,GAAA5iL,EAAA4iL,EAAA,GAAAnyL,EAAA6I,KAAAy+B,MAAA0H,EAAA1/B,IAAA7M,EAAAoG,KAAA4vE,KAAAzpC,EAAAz/B,IAAAnL,EAAAq0D,EAAA,EAAA,EAAAA,CACA,IAAAzzC,SAAAviB,EAAAzC,GAAA,CACA,GAAAy/L,EAAA,CACA,KAAAz/L,EAAAyC,EAAAzC,IAAA,IAAA,GAAA2C,GAAA,EAAAA,EAAAyB,EAAAzB,IAAAm8L,EAAA95L,KAAAm5H,EAAAn+H,GAAA2C,EACAm8L,GAAA95L,KAAAm5H,EAAAn+H,QAGA,KADA8+L,EAAA95L,KAAAm5H,EAAAn+H,IACAA,IAAAyC,GAAA,IAAA,GAAAE,GAAAyB,EAAA,EAAAzB,EAAA,EAAAA,IAAAm8L,EAAA95L,KAAAm5H,EAAAn+H,GAAA2C,EAEA,KAAA3C,EAAA,EAAA8+L,EAAA9+L,GAAAsP,EAAAtP,KACA,IAAAyC,EAAAq8L,EAAA1/L,OAAA0/L,EAAAr8L,EAAA,GAAA8M,EAAA9M,KACAq8L,EAAAA,EAAA59L,MAAAlB,EAAAyC,GAEA,MAAAq8L,IAEAtoB,EAAAwoB,WAAA,SAAA56L,EAAAomC,GACA,IAAA7kC,UAAAvG,OAAA,MAAAwgM,GACAj6L,WAAAvG,OAAA,EAAAorC,EAAAo1J,GAAA,kBAAAp1J,KAAAA,EAAA0iI,GAAA1iI,OAAAA,GACA,IAAA7nC,GAAAkG,KAAAC,IAAA,EAAA2vD,EAAAr0D,EAAAoyK,EAAAsoB,QAAA1/L,OACA,OAAA,UAAAT,GACA,GAAAqB,GAAArB,EAAAw/H,EAAAt1H,KAAAs0B,MAAA6R,EAAArwC,IAEA,OADAqB,GAAAy4D,EAAAA,EAAA,KAAAz4D,GAAAy4D,GACAz4D,GAAA2C,EAAA6nC,EAAA7rC,GAAA,KAGA63K,EAAAjrG,KAAA,WACA,MAAAi0H,IAAA15K,EAAAylD,OAAA9S,EAAAgnI,EAAA1B,IAEAoB,GAAA3oB,EAAA1wJ,GAaA,QAAA+5K,IAAA/5K,EAAA4xJ,EAAAqmB,GAEA,QAAAvnB,GAAA1lK,GACA,MAAAgV,GAAAg6K,EAAAhvL,IAFA,GAAAgvL,GAAAC,GAAAroB,GAAAsoB,EAAAD,GAAA,EAAAroB,EA+BA,OA3BAlB,GAAAl/F,OAAA,SAAAxmE,GACA,MAAAkvL,GAAAl6K,EAAAwxD,OAAAxmE,KAEA0lK,EAAAunB,OAAA,SAAAjtL,GACA,MAAAnL,WAAAvG,QACA0mB,EAAAi4K,QAAAA,EAAAjtL,EAAAzJ,IAAA4jF,SAAA5jF,IAAAy4L,IACAtpB,GAFAunB,GAIAvnB,EAAAsoB,MAAA,SAAA36L,GACA,MAAA46L,IAAAhB,EAAA55L,IAEAqyK,EAAAwoB,WAAA,SAAA76L,EAAAqmC,GACA,MAAAy0J,IAAAlB,EAAA55L,EAAAqmC,IAEAgsI,EAAA6nB,KAAA,SAAAl6L,GACA,MAAAqyK,GAAAunB,OAAAmB,GAAAnB,EAAA55L,KAEAqyK,EAAAkB,SAAA,SAAA5mK,GACA,MAAAnL,WAAAvG,QACA0gM,EAAAC,GAAAroB,EAAA5mK,GACAkvL,EAAAD,GAAA,EAAAroB,GACA5xJ,EAAAi4K,OAAAA,EAAA12L,IAAAy4L,IACAtpB,GAJAkB,GAMAlB,EAAAjrG,KAAA,WACA,MAAAs0H,IAAA/5K,EAAAylD,OAAAmsG,EAAAqmB,IAEAoB,GAAA3oB,EAAA1wJ,GAEA,QAAAi6K,IAAAn/L,GACA,MAAA,UAAAkQ,GACA,MAAAA,GAAA,GAAAjI,KAAAs1H,KAAArtH,EAAAlQ,GAAAiI,KAAAs1H,IAAArtH,EAAAlQ,IAYA,QAAAq/L,IAAAlC,EAAAmC,GAEA,QAAA1pB,GAAA1lK,GACA,MAAA41C,KAAArtC,EAAA5V,IAAAqN,KAAA,UAAAovL,EAAA7wL,EAAAgK,EAAAnX,IAAA4O,EAAAitL,EAAA/4L,KAAA8L,IAAAi7E,MAAA,GAAArlC,EAAAtnD,QAEA,QAAA+gM,GAAAn9L,EAAA2iB,GACA,MAAAunJ,IAAAxmH,MAAAq3I,EAAA3+L,QAAAiI,IAAA,SAAArH,GACA,MAAAgD,GAAA2iB,EAAA3lB,IANA,GAAAqZ,GAAAqtC,EAAA05I,CAsFA,OA7EA5pB,GAAAunB,OAAA,SAAAjtL,GACA,IAAAnL,UAAAvG,OAAA,MAAA2+L,EACAA,MACA1kL,EAAA,GAAAqyJ,EAEA,KADA,GAAA20B,GAAArgM,GAAA,EAAAoE,EAAA0M,EAAA1R,SACAY,EAAAoE,GAAAiV,EAAA5C,IAAA4pL,EAAAvvL,EAAA9Q,KAAAqZ,EAAAnX,IAAAm+L,EAAAtC,EAAA/4L,KAAAq7L,GACA,OAAA7pB,GAAA0pB,EAAA7wL,GAAApO,MAAAu1K,EAAA0pB,EAAAhiM,IAEAs4K,EAAA9vH,MAAA,SAAA51C,GACA,MAAAnL,WAAAvG,QACAsnD,EAAA51C,EACAsvL,EAAA,EACAF,GACA7wL,EAAA,QACAnR,EAAAyH,WAEA6wK,GAPA9vH,GASA8vH,EAAA8pB,YAAA,SAAAxvL,EAAAuU,GACA1f,UAAAvG,OAAA,IAAAimB,EAAA,EACA,IAAAriB,GAAA8N,EAAA,GAAAjE,EAAAiE,EAAA,GAAA6U,EAAAo4K,EAAA3+L,OAAA,GAAA4D,GAAAA,EAAA6J,GAAA,EACA,IAAAA,EAAA7J,IAAA+6L,EAAA3+L,OAAA,EAAAimB,EAOA,OANAqhC,GAAAy5I,EAAAn9L,EAAA2iB,EAAAN,EAAA,EAAAM,GACAy6K,EAAA,EACAF,GACA7wL,EAAA,cACAnR,EAAAyH,WAEA6wK,GAEAA,EAAA+pB,iBAAA,SAAAzvL,EAAAuU,GACA1f,UAAAvG,OAAA,IAAAimB,EAAA,EACA,IAAAriB,GAAA8N,EAAA,GAAAjE,EAAAiE,EAAA,GAAA6U,EAAAo4K,EAAA3+L,OAAA,GAAA4D,EAAA6J,EAAAhE,KAAAs0B,OAAAn6B,EAAA6J,GAAA,GACA,IAAAA,EAAA7J,IAAA+6L,EAAA3+L,OAAA,EAAAimB,GAAA,CAOA,OANAqhC,GAAAy5I,EAAAn9L,EAAA6F,KAAAs0B,MAAAxX,EAAAN,EAAA,GAAAxY,EAAA7J,GAAA+6L,EAAA3+L,OAAA,EAAAimB,GAAAM,GAAA,GAAAA,GACAy6K,EAAA,EACAF,GACA7wL,EAAA,mBACAnR,EAAAyH,WAEA6wK,GAEAA,EAAAgqB,WAAA,SAAA1vL,EAAAuU,EAAAo7K,GACA96L,UAAAvG,OAAA,IAAAimB,EAAA,GACA1f,UAAAvG,OAAA,IAAAqhM,EAAAp7K,EACA,IAAArL,GAAAlJ,EAAA,GAAAA,EAAA,GAAA9N,EAAA8N,EAAAkJ,EAAA,GAAAnN,EAAAiE,EAAA,EAAAkJ,GAAA2L,GAAA9Y,EAAA7J,IAAA+6L,EAAA3+L,OAAAimB,EAAA,EAAAo7K,EAQA,OAPA/5I,GAAAy5I,EAAAn9L,EAAA2iB,EAAA86K,EAAA96K,GACA3L,GAAA0sC,EAAA1sC,UACAomL,EAAAz6K,GAAA,EAAAN,GACA66K,GACA7wL,EAAA,aACAnR,EAAAyH,WAEA6wK,GAEAA,EAAAkqB,gBAAA,SAAA5vL,EAAAuU,EAAAo7K,GACA96L,UAAAvG,OAAA,IAAAimB,EAAA,GACA1f,UAAAvG,OAAA,IAAAqhM,EAAAp7K,EACA,IAAArL,GAAAlJ,EAAA,GAAAA,EAAA,GAAA9N,EAAA8N,EAAAkJ,EAAA,GAAAnN,EAAAiE,EAAA,EAAAkJ,GAAA2L,EAAA9c,KAAAy+B,OAAAz6B,EAAA7J,IAAA+6L,EAAA3+L,OAAAimB,EAAA,EAAAo7K,GAQA,OAPA/5I,GAAAy5I,EAAAn9L,EAAA6F,KAAAs0B,OAAAtwB,EAAA7J,GAAA+6L,EAAA3+L,OAAAimB,GAAAM,GAAA,GAAAA,GACA3L,GAAA0sC,EAAA1sC,UACAomL,EAAAv3L,KAAAs0B,MAAAxX,GAAA,EAAAN,IACA66K,GACA7wL,EAAA,kBACAnR,EAAAyH,WAEA6wK,GAEAA,EAAA4pB,UAAA,WACA,MAAAA,IAEA5pB,EAAAynB,YAAA,WACA,MAAAH,IAAAoC,EAAAhiM,EAAA,KAEAs4K,EAAAjrG,KAAA,WACA,MAAA00H,IAAAlC,EAAAmC,IAEA1pB,EAAAunB,OAAAA,GAqBA,QAAA4C,IAAA5C,EAAAr3I,GAEA,QAAAk4I,KACA,GAAAj8L,GAAA,EAAAoE,EAAA2/C,EAAAtnD,MAEA,KADAwhM,OACAj+L,EAAAoE,GAAA65L,EAAAj+L,EAAA,GAAAuqK,GAAA2zB,SAAA9C,EAAAp7L,EAAAoE,EACA,OAAAyvK,GAEA,QAAAA,GAAA1lK,GACA,IAAAR,MAAAQ,GAAAA,GAAA,MAAA41C,GAAAwmH,GAAAuxB,OAAAmC,EAAA9vL,IARA,GAAA8vL,EA8BA,OApBApqB,GAAAunB,OAAA,SAAAjtL,GACA,MAAAnL,WAAAvG,QACA2+L,EAAAjtL,EAAAzJ,IAAA6jK,GAAA/qK,OAAAgrK,GAAAp7J,KAAAk7J,GACA2zB,KAFAb,GAIAvnB,EAAA9vH,MAAA,SAAA51C,GACA,MAAAnL,WAAAvG,QACAsnD,EAAA51C,EACA8tL,KAFAl4I,GAIA8vH,EAAAsqB,UAAA,WACA,MAAAF,IAEApqB,EAAAuqB,aAAA,SAAApuL,GAEA,MADAA,GAAA+zC,EAAAz3C,QAAA0D,GACAA,EAAA,GAAAo5E,IAAAA,MAAAp5E,EAAA,EAAAiuL,EAAAjuL,EAAA,GAAAorL,EAAA,GAAAprL,EAAAiuL,EAAAxhM,OAAAwhM,EAAAjuL,GAAAorL,EAAAA,EAAA3+L,OAAA,KAEAo3K,EAAAjrG,KAAA,WACA,MAAAo1H,IAAA5C,EAAAr3I,IAEAk4I,IAKA,QAAAoC,IAAApgB,EAAA5rD,EAAAtuE,GAEA,QAAA8vH,GAAA1lK,GACA,MAAA41C,GAAA79C,KAAAC,IAAA,EAAAD,KAAAkvD,IAAA/3D,EAAA6I,KAAAy+B,MAAAwwJ,GAAAhnL,EAAA8vK,OAEA,QAAAge,KAGA,MAFA9G,GAAApxI,EAAAtnD,QAAA41H,EAAA4rD,GACA5gL,EAAA0mD,EAAAtnD,OAAA,EACAo3K,EAPA,GAAAshB,GAAA93L,CA4BA,OAnBAw2K,GAAAunB,OAAA,SAAAjtL,GACA,MAAAnL,WAAAvG,QACAwhL,GAAA9vK,EAAA,GACAkkH,GAAAlkH,EAAAA,EAAA1R,OAAA,GACAw/L,MAHAhe,EAAA5rD,IAKAwhD,EAAA9vH,MAAA,SAAA51C,GACA,MAAAnL,WAAAvG,QACAsnD,EAAA51C,EACA8tL,KAFAl4I,GAIA8vH,EAAAuqB,aAAA,SAAApuL,GAGA,MAFAA,GAAA+zC,EAAAz3C,QAAA0D,GACAA,EAAAA,EAAA,EAAAo5E,IAAAp5E,EAAAmlL,EAAAlX,GACAjuK,EAAAA,EAAA,EAAAmlL,IAEAthB,EAAAjrG,KAAA,WACA,MAAAy1H,IAAApgB,EAAA5rD,EAAAtuE,IAEAk4I,IAKA,QAAAqC,IAAAlD,EAAAr3I,GACA,QAAA8vH,GAAA1lK,GACA,GAAAA,GAAAA,EAAA,MAAA41C,GAAAwmH,GAAAuxB,OAAAV,EAAAjtL,IAmBA,MAjBA0lK,GAAAunB,OAAA,SAAAl8L,GACA,MAAA8D,WAAAvG,QACA2+L,EAAAl8L,EACA20K,GAFAunB,GAIAvnB,EAAA9vH,MAAA,SAAA7kD,GACA,MAAA8D,WAAAvG,QACAsnD,EAAA7kD,EACA20K,GAFA9vH,GAIA8vH,EAAAuqB,aAAA,SAAApuL,GAEA,MADAA,GAAA+zC,EAAAz3C,QAAA0D,IACAorL,EAAAprL,EAAA,GAAAorL,EAAAprL,KAEA6jK,EAAAjrG,KAAA,WACA,MAAA01H,IAAAlD,EAAAr3I,IAEA8vH,EAKA,QAAA0qB,IAAAnD,GACA,QAAAv0J,GAAA14B,GACA,OAAAA,EAiBA,MAfA04B,GAAA8tC,OAAA9tC,EACAA,EAAAu0J,OAAAv0J,EAAAkd,MAAA,SAAA51C,GACA,MAAAnL,WAAAvG,QACA2+L,EAAAjtL,EAAAzJ,IAAAmiC,GACAA,GAFAu0J,GAIAv0J,EAAAs1J,MAAA,SAAA36L,GACA,MAAA46L,IAAAhB,EAAA55L,IAEAqlC,EAAAw1J,WAAA,SAAA76L,EAAAqmC,GACA,MAAAy0J,IAAAlB,EAAA55L,EAAAqmC,IAEAhB,EAAA+hC,KAAA,WACA,MAAA21H,IAAAnD,IAEAv0J,EAGA,QAAA23J,MACA,MAAA,GA+HA,QAAAC,IAAAziM,GACA,MAAAA,GAAA0iM,YAEA,QAAAC,IAAA3iM,GACA,MAAAA,GAAA4iM,YAEA,QAAAC,IAAA7iM,GACA,MAAAA,GAAA02H,WAEA,QAAAosE,IAAA9iM,GACA,MAAAA,GAAA22H,SAEA,QAAAosE,IAAA/iM,GACA,MAAAA,IAAAA,EAAAgjM,SAEA,QAAAC,IAAAhhB,EAAAF,EAAA1rD,EAAAC,GACA,OAAA2rD,EAAA5rD,GAAA0rD,GAAAA,EAAAzrD,GAAA2rD,EAAA,EAAA,EAAA,EAEA,QAAAihB,IAAAzf,EAAAzuD,EAAApsD,EAAAz1B,EAAAgwJ,GACA,GAAAC,GAAA3f,EAAA,GAAAzuD,EAAA,GAAAquE,EAAA5f,EAAA,GAAAzuD,EAAA,GAAA/N,GAAAk8E,EAAAhwJ,GAAAA,GAAAjpC,KAAA64J,KAAAqgC,EAAAA,EAAAC,EAAAA,GAAAC,EAAAr8E,EAAAo8E,EAAAE,GAAAt8E,EAAAm8E,EAAA/sE,EAAAotD,EAAA,GAAA6f,EAAAhtE,EAAAmtD,EAAA,GAAA8f,EAAAhtE,EAAAvB,EAAA,GAAAsuE,EAAA9sE,EAAAxB,EAAA,GAAAuuE,EAAA7S,GAAAr6D,EAAAE,GAAA,EAAAs6D,GAAAv6D,EAAAE,GAAA,EAAAn4C,EAAAk4C,EAAAF,EAAA93C,EAAAi4C,EAAAF,EAAA/nF,EAAA8vC,EAAAA,EAAAE,EAAAA,EAAA79E,EAAAkoE,EAAAz1B,EAAA7xC,EAAA+0H,EAAAG,EAAAD,EAAAD,EAAAt2H,GAAAu+E,EAAA,GAAA,EAAA,GAAAr0E,KAAA64J,KAAA74J,KAAAC,IAAA,EAAAzJ,EAAAA,EAAA6tC,EAAAjtC,EAAAA,IAAAkiM,GAAAliM,EAAAi9E,EAAAF,EAAAr+E,GAAAuuC,EAAAmgJ,IAAAptL,EAAA+8E,EAAAE,EAAAv+E,GAAAuuC,EAAAk1J,GAAAniM,EAAAi9E,EAAAF,EAAAr+E,GAAAuuC,EAAAqgJ,IAAAttL,EAAA+8E,EAAAE,EAAAv+E,GAAAuuC,EAAAm1J,EAAAF,EAAA9S,EAAAiT,EAAAjV,EAAAmC,EAAA+S,EAAAH,EAAA/S,EAAAmT,EAAAjV,EAAAiC,CAEA,OADA6S,GAAAA,EAAAC,EAAAA,EAAAC,EAAAA,EAAAC,EAAAA,IAAAL,EAAAC,EAAA/U,EAAAE,KACA4U,EAAAF,EAAA5U,EAAA6U,IAAAC,EAAA56H,EAAAloE,EAAAguL,EAAA9lH,EAAAloE,IAEA,QAAAojM,IAAAp4J,GAEA,QAAAonB,GAAA3iD,GAEA,QAAAqzK,KACAL,EAAA98K,KAAA,IAAAg9K,EAAA33I,EAAAm4I,GAAAkgB,IAEA,IAJA,GAAA/jM,GAAAmjL,KAAAU,KAAAxiL,GAAA,EAAAoE,EAAA0K,EAAA1P,OAAAwK,EAAAurK,GAAArkK,GAAA4iL,EAAAve,GAAAxiK,KAIA3S,EAAAoE,GACAu+L,EAAA7iM,KAAArB,KAAAE,EAAAmQ,EAAA9O,GAAAA,GACAwiL,EAAAx9K,OAAA4E,EAAA9J,KAAArB,KAAAE,EAAAqB,IAAA0zL,EAAA5zL,KAAArB,KAAAE,EAAAqB,KACAwiL,EAAApjL,SACA+iL,IACAK,KAIA,OADAA,GAAApjL,QAAA+iL,IACAL,EAAA1iL,OAAA0iL,EAAAz0K,KAAA,IAAA,KAfA,GAAAyD,GAAA+9K,GAAAl8K,EAAAm8K,GAAA6T,EAAA/gB,GAAAI,EAAA4gB,GAAAC,EAAA7gB,EAAAhhK,IAAA0hL,EAAA,EA0CA,OAzBAjxI,GAAA3gD,EAAA,SAAAjP,GACA,MAAA8D,WAAAvG,QACA0R,EAAAjP,EACA4vD,GAFA3gD,GAIA2gD,EAAA9+C,EAAA,SAAA9Q,GACA,MAAA8D,WAAAvG,QACAuT,EAAA9Q,EACA4vD,GAFA9+C,GAIA8+C,EAAAkxI,QAAA,SAAA9gM,GACA,MAAA8D,WAAAvG,QACAujM,EAAA9gM,EACA4vD,GAFAkxI,GAIAlxI,EAAAuwH,YAAA,SAAAngL,GACA,MAAA8D,WAAAvG,QACAyjM,EAAA,kBAAAhhM,GAAAmgL,EAAAngL,GAAAmgL,EAAA8gB,GAAAr/L,IAAA5B,IAAA+gM,IAAA5hL,IACAywC,GAFAoxI,GAIApxI,EAAAixI,QAAA,SAAA7gM,GACA,MAAA8D,WAAAvG,QACAsjM,EAAA7gM,EACA4vD,GAFAixI,GAIAjxI,EAwBA,QAAAmxI,IAAApgB,GACA,MAAAA,GAAApjL,OAAA,EAAAojL,EAAAn1K,KAAA,KAAAm1K,EAAA,IAEA,QAAAugB,IAAAvgB,GACA,MAAAA,GAAAn1K,KAAA,KAAA,IAEA,QAAA21L,IAAAxgB,GAEA,IADA,GAAAxiL,GAAA,EAAAoE,EAAAo+K,EAAApjL,OAAAV,EAAA8jL,EAAA,GAAA7yD,GAAAjxH,EAAA,GAAA,IAAAA,EAAA,MACAsB,EAAAoE,GAAAurH,EAAA3qH,KAAA,KAAAtG,EAAA,IAAAA,EAAA8jL,EAAAxiL,IAAA,IAAA,EAAA,IAAAtB,EAAA,GAEA,OADA0F,GAAA,GAAAurH,EAAA3qH,KAAA,IAAAtG,EAAA,IACAixH,EAAAtiH,KAAA,IAEA,QAAA41L,IAAAzgB,GAEA,IADA,GAAAxiL,GAAA,EAAAoE,EAAAo+K,EAAApjL,OAAAV,EAAA8jL,EAAA,GAAA7yD,GAAAjxH,EAAA,GAAA,IAAAA,EAAA,MACAsB,EAAAoE,GAAAurH,EAAA3qH,KAAA,KAAAtG,EAAA8jL,EAAAxiL,IAAA,GAAA,IAAAtB,EAAA,GACA,OAAAixH,GAAAtiH,KAAA,IAEA,QAAA61L,IAAA1gB,GAEA,IADA,GAAAxiL,GAAA,EAAAoE,EAAAo+K,EAAApjL,OAAAV,EAAA8jL,EAAA,GAAA7yD,GAAAjxH,EAAA,GAAA,IAAAA,EAAA,MACAsB,EAAAoE,GAAAurH,EAAA3qH,KAAA,KAAAtG,EAAA8jL,EAAAxiL,IAAA,GAAA,IAAAtB,EAAA,GACA,OAAAixH,GAAAtiH,KAAA,IAEA,QAAA81L,IAAA3gB,EAAAkgB,GACA,MAAAlgB,GAAApjL,OAAA,EAAAwjM,GAAApgB,GAAAA,EAAA,GAAA4gB,GAAA5gB,EAAAthL,MAAA,GAAA,GAAAmiM,GAAA7gB,EAAAkgB,IAEA,QAAAY,IAAA9gB,EAAAkgB,GACA,MAAAlgB,GAAApjL,OAAA,EAAA2jM,GAAAvgB,GAAAA,EAAA,GAAA4gB,IAAA5gB,EAAAx9K,KAAAw9K,EAAA,IACAA,GAAA6gB,IAAA7gB,EAAAA,EAAApjL,OAAA,IAAAoL,OAAAg4K,GAAAA,EAAA,KAAAkgB,IAEA,QAAAa,IAAA/gB,EAAAkgB,GACA,MAAAlgB,GAAApjL,OAAA,EAAAwjM,GAAApgB,GAAAA,EAAA,GAAA4gB,GAAA5gB,EAAA6gB,GAAA7gB,EAAAkgB,IAEA,QAAAU,IAAA5gB,EAAAghB,GACA,GAAAA,EAAApkM,OAAA,GAAAojL,EAAApjL,QAAAokM,EAAApkM,QAAAojL,EAAApjL,QAAAokM,EAAApkM,OAAA,EACA,MAAAwjM,IAAApgB,EAEA,IAAAuX,GAAAvX,EAAApjL,QAAAokM,EAAApkM,OAAAuwH,EAAA,GAAAyyD,EAAAI,EAAA,GAAA9jL,EAAA8jL,EAAA,GAAA5uD,EAAA4vE,EAAA,GAAAn0L,EAAAukH,EAAA6vE,EAAA,CAMA,IALA1J,IACApqE,GAAA,KAAAjxH,EAAA,GAAA,EAAAk1H,EAAA,GAAA,GAAA,KAAAl1H,EAAA,GAAA,EAAAk1H,EAAA,GAAA,GAAA,IAAAl1H,EAAA,GAAA,IAAAA,EAAA,GACA0jL,EAAAI,EAAA,GACAihB,EAAA,GAEAD,EAAApkM,OAAA,EAAA,CACAiQ,EAAAm0L,EAAA,GACA9kM,EAAA8jL,EAAAihB,GACAA,IACA9zE,GAAA,KAAAyyD,EAAA,GAAAxuD,EAAA,IAAA,KAAAwuD,EAAA,GAAAxuD,EAAA,IAAA,KAAAl1H,EAAA,GAAA2Q,EAAA,IAAA,KAAA3Q,EAAA,GAAA2Q,EAAA,IAAA,IAAA3Q,EAAA,GAAA,IAAAA,EAAA,EACA,KAAA,GAAAsB,GAAA,EAAAA,EAAAwjM,EAAApkM,OAAAY,IAAAyjM,IACA/kM,EAAA8jL,EAAAihB,GACAp0L,EAAAm0L,EAAAxjM,GACA2vH,GAAA,KAAAjxH,EAAA,GAAA2Q,EAAA,IAAA,KAAA3Q,EAAA,GAAA2Q,EAAA,IAAA,IAAA3Q,EAAA,GAAA,IAAAA,EAAA,GAGA,GAAAq7L,EAAA,CACA,GAAA2J,GAAAlhB,EAAAihB,EACA9zE,IAAA,KAAAjxH,EAAA,GAAA,EAAA2Q,EAAA,GAAA,GAAA,KAAA3Q,EAAA,GAAA,EAAA2Q,EAAA,GAAA,GAAA,IAAAq0L,EAAA,GAAA,IAAAA,EAAA,GAEA,MAAA/zE,GAEA,QAAA0zE,IAAA7gB,EAAAkgB,GAEA,IADA,GAAAtgB,GAAAohB,KAAAtlM,GAAA,EAAAwkM,GAAA,EAAA/uE,EAAA6uD,EAAA,GAAAxsC,EAAAwsC,EAAA,GAAAxiL,EAAA,EAAAoE,EAAAo+K,EAAApjL,SACAY,EAAAoE,GACAg+K,EAAAzuD,EACAA,EAAAqiB,EACAA,EAAAwsC,EAAAxiL,GACAwjM,EAAAx+L,MAAA9G,GAAA83I,EAAA,GAAAosC,EAAA,IAAAlkL,GAAA83I,EAAA,GAAAosC,EAAA,KAEA,OAAAohB,GAEA,QAAAG,IAAAnhB,GACA,GAAAA,EAAApjL,OAAA,EAAA,MAAAwjM,IAAApgB,EACA,IAAAxiL,GAAA,EAAAoE,EAAAo+K,EAAApjL,OAAAqkM,EAAAjhB,EAAA,GAAA5B,EAAA6iB,EAAA,GAAA/iB,EAAA+iB,EAAA,GAAA9J,GAAA/Y,EAAAA,EAAAA,GAAA6iB,EAAAjhB,EAAA,IAAA,IAAAoX,GAAAlZ,EAAAA,EAAAA,EAAA+iB,EAAA,IAAA9zE,GAAAixD,EAAA,IAAAF,EAAA,IAAAkjB,GAAAC,GAAAlK,GAAA,IAAAiK,GAAAC,GAAAjK,GAEA,KADApX,EAAAx9K,KAAAw9K,EAAAp+K,EAAA,MACApE,GAAAoE,GACAq/L,EAAAjhB,EAAAxiL,GACA25L,EAAAxrL,QACAwrL,EAAA30L,KAAAy+L,EAAA,IACA7J,EAAAzrL,QACAyrL,EAAA50L,KAAAy+L,EAAA,IACAK,GAAAn0E,EAAAgqE,EAAAC,EAIA,OAFApX,GAAAzvK,MACA48G,EAAA3qH,KAAA,IAAAy+L,GACA9zE,EAAAtiH,KAAA,IAEA,QAAA02L,IAAAvhB,GACA,GAAAA,EAAApjL,OAAA,EAAA,MAAAwjM,IAAApgB,EAEA,KADA,GAAAihB,GAAA9zE,KAAA3vH,GAAA,EAAAoE,EAAAo+K,EAAApjL,OAAAu6L,GAAA,GAAAC,GAAA,KACA55L,EAAA,GACAyjM,EAAAjhB,EAAAxiL,GACA25L,EAAA30L,KAAAy+L,EAAA,IACA7J,EAAA50L,KAAAy+L,EAAA,GAIA,KAFA9zE,EAAA3qH,KAAA4+L,GAAAC,GAAAlK,GAAA,IAAAiK,GAAAC,GAAAjK,MACA55L,IACAA,EAAAoE,GACAq/L,EAAAjhB,EAAAxiL,GACA25L,EAAAxrL,QACAwrL,EAAA30L,KAAAy+L,EAAA,IACA7J,EAAAzrL,QACAyrL,EAAA50L,KAAAy+L,EAAA,IACAK,GAAAn0E,EAAAgqE,EAAAC,EAEA,OAAAjqE,GAAAtiH,KAAA,IAEA,QAAA22L,IAAAxhB,GAEA,IADA,GAAA7yD,GAAA8zE,EAAAzjM,GAAA,EAAAoE,EAAAo+K,EAAApjL,OAAA+E,EAAAC,EAAA,EAAAu1L,KAAAC,OACA55L,EAAA,GACAyjM,EAAAjhB,EAAAxiL,EAAAoE,GACAu1L,EAAA30L,KAAAy+L,EAAA,IACA7J,EAAA50L,KAAAy+L,EAAA,GAIA,KAFA9zE,GAAAi0E,GAAAC,GAAAlK,GAAA,IAAAiK,GAAAC,GAAAjK,MACA55L,IACAA,EAAAmE,GACAs/L,EAAAjhB,EAAAxiL,EAAAoE,GACAu1L,EAAAxrL,QACAwrL,EAAA30L,KAAAy+L,EAAA,IACA7J,EAAAzrL,QACAyrL,EAAA50L,KAAAy+L,EAAA,IACAK,GAAAn0E,EAAAgqE,EAAAC,EAEA,OAAAjqE,GAAAtiH,KAAA,IAEA,QAAA42L,IAAAzhB,EAAAkgB,GACA,GAAAt+L,GAAAo+K,EAAApjL,OAAA,CACA,IAAAgF,EAEA,IADA,GAAA1F,GAAA2Q,EAAAuxK,EAAA4B,EAAA,GAAA,GAAA9B,EAAA8B,EAAA,GAAA,GAAAxlG,EAAAwlG,EAAAp+K,GAAA,GAAAw8K,EAAA1jG,EAAAslG,EAAAp+K,GAAA,GAAAs8K,EAAA1gL,GAAA,IACAA,GAAAoE,GACA1F,EAAA8jL,EAAAxiL,GACAqP,EAAArP,EAAAoE,EACA1F,EAAA,GAAAgkM,EAAAhkM,EAAA,IAAA,EAAAgkM,IAAA9hB,EAAAvxK,EAAA2tE,GACAt+E,EAAA,GAAAgkM,EAAAhkM,EAAA,IAAA,EAAAgkM,IAAAhiB,EAAArxK,EAAA6tE,EAGA,OAAAymH,IAAAnhB,GAEA,QAAAohB,IAAA1lM,EAAAC,GACA,MAAAD,GAAA,GAAAC,EAAA,GAAAD,EAAA,GAAAC,EAAA,GAAAD,EAAA,GAAAC,EAAA,GAAAD,EAAA,GAAAC,EAAA,GAGA,QAAA2lM,IAAAn0E,EAAA7+G,EAAA6B,GACAg9G,EAAA3qH,KAAA,IAAA4+L,GAAAM,GAAApzL,GAAA,IAAA8yL,GAAAM,GAAAvxL,GAAA,IAAAixL,GAAAO,GAAArzL,GAAA,IAAA8yL,GAAAO,GAAAxxL,GAAA,IAAAixL,GAAAC,GAAA/yL,GAAA,IAAA8yL,GAAAC,GAAAlxL,IAEA,QAAAyxL,IAAAhiB,EAAAzuD,GACA,OAAAA,EAAA,GAAAyuD,EAAA,KAAAzuD,EAAA,GAAAyuD,EAAA,IAEA,QAAAiiB,IAAA7hB,GAEA,IADA,GAAAxiL,GAAA,EAAAyC,EAAA+/K,EAAApjL,OAAA,EAAA+E,KAAAi+K,EAAAI,EAAA,GAAA7uD,EAAA6uD,EAAA,GAAA7jL,EAAAwF,EAAA,GAAAigM,GAAAhiB,EAAAzuD,KACA3zH,EAAAyC,GACA0B,EAAAnE,IAAArB,GAAAA,EAAAylM,GAAAhiB,EAAAzuD,EAAAA,EAAA6uD,EAAAxiL,EAAA,MAAA,CAGA,OADAmE,GAAAnE,GAAArB,EACAwF,EAEA,QAAAmgM,IAAA9hB,GAEA,IADA,GAAA7jL,GAAAT,EAAAC,EAAA6I,EAAAw8L,KAAAr/L,EAAAkgM,GAAA7hB,GAAAxiL,GAAA,EAAAyC,EAAA+/K,EAAApjL,OAAA,IACAY,EAAAyC,GACA9D,EAAAylM,GAAA5hB,EAAAxiL,GAAAwiL,EAAAxiL,EAAA,IACAu7B,GAAA58B,GAAAuhL,GACA/7K,EAAAnE,GAAAmE,EAAAnE,EAAA,GAAA,GAEA9B,EAAAiG,EAAAnE,GAAArB,EACAR,EAAAgG,EAAAnE,EAAA,GAAArB,EACAqI,EAAA9I,EAAAA,EAAAC,EAAAA,EACA6I,EAAA,IACAA,EAAA,EAAArI,EAAAkK,KAAA64J,KAAA16J,GACA7C,EAAAnE,GAAAgH,EAAA9I,EACAiG,EAAAnE,EAAA,GAAAgH,EAAA7I,GAKA,KADA6B,GAAA,IACAA,GAAAyC,GACAuE,GAAAw7K,EAAA35K,KAAAkvD,IAAAt1D,EAAAzC,EAAA,IAAA,GAAAwiL,EAAA35K,KAAAC,IAAA,EAAA9I,EAAA,IAAA,KAAA,GAAA,EAAAmE,EAAAnE,GAAAmE,EAAAnE,KACAwjM,EAAAx+L,MAAAgC,GAAA,EAAA7C,EAAAnE,GAAAgH,GAAA,GAEA,OAAAw8L,GAEA,QAAAe,IAAA/hB,GACA,MAAAA,GAAApjL,OAAA,EAAAwjM,GAAApgB,GAAAA,EAAA,GAAA4gB,GAAA5gB,EAAA8hB,GAAA9hB,IAQA,QAAAgiB,IAAAhiB,GAEA,IADA,GAAAhvB,GAAAn0J,EAAAnB,EAAA8B,GAAA,EAAAoE,EAAAo+K,EAAApjL,SACAY,EAAAoE,GACAovJ,EAAAgvB,EAAAxiL,GACAX,EAAAm0J,EAAA,GACAt1J,EAAAs1J,EAAA,GAAAsf,GACAtf,EAAA,GAAAn0J,EAAAwJ,KAAAmd,IAAA9nB,GACAs1J,EAAA,GAAAn0J,EAAAwJ,KAAAgvH,IAAA35H,EAEA,OAAAskL,GAEA,QAAAiiB,IAAAp6J,GAEA,QAAAm5G,GAAA10I,GAMA,QAAAqzK,KACAL,EAAA98K,KAAA,IAAAg9K,EAAA33I,EAAAq6J,GAAAhC,GAAAliM,EAAAmkM,EAAAt6J,EAAAu6J,EAAA5qL,WAAA0oL,GAAA,KAEA,IARA,GAAA/jM,GAIAmS,EAAA6B,EAJAmvK,KAAA8iB,KAAAF,KAAA1kM,GAAA,EAAAoE,EAAA0K,EAAA1P,OAAAylM,EAAA1vB,GAAAyL,GAAAkkB,EAAA3vB,GAAAuL,GAAAqkB,EAAAnkB,IAAA5rD,EAAA,WACA,MAAAlkH,IACAqkK,GAAAngD,GAAAgwE,EAAAtkB,IAAAzrD,EAAA,WACA,MAAAtiH,IACAwiK,GAAAlgD,KAIAj1H,EAAAoE,GACAu+L,EAAA7iM,KAAArB,KAAAE,EAAAmQ,EAAA9O,GAAAA,IACA4kM,EAAA5/L,MAAA8L,GAAA+zL,EAAA/kM,KAAArB,KAAAE,EAAAqB,GAAA2S,GAAAmyL,EAAAhlM,KAAArB,KAAAE,EAAAqB,KACA0kM,EAAA1/L,OAAA+/L,EAAAjlM,KAAArB,KAAAE,EAAAqB,IAAAglM,EAAAllM,KAAArB,KAAAE,EAAAqB,MACA4kM,EAAAxlM,SACA+iL,IACAyiB,KACAF,KAIA,OADAE,GAAAxlM,QAAA+iL,IACAL,EAAA1iL,OAAA0iL,EAAAz0K,KAAA,IAAA,KArBA,GAAAuzK,GAAAiO,GAAA75D,EAAA65D,GAAAnO,EAAA,EAAAzrD,EAAA65D,GAAA6T,EAAA/gB,GAAAI,EAAA4gB,GAAAC,EAAA7gB,EAAAhhK,IAAA2jL,EAAA3iB,EAAAxhL,EAAA,IAAAkiM,EAAA,EAsEA,OA/CAl/C,GAAA1yI,EAAA,SAAAjP,GACA,MAAA8D,WAAAvG,QACAwhL,EAAA5rD,EAAAnzH,EACA2hJ,GAFAxuB,GAIAwuB,EAAAo9B,GAAA,SAAA/+K,GACA,MAAA8D,WAAAvG,QACAwhL,EAAA/+K,EACA2hJ,GAFAo9B,GAIAp9B,EAAAxuB,GAAA,SAAAnzH,GACA,MAAA8D,WAAAvG,QACA41H,EAAAnzH,EACA2hJ,GAFAxuB,GAIAwuB,EAAA7wI,EAAA,SAAA9Q,GACA,MAAA8D,WAAAvG,QACAshL,EAAAzrD,EAAApzH,EACA2hJ,GAFAvuB,GAIAuuB,EAAAk9B,GAAA,SAAA7+K,GACA,MAAA8D,WAAAvG,QACAshL,EAAA7+K,EACA2hJ,GAFAk9B,GAIAl9B,EAAAvuB,GAAA,SAAApzH,GACA,MAAA8D,WAAAvG,QACA61H,EAAApzH,EACA2hJ,GAFAvuB,GAIAuuB,EAAAm/C,QAAA,SAAA9gM,GACA,MAAA8D,WAAAvG,QACAujM,EAAA9gM,EACA2hJ,GAFAm/C,GAIAn/C,EAAAw+B,YAAA,SAAAngL,GACA,MAAA8D,WAAAvG,QACAyjM,EAAA,kBAAAhhM,GAAAmgL,EAAAngL,GAAAmgL,EAAA8gB,GAAAr/L,IAAA5B,IAAA+gM,IAAA5hL,IACA2jL,EAAA3iB,EAAAhoK,SAAAgoK,EACAxhL,EAAAwhL,EAAA1qD,OAAA,IAAA,IACAksB,GAJAq/C,GAMAr/C,EAAAk/C,QAAA,SAAA7gM,GACA,MAAA8D,WAAAvG,QACAsjM,EAAA7gM,EACA2hJ,GAFAk/C,GAIAl/C,EAqEA,QAAAyhD,IAAAtmM,GACA,MAAAA,GAAAk1H,OAgCA,QAAAqxE,IAAAvmM,GACA,OAAAA,EAAAmS,EAAAnS,EAAAgU,GASA,QAAAwyL,IAAA96J,GACA,MAAA,YACA,GAAA1rC,GAAA0rC,EAAAppC,MAAAxC,KAAAkH,WAAAtG,EAAAV,EAAA,GAAAT,EAAAS,EAAA,GAAAm0K,EACA,QAAAzzK,EAAAwJ,KAAAmd,IAAA9nB,GAAAmB,EAAAwJ,KAAAgvH,IAAA35H,KAoBA,QAAAknM,MACA,MAAA,IAEA,QAAAC,MACA,MAAA,SAEA,QAAAC,IAAA3tJ,GACA,GAAAt4C,GAAAwJ,KAAA64J,KAAA/pH,EAAAg7H,GACA,OAAA,MAAAtzK,EAAA,IAAAA,EAAA,IAAAA,EAAA,aAAAA,EAAA,IAAAA,EAAA,IAAAA,EAAA,YAAAA,EAAA,IA+CA,QAAAkmM,IAAA72B,GACA,MAAA,YACA,GAAAp0J,GAAAkrL,EAAA76K,GACArQ,EAAA7b,KAAAiwK,MAAA/jJ,EAAArQ,EAAAkrL,EAAAlrL,EAAAqQ,WACAA,EAAAzd,MAAAtO,EAAA,KACA+rB,EAAAzd,MAAAmC,EAAA08E,MACAzxE,EAAAi4B,YAAAj4B,GAAAkrL,SAAA/mM,MAAAiwK,GACAp0J,EAAAqQ,QAAA,GACAA,EAAA9kB,OAAA8kB,EAAA9kB,MAAA4/L,UAAA3lM,KAAArB,KAAAA,KAAA4xK,SAAA1lJ,EAAAtR,SAIA,QAAAqsL,IAAA7gE,EAAA6pC,EAAA19J,GAIA,MAHA28J,IAAA9oC,EAAA8gE,IACA9gE,EAAA/mH,UAAA4wJ,EACA7pC,EAAA7zH,GAAAA,EACA6zH,EAoEA,QAAA+gE,IAAA/gE,EAAAvpH,EAAAvJ,EAAA8zL,GACA,GAAA70L,GAAA6zH,EAAA7zH,GAAA09J,EAAA7pC,EAAA/mH,SACA,OAAA4yJ,GAAA7rC,EAAA,kBAAA9yH,GAAA,SAAA0lC,EAAAz3C,EAAAyC,GACAg1C,EAAAi3H,GAAA19J,GAAA60L,MAAA3jM,IAAAoZ,EAAAuqL,EAAA9zL,EAAAjS,KAAA23C,EAAAA,EAAA44H,SAAArwK,EAAAyC,OACAsP,EAAA8zL,EAAA9zL,GAAA,SAAA0lC,GACAA,EAAAi3H,GAAA19J,GAAA60L,MAAA3jM,IAAAoZ,EAAAvJ,MAqFA,QAAA+zL,IAAA3nM,GAEA,MADA,OAAAA,IAAAA,EAAA,IACA,WACAM,KAAAsG,YAAA5G,GA6EA,QAAA4nM,IAAAzqL,GACA,MAAA,OAAAA,EAAA,iBAAA,gBAAAA,EAAA,KAEA,QAAA0qL,IAAAvuJ,EAAAz3C,EAAA0uK,EAAA19J,EAAAi1L,GAKA,QAAAC,GAAAC,GACA,GAAA7+K,GAAAgQ,EAAAhQ,KAEA,OADApa,GAAAmC,EAAAiY,EAAA8pB,EACA9pB,GAAA6+K,EAAAnjM,EAAAmjM,EAAA7+K,QACApa,EAAAtO,EAAAoE,GAEA,QAAAA,GAAAmjM,GACA,GAAAX,GAAAlrL,EAAAqQ,OAAAA,EAAArQ,EAAAkrL,EACA76K,KACAA,EAAAzd,MAAAtO,EAAA,KACA+rB,EAAAzd,MAAAmC,EAAA08E,MACAzxE,EAAAi4B,YACAj4B,GAAAkrL,GACA76K,EAAA9kB,OAAA8kB,EAAA9kB,MAAA4/L,UAAA3lM,KAAA23C,EAAAA,EAAA44H,SAAA1lJ,EAAAtR,OAEA,KAAA,GAAA+sL,KAAA9rL,GACA,IAAA8rL,EAAAp1L,EAAA,CACA,GAAAmpC,GAAA7/B,EAAA8rL,EACAjsJ,GAAAjtC,MAAAtO,EAAA,KACAu7C,EAAAjtC,MAAAmC,EAAA08E,MACAzxE,EAAAi4B,YACAj4B,GAAA8rL,GAGAl5L,EAAAtO,EAAAkL,EACA8rK,GAAA,WAKA,MAJA1oK,GAAAtO,GAAAkL,EAAAq8L,GAAA,KACAj5L,EAAAtO,EAAA,KACAsO,EAAAmC,EAAA08E,KAEA,GACA,EAAA36C,GACA92B,EAAAqQ,OAAA3Z,EACAsmB,EAAAzxB,OAAAyxB,EAAAzxB,MAAA7C,MAAAlD,KAAA23C,EAAAA,EAAA44H,SAAArwK,GACAiM,KACAqrB,EAAAuuK,MAAA1uD,QAAA,SAAAn2H,EAAAjP,IACAA,EAAAA,EAAAjS,KAAA23C,EAAAA,EAAA44H,SAAArwK,KACAiM,EAAAjH,KAAA+M,KAGAs0L,EAAA/uK,EAAA+uK,KACAr6L,EAAAsrB,EAAAtrB,SAEA,QAAAlC,GAAAq8L,GAEA,IADA,GAAA92L,GAAA82L,EAAAn6L,EAAApL,EAAAylM,EAAAh3L,GAAAjL,EAAA6H,EAAA7M,OACAgF,EAAA,GACA6H,IAAA7H,GAAAtE,KAAA23C,EAAA72C,EAEA,IAAAyO,GAAA,EAGA,MAFAioB,GAAAzxB,OAAAyxB,EAAAzxB,MAAA5C,IAAAnD,KAAA23C,EAAAA,EAAA44H,SAAArwK,KACAsa,EAAAi4B,YAAAj4B,GAAAtJ,SAAAymC,GAAAi3H,GACA,EAvDA,GAGAt9H,GAAAlkC,EAAAlB,EAAAq6L,EAAAp6L,EAHAqO,EAAAm9B,EAAAi3H,KAAAj3H,EAAAi3H,IACA/jJ,OAAA,EACA4nB,MAAA,IACAjb,EAAAhd,EAAAtJ,EAuDAsmB,KACA8Z,EAAA60J,EAAA70J,KACAlkC,EAAA0oK,GAAAswB,EAAA,EAAA90J,GACA9Z,EAAAhd,EAAAtJ,IACA60L,MAAA,GAAAn6B,GACAt6H,KAAAA,EACAlkC,MAAAA,EACAoa,MAAA2+K,EAAA3+K,MACAtb,SAAAi6L,EAAAj6L,SACAq6L,KAAAJ,EAAAI,KACAhtL,MAAArZ,GAEAimM,EAAA,OACA3rL,EAAAi4B,OAoGA,QAAA+zJ,IAAA3/I,EAAAi6H,EAAA5rD,GACAruE,EAAAnxC,KAAA,YAAA,SAAA7W,GACA,GAAA0mL,GAAAzE,EAAAjiL,EACA,OAAA,cAAAqmB,SAAAqgK,GAAAA,EAAArwD,EAAAr2H,IAAA,QAGA,QAAA4nM,IAAA5/I,EAAA+5H,EAAAzrD,GACAtuE,EAAAnxC,KAAA,YAAA,SAAA7W,GACA,GAAA0mL,GAAA3E,EAAA/hL,EACA,OAAA,gBAAAqmB,SAAAqgK,GAAAA,EAAApwD,EAAAt2H,IAAA,MAySA,QAAA6nM,IAAA/8J,GACA,MAAAA,GAAAg9J,cA8CA,QAAAC,IAAA5gL,EAAAsa,EAAAoK,GACA,QAAAgsI,GAAA1lK,GACA,MAAAgV,GAAAhV,GAUA,QAAA61L,GAAAxU,EAAA5/I,GACA,GAAAlJ,GAAA8oJ,EAAA,GAAAA,EAAA,GAAAv7K,EAAAyyB,EAAAkJ,EAAAvyC,EAAAktK,GAAAuxB,OAAAmI,GAAAhwL,EACA,OAAA5W,IAAA4mM,GAAAxnM,QAAAghC,EAAAymK,KAAAzH,GAAAjN,EAAA9qL,IAAA,SAAA1I,GACA,MAAAA,GAAA,UACA4zC,GAAA,IAAAvyC,EAAAogC,EAAAxpB,EAAAgwL,GAAA5mM,EAAA,GAAA4mM,GAAA5mM,GAAA4W,EAAA5W,EAAA,EAAAA,IAAA8mM,GAAA1H,GAAAjN,EAAA5/I,GAAA,IAgCA,MA5CAikI,GAAAl/F,OAAA,SAAAxmE,GACA,MAAAi2L,IAAAjhL,EAAAwxD,OAAAxmE,KAEA0lK,EAAAunB,OAAA,SAAAjtL,GACA,MAAAnL,WAAAvG,QACA0mB,EAAAi4K,OAAAjtL,GACA0lK,GAFA1wJ,EAAAi4K,SAAA12L,IAAA0/L,KAUAvwB,EAAA6nB,KAAA,SAAAx0L,EAAAm+E,GAGA,QAAAlwB,GAAAruB,GACA,OAAAn5B,MAAAm5B,KAAA5/B,EAAA68C,MAAAjd,EAAAs9J,IAAAt9J,EAAA,GAAAu+C,GAAA5oF,OAHA,GAAA2+L,GAAAvnB,EAAAunB,SAAA5L,EAAA2L,GAAAC,GAAAvxK,EAAA,MAAA3iB,EAAA88L,EAAAxU,EAAA,IAAA,gBAAAtoL,IAAA88L,EAAAxU,EAAAtoL,EAKA,OAJA2iB,KAAA3iB,EAAA2iB,EAAA,GAAAw7D,EAAAx7D,EAAA,IAIAgqJ,EAAAunB,OAAAK,GAAAL,EAAA/1G,EAAA,GACA1gD,MAAA,SAAAmC,GACA,KAAAquB,EAAAruB,EAAA5/B,EAAAy9B,MAAAmC,KAAAA,EAAAs9J,GAAAt9J,EAAA,EACA,OAAAA,IAEAgvC,KAAA,SAAAhvC,GACA,KAAAquB,EAAAruB,EAAA5/B,EAAA4uE,KAAAhvC,KAAAA,EAAAs9J,IAAAt9J,EAAA,EACA,OAAAA,KAEA5/B,KAEA2sK,EAAAsoB,MAAA,SAAAj1L,EAAAm+E,GACA,GAAAmqG,GAAA2L,GAAAtnB,EAAAunB,UAAAvxK,EAAA,MAAA3iB,EAAA88L,EAAAxU,EAAA,IAAA,gBAAAtoL,GAAA88L,EAAAxU,EAAAtoL,IAAAA,EAAA68C,SACAA,MAAA78C,GACAm+E,EAEA,OADAx7D,KAAA3iB,EAAA2iB,EAAA,GAAAw7D,EAAAx7D,EAAA,IACA3iB,EAAA68C,MAAAyrI,EAAA,GAAA4U,IAAA5U,EAAA,GAAA,GAAAnqG,EAAA,EAAA,EAAAA,IAEAwuF,EAAAwoB,WAAA,WACA,MAAAx0J,IAEAgsI,EAAAjrG,KAAA,WACA,MAAAm7H,IAAA5gL,EAAAylD,OAAAnrC,EAAAoK,IAEA20J,GAAA3oB,EAAA1wJ,GAEA,QAAAihL,IAAA13L,GACA,MAAA,IAAAqB,MAAArB,GA0DA,QAAA23L,IAAAxpE,GACA,MAAA77H,MAAAC,MAAA47H,EAAA5uG,cAKA,QAAAq4K,IAAAzpE,GACA,GAAA92E,GAAAwgJ,GAAAtgJ,aAEA,OADAF,GAAAygJ,WAAAD,GAAA7jM,MACAqjD,EAAA0gJ,yBAAA5pE,EAAA5uG,cA10SA,GAAAs+I,KACA9vD,QAAA,UAEAiqF,MAAAnmM,MAAAkwK,GAAA,SAAA7mI,GACA,MAAA88J,IAAAvnM,KAAAyqC,IAEA28J,GAAAzoM,KAAAH,QAOA,IAAA4oM,GACA,IACA91B,GAAA81B,GAAA9yL,gBAAAvP,YAAA,GAAA9E,SACA,MAAAa,GACAwwK,GAAA,SAAA7mI,GAEA,IADA,GAAAvqC,GAAAuqC,EAAAnrC,OAAAy7C,EAAA,GAAArvC,OAAAxL,GACAA,KAAA66C,EAAA76C,GAAAuqC,EAAAvqC,EACA,OAAA66C,IAOA,GAHAnqC,KAAAzG,MAAAyG,KAAAzG,IAAA,WACA,OAAA,GAAAyG,QAEAw2L,GACA,IACAA,GAAAroM,cAAA,OAAAiE,MAAAiiB,YAAA,UAAA,EAAA,IACA,MAAAlW,GACA,GAAAy4L,IAAA7oM,KAAA8oM,QAAAl+L,UAAAm+L,GAAAF,GAAAj2L,aAAAo2L,GAAAH,GAAA/4B,eAAAm5B,GAAAjpM,KAAAkpM,oBAAAt+L,UAAAu+L,GAAAF,GAAA3iL,WACAuiL,IAAAj2L,aAAA,SAAAiK,EAAAvJ,GACAy1L,GAAA1nM,KAAArB,KAAA6c,EAAAvJ,EAAA,KAEAu1L,GAAA/4B,eAAA,SAAAx1F,EAAA76B,EAAAnsC,GACA01L,GAAA3nM,KAAArB,KAAAs6E,EAAA76B,EAAAnsC,EAAA,KAEA21L,GAAA3iL,YAAA,SAAAzJ,EAAAvJ,EAAAumD,GACAsvI,GAAA9nM,KAAArB,KAAA6c,EAAAvJ,EAAA,GAAAumD,IAIA40G,GAAA26B,UAAA58B,EAIAiC,GAAA46B,WAAA,SAAA5pM,EAAAC,GACA,MAAAA,GAAAD,GAAA,EAAAC,EAAAD,EAAA,EAAAC,GAAAD,EAAA,EAAA6tF,KAEAmhF,GAAAn1G,IAAA,SAAAld,EAAAz4C,GACA,GAAAlE,GAAAC,EAAA6B,GAAA,EAAAoE,EAAAy2C,EAAAz7C,MACA,IAAA,IAAAuG,UAAAvG,OAAA,CACA,OAAAY,EAAAoE,GAAA,GAAA,OAAAjG,EAAA08C,EAAA76C,KAAA7B,GAAAA,EAAA,CACAD,EAAAC,CACA,OAEA,OAAA6B,EAAAoE,GAAA,OAAAjG,EAAA08C,EAAA76C,KAAA9B,EAAAC,IAAAD,EAAAC,OACA,CACA,OAAA6B,EAAAoE,GAAA,GAAA,OAAAjG,EAAAiE,EAAAtC,KAAA+6C,EAAAA,EAAA76C,GAAAA,KAAA7B,GAAAA,EAAA,CACAD,EAAAC,CACA,OAEA,OAAA6B,EAAAoE,GAAA,OAAAjG,EAAAiE,EAAAtC,KAAA+6C,EAAAA,EAAA76C,GAAAA,KAAA9B,EAAAC,IAAAD,EAAAC,GAEA,MAAAD,IAEAgvK,GAAApkK,IAAA,SAAA+xC,EAAAz4C,GACA,GAAAlE,GAAAC,EAAA6B,GAAA,EAAAoE,EAAAy2C,EAAAz7C,MACA,IAAA,IAAAuG,UAAAvG,OAAA,CACA,OAAAY,EAAAoE,GAAA,GAAA,OAAAjG,EAAA08C,EAAA76C,KAAA7B,GAAAA,EAAA,CACAD,EAAAC,CACA,OAEA,OAAA6B,EAAAoE,GAAA,OAAAjG,EAAA08C,EAAA76C,KAAA7B,EAAAD,IAAAA,EAAAC,OACA,CACA,OAAA6B,EAAAoE,GAAA,GAAA,OAAAjG,EAAAiE,EAAAtC,KAAA+6C,EAAAA,EAAA76C,GAAAA,KAAA7B,GAAAA,EAAA,CACAD,EAAAC,CACA,OAEA,OAAA6B,EAAAoE,GAAA,OAAAjG,EAAAiE,EAAAtC,KAAA+6C,EAAAA,EAAA76C,GAAAA,KAAA7B,EAAAD,IAAAA,EAAAC,GAEA,MAAAD,IAEAgvK,GAAAilB,OAAA,SAAAt3I,EAAAz4C,GACA,GAAAlE,GAAAC,EAAAS,EAAAoB,GAAA,EAAAoE,EAAAy2C,EAAAz7C,MACA,IAAA,IAAAuG,UAAAvG,OAAA,CACA,OAAAY,EAAAoE,GAAA,GAAA,OAAAjG,EAAA08C,EAAA76C,KAAA7B,GAAAA,EAAA,CACAD,EAAAU,EAAAT,CACA,OAEA,OAAA6B,EAAAoE,GAAA,OAAAjG,EAAA08C,EAAA76C,MACA9B,EAAAC,IAAAD,EAAAC,GACAS,EAAAT,IAAAS,EAAAT,QAEA,CACA,OAAA6B,EAAAoE,GAAA,GAAA,OAAAjG,EAAAiE,EAAAtC,KAAA+6C,EAAAA,EAAA76C,GAAAA,KAAA7B,GAAAA,EAAA,CACAD,EAAAU,EAAAT,CACA,OAEA,OAAA6B,EAAAoE,GAAA,OAAAjG,EAAAiE,EAAAtC,KAAA+6C,EAAAA,EAAA76C,GAAAA,MACA9B,EAAAC,IAAAD,EAAAC,GACAS,EAAAT,IAAAS,EAAAT,IAGA,OAAAD,EAAAU,IAQAsuK,GAAAjtD,IAAA,SAAAplE,EAAAz4C,GACA,GAAAlE,GAAA8I,EAAA,EAAA5C,EAAAy2C,EAAAz7C,OAAAY,GAAA,CACA,IAAA,IAAA2F,UAAAvG,OACA,OAAAY,EAAAoE,GAAA+mK,EAAAjtK,GAAA28C,EAAA76C,MAAAgH,GAAA9I,OAEA,QAAA8B,EAAAoE,GAAA+mK,EAAAjtK,GAAAkE,EAAAtC,KAAA+6C,EAAAA,EAAA76C,GAAAA,MAAAgH,GAAA9I,EAEA,OAAA8I,IAEAkmK,GAAA66B,KAAA,SAAAltJ,EAAAz4C,GACA,GAAAlE,GAAA8I,EAAA,EAAA5C,EAAAy2C,EAAAz7C,OAAAY,GAAA,EAAAyC,EAAA2B,CACA,IAAA,IAAAuB,UAAAvG,OACA,OAAAY,EAAAoE,GAAA+mK,EAAAjtK,EAAAgtK,EAAArwH,EAAA76C,KAAAgH,GAAA9I,IAAAuE,MAEA,QAAAzC,EAAAoE,GAAA+mK,EAAAjtK,EAAAgtK,EAAA9oK,EAAAtC,KAAA+6C,EAAAA,EAAA76C,GAAAA,KAAAgH,GAAA9I,IAAAuE,CAEA,IAAAA,EAAA,MAAAuE,GAAAvE,GAEAyqK,GAAA2zB,SAAA,SAAA3kJ,EAAAx9C,GACA,GAAAuU,IAAAipC,EAAA98C,OAAA,GAAAV,EAAA,EAAA4D,EAAAuG,KAAAy+B,MAAAr0B,GAAA1D,GAAA2sC,EAAA55C,EAAA,GAAA1B,EAAAqS,EAAA3Q,CACA,OAAA1B,GAAA2O,EAAA3O,GAAAs7C,EAAA55C,GAAAiN,GAAAA,GAEA29J,GAAA86B,OAAA,SAAAntJ,EAAAz4C,GACA,GAAAlE,GAAA+pM,KAAA7jM,EAAAy2C,EAAAz7C,OAAAY,GAAA,CACA,IAAA,IAAA2F,UAAAvG,OACA,OAAAY,EAAAoE,GAAA+mK,EAAAjtK,EAAAgtK,EAAArwH,EAAA76C,MAAAioM,EAAAjjM,KAAA9G,OAEA,QAAA8B,EAAAoE,GAAA+mK,EAAAjtK,EAAAgtK,EAAA9oK,EAAAtC,KAAA+6C,EAAAA,EAAA76C,GAAAA,MAAAioM,EAAAjjM,KAAA9G,EAEA,IAAA+pM,EAAA7oM,OAAA,MAAA8tK,IAAA2zB,SAAAoH,EAAAl4L,KAAAk7J,GAAA,KAEAiC,GAAAg7B,SAAA,SAAArtJ,EAAAz4C,GACA,GAAAlE,GAAAS,EAAAyF,EAAAy2C,EAAAz7C,OAAA+E,EAAA,EAAA6C,EAAA,EAAAhH,GAAA,EAAAyC,EAAA,CACA,IAAA,IAAAkD,UAAAvG,OACA,OAAAY,EAAAoE,GACA+mK,EAAAjtK,EAAAgtK,EAAArwH,EAAA76C,OACArB,EAAAT,EAAAiG,EACAA,GAAAxF,IAAA8D,EACAuE,GAAArI,GAAAT,EAAAiG,QAIA,QAAAnE,EAAAoE,GACA+mK,EAAAjtK,EAAAgtK,EAAA9oK,EAAAtC,KAAA+6C,EAAAA,EAAA76C,GAAAA,OACArB,EAAAT,EAAAiG,EACAA,GAAAxF,IAAA8D,EACAuE,GAAArI,GAAAT,EAAAiG,GAIA,IAAA1B,EAAA,EAAA,MAAAuE,IAAAvE,EAAA,IAEAyqK,GAAAi7B,UAAA,WACA,GAAA54L,GAAA29J,GAAAg7B,SAAAjnM,MAAAxC,KAAAkH,UACA,OAAA4J,GAAA1G,KAAA64J,KAAAnyJ,GAAAA,EAwBA,IAAA64L,IAAAh9B,EAAAH,EACAiC,IAAAm7B,WAAAD,GAAAjjL,KACA+nJ,GAAAuxB,OAAAvxB,GAAAo7B,YAAAF,GAAA9sK,MACA4xI,GAAAq7B,SAAA,SAAAnmM,GACA,MAAAgpK,GAAA,IAAAhpK,EAAAhD,OAAA,SAAAT,EAAAmS,GACA,MAAAm6J,GAAA7oK,EAAAzD,GAAAmS,IACA1O,IAEA8qK,GAAAs7B,QAAA,SAAA3tJ,EAAAi2H,EAAA5sC,IACA//H,EAAAwB,UAAAvG,QAAA,IACA8kI,EAAArpF,EAAAz7C,OACA+E,EAAA,IAAA2sK,EAAA,GAGA,KADA,GAAAzhK,GAAArP,EAAAmE,EAAA+/H,EAAA4sC,EACA3sK,GACAnE,EAAA6I,KAAAqH,SAAA/L,IAAA,EACAkL,EAAAwrC,EAAA12C,EAAA2sK,GAAAj2H,EAAA12C,EAAA2sK,GAAAj2H,EAAA76C,EAAA8wK,GAAAj2H,EAAA76C,EAAA8wK,GAAAzhK,CAEA,OAAAwrC,IAEAqyH,GAAAu7B,QAAA,SAAA5tJ,EAAA6tJ,GAEA,IADA,GAAA1oM,GAAA0oM,EAAAtpM,OAAAupM,EAAA,GAAAn9L,OAAAxL,GACAA,KAAA2oM,EAAA3oM,GAAA66C,EAAA6tJ,EAAA1oM,GACA,OAAA2oM,IAEAz7B,GAAAniD,MAAA,SAAAlwE,GAEA,IADA,GAAAunI,GAAApiL,EAAA,EAAAoE,EAAAy2C,EAAAz7C,OAAA,EAAAu0H,EAAA94E,EAAA,GAAAkwE,EAAA,GAAAv/G,OAAApH,EAAA,EAAA,EAAAA,GACApE,EAAAoE,GAAA2mH,EAAA/qH,IAAAoiL,EAAAzuD,EAAAA,EAAA94E,IAAA76C,GACA,OAAA+qH,IAEAmiD,GAAA07B,UAAA,SAAAC,GACA,KAAAzkM,EAAAykM,EAAAzpM,QAAA,QACA,KAAA,GAAAY,IAAA,EAAAmE,EAAA+oK,GAAAn1G,IAAA8wI,EAAAt9B,GAAAq9B,EAAA,GAAAp9L,OAAArH,KAAAnE,EAAAmE,GACA,IAAA,GAAAC,GAAA3B,GAAA,EAAA87G,EAAAqqF,EAAA5oM,GAAA,GAAAwL,OAAApH,KAAA3B,EAAA2B,GACAm6G,EAAA97G,GAAAomM,EAAApmM,GAAAzC,EAGA,OAAA4oM,IAKA17B,GAAA47B,IAAA,WACA,MAAA57B,IAAA07B,UAAAjjM,YAEAunK,GAAAh2H,KAAA,SAAA7vC,GACA,GAAA6vC,KACA,KAAA,GAAAl2B,KAAA3Z,GAAA6vC,EAAAlyC,KAAAgc,EACA,OAAAk2B,IAEAg2H,GAAAhxH,OAAA,SAAA70C,GACA,GAAA60C,KACA,KAAA,GAAAl7B,KAAA3Z,GAAA60C,EAAAl3C,KAAAqC,EAAA2Z,GACA,OAAAk7B,IAEAgxH,GAAA1gD,QAAA,SAAAnlH,GACA,GAAAmlH,KACA,KAAA,GAAAxrG,KAAA3Z,GAAAmlH,EAAAxnH,MACAgc,IAAAA,EACAjP,MAAA1K,EAAA2Z,IAEA,OAAAwrG,IAEA0gD,GAAAppK,MAAA,SAAAilM,GAEA,IADA,GAAA5kM,GAAAy+D,EAAA/nB,EAAAz2C,EAAA2kM,EAAA3pM,OAAAY,GAAA,EAAAyC,EAAA,IACAzC,EAAAoE,GAAA3B,GAAAsmM,EAAA/oM,GAAAZ,MAEA,KADAwjE,EAAA,GAAAp3D,OAAA/I,KACA2B,GAAA,GAGA,IAFAy2C,EAAAkuJ,EAAA3kM,GACAD,EAAA02C,EAAAz7C,SACA+E,GAAA,GACAy+D,IAAAngE,GAAAo4C,EAAA12C,EAGA,OAAAy+D,GAEA,IAAArnC,IAAA1yB,KAAA0yB,GACA2xI,IAAAxmH,MAAA,SAAA1jD,EAAA6J,EAAA8Y,GAQA,GAPAhgB,UAAAvG,OAAA,IACAumB,EAAA,EACAhgB,UAAAvG,OAAA,IACAyN,EAAA7J,EACAA,EAAA,KAGA6J,EAAA7J,GAAA2iB,IAAA8f,EAAAA,EAAA,KAAA,IAAAlnC,OAAA,iBACA,IAAAkE,GAAAikD,KAAA/jD,EAAA6oK,EAAAjwI,GAAA5V,IAAA3lB,GAAA,CAEA,IADAgD,GAAAL,EAAAkK,GAAAlK,EAAAgjB,GAAAhjB,EACAgjB,EAAA,EAAA,MAAAljB,EAAAO,EAAA2iB,IAAA3lB,GAAA6M,GAAA65C,EAAA1hD,KAAAvC,EAAAE,OAAA,OAAAF,EAAAO,EAAA2iB,IAAA3lB,GAAA6M,GAAA65C,EAAA1hD,KAAAvC,EAAAE,EACA,OAAA+jD,IAeAwmH,GAAA7lK,IAAA,SAAAmlK,EAAApqK,GACA,GAAAiF,GAAA,GAAAqkK,EACA,IAAAc,YAAAd,GACAc,EAAAr1B,QAAA,SAAAn2H,EAAAjP,GACA1K,EAAAnF,IAAA8e,EAAAjP,SAEA,IAAAvG,MAAAC,QAAA+gK,GAAA,CACA,GAAAnoK,GAAArE,GAAA,EAAAoE,EAAAooK,EAAAptK,MACA,IAAA,IAAAuG,UAAAvG,OAAA,OAAAY,EAAAoE,GAAAiD,EAAAnF,IAAAlC,EAAAwsK,EAAAxsK,QAAA,QAAAA,EAAAoE,GAAAiD,EAAAnF,IAAAE,EAAAtC,KAAA0sK,EAAAnoK,EAAAmoK,EAAAxsK,GAAAA,GAAAqE,OAEA,KAAA,GAAA2c,KAAAwrJ,GAAAnlK,EAAAnF,IAAA8e,EAAAwrJ,EAAAxrJ,GAEA,OAAA3Z,GAKA,IAAAukK,IAAA,YAAAC,GAAA,IACAJ,GAAAC,GACAj1J,IAAAs1J,EACAtoK,IAAA,SAAAud,GACA,MAAAviB,MAAAoD,EAAA8pK,EAAA3qJ,KAEA9e,IAAA,SAAA8e,EAAAjP,GACA,MAAAtT,MAAAoD,EAAA8pK,EAAA3qJ,IAAAjP,GAEA1G,OAAA2gK,EACA90H,KAAA+0H,EACA/vH,OAAA,WACA,GAAAA,KACA,KAAA,GAAAl7B,KAAAviB,MAAAoD,EAAAq6C,EAAAl3C,KAAAvG,KAAAoD,EAAAmf,GACA,OAAAk7B,IAEAswE,QAAA,WACA,GAAAA,KACA,KAAA,GAAAxrG,KAAAviB,MAAAoD,EAAA2qH,EAAAxnH,MACAgc,IAAA8qJ,EAAA9qJ,GACAjP,MAAAtT,KAAAoD,EAAAmf,IAEA,OAAAwrG,IAEA70E,KAAAu0H,EACArhK,MAAAshK,EACAh1B,QAAA,SAAA/0I,GACA,IAAA,GAAA4e,KAAAviB,MAAAoD,EAAAO,EAAAtC,KAAArB,KAAAqtK,EAAA9qJ,GAAAviB,KAAAoD,EAAAmf,OA6BAksJ,GAAAx/B,KAAA,WAEA,QAAArmI,GAAA2hM,EAAAnuJ,EAAAsiF,GACA,GAAAA,GAAAjmF,EAAA93C,OAAA,MAAA6pM,GAAAA,EAAAnpM,KAAA4tI,EAAA7yF,GAAAquJ,EAAAruJ,EAAA9qC,KAAAm5L,GAAAruJ,CAEA,KADA,GAAAsuJ,GAAA38B,EAAA48B,EAAAltJ,EAAAl8C,GAAA,EAAAoE,EAAAy2C,EAAAz7C,OAAA4hB,EAAAk2B,EAAAimF,KAAAksE,EAAA,GAAA39B,KACA1rK,EAAAoE,IACA83C,EAAAmtJ,EAAA5lM,IAAA0lM,EAAAnoL,EAAAwrJ,EAAA3xH,EAAA76C,MACAk8C,EAAAl3C,KAAAwnK,GAEA68B,EAAAnnM,IAAAinM,GAAA38B,GAeA,OAZAw8B,IACAx8B,EAAAw8B,IACAI,EAAA,SAAAD,EAAAjtJ,GACAswH,EAAAtqK,IAAAinM,EAAA9hM,EAAA2hM,EAAA9sJ,EAAAihF,OAGAqvC,KACA48B,EAAA,SAAAD,EAAAjtJ,GACAswH,EAAA28B,GAAA9hM,EAAA2hM,EAAA9sJ,EAAAihF,KAGAksE,EAAAlyD,QAAAiyD,GACA58B,EAEA,QAAAhgD,GAAAnlH,EAAA81H,GACA,GAAAA,GAAAjmF,EAAA93C,OAAA,MAAAiI,EACA,IAAAwzC,MAAAyuJ,EAAAC,EAAApsE,IAOA,OANA91H,GAAA8vI,QAAA,SAAAn2H,EAAAwyE,GACA34C,EAAA71C,MACAgc,IAAAA,EACAk7B,OAAAswE,EAAAh5B,EAAA2pC,OAGAmsE,EAAAzuJ,EAAA9qC,KAAA,SAAA7R,EAAAC,GACA,MAAAmrM,GAAAprM,EAAA8iB,IAAA7iB,EAAA6iB,OACA65B,EApCA,GAAAquJ,GAAAD,EAAAv7D,KAAAx2F,KAAAqyJ,IA4DA,OAtBA77D,GAAArmI,IAAA,SAAAwzC,EAAAmuJ,GACA,MAAA3hM,GAAA2hM,EAAAnuJ,EAAA,IAEA6yF,EAAAlhB,QAAA,SAAA3xE,GACA,MAAA2xE,GAAAnlH,EAAA6lK,GAAA7lK,IAAAwzC,EAAA,GAAA,IAEA6yF,EAAA1sH,IAAA,SAAAriB,GAEA,MADAu4C,GAAAlyC,KAAArG,GACA+uI,GAEAA,EAAA67D,SAAA,SAAA9kL,GAEA,MADA8kL,GAAAryJ,EAAA93C,OAAA,GAAAqlB,EACAipH,GAEAA,EAAAw7D,WAAA,SAAAzkL,GAEA,MADAykL,GAAAzkL,EACAipH,GAEAA,EAAAu7D,OAAA,SAAA7mM,GAEA,MADA6mM,GAAA7mM,EACAsrI,GAEAA,GAEAw/B,GAAAhrK,IAAA,SAAA24C,GACA,GAAA34C,GAAA,GAAAkqK,EACA,IAAAvxH,EAAA,IAAA,GAAA76C,GAAA,EAAAoE,EAAAy2C,EAAAz7C,OAAAY,EAAAoE,IAAApE,EAAAkC,EAAA4D,IAAA+0C,EAAA76C,GACA,OAAAkC,IAKAupK,EAAAW,GACA31J,IAAAs1J,EACAjmK,IAAA,SAAAkb,GAEA,MADAviB,MAAAoD,EAAA8pK,EAAA3qJ,GAAA,MAAA,EACAA,GAEA3V,OAAA2gK,EACA9vH,OAAA+vH,EACAt0H,KAAAu0H,EACArhK,MAAAshK,EACAh1B,QAAA,SAAA/0I,GACA,IAAA,GAAA4e,KAAAviB,MAAAoD,EAAAO,EAAAtC,KAAArB,KAAAqtK,EAAA9qJ,OAGAksJ,GAAAs8B,YAIAt8B,GAAAwI,OAAA,SAAA9+J,EAAAyF,GAEA,IADA,GAAAmQ,GAAAxsB,EAAA,EAAAoE,EAAAuB,UAAAvG,SACAY,EAAAoE,GAAAwS,EAAA4V,EAAA7mB,UAAA3F,IAAAssK,EAAA11J,EAAAyF,EAAAA,EAAAmQ,GACA,OAAA5V,GAgBA,IAAA61J,KAAA,SAAA,KAAA,MAAA,MAAA,IAAA,IAEAS,IAAAzvJ,SAAA,WAEA,IADA,GAAAA,GAAA,GAAAmvJ,GAAA5sK,GAAA,EAAAoE,EAAAuB,UAAAvG,SACAY,EAAAoE,GAAAqZ,EAAA9X,UAAA3F,IAAA6sK,EAAApvJ,EACA,OAAAA,IAGAmvJ,EAAAvjK,UAAA8Y,GAAA,SAAA7iB,EAAA0tK,GACA,GAAAhtK,GAAAV,EAAA2P,QAAA,KAAAqM,EAAA,EAKA,IAJAtb,GAAA,IACAsb,EAAAhc,EAAA4B,MAAAlB,EAAA,GACAV,EAAAA,EAAA4B,MAAA,EAAAlB,IAEAV,EAAA,MAAAqG,WAAAvG,OAAA,EAAAX,KAAAa,GAAA6iB,GAAA7G,GAAA7c,KAAAa,GAAA6iB,GAAA7G,EAAA0xJ,EACA,IAAA,IAAArnK,UAAAvG,OAAA,CACA,GAAA,MAAA4tK,EAAA,IAAA1tK,IAAAb,MACAA,KAAA0Q,eAAA7P,IAAAb,KAAAa,GAAA6iB,GAAA7G,EAAA,KAEA,OAAA7c,QAyBAyuK,GAAArnK,MAAA,KA0BAqnK,GAAA4B,QAAA,SAAA9nK,GACA,MAAAA,GAAAlF,QAAA2nM,GAAA,QAEA,IAAAA,IAAA,kCACA97B,MAAA+7B,UAAA,SAAAl9B,EAAAnjK,GACAmjK,EAAAk9B,UAAArgM,GACA,SAAAmjK,EAAAnjK,GACA,IAAA,GAAAsgM,KAAAtgM,GAAAmjK,EAAAm9B,GAAAtgM,EAAAsgM,IAMA77B,GAAA,SAAA9mK,EAAA5C,GACA,MAAAA,GAAAqpE,cAAAzmE,IACAgnK,GAAA,SAAAhnK,EAAA5C,GACA,MAAAA,GAAAP,iBAAAmD,IACAupK,GAAA,SAAAnsK,EAAA4C,GACA,GAAA4iM,GAAAxlM,EAAAmO,SAAAnO,EAAAmoK,EAAAnoK,EAAA,mBAIA,QAHAmsK,GAAA,SAAAnsK,EAAA4C,GACA,MAAA4iM,GAAA9pM,KAAAsE,EAAA4C,KAEA5C,EAAA4C,GAEA,mBAAA6iM,UACA/7B,GAAA,SAAA9mK,EAAA5C,GACA,MAAAylM,QAAA7iM,EAAA5C,GAAA,IAAA,MAEA4pK,GAAA67B,OACAt5B,GAAAs5B,OAAA70L,iBAEAk4J,GAAAvmH,UAAA,WACA,MAAAumH,IAAAv0J,OAAAuuL,GAAA9yL,iBAEA,IAAAw5J,IAAAV,GAAAvmH,UAAAt9C,YACAukK,IAAAj1J,OAAA,SAAAD,GACA,GAAAoxL,GAAAC,EAAAphK,EAAA8O,EAAAuyJ,IACAtxL,GAAAm1J,EAAAn1J,EACA,KAAA,GAAAjW,IAAA,EAAA0B,EAAA1F,KAAAW,SAAAqD,EAAA0B,GAAA,CACA6lM,EAAAhlM,KAAA8kM,MACAA,EAAA7qM,YAAA0pC,EAAAlqC,KAAAgE,IAAAxD,UACA,KAAA,GAAAe,IAAA,EAAAoE,EAAAukC,EAAAvpC,SAAAY,EAAAoE,IACAqzC,EAAA9O,EAAA3oC,KACA8pM,EAAA9kM,KAAA+kM,EAAArxL,EAAA5Y,KAAA23C,EAAAA,EAAA44H,SAAArwK,EAAAyC,IACAsnM,GAAA,YAAAtyJ,KAAAsyJ,EAAA15B,SAAA54H,EAAA44H,WAEAy5B,EAAA9kM,KAAA,MAIA,MAAA0oK,GAAAs8B,IAOAp8B,GAAA7gF,UAAA,SAAAr0E,GACA,GAAAoxL,GAAAryJ,EAAAuyJ,IACAtxL,GAAAq1J,EAAAr1J,EACA,KAAA,GAAAjW,IAAA,EAAA0B,EAAA1F,KAAAW,SAAAqD,EAAA0B,GACA,IAAA,GAAAwkC,GAAAlqC,KAAAgE,GAAAzC,GAAA,EAAAoE,EAAAukC,EAAAvpC,SAAAY,EAAAoE,IACAqzC,EAAA9O,EAAA3oC,MACAgqM,EAAAhlM,KAAA8kM,EAAA14B,GAAA14J,EAAA5Y,KAAA23C,EAAAA,EAAA44H,SAAArwK,EAAAyC,KACAqnM,EAAA7qM,WAAAw4C,EAIA,OAAAi2H,GAAAs8B,GAOA,IAAAh6B,IAAA,+BACAi6B,IACAzqF,IAAA,6BACA0qF,MAAAl6B,GACAm6B,MAAA,+BACA9+K,IAAA,uCACA++K,MAAA,gCAEAl9B,IAAAwB,IACA32H,OAAAkyJ,GACAt7B,QAAA,SAAArzJ,GACA,GAAAtb,GAAAsb,EAAArM,QAAA,KAAA8oC,EAAAz8B,CAEA,OADAtb,IAAA,GAAA,WAAA+3C,EAAAz8B,EAAApa,MAAA,EAAAlB,MAAAsb,EAAAA,EAAApa,MAAAlB,EAAA,IACAiqM,GAAA96L,eAAA4oC,IACAghC,MAAAkxH,GAAAlyJ,GACAmG,MAAA5iC,GACAA,IAGAsyJ,GAAAp4J,KAAA,SAAA8F,EAAAvJ,GACA,GAAApM,UAAAvG,OAAA,EAAA,CACA,GAAA,gBAAAkc,GAAA,CACA,GAAAm8B,GAAAh5C,KAAAg5C,MAEA,OADAn8B,GAAA4xJ,GAAAwB,GAAAC,QAAArzJ,GACAA,EAAA4iC,MAAAzG,EAAA4yJ,eAAA/uL,EAAAy9D,MAAAz9D,EAAA4iC,OAAAzG,EAAAz1C,aAAAsZ,GAEA,IAAAvJ,IAAAuJ,GAAA7c,KAAA6B,KAAA2tK,EAAAl8J,EAAAuJ,EAAAvJ,IACA,OAAAtT,MAEA,MAAAA,MAAA6B,KAAA2tK,EAAA3yJ,EAAAvJ,KA6BA67J,GAAA08B,QAAA,SAAAhvL,EAAAvJ,GACA,GAAApM,UAAAvG,OAAA,EAAA,CACA,GAAA,gBAAAkc,GAAA,CACA,GAAAm8B,GAAAh5C,KAAAg5C,OAAArzC,GAAAkX,EAAAyzJ,EAAAzzJ,IAAAlc,OAAAY,GAAA,CACA,IAAA+R,EAAA0lC,EAAA23H,WACA,OAAApvK,EAAAoE,GAAA,IAAA2N,EAAA5M,SAAAmW,EAAAtb,IAAA,OAAA,MAGA,KADA+R,EAAA0lC,EAAAz1C,aAAA,WACAhC,EAAAoE,GAAA,IAAAyqK,EAAAvzJ,EAAAtb,IAAAE,KAAA6R,GAAA,OAAA,CAEA,QAAA,EAEA,IAAAA,IAAAuJ,GAAA7c,KAAA6B,KAAA0uK,EAAAj9J,EAAAuJ,EAAAvJ,IACA,OAAAtT,MAEA,MAAAA,MAAA6B,KAAA0uK,EAAA1zJ,EAAAvJ,KAkCA67J,GAAA9qK,MAAA,SAAAwY,EAAAvJ,EAAAumD,GACA,GAAAl0D,GAAAuB,UAAAvG,MACA,IAAAgF,EAAA,EAAA,CACA,GAAA,gBAAAkX,GAAA,CACAlX,EAAA,IAAA2N,EAAA,GACA,KAAAumD,IAAAh9C,GAAA7c,KAAA6B,KAAA+uK,EAAA/2G,EAAAh9C,EAAAg9C,GAAAvmD,GACA,OAAAtT,MAEA,GAAA2F,EAAA,EAAA,CACA,GAAAqzC,GAAAh5C,KAAAg5C,MACA,OAAAuzH,GAAAvzH,GAAAt0B,iBAAAs0B,EAAA,MAAA3vC,iBAAAwT,GAEAg9C,EAAA,GAEA,MAAA75D,MAAA6B,KAAA+uK,EAAA/zJ,EAAAvJ,EAAAumD,KAeAs1G,GAAA+7B,SAAA,SAAAruL,EAAAvJ,GACA,GAAApM,UAAAvG,OAAA,EAAA,CACA,GAAA,gBAAAkc,GAAA,MAAA7c,MAAAg5C,OAAAn8B,EACA,KAAAvJ,IAAAuJ,GAAA7c,KAAA6B,KAAAovK,EAAA39J,EAAAuJ,EAAAvJ,IACA,OAAAtT,MAEA,MAAAA,MAAA6B,KAAAovK,EAAAp0J,EAAAvJ,KAeA67J,GAAA9uK,KAAA,SAAAiT,GACA,MAAApM,WAAAvG,OAAAX,KAAA6B,KAAA,kBAAAyR,GAAA,WACA,GAAAxC,GAAAwC,EAAA9Q,MAAAxC,KAAAkH,UACAlH,MAAAsG,YAAA,MAAAwK,EAAA,GAAAA,GACA,MAAAwC,EAAA,WACAtT,KAAAsG,YAAA,IACA,WACAtG,KAAAsG,YAAAgN,IACAtT,KAAAg5C,OAAA1yC,aAEA6oK,GAAAxmK,KAAA,SAAA2K,GACA,MAAApM,WAAAvG,OAAAX,KAAA6B,KAAA,kBAAAyR,GAAA,WACA,GAAAxC,GAAAwC,EAAA9Q,MAAAxC,KAAAkH,UACAlH,MAAAiG,UAAA,MAAA6K,EAAA,GAAAA,GACA,MAAAwC,EAAA,WACAtT,KAAAiG,UAAA,IACA,WACAjG,KAAAiG,UAAAqN,IACAtT,KAAAg5C,OAAA/yC,WAEAkpK,GAAArrJ,OAAA,SAAAjH,GAEA,MADAA,GAAAw0J,EAAAx0J,GACA7c,KAAAka,OAAA,WACA,MAAAla,MAAAO,YAAAsc,EAAAra,MAAAxC,KAAAkH,eAaAioK,GAAAnmF,OAAA,SAAAnsE,EAAAoH,GAGA,MAFApH,GAAAw0J,EAAAx0J,GACAoH,EAAAmrJ,EAAAnrJ,GACAjkB,KAAAka,OAAA,WACA,MAAAla,MAAAgkB,aAAAnH,EAAAra,MAAAxC,KAAAkH,WAAA+c,EAAAzhB,MAAAxC,KAAAkH,YAAA,SAGAioK,GAAAviK,OAAA,WACA,MAAA5M,MAAA6B,KAAA6vK,IAMAvC,GAAA9+J,KAAA,SAAAiD,EAAAiP,GAWA,QAAAsP,GAAAqY,EAAA4hK,GACA,GAAAvqM,GAAAy3C,EAAA+yJ,EAAApmM,EAAAukC,EAAAvpC,OAAA+E,EAAAomM,EAAAnrM,OAAA82L,EAAArtL,KAAAkvD,IAAA3zD,EAAAD,GAAAsmM,EAAA,GAAAj/L,OAAArH,GAAAumM,EAAA,GAAAl/L,OAAArH,GAAAwmM,EAAA,GAAAn/L,OAAApH,EACA,IAAA4c,EAAA,CACA,GAAAmoL,GAAAyB,EAAA,GAAAl/B,GAAAm/B,EAAA,GAAAr/L,OAAApH,EACA,KAAApE,GAAA,IAAAA,EAAAoE,IACAqzC,EAAA9O,EAAA3oC,MACA4qM,EAAAn0L,IAAA0yL,EAAAnoL,EAAAlhB,KAAA23C,EAAAA,EAAA44H,SAAArwK,IACA2qM,EAAA3qM,GAAAy3C,EAEAmzJ,EAAA1oM,IAAAinM,EAAA1xJ,GAEAozJ,EAAA7qM,GAAAmpM,EAGA,KAAAnpM,GAAA,IAAAA,EAAAmE,IACAszC,EAAAmzJ,EAAAnnM,IAAA0lM,EAAAnoL,EAAAlhB,KAAAyqM,EAAAC,EAAAD,EAAAvqM,GAAAA,KAEAy3C,KAAA,IACAgzJ,EAAAzqM,GAAAy3C,EACAA,EAAA44H,SAAAm6B,GAHAE,EAAA1qM,GAAAowK,EAAAo6B,GAKAI,EAAA1oM,IAAAinM,GAAA,EAEA,KAAAnpM,GAAA,IAAAA,EAAAoE,GACApE,IAAA6qM,IAAAD,EAAAnnM,IAAAonM,EAAA7qM,OAAA,IACA2qM,EAAA3qM,GAAA2oC,EAAA3oC,QAGA,CACA,IAAAA,GAAA,IAAAA,EAAAk2L,GACAz+I,EAAA9O,EAAA3oC,GACAwqM,EAAAD,EAAAvqM,GACAy3C,GACAA,EAAA44H,SAAAm6B,EACAC,EAAAzqM,GAAAy3C,GAEAizJ,EAAA1qM,GAAAowK,EAAAo6B,EAGA,MAAAxqM,EAAAmE,IAAAnE,EACA0qM,EAAA1qM,GAAAowK,EAAAm6B,EAAAvqM,GAEA,MAAAA,EAAAoE,IAAApE,EACA2qM,EAAA3qM,GAAA2oC,EAAA3oC,GAGA0qM,EAAA9hJ,OAAA6hJ,EACAC,EAAAzrM,WAAAwrM,EAAAxrM,WAAA0rM,EAAA1rM,WAAA0pC,EAAA1pC,WACAm9B,EAAAp3B,KAAA0lM,GACA9hJ,EAAA5jD,KAAAylM,GACA50D,EAAA7wI,KAAA2lM,GA5DA,GAAAhiK,GAAA8O,EAAAz3C,GAAA,EAAAoE,EAAA3F,KAAAW,MACA,KAAAuG,UAAAvG,OAAA,CAEA,IADA2S,EAAA,GAAAvG,OAAApH,GAAAukC,EAAAlqC,KAAA,IAAAW,UACAY,EAAAoE,IACAqzC,EAAA9O,EAAA3oC,MACA+R,EAAA/R,GAAAy3C,EAAA44H,SAGA,OAAAt+J,GAsDA,GAAAqqB,GAAAu0I,MAAA/nH,EAAA8kH,MAAA73B,EAAA63B,KACA,IAAA,kBAAA37J,GACA,OAAA/R,EAAAoE,GACAksB,EAAAqY,EAAAlqC,KAAAuB,GAAA+R,EAAAjS,KAAA6oC,EAAAA,EAAA1pC,WAAAoxK,SAAArwK,QAGA,QAAAA,EAAAoE,GACAksB,EAAAqY,EAAAlqC,KAAAuB,GAAA+R,EASA,OANA62C,GAAAxsB,MAAA,WACA,MAAAA,IAEAwsB,EAAAitF,KAAA,WACA,MAAAA,IAEAjtF,GAOAglH,GAAAjyH,MAAA,SAAA5pC,GACA,MAAApM,WAAAvG,OAAAX,KAAAkrM,SAAA,WAAA53L,GAAAtT,KAAAkrM,SAAA,aAEA/7B,GAAAztK,OAAA,SAAAA,GACA,GAAA2pM,GAAAnhK,EAAA8O,EAAAuyJ,IACA,mBAAA7pM,KAAAA,EAAAmwK,EAAAnwK,GACA,KAAA,GAAAsC,GAAA,EAAA0B,EAAA1F,KAAAW,OAAAqD,EAAA0B,EAAA1B,IAAA,CACAunM,EAAAhlM,KAAA8kM,MACAA,EAAA7qM,YAAA0pC,EAAAlqC,KAAAgE,IAAAxD,UACA,KAAA,GAAAe,GAAA,EAAAoE,EAAAukC,EAAAvpC,OAAAY,EAAAoE,EAAApE,KACAy3C,EAAA9O,EAAA3oC,KAAAG,EAAAL,KAAA23C,EAAAA,EAAA44H,SAAArwK,EAAAyC,IACAqnM,EAAA9kM,KAAAyyC,GAIA,MAAAi2H,GAAAs8B,IAOAp8B,GAAAnpJ,MAAA,WACA,IAAA,GAAAhiB,IAAA,EAAA0B,EAAA1F,KAAAW,SAAAqD,EAAA0B,GACA,IAAA,GAAAszC,GAAA9O,EAAAlqC,KAAAgE,GAAAzC,EAAA2oC,EAAAvpC,OAAA,EAAA8S,EAAAy2B,EAAA3oC,KAAAA,GAAA,IACAy3C,EAAA9O,EAAA3oC,MACAkS,GAAAA,IAAAulC,EAAA/lC,aAAAQ,EAAAjT,WAAAwjB,aAAAg1B,EAAAvlC,GACAA,EAAAulC,EAIA,OAAAh5C,OAEAmvK,GAAA79J,KAAA,SAAA0gK,GACAA,EAAAD,EAAAvvK,MAAAxC,KAAAkH,UACA,KAAA,GAAAlD,IAAA,EAAA0B,EAAA1F,KAAAW,SAAAqD,EAAA0B,GAAA1F,KAAAgE,GAAAsN,KAAA0gK,EACA,OAAAhyK,MAAAgmB,SAQAmpJ,GAAAttK,KAAA,SAAA23I,GACA,MAAAy4B,GAAAjyK,KAAA,SAAAg5C,EAAAz3C,EAAAyC,GACAw1I,EAAAn4I,KAAA23C,EAAAA,EAAA44H,SAAArwK,EAAAyC,MAWAmrK,GAAA9tK,KAAA,SAAAm4I,GACA,GAAAxhG,GAAA26H,GAAAzrK,UAEA,OADAsyI,GAAAh3I,MAAAw1C,EAAA,GAAAh4C,KAAAg4C,GACAh4C,MAEAmvK,GAAA/iK,MAAA,WACA,OAAApM,KAAAg5C,QAEAm2H,GAAAn2H,KAAA,WACA,IAAA,GAAAh1C,GAAA,EAAA0B,EAAA1F,KAAAW,OAAAqD,EAAA0B,EAAA1B,IACA,IAAA,GAAAkmC,GAAAlqC,KAAAgE,GAAAzC,EAAA,EAAAoE,EAAAukC,EAAAvpC,OAAAY,EAAAoE,EAAApE,IAAA,CACA,GAAAy3C,GAAA9O,EAAA3oC,EACA,IAAAy3C,EAAA,MAAAA,GAGA,MAAA,OAEAm2H,GAAAj2H,KAAA,WACA,GAAAvzC,GAAA,CAIA,OAHAssK,GAAAjyK,KAAA,aACA2F,IAEAA,EAMA,IAAAwsK,MACA1D,IAAAvmH,UAAAvqB,MAAAu0I,EACAzD,GAAAvmH,UAAAvqB,MAAA/yB,UAAAunK,GACAA,GAAAruJ,OAAAqrJ,GAAArrJ,OACAquJ,GAAA/lK,MAAA+iK,GAAA/iK,MACA+lK,GAAAn5H,KAAAm2H,GAAAn2H,KACAm5H,GAAA9wK,KAAA8tK,GAAA9tK,KACA8wK,GAAAj5H,KAAAi2H,GAAAj2H,KACAi5H,GAAAj4J,OAAA,SAAAD,GAEA,IAAA,GADAoxL,GAAAC,EAAAe,EAAAniK,EAAA8O,EAAAuyJ,KACAvnM,GAAA,EAAA0B,EAAA1F,KAAAW,SAAAqD,EAAA0B,GAAA,CACA2mM,GAAAniK,EAAAlqC,KAAAgE,IAAAmmD,OACAohJ,EAAAhlM,KAAA8kM,MACAA,EAAA7qM,WAAA0pC,EAAA1pC,UACA,KAAA,GAAAe,IAAA,EAAAoE,EAAAukC,EAAAvpC,SAAAY,EAAAoE,IACAqzC,EAAA9O,EAAA3oC,KACA8pM,EAAA9kM,KAAA8lM,EAAA9qM,GAAA+pM,EAAArxL,EAAA5Y,KAAA6oC,EAAA1pC,WAAAw4C,EAAA44H,SAAArwK,EAAAyC,IACAsnM,EAAA15B,SAAA54H,EAAA44H,UAEAy5B,EAAA9kM,KAAA,MAIA,MAAA0oK,GAAAs8B,IAEAp5B,GAAAnpF,OAAA,SAAAnsE,EAAAoH,GAEA,MADA/c,WAAAvG,OAAA,IAAAsjB,EAAAmuJ,EAAApyK,OACAmvK,GAAAnmF,OAAA3nF,KAAArB,KAAA6c,EAAAoH,IAYAwqJ,GAAAv0J,OAAA,SAAA8+B,GACA,GAAA9O,EAQA,OAPA,gBAAA8O,IACA9O,GAAAmlI,GAAAr2H,EAAAyvJ,KACAv+J,EAAA1pC,WAAAioM,GAAA9yL,kBAEAu0B,GAAA8O,GACA9O,EAAA1pC,WAAA8rK,EAAAtzH,IAEAi2H,GAAA/kI,KAEAukI,GAAAngF,UAAA,SAAA2nG,GACA,GAAA/rJ,EAQA,OAPA,gBAAA+rJ,IACA/rJ,EAAAyoI,GAAApD,GAAA0mB,EAAAwS,KACAv+J,EAAA1pC,WAAAioM,GAAA9yL,kBAEAu0B,EAAAyoI,GAAAsjB,GACA/rJ,EAAA1pC,WAAA,MAEAyuK,GAAA/kI,KAEAilI,GAAAzrJ,GAAA,SAAA7iB,EAAA0tK,EAAAiE,GACA,GAAA7sK,GAAAuB,UAAAvG,MACA,IAAAgF,EAAA,EAAA,CACA,GAAA,gBAAA9E,GAAA,CACA8E,EAAA,IAAA4oK,GAAA,EACA,KAAAiE,IAAA3xK,GAAAb,KAAA6B,KAAA0wK,EAAAC,EAAA3xK,EAAA2xK,GAAAjE,GACA,OAAAvuK,MAEA,GAAA2F,EAAA,EAAA,OAAAA,EAAA3F,KAAAg5C,OAAA,OAAAn4C,KAAA8E,EAAAvC,CACAovK,IAAA,EAEA,MAAAxyK,MAAA6B,KAAA0wK,EAAA1xK,EAAA0tK,EAAAiE,IAgCA,IAAAM,IAAArE,GAAA7lK,KACA0a,WAAA,YACAC,WAAA,YAEAklL,KACA31B,GAAAp6B,QAAA,SAAAx0I,GACA,KAAAA,IAAAukM,KAAA31B,GAAAlmK,OAAA1I,IAwBA,IAAAivK,IAAAD,GAAA,CAyBAzE,IAAA69B,MAAA,SAAA/uK,GACA,MAAA81I,GAAA91I,EAAAmxI,KAEA,IAAA8E,IAAAxzK,KAAA8oC,WAAA,SAAArnC,KAAAzB,KAAA8oC,UAAAC,YAAA,EAAA,CA8BA0lI,IAAAhyE,MAAA,SAAAl/D,EAAAna,EAAAk+H,GAEA,GADAp6I,UAAAvG,OAAA,IAAA2gJ,EAAAl+H,EAAAA,EAAAsrJ,IAAA9sJ,gBACAwB,EAAA,IAAA,GAAAq5E,GAAAl7F,EAAA,EAAAoE,EAAAyd,EAAAziB,OAAAY,EAAAoE,IAAApE,EACA,IAAAk7F,EAAAr5E,EAAA7hB,IAAA+/I,aAAAA,EACA,MAAA+xB,GAAA91I,EAAAk/D,IAIAgyE,GAAAs8B,SAAAwB,KAAA,WAEA,QAAAA,KACAvsM,KAAA0jB,GAAA,iBAAAkkJ,GAAAlkJ,GAAA,kBAAA8oL,GAEA,QAAAC,GAAAl6L,EAAA8S,EAAAm+J,EAAAjqF,EAAA/0F,GACA,MAAA,YAWA,QAAA4zF,KACA,GAAA7Z,GAAAE,EAAAiuH,EAAArnL,EAAAvM,EAAA6zL,EACAD,KACAnuH,EAAAmuH,EAAA,GAAAE,EAAA,GACAnuH,EAAAiuH,EAAA,GAAAE,EAAA,GACAC,GAAAtuH,EAAAE,EACAmuH,EAAAF,EACA1tL,GACAne,KAAA,OACAwR,EAAAq6L,EAAA,GAAAI,EAAA,GACA54L,EAAAw4L,EAAA,GAAAI,EAAA,GACAvuH,GAAAA,EACAE,GAAAA,KAGA,QAAAsuH,KACA1nL,EAAAvM,EAAA6zL,KACAK,EAAAtpL,GAAA61E,EAAA0zG,EAAA,MAAAvpL,GAAAlf,EAAAyoM,EAAA,MACAC,EAAAL,GACA7tL,GACAne,KAAA,aA9BA,GAAAisM,GAAA7qK,EAAAjiC,KAAAmY,EAAAs2J,GAAArnK,MAAA+Q,OAAAg1L,sBAAA1+B,GAAArnK,MAAA+Q,OAAAW,EAAAmpB,EAAAzhC,WAAAwe,EAAA5X,EAAAwsD,GAAA3xB,EAAA/6B,WAAA2lM,EAAA,EAAAF,EAAAp6L,IAAA06L,EAAA,SAAA,MAAAN,EAAA,GAAA,IAAAA,GAAAK,EAAAv+B,GAAAv0J,OAAAspK,EAAArrK,IAAAuL,GAAA61E,EAAA0zG,EAAA70G,GAAA10E,GAAAlf,EAAAyoM,EAAAF,GAAAG,EAAAj6B,EAAA96J,GAAAy0L,EAAAvnL,EAAAvM,EAAA6zL,EACAr8J,IACAw8J,EAAAx8J,EAAA9tC,MAAAy/B,EAAA/6B,WACA4lM,GAAAA,EAAAz6L,EAAAu6L,EAAA,GAAAE,EAAA54L,EAAA04L,EAAA,KAEAE,GAAA,EAAA,GAEA9tL,GACAne,KAAA,eAdA,GAAAuG,GAAAwnK,EAAA29B,EAAA,OAAA,YAAA,WAAAj8J,EAAA,KAAAs3H,EAAA6kC,EAAAv+B,EAAAO,GAAA69B,MAAA//B,EAAA,YAAA,WAAAigC,EAAAC,EAAA34B,EAAArF,GAAAhyE,MAAAmxE,EAAA,YAAA,WA8CA,OALA2+B,GAAAj8J,OAAA,SAAAj+B,GACA,MAAAnL,WAAAvG,QACA2vC,EAAAj+B,EACAk6L,GAFAj8J,GAIAm+H,GAAAwI,OAAAs1B,EAAAnlM,EAAA,OAKAqnK,GAAArrJ,QAAA,SAAAma,EAAAna,GAEA,MADAlc,WAAAvG,OAAA,IAAAyiB,EAAAsrJ,IAAAtrJ,SACAA,EAAAuvJ,GAAAvvJ,GAAAxa,IAAA,SAAA6zF,GACA,GAAAs4D,GAAAse,EAAA91I,EAAAk/D,EAEA,OADAs4D,GAAAzT,WAAA7kD,EAAA6kD,WACAyT,OAGA,IAAA0sB,IAAA,KAAA4S,GAAA5S,GAAAA,GAAAvN,GAAA9pK,KAAAod,GAAA++J,GAAA,EAAArS,GAAAk5B,GAAA7mB,GAAA9E,GAAApN,GAAAH,GAAA,EAAAuB,GAAAvB,GAAA,IAAA+B,GAAA,IAAA/B,GAyBAuV,GAAAr/K,KAAAijM,MAAAC,GAAA,EAAAC,GAAA,CACA9+B,IAAA++B,gBAAA,SAAA7pB,EAAAzuD,GACA,GAAA3zH,GAAAmB,EAAA+qM,EAAA9pB,EAAA,GAAA+pB,EAAA/pB,EAAA,GAAAgqB,EAAAhqB,EAAA,GAAAiqB,EAAA14E,EAAA,GAAA24E,EAAA34E,EAAA,GAAA44E,EAAA54E,EAAA,GAAA32C,EAAAqvH,EAAAH,EAAAhvH,EAAAovH,EAAAH,EAAAj/J,EAAA8vC,EAAAA,EAAAE,EAAAA,CACA,IAAAhwC,EAAA4lJ,GACA3xL,EAAA0H,KAAAmmC,IAAAu9J,EAAAH,GAAAlkB,GACAloL,EAAA,SAAAqP,GACA,OAAA68L,EAAA78L,EAAA2tE,EAAAmvH,EAAA98L,EAAA6tE,EAAAkvH,EAAAvjM,KAAAoqK,IAAAiV,GAAA74K,EAAAlO,SAEA,CACA,GAAA8rC,GAAApkC,KAAA64J,KAAAx0H,GAAAi9I,GAAAoiB,EAAAA,EAAAH,EAAAA,EAAAJ,GAAA9+J,IAAA,EAAAk/J,EAAAL,GAAA9+J,GAAAu9I,GAAA+hB,EAAAA,EAAAH,EAAAA,EAAAJ,GAAA9+J,IAAA,EAAAq/J,EAAAR,GAAA9+J,GAAAq6B,EAAAz+D,KAAAmmC,IAAAnmC,KAAA64J,KAAAyoB,EAAAA,EAAA,GAAAA,GAAA5iH,EAAA1+D,KAAAmmC,IAAAnmC,KAAA64J,KAAA8oB,EAAAA,EAAA,GAAAA,EACArpL,IAAAomE,EAAAD,GAAA4gH,GACAloL,EAAA,SAAAqP,GACA,GAAArI,GAAAqI,EAAAlO,EAAAqrM,EAAAt5B,GAAA5rG,GAAAh4D,EAAA88L,GAAAL,GAAA9+J,IAAAu/J,EAAAr5B,GAAA+U,GAAAlhL,EAAAsgE,GAAA0rG,GAAA1rG,GACA,QAAA4kI,EAAA58L,EAAA0tE,EAAAmvH,EAAA78L,EAAA4tE,EAAAkvH,EAAAI,EAAAt5B,GAAAgV,GAAAlhL,EAAAsgE,KAIA,MADAtnE,GAAAgM,SAAA,IAAA7K,EACAnB,GAEAktK,GAAAs8B,SAAA3kL,KAAA,WAeA,QAAAA,GAAAxiB,GACAA,EAAA8f,GAAAkkJ,EAAAomC,GAAAtqL,GAAAuqL,GAAA,QAAAC,GAAAxqL,GAAA,gBAAAyqL,GAAAzqL,GAAA8oL,EAAA4B,GAoGA,QAAAh2L,GAAAnY,GACA,QAAAA,EAAA,GAAAmiB,EAAA/P,GAAA+P,EAAAle,GAAAjE,EAAA,GAAAmiB,EAAAlO,GAAAkO,EAAAle,GAEA,QAAA6wJ,GAAAvvJ,GACA,OAAAA,EAAA,GAAA4c,EAAAle,EAAAke,EAAA/P,EAAA7M,EAAA,GAAA4c,EAAAle,EAAAke,EAAAlO,GAEA,QAAAm6L,GAAA9lM,GACA6Z,EAAAle,EAAAkG,KAAAC,IAAAikM,EAAA,GAAAlkM,KAAAkvD,IAAAg1I,EAAA,GAAA/lM,IAEA,QAAAgmM,GAAAtuM,EAAAuF,GACAA,EAAAuvJ,EAAAvvJ,GACA4c,EAAA/P,GAAApS,EAAA,GAAAuF,EAAA,GACA4c,EAAAlO,GAAAjU,EAAA,GAAAuF,EAAA,GAEA,QAAAgpM,GAAAvsK,EAAAhiC,EAAAuF,EAAAtB,GACA+9B,EAAAwsK,WACAp8L,EAAA+P,EAAA/P,EACA6B,EAAAkO,EAAAlO,EACAhQ,EAAAke,EAAAle,GAEAmqM,EAAAjkM,KAAAs1H,IAAA,EAAAx7H,IACAqqM,EAAAG,EAAAzuM,EAAAuF,GACAy8B,EAAAwsI,GAAAv0J,OAAA+nB,GACA10B,EAAA,IAAA00B,EAAAA,EAAApJ,aAAAtrB,SAAAA,IACA00B,EAAA5gC,KAAA+kB,EAAAhf,OAEA,QAAA+4L,KACA5pE,GAAAA,EAAA+oE,OAAAnd,EAAAl6H,QAAAr/C,IAAA,SAAAyJ,GACA,OAAAA,EAAA+P,EAAA/P,GAAA+P,EAAAle,IACA0E,IAAAu5K,EAAAtpG,SACA29C,GAAAA,EAAA8oE,OAAArd,EAAAh6H,QAAAr/C,IAAA,SAAAsL,GACA,OAAAA,EAAAkO,EAAAlO,GAAAkO,EAAAle,IACA0E,IAAAq5K,EAAAppG,SAEA,QAAA81H,GAAA3vL,GACA4vL,KAAA5vL,GACAne,KAAA,cAGA,QAAAguM,GAAA7vL,GACAmhL,IACAnhL,GACAne,KAAA,OACAk3K,MAAA31J,EAAAle,EACAwpL,WAAAtrK,EAAA/P,EAAA+P,EAAAlO,KAGA,QAAA46L,GAAA9vL,KACA4vL,IAAA5vL,GACAne,KAAA,YACA6tM,EAAA,MAEA,QAAAV,KAIA,QAAA51G,KACAy0G,EAAA,EACA0B,EAAA9/B,GAAA69B,MAAArqK,GAAA8sK,GACAF,EAAA7vL,GAEA,QAAA+tL,KACAvpB,EAAA9/J,GAAA4mG,EAAA,MAAA5mG,GAAA46F,EAAA,MACA4uF,EAAAL,GACAiC,EAAA9vL,GAXA,GAAAijB,GAAAjiC,KAAAgf,EAAA5X,EAAAwsD,GAAA3xB,EAAA/6B,WAAA2lM,EAAA,EAAArpB,EAAA/U,GAAAv0J,OAAAqyJ,EAAAtqI,IAAAve,GAAA4mG,EAAAlyB,GAAA10E,GAAA46F,EAAAyuF,GAAAgC,EAAA32L,EAAAq2J,GAAA69B,MAAArqK,IAAAirK,EAAAj6B,EAAAhxI,EACA+sK,IAAA3tM,KAAA4gC,GACA0sK,EAAA3vL,GAYA,QAAAovL,KAKA,QAAAa,KACA,GAAA7rL,GAAAqrJ,GAAArrJ,QAAA6e,EAKA,OAJAitK,GAAA9sL,EAAAle,EACAkf,EAAAs1H,QAAA,SAAA9nI,GACAA,EAAA0wI,aAAA6tD,KAAAA,EAAAv+L,EAAA0wI,YAAAlpI,EAAAxH,MAEAwS,EAEA,QAAAgsL,KACA,GAAAj3L,GAAAs2J,GAAArnK,MAAA+Q,MACAs2J,IAAAv0J,OAAA/B,GAAAuL,GAAA2rL,EAAAj3G,GAAA10E,GAAA4rL,EAAAvC,GACArtK,EAAAn5B,KAAA4R,EAEA,KAAA,GADA+oE,GAAAutF,GAAArnK,MAAAwa,eACArgB,EAAA,EAAAoE,EAAAu7E,EAAAvgF,OAAAY,EAAAoE,IAAApE,EACA4tM,EAAAjuH,EAAA3/E,GAAA+/I,YAAA,IAEA,IAAAl+H,GAAA6rL,IAAAzjM,EAAAyG,KAAAzG,KACA,IAAA,IAAA4X,EAAAziB,OAAA,CACA,GAAA6K,EAAA+jM,EAAA,IAAA,CACA,GAAAtvM,GAAAmjB,EAAA,EACAorL,GAAAvsK,EAAAhiC,EAAAkvM,EAAAlvM,EAAAqhJ,YAAAl3I,KAAAy+B,MAAAz+B,KAAAmmC,IAAAnuB,EAAAle,GAAAkG,KAAA2yL,KAAA,GACAvuB,IAEA+gC,EAAA/jM,MACA,IAAA4X,EAAAziB,OAAA,EAAA,CACA,GAAAV,GAAAmjB,EAAA,GAAA9a,EAAA8a,EAAA,GAAAm7D,EAAAt+E,EAAA,GAAAqI,EAAA,GAAAm2E,EAAAx+E,EAAA,GAAAqI,EAAA,EACAknM,GAAAjxH,EAAAA,EAAAE,EAAAA,GAGA,QAAA2Z,KACA,GAAAurF,GAAAxe,EAAAjwC,EAAAwvC,EAAAthJ,EAAAqrJ,GAAArrJ,QAAA6e,EACA+sK,IAAA3tM,KAAA4gC,EACA,KAAA,GAAA1gC,GAAA,EAAAoE,EAAAyd,EAAAziB,OAAAY,EAAAoE,IAAApE,EAAAmjK,EAAA,KAEA,GADAxvC,EAAA9xG,EAAA7hB,GACAmjK,EAAAyqC,EAAAj6E,EAAAosB,YAAA,CACA,GAAA6jB,EAAA,KACAwe,GAAAzuD,EAAAiwC,EAAAT,EAGA,GAAAA,EAAA,CACA,GAAA+qC,IAAAA,EAAAv6E,EAAA,GAAAyuD,EAAA,IAAA8rB,GAAAA,EAAAv6E,EAAA,GAAAyuD,EAAA,IAAA8rB,EAAAC,EAAAF,GAAAplM,KAAA64J,KAAAwsC,EAAAD,EACA7rB,KAAAA,EAAA,GAAAzuD,EAAA,IAAA,GAAAyuD,EAAA,GAAAzuD,EAAA,IAAA,GACAiwC,IAAAA,EAAA,GAAAT,EAAA,IAAA,GAAAS,EAAA,GAAAT,EAAA,IAAA,GACA2pC,EAAAqB,EAAAR,GAEAK,EAAA,KACAhB,EAAA5qB,EAAAxe,GACA0pC,EAAA7vL,GAEA,QAAA+tL,KACA,GAAAt+B,GAAArnK,MAAAgc,QAAAziB,OAAA,CAEA,IAAA,GADAugF,GAAAutF,GAAArnK,MAAAwa,eACArgB,EAAA,EAAAoE,EAAAu7E,EAAAvgF,OAAAY,EAAAoE,IAAApE,QACA4tM,GAAAjuH,EAAA3/E,GAAA+/I,WAEA,KAAA,GAAAA,KAAA6tD,GACA,WAAAF,KAGAxgC,GAAAngF,UAAA5uD,GAAAhc,GAAAisL,EAAA,MACAnsB,EAAA9/J,GAAAkkJ,EAAAomC,GAAAtqL,GAAA8oL,EAAA4B,GACAlB,IACA4B,EAAA9vL,GAlEA,GAAAkwL,GAAAjtK,EAAAjiC,KAAAgf,EAAA5X,EAAAwsD,GAAA3xB,EAAA/6B,WAAAioM,KAAAK,EAAA,EAAAG,EAAA,SAAAlhC,GAAArnK,MAAAwa,eAAA,GAAA0/H,WAAA+tD,EAAA,YAAAM,EAAAL,EAAA,WAAAK,EAAAjwK,KAAA8jJ,EAAA/U,GAAAv0J,OAAA+nB,GAAAirK,EAAAj6B,EAAAhxI,EACAmtK,KACAT,EAAA3vL,GACAwkK,EAAA9/J,GAAAkkJ,EAAA,MAAAlkJ,GAAA8oL,EAAA4C,GAkEA,QAAAlB,KACA,GAAAlvL,GAAA5X,EAAAwsD,GAAA5zD,KAAAkH,UACA0oM,GAAA9mL,aAAA8mL,IAAAZ,GAAA3tM,KAAArB,MACA6vM,EAAAz3L,EAAAs2L,EAAAzhB,GAAAxe,GAAA69B,MAAAtsM,OAAA2uM,EAAA3vL,IACA4wL,EAAA1kM,WAAA,WACA0kM,EAAA,KACAd,EAAA9vL,IACA,IACAwvJ,IACA6/B,EAAAjkM,KAAAs1H,IAAA,EAAA,KAAAowE,MAAA1tL,EAAAle,GACAqqM,EAAAG,EAAAmB,GACAhB,EAAA7vL,GAEA,QAAAmvL,KACA,GAAAluM,GAAAwuK,GAAA69B,MAAAtsM,MAAAkE,EAAAkG,KAAAmmC,IAAAnuB,EAAAle,GAAAkG,KAAA2yL,GACAyR,GAAAxuM,KAAAC,EAAAmY,EAAAnY,GAAAwuK,GAAArnK,MAAA+a,SAAA/X,KAAA4vE,KAAA91E,GAAA,EAAAkG,KAAAy+B,MAAA3kC,GAAA,GA3QA,GAIA2rM,GAAAnB,EAAAzhB,EAAA2iB,EAAAL,EAAAptB,EAAA5rD,EAAA0rD,EAAAzrD,EAJAp0G,GACA/P,EAAA,EACA6B,EAAA,EACAhQ,EAAA,GACAg1C,GAAA,IAAA,KAAAo1J,EAAAyB,GAAAxiM,EAAA,IAAAqhM,EAAA,EAAAhnC,EAAA,iBAAAt9C,EAAA,iBAAAhM,EAAA,eAAAkuF,EAAA,kBAAAplM,EAAAwnK,EAAAxoJ,EAAA,YAAA,OAAA,UAyQA,OAxQA6nL,MACAA,GAAA,WAAAxF,KAAAqH,GAAA,WACA,OAAArhC,GAAArnK,MAAA4oM,QAAAvhC,GAAArnK,MAAA6oM,UAAA,IAAA,IACA,SAAA,gBAAAxH,KAAAqH,GAAA,WACA,MAAArhC,IAAArnK,MAAA03E;EACA,eAAAgxH,GAAA,WACA,OAAArhC,GAAArnK,MAAA0a,QACA,wBAKAsE,EAAAhf,MAAA,SAAAxD,GACAA,EAAA/B,KAAA,WACA,GAAAmd,GAAA5X,EAAAwsD,GAAA5zD,KAAAkH,WAAAgpM,EAAA9tL,CACA+tL,IACA1hC,GAAAv0J,OAAAla,MAAA64B,aAAAh3B,KAAA,aAAA,WACAugB,EAAApiB,KAAAyuM,YACAp8L,EAAA,EACA6B,EAAA,EACAhQ,EAAA,GAEAyqM,EAAA3vL,KACAooL,MAAA,YAAA,WACA,GAAA7oH,GAAArlC,EAAA,GAAAulC,EAAAvlC,EAAA,GAAAypI,EAAA+rB,EAAAA,EAAA,GAAAnwH,EAAA,EAAAqkG,EAAA8rB,EAAAA,EAAA,GAAAjwH,EAAA,EAAAl9E,EAAAktK,GAAA++B,kBAAA7qB,EAAAvgK,EAAA/P,GAAA+P,EAAAle,GAAA0+K,EAAAxgK,EAAAlO,GAAAkO,EAAAle,EAAAq6E,EAAAn8D,EAAAle,KAAAy+K,EAAAutB,EAAA79L,GAAA69L,EAAAhsM,GAAA0+K,EAAAstB,EAAAh8L,GAAAg8L,EAAAhsM,EAAAq6E,EAAA2xH,EAAAhsM,GACA,OAAA,UAAA0M,GACA,GAAApL,GAAAjE,EAAAqP,GAAA1M,EAAAq6E,EAAA/4E,EAAA,EACAxF,MAAAyuM,UAAArsL,GACA/P,EAAAswK,EAAAn9K,EAAA,GAAAtB,EACAgQ,EAAA0uK,EAAAp9K,EAAA,GAAAtB,EACAA,EAAAA,GAEA2qM,EAAA7vL,MAEAnd,KAAA,iBAAA,WACAitM,EAAA9vL,KACAnd,KAAA,WAAA,WACAitM,EAAA9vL,MAGAhf,KAAAyuM,UAAArsL,EACAusL,EAAA3vL,GACA6vL,EAAA7vL,GACA8vL,EAAA9vL,OAIAoH,EAAAsnK,UAAA,SAAAtqL,GACA,MAAA8D,WAAAvG,QACAyhB,GACA/P,GAAAjP,EAAA,GACA8Q,GAAA9Q,EAAA,GACAc,EAAAke,EAAAle,GAEAi8L,IACA/5K,IAPAhE,EAAA/P,EAAA+P,EAAAlO,IASAkS,EAAA2xJ,MAAA,SAAA30K,GACA,MAAA8D,WAAAvG,QACAyhB,GACA/P,EAAA+P,EAAA/P,EACA6B,EAAAkO,EAAAlO,EACAhQ,EAAA,MAEAmqM,GAAAjrM,GACA+8L,IACA/5K,GARAhE,EAAAle,GAUAkiB,EAAAkoL,YAAA,SAAAlrM,GACA,MAAA8D,WAAAvG,QACA2tM,EAAA,MAAAlrM,EAAA2sM,KAAA3sM,EAAA,IAAAA,EAAA,IACAgjB,GAFAkoL,GAIAloL,EAAA6mK,OAAA,SAAA7pL,GACA,MAAA8D,WAAAvG,QACAssL,EAAA7pL,KAAAA,EAAA,IAAAA,EAAA,IACAgjB,GAFA6mK,GAIA7mK,EAAA8yB,KAAA,SAAA91C,GACA,MAAA8D,WAAAvG,QACAu4C,EAAA91C,KAAAA,EAAA,IAAAA,EAAA,IACAgjB,GAFA8yB,GAIA9yB,EAAA7Y,SAAA,SAAAnK,GACA,MAAA8D,WAAAvG,QACA4M,GAAAnK,EACAgjB,GAFA7Y,GAIA6Y,EAAA/T,EAAA,SAAA8B,GACA,MAAAjN,WAAAvG,QACA41H,EAAApiH,EACAguK,EAAAhuK,EAAA24D,OACA1qD,GACA/P,EAAA,EACA6B,EAAA,EACAhQ,EAAA,GAEAkiB,GARAmwG,GAUAnwG,EAAAlS,EAAA,SAAAC,GACA,MAAAjN,WAAAvG,QACA61H,EAAAriH,EACA8tK,EAAA9tK,EAAA24D,OACA1qD,GACA/P,EAAA,EACA6B,EAAA,EACAhQ,EAAA,GAEAkiB,GARAowG,GAoKAi4C,GAAAwI,OAAA7wJ,EAAAhf,EAAA,MAEA,IAAA0oM,IAAA7B,GAAA8B,IAAA,EAAA/oK,EAAAA,EACAynI,IAAArgD,MAAAwmD,GAEAA,GAAAhqK,UAAA6F,SAAA,WACA,MAAAzQ,MAAAu1K,MAAA,IAEA9G,GAAA6H,IAAAzB,EAIA,IAAAu7B,IAAAv7B,GAAAjqK,UAAA,GAAAgqK,GACAw7B,IAAAC,SAAA,SAAAnsM,GAEA,MADAA,GAAAkG,KAAAs1H,IAAA,GAAAx4H,UAAAvG,OAAAuD,EAAA,GACA,GAAA2wK,IAAA70K,KAAA6D,EAAA7D,KAAAuI,EAAAvI,KAAAwF,EAAAtB,IAEAksM,GAAAE,OAAA,SAAApsM,GAEA,MADAA,GAAAkG,KAAAs1H,IAAA,GAAAx4H,UAAAvG,OAAAuD,EAAA,GACA,GAAA2wK,IAAA70K,KAAA6D,EAAA7D,KAAAuI,EAAArE,EAAAlE,KAAAwF,IAEA4qM,GAAA76B,IAAA,WACA,MAAAP,IAAAh1K,KAAA6D,EAAA7D,KAAAuI,EAAAvI,KAAAwF,IAqBAipK,GAAAgqB,IAAAtjB,EAIA,IAAAo7B,IAAAp7B,GAAAvqK,UAAA,GAAAgqK,GACA27B,IAAAF,SAAA,SAAAnsM,GACA,MAAA,IAAAixK,IAAAn1K,KAAA6D,EAAA7D,KAAAG,EAAAiK,KAAAkvD,IAAA,IAAAt5D,KAAAwF,EAAAgrM,IAAAtpM,UAAAvG,OAAAuD,EAAA,MAEAqsM,GAAAD,OAAA,SAAApsM,GACA,MAAA,IAAAixK,IAAAn1K,KAAA6D,EAAA7D,KAAAG,EAAAiK,KAAAC,IAAA,EAAArK,KAAAwF,EAAAgrM,IAAAtpM,UAAAvG,OAAAuD,EAAA,MAEAqsM,GAAAh7B,IAAA,WACA,MAAAC,IAAAx1K,KAAA6D,EAAA7D,KAAAG,EAAAH,KAAAwF,GAAA+vK,OAOA9G,GAAAyqB,IAAA9jB,EAIA,IAAAo7B,IAAA,GACA56B,GAAA,OAAAC,GAAA,EAAAC,GAAA,QACA26B,GAAAr7B,GAAAxqK,UAAA,GAAAgqK,GACA67B,IAAAJ,SAAA,SAAAnsM,GACA,MAAA,IAAAkxK,IAAAhrK,KAAAkvD,IAAA,IAAAt5D,KAAAwF,EAAAgrM,IAAAtpM,UAAAvG,OAAAuD,EAAA,IAAAlE,KAAAP,EAAAO,KAAAN,IAEA+wM,GAAAH,OAAA,SAAApsM,GACA,MAAA,IAAAkxK,IAAAhrK,KAAAC,IAAA,EAAArK,KAAAwF,EAAAgrM,IAAAtpM,UAAAvG,OAAAuD,EAAA,IAAAlE,KAAAP,EAAAO,KAAAN,IAEA+wM,GAAAl7B,IAAA,WACA,MAAAG,IAAA11K,KAAAwF,EAAAxF,KAAAP,EAAAO,KAAAN,IAqBA+uK,GAAA8G,IAAAL,EAUA,IAAAw7B,IAAAx7B,GAAAtqK,UAAA,GAAAgqK,GACA87B,IAAAL,SAAA,SAAAnsM,GACAA,EAAAkG,KAAAs1H,IAAA,GAAAx4H,UAAAvG,OAAAuD,EAAA,EACA,IAAAtD,GAAAZ,KAAAY,EAAAgD,EAAA5D,KAAA4D,EAAAlE,EAAAM,KAAAN,EAAA6B,EAAA,EACA,OAAAX,IAAAgD,GAAAlE,GACAkB,GAAAA,EAAAW,IAAAX,EAAAW,GACAqC,GAAAA,EAAArC,IAAAqC,EAAArC,GACA7B,GAAAA,EAAA6B,IAAA7B,EAAA6B,GACA,GAAA2zK,IAAA9qK,KAAAkvD,IAAA,IAAA14D,EAAAsD,GAAAkG,KAAAkvD,IAAA,IAAA11D,EAAAM,GAAAkG,KAAAkvD,IAAA,IAAA55D,EAAAwE,KAJA,GAAAgxK,IAAA3zK,EAAAA,EAAAA,IAMAmvM,GAAAJ,OAAA,SAAApsM,GAEA,MADAA,GAAAkG,KAAAs1H,IAAA,GAAAx4H,UAAAvG,OAAAuD,EAAA,GACA,GAAAgxK,IAAAhxK,EAAAlE,KAAAY,EAAAsD,EAAAlE,KAAA4D,EAAAM,EAAAlE,KAAAN,IAEAgxM,GAAAp6B,IAAA,WACA,MAAAvB,IAAA/0K,KAAAY,EAAAZ,KAAA4D,EAAA5D,KAAAN,IAEAgxM,GAAAjgM,SAAA,WACA,MAAA,IAAA4lK,GAAAr2K,KAAAY,GAAAy1K,GAAAr2K,KAAA4D,GAAAyyK,GAAAr2K,KAAAN,GAmEA,IAAA82K,IAAA/H,GAAA7lK,KACA+nM,UAAA,SACAC,aAAA,SACAC,KAAA,MACAC,WAAA,QACAC,MAAA,SACAC,MAAA,SACAC,OAAA,SACAC,MAAA,EACAC,eAAA,SACAC,KAAA,IACAC,WAAA,QACAC,MAAA,SACAC,UAAA,SACAC,UAAA,QACAC,WAAA,QACAC,UAAA,SACAC,MAAA,SACAC,eAAA,QACAC,SAAA,SACAC,QAAA,SACAC,KAAA,MACAC,SAAA,IACAC,SAAA,MACAC,cAAA,SACAC,SAAA,SACAC,UAAA,MACAC,SAAA,SACAC,UAAA,SACAC,YAAA,QACAC,eAAA,QACAC,WAAA,SACAC,WAAA,SACAC,QAAA,QACAC,WAAA,SACAC,aAAA,QACAC,cAAA,QACAC,cAAA,QACAC,cAAA,QACAC,cAAA,MACAC,WAAA,QACAC,SAAA,SACAC,YAAA,MACAC,QAAA,QACAC,QAAA,QACAC,WAAA,QACAC,UAAA,SACAC,YAAA,SACAC,YAAA,QACAC,QAAA,SACAC,UAAA,SACAC,WAAA,SACAC,KAAA,SACAC,UAAA,SACAC,KAAA,QACAC,MAAA,MACAC,YAAA,SACAC,KAAA,QACAC,SAAA,SACAC,QAAA,SACAC,UAAA,SACAC,OAAA,QACAC,MAAA,SACAC,MAAA,SACAC,SAAA,SACAC,cAAA,SACAC,UAAA,QACAC,aAAA,SACAC,UAAA,SACAC,WAAA,SACAC,UAAA,SACAC,qBAAA,SACAC,UAAA,SACAC,WAAA,QACAC,UAAA,SACAC,UAAA,SACAC,YAAA,SACAC,cAAA,QACAC,aAAA,QACAC,eAAA,QACAC,eAAA,QACAC,eAAA,SACAC,YAAA,SACAC,KAAA,MACAC,UAAA,QACAC,MAAA,SACAC,QAAA,SACAC,OAAA,QACAC,iBAAA,QACAC,WAAA,IACAC,aAAA,SACAC,aAAA,QACAC,eAAA,QACAC,gBAAA,QACAC,kBAAA,MACAC,gBAAA,QACAC,gBAAA,SACAC,aAAA,QACAC,UAAA,SACAC,UAAA,SACAC,SAAA,SACAC,YAAA,SACAC,KAAA,IACAC,QAAA,SACAC,MAAA,QACAC,UAAA,QACAC,OAAA,SACAC,UAAA,SACAC,OAAA,SACAC,cAAA,SACAC,UAAA,SACAC,cAAA,SACAC,cAAA,SACAC,WAAA,SACAC,UAAA,SACAC,KAAA,SACAC,KAAA,SACAC,KAAA,SACAC,WAAA,SACAC,OAAA,QACAC,cAAA,QACAC,IAAA,SACAC,UAAA,SACAC,UAAA,QACAC,YAAA,QACAC,OAAA,SACAC,WAAA,SACAC,SAAA,QACAC,SAAA,SACAC,OAAA,SACAC,OAAA,SACAC,QAAA,QACAC,UAAA,QACAC,UAAA,QACAC,UAAA,QACAC,KAAA,SACAC,YAAA,MACAC,UAAA,QACArpB,IAAA,SACAspB,KAAA,MACAC,QAAA,SACAC,OAAA,SACAC,UAAA,QACAC,OAAA,SACAC,MAAA,SACAC,MAAA,SACAC,WAAA,SACAC,OAAA,SACAC,YAAA,UAEArjC,IAAA99B,QAAA,SAAAn2H,EAAAjP,GACAkjK,GAAA/yK,IAAA8e,EAAA4zJ,GAAA7iK,MAOAm7J,GAAArzB,QAAAs7B,GACAjI,GAAAr/I,IAAAunJ,GAAA/I,GA4FAa,GAAAqrC,IAAA,SAAAv4D,EAAA5xI,GAEA,QAAAmqM,GAAAztL,EAAAyzF,EAAA05B,GACAtyI,UAAAvG,OAAA,IAAA64I,EAAA15B,EAAAA,EAAA,KACA,IAAA1wF,GAAAwnJ,GAAAvqJ,EAAA1c,EAAA,MAAAmwG,EAAAzvF,EAAA0pL,EAAAj6F,GAAA05B,EAIA,OAHApqH,GAAA0wF,IAAA,SAAA18G,GACA,MAAA8D,WAAAvG,OAAAyuB,EAAAiB,SAAA,OAAAyvF,EAAA18G,GAAAitB,EAAA0pL,EAAA32M,IAAA08G,GAEA1wF,EAEA,QAAAiB,GAAA0uG,GACA,MAAA+6E,GAAA32M,MAAA47H,EAAA5uG,cAEA,QAAA4pL,GAAAp2M,GACA,MAAA,UAAAo7H,GACA,MAAA+6E,GAAA32M,MAAA47H,EAAA5uG,aAAAxsB,IA+EA,QAAAq2M,GAAAl6F,GACA,MAAAA,GAAAl3G,IAAAqxM,GAAArrM,KAAA2yI,GAEA,QAAA04D,GAAA55M,GACA,MAAA65M,GAAAz4M,KAAApB,GAAA,IAAAA,EAAAgD,QAAA,MAAA,MAAA,IAAAhD,EAjGA,GAAA65M,GAAA,GAAAxlM,QAAA,KAAA6sI,EAAA,OAAA44D,EAAA54D,EAAA9rI,WAAA,EAmGA,OAlFAqkM,GAAA32M,MAAA,SAAA9C,EAAAsD,GACA,GAAAiC,EACA,OAAAk0M,GAAAM,UAAA/5M,EAAA,SAAAy/G,EAAAv+G,GACA,GAAAqE,EAAA,MAAAA,GAAAk6G,EAAAv+G,EAAA,EACA,IAAA9B,GAAA,GAAA67J,UAAA,IAAA,WAAAx7C,EAAAl3G,IAAA,SAAAiU,EAAAtb,GACA,MAAA2B,MAAAiwB,UAAAtW,GAAA,OAAAtb,EAAA,MACAqN,KAAA,KAAA,IACAhJ,GAAAjC,EAAA,SAAAm8G,EAAAv+G,GACA,MAAAoC,GAAAlE,EAAAqgH,GAAAv+G,IACA9B,KAGAq6M,EAAAM,UAAA,SAAA/5M,EAAAsD,GAEA,QAAAq4C,KACA,GAAApoC,GAAA5R,EAAA,MAAAq4M,EACA,IAAA9tI,EAAA,MAAAA,IAAA,EAAA+tI,CACA,IAAAt2M,GAAA4P,CACA,IAAA,KAAAvT,EAAAoV,WAAAzR,GAAA,CAEA,IADA,GAAAzC,GAAAyC,EACAzC,IAAAS,GACA,GAAA,KAAA3B,EAAAoV,WAAAlU,GAAA,CACA,GAAA,KAAAlB,EAAAoV,WAAAlU,EAAA,GAAA,QACAA,EAGAqS,EAAArS,EAAA,CACA,IAAApB,GAAAE,EAAAoV,WAAAlU,EAAA,EAOA,OANA,MAAApB,GACAosE,GAAA,EACA,KAAAlsE,EAAAoV,WAAAlU,EAAA,MAAAqS,GACA,KAAAzT,IACAosE,GAAA,GAEAlsE,EAAAoC,MAAAuB,EAAA,EAAAzC,GAAA8B,QAAA,MAAA,KAEA,KAAAuQ,EAAA5R,GAAA,CACA,GAAA7B,GAAAE,EAAAoV,WAAA7B,KAAA1P,EAAA,CACA,IAAA,KAAA/D,EAAAosE,GAAA,MAAA,IAAA,KAAApsE,EACAosE,GAAA,EACA,KAAAlsE,EAAAoV,WAAA7B,OAAAA,IAAA1P,OACA,IAAA/D,IAAAg6M,EAAA,QACA,OAAA95M,GAAAoC,MAAAuB,EAAA4P,EAAA1P,GAEA,MAAA7D,GAAAoC,MAAAuB,GAEA,IAjCA,GAAA4M,GAAA27D,EAAA+tI,KAAAD,KAAApyE,KAAAjmI,EAAA3B,EAAAM,OAAAiT,EAAA,EAAAjO,EAAA,GAiCAiL,EAAAorC,OAAAq+J,GAAA,CAEA,IADA,GAAA56M,MACAmR,IAAA0pM,GAAA1pM,IAAAypM,GACA56M,EAAA8G,KAAAqK,GACAA,EAAAorC,GAEAr4C,IAAA,OAAAlE,EAAAkE,EAAAlE,EAAAkG,OACAsiI,EAAA1hI,KAAA9G,GAEA,MAAAwoI,IAEA6xE,EAAA/tK,OAAA,SAAAk8F,GACA,GAAAl7H,MAAAC,QAAAi7H,EAAA,IAAA,MAAA6xE,GAAAS,WAAAtyE,EACA,IAAAuyE,GAAA,GAAA7sC,GAAAtjI,IAQA,OAPA49F,GAAAyQ,QAAA,SAAA54B,GACA,IAAA,GAAA91E,KAAA81E,GACA06F,EAAAxiM,IAAAgyB,IACAK,EAAA9jC,KAAAi0M,EAAAnzM,IAAA2iC,OAIAK,EAAAzhC,IAAAqxM,GAAArrM,KAAA2yI,IAAAx1I,OAAAk8H,EAAAr/H,IAAA,SAAAk3G,GACA,MAAAz1E,GAAAzhC,IAAA,SAAAohC,GACA,MAAAiwK,GAAAn6F,EAAA91E,MACAp7B,KAAA2yI,MACA3yI,KAAA,OAEAkrM,EAAAS,WAAA,SAAAtyE,GACA,MAAAA,GAAAr/H,IAAAoxM,GAAAprM,KAAA,OAQAkrM,GAEArrC,GAAAgsC,IAAAhsC,GAAAqrC,IAAA,IAAA,YACArrC,GAAAisC,IAAAjsC,GAAAqrC,IAAA,KAAA,4BACA,IAAAziC,IAAAD,GAAAE,GAAAC,GAAAC,GAAAx3K,KAAA8tK,EAAA9tK,KAAA,2BAAA,SAAAw5I,GACAtuI,WAAAsuI,EAAA,IAEAi1B,IAAAhgK,MAAA,WACA0oK,GAAA30K,MAAAxC,KAAAkH,YAiCAunK,GAAAhgK,MAAAy0C,MAAA,WACAw0H,KACAC,MA0BAlJ,GAAA/vI,MAAA,SAAArsB,EAAA1M,GACA,MAAAA,GAAAyE,KAAAs0B,MAAArsB,GAAA1M,EAAAyE,KAAAs1H,IAAA,GAAA/5H,KAAAA,EAAAyE,KAAAs0B,MAAArsB,GAEA,IAAAsoM,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA/xM,IAAAkvK,GACArJ,IAAA8K,aAAA,SAAAjmK,EAAA0lK,GACA,GAAAz3K,GAAA,CAOA,QANA+R,GAAAA,KACAA,EAAA,IAAAA,IAAA,GACA0lK,IAAA1lK,EAAAm7J,GAAA/vI,MAAAprB,EAAAskK,GAAAtkK,EAAA0lK,KACAz3K,EAAA,EAAA6I,KAAAy+B,MAAA,MAAAz+B,KAAAmmC,IAAAj9B,GAAAlJ,KAAAytK,MACAt2K,EAAA6I,KAAAC,KAAA,GAAAD,KAAAkvD,IAAA,GAAA,EAAAlvD,KAAAy+B,OAAAtnC,EAAA,GAAA,MAEAo5M,GAAA,EAAAp5M,EAAA,GAwGA,IAAAq3K,IAAA,yEACAM,GAAAzK,GAAA7lK,KACAlJ,EAAA,SAAA2S,GACA,MAAAA,GAAA5B,SAAA,IAEAtQ,EAAA,SAAAkS,GACA,MAAAkD,QAAAC,aAAAnD,IAEAzM,EAAA,SAAAyM,GACA,MAAAA,GAAA5B,SAAA,IAEA4B,EAAA,SAAAA,GACA,MAAAA,GAAA5B,SAAA,KAEAjN,EAAA,SAAA6O,GACA,MAAAA,GAAA5B,SAAA,IAAA1G,eAEAnG,EAAA,SAAAyO,EAAApS,GACA,MAAAoS,GAAAuoM,YAAA36M,IAEAkC,EAAA,SAAAkQ,EAAApS,GACA,MAAAoS,GAAA+jB,cAAAn2B,IAEA0D,EAAA,SAAA0O,EAAApS,GACA,MAAAoS,GAAAgkB,QAAAp2B,IAEAW,EAAA,SAAAyR,EAAApS,GACA,OAAAoS,EAAAo8J,GAAA/vI,MAAArsB,EAAAulK,GAAAvlK,EAAApS,KAAAo2B,QAAAjsB,KAAAC,IAAA,EAAAD,KAAAkvD,IAAA,GAAAs+G,GAAAvlK,GAAA,EAAA,OAAApS,SAMAi9K,GAAAzO,GAAA97H,QAAAinI,GAAA3nK,IAIAunK,IAAA5uK,WACAoyK,QAAA,WACA,MAAAh9K,MAAAoD,EAAAy3M,cAEArgC,OAAA,WACA,MAAAx6K,MAAAoD,EAAA03M,aAEAr9B,YAAA,WACA,MAAAz9K,MAAAoD,EAAA23M,kBAEA99B,SAAA,WACA,MAAAj9K,MAAAoD,EAAA43M,eAEA59B,gBAAA,WACA,MAAAp9K,MAAAoD,EAAA63M,sBAEA59B,WAAA,WACA,MAAAr9K,MAAAoD,EAAA83M,iBAEAp+B,SAAA,WACA,MAAA98K,MAAAoD,EAAA+3M,eAEA79B,WAAA,WACA,MAAAt9K,MAAAoD,EAAAg4M,iBAEA5rK,QAAA,WACA,MAAAxvC,MAAAoD,EAAAosC,WAEAovI,kBAAA,WACA,MAAA,IAEAy8B,QAAA,WACA,MAAAr7M,MAAAoD,EAAAi4M,WAEAC,QAAA,WACAC,GAAAC,WAAAh5M,MAAAxC,KAAAoD,EAAA8D,YAEAu0M,OAAA,WACAF,GAAAG,UAAAl5M,MAAAxC,KAAAoD,EAAA8D,YAEAqzK,YAAA,WACAghC,GAAAI,eAAAn5M,MAAAxC,KAAAoD,EAAA8D,YAEAuzK,SAAA,WACA8gC,GAAAK,YAAAp5M,MAAAxC,KAAAoD,EAAA8D,YAEA20M,gBAAA,WACAN,GAAAO,mBAAAt5M,MAAAxC,KAAAoD,EAAA8D,YAEA60M,WAAA,WACAR,GAAAS,cAAAx5M,MAAAxC,KAAAoD,EAAA8D,YAEA+0M,SAAA,WACAV,GAAAW,YAAA15M,MAAAxC,KAAAoD,EAAA8D,YAEAi1M,WAAA,WACAZ,GAAAa,cAAA55M,MAAAxC,KAAAoD,EAAA8D,YAEAm1M,QAAA,WACAd,GAAAc,QAAA75M,MAAAxC,KAAAoD,EAAA8D,YAGA,IAAAq0M,IAAAtpM,KAAArH,SA6DAsyK,IAAAkrB,KAAA1uB,GAAA,SAAA1uI,GAGA,MAFAA,GAAAkyI,GAAAo/B,IAAAtxK,GACAA,EAAAixK,SAAA,EAAA,GACAjxK,GACA,SAAAA,EAAA/Z,GACA+Z,EAAAuvI,YAAAvvI,EAAAyyI,cAAAxsJ,IACA,SAAA+Z,GACA,MAAAA,GAAAyyI,gBAEAP,GAAAq/B,MAAAr/B,GAAAkrB,KAAAngJ,MACAi1H,GAAAq/B,MAAAxiC,IAAAmD,GAAAkrB,KAAAruB,IAAA9xH,MACAi1H,GAAAo/B,IAAA5iC,GAAA,SAAA1uI,GACA,GAAAsxK,GAAA,GAAA1iC,IAAA,IAAA,EAEA,OADA0iC,GAAA/hC,YAAAvvI,EAAAyyI,cAAAzyI,EAAA8xI,WAAA9xI,EAAAgyI,WACAs/B,GACA,SAAAtxK,EAAA/Z,GACA+Z,EAAAswK,QAAAtwK,EAAAgyI,UAAA/rJ,IACA,SAAA+Z,GACA,MAAAA,GAAAgyI,UAAA,IAEAE,GAAAf,KAAAe,GAAAo/B,IAAAr0J,MACAi1H,GAAAf,KAAApC,IAAAmD,GAAAo/B,IAAAviC,IAAA9xH,MACAi1H,GAAAC,UAAA,SAAAnyI,GACA,GAAAo9J,GAAAlrB,GAAAkrB,KAAAp9J,EACA,OAAA5gC,MAAAy+B,OAAAmC,EAAAo9J,EAAA,KAAAp9J,EAAA4zI,oBAAAwpB,EAAAxpB,sBAAA,SAEA,SAAA,SAAA,UAAA,YAAA,WAAA,SAAA,YAAAlmC,QAAA,SAAA4jE,EAAA/6M,GACAA,EAAA,EAAAA,CACA,IAAA6J,GAAA8xK,GAAAo/B,GAAA5iC,GAAA,SAAA1uI,GAEA,OADAA,EAAAkyI,GAAAo/B,IAAAtxK,IAAAswK,QAAAtwK,EAAAgyI,WAAAhyI,EAAAwvI,SAAAj5K,GAAA,GACAypC,GACA,SAAAA,EAAA/Z,GACA+Z,EAAAswK,QAAAtwK,EAAAgyI,UAAA,EAAA5yK,KAAAy+B,MAAA5X,KACA,SAAA+Z,GACA,GAAAsxK,GAAAp/B,GAAAkrB,KAAAp9J,GAAAwvI,QACA,OAAApwK,MAAAy+B,OAAAq0I,GAAAC,UAAAnyI,IAAAsxK,EAAA/6M,GAAA,GAAA,IAAA+6M,IAAA/6M,IAEA27K,IAAAo/B,EAAA,KAAAlxM,EAAA68C,MACAi1H,GAAAo/B,EAAA,KAAAviC,IAAA3uK,EAAA2uK,IAAA9xH,MACAi1H,GAAAo/B,EAAA,UAAA,SAAAtxK,GACA,GAAAsxK,GAAAp/B,GAAAkrB,KAAAp9J,GAAAwvI,QACA,OAAApwK,MAAAy+B,OAAAq0I,GAAAC,UAAAnyI,IAAAsxK,EAAA/6M,GAAA,GAAA,MAGA27K,GAAAs/B,KAAAt/B,GAAAu/B,OACAv/B,GAAAw/B,MAAAx/B,GAAAu/B,OAAAx0J,MACAi1H,GAAAw/B,MAAA3iC,IAAAmD,GAAAu/B,OAAA1iC,IAAA9xH,MACAi1H,GAAAy/B,WAAAz/B,GAAAK,YAyNA,IAAApD,KACA/3C,IAAA,GACAh/H,EAAA,IACAmsB,EAAA,KACAmvJ,GAAA,UAAAM,GAAA,IAkGAvQ,IAAAwJ,OAAA,SAAAA,GACA,OACA2kC,aAAA5kC,GAAAC,GACA4kC,WAAA5iC,GAAAhC,IAGA,IAAA6kC,IAAAruC,GAAAwJ,QACAE,QAAA,IACAE,UAAA,IACAE,UAAA,GACAE,UAAA,IAAA,IACAoD,SAAA,iBACA7wI,KAAA,WACA2H,KAAA,WACAspI,SAAA,KAAA,MACAE,MAAA,SAAA,SAAA,UAAA,YAAA,WAAA,SAAA,YACAE,WAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OACAE,QAAA,UAAA,WAAA,QAAA,QAAA,MAAA,OAAA,OAAA,SAAA,YAAA,UAAA,WAAA,YACAE,aAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,QAEAhO,IAAA1iI,OAAA+wK,GAAAF,aACAnuC,GAAAsuC,OAEA99B,GAAAr0K,WACArC,EAAA,EACAqI,EAAA,EACAvJ,IAAA,SAAA6M,GACAgrK,GAAAhrK,EAAAlU,KAAA4Q,EAAAosM,IACA99B,GAAA89B,GAAAz0M,EAAAvI,KAAAuI,EAAAvI,MACAA,KAAAuI,EAAAvI,KAAA4Q,GAAAosM,GAAApsM,EAAA5Q,KAAAuI,EAAAy0M,GAAApsM,GAEAiJ,MAAA,WACA7Z,KAAAuI,EAAAvI,KAAA4Q,EAAA,GAEAyqM,QAAA,WACA,MAAAr7M,MAAAuI,GAGA,IAAAy0M,IAAA,GAAA/9B,GAKAxQ,IAAAsuC,IAAA3wI,OAAA,SAAA2hG,EAAAQ,GACAR,GAAAkvC,GAAAvsM,eAAAq9J,EAAAltK,MACAo8M,GAAAlvC,EAAAltK,MAAAktK,EAAAQ,GAEA8Q,GAAAtR,EAAAQ,GAQA,IAAA0uC,KACAC,QAAA,SAAAC,EAAA5uC,GACA8Q,GAAA89B,EAAA79B,SAAA/Q,IAEA6uC,kBAAA,SAAArvC,EAAAQ,GAEA,IADA,GAAA8uC,GAAAtvC,EAAAsvC,SAAA97M,GAAA,EAAAoE,EAAA03M,EAAA18M,SACAY,EAAAoE,GAAA05K,GAAAg+B,EAAA97M,GAAA+9K,SAAA/Q,KAGAgR,IACA+9B,OAAA,SAAAvvC,EAAAQ,GACAA,EAAA2W,UAEAq4B,MAAA,SAAAxvC,EAAAQ,GACAR,EAAAA,EAAA0R,YACAlR,EAAAxZ,MAAAgZ,EAAA,GAAAA,EAAA,GAAAA,EAAA,KAEAyvC,WAAA,SAAAzvC,EAAAQ,GAEA,IADA,GAAAkR,GAAA1R,EAAA0R,YAAAl+K,GAAA,EAAAoE,EAAA85K,EAAA9+K,SACAY,EAAAoE,GAAAooK,EAAA0R,EAAAl+K,GAAAgtK,EAAAxZ,MAAAgZ,EAAA,GAAAA,EAAA,GAAAA,EAAA,KAEA0vC,WAAA,SAAA1vC,EAAAQ,GACAiR,GAAAzR,EAAA0R,YAAAlR,EAAA,IAEAmvC,gBAAA,SAAA3vC,EAAAQ,GAEA,IADA,GAAAkR,GAAA1R,EAAA0R,YAAAl+K,GAAA,EAAAoE,EAAA85K,EAAA9+K,SACAY,EAAAoE,GAAA65K,GAAAC,EAAAl+K,GAAAgtK,EAAA,IAEAovC,QAAA,SAAA5vC,EAAAQ,GACAoR,GAAA5R,EAAA0R,YAAAlR,IAEAqvC,aAAA,SAAA7vC,EAAAQ,GAEA,IADA,GAAAkR,GAAA1R,EAAA0R,YAAAl+K,GAAA,EAAAoE,EAAA85K,EAAA9+K,SACAY,EAAAoE,GAAAg6K,GAAAF,EAAAl+K,GAAAgtK,IAEAsvC,mBAAA,SAAA9vC,EAAAQ,GAEA,IADA,GAAAuvC,GAAA/vC,EAAA+vC,WAAAv8M,GAAA,EAAAoE,EAAAm4M,EAAAn9M,SACAY,EAAAoE,GAAA05K,GAAAy+B,EAAAv8M,GAAAgtK,IAeAE,IAAAsuC,IAAAh4D,KAAA,SAAAgpB,GAGA,MAFAgwC,IAAA,EACAtvC,GAAAsuC,IAAA3wI,OAAA2hG,EAAA8S,IACAk9B,GAEA,IAAAA,IAAAr9B,GAAA,GAAAzB,IACA4B,IACAqE,OAAA,WACA64B,IAAA,EAAA7pC,IAEAnf,MAAAmZ,EACA74E,UAAA64E,EACA34E,QAAA24E,EACA0R,aAAA,WACAc,GAAA7mK,QACAgnK,GAAAxrF,UAAAyqF,IAEAD,WAAA,WACA,GAAA96B,GAAA,EAAA27B,EACAq9B,KAAAh5D,EAAA,EAAA,EAAAmvB,GAAAnvB,EAAAA,EACA87B,GAAAxrF,UAAAwrF,GAAAtrF,QAAAsrF,GAAA9rB,MAAAmZ,GAmDAO,IAAAsuC,IAAAiB,OAAA,WAsBA,QAAAjpD,GAAAirB,EAAAC,GACAjlG,EAAAz0E,KAAA0hD,GAAAk4H,EAAAH,EAAAwF,EAAAxF,IACAC,EAAAqF,IAAAA,EAAArF,GACAA,EAAAwF,IAAAA,EAAAxF,GAEA,QAAAwI,GAAAzI,EAAAC,GACA,GAAAhgL,GAAA6gL,IAAAd,EAAAvK,GAAAwK,EAAAxK,IACA,IAAAkO,EAAA,CACA,GAAA16G,GAAAg4G,GAAA0C,EAAA1jL,GAAAg+M,GAAAh1I,EAAA,IAAAA,EAAA,GAAA,GAAAi1I,EAAAj9B,GAAAg9B,EAAAh1I,EACAo4G,IAAA68B,GACAA,EAAA58B,GAAA48B,EACA,IAAAh+B,GAAAF,EAAAm+B,EAAA51M,EAAA23K,EAAA,EAAA,GAAA,EAAAk+B,EAAAF,EAAA,GAAAjoC,GAAA1tK,EAAA+9K,EAAAxpJ,GAAAojJ,GAAA,GACA,IAAAoG,GAAA/9K,EAAA41M,EAAAC,GAAAA,EAAA71M,EAAAy3K,GAAA,CACA,GAAAq+B,GAAAH,EAAA,GAAAjoC,EACAooC,GAAA54B,IAAAA,EAAA44B,OACA,IAAAD,GAAAA,EAAA,KAAA,IAAA,IAAA93B,GAAA/9K,EAAA41M,EAAAC,GAAAA,EAAA71M,EAAAy3K,GAAA,CACA,GAAAq+B,IAAAH,EAAA,GAAAjoC,EACAooC,GAAA/4B,IAAAA,EAAA+4B,OAEAp+B,GAAAqF,IAAAA,EAAArF,GACAA,EAAAwF,IAAAA,EAAAxF,EAEAqG,GACAtG,EAAAm+B,EACA7vB,EAAAnO,EAAAH,GAAAsO,EAAAnO,EAAAqF,KAAAA,EAAAxF,GAEAsO,EAAAtO,EAAAwF,GAAA8I,EAAAnO,EAAAqF,KAAArF,EAAAH,GAGAwF,GAAArF,GACAH,EAAAG,IAAAA,EAAAH,GACAA,EAAAwF,IAAAA,EAAAxF,IAEAA,EAAAm+B,EACA7vB,EAAAnO,EAAAH,GAAAsO,EAAAnO,EAAAqF,KAAAA,EAAAxF,GAEAsO,EAAAtO,EAAAwF,GAAA8I,EAAAnO,EAAAqF,KAAArF,EAAAH,OAKAjrB,GAAAirB,EAAAC,EAEA0D,GAAA1jL,EAAAk+M,EAAAn+B,EAEA,QAAA3qF,KACAO,EAAAm/D,MAAA0zB,EAEA,QAAAlzF,KACAttC,EAAA,GAAAk4H,EAAAl4H,EAAA,GAAAu9H,EACA5vF,EAAAm/D,MAAAA,EACA4uB,EAAA,KAEA,QAAAgI,GAAA3L,EAAAC,GACA,GAAA0D,EAAA,CACA,GAAAzD,GAAAF,EAAAm+B,CACAG,IAAAxhL,GAAAojJ,GAAA,IAAAA,GAAAA,EAAA,EAAA,KAAA,KAAAA,MACAq+B,GAAAv+B,EAAAw+B,EAAAv+B,CACAY,IAAA9rB,MAAAirB,EAAAC,GACAwI,EAAAzI,EAAAC,GAEA,QAAAwE,KACA5D,GAAAxrF,YAEA,QAAAqvF,KACAiH,EAAA4yB,EAAAC,GACA39B,GAAAtrF,UACAz4D,GAAAwhL,GAAA78B,KAAAtB,IAAAqF,EAAA,MACAv9H,EAAA,GAAAk4H,EAAAl4H,EAAA,GAAAu9H,EACA7B,EAAA,KAEA,QAAA2K,GAAAnO,EAAAqF,GACA,OAAAA,GAAArF,GAAA,EAAAqF,EAAA,IAAAA,EAEA,QAAAi5B,GAAAh/M,EAAAC,GACA,MAAAD,GAAA,GAAAC,EAAA,GAEA,QAAAg/M,GAAArsM,EAAA41C,GACA,MAAAA,GAAA,IAAAA,EAAA,GAAAA,EAAA,IAAA51C,GAAAA,GAAA41C,EAAA,GAAA51C,EAAA41C,EAAA,IAAAA,EAAA,GAAA51C,EAnGA,GAAA8tK,GAAAmF,EAAAE,EAAAC,EAAA04B,EAAAI,EAAAC,EAAA76B,EAAA26B,EAAAtjI,EAAA/yB,EACA2tC,GACAm/D,MAAAA,EACA1/D,UAAAA,EACAE,QAAAA,EACAqqF,aAAA,WACAhqF,EAAAm/D,MAAA42B,EACA/1F,EAAAP,UAAAovF,EACA7uF,EAAAL,QAAAmvF,EACA45B,EAAA,EACAz9B,GAAAjB,gBAEAC,WAAA,WACAgB,GAAAhB,aACAjqF,EAAAm/D,MAAAA,EACAn/D,EAAAP,UAAAA,EACAO,EAAAL,QAAAA,EACAmrF,GAAA,GAAAP,IAAAqF,EAAA,KAAAF,IAAAG,EAAA,KAAA64B,EAAA78B,GAAAgE,EAAA,GAAA64B,GAAA78B,KAAA6D,GAAA,IACAr9H,EAAA,GAAAk4H,EAAAl4H,EAAA,GAAAu9H,GAmFA,OAAA,UAAA23B,GACA13B,EAAAD,IAAArF,EAAAmF,EAAAt+I,EAAAA,GACAg0C,KACAyzF,GAAAsuC,IAAA3wI,OAAA+wI,EAAAvnH,EACA,IAAAjwF,GAAAq1E,EAAAr6E,MACA,IAAAgF,EAAA,CACAq1E,EAAA1pE,KAAAmtM,EACA,KAAA,GAAA/+M,GAAA6B,EAAA,EAAA9B,EAAAu7E,EAAA,GAAA7W,GAAA1kE,GAAA8B,EAAAoE,IAAApE,EACA7B,EAAAs7E,EAAAz5E,GACAm9M,EAAAh/M,EAAA,GAAAD,IAAAi/M,EAAAh/M,EAAA,GAAAD,IACA6uL,EAAA7uL,EAAA,GAAAC,EAAA,IAAA4uL,EAAA7uL,EAAA,GAAAA,EAAA,MAAAA,EAAA,GAAAC,EAAA,IACA4uL,EAAA5uL,EAAA,GAAAD,EAAA,IAAA6uL,EAAA7uL,EAAA,GAAAA,EAAA,MAAAA,EAAA,GAAAC,EAAA,KAEAykE,EAAA59D,KAAA9G,EAAAC,EAIA,KAAA,GADAwgL,GACAxgL,EADAi/M,IAAA33K,EAAAA,GACArhC,EAAAw+D,EAAAxjE,OAAA,EAAAY,EAAA,EAAA9B,EAAA0kE,EAAAx+D,GAAApE,GAAAoE,EAAAlG,EAAAC,IAAA6B,EACA7B,EAAAykE,EAAA5iE,IACA2+K,EAAAoO,EAAA7uL,EAAA,GAAAC,EAAA,KAAAi/M,IAAAA,EAAAz+B,EAAAC,EAAAzgL,EAAA,GAAA8lL,EAAA/lL,EAAA,IAIA,MADAu7E,GAAA/yB,EAAA,KACAk4H,IAAAn5I,EAAAA,GAAAs+I,IAAAt+I,EAAAA,IAAAsmD,IAAAA,MAAAA,IAAAA,QAAA6yF,EAAAmF,IAAAE,EAAAC,QAGAhX,GAAAsuC,IAAA6B,SAAA,SAAA7wC,GACA6T,GAAAQ,GAAAP,GAAAC,GAAAC,GAAAM,GAAAC,GAAAC,GAAAO,GAAAC,GAAAC,GAAA,EACAvU,GAAAsuC,IAAA3wI,OAAA2hG,EAAAyU,GACA,IAAAnwK,GAAAywK,GAAA5uK,EAAA6uK,GAAA5uK,EAAA6uK,GAAAt9K,EAAA2M,EAAAA,EAAA6B,EAAAA,EAAAC,EAAAA,CACA,OAAAzO,GAAA2uL,KACAhiL,EAAAgwK,GAAAnuK,EAAAouK,GAAAnuK,EAAAouK,GACAH,GAAAX,KAAApvK,EAAAwvK,GAAA3tK,EAAA4tK,GAAA3tK,EAAA4tK,IACAr8K,EAAA2M,EAAAA,EAAA6B,EAAAA,EAAAC,EAAAA,EACAzO,EAAA2uL,KAAA/mG,IAAAA,MAEAljF,KAAA4rK,MAAA9hK,EAAA7B,GAAA4jK,GAAA7B,GAAAjgK,EAAA/J,KAAA64J,KAAAv9J,IAAAuwK,IAEA,IAAA2L,IAAAQ,GAAAP,GAAAC,GAAAC,GAAAM,GAAAC,GAAAC,GAAAO,GAAAC,GAAAC,GACAR,IACA0C,OAAAhX,EACAnZ,MAAA2sB,GACArsF,UAAA2sF,GACAzsF,QAAAktF,GACA7C,aAAA,WACA4C,GAAAntF,UAAAqtF,IAEA7C,WAAA,WACA2C,GAAAntF,UAAA2sF,KAqRAsL,GAAArJ,GAAAd,GAAAkC,GAAAU,KAAA7R,IAAAA,GAAA,IAsPA+U,GAAA,GACAxa,IAAAsuC,IAAAtvB,WAAA,WACA,GAAAtL,GAAAF,EAAA1rD,EAAAC,EAAApqD,EAAAq3G,EAAAgK,GACArhH,OAAA,SAAAvnC,GAIA,MAHAunC,KAAAA,EAAA+gH,OAAA,GACA/gH,EAAAq3G,EAAA5+I,GACAunC,EAAA+gH,OAAA,EACA/gH,GAEAsnH,OAAA,SAAAtwL,GACA,MAAA8D,WAAAvG,QACA8iL,EAAA2E,GAAAjG,GAAA/+K,EAAA,GAAA,GAAA6+K,GAAA7+K,EAAA,GAAA,GAAAmzH,GAAAnzH,EAAA,GAAA,GAAAozH,GAAApzH,EAAA,GAAA,IACAgpE,IAAAA,EAAA+gH,OAAA,EAAA/gH,EAAA,MACAqhH,KAHAtL,EAAAF,IAAA1rD,EAAAC,KAMA,OAAAi3D,GAAAiG,SAAA,EAAA,IAAA,IAAA,SA4JAjlB,GAAAsuC,IAAA8B,eAAA,WACA,MAAAz1B,IAAAI,MACAljE,IAAAkjE,GACA/a,GAAAsuC,IAAA+B,OAAA,WACA,MAAArwC,IAAAsuC,IAAA8B,iBAAAz6B,QAAA,GAAA,IAAA6I,SAAA,GAAA,OAAA1D,WAAA,KAAA,OAAAxR,MAAA,OAEAtJ,GAAAsuC,IAAAgC,UAAA,WASA,QAAAA,GAAAt/B,GACA,GAAAptK,GAAAotK,EAAA,GAAAvrK,EAAAurK,EAAA,EAGA,OAFA1qB,GAAA,KACAiqD,EAAA3sM,EAAA6B,GAAA6gJ,IAAAkqD,EAAA5sM,EAAA6B,GAAA6gJ,IAAAmqD,EAAA7sM,EAAA6B,GACA6gJ,EAZA,GAGAA,GAIAiqD,EAAAC,EAAAC,EAPAC,EAAA1wC,GAAAsuC,IAAA+B,SACAM,EAAA3wC,GAAAsuC,IAAA8B,iBAAAz6B,QAAA,IAAA,IAAA6I,SAAA,EAAA,OAAA1D,WAAA,GAAA,KACA81B,EAAA5wC,GAAAsuC,IAAA8B,iBAAAz6B,QAAA,IAAA,IAAA6I,SAAA,EAAA,OAAA1D,WAAA,EAAA,KACA+1B,GACAvqD,MAAA,SAAA1iJ,EAAA6B,GACA6gJ,GAAA1iJ,EAAA6B,IAsEA,OA7DA6qM,GAAAlmI,OAAA,SAAA4mG,GACA,GAAAv7K,GAAAi7M,EAAApnC,QAAAnnK,EAAAuuM,EAAAzxB,YAAAr7K,GAAAotK,EAAA,GAAA7uK,EAAA,IAAA1M,EAAAgQ,GAAAurK,EAAA,GAAA7uK,EAAA,IAAA1M,CACA,QAAAgQ,GAAA,KAAAA,EAAA,MAAA7B,IAAA,MAAAA,GAAA,KAAA+sM,EAAAlrM,GAAA,MAAAA,EAAA,MAAA7B,IAAA,MAAAA,GAAA,KAAAgtM,EAAAF,GAAAtmI,OAAA4mG,IAEAs/B,EAAA3yI,OAAA,SAAAA,GACA,GAAAmzI,GAAAJ,EAAA/yI,OAAAA,GAAAozI,EAAAJ,EAAAhzI,OAAAA,GAAAqzI,EAAAJ,EAAAjzI,OAAAA,EACA,QACA2oF,MAAA,SAAA1iJ,EAAA6B,GACAqrM,EAAAxqD,MAAA1iJ,EAAA6B,GACAsrM,EAAAzqD,MAAA1iJ,EAAA6B,GACAurM,EAAA1qD,MAAA1iJ,EAAA6B,IAEAgxK,OAAA,WACAq6B,EAAAr6B,SACAs6B,EAAAt6B,SACAu6B,EAAAv6B,UAEA7vF,UAAA,WACAkqH,EAAAlqH,YACAmqH,EAAAnqH,YACAoqH,EAAApqH,aAEAE,QAAA,WACAgqH,EAAAhqH,UACAiqH,EAAAjqH,UACAkqH,EAAAlqH,WAEAqqF,aAAA,WACA2/B,EAAA3/B,eACA4/B,EAAA5/B,eACA6/B,EAAA7/B,gBAEAC,WAAA,WACA0/B,EAAA1/B,aACA2/B,EAAA3/B,aACA4/B,EAAA5/B,gBAIAk/B,EAAA/lC,UAAA,SAAA51K,GACA,MAAA8D,WAAAvG,QACAw+M,EAAAnmC,UAAA51K,GACAg8M,EAAApmC,UAAA51K,GACAi8M,EAAArmC,UAAA51K,GACA27M,GAJAI,EAAAnmC,aAMA+lC,EAAAhnC,MAAA,SAAA30K,GACA,MAAA8D,WAAAvG,QACAw+M,EAAApnC,MAAA30K,GACAg8M,EAAArnC,MAAA,IAAA30K,GACAi8M,EAAAtnC,MAAA30K,GACA27M,EAAArxB,UAAAyxB,EAAAzxB,cAJAyxB,EAAApnC,SAMAgnC,EAAArxB,UAAA,SAAAtqL,GACA,IAAA8D,UAAAvG,OAAA,MAAAw+M,GAAAzxB,WACA,IAAAxpL,GAAAi7M,EAAApnC,QAAA1lK,GAAAjP,EAAA,GAAA8Q,GAAA9Q,EAAA,EAIA,OAHA47M,GAAAG,EAAAzxB,UAAAtqL,GAAAqqL,aAAAp7K,EAAA,KAAAnO,EAAAgQ,EAAA,KAAAhQ,IAAAmO,EAAA,KAAAnO,EAAAgQ,EAAA,KAAAhQ,KAAAkoE,OAAAkzI,GAAAvqD,MACAkqD,EAAAG,EAAA1xB,WAAAr7K,EAAA,KAAAnO,EAAAgQ,EAAA,KAAAhQ,IAAAupL,aAAAp7K,EAAA,KAAAnO,EAAAu9K,GAAAvtK,EAAA,IAAAhQ,EAAAu9K,KAAApvK,EAAA,KAAAnO,EAAAu9K,GAAAvtK,EAAA,KAAAhQ,EAAAu9K,MAAAr1G,OAAAkzI,GAAAvqD,MACAmqD,EAAAG,EAAA3xB,WAAAr7K,EAAA,KAAAnO,EAAAgQ,EAAA,KAAAhQ,IAAAupL,aAAAp7K,EAAA,KAAAnO,EAAAu9K,GAAAvtK,EAAA,KAAAhQ,EAAAu9K,KAAApvK,EAAA,KAAAnO,EAAAu9K,GAAAvtK,EAAA,KAAAhQ,EAAAu9K,MAAAr1G,OAAAkzI,GAAAvqD,MACAgqD,GAEAA,EAAAhnC,MAAA,MAEA,IAAA2nC,IAAA71B,GA2BAK,GAAAE,GAAAD,GAAAE,GA3BAL,IACAj1B,MAAAmZ,EACA74E,UAAA64E,EACA34E,QAAA24E,EACA0R,aAAA,WACAiK,GAAA,EACAG,GAAA30F,UAAAu0F,IAEA/J,WAAA,WACAmK,GAAA30F,UAAA20F,GAAAz0F,QAAAy0F,GAAAj1B,MAAAmZ,EACAwxC,IAAA5iL,GAAA+sJ,GAAA,KAkBA81B,IACA5qD,MAAAk1B,GACA50F,UAAA64E,EACA34E,QAAA24E,EACA0R,aAAA1R,EACA2R,WAAA3R,GAwDA4c,IACA/1B,MAAA61B,GACAv1F,UAAAw1F,GACAt1F,QAAAw1F,GACAnL,aAAA,WACAkL,GAAAz1F,UAAA21F,IAEAnL,WAAA,WACAiL,GAAA/1B,MAAA61B,GACAE,GAAAz1F,UAAAw1F,GACAC,GAAAv1F,QAAAw1F,IAoKAtc,IAAAsuC,IAAA7rF,KAAA,WAEA,QAAAA,GAAA68C,GAMA,MALAA,KACA,kBAAA4c,IAAAi1B,EAAAj1B,aAAAA,EAAAnoL,MAAAxC,KAAAkH,YACA24M,GAAAA,EAAA1yB,QAAA0yB,EAAAC,EAAAF,IACAnxC,GAAAsuC,IAAA3wI,OAAA2hG,EAAA8xC,IAEAD,EAAAz/L,SAiCA,QAAAtG,KAEA,MADAgmM,GAAA,KACA3uF,EA1CA,GAAAtlF,GAAA1e,EAAA4yL,EAAAF,EAAAC,EAAAl1B,EAAA,GA4CA,OAnCAz5D,GAAA6zB,KAAA,SAAAgpB,GAGA,MAFA2xC,IAAA,EACAjxC,GAAAsuC,IAAA3wI,OAAA2hG,EAAA+xC,EAAA91B,KACA01B,IAEAxuF,EAAA0tF,SAAA,SAAA7wC,GAGA,MAFA8T,IAAAC,GAAAC,GAAAM,GAAAC,GAAAC,GAAAO,GAAAC,GAAAC,GAAA,EACAvU,GAAAsuC,IAAA3wI,OAAA2hG,EAAA+xC,EAAAh1B,KACA9H,IAAAF,GAAAE,GAAAD,GAAAC,IAAAT,IAAAF,GAAAE,GAAAD,GAAAC,IAAAR,IAAAF,GAAAE,GAAAD,GAAAC,KAAAz0F,IAAAA,MAEA4jC,EAAA8sF,OAAA,SAAAjwC,GAGA,MAFAoc,IAAAE,KAAAH,GAAAE,GAAApjJ,EAAAA,GACAynI,GAAAsuC,IAAA3wI,OAAA2hG,EAAA+xC,EAAAH,OACAz1B,GAAAE,KAAAD,GAAAE,MAEAn5D,EAAAtlF,WAAA,SAAAxoC,GACA,MAAA8D,WAAAvG,QACAm/M,GAAAl0K,EAAAxoC,GAAAA,EAAAgpE,QAAAmgH,GAAAnpL,GAAAwqK,EACA/zJ,KAFA+xB,GAIAslF,EAAAhkG,QAAA,SAAA9pB,GACA,MAAA8D,WAAAvG,QACAi/M,EAAA,OAAA1yL,EAAA9pB,GAAA,GAAAknL,IAAA,GAAAW,IAAA7nL,GACA,kBAAAunL,IAAAi1B,EAAAj1B,YAAAA,GACA9wK,KAHAqT,GAKAgkG,EAAAy5D,YAAA,SAAAvnL,GACA,MAAA8D,WAAAvG,QACAgqL,EAAA,kBAAAvnL,GAAAA,GAAAw8M,EAAAj1B,aAAAvnL,IAAAA,GACA8tH,GAFAy5D,GAQAz5D,EAAAtlF,WAAA6iI,GAAAsuC,IAAAgC,aAAA7xL,QAAA,OAUAuhJ,GAAAsuC,IAAAn/J,UAAA,SAAAjc,GACA,OACAyqC,OAAA,SAAAA,GACA,GAAAxuB,GAAA,GAAA6uI,IAAArgH,EACA,KAAA,GAAAloE,KAAAy9B,GAAAic,EAAA15C,GAAAy9B,EAAAz9B,EACA,OAAA05C,MAOA6uI,GAAA7hL,WACAmqJ,MAAA,SAAA1iJ,EAAA6B,GACAlU,KAAAosE,OAAA2oF,MAAA1iJ,EAAA6B,IAEAgxK,OAAA,WACAllL,KAAAosE,OAAA84G,UAEA7vF,UAAA,WACAr1F,KAAAosE,OAAAipB,aAEAE,QAAA,WACAv1F,KAAAosE,OAAAmpB,WAEAqqF,aAAA,WACA5/K,KAAAosE,OAAAwzG,gBAEAC,WAAA,WACA7/K,KAAAosE,OAAAyzG,eAuBApR,GAAAsuC,IAAAnxK,WAAA8gJ,GACAje,GAAAsuC,IAAAgD,kBAAAz2B,IAsFA7a,GAAAsuC,IAAAiD,gBAAA,WACA,MAAAtzB,IAAAiB,MACArnE,IAAAqnE,GAAA90G,OAAA80G,GACAlf,GAAAsuC,IAAA/uB,SAAA,SAAA5J,GAEA,QAAAn1B,GAAAwwB,GAEA,MADAA,GAAA2E,EAAA3E,EAAA,GAAAhK,GAAAgK,EAAA,GAAAhK,IACAgK,EAAA,IAAAxJ,GAAAwJ,EAAA,IAAAxJ,GAAAwJ,EAMA,MATA2E,GAAA0I,GAAA1I,EAAA,GAAA,IAAA3O,GAAA2O,EAAA,GAAA3O,GAAA2O,EAAAzjL,OAAA,EAAAyjL,EAAA,GAAA3O,GAAA,GAKAxmB,EAAAp2E,OAAA,SAAA4mG,GAEA,MADAA,GAAA2E,EAAAvrG,OAAA4mG,EAAA,GAAAhK,GAAAgK,EAAA,GAAAhK,IACAgK,EAAA,IAAAxJ,GAAAwJ,EAAA,IAAAxJ,GAAAwJ,GAEAxwB,GAKA2+B,GAAA/0G,OAAA80G,GA0BAlf,GAAAsuC,IAAAxnF,OAAA,WAEA,QAAAA,KACA,GAAA03D,GAAA,kBAAA38I,GAAAA,EAAA9tC,MAAAxC,KAAAkH,WAAAopC,EAAA8zI,EAAA0I,IAAAG,EAAA,GAAAxX,IAAAwX,EAAA,GAAAxX,GAAA,GAAA58F,OAAA0rG,IAOA,OANAhB,GAAA,KAAA,KAAA,GACAxuB,MAAA,SAAA1iJ,EAAA6B,GACAqwK,EAAAh+K,KAAA8L,EAAA+xK,EAAA/xK,EAAA6B,IACA7B,EAAA,IAAA4jK,GAAA5jK,EAAA,IAAA4jK,OAIAp1K,KAAA,UACA4+K,aAAA8E,IAXA,GAAA+J,GAAA/K,EAAAjzI,GAAA,EAAA,GAAA0oI,EAAA,CA6BA,OAfAzjD,GAAAjlF,OAAA,SAAAj+B,GACA,MAAAnL,WAAAvG,QACA2vC,EAAAj+B,EACAkjH,GAFAjlF,GAIAilF,EAAA+4D,MAAA,SAAAj8K,GACA,MAAAnL,WAAAvG,QACA4iL,EAAAwE,IAAAuG,GAAAj8K,GAAAojK,GAAAuD,EAAAvD,IACAlgD,GAFA+4D,GAIA/4D,EAAAyjD,UAAA,SAAA51K,GACA,MAAA8D,WAAAvG,QACA4iL,EAAAwE,GAAAuG,EAAA7Y,IAAAuD,GAAA51K,GAAAqyK,IACAlgD,GAFAyjD,GAIAzjD,EAAA+4D,MAAA,KA0BA7f,GAAAsuC,IAAA3tH,SAAA,SAAA3vF,EAAAC,GACA,GAAAkR,GAAAqvM,GAAAvgN,EAAA,GAAAD,EAAA,IAAAg2K,GAAA6P,EAAA7lL,EAAA,GAAAg2K,GAAAgQ,EAAA/lL,EAAA,GAAA+1K,GAAAyqC,EAAA91M,KAAAgvH,IAAA6mF,GAAA5wB,EAAAjlL,KAAAmd,IAAA04L,GAAAz/B,EAAAp2K,KAAAgvH,IAAAksD,GAAA7E,EAAAr2K,KAAAmd,IAAA+9J,GAAA66B,EAAA/1M,KAAAgvH,IAAAqsD,GAAAG,EAAAx7K,KAAAmd,IAAAk+J,EACA,OAAAr7K,MAAA4rK,MAAA5rK,KAAA64J,MAAAryJ,EAAAg1K,EAAAs6B,GAAAtvM,GAAAA,EAAA6vK,EAAA0/B,EAAA3/B,EAAAoF,EAAAyJ,GAAAz+K,GAAA4vK,EAAA2/B,EAAA1/B,EAAAmF,EAAAyJ,IAEA5gB,GAAAsuC,IAAAqD,UAAA,WAEA,QAAAA,KACA,OACAv/M,KAAA,kBACA4+K,YAAApkH,KAGA,QAAAA,KACA,MAAAozG,IAAAxmH,MAAA79C,KAAA4vE,KAAAqmI,EAAAC,GAAAA,EAAAC,EAAAD,GAAA13M,IAAApF,GAAAuI,OAAA0iK,GAAAxmH,MAAA79C,KAAA4vE,KAAAwmI,EAAAC,GAAAA,EAAAC,EAAAD,GAAA73M,IAAA3F,IAAA8I,OAAA0iK,GAAAxmH,MAAA79C,KAAA4vE,KAAAmoG,EAAA5jG,GAAAA,EAAAg4C,EAAAh4C,GAAA78E,OAAA,SAAA2Q,GACA,MAAAyqB,IAAAzqB,EAAAiuM,GAAA7+B,KACA74K,IAAAyJ,IAAAtG,OAAA0iK,GAAAxmH,MAAA79C,KAAA4vE,KAAAioG,EAAAxjG,GAAAA,EAAA+3C,EAAA/3C,GAAA/8E,OAAA,SAAAwS,GACA,MAAA4oB,IAAA5oB,EAAAusM,GAAAh/B,KACA74K,IAAAsL,IAZA,GAAAqiH,GAAA4rD,EAAAo+B,EAAAF,EAAA7pF,EAAAyrD,EAAAy+B,EAAAF,EAAAnuM,EAAA6B,EAAA1Q,EAAAP,EAAAs7E,EAAA,GAAAE,EAAAF,EAAA+hI,EAAA,GAAAG,EAAA,IAAAznC,EAAA,GAuEA,OAzDAonC,GAAA/kJ,MAAA,WACA,MAAAA,KAAAzyD,IAAA,SAAA62K,GACA,OACA5+K,KAAA,aACA4+K,YAAAA,MAIA2gC,EAAAO,QAAA,WACA,OACA9/M,KAAA,UACA4+K,aAAAj8K,EAAA68M,GAAAt0M,OAAA9I,EAAAy9M,GAAAj+M,MAAA,GAAAe,EAAA+8M,GAAAhlM,UAAA9Y,MAAA,GAAAQ,EAAAu9M,GAAAjlM,UAAA9Y,MAAA,OAGA29M,EAAA1sB,OAAA,SAAAtwL,GACA,MAAA8D,WAAAvG,OACAy/M,EAAAQ,YAAAx9M,GAAAy9M,YAAAz9M,GADAg9M,EAAAS,eAGAT,EAAAQ,YAAA,SAAAx9M,GACA,MAAA8D,WAAAvG,QACA0/M,GAAAj9M,EAAA,GAAA,GAAAm9M,GAAAn9M,EAAA,GAAA,GACAo9M,GAAAp9M,EAAA,GAAA,GAAAs9M,GAAAt9M,EAAA,GAAA,GACAi9M,EAAAE,IAAAn9M,EAAAi9M,EAAAA,EAAAE,EAAAA,EAAAn9M,GACAo9M,EAAAE,IAAAt9M,EAAAo9M,EAAAA,EAAAE,EAAAA,EAAAt9M,GACAg9M,EAAApnC,UAAAA,MALAqnC,EAAAG,IAAAD,EAAAG,KAOAN,EAAAS,YAAA,SAAAz9M,GACA,MAAA8D,WAAAvG,QACAwhL,GAAA/+K,EAAA,GAAA,GAAAmzH,GAAAnzH,EAAA,GAAA,GACA6+K,GAAA7+K,EAAA,GAAA,GAAAozH,GAAApzH,EAAA,GAAA,GACA++K,EAAA5rD,IAAAnzH,EAAA++K,EAAAA,EAAA5rD,EAAAA,EAAAnzH,GACA6+K,EAAAzrD,IAAApzH,EAAA6+K,EAAAA,EAAAzrD,EAAAA,EAAApzH,GACAg9M,EAAApnC,UAAAA,MALAmJ,EAAAF,IAAA1rD,EAAAC,KAOA4pF,EAAAl5L,KAAA,SAAA9jB,GACA,MAAA8D,WAAAvG,OACAy/M,EAAAU,UAAA19M,GAAA29M,UAAA39M,GADAg9M,EAAAW,aAGAX,EAAAU,UAAA,SAAA19M,GACA,MAAA8D,WAAAvG,QACA2/M,GAAAl9M,EAAA,GAAAq9M,GAAAr9M,EAAA,GACAg9M,IAFAE,EAAAG,IAIAL,EAAAW,UAAA,SAAA39M,GACA,MAAA8D,WAAAvG,QACA49E,GAAAn7E,EAAA,GAAAq7E,GAAAr7E,EAAA,GACAg9M,IAFA7hI,EAAAE,IAIA2hI,EAAApnC,UAAA,SAAA51K,GACA,MAAA8D,WAAAvG,QACAq4K,GAAA51K,EACAiP,EAAAk8K,GAAAtM,EAAAzrD,EAAA,IACAtiH,EAAAs6K,GAAArM,EAAA5rD,EAAAyiD,GACAx1K,EAAA+qL,GAAAiyB,EAAAE,EAAA,IACAz9M,EAAAurL,GAAA6xB,EAAAE,EAAAvnC,GACAonC,GANApnC,GAQAonC,EAAAQ,eAAA,KAAA,GAAAn/B,KAAA,IAAA,GAAAA,MAAAo/B,eAAA,KAAA,GAAAp/B,KAAA,IAAA,GAAAA,OAwBAhT,GAAAsuC,IAAAiE,SAAA,WAEA,QAAAA,KACA,OACAngN,KAAA,aACA4+K,aAAAwhC,GAAArjM,EAAApb,MAAAxC,KAAAkH,WAAAg6M,GAAA/oM,EAAA3V,MAAAxC,KAAAkH,aAJA,GAAA+5M,GAAAC,EAAAtjM,EAAA6wK,GAAAt2K,EAAAu2K,EAuBA,OAhBAsyB,GAAA5xH,SAAA,WACA,MAAAq/E,IAAAsuC,IAAA3tH,SAAA6xH,GAAArjM,EAAApb,MAAAxC,KAAAkH,WAAAg6M,GAAA/oM,EAAA3V,MAAAxC,KAAAkH,aAEA85M,EAAApjM,OAAA,SAAAxa,GACA,MAAA8D,WAAAvG,QACAid,EAAAxa,EAAA69M,EAAA,kBAAA79M,GAAA,KAAAA,EACA49M,GAFApjM,GAIAojM,EAAA7oM,OAAA,SAAA/U,GACA,MAAA8D,WAAAvG,QACAwX,EAAA/U,EAAA89M,EAAA,kBAAA99M,GAAA,KAAAA,EACA49M,GAFA7oM,GAIA6oM,EAAAhoC,UAAA,WACA,MAAA9xK,WAAAvG,OAAAqgN,EAAA,GAEAA,GAEAvyC,GAAAsuC,IAAAx5B,YAAA,SAAA3lK,EAAAzF,GACA,MAAAw2K,IAAA/wK,EAAA,GAAA63J,GAAA73J,EAAA,GAAA63J,GAAAt9J,EAAA,GAAAs9J,GAAAt9J,EAAA,GAAAs9J,KAaAhH,GAAAsuC,IAAAp8M,OAAA,SAAAotK,GAGA,MAFAuhB,IAAA,EACA7gB,GAAAsuC,IAAA3wI,OAAA2hG,EAAAwhB,IACAD,GAEA,IAAAA,IACAC,IACArK,OAAAhX,EACAnZ,MAAAmZ,EACA74E,UAAA+5F,GACA75F,QAAA24E,EACA0R,aAAA1R,EACA2R,WAAA3R,GA4BAizC,GAAA3xB,GAAA,SAAA4xB,GACA,MAAAh3M,MAAA64J,KAAA,GAAA,EAAAm+C,KACA,SAAA33B,GACA,MAAA,GAAAr/K,KAAAkqK,KAAAmV,EAAA,MAEAhb,GAAAsuC,IAAAsE,mBAAA,WACA,MAAA30B,IAAAy0B,MACA76F,IAAA66F,EACA,IAAAG,IAAA9xB,GAAA,SAAA4xB,GACA,GAAAjhN,GAAAiK,KAAA+pK,KAAAitC,EACA,OAAAjhN,IAAAA,EAAAiK,KAAAgvH,IAAAj5H,IACAytK,IACAa,GAAAsuC,IAAAwE,qBAAA,WACA,MAAA70B,IAAA40B,MACAh7F,IAAAg7F,IAqBA7yC,GAAAsuC,IAAAyE,eAAA,WACA,MAAAp4B,IAAAyG,MACAvpE,IAAAupE,IAcAphB,GAAAsuC,IAAA0E,iBAAA,WACA,MAAAr4B,IAAA4G,MACA1pE,IAAA0pE,EACA,IAAA0xB,IAAAlyB,GAAA,SAAA4xB,GACA,MAAA,GAAAA,GACAh3M,KAAA07K,OACArX,GAAAsuC,IAAA4E,SAAA,WACA,MAAAj1B,IAAAg1B,MACAp7F,IAAAo7F,GAIA3xB,GAAAl3G,OAAA,SAAAxmE,EAAA6B,GACA,OAAA7B,EAAA,EAAAjI,KAAA07K,KAAA17K,KAAAoqK,IAAAtgK,IAAAmgK,MA0BA5F,GAAAsuC,IAAA6E,SAAA,WACA,MAAA3xB,IAAAF,MACAzpE,IAAAypE,EACA,IAAA8xB,IAAAryB,GAAA,WACA,MAAA,IACAplL,KAAAkqK,OACA7F,GAAAsuC,IAAA+E,aAAA,WACA,MAAAp1B,IAAAm1B,MACAv7F,IAAAu7F,EACA,IAAAE,IAAAvyB,GAAA,SAAA4xB,GACA,MAAA,IAAA,EAAAA,IACA,SAAA33B,GACA,MAAA,GAAAr/K,KAAA07K,KAAA2D,MAEAhb,GAAAsuC,IAAAiF,cAAA,WACA,MAAAt1B,IAAAq1B,MACAz7F,IAAAy7F,GAIA5xB,GAAAt3G,OAAA,SAAAxmE,EAAA6B,GACA,QAAAA,EAAA,EAAA9J,KAAA07K,KAAA17K,KAAAoqK,IAAAniK,IAAAgiK,MAEA5F,GAAAsuC,IAAAkF,mBAAA,WACA,GAAAr2K,GAAAqkJ,GAAAE,IAAAlD,EAAArhJ,EAAAqhJ,OAAA7I,EAAAx4I,EAAAw4I,MAQA,OAPAx4I,GAAAqhJ,OAAA,SAAA7pL,GACA,MAAAA,GAAA6pL,IAAA7pL,EAAA,GAAAA,EAAA,MAAAA,EAAA6pL,KAAA7pL,EAAA,IAAAA,EAAA,MAEAwoC,EAAAw4I,OAAA,SAAAhhL,GACA,MAAAA,GAAAghL,GAAAhhL,EAAA,GAAAA,EAAA,GAAAA,EAAAzC,OAAA,EAAAyC,EAAA,GAAA,GAAA,MAAAA,EAAAghL,KACAhhL,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAA,MAEAghL,GAAA,EAAA,EAAA,OACA99D,IAAA6pE,GACA1hB,GAAAyzC,QAOAzzC,GAAAyzC,KAAA3xB,KAAA,SAAAthE,GAGA,QAAAshE,GAAAlgL,GACA,GAAAA,EAAA1P,OAAA,EAAA,QACA,IAAAY,GAAA4J,EAAAurK,GAAArkK,GAAA4iL,EAAAve,GAAAxiK,GAAAvO,EAAA0K,EAAA1P,OAAAojL,KAAAo+B,IACA,KAAA5gN,EAAA,EAAAA,EAAAoE,EAAApE,IACAwiL,EAAAx9K,OAAA4E,EAAA9J,KAAArB,KAAAqQ,EAAA9O,GAAAA,IAAA0zL,EAAA5zL,KAAArB,KAAAqQ,EAAA9O,GAAAA,GAAAA,GAGA,KADAwiL,EAAAzyK,KAAAm/K,IACAlvL,EAAA,EAAAA,EAAAoE,EAAApE,IAAA4gN,EAAA57M,MAAAw9K,EAAAxiL,GAAA,IAAAwiL,EAAAxiL,GAAA,IACA,IAAA6gN,GAAA9xB,GAAAvM,GAAAs+B,EAAA/xB,GAAA6xB,GACAG,EAAAD,EAAA,KAAAD,EAAA,GAAAG,EAAAF,EAAAA,EAAA1hN,OAAA,KAAAyhN,EAAAA,EAAAzhN,OAAA,GAAAikL,IACA,KAAArjL,EAAA6gN,EAAAzhN,OAAA,EAAAY,GAAA,IAAAA,EAAAqjL,EAAAr+K,KAAA8J,EAAA0zK,EAAAq+B,EAAA7gN,IAAA,IACA,KAAAA,GAAA+gN,EAAA/gN,EAAA8gN,EAAA1hN,OAAA4hN,IAAAhhN,EAAAqjL,EAAAr+K,KAAA8J,EAAA0zK,EAAAs+B,EAAA9gN,IAAA,IACA,OAAAqjL,GAdA,GAAAvyK,GAAA+9K,GAAAl8K,EAAAm8K,EACA,OAAAnpL,WAAAvG,OAAA4vL,EAAAthE,IAeAshE,EAAAl+K,EAAA,SAAAjP,GACA,MAAA8D,WAAAvG,QAAA0R,EAAAjP,EAAAmtL,GAAAl+K,GAEAk+K,EAAAr8K,EAAA,SAAA9Q,GACA,MAAA8D,WAAAvG,QAAAuT,EAAA9Q,EAAAmtL,GAAAr8K,GAEAq8K,IAaA9hB,GAAAyzC,KAAAt9B,QAAA,SAAAnF,GAEA,MADAvQ,IAAAuQ,EAAA+iC,IACA/iC,EAEA,IAAA+iC,IAAA/zC,GAAAyzC,KAAAt9B,QAAAh6K,YACA43M,IAAAz9D,KAAA,WAEA,IADA,GAAAtlJ,GAAA8B,GAAA,EAAAoE,EAAA3F,KAAAW,OAAAjB,EAAAM,KAAA2F,EAAA,GAAAo/I,EAAA,IACAxjJ,EAAAoE,GACAlG,EAAAC,EACAA,EAAAM,KAAAuB,GACAwjJ,GAAAtlJ,EAAA,GAAAC,EAAA,GAAAD,EAAA,GAAAC,EAAA,EAEA,OAAA,GAAAqlJ,GAEAy9D,GAAA5D,SAAA,SAAA16M,GACA,GAAAzE,GAAAU,EAAAoB,GAAA,EAAAoE,EAAA3F,KAAAW,OAAA0R,EAAA,EAAA6B,EAAA,EAAAxU,EAAAM,KAAA2F,EAAA,EAEA,KADAuB,UAAAvG,SAAAuD,GAAA,GAAA,EAAAlE,KAAA+kJ,WACAxjJ,EAAAoE,GACAlG,EAAAC,EACAA,EAAAM,KAAAuB,GACApB,EAAAV,EAAA,GAAAC,EAAA,GAAAA,EAAA,GAAAD,EAAA,GACA4S,IAAA5S,EAAA,GAAAC,EAAA,IAAAS,EACA+T,IAAAzU,EAAA,GAAAC,EAAA,IAAAS,CAEA,QAAAkS,EAAAnO,EAAAgQ,EAAAhQ,IAEAs+M,GAAA/+B,KAAA,SAAAD,GAEA,IADA,GAAAxqK,GAAAhV,EAAA0B,EAAAhG,EAAAS,EAAAD,EAAA24H,EAAAq4D,GAAA1N,GAAAjiL,GAAA,EAAAoE,EAAA3F,KAAAW,OAAAuwL,GAAAlxL,MAAAP,EAAAO,KAAA2F,EAAA,KACApE,EAAAoE,GAAA,CAMA,IALAqT,EAAAwqK,EAAA/gL,QACA+gL,EAAA7iL,OAAA,EACAjB,EAAAM,KAAAuB,GACApB,EAAA6Y,GAAAtT,EAAAsT,EAAArY,OAAAk4H,GAAA,GACA70H,GAAA,IACAA,EAAA0B,GACAxF,EAAA8Y,EAAAhV,GACA0sL,GAAAxwL,EAAAT,EAAAC,IACAgxL,GAAAvwL,EAAAV,EAAAC,IACA8jL,EAAAj9K,KAAAoqL,GAAAxwL,EAAAD,EAAAT,EAAAC,IAEA8jL,EAAAj9K,KAAArG,IACAwwL,GAAAvwL,EAAAV,EAAAC,IACA8jL,EAAAj9K,KAAAoqL,GAAAxwL,EAAAD,EAAAT,EAAAC,IAEAS,EAAAD,CAEA24H,IAAA2qD,EAAAj9K,KAAAi9K,EAAA,IACA/jL,EAAAC,EAEA,MAAA8jL,GAaA,IAAAkR,IAAAZ,GAAAnC,GAAA6C,GAAAD,GAAA/C,MAAA8C,KAgIAf,IAAA3oL,UAAA+yC,QAAA,WAEA,IADA,GAAAwkD,GAAAyxF,EAAA5zL,KAAAwzL,MAAAG,EAAAC,EAAAjzL,OACAgzL,KACAxxF,EAAAyxF,EAAAD,GAAAxxF,KACAA,EAAAziG,GAAAyiG,EAAA1iG,GAAAm0L,EAAAriL,OAAAoiL,EAAA,EAGA,OADAC,GAAAtiL,KAAA4iL,IACAN,EAAAjzL,QA4MAqzL,GAAAppL,WACArG,MAAA,WACA,MAAAvE,MAAAmiG,KAAA38F,IAAAxF,KAAAqxL,KAAArxL,KAAAmiG,KAAA1iG,EAAAO,KAAAmiG,KAAAziG,GAEA8E,IAAA,WACA,MAAAxE,MAAAmiG,KAAA38F,IAAAxF,KAAAqxL,KAAArxL,KAAAmiG,KAAAziG,EAAAM,KAAAmiG,KAAA1iG,IASA01L,GAAAvqL,WACAo+E,OAAA,SAAA9kE,EAAA80B,GACA,GAAAlgC,GAAA2pM,EAAAC,CACA,IAAAx+L,EAAA,CAKA,GAJA80B,EAAA92C,EAAAgiB,EACA80B,EAAAh3C,EAAAkiB,EAAAliB,EACAkiB,EAAAliB,IAAAkiB,EAAAliB,EAAAE,EAAA82C,GACA90B,EAAAliB,EAAAg3C,EACA90B,EAAAtP,EAAA,CAEA,IADAsP,EAAAA,EAAAtP,EACAsP,EAAAniB,GAAAmiB,EAAAA,EAAAniB,CACAmiB,GAAAniB,EAAAi3C,MAEA90B,GAAAtP,EAAAokC,CAEAlgC,GAAAoL,MACAlkB,MAAAoD,GACA8gB,EAAAqxK,GAAAv1L,KAAAoD,GACA41C,EAAA92C,EAAA,KACA82C,EAAAh3C,EAAAkiB,EACAA,EAAAhiB,EAAAgiB,EAAAniB,EAAAi3C,EACAlgC,EAAAoL,IAEA80B,EAAA92C,EAAA82C,EAAAh3C,EAAA,KACAhC,KAAAoD,EAAA41C,EACAlgC,EAAA,KAMA,KAJAkgC,EAAAj3C,EAAAi3C,EAAApkC,EAAA,KACAokC,EAAAlkC,EAAAgE,EACAkgC,EAAA3kC,GAAA,EACA6P,EAAA80B,EACAlgC,GAAAA,EAAAzE,GACAouM,EAAA3pM,EAAAhE,EACAgE,IAAA2pM,EAAA1gN,GACA2gN,EAAAD,EAAA7tM,EACA8tM,GAAAA,EAAAruM,GACAyE,EAAAzE,EAAAquM,EAAAruM,GAAA,EACAouM,EAAApuM,GAAA,EACA6P,EAAAu+L,IAEAv+L,IAAApL,EAAAlE,IACAwgL,GAAAp1L,KAAA8Y,GACAoL,EAAApL,EACAA,EAAAoL,EAAApP,GAEAgE,EAAAzE,GAAA,EACAouM,EAAApuM,GAAA,EACAihL,GAAAt1L,KAAAyiN,MAGAC,EAAAD,EAAA1gN,EACA2gN,GAAAA,EAAAruM,GACAyE,EAAAzE,EAAAquM,EAAAruM,GAAA,EACAouM,EAAApuM,GAAA,EACA6P,EAAAu+L,IAEAv+L,IAAApL,EAAA/W,IACAuzL,GAAAt1L,KAAA8Y,GACAoL,EAAApL,EACAA,EAAAoL,EAAApP,GAEAgE,EAAAzE,GAAA,EACAouM,EAAApuM,GAAA,EACA+gL,GAAAp1L,KAAAyiN,KAGA3pM,EAAAoL,EAAApP,CAEA9U,MAAAoD,EAAAiR,GAAA,GAEAzH,OAAA,SAAAosC,GACAA,EAAAh3C,IAAAg3C,EAAAh3C,EAAAE,EAAA82C,EAAA92C,GACA82C,EAAA92C,IAAA82C,EAAA92C,EAAAF,EAAAg3C,EAAAh3C,GACAg3C,EAAAh3C,EAAAg3C,EAAA92C,EAAA,IACA,IAAA8lG,GAAAv0F,EAAA0kM,EAAAr/L,EAAAkgC,EAAAlkC,EAAA4R,EAAAsyB,EAAAj3C,EAAA86B,EAAAmc,EAAApkC,CA6BA,IA5BAnB,EAAAiT,EAAAmW,EAAA04J,GAAA14J,GAAAnW,EAAAmW,EACA/jB,EACAA,EAAA/W,IAAAi3C,EAAAlgC,EAAA/W,EAAA0R,EAAAqF,EAAAlE,EAAAnB,EAEAzT,KAAAoD,EAAAqQ,EAEAiT,GAAAmW,GACAs7K,EAAA1kM,EAAAY,EACAZ,EAAAY,EAAA2kC,EAAA3kC,EACAZ,EAAA1R,EAAA2kB,EACAA,EAAA5R,EAAArB,EACAA,IAAAopB,GACA/jB,EAAArF,EAAAqB,EACArB,EAAAqB,EAAAkkC,EAAAlkC,EACAkkC,EAAAvlC,EAAAmB,EACAkE,EAAA/W,EAAAi3C,EACAvlC,EAAAmB,EAAAioB,EACAA,EAAA/nB,EAAArB,IAEAA,EAAAqB,EAAAgE,EACAA,EAAArF,EACAulC,EAAAvlC,EAAAmB,KAGAujM,EAAAn/J,EAAA3kC,EACA2kC,EAAAvlC,GAEAulC,IAAAA,EAAAlkC,EAAAgE,IACAq/L,EAAA,CACA,GAAAn/J,GAAAA,EAAA3kC,EAEA,YADA2kC,EAAA3kC,GAAA,EAGA,GAAA,CACA,GAAA2kC,IAAAh5C,KAAAoD,EAAA,KACA,IAAA41C,IAAAlgC,EAAA/W,GAQA,GAPAimG,EAAAlvF,EAAAlE,EACAozF,EAAA3zF,IACA2zF,EAAA3zF,GAAA,EACAyE,EAAAzE,GAAA,EACA+gL,GAAAp1L,KAAA8Y,GACAkvF,EAAAlvF,EAAAlE,GAEAozF,EAAAjmG,GAAAimG,EAAAjmG,EAAAsS,GAAA2zF,EAAApzF,GAAAozF,EAAApzF,EAAAP,EAAA,CACA2zF,EAAApzF,GAAAozF,EAAApzF,EAAAP,IACA2zF,EAAAjmG,EAAAsS,GAAA,EACA2zF,EAAA3zF,GAAA,EACAihL,GAAAt1L,KAAAgoG,GACAA,EAAAlvF,EAAAlE,GAEAozF,EAAA3zF,EAAAyE,EAAAzE,EACAyE,EAAAzE,EAAA2zF,EAAApzF,EAAAP,GAAA,EACA+gL,GAAAp1L,KAAA8Y,GACAkgC,EAAAh5C,KAAAoD,CACA,YAUA,IAPA4kG,EAAAlvF,EAAA/W,EACAimG,EAAA3zF,IACA2zF,EAAA3zF,GAAA,EACAyE,EAAAzE,GAAA,EACAihL,GAAAt1L,KAAA8Y,GACAkvF,EAAAlvF,EAAA/W,GAEAimG,EAAAjmG,GAAAimG,EAAAjmG,EAAAsS,GAAA2zF,EAAApzF,GAAAozF,EAAApzF,EAAAP,EAAA,CACA2zF,EAAAjmG,GAAAimG,EAAAjmG,EAAAsS,IACA2zF,EAAApzF,EAAAP,GAAA,EACA2zF,EAAA3zF,GAAA,EACA+gL,GAAAp1L,KAAAgoG,GACAA,EAAAlvF,EAAA/W,GAEAimG,EAAA3zF,EAAAyE,EAAAzE,EACAyE,EAAAzE,EAAA2zF,EAAAjmG,EAAAsS,GAAA,EACAihL,GAAAt1L,KAAA8Y,GACAkgC,EAAAh5C,KAAAoD,CACA,OAGA4kG,EAAA3zF,GAAA,EACA2kC,EAAAlgC,EACAA,EAAAA,EAAAhE,SACAkkC,EAAA3kC,EACA2kC,KAAAA,EAAA3kC,GAAA,MAiEAo6J,GAAAyzC,KAAAS,QAAA,SAAA5+B,GAGA,QAAA4+B,GAAAtyM,GACA,GAAAuyM,GAAA,GAAA71M,OAAAsD,EAAA1P,QAAAwhL,EAAAsL,EAAA,GAAA,GAAAxL,EAAAwL,EAAA,GAAA,GAAAl3D,EAAAk3D,EAAA,GAAA,GAAAj3D,EAAAi3D,EAAA,GAAA,EAQA,OAPA+H,IAAAC,EAAAplL,GAAAo9K,GAAAn9C,MAAAoI,QAAA,SAAAzjH,EAAA1zB,GACA,GAAAiyL,GAAAv+J,EAAAu+J,MAAAnC,EAAAp8J,EAAAo8J,KAAAzM,EAAAg+B,EAAArhN,GAAAiyL,EAAA7yL,OAAA6yL,EAAA5qL,IAAA,SAAAzG,GACA,GAAAoG,GAAApG,EAAAoC,OACA,QAAAgE,EAAA8J,EAAA9J,EAAA2L,KACAm9K,EAAAh/K,GAAA8vK,GAAAkP,EAAAh/K,GAAAkkH,GAAA86D,EAAAn9K,GAAA+tK,GAAAoP,EAAAn9K,GAAAsiH,IAAA2rD,EAAA3rD,IAAAD,EAAAC,IAAAD,EAAA0rD,IAAAE,EAAAF,MACA2C,GAAA7vB,MAAA1kJ,EAAA9O,KAEAqhN,EAEA,QAAAntB,GAAAplL,GACA,MAAAA,GAAAzH,IAAA,SAAA1I,EAAAqB,GACA,OACA8Q,EAAAjI,KAAAs0B,MAAAvzB,EAAAjL,EAAAqB,GAAAkgL,IAAAA,GACAvtK,EAAA9J,KAAAs0B,MAAAu2J,EAAA/0L,EAAAqB,GAAAkgL,IAAAA,GACAlgL,EAAAA,KAlBA,GAAA8Q,GAAA+9K,GAAAl8K,EAAAm8K,GAAAllL,EAAAkH,EAAA4iL,EAAA/gL,EAAAu5K,EAAAo1B,EACA,OAAA9+B,GAAA4+B,EAAA5+B,IAqBA4+B,EAAA3hL,MAAA,SAAA3wB,GACA,MAAAmlL,IAAAC,EAAAplL,IAAAmjL,MAAA9xL,OAAA,SAAAygG,GACA,MAAAA,GAAA38F,GAAA28F,EAAAvhG,IACAgI,IAAA,SAAAu5F,GACA,OACAvkF,OAAAvN,EAAA8xF,EAAA38F,EAAAjE,GACA4W,OAAA9H,EAAA8xF,EAAAvhG,EAAAW,OAIAohN,EAAAG,UAAA,SAAAzyM,GACA,GAAAyyM,KAaA,OAZAttB,IAAAC,EAAAplL,IAAAigI,MAAAoI,QAAA,SAAAzjH,EAAA1zB,GAEA,IADA,GAAAytK,GAAA+zC,EAAA1xB,EAAAp8J,EAAAo8J,KAAAmC,EAAAv+J,EAAAu+J,MAAAliL,KAAA4iL,IAAAlwL,GAAA,EAAA0B,EAAA8tL,EAAA7yL,OAAAouK,EAAAykB,EAAA9tL,EAAA,GAAAy8F,KAAA67F,EAAAjvB,EAAAvpK,IAAA6rL,EAAAtiB,EAAAnuK,EAAAmuK,EAAAvpK,IACAxB,EAAA0B,GACAspK,EAAAD,EACAg0C,EAAA/kB,EACAjvB,EAAAykB,EAAAxvL,GAAAm+F,KACA67F,EAAAjvB,EAAAvpK,IAAA6rL,EAAAtiB,EAAAnuK,EAAAmuK,EAAAvpK,EACAjE,EAAAwhN,EAAAxhN,GAAAA,EAAAy8L,EAAAz8L,GAAAs0L,GAAAxE,EAAA0xB,EAAA/kB,GAAA,GACA8kB,EAAAv8M,MAAA8J,EAAA9O,GAAA8O,EAAA0yM,EAAAxhN,GAAA8O,EAAA2tL,EAAAz8L,OAIAuhN,GAEAH,EAAAtwM,EAAA,SAAAjP,GACA,MAAA8D,WAAAvG,QAAAwK,EAAAurK,GAAArkK,EAAAjP,GAAAu/M,GAAAtwM,GAEAswM,EAAAzuM,EAAA,SAAA9Q,GACA,MAAA8D,WAAAvG,QAAAs0L,EAAAve,GAAAxiK,EAAA9Q,GAAAu/M,GAAAzuM,GAEAyuM,EAAAl1B,WAAA,SAAArqL,GACA,MAAA8D,WAAAvG,QACA8sL,EAAA,MAAArqL,EAAAy/M,GAAAz/M,EACAu/M,GAFAl1B,IAAAo1B,GAAA,KAAAp1B,GAIAk1B,EAAAzpK,KAAA,SAAA91C,GACA,MAAA8D,WAAAvG,OACAgiN,EAAAl1B,WAAArqL,KAAA,EAAA,GAAAA,IADAqqL,IAAAo1B,GAAA,KAAAp1B,GAAAA,EAAA,IAGAk1B,GAEA,IAAAE,OAAA,KAAA,MAAA,IAAA,KAIAp0C,IAAAyzC,KAAAc,SAAA,SAAA/zF,GACA,MAAAw/C,IAAAyzC,KAAAS,UAAAG,UAAA7zF,IAEAw/C,GAAAyzC,KAAAe,SAAA,SAAAl/B,EAAAxtD,EAAAC,EAAAC,EAAAC,GAYA,QAAAusF,GAAA5yM,GA4BA,QAAA24E,GAAArjF,EAAAzF,EAAAmS,EAAA6B,EAAAqiH,EAAAC,EAAAC,EAAAC,GACA,IAAA7kH,MAAAQ,KAAAR,MAAAqC,GACA,GAAAvO,EAAAiiG,KAAA,CACA,GAAAs7G,GAAAv9M,EAAA0M,EAAA8wM,EAAAx9M,EAAAuO,CACA,IAAA,MAAAgvM,EACA,GAAApmL,GAAAomL,EAAA7wM,GAAAyqB,GAAAqmL,EAAAjvM,GAAA,IACAkvM,EAAAz9M,EAAAzF,EAAAmS,EAAA6B,EAAAqiH,EAAAC,EAAAC,EAAAC,OACA,CACA,GAAA2sF,GAAA19M,EAAAovJ,KACApvJ,GAAA0M,EAAA1M,EAAAuO,EAAAvO,EAAAovJ,MAAA,KACAquD,EAAAz9M,EAAA09M,EAAAH,EAAAC,EAAA5sF,EAAAC,EAAAC,EAAAC,GACA0sF,EAAAz9M,EAAAzF,EAAAmS,EAAA6B,EAAAqiH,EAAAC,EAAAC,EAAAC,OAGA/wH,GAAA0M,EAAAA,EAAA1M,EAAAuO,EAAAA,EAAAvO,EAAAovJ,MAAA70J,MAGAkjN,GAAAz9M,EAAAzF,EAAAmS,EAAA6B,EAAAqiH,EAAAC,EAAAC,EAAAC,GAGA,QAAA0sF,GAAAz9M,EAAAzF,EAAAmS,EAAA6B,EAAAqiH,EAAAC,EAAAC,EAAAC,GACA,GAAA+/D,GAAA,IAAAlgE,EAAAE,GAAAigE,EAAA,IAAAlgE,EAAAE,GAAA75F,EAAAxqB,GAAAokL,EAAAziC,EAAA9/I,GAAAwiL,EAAAn1L,EAAAyyJ,GAAA,EAAAn3H,CACAl3B,GAAAiiG,MAAA,EACAjiG,EAAAA,EAAAswL,MAAA10L,KAAAoE,EAAAswL,MAAA10L,GAAAy0L,MACAn5J,EAAA05F,EAAAkgE,EAAAhgE,EAAAggE,EACAziC,EAAAx9B,EAAAkgE,EAAAhgE,EAAAggE,EACA1tG,EAAArjF,EAAAzF,EAAAmS,EAAA6B,EAAAqiH,EAAAC,EAAAC,EAAAC,GArDA,GAAAx2H,GAAAojN,EAAAC,EAAAhiN,EAAAoE,EAAA69M,EAAAC,EAAAC,EAAAC,EAAAx4M,EAAAurK,GAAArkK,GAAA4iL,EAAAve,GAAAxiK,EACA,IAAA,MAAAqiH,EACAitF,EAAAjtF,EAAAktF,EAAAjtF,EAAAktF,EAAAjtF,EAAAktF,EAAAjtF,MAKA,IAHAgtF,EAAAC,IAAAH,EAAAC,EAAAz8K,EAAAA,GACAs8K,KAAAC,KACA59M,EAAA0K,EAAA1P,OACAijN,EAAA,IAAAriN,EAAA,EAAAA,EAAAoE,IAAApE,EACArB,EAAAmQ,EAAA9O,GACArB,EAAAmS,EAAAmxM,IAAAA,EAAAtjN,EAAAmS,GACAnS,EAAAgU,EAAAuvM,IAAAA,EAAAvjN,EAAAgU,GACAhU,EAAAmS,EAAAqxM,IAAAA,EAAAxjN,EAAAmS,GACAnS,EAAAgU,EAAAyvM,IAAAA,EAAAzjN,EAAAgU,GACAovM,EAAA/8M,KAAArG,EAAAmS,GACAkxM,EAAAh9M,KAAArG,EAAAgU,OACA,KAAA3S,EAAA,EAAAA,EAAAoE,IAAApE,EAAA,CACA,GAAAonL,IAAAx9K,EAAAjL,EAAAmQ,EAAA9O,GAAAA,GAAAqnL,GAAAqM,EAAA/0L,EAAAqB,EACAonL,GAAA66B,IAAAA,EAAA76B,GACAC,EAAA66B,IAAAA,EAAA76B,GACAD,EAAA+6B,IAAAA,EAAA/6B,GACAC,EAAA+6B,IAAAA,EAAA/6B,GACA06B,EAAA/8M,KAAAoiL,GACA46B,EAAAh9M,KAAAqiL,GAGA,GAAArqG,GAAAmlI,EAAAF,EAAA/kI,EAAAklI,EAAAF,CACAllI,GAAAE,EAAAklI,EAAAF,EAAAllI,EAAAmlI,EAAAF,EAAA/kI,CA6BA,IAAAnmE,GAAA09K,IAWA,IAVA19K,EAAAjR,IAAA,SAAAnH,GACA8oF,EAAA1wE,EAAApY,GAAAiL,EAAAjL,IAAAqB,IAAA0zL,EAAA/0L,EAAAqB,GAAAiiN,EAAAC,EAAAC,EAAAC,IAEArrM,EAAAurM,MAAA,SAAAlgN,GACAuyL,GAAAvyL,EAAA2U,EAAAkrM,EAAAC,EAAAC,EAAAC,IAEArrM,EAAAtE,KAAA,SAAA+gJ,GACA,MAAAshC,IAAA/9K,EAAAy8I,EAAA,GAAAA,EAAA,GAAAyuD,EAAAC,EAAAC,EAAAC,IAEApiN,GAAA,EACA,MAAAg1H,EAAA,CACA,OAAAh1H,EAAAoE,GACAqjF,EAAA1wE,EAAAjI,EAAA9O,GAAA+hN,EAAA/hN,GAAAgiN,EAAAhiN,GAAAiiN,EAAAC,EAAAC,EAAAC,KAEApiN,MACA8O,GAAAqoI,QAAApgI,EAAAjR,IAEA,OADAi8M,GAAAC,EAAAlzM,EAAAnQ,EAAA,KACAoY,EArFA,GAAAsrM,GAAAvxM,EAAA+9K,GAAAl8K,EAAAm8K,EACA,QAAAuzB,EAAA18M,UAAAvG,SACA0R,EAAAyjL,GACA5hL,EAAA6hL,GACA,IAAA6tB,IACAltF,EAAAF,EACAC,EAAAF,EACAC,EAAAD,EAAA,GAEA0sF,EAAAl/B,KA8EAk/B,EAAA5wM,EAAA,SAAAjP,GACA,MAAA8D,WAAAvG,QAAA0R,EAAAjP,EAAA6/M,GAAA5wM,GAEA4wM,EAAA/uM,EAAA,SAAA9Q,GACA,MAAA8D,WAAAvG,QAAAuT,EAAA9Q,EAAA6/M,GAAA/uM,GAEA+uM,EAAAvvB,OAAA,SAAAtwL,GACA,MAAA8D,WAAAvG,QACA,MAAAyC,EAAAmzH,EAAAC,EAAAC,EAAAC,EAAA,MAAAH,GAAAnzH,EAAA,GAAA,GAAAozH,GAAApzH,EAAA,GAAA,GAAAqzH,GAAArzH,EAAA,GAAA,GACAszH,GAAAtzH,EAAA,GAAA,IACA6/M,GAHA,MAAA1sF,EAAA,OAAAA,EAAAC,IAAAC,EAAAC,KAKAusF,EAAA/pK,KAAA,SAAA91C,GACA,MAAA8D,WAAAvG,QACA,MAAAyC,EAAAmzH,EAAAC,EAAAC,EAAAC,EAAA,MAAAH,EAAAC,EAAA,EAAAC,GAAArzH,EAAA,GAAAszH,GAAAtzH,EAAA,IACA6/M,GAFA,MAAA1sF,EAAA,MAAAE,EAAAF,EAAAG,EAAAF,IAIAysF,IA8DAx0C,GAAAq1C,eAAAntB,GASAloB,GAAAs1C,kBAAAjtB,GAoBAroB,GAAAu1C,kBAAAhtB,GAOAvoB,GAAAw1C,kBAAAhtB,EAiCA,IAAAI,IAAA,8CAAAC,GAAA,GAAA5iL,QAAA2iL,GAAAz5K,OAAA,IACA6wJ,IAAA8U,YAAAwT,GAMAtoB,GAAA8oB,eAAA,SAAA93L,EAAAC,GACA,GAAAkR,SAAAlR,EACA,QAAA,WAAAkR,EAAA4lK,GAAAx+J,IAAAtY,EAAAuB,gBAAA,oBAAAQ,KAAA/B,GAAAi3L,GAAAM,GAAAv3L,YAAAk1K,IAAA+hB,GAAA5pL,MAAAC,QAAAtN,GAAA83L,GAAA,WAAA5mL,GAAAiB,MAAAnS,GAAAo3L,GAAAE,IAAAv3L,EAAAC,KAEA+uK,GAAAy1C,iBAAA1sB,EAWA,IAAA2sB,IAAA,WACA,MAAAv2C,IAEAw2C,GAAA31C,GAAA7lK,KACAye,OAAA88L,GACAE,KAAApsB,GACAqD,KAAA,WACA,MAAAzD,KAEAysB,MAAA,WACA,MAAAxsB,KAEA1+D,IAAA,WACA,MAAA8+D,KAEA1jB,IAAA,WACA,MAAA2jB,KAEA5iE,OAAA,WACA,MAAA6iE,KAEAmsB,QAAAlsB,GACAmsB,KAAAlsB,GACAmsB,OAAA,WACA,MAAAlsB,OAGAmsB,GAAAj2C,GAAA7lK,KACA+7M,GAAA/2C,EACAl0G,IAAAi+H,GACAitB,SAAAhtB,GACAitB,SAAA,SAAAlhN,GACA,MAAAi0L,IAAAD,GAAAh0L,MAGA8qK,IAAAm5B,KAAA,SAAA/qL,GACA,GAAAtb,GAAAsb,EAAArM,QAAA,KAAAI,EAAArP,GAAA,EAAAsb,EAAApa,MAAA,EAAAlB,GAAAsb,EAAAnX,EAAAnE,GAAA,EAAAsb,EAAApa,MAAAlB,EAAA,GAAA,IAGA,OAFAqP,GAAAwzM,GAAAp/M,IAAA4L,IAAAuzM,GACAz+M,EAAAg/M,GAAA1/M,IAAAU,IAAAkoK,EACA8pB,GAAAhyL,EAAAkL,EAAApO,MAAA,KAAAomM,GAAAvnM,KAAA6F,UAAA,OA4DAunK,GAAAq2C,eAAAtsB,GAWA/pB,GAAAs2C,eAAA/rB,GAWAvqB,GAAAu2C,eAAA/rB,GASAxqB,GAAAw2C,iBAAA9rB,GAOA1qB,GAAA7wH,UAAA,SAAAmW,GACA,GAAAnwD,GAAA6kM,GAAAj3B,gBAAA/C,GAAAwB,GAAA32H,OAAAynE,IAAA,IACA,QAAA0tD,GAAA7wH,UAAA,SAAAmW,GACA,GAAA,MAAAA,EAAA,CACAnwD,EAAAgP,aAAA,YAAAmhD,EACA,IAAAnjD,GAAAhN,EAAAg6C,UAAAsnK,QAAAC,cAEA,MAAA,IAAA/rB,IAAAxoL,EAAAA,EAAAw5L,OAAAgb,MACArxJ,IAeAqlI,GAAAxuL,UAAA6F,SAAA,WACA,MAAA,aAAAzQ,KAAA0tL,UAAA,WAAA1tL,KAAAokL,OAAA,UAAApkL,KAAA25L,KAAA,UAAA35L,KAAA+3K,MAAA,IAkBA,IAAAqtC,KACA3lN,EAAA,EACAC,EAAA,EACAS,EAAA,EACAD,EAAA,EACAiC,EAAA,EACAwB,EAAA,EAEA8qK,IAAA42C,qBAAAprB,GA+EAxrB,GAAA62C,UACA72C,GAAA62C,OAAAC,OAAA,WACA,MAAA,UAAAvkL,GAEA,IADA,GAAAmwF,MAAA5vH,GAAA,EAAAoE,EAAAq7B,EAAArgC,SACAY,EAAAoE,GAAAwrH,EAAA5qH,KAAA6zL,GAAAp5J,EAAAz/B,IACA,OAAA4vH,KAoCAs9C,GAAA62C,OAAAE,MAAA,WAEA,QAAAC,KACA,GAAAvhN,GAAAmO,EAAA8vK,EAAA5gL,EAAAyC,EAAAunM,KAAAma,KAAAC,EAAAl3C,GAAAxmH,MAAAtiD,GAAAigN,IAIA,KAHAC,KACAz/E,KACAliI,EAAA,EAAA3C,GAAA,IACAA,EAAAoE,GAAA,CAEA,IADA0M,EAAA,EAAArO,GAAA,IACAA,EAAA2B,GACA0M,GAAA+3L,EAAA7oM,GAAAyC,EAEA0hN,GAAAn/M,KAAA8L,GACAuzM,EAAAr/M,KAAAkoK,GAAAxmH,MAAAtiD,IACAzB,GAAAmO,EAgBA,IAdAyzM,GACAH,EAAAr0M,KAAA,SAAA7R,EAAAC,GACA,MAAAomN,GAAAJ,EAAAjmN,GAAAimN,EAAAhmN,MAGAqmN,GACAH,EAAAltE,QAAA,SAAAx4I,EAAAqB,GACArB,EAAAoR,KAAA,SAAA7R,EAAAC,GACA,MAAAqmN,GAAA3b,EAAA7oM,GAAA9B,GAAA2qM,EAAA7oM,GAAA7B,QAIAwE,GAAAqiL,GAAA3/J,EAAAjhB,GAAAzB,EACAmO,EAAA,EAAA9Q,GAAA,IACAA,EAAAoE,GAAA,CAEA,IADAw8K,EAAA9vK,EAAArO,GAAA,IACAA,EAAA2B,GAAA,CACA,GAAAqgN,GAAAL,EAAApkN,GAAA0kN,EAAAL,EAAAI,GAAAhiN,GAAA8M,EAAAs5L,EAAA4b,GAAAC,GAAA3vK,EAAAjkC,EAAA0jD,EAAA1jD,GAAAvB,EAAA5M,CACAqnM,GAAAya,EAAA,IAAAC,IACArrM,MAAAorM,EACAE,SAAAD,EACArvF,WAAAtgF,EACAugF,SAAA9gE,EACAziD,MAAAxC,GAGAs1H,EAAA4/E,IACAprM,MAAAorM,EACApvF,WAAAurD,EACAtrD,SAAAxkH,EACAiB,MAAAoyM,EAAAM,IAEA3zM,GAAAuU,EAGA,IADArlB,GAAA,IACAA,EAAAoE,GAEA,IADA3B,EAAAzC,EAAA,IACAyC,EAAA2B,GAAA,CACA,GAAAiY,GAAA2tL,EAAAhqM,EAAA,IAAAyC,GAAAmU,EAAAozL,EAAAvnM,EAAA,IAAAzC,IACAqc,EAAAtK,OAAA6E,EAAA7E,QACAuyM,EAAAt/M,KAAAqX,EAAAtK,MAAA6E,EAAA7E,OACAsK,OAAAzF,EACAA,OAAAyF,IAEAA,OAAAA,EACAzF,OAAAA,IAKAguM,GAAAC,IAEA,QAAAA,KACAP,EAAAv0M,KAAA,SAAA7R,EAAAC,GACA,MAAAymN,IAAA1mN,EAAAme,OAAAtK,MAAA7T,EAAA0Y,OAAA7E,OAAA,GAAA5T,EAAAke,OAAAtK,MAAA5T,EAAAyY,OAAA7E,OAAA,KArEA,GAAAuyM,GAAAz/E,EAAAgkE,EAAAzkM,EAAAmgN,EAAAC,EAAAI,EAAAX,KAAA5+L,EAAA,CA8GA,OAtCA4+L,GAAApb,OAAA,SAAA/3L,GACA,MAAAnL,WAAAvG,QACAgF,GAAAykM,EAAA/3L,IAAA+3L,EAAAzpM,OACAklN,EAAAz/E,EAAA,KACAo/E,GAHApb,GAKAob,EAAA5+L,QAAA,SAAAvU,GACA,MAAAnL,WAAAvG,QACAimB,EAAAvU,EACAwzM,EAAAz/E,EAAA,KACAo/E,GAHA5+L,GAKA4+L,EAAAM,WAAA,SAAAzzM,GACA,MAAAnL,WAAAvG,QACAmlN,EAAAzzM,EACAwzM,EAAAz/E,EAAA,KACAo/E,GAHAM,GAKAN,EAAAO,cAAA,SAAA1zM,GACA,MAAAnL,WAAAvG,QACAolN,EAAA1zM,EACAwzM,EAAA,KACAL,GAHAO,GAKAP,EAAAW,WAAA,SAAA9zM,GACA,MAAAnL,WAAAvG,QACAwlN,EAAA9zM,EACAwzM,GAAAO,IACAZ,GAHAW,GAKAX,EAAAK,OAAA,WAEA,MADAA,IAAAJ,IACAI,GAEAL,EAAAp/E,OAAA,WAEA,MADAA,IAAAq/E,IACAr/E,GAEAo/E,GAEA/2C,GAAA62C,OAAAjlK,MAAA,WAEA,QAAAgmK,GAAArtK,GACA,MAAA,UAAAsiJ,EAAA/kE,EAAAnzH,EAAAqzH,GACA,GAAA6kE,EAAAvmC,QAAA/7G,EAAA,CACA,GAAAulC,GAAA+8G,EAAA3Y,GAAA3pI,EAAA3mC,EAAAosE,EAAA68G,EAAA1Y,GAAA5pI,EAAA9kC,EAAAoyM,EAAA7vF,EAAAF,EAAAgwF,EAAAhoI,EAAAA,EAAAE,EAAAA,CACA,IAAA6nI,EAAAA,EAAAE,EAAAD,EAAA,CACA,GAAAA,EAAAE,EAAA,CACA,GAAAviN,GAAAo3L,EAAAG,OAAA8qB,CACAvtK,GAAAkiJ,IAAA38G,EAAAr6E,EACA80C,EAAAmiJ,IAAA18G,EAAAv6E,EAEA,OAAA,EAEA,GAAAo3L,EAAAvmC,OAAAwxD,GAAAA,EAAAE,EAAA,CACA,GAAAviN,GAAAo3L,EAAAI,YAAA6qB,CACAvtK,GAAAkiJ,IAAA38G,EAAAr6E,EACA80C,EAAAmiJ,IAAA18G,EAAAv6E,GAGA,OAAAo3L,EAAAG,QAgMA,QAAAirB,GAAAxmN,GACAA,EAAAg7L,GAAAzsB,GAAArnK,MAAAiL,EAAAnS,EAAAi7L,GAAA1sB,GAAArnK,MAAA8M,EACAmsC,EAAAsmK,SArNA,GAAAl4M,GAAA89L,EAAAhR,EAAAqrB,EAAAC,EAAArrB,EAAAn7I,KAAAj5C,EAAAqnK,GAAAzvJ,SAAA,QAAA,OAAA,OAAAk6B,GAAA,EAAA,GAAA4tK,EAAA,GAAAC,EAAAC,GAAAC,EAAAC,GAAAzrB,GAAA,GAAAgrB,EAAAU,GAAAC,EAAA,GAAAZ,EAAA,IAAAvwB,KAAAj1J,IAuNA,OAjMAqf,GAAAh1C,KAAA,WACA,IAAAkwL,GAAA,KAAA,KAMA,MALA9sL,GAAA,KACArH,EAAA5C,KACA3D,KAAA,MACA06L,MAAAA,EAAA,KAEA,CAEA,IAAAjzL,GAAA/G,EAAAqE,EAAA2C,EAAAqI,EAAApL,EAAAtB,EAAAmO,EAAA6B,EAAAvO,EAAAswL,EAAAt1L,OAAA+E,EAAAs7B,EAAArgC,MACA,KAAAY,EAAA,EAAAA,EAAAmE,IAAAnE,EACAqE,EAAAo7B,EAAAz/B,GACAgH,EAAA3C,EAAAgY,OACAhN,EAAAhL,EAAAuS,OACA9F,EAAAzB,EAAAyB,EAAA9J,EAAA8J,EACA6B,EAAAtD,EAAAsD,EAAA3L,EAAA2L,GACA1O,EAAA6M,EAAAA,EAAA6B,EAAAA,KACA1O,EAAA+1L,EAAAsrB,EAAAtlN,KAAAiE,EAAA4E,KAAA64J,KAAAz9J,IAAAohN,EAAArlN,IAAAiE,EACA6M,GAAA7M,EACA0O,GAAA1O,EACAoL,EAAAyB,GAAAA,GAAAnO,EAAAqE,EAAA8+M,OAAAz2M,EAAAy2M,OAAA9+M,EAAA8+M,QAAA9+M,EAAA8+M,OAAAz2M,EAAAy2M,QAAA,IACAz2M,EAAAsD,GAAAA,EAAAhQ,EACAqE,EAAA8J,GAAAA,GAAAnO,EAAA,EAAAA,GACAqE,EAAA2L,GAAAA,EAAAhQ,EAGA,KAAAA,EAAAq3L,EAAA6rB,KACA/0M,EAAA6mC,EAAA,GAAA,EACAhlC,EAAAglC,EAAA,GAAA,EACA33C,GAAA,EACA2C,GAAA,OAAA3C,EAAAoE,GACAC,EAAAqwL,EAAA10L,GACAqE,EAAAyM,IAAAA,EAAAzM,EAAAyM,GAAAnO;AACA0B,EAAAsO,IAAAA,EAAAtO,EAAAsO,GAAAhQ,CAGA,IAAAu3L,EAGA,IAFAJ,GAAA/yL,EAAAmmK,GAAAyzC,KAAAe,SAAAhtB,GAAAsF,EAAAC,GACAj6L,GAAA,IACAA,EAAAoE,IACAC,EAAAqwL,EAAA10L,IAAAw5L,OACAzyL,EAAAu7M,MAAAwC,EAAAzgN,GAKA,KADArE,GAAA,IACAA,EAAAoE,GACAC,EAAAqwL,EAAA10L,GACAqE,EAAAm1L,OACAn1L,EAAAyM,EAAAzM,EAAAs1L,GACAt1L,EAAAsO,EAAAtO,EAAAu1L,KAEAv1L,EAAAyM,IAAAzM,EAAAs1L,IAAAt1L,EAAAs1L,GAAAt1L,EAAAyM,IAAAy0M,EACAlhN,EAAAsO,IAAAtO,EAAAu1L,IAAAv1L,EAAAu1L,GAAAv1L,EAAAsO,IAAA4yM,EAGA1/M,GAAAiE,MACAxK,KAAA,OACA06L,MAAAA,KAGAl7I,EAAA41I,MAAA,SAAA5jL,GACA,MAAAnL,WAAAvG,QACAs1L,EAAA5jL,EACAguC,GAFA41I,GAIA51I,EAAArf,MAAA,SAAA3uB,GACA,MAAAnL,WAAAvG,QACAqgC,EAAA3uB,EACAguC,GAFArf,GAIAqf,EAAAnH,KAAA,SAAA7mC,GACA,MAAAnL,WAAAvG,QACAu4C,EAAA7mC,EACAguC,GAFAnH,GAIAmH,EAAA0mK,aAAA,SAAA10M,GACA,MAAAnL,WAAAvG,QACAomN,EAAA,kBAAA10M,GAAAA,GAAAA,EACAguC,GAFA0mK,GAIA1mK,EAAA+uC,SAAA/uC,EAAA0mK,aACA1mK,EAAA4mK,aAAA,SAAA50M,GACA,MAAAnL,WAAAvG,QACAsmN,EAAA,kBAAA50M,GAAAA,GAAAA,EACAguC,GAFA4mK,GAIA5mK,EAAAymK,SAAA,SAAAz0M,GACA,MAAAnL,WAAAvG,QACAmmN,GAAAz0M,EACAguC,GAFAymK,GAIAzmK,EAAAo7I,OAAA,SAAAppL,GACA,MAAAnL,WAAAvG,QACA86L,EAAA,kBAAAppL,GAAAA,GAAAA,EACAguC,GAFAo7I,GAIAp7I,EAAAinK,eAAA,SAAAj1M,GACA,MAAAnL,WAAAvG,QACA8lN,EAAAp0M,EAAAA,EACAguC,GAFAj2C,KAAA64J,KAAAwjD,IAIApmK,EAAA+mK,QAAA,SAAA/0M,GACA,MAAAnL,WAAAvG,QACAymN,GAAA/0M,EACAguC,GAFA+mK,GAIA/mK,EAAAknK,MAAA,SAAAl1M,GACA,MAAAnL,WAAAvG,QACA6lN,EAAAn0M,EAAAA,EACAguC,GAFAj2C,KAAA64J,KAAAujD,IAIAnmK,EAAAk7I,MAAA,SAAAlpL,GACA,MAAAnL,WAAAvG,QACA0R,GAAAA,EACAkpL,EACAlpL,EAAA,EACAkpL,EAAAlpL,GAEA5D,EAAAtO,EAAA,KAAAsO,EAAAmC,EAAA08E,IAAA7+E,EAAA,KACArH,EAAA5C,KACA3D,KAAA,MACA06L,MAAAA,EAAA,KAGAlpL,EAAA,IACAjL,EAAA7C,OACA1D,KAAA,QACA06L,MAAAA,EAAAlpL,IAEA5D,EAAA0oK,GAAA92H,EAAAh1C,OAEAg1C,GAnBAk7I,GAqBAl7I,EAAA97C,MAAA,WA0BA,QAAA8gB,GAAA2V,EAAAke,GACA,IAAAsuK,EAAA,CAEA,IADAA,EAAA,GAAAz6M,OAAApH,GACA3B,EAAA,EAAAA,EAAA2B,IAAA3B,EACAwjN,EAAAxjN,KAEA,KAAAA,EAAA,EAAAA,EAAA0B,IAAA1B,EAAA,CACA,GAAA4B,GAAAo7B,EAAAh9B,EACAwjN,GAAA5hN,EAAAgY,OAAAhD,OAAArU,KAAAX,EAAAuS,QACAqvM,EAAA5hN,EAAAuS,OAAAyC,OAAArU,KAAAX,EAAAgY,SAIA,IADA,GAAAvL,GAAAo1M,EAAAD,EAAAjmN,GAAAyC,GAAA,EAAAwB,EAAAiiN,EAAA9mN,SACAqD,EAAAwB,GAAA,IAAAqM,MAAAQ,EAAAo1M,EAAAzjN,GAAAg3B,IAAA,MAAA3oB,EACA,OAAAjI,MAAAqH,SAAAynC,EAvCA,GAAA33C,GAAAimN,EAAA5hN,EAAAD,EAAAswL,EAAAt1L,OAAA+E,EAAAs7B,EAAArgC,OAAAD,EAAAw4C,EAAA,GAAAr1C,EAAAq1C,EAAA,EACA,KAAA33C,EAAA,EAAAA,EAAAoE,IAAApE,GACAqE,EAAAqwL,EAAA10L,IAAAqZ,MAAArZ,EACAqE,EAAAyhN,OAAA,CAEA,KAAA9lN,EAAA,EAAAA,EAAAmE,IAAAnE,EACAqE,EAAAo7B,EAAAz/B,GACA,gBAAAqE,GAAAgY,SAAAhY,EAAAgY,OAAAq4K,EAAArwL,EAAAgY,SACA,gBAAAhY,GAAAuS,SAAAvS,EAAAuS,OAAA89K,EAAArwL,EAAAuS,WACAvS,EAAAgY,OAAAypM,SACAzhN,EAAAuS,OAAAkvM,MAEA,KAAA9lN,EAAA,EAAAA,EAAAoE,IAAApE,EACAqE,EAAAqwL,EAAA10L,GACAsQ,MAAAjM,EAAAyM,KAAAzM,EAAAyM,EAAAgT,EAAA,IAAA3kB,IACAmR,MAAAjM,EAAAsO,KAAAtO,EAAAsO,EAAAmR,EAAA,IAAAxhB,IACAgO,MAAAjM,EAAAs1L,MAAAt1L,EAAAs1L,GAAAt1L,EAAAyM,GACAR,MAAAjM,EAAAu1L,MAAAv1L,EAAAu1L,GAAAv1L,EAAAsO,EAGA,IADA0yM,KACA,kBAAAG,GAAA,IAAAxlN,EAAA,EAAAA,EAAAmE,IAAAnE,EAAAqlN,EAAArlN,IAAAwlN,EAAA1lN,KAAArB,KAAAghC,EAAAz/B,GAAAA,OAAA,KAAAA,EAAA,EAAAA,EAAAmE,IAAAnE,EAAAqlN,EAAArlN,GAAAwlN,CAEA,IADAF,KACA,kBAAAI,GAAA,IAAA1lN,EAAA,EAAAA,EAAAmE,IAAAnE,EAAAslN,EAAAtlN,IAAA0lN,EAAA5lN,KAAArB,KAAAghC,EAAAz/B,GAAAA,OAAA,KAAAA,EAAA,EAAAA,EAAAmE,IAAAnE,EAAAslN,EAAAtlN,GAAA0lN,CAEA,IADAzrB,KACA,kBAAAC,GAAA,IAAAl6L,EAAA,EAAAA,EAAAoE,IAAApE,EAAAi6L,EAAAj6L,IAAAk6L,EAAAp6L,KAAArB,KAAAi2L,EAAA10L,GAAAA,OAAA,KAAAA,EAAA,EAAAA,EAAAoE,IAAApE,EAAAi6L,EAAAj6L,GAAAk6L,CAiBA,OAAAp7I,GAAAsmK,UAEAtmK,EAAAsmK,OAAA,WACA,MAAAtmK,GAAAk7I,MAAA,KAEAl7I,EAAAjyC,KAAA,WACA,MAAAiyC,GAAAk7I,MAAA,IAEAl7I,EAAAksJ,KAAA,WAEA,MADAA,KAAAA,EAAA99B,GAAAs8B,SAAAwB,OAAAj8J,OAAAs9H,GAAAlqJ,GAAA,kBAAAo3K,IAAAp3K,GAAA,aAAAgjM,GAAAhjM,GAAA,gBAAAs3K,KACA9zL,UAAAvG,WACAX,MAAA0jB,GAAA,kBAAAu3K,IAAAv3K,GAAA,iBAAA03K,IAAA/5L,KAAAkrM,GADAA,GAOA99B,GAAAwI,OAAA52H,EAAAj5C,EAAA,MA0CA,IAAA4/M,IAAA,GAAAE,GAAA,EAAAC,GAAAngL,EAAAA,CACAynI,IAAA62C,OAAA1pB,UAAA,WAEA,QAAAA,GAAAtjL,GACA,GAAA0gC,GAAAj8B,GAAAzE,GAAA29K,IAEA,KADA39K,EAAAomH,MAAA,EACA,OAAA1lF,EAAAj8B,EAAAzI,QAEA,GADA2hL,EAAA1vL,KAAAyyC,IACA0uK,EAAAjtM,EAAApZ,KAAAu6L,EAAA5iJ,EAAAA,EAAA0lF,UAAA/4H,EAAA+hN,EAAA/mN,QAAA,CAEA,IADA,GAAAgF,GAAA+hN,EAAAlxL,IACA7wB,GAAA,GACAoX,EAAAxW,KAAAiwB,EAAAkxL,EAAA/hN,IACA6wB,EAAA1d,OAAAkgC,EACAxiB,EAAAkoG,MAAA1lF,EAAA0lF,MAAA,CAEAprH,KAAA0lC,EAAA1lC,MAAA,GACA0lC,EAAAv+B,SAAAitM,MAEAp0M,KAAA0lC,EAAA1lC,OAAAA,EAAAjS,KAAAu6L,EAAA5iJ,EAAAA,EAAA0lF,QAAA,SACA1lF,GAAAv+B,QAQA,OALAshL,IAAAzjL,EAAA,SAAA0gC,GACA,GAAA0uK,GAAA5uM,CACAxH,KAAAo2M,EAAA1uK,EAAAv+B,WAAAitM,EAAAp2M,KAAAA,GACAgC,IAAAwF,EAAAkgC,EAAAlgC,UAAAA,EAAAxF,OAAA0lC,EAAA1lC,SAEA2iL,EAzBA,GAAA3kL,GAAA6qL,GAAA1hL,EAAAwhL,GAAA3oL,EAAA4oL,EAuDA,OA5BAN,GAAAtqL,KAAA,SAAAe,GACA,MAAAnL,WAAAvG,QACA2Q,EAAAe,EACAupL,GAFAtqL,GAIAsqL,EAAAnhL,SAAA,SAAApI,GACA,MAAAnL,WAAAvG,QACA8Z,EAAApI,EACAupL,GAFAnhL,GAIAmhL,EAAAtoL,MAAA,SAAAjB,GACA,MAAAnL,WAAAvG,QACA2S,EAAAjB,EACAupL,GAFAtoL,GAIAsoL,EAAA+rB,QAAA,SAAArvM,GAWA,MAVAhF,KACAwoL,GAAAxjL,EAAA,SAAA0gC,GACAA,EAAAv+B,WAAAu+B,EAAA1lC,MAAA,KAEAyoL,GAAAzjL,EAAA,SAAA0gC,GACA,GAAAlgC,EACAkgC,GAAAv+B,WAAAu+B,EAAA1lC,OAAAA,EAAAjS,KAAAu6L,EAAA5iJ,EAAAA,EAAA0lF,QAAA,IACA5lH,EAAAkgC,EAAAlgC,UAAAA,EAAAxF,OAAA0lC,EAAA1lC,UAGAgF,GAEAsjL,GAkDAntB,GAAA62C,OAAAsC,UAAA,WAEA,QAAAviM,GAAA2zB,EAAA3mC,EAAAksE,EAAAE,GACA,GAAAhkE,GAAAu+B,EAAAv+B,QAKA,IAJAu+B,EAAA3mC,EAAAA,EACA2mC,EAAA9kC,EAAA8kC,EAAA0lF,MAAAjgD,EACAzlC,EAAAulC,GAAAA,EACAvlC,EAAAylC,GAAAA,EACAhkE,IAAA9U,EAAA8U,EAAA9Z,QAAA,CACA,GAAAgF,GAAAxF,EAAAD,EAAAqB,GAAA,CAEA,KADAg9E,EAAAvlC,EAAA1lC,MAAAirE,EAAAvlC,EAAA1lC,MAAA,IACA/R,EAAAoE,GACA0f,EAAAllB,EAAAsa,EAAAlZ,GAAA8Q,EAAAnS,EAAAC,EAAAmT,MAAAirE,EAAAE,GACApsE,GAAAnS,GAIA,QAAAw+H,GAAA1lF,GACA,GAAAv+B,GAAAu+B,EAAAv+B,SAAAva,EAAA,CACA,IAAAua,IAAA9U,EAAA8U,EAAA9Z,QAEA,IADA,GAAAgF,GAAApE,GAAA,IACAA,EAAAoE,GAAAzF,EAAAkK,KAAAC,IAAAnK,EAAAw+H,EAAAjkH,EAAAlZ,IAEA,OAAA,GAAArB,EAEA,QAAA0nN,GAAA1nN,EAAAqB,GACA,GAAA00L,GAAA2F,EAAAv6L,KAAArB,KAAAE,EAAAqB,EAEA,OADA8jB,GAAA4wK,EAAA,GAAA,EAAA/8I,EAAA,GAAAA,EAAA,GAAAwlF,EAAAu3D,EAAA,KACAA,EA3BA,GAAA2F,GAAAntB,GAAA62C,OAAA1pB,YAAA1iJ,GAAA,EAAA,EAkCA,OALA0uK,GAAA1uK,KAAA,SAAA7mC,GACA,MAAAnL,WAAAvG,QACAu4C,EAAA7mC,EACAu1M,GAFA1uK,GAIAyiJ,GAAAisB,EAAAhsB,IAEAntB,GAAA62C,OAAAnjG,IAAA,WAEA,QAAAA,GAAA9xG,GACA,GAEAS,GAFAnL,EAAA0K,EAAA1P,OAAA88C,EAAAptC,EAAAzH,IAAA,SAAA1I,EAAAqB,GACA,OAAA+R,EAAAjS,KAAA8gH,EAAAjiH,EAAAqB,KACA9B,IAAA,kBAAAm3H,GAAAA,EAAAp0H,MAAAxC,KAAAkH,WAAA0vH,GAAA3xH,GAAA,kBAAA4xH,GAAAA,EAAAr0H,MAAAxC,KAAAkH,WAAA2vH,GAAAp3H,EAAAQ,EAAAmK,KAAAkvD,IAAAlvD,KAAA0yB,IAAA73B,GAAAU,IAAA,kBAAAu9L,GAAAA,EAAA1gM,MAAAxC,KAAAkH,WAAAg8L,IAAAr9L,EAAA5F,GAAAgF,EAAA,GAAA,EAAA,GAAAu8G,EAAAitD,GAAAjtD,IAAA/jE,GAAAv5C,EAAAs9G,GAAAv8G,EAAAU,EAAAE,GAAA27G,EAAA,EAAA5mG,EAAA6zJ,GAAAxmH,MAAAtiD,GAAAkiN,IAeA,OAdA,OAAAv2M,GAAAsJ,EAAAtJ,KAAAA,IAAAw2M,GAAA,SAAAvmN,EAAAyC,GACA,MAAAy5C,GAAAz5C,GAAAy5C,EAAAl8C,IACA,SAAAA,EAAAyC,GACA,MAAAsN,GAAAjB,EAAA9O,GAAA8O,EAAArM,MAEA4W,EAAA89H,QAAA,SAAAn3I,GACAsmN,EAAAtmN,IACA8O,KAAAA,EAAA9O,GACA+R,MAAAxC,EAAA2sC,EAAAl8C,GACAq1H,WAAAn3H,EACAo3H,SAAAp3H,GAAAqR,EAAA5M,EAAA2B,EACAq9L,SAAAjjM,KAGA4nN,EAnBA,GAAAv0M,GAAAk5E,OAAAl7E,EAAAw2M,GAAAlxF,EAAA,EAAAC,EAAA0vD,GAAA2c,EAAA,CA8CA,OAzBA/gF,GAAA7uG,MAAA,SAAAlQ,GACA,MAAA8D,WAAAvG,QACA2S,EAAAlQ,EACA++G,GAFA7uG,GAIA6uG,EAAA7wG,KAAA,SAAAlO,GACA,MAAA8D,WAAAvG,QACA2Q,EAAAlO,EACA++G,GAFA7wG,GAIA6wG,EAAAyU,WAAA,SAAAxzH,GACA,MAAA8D,WAAAvG,QACAi2H,EAAAxzH,EACA++G,GAFAyU,GAIAzU,EAAA0U,SAAA,SAAAzzH,GACA,MAAA8D,WAAAvG,QACAk2H,EAAAzzH,EACA++G,GAFA0U,GAIA1U,EAAA+gF,SAAA,SAAA9/L,GACA,MAAA8D,WAAAvG,QACAuiM,EAAA9/L,EACA++G,GAFA+gF,GAIA/gF,EAEA,IAAA2lG,MACAr5C,IAAA62C,OAAAvoM,MAAA,WAEA,QAAAA,GAAA1M,EAAAuK,GACA,KAAAjV,EAAA0K,EAAA1P,QAAA,MAAA0P,EACA,IAAA03M,GAAA13M,EAAAzH,IAAA,SAAA1I,EAAAqB,GACA,MAAAk8C,GAAAp8C,KAAA0b,EAAA7c,EAAAqB,KAEAwiL,EAAAgkC,EAAAn/M,IAAA,SAAA1I,GACA,MAAAA,GAAA0I,IAAA,SAAAkI,EAAAvP,GACA,OAAA8Q,EAAAhR,KAAA0b,EAAAjM,EAAAvP,GAAA2S,EAAA7S,KAAA0b,EAAAjM,EAAAvP,QAGAymN,EAAAhiM,EAAA3kB,KAAA0b,EAAAgnK,EAAAnpK,EACAmtM,GAAAt5C,GAAAu7B,QAAA+d,EAAAC,GACAjkC,EAAAtV,GAAAu7B,QAAAjmB,EAAAikC,EACA,IACAriN,GAAApE,EAAAyC,EAAA4B,EADA65B,EAAAxO,EAAA5vB,KAAA0b,EAAAgnK,EAAAnpK,GACAlV,EAAAqiN,EAAA,GAAApnN,MACA,KAAAqD,EAAA,EAAAA,EAAA0B,IAAA1B,EAEA,IADA01D,EAAAr4D,KAAA0b,EAAAgrM,EAAA,GAAA/jN,GAAA4B,EAAA65B,EAAAz7B,GAAA+/K,EAAA,GAAA//K,GAAA,IACAzC,EAAA,EAAAA,EAAAoE,IAAApE,EACAm4D,EAAAr4D,KAAA0b,EAAAgrM,EAAAxmN,GAAAyC,GAAA4B,GAAAm+K,EAAAxiL,EAAA,GAAAyC,GAAA,GAAA+/K,EAAAxiL,GAAAyC,GAAA,GAGA,OAAAqM,GAtBA,GAAAotC,GAAAmwH,EAAA5nJ,EAAAu2K,GAAAtrK,EAAAurK,GAAA9iI,EAAA4iI,GAAAjqL,EAAA+pL,GAAAloL,EAAAmoL,EAsDA,OA9BAt/K,GAAA0gC,OAAA,SAAAprC,GACA,MAAAnL,WAAAvG,QACA88C,EAAAprC,EACA0K,GAFA0gC,GAIA1gC,EAAAiJ,MAAA,SAAA3T,GACA,MAAAnL,WAAAvG,QACAqlB,EAAA,kBAAA3T,GAAAA,EAAA41M,GAAAjjN,IAAAqN,IAAAkqL,GACAx/K,GAFAiJ,GAIAjJ,EAAAkU,OAAA,SAAA5e,GACA,MAAAnL,WAAAvG,QACAswB,EAAA,kBAAA5e,GAAAA,EAAA61M,GAAAljN,IAAAqN,IAAAmqL,GACAz/K,GAFAkU,GAIAlU,EAAA1K,EAAA,SAAA8B,GACA,MAAAjN,WAAAvG,QACA0R,EAAA8B,EACA4I,GAFA1K,GAIA0K,EAAA7I,EAAA,SAAAC,GACA,MAAAjN,WAAAvG,QACAuT,EAAAC,EACA4I,GAFA7I,GAIA6I,EAAA28C,IAAA,SAAAvlD,GACA,MAAAjN,WAAAvG,QACA+4D,EAAAvlD,EACA4I,GAFA28C,GAIA38C,EAYA,IAAAkrM,IAAAx5C,GAAA7lK,KACAu/M,aAAA,SAAA93M,GACA,GAAA9O,GAAAyC,EAAA2B,EAAA0K,EAAA1P,OAAA0J,EAAAgG,EAAAzH,IAAA6zL,IAAA2rB,EAAA/3M,EAAAzH,IAAA8zL,IAAA9hL,EAAA6zJ,GAAAxmH,MAAAtiD,GAAA2L,KAAA,SAAA7R,EAAAC,GACA,MAAA2K,GAAA5K,GAAA4K,EAAA3K,KACAoW,EAAA,EAAAwoB,EAAA,EAAA+pL,KAAAC,IACA,KAAA/mN,EAAA,EAAAA,EAAAoE,IAAApE,EACAyC,EAAA4W,EAAArZ,GACAuU,EAAAwoB,GACAxoB,GAAAsyM,EAAApkN,GACAqkN,EAAA9hN,KAAAvC,KAEAs6B,GAAA8pL,EAAApkN,GACAskN,EAAA/hN,KAAAvC,GAGA,OAAAskN,GAAA/sM,UAAAxP,OAAAs8M,IAEA9sM,QAAA,SAAAlL,GACA,MAAAo+J,IAAAxmH,MAAA53C,EAAA1P,QAAA4a,WAEAquH,QAAA2yD,KAEA2rB,GAAAz5C,GAAA7lK,KACA2/M,WAAA,SAAAl4M,GACA,GAAA9O,GAAAyC,EAAA4B,EAAAD,EAAA0K,EAAA1P,OAAA+E,EAAA2K,EAAA,GAAA1P,OAAAynN,KAAA/9M,EAAA,EAAA43K,IACA,KAAAj+K,EAAA,EAAAA,EAAA0B,IAAA1B,EAAA,CACA,IAAAzC,EAAA,EAAAqE,EAAA,EAAArE,EAAAoE,EAAApE,IAAAqE,GAAAyK,EAAA9O,GAAAyC,GAAA,EACA4B,GAAAyE,IAAAA,EAAAzE,GACAwiN,EAAA7hN,KAAAX,GAEA,IAAA5B,EAAA,EAAAA,EAAA0B,IAAA1B,EACAi+K,EAAAj+K,IAAAqG,EAAA+9M,EAAApkN,IAAA,CAEA,OAAAi+K,IAEAumC,OAAA,SAAAn4M,GACA,GAAA9O,GAAAyC,EAAAE,EAAA85L,EAAAC,EAAAwqB,EAAAlqI,EAAA34E,EAAA8iN,EAAA/iN,EAAA0K,EAAA1P,OAAA0R,EAAAhC,EAAA,GAAA3K,EAAA2M,EAAA1R,OAAAshL,IAEA,KADAA,EAAA,GAAAr8K,EAAA8iN,EAAA,EACA1kN,EAAA,EAAAA,EAAA0B,IAAA1B,EAAA,CACA,IAAAzC,EAAA,EAAAy8L,EAAA,EAAAz8L,EAAAoE,IAAApE,EAAAy8L,GAAA3tL,EAAA9O,GAAAyC,GAAA,EACA,KAAAzC,EAAA,EAAA08L,EAAA,EAAA1/G,EAAAlsE,EAAArO,GAAA,GAAAqO,EAAArO,EAAA,GAAA,GAAAzC,EAAAoE,IAAApE,EAAA,CACA,IAAA2C,EAAA,EAAAukN,GAAAp4M,EAAA9O,GAAAyC,GAAA,GAAAqM,EAAA9O,GAAAyC,EAAA,GAAA,KAAA,EAAAu6E,GAAAr6E,EAAA3C,IAAA2C,EACAukN,IAAAp4M,EAAAnM,GAAAF,GAAA,GAAAqM,EAAAnM,GAAAF,EAAA,GAAA,IAAAu6E,CAEA0/G,IAAAwqB,EAAAp4M,EAAA9O,GAAAyC,GAAA,GAEAi+K,EAAAj+K,GAAA4B,GAAAo4L,EAAAC,EAAAD,EAAAz/G,EAAA,EACA34E,EAAA8iN,IAAAA,EAAA9iN,GAEA,IAAA5B,EAAA,EAAAA,EAAA0B,IAAA1B,EAAAi+K,EAAAj+K,IAAA0kN,CACA,OAAAzmC,IAEA/0K,OAAA,SAAAmD,GACA,GAAA9O,GAAAyC,EAAA4B,EAAAD,EAAA0K,EAAA1P,OAAA+E,EAAA2K,EAAA,GAAA1P,OAAAuD,EAAA,EAAAyB,EAAAs8K,IACA,KAAAj+K,EAAA,EAAAA,EAAA0B,IAAA1B,EAAA,CACA,IAAAzC,EAAA,EAAAqE,EAAA,EAAArE,EAAAoE,EAAApE,IAAAqE,GAAAyK,EAAA9O,GAAAyC,GAAA,EACA,IAAA4B,EAAA,IAAArE,EAAA,EAAAA,EAAAoE,EAAApE,IAAA8O,EAAA9O,GAAAyC,GAAA,IAAA4B,MAAA,KAAArE,EAAA,EAAAA,EAAAoE,EAAApE,IAAA8O,EAAA9O,GAAAyC,GAAA,GAAAE,EAEA,IAAAF,EAAA,EAAAA,EAAA0B,IAAA1B,EAAAi+K,EAAAj+K,GAAA,CACA,OAAAi+K,IAEA0mC,KAAAnsB,IA0BA/tB,IAAA62C,OAAAsD,UAAA,WAEA,QAAAA,GAAAv4M,EAAA9O,GAEA,IADA,GAAAsnN,GAAAx2M,EAAAy2M,KAAArrK,EAAAptC,EAAAzH,IAAAmgN,EAAA/oN,MAAAioD,EAAAw5I,EAAApgM,KAAArB,KAAAy9C,EAAAl8C,GAAA4gM,EAAA6mB,EAAA3nN,KAAArB,KAAAioD,EAAAxK,EAAAl8C,GAAAA,GAAA,EAAAoE,EAAA83C,EAAA98C,OAAA+E,EAAAy8L,EAAAxhM,OAAA,EAAAuD,EAAA+kN,EAAA,EAAA,EAAAtjN,IACApE,EAAAmE,GACAmjN,EAAAC,EAAAvnN,MACAsnN,EAAAtqI,GAAA4jH,EAAA5gM,EAAA,IAAAsnN,EAAAx2M,EAAA8vL,EAAA5gM,IACAsnN,EAAA30M,EAAA,CAEA,IAAAxO,EAAA,EAEA,IADAnE,GAAA,IACAA,EAAAoE,GACA0M,EAAAorC,EAAAl8C,GACA8Q,GAAA41C,EAAA,IAAA51C,GAAA41C,EAAA,KACA4gK,EAAAC,EAAAr6C,GAAAuxB,OAAAmC,EAAA9vL,EAAA,EAAA3M,GAAA,GACAmjN,EAAA30M,GAAAhQ,EACA2kN,EAAAtiN,KAAA8J,EAAA9O,IAIA,OAAAunN,GAnBA,GAAAG,IAAA,EAAAF,EAAAv8H,OAAAi1G,EAAAzE,GAAAgsB,EAAAnsB,EA2CA,OAtBA+rB,GAAAt1M,MAAA,SAAAjB,GACA,MAAAnL,WAAAvG,QACAooN,EAAA12M,EACAu2M,GAFAG,GAIAH,EAAA3gK,MAAA,SAAA51C,GACA,MAAAnL,WAAAvG,QACA8gM,EAAA/qB,GAAArkK,GACAu2M,GAFAnnB,GAIAmnB,EAAAE,KAAA,SAAAz2M,GACA,MAAAnL,WAAAvG,QACAqoN,EAAA,gBAAA32M,GAAA,SAAA41C,GACA,MAAA60I,IAAA70I,EAAA51C,IACAqkK,GAAArkK,GACAu2M,GAJAI,GAMAJ,EAAAK,UAAA,SAAA52M,GACA,MAAAnL,WAAAvG,QACAsoN,IAAA52M,EACAu2M,GAFAK,GAIAL,GAaAn6C,GAAA62C,OAAA4D,KAAA,WAEA,QAAAA,GAAAhpN,EAAAqB,GACA,GAAA00L,GAAA2F,EAAAv6L,KAAArB,KAAAE,EAAAqB,GAAA+W,EAAA29K,EAAA,GAAAv1L,EAAAw4C,EAAA,GAAAr1C,EAAAq1C,EAAA,GAAAt4C,EAAA,MAAAw0H,EAAAhrH,KAAA64J,KAAA,kBAAA7tC,GAAAA,EAAA,WACA,MAAAA,GAOA,IALA98G,EAAAjG,EAAAiG,EAAApE,EAAA,EACA6nL,GAAAzjL,EAAA,SAAApY,GACAA,EAAAU,GAAAA,EAAAV,EAAAoT,SAEAyoL,GAAAzjL,EAAAklL,IACA52K,EAAA,CACA,GAAA22K,GAAA32K,GAAAwuG,EAAA,EAAAhrH,KAAAC,IAAA,EAAAiO,EAAA1X,EAAAF,EAAA,EAAA4X,EAAA1X,EAAAiD,IAAA,CACAk4L,IAAAzjL,EAAA,SAAApY,GACAA,EAAAU,GAAA28L,IAEAxB,GAAAzjL,EAAAklL,IACAzB,GAAAzjL,EAAA,SAAApY,GACAA,EAAAU,GAAA28L,IAIA,MADAY,IAAA7lL,EAAA5X,EAAA,EAAAmD,EAAA,EAAAuxH,EAAA,EAAA,EAAAhrH,KAAAC,IAAA,EAAAiO,EAAA1X,EAAAF,EAAA,EAAA4X,EAAA1X,EAAAiD,IACAoyL,EArBA,GAAA7gE,GAAAwmE,EAAAntB,GAAA62C,OAAA1pB,YAAAtqL,KAAA2rL,IAAAr2K,EAAA,EAAAsyB,GAAA,EAAA,EAsCA,OAfAgwK,GAAAhwK,KAAA,SAAA91C,GACA,MAAA8D,WAAAvG,QACAu4C,EAAA91C,EACA8lN,GAFAhwK,GAIAgwK,EAAA9zF,OAAA,SAAAhyH,GACA,MAAA8D,WAAAvG,QACAy0H,EAAA,MAAAhyH,GAAA,kBAAAA,GAAAA,GAAAA,EACA8lN,GAFA9zF,GAIA8zF,EAAAtiM,QAAA,SAAAxjB,GACA,MAAA8D,WAAAvG,QACAimB,GAAAxjB,EACA8lN,GAFAtiM,GAIA+0K,GAAAutB,EAAAttB,IAmHAntB,GAAA62C,OAAAjwB,KAAA,WAEA,QAAAA,GAAAn1L,EAAAqB,GACA,GAAA00L,GAAA2F,EAAAv6L,KAAArB,KAAAE,EAAAqB,GAAA4nN,EAAAlzB,EAAA,GAAAmzB,EAAAC,EAAAF,EAGA,IAFAptB,GAAAqtB,EAAAE,GAAAF,EAAAtwM,OAAApT,GAAA0jN,EAAAj1M,EACA2nL,GAAAstB,EAAAG,GACAC,EAAA1tB,GAAAqtB,EAAAM,OAAA,CACA,GAAA/iM,GAAAyiM,EAAAtsL,EAAAssL,EAAA7qL,EAAA6qL,CACArtB,IAAAqtB,EAAA,SAAAnwK,GACAA,EAAA3mC,EAAAqU,EAAArU,IAAAqU,EAAAsyB,GACAA,EAAA3mC,EAAAwqB,EAAAxqB,IAAAwqB,EAAAmc,GACAA,EAAA0lF,MAAApgG,EAAAogG,QAAApgG,EAAA0a,IAEA,IAAA0wK,GAAAC,EAAAjjM,EAAAmW,GAAA,EAAAnW,EAAArU,EAAAgnL,EAAAngJ,EAAA,IAAArc,EAAAxqB,EAAAs3M,EAAA9sL,EAAAnW,GAAA,EAAAgjM,GAAAjwB,EAAAvgJ,EAAA,IAAA5a,EAAAogG,OAAA,EACAo9D,IAAAqtB,EAAA,SAAAnwK,GACAA,EAAA3mC,GAAA2mC,EAAA3mC,EAAAq3M,GAAArwB,EACArgJ,EAAA9kC,EAAA8kC,EAAA0lF,MAAA+6D,IAGA,MAAAxD,GAEA,QAAAozB,GAAAF,GAKA,IAJA,GAGAS,GAHAR,GACAz2M,EAAA,KACA8H,UAAA0uM,IACAl9M,GAAAm9M,GACA,OAAAQ,EAAA39M,EAAAqI,QACA,IAAA,GAAAkiB,GAAA/b,EAAAmvM,EAAAnvM,SAAAlZ,EAAA,EAAAoE,EAAA8U,EAAA9Z,OAAAY,EAAAoE,IAAApE,EACA0K,EAAA1F,MAAAkU,EAAAlZ,GAAAi1B,GACApzB,EAAAqX,EAAAlZ,GACAuX,OAAA8wM,EACAnvM,UAAA+b,EAAA/b,EAAAlZ,GAAAkZ,WAAA+b,EAAA/zB,YACAkQ,EAAA,KACAlT,EAAA,KACA0U,EAAA,EACAzO,EAAA,EACAvF,EAAA,EACAoI,EAAA,EACAqI,EAAA,KACArP,EAAAA,IACA9B,EAAA+2B,EAGA,OAAA4yL,GAAA3uM,SAAA,GAEA,QAAA6uM,GAAAx4M,GACA,GAAA2J,GAAA3J,EAAA2J,SAAAW,EAAAtK,EAAAgI,OAAA2B,SAAA/Z,EAAAoQ,EAAAvP,EAAA6Z,EAAAtK,EAAAvP,EAAA,GAAA,IACA,IAAAkZ,EAAA9Z,OAAA,CACAg+L,GAAA7tL,EACA,IAAA+4M,IAAApvM,EAAA,GAAAtG,EAAAsG,EAAAA,EAAA9Z,OAAA,GAAAwT,GAAA,CACAzT,IACAoQ,EAAAqD,EAAAzT,EAAAyT,EAAAw1M,EAAA74M,EAAA1N,EAAA1C,EAAA0C,GACA0N,EAAApL,EAAAoL,EAAAqD,EAAA01M,GAEA/4M,EAAAqD,EAAA01M,MAEAnpN,KACAoQ,EAAAqD,EAAAzT,EAAAyT,EAAAw1M,EAAA74M,EAAA1N,EAAA1C,EAAA0C,GAEA0N,GAAAgI,OAAAnG,EAAAm3M,EAAAh5M,EAAApQ,EAAAoQ,EAAAgI,OAAAnG,GAAAyI,EAAA,IAEA,QAAAmuM,GAAAz4M,GACAA,EAAA1N,EAAAiP,EAAAvB,EAAAqD,EAAArD,EAAAgI,OAAApT,EACAoL,EAAApL,GAAAoL,EAAAgI,OAAApT,EAEA,QAAAokN,GAAAh5M,EAAApQ,EAAAo+L,GACA,GAAAp+L,EAAA,CAEA,IADA,GAAAgP,GAAAq6M,EAAAj5M,EAAAk5M,EAAAl5M,EAAA+tL,EAAAn+L,EAAAupN,EAAAF,EAAAjxM,OAAA2B,SAAA,GAAAyvM,EAAAH,EAAArkN,EAAAykN,EAAAH,EAAAtkN,EAAA0kN,EAAAvrB,EAAAn5L,EAAA2kN,EAAAJ,EAAAvkN,EACAm5L,EAAAN,GAAAM,GAAAkrB,EAAAzrB,GAAAyrB,GAAAlrB,GAAAkrB,GACAE,EAAA3rB,GAAA2rB,GACAD,EAAAzrB,GAAAyrB,GACAA,EAAAvqN,EAAAqR,EACApB,EAAAmvL,EAAA1qL,EAAAi2M,EAAAL,EAAA51M,EAAA+1M,EAAAP,EAAA9qB,EAAAz7L,EAAA2mN,EAAA3mN,GACAsM,EAAA,IACA8uL,GAAAI,GAAAC,EAAA/tL,EAAAguL,GAAAhuL,EAAApB,GACAw6M,GAAAx6M,EACAy6M,GAAAz6M,GAEA06M,GAAAvrB,EAAAn5L,EACAwkN,GAAAH,EAAArkN,EACA2kN,GAAAJ,EAAAvkN,EACAykN,GAAAH,EAAAtkN,CAEAm5L,KAAAN,GAAAyrB,KACAA,EAAAp5M,EAAAiuL,EACAmrB,EAAAtkN,GAAA0kN,EAAAD,GAEAJ,IAAAzrB,GAAA2rB,KACAA,EAAAr5M,EAAAm5M,EACAE,EAAAvkN,GAAAwkN,EAAAG,EACAvrB,EAAAhuL,GAGA,MAAAguL,GAEA,QAAA2qB,GAAAzwK,GACAA,EAAA3mC,GAAA6mC,EAAA,GACAF,EAAA9kC,EAAA8kC,EAAA0lF,MAAAxlF,EAAA,GAhGA,GAAA0iJ,GAAAntB,GAAA62C,OAAA1pB,YAAAtqL,KAAA,MAAAgC,MAAA,MAAAq2M,EAAAtrB,GAAAnlJ,GAAA,EAAA,GAAAswK,EAAA,IAiHA,OAfAn0B,GAAAs0B,WAAA,SAAAt3M,GACA,MAAAnL,WAAAvG,QACAgpN,EAAAt3M,EACAgjL,GAFAs0B,GAIAt0B,EAAAn8I,KAAA,SAAA7mC,GACA,MAAAnL,WAAAvG,QACA6oN,EAAA,OAAAtwK,EAAA7mC,GAAAo3M,EAAA,KACAp0B,GAFAm0B,EAAA,KAAAtwK,GAIAm8I,EAAAm0B,SAAA,SAAAn3M,GACA,MAAAnL,WAAAvG,QACA6oN,EAAA,OAAAtwK,EAAA7mC,GAAA,KAAAo3M,EACAp0B,GAFAm0B,EAAAtwK,EAAA,MAIAyiJ,GAAAtG,EAAAuG,IAiCAntB,GAAA62C,OAAAgF,QAAA,WAEA,QAAAA,GAAApqN,EAAAqB,GACA,GAAAgpN,GAAAt0B,EAAA2F,EAAAv6L,KAAArB,KAAAE,EAAAqB,GAAA+W,EAAA29K,EAAA,GAAA5jL,EAAA,CACA0pL,IAAAzjL,EAAA,SAAA0gC,GACA,GAAAv+B,GAAAu+B,EAAAv+B,QACAA,IAAAA,EAAA9Z,QACAq4C,EAAA3mC,EAAA2sL,GAAAvkL,GACAu+B,EAAA9kC,EAAA6qL,GAAAtkL,KAEAu+B,EAAA3mC,EAAAk4M,EAAAl4M,GAAAs3M,EAAA3wK,EAAAuxK,GAAA,EACAvxK,EAAA9kC,EAAA,EACAq2M,EAAAvxK,IAGA,IAAAtyB,GAAAu4K,GAAA3mL,GAAAukB,EAAAqiK,GAAA5mL,GAAA6pK,EAAAz7J,EAAArU,EAAAs3M,EAAAjjM,EAAAmW,GAAA,EAAA05F,EAAA15F,EAAAxqB,EAAAs3M,EAAA9sL,EAAAnW,GAAA,CAQA,OAPAq1K,IAAAzjL,EAAAkxM,EAAA,SAAAxwK,GACAA,EAAA3mC,GAAA2mC,EAAA3mC,EAAAiG,EAAAjG,GAAA6mC,EAAA,GACAF,EAAA9kC,GAAAoE,EAAApE,EAAA8kC,EAAA9kC,GAAAglC,EAAA,IACA,SAAAF,GACAA,EAAA3mC,GAAA2mC,EAAA3mC,EAAA8vK,IAAA5rD,EAAA4rD,GAAAjpI,EAAA,GACAF,EAAA9kC,GAAA,GAAAoE,EAAApE,EAAA8kC,EAAA9kC,EAAAoE,EAAApE,EAAA,IAAAglC,EAAA,KAEA+8I,EAtBA,GAAA2F,GAAAntB,GAAA62C,OAAA1pB,YAAAtqL,KAAA,MAAAgC,MAAA,MAAAq2M,EAAAtrB,GAAAnlJ,GAAA,EAAA,GAAAswK,GAAA,CAuCA,OAfAc,GAAAX,WAAA,SAAAt3M,GACA,MAAAnL,WAAAvG,QACAgpN,EAAAt3M,EACAi4M,GAFAX,GAIAW,EAAApxK,KAAA,SAAA7mC,GACA,MAAAnL,WAAAvG,QACA6oN,EAAA,OAAAtwK,EAAA7mC,GACAi4M,GAFAd,EAAA,KAAAtwK,GAIAoxK,EAAAd,SAAA,SAAAn3M,GACA,MAAAnL,WAAAvG,QACA6oN,EAAA,OAAAtwK,EAAA7mC,GACAi4M,GAFAd,EAAAtwK,EAAA,MAIAyiJ,GAAA2uB,EAAA1uB,IAoBAntB,GAAA62C,OAAAkF,QAAA,WAEA,QAAAzyC,GAAAt9J,EAAAvW,GAEA,IADA,GAAAsyB,GAAAuuH,EAAAxjJ,GAAA,EAAAoE,EAAA8U,EAAA9Z,SACAY,EAAAoE,GACAo/I,GAAAvuH,EAAA/b,EAAAlZ,IAAA+R,OAAApP,EAAA,EAAA,EAAAA,GACAsyB,EAAAuuH,KAAAlzI,MAAAkzI,IAAAA,GAAA,EAAA,EAAAA,EAGA,QAAA0lE,GAAAzxK,GACA,GAAAv+B,GAAAu+B,EAAAv+B,QACA,IAAAA,GAAAA,EAAA9Z,OAAA,CACA,GAAA61B,GAAAojC,EAAAj0D,EAAAovE,EAAAk8E,EAAAj4G,GAAA8mE,KAAA3nE,EAAA19B,EAAAhY,QAAAk8M,EAAA33K,EAAAA,EAAAn2B,EAAA,UAAA4hD,EAAAsiB,EAAAwJ,GAAA,SAAA9rB,EAAAsiB,EAAA0J,GAAA,eAAAhsB,EAAA,EAAAzZ,EAAA0lF,MAAA3pD,EAAA0J,GAAA1J,EAAAwJ,GAAAn0E,KAAAkvD,IAAAyb,EAAAwJ,GAAAxJ,EAAA0J,GAGA,KAFAs5F,EAAA5/H,EAAA48B,EAAAwJ,GAAAxJ,EAAA0J,GAAAzlC,EAAA1lC,OACAwsG,EAAAilC,KAAA,GACAp/I,EAAAwyC,EAAAx3C,QAAA,GACAm/G,EAAAv5G,KAAAiwB,EAAA2hB,EAAAxyC,EAAA,IACAm6G,EAAAilC,MAAAvuH,EAAAuuH,KACA,aAAAtyF,IAAAmH,EAAA8wJ,EAAA5qG,EAAAjvG,KAAA8tM,GACAxmK,EAAA7jC,MACAqqM,EAAA/kJ,IAEAkmD,EAAAilC,MAAAjlC,EAAAxrG,MAAAywI,KACA1/H,EAAAy6F,EAAAjvG,EAAAkkE,GAAA,GACAlkE,EAAAzG,KAAAkvD,IAAAyb,EAAAwJ,GAAAxJ,EAAA0J,IACAqhC,EAAAn/G,OAAAm/G,EAAAilC,KAAA,EACA45D,EAAA33K,EAAAA,EAGA84E,GAAAn/G,SACA0kB,EAAAy6F,EAAAjvG,EAAAkkE,GAAA,GACA+qC,EAAAn/G,OAAAm/G,EAAAilC,KAAA,GAEAtqI,EAAAi+H,QAAA+xE,IAGA,QAAAE,GAAA3xK,GACA,GAAAv+B,GAAAu+B,EAAAv+B,QACA,IAAAA,GAAAA,EAAA9Z,OAAA,CACA,GAAA61B,GAAAu+C,EAAAk8E,EAAAj4G,GAAAb,EAAA19B,EAAAhY,QAAAq9G,IAGA,KAFAi4D,EAAA5/H,EAAA48B,EAAAwJ,GAAAxJ,EAAA0J,GAAAzlC,EAAA1lC,OACAwsG,EAAAilC,KAAA,EACAvuH,EAAA2hB,EAAA7jC,OACAwrG,EAAAv5G,KAAAiwB,GACAspF,EAAAilC,MAAAvuH,EAAAuuH,KACA,MAAAvuH,EAAAriB,IACAkR,EAAAy6F,EAAAtpF,EAAAriB,EAAA4gE,EAAAwJ,GAAAxJ,EAAA0J,GAAA1J,GAAA58B,EAAAx3C,QACAm/G,EAAAn/G,OAAAm/G,EAAAilC,KAAA,EAGAtqI,GAAAi+H,QAAAiyE,IAGA,QAAAD,GAAA5qG,EAAAjvG,GAEA,IADA,GAAAjQ,GAAA2H,EAAAu3G,EAAAilC,KAAA6lE,EAAA,EAAAC,EAAA7jL,EAAAA,EAAAzlC,GAAA,EAAAoE,EAAAm6G,EAAAn/G,SACAY,EAAAoE,IACA/E,EAAAk/G,EAAAv+G,GAAAwjJ,QACAnkJ,EAAAiqN,IAAAA,EAAAjqN,GACAA,EAAAgqN,IAAAA,EAAAhqN,GAIA,OAFA2H,IAAAA,EACAsI,GAAAA,EACAtI,EAAA6B,KAAAC,IAAAwG,EAAA+5M,EAAAvkF,EAAA99H,EAAAA,GAAAsI,EAAAg6M,EAAAxkF,IAAAr/F,EAAAA,EAEA,QAAA3hB,GAAAy6F,EAAAjvG,EAAAkkE,EAAA7xB,GACA,GAAAt9C,GAAArE,GAAA,EAAAoE,EAAAm6G,EAAAn/G,OAAA0R,EAAA0iE,EAAA1iE,EAAA6B,EAAA6gE,EAAA7gE,EAAApD,EAAAD,EAAA6tB,EAAAohF,EAAAilC,KAAAl0I,GAAA,CACA,IAAAA,GAAAkkE,EAAAwJ,GAAA,CAEA,KADAr7B,GAAApyC,EAAAikE,EAAA0J,MAAA3tE,EAAAikE,EAAA0J,MACAl9E,EAAAoE,GACAC,EAAAk6G,EAAAv+G,GACAqE,EAAAyM,EAAAA,EACAzM,EAAAsO,EAAAA,EACAtO,EAAA64E,GAAA3tE,EACAuB,GAAAzM,EAAA24E,GAAAn0E,KAAAkvD,IAAAyb,EAAA1iE,EAAA0iE,EAAAwJ,GAAAlsE,EAAAvB,EAAA4tB,EAAA94B,EAAAm/I,KAAAj0I,GAAA,EAEAlL,GAAAuO,GAAA,EACAvO,EAAA24E,IAAAxJ,EAAA1iE,EAAA0iE,EAAAwJ,GAAAlsE,EACA0iE,EAAA7gE,GAAApD,EACAikE,EAAA0J,IAAA3tE,MACA,CAEA,KADAoyC,GAAApyC,EAAAikE,EAAAwJ,MAAAztE,EAAAikE,EAAAwJ,MACAh9E,EAAAoE,GACAC,EAAAk6G,EAAAv+G,GACAqE,EAAAyM,EAAAA,EACAzM,EAAAsO,EAAAA,EACAtO,EAAA24E,GAAAztE,EACAoD,GAAAtO,EAAA64E,GAAAr0E,KAAAkvD,IAAAyb,EAAA7gE,EAAA6gE,EAAA0J,GAAAvqE,EAAApD,EAAA4tB,EAAA94B,EAAAm/I,KAAAj0I,GAAA,EAEAlL,GAAAuO,GAAA,EACAvO,EAAA64E,IAAA1J,EAAA7gE,EAAA6gE,EAAA0J,GAAAvqE,EACA6gE,EAAA1iE,GAAAvB,EACAikE,EAAAwJ,IAAAztE,GAGA,QAAA05M,GAAAtqN,GACA,GAAA+1L,GAAA60B,GAAAlvB,EAAA17L,GAAAoY,EAAA29K,EAAA,EAOA,OANA39K,GAAAjG,EAAAiG,EAAApE,EAAA,EACAoE,EAAAhF,OAAAgF,EAAAimE,GAAArlC,EAAA,GAAA5gC,EAAAmmE,GAAAvlC,EAAA,IAAA5gC,EAAAimE,GAAAjmE,EAAAmmE,GAAA,EACAqsI,GAAAlvB,EAAA+rB,QAAArvM,GACAy/J,GAAAz/J,GAAAA,EAAAimE,GAAAjmE,EAAAmmE,GAAAnmE,EAAAhF,QACAw3M,EAAAH,EAAAF,GAAAnyM,GACA+mD,IAAAyrJ,EAAA70B,GACAA,EArGA,GAAA60B,GAAAlvB,EAAAntB,GAAA62C,OAAA1pB,YAAAl9J,EAAAt0B,KAAAs0B,MAAAwa,GAAA,EAAA,GAAAtyB,EAAA,KAAAqqI,EAAAkuC,GAAA9/H,GAAA,EAAA5M,EAAA,WAAA4zE,EAAA,IAAA,EAAAj8H,KAAA64J,KAAA,GA+IA,OAxCAunD,GAAAtxK,KAAA,SAAA7mC,GACA,MAAAnL,WAAAvG,QACAu4C,EAAA7mC,EACAm4M,GAFAtxK,GAIAsxK,EAAA5jM,QAAA,SAAAvU,GAEA,QAAA04M,GAAA/xK,GACA,GAAA/4C,GAAAoS,EAAAhR,KAAAmpN,EAAAxxK,EAAAA,EAAA0lF,MACA,OAAA,OAAAz+H,EAAAk/L,GAAAnmJ,GAAAomJ,GAAApmJ,EAAA,gBAAA/4C,IAAAA,EAAAA,EAAAA,EAAAA,GAAAA,GAEA,QAAA+qN,GAAAhyK,GACA,MAAAomJ,IAAApmJ,EAAA3mC,GANA,IAAAnL,UAAAvG,OAAA,MAAAimB,EAQA,IAAA/lB,EAGA,OAFAowJ,GAAA,OAAArqI,EAAAvU,GAAA8sL,GAAA,aAAAt+L,QAAAwR,IAAA04M,EAAA,WAAAlqN,GAAAwR,GAAAA,EAAAA,EAAAA,EAAAA,GACA24M,GAAAA,EACAR,GAEAA,EAAA9rL,MAAA,SAAArsB,GACA,MAAAnL,WAAAvG,QACA+9B,EAAArsB,EAAAjI,KAAAs0B,MAAA8tD,OACAg+H,GAFA9rL,GAAA8tD,QAIAg+H,EAAAnrJ,OAAA,SAAAhtD,GACA,MAAAnL,WAAAvG,QACA0+D,EAAAhtD,EACAy4M,EAAA,KACAN,GAHAnrJ,GAKAmrJ,EAAAnkF,MAAA,SAAAh0H,GACA,MAAAnL,WAAAvG,QACA0lI,EAAAh0H,EACAm4M,GAFAnkF,GAIAmkF,EAAA/3J,KAAA,SAAApgD,GACA,MAAAnL,WAAAvG,QACA8xD,EAAApgD,EAAA,GACAm4M,GAFA/3J,GAIAkpI,GAAA6uB,EAAA5uB,IA2BAntB,GAAAh9J,QACAw3D,OAAA,SAAAgiJ,EAAAC,GACA,GAAAvlN,GAAAuB,UAAAvG,MAGA,OAFAgF,GAAA,IAAAulN,EAAA,GACAvlN,EAAA,IAAAslN,EAAA,GACA,WACA,GAAA54M,GAAA6B,EAAAtT,CACA,GACAyR,GAAA,EAAAjI,KAAAqH,SAAA,EACAyC,EAAA,EAAA9J,KAAAqH,SAAA,EACA7Q,EAAAyR,EAAAA,EAAA6B,EAAAA,SACAtT,GAAAA,EAAA,EACA,OAAAqqN,GAAAC,EAAA74M,EAAAjI,KAAA64J,MAAA,EAAA74J,KAAAmmC,IAAA3vC,GAAAA,KAGAuqN,UAAA,WACA,GAAA15M,GAAAg9J,GAAAh9J,OAAAw3D,OAAAzmE,MAAAisK,GAAAvnK,UACA,OAAA,YACA,MAAAkD,MAAAoqK,IAAA/iK,OAGA25M,MAAA,SAAA1lN,GACA,GAAA+L,GAAAg9J,GAAAh9J,OAAA45M,UAAA3lN,EACA,OAAA,YACA,MAAA+L,KAAA/L,IAGA2lN,UAAA,SAAA3lN,GACA,MAAA,YACA,IAAA,GAAA6C,GAAA,EAAAvE,EAAA,EAAAA,EAAA0B,EAAA1B,IAAAuE,GAAA6B,KAAAqH,QACA,OAAAlJ,MAIAkmK,GAAAsJ,QAkCA,IAAA+nB,KACAj3J,MAAA+kI,EACA5zF,KAAA4zF,EAiBAa,IAAAsJ,MAAA1wJ,OAAA,WACA,MAAA44K,KAAA,EAAA,IAAA,EAAA,GAAAlJ,IAAA,GA+FA,IAAA+J,KACAv4L,EAAA,EACA3E,EAAA,EACA3D,EAAA,EACAW,EAAA,EACAuB,EAAA,EASAssK,IAAAsJ,MAAAxnI,IAAA,WACA,MAAAwwJ,IAAAtyB,GAAAsJ,MAAA1wJ,SAAAi4K,QAAA,EAAA,IAAA,IAAA,GAAA,EAAA,KAgEA,IAAA6B,IAAA1yB,GAAA1iI,OAAA,OAAAm1J,IACAr4J,MAAA,SAAAx2B,GACA,OAAAjI,KAAA4vE,MAAA3nE,IAEA2nE,KAAA,SAAA3nE,GACA,OAAAjI,KAAAy+B,OAAAx2B,IAGAo8J,IAAAsJ,MAAAr4C,IAAA,WACA,MAAA0hE,IAAA3yB,GAAAsJ,MAAA1wJ,SAAA,GAAA,EAAA,KAyCAonJ,GAAAsJ,MAAA9U,KAAA,WACA,MAAAwL,IAAAsJ,MAAAr4C,MAAAu5C,SAAA,KAEAxK,GAAAsJ,MAAAuzC,QAAA,WACA,MAAA9pB,QACA5wL,EAAA,QACAnR,UA4FAgvK,GAAAsJ,MAAAwzC,WAAA,WACA,MAAA98C,IAAAsJ,MAAAuzC,UAAArjK,MAAAujK,KAEA/8C,GAAAsJ,MAAA0zC,WAAA,WACA,MAAAh9C,IAAAsJ,MAAAuzC,UAAArjK,MAAAyjK,KAEAj9C,GAAAsJ,MAAA4zC,YAAA,WACA,MAAAl9C,IAAAsJ,MAAAuzC,UAAArjK,MAAA2jK,KAEAn9C,GAAAsJ,MAAA8zC,YAAA,WACA,MAAAp9C,IAAAsJ,MAAAuzC,UAAArjK,MAAA6jK,IAEA,IAAAN,KAAA,QAAA,SAAA,QAAA,SAAA,QAAA,QAAA,SAAA,QAAA,SAAA,SAAA5iN,IAAAwtK,IACAs1C,IAAA,QAAA,SAAA,SAAA,SAAA,QAAA,SAAA,SAAA,SAAA,QAAA,SAAA,QAAA,SAAA,SAAA,SAAA,QAAA,SAAA,SAAA,SAAA,QAAA,UAAA9iN,IAAAwtK,IACAw1C,IAAA,QAAA,QAAA,QAAA,SAAA,QAAA,QAAA,SAAA,SAAA,QAAA,SAAA,SAAA,SAAA,QAAA,SAAA,SAAA,SAAA,QAAA,SAAA,SAAA,UAAAhjN,IAAAwtK,IACA01C,IAAA,QAAA,QAAA,SAAA,SAAA,SAAA,SAAA,SAAA,SAAA,QAAA,QAAA,SAAA,SAAA,QAAA,SAAA,SAAA,SAAA,QAAA,QAAA,SAAA,UAAAljN,IAAAwtK,GACA3H,IAAAsJ,MAAAqqB,SAAA,WACA,MAAAF,YAmCAzzB,GAAAsJ,MAAAg0C,SAAA,WACA,MAAAxpB,IAAA,EAAA,GAAA,EAAA,KAiCA9zB,GAAAsJ,MAAAi0C,UAAA,WACA,MAAAxpB,KAAA,KAAA,EAAA,KAyBA/zB,GAAAsJ,MAAAhtI,SAAA,WACA,MAAA03J,KAAA,EAAA,KAuBAh0B,GAAA1tD,OAIA0tD,GAAA1tD,IAAAoX,IAAA,WAEA,QAAAA,KACA,GAAAtvD,GAAAz+D,KAAAC,IAAA,GAAAu4L,EAAApgM,MAAAxC,KAAAkH,YAAA4hE,EAAA1+D,KAAAC,IAAA,GAAAy4L,EAAAtgM,MAAAxC,KAAAkH,YAAAovC,EAAAsgF,EAAAp0H,MAAAxC,KAAAkH,WAAAmtK,GAAAt+G,EAAA8gE,EAAAr0H,MAAAxC,KAAAkH,WAAAmtK,GAAApvK,EAAAmF,KAAA0yB,IAAAi5B,EAAAzf,GAAA+sJ,EAAA/sJ,EAAAyf,EAAA,EAAA,CAEA,IADA+S,EAAAD,IAAAx1B,EAAAy1B,EAAAA,EAAAD,EAAAA,EAAAx1B,GACApuC,GAAAmoM,GAAA,MAAA6e,GAAAnjJ,EAAAu6H,IAAAx6H,EAAAojJ,EAAApjJ,EAAA,EAAAw6H,GAAA,IAAA,GACA,IAAAhwJ,GAAAqzI,EAAAjhC,EAAAymE,EAAA/pC,EAAAF,EAAA1rD,EAAAC,EAAAC,EAAAC,EAAAk6D,EAAAG,EAAApN,EAAA,EAAAzuD,EAAA,EAAAhE,IAOA,KANAg7F,IAAAhpB,EAAA1gM,MAAAxC,KAAAkH,YAAA,GAAA,KACAu+I,EAAA0mE,IAAAC,GAAAhiN,KAAA64J,KAAAp6F,EAAAA,EAAAC,EAAAA,IAAAqjJ,EAAA3pN,MAAAxC,KAAAkH,WACAm8L,IAAAnuE,IAAA,GACApsD,IAAAosD,EAAAk/C,GAAA3uB,EAAA38E,EAAA1+D,KAAAgvH,IAAA8yF,KACArjJ,IAAA86G,EAAAvP,GAAA3uB,EAAA58E,EAAAz+D,KAAAgvH,IAAA8yF,MAEApjJ,EAAA,CACAq5G,EAAAr5G,EAAA1+D,KAAAmd,IAAA+uB,EAAA4+E,GACA+sD,EAAAn5G,EAAA1+D,KAAAgvH,IAAA9iF,EAAA4+E,GACAqB,EAAAztD,EAAA1+D,KAAAmd,IAAAwuC,EAAAm/D,GACAsB,EAAA1tD,EAAA1+D,KAAAgvH,IAAArjE,EAAAm/D,EACA,IAAAwvC,GAAAt6J,KAAA0yB,IAAAi5B,EAAAzf,EAAA,EAAA4+E,IAAAg/C,GAAA,EAAA,CACA,IAAAh/C,GAAAiuE,GAAAhhB,EAAAF,EAAA1rD,EAAAC,KAAA6sE,EAAA3+B,EAAA,CACA,GAAAjhI,IAAA6S,EAAAyf,GAAA,CACAosH,GAAAr5G,EAAA1+D,KAAAmd,IAAAkc,GACAw+I,EAAAn5G,EAAA1+D,KAAAgvH,IAAA31F,GACA8yF,EAAAC,EAAA,UAGA2rD,GAAAF,EAAA,CAEA,IAAAp5G,EAAA,CACA4tD,EAAA5tD,EAAAz+D,KAAAmd,IAAAwuC,EAAA4tH,GACAjtD,EAAA7tD,EAAAz+D,KAAAgvH,IAAArjE,EAAA4tH,GACAiN,EAAA/nH,EAAAz+D,KAAAmd,IAAA+uB,EAAAqtI,GACAoN,EAAAloH,EAAAz+D,KAAAgvH,IAAA9iF,EAAAqtI,EACA,IAAAxe,GAAA/6J,KAAA0yB,IAAAwZ,EAAAyf,EAAA,EAAA4tH,IAAAzP,GAAA,EAAA,CACA,IAAAyP,GAAAwf,GAAA1sE,EAAAC,EAAAk6D,EAAAG,KAAA,EAAAsS,EAAAl+B,EAAA,CACA,GAAAl5B,IAAA31F,EAAAyf,GAAA,CACA0gE,GAAA5tD,EAAAz+D,KAAAmd,IAAA0kH,GACAvV,EAAA7tD,EAAAz+D,KAAAgvH,IAAA6S,GACA2kD,EAAAG,EAAA,UAGAt6D,GAAAC,EAAA,CAEA,IAAAzxH,EAAAw8K,KAAApuI,EAAAjpC,KAAAkvD,IAAAlvD,KAAA0yB,IAAAgsC,EAAAD,GAAA,GAAAwjJ,EAAA7pN,MAAAxC,KAAAkH,aAAA,KAAA,CACAw/K,EAAA79G,EAAAC,EAAAu6H,EAAA,EAAA,CACA,IAAAipB,GAAAj5K,EAAAk5K,EAAAl5K,CACA,IAAApuC,EAAAivK,GAAA,CACA,GAAAs4C,GAAA,MAAA57B,GAAAn6D,EAAAC,GAAA,MAAAH,GAAA4rD,EAAAF,GAAA0O,IAAAxO,EAAAF,IAAA2O,EAAAG,IAAAx6D,EAAAC,IAAAC,EAAAC,IAAAuxD,EAAA9F,EAAAqqC,EAAA,GAAAtkC,EAAAjG,EAAAuqC,EAAA,GAAArkC,EAAA5xD,EAAAi2F,EAAA,GAAAjuD,EAAA/nC,EAAAg2F,EAAA,GAAAC,EAAA,EAAAriN,KAAAgvH,IAAAhvH,KAAA+pK,MAAA8T,EAAAE,EAAAD,EAAA3pB,IAAAn0J,KAAA64J,KAAAglB,EAAAA,EAAAC,EAAAA,GAAA99K,KAAA64J,KAAAklB,EAAAA,EAAA5pB,EAAAA,KAAA,GAAAwE,EAAA34J,KAAA64J,KAAAupD,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GACAD,GAAAniN,KAAAkvD,IAAAjmB,GAAAw1B,EAAAk6F,IAAA0pD,EAAA,IACAH,EAAAliN,KAAAkvD,IAAAjmB,GAAAy1B,EAAAi6F,IAAA0pD,EAAA,IAEA,GAAA,MAAAl2F,EAAA,CACA,GAAAm2F,GAAAtpB,GAAA,MAAAxS,GAAAn6D,EAAAC,IAAAk6D,EAAAG,IAAA5O,EAAAF,GAAAn5G,EAAAwjJ,EAAAjpB,GAAAspB,EAAAvpB,IAAA7sE,EAAAC,IAAAC,EAAAC,GAAA5tD,EAAAwjJ,EAAAjpB,EACAhwJ,KAAAi5K,EACAp7F,EAAA3qH,KAAA,IAAAmmN,EAAA,GAAA,IAAAJ,EAAA,IAAAA,EAAA,QAAA5lC,EAAA,IAAAgmC,EAAA,GAAA,IAAA5jJ,EAAA,IAAAA,EAAA,MAAA,EAAAu6H,EAAAF,GAAAupB,EAAA,GAAA,GAAAA,EAAA,GAAA,GAAAC,EAAA,GAAA,GAAAA,EAAA,GAAA,IAAA,IAAAtpB,EAAA,IAAAspB,EAAA,GAAA,IAAAL,EAAA,IAAAA,EAAA,QAAA5lC,EAAA,IAAAimC,EAAA,IAEAz7F,EAAA3qH,KAAA,IAAAmmN,EAAA,GAAA,IAAAJ,EAAA,IAAAA,EAAA,QAAA5lC,EAAA,IAAAimC,EAAA,QAGAz7F,GAAA3qH,KAAA,IAAA47K,EAAA,IAAAF,EAEA,IAAA,MAAA2O,EAAA,CACA,GAAAg8B,GAAAxpB,IAAAjhB,EAAAF,IAAA2O,EAAAG,GAAAloH,GAAA0jJ,EAAAlpB,GAAAwpB,EAAAzpB,IAAA3sE,EAAAC,GAAA,MAAAH,GAAA4rD,EAAAF,IAAA1rD,EAAAC,GAAA3tD,GAAA0jJ,EAAAlpB,EACAhwJ,KAAAk5K,EACAr7F,EAAA3qH,KAAA,IAAAsmN,EAAA,GAAA,IAAAN,EAAA,IAAAA,EAAA,QAAA7lC,EAAA,IAAAmmC,EAAA,GAAA,IAAAhkJ,EAAA,IAAAA,EAAA,MAAAw6H,EAAAF,GAAA0pB,EAAA,GAAA,GAAAA,EAAA,GAAA,GAAAD,EAAA,GAAA,GAAAA,EAAA,GAAA,IAAA,IAAA,EAAAvpB,EAAA,IAAAupB,EAAA,GAAA,IAAAL,EAAA,IAAAA,EAAA,QAAA7lC,EAAA,IAAAkmC,EAAA,IAEA17F,EAAA3qH,KAAA,IAAAsmN,EAAA,GAAA,IAAAN,EAAA,IAAAA,EAAA,QAAA7lC,EAAA,IAAAkmC,EAAA,QAGA17F,GAAA3qH,KAAA,IAAAkwH,EAAA,IAAAC,OAGAxF,GAAA3qH,KAAA,IAAA47K,EAAA,IAAAF,GACA,MAAA1rD,GAAArF,EAAA3qH,KAAA,IAAAuiE,EAAA,IAAAA,EAAA,MAAA47F,EAAA,IAAA2+B,EAAA,IAAA9sE,EAAA,IAAAC,GACAtF,EAAA3qH,KAAA,IAAAkwH,EAAA,IAAAC,GACA,MAAAk6D,GAAA1/D,EAAA3qH,KAAA,IAAAsiE,EAAA,IAAAA,EAAA,MAAAs8F,EAAA,IAAA,EAAAk+B,EAAA,IAAAzS,EAAA,IAAAG,EAGA,OADA7/D,GAAA3qH,KAAA,KACA2qH,EAAAtiH,KAAA,IAEA,QAAAq9M,GAAAnjJ,EAAAu6H,GACA,MAAA,MAAAv6H,EAAA,IAAAA,EAAA,IAAAA,EAAA,QAAAu6H,EAAA,OAAAv6H,EAAA,IAAAA,EAAA,IAAAA,EAAA,QAAAu6H,EAAA,MAAAv6H,EAhFA,GAAA85H,GAAAD,GAAAG,EAAAD,GAAAwpB,EAAA3pB,GAAAypB,EAAAC,GAAAx1F,EAAAmsE,GAAAlsE,EAAAmsE,GAAAE,EAAAD,EAyHA,OAvCA9qE,GAAAyqE,YAAA,SAAA9xL,GACA,MAAA5J,WAAAvG,QACAiiM,EAAAlsB,GAAA5lK,GACAqnH,GAFAyqE,GAIAzqE,EAAA2qE,YAAA,SAAAhyL,GACA,MAAA5J,WAAAvG,QACAmiM,EAAApsB,GAAA5lK,GACAqnH,GAFA2qE,GAIA3qE,EAAAk0F,aAAA,SAAAv7M,GACA,MAAA5J,WAAAvG,QACA0rN,EAAA31C,GAAA5lK,GACAqnH,GAFAk0F,GAIAl0F,EAAAg0F,UAAA,SAAAr7M,GACA,MAAA5J,WAAAvG,QACAwrN,EAAAr7M,GAAAs7M,GAAAA,GAAA11C,GAAA5lK,GACAqnH,GAFAg0F,GAIAh0F,EAAAvB,WAAA,SAAA9lH,GACA,MAAA5J,WAAAvG,QACAi2H,EAAA8/C,GAAA5lK,GACAqnH,GAFAvB,GAIAuB,EAAAtB,SAAA,SAAA/lH,GACA,MAAA5J,WAAAvG,QACAk2H,EAAA6/C,GAAA5lK,GACAqnH,GAFAtB,GAIAsB,EAAA+qE,SAAA,SAAApyL,GACA,MAAA5J,WAAAvG,QACAuiM,EAAAxsB,GAAA5lK,GACAqnH,GAFA+qE,GAIA/qE,EAAAymF,SAAA,WACA,GAAAh+M,KAAAgiM,EAAApgM,MAAAxC,KAAAkH,aAAA47L,EAAAtgM,MAAAxC,KAAAkH,YAAA,EAAAzH,IAAAm3H,EAAAp0H,MAAAxC,KAAAkH,aAAA2vH,EAAAr0H,MAAAxC,KAAAkH,YAAA,EAAAmtK,EACA,QAAAjqK,KAAAmd,IAAA9nB,GAAAmB,EAAAwJ,KAAAgvH,IAAA35H,GAAAmB,IAEAu3H,EAEA,IAAAi0F,IAAA,MAqEA39C,IAAA1tD,IAAA/tD,KAAA,WACA,MAAAgxI,IAAAp2B,GAEA,IAAAy2B,IAAA51B,GAAA7lK,KACAye,OAAA88K,GACA2oB,gBAAAxoB,GACAp9K,KAAAq9K,GACAwoB,cAAAvoB,GACAwoB,aAAAvoB,GACAwoB,MAAA/nB,GACAgoB,aAAA5nB,GACA6nB,eAAA5nB,GACAggB,OAAA/f,GACA4nB,SAAAtoB,GACAuoB,gBAAA3oB,GACA4oB,kBAAAzoB,GACA0oB,SAAAznB,IAEAzB,IAAA3rD,QAAA,SAAAn2H,EAAAjP,GACAA,EAAAiP,IAAAA,EACAjP,EAAAulH,OAAA,WAAAp3H,KAAA8gB,IA8IA,IAAAkjL,KAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAAC,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAAN,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EA0CA32B,IAAA1tD,IAAA/tD,KAAAw6J,OAAA,WACA,GAAAx6J,GAAAgxI,GAAA+B,GAGA,OAFA/yI,GAAAoiE,OAAApiE,EAAA3gD,QAAA2gD,GAAA3gD,EACA2gD,EAAAs7H,MAAAt7H,EAAA9+C,QAAA8+C,GAAA9+C,EACA8+C,GAsFAwxI,GAAAjpL,QAAAkpL,GACAA,GAAAlpL,QAAAipL,GACA/1B,GAAA1tD,IAAAgkC,KAAA,WACA,MAAAihD,IAAAp4B,IAEAa,GAAA1tD,IAAAgkC,KAAAyoE,OAAA,WACA,GAAAzoE,GAAAihD,GAAAD,GAOA,OANAhhD,GAAA3vB,OAAA2vB,EAAA1yI,QAAA0yI,GAAA1yI,EACA0yI,EAAA69C,YAAA79C,EAAAo9B,SAAAp9B,GAAAo9B,GACAp9B,EAAA+9C,YAAA/9C,EAAAxuB,SAAAwuB,GAAAxuB,GACAwuB,EAAAupC,MAAAvpC,EAAA7wI,QAAA6wI,GAAA7wI,EACA6wI,EAAAnuB,WAAAmuB,EAAAk9B,SAAAl9B,GAAAk9B,GACAl9B,EAAAluB,SAAAkuB,EAAAvuB,SAAAuuB,GAAAvuB,GACAuuB,GAEA0pB,GAAA1tD,IAAAykG,MAAA,WAEA,QAAAA,GAAAtlN,EAAAqB,GACA,GAAAgH,GAAA8iM,EAAArrM,KAAA4d,EAAA1d,EAAAqB,GAAAqP,EAAAy6L,EAAArrM,KAAAmY,EAAAjY,EAAAqB,EACA,OAAA,IAAAgH,EAAAo7K,GAAAxrD,EAAA5vH,EAAA3H,EAAA2H,EAAA2sH,GAAA3sH,EAAAwtD,GAAAxtD,EAAA+tC,KAAAo1C,EAAAnjF,EAAAqI,GAAA68M,EAAAllN,EAAA3H,EAAA2H,EAAA2sH,GAAA3sH,EAAA3H,EAAA2H,EAAAo7K,IAAA8pC,EAAAllN,EAAA3H,EAAA2H,EAAA2sH,GAAAtkH,EAAAhQ,EAAAgQ,EAAA+yK,IAAAxrD,EAAAvnH,EAAAhQ,EAAAgQ,EAAAskH,GAAAtkH,EAAAmlD,GAAAnlD,EAAA0lC,IAAAm3K,EAAA78M,EAAAhQ,EAAAgQ,EAAAskH,GAAA3sH,EAAA3H,EAAA2H,EAAAo7K,KAAA,IAEA,QAAA0nB,GAAA/3J,EAAA3vC,EAAAzD,EAAAqB,GACA,GAAA8pM,GAAA1nM,EAAAtC,KAAAiyC,EAAApzC,EAAAqB,GAAAX,EAAAw0H,EAAA/zH,KAAAiyC,EAAA+3J,EAAA9pM,GAAA+0C,EAAAsgF,EAAAv1H,KAAAiyC,EAAA+3J,EAAA9pM,GAAA8yK,GAAAt+G,EAAA8gE,EAAAx1H,KAAAiyC,EAAA+3J,EAAA9pM,GAAA8yK,EACA,QACAzzK,EAAAA,EACA01C,GAAAA,EACAyf,GAAAA,EACA4tH,IAAA/iL,EAAAwJ,KAAAmd,IAAA+uB,GAAA11C,EAAAwJ,KAAAgvH,IAAA9iF,IACA4+E,IAAAt0H,EAAAwJ,KAAAmd,IAAAwuC,GAAAn1D,EAAAwJ,KAAAgvH,IAAArjE,KAGA,QAAA21B,GAAAjsF,EAAAC,GACA,MAAAD,GAAA62C,IAAA52C,EAAA42C,IAAA72C,EAAAs2D,IAAAr2D,EAAAq2D,GAEA,QAAAoiE,GAAAv3H,EAAAX,EAAAR,GACA,MAAA,IAAAmB,EAAA,IAAAA,EAAA,SAAAnB,EAAAy0K,IAAA,MAAAj0K,EAEA,QAAAwtN,GAAA5kJ,EAAA86G,EAAA76G,EAAAosD,GACA,MAAA,SAAAA,EAtBA,GAAAt3G,GAAA6wK,GAAAt2K,EAAAu2K,GAAAt5D,EAAAoxE,GAAA5vE,EAAAmsE,GAAAlsE,EAAAmsE,EAiDA,OAzBAwiB,GAAApwF,OAAA,SAAAtkH,GACA,MAAA5J,WAAAvG,QACAy0H,EAAAshD,GAAA5lK,GACA00M,GAFApwF,GAIAowF,EAAA5nM,OAAA,SAAA9M,GACA,MAAA5J,WAAAvG,QACAid,EAAA84J,GAAA5lK,GACA00M,GAFA5nM,GAIA4nM,EAAArtM,OAAA,SAAArH,GACA,MAAA5J,WAAAvG,QACAwX,EAAAu+J,GAAA5lK,GACA00M,GAFArtM,GAIAqtM,EAAA5uF,WAAA,SAAA9lH,GACA,MAAA5J,WAAAvG,QACAi2H,EAAA8/C,GAAA5lK,GACA00M,GAFA5uF,GAIA4uF,EAAA3uF,SAAA,SAAA/lH,GACA,MAAA5J,WAAAvG,QACAk2H,EAAA6/C,GAAA5lK,GACA00M,GAFA3uF,GAIA2uF,GAKA/2C,GAAA1tD,IAAA2sG,SAAA,WAEA,QAAAA,GAAAxtN,EAAAqB,GACA,GAAAoiL,GAAA/lK,EAAAvc,KAAArB,KAAAE,EAAAqB,GAAAosN,EAAAx1M,EAAA9W,KAAArB,KAAAE,EAAAqB,GAAAmE,GAAAi+K,EAAAzvK,EAAAy5M,EAAAz5M,GAAA,EAAAjU,GAAA0jL,GACAtxK,EAAAsxK,EAAAtxK,EACA6B,EAAAxO,IAEA2M,EAAAs7M,EAAAt7M,EACA6B,EAAAxO,GACAioN,EAEA,OADA1tN,GAAAA,EAAA2I,IAAAgjC,GACA,IAAA3rC,EAAA,GAAA,IAAAA,EAAA,GAAA,IAAAA,EAAA,GAAA,IAAAA,EAAA,GAVA,GAAA2d,GAAA6wK,GAAAt2K,EAAAu2K,GAAA9iJ,EAAA66J,EA2BA,OAfAinB,GAAA9vM,OAAA,SAAAvL,GACA,MAAAnL,WAAAvG,QACAid,EAAA84J,GAAArkK,GACAq7M,GAFA9vM,GAIA8vM,EAAAv1M,OAAA,SAAA9F,GACA,MAAAnL,WAAAvG,QACAwX,EAAAu+J,GAAArkK,GACAq7M,GAFAv1M,GAIAu1M,EAAA9hL,WAAA,SAAAv5B,GACA,MAAAnL,WAAAvG,QACAirC,EAAAv5B,EACAq7M,GAFA9hL,GAIA8hL,GAKAj/C,GAAA1tD,IAAA2sG,SAAAF,OAAA,WACA,GAAAE,GAAAj/C,GAAA1tD,IAAA2sG,WAAA9hL,EAAA66J,GAAAmnB,EAAAF,EAAA9hL,UAIA,OAHA8hL,GAAA9hL,WAAA,SAAAv5B,GACA,MAAAnL,WAAAvG,OAAAitN,EAAAlnB,GAAA96J,EAAAv5B,IAAAu5B,GAEA8hL,GAQAj/C,GAAA1tD,IAAAq4B,OAAA,WAEA,QAAAA,GAAAl5I,EAAAqB,GACA,OAAAssN,GAAA7oN,IAAAnE,EAAAQ,KAAArB,KAAAE,EAAAqB,KAAAslM,IAAA3tJ,EAAA73C,KAAArB,KAAAE,EAAAqB,IAFA,GAAAV,GAAA+lM,GAAA1tJ,EAAAytJ,EAcA,OAVAvtD,GAAAv4I,KAAA,SAAAwR,GACA,MAAAnL,WAAAvG,QACAE,EAAA61K,GAAArkK,GACA+mI,GAFAv4I,GAIAu4I,EAAAlgG,KAAA,SAAA7mC,GACA,MAAAnL,WAAAvG,QACAu4C,EAAAw9H,GAAArkK,GACA+mI,GAFAlgG,GAIAkgG,EAYA,IAAAy0E,IAAAp/C,GAAA7lK,KACA2sH,OAAAsxE,GACAinB,MAAA,SAAA50K,GACA,GAAAt4C,GAAAwJ,KAAA64J,KAAA/pH,EAAA,GAAA,CACA,OAAA,KAAA,EAAAt4C,EAAA,KAAAA,EAAA,KAAAA,EAAA,KAAA,EAAAA,EAAA,IAAAA,EAAA,KAAAA,EAAA,IAAA,EAAAA,EAAA,IAAAA,EAAA,IAAAA,EAAA,IAAA,EAAAA,EAAA,KAAAA,EAAA,IAAAA,EAAA,KAAA,EAAAA,EAAA,KAEAmtN,QAAA,SAAA70K,GACA,GAAA87I,GAAA5qL,KAAA64J,KAAA/pH,GAAA,EAAA80K,KAAAj5B,EAAAC,EAAAg5B,EACA,OAAA,OAAAh5B,EAAA,IAAAD,EAAA,QAAAC,EAAA,KAAAD,EAAA,OAEAk5B,OAAA,SAAA/0K,GACA,GAAAt4C,GAAAwJ,KAAA64J,KAAA/pH,GAAA,CACA,OAAA,KAAAt4C,EAAA,KAAAA,EAAA,IAAAA,EAAA,KAAAA,EAAA,IAAAA,EAAA,IAAAA,EAAA,KAAAA,EAAA,IAAAA,EAAA,KAEAstN,gBAAA,SAAAh1K,GACA,GAAA67I,GAAA3qL,KAAA64J,KAAA/pH,EAAAi1K,IAAAn5B,EAAAD,EAAAo5B,GAAA,CACA,OAAA,MAAAn5B,EAAA,IAAAD,EAAA,KAAAC,EAAA,KAAAD,EAAA,KAAAC,EAAA,KAEAo5B,cAAA,SAAAl1K,GACA,GAAA67I,GAAA3qL,KAAA64J,KAAA/pH,EAAAi1K,IAAAn5B,EAAAD,EAAAo5B,GAAA,CACA,OAAA,OAAAn5B,EAAA,IAAAD,EAAA,IAAAC,EAAA,KAAAD,EAAA,IAAAC,EAAA,MAGAvmB,IAAA1tD,IAAAstG,YAAAR,GAAAp1K,MACA,IAAA01K,IAAA/jN,KAAA64J,KAAA,GAAA+qD,GAAA5jN,KAAA0lL,IAAA,GAAAra,GACAtG,IAAAt2I,WAAA,SAAAhc,GAOA,IAAA,GANAwuL,GAAAryJ,EAAAzmC,EAAA49L,MAAAme,GAAAr+C,EAAAq3B,GAAAzqL,GAAA0uL,KAAA1yK,EAAA01L,KACA57K,KAAA1gC,KAAAzG,MACAo8L,KAAA7P,GACAlvK,MAAA,EACAtb,SAAA,KAEAvJ,GAAA,EAAA0B,EAAA1F,KAAAW,SAAAqD,EAAA0B,GAAA,CACA6lM,EAAAhlM,KAAA8kM,KACA,KAAA,GAAAnhK,GAAAlqC,KAAAgE,GAAAzC,GAAA,EAAAoE,EAAAukC,EAAAvpC,SAAAY,EAAAoE,IACAqzC,EAAA9O,EAAA3oC,KAAAgmM,GAAAvuJ,EAAAz3C,EAAA0uK,EAAA19J,EAAAsmB,GACAwyK,EAAA9kM,KAAAyyC,GAGA,MAAAiuJ,IAAAsE,EAAAt7B,EAAA19J,IAEA48J,GAAA63B,UAAA,SAAAnqL,GACA,MAAA7c,MAAA6B,KAAA,MAAAgb,EAAAmyL,GAAAlI,GAAAQ,GAAAzqL,KAEA,IAmBAszL,IAAAoe,GAnBAvf,GAAAlI,GAAAQ,MAmBAJ,MAAAonB,GAAA,CACApnB,IAAA7lM,KAAA8tK,GAAA9tK,KACA6lM,GAAA96L,MAAA+iK,GAAA/iK,MACA86L,GAAAluJ,KAAAm2H,GAAAn2H,KACAkuJ,GAAAhuJ,KAAAi2H,GAAAj2H,KACAu1H,GAAA51I,WAAA,SAAAqvB,EAAArrC,GACA,MAAAqrC,IAAAA,EAAArvB,WAAAs3K,GAAAjoJ,EAAArvB,WAAAhc,GAAAqrC,EAAAumH,GAAAvmH,YAAArvB,WAAAqvB,IAEAumH,GAAA51I,WAAAjuB,UAAAs8L,GACAA,GAAAhtL,OAAA,SAAAD,GACA,GAAAoxL,GAAAC,EAAAtyJ,EAAAzmC,EAAAvS,KAAAuS,GAAA09J,EAAAjwK,KAAAqf,UAAAksL,IACAtxL,GAAAm1J,EAAAn1J,EACA,KAAA,GAAAjW,IAAA,EAAA0B,EAAA1F,KAAAW,SAAAqD,EAAA0B,GAAA,CACA6lM,EAAAhlM,KAAA8kM,KACA,KAAA,GAAAnhK,GAAAlqC,KAAAgE,GAAAzC,GAAA,EAAAoE,EAAAukC,EAAAvpC,SAAAY,EAAAoE,IACAqzC,EAAA9O,EAAA3oC,MAAA+pM,EAAArxL,EAAA5Y,KAAA23C,EAAAA,EAAA44H,SAAArwK,EAAAyC,KACA,YAAAg1C,KAAAsyJ,EAAA15B,SAAA54H,EAAA44H,UACA21B,GAAA+D,EAAA/pM,EAAA0uK,EAAA19J,EAAAymC,EAAAi3H,GAAA19J,IACA84L,EAAA9kM,KAAA+kM,IAEAD,EAAA9kM,KAAA,MAIA,MAAA0gM,IAAAsE,EAAAt7B,EAAA19J,IAEA20L,GAAA54G,UAAA,SAAAr0E,GACA,GAAAoxL,GAAAmjB,EAAAx1K,EAAAsyJ,EAAAzyK,EAAAtmB,EAAAvS,KAAAuS,GAAA09J,EAAAjwK,KAAAqf,UAAAksL,IACAtxL,GAAAq1J,EAAAr1J,EACA,KAAA,GAAAjW,IAAA,EAAA0B,EAAA1F,KAAAW,SAAAqD,EAAA0B,GACA,IAAA,GAAAwkC,GAAAlqC,KAAAgE,GAAAzC,GAAA,EAAAoE,EAAAukC,EAAAvpC,SAAAY,EAAAoE,GACA,GAAAqzC,EAAA9O,EAAA3oC,GAAA,CACAs3B,EAAAmgB,EAAAi3H,GAAA19J,GACAi8M,EAAAv0M,EAAA5Y,KAAA23C,EAAAA,EAAA44H,SAAArwK,EAAAyC,GACAunM,EAAAhlM,KAAA8kM,KACA,KAAA,GAAAnnM,IAAA,EAAA0B,EAAA4oN,EAAA7tN,SAAAuD,EAAA0B,IACA0lM,EAAAkjB,EAAAtqN,KAAAqjM,GAAA+D,EAAApnM,EAAA+rK,EAAA19J,EAAAsmB,GACAwyK,EAAA9kM,KAAA+kM,GAKA,MAAArE,IAAAsE,EAAAt7B,EAAA19J,IAEA20L,GAAAxlM,OAAA,SAAAA,GACA,GAAA2pM,GAAAnhK,EAAA8O,EAAAuyJ,IACA,mBAAA7pM,KAAAA,EAAAmwK,EAAAnwK,GACA,KAAA,GAAAsC,GAAA,EAAA0B,EAAA1F,KAAAW,OAAAqD,EAAA0B,EAAA1B,IAAA,CACAunM,EAAAhlM,KAAA8kM,KACA,KAAA,GAAAnhK,GAAAlqC,KAAAgE,GAAAzC,EAAA,EAAAoE,EAAAukC,EAAAvpC,OAAAY,EAAAoE,EAAApE,KACAy3C,EAAA9O,EAAA3oC,KAAAG,EAAAL,KAAA23C,EAAAA,EAAA44H,SAAArwK,EAAAyC,IACAqnM,EAAA9kM,KAAAyyC,GAIA,MAAAiuJ,IAAAsE,EAAAvrM,KAAAqf,UAAArf,KAAAuS,KAEA20L,GAAAE,MAAA,SAAAvqL,EAAAuqL,GACA,GAAA70L,GAAAvS,KAAAuS,GAAA09J,EAAAjwK,KAAAqf,SACA,OAAAnY,WAAAvG,OAAA,EAAAX,KAAAg5C,OAAAi3H,GAAA19J,GAAA60L,MAAApiM,IAAA6X,GACAo1J,EAAAjyK,KAAA,MAAAonM,EAAA,SAAApuJ,GACAA,EAAAi3H,GAAA19J,GAAA60L,MAAAx6L,OAAAiQ,IACA,SAAAm8B,GACAA,EAAAi3H,GAAA19J,GAAA60L,MAAA3jM,IAAAoZ,EAAAuqL,MAWAF,GAAAnwL,KAAA,SAAA03M,EAAAn7M,GAMA,QAAAm8J,KACAzvK,KAAA0H,gBAAAmV,GAEA,QAAA6yJ,KACA1vK,KAAA2vK,kBAAA9yJ,EAAAy9D,MAAAz9D,EAAA4iC,OAEA,QAAAivK,GAAAhvN,GACA,MAAA,OAAAA,EAAA+vK,GAAA/vK,GAAA,GAAA,WACA,GAAA6B,GAAA9B,EAAAO,KAAAuD,aAAAsZ,EACA,OAAApd,KAAAC,IAAA6B,EAAAgiL,EAAA9jL,EAAAC,GAAA,SAAAkR,GACA5Q,KAAA4S,aAAAiK,EAAAtb,EAAAqP,QAIA,QAAA+9M,GAAAjvN,GACA,MAAA,OAAAA,EAAAgwK,GAAAhwK,GAAA,GAAA,WACA,GAAA6B,GAAA9B,EAAAO,KAAA4rM,eAAA/uL,EAAAy9D,MAAAz9D,EAAA4iC,MACA,OAAAhgD,KAAAC,IAAA6B,EAAAgiL,EAAA9jL,EAAAC,GAAA,SAAAkR,GACA5Q,KAAA8vK,eAAAjzJ,EAAAy9D,MAAAz9D,EAAA4iC,MAAAl+C,EAAAqP,QAvBA,GAAA1J,UAAAvG,OAAA,EAAA,CACA,IAAA2S,IAAAm7M,GAAAzuN,KAAA+W,KAAAzD,EAAAm7M,EAAAn7M,GACA,OAAAtT,MAEA,GAAAujL,GAAA,aAAAkrC,EAAAx0B,GAAAlD,GAAAl6K,EAAA4xJ,GAAAwB,GAAAC,QAAAu+C,EAuBA,OAAAtnB,IAAAnnM,KAAA,QAAAyuN,EAAAn7M,EAAAuJ,EAAA4iC,MAAAkvK,EAAAD,IAEAxnB,GAAAwnB,UAAA,SAAAD,EAAArnB,GAEA,QAAAsnB,GAAAxuN,EAAAqB,GACA,GAAAoC,GAAAyjM,EAAA/lM,KAAArB,KAAAE,EAAAqB,EAAAvB,KAAAuD,aAAAsZ,GACA,OAAAlZ,IAAA,SAAAiN,GACA5Q,KAAA4S,aAAAiK,EAAAlZ,EAAAiN,KAGA,QAAA+9M,GAAAzuN,EAAAqB,GACA,GAAAoC,GAAAyjM,EAAA/lM,KAAArB,KAAAE,EAAAqB,EAAAvB,KAAA4rM,eAAA/uL,EAAAy9D,MAAAz9D,EAAA4iC,OACA,OAAA97C,IAAA,SAAAiN,GACA5Q,KAAA8vK,eAAAjzJ,EAAAy9D,MAAAz9D,EAAA4iC,MAAA97C,EAAAiN,KAVA,GAAAiM,GAAA4xJ,GAAAwB,GAAAC,QAAAu+C,EAaA,OAAAzuN,MAAAonM,MAAA,QAAAqnB,EAAA5xM,EAAA4iC,MAAAkvK,EAAAD,IAEAxnB,GAAA7iM,MAAA,SAAAwY,EAAAvJ,EAAAumD,GAUA,QAAAg3G,KACA7wK,KAAAqE,MAAAysK,eAAAj0J,GAEA,QAAA+xM,GAAAlvN,GACA,MAAA,OAAAA,EAAAmxK,GAAAnxK,GAAA,GAAA,WACA,GAAA6B,GAAA9B,EAAA8sK,EAAAvsK,MAAA0kB,iBAAA1kB,KAAA,MAAAqJ,iBAAAwT,EACA,OAAApd,KAAAC,IAAA6B,EAAAw1L,GAAAt3L,EAAAC,GAAA,SAAAkR,GACA5Q,KAAAqE,MAAAiiB,YAAAzJ,EAAAtb,EAAAqP,GAAAipD,OAhBA,GAAAl0D,GAAAuB,UAAAvG,MACA,IAAAgF,EAAA,EAAA,CACA,GAAA,gBAAAkX,GAAA,CACAlX,EAAA,IAAA2N,EAAA,GACA,KAAAumD,IAAAh9C,GAAA7c,KAAAqE,MAAAw1D,EAAAh9C,EAAAg9C,GAAAvmD,EACA,OAAAtT,MAEA65D,EAAA,GAaA,MAAAstI,IAAAnnM,KAAA,SAAA6c,EAAAvJ,EAAAs7M,IAEA1nB,GAAA2nB,WAAA,SAAAhyM,EAAAuqL,EAAAvtI,GAEA,QAAAg1J,GAAA3uN,EAAAqB,GACA,GAAAoC,GAAAyjM,EAAA/lM,KAAArB,KAAAE,EAAAqB,EAAAgrK,EAAAvsK,MAAA0kB,iBAAA1kB,KAAA,MAAAqJ,iBAAAwT,GACA,OAAAlZ,IAAA,SAAAiN,GACA5Q,KAAAqE,MAAAiiB,YAAAzJ,EAAAlZ,EAAAiN,GAAAipD,IAGA,MAPA3yD,WAAAvG,OAAA,IAAAk5D,EAAA,IAOA75D,KAAAonM,MAAA,SAAAvqL,EAAAgyM,IAEA3nB,GAAA7mM,KAAA,SAAAiT,GACA,MAAA6zL,IAAAnnM,KAAA,OAAAsT,EAAA+zL,KAQAH,GAAAt6L,OAAA,WACA,GAAAqjK,GAAAjwK,KAAAqf,SACA,OAAArf,MAAA6B,KAAA,iBAAA,WACA,GAAA5B,EACAD,MAAAiwK,GAAAn8H,MAAA,IAAA7zC,EAAAD,KAAAQ,aAAAP,EAAAQ,YAAAT,SAGAknM,GAAAU,KAAA,SAAAt0L,GACA,GAAAf,GAAAvS,KAAAuS,GAAA09J,EAAAjwK,KAAAqf,SACA,OAAAnY,WAAAvG,OAAA,EAAAX,KAAAg5C,OAAAi3H,GAAA19J,GAAAq1L,MACA,kBAAAt0L,KAAAA,EAAAm7J,GAAAm5B,KAAAplM,MAAAisK,GAAAvnK,YACA+qK,EAAAjyK,KAAA,SAAAg5C,GACAA,EAAAi3H,GAAA19J,GAAAq1L,KAAAt0L,MAGA4zL,GAAAr+K,MAAA,SAAAvV,GACA,GAAAf,GAAAvS,KAAAuS,GAAA09J,EAAAjwK,KAAAqf,SACA,OAAAnY,WAAAvG,OAAA,EAAAX,KAAAg5C,OAAAi3H,GAAA19J,GAAAsW,MACAopJ,EAAAjyK,KAAA,kBAAAsT,GAAA,SAAA0lC,EAAAz3C,EAAAyC,GACAg1C,EAAAi3H,GAAA19J,GAAAsW,OAAAvV,EAAAjS,KAAA23C,EAAAA,EAAA44H,SAAArwK,EAAAyC,KACAsP,GAAAA,EAAA,SAAA0lC,GACAA,EAAAi3H,GAAA19J,GAAAsW,MAAAvV,MAGA4zL,GAAA35L,SAAA,SAAA+F,GACA,GAAAf,GAAAvS,KAAAuS,GAAA09J,EAAAjwK,KAAAqf,SACA,OAAAnY,WAAAvG,OAAA,EAAAX,KAAAg5C,OAAAi3H,GAAA19J,GAAAhF,SACA0kK,EAAAjyK,KAAA,kBAAAsT,GAAA,SAAA0lC,EAAAz3C,EAAAyC,GACAg1C,EAAAi3H,GAAA19J,GAAAhF,SAAAnD,KAAAC,IAAA,EAAAiJ,EAAAjS,KAAA23C,EAAAA,EAAA44H,SAAArwK,EAAAyC,MACAsP,EAAAlJ,KAAAC,IAAA,EAAAiJ,GAAA,SAAA0lC,GACAA,EAAAi3H,GAAA19J,GAAAhF,SAAA+F,MAGA4zL,GAAArlM,KAAA,SAAAhB,EAAA0tK,GACA,GAAAh8J,GAAAvS,KAAAuS,GAAA09J,EAAAjwK,KAAAqf,SACA,IAAAnY,UAAAvG,OAAA,EAAA,CACA,GAAA6mM,GAAA+mB,GAAAO,EAAA3e,EACA,KACAA,GAAA59L,EACA0/J,EAAAjyK,KAAA,SAAAg5C,EAAAz3C,EAAAyC,GACAuqN,GAAAv1K,EAAAi3H,GAAA19J,GACA1R,EAAAQ,KAAA23C,EAAAA,EAAA44H,SAAArwK,EAAAyC,KAEA,QACAuqN,GAAA/mB,EACA2I,GAAA2e,OAGA78C,GAAAjyK,KAAA,SAAAg5C,GACA,GAAAngB,GAAAmgB,EAAAi3H,GAAA19J,IACAsmB,EAAAzxB,QAAAyxB,EAAAzxB,MAAAqnK,GAAAzvJ,SAAA,QAAA,MAAA,eAAA0E,GAAA7iB,EAAA0tK,IAGA,OAAAvuK,OAEAknM,GAAAruK,WAAA,WAEA,IAAA,GADAwyK,GAAAnhK,EAAA8O,EAAAngB,EAAAk2L,EAAA/uN,KAAAuS,GAAAy8M,IAAAV,GAAAr+C,EAAAjwK,KAAAqf,UAAAksL,KACAvnM,EAAA,EAAA0B,EAAA1F,KAAAW,OAAAqD,EAAA0B,EAAA1B,IAAA,CACAunM,EAAAhlM,KAAA8kM,KACA,KAAA,GAAAnhK,GAAAlqC,KAAAgE,GAAAzC,EAAA,EAAAoE,EAAAukC,EAAAvpC,OAAAY,EAAAoE,EAAApE,KACAy3C,EAAA9O,EAAA3oC,MACAs3B,EAAAmgB,EAAAi3H,GAAA8+C,GACAxnB,GAAAvuJ,EAAAz3C,EAAA0uK,EAAA++C,GACAr8K,KAAA9Z,EAAA8Z,KACAi1J,KAAA/uK,EAAA+uK,KACA/+K,MAAAgQ,EAAAhQ,MAAAgQ,EAAAtrB,SACAA,SAAAsrB,EAAAtrB,YAGA89L,EAAA9kM,KAAAyyC,GAGA,MAAAiuJ,IAAAsE,EAAAt7B,EAAA++C,IAgFAvgD,GAAA1tD,IAAApiC,KAAA,WAEA,QAAAA,GAAA/6E,GACAA,EAAA/B,KAAA,WACA,GAEAotN,GAFArrN,EAAA6qK,GAAAv0J,OAAAla,MACAkvM,EAAAlvM,KAAAyuM,WAAA12B,EAAA23B,EAAA1vM,KAAAyuM,UAAA12B,EAAAjrG,OACAuzH,EAAA,MAAA6uB,EAAAxf,EAAArP,MAAAqP,EAAArP,MAAA79L,MAAAktM,EAAAyf,GAAAzf,EAAApQ,SAAA4vB,EAAA3uB,EAAA,MAAA6uB,EAAA1f,EAAAnP,WAAAmP,EAAAnP,WAAA/9L,MAAAktM,EAAAyf,GAAAvhD,EAAAwhD,EAAA/jN,EAAAzH,EAAA0qF,UAAA,SAAAj+E,KAAAgwL,EAAAqP,GAAA2f,EAAAhkN,EAAAsyB,QAAAqrD,OAAA,IAAA,WAAAjyE,KAAA,QAAA,QAAA1S,MAAA,UAAAo9K,IAAA6tC,EAAA7gD,GAAA51I,WAAAxtB,EAAA+rI,QAAA/yI,MAAA,UAAAo9K,IAAA70K,SAAA2iN,EAAA9gD,GAAA51I,WAAAxtB,EAAA2a,SAAA3hB,MAAA,UAAA,GAAAmrN,EAAAplN,KAAAC,IAAAolN,EAAA,GAAAC,EACAznK,EAAAs3I,GAAAmQ,GAAAx+E,EAAAttH,EAAA0qF,UAAA,WAAAj+E,MAAA,IAAAs/M,GAAAz+F,EAAAvzF,QAAA7Z,OAAA,QAAA/M,KAAA,QAAA,UACA03J,GAAA51I,WAAAq4F,GACAm+F,GAAAvrM,OAAA,QACAurM,EAAAvrM,OAAA,OACA,IAAAyyG,GAAAE,EAAAD,EAAAE,EAAAk5F,EAAAP,EAAAn1M,OAAA,QAAA21M,EAAAN,EAAAr1M,OAAA,QAAA7Z,EAAAgL,EAAA6O,OAAA,QAAA7Z,KAAAkgM,GAAAuvB,EAAAT,EAAAn1M,OAAA,QAAA61M,EAAAR,EAAAr1M,OAAA,QAAA2+J,EAAA,QAAAm3C,GAAA,SAAAA,GAAA,EAAA,CAcA,IAbA,WAAAA,GAAA,QAAAA,GACAf,EAAApnB,GAAAtxE,EAAA,IAAAC,EAAA,IAAAC,EAAA,KAAAC,EAAA,KACAr2H,EAAA0W,KAAA,KAAA8hK,EAAA,EAAA,MAAA,SAAAx0K,MAAA,cAAA,UACAsrN,EAAA54M,KAAA,IAAA,IAAAkxC,EAAA,GAAA,IAAA4wH,EAAAo3C,EAAA,MAAAhoK,EAAA,GAAA,IAAA4wH,EAAAo3C,KAEAhB,EAAAnnB,GAAAvxE,EAAA,IAAAC,EAAA,IAAAC,EAAA,KAAAC,EAAA,KACAr2H,EAAA0W,KAAA,KAAA,SAAA1S,MAAA,cAAAw0K,EAAA,EAAA,MAAA,SACA82C,EAAA54M,KAAA,IAAA,IAAA8hK,EAAAo3C,EAAA,IAAAhoK,EAAA,GAAA,MAAAA,EAAA,GAAA,IAAA4wH,EAAAo3C,IAEAL,EAAA74M,KAAA2/G,EAAAmiD,EAAA42C,GACAK,EAAA/4M,KAAAy/G,EAAAqiD,EAAA22C,GACAK,EAAA94M,KAAA0/G,EAAA,GAAA1/G,KAAA2/G,EAAAmiD,EAAA42C,GACAM,EAAAh5M,KAAAw/G,EAAA,GAAAx/G,KAAAy/G,EAAAqiD,EAAA22C,GACA9f,EAAA/N,UAAA,CACA,GAAAtvL,GAAAq9L,EAAAnxH,EAAAlsE,EAAAsvL,YAAA,CACAuN,GAAAQ,EAAA,SAAAxvM,GACA,MAAAmS,GAAAnS,GAAAq+E,OAEA2wH,GAAAvN,UACAuN,EAAAQ,EAEA4f,EAAAjuN,KAAA4tN,EAAAvf,EAAAR,EAEAmgB,GAAAhuN,KAAA4tN,EAAA/f,EAAAQ,GACA6f,EAAAluN,KAAA4tN,EAAAvf,EAAAA,KAnCA,GAAA0f,GAAAr3C,EAAAtJ,GAAAsJ,MAAA1wJ,SAAA2oM,EAAAE,GAAAT,EAAA,EAAAQ,EAAA,EAAAP,EAAA,EAAAP,GAAA,IAAAD,EAAA,IAwFA,OAlDAvwI,GAAAo5F,MAAA,SAAA1lK,GACA,MAAAnL,WAAAvG,QACAo3K,EAAA1lK,EACAssE,GAFAo5F,GAIAp5F,EAAAqxI,OAAA,SAAA39M,GACA,MAAAnL,WAAAvG,QACAqvN,EAAA39M,IAAA89M,IAAA99M,EAAA,GAAA69M,GACAvxI,GAFAqxI,GAIArxI,EAAA0hH,MAAA,WACA,MAAAn5L,WAAAvG,QACAwuN,EAAAx8C,GAAAzrK,WACAy3E,GAFAwwI,GAIAxwI,EAAAuwI,WAAA,SAAA78M,GACA,MAAAnL,WAAAvG,QACAuuN,EAAA78M,EACAssE,GAFAuwI,GAIAvwI,EAAA4hH,WAAA,SAAAluL,GACA,MAAAnL,WAAAvG,QACAyuN,EAAA/8M,EACAssE,GAFAywI,GAIAzwI,EAAAyxI,SAAA,SAAA/9M,GACA,GAAA1M,GAAAuB,UAAAvG,MACA,OAAAgF,IACA8pN,GAAAp9M,EACA49M,GAAA/oN,UAAAvB,EAAA,GACAg5E,GAHA8wI,GAKA9wI,EAAA8wI,cAAA,SAAAp9M,GACA,MAAAnL,WAAAvG,QACA8uN,GAAAp9M,EACAssE,GAFA8wI,GAIA9wI,EAAAsxI,cAAA,SAAA59M,GACA,MAAAnL,WAAAvG,QACAsvN,GAAA59M,EACAssE,GAFAsxI,GAIAtxI,EAAA+wI,YAAA,SAAAr9M,GACA,MAAAnL,WAAAvG,QACA+uN,GAAAr9M,EACAssE,GAFA+wI,GAIA/wI,EAAA0xI,cAAA,WACA,MAAAnpN,WAAAvG,QAAAg+E,GAEAA,EAEA,IAAAuxI,IAAA,SAAAC,IACAr6M,IAAA,EACA+mB,MAAA,EACAyB,OAAA,EACA5X,KAAA,EAcA+nJ,IAAA1tD,IAAAuvG,MAAA,WAEA,QAAAA,GAAA1sN,GACAA,EAAA/B,KAAA,WACA,GAAA+B,GAAA6qK,GAAAv0J,OAAAla,MAAAqE,MAAA,iBAAA,OAAAA,MAAA,8BAAA,iBAAAqf,GAAA,kBAAA6sM,GAAA7sM,GAAA,mBAAA6sM,GACA/9I,EAAA5uE,EAAA0qF,UAAA,eAAAj+E,MAAA,GACAmiE,GAAA70C,QAAA7Z,OAAA,QAAA/M,KAAA,QAAA,cAAA1S,MAAA,aAAA,UAAAA,MAAA,SAAA,aACAT,EAAA0qF,UAAA,WAAAj+E,MAAA,IAAAstB,QAAA7Z,OAAA,QAAA/M,KAAA,QAAA,UAAA1S,MAAA,SAAA,OACA,IAAA03B,GAAAn4B,EAAA0qF,UAAA,WAAAj+E,KAAAmgN,EAAA5iD,EACA7xI,GAAAq7G,OAAAxqI,SACAmvB,EAAA4B,QAAA7Z,OAAA,KAAA/M,KAAA,QAAA,SAAA7W,GACA,MAAA,UAAAA,IACAmE,MAAA,SAAA,SAAAnE,GACA,MAAAuwN,IAAAvwN,KACA4jB,OAAA,QAAA/M,KAAA,IAAA,SAAA7W,GACA,MAAA,QAAAuB,KAAAvB,IAAA,EAAA,OACA6W,KAAA,IAAA,SAAA7W,GACA,MAAA,QAAAuB,KAAAvB,IAAA,EAAA,OACA6W,KAAA,QAAA,GAAAA,KAAA,SAAA,GAAA1S,MAAA,aAAA,UACA03B,EAAA13B,MAAA,UAAAisN,EAAAlkN,QAAA,OAAA,KACA,IAAA67C,GAAAyoK,EAAAjiD,GAAA51I,WAAAj1B,GAAA+sN,EAAAliD,GAAA51I,WAAA25C,EACAngE,KACA41C,EAAAs3I,GAAAltL,GACAs+M,EAAA55M,KAAA,IAAAkxC,EAAA,IAAAlxC,KAAA,QAAAkxC,EAAA,GAAAA,EAAA,IACA2oK,EAAAF,IAEAx8M,IACA+zC,EAAAs3I,GAAArrL,GACAy8M,EAAA55M,KAAA,IAAAkxC,EAAA,IAAAlxC,KAAA,SAAAkxC,EAAA,GAAAA,EAAA,IACA4oK,EAAAH,IAEAI,EAAAJ,KAyDA,QAAAI,GAAAltN,GACAA,EAAA0qF,UAAA,WAAAv3E,KAAA,YAAA,SAAA7W,GACA,MAAA,aAAA6wN,GAAA,KAAAtvN,KAAAvB,IAAA,IAAA8wN,GAAA,KAAAvvN,KAAAvB,IAAA,MAGA,QAAA0wN,GAAAhtN,GACAA,EAAAsW,OAAA,WAAAnD,KAAA,IAAAg6M,EAAA,IACAntN,EAAA0qF,UAAA,2BAAAv3E,KAAA,QAAAg6M,EAAA,GAAAA,EAAA,IAEA,QAAAF,GAAAjtN,GACAA,EAAAsW,OAAA,WAAAnD,KAAA,IAAAi6M,EAAA,IACAptN,EAAA0qF,UAAA,2BAAAv3E,KAAA,SAAAi6M,EAAA,GAAAA,EAAA,IAEA,QAAAT,KAwBA,QAAAn2L,KACA,IAAAq0I,GAAArnK,MAAAob,UACAyuM,IACAhkC,EAAA,KACA38I,EAAA,IAAAygL,EAAA,GACAzgL,EAAA,IAAA0gL,EAAA,GACAC,EAAA,GAEAziD,KAGA,QAAA0iD,KACA,IAAAziD,GAAArnK,MAAAob,SAAA,GAAAyuM,IACA3gL,EAAA,IAAAygL,EAAA,GACAzgL,EAAA,IAAA0gL,EAAA,GACAC,EAAA,EACAziD,KAGA,QAAA2iD,KACA,GAAAp8D,GAAA0Z,GAAA69B,MAAAn0L,GAAAigF,GAAA,CACAnnE,KACA8jI,EAAA,IAAA9jI,EAAA,GACA8jI,EAAA,IAAA9jI,EAAA,IAEAggM,IACAxiD,GAAArnK,MAAAqa,QACAwrK,IAAAA,IAAA8jC,EAAA,GAAAA,EAAA,IAAA,GAAAC,EAAA,GAAAA,EAAA,IAAA,IACA1gL,EAAA,GAAAygL,IAAAh8D,EAAA,GAAAk4B,EAAA,KACA38I,EAAA,GAAA0gL,IAAAj8D,EAAA,GAAAk4B,EAAA,MACAA,EAAA,MAEAmkC,GAAAC,EAAAt8D,EAAA1iJ,EAAA,KACAu+M,EAAAhtN,GACAw0F,GAAA,GAEAk5H,GAAAD,EAAAt8D,EAAA7gJ,EAAA,KACA28M,EAAAjtN,GACAw0F,GAAA,GAEAA,IACA04H,EAAAltN,GACA2tN,GACA1wN,KAAA,QACA4xD,KAAAw+J,EAAA,OAAA,YAIA,QAAAI,GAAAt8D,EAAAgjB,EAAAx2K,GACA,GAAA+3D,GAAAjvD,EAAA49C,EAAAs3I,GAAAxnB,GAAAlvG,EAAA5gB,EAAA,GAAA6gB,EAAA7gB,EAAA,GAAA5iC,EAAAirB,EAAA/uC,GAAAmyL,EAAAnyL,EAAAyvN,EAAAD,EAAA73K,EAAAw6I,EAAA,GAAAA,EAAA,EAiBA,IAhBAu9B,IACApoJ,GAAAxjD,EACAyjD,GAAA5vB,EAAA7zB,GAEAi0C,GAAA/3D,EAAAiwN,EAAAC,GAAArnN,KAAAC,IAAAw+D,EAAAz+D,KAAAkvD,IAAAwP,EAAAisF,EAAAxzJ,KAAAwzJ,EAAAxzJ,GACA0vN,EACA5mN,GAAAivD,GAAAj0C,GAAA6zB,GAEA+zI,IAAA5nK,EAAAjb,KAAAC,IAAAw+D,EAAAz+D,KAAAkvD,IAAAwP,EAAA,EAAAmkH,EAAA1rL,GAAA+3D,KACAj0C,EAAAi0C,GACAjvD,EAAAivD,EACAA,EAAAj0C,GAEAhb,EAAAgb,GAGAquK,EAAA,IAAAp6H,GAAAo6H,EAAA,IAAArpL,EAIA,MAHA9I,GAAAmwN,EAAA,KAAAC,EAAA,KACAj+B,EAAA,GAAAp6H,EACAo6H,EAAA,GAAArpL,GACA,EAGA,QAAAunN,KACAT,IACAvtN,EAAAS,MAAA,iBAAA,OAAAiqF,UAAA,WAAAjqF,MAAA,UAAAisN,EAAAlkN,QAAA,OAAA,MACAqiK,GAAAv0J,OAAA,QAAA7V,MAAA,SAAA,MACA3D,EAAAgjB,GAAA,kBAAA,MAAAA,GAAA,gBAAA,MAAAA,GAAA,kBAAA,MAAAA,GAAA,iBAAA,MAAAA,GAAA,gBAAA,MAAAA,GAAA,cAAA,MACAwpL,IACAqkB,GACA1wN,KAAA,aAvGA,GAAAosL,GAAAh8J,EAAA9Y,EAAAnY,KAAA6xN,EAAApjD,GAAAv0J,OAAAu0J,GAAArnK,MAAA+Q,QAAAo5M,EAAAnqN,EAAAwsD,GAAAz7C,EAAAjR,WAAAtD,EAAA6qK,GAAAv0J,OAAA/B,GAAA25M,EAAAD,EAAA30K,QAAAk0K,GAAA,UAAA3vN,KAAAqwN,IAAAz/M,EAAAi/M,GAAA,UAAA7vN,KAAAqwN,IAAA59M,EAAA+8M,EAAAY,EAAAhmB,QAAA,UAAAqB,EAAAj6B,EAAA96J,GAAAm4B,EAAAm+H,GAAA69B,MAAAn0L,GACAzX,EAAA+tK,GAAAv0J,OAAAqyJ,EAAAp0J,IAAAuL,GAAA,gBAAA0W,GAAA1W,GAAA,cAAAwtM,EAOA,IANAziD,GAAArnK,MAAAwa,eACAlhB,EAAAgjB,GAAA,kBAAAytM,GAAAztM,GAAA,iBAAAkuM,GAEAlxN,EAAAgjB,GAAA,kBAAAytM,GAAAztM,GAAA,gBAAAkuM,GAEAhuN,EAAAojM,YAAA14G,UAAA,KAAA04G,YACAiqB,EACA3gL,EAAA,GAAAygL,EAAA,GAAAzgL,EAAA,GACAA,EAAA,GAAA0gL,EAAA,GAAA1gL,EAAA,OACA,IAAAwhL,EAAA,CACA,GAAA3rD,IAAA,KAAA1kK,KAAAqwN,GAAAC,GAAA,KAAAtwN,KAAAqwN,EACA7gM,IAAA8/L,EAAA,EAAA5qD,GAAA71H,EAAA,GAAA0gL,EAAA,EAAAe,GAAAzhL,EAAA,IACAA,EAAA,GAAAygL,EAAA5qD,GACA71H,EAAA,GAAA0gL,EAAAe,OACAtjD,IAAArnK,MAAAqa,SAAAwrK,EAAA38I,EAAA7tC,QACAmB,GAAAS,MAAA,iBAAA,QAAAiqF,UAAA,WAAAjqF,MAAA,UAAA,MACAoqK,GAAAv0J,OAAA,QAAA7V,MAAA,SAAAwtN,EAAAxtN,MAAA,WACAktN,GACA1wN,KAAA,eAEAswN,IA3HA,GAAAQ,GAAAD,EAAAtqN,EAAAwnK,EAAA0hD,EAAA,aAAA,QAAA,YAAAj+M,EAAA,KAAA6B,EAAA,KAAA68M,GAAA,EAAA,GAAAC,GAAA,EAAA,GAAAS,GAAA,EAAAD,GAAA,EAAAhB,EAAAwB,GAAA,EAoRA,OAnPA1B,GAAAlpN,MAAA,SAAAxD,GACAA,EAAA/B,KAAA,WACA,GAAA0vN,GAAAnqN,EAAAwsD,GAAA5zD,KAAAkH,WAAA+qN,GACA5/M,EAAA0+M,EACA78M,EAAA88M,EACAzvN,EAAAowN,EACA3tN,EAAA0tN,GACAQ,EAAAlyN,KAAAyuM,WAAAwjB,CACAjyN,MAAAyuM,UAAAwjB,EACA9hB,GACA1hC,GAAAv0J,OAAAla,MAAA64B,aAAAh3B,KAAA,cAAA,WACA8vN,EAAAO,EAAA3wN,EACAmwN,EAAAQ,EAAAluN,EACA+sN,EAAAmB,EAAA7/M,EACA2+M,EAAAkB,EAAAh+M,EACAq9M,GACA1wN,KAAA,iBAEAumM,MAAA,cAAA,WACA,GAAAxF,GAAApK,GAAAu5B,EAAAkB,EAAA5/M,GAAA8/M,EAAA36B,GAAAw5B,EAAAiB,EAAA/9M,EAEA,OADAy9M,GAAAD,EAAA,KACA,SAAA9gN,GACAmgN,EAAAkB,EAAA5/M,EAAAuvL,EAAAhxL,GACAogN,EAAAiB,EAAA/9M,EAAAi+M,EAAAvhN,GACA2gN,GACA1wN,KAAA,QACA4xD,KAAA,cAGA5wD,KAAA,YAAA,WACA8vN,EAAAM,EAAA1wN,EACAmwN,EAAAO,EAAAjuN,EACAutN,GACA1wN,KAAA,QACA4xD,KAAA,WAEA8+J,GACA1wN,KAAA,gBAIA0wN,GACA1wN,KAAA,eAEA0wN,GACA1wN,KAAA,QACA4xD,KAAA,WAEA8+J,GACA1wN,KAAA,iBA8HAyvN,EAAAj+M,EAAA,SAAA8B,GACA,MAAAjN,WAAAvG,QACA0R,EAAA8B,EACAq8M,EAAAwB,IAAA3/M,GAAA,GAAA6B,GACAo8M,GAHAj+M,GAKAi+M,EAAAp8M,EAAA,SAAAC,GACA,MAAAjN,WAAAvG,QACAuT,EAAAC,EACAq8M,EAAAwB,IAAA3/M,GAAA,GAAA6B,GACAo8M,GAHAp8M,GAKAo8M,EAAApwB,MAAA,SAAA/rL,GACA,MAAAjN,WAAAvG,QACA0R,GAAA6B,GAAAu9M,IAAAt9M,EAAA,GAAAq9M,IAAAr9M,EAAA,IAAA9B,EAAAo/M,IAAAt9M,EAAAD,IAAAs9M,IAAAr9M,GACAm8M,GAFAj+M,GAAA6B,GAAAu9M,EAAAD,GAAAn/M,EAAAo/M,EAAAv9M,EAAAs9M,EAAA,MAIAlB,EAAA58B,OAAA,SAAAv/K,GACA,GAAAguK,GAAA5rD,EAAA0rD,EAAAzrD,EAAA5lH,CACA,OAAA1J,WAAAvG,QAqBA0R,IACA8vK,EAAAhuK,EAAA,GAAAoiH,EAAApiH,EAAA,GACAD,IAAAiuK,EAAAA,EAAA,GAAA5rD,EAAAA,EAAA,IACAo7F,GAAAxvC,EAAA5rD,GACAlkH,EAAAwmE,SAAAspG,EAAA9vK,EAAA8vK,GAAA5rD,EAAAlkH,EAAAkkH,IACAA,EAAA4rD,IAAAvxK,EAAAuxK,EAAAA,EAAA5rD,EAAAA,EAAA3lH,GACAuxK,GAAA4uC,EAAA,IAAAx6F,GAAAw6F,EAAA,KAAAA,GAAA5uC,EAAA5rD,KAEAriH,IACA+tK,EAAA9tK,EAAA,GAAAqiH,EAAAriH,EAAA,GACA9B,IAAA4vK,EAAAA,EAAA,GAAAzrD,EAAAA,EAAA,IACAk7F,GAAAzvC,EAAAzrD,GACAtiH,EAAA2kE,SAAAopG,EAAA/tK,EAAA+tK,GAAAzrD,EAAAtiH,EAAAsiH,IACAA,EAAAyrD,IAAArxK,EAAAqxK,EAAAA,EAAAzrD,EAAAA,EAAA5lH,GACAqxK,GAAA+uC,EAAA,IAAAx6F,GAAAw6F,EAAA,KAAAA,GAAA/uC,EAAAzrD,KAEA85F,IApCAj+M,IACAs/M,GACAxvC,EAAAwvC,EAAA,GAAAp7F,EAAAo7F,EAAA,KAEAxvC,EAAA4uC,EAAA,GAAAx6F,EAAAw6F,EAAA,GACA1+M,EAAAwmE,SAAAspG,EAAA9vK,EAAAwmE,OAAAspG,GAAA5rD,EAAAlkH,EAAAwmE,OAAA09C,IACAA,EAAA4rD,IAAAvxK,EAAAuxK,EAAAA,EAAA5rD,EAAAA,EAAA3lH,KAGAsD,IACAw9M,GACAzvC,EAAAyvC,EAAA,GAAAl7F,EAAAk7F,EAAA,KAEAzvC,EAAA+uC,EAAA,GAAAx6F,EAAAw6F,EAAA,GACA98M,EAAA2kE,SAAAopG,EAAA/tK,EAAA2kE,OAAAopG,GAAAzrD,EAAAtiH,EAAA2kE,OAAA29C,IACAA,EAAAyrD,IAAArxK,EAAAqxK,EAAAA,EAAAzrD,EAAAA,EAAA5lH,KAGAyB,GAAA6B,IAAAiuK,EAAAF,IAAA1rD,EAAAC,IAAAnkH,GAAA8vK,EAAA5rD,GAAAriH,IAAA+tK,EAAAzrD,KAoBA85F,EAAAtwL,MAAA,WAKA,MAJAswL,GAAAlkN,UACA2kN,GAAA,EAAA,GAAAC,GAAA,EAAA,GACAW,EAAAD,EAAA,MAEApB,GAEAA,EAAAlkN,MAAA,WACA,QAAAiG,GAAA0+M,EAAA,IAAAA,EAAA,MAAA78M,GAAA88M,EAAA,IAAAA,EAAA,IAEAviD,GAAAwI,OAAAq5C,EAAAlpN,EAAA,MAEA,IAAAqpN,KACA9qN,EAAA,YACAxD,EAAA,YACAoG,EAAA,YACA7H,EAAA,YACAqgE,GAAA,cACAonE,GAAA,cACAiqF,GAAA,cACAr9K,GAAA,eAEAi9K,KAAA,IAAA,IAAA,IAAA,IAAA,KAAA,KAAA,KAAA,OAAA,IAAA,MAAA,IAAA,SACA93C,GAAAgD,GAAAnxI,OAAA+wK,GAAAD,WACAwV,GAAAn4C,GAAAH,IACAu4C,GAAAD,GAAA,wBACAn4C,IAAAxnH,IAAAzgD,KAAArH,UAAAo9L,cAAA,GAAA/1L,MAAA,4BAAA81L,GAAAuqB,GAIAvqB,GAAA5kM,MAAA,SAAA4wD,GACA,GAAA/oB,GAAA,GAAA/4B,MAAA8hD,EACA,OAAAliD,OAAAm5B,GAAA,KAAAA,GAEA+8J,GAAAt3L,SAAA6hN,GAAA7hN,SACAysK,GAAA1nI,OAAAkkI,GAAA,SAAA1uI,GACA,MAAA,IAAA4uI,IAAA,IAAAxvK,KAAAy+B,MAAAmC,EAAA,OACA,SAAAA,EAAA/Z;AACA+Z,EAAAqxK,QAAArxK,EAAAwE,UAAA,IAAAplC,KAAAy+B,MAAA5X,KACA,SAAA+Z,GACA,MAAAA,GAAAsyI,eAEAJ,GAAAq1C,QAAAr1C,GAAA1nI,OAAAyS,MACAi1H,GAAAq1C,QAAAx4C,IAAAmD,GAAA1nI,OAAAukI,IAAA9xH,MACAi1H,GAAAs1C,OAAA94C,GAAA,SAAA1uI,GACA,MAAA,IAAA4uI,IAAA,IAAAxvK,KAAAy+B,MAAAmC,EAAA,OACA,SAAAA,EAAA/Z,GACA+Z,EAAAqxK,QAAArxK,EAAAwE,UAAA,IAAAplC,KAAAy+B,MAAA5X,KACA,SAAA+Z,GACA,MAAAA,GAAAqyI,eAEAH,GAAAu1C,QAAAv1C,GAAAs1C,OAAAvqK,MACAi1H,GAAAu1C,QAAA14C,IAAAmD,GAAAs1C,OAAAz4C,IAAA9xH,MACAi1H,GAAAw1C,KAAAh5C,GAAA,SAAA1uI,GACA,GAAA2nL,GAAA3nL,EAAA4zI,oBAAA,EACA,OAAA,IAAAhF,IAAA,MAAAxvK,KAAAy+B,MAAAmC,EAAA,KAAA2nL,GAAAA,KACA,SAAA3nL,EAAA/Z,GACA+Z,EAAAqxK,QAAArxK,EAAAwE,UAAA,KAAAplC,KAAAy+B,MAAA5X,KACA,SAAA+Z,GACA,MAAAA,GAAAiyI,aAEAC,GAAA01C,MAAA11C,GAAAw1C,KAAAzqK,MACAi1H,GAAA01C,MAAA74C,IAAAmD,GAAAw1C,KAAA34C,IAAA9xH,MACAi1H,GAAA21C,MAAAn5C,GAAA,SAAA1uI,GAGA,MAFAA,GAAAkyI,GAAAo/B,IAAAtxK,GACAA,EAAAswK,QAAA,GACAtwK,GACA,SAAAA,EAAA/Z,GACA+Z,EAAAixK,SAAAjxK,EAAA8xI,WAAA7rJ,IACA,SAAA+Z,GACA,MAAAA,GAAA8xI,aAEAI,GAAAX,OAAAW,GAAA21C,MAAA5qK,MACAi1H,GAAAX,OAAAxC,IAAAmD,GAAA21C,MAAA94C,IAAA9xH,KAsDA,IAAAkgJ,KAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,SACA2qB,KAAA51C,GAAA1nI,OAAA,IAAA0nI,GAAA1nI,OAAA,IAAA0nI,GAAA1nI,OAAA,KAAA0nI,GAAA1nI,OAAA,KAAA0nI,GAAAs1C,OAAA,IAAAt1C,GAAAs1C,OAAA,IAAAt1C,GAAAs1C,OAAA,KAAAt1C,GAAAs1C,OAAA,KAAAt1C,GAAAw1C,KAAA,IAAAx1C,GAAAw1C,KAAA,IAAAx1C,GAAAw1C,KAAA,IAAAx1C,GAAAw1C,KAAA,KAAAx1C,GAAAo/B,IAAA,IAAAp/B,GAAAo/B,IAAA,IAAAp/B,GAAAs/B,KAAA,IAAAt/B,GAAA21C,MAAA,IAAA31C,GAAA21C,MAAA,IAAA31C,GAAAkrB,KAAA,IACA2qB,GAAA74C,GAAAwC,QAAA,MAAA,SAAAx8K,GACA,MAAAA,GAAAk9K,qBACA,MAAA,SAAAl9K,GACA,MAAAA,GAAAo9K,gBACA,QAAA,SAAAp9K,GACA,MAAAA,GAAAm9K,gBACA,QAAA,SAAAn9K,GACA,MAAAA,GAAA+8K,cACA,QAAA,SAAA/8K,GACA,MAAAA,GAAAs6K,UAAA,GAAAt6K,EAAA88K,aACA,QAAA,SAAA98K,GACA,MAAA,IAAAA,EAAA88K,aACA,KAAA,SAAA98K,GACA,MAAAA,GAAA48K,cACA,KAAAqG,MACAklB,IACApgJ,MAAA,SAAA1jD,EAAA6J,EAAA8Y,GACA,MAAAunJ,IAAAxmH,MAAA79C,KAAA4vE,KAAAz1E,EAAA2iB,GAAAA,GAAA9Y,EAAA8Y,GAAAte,IAAA0/L,KAEAz/J,MAAA+kI,EACA5zF,KAAA4zF,EAEAklD,IAAA1qB,KAAAlrB,GAAAkrB,KACAlrB,GAAAnF,MAAA,WACA,MAAAkwB,IAAAx5B,GAAAsJ,MAAA1wJ,SAAAyrM,GAAAC,IAEA,IAAAC,IAAAF,GAAAlqN,IAAA,SAAAlD,GACA,OAAAA,EAAA,GAAAq0K,IAAAr0K,EAAA,MAEAutN,GAAAZ,GAAA31C,QAAA,MAAA,SAAAx8K,GACA,MAAAA,GAAA+6M,wBACA,MAAA,SAAA/6M,GACA,MAAAA,GAAAk7M,mBACA,QAAA,SAAAl7M,GACA,MAAAA,GAAAg7M,mBACA,QAAA,SAAAh7M,GACA,MAAAA,GAAA86M,iBACA,QAAA,SAAA96M,GACA,MAAAA,GAAA46M,aAAA,GAAA56M,EAAA26M,gBACA,QAAA,SAAA36M,GACA,MAAA,IAAAA,EAAA26M,gBACA,KAAA,SAAA36M,GACA,MAAAA,GAAAi7M,iBACA,KAAAh4B,KACA6vC,IAAA5qB,KAAAlrB,GAAAkrB,KAAAruB,IACAmD,GAAAnF,MAAAgC,IAAA,WACA,MAAAkuB,IAAAx5B,GAAAsJ,MAAA1wJ,SAAA2rM,GAAAC,KAEAxkD,GAAApuK,KAAAs2K,GAAA,SAAA53C,GACA,MAAAA,GAAA5uG,eAEAs+I,GAAA5hJ,KAAA,SAAAR,EAAAmtH,GACA,MAAAo9B,IAAAvqJ,EAAA,mBAAAk8K,GAAA/uD,IAKAi1B,GAAA9lK,KAAA,SAAA0jB,EAAAmtH,GACA,MAAAo9B,IAAAvqJ,EAAA,YAAAm8K,GAAAhvD,IAOAi1B,GAAA7hJ,IAAA+pJ,GAAA,SAAA53C,GACA,MAAAA,GAAAm0F,cAEA,kBAAA/gM,SAAAA,OAAAC,KAAApyB,KAAAyuK,GAAAA,GAAAt8I,OAAA,KAAAs8I,KAAA,gBAAA9uK,SAAAA,OAAAC,QAAAD,OAAAC,QAAA6uK,GAAAzuK,KAAAyuK,GAAAA,MAEA,SAAA1uK,GCj1SA,YAUA,SAAAozN,GAAA59L,GACAv1B,KAAAu1B,MAAAA,EAGA,QAAAiyK,GAAAxtI,EAAAo5J,GAEA,GAAA9iN,OAAAukD,OACAu+J,EAAAxoN,UAAA0F,OAAAukD,OAAAmF,EAAApvD,eACA,CACA,GAAAjH,GAAA,YACAA,GAAAiH,UAAAovD,EAAApvD,UACAwoN,EAAAxoN,UAAA,GAAAjH,GAKA,MAFAyvN,GAAAxoN,UAAAoG,YAAAoiN,EAEAA,EAGA,QAAAC,GAAArgM,GACA,GAAAsgM,GAAAtzN,KAAAuzN,SAAA,GAAAC,GAAAxzN,KACAszN,GAAAG,WAAAzgM,GAEAsgM,EAAAI,WAAA1gM,GACAsgM,EAAAzoN,OACAyoN,EAAAK,UAAA3gM,GAGA,QAAA4gM,GAAAjjN,EAAAwH,EAAA07M,GACAvjN,OAAAmoC,KAAA9nC,GAAA+nI,QAAA,SAAAn2H,GACApK,EAAAoK,GAAA5R,EAAA4R,GAAAsP,KAAAgiM,GACAvjN,OAAAmoC,KAAA9nC,EAAA4R,IAAA5hB,OAAA,GACAizN,EAAAjjN,EAAA4R,GAAApK,EAAAoK,GAAAsxM,MAGAC,EAAA9zN,KAAAA,MAGA,QAAAwzN,GAAAO,GACA,GAAAT,GAAAtzN,IACAszN,GAAA7kD,GAAA1uK,EAAA0uK,GAAA1uK,EAAA0uK,GAAA,mBAAAzrI,SAAAA,QAAA,MAAA9M,OACAo9L,EAAAS,IAAAA,EACAT,EAAAtgM,OAAAsgM,EAAAU,mBACAV,EAAAjjN,QACAijN,EAAAl2M,SACAk2M,EAAAW,QAqtIA,QAAAC,GAAA3+L,GACA49L,EAAA9xN,KAAArB,KAAAu1B,GAylFA,QAAA4+L,GAAA1lD,EAAA92G,GAQA,QAAAy8J,GAAAlsK,EAAA71C,GACA61C,EAAAnxC,KAAA,YAAA,SAAA7W,GACA,MAAA,aAAAkK,KAAA4vE,KAAA3nE,EAAAnS,GAAAm0N,GAAA,SAGA,QAAAC,GAAApsK,EAAAh0C,GACAg0C,EAAAnxC,KAAA,YAAA,SAAA7W,GACA,MAAA,eAAAkK,KAAA4vE,KAAA9lE,EAAAhU,IAAA,MAGA,QAAAouM,GAAAhP,GACA,GAAA/6L,GAAA+6L,EAAA,GAAAlxL,EAAAkxL,EAAAA,EAAA3+L,OAAA,EACA,OAAA4D,GAAA6J,GAAA7J,EAAA6J,IAAAA,EAAA7J,GAEA,QAAAgwN,GAAAx8C,GACA,GAAAx2K,GAAA+9L,EAAAe,IACA,IAAAtoB,EAAAsoB,MACA,MAAAtoB,GAAAsoB,MAAA79L,MAAAu1K,EAAAy8C,EAGA,KADAl1B,EAAAvnB,EAAAunB,SACA/9L,EAAA6I,KAAA4vE,KAAAslH,EAAA,IAAA/9L,EAAA+9L,EAAA,GAAA/9L,IACA8+L,EAAA95L,KAAAhF,EAKA,OAHA8+L,GAAA1/L,OAAA,GAAA0/L,EAAA,GAAA,GACAA,EAAApxL,QAAAoxL,EAAA,IAAAA,EAAA,GAAAA,EAAA,KAEAA,EAEA,QAAAo0B,KACA,GAAAn1B,GAAAo1B,EAAA38C,EAAAjrG,MAKA,OAJAnV,GAAAg9J,aACAr1B,EAAAvnB,EAAAunB,SACAo1B,EAAAp1B,QAAAA,EAAA,GAAAA,EAAA,GAAA,KAEAo1B,EAEA,QAAAE,GAAA9jN,GACA,GAAA+jN,GAAAt0B,EAAAA,EAAAzvL,GAAAA,CACA,OAAA,mBAAA+jN,GAAAA,EAAA,GAEA,QAAAC,GAAAzpN,GACA,GAAA0pN,EACA,MAAAA,EAEA,IAAA77K,IACAr1C,EAAA,KACAnD,EAAA,IAaA,OAXA2K,GAAA6O,OAAA,QAAA7Z,KAAAu0N,GAAA/yN,KAAA,SAAA3B,GACA,GAAAmsC,GAAArsC,KAAAymB,wBACApmB,EAAAu0N,EAAA10N,GACA2D,EAAAwoC,EAAA3gC,OACAhL,EAAAL,EAAAgsC,EAAA5iC,MAAApJ,EAAAM,OAAAu1B,MACAryB,IAAAnD,IACAw4C,EAAAr1C,EAAAA,EACAq1C,EAAAx4C,EAAAA,KAEAL,KAAA,IACA00N,EAAA77K,EACAA,EAEA,QAAA87K,GAAA9sK,GACA,MAAAyP,GAAAs9J,kBAAA/sK,EAAAumH,EAAA51I,WAAAqvB,GAEA,QAAAy2B,GAAA/6E,GACAA,EAAA/B,KAAA,WAqCA,QAAAqzN,GAAAh1N,EAAAyJ,GAYA,QAAAuG,GAAAilN,EAAA90N,GACA+0N,EAAAl/L,MACA,KAAA,GAAA30B,GAAA,EAAAA,EAAAlB,EAAAM,OAAAY,IAOA,GANA,MAAAlB,EAAAo0B,OAAAlzB,KACA6zN,EAAA7zN,GAEA8zN,EAAAh1N,EAAA81B,OAAA,EAAA50B,EAAA,GACA+zN,EAAAC,EAAA70N,EAAA20N,EAAA10N,OAEAgJ,EAAA2rN,EACA,MAAAplN,GACAilN,EAAAppN,OAAA1L,EAAA81B,OAAA,EAAAi/L,EAAAA,EAAA7zN,IACAlB,EAAAoC,MAAA2yN,EAAAA,EAAA,EAAA7zN,GAIA,OAAA4zN,GAAAppN,OAAA1L,GA3BA,GACAg1N,GAAAD,EAAAE,EADAE,EAAAZ,EAAA10N,GACAi1N,IAEA,OAAA,mBAAA7kN,OAAA1F,UAAA6F,SAAApP,KAAAm0N,GACAA,KAGA7rN,GAAAA,GAAA,KACAA,EAAA8rN,EAAA,GAAA99J,EAAAg9J,WAAAvqN,KAAA4vE,KAAA01H,EAAArP,EAAA,IAAAqP,EAAArP,EAAA,KAAA,GAAA,KAsBAnwL,EAAAilN,EAAAK,EAAA,KAGA,QAAAE,GAAAx1N,EAAAqB,GACA,GAAAk9E,GAAA82I,EAAA1xN,CAQA,OAPA,KAAAtC,IAEAk9E,EADA,SAAAuxI,GAAA,UAAAA,KACA2F,EAAAz1N,EAAA0a,OAAA,IAAA26M,EAAA1xN,EAAA,GAAA,GAEA,SAGA46E,EAGA,QAAA2xI,GAAAlwN,GACA,GAAA01N,GAAA79C,EAAA73K,IAAA21N,EAAA,EAAAxB,EACA,OAAApsK,GAAA,GAAA2tK,GAAAA,EAAA3tK,EAAA,GAAAwnK,EAAA,EAkBA,QAAAqG,GAAA1xC,GACA,MAAAA,GAGAA,EAAA,EAAA,QAAA,MAFA,SAIA,QAAA3+H,GAAA2+H,GACA,MAAAA,GAGA,UAAAA,EAAA,IAFA,GAIA,QAAA2xC,GAAA3xC,GACA,MAAAA,GAGA,EAAAh6K,KAAAgvH,IAAAhvH,KAAAod,IAAA48J,EAAA,MAFA,EAIA,QAAA4xC,GAAA5xC,GACA,MAAAA,GAGA,KAAA,KAAAA,EAAA,KAAAA,EAAA,EAAA,GAAA,GAFA6xC,EA1HA,GAUAhH,GAAAiH,EAAAC,EAVAvyN,EAAA+6E,EAAA/6E,EAAA6qK,EAAAv0J,OAAAla,MAEAkvM,EAAAlvM,KAAAyuM,WAAA12B,EAAA23B,EAAA1vM,KAAAyuM,UAAAgmB,IAEAp0B,EAAA6uB,EAAAA,EAAAqF,EAAA7kB,GACArkM,EAAAzH,EAAA0qF,UAAA,SAAAj+E,KAAAgwL,EAAAqP,GACA2f,EAAAhkN,EAAAsyB,QAAAqrD,OAAA,IAAA,WAAAjyE,KAAA,QAAA,QAAA1S,MAAA,UAAA,MAEAirN,EAAAjkN,EAAA+rI,OAAAxqI,SACA2iN,EAAAyF,EAAA3pN,GAAAhH,MAAA,UAAA,GAGA4jD,EAAA8vH,EAAAynB,YAAAznB,EAAAynB,cAAA8O,EAAAv2B,EAAA9vH,SACAipE,EAAAttH,EAAA0qF,UAAA,WAAAj+E,MAAA,IACAs/M,GAAAz+F,EAAAvzF,QAAA7Z,OAAA,QAAA/M,KAAA,QAAA,UAAAi+M,EAAA9jG,GACAm+F,GAAAvrM,OAAA,QACAurM,EAAAvrM,OAAA,OAEA,IAAA8rM,GAAAP,EAAAn1M,OAAA,QACA21M,EAAAN,EAAAr1M,OAAA,QACA41M,EAAAT,EAAAn1M,OAAA,QACA61M,EAAAR,EAAAr1M,OAAA,OAEAy9C,GAAAg9J,YACAN,EAAAjqN,KAAA4vE,MAAA01H,EAAA,GAAAA,EAAA,IAAA,GACAwmB,EAAAL,EAAA,EAAAxB,EACA8B,EAAAN,EAAAxB,EAAA,GAEAA,EAAA6B,EAAA,CAGA,IAAA71N,GAAA+1N,EAAAb,EAAAT,EAAAlxN,EAAAsW,OAAA,UAAAy7M,KACAM,EAAA7rN,KAAAC,IAAAolN,EAAA,GAAAC,EACA+F,EAAA,SAAAzF,GAAA,UAAAA,CAsDA3vN,GAAAgL,EAAA6O,OAAA,QACAk8M,EAAA/1N,EAAAiuF,UAAA,SACAj+E,KAAA,SAAAnQ,EAAAqB,GACA,GAAA4zN,GAAAx9J,EAAA0+J,cAAAnB,EAAAh1N,EAAAy3D,EAAA2+J,cAAAvqN,OAAA6oN,EAAA10N,GAEA,OADAy1N,GAAAp0N,GAAA4zN,EAAAx0N,OACAw0N,EAAAvsN,IAAA,SAAAL,GACA,OAAAqS,MAAArZ,EAAA4zN,SAAA5sN,OAGA6tN,EAAAz4L,QAAA7Z,OAAA,SACAsyM,EAAAh/E,OAAAxqI,SACAwpN,EAAA/1N,KAAA,SAAAH,GAAA,MAAAA,GAAAi1N,UAEA,IAAA/wC,GAAAzsH,EAAA4+J,cA2BA,QAAAvG,GACA,IAAA,SAEAf,EAAAmF,EACAxE,EAAA74M,KAAA,KAAA04M,GACAK,EAAA/4M,KAAA,IAAAk/M,GACApG,EAAA94M,KAAA,KAAAm/M,GAAAn/M,KAAA,KAAAm/M,GAAAn/M,KAAA,KAAAq5M,GACAL,EAAAh5M,KAAA,IAAA,GAAAA,KAAA,IAAAi/M,EAAA5xC,IACA//K,MAAA,cAAAyxN,EAAA1xC,IACArtK,KAAA,YAAA0uC,EAAA2+H,IACAgyC,EAAAr/M,KAAA,IAAA,GAAAA,KAAA,KAAA2+M,GAAA3+M,KAAA,KAAAg/M,EAAA3xC,IACAurC,EAAA54M,KAAA,IAAA,IAAAkxC,EAAA,GAAA,IAAAgoK,EAAA,MAAAhoK,EAAA,GAAA,IAAAgoK,EACA,MAEA,KAAA,MAGAhB,EAAAmF,EACAxE,EAAA74M,KAAA,MAAA04M,GACAK,EAAA/4M,KAAA,KAAAk/M,GACApG,EAAA94M,KAAA,KAAA,GAAAA,KAAA,MAAA04M,GACAM,EAAAh5M,KAAA,IAAA,GAAAA,KAAA,KAAAk/M,GACA51N,EAAAgE,MAAA,cAAA,UACA+xN,EAAAr/M,KAAA,IAAA,GAAAA,KAAA,KAAA,OACA44M,EAAA54M,KAAA,IAAA,IAAAkxC,EAAA,GAAA,KAAAgoK,EAAA,MAAAhoK,EAAA,GAAA,KAAAgoK,EACA,MAEA,KAAA,OAEAhB,EAAAqF,EACA1E,EAAA74M,KAAA,MAAA04M,GACAK,EAAA/4M,KAAA,KAAAk/M,GACApG,EAAA94M,KAAA,MAAA04M,GAAA14M,KAAA,KAAAo/M,GAAAp/M,KAAA,KAAAo/M,GACApG,EAAAh5M,KAAA,KAAAk/M,GAAAl/M,KAAA,IAAAs9M,GACAh0N,EAAAgE,MAAA,cAAA,OACA+xN,EAAAr/M,KAAA,KAAAk/M,GAAAl/M,KAAA,KAAA2+M,GACA/F,EAAA54M,KAAA,IAAA,KAAAk5M,EAAA,IAAAhoK,EAAA,GAAA,MAAAA,EAAA,GAAA,KAAAgoK,EACA,MAEA,KAAA,QAEAhB,EAAAqF,EACA1E,EAAA74M,KAAA,KAAA04M,GACAK,EAAA/4M,KAAA,IAAAk/M,GACApG,EAAA94M,KAAA,KAAA04M,GAAA14M,KAAA,KAAA,GACAg5M,EAAAh5M,KAAA,IAAAk/M,GAAAl/M,KAAA,IAAA,GACA1W,EAAAgE,MAAA,cAAA,SACA+xN,EAAAr/M,KAAA,IAAAk/M,GAAAl/M,KAAA,KAAA2+M,GACA/F,EAAA54M,KAAA,IAAA,IAAAk5M,EAAA,IAAAhoK,EAAA,GAAA,MAAAA,EAAA,GAAA,IAAAgoK,GAIA,GAAAvgB,EAAA/N,UAAA,CACA,GAAAtvL,GAAAq9L,EAAAnxH,EAAAlsE,EAAAsvL,YAAA,CACAuN,GAAAQ,EAAA,SAAAxvM,GACA,MAAAmS,GAAAnS,GAAAq+E,OAEA2wH,GAAAvN,UACAuN,EAAAQ,EAEA4f,EAAAjuN,KAAA4tN,EAAAvf,EAEA2f,GAAAhuN,KAAA4tN,EAAA/f,GACAqgB,EAAAluN,KAAA4tN,EAAAvf,KAvQA,GAAAugB,GAAA1vB,EAAAi0B,EAEAqB,EAFA99C,EAAAtJ,EAAAsJ,MAAA1wJ,SAAA2oM,EAAA,SAAAP,EAAA,EAAAC,EAAA,EAAAR,EAAA,KAEAmF,EAAA,EAAAmC,GAAA,CAgUA,OA9TA7+J,GAAAA,MACAs4J,EAAAt4J,EAAA8+J,cAAA,EAAA,EAqQA93I,EAAAo5F,MAAA,SAAA1lK,GACA,MAAAnL,WAAAvG,QACAo3K,EAAA1lK,EACAssE,GAFAo5F,GAIAp5F,EAAAqxI,OAAA,SAAA39M,GACA,MAAAnL,WAAAvG,QACAqvN,EAAA39M,KAAAyD,IAAA,EAAA+mB,MAAA,EAAAyB,OAAA,EAAA5X,KAAA,GAAArU,EAAA,GAAA,SACAssE,GAFAqxI,GAIArxI,EAAA4hH,WAAA,SAAAx0J,GACA,MAAA7kC,WAAAvG,QACA4/L,EAAAx0J,EACA4yC,GAFA4hH,GAIA5hH,EAAAk3I,aAAA,SAAAa,GACA,MAAAxvN,WAAAvG,QACAk1N,EAAAa,EACA/3I,GAFAk3I,GAIAl3I,EAAA01I,WAAA,WACA,MAAAA,IAEA11I,EAAAg4I,aAAA,WACA,GAAAvrN,GAAAzK,CAQA,OAPAg3D,GAAAg9J,WACAvpN,EAAA,EAAAipN,GAGA1zN,EAAAg+E,EAAA/6E,EAAAsW,OAAA,eAAA8+B,OAAA49K,iBAAA,EAAA3G,EACA7kN,EAAAzK,EAAAg+E,EAAA/6E,EAAA0qF,UAAA,QAAAp1C,QAEA9tC,IAAA47B,EAAAA,EAAA,EAAA57B,GAEAuzE,EAAA0hH,MAAA,WACA,MAAAn5L,WAAAvG,QACA6zN,EAAAttN,UACAy3E,GAFA61I,GAIA71I,EAAA63I,YAAA,SAAAK,GACA,MAAA3vN,WAAAvG,QACA61N,EAAAK,EACAl4I,GAFA63I,GAIA73I,EAAAuwI,WAAA,SAAA78M,GACA,GAAA,kBAAAA,GACA68M,EAAA,WACA,MAAA78M,GAAA0lK,EAAAunB,eAGA,CACA,IAAAp4L,UAAAvG,OAAA,MAAAuuN,EACAA,GAAA78M,EAEA,MAAAssE,IAEAA,EArqOA,GAEAm1I,GACAgD,EACAC,EAJAC,GAAAr4G,QAAA,SAsDAq4G,GAAAC,SAAA,SAAAjkM,GACA,MAAA,IAAAqgM,GAAArgM,IAGAgkM,EAAAE,OACAvmN,GAAA0iN,EAAAzoN,UACA2oN,UACA5iN,GAAA6iN,EAAA5oN,UACA+zE,MACAhuE,GAAAujN,EAAAtpN,aAIAkpN,EAAAkD,EAAAE,MAAAvmN,GACAmmN,EAAAE,EAAAE,MAAA3D,SAAA5iN,GACAomN,EAAAC,EAAAE,MAAA3D,SAAA50I,KAAAhuE,GAEAmmN,EAAApD,WAAA,aAGAoD,EAAAnD,UAAA,aAGAmD,EAAAjsN,KAAA,WACA,GAAAyoN,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,MAIA,IAFAsgM,EAAA6D,aAEAnkM,EAAAokM,SACA9D,EAAA+D,iBAAArkM,EAAAokM,SAAApkM,EAAAskM,cAAAtkM,EAAAukM,aAAAvkM,EAAAwkM,UAAAlE,EAAAmE,kBAEA,IAAAzkM,EAAA0kM,UACApE,EAAAmE,aAAAnE,EAAAqE,kBAAA3kM,EAAA0kM,UAAA1kM,EAAAwkM,gBAEA,IAAAxkM,EAAA4kM,UACAtE,EAAAmE,aAAAnE,EAAAuE,kBAAA7kM,EAAA4kM,gBAEA,CAAA,IAAA5kM,EAAA8kM,aAIA,KAAAh4N,OAAA,8CAHAwzN,GAAAmE,aAAAnE,EAAAyE,qBAAA/kM,EAAA8kM,iBAOAhB,EAAAK,WAAA,WACA,GAAA7D,GAAAtzN,KAAAyuK,EAAA6kD,EAAA7kD,GAAAz7I,EAAAsgM,EAAAtgM,MAGAsgM,GAAA0E,OAAA,QAAA,GAAA/lN,MAAA,QACAqhN,EAAA2E,eAAA3E,EAAA0E,OAAA,SACA1E,EAAA4E,eAAA5E,EAAA0E,OAAA,SACA1E,EAAA6E,cAAA7E,EAAA0E,OAAA,QACA1E,EAAA8E,kBAAA9E,EAAA0E,OAAA,YACA1E,EAAA+E,SAAA/E,EAAAgF,YAAAhF,EAAA0E,QACA1E,EAAAiF,iBAAAjF,EAAAgF,YAAAhF,EAAA2E,gBACA3E,EAAAkF,iBAAAlF,EAAAgF,YAAAhF,EAAA4E,gBACA5E,EAAAmF,gBAAAnF,EAAAgF,YAAAhF,EAAA6E,eACA7E,EAAAoF,oBAAApF,EAAAgF,YAAAhF,EAAA8E,mBAEA9E,EAAA/6H,UAAA,KACA+6H,EAAArC,UAAA,EACAqC,EAAAqF,SAAA,EACArF,EAAAsF,aAAA,EACAtF,EAAAuF,WAAA,EACAvF,EAAAwF,YAAA,EAEAxF,EAAAllG,MAAAklG,EAAAyF,gBACAzF,EAAA0F,WAAA1F,EAAA2F,qBAEA3F,EAAA4F,eAAAlmM,EAAAmmM,gBAAA1qD,EAAA97H,KAAA5G,OAAA0iI,EAAA97H,KAAA5G,OAAAguI,IACAu5C,EAAA8F,eAAApmM,EAAAqmM,iBAAA5qD,EAAA97H,KAAA5G,OAAA0iI,EAAA97H,KAAA5G,OAAAguI,IACAu5C,EAAAgG,sBAAAhG,EAAA8F,eAAA18C,QACA,MAAA,SAAAx8K,GAAA,MAAAA,GAAAk9K,qBACA,MAAA,SAAAl9K,GAAA,MAAAA,GAAAo9K,gBACA,QAAA,SAAAp9K,GAAA,MAAAA,GAAAm9K,gBACA,QAAA,SAAAn9K,GAAA,MAAAA,GAAA+8K,cACA,UAAA,SAAA/8K,GAAA,MAAAA,GAAAs6K,UAAA,IAAAt6K,EAAA88K,aACA,UAAA,SAAA98K,GAAA,MAAA,KAAAA,EAAA88K,aACA,UAAA,SAAA98K,GAAA,MAAAA,GAAA48K,cACA,aAAA,WAAA,OAAA,MAGAw2C,EAAAiG,mBACAjG,EAAAkG,mBACAlG,EAAAmG,oBACAnG,EAAAoG,sBAEApG,EAAAqG,QAAA3mM,EAAA4mM,aAAA,OAAA,SACAtG,EAAAuG,QAAA7mM,EAAA4mM,aAAA5mM,EAAA8mM,aAAA,MAAA,SAAA9mM,EAAA8mM,aAAA,QAAA,OACAxG,EAAAyG,SAAA/mM,EAAA4mM,aAAA5mM,EAAAgnM,cAAA,SAAA,MAAAhnM,EAAAgnM,cAAA,OAAA,QACA1G,EAAA2G,WAAAjnM,EAAA4mM,aAAA,OAAA,SAEAtG,EAAA4G,cAAA,UAAAlnM,EAAAmnM,gBACA7G,EAAA8G,cAAA,UAAApnM,EAAAmnM,gBACA7G,EAAA+G,YAAA,aAAArnM,EAAAsnM,qBAAA,cAAAtnM,EAAAsnM,oBACAhH,EAAAiH,aAAA,aAAAvnM,EAAAsnM,qBAAA,gBAAAtnM,EAAAsnM,oBACAhH,EAAAkH,WAAA,EACAlH,EAAAmH,gBAAA,EACAnH,EAAAoH,iBAAA,EAEApH,EAAAqH,sBACAtoN,EAAA,EACA6B,EAAA,EACAwiH,GAAA,GAGA48F,EAAAsH,qBAAA,GACAtH,EAAAuH,sBAAA7nM,EAAA4mM,eAAA5mM,EAAA8nM,YAAA,EAAA,GACAxH,EAAAyH,oBAAA,EAEAzH,EAAA0H,iBAEA1H,EAAA2H,2BAAA/kM,OAEAo9L,EAAAW,KAAAiH,KAAAzsD,EAAAngF,eAGAwoI,EAAAqE,kBAAA,WACAn7N,KAAAo7N,SAAAp7N,KAAAo7N,UACAp7N,KAAAq7N,UAAAr7N,KAAAq7N,WACAr7N,KAAAs7N,SAAAt7N,KAAAs7N,UACAt7N,KAAAu7N,WAAAv7N,KAAAu7N,YACAv7N,KAAAw7N,UAAAx7N,KAAAw7N,YAGA1E,EAAAW,aAAA,SAAApnN,GACA,GACAorN,GAAAC,EADApI,EAAAtzN,KAAAyuK,EAAA6kD,EAAA7kD,GAAAz7I,EAAAsgM,EAAAtgM,OACA0sF,GAAA,CAEA4zG,GAAA30I,KAAA,GAAAu1I,GAAAZ,GAEAA,EAAAqI,SAAArI,EAAAqI,UACArI,EAAAsI,WAAAtI,EAAAsI,YACAtI,EAAAuI,UAAAvI,EAAAuI,WAEA7oM,EAAA8oM,OAGA,kBAAA9oM,GAAA8oM,OAAA9iL,KACAs6K,EAAAyI,YAAA/oM,EAAA8oM,OAGAxI,EAAAyI,YAAAttD,EAAAv0J,OAAA8Y,EAAA8oM,QANAxI,EAAAyI,YAAAttD,EAAAngF,cAQAglI,EAAAyI,YAAA3vN,UACAknN,EAAAyI,YAAAttD,EAAAv0J,OAAAra,SAAAO,cAAA,QAAAiE,MAAA,UAAA,GACAivN,EAAA0I,gBAAA1I,EAAAyI,aACAr8G,GAAA,GAEA4zG,EAAAyI,YAAApzN,KAAA,IAAAkjM,QAAA,MAAA,GAGAynB,EAAAjjN,KAAAizM,MACAgQ,EAAAjjN,KAAAqvB,QAAA4zL,EAAA2I,qBAAA5rN,GAEA2iB,EAAAkpM,cACA5I,EAAAjjN,KAAAqvB,QAAA4zL,EAAAjjN,KAAAqvB,QAAAh+B,OAAAsxB,EAAAkpM,cAIAlpM,EAAAmpM,WACA7I,EAAA8I,mBAAAppM,EAAAmpM,aAAA,EAAA7I,EAAA+I,SAAA/I,EAAAjjN,KAAAqvB,SAAA1M,EAAAmpM,WAEAnpM,EAAAspM,aACAhJ,EAAAiJ,mBAAAvpM,EAAAspM,eAAA,EAAAhJ,EAAA+I,SAAA/I,EAAAjjN,KAAAqvB,SAAA1M,EAAAspM,aAIAhJ,EAAAkJ,QAAA,WACAxpM,EAAAypM,aAAA,GAIAnJ,EAAAoJ,cACApJ,EAAAqJ,eAGArJ,EAAAjhN,EAAAitL,OAAA7wB,EAAAilB,OAAA4/B,EAAAsJ,WAAAtJ,EAAAjjN,KAAAqvB,WACA4zL,EAAAp/M,EAAAorL,OAAAg0B,EAAAuJ,WAAAvJ,EAAAjjN,KAAAqvB,QAAA,MACA4zL,EAAA58F,GAAA4oE,OAAAg0B,EAAAuJ,WAAAvJ,EAAAjjN,KAAAqvB,QAAA,OACA4zL,EAAAwJ,KAAAx9B,OAAAg0B,EAAAjhN,EAAAitL,UACAg0B,EAAAyJ,KAAAz9B,OAAAg0B,EAAAp/M,EAAAorL,UACAg0B,EAAA0J,MAAA19B,OAAAg0B,EAAA58F,GAAA4oE,UAGAg0B,EAAA2J,WAAA3J,EAAAjhN,EAAAitL,SAGAg0B,EAAAhD,OAAAgD,EAAAhD,MAAAv4C,MAAAu7C,EAAAwJ,MACA9pM,EAAAkqM,cAAA5J,EAAAltM,KAAA2xJ,MAAAu7C,EAAAjhN,GAKAihN,EAAAvyG,IAAAuyG,EAAAyI,YAAAj4M,OAAA,OACAzf,MAAA,WAAA,UACAqf,GAAA,aAAA,WAAA,MAAAsP,GAAAmqM,YAAA97N,KAAAiyN,KACA5vM,GAAA,aAAA,WAAA,MAAAsP,GAAAoqM,WAAA/7N,KAAAiyN,KAEAA,EAAAtgM,OAAAqqM,eACA/J,EAAAvyG,IAAAhqG,KAAA,QAAAu8M,EAAAtgM,OAAAqqM,eAIA5B,EAAAnI,EAAAvyG,IAAAj9F,OAAA,QACAwvM,EAAAgK,UAAAhK,EAAAiK,WAAA9B,EAAAnI,EAAA0E,QACA1E,EAAAkK,UAAAlK,EAAAiK,WAAA9B,EAAAnI,EAAA2E,gBACA3E,EAAAmK,UAAAnK,EAAAiK,WAAA9B,EAAAnI,EAAA4E,gBACA5E,EAAAoK,SAAApK,EAAAiK,WAAA9B,EAAAnI,EAAA6E,eACA7E,EAAAqK,aAAArK,EAAAiK,WAAA9B,EAAAnI,EAAA8E,mBACA9E,EAAAsK,gBAGAlC,EAAApI,EAAAoI,KAAApI,EAAAvyG,IAAAj9F,OAAA,KAAA/M,KAAA,YAAAu8M,EAAAuK,aAAA,SAEAvK,EAAAwK,cAAAxK,EAAAwK,eACAxK,EAAAyK,aAAAzK,EAAAyK,cACAzK,EAAA0K,YAAA1K,EAAA0K,aACA1K,EAAA2K,WAAA3K,EAAA2K,YAKAvC,EAAA53M,OAAA,QACA/M,KAAA,QAAA/B,EAAA3U,KAAA,IAAA2U,EAAA5I,OACA2K,KAAA,cAAA,UACAA,KAAA,oBAAA,UAGAu8M,EAAA4K,aAGA5K,EAAA6K,WAGAzC,EAAA53M,OAAA,KACA/M,KAAA,YAAAu8M,EAAA+E,UACAthN,KAAA,QAAA/B,EAAAkiN,OAGAlkM,EAAAorM,kBAAA9K,EAAA+K,gBAGA/K,EAAAgL,gBAGAhL,EAAA6H,oBAIAO,EAAA1yI,OAAA,OAAAh2D,EAAAurM,gBAAA,KAAA,KAAAvpN,EAAAwpN,SACAznN,KAAA,QAAA/B,EAAAypN,UACA1nN,KAAA,QAAAu8M,EAAA7pN,OACAsN,KAAA,SAAAu8M,EAAA5nN,QACArH,MAAA,UAAA,GACAqf,GAAA,gBAAA,MAGAsP,EAAA0rM,eAAApL,EAAAhD,MAAA58B,OAAA4/B,EAAAqL,oBAGArL,EAAA30I,KAAA9zE,OAGAyoN,EAAAsL,cAAAtL,EAAAjjN,KAAAqvB,SAGAggF,IACA4zG,EAAAuL,kBACAvL,EAAAtgM,OAAA8rM,OAAAz9N,KAAAiyN,GACAA,EAAAxC,QACAiO,gBAAA,EACAC,eAAA,EACAC,mBAAA,EACAC,sBAAA,EACAC,uBAAA,KAKA7L,EAAA8L,aAGA9L,EAAAS,IAAA7zL,QAAAozL,EAAAyI,YAAA/iL,QAGA89K,EAAAuI,YAAA,SAAArpM,EAAAn1B,GACA,GAAAyyN,GAAAtzN,IACA,UAAAa,GACAm1B,EAAAn0B,KAAA,WACA,GAAA+B,GAAA0vN,EAAA7kD,GAAAv0J,OAAAla,MACAu2H,EAAA3yH,EAAAmT,KAAA,MACA0/G,EAAA7yH,EAAAmT,KAAA,MACAy/G,EAAA5yH,EAAAmT,KAAA,MACA2/G,EAAA9yH,EAAAmT,KAAA,KACAnT,GAAAmT,MACAw/G,GAAAnsH,KAAA4vE,KAAAu8C,GACAE,GAAArsH,KAAA4vE,KAAAy8C,GACAD,GAAApsH,KAAA4vE,KAAAw8C,GACAE,GAAAtsH,KAAA4vE,KAAA08C,QAOAogG,EAAA4F,YAAA,WACA,GAAApJ,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OACAssM,EAAAhM,EAAAiM,OAAAjM,EAAAkM,kBAAA,EACAC,EAAAnM,EAAAiM,OAAAjM,EAAAoM,iBAAA,EACAC,EAAArM,EAAA4G,eAAA5G,EAAA8G,cAAA,EAAAkF,EACAM,EAAAtM,EAAAuM,aACAC,EAAA9sM,EAAA4mM,cAAAgG,EAAA,EAAAtM,EAAAyM,wBAAA,KACAC,EAAAhtM,EAAAitM,gBAAAL,EAAA5sM,EAAAktM,qBAAAJ,EAAA,CAEAxM,GAAA6M,aAAA7M,EAAA8M,kBACA9M,EAAA+M,cAAA/M,EAAAgN,mBAGAhN,EAAA3sM,OAAAqM,EAAA4mM,cACA9jN,IAAAw9M,EAAAyM,wBAAA,MAAAzM,EAAAiN,uBACA1jM,MAAA+iM,EAAA,EAAAtM,EAAAkN,yBACAliM,OAAAg1L,EAAAyM,wBAAA,KAAAJ,EAAArM,EAAAmN,0BACA/5M,KAAAs5M,GAAAJ,EAAA,EAAAtM,EAAAoN,2BAEA5qN,IAAA,EAAAw9M,EAAAiN,uBACA1jM,MAAA+iM,EAAA,EAAAtM,EAAAkN,yBACAliM,OAAAwhM,EAAAE,EAAAL,EAAArM,EAAAmN,0BACA/5M,KAAAk5M,EAAA,EAAAtM,EAAAoN,yBAIApN,EAAAqN,QAAA3tM,EAAA4mM,cACA9jN,IAAAw9M,EAAA3sM,OAAA7Q,IACA+mB,MAAAywD,IACAhvD,OAAA,GAAAqhM,EACAj5M,KAAA4sM,EAAAsH,uBAEA9kN,IAAAw9M,EAAA+M,cAAAL,EAAAL,EACA9iM,MAAAywD,IACAhvD,OAAAwhM,EAAAH,EACAj5M,KAAA4sM,EAAA3sM,OAAAD,MAIA4sM,EAAAsN,SACA9qN,IAAA,EACA+mB,MAAAywD,IACAhvD,OAAA,EACA5X,KAAA,GAEA4sM,EAAAuN,qBAAAvN,EAAAuN,oBAAAvB,EAAAG,GAEAnM,EAAA7pN,MAAA6pN,EAAA6M,aAAA7M,EAAA3sM,OAAAD,KAAA4sM,EAAA3sM,OAAAkW,MACAy2L,EAAA5nN,OAAA4nN,EAAA+M,cAAA/M,EAAA3sM,OAAA7Q,IAAAw9M,EAAA3sM,OAAA2X,OACAg1L,EAAA7pN,MAAA,IAAA6pN,EAAA7pN,MAAA,GACA6pN,EAAA5nN,OAAA,IAAA4nN,EAAA5nN,OAAA,GAEA4nN,EAAAwN,OAAA9tM,EAAA4mM,aAAAtG,EAAA3sM,OAAAD,KAAA4sM,EAAAsH,qBAAAtH,EAAAuH,sBAAAvH,EAAA7pN,MACA6pN,EAAAyN,QAAA/tM,EAAA4mM,aAAAtG,EAAA5nN,OAAA4nN,EAAA+M,cAAA/M,EAAAqN,QAAA7qN,IAAAw9M,EAAAqN,QAAAriM,OACAg1L,EAAAwN,OAAA,IAAAxN,EAAAwN,OAAA,GACAxN,EAAAyN,QAAA,IAAAzN,EAAAyN,QAAA,GAGAzN,EAAA0N,SAAA1N,EAAA7pN,OAAA6pN,EAAA4G,cAAAuF,EAAA,GAAA,GACAnM,EAAA2N,UAAA3N,EAAA5nN,QAAA4nN,EAAA4G,cAAA,EAAA,IACA5G,EAAAkJ,QAAA,WAAAxpM,EAAAkuM,mBACA5N,EAAA2N,WAAA3N,EAAA5nN,OAAA4nN,EAAA6N,uBAEA7N,EAAA8N,cAAA9N,EAAA8N,eAEA9N,EAAA4G,eAAA0F,IACAtM,EAAAsN,QAAAl6M,KAAA4sM,EAAA0N,SAAA,EAAA,IAAA1N,EAAA+N,iBAIAvK,EAAA8H,cAAA,SAAAl/L,GACA,GAAA4zL,GAAAtzN,IAKAszN,GAAAgO,qBAAA5hM,GAGA4zL,EAAAiO,oBAAA7hM,GAGA4zL,EAAAkO,qBAAA9hM,GAGA4zL,EAAAuM,cAAAvM,EAAAmO,qBAAAnO,EAAAmO,oBAAA/hM,GAIA4zL,EAAAoO,0BAAApO,EAAAoO,yBAAAhiM,GAGA4zL,EAAAqO,eAEA7K,EAAA6K,YAAA,WACA,GAAArO,GAAAtzN,IACAszN,GAAAvyG,IAAAzyB,UAAA,IAAAt5E,EAAAmD,QAAAzW,OAAA,SAAAxB,GAAA,MAAAozN,GAAAsO,eAAA1hO,EAAAqS,MACAsmB,aAAAtrB,SAAA+lN,EAAAtgM,OAAA6uM,qBACAx9N,MAAA,UAAA,IAGAyyN,EAAAhG,OAAA,SAAA/pM,EAAA+6M,GACA,GAEAC,GAAAC,EAAAjD,EAAAkD,EAAA9C,EACAH,EAAAC,EAAAC,EAAAgD,EAAAC,EACAC,EAAAC,EAAAC,EAEAC,EAAAC,EAAA3yG,EAAA4yG,EAAAzM,EACAzoN,EAAAm1N,EAAAC,EACAC,EAAAC,EACA3T,EAAA3tN,EAAAuhO,EAAAC,EACApgD,EAAAC,EAVA0wC,EAAAtzN,KAAA07N,EAAApI,EAAAoI,KAAAjtD,EAAA6kD,EAAA7kD,GAAAz7I,EAAAsgM,EAAAtgM,OACAgwM,EAAA1P,EAAA2P,gBAAA3P,EAAA4P,YAAAC,EAAA7P,EAAA2P,gBAAA3P,EAAA8P,WAAAC,EAAA/P,EAAA2P,gBAAA3P,EAAAgQ,YAIAC,EAAAjQ,EAAAuM,aAIA2D,EAAAlQ,EAAAmQ,oBAAAnQ,EAAAjjN,KAAAqvB,SACAgkM,EAAApQ,EAAAoQ,GAAA7xM,KAAAyhM,EAoEA,IAlEAvsM,EAAAA,MACAg7M,EAAAxzJ,EAAAxnD,EAAA,SAAA,GACAi7M,EAAAzzJ,EAAAxnD,EAAA,gBAAA,GACAg4M,EAAAxwJ,EAAAxnD,EAAA,kBAAA,GACAi4M,EAAAzwJ,EAAAxnD,EAAA,iBAAA,GACAk4M,EAAA1wJ,EAAAxnD,EAAA,qBAAA,GACAm4M,EAAA3wJ,EAAAxnD,EAAA,wBAAA,GACAm7M,EAAA3zJ,EAAAxnD,EAAA,mBAAA,GACAu7M,EAAA/zJ,EAAAxnD,EAAA,kBAAAk4M,GACAkD,EAAA5zJ,EAAAxnD,EAAA,cAAA,GACAq7M,EAAA7zJ,EAAAxnD,EAAA,iBAAA,GACAs7M,EAAA9zJ,EAAAxnD,EAAA,iBAAA,GACAk7M,EAAA1zJ,EAAAxnD,EAAA,wBAAAg4M,GACAI,EAAA5wJ,EAAAxnD,EAAA,wBAAAg4M,GAEAxxN,EAAAwxN,EAAA/rM,EAAA6uM,oBAAA,EACAa,EAAAT,EAAA10N,EAAA,EACAo1N,EAAAxD,EAAA5xN,EAAA,EAEAu0N,EAAAA,GAAAxO,EAAA30I,KAAAglJ,oBAAAhB,GAGAR,GAAAnvM,EAAAypM,YACAnJ,EAAAsQ,aAAAtQ,EAAA+I,SAAA/I,EAAAjjN,KAAAqvB,SAAA3Y,EAAA+6M,GACAO,GAGA/O,EAAAuL,iBAAA,GAIAvL,EAAAuQ,iBAAA,IAAAL,EAAA7iO,QACA2yN,EAAAjhN,EAAAitL,QAAA,EAAAg0B,EAAAW,KAAA5hN,EAAAi8E,UAAA,SAAAp1C,SAGAsqL,EAAA7iO,QACA2yN,EAAAwQ,cAAAN,EAAAvE,EAAAC,EAAAgD,GACAlvM,EAAA+wM,qBACA7U,EAAAoE,EAAA30I,KAAAqlJ,sBAAAR,MAGAlQ,EAAA2Q,MAAA/U,eACAoE,EAAA4Q,SAAAhV,gBAGAl8L,EAAAmxM,eAAAp9M,EAAA87M,OACAE,EAAAzP,EAAAjhN,EAAA+xN,aAGA9Q,EAAAp/M,EAAAorL,OAAAg0B,EAAAuJ,WAAA2G,EAAA,IAAAT,IACAzP,EAAA58F,GAAA4oE,OAAAg0B,EAAAuJ,WAAA2G,EAAA,KAAAT,KAEA/vM,EAAAqxM,oBAAArxM,EAAAsxM,mBACAhR,EAAAiR,MAAArV,WAAAoE,EAAA30I,KAAA6lJ,mBAAAlR,EAAAp/M,EAAAorL,SAAAtsK,EAAAsxM,qBAEAtxM,EAAAyxM,qBAAAzxM,EAAA0xM,oBACApR,EAAAqR,OAAAzV,WAAAoE,EAAA30I,KAAA6lJ,mBAAAlR,EAAA58F,GAAA4oE,SAAAtsK,EAAA0xM,qBAIApR,EAAA30I,KAAAmyI,OAAAgR,EAAAyB,GAGAjQ,EAAA30I,KAAAimJ,aAAA7F,IAGAE,GAAAqD,IAAAkB,EAAA7iO,OACA,GAAAqyB,EAAA6xM,qBAAA3V,EAAA,CACA,IAAA3tN,EAAA,EAAAA,EAAA2tN,EAAAvuN,OAAAY,IACA,GAAA2tN,EAAAvuN,OAAAY,EAAAyxB,EAAA8xM,wBAAA,CACAhC,EAAAvhO,CACA,OAGA+xN,EAAAvyG,IAAAzyB,UAAA,IAAAt5E,EAAAo/M,MAAA,eAAAvyN,KAAA,SAAAM,GACA,GAAAyY,GAAAs0M,EAAA1+M,QAAArO,EACAyY,IAAA,GACA6zJ,EAAAv0J,OAAAla,MAAAqE,MAAA,UAAAuW,EAAAkoN,EAAA,OAAA,eAIAxP,GAAAvyG,IAAAzyB,UAAA,IAAAt5E,EAAAo/M,MAAA,eAAA/vN,MAAA,UAAA,QAKAk+N,GAAAjP,EAAAyR,iBAAAzR,EAAAyR,iBAAA/B,GAAA,GAAA9sM,OACAssM,EAAAlP,EAAA0R,gBAAA1R,EAAA0R,gBAAA7B,GAAAjtM,OACA25F,EAAAyjG,EAAA2R,iBAAA3R,EAAA2R,iBAAA5B,GAAA,GAAAntM,OACAusM,EAAAnP,EAAA4R,kBAAAlC,EAAAG,EAAAE,GAAA,GACArN,EAAA1C,EAAA4R,kBAAAlC,EAAAG,EAAAE,GAAA,GAGAtB,IACAzO,EAAAyJ,KAAAz9B,OAAAg0B,EAAAuJ,WAAA2G,EAAA,MACAlQ,EAAA0J,MAAA19B,OAAAg0B,EAAAuJ,WAAA2G,EAAA,QAIAlQ,EAAA6R,mBAGAzJ,EAAAxhN,OAAA,QAAAlF,EAAA3U,KAAA,IAAA2U,EAAA5I,OACA2K,KAAA,IAAAu8M,EAAA7pN,MAAA,GACAsN,KAAA,IAAAu8M,EAAA5nN,OAAA,GACArL,KAAA2yB,EAAAoyM,uBACAvsM,aACAx0B,MAAA,UAAAm/N,EAAA7iO,OAAA,EAAA,GAGA2yN,EAAA+R,WAAA93N,GAGA+lN,EAAAgS,aAAA/3N,GAGA+lN,EAAAiS,UAAA7C,GAGApP,EAAA5lJ,WAAAg1J,GACApP,EAAAkS,WAAA9C,GACApP,EAAAmS,eAGAnS,EAAAoS,gBACApS,EAAAqS,WAAAjD,GAIApP,EAAAsS,aAAAtS,EAAAsS,cAGAtS,EAAAuS,WAAAvS,EAAAuS,UAAAt4N,EAAAm1N,EAAA1D,GAGA1L,EAAAwS,gBACAxS,EAAAwS,eAAA9D,EAAAF,EAAAv0N,EAAAm1N,EAAAM,EAAAG,EAAAE,GAIA3H,EAAAptI,UAAA,IAAAt5E,EAAA+wN,iBACArkO,OAAA4xN,EAAA8P,UAAAvxM,KAAAyhM,IACAhlI,UAAA,UACA1hF,SAGAomB,EAAAgzM,sBAAAj/M,EAAA87M,MAAAT,IACA9O,EAAA2S,kBACA3S,EAAA4S,YAAA5S,EAAA4S,cAIA5S,EAAA6S,gBAGAxjD,GAAA2wC,EAAAtgM,OAAA4mM,aAAAtG,EAAA8S,QAAA9S,EAAA+S,SAAAx0M,KAAAyhM,GACA1wC,GAAA0wC,EAAAtgM,OAAA4mM,aAAAtG,EAAA+S,QAAA/S,EAAA8S,SAAAv0M,KAAAyhM,GAEAvsM,EAAA87M,OACAA,EAAAvP,EAAAgT,cACA5mM,QAAA8jM,EACAX,KAAA97M,EAAA87M,KACAt1N,SAAAwZ,EAAA87M,KAAAt1N,SACAi1N,QAAAA,EACA3yG,SAAAA,EACA0yG,SAAAA,EACA5/C,GAAAA,EACAC,GAAAA,EACA8gD,GAAAA,EACAjB,SAAAA,EACAzM,SAAAA,MAIAzoN,GAAAs1N,IAAAvP,EAAAiT,eAEA93D,EAAA51I,aAAAtrB,SAAAA,GAAA1L,KAAA,WACA,GAAA2kO,OAIAlT,EAAAmT,UAAAjE,GAAA,GACAlP,EAAAoT,WAAA72G,GAAA,GACAyjG,EAAAqT,WAAApE,GAAA,GACAjP,EAAAsT,aAAAjkD,EAAAC,GAAA,GACA0wC,EAAAuT,WAAApE,EAAAzM,EAAAjvM,EAAA87M,MAAA,GACAvP,EAAAwT,cAAA,GACAxT,EAAAyT,YAAA,IACAruF,QAAA,SAAAopF,GACAA,EAAAppF,QAAA,SAAA7/G,GACA2tM,EAAAjgO,KAAAsyB,OAKA+pM,EAAAtP,EAAA0T,eACAR,EAAA9tF,QAAA,SAAA9nI,GACAgyN,EAAAv7N,IAAAuJ,OAGAvP,KAAAuhO,EAAA,WACAC,GACAA,IAEA7vM,EAAAi0M,YACAj0M,EAAAi0M,WAAA5lO,KAAAiyN,MAKAA,EAAAmT,UAAAjE,GACAlP,EAAAoT,WAAA72G,GACAyjG,EAAAqT,WAAApE,GACAjP,EAAAsT,aAAAjkD,EAAAC,GACA0wC,EAAAuT,WAAApE,EAAAzM,EAAAjvM,EAAA87M,MACAvP,EAAAwT,eACAxT,EAAAyT,aACA/zM,EAAAi0M,YACAj0M,EAAAi0M,WAAA5lO,KAAAiyN,IAKAA,EAAA+I,SAAA/I,EAAAjjN,KAAAqvB,SAAAg5G,QAAA,SAAAnmI,GACA+gN,EAAA0H,cAAAzoN,IAAA,KAIAukN,EAAAoQ,gBAAA,SAAAngN,GACA,GAAA+6M,GAAAxO,EAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,MACAjM,GAAAA,MAEAA,EAAAg4M,eAAAxwJ,EAAAxnD,EAAA,kBAAA,GACAA,EAAAi4M,cAAAzwJ,EAAAxnD,EAAA,iBAAA,GACAA,EAAAo7M,WAAA5zJ,EAAAxnD,EAAA,cAAA,GAEAA,EAAAk4M,mBAAA,EACAl4M,EAAAm4M,sBAAA,EACAn4M,EAAAk7M,uBAAA,EACAl7M,EAAAogN,2BAAA54J,EAAAxnD,EAAA,6BAAAA,EAAAg4M,gBAEAzL,EAAAoJ,cAEA31M,EAAAo7M,YAAAnvM,EAAAypM,cACAqF,EAAAxO,EAAA30I,KAAAglJ,oBAAA58M,EAAAo4M,sBAAAnsM,EAAA6uM,oBAAA,GAEAvO,EAAAqJ,eACArJ,EAAAsK,gBAEAtK,EAAA8T,aAAArgN,EAAAogN,2BAAArF,IAGAxO,EAAAxC,OAAA/pM,EAAA+6M,IAEAhL,EAAAuQ,qBAAA,WACArnO,KAAA8wN,QACAiR,OAAA,EACAC,cAAA,EACAI,eAAA,EACAjD,uBAAA,KAIArI,EAAAwQ,aAAA,WACA,MAAA,eAAAtnO,KAAAgzB,OAAAu0M,aAEAzQ,EAAA+M,cAAA,WACA,MAAA7jO,MAAAgzB,OAAAu0M,YAAA/2N,QAAA,YAAA,GAEAsmN,EAAA0Q,UAAA,WACA,GAAAlU,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,MACA,QAAAsgM,EAAAgU,iBAAAt0M,EAAAy0M,QAAAC,EAAA10M,EAAA20M,WAGA7Q,EAAA8Q,cAAA,WACA,MAAA,eAAA5nO,KAAAgzB,OAAA60M,aAGA/Q,EAAA+G,aAAA,SAAA1lN,GACA,GAAA9F,GAAA6B,EAAAo/M,EAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,MA0BA,OAzBA,SAAA7a,GACA9F,EAAAy1N,EAAAxU,EAAA3sM,OAAAD,MACAxS,EAAA4zN,EAAAxU,EAAA3sM,OAAA7Q,MACA,YAAAqC,GACA9F,EAAAy1N,EAAAxU,EAAAqN,QAAAj6M,MACAxS,EAAA4zN,EAAAxU,EAAAqN,QAAA7qN,MACA,WAAAqC,GACA9F,EAAAihN,EAAAsN,QAAAl6M,KACAxS,EAAAo/M,EAAAsN,QAAA9qN,KACA,MAAAqC,GACA9F,EAAA,EACA6B,EAAA8e,EAAA4mM,aAAA,EAAAtG,EAAA5nN,QACA,MAAAyM,GACA9F,EAAA,EACA6B,EAAA8e,EAAA4mM,aAAAtG,EAAA5nN,OAAA,GACA,OAAAyM,GACA9F,EAAA2gB,EAAA4mM,aAAA,EAAAtG,EAAA7pN,MACAyK,EAAA8e,EAAA4mM,aAAA,EAAA,GACA,SAAAzhN,GACA9F,EAAA,EACA6B,EAAA8e,EAAA4mM,aAAA,EAAAtG,EAAAyN,SACA,QAAA5oN,IACA9F,EAAAihN,EAAA0N,SAAA,EACA9sN,EAAAo/M,EAAA2N,UAAA,GAEA,aAAA5uN,EAAA,IAAA6B,EAAA,KAEA4iN,EAAAiR,eAAA,SAAA7nO,GACA,MAAA,QAAAA,EAAAoT,OAAAtT,KAAAg7N,cAAA96N,EAAAqS,IAAA,EAAA,GAEAukN,EAAAkR,wBAAA,SAAA9nO,GACA,MAAA,QAAAA,EAAAoT,OAAAtT,KAAAg7N,cAAA96N,EAAAqS,IAAAvS,KAAAioO,iBAAA/nO,GAAA,GAEA42N,EAAAmR,iBAAA,SAAA/nO,GACA,GAAAyL,GAAA3L,KAAAgzB,OAAAk1M,WAAA,EAAA,CACA,OAAAC,GAAAjoO,EAAAoT,OAAAtT,KAAAooO,cAAAloO,GAAA,GAAAyL,EAAA,GAEAmrN,EAAAuR,eAAA,WACA,MAAAroO,MAAA0lO,eAAA,EAAA,GAEA5O,EAAAwR,GAAA,SAAApoO,GACA,MAAAA,GAAAF,KAAAqS,EAAAnS,EAAAmS,GAAA,MAEAykN,EAAA4M,GAAA,SAAAxjO,GACA,GAAAozN,GAAAtzN,KAAAsT,EAAApT,EAAAoT,KAOA,OANAggN,GAAAgU,eACAh0N,EAAAggN,EAAAiV,UAAAroO,EAAAoT,OAEAggN,EAAAuQ,iBAAA,gBAAA3jO,GAAAoT,QACAA,EAAAggN,EAAAtgM,OAAAw1M,kBAAAh4N,QAAAtQ,EAAAoT,QAEAlJ,KAAA4vE,KAAAs5I,EAAAjhN,EAAAiB,KAEAwjN,EAAA2R,GAAA,SAAAvoO,GACA,GAAAozN,GAAAtzN,KACA0oO,EAAAxoO,EAAAy+E,MAAA,OAAAz+E,EAAAy+E,KAAA20I,EAAA58F,GAAA48F,EAAAp/M,CACA,OAAA9J,MAAA4vE,KAAA0uJ,EAAAxoO,EAAAoT,SAEAwjN,EAAA6R,MAAA,SAAAzoO,GACA,MAAAA,GAAAF,KAAA88N,KAAA58N,EAAAmS,GAAA,MAGAykN,EAAA8R,cAAA,SAAA7J,EAAA+C,GACA,GACAmC,GAAAM,EAAAI,EADArR,EAAAtzN,IAEA8hO,IAAAA,EAAA1N,MACA6P,EAAAnC,EAAA1N,OAEA6P,EAAA3Q,EAAAoI,KAAAxhN,OAAA,IAAAlF,EAAAo/M,OACA2K,IAAAkF,EAAAA,EAAAprM,eAEAipM,GAAAA,EAAAxN,MACAiQ,EAAAzC,EAAAxN,OAEAiQ,EAAAjR,EAAAoI,KAAAxhN,OAAA,IAAAlF,EAAAs/M,OACAyK,IAAAwF,EAAAA,EAAA1rM,eAEAipM,GAAAA,EAAA+G,OACAlE,EAAA7C,EAAA+G,QAEAlE,EAAArR,EAAAoI,KAAAxhN,OAAA,IAAAlF,EAAA6zN,QACA9J,IAAA4F,EAAAA,EAAA9rM,gBAEAkmM,EAAAzL,EAAAoI,KAAA7iM,aAAAy6L,EAAAoI,MAAA3kN,KAAA,YAAAu8M,EAAAuK,aAAA,SACAoG,EAAAltN,KAAA,YAAAu8M,EAAAuK,aAAA,MACA0G,EAAAxtN,KAAA,YAAAu8M,EAAAuK,aAAA,MACA8G,EAAA5tN,KAAA,YAAAu8M,EAAAuK,aAAA,OACAvK,EAAAoI,KAAAxhN,OAAA,IAAAlF,EAAA8zN,WAAA/xN,KAAA,YAAAu8M,EAAAuK,aAAA,SAEA/G,EAAAsQ,aAAA,SAAArI,EAAA+C,GACA,GAAAxO,GAAAtzN,IACAszN,GAAAsV,cAAA7J,EAAA+C,GACAxO,EAAAtgM,OAAAitM,eAAA3M,EAAAyV,iBAAAhK,EAAA+C,GACAxO,EAAAiM,QAAAjM,EAAA0V,gBAAAjK,IAGAjI,EAAA8G,cAAA,WACA,GAAAtK,GAAAtzN,KACAswN,EAAAgD,EAAAvyG,IAAA7mG,OAAA,wBACAo5M,GAAAvyG,IAAAhqG,KAAA,QAAAu8M,EAAA6M,cAAAppN,KAAA,SAAAu8M,EAAA+M,eACA/M,EAAAvyG,IAAAzyB,WAAA,IAAAglI,EAAA0E,OAAA,IAAA1E,EAAA6E,gBAAAj+M,OAAA,QACAnD,KAAA,QAAAu8M,EAAA7pN,OACAsN,KAAA,SAAAu8M,EAAA5nN,QACA4nN,EAAAvyG,IAAA7mG,OAAA,IAAAo5M,EAAA2E,gBAAA/9M,OAAA,QACAnD,KAAA,IAAAu8M,EAAA2V,cAAAp3M,KAAAyhM,IACAv8M,KAAA,IAAAu8M,EAAA4V,cAAAr3M,KAAAyhM,IACAv8M,KAAA,QAAAu8M,EAAA6V,kBAAAt3M,KAAAyhM,IACAv8M,KAAA,SAAAu8M,EAAA8V,mBAAAv3M,KAAAyhM,IACAA,EAAAvyG,IAAA7mG,OAAA,IAAAo5M,EAAA4E,gBAAAh+M,OAAA,QACAnD,KAAA,IAAAu8M,EAAA+V,cAAAx3M,KAAAyhM,IACAv8M,KAAA,IAAAu8M,EAAAgW,cAAAz3M,KAAAyhM,IACAv8M,KAAA,QAAAu8M,EAAAiW,kBAAA13M,KAAAyhM,IACAv8M,KAAA,SAAAu8M,EAAAkW,mBAAA33M,KAAAyhM,IACAA,EAAAvyG,IAAA7mG,OAAA,IAAAo5M,EAAA8E,mBAAAl+M,OAAA,QACAnD,KAAA,QAAAu8M,EAAA7pN,OACAsN,KAAA,SAAAu5M,EAAAp3K,OAAAo3K,EAAAv5M,KAAA,UAAA,GACAu8M,EAAAvyG,IAAA7mG,OAAA,IAAAlF,EAAAypN,UACA1nN,KAAA,QAAAu8M,EAAA7pN,OACAsN,KAAA,SAAAu8M,EAAA5nN,QAEA4nN,EAAAyI,YAAA13N,MAAA,aAAAivN,EAAA+M,cAAA,OAIAvJ,EAAA+H,gBAAA,SAAA4K,GACA,GAAAnW,GAAAtzN,IACAypO,KACAnW,EAAAtgM,OAAA4mM,cACAtG,EAAAW,KAAA5hN,EAAAhR,KAAAiyN,EAAA2Q,OACA3Q,EAAAW,KAAAiH,KAAA75N,KAAAiyN,EAAA4Q,YAEA5Q,EAAAW,KAAA//M,EAAA7S,KAAAiyN,EAAAiR,OACAjR,EAAAW,KAAAv9F,GAAAr1H,KAAAiyN,EAAAqR,UAGArR,EAAAoJ,cACApJ,EAAAqJ,eACArJ,EAAAsK,gBACAtK,EAAA8T,cAAA,IAGAtQ,EAAAkF,gBAAA,SAAA9zK,GACA,GAAAwhL,GAAApW,EAAAtzN,IACA,OAAA,mBAAA2pO,sBACA5pO,GAAA4c,QAAAvM,MAAA,kCAGAs5N,EAAA,GAAAC,kBAAA,SAAAC,GACAA,EAAAlxF,QAAA,SAAAmxF,GACA,cAAAA,EAAAhpO,MAAAgpO,EAAAzoI,kBACAsoI,EAAA/4L,aAEA2iL,EAAA2H,2BAAAl7N,EAAAu6B,YAAA,WAEA4tB,EAAAlP,OAAAx4C,aACAT,EAAAs6B,cAAAi5L,EAAA2H,4BACA3H,EAAAuL,kBACAvL,EAAAhD,OAAAgD,EAAAhD,MAAAnmK,SACAmpK,EAAAtgM,OAAA8rM,OAAAz9N,KAAAiyN,GACAA,EAAAxC,QACAkO,eAAA,EACAC,mBAAA,EACAC,sBAAA,EACAH,gBAAA,EACAoI,4BAAA,EACAhF,YAAA,IAEAj6K,EAAArvB,aAAAx0B,MAAA,UAAA,KAEA,aAIAqlO,GAAAI,QAAA5hL,EAAAlP,QAAA/iC,YAAA,EAAA8zN,WAAA,EAAAC,eAAA,MAGAlT,EAAAsI,WAAA,WACA,GAAA9L,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,MAsBA,IApBAsgM,EAAA2W,eAAA3W,EAAA4W,iBAEA5W,EAAA2W,eAAA5iO,IAAA,WACA2rB,EAAAm3M,SAAA9oO,KAAAiyN,KAEAtgM,EAAAo3M,aACA9W,EAAA2W,eAAA5iO,IAAA,WACA6uB,SAAAo9L,EAAA+W,eACAtqO,EAAA+oB,aAAAwqM,EAAA+W,eAEA/W,EAAA+W,cAAAtqO,EAAAmL,WAAA,iBACAooN,GAAA+W,cACA/W,EAAAS,IAAA7wK,SACA,OAGAowK,EAAA2W,eAAA5iO,IAAA,WACA2rB,EAAAs3M,UAAAjpO,KAAAiyN,KAGAvzN,EAAAiW,YACAjW,EAAAiW,YAAA,WAAAs9M,EAAA2W,oBACA,IAAAlqO,EAAAgW,iBACAhW,EAAAgW,iBAAA,SAAAu9M,EAAA2W,gBAAA,OACA,CAEA,GAAA9oL,GAAAphD,EAAAoqO,QACAhpL,GAGAA,EAAA95C,KAAA85C,EAAAv0C,SAEAu0C,EAAAmyK,EAAA4W,iBACA/oL,EAAA95C,IAAAtH,EAAAoqO,WAJAhpL,EAAAmyK,EAAA4W,iBAOA/oL,EAAA95C,IAAAisN,EAAA2W,gBACAlqO,EAAAoqO,SAAAhpL,IAIA21K,EAAAoT,eAAA,WAEA,QAAAK,KACAC,EAAA9xF,QAAA,SAAA/0I,GACAA,MAHA,GAAA6mO,KAiBA,OAXAD,GAAAljO,IAAA,SAAA1D,GACA6mO,EAAAjkO,KAAA5C,IAEA4mO,EAAA39N,OAAA,SAAAjJ,GACA,IAAA,GAAApC,GAAA,EAAAA,EAAAipO,EAAA7pO,OAAAY,IACA,GAAAipO,EAAAjpO,KAAAoC,EAAA,CACA6mO,EAAAj5N,OAAAhQ,EAAA,EACA,SAIAgpO,GAGAzT,EAAA2T,OAAA,SAAA5xM,EAAA2gH,GACA,GAAA7zI,GAAA,CACAkzB,GACAh3B,KAAA,aAAA8D,IACA9D,KAAA,MAAA,aACA8D,GAAA6zI,EAAAh3I,MAAAxC,KAAAkH,cAGA4vN,EAAAkQ,aAAA,WACA,GAAAR,MACA7iO,EAAA,SAAAk1B,EAAA2gH,GACA,GAAA/qI,GAAA6rB,YAAA,WACA,GAAAj4B,GAAA,CACAmkO,GAAA9tF,QAAA,SAAA9nI,GACA,GAAAA,EAAAxE,QAEA,YADA/J,GAAA,EAGA,KACAuO,EAAAioB,aACA,MAAA12B,GACAE,GAAA,KAGAA,IAAAmkO,EAAA7lO,SACA05B,cAAA5rB,GACA+qI,GAAAA,MAEA,IAKA,OAHA71I,GAAA0D,IAAA,SAAAwxB,GACA2tM,EAAAjgO,KAAAsyB,IAEAl1B,GAGAmzN,EAAAyR,UAAA,SAAAv9L,GACA,GAAA0/L,GAAApX,EAAAtzN,IAWA,OAVAgrC,aAAA/4B,MACAy4N,EAAA1/L,EACA,gBAAAA,GACA0/L,EAAApX,EAAA4F,eAAA5F,EAAAtgM,OAAA23M,cAAAxnO,MAAA6nC,GACA,gBAAAA,IAAAn5B,MAAAm5B,KACA0/L,EAAA,GAAAz4N,OAAA+4B,IAEA0/L,IAAA74N,OAAA64N,IACA3qO,EAAA4c,QAAAvM,MAAA,sBAAA46B,EAAA,oBAEA0/L,GAGA5T,EAAAyP,aAAA,WACA,GAAAv7N,EAWA,OAVA,mBAAAnL,UAAAmL,OACAA,EAAA,SACA,mBAAAnL,UAAA+qO,UACA5/N,EAAA,YACA,mBAAAnL,UAAAgrO,SACA7/N,EAAA,WACA,mBAAAnL,UAAAirO,eACA9/N,EAAA,iBAGAnL,SAAAmL,IAGA8rN,EAAA9C,iBAAA,WACA,GAAAhhM,IACA8oM,OAAA,SACAuB,cAAAnnM,OACA60M,WAAA70M,OACA80M,YAAA90M,OACA+0M,aAAA/0M,OACAg1M,cAAAh1M,OACAi1M,YAAAj1M,OACAk1M,eAAAl1M,OACAk0M,aAAA,EACAlN,cAAA,EACAmO,YAAAn1M,OACAqoM,iBAAA,EACA4F,cAAA,EACAmH,YAAA,aACAC,iBAAA,aACAC,eAAA,aACAC,WAAAv1M,OACAw1M,WAAAx1M,OACAy1M,sBAAA,EACA3F,qBAAA,EACA7I,YAAA,aACAC,WAAA,aACA+M,SAAA,aACAG,UAAA,aACAxL,OAAA,aACAmI,WAAA,aACApF,oBAAA,IACA4F,OAAAvxM,OACAyxM,WACAgD,aAAA,WACAxR,iBAAA,EACAyS,YAAA,EACAC,iBAAA,SAAAt5N,GAAA,MAAAA,IACAu5N,cACAC,gBACAC,eACAC,aACAC,UAAAh2M,OACAi2M,cACAC,eACAC,WAAA,OACAC,gBACAC,WAAAr2M,OACAs2M,eACArQ,WAAA,EACAD,YAAAhmM,OACAu2M,wBAAA,EACAC,wBAAA,EACAC,4BAAA,WAAA,OAAA,GACAC,yBAAA,EACAC,0BAAA,EACAC,aAAA,aACAC,iBAAA,aACAC,gBAAA,aACAC,gBAAA,aACAC,kBAAA,aACA9V,SAAAlhM,OACAqhM,aAAArhM,OACAwhM,UAAAxhM,OACA0hM,UAAA1hM,OACA4hM,aAAA5hM,OACAohM,cAAAphM,OACAshM,UAAAthM,OAEAkvM,sBAAA,GAEAnF,eAAA,EACAC,qBAAA,GACAiN,sBAAA,EACAC,iBAAA,aAEAC,iBACAC,mBAEA7Q,aAAA,EACAH,aAAA,EACAnC,gBAAA,SACAG,oBAAA,WACAiT,eAAA,GACAC,eAAA,EACAC,kBAAAv3M,OACAw3M,oBAAAx3M,OACAy3M,wBAAAz3M,OACA03M,uBAAA13M,OACA23M,gBAAA,EACAC,eAAA,EACAC,uBAAA,GACAC,wBAAA,GAEApU,cAAA,EACAkB,aAAA,EACAyM,YAAA,UACAlO,kBAAA,EACAmP,qBACAyF,sBAAA,EACAC,mBAAAh4M,OACA2uM,uBACAC,wBAAA,GACAqJ,kBAAAj4M,OACAk4M,iBAAA,EACArK,mBAAA,KACAsK,mBAAA,EACAC,mBAAA,EACAC,uBAAA,EACAC,kBAAA,KACAC,WAAAv4M,OACAw4M,WAAAx4M,OACAy4M,kBACAC,cAAA14M,OACAwoM,cAAAxoM,OACA24M,gBACAC,aAAA,EACAjH,YAAA3xM,OACA64M,WAAA74M,OACA84M,WAAA94M,OACA+4M,iBAAA,EACAC,cAAAh5M,OACA4jM,aAAA5jM,OACAi5M,gBACAC,mBAAAl5M,OACAm5M,mBAAA,EACAhL,mBAAA,KACAiL,mBAAA,EACAhL,kBAAApuM,OACAq5M,uBAAAr5M,OACAs5M,0BAAAt5M,OACAu5M,kBACAC,eAAAx5M,OACAy5M,cAAA,EACAC,YAAA15M,OACA25M,YAAA35M,OACA45M,kBAAA,EACAC,eAAA75M,OACA8jM,cAAA9jM,OACA85M,iBACAC,oBAAA/5M,OACAg6M,oBAAA,EACAzL,oBAAA,KACAC,mBAAAxuM,OACAi6M,mBACAC,gBAAAl6M,OAEAm6M,aAAA,EACAC,YAAA,OACAC,gBACAC,aAAA,EAGAC,gBACAC,aAAA,GACAC,iBAAA,EACAvS,kBAAA,EAEA8J,YAAA,EACA0I,QAAA,IACAC,kBAAA,GACAC,4BAAA,EACAC,qBAAA76M,OACA86M,eAAA96M,OAEA+6M,kBAAA,EACAC,eAAA,OAEAC,UAAAj7M,OACAk7M,gBAAA,GACAC,cAAAn7M,OACAo7M,eAAA,EAEAC,gBAAA,EACAC,YAAA,EAEAC,gBAAA,EACAC,iBAAAx7M,OACAy7M,oBAAA,IACAC,gBAAA17M,OACA27M,cACAC,oBAAA,GAEA5Q,kBAAA,EACA6Q,kBAAA,EACAC,mBAAA97M,OACA+7M,UAAA,EACAC,UAAA,IACAC,qBAAA,EAAA/nO,KAAAod,GAAA,EACA4qN,YAAAl8M,OACAm8M,YAAAn8M,OACAo8M,gBACAC,sBAAA,GAEAC,kBAAA,EACAC,mBAAAv8M,OACAw8M,sBAAA,IACAC,kBAAAz8M,OACA08M,YAAA18M,OACA28M,YAAA,GACAC,gBACAC,sBAAA,GAEAC,0BAAA,WAEAxU,WAEAyU,cAAA,EACAC,iBAAA,EACAC,qBAAAj9M,OACAk9M,oBAAAl9M,OACAm9M,qBAAAn9M,OACAo9M,iBAAAp9M,OACAq9M,iBAAA,SAAArzO,EAAAszO,EAAAC,EAAArlH,GACA,MAAApuH,MAAA0zO,kBAAA1zO,KAAA0zO,kBAAAxzO,EAAAszO,EAAAC,EAAArlH,GAAA,IAEAulH,mBAAA,EACAC,eAAA,EACAC,uBAAA/9N,IAAA,MAAA4Q,KAAA,QACAotN,eAAA,aACAC,eAAA,aAEAC,WAAA99M,OACA+9M,eACAn+N,IAAA,EACA+mB,MAAA,EACAyB,OAAA,EACA5X,KAAA,GAEAwtN,eAAA,aAOA,OAJA5jO,QAAAmoC,KAAAz4C,KAAAm0O,kBAAAz7F,QAAA,SAAAn2H,GACAyQ,EAAAzQ,GAAAviB,KAAAm0O,iBAAA5xN,IACAviB,MAEAgzB,GAEA8jM,EAAAqd,oBAEArd,EAAArD,WAAA,SAAAzgM,GAEA,QAAAhf,KACA,GAAAuO,GAAAk2B,EAAA/oC,OAEA,OAAA6S,IAAApK,GAAA,gBAAAA,IAAAoK,IAAApK,IACAA,EAAAA,EAAAoK,GACAvO,KAEAuO,EAIA,OAHApK,EATA,GAAAA,GAAAsgC,EAAA05C,EAAAiiJ,EAAAp0O,KAAAgzB,MAeA1iB,QAAAmoC,KAAA27L,GAAA17F,QAAA,SAAAn2H,GACApK,EAAA6a,EACAylB,EAAAl2B,EAAArS,MAAA,KACAiiF,EAAAn+E,IAEAqgO,EAAAliJ,KACAiiJ,EAAA7xN,GAAA4vE,MAKA2kI,EAAAwd,SAAA,SAAAh7K,EAAAjvD,EAAAkqO,GACA,OAAAA,EAAAv0O,KAAAyuK,GAAA97H,KAAAolI,QAAA/3K,KAAAyuK,GAAAsJ,MAAA1wJ,UAAA4gC,OAAAqR,EAAAjvD,KAEAysN,EAAA0d,KAAA,SAAAl7K,EAAAjvD,EAAAi1L,EAAAruK,GACA,GAEA1O,GAFA+wM,EAAAtzN,KACA+3K,EAAAu7C,EAAAghB,SAAAh7K,EAAAjvD,EAAAipN,EAAAgU,gBACAmN,EAAAn1C,EAAAvnB,EAAAunB,OAAAA,GAAAvnB,CAEAu7C,GAAAuQ,iBACA5yM,EAAAA,GAAA,WAAA,MAAA,IACA8mJ,EAAA,SAAA73K,EAAAomH,GACA,GAAAx1G,GAAA2jO,EAAAv0O,GAAA+wB,EAAA/wB,EACA,OAAAomH,GAAAx1G,EAAA1G,KAAA4vE,KAAAlpE,KAGAinK,EAAA,SAAA73K,EAAAomH,GACA,GAAAx1G,GAAA2jO,EAAAv0O,EACA,OAAAomH,GAAAx1G,EAAA1G,KAAA4vE,KAAAlpE,GAIA,KAAAyR,IAAAkyN,GACA18D,EAAAx1J,GAAAkyN,EAAAlyN,EAgBA,OAdAw1J,GAAAqsD,UAAA,WACA,MAAAqQ,GAAAn1C,UAGAg0B,EAAAuQ,kBACA9rD,EAAAunB,OAAA,SAAAA,GACA,MAAAp4L,WAAAvG,QAIA8zO,EAAAn1C,OAAAA,GACAvnB,IAJAunB,EAAAt/L,KAAAokO,aACA9kC,EAAA,GAAAA,EAAA,GAAA,MAMAvnB,GAEA++C,EAAA4d,KAAA,SAAAp7K,EAAAjvD,EAAAi1L,GACA,GAAAvnB,GAAA/3K,KAAAs0O,SAAAh7K,EAAAjvD,EAAArK,KAAA4nO,gBAEA,OADAtoC,IAAAvnB,EAAAunB,OAAAA,GACAvnB,GAEA++C,EAAA6d,UAAA,SAAApiO,GACA,MAAA,OAAAvS,KAAA2+E,KAAAi2J,MAAAriO,GAAAvS,KAAA02H,GAAA12H,KAAAkU,GAEA4iN,EAAA+d,aAAA,SAAAtiO,GACA,MAAA,OAAAvS,KAAA2+E,KAAAi2J,MAAAriO,GAAAvS,KAAAg9N,MAAAh9N,KAAA+8N,MAEAjG,EAAA6F,aAAA,WACA,GAAArJ,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OACA8hN,GAAAxhB,EAAAjhN,CAEAihN,GAAA71B,KAAAzqK,EAAA4mM,aAAA,EAAA,EACAtG,EAAA51B,KAAA1qK,EAAA4mM,aAAAtG,EAAA5nN,OAAA4nN,EAAA7pN,MACA6pN,EAAA31B,KAAA3qK,EAAA4mM,aAAA,EAAAtG,EAAA5nN,OACA4nN,EAAA11B,KAAA5qK,EAAA4mM,aAAAtG,EAAA7pN,MAAA,EACA6pN,EAAAyhB,QAAAzhB,EAAA71B,KACA61B,EAAA0hB,QAAA1hB,EAAA51B,KACA41B,EAAA2hB,QAAAjiN,EAAA4mM,aAAA,EAAAtG,EAAAyN,QACAzN,EAAA4hB,QAAAliN,EAAA4mM,aAAAtG,EAAAwN,OAAA,EAEAxN,EAAAjhN,EAAAihN,EAAAkhB,KAAAlhB,EAAA71B,KAAA61B,EAAA51B,KAAAo3C,EAAA5+M,OAAAo9L,EAAAjhN,EAAA+xN,YAAA,WAAA,MAAA9Q,GAAA2Q,MAAA5P,eACAf,EAAAp/M,EAAAo/M,EAAAohB,KAAAphB,EAAA31B,KAAA21B,EAAA11B,KAAAk3C,EAAA9hN,EAAA08M,eAAApc,EAAAp/M,EAAAorL,UACAg0B,EAAA58F,GAAA48F,EAAAohB,KAAAphB,EAAA31B,KAAA21B,EAAA11B,KAAAk3C,EAAA9hN,EAAAo9M,gBAAA9c,EAAA58F,GAAA4oE,UACAg0B,EAAAwJ,KAAAxJ,EAAAkhB,KAAAlhB,EAAA71B,KAAA61B,EAAA51B,KAAA41B,EAAA2J,WAAA,SAAA/8N,GAAA,MAAAA,GAAA,EAAA,EAAAozN,EAAA4Q,SAAA7P,eACAf,EAAAyJ,KAAAzJ,EAAAohB,KAAAphB,EAAA2hB,QAAA3hB,EAAA4hB,QAAAJ,EAAA9hN,EAAA08M,eAAApc,EAAAyJ,KAAAz9B,UACAg0B,EAAA0J,MAAA1J,EAAAohB,KAAAphB,EAAA2hB,QAAA3hB,EAAA4hB,QAAAJ,EAAA9hN,EAAAo9M,gBAAA9c,EAAA0J,MAAA19B,UAEAg0B,EAAA6hB,gBAAA7hB,EAAA30I,KAAAy2J,qBACA9hB,EAAA+hB,gBAAA/hB,EAAA30I,KAAA22J,qBACAhiB,EAAAiiB,gBAAAjiB,EAAA30I,KAAA62J,qBACAliB,EAAAmiB,iBAAAniB,EAAA30I,KAAA+2J;AAEApiB,EAAA2Q,MAAA3Q,EAAA30I,KAAAg3J,SAAAriB,EAAAjhN,EAAAihN,EAAAqG,QAAArG,EAAA6hB,gBAAA7hB,EAAA+hB,gBAAAriN,EAAAs7M,mBACAhb,EAAA4Q,SAAA5Q,EAAA30I,KAAAg3J,SAAAriB,EAAAwJ,KAAAxJ,EAAA2G,WAAA3G,EAAA6hB,gBAAA7hB,EAAA+hB,gBAAAriN,EAAAs7M,mBACAhb,EAAAiR,MAAAjR,EAAA30I,KAAAi3J,SAAAtiB,EAAAp/M,EAAAo/M,EAAAuG,QAAA7mM,EAAAo8M,mBAAA9b,EAAAiiB,gBAAAviN,EAAAq8M,mBACA/b,EAAAqR,OAAArR,EAAA30I,KAAAi3J,SAAAtiB,EAAA58F,GAAA48F,EAAAyG,SAAA/mM,EAAAi9M,oBAAA3c,EAAAmiB,iBAAAziN,EAAAk9M,oBAGA4E,IACAxhB,EAAAhD,OAAAgD,EAAAhD,MAAAv4C,MAAAu7C,EAAAwJ,MACA9pM,EAAAkqM,cAAA5J,EAAAltM,KAAA2xJ,MAAAu7C,EAAAjhN,IAGAihN,EAAAuiB,WAAAviB,EAAAuiB,aAGA/e,EAAAgf,cAAA,SAAAp2M,GACA,GAEA17B,GAAAE,EAAA6xO,EAAAC,EAAAzjO,EAAA0jO,EAFA3iB,EAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OACAqqB,EAAAi2K,EAAA+I,SAAA38L,GAAA6jL,EAAA+P,EAAA4iB,mBAAAx2M,EAEA,IAAA1M,EAAAg5M,YAAArrO,OAAA,EAEA,IADAs1O,EAAA3iB,EAAA6iB,0BAAAz2M,GACA17B,EAAA,EAAAA,EAAAgvB,EAAAg5M,YAAArrO,OAAAqD,IAGA,GADAgyO,EAAAhjN,EAAAg5M,YAAAhoO,GAAAtC,OAAA,SAAA6Q,GAAA,MAAA8qC,GAAA7sC,QAAA+B,IAAA,IACA,IAAAyjO,EAAAr1O,OASA,IARAo1O,EAAAC,EAAA,GAEAC,GAAA1yB,EAAAwyB,IACAxyB,EAAAwyB,GAAAr9F,QAAA,SAAA5nI,EAAAvP,GACAgiN,EAAAwyB,GAAAx0O,GAAAuP,EAAA,EAAAA,EAAA,IAIA5M,EAAA,EAAAA,EAAA8xO,EAAAr1O,OAAAuD,IACAqO,EAAAyjO,EAAA9xO,GACAq/M,EAAAhxM,IACAgxM,EAAAhxM,GAAAmmI,QAAA,SAAA5nI,EAAAvP,GACA+xN,EAAA30I,KAAAi2J,MAAAriO,KAAA+gN,EAAA30I,KAAAi2J,MAAAmB,KAAAxyB,EAAAwyB,IAAAE,IAAAnlO,EAAA,IACAyyM,EAAAwyB,GAAAx0O,KAAAuP,IAMA,OAAAwiN,GAAA7kD,GAAAn1G,IAAAhpD,OAAAmoC,KAAA8qK,GAAA36M,IAAA,SAAA2Z,GAAA,MAAA+wM,GAAA7kD,GAAAn1G,IAAAiqJ,EAAAhhM,QAEAu0M,EAAAsf,cAAA,SAAA12M,GACA,GAEA17B,GAAAE,EAAA6xO,EAAAC,EAAAzjO,EAAA8jO,EAFA/iB,EAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OACAqqB,EAAAi2K,EAAA+I,SAAA38L,GAAA6jL,EAAA+P,EAAA4iB,mBAAAx2M,EAEA,IAAA1M,EAAAg5M,YAAArrO,OAAA,EAEA,IADA01O,EAAA/iB,EAAAgjB,0BAAA52M,GACA17B,EAAA,EAAAA,EAAAgvB,EAAAg5M,YAAArrO,OAAAqD,IAGA,GADAgyO,EAAAhjN,EAAAg5M,YAAAhoO,GAAAtC,OAAA,SAAA6Q,GAAA,MAAA8qC,GAAA7sC,QAAA+B,IAAA,IACA,IAAAyjO,EAAAr1O,OASA,IARAo1O,EAAAC,EAAA,GAEAK,GAAA9yB,EAAAwyB,IACAxyB,EAAAwyB,GAAAr9F,QAAA,SAAA5nI,EAAAvP,GACAgiN,EAAAwyB,GAAAx0O,GAAAuP,EAAA,EAAAA,EAAA,IAIA5M,EAAA,EAAAA,EAAA8xO,EAAAr1O,OAAAuD,IACAqO,EAAAyjO,EAAA9xO,GACAq/M,EAAAhxM,IACAgxM,EAAAhxM,GAAAmmI,QAAA,SAAA5nI,EAAAvP,GACA+xN,EAAA30I,KAAAi2J,MAAAriO,KAAA+gN,EAAA30I,KAAAi2J,MAAAmB,KAAAxyB,EAAAwyB,IAAAM,IAAAvlO,EAAA,IACAyyM,EAAAwyB,GAAAx0O,KAAAuP,IAMA,OAAAwiN,GAAA7kD,GAAApkK,IAAAiG,OAAAmoC,KAAA8qK,GAAA36M,IAAA,SAAA2Z,GAAA,MAAA+wM,GAAA7kD,GAAApkK,IAAAk5M,EAAAhhM,QAEAu0M,EAAA+F,WAAA,SAAAn9L,EAAA62M,EAAAC,GACA,GAOAl3C,GAAAm3C,EAAA7vN,EAAAukN,EAAAC,EAEAsL,EAAAC,EAAAl4K,EAAA4nE,EAAAuwG,EAAAC,EATAvjB,EAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OACA8jN,EAAAp3M,EAAAh+B,OAAA,SAAAkP,GAAA,MAAA0iN,GAAA30I,KAAAi2J,MAAAhkO,EAAA2B,MAAAgkO,IACAQ,EAAAP,EAAAljB,EAAA0jB,gBAAAF,EAAAN,GAAAM,EACAn5C,EAAA,OAAA44C,EAAAvjN,EAAA68M,YAAA78M,EAAAg8M,WACApxC,EAAA,OAAA24C,EAAAvjN,EAAA48M,YAAA58M,EAAA+7M,WACAkI,EAAA3jB,EAAAwiB,cAAAiB,GACAG,EAAA5jB,EAAA8iB,cAAAW,GAEA9pD,EAAA,OAAAspD,EAAAvjN,EAAA+8M,eAAA/8M,EAAAk8M,cAEAiI,EAAA7jB,EAAAkJ,QAAA,MAAAua,IAAA/jN,EAAAs+M,eAAAhe,EAAAkJ,QAAA,OAAAua,IAAA/jN,EAAAu+M,eACA6F,EAAA,OAAAb,EAAAvjN,EAAA88M,iBAAA98M,EAAAi8M,gBACAoI,EAAA/jB,EAAAoS,gBAAA1yM,EAAA4mM,aACA0d,EAAAhkB,EAAAoS,iBAAA1yM,EAAA4mM,YAMA,OAHAqd,GAAA9O,EAAAxqC,GAAAA,EAAAwqC,EAAAvqC,GAAAq5C,EAAAr5C,EAAAq5C,EAAAr5C,EAAA,GAAAq5C,EACAC,EAAA/O,EAAAvqC,GAAAA,EAAAuqC,EAAAxqC,GAAAA,EAAAu5C,EAAAA,EAAAv5C,EAAA,GAAAu5C,EAEA,IAAAH,EAAAp2O,OACA,OAAA41O,EAAAjjB,EAAA58F,GAAA4oE,SAAAg0B,EAAAp/M,EAAAorL,UAEAztL,MAAAolO,KACAA,EAAA,GAEAplO,MAAAqlO,KACAA,EAAAD,GAEAA,IAAAC,IACAD,EAAA,EAAAC,EAAA,EAAAD,EAAA,GAEAL,EAAAK,GAAA,GAAAC,GAAA,EACAL,EAAAI,GAAA,GAAAC,GAAA,GAGA/O,EAAAxqC,IAAAi5C,GAAAzO,EAAAvqC,IAAAi5C,KACAM,GAAA,GAIAA,IACAP,IAAAK,EAAA,GACAJ,IAAAK,EAAA,IAGAT,EAAArsO,KAAA0yB,IAAAo6M,EAAAD,GACArwN,EAAAukN,EAAAC,EAAA,GAAAqL,EAEA,mBAAAxpD,KACAypD,EAAAtsO,KAAAC,IAAAD,KAAA0yB,IAAAm6M,GAAA7sO,KAAA0yB,IAAAo6M,IACAA,EAAAjqD,EAAAypD,EACAO,EAAAhqD,EAAAypD,GAGAW,GACAV,EAAArjB,EAAAikB,mBAAAN,EAAAC,EAAA,SACAz4K,EAAA+4K,EAAAlkB,EAAAp/M,EAAA+zC,SACAo+E,GAAAswG,EAAA,GAAAl4K,EAAAk4K,EAAA,GAAAl4K,GACA0sK,GAAAsL,GAAApwG,EAAA,IAAA,EAAAA,EAAA,GAAAA,EAAA,KACA+kG,GAAAqL,GAAApwG,EAAA,IAAA,EAAAA,EAAA,GAAAA,EAAA,MACAixG,IACAX,EAAArjB,EAAAikB,mBAAAN,EAAAC,EAAA,UACA/L,GAAA7X,EAAA30I,KAAA84J,2BAAAd,EAAA,GAAAF,GACArL,GAAA9X,EAAA30I,KAAA84J,2BAAAd,EAAA,GAAAF,IAEA,MAAAF,GAAA7O,EAAA10M,EAAAy8M,kBACAtE,EAAA7X,EAAA30I,KAAA+4J,WAAA1kN,EAAAy8M,eAAA,MAAAtE,EAAAsL,GACArL,EAAA9X,EAAA30I,KAAA+4J,WAAA1kN,EAAAy8M,eAAA,SAAArE,EAAAqL,IAEA,OAAAF,GAAA7O,EAAA10M,EAAAm9M,mBACAhF,EAAA7X,EAAA30I,KAAA+4J,WAAA1kN,EAAAm9M,gBAAA,MAAAhF,EAAAsL,GACArL,EAAA9X,EAAA30I,KAAA+4J,WAAA1kN,EAAAm9M,gBAAA,SAAA/E,EAAAqL,IAGAU,IACAP,IAAAxL,EAAA6L,GACAJ,IAAA1L,GAAA+L,IAEA53C,GAAA23C,EAAA7L,EAAA8L,EAAA/L,GACAiM,EAAA93C,EAAA/jL,UAAA+jL,IAEAw3B,EAAA6gB,cAAA,SAAAj4M,GACA,GAAA4zL,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,MACA,OAAAqhN,GAAArhN,EAAA07M,YACApb,EAAAgU,eAAAtnO,KAAAuoO,UAAAv1M,EAAA07M,YAAA17M,EAAA07M,WACApb,EAAA7kD,GAAAn1G,IAAA55B,EAAA,SAAA9uB,GAAA,MAAA0iN,GAAA7kD,GAAAn1G,IAAA1oD,EAAA6sC,OAAA,SAAA3sC,GAAA,MAAAA,GAAAuB,OAEAykN,EAAA8gB,cAAA,SAAAl4M,GACA,GAAA4zL,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,MACA,OAAAqhN,GAAArhN,EAAAy7M,YACAnb,EAAAgU,eAAAtnO,KAAAuoO,UAAAv1M,EAAAy7M,YAAAz7M,EAAAy7M,WACAnb,EAAA7kD,GAAApkK,IAAAq1B,EAAA,SAAA9uB,GAAA,MAAA0iN,GAAA7kD,GAAApkK,IAAAuG,EAAA6sC,OAAA,SAAA3sC,GAAA,MAAAA,GAAAuB,OAEAykN,EAAA+gB,kBAAA,SAAAv4C,GACA,GAEAw4C,GAAAlxN,EAAA6V,EAAAE,EAFA22L,EAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OACAyrC,EAAA6gI,EAAA,GAAAA,EAAA,EAkBA,OAhBAg0B,GAAAuQ,gBACAj9M,EAAA,EACA0sM,EAAAkJ,QAAA,QACAsb,EAAAxkB,EAAAykB,kBACAnxN,EAAAkxN,EAAA,EAAAr5K,GAAAq5K,EAAA,GAAA,EAAA,IAEAlxN,EAAA,IAAA63C,EAEA,gBAAAzrC,GAAA27M,gBAAAjH,EAAA10M,EAAA27M,iBACAlyM,EAAA0rM,EAAAn1M,EAAA27M,eAAAjoN,MAAAsM,EAAA27M,eAAAjoN,KAAAE,EACA+V,EAAAwrM,EAAAn1M,EAAA27M,eAAA9xM,OAAA7J,EAAA27M,eAAA9xM,MAAAjW,GAEA6V,EAAAE,EADA,gBAAA3J,GAAA27M,eACA37M,EAAA27M,eAEA/nN,GAEAF,KAAA+V,EAAAI,MAAAF,IAEAm6L,EAAA8F,WAAA,SAAAl9L,GACA,GAAA4zL,GAAAtzN,KACAw2O,GAAAljB,EAAAqkB,cAAAj4M,GAAA4zL,EAAAskB,cAAAl4M,IACAs4M,EAAAxB,EAAA,GAAAyB,EAAAzB,EAAA,GACA5vN,EAAA0sM,EAAAukB,kBAAArB,GACAl9K,EAAA,EAAAjvD,EAAA,CAiBA,OAfA2tO,GAAAC,IAAA,GAAA3kB,EAAAuQ,kBACAvQ,EAAAgU,gBACA0Q,EAAA,GAAA/lO,MAAA,GAAA+lO,EAAAxoM,WACAyoM,EAAA,GAAAhmO,MAAA,IAAAgmO,EAAAzoM,aAEAwoM,EAAA,IAAAA,EAAA,EAAA,GAAAA,EACAC,EAAA,IAAAA,GAAA,EAAA,IAAAA,KAGAD,GAAA,IAAAA,KACA1+K,EAAAg6J,EAAAgU,eAAA,GAAAr1N,MAAA+lO,EAAAxoM,UAAA5oB,EAAAF,MAAAsxN,EAAApxN,EAAAF,OAEAuxN,GAAA,IAAAA,KACA5tO,EAAAipN,EAAAgU,eAAA,GAAAr1N,MAAAgmO,EAAAzoM,UAAA5oB,EAAAiW,OAAAo7M,EAAArxN,EAAAiW,QAEAy8B,EAAAjvD,IAEAysN,EAAAgN,cAAA,SAAApkM,EAAAu/L,EAAAC,EAAAgZ,EAAA54C,GACA,GAAAg0B,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,MAiBA,OAfAksM,KACA5L,EAAAjhN,EAAAitL,OAAAA,EAAAA,EAAAg0B,EAAA7kD,GAAAilB,OAAA4/B,EAAAsJ,WAAAl9L,KACA4zL,EAAA2J,WAAA3J,EAAAjhN,EAAAitL,SACAtsK,EAAAkqM,cAAA5J,EAAAltM,KAAA2xJ,MAAAu7C,EAAAjhN,GAAA8lO,oBACA7kB,EAAAwJ,KAAAx9B,OAAAg0B,EAAAjhN,EAAAitL,UACAg0B,EAAAhD,OAAAgD,EAAAhD,MAAAv4C,MAAAu7C,EAAAwJ,OAEAmC,IACA3L,EAAAjhN,EAAAitL,OAAAA,EAAAA,GAAAg0B,EAAAhD,OAAAgD,EAAAhD,MAAAlkN,QAAAknN,EAAA2J,WAAA3J,EAAAhD,MAAA58B,UACA1gK,EAAAkqM,cAAA5J,EAAAltM,KAAA2xJ,MAAAu7C,EAAAjhN,GAAA8lO,qBAIAD,GAAA5kB,EAAAjhN,EAAAitL,OAAAg0B,EAAA8kB,YAAA9kB,EAAAjhN,EAAA+xN,cAEA9Q,EAAAjhN,EAAAitL,UAEAw3B,EAAAshB,YAAA,SAAA94C,GACA,GAAA+4C,GAAAr4O,KAAAs4O,gBACAh/K,EAAA++K,EAAA,GAAAhuO,EAAAguO,EAAA,EASA,OARA/4C,GAAA,IAAAhmI,IACAgmI,EAAA,IAAAA,EAAA,IAAAhmI,EAAAgmI,EAAA,IACAA,EAAA,GAAAhmI,GAEAjvD,GAAAi1L,EAAA,KACAA,EAAA,IAAAA,EAAA,IAAAA,EAAA,GAAAj1L,GACAi1L,EAAA,GAAAj1L,GAEAi1L,GAGAw3B,EAAAyhB,IAAA,SAAAh2N,GACA,GAAA+wM,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,MACA,OAAAA,GAAAy0M,QAAAllN,IAAAyQ,EAAAy0M,QAAAC,EAAA10M,EAAA20M,UAAA6Q,EAAAxlN,EAAA20M,QAAAplN,IAEAu0M,EAAA2hB,OAAA,SAAAl2N,GACA,OAAAviB,KAAAu4O,IAAAh2N,IAEAu0M,EAAA4hB,QAAA,SAAAnmO,GACA,GAAA+gN,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,MACA,OAAAA,GAAAy0M,OAAAz0M,EAAAy0M,OAAAC,EAAA10M,EAAA20M,SAAA30M,EAAA20M,QAAAp1N,GAAA,MAEAukN,EAAA6hB,iBAAA,SAAAp2N,EAAAmd,GACA,GACAk5M,GADAtlB,EAAAtzN,KACAq9C,EAAA3d,GAAAgoM,EAAAhoM,GAAA4zL,EAAA+I,SAAA38L,KAMA,OALA2d,GAAAq7F,QAAA,SAAAnmI,GACA+gN,EAAAolB,QAAAnmO,KAAAgQ,IACAq2N,EAAAtlB,EAAAjjN,KAAAizM,GAAA/wM,MAGAqmO,GAEA9hB,EAAA+hB,YAAA,SAAAxmO,GACA,GAAAihN,GAAAtzN,KACAqQ,EAAAijN,EAAAwlB,UAAAxlB,EAAAjjN,KAAAqvB,QAAArtB,EACA,OAAAhC,GAAA1P,OAAA0P,EAAA,GAAAuK,MAAA,MAEAk8M,EAAAiiB,UAAA,SAAAxmO,EAAAhR,GACA,GAAA+xN,GAAAtzN,IACA,OAAAuS,KAAA+gN,GAAAjjN,KAAAizM,IAAAgQ,EAAAjjN,KAAAizM,GAAA/wM,IAAA41N,EAAA7U,EAAAjjN,KAAAizM,GAAA/wM,GAAAhR,IAAA+xN,EAAAjjN,KAAAizM,GAAA/wM,GAAAhR,GAAAA,GAEAu1N,EAAAkiB,iBAAA,WACA,GAAA1lB,GAAAtzN,KACAi5O,EAAA3oO,OAAAmoC,KAAA66K,EAAAjjN,KAAAizM,GACA,OAAA21B,GAAAt4O,OAAA2yN,EAAAjjN,KAAAizM,GAAA21B,EAAA,IAAA,MAEAniB,EAAAoiB,gBAAA,SAAAt+N,GACA,GAAA0oM,GAAAtjN,KAAAg5O,kBACA,OAAA11B,IAAA1oM,EAAA0oM,EAAA3iN,OAAA2iN,EAAA1oM,GAAA,MAEAk8M,EAAAqiB,MAAA,SAAA71B,GACA,GAAAgQ,GAAAtzN,IACAsQ,QAAAmoC,KAAA6qK,GAAA5qE,QAAA,SAAAnmI,GACA+gN,EAAAtgM,OAAA20M,QAAAp1N,GAAA+wM,EAAA/wM,MAGAukN,EAAAsiB,aAAA,SAAA91B,GACA,MAAAtjN,MAAAyuK,GAAAhrK,IAAA6M,OAAAmoC,KAAA6qK,GAAA16M,IAAA,SAAA2J,GAAA,MAAA+wM,GAAA/wM,MAAA2mC,OAAA,GAEA49K,EAAAuiB,YAAA,WACA,MAAA3R,GAAA1nO,KAAAgzB,OAAA20M,WAAA3nO,KAAAgzB,OAAA44M,YAAA5rO,KAAAw8N,QAAA,YAEA1F,EAAAwiB,QAAA,SAAAjpO,GACA,GAAAwM,GAAAy2M,EAAAtzN,IAKA,OAJAqQ,KACAwM,EAAAy2M,EAAAtgM,OAAA84M,WAAAz7N,EAAAkC,IACAlC,EAAAwM,KAAAqZ,SAAArZ,EAAAA,EAAAxM,EAAAkC,IAEAlC,GAEAymN,EAAAyiB,gBAAA,SAAA97L,EAAA7iC,GACA,GAAA4+N,GAAA/7L,EAAA/7C,OAAA,SAAAoP,GAAA,MAAAA,GAAA8J,QAAAA,GACA,OAAA4+N,GAAA74O,OAAA64O,EAAA,GAAA,MAEA1iB,EAAA2iB,cAAA,SAAA/5M,EAAArtB,GACA,GAAAihN,GAAAtzN,IACA0/B,GAAAg5G,QAAA,SAAA9nI,GACAA,EAAA6sC,OAAAi7F,QAAA,SAAA5nI,EAAAvP,GACAuP,EAAAuB,EAAAihN,EAAAomB,gBAAArnO,EAAA9Q,GAAAqP,EAAA2B,GAAAhR,KAEA+xN,EAAAjjN,KAAAizM,GAAA1yM,EAAA2B,IAAAF,KAGAykN,EAAA6iB,eAAA,SAAAj6M,EAAA4jL,GACA,GAAAgQ,GAAAtzN,IACA0/B,GAAAg5G,QAAA,SAAA9nI,GACA0yM,EAAA1yM,EAAA2B,KACA+gN,EAAAmmB,eAAA7oO,GAAA0yM,EAAA1yM,EAAA2B,QAIAukN,EAAA4iB,gBAAA,SAAAE,EAAArnO,EAAAqI,GACA,GAAAvI,GAAAihN,EAAAtzN,IAUA,OARAqS,GADAihN,EAAAgU,eACAsS,EAAAtmB,EAAAiV,UAAAqR,GAAAtmB,EAAAiV,UAAAjV,EAAAylB,UAAAxmO,EAAAqI,IAEA04M,EAAAkU,cAAAlU,EAAAuQ,gBACAsE,EAAAyR,IAAAA,EAAAtmB,EAAAylB,UAAAxmO,EAAAqI,GAGAA,GAIAk8M,EAAA+iB,YAAA,SAAA1hO,GACA,OACA5F,GAAA4F,EAAA5F,GACAunO,OAAA3hO,EAAA2hO,OACAr8L,OAAAtlC,EAAAslC,OAAA70C,IAAA,SAAA1I,GACA,OAAAmS,EAAAnS,EAAAmS,EAAAiB,MAAApT,EAAAoT,MAAAf,GAAArS,EAAAqS,QAIAukN,EAAAijB,SAAA,WACA,GAAAzmB,GAAAtzN,IACAszN,GAAAjjN,KAAAqvB,QAAA/+B,SACA2yN,EAAAhQ,MACAgQ,EAAAjjN,KAAAqvB,QAAA,GAAA+d,OAAAi7F,QAAA,SAAA5nI,GACAwiN,EAAAhQ,GAAAxyM,EAAA8J,OAAA9J,EAAAuB,MAIAykN,EAAAkjB,SAAA,SAAAz4O,GACA,GAAA8Q,GAAArS,KAAAsjN,GAAA/hN,EAAA,EACA,OAAA,mBAAA8Q,GAAAA,EAAA,MAEAykN,EAAAmjB,SAAA,SAAA14O,GACA,GAAA8Q,GAAArS,KAAAsjN,GAAA/hN,EAAA,EACA,OAAA,mBAAA8Q,GAAAA,EAAA,MAEAykN,EAAAihB,gBAAA,WACA,GAAAzkB,GAAAtzN,IACA,OAAAszN,GAAA7kD,GAAApkK,IAAAipN,EAAAjjN,KAAAqvB,QAAA,SAAA9uB,GAAA,MAAAA,GAAA6sC,OAAA98C,UAEAm2N,EAAAojB,sBAAA,SAAAx6M,GACA,GAAAy6M,GAAAx5O,EAAA++B,EAAA/+B,OAAA0J,EAAA,CAWA,OAVA1J,GAAA,EACA++B,EAAAg5G,QAAA,SAAA9nI,GACAA,EAAA6sC,OAAA98C,OAAA0J,IACA8vO,EAAAvpO,EACAvG,EAAAuG,EAAA6sC,OAAA98C,UAIAw5O,EAAAx5O,EAAA++B,EAAA,GAAA,KAEAy6M,GAEArjB,EAAAsjB,SAAA,SAAA16M,GACA,GAAA4zL,GAAAtzN,IACA,OAAA0/B,GAAA/+B,QACA2yN,EAAA7kD,GAAAn1G,IAAA55B,EAAA,SAAA9uB,GAAA,MAAAA,GAAA6sC,OAAA,GAAAprC,IACAihN,EAAA7kD,GAAApkK,IAAAq1B,EAAA,SAAA9uB,GAAA,MAAAA,GAAA6sC,OAAA7sC,EAAA6sC,OAAA98C,OAAA,GAAA0R,MAFA,EAAA,IAKAykN,EAAAuF,SAAA,SAAA38L,GACA,MAAAA,GAAA92B,IAAA,SAAA1I,GAAA,MAAAA,GAAAqS,MAEAukN,EAAAujB,eAAA,SAAAh9L,GACA,GAAAi2K,GAAAtzN,IACA,OAAAq9C,MAAAtxC,OAAAsxC,GAAAi2K,EAAA+I,SAAA/I,EAAAjjN,KAAAqvB,UAEAo3L,EAAAwjB,UAAA,SAAA56M,EAAAntB,GACA,GAAAhR,GAAA87C,EAAAr9C,KAAAq8N,SAAA38L,EACA,KAAAn+B,EAAA,EAAAA,EAAA87C,EAAA18C,OAAAY,IACA,GAAA87C,EAAA97C,KAAAgR,EACA,OAAA,CAGA,QAAA,GAEAukN,EAAA8K,eAAA,SAAA2Y,GACA,MAAAv6O,MAAAu5N,gBAAA/oN,QAAA+pO,GAAA,GAEAzjB,EAAA0jB,eAAA,SAAAD,GACA,MAAAv6O,MAAAw5N,gBAAAhpN,QAAA+pO,GAAA,GAEAzjB,EAAA2M,oBAAA,SAAA/jM,GACA,GAAA4zL,GAAAtzN,IACA,OAAA0/B,GAAAh+B,OAAA,SAAAkP,GAAA,MAAA0iN,GAAAsO,eAAAhxN,EAAA2B,OAEAukN,EAAA2jB,qBAAA,SAAA/6M,GACA,GAAA4zL,GAAAtzN,KACAsjN,EAAAgQ,EAAA7kD,GAAAhrK,IAAA6vN,EAAA7kD,GAAAppK,MAAAq6B,EAAA92B,IAAA,SAAAgI,GAAA,MAAAA,GAAA6sC,OAAA70C,IAAA,SAAAkI,GAAA,OAAAA,EAAAuB,QAAAorC,QAEA,OADA6lK,GAAAgQ,EAAAgU,eAAAhkB,EAAA16M,IAAA,SAAAyJ,GAAA,MAAA,IAAAJ,OAAAI,KAAAixM,EAAA16M,IAAA,SAAAyJ,GAAA,OAAAA,IACAixM,EAAAhyM,KAAA,SAAA7R,EAAAC,GAAA,MAAAD,GAAAC,GAAA,EAAAD,EAAAC,EAAA,EAAAD,GAAAC,EAAA,EAAA4tF,OAEAwpI,EAAAsF,mBAAA,SAAAse,GACA16O,KAAAu5N,gBAAAv5N,KAAAu5N,gBAAAxtN,OAAA2uO,IAEA5jB,EAAA6jB,sBAAA,SAAAD,GACA16O,KAAAu5N,gBAAAv5N,KAAAu5N,gBAAA73N,OAAA,SAAA6Q,GAAA,MAAAmoO,GAAAlqO,QAAA+B,GAAA,KAEAukN,EAAAyF,mBAAA,SAAAme,GACA16O,KAAAw5N,gBAAAx5N,KAAAw5N,gBAAAztN,OAAA2uO,IAEA5jB,EAAA8jB,sBAAA,SAAAF,GACA16O,KAAAw5N,gBAAAx5N,KAAAw5N,gBAAA93N,OAAA,SAAA6Q,GAAA,MAAAmoO,GAAAlqO,QAAA+B,GAAA,KAEAukN,EAAAof,mBAAA,SAAAx2M,GACA,GAAA6jL,KAOA,OANA7jL,GAAAg5G,QAAA,SAAA9nI,GACA2yM,EAAA3yM,EAAA2B,OACA3B,EAAA6sC,OAAAi7F,QAAA,SAAA5nI,GACAyyM,EAAA3yM,EAAA2B,IAAAhM,KAAAuK,EAAAwC,WAGAiwM,GAEAuT,EAAA+jB,oBAAA,SAAAn7M,EAAAo7M,GACA,GAAAv5O,GAAAyC,EAAAy5C,EAAAJ,EAAA/sC,OAAAmoC,KAAA/Y,EACA,KAAAn+B,EAAA,EAAAA,EAAA87C,EAAA18C,OAAAY,IAEA,IADAk8C,EAAA/d,EAAA2d,EAAA97C,IAAAk8C,OACAz5C,EAAA,EAAAA,EAAAy5C,EAAA98C,OAAAqD,IACA,GAAA82O,EAAAr9L,EAAAz5C,GAAAsP,OACA,OAAA,CAIA,QAAA,GAEAwjN,EAAAqf,0BAAA,SAAAz2M,GACA,MAAA1/B,MAAA66O,oBAAAn7M,EAAA,SAAA5uB,GAAA,MAAAA,GAAA,KAEAgmN,EAAAwf,0BAAA,SAAA52M,GACA,MAAA1/B,MAAA66O,oBAAAn7M,EAAA,SAAA5uB,GAAA,MAAAA,GAAA,KAEAgmN,EAAAikB,YAAA,WACA,GAAA/nN,GAAAhzB,KAAAgzB,MACA,OAAA,gBAAAA,GAAA,YAAA,SAAAA,EAAAq5M,WAAAprO,eAEA61N,EAAAkkB,WAAA,WACA,GAAAhoN,GAAAhzB,KAAAgzB,MACA,OAAA,gBAAAA,GAAA,YAAA,QAAAA,EAAAq5M,WAAAprO,eAEA61N,EAAAmkB,aAAA,SAAAv7M,GACA,GAAA4zL,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OAAAkoN,EAAA5nB,EAAA0nB,aAAAG,EAAA7nB,EAAAynB,aAWA,OAVAG,IAAAC,EACAz7M,EAAApuB,KAAA,SAAAovH,EAAAC,GACA,GAAAy6G,GAAA,SAAAn7O,EAAAE,GAAA,MAAAF,GAAAmK,KAAA0yB,IAAA38B,EAAAmT,QACA+nO,EAAA36G,EAAAjjF,OAAAk/I,OAAAy+C,EAAA,GACAE,EAAA36G,EAAAljF,OAAAk/I,OAAAy+C,EAAA,EACA,OAAAF,GAAAI,EAAAD,EAAAA,EAAAC,IAEAn6O,EAAA6xB,EAAAq5M,aACA3sM,EAAApuB,KAAA0hB,EAAAq5M,YAEA3sM,GAEAo3L,EAAAgiB,UAAA,SAAAp5M,EAAArtB,GACA,MAAArS,MAAAyuK,GAAAppK,MAAAq6B,EAAA92B,IAAA,SAAAgI,GAAA,MAAAA,GAAA6sC,UAAA/7C,OAAA,SAAAoP,GAAA,MAAAA,GAAAuB,EAAAA,IAAA,KAEAykN,EAAAykB,iBAAA,SAAAlrO,GACA,MAAAA,GAAA3O,OAAA,SAAAxB,GAAA,MAAAioO,GAAAjoO,EAAAoT,UAEAwjN,EAAAkgB,gBAAA,SAAAt3M,EAAA82M,GACA,MAAA92M,GAAA92B,IAAA,SAAAgI,GACA,OACA2B,GAAA3B,EAAA2B,GACAunO,OAAAlpO,EAAAkpO,OACAr8L,OAAA7sC,EAAA6sC,OAAA/7C,OAAA,SAAAoP,GACA,MAAA0lO,GAAA,IAAA1lO,EAAAuB,GAAAvB,EAAAuB,GAAAmkO,EAAA,SAKA1f,EAAA4O,aAAA,WACA,GAAA1yM,GAAAhzB,KAAAgzB,MACA,SAAA,iBAAAA,GAAAo5M,cAAAp5M,EAAAo5M,gBAEA,gBAAAp5M,GAAAo5M,cAAA1E,EAAA10M,EAAAo5M,eAKAtV,EAAAygB,mBAAA,SAAAj+K,EAAAjvD,EAAAkY,GACA,GAAA+wM,GAAAtzN,KACA22O,GAAA,EAAA,GAAA6E,EAAA,GASA,OARAloB,GAAAyI,YAAA7hN,OAAA,OAAAo0E,UAAA,UACAj+E,MAAAipD,EAAAjvD,IACAszB,QAAA7Z,OAAA,QACAzjB,KAAA,SAAAH,GAAA,MAAAozN,GAAAmoB,gBAAAv7O,EAAAqS,IAAArS,KACA2B,KAAA,SAAA3B,EAAAqB,GACAo1O,EAAAp1O,GAAAvB,KAAAymB,wBAAAlE,GAAAi5N,IAEA5uO,SACA+pO,GAEA7f,EAAA4kB,UAAA,SAAAx7O,GACA,MAAAF,MAAAs6O,UAAAt6O,KAAAqQ,KAAAqvB,QAAAx/B,EAAAqS,KAEAukN,EAAA6kB,MAAA,SAAAz7O,GACA,MAAA,QAAAA,IAAAF,KAAAs6O,UAAAt6O,KAAAqQ,KAAAqvB,QAAAx/B,EAAAmQ,KAAAkC,KAEAukN,EAAA8kB,kBAAA,SAAAn+L,EAAA7iC,GACA,GAAArZ,GAAAw2H,EAAAt6E,EAAA7iC,GAAAvI,EAAAwpO,IACA,KAAAt6O,EAAAqZ,EAAA,EAAArZ,GAAA,GACAw2H,IAAAt6E,EAAAl8C,GAAA8Q,EADA9Q,IAEAs6O,EAAAt1O,KAAAk3C,EAAAl8C,GAEA,KAAAA,EAAAqZ,EAAArZ,EAAAk8C,EAAA98C,QACAo3H,IAAAt6E,EAAAl8C,GAAA8Q,EADA9Q,IAEAs6O,EAAAt1O,KAAAk3C,EAAAl8C,GAEA,OAAAs6O,IAGA/kB,EAAAglB,uBAAA,SAAAp8M,EAAAzY,GACA,GAAAwgM,GAAA6L,EAAAtzN,IAQA,OALAynN,GAAA/nL,EAAA92B,IAAA,SAAAuP,GACA,MAAAm7M,GAAAyoB,YAAA5jO,EAAAslC,OAAAx2B,KAIAqsM,EAAAyoB,YAAAt0B,EAAAxgM,IAEA6vM,EAAAilB,YAAA,SAAAt+L,EAAAx2B,GACA,GAAAtM,GAAA24M,EAAAtzN,KAAAg8O,EAAA1oB,EAAAtgM,OAAA69M,iBAmBA,OAhBApzL,GAAA/7C,OAAA,SAAAoP,GAAA,MAAAA,IAAAwiN,EAAA8P,UAAAtyN,EAAAyB,MAAAmmI,QAAA,SAAA5nI,GACA,GAAAwjH,GAAAg/F,EAAAoI,KAAAxhN,OAAA,IAAAlF,EAAAinO,KAAA3oB,EAAA4oB,wBAAAprO,EAAAyB,IAAA,KAAAyC,EAAA6xF,IAAA,IAAA/1F,EAAA8J,OAAAo+B,QACAr+B,GAAA24M,EAAA6oB,YAAA7nH,KACA35G,EAAA7J,KAKA2sC,EAAA/7C,OAAA,SAAAoP,GAAA,MAAAA,KAAAwiN,EAAA8P,UAAAtyN,EAAAyB,MAAAmmI,QAAA,SAAA5nI,GACA,GAAA5Q,GAAAozN,EAAAnyH,KAAArwF,EAAAmW,EACA/mB,GAAA87O,IACAA,EAAA97O,EACAya,EAAA7J,KAIA6J,GAEAm8M,EAAA31H,KAAA,SAAA9wF,EAAA4W,GACA,GAAAqsM,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OACAopN,EAAAppN,EAAA4mM,aAAA,EAAA,EACAyiB,EAAArpN,EAAA4mM,aAAA,EAAA,EACA1lN,EAAAo/M,EAAA8S,QAAA/1N,EAAAA,EAAAuK,OACAvI,EAAAihN,EAAAjhN,EAAAhC,EAAAgC,EACA,OAAAjI,MAAA64J,KAAA74J,KAAAs1H,IAAArtH,EAAA4U,EAAAm1N,GAAA,GAAAhyO,KAAAs1H,IAAAxrH,EAAA+S,EAAAo1N,GAAA,KAEAvlB,EAAAwlB,oBAAA,SAAA7+L,GACA,GAAAl8C,GAAAg7O,KAAAxwO,OAAA0xC,EAEA,KAAAz9C,KAAA6jO,gBACA,MAAApmL,EAGA,KAAAl8C,EAAAk8C,EAAA98C,OAAA,EAAA,EAAAY,EAAAA,IACAg7O,EAAAh7O,GAAAg7O,EAAAh7O,EAAA,EAcA,OAXAg7O,GAAA,IACAlqO,EAAAkqO,EAAA,GAAAlqO,EAAA,EACAiB,MAAAipO,EAAA,GAAAjpO,MACAf,GAAAgqO,EAAA,GAAAhqO,IAEAgqO,EAAA9+L,EAAA98C,OAAA,IACA0R,EAAAkqO,EAAA9+L,EAAA98C,QAAA0R,EAAA,EACAiB,MAAAipO,EAAA9+L,EAAA98C,QAAA2S,MACAf,GAAAgqO,EAAA9+L,EAAA98C,QAAA4R,IAGAgqO,GAEAzlB,EAAA0lB,qBAAA,SAAA3/N,EAAAssB,GACA,GAAAmqL,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OAAAylC,EAAAzlC,EAAA,QAAAnW,EACA,OAAA,mBAAAssB,GAAAsvB,GACAnoD,OAAAmoC,KAAAtP,GAAAuvG,QAAA,SAAAnmI,GACAkmD,EAAAlmD,GAAA42B,EAAA52B,KAEA+gN,EAAAxC,QAAAqR,YAAA,IACA1pK,IAGAq+J,EAAAO,iBAAA,SAAAhrM,EAAA1c,EAAAye,EAAAqqB,EAAAp2C,GACA,GAAAixN,GAAAtzN,KAAAa,EAAA8O,EAAAA,EAAA,MACA8sO,EAAAnpB,EAAA7kD,GAAAr/I,IAAA/C,EACA+B,IACA9d,OAAAmoC,KAAArqB,GAAAsqH,QAAA,SAAA3/H,GACA0jO,EAAA1jO,OAAAA,EAAAqV,EAAArV,MAGA0jO,EAAAz3O,IAAA,SAAAoL,EAAAC,GACA,GAAAnQ,EACA,KAAAmQ,EACA,KAAA,IAAAvQ,OAAAsQ,EAAAssO,YAAA,IAAAtsO,EAAAod,OAAA,KAAApd,EAAAqd,WAAA,IAGAvtB,GADA,SAAAW,EACAyyN,EAAAqE,kBAAAz0N,KAAAC,MAAAkN,EAAAggB,UAAAooB,GACA,QAAA53C,EACAyyN,EAAAqpB,iBAAAtsO,EAAAggB,UAEAijM,EAAAspB,iBAAAvsO,EAAAggB,UAEAhuB,EAAAhB,KAAAiyN,EAAApzN,MAGA42N,EAAA+lB,iBAAA,SAAAC,EAAAh2F,GACA,GAAA5mJ,GAAA+nI,EAAA6e,EAAAszD,UAAA0iC,EASA,OARA,KAAA70G,EAAAtnI,QACAT,OACA+nI,EAAA,GAAAyQ,QAAA,SAAAnmI,GACArS,EAAA,GAAAqS,GAAA,QAGArS,EAAA4mJ,EAAA3jJ,MAAA25O,GAEA58O,GAEA42N,EAAA8lB,iBAAA,SAAAniC,GACA,MAAAz6M,MAAA68O,iBAAApiC,EAAAz6M,KAAAyuK,GAAAgsC,MAEAqc,EAAA6lB,iBAAA,SAAAjiC,GACA,MAAA16M,MAAA68O,iBAAAniC,EAAA16M,KAAAyuK,GAAAisC,MAEAoc,EAAAa,kBAAA,SAAA9qM,EAAA4rB,GACA,GACAskM,GAAA1sO,EADAijN,EAAAtzN,KACAg9O,IA4BA,OA3BAvkM,IACAA,EAAApmC,GACA0qO,EAAAtkM,EAAAnlC,MAAAvH,OAAA0sC,EAAApmC,GACAihN,EAAAtgM,OAAAy0M,OAAAhvL,EAAApmC,GAEA0qO,EAAAtkM,EAAAnlC,MAEA0pO,EAAAz2O,KAAAw2O,GACAlwN,EAAA6rH,QAAA,SAAA9yI,GACA,GAAAq3O,KACAF,GAAArkG,QAAA,SAAAn2H,GAEA,GAAAzR,GAAAwiN,EAAA4pB,gBAAAt3O,EAAA2c,EACAs0B,GAAA/lC,KACAA,EAAA,MAEAmsO,EAAA12O,KAAAuK,KAEAksO,EAAAz2O,KAAA02O,KAEA5sO,EAAAijN,EAAAuE,kBAAAmlB,KAEA1sO,OAAAmoC,KAAA5rB,GAAA6rH,QAAA,SAAAn2H,GACAy6N,EAAAz2O,MAAAgc,GAAAxW,OAAA8gB,EAAAtK,OAEAlS,EAAAijN,EAAAyE,qBAAAilB,IAEA3sO,GAEAymN,EAAAomB,gBAAA,SAAAnvE,EAAA78C,GACAA,EAAAA,EAAA7tH,QAAA,aAAA,OACA6tH,EAAAA,EAAA7tH,QAAA,MAAA,GAEA,KAAA,GADA85O,GAAAjsH,EAAAhhH,MAAA,KACA3O,EAAA,EAAAA,EAAA47O,EAAAx8O,SAAAY,EAAA,CACA,GAAA2C,GAAAi5O,EAAA57O,EACA,MAAA2C,IAAA6pK,IAGA,MAFAA,GAAAA,EAAA7pK,GAKA,MAAA6pK,IAEA+oD,EAAAe,kBAAA,SAAA5vF,GACA,GAAA1mI,GAAAyC,EAAAy0C,EAAAwvF,EAAA,GAAAg1G,KAAAD,IACA,KAAAz7O,EAAA,EAAAA,EAAA0mI,EAAAtnI,OAAAY,IAAA,CAEA,IADA07O,KACAj5O,EAAA,EAAAA,EAAAikI,EAAA1mI,GAAAZ,OAAAqD,IAAA,CACA,GAAA6yC,EAAAoxF,EAAA1mI,GAAAyC,IACA,KAAA,IAAAlE,OAAA,0CAAAyB,EAAA,IAAAyC,EAAA,KAEAi5O,GAAAxkM,EAAAz0C,IAAAikI,EAAA1mI,GAAAyC,GAEAg5O,EAAAz2O,KAAA02O,GAEA,MAAAD,IAEAlmB,EAAAiB,qBAAA,SAAAqlB,GACA,GAAA77O,GAAAyC,EAAAue,EAAAy6N,IACA,KAAAz7O,EAAA,EAAAA,EAAA67O,EAAAz8O,OAAAY,IAEA,IADAghB,EAAA66N,EAAA77O,GAAA,GACAyC,EAAA,EAAAA,EAAAo5O,EAAA77O,GAAAZ,OAAAqD,IAAA,CAIA,GAHA6yC,EAAAmmM,EAAAh5O,EAAA,MACAg5O,EAAAh5O,EAAA,OAEA6yC,EAAAumM,EAAA77O,GAAAyC,IACA,KAAA,IAAAlE,OAAA,0CAAAyB,EAAA,IAAAyC,EAAA,KAEAg5O,GAAAh5O,EAAA,GAAAue,GAAA66N,EAAA77O,GAAAyC,GAGA,MAAAg5O,IAEAlmB,EAAAmF,qBAAA,SAAA5rN,EAAAgtO,GACA,GAGA39M,GAHA4zL,EAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OACAqqB,EAAAi2K,EAAA7kD,GAAAh2H,KAAApoC,EAAA,IAAA3O,OAAA4xN,EAAAmlB,OAAAnlB,GACAhQ,EAAAgQ,EAAA7kD,GAAAh2H,KAAApoC,EAAA,IAAA3O,OAAA4xN,EAAAilB,IAAAjlB,EAyGA,OArGAj2K,GAAAq7F,QAAA,SAAAnmI,GACA,GAAA+qO,GAAAhqB,EAAAolB,QAAAnmO,EAEA+gN,GAAAkU,aAAAlU,EAAAgU,eAEAhkB,EAAA9yM,QAAA8sO,IAAA,EACAhqB,EAAAjjN,KAAAizM,GAAA/wM,IAAA8qO,GAAA/pB,EAAAjjN,KAAAizM,GAAA/wM,GAAA+gN,EAAAjjN,KAAAizM,GAAA/wM,OAAAxG,OACAsE,EAAAzH,IAAA,SAAA1I,GAAA,MAAAA,GAAAo9O,KACA57O,OAAAymO,GACAv/N,IAAA,SAAAgxO,EAAAr4O,GAAA,MAAA+xN,GAAAomB,gBAAAE,EAAArnO,EAAAhR,MAIAyxB,EAAAy0M,OACAnU,EAAAjjN,KAAAizM,GAAA/wM,GAAA+gN,EAAA0lB,mBAGAtR,EAAA10M,EAAA20M,WACArU,EAAAjjN,KAAAizM,GAAA/wM,GAAA+gN,EAAAqlB,iBAAA2E,EAAAhqB,EAAAjjN,KAAAqvB,UAIA4zL,EAAAjjN,KAAAizM,GAAA/wM,GAAAlC,EAAAzH,IAAA,SAAA1I,EAAAqB,GAAA,MAAAA,OAMA87C,EAAAq7F,QAAA,SAAAnmI,GACA,IAAA+gN,EAAAjjN,KAAAizM,GAAA/wM,GACA,KAAA,IAAAzS,OAAA,8BAAAyS,EAAA,QAKAmtB,EAAA2d,EAAAz0C,IAAA,SAAA2J,EAAAqI,GACA,GAAA2iO,GAAAvqN,EAAA64M,iBAAAt5N,EACA,QACAA,GAAAgrO,EACAzD,OAAAvnO,EACAkrC,OAAAptC,EAAAzH,IAAA,SAAA1I,EAAAqB,GACA,GACA8Q,GADAirO,EAAAhqB,EAAAolB,QAAAnmO,GAAAqnO,EAAA15O,EAAAo9O,GACAhqO,EAAA,OAAApT,EAAAqS,IAAAV,MAAA3R,EAAAqS,IAAA,MAAArS,EAAAqS,EAkBA,OAhBA+gN,GAAAkU,aAAAlU,EAAAuQ,iBAAA,IAAAjpN,IAAAi8B,EAAA+iM,IACA,IAAAh/N,GAAA,IAAArZ,IACAyxB,EAAAw1M,sBAEAn2N,EAAA2gB,EAAAw1M,kBAAAh4N,QAAAopO,GACAvnO,KAAA,IACAA,EAAA2gB,EAAAw1M,kBAAA7nO,OACAqyB,EAAAw1M,kBAAAjiO,KAAAqzO,KAGAvnO,EAAAihN,EAAAomB,gBAAAE,EAAArnO,EAAAhR,IAGAs1C,EAAA32C,EAAAqS,KAAA+gN,EAAAjjN,KAAAizM,GAAA/wM,GAAA5R,QAAAY,KACA8Q,EAAA6jB,SAEA7jB,EAAAA,EAAAiB,MAAAA,EAAAf,GAAAgrO,KACA77O,OAAA,SAAAoP,GAAA,MAAAujO,GAAAvjO,EAAAuB,QAKAqtB,EAAAg5G,QAAA,SAAA9nI,GACA,GAAArP,EAEAyxB,GAAA44M,aACAh7N,EAAA6sC,OAAA7sC,EAAA6sC,OAAAnsC,KAAA,SAAAksO,EAAAC,GACA,GAAAlnH,GAAAinH,EAAAnrO,GAAA,IAAAmrO,EAAAnrO,EAAAmrO,EAAAnrO,EAAA20B,EAAAA,EACAyvF,EAAAgnH,EAAAprO,GAAA,IAAAorO,EAAAprO,EAAAorO,EAAAprO,EAAA20B,EAAAA,CACA,OAAAuvF,GAAAE,KAIAl1H,EAAA,EACAqP,EAAA6sC,OAAAi7F,QAAA,SAAA5nI,GACAA,EAAA8J,MAAArZ,MAGA+xN,EAAAjjN,KAAAizM,GAAA1yM,EAAA2B,IAAAjB,KAAA,SAAAksO,EAAAC,GACA,MAAAD,GAAAC,MAKAnqB,EAAA2iB,iBAAA3iB,EAAA6iB,0BAAAz2M,GACA4zL,EAAA+iB,iBAAA/iB,EAAAgjB,0BAAA52M,GAGA1M,EAAAk5M,WACA5Y,EAAAoqB,cAAApqB,EAAA+I,SAAA38L,GAAAh+B,OAAA,SAAA6Q,GAAA,QAAAA,IAAAygB,GAAAm5M,cAAAn5M,EAAAk5M,WAIAxsM,EAAAg5G,QAAA,SAAAx4I,GACAozN,EAAAqqB,SAAAz9O,EAAA45O,OAAA55O,KAGAw/B,GAGAo3L,EAAAl2M,KAAA,SAAA8e,EAAAsY,GACA,GAAAs7K,GAAAtzN,IACA0/B,KAEAsY,EAAAt2C,SACAg+B,EAAAA,EAAAh+B,OAAAs2C,EAAAt2C,UAGAs2C,EAAAn3C,MAAAm3C,EAAAwK,QACA9iB,EAAAg5G,QAAA,SAAA9nI,GACA,GAAA/P,GAAAm3C,EAAAwK,OAAAxK,EAAAwK,MAAA5xC,EAAA2B,IAAAylC,EAAAwK,MAAA5xC,EAAA2B,IAAAylC,EAAAn3C,IACAyyN,GAAAoqB,cAAA9sO,EAAA2B,GAAA1R,KAIAyyN,EAAAjjN,KAAAqvB,QAAAg5G,QAAA,SAAAx4I,GACA,IAAA,GAAAqB,GAAA,EAAAA,EAAAm+B,EAAA/+B,OAAAY,IACA,GAAArB,EAAAqS,KAAAmtB,EAAAn+B,GAAAgR,GAAA,CACArS,EAAAu9C,OAAA/d,EAAAn+B,GAAAk8C,OACA/d,EAAAnuB,OAAAhQ,EAAA,EACA,UAIA+xN,EAAAjjN,KAAAqvB,QAAA4zL,EAAAjjN,KAAAqvB,QAAA3zB,OAAA2zB,IAIA4zL,EAAAsL,cAAAtL,EAAAjjN,KAAAqvB,SAGA4zL,EAAAxC,QAAAoO,sBAAA,EAAAD,mBAAA,EAAAkD,YAAA,IAEAnqL,EAAA31C,MAAA21C,EAAA31C,QAEAy0N,EAAA8mB,aAAA,SAAA5lM,GACA,GAAAs7K,GAAAtzN,IACAg4C,GAAA3nC,KACAijN,EAAA1yM,KAAA0yM,EAAA2I,qBAAAjkL,EAAA3nC,MAAA2nC,GAEAA,EAAA3rB,IACAinM,EAAA+D,iBAAAr/K,EAAA3rB,IAAA2rB,EAAAroC,SAAAqoC,EAAA5pB,QAAA4pB,EAAAS,KAAA,SAAApoC,GACAijN,EAAA1yM,KAAA0yM,EAAA2I,qBAAA5rN,GAAA2nC,KAGAA,EAAAnrB,KACAymM,EAAA1yM,KAAA0yM,EAAA2I,qBAAA3I,EAAAqE,kBAAA3/K,EAAAnrB,KAAAmrB,EAAAS,OAAAT,GAEAA,EAAAiwF,KACAqrF,EAAA1yM,KAAA0yM,EAAA2I,qBAAA3I,EAAAuE,kBAAA7/K,EAAAiwF,OAAAjwF,GAEAA,EAAAolM,QACA9pB,EAAA1yM,KAAA0yM,EAAA2I,qBAAA3I,EAAAyE,qBAAA//K,EAAAolM,UAAAplM,GAGAs7K,EAAA1yM,KAAA,KAAAo3B,IAGA8+K,EAAAprF,OAAA,SAAAgvG,EAAAr4O,GACA,GAAAixN,GAAAtzN,IAOA,OANAqC,KACAA,EAAA,cAGAq4O,EAAAA,EAAAh5O,OAAA,SAAA6Q,GAAA,MAAA+gN,GAAAgnB,UAAAhnB,EAAAjjN,KAAAqvB,QAAAntB,KAEAmoO,GAAA,IAAAA,EAAA/5O,QAIA2yN,EAAAvyG,IAAAzyB,UAAAosJ,EAAA9xO,IAAA,SAAA2J,GAAA,MAAA+gN,GAAAuqB,eAAAtrO,MACAsmB,aACAx0B,MAAA,UAAA,GACAuI,SACAvL,KAAAiyN,EAAAmX,OAAApoO,OACAq4O,GAAAhiG,QAAA,SAAAnmI,GAEA+gN,EAAA0H,cAAAzoN,IAAA,EAEA+gN,EAAAiM,QACAjM,EAAAiM,OAAAjxI,UAAA,IAAAt5E,EAAA8oO,WAAAxqB,EAAA4oB,wBAAA3pO,IAAA3F,SAGA0mN,EAAAjjN,KAAAqvB,QAAA4zL,EAAAjjN,KAAAqvB,QAAAh+B,OAAA,SAAAkP,GACA,MAAAA,GAAA2B,KAAAA,WAjBAlQ,MAsBAy0N,EAAAinB,aAAA,SAAAx8O,GACA,GAAAyxB,GAAAhzB,KAAAgzB,MACA,OAAAzxB,GAAAyxB,EAAAw1M,kBAAA7nO,OAAAqyB,EAAAw1M,kBAAAjnO,GAAAA,GAGAu1N,EAAAwH,cAAA,WACA,GAAAhL,GAAAtzN,IACAszN,GAAAoI,KAAAxhN,OAAA,IAAAlF,EAAAkiN,OAAApzM,OAAA,KACA/M,KAAA,QAAA/B,EAAAgpO,YACA35O,MAAA,eAAA,IAEAyyN,EAAAmP,gBAAA,WACA,GACAgY,GAAAC,EADA5qB,EAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OAEAqmN,EAAA/lB,EAAA+lB,cAGA2E,EAAA1qB,EAAAoI,KAAAxhN,OAAA,IAAAlF,EAAAgpO,YACA35O,MAAA,SAAA2uB,EAAAkqM,aAAAlqM,EAAA4mM,aAAA,YAAA,YAAA,MACA/tB,QAAA72L,EAAAmpO,mBAAA9E,GACAxtC,QAAA72L,EAAAopO,kBAAA/E,EAGA2E,GAAA1vJ,UAAA,IAAAt5E,EAAAqpO,WAAAzxO,SAGA0mN,EAAA+qB,UAAAL,EAAA1vJ,UAAA,IAAAt5E,EAAAqpO,WAEAhF,GACA4E,EAAA3qB,EAAA+qB,UAAAhuO,MAAA,IAEAijN,EAAAgrB,gCAAAL,EAAAtgN,SAEA21L,EAAAirB,gBAAAN,KAKAC,EAAA5qB,EAAA4mB,sBAAA5mB,EAAAjjN,KAAAqvB,SACAs+M,EAAA9gM,MAAAghM,EAAAA,EAAAzgM,WACA61K,EAAA+qB,UAAAL,EAAA1vJ,UAAA,IAAAt5E,EAAAqpO,WACAJ,EAAA3qB,EAAA+qB,UAAAhuO,KAAA,SAAAnQ,GAAA,MAAAA,KAEAozN,EAAAkrB,6BAAAP,EAAAtgN,SAEA21L,EAAAirB,gBAAAN,GAEAA,EAAA7mG,OAAAxqI,WAGAkqN,EAAAynB,gBAAA,SAAAN,GACA,GACA5rO,GAAA6B,EAAAxT,EAAAmD,EAAA46O,EAAAC,EADAprB,EAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,MAIAirN,GAAAA,GAAA3qB,EAAA+qB,UAAAhuO,KAAA,SAAAnQ,GAAA,MAAAA,KAEAozN,EAAA+lB,eAEAhnO,EAAA,EACA6B,EAAA,EACAxT,EAAA4yN,EAAA7pN,MACA5F,EAAAyvN,EAAA5nN,UAGA4nN,EAAAkU,cAAAlU,EAAAgU,gBAAAhU,EAAAuQ,iBAgCA4a,EAAAnrB,EAAAqrB,oBACAD,EAAA,SAAAx+O,GACA,MAAAozN,GAAAjhN,EAAAnS,EAAAmS,GAAAosO,EAAA,KA/BAnrB,EAAAymB,WAEA0E,EAAA,SAAAv+O,GACA,GAAA0+O,GAAAtrB,EAAA0mB,SAAA95O,EAAA0a,OAAAikO,EAAAvrB,EAAA2mB,SAAA/5O,EAAA0a,MAGA,OAAA,QAAAgkO,GAAA,OAAAC,EACA7rN,EAAA4mM,aAAAtG,EAAA5nN,OAAA4nN,EAAA7pN,OAGA,OAAAm1O,IAAAA,EAAAtrB,EAAAjhN,EAAAitL,SAAA,IACA,OAAAu/C,IAAAA,EAAAvrB,EAAAjhN,EAAAitL,SAAA,IAEAl1L,KAAAC,IAAA,GAAAipN,EAAAjhN,EAAAwsO,GAAAvrB,EAAAjhN,EAAAusO,IAAA,KAEAF,EAAA,SAAAx+O,GACA,GAAA0+O,GAAAtrB,EAAA0mB,SAAA95O,EAAA0a,OAAAikO,EAAAvrB,EAAA2mB,SAAA/5O,EAAA0a,OACAkkO,EAAAxrB,EAAAjjN,KAAAizM,GAAApjN,EAAAqS,IAAArS,EAAA0a,MAGA,OAAA,QAAAgkO,GAAA,OAAAC,EACA,GAGA,OAAAD,IAAAA,EAAAtrB,EAAAjhN,EAAAitL,SAAA,KAEAg0B,EAAAjhN,EAAAysO,GAAAxrB,EAAAjhN,EAAAusO,IAAA,KAQAvsO,EAAA2gB,EAAA4mM,aAAA,EAAA8kB,EACAxqO,EAAA8e,EAAA4mM,aAAA8kB,EAAA,EACAh+O,EAAAsyB,EAAA4mM,aAAAtG,EAAA7pN,MAAAg1O,EACA56O,EAAAmvB,EAAA4mM,aAAA6kB,EAAAnrB,EAAA5nN,QAGAuyO,EACAlnO,KAAA,QAAAu8M,EAAAyrB,WAAAltN,KAAAyhM,IACAv8M,KAAA,IAAA1E,GACA0E,KAAA,IAAA7C,GACA6C,KAAA,QAAArW,GACAqW,KAAA,SAAAlT,IAEAizN,EAAA0nB,6BAAA,SAAAQ,GACA,GAAA1rB,GAAAtzN,KAAAyuK,EAAA6kD,EAAA7kD,GAAAz7I,EAAAsgM,EAAAtgM,MACAgsN,GAAAl7N,OAAA,QACA/M,KAAA,QAAAu8M,EAAAyrB,WAAAltN,KAAAyhM,IACAjvN,MAAA,SAAA2uB,EAAAy5M,wBAAAz5M,EAAA05M,uBAAA,UAAA,MACAhpN,GAAA,YAAA,SAAAxjB,GACA,GAAA0a,GAAA1a,EAAA0a,KAEA04M,GAAArC,UAAAqC,EAAAqF,SACArF,EAAAuM,eAGA7sM,EAAA89M,4BAAAxd,EAAA2rB,cAAArkO,EAAA,MAAA,GACA04M,EAAA4rB,WAAAtkO,EAAA,MAAA,GAGA04M,EAAAoI,KAAAptI,UAAA,IAAAt5E,EAAAs/G,MAAA,IAAA15G,GAAA/Y,KAAA,SAAA3B,GACA8yB,EAAA+5M,iBAAA1rO,KAAAiyN,EAAAS,IAAA7zN,QAGAwjB,GAAA,WAAA,SAAAxjB,GACA,GAAA0a,GAAA1a,EAAA0a,KACA04M,GAAAtgM,SACAsgM,EAAAuM,eACAvM,EAAA6rB,iBACA7rB,EAAAt4D,cAEAs4D,EAAA8rB,kBACA9rB,EAAA+rB,eAEA/rB,EAAAoI,KAAAptI,UAAA,IAAAt5E,EAAAs/G,MAAA,IAAA15G,GAAA/Y,KAAA,SAAA3B,GACA8yB,EAAAg6M,gBAAA3rO,KAAAiyN,EAAAS,IAAA7zN,SAGAwjB,GAAA,YAAA,SAAAxjB,GACA,GAAAo/O,GAAA1kO,EAAA1a,EAAA0a,MACAyjO,EAAA/qB,EAAAvyG,IAAA7mG,OAAA,IAAAlF,EAAAqpO,UAAA,IAAAzjO,EAEA04M,GAAArC,UAAAqC,EAAAqF,SACArF,EAAAuM,eAEAvM,EAAAisB,WAAAr/O,IAAA,eAAAozN,EAAAtgM,OAAAk+M,gBAAAziE,EAAA69B,MAAAtsM,MAAA,GAAAszN,EAAAjhN,EAAAihN,EAAAylB,UAAA74O,EAAAqS,GAAAqI,MACAA,GAAA,GAIA0kO,EAAAhsB,EAAAmQ,oBAAAnQ,EAAAjjN,KAAAqvB,SAAA92B,IAAA,SAAAgI,GACA,MAAA0iN,GAAAgmB,QAAAhmB,EAAAimB,gBAAA3oO,EAAA6sC,OAAA7iC,MAGAoY,EAAAkgN,kBACA5f,EAAAx4D,YAAAwkF,EAAAt/O,MACAszN,EAAAksB,eAAAF,MAGAtsN,EAAAkgN,iBAAAlgN,EAAAy5M,yBAAAz5M,EAAA05M,yBAIApZ,EAAAoI,KAAAptI,UAAA,IAAAt5E,EAAAs/G,MAAA,IAAA15G,GACA/Y,KAAA,WACA4sK,EAAAv0J,OAAAla,MAAA6rM,QAAA72L,EAAAyqO,UAAA,GACAzsN,EAAAy5M,wBACA4R,EAAAh6O,MAAA,SAAA2uB,EAAA05M,uBAAA,UAAA,MAEA15M,EAAAkgN,kBACA5f,EAAA6rB,iBACA7rB,EAAAt4D,cACAhoI,EAAA05M,yBACApZ,EAAA8rB,gBAAAxkO,GACA04M,EAAA+rB,aAAAzkO,OAIAlZ,OAAA,SAAAxB,GACA,MAAAozN,GAAAosB,cAAA1/O,KAAAE,KAEA2B,KAAA,SAAA3B,GACA8yB,EAAAy5M,yBAAAz5M,EAAA05M,wBAAA15M,EAAA25M,4BAAAzsO,KACAm+O,EAAAh6O,MAAA,SAAA,WAEA2uB,EAAAkgN,kBACA5f,EAAAx4D,aAAA56J,GAAAF,MACAszN,EAAAksB,gBAAAt/O,IACA8yB,EAAA89M,4BAAAxd,EAAA2rB,cAAArkO,EAAA1a,EAAAqS,IAAA,GACA+gN,EAAA4rB,WAAAtkO,EAAA1a,EAAAqS,IAAA,SAIAmR,GAAA,QAAA,SAAAxjB,GACA,GAAA0a,GAAA1a,EAAA0a,KACA,KAAA04M,EAAAuM,cAAAvM,EAAAqsB,YAAA,CACA,GAAArsB,EAAAsF,YAEA,YADAtF,EAAAsF,aAAA,EAGAtF,GAAAisB,WAAAr/O,IAAA,eAAA8yB,EAAAk+M,gBAAAziE,EAAA69B,MAAAtsM,MAAA,GAAAszN,EAAAjhN,EAAAihN,EAAAylB,UAAA74O,EAAAqS,GAAAqI,MACAA,GAAA,GAEA04M,EAAAoI,KAAAptI,UAAA,IAAAt5E,EAAAs/G,MAAA,IAAA15G,GAAA/Y,KAAA,SAAA3B,IACA8yB,EAAA05M,wBAAApZ,EAAAosB,cAAA1/O,KAAAE,MACAozN,EAAAqsB,YAAA3/O,KAAAE,EAAA0a,GACA04M,EAAAtgM,OAAA85M,aAAAzrO,KAAAiyN,EAAAS,IAAA7zN,EAAAF,YAIAqB,KACA2xB,EAAA65M,0BAAAvZ,EAAA/mB,KACA99B,EAAAs8B,SAAAwB,OAAAj8J,OAAAhgC,QACAoT,GAAA,OAAA,WAAA4vM,EAAA/mB,KAAA99B,EAAA69B,MAAAtsM,SACA0jB,GAAA,YAAA,WAAA4vM,EAAA7mB,UAAAh+B,EAAA69B,MAAAtsM,SACA0jB,GAAA,UAAA,WAAA4vM,EAAAssB,YACA,eAIA9oB,EAAAwnB,gCAAA,SAAAU,GAGA,QAAAa,KACAvsB,EAAAvyG,IAAA7mG,OAAA,IAAAlF,EAAAqpO,WAAAh6O,MAAA,SAAA,MACAivN,EAAA6rB,iBACA7rB,EAAAt4D,cACAs4D,EAAA8rB,kBACA9rB,EAAA+rB,eAPA,GAAA/rB,GAAAtzN,KAAAyuK,EAAA6kD,EAAA7kD,GAAAz7I,EAAAsgM,EAAAtgM,MAUAgsN,GAAAl7N,OAAA,QACA/M,KAAA,IAAA,GACAA,KAAA,IAAA,GACAA,KAAA,QAAAu8M,EAAA7pN,OACAsN,KAAA,SAAAu8M,EAAA5nN,QACAqL,KAAA,QAAA/B,EAAAqpO,WACA36N,GAAA,WAAA,WACA4vM,EAAAtgM,SACAsgM,EAAAuM,cACAggB,OAEAn8N,GAAA,YAAA,WACA,GACA4oL,GAAA3xL,EAAAmlO,EAAAR,EADA9b,EAAAlQ,EAAAmQ,oBAAAnQ,EAAAjjN,KAAAqvB,QAGA,KAAA4zL,EAAArC,WACAqC,EAAAuM,WAAA2D,GAAA,CAUA,GARAl3B,EAAA79B,EAAA69B,MAAAtsM,MACA2a,EAAA24M,EAAAwoB,uBAAAtY,EAAAl3B,IAEAgnB,EAAAuF,WAAAl+M,GAAAA,EAAApI,KAAA+gN,EAAAuF,UAAAtmN,KACAygB,EAAAg6M,gBAAA3rO,KAAAiyN,EAAAS,IAAAT,EAAAuF,WACAvF,EAAAuF,UAAA3iM,SAGAvb,EAEA,WADAklO,IAKAC,GADAxsB,EAAA8U,cAAAztN,KAAAqY,EAAAkgN,iBACAv4N,GAEA24M,EAAAwlB,UAAAtV,EAAA7oN,EAAAtI,GAIAitO,EAAAQ,EAAAl3O,IAAA,SAAA1I,GACA,MAAAozN,GAAAgmB,QAAAp5O,KAEAozN,EAAAx4D,YAAAwkF,EAAAt/O,MAGAgzB,EAAA89M,4BACAxd,EAAA2rB,cAAAtkO,EAAAC,MAAAD,EAAApI,IAAA,GAEA+gN,EAAA4rB,WAAAvkO,EAAAC,MAAAD,EAAApI,IAAA,GAGA+gN,EAAAksB,eAAAF,IAGAhsB,EAAA8P,UAAAzoN,EAAApI,KAAA+gN,EAAAnyH,KAAAxmF,EAAA2xL,GAAAt5K,EAAA69M,qBACAvd,EAAAvyG,IAAA7mG,OAAA,IAAAlF,EAAAqpO,WAAAh6O,MAAA,SAAA,WACAivN,EAAAuF,YACA7lM,EAAA+5M,iBAAA1rO,KAAAiyN,EAAAS,IAAAp5M,GACA24M,EAAAuF,UAAAl+M,OAIA+I,GAAA,QAAA,WACA,GACA4oL,GAAA3xL,EADA6oN,EAAAlQ,EAAAmQ,oBAAAnQ,EAAAjjN,KAAAqvB,QAEA4zL,GAAAuM,WAAA2D,KAEAl3B,EAAA79B,EAAA69B,MAAAtsM,MACA2a,EAAA24M,EAAAwoB,uBAAAtY,EAAAl3B,GACA3xL,IAEA24M,EAAA8P,UAAAzoN,EAAApI,KAAA+gN,EAAAnyH,KAAAxmF,EAAA2xL,GAAAt5K,EAAA69M,oBACAvd,EAAAoI,KAAAptI,UAAA,IAAAt5E,EAAAg6G,OAAAskG,EAAA4oB,wBAAAvhO,EAAApI,KAAA+7E,UAAA,IAAAt5E,EAAAs/G,MAAA,IAAA35G,EAAAC,OAAA/Y,KAAA,YACAmxB,EAAA05M,wBAAApZ,EAAAosB,cAAA1/O,KAAA2a,MACA24M,EAAAqsB,YAAA3/O,KAAA2a,EAAAA,EAAAC,OACA04M,EAAAtgM,OAAA85M,aAAAzrO,KAAAiyN,EAAAS,IAAAp5M,EAAA3a,YAKAqB,KACA2xB,EAAA65M,0BAAAvZ,EAAA/mB,KACA99B,EAAAs8B,SAAAwB,OAAAj8J,OAAAhgC,QACAoT,GAAA,OAAA,WAAA4vM,EAAA/mB,KAAA99B,EAAA69B,MAAAtsM,SACA0jB,GAAA,YAAA,WAAA4vM,EAAA7mB,UAAAh+B,EAAA69B,MAAAtsM,SACA0jB,GAAA,UAAA,WAAA4vM,EAAAssB,YACA,eAGA9oB,EAAAipB,cAAA,SAAAl/O,EAAA+Z,EAAA0xL,GACA,GAAAgnB,GAAAtzN,KACAia,EAAA,IAAAjF,EAAAqpO,WAAA/qB,EAAA+lB,cAAA,GAAA,IAAAz+N,GACAyjO,EAAA/qB,EAAAoI,KAAAxhN,OAAAD,GAAA++B,OACA3M,EAAAgyM,EAAA53N,wBACApU,EAAAg6B,EAAA3lB,MAAA4lL,EAAAA,EAAA,GAAA,GACAp4L,EAAAm4B,EAAAv2B,KAAAw2L,EAAAA,EAAA,GAAA,GACAllM,EAAAvH,SAAAmgP,YAAA,cAEA54O,GAAA64O,eAAAp/O,GAAA,GAAA,EAAAd,EAAA,EAAAsS,EAAA6B,EAAA7B,EAAA6B,GACA,GAAA,GAAA,GAAA,EAAA,EAAA,MACAmqO,EAAA0B,cAAA34O,IAGA0vN,EAAAsJ,gBAAA,WACA,GAAA9M,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,MACA,OAAAA,GAAA+3M,WAAA/3M,EAAA+3M,WAAAzX,EAAA4sB,kBAEAppB,EAAAwJ,iBAAA,WACA,GAAAhN,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OACAnvB,EAAAmvB,EAAAg4M,YAAAh4M,EAAAg4M,YAAA1X,EAAA6sB,iBACA,OAAAt8O,GAAA,EAAAA,EAAA,KAAAyvN,EAAAkJ,QAAA,WAAAxpM,EAAAkuM,iBAAA,EAAA,IAEApK,EAAAyJ,qBAAA,WACA,GAAAjN,GAAAtzN,KACAgzB,EAAAsgM,EAAAtgM,OACApM,EAAAuhN,EAAAn1M,EAAAm4M,aAAAn4M,EAAAm4M,YAAA,CAIA,OAHA7X,GAAAh2L,OAAAg2L,EAAAh2L,MAAA0b,SACApyB,GAAA0sM,EAAA8sB,mBAEAx5N,GAEAkwM,EAAA2J,wBAAA,WACA,GAAAztM,GAAAhzB,KAAAgzB,MACA,OAAAm1M,GAAAn1M,EAAAo4M,gBAAAp4M,EAAAo4M,eAAA,GAEAtU,EAAA4J,sBAAA,SAAA2f,GACA,GAAA/sB,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,MACA,OAAAm1M,GAAAn1M,EAAAi4M,cACAj4M,EAAAi4M,aACAj4M,EAAA4mM,aACA5mM,EAAA8nM,YAAA1wN,KAAAC,IAAAi2O,EAAAhtB,EAAAitB,qBAAA,IAAAF,IAAA,IAAA,GACArtN,EAAA87M,aAAA97M,EAAA8mM,aACAxG,EAAA30I,KAAA6hK,wBAAAC,QAAA,GAAA,EAEAH,EAAAhtB,EAAAitB,qBAAA,IAAAF,KAGAvpB,EAAA0J,uBAAA,WACA,GAAAlN,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OACA0tN,EAAA,GAAAC,EAAArtB,EAAA4G,cAAA5G,EAAAoM,iBAAA,GAAA,CACA,OAAAyI,GAAAn1M,EAAAk4M,eACAl4M,EAAAk4M,cAAA,EACAl4M,EAAA4mM,aACA8mB,EAAAC,GACA3tN,EAAA28M,cAAA38M,EAAAgnM,cACA,EAAA2mB,GAAArtB,EAAA30I,KAAAiiK,yBAAAH,QAAA,GAAA,GAEAH,EAAAhtB,EAAAitB,qBAAA,OAAAI,GAIA7pB,EAAA+pB,mBAAA,SAAAt+N,GAEA,IADA,GAAAzR,GAAAgI,EAAA9Y,KAAA+7N,YAAA/iL,OACAlgC,GAAA,SAAAA,EAAA0f,SAAA,CACA,IACA1nB,EAAAgI,EAAA2N,wBAAAlE,GACA,MAAApgB,GACA,UAAAogB,IAGAzR,EAAAgI,EAAAoW,aAGA,GAAApe,EACA,KAEAgI,GAAAA,EAAAtY,WAEA,MAAAsQ,IAEAgmN,EAAAopB,eAAA,WACA,MAAAlgP,MAAA6gP,mBAAA,UAEA/pB,EAAAqpB,gBAAA,WACA,GAAAt8O,GAAA7D,KAAA+7N,YAAA13N,MAAA,SACA,OAAAR,GAAA2M,QAAA,MAAA,GAAA3M,EAAAR,QAAA,KAAA,IAAA,GAIAyzN,EAAAgqB,WAAA,SAAAT,GACA,GAAA/sB,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OACA+tN,EAAA/tN,EAAA4mM,eAAA5mM,EAAA4mM,eAAA5mM,EAAA8mM,aACAknB,EAAAhuN,EAAA4mM,aAAA5kN,EAAAo/M,MAAAp/M,EAAAs/M,MACA2sB,EAAA3tB,EAAAoI,KAAAxhN,OAAA,IAAA8mO,GAAAhoM,OACAkoM,EAAAD,GAAAF,EAAAE,EAAAx6N,yBAAAoW,MAAA,GACAskN,EAAA7tB,EAAAyI,YAAA/iL,OAAAvyB,wBACAm5M,EAAAtM,EAAAuM,aACAuhB,EAAAF,EAAArkN,MAAAskN,EAAAz6N,MAAAk5M,EAAA,EAAAtM,EAAAoN,sBAAA2f,GACA,OAAAe,GAAA,EAAAA,EAAA,GAIAtqB,EAAAypB,qBAAA,SAAAhuO,EAAA8tO,GACA,GAAA/sB,GAAAtzN,KAAAqlB,EAAAiuM,EAAA30I,KAAA0iK,qBAAA9uO,EACA,OAAA+gN,GAAA30I,KAAA2iK,gBAAA/uO,EAAA8tO,IAAAh7N,EAAAk8N,QAAA,GAAA,KAEAzqB,EAAAiJ,wBAAA,SAAAwW,GACA,GAAAjjB,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OAAAnvB,EAAA,EACA,OAAA,MAAA0yO,GAAAvjN,EAAA8nM,YACA,MAAAyb,GAAAvjN,EAAA47M,cAAA57M,EAAA47M,cACA,MAAA2H,GAAAvjN,EAAA87M,YAGA,OAAAyH,GAAAvjN,EAAA28M,cAEA,MAAA4G,IAAAvjN,EAAA4mM,cAAA5mM,EAAAq7M,qBACAxqO,EAAA,GAAAyvN,EAAA30I,KAAA2iK,gBAAA/K,GAAAnsO,KAAAmd,IAAAnd,KAAAod,IAAA,GAAAwL,EAAAq7M,oBAAA,MAGA,MAAAkI,GAAAvjN,EAAA4mM,cAAA5mM,EAAAs8M,qBACAzrO,EAAA,GAAAyvN,EAAA30I,KAAA2iK,gBAAA/K,GAAAnsO,KAAAmd,IAAAnd,KAAAod,IAAA,GAAAwL,EAAAs8M,oBAAA,MAEAzrO,GAAAyvN,EAAA30I,KAAA0iK,qBAAA9K,GAAAgL,QAAA,EAAA,KAAA,OAAAhL,GAAA,GAAA,IATAjjB,EAAAyH,qBAFA/nM,EAAAypM,aAAAnJ,EAAA4G,eAAA5G,EAAA8G,cAAA,EAAA,GAHA,GAiBAtD,EAAA6nB,kBAAA,WACA,MAAAv0O,MAAAC,IAAA,EAAArK,KAAAikO,MAAAtN,iBAGAG,EAAAmM,gBAAA,SAAAue,GACA,GACAx9O,GAAAE,EADAovN,EAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OACAoxG,KAAA7iI,EAAA,CAcA,OAbA+xN,GAAAmQ,oBAAAnQ,EAAAjjN,KAAAqvB,QAAAh+B,OAAA8/O,EAAAluB,IAAA56E,QAAA,SAAAx4I,GACA,IAAA8D,EAAA,EAAAA,EAAAgvB,EAAAg5M,YAAArrO,OAAAqD,IACA,KAAAgvB,EAAAg5M,YAAAhoO,GAAAwM,QAAAtQ,EAAAqS,IAAA,GACA,IAAArO,EAAA,EAAAA,EAAA8uB,EAAAg5M,YAAAhoO,GAAArD,OAAAuD,IACA,GAAA8uB,EAAAg5M,YAAAhoO,GAAAE,IAAAkgI,GAAA,CACAA,EAAAlkI,EAAAqS,IAAA6xH,EAAApxG,EAAAg5M,YAAAhoO,GAAAE,GACA,OAIA2yC,EAAAutF,EAAAlkI,EAAAqS,OAAA6xH,EAAAlkI,EAAAqS,IAAAhR,OAEA6iI,EAAAq9G,QAAAlgP,EAAA,EACA6iI,GAEA0yF,EAAA4qB,UAAA,SAAAzwN,EAAA0wN,EAAAv9G,EAAAw9G,GACA,GAAAtuB,GAAAtzN,KAAA+3K,EAAA6pE,EAAAtuB,EAAAwJ,KAAAxJ,EAAAjhN,CACA,OAAA,UAAAnS,GACA,GAAA0a,GAAA1a,EAAAqS,KAAA6xH,GAAAA,EAAAlkI,EAAAqS,IAAA,CACA,OAAArS,GAAAmS,GAAA,IAAAnS,EAAAmS,EAAA0lK,EAAA73K,EAAAmS,GAAA4e,GAAA0wN,EAAA,EAAA/mO,GAAA,IAGAk8M,EAAA+qB,UAAA,SAAAD,GACA,GAAAtuB,GAAAtzN,IACA,OAAA,UAAAE,GACA,GAAA63K,GAAA6pE,EAAAtuB,EAAAuhB,aAAA30O,EAAAqS,IAAA+gN,EAAAqhB,UAAAz0O,EAAAqS,GACA,OAAAwlK,GAAA73K,EAAAoT,SAGAwjN,EAAAgrB,eAAA,SAAAN,EAAAp9G,EAAAw9G,GACA,GAAAtuB,GAAAtzN,KACA0/B,EAAA4zL,EAAA2nB,aAAA3nB,EAAAmQ,oBAAAnQ,EAAAjjN,KAAAqvB,QAAAh+B,OAAA8/O,EAAAluB,KACAonB,EAAAh7M,EAAA92B,IAAA,SAAAgI,GAAA,MAAAA,GAAA2B,IACA,OAAA,UAAArS,EAAAqB,GACA,GAAAw2K,GAAA6pE,EAAAtuB,EAAAuhB,aAAA30O,EAAAqS,IAAA+gN,EAAAqhB,UAAAz0O,EAAAqS,IACA0vK,EAAAlK,EAAA,GAAA9mJ,EAAAgxJ,CAoBA,OAnBAviJ,GAAAg5G,QAAA,SAAA9nI,GACA,GAAA6sC,GAAA61K,EAAAisB,WAAAr/O,GAAAozN,EAAAgpB,oBAAA1rO,EAAA6sC,QAAA7sC,EAAA6sC,MACA7sC,GAAA2B,KAAArS,EAAAqS,IAAA6xH,EAAAxzH,EAAA2B,MAAA6xH,EAAAlkI,EAAAqS,KACAmoO,EAAAlqO,QAAAI,EAAA2B,IAAAmoO,EAAAlqO,QAAAtQ,EAAAqS,MAEA,mBAAAkrC,GAAAl8C,KAAAk8C,EAAAl8C,GAAA8Q,KAAAnS,EAAAmS,IAEA9Q,GAAA,EACAk8C,EAAAi7F,QAAA,SAAA5nI,EAAA9M,GACA8M,EAAAuB,IAAAnS,EAAAmS,IACA9Q,EAAAyC,MAIAzC,IAAAk8C,IAAAA,EAAAl8C,GAAA+R,MAAApT,EAAAoT,OAAA,IACA2d,GAAA8mJ,EAAAt6H,EAAAl8C,GAAA+R,OAAA2uK,MAIAhxJ,IAGA6lM,EAAA4oB,cAAA,SAAAz9M,EAAA/hC,GACA,GACA6hP,GADAzuB,EAAAtzN,KACAs0H,EAAAg/F,EAAA7kD,GAAAv0J,OAAA+nB,EAUA,OATAqxL,GAAAsO,eAAA1hO,EAAAqS,IAGA,WAAA0vB,EAAAjhC,SACA+gP,EAAAzuB,EAAAisB,WAAAr/O,GAAAozN,EAAA0uB,aAAA//M,EAAAqxL,EAAAqhB,UAAAz0O,EAAAqS,IAAArS,EAAAoT,QAAAggN,EAAA2uB,eAAAhgN,EAAA,IAAAqxL,EAAA4uB,aAAAhiP,IAEA,SAAA+hC,EAAAjhC,WACA+gP,GAAAztH,EAAAu3E,QAAA72L,EAAA6xF,MAAAysH,EAAA6oB,YAAAl6M,IANA8/M,GAAA,EAQAA,GAIAjrB,EAAAqrB,eAAA,SAAAjiP,GACA,GAAAozN,GAAAtzN,KACAoiP,EAAA9uB,EAAA+uB,oBAAA/uB,EAAAtgM,OAAAggN,2BAAA1f,EAAAtgM,OAAAggN,0BAAA,UACA,OAAA1f,GAAAgvB,aAAApiP,GAAAkiP,EAAA9uB,EAAAisB,WAAAr/O,GAAAozN,EAAAtgM,OAAAk+M,eAAA,UAGApa,EAAAuE,SAAA,WACA,GAAA/H,GAAAtzN,IACAszN,GAAAoI,KAAAxhN,OAAA,IAAAlF,EAAAkiN,OAAApzM,OAAA,KACA/M,KAAA,QAAA/B,EAAAutO,aAEAzrB,EAAA0K,qBAAA,SAAA9hM,GACA,GACA8iN,GAAAC,EADAnvB,EAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OAEA0vN,EAAApvB,EAAAovB,eAAA7wN,KAAAyhM,GACAqvB,EAAArvB,EAAAqvB,WAAA9wN,KAAAyhM,GACAsvB,EAAAtvB,EAAAsvB,WAAA/wN,KAAAyhM,GACAuvB,EAAAvvB,EAAAuvB,aAAAhxN,KAAAyhM,GACAwvB,EAAAxvB,EAAAwvB,WAAAjxN,KAAAyhM,EACAkvB,GAAAlvB,EAAAoI,KAAAxhN,OAAA,IAAAlF,EAAAutO,YAAAj0J,UAAA,IAAAt5E,EAAA+tO,WACA1yO,KAAAqvB,GACA3oB,KAAA,QAAA,SAAA7W,GAAA,MAAAwiP,GAAAxiP,GAAA4iP,EAAA5iP,KACAuiP,EAAAD,EAAA7kN,QAAA7Z,OAAA,KACA/M,KAAA,QAAA2rO,GACAr+O,MAAA,UAAA,GACAA,MAAA,iBAAA,QAEAo+O,EAAA3+N,OAAA,KACA/M,KAAA,QAAA4rO,GAEAF,EAAA3+N,OAAA,KACA/M,KAAA,QAAA6rO,GAEAH,EAAA3+N,OAAA,KACA/M,KAAA,QAAA,SAAA7W,GAAA,MAAAozN,GAAA0vB,cAAAhuO,EAAA+wN,gBAAA7lO,EAAAqS,MACAkwO,EAAA3+N,OAAA,KACA/M,KAAA,QAAA8rO,GACAx+O,MAAA,SAAA,SAAAnE,GAAA,MAAA8yB,GAAA25M,4BAAAzsO,GAAA,UAAA,OAEAw/B,EAAAg5G,QAAA,SAAA9nI,GACA0iN,EAAAoI,KAAAptI,UAAA,IAAAt5E,EAAA+wN,gBAAAzS,EAAA4oB,wBAAAtrO,EAAA2B,KAAA+7E,UAAA,IAAAt5E,EAAAiuO,gBAAAphP,KAAA,SAAA3B,GACAA,EAAAoT,MAAA1C,EAAA6sC,OAAAv9C,EAAA0a,OAAAtH,WAMAwjN,EAAAppJ,WAAA,SAAAg1J,GACA,GAAApP,GAAAtzN,IACAszN,GAAA4vB,SAAA5vB,EAAAoI,KAAAptI,UAAA,IAAAt5E,EAAAqmD,OAAAizB,UAAA,IAAAt5E,EAAAg+C,MACA3iD,KAAAijN,EAAA6vB,SAAAtxN,KAAAyhM,IACAA,EAAA4vB,SAAAvlN,QAAA7Z,OAAA,QACA/M,KAAA,QAAAu8M,EAAA8vB,UAAAvxN,KAAAyhM,IACAjvN,MAAA,SAAAivN,EAAAllG,OACAklG,EAAA4vB,SACA7+O,MAAA,UAAAivN,EAAAyU,eAAAl2M,KAAAyhM,IACAjvN,MAAA,kBAAA,SAAAnE,GAAA,MAAAozN,GAAAisB,WAAAr/O,GAAA,aAAA,KACA6W,KAAA,YAAA,MACAu8M,EAAA4vB,SAAA9rG,OAAAv+G,aAAAtrB,SAAAm1N,GACAr+N,MAAA,UAAA,GACAuI,UAEAkqN,EAAA4P,WAAA,SAAA72G,EAAAkvG,GACA,QACAA,EAAA/+N,KAAAkjP,SAAArqN,WAAAzuB,KAAAqH,SAAAhB,YAAAzQ,KAAAkjP,UACAnsO,KAAA,IAAA84G,GACAxrH,MAAA,SAAArE,KAAAouH,OACA/pH,MAAA,UAAA,KAGAyyN,EAAAmO,iBAAA,SAAA5B,EAAAue,GACA,GAAAtuB,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OACAggC,EAAAsgK,EAAA7kD,GAAA1tD,IAAA/tD,OACAqwL,EAAA/vB,EAAAgwB,sBAAAjgB,EAAAue,GACA2B,EAAA3B,EAAAtuB,EAAAuhB,aAAAvhB,EAAAqhB,UACA6O,EAAA,SAAAtjP,GAAA,OAAA0hP,EAAAtuB,EAAAqV,MAAArV,EAAAgV,IAAAjnO,KAAAiyN,EAAApzN,IACAujP,EAAA,SAAAvjP,EAAAqB,GACA,MAAAyxB,GAAAg5M,YAAArrO,OAAA,EAAA0iP,EAAAnjP,EAAAqB,GAAA,GAAA,GAAAgiP,EAAAliP,KAAAiyN,EAAApzN,EAAAqS,IAAArS,EAAAoT,OAKA,OAFA0/C,GAAAhgC,EAAA4mM,aAAA5mK,EAAA3gD,EAAAoxO,GAAAvvO,EAAAsvO,GAAAxwL,EAAA3gD,EAAAmxO,GAAAtvO,EAAAuvO,GACAzwN,EAAAi+M,mBAAAj+K,EAAAA,EAAAkxI,QAAA,SAAAhkM,GAAA,MAAA,OAAAA,EAAAoT,SACA,SAAApT,GACA,GACAgxH,GADAzzE,EAAAzqB,EAAAi+M,iBAAA3d,EAAAioB,iBAAAr7O,EAAAu9C,QAAAv9C,EAAAu9C,OACAprC,EAAAuvO,EAAAtuB,EAAAjhN,EAAAihN,EAAAwJ,KAAA5oN,EAAAqvO,EAAAliP,KAAAiyN,EAAApzN,EAAAqS,IAAA4vK,EAAA,EAAAF,EAAA,CAeA,OAdAqxC,GAAAgQ,WAAApjO,GACA8yB,EAAAs5M,aAAApsO,EAAAqS,IACA2+G,EAAAoiG,EAAAowB,gBAAAjmM,EAAAprC,EAAA6B,EAAA8e,EAAAs5M,aAAApsO,EAAAqS,MAEA+gN,EAAAisB,WAAAr/O,KAAAu9C,EAAA61K,EAAAgpB,oBAAA7+L,IACAyzE,EAAAl+D,EAAAuwH,YAAA+vC,EAAA6uB,eAAAjiP,IAAAu9C,KAGAA,EAAA,KACA0kI,EAAA9vK,EAAAorC,EAAA,GAAAprC,GACA4vK,EAAA/tK,EAAAupC,EAAA,GAAAnqC,QAEA49G,EAAAl+F,EAAA4mM,aAAA,KAAA33C,EAAA,IAAAE,EAAA,KAAAA,EAAA,IAAAF,GAEA/wD,EAAAA,EAAA,UAGA4lG,EAAAwsB,sBAAA,SAAAjgB,EAAAue,GACA,GAAAtuB,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OACA2wN,EAAAtgB,EAAAoe,QAAA,EACApvO,EAAAihN,EAAAouB,UAAA,EAAAiC,EAAAtgB,IAAAue,GACA1tO,EAAAo/M,EAAAuuB,YAAAD,GACAgC,EAAAtwB,EAAAwuB,eAAAxuB,EAAAgQ,WAAAD,IAAAue,GACAlZ,EAAAkZ,EAAAtuB,EAAAuhB,aAAAvhB,EAAAqhB,SACA,OAAA,UAAAz0O,EAAAqB,GACA,GAAA0gL,GAAAymD,EAAArnO,KAAAiyN,EAAApzN,EAAAqS,IAAA,GACA0e,EAAA2yN,EAAA1jP,EAAAqB,IAAA0gL,EACA4hE,EAAAxxO,EAAAnS,GAAA4jP,EAAA5vO,EAAAhU,EAMA,OAJA8yB,GAAA4mM,eACA,EAAA15N,EAAAoT,OAAAwwO,EAAA7hE,GAAA/hL,EAAAoT,MAAA,GAAA2uK,EAAA6hE,KAAAA,EAAA7hE,KAIA4hE,EAAAC,GAAA7hE,EAAAhxJ,KACA4yN,EAAAC,GAAA7hE,EAAAhxJ,KACA4yN,EAAAC,GAAA7hE,EAAAhxJ,KACA4yN,EAAAC,GAAA7hE,EAAAhxJ,OAMA6lM,EAAA4sB,gBAAA,SAAAxjP,EAAAmS,EAAA6B,EAAA6vO,GASA,QAAAC,GAAA3xO,EAAAmsN,GACA,GAAAj9N,EACA,KAAAA,EAAA,EAAAA,EAAAi9N,EAAA79N,OAAAY,IACA,GAAAi9N,EAAAj9N,GAAAgD,MAAA8N,GAAAA,GAAAmsN,EAAAj9N,GAAAiD,IAAA,OAAA,CAEA,QAAA,EAyBA,QAAAy/O,GAAAlgE,GACA,MAAA,IAAAA,EAAA,GAAA,GAAA,IAAAA,EAAA,GAAA,GAAA,IAAAA,EAAA,GAAA,GAAA,IAAAA,EAAA,GAAA,GAvCA,GACAxiL,GAAAyC,EACAkgP,EACAC,EAAAC,EAAA7lK,EAAAE,EAAA+mE,EAAA/mF,EAAA4lL,EAEAb,EAAAC,EALAnwB,EAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OACAtY,GAAA,EACAnS,EAAA,IAEA+7O,EAAAhxB,EAAAuQ,gBAAA,GAAA,EAEArF,IAWA,IAAA6V,EAAA0P,GACA,IAAAxiP,EAAA,EAAAA,EAAAwiP,EAAApjP,OAAAY,IACAi9N,EAAAj9N,MACAs1C,EAAAktM,EAAAxiP,GAAAgD,OACAi6N,EAAAj9N,GAAAgD,MAAArE,EAAA,GAAAmS,EAEAmsN,EAAAj9N,GAAAgD,MAAA+uN,EAAAgU,eAAAhU,EAAAiV,UAAAwb,EAAAxiP,GAAAgD,OAAAw/O,EAAAxiP,GAAAgD,MAEAsyC,EAAAktM,EAAAxiP,GAAAiD,KACAg6N,EAAAj9N,GAAAiD,IAAAtE,EAAAA,EAAAS,OAAA,GAAA0R,EAEAmsN,EAAAj9N,GAAAiD,IAAA8uN,EAAAgU,eAAAhU,EAAAiV,UAAAwb,EAAAxiP,GAAAiD,KAAAu/O,EAAAxiP,GAAAiD,GAuCA,KAjCAg/O,EAAAxwN,EAAA4mM,aAAA,SAAA15N,GAAA,MAAAgU,GAAAhU,EAAAoT,QAAA,SAAApT,GAAA,MAAAmS,GAAAnS,EAAAmS,IACAoxO,EAAAzwN,EAAA4mM,aAAA,SAAA15N,GAAA,MAAAmS,GAAAnS,EAAAmS,IAAA,SAAAnS,GAAA,MAAAgU,GAAAhU,EAAAoT,QAOA4wO,EADA5wB,EAAAgU,eACA,SAAA3tD,EAAAnrI,EAAAxqC,EAAAy6D,GACA,GAGAslH,GAHA5B,EAAAxI,EAAAtnK,EAAAm9B,UAAA+0M,EAAA/1M,EAAAn8B,EAAAsnK,EAAAtnK,EACAmyO,EAAA,GAAAvyO,MAAAkwK,EAAAoiE,EAAAvgP,GACAygP,EAAA,GAAAxyO,MAAAkwK,EAAAoiE,GAAAvgP,EAAAy6D,GAOA,OAJAslH,GADA/wJ,EAAA4mM,eACA1lN,EAAAkwO,EAAApgP,IAAAqO,EAAAmyO,KAAAtwO,EAAAkwO,EAAApgP,EAAAy6D,IAAApsD,EAAAoyO,OAEApyO,EAAAmyO,GAAAtwO,EAAAkwO,EAAApgP,MAAAqO,EAAAoyO,GAAAvwO,EAAAkwO,EAAApgP,EAAAy6D,MAEAwlL,EAAAlgE,IAGA,SAAApK,EAAAnrI,EAAAxqC,EAAAy6D,GACA,GAAAslH,EAMA,OAJAA,GADA/wJ,EAAA4mM,eACA1lN,EAAAkwO,EAAApgP,IAAA,GAAAqO,EAAA8xO,EAAAngP,MAAAkQ,EAAAkwO,EAAApgP,EAAAy6D,IAAA,GAAApsD,EAAA8xO,EAAAngP,EAAAy6D,QAEApsD,EAAA8xO,EAAAngP,IAAA,GAAAkQ,EAAAkwO,EAAApgP,MAAAqO,EAAA8xO,EAAAngP,EAAAy6D,IAAA,GAAAvqD,EAAAkwO,EAAApgP,EAAAy6D,MAEAwlL,EAAAlgE,IAKAxiL,EAAA,EAAAA,EAAArB,EAAAS,OAAAY,IAAA,CAGA,GAAAs1C,EAAA2nL,KAAAwlB,EAAA9jP,EAAAqB,GAAA8Q,EAAAmsN,GACAj2N,GAAA,IAAAi7O,EAAAtjP,EAAAqB,IAAA,IAAAkiP,EAAAvjP,EAAAqB,QAaA,KATA4iP,EAAA7wB,EAAAghB,SAAAp0O,EAAAqB,EAAA,GAAA8Q,EAAAiyO,EAAApkP,EAAAqB,GAAA8Q,EAAAiyO,EAAAhxB,EAAAgU,gBACA8c,EAAA9wB,EAAAghB,SAAAp0O,EAAAqB,EAAA,GAAA+R,MAAApT,EAAAqB,GAAA+R,OAEAirE,EAAAlsE,EAAAnS,EAAAqB,GAAA8Q,GAAAA,EAAAnS,EAAAqB,EAAA,GAAA8Q,GACAosE,EAAAvqE,EAAAhU,EAAAqB,GAAA+R,OAAAY,EAAAhU,EAAAqB,EAAA,GAAA+R,OACAkyI,EAAAp7I,KAAA64J,KAAA74J,KAAAs1H,IAAAnhD,EAAA,GAAAn0E,KAAAs1H,IAAAjhD,EAAA,IACAhgB,EAAA,EAAA+mF,EACA6+F,EAAA,EAAA5lL,EAEAz6D,EAAAy6D,EAAAz6D,GAAA,EAAAA,GAAAqgP,EACA97O,GAAA27O,EAAAhkP,EAAAqB,EAAA,GAAArB,EAAAqB,GAAAyC,EAAAy6D,EAGA/jD,GAAAxa,EAAAqB,GAAA8Q,EAGA,MAAA9J,IAIAuuN,EAAA0O,WAAA,SAAA9C,GACA,GAAApP,GAAAtzN,KAAAyuK,EAAA6kD,EAAA7kD,EACA6kD,GAAAoxB,SAAApxB,EAAAoI,KAAAptI,UAAA,IAAAt5E,EAAA2vO,OAAAr2J,UAAA,IAAAt5E,EAAA+vI,MACA10I,KAAAijN,EAAA6vB,SAAAtxN,KAAAyhM,IACAA,EAAAoxB,SAAA/mN,QAAA7Z,OAAA,QACA/M,KAAA,QAAAu8M,EAAAsxB,UAAA/yN,KAAAyhM,IACAjvN,MAAA,OAAAivN,EAAAllG,OACA/pH,MAAA,UAAA,WAAA,MAAAivN,GAAAuxB,gBAAAp2E,EAAAv0J,OAAAla,MAAAqE,MAAA,WAAA,IACAivN,EAAAoxB,SACArgP,MAAA,UAAAivN,EAAAuxB,gBACAvxB,EAAAoxB,SAAAttG,OAAAv+G,aAAAtrB,SAAAm1N,GACAr+N,MAAA,UAAA,GACAuI,UAEAkqN,EAAA6P,WAAA,SAAApE,EAAAxD,GACA,QACAA,EAAA/+N,KAAA0kP,SAAA7rN,WAAAzuB,KAAAqH,SAAAhB,YAAAzQ,KAAA0kP,UACA3tO,KAAA,IAAAwrN,GACAl+N,MAAA,OAAArE,KAAAouH,OACA/pH,MAAA,UAAArE,KAAA6kP,kBAGA/tB,EAAAiO,iBAAA,SAAA/B,EAAA4e,GACA,GAAAtuB,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OAAA+xH,EAAAuuE,EAAA7kD,GAAA1tD,IAAAgkC,OACAs+F,EAAA/vB,EAAAwxB,sBAAA9hB,EAAA4e,GACA2B,EAAA3B,EAAAtuB,EAAAuhB,aAAAvhB,EAAAqhB,UACA6O,EAAA,SAAAtjP,GAAA,OAAA0hP,EAAAtuB,EAAAqV,MAAArV,EAAAgV,IAAAjnO,KAAAiyN,EAAApzN,IACA6kP,EAAA,SAAA7kP,EAAAqB,GACA,MAAAyxB,GAAAg5M,YAAArrO,OAAA,EAAA0iP,EAAAnjP,EAAAqB,GAAA,GAAA,GAAAgiP,EAAAliP,KAAAiyN,EAAApzN,EAAAqS,IAAA+gN,EAAA0xB,iBAAA9kP,EAAAqS;EAEA0yO,EAAA,SAAA/kP,EAAAqB,GACA,MAAAyxB,GAAAg5M,YAAArrO,OAAA,EAAA0iP,EAAAnjP,EAAAqB,GAAA,GAAA,GAAAgiP,EAAAliP,KAAAiyN,EAAApzN,EAAAqS,IAAArS,EAAAoT,OAQA,OALAyxI,GAAA/xH,EAAA4mM,aAAA70E,EAAAo9B,GAAA4iE,GAAAxuH,GAAA0uH,GAAA/wO,EAAAsvO,GAAAz+F,EAAA1yI,EAAAmxO,GAAAvhE,GAAAjvJ,EAAAw+M,WAAA,EAAAuT,GAAAvuH,GAAAyuH,GACAjyN,EAAAi+M,mBACAlsF,EAAAA,EAAAm/C,QAAA,SAAAhkM,GAAA,MAAA,QAAAA,EAAAoT,SAGA,SAAApT,GACA,GACAgxH,GADAzzE,EAAAzqB,EAAAi+M,iBAAA3d,EAAAioB,iBAAAr7O,EAAAu9C,QAAAv9C,EAAAu9C,OACA0kI,EAAA,EAAAF,EAAA,CAWA,OAVAqxC,GAAA4P,WAAAhjO,IACAozN,EAAAisB,WAAAr/O,KAAAu9C,EAAA61K,EAAAgpB,oBAAA7+L,IACAyzE,EAAA6zB,EAAAw+B,YAAA+vC,EAAA6uB,eAAAjiP,IAAAu9C,KAEAA,EAAA,KACA0kI,EAAAmxC,EAAAjhN,EAAAorC,EAAA,GAAAprC,GACA4vK,EAAAqxC,EAAAqhB,UAAAz0O,EAAAqS,IAAAkrC,EAAA,GAAAnqC,QAEA49G,EAAAl+F,EAAA4mM,aAAA,KAAA33C,EAAA,IAAAE,EAAA,KAAAA,EAAA,IAAAF,GAEA/wD,EAAAA,EAAA,UAGA4lG,EAAAkuB,iBAAA,WACA,MAAA,IAEAluB,EAAAguB,sBAAA,SAAA9hB,EAAA4e,GACA,GAAAtuB,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OACAkyN,EAAAliB,EAAAye,QAAA,EACApvO,EAAAihN,EAAAouB,UAAA,EAAAwD,EAAAliB,IAAA4e,GACA1tO,EAAAo/M,EAAAuuB,YAAAD,GACAuD,EAAA7xB,EAAAwuB,eAAAxuB,EAAA4P,WAAAF,IAAA4e,GACAlZ,EAAAkZ,EAAAtuB,EAAAuhB,aAAAvhB,EAAAqhB,SACA,OAAA,UAAAz0O,EAAAqB,GACA,GAAA0gL,GAAAymD,EAAArnO,KAAAiyN,EAAApzN,EAAAqS,IAAA,GACA0e,EAAAk0N,EAAAjlP,EAAAqB,IAAA0gL,EACA4hE,EAAAxxO,EAAAnS,GAAA4jP,EAAA5vO,EAAAhU,EAMA,OAJA8yB,GAAA4mM,eACA,EAAA15N,EAAAoT,OAAAwwO,EAAA7hE,GAAA/hL,EAAAoT,MAAA,GAAA2uK,EAAA6hE,KAAAA,EAAA7hE,KAIA4hE,EAAA5yN,IACA4yN,EAAAC,GAAA7hE,EAAAhxJ,KACA4yN,EAAAC,GAAA7hE,EAAAhxJ,KACA4yN,EAAA5yN,MAMA6lM,EAAA2O,aAAA,WACA,GAAAnS,GAAAtzN,IACAszN,GAAA8xB,WAAA9xB,EAAAoI,KAAAptI,UAAA,IAAAt5E,EAAAqwO,SAAA/2J,UAAA,IAAAt5E,EAAAugH,QACAllH,KAAAijN,EAAAgyB,kBAAAzzN,KAAAyhM,IACAA,EAAA8xB,WAAAznN,QAAA7Z,OAAA,UACA/M,KAAA,QAAAu8M,EAAAiyB,YAAA1zN,KAAAyhM,IACAv8M,KAAA,IAAAu8M,EAAAkyB,OAAA3zN,KAAAyhM,IACAjvN,MAAA,OAAAivN,EAAAllG,OACAklG,EAAA8xB,WACA/gP,MAAA,UAAAivN,EAAA0U,wBAAAn2M,KAAAyhM,IACAA,EAAA8xB,WAAAhuG,OAAAxqI,UAEAkqN,EAAA8P,aAAA,SAAAjkD,EAAAC,EAAAm8C,GACA,GAAAgH,GAAA/lO,KAAA07N,KAAAptI,UAAA,IAAAt5E,EAAAiuO,eACA,SACAlkB,EAAA/+N,KAAAolP,WAAAvsN,WAAAzuB,KAAAqH,SAAAhB,YAAAzQ,KAAAolP,YACA/gP,MAAA,UAAArE,KAAAioO,iBAAAp2M,KAAA7xB,OACAqE,MAAA,OAAArE,KAAAouH,OACAr3G,KAAA,KAAA4rK,GACA5rK,KAAA,KAAA6rK,IACAm8C,EAAAgH,EAAAltM,WAAAzuB,KAAAqH,SAAAhB,YAAAs1N,GACAhvN,KAAA,KAAA4rK,GACA5rK,KAAA,KAAA6rK,KAGAk0C,EAAAuP,QAAA,SAAAnmO,GACA,MAAAA,GAAAmS,GAAA,IAAAnS,EAAAmS,EAAArS,KAAAqS,EAAAnS,EAAAmS,GAAA,MAEAykN,EAAAqP,cAAA,WACA,GAAA9C,GAAAggB,EAAA/vB,EAAAtzN,IACAszN,GAAAtgM,OAAAg5M,YAAArrO,OAAA,GACA0iO,EAAA/P,EAAA2P,gBAAA3P,EAAAgQ,YACA+f,EAAA/vB,EAAAgwB,sBAAAjgB,GACA/P,EAAA8S,QAAA,SAAAlmO,EAAAqB,GACA,MAAA8hP,GAAAnjP,EAAAqB,GAAA,GAAA,KAGA+xN,EAAA8S,QAAA,SAAAlmO,GACA,MAAAozN,GAAAqhB,UAAAz0O,EAAAqS,IAAArS,EAAAoT,SAIAwjN,EAAA2uB,WAAA,SAAAlkP,EAAAgR,GACA,GAAA+gN,GAAAtzN,IACA,QAAAuS,EAAA+gN,EAAAoI,KAAAptI,UAAA,IAAAt5E,EAAAqwO,QAAA/xB,EAAA4oB,wBAAA3pO,IAAA+gN,EAAAoI,MAAAptI,UAAA,IAAAt5E,EAAAugH,QAAA4yG,EAAA5mO,GAAA,IAAAA,EAAA,MAEAu1N,EAAAmoB,cAAA,SAAA19O,EAAAgR,EAAAsH,GACA,GAAAy5M,GAAAtzN,KACAY,EAAA0yN,EAAAoyB,eAAA7zN,KAAAyhM,EACAz5M,IAAAy5M,EAAA8rB,kBACA9rB,EAAAmyB,WAAAlkP,EAAAgR,GACAs5L,QAAA72L,EAAAyqO,UAAA,GACA1oO,KAAA,IAAAnW,IAEAk2N,EAAAsoB,gBAAA,SAAA79O,GACA,GAAA+xN,GAAAtzN,KACAY,EAAA0yN,EAAAkyB,OAAA3zN,KAAAyhM,EACAA,GAAAmyB,WAAAlkP,GACAG,OAAA,WAAA,MAAA4xN,GAAA7kD,GAAAv0J,OAAAla,MAAA6rM,QAAA72L,EAAAyqO,YACA5zC,QAAA72L,EAAAyqO,UAAA,GACA1oO,KAAA,IAAAnW,IAEAk2N,EAAA0uB,OAAA,SAAAtlP,GACA,GAAAozN,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,MACA,OAAAsgM,GAAAisB,WAAAr/O,GAAA,EAAAiB,EAAA6xB,EAAA49M,SAAA59M,EAAA49M,QAAA1wO,GAAA8yB,EAAA49M,SAEA9Z,EAAA4uB,eAAA,SAAAxlP,GACA,GAAAozN,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,MACA,OAAAA,GAAA89M,2BAAA99M,EAAA+9M,qBAAA/9M,EAAA+9M,qBAAA,KAAAzd,EAAAkyB,OAAAtlP,GAAAozN,EAAAkyB,OAAAtlP,IAEA42N,EAAAorB,aAAA,SAAAhiP,GACA,GAAAozN,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,MACA,OAAA7xB,GAAA6xB,EAAAg+M,gBAAAh+M,EAAAg+M,eAAA9wO,GAAA8yB,EAAA,eAAAA,EAAAg+M,eAAA,EAAA1d,EAAAkyB,OAAAtlP,IAEA42N,EAAAmrB,eAAA,SAAAhgN,EAAArhC,GACA,GAAA6tK,GAAAzuK,KAAAyuK,GACA69B,EAAA79B,EAAA69B,MAAArqK,GAAA0jN,EAAAl3E,EAAAv0J,OAAA+nB,GACA0gJ,GAAAgjE,EAAA5uO,KAAA,MAAA6rK,GAAA+iE,EAAA5uO,KAAA,KACA,OAAA3M,MAAA64J,KAAA74J,KAAAs1H,IAAAijD,EAAA2pB,EAAA,GAAA,GAAAliM,KAAAs1H,IAAAkjD,EAAA0pB,EAAA,GAAA,IAAA1rM,GAEAk2N,EAAAkrB,aAAA,SAAA//M,EAAA/tB,GACA,MAAA9J,MAAA0yB,IAAA5oB,EAAAlU,KAAAyuK,GAAA69B,MAAArqK,GAAA,IAAA,IAGA60L,EAAAsE,QAAA,WACA,GAAA9H,GAAAtzN,IACAszN,GAAAoI,KAAAxhN,OAAA,IAAAlF,EAAAkiN,OAAApzM,OAAA,KACA/M,KAAA,QAAA/B,EAAA4wO,YAEA9uB,EAAAyK,oBAAA,SAAA7hM,GACA,GACAmmN,GAAAC,EADAxyB,EAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OAEA+yN,EAAAzyB,EAAAyyB,cAAAl0N,KAAAyhM,GACA0yB,EAAA1yB,EAAA0yB,UAAAn0N,KAAAyhM,GACAwvB,EAAAxvB,EAAAwvB,WAAAjxN,KAAAyhM,EACAuyB,GAAAvyB,EAAAoI,KAAAxhN,OAAA,IAAAlF,EAAA4wO,WAAAt3J,UAAA,IAAAt5E,EAAAixO,UACA51O,KAAAqvB,GACA3oB,KAAA,QAAA,SAAA7W,GAAA,MAAA6lP,GAAA7lP,GAAA4iP,EAAA5iP,KACA4lP,EAAAD,EAAAloN,QAAA7Z,OAAA,KACA/M,KAAA,QAAAgvO,GACA1hP,MAAA,UAAA,GACAA,MAAA,iBAAA,QAEAyhP,EAAAhiO,OAAA,KACA/M,KAAA,QAAAivO,GACA3hP,MAAA,SAAA,SAAAnE,GAAA,MAAA8yB,GAAA25M,4BAAAzsO,GAAA,UAAA,QAGA42N,EAAAyO,UAAA,SAAA7C,GACA,GAAApP,GAAAtzN,KACAkmP,EAAA5yB,EAAA4yB,QAAAr0N,KAAAyhM,GACA6yB,EAAA7yB,EAAA6yB,SAAAt0N,KAAAyhM,GACAyU,EAAAzU,EAAAyU,eAAAl2M,KAAAyhM,GACAllG,EAAA,SAAAluH,GAAA,MAAAozN,GAAAllG,MAAAluH,EAAAqS,IACA+gN,GAAA8yB,QAAA9yB,EAAAoI,KAAAptI,UAAA,IAAAt5E,EAAAinO,MAAA3tJ,UAAA,IAAAt5E,EAAA6xF,KACAx2F,KAAA61O,GACA5yB,EAAA8yB,QAAAzoN,QAAA7Z,OAAA,QACA/M,KAAA,QAAAovO,GACA9hP,MAAA,SAAA+pH,GACA/pH,MAAA,OAAA+pH,GACAklG,EAAA8yB,QACA/hP,MAAA,UAAA0jO,GACAzU,EAAA8yB,QAAAhvG,OAAAv+G,aAAAtrB,SAAAm1N,GACAr+N,MAAA,UAAA,GACAuI,UAEAkqN,EAAA2P,UAAA,SAAAjE,EAAAzD,GACA,QACAA,EAAA/+N,KAAAomP,QAAAvtN,WAAAzuB,KAAAqH,SAAAhB,YAAAzQ,KAAAomP,SACArvO,KAAA,IAAAyrN,GACAn+N,MAAA,OAAArE,KAAAouH,OACA/pH,MAAA,UAAA,KAGAyyN,EAAAuvB,QAAA,SAAA1nK,EAAA2nK,GACA,GAAAhzB,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OACAtyB,EAAA,gBAAAsyB,GAAAm+M,UAAAn+M,EAAAm+M,UAAAmV,EAAA3nK,EAAAg4I,eAAA3jM,EAAAo+M,gBAAAkV,EAAA,CACA,OAAAtzN,GAAAq+M,eAAA3wO,EAAAsyB,EAAAq+M,cAAAr+M,EAAAq+M,cAAA3wO,GAEAo2N,EAAAyvB,QAAA,SAAAhlP,EAAAgR,GACA,GAAA+gN,GAAAtzN,IACA,QAAAuS,EAAA+gN,EAAAoI,KAAAptI,UAAA,IAAAt5E,EAAAinO,KAAA3oB,EAAA4oB,wBAAA3pO,IAAA+gN,EAAAoI,MAAAptI,UAAA,IAAAt5E,EAAA6xF,KAAAshI,EAAA5mO,GAAA,IAAAA,EAAA,MAEAu1N,EAAAooB,WAAA,SAAA39O,EAAAgR,EAAAsH,GACA,GAAAy5M,GAAAtzN,IACA6Z,IAAAy5M,EAAA+rB,eACA/rB,EAAAizB,QAAAhlP,EAAAgR,GAAAs5L,QAAA72L,EAAAyqO,UAAA,IAEA3oB,EAAAuoB,aAAA,SAAA99O,GACA,GAAA+xN,GAAAtzN,IACAszN,GAAAizB,QAAAhlP,GAAAsqM,QAAA72L,EAAAyqO,UAAA,IAEA3oB,EAAAkO,gBAAA,SAAA7B,EAAAye,GACA,GAAAtuB,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OACAqwN,EAAA/vB,EAAAkzB,qBAAArjB,EAAAye,EACA,OAAA,UAAA1hP,EAAAqB,GAEA,GAAAwiL,GAAAs/D,EAAAnjP,EAAAqB,GAGAklP,EAAAzzN,EAAA4mM,aAAA,EAAA,EACA8sB,EAAA1zN,EAAA4mM,aAAA,EAAA,EAEA1oG,EAAA,KAAA6yD,EAAA,GAAA0iE,GAAA,IAAA1iE,EAAA,GAAA2iE,GAAA,KACA3iE,EAAA,GAAA0iE,GAAA,IAAA1iE,EAAA,GAAA2iE,GAAA,KACA3iE,EAAA,GAAA0iE,GAAA,IAAA1iE,EAAA,GAAA2iE,GAAA,KACA3iE,EAAA,GAAA0iE,GAAA,IAAA1iE,EAAA,GAAA2iE,GAAA,IAGA,OAAAx1H,KAGA4lG,EAAA0vB,qBAAA,SAAArjB,EAAAye,GACA,GAAAtuB,GAAAtzN,KACA2+E,EAAAijK,EAAAtuB,EAAA4Q,SAAA5Q,EAAA2Q,MACAqiB,EAAAnjB,EAAAse,QAAA,EACAkF,EAAArzB,EAAA+yB,QAAA1nK,EAAA2nK,GACAM,EAAAtzB,EAAAouB,UAAAiF,EAAAL,EAAAnjB,IAAAye,GACAiF,EAAAvzB,EAAAuuB,YAAAD,GACAkF,EAAAxzB,EAAAwuB,eAAAxuB,EAAA8P,UAAAD,IAAAye,GACAlZ,EAAAkZ,EAAAtuB,EAAAuhB,aAAAvhB,EAAAqhB,SACA,OAAA,UAAAz0O,EAAAqB,GACA,GAAA0gL,GAAAymD,EAAArnO,KAAAiyN,EAAApzN,EAAAqS,IAAA,GACA0e,EAAA61N,EAAA5mP,EAAAqB,IAAA0gL,EACA4hE,EAAA+C,EAAA1mP,GAAA4jP,EAAA+C,EAAA3mP,EAMA,OAJAozN,GAAAtgM,OAAA4mM,eACA,EAAA15N,EAAAoT,OAAAwwO,EAAA7hE,GAAA/hL,EAAAoT,MAAA,GAAA2uK,EAAA6hE,KAAAA,EAAA7hE,KAIA4hE,EAAA5yN,IACA4yN,EAAAC,GAAA7hE,EAAAhxJ,KACA4yN,EAAA8C,EAAA7C,GAAA7hE,EAAAhxJ,KACA4yN,EAAA8C,EAAA11N,MAIA6lM,EAAAqlB,YAAA,SAAAl6M,GACA,GAAAqqK,GAAAtsM,KAAAyuK,GAAA69B,MAAArqK,GAAAoK,EAAApK,EAAAxb,wBACAsgO,EAAA9kN,EAAA+kN,YAAAl0N,QAAA,GAAAm0N,EAAAhlN,EAAA+kN,YAAAl0N,QAAA,GACAzgB,EAAAjI,KAAAkvD,IAAAytL,EAAA10O,EAAA40O,EAAA50O,GAAA6B,EAAA9J,KAAAkvD,IAAAytL,EAAA7yO,EAAA+yO,EAAA/yO,GACAxT,EAAA2rC,EAAA5iC,MAAA5F,EAAAwoC,EAAA3gC,OAAAulB,EAAA,EACAklK,EAAA9jL,EAAA4e,EAAAk1I,EAAA9zJ,EAAA3R,EAAAuwB,EAAAmlK,EAAAliL,EAAArQ,EAAAotB,EAAA8gM,EAAA79M,EAAA+c,CACA,OAAAklK,GAAAmW,EAAA,IAAAA,EAAA,GAAAnmC,GAAA4rD,EAAAzlB,EAAA,IAAAA,EAAA,GAAAlW,GAGA0gC,EAAA0E,SAAA,WACA,GAAAlI,GAAAtzN,IACAszN,GAAAoI,KAAAxhN,OAAA,IAAAlF,EAAAkiN,OAAApzM,OAAA,KACA/M,KAAA,QAAA/B,EAAAkyO,YACA5zB,EAAA6zB,SAAA7zB,EAAA7kD,GAAAngF,eAEAwoI,EAAAwK,qBAAA,SAAA5hM,GACA,GAAA0nN,GAAAC,EAAA/zB,EAAAtzN,KACAsnP,EAAAh0B,EAAAg0B,eAAAz1N,KAAAyhM,GACAi0B,EAAAj0B,EAAAi0B,WAAA11N,KAAAyhM,GACAwvB,EAAAxvB,EAAAwvB,WAAAjxN,KAAAyhM,EACA8zB,GAAA9zB,EAAAoI,KAAAxhN,OAAA,IAAAlF,EAAAkyO,YAAA54J,UAAA,IAAAt5E,EAAAwyO,WACAn3O,KAAAqvB,GACA3oB,KAAA,QAAA,SAAA7W,GAAA,MAAAonP,GAAApnP,GAAA4iP,EAAA5iP,KACAmnP,EAAAD,EAAAzpN,QAAA7Z,OAAA,KACA/M,KAAA,QAAAuwO,GACAjjP,MAAA,UAAA,GACAA,MAAA,iBAAA,QACAgjP,EAAAvjO,OAAA,KACA/M,KAAA,QAAAwwO,IAEAzwB,EAAA6O,WAAA,SAAAjD,GACA,GAAApP,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OACAy0N,EAAAn0B,EAAAm0B,cAAA51N,KAAAyhM,GACAo0B,EAAAp0B,EAAAo0B,UAAA71N,KAAAyhM,EACAA,GAAA6zB,SAAA7zB,EAAAoI,KAAAptI,UAAA,IAAAt5E,EAAA2yO,OAAAr5J,UAAA,IAAAt5E,EAAA3U,MACAgQ,KAAAo3O,GACAn0B,EAAA6zB,SAAAxpN,QAAA7Z,OAAA,QACA/M,KAAA,QAAA2wO,GACA3wO,KAAA,cAAA,SAAA7W,GAAA,MAAA8yB,GAAA4mM,aAAA15N,EAAAoT,MAAA,EAAA,MAAA,QAAA,WACAjP,MAAA,SAAA,QACAA,MAAA,OAAA,SAAAnE,GAAA,MAAAozN,GAAAllG,MAAAluH,KACAmE,MAAA,eAAA,GACAivN,EAAA6zB,SACA9mP,KAAA,SAAAH,EAAAqB,EAAAyC,GAAA,MAAAsvN,GAAAmoB,gBAAAv7O,EAAAqS,IAAArS,EAAAoT,MAAApT,EAAAqS,GAAAhR,EAAAyC,KACAsvN,EAAA6zB,SAAA/vG,OACAv+G,aAAAtrB,SAAAm1N,GACAr+N,MAAA,eAAA,GACAuI,UAEAkqN,EAAA+P,WAAA,SAAApE,EAAAzM,EAAA4xB,EAAA7oB,GACA,QACAA,EAAA/+N,KAAAmnP,SAAAtuN,aAAA74B,KAAAmnP,UACApwO,KAAA,IAAA0rN,GACA1rN,KAAA,IAAAi/M,GACA3xN,MAAA,OAAArE,KAAAouH,OACA/pH,MAAA,eAAAujP,EAAA,EAAA5nP,KAAAqoO,eAAAx2M,KAAA7xB,SAGA82N,EAAA+wB,YAAA,SAAAxnP,EAAAssC,EAAAzM,GACA,GAGA60C,GAHA+yK,EAAA9nP,KAAAyuK,GAAAv0J,OAAA,QAAA4J,OAAA,OAAA+nL,QAAA,MAAA,GACA9qF,EAAA+mI,EAAAhkO,OAAA,OAAAzf,MAAA,aAAA,UAAAA,MAAA,WAAA,SAAAA,MAAA,MAAA,GAAAA,MAAA,OAAA,GACA0jP,EAAA/nP,KAAAyuK,GAAAv0J,OAAAgmB,GAAA77B,MAAA,OAUA,OARA08G,GAAAzyB,UAAA,UACAj+E,MAAAhQ,IACAs9B,QAAA7Z,OAAA,QACA+nL,QAAAl/J,EAAAA,EAAA,IAAA,GACAtoC,MAAA,OAAA0jP,GACA1nP,KAAAA,GACAwB,KAAA,WAAAkzE,EAAA/0E,KAAAymB,0BACAqhO,EAAAl7O,SACAmoE,GAEA+hJ,EAAAoO,kBAAA,SAAAlC,EAAAG,EAAAE,EAAA2kB,GACA,GAAA10B,GAAAtzN,KACAioP,EAAA30B,EAAAwxB,sBAAA9hB,GAAA,GACAklB,EAAA50B,EAAAkzB,qBAAArjB,GAAA,GACAglB,EAAA70B,EAAAgwB,sBAAAjgB,GAAA,GACA+kB,EAAAJ,EAAA10B,EAAA+0B,YAAA/0B,EAAAg1B,WACA,OAAA,UAAApoP,EAAAqB,GACA,GAAA8hP,GAAA/vB,EAAA4P,WAAAhjO,GAAA+nP,EAAA30B,EAAA8P,UAAAljO,GAAAgoP,EAAAC,CACA,OAAAC,GAAA/mP,KAAAiyN,EAAA+vB,EAAAnjP,EAAAqB,GAAArB,EAAAF,QAGA82N,EAAAuxB,YAAA,SAAAtkE,EAAA7jL,EAAAqoP,GACA,GACAC,GAAA5hO,EADA0sM,EAAAtzN,KACAqsC,EAAAk8M,EAAA9hO,uBAeA,OAdA6sM,GAAAtgM,OAAA4mM,cACAhzM,EAAA0sM,EAAA8P,UAAAljO,GAAA,EAAA,EACAsoP,EAAAzkE,EAAA,GAAA,GAAAn9J,GAAA1mB,EAAAoT,MAAA,GAAA,EAAA,IAEAk1O,EAAAl1B,EAAAkJ,QAAA,QAAAz4C,EAAA,GAAA,GAAAA,EAAA,GAAA,IAAA,EAAAA,EAAA,GAAA,GAGA,OAAA7jL,EAAAoT,QACAk1O,EAAAl1B,EAAA7pN,MACA++O,EAAAl1B,EAAA7pN,MAAA4iC,EAAA5iC,MACA++O,EAAA,IACAA,EAAA,IAGAA,GAEA1xB,EAAAwxB,YAAA,SAAAvkE,EAAA7jL,EAAAqoP,GACA,GAEAE,GAFAn1B,EAAAtzN,KACAqsC,EAAAk8M,EAAA9hO,uBA0BA,OAxBA6sM,GAAAtgM,OAAA4mM,aACA6uB,GAAA1kE,EAAA,GAAA,GAAAA,EAAA,GAAA,GAAA,GAAA13I,EAAA3gC,QAAA,GAEA+8O,EAAA1kE,EAAA,GAAA,GACA7jL,EAAAoT,MAAA,GAAA,IAAApT,EAAAoT,QAAAggN,EAAA+iB,kBACAoS,GAAAp8M,EAAA3gC,OACA4nN,EAAA8P,UAAAljO,IAAAozN,EAAAo1B,WACAD,GAAA,GAEAn1B,EAAA8P,UAAAljO,IAAAozN,EAAAq1B,aACAF,GAAA,IAGAA,GAAAn1B,EAAA8P,UAAAljO,IAAA,GAAA,GAIA,OAAAA,EAAAoT,OAAAggN,EAAAtgM,OAAA4mM,eACA6uB,EAAAp8M,EAAA3gC,OACA+8O,EAAAp8M,EAAA3gC,OACA+8O,EAAAzoP,KAAA0L,SACA+8O,EAAAzoP,KAAA0L,OAAA,IAGA+8O,GAGA3xB,EAAA4mB,cAAA,SAAAhD,EAAA75O,GACA,GAAAyyN,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,MACAsgM,GAAA+mB,eAAAK,GAAAhiG,QAAA,SAAAnmI,GACA+gN,EAAA0H,cAAAzoN,GAAA1R,IAAAmyB,EAAAm5M,WAAA55N,GACAygB,EAAAm5M,WAAA55N,GAAA1R,IAEA65O,IACA1nN,EAAAk5M,UAAArrO,IAGAi2N,EAAA0F,QAAA,SAAA37N,EAAA6+B,GACA,GAAA4zL,GAAAtzN,KAAAwiD,EAAA8wK,EAAAtgM,OAAAm5M,WAAAn0N,GAAA,CAgBA,OAfA0nB,GAAAA,GAAA4zL,EAAAjjN,KAAAqvB,QACAA,GAAAA,EAAA/+B,OACA++B,EAAAg5G,QAAA,SAAAvgI,GACA,GAAAvH,GAAA4xC,EAAArqC,EAAA5F,KACA3B,GAAAA,EAAAJ,QAAA3P,IAAA,IAAA+P,GAAA,SAAA/P,KACAmX,GAAA,KAGA1H,OAAAmoC,KAAA+J,GAAA7hD,OACA2P,OAAAmoC,KAAA+J,GAAAk2F,QAAA,SAAAnmI,GACAiwC,EAAAjwC,KAAA1R,IAAAmX,GAAA,KAGAA,EAAAs7M,EAAAtgM,OAAAk5M,YAAArrO,EAEAmX,GAEA8+M,EAAA+I,WAAA,SAAAngM,GACA,MAAA1/B,MAAAw8N,QAAA,MAAA98L,IAAA1/B,KAAAw8N,QAAA,QAAA98L,IAAA1/B,KAAAw8N,QAAA,QAAA98L,IAEAo3L,EAAAwM,WAAA,SAAApjO,GACA,GAAA8yB,GAAAhzB,KAAAgzB,OAAAzgB,EAAAmkC,EAAAx2C,GAAAA,EAAAA,EAAAqS,EACA,QAAAygB,EAAAm5M,WAAA55N,KAAA,OAAA,SAAA,OAAA,cAAA,OAAA,aAAA/B,QAAAwiB,EAAAm5M,WAAA55N,KAAA,GAEAukN,EAAAyoB,WAAA,SAAAr/O,GACA,GAAAqS,GAAAmkC,EAAAx2C,GAAAA,EAAAA,EAAAqS,EACA,QAAA,OAAA,aAAA/B,QAAAxQ,KAAAgzB,OAAAm5M,WAAA55N,KAAA,GAEAukN,EAAAwrB,aAAA,SAAApiP,GACA,GAAAqS,GAAAmkC,EAAAx2C,GAAAA,EAAAA,EAAAqS,EACA,QAAA,SAAA,eAAA/B,QAAAxQ,KAAAgzB,OAAAm5M,WAAA55N,KAAA,GAEAukN,EAAAoM,WAAA,SAAAhjO,GACA,GAAAqS,GAAAmkC,EAAAx2C,GAAAA,EAAAA,EAAAqS,EACA,QAAA,OAAA,cAAA,aAAA/B,QAAAxQ,KAAAgzB,OAAAm5M,WAAA55N,KAAA,GAEAukN,EAAAsM,UAAA,SAAAljO,GACA,GAAAqS,GAAAmkC,EAAAx2C,GAAAA,EAAAA,EAAAqS,EACA,OAAA,QAAAvS,KAAAgzB,OAAAm5M,WAAA55N,IAEAukN,EAAAsR,cAAA,SAAAloO,GACA,GAAAqS,GAAAmkC,EAAAx2C,GAAAA,EAAAA,EAAAqS,EACA,OAAA,YAAAvS,KAAAgzB,OAAAm5M,WAAA55N,IAEAukN,EAAA8xB,UAAA,SAAA1oP,GACA,GAAAqS,GAAAmkC,EAAAx2C,GAAAA,EAAAA,EAAAqS,EACA,OAAA,QAAAvS,KAAAgzB,OAAAm5M,WAAA55N,IAEAukN,EAAA+xB,YAAA,SAAA3oP,GACA,GAAAqS,GAAAmkC,EAAAx2C,GAAAA,EAAAA,EAAAqS,EACA,OAAA,UAAAvS,KAAAgzB,OAAAm5M,WAAA55N,IAEAukN,EAAAgyB,YAAA,SAAA5oP,GACA,GAAAqS,GAAAmkC,EAAAx2C,GAAAA,EAAAA,EAAAqS,EACA,OAAA,UAAAvS,KAAAgzB,OAAAm5M,WAAA55N,IAEAukN,EAAAiyB,UAAA,SAAA7oP,GACA,MAAAF,MAAA4oP,UAAA1oP,IAAAF,KAAA8oP,YAAA5oP,IAAAF,KAAA6oP,YAAA3oP,IAEA42N,EAAAqsB,SAAA,SAAAjjP,GACA,MAAAF,MAAAsjO,WAAApjO,IAAAA,OAEA42N,EAAAkyB,QAAA,SAAA9oP,GACA,MAAAF,MAAA+oP,UAAA7oP,EAAAmQ,OAAAnQ,OAOA42N,EAAAovB,QAAA,SAAAhmP,GACA,MAAAF,MAAAojO,UAAAljO,GAAAA,EAAAu9C,WAEAq5K,EAAAwuB,kBAAA,SAAAplP,GACA,MAAAF,MAAAsjO,WAAApjO,IAAAF,KAAAooO,cAAAloO,GAAAA,EAAAu9C,WAEAq5K,EAAA2wB,cAAA,SAAAvnP,GACA,MAAAF,MAAAojO,UAAAljO,IAAAF,KAAAsjO,WAAApjO,GAAAA,EAAAu9C,WAEAq5K,EAAAurB,oBAAA,SAAAxhP,GACA,OAAA,SAAA,gBAAA,QAAA,aAAA,eAAA,SAAA,WAAA,gBAAA,kBAAA,YAAA2P,QAAA3P,IAAA,GAGAi2N,EAAAqH,SAAA,WACA,GAAA7K,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OAAAy7I,EAAA6kD,EAAA7kD,EACA6kD,GAAA21B,KAAA31B,EAAAoI,KAAA53M,OAAA,KACA/M,KAAA,YAAAu8M,EAAAmF,iBACA1hN,KAAA,QAAA/B,EAAAi0O,MACAj2N,EAAAq9M,aACA/c,EAAA21B,KAAAnlO,OAAA,KAAA/M,KAAA,QAAA/B,EAAAk0O,QAEAl2N,EAAAw9M,aACAld,EAAA21B,KAAAnlO,OAAA,KAAA/M,KAAA,QAAA/B,EAAAm0O,QAEAn2N,EAAA29M,iBACArd,EAAA21B,KAAAnlO,OAAA,KACA/M,KAAA,QAAA/B,EAAAo0O,YACAtlO,OAAA,QACA/M,KAAA,QAAA/B,EAAAo0O,YAEA91B,EAAA+1B,MAAA56E,EAAAngF,cACAt7D,EAAAorM,kBAAA9K,EAAA+K,iBAEAvH,EAAAuH,cAAA,WACA,GAAA/K,GAAAtzN,KAAAyuK,EAAA6kD,EAAA7kD,EACA6kD,GAAAg2B,UAAAh2B,EAAAoI,KAAA53M,OAAA,KACA/M,KAAA,YAAAu8M,EAAAmF,iBACA1hN,KAAA,QAAA/B,EAAAi0O,KAAA,IAAAj0O,EAAAs0O,WACAh2B,EAAAg2B,UAAAxlO,OAAA,KAAA/M,KAAA,QAAA/B,EAAAu0O,YACAj2B,EAAAg2B,UAAAxlO,OAAA,KAAA/M,KAAA,QAAA/B,EAAAw0O,YACAl2B,EAAAi2B,WAAA96E,EAAAngF,eAEAwoI,EAAA2yB,YAAA,SAAAC,GACA,GAAAp2B,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OAAAy7I,EAAA6kD,EAAA7kD,GACAk7E,EAAAr2B,EAAAs2B,iBAAA52N,EAAAs9M,YAAAhd,EAAAjhN,GACAgiN,EAAAf,EAAAuQ,gBAAAvQ,EAAA2Q,MAAA5P,aAAA,CAEAf,GAAAu2B,UAAA72N,EAAA4mM,cACArjG,GAAA,EACAE,GAAA68F,EAAA7pN,MACA+sH,GAAA,SAAAt2H,GAAA,MAAAozN,GAAAjhN,EAAAnS,GAAAm0N,GACA39F,GAAA,SAAAx2H,GAAA,MAAAozN,GAAAjhN,EAAAnS,GAAAm0N,KAEA99F,GAAA,SAAAr2H,GAAA,MAAAozN,GAAAjhN,EAAAnS,GAAAm0N,GACA59F,GAAA,SAAAv2H,GAAA,MAAAozN,GAAAjhN,EAAAnS,GAAAm0N,GACA79F,GAAA,EACAE,GAAA48F,EAAA5nN,QAGA4nN,EAAA+1B,MAAA/1B,EAAAoI,KAAAxhN,OAAA,IAAAlF,EAAAk0O,QAAA56J,UAAA,IAAAt5E,EAAAq0O,OACAh5O,KAAAs5O,GACAr2B,EAAA+1B,MAAA1rN,QAAA7Z,OAAA,QAAA/M,KAAA,QAAA/B,EAAAq0O,OACAK,GACAp2B,EAAA+1B,MAAAtyO,KAAAu8M,EAAAu2B,WACAxlP,MAAA,UAAA,WAAA,OAAAoqK,EAAAv0J,OAAAla,MAAA+W,KAAAic,EAAA4mM,aAAA,KAAA,SAAA5mM,EAAA4mM,aAAAtG,EAAA5nN,OAAA,GAAA,EAAA,IAEA4nN,EAAA+1B,MAAAjyG,OAAAxqI,UAGAkqN,EAAAgzB,YAAA,WACA,GAAAx2B,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OACA+2N,EAAAz2B,EAAAiR,MAAArV,cAAAoE,EAAAp/M,EAAAmsL,MAAArtK,EAAA09M,aACApd,GAAA02B,MAAA12B,EAAAoI,KAAAxhN,OAAA,IAAAlF,EAAAm0O,QAAA76J,UAAA,IAAAt5E,EAAAg1O,OACA35O,KAAA05O,GACAz2B,EAAA02B,MAAArsN,QAAA7Z,OAAA,QACA/M,KAAA,QAAA/B,EAAAg1O,OACA12B,EAAA02B,MAAAjzO,KAAA,KAAAic,EAAA4mM,aAAAtG,EAAAp/M,EAAA,GACA6C,KAAA,KAAAic,EAAA4mM,aAAAtG,EAAAp/M,EAAAo/M,EAAA7pN,OACAsN,KAAA,KAAAic,EAAA4mM,aAAA,EAAAtG,EAAAp/M,GACA6C,KAAA,KAAAic,EAAA4mM,aAAAtG,EAAA5nN,OAAA4nN,EAAAp/M,GACAo/M,EAAA02B,MAAA5yG,OAAAxqI,SACA0mN,EAAA+L,YAAA/L,EAAA02B,MAAA,SAGAlzB,EAAAmzB,eAAA,SAAA/pP,GACA,MAAAA,GAAAmlB,SAAAnlB,EAAAmlB,SAAA,OAEAyxM,EAAAozB,WAAA,SAAAhqP,GACA,MAAA,UAAAA,EAAAmlB,SAAA,EAAA,WAAAnlB,EAAAmlB,SAAA,GAAA,GAEAyxM,EAAAqzB,WAAA,SAAAjqP,GACA,MAAA,UAAAA,EAAAmlB,UAAArlB,KAAA0L,OAAA,WAAAxL,EAAAmlB,UAAArlB,KAAA0L,OAAA,EAAA,GAEAorN,EAAAszB,WAAA,SAAAlqP,GACA,MAAA,UAAAA,EAAAmlB,SAAA,EAAA,WAAAnlB,EAAAmlB,SAAArlB,KAAAyJ,MAAA,EAAAzJ,KAAAyJ,OAEAqtN,EAAAuO,WAAA,SAAA93N,GACA,GACA88O,GAAAC,EAAA7hB,EADAnV,EAAAtzN,KAAA07N,EAAApI,EAAAoI,KAAA1oM,EAAAsgM,EAAAtgM,MAIAsgM,GAAA21B,KAAA5kP,MAAA,aAAAivN,EAAAuM,aAAA,SAAA,WAEAnE,EAAAxhN,OAAA,QAAAlF,EAAAo0O,YAAA/kP,MAAA,aAAA,UACA2uB,EAAAq9M,aACA/c,EAAAm2B,cAEAn2B,EAAAi2B,WAAA7tB,EAAAxhN,OAAA,IAAAlF,EAAAu0O,YAAAj7J,UAAA,IAAAt5E,EAAAq1O,WACAh6O,KAAA2iB,EAAAu9M,cAEA8Z,EAAA/2B,EAAAi2B,WAAA5rN,QAAA7Z,OAAA,KACA/M,KAAA,QAAA,SAAA7W,GAAA,MAAA8U,GAAAq1O,WAAAnqP,EAAA,MAAA,IAAAA,EAAA,MAAA,MACAmqP,EAAAvmO,OAAA,QACAzf,MAAA,UAAA,GACAgmP,EAAAvmO,OAAA,QACA/M,KAAA,cAAAu8M,EAAA22B,gBACAlzO,KAAA,YAAAic,EAAA4mM,aAAA,GAAA,eACA7iN,KAAA,KAAAu8M,EAAA42B,YACAnzO,KAAA,MAAA,GACA1S,MAAA,UAAA,GAIAivN,EAAAi2B,WAAAnyG,OAAAv+G,aAAAtrB,SAAAA,GACAlJ,MAAA,UAAA,GACAuI,SAGAomB,EAAAw9M,aACAld,EAAAw2B,cAEAx2B,EAAAk2B,WAAA9tB,EAAAxhN,OAAA,IAAAlF,EAAAw0O,YAAAl7J,UAAA,IAAAt5E,EAAAs1O,WACAj6O,KAAA2iB,EAAAy9M,cAEA6Z,EAAAh3B,EAAAk2B,WAAA7rN,QAAA7Z,OAAA,KACA/M,KAAA,QAAA,SAAA7W,GAAA,MAAA8U,GAAAs1O,WAAApqP,EAAA,MAAA,IAAAA,EAAA,MAAA,MACAoqP,EAAAxmO,OAAA,QACAzf,MAAA,UAAA,GACAimP,EAAAxmO,OAAA,QACA/M,KAAA,cAAAu8M,EAAA22B,gBACAlzO,KAAA,YAAAic,EAAA4mM,aAAA,cAAA,IACA7iN,KAAA,KAAAu8M,EAAA42B,YACAnzO,KAAA,MAAA,GACA1S,MAAA,UAAA,GAEAokO,EAAAnV,EAAAmV,GAAA52M,KAAAyhM,GACAA,EAAAk2B,WAAAtvO,OAAA,QACA2e,aAAAtrB,SAAAA,GACAwJ,KAAA,KAAAic,EAAA4mM,aAAA6O,EAAA,GACA1xN,KAAA,KAAAic,EAAA4mM,aAAA6O,EAAAnV,EAAA7pN,OACAsN,KAAA,KAAAic,EAAA4mM,aAAA,EAAA6O,GACA1xN,KAAA,KAAAic,EAAA4mM,aAAAtG,EAAA5nN,OAAA+8N,GACApkO,MAAA,UAAA,GACAivN,EAAAk2B,WAAAtvO,OAAA,QACA2e,aAAAtrB,SAAAA,GACAwJ,KAAA,IAAAic,EAAA4mM,aAAAtG,EAAA62B,WAAAt4N,KAAAyhM,GAAAA,EAAA82B,WAAAv4N,KAAAyhM,IACAv8M,KAAA,IAAA0xN,GACApoO,KAAA,SAAAH,GAAA,MAAAA,GAAAG,OACAgE,MAAA,UAAA,GAEAivN,EAAAk2B,WAAApyG,OAAAv+G,aAAAtrB,SAAAA,GACAlJ,MAAA,UAAA,GACAuI,UAEAkqN,EAAAiQ,WAAA,SAAAhI,GACA,GAAAzL,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OAAA0wM,EAAApQ,EAAAoQ,GAAA7xM,KAAAyhM,GACAj4J,EAAAi4J,EAAAi2B,WAAArvO,OAAA,QACAytO,EAAAr0B,EAAAi2B,WAAArvO,OAAA,OACA,SACA6kN,EAAA1jK,EAAAxiC,aAAAwiC,GACAtkD,KAAA,KAAAic,EAAA4mM,aAAA,EAAA8J,GACA3sN,KAAA,KAAAic,EAAA4mM,aAAAtG,EAAA7pN,MAAAi6N,GACA3sN,KAAA,KAAAic,EAAA4mM,aAAA8J,EAAA,GACA3sN,KAAA,KAAAic,EAAA4mM,aAAA8J,EAAApQ,EAAA5nN,QACArH,MAAA,UAAA,IACA06N,EAAA4oB,EAAA9uN,aAAA8uN,GACA5wO,KAAA,IAAAic,EAAA4mM,aAAAtG,EAAA82B,WAAAv4N,KAAAyhM,GAAAA,EAAA62B,WAAAt4N,KAAAyhM,IACAv8M,KAAA,IAAA2sN,GACArjO,KAAA,SAAAH,GAAA,MAAAA,GAAAG,OACAgE,MAAA,UAAA,KAGAyyN,EAAA0oB,eAAA,SAAAF,GACA,GAAAhsB,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OACAu3N,EAAAjL,EAAA59O,OAAA,SAAAxB,GAAA,MAAAA,IAAAioO,EAAAjoO,EAAAoT,SACAk3O,EAAAl3B,EAAAoI,KAAAptI,UAAA,QAAAt5E,EAAAo0O,YACA9gB,EAAAhV,EAAAgV,GAAAz2M,KAAAyhM,EACAtgM,GAAAigN,eAEA3f,EAAAkJ,QAAA,YAAAlJ,EAAAuM,eACA2qB,EACAnmP,MAAA,aAAA,WACAgM,MAAAk6O,EAAA,KACAxzO,KAAAic,EAAA4mM,aAAA,KAAA,KAAA0O,GACAvxN,KAAAic,EAAA4mM,aAAA,KAAA,KAAA0O,GACAhV,EAAA+L,YAAAmrB,EAAA,WAEA1zB,EAAAqoB,eAAA,WACAn/O,KAAA07N,KAAAxhN,OAAA,QAAAlF,EAAAo0O,YAAA/kP,MAAA,aAAA,WAEAyyN,EAAAqO,iBAAA,WACA,GAAA7R,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,MACAsgM,GAAAoI,KAAAxhN,OAAA,QAAAlF,EAAAo0O,YACAryO,KAAA,KAAAic,EAAA4mM,aAAA,GAAA,IACA7iN,KAAA,KAAAic,EAAA4mM,aAAAtG,EAAA7pN,OAAA,IACAsN,KAAA,KAAAic,EAAA4mM,cAAA,GAAA,GACA7iN,KAAA,KAAAic,EAAA4mM,cAAA,GAAAtG,EAAA5nN,SAEAorN,EAAA8yB,iBAAA,SAAA/oP,EAAAk3K,GACA,GACAy+D,GAAAiU,EAAAC,EAAAnpP,EADA+xN,EAAAtzN,KACA2qP,KACAC,EAAAt3B,EAAAoI,KAAAxhN,OAAA,IAAAlF,EAAAo/M,OAAA9lI,UAAA,SAAAp1C,MACA,IAAA,SAAAr4C,EAIA,IAHA21O,EAAAljB,EAAAsJ,aACA6tB,EAAAjU,EAAA,GAAA/4D,cACAitE,EAAAlU,EAAA,GAAA/4D,cACAl8K,EAAAkpP,EAAAlpP,GAAAmpP,EAAAnpP,IACAopP,EAAApkP,KAAA,GAAA0L,MAAA1Q,EAAA,wBAGAopP,GAAA5yE,EAAAsoB,MAAA,IACAsqD,EAAAhqP,OAAAiqP,IACAD,EAAAA,EAAAjpP,OAAA,SAAAxB,GAAA,OAAA,GAAAA,GAAAsQ,QAAA,KAAA,IAGA,OAAAm6O,IAEA7zB,EAAA+zB,sBAAA,SAAAlzL,GACA,MAAAA,GAAA,SAAA3E,GACA,GAAA4O,IAAA,CAMA,UALA71D,OAAA4rD,GAAA+gF,QAAA,SAAAttH,IACA,SAAAA,IAAA4nC,EAAA1/C,QAAA8X,EAAA9X,OAAA,SAAA8X,IAAA4nC,EAAA,QAAA5nC,EAAA,SACAw2C,GAAA,KAGAA,GACA,WAAA,OAAA,IAEAk1J,EAAAg0B,gBAAA,SAAAnzL,EAAAqwL,GACA,GAAA10B,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OACA+3N,EAAAz3B,EAAAu3B,sBAAAlzL,GACAqzL,EAAA,SAAAh4L,GAAA,OAAA+3L,EAAA/3L,IACA2vL,EAAAqF,EAAAhzO,EAAAu0O,WAAAv0O,EAAAw0O,WACApG,EAAA4E,EAAAhzO,EAAAq1O,UAAAr1O,EAAAs1O,SACAh3B,GAAAoI,KAAAxhN,OAAA,IAAAyoO,GAAAr0J,UAAA,IAAA80J,GAAA1hP,OAAAqpP,GACAlyN,aAAAtrB,SAAAylB,EAAA6uM,qBACAx9N,MAAA,UAAA,GAAAuI,SACAo7O,EACAh1N,EAAAu9M,aAAAv9M,EAAAu9M,aAAA7uO,OAAAspP,GAEAh4N,EAAAy9M,aAAAz9M,EAAAy9M,aAAA/uO,OAAAspP,IAIAl0B,EAAAiH,YAAA,WACA,GAAAx8N,GAAA+xN,EAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,MASA,IARAsgM,EAAAj0L,QAAAi0L,EAAAyI,YACA13N,MAAA,WAAA,YACAyf,OAAA,OACA/M,KAAA,QAAA/B,EAAAi2O,kBACA5mP,MAAA,WAAA,YACAA,MAAA,iBAAA,QACAA,MAAA,UAAA,QAEA2uB,EAAA2gN,kBAAA,CACA,GAAArgB,EAAAgU,gBAAA5wL,EAAA1jB,EAAA4gN,gBAAA,CAEA,IADA5gN,EAAA4gN,eAAAtgB,EAAAiV,UAAAv1M,EAAA4gN,gBACAryO,EAAA,EAAAA,EAAA+xN,EAAAjjN,KAAAqvB,QAAA,GAAA+d,OAAA98C,QACA2yN,EAAAjjN,KAAAqvB,QAAA,GAAA+d,OAAAl8C,GAAA8Q,EAAA2gB,EAAA4gN,iBAAA,EADAryO,KAGAyxB,EAAA4gN,eAAAryO,EAEA+xN,EAAAj0L,QAAA12B,KAAAqqB,EAAAugN,iBAAAlyO,KAAAiyN,EAAAA,EAAAjjN,KAAAqvB,QAAA92B,IAAA,SAAA1I,GACA,MAAAozN,GAAAgmB,QAAAp5O,EAAAu9C,OAAAzqB,EAAA4gN,mBACAtgB,EAAA30I,KAAAy2J,qBAAA9hB,EAAA43B,WAAA53B,EAAAuM,cAAAvM,EAAAllG,QACAklG,EAAAj0L,QAAAh7B,MAAA,MAAA2uB,EAAA6gN,sBAAA/9N,KACAzR,MAAA,OAAA2uB,EAAA6gN,sBAAAntN,MACAriB,MAAA,UAAA,WAGAyyN,EAAA4c,kBAAA,SAAAxzO,EAAAszO,EAAAC,EAAArlH,GACA,GAIA/tH,GAAAkB,EAAA+7B,EAAAhqB,EAAAuJ,EAAA+Z,EAJA08L,EAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OACAm4N,EAAAn4N,EAAAmgN,sBAAAK,EACA4X,EAAAp4N,EAAAogN,qBAAA,SAAAv2N,GAAA,MAAAA,IACAwuO,EAAAr4N,EAAAqgN,sBAAAI,EAEAyH,EAAA5nB,EAAA0nB,YAEA,IAAA,IAAAhoN,EAAAg5M,YAAArrO,OACAT,EAAAoR,KAAA,SAAA7R,EAAAC,GACA,GAAA89O,GAAA/9O,EAAAA,EAAA6T,MAAA,KAAAmqO,EAAA/9O,EAAAA,EAAA4T,MAAA,IACA,OAAA4nO,GAAAsC,EAAAC,EAAAA,EAAAD,QAEA,CACA,GAAAngM,GAAAi2K,EAAA2nB,aAAA3nB,EAAAjjN,KAAAqvB,SAAA92B,IAAA,SAAArH,GACA,MAAAA,GAAAgR,IAEArS,GAAAoR,KAAA,SAAA7R,EAAAC,GACA,GAAA89O,GAAA/9O,EAAAA,EAAA6T,MAAA,KAAAmqO,EAAA/9O,EAAAA,EAAA4T,MAAA,IAKA,OAJAkqO,GAAA,GAAAC,EAAA,IACAD,EAAA/9O,EAAA49C,EAAA7sC,QAAA/Q,EAAA8S,IAAA,KACAkrO,EAAA/9O,EAAA29C,EAAA7sC,QAAA9Q,EAAA6S,IAAA,MAEA2oO,EAAAsC,EAAAC,EAAAA,EAAAD,IAIA,IAAAj8O,EAAA,EAAAA,EAAArB,EAAAS,OAAAY,IACA,GAAArB,EAAAqB,KAAArB,EAAAqB,GAAA+R,OAAA,IAAApT,EAAAqB,GAAA+R,SAEAjT,IACAi9B,EAAAguN,EAAAH,EAAAA,EAAAjrP,EAAAqB,GAAA8Q,GAAAnS,EAAAqB,GAAA8Q,GACAhS,EAAA,iBAAAizN,EAAAt+M,MAAAqqB,QAAA,MAAA/B,GAAA,IAAAA,EAAA,uBAAAA,EAAA,aAAA,KAGAhqB,EAAAg4O,EAAAD,EAAAnrP,EAAAqB,GAAA+R,MAAApT,EAAAqB,GAAA8kI,MAAAnmI,EAAAqB,GAAAgR,GAAArS,EAAAqB,GAAAqZ,MAAA1a,IACAg2B,SAAA5iB,GAAA,CAEA,GAAA,OAAApT,EAAAqB,GAAAsb,KAAA,QACAA,GAAAyuO,EAAAF,EAAAlrP,EAAAqB,GAAAsb,KAAA3c,EAAAqB,GAAA8kI,MAAAnmI,EAAAqB,GAAAgR,GAAArS,EAAAqB,GAAAqZ,QACAgc,EAAA08L,EAAA0F,WAAA1F,EAAA0F,WAAA94N,EAAAqB,GAAA+R,OAAA86G,EAAAluH,EAAAqB,GAAAgR,IAEAlS,GAAA,cAAAizN,EAAAt+M,MAAAu2O,YAAA,IAAAj4B,EAAA4oB,wBAAAh8O,EAAAqB,GAAAgR,IAAA,KACAlS,GAAA,kDAAAu2B,EAAA,YAAA/Z,EAAA,QACAxc,GAAA,qBAAAiT,EAAA,QACAjT,GAAA,QAGA,MAAAA,GAAA,YAEAy2N,EAAA00B,gBAAA,SAAAjB,EAAAkB,EAAAC,EAAAxrN,GACA,GACAkhN,GAAAuK,EAAAC,EAAAC,EAAAC,EADAx4B,EAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OAAAy7I,EAAA6kD,EAAA7kD,GAEAs9E,EAAAz4B,EAAAuM,aACAvzB,EAAA79B,EAAA69B,MAAApsK,EA8BA,OA5BA6rN,IACAJ,GAAAr4B,EAAA7pN,OAAA6pN,EAAA4G,cAAA5G,EAAAoM,iBAAA,IAAA,EAAApzB,EAAA,GACAu/C,EAAAv4B,EAAA5nN,OAAA,EAAA4gM,EAAA,GAAA,KAEA80C,EAAA9tB,EAAAwtB,YAAA,GACA9tN,EAAA4mM,cACA+xB,EAAAvK,EAAA90C,EAAA,GAAA,IACAs/C,EAAAD,EAAAF,EACAK,EAAAx4B,EAAA6M,aAAA7M,EAAAkN,yBACAqrB,EAAAv4B,EAAAjhN,EAAAk4O,EAAA,GAAAl4O,GAAA,KAEAs5O,EAAAvK,EAAA9tB,EAAAoN,uBAAA,GAAApN,EAAAjhN,EAAAk4O,EAAA,GAAAl4O,GAAA,GACAu5O,EAAAD,EAAAF,EACAK,EAAA1K,EAAA9tB,EAAA6M,aAAA7M,EAAAkN,yBACAqrB,EAAAv/C,EAAA,GAAA,IAGAs/C,EAAAE,IAEAH,GAAAC,EAAAE,EAAA,IAEAD,EAAAH,EAAAp4B,EAAA+M,gBACAwrB,GAAAH,EAAA,KAGAG,EAAA,IACAA,EAAA,IAEA/1O,IAAA+1O,EAAAnlO,KAAAilO,IAEA70B,EAAAh8D,YAAA,SAAAwkF,EAAAp/M,GACA,GACAurN,GAAAC,EAAArmO,EADAiuM,EAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OAEA+4N,EAAAz4B,EAAAuM,aACA0qB,EAAAjL,EAAA59O,OAAA,SAAAxB,GAAA,MAAAA,IAAAioO,EAAAjoO,EAAAoT,SACA04O,EAAAh5N,EAAAsgN,kBAAAxc,EAAA00B,eACA,KAAAjB,EAAA5pP,QAAAqyB,EAAAigN,eAGA3f,EAAAj0L,QAAA12B,KAAAqqB,EAAAugN,iBAAAlyO,KAAAiyN,EAAAgsB,EAAAhsB,EAAA30I,KAAAy2J,qBAAA9hB,EAAA43B,WAAAa,GAAAz4B,EAAAllG,QAAA/pH,MAAA,UAAA,SAGAonP,EAAAn4B,EAAAj0L,QAAA6rK,SAAA,eACAwgD,EAAAp4B,EAAAj0L,QAAA6rK,SAAA,gBAEA7lL,EAAA2mO,EAAA3qP,KAAArB,KAAAuqP,EAAAkB,EAAAC,EAAAxrN,GAEAozL,EAAAj0L,QACAh7B,MAAA,MAAAghB,EAAAvP,IAAA,MACAzR,MAAA,OAAAghB,EAAAqB,KAAA,QAEAowM,EAAA97D,YAAA,WACAh7J,KAAAq/B,QAAAh7B,MAAA,UAAA,SAGAyyN,EAAAkH,WAAA,WACA,GAAA1K,GAAAtzN,IAIA,OAHAszN,GAAA24B,qBACA34B,EAAA44B,mBAAA,EACA54B,EAAAiM,OAAAjM,EAAAvyG,IAAAj9F,OAAA,KAAA/M,KAAA,YAAAu8M,EAAAuK,aAAA,WACAvK,EAAAtgM,OAAAypM,gBAOAnJ,GAAA64B,4BANA74B,EAAAiM,OAAAl7N,MAAA,aAAA,eACAivN,EAAAkG,gBAAAlG,EAAA+I,SAAA/I,EAAAjjN,KAAAqvB,YAOAo3L,EAAAq1B,yBAAA,WACA,GAAA74B,GAAAtzN,IACAszN,GAAAsQ,aAAAtQ,EAAA+I,SAAA/I,EAAAjjN,KAAAqvB,UAAAs/L,eAAA,EAAAmI,4BAAA,EAAApI,gBAAA,KAEAjI,EAAA+J,oBAAA,SAAAvB,EAAAG,GACA,GAAAnM,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OAAAo5N,GACAt2O,IAAAw9M,EAAA+G,YAAA/G,EAAAiN,uBAAAvtM,EAAAw6M,eAAA,IAAAla,EAAA+M,cAAAf,EAAAhM,EAAAmN,0BAAAztM,EAAAw6M,eACA9mN,KAAA4sM,EAAAiH,aAAAjH,EAAAoN,wBAAA1tM,EAAAu6M,eAAA,GAAAja,EAAA6M,aAAAV,EAAAnM,EAAAkN,yBAAAxtM,EAAAu6M,eAAA,GAGAja,GAAAsN,SACA9qN,IAAAw9M,EAAA4G,cAAA,EAAA5G,EAAA8G,cAAAgyB,EAAAt2O,IAAAw9M,EAAA+M,cAAAf,EACAziM,MAAAywD,IACAhvD,OAAA,EACA5X,KAAA4sM,EAAA4G,cAAA5G,EAAA6M,aAAAV,EAAAnM,EAAA8G,cAAAgyB,EAAA1lO,KAAA,IAGAowM,EAAAkS,gBAAA,SAAAjK,GACA,GAAAzL,GAAAtzN,MACA++N,EAAAzL,EAAAiM,OAAA1mM,aAAAy6L,EAAAiM,QAAAxoN,KAAA,YAAAu8M,EAAAuK,aAAA,YAEA/G,EAAAu1B,iBAAA,SAAAnlO,GACAlnB,KAAAw6N,WAAAtzM,GAEA4vM,EAAAw1B,sBAAA,SAAA5rP,GACAV,KAAAy6N,gBAAA/5N,GAEAo2N,EAAAy1B,uBAAA,SAAA1oP,GACA7D,KAAA06N,iBAAA72N,GAEAizN,EAAA4I,eAAA,WACA,GAAApM,GAAAtzN,IACA,OAAAszN,GAAAtgM,OAAAypM,YAAAnJ,EAAA4G,eAAA5G,EAAA8G,cAAA9G,EAAAmH,iBAAAnH,EAAAkH,WAAA,GAAAlH,EAAA6M,aAAA,GAEArJ,EAAA0I,gBAAA,WACA,GAAAlM,GAAAtzN,KAAA6D,EAAA,CAQA,OAPAyvN,GAAAtgM,OAAAypM,cAEA54N,EADAyvN,EAAA4G,cACA5G,EAAA+M,cAEAj2N,KAAAC,IAAA,GAAAipN,EAAAoH,mBAAApH,EAAAkH,WAAA,IAGA32N,GAEAizN,EAAA01B,iBAAA,SAAA1O,GACA,MAAAA,GAAAjyC,QAAA72L,EAAAy3O,kBAAA,KAAA,GAEA31B,EAAA41B,0BAAA,SAAA5O,GACA,MAAAA,GAAAjyC,QAAA72L,EAAAy3O,kBAAA,KAAA,IAEA31B,EAAA61B,kBAAA,SAAAjS,EAAAniO,GACA,GAAA+6M,GAAAtzN,IACA06O,GAAApnB,EAAA+mB,eAAAK,GACApnB,EAAAiM,OAAAjxI,UAAA,IAAAt5E,EAAA8oO,YACAp8O,OAAA,SAAA6Q,GAAA,MAAAmoO,GAAAlqO,QAAA+B,IAAA,IACAs5L,QAAA72L,EAAA43O,kBAAAr0O,GACAsgB,aAAAtrB,SAAA,KACAlJ,MAAA,UAAA,WACA,GAAAsH,GAAA4M,EAAA+6M,EAAAk5B,iBAAAl5B,EAAAo5B,yBACA,OAAA/gP,GAAAtK,KAAAiyN,EAAAA,EAAA7kD,GAAAv0J,OAAAla,UAGA82N,EAAA+1B,aAAA,WACA,GAAAv5B,GAAAtzN,KAAAyuK,EAAA6kD,EAAA7kD,EACA6kD,GAAAiM,OAAAjxI,UAAA,IAAAt5E,EAAA8oO,YACAjyC,QAAA72L,EAAA43O,mBAAA,GACA/zN,aAAAtrB,SAAA,KACAlJ,MAAA,UAAA,WAAA,MAAAivN,GAAAk5B,iBAAA/9E,EAAAv0J,OAAAla,UAEA82N,EAAAg2B,WAAA,SAAApS,GACA,GAAApnB,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,MACAA,GAAAypM,cACAzpM,EAAAypM,aAAA,EACAnJ,EAAAiM,OAAAl7N,MAAA,aAAA,WACAivN,EAAA44B,mBACA54B,EAAA64B,4BAGA74B,EAAAsnB,sBAAAF,GACApnB,EAAAiM,OAAAjxI,UAAAglI,EAAAy5B,gBAAArS,IACAr2O,MAAA,aAAA,WACAw0B,aACAx0B,MAAA,UAAA,WAAA,MAAAivN,GAAAk5B,iBAAAl5B,EAAA7kD,GAAAv0J,OAAAla,UAEA82N,EAAAk2B,WAAA,SAAAtS,GACA,GAAApnB,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,MACAA,GAAAypM,aAAAlyK,EAAAmwL,KACA1nN,EAAAypM,aAAA,EACAnJ,EAAAiM,OAAAl7N,MAAA,aAAA,WAEAivN,EAAAiJ,mBAAAme,GACApnB,EAAAiM,OAAAjxI,UAAAglI,EAAAy5B,gBAAArS,IACAr2O,MAAA,UAAA,GACAA,MAAA,aAAA,WAEAyyN,EAAAm2B,4BAAA,WACAjtP,KAAAisP,sBAEAn1B,EAAA8M,aAAA,SAAA8W,EAAA3zN,EAAA+6M,GAiBA,QAAAorB,GAAA3E,EAAAh2O,GAIA,MAHA+gN,GAAA24B,kBAAA15O,KACA+gN,EAAA24B,kBAAA15O,GAAA+gN,EAAAu0B,YAAAU,EAAAjiP,YAAA0O,EAAA8oO,WAAAyK,IAEAj1B,EAAA24B,kBAAA15O,GAGA,QAAA46O,GAAA5E,EAAAh2O,EAAAqI,GAUA,QAAAwyO,GAAA76O,EAAA86O,GACAA,IACA1mO,GAAA2mO,EAAAC,EAAAC,GAAA,EACA7mO,EAAA8mO,IACA9mO,GAAA2mO,EAAAE,GAAA,EACAD,EAAA,EACArmO,MAGAw6K,EAAAnvL,GAAA2U,EACAwmO,EAAAxmO,GAAAosM,EAAA8G,cAAA,GAAAzzM,EACA8Y,EAAAltB,GAAAg7O,EACAA,GAAAC,EArBA,GAMA7mO,GAAAgnO,EANA9zO,EAAA,IAAAe,EAAAgzO,EAAAhzO,IAAA8/N,EAAA/5O,OAAA,EACA0rC,EAAA6gN,EAAA3E,EAAAh2O,GACAuhH,EAAAznF,EAAA5iC,MAAAokP,IAAAD,GAAAt6B,EAAA4G,eAAA5G,EAAA8G,cAAAz9L,EAAA,GAAA3J,EAAA86M,eACAggB,EAAAzhN,EAAA3gC,OAAA6oE,EACAi5K,EAAAl6B,EAAA4G,eAAA5G,EAAA8G,cAAA0zB,EAAAh6H,EACAw5H,EAAAh6B,EAAA4G,eAAA5G,EAAA8G,cAAA9G,EAAAkM,kBAAAlM,EAAAoM,gBA0BA,OAPA7lN,KACA0zO,EAAA,EACArmO,EAAA,EACAvd,EAAA,EACAokP,EAAA,GAGA/6N,EAAAypM,cAAAnJ,EAAAknB,eAAAjoO,QACAy7O,EAAAz7O,GAAA2iE,EAAA3iE,GAAAmvL,EAAAnvL,GAAAktB,EAAAltB,GAAA,IAIAy7O,EAAAz7O,GAAAuhH,EACA5+C,EAAA3iE,GAAAu7O,IAEAnkP,GAAAmqH,GAAAnqH,KAAAA,EAAAmqH,KACAi6H,GAAAD,GAAAC,KAAAA,EAAAD,GACAH,EAAAr6B,EAAA4G,eAAA5G,EAAA8G,cAAA2zB,EAAApkP,OAEAqpB,EAAA66M,gBACAv9N,OAAAmoC,KAAAu1M,GAAAt1G,QAAA,SAAAnmI,GAAAy7O,EAAAz7O,GAAA5I,IACA2G,OAAAmoC,KAAAy8B,GAAAwjE,QAAA,SAAAnmI,GAAA2iE,EAAA3iE,GAAAw7O,IACApnO,GAAA2mO,EAAAK,EAAAjT,EAAA/5O,QAAA,EACAgmB,EAAA8mO,GACAF,EAAA,EACArmO,EAAA,EACAwzN,EAAAhiG,QAAA,SAAAnmI,GAAA66O,EAAA76O,MAGA66O,EAAA76O,GAAA,IAGA66O,EAAA76O,KAhFA,GACA07O,GAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAEAjpP,EACAu5N,EAAAoI,EACAwgB,EAAAxyK,EAAAu5K,EAAAl8K,EALA8gJ,EAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OAEAuhD,EAAA,EAAA53C,EAAA,GAAAhzB,EAAA,EAAAokP,EAAA,EAAAN,EAAA,GAAAI,EAAA76N,EAAA+6M,uBAAA,EACAwf,EAAA,EAAA9tN,KAAAuuN,KAAA94K,KAAAw4K,GAAA,GAAAhsD,KAAAx6K,EAAA,CAKAwzN,GAAAA,EAAAh5O,OAAA,SAAA6Q,GACA,OAAA8hO,EAAArhN,EAAA84M,WAAAv5N,KAAA,OAAAygB,EAAA84M,WAAAv5N,KAGAwU,EAAAA,MACAg4M,EAAAxwJ,EAAAxnD,EAAA,kBAAA,GACAogN,EAAA54J,EAAAxnD,EAAA,8BAAA,GAsEAusM,EAAA8G,gBACAlzM,EAAA8L,EAAAy6M,kBAAAz6M,EAAAy6M,kBAAAiN,EAAA/5O,OACA2yN,EAAA+4B,iBAAAnlO,IAGAosM,EAAA4G,eACA+zB,EAAA,SAAA17O,GAAA,MAAA5I,GAAA+3L,EAAAnvL,IACA67O,EAAA,SAAA77O,GAAA,MAAAm7O,GAAAhsD,EAAAnvL,IAAAktB,EAAAltB,KACA+gN,EAAA8G,eACA6zB,EAAA,SAAA17O,GAAA,MAAA5I,GAAA+3L,EAAAnvL,GAAA,IACA67O,EAAA,SAAA77O,GAAA,MAAAm7O,GAAAhsD,EAAAnvL,IAAAktB,EAAAltB,MAEA07O,EAAA,SAAA17O,GAAA,MAAAm7O,GAAAhsD,EAAAnvL,IAAAktB,EAAAltB,IACA67O,EAAA,SAAA77O,GAAA,MAAAw7O,GAAArsD,EAAAnvL,KAEA27O,EAAA,SAAA37O,EAAAhR,GAAA,MAAA0sP,GAAA17O,EAAAhR,GAAA,EAAAyxB,EAAA+6M,wBACAsgB,EAAA,SAAA97O,EAAAhR,GAAA,MAAA6sP,GAAA77O,EAAAhR,GAAA,GACA4sP,EAAA,SAAA57O,EAAAhR,GAAA,MAAA0sP,GAAA17O,EAAAhR,IACA+sP,EAAA,SAAA/7O,EAAAhR,GAAA,MAAA6sP,GAAA77O,EAAAhR,GAAA,GACAgtP,EAAA,SAAAh8O,EAAAhR,GAAA,MAAA0sP,GAAA17O,EAAAhR,GAAA,GACAitP,EAAA,SAAAj8O,EAAAhR,GAAA,MAAA0sP,GAAA17O,EAAAhR,GAAA,EAAAyxB,EAAA+6M,wBACA0gB,EAAA,SAAAl8O,EAAAhR,GAAA,MAAA6sP,GAAA77O,EAAAhR,GAAA,GAGAiE,EAAA8tN,EAAAiM,OAAAjxI,UAAA,IAAAt5E,EAAA8oO,YACAztO,KAAAqqO,GACA/8M,QAAA7Z,OAAA,KACA/M,KAAA,QAAA,SAAAxE,GAAA,MAAA+gN,GAAA0vB,cAAAhuO,EAAA8oO,WAAAvrO,KACAlO,MAAA,aAAA,SAAAkO,GAAA,MAAA+gN,GAAAknB,eAAAjoO,GAAA,UAAA,WACAlO,MAAA,SAAA,WACAqf,GAAA,QAAA,SAAAnR,GACAygB,EAAA06M,oBACA16M,EAAA06M,oBAAArsO,KAAAiyN,EAAA/gN,GAEA+gN,EAAA7kD,GAAArnK,MAAAqa,QACA6xM,EAAAS,IAAAj2M,OACAw1M,EAAAS,IAAAl2M,KAAAtL,KAEA+gN,EAAAS,IAAAh2M,OAAAxL,GACA+gN,EAAAsO,eAAArvN,GAAA+gN,EAAAS,IAAAx7M,MAAAhG,GAAA+gN,EAAAS,IAAArjK,YAIAhtC,GAAA,YAAA,SAAAnR,GACAygB,EAAA26M,wBACA36M,EAAA26M,wBAAAtsO,KAAAiyN,EAAA/gN,IAGA+gN,EAAA7kD,GAAAv0J,OAAAla,MAAA6rM,QAAA72L,EAAA43O,mBAAA,IACAt5B,EAAAwF,YAAAxF,EAAAsO,eAAArvN,IACA+gN,EAAAS,IAAAx7M,MAAAhG,MAIAmR,GAAA,WAAA,SAAAnR,GACAygB,EAAA46M,uBACA56M,EAAA46M,uBAAAvsO,KAAAiyN,EAAA/gN,IAGA+gN,EAAA7kD,GAAAv0J,OAAAla,MAAA6rM,QAAA72L,EAAA43O,mBAAA,GACAt5B,EAAAS,IAAArjK,YAGAlrD,EAAAse,OAAA,QACAzjB,KAAA,SAAAkS,GAAA,MAAA8hO,GAAArhN,EAAA84M,WAAAv5N,IAAAygB,EAAA84M,WAAAv5N,GAAAA,IACA1Q,KAAA,SAAA0Q,EAAAhR,GAAA4rP,EAAAntP,KAAAuS,EAAAhR,KACA8C,MAAA,iBAAA,QACA0S,KAAA,IAAAu8M,EAAA4G,eAAA5G,EAAA8G,cAAA8zB,GAAA,KACAn3O,KAAA,IAAAu8M,EAAA4G,eAAA5G,EAAA8G,eAAA,IAAAi0B,GACA7oP,EAAAse,OAAA,QACA/M,KAAA,QAAA/B,EAAA25O,iBACAtqP,MAAA,eAAA,GACA0S,KAAA,IAAAu8M,EAAA4G,eAAA5G,EAAA8G,cAAA+zB,GAAA,KACAp3O,KAAA,IAAAu8M,EAAA4G,eAAA5G,EAAA8G,eAAA,IAAAk0B,GACA9oP,EAAAse,OAAA,QACA/M,KAAA,QAAA/B,EAAA45O,gBACAvqP,MAAA,SAAAivN,EAAAllG,OACA/pH,MAAA,iBAAA,QACA0S,KAAA,KAAAu8M,EAAA4G,eAAA5G,EAAA8G,cAAAm0B,GAAA,KACAx3O,KAAA,KAAAu8M,EAAA4G,eAAA5G,EAAA8G,eAAA,IAAAq0B,GACA13O,KAAA,KAAAu8M,EAAA4G,eAAA5G,EAAA8G,cAAAo0B,GAAA,KACAz3O,KAAA,KAAAu8M,EAAA4G,eAAA5G,EAAA8G,eAAA,IAAAq0B,GACA13O,KAAA,eAAAic,EAAAg7M,yBAGAx7J,EAAA8gJ,EAAAiM,OAAArlN,OAAA,IAAAlF,EAAA65O,iBAAA,SACAv7B,EAAA8G,eAAAzwN,EAAA,GAAA,IAAA6oE,EAAAt5B,SACAs5B,EAAA8gJ,EAAAiM,OAAAv2I,OAAA,IAAA,IAAAh0E,EAAA8oO,YACA/mO,KAAA,QAAA/B,EAAA65O,kBACA/qO,OAAA,SAGA6jO,EAAAr0B,EAAAiM,OAAAjxI,UAAA,QACAj+E,KAAAqqO,GACAr6O,KAAA,SAAAkS,GAAA,MAAA8hO,GAAArhN,EAAA84M,WAAAv5N,IAAAygB,EAAA84M,WAAAv5N,GAAAA,IACA1Q,KAAA,SAAA0Q,EAAAhR,GAAA4rP,EAAAntP,KAAAuS,EAAAhR,MACAw9N,EAAA4oB,EAAA9uN,aAAA8uN,GACA5wO,KAAA,IAAAm3O,GACAn3O,KAAA,IAAAs3O,GAEAl5K,EAAAm+I,EAAAiM,OAAAjxI,UAAA,QAAAt5E,EAAA25O,iBACAt+O,KAAAqqO,IACA3b,EAAA5pJ,EAAAt8C,aAAAs8C,GACAp+D,KAAA,QAAA,SAAAxE,GAAA,MAAAy7O,GAAAz7O,KACAwE,KAAA,SAAA,SAAAxE,GAAA,MAAA2iE,GAAA3iE,KACAwE,KAAA,IAAAo3O,GACAp3O,KAAA,IAAAu3O,GAEAI,EAAAp7B,EAAAiM,OAAAjxI,UAAA,QAAAt5E,EAAA45O,gBACAv+O,KAAAqqO,IACA3b,EAAA2vB,EAAA71N,aAAA61N,GACArqP,MAAA,SAAAivN,EAAAllG,OACAr3G,KAAA,KAAAw3O,GACAx3O,KAAA,KAAA03O,GACA13O,KAAA,KAAAy3O,GACAz3O,KAAA,KAAA03O,GAEAj8K,IACAusJ,EAAAvsJ,EAAA35C,aAAA25C,GACAz7D,KAAA,SAAAu8M,EAAAkM,kBAAA,IACAzoN,KAAA,QAAApN,GAAAud,EAAA,GAAA,IAIAosM,EAAAiM,OAAAjxI,UAAA,IAAAt5E,EAAA8oO,YACAjyC,QAAA72L,EAAAy3O,iBAAA,SAAAl6O,GAAA,OAAA+gN,EAAAsO,eAAArvN,KAGA+gN,EAAAg5B,sBAAA3iP,GACA2pN,EAAAi5B,uBAAAwB,GACAz6B,EAAA+4B,iBAAAnlO,GAEAosM,EAAAoJ,cACApJ,EAAAqJ,eACArJ,EAAAsK,gBAEAtK,EAAA8T,aAAAD,EAAArF,GACAxO,EAAA44B,mBAAA,GAGAp1B,EAAAmH,UAAA,WACA,GAAA3K,GAAAtzN,IACAszN,GAAAh2L,MAAAg2L,EAAAvyG,IAAAj9F,OAAA,QACAzjB,KAAAizN,EAAAtgM,OAAAghN,YACAj9N,KAAA,QAAAu8M,EAAAt+M,MAAAsoB,QAEAw5L,EAAA8O,YAAA,WACA,GAAAtS,GAAAtzN,IACAszN,GAAAh2L,MACAvmB,KAAA,IAAAu8M,EAAAw7B,UAAAj9N,KAAAyhM,IACAv8M,KAAA,IAAAu8M,EAAAy7B,UAAAl9N,KAAAyhM,KAEAwD,EAAAg4B,UAAA,WACA,GAAAz8O,GAAAihN,EAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OAAA3N,EAAA2N,EAAAkhN,gBAAA,MAQA,OANA7hO,GADAgT,EAAA7U,QAAA,UAAA,EACA8iN,EAAA6M,aAAA7M,EAAAu0B,YAAAv0B,EAAAh2L,MAAA0b,OAAA1yC,YAAAgtN,EAAAt+M,MAAAsoB,MAAAg2L,EAAAh2L,MAAA0b,QAAAvvC,MAAAupB,EAAAihN,cAAAp3M,MACAxX,EAAA7U,QAAA,WAAA,GACA8iN,EAAA6M,aAAA7M,EAAAu0B,YAAAv0B,EAAAh2L,MAAA0b,OAAA1yC,YAAAgtN,EAAAt+M,MAAAsoB,MAAAg2L,EAAAh2L,MAAA0b,QAAAvvC,OAAA,EAEAupB,EAAAihN,cAAAvtN,MAIAowM,EAAAi4B,UAAA,WACA,GAAAz7B,GAAAtzN,IACA,OAAAszN,GAAAtgM,OAAAihN,cAAAn+N,IAAAw9M,EAAAu0B,YAAAv0B,EAAAh2L,MAAA0b,OAAA1yC,YAAAgtN,EAAAt+M,MAAAsoB,MAAAg2L,EAAAh2L,MAAA0b,QAAAttC,QAEAorN,EAAAspB,gBAAA,WACA,GAAA9sB,GAAAtzN,IACA,OAAAszN,GAAAy7B,YAAAz7B,EAAAtgM,OAAAihN,cAAA31M,QAOAkpK,EAAA2rB,EAAAe,GAEAA,EAAAtpN,UAAAC,KAAA,WAEA,GAAAyoN,GAAAtzN,KAAAu1B,MAAAvC,EAAAsgM,EAAAtgM,OAAA0oM,EAAApI,EAAAoI,IACApI,GAAAW,KAAA5hN,EAAAqpN,EAAA53M,OAAA,KACA/M,KAAA,QAAA/B,EAAA2pE,KAAA,IAAA3pE,EAAAo/M,OACAr9M,KAAA,YAAAu8M,EAAAiF,kBACAxhN,KAAA,YAAAu8M,EAAAuK,aAAA,MACAx5N,MAAA,aAAA2uB,EAAA8nM,YAAA,UAAA,UACAxH,EAAAW,KAAA5hN,EAAAyR,OAAA,QACA/M,KAAA,QAAA/B,EAAAg6O,YACAj4O,KAAA,YAAAic,EAAA4mM,aAAA,cAAA,IACAv1N,MAAA,cAAArE,KAAAivP,wBAAAp9N,KAAA7xB,OACAszN,EAAAW,KAAA//M,EAAAwnN,EAAA53M,OAAA,KACA/M,KAAA,QAAA/B,EAAA2pE,KAAA,IAAA3pE,EAAAs/M,OACAv9M,KAAA,YAAAic,EAAA8mM,aAAA,GAAAxG,EAAAkF,kBACAzhN,KAAA,YAAAu8M,EAAAuK,aAAA,MACAx5N,MAAA,aAAA2uB,EAAA87M,YAAA,UAAA,UACAxb,EAAAW,KAAA//M,EAAA4P,OAAA,QACA/M,KAAA,QAAA/B,EAAAk6O,YACAn4O,KAAA,YAAAic,EAAA4mM,aAAA,GAAA,eACAv1N,MAAA,cAAArE,KAAAmvP,wBAAAt9N,KAAA7xB,OAEAszN,EAAAW,KAAAv9F,GAAAglG,EAAA53M,OAAA,KACA/M,KAAA,QAAA/B,EAAA2pE,KAAA,IAAA3pE,EAAA6zN,QAEA9xN,KAAA,YAAAu8M,EAAAuK,aAAA,OACAx5N,MAAA,aAAA2uB,EAAA28M,aAAA,UAAA,UACArc,EAAAW,KAAAv9F,GAAA5yG,OAAA,QACA/M,KAAA,QAAA/B,EAAAo6O,aACAr4O,KAAA,YAAAic,EAAA4mM,aAAA,GAAA,eACAv1N,MAAA,cAAArE,KAAAqvP,yBAAAx9N,KAAA7xB,QAEAk0N,EAAAtpN,UAAA+qO,SAAA,SAAA59D,EAAAi4C,EAAAzvB,EAAA2uB,EAAAuH,EAAAxB,EAAAq6B,GACA,GAAAh8B,GAAAtzN,KAAAu1B,MAAAvC,EAAAsgM,EAAAtgM,OACAu8N,GACA56B,WAAArB,EAAAuQ,gBACApN,cAAAA,EACAJ,cAAArjM,EAAAu7M,sBACAjY,UAAAtjM,EAAAw7M,kBACAjY,eAAA+4B,EAAA,EAAAt8N,EAAAq7M,mBACApZ,kBAAAA,GAEAt2I,EAAAw1I,EAAAb,EAAA7kD,GAAA8gF,GAAAx3E,MAAAA,GAAAi4C,OAAAA,EAeA,OAbAsD,GAAAgU,gBAAApY,GAAA,kBAAAA,KACAA,EAAAA,EAAAtmN,IAAA,SAAAkI,GAAA,MAAAwiN,GAAAiV,UAAAz3N,MAIA6tE,EAAA4hH,WAAAA,GAAA2uB,WAAAA,GACAoE,EAAAuQ,kBACAllJ,EAAAk3I,aAAA7iM,EAAAi7M,sBACA1jL,EAAAv3B,EAAA6xM,uBACA7xM,EAAA6xM,qBAAA,IAIAlmJ,GAEAu1I,EAAAtpN,UAAAo5N,sBAAA,SAAAtkM,EAAAi/C,GACA,GAAAuwI,GAAAoE,EAAAtzN,KAAAu1B,MAAAvC,EAAAsgM,EAAAtgM,MAUA,QATAA,EAAAo7M,iBAAAp7M,EAAAm7M,qBACAjf,EAAAlvN,KAAAwkO,mBAAAlR,EAAAmnB,qBAAA/6M,GAAA1M,EAAAm7M,kBAAA7a,EAAAgU,iBAEA3oJ,EACAA,EAAAuwI,WAAAA,IAEAoE,EAAA2Q,MAAA/U,WAAAA,GACAoE,EAAA4Q,SAAAhV,WAAAA,IAEAA,GAEAgF,EAAAtpN,UAAAgrO,SAAA,SAAA79D,EAAAi4C,EAAAzvB,EAAA2uB,EAAAuH,EAAAxB,EAAAq6B,GACA,GAAAh8B,GAAAtzN,KAAAu1B,MAAAvC,EAAAsgM,EAAAtgM,OACAu8N,GACA94B,cAAAA,EACAxB,kBAAAA,EACAsB,eAAA+4B,EAAA,EAAAt8N,EAAAs8M,oBAEA3wJ,EAAAw1I,EAAAb,EAAA7kD,GAAA8gF,GAAAx3E,MAAAA,GAAAi4C,OAAAA,GAAAzvB,WAAAA,EAMA,OALA+yB,GAAAsU,gBACAjpJ,EAAA0hH,MAAAizB,EAAA7kD,GAAA97H,KAAA3f,EAAAu8M,wBAAAv8M,EAAAw8M,2BAEA7wJ,EAAAuwI,WAAAA,GAEAvwI,GAEAu1I,EAAAtpN,UAAAgqO,MAAA,SAAAriO,GACA,GAAAygB,GAAAhzB,KAAAu1B,MAAAvC,MACA,OAAAzgB,KAAAygB,GAAAi5M,UAAAj5M,EAAAi5M,UAAA15N,GAAA,KAEA2hN,EAAAtpN,UAAAwqO,mBAAA,WACA,GAAA9hB,GAAAtzN,KAAAu1B,MAAAvC,EAAAsgM,EAAAtgM,OACA+Y,EAAAunL,EAAAgU,eAAAhU,EAAAgG,sBAAAhG,EAAAuQ,gBAAAvQ,EAAAyqB,aAAA,SAAAjtO,GAAA,MAAAA,GAAA,EAAAA,EAAAulB,QAAA,GAAAvlB,EAUA,OATAkiB,GAAAk7M,qBACA/sO,EAAA6xB,EAAAk7M,oBACAniM,EAAA/Y,EAAAk7M,mBACA5a,EAAAgU,iBACAv7L,EAAA,SAAAf,GACA,MAAAA,GAAAsoL,EAAA8F,eAAApmM,EAAAk7M,oBAAAljM,GAAA,MAIA7pC,EAAA4qC,GAAA,SAAAj7B,GAAA,MAAAi7B,GAAA1qC,KAAAiyN,EAAAxiN,IAAAi7B,GAEAmoL,EAAAtpN,UAAA4kP,cAAA,SAAAtgC,EAAAvwI,GACA,MAAAuwI,GAAAA,EAAAvwI,EAAAA,EAAAuwI,aAAAh5L,QAEAg+L,EAAAtpN,UAAA0qO,mBAAA,WACA,MAAAt1O,MAAAwvP,cAAAxvP,KAAAu1B,MAAAvC,OAAA+wM,mBAAA/jO,KAAAu1B,MAAA0uM,QAEA/P,EAAAtpN,UAAA4qO,mBAAA,WACA,MAAAx1O,MAAAwvP,cAAAxvP,KAAAu1B,MAAAvC,OAAAqxM,mBAAArkO,KAAAu1B,MAAAgvM,QAEArQ,EAAAtpN,UAAA8qO,oBAAA,WACA,MAAA11O,MAAAwvP,cAAAxvP,KAAAu1B,MAAAvC,OAAAyxM,oBAAAzkO,KAAAu1B,MAAAovM,SAEAzQ,EAAAtpN,UAAA6kP,uBAAA,SAAAlZ,GACA,GAAAv4N,GAAAs1M,EAAAtzN,KAAAu1B,MAAAvC,EAAAsgM,EAAAtgM,MAQA,OAPA,MAAAujN,EACAv4N,EAAAgV,EAAAm8M,aACA,OAAAoH,EACAv4N,EAAAgV,EAAAg9M,cACA,MAAAuG,IACAv4N,EAAAgV,EAAA67M,cAEA7wN,GAEAk2M,EAAAtpN,UAAA8kP,aAAA,SAAAnZ,GACA,GAAAv4N,GAAAhe,KAAAyvP,uBAAAlZ,EACA,OAAA7/L,GAAA14B,GAAAA,EAAAA,EAAAA,EAAA3d,KAAA,MAEA6zN,EAAAtpN,UAAA+kP,aAAA,SAAApZ,EAAAl2O,GACA,GAAAizN,GAAAtzN,KAAAu1B,MAAAvC,EAAAsgM,EAAAtgM,OACAhV,EAAAhe,KAAAyvP,uBAAAlZ,EACA7/L,GAAA14B,GACA,MAAAu4N,EACAvjN,EAAAm8M,aAAA9uO,EACA,OAAAk2O,EACAvjN,EAAAg9M,cAAA3vO,EACA,MAAAk2O,IACAvjN,EAAA67M,aAAAxuO,GAEA2d,IACAA,EAAA3d,KAAAA,IAGA6zN,EAAAtpN,UAAAglP,iBAAA,SAAArZ,EAAAsZ,GACA,GAAA7xO,GAAAhe,KAAAyvP,uBAAAlZ,GACAlxN,EAAArH,GAAA,gBAAAA,IAAAA,EAAAqH,SAAArH,EAAAqH,SAAAwqO,CACA,QACAtO,QAAAl8N,EAAA7U,QAAA,UAAA,EACAiwO,QAAAp7N,EAAA7U,QAAA,UAAA,EACAs/O,OAAAzqO,EAAA7U,QAAA,SAAA,EACAu/O,SAAA1qO,EAAA7U,QAAA,WAAA,EACAw/O,QAAA3qO,EAAA7U,QAAA,UAAA,EACAy/O,MAAA5qO,EAAA7U,QAAA,QAAA,EACA0/O,SAAA7qO,EAAA7U,QAAA,WAAA,EACA2/O,SAAA9qO,EAAA7U,QAAA,WAAA,IAGA0jN,EAAAtpN,UAAAwlP,sBAAA,WACA,MAAApwP,MAAA4vP,iBAAA,IAAA5vP,KAAAu1B,MAAAvC,OAAA4mM,aAAA,YAAA,gBAEA1F,EAAAtpN,UAAA41O,sBAAA,WACA,MAAAxgP,MAAA4vP,iBAAA,IAAA5vP,KAAAu1B,MAAAvC,OAAA4mM,aAAA,cAAA,cAEA1F,EAAAtpN,UAAAg2O,uBAAA,WACA,MAAA5gP,MAAA4vP,iBAAA,KAAA5vP,KAAAu1B,MAAAvC,OAAA4mM,aAAA,cAAA,cAEA1F,EAAAtpN,UAAAy2O,qBAAA,SAAA9uO,GACA,MAAA,OAAAA,EAAAvS,KAAA4gP,yBAAA,MAAAruO,EAAAvS,KAAAwgP,wBAAAxgP,KAAAowP,yBAEAl8B,EAAAtpN,UAAAylP,kBAAA,WACA,MAAArwP,MAAA0vP,aAAA,MAEAx7B,EAAAtpN,UAAA0lP,kBAAA,WACA,MAAAtwP,MAAA0vP,aAAA,MAEAx7B,EAAAtpN,UAAA2lP,mBAAA,WACA,MAAAvwP,MAAA0vP,aAAA,OAEAx7B,EAAAtpN,UAAA4lP,cAAA,SAAAC,EAAAprO,GACA,GAAAiuM,GAAAtzN,KAAAu1B,KACA,OAAAk7N,GACAprO,EAAAyqO,OAAA,EAAAzqO,EAAA0qO,SAAAz8B,EAAA7pN,MAAA,EAAA6pN,EAAA7pN,MAEA4b,EAAA8qO,UAAA78B,EAAA5nN,OAAA2Z,EAAA6qO,UAAA58B,EAAA5nN,OAAA,EAAA;EAGAwoN,EAAAtpN,UAAA8lP,eAAA,SAAAD,EAAAprO,GACA,MAAAorO,GACAprO,EAAAyqO,OAAA,QAAAzqO,EAAA2qO,QAAA,SAAA,IAEA3qO,EAAA4qO,MAAA,SAAA5qO,EAAA8qO,SAAA,QAAA,KAGAj8B,EAAAtpN,UAAA+lP,uBAAA,SAAAF,EAAAprO,GACA,MAAAorO,GACAprO,EAAAyqO,OAAA,QAAAzqO,EAAA0qO,SAAA,SAAA,MAEA1qO,EAAA8qO,SAAA,QAAA9qO,EAAA6qO,SAAA,SAAA,OAGAh8B,EAAAtpN,UAAAgmP,eAAA,WACA,MAAA5wP,MAAAwwP,eAAAxwP,KAAAu1B,MAAAvC,OAAA4mM,aAAA55N,KAAAowP,0BAEAl8B,EAAAtpN,UAAAimP,eAAA,WACA,MAAA7wP,MAAAwwP,cAAAxwP,KAAAu1B,MAAAvC,OAAA4mM,aAAA55N,KAAAwgP,0BAEAtsB,EAAAtpN,UAAAkmP,gBAAA,WACA,MAAA9wP,MAAAwwP,cAAAxwP,KAAAu1B,MAAAvC,OAAA4mM,aAAA55N,KAAA4gP,2BAEA1sB,EAAAtpN,UAAAmmP,gBAAA,WACA,MAAA/wP,MAAA0wP,gBAAA1wP,KAAAu1B,MAAAvC,OAAA4mM,aAAA55N,KAAAowP,0BAEAl8B,EAAAtpN,UAAAomP,gBAAA,WACA,MAAAhxP,MAAA0wP,eAAA1wP,KAAAu1B,MAAAvC,OAAA4mM,aAAA55N,KAAAwgP,0BAEAtsB,EAAAtpN,UAAAqmP,iBAAA,WACA,MAAAjxP,MAAA0wP,eAAA1wP,KAAAu1B,MAAAvC,OAAA4mM,aAAA55N,KAAA4gP,2BAEA1sB,EAAAtpN,UAAAsmP,gBAAA,WACA,GAAA59B,GAAAtzN,KAAAu1B,MAAAvC,EAAAsgM,EAAAtgM,OACA3N,EAAArlB,KAAAowP,uBACA,OAAAp9N,GAAA4mM,aACAv0M,EAAAk8N,QAAA,SAAA,GAAAvhP,KAAAshP,gBAAA,KAEAj8N,EAAAk8N,QAAA,SAAAvuN,EAAA47M,cAAA57M,EAAA47M,cAAA,GAAA,OAGA1a,EAAAtpN,UAAAumP,gBAAA,WACA,GAAA79B,GAAAtzN,KAAAu1B,MACAlQ,EAAArlB,KAAAwgP,uBACA,OAAAltB,GAAAtgM,OAAA4mM,aACAv0M,EAAAk8N,QAAA,SAAA,MAEAl8N,EAAAk8N,QAAA,SAAA,IAAAjuB,EAAAtgM,OAAA8mM,aAAA,EAAA95N,KAAAshP,gBAAA,KAAA,KAGAptB,EAAAtpN,UAAAwmP,iBAAA,WACA,GAAA99B,GAAAtzN,KAAAu1B,MACAlQ,EAAArlB,KAAA4gP,wBACA,OAAAttB,GAAAtgM,OAAA4mM,aACAv0M,EAAAk8N,QAAA,QAAA,SAEAl8N,EAAAk8N,QAAA,SAAA,IAAAjuB,EAAAtgM,OAAAgnM,cAAA,EAAAh6N,KAAAshP,gBAAA,MAAA,KAGAptB,EAAAtpN,UAAAqkP,wBAAA,WACA,GAAA37B,GAAAtzN,KAAAu1B,KACA,OAAAv1B,MAAA2wP,wBAAAr9B,EAAAtgM,OAAA4mM,aAAA55N,KAAAowP,0BAEAl8B,EAAAtpN,UAAAukP,wBAAA,WACA,GAAA77B,GAAAtzN,KAAAu1B,KACA,OAAAv1B,MAAA2wP,uBAAAr9B,EAAAtgM,OAAA4mM,aAAA55N,KAAAwgP,0BAEAtsB,EAAAtpN,UAAAykP,yBAAA,WACA,GAAA/7B,GAAAtzN,KAAAu1B,KACA,OAAAv1B,MAAA2wP,uBAAAr9B,EAAAtgM,OAAA4mM,aAAA55N,KAAA4gP,2BAEA1sB,EAAAtpN,UAAA02O,gBAAA,SAAA/uO,EAAA8tO,GACA,GACA7c,GAAAzrD,EAAAp5F,EAAAmpK,EAAA/mI,EADAuyG,EAAAtzN,KAAAu1B,MAAAvC,EAAAsgM,EAAAtgM,OACArpB,EAAA,CACA,OAAA02O,IAAA/sB,EAAAqH,qBAAApoN,GACA+gN,EAAAqH,qBAAApoN,IAEA+gN,EAAAvyG,MACAyiH,EAAAlQ,EAAAmQ,oBAAAnQ,EAAAjjN,KAAAqvB,SACA,MAAAntB,GACAwlK,EAAAu7C,EAAAp/M,EAAA44D,OAAAwyH,OAAAg0B,EAAAuJ,WAAA2G,EAAA,MACA7kJ,EAAA3+E,KAAA41O,SAAA79D,EAAAu7C,EAAAuG,QAAA7mM,EAAAo8M,mBAAA9b,EAAAiiB,iBAAA,GAAA,GAAA,IACA,OAAAhjO,GACAwlK,EAAAu7C,EAAA58F,GAAA5pD,OAAAwyH,OAAAg0B,EAAAuJ,WAAA2G,EAAA,OACA7kJ,EAAA3+E,KAAA41O,SAAA79D,EAAAu7C,EAAAyG,SAAA/mM,EAAAi9M,oBAAA3c,EAAAmiB,kBAAA,GAAA,GAAA,KAEA19D,EAAAu7C,EAAAjhN,EAAAy6D,OAAAwyH,OAAAg0B,EAAAsJ,WAAA4G,IACA7kJ,EAAA3+E,KAAA21O,SAAA59D,EAAAu7C,EAAAqG,QAAArG,EAAA6hB,gBAAA7hB,EAAA+hB,iBAAA,GAAA,GAAA,GACAr1O,KAAAgkO,sBAAAR,EAAA7kJ,IAEAmpK,EAAAx0B,EAAA7kD,GAAAv0J,OAAA,QAAA4J,OAAA,OAAA+nL,QAAA,MAAA,GACA9qF,EAAA+mI,EAAAhkO,OAAA,OAAAzf,MAAA,aAAA,UAAAA,MAAA,WAAA,SAAAA,MAAA,MAAA,GAAAA,MAAA,OAAA,GACA08G,EAAAj9F,OAAA,KAAAziB,KAAAs9E,GAAA98E,KAAA,WACAyxN,EAAA7kD,GAAAv0J,OAAAla,MAAAsuF,UAAA,QAAAzsF,KAAA,WACA,GAAAwqC,GAAArsC,KAAAymB,uBACA9c,GAAA0iC,EAAA5iC,QAAAE,EAAA0iC,EAAA5iC,SAEAq+O,EAAAl7O,YAGA0mN,EAAAqH,qBAAApoN,GAAA5I,GAAA,EAAA2pN,EAAAqH,qBAAApoN,GAAA5I,EACA2pN,EAAAqH,qBAAApoN,KAGA2hN,EAAAtpN,UAAAg6N,aAAA,SAAA7F,GACA,GAAAzL,GAAAtzN,KAAAu1B,MACAy5N,EAAA17B,EAAAoI,KAAAxhN,OAAA,IAAAlF,EAAAo/M,MAAA,KAAAp/M,EAAAg6O,YACAE,EAAA57B,EAAAoI,KAAAxhN,OAAA,IAAAlF,EAAAs/M,MAAA,KAAAt/M,EAAAk6O,YACAE,EAAA97B,EAAAoI,KAAAxhN,OAAA,IAAAlF,EAAA6zN,OAAA,KAAA7zN,EAAAo6O,cACArwB,EAAAiwB,EAAAn2N,aAAAm2N,GACAj4O,KAAA,IAAA/W,KAAA4wP,eAAA/+N,KAAA7xB,OACA+W,KAAA,KAAA/W,KAAA+wP,gBAAAl/N,KAAA7xB,OACA+W,KAAA,KAAA/W,KAAAkxP,gBAAAr/N,KAAA7xB,OACAK,KAAAL,KAAAqwP,kBAAAx+N,KAAA7xB,QACA++N,EAAAmwB,EAAAr2N,aAAAq2N,GACAn4O,KAAA,IAAA/W,KAAA6wP,eAAAh/N,KAAA7xB,OACA+W,KAAA,KAAA/W,KAAAgxP,gBAAAn/N,KAAA7xB,OACA+W,KAAA,KAAA/W,KAAAmxP,gBAAAt/N,KAAA7xB,OACAK,KAAAL,KAAAswP,kBAAAz+N,KAAA7xB,QACA++N,EAAAqwB,EAAAv2N,aAAAu2N,GACAr4O,KAAA,IAAA/W,KAAA8wP,gBAAAj/N,KAAA7xB,OACA+W,KAAA,KAAA/W,KAAAixP,iBAAAp/N,KAAA7xB,OACA+W,KAAA,KAAA/W,KAAAoxP,iBAAAv/N,KAAA7xB,OACAK,KAAAL,KAAAuwP,mBAAA1+N,KAAA7xB,QAEAk0N,EAAAtpN,UAAA8sO,WAAA,SAAA9wN,EAAArE,EAAAna,EAAAquO,GACA,GAAAx2O,GAAA,gBAAA2mB,GAAAA,EAAAA,EAAArE,EACA,OAAA4lN,GAAAloO,GAGA,UAAA2mB,EAAAtiB,KACAsiB,EAAArE,GAAAk0N,EAGAz2O,KAAAy3O,2BAAAx3O,EAAAw2O,GANAruO,GAQA8rN,EAAAtpN,UAAA6sO,2BAAA,SAAAn4J,EAAAm3J,GACA,GAAAnjB,GAAAtzN,KAAAu1B,MACA50B,EAAA2yN,EAAAtgM,OAAA4mM,aAAAtG,EAAA7pN,MAAA6pN,EAAA5nN,MACA,OAAA+qO,IAAAn3J,EAAA3+E,IAEAuzN,EAAAtpN,UAAA45N,mBAAA,SAAA/mL,EAAA4zM,EAAAC,GACA,GAAAC,GAAAhtP,EAAAC,EAAAsvC,EAAA1oC,EAAA7J,EAAAiwP,EAAAtiC,EAAAzxK,CACA,IAAA4zM,EAGA,GAFAE,EAAApwP,EAAAkwP,GAAAA,IAAAA,EAEA,IAAAE,EACAriC,GAAAzxK,EAAA,QACA,IAAA,IAAA8zM,EACAriC,GAAAzxK,EAAA,GAAAA,EAAAA,EAAA98C,OAAA,QACA,IAAA4wP,EAAA,EAAA,CAOA,IANAz9M,EAAAy9M,EAAA,EACAhtP,EAAAk5C,EAAA,GACAj5C,EAAAi5C,EAAAA,EAAA98C,OAAA,GACAyK,GAAA5G,EAAAD,IAAAuvC,EAAA,GAEAo7K,GAAA3qN,GACAhD,EAAA,EAAAA,EAAAuyC,EAAAvyC,IACAiwP,GAAAjtP,EAAA6G,GAAA7J,EAAA,GACA2tN,EAAA3oN,KAAA+qP,EAAA,GAAAr/O,MAAAu/O,GAAAA,EAEAtiC,GAAA3oN,KAAA/B,GAIA,MADA8sP,KAAApiC,EAAAA,EAAA59M,KAAA,SAAA7R,EAAAC,GAAA,MAAAD,GAAAC,KACAwvN,GAEAgF,EAAAtpN,UAAA+4N,oBAAA,SAAAp2N,GACA,GAAA+lN,GAAAtzN,KAAAu1B,MAAA0+L,EAAAX,EAAAW,IACA,QACAG,MAAA7mN,EAAA0mN,EAAA5hN,EAAAwmB,aAAAtrB,SAAAA,GAAA0mN,EAAA5hN,EACAiiN,MAAA/mN,EAAA0mN,EAAA//M,EAAA2kB,aAAAtrB,SAAAA,GAAA0mN,EAAA//M,EACA20N,OAAAt7N,EAAA0mN,EAAAv9F,GAAA79F,aAAAtrB,SAAAA,GAAA0mN,EAAAv9F,GACA+6H,SAAAlkP,EAAA0mN,EAAAiH,KAAAriM,aAAAtrB,SAAAA,GAAA0mN,EAAAiH,OAGAhH,EAAAtpN,UAAAkmN,OAAA,SAAAgR,EAAA4vB,GACA,GAAAp+B,GAAAtzN,KAAAu1B,KACA+9L,GAAAW,KAAA5hN,EAAAhO,MAAA,UAAAqtP,EAAA,EAAA,GACAp+B,EAAAW,KAAA//M,EAAA7P,MAAA,UAAAqtP,EAAA,EAAA,GACAp+B,EAAAW,KAAAv9F,GAAAryH,MAAA,UAAAqtP,EAAA,EAAA,GACAp+B,EAAAW,KAAAiH,KAAA72N,MAAA,UAAAqtP,EAAA,EAAA,GACA5vB,EAAA1N,MAAA/yN,KAAAiyN,EAAA2Q,OACAnC,EAAAxN,MAAAjzN,KAAAiyN,EAAAiR,OACAzC,EAAA+G,OAAAxnO,KAAAiyN,EAAAqR,QACA7C,EAAA2vB,SAAApwP,KAAAiyN,EAAA4Q,WAGApN,EAAAwB,YAAA,SAAA/lN,GACA,GAAAo/O,GAAA5xP,EAAA+oC,UAAA8oN,WAAA3wP,cAAAuP,QAAA,YAAA,CACA,OAAA,QAAAmhP,EAAA,GAAA9xP,SAAAgyP,IAAA3hP,MAAA,KAAA,IAAA,IAAAqC,EAAA,KAEAukN,EAAAyG,WAAA,SAAAzkN,EAAAvG,GACA,MAAAuG,GAAAgL,OAAA,YAAA/M,KAAA,KAAAxE,GAAAuR,OAAA,SAEAgzM,EAAAg7B,aAAA,SAAArB,GAEA,GAAA/pO,GAAAtc,KAAAC,IAAA,GAAArK,KAAA2mB,OAAAD,KACA,OAAA+pO,KAAA,EAAA/pO,KAAAA,EAAA,IAEAowM,EAAAi7B,aAAA,SAAAtB,GACA,MAAAA,IAAA,IAAAzwP,KAAA2mB,OAAA7Q,KAEAghN,EAAAmS,cAAA,WACA,GAAA3V,GAAAtzN,IACA,OAAAszN,GAAAw+B,cAAAx+B,EAAAtgM,OAAA4mM,eAEA9C,EAAAoS,cAAA,WACA,GAAA5V,GAAAtzN,IACA,OAAAszN,GAAAy+B,cAAAz+B,EAAAtgM,OAAA4mM,eAEA9C,EAAAuS,cAAA,WACA,GAAA/V,GAAAtzN,IACA,OAAAszN,GAAAtgM,OAAA8mM,cAAA,EAAAxG,EAAAw+B,aAAAx+B,EAAAtgM,OAAA4mM,eAEA9C,EAAAwS,cAAA,WACA,GAAAhW,GAAAtzN,IACA,OAAAszN,GAAAy+B,aAAAz+B,EAAAtgM,OAAA4mM,eAEA9C,EAAAk7B,iBAAA,SAAAvB,GACA,GAAAn9B,GAAAtzN,KACA0mB,EAAAtc,KAAAC,IAAA,GAAAipN,EAAA3sM,OAAAD,MACAmW,EAAAzyB,KAAAC,IAAA,GAAAipN,EAAA3sM,OAAAkW,MAEA,OAAA4zN,GAAAn9B,EAAA7pN,MAAA,EAAAid,EAAAmW,EAAAy2L,EAAA3sM,OAAAD,KAAA,IAEAowM,EAAAm7B,kBAAA,SAAAxB,GAEA,OAAAA,EAAAzwP,KAAA2mB,OAAA2X,OAAAt+B,KAAA2mB,OAAA7Q,IAAA9V,KAAA0L,QAAA,IAEAorN,EAAAqS,kBAAA,WACA,GAAA7V,GAAAtzN,IACA,OAAAszN,GAAA0+B,kBAAA1+B,EAAAtgM,OAAA4mM,eAEA9C,EAAAsS,mBAAA,WACA,GAAA9V,GAAAtzN,IACA,OAAAszN,GAAA2+B,mBAAA3+B,EAAAtgM,OAAA4mM,eAEA9C,EAAAyS,kBAAA,WACA,GAAAjW,GAAAtzN,IACA,OAAAszN,GAAA0+B,iBAAA1+B,EAAAtgM,OAAA4mM,eAAAtG,EAAAtgM,OAAA8mM,aAAA,GAAA,IAEAhD,EAAA0S,mBAAA,WACA,GAAAlW,GAAAtzN,IACA,OAAAszN,GAAA2+B,kBAAA3+B,EAAAtgM,OAAA4mM,eAGA9C,EAAA6E,QAAA,WACA,GAAArI,GAAAtzN,KAAAyuK,EAAA6kD,EAAA7kD,GAAAz7I,EAAAsgM,EAAAtgM,MACAsgM,GAAAnxG,IAAAssD,EAAA62C,OAAAnjG,MAAA7uG,MAAA,SAAApT,GACA,MAAAA,GAAAu9C,OAAAk/I,OAAA,SAAAl9L,EAAAC,GAAA,MAAAD,GAAAC,EAAA4T,OAAA,KAEA0f,EAAAq5M,YACA/Y,EAAAnxG,IAAA7wG,KAAA,OAIAwlN,EAAAsK,aAAA,WACA,GAAA9N,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OACAtyB,EAAAsyB,EAAAq/M,aAAAr/M,EAAA4/M,WACAtf,GAAA+N,eAAAj3N,KAAAkvD,IAAAg6J,EAAA0N,SAAA1N,EAAA2N,WAAA,EACA3N,EAAAl+F,OAAA,IAAAk+F,EAAA+N,eACA/N,EAAA4+B,iBAAAxxP,GAAA4yN,EAAAl+F,OAAA10H,GAAA4yN,EAAAl+F,OAAA,GACAk+F,EAAA1wB,YAAA0wB,EAAAkJ,QAAA,UAAAlJ,EAAAkJ,QAAA,SAAAlJ,EAAAl+F,OAAAk+F,EAAA4+B,iBAAA,GAGAp7B,EAAA+e,UAAA,WACA,GAAAviB,GAAAtzN,IACAszN,GAAA6+B,OAAA7+B,EAAA8+B,YACA9+B,EAAA++B,eAAA/+B,EAAAg/B,oBACAh/B,EAAAi/B,kBAAAj/B,EAAAg/B,kBAAA,MAGAx7B,EAAA07B,YAAA,SAAAtyP,GACA,GAEAuyP,GAAAC,EAAAC,EAAAC,EAFAt/B,EAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OACA4uC,GAAA,EAAAhnD,EAAA,CAGA,OAAAoY,IAIAsgM,EAAAnxG,IAAAmxG,EAAAmQ,oBAAAnQ,EAAAjjN,KAAAqvB,UAAAg5G,QAAA,SAAA9nI,GACAgxD,GAAAhxD,EAAAP,KAAAkC,KAAArS,EAAAmQ,KAAAkC,KACAqvD,GAAA,EACA1hE,EAAA0Q,EACA1Q,EAAA0a,MAAAA,GAEAA,MAEA/I,MAAA3R,EAAA02H,cACA12H,EAAA02H,WAAA,GAEA/kH,MAAA3R,EAAA22H,YACA32H,EAAA22H,SAAA32H,EAAA02H,YAEA08F,EAAAu1B,YAAA3oP,EAAAmQ,QACAoiP,EAAAz/N,EAAAi/M,UACAygB,EAAA1/N,EAAAk/M,UACAygB,EAAAvoP,KAAAod,IAAAwL,EAAAkuM,iBAAA,EAAA,IAAAwxB,EAAAD,GACAG,EAAA1yP,EAAAoT,MAAAm/O,EAAA,EAAAvyP,EAAAoT,MAAAo/O,EAAAxyP,EAAAoT,MAAAm/O,EAAAC,EAAAD,EACAvyP,EAAA02H,WAAA5jG,EAAAm/M,oBACAjyO,EAAA22H,SAAA32H,EAAA02H,WAAA+7H,EAAAC,GAEAhxL,EAAA1hE,EAAA,MAzBA,MA4BA42N,EAAAs7B,UAAA,WACA,GAAA9+B,GAAAtzN,KACAm4H,EAAAm7F,EAAA7kD,GAAA1tD,IAAAoX,MAAA2qE,YAAAwwB,EAAAl+F,QAAAwtE,YAAA0wB,EAAA1wB,aACAjQ,EAAA,SAAAzyL,EAAAwpP,GACA,GAAAmJ,EACA,OAAAnJ,GAAAvxH,EAAAj4H,IACA2yP,EAAAv/B,EAAAk/B,YAAAtyP,GACA2yP,EAAA16H,EAAA06H,GAAA,SAIA,OADAlgE,GAAAisB,SAAAzmF,EAAAymF,SACAjsB,GAGAmkC,EAAAw7B,kBAAA,SAAAQ,GACA,GAAAx/B,GAAAtzN,KACAm4H,EAAAm7F,EAAA7kD,GAAA1tD,IAAAoX,MAAA2qE,YAAAwwB,EAAA+N,gBAAAyxB,EAAAA,EAAA,IAAAlwD,YAAA0wB,EAAA1wB,YACA,OAAA,UAAA1iM,GACA,GAAA2yP,GAAAv/B,EAAAk/B,YAAAtyP,EACA,OAAA2yP,GAAA16H,EAAA06H,GAAA,UAIA/7B,EAAAi8B,OAAA,SAAA7yP,EAAAwpP,EAAArpM,GACA,MAAAA,IAAArgD,KAAA+oP,UAAA7oP,EAAAmQ,MAAArQ,KAAAmyP,OAAAjyP,EAAAwpP,GAAA,SAIA5yB,EAAAk8B,qBAAA,SAAA9yP,GACA,GACAC,GAAAkS,EAAA6B,EAAArQ,EAAAwiI,EADAitF,EAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OACA6/N,EAAAv/B,EAAAk/B,YAAAtyP,GAAAwtL,EAAA,EAeA,OAdAmlE,KAAAv/B,EAAAkJ,QAAA,WACAr8N,EAAAH,KAAAmyP,OAAAvzC,SAAAi0C,GACAxgP,EAAAR,MAAA1R,EAAA,IAAA,EAAAA,EAAA,GACA+T,EAAArC,MAAA1R,EAAA,IAAA,EAAAA,EAAA,GACA0D,EAAAuG,KAAA64J,KAAA5wJ,EAAAA,EAAA6B,EAAAA,GAEAmyH,EADAitF,EAAAkJ,QAAA,UAAAxpM,EAAA2/M,kBACAxxO,EAAA6xB,EAAA2/M,mBAAA3/M,EAAA2/M,kBAAAzyO,EAAAozN,EAAAl+F,OAAAvxH,GAAAmvB,EAAA2/M,kBACArf,EAAAkJ,QAAA,QAAAxpM,EAAA4+M,gBACAzwO,EAAA6xB,EAAA4+M,iBAAA5+M,EAAA4+M,gBAAA1xO,EAAAozN,EAAAl+F,OAAAvxH,GAAAmvB,EAAA4+M,gBAEAte,EAAAl+F,QAAAvxH,GAAA,GAAAyvN,EAAAl+F,OAAA,KAAA,MAAA,GAAAk+F,EAAAl+F,OAAA,IAAAk+F,EAAAl+F,OAAAvxH,EAAA,EAEA6pL,EAAA,aAAAr7K,EAAAg0H,EAAA,IAAAnyH,EAAAmyH,EAAA,KAEAqnD,GAGAopC,EAAAm8B,YAAA,SAAA/yP,GACA,GAAAozN,GAAAtzN,KACAgzB,EAAAsgM,EAAAtgM,OACAkgO,EAAA9oP,KAAAod,IAAA8rM,EAAAkJ,QAAA,WAAAxpM,EAAAkuM,iBAAA,EAAA,EACA,OAAAhhO,IAAAA,EAAA22H,SAAA32H,EAAA02H,YAAAs8H,EAAA,MAGAp8B,EAAAq8B,iBAAA,SAAAjzP,GACA,MAAAF,MAAAs5O,SACA/mO,GAAArS,EAAAmQ,KAAAkC,GACAe,MAAApT,EAAAoT,MACA+yH,MAAArmI,KAAAizP,YAAA/yP,GACA0a,MAAA1a,EAAA0a,SAIAk8M,EAAAs8B,gBAAA,SAAAlzP,GACA,GACA2yP,GAAAv/O,EAAA+yH,EAAA9zH,EAAAw5B,EADAunL,EAAAtzN,IAEA,OAAAszN,GAAA+/B,sBACAR,EAAAv/B,EAAAk/B,YAAAtyP,GACAoT,EAAAu/O,EAAAA,EAAAv/O,MAAA,KACA+yH,EAAAitF,EAAA2/B,YAAAJ,GACAtgP,EAAArS,EAAAmQ,KAAAkC,GACA+gN,EAAAkJ,QAAA,UAAAlJ,EAAAggC,uBAAAjtH,IACAt6F,EAAAunL,EAAAigC,oBACAxnN,EAAAA,EAAAz4B,EAAA+yH,EAAA9zH,GAAA+gN,EAAAkgC,sBAAAlgP,EAAA+yH,IAFA,IALA,IAUAywF,EAAA28B,UAAA,SAAA/Y,GACA,GAAAtvO,GAAAkoN,EAAAtzN,IAGA,OAAAszN,GAAAwF,gBACA1tN,EAAArL,EAAAu6B,YAAA,WACAg5L,EAAAwF,aACA/4N,EAAAs6B,cAAAjvB,GACAkoN,EAAAiM,OAAAjxI,UAAA,2BAAAp1C,OAAA,GACAo6K,EAAAmgC,UAAA/Y,KAGA,MAIAA,EAAApnB,EAAA+mB,eAAAK,OAEApnB,GAAAvyG,IAAAzyB,UAAAglI,EAAAogC,gBAAAhZ,EAAA,IAAA1lO,EAAA2+O,WAAA9xP,KAAA,SAAA3B,GACAozN,EAAAsgC,aAAA1zP,EAAAmQ,KAAAkC,KACA+gN,EAAA7kD,GAAAv0J,OAAAla,MAAAsuF,UAAA,QACAz1D,aAAAtrB,SAAA+lN,EAAAugC,eAAA3zP,EAAAmQ,KAAAkC,KACAwE,KAAA,IAAAu8M,EAAA++B,gBACAx5N,aAAAtrB,SAAA,EAAA+lN,EAAAugC,eAAA3zP,EAAAmQ,KAAAkC,KACAwE,KAAA,IAAAu8M,EAAAi/B,mBACA1wP,KAAA,SAAA3B,GACAozN,EAAAw1B,YAAA5oP,EAAAmQ,YAOAymN,EAAAg9B,YAAA,SAAApZ,GACA,GAAApnB,GAAAtzN,IAEAszN,GAAAwF,aAEA4hB,EAAApnB,EAAA+mB,eAAAK,GAEApnB,EAAAvyG,IAAAzyB,UAAAglI,EAAAogC,gBAAAhZ,EAAA,IAAA1lO,EAAA2+O,WAAArlK,UAAA,QACAz1D,aAAAtrB,SAAA,SAAArN,GACA,MAAAozN,GAAAugC,eAAA3zP,EAAAmQ,KAAAkC,MAEAwE,KAAA,IAAAu8M,EAAA6+B,QACA7+B,EAAAvyG,IAAAzyB,UAAA,IAAAt5E,EAAAmjH,KACA9zH,MAAA,UAAA,KAGAyyN,EAAA+8B,eAAA,SAAAthP,GACA,GAAA+gN,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,MAEA,OAAAsgM,GAAAw1B,YAAAv2O,GACAygB,EAAA+/M,sBACAzf,EAAAu1B,YAAAt2O,GACAygB,EAAAu/M,sBACAjf,EAAAs1B,UAAAr2O,GACAygB,EAAA8+M,oBAEA,IAKAhb,EAAA88B,aAAA,SAAArhP,GACA,GAAA+gN,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,MACA,OAAAsgM,GAAAw1B,YAAAv2O,IAAAygB,EAAA8/M,cACAxf,EAAAu1B,YAAAt2O,IAAAygB,EAAAs/M,cACAhf,EAAAs1B,UAAAr2O,IAAAygB,EAAA6+M,YAGA/a,EAAAu8B,mBAAA,WACA,GAAA//B,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OAAA+gO,GAAA,CAOA,OANAzgC,GAAAkJ,QAAA,SACAu3B,EAAA/gO,EAAAw/M,iBACAlf,EAAAkJ,QAAA,SACAu3B,EAAA/gO,EAAAy+M,gBAGAsiB,GAGAj9B,EAAAw8B,uBAAA,SAAAjtH,GACA,GAAAitF,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OACAg5L,EAAAsH,EAAAkJ,QAAA,SAAAxpM,EAAA0/M,sBAAA1/M,EAAA2+M,mBACA,OAAAtrG,IAAA2lF,GAGA8K,EAAAy8B,kBAAA,WACA,GAAAjgC,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OACA+Y,EAAA/Y,EAAA0+M,gBAMA,OALApe,GAAAkJ,QAAA,SACAzwL,EAAA/Y,EAAAg/M,mBACA1e,EAAAkJ,QAAA,WACAzwL,EAAA/Y,EAAAy/M,oBAEA1mM,GAGA+qL,EAAAk9B,YAAA,WACA,GAAA1gC,GAAAtzN,IACA,OAAAszN,GAAAkJ,QAAA,SAAAlJ,EAAAtgM,OAAA6/M,YAAA,IAGA/b,EAAA2K,oBAAA,SAAA/hM,GACA,GACAu0N,GAAAC,EADA5gC,EAAAtzN,KAAA07N,EAAApI,EAAAoI,KAEAy4B,EAAA7gC,EAAA6gC,cAAAtiO,KAAAyhM,GACA8gC,EAAA9gC,EAAA8gC,UAAAviO,KAAAyhM,GACAwvB,EAAAxvB,EAAAwvB,WAAAjxN,KAAAyhM,EACA2gC,GAAAv4B,EAAAxhN,OAAA,IAAAlF,EAAA8zN,WAAAx6I,UAAA,IAAAt5E,EAAA2+O,UACAtjP,KAAAijN,EAAAnxG,IAAAziF,IACA3oB,KAAA,QAAA,SAAA7W,GAAA,MAAAi0P,GAAAj0P,GAAA4iP,EAAA5iP,EAAAmQ,QACA6jP,EAAAD,EAAAt2N,QAAA7Z,OAAA,KACA/M,KAAA,QAAAo9O,GACAD,EAAApwO,OAAA,KACA/M,KAAA,QAAAq9O,GACAF,EAAApwO,OAAA,QACA/M,KAAA,KAAAu8M,EAAAkJ,QAAA,SAAA,QAAA,SACAn4N,MAAA,UAAA,GACAA,MAAA,cAAA,UACAA,MAAA,iBAAA,SAKAyyN,EAAAwE,QAAA,WACA,GAAAhI,GAAAtzN,IACAszN,GAAAzL,KAAAyL,EAAAoI,KAAAxhN,OAAA,IAAAlF,EAAAkiN,OAAApzM,OAAA,KACA/M,KAAA,QAAA/B,EAAA8zN,WACA/xN,KAAA,YAAAu8M,EAAAuK,aAAA,QACAvK,EAAAzL,KAAA/jM,OAAA,QACA/M,KAAA,QAAA/B,EAAAq/O,gBACAhwP,MAAA,cAAA,UACAhE,KAAAizN,EAAA0gC,gBAGAl9B,EAAA+O,UAAA,SAAAt4N,EAAAm1N,EAAA1D,GACA,GACAs1B,GADAhhC,EAAAtzN,KAAAyuK,EAAA6kD,EAAA7kD,GAAAz7I,EAAAsgM,EAAAtgM,OAAA0oM,EAAApI,EAAAoI,IAEA44B,GAAA54B,EAAAptI,UAAA,IAAAt5E,EAAA6yM,MAAAv5H,UAAA,IAAAt5E,EAAAmjH,KACA9nH,KAAAijN,EAAA01B,QAAAn3N,KAAAyhM,IACAghC,EAAA32N,QAAA7Z,OAAA,QACA/M,KAAA,QAAAu8M,EAAAihC,SAAA1iO,KAAAyhM,IACAjvN,MAAA,OAAA,SAAAnE,GAAA,MAAAozN,GAAAllG,MAAAluH,EAAAmQ,QACAhM,MAAA,SAAA,SAAAnE,GAAA,MAAA8yB,GAAAgzM,qBAAAhzM,EAAA25M,4BAAAzsO,GAAA,UAAA,OACAmE,MAAA,UAAA,GACAxC,KAAA,SAAA3B,GACAozN,EAAAu1B,YAAA3oP,EAAAmQ,QACAnQ,EAAA02H,WAAA12H,EAAA22H,SAAA7jG,EAAAm/M,qBAEAnyO,KAAAw0P,SAAAt0P,IAEAo0P,EACAv9O,KAAA,YAAA,SAAA7W,GAAA,OAAAozN,EAAAu1B,YAAA3oP,EAAAmQ,OAAA2uN,EAAA,WAAA,KACA36N,MAAA,UAAA,SAAAnE,GAAA,MAAAA,KAAAF,KAAAw0P,SAAA,EAAA,IACA9wO,GAAA,YAAAsP,EAAAgzM,oBAAA,SAAA9lO,GACA,GAAA2yP,GAAA7J,CACA11B,GAAAwF,aAGA+5B,EAAAv/B,EAAAk/B,YAAAtyP,GACA2yP,IACA7J,EAAA11B,EAAA6/B,iBAAAN,GAEAv/B,EAAAmgC,UAAAZ,EAAAxiP,KAAAkC,IACA+gN,EAAAS,IAAAx7M,MAAAs6O,EAAAxiP,KAAAkC,IACA+gN,EAAAq5B,kBAAAkG,EAAAxiP,KAAAkC,IAAA,GACA+gN,EAAAtgM,OAAA+5M,iBAAAic,EAAAhpP,SAEA,MACA0jB,GAAA,YAAAsP,EAAAgzM,oBAAA,SAAA9lO,GACA,GAAA8oP,GAAA1J,EAAAuT,EAAAv/B,EAAAk/B,YAAAtyP,EACA2yP,KACA7J,EAAA11B,EAAA6/B,iBAAAN,GACAvT,GAAA0J,GACA11B,EAAAx4D,YAAAwkF,EAAAt/O,QAEA,MACA0jB,GAAA,WAAAsP,EAAAgzM,oBAAA,SAAA9lO,GACA,GAAA2yP,GAAA7J,CACA11B,GAAAwF,aAGA+5B,EAAAv/B,EAAAk/B,YAAAtyP,GACA2yP,IACA7J,EAAA11B,EAAA6/B,iBAAAN,GAEAv/B,EAAAwgC,YAAAjB,EAAAxiP,KAAAkC,IACA+gN,EAAAS,IAAArjK,SACA4iK,EAAAu5B,eACAv5B,EAAAt4D,cACAs4D,EAAAtgM,OAAAg6M,gBAAAgc,EAAAhpP,SAEA,MACA0jB,GAAA,QAAAsP,EAAAgzM,oBAAA,SAAA9lO,EAAAqB,GACA,GAAAynP,GAAA6J,EAAAv/B,EAAAk/B,YAAAtyP,EACA2yP,KACA7J,EAAA11B,EAAA6/B,iBAAAN,GACAv/B,EAAAqsB,aACArsB,EAAAqsB,YAAA3/O,KAAAgpP,EAAAznP,GAEA+xN,EAAAtgM,OAAA85M,aAAAzrO,KAAAiyN,EAAAS,IAAAi1B,EAAAhpP,QAEA,MACA6B,KAAA,WAAAyxN,EAAAwF,YAAA,IACAjgM,aAAAtrB,SAAAA,GACAmhN,UAAA,IAAA,SAAAxuN,GACA,GAAAqjL,GAAAsvE,EAAAv/B,EAAAk/B,YAAAtyP,EACA,OAAA2yP,IASAhhP,MAAA7R,KAAAw0P,SAAA59H,cACA52H,KAAAw0P,SAAA59H,WAAA,GAEA/kH,MAAA7R,KAAAw0P,SAAA39H,YACA72H,KAAAw0P,SAAA39H,SAAA72H,KAAAw0P,SAAA59H,YAEA2sD,EAAA9U,EAAA8U,YAAAvjL,KAAAw0P,SAAA3B,GACA7yP,KAAAw0P,SAAAjxE,EAAA,GACA,SAAA3yK,GACA,GAAA6jP,GAAAlxE,EAAA3yK,EAEA,OADA6jP,GAAApkP,KAAAnQ,EAAAmQ,KACAijN,EAAAy/B,OAAA0B,GAAA,KAnBA,WAAA,MAAA,WAsBA19O,KAAA,YAAAioN,EAAA,WAAA,IACA36N,MAAA,OAAA,SAAAnE,GACA,MAAAozN,GAAA0F,WAAA1F,EAAA0F,WAAA94N,EAAAmQ,KAAAotC,OAAA,GAAAnqC,OAAAggN,EAAAllG,MAAAluH,EAAAmQ,KAAAkC,MAEAlO,MAAA,UAAA,GACAhD,KAAAiyN,EAAAmX,OAAA,WACAnX,EAAAwF,YAAA,IAEAw7B,EAAAl9G,OAAAv+G,aAAAtrB,SAAAm1N,GACAr+N,MAAA,UAAA,GACAuI,SACA8uN,EAAAptI,UAAA,IAAAt5E,EAAA2+O,UAAAz5O,OAAA,QACA7V,MAAA,UAAA,GACA0S,KAAA,QAAA,SAAA7W,GAAA,MAAAozN,GAAAu1B,YAAA3oP,EAAAmQ,MAAA2E,EAAA0/O,WAAA,KACAr0P,KAAAizN,EAAA8/B,gBAAAvhO,KAAAyhM,IACAv8M,KAAA,YAAAu8M,EAAA0/B,qBAAAnhO,KAAAyhM,IACAjvN,MAAA,YAAA,SAAAnE,GAAA,MAAAozN,GAAAu1B,YAAA3oP,EAAAmQ,MAAAjG,KAAAs0B,MAAA40L,EAAAl+F,OAAA,GAAA,KAAA,KACAv8F,aAAAtrB,SAAAA,GACAlJ,MAAA,UAAA,SAAAnE,GAAA,MAAAozN,GAAAsO,eAAA1hO,EAAAmQ,KAAAkC,KAAA+gN,EAAAy1B,UAAA7oP,EAAAmQ,MAAA,EAAA,IACAqrN,EAAAxhN,OAAA,IAAAlF,EAAAq/O,gBACAhwP,MAAA,UAAAivN,EAAAkJ,QAAA,UAAAlJ,EAAAkJ,QAAA,SAAA,EAAA,GAEAlJ,EAAAkJ,QAAA,WACAlJ,EAAAzL,KAAA3tM,OAAA,IAAAlF,EAAA2/O,qBACA59O,KAAA,IAAA,WACA,GAAA7W,IACAmQ,OAAAiD,MAAA0f,EAAAk/M,YACAt7G,WAAA5jG,EAAAm/M,oBACAt7G,UAAA,EAAA7jG,EAAAm/M,oBAEA,OAAA7e,GAAAy/B,OAAA7yP,GAAA,GAAA,KAEAozN,EAAAzL,KAAA3tM,OAAA,IAAAlF,EAAA4/O,oBACA79O,KAAA,KAAA,SACA1W,KAAA2yB,EAAA++M,iBAAA/+M,EAAAo/M,YAAA,IACA9e,EAAAzL,KAAA3tM,OAAA,IAAAlF,EAAA6/O,mBACA99O,KAAA,MAAA,GAAAu8M,EAAA1wB,aAAA0wB,EAAAl+F,OAAAk+F,EAAA1wB,cAAA5vK,EAAAkuM,iBAAA,EAAA,IAAA,MACAnqN,KAAA,KAAA,SACA1W,KAAA2yB,EAAA++M,iBAAA/+M,EAAAi/M,UAAA,IACA3e,EAAAzL,KAAA3tM,OAAA,IAAAlF,EAAA8/O,mBACA/9O,KAAA,KAAAu8M,EAAA1wB,aAAA0wB,EAAAl+F,OAAAk+F,EAAA1wB,cAAA5vK,EAAAkuM,iBAAA,EAAA,GAAA,MACAnqN,KAAA,KAAA,SACA1W,KAAA2yB,EAAA++M,iBAAA/+M,EAAAk/M,UAAA,MAGApb,EAAAyE,UAAA,WACA,GAAA1T,GAAA7nN,KAAA6nN,IACA7nN,MAAAw8N,QAAA,WACA3U,EAAA/jM,OAAA,QACA/M,KAAA,QAAA/B,EAAA2/O,qBACA9sC,EAAA/jM,OAAA,QACA/M,KAAA,QAAA/B,EAAA4/O,oBACAvwP,MAAA,cAAA,UACAA,MAAA,iBAAA,QACAwjN,EAAA/jM,OAAA,QACA/M,KAAA,QAAA/B,EAAA6/O,mBACAxwP,MAAA,cAAA,UACAA,MAAA,iBAAA,QACAwjN,EAAA/jM,OAAA,QACA/M,KAAA,QAAA/B,EAAA8/O,mBACAzwP,MAAA,cAAA,UACAA,MAAA,iBAAA,UAGAyyN,EAAAqK,oBAAA,WACA,MAAAnhO,MAAAgzB,OAAA++M,iBAAA,GAAA,GAGAjb,EAAAoH,WAAA,WACA,GAAA5K,GAAAtzN,IACAszN,GAAAj/F,OAAAi/F,EAAAoI,KAAA53M,OAAA,KACA/M,KAAA,YAAAu8M,EAAA+E,UACAthN,KAAA,QAAA/B,EAAAwpN,UAEA1H,EAAAwO,aAAA,SAAA/3N,GACA,GAAA+lN,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,MAGAsgM,GAAAj/F,OAAAhwH,MAAA,aAAAivN,EAAAuM,aAAA,SAAA,WAEAvM,EAAAyhC,WAAAzhC,EAAAoI,KAAAxhN,OAAA,IAAAlF,EAAAwpN,SAAAlwI,UAAA,IAAAt5E,EAAAq/G,QACAhkH,KAAA2iB,EAAAwrM,SACAlL,EAAAyhC,WAAAp3N,QAAA7Z,OAAA,KACAA,OAAA,QACAzf,MAAA,eAAA,GACAivN,EAAAyhC,WACAh+O,KAAA,QAAAu8M,EAAA0hC,YAAAnjO,KAAAyhM,IACAA,EAAAyhC,WAAA39G,OAAAv+G,aAAAtrB,SAAAA,GACAlJ,MAAA,UAAA,GACAuI,UAEAkqN,EAAAgQ,aAAA,SAAA/H,GACA,GAAAzL,GAAAtzN,KACAw+N,EAAAlL,EAAAyhC,WAAAzmK,UAAA,QAAAzsF,KAAA,WAIA,GAAAozP,GAAA3hC,EAAA7kD,GAAAv0J,OAAAla,KAAAQ,YAAA08C,OACAo2K,GAAA7kD,GAAAv0J,OAAAla,MAAAk9C,MAAA+3M,KAEA5iP,EAAAihN,EAAA4hC,QAAArjO,KAAAyhM,GACAp/M,EAAAo/M,EAAA6hC,QAAAtjO,KAAAyhM,GACA5yN,EAAA4yN,EAAA8hC,YAAAvjO,KAAAyhM,GACAzvN,EAAAyvN,EAAA+hC,aAAAxjO,KAAAyhM,EACA,SACAyL,EAAAP,EAAA3lM,aAAA2lM,GACAznN,KAAA,IAAA1E,GACA0E,KAAA,IAAA7C,GACA6C,KAAA,QAAArW,GACAqW,KAAA,SAAAlT,GACAQ,MAAA,eAAA,SAAAnE,GAAA,MAAAioO,GAAAjoO,EAAAyL,SAAAzL,EAAAyL,QAAA,OAGAmrN,EAAAo+B,QAAA,SAAAh1P,GACA,GACAsoP,GADAl1B,EAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OACA01M,EAAA,MAAAxoO,EAAAy+E,KAAA20I,EAAAp/M,EAAAo/M,EAAA58F,EAMA,OAJA8xH,GADA,MAAAtoP,EAAAy+E,MAAA,OAAAz+E,EAAAy+E,KACA3rD,EAAA4mM,cAAA,SAAA15N,GAAAwoO,EAAAxoO,EAAAqE,OAAA,EAEAyuB,EAAA4mM,aAAA,EAAA,SAAA15N,GAAAozN,EAAAjhN,EAAAihN,EAAAgU,eAAAhU,EAAAiV,UAAAroO,EAAAqE,OAAArE,EAAAqE,OAAA,GAIAuyN,EAAAq+B,QAAA,SAAAj1P,GACA,GACAuoP,GADAn1B,EAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OACA01M,EAAA,MAAAxoO,EAAAy+E,KAAA20I,EAAAp/M,EAAAo/M,EAAA58F,EAMA,OAJA+xH,GADA,MAAAvoP,EAAAy+E,MAAA,OAAAz+E,EAAAy+E,KACA3rD,EAAA4mM,aAAA,EAAA,OAAA15N,GAAAwoO,EAAAxoO,EAAAsE,KAAA,EAEAwuB,EAAA4mM,cAAA,SAAA15N,GAAAozN,EAAAjhN,EAAAihN,EAAAgU,eAAAhU,EAAAiV,UAAAroO,EAAAqE,OAAArE,EAAAqE,OAAA,GAIAuyN,EAAAs+B,YAAA,SAAAl1P,GACA,GACAsE,GADA8uN,EAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OACAzuB,EAAA+uN,EAAA4hC,QAAAh1P,GAAAwoO,EAAA,MAAAxoO,EAAAy+E,KAAA20I,EAAAp/M,EAAAo/M,EAAA58F,EAMA,OAJAlyH,GADA,MAAAtE,EAAAy+E,MAAA,OAAAz+E,EAAAy+E,KACA3rD,EAAA4mM,cAAA,OAAA15N,GAAAwoO,EAAAxoO,EAAAsE,KAAA8uN,EAAA7pN,MAEAupB,EAAA4mM,aAAAtG,EAAA7pN,MAAA,OAAAvJ,GAAAozN,EAAAjhN,EAAAihN,EAAAgU,eAAAhU,EAAAiV,UAAAroO,EAAAsE,KAAAtE,EAAAsE,KAAA8uN,EAAA7pN,MAEAjF,EAAAD,EAAA,EAAAC,EAAAD,GAEAuyN,EAAAu+B,aAAA,SAAAn1P,GACA,GACAsE,GADA8uN,EAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OACAzuB,EAAAvE,KAAAm1P,QAAAj1P,GAAAwoO,EAAA,MAAAxoO,EAAAy+E,KAAA20I,EAAAp/M,EAAAo/M,EAAA58F,EAMA,OAJAlyH,GADA,MAAAtE,EAAAy+E,MAAA,OAAAz+E,EAAAy+E,KACA3rD,EAAA4mM,aAAAtG,EAAA5nN,OAAA,SAAAxL,GAAAwoO,EAAAxoO,EAAAqE,OAAA+uN,EAAA5nN,OAEAsnB,EAAA4mM,cAAA,OAAA15N,GAAAozN,EAAAjhN,EAAAihN,EAAAgU,eAAAhU,EAAAiV,UAAAroO,EAAAsE,KAAAtE,EAAAsE,KAAA8uN,EAAA5nN,OAEAlH,EAAAD,EAAA,EAAAC,EAAAD,GAEAuyN,EAAAw+B,YAAA,SAAAp1P,GACA,OAAAA,EAAAy+E,MAAA,MAAAz+E,EAAAy+E,MAGAm4I,EAAAvqB,KAAA,SAAAD,GACA,GACAnW,GAAAC,EAAAm/D,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EADAtiC,EAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OAAA0oM,EAAApI,EAAAoI,KAAAjtD,EAAA6kD,EAAA7kD,EAGA6kD,GAAAuM,cACA7sM,EAAAy5M,yBACAz5M,EAAAkqM,eAAA5J,EAAAltM,KAAAyvO,WACA7iO,EAAA45M,0BAEAz2C,EAAAm9B,EAAA/6H,UAAA,GACA69F,EAAAk9B,EAAA/6H,UAAA,GACAg9J,EAAAjpD,EAAA,GACAkpD,EAAAlpD,EAAA,GACAmpD,EAAArrP,KAAAkvD,IAAA68H,EAAAo/D,GACAG,EAAAtrP,KAAAC,IAAA8rL,EAAAo/D,GACAI,EAAA3iO,EAAA,uBAAAsgM,EAAA3sM,OAAA7Q,IAAA1L,KAAAkvD,IAAA88H,EAAAo/D,GACAI,EAAA5iO,EAAA,uBAAAsgM,EAAA5nN,OAAAtB,KAAAC,IAAA+rL,EAAAo/D,GAEA95B,EAAAxhN,OAAA,IAAAlF,EAAA8gP,UACA/+O,KAAA,IAAA0+O,GACA1+O,KAAA,IAAA4+O,GACA5+O,KAAA,QAAA2+O,EAAAD,GACA1+O,KAAA,SAAA6+O,EAAAD,GAEAj6B,EAAAptI,UAAA,IAAAt5E,EAAAg6G,QAAA1gC,UAAA,IAAAt5E,EAAAs/G,OACA5yH,OAAA,SAAAxB,GAAA,MAAA8yB,GAAA25M,4BAAAzsO,KACA2B,KAAA,SAAA3B,EAAAqB,GACA,GAGAw0P,GAAAC,EAAAC,EAAAC,EAAAn4O,EAAAsuB,EAHAioF,EAAAm6C,EAAAv0J,OAAAla,MACAm2P,EAAA7hI,EAAAu3E,QAAA72L,EAAAohP,UACAC,EAAA/hI,EAAAu3E,QAAA72L,EAAAshP,UACAvU,GAAA,CACA,IAAAztH,EAAAu3E,QAAA72L,EAAAugH,QACAwgI,EAAA,EAAAzhI,EAAAv9G,KAAA,MACAi/O,EAAA,EAAA1hI,EAAAv9G,KAAA,MACAgH,EAAAu1M,EAAAijC,YACAxU,EAAA0T,EAAAM,GAAAA,EAAAL,GAAAC,EAAAK,GAAAA,EAAAJ,MAEA,CAAA,IAAAthI,EAAAu3E,QAAA72L,EAAA6xF,KAUA,MATAx6D,GAAAmqN,EAAAx2P,MACA+1P,EAAA1pN,EAAAh6B,EACA2jP,EAAA3pN,EAAAn4B,EACA+hP,EAAA5pN,EAAA5iC,MACAysP,EAAA7pN,EAAA3gC,OACAqS,EAAAu1M,EAAAmjC,WACA1U,IAAA2T,EAAAK,GAAAA,EAAAE,EAAAR,GAAAG,EAAAI,GAAAA,EAAAE,EAAAP,GAKA5T,EAAAsU,IACA/hI,EAAAu3E,QAAA72L,EAAAshP,UAAAD,GAEA/hI,EAAAu3E,QAAA72L,EAAAohP,UAAAD,GACAp4O,EAAA1c,KAAAiyN,GAAA6iC,EAAA7hI,EAAAp0H,EAAAqB,SAKAu1N,EAAArqB,UAAA,SAAAH,GACA,GAAAgnB,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,MACAsgM,GAAAuM,cACA7sM,EAAAy5M,yBACAnZ,EAAA/6H,UAAA+zG,EACAgnB,EAAAoI,KAAAxhN,OAAA,IAAAlF,EAAAkiN,OAAApzM,OAAA,QACA/M,KAAA,QAAA/B,EAAA8gP,UACAzxP,MAAA,UAAA,IACAivN,EAAArC,UAAA,IAGA6F,EAAA8oB,QAAA,WACA,GAAAtsB,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,MACAsgM,GAAAuM,cACA7sM,EAAAy5M,yBACAnZ,EAAAoI,KAAAxhN,OAAA,IAAAlF,EAAA8gP,UACAj9N,aAAAtrB,SAAA,KACAlJ,MAAA,UAAA,GACAuI,SACA0mN,EAAAoI,KAAAptI,UAAA,IAAAt5E,EAAAs/G,OACAu3E,QAAA72L,EAAAshP,UAAA,GACAhjC,EAAArC,UAAA,IAGA6F,EAAA4/B,YAAA,SAAAv+O,EAAAjY,EAAAqB,GACA,GAAA+xN,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OACA2vJ,GAAA3vJ,EAAA4mM,aAAAtG,EAAA8S,QAAA9S,EAAA+S,SAAAx0M,KAAAyhM,GACA1wC,GAAA5vJ,EAAA4mM,aAAAtG,EAAA+S,QAAA/S,EAAA8S,SAAAv0M,KAAAyhM,GACA1yN,EAAA0yN,EAAA4uB,aAAArwN,KAAAyhM,EACAtgM,GAAAi6M,gBAAA5rO,KAAAiyN,EAAAS,IAAA7zN,EAAAiY,EAAA6gC,QAEAs6K,EAAAoI,KAAAxhN,OAAA,IAAAlF,EAAA+wN,gBAAAzS,EAAA4oB,wBAAAh8O,EAAAqS,KAAA+7E,UAAA,IAAAt5E,EAAAiuO,eAAA,IAAA1hP,GACA8O,MAAAnQ,IACAy9B,QAAA7Z,OAAA,UACA/M,KAAA,QAAA,WAAA,MAAAu8M,GAAA0vB,cAAAhuO,EAAAiuO,eAAA1hP,KACAwV,KAAA,KAAA4rK,GACA5rK,KAAA,KAAA6rK,GACA7rK,KAAA,SAAA,WAAA,MAAAu8M,GAAAllG,MAAAluH,KACA6W,KAAA,IAAA,SAAA7W,GAAA,MAAA,KAAAozN,EAAA4uB,aAAAhiP,KACA24B,aAAAtrB,SAAA,KACAwJ,KAAA,IAAAnW,IAEAk2N,EAAA6/B,cAAA,SAAAx+O,EAAAjY,EAAAqB,GACA,GAAA+xN,GAAAtzN,IACAszN,GAAAtgM,OAAAk6M,kBAAA7rO,KAAAiyN,EAAAS,IAAA7zN,EAAAiY,EAAA6gC,QAEAs6K,EAAAoI,KAAAxhN,OAAA,IAAAlF,EAAA+wN,gBAAAzS,EAAA4oB,wBAAAh8O,EAAAqS,KAAA+7E,UAAA,IAAAt5E,EAAAiuO,eAAA,IAAA1hP,GACAs3B,aAAAtrB,SAAA,KAAAwJ,KAAA,IAAA,GACAnK,UAEAkqN,EAAAy/B,YAAA,SAAA39O,EAAAT,EAAAjY,EAAAqB,GACAqX,EAAA5Y,KAAA02P,YAAAv+O,EAAAjY,EAAAqB,GAAAvB,KAAA22P,cAAAx+O,EAAAjY,EAAAqB,IAEAu1N,EAAA8/B,WAAA,SAAAz+O,EAAAjY,GACA,GAAAozN,GAAAtzN,IACAszN,GAAAtgM,OAAAi6M,gBAAA5rO,KAAAiyN,EAAApzN,EAAAiY,EAAA6gC,QACAs6K,EAAAtgM,OAAA24M,sBACAxzN,EAAA0gB,aAAAtrB,SAAA,KACAlJ,MAAA,OAAA,WAAA,MAAAivN,GAAA7kD,GAAA8G,IAAA+9C,EAAAllG,MAAAluH,IAAAmwM,SAAA,QAGAymB,EAAA+/B,aAAA,SAAA1+O,EAAAjY,GACA,GAAAozN,GAAAtzN,IACAszN,GAAAtgM,OAAAk6M,kBAAA7rO,KAAAiyN,EAAApzN,EAAAiY,EAAA6gC,QACAs6K,EAAAtgM,OAAA24M,sBACAxzN,EAAA0gB,aAAAtrB,SAAA,KACAlJ,MAAA,OAAA,WAAA,MAAAivN,GAAAllG,MAAAluH,MAGA42N,EAAA2/B,WAAA,SAAA79O,EAAAT,EAAAjY,EAAAqB,GACAqX,EAAA5Y,KAAA42P,WAAAz+O,EAAAjY,EAAAqB,GAAAvB,KAAA62P,aAAA1+O,EAAAjY,EAAAqB,IAEAu1N,EAAAggC,UAAA,SAAA70N,EAAA/hC,GACA,GAAA6d,GAAAu1M,EAAAtzN,IAYA,OAXA,WAAAiiC,EAAAjhC,SAGA+c,EAFAu1M,EAAAisB,WAAAr/O,GAEA,aAEAozN,EAAAijC,YAGA,SAAAt0N,EAAAjhC,WACA+c,EAAAu1M,EAAAmjC,YAEA14O,GAEA+4M,EAAA6oB,YAAA,SAAA19M,EAAA/hC,EAAAqB,GACA,GAAA+xN,GAAAtzN,KAAAyuK,EAAA6kD,EAAA7kD,GAAAz7I,EAAAsgM,EAAAtgM,OACAshG,EAAAm6C,EAAAv0J,OAAA+nB,GAAAk0N,EAAA7hI,EAAAu3E,QAAA72L,EAAAohP,UACAr4O,EAAAu1M,EAAAwjC,UAAA70N,EAAA/hC,GAAA2xB,KAAAyhM,EAEAtgM,GAAAy5M,wBAAAz5M,EAAA25M,4BAAAzsO,KACA8yB,EAAA45M,yBACAtZ,EAAAoI,KAAAptI,UAAA,IAAAt5E,EAAAg6G,QAAAh8F,EAAA05M,uBAAApZ,EAAA4oB,wBAAAh8O,EAAAqS,IAAA,KAAA+7E,UAAA,IAAAt5E,EAAAs/G,OAAAzyH,KAAA,SAAA3B,EAAAqB,GACA,GAAA+yH,GAAAm6C,EAAAv0J,OAAAla,KACAs0H,GAAAu3E,QAAA72L,EAAAohP,WAAAr4O,GAAA,EAAAu2G,EAAAu3E,QAAA72L,EAAAohP,UAAA,GAAAl2P,EAAAqB,KAGA+yH,EAAAu3E,QAAA72L,EAAAohP,UAAAD,GACAp4O,GAAAo4O,EAAA7hI,EAAAp0H,EAAAqB,KAIAu1N,EAAA8E,UAAA,WACA,GAAAtI,GAAAtzN,KAAAyuK,EAAA6kD,EAAA7kD,EACA6kD,GAAAhD,MAAA7hD,EAAA1tD,IAAAuvG,QAAA5sM,GAAA,QAAA,WAAA4vM,EAAAyjC,mBACAzjC,EAAAhD,MAAAnmK,OAAA,WAEA,MADAmpK,GAAApmM,SAAAomM,EAAApmM,QAAAhT,OAAA,IAAAlF,EAAAs7M,OAAAjvN,KAAArB,MACAA,MAEAszN,EAAAhD,MAAAv4C,MAAA,SAAAA,GACA,MAAAu7C,GAAAtgM,OAAA4mM,aAAA55N,KAAAkU,EAAA6jK,GAAA/3K,KAAAqS,EAAA0lK,KAGA++C,EAAAgH,aAAA,WACA,GAAAxK,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OACA9F,EAAAomM,EAAApmM,QAAAomM,EAAAvyG,IAAAj9F,OAAA,KAAA/M,KAAA,YAAAu8M,EAAAuK,aAAA,YACAv4M,EAAA0N,EAAAitM,cAAA,UAAA,QAEA/yM,GAAA7oB,MAAA,aAAAihB,GAGA4H,EAAApJ,OAAA,KACA/M,KAAA,YAAAu8M,EAAAoF,qBACA3hN,KAAA,QAAA/B,EAAAkiN,OAGAhqM,EAAAhT,OAAA,IAAAlF,EAAAkiN,OAAApzM,OAAA,KACA/M,KAAA,QAAA/B,EAAA4wO,WAGA14N,EAAAhT,OAAA,IAAAlF,EAAAkiN,OAAApzM,OAAA,KACA/M,KAAA,QAAA/B,EAAAutO,YAGAr1N,EAAApJ,OAAA,KACA/M,KAAA,YAAAu8M,EAAA+E,UACAthN,KAAA,QAAA/B,EAAAs7M,OACAjvN,KAAAiyN,EAAAhD,OAIAgD,EAAAW,KAAAiH,KAAAhuM,EAAApJ,OAAA,KACA/M,KAAA,QAAA/B,EAAAo/M,OACAr9M,KAAA,YAAAu8M,EAAAuK,aAAA,SACA9mN,KAAA,YAAAic,EAAA4mM,aAAA,GAAAtG,EAAAiF,kBACAl0N,MAAA,aAAA2uB,EAAAm6M,qBAAA7nN,EAAA,WAEAwxM,EAAA4K,yBAAA,SAAAhiM,GACA,GACAs3N,GAAAC,EAAAC,EAAAC,EADA7jC,EAAAtzN,KAAAktB,EAAAomM,EAAApmM,QAAA8F,EAAAsgM,EAAAtgM,OAEA+yN,EAAAzyB,EAAAyyB,cAAAl0N,KAAAyhM,GACA0yB,EAAA1yB,EAAA0yB,UAAAn0N,KAAAyhM,GACAovB,EAAApvB,EAAAovB,eAAA7wN,KAAAyhM,GACAqvB,EAAArvB,EAAAqvB,WAAA9wN,KAAAyhM,GACAsvB,EAAAtvB,EAAAsvB,WAAA/wN,KAAAyhM,EAEAtgM,GAAAitM,gBAEAk3B,EAAAjqO,EAAAhT,OAAA,IAAAlF,EAAA4wO,WAAAt3J,UAAA,IAAAt5E,EAAAixO,UACA51O,KAAAqvB,GACA3oB,KAAA,QAAAgvO,GACAmR,EAAAC,EAAAx5N,QAAA7Z,OAAA,KACAzf,MAAA,UAAA,GACA0S,KAAA,QAAAgvO,GAEAmR,EAAApzO,OAAA,KACA/M,KAAA,QAAAivO,GAGAiR,EAAA/pO,EAAAhT,OAAA,IAAAlF,EAAAutO,YAAAj0J,UAAA,IAAAt5E,EAAA+tO,WACA1yO,KAAAqvB,GACA3oB,KAAA,QAAA2rO,GACAsU,EAAAC,EAAAt5N,QAAA7Z,OAAA,KACAzf,MAAA,UAAA,GACA0S,KAAA,QAAA2rO,GAEAsU,EAAAlzO,OAAA,KACA/M,KAAA,QAAA4rO,GAEAqU,EAAAlzO,OAAA,KACA/M,KAAA,QAAA6rO,GAGA11N,EAAAohE,UAAA,IAAAt5E,EAAAs7M,MAAA,SACAv5M,KAAAic,EAAA4mM,aAAA,QAAA,SAAA5mM,EAAA4mM,aAAAtG,EAAAwN,OAAAxN,EAAAyN,WAGAjK,EAAAsgC,qBAAA,SAAA10B,GACA,GAAApP,GAAAtzN,IACAszN,GAAA+jC,WAAA/jC,EAAApmM,QAAAohE,UAAA,IAAAt5E,EAAAinO,MAAA3tJ,UAAA,IAAAt5E,EAAA6xF,KACAx2F,KAAAijN,EAAA4yB,QAAAr0N,KAAAyhM,IACAA,EAAA+jC,WAAA15N,QAAA7Z,OAAA,QACA/M,KAAA,QAAAu8M,EAAA6yB,SAAAt0N,KAAAyhM,IACAjvN,MAAA,SAAA,QACAA,MAAA,OAAAivN,EAAAllG,OACAklG,EAAA+jC,WACAhzP,MAAA,UAAAivN,EAAAyU,eAAAl2M,KAAAyhM,IACAA,EAAA+jC,WAAAjgH,OAAAv+G,aAAAtrB,SAAAm1N,GACAr+N,MAAA,UAAA,GACAuI,UAEAkqN,EAAAwgC,qBAAA,SAAAC,EAAAx4B,EAAAxxN,IACAwxN,EAAA/+N,KAAAq3P,WAAAx+N,WAAAzuB,KAAAqH,SAAAhB,YAAAlD,SAAAA,GAAAvN,KAAAq3P,YACAtgP,KAAA,IAAAwgP,GACAlzP,MAAA,UAAA,IAEAyyN,EAAA0gC,sBAAA,SAAA90B,GACA,GAAApP,GAAAtzN,IACAszN,GAAAmkC,YAAAnkC,EAAApmM,QAAAohE,UAAA,IAAAt5E,EAAAqmD,OAAAizB,UAAA,IAAAt5E,EAAAg+C,MACA3iD,KAAAijN,EAAA6vB,SAAAtxN,KAAAyhM,IACAA,EAAAmkC,YAAA95N,QAAA7Z,OAAA,QACA/M,KAAA,QAAAu8M,EAAA8vB,UAAAvxN,KAAAyhM,IACAjvN,MAAA,SAAAivN,EAAAllG,OACAklG,EAAAmkC,YACApzP,MAAA,UAAAivN,EAAAyU,eAAAl2M,KAAAyhM,IACAA,EAAAmkC,YAAArgH,OAAAv+G,aAAAtrB,SAAAm1N,GACAr+N,MAAA,UAAA,GACAuI,UAEAkqN,EAAA4gC,sBAAA,SAAAC,EAAA54B,EAAAxxN,IACAwxN,EAAA/+N,KAAAy3P,YAAA5+N,WAAAzuB,KAAAqH,SAAAhB,YAAAlD,SAAAA,GAAAvN,KAAAy3P,aACA1gP,KAAA,IAAA4gP,GACAtzP,MAAA,UAAA,IAEAyyN,EAAA8gC,sBAAA,SAAAl1B,GACA,GAAApP,GAAAtzN,KAAAyuK,EAAA6kD,EAAA7kD,EACA6kD,GAAAukC,YAAAvkC,EAAApmM,QAAAohE,UAAA,IAAAt5E,EAAA2vO,OAAAr2J,UAAA,IAAAt5E,EAAA+vI,MACA10I,KAAAijN,EAAA6vB,SAAAtxN,KAAAyhM,IACAA,EAAAukC,YAAAl6N,QAAA7Z,OAAA,QACA/M,KAAA,QAAAu8M,EAAAsxB,UAAA/yN,KAAAyhM,IACAjvN,MAAA,OAAAivN,EAAAllG,OACA/pH,MAAA,UAAA,WAAA,MAAAivN,GAAAuxB,gBAAAp2E,EAAAv0J,OAAAla,MAAAqE,MAAA,WAAA,IACAivN,EAAAukC,YACAxzP,MAAA,UAAA,GACAivN,EAAAukC,YAAAzgH,OAAAv+G,aAAAtrB,SAAAm1N,GACAr+N,MAAA,UAAA,GACAuI,UAEAkqN,EAAAghC,sBAAA,SAAAC,EAAAh5B,EAAAxxN,IACAwxN,EAAA/+N,KAAA63P,YAAAh/N,WAAAzuB,KAAAqH,SAAAhB,YAAAlD,SAAAA,GAAAvN,KAAA63P,aACA9gP,KAAA,IAAAghP,GACA1zP,MAAA,OAAArE,KAAAouH,OACA/pH,MAAA,UAAArE,KAAA6kP,iBAEA/tB,EAAAgP,eAAA,SAAA9D,EAAAF,EAAAv0N,EAAAm1N,EAAAM,EAAAG,EAAAE,GACA,GACA00B,GAAAR,EAAAI,EADArkC,EAAAtzN,KAAAyuK,EAAA6kD,EAAA7kD,GAAAz7I,EAAAsgM,EAAAtgM,MAGAsgM,GAAApmM,QAAA7oB,MAAA,aAAA2uB,EAAAitM,cAAA,UAAA,UAGAjtM,EAAAitM,gBAEAxxD,EAAArnK,OAAA,SAAAqnK,EAAArnK,MAAAvG,MACAyyN,EAAAhD,MAAA58B,OAAA4/B,EAAAjhN,EAAA+xN,aAAAj6K,SAGA63K,IAGA1O,EAAAhD,MAAAlkN,SACAknN,EAAAhD,MAAA58B,OAAA4/B,EAAAjhN,EAAA+xN,aAAAj6K,SAGA4tM,EAAAzkC,EAAAyR,iBAAA/B,GAAA,GACAu0B,EAAAjkC,EAAA0R,gBAAA7B,GAAA,GACAw0B,EAAArkC,EAAA2R,iBAAA5B,GAAA,GAEA/P,EAAA8jC,qBAAA7pP,GACA+lN,EAAAkkC,sBAAAjqP,GACA+lN,EAAAskC,sBAAArqP,GAEA+lN,EAAAgkC,qBAAAC,EAAAhqP,EAAAA,GACA+lN,EAAAokC,sBAAAC,EAAApqP,EAAAA,GACA+lN,EAAAwkC,sBAAAC,EAAAxqP,EAAAA,MAIAupN,EAAAigC,eAAA,WACA,GAAAzjC,GAAAtzN,KAAAqS,EAAAihN,EAAAjhN,CACAihN,GAAAxC,QACAiO,gBAAA,EACAgD,MAAAzO,EAAAtgM,OAAAmxM,aACAnC,cAAA,EACA/C,mBAAA,EACAoD,eAAA,IAEA/O,EAAAtgM,OAAAo6M,iBAAA/rO,KAAAiyN,EAAAS,IAAA1hN,EAAA+xN,cAEAtN,EAAAiS,iBAAA,SAAAhK,EAAA+C,GACA,GAAAoC,GAAA5Q,EAAAtzN,IACA8hO,IAAAA,EAAA2vB,SACAvtB,EAAApC,EAAA2vB,UAEAvtB,EAAA5Q,EAAApmM,QAAAhT,OAAA,IAAAlF,EAAAo/M,OACA2K,IAAAmF,EAAAA,EAAArrM,eAEAy6L,EAAApmM,QAAAnW,KAAA,YAAAu8M,EAAAuK,aAAA,YACAqG,EAAAntN,KAAA,YAAAu8M,EAAAuK,aAAA,UAEA/G,EAAA6H,iBAAA,WACA,GAAArL,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OACA0gK,EAAAvyL,EAAA6xB,EAAA0rM,eAAA1rM,EAAA0rM,cAAApL,EAAAsJ,WAAAtJ,EAAAjjN,KAAAqvB,UAAA1M,EAAA0rM,aAIA,OAHApL,GAAAgU,iBACA5zC,GAAA4/B,EAAAiV,UAAA70C,EAAA,IAAA4/B,EAAAiV,UAAA70C,EAAA,MAEAA,GAGAojC,EAAA+E,SAAA,WACA,GAAAm8B,GAAA1kC,EAAAtzN,KAAAyuK,EAAA6kD,EAAA7kD,GAAAz7I,EAAAsgM,EAAAtgM,MAEAsgM,GAAAltM,KAAAqoJ,EAAAs8B,SAAA3kL,OACA1C,GAAA,YAAA,WACAs0O,EAAAvpF,EAAArnK,MAAAunK,YACA2kD,EAAAltM,KAAAyvO,UAAApnF,EAAArnK,MAAAunK,YAAAltJ,OAAA6xM,EAAAjhN,EAAA+xN,YAAA,KACApxM,EAAAu4M,iBAAAlqO,KAAAiyN,EAAAS,IAAAtlD,EAAArnK,MAAAunK,eAEAjrJ,GAAA,OAAA,WACA4vM,EAAA2kC,cAAA52P,KAAAiyN,KAEA5vM,GAAA,UAAA,WACA,GAAAtc,GAAAqnK,EAAArnK,MAAAunK,WAEAvnK,IAAA4wP,EAAAt1O,UAAAtb,EAAAsb,SAAAs1O,EAAAr1O,UAAAvb,EAAAub,UAGA2wM,EAAA2S,kBACA3S,EAAA4S,aACAlzM,EAAAw4M,eAAAnqO,KAAAiyN,EAAAS,IAAAT,EAAAjhN,EAAA+xN,gBAEA9Q,EAAAltM,KAAA2xJ,MAAA,SAAAA,GACA,MAAA/kJ,GAAA4mM,aAAA55N,KAAAkU,EAAA6jK,GAAA/3K,KAAAqS,EAAA0lK,IAEAu7C,EAAAltM,KAAA8xO,eAAA,WACA,GAAAxkE,GAAA1gK,EAAAq4M,YAAAr4M,EAAAq4M,aAAA,EAAA,GACA,QAAA33C,EAAA,GAAAtpL,KAAAC,IAAAipN,EAAAykB,kBAAArkD,EAAA,GAAAA,EAAA,MAEA4/B,EAAAltM,KAAA+xN,kBAAA,WACA,GAAA9xG,GAAAmxG,EAAAlkB,EAAAjhN,EAAA+xN,aAAAoT,EAAAlkB,EAAAglB,iBACA5kD,EAAA1zL,KAAAk4P,gBAEA,OADAl4P,MAAAsuM,aAAA5a,EAAA,GAAArtD,EAAAqtD,EAAA,GAAArtD,IACArmI,OAGA82N,EAAAwhB,cAAA,WACA,GAAAhlB,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OAAAy7I,EAAA6kD,EAAA7kD,GACAn1G,EAAAm1G,EAAAn1G,KAAAg6J,EAAA2J,WAAA,GAAAjqM,EAAAy4M,aACAphO,EAAAokK,EAAApkK,KAAAipN,EAAA2J,WAAA,GAAAjqM,EAAA04M,YACA,QAAApyK,EAAAjvD,IAEAysN,EAAAoP,WAAA,WACA,GAAA5S,GAAAtzN,KAAAmU,EAAAm/M,EAAAtgM,OAAAkqM,aAAA5J,EAAAltM,KAAA,YACAktM,GAAAoI,KAAAxhN,OAAA,IAAAlF,EAAAypN,UAAAp9N,KAAA8S,GAAAuP,GAAA,gBAAA,MACA4vM,EAAAoI,KAAAptI,UAAA,IAAAt5E,EAAAqpO,WAAAh9O,KAAA8S,GAAAuP,GAAA,gBAAA,OAEAozM,EAAAmhC,cAAA,WACA,GAAA3kC,GAAAtzN,KAAAyuK,EAAA6kD,EAAA7kD,GAAAz7I,EAAAsgM,EAAAtgM,OAAA5M,EAAAktM,EAAAltM,KAAA/T,EAAAihN,EAAAjhN,CACA,IAAA2gB,EAAAkqM,cAGA,IAAA5J,EAAAmQ,oBAAAnQ,EAAAjjN,KAAAqvB,SAAA/+B,OAAA,CAGA,GAAA,cAAA8tK,EAAArnK,MAAAunK,YAAA9tK,MAAAulB,EAAAyvO,UAGA,MAFAxjP,GAAAitL,OAAAl5K,EAAAyvO,eACAzvO,GAAA2xJ,MAAA1lK,GAAA8lO,mBAGA7kB,GAAAuQ,iBAAAxxN,EAAA+xN,YAAA,KAAA9Q,EAAA2J,WAAA,IACA5qN,EAAAitL,QAAAg0B,EAAA2J,WAAA,GAAA,MAAA5qN,EAAA+xN,YAAA,KAEA9Q,EAAAxC,QACAiO,gBAAA,EACAgD,MAAA/uM,EAAAmxM,aACAnC,cAAA,EACAI,eAAA,EACAC,eAAA,IAEA,cAAA5zD,EAAArnK,MAAAunK,YAAA9tK,OACAyyN,EAAAsF,aAAA,GAEA5lM,EAAAs4M,YAAAjqO,KAAAiyN,EAAAS,IAAA1hN,EAAA+xN,eAGAtN,EAAAiC,cAAA,WACA,GAAAzF,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OAAAy7I,EAAA6kD,EAAA7kD,GACA7uC,EAAA5sG,EAAAw5M,YACA5oL,EAAA8jL,EAAA10M,EAAAq6M,eAAAr6M,EAAAq6M,cAAA5+D,EAAAsJ,MAAAwzC,aAAAtjK,QACAuxF,EAAAxmH,EAAAu5M,WACAlvL,IAEA,OAAA,UAAAn9C,GACA,GAAAkuH,GAAA77G,EAAArS,EAAAqS,IAAArS,EAAAmQ,MAAAnQ,EAAAmQ,KAAAkC,IAAArS,CAgBA,OAbA0/H,GAAArtH,YAAA+oJ,UACAltC,EAAAwR,EAAArtH,GAAArS,GAGA0/H,EAAArtH,GACA67G,EAAAwR,EAAArtH,IAIA8qC,EAAA7sC,QAAA+B,GAAA,GAAA8qC,EAAA92C,KAAAgM,GACA67G,EAAAxqE,EAAAvG,EAAA7sC,QAAA+B,GAAAqxC,EAAAjjD,QACAi/H,EAAArtH,GAAA67G,GAEAorB,YAAA8hB,UAAA9hB,EAAAprB,EAAAluH,GAAAkuH,IAGA0oG,EAAAmC,mBAAA,WACA,GAAA3F,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OACA4sG,EAAA5sG,EAAAq6M,cACArhB,EAAAh5L,EAAAs6M,gBACA6qB,EAAA,UAAAnsC,EAAA1nN,KACAm5C,EAAAuuK,EAAAvuK,QAAAuuK,EAAAvuK,OAAA98C,OAAAqrN,EAAAvuK,UACApzC,EAAA2hN,EAAA3hN,KAAA,GACA,OAAAq9N,GAAA10M,EAAAs6M,iBAAA,SAAAh6N,GACA,GAAA/R,GAAAuP,EAAAs9G,EAAAwR,EAAAA,EAAAj/H,OAAA,EACA,KAAAY,EAAA,EAAAA,EAAAk8C,EAAA98C,OAAAY,IAEA,GADAuP,EAAAqnP,EAAA7kP,EAAA,IAAAA,EAAAjJ,EACAyG,EAAA2sC,EAAAl8C,GAAA,CACA6sH,EAAAwR,EAAAr+H,EACA,OAGA,MAAA6sH,IACA,MAGA0oG,EAAAo0B,WAAA,SAAAa,GACA,GAAAz4B,GAAAtzN,KACAo4P,EAAArM,IAAAz4B,EAAAkJ,QAAA,SAAAlJ,EAAAkgC,sBAAAlgC,EAAA+kC,QACAC,EAAAvM,IAAAz4B,EAAAkJ,QAAA,SAAAlJ,EAAAkgC,sBAAAlgC,EAAAilC,QACA,OAAA,UAAAznP,EAAAu1H,EAAA9zH,GACA,GAAAw5B,GAAA,OAAAunL,EAAA30I,KAAAi2J,MAAAriO,GAAA+lP,EAAAF,CACA,OAAArsN,GAAA1qC,KAAAiyN,EAAAxiN,EAAAu1H,KAGAywF,EAAAuhC,QAAA,SAAAvnP,GACA,GAAAwiN,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OACA+Y,EAAA/Y,EAAAo8M,mBAAAp8M,EAAAo8M,mBAAA9b,EAAAmgB,kBACA,OAAA1nM,GAAAj7B,IAEAgmN,EAAAyhC,SAAA,SAAAznP,GACA,GAAAwiN,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OACA+Y,EAAA/Y,EAAAi9M,oBAAAj9M,EAAAi9M,oBAAA3c,EAAAmgB,kBACA,OAAA1nM,GAAAj7B,IAEAgmN,EAAA2c,mBAAA,SAAA3iO,GACA,MAAAq3N,GAAAr3N,IAAAA,EAAA,IAEAgmN,EAAA08B,sBAAA,SAAA1iP,EAAAu1H,GACA,OAAA,IAAAA,GAAAhwG,QAAA,GAAA,KAEAygM,EAAA2kB,gBAAA,SAAAlB,GACA,GACAxuM,GADAunL,EAAAtzN,KAAAosO,EAAA9Y,EAAAtgM,OAAAo5M,YACAosB,EAAA,SAAA1nP,GAAA,MAAAq3N,GAAAr3N,IAAAA,EAAA,GAaA,OAVAi7B,GADA,kBAAAqgM,GAAArgM,OACAqgM,EAAArgM,OACA,gBAAAqgM,GAAArgM,OACAqgM,EAAArgM,OAAAwuM,GACAnO,EAAArgM,OAAAwuM,MAAA,EAAAie,EAAApsB,EAAArgM,OAAAwuM,GAEA,WAAA,MAAA,IAGAie,GAKA1hC,EAAA2hC,UAAA,SAAAp7M,GACA,IAAA,GAAA97C,GAAA,EAAAA,EAAA87C,EAAA18C,OAAAY,IACA,KAAA87C,EAAA97C,IAAAvB,MAAAod,OAAA,OAAA,CAEA,QAAA,GAEA05M,EAAA6mB,SAAA,SAAAprO,EAAA4F,GACAnY,KAAAod,MAAA7K,GAAAvS,KAAA65O,YAAA1hO,IAEA2+M,EAAA4hC,UAAA,SAAAr7M,GACA,GAAA97C,GAAAm+B,IACA,KAAAn+B,EAAA,EAAAA,EAAA87C,EAAA18C,OAAAY,IACA87C,EAAA97C,IAAAvB,MAAAod,OAAAsiB,EAAAn5B,KAAAvG,KAAA65O,YAAA75O,KAAAod,MAAAigC,EAAA97C,KAEA,OAAAm+B,GAGA,IAAA1qB,GAAA8hN,EAAA9hN,OACAmD,OAAA,YACA++M,MAAA,WACA6rB,UAAA,gBACAR,WAAA,iBACA0D,SAAA,eACAL,UAAA,gBACA4B,UAAA,gBACAN,WAAA,iBACAyM,SAAA,eACA7qB,UAAA,gBACAurB,eAAA,sBACAM,oBAAA,2BACAC,mBAAA,2BACAE,kBAAA,0BACAD,kBAAA,0BACA5R,eAAA,qBACAld,gBAAA,sBACAsY,UAAA,gBACAL,WAAA,iBACAI,iBAAA,wBACAD,mBAAA,0BACA1f,SAAA,eACAnO,MAAA,WACA7zI,QAAA,aACAk8K,UAAA,eACAtkI,OAAA,YACAmqG,QAAA,aACAlhM,MAAA,WACA2tN,iBAAA,uBACA5rN,QAAA,aACAksN,YAAA,kBACAj3H,MAAA,WACAtF,OAAA,YACAh8D,KAAA,UACAqI,MAAA,WACAwrC,IAAA,SACAo1I,KAAA,UACA1mH,OAAA,YACA8vH,QAAA,aACAltH,IAAA,SACA0vF,KAAA,UACA9iE,KAAA,UACA4/F,MAAA,WACAv4O,MAAA,WACA/L,KAAA,UACAsnP,MAAA,WACA+M,WAAA,iBACAzL,KAAA,UACAK,UAAA,gBACAD,MAAA,WACAH,OAAA,YACAmB,UAAA,gBACAd,WAAA,iBACAH,WAAA,iBACAY,MAAA,WACAb,OAAA,YACAmB,UAAA,gBACAd,WAAA,iBACA7qK,KAAA,UACAy1I,MAAA,YACA46B,WAAA,kBACA16B,MAAA,YACA46B,WAAA,kBACArmB,OAAA,aACAumB,YAAA,mBACAP,iBAAA,uBACA/Q,WAAA,iBACA6Q,gBAAA,uBACAC,eAAA,sBACAnC,iBAAA,wBACAG,kBAAA,yBACAkJ,SAAA,cACArW,SAAA,aACA2W,SAAA,aACAE,SAAA,aAEAx/B,GAAAksB,cAAA,SAAA1pM,EAAAihM,GACA,MAAA,IAAAjhM,EAAA,IAAAA,EAAAt5C,KAAAk8O,wBAAA3B,IAEAzjB,EAAA4wB,UAAA,SAAAxnP,GACA,MAAAF,MAAAgjP,cAAAhuO,EAAA3U,KAAAH,EAAA0a,QAEAk8M,EAAAywB,WAAA,SAAArnP,GACA,MAAAF,MAAAgjP,cAAAhuO,EAAA2yO,MAAAznP,EAAAqS,KAEAukN,EAAA8hC,WAAA,SAAA14P,GACA,MAAAF,MAAAgjP,cAAAhuO,EAAAs/G,MAAAp0H,EAAA0a,QAEAk8M,EAAA+hC,YAAA,SAAA34P,GACA,MAAAF,MAAAgjP,cAAAhuO,EAAAg6G,OAAA9uH,EAAAqS,KAEAukN,EAAAssB,UAAA,SAAAljP,GACA,MAAAF,MAAA44P,WAAA14P,GAAAF,KAAAgjP,cAAAhuO,EAAAg+C,KAAA9yD,EAAAqS,KAEAukN,EAAA6rB,WAAA,SAAAziP,GACA,MAAAF,MAAA64P,YAAA34P,GAAAF,KAAAgjP,cAAAhuO,EAAAqmD,MAAAn7D,EAAAqS,KAEAukN,EAAAyuB,YAAA,SAAArlP,GACA,MAAAF,MAAA44P,WAAA14P,GAAAF,KAAAgjP,cAAAhuO,EAAAugH,OAAAr1H,EAAA0a,QAEAk8M,EAAA+rB,aAAA,SAAA3iP,GACA,MAAAF,MAAA64P,YAAA34P,GAAAF,KAAAgjP,cAAAhuO,EAAAqwO,QAAAnlP,EAAAqS,KAEAukN,EAAAqvB,SAAA,SAAAjmP,GACA,MAAAF,MAAA44P,WAAA14P,GAAAF,KAAAgjP,cAAAhuO,EAAA6xF,IAAA3mG,EAAA0a,QAEAk8M,EAAAkvB,UAAA,SAAA9lP,GACA,MAAAF,MAAA64P,YAAA34P,GAAAF,KAAAgjP,cAAAhuO,EAAAinO,KAAA/7O,EAAAqS,KAEAukN,EAAAy9B,SAAA,SAAAr0P,GACA,MAAAF,MAAA44P,WAAA14P,EAAAmQ,MAAArQ,KAAAgjP,cAAAhuO,EAAAmjH,IAAAj4H,EAAAmQ,KAAAkC,KAEAukN,EAAAs9B,UAAA,SAAAl0P,GACA,MAAAF,MAAA64P,YAAA34P,EAAAmQ,MAAArQ,KAAAgjP,cAAAhuO,EAAA6yM,KAAA3nN,EAAAmQ,KAAAkC,KAEAukN,EAAA8tB,UAAA,SAAA1kP,GACA,MAAAF,MAAA44P,WAAA14P,GAAAF,KAAAgjP,cAAAhuO,EAAA+vI,KAAA7kJ,EAAAqS,KAEAukN,EAAA8rB,WAAA,SAAA1iP,GACA,MAAAF,MAAA64P,YAAA34P,GAAAF,KAAAgjP,cAAAhuO,EAAA2vO,MAAAzkP,EAAAqS,KAEAukN,EAAAk+B,YAAA,SAAA90P,EAAAqB,GACA,MAAAvB,MAAAgjP,cAAAhuO,EAAAq/G,OAAA9yH,GAAA,KAAA,SAAArB,GAAAA,EAAA,MAAA;EAEA42N,EAAAioB,WAAA,SAAA7+O,GACA,MAAAF,MAAAgjP,cAAAhuO,EAAAqpO,UAAAn+O,EAAA0a,QAEAk8M,EAAAgiC,YAAA,SAAAvmP,GACA,GAAA+gN,GAAAtzN,KACA+4P,EAAAzlC,EAAAtgM,OAAA+4M,aAAAx5N,GAAAymP,EAAA,EAIA,OAHAD,KACAC,EAAA,IAAAhkP,EAAAmD,OAAA,IAAA4gP,GAEAzlC,EAAA0vB,cAAAhuO,EAAAmD,OAAA5F,GAAAymP,GAEAliC,EAAAgsB,WAAA,SAAA5iP,GACA,MAAAF,MAAAi5P,aAAA/4P,GAAAF,KAAAk5P,eAAAh5P,IAEA42N,EAAAmiC,aAAA,SAAA/4P,GACA,MAAA,KAAAF,KAAAy5N,iBAAAjpN,QAAAtQ,EAAAqS,KAAA,EAAAyC,EAAAynE,QAAA,KAEAq6I,EAAAoiC,eAAA,SAAAh5P,GACA,MAAA,KAAAF,KAAA05N,mBAAAlpN,QAAAtQ,EAAAqS,KAAA,EAAAyC,EAAA2jP,UAAA,KAEA7hC,EAAAwwB,eAAA,SAAApnP,GACA,MAAA8U,GAAAwyO,UAAAxnP,KAAA84P,YAAA54P,EAAAqS,KAEAukN,EAAA4rB,eAAA,SAAAxiP,GACA,MAAA8U,GAAA+tO,UAAA/iP,KAAA84P,YAAA54P,EAAAqS,KAEAukN,EAAAivB,cAAA,SAAA7lP,GACA,MAAA8U,GAAAixO,SAAAjmP,KAAA84P,YAAA54P,EAAAqS,KAEAukN,EAAAq9B,cAAA,SAAAj0P,GACA,MAAA8U,GAAA2+O,SAAA3zP,KAAA84P,YAAA54P,EAAAmQ,KAAAkC,KAEAukN,EAAAolB,wBAAA,SAAA3B,GACA,MAAAA,IAAA,IAAAA,GAAA,IAAAA,GAAAl3O,QAAA,2CAAA,KAAA,IAEAyzN,EAAA+mB,eAAA,SAAAtrO,EAAA+mC,GACA,OAAAA,GAAA,IAAA,IAAAtkC,EAAAmD,OAAAnY,KAAAk8O,wBAAA3pO,IAEAukN,EAAA48B,gBAAA,SAAAr2M,EAAA/D,GACA,GAAAg6K,GAAAtzN,IAEA,OADAq9C,GAAAA,MACAA,EAAA18C,OAAA08C,EAAAz0C,IAAA,SAAA2J,GAAA,MAAA+gN,GAAAuqB,eAAAtrO,EAAA+mC,KAAA,MAEAw9K,EAAAqiC,eAAA,SAAA5mP,GACA,MAAA,IAAAyC,EAAA8oO,WAAA99O,KAAAk8O,wBAAA3pO,IAEAukN,EAAAi2B,gBAAA,SAAA1vM,GACA,GAAAi2K,GAAAtzN,IACA,OAAAq9C,IAAAA,EAAA18C,OAAA08C,EAAAz0C,IAAA,SAAA2J,GAAA,MAAA+gN,GAAA6lC,eAAA5mP,KAAA,KAGA,IAAA41N,GAAArR,EAAAqR,QAAA,SAAAr3N,GACA,MAAAA,IAAA,IAAAA,GAEA3P,EAAA21N,EAAA31N,WAAA,SAAAyE,GACA,MAAA,kBAAAA,IAEA8wC,EAAAogL,EAAApgL,SAAA,SAAA9wC,GACA,MAAA,gBAAAA,IAEAixC,EAAAigL,EAAAjgL,YAAA,SAAA/lC,GACA,MAAA,mBAAAA,IAEAujO,EAAAvd,EAAAud,UAAA,SAAAvjO,GACA,MAAA,mBAAAA,IAEAwvO,EAAAxpB,EAAAwpB,OAAA,SAAAxvO,GACA,MAAA,IAAA1G,KAAA4vE,KAAAlpE,EAAA,KAEAg3N,EAAAhR,EAAAgR,YAAA,SAAAniO,GACA,MAAAyE,MAAA4vE,KAAAr0E,GAAA,IAEA6xO,EAAA1gB,EAAA0gB,WAAA,SAAAt3O,GACA,MAAAA,GAAA,GAAAA,EAAA,IAEAqqD,EAAAusK,EAAAvsK,QAAA,SAAA3kD,GACA,MAAA,mBAAAA,IAAA,OAAAA,GAAA8wC,EAAA9wC,IAAA,IAAAA,EAAAjF,QAAA,gBAAAiF,IAAA,IAAA0K,OAAAmoC,KAAA7yC,GAAAjF,QAEA+mO,EAAA5Q,EAAA4Q,SAAA,SAAA9hO,GACA,OAAAkxN,EAAAvsK,QAAA3kD,IAEA2oE,EAAAuoJ,EAAAvoJ,UAAA,SAAAxnD,EAAAxE,EAAAna,GACA,MAAAisO,GAAAttN,EAAAxE,IAAAwE,EAAAxE,GAAAna,GAEAowO,EAAA1hB,EAAA0hB,SAAA,SAAAj1G,EAAAjwH,GACA,GAAAsuD,IAAA,CAIA,OAHAtxD,QAAAmoC,KAAA8qF,GAAAmV,QAAA,SAAAn2H,GACAghH,EAAAhhH,KAAAjP,IAAAsuD,GAAA,KAEAA,GAEA0pL,EAAAx0B,EAAAw0B,SAAA,SAAA14N,GACA,MAAA,gBAAAA,GAAAA,EAAAvvB,QAAA,KAAA,QAAAA,QAAA,KAAA,QAAAuvB,GAEA4jO,EAAA1/B,EAAA0/B,WAAA,SAAAtlI,GACA,GAAA7kF,GAAA6kF,EAAAzqG,wBACAmuH,GAAA1jB,EAAA81H,YAAAl0N,QAAA,GAAAo+F,EAAA81H,YAAAl0N,QAAA,IACA2iO,EAAA7gH,EAAA,GAAAviI,EAAAsjP,EAAAvrP,KAAAkvD,IAAAs7E,EAAA,GAAA1gI,EAAA0gI,EAAA,GAAA1gI,EACA,QAAA7B,EAAAojP,EAAAvhP,EAAAyhP,EAAAlsP,MAAA4iC,EAAA5iC,MAAAiC,OAAA2gC,EAAA3gC,QAGAooN,GAAAv7M,MAAA,SAAAmiO,GACA,GAAAjzB,GAAA6L,EAAAtzN,KAAAuzN,QAEAmnB,GAAApnB,EAAA+mB,eAAAK,GACAjzB,EAAA6L,EAAAvyG,IAAAzyB,UAAAglI,EAAAogC,gBAAAhZ,EAAAh5O,OAAA4xN,EAAAsO,eAAAtO,KAEAtzN,KAAA0wD,SACA1wD,KAAAo5P,UACA3xC,EAAA5b,QAAA72L,EAAAynE,SAAA,GAAAovH,QAAA72L,EAAA2jP,WAAA,GACArlC,EAAAuM,cACAvM,EAAAmgC,UAAA/Y,GAEApnB,EAAAq5B,kBAAAjS,GAAA,GAEApnB,EAAAmG,iBAAAihB,EACApnB,EAAAoG,mBAAApG,EAAAoG,mBAAAh4N,OAAA,SAAA6Q,GACA,MAAAmoO,GAAAlqO,QAAA+B,GAAA,KAIAuhN,EAAAslC,QAAA,SAAA1e,GACA,GAAAjzB,GAAA6L,EAAAtzN,KAAAuzN,QAEAmnB,GAAApnB,EAAA+mB,eAAAK,GACAjzB,EAAA6L,EAAAvyG,IAAAzyB,UAAAglI,EAAAogC,gBAAAhZ,EAAAh5O,OAAA4xN,EAAAsO,eAAAtO,KAEA7L,EAAA5b,QAAA72L,EAAAynE,SAAA,GAAAovH,QAAA72L,EAAA2jP,WAAA,GACArlC,EAAAuM,cACAvM,EAAAwgC,YAAApZ,GAEApnB,EAAAq5B,kBAAAjS,GAAA,GAEApnB,EAAAmG,iBAAAnG,EAAAmG,iBAAA/3N,OAAA,SAAA6Q,GACA,MAAAmoO,GAAAlqO,QAAA+B,GAAA,IAEA+gN,EAAAoG,mBAAAghB,GAGA5mB,EAAApjK,OAAA,SAAAgqL,GACA,GAAAjzB,GAAA6L,EAAAtzN,KAAAuzN,QAEAmnB,GAAApnB,EAAA+mB,eAAAK,GACAjzB,EAAA6L,EAAAvyG,IAAAzyB,UAAAglI,EAAAogC,gBAAAhZ,IAEAjzB,EAAA5b,QAAA72L,EAAAynE,SAAA,GAAAovH,QAAA72L,EAAA2jP,WAAA,GACArlC,EAAAuM,cACAvM,EAAAwgC,YAAApZ,GAEApnB,EAAAtgM,OAAAypM,cACAnJ,EAAAw5B,WAAApS,EAAAh5O,OAAA4xN,EAAAknB,eAAA3oN,KAAAyhM,KACAA,EAAAiM,OAAAjxI,UAAAglI,EAAAy5B,gBAAArS,IACAh5O,OAAA,WACA,MAAA4xN,GAAA7kD,GAAAv0J,OAAAla,MAAA6rM,QAAA72L,EAAA43O,qBAEA/gD,QAAA72L,EAAA43O,mBAAA,IAGAt5B,EAAAmG,oBACAnG,EAAAoG,uBAGA5F,EAAAj2M,KAAA,SAAA68N,EAAA3zN,GACA,GAAA2Y,GAAA4zL,EAAAtzN,KAAAuzN,QAEAmnB,GAAApnB,EAAA+mB,eAAAK,GACA3zN,EAAAA,MAEAusM,EAAAqnB,sBAAAD,GACAh7M,EAAA4zL,EAAAvyG,IAAAzyB,UAAAglI,EAAAogC,gBAAAhZ,IAEAh7M,EAAA7G,aACAx0B,MAAA,UAAA,EAAA,aACAhD,KAAAiyN,EAAAmX,OAAA,WACA/qM,EAAAr7B,MAAA,UAAA,MAAAA,MAAA,UAAA,KAGA0iB,EAAAo7M,YACA7O,EAAAw5B,WAAApS,GAGApnB,EAAAxC,QAAAoO,sBAAA,EAAAD,mBAAA,EAAAkD,YAAA,KAGArO,EAAAh2M,KAAA,SAAA48N,EAAA3zN,GACA,GAAA2Y,GAAA4zL,EAAAtzN,KAAAuzN,QAEAmnB,GAAApnB,EAAA+mB,eAAAK,GACA3zN,EAAAA,MAEAusM,EAAA8I,mBAAAse,GACAh7M,EAAA4zL,EAAAvyG,IAAAzyB,UAAAglI,EAAAogC,gBAAAhZ,IAEAh7M,EAAA7G,aACAx0B,MAAA,UAAA,EAAA,aACAhD,KAAAiyN,EAAAmX,OAAA,WACA/qM,EAAAr7B,MAAA,UAAA,MAAAA,MAAA,UAAA,KAGA0iB,EAAAo7M,YACA7O,EAAA05B,WAAAtS,GAGApnB,EAAAxC,QAAAoO,sBAAA,EAAAD,mBAAA,EAAAkD,YAAA,KAGArO,EAAA/1M,OAAA,SAAA28N,EAAA3zN,GACA,GAAAkb,GAAAjiC,KAAAszN,EAAAtzN,KAAAuzN,QACAD,GAAA+mB,eAAAK,GAAAhiG,QAAA,SAAA6hG,GACAjnB,EAAAsO,eAAA2Y,GAAAt4M,EAAAnkB,KAAAy8N,EAAAxzN,GAAAkb,EAAApkB,KAAA08N,EAAAxzN,MAIA+sM,EAAA1tM,KAAA,SAAAk5K,GACA,GAAAg0B,GAAAtzN,KAAAuzN,QASA,OARAj0B,KACAg0B,EAAAgU,iBACAhoC,EAAAA,EAAA12L,IAAA,SAAAyJ,GAAA,MAAAihN,GAAAiV,UAAAl2N,MAEAihN,EAAAhD,MAAA58B,OAAA4L,GACAg0B,EAAAxC,QAAAmO,mBAAA,EAAA8C,MAAAzO,EAAAtgM,OAAAmxM,eACA7Q,EAAAtgM,OAAAs4M,YAAAjqO,KAAArB,KAAAszN,EAAAjhN,EAAA+xN,cAEA9Q,EAAAhD,MAAA58B,UAEAogC,EAAA1tM,KAAA8Y,OAAA,SAAAvmB,GACA,GAAA26M,GAAAtzN,KAAAuzN,QACAD,GAAAtgM,OAAAkqM,aAAAvkN,EACA26M,EAAA4T,mBAEApT,EAAAulC,OAAA,WACA,GAAA/lC,GAAAtzN,KAAAuzN,QACAD,GAAAhD,MAAAtwL,QAAAmqB,SACAmpK,EAAAxC,QAAAmO,mBAAA,KAGAnL,EAAA1tM,KAAA/b,IAAA,SAAAA,GACA,GAAAipN,GAAAtzN,KAAAuzN,SAAAvgM,EAAAsgM,EAAAtgM,OAAAy7I,EAAA6kD,EAAA7kD,EACA,OAAA,KAAApkK,GAAAA,OACA2oB,EAAA04M,WAAAj9D,EAAApkK,KAAAipN,EAAA2J,WAAA,GAAA5yN,KAGA2oB,EAAA04M,YAIA5X,EAAA1tM,KAAAkzC,IAAA,SAAAA,GACA,GAAAg6J,GAAAtzN,KAAAuzN,SAAAvgM,EAAAsgM,EAAAtgM,OAAAy7I,EAAA6kD,EAAA7kD,EACA,OAAA,KAAAn1G,GAAAA,OACAtmC,EAAAy4M,WAAAh9D,EAAAn1G,KAAAg6J,EAAA2J,WAAA,GAAA3jK,KAGAtmC,EAAAy4M,YAIA3X,EAAA1tM,KAAA6hC,MAAA,SAAAA,GACA,MAAA/gD,WAAAvG,QACA0zO,EAAApsL,EAAA59C,MAAArK,KAAAs/L,OAAAj1L,IAAA49C,EAAA59C,UACAgqO,EAAApsL,EAAAqR,MAAAt5D,KAAAs/L,OAAAhmI,IAAArR,EAAAqR,QAGAjvD,IAAArK,KAAAs/L,OAAAj1L,MACAivD,IAAAt5D,KAAAs/L,OAAAhmI,QAKAw6J,EAAAlzM,KAAA,SAAAo3B,GACA,GAAAs7K,GAAAtzN,KAAAuzN,SAAAvgM,EAAAsgM,EAAAtgM,MAgCA,OA9BAglB,GAAAsrK,IACAgQ,EAAA6lB,MAAAnhM,EAAAsrK,IAGA,SAAAtrK,IACA87K,EAAAzjN,KAAAwvH,MAAAhuG,KAAA7xB,MAAAg4C,EAAA6nF,OAGA,WAAA7nF,IACA1nC,OAAAmoC,KAAAT,EAAA8I,SAAA43F,QAAA,SAAAnmI,GACAygB,EAAA+4M,aAAAx5N,GAAAylC,EAAA8I,QAAAvuC,KAIA,cAAAylC,IAAAs7K,EAAAuQ,kBACA7wM,EAAAw1M,kBAAAxwL,EAAAshN,YAGA,QAAAthN,IACA1nC,OAAAmoC,KAAAT,EAAAi8K,MAAAv7E,QAAA,SAAAnmI,GACAygB,EAAAi5M,UAAA15N,GAAAylC,EAAAi8K,KAAA1hN,KAIA,UAAAylC,IACA1nC,OAAAmoC,KAAAT,EAAA4nF,QAAA8Y,QAAA,SAAAnmI,GACAygB,EAAAw5M,YAAAj6N,GAAAylC,EAAA4nF,OAAArtH,KAIA,YAAAylC,IAAAs7K,EAAAmlC,UAAAzgN,EAAAuhN,cACAjmC,GAAA1yM,KAAA0yM,EAAAolC,UAAA1gN,EAAAuhN,UAAAvhN,EAAA31C,WAIA,UAAA21C,GAEAs7K,EAAA5nF,OAAA4nF,EAAA+mB,eAAA,iBAAAriM,GAAA0zF,QAAA1zF,EAAA0zF,OAAA,KAAA1zF,EAAA0zF,QAAA,WACA4nF,EAAAsqB,aAAA5lM,KAGAs7K,EAAAsqB,aAAA5lM,KAIA87K,EAAApoF,OAAA,SAAA1zF,GACA,GAAAs7K,GAAAtzN,KAAAuzN,QACAv7K,GAAAA,MACAA,YAAAjrC,OACAirC,GAAAqF,IAAArF,GACA,gBAAAA,KACAA,GAAAqF,KAAArF,KAEAs7K,EAAA5nF,OAAA4nF,EAAA+mB,eAAAriM,EAAAqF,KAAA,WACAi2K,EAAAxC,QAAAoO,sBAAA,EAAAD,mBAAA,EAAAkD,YAAA,IACAnqL,EAAA31C,MAAA21C,EAAA31C,UAIAyxN,EAAA+O,KAAA,SAAA7qL,GACA,GACAtY,GAAArvB,EACAmpP,EAAAl6D,EAAAm6D,EAAAC,EAAAj7L,EAAA9kC,EAFA25L,EAAAtzN,KAAAuzN,SACAomC,KAAAC,EAAAtmC,EAAAykB,kBACAp3O,EAAA,EAAAm4C,EAAA,CAEA,IAAAd,EAAAnrB,KACAxc,EAAAijN,EAAAqE,kBAAA3/K,EAAAnrB,KAAAmrB,EAAAS,UAEA,IAAAT,EAAAiwF,KACA53H,EAAAijN,EAAAuE,kBAAA7/K,EAAAiwF,UAEA,CAAA,IAAAjwF,EAAAolM,QAIA,MAHA/sO,GAAAijN,EAAAyE,qBAAA//K,EAAAolM,SAKA19M,EAAA4zL,EAAA2I,qBAAA5rN,GAAA,GAGAijN,EAAAjjN,KAAAqvB,QAAAg5G,QAAA,SAAA9nI,GACA,GAAArP,GAAAyC,EAAA49D,GAAA,CACA,KAAArgE,EAAA,EAAAA,EAAAm+B,EAAA/+B,OAAAY,IACA,GAAAqP,EAAA2B,KAAAmtB,EAAAn+B,GAAAgR,GAAA,CAQA,IAPAqvD,GAAA,EAEAhxD,EAAA6sC,OAAA7sC,EAAA6sC,OAAA98C,OAAA,KACAm4C,EAAAloC,EAAA6sC,OAAA7sC,EAAA6sC,OAAA98C,OAAA,GAAAia,MAAA,GAEAja,EAAA++B,EAAAn+B,GAAAk8C,OAAA98C,OAEAqD,EAAA,EAAAA,EAAArD,EAAAqD,IACA07B,EAAAn+B,GAAAk8C,OAAAz5C,GAAA4W,MAAAk+B,EAAA90C,EACAsvN,EAAAgU,iBACA5nM,EAAAn+B,GAAAk8C,OAAAz5C,GAAAqO,EAAAymC,EAAA90C,EAGA4M,GAAA6sC,OAAA7sC,EAAA6sC,OAAA1xC,OAAA2zB,EAAAn+B,GAAAk8C,QAEA/d,EAAAnuB,OAAAhQ,EAAA,EACA,OAGAqgE,GAAA+3L,EAAApzP,KAAAqK,EAAA2B,MAIA+gN,EAAAjjN,KAAAqvB,QAAAg5G,QAAA,SAAA9nI,GACA,GAAArP,GAAAyC,CACA,KAAAzC,EAAA,EAAAA,EAAAo4P,EAAAh5P,OAAAY,IACA,GAAAqP,EAAA2B,KAAAonP,EAAAp4P,GAEA,IADAu3C,EAAAloC,EAAA6sC,OAAA7sC,EAAA6sC,OAAA98C,OAAA,GAAAia,MAAA,EACA5W,EAAA,EAAAA,EAAArD,EAAAqD,IACA4M,EAAA6sC,OAAAl3C,MACAgM,GAAA3B,EAAA2B,GACAqI,MAAAk+B,EAAA90C,EACAqO,EAAAihN,EAAAgU,eAAAhU,EAAA4lB,gBAAApgM,EAAA90C,GAAA80C,EAAA90C,EACAsP,MAAA,SAQAggN,EAAAjjN,KAAAqvB,QAAA/+B,QACA++B,EAAAg5G,QAAA,SAAA9nI,GACA,GAAArP,GAAAs4P,IACA,KAAAt4P,EAAA+xN,EAAAjjN,KAAAqvB,QAAA,GAAA+d,OAAA,GAAA7iC,MAAArZ,EAAAu3C,EAAAv3C,IACAs4P,EAAAtzP,MACAgM,GAAA3B,EAAA2B,GACAqI,MAAArZ,EACA8Q,EAAAihN,EAAAgU,eAAAhU,EAAA4lB,gBAAA33O,GAAAA,EACA+R,MAAA,MAGA1C,GAAA6sC,OAAAi7F,QAAA,SAAA5nI,GACAA,EAAA8J,OAAAk+B,EACAw6K,EAAAgU,iBACAx2N,EAAAuB,GAAAymC,KAGAloC,EAAA6sC,OAAAo8M,EAAA9tP,OAAA6E,EAAA6sC,UAGA61K,EAAAjjN,KAAAqvB,QAAA4zL,EAAAjjN,KAAAqvB,QAAA3zB,OAAA2zB,GAGA85N,EAAAlmC,EAAAykB,kBACA0hB,EAAAnmC,EAAAjjN,KAAAqvB,QAAA,GACAg6N,EAAAD,EAAAh8M,OAAA,GAGA42L,EAAAr8L,EAAAre,KACAh5B,EAAA,EACAg5B,EAAA25L,EAAAgU,eAAAhU,EAAAiV,UAAAvwL,EAAAre,IAAAqe,EAAAre,GACA8/N,EAAAh8M,OAAAi7F,QAAA,SAAA5nI,GACAA,EAAAuB,EAAAsnB,GAAAh5B,OAEA0zO,EAAAr8L,EAAAr3C,UACAA,EAAAq3C,EAAAr3C,QAIAi5P,EAYA,IAAAA,GACAtmC,EAAAgU,iBACA7oK,GAAAg7L,EAAAh8M,OAAAg8M,EAAAh8M,OAAA98C,OAAA,GAAA0R,EAAAqnP,EAAArnP,GAAA,EACAitL,GAAA,GAAArtL,OAAAynP,EAAArnP,EAAAosD,GAAA,GAAAxsD,OAAAynP,EAAArnP,EAAAosD,IACA60J,EAAAwQ,cAAA,MAAA,GAAA,GAAA,EAAAxkC,KAbA7gI,EAFA60J,EAAAgU,eACAmyB,EAAAh8M,OAAA98C,OAAA,EACA84P,EAAAh8M,OAAAg8M,EAAAh8M,OAAA98C,OAAA,GAAA0R,EAAAqnP,EAAArnP,EAEAqnP,EAAArnP,EAAAihN,EAAAsJ,WAAAtJ,EAAAjjN,KAAAqvB,SAAA,GAGA,EAEA4/J,GAAAo6D,EAAArnP,EAAAosD,EAAAi7L,EAAArnP,GACAihN,EAAAwQ,cAAA,MAAA,GAAA,GAAA,EAAAxkC,IAUAg0B,EAAAsL,cAAAtL,EAAAjjN,KAAAqvB,SAGA4zL,EAAAxC,QACA+R,MACAjoN,MAAA8+O,EAAA9+O,MACAja,OAAAA,EACA4M,SAAA46N,EAAAnwL,EAAAzqC,UAAAyqC,EAAAzqC,SAAA+lN,EAAAtgM,OAAA6uM,oBACAx/N,KAAA21C,EAAA31C,KACAu3P,aAAAA,GAEAz3B,YAAA,EACApD,eAAA66B,EAAA,EACA13B,iBAAA,EACAI,iBAAA,KAIAxL,EAAAwP,aAAA,SAAAtuL,GACA,GAAAs7K,GAAAtzN,KAAAgzB,EAAAsgM,EAAAtgM,OAAAy7I,EAAA6kD,EAAA7kD,EAEA,OAAA,YACA,GAYAqrF,GAAAl8M,EAKA0hJ,EAjBA5/J,EAAAsY,EAAAtY,QACAmjM,EAAA7qL,EAAA6qL,KACAL,EAAAxqL,EAAAwqL,QACA3yG,EAAA73E,EAAA63E,SACA0yG,EAAAvqL,EAAAuqL,SACA5/C,EAAA3qI,EAAA2qI,GACAC,EAAA5qI,EAAA4qI,GACA8gD,EAAA1rL,EAAA0rL,GACAjB,EAAAzqL,EAAAyqL,SACAzM,EAAAh+K,EAAAg+K,SACAzoN,EAAAyqC,EAAAzqC,SAEA4pE,EAAA,EACA4iL,EAAAl3B,EAAAjoN,MACAo/O,EAAAn3B,EAAAliO,OACAs5P,EAAA3mC,EAAAimB,gBAAAjmB,EAAAjjN,KAAAqvB,QAAA,GAAA+d,OAAAs8M,GACAG,EAAA5mC,EAAAimB,gBAAAjmB,EAAAjjN,KAAAqvB,QAAA,GAAA+d,OAAAs8M,EAAAC,GACA51B,EAAA9Q,EAAAjhN,EAAAitL,SACA66D,EAAAt3B,EAAAt1N,UAAAA,EACAlL,EAAAwgO,EAAAxgO,MAAA,aACAu1C,EAAA07K,EAAA0T,eAEAqiB,EAAA/1B,EAAA+1B,OAAA56E,EAAAngF,cACAi7J,EAAAj2B,EAAAi2B,YAAA96E,EAAAngF,cACAymK,EAAAzhC,EAAAyhC,YAAAtmF,EAAAngF,cACA64J,EAAA7zB,EAAA6zB,UAAA14E,EAAAngF,cACA83J,EAAA9yB,EAAA8yB,SAAA33E,EAAAngF,cACA40J,EAAA5vB,EAAA4vB,UAAAz0E,EAAAngF,cACAo2J,EAAApxB,EAAAoxB,UAAAj2E,EAAAngF,cACA82J,EAAA9xB,EAAA8xB,YAAA32E,EAAAngF,aAGAglI,GAAAqF,SAAA,EAGArF,EAAAjjN,KAAAqvB,QAAAg5G,QAAA,SAAAx4I,GACAA,EAAAu9C,OAAAlsC,OAAA,EAAAyoP,KAIA16D,EAAAg0B,EAAAwQ,cAAApkM,GAAA,GAAA,GAEA4zL,EAAAm2B,aAAAn2B,EAAAm2B,aAAA,GAGA5mB,EAAA+2B,aAaAE,EADA,IAAAj3B,EAAA+2B,eAAAK,GAAAA,EAAA5nP,MAAA6nP,GAAAA,EAAA7nP,GACAihN,EAAAjhN,EAAA+xN,EAAA,IAAA9Q,EAAAjhN,EAAAitL,EAAA,IAEAg0B,EAAAgU,eACAhU,EAAAjhN,EAAA+xN,EAAA,IAAA9Q,EAAAjhN,EAAAitL,EAAA,IAEAg0B,EAAAjhN,EAAA4nP,EAAA5nP,GAAAihN,EAAAjhN,EAAA6nP,EAAA7nP,GAjBA,IAAAihN,EAAAjjN,KAAAqvB,QAAA,GAAA+d,OAAA98C,OACAm5P,EAAAxmC,EAAAjhN,EAAA+xN,EAAA,IAAA9Q,EAAAjhN,EAAAitL,EAAA,IAEAg0B,EAAAgU,gBACA2yB,EAAA3mC,EAAAimB,gBAAAjmB,EAAAjjN,KAAAqvB,QAAA,GAAA+d,OAAA,GACAy8M,EAAA5mC,EAAAimB,gBAAAjmB,EAAAjjN,KAAAqvB,QAAA,GAAA+d,OAAA61K,EAAAjjN,KAAAqvB,QAAA,GAAA+d,OAAA98C,OAAA,GACAm5P,EAAAxmC,EAAAjhN,EAAA4nP,EAAA5nP,GAAAihN,EAAAjhN,EAAA6nP,EAAA7nP,IAEAynP,EAAAtiB,EAAAl4C,GAAA,EAYAnoH,EAAAqgK,EAAApT,GAAAoT,EAAAl4C,GACA1hJ,EAAA,aAAAk8M,EAAA,aAAA3iL,EAAA,MAEAm8I,EAAA6rB,iBAEA1wE,EAAA51I,aAAA+uK,KAAA,UAAAr6L,SAAA4sP,GAAAt4P,KAAA,WACA+1C,EAAAvwC,IAAAisN,EAAAW,KAAA5hN,EAAAwmB,aAAAx3B,KAAAiyN,EAAA2Q,QACArsL,EAAAvwC,IAAA++O,EAAAvtN,aAAA9hB,KAAA,YAAA6mC,IACAhG,EAAAvwC,IAAA67O,EAAArqN,aAAA9hB,KAAA,YAAA6mC,IACAhG,EAAAvwC,IAAAq9O,EAAA7rN,aAAA9hB,KAAA,YAAA6mC,IACAhG,EAAAvwC,IAAA+9O,EAAAvsN,aAAA9hB,KAAA,YAAA6mC,IACAhG,EAAAvwC,IAAA8/O,EAAAtuN,aAAA9hB,KAAA,YAAA6mC,IACAhG,EAAAvwC,IAAA0tP,EAAArzP,OAAA4xN,EAAAgiC,aAAAz8N,aAAA9hB,KAAA,YAAA6mC,IACAhG,EAAAvwC,IAAAgiP,EAAAxwN,aAAA9hB,KAAA,YAAA6mC,IACAhG,EAAAvwC,IAAAkiP,EAAA1wN,aAAA9hB,KAAA,YAAA6mC,MAEAv8C,KAAAu2C,EAAA,WACA,GAAAr2C,GAAAytH,KAAA24H,KAAA3J,IAGA,IAAAgc,EAAA,CACA,IAAAz4P,EAAA,EAAAA,EAAAy4P,EAAAz4P,IACAytH,EAAAzoH,KAAA,IAAAyO,EAAAs/G,MAAA,KAAAylI,EAAAx4P,IACAomP,EAAAphP,KAAA,IAAAyO,EAAA3U,KAAA,KAAA05P,EAAAx4P,IACAy8O,EAAAz3O,KAAA,IAAAyO,EAAAqpO,UAAA,KAAA0b,EAAAx4P,GAEA+xN,GAAAvyG,IAAAzyB,UAAA,IAAAt5E,EAAAg6G,QAAA1gC,UAAA0gC,GAAApiH,SACA0mN,EAAAvyG,IAAAzyB,UAAA,IAAAt5E,EAAA2yO,OAAAr5J,UAAAq5J,GAAA/6O,SACA0mN,EAAAvyG,IAAAzyB,UAAA,IAAAt5E,EAAAgpO,YAAA1vJ,UAAA0vJ,GAAApxO,SACA0mN,EAAAvyG,IAAA7mG,OAAA,IAAAlF,EAAAq0O,OAAAz8O,SAIAy8O,EACAtyO,KAAA,YAAA,MACAA,KAAAu8M,EAAAu2B,WACAN,EACAxyO,KAAA,YAAA,MACAwyO,EAAArvO,OAAA,QACAnD,KAAA,KAAAic,EAAA4mM,aAAA,EAAA8J,GACA3sN,KAAA,KAAAic,EAAA4mM,aAAAtG,EAAA7pN,MAAAi6N,GACA6lB,EAAArvO,OAAA,QACAnD,KAAA,IAAAic,EAAA4mM,aAAAtG,EAAA7pN,MAAA,GACAsN,KAAA,IAAA2sN,GACA0iB,EACArvO,KAAA,YAAA,MACAA,KAAA,IAAAyrN,GACA0gB,EACAnsO,KAAA,YAAA,MACAA,KAAA,IAAA84G,GACA60H,EACA3tO,KAAA,YAAA,MACAA,KAAA,IAAAwrN,GACA6iB,EACAruO,KAAA,YAAA,MACAA,KAAA,KAAA4rK,GACA5rK,KAAA,KAAA6rK,GACAukE,EACApwO,KAAA,YAAA,MACAA,KAAA,IAAA0rN,GACA1rN,KAAA,IAAAi/M,GACA3xN,MAAA,eAAAivN,EAAA+U,eAAAx2M,KAAAyhM,IACAyhC,EACAh+O,KAAA,YAAA,MACAg+O,EAAA76O,OAAA,QAAAxY,OAAA4xN,EAAAgiC,aACAv+O,KAAA,IAAAu8M,EAAA4hC,QAAArjO,KAAAyhM,IACAv8M,KAAA,QAAAu8M,EAAA8hC,YAAAvjO,KAAAyhM,IAEAtgM,EAAAgzM,qBACA1S,EAAA2S,kBAIA5jO,IAEAixN,EAAAqF,SAAA,MAKA7E,EAAAl7M,SAAA,SAAA2hO,GACA,GAAAjnB,GAAAtzN,KAAAuzN,SAAA9kD,EAAA6kD,EAAA7kD,EACA,OAAAA,GAAAppK,MACAiuN,EAAAoI,KAAAptI,UAAA,IAAAt5E,EAAAg6G,OAAAskG,EAAA4oB,wBAAA3B,IAAAjsJ,UAAA,IAAAt5E,EAAAs/G,OACA5yH,OAAA,WAAA,MAAA+sK,GAAAv0J,OAAAla,MAAA6rM,QAAA72L,EAAAohP,YACAxtP,IAAA,SAAA1I,GAAA,MAAAA,GAAA0I,IAAA,SAAA1I,GAAA,GAAAmQ,GAAAnQ,EAAA0xK,QAAA,OAAAvhK,GAAAA,KAAAA,EAAAA,KAAAA,QAGAyjN,EAAA55M,OAAA,SAAAmjC,EAAA+mF,EAAAg2H,GACA,GAAA9mC,GAAAtzN,KAAAuzN,SAAA9kD,EAAA6kD,EAAA7kD,GAAAz7I,EAAAsgM,EAAAtgM,MACAA,GAAAy5M,wBACAnZ,EAAAoI,KAAAptI,UAAA,IAAAt5E,EAAAg6G,QAAA1gC,UAAA,IAAAt5E,EAAAs/G,OAAAzyH,KAAA,SAAA3B,EAAAqB,GACA,GAAA+yH,GAAAm6C,EAAAv0J,OAAAla,MAAAuS,EAAArS,EAAAmQ,KAAAnQ,EAAAmQ,KAAAkC,GAAArS,EAAAqS,GACAwL,EAAAu1M,EAAAwjC,UAAA92P,KAAAE,GAAA2xB,KAAAyhM,GACA+mC,EAAArnO,EAAA05M,yBAAArvL,GAAAA,EAAA7sC,QAAA+B,IAAA,EACA+nP,GAAAl2H,GAAAA,EAAA5zH,QAAAjP,IAAA,EACA40P,EAAA7hI,EAAAu3E,QAAA72L,EAAAohP,SAEA9hI,GAAAu3E,QAAA72L,EAAAg+C,OAAAshE,EAAAu3E,QAAA72L,EAAA+vI,QAGAs1G,GAAAC,EACAtnO,EAAA25M,4BAAAzsO,KAAAi2P,GACAp4O,GAAA,EAAAu2G,EAAAu3E,QAAA72L,EAAAohP,UAAA,GAAAl2P,EAAAqB,GAEA8yO,EAAA+lB,IAAAA,GACAjE,GACAp4O,GAAA,EAAAu2G,EAAAu3E,QAAA72L,EAAAohP,UAAA,GAAAl2P,EAAAqB,OAKAuyN,EAAAymC,SAAA,SAAAl9M,EAAA+mF,GACA,GAAAkvF,GAAAtzN,KAAAuzN,SAAA9kD,EAAA6kD,EAAA7kD,GAAAz7I,EAAAsgM,EAAAtgM,MACAA,GAAAy5M,wBACAnZ,EAAAoI,KAAAptI,UAAA,IAAAt5E,EAAAg6G,QAAA1gC,UAAA,IAAAt5E,EAAAs/G,OAAAzyH,KAAA,SAAA3B,EAAAqB,GACA,GAAA+yH,GAAAm6C,EAAAv0J,OAAAla,MAAAuS,EAAArS,EAAAmQ,KAAAnQ,EAAAmQ,KAAAkC,GAAArS,EAAAqS,GACAwL,EAAAu1M,EAAAwjC,UAAA92P,KAAAE,GAAA2xB,KAAAyhM,GACA+mC,EAAArnO,EAAA05M,yBAAArvL,GAAAA,EAAA7sC,QAAA+B,IAAA,EACA+nP,GAAAl2H,GAAAA,EAAA5zH,QAAAjP,IAAA,EACA40P,EAAA7hI,EAAAu3E,QAAA72L,EAAAohP,SAEA9hI,GAAAu3E,QAAA72L,EAAAg+C,OAAAshE,EAAAu3E,QAAA72L,EAAA+vI,OAGAs1G,GAAAC,GACAtnO,EAAA25M,4BAAAzsO,IACAi2P,GACAp4O,GAAA,EAAAu2G,EAAAu3E,QAAA72L,EAAAohP,UAAA,GAAAl2P,EAAAqB,MAOAuyN,EAAAl2K,UAAA,SAAA/8C,EAAA65O,GACA,GAAApnB,GAAAtzN,KAAAuzN,SACAxsM,GAAA,MAAA,SAAAvW,QAAA3P,IAAA,GAAAm+N,eAAA,GAAA,IACA1L,GAAAknC,YAAA9f,EAAA75O,EAAAkmB,IAGA+vM,EAAA0jC,YAAA,SAAA9f,EAAA75O,EAAA45P,GACA,GAAAnnC,GAAAtzN,KACAm/N,GAAA7L,EAAAuM,aACA94M,EAAA0zO,IAAAt7B,sBAAAA,EACAp4M,GAAAogN,4BAAA,EACA7T,EAAAwF,YAAA,EACAxF,EAAAoqB,cAAAhD,EAAA75O,GACAyyN,EAAAsL,cAAAtL,EAAAjjN,KAAAqvB,SACA4zL,EAAA4T,gBAAAngN,IAGA+sM,EAAA1tF,OAAA,SAAAA,GACA,GAAAktF,GAAAtzN,KAAAuzN,SAAAvgM,EAAAsgM,EAAAtgM,MACA,OAAA6jB,GAAAuvF,GAAApzG,EAAAg5M,aACAh5M,EAAAg5M,YAAA5lG,EACAktF,EAAAxC,SACA99L,EAAAg5M,cAGAlY,EAAAo1B,OAAA,SAAAwR,GACA,GAAApnC,GAAAtzN,KAAAuzN,SAAAvgM,EAAAsgM,EAAAtgM,MACA,OAAA0nO,IACA1nO,EAAAu9M,aAAAmqB,EACApnC,EAAA+T,uBACAr0M,EAAAu9M,cAHAv9M,EAAAu9M,cAKAzc,EAAAo1B,OAAA7hP,IAAA,SAAAqzP,GACA,GAAApnC,GAAAtzN,KAAAuzN,QACA,OAAAvzN,MAAAkpP,OAAA51B,EAAAtgM,OAAAu9M,aAAAxkO,OAAA2uP,EAAAA,QAEA5mC,EAAAo1B,OAAAt8O,OAAA,SAAA+qD,GACA,GAAA27J,GAAAtzN,KAAAuzN,QACAD,GAAAw3B,gBAAAnzL,GAAA,IAGAm8J,EAAAq1B,OAAA,SAAAuR,GACA,GAAApnC,GAAAtzN,KAAAuzN,SAAAvgM,EAAAsgM,EAAAtgM,MACA,OAAA0nO,IACA1nO,EAAAy9M,aAAAiqB,EACApnC,EAAA+T,uBACAr0M,EAAAy9M,cAHAz9M,EAAAy9M,cAKA3c,EAAAq1B,OAAA9hP,IAAA,SAAAqzP,GACA,GAAApnC,GAAAtzN,KAAAuzN,QACA,OAAAvzN,MAAAmpP,OAAA71B,EAAAtgM,OAAAy9M,aAAA1kO,OAAA2uP,EAAAA,QAEA5mC,EAAAq1B,OAAAv8O,OAAA,SAAA+qD,GACA,GAAA27J,GAAAtzN,KAAAuzN,QACAD,GAAAw3B,gBAAAnzL,GAAA,IAGAm8J,EAAA0K,QAAA,SAAAA,GACA,GAAAlL,GAAAtzN,KAAAuzN,SAAAvgM,EAAAsgM,EAAAtgM,MACA,OAAAwrM,IACAxrM,EAAAwrM,QAAAA,EACAlL,EAAA+T,uBACAr0M,EAAAwrM,SAHAxrM,EAAAwrM,SAKA1K,EAAA0K,QAAAn3N,IAAA,SAAAm3N,GACA,GAAAlL,GAAAtzN,KAAAuzN,SAAAvgM,EAAAsgM,EAAAtgM,MACA,OAAAwrM,IACAxrM,EAAAwrM,QAAAxrM,EAAAwrM,QAAAzyN,OAAAyyN,GACAlL,EAAA+T,uBACAr0M,EAAAwrM,SAHAxrM,EAAAwrM,SAKA1K,EAAA0K,QAAA5xN,OAAA,SAAAma,GACA,GACAxZ,GAAAuzC,EAAA09K,EADAlL,EAAAtzN,KAAAuzN,SAAAvgM,EAAAsgM,EAAAtgM,MAuBA,OApBAjM,GAAAA,MACAxZ,EAAA+lN,EAAA/kJ,UAAAxnD,EAAA,WAAAiM,EAAA6uM,qBACA/gL,EAAAwyK,EAAA/kJ,UAAAxnD,EAAA,WAAA/R,EAAAq/G,SAEAmqG,EAAAlL,EAAAoI,KAAAxhN,OAAA,IAAAlF,EAAAwpN,SAAAlwI,UAAAxtC,EAAAl4C,IAAA,SAAAzI,GAAA,MAAA,IAAAA,MACAoN,EAAAixN,EAAA3lM,aAAAtrB,SAAAA,GAAAixN,GACAn6N,MAAA,UAAA,GACAuI,SAEAomB,EAAAwrM,QAAAxrM,EAAAwrM,QAAA98N,OAAA,SAAA2yH,GACA,GAAAzyD,IAAA,CACA,QAAAyyD,EAAA,QAGAA,EAAA,MAAAnkH,MAAA,KAAAwoI,QAAA,SAAAv4I,GACA2gD,EAAAtwC,QAAArQ,IAAA,IAAAyhE,GAAA,MAEAA,KAGA5uC,EAAAwrM,SAGA1K,EAAAzjN,KAAA,SAAAqqO,GACA,GAAAh7M,GAAA1/B,KAAAuzN,SAAAljN,KAAAqvB,OACA,OAAA,mBAAAg7M,GAAAh7M,EAAAA,EAAAh+B,OAAA,SAAAkP,GACA,SAAA7E,OAAA2uO,GAAAlqO,QAAAI,EAAA2B,KAAA,KAGAuhN,EAAAzjN,KAAAsqP,MAAA,SAAAjgB,GACA,MAAA16O,MAAAuzN,SAAAkQ,oBAAAzjO,KAAAqQ,KAAAqqO,KAEA5mB,EAAAzjN,KAAAotC,OAAA,SAAA88L,GACA,GAAA76M,GAAA+d,EAAA,IAKA,OAJA88L,KACA76M,EAAA1/B,KAAAqQ,KAAAkqO,GACA98L,EAAA/d,EAAA,GAAAA,EAAA,GAAA+d,OAAA70C,IAAA,SAAA1I,GAAA,MAAAA,GAAAoT,QAAA,MAEAmqC,GAEAq2K,EAAAzjN,KAAAwvH,MAAA,SAAAA,GAEA,MADA7/H,MAAAuzN,SAAA05B,8BACAjtP,KAAAuzN,SAAAipB,qBAAA,QAAA38G,IAEAi0F,EAAAzjN,KAAAuvH,OAAA,SAAAA,GACA,MAAA5/H,MAAAuzN,SAAAipB,qBAAA,SAAA58G,IAEAk0F,EAAAzjN,KAAA4jN,KAAA,SAAAA,GACA,MAAAj0N,MAAAuzN,SAAAipB,qBAAA,OAAAvoB,IAGAH,EAAA8mC,SAAA,SAAAr5P,EAAAq5P,GACA,GAAAtnC,GAAAtzN,KAAAuzN,SAAAvgM,EAAAsgM,EAAAtgM,MAKA,OAJA9rB,WAAAvG,OAAA,IACAqyB,EAAAw1M,kBAAAjnO,GAAAq5P,EACAtnC,EAAAxC,UAEA99L,EAAAw1M,kBAAAjnO,IAEAuyN,EAAAwlC,WAAA,SAAAA,GACA,GAAAhmC,GAAAtzN,KAAAuzN,SAAAvgM,EAAAsgM,EAAAtgM,MACA,OAAA9rB,WAAAvG,QACAqyB,EAAAw1M,kBAAA8wB,EACAhmC,EAAAxC,SACA99L,EAAAw1M,mBAHAx1M,EAAAw1M,mBAOA1U,EAAA1lG,MAAA,SAAA77G,GACA,GAAA+gN,GAAAtzN,KAAAuzN,QACA,OAAAD,GAAAllG,MAAA77G,IAGAuhN,EAAAzhN,EAAA,SAAAA,GACA,GAAAihN,GAAAtzN,KAAAuzN,QAKA,OAJArsN,WAAAvG,SACA2yN,EAAAmmB,cAAAnmB,EAAAjjN,KAAAqvB,QAAArtB,GACAihN,EAAAxC,QAAAoO,sBAAA,EAAAD,mBAAA,KAEA3L,EAAAjjN,KAAAizM,IAEAwQ,EAAAxQ,GAAA,SAAAA,GACA,GAAAgQ,GAAAtzN,KAAAuzN,QAKA,OAJArsN,WAAAvG,SACA2yN,EAAAqmB,eAAArmB,EAAAjjN,KAAAqvB,QAAA4jL,GACAgQ,EAAAxC,QAAAoO,sBAAA,EAAAD,mBAAA,KAEA3L,EAAAjjN,KAAAizM,IAGAwQ,EAAAn1I,KAAA,aACAm1I,EAAAn1I,KAAAzzC,OAAA,SAAAA,GACA,GAAAooL,GAAAtzN,KAAAuzN,QACArsN,WAAAvG,SACA2P,OAAAmoC,KAAAvN,GAAAwtG,QAAA,SAAA69F,GACAjjB,EAAA30I,KAAAgxK,aAAApZ,EAAArrM,EAAAqrM,MAEAjjB,EAAA30I,KAAAimJ,iBAIA9Q,EAAAn1I,KAAAt0E,IAAA,SAAAA,GACA,GAAAipN,GAAAtzN,KAAAuzN,SAAAvgM,EAAAsgM,EAAAtgM,MACA,OAAA9rB,WAAAvG,QACA,gBAAA0J,IACA89N,EAAA99N,EAAAgI,KAAA2gB,EAAAy7M,WAAApkO,EAAAgI,GACA81N,EAAA99N,EAAA6J,KAAA8e,EAAA+7M,WAAA1kO,EAAA6J,GACAi0N,EAAA99N,EAAAqsH,MAAA1jG,EAAA48M,YAAAvlO,EAAAqsH,KAEA1jG,EAAA+7M,WAAA/7M,EAAA48M,YAAAvlO,MAEAipN,GAAAxC,QAAAoO,sBAAA,EAAAD,mBAAA,MAGA5sN,EAAA2gB,EAAAy7M,WACAv6N,EAAA8e,EAAA+7M,WACAr4G,GAAA1jG,EAAA48M,cAIA9b,EAAAn1I,KAAArlB,IAAA,SAAAA,GACA,GAAAg6J,GAAAtzN,KAAAuzN,SAAAvgM,EAAAsgM,EAAAtgM,MACA,OAAA9rB,WAAAvG,QACA,gBAAA24D,IACA6uK,EAAA7uK,EAAAjnD,KAAA2gB,EAAA07M,WAAAp1K,EAAAjnD,GACA81N,EAAA7uK,EAAAplD,KAAA8e,EAAAg8M,WAAA11K,EAAAplD,GACAi0N,EAAA7uK,EAAAo9D,MAAA1jG,EAAA68M,YAAAv2K,EAAAo9D,KAEA1jG,EAAAg8M,WAAAh8M,EAAA68M,YAAAv2K,MAEAg6J,GAAAxC,QAAAoO,sBAAA,EAAAD,mBAAA,MAGA5sN,EAAA2gB,EAAA07M,WACAx6N,EAAA8e,EAAAg8M,WACAt4G,GAAA1jG,EAAA68M,cAIA/b,EAAAn1I,KAAA12B,MAAA,SAAAA,GACA,MAAA/gD,WAAAvG,QACA0zO,EAAApsL,EAAA59C,MAAArK,KAAA2+E,KAAAt0E,IAAA49C,EAAA59C,UACAgqO,EAAApsL,EAAAqR,MAAAt5D,KAAA2+E,KAAArlB,IAAArR,EAAAqR,QAGAjvD,IAAArK,KAAA2+E,KAAAt0E,MACAivD,IAAAt5D,KAAA2+E,KAAArlB,QAKAw6J,EAAAyL,OAAA,aACAzL,EAAAyL,OAAA1hN,KAAA,SAAA68N,GACA,GAAApnB,GAAAtzN,KAAAuzN,QACAD,GAAAw5B,WAAAx5B,EAAA+mB,eAAAK,IACApnB,EAAA4T,iBAAA/E,YAAA,KAEArO,EAAAyL,OAAAzhN,KAAA,SAAA48N,GACA,GAAApnB,GAAAtzN,KAAAuzN,QACAD,GAAA05B,WAAA15B,EAAA+mB,eAAAK,IACApnB,EAAA4T,iBAAA/E,YAAA,KAGArO,EAAA/3L,OAAA,SAAAmd,GACA,GAAAo6K,GAAAtzN,KAAAuzN,SAAAvgM,EAAAsgM,EAAAtgM,MACAA,GAAA+3M,WAAA7xL,EAAAA,EAAAzvC,MAAA,KACAupB,EAAAg4M,YAAA9xL,EAAAA,EAAAxtC,OAAA,KACA1L,KAAAkjD,SAGA4wK,EAAA5wK,MAAA,WACA,GAAAowK,GAAAtzN,KAAAuzN,QACAD,GAAA4T,iBAAA/E,YAAA,EAAApD,gBAAA,EAAAoI,4BAAA,KAGArT,EAAA10L,QAAA,WACA,GAAAk0L,GAAAtzN,KAAAuzN,QAQA,IANAxzN,EAAAs6B,cAAAi5L,EAAA2H,4BAEA/kM,SAAAo9L,EAAA+W,eACAtqO,EAAA+oB,aAAAwqM,EAAA+W,eAGAtqO,EAAAqnE,YACArnE,EAAAqnE,YAAA,WAAAksJ,EAAA2W,oBACA,IAAAlqO,EAAA4C,oBACA5C,EAAA4C,oBAAA,SAAA2wN,EAAA2W,oBACA,CACA,GAAA9oL,GAAAphD,EAAAoqO,QAEAhpL,IAAAA,EAAA95C,KAAA85C,EAAAv0C,QACAu0C,EAAAv0C,OAAA0mN,EAAA2W,gBAWA,MAPA3W,GAAAyI,YAAAlwB,QAAA,MAAA,GAAAljM,KAAA,IAGA2H,OAAAmoC,KAAA66K,GAAA56E,QAAA,SAAAn2H,GACA+wM,EAAA/wM,GAAA,OAGA,MAGAuxM,EAAAz0L,QAAA,aACAy0L,EAAAz0L,QAAAxhB,KAAA,SAAAm6B,GACA,GAAAp9B,GAAA0xL,EAAAgnB,EAAAtzN,KAAAuzN,QAGAv7K,GAAAs0J,QACAA,EAAAt0J,EAAAs0J,OAIAt0J,EAAA3nC,KACAijN,EAAA+lB,eAEA/sC,GAAAgnB,EAAAjhN,EAAA2lC,EAAA3nC,KAAAgC,GAAAihN,EAAAqhB,UAAA38L,EAAA3nC,KAAAkC,IAAAylC,EAAA3nC,KAAAiD,QACAsH,EAAA,MAGAA,EAAAutN,EAAAnwL,EAAA3nC,KAAAuK,OAAAo9B,EAAA3nC,KAAAuK,MAAA04M,EAAAulB,YAAA7gM,EAAA3nC,KAAAgC,GAGA,mBAAA2lC,GAAA3lC,EACAuI,EAAA04M,EAAAulB,YAAA7gM,EAAA3lC,GAEA,mBAAA2lC,GAAAp9B,QACAA,EAAAo9B,EAAAp9B,OAIA04M,EAAAysB,cAAA,YAAAnlO,EAAA0xL,GACAgnB,EAAAysB,cAAA,YAAAnlO,EAAA0xL,GAEAgnB,EAAAtgM,OAAA8gN,eAAAzyO,KAAAiyN,EAAAt7K,EAAA3nC,OAEAyjN,EAAAz0L,QAAAvhB,KAAA,WAEA9d,KAAAuzN,SAAAwsB,cAAA,WAAA,GAEA//O,KAAAuzN,SAAAvgM,OAAA+gN,eAAA1yO,KAAArB,MAOA,IAAA+0N,EAuUA+B,GAAA4xB,SAAA,WACA,GAAA/0O,GAAA5T,EAAA+oC,UAAAC,SACA,OAAAp1B,GAAAnD,QAAA,WAAA,GAAAmD,EAAAnD,QAAA,UAAA,GAEAsmN,EAAA6xB,SAAA,WACA,GAAAh1O,GAAA5T,EAAA+oC,UAAAC,SACA,OAAAp1B,GAAAnD,QAAA,WAAA,GASA8qJ,SAAA1wJ,UAAAinB,OACAypI,SAAA1wJ,UAAAinB,KAAA,SAAAgpO,GACA,GAAA,kBAAA76P,MAGA,KAAA,IAAAsc,WAAA,uEAGA,IAAAw+O,GAAA/tP,MAAAnC,UAAAnI,MAAApB,KAAA6F,UAAA,GACA6zP,EAAA/6P,KACAg7P,EAAA,aACAC,EAAA,WACA,MAAAF,GAAAv4P,MAAAxC,eAAAg7P,GAAAh7P,KAAA66P,EAAAC,EAAA/uP,OAAAgB,MAAAnC,UAAAnI,MAAApB,KAAA6F,aAMA,OAHA8zP,GAAApwP,UAAA5K,KAAA4K,UACAqwP,EAAArwP,UAAA,GAAAowP,GAEAC,IAYA,WACA,cAAAl7P,KAEAA,EAAAm7P,WAAA,SAAAr6P,EAAAs6P,EAAAC,GACAp7P,KAAAq7P,YAAAx6P,EACAb,KAAAs7P,oBAAAH,EACAn7P,KAAAu7P,mBAAAH,GAGAF,WAAAM,gBAAA,EACAN,WAAAO,kBAAA,EACAP,WAAAQ,mBAAA,EACAR,WAAAS,mBAAA,EACAT,WAAAU,mBAAA,EACAV,WAAAW,mBAAA,EACAX,WAAAY,0BAAA,EACAZ,WAAAa,0BAAA,EACAb,WAAAc,8BAAA,EACAd,WAAAe,8BAAA,EACAf,WAAAgB,gBAAA,GACAhB,WAAAiB,gBAAA,GACAjB,WAAAkB,8BAAA,GACAlB,WAAAmB,8BAAA,GACAnB,WAAAoB,4BAAA,GACApB,WAAAqB,4BAAA,GACArB,WAAAsB,iCAAA,GACAtB,WAAAuB,iCAAA,GACAvB,WAAAwB,qCAAA,GACAxB,WAAAyB,qCAAA,GAGAzB,WAAAtwP,UAAAgyP,gBAAA,WACA58P,KAAAu7P,oBACAv7P,KAAAu7P,mBAAAsB,eAAA78P,OAGAD,EAAA+8P,oBAAA,SAAA1B,GACAF,WAAA75P,KAAArB,KAAAk7P,WAAAO,kBAAA,IAAAL,IAEA0B,oBAAAlyP,UAAA0F,OAAAukD,OAAAqmM,WAAAtwP,WACAkyP,oBAAAlyP,UAAA6F,SAAA,WAAA,MAAA,gCACAqsP,oBAAAlyP,UAAAmyP,cAAA,WAAA,MAAA/8P,MAAAs7P,qBACAwB,oBAAAlyP,UAAA/B,MAAA,WAAA,MAAA,IAAAi0P,qBAAA5mO,SAEAn2B,EAAAi9P,oBAAA,SAAA5B,EAAA/oP,EAAA6B,GACAgnP,WAAA75P,KAAArB,KAAAk7P,WAAAQ,mBAAA,IAAAN,GACAp7P,KAAA+1P,GAAA1jP,EACArS,KAAAg2P,GAAA9hP,GAEA8oP,oBAAApyP,UAAA0F,OAAAukD,OAAAqmM,WAAAtwP,WACAoyP,oBAAApyP,UAAA6F,SAAA,WAAA,MAAA,gCACAusP,oBAAApyP,UAAAmyP,cAAA,WAAA,MAAA/8P,MAAAs7P,oBAAA,IAAAt7P,KAAA+1P,GAAA,IAAA/1P,KAAAg2P,IACAgH,oBAAApyP,UAAA/B,MAAA,WAAA,MAAA,IAAAm0P,qBAAA9mO,OAAAl2B,KAAA+1P,GAAA/1P,KAAAg2P,KACA1lP,OAAA+M,eAAA2/O,oBAAApyP,UAAA,KAAA5F,IAAA,WAAA,MAAAhF,MAAA+1P,IAAAtyP,IAAA,SAAA4O,GAAArS,KAAA+1P,GAAA1jP,EAAArS,KAAA48P,mBAAAn8O,YAAA,IACAnQ,OAAA+M,eAAA2/O,oBAAApyP,UAAA,KAAA5F,IAAA,WAAA,MAAAhF,MAAAg2P,IAAAvyP,IAAA,SAAAyQ,GAAAlU,KAAAg2P,GAAA9hP,EAAAlU,KAAA48P,mBAAAn8O,YAAA,IAEA1gB,EAAAk9P,oBAAA,SAAA7B,EAAA/oP,EAAA6B,GACAgnP,WAAA75P,KAAArB,KAAAk7P,WAAAS,mBAAA,IAAAP,GACAp7P,KAAA+1P,GAAA1jP,EACArS,KAAAg2P,GAAA9hP,GAEA+oP,oBAAAryP,UAAA0F,OAAAukD,OAAAqmM,WAAAtwP,WACAqyP,oBAAAryP,UAAA6F,SAAA,WAAA,MAAA,gCACAwsP,oBAAAryP,UAAAmyP,cAAA,WAAA,MAAA/8P,MAAAs7P,oBAAA,IAAAt7P,KAAA+1P,GAAA,IAAA/1P,KAAAg2P,IACAiH,oBAAAryP,UAAA/B,MAAA,WAAA,MAAA,IAAAo0P,qBAAA/mO,OAAAl2B,KAAA+1P,GAAA/1P,KAAAg2P,KACA1lP,OAAA+M,eAAA4/O,oBAAAryP,UAAA,KAAA5F,IAAA,WAAA,MAAAhF,MAAA+1P,IAAAtyP,IAAA,SAAA4O,GAAArS,KAAA+1P,GAAA1jP,EAAArS,KAAA48P,mBAAAn8O,YAAA,IACAnQ,OAAA+M,eAAA4/O,oBAAAryP,UAAA,KAAA5F,IAAA,WAAA,MAAAhF,MAAAg2P,IAAAvyP,IAAA,SAAAyQ,GAAAlU,KAAAg2P,GAAA9hP,EAAAlU,KAAA48P,mBAAAn8O,YAAA,IAEA1gB,EAAAm9P,oBAAA,SAAA9B,EAAA/oP,EAAA6B,GACAgnP,WAAA75P,KAAArB,KAAAk7P,WAAAU,mBAAA,IAAAR,GACAp7P,KAAA+1P,GAAA1jP,EACArS,KAAAg2P,GAAA9hP,GAEAgpP,oBAAAtyP,UAAA0F,OAAAukD,OAAAqmM,WAAAtwP,WACAsyP,oBAAAtyP,UAAA6F,SAAA,WAAA,MAAA,gCACAysP,oBAAAtyP,UAAAmyP,cAAA,WAAA,MAAA/8P,MAAAs7P,oBAAA,IAAAt7P,KAAA+1P,GAAA,IAAA/1P,KAAAg2P,IACAkH,oBAAAtyP,UAAA/B,MAAA,WAAA,MAAA,IAAAq0P,qBAAAhnO,OAAAl2B,KAAA+1P,GAAA/1P,KAAAg2P,KACA1lP,OAAA+M,eAAA6/O,oBAAAtyP,UAAA,KAAA5F,IAAA,WAAA,MAAAhF,MAAA+1P,IAAAtyP,IAAA,SAAA4O,GAAArS,KAAA+1P,GAAA1jP,EAAArS,KAAA48P,mBAAAn8O,YAAA,IACAnQ,OAAA+M,eAAA6/O,oBAAAtyP,UAAA,KAAA5F,IAAA,WAAA,MAAAhF,MAAAg2P,IAAAvyP,IAAA,SAAAyQ,GAAAlU,KAAAg2P,GAAA9hP,EAAAlU,KAAA48P,mBAAAn8O,YAAA,IAEA1gB,EAAAo9P,oBAAA,SAAA/B,EAAA/oP,EAAA6B,GACAgnP,WAAA75P,KAAArB,KAAAk7P,WAAAW,mBAAA,IAAAT,GACAp7P,KAAA+1P,GAAA1jP,EACArS,KAAAg2P,GAAA9hP,GAEAipP,oBAAAvyP,UAAA0F,OAAAukD,OAAAqmM,WAAAtwP,WACAuyP,oBAAAvyP,UAAA6F,SAAA,WAAA,MAAA,gCACA0sP,oBAAAvyP,UAAAmyP,cAAA,WAAA,MAAA/8P,MAAAs7P,oBAAA,IAAAt7P,KAAA+1P,GAAA,IAAA/1P,KAAAg2P,IACAmH,oBAAAvyP,UAAA/B,MAAA,WAAA,MAAA,IAAAs0P,qBAAAjnO,OAAAl2B,KAAA+1P,GAAA/1P,KAAAg2P,KACA1lP,OAAA+M,eAAA8/O,oBAAAvyP,UAAA,KAAA5F,IAAA,WAAA,MAAAhF,MAAA+1P,IAAAtyP,IAAA,SAAA4O,GAAArS,KAAA+1P,GAAA1jP,EAAArS,KAAA48P,mBAAAn8O,YAAA,IACAnQ,OAAA+M,eAAA8/O,oBAAAvyP,UAAA,KAAA5F,IAAA,WAAA,MAAAhF,MAAAg2P,IAAAvyP,IAAA,SAAAyQ,GAAAlU,KAAAg2P,GAAA9hP,EAAAlU,KAAA48P,mBAAAn8O,YAAA,IAEA1gB,EAAAq9P,0BAAA,SAAAhC,EAAA/oP,EAAA6B,EAAAqiH,EAAAC,EAAAC,EAAAC,GACAwkI,WAAA75P,KAAArB,KAAAk7P,WAAAY,0BAAA,IAAAV,GACAp7P,KAAA+1P,GAAA1jP,EACArS,KAAAg2P,GAAA9hP,EACAlU,KAAAq9P,IAAA9mI,EACAv2H,KAAAs9P,IAAA9mI,EACAx2H,KAAAu9P,IAAA9mI,EACAz2H,KAAAw9P,IAAA9mI,GAEA0mI,0BAAAxyP,UAAA0F,OAAAukD,OAAAqmM,WAAAtwP,WACAwyP,0BAAAxyP,UAAA6F,SAAA,WAAA,MAAA,sCACA2sP,0BAAAxyP,UAAAmyP,cAAA,WAAA,MAAA/8P,MAAAs7P,oBAAA,IAAAt7P,KAAAq9P,IAAA,IAAAr9P,KAAAs9P,IAAA,IAAAt9P,KAAAu9P,IAAA,IAAAv9P,KAAAw9P,IAAA,IAAAx9P,KAAA+1P,GAAA,IAAA/1P,KAAAg2P,IACAoH,0BAAAxyP,UAAA/B,MAAA,WAAA,MAAA,IAAAu0P,2BAAAlnO,OAAAl2B,KAAA+1P,GAAA/1P,KAAAg2P,GAAAh2P,KAAAq9P,IAAAr9P,KAAAs9P,IAAAt9P,KAAAu9P,IAAAv9P,KAAAw9P,MACAltP,OAAA+M,eAAA+/O,0BAAAxyP,UAAA,KAAA5F,IAAA,WAAA,MAAAhF,MAAA+1P,IAAAtyP,IAAA,SAAA4O,GAAArS,KAAA+1P,GAAA1jP,EAAArS,KAAA48P,mBAAAn8O,YAAA,IACAnQ,OAAA+M,eAAA+/O,0BAAAxyP,UAAA,KAAA5F,IAAA,WAAA,MAAAhF,MAAAg2P,IAAAvyP,IAAA,SAAAyQ,GAAAlU,KAAAg2P,GAAA9hP,EAAAlU,KAAA48P,mBAAAn8O,YAAA,IACAnQ,OAAA+M,eAAA+/O,0BAAAxyP,UAAA,MAAA5F,IAAA,WAAA,MAAAhF,MAAAq9P,KAAA55P,IAAA,SAAA8yH,GAAAv2H,KAAAq9P,IAAA9mI,EAAAv2H,KAAA48P,mBAAAn8O,YAAA,IACAnQ,OAAA+M,eAAA+/O,0BAAAxyP,UAAA,MAAA5F,IAAA,WAAA,MAAAhF,MAAAs9P,KAAA75P,IAAA,SAAA+yH,GAAAx2H,KAAAs9P,IAAA9mI,EAAAx2H,KAAA48P,mBAAAn8O,YAAA,IACAnQ,OAAA+M,eAAA+/O,0BAAAxyP,UAAA,MAAA5F,IAAA,WAAA,MAAAhF,MAAAu9P,KAAA95P,IAAA,SAAAgzH,GAAAz2H,KAAAu9P,IAAA9mI,EAAAz2H,KAAA48P,mBAAAn8O,YAAA,IACAnQ,OAAA+M,eAAA+/O,0BAAAxyP,UAAA,MAAA5F,IAAA,WAAA,MAAAhF,MAAAw9P,KAAA/5P,IAAA,SAAAizH,GAAA12H,KAAAw9P,IAAA9mI,EAAA12H,KAAA48P,mBAAAn8O,YAAA,IAEA1gB,EAAA09P,0BAAA,SAAArC,EAAA/oP,EAAA6B,EAAAqiH,EAAAC,EAAAC,EAAAC,GACAwkI,WAAA75P,KAAArB,KAAAk7P,WAAAa,0BAAA,IAAAX,GACAp7P,KAAA+1P,GAAA1jP,EACArS,KAAAg2P,GAAA9hP,EACAlU,KAAAq9P,IAAA9mI,EACAv2H,KAAAs9P,IAAA9mI,EACAx2H,KAAAu9P,IAAA9mI,EACAz2H,KAAAw9P,IAAA9mI,GAEA+mI,0BAAA7yP,UAAA0F,OAAAukD,OAAAqmM,WAAAtwP,WACA6yP,0BAAA7yP,UAAA6F,SAAA,WAAA,MAAA,sCACAgtP,0BAAA7yP,UAAAmyP,cAAA,WAAA,MAAA/8P,MAAAs7P,oBAAA,IAAAt7P,KAAAq9P,IAAA,IAAAr9P,KAAAs9P,IAAA,IAAAt9P,KAAAu9P,IAAA,IAAAv9P,KAAAw9P,IAAA,IAAAx9P,KAAA+1P,GAAA,IAAA/1P,KAAAg2P,IACAyH,0BAAA7yP,UAAA/B,MAAA,WAAA,MAAA,IAAA40P,2BAAAvnO,OAAAl2B,KAAA+1P,GAAA/1P,KAAAg2P,GAAAh2P,KAAAq9P,IAAAr9P,KAAAs9P,IAAAt9P,KAAAu9P,IAAAv9P,KAAAw9P,MACAltP,OAAA+M,eAAAogP,0BAAA7yP,UAAA,KAAA5F,IAAA,WAAA,MAAAhF,MAAA+1P,IAAAtyP,IAAA,SAAA4O,GAAArS,KAAA+1P,GAAA1jP,EAAArS,KAAA48P,mBAAAn8O,YAAA,IACAnQ,OAAA+M,eAAAogP,0BAAA7yP,UAAA,KAAA5F,IAAA,WAAA,MAAAhF,MAAAg2P,IAAAvyP,IAAA,SAAAyQ,GAAAlU,KAAAg2P,GAAA9hP,EAAAlU,KAAA48P,mBAAAn8O,YAAA,IACAnQ,OAAA+M,eAAAogP,0BAAA7yP,UAAA,MAAA5F,IAAA,WAAA,MAAAhF,MAAAq9P,KAAA55P,IAAA,SAAA8yH,GAAAv2H,KAAAq9P,IAAA9mI,EAAAv2H,KAAA48P,mBAAAn8O,YAAA,IACAnQ,OAAA+M,eAAAogP,0BAAA7yP,UAAA,MAAA5F,IAAA,WAAA,MAAAhF,MAAAs9P,KAAA75P,IAAA,SAAA+yH,GAAAx2H,KAAAs9P,IAAA9mI,EAAAx2H,KAAA48P,mBAAAn8O,YAAA,IACAnQ,OAAA+M,eAAAogP,0BAAA7yP,UAAA,MAAA5F,IAAA,WAAA,MAAAhF,MAAAu9P,KAAA95P,IAAA,SAAAgzH,GAAAz2H,KAAAu9P,IAAA9mI,EAAAz2H,KAAA48P,mBAAAn8O,YAAA,IACAnQ,OAAA+M,eAAAogP,0BAAA7yP,UAAA,MAAA5F,IAAA,WAAA,MAAAhF,MAAAw9P,KAAA/5P,IAAA,SAAAizH,GAAA12H,KAAAw9P,IAAA9mI,EAAA12H,KAAA48P,mBAAAn8O,YAAA,IAEA1gB,EAAA29P,8BAAA,SAAAtC,EAAA/oP,EAAA6B,EAAAqiH,EAAAC,GACA0kI,WAAA75P,KAAArB,KAAAk7P,WAAAc,8BAAA,IAAAZ,GACAp7P,KAAA+1P,GAAA1jP,EACArS,KAAAg2P,GAAA9hP,EACAlU,KAAAq9P,IAAA9mI,EACAv2H,KAAAs9P,IAAA9mI,GAEAknI,8BAAA9yP,UAAA0F,OAAAukD,OAAAqmM,WAAAtwP,WACA8yP,8BAAA9yP,UAAA6F,SAAA,WAAA,MAAA,0CACAitP,8BAAA9yP,UAAAmyP,cAAA,WAAA,MAAA/8P,MAAAs7P,oBAAA,IAAAt7P,KAAAq9P,IAAA,IAAAr9P,KAAAs9P,IAAA,IAAAt9P,KAAA+1P,GAAA,IAAA/1P,KAAAg2P,IACA0H,8BAAA9yP,UAAA/B,MAAA,WAAA,MAAA,IAAA60P,+BAAAxnO,OAAAl2B,KAAA+1P,GAAA/1P,KAAAg2P,GAAAh2P,KAAAq9P,IAAAr9P,KAAAs9P,MACAhtP,OAAA+M,eAAAqgP,8BAAA9yP,UAAA,KAAA5F,IAAA,WAAA,MAAAhF,MAAA+1P,IAAAtyP,IAAA,SAAA4O,GAAArS,KAAA+1P,GAAA1jP,EAAArS,KAAA48P,mBAAAn8O,YAAA,IACAnQ,OAAA+M,eAAAqgP,8BAAA9yP,UAAA,KAAA5F,IAAA,WAAA,MAAAhF,MAAAg2P,IAAAvyP,IAAA,SAAAyQ,GAAAlU,KAAAg2P,GAAA9hP,EAAAlU,KAAA48P,mBAAAn8O,YAAA,IACAnQ,OAAA+M,eAAAqgP,8BAAA9yP,UAAA,MAAA5F,IAAA,WAAA,MAAAhF,MAAAq9P,KAAA55P,IAAA,SAAA8yH,GAAAv2H,KAAAq9P,IAAA9mI,EAAAv2H,KAAA48P,mBAAAn8O,YAAA,IACAnQ,OAAA+M,eAAAqgP,8BAAA9yP,UAAA,MAAA5F,IAAA,WAAA,MAAAhF,MAAAs9P,KAAA75P,IAAA,SAAA+yH,GAAAx2H,KAAAs9P,IAAA9mI,EAAAx2H,KAAA48P,mBAAAn8O,YAAA,IAEA1gB,EAAA49P,8BAAA,SAAAvC,EAAA/oP,EAAA6B,EAAAqiH,EAAAC,GACA0kI,WAAA75P,KAAArB,KAAAk7P,WAAAe,8BAAA,IAAAb,GACAp7P,KAAA+1P,GAAA1jP,EACArS,KAAAg2P,GAAA9hP,EACAlU,KAAAq9P,IAAA9mI,EACAv2H,KAAAs9P,IAAA9mI,GAEAmnI,8BAAA/yP,UAAA0F,OAAAukD,OAAAqmM,WAAAtwP,WACA+yP,8BAAA/yP,UAAA6F,SAAA,WAAA,MAAA,0CACAktP,8BAAA/yP,UAAAmyP,cAAA,WAAA,MAAA/8P,MAAAs7P,oBAAA,IAAAt7P,KAAAq9P,IAAA,IAAAr9P,KAAAs9P,IAAA,IAAAt9P,KAAA+1P,GAAA,IAAA/1P,KAAAg2P,IACA2H,8BAAA/yP,UAAA/B,MAAA,WAAA,MAAA,IAAA80P,+BAAAznO,OAAAl2B,KAAA+1P,GAAA/1P,KAAAg2P,GAAAh2P,KAAAq9P,IAAAr9P,KAAAs9P,MACAhtP,OAAA+M,eAAAsgP,8BAAA/yP,UAAA,KAAA5F,IAAA,WAAA,MAAAhF,MAAA+1P,IAAAtyP,IAAA,SAAA4O,GAAArS,KAAA+1P,GAAA1jP,EAAArS,KAAA48P,mBAAAn8O,YAAA,IACAnQ,OAAA+M,eAAAsgP,8BAAA/yP,UAAA,KAAA5F,IAAA,WAAA,MAAAhF,MAAAg2P,IAAAvyP,IAAA,SAAAyQ,GAAAlU,KAAAg2P,GAAA9hP,EAAAlU,KAAA48P,mBAAAn8O,YAAA,IACAnQ,OAAA+M,eAAAsgP,8BAAA/yP,UAAA,MAAA5F,IAAA,WAAA,MAAAhF,MAAAq9P,KAAA55P,IAAA,SAAA8yH,GAAAv2H,KAAAq9P,IAAA9mI,EAAAv2H,KAAA48P,mBAAAn8O,YAAA,IACAnQ,OAAA+M,eAAAsgP,8BAAA/yP,UAAA,MAAA5F,IAAA,WAAA,MAAAhF,MAAAs9P,KAAA75P,IAAA,SAAA+yH,GAAAx2H,KAAAs9P,IAAA9mI,EAAAx2H,KAAA48P,mBAAAn8O,YAAA,IAEA1gB,EAAA69P,iBAAA,SAAAxC,EAAA/oP,EAAA6B,EAAA40D,EAAA+0L,EAAAvvE,EAAAwvE,EAAAC,GACA7C,WAAA75P,KAAArB,KAAAk7P,WAAAgB,gBAAA,IAAAd,GACAp7P,KAAA+1P,GAAA1jP,EACArS,KAAAg2P,GAAA9hP,EACAlU,KAAAg+P,IAAAl1L,EACA9oE,KAAAi+P,IAAAJ,EACA79P,KAAAk+P,OAAA5vE,EACAtuL,KAAAm+P,cAAAL,EACA99P,KAAAo+P,WAAAL,GAEAH,iBAAAhzP,UAAA0F,OAAAukD,OAAAqmM,WAAAtwP,WACAgzP,iBAAAhzP,UAAA6F,SAAA,WAAA,MAAA,6BACAmtP,iBAAAhzP,UAAAmyP,cAAA,WAAA,MAAA/8P,MAAAs7P,oBAAA,IAAAt7P,KAAAg+P,IAAA,IAAAh+P,KAAAi+P,IAAA,IAAAj+P,KAAAk+P,OAAA,KAAAl+P,KAAAm+P,cAAA,IAAA,KAAA,KAAAn+P,KAAAo+P,WAAA,IAAA,KAAA,IAAAp+P,KAAA+1P,GAAA,IAAA/1P,KAAAg2P,IACA4H,iBAAAhzP,UAAA/B,MAAA,WAAA,MAAA,IAAA+0P,kBAAA1nO,OAAAl2B,KAAA+1P,GAAA/1P,KAAAg2P,GAAAh2P,KAAAg+P,IAAAh+P,KAAAi+P,IAAAj+P,KAAAk+P,OAAAl+P,KAAAm+P,cAAAn+P,KAAAo+P,aACA9tP,OAAA+M,eAAAugP,iBAAAhzP,UAAA,KAAA5F,IAAA,WAAA,MAAAhF,MAAA+1P,IAAAtyP,IAAA,SAAA4O,GAAArS,KAAA+1P,GAAA1jP,EAAArS,KAAA48P,mBAAAn8O,YAAA,IACAnQ,OAAA+M,eAAAugP,iBAAAhzP,UAAA,KAAA5F,IAAA,WAAA,MAAAhF,MAAAg2P,IAAAvyP,IAAA,SAAAyQ,GAAAlU,KAAAg2P,GAAA9hP,EAAAlU,KAAA48P,mBAAAn8O,YAAA,IACAnQ,OAAA+M,eAAAugP,iBAAAhzP,UAAA,MAAA5F,IAAA,WAAA,MAAAhF,MAAAg+P,KAAAv6P,IAAA,SAAAqlE,GAAA9oE,KAAAg+P,IAAAl1L,EAAA9oE,KAAA48P,mBAAAn8O,YAAA,IACAnQ,OAAA+M,eAAAugP,iBAAAhzP,UAAA,MAAA5F,IAAA,WAAA,MAAAhF,MAAAi+P,KAAAx6P,IAAA,SAAAo6P,GAAA79P,KAAAi+P,IAAAJ,EAAA79P,KAAA48P,mBAAAn8O,YAAA,IACAnQ,OAAA+M,eAAAugP,iBAAAhzP,UAAA,SAAA5F,IAAA,WAAA,MAAAhF,MAAAk+P,QAAAz6P,IAAA,SAAA6qL,GAAAtuL,KAAAk+P,OAAA5vE,EAAAtuL,KAAA48P,mBAAAn8O,YAAA,IACAnQ,OAAA+M,eAAAugP,iBAAAhzP,UAAA,gBAAA5F,IAAA,WAAA,MAAAhF,MAAAm+P,eAAA16P,IAAA,SAAAq6P,GAAA99P,KAAAm+P,cAAAL,EAAA99P,KAAA48P,mBAAAn8O,YAAA,IACAnQ,OAAA+M,eAAAugP,iBAAAhzP,UAAA,aAAA5F,IAAA,WAAA,MAAAhF,MAAAo+P,YAAA36P,IAAA,SAAAs6P,GAAA/9P,KAAAo+P,WAAAL,EAAA/9P,KAAA48P,mBAAAn8O,YAAA,IAEA1gB,EAAAs+P,iBAAA,SAAAjD,EAAA/oP,EAAA6B,EAAA40D,EAAA+0L,EAAAvvE,EAAAwvE,EAAAC,GACA7C,WAAA75P,KAAArB,KAAAk7P,WAAAiB,gBAAA,IAAAf,GACAp7P,KAAA+1P,GAAA1jP,EACArS,KAAAg2P,GAAA9hP,EACAlU,KAAAg+P,IAAAl1L,EACA9oE,KAAAi+P,IAAAJ,EACA79P,KAAAk+P,OAAA5vE,EACAtuL,KAAAm+P,cAAAL,EACA99P,KAAAo+P,WAAAL,GAEAM,iBAAAzzP,UAAA0F,OAAAukD,OAAAqmM,WAAAtwP,WACAyzP,iBAAAzzP,UAAA6F,SAAA,WAAA,MAAA,6BACA4tP,iBAAAzzP,UAAAmyP,cAAA,WAAA,MAAA/8P,MAAAs7P,oBAAA,IAAAt7P,KAAAg+P,IAAA,IAAAh+P,KAAAi+P,IAAA,IAAAj+P,KAAAk+P,OAAA,KAAAl+P,KAAAm+P,cAAA,IAAA,KAAA,KAAAn+P,KAAAo+P,WAAA,IAAA,KAAA,IAAAp+P,KAAA+1P,GAAA,IAAA/1P,KAAAg2P,IACAqI,iBAAAzzP,UAAA/B,MAAA,WAAA,MAAA,IAAAw1P,kBAAAnoO,OAAAl2B,KAAA+1P,GAAA/1P,KAAAg2P,GAAAh2P,KAAAg+P,IAAAh+P,KAAAi+P,IAAAj+P,KAAAk+P,OAAAl+P,KAAAm+P,cAAAn+P,KAAAo+P,aACA9tP,OAAA+M,eAAAghP,iBAAAzzP,UAAA,KAAA5F,IAAA,WAAA,MAAAhF,MAAA+1P,IAAAtyP,IAAA,SAAA4O,GAAArS,KAAA+1P,GAAA1jP,EAAArS,KAAA48P,mBAAAn8O,YAAA,IACAnQ,OAAA+M,eAAAghP,iBAAAzzP,UAAA,KAAA5F,IAAA,WAAA,MAAAhF,MAAAg2P,IAAAvyP,IAAA,SAAAyQ,GAAAlU,KAAAg2P,GAAA9hP,EAAAlU,KAAA48P,mBAAAn8O,YAAA,IACAnQ,OAAA+M,eAAAghP,iBAAAzzP,UAAA,MAAA5F,IAAA,WAAA,MAAAhF,MAAAg+P,KAAAv6P,IAAA,SAAAqlE,GAAA9oE,KAAAg+P,IAAAl1L,EAAA9oE,KAAA48P,mBAAAn8O,YAAA,IACAnQ,OAAA+M,eAAAghP,iBAAAzzP,UAAA,MAAA5F,IAAA,WAAA,MAAAhF,MAAAi+P,KAAAx6P,IAAA,SAAAo6P,GAAA79P,KAAAi+P,IAAAJ,EAAA79P,KAAA48P,mBAAAn8O,YAAA,IACAnQ,OAAA+M,eAAAghP,iBAAAzzP,UAAA,SAAA5F,IAAA,WAAA,MAAAhF,MAAAk+P,QAAAz6P,IAAA,SAAA6qL,GAAAtuL,KAAAk+P,OAAA5vE;AAAAtuL,KAAA48P,mBAAAn8O,YAAA,IACAnQ,OAAA+M,eAAAghP,iBAAAzzP,UAAA,gBAAA5F,IAAA,WAAA,MAAAhF,MAAAm+P,eAAA16P,IAAA,SAAAq6P,GAAA99P,KAAAm+P,cAAAL,EAAA99P,KAAA48P,mBAAAn8O,YAAA,IACAnQ,OAAA+M,eAAAghP,iBAAAzzP,UAAA,aAAA5F,IAAA,WAAA,MAAAhF,MAAAo+P,YAAA36P,IAAA,SAAAs6P,GAAA/9P,KAAAo+P,WAAAL,EAAA/9P,KAAA48P,mBAAAn8O,YAAA,IAEA1gB,EAAAu+P,8BAAA,SAAAlD,EAAA/oP,GACA6oP,WAAA75P,KAAArB,KAAAk7P,WAAAkB,8BAAA,IAAAhB,GACAp7P,KAAA+1P,GAAA1jP,GAEAisP,8BAAA1zP,UAAA0F,OAAAukD,OAAAqmM,WAAAtwP,WACA0zP,8BAAA1zP,UAAA6F,SAAA,WAAA,MAAA,0CACA6tP,8BAAA1zP,UAAAmyP,cAAA,WAAA,MAAA/8P,MAAAs7P,oBAAA,IAAAt7P,KAAA+1P,IACAuI,8BAAA1zP,UAAA/B,MAAA,WAAA,MAAA,IAAAy1P,+BAAApoO,OAAAl2B,KAAA+1P,KACAzlP,OAAA+M,eAAAihP,8BAAA1zP,UAAA,KAAA5F,IAAA,WAAA,MAAAhF,MAAA+1P,IAAAtyP,IAAA,SAAA4O,GAAArS,KAAA+1P,GAAA1jP,EAAArS,KAAA48P,mBAAAn8O,YAAA,IAEA1gB,EAAAw+P,8BAAA,SAAAnD,EAAA/oP,GACA6oP,WAAA75P,KAAArB,KAAAk7P,WAAAmB,8BAAA,IAAAjB,GACAp7P,KAAA+1P,GAAA1jP,GAEAksP,8BAAA3zP,UAAA0F,OAAAukD,OAAAqmM,WAAAtwP,WACA2zP,8BAAA3zP,UAAA6F,SAAA,WAAA,MAAA,0CACA8tP,8BAAA3zP,UAAAmyP,cAAA,WAAA,MAAA/8P,MAAAs7P,oBAAA,IAAAt7P,KAAA+1P,IACAwI,8BAAA3zP,UAAA/B,MAAA,WAAA,MAAA,IAAA01P,+BAAAroO,OAAAl2B,KAAA+1P,KACAzlP,OAAA+M,eAAAkhP,8BAAA3zP,UAAA,KAAA5F,IAAA,WAAA,MAAAhF,MAAA+1P,IAAAtyP,IAAA,SAAA4O,GAAArS,KAAA+1P,GAAA1jP,EAAArS,KAAA48P,mBAAAn8O,YAAA,IAEA1gB,EAAAy+P,4BAAA,SAAApD,EAAAlnP,GACAgnP,WAAA75P,KAAArB,KAAAk7P,WAAAoB,4BAAA,IAAAlB,GACAp7P,KAAAg2P,GAAA9hP,GAEAsqP,4BAAA5zP,UAAA0F,OAAAukD,OAAAqmM,WAAAtwP,WACA4zP,4BAAA5zP,UAAA6F,SAAA,WAAA,MAAA,wCACA+tP,4BAAA5zP,UAAAmyP,cAAA,WAAA,MAAA/8P,MAAAs7P,oBAAA,IAAAt7P,KAAAg2P,IACAwI,4BAAA5zP,UAAA/B,MAAA,WAAA,MAAA,IAAA21P,6BAAAtoO,OAAAl2B,KAAAg2P,KACA1lP,OAAA+M,eAAAmhP,4BAAA5zP,UAAA,KAAA5F,IAAA,WAAA,MAAAhF,MAAAg2P,IAAAvyP,IAAA,SAAAyQ,GAAAlU,KAAAg2P,GAAA9hP,EAAAlU,KAAA48P,mBAAAn8O,YAAA,IAEA1gB,EAAA0+P,4BAAA,SAAArD,EAAAlnP,GACAgnP,WAAA75P,KAAArB,KAAAk7P,WAAAqB,4BAAA,IAAAnB,GACAp7P,KAAAg2P,GAAA9hP,GAEAuqP,4BAAA7zP,UAAA0F,OAAAukD,OAAAqmM,WAAAtwP,WACA6zP,4BAAA7zP,UAAA6F,SAAA,WAAA,MAAA,wCACAguP,4BAAA7zP,UAAAmyP,cAAA,WAAA,MAAA/8P,MAAAs7P,oBAAA,IAAAt7P,KAAAg2P,IACAyI,4BAAA7zP,UAAA/B,MAAA,WAAA,MAAA,IAAA41P,6BAAAvoO,OAAAl2B,KAAAg2P,KACA1lP,OAAA+M,eAAAohP,4BAAA7zP,UAAA,KAAA5F,IAAA,WAAA,MAAAhF,MAAAg2P,IAAAvyP,IAAA,SAAAyQ,GAAAlU,KAAAg2P,GAAA9hP,EAAAlU,KAAA48P,mBAAAn8O,YAAA,IAEA1gB,EAAA2+P,gCAAA,SAAAtD,EAAA/oP,EAAA6B,EAAAuiH,EAAAC,GACAwkI,WAAA75P,KAAArB,KAAAk7P,WAAAsB,iCAAA,IAAApB,GACAp7P,KAAA+1P,GAAA1jP,EACArS,KAAAg2P,GAAA9hP,EACAlU,KAAAu9P,IAAA9mI,EACAz2H,KAAAw9P,IAAA9mI,GAEAgoI,gCAAA9zP,UAAA0F,OAAAukD,OAAAqmM,WAAAtwP,WACA8zP,gCAAA9zP,UAAA6F,SAAA,WAAA,MAAA,4CACAiuP,gCAAA9zP,UAAAmyP,cAAA,WAAA,MAAA/8P,MAAAs7P,oBAAA,IAAAt7P,KAAAu9P,IAAA,IAAAv9P,KAAAw9P,IAAA,IAAAx9P,KAAA+1P,GAAA,IAAA/1P,KAAAg2P,IACA0I,gCAAA9zP,UAAA/B,MAAA,WAAA,MAAA,IAAA61P,iCAAAxoO,OAAAl2B,KAAA+1P,GAAA/1P,KAAAg2P,GAAAh2P,KAAAu9P,IAAAv9P,KAAAw9P,MACAltP,OAAA+M,eAAAqhP,gCAAA9zP,UAAA,KAAA5F,IAAA,WAAA,MAAAhF,MAAA+1P,IAAAtyP,IAAA,SAAA4O,GAAArS,KAAA+1P,GAAA1jP,EAAArS,KAAA48P,mBAAAn8O,YAAA,IACAnQ,OAAA+M,eAAAqhP,gCAAA9zP,UAAA,KAAA5F,IAAA,WAAA,MAAAhF,MAAAg2P,IAAAvyP,IAAA,SAAAyQ,GAAAlU,KAAAg2P,GAAA9hP,EAAAlU,KAAA48P,mBAAAn8O,YAAA,IACAnQ,OAAA+M,eAAAqhP,gCAAA9zP,UAAA,MAAA5F,IAAA,WAAA,MAAAhF,MAAAu9P,KAAA95P,IAAA,SAAAgzH,GAAAz2H,KAAAu9P,IAAA9mI,EAAAz2H,KAAA48P,mBAAAn8O,YAAA,IACAnQ,OAAA+M,eAAAqhP,gCAAA9zP,UAAA,MAAA5F,IAAA,WAAA,MAAAhF,MAAAw9P,KAAA/5P,IAAA,SAAAizH,GAAA12H,KAAAw9P,IAAA9mI,EAAA12H,KAAA48P,mBAAAn8O,YAAA,IAEA1gB,EAAA4+P,gCAAA,SAAAvD,EAAA/oP,EAAA6B,EAAAuiH,EAAAC,GACAwkI,WAAA75P,KAAArB,KAAAk7P,WAAAuB,iCAAA,IAAArB,GACAp7P,KAAA+1P,GAAA1jP,EACArS,KAAAg2P,GAAA9hP,EACAlU,KAAAu9P,IAAA9mI,EACAz2H,KAAAw9P,IAAA9mI,GAEAioI,gCAAA/zP,UAAA0F,OAAAukD,OAAAqmM,WAAAtwP,WACA+zP,gCAAA/zP,UAAA6F,SAAA,WAAA,MAAA,4CACAkuP,gCAAA/zP,UAAAmyP,cAAA,WAAA,MAAA/8P,MAAAs7P,oBAAA,IAAAt7P,KAAAu9P,IAAA,IAAAv9P,KAAAw9P,IAAA,IAAAx9P,KAAA+1P,GAAA,IAAA/1P,KAAAg2P,IACA2I,gCAAA/zP,UAAA/B,MAAA,WAAA,MAAA,IAAA81P,iCAAAzoO,OAAAl2B,KAAA+1P,GAAA/1P,KAAAg2P,GAAAh2P,KAAAu9P,IAAAv9P,KAAAw9P,MACAltP,OAAA+M,eAAAshP,gCAAA/zP,UAAA,KAAA5F,IAAA,WAAA,MAAAhF,MAAA+1P,IAAAtyP,IAAA,SAAA4O,GAAArS,KAAA+1P,GAAA1jP,EAAArS,KAAA48P,mBAAAn8O,YAAA,IACAnQ,OAAA+M,eAAAshP,gCAAA/zP,UAAA,KAAA5F,IAAA,WAAA,MAAAhF,MAAAg2P,IAAAvyP,IAAA,SAAAyQ,GAAAlU,KAAAg2P,GAAA9hP,EAAAlU,KAAA48P,mBAAAn8O,YAAA,IACAnQ,OAAA+M,eAAAshP,gCAAA/zP,UAAA,MAAA5F,IAAA,WAAA,MAAAhF,MAAAu9P,KAAA95P,IAAA,SAAAgzH,GAAAz2H,KAAAu9P,IAAA9mI,EAAAz2H,KAAA48P,mBAAAn8O,YAAA,IACAnQ,OAAA+M,eAAAshP,gCAAA/zP,UAAA,MAAA5F,IAAA,WAAA,MAAAhF,MAAAw9P,KAAA/5P,IAAA,SAAAizH,GAAA12H,KAAAw9P,IAAA9mI,EAAA12H,KAAA48P,mBAAAn8O,YAAA,IAEA1gB,EAAA6+P,oCAAA,SAAAxD,EAAA/oP,EAAA6B,GACAgnP,WAAA75P,KAAArB,KAAAk7P,WAAAwB,qCAAA,IAAAtB,GACAp7P,KAAA+1P,GAAA1jP,EACArS,KAAAg2P,GAAA9hP,GAEA0qP,oCAAAh0P,UAAA0F,OAAAukD,OAAAqmM,WAAAtwP,WACAg0P,oCAAAh0P,UAAA6F,SAAA,WAAA,MAAA,gDACAmuP,oCAAAh0P,UAAAmyP,cAAA,WAAA,MAAA/8P,MAAAs7P,oBAAA,IAAAt7P,KAAA+1P,GAAA,IAAA/1P,KAAAg2P,IACA4I,oCAAAh0P,UAAA/B,MAAA,WAAA,MAAA,IAAA+1P,qCAAA1oO,OAAAl2B,KAAA+1P,GAAA/1P,KAAAg2P,KACA1lP,OAAA+M,eAAAuhP,oCAAAh0P,UAAA,KAAA5F,IAAA,WAAA,MAAAhF,MAAA+1P,IAAAtyP,IAAA,SAAA4O,GAAArS,KAAA+1P,GAAA1jP,EAAArS,KAAA48P,mBAAAn8O,YAAA,IACAnQ,OAAA+M,eAAAuhP,oCAAAh0P,UAAA,KAAA5F,IAAA,WAAA,MAAAhF,MAAAg2P,IAAAvyP,IAAA,SAAAyQ,GAAAlU,KAAAg2P,GAAA9hP,EAAAlU,KAAA48P,mBAAAn8O,YAAA,IAEA1gB,EAAA8+P,oCAAA,SAAAzD,EAAA/oP,EAAA6B,GACAgnP,WAAA75P,KAAArB,KAAAk7P,WAAAyB,qCAAA,IAAAvB,GACAp7P,KAAA+1P,GAAA1jP,EACArS,KAAAg2P,GAAA9hP,GAEA2qP,oCAAAj0P,UAAA0F,OAAAukD,OAAAqmM,WAAAtwP,WACAi0P,oCAAAj0P,UAAA6F,SAAA,WAAA,MAAA,gDACAouP,oCAAAj0P,UAAAmyP,cAAA,WAAA,MAAA/8P,MAAAs7P,oBAAA,IAAAt7P,KAAA+1P,GAAA,IAAA/1P,KAAAg2P,IACA6I,oCAAAj0P,UAAA/B,MAAA,WAAA,MAAA,IAAAg2P,qCAAA3oO,OAAAl2B,KAAA+1P,GAAA/1P,KAAAg2P,KACA1lP,OAAA+M,eAAAwhP,oCAAAj0P,UAAA,KAAA5F,IAAA,WAAA,MAAAhF,MAAA+1P,IAAAtyP,IAAA,SAAA4O,GAAArS,KAAA+1P,GAAA1jP,EAAArS,KAAA48P,mBAAAn8O,YAAA,IACAnQ,OAAA+M,eAAAwhP,oCAAAj0P,UAAA,KAAA5F,IAAA,WAAA,MAAAhF,MAAAg2P,IAAAvyP,IAAA,SAAAyQ,GAAAlU,KAAAg2P,GAAA9hP,EAAAlU,KAAA48P,mBAAAn8O,YAAA,IAIAq+O,eAAAl0P,UAAAm0P,0BAAA,WAAA,MAAA,IAAAjC,qBAAA5mO,SACA4oO,eAAAl0P,UAAAo0P,0BAAA,SAAA3sP,EAAA6B,GAAA,MAAA,IAAA8oP,qBAAA9mO,OAAA7jB,EAAA6B,IACA4qP,eAAAl0P,UAAAq0P,0BAAA,SAAA5sP,EAAA6B,GAAA,MAAA,IAAA+oP,qBAAA/mO,OAAA7jB,EAAA6B,IACA4qP,eAAAl0P,UAAAs0P,0BAAA,SAAA7sP,EAAA6B,GAAA,MAAA,IAAAgpP,qBAAAhnO,OAAA7jB,EAAA6B,IACA4qP,eAAAl0P,UAAAu0P,0BAAA,SAAA9sP,EAAA6B,GAAA,MAAA,IAAAipP,qBAAAjnO,OAAA7jB,EAAA6B,IACA4qP,eAAAl0P,UAAAw0P,gCAAA,SAAA/sP,EAAA6B,EAAAqiH,EAAAC,EAAAC,EAAAC,GAAA,MAAA,IAAA0mI,2BAAAlnO,OAAA7jB,EAAA6B,EAAAqiH,EAAAC,EAAAC,EAAAC,IACAooI,eAAAl0P,UAAAy0P,gCAAA,SAAAhtP,EAAA6B,EAAAqiH,EAAAC,EAAAC,EAAAC,GAAA,MAAA,IAAA+mI,2BAAAvnO,OAAA7jB,EAAA6B,EAAAqiH,EAAAC,EAAAC,EAAAC,IACAooI,eAAAl0P,UAAA00P,oCAAA,SAAAjtP,EAAA6B,EAAAqiH,EAAAC,GAAA,MAAA,IAAAknI,+BAAAxnO,OAAA7jB,EAAA6B,EAAAqiH,EAAAC,IACAsoI,eAAAl0P,UAAA20P,oCAAA,SAAAltP,EAAA6B,EAAAqiH,EAAAC,GAAA,MAAA,IAAAmnI,+BAAAznO,OAAA7jB,EAAA6B,EAAAqiH,EAAAC,IACAsoI,eAAAl0P,UAAA40P,uBAAA,SAAAntP,EAAA6B,EAAA40D,EAAA+0L,EAAAvvE,EAAAwvE,EAAAC,GAAA,MAAA,IAAAH,kBAAA1nO,OAAA7jB,EAAA6B,EAAA40D,EAAA+0L,EAAAvvE,EAAAwvE,EAAAC,IACAe,eAAAl0P,UAAA60P,uBAAA,SAAAptP,EAAA6B,EAAA40D,EAAA+0L,EAAAvvE,EAAAwvE,EAAAC,GAAA,MAAA,IAAAM,kBAAAnoO,OAAA7jB,EAAA6B,EAAA40D,EAAA+0L,EAAAvvE,EAAAwvE,EAAAC,IACAe,eAAAl0P,UAAA80P,oCAAA,SAAArtP,GAAA,MAAA,IAAAisP,+BAAApoO,OAAA7jB,IACAysP,eAAAl0P,UAAA+0P,oCAAA,SAAAttP,GAAA,MAAA,IAAAksP,+BAAAroO,OAAA7jB,IACAysP,eAAAl0P,UAAAg1P,kCAAA,SAAA1rP,GAAA,MAAA,IAAAsqP,6BAAAtoO,OAAAhiB,IACA4qP,eAAAl0P,UAAAi1P,kCAAA,SAAA3rP,GAAA,MAAA,IAAAuqP,6BAAAvoO,OAAAhiB,IACA4qP,eAAAl0P,UAAAk1P,sCAAA,SAAAztP,EAAA6B,EAAAuiH,EAAAC,GAAA,MAAA,IAAAgoI,iCAAAxoO,OAAA7jB,EAAA6B,EAAAuiH,EAAAC,IACAooI,eAAAl0P,UAAAm1P,sCAAA,SAAA1tP,EAAA6B,EAAAuiH,EAAAC,GAAA,MAAA,IAAAioI,iCAAAzoO,OAAA7jB,EAAA6B,EAAAuiH,EAAAC,IACAooI,eAAAl0P,UAAAo1P,0CAAA,SAAA3tP,EAAA6B,GAAA,MAAA,IAAA0qP,qCAAA1oO,OAAA7jB,EAAA6B,IACA4qP,eAAAl0P,UAAAq1P,0CAAA,SAAA5tP,EAAA6B,GAAA,MAAA,IAAA2qP,qCAAA3oO,OAAA7jB,EAAA6B,KAGA,kBAAAnU,KAEAA,EAAAmgQ,eAAA,SAAAC,GACAngQ,KAAAogQ,aAAAD,EACAngQ,KAAAqgQ,MAAArgQ,KAAAsgQ,WAAAtgQ,KAAAogQ,aAAA78P,aAAA,MAGAvD,KAAAugQ,yBAAAtqP,YAAA,EAAAuqP,iBAAA,MACAxgQ,KAAAygQ,6BAAA,GAAA92B,kBAAA3pO,KAAA0gQ,6BAAA7uO,KAAA7xB,OACAA,KAAAygQ,6BAAA32B,QAAA9pO,KAAAogQ,aAAApgQ,KAAAugQ,0BAGAjwP,OAAA+M,eAAA6iP,eAAAt1P,UAAA,iBACA5F,IAAA,WAEA,MADAhF,MAAA2gQ,+BACA3gQ,KAAAqgQ,MAAA1/P,QAEA8f,YAAA,IAKAnQ,OAAA+M,eAAAyhP,eAAAl0P,UAAA,eACA5F,IAAA,WAGA,MAFAhF,MAAA4gQ,eACA5gQ,KAAA4gQ,aAAA,GAAAV,gBAAAlgQ,OACAA,KAAA4gQ,cAEAngP,YAAA,IAGAnQ,OAAA+M,eAAAyhP,eAAAl0P,UAAA,yBAAA5F,IAAA,WAAA,MAAAhF,MAAAgnP,aAAAvmO,YAAA,IACAnQ,OAAA+M,eAAAyhP,eAAAl0P,UAAA,uBAAA5F,IAAA,WAAA,MAAAhF,MAAAgnP,aAAAvmO,YAAA,IACAnQ,OAAA+M,eAAAyhP,eAAAl0P,UAAA,iCAAA5F,IAAA,WAAA,MAAAhF,MAAAgnP,aAAAvmO,YAAA,IAKAy/O,eAAAt1P,UAAA+1P,6BAAA,WACA3gQ,KAAA0gQ,6BAAA1gQ,KAAAygQ,6BAAAI,gBAGAX,eAAAt1P,UAAA81P,6BAAA,SAAAI,GACA,GAAA9gQ,KAAAogQ,aAAA,CAEA,GAAAW,IAAA,CACAD,GAAApoH,QAAA,SAAAsoH,GACA,KAAAA,EAAAC,gBACAF,GAAA,KAEAA,IACA/gQ,KAAAqgQ,MAAArgQ,KAAAsgQ,WAAAtgQ,KAAAogQ,aAAA78P,aAAA,SAIA28P,eAAAt1P,UAAAs2P,iBAAA,WACAlhQ,KAAAygQ,6BAAA9vN,aACA3wC,KAAAogQ,aAAAxtP,aAAA,IAAAstP,eAAAiB,sBAAAnhQ,KAAAqgQ,QACArgQ,KAAAygQ,6BAAA32B,QAAA9pO,KAAAogQ,aAAApgQ,KAAAugQ,0BAIAL,eAAAt1P,UAAAiyP,eAAA,SAAAuE,GACAphQ,KAAAkhQ,oBAGAhB,eAAAt1P,UAAAo1B,MAAA,WACAhgC,KAAA2gQ,+BAEA3gQ,KAAAqgQ,MAAA3nH,QAAA,SAAA0oH,GACAA,EAAA7F,mBAAA,OAEAv7P,KAAAqgQ,SACArgQ,KAAAkhQ,oBAGAhB,eAAAt1P,UAAA20C,WAAA,SAAA8hN,GAMA,MALArhQ,MAAA2gQ,+BAEA3gQ,KAAAqgQ,OAAAgB,GACAA,EAAA9F,mBAAAv7P,KACAA,KAAAkhQ,mBACAG,GAGAnB,eAAAt1P,UAAA02P,iBAAA,SAAA1mP,GACA,GAAA/I,MAAA+I,IAAAA,EAAA,GAAAA,GAAA5a,KAAAuhQ,cACA,KAAA,kBAGArB,eAAAt1P,UAAAkoB,QAAA,SAAAlY,GAIA,MAHA5a,MAAA2gQ,+BAEA3gQ,KAAAshQ,iBAAA1mP,GACA5a,KAAAqgQ,MAAAzlP,IAGAslP,eAAAt1P,UAAA42P,iBAAA,SAAAH,EAAAzmP,GAaA,MAZA5a,MAAA2gQ,+BAGA/lP,EAAA5a,KAAAuhQ,gBACA3mP,EAAA5a,KAAAuhQ,eACAF,EAAA9F,qBAEA8F,EAAAA,EAAAx4P,SAEA7I,KAAAqgQ,MAAA9uP,OAAAqJ,EAAA,EAAAymP,GACAA,EAAA9F,mBAAAv7P,KACAA,KAAAkhQ,mBACAG,GAGAnB,eAAAt1P,UAAA62P,YAAA,SAAAJ,EAAAzmP,GAWA,MAVA5a,MAAA2gQ,+BAEAU,EAAA9F,qBAEA8F,EAAAA,EAAAx4P,SAEA7I,KAAAshQ,iBAAA1mP,GACA5a,KAAAqgQ,MAAAzlP,GAAAymP,EACAA,EAAA9F,mBAAAv7P,KACAA,KAAAkhQ,mBACAG,GAGAnB,eAAAt1P,UAAAovC,WAAA,SAAAp/B,GACA5a,KAAA2gQ,+BAEA3gQ,KAAAshQ,iBAAA1mP,EACA,IAAA8rB,GAAA1mC,KAAAqgQ,MAAAzlP,EAGA,OAFA5a,MAAAqgQ,MAAA9uP,OAAAqJ,EAAA,GACA5a,KAAAkhQ,mBACAx6N,GAGAw5N,eAAAt1P,UAAA82P,WAAA,SAAAL,GAWA,MAVArhQ,MAAA2gQ,+BAEAU,EAAA9F,qBAEA8F,EAAAA,EAAAx4P,SAEA7I,KAAAqgQ,MAAA95P,KAAA86P,GACAA,EAAA9F,mBAAAv7P,KAEAA,KAAAkhQ,mBACAG,GAGAnB,eAAAiB,sBAAA,SAAAQ,GACA,GAAA5tM,GAAA,GACA3iD,GAAA,CASA,OARAuwP,GAAAjpH,QAAA,SAAA0oH,GACAhwP,GACAA,GAAA,EACA2iD,GAAAqtM,EAAArE,iBAEAhpM,GAAA,IAAAqtM,EAAArE,kBAGAhpM,GAIAmsM,eAAAt1P,UAAA01P,WAAA,SAAAvsM,GACA,IAAAA,GAAA,GAAAA,EAAApzD,OACA,QAEA,IAAAy6P,GAAAp7P,KAEA4hQ,EAAA,WACA5hQ,KAAAgnP,eAGA4a,GAAAh3P,UAAAi3P,cAAA,SAAAT,GACAphQ,KAAAgnP,YAAAzgP,KAAA66P,GAGA,IAAAU,GAAA,SAAA/tM,GACA/zD,KAAA+hQ,QAAAhuM,EACA/zD,KAAAgiQ,cAAA,EACAhiQ,KAAAiiQ,UAAAjiQ,KAAA+hQ,QAAAphQ,OACAX,KAAAkiQ,iBAAAhH,WAAAM,gBAEAx7P,KAAAmiQ,sBAGAL,GAAAl3P,UAAAw3P,gBAAA,WACA,GAAAC,GAAAriQ,KAAA+hQ,QAAA/hQ,KAAAgiQ,cACA,OAAAK,IAAA,MAAA,KAAAA,GAAA,MAAAA,GAAA,MAAAA,GAAA,MAAAA,GAAA,MAAAA,IAGAP,EAAAl3P,UAAAu3P,oBAAA,WACA,KAAAniQ,KAAAgiQ,cAAAhiQ,KAAAiiQ,WAAAjiQ,KAAAoiQ,mBACApiQ,KAAAgiQ,eACA,OAAAhiQ,MAAAgiQ,cAAAhiQ,KAAAiiQ,WAGAH,EAAAl3P,UAAA03P,+BAAA,WACA,QAAAtiQ,KAAAgiQ,cAAAhiQ,KAAAiiQ,YAAAjiQ,KAAAoiQ,mBAAA,KAAApiQ,KAAA+hQ,QAAAttO,OAAAz0B,KAAAgiQ,kBAEAhiQ,KAAAmiQ,uBACAniQ,KAAAgiQ,cAAAhiQ,KAAAiiQ,WAAA,KAAAjiQ,KAAA+hQ,QAAAttO,OAAAz0B,KAAAgiQ,iBACAhiQ,KAAAgiQ,gBACAhiQ,KAAAmiQ,uBAGAniQ,KAAAgiQ,cAAAhiQ,KAAAiiQ,YAGAH,EAAAl3P,UAAA23P,YAAA,WACA,MAAAviQ,MAAAgiQ,cAAAhiQ,KAAAiiQ,WAGAH,EAAAl3P,UAAA43P,gBAAA,WACA,GAAAC,GAAAziQ,KAAA+hQ,QAAA/hQ,KAAAgiQ,cACA,OAAAhiQ,MAAA0iQ,qBAAAD,IAGAX,EAAAl3P,UAAA83P,qBAAA,SAAAD,GACA,OAAAA,GACA,IAAA,IACA,IAAA,IACA,MAAAvH,YAAAO,iBACA,KAAA,IACA,MAAAP,YAAAQ,kBACA,KAAA,IACA,MAAAR,YAAAS,kBACA,KAAA,IACA,MAAAT,YAAAU,kBACA,KAAA,IACA,MAAAV,YAAAW,kBACA,KAAA,IACA,MAAAX,YAAAY,yBACA,KAAA,IACA,MAAAZ,YAAAa,yBACA,KAAA,IACA,MAAAb,YAAAc,6BACA,KAAA,IACA,MAAAd,YAAAe,6BACA,KAAA,IACA,MAAAf,YAAAgB,eACA,KAAA,IACA,MAAAhB,YAAAiB,eACA,KAAA,IACA,MAAAjB,YAAAkB,6BACA,KAAA,IACA,MAAAlB,YAAAmB,6BACA,KAAA,IACA,MAAAnB,YAAAoB,2BACA,KAAA,IACA,MAAApB,YAAAqB,2BACA,KAAA,IACA,MAAArB,YAAAsB,gCACA,KAAA,IACA,MAAAtB,YAAAuB,gCACA,KAAA,IACA,MAAAvB,YAAAwB,oCACA,KAAA,IACA,MAAAxB,YAAAyB,oCACA,SACA,MAAAzB,YAAAM,kBAIAsG,EAAAl3P,UAAA+3P,mBAAA,SAAAF,EAAAG,GAEA,OAAA,KAAAH,GAAA,KAAAA,GAAA,KAAAA,GAAAA,GAAA,KAAAA,GAAA,MAAAG,GAAA1H,WAAAO,kBACAmH,GAAA1H,WAAAQ,mBACAR,WAAAU,mBACAgH,GAAA1H,WAAAS,mBACAT,WAAAW,mBACA+G,EAEA1H,WAAAM,iBAGAsG,EAAAl3P,UAAAi4P,uBAAA,WAEA,IAAA7iQ,KAAAuiQ,cACA,OAAA,CACA,IAAAv9G,GAAAhlJ,KAAAwiQ,iBAEA,OAAAx9G,IAAAk2G,WAAAQ,oBAAA12G,GAAAk2G,WAAAS,oBAKAmG,EAAAl3P,UAAAk4P,aAAA,WACA,GAAA7pF,GAAA,EACAl+E,EAAA,EACAgoK,EAAA,EACA5qF,EAAA,EACAU,EAAA,EACAmqF,EAAA,EAEAhqM,EAAAh5D,KAAAgiQ,aAYA,IAVAhiQ,KAAAmiQ,sBAGAniQ,KAAAgiQ,cAAAhiQ,KAAAiiQ,WAAA,KAAAjiQ,KAAA+hQ,QAAAttO,OAAAz0B,KAAAgiQ,eACAhiQ,KAAAgiQ,gBACAhiQ,KAAAgiQ,cAAAhiQ,KAAAiiQ,WAAA,KAAAjiQ,KAAA+hQ,QAAAttO,OAAAz0B,KAAAgiQ,iBACAhiQ,KAAAgiQ,gBACAnpF,GAAA,KAGA74K,KAAAgiQ,eAAAhiQ,KAAAiiQ,YAAAjiQ,KAAA+hQ,QAAAttO,OAAAz0B,KAAAgiQ,eAAA,KAAAhiQ,KAAA+hQ,QAAAttO,OAAAz0B,KAAAgiQ,eAAA,MAAA,KAAAhiQ,KAAA+hQ,QAAAttO,OAAAz0B,KAAAgiQ,gBAAA,CAMA,IADA,GAAAiB,GAAAjjQ,KAAAgiQ,cACAhiQ,KAAAgiQ,cAAAhiQ,KAAAiiQ,WAAAjiQ,KAAA+hQ,QAAAttO,OAAAz0B,KAAAgiQ,gBAAA,KAAAhiQ,KAAA+hQ,QAAAttO,OAAAz0B,KAAAgiQ,gBAAA,KACAhiQ,KAAAgiQ,eAEA,IAAAhiQ,KAAAgiQ,eAAAiB,EAGA,IAFA,GAAAC,GAAAljQ,KAAAgiQ,cAAA,EACAmB,EAAA,EACAD,GAAAD,GACAloK,GAAAooK,GAAAnjQ,KAAA+hQ,QAAAttO,OAAAyuO,KAAA,KACAC,GAAA,EAKA,IAAAnjQ,KAAAgiQ,cAAAhiQ,KAAAiiQ,WAAA,KAAAjiQ,KAAA+hQ,QAAAttO,OAAAz0B,KAAAgiQ,eAAA,CAIA,GAHAhiQ,KAAAgiQ,gBAGAhiQ,KAAAgiQ,eAAAhiQ,KAAAiiQ,WAAAjiQ,KAAA+hQ,QAAAttO,OAAAz0B,KAAAgiQ,eAAA,KAAAhiQ,KAAA+hQ,QAAAttO,OAAAz0B,KAAAgiQ,eAAA,IACA,MACA,MAAAhiQ,KAAAgiQ,cAAAhiQ,KAAAiiQ,WAAAjiQ,KAAA+hQ,QAAAttO,OAAAz0B,KAAAgiQ,gBAAA,KAAAhiQ,KAAA+hQ,QAAAttO,OAAAz0B,KAAAgiQ,gBAAA,KACA7pF,IAAAn4K,KAAA+hQ,QAAAttO,OAAAz0B,KAAAgiQ,iBAAA,MAAAe,GAAA,IAIA,GAAA/iQ,KAAAgiQ,eAAAhpM,GAAAh5D,KAAAgiQ,cAAA,EAAAhiQ,KAAAiiQ,YAAA,KAAAjiQ,KAAA+hQ,QAAAttO,OAAAz0B,KAAAgiQ,gBAAA,KAAAhiQ,KAAA+hQ,QAAAttO,OAAAz0B,KAAAgiQ,iBAAA,KAAAhiQ,KAAA+hQ,QAAAttO,OAAAz0B,KAAAgiQ,cAAA,IAAA,KAAAhiQ,KAAA+hQ,QAAAttO,OAAAz0B,KAAAgiQ,cAAA,GAAA,CAYA,GAXAhiQ,KAAAgiQ,gBAGA,KAAAhiQ,KAAA+hQ,QAAAttO,OAAAz0B,KAAAgiQ,eACAhiQ,KAAAgiQ,gBACA,KAAAhiQ,KAAA+hQ,QAAAttO,OAAAz0B,KAAAgiQ,iBACAhiQ,KAAAgiQ,gBACAgB,GAAA,GAIAhjQ,KAAAgiQ,eAAAhiQ,KAAAiiQ,WAAAjiQ,KAAA+hQ,QAAAttO,OAAAz0B,KAAAgiQ,eAAA,KAAAhiQ,KAAA+hQ,QAAAttO,OAAAz0B,KAAAgiQ,eAAA,IACA,MAEA,MAAAhiQ,KAAAgiQ,cAAAhiQ,KAAAiiQ,WAAAjiQ,KAAA+hQ,QAAAttO,OAAAz0B,KAAAgiQ,gBAAA,KAAAhiQ,KAAA+hQ,QAAAttO,OAAAz0B,KAAAgiQ,gBAAA,KACA/oF,GAAA,GACAA,GAAAj5K,KAAA+hQ,QAAAttO,OAAAz0B,KAAAgiQ,eAAA,IACAhiQ,KAAAgiQ,gBAIA,GAAAhiH,GAAAjlD,EAAAo9E,CAMA,IALAn4B,GAAA64B,EAEAI,IACAj5B,GAAA51I,KAAAs1H,IAAA,GAAAsjI,EAAA/pF,IAEAjgH,GAAAh5D,KAAAgiQ,cAKA,MAFAhiQ,MAAAsiQ,iCAEAtiH,IAGA8hH,EAAAl3P,UAAAw4P,cAAA,WACA,KAAApjQ,KAAAgiQ,eAAAhiQ,KAAAiiQ,WAAA,CAEA,GAAAoB,IAAA,EACAC,EAAAtjQ,KAAA+hQ,QAAAttO,OAAAz0B,KAAAgiQ,gBACA,IAAA,KAAAsB,EACAD,GAAA,MACA,CAAA,GAAA,KAAAC,EAGA,MAFAD,IAAA,EAKA,MADArjQ,MAAAsiQ,iCACAe,IAGAvB,EAAAl3P,UAAA24P,aAAA,WACA,GAAAd,GAAAziQ,KAAA+hQ,QAAA/hQ,KAAAgiQ,eACAh9G,EAAAhlJ,KAAA0iQ,qBAAAD,EACA,IAAAz9G,GAAAk2G,WAAAM,gBAAA,CAEA,GAAAx7P,KAAAkiQ,kBAAAhH,WAAAM,gBACA,MAAA,KAEA,IADAx2G,EAAAhlJ,KAAA2iQ,mBAAAF,EAAAziQ,KAAAkiQ,kBACAl9G,GAAAk2G,WAAAM,gBACA,MAAA,UAEAx7P,MAAAgiQ,eAKA,QAFAhiQ,KAAAkiQ,iBAAAl9G,EAEAA,GACA,IAAAk2G,YAAAS,mBACA,MAAA,IAAAsB,qBAAA7B,EAAAp7P,KAAA8iQ,eAAA9iQ,KAAA8iQ,eACA,KAAA5H,YAAAQ,mBACA,MAAA,IAAAsB,qBAAA5B,EAAAp7P,KAAA8iQ,eAAA9iQ,KAAA8iQ,eACA,KAAA5H,YAAAW,mBACA,MAAA,IAAAsB,qBAAA/B,EAAAp7P,KAAA8iQ,eAAA9iQ,KAAA8iQ,eACA,KAAA5H,YAAAU,mBACA,MAAA,IAAAsB,qBAAA9B,EAAAp7P,KAAA8iQ,eAAA9iQ,KAAA8iQ,eACA,KAAA5H,YAAAmB,8BACA,MAAA,IAAAkC,+BAAAnD,EAAAp7P,KAAA8iQ,eACA,KAAA5H,YAAAkB,8BACA,MAAA,IAAAkC,+BAAAlD,EAAAp7P,KAAA8iQ,eACA,KAAA5H,YAAAqB,4BACA,MAAA,IAAAkC,6BAAArD,EAAAp7P,KAAA8iQ,eACA,KAAA5H,YAAAoB,4BACA,MAAA,IAAAkC,6BAAApD,EAAAp7P,KAAA8iQ,eACA,KAAA5H,YAAAO,kBAEA,MADAz7P,MAAAmiQ,sBACA,GAAArF,qBAAA1B,EACA,KAAAF,YAAAa,0BACA,GAAAh4E,IAAAxtD,GAAAv2H,KAAA8iQ,eAAAtsI,GAAAx2H,KAAA8iQ,eAAArsI,GAAAz2H,KAAA8iQ,eAAApsI,GAAA12H,KAAA8iQ,eAAAzwP,EAAArS,KAAA8iQ,eAAA5uP,EAAAlU,KAAA8iQ,eACA,OAAA,IAAArF,2BAAArC,EAAAr3E,EAAA1xK,EAAA0xK,EAAA7vK,EAAA6vK,EAAAxtD,GAAAwtD,EAAAvtD,GAAAutD,EAAAttD,GAAAstD,EAAArtD,GACA,KAAAwkI,YAAAY,0BACA,GAAA/3E,IAAAxtD,GAAAv2H,KAAA8iQ,eAAAtsI,GAAAx2H,KAAA8iQ,eAAArsI,GAAAz2H,KAAA8iQ,eAAApsI,GAAA12H,KAAA8iQ,eAAAzwP,EAAArS,KAAA8iQ,eAAA5uP,EAAAlU,KAAA8iQ,eACA,OAAA,IAAA1F,2BAAAhC,EAAAr3E,EAAA1xK,EAAA0xK,EAAA7vK,EAAA6vK,EAAAxtD,GAAAwtD,EAAAvtD,GAAAutD,EAAAttD,GAAAstD,EAAArtD,GACA,KAAAwkI,YAAAuB,iCACA,GAAA14E,IAAAttD,GAAAz2H,KAAA8iQ,eAAApsI,GAAA12H,KAAA8iQ,eAAAzwP,EAAArS,KAAA8iQ,eAAA5uP,EAAAlU,KAAA8iQ,eACA,OAAA,IAAAnE,iCAAAvD,EAAAr3E,EAAA1xK,EAAA0xK,EAAA7vK,EAAA6vK,EAAAttD,GAAAstD,EAAArtD,GACA,KAAAwkI,YAAAsB,iCACA,GAAAz4E,IAAAttD,GAAAz2H,KAAA8iQ,eAAApsI,GAAA12H,KAAA8iQ,eAAAzwP,EAAArS,KAAA8iQ,eAAA5uP,EAAAlU,KAAA8iQ,eACA,OAAA,IAAApE,iCAAAtD,EAAAr3E,EAAA1xK,EAAA0xK,EAAA7vK,EAAA6vK,EAAAttD,GAAAstD,EAAArtD,GACA,KAAAwkI,YAAAe,8BACA,GAAAl4E,IAAAxtD,GAAAv2H,KAAA8iQ,eAAAtsI,GAAAx2H,KAAA8iQ,eAAAzwP,EAAArS,KAAA8iQ,eAAA5uP,EAAAlU,KAAA8iQ,eACA,OAAA,IAAAnF,+BAAAvC,EAAAr3E,EAAA1xK,EAAA0xK,EAAA7vK,EAAA6vK,EAAAxtD,GAAAwtD,EAAAvtD,GACA,KAAA0kI,YAAAc,8BACA,GAAAj4E,IAAAxtD,GAAAv2H,KAAA8iQ,eAAAtsI,GAAAx2H,KAAA8iQ,eAAAzwP,EAAArS,KAAA8iQ,eAAA5uP,EAAAlU,KAAA8iQ,eACA,OAAA,IAAApF,+BAAAtC,EAAAr3E,EAAA1xK,EAAA0xK,EAAA7vK,EAAA6vK,EAAAxtD,GAAAwtD,EAAAvtD,GACA,KAAA0kI,YAAAyB,qCACA,MAAA,IAAAkC,qCAAAzD,EAAAp7P,KAAA8iQ,eAAA9iQ,KAAA8iQ,eACA,KAAA5H,YAAAwB,qCACA,MAAA,IAAAkC,qCAAAxD,EAAAp7P,KAAA8iQ,eAAA9iQ,KAAA8iQ,eACA,KAAA5H,YAAAiB,gBACA,GAAAp4E,IAAAxtD,GAAAv2H,KAAA8iQ,eAAAtsI,GAAAx2H,KAAA8iQ,eAAAU,SAAAxjQ,KAAA8iQ,eAAAW,SAAAzjQ,KAAAojQ,gBAAAM,SAAA1jQ,KAAAojQ,gBAAA/wP,EAAArS,KAAA8iQ,eAAA5uP,EAAAlU,KAAA8iQ,eACA,OAAA,IAAAzE,kBAAAjD,EAAAr3E,EAAA1xK,EAAA0xK,EAAA7vK,EAAA6vK,EAAAxtD,GAAAwtD,EAAAvtD,GAAAutD,EAAAy/E,SAAAz/E,EAAA0/E,SAAA1/E,EAAA2/E,SACA,KAAAxI,YAAAgB,gBACA,GAAAn4E,IAAAxtD,GAAAv2H,KAAA8iQ,eAAAtsI,GAAAx2H,KAAA8iQ,eAAAU,SAAAxjQ,KAAA8iQ,eAAAW,SAAAzjQ,KAAAojQ,gBAAAM,SAAA1jQ,KAAAojQ,gBAAA/wP,EAAArS,KAAA8iQ,eAAA5uP,EAAAlU,KAAA8iQ,eACA,OAAA,IAAAlF,kBAAAxC,EAAAr3E,EAAA1xK,EAAA0xK,EAAA7vK,EAAA6vK,EAAAxtD,GAAAwtD,EAAAvtD,GAAAutD,EAAAy/E,SAAAz/E,EAAA0/E,SAAA1/E,EAAA2/E,SACA,SACA,KAAA,0BAIA,IAAAv1L,GAAA,GAAAyzL,GACAhkP,EAAA,GAAAkkP,GAAA/tM,EAEA,KAAAn2C,EAAAilP,yBACA,QACA,MAAAjlP,EAAA2kP,eAAA,CACA,GAAAnB,GAAAxjP,EAAA2lP,cACA,KAAAnC,EACA,QACAjzL,GAAA0zL,cAAAT,GAGA,MAAAjzL,GAAA64K,iBAOA,kBAAA70N,SAAAA,OAAAC,IACAD,OAAA,MAAA,MAAA,WAAA,MAAA6kM,KACA,mBAAAp3N,UAAA,mBAAAD,QACAA,OAAAC,QAAAo3N,EAEAj3N,EAAAi3N,GAAAA,GAGAj3N,SCvgQA,QAAA6Q,GAAAzO,EAAAwD,EAAAC,GAAA,QAAArE,GAAAX,EAAAnB,GAAA,IAAAkG,EAAA/E,GAAA,CAAA,IAAAuB,EAAAvB,GAAA,CAAA,GAAA4E,GAAA,kBAAAw9B,UAAAA,OAAA,KAAAvjC,GAAA+F,EAAA,MAAAA,GAAA5E,GAAA,EAAA,IAAA2H,EAAA,MAAAA,GAAA3H,GAAA,EAAA,IAAAiQ,GAAA,GAAA/Q,OAAA,uBAAAc,EAAA,IAAA,MAAAiQ,GAAAg5B,KAAA,mBAAAh5B,EAAA,GAAAhN,GAAA8B,EAAA/E,IAAAhB,WAAAuC,GAAAvB,GAAA,GAAAS,KAAAwC,EAAAjE,QAAA,SAAAgR,GAAA,GAAAjL,GAAAxD,EAAAvB,GAAA,GAAAgQ,EAAA,OAAArP,GAAAoE,EAAAA,EAAAiL,IAAA/M,EAAAA,EAAAjE,QAAAgR,EAAAzO,EAAAwD,EAAAC,GAAA,MAAAD,GAAA/E,GAAAhB,QAAA,IAAA,GAAA2I,GAAA,kBAAAy6B,UAAAA,QAAApiC,EAAA,EAAAA,EAAAgF,EAAAjF,OAAAC,IAAAW,EAAAqE,EAAAhF,GAAA,OAAAW,KAAAskH,GAAA,SAAAj1G,EAAAzO,EAAAwD,GAAA,GAAAC,GAAAgL,EAAA,sBAAA,SAAAA,EAAAjL,GAAA,kBAAAwsB,SAAAA,OAAAC,IAAAD,OAAA,kBAAA,WAAA,MAAAvsB,KAAA,mBAAAzD,IAAAA,EAAAvC,UAAAuC,EAAAvC,QAAAgG,EAAAgL,EAAA+yP,WAAA/9P,IAAA7F,OAAAF,YAAA+jQ,oBAAA,IAAAC,GAAA,SAAAjzP,EAAAzO,EAAAwD,GAAA,GAAAC,GAAAgL,EAAA,kBAAAzO,GAAAvC,SAAAs/B,OAAA,SAAAtuB,GAAA,GAAAzO,GAAAyO,EAAAmwG,IAAA/xC,cAAA,OAAA7sE,KAAAA,EAAAtC,SAAA2xK,gBAAA5rK,EAAAk+P,MAAA,QAAAlzP,EAAAmwG,IAAAxgH,YAAA4B,GAAA,IAAAwD,GAAAxD,EAAA6sE,cAAA,qCAAA,KAAArpE,EAAA,CAAA,GAAApE,GAAA1B,SAAA2xK,gBAAA5rK,EAAAk+P,MAAA,QAAAviQ,GAAAqR,aAAA,KAAA,gCAAArR,EAAAqR,aAAA,OAAA,YAAArR,EAAA+E,YAAA,+PAAAnE,EAAA5B,YAAAgB,GAAA,GAAAgH,GAAA1I,SAAA2xK,gBAAA5rK,EAAAk+P,MAAA,IAAAv7P,GAAAqK,aAAA,KAAA,yBAAArK,EAAAqK,aAAA,YAAA,cAAAhC,EAAAnH,MAAA,IAAA,KAAAmH,EAAAlF,OAAA,IAAA,iBAAAnD,EAAAqK,aAAA,QAAA,wBAAArK,EAAAhI,YAAAP,KAAA+jQ,cAAAnzP,IAAArI,EAAAhI,YAAAP,KAAAgkQ,iBAAApzP,IAAArI,EAAAhI,YAAAP,KAAAikQ,eAAArzP,IAAAA,EAAAmwG,IAAAxgH,YAAAgI,GAAAqI,EAAAszP,aAAA37P,GAAAw7P,cAAA,SAAAnzP,GAAA,GAAAzO,GAAAtC,SAAA2xK,gBAAA5rK,EAAAk+P,MAAA,IAAA3hQ,GAAAyQ,aAAA,KAAA,wBAAAzQ,EAAAyQ,aAAA,YAAA,kCAAAzQ,EAAAyQ,aAAA,QAAA,wBAAAzQ,EAAA4T,iBAAA,QAAA,WAAAnF,EAAAuzP,oBAAAC,WAAA,GAAAjiQ,EAAA4T,iBAAA,aAAA,WAAAnF,EAAAuzP,oBAAAC,WAAA,EAAA,IAAAz+P,GAAA9F,SAAA2xK,gBAAA5rK,EAAAk+P,MAAA,OAAAn+P,GAAAiN,aAAA,IAAA,KAAAjN,EAAAiN,aAAA,IAAA,KAAAjN,EAAAiN,aAAA,QAAA,QAAAjN,EAAAiN,aAAA,SAAA,QAAAjN,EAAAiN,aAAA,QAAA,mCAAAzQ,EAAA5B,YAAAoF,EAAA,IAAApE,GAAA1B,SAAA2xK,gBAAA5rK,EAAAk+P,MAAA,OAAA,OAAAviQ,GAAAqR,aAAA,IAAA,wXAAArR,EAAAqR,aAAA,QAAA,gCAAAzQ,EAAA5B,YAAAgB,GAAAY,GAAA6hQ,iBAAA,SAAApzP,GAAA,GAAAzO,GAAAtC,SAAA2xK,gBAAA5rK,EAAAk+P,MAAA,IAAA3hQ,GAAAyQ,aAAA,KAAA,+BAAAzQ,EAAAyQ,aAAA,YAAA,8BAAAzQ,EAAAyQ,aAAA,QAAA,wBAAAzQ,EAAA4T,iBAAA,QAAA,WAAAnF,EAAAuzP,oBAAAtqP,UAAA,GAAA1X,EAAA4T,iBAAA,aAAA,WAAAnF,EAAAuzP,oBAAAtqP,UAAA,EAAA,IAAAlU,GAAA9F,SAAA2xK,gBAAA5rK,EAAAk+P,MAAA,OAAAn+P,GAAAiN,aAAA,IAAA,KAAAjN,EAAAiN,aAAA,IAAA,KAAAjN,EAAAiN,aAAA,QAAA,OAAAjN,EAAAiN,aAAA,SAAA,MAAAjN,EAAAiN,aAAA,QAAA,mCAAAzQ,EAAA5B,YAAAoF,EAAA,IAAApE,GAAA1B,SAAA2xK,gBAAA5rK,EAAAk+P,MAAA,OAAAviQ,GAAAqR,aAAA,IAAA,yLAAArR,EAAAqR,aAAA,QAAA,gCAAAzQ,EAAA5B,YAAAgB,EAAA,IAAAgH,GAAA1I,SAAA2xK,gBAAA5rK,EAAAk+P,MAAA,OAAA,OAAAv7P,GAAAqK,aAAA,IAAA,wzDAAArK,EAAAqK,aAAA,QAAA,gCAAAzQ,EAAA5B,YAAAgI,GAAApG,GAAA8hQ,eAAA,SAAArzP,GAAA,GAAAzO,GAAAtC,SAAA2xK,gBAAA5rK,EAAAk+P,MAAA,IAAA3hQ,GAAAyQ,aAAA,KAAA,yBAAAzQ,EAAAyQ,aAAA,YAAA,mCAAAzQ,EAAAyQ,aAAA,QAAA,wBAAAzQ,EAAA4T,iBAAA,QAAA,WAAAnF,EAAAuzP,oBAAAE,YAAA,GAAAliQ,EAAA4T,iBAAA,aAAA,WAAAnF,EAAAuzP,oBAAAE,YAAA,EAAA,IAAA1+P,GAAA9F,SAAA2xK,gBAAA5rK,EAAAk+P,MAAA,OAAAn+P,GAAAiN,aAAA,IAAA,KAAAjN,EAAAiN,aAAA,IAAA,KAAAjN,EAAAiN,aAAA,QAAA,QAAAjN,EAAAiN,aAAA,SAAA,QAAAjN,EAAAiN,aAAA,QAAA,mCAAAzQ,EAAA5B,YAAAoF,EAAA,IAAApE,GAAA1B,SAAA2xK,gBAAA5rK,EAAAk+P,MAAA,OAAA,OAAAviQ,GAAAqR,aAAA,IAAA,sQAAArR,EAAAqR,aAAA,QAAA,gCAAAzQ,EAAA5B,YAAAgB,GAAAY,GAAAyZ,QAAA,SAAAhL,GAAAA,EAAAszP,eAAAtzP,EAAAszP,aAAA1jQ,WAAAC,YAAAmQ,EAAAszP,cAAAtzP,EAAAszP,aAAA,UAAAI,kBAAA,IAAA94J,GAAA,SAAA56F,EAAAzO,EAAAwD,GAAA,GAAAC,GAAAgL,EAAA,mBAAArP,EAAAqP,EAAA,eAAArI,EAAA,SAAAqI,EAAAzO,GAAAnC,KAAA6K,KAAA+F,EAAAzO,GAAAoG,GAAAqC,UAAAC,KAAA,SAAA+F,EAAAzO,GAAAnC,KAAAw9B,SAAA5sB,EAAA5Q,KAAA+mB,QAAA5kB,EAAAnC,KAAAukQ,eAAAn+O,KAAA,EAAA/T,EAAA,EAAA6B,EAAA,GAAAlU,KAAAwkQ,aAAAp+O,KAAA,EAAA/T,EAAA,EAAA6B,EAAA,GAAAlU,KAAAykQ,gBAAAljQ,EAAA+M,MAAAtO,KAAA0kQ,UAAA1kQ,MAAAA,KAAAiL,sBAAA1J,EAAAojQ,4BAAA3kQ,KAAA+mB,QAAA69O,aAAA5kQ,KAAA6kQ,SAAAxyP,EAAA,EAAA6B,EAAA,EAAAzK,MAAA,EAAAiC,OAAA,GAAA1L,KAAA8kQ,cAAA,IAAAn/P,GAAA3F,KAAA+kQ,YAAA/kQ,MAAAglQ,OAAAr/P,GAAA3F,KAAA0kQ,aAAAn8P,EAAAqC,UAAAk6P,aAAA,WAAA,GAAAl0P,GAAA5Q,KAAA+mB,QAAAg6F,IAAAx9G,aAAA,UAAA,IAAAqN,EAAA,CAAA,GAAAzO,GAAAyO,EAAAV,MAAA,UAAAxO,OAAA,SAAAkP,GAAA,MAAAA,KAAAhI,IAAA8B,WAAA1K,MAAA6kQ,QAAAxyP,EAAAlQ,EAAA,GAAAnC,KAAA6kQ,QAAA3wP,EAAA/R,EAAA,GAAAnC,KAAA6kQ,QAAAp7P,MAAAtH,EAAA,GAAAnC,KAAA6kQ,QAAAn5P,OAAAvJ,EAAA,EAAA,IAAAwD,GAAAyE,KAAAkvD,IAAAt5D,KAAA+mB,QAAAtd,MAAAzJ,KAAA6kQ,QAAAp7P,MAAAzJ,KAAA+mB,QAAArb,OAAA1L,KAAA6kQ,QAAAn5P,OAAA1L,MAAAwkQ,YAAAp+O,KAAAzgB,EAAA3F,KAAAwkQ,YAAAnyP,GAAArS,KAAA+mB,QAAAtd,MAAAzJ,KAAA6kQ,QAAAp7P,MAAA9D,GAAA,EAAA3F,KAAAwkQ,YAAAtwP,GAAAlU,KAAA+mB,QAAArb,OAAA1L,KAAA6kQ,QAAAn5P,OAAA/F,GAAA,EAAA3F,KAAAilQ,uBAAAjlQ,KAAA+mB,QAAAg6F,IAAAr5G,gBAAA,eAAA1H,MAAAklQ,sBAAA38P,EAAAqC,UAAAs6P,mBAAA,WAAA,GAAAt0P,GAAA5Q,KAAAw9B,SAAA2nO,SAAAnlQ,MAAA6kQ,QAAAxyP,EAAAzB,EAAAyB,EAAArS,KAAA6kQ,QAAA3wP,EAAAtD,EAAAsD,EAAAlU,KAAA6kQ,QAAAp7P,MAAAmH,EAAAnH,MAAAzJ,KAAA6kQ,QAAAn5P,OAAAkF,EAAAlF,QAAAnD,EAAAqC,UAAAw6P,WAAA,WAAA,MAAA7jQ,GAAAyG,UAAAhI,KAAA6kQ,UAAAt8P,EAAAqC,UAAAm6P,WAAA,WAAA,GAAAn0P,GAAA5Q,KAAAqlQ,QAAA,IAAArlQ,KAAA+mB,QAAAu+O,KAAAtlQ,KAAA+mB,QAAAw+O,QAAA,CAAA,GAAApjQ,EAAAA,GAAAnC,KAAA+mB,QAAAu+O,IAAAl7P,KAAAkvD,IAAAt5D,KAAA+mB,QAAAtd,MAAAzJ,KAAA6kQ,QAAAp7P,MAAAzJ,KAAA+mB,QAAArb,OAAA1L,KAAA6kQ,QAAAn5P,QAAAtB,KAAAC,IAAArK,KAAA+mB,QAAAtd,MAAAzJ,KAAA6kQ,QAAAp7P,MAAAzJ,KAAA+mB,QAAArb,OAAA1L,KAAA6kQ,QAAAn5P,QAAAkF,EAAAnR,EAAA0C,EAAAyO,EAAA1Q,EAAAiC,EAAAyO,EAAAzO,GAAAnC,KAAA6kQ,QAAAxyP,EAAAlQ,EAAAyO,EAAAjN,GAAA3D,KAAA6kQ,QAAA3wP,EAAA/R,EAAA,GAAAnC,KAAA+mB,QAAAkmK,OAAA,CAAA,GAAAtnL,GAAA,IAAA3F,KAAA+mB,QAAAtd,OAAAzJ,KAAA6kQ,QAAAp7P,MAAA,EAAAzJ,KAAA6kQ,QAAAxyP,GAAAzB,EAAAnR,GAAAmG,EAAA,IAAA5F,KAAA+mB,QAAArb,QAAA1L,KAAA6kQ,QAAAn5P,OAAA,EAAA1L,KAAA6kQ,QAAA3wP,GAAAtD,EAAAnR,EAAAmR,GAAAzO,EAAAwD,EAAAiL,EAAAjN,EAAAiC,EAAA,MAAA5F,MAAAukQ,cAAAn+O,KAAAxV,EAAAnR,EAAAO,KAAAukQ,cAAAlyP,EAAAzB,EAAAzO,EAAAnC,KAAAukQ,cAAArwP,EAAAtD,EAAAjN,EAAAiN,GAAArI,EAAAqC,UAAA46P,iBAAA,WAAA,MAAAjkQ,GAAAyG,UAAAhI,KAAAukQ,gBAAAh8P,EAAAqC,UAAA+1B,SAAA,WAAA,MAAAp/B,GAAAyG,UAAAhI,KAAAwkQ,cAAAj8P,EAAAqC,UAAA66P,QAAA,WAAA,MAAAzlQ,MAAAwkQ,YAAAp+O,MAAA7d,EAAAqC,UAAA86P,gBAAA,WAAA,MAAA1lQ,MAAAwkQ,YAAAp+O,KAAApmB,KAAAukQ,cAAAn+O,MAAA7d,EAAAqC,UAAA+6P,oBAAA,SAAA/0P,GAAA,MAAAA,GAAA5Q,KAAAukQ,cAAAn+O,MAAA7d,EAAAqC,UAAAg7P,OAAA,WAAA,OAAAvzP,EAAArS,KAAAwkQ,YAAAnyP,EAAA6B,EAAAlU,KAAAwkQ,YAAAtwP,IAAA3L,EAAAqC,UAAAy6P,OAAA,WAAA,GAAAz0P,GAAA5Q,KAAA+mB,QAAAg6F,IAAA8kJ,iBAAA,OAAAj1P,GAAAnR,EAAAO,KAAAwkQ,YAAAp+O;AAAAxV,EAAAlR,EAAA,EAAAkR,EAAAzQ,EAAA,EAAAyQ,EAAA1Q,EAAAF,KAAAwkQ,YAAAp+O,KAAAxV,EAAAzO,EAAAnC,KAAAwkQ,YAAAnyP,EAAAzB,EAAAjN,EAAA3D,KAAAwkQ,YAAAtwP,EAAAtD,GAAArI,EAAAqC,UAAAo6P,OAAA,SAAAp0P,GAAA,GAAAzO,GAAAnC,KAAA8lQ,gBAAAl1P,GAAAjL,EAAA3F,KAAA+lQ,eAAAn1P,EAAA,IAAAzO,GAAAwD,EAAA,CAAA,GAAAxD,IAAAnC,KAAA+mB,QAAAi/O,WAAAhmQ,KAAA0lQ,kBAAA1lQ,KAAA2lQ,oBAAA/0P,EAAAnR,OAAA,GAAAmR,EAAAnR,EAAAmR,EAAA1Q,EAAAF,KAAAwkQ,YAAAp+O,KAAAjkB,GAAA,IAAAnC,KAAAimQ,YAAAr1P,GAAA5Q,KAAA+mB,QAAAm/O,OAAAlmQ,KAAA0lQ,qBAAA//P,EAAA,CAAA,GAAAC,GAAA5F,KAAA+mB,QAAAo/O,UAAAnmQ,KAAA4lQ,UAAAvzP,EAAAzB,EAAAzO,EAAA+R,EAAAtD,EAAAjN,IAAA4E,GAAA,EAAA3H,GAAA,CAAAgF,MAAA,GAAAgL,EAAAzO,EAAAnC,KAAA4lQ,SAAAvzP,EAAAzB,EAAAjN,EAAA3D,KAAA4lQ,SAAA1xP,EAAA3L,EAAA3H,GAAA,GAAAW,EAAAq1C,SAAAhxC,KAAAA,EAAAyM,KAAA,GAAAzB,EAAAzO,EAAAnC,KAAA4lQ,SAAAvzP,EAAA9J,GAAA,GAAAhH,EAAAo1C,SAAA/wC,EAAAyM,KAAAzB,EAAAzO,EAAAyD,EAAAyM,GAAAzM,EAAAsO,KAAA,GAAAtD,EAAAjN,EAAA3D,KAAA4lQ,SAAA1xP,EAAAtT,GAAA,GAAAW,EAAAo1C,SAAA/wC,EAAAsO,KAAAtD,EAAAjN,EAAAiC,EAAAsO,IAAA3L,GAAA3H,IAAAZ,KAAA+lQ,eAAAn1P,GAAAjL,GAAA,GAAA3F,KAAAimQ,YAAAr1P,GAAA5Q,KAAA+mB,QAAAq/O,MAAApmQ,KAAA4lQ,YAAAzjQ,GAAAwD,IAAA3F,KAAAilQ,yBAAA18P,EAAAqC,UAAAk7P,gBAAA,SAAAl1P,GAAA,MAAA5Q,MAAAwkQ,YAAAp+O,OAAAxV,EAAAnR,GAAA8I,EAAAqC,UAAAm7P,eAAA,SAAAn1P,GAAA,MAAA5Q,MAAAwkQ,YAAAnyP,IAAAzB,EAAAzO,GAAAnC,KAAAwkQ,YAAAtwP,IAAAtD,EAAAjN,GAAA4E,EAAAqC,UAAAq7P,YAAA,SAAAr1P,GAAA5Q,KAAAwkQ,YAAAp+O,KAAAxV,EAAAnR,EAAAO,KAAAwkQ,YAAAnyP,EAAAzB,EAAAzO,EAAAnC,KAAAwkQ,YAAAtwP,EAAAtD,EAAAjN,GAAA4E,EAAAqC,UAAAy7P,eAAA,EAAA99P,EAAAqC,UAAAq6P,qBAAA,WAAAjlQ,KAAAqmQ,gBAAArmQ,KAAAqmQ,eAAA,EAAArmQ,KAAAiL,sBAAA5J,KAAAtB,OAAAC,KAAAykQ,mBAAAl8P,EAAAqC,UAAA85P,UAAA,WAAA,GAAA9zP,GAAA5Q,KAAAqlQ,QAAAz/P,GAAAo/P,OAAAhlQ,KAAAw9B,SAAA5sB,EAAA5Q,KAAAy7N,MAAAz7N,KAAAqmQ,eAAA,EAAArmQ,KAAA+mB,QAAAu/O,cAAAtmQ,KAAA+mB,QAAAu/O,aAAA11P,IAAAzO,EAAAvC,QAAA,SAAAgR,EAAAzO,GAAA,MAAA,IAAAoG,GAAAqI,EAAAzO,MAAAmiQ,kBAAA,EAAAiC,cAAA,IAAAC,GAAA,SAAA51P,EAAAzO,EAAAwD,GAAA,GAAAC,GAAAgL,EAAA,cAAArP,EAAAqP,EAAA,mBAAArI,EAAAqI,EAAA,eAAAhQ,EAAAgQ,EAAA,mBAAAnR,EAAAmR,EAAA,qBAAApL,EAAA,SAAAoL,EAAAzO,GAAAnC,KAAA6K,KAAA+F,EAAAzO,IAAA0O,GAAA41P,iBAAA,yBAAAC,YAAA,EAAAC,qBAAA,EAAAC,aAAA,EAAAC,qBAAA,EAAAC,uBAAA,EAAAC,2BAAA,EAAAC,qBAAA,GAAAC,QAAA,GAAAC,QAAA,GAAA5B,KAAA,EAAAC,SAAA,EAAAt4E,QAAA,EAAA23E,YAAA,OAAAoB,WAAA,KAAAE,OAAA,KAAAC,UAAA,KAAAC,MAAA,KAAAe,oBAAA,KAAAC,sBAAA,KAAAd,aAAA,KAAA9gQ,GAAAoF,UAAAC,KAAA,SAAA+F,EAAAzO,GAAA,GAAAwD,GAAA3F,IAAAA,MAAA+gH,IAAAnwG,EAAA5Q,KAAAy7N,KAAA7qN,EAAAo+D,cAAA,QAAApuE,EAAAymQ,mBAAArnQ,KAAA+gH,KAAA/gH,KAAA+mB,QAAAxe,EAAAP,OAAAO,EAAAP,UAAA6I,GAAA1O,GAAAnC,KAAAmQ,MAAA,MAAA,IAAAvK,GAAAhF,EAAA0mQ,gCAAA12P,EAAA5Q,MAAAyJ,MAAA7D,EAAA6D,MAAAzJ,KAAA0L,OAAA9F,EAAA8F,OAAA1L,KAAAw9B,SAAA/9B,EAAAmB,EAAA2mQ,oBAAAvnQ,KAAA+gH,IAAA/gH,KAAA+mB,QAAA0/O,mBAAA1lJ,IAAA/gH,KAAA+gH,IAAAt3G,MAAAzJ,KAAAyJ,MAAAiC,OAAA1L,KAAA0L,OAAA45P,IAAAtlQ,KAAA+mB,QAAAu+O,IAAAC,QAAAvlQ,KAAA+mB,QAAAw+O,QAAAt4E,OAAAjtL,KAAA+mB,QAAAkmK,OAAA23E,YAAA5kQ,KAAA+mB,QAAA69O,YAAAoB,WAAA,SAAAp1P,EAAAzO,GAAA,MAAAwD,GAAA63B,UAAA73B,EAAAohB,QAAAi/O,WAAArgQ,EAAAohB,QAAAi/O,WAAAp1P,EAAAzO,GAAA,QAAA+jQ,OAAA,SAAAt1P,GAAA,MAAAjL,GAAA63B,UAAA73B,EAAAohB,QAAAm/O,OAAAvgQ,EAAAohB,QAAAm/O,OAAAt1P,GAAA,QAAAu1P,UAAA,SAAAv1P,EAAAzO,GAAA,MAAAwD,GAAA63B,UAAA73B,EAAAohB,QAAAo/O,UAAAxgQ,EAAAohB,QAAAo/O,UAAAv1P,EAAAzO,GAAA,QAAAikQ,MAAA,SAAAx1P,GAAA,MAAAjL,GAAA63B,UAAA73B,EAAAohB,QAAAq/O,MAAAzgQ,EAAAohB,QAAAq/O,MAAAx1P,GAAA,QAAA01P,aAAA,SAAA11P,GAAA,MAAAjL,GAAA63B,UAAA73B,EAAAohB,QAAAu/O,aAAA3gQ,EAAAohB,QAAAu/O,aAAA11P,GAAA,SAAA,IAAApL,GAAAxF,KAAAmkQ,mBAAA3+P,GAAAgiQ,cAAAxnQ,KAAA+mB,QAAAi/O,YAAAxgQ,EAAAiiQ,UAAAznQ,KAAA+mB,QAAAm/O,QAAA1gQ,EAAAkiQ,aAAA1nQ,KAAA+mB,QAAAo/O,WAAA3gQ,EAAAmiQ,SAAA3nQ,KAAA+mB,QAAAq/O,OAAA5gQ,EAAAoiQ,gBAAA5nQ,KAAA+mB,QAAAu/O,cAAAtmQ,KAAA+mB,QAAA4/O,qBAAAplQ,EAAA29B,OAAAl/B,MAAAA,KAAA6nQ,wBAAA51P,KAAAzG,MAAAxL,KAAA8nQ,iBAAAtiQ,EAAAoF,UAAAk9P,cAAA,WAAA,GAAAl3P,GAAA5Q,KAAAmC,EAAA,IAAA,IAAAnC,KAAA+nQ,gBAAAngG,UAAA,SAAAjiK,GAAA,GAAAC,GAAAgL,EAAAo3P,gBAAAriQ,EAAAxD,EAAA,OAAAA,GAAAwD,EAAAC,GAAA4mM,WAAA,SAAA7mM,GAAA,GAAAC,GAAAgL,EAAAo3P,gBAAAriQ,EAAAxD,EAAA,OAAAA,GAAAwD,EAAAC,GAAA04G,QAAA,SAAAn8G,GAAA,MAAAyO,GAAAq3P,cAAA9lQ,IAAAmtM,SAAA,SAAAntM,GAAA,MAAAyO,GAAAq3P,cAAA9lQ,IAAAmoH,UAAA,SAAAnoH,GAAA,MAAAyO,GAAAs3P,gBAAA/lQ,IAAAktM,UAAA,SAAAltM,GAAA,MAAAyO,GAAAs3P,gBAAA/lQ,IAAAohB,WAAA,SAAAphB,GAAA,MAAAyO,GAAAq3P,cAAA9lQ,IAAAgmQ,WAAA,SAAAhmQ,GAAA,MAAAyO,GAAAq3P,cAAA9lQ,IAAAimQ,YAAA,SAAAjmQ,GAAA,MAAAyO,GAAAq3P,cAAA9lQ,KAAA,MAAAnC,KAAA+mB,QAAAogP,oBAAA,CAAAnnQ,KAAA+mB,QAAAogP,oBAAAt8P,MAAAw9P,WAAAroQ,KAAA+gH,IAAAqmJ,sBAAApnQ,KAAA+mB,QAAAqgP,sBAAAkB,SAAAtoQ,KAAAmkQ,qBAAA,IAAAx+P,GAAA3F,KAAA+mB,QAAAogP,oBAAAoB,kBAAA,IAAA5iQ,GAAAA,EAAAhF,OAAA,IAAA,GAAAiF,GAAAD,EAAAhF,OAAA,EAAAiF,GAAA,EAAAA,IAAA5F,KAAA+nQ,eAAAr3P,eAAA/K,EAAAC,WAAA5F,MAAA+nQ,eAAApiQ,EAAAC,IAAA,IAAA,GAAArE,KAAAvB,MAAA+nQ,gBAAA/nQ,KAAA+mB,QAAAqgP,uBAAApnQ,KAAA+gH,KAAAhrG,iBAAAxU,EAAAvB,KAAA+nQ,eAAAxmQ,IAAA,EAAAvB,MAAA+mB,QAAA+/O,wBAAA9mQ,KAAA+mB,QAAA+/O,uBAAA,EAAA9mQ,KAAAwoQ,yBAAAhjQ,EAAAoF,UAAA49P,qBAAA,WAAA,IAAAxoQ,KAAA+mB,QAAA+/O,sBAAA,CAAA,GAAAl2P,GAAA5Q,IAAAA,MAAAyoQ,cAAA,SAAAtmQ,GAAA,MAAAyO,GAAA83P,iBAAAvmQ,IAAAyD,EAAA8d,GAAA1jB,KAAA+mB,QAAAqgP,uBAAApnQ,KAAA+gH,IAAA/gH,KAAAyoQ,eAAA,GAAAzoQ,KAAA+mB,QAAA+/O,uBAAA,IAAAthQ,EAAAoF,UAAA+9P,sBAAA,WAAA3oQ,KAAA+mB,QAAA+/O,wBAAAlhQ,EAAAqB,IAAAjH,KAAA+mB,QAAAqgP,uBAAApnQ,KAAA+gH,IAAA/gH,KAAAyoQ,eAAA,GAAAzoQ,KAAA+mB,QAAA+/O,uBAAA,IAAAthQ,EAAAoF,UAAA89P,iBAAA,SAAA93P,GAAA,GAAA5Q,KAAA+mB,QAAA6/O,aAAA,SAAA5mQ,KAAAmQ,MAAA,CAAAnQ,KAAA+mB,QAAAggP,4BAAAn2P,EAAAwP,eAAAxP,EAAAwP,iBAAAxP,EAAAsQ,aAAA,EAAA,IAAA/e,GAAAyO,EAAAo/L,QAAA,EAAArqM,EAAAsM,KAAAzG,MAAAxL,KAAA6nQ,wBAAAjiQ,EAAA,EAAAwE,KAAAC,IAAA,EAAA,GAAA1E,EAAA3F,MAAA6nQ,wBAAA51P,KAAAzG,MAAA,aAAAoF,IAAA,IAAAA,EAAAq/L,WAAAr/L,EAAAkuE,aAAA38E,EAAA,IAAAyO,EAAAo/L,OAAA,EAAA5lM,KAAA0yB,IAAAlsB,EAAAkuE,YAAAluE,EAAAo/L,QAAA7tM,EAAAA,GAAA,IAAA,GAAAA,EAAAA,GAAAA,EAAA,EAAA,GAAA,GAAAiI,KAAAmmC,IAAAnmC,KAAA0yB,IAAA36B,GAAA,IAAAyD,CAAA,IAAArE,GAAAvB,KAAA+gH,IAAA4yD,eAAAE,UAAAtrK,EAAA3H,EAAAgoQ,cAAAh4P,EAAA5Q,KAAA+gH,KAAA6yD,gBAAAryK,GAAA9B,EAAA2K,KAAAs1H,IAAA,EAAA1/H,KAAA+mB,QAAAigP,sBAAA,EAAA7kQ,EAAAnC,MAAA6oQ,YAAAppQ,EAAA8I,KAAA/C,EAAAoF,UAAAi+P,YAAA,SAAAj4P,EAAAzO,EAAAwD,GAAA,GAAAC,GAAA5F,KAAAw9B,SAAAgoO,kBAAA7/P,IAAAiL,EAAAxG,KAAAC,IAAArK,KAAA+mB,QAAAkgP,QAAArhQ,EAAAwgB,KAAAhc,KAAAkvD,IAAAt5D,KAAA+mB,QAAAmgP,QAAAthQ,EAAAwgB,KAAAxV,IAAAA,GAAA5Q,KAAAylQ,WAAAzlQ,KAAAylQ,UAAA70P,EAAA5Q,KAAA+mB,QAAAkgP,QAAArhQ,EAAAwgB,KAAAxV,EAAA5Q,KAAA+mB,QAAAkgP,QAAArhQ,EAAAwgB,KAAApmB,KAAAylQ,UAAAzlQ,KAAAylQ,UAAA70P,EAAA5Q,KAAA+mB,QAAAmgP,QAAAthQ,EAAAwgB,OAAAxV,EAAA5Q,KAAA+mB,QAAAmgP,QAAAthQ,EAAAwgB,KAAApmB,KAAAylQ,UAAA,IAAAlkQ,GAAAvB,KAAAw9B,SAAA6nO,SAAA98P,EAAApG,EAAAyxK,gBAAAryK,EAAAsyK,WAAAjzK,EAAAZ,KAAA+gH,IAAA8kJ,kBAAAn4E,UAAAnlL,EAAA8J,EAAA9J,EAAA2L,GAAA6jK,MAAAnnK,GAAA88K,WAAAnlL,EAAA8J,GAAA9J,EAAA2L,GAAAzU,EAAA8B,EAAAunQ,SAAAloQ,EAAAnB,GAAAA,IAAA8B,EAAA9B,GAAAO,KAAAw9B,SAAAwnO,OAAAvlQ,IAAA+F,EAAAoF,UAAAwb,KAAA,SAAAxV,EAAAzO,GAAAnC,KAAA6oQ,YAAAj4P,EAAAhQ,EAAAmoQ,kBAAA/oQ,KAAA+gH,IAAA/gH,KAAAyJ,MAAAzJ,KAAA0L,QAAAvJ,IAAAqD,EAAAoF,UAAAo+P,WAAA,SAAAp4P,EAAAzO,GAAAA,IAAAyO,EAAA5Q,KAAAipQ,wBAAAr4P,IAAA5Q,KAAAomB,KAAAxV,EAAAzO,IAAAqD,EAAAoF,UAAAs+P,kBAAA,SAAAt4P,EAAAzO,EAAAwD,GAAA,GAAAA,IAAAiL,EAAA5Q,KAAAipQ,wBAAAr4P,IAAA,aAAArI,EAAA6iJ,QAAAjpJ,GAAA,CAAA,KAAA,KAAAA,IAAA,KAAAA,IAAA,KAAA,IAAArC,OAAA,yBAAAqC,GAAAvB,EAAA2yK,eAAAvzK,KAAA+gH,IAAA5+G,EAAAkQ,EAAAlQ,EAAA+R,GAAAlU,KAAA6oQ,YAAAj4P,EAAAzO,EAAAwD,IAAAH,EAAAoF,UAAA66P,QAAA,WAAA,MAAAzlQ,MAAAw9B,SAAAioO,WAAAjgQ,EAAAoF,UAAA86P,gBAAA,WAAA,MAAA1lQ,MAAAw9B,SAAAkoO,mBAAAlgQ,EAAAoF,UAAAq+P,wBAAA,SAAAr4P,GAAA,MAAAA,GAAA5Q,KAAAw9B,SAAAgoO,mBAAAp/O,MAAA5gB,EAAAoF,UAAAu+P,UAAA,WAAA,GAAAv4P,GAAA5Q,KAAAw9B,SAAAgoO,kBAAAxlQ,MAAAomB,KAAAxV,EAAAwV,MAAA,IAAA5gB,EAAAoF,UAAAw+P,SAAA,WAAAppQ,KAAAqpQ,IAAArpQ,KAAAw9B,SAAAgoO,qBAAAhgQ,EAAAoF,UAAAiP,MAAA,WAAA7Z,KAAAmpQ,YAAAnpQ,KAAAopQ,YAAA5jQ,EAAAoF,UAAA0+P,eAAA,SAAA14P,GAAA,GAAA5Q,KAAA+mB,QAAAggP,4BAAAn2P,EAAAwP,eAAAxP,EAAAwP,iBAAAxP,EAAAsQ,aAAA,GAAAlhB,KAAA+mB,QAAA4/O,oBAAA,CAAA,GAAAxkQ,GAAAyO,EAAAuH,OAAA5U,aAAA,UAAA,EAAA,IAAApB,EAAAqO,QAAA,yBAAA,EAAA,OAAA,EAAA,GAAA7K,EAAAA,GAAAiL,EAAAuR,SAAA,GAAA,GAAA,EAAAniB,KAAA+mB,QAAAigP,uBAAA,GAAA,EAAAhnQ,KAAA+mB,QAAAigP,qBAAA,IAAAphQ,GAAAhF,EAAAgoQ,cAAAh4P,EAAA5Q,KAAA+gH,KAAA6yD,gBAAA5zK,KAAA+gH,IAAA4yD,eAAAE,UAAA7zK,MAAA6oQ,YAAAljQ,EAAAC,IAAAJ,EAAAoF,UAAAo9P,gBAAA,SAAAp3P,EAAAzO,GAAAnC,KAAA+mB,QAAAggP,4BAAAn2P,EAAAwP,eAAAxP,EAAAwP,iBAAAxP,EAAAsQ,aAAA,GAAA3Y,EAAAghQ,uBAAA34P,EAAA5Q,KAAA+gH,KAAA/gH,KAAA+mB,QAAA8/O,qBAAAt+P,EAAAihQ,WAAA54P,EAAAzO,GAAAnC,KAAAspQ,eAAA14P,IAAA5Q,KAAAmQ,MAAA,MAAAnQ,KAAAypQ,cAAAzpQ,KAAAw9B,SAAA6nO,SAAArlQ,KAAA0pQ,YAAA9oQ,EAAAgoQ,cAAAh4P,EAAA5Q,KAAA+gH,KAAA6yD,gBAAA5zK,KAAAypQ,cAAA51F,aAAAruK,EAAAoF,UAAAs9P,gBAAA,SAAAt3P,GAAA,GAAA5Q,KAAA+mB,QAAAggP,4BAAAn2P,EAAAwP,eAAAxP,EAAAwP,iBAAAxP,EAAAsQ,aAAA,GAAA,QAAAlhB,KAAAmQ,OAAAnQ,KAAA+mB,QAAA2/O,WAAA,CAAA,GAAAvkQ,GAAAvB,EAAAgoQ,cAAAh4P,EAAA5Q,KAAA+gH,KAAA6yD,gBAAA5zK,KAAAypQ,cAAA51F,WAAAluK,EAAA3F,KAAAypQ,cAAA/7E,UAAAvrL,EAAAkQ,EAAArS,KAAA0pQ,YAAAr3P,EAAAlQ,EAAA+R,EAAAlU,KAAA0pQ,YAAAx1P,EAAAlU,MAAAw9B,SAAAwnO,OAAAr/P,KAAAH,EAAAoF,UAAAq9P,cAAA,SAAAr3P,GAAA5Q,KAAA+mB,QAAAggP,4BAAAn2P,EAAAwP,eAAAxP,EAAAwP,iBAAAxP,EAAAsQ,aAAA,GAAA,QAAAlhB,KAAAmQ,QAAAnQ,KAAAmQ,MAAA,SAAA3K,EAAAoF,UAAA06P,IAAA,WAAA,GAAA10P,GAAA5Q,KAAAw9B,SAAA4nO,aAAAjjQ,EAAAiI,KAAAkvD,IAAAt5D,KAAAyJ,MAAAmH,EAAAnH,MAAAzJ,KAAA0L,OAAAkF,EAAAlF,OAAA1L,MAAAomB,KAAAjkB,GAAA,IAAAqD,EAAAoF,UAAA26P,QAAA,WAAA,GAAA30P,GAAA5Q,KAAAw9B,SAAA4nO,aAAAjjQ,EAAAiI,KAAAC,IAAArK,KAAAyJ,MAAAmH,EAAAnH,MAAAzJ,KAAA0L,OAAAkF,EAAAlF,OAAA1L,MAAAomB,KAAAjkB,GAAA,IAAAqD,EAAAoF,UAAAqiL,OAAA,WAAA,GAAAr8K,GAAA5Q,KAAAw9B,SAAA4nO,aAAAjjQ,EAAA,IAAAnC,KAAAyJ,OAAAmH,EAAAnH,MAAA,EAAAmH,EAAAyB,GAAArS,KAAAylQ,WAAA9/P,EAAA,IAAA3F,KAAA0L,QAAAkF,EAAAlF,OAAA,EAAAkF,EAAAsD,GAAAlU,KAAAylQ,UAAAzlQ,MAAAmkQ,oBAAAkF,KAAAh3P,EAAAlQ,EAAA+R,EAAAvO,KAAAH,EAAAoF,UAAA++P,WAAA,WAAA3pQ,KAAAw9B,SAAA0nO,sBAAA1/P,EAAAoF,UAAAy+P,IAAA,SAAAz4P,GAAA,GAAAzO,GAAAnC,KAAAw9B,SAAA6nO,QAAAljQ,GAAAA,EAAAyO,EAAAyB,EAAAlQ,EAAAwB,EAAAiN,EAAAsD,EAAAlU,KAAAw9B,SAAAwnO,OAAA7iQ,IAAAqD,EAAAoF,UAAAg/P,MAAA,SAAAh5P,GAAA,GAAAzO,GAAAnC,KAAAw9B,SAAA6nO,QAAAljQ,GAAAA,GAAAyO,EAAAyB,EAAAlQ,EAAAwB,GAAAiN,EAAAsD,EAAAlU,KAAAw9B,SAAAwnO,OAAA7iQ,IAAAqD,EAAAoF,UAAAg7P,OAAA,WAAA,GAAAh1P,GAAA5Q,KAAAw9B,SAAAmD,UAAA,QAAAtuB,EAAAzB,EAAAyB,EAAA6B,EAAAtD,EAAAsD,IAAA1O,EAAAoF,UAAAmxB,OAAA,WAAA,GAAAnrB,GAAAhQ,EAAA0mQ,gCAAAtnQ,KAAA+gH,IAAA/gH,MAAAyJ,MAAAmH,EAAAnH,MAAAzJ,KAAA0L,OAAAkF,EAAAlF,MAAA,IAAAvJ,GAAAnC,KAAAw9B,QAAAr7B,GAAA4kB,QAAAtd,MAAAzJ,KAAAyJ,MAAAtH,EAAA4kB,QAAArb,OAAA1L,KAAA0L,OAAAvJ,EAAA4iQ,aAAA/kQ,KAAA+mB,QAAA4/O,sBAAA3mQ,KAAAmkQ,oBAAA0F,sBAAA7pQ,KAAAmkQ,oBAAA2F,uBAAAtkQ,EAAAoF,UAAAw0B,QAAA,WAAA,GAAAxuB,GAAA5Q,IAAAA,MAAAgmQ,WAAA,KAAAhmQ,KAAAkmQ,OAAA,KAAAlmQ,KAAAmmQ,UAAA,KAAAnmQ,KAAAomQ,MAAA,KAAApmQ,KAAAsmQ,aAAA,KAAA,MAAAtmQ,KAAA+mB,QAAAogP,qBAAAnnQ,KAAA+mB,QAAAogP,oBAAA/nO,SAAAipO,WAAAroQ,KAAA+gH,IAAAqmJ,sBAAApnQ,KAAA+mB,QAAAqgP,sBAAAkB,SAAAtoQ,KAAAmkQ,qBAAA,KAAA,GAAAhiQ,KAAAnC,MAAA+nQ,gBAAA/nQ,KAAA+mB,QAAAqgP,uBAAApnQ,KAAA+gH,KAAAp+G,oBAAAR,EAAAnC,KAAA+nQ,eAAA5lQ,IAAA,EAAAnC,MAAA2oQ,wBAAA3oQ,KAAAmkQ,oBAAA0F,sBAAA7pQ,KAAA6Z,QAAAhW,EAAAA,EAAAnC,OAAA,SAAAS,GAAA,MAAAA,GAAA4+G,MAAAnwG,EAAAmwG,YAAA/gH,MAAA+mB,cAAA/mB,MAAAw9B,eAAAx9B,MAAA+pQ,qBAAA/pQ,MAAAglM,GAAAhlM,KAAAmkQ,kBAAA,WAAA,MAAA,QAAA3+P,EAAAoF,UAAAu5P,kBAAA,WAAA,GAAAvzP,GAAA5Q,IAAA,OAAAA,MAAA+pQ,iBAAA/pQ,KAAA+pQ,eAAA/pQ,KAAAglM,IAAAglE,UAAA,WAAA,MAAAp5P,GAAAmW,QAAA2/O,YAAA,EAAA91P,EAAAo0L,IAAAilE,WAAA,WAAA,MAAAr5P,GAAAmW,QAAA2/O,YAAA,EAAA91P,EAAAo0L,IAAAklE,aAAA,WAAA,QAAAt5P,EAAAmW,QAAA2/O,YAAA2C,IAAA,SAAAlnQ,GAAA,MAAAyO,GAAAy4P,IAAAlnQ,GAAAyO,EAAAo0L,IAAA4kE,MAAA,SAAAznQ,GAAA,MAAAyO,GAAAg5P,MAAAznQ,GAAAyO,EAAAo0L,IAAA4gE,OAAA,WAAA,MAAAh1P,GAAAg1P,UAAA8B,aAAA,SAAAvlQ,GAAA,MAAAyO,GAAAmW,QAAAo/O,UAAA,OAAAhkQ,EAAA,KAAAoG,EAAA+F,MAAAnM,EAAAyO,EAAAm5P,gBAAAn5P,EAAAo0L,IAAA2iE,SAAA,SAAAxlQ,GAAA,MAAAyO,GAAAmW,QAAAq/O,MAAA,OAAAjkQ,EAAA,KAAAoG,EAAA+F,MAAAnM,EAAAyO,EAAAm5P,gBAAAn5P,EAAAo0L,IAAAmlE,WAAA,WAAA,MAAAv5P,GAAAmW,QAAA6/O,aAAA,EAAAh2P,EAAAo0L,IAAAolE,YAAA,WAAA,MAAAx5P,GAAAmW,QAAA6/O,aAAA,EAAAh2P,EAAAo0L,IAAAqlE,cAAA,WAAA,QAAAz5P,EAAAmW,QAAA6/O,aAAAkD,mBAAA,WAAA,MAAAl5P,GAAAmW,QAAA4/O,sBAAA/1P,EAAAmW,QAAA4/O,qBAAA,EAAAplQ,EAAA29B,OAAAtuB,IAAAA,EAAAo0L,IAAA6kE,oBAAA,WAAA,MAAAj5P,GAAAmW,QAAA4/O,sBAAA/1P,EAAAmW,QAAA4/O,qBAAA,EAAAplQ,EAAAqa,QAAAhL,IAAAA,EAAAo0L,IAAAslE,sBAAA,WAAA,QAAA15P,EAAAmW,QAAA4/O,qBAAA4D,mBAAA,WAAA,MAAA35P,GAAAmW,QAAA8/O,qBAAA,EAAAj2P,EAAAo0L,IAAAwlE,oBAAA,WAAA,MAAA55P,GAAAmW,QAAA8/O,qBAAA,EAAAj2P,EAAAo0L,IAAAylE,sBAAA,WAAA,QAAA75P,EAAAmW,QAAA8/O,qBAAA2B,qBAAA,WAAA,MAAA53P,GAAA43P,uBAAA53P,EAAAo0L,IAAA2jE,sBAAA,WAAA,MAAA/3P,GAAA+3P,wBAAA/3P,EAAAo0L,IAAA0lE,wBAAA,WAAA,QAAA95P,EAAAmW,QAAA+/O,uBAAA6D,wBAAA,SAAAxoQ,GAAA,MAAAyO,GAAAmW,QAAAigP,qBAAA7kQ,EAAAyO,EAAAo0L,IAAA4lE,WAAA,SAAAzoQ,GAAA,MAAAyO,GAAAmW,QAAAkgP,QAAA9kQ,EAAAyO,EAAAo0L,IAAA6lE,WAAA,SAAA1oQ,GAAA,MAAAyO,GAAAmW,QAAAmgP,QAAA/kQ,EAAAyO,EAAAo0L,IAAAwiE,cAAA,SAAArlQ,GAAA,MAAAyO,GAAAmW,QAAAi/O,WAAA,OAAA7jQ,EAAA,KAAAoG,EAAA+F,MAAAnM,EAAAyO,EAAAm5P,gBAAAn5P,EAAAo0L,IAAAyiE,UAAA,SAAAtlQ,GAAA,MAAAyO,GAAAmW,QAAAm/O,OAAA,OAAA/jQ,EAAA,KAAAoG,EAAA+F,MAAAnM,EAAAyO,EAAAm5P,gBAAAn5P,EAAAo0L,IAAA5+K,KAAA,SAAAjkB,GAAA,MAAAyO,GAAAo4P,WAAA7mQ,GAAA,GAAAyO,EAAAo0L,IAAA8lE,OAAA,SAAA3oQ,GAAA,MAAAyO,GAAAo4P,WAAA7mQ,GAAA,GAAAyO,EAAAo0L,IAAA6jE,YAAA,SAAA1mQ,EAAAwD,GAAA,MAAAiL,GAAAs4P,kBAAA/mQ,EAAAwD,GAAA,GAAAiL,EAAAo0L,IAAA+lE,cAAA,SAAA5oQ,EAAAwD,GAAA,MAAAiL,GAAAs4P,kBAAA/mQ,EAAAwD,GAAA,GAAAiL,EAAAo0L,IAAAo/D,OAAA,WAAA,MAAApkQ,MAAA8qQ,OAAA,EAAAl6P,EAAAmW,QAAAigP,sBAAAp2P,EAAAo0L,IAAAq/D,QAAA,WAAA,MAAArkQ,MAAA8qQ,OAAA,GAAA,EAAAl6P,EAAAmW,QAAAigP,uBAAAp2P,EAAAo0L,IAAAygE,QAAA,WAAA,MAAA70P,GAAA80P,mBAAAkC,gBAAA,SAAAzlQ,GAAA,MAAAyO,GAAAmW,QAAAu/O,aAAA,OAAAnkQ,EAAA,KAAAoG,EAAA+F,MAAAnM,EAAAyO,EAAAm5P,gBAAAn5P,EAAAo0L,IAAAmkE,UAAA,WAAA,MAAAv4P,GAAAu4P,YAAAv4P,EAAAo0L,IAAAokE,SAAA,WAAA,MAAAx4P,GAAAw4P,WAAAx4P,EAAAo0L,IAAAnrL,MAAA,WAAA,MAAAjJ,GAAAiJ,QAAAjJ,EAAAo0L,IAAAsgE,IAAA,WAAA,MAAA10P,GAAA00P,MAAA10P,EAAAo0L,IAAAugE,QAAA,WAAA,MAAA30P,GAAA20P,UAAA30P,EAAAo0L,IAAA/X,OAAA,WAAA,MAAAr8K,GAAAq8K,SAAAr8K,EAAAo0L,IAAA2kE,WAAA,WAAA,MAAA/4P,GAAA+4P,aAAA/4P,EAAAo0L,IAAAjpK,OAAA,WAAA,MAAAnrB,GAAAmrB,SAAAnrB,EAAAo0L,IAAAgmE,SAAA,WAAA,OAAAvhQ,MAAAmH,EAAAnH,MAAAiC,OAAAkF,EAAAlF,OAAAu/P,SAAAr6P,EAAA60P,UAAAZ,QAAAj0P,EAAA4sB,SAAA4nO,eAAAhmO,QAAA,WAAA,MAAAxuB,GAAAwuB,UAAAxuB,EAAAo0L,MAAAhlM,KAAA+pQ,eAAA,IAAAlmQ,MAAA1D,EAAA,SAAAyQ,EAAAzO,GAAA,GAAAwD,GAAA4C,EAAA2iQ,OAAAt6P,EAAA,IAAA,OAAAjL,EAAA,MAAA,KAAA,KAAA,GAAAC,GAAA/B,EAAAlD,OAAA,EAAAiF,GAAA,EAAAA,IAAA,GAAA/B,EAAA+B,GAAAm7G,MAAAp7G,EAAA,MAAA9B,GAAA+B,GAAA0iQ,SAAAnE,mBAAA,OAAAtgQ,GAAA0C,MAAAw6G,IAAAp7G,EAAA2iQ,SAAA,GAAA9iQ,GAAAG,EAAAxD,KAAA0B,EAAAA,EAAAlD,OAAA,GAAA2nQ,SAAAnE,oBAAAhiQ,GAAAvC,QAAAO,IAAAgrQ,kBAAA,EAAAC,oBAAA,EAAA9G,kBAAA,EAAA+G,aAAA,EAAA9E,cAAA,IAAA+E,GAAA,SAAA16P,EAAAzO,EAAAwD,GAAA,GAAAC,GAAAgL,EAAA,eAAArP,EAAA,SAAA1B,UAAAuiG,eAAA7gG,EAAA,MAAAY,EAAAvC,SAAAkkQ,MAAA,6BAAAyH,MAAA,uCAAAC,QAAA,gCAAAC,QAAA,+BAAAC,KAAA,oCAAApE,gCAAA,SAAA12P,GAAA,GAAAA,EAAAmsB,aAAAnsB,EAAA4rB,aAAA,OAAA/yB,MAAAmH,EAAAmsB,YAAArxB,OAAAkF,EAAA4rB,aAAA,IAAA5rB,EAAA6V,wBAAA,MAAA7V,GAAA6V,uBAAA,MAAA,IAAA3mB,OAAA,2CAAAynQ,oBAAA,SAAA32P,EAAAzO,GAAA,GAAAwD,GAAA,IAAA,IAAAA,EAAAC,EAAAkxC,UAAA30C,GAAAA,EAAAyO,EAAAo+D,cAAA7sE,IAAAwD,EAAA,CAAA,GAAApE,GAAAwL,MAAAnC,UAAAnI,MAAApB,KAAAuP,EAAAxK,YAAAwK,EAAA6J,UAAA/Y,OAAA,SAAAkP,GAAA,MAAA,SAAAA,EAAA5P,UAAA,UAAA4P,EAAA5P,UAAA,KAAAO,EAAAZ,QAAA,MAAAY,EAAA,GAAAP,UAAA,OAAAO,EAAA,GAAAgC,aAAA,eAAAoC,EAAApE,EAAA,IAAA,IAAAoE,EAAA,CAAA,GAAA4C,GAAA,aAAA,GAAA0J,OAAA+1L,cAAA3kM,QAAA,MAAA,GAAAsC,GAAA9F,SAAA2xK,gBAAAxxK,KAAA8jQ,MAAA,KAAAn+P,EAAAiN,aAAA,KAAArK,EAAA,IAAA3H,GAAAgQ,EAAAxK,YAAAwK,EAAA6J,QAAA,IAAA7Z,GAAAA,EAAAD,OAAA,EAAA,IAAA,GAAAlB,GAAAmB,EAAAD,OAAAlB,EAAA,EAAAA,IAAA,SAAAmB,EAAAA,EAAAD,OAAAlB,GAAAuB,UAAA2E,EAAApF,YAAAK,EAAAA,EAAAD,OAAAlB,GAAAmR,GAAArQ,YAAAoF,GAAA,GAAAH,KAAA,OAAAG,GAAApC,aAAA,WAAAiC,EAAAG,EAAApC,aAAA,SAAA2M,MAAA,OAAA1K,EAAAgL,QAAA,2BAAAhL,EAAAe,KAAA,yBAAAZ,EAAAiN,aAAA,QAAApN,EAAAoJ,KAAA,OAAAjJ,GAAA0hQ,mBAAA,SAAAz2P,GAAA,GAAAA,EAAAgC,aAAA,QAAA5S,KAAA8jQ,OAAAlzP,EAAAk/J,eAAA9vK,KAAAwrQ,QAAA,cAAAxrQ,KAAAyrQ,SAAA76P,EAAAk/J,eAAA9vK,KAAAwrQ,QAAA,WAAAxrQ,KAAA0rQ,MAAA,OAAA96P,EAAApQ,WAAA,CAAA,GAAA2B,GAAAyO,EAAArN,aAAA,UAAA,IAAA,IAAApB,EAAAlB,cAAAuP,QAAA,aAAAI,EAAAgC,aAAA,QAAA,qBAAAzQ,KAAAwpQ,kCAAA,IAAAC,kBAAAhmQ,EAAAqyC,SAAA,WAAA,IAAA,GAAArnC,GAAA/Q,SAAAuF,iBAAA,QAAAjD,EAAAyO,EAAAjQ,OAAAgF,EAAA,EAAAxD,EAAAwD,EAAAA,IAAA,CAAA,GAAAC,GAAAgL,EAAAjL,EAAAC,GAAApF,WAAAwjB,aAAApe,EAAAA,KAAA5F,KAAA2rQ,mCAAA3G,OAAA,SAAAp0P,EAAAzO,EAAAwD,GAAA,GAAAC,GAAA5F,KAAAuI,EAAA,UAAApG,EAAA1C,EAAA,IAAA0C,EAAAzC,EAAA,IAAAyC,EAAAhC,EAAA,IAAAgC,EAAAjC,EAAA,IAAAiC,EAAAA,EAAA,IAAAA,EAAAwB,EAAA,GAAAiN,GAAAk/J,eAAA,KAAA,YAAAvnK,GAAA,aAAAqI,GAAAvM,MAAAuM,EAAAvM,MAAAu5C,UAAAr1C,EAAA,iBAAAqI,GAAAvM,MAAAuM,EAAAvM,MAAA,iBAAAkE,EAAA,qBAAAqI,GAAAvM,QAAAuM,EAAAvM,MAAA,qBAAAkE,GAAA,OAAAhH,GAAAoE,IAAAA,EAAAnF,WAAAwjB,aAAAre,EAAAA,GAAA5F,OAAAmL,WAAA,WAAAtF,EAAAgmQ,qBAAAhmQ,EAAA+lQ,qCAAA/C,cAAA,SAAAh4P,EAAAzO,GAAA,GAAAwD,GAAAxD,EAAAoxK,gBAAA,OAAA3tK,GAAA2jQ,uBAAA34P,EAAAzO,GAAAwD,EAAA0M,EAAAzB,EAAA8R,QAAA/c,EAAAuO,EAAAtD,EAAA+R,QAAAhd,GAAAojQ,kBAAA,SAAAn4P,EAAAzO,EAAAwD,GAAA,MAAA3F,MAAAuzK,eAAA3iK,EAAAzO,EAAA,EAAAwD,EAAA,IAAA4tK,eAAA,SAAA3iK,EAAAzO,EAAAwD,GAAA,GAAAC,GAAAgL,EAAA2iK,gBAAA,OAAA3tK,GAAAyM,EAAAlQ,EAAAyD,EAAAsO,EAAAvO,EAAAC,MAAA2gQ,cAAA,IAAAsF,GAAA,SAAAj7P,EAAAzO,EAAAwD,GAAAxD,EAAAvC,QAAA,WAAA,QAAAgR,GAAAA,EAAAzO,EAAAwD,GAAA,GAAAC,GAAA,SAAAgL,IAAAA,IAAAA,EAAA7Q,OAAAqH,MAAA,IAAAzB,IAAA+a,cAAA9P,EAAAuH,OAAAvH,EAAAuH,QAAAvH,EAAAy3D,WAAAxnE,KAAA,QAAAovM,UAAA,uBAAAr/L,EAAA/P,KAAA,EAAA,EAAAirQ,OAAA,EAAAC,OAAA,EAAA3rP,eAAA,WAAAxP,EAAAwP,eAAAxP,EAAAwP,iBAAAxP,EAAAsQ,aAAA,GAAA,OAAA,cAAArQ,GAAAlL,EAAAqqM,QAAA,KAAAp/L,EAAAkuE,WAAAluE,EAAA4tE,cAAA74E,EAAAmmQ,QAAA,KAAAl7P,EAAA4tE,cAAA74E,EAAAqqM,OAAAp/L,EAAAkR,OAAA3f,EAAAwD,GAAA,OAAAxF,GAAAoG,MAAA25B,QAAAtvB,EAAAD,GAAA/K,EAAA4sK,QAAA7sK,IAAAC,EAAA,QAAAzD,GAAAyO,EAAAzO,GAAA,IAAA,GAAAwD,GAAA,EAAAA,EAAAxF,EAAAQ,OAAAgF,IAAA,GAAAxF,EAAAwF,GAAAu6B,UAAAtvB,GAAAzQ,EAAAwF,GAAA6sK,UAAArwK,EAAA,MAAAhC,GAAAwF,GAAAgL,EAAA,OAAA,cAAA,QAAAhL,GAAAiL,EAAAzO,GAAA,IAAA,GAAAwD,GAAA,EAAAA,EAAAxF,EAAAQ,OAAAgF,IAAA,GAAAxF,EAAAwF,GAAAu6B,UAAAtvB,GAAAzQ,EAAAwF,GAAA6sK,UAAArwK,EAAA,MAAAhC,GAAAoR,OAAA5L,EAAA,GAAA,QAAAC,GAAAzD,EAAAwD,EAAAC,EAAArE,GAAA,GAAAgH,EAAAA,GAAA,UAAAsI,EAAAjL,EAAAgL,EAAAzO,EAAAyD,EAAArE,GAAAY,EAAA1C,GAAAoE,EAAA8B,EAAA4C,EAAAhH,IAAA,GAAA,QAAAA,GAAAqP,EAAAhL,EAAArE,EAAAgH,GAAA,GAAA3H,EAAAA,GAAA,UAAAiQ,EAAAtP,EAAAY,EAAAyO,EAAArI,GAAAqI,EAAApL,GAAA3B,EAAA+B,EAAAhF,EAAA2H,IAAA,GAAA5C,EAAAiL,EAAArI,GAAA,QAAAA,GAAAqI,EAAAzO,EAAAwD,GAAAC,EAAAgL,EAAAC,EAAA1O,EAAAwD,GAAA,kBAAAkL,GAAAjL,EAAAgL,EAAA,sBAAAzO,EAAAwD,GAAA,QAAA/E,GAAAgQ,EAAAzO,EAAAwD,GAAApE,EAAAqP,EAAAC,EAAA1O,EAAAwD,GAAA,kBAAAkL,GAAAtP,EAAAqP,EAAA,sBAAAzO,EAAAwD,GAAA,GAAAlG,GAAA+F,EAAAqL,EAAAhN,EAAA,GAAA1D,IAAA,OAAAJ,QAAAgW,kBAAAtW,EAAA,mBAAA+F,EAAA,wBAAA/F,EAAA,cAAA+F,EAAA,cAAA3B,EAAA,MAAAgN,EAAA,WAAAhR,UAAAO,cAAA,OAAA,QAAA,SAAAP,SAAAmsQ,aAAA,aAAA,kBAAAtoP,GAAAnb,EAAAtB,IAAArG,WAAAqrQ,GAAA,SAAAr7P,EAAAzO,EAAAwD,GAAA,QAAAC,GAAAgL,GAAA,MAAA,UAAAzO,GAAApC,OAAAmL,WAAA/I,EAAAyO,IAAAzO,EAAAvC,SAAAoI,OAAA,SAAA4I,EAAAzO,GAAAyO,EAAAA,KAAA,KAAA,GAAAjL,KAAAxD,GAAAnC,KAAA42C,SAAAz0C,EAAAwD,IAAAiL,EAAAjL,GAAA3F,KAAAgI,OAAA4I,EAAAjL,GAAAxD,EAAAwD,IAAAiL,EAAAjL,GAAAxD,EAAAwD,EAAA,OAAAiL,IAAAkmC,UAAA,SAAAlmC,GAAA,MAAAA,aAAAs7P,cAAAt7P,YAAAmuB,aAAAnuB,YAAAu7P,gBAAAv7P,GAAA,gBAAAA,IAAA,OAAAA,GAAA,IAAAA,EAAAtP,UAAA,gBAAAsP,GAAA5P,UAAA41C,SAAA,SAAAhmC,GAAA,MAAA,oBAAAN,OAAA1F,UAAA6F,SAAApP,KAAAuP,IAAA+lC,SAAA,SAAA/lC,GAAA,OAAAiB,MAAAnH,WAAAkG,KAAA2V,SAAA3V,IAAAs6P,OAAA,SAAAt6P,GAAA,GAAAzO,GAAAwD,CAAA,IAAA3F,KAAA82C,UAAAlmC,GAAAzO,EAAAyO,MAAA,CAAA,KAAA,gBAAAA,IAAAA,YAAA2E,SAAA,KAAA,IAAAzV,OAAA,qDAAA,IAAAqC,EAAAtC,SAAAmvE,cAAAp+D,IAAAzO,EAAA,KAAA,IAAArC,OAAA,0DAAA8Q,GAAA,GAAA,QAAAzO,EAAAq2B,QAAAv3B,cAAA0E,EAAAxD,MAAA,IAAA,WAAAA,EAAAq2B,QAAAv3B,cAAA0E,EAAAxD,EAAAkZ,gBAAA1F,oBAAA,CAAA,GAAA,UAAAxT,EAAAq2B,QAAAv3B,cAAA,KAAA,QAAAkB,EAAAq2B,QAAAv3B,cAAA,GAAAnB,OAAA,+FAAA,GAAAA,OAAA,kBAAA6F,GAAAxD,EAAAiqQ,iBAAAz2P,gBAAA,MAAAhQ,IAAA2I,MAAA,SAAAsC,EAAAzO,GAAA,MAAA,YAAA,MAAAyO,GAAApO,MAAAL,EAAA+E,aAAAkkJ,QAAA,SAAAx6I,GAAA,MAAAN,QAAA1F,UAAA6F,SAAAjO,MAAAoO,GAAAvN,QAAA,cAAA,IAAAA,QAAA,MAAA,KAAAkmQ,uBAAA,SAAA34P,EAAAzO,GAAA,GAAA,SAAAyO,EAAA8R,SAAA,OAAA9R,EAAA8R,QAAA,GAAA9R,EAAA8R,QAAA,EAAA9R,EAAA+R,QAAA,EAAA,SAAA/R,EAAAgR,gBAAAhR,EAAAgR,eAAAjhB,QAAA,GAAA,SAAAiQ,EAAAgR,eAAA,GAAAc,QAAA9R,EAAA8R,QAAA9R,EAAAgR,eAAA,GAAAc,QAAA9R,EAAA+R,QAAA/R,EAAAgR,eAAA,GAAAe,YAAA,IAAA,SAAA/R,EAAAgR,eAAA,GAAAK,MAAA,CAAA,GAAAtc,GAAAxD,EAAAskB,uBAAA7V,GAAA8R,QAAA9R,EAAAgR,eAAA,GAAAK,MAAAtc,EAAA+gB,KAAA9V,EAAA+R,QAAA/R,EAAAgR,eAAA,GAAAM,MAAAvc,EAAAmQ,SAAA,UAAAlF,EAAA8P,eAAA,SAAA9P,EAAA8P,cAAAgC,UAAA9R,EAAA8R,QAAA9R,EAAA8P,cAAAgC,QAAA9R,EAAA+R,QAAA/R,EAAA8P,cAAAiC,UAAA6mP,WAAA,SAAA54P,EAAAzO,GAAA,GAAA,IAAAyO,EAAAkR,OAAA,OAAA,CAAA,IAAA,SAAA3f,GAAA,OAAAA,EAAA,CAAA,GAAAwD,GAAAiL,EAAA0Q,UAAAnf,EAAAmf,UAAA1b,EAAAwE,KAAA64J,KAAA74J,KAAAs1H,IAAA9uH,EAAA8R,QAAAvgB,EAAAugB,QAAA,GAAAtY,KAAAs1H,IAAA9uH,EAAA+R,QAAAxgB,EAAAwgB,QAAA,GAAA,OAAA,KAAAhd,GAAA,GAAAC,EAAA,OAAA,GAAA4F,IAAAyG,KAAAzG,KAAA,WAAA,OAAA,GAAAyG,OAAAu9B,WAAAyI,SAAA,SAAArnC,EAAAzO,EAAAwD,GAAA,GAAAC,GAAArE,EAAAgH,EAAA3H,EAAAZ,KAAAP,EAAA,KAAA+F,EAAA,CAAAG,KAAAA,KAAA,IAAAkL,GAAA,WAAArL,EAAAG,EAAA0mQ,WAAA,EAAA,EAAAzrQ,EAAA4K,MAAA/L,EAAA,KAAA8I,EAAAqI,EAAApO,MAAAoD,EAAArE,GAAA9B,IAAAmG,EAAArE,EAAA,MAAA,OAAA,YAAA,GAAAsC,GAAAjD,EAAA4K,KAAAhG,IAAAG,EAAA0mQ,WAAA,IAAA7mQ,EAAA3B,EAAA,IAAA1D,GAAAgC,GAAA0B,EAAA2B,EAAA,OAAAI,GAAA5F,KAAAuB,EAAA2F,UAAA,GAAA/G,GAAAA,EAAAgC,GAAA2mB,aAAArpB,GAAAA,EAAA,KAAA+F,EAAA3B,EAAA0E,EAAAqI,EAAApO,MAAAoD,EAAArE,GAAA9B,IAAAmG,EAAArE,EAAA,OAAA9B,GAAAkG,EAAA2mQ,YAAA,IAAA7sQ,EAAAyL,WAAA2F,EAAA1Q,IAAAoI,IAAAo8P,4BAAA,SAAA/zP,GAAA,GAAAzO,GAAA,IAAA,OAAA,SAAAyO,GAAA,GAAAA,GAAAA,EAAA,IAAAzO,EAAAiI,KAAAy+B,MAAA,IAAAj4B,IAAA,OAAAzO,EAAApC,OAAAkL,uBAAArF,EAAA,IAAAA,EAAAzD,eAAA,IC0CAgwB,OAAA,UAAA,SACA,SACA,cACA,UACA,QACA,OACA,WACA,YACA,OACA,SACA,WACA,SACA,SACA,SACA,QACA,SACA,OACA,UACA,QACA,WACA,KACA,KACA,gBACA,SAAAnvB,EAAAgwB,EAAAS,EAAAqa,EAAA7Z,GAEAR,EAAAM,WAAA,yBAAA,GACAN,EAAAM,WAAA,oBAAA,GAEA,SAAA/wB,GAGA,QAAA+pC,GAAAlwB,EAAA86B,GAEA,MADAA,GAAA5K,MAAAlwB,EACA86B,EAGA,QAAA7V,GAAAjlB,EAAA86B,GAEA,MADAA,GAAA3K,SAAAnwB,EACA86B,EAgiBA,QAAA40N,GAAAnlQ,EAAAiJ,GACArN,EAAA,yBAAA8d,QAAA1Z,EAAAiJ,GAMA,QAAAm8P,KACAxpQ,EAAA,eACA8gB,OAAA9gB,EAAAgzB,GAAAt2B,EAAAsD,EAAAgzB,GAAA4U,MAAAvmC,MAAA,kBAAA,OACArB,EAAAgzB,GAAA4U,MAAAvmC,MAAA,gBAAA,QACAN,IAAA,cAAA,QACAA,IAAA,YAAA,QACA8lB,SAAA,gBAQA,QAAA4iP,KACA,GAAAzpQ,EAAA,UAAArC,SACAqC,EAAA,QAAA8gB,OAAA9gB,EAAAgzB,GAAAyM,KAAAlwB,GAAA,WACAvP,EAAA,UAAA6+B,cAOA,QAAA6qO,KACA1pQ,EAAA,SAAA0yC,OACA1yC,EAAAjD,QAAAg8B,OAAA,WAAA/4B,EAAA,SAAA0yC,KAAA,YACA1yC,EAAA,WAAAgxD,SAGA,QAAA24M,KACA3pQ,EAAAjD,QAAAg8B,OAAA,WACA/4B,EAAA,kBAAA8d,QAAA,qBAhlBA,GAAA4gB,GAAA,QAYAlO,GACAia,MACAykD,MACA06K,WAAA7/N,EAAA,eAAA,WACAw/N,EAAA,OAAA,QAEAM,qBAAA9/N,EAAA,YAAA,WACAw/N,EAAA,cAEAO,OAAA//N,EAAA,UAAA,WACAw/N,EAAA,YAEAQ,eACAlsQ,KAAA,UACAksC,MAAA,YACAN,OAAA,SAAApY,GACAyZ,EAAAa,WAAAta,EAAArxB,EAAAhD,MAAAqQ,KAAA,cAEA85C,OAAArc,EAAAe,gBAEAm+N,MAAA,KACAC,aAAAj6O,EAAA2C,KAAAC,UAAA61G,oBACA1+F,EAAA,WAAA,WACAw/N,EAAA,iBACAr2O,OACAg3O,WAAAprO,EAAA,OAAA,WACAyqO,EAAA,qBAEAY,qBAAArrO,EAAA,WAAA,WACA9+B,EAAA,QAAA0vB,MAAA,YACAjZ,KAAA,aACAk2B,KAAA,YAGAy9N,uBAAAtrO,EAAA,aAAA,WACA9+B,EAAA,QAAA0vB,MAAA,iBAEA26O,OAAA,KACAC,SAAAvgO,EAAA,cAAA,WACAw/N,EAAA,cAEAgB,YAAAxgO,EAAA,QAAA,WACAw/N,EAAA,YAGAiB,MACAC,iBAAA,WACAlB,EAAA,kBAEAmB,QAAA,KACAC,eAAA,WACApB,EAAA,SAEAiB,KAAA,KACAI,gBAAA,WACArB,EAAA,eAAA,SAEAsB,kCAAA,WACAtB,EAAA,eAAA,YAEAuB,uBAAA,WACAvB,EAAA,eAAA,eAEAwB,QAAA,KACAC,yBACAv5H,WAAA,wBACA5zI,KAAA,YAEAotQ,oBACAx5H,WAAA,mBACA5zI,KAAA,WACAyS,MAAA,UAGA46P,SAAA,SAAAj5H,EAAA/5G,GACAl4B,EAAA,QAAA0vB,MAAA,mBAAAuiH,EAAA/5G,IAEAizO,KAAA,SAAAl5H,EAAA/5G,GACAl4B,EAAA,QAAA0vB,MAAA,eAAAuiH,EAAA/5G,MAOAyG,GAUAC,MAAA,SAAA7a,GAUA,MATAylP,KACAC,IACAC,IACAC,IACA3pQ,EAAA,WAAAs6C,SAEAv2B,EAAAA,MACA/mB,KAAA6pB,SAAA,SAEA7pB,KAAA6B,KAAA,WACA,GAAAwL,GAAArK,EAAAhD,MACAqQ,IAEArN,GAAA,WAAAiyI,OAAAzhH,EAAAia,MACAzqC,EAAA,UAAAsuC,OAEA,IAAAyhB,GAAA/vD,EAAA,kBAAAkyB,cAAAuhC,MAAA,GACApmD,GAAA4pH,OAAAj3H,EAAA,mBAAA82H,gBACAzpH,EAAAktC,MAAAv6C,EAAA,iBAAA8jK,aACAlpJ,OAAA,WACA,MAAAvQ,GAAAqlB,MAAA,iBAEAqgH,SAAA,WACA,MAAAhgF,GAAA79B,aAAA,gBAEAyyI,SAAAt6J,EAAAqlB,MAAA,YACAunG,OAAA5pH,EAAA4pH,OACAlnE,OAAAA,EAAA,KAGA/vD,EAAA,aAAAioI,YAEAlkH,EAAAqnP,aACA17O,MAAA1U,QAAA,GAAA0U,MAAA1U,OAAAowP,aACA7B,EAAA,QAAA9yP,KAAA,cAAAma,SAAA,WAEAvmB,EAAAgD,KAAAqxB,EAAArxB,GAEAtQ,OAAAqY,SAAAK,KAAAjI,QAAA,gBAAA,GACAnD,EAAAqlB,MAAA,eAEA1vB,EAAA,SAAA2sC,KAAA,IAEArV,YAAA,WACAt3B,EAAA,gBAAA8d,QAAA,WACA,QAiBAA,QAAA,SAAAjE,EAAAxM,GAEA,MADAk8P,GAAA1vP,EAAAxM,GACArQ,MAoBAquQ,SAAA,SAAAtnP,GACA,GAAA1Z,GAAArN,IACA,iBAAA,KACA+mB,GAAAtN,KAAAsN,GAEA,IAAA4kE,GAAA3rF,KAAAgU,KAAA,YAAAy8B,QAAA,QAAA1pB,EACA,IAAA4kE,GAAAA,EAAAl7C,QAAA,SAAA,gBACA,MAAAzwC,KAEA,IAAAqsB,GAAA2G,EAAA2C,KAAAC,UAAA6rG,YAAA16G,EAAAtN,IA6BA,OA5BAzW,GAAAsqB,MAAAjB,IAAAA,EACAxrB,KAAA,MACAwP,MAAA07B,OAAA,QACAzd,QAAA,SAAAyf,GAIA,QAAAugO,GAAAzuI,GACA,IAAA,GAAAt+H,GAAA,EAAAA,EAAAs+H,EAAAl/H,OAAAY,IAAA,CACA,GAAAsb,GAAAgjH,EAAAt+H,EACAwlB,GAAAlK,KACAkxB,EAAAlxB,GAAAkK,EAAAlK,KAPAkxB,EAAA1hB,IAAAA,EACA0hB,EAAAa,QAAA,QAUA0/N,GAAA,OACA,QAAA,iBACA,SAAA,YACA,SAAA,SAGAjhQ,EAAAqlB,MAAA,YAAAqb,IAEA39B,MAAA,SAAA2xB,GACA9N,EAAA6P,UAAA/B,MAIA/hC,MAYAuuQ,QAAA,SAAAxnP,GACA,GAAA1Z,GAAArN,KACA2rF,EAAA3rF,KAAAgU,KAAA,YAAAy8B,QAAA,QAAA1pB,EAEA,OAAA4kE,IAAAA,EAAAl7C,QAAA,SAAA,gBACAzwC,SAEAgD,GAAAsqB,MAAAjB,IAAAtF,EAAAsF,IACAxrB,KAAA,MACAwP,MAAA07B,OAAA,QACAzd,QAAA,SAAA1Q,GAiBA,QAAA0wP,GAAAzuI,GACA,IAAA,GAAAt+H,GAAA,EAAAA,EAAAs+H,EAAAl/H,OAAAY,IAAA,CACA,GAAAsb,GAAAgjH,EAAAt+H,EACAwlB,GAAAlK,KACAotB,EAAAptB,GAAAkK,EAAAlK,KApBA,GAAAotB,EAEA,IAAA,gBAAA,GACAA,GAAA55B,KAAAuN,GACAqsB,EAAA2E,QAAA,eACA,CAAA,GAAA,gBAAA,IACA,gBAAAhxB,GAAA,KAKA,WADAwV,OAAA,eAHA6W,GAAArsB,EACAqsB,EAAA2E,QAAA,UAMA3E,EAAA5d,IAAAtF,EAAAsF,IAUAiiP,GAAA,OACA,QAAA,iBACA,SAAA,YACA,WAGAjhQ,EAAAqlB,MAAA,YAAAuX,IAEA75B,MAAA,SAAA2xB,GACA9N,EAAA6P,UAAA/B,OAUAkzB,UAAA,SAAAluC,GACAwlP,EAAA,SAAAxlP,GACA/mB,KAAAgU,KAAA,YAAAy8B,QAAA,QAAA1pB,IACA/mB,KAAA0yB,MAAA,mBACA65O,EAAA,SAAAxlP,IAaAynP,oBAAA,SAAAroG,GACA,GAAAzzI,GAAA1yB,IAEA,OAAA,WAAAmmK,EAAAtlK,KACA,KACA,SAAAslK,EAAAtlK,KACA,WACA8gC,EAAA0sO,SAAAhtQ,KAAAqxB,EAAAyzI,EAAA1sJ,OAGA,WACAkoB,EAAA4sO,QAAAltQ,KAAAqxB,GAAArG,IAAA85I,EAAA1tJ,SAWAg2P,iBAAA,SAAAx5H,EAAA/5G,GACA,GAAA+G,GAAAjiC,IA+BA,OA7BAiiC,GAAAh7B,IAAA,oBACAyc,GAAA,mBAAA,WACA1gB,EAAA,WAAAiyI,OAAA,gBAAA/5G,GACA+G,EAAAvP,MAAA,mBAAAuiH,EAAA/5G,KAEAl4B,EAAAsqB,KAAA0F,EAAA2C,KAAAC,UAAA84O,gBACAz+P,SAAA,OACAqe,QAAA,SAAAje,GACA,IAAA,GAAA9O,GAAA,EAAAA,EAAA8O,EAAA1P,OAAAY,IAAA,CACA,GACA+7B,GACAvW,EAFAo/I,EAAA91J,EAAA9O,EAIA,IAAA,MAAA4kK,GAAA,WAAAA,EAAAtlK,KACAy8B,EAAA,KACAvW,EAAA,SACA,CACA,GAAAlK,GAAAspJ,EAAA1sJ,MAAA0sJ,EAAA1tJ,IACA6kB,GAAA6oI,EAAA7oI,MACAvW,EAAAkb,EAAAvP,MAAA,sBAAAyzI,GACAtpJ,IACAkK,EAAAimB,SAAAnwB,EAAA3M,MAAA,KAAAoE,OAGAtR,EAAA,WAAAiyI,OAAA,iBAAA/5G,EACAoC,EAAAvW,OAIA/mB,MASA2uQ,aAAA,SAAA15H,EAAA/5G,GAGA,QAAA0zO,GAAA1sO,GACA,MAAA,YACAqqO,EAAA,QAAA9yP,KAAAyoB,EAAAzoB,QA0BA,MAtBAzW,GAAAsqB,KAAA0F,EAAA2C,KAAAC,UAAAi5O,kBACA5+P,SAAA,OACAqe,QAAA,SAAAje,GACA,IAAA,GAAA9O,GAAA,EAAAA,EAAA8O,EAAA1P,OAAAY,IAAA,CACA,GACA+7B,GACAvW,EAFAmb,EAAA7xB,EAAA9O,EAIA,IAAA,MAAA2gC,GAAA,WAAAA,EAAArhC,KACAy8B,EAAA,KACAvW,EAAA,SACA,CACAmb,EAAAzoB,IACA6jB,GAAA4E,EAAA5E,MACAvW,EAAA6nP,EAAA1sO,GAGAl/B,EAAA,WAAAiyI,OAAA,iBAAA/5G,EACAoC,EAAAvW,OAIA/mB,MAaA8uQ,aAAA,WACA,GACAhmQ,GADAgjC,IAQA,QALAhjC,EAAA9F,EAAA,kBAAAkyB,aAAA,YAAA,YACA4W,EAAAvlC,KAAAuC,IACAA,EAAA9F,EAAA,6BAAA3C,SACAyrC,EAAAvlC,KAAAuC,GAEAgjC,EAAAl9B,KAAA,SAQAqsH,YAAA,SAAA3lE,GACA,MAAAt1D,MAAAgU,KAAA,kBACAkhB,aAAA,iBAAAogC,QAQAy5M,QAAA,SAAAhoP,GAEA,MADAA,GAAAA,MACAA,EAAAmF,OACAlsB,KAAAgU,KAAA,6BAAAy8B,QAAA,UAAA1pB,GAEA/mB,KAAAgU,KAAA,YAAAy8B,QAAA,UAAA1pB,IAYA4gJ,SAAA,SAAAqnG,GACA,GAAA3uQ,GAAA2C,EAAA,oBAAA3C,MAEA,OAAAA,GACA2C,IAAAkyB,aAAA,cAAA70B,GAAA,GACA,GAAA2uQ,EACA,WACA,MAAAhsQ,GAAA,kBAAAkyB,aAAA,gBAFA,QAcAk7G,WAAA,SAAAp3F,EAAA0iL,GACA,GAAApgN,GAAAtb,KAAAgU,KAAA,sBAEA,KAAAsH,EAAA0O,SAAA,cAAA,CACA,GAAA3Z,GAAArQ,KAAAqQ,KAAA,aACAA,KACAA,KACArQ,KAAAqQ,KAAA,aAAAA,IAEAiL,EAAAuO,SAAA,cACA6xM,EAAAA,GAAA1iL,EACA0iL,EAAA7xM,SAAA,wBACAxZ,EAAA4+P,kBAAAj2N,EAAAlgC,SAAA,GACAzI,EAAA6+P,gBAAAxzC,EAAA,GACA14N,EAAAsY,EAAAb,WAAA,IAAAqD,OACAxC,EAAAwI,OAAAk1B,GACA0iL,EAAA56M,QAAA,cAAA,GAGA,MAAA9gB,OAQAmvQ,eAAA,WACA,GAAA7zP,GAAAtb,KAAAgU,KAAA,sBAEA,IAAAsH,EAAA0O,SAAA,cAAA,CACA,GAAA3Z,GAAArQ,KAAAqQ,KAAA,cACA2oC,EAAAh2C,EAAAsY,EAAAb,WAAA,IACAihN,EAAArrN,EAAA6+P,eAUA,OARA5zP,GAAAwO,YAAA,cACA9mB,EAAAqN,EAAA6+P,iBAAAplP,YAAA,wBACA9mB,EAAAqN,EAAA4+P,mBAAAnrP,OAAAk1B,GACA3oC,EAAA4+P,kBAAA,KACA5+P,EAAA6+P,gBAAA,KACAlsQ,EAAAsY,EAAAb,WAAA,IAAAoD,OACA7a,EAAA04N,GAAA56M,QAAA,cAAA,IAEA,EAGA,OAAA,GAMAsuP,YAAA,WACA,GAAA/hQ,GAAArN,IAOA,OANAgD,GAAAhD,MAAA+W,KAAA,2BAAA,qBACAisB,SAAA,4CAEA,WACAqsO,WAAAhiQ,KAEArN,MAgEAgD,GAAA2N,GAAA+hB,MAAA,SAAA3E,GACA,MAAA4T,GAAA5T,GACA4T,EAAA5T,GACAvrB,MAAAxC,KAAA+M,MAAAnC,UAAAnI,MAAApB,KAAA6F,UAAA,IACA,gBAAA6mB,IAAAA,MAGA/qB,GAAAoN,MAAA,UAAA2d,EAAA,6BAAA2T,GAFAC,EAAAC,MAAAp/B,MAAAxC,KAAAkH,aAKAorB,UCroBA0Q,QAAAhQ,QACAs8O,QAAA,OAAA,GAAAr9P,OAAAu9B,UACA+/N,YAAA,GACAp+I,OACApgH,OAAA,6CACAy+P,YAAA,8CACAz5O,QAAA,sCACAgnB,UAAA,sDACA0yN,WAAA,mDACAz/M,UAAA,yDACArb,SAAA,gEACA+6N,WAAA,4CACAthI,KAAA,uCACA4oF,GAAA,4BACAvoD,GAAA,4BACAkhG,eAAA,yDACA1uJ,UAAA,sDAGA2uJ,iBAAA,yBACAC,8BAAA,sCACAC,4BAAA,oCACAC,+BAAA,uCACAC,kCAAA,0CAGA9qM,GAAA,kCAEA+qM,MACAlzN,WACAmzN,MAAA,WAEAlgN,WACAkgN,MAAA,UACArlQ,KAAA,SAAA7H,GACA,MAAAggC,SAAAz6B,EAAA6oD,SAAAhuD,EAAAiuD,SAAA,gBAAAhb,QAAArzC,KAGAysQ,YACAS,MAAA,WAEAv7N,UACAu7N,MAAA,WAEAn6O,SACAm6O,MAAA,WAEAR,YACAQ,MAAA,cAWAltO,SAAA,SAAA,SAAA,UACA,SAAAhgC,EAAAgwB,EAAAN,GACAsQ,SAAAhQ,EAAA2C,KAAAC,UAAAgiC,SAAA,gBACA,WACA50D,EAAA,WACAA,EAAA,QAAA0vB,MAAAM,EAAAN,iBAMAP,OAAA,QAAA","file":"swish-min.js.new","sourcesContent":["/*!\n * Bootstrap v3.3.7 (http://getbootstrap.com)\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under the MIT license\n */\nif(\"undefined\"==typeof jQuery)throw new Error(\"Bootstrap's JavaScript requires jQuery\");+function(a){\"use strict\";var b=a.fn.jquery.split(\" \")[0].split(\".\");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>3)throw new Error(\"Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4\")}(jQuery),+function(a){\"use strict\";function b(){var a=document.createElement(\"bootstrap\"),b={WebkitTransition:\"webkitTransitionEnd\",MozTransition:\"transitionend\",OTransition:\"oTransitionEnd otransitionend\",transition:\"transitionend\"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one(\"bsTransitionEnd\",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){if(a(b.target).is(this))return b.handleObj.handler.apply(this,arguments)}})})}(jQuery),+function(a){\"use strict\";function b(b){return this.each(function(){var c=a(this),e=c.data(\"bs.alert\");e||c.data(\"bs.alert\",e=new d(this)),\"string\"==typeof b&&e[b].call(c)})}var c='[data-dismiss=\"alert\"]',d=function(b){a(b).on(\"click\",c,this.close)};d.VERSION=\"3.3.7\",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger(\"closed.bs.alert\").remove()}var e=a(this),f=e.attr(\"data-target\");f||(f=e.attr(\"href\"),f=f&&f.replace(/.*(?=#[^\\s]*$)/,\"\"));var g=a(\"#\"===f?[]:f);b&&b.preventDefault(),g.length||(g=e.closest(\".alert\")),g.trigger(b=a.Event(\"close.bs.alert\")),b.isDefaultPrevented()||(g.removeClass(\"in\"),a.support.transition&&g.hasClass(\"fade\")?g.one(\"bsTransitionEnd\",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on(\"click.bs.alert.data-api\",c,d.prototype.close)}(jQuery),+function(a){\"use strict\";function b(b){return this.each(function(){var d=a(this),e=d.data(\"bs.button\"),f=\"object\"==typeof b&&b;e||d.data(\"bs.button\",e=new c(this,f)),\"toggle\"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION=\"3.3.7\",c.DEFAULTS={loadingText:\"loading...\"},c.prototype.setState=function(b){var c=\"disabled\",d=this.$element,e=d.is(\"input\")?\"val\":\"html\",f=d.data();b+=\"Text\",null==f.resetText&&d.data(\"resetText\",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),\"loadingText\"==b?(this.isLoading=!0,d.addClass(c).attr(c,c).prop(c,!0)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c).prop(c,!1))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle=\"buttons\"]');if(b.length){var c=this.$element.find(\"input\");\"radio\"==c.prop(\"type\")?(c.prop(\"checked\")&&(a=!1),b.find(\".active\").removeClass(\"active\"),this.$element.addClass(\"active\")):\"checkbox\"==c.prop(\"type\")&&(c.prop(\"checked\")!==this.$element.hasClass(\"active\")&&(a=!1),this.$element.toggleClass(\"active\")),c.prop(\"checked\",this.$element.hasClass(\"active\")),a&&c.trigger(\"change\")}else this.$element.attr(\"aria-pressed\",!this.$element.hasClass(\"active\")),this.$element.toggleClass(\"active\")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on(\"click.bs.button.data-api\",'[data-toggle^=\"button\"]',function(c){var d=a(c.target).closest(\".btn\");b.call(d,\"toggle\"),a(c.target).is('input[type=\"radio\"], input[type=\"checkbox\"]')||(c.preventDefault(),d.is(\"input,button\")?d.trigger(\"focus\"):d.find(\"input:visible,button:visible\").first().trigger(\"focus\"))}).on(\"focus.bs.button.data-api blur.bs.button.data-api\",'[data-toggle^=\"button\"]',function(b){a(b.target).closest(\".btn\").toggleClass(\"focus\",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){\"use strict\";function b(b){return this.each(function(){var d=a(this),e=d.data(\"bs.carousel\"),f=a.extend({},c.DEFAULTS,d.data(),\"object\"==typeof b&&b),g=\"string\"==typeof b?b:f.slide;e||d.data(\"bs.carousel\",e=new c(this,f)),\"number\"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(\".carousel-indicators\"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on(\"keydown.bs.carousel\",a.proxy(this.keydown,this)),\"hover\"==this.options.pause&&!(\"ontouchstart\"in document.documentElement)&&this.$element.on(\"mouseenter.bs.carousel\",a.proxy(this.pause,this)).on(\"mouseleave.bs.carousel\",a.proxy(this.cycle,this))};c.VERSION=\"3.3.7\",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:\"hover\",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(\".item\"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d=\"prev\"==a&&0===c||\"next\"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e=\"prev\"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(\".item.active\"));if(!(a>this.$items.length-1||a<0))return this.sliding?this.$element.one(\"slid.bs.carousel\",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?\"next\":\"prev\",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(\".next, .prev\").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){if(!this.sliding)return this.slide(\"next\")},c.prototype.prev=function(){if(!this.sliding)return this.slide(\"prev\")},c.prototype.slide=function(b,d){var e=this.$element.find(\".item.active\"),f=d||this.getItemForDirection(b,e),g=this.interval,h=\"next\"==b?\"left\":\"right\",i=this;if(f.hasClass(\"active\"))return this.sliding=!1;var j=f[0],k=a.Event(\"slide.bs.carousel\",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(\".active\").removeClass(\"active\");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass(\"active\")}var m=a.Event(\"slid.bs.carousel\",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass(\"slide\")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one(\"bsTransitionEnd\",function(){f.removeClass([b,h].join(\" \")).addClass(\"active\"),e.removeClass([\"active\",h].join(\" \")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass(\"active\"),f.addClass(\"active\"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr(\"data-target\")||(d=e.attr(\"href\"))&&d.replace(/.*(?=#[^\\s]+$)/,\"\"));if(f.hasClass(\"carousel\")){var g=a.extend({},f.data(),e.data()),h=e.attr(\"data-slide-to\");h&&(g.interval=!1),b.call(f,g),h&&f.data(\"bs.carousel\").to(h),c.preventDefault()}};a(document).on(\"click.bs.carousel.data-api\",\"[data-slide]\",e).on(\"click.bs.carousel.data-api\",\"[data-slide-to]\",e),a(window).on(\"load\",function(){a('[data-ride=\"carousel\"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){\"use strict\";function b(b){var c,d=b.attr(\"data-target\")||(c=b.attr(\"href\"))&&c.replace(/.*(?=#[^\\s]+$)/,\"\");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data(\"bs.collapse\"),f=a.extend({},d.DEFAULTS,c.data(),\"object\"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data(\"bs.collapse\",e=new d(this,f)),\"string\"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle=\"collapse\"][href=\"#'+b.id+'\"],[data-toggle=\"collapse\"][data-target=\"#'+b.id+'\"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION=\"3.3.7\",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass(\"width\");return a?\"width\":\"height\"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass(\"in\")){var b,e=this.$parent&&this.$parent.children(\".panel\").children(\".in, .collapsing\");if(!(e&&e.length&&(b=e.data(\"bs.collapse\"),b&&b.transitioning))){var f=a.Event(\"show.bs.collapse\");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,\"hide\"),b||e.data(\"bs.collapse\",null));var g=this.dimension();this.$element.removeClass(\"collapse\").addClass(\"collapsing\")[g](0).attr(\"aria-expanded\",!0),this.$trigger.removeClass(\"collapsed\").attr(\"aria-expanded\",!0),this.transitioning=1;var h=function(){this.$element.removeClass(\"collapsing\").addClass(\"collapse in\")[g](\"\"),this.transitioning=0,this.$element.trigger(\"shown.bs.collapse\")};if(!a.support.transition)return h.call(this);var i=a.camelCase([\"scroll\",g].join(\"-\"));this.$element.one(\"bsTransitionEnd\",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass(\"in\")){var b=a.Event(\"hide.bs.collapse\");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass(\"collapsing\").removeClass(\"collapse in\").attr(\"aria-expanded\",!1),this.$trigger.addClass(\"collapsed\").attr(\"aria-expanded\",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass(\"collapsing\").addClass(\"collapse\").trigger(\"hidden.bs.collapse\")};return a.support.transition?void this.$element[c](0).one(\"bsTransitionEnd\",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass(\"in\")?\"hide\":\"show\"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle=\"collapse\"][data-parent=\"'+this.options.parent+'\"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass(\"in\");a.attr(\"aria-expanded\",c),b.toggleClass(\"collapsed\",!c).attr(\"aria-expanded\",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on(\"click.bs.collapse.data-api\",'[data-toggle=\"collapse\"]',function(d){var e=a(this);e.attr(\"data-target\")||d.preventDefault();var f=b(e),g=f.data(\"bs.collapse\"),h=g?\"toggle\":e.data();c.call(f,h)})}(jQuery),+function(a){\"use strict\";function b(b){var c=b.attr(\"data-target\");c||(c=b.attr(\"href\"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\\s]*$)/,\"\"));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass(\"open\")&&(c&&\"click\"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event(\"hide.bs.dropdown\",f)),c.isDefaultPrevented()||(d.attr(\"aria-expanded\",\"false\"),e.removeClass(\"open\").trigger(a.Event(\"hidden.bs.dropdown\",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data(\"bs.dropdown\");d||c.data(\"bs.dropdown\",d=new g(this)),\"string\"==typeof b&&d[b].call(c)})}var e=\".dropdown-backdrop\",f='[data-toggle=\"dropdown\"]',g=function(b){a(b).on(\"click.bs.dropdown\",this.toggle)};g.VERSION=\"3.3.7\",g.prototype.toggle=function(d){var e=a(this);if(!e.is(\".disabled, :disabled\")){var f=b(e),g=f.hasClass(\"open\");if(c(),!g){\"ontouchstart\"in document.documentElement&&!f.closest(\".navbar-nav\").length&&a(document.createElement(\"div\")).addClass(\"dropdown-backdrop\").insertAfter(a(this)).on(\"click\",c);var h={relatedTarget:this};if(f.trigger(d=a.Event(\"show.bs.dropdown\",h)),d.isDefaultPrevented())return;e.trigger(\"focus\").attr(\"aria-expanded\",\"true\"),f.toggleClass(\"open\").trigger(a.Event(\"shown.bs.dropdown\",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(\".disabled, :disabled\")){var e=b(d),g=e.hasClass(\"open\");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger(\"focus\"),d.trigger(\"click\");var h=\" li:not(.disabled):visible a\",i=e.find(\".dropdown-menu\"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger(\"focus\")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on(\"click.bs.dropdown.data-api\",c).on(\"click.bs.dropdown.data-api\",\".dropdown form\",function(a){a.stopPropagation()}).on(\"click.bs.dropdown.data-api\",f,g.prototype.toggle).on(\"keydown.bs.dropdown.data-api\",f,g.prototype.keydown).on(\"keydown.bs.dropdown.data-api\",\".dropdown-menu\",g.prototype.keydown)}(jQuery),+function(a){\"use strict\";function b(b,d){return this.each(function(){var e=a(this),f=e.data(\"bs.modal\"),g=a.extend({},c.DEFAULTS,e.data(),\"object\"==typeof b&&b);f||e.data(\"bs.modal\",f=new c(this,g)),\"string\"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$dialog=this.$element.find(\".modal-dialog\"),this.$backdrop=null,this.isShown=null,this.originalBodyPad=null,this.scrollbarWidth=0,this.ignoreBackdropClick=!1,this.options.remote&&this.$element.find(\".modal-content\").load(this.options.remote,a.proxy(function(){this.$element.trigger(\"loaded.bs.modal\")},this))};c.VERSION=\"3.3.7\",c.TRANSITION_DURATION=300,c.BACKDROP_TRANSITION_DURATION=150,c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var d=this,e=a.Event(\"show.bs.modal\",{relatedTarget:b});this.$element.trigger(e),this.isShown||e.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass(\"modal-open\"),this.escape(),this.resize(),this.$element.on(\"click.dismiss.bs.modal\",'[data-dismiss=\"modal\"]',a.proxy(this.hide,this)),this.$dialog.on(\"mousedown.dismiss.bs.modal\",function(){d.$element.one(\"mouseup.dismiss.bs.modal\",function(b){a(b.target).is(d.$element)&&(d.ignoreBackdropClick=!0)})}),this.backdrop(function(){var e=a.support.transition&&d.$element.hasClass(\"fade\");d.$element.parent().length||d.$element.appendTo(d.$body),d.$element.show().scrollTop(0),d.adjustDialog(),e&&d.$element[0].offsetWidth,d.$element.addClass(\"in\"),d.enforceFocus();var f=a.Event(\"shown.bs.modal\",{relatedTarget:b});e?d.$dialog.one(\"bsTransitionEnd\",function(){d.$element.trigger(\"focus\").trigger(f)}).emulateTransitionEnd(c.TRANSITION_DURATION):d.$element.trigger(\"focus\").trigger(f)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event(\"hide.bs.modal\"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),a(document).off(\"focusin.bs.modal\"),this.$element.removeClass(\"in\").off(\"click.dismiss.bs.modal\").off(\"mouseup.dismiss.bs.modal\"),this.$dialog.off(\"mousedown.dismiss.bs.modal\"),a.support.transition&&this.$element.hasClass(\"fade\")?this.$element.one(\"bsTransitionEnd\",a.proxy(this.hideModal,this)).emulateTransitionEnd(c.TRANSITION_DURATION):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off(\"focusin.bs.modal\").on(\"focusin.bs.modal\",a.proxy(function(a){document===a.target||this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger(\"focus\")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on(\"keydown.dismiss.bs.modal\",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off(\"keydown.dismiss.bs.modal\")},c.prototype.resize=function(){this.isShown?a(window).on(\"resize.bs.modal\",a.proxy(this.handleUpdate,this)):a(window).off(\"resize.bs.modal\")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$body.removeClass(\"modal-open\"),a.resetAdjustments(),a.resetScrollbar(),a.$element.trigger(\"hidden.bs.modal\")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var d=this,e=this.$element.hasClass(\"fade\")?\"fade\":\"\";if(this.isShown&&this.options.backdrop){var f=a.support.transition&&e;if(this.$backdrop=a(document.createElement(\"div\")).addClass(\"modal-backdrop \"+e).appendTo(this.$body),this.$element.on(\"click.dismiss.bs.modal\",a.proxy(function(a){return this.ignoreBackdropClick?void(this.ignoreBackdropClick=!1):void(a.target===a.currentTarget&&(\"static\"==this.options.backdrop?this.$element[0].focus():this.hide()))},this)),f&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass(\"in\"),!b)return;f?this.$backdrop.one(\"bsTransitionEnd\",b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass(\"in\");var g=function(){d.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass(\"fade\")?this.$backdrop.one(\"bsTransitionEnd\",g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):g()}else b&&b()},c.prototype.handleUpdate=function(){this.adjustDialog()},c.prototype.adjustDialog=function(){var a=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:\"\",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:\"\"})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:\"\",paddingRight:\"\"})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth<a,this.scrollbarWidth=this.measureScrollbar()},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css(\"padding-right\")||0,10);this.originalBodyPad=document.body.style.paddingRight||\"\",this.bodyIsOverflowing&&this.$body.css(\"padding-right\",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css(\"padding-right\",this.originalBodyPad)},c.prototype.measureScrollbar=function(){var a=document.createElement(\"div\");a.className=\"modal-scrollbar-measure\",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on(\"click.bs.modal.data-api\",'[data-toggle=\"modal\"]',function(c){var d=a(this),e=d.attr(\"href\"),f=a(d.attr(\"data-target\")||e&&e.replace(/.*(?=#[^\\s]+$)/,\"\")),g=f.data(\"bs.modal\")?\"toggle\":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is(\"a\")&&c.preventDefault(),f.one(\"show.bs.modal\",function(a){a.isDefaultPrevented()||f.one(\"hidden.bs.modal\",function(){d.is(\":visible\")&&d.trigger(\"focus\")})}),b.call(f,g,this)})}(jQuery),+function(a){\"use strict\";function b(b){return this.each(function(){var d=a(this),e=d.data(\"bs.tooltip\"),f=\"object\"==typeof b&&b;!e&&/destroy|hide/.test(b)||(e||d.data(\"bs.tooltip\",e=new c(this,f)),\"string\"==typeof b&&e[b]())})}var c=function(a,b){this.type=null,this.options=null,this.enabled=null,this.timeout=null,this.hoverState=null,this.$element=null,this.inState=null,this.init(\"tooltip\",a,b)};c.VERSION=\"3.3.7\",c.TRANSITION_DURATION=150,c.DEFAULTS={animation:!0,placement:\"top\",selector:!1,template:'<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>',trigger:\"hover focus\",title:\"\",delay:0,html:!1,container:!1,viewport:{selector:\"body\",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error(\"`selector` option must be specified when initializing \"+this.type+\" on the window.document object!\");for(var e=this.options.trigger.split(\" \"),f=e.length;f--;){var g=e[f];if(\"click\"==g)this.$element.on(\"click.\"+this.type,this.options.selector,a.proxy(this.toggle,this));else if(\"manual\"!=g){var h=\"hover\"==g?\"mouseenter\":\"focusin\",i=\"hover\"==g?\"mouseleave\":\"focusout\";this.$element.on(h+\".\"+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+\".\"+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:\"manual\",selector:\"\"}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&\"number\"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data(\"bs.\"+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data(\"bs.\"+this.type,c)),b instanceof a.Event&&(c.inState[\"focusin\"==b.type?\"focus\":\"hover\"]=!0),c.tip().hasClass(\"in\")||\"in\"==c.hoverState?void(c.hoverState=\"in\"):(clearTimeout(c.timeout),c.hoverState=\"in\",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){\"in\"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data(\"bs.\"+this.type);if(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data(\"bs.\"+this.type,c)),b instanceof a.Event&&(c.inState[\"focusout\"==b.type?\"focus\":\"hover\"]=!1),!c.isInStateTrue())return clearTimeout(c.timeout),c.hoverState=\"out\",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){\"out\"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event(\"show.bs.\"+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr(\"id\",g),this.$element.attr(\"aria-describedby\",g),this.options.animation&&f.addClass(\"fade\");var h=\"function\"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\\s?auto?\\s?/i,j=i.test(h);j&&(h=h.replace(i,\"\")||\"top\"),f.detach().css({top:0,left:0,display:\"block\"}).addClass(h).data(\"bs.\"+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger(\"inserted.bs.\"+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h=\"bottom\"==h&&k.bottom+m>o.bottom?\"top\":\"top\"==h&&k.top-m<o.top?\"bottom\":\"right\"==h&&k.right+l>o.width?\"left\":\"left\"==h&&k.left-l<o.left?\"right\":h,f.removeClass(n).addClass(h)}var p=this.getCalculatedOffset(h,k,l,m);this.applyPlacement(p,h);var q=function(){var a=e.hoverState;e.$element.trigger(\"shown.bs.\"+e.type),e.hoverState=null,\"out\"==a&&e.leave(e)};a.support.transition&&this.$tip.hasClass(\"fade\")?f.one(\"bsTransitionEnd\",q).emulateTransitionEnd(c.TRANSITION_DURATION):q()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css(\"margin-top\"),10),h=parseInt(d.css(\"margin-left\"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),b.top+=g,b.left+=h,a.offset.setOffset(d[0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),d.addClass(\"in\");var i=d[0].offsetWidth,j=d[0].offsetHeight;\"top\"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=/top|bottom/.test(c),m=l?2*k.left-e+i:2*k.top-f+j,n=l?\"offsetWidth\":\"offsetHeight\";d.offset(b),this.replaceArrow(m,d[0][n],l)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c?\"left\":\"top\",50*(1-a/b)+\"%\").css(c?\"top\":\"left\",\"\")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(\".tooltip-inner\")[this.options.html?\"html\":\"text\"](b),a.removeClass(\"fade in top bottom left right\")},c.prototype.hide=function(b){function d(){\"in\"!=e.hoverState&&f.detach(),e.$element&&e.$element.removeAttr(\"aria-describedby\").trigger(\"hidden.bs.\"+e.type),b&&b()}var e=this,f=a(this.$tip),g=a.Event(\"hide.bs.\"+this.type);if(this.$element.trigger(g),!g.isDefaultPrevented())return f.removeClass(\"in\"),a.support.transition&&f.hasClass(\"fade\")?f.one(\"bsTransitionEnd\",d).emulateTransitionEnd(c.TRANSITION_DURATION):d(),this.hoverState=null,this},c.prototype.fixTitle=function(){var a=this.$element;(a.attr(\"title\")||\"string\"!=typeof a.attr(\"data-original-title\"))&&a.attr(\"data-original-title\",a.attr(\"title\")||\"\").attr(\"title\",\"\")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[0],d=\"BODY\"==c.tagName,e=c.getBoundingClientRect();null==e.width&&(e=a.extend({},e,{width:e.right-e.left,height:e.bottom-e.top}));var f=window.SVGElement&&c instanceof window.SVGElement,g=d?{top:0,left:0}:f?null:b.offset(),h={scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop()},i=d?{width:a(window).width(),height:a(window).height()}:null;return a.extend({},e,h,i,g)},c.prototype.getCalculatedOffset=function(a,b,c,d){return\"bottom\"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:\"top\"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:\"left\"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:0,left:0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h<g.top?e.top=g.top-h:i>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j<g.left?e.left=g.left-j:k>g.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr(\"data-original-title\")||(\"function\"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+\" `template` option must consist of exactly 1 top-level element!\");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(\".tooltip-arrow\")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data(\"bs.\"+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data(\"bs.\"+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass(\"in\")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off(\".\"+a.type).removeData(\"bs.\"+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null,a.$element=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){\"use strict\";function b(b){return this.each(function(){var d=a(this),e=d.data(\"bs.popover\"),f=\"object\"==typeof b&&b;!e&&/destroy|hide/.test(b)||(e||d.data(\"bs.popover\",e=new c(this,f)),\"string\"==typeof b&&e[b]())})}var c=function(a,b){this.init(\"popover\",a,b)};if(!a.fn.tooltip)throw new Error(\"Popover requires tooltip.js\");c.VERSION=\"3.3.7\",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:\"right\",trigger:\"click\",content:\"\",template:'<div class=\"popover\" role=\"tooltip\"><div class=\"arrow\"></div><h3 class=\"popover-title\"></h3><div class=\"popover-content\"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(\".popover-title\")[this.options.html?\"html\":\"text\"](b),a.find(\".popover-content\").children().detach().end()[this.options.html?\"string\"==typeof c?\"html\":\"append\":\"text\"](c),a.removeClass(\"fade top bottom left right in\"),a.find(\".popover-title\").html()||a.find(\".popover-title\").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr(\"data-content\")||(\"function\"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(\".arrow\")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){\"use strict\";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||\"\")+\" .nav li > a\",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on(\"scroll.bs.scrollspy\",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data(\"bs.scrollspy\"),f=\"object\"==typeof c&&c;e||d.data(\"bs.scrollspy\",e=new b(this,f)),\"string\"==typeof c&&e[c]()})}b.VERSION=\"3.3.7\",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c=\"offset\",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c=\"position\",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data(\"target\")||b.attr(\"href\"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(\":visible\")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b<e[0])return this.activeTarget=null,this.clear();for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(void 0===e[a+1]||b<e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){\nthis.activeTarget=b,this.clear();var c=this.selector+'[data-target=\"'+b+'\"],'+this.selector+'[href=\"'+b+'\"]',d=a(c).parents(\"li\").addClass(\"active\");d.parent(\".dropdown-menu\").length&&(d=d.closest(\"li.dropdown\").addClass(\"active\")),d.trigger(\"activate.bs.scrollspy\")},b.prototype.clear=function(){a(this.selector).parentsUntil(this.options.target,\".active\").removeClass(\"active\")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on(\"load.bs.scrollspy.data-api\",function(){a('[data-spy=\"scroll\"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){\"use strict\";function b(b){return this.each(function(){var d=a(this),e=d.data(\"bs.tab\");e||d.data(\"bs.tab\",e=new c(this)),\"string\"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION=\"3.3.7\",c.TRANSITION_DURATION=150,c.prototype.show=function(){var b=this.element,c=b.closest(\"ul:not(.dropdown-menu)\"),d=b.data(\"target\");if(d||(d=b.attr(\"href\"),d=d&&d.replace(/.*(?=#[^\\s]*$)/,\"\")),!b.parent(\"li\").hasClass(\"active\")){var e=c.find(\".active:last a\"),f=a.Event(\"hide.bs.tab\",{relatedTarget:b[0]}),g=a.Event(\"show.bs.tab\",{relatedTarget:e[0]});if(e.trigger(f),b.trigger(g),!g.isDefaultPrevented()&&!f.isDefaultPrevented()){var h=a(d);this.activate(b.closest(\"li\"),c),this.activate(h,h.parent(),function(){e.trigger({type:\"hidden.bs.tab\",relatedTarget:b[0]}),b.trigger({type:\"shown.bs.tab\",relatedTarget:e[0]})})}}},c.prototype.activate=function(b,d,e){function f(){g.removeClass(\"active\").find(\"> .dropdown-menu > .active\").removeClass(\"active\").end().find('[data-toggle=\"tab\"]').attr(\"aria-expanded\",!1),b.addClass(\"active\").find('[data-toggle=\"tab\"]').attr(\"aria-expanded\",!0),h?(b[0].offsetWidth,b.addClass(\"in\")):b.removeClass(\"fade\"),b.parent(\".dropdown-menu\").length&&b.closest(\"li.dropdown\").addClass(\"active\").end().find('[data-toggle=\"tab\"]').attr(\"aria-expanded\",!0),e&&e()}var g=d.find(\"> .active\"),h=e&&a.support.transition&&(g.length&&g.hasClass(\"fade\")||!!d.find(\"> .fade\").length);g.length&&h?g.one(\"bsTransitionEnd\",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass(\"in\")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),\"show\")};a(document).on(\"click.bs.tab.data-api\",'[data-toggle=\"tab\"]',e).on(\"click.bs.tab.data-api\",'[data-toggle=\"pill\"]',e)}(jQuery),+function(a){\"use strict\";function b(b){return this.each(function(){var d=a(this),e=d.data(\"bs.affix\"),f=\"object\"==typeof b&&b;e||d.data(\"bs.affix\",e=new c(this,f)),\"string\"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on(\"scroll.bs.affix.data-api\",a.proxy(this.checkPosition,this)).on(\"click.bs.affix.data-api\",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION=\"3.3.7\",c.RESET=\"affix affix-top affix-bottom\",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&\"top\"==this.affixed)return e<c&&\"top\";if(\"bottom\"==this.affixed)return null!=c?!(e+this.unpin<=f.top)&&\"bottom\":!(e+g<=a-d)&&\"bottom\";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&e<=c?\"top\":null!=d&&i+j>=a-d&&\"bottom\"},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass(\"affix\");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(\":visible\")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());\"object\"!=typeof d&&(f=e=d),\"function\"==typeof e&&(e=d.top(this.$element)),\"function\"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css(\"top\",\"\");var i=\"affix\"+(h?\"-\"+h:\"\"),j=a.Event(i+\".bs.affix\");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin=\"bottom\"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace(\"affix\",\"affixed\")+\".bs.affix\")}\"bottom\"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on(\"load\",function(){a('[data-spy=\"affix\"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);\ndefine(\"bootstrap\", [\"jquery\"], function(){});\n\n","/*! jQuery v3.2.1 | (c) JS Foundation and other contributors | jquery.org/license */\n!function(a,b){\"use strict\";\"object\"==typeof module&&\"object\"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error(\"jQuery requires a window with a document\");return b(a)}:b(a)}(\"undefined\"!=typeof window?window:this,function(a,b){\"use strict\";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement(\"script\");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q=\"3.2.1\",r=function(a,b){return new r.fn.init(a,b)},s=/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null==a?f.call(this):a<0?this[a+this.length]:this[a]},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c<b?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:h,sort:c.sort,splice:c.splice},r.extend=r.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for(\"boolean\"==typeof g&&(j=g,g=arguments[h]||{},h++),\"object\"==typeof g||r.isFunction(g)||(g={}),h===i&&(g=this,h--);h<i;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(r.isPlainObject(d)||(e=Array.isArray(d)))?(e?(e=!1,f=c&&Array.isArray(c)?c:[]):f=c&&r.isPlainObject(c)?c:{},g[b]=r.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},r.extend({expando:\"jQuery\"+(q+Math.random()).replace(/\\D/g,\"\"),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return\"function\"===r.type(a)},isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){var b=r.type(a);return(\"number\"===b||\"string\"===b)&&!isNaN(a-parseFloat(a))},isPlainObject:function(a){var b,c;return!(!a||\"[object Object]\"!==k.call(a))&&(!(b=e(a))||(c=l.call(b,\"constructor\")&&b.constructor,\"function\"==typeof c&&m.call(c)===n))},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+\"\":\"object\"==typeof a||\"function\"==typeof a?j[k.call(a)]||\"object\":typeof a},globalEval:function(a){p(a)},camelCase:function(a){return a.replace(t,\"ms-\").replace(u,v)},each:function(a,b){var c,d=0;if(w(a)){for(c=a.length;d<c;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?\"\":(a+\"\").replace(s,\"\")},makeArray:function(a,b){var c=b||[];return null!=a&&(w(Object(a))?r.merge(c,\"string\"==typeof a?[a]:a):h.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:i.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;d<c;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;f<g;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,f=0,h=[];if(w(a))for(d=a.length;f<d;f++)e=b(a[f],f,c),null!=e&&h.push(e);else for(f in a)e=b(a[f],f,c),null!=e&&h.push(e);return g.apply([],h)},guid:1,proxy:function(a,b){var c,d,e;if(\"string\"==typeof b&&(c=a[b],b=a,a=c),r.isFunction(a))return d=f.call(arguments,2),e=function(){return a.apply(b||this,d.concat(f.call(arguments)))},e.guid=a.guid=a.guid||r.guid++,e},now:Date.now,support:o}),\"function\"==typeof Symbol&&(r.fn[Symbol.iterator]=c[Symbol.iterator]),r.each(\"Boolean Number String Function Array Date RegExp Object Error Symbol\".split(\" \"),function(a,b){j[\"[object \"+b+\"]\"]=b.toLowerCase()});function w(a){var b=!!a&&\"length\"in a&&a.length,c=r.type(a);return\"function\"!==c&&!r.isWindow(a)&&(\"array\"===c||0===b||\"number\"==typeof b&&b>0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u=\"sizzle\"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return c;return-1},J=\"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",K=\"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",L=\"(?:\\\\\\\\.|[\\\\w-]|[^\\0-\\\\xa0])+\",M=\"\\\\[\"+K+\"*(\"+L+\")(?:\"+K+\"*([*^$|!~]?=)\"+K+\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\"+L+\"))|)\"+K+\"*\\\\]\",N=\":(\"+L+\")(?:\\\\((('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\"+M+\")*)|.*)\\\\)|)\",O=new RegExp(K+\"+\",\"g\"),P=new RegExp(\"^\"+K+\"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\"+K+\"+$\",\"g\"),Q=new RegExp(\"^\"+K+\"*,\"+K+\"*\"),R=new RegExp(\"^\"+K+\"*([>+~]|\"+K+\")\"+K+\"*\"),S=new RegExp(\"=\"+K+\"*([^\\\\]'\\\"]*?)\"+K+\"*\\\\]\",\"g\"),T=new RegExp(N),U=new RegExp(\"^\"+L+\"$\"),V={ID:new RegExp(\"^#(\"+L+\")\"),CLASS:new RegExp(\"^\\\\.(\"+L+\")\"),TAG:new RegExp(\"^(\"+L+\"|[*])\"),ATTR:new RegExp(\"^\"+M),PSEUDO:new RegExp(\"^\"+N),CHILD:new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\"+K+\"*(even|odd|(([+-]|)(\\\\d*)n|)\"+K+\"*(?:([+-]|)\"+K+\"*(\\\\d+)|))\"+K+\"*\\\\)|)\",\"i\"),bool:new RegExp(\"^(?:\"+J+\")$\",\"i\"),needsContext:new RegExp(\"^\"+K+\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\"+K+\"*((?:-\\\\d)?\\\\d*)\"+K+\"*\\\\)|)(?=[^-]|$)\",\"i\")},W=/^(?:input|select|textarea|button)$/i,X=/^h\\d$/i,Y=/^[^{]+\\{\\s*\\[native \\w/,Z=/^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,$=/[+~]/,_=new RegExp(\"\\\\\\\\([\\\\da-f]{1,6}\"+K+\"?|(\"+K+\")|.)\",\"ig\"),aa=function(a,b,c){var d=\"0x\"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,ca=function(a,b){return b?\"\\0\"===a?\"\\ufffd\":a.slice(0,-1)+\"\\\\\"+a.charCodeAt(a.length-1).toString(16)+\" \":\"\\\\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&(\"form\"in a||\"label\"in a)},{dir:\"parentNode\",next:\"legend\"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],\"string\"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+\" \"]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if(\"object\"!==b.nodeName.toLowerCase()){(k=b.getAttribute(\"id\"))?k=k.replace(ba,ca):b.setAttribute(\"id\",k=u),o=g(a),h=o.length;while(h--)o[h]=\"#\"+k+\" \"+sa(o[h]);r=o.join(\",\"),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute(\"id\")}}}return i(a.replace(P,\"$1\"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+\" \")>d.cacheLength&&delete b[a.shift()],b[c+\" \"]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement(\"fieldset\");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split(\"|\"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return\"input\"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return(\"input\"===c||\"button\"===c)&&b.type===a}}function oa(a){return function(b){return\"form\"in b?b.parentNode&&b.disabled===!1?\"label\"in b?\"label\"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:\"label\"in b&&b.disabled===a}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&\"undefined\"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&\"HTML\"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener(\"unload\",da,!1):e.attachEvent&&e.attachEvent(\"onunload\",da)),c.attributes=ja(function(a){return a.className=\"i\",!a.getAttribute(\"className\")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment(\"\")),!a.getElementsByTagName(\"*\").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute(\"id\")===b}},d.find.ID=function(a,b){if(\"undefined\"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}}):(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c=\"undefined\"!=typeof a.getAttributeNode&&a.getAttributeNode(\"id\");return c&&c.value===b}},d.find.ID=function(a,b){if(\"undefined\"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode(\"id\"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode(\"id\"),c&&c.value===a)return[f]}return[]}}),d.find.TAG=c.getElementsByTagName?function(a,b){return\"undefined\"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if(\"*\"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if(\"undefined\"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML=\"<a id='\"+u+\"'></a><select id='\"+u+\"-\\r\\\\' msallowcapture=''><option selected=''></option></select>\",a.querySelectorAll(\"[msallowcapture^='']\").length&&q.push(\"[*^$]=\"+K+\"*(?:''|\\\"\\\")\"),a.querySelectorAll(\"[selected]\").length||q.push(\"\\\\[\"+K+\"*(?:value|\"+J+\")\"),a.querySelectorAll(\"[id~=\"+u+\"-]\").length||q.push(\"~=\"),a.querySelectorAll(\":checked\").length||q.push(\":checked\"),a.querySelectorAll(\"a#\"+u+\"+*\").length||q.push(\".#.+[+~]\")}),ja(function(a){a.innerHTML=\"<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>\";var b=n.createElement(\"input\");b.setAttribute(\"type\",\"hidden\"),a.appendChild(b).setAttribute(\"name\",\"D\"),a.querySelectorAll(\"[name=d]\").length&&q.push(\"name\"+K+\"*[*^$|!~]?=\"),2!==a.querySelectorAll(\":enabled\").length&&q.push(\":enabled\",\":disabled\"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(\":disabled\").length&&q.push(\":enabled\",\":disabled\"),a.querySelectorAll(\"*,:x\"),q.push(\",.*:\")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,\"*\"),s.call(a,\"[s!='']:x\"),r.push(\"!=\",N)}),q=q.length&&new RegExp(q.join(\"|\")),r=r.length&&new RegExp(r.join(\"|\")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,\"='$1']\"),c.matchesSelector&&p&&!A[b+\" \"]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+\"\").replace(ba,ca)},ga.error=function(a){throw new Error(\"Syntax error, unrecognized expression: \"+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c=\"\",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if(\"string\"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{\">\":{dir:\"parentNode\",first:!0},\" \":{dir:\"parentNode\"},\"+\":{dir:\"previousSibling\",first:!0},\"~\":{dir:\"previousSibling\"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||\"\").replace(_,aa),\"~=\"===a[2]&&(a[3]=\" \"+a[3]+\" \"),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),\"nth\"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*(\"even\"===a[3]||\"odd\"===a[3])),a[5]=+(a[7]+a[8]||\"odd\"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||\"\":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(\")\",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return\"*\"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+\" \"];return b||(b=new RegExp(\"(^|\"+K+\")\"+a+\"(\"+K+\"|$)\"))&&y(a,function(a){return b.test(\"string\"==typeof a.className&&a.className||\"undefined\"!=typeof a.getAttribute&&a.getAttribute(\"class\")||\"\")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?\"!=\"===b:!b||(e+=\"\",\"=\"===b?e===c:\"!=\"===b?e!==c:\"^=\"===b?c&&0===e.indexOf(c):\"*=\"===b?c&&e.indexOf(c)>-1:\"$=\"===b?c&&e.slice(-c.length)===c:\"~=\"===b?(\" \"+e.replace(O,\" \")+\" \").indexOf(c)>-1:\"|=\"===b&&(e===c||e.slice(0,c.length+1)===c+\"-\"))}},CHILD:function(a,b,c,d,e){var f=\"nth\"!==a.slice(0,3),g=\"last\"!==a.slice(-4),h=\"of-type\"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?\"nextSibling\":\"previousSibling\",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p=\"only\"===a&&!o&&\"nextSibling\"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error(\"unsupported pseudo: \"+a);return e[u]?e(b):e.length>1?(c=[a,a,\"\",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,\"$1\"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||\"\")||ga.error(\"unsupported lang: \"+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute(\"xml:lang\")||b.getAttribute(\"lang\"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+\"-\");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return\"input\"===b&&!!a.checked||\"option\"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return\"input\"===b&&\"button\"===a.type||\"button\"===b},text:function(a){var b;return\"input\"===a.nodeName.toLowerCase()&&\"text\"===a.type&&(null==(b=a.getAttribute(\"type\"))||\"text\"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c<b;c+=2)a.push(c);return a}),odd:pa(function(a,b){for(var c=1;c<b;c+=2)a.push(c);return a}),lt:pa(function(a,b,c){for(var d=c<0?c+b:c;--d>=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function ra(){}ra.prototype=d.filters=d.pseudos,d.setFilters=new ra,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+\" \"];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=Q.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=R.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(P,\" \")}),h=h.slice(c.length));for(g in d.filter)!(e=V[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function sa(a){for(var b=0,c=a.length,d=\"\";b<c;b++)d+=a[b].value;return d}function ta(a,b,c){var d=b.dir,e=b.next,f=e||d,g=c&&\"parentNode\"===f,h=x++;return b.first?function(b,c,e){while(b=b[d])if(1===b.nodeType||g)return a(b,c,e);return!1}:function(b,c,i){var j,k,l,m=[w,h];if(i){while(b=b[d])if((1===b.nodeType||g)&&a(b,c,i))return!0}else while(b=b[d])if(1===b.nodeType||g)if(l=b[u]||(b[u]={}),k=l[b.uniqueID]||(l[b.uniqueID]={}),e&&e===b.nodeName.toLowerCase())b=b[d]||b;else{if((j=k[f])&&j[0]===w&&j[1]===h)return m[2]=j[2];if(k[f]=m,m[2]=a(b,c,i))return!0}return!1}}function ua(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d<e;d++)ga(a,b[d],c);return c}function wa(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;h<i;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function xa(a,b,c,d,e,f){return d&&!d[u]&&(d=xa(d)),e&&!e[u]&&(e=xa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||va(b||\"*\",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:wa(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=wa(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[\" \"],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i<f;i++)if(c=d.relative[a[i].type])m=[ta(ua(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;e<f;e++)if(d.relative[a[e].type])break;return xa(i>1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:\" \"===a[i-2].type?\"*\":\"\"})).replace(P,\"$1\"),c,i<e&&ya(a.slice(i,e)),e<f&&ya(a=a.slice(e)),e<f&&sa(a))}m.push(c)}return ua(m)}function za(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s=\"0\",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG(\"*\",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+\" \"];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m=\"function\"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&\"ID\"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split(\"\").sort(B).join(\"\")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement(\"fieldset\"))}),ja(function(a){return a.innerHTML=\"<a href='#'></a>\",\"#\"===a.firstChild.getAttribute(\"href\")})||ka(\"type|href|height|width\",function(a,b,c){if(!c)return a.getAttribute(b,\"type\"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML=\"<input/>\",a.firstChild.setAttribute(\"value\",\"\"),\"\"===a.firstChild.getAttribute(\"value\")})||ka(\"value\",function(a,b,c){if(!c&&\"input\"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute(\"disabled\")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[\":\"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext;function B(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()}var C=/^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i,D=/^.[^:#\\[\\.,]*$/;function E(a,b,c){return r.isFunction(b)?r.grep(a,function(a,d){return!!b.call(a,d,a)!==c}):b.nodeType?r.grep(a,function(a){return a===b!==c}):\"string\"!=typeof b?r.grep(a,function(a){return i.call(b,a)>-1!==c}):D.test(b)?r.filter(b,a,c):(b=r.filter(b,a),r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType}))}r.filter=function(a,b,c){var d=b[0];return c&&(a=\":not(\"+a+\")\"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if(\"string\"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b<d;b++)if(r.contains(e[b],this))return!0}));for(c=this.pushStack([]),b=0;b<d;b++)r.find(a,e[b],c);return d>1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(E(this,a||[],!1))},not:function(a){return this.pushStack(E(this,a||[],!0))},is:function(a){return!!E(this,\"string\"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var F,G=/^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,H=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||F,\"string\"==typeof a){if(e=\"<\"===a[0]&&\">\"===a[a.length-1]&&a.length>=3?[null,a,null]:G.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),C.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};H.prototype=r.fn,F=r(d);var I=/^(?:parents|prev(?:Until|All))/,J={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a<c;a++)if(r.contains(this,b[a]))return!0})},closest:function(a,b){var c,d=0,e=this.length,f=[],g=\"string\"!=typeof a&&r(a);if(!A.test(a))for(;d<e;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?\"string\"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function K(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,\"parentNode\")},parentsUntil:function(a,b,c){return y(a,\"parentNode\",c)},next:function(a){return K(a,\"nextSibling\")},prev:function(a){return K(a,\"previousSibling\")},nextAll:function(a){return y(a,\"nextSibling\")},prevAll:function(a){return y(a,\"previousSibling\")},nextUntil:function(a,b,c){return y(a,\"nextSibling\",c)},prevUntil:function(a,b,c){return y(a,\"previousSibling\",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return B(a,\"iframe\")?a.contentDocument:(B(a,\"template\")&&(a=a.content||a),r.merge([],a.childNodes))}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return\"Until\"!==a.slice(-5)&&(d=c),d&&\"string\"==typeof d&&(e=r.filter(d,e)),this.length>1&&(J[a]||r.uniqueSort(e),I.test(a)&&e.reverse()),this.pushStack(e)}});var L=/[^\\x20\\t\\r\\n\\f]+/g;function M(a){var b={};return r.each(a.match(L)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a=\"string\"==typeof a?M(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=e||a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:\"\")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){r.each(b,function(b,c){r.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&\"string\"!==r.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return r.each(arguments,function(a,b){var c;while((c=r.inArray(b,f,c))>-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c=\"\",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=\"\"),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function N(a){return a}function O(a){throw a}function P(a,b,c,d){var e;try{a&&r.isFunction(e=a.promise)?e.call(a).done(b).fail(c):a&&r.isFunction(e=a.then)?e.call(a,b,c):b.apply(void 0,[a].slice(d))}catch(a){c.apply(void 0,[a])}}r.extend({Deferred:function(b){var c=[[\"notify\",\"progress\",r.Callbacks(\"memory\"),r.Callbacks(\"memory\"),2],[\"resolve\",\"done\",r.Callbacks(\"once memory\"),r.Callbacks(\"once memory\"),0,\"resolved\"],[\"reject\",\"fail\",r.Callbacks(\"once memory\"),r.Callbacks(\"once memory\"),1,\"rejected\"]],d=\"pending\",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},\"catch\":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+\"With\"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b<f)){if(a=d.apply(h,i),a===c.promise())throw new TypeError(\"Thenable self-resolution\");j=a&&(\"object\"==typeof a||\"function\"==typeof a)&&a.then,r.isFunction(j)?e?j.call(a,g(f,c,N,e),g(f,c,O,e)):(f++,j.call(a,g(f,c,N,e),g(f,c,O,e),g(f,c,N,c.notifyWith))):(d!==N&&(h=void 0,i=[a]),(e||c.resolveWith)(h,i))}},k=e?j:function(){try{j()}catch(a){r.Deferred.exceptionHook&&r.Deferred.exceptionHook(a,k.stackTrace),b+1>=f&&(d!==O&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:N,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:N)),c[2][3].add(g(0,a,r.isFunction(d)?d:O))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+\"With\"](this===f?void 0:this,arguments),this},f[b[0]+\"With\"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(P(a,g.done(h(c)).resolve,g.reject,!b),\"pending\"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)P(e[c],h(c),g.reject);return g.promise()}});var Q=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&Q.test(b.name)&&a.console.warn(\"jQuery.Deferred exception: \"+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var R=r.Deferred();r.fn.ready=function(a){return R.then(a)[\"catch\"](function(a){r.readyException(a)}),this},r.extend({isReady:!1,readyWait:1,ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||R.resolveWith(d,[r]))}}),r.ready.then=R.then;function S(){d.removeEventListener(\"DOMContentLoaded\",S),\na.removeEventListener(\"load\",S),r.ready()}\"complete\"===d.readyState||\"loading\"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener(\"DOMContentLoaded\",S),a.addEventListener(\"load\",S));var T=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if(\"object\"===r.type(c)){e=!0;for(h in c)T(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h<i;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},U=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function V(){this.expando=r.expando+V.uid++}V.uid=1,V.prototype={cache:function(a){var b=a[this.expando];return b||(b={},U(a)&&(a.nodeType?a[this.expando]=b:Object.defineProperty(a,this.expando,{value:b,configurable:!0}))),b},set:function(a,b,c){var d,e=this.cache(a);if(\"string\"==typeof b)e[r.camelCase(b)]=c;else for(d in b)e[r.camelCase(d)]=b[d];return e},get:function(a,b){return void 0===b?this.cache(a):a[this.expando]&&a[this.expando][r.camelCase(b)]},access:function(a,b,c){return void 0===b||b&&\"string\"==typeof b&&void 0===c?this.get(a,b):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d=a[this.expando];if(void 0!==d){if(void 0!==b){Array.isArray(b)?b=b.map(r.camelCase):(b=r.camelCase(b),b=b in d?[b]:b.match(L)||[]),c=b.length;while(c--)delete d[b[c]]}(void 0===b||r.isEmptyObject(d))&&(a.nodeType?a[this.expando]=void 0:delete a[this.expando])}},hasData:function(a){var b=a[this.expando];return void 0!==b&&!r.isEmptyObject(b)}};var W=new V,X=new V,Y=/^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,Z=/[A-Z]/g;function $(a){return\"true\"===a||\"false\"!==a&&(\"null\"===a?null:a===+a+\"\"?+a:Y.test(a)?JSON.parse(a):a)}function _(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d=\"data-\"+b.replace(Z,\"-$&\").toLowerCase(),c=a.getAttribute(d),\"string\"==typeof c){try{c=$(c)}catch(e){}X.set(a,b,c)}else c=void 0;return c}r.extend({hasData:function(a){return X.hasData(a)||W.hasData(a)},data:function(a,b,c){return X.access(a,b,c)},removeData:function(a,b){X.remove(a,b)},_data:function(a,b,c){return W.access(a,b,c)},_removeData:function(a,b){W.remove(a,b)}}),r.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=X.get(f),1===f.nodeType&&!W.get(f,\"hasDataAttrs\"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf(\"data-\")&&(d=r.camelCase(d.slice(5)),_(f,d,e[d])));W.set(f,\"hasDataAttrs\",!0)}return e}return\"object\"==typeof a?this.each(function(){X.set(this,a)}):T(this,function(b){var c;if(f&&void 0===b){if(c=X.get(f,a),void 0!==c)return c;if(c=_(f,a),void 0!==c)return c}else this.each(function(){X.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){X.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||\"fx\")+\"queue\",d=W.get(a,b),c&&(!d||Array.isArray(c)?d=W.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||\"fx\";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};\"inprogress\"===e&&(e=c.shift(),d--),e&&(\"fx\"===b&&c.unshift(\"inprogress\"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+\"queueHooks\";return W.get(a,c)||W.access(a,c,{empty:r.Callbacks(\"once memory\").add(function(){W.remove(a,[b+\"queue\",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return\"string\"!=typeof a&&(b=a,a=\"fx\",c--),arguments.length<c?r.queue(this[0],a):void 0===b?this:this.each(function(){var c=r.queue(this,a,b);r._queueHooks(this,a),\"fx\"===a&&\"inprogress\"!==c[0]&&r.dequeue(this,a)})},dequeue:function(a){return this.each(function(){r.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||\"fx\",[])},promise:function(a,b){var c,d=1,e=r.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};\"string\"!=typeof a&&(b=a,a=void 0),a=a||\"fx\";while(g--)c=W.get(f[g],a+\"queueHooks\"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var aa=/[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source,ba=new RegExp(\"^(?:([+-])=|)(\"+aa+\")([a-z%]*)$\",\"i\"),ca=[\"Top\",\"Right\",\"Bottom\",\"Left\"],da=function(a,b){return a=b||a,\"none\"===a.style.display||\"\"===a.style.display&&r.contains(a.ownerDocument,a)&&\"none\"===r.css(a,\"display\")},ea=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};function fa(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return r.css(a,b,\"\")},i=h(),j=c&&c[3]||(r.cssNumber[b]?\"\":\"px\"),k=(r.cssNumber[b]||\"px\"!==j&&+i)&&ba.exec(r.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||\".5\",k/=f,r.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var ga={};function ha(a){var b,c=a.ownerDocument,d=a.nodeName,e=ga[d];return e?e:(b=c.body.appendChild(c.createElement(d)),e=r.css(b,\"display\"),b.parentNode.removeChild(b),\"none\"===e&&(e=\"block\"),ga[d]=e,e)}function ia(a,b){for(var c,d,e=[],f=0,g=a.length;f<g;f++)d=a[f],d.style&&(c=d.style.display,b?(\"none\"===c&&(e[f]=W.get(d,\"display\")||null,e[f]||(d.style.display=\"\")),\"\"===d.style.display&&da(d)&&(e[f]=ha(d))):\"none\"!==c&&(e[f]=\"none\",W.set(d,\"display\",c)));for(f=0;f<g;f++)null!=e[f]&&(a[f].style.display=e[f]);return a}r.fn.extend({show:function(){return ia(this,!0)},hide:function(){return ia(this)},toggle:function(a){return\"boolean\"==typeof a?a?this.show():this.hide():this.each(function(){da(this)?r(this).show():r(this).hide()})}});var ja=/^(?:checkbox|radio)$/i,ka=/<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]+)/i,la=/^$|\\/(?:java|ecma)script/i,ma={option:[1,\"<select multiple='multiple'>\",\"</select>\"],thead:[1,\"<table>\",\"</table>\"],col:[2,\"<table><colgroup>\",\"</colgroup></table>\"],tr:[2,\"<table><tbody>\",\"</tbody></table>\"],td:[3,\"<table><tbody><tr>\",\"</tr></tbody></table>\"],_default:[0,\"\",\"\"]};ma.optgroup=ma.option,ma.tbody=ma.tfoot=ma.colgroup=ma.caption=ma.thead,ma.th=ma.td;function na(a,b){var c;return c=\"undefined\"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||\"*\"):\"undefined\"!=typeof a.querySelectorAll?a.querySelectorAll(b||\"*\"):[],void 0===b||b&&B(a,b)?r.merge([a],c):c}function oa(a,b){for(var c=0,d=a.length;c<d;c++)W.set(a[c],\"globalEval\",!b||W.get(b[c],\"globalEval\"))}var pa=/<|&#?\\w+;/;function qa(a,b,c,d,e){for(var f,g,h,i,j,k,l=b.createDocumentFragment(),m=[],n=0,o=a.length;n<o;n++)if(f=a[n],f||0===f)if(\"object\"===r.type(f))r.merge(m,f.nodeType?[f]:f);else if(pa.test(f)){g=g||l.appendChild(b.createElement(\"div\")),h=(ka.exec(f)||[\"\",\"\"])[1].toLowerCase(),i=ma[h]||ma._default,g.innerHTML=i[1]+r.htmlPrefilter(f)+i[2],k=i[0];while(k--)g=g.lastChild;r.merge(m,g.childNodes),g=l.firstChild,g.textContent=\"\"}else m.push(b.createTextNode(f));l.textContent=\"\",n=0;while(f=m[n++])if(d&&r.inArray(f,d)>-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=na(l.appendChild(f),\"script\"),j&&oa(g),c){k=0;while(f=g[k++])la.test(f.type||\"\")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement(\"div\")),c=d.createElement(\"input\");c.setAttribute(\"type\",\"radio\"),c.setAttribute(\"checked\",\"checked\"),c.setAttribute(\"name\",\"t\"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML=\"<textarea>x</textarea>\",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var ra=d.documentElement,sa=/^key/,ta=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ua=/^([^.]*)(?:\\.(.+)|)/;function va(){return!0}function wa(){return!1}function xa(){try{return d.activeElement}catch(a){}}function ya(a,b,c,d,e,f){var g,h;if(\"object\"==typeof b){\"string\"!=typeof c&&(d=d||c,c=void 0);for(h in b)ya(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&(\"string\"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=wa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(ra,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return\"undefined\"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||\"\").match(L)||[\"\"],j=b.length;while(j--)h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||\"\").split(\".\").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(\".\")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.hasData(a)&&W.get(a);if(q&&(i=q.events)){b=(b||\"\").match(L)||[\"\"],j=b.length;while(j--)if(h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||\"\").split(\".\").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp(\"(^|\\\\.)\"+o.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&(\"**\"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&W.remove(a,\"handle events\")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(W.get(this,\"events\")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c<arguments.length;c++)i[c]=arguments[c];if(b.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,b)!==!1){h=r.event.handlers.call(this,b,j),c=0;while((f=h[c++])&&!b.isPropagationStopped()){b.currentTarget=f.elem,d=0;while((g=f.handlers[d++])&&!b.isImmediatePropagationStopped())b.rnamespace&&!b.rnamespace.test(g.namespace)||(b.handleObj=g,b.data=g.data,e=((r.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(b.result=e)===!1&&(b.preventDefault(),b.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,b),b.result}},handlers:function(a,b){var c,d,e,f,g,h=[],i=b.delegateCount,j=a.target;if(i&&j.nodeType&&!(\"click\"===a.type&&a.button>=1))for(;j!==this;j=j.parentNode||this)if(1===j.nodeType&&(\"click\"!==a.type||j.disabled!==!0)){for(f=[],g={},c=0;c<i;c++)d=b[c],e=d.selector+\" \",void 0===g[e]&&(g[e]=d.needsContext?r(e,this).index(j)>-1:r.find(e,this,null,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}return j=this,i<b.length&&h.push({elem:j,handlers:b.slice(i)}),h},addProp:function(a,b){Object.defineProperty(r.Event.prototype,a,{enumerable:!0,configurable:!0,get:r.isFunction(b)?function(){if(this.originalEvent)return b(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[a]},set:function(b){Object.defineProperty(this,a,{enumerable:!0,configurable:!0,writable:!0,value:b})}})},fix:function(a){return a[r.expando]?a:new r.Event(a)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==xa()&&this.focus)return this.focus(),!1},delegateType:\"focusin\"},blur:{trigger:function(){if(this===xa()&&this.blur)return this.blur(),!1},delegateType:\"focusout\"},click:{trigger:function(){if(\"checkbox\"===this.type&&this.click&&B(this,\"input\"))return this.click(),!1},_default:function(a){return B(a.target,\"a\")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}}},r.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)},r.Event=function(a,b){return this instanceof r.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?va:wa,this.target=a.target&&3===a.target.nodeType?a.target.parentNode:a.target,this.currentTarget=a.currentTarget,this.relatedTarget=a.relatedTarget):this.type=a,b&&r.extend(this,b),this.timeStamp=a&&a.timeStamp||r.now(),void(this[r.expando]=!0)):new r.Event(a,b)},r.Event.prototype={constructor:r.Event,isDefaultPrevented:wa,isPropagationStopped:wa,isImmediatePropagationStopped:wa,isSimulated:!1,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=va,a&&!this.isSimulated&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=va,a&&!this.isSimulated&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=va,a&&!this.isSimulated&&a.stopImmediatePropagation(),this.stopPropagation()}},r.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,\"char\":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(a){var b=a.button;return null==a.which&&sa.test(a.type)?null!=a.charCode?a.charCode:a.keyCode:!a.which&&void 0!==b&&ta.test(a.type)?1&b?1:2&b?3:4&b?2:0:a.which}},r.event.addProp),r.each({mouseenter:\"mouseover\",mouseleave:\"mouseout\",pointerenter:\"pointerover\",pointerleave:\"pointerout\"},function(a,b){r.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return e&&(e===d||r.contains(d,e))||(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),r.fn.extend({on:function(a,b,c,d){return ya(this,a,b,c,d)},one:function(a,b,c,d){return ya(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,r(a.delegateTarget).off(d.namespace?d.origType+\".\"+d.namespace:d.origType,d.selector,d.handler),this;if(\"object\"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return b!==!1&&\"function\"!=typeof b||(c=b,b=void 0),c===!1&&(c=wa),this.each(function(){r.event.remove(this,a,c,b)})}});var za=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi,Aa=/<script|<style|<link/i,Ba=/checked\\s*(?:[^=]|=\\s*.checked.)/i,Ca=/^true\\/(.*)/,Da=/^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;function Ea(a,b){return B(a,\"table\")&&B(11!==b.nodeType?b:b.firstChild,\"tr\")?r(\">tbody\",a)[0]||a:a}function Fa(a){return a.type=(null!==a.getAttribute(\"type\"))+\"/\"+a.type,a}function Ga(a){var b=Ca.exec(a.type);return b?a.type=b[1]:a.removeAttribute(\"type\"),a}function Ha(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(W.hasData(a)&&(f=W.access(a),g=W.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c<d;c++)r.event.add(b,e,j[e][c])}X.hasData(a)&&(h=X.access(a),i=r.extend({},h),X.set(b,i))}}function Ia(a,b){var c=b.nodeName.toLowerCase();\"input\"===c&&ja.test(a.type)?b.checked=a.checked:\"input\"!==c&&\"textarea\"!==c||(b.defaultValue=a.defaultValue)}function Ja(a,b,c,d){b=g.apply([],b);var e,f,h,i,j,k,l=0,m=a.length,n=m-1,q=b[0],s=r.isFunction(q);if(s||m>1&&\"string\"==typeof q&&!o.checkClone&&Ba.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ja(f,b,c,d)});if(m&&(e=qa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(na(e,\"script\"),Fa),i=h.length;l<m;l++)j=e,l!==n&&(j=r.clone(j,!0,!0),i&&r.merge(h,na(j,\"script\"))),c.call(a[l],j,l);if(i)for(k=h[h.length-1].ownerDocument,r.map(h,Ga),l=0;l<i;l++)j=h[l],la.test(j.type||\"\")&&!W.access(j,\"globalEval\")&&r.contains(k,j)&&(j.src?r._evalUrl&&r._evalUrl(j.src):p(j.textContent.replace(Da,\"\"),k))}return a}function Ka(a,b,c){for(var d,e=b?r.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||r.cleanData(na(d)),d.parentNode&&(c&&r.contains(d.ownerDocument,d)&&oa(na(d,\"script\")),d.parentNode.removeChild(d));return a}r.extend({htmlPrefilter:function(a){return a.replace(za,\"<$1></$2>\")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=na(h),f=na(a),d=0,e=f.length;d<e;d++)Ia(f[d],g[d]);if(b)if(c)for(f=f||na(a),g=g||na(h),d=0,e=f.length;d<e;d++)Ha(f[d],g[d]);else Ha(a,h);return g=na(h,\"script\"),g.length>0&&oa(g,!i&&na(a,\"script\")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(U(c)){if(b=c[W.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[W.expando]=void 0}c[X.expando]&&(c[X.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ka(this,a,!0)},remove:function(a){return Ka(this,a)},text:function(a){return T(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.appendChild(a)}})},prepend:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(na(a,!1)),a.textContent=\"\");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return T(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if(\"string\"==typeof a&&!Aa.test(a)&&!ma[(ka.exec(a)||[\"\",\"\"])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c<d;c++)b=this[c]||{},1===b.nodeType&&(r.cleanData(na(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ja(this,arguments,function(b){var c=this.parentNode;r.inArray(this,a)<0&&(r.cleanData(na(this)),c&&c.replaceChild(b,this))},a)}}),r.each({appendTo:\"append\",prependTo:\"prepend\",insertBefore:\"before\",insertAfter:\"after\",replaceAll:\"replaceWith\"},function(a,b){r.fn[a]=function(a){for(var c,d=[],e=r(a),f=e.length-1,g=0;g<=f;g++)c=g===f?this:this.clone(!0),r(e[g])[b](c),h.apply(d,c.get());return this.pushStack(d)}});var La=/^margin/,Ma=new RegExp(\"^(\"+aa+\")(?!px)[a-z%]+$\",\"i\"),Na=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)};!function(){function b(){if(i){i.style.cssText=\"box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%\",i.innerHTML=\"\",ra.appendChild(h);var b=a.getComputedStyle(i);c=\"1%\"!==b.top,g=\"2px\"===b.marginLeft,e=\"4px\"===b.width,i.style.marginRight=\"50%\",f=\"4px\"===b.marginRight,ra.removeChild(h),i=null}}var c,e,f,g,h=d.createElement(\"div\"),i=d.createElement(\"div\");i.style&&(i.style.backgroundClip=\"content-box\",i.cloneNode(!0).style.backgroundClip=\"\",o.clearCloneStyle=\"content-box\"===i.style.backgroundClip,h.style.cssText=\"border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute\",h.appendChild(i),r.extend(o,{pixelPosition:function(){return b(),c},boxSizingReliable:function(){return b(),e},pixelMarginRight:function(){return b(),f},reliableMarginLeft:function(){return b(),g}}))}();function Oa(a,b,c){var d,e,f,g,h=a.style;return c=c||Na(a),c&&(g=c.getPropertyValue(b)||c[b],\"\"!==g||r.contains(a.ownerDocument,a)||(g=r.style(a,b)),!o.pixelMarginRight()&&Ma.test(g)&&La.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+\"\":g}function Pa(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Qa=/^(none|table(?!-c[ea]).+)/,Ra=/^--/,Sa={position:\"absolute\",visibility:\"hidden\",display:\"block\"},Ta={letterSpacing:\"0\",fontWeight:\"400\"},Ua=[\"Webkit\",\"Moz\",\"ms\"],Va=d.createElement(\"div\").style;function Wa(a){if(a in Va)return a;var b=a[0].toUpperCase()+a.slice(1),c=Ua.length;while(c--)if(a=Ua[c]+b,a in Va)return a}function Xa(a){var b=r.cssProps[a];return b||(b=r.cssProps[a]=Wa(a)||a),b}function Ya(a,b,c){var d=ba.exec(b);return d?Math.max(0,d[2]-(c||0))+(d[3]||\"px\"):b}function Za(a,b,c,d,e){var f,g=0;for(f=c===(d?\"border\":\"content\")?4:\"width\"===b?1:0;f<4;f+=2)\"margin\"===c&&(g+=r.css(a,c+ca[f],!0,e)),d?(\"content\"===c&&(g-=r.css(a,\"padding\"+ca[f],!0,e)),\"margin\"!==c&&(g-=r.css(a,\"border\"+ca[f]+\"Width\",!0,e))):(g+=r.css(a,\"padding\"+ca[f],!0,e),\"padding\"!==c&&(g+=r.css(a,\"border\"+ca[f]+\"Width\",!0,e)));return g}function $a(a,b,c){var d,e=Na(a),f=Oa(a,b,e),g=\"border-box\"===r.css(a,\"boxSizing\",!1,e);return Ma.test(f)?f:(d=g&&(o.boxSizingReliable()||f===a.style[b]),\"auto\"===f&&(f=a[\"offset\"+b[0].toUpperCase()+b.slice(1)]),f=parseFloat(f)||0,f+Za(a,b,c||(g?\"border\":\"content\"),d,e)+\"px\")}r.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Oa(a,\"opacity\");return\"\"===c?\"1\":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{\"float\":\"cssFloat\"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=r.camelCase(b),i=Ra.test(b),j=a.style;return i||(b=Xa(h)),g=r.cssHooks[b]||r.cssHooks[h],void 0===c?g&&\"get\"in g&&void 0!==(e=g.get(a,!1,d))?e:j[b]:(f=typeof c,\"string\"===f&&(e=ba.exec(c))&&e[1]&&(c=fa(a,b,e),f=\"number\"),null!=c&&c===c&&(\"number\"===f&&(c+=e&&e[3]||(r.cssNumber[h]?\"\":\"px\")),o.clearCloneStyle||\"\"!==c||0!==b.indexOf(\"background\")||(j[b]=\"inherit\"),g&&\"set\"in g&&void 0===(c=g.set(a,c,d))||(i?j.setProperty(b,c):j[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=r.camelCase(b),i=Ra.test(b);return i||(b=Xa(h)),g=r.cssHooks[b]||r.cssHooks[h],g&&\"get\"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=Oa(a,b,d)),\"normal\"===e&&b in Ta&&(e=Ta[b]),\"\"===c||c?(f=parseFloat(e),c===!0||isFinite(f)?f||0:e):e}}),r.each([\"height\",\"width\"],function(a,b){r.cssHooks[b]={get:function(a,c,d){if(c)return!Qa.test(r.css(a,\"display\"))||a.getClientRects().length&&a.getBoundingClientRect().width?$a(a,b,d):ea(a,Sa,function(){return $a(a,b,d)})},set:function(a,c,d){var e,f=d&&Na(a),g=d&&Za(a,b,d,\"border-box\"===r.css(a,\"boxSizing\",!1,f),f);return g&&(e=ba.exec(c))&&\"px\"!==(e[3]||\"px\")&&(a.style[b]=c,c=r.css(a,b)),Ya(a,c,g)}}}),r.cssHooks.marginLeft=Pa(o.reliableMarginLeft,function(a,b){if(b)return(parseFloat(Oa(a,\"marginLeft\"))||a.getBoundingClientRect().left-ea(a,{marginLeft:0},function(){return a.getBoundingClientRect().left}))+\"px\"}),r.each({margin:\"\",padding:\"\",border:\"Width\"},function(a,b){r.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f=\"string\"==typeof c?c.split(\" \"):[c];d<4;d++)e[a+ca[d]+b]=f[d]||f[d-2]||f[0];return e}},La.test(a)||(r.cssHooks[a+b].set=Ya)}),r.fn.extend({css:function(a,b){return T(this,function(a,b,c){var d,e,f={},g=0;if(Array.isArray(b)){for(d=Na(a),e=b.length;g<e;g++)f[b[g]]=r.css(a,b[g],!1,d);return f}return void 0!==c?r.style(a,b,c):r.css(a,b)},a,b,arguments.length>1)}});function _a(a,b,c,d,e){return new _a.prototype.init(a,b,c,d,e)}r.Tween=_a,_a.prototype={constructor:_a,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||r.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(r.cssNumber[c]?\"\":\"px\")},cur:function(){var a=_a.propHooks[this.prop];return a&&a.get?a.get(this):_a.propHooks._default.get(this)},run:function(a){var b,c=_a.propHooks[this.prop];return this.options.duration?this.pos=b=r.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):_a.propHooks._default.set(this),this}},_a.prototype.init.prototype=_a.prototype,_a.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=r.css(a.elem,a.prop,\"\"),b&&\"auto\"!==b?b:0)},set:function(a){r.fx.step[a.prop]?r.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[r.cssProps[a.prop]]&&!r.cssHooks[a.prop]?a.elem[a.prop]=a.now:r.style(a.elem,a.prop,a.now+a.unit)}}},_a.propHooks.scrollTop=_a.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},r.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:\"swing\"},r.fx=_a.prototype.init,r.fx.step={};var ab,bb,cb=/^(?:toggle|show|hide)$/,db=/queueHooks$/;function eb(){bb&&(d.hidden===!1&&a.requestAnimationFrame?a.requestAnimationFrame(eb):a.setTimeout(eb,r.fx.interval),r.fx.tick())}function fb(){return a.setTimeout(function(){ab=void 0}),ab=r.now()}function gb(a,b){var c,d=0,e={height:a};for(b=b?1:0;d<4;d+=2-b)c=ca[d],e[\"margin\"+c]=e[\"padding\"+c]=a;return b&&(e.opacity=e.width=a),e}function hb(a,b,c){for(var d,e=(kb.tweeners[b]||[]).concat(kb.tweeners[\"*\"]),f=0,g=e.length;f<g;f++)if(d=e[f].call(c,b,a))return d}function ib(a,b,c){var d,e,f,g,h,i,j,k,l=\"width\"in b||\"height\"in b,m=this,n={},o=a.style,p=a.nodeType&&da(a),q=W.get(a,\"fxshow\");c.queue||(g=r._queueHooks(a,\"fx\"),null==g.unqueued&&(g.unqueued=0,h=g.empty.fire,g.empty.fire=function(){g.unqueued||h()}),g.unqueued++,m.always(function(){m.always(function(){g.unqueued--,r.queue(a,\"fx\").length||g.empty.fire()})}));for(d in b)if(e=b[d],cb.test(e)){if(delete b[d],f=f||\"toggle\"===e,e===(p?\"hide\":\"show\")){if(\"show\"!==e||!q||void 0===q[d])continue;p=!0}n[d]=q&&q[d]||r.style(a,d)}if(i=!r.isEmptyObject(b),i||!r.isEmptyObject(n)){l&&1===a.nodeType&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=q&&q.display,null==j&&(j=W.get(a,\"display\")),k=r.css(a,\"display\"),\"none\"===k&&(j?k=j:(ia([a],!0),j=a.style.display||j,k=r.css(a,\"display\"),ia([a]))),(\"inline\"===k||\"inline-block\"===k&&null!=j)&&\"none\"===r.css(a,\"float\")&&(i||(m.done(function(){o.display=j}),null==j&&(k=o.display,j=\"none\"===k?\"\":k)),o.display=\"inline-block\")),c.overflow&&(o.overflow=\"hidden\",m.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]})),i=!1;for(d in n)i||(q?\"hidden\"in q&&(p=q.hidden):q=W.access(a,\"fxshow\",{display:j}),f&&(q.hidden=!p),p&&ia([a],!0),m.done(function(){p||ia([a]),W.remove(a,\"fxshow\");for(d in n)r.style(a,d,n[d])})),i=hb(p?q[d]:0,d,m),d in q||(q[d]=i.start,p&&(i.end=i.start,i.start=0))}}function jb(a,b){var c,d,e,f,g;for(c in a)if(d=r.camelCase(c),e=b[d],f=a[c],Array.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=r.cssHooks[d],g&&\"expand\"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function kb(a,b,c){var d,e,f=0,g=kb.prefilters.length,h=r.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=ab||fb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;g<i;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),f<1&&i?c:(i||h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:r.extend({},b),opts:r.extend(!0,{specialEasing:{},easing:r.easing._default},c),originalProperties:b,originalOptions:c,startTime:ab||fb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=r.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;c<d;c++)j.tweens[c].run(1);return b?(h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for(jb(k,j.opts.specialEasing);f<g;f++)if(d=kb.prefilters[f].call(j,a,k,j.opts))return r.isFunction(d.stop)&&(r._queueHooks(j.elem,j.opts.queue).stop=r.proxy(d.stop,d)),d;return r.map(k,hb,j),r.isFunction(j.opts.start)&&j.opts.start.call(a,j),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always),r.fx.timer(r.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j}r.Animation=r.extend(kb,{tweeners:{\"*\":[function(a,b){var c=this.createTween(a,b);return fa(c.elem,a,ba.exec(b),c),c}]},tweener:function(a,b){r.isFunction(a)?(b=a,a=[\"*\"]):a=a.match(L);for(var c,d=0,e=a.length;d<e;d++)c=a[d],kb.tweeners[c]=kb.tweeners[c]||[],kb.tweeners[c].unshift(b)},prefilters:[ib],prefilter:function(a,b){b?kb.prefilters.unshift(a):kb.prefilters.push(a)}}),r.speed=function(a,b,c){var d=a&&\"object\"==typeof a?r.extend({},a):{complete:c||!c&&b||r.isFunction(a)&&a,duration:a,easing:c&&b||b&&!r.isFunction(b)&&b};return r.fx.off?d.duration=0:\"number\"!=typeof d.duration&&(d.duration in r.fx.speeds?d.duration=r.fx.speeds[d.duration]:d.duration=r.fx.speeds._default),null!=d.queue&&d.queue!==!0||(d.queue=\"fx\"),d.old=d.complete,d.complete=function(){r.isFunction(d.old)&&d.old.call(this),d.queue&&r.dequeue(this,d.queue)},d},r.fn.extend({fadeTo:function(a,b,c,d){return this.filter(da).css(\"opacity\",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=r.isEmptyObject(a),f=r.speed(b,c,d),g=function(){var b=kb(this,r.extend({},a),f);(e||W.get(this,\"finish\"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return\"string\"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||\"fx\",[]),this.each(function(){var b=!0,e=null!=a&&a+\"queueHooks\",f=r.timers,g=W.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&db.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));!b&&c||r.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||\"fx\"),this.each(function(){var b,c=W.get(this),d=c[a+\"queue\"],e=c[a+\"queueHooks\"],f=r.timers,g=d?d.length:0;for(c.finish=!0,r.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;b<g;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),r.each([\"toggle\",\"show\",\"hide\"],function(a,b){var c=r.fn[b];r.fn[b]=function(a,d,e){return null==a||\"boolean\"==typeof a?c.apply(this,arguments):this.animate(gb(b,!0),a,d,e)}}),r.each({slideDown:gb(\"show\"),slideUp:gb(\"hide\"),slideToggle:gb(\"toggle\"),fadeIn:{opacity:\"show\"},fadeOut:{opacity:\"hide\"},fadeToggle:{opacity:\"toggle\"}},function(a,b){r.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),r.timers=[],r.fx.tick=function(){var a,b=0,c=r.timers;for(ab=r.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||r.fx.stop(),ab=void 0},r.fx.timer=function(a){r.timers.push(a),r.fx.start()},r.fx.interval=13,r.fx.start=function(){bb||(bb=!0,eb())},r.fx.stop=function(){bb=null},r.fx.speeds={slow:600,fast:200,_default:400},r.fn.delay=function(b,c){return b=r.fx?r.fx.speeds[b]||b:b,c=c||\"fx\",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a=d.createElement(\"input\"),b=d.createElement(\"select\"),c=b.appendChild(d.createElement(\"option\"));a.type=\"checkbox\",o.checkOn=\"\"!==a.value,o.optSelected=c.selected,a=d.createElement(\"input\"),a.value=\"t\",a.type=\"radio\",o.radioValue=\"t\"===a.value}();var lb,mb=r.expr.attrHandle;r.fn.extend({attr:function(a,b){return T(this,r.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return\"undefined\"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?lb:void 0)),void 0!==c?null===c?void r.removeAttr(a,b):e&&\"set\"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+\"\"),c):e&&\"get\"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b),\nnull==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&\"radio\"===b&&B(a,\"input\")){var c=a.value;return a.setAttribute(\"type\",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(L);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),lb={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\\w+/g),function(a,b){var c=mb[b]||r.find.attr;mb[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=mb[g],mb[g]=e,e=null!=c(a,b,d)?g:null,mb[g]=f),e}});var nb=/^(?:input|select|textarea|button)$/i,ob=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return T(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&\"set\"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&\"get\"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,\"tabindex\");return b?parseInt(b,10):nb.test(a.nodeName)||ob.test(a.nodeName)&&a.href?0:-1}}},propFix:{\"for\":\"htmlFor\",\"class\":\"className\"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each([\"tabIndex\",\"readOnly\",\"maxLength\",\"cellSpacing\",\"cellPadding\",\"rowSpan\",\"colSpan\",\"useMap\",\"frameBorder\",\"contentEditable\"],function(){r.propFix[this.toLowerCase()]=this});function pb(a){var b=a.match(L)||[];return b.join(\" \")}function qb(a){return a.getAttribute&&a.getAttribute(\"class\")||\"\"}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,qb(this)))});if(\"string\"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&\" \"+pb(e)+\" \"){g=0;while(f=b[g++])d.indexOf(\" \"+f+\" \")<0&&(d+=f+\" \");h=pb(d),e!==h&&c.setAttribute(\"class\",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,qb(this)))});if(!arguments.length)return this.attr(\"class\",\"\");if(\"string\"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&\" \"+pb(e)+\" \"){g=0;while(f=b[g++])while(d.indexOf(\" \"+f+\" \")>-1)d=d.replace(\" \"+f+\" \",\" \");h=pb(d),e!==h&&c.setAttribute(\"class\",h)}}return this},toggleClass:function(a,b){var c=typeof a;return\"boolean\"==typeof b&&\"string\"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,qb(this),b),b)}):this.each(function(){var b,d,e,f;if(\"string\"===c){d=0,e=r(this),f=a.match(L)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&\"boolean\"!==c||(b=qb(this),b&&W.set(this,\"__className__\",b),this.setAttribute&&this.setAttribute(\"class\",b||a===!1?\"\":W.get(this,\"__className__\")||\"\"))})},hasClass:function(a){var b,c,d=0;b=\" \"+a+\" \";while(c=this[d++])if(1===c.nodeType&&(\" \"+pb(qb(c))+\" \").indexOf(b)>-1)return!0;return!1}});var rb=/\\r/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e=\"\":\"number\"==typeof e?e+=\"\":Array.isArray(e)&&(e=r.map(e,function(a){return null==a?\"\":a+\"\"})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&\"set\"in b&&void 0!==b.set(this,e,\"value\")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&\"get\"in b&&void 0!==(c=b.get(e,\"value\"))?c:(c=e.value,\"string\"==typeof c?c.replace(rb,\"\"):null==c?\"\":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,\"value\");return null!=b?b:pb(r.text(a))}},select:{get:function(a){var b,c,d,e=a.options,f=a.selectedIndex,g=\"select-one\"===a.type,h=g?null:[],i=g?f+1:e.length;for(d=f<0?i:g?f:0;d<i;d++)if(c=e[d],(c.selected||d===f)&&!c.disabled&&(!c.parentNode.disabled||!B(c.parentNode,\"optgroup\"))){if(b=r(c).val(),g)return b;h.push(b)}return h},set:function(a,b){var c,d,e=a.options,f=r.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=r.inArray(r.valHooks.option.get(d),f)>-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each([\"radio\",\"checkbox\"],function(){r.valHooks[this]={set:function(a,b){if(Array.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute(\"value\")?\"on\":a.value})});var sb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,\"type\")?b.type:b,q=l.call(b,\"namespace\")?b.namespace.split(\".\"):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!sb.test(p+r.event.triggered)&&(p.indexOf(\".\")>-1&&(q=p.split(\".\"),p=q.shift(),q.sort()),k=p.indexOf(\":\")<0&&\"on\"+p,b=b[r.expando]?b:new r.Event(p,\"object\"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join(\".\"),b.rnamespace=b.namespace?new RegExp(\"(^|\\\\.)\"+q.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,sb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(W.get(h,\"events\")||{})[b.type]&&W.get(h,\"handle\"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&U(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!U(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each(\"blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu\".split(\" \"),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin=\"onfocusin\"in a,o.focusin||r.each({focus:\"focusin\",blur:\"focusout\"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=W.access(d,b);e||d.addEventListener(a,c,!0),W.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=W.access(d,b)-1;e?W.access(d,b,e):(d.removeEventListener(a,c,!0),W.remove(d,b))}}});var tb=a.location,ub=r.now(),vb=/\\?/;r.parseXML=function(b){var c;if(!b||\"string\"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,\"text/xml\")}catch(d){c=void 0}return c&&!c.getElementsByTagName(\"parsererror\").length||r.error(\"Invalid XML: \"+b),c};var wb=/\\[\\]$/,xb=/\\r?\\n/g,yb=/^(?:submit|button|image|reset|file)$/i,zb=/^(?:input|select|textarea|keygen)/i;function Ab(a,b,c,d){var e;if(Array.isArray(b))r.each(b,function(b,e){c||wb.test(a)?d(a,e):Ab(a+\"[\"+(\"object\"==typeof e&&null!=e?b:\"\")+\"]\",e,c,d)});else if(c||\"object\"!==r.type(b))d(a,b);else for(e in b)Ab(a+\"[\"+e+\"]\",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+\"=\"+encodeURIComponent(null==c?\"\":c)};if(Array.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)Ab(c,a[c],b,e);return d.join(\"&\")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,\"elements\");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(\":disabled\")&&zb.test(this.nodeName)&&!yb.test(a)&&(this.checked||!ja.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:Array.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(xb,\"\\r\\n\")}}):{name:b.name,value:c.replace(xb,\"\\r\\n\")}}).get()}});var Bb=/%20/g,Cb=/#.*$/,Db=/([?&])_=[^&]*/,Eb=/^(.*?):[ \\t]*([^\\r\\n]*)$/gm,Fb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Gb=/^(?:GET|HEAD)$/,Hb=/^\\/\\//,Ib={},Jb={},Kb=\"*/\".concat(\"*\"),Lb=d.createElement(\"a\");Lb.href=tb.href;function Mb(a){return function(b,c){\"string\"!=typeof b&&(c=b,b=\"*\");var d,e=0,f=b.toLowerCase().match(L)||[];if(r.isFunction(c))while(d=f[e++])\"+\"===d[0]?(d=d.slice(1)||\"*\",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Nb(a,b,c,d){var e={},f=a===Jb;function g(h){var i;return e[h]=!0,r.each(a[h]||[],function(a,h){var j=h(b,c,d);return\"string\"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e[\"*\"]&&g(\"*\")}function Ob(a,b){var c,d,e=r.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&r.extend(!0,a,d),a}function Pb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while(\"*\"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader(\"Content-Type\"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+\" \"+i[0]]){f=e;break}g||(g=e)}f=f||g}if(f)return f!==i[0]&&i.unshift(f),c[f]}function Qb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if(\"*\"===f)f=i;else if(\"*\"!==i&&i!==f){if(g=j[i+\" \"+f]||j[\"* \"+f],!g)for(e in j)if(h=e.split(\" \"),h[1]===f&&(g=j[i+\" \"+h[0]]||j[\"* \"+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a[\"throws\"])b=g(b);else try{b=g(b)}catch(l){return{state:\"parsererror\",error:g?l:\"No conversion from \"+i+\" to \"+f}}}return{state:\"success\",data:b}}r.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:tb.href,type:\"GET\",isLocal:Fb.test(tb.protocol),global:!0,processData:!0,async:!0,contentType:\"application/x-www-form-urlencoded; charset=UTF-8\",accepts:{\"*\":Kb,text:\"text/plain\",html:\"text/html\",xml:\"application/xml, text/xml\",json:\"application/json, text/javascript\"},contents:{xml:/\\bxml\\b/,html:/\\bhtml/,json:/\\bjson\\b/},responseFields:{xml:\"responseXML\",text:\"responseText\",json:\"responseJSON\"},converters:{\"* text\":String,\"text html\":!0,\"text json\":JSON.parse,\"text xml\":r.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Ob(Ob(a,r.ajaxSettings),b):Ob(r.ajaxSettings,a)},ajaxPrefilter:Mb(Ib),ajaxTransport:Mb(Jb),ajax:function(b,c){\"object\"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m,n,o=r.ajaxSetup({},c),p=o.context||o,q=o.context&&(p.nodeType||p.jquery)?r(p):r.event,s=r.Deferred(),t=r.Callbacks(\"once memory\"),u=o.statusCode||{},v={},w={},x=\"canceled\",y={readyState:0,getResponseHeader:function(a){var b;if(k){if(!h){h={};while(b=Eb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return k?g:null},setRequestHeader:function(a,b){return null==k&&(a=w[a.toLowerCase()]=w[a.toLowerCase()]||a,v[a]=b),this},overrideMimeType:function(a){return null==k&&(o.mimeType=a),this},statusCode:function(a){var b;if(a)if(k)y.always(a[y.status]);else for(b in a)u[b]=[u[b],a[b]];return this},abort:function(a){var b=a||x;return e&&e.abort(b),A(0,b),this}};if(s.promise(y),o.url=((b||o.url||tb.href)+\"\").replace(Hb,tb.protocol+\"//\"),o.type=c.method||c.type||o.method||o.type,o.dataTypes=(o.dataType||\"*\").toLowerCase().match(L)||[\"\"],null==o.crossDomain){j=d.createElement(\"a\");try{j.href=o.url,j.href=j.href,o.crossDomain=Lb.protocol+\"//\"+Lb.host!=j.protocol+\"//\"+j.host}catch(z){o.crossDomain=!0}}if(o.data&&o.processData&&\"string\"!=typeof o.data&&(o.data=r.param(o.data,o.traditional)),Nb(Ib,o,c,y),k)return y;l=r.event&&o.global,l&&0===r.active++&&r.event.trigger(\"ajaxStart\"),o.type=o.type.toUpperCase(),o.hasContent=!Gb.test(o.type),f=o.url.replace(Cb,\"\"),o.hasContent?o.data&&o.processData&&0===(o.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&(o.data=o.data.replace(Bb,\"+\")):(n=o.url.slice(f.length),o.data&&(f+=(vb.test(f)?\"&\":\"?\")+o.data,delete o.data),o.cache===!1&&(f=f.replace(Db,\"$1\"),n=(vb.test(f)?\"&\":\"?\")+\"_=\"+ub++ +n),o.url=f+n),o.ifModified&&(r.lastModified[f]&&y.setRequestHeader(\"If-Modified-Since\",r.lastModified[f]),r.etag[f]&&y.setRequestHeader(\"If-None-Match\",r.etag[f])),(o.data&&o.hasContent&&o.contentType!==!1||c.contentType)&&y.setRequestHeader(\"Content-Type\",o.contentType),y.setRequestHeader(\"Accept\",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+(\"*\"!==o.dataTypes[0]?\", \"+Kb+\"; q=0.01\":\"\"):o.accepts[\"*\"]);for(m in o.headers)y.setRequestHeader(m,o.headers[m]);if(o.beforeSend&&(o.beforeSend.call(p,y,o)===!1||k))return y.abort();if(x=\"abort\",t.add(o.complete),y.done(o.success),y.fail(o.error),e=Nb(Jb,o,c,y)){if(y.readyState=1,l&&q.trigger(\"ajaxSend\",[y,o]),k)return y;o.async&&o.timeout>0&&(i=a.setTimeout(function(){y.abort(\"timeout\")},o.timeout));try{k=!1,e.send(v,A)}catch(z){if(k)throw z;A(-1,z)}}else A(-1,\"No Transport\");function A(b,c,d,h){var j,m,n,v,w,x=c;k||(k=!0,i&&a.clearTimeout(i),e=void 0,g=h||\"\",y.readyState=b>0?4:0,j=b>=200&&b<300||304===b,d&&(v=Pb(o,y,d)),v=Qb(o,v,y,j),j?(o.ifModified&&(w=y.getResponseHeader(\"Last-Modified\"),w&&(r.lastModified[f]=w),w=y.getResponseHeader(\"etag\"),w&&(r.etag[f]=w)),204===b||\"HEAD\"===o.type?x=\"nocontent\":304===b?x=\"notmodified\":(x=v.state,m=v.data,n=v.error,j=!n)):(n=x,!b&&x||(x=\"error\",b<0&&(b=0))),y.status=b,y.statusText=(c||x)+\"\",j?s.resolveWith(p,[m,x,y]):s.rejectWith(p,[y,x,n]),y.statusCode(u),u=void 0,l&&q.trigger(j?\"ajaxSuccess\":\"ajaxError\",[y,o,j?m:n]),t.fireWith(p,[y,x]),l&&(q.trigger(\"ajaxComplete\",[y,o]),--r.active||r.event.trigger(\"ajaxStop\")))}return y},getJSON:function(a,b,c){return r.get(a,b,c,\"json\")},getScript:function(a,b){return r.get(a,void 0,b,\"script\")}}),r.each([\"get\",\"post\"],function(a,b){r[b]=function(a,c,d,e){return r.isFunction(c)&&(e=e||d,d=c,c=void 0),r.ajax(r.extend({url:a,type:b,dataType:e,data:c,success:d},r.isPlainObject(a)&&a))}}),r._evalUrl=function(a){return r.ajax({url:a,type:\"GET\",dataType:\"script\",cache:!0,async:!1,global:!1,\"throws\":!0})},r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not(\"body\").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},r.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Rb={0:200,1223:204},Sb=r.ajaxSettings.xhr();o.cors=!!Sb&&\"withCredentials\"in Sb,o.ajax=Sb=!!Sb,r.ajaxTransport(function(b){var c,d;if(o.cors||Sb&&!b.crossDomain)return{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e[\"X-Requested-With\"]||(e[\"X-Requested-With\"]=\"XMLHttpRequest\");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,\"abort\"===a?h.abort():\"error\"===a?\"number\"!=typeof h.status?f(0,\"error\"):f(h.status,h.statusText):f(Rb[h.status]||h.status,h.statusText,\"text\"!==(h.responseType||\"text\")||\"string\"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c(\"error\"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c(\"abort\");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}}),r.ajaxPrefilter(function(a){a.crossDomain&&(a.contents.script=!1)}),r.ajaxSetup({accepts:{script:\"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"},contents:{script:/\\b(?:java|ecma)script\\b/},converters:{\"text script\":function(a){return r.globalEval(a),a}}}),r.ajaxPrefilter(\"script\",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type=\"GET\")}),r.ajaxTransport(\"script\",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=r(\"<script>\").prop({charset:a.scriptCharset,src:a.url}).on(\"load error\",c=function(a){b.remove(),c=null,a&&f(\"error\"===a.type?404:200,a.type)}),d.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Tb=[],Ub=/(=)\\?(?=&|$)|\\?\\?/;r.ajaxSetup({jsonp:\"callback\",jsonpCallback:function(){var a=Tb.pop()||r.expando+\"_\"+ub++;return this[a]=!0,a}}),r.ajaxPrefilter(\"json jsonp\",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Ub.test(b.url)?\"url\":\"string\"==typeof b.data&&0===(b.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&Ub.test(b.data)&&\"data\");if(h||\"jsonp\"===b.dataTypes[0])return e=b.jsonpCallback=r.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Ub,\"$1\"+e):b.jsonp!==!1&&(b.url+=(vb.test(b.url)?\"&\":\"?\")+b.jsonp+\"=\"+e),b.converters[\"script json\"]=function(){return g||r.error(e+\" was not called\"),g[0]},b.dataTypes[0]=\"json\",f=a[e],a[e]=function(){g=arguments},d.always(function(){void 0===f?r(a).removeProp(e):a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Tb.push(e)),g&&r.isFunction(f)&&f(g[0]),g=f=void 0}),\"script\"}),o.createHTMLDocument=function(){var a=d.implementation.createHTMLDocument(\"\").body;return a.innerHTML=\"<form></form><form></form>\",2===a.childNodes.length}(),r.parseHTML=function(a,b,c){if(\"string\"!=typeof a)return[];\"boolean\"==typeof b&&(c=b,b=!1);var e,f,g;return b||(o.createHTMLDocument?(b=d.implementation.createHTMLDocument(\"\"),e=b.createElement(\"base\"),e.href=d.location.href,b.head.appendChild(e)):b=d),f=C.exec(a),g=!c&&[],f?[b.createElement(f[1])]:(f=qa([a],b,g),g&&g.length&&r(g).remove(),r.merge([],f.childNodes))},r.fn.load=function(a,b,c){var d,e,f,g=this,h=a.indexOf(\" \");return h>-1&&(d=pb(a.slice(h)),a=a.slice(0,h)),r.isFunction(b)?(c=b,b=void 0):b&&\"object\"==typeof b&&(e=\"POST\"),g.length>0&&r.ajax({url:a,type:e||\"GET\",dataType:\"html\",data:b}).done(function(a){f=arguments,g.html(d?r(\"<div>\").append(r.parseHTML(a)).find(d):a)}).always(c&&function(a,b){g.each(function(){c.apply(this,f||[a.responseText,b,a])})}),this},r.each([\"ajaxStart\",\"ajaxStop\",\"ajaxComplete\",\"ajaxError\",\"ajaxSuccess\",\"ajaxSend\"],function(a,b){r.fn[b]=function(a){return this.on(b,a)}}),r.expr.pseudos.animated=function(a){return r.grep(r.timers,function(b){return a===b.elem}).length},r.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=r.css(a,\"position\"),l=r(a),m={};\"static\"===k&&(a.style.position=\"relative\"),h=l.offset(),f=r.css(a,\"top\"),i=r.css(a,\"left\"),j=(\"absolute\"===k||\"fixed\"===k)&&(f+i).indexOf(\"auto\")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),r.isFunction(b)&&(b=b.call(a,c,r.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),\"using\"in b?b.using.call(a,m):l.css(m)}},r.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){r.offset.setOffset(this,a,b)});var b,c,d,e,f=this[0];if(f)return f.getClientRects().length?(d=f.getBoundingClientRect(),b=f.ownerDocument,c=b.documentElement,e=b.defaultView,{top:d.top+e.pageYOffset-c.clientTop,left:d.left+e.pageXOffset-c.clientLeft}):{top:0,left:0}},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return\"fixed\"===r.css(c,\"position\")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),B(a[0],\"html\")||(d=a.offset()),d={top:d.top+r.css(a[0],\"borderTopWidth\",!0),left:d.left+r.css(a[0],\"borderLeftWidth\",!0)}),{top:b.top-d.top-r.css(c,\"marginTop\",!0),left:b.left-d.left-r.css(c,\"marginLeft\",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&\"static\"===r.css(a,\"position\"))a=a.offsetParent;return a||ra})}}),r.each({scrollLeft:\"pageXOffset\",scrollTop:\"pageYOffset\"},function(a,b){var c=\"pageYOffset\"===b;r.fn[a]=function(d){return T(this,function(a,d,e){var f;return r.isWindow(a)?f=a:9===a.nodeType&&(f=a.defaultView),void 0===e?f?f[b]:a[d]:void(f?f.scrollTo(c?f.pageXOffset:e,c?e:f.pageYOffset):a[d]=e)},a,d,arguments.length)}}),r.each([\"top\",\"left\"],function(a,b){r.cssHooks[b]=Pa(o.pixelPosition,function(a,c){if(c)return c=Oa(a,b),Ma.test(c)?r(a).position()[b]+\"px\":c})}),r.each({Height:\"height\",Width:\"width\"},function(a,b){r.each({padding:\"inner\"+a,content:b,\"\":\"outer\"+a},function(c,d){r.fn[d]=function(e,f){var g=arguments.length&&(c||\"boolean\"!=typeof e),h=c||(e===!0||f===!0?\"margin\":\"border\");return T(this,function(b,c,e){var f;return r.isWindow(b)?0===d.indexOf(\"outer\")?b[\"inner\"+a]:b.document.documentElement[\"client\"+a]:9===b.nodeType?(f=b.documentElement,Math.max(b.body[\"scroll\"+a],f[\"scroll\"+a],b.body[\"offset\"+a],f[\"offset\"+a],f[\"client\"+a])):void 0===e?r.css(b,c,h):r.style(b,c,e,h)},b,g?e:void 0,g)}})}),r.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,\"**\"):this.off(b,a||\"**\",c)}}),r.holdReady=function(a){a?r.readyWait++:r.ready(!0)},r.isArray=Array.isArray,r.parseJSON=JSON.parse,r.nodeName=B,\"function\"==typeof define&&define.amd&&define(\"jquery\",[],function(){return r});var Vb=a.jQuery,Wb=a.$;return r.noConflict=function(b){return a.$===r&&(a.$=Wb),b&&a.jQuery===r&&(a.jQuery=Vb),r},b||(a.jQuery=a.$=r),r});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2016, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n *\n * RequireJS module to get server configuration information. This module\n * fetches \"config.json\" relative  to  the   main  document.  The Prolog\n * server emits a  JSON  object  that   provides  the  location  of  all\n * explicitly  identified  HTTP  handlers.  These    are   intended  for\n * (typically) AJAX calls:\n *\n * ```\n *   $.ajax({ url: config.http.locations.swish_examples,\n *            ...\n * ```\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('config',[ \"jquery\" ],\n       function($) {\nvar KEY = \"SWISHCONFIG\";\n\n/* Configuration of various server components.  We provide\n   defaults for the case that these files are served from\n   a non-Prolog server.\n*/\n\nvar config;\n\nfunction getCachedConfig() {\n  if ( typeof(Storage) !== \"undefined\" && window.swish.config_hash ) {\n    var str;\n\n    if ( (str = localStorage.getItem(KEY)) ) {\n      value = JSON.parse(str);\n      if ( value.hash == window.swish.config_hash )\n\treturn value.config;\n    }\n  }\n}\n\nfunction setCachedConfig(config) {\n  if ( typeof(Storage) !== \"undefined\" && window.swish.config_hash ) {\n    localStorage.setItem(KEY, JSON.stringify(\n      { hash: window.swish.config_hash,\n        config: config\n      }));\n  }\n}\n\nif ( !config ) {\n  if ( !(config = getCachedConfig()) ) {\n    $.ajax(\"swish_config.json\",\n\t   { dataType: \"json\",\n\t     async: false,\n\t     success: function(data) {\n\t       config = data;\n\t       setCachedConfig(config);\n\t     },\n\t     error: function() {\n\t       alert(\"Failed to fetch configuration from server\");\n\t     }\n\t   });\n  }\n}\n\nreturn config;\n});\n\n\n\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2016, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n *\n * Manage persistent data such as preferences.\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n */\n\ndefine('preferences',[\"jquery\"],\n       function($) {\n  var hasLocalStore = (typeof(Storage) !== \"undefined\");\n  var defaults = {};\n\n  var preferences = {\n    /**\n     * @returns {Boolean} indicating whether persistent storage is\n     * supported.\n     */\n    persistent: function() {\n      return hasLocalStore;\n    },\n\n    /**\n     * Store that we do not want to see info dialogue with a given\n     * identifier again.\n     * @param {String} id\n     */\n    setNotAgain: function(id) {\n      if ( hasLocalStore ) {\n\tvar data = readNotAgain();\n\n\tif ( data.indexOf(id) < 0 ) {\n\t  data.push(id);\n\t  localStorage.setItem(\"notagain\", JSON.stringify(data));\n\t}\n      }\n    },\n\n    /**\n     * @returns {Boolean} `true` if the user choose not to see this\n     * dialogue again\n     * @param {String} id identifier to test\n     */\n    notagain: function(id) {\n      if ( hasLocalStore ) {\n\tvar data = readNotAgain();\n\treturn data.indexOf(id) >= 0;\n      }\n      return false;\n    },\n\n    /**\n     * Broadcast the change of a preference.\n     */\n    broadcast: function(name, value) {\n      $(\".swish-event-receiver\").trigger(\"preference\",\n\t\t\t\t\t { name: name,\n\t\t\t\t\t   value: value\n\t\t\t\t\t });\n    },\n\n    /**\n     * Set the value of a preference and broadcast it.\n     * FIXME: we should only broadcast if the value has changed.\n     * @param {String} name describes the name of the preference\n     * @param {Any} value describes the value.  Values are stored\n     * using JSON serialization.\n     */\n    setVal: function(name, value) {\n      if ( hasLocalStore ) {\n\tlocalStorage.setItem(name, JSON.stringify(value));\n      }\n      this.broadcast(name, value);\n    },\n\n    /**\n     * @param {String} name describes the name of the preference\n     * @param {Any} value describes the default value.\n     */\n    setDefault: function(name, value) {\n      defaults[name] = value;\n    },\n\n    /**\n     * @param {String} name describes the name of the preference\n     */\n    getVal: function(name) {\n      if ( hasLocalStore ) {\n\tvar str;\n\n\tif ( (str = localStorage.getItem(name)) ) {\n\t  value = JSON.parse(str);\n\t  return value;\n\t}\n      }\n      return defaults[name];\n    }\n  }\n\n  function readNotAgain() {\n    var str = localStorage.getItem(\"notagain\") || \"[]\";\n    var notagain;\n\n    try {\n      data = JSON.parse(str);\n      if ( typeof(data) != \"object\" )\n\tdata = [];\n    } catch(err) {\n      data = [];\n    }\n\n    return data;\n  }\n\n  return preferences;\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2016, VU University Amsterdam\n\t\t\t CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n *\n * Manage hyper links.\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n */\n\ndefine('links',[\"jquery\", \"config\", \"modal\"],\n       function($, config, modal) {\n\n  var functions = {\n    /** Decode a PlDoc specification and, if valid, open the\n     * corresponding documentation.\n     * @arg {String} from The PlDoc specification.  Accepted if it\n     * is of the form `[.*:].*[/]/?\\d+`\n     * @return Boolean `true` if the string was recognised\n     */\n    PlDoc: function(from, ev) {\n      function parsePred(s) {\n\tvar pred = {};\n\tvar i;\n\n\tif ( (i=s.indexOf(\":\")) > 0 ) {\n\t  pred.module = s.substring(0,i);\n\t  s = s.slice(i+1);\n\t}\n\tif ( (i=s.indexOf(\"/\")) > 0 ) {\n\t  pred.name = s.substring(0,i);\n\t  if ( s.charAt(i+1) == '/' )\t/* name//arity is a non-terminal */\n\t    pred.arity = parseInt(s.slice(i+2))+2;\n\t  else\n\t    pred.arity = parseInt(s.slice(i+1));\n\n\t  if ( !isNaN(pred.arity) )\n\t    return pred;\n\t}\n      }\n\n      if ( from ) {\n\tvar pred = parsePred(decodeURIComponent(from));\n\n\tif ( pred ) {\n\t  $(ev.target).closest(\"#ajaxModal\").modal('hide');\n\t  $(\".swish-event-receiver\").trigger(\"pldoc\", pred);\n\t  ev.preventDefault();\n\n\t  return true;\n\t}\n      }\n\n      return false;\n    },\n\n    /**\n     * Run a link that refers to a cell. Such a link has a\n     * `data-query=name` attribute and optionally a number of\n     * `data-Var=Value` attributes. Because attributes are\n     * case-insensitive, `Var` is matched case-insensitive against\n     * variables from the query.\n     */\n    runQueryLink: function(a, ev) {\n      var nb    = a.closest(\".notebook\");\n      var qname = a.data(\"query\");\n      var cell  = nb.find('.nb-cell[name=\"'+qname+'\"]');\n\n      if ( cell ) {\n\tvar vars = $().prologEditor('variables', cell.nbCell('text'), true);\n\tvar bindings = \"\";\n\tvar options  = {};\n\tvar novars   = [];\n\n\tfunction isVar(k) {\n\t  for(var i=0; i<vars.length; i++) {\n\t    if ( vars[i].toLowerCase() == k.toLowerCase() )\n\t      return vars[i];\n\t  }\n\t  novars.push(k);\n\t}\n\n\t$.each(a.data(), function(k, v) {\n\t  var vr;\n\n\t  if ( k !== 'query' && (vr=isVar(k)) ) {\n\t    if ( bindings != \"\" )\n\t      bindings += \", \";\n\t    bindings += vr + \" = (\" + v + \")\";\n\t  }\n\t});\n\n\tif ( novars.length > 0 ) {\n\t  modal.feedback({\n\t    owner:    nb,\n\t    type:     \"warning\",\n\t    duration: 3000,\n\t    html:     \"The variables <b>\" + novars.join(\", \") + \"</b> do not appear in \" +\n\t\t      \"query <b>\" + qname + \"</b>\"\n\t  });\n\t}\n\n\tif ( bindings != \"\" )\n          options.bindings = bindings;\n\n\tcell.nbCell('run', options);\n      }\n    },\n\n    /**\n     * Follow a link from a markdown or HTML cell. This recognises links\n     * to internal SWISH objects and handles them using AJAX calls\n     * rather then opening a new page.  If the link is not recognised,\n     * it is opened on a new tab/page.  Recognised:\n     *\n     *  - class=\"store\" links open a gitty store element in a tab\n     *  - class=\"file\" links opens a file in a tab\n     *  - PlDoc links creates a modal dialog holding the documentation\n     *  - data-query=<query-name> runs a query.  data-<Var>=<Value>\n     *    binds variables.\n     *\n     * @param {Event} ev is the event to follow form\n     */\n    followLink: function(ev) {\n      var a = $(ev.target).closest(\"a\");\n      var done = false;\n\n      function accept() {\n\tdone = true;\n\tev.preventDefault();\n\n\t$(ev.target).closest(\"#ajaxModal\").modal('hide');\n      }\n\n      if ( a.attr(\"href\") ) {\n\tvar swishStore    = config.http.locations.swish + \"p/\";\n\tvar swishExamples = config.http.locations.swish + \"example/\";\n\tvar href\t  = a.attr(\"href\");\n\tvar modal;\n\n\tif ( href.startsWith(swishStore) && !href.match(/#/) ) {\n\t  accept();\n\t  file = href.slice(swishStore.length);\n\t  $(ev.target).closest(\".swish\").swish('playFile', file);\n\t} else if ( a.hasClass(\"store\") ) {\n\t  accept();\n\t  modal.alert(\"File does not appear to come from gitty store?\");\n\t} else if ( a.hasClass(\"file\") ||\n\t\t    (href.startsWith(swishExamples) && !href.match(/#/)) ) {\n\t  accept();\n\t  $(ev.target).closest(\".swish\")\n\t\t      .swish('playURL', {url: href});\n\t} else if ( a.hasClass(\"builtin\") && href.match(/predicate=/) ) {\n\t  done = functions.PlDoc(href.split(\"predicate=\").pop(), ev);\n\t} else if ( href.match(/object=/) ) {\n\t  done = functions.PlDoc(href.split(\"object=\").pop(), ev);\n\t} else if ( (modal=$(ev.target).closest(\"#ajaxModal\")).length == 1 &&\n\t\t    href.match(/#/) )\n\t{ var id = href.split(\"#\").pop();\n\t  var target;\n\n\t  if ( (target=modal.find(\"#\"+id)).length == 1 )\n\t  { done = true;\n\t    ev.preventDefault();\n\t    modal.animate({scrollTop: target.position().top}, 2000);\n\t  }\n\t}\n\n\tif ( !done ) {\n\t  ev.preventDefault();\n\t  window.open(href, '_blank');\n\t}\n      } else if ( a.data(\"query\") ) {\n\tfunctions.runQueryLink(a, ev);\n      }\n    }\n  }\n\n  return functions;\n});\n\n","// Laconic simplifies the generation of DOM content.\n(function(context) {\n\n  // properly-cased attribute names for IE setAttribute support\n  var attributeMap = {\n    'acceptcharset'     : 'acceptCharset',\n    'accesskey'         : 'accessKey',\n    'allowtransparency' : 'allowTransparency',\n    'bgcolor'           : 'bgColor',\n    'cellpadding'       : 'cellPadding',\n    'cellspacing'       : 'cellSpacing',\n    'class'             : 'className',\n    'classname'         : 'className',\n    'colspan'           : 'colSpan',\n    'csstext'           : 'style',\n    'defaultchecked'    : 'defaultChecked',\n    'defaultselected'   : 'defaultSelected',\n    'defaultvalue'      : 'defaultValue',\n    'for'               : 'htmlFor',\n    'frameborder'       : 'frameBorder',\n    'hspace'            : 'hSpace',\n    'htmlfor'           : 'htmlFor',\n    'longdesc'          : 'longDesc',\n    'maxlength'         : 'maxLength',\n    'marginwidth'       : 'marginWidth',\n    'marginheight'      : 'marginHeight',\n    'noresize'          : 'noResize',\n    'noshade'           : 'noShade',\n    'readonly'          : 'readOnly',\n    'rowspan'           : 'rowSpan',\n    'tabindex'          : 'tabIndex',\n    'valign'            : 'vAlign',\n    'vspace'            : 'vSpace'\n  };\n\n  // The laconic function serves as a generic method for generating\n  // DOM content, and also as a placeholder for helper functions.\n  //\n  // The first parameter MUST be a string specifying the element's \n  // tag name.  \n  // \n  // An optional object of element attributs may follow directly \n  // after the tag name.  \n  // \n  // Additional arguments will be considered children of the new \n  // element and may consist of elements, strings, or numbers.\n  // \n  // for example:\n  // laconic('div', {'class' : 'foo'}, 'bar');\n  function laconic() {\n\n    // create a new element of the requested type\n    var el = document.createElement(arguments[0]);\n    \n    // walk through the rest of the arguments\n    for(var i=1; i<arguments.length; i++) {\n      var arg = arguments[i];\n      if(arg === null || arg === undefined) continue;\n\n      // if the argument is a dom node, we simply append it\n      if(arg.nodeType === 1) {\n        el.appendChild(arg); \n      }\n\n      // if the argument is a string or a number, we append it as\n      // a new text node\n      else if(\n          (!!(arg === '' || (arg && arg.charCodeAt && arg.substr))) ||\n          (!!(arg === 0  || (arg && arg.toExponential && arg.toFixed)))) {\n\n        el.appendChild(document.createTextNode(arg));\n      }\n\n      // if the argument is a plain-old object, and we're processing the first \n      // argument, then we apply the object's values as element attributes\n      else if(i === 1 && typeof(arg) === 'object') {\n        for(var key in arg) {\n          if(arg.hasOwnProperty(key)) {\n            var value = arg[key];\n            if(value !== null && value !== undefined) {\n              key = key.toLowerCase();\n              key = attributeMap[key] || key;\n\n              // if the key represents an event (onclick, onchange, etc)\n              // we'll set the href to '#' if none is given, and we'll apply\n              // the attribute directly to the element for IE7 support.\n              var isEvent = key.charAt(0) === 'o' && key.charAt(1) === 'n';\n              if(isEvent) {\n                if(arg.href === undefined && key === 'onclick') {\n                  el.setAttribute('href', '#');\n                }\n                el[key] = value;\n              }\n\n              // if we're setting the style attribute, we may need to \n              // use the cssText property\n              else if(key === 'style' && el.style.setAttribute) {\n                el.style.setAttribute('cssText', value);\n              }\n\n              // if we're setting an attribute that's not properly supported \n              // by IE7's setAttribute implementation, then we apply the \n              // attribute directly to the element\n              else if(key === 'className' || key === 'htmlFor') {\n                el[key] = value;\n              }\n\n              // otherwise, we use the standard setAttribute\n              else {\n                el.setAttribute(key, value);\n              }\n            }\n          }\n        }\n      }\n\n      // if the argument is an array, we append each element\n      else if(Object.prototype.toString.call(arg) === '[object Array]') {\n        for(var j=0; j<arg.length; j++) {\n          var child = arg[j];\n          if(child.nodeType === 1) {\n            el.appendChild(child);\n          }\n        }\n      }\n    }\n\n    // Add an appendTo method to the newly created element, which will allow\n    // the DOM insertion to be method chained to the creation.  For example:\n    // $el.div('foo').appendTo(document.body);\n    el.appendTo = function(parentNode) {\n      if(parentNode.nodeType === 1 && this.nodeType === 1) {\n        parentNode.appendChild(this);\n      }\n      return this;\n    };\n    \n    return el;\n  }\n\n  // registers a new 'tag' that can be used to automate\n  // the creation of a known element hierarchy\n  laconic.registerElement= function(name, renderer) {\n    if(!laconic[name]) {\n      laconic[name] = function() {\n        var el = laconic('div', {'class' : name});\n        renderer.apply(el, Array.prototype.slice.call(arguments));\n        return el;\n      };\n    }\n  };\n\n  // html 4 tags \n  var deprecatedTags = ['acronym', 'applet', 'basefont', 'big', 'center', 'dir',\n    'font', 'frame', 'frameset', 'noframes', 'strike', 'tt', 'u', 'xmp'];\n\n  // html 5 tags\n  var tags = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b',\n    'base', 'bdo', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption',\n    'cite', 'code', 'col', 'colgroup', 'command', 'datalist', 'dd', 'del',\n    'details', 'dfn', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset',\n    'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5',\n    'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img',\n    'input', 'ins', 'keygen', 'kbd', 'label', 'legend', 'li', 'link', 'map',\n    'mark', 'menu', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol',\n    'optgroup', 'option', 'output', 'p', 'picture', 'param', 'pre', 'progress', \n    'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', \n    'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', \n    'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title',\n    'tr', 'ul', 'var', 'video', 'wbr'].concat(deprecatedTags);\n\n  // add our tag methods to the laconic object \n  var makeApply = function(tagName) {\n    return function() {\n      return laconic.apply(this, \n        [tagName].concat(Array.prototype.slice.call(arguments)));\n    };\n  };\n\n  for(var i=0; i<tags.length; i++) {\n    laconic[tags[i]] = makeApply(tags[i]);\n  }\n\n  // If we're in a CommonJS environment, we export our laconic methods\n  if(typeof module !== 'undefined' && module.exports) {\n    module.exports = laconic;\n  } \n\n  // otherwise, we attach them to the top level $.el namespace\n  else {\n    var dollar = context.$ || {};\n    dollar.el = laconic;\n    context.$ = dollar;\n  }\n}(this));\n\ndefine(\"laconic\", [\"jquery\"], function(){});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2016, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Show modal windows\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('modal',[ \"jquery\", \"config\", \"preferences\", \"links\", \"form\",\n\t \"laconic\", \"bootstrap\" ],\n       function($, config, preferences, links, form) {\n\n/* NOTE: form dependency is circular.  Form is initialized later. */\n\n(function($) {\n  var pluginName = 'swishModal';\n\n  /** @lends $.fn.modal */\n  var methods = {\n    /**\n     * Initialize the widget and listen for \"help\" events.\n     * @param {Object} options currently ignored\n     */\n    _init: function(options) {\n      return this.each(function() {\n\tvar elem = $(this);\n\n\telem.addClass(\"swish-event-receiver\");\n\telem.on(\"help\", function(ev, data) {\n\t  elem.swishModal('showHelp', data);\n\t});\n\telem.on(\"pldoc\", function(ev, data) {\n\t  elem.swishModal('showPlDoc', data);\n\t});\n\telem.on(\"form\", function(ev, data) {\n\t  elem.swishModal('showForm', data);\n\t});\n\telem.on(\"dialog\", function(ev, data) {\n\t  elem.swishModal('show', data);\n\t});\n\telem.on(\"error\", function(ev, data) { /* still needed? */\n\t  elem.swishModal('show', data);\n\t});\n\telem.on(\"alert\", function(ev, str) {\n\t  var icon = \"<span class='glyphicon glyphicon-warning-sign'></span>\";\n\t  elem.swishModal('show', {title: icon, body:str});\n\t});\n\telem.on(\"ajaxError\", function(ev, jqXHR) {\n\t  elem.swishModal('showAjaxError', jqXHR);\n\t});\n\telem.on(\"feedback\", function(ev, options) {\n\t  elem.swishModal('feedback', options);\n\t});\n\telem.on(\"show\", function(ev, options) {\n\t  elem.swishModal('show', options);\n\t});\n\telem.on(\"server_form\", function(ev, options) {\n\t  elem.swishModal('server_form', options);\n\t});\n      });\n    },\n\n    /**\n     * Show a help file.  The help file is a normal HTML document.  The\n     * `<title>` element is used for the title, while the `<body>`\n     * carries the content of the help file.\n     * @param {Object} options\n     * @param {String} options.file file help file.\n     * @param {String} options.notagain Identifier to stop this dialog\n     */\n    showHelp: function(options) {\n      var that = this;\n\n      if ( options.notagain && preferences.notagain(options.notagain) )\n\treturn;\n\n      $.ajax({ url: config.http.locations.help + \"/\" + options.file,\n\t       dataType: \"html\",\n\t       success: function(data) {\n\t\t var container = $(\"<div>\");\n\t\t container.html(data);\n\t\t that.swishModal('show',\n\t\t\t\t $.extend(\n\t\t\t\t   { title: container.find(\"title\").text(),\n\t\t\t\t     body:  container\n\t\t\t\t   }, options));\n\t       }\n             });\n    },\n\n    /**\n     * Show a form.  The form is an HTML document.\n     * @param {Object} options\n     * @param {String} options.file file help file.\n     * @param {String} options.notagain Identifier to stop this dialog\n     */\n    showForm: function(options) {\n      var that = this;\n\n      $.ajax({ url: config.http.locations.form + \"/\" + options.file,\n\t       dataType: \"html\",\n\t       success: function(data) {\n\t\t var container = $(\"<div>\");\n\t\t container.html(data);\n\t\t that.swishModal('show',\n\t\t\t\t $.extend(\n\t\t\t\t   { title: container.find(\"legend\").text(),\n\t\t\t\t     body:  container\n\t\t\t\t   }, options));\n\t       }\n             });\n    },\n\n    /** Show PlDoc manual page\n     * @param {Object} options\n     * @param {String} options.name is the name of the predicate to show\n     * @param {String} options.arity arity of the predicate\n     * @param {String} [options.module] module of the predicate\n     */\n    showPlDoc: function(options) {\n      function docURL(options) {\n\tvar term = \"(\"+options.name+\")/\"+options.arity;\n\tif ( options.module )\t\t\t/* FIXME: must be valid Prolog term */\n\t  term = options.module+\":\"+term;\n\treturn   config.http.locations.pldoc_doc_for\n\t       + \"?header=false&object=\"\n\t       + encodeURIComponent(term);\n      }\n\n      function docBody(content, url) {\n\tcontent.parents(\"div.modal-dialog\").addClass(\"swish-embedded-manual\");\n\treturn \"<iframe class='swish-embedded-manual' \" +\n\t\t       \"onload='javascript:resizeIframe(this);' \" +\n                       \"src='\"+url+\"'>\" +\n\t       \"</iframe>\";\n      }\n\n      var data = { title: \"SWI-Prolog manual\",\n                   body:  function() {\n\t\t     return docBody(this, docURL(options))\n\t\t   }\n                 };\n\n      return this.swishModal('show', data);\n    },\n\n    /**\n     * Show a modal dialog.\n     * @param {Object} options\n     * @param {String} options.title HTML rendered as title\n     * @param {String|function} options.body  If this is a string the\n     * content is set using `$.html()`, else the function is called,\n     * where `this` refers to the jQuery content element and the\n     * function result is added to the content using `$.append()`.\n     * @param {String} options.notagain Identifier to stop this dialog\n     * showing\n     * @param {function} [options.onclose] If present, call this\n     * function if the modal window is closed.\n     */\n    show: function(options) {\n      var content = $.el.div({class:\"modal-body\"});\n      var title   = $.el.h2();\n      var md      = $.el.div({class:\"modal-content\"},\n\t\t\t     $.el.div({class:\"modal-header\"},\n\t\t\t\t      notAgain(options),\n\t\t\t\t      closeButton(),\n\t\t\t\t      title),\n\t\t\t     content);\n      var modalel = $.el.div({class:\"modal fade\", id:\"ajaxModal\",\n\t\t\t      tabindex:-1, role:\"dialog\"\n\t\t\t     },\n\t\t\t     $.el.div({class:\"modal-dialog\"},\n\t\t\t\t      md));\n      if ( options.notagain && preferences.persistent() ) {\n\t$(md).append($.el.div(\n\t  {class:\"modal-footer\"},\n\t  notAgain(options)));\n      }\n      content = $(content);\n      if ( typeof(options.body) == \"function\" ) {\n\tvar c = options.body.call(content);\n\tif ( c )\n\t  content.append(c);\n      } else {\n\tcontent.html(options.body);\n      }\n      $(title).html(options.title);\n      $(modalel).modal({show: true})\n\t\t.on(\"click\", \"a\", links.followLink)\n\t        .on(\"shown.bs.modal\", initTagsManagers)\n\t        .on(\"hidden.bs.modal\", function() {\n\t\t  if ( options.onclose )\n\t\t    options.onclose();\n\t\t  $(this).remove();\n\t\t});\n\n      return this\n    },\n\n    /**\n     * Show a server-generated form and act on the buttons.\n     * @arg {Object} options\n     * @arg {String} options.url is the URL that generates the form\n     * content\n     * @arg {String} options.title sets the title of the form.\n     * @arg {Function} options.onreply is called after the form has\n     * been submitted.  `this` points at the submitting button and\n     * the first argument contains the server reply.\n     */\n\n    server_form: function(options) {\n      var modalel = $(this);\n\n      if ( form === undefined )\t\t\t/* circular dependency */\n\tform = require(\"form\");\n\n      return this.swishModal('show', {\n\ttitle: options.title,\n\tbody: function() {\n\t  elem = $(this);\n\t  $.ajax({ url: options.url,\n\t\t   data: options.data,\n\t\t   success: function(data) {\n\t\t     elem.append(data);\n\t\t   },\n\t\t   error: function(jqXHDR) {\n\t\t     modalel.swishModal('showAjaxError', jqXHDR);\n\t\t   }\n\t         });\n\n\t  elem.on(\"click\", \"button[data-action]\", function(ev) {\n\t    var formel = $(ev.target).closest(\"form\");\n\t    var data   = form.serializeAsObject(formel, true);\n\t    var button = $(ev.target).closest(\"button\");\n\n\t    if ( button.data(\"form_data\") == false ) {\n\t      $.ajax({ url: button.data(\"action\"),\n\t               success: function(obj) {\n\t\t\t button.closest(\".modal\").modal('hide');\n\t\t\t if ( options.onreply )\n\t\t\t   options.onreply.call(button[0], obj);\n\t\t\t ev.preventDefault();\n\t\t\t return false;\n\t\t       },\n\t\t       error: function(jqXHDR) {\n\t\t\t modalel.swishModal('showAjaxError', jqXHDR);\n\t\t       }\n\t      });\n\t    } else {\n\t      $.ajax({ url: button.data(\"action\"),\n\t\t       data: JSON.stringify(data),\n\t\t       dataType: \"json\",\n\t\t       contentType: \"application/json\",\n\t\t       type: \"POST\",\n\t\t       success: function(obj) {\n\t\t\t if ( obj.status == \"success\" ) {\n\t\t\t   button.closest(\".modal\").modal('hide');\n\t\t\t   if ( options.onreply )\n\t\t\t     options.onreply.call(button[0], obj);\n\t\t\t   ev.preventDefault();\n\t\t\t   return false;\n\t\t\t } else if ( obj.status == \"error\" ) {\n\t\t\t   form.formError(formel, obj.error);\n\t\t\t } else {\n\t\t\t   alert(\"Updated failed: \" +\n\t\t\t\t JSON.serializeAsObject(obj));\n\t\t\t }\n\t\t       },\n\t\t       error: function(jqXHDR) {\n\t\t\t modalel.swishModal('showAjaxError', jqXHDR);\n\t\t       }\n\t      });\n\t    }\n\n\t    ev.preventDefault();\n\t    return false;\n\t  });\n\t}\n      });\n    },\n\n    /**\n     * Display information about an ajax error\n     */\n    showAjaxError: function(jqXHR) {\n      var dom = $.el.div();\n\n      $(dom).html(jqXHR.responseText);\n      var h1 = $(dom).find(\"h1\");\n      var title = h1.text() || \"Server error\";\n      h1.remove();\n\n      var data = { title: title,\n\t\t   body: dom\n\t\t };\n\n      this.swishModal('show', data);\n    },\n\n    /**\n     * Display briefly a feedback message\n     * @param {Object} options\n     * @param {String} options.html defines the HTML content that is\n     * rendered.\n     * @param {Number} [options.duration=1500] number of milliseconds\n     * that the message is visible.\n     * @param {Object} [options.owner=$(\"body\")] is the DOM element to\n     * which the feedback window is added.\n     */\n    feedback: function(options) {\n      var win = $.el.div({class:\"feedback \"+options.type||\"\"});\n      $(win).html(options.html);\n\n      $(options.owner||\"body\").append(win);\n      setTimeout(function() {\n\t$(win).hide(400, function() {\n\t  $(win).remove();\n\t});\n      }, options.duration||1500);\n      return this;\n    }\n  }; // methods\n\n  function closeButton() {\n    var button = $.el.button({ type:\"button\", class:\"close\",\n\t\t\t       \"data-dismiss\":\"modal\"\n                             });\n    $(button)\n\t.html(\"&times;\")\n\t.on(\"click\", function(ev) {\n\t  ev.preventDefault();\n\t  $(ev.target).closest(\".modal\")\n\t              .find(\"[data-notagain]\")\n\t\t      .each(function() {\n\t    if ( $(this).prop(\"checked\") ) {\n\t      preferences.setNotAgain($(this).attr(\"data-notagain\"));\n\t      return false;\n\t    }\n\t  });\n\t});\n\n    return button;\n  }\n\n  function notAgain(options) {\n    if ( options.notagain && preferences.persistent() ) {\n      return $.el.label($.el.input({ type:\"checkbox\",\n\t\t\t\t     'data-notagain':options.notagain,\n\t\t\t\t     name:\"dismiss\"\n\t\t\t\t   }),\n\t\t\t\" Don't show again!\");\n    } else {\n      return \"\";\n    }\n  }\n\n  /**\n   * Tags managers must be initialised after the DOM is complete.\n   * This cooperates with `tagInput()` from `form.js`\n   */\n  function initTagsManagers() {\n    var set = $(this).find(\".tm-input\");\n\n    set.each(function() {\n      var elem = $(this);\n      var tags = elem.data(\"prefilled\");\n      var options = {};\n\n      if ( tags ) options.prefilled = tags;\n\n      elem.tagsManager(options);\n    });\n  }\n\n  /**\n   * See http://stackoverflow.com/questions/9975810/make-iframe-automatically-adjust-height-according-to-the-contents-without-using\n   */\n  window.resizeIframe = function(iframe) {\n    iframe.style.height = 0;\n    iframe.style.height = iframe.contentWindow.document.body.scrollHeight+20\n                          + 'px';\n  }\n\n  /**\n   * This class is a small layer around bootstrap $.modal that isolates\n   * us from bootstrap and provides most of the intermediate divs\n   * needed to create a nice modal window.  In addition, it listens to\n   * `\"help\"` events.\n   *\n   * @class swishModal\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.swishModal = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\n  return {\n    ajaxError: function(jqXHR) {\n      $(\".swish-event-receiver\").trigger(\"ajaxError\", jqXHR);\n    },\n    feedback: function(options) {\n      $(\".swish-event-receiver\").trigger(\"feedback\", options);\n    },\n    alert: function(options) {\n      $(\".swish-event-receiver\").trigger(\"alert\", options);\n    },\n    show: function(options) {\n      $(\".swish-event-receiver\").trigger(\"show\", options);\n    },\n    server_form: function(options) {\n      $(\".swish-event-receiver\").trigger(\"server_form\", options);\n    }\n  };\n});\n\n\n","/* ===================================================\n * tagmanager.js v3.0.1\n * http://welldonethings.com/tags/manager\n * ===================================================\n * Copyright 2012 Max Favilli\n *\n * Licensed under the Mozilla Public License, Version 2.0 You may not use this work except in compliance with the License.\n *\n * http://www.mozilla.org/MPL/2.0/\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ========================================================== */\n(function($) {\n\n    \"use strict\";\n\n    var defaults = {\n        prefilled: null,\n        CapitalizeFirstLetter: false,\n        preventSubmitOnEnter: true,     // deprecated\n        isClearInputOnEsc: true,        // deprecated\n        externalTagId: false,\n        prefillIdFieldName: 'Id',\n        prefillValueFieldName: 'Value',\n        AjaxPush: null,\n        AjaxPushAllTags: null,\n        AjaxPushParameters: null,\n        delimiters: [9, 13, 44],        // tab, enter, comma\n        backspace: [8],\n        maxTags: 0,\n        hiddenTagListName: null,        // deprecated\n        hiddenTagListId: null,          // deprecated\n        replace: true,\n        output: null,\n        deleteTagsOnBackspace: true,    // deprecated\n        tagsContainer: null,\n        tagCloseIcon: 'x',\n        tagClass: '',\n        validator: null,\n        onlyTagList: false,\n        tagList: null,\n        fillInputOnTagRemove: false\n    },\n\n    publicMethods = {\n        pushTag : function (tag, ignoreEvents, externalTagId) {\n            var $self = $(this), opts = $self.data('opts'), alreadyInList, tlisLowerCase, max, tagId,\n            tlis = $self.data(\"tlis\"), tlid = $self.data(\"tlid\"), idx, newTagId, newTagRemoveId, escaped,\n            html, $el, lastTagId, lastTagObj;\n\n            tag = privateMethods.trimTag(tag, opts.delimiterChars);\n\n            if (!tag || tag.length <= 0) { return; }\n\n            // check if restricted only to the tagList suggestions\n            if (opts.onlyTagList && undefined !== opts.tagList ){\n\n                //if the list has been updated by look pushed tag in the tagList. if not found return\n                if (opts.tagList){\n                    var $tagList = opts.tagList;\n\n                    // change each array item to lower case\n                    $.each($tagList, function(index, item) {\n                        $tagList[index] = item.toLowerCase();\n                    });\n                    var suggestion = $.inArray(tag.toLowerCase(), $tagList);\n\n                    if ( -1 === suggestion ) {\n                        //console.log(\"tag:\" + tag + \" not in tagList, not adding it\");\n                        return;\n                    } \n                }\n\n            }\n\n            if (opts.CapitalizeFirstLetter && tag.length > 1) {\n                tag = tag.charAt(0).toUpperCase() + tag.slice(1).toLowerCase();\n            }\n\n            // call the validator (if any) and do not let the tag pass if invalid\n            if (opts.validator && !opts.validator(tag)) {\n                $self.trigger('tm:invalid', tag)\n                return;\n            }\n\n            // dont accept new tags beyond the defined maximum\n            if (opts.maxTags > 0 && tlis.length >= opts.maxTags) { return; }\n\n            alreadyInList = false;\n            //use jQuery.map to make this work in IE8 (pure JS map is JS 1.6 but IE8 only supports JS 1.5)\n            tlisLowerCase = jQuery.map(tlis, function(elem) {\n                return elem.toLowerCase();\n            });\n\n            idx = $.inArray(tag.toLowerCase(), tlisLowerCase);\n\n            if (-1 !== idx) {\n                // console.log(\"tag:\" + tag + \" !!already in list!!\");\n                alreadyInList = true;\n            }\n\n            if (alreadyInList) {\n                $self.trigger('tm:duplicated', tag);\n                if (opts.blinkClass) {\n                    for (var i = 0; i < 6; ++i) {\n                        $(\"#\" + $self.data(\"tm_rndid\") + \"_\" + tlid[idx]).queue(function(next) {\n                            $(this).toggleClass(opts.blinkClass);\n                            next();\n                        }).delay(100);\n                    }\n                } else {\n                    $(\"#\" + $self.data(\"tm_rndid\") + \"_\" + tlid[idx]).stop()\n                        .animate({backgroundColor: opts.blinkBGColor_1}, 100)\n                        .animate({backgroundColor: opts.blinkBGColor_2}, 100)\n                        .animate({backgroundColor: opts.blinkBGColor_1}, 100)\n                        .animate({backgroundColor: opts.blinkBGColor_2}, 100)\n                        .animate({backgroundColor: opts.blinkBGColor_1}, 100)\n                        .animate({backgroundColor: opts.blinkBGColor_2}, 100);\n                }\n            } else {\n                if (opts.externalTagId === true) {\n                    if (externalTagId === undefined) {\n                        $.error('externalTagId is not passed for tag -' + tag);\n                    }\n                    tagId = externalTagId;\n                } else {\n                    max = Math.max.apply(null, tlid);\n                    max = max === -Infinity ? 0 : max;\n\n                    tagId = ++max;\n                }\n                if (!ignoreEvents) { $self.trigger('tm:pushing', [tag, tagId]); }\n                tlis.push(tag);\n                tlid.push(tagId);\n\n                if (!ignoreEvents)\n                    if (opts.AjaxPush !== null && opts.AjaxPushAllTags == null) {\n                        if ($.inArray(tag, opts.prefilled) === -1) {\n                            $.post(opts.AjaxPush, $.extend({tag: tag}, opts.AjaxPushParameters));\n                        }\n                    }\n\n                // console.log(\"tagList: \" + tlis);\n\n                newTagId = $self.data(\"tm_rndid\") + '_' + tagId;\n                newTagRemoveId = $self.data(\"tm_rndid\") + '_Remover_' + tagId;\n                escaped = $(\"<span/>\").text(tag).html();\n\n                html = '<span class=\"' + privateMethods.tagClasses.call($self) + '\" id=\"' + newTagId + '\">';\n                html+= '<span>' + escaped + '</span>';\n                html+= '<a href=\"#\" class=\"tm-tag-remove\" id=\"' + newTagRemoveId + '\" TagIdToRemove=\"' + tagId + '\">';\n                html+= opts.tagCloseIcon + '</a></span> ';\n                $el = $(html);\n\n                if (opts.tagsContainer !== null) {\n                    $(opts.tagsContainer).append($el);\n                } else {\n                    if (tlid.length > 1) {\n                        lastTagObj = $self.siblings(\"#\" + $self.data(\"tm_rndid\") + \"_\" + tlid[tlid.length - 2]);\n                        lastTagObj.after($el);\n                    } else {\n                        $self.before($el);\n                    }\n                }\n\n                $el.find(\"#\" + newTagRemoveId).on(\"click\", $self, function(e) {\n                    e.preventDefault();\n                    var TagIdToRemove = parseInt($(this).attr(\"TagIdToRemove\"));\n                    privateMethods.spliceTag.call($self, TagIdToRemove, e.data);\n                });\n\n                privateMethods.refreshHiddenTagList.call($self);\n\n                if (!ignoreEvents) { $self.trigger('tm:pushed', [tag, tagId]); }\n\n                privateMethods.showOrHide.call($self);\n                //if (tagManagerOptions.maxTags > 0 && tlis.length >= tagManagerOptions.maxTags) {\n                //  obj.hide();\n                //}\n            }\n            $self.val(\"\");\n        },\n\n        popTag : function () {\n            var $self = $(this), tagId, tagBeingRemoved,\n            tlis = $self.data(\"tlis\"),\n            tlid = $self.data(\"tlid\");\n\n            if (tlid.length > 0) {\n              tagId = tlid.pop();\n\n              tagBeingRemoved = tlis[tlis.length - 1];\n              $self.trigger('tm:popping', [tagBeingRemoved, tagId]);\n              tlis.pop();\n\n              // console.log(\"TagIdToRemove: \" + tagId);\n              $(\"#\" + $self.data(\"tm_rndid\") + \"_\" + tagId).remove();\n              privateMethods.refreshHiddenTagList.call($self);\n              $self.trigger('tm:popped', [tagBeingRemoved, tagId]);\n              // console.log(tlis);\n            }\n        },\n\n        empty : function() {\n            var $self = $(this), tlis = $self.data(\"tlis\"), tlid = $self.data(\"tlid\"), tagId;\n\n            while (tlid.length > 0) {\n                tagId = tlid.pop();\n                tlis.pop();\n                // console.log(\"TagIdToRemove: \" + tagId);\n                $(\"#\" + $self.data(\"tm_rndid\") + \"_\" + tagId).remove();\n                privateMethods.refreshHiddenTagList.call($self);\n                // console.log(tlis);\n            }\n            $self.trigger('tm:emptied', null);\n\n            privateMethods.showOrHide.call($self);\n            //if (tagManagerOptions.maxTags > 0 && tlis.length < tagManagerOptions.maxTags) {\n            //  obj.show();\n            //}\n        },\n\n        tags : function() {\n            var $self = this, tlis = $self.data(\"tlis\");\n            return tlis;\n        }\n    },\n\n    privateMethods = {\n        showOrHide : function () {\n            var $self = this, opts = $self.data('opts'), tlis = $self.data(\"tlis\");\n\n            if (opts.maxTags > 0 && tlis.length < opts.maxTags) {\n                $self.show();\n                $self.trigger('tm:show');\n            }\n\n            if (opts.maxTags > 0 && tlis.length >= opts.maxTags) {\n                $self.hide();\n                $self.trigger('tm:hide');\n            }\n        },\n\n        tagClasses : function () {\n            var $self = $(this), opts = $self.data('opts'), tagBaseClass = opts.tagBaseClass,\n            inputBaseClass = opts.inputBaseClass, cl;\n            // 1) default class (tm-tag)\n            cl = tagBaseClass;\n            // 2) interpolate from input class: tm-input-xxx --> tm-tag-xxx\n            if ($self.attr('class')) {\n                $.each($self.attr('class').split(' '), function (index, value) {\n                    if (value.indexOf(inputBaseClass + '-') !== -1) {\n                        cl += ' ' + tagBaseClass + value.substring(inputBaseClass.length);\n                    }\n                });\n            }\n            // 3) tags from tagClass option\n            cl += (opts.tagClass ? ' ' + opts.tagClass : '');\n            return cl;\n        },\n\n        trimTag : function (tag, delimiterChars) {\n            var i;\n            tag = $.trim(tag);\n            // truncate at the first delimiter char\n            i = 0;\n            for (i; i < tag.length; i++) {\n                if ($.inArray(tag.charCodeAt(i), delimiterChars) !== -1) { break; }\n            }\n            return tag.substring(0, i);\n        },\n\n        refreshHiddenTagList : function () {\n            var $self = $(this), tlis = $self.data(\"tlis\"), lhiddenTagList = $self.data(\"lhiddenTagList\");\n\n            if (lhiddenTagList) {\n                $(lhiddenTagList).val(tlis.join($self.data('opts').baseDelimiter)).change();\n            }\n\n            $self.trigger('tm:refresh', tlis.join($self.data('opts').baseDelimiter));\n        },\n\n        killEvent : function (e) {\n            e.cancelBubble = true;\n            e.returnValue = false;\n            e.stopPropagation();\n            e.preventDefault();\n        },\n\n        keyInArray : function (e, ary) {\n            return $.inArray(e.which, ary) !== -1;\n        },\n\n        applyDelimiter : function (e) {\n            var $self = $(this);\n            publicMethods.pushTag.call($self,$(this).val());\n            e.preventDefault();\n        },\n\n        prefill: function (pta) {\n            var $self = $(this);\n            var opts = $self.data('opts')\n            $.each(pta, function (key, val) {\n                if (opts.externalTagId === true) {\n                    publicMethods.pushTag.call($self, val[opts.prefillValueFieldName], true, val[opts.prefillIdFieldName]);\n                } else {\n                    publicMethods.pushTag.call($self, val, true);\n                }\n            });\n        },\n\n        pushAllTags : function (e, tag) {\n            var $self = $(this), opts = $self.data('opts'), tlis = $self.data(\"tlis\");\n            if (opts.AjaxPushAllTags) {\n                if (e.type !== 'tm:pushed' || $.inArray(tag, opts.prefilled) === -1) {\n                    $.post(opts.AjaxPush, $.extend({ tags: tlis.join(opts.baseDelimiter) }, opts.AjaxPushParameters));\n                }\n            }\n        },\n\n        spliceTag : function (tagId) {\n            var $self = this, tlis = $self.data(\"tlis\"), tlid = $self.data(\"tlid\"), idx = $.inArray(tagId, tlid),\n            tagBeingRemoved;\n\n            // console.log(\"TagIdToRemove: \" + tagId);\n            // console.log(\"position: \" + idx);\n\n            if (-1 !== idx) {\n                tagBeingRemoved = tlis[idx];\n                $self.trigger('tm:splicing', [tagBeingRemoved, tagId]);\n                $(\"#\" + $self.data(\"tm_rndid\") + \"_\" + tagId).remove();\n                tlis.splice(idx, 1);\n                tlid.splice(idx, 1);\n                privateMethods.refreshHiddenTagList.call($self);\n                $self.trigger('tm:spliced', [tagBeingRemoved, tagId]);\n                // console.log(tlis);\n            }\n\n            privateMethods.showOrHide.call($self);\n            //if (tagManagerOptions.maxTags > 0 && tlis.length < tagManagerOptions.maxTags) {\n            //  obj.show();\n            //}\n        },\n\n        init : function (options) {\n            var opts = $.extend({}, defaults, options), delimiters, keyNums;\n\n            opts.hiddenTagListName = (opts.hiddenTagListName === null)\n                ? 'hidden-' + this.attr('name')\n                : opts.hiddenTagListName;\n\n            delimiters = opts.delimeters || opts.delimiters; // 'delimeter' is deprecated\n            keyNums = [9, 13, 17, 18, 19, 37, 38, 39, 40]; // delimiter values to be handled as key codes\n            opts.delimiterChars = [];\n            opts.delimiterKeys = [];\n\n            $.each(delimiters, function (i, v) {\n                if ($.inArray(v, keyNums) !== -1) {\n                    opts.delimiterKeys.push(v);\n                } else {\n                    opts.delimiterChars.push(v);\n                }\n            });\n\n            opts.baseDelimiter = String.fromCharCode(opts.delimiterChars[0] || 44);\n            opts.tagBaseClass = 'tm-tag';\n            opts.inputBaseClass = 'tm-input';\n\n            if (!$.isFunction(opts.validator)) { opts.validator = null; }\n\n            this.each(function() {\n                var $self = $(this), hiddenObj ='', rndid ='', albet = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\";\n\n                // prevent double-initialization of TagManager\n                if ($self.data('tagManager')) { return false; }\n                $self.data('tagManager', true);\n\n                for (var i = 0; i < 5; i++) {\n                  rndid += albet.charAt(Math.floor(Math.random() * albet.length));\n                }\n\n                $self.data(\"tm_rndid\", rndid);\n\n                // store instance-specific data in the DOM object\n                $self.data('opts',opts)\n                    .data('tlis', []) //list of string tags\n                    .data('tlid', []); //list of ID of the string tags\n\n                if (opts.output === null) {\n                    hiddenObj = $('<input/>', {\n                        type: 'hidden',\n                        name: opts.hiddenTagListName\n                    });\n                    $self.after(hiddenObj);\n                    $self.data(\"lhiddenTagList\", hiddenObj);\n                } else {\n                    $self.data(\"lhiddenTagList\", $(opts.output));\n                }\n\n                if (opts.AjaxPushAllTags) {\n                    $self.on('tm:spliced', privateMethods.pushAllTags);\n                    $self.on('tm:popped', privateMethods.pushAllTags);\n                    $self.on('tm:pushed', privateMethods.pushAllTags);\n                }\n\n                // hide popovers on focus and keypress events\n                $self.on('focus keypress', function(e) {\n                    if ($(this).popover) { $(this).popover('hide'); }\n                });\n\n                // handle ESC (keyup used for browser compatibility)\n                if (opts.isClearInputOnEsc) {\n                    $self.on('keyup', function(e) {\n                        if (e.which === 27) {\n                            // console.log('esc detected');\n                            $(this).val('');\n                            privateMethods.killEvent(e);\n                        }\n                    });\n                }\n\n                $self.on('keypress', function(e) {\n                    // push ASCII-based delimiters\n                    if (privateMethods.keyInArray(e, opts.delimiterChars)) {\n                        privateMethods.applyDelimiter.call($self, e);\n                    }\n                });\n\n                $self.on('keydown', function(e) {\n                    // disable ENTER\n                    if (e.which === 13) {\n                        if (opts.preventSubmitOnEnter) {\n                            privateMethods.killEvent(e);\n                        }\n                    }\n\n                    // push key-based delimiters (includes <enter> by default)\n                    if (privateMethods.keyInArray(e, opts.delimiterKeys)) {\n                        privateMethods.applyDelimiter.call($self, e);\n                    }\n                });\n\n                // BACKSPACE (keydown used for browser compatibility)\n                if (opts.deleteTagsOnBackspace) {\n                    $self.on('keydown', function(e) {\n                        if (privateMethods.keyInArray(e, opts.backspace)) {\n                            // console.log(\"backspace detected\");\n                            if ($(this).val().length <= 0) {\n                                publicMethods.popTag.call($self);\n                                privateMethods.killEvent(e);\n                            }\n                        }\n                    });\n                }\n\n                // on tag pop fill back the tag's content to the input field\n                if (opts.fillInputOnTagRemove) {\n                    $self.on('tm:popped', function(e, tag) {\n                        $(this).val(tag);\n                    });\n                }\n\n                $self.change(function(e) {\n                    if (!/webkit/.test(navigator.userAgent.toLowerCase())) {\n                        $self.focus();\n                    } // why?\n\n                    /* unimplemented mode to push tag on blur\n                     else if (tagManagerOptions.pushTagOnBlur) {\n                     console.log('change: pushTagOnBlur ' + tag);\n                     pushTag($(this).val());\n                     } */\n                    privateMethods.killEvent(e);\n                });\n\n                if (opts.prefilled !== null) {\n                    if (typeof (opts.prefilled) === \"object\") {\n                        privateMethods.prefill.call($self, opts.prefilled);\n                    } else if (typeof (opts.prefilled) === \"string\") {\n                        privateMethods.prefill.call($self, opts.prefilled.split(opts.baseDelimiter));\n                    } else if (typeof (opts.prefilled) === \"function\") {\n                        privateMethods.prefill.call($self, opts.prefilled());\n                    }\n                } else if (opts.output !== null) {\n                    if ($(opts.output) && $(opts.output).val()) { var existing_tags = $(opts.output); }\n                    privateMethods.prefill.call($self,$(opts.output).val().split(opts.baseDelimiter));\n                }\n\n            });\n\n            return this;\n        }\n    };\n\n    $.fn.tagsManager = function(method) {\n        var $self = $(this);\n\n        if (!(0 in this)) { return this; }\n\n        if ( publicMethods[method] ) {\n            return publicMethods[method].apply( $self, Array.prototype.slice.call(arguments, 1) );\n        } else if ( typeof method === 'object' || ! method ) {\n            return privateMethods.init.apply( this, arguments );\n        } else {\n            $.error( 'Method ' +  method + ' does not exist.' );\n            return false;\n        }\n    };\n\n}(jQuery));\n\ndefine(\"tagmanager\", [\"jquery\"], function(){});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2017, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n *\n * RequireJS module providing some general support methods for handling\n * forms and functions to build Bootstrap forms easily.\n *\n * @version 0.1.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('form',[ \"jquery\", \"config\", \"modal\", \"laconic\", \"tagmanager\" ],\n       function($, config, modal) {\n\n  var LABELWIDTH = 3;\n\n  var form = {\n    /**\n     * Serialize a form as an object. The following normalizations are\n     * performed:\n     *   - Form fields that have an empty string are ignored unless\n     *     `ignore_empty` is `true`\n     *   - The value from a `<input type=\"checkbox\">`is converted\n     *     into a JavaScript boolean.\n     *\t - The value of a tag-list is converted into a list of strings.\n     * @returns {Object} holding the name/value pairs of the form\n     */\n    serializeAsObject: function(form, ignore_empty) {\n      var arr = form.serializeArray();\n      var inset = [];\n      var obj = {};\n\n      // get arrays of checkboxes\n      form.find(\"div.checkboxes.array\").each(function() {\n\tvar elem = $(this);\n\tvar set = [];\n\n\telem.find(\"input:checked\").each(function() {\n\t  var name = $(this).attr(\"name\");\n\t  set.push(name);\n\t});\n\telem.find(\"input\").each(function() {\n\t  var name = $(this).attr(\"name\");\n\t  inset.push(name);\n\t});\n\n\tobj[elem.attr(\"name\")] = set;\n      });\n\n      for(var i=0; i<arr.length; i++) {\n\tvar name  = arr[i].name;\n\tvar value = arr[i].value;\n\tvar input = form.find('[name=\"'+name+'\"]');\n\tvar type  = input.prop(\"type\");\n\tvar jvalue;\n\n\tif ( (jvalue = input.data('json-value')) ) {\n\t  obj[name] = jvalue;\n\t} else if ( value != \"\" || ignore_empty == true ) {\n\t  // deal with tag lists\n\t  if ( type == \"hidden\" && name.indexOf(\"hidden-\") == 0 ) {\n\t    name = name.slice(\"hidden-\".length);\n\t    if ( obj[name] == undefined ) {\n\t      obj[name] = value.split(\",\");\n\t    } else {\n\t      obj[name] = value.split(\",\").concat(obj[name]);\n\t    }\n\t  } else if ( type == \"text\" && input.hasClass(\"tag-list\") ) {\n\t    if ( value != \"\" ) {\n\t      if ( obj[name] !== undefined )\n\t\tobj[name].push(value);\n\t      else\n\t\tobj[name] = [value];\n\t    }\n\t  } else if ( type == \"number\" ) {\n\t    obj[name] = parseInt(value);\n\t  } else if ( type == \"checkbox\" ) {\n\t    if ( inset.indexOf(name) == -1 )\n\t      obj[name] = (value == \"on\" ? true : false);\n\t  } else {\n\t    obj[name] = value;\n\t  }\n\t}\n      }\n\n      // unchecked checkboxes are not reported\n      form.find(\"[type=checkbox]\").each(function() {\n\tvar checkbox = $(this);\n\tvar name = checkbox.prop('name');\n\tif ( checkbox.prop(\"disabled\") != true &&\n\t     obj[name] === undefined &&\n\t     inset.indexOf(name) == -1 )\n\t  obj[name] = false;\n      });\n\n      return obj;\n    },\n\n    /**\n     * Provide feedback about problems with form elements\n     * @param form is the form to decorate\n     * @param error is a pengine error message created by lib/form.pl\n     */\n\n    formError: function(formel, error) {\n      formel.find(\".has-error\").removeClass(\"has-error\");\n      formel.find(\".help-block.with-errors\").remove();\n\n      if ( error ) {\n\tif ( error.code == \"form_error\" || error.code == \"input_error\" ) {\n\t  errors = error.data.split(\"\\n\");\n\t  for(var i=0; i<errors.length; i++) {\n\t    var el = errors[i].split(/:\\s*(.*)?/);\n\n\t    form.fieldError(formel, el[0], el[1]);\n\t  }\n\t} else\n\t{ modal.alert(error.data);\n\t}\n      }\n    },\n\n    fieldError: function(form, field, msg) {\n      var input = form.find(\"input[name=\"+field+\"]\");\n\n      if ( input.length > 0 ) {\n\tvar group = input.closest(\".form-group\");\n\n\tif ( input.parent().hasClass(\"input-group\") )\n\t  input = input.parent();\n\n\tgroup.addClass(\"has-error\");\n\tinput.after($.el.p({class:\"help-block with-errors\"}, msg));\n      } else\n      { alert(\"Missing value for \"+field);\n      }\n    },\n\n    showDialog: function(data) {\n      $(\".swish-event-receiver\").trigger(\"dialog\", data);\n    },\n\n    /**\n     * Invoke the central broadcasting of SWISH\n     * @param {String} event is the event name\n     * @param {any} [data] is the associated data\n     */\n    formBroadcast: function(event, data) {\n      $(\".swish-event-receiver\").trigger(event, data);\n    },\n\n    fields: {\n      fileName: function(name, public, example, disabled) {\n\tvar labeltext = config.swish.community_examples ? \"Public | Example | name\" : \"Public | name\"\n\tvar empty = \"(leave empty for generated random name)\"\n\tvar fork, input;\n        var elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(\"name\", labeltext),\n\t\t $.el.div({class:valgridw()},\n\t\t\t  $.el.div({class:\"input-group\"},\n\t\t\t\t   $.el.span({class:\"input-group-addon\",\n\t\t\t\t              title:\"If checked, other users can find this program\"\n\t\t\t\t             },\n\t\t\t\t\t     checkbox(\"public\",\n\t\t\t\t\t\t      { checked: public\n\t\t\t\t\t\t      })),\n\t\t\t\t   config.swish.community_examples ?\n\t\t\t\t   $.el.span({class:\"input-group-addon\",\n\t\t\t\t              title:\"If checked, add to examples menu\"\n\t\t\t\t             },\n\t\t\t\t\t     checkbox(\"example\",\n\t\t\t\t\t\t      { checked: example\n\t\t\t\t\t\t      })) : undefined,\n\t\t\t   input = textInput(\"name\",\n\t\t\t\t\t     {placeholder:\"Name \" + empty,\n\t\t\t\t\t      title:\"Public name of your program\",\n\t\t\t\t\t      value:name,\n\t\t\t\t\t      disabled:disabled}),\n\t\t\t    fork = $.el.span({class:\"input-group-btn\"\n\t\t\t\t             },\n\t\t\t\t\t     $.el.button({ class: \"btn btn-success\",\n\t\t\t\t\t\t\t   type: \"button\"\n\t\t\t\t\t\t\t }, \"Fork\"))\n\t\t\t\t  )));\n\t$(fork).on(\"click\", function() {\n\t  var btn = $(input).closest(\"form\").find(\".btn.btn-primary\");\n\t  $(input).attr(\"placeholder\", \"Fork as \" + empty);\n\t  $(input).val(\"\");\n\t  btn.text(btn.text().replace(\"Update\", \"Fork\"));\n\t});\n\treturn elem;\n      },\n\n      title: function(title) {\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(\"title\", \"Title\"),\n\t\t $.el.div({class:valgridw()},\n\t\t\t  textInput(\"title\",\n\t\t\t\t    {placeholder:\"Descriptive title\",\n\t\t\t\t     value:title})));\n\treturn elem;\n      },\n\n      /**\n       * @param {String} [identity] if provided, this indicates that the\n       * author cannot be changed.\n       */\n      author: function(author, identity) {\n\tvar options = { placeholder:\"Your name\", value:author };\n\n\tif ( author && identity ) {\n\t  options.readonly = true;\n\t  options.title    = \"Verified author name\";\n\t}\n\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(\"author\", \"Author\"),\n\t\t $.el.div({class:valgridw()},\n\t\t\t  textInput(\"author\", options)));\n\treturn elem;\n      },\n\n      date: function(stamp, labels, name) {\n\tname = name||label;\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(name, labels),\n\t\t $.el.div({class:valgridw()},\n\t\t\t  textInput(name,\n\t\t\t\t    {disabled: true,\n\t\t\t\t     value:new Date(stamp*1000).toLocaleString()\n\t\t\t\t    })));\n\treturn elem;\n      },\n\n      description: function(description) {\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(\"description\", \"Description\"),\n\t\t $.el.div({class:valgridw()},\n\t\t\t  textarea(\"description\", {value:description})));\n\treturn elem;\n      },\n\n      commit_message: function(msg) {\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(\"commit_message\", \"Changes\"),\n\t\t $.el.div({class:valgridw()},\n\t\t\t  textarea(\"commit_message\",\n\t\t\t\t   { value:msg,\n\t\t\t\t     placeholder:\"Describe your changes here\"\n\t\t\t\t   })));\n\treturn elem;\n      },\n\n      tags: function(tags) {\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(\"tags\", \"Tags\"),\n\t\t $.el.div({class:valgridw()},\n\t\t\t  tagInput(\"tags\", \"Tags help finding this code\", tags)));\n\treturn elem;\n      },\n\n      /**\n       * Provide checkboxes for determining who may save a new version\n       * of this file\n       */\n      modify: function(who, canmodify) {\n\tvar fields = [];\n\tvar opts = { name:\"modify\", label:\"Can save new version\",\n\t\t     type:\"array\"\n\t\t   };\n\n\tfunction add(key, label) {\n\t  fields.push({ name:key,\n\t\t\tlabel:label,\n\t\t\tvalue:who.indexOf(key) != -1,\n\t\t\treadonly: !canmodify\n\t\t      });\n\t}\n\n\tadd(\"any\",   \"Anyone\");\n\tadd(\"login\", \"Logged in users\");\n\tadd(\"owner\", \"Only me\");\n\n\tif ( !canmodify )\n\t  opts.title = \"Only logged in users and owners can set permissions\";\n\telse\n\t  opts.title = \"Specify who can save an updated version of this file\";\n\n\treturn form.fields.checkboxes(fields, opts);\n      },\n\n      follow: function(email) {\n\treturn form.fields.checkboxes(\n\t\t [ { name: \"follow\", label: \"Follow this document\",\n\t\t     value:!!email, readonly:!email\n\t\t   }\n\t\t ],\n\t\t { name:\"options\", label:\"\",\n\t\t   title: \"Notify about activity (updates, chat)\\n\"+\n\t\t\t  \"Requires being logged in with valid email\"\n\t\t });\n      },\n\n      projection: function(projection) {\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(\"projection\", \"Projection\"),\n\t\t $.el.div({class:valgridw()},\n\t\t\t  textInput(\"projection\",\n\t\t\t\t    {placeholder:\"Columns\", value:projection})));\n\treturn elem;\n      },\n\n      csvFormat: function(list, format) {\n\tvar elem;\n\n\tlist = list||[\"prolog\"];\n\tformat = format||list[0];\n\n\tif ( list.length == 1 ) {\n\t  elem = $.el.input({type:\"hidden\", name:\"format\", value:list[0]});\n\t} else {\n\t  elem = $.el.div({class:\"form-group\"},\n\t\t\t  label(\"format\", \"Format\"),\n\t\t\t  $.el.div({class:valgridw()},\n\t\t\t\t   select(\"format\",\n\t\t\t\t\t  list,\n\t\t\t\t\t  {value:format})));\n\t}\n\n\treturn elem;\n      },\n\n      /**\n       * Ask for limit and distinct to modify the solution set.\n       * @param {Number} [limit] is the max number of solutions to\n       * return\n       * @param {Boolean} [distinct] requests only to return distinct\n       * solutions.\n       */\n      limit: function(limit, distinct) {\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(\"name\", \"Distinct | limit\"),\n\t\t $.el.div({class:valgridw()},\n\t\t\t  $.el.div({class:\"input-group\"},\n\t\t\t\t   $.el.span({class:\"input-group-addon\",\n\t\t\t\t              title:\"If checked only return distinct results\"\n\t\t\t\t             },\n\t\t\t\t\t     checkbox(\"distinct\",\n\t\t\t\t\t\t      { checked: distinct\n\t\t\t\t\t\t      })),\n\t\t\t\t   textInput(\"limit\",\n\t\t\t\t\t     {placeholder:\"Maximum result count (blank for unlimited)\",\n\t\t\t\t\t      title:\"Limit results\",\n\t\t\t\t\t      value:limit}))));\n\treturn elem;\n      },\n\n      /**\n       * @param {Array} boxes is a list of checkbox specifications.\n       * Uses .name, .label, .value (Boolean) and .readonly\n       */\n      checkboxes: function(boxes, options) {\n\tvar boxel;\n\n\toptions = $.extend({name:\"options\", label:\"Options\", col:LABELWIDTH},\n\t\t\t   options||{});\n\n\tvar dopts = { class: \"checkboxes col-xs-\"+(12-options.col),\n\t              name:  options.name\n\t\t    };\n\tif ( options.title ) dopts.title = options.title;\n\tif ( options.type  ) dopts.class += \" \"+options.type;\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(options.name, options.label, options.col),\n\t\t boxel = $.el.div(dopts));\n\n\tfor(var k=0; k<boxes.length; k++) {\n\t  var box = boxes[k];\n\t  var opts = {type: \"checkbox\", name:box.name, autocomplete:\"false\"};\n\t  if ( box.value )\n\t    opts.checked = \"checked\";\n\t  if ( box.readonly )\n\t    opts.disabled = \"disabled\";\n\t  $(boxel).append($.el.label({class:\"checkbox-inline\"},\n\t\t\t\t     $.el.input(opts), box.label));\n\t}\n\n\treturn elem;\n      },\n\n      chunk: function(value) {\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(\"count\", \"Initial solutions\", 3),\n\t\t $.el.div({class:\"col-xs-9\"},\n\t\t\t  $.el.div({class:\"input-group\"},\n\t\t\t\t   textInput(\"chunk\",\n\t\t\t\t\t     { title:\"Initial number of solutions\",\n\t\t\t\t\t       type:\"number\",\n\t\t\t\t\t       value:value}))));\n\treturn elem;\n      },\n\n      name: function(name, col) {\n\tcol = col||3;\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(\"name\", \"Name\", col),\n\t\t $.el.div({class:\"col-xs-\"+(12-col)},\n\t\t\t  textInput(\"name\",\n\t\t\t\t    {placeholder:\"Name\",\n\t\t\t\t     value:name})));\n\treturn elem;\n      },\n\n      filename: function(name, col) {\n\tcol = col||3;\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(\"filename\", \"File name\", col),\n\t\t $.el.div({class:\"col-xs-\"+(12-col)},\n\t\t\t  textInput(\"filename\",\n\t\t\t\t    {placeholder:\"File name\",\n\t\t\t\t     value:name})));\n\treturn elem;\n      },\n\n      hidden: function(name, value) {\n\tif ( value !== undefined )\n\t  return $.el.input({type:\"hidden\", name:name, value:value});\n      },\n\n      /**\n       * @param {Object} options\n       * @param {String} options.label is the label used for the\n       * primary button.\n       * @param {Function} options.action is called with two arguments,\n       * the _event_ and the serialized data from the embedded form\n       * @param {Number} options.offset determines the begin column in\n       * the grid (default 2)\n       */\n      buttons: function(options) {\n\toptions    = options||{};\n\tvar label  = options.label||\"Save program\";\n\tvar offset = options.offset||LABELWIDTH;\n\tvar button = $.el.button({ name:\"save\",\n\t\t\t\t   class:\"btn btn-primary\"\n\t\t\t\t },\n\t\t\t\t label);\n\n\t$(button).on(\"click\", function(ev) {\n\t  var elem = $(ev.target).parents(\"form\")[0];\n\t  var data = form.serializeAsObject($(elem));\n\n\t  options.action(ev, data);\n\t  $(ev.target).parents(\".modal\").modal('hide');\n\t  ev.preventDefault();\n\t  return false;\n\t});\n\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t $.el.div({class:\"col-xs-offset-\"+offset+\" col-xs-\"+(12-offset)},\n\t\t\t  button,\n\t\t\t  $.el.button({name:\"cancel\",\n\t\t\t\t       class:\"btn btn-danger\",\n\t\t\t\t       'data-dismiss':\"modal\"},\n\t\t\t\t      \"Cancel\")));\n\treturn elem;\n      },\n\n      /**\n       * Bootstrap radio button.  To get the value, use\n       * `$(\"label.active > input[name=Name]\").val();\n       * @param {String} name is the name of the radio button\n       * @param {Array(Object)} buttons is an array of objects with\n       * .active, .label and .value\n       */\n      radio: function(name, buttons, type) {\n\tvar elem = $.el.div({class:\"btn-group\", \"data-toggle\":\"buttons\"});\n\ttype = type||\"radio\"\n\n\tfor(var i=0; i<buttons.length; i++) {\n\t  var cls = \"btn btn-default btn-xs\";\n\t  if ( buttons[i].active )\n\t    cls += \" active\";\n\n\t  var opts = { type:type, name:name,\n\t               autocomplete:\"off\",\n\t\t       value:buttons[i].value\n\t\t     };\n\t  var lblopts = {class:cls};\n\t  if ( buttons[i].title )\n\t    lblopts.title = buttons[i].title;\n\t  $(elem).append($.el.label(lblopts,\n\t\t\t\t    $.el.input(opts),\n\t\t\t\t    buttons[i].label));\n\t}\n\n        return elem;\n      }\n    },\n\n    widgets: {\n      glyphIcon: function(glyph) {\n\treturn $.el.span({class:\"glyphicon glyphicon-\"+glyph});\n      },\n\n      typeIcon: function(type) {\n\treturn $.el.span({class:\"dropdown-icon type-icon \"+type});\n      },\n\n      glyphIconButton: function(glyph, options) {\n\tvar attrs = {class:\"btn\", type:\"button\"};\n\n\tif ( options.action ) attrs['data-action'] = options.action;\n\tif ( options.title )  attrs.title          = options.title;\n\tif ( options.class )  attrs.class\t  += \" \"+options.class;\n\n\treturn $.el.button(attrs, form.widgets.glyphIcon(glyph));\n      },\n\n      /**\n       * Turn an icon into a dropdown button.\n       * @param {Object} options\n       * @param {Any}\t options.client is the `this` for the menu\n       *\t\t functions.\n       * @param {String} [options.divClass] additional class for the\n       * returned `div` element\n       * @param {String} [options.ulClass] additional class for the\n       * `ul` element that defines the menu.\n       * @param {Object} [options.actions] defines the menu items.\n       * this is passed to populateMenu()\n       * @returns {DIV} the downdown button\n       */\n      dropdownButton: function(icon, options) {\n\tif ( !options ) options = {};\n\tvar cls     = options.divClass;\n\tvar ulClass = options.ulClass;\n\n\tvar dropdown = $.el.div(\n\t  {class: \"btn-group dropdown\"+(cls?\" \"+cls:\"\")},\n\t  $.el.button(\n\t    {class:\"dropdown-toggle\",\n\t     \"data-toggle\":\"dropdown\"},\n\t    icon),\n\t  $.el.ul({class:\"dropdown-menu\"+(ulClass?\" \"+ulClass:\"\")}));\n\n\tif ( options.actions )\n\t  form.widgets.populateMenu($(dropdown), options.client, options.actions);\n\n\treturn dropdown;\n      },\n\n      populateMenu: function(menu, client, actions) {\n\tvar ul = menu.find(\".dropdown-menu\");\n\n\tfunction runMenu(ev, a) {\n\t  var action = $(a).data('action');\n\n\t  if ( action )\n\t    action.call(client, a);\n\t}\n\n\tfunction addMenuItem(label, onclick) {\n\t  if ( onclick !== undefined ) {\n\t    if ( label.indexOf(\"--\") == 0 ) {\n\t      ul.append($.el.li({class:\"divider\"}));\n\t    } else {\n\t      var a = $.el.a(label);\n\n\t      $(a).data('action', onclick);\n\t      ul.append($.el.li(a));\n\t    }\n\t  }\n\t}\n\n\tfor(var a in actions) {\n\t  if ( actions.hasOwnProperty(a) ) {\n\t    addMenuItem(a, actions[a]);\n\t  }\n\t}\n\n\tul.on(\"click\", \"a\", function(ev) { runMenu(ev, this); } );\n\n\treturn menu;\n      }\n    }\n  };\n\n\t\t /*******************************\n\t\t *\t     FUNCTIONS\t\t*\n\t\t *******************************/\n\n  function valgridw(n) {\n    if ( n === undefined ) n = LABELWIDTH;\n    return \"col-xs-\"+(12-n);\n  }\n  function colgridw(n) {\n    if ( n === undefined ) n = LABELWIDTH;\n    return \"col-xs-\"+n;\n  }\n\n  function label(elemName, text, width) {\n    width = width || LABELWIDTH;\n    return $.el.label({class:\"control-label col-xs-\"+width+\"\", for:elemName}, text);\n  }\n\n  function checkbox(name, options) {\n    var attrs = {name:name, type:\"checkbox\"};\n    options = options||{};\n    if ( options.checked ) attrs.checked = \"checked\";\n    if ( options.title   ) attrs.title\t = options.title;\n    return $.el.input(attrs);\n  }\n\n  function textInput(name, options) {\n    var attrs = {name:name, type:\"text\", class:\"form-control\"};\n    options = options||{};\n    if ( options.placeholder ) attrs.placeholder = options.placeholder;\n    if ( options.title )       attrs.title       = options.title;\n    if ( options.value )       attrs.value       = options.value;\n    if ( options.disabled )    attrs.disabled    = options.disabled;\n    if ( options.readonly )    attrs.readonly    = options.readonly;\n    if ( options.type )        attrs.type        = options.type;\n    return $.el.input(attrs);\n  }\n\n  function tagInput(name, placeholder, tags) {\n    var attrs = { name:name, type:\"text\",\n                  class:\"tm-input tag-list\"\n                };\n    if ( placeholder ) attrs.placeholder = placeholder;\n    var elem = $.el.input(attrs);\n    if ( tags )\n      $(elem).data(\"prefilled\", tags);\n    return elem;\n  }\n\n  function helpBlock(help) {\n    return $.el.p({class:\"help-block\"},\n\t\t  \"Make saved file public and give it a meaningful name\");\n  }\n\n  function textarea(name, options) {\n    var attrs = {name:name, class:\"form-control\"};\n    options = options||{};\n\n    if ( options.placeholder ) attrs.placeholder = options.placeholder;\n\n    return $.el.textarea(attrs, options.value||\"\");\n  }\n\n  /**\n   * Create a bootstrap <select> element from a list of options\n   * @param {String} name is the name of the select element\n   * @param {Array} from is an array of options. Each options is a\n   * string or an object with keys `value` and `label`.\n   * @param {Object} [options]\n   * @param {Object} [options.value] If provided, the corresponding\n   * option is selected\n   */\n\n  function select(name, from, options) {\n    var select = $($.el.select({class:\"form-control\", name:name}));\n\n    options=options||{};\n\n    function addSelect(e) {\n      if ( typeof(e) == \"string\" ) {\n\tif ( e == options.value ) {\n\t  select.append($.el.option({selected:\"selected\"}, e));\n\t} else {\n\t  select.append($.el.option(e));\n\t}\n      } else {\n\tvar opts = {value:e.value};\n\tif ( e.value == options.value )\n\t  opts.selected = \"selected\";\n\n\tselect.append($.el.option(opts, e.label));\n      }\n    }\n\n    for(var i=0; i<from.length; i++)\n      addSelect(from[i]);\n\n    return select[0];\n  }\n\n  return form;\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2015-2016, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n *\n * Manage application history. This file supports  two types of history:\n * plugin for the browser history  and  keep   track  of  issues such as\n * recently used files.\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n */\n\ndefine('history',[\"jquery\", \"preferences\", \"form\"],\n       function($, preferences, form) {\n  var history = {\n\n\t\t /*******************************\n\t\t *\t BROWSER HISTORY\t*\n\t\t *******************************/\n\n    /**\n     * Push a new entry to the browser history.\n     * FIXME: Safe history menu of the query window.\n     * FIXME: Deal with unsafed data.\n     */\n    push: function(reply) {\n      var cpath = window.location.pathname;\n\n      if ( cpath != reply.url ) {\n\tvar state = {location:reply.url};\n\n\tif ( reply.meta )\n\t  state.meta = reply.meta;\n\n\twindow.history.pushState(state, \"\", reply.url);\n\tdocument.title = \"SWISH -- \"\n                       + (reply.file ? reply.file\n\t\t\t             : \"SWI-Prolog for SHaring\");\n      }\n    },\n\n    /**\n     * Restore a previous browser history state\n     */\n    pop: function(e) {\n      if ( e.state ) {\n\tif ( e.state.meta && e.state.meta.name ) {\n\t  $(\".swish\").swish('playFile', e.state.meta.name);\n\t} else if ( e.state.location ) {\n\t  window.location =  e.state.location;\n\t}\n      }\n    },\n\n\t\t /*******************************\n\t\t *\t  RECENT DOCUMENTS\t*\n\t\t *******************************/\n\n    recentMaxLength: 10,\n\n    /**\n     * Add/refresh document to list of recent documents.\n     * @param {Object} doc\n     * @param {String} doc.id is the document _identifier_\n     * @param {String} [doc.label] is the document label for\n     * the _Open recent_ menu.  Default is the `id`.\n     * @param {String} doc.type is the type of document.\n     * A document of a specific type is opened by calling\n     * `history.openRecent.type.call(event, doc)`\n     */\n\n    addRecent: function(doc) {\n      var recent = preferences.getVal(\"recentDocuments\")||[];\n\n      function equalDocument(d1, d2) {\n\treturn d1.type == d2.type && d1.id == d2.id;\n      }\n\n      for(var i=0; i<recent.length; i++) {\n\tif ( equalDocument(doc, recent[i]) ) {\n\t  recent.splice(i,1);\n\t  break;\n\t}\n      }\n      while ( recent.length+1 > history.recentMaxLength )\n\trecent.pop();\n      recent.splice(0,0,doc);\n\n      preferences.setVal(\"recentDocuments\", recent);\n    },\n\n    openRecent: function(ev, doc) {\n      return history.openRecent[doc.st_type](ev, doc);\n    },\n\n    /**\n     * Fill a (navbar) <ul> with <li><a> elements, where\n     * each <a> carries the related entry as `data('document')`\n     */\n    updateRecentUL: function() {\n      var ul = $(this);\n      var recent = preferences.getVal(\"recentDocuments\")||[];\n\n      ul.html(\"\");\n      for(var i=0; i<recent.length; i++) {\n\tvar e = recent[i];\n\n\tif ( e.id ) {\n\t  var a = $.el.a(form.widgets.typeIcon(e.id.split(\".\").pop()),\n\t\t\t e.label||e.id);\n\n\t  $(a).data('document', e);\n\t  ul.append($.el.li(a));\n\t}\n      }\n    }\n  };\n\n  /**\n   * Open recent \"gitty\" document\n   */\n  history.openRecent.gitty = function(ev, doc) {\n    $(ev.target).parents(\".swish\").swish('playFile', doc.id);\n  };\n\n  window.onpopstate = history.pop;\n\n  return history;\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2016, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n *\n * Small utilities\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n */\n\ndefine('utils',[\"jquery\"],\n       function($) {\n\n  var utils = {\n    /**\n     * @param   {String} text is the text to be encoded\n     * @returns {String} HTML encoded version of text\n     */\n    htmlEncode: function(text) {\n      if ( !text ) return \"\";\n      return document.createElement('a')\n                     .appendChild(document.createTextNode(text))\n\t\t     .parentNode\n\t\t     .innerHTML;\n    },\n\n    flash: function(obj) {\n      obj.addClass(\"flash\");\n      setTimeout(function() { obj.removeClass(\"flash\"); }, 1500);\n    }\n  }\n\n  if (typeof String.prototype.startsWith != 'function') {\n    String.prototype.startsWith = function(str) {\n      return this.lastIndexOf(str, 0) === 0;\n    };\n  }\n\n  return utils;\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2016-2017, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Deal with cooperation\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('chat',[ \"jquery\", \"config\", \"preferences\", \"form\", \"utils\" ],\n       function($, config, preferences, form, utils) {\n\n(function($) {\n  var pluginName = 'chat';\n  var reconnect_delay = 10;\n  var last_open = null;\n\n  /** @lends $.fn.chat */\n  var methods = {\n    _init: function(options) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = {};\t\t\t/* private data */\n\n\telem.data(pluginName, data);\t/* store with element */\n\n\t/* add event handling */\n\telem.on(\"click\", function(ev) {\n\t  var li = $(ev.target).closest(\"li.user\");\n\n\t  if ( li.length == 1 )\n\t    elem.chat('unnotify', li.attr(\"id\"));\n\t});\n\telem.on(\"send\", function(ev, msg) {\n\t  elem.chat('send', msg);\n\t});\n\t$(window).bind(\"beforeunload\", function() {\n\t  elem.chat('disconnect');\n\t});\n\n\t/* setup websocket */\n\tif ( config.swish.chat ) {\n\t  elem.chat('connect');\n\t}\n      });\n    },\n\n\t\t /*******************************\n\t\t *\t      WEBSOCKET\t\t*\n\t\t *******************************/\n\n    /**\n     * Create a websocket connection to /chat on the SWISH server.\n     */\n    connect: function() {\n      var elem = this;\n      var data = this.data(pluginName);\n      var url  = window.location.host + config.http.locations.swish_chat;\n      var lead = \"?\";\n      var ws = window.location.protocol.replace(\"http\", \"ws\");\n\n      function add_pref_param(name, pname) {\n\tvar value = preferences.getVal(pname);\n\n\tif ( value ) {\n\t  if ( pname == \"anon-avatar\" ) {\n\t    /* hack to deal with possibly rebased server */\n\t    value = config.http.locations.avatar+value.split(\"/\").pop();\n\t  }\n\n\t  url += lead + name + \"=\" + encodeURIComponent(value);\n\t  lead = \"&\";\n\t}\n      }\n\n      add_pref_param(\"avatar\",   \"anon-avatar\");\n      add_pref_param(\"nickname\", \"nick-name\");\n\n      if ( data.reconnect ) {\t\t\t/* reconnecting */\n\turl += lead + \"reconnect\" + \"=\" + encodeURIComponent(data.reconnect);\n\tlead = \"&\";\n      }\n\n      data.connection = new WebSocket(ws + \"//\" + url,\n\t\t\t\t      ['v1.chat.swish.swi-prolog.org']);\n\n      data.connection.onerror = function(error) {\n\telem.chat('userCount', undefined);\n      };\n      data.connection.onclose = function(ev) {\n\tif ( last_open == null ) {\n\t  if ( reconnect_delay < 60000 )\n\t    reconnect_delay *= 2;\n\t} else {\n\t  if ( getTime() - last_open > 300000 )\n\t    reconnect_delay = 10;\n\t  else if ( reconnect_delay < 300000 )\n\t    reconnect_delay *= 2;\n\t}\n\tsetTimeout(function() {\n\t  elem.chat('connect');\n\t}, reconnect_delay);\n      };\n      data.connection.onmessage = function(e) {\n\tvar msg = JSON.parse(e.data);\n\tmsg.origin = e.origin;\n\tif ( msg.type )\n\t  elem.chat(msg.type, msg);\n\telse\n\t  console.log(e);\n      };\n      data.connection.onopen = function() {\n\telem.chat('empty_queue');\n\t$(\".storage\").storage('chat_status');\n      };\n    },\n\n    empty_queue: function() {\n      var data = this.data(pluginName);\n\n      while(data.queue && data.queue != [] && data.connection.readyState == 1) {\n\tvar str = data.queue.shift();\n\tdata.connection.send(str);\n      }\n    },\n\n    disconnect: function() {\n      var data = this.data(pluginName);\n\n      this.chat('send', {type: \"unload\"});\n      data.connection.onclose = function(){};\n      data.connection.close();\n      data.connection = undefined;\n\n      return this;\n    },\n\n\n\t\t /*******************************\n\t\t *\t   BASIC MESSAGES\t*\n\t\t *******************************/\n\n    /**\n     * @param {Object} msg is the JSON object to broadcast\n     */\n    send: function(msg) {\n      var data = this.data(pluginName);\n\n      if ( data && data.connection ) {\n\tvar str = JSON.stringify(msg);\n\n\tif ( data.connection.readyState != 1 ) {\n\t  if ( !data.queue )\n\t    data.queue = [str];\n\t  else\n\t    data.queue.push(str);\n\t  this.chat('connect');\n\t} else {\n\t  data.connection.send(str);\n\t}\n      }\n\n      return this;\n    },\n\n    subscribe: function(channel, sub_channel) {\n      var msg = { type: \"subscribe\", channel: channel };\n\n      if ( sub_channel )\n\tmsg.sub_channel = sub_channel;\n\n      this.chat('send', msg);\n    },\n\n    unsubscribe: function(channel, subchannel) {\n      var msg = { type: \"unsubscribe\", channel: channel };\n\n      if ( sub_channel )\n\tmsg.sub_channel = sub_channel;\n\n      this.chat('send', msg);\n    },\n\n\t\t /*******************************\n\t\t *\t      ACTIONS\t\t*\n\t\t *******************************/\n\n    /**\n     * The welcome message is sent by SWISH immediately after opening\n     * the websocket connection.  It provides the session UID for this\n     * user\n     */\n    welcome: function(e) {\n      var data = $(this).data(pluginName);\n\n      if ( data.wsid && data.wsid != e.wsid ) {\n\tthis.html(\"\");\t\t\t\t/* server restart? */\n      }\n\n      data.wsid = e.wsid;\n      data.reconnect = e.reconnect;\t\t/* reconnection token */\n      if ( e.avatar && e.avatar_source == 'generated' )\n\tpreferences.setVal(\"anon-avatar\", e.avatar);\n      e.role = \"self\";\n\n      var li = this.chat('addUser', e);\n      $(li).addClass(\"myself\");\n      this.chat('userCount', e.visitors);\n      last_open = getTime();\n\n      if ( e.check_login )\n\t$(\"#login\").login('update', \"check\");\n    },\n\n    userCount: function(cnt) {\n      var elem = $(\"#user-count\");\n\n      if ( cnt == undefined ) {\n\telem.parent().hide();\n      } else {\n\telem.parent().show();\n\telem.text(cnt);\n      }\n    },\n\n    /**\n     * Replied when opening SWISH on a file to inform\n     * the new user about existing visitors to same\n     * files as are open in the current SWISH.  See\n     * inform_newby_about_existing_gazers/2.\n     */\n    gazers: function(e) {\n      if ( e.gazers ) {\n\tfor(var i=0; i<e.gazers.length; i++) {\n\t  var gazer = e.gazers[i];\n\t  this.chat('addUser', gazer);\n\t  if ( gazer.file )\n\t    this.chat('addUserFile', gazer.wsid, gazer.file);\n\t}\n      }\n    },\n\n    /**\n     * Replied if the profile associated with a visitor changes.  A\n     * key `reason` carries the reason for the change.\n     */\n\n    profile: function(e) {\n      var li = $(\"#\"+e.wsid);\n\n      li.children(\"a\").html(\"\").append(avatar(e));\n      if ( e.avatar ) {\n\t$(\"*[data-userid=\"+e.wsid+\"] img.avatar\").attr(\"src\", e.avatar);\n\tif ( e.avatar_source == 'generated' )\n\t  preferences.setVal(\"anon-avatar\", e.avatar);\n      }\n\n      if ( e.name ) {\n\tli.prop('title', e.name);\n\tif ( e.reason == 'set-nick-name' ) {\n\t  e.html = \"Named <i>\"+utils.htmlEncode(e.name)+\"</i>\";\n\t  this.chat('notifyUser', e);\n\t}\n      }\n    },\n\n    /**\n     * A user has rejoined. This is the case if we lost the\n     * connection and the connection was re-established.\n     */\n    rejoined: function(e) {\n      var avatars = $(\"#\"+e.wsid);\n\n      this.chat('lost', avatars, false);\n      if ( e.visitors )\n\tthis.chat('userCount', e.visitors);\n    },\n\n    /**\n     * A new user has joined.\n     */\n    joined: function(e) {\n      if ( e.visitors )\n\tthis.chat('userCount', e.visitors);\n    },\n\n    session_closed: function() {\n      $(\"#login\").login('update', \"session-closed\");\n    },\n\n    /**\n     * Display a notification by some user.\n     */\n    notify: function(e) {\n      this.chat('notifyUser', e);\n    },\n\n    /**\n     * Add incomming chat messages to the chatroom.  If there is no\n     * chatroom we should warn/open it\n     */\n    'chat-message': function(e) {\n      var rooms = $(\"div.chatroom\").chatroom('rooms', e.docid);\n\n      if ( rooms.length > 0 ) {\n\trooms.chatroom('add', e);\n\te.displayed = true;\n      } else {\n\tif ( $(\"#\"+e.user.id).length > 0 ) {\n\t  msg = $.extend({}, e);\n\t  msg.wsid = e.user.id;\n\t  msg.html = \"Wants to chat\";\n\t  this.chat('notifyUser', msg);\n\t}\n      }\n\n      $(\".storage\").storage('chat_message', e);\n    },\n\n\n\t\t /*******************************\n\t\t *\t        UI\t\t*\n\t\t *******************************/\n\n    /**\n     * Present a notification associated with a user\n     *\n     * @param {Object} options\n     * @param {String} options.html provides the inner html of the message.\n     * @param {Number} [options.fadeIn=400] provide the fade in time.\n     * @param {Number} [options.fadeOut=400] provide the fade out time.\n     * @param {Number} [options.time=5000] provide the show time.  The\n     * value `0` prevents a timeout.\n     */\n    notifyUser: function(options) {\n      var elem = this;\n      var user_li = this.chat('addUser', options);\n\n      if ( user_li.length > 0 ) {\n\tvar div  = $.el.div({ class:\"notification notify-arrow\",\n\t\t\t      id:\"ntf-\"+options.wsid\n\t\t\t    });\n\tvar epos = user_li.offset();\n\n\t$(\"body\").append(div);\n\t$(div).html(options.html)\n\t      .css({ left: epos.left+user_li.width()-$(div).outerWidth()+15,\n\t\t     top:  epos.top+user_li.height()+12\n\t\t   })\n\t      .on(\"click\", function(){$(div).remove();})\n\t      .show(options.fadeIn||400);\n\n\tif ( options.time !== 0 ) {\n\t  var time = options.time;\n\n\t  if ( !time )\n\t    time = user_li.hasClass(\"myself\") ? 1000 : 5000;\n\n\t  setTimeout(function() {\n\t    $(div).hide(options.fadeOut||400, function() {\n\t      elem.chat('unnotify', options.wsid);\n\t    });\n\t  }, time);\n\t}\n\n\tthis.chat('updateFiles', options);\n      }\n    },\n\n    unnotify: function(wsid) {\n      $(\"#ntf-\"+wsid).remove();\n\n      if ( $(\"#\"+wsid).hasClass(\"removed\") )\n\tthis.chat('removeUser', wsid);\n\n      return this;\n    },\n\n    updateFiles: function(options) {\n      var data = $(this).data(pluginName);\n\n      function file() {\n\treturn options.event_argv[0];\n      }\n\n      if ( options.event == \"opened\" ) {\n\tthis.chat('addUserFile', options.wsid, file());\n      } else if ( options.event == \"closed\" ) {\n\tvar wsid = options.wsid == data.wsid ? undefined : options.wsid;\n\tthis.chat('removeUserFile', wsid, file(), true);\n      }\n    },\n\n    /**\n     * Return or add a user to the notification area.\n     * @param {Object} options\n     * @param {String} options.wsid Identifier for the user (a UUID)\n     * @param {String} [options.name] is the name of the user\n     * @returns {jQuery} the `li` element representing the user\n     */\n    addUser: function(options) {\n      var li = $(\"#\"+options.wsid);\n\n      if ( li.length == 0 )\n      { li = $(li_user(options.wsid, options));\n\tthis.prepend(li);\n      } else {\n\tthis.chat('lost', li, false);\n      }\n\n      return li;\n    },\n\n    /**\n     * Remove a user avatar.  If a notification is pending we delay\n     * removal until the notification times out\n     */\n    removeUser: function(wsid) {\n      if ( typeof wsid == \"string\" ) {\n\twsid = {wsid:wsid};\n      }\n\n      if ( wsid.visitors !== undefined )\n\tthis.chat('userCount', wsid.visitors);\n      var li = $(\"#\"+wsid.wsid);\n      if ( li.length == 0 )\n\treturn this;\n\n      if ( wsid.reason != \"close\" ) {\n\tif ( $(\"#ntf-\"+wsid.wsid).length > 0 )\t/* notification pending */\n\t  li.addClass(\"removed\");\n\telse\n\t  li.hide(400, function() {this.remove();});\n      } else {\t\t\t\t\t/* connection was lost */\n\tthis.chat('lost', li, true);\n      }\n\n      return this;\n    },\n\n    /**\n     * Set/clear lost-connection state of users.\n     * @param {jQuery} li set of items to set/clear\n     * @param {Boolean} lost is `true` if we lost the connection\n     */\n    lost: function(li, lost) {\n      if ( lost ) {\n\tli.addClass(\"lost\");\n      } else {\n\tli.removeClass(\"lost\");\n      }\n\n      li.each(function() {\n\tvar elem = $(this);\n\tif ( lost ) {\n\t  elem.data('lost-timer',\n\t\t    setTimeout(function() {\n\t\t      if ( $(\"#\"+wsid.wsid).hasClass(\"lost\") )\n\t\t\t$(\"#\"+wsid.wsid).remove();\n\t\t    }, 60000));\n\t} else {\n\t  var tmo = elem.data('lost-timer');\n\t  if ( tmo ) {\n\t    clearTimeout(tmo);\n\t    elem.data('lost-timer', undefined);\n\t  }\n\t}\n      });\n    },\n\n    /**\n     * Get info about a specific user.\n     * @param {Array} [fields] lists the keys we want to have in the\n     * user objects.  Default is all we have.\n     */\n    user_info: function(fields) {\n      var li = $(this);\n      var user = {};\n\n      if ( !fields || fields.indexOf('id') >= 0 ) {\n\tuser.id = li.attr(\"id\");\n      }\n      if ( !fields || fields.indexOf('name') >= 0 ) {\n\tvar name = li.prop(\"title\");\n\tif ( name && name !== \"Me\" )\n\t  user.name = name;\n      }\n      if ( !fields || fields.indexOf('avatar') >= 0 ) {\n\tuser.avatar = li.find(\"img.avatar\").attr(\"src\");\n      }\n\n      return user;\n    },\n\n    /**\n     * Get the set of visible users.  The return is an object holding\n     * a key `self` and a key `users` bound to an array of users.\n     * `self` points to the user of this browser.  Self always has\n     * all keys\n     */\n    users: function(fields) {\n      var users = [];\n      var rc = {users:users};\n\n      this.find(\"li.user[id]\").each(function() {\n\tvar elem = $(this);\n\tvar self = elem.hasClass(\"myself\");\n\tvar user = elem.chat('user_info', self ? undefined : fields);\n\n\tif ( self ) {\n\t  rc.self = $.extend({}, user);\n\t  user.is_self = true;\n\t}\n\n\tusers.push(user);\n      });\n\n      return rc;\n    },\n\n    /**\n     * Get info on the _self_ user.\n     */\n    self: function(fields) {\n      var li = this.find(\"li.user.myself[id]\");\n\n      return li.chat('user_info', fields);\n    },\n\n    /**\n     * Browser `wsid` has opened `file`\n     */\n    addUserFile: function(wsid, file) {\n      var li = $(\"#\"+wsid);\n      var ul = li.find(\"ul.dropdown-menu\");\n      var fli;\n\n      ul.find(\"li.file\").each(function() {\n\tif ( $(this).data(\"file\") == file ) {\n\t  fli = this;\n\t  return false;\n\t}\n      });\n\n      if ( fli == undefined ) {\n\tvar type = file.split(\".\").pop();\n\tul.append(\n\t  $.el.li({class:\"file\", \"data-file\":file, title:\"Shared file\"},\n\t\t  $.el.a($.el.span({class: \"dropdown-icon type-icon \"+type}),\n\t\t\t file)));\n      }\n\n      return this;\n    },\n\n    /**\n     * Remove a file associated with the user wsid.\n     * @param {String} [wsid] User for which to remove file.  If\n     * `undefined`, remove file for all users.\n     * @param {Boolean} [user_too] if `true', remove the user if\n     * the set of files becomes empty and this is not `myself`.\n     */\n    removeUserFile: function(wsid, file, user_too) {\n      var elem = this;\n\n      function removeFile(user_li) {\n\tvar ul = user_li.children(\"ul.dropdown-menu\");\n\n\tul.find(\"li.file\").each(function() {\n\t  if ( $(this).data(\"file\") == file ) {\n\t    $(this).remove();\n\t    if ( user_too &&\n\t\t !user_li.hasClass(\"myself\") &&\n\t\t ul.find(\"li.file\").length == 0 )\n\t      elem.chat('removeUser', user_li.attr(\"id\"));\n\t    return false;\n\t  }\n\t});\n      }\n\n      if ( wsid ) {\n\tremoveFile($(\"#\"+wsid));\n      } else {\n\tthis.children().each(function() {\n\t  removeFile($(this), file, user_too);\n\t});\n      }\n    }\n  }; // methods\n\n  // Private functions\n\n  /**\n   * Add an entry for a user to the notification area\n   */\n  function li_user(id, options) {\n    options = options||{};\n    var ul;\n    var a;\n    var name = options.name;\n\n    if ( !name && options.role == \"self\" )\n      name = \"Me\";\n    if ( !name )\n      name = id;\n\n    var li = $.el.li({class:\"dropdown user\", id:id, title:name},\n\t\t   a=$.el.a({ class:\"dropdown-toggle avatar\",\n\t\t\t      'data-toggle':\"dropdown\"\n\t\t\t    },\n\t\t\t    avatar(options)),\n\t\t  ul=$.el.ul({ class:\"dropdown-menu pull-right\",\n\t\t\t       title:\"\"\n\t\t\t     }));\n\n    if ( options.role == \"self\" ) {\n      $(a).append($.el.b({class:\"caret\"}));\n\n      var input = $.el.input({ type:\"text\",\n\t\t\t       placeholder:\"Nick name\",\n\t\t\t       value:options.name||\"\",\n\t\t\t       title:\"Nick name\"\n\t\t\t     });\n      ul.append($.el.li(input));\n      $(input).keypress(function(ev) {\n\tif ( ev.which == 13 ) {\n\t  var name = $(input).val().trim();\n\n\t  if ( name != \"\" ) {\n\t    $(\"#chat\").trigger('send',\n\t\t\t       { type:'set-nick-name',\n\t\t\t\t name: name\n\t\t\t       });\n\t    preferences.setVal(\"nick-name\", name);\n\t  }\n\t  $(input).closest('.dropdown.open').removeClass('open');\n\t}\n      });\n\n      form.widgets.populateMenu($(li), $(\"#chat\"), {\n/*\t\"Chat ...\": function() {\n\t  this.chat('start_chat');\n\t}\n*/\n      });\n\n      ul.append($.el.li({class:\"divider\"}));\n    }\n\n    return li;\n  }\n\n  function avatar(options) {\n    if ( options.avatar ) {\n      return $.el.img({ class:\"avatar\", src:options.avatar\n\t\t      });\n    } else {\n      return $.el.span({class:\"avatar glyphicon glyphicon-user\"})\n    }\n  }\n\n  /**\n   * @return {Number} time since 1/1/1970 in milliseconds\n   */\n  function getTime() {\n    var d = new Date();\n    return d.getTime();\n  }\n\n  /**\n   * <Class description>\n   *\n   * @class chat\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.chat = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n});\n\n","/*!\n * JQuery Spliter Plugin\n * Copyright (C) 2010-2013 Jakub Jankiewicz <http://jcubic.pl>\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n */\n(function($, undefined) {\n    var count = 0;\n    var splitter_id = null;\n    var splitters = [];\n    var current_splitter = null;\n    $.fn.split = function(options) {\n        var data = this.data('splitter');\n        if (data) {\n            return data;\n        }\n        var panel_1;\n        var panel_2;\n        var settings = $.extend({\n            limit: 100,\n            orientation: 'horizontal',\n            position: '50%',\n            invisible: false,\n            onDragStart: $.noop,\n            onDragEnd: $.noop,\n            onDrag: $.noop\n        }, options || {});\n        this.settings = settings;\n        var cls;\n        var children = this.children();\n        if (settings.orientation == 'vertical') {\n            panel_1 = children.first().addClass('left_panel');\n            panel_2 = panel_1.next().addClass('right_panel');\n            cls = 'vsplitter';\n        } else if (settings.orientation == 'horizontal') {\n            panel_1 = children.first().addClass('top_panel')\n            panel_2 = panel_1.next().addClass('bottom_panel');\n            cls = 'hsplitter';\n        }\n        if (settings.invisible) {\n            cls += ' splitter-invisible';\n        }\n        var width = this.width();\n        var height = this.height();\n        var id = count++;\n        this.addClass('splitter_panel');\n        var splitter = $('<div/>').addClass(cls).bind('mouseenter touchstart', function() {\n            splitter_id = id;\n        }).bind('mouseleave touchend', function() {\n            splitter_id = null;\n        }).insertAfter(panel_1);\n        var position;\n\n        function get_position(position) {\n            if (typeof position === 'number') {\n                return position;\n            } else if (typeof position === 'string') {\n                var match = position.match(/^([0-9\\.]+)(px|%)$/);\n                if (match) {\n                    if (match[2] == 'px') {\n                        return +match[1];\n                    } else {\n                        if (settings.orientation == 'vertical') {\n                            return (width * +match[1]) / 100;\n                        } else if (settings.orientation == 'horizontal') {\n                            return (height * +match[1]) / 100;\n                        }\n                    }\n                } else {\n                    //throw position + ' is invalid value';\n                }\n            } else {\n                //throw 'position have invalid type';\n            }\n        }\n\n        var self = $.extend(this, {\n            refresh: function() {\n                var new_width = this.width();\n                var new_height = this.height();\n                if (width != new_width || height != new_height) {\n                    width = this.width();\n                    height = this.height();\n                    self.position(position);\n                }\n            },\n            position: (function() {\n                if (settings.orientation == 'vertical') {\n                    return function(n, silent) {\n                        if (n === undefined) {\n                            return position;\n                        } else {\n                            position = get_position(n);\n                            var sw = splitter.width();\n                            var sw2 = sw/2;\n                            if (settings.invisible) {\n                                var pw = panel_1.width(position).outerWidth();\n                                panel_2.width(self.width()-pw);\n                                splitter.css('left', pw-sw2);\n                            } else {\n                                var pw = panel_1.width(position-sw2).outerWidth();\n                                panel_2.width(self.width()-pw-sw);\n                                splitter.css('left', pw);\n                            }\n                        }\n                        if (!silent) {\n                            self.find('.splitter_panel').trigger('splitter.resize');\n                        }\n                        return self;\n                    };\n                } else if (settings.orientation == 'horizontal') {\n                    return function(n, silent) {\n                        if (n === undefined) {\n                            return position;\n                        } else {\n                            position = get_position(n);\n                            var sw = splitter.height();\n                            var sw2 = sw/2;\n                            if (settings.invisible) {\n                                var pw = panel_1.height(position).outerHeight();\n                                panel_2.height(self.height()-pw);\n                                splitter.css('top', pw-sw2);\n                            } else {\n                                var pw = panel_1.height(position-sw2).outerHeight();\n                                panel_2.height(self.height()-pw-sw);\n                                splitter.css('top', pw);\n                            }\n                        }\n                        if (!silent) {\n                            self.find('.splitter_panel').trigger('splitter.resize');\n                        }\n                        return self;\n                    };\n                } else {\n                    return $.noop;\n                }\n            })(),\n            orientation: settings.orientation,\n            limit: settings.limit,\n            isActive: function() {\n                return splitter_id === id;\n            },\n            destroy: function() {\n                self.removeClass('splitter_panel');\n                splitter.unbind('mouseenter');\n                splitter.unbind('mouseleave');\n                splitter.unbind('touchstart');\n                splitter.unbind('touchmove');\n                splitter.unbind('touchend');\n                splitter.unbind('touchleave');\n                splitter.unbind('touchcancel');\n                if (settings.orientation == 'vertical') {\n                    panel_1.removeClass('left_panel');\n                    panel_2.removeClass('right_panel');\n                } else if (settings.orientation == 'horizontal') {\n                    panel_1.removeClass('top_panel');\n                    panel_2.removeClass('bottom_panel');\n                }\n                self.unbind('splitter.resize');\n                self.find('.splitter_panel').trigger('splitter.resize');\n                splitters[id] = null;\n                splitter.remove();\n                var not_null = false;\n                for (var i=splitters.length; i--;) {\n                    if (splitters[i] !== null) {\n                        not_null = true;\n                        break;\n                    }\n                }\n                //remove document events when no splitters\n                if (!not_null) {\n                    $(document.documentElement).unbind('.splitter');\n                    $(window).unbind('resize.splitter');\n                    self.data('splitter', null);\n                    splitters = [];\n                    count = 0;\n                }\n            }\n        });\n        self.bind('splitter.resize', function(e) {\n            var pos = self.position();\n            if (self.orientation == 'vertical' &&\n                pos > self.width()) {\n                pos = self.width() - self.limit-1;\n            } else if (self.orientation == 'horizontal' &&\n                       pos > self.height()) {\n                pos = self.height() - self.limit-1;\n            }\n            if (pos < self.limit) {\n                pos = self.limit + 1;\n            }\n            self.position(pos, true);\n        });\n        //inital position of splitter\n        var pos;\n        if (settings.orientation == 'vertical') {\n            if (pos > width-settings.limit) {\n                pos = width-settings.limit;\n            } else {\n                pos = get_position(settings.position);\n            }\n        } else if (settings.orientation == 'horizontal') {\n            //position = height/2;\n            if (pos > height-settings.limit) {\n                pos = height-settings.limit;\n            } else {\n                pos = get_position(settings.position);\n            }\n        }\n        if (pos < settings.limit) {\n            pos = settings.limit;\n        }\n        self.position(pos, true);\n        if (splitters.length == 0) { // first time bind events to document\n            $(window).bind('resize.splitter', function() {\n                $.each(splitters, function(i, splitter) {\n                    if ( splitter ) splitter.refresh();\n                });\n            });\n            $(document.documentElement).bind('mousedown.splitter touchstart.splitter', function(e) {\n                if (splitter_id !== null) {\n                    current_splitter = splitters[splitter_id];\n                    $('<div class=\"splitterMask\"></div>').css('cursor', current_splitter.children().eq(1).css('cursor')).insertAfter(current_splitter);\n                    current_splitter.settings.onDragStart(e);\n                    return false;\n                }\n            }).bind('mouseup.splitter touchend.splitter touchleave.splitter touchcancel.splitter', function(e) {\n                if (current_splitter) {\n                    $('.splitterMask').remove();\n                    current_splitter.settings.onDragEnd(e);\n                    current_splitter = null;\n                }\n            }).bind('mousemove.splitter touchmove.splitter', function(e) {\n                if (current_splitter !== null) {\n                    var limit = current_splitter.limit;\n                    var offset = current_splitter.offset();\n                    if (current_splitter.orientation == 'vertical') {\n                        var pageX = e.pageX;\n                        if(e.originalEvent && e.originalEvent.changedTouches){\n                          pageX = e.originalEvent.changedTouches[0].pageX;\n                        }\n                        var x = pageX - offset.left;\n                        if (x <= current_splitter.limit) {\n                            x = current_splitter.limit + 1;\n                        } else if (x >= current_splitter.width() - limit) {\n                            x = current_splitter.width() - limit - 1;\n                        }\n                        if (x > current_splitter.limit &&\n                            x < current_splitter.width()-limit) {\n                            current_splitter.position(x, true);\n                            current_splitter.find('.splitter_panel').\n                                trigger('splitter.resize');\n                            e.preventDefault();\n                        }\n                    } else if (current_splitter.orientation == 'horizontal') {\n                        var pageY = e.pageY;\n                        if(e.originalEvent && e.originalEvent.changedTouches){\n                          pageY = e.originalEvent.changedTouches[0].pageY;\n                        }\n                        var y = pageY-offset.top;\n                        if (y <= current_splitter.limit) {\n                            y = current_splitter.limit + 1;\n                        } else if (y >= current_splitter.height() - limit) {\n                            y = current_splitter.height() - limit - 1;\n                        }\n                        if (y > current_splitter.limit &&\n                            y < current_splitter.height()-limit) {\n                            current_splitter.position(y, true);\n                            current_splitter.find('.splitter_panel').\n                                trigger('splitter.resize');\n                            e.preventDefault();\n                        }\n                    }\n                    current_splitter.settings.onDrag(e);\n                }\n            });\n        }\n        splitters.push(self);\n        self.data('splitter', self);\n        return self;\n    };\n})(jQuery);\n\ndefine(\"splitter\", [\"jquery\"], function(){});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2016, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Deal with subwindow layout\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('pane',[ \"jquery\", \"splitter\" ],\n       function() {\n\n(function($) {\n  var pluginName = 'tile';\n\n  /** @lends $.fn.tile */\n  var methods = {\n    /**\n     * @param {Object} [options] currently ignored\n     */\n    _init: function(options) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar dir   = elem.hasClass(\"horizontal\") ? \"vertical\" : \"horizontal\";\n\tvar pos   = elem.attr(\"data-split\");\n\tvar panes = elem.children();\n\n\tpos = pos||\"50%\";\n\n\tpanes.each(function() {\n\t  $(this).wrap('<div class=\"pane-wrapper\"></div>')\n\t});\n\telem.addClass(\"pane-container\");\n\telem.split({ orientation:dir,\n\t             position:pos,\n\t\t     limit:10,\n\t\t     onDragStart: function() { elem.tile('resize_start'); },\n\t\t     onDrag: function(ev) { panes.trigger(\"pane.resize\"); },\n\t\t     onDragEnd: function() { elem.tile('resize_save'); }\n\t           });\n\telem.tile('resize_save');\n\n\telem.on('fullscreen', function(ev, val) {\n\t  elem.tile('resize');\n\t});\n      });\n    },\n\n    resize_start: function() {\n      return this.each(function() {\n\tvar elem    = $(this);\n\tvar info    = paneInfo(elem);\n\n\telem.find(\".reactive-size\").trigger(\"reactive-resize-start\",\n\t\t\t\t\t    info.splitter.orientation);\n      });\n    },\n\n    /**\n     * Save the current split location as a percentage, so we can\n     * maintain this percentage at subsequent resize events.  This\n     * is normally called after establishing the tile and after a\n     * user-initiated resize.\n     */\n    resize_save: function() {\n      this.each(function() {\n\tvar elem    = $(this);\n\tvar info    = paneInfo(elem);\n\tvar length, pos;\n\n\tif ( info.splitter.orientation == 'horizontal' ) {\n\t  length = elem.height();\n\t  pos    = $(info.first).height();\n\t} else {\n\t  length = elem.width();\n\t  pos    = $(info.first).width();\n\t}\n\n\tvar percent = Math.round(((100 * pos) / length)) + \"%\";\n\n\tinfo.splitter.resizestart = percent;\n      });\n\n      this.find(\".reactive-size\").trigger(\"reactive-resize\");\n      return this;\n    },\n\n    /**\n     * Act on a resize by keeping the relative distribution and respect\n     * min/max style properties. This assumes that {@link resizestart}\n     * is called at the start of the windowresize.\n     * @example $(window).resize(function() { $(\".tile\").tile('resize'); });\n     */\n    resize: function() {\n      return this.each(function() {\n\tvar elem     = $(this);\n\tvar splitter = elem.split();\n\n\tif ( splitter.resizestart ) {\n\t  splitter.position(splitter.resizestart);\n\t  splitter.settings.onDrag(elem);\n\t}\n      });\n    },\n\n    /**\n     * Split a pane, adding a new pane above/below/left/right of the\n     * splitted pane.  `this` must be the pane content!\n     * @param {Element} pane is a `<div>` element providing the content\n     * for the new tile.\n     * @param {String} [rel] is one of `above`/`below`/`left`/`right`.\n     * Default is `\"below\"`\n     * @param {Number} [pos] is percentage of the height/width taken by\n     * the new pane\n     * @param {Number} [minheight] is the minimum height of the new tab\n     * in the case of a vertical split.\n     * @return {jQuery} parent `pane-container` that hold me and the note\n     * that was added next to me.\n     */\n    split: function(pane, rel, pos, minheight) {\n      rel = rel||\"below\";\n\n      var relto  = this;\n      var dir    = (rel == \"above\" || rel == \"below\") ? \"horizontal\" : \"vertical\";\n      var parent = relto.wrap('<div class=\"pane-container tile \"' +\n\t\t\t      flipdir(dir) +\n\t\t\t      '></div>')\n                        .parent();\n\n      if ( pos == undefined )\n\tpos = 50;\n      else if ( pos < 10 )\n\tpos = 10;\n      else if ( pos > 90 )\n\tpos = 90;\n\n      if ( minheight && dir == \"horizontal\" ) {\n\tsumh = this.height();\n\tleft = sumh*pos/100;\n\tif ( left < minheight && minheight < sumh*0.9 ) {\n\t  pos = (minheight*100/sumh);\n\t}\n      }\n\n      if ( rel == \"above\" || rel == \"left\" ) {\n\tparent.prepend(pane);\n      } else {\n\tpos = 100 - pos;\n\tparent.append(pane);\n      }\n\n      var panes = $(relto).add(pane);\n      panes.wrap('<div class=\"pane-wrapper\"></div>');\n\n      parent.split({ orientation:dir,\n\t\t     position:pos+\"%\",\n\t\t     limit:10,\n\t\t     onDragStart: function() { parent.tile('resize_start'); },\n\t\t     onDrag:      function() { panes.trigger(\"pane.resize\"); },\n\t\t     onDragEnd:   function() { parent.tile('resize_save'); }\n\t\t   });\n      parent.tile('resize_save');\n      panes.trigger(\"pane.resize\");\n\n      return parent;\n    },\n\n    /**\n     * Remove a tile from the DOM, causing the remaining half to occupy\n     * the whole space.  Again, `this` is the content pane.\n     */\n     close: function() {\n      var pane = this;\n      var splitContainer = pane.closest(\".pane-container\");\n\n      splitContainer.split().destroy();\n      pane.parent().remove();\n      splitContainer.children().first().children().first().unwrap().unwrap();\n    }\n  }; // methods\n\n  function paneInfo(pane) {\n    var panes = pane.children();\n\n    return { splitter: pane.split(),\n             first:    $(panes[0]).children()[0],\n\t     second:   $(panes[2]).children()[0]\n           };\n  }\n\n  function flipdir(dir) {\n    return dir == \"horizontal\" ? \"vertical\" : \"horizontal\";\n  }\n\n  /**\n   * Generate a tiled subwindow layout from a hierarchy of `<div>`\n   * elements.  Below is the HTML that creates the SWISH 2.0 subwindow\n   * layout.  This plugin uses the class `horizontal` or `vertical` to\n   * decide on the direction of the split and the attribute `data-split`\n   * to locate the split location.\n   *\n   *     <div class=\"tile horizontal\" data-split=\"60%\">\n   *       <div class=\"prolog-editor\"></div>\n   *       <div class=\"tile vertical\" data-split=\"70%\">\n   *         <div class=\"prolog-runners\"></div>\n   *         <div class=\"prolog-query\"></div>\n   *       </div>\n   *     </div>\n   *\n   * @class tile\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @example $(\".tile\").tile();\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.tile = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n});\n\n","/*!\n * typeahead.js 0.11.1\n * https://github.com/twitter/typeahead.js\n * Copyright 2013-2015 Twitter, Inc. and other contributors; Licensed MIT\n */\n\n(function(root, factory) {\n    if (typeof define === \"function\" && define.amd) {\n        define(\"bloodhound\", [ \"jquery\" ], function(a0) {\n            return root[\"Bloodhound\"] = factory(a0);\n        });\n    } else if (typeof exports === \"object\") {\n        module.exports = factory(require(\"jquery\"));\n    } else {\n        root[\"Bloodhound\"] = factory(jQuery);\n    }\n})(this, function($) {\n    var _ = function() {\n        \"use strict\";\n        return {\n            isMsie: function() {\n                return /(msie|trident)/i.test(navigator.userAgent) ? navigator.userAgent.match(/(msie |rv:)(\\d+(.\\d+)?)/i)[2] : false;\n            },\n            isBlankString: function(str) {\n                return !str || /^\\s*$/.test(str);\n            },\n            escapeRegExChars: function(str) {\n                return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\");\n            },\n            isString: function(obj) {\n                return typeof obj === \"string\";\n            },\n            isNumber: function(obj) {\n                return typeof obj === \"number\";\n            },\n            isArray: $.isArray,\n            isFunction: $.isFunction,\n            isObject: $.isPlainObject,\n            isUndefined: function(obj) {\n                return typeof obj === \"undefined\";\n            },\n            isElement: function(obj) {\n                return !!(obj && obj.nodeType === 1);\n            },\n            isJQuery: function(obj) {\n                return obj instanceof $;\n            },\n            toStr: function toStr(s) {\n                return _.isUndefined(s) || s === null ? \"\" : s + \"\";\n            },\n            bind: $.proxy,\n            each: function(collection, cb) {\n                $.each(collection, reverseArgs);\n                function reverseArgs(index, value) {\n                    return cb(value, index);\n                }\n            },\n            map: $.map,\n            filter: $.grep,\n            every: function(obj, test) {\n                var result = true;\n                if (!obj) {\n                    return result;\n                }\n                $.each(obj, function(key, val) {\n                    if (!(result = test.call(null, val, key, obj))) {\n                        return false;\n                    }\n                });\n                return !!result;\n            },\n            some: function(obj, test) {\n                var result = false;\n                if (!obj) {\n                    return result;\n                }\n                $.each(obj, function(key, val) {\n                    if (result = test.call(null, val, key, obj)) {\n                        return false;\n                    }\n                });\n                return !!result;\n            },\n            mixin: $.extend,\n            identity: function(x) {\n                return x;\n            },\n            clone: function(obj) {\n                return $.extend(true, {}, obj);\n            },\n            getIdGenerator: function() {\n                var counter = 0;\n                return function() {\n                    return counter++;\n                };\n            },\n            templatify: function templatify(obj) {\n                return $.isFunction(obj) ? obj : template;\n                function template() {\n                    return String(obj);\n                }\n            },\n            defer: function(fn) {\n                setTimeout(fn, 0);\n            },\n            debounce: function(func, wait, immediate) {\n                var timeout, result;\n                return function() {\n                    var context = this, args = arguments, later, callNow;\n                    later = function() {\n                        timeout = null;\n                        if (!immediate) {\n                            result = func.apply(context, args);\n                        }\n                    };\n                    callNow = immediate && !timeout;\n                    clearTimeout(timeout);\n                    timeout = setTimeout(later, wait);\n                    if (callNow) {\n                        result = func.apply(context, args);\n                    }\n                    return result;\n                };\n            },\n            throttle: function(func, wait) {\n                var context, args, timeout, result, previous, later;\n                previous = 0;\n                later = function() {\n                    previous = new Date();\n                    timeout = null;\n                    result = func.apply(context, args);\n                };\n                return function() {\n                    var now = new Date(), remaining = wait - (now - previous);\n                    context = this;\n                    args = arguments;\n                    if (remaining <= 0) {\n                        clearTimeout(timeout);\n                        timeout = null;\n                        previous = now;\n                        result = func.apply(context, args);\n                    } else if (!timeout) {\n                        timeout = setTimeout(later, remaining);\n                    }\n                    return result;\n                };\n            },\n            stringify: function(val) {\n                return _.isString(val) ? val : JSON.stringify(val);\n            },\n            noop: function() {}\n        };\n    }();\n    var VERSION = \"0.11.1\";\n    var tokenizers = function() {\n        \"use strict\";\n        return {\n            nonword: nonword,\n            whitespace: whitespace,\n            obj: {\n                nonword: getObjTokenizer(nonword),\n                whitespace: getObjTokenizer(whitespace)\n            }\n        };\n        function whitespace(str) {\n            str = _.toStr(str);\n            return str ? str.split(/\\s+/) : [];\n        }\n        function nonword(str) {\n            str = _.toStr(str);\n            return str ? str.split(/\\W+/) : [];\n        }\n        function getObjTokenizer(tokenizer) {\n            return function setKey(keys) {\n                keys = _.isArray(keys) ? keys : [].slice.call(arguments, 0);\n                return function tokenize(o) {\n                    var tokens = [];\n                    _.each(keys, function(k) {\n                        tokens = tokens.concat(tokenizer(_.toStr(o[k])));\n                    });\n                    return tokens;\n                };\n            };\n        }\n    }();\n    var LruCache = function() {\n        \"use strict\";\n        function LruCache(maxSize) {\n            this.maxSize = _.isNumber(maxSize) ? maxSize : 100;\n            this.reset();\n            if (this.maxSize <= 0) {\n                this.set = this.get = $.noop;\n            }\n        }\n        _.mixin(LruCache.prototype, {\n            set: function set(key, val) {\n                var tailItem = this.list.tail, node;\n                if (this.size >= this.maxSize) {\n                    this.list.remove(tailItem);\n                    delete this.hash[tailItem.key];\n                    this.size--;\n                }\n                if (node = this.hash[key]) {\n                    node.val = val;\n                    this.list.moveToFront(node);\n                } else {\n                    node = new Node(key, val);\n                    this.list.add(node);\n                    this.hash[key] = node;\n                    this.size++;\n                }\n            },\n            get: function get(key) {\n                var node = this.hash[key];\n                if (node) {\n                    this.list.moveToFront(node);\n                    return node.val;\n                }\n            },\n            reset: function reset() {\n                this.size = 0;\n                this.hash = {};\n                this.list = new List();\n            }\n        });\n        function List() {\n            this.head = this.tail = null;\n        }\n        _.mixin(List.prototype, {\n            add: function add(node) {\n                if (this.head) {\n                    node.next = this.head;\n                    this.head.prev = node;\n                }\n                this.head = node;\n                this.tail = this.tail || node;\n            },\n            remove: function remove(node) {\n                node.prev ? node.prev.next = node.next : this.head = node.next;\n                node.next ? node.next.prev = node.prev : this.tail = node.prev;\n            },\n            moveToFront: function(node) {\n                this.remove(node);\n                this.add(node);\n            }\n        });\n        function Node(key, val) {\n            this.key = key;\n            this.val = val;\n            this.prev = this.next = null;\n        }\n        return LruCache;\n    }();\n    var PersistentStorage = function() {\n        \"use strict\";\n        var LOCAL_STORAGE;\n        try {\n            LOCAL_STORAGE = window.localStorage;\n            LOCAL_STORAGE.setItem(\"~~~\", \"!\");\n            LOCAL_STORAGE.removeItem(\"~~~\");\n        } catch (err) {\n            LOCAL_STORAGE = null;\n        }\n        function PersistentStorage(namespace, override) {\n            this.prefix = [ \"__\", namespace, \"__\" ].join(\"\");\n            this.ttlKey = \"__ttl__\";\n            this.keyMatcher = new RegExp(\"^\" + _.escapeRegExChars(this.prefix));\n            this.ls = override || LOCAL_STORAGE;\n            !this.ls && this._noop();\n        }\n        _.mixin(PersistentStorage.prototype, {\n            _prefix: function(key) {\n                return this.prefix + key;\n            },\n            _ttlKey: function(key) {\n                return this._prefix(key) + this.ttlKey;\n            },\n            _noop: function() {\n                this.get = this.set = this.remove = this.clear = this.isExpired = _.noop;\n            },\n            _safeSet: function(key, val) {\n                try {\n                    this.ls.setItem(key, val);\n                } catch (err) {\n                    if (err.name === \"QuotaExceededError\") {\n                        this.clear();\n                        this._noop();\n                    }\n                }\n            },\n            get: function(key) {\n                if (this.isExpired(key)) {\n                    this.remove(key);\n                }\n                return decode(this.ls.getItem(this._prefix(key)));\n            },\n            set: function(key, val, ttl) {\n                if (_.isNumber(ttl)) {\n                    this._safeSet(this._ttlKey(key), encode(now() + ttl));\n                } else {\n                    this.ls.removeItem(this._ttlKey(key));\n                }\n                return this._safeSet(this._prefix(key), encode(val));\n            },\n            remove: function(key) {\n                this.ls.removeItem(this._ttlKey(key));\n                this.ls.removeItem(this._prefix(key));\n                return this;\n            },\n            clear: function() {\n                var i, keys = gatherMatchingKeys(this.keyMatcher);\n                for (i = keys.length; i--; ) {\n                    this.remove(keys[i]);\n                }\n                return this;\n            },\n            isExpired: function(key) {\n                var ttl = decode(this.ls.getItem(this._ttlKey(key)));\n                return _.isNumber(ttl) && now() > ttl ? true : false;\n            }\n        });\n        return PersistentStorage;\n        function now() {\n            return new Date().getTime();\n        }\n        function encode(val) {\n            return JSON.stringify(_.isUndefined(val) ? null : val);\n        }\n        function decode(val) {\n            return $.parseJSON(val);\n        }\n        function gatherMatchingKeys(keyMatcher) {\n            var i, key, keys = [], len = LOCAL_STORAGE.length;\n            for (i = 0; i < len; i++) {\n                if ((key = LOCAL_STORAGE.key(i)).match(keyMatcher)) {\n                    keys.push(key.replace(keyMatcher, \"\"));\n                }\n            }\n            return keys;\n        }\n    }();\n    var Transport = function() {\n        \"use strict\";\n        var pendingRequestsCount = 0, pendingRequests = {}, maxPendingRequests = 6, sharedCache = new LruCache(10);\n        function Transport(o) {\n            o = o || {};\n            this.cancelled = false;\n            this.lastReq = null;\n            this._send = o.transport;\n            this._get = o.limiter ? o.limiter(this._get) : this._get;\n            this._cache = o.cache === false ? new LruCache(0) : sharedCache;\n        }\n        Transport.setMaxPendingRequests = function setMaxPendingRequests(num) {\n            maxPendingRequests = num;\n        };\n        Transport.resetCache = function resetCache() {\n            sharedCache.reset();\n        };\n        _.mixin(Transport.prototype, {\n            _fingerprint: function fingerprint(o) {\n                o = o || {};\n                return o.url + o.type + $.param(o.data || {});\n            },\n            _get: function(o, cb) {\n                var that = this, fingerprint, jqXhr;\n                fingerprint = this._fingerprint(o);\n                if (this.cancelled || fingerprint !== this.lastReq) {\n                    return;\n                }\n                if (jqXhr = pendingRequests[fingerprint]) {\n                    jqXhr.done(done).fail(fail);\n                } else if (pendingRequestsCount < maxPendingRequests) {\n                    pendingRequestsCount++;\n                    pendingRequests[fingerprint] = this._send(o).done(done).fail(fail).always(always);\n                } else {\n                    this.onDeckRequestArgs = [].slice.call(arguments, 0);\n                }\n                function done(resp) {\n                    cb(null, resp);\n                    that._cache.set(fingerprint, resp);\n                }\n                function fail() {\n                    cb(true);\n                }\n                function always() {\n                    pendingRequestsCount--;\n                    delete pendingRequests[fingerprint];\n                    if (that.onDeckRequestArgs) {\n                        that._get.apply(that, that.onDeckRequestArgs);\n                        that.onDeckRequestArgs = null;\n                    }\n                }\n            },\n            get: function(o, cb) {\n                var resp, fingerprint;\n                cb = cb || $.noop;\n                o = _.isString(o) ? {\n                    url: o\n                } : o || {};\n                fingerprint = this._fingerprint(o);\n                this.cancelled = false;\n                this.lastReq = fingerprint;\n                if (resp = this._cache.get(fingerprint)) {\n                    cb(null, resp);\n                } else {\n                    this._get(o, cb);\n                }\n            },\n            cancel: function() {\n                this.cancelled = true;\n            }\n        });\n        return Transport;\n    }();\n    var SearchIndex = window.SearchIndex = function() {\n        \"use strict\";\n        var CHILDREN = \"c\", IDS = \"i\";\n        function SearchIndex(o) {\n            o = o || {};\n            if (!o.datumTokenizer || !o.queryTokenizer) {\n                $.error(\"datumTokenizer and queryTokenizer are both required\");\n            }\n            this.identify = o.identify || _.stringify;\n            this.datumTokenizer = o.datumTokenizer;\n            this.queryTokenizer = o.queryTokenizer;\n            this.reset();\n        }\n        _.mixin(SearchIndex.prototype, {\n            bootstrap: function bootstrap(o) {\n                this.datums = o.datums;\n                this.trie = o.trie;\n            },\n            add: function(data) {\n                var that = this;\n                data = _.isArray(data) ? data : [ data ];\n                _.each(data, function(datum) {\n                    var id, tokens;\n                    that.datums[id = that.identify(datum)] = datum;\n                    tokens = normalizeTokens(that.datumTokenizer(datum));\n                    _.each(tokens, function(token) {\n                        var node, chars, ch;\n                        node = that.trie;\n                        chars = token.split(\"\");\n                        while (ch = chars.shift()) {\n                            node = node[CHILDREN][ch] || (node[CHILDREN][ch] = newNode());\n                            node[IDS].push(id);\n                        }\n                    });\n                });\n            },\n            get: function get(ids) {\n                var that = this;\n                return _.map(ids, function(id) {\n                    return that.datums[id];\n                });\n            },\n            search: function search(query) {\n                var that = this, tokens, matches;\n                tokens = normalizeTokens(this.queryTokenizer(query));\n                _.each(tokens, function(token) {\n                    var node, chars, ch, ids;\n                    if (matches && matches.length === 0) {\n                        return false;\n                    }\n                    node = that.trie;\n                    chars = token.split(\"\");\n                    while (node && (ch = chars.shift())) {\n                        node = node[CHILDREN][ch];\n                    }\n                    if (node && chars.length === 0) {\n                        ids = node[IDS].slice(0);\n                        matches = matches ? getIntersection(matches, ids) : ids;\n                    } else {\n                        matches = [];\n                        return false;\n                    }\n                });\n                return matches ? _.map(unique(matches), function(id) {\n                    return that.datums[id];\n                }) : [];\n            },\n            all: function all() {\n                var values = [];\n                for (var key in this.datums) {\n                    values.push(this.datums[key]);\n                }\n                return values;\n            },\n            reset: function reset() {\n                this.datums = {};\n                this.trie = newNode();\n            },\n            serialize: function serialize() {\n                return {\n                    datums: this.datums,\n                    trie: this.trie\n                };\n            }\n        });\n        return SearchIndex;\n        function normalizeTokens(tokens) {\n            tokens = _.filter(tokens, function(token) {\n                return !!token;\n            });\n            tokens = _.map(tokens, function(token) {\n                return token.toLowerCase();\n            });\n            return tokens;\n        }\n        function newNode() {\n            var node = {};\n            node[IDS] = [];\n            node[CHILDREN] = {};\n            return node;\n        }\n        function unique(array) {\n            var seen = {}, uniques = [];\n            for (var i = 0, len = array.length; i < len; i++) {\n                if (!seen[array[i]]) {\n                    seen[array[i]] = true;\n                    uniques.push(array[i]);\n                }\n            }\n            return uniques;\n        }\n        function getIntersection(arrayA, arrayB) {\n            var ai = 0, bi = 0, intersection = [];\n            arrayA = arrayA.sort();\n            arrayB = arrayB.sort();\n            var lenArrayA = arrayA.length, lenArrayB = arrayB.length;\n            while (ai < lenArrayA && bi < lenArrayB) {\n                if (arrayA[ai] < arrayB[bi]) {\n                    ai++;\n                } else if (arrayA[ai] > arrayB[bi]) {\n                    bi++;\n                } else {\n                    intersection.push(arrayA[ai]);\n                    ai++;\n                    bi++;\n                }\n            }\n            return intersection;\n        }\n    }();\n    var Prefetch = function() {\n        \"use strict\";\n        var keys;\n        keys = {\n            data: \"data\",\n            protocol: \"protocol\",\n            thumbprint: \"thumbprint\"\n        };\n        function Prefetch(o) {\n            this.url = o.url;\n            this.ttl = o.ttl;\n            this.cache = o.cache;\n            this.prepare = o.prepare;\n            this.transform = o.transform;\n            this.transport = o.transport;\n            this.thumbprint = o.thumbprint;\n            this.storage = new PersistentStorage(o.cacheKey);\n        }\n        _.mixin(Prefetch.prototype, {\n            _settings: function settings() {\n                return {\n                    url: this.url,\n                    type: \"GET\",\n                    dataType: \"json\"\n                };\n            },\n            store: function store(data) {\n                if (!this.cache) {\n                    return;\n                }\n                this.storage.set(keys.data, data, this.ttl);\n                this.storage.set(keys.protocol, location.protocol, this.ttl);\n                this.storage.set(keys.thumbprint, this.thumbprint, this.ttl);\n            },\n            fromCache: function fromCache() {\n                var stored = {}, isExpired;\n                if (!this.cache) {\n                    return null;\n                }\n                stored.data = this.storage.get(keys.data);\n                stored.protocol = this.storage.get(keys.protocol);\n                stored.thumbprint = this.storage.get(keys.thumbprint);\n                isExpired = stored.thumbprint !== this.thumbprint || stored.protocol !== location.protocol;\n                return stored.data && !isExpired ? stored.data : null;\n            },\n            fromNetwork: function(cb) {\n                var that = this, settings;\n                if (!cb) {\n                    return;\n                }\n                settings = this.prepare(this._settings());\n                this.transport(settings).fail(onError).done(onResponse);\n                function onError() {\n                    cb(true);\n                }\n                function onResponse(resp) {\n                    cb(null, that.transform(resp));\n                }\n            },\n            clear: function clear() {\n                this.storage.clear();\n                return this;\n            }\n        });\n        return Prefetch;\n    }();\n    var Remote = function() {\n        \"use strict\";\n        function Remote(o) {\n            this.url = o.url;\n            this.prepare = o.prepare;\n            this.transform = o.transform;\n            this.transport = new Transport({\n                cache: o.cache,\n                limiter: o.limiter,\n                transport: o.transport\n            });\n        }\n        _.mixin(Remote.prototype, {\n            _settings: function settings() {\n                return {\n                    url: this.url,\n                    type: \"GET\",\n                    dataType: \"json\"\n                };\n            },\n            get: function get(query, cb) {\n                var that = this, settings;\n                if (!cb) {\n                    return;\n                }\n                query = query || \"\";\n                settings = this.prepare(query, this._settings());\n                return this.transport.get(settings, onResponse);\n                function onResponse(err, resp) {\n                    err ? cb([]) : cb(that.transform(resp));\n                }\n            },\n            cancelLastRequest: function cancelLastRequest() {\n                this.transport.cancel();\n            }\n        });\n        return Remote;\n    }();\n    var oParser = function() {\n        \"use strict\";\n        return function parse(o) {\n            var defaults, sorter;\n            defaults = {\n                initialize: true,\n                identify: _.stringify,\n                datumTokenizer: null,\n                queryTokenizer: null,\n                sufficient: 5,\n                sorter: null,\n                local: [],\n                prefetch: null,\n                remote: null\n            };\n            o = _.mixin(defaults, o || {});\n            !o.datumTokenizer && $.error(\"datumTokenizer is required\");\n            !o.queryTokenizer && $.error(\"queryTokenizer is required\");\n            sorter = o.sorter;\n            o.sorter = sorter ? function(x) {\n                return x.sort(sorter);\n            } : _.identity;\n            o.local = _.isFunction(o.local) ? o.local() : o.local;\n            o.prefetch = parsePrefetch(o.prefetch);\n            o.remote = parseRemote(o.remote);\n            return o;\n        };\n        function parsePrefetch(o) {\n            var defaults;\n            if (!o) {\n                return null;\n            }\n            defaults = {\n                url: null,\n                ttl: 24 * 60 * 60 * 1e3,\n                cache: true,\n                cacheKey: null,\n                thumbprint: \"\",\n                prepare: _.identity,\n                transform: _.identity,\n                transport: null\n            };\n            o = _.isString(o) ? {\n                url: o\n            } : o;\n            o = _.mixin(defaults, o);\n            !o.url && $.error(\"prefetch requires url to be set\");\n            o.transform = o.filter || o.transform;\n            o.cacheKey = o.cacheKey || o.url;\n            o.thumbprint = VERSION + o.thumbprint;\n            o.transport = o.transport ? callbackToDeferred(o.transport) : $.ajax;\n            return o;\n        }\n        function parseRemote(o) {\n            var defaults;\n            if (!o) {\n                return;\n            }\n            defaults = {\n                url: null,\n                cache: true,\n                prepare: null,\n                replace: null,\n                wildcard: null,\n                limiter: null,\n                rateLimitBy: \"debounce\",\n                rateLimitWait: 300,\n                transform: _.identity,\n                transport: null\n            };\n            o = _.isString(o) ? {\n                url: o\n            } : o;\n            o = _.mixin(defaults, o);\n            !o.url && $.error(\"remote requires url to be set\");\n            o.transform = o.filter || o.transform;\n            o.prepare = toRemotePrepare(o);\n            o.limiter = toLimiter(o);\n            o.transport = o.transport ? callbackToDeferred(o.transport) : $.ajax;\n            delete o.replace;\n            delete o.wildcard;\n            delete o.rateLimitBy;\n            delete o.rateLimitWait;\n            return o;\n        }\n        function toRemotePrepare(o) {\n            var prepare, replace, wildcard;\n            prepare = o.prepare;\n            replace = o.replace;\n            wildcard = o.wildcard;\n            if (prepare) {\n                return prepare;\n            }\n            if (replace) {\n                prepare = prepareByReplace;\n            } else if (o.wildcard) {\n                prepare = prepareByWildcard;\n            } else {\n                prepare = idenityPrepare;\n            }\n            return prepare;\n            function prepareByReplace(query, settings) {\n                settings.url = replace(settings.url, query);\n                return settings;\n            }\n            function prepareByWildcard(query, settings) {\n                settings.url = settings.url.replace(wildcard, encodeURIComponent(query));\n                return settings;\n            }\n            function idenityPrepare(query, settings) {\n                return settings;\n            }\n        }\n        function toLimiter(o) {\n            var limiter, method, wait;\n            limiter = o.limiter;\n            method = o.rateLimitBy;\n            wait = o.rateLimitWait;\n            if (!limiter) {\n                limiter = /^throttle$/i.test(method) ? throttle(wait) : debounce(wait);\n            }\n            return limiter;\n            function debounce(wait) {\n                return function debounce(fn) {\n                    return _.debounce(fn, wait);\n                };\n            }\n            function throttle(wait) {\n                return function throttle(fn) {\n                    return _.throttle(fn, wait);\n                };\n            }\n        }\n        function callbackToDeferred(fn) {\n            return function wrapper(o) {\n                var deferred = $.Deferred();\n                fn(o, onSuccess, onError);\n                return deferred;\n                function onSuccess(resp) {\n                    _.defer(function() {\n                        deferred.resolve(resp);\n                    });\n                }\n                function onError(err) {\n                    _.defer(function() {\n                        deferred.reject(err);\n                    });\n                }\n            };\n        }\n    }();\n    var Bloodhound = function() {\n        \"use strict\";\n        var old;\n        old = window && window.Bloodhound;\n        function Bloodhound(o) {\n            o = oParser(o);\n            this.sorter = o.sorter;\n            this.identify = o.identify;\n            this.sufficient = o.sufficient;\n            this.local = o.local;\n            this.remote = o.remote ? new Remote(o.remote) : null;\n            this.prefetch = o.prefetch ? new Prefetch(o.prefetch) : null;\n            this.index = new SearchIndex({\n                identify: this.identify,\n                datumTokenizer: o.datumTokenizer,\n                queryTokenizer: o.queryTokenizer\n            });\n            o.initialize !== false && this.initialize();\n        }\n        Bloodhound.noConflict = function noConflict() {\n            window && (window.Bloodhound = old);\n            return Bloodhound;\n        };\n        Bloodhound.tokenizers = tokenizers;\n        _.mixin(Bloodhound.prototype, {\n            __ttAdapter: function ttAdapter() {\n                var that = this;\n                return this.remote ? withAsync : withoutAsync;\n                function withAsync(query, sync, async) {\n                    return that.search(query, sync, async);\n                }\n                function withoutAsync(query, sync) {\n                    return that.search(query, sync);\n                }\n            },\n            _loadPrefetch: function loadPrefetch() {\n                var that = this, deferred, serialized;\n                deferred = $.Deferred();\n                if (!this.prefetch) {\n                    deferred.resolve();\n                } else if (serialized = this.prefetch.fromCache()) {\n                    this.index.bootstrap(serialized);\n                    deferred.resolve();\n                } else {\n                    this.prefetch.fromNetwork(done);\n                }\n                return deferred.promise();\n                function done(err, data) {\n                    if (err) {\n                        return deferred.reject();\n                    }\n                    that.add(data);\n                    that.prefetch.store(that.index.serialize());\n                    deferred.resolve();\n                }\n            },\n            _initialize: function initialize() {\n                var that = this, deferred;\n                this.clear();\n                (this.initPromise = this._loadPrefetch()).done(addLocalToIndex);\n                return this.initPromise;\n                function addLocalToIndex() {\n                    that.add(that.local);\n                }\n            },\n            initialize: function initialize(force) {\n                return !this.initPromise || force ? this._initialize() : this.initPromise;\n            },\n            add: function add(data) {\n                this.index.add(data);\n                return this;\n            },\n            get: function get(ids) {\n                ids = _.isArray(ids) ? ids : [].slice.call(arguments);\n                return this.index.get(ids);\n            },\n            search: function search(query, sync, async) {\n                var that = this, local;\n                local = this.sorter(this.index.search(query));\n                sync(this.remote ? local.slice() : local);\n                if (this.remote && local.length < this.sufficient) {\n                    this.remote.get(query, processRemote);\n                } else if (this.remote) {\n                    this.remote.cancelLastRequest();\n                }\n                return this;\n                function processRemote(remote) {\n                    var nonDuplicates = [];\n                    _.each(remote, function(r) {\n                        !_.some(local, function(l) {\n                            return that.identify(r) === that.identify(l);\n                        }) && nonDuplicates.push(r);\n                    });\n                    async && async(nonDuplicates);\n                }\n            },\n            all: function all() {\n                return this.index.all();\n            },\n            clear: function clear() {\n                this.index.reset();\n                return this;\n            },\n            clearPrefetchCache: function clearPrefetchCache() {\n                this.prefetch && this.prefetch.clear();\n                return this;\n            },\n            clearRemoteCache: function clearRemoteCache() {\n                Transport.resetCache();\n                return this;\n            },\n            ttAdapter: function ttAdapter() {\n                return this.__ttAdapter();\n            }\n        });\n        return Bloodhound;\n    }();\n    return Bloodhound;\n});\n","/*!\n * typeahead.js 0.11.1\n * https://github.com/twitter/typeahead.js\n * Copyright 2013-2015 Twitter, Inc. and other contributors; Licensed MIT\n */\n\n(function(root, factory) {\n    if (typeof define === \"function\" && define.amd) {\n        define(\"typeahead.js\", [ \"jquery\" ], function(a0) {\n            return factory(a0);\n        });\n    } else if (typeof exports === \"object\") {\n        module.exports = factory(require(\"jquery\"));\n    } else {\n        factory(jQuery);\n    }\n})(this, function($) {\n    var _ = function() {\n        \"use strict\";\n        return {\n            isMsie: function() {\n                return /(msie|trident)/i.test(navigator.userAgent) ? navigator.userAgent.match(/(msie |rv:)(\\d+(.\\d+)?)/i)[2] : false;\n            },\n            isBlankString: function(str) {\n                return !str || /^\\s*$/.test(str);\n            },\n            escapeRegExChars: function(str) {\n                return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\");\n            },\n            isString: function(obj) {\n                return typeof obj === \"string\";\n            },\n            isNumber: function(obj) {\n                return typeof obj === \"number\";\n            },\n            isArray: $.isArray,\n            isFunction: $.isFunction,\n            isObject: $.isPlainObject,\n            isUndefined: function(obj) {\n                return typeof obj === \"undefined\";\n            },\n            isElement: function(obj) {\n                return !!(obj && obj.nodeType === 1);\n            },\n            isJQuery: function(obj) {\n                return obj instanceof $;\n            },\n            toStr: function toStr(s) {\n                return _.isUndefined(s) || s === null ? \"\" : s + \"\";\n            },\n            bind: $.proxy,\n            each: function(collection, cb) {\n                $.each(collection, reverseArgs);\n                function reverseArgs(index, value) {\n                    return cb(value, index);\n                }\n            },\n            map: $.map,\n            filter: $.grep,\n            every: function(obj, test) {\n                var result = true;\n                if (!obj) {\n                    return result;\n                }\n                $.each(obj, function(key, val) {\n                    if (!(result = test.call(null, val, key, obj))) {\n                        return false;\n                    }\n                });\n                return !!result;\n            },\n            some: function(obj, test) {\n                var result = false;\n                if (!obj) {\n                    return result;\n                }\n                $.each(obj, function(key, val) {\n                    if (result = test.call(null, val, key, obj)) {\n                        return false;\n                    }\n                });\n                return !!result;\n            },\n            mixin: $.extend,\n            identity: function(x) {\n                return x;\n            },\n            clone: function(obj) {\n                return $.extend(true, {}, obj);\n            },\n            getIdGenerator: function() {\n                var counter = 0;\n                return function() {\n                    return counter++;\n                };\n            },\n            templatify: function templatify(obj) {\n                return $.isFunction(obj) ? obj : template;\n                function template() {\n                    return String(obj);\n                }\n            },\n            defer: function(fn) {\n                setTimeout(fn, 0);\n            },\n            debounce: function(func, wait, immediate) {\n                var timeout, result;\n                return function() {\n                    var context = this, args = arguments, later, callNow;\n                    later = function() {\n                        timeout = null;\n                        if (!immediate) {\n                            result = func.apply(context, args);\n                        }\n                    };\n                    callNow = immediate && !timeout;\n                    clearTimeout(timeout);\n                    timeout = setTimeout(later, wait);\n                    if (callNow) {\n                        result = func.apply(context, args);\n                    }\n                    return result;\n                };\n            },\n            throttle: function(func, wait) {\n                var context, args, timeout, result, previous, later;\n                previous = 0;\n                later = function() {\n                    previous = new Date();\n                    timeout = null;\n                    result = func.apply(context, args);\n                };\n                return function() {\n                    var now = new Date(), remaining = wait - (now - previous);\n                    context = this;\n                    args = arguments;\n                    if (remaining <= 0) {\n                        clearTimeout(timeout);\n                        timeout = null;\n                        previous = now;\n                        result = func.apply(context, args);\n                    } else if (!timeout) {\n                        timeout = setTimeout(later, remaining);\n                    }\n                    return result;\n                };\n            },\n            stringify: function(val) {\n                return _.isString(val) ? val : JSON.stringify(val);\n            },\n            noop: function() {}\n        };\n    }();\n    var WWW = function() {\n        \"use strict\";\n        var defaultClassNames = {\n            wrapper: \"twitter-typeahead\",\n            input: \"tt-input\",\n            hint: \"tt-hint\",\n            menu: \"tt-menu\",\n            dataset: \"tt-dataset\",\n            suggestion: \"tt-suggestion\",\n            selectable: \"tt-selectable\",\n            empty: \"tt-empty\",\n            open: \"tt-open\",\n            cursor: \"tt-cursor\",\n            highlight: \"tt-highlight\"\n        };\n        return build;\n        function build(o) {\n            var www, classes;\n            classes = _.mixin({}, defaultClassNames, o);\n            www = {\n                css: buildCss(),\n                classes: classes,\n                html: buildHtml(classes),\n                selectors: buildSelectors(classes)\n            };\n            return {\n                css: www.css,\n                html: www.html,\n                classes: www.classes,\n                selectors: www.selectors,\n                mixin: function(o) {\n                    _.mixin(o, www);\n                }\n            };\n        }\n        function buildHtml(c) {\n            return {\n                wrapper: '<span class=\"' + c.wrapper + '\"></span>',\n                menu: '<div class=\"' + c.menu + '\"></div>'\n            };\n        }\n        function buildSelectors(classes) {\n            var selectors = {};\n            _.each(classes, function(v, k) {\n                selectors[k] = \".\" + v;\n            });\n            return selectors;\n        }\n        function buildCss() {\n            var css = {\n                wrapper: {\n                    position: \"relative\",\n                    display: \"inline-block\"\n                },\n                hint: {\n                    position: \"absolute\",\n                    top: \"0\",\n                    left: \"0\",\n                    borderColor: \"transparent\",\n                    boxShadow: \"none\",\n                    opacity: \"1\"\n                },\n                input: {\n                    position: \"relative\",\n                    verticalAlign: \"top\",\n                    backgroundColor: \"transparent\"\n                },\n                inputWithNoHint: {\n                    position: \"relative\",\n                    verticalAlign: \"top\"\n                },\n                menu: {\n                    position: \"absolute\",\n                    top: \"100%\",\n                    left: \"0\",\n                    zIndex: \"100\",\n                    display: \"none\"\n                },\n                ltr: {\n                    left: \"0\",\n                    right: \"auto\"\n                },\n                rtl: {\n                    left: \"auto\",\n                    right: \" 0\"\n                }\n            };\n            if (_.isMsie()) {\n                _.mixin(css.input, {\n                    backgroundImage: \"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)\"\n                });\n            }\n            return css;\n        }\n    }();\n    var EventBus = function() {\n        \"use strict\";\n        var namespace, deprecationMap;\n        namespace = \"typeahead:\";\n        deprecationMap = {\n            render: \"rendered\",\n            cursorchange: \"cursorchanged\",\n            select: \"selected\",\n            autocomplete: \"autocompleted\"\n        };\n        function EventBus(o) {\n            if (!o || !o.el) {\n                $.error(\"EventBus initialized without el\");\n            }\n            this.$el = $(o.el);\n        }\n        _.mixin(EventBus.prototype, {\n            _trigger: function(type, args) {\n                var $e;\n                $e = $.Event(namespace + type);\n                (args = args || []).unshift($e);\n                this.$el.trigger.apply(this.$el, args);\n                return $e;\n            },\n            before: function(type) {\n                var args, $e;\n                args = [].slice.call(arguments, 1);\n                $e = this._trigger(\"before\" + type, args);\n                return $e.isDefaultPrevented();\n            },\n            trigger: function(type) {\n                var deprecatedType;\n                this._trigger(type, [].slice.call(arguments, 1));\n                if (deprecatedType = deprecationMap[type]) {\n                    this._trigger(deprecatedType, [].slice.call(arguments, 1));\n                }\n            }\n        });\n        return EventBus;\n    }();\n    var EventEmitter = function() {\n        \"use strict\";\n        var splitter = /\\s+/, nextTick = getNextTick();\n        return {\n            onSync: onSync,\n            onAsync: onAsync,\n            off: off,\n            trigger: trigger\n        };\n        function on(method, types, cb, context) {\n            var type;\n            if (!cb) {\n                return this;\n            }\n            types = types.split(splitter);\n            cb = context ? bindContext(cb, context) : cb;\n            this._callbacks = this._callbacks || {};\n            while (type = types.shift()) {\n                this._callbacks[type] = this._callbacks[type] || {\n                    sync: [],\n                    async: []\n                };\n                this._callbacks[type][method].push(cb);\n            }\n            return this;\n        }\n        function onAsync(types, cb, context) {\n            return on.call(this, \"async\", types, cb, context);\n        }\n        function onSync(types, cb, context) {\n            return on.call(this, \"sync\", types, cb, context);\n        }\n        function off(types) {\n            var type;\n            if (!this._callbacks) {\n                return this;\n            }\n            types = types.split(splitter);\n            while (type = types.shift()) {\n                delete this._callbacks[type];\n            }\n            return this;\n        }\n        function trigger(types) {\n            var type, callbacks, args, syncFlush, asyncFlush;\n            if (!this._callbacks) {\n                return this;\n            }\n            types = types.split(splitter);\n            args = [].slice.call(arguments, 1);\n            while ((type = types.shift()) && (callbacks = this._callbacks[type])) {\n                syncFlush = getFlush(callbacks.sync, this, [ type ].concat(args));\n                asyncFlush = getFlush(callbacks.async, this, [ type ].concat(args));\n                syncFlush() && nextTick(asyncFlush);\n            }\n            return this;\n        }\n        function getFlush(callbacks, context, args) {\n            return flush;\n            function flush() {\n                var cancelled;\n                for (var i = 0, len = callbacks.length; !cancelled && i < len; i += 1) {\n                    cancelled = callbacks[i].apply(context, args) === false;\n                }\n                return !cancelled;\n            }\n        }\n        function getNextTick() {\n            var nextTickFn;\n            if (window.setImmediate) {\n                nextTickFn = function nextTickSetImmediate(fn) {\n                    setImmediate(function() {\n                        fn();\n                    });\n                };\n            } else {\n                nextTickFn = function nextTickSetTimeout(fn) {\n                    setTimeout(function() {\n                        fn();\n                    }, 0);\n                };\n            }\n            return nextTickFn;\n        }\n        function bindContext(fn, context) {\n            return fn.bind ? fn.bind(context) : function() {\n                fn.apply(context, [].slice.call(arguments, 0));\n            };\n        }\n    }();\n    var highlight = function(doc) {\n        \"use strict\";\n        var defaults = {\n            node: null,\n            pattern: null,\n            tagName: \"strong\",\n            className: null,\n            wordsOnly: false,\n            caseSensitive: false\n        };\n        return function hightlight(o) {\n            var regex;\n            o = _.mixin({}, defaults, o);\n            if (!o.node || !o.pattern) {\n                return;\n            }\n            o.pattern = _.isArray(o.pattern) ? o.pattern : [ o.pattern ];\n            regex = getRegex(o.pattern, o.caseSensitive, o.wordsOnly);\n            traverse(o.node, hightlightTextNode);\n            function hightlightTextNode(textNode) {\n                var match, patternNode, wrapperNode;\n                if (match = regex.exec(textNode.data)) {\n                    wrapperNode = doc.createElement(o.tagName);\n                    o.className && (wrapperNode.className = o.className);\n                    patternNode = textNode.splitText(match.index);\n                    patternNode.splitText(match[0].length);\n                    wrapperNode.appendChild(patternNode.cloneNode(true));\n                    textNode.parentNode.replaceChild(wrapperNode, patternNode);\n                }\n                return !!match;\n            }\n            function traverse(el, hightlightTextNode) {\n                var childNode, TEXT_NODE_TYPE = 3;\n                for (var i = 0; i < el.childNodes.length; i++) {\n                    childNode = el.childNodes[i];\n                    if (childNode.nodeType === TEXT_NODE_TYPE) {\n                        i += hightlightTextNode(childNode) ? 1 : 0;\n                    } else {\n                        traverse(childNode, hightlightTextNode);\n                    }\n                }\n            }\n        };\n        function getRegex(patterns, caseSensitive, wordsOnly) {\n            var escapedPatterns = [], regexStr;\n            for (var i = 0, len = patterns.length; i < len; i++) {\n                escapedPatterns.push(_.escapeRegExChars(patterns[i]));\n            }\n            regexStr = wordsOnly ? \"\\\\b(\" + escapedPatterns.join(\"|\") + \")\\\\b\" : \"(\" + escapedPatterns.join(\"|\") + \")\";\n            return caseSensitive ? new RegExp(regexStr) : new RegExp(regexStr, \"i\");\n        }\n    }(window.document);\n    var Input = function() {\n        \"use strict\";\n        var specialKeyCodeMap;\n        specialKeyCodeMap = {\n            9: \"tab\",\n            27: \"esc\",\n            37: \"left\",\n            39: \"right\",\n            13: \"enter\",\n            38: \"up\",\n            40: \"down\"\n        };\n        function Input(o, www) {\n            o = o || {};\n            if (!o.input) {\n                $.error(\"input is missing\");\n            }\n            www.mixin(this);\n            this.$hint = $(o.hint);\n            this.$input = $(o.input);\n            this.query = this.$input.val();\n            this.queryWhenFocused = this.hasFocus() ? this.query : null;\n            this.$overflowHelper = buildOverflowHelper(this.$input);\n            this._checkLanguageDirection();\n            if (this.$hint.length === 0) {\n                this.setHint = this.getHint = this.clearHint = this.clearHintIfInvalid = _.noop;\n            }\n        }\n        Input.normalizeQuery = function(str) {\n            return _.toStr(str).replace(/^\\s*/g, \"\").replace(/\\s{2,}/g, \" \");\n        };\n        _.mixin(Input.prototype, EventEmitter, {\n            _onBlur: function onBlur() {\n                this.resetInputValue();\n                this.trigger(\"blurred\");\n            },\n            _onFocus: function onFocus() {\n                this.queryWhenFocused = this.query;\n                this.trigger(\"focused\");\n            },\n            _onKeydown: function onKeydown($e) {\n                var keyName = specialKeyCodeMap[$e.which || $e.keyCode];\n                this._managePreventDefault(keyName, $e);\n                if (keyName && this._shouldTrigger(keyName, $e)) {\n                    this.trigger(keyName + \"Keyed\", $e);\n                }\n            },\n            _onInput: function onInput() {\n                this._setQuery(this.getInputValue());\n                this.clearHintIfInvalid();\n                this._checkLanguageDirection();\n            },\n            _managePreventDefault: function managePreventDefault(keyName, $e) {\n                var preventDefault;\n                switch (keyName) {\n                  case \"up\":\n                  case \"down\":\n                    preventDefault = !withModifier($e);\n                    break;\n\n                  default:\n                    preventDefault = false;\n                }\n                preventDefault && $e.preventDefault();\n            },\n            _shouldTrigger: function shouldTrigger(keyName, $e) {\n                var trigger;\n                switch (keyName) {\n                  case \"tab\":\n                    trigger = !withModifier($e);\n                    break;\n\n                  default:\n                    trigger = true;\n                }\n                return trigger;\n            },\n            _checkLanguageDirection: function checkLanguageDirection() {\n                var dir = (this.$input.css(\"direction\") || \"ltr\").toLowerCase();\n                if (this.dir !== dir) {\n                    this.dir = dir;\n                    this.$hint.attr(\"dir\", dir);\n                    this.trigger(\"langDirChanged\", dir);\n                }\n            },\n            _setQuery: function setQuery(val, silent) {\n                var areEquivalent, hasDifferentWhitespace;\n                areEquivalent = areQueriesEquivalent(val, this.query);\n                hasDifferentWhitespace = areEquivalent ? this.query.length !== val.length : false;\n                this.query = val;\n                if (!silent && !areEquivalent) {\n                    this.trigger(\"queryChanged\", this.query);\n                } else if (!silent && hasDifferentWhitespace) {\n                    this.trigger(\"whitespaceChanged\", this.query);\n                }\n            },\n            bind: function() {\n                var that = this, onBlur, onFocus, onKeydown, onInput;\n                onBlur = _.bind(this._onBlur, this);\n                onFocus = _.bind(this._onFocus, this);\n                onKeydown = _.bind(this._onKeydown, this);\n                onInput = _.bind(this._onInput, this);\n                this.$input.on(\"blur.tt\", onBlur).on(\"focus.tt\", onFocus).on(\"keydown.tt\", onKeydown);\n                if (!_.isMsie() || _.isMsie() > 9) {\n                    this.$input.on(\"input.tt\", onInput);\n                } else {\n                    this.$input.on(\"keydown.tt keypress.tt cut.tt paste.tt\", function($e) {\n                        if (specialKeyCodeMap[$e.which || $e.keyCode]) {\n                            return;\n                        }\n                        _.defer(_.bind(that._onInput, that, $e));\n                    });\n                }\n                return this;\n            },\n            focus: function focus() {\n                this.$input.focus();\n            },\n            blur: function blur() {\n                this.$input.blur();\n            },\n            getLangDir: function getLangDir() {\n                return this.dir;\n            },\n            getQuery: function getQuery() {\n                return this.query || \"\";\n            },\n            setQuery: function setQuery(val, silent) {\n                this.setInputValue(val);\n                this._setQuery(val, silent);\n            },\n            hasQueryChangedSinceLastFocus: function hasQueryChangedSinceLastFocus() {\n                return this.query !== this.queryWhenFocused;\n            },\n            getInputValue: function getInputValue() {\n                return this.$input.val();\n            },\n            setInputValue: function setInputValue(value) {\n                this.$input.val(value);\n                this.clearHintIfInvalid();\n                this._checkLanguageDirection();\n            },\n            resetInputValue: function resetInputValue() {\n                this.setInputValue(this.query);\n            },\n            getHint: function getHint() {\n                return this.$hint.val();\n            },\n            setHint: function setHint(value) {\n                this.$hint.val(value);\n            },\n            clearHint: function clearHint() {\n                this.setHint(\"\");\n            },\n            clearHintIfInvalid: function clearHintIfInvalid() {\n                var val, hint, valIsPrefixOfHint, isValid;\n                val = this.getInputValue();\n                hint = this.getHint();\n                valIsPrefixOfHint = val !== hint && hint.indexOf(val) === 0;\n                isValid = val !== \"\" && valIsPrefixOfHint && !this.hasOverflow();\n                !isValid && this.clearHint();\n            },\n            hasFocus: function hasFocus() {\n                return this.$input.is(\":focus\");\n            },\n            hasOverflow: function hasOverflow() {\n                var constraint = this.$input.width() - 2;\n                this.$overflowHelper.text(this.getInputValue());\n                return this.$overflowHelper.width() >= constraint;\n            },\n            isCursorAtEnd: function() {\n                var valueLength, selectionStart, range;\n                valueLength = this.$input.val().length;\n                selectionStart = this.$input[0].selectionStart;\n                if (_.isNumber(selectionStart)) {\n                    return selectionStart === valueLength;\n                } else if (document.selection) {\n                    range = document.selection.createRange();\n                    range.moveStart(\"character\", -valueLength);\n                    return valueLength === range.text.length;\n                }\n                return true;\n            },\n            destroy: function destroy() {\n                this.$hint.off(\".tt\");\n                this.$input.off(\".tt\");\n                this.$overflowHelper.remove();\n                this.$hint = this.$input = this.$overflowHelper = $(\"<div>\");\n            }\n        });\n        return Input;\n        function buildOverflowHelper($input) {\n            return $('<pre aria-hidden=\"true\"></pre>').css({\n                position: \"absolute\",\n                visibility: \"hidden\",\n                whiteSpace: \"pre\",\n                fontFamily: $input.css(\"font-family\"),\n                fontSize: $input.css(\"font-size\"),\n                fontStyle: $input.css(\"font-style\"),\n                fontVariant: $input.css(\"font-variant\"),\n                fontWeight: $input.css(\"font-weight\"),\n                wordSpacing: $input.css(\"word-spacing\"),\n                letterSpacing: $input.css(\"letter-spacing\"),\n                textIndent: $input.css(\"text-indent\"),\n                textRendering: $input.css(\"text-rendering\"),\n                textTransform: $input.css(\"text-transform\")\n            }).insertAfter($input);\n        }\n        function areQueriesEquivalent(a, b) {\n            return Input.normalizeQuery(a) === Input.normalizeQuery(b);\n        }\n        function withModifier($e) {\n            return $e.altKey || $e.ctrlKey || $e.metaKey || $e.shiftKey;\n        }\n    }();\n    var Dataset = function() {\n        \"use strict\";\n        var keys, nameGenerator;\n        keys = {\n            val: \"tt-selectable-display\",\n            obj: \"tt-selectable-object\"\n        };\n        nameGenerator = _.getIdGenerator();\n        function Dataset(o, www) {\n            o = o || {};\n            o.templates = o.templates || {};\n            o.templates.notFound = o.templates.notFound || o.templates.empty;\n            if (!o.source) {\n                $.error(\"missing source\");\n            }\n            if (!o.node) {\n                $.error(\"missing node\");\n            }\n            if (o.name && !isValidName(o.name)) {\n                $.error(\"invalid dataset name: \" + o.name);\n            }\n            www.mixin(this);\n            this.highlight = !!o.highlight;\n            this.name = o.name || nameGenerator();\n            this.limit = o.limit || 5;\n            this.displayFn = getDisplayFn(o.display || o.displayKey);\n            this.templates = getTemplates(o.templates, this.displayFn);\n            this.source = o.source.__ttAdapter ? o.source.__ttAdapter() : o.source;\n            this.async = _.isUndefined(o.async) ? this.source.length > 2 : !!o.async;\n            this._resetLastSuggestion();\n            this.$el = $(o.node).addClass(this.classes.dataset).addClass(this.classes.dataset + \"-\" + this.name);\n        }\n        Dataset.extractData = function extractData(el) {\n            var $el = $(el);\n            if ($el.data(keys.obj)) {\n                return {\n                    val: $el.data(keys.val) || \"\",\n                    obj: $el.data(keys.obj) || null\n                };\n            }\n            return null;\n        };\n        _.mixin(Dataset.prototype, EventEmitter, {\n            _overwrite: function overwrite(query, suggestions) {\n                suggestions = suggestions || [];\n                if (suggestions.length) {\n                    this._renderSuggestions(query, suggestions);\n                } else if (this.async && this.templates.pending) {\n                    this._renderPending(query);\n                } else if (!this.async && this.templates.notFound) {\n                    this._renderNotFound(query);\n                } else {\n                    this._empty();\n                }\n                this.trigger(\"rendered\", this.name, suggestions, false);\n            },\n            _append: function append(query, suggestions) {\n                suggestions = suggestions || [];\n                if (suggestions.length && this.$lastSuggestion.length) {\n                    this._appendSuggestions(query, suggestions);\n                } else if (suggestions.length) {\n                    this._renderSuggestions(query, suggestions);\n                } else if (!this.$lastSuggestion.length && this.templates.notFound) {\n                    this._renderNotFound(query);\n                }\n                this.trigger(\"rendered\", this.name, suggestions, true);\n            },\n            _renderSuggestions: function renderSuggestions(query, suggestions) {\n                var $fragment;\n                $fragment = this._getSuggestionsFragment(query, suggestions);\n                this.$lastSuggestion = $fragment.children().last();\n                this.$el.html($fragment).prepend(this._getHeader(query, suggestions)).append(this._getFooter(query, suggestions));\n            },\n            _appendSuggestions: function appendSuggestions(query, suggestions) {\n                var $fragment, $lastSuggestion;\n                $fragment = this._getSuggestionsFragment(query, suggestions);\n                $lastSuggestion = $fragment.children().last();\n                this.$lastSuggestion.after($fragment);\n                this.$lastSuggestion = $lastSuggestion;\n            },\n            _renderPending: function renderPending(query) {\n                var template = this.templates.pending;\n                this._resetLastSuggestion();\n                template && this.$el.html(template({\n                    query: query,\n                    dataset: this.name\n                }));\n            },\n            _renderNotFound: function renderNotFound(query) {\n                var template = this.templates.notFound;\n                this._resetLastSuggestion();\n                template && this.$el.html(template({\n                    query: query,\n                    dataset: this.name\n                }));\n            },\n            _empty: function empty() {\n                this.$el.empty();\n                this._resetLastSuggestion();\n            },\n            _getSuggestionsFragment: function getSuggestionsFragment(query, suggestions) {\n                var that = this, fragment;\n                fragment = document.createDocumentFragment();\n                _.each(suggestions, function getSuggestionNode(suggestion) {\n                    var $el, context;\n                    context = that._injectQuery(query, suggestion);\n                    $el = $(that.templates.suggestion(context)).data(keys.obj, suggestion).data(keys.val, that.displayFn(suggestion)).addClass(that.classes.suggestion + \" \" + that.classes.selectable);\n                    fragment.appendChild($el[0]);\n                });\n                this.highlight && highlight({\n                    className: this.classes.highlight,\n                    node: fragment,\n                    pattern: query\n                });\n                return $(fragment);\n            },\n            _getFooter: function getFooter(query, suggestions) {\n                return this.templates.footer ? this.templates.footer({\n                    query: query,\n                    suggestions: suggestions,\n                    dataset: this.name\n                }) : null;\n            },\n            _getHeader: function getHeader(query, suggestions) {\n                return this.templates.header ? this.templates.header({\n                    query: query,\n                    suggestions: suggestions,\n                    dataset: this.name\n                }) : null;\n            },\n            _resetLastSuggestion: function resetLastSuggestion() {\n                this.$lastSuggestion = $();\n            },\n            _injectQuery: function injectQuery(query, obj) {\n                return _.isObject(obj) ? _.mixin({\n                    _query: query\n                }, obj) : obj;\n            },\n            update: function update(query) {\n                var that = this, canceled = false, syncCalled = false, rendered = 0;\n                this.cancel();\n                this.cancel = function cancel() {\n                    canceled = true;\n                    that.cancel = $.noop;\n                    that.async && that.trigger(\"asyncCanceled\", query);\n                };\n                this.source(query, sync, async);\n                !syncCalled && sync([]);\n                function sync(suggestions) {\n                    if (syncCalled) {\n                        return;\n                    }\n                    syncCalled = true;\n                    suggestions = (suggestions || []).slice(0, that.limit);\n                    rendered = suggestions.length;\n                    that._overwrite(query, suggestions);\n                    if (rendered < that.limit && that.async) {\n                        that.trigger(\"asyncRequested\", query);\n                    }\n                }\n                function async(suggestions) {\n                    suggestions = suggestions || [];\n                    if (!canceled && rendered < that.limit) {\n                        that.cancel = $.noop;\n                        rendered += suggestions.length;\n                        that._append(query, suggestions.slice(0, that.limit - rendered));\n                        that.async && that.trigger(\"asyncReceived\", query);\n                    }\n                }\n            },\n            cancel: $.noop,\n            clear: function clear() {\n                this._empty();\n                this.cancel();\n                this.trigger(\"cleared\");\n            },\n            isEmpty: function isEmpty() {\n                return this.$el.is(\":empty\");\n            },\n            destroy: function destroy() {\n                this.$el = $(\"<div>\");\n            }\n        });\n        return Dataset;\n        function getDisplayFn(display) {\n            display = display || _.stringify;\n            return _.isFunction(display) ? display : displayFn;\n            function displayFn(obj) {\n                return obj[display];\n            }\n        }\n        function getTemplates(templates, displayFn) {\n            return {\n                notFound: templates.notFound && _.templatify(templates.notFound),\n                pending: templates.pending && _.templatify(templates.pending),\n                header: templates.header && _.templatify(templates.header),\n                footer: templates.footer && _.templatify(templates.footer),\n                suggestion: templates.suggestion || suggestionTemplate\n            };\n            function suggestionTemplate(context) {\n                return $(\"<div>\").text(displayFn(context));\n            }\n        }\n        function isValidName(str) {\n            return /^[_a-zA-Z0-9-]+$/.test(str);\n        }\n    }();\n    var Menu = function() {\n        \"use strict\";\n        function Menu(o, www) {\n            var that = this;\n            o = o || {};\n            if (!o.node) {\n                $.error(\"node is required\");\n            }\n            www.mixin(this);\n            this.$node = $(o.node);\n            this.query = null;\n            this.datasets = _.map(o.datasets, initializeDataset);\n            function initializeDataset(oDataset) {\n                var node = that.$node.find(oDataset.node).first();\n                oDataset.node = node.length ? node : $(\"<div>\").appendTo(that.$node);\n                return new Dataset(oDataset, www);\n            }\n        }\n        _.mixin(Menu.prototype, EventEmitter, {\n            _onSelectableClick: function onSelectableClick($e) {\n                this.trigger(\"selectableClicked\", $($e.currentTarget));\n            },\n            _onRendered: function onRendered(type, dataset, suggestions, async) {\n                this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty());\n                this.trigger(\"datasetRendered\", dataset, suggestions, async);\n            },\n            _onCleared: function onCleared() {\n                this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty());\n                this.trigger(\"datasetCleared\");\n            },\n            _propagate: function propagate() {\n                this.trigger.apply(this, arguments);\n            },\n            _allDatasetsEmpty: function allDatasetsEmpty() {\n                return _.every(this.datasets, isDatasetEmpty);\n                function isDatasetEmpty(dataset) {\n                    return dataset.isEmpty();\n                }\n            },\n            _getSelectables: function getSelectables() {\n                return this.$node.find(this.selectors.selectable);\n            },\n            _removeCursor: function _removeCursor() {\n                var $selectable = this.getActiveSelectable();\n                $selectable && $selectable.removeClass(this.classes.cursor);\n            },\n            _ensureVisible: function ensureVisible($el) {\n                var elTop, elBottom, nodeScrollTop, nodeHeight;\n                elTop = $el.position().top;\n                elBottom = elTop + $el.outerHeight(true);\n                nodeScrollTop = this.$node.scrollTop();\n                nodeHeight = this.$node.height() + parseInt(this.$node.css(\"paddingTop\"), 10) + parseInt(this.$node.css(\"paddingBottom\"), 10);\n                if (elTop < 0) {\n                    this.$node.scrollTop(nodeScrollTop + elTop);\n                } else if (nodeHeight < elBottom) {\n                    this.$node.scrollTop(nodeScrollTop + (elBottom - nodeHeight));\n                }\n            },\n            bind: function() {\n                var that = this, onSelectableClick;\n                onSelectableClick = _.bind(this._onSelectableClick, this);\n                this.$node.on(\"click.tt\", this.selectors.selectable, onSelectableClick);\n                _.each(this.datasets, function(dataset) {\n                    dataset.onSync(\"asyncRequested\", that._propagate, that).onSync(\"asyncCanceled\", that._propagate, that).onSync(\"asyncReceived\", that._propagate, that).onSync(\"rendered\", that._onRendered, that).onSync(\"cleared\", that._onCleared, that);\n                });\n                return this;\n            },\n            isOpen: function isOpen() {\n                return this.$node.hasClass(this.classes.open);\n            },\n            open: function open() {\n                this.$node.addClass(this.classes.open);\n            },\n            close: function close() {\n                this.$node.removeClass(this.classes.open);\n                this._removeCursor();\n            },\n            setLanguageDirection: function setLanguageDirection(dir) {\n                this.$node.attr(\"dir\", dir);\n            },\n            selectableRelativeToCursor: function selectableRelativeToCursor(delta) {\n                var $selectables, $oldCursor, oldIndex, newIndex;\n                $oldCursor = this.getActiveSelectable();\n                $selectables = this._getSelectables();\n                oldIndex = $oldCursor ? $selectables.index($oldCursor) : -1;\n                newIndex = oldIndex + delta;\n                newIndex = (newIndex + 1) % ($selectables.length + 1) - 1;\n                newIndex = newIndex < -1 ? $selectables.length - 1 : newIndex;\n                return newIndex === -1 ? null : $selectables.eq(newIndex);\n            },\n            setCursor: function setCursor($selectable) {\n                this._removeCursor();\n                if ($selectable = $selectable && $selectable.first()) {\n                    $selectable.addClass(this.classes.cursor);\n                    this._ensureVisible($selectable);\n                }\n            },\n            getSelectableData: function getSelectableData($el) {\n                return $el && $el.length ? Dataset.extractData($el) : null;\n            },\n            getActiveSelectable: function getActiveSelectable() {\n                var $selectable = this._getSelectables().filter(this.selectors.cursor).first();\n                return $selectable.length ? $selectable : null;\n            },\n            getTopSelectable: function getTopSelectable() {\n                var $selectable = this._getSelectables().first();\n                return $selectable.length ? $selectable : null;\n            },\n            update: function update(query) {\n                var isValidUpdate = query !== this.query;\n                if (isValidUpdate) {\n                    this.query = query;\n                    _.each(this.datasets, updateDataset);\n                }\n                return isValidUpdate;\n                function updateDataset(dataset) {\n                    dataset.update(query);\n                }\n            },\n            empty: function empty() {\n                _.each(this.datasets, clearDataset);\n                this.query = null;\n                this.$node.addClass(this.classes.empty);\n                function clearDataset(dataset) {\n                    dataset.clear();\n                }\n            },\n            destroy: function destroy() {\n                this.$node.off(\".tt\");\n                this.$node = $(\"<div>\");\n                _.each(this.datasets, destroyDataset);\n                function destroyDataset(dataset) {\n                    dataset.destroy();\n                }\n            }\n        });\n        return Menu;\n    }();\n    var DefaultMenu = function() {\n        \"use strict\";\n        var s = Menu.prototype;\n        function DefaultMenu() {\n            Menu.apply(this, [].slice.call(arguments, 0));\n        }\n        _.mixin(DefaultMenu.prototype, Menu.prototype, {\n            open: function open() {\n                !this._allDatasetsEmpty() && this._show();\n                return s.open.apply(this, [].slice.call(arguments, 0));\n            },\n            close: function close() {\n                this._hide();\n                return s.close.apply(this, [].slice.call(arguments, 0));\n            },\n            _onRendered: function onRendered() {\n                if (this._allDatasetsEmpty()) {\n                    this._hide();\n                } else {\n                    this.isOpen() && this._show();\n                }\n                return s._onRendered.apply(this, [].slice.call(arguments, 0));\n            },\n            _onCleared: function onCleared() {\n                if (this._allDatasetsEmpty()) {\n                    this._hide();\n                } else {\n                    this.isOpen() && this._show();\n                }\n                return s._onCleared.apply(this, [].slice.call(arguments, 0));\n            },\n            setLanguageDirection: function setLanguageDirection(dir) {\n                this.$node.css(dir === \"ltr\" ? this.css.ltr : this.css.rtl);\n                return s.setLanguageDirection.apply(this, [].slice.call(arguments, 0));\n            },\n            _hide: function hide() {\n                this.$node.hide();\n            },\n            _show: function show() {\n                this.$node.css(\"display\", \"block\");\n            }\n        });\n        return DefaultMenu;\n    }();\n    var Typeahead = function() {\n        \"use strict\";\n        function Typeahead(o, www) {\n            var onFocused, onBlurred, onEnterKeyed, onTabKeyed, onEscKeyed, onUpKeyed, onDownKeyed, onLeftKeyed, onRightKeyed, onQueryChanged, onWhitespaceChanged;\n            o = o || {};\n            if (!o.input) {\n                $.error(\"missing input\");\n            }\n            if (!o.menu) {\n                $.error(\"missing menu\");\n            }\n            if (!o.eventBus) {\n                $.error(\"missing event bus\");\n            }\n            www.mixin(this);\n            this.eventBus = o.eventBus;\n            this.minLength = _.isNumber(o.minLength) ? o.minLength : 1;\n            this.input = o.input;\n            this.menu = o.menu;\n            this.enabled = true;\n            this.active = false;\n            this.input.hasFocus() && this.activate();\n            this.dir = this.input.getLangDir();\n            this._hacks();\n            this.menu.bind().onSync(\"selectableClicked\", this._onSelectableClicked, this).onSync(\"asyncRequested\", this._onAsyncRequested, this).onSync(\"asyncCanceled\", this._onAsyncCanceled, this).onSync(\"asyncReceived\", this._onAsyncReceived, this).onSync(\"datasetRendered\", this._onDatasetRendered, this).onSync(\"datasetCleared\", this._onDatasetCleared, this);\n            onFocused = c(this, \"activate\", \"open\", \"_onFocused\");\n            onBlurred = c(this, \"deactivate\", \"_onBlurred\");\n            onEnterKeyed = c(this, \"isActive\", \"isOpen\", \"_onEnterKeyed\");\n            onTabKeyed = c(this, \"isActive\", \"isOpen\", \"_onTabKeyed\");\n            onEscKeyed = c(this, \"isActive\", \"_onEscKeyed\");\n            onUpKeyed = c(this, \"isActive\", \"open\", \"_onUpKeyed\");\n            onDownKeyed = c(this, \"isActive\", \"open\", \"_onDownKeyed\");\n            onLeftKeyed = c(this, \"isActive\", \"isOpen\", \"_onLeftKeyed\");\n            onRightKeyed = c(this, \"isActive\", \"isOpen\", \"_onRightKeyed\");\n            onQueryChanged = c(this, \"_openIfActive\", \"_onQueryChanged\");\n            onWhitespaceChanged = c(this, \"_openIfActive\", \"_onWhitespaceChanged\");\n            this.input.bind().onSync(\"focused\", onFocused, this).onSync(\"blurred\", onBlurred, this).onSync(\"enterKeyed\", onEnterKeyed, this).onSync(\"tabKeyed\", onTabKeyed, this).onSync(\"escKeyed\", onEscKeyed, this).onSync(\"upKeyed\", onUpKeyed, this).onSync(\"downKeyed\", onDownKeyed, this).onSync(\"leftKeyed\", onLeftKeyed, this).onSync(\"rightKeyed\", onRightKeyed, this).onSync(\"queryChanged\", onQueryChanged, this).onSync(\"whitespaceChanged\", onWhitespaceChanged, this).onSync(\"langDirChanged\", this._onLangDirChanged, this);\n        }\n        _.mixin(Typeahead.prototype, {\n            _hacks: function hacks() {\n                var $input, $menu;\n                $input = this.input.$input || $(\"<div>\");\n                $menu = this.menu.$node || $(\"<div>\");\n                $input.on(\"blur.tt\", function($e) {\n                    var active, isActive, hasActive;\n                    active = document.activeElement;\n                    isActive = $menu.is(active);\n                    hasActive = $menu.has(active).length > 0;\n                    if (_.isMsie() && (isActive || hasActive)) {\n                        $e.preventDefault();\n                        $e.stopImmediatePropagation();\n                        _.defer(function() {\n                            $input.focus();\n                        });\n                    }\n                });\n                $menu.on(\"mousedown.tt\", function($e) {\n                    $e.preventDefault();\n                });\n            },\n            _onSelectableClicked: function onSelectableClicked(type, $el) {\n                this.select($el);\n            },\n            _onDatasetCleared: function onDatasetCleared() {\n                this._updateHint();\n            },\n            _onDatasetRendered: function onDatasetRendered(type, dataset, suggestions, async) {\n                this._updateHint();\n                this.eventBus.trigger(\"render\", suggestions, async, dataset);\n            },\n            _onAsyncRequested: function onAsyncRequested(type, dataset, query) {\n                this.eventBus.trigger(\"asyncrequest\", query, dataset);\n            },\n            _onAsyncCanceled: function onAsyncCanceled(type, dataset, query) {\n                this.eventBus.trigger(\"asynccancel\", query, dataset);\n            },\n            _onAsyncReceived: function onAsyncReceived(type, dataset, query) {\n                this.eventBus.trigger(\"asyncreceive\", query, dataset);\n            },\n            _onFocused: function onFocused() {\n                this._minLengthMet() && this.menu.update(this.input.getQuery());\n            },\n            _onBlurred: function onBlurred() {\n                if (this.input.hasQueryChangedSinceLastFocus()) {\n                    this.eventBus.trigger(\"change\", this.input.getQuery());\n                }\n            },\n            _onEnterKeyed: function onEnterKeyed(type, $e) {\n                var $selectable;\n                if ($selectable = this.menu.getActiveSelectable()) {\n                    this.select($selectable) && $e.preventDefault();\n                }\n            },\n            _onTabKeyed: function onTabKeyed(type, $e) {\n                var $selectable;\n                if ($selectable = this.menu.getActiveSelectable()) {\n                    this.select($selectable) && $e.preventDefault();\n                } else if ($selectable = this.menu.getTopSelectable()) {\n                    this.autocomplete($selectable) && $e.preventDefault();\n                }\n            },\n            _onEscKeyed: function onEscKeyed() {\n                this.close();\n            },\n            _onUpKeyed: function onUpKeyed() {\n                this.moveCursor(-1);\n            },\n            _onDownKeyed: function onDownKeyed() {\n                this.moveCursor(+1);\n            },\n            _onLeftKeyed: function onLeftKeyed() {\n                if (this.dir === \"rtl\" && this.input.isCursorAtEnd()) {\n                    this.autocomplete(this.menu.getTopSelectable());\n                }\n            },\n            _onRightKeyed: function onRightKeyed() {\n                if (this.dir === \"ltr\" && this.input.isCursorAtEnd()) {\n                    this.autocomplete(this.menu.getTopSelectable());\n                }\n            },\n            _onQueryChanged: function onQueryChanged(e, query) {\n                this._minLengthMet(query) ? this.menu.update(query) : this.menu.empty();\n            },\n            _onWhitespaceChanged: function onWhitespaceChanged() {\n                this._updateHint();\n            },\n            _onLangDirChanged: function onLangDirChanged(e, dir) {\n                if (this.dir !== dir) {\n                    this.dir = dir;\n                    this.menu.setLanguageDirection(dir);\n                }\n            },\n            _openIfActive: function openIfActive() {\n                this.isActive() && this.open();\n            },\n            _minLengthMet: function minLengthMet(query) {\n                query = _.isString(query) ? query : this.input.getQuery() || \"\";\n                return query.length >= this.minLength;\n            },\n            _updateHint: function updateHint() {\n                var $selectable, data, val, query, escapedQuery, frontMatchRegEx, match;\n                $selectable = this.menu.getTopSelectable();\n                data = this.menu.getSelectableData($selectable);\n                val = this.input.getInputValue();\n                if (data && !_.isBlankString(val) && !this.input.hasOverflow()) {\n                    query = Input.normalizeQuery(val);\n                    escapedQuery = _.escapeRegExChars(query);\n                    frontMatchRegEx = new RegExp(\"^(?:\" + escapedQuery + \")(.+$)\", \"i\");\n                    match = frontMatchRegEx.exec(data.val);\n                    match && this.input.setHint(val + match[1]);\n                } else {\n                    this.input.clearHint();\n                }\n            },\n            isEnabled: function isEnabled() {\n                return this.enabled;\n            },\n            enable: function enable() {\n                this.enabled = true;\n            },\n            disable: function disable() {\n                this.enabled = false;\n            },\n            isActive: function isActive() {\n                return this.active;\n            },\n            activate: function activate() {\n                if (this.isActive()) {\n                    return true;\n                } else if (!this.isEnabled() || this.eventBus.before(\"active\")) {\n                    return false;\n                } else {\n                    this.active = true;\n                    this.eventBus.trigger(\"active\");\n                    return true;\n                }\n            },\n            deactivate: function deactivate() {\n                if (!this.isActive()) {\n                    return true;\n                } else if (this.eventBus.before(\"idle\")) {\n                    return false;\n                } else {\n                    this.active = false;\n                    this.close();\n                    this.eventBus.trigger(\"idle\");\n                    return true;\n                }\n            },\n            isOpen: function isOpen() {\n                return this.menu.isOpen();\n            },\n            open: function open() {\n                if (!this.isOpen() && !this.eventBus.before(\"open\")) {\n                    this.menu.open();\n                    this._updateHint();\n                    this.eventBus.trigger(\"open\");\n                }\n                return this.isOpen();\n            },\n            close: function close() {\n                if (this.isOpen() && !this.eventBus.before(\"close\")) {\n                    this.menu.close();\n                    this.input.clearHint();\n                    this.input.resetInputValue();\n                    this.eventBus.trigger(\"close\");\n                }\n                return !this.isOpen();\n            },\n            setVal: function setVal(val) {\n                this.input.setQuery(_.toStr(val));\n            },\n            getVal: function getVal() {\n                return this.input.getQuery();\n            },\n            select: function select($selectable) {\n                var data = this.menu.getSelectableData($selectable);\n                if (data && !this.eventBus.before(\"select\", data.obj)) {\n                    this.input.setQuery(data.val, true);\n                    this.eventBus.trigger(\"select\", data.obj);\n                    this.close();\n                    return true;\n                }\n                return false;\n            },\n            autocomplete: function autocomplete($selectable) {\n                var query, data, isValid;\n                query = this.input.getQuery();\n                data = this.menu.getSelectableData($selectable);\n                isValid = data && query !== data.val;\n                if (isValid && !this.eventBus.before(\"autocomplete\", data.obj)) {\n                    this.input.setQuery(data.val);\n                    this.eventBus.trigger(\"autocomplete\", data.obj);\n                    return true;\n                }\n                return false;\n            },\n            moveCursor: function moveCursor(delta) {\n                var query, $candidate, data, payload, cancelMove;\n                query = this.input.getQuery();\n                $candidate = this.menu.selectableRelativeToCursor(delta);\n                data = this.menu.getSelectableData($candidate);\n                payload = data ? data.obj : null;\n                cancelMove = this._minLengthMet() && this.menu.update(query);\n                if (!cancelMove && !this.eventBus.before(\"cursorchange\", payload)) {\n                    this.menu.setCursor($candidate);\n                    if (data) {\n                        this.input.setInputValue(data.val);\n                    } else {\n                        this.input.resetInputValue();\n                        this._updateHint();\n                    }\n                    this.eventBus.trigger(\"cursorchange\", payload);\n                    return true;\n                }\n                return false;\n            },\n            destroy: function destroy() {\n                this.input.destroy();\n                this.menu.destroy();\n            }\n        });\n        return Typeahead;\n        function c(ctx) {\n            var methods = [].slice.call(arguments, 1);\n            return function() {\n                var args = [].slice.call(arguments);\n                _.each(methods, function(method) {\n                    return ctx[method].apply(ctx, args);\n                });\n            };\n        }\n    }();\n    (function() {\n        \"use strict\";\n        var old, keys, methods;\n        old = $.fn.typeahead;\n        keys = {\n            www: \"tt-www\",\n            attrs: \"tt-attrs\",\n            typeahead: \"tt-typeahead\"\n        };\n        methods = {\n            initialize: function initialize(o, datasets) {\n                var www;\n                datasets = _.isArray(datasets) ? datasets : [].slice.call(arguments, 1);\n                o = o || {};\n                www = WWW(o.classNames);\n                return this.each(attach);\n                function attach() {\n                    var $input, $wrapper, $hint, $menu, defaultHint, defaultMenu, eventBus, input, menu, typeahead, MenuConstructor;\n                    _.each(datasets, function(d) {\n                        d.highlight = !!o.highlight;\n                    });\n                    $input = $(this);\n                    $wrapper = $(www.html.wrapper);\n                    $hint = $elOrNull(o.hint);\n                    $menu = $elOrNull(o.menu);\n                    defaultHint = o.hint !== false && !$hint;\n                    defaultMenu = o.menu !== false && !$menu;\n                    defaultHint && ($hint = buildHintFromInput($input, www));\n                    defaultMenu && ($menu = $(www.html.menu).css(www.css.menu));\n                    $hint && $hint.val(\"\");\n                    $input = prepInput($input, www);\n                    if (defaultHint || defaultMenu) {\n                        $wrapper.css(www.css.wrapper);\n                        $input.css(defaultHint ? www.css.input : www.css.inputWithNoHint);\n                        $input.wrap($wrapper).parent().prepend(defaultHint ? $hint : null).append(defaultMenu ? $menu : null);\n                    }\n                    MenuConstructor = defaultMenu ? DefaultMenu : Menu;\n                    eventBus = new EventBus({\n                        el: $input\n                    });\n                    input = new Input({\n                        hint: $hint,\n                        input: $input\n                    }, www);\n                    menu = new MenuConstructor({\n                        node: $menu,\n                        datasets: datasets\n                    }, www);\n                    typeahead = new Typeahead({\n                        input: input,\n                        menu: menu,\n                        eventBus: eventBus,\n                        minLength: o.minLength\n                    }, www);\n                    $input.data(keys.www, www);\n                    $input.data(keys.typeahead, typeahead);\n                }\n            },\n            isEnabled: function isEnabled() {\n                var enabled;\n                ttEach(this.first(), function(t) {\n                    enabled = t.isEnabled();\n                });\n                return enabled;\n            },\n            enable: function enable() {\n                ttEach(this, function(t) {\n                    t.enable();\n                });\n                return this;\n            },\n            disable: function disable() {\n                ttEach(this, function(t) {\n                    t.disable();\n                });\n                return this;\n            },\n            isActive: function isActive() {\n                var active;\n                ttEach(this.first(), function(t) {\n                    active = t.isActive();\n                });\n                return active;\n            },\n            activate: function activate() {\n                ttEach(this, function(t) {\n                    t.activate();\n                });\n                return this;\n            },\n            deactivate: function deactivate() {\n                ttEach(this, function(t) {\n                    t.deactivate();\n                });\n                return this;\n            },\n            isOpen: function isOpen() {\n                var open;\n                ttEach(this.first(), function(t) {\n                    open = t.isOpen();\n                });\n                return open;\n            },\n            open: function open() {\n                ttEach(this, function(t) {\n                    t.open();\n                });\n                return this;\n            },\n            close: function close() {\n                ttEach(this, function(t) {\n                    t.close();\n                });\n                return this;\n            },\n            select: function select(el) {\n                var success = false, $el = $(el);\n                ttEach(this.first(), function(t) {\n                    success = t.select($el);\n                });\n                return success;\n            },\n            autocomplete: function autocomplete(el) {\n                var success = false, $el = $(el);\n                ttEach(this.first(), function(t) {\n                    success = t.autocomplete($el);\n                });\n                return success;\n            },\n            moveCursor: function moveCursoe(delta) {\n                var success = false;\n                ttEach(this.first(), function(t) {\n                    success = t.moveCursor(delta);\n                });\n                return success;\n            },\n            val: function val(newVal) {\n                var query;\n                if (!arguments.length) {\n                    ttEach(this.first(), function(t) {\n                        query = t.getVal();\n                    });\n                    return query;\n                } else {\n                    ttEach(this, function(t) {\n                        t.setVal(newVal);\n                    });\n                    return this;\n                }\n            },\n            destroy: function destroy() {\n                ttEach(this, function(typeahead, $input) {\n                    revert($input);\n                    typeahead.destroy();\n                });\n                return this;\n            }\n        };\n        $.fn.typeahead = function(method) {\n            if (methods[method]) {\n                return methods[method].apply(this, [].slice.call(arguments, 1));\n            } else {\n                return methods.initialize.apply(this, arguments);\n            }\n        };\n        $.fn.typeahead.noConflict = function noConflict() {\n            $.fn.typeahead = old;\n            return this;\n        };\n        function ttEach($els, fn) {\n            $els.each(function() {\n                var $input = $(this), typeahead;\n                (typeahead = $input.data(keys.typeahead)) && fn(typeahead, $input);\n            });\n        }\n        function buildHintFromInput($input, www) {\n            return $input.clone().addClass(www.classes.hint).removeData().css(www.css.hint).css(getBackgroundStyles($input)).prop(\"readonly\", true).removeAttr(\"id name placeholder required\").attr({\n                autocomplete: \"off\",\n                spellcheck: \"false\",\n                tabindex: -1\n            });\n        }\n        function prepInput($input, www) {\n            $input.data(keys.attrs, {\n                dir: $input.attr(\"dir\"),\n                autocomplete: $input.attr(\"autocomplete\"),\n                spellcheck: $input.attr(\"spellcheck\"),\n                style: $input.attr(\"style\")\n            });\n            $input.addClass(www.classes.input).attr({\n                autocomplete: \"off\",\n                spellcheck: false\n            });\n            try {\n                !$input.attr(\"dir\") && $input.attr(\"dir\", \"auto\");\n            } catch (e) {}\n            return $input;\n        }\n        function getBackgroundStyles($el) {\n            return {\n                backgroundAttachment: $el.css(\"background-attachment\"),\n                backgroundClip: $el.css(\"background-clip\"),\n                backgroundColor: $el.css(\"background-color\"),\n                backgroundImage: $el.css(\"background-image\"),\n                backgroundOrigin: $el.css(\"background-origin\"),\n                backgroundPosition: $el.css(\"background-position\"),\n                backgroundRepeat: $el.css(\"background-repeat\"),\n                backgroundSize: $el.css(\"background-size\")\n            };\n        }\n        function revert($input) {\n            var www, $wrapper;\n            www = $input.data(keys.www);\n            $wrapper = $input.parent().filter(www.selectors.wrapper);\n            _.each($input.data(keys.attrs), function(val, key) {\n                _.isUndefined(val) ? $input.removeAttr(key) : $input.attr(key, val);\n            });\n            $input.removeData(keys.typeahead).removeData(keys.www).removeData(keys.attr).removeClass(www.classes.input);\n            if ($wrapper.length) {\n                $input.detach().insertAfter($wrapper);\n                $wrapper.remove();\n            }\n        }\n        function $elOrNull(obj) {\n            var isValid, $el;\n            isValid = _.isJQuery(obj) || _.isElement(obj);\n            $el = isValid ? $(obj).first() : [];\n            return $el.length ? $el : null;\n        }\n    })();\n});\ndefine(\"typeahead\", [\"jquery\"], (function (global) {\n    return function () {\n        var ret, fn;\n       fn = function ($) {\n\treturn require.s.contexts._.registry['typeahead.js'].factory($);\n      };\n        ret = fn.apply(global, arguments);\n        return ret;\n    };\n}(this)));\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2017, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Support the SWISH search box.  This we want to find:\n *\n *   - Predicates based on templates we also use for template completion\n *   - Source code (line)\t\t[TBD]\n *   - Saved programs by\n *     - Name\n *     - Tag\n *     - Description\t\t\t[TBD]\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('search',[ \"jquery\", \"config\", \"utils\", \"bloodhound\", \"typeahead\" ],\n       function($, config, utils, Bloodhound) {\n\n(function($) {\n  var pluginName = 'search';\n\n  /** @lends $.fn.search */\n  var methods = {\n    /**\n     * Turn Bootstrap search input into a typeahead widget\n     * @param {Object}  [options]\n     * @param {Boolean} [options.search=true] If false, merely use\n     * typeahead to fill a value.\n     */\n    _init: function(options) {\n      options = options||{};\n\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar query;\t\t\t/* current query */\n\n\t\t /*******************************\n\t\t *\t FILE COMPLETION\t*\n\t\t *******************************/\n\n\tvar files = new Bloodhound({\n\t\t\tname: \"files\",\n\t\t\tremote: { url: config.http.locations.swish_typeahead +\n\t\t\t\t       \"?set=file&q=%QUERY\",\n\t\t\t\t  wildcard: '%QUERY'\n\t\t\t},\n\t\t\tdatumTokenizer: fileTokenizer,\n\t\t\tqueryTokenizer: Bloodhound.tokenizers.whitespace\n\t               });\n\tfiles.initialize();\n\n\tfunction fileTokenizer(f) {\n\t  return (f.tags||[]).push(f.name);\n\t}\n\n\tfunction renderFile(f) {\n\t  function filetype(file) {\n\t    return file.split('.').pop();\n\t  }\n\t  function filebase(file) {\n\t    return file.split('.').slice(0,-1).join(\".\");\n\t  }\n\n\t  var str = \"<div class=\\\"tt-match file type-icon \"\n\t          + filetype(f.name)\n\t          + \"\\\">\"\n\t\t  + \"<span class=\\\"tt-label\\\">\"\n\t\t  + utils.htmlEncode(filebase(f.name));\n\t          + \"</span>\";\n\n\t  if ( f.tags ) {\n\t    str += \"<span class=\\\"tt-tags\\\">\";\n\t    for(var i=0; i<f.tags.length; i++) {\n\t      var tag = f.tags[i];\n\t      str += \"<span class=\\\"tt-tag\\\">\"\n\t\t   + utils.htmlEncode(tag)\n\t\t   + \"</span>\";\n\t    }\n\t    str += \"</span>\";\n\t  }\n\n\t  if ( f.title )\n\t    str += \"<div class=\\\"tt-title file\\\">\"\n\t\t + utils.htmlEncode(f.title)\n\t\t + \"</div>\";\n\t  str += \"</div>\";\n\n\t  return str;\n\t}\n\n\t\t /*******************************\n\t\t *     SEARCH STORE SOURCES\t*\n\t\t *******************************/\n\n\tvar storeContent = new Bloodhound({\n\t\t\t     name: \"store_content\",\n\t\t\t     limit: 20,\n\t\t\t     cache: false,\n\t\t\t     remote: {\n\t\t\t       url: config.http.locations.swish_typeahead +\n\t\t\t\t     \"?set=store_content&q=%QUERY\",\n\t\t\t       replace:bloodHoundURL\n\t\t\t     },\n\t\t\t     datumTokenizer: sourceLineTokenizer,\n\t\t\t     queryTokenizer: Bloodhound.tokenizers.whitespace\n\t                   });\n\tstoreContent.initialize();\n\n\tvar currentFile  = null;\n\tvar currentAlias = null;\n\tfunction renderStoreSourceLine(hit) {\n\t  var str = \"\";\n\n\t  if ( hit.file != currentFile || hit.alias != currentAlias ) {\n\t    var ext = hit.file.split('.').pop();\n\t    currentFile = hit.file;\n\t    currentAlias = hit.alias;\n\t    str = \"<div class=\\\"tt-file-header type-icon \"+ext+\"\\\">\"\n\t\t+ \"<span class=\\\"tt-path-file\\\">\"\n\t\t+ utils.htmlEncode(hit.file)\n\t\t+ \"</span>\"\n\t\t+ \"</div>\";\n\t  }\n\n\t  return str+renderSourceMatch(hit);\n\t}\n\n\t\t /*******************************\n\t\t *     SEARCH REMOTE SOURCES\t*\n\t\t *******************************/\n\n\tvar sources = new Bloodhound({\n\t\t\tname: \"source\",\n\t\t\tlimit: 15,\n\t\t\tcache: false,\n\t\t\tquery_cache_length: 1,\n\t\t\tremote: {\n\t\t\t  url: config.http.locations.swish_typeahead +\n\t\t\t\t\"?set=sources&q=%QUERY\",\n\t\t\t  replace: bloodHoundURL\n\t\t\t},\n\t\t\tdatumTokenizer: sourceLineTokenizer,\n\t\t\tqueryTokenizer: Bloodhound.tokenizers.whitespace\n\t               });\n\tsources.initialize();\n\n\tfunction sourceLineTokenizer(hit) {\n\t  return Bloodhound.tokenizers.whitespace(hit.text);\n\t}\n\n\tfunction renderSourceLine(hit) {\n\t  var str = \"\";\n\n\t  if ( hit.file != currentFile || hit.alias != currentAlias ) {\n\t    currentFile = hit.file;\n\t    currentAlias = hit.alias;\n\t    str = \"<div class=\\\"tt-file-header type-icon \"+hit.ext+\"\\\">\"\n\t        + \"<span class=\\\"tt-path-alias\\\">\"\n\t        + utils.htmlEncode(hit.alias)\n\t\t+ \"</span>(<span class=\\\"tt-path-file\\\">\"\n\t\t+ utils.htmlEncode(hit.file)\n\t\t+ \")</span>\"\n\t\t+ \"</div>\";\n\t  }\n\n\t  if ( hit.text )\n\t    str += renderSourceMatch(hit);\n\t  return str;\n\t}\n\n\n\t\t /*******************************\n\t\t *    PREDICATE COMPLETION\t*\n\t\t *******************************/\n\n\tfunction predicateMatcher(q, cb) {\n\t  var templates = config.swish.templates;\n\t  var matches = [];\n\t  var ql = q.split(\" \");\n\t  var pl = [];\n\n\t  for(var i=0; i<ql.length; i++)\n\t    pl.push({prefix:ql[i], regex:new RegExp(\"_\"+ql[i])});\n\n\t  for(var i=0; i<templates.length; i++) {\n\t    var templ = templates[i];\n\n\t    if ( templ.arity !== undefined ) {\n\t      for(var j=0, match=true; j<pl.length && match; j++) {\n\t\tif ( !(templ.name.startsWith(pl[j].prefix) ||\n\t\t       templ.name.match(pl[j].regex)) )\n\t\t  match=false;\n\t      }\n\t      if ( match )\n\t        matches.push(templ);\n\t    }\n\t  }\n\n\t  cb(matches);\n\t}\n\n\n\tfunction renderPredicate(p) {\n\t  var str = \"<div class=\\\"tt-match predicate\";\n\n\t  if ( p.type ) str += \" \" + p.type;\n\t  if ( p.mode ) str += \"\\\" title=\\\"\"\n                             + p.mode;\n\n\t  str += \"\\\">\"\n               + \"<span class=\\\"tt-label\\\">\"\n\t       + utils.htmlEncode(p.name)\n\t       + \"/\"\n\t       + p.arity\n\t       + \"</span>\";\n\n\t  if ( p.iso ) {\n\t    str += \"<span class=\\\"tt-tags\\\">\";\n\t    if ( p.iso )\n\t      str += \"<span class=\\\"tt-tag\\\">ISO</span>\";\n\t    str += \"</span>\";\n\t  }\n\n\t  if ( p.summary )\n\t    str += \"<div class=\\\"tt-title file\\\">\"\n\t\t + utils.htmlEncode(p.summary)\n\t\t + \"</div>\";\n\t  str += \"</div>\";\n\n\n\t  str += \"</div>\";\n\n\t  return str;\n\t}\n\n\t\t /*******************************\n\t\t *\t   SEARCH SOURCE\t*\n\t\t *******************************/\n\n\tvar sourceRE;\n\n\tfunction sourceMatcher(q, cb) {\n\t  query = q;\n\t  if ( q.length < 2 ) return [];\n\n\t  var matches = [];\n\t  var re = new RegExp(\"\\\\b\"+q, \"g\");\n\t  sourceRE = re;\n\n\t  $(\".prolog-editor\").each(function() {\n\t    var editor = this;\n\t    var m = $(editor).prologEditor('search', re, {max: 7});\n\n\t    for(var i=0; i<m.length; i++) {\n\t      m[i].editor = editor;\n\t      m[i].regex  = sourceRE;\n\t      matches.push(m[i]);\n\t    }\n\t  });\n\n\t  cb(matches);\n\t}\n\n\n\tfunction renderSourceMatch(hit) {\n\t  var text = hit.text;\n\t  var i;\n\n\t  if ( (i=text.search(sourceRE)) > 20 )\n\t    text = \"...\"+text.slice(i-17);\n\t  if ( text.length > 80 )\n\t    text = text.substring(0,80);\n\n\t  var str = \"<div class=\\\"tt-match source\\\">\"\n\t          + \"<span class=\\\"tt-line\\\">\"\n\t\t  + \"<span class=\\\"tt-lineno\\\">\"\n\t\t  + hit.line\n\t\t  + \"</span>\"\n\t\t  + \"<span class=\\\"tt-text\\\">\"\n\t\t  + utils.htmlEncode(text)\n\t          + \"</span>\"\n\t          + \"</span>\"\n\t\t  + \"</div>\";\n\n\t  return str;\n\t}\n\n\n\t\t /*******************************\n\t\t *\t       USERS\t\t*\n\t\t *******************************/\n\n\tvar users = new Bloodhound({\n\t\t\t     name: \"users\",\n\t\t\t     limit: 20,\n\t\t\t     cache: false,\n\t\t\t     remote: {\n\t\t\t       url: config.http.locations.swish_typeahead +\n\t\t\t\t     \"?set=user&q=%QUERY\",\n\t\t\t       replace:bloodHoundURL\n\t\t\t     },\n\t\t\t     datumTokenizer: sourceLineTokenizer,\n\t\t\t     queryTokenizer: Bloodhound.tokenizers.whitespace\n\t                   });\n\tusers.initialize();\n\n\tfunction renderUser(hit) {\n\t  function avatar(hit) {\n\t    if ( hit.avatar ) {\n\t      return '<img class=\"avatar\" src=\"'+encodeURI(hit.avatar)+'\">';\n\t    } else {\n\t      return \"\";\n\t    }\n\t  }\n\n\t  var str = '<div class=\"tt-match user\">'\n\t\t  + avatar(hit)\n\t\t  + '<span class=\"tt-label\">'\n\t\t  + utils.htmlEncode(hit.name)\n\t\t  + '</span>'\n\t\t  + '</div>';\n\n\t  return str;\n\t}\n\n\n\t\t /*******************************\n\t\t *\t      COMBINE\t\t*\n\t\t *******************************/\n\n\tvar typeaheadProperties = {\n\t  source:\t\t\t/* local source */\n\t  { name: \"source\",\n\t    display: 'text',\n\t    source: sourceMatcher,\n\t    templates: { suggestion: renderSourceMatch }\n\t  },\n\t  sources:\t\t\t/* remote sources */\n\t  { name: \"sources\",\n\t    display: 'file',\n\t    source: sources.ttAdapter(),\n\t    templates: { suggestion: renderSourceLine },\n\t    limit: 15\n\t  },\n\t  files:\t\t\t/* files in gitty on name and tags */\n\t  { name: \"files\",\n\t    display: 'name',\n\t    source: files.ttAdapter(),\n\t    templates: { suggestion: renderFile }\n\t  },\n\t  store_content:\t\t/* file content in gitty */\n\t  { name: \"store_content\",\n\t    display: 'file',\n\t    source: storeContent.ttAdapter(),\n\t    templates: { suggestion: renderStoreSourceLine }\n\t  },\n\t  predicates:\t\t\t/* built-in and library predicates */\n\t  { name: \"predicates\",\n\t    display: function(p) {\n\t      return p.name+\"/\"+p.arity;\n\t    },\n\t    source: predicateMatcher,\n\t    templates: { suggestion: renderPredicate }\n\t  },\n\t  users:\t\t\t/* Users (profiles) */\n\t  { name: \"users\",\n\t    display: \"name\",\n\t    source: users.ttAdapter(),\n\t    templates: { suggestion: renderUser }\n\t  }\n\t};\n\n\t// Get the actual query string exchanged between\n\t// typeahead and Bloodhound.\n\tvar of = typeaheadProperties.sources.source;\n\ttypeaheadProperties.sources.source = function(q, cb) {\n\t  currentFile = null;\n\t  currentAlias = null;\n\t  sourceRE = new RegExp(RegExp.escape(q));\n\t  return of(q, cb);\n\t}\n\n\t/**\n\t * Assemble the sources\n\t */\n\n\tfunction ttSources(from) {\n\t  var sources = [];\n\t  var src = from.replace(/\\s+/g, ' ').split(\" \");\n\n\t  for(var i=0; i<src.length; i++) {\n\t    sources.push(typeaheadProperties[src[i]]);\n\t  }\n\n\t  return sources;\n\t}\n\n\t\t /*******************************\n\t\t *\t     TYPEAHEAD\t\t*\n\t\t *******************************/\n\n\telem.typeahead({ minLength: 2,\n\t\t\t highlight: true\n\t\t       },\n\t\t       ttSources(elem.data(\"search-in\")))\n\t  .on('typeahead:selected typeahead:autocompleted',\n\t      function(ev, datum) {\n\n\t\tif ( options.search == false ) {\n\t\t  elem.data(\"json-value\", datum);\n\t\t} else {\n\t\t  if ( datum.type == \"store\" ) {\n\t\t    if ( datum.query ) {\n\t\t      datum.regex = new RegExp(RegExp.escape(datum.query), \"g\");\n\t\t      datum.showAllMatches = true;\n\t\t    }\n\t\t    $(ev.target).closest(\".swish\").swish('playFile', datum);\n\t\t  } else if ( datum.arity !== undefined ) {\n\t\t    $(\".swish-event-receiver\").trigger(\"pldoc\", datum);\n\t\t  } else if ( datum.editor !== undefined &&\n\t\t\t      datum.line !== undefined ) {\n\t\t    $(datum.editor).prologEditor('gotoLine', datum.line,\n\t\t\t\t\t\t { regex: datum.regex,\n\t\t\t\t\t\t   showAllMatches: true\n\t\t\t\t\t\t });\n\t\t  } else if ( datum.alias !== undefined ) {\n\t\t    var url = encodeURI(\"/\"+datum.alias+\n\t\t\t\t\t\"/\"+datum.file+\n\t\t\t\t\t\".\"+datum.ext);\n\t\t    var play = { url:url, line:datum.line };\n\n\t\t    if ( datum.query ) {\n\t\t      play.regex = new RegExp(RegExp.escape(datum.query), \"g\");\n\t\t      play.showAllMatches = true;\n\t\t    }\n\n\t\t    $(ev.target).closest(\".swish\").swish('playURL', play);\n\t\t  } else {\n\t\t    elem.data(\"json-value\", datum);\n\t\t    console.log(elem.data(\"json-value\"));\n\t\t  }\n\t\t}\n\t      });\n\n\tif ( options.search != false ) {\n\t  elem.closest(\"form\").submit(function(ev) {\n\t    var data = elem.data(\"json-value\");\n\t    var str  = elem.val();\n\n\t    if ( !(data && data.datum && data.datum.label == str) )\n\t      data = str;\n\n\t    elem.val(\"\");\n\t    elem.data(\"json-value\", null);\n\n\t    elem.search('search', data);\n\n\t    return false;\n\t  });\n\t}\n      });\n    },\n\n    /**\n     * Search for the a given query.\n     *\n     * @param {String|Object} q specifies the search target. If it is a\n     * string, no autocompletion was performed.  If it is an object, it\n     * is the object returned by Bloodhound\n     */\n    search: function(q) {\n      alert(\"Full search not yet implemented\\n\"+\n\t    \"Please select from auto completion list\");\n    }\n  }; // methods\n\n  function bloodHoundURL(url, query) {\n    var url = url.replace('%QUERY',\n\t\t\t  encodeURIComponent(query));\n    var match = $(\"label.active > input[name=smatch]\").val();\n    if ( match )\n      url += \"&match=\"+match;\n\n    return url;\n  }\n\n  /**\n   * <Class description>\n   *\n   * @class search\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.search = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\nRegExp.escape = function(string) {\n  return string.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&')\n};\n\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2017, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * This file deals with tabbed panes.  It implements dynamic tabs on top\n * if Bootstrap.\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('tabbed',[ \"jquery\", \"form\", \"config\", \"preferences\", \"modal\",\n\t \"laconic\", \"search\" ],\n       function($, form, config, preferences, modal) {\nvar tabbed = {\n  tabTypes: {},\n  type: function(from) {\n    var ext = from.split('.').pop();\n\n    for(var k in tabbed.tabTypes) {\n      if ( tabbed.tabTypes.hasOwnProperty(k) &&\n\t   tabbed.tabTypes[k].dataType == ext )\n\treturn tabbed.tabTypes[k];\n    }\n  }\n};\n\n(function($) {\n  var pluginName = 'tabbed';\n  var tabid = 0;\n\n  /** @lends $.fn.tabbed */\n  var methods = {\n    /**\n     * Turn the current element into a Bootstrap tabbed pane. All\n     * children of the current element are changed into tabs.  The\n     * child can control the mapping using:\n     *\n     *   - `data-label = \"Label\"`\n     *   - `data-close = \"disabled\"`\n     */\n    _init: function(options) {\n      options = options||{};\n\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = {};\t\t\t/* private data */\n\n\tdata.newTab   = options.newTab;\n\tdata.tabTypes = options.tabTypes || tabbed.tabTypes;\n\telem.data(pluginName, data);\t/* store with element */\n\n\telem.addClass(\"tabbed\");\n\telem.tabbed('makeTabbed');\n\t// Current tab could not handle source, create a new one\n\telem.on(\"source\", function(ev, src) {\n\t  elem.tabbed('tabFromSource', src);\n\t});\n\telem.on(\"trace-location\", function(ev, prompt) {\n\t  elem.tabbed('showTracePort', prompt);\n\t});\n\telem.on(\"data-is-clean\", function(ev, clean) {\n\t  var tab = $(ev.target).closest(\".tab-pane\");\n\t  var a   = elem.tabbed('navTab', tab.attr('id'));\n\n\t  if ( a )\n\t  { if ( clean )\n\t      a.removeClass(\"data-dirty\");\n\t    else\n\t      a.addClass(\"data-dirty\");\n\t  }\n\t});\n      });\n    },\n\n    /**\n     * Turn the pane into a tabbed pane\n     */\n    makeTabbed: function() {\n      var children = this.children();\n      var ul = $.el.ul({ class:\"nav nav-tabs\",\n\t\t\t role:\"tablist\"\n\t\t       });\n      var contents = $.el.div({class:\"tab-content\"});\n\n      this.prepend(contents);\n      this.prepend(ul);\n\n      $(ul).on(\"click\", \"span.xclose\", function(ev) {\n\tvar id = $(ev.target).parent().attr(\"data-id\");\n\t$(ev.target).parents(\".tabbed\").first().tabbed('removeTab', id);\n\tev.preventDefault();\n      });\n      $(ul).on(\"click\", \"a\", function(ev) {\n\t$(ev.target).closest(\"a\").tab('show');\n\tev.preventDefault();\n      });\n\n\t\t\t/* Turn children into tabs */\n      for(var i=0; i<children.length; i++) {\n\tvar child = $(children[i]);\n\tvar id = genId();\n\tvar label = child.attr(\"data-label\") || \"Unknown\";\n\tvar close = child.attr(\"data-close\") != \"disabled\";\n\tvar active = (i == children.length-1);\t/* activate last */\n\n\tvar li = this.tabbed('tabLabel', id, label, close);\n\tif ( active )\n\t  $(li).addClass(\"active\");\n\t$(ul).append(li);\n\t$(contents).append(wrapInTab($(children[i]), id, active));\n      }\n\n\t\t\t/* Create and handle \"+\" button */\n      var create = $.el.a({ class: \"tab-new compact\",\n\t\t\t    title: \"Open a new tab\"\n\t\t\t  },\n\t\t\t  glyphicon(\"plus\"));\n      $(ul).append($.el.li({ role:\"presentation\" }, create));\n      $(create).on(\"click\", function(ev) {\n\tvar tabbed = $(ev.target).parents(\".tabbed\").first();\n\n\ttabbed.tabbed('newTab');\n\tev.preventDefault();\n\treturn false;\n      });\n\n\t\t\t/* Handle tab-switching */\n      $(ul).on(\"shown.bs.tab\", \"a\", function(ev) {\n\tvar newContentID  = $(ev.target).data(\"id\");\n\t$(\"#\"+newContentID+\" .swish-event-receiver\").trigger(\"activate-tab\");\n      });\n\n      if ( this.tabbed('navContent').children().length == 0 ) {\n\tthis.tabbed('newTab');\n      }\n    },\n\n    /**\n     * Add an empty new tab from the \"+\" button.  This calls\n     * options.newTab() to return a DOM element for the new\n     * tab.\n     * @param {HTMLElement} [content] Content for the new tab\n     * If omitted, it calls `options.newTab` or uses the method\n     * `tabSelect`.\n     * @return {jQuery} object representing the created tab\n     */\n    newTab: function(dom) {\n      var data = this.data(pluginName);\n\n      if ( dom == undefined ) {\n\tif ( data.newTab ) {\n\t  dom = data.newTab();\n\t} else {\n\t  dom = this.tabbed('tabSelect');\n\t  $(dom).append(this.tabbed('profileForm'),\n\t\t\t$.el.hr(),\n\t\t\tthis.tabbed('searchForm'));\n\t}\n      }\n\n      return this.tabbed('addTab', dom, {active:true,close:true});\n    },\n\n    /**\n     * Add a new tab from the provided source.  If there is a _select_\n     * (new) tab, open the data in this tab.\n     */\n    tabFromSource: function(src) {\n      var select = this.find(\"div.tabbed-select\");\n      if ( select.length > 0 ) {\n\tvar tab = $(select[0]).closest(\".tab-pane\");\n\tthis.tabbed('show', tab.attr(\"id\"));\n\tif ( typeof(src) == \"object\" )\n\t  delete src.newTab;\n\tthis.tabbed('setSource', tab, src);\n      } else {\n\tvar tab = this.tabbed('newTab', $(\"<span></span>\"));\n\tif ( typeof(src) == \"object\" )\n\t  delete src.newTab;\n\tif ( !this.tabbed('setSource', tab, src) ) {\n\t  this.tabbed('removeTab', tab.attr(\"id\"));\n\t}\n      }\n\n      return this;\n    },\n\n    /**\n     * Transform the new tab into a tab that can hold the requested\n     * source.\n     * @return {Boolean} `true` if a suitable type was found\n     */\n    setSource: function(tab, src) {\n      if ( typeof(src) == \"object\" &&\n\t   ((src.meta && src.meta.name) || src.url) )\n      { var name = (src.meta && src.meta.name) ? src.meta.name : src.url;\n\tvar tabType = tabbed.type(name);\n\tvar content = $.el.div();\n\n\ttab.html(\"\");\n\ttab.tabbed('title', tabType.label, tabType.dataType);\n\ttab.append(content);\n\ttabType.create(content);\n\t$(content).trigger(\"source\", src);\n\treturn true;\n      }\n\n      return false;\n    },\n\n    /**\n     * Show a tracer port. This implies finding the proper editor,\n     * making sure it is visible and ask it to show to port or, if\n     * no editor is displaying this source, create a new one.\n     * @param {Object} prompt\n     * @param {Object} [prompt.source]\n     * @param {Object} [prompt.source.file] is the file associated\n     * with the debug event.  Currently, we accept\n     *\n     *   - `pengine://<pengine>/src` refers to the editor that provided\n     *     the source for pengine <pengine>\n     *\t - `swish://<file>.pl` refers to an included file from the\n     *\t   store.\n     */\n    showTracePort: function(prompt) {\n      if ( prompt && prompt.source && prompt.source.file ) {\n\tvar file = prompt.source.file;\n\tvar pengineID, store;\n\tvar editors;\n\n\tfunction isPengineSrc() {\n\t  var id;\n\n\t  if ( file.startsWith(\"pengine://\") )\n\t    return file.split(\"/\")[2];\n\t}\n\n\tfunction isStoreSrc() {\n\t  var prefix = \"swish://\";\n\t  if ( file.startsWith(prefix) )\n\t    return file.slice(prefix.length);\n\t}\n\n\tif ( (pengineID=isPengineSrc()) ) {\n\t  editors = this.find(\".prolog-editor\")\n\t\t\t.filter(function(i, e) {\n\t\t\t  return $(e).prologEditor('pengine', {has:pengineID});\n\t\t\t});\n\t} else if ( (store=isStoreSrc()) ) {\n\t  editors = this.find(\".storage\")\n\t\t\t.storage('match', {file:store});\n\n\t  if ( !editors ) {\n\t    this.closest(\".swish\")\n\t        .swish('playFile',\n\t\t       { file: store,\n\t\t\t newTab: true,\n\t\t\t noHistory: true,\n\t\t\t prompt: prompt\n\t\t       });\n\t    return this;\n\t  }\n\t}\n\n\tif ( editors )\n\t  editors.prologEditor('showTracePort', prompt);\n      }\n\n      return this;\n    },\n\n\n    /**\n     * Add a new tab using content\n     * @param {Object} content is the DOM node to use as content for the\n     * tab.\n     * @param {Object} options\n     * @param {Boolean} [options.active] if `true`, make the new tab\n     * active\n     * @param {Boolean} [options.close] if `true`, allow closing the new\n     * tab.\n     * @return {jQuery} the created tab element\n     */\n    addTab: function(content, options) {\n      var ul  = this.tabbed('navTabs');\n      var id  = genId();\n      var tab =\twrapInTab(content, id, options.close);\n\n      this.tabbed('navContent').append(tab);\n\n      var li  = this.tabbed('tabLabel', id, \"New tab\", close, \"select\");\n\n      var create = ul.find(\"a.tab-new\");\n      if ( create.length == 1 )\n\t$(li).insertBefore(create.first().parent());\n      else\n\tul.append(li);\n\n      if ( options.active )\n\t$(li).find(\"a\").first().tab('show');\n\n      return tab;\n    },\n\n    /**\n     * Remove tab with given Id. If the tab is the active tab, make the\n     * previous tab active, or if there is no previous, the next. If the\n     * tabbed environment becomes empty, add a virgin tab.\n     *\n     * @param {String} id is the id of the tab to destroy\n     */\n    removeTab: function(id) {\n      var li  = this.tabbed('navTabs').find(\"a[data-id='\"+id+\"']\").parent();\n      var tab = $(\"#\"+id);\n      var new_active;\n\n      if ( tab.find(\".storage\").storage('unload', \"closetab\") == false )\n\treturn;\n\n      if ( tab.is(\":visible\") )\n\tnew_active = li.prev() || li.next();\n      li.remove();\n\t\t\t\t\t/* HACK: close embedded runners */\n      tab.find(\".prolog-runner\").prologRunner('close');\n      tab.find(\".storage\").storage('close');\n      tab.remove();\n      if ( new_active && new_active.length > 0 ) {\n\tnew_active.find(\"a\").first().tab('show');\n      } else if ( this.tabbed('navContent').children().length == 0 ) {\n\tthis.tabbed('newTab');\n      }\n\n      $(\".storage\").storage('chat_status', true);\n    },\n\n    /**\n     * Show indicated tab.\n     * @param {String} id is the id of the tab to show.\n     */\n    show: function(id) {\n      var a = this.tabbed('navTab', id);\n      if ( a ) {\n\ta.tab('show');\n      }\n\n      $(\".storage\").storage('chat_status', true);\n    },\n\n    /**\n     * Create a label (`li`) for a new tab.\n     * @param {String} id is the identifier of the new tab\n     * @param {String} label is the textual label of the new tab\n     * @param {Boolean} close determines whether or nor a close button\n     * is added to the tab.\n     * @param {String} [type=\"pl\"] indicates the type of the tab. This\n     * is used for associating an icon with the tab.\n     */\n    tabLabel: function(id, label, close, type) {\n      var close_button;\n      var chat;\n\n      if ( close )\n      { close_button = glyphicon(\"remove\", \"xclose\");\n\t$(close_button).attr(\"title\", \"Close tab\");\n      }\n      type = type||\"pl\";\n\n      var a1 = $.el.a({class:\"compact\", href:\"#\"+id, \"data-id\":id},\n\t\t      $.el.span({class:\"tab-icon type-icon \"+type}),\n\t\t      $.el.span({class:\"tab-dirty\",\n\t\t                 title:\"Tab is modified. \"+\n\t\t\t\t       \"See File/Save and Edit/View changes\"}),\n\t       chat = $.el.a({class:\"tab-chat\",\n\t\t\t      title:\"Chat messages available\"\n\t\t\t     },\n\t\t\t     form.widgets.glyphIcon(\"bell\"),\n\t\t\t     $.el.span({class:\"tab-chat-count\"})),\n\t\t      $.el.span({class:\"tab-title\"}, label),\n\t\t      close_button);\n      var li = $.el.li({role:\"presentation\"}, a1);\n\n      $(chat).on(\"click\", function(ev) {\n\tvar id = $(ev.target).closest(\"a.compact\").data(\"id\");\n\t$(\"#\"+id).find(\".storage\").storage('chat');\n\treturn false;\n      });\n\n      return li;\n    },\n\n    /**\n     * Calling obj.tabbed('anchor') finds the <a> element\n     * represeting the tab label from the node obj that appears\n     * somewhere on the tab\n     */\n    anchor: function() {\n      var tab    = this.closest(\".tab-pane\");\n\n      if ( tab.length == 0 ) {\n\treturn undefined;\t\t/* e.g., fullscreen mode */\n      }\n\n      var tabbed = tab.closest(\".tabbed\");\n      var id     = tab.attr(\"id\");\n      var ul\t = tabbed.tabbed('navTabs');\n      var a      = ul.find(\"a[data-id=\"+id+\"]\");\n\n      return a;\n    },\n\n\n    /**\n     * This method is typically _not_ called on the tab, but on some\n     * inner element of the tab.  It changes the title of the tab.\n     * @param {String} title is the new title for the tab.\n     * @param {String} [type=\"pl\"] is the new type for the tab.\n     */\n    title: function(title, type) {\n      var a = this.tabbed('anchor');\n\n      if ( a ) {\n\ta.find(\".tab-title\").text(title);\n\tif ( type ) {\n\t  var icon = a.find(\".tab-icon\");\n\t  icon.removeClass();\n\t  icon.addClass(\"tab-icon type-icon \"+type);\n\t}\n      }\n\n      return this;\n    },\n\n    /**\n     * Set the chat message feedback for this tab\n     * @param {Object} [chats]\n     * @param {Number} [chats.count] number of pending chat messages\n     */\n    chats: function(chats) {\n      var a = this.tabbed('anchor');\n\n      if ( a ) {\n\tvar span = a.find(\".tab-chat\");\n\n\tif ( chats && chats.count ) {\n\t  span.find(\".tab-chat-count\").text(chats.count);\n\t  span.addClass('chat-alert');\n\t} else {\n\t  span.removeClass('chat-alert');\n\t}\n      }\n\n      return this;\n    },\n\n    /**\n     * Default empty tab content that allows the user to transform\n     * the tab into the desired object.\n     * @return {Object} containing content for the new tab\n     */\n    tabSelect: function() {\n      var data = this.data(pluginName);\n      var dom = $.el.div({class:\"tabbed-select\"},\n\t\t\t $.el.div({class: \"tabbed-create\"},\n\t\t\t\t  $.el.label({class: \"tabbed-left\"},\n\t\t\t\t\t     \"Create a \"),\n\t\t\t\t  g=$.el.div({class:\"btn-group\",role:\"group\"}),\n\t\t\t\t  $.el.label({class: \"tabbed-right\"}, \"here\")));\n      var types = [];\n\n      for(var k in data.tabTypes) {\n\tif ( data.tabTypes.hasOwnProperty(k) &&\n\t     data.tabTypes[k].order )\n\t  types.push(k);\n      }\n      types.sort(function(a,b) {\n\treturn data.tabTypes[a].order - data.tabTypes[b].order;\n      });\n\n      for(var i = 0; i<types.length; i++) {\n\tvar type = data.tabTypes[types[i]];\n\n\t$(g).append($.el.button({ type:\"button\",\n\t\t\t\t  class:\"btn btn-primary\",\n\t\t\t\t  \"data-type\":type.typeName,\n\t\t\t\t  \"data-ext\":type.dataType\n\t\t\t\t},\n\t\t\t\ttype.label));\n      }\n\n      $(g).on(\"click\", \".btn\", function(ev) {\n\tvar type    = $(ev.target).data('type');\n\tvar tab     = $(ev.target).closest(\".tab-pane\");\n\tvar content = $.el.div();\n\tvar options = $.extend({}, tabbed.tabTypes[type]);\n\tvar profile = tab.find(\"label.active > input[name=profile]\").val();\n\n\tif ( profile ) {\n\t  options.profile = profile;\n\t  options.value   = tab.tabbed('profileValue', profile,\n\t\t\t\t       tabbed.tabTypes[type].dataType);\n\t  if ( options.value != undefined )\n\t    preferences.setVal(\"default-profile\", profile);\n\t}\n\n\ttab.html(\"\");\n\ttab.tabbed('title', options.label, options.dataType);\n\ttab.append(content);\n\ttabbed.tabTypes[type].create(content, options);\n      });\n      $(g).addClass(\"swish-event-receiver\");\n      $(g).on(\"download save fileInfo print\", function(ev) {\n\tvar tab = $(ev.target).closest(\".tab-pane\");\n\tif ( tab.is(\":visible\") ) {\n\t  var typelabel = { \"download\" : \"you wish to download\",\n\t\t\t    \"save\"     : \"you wish to save\",\n\t\t\t    \"print\"    : \"you wish to print\",\n\t\t\t    \"fileInfo\" : \"for which you want details\"\n\t  };\n\n\t  modal.alert(\"Please activate the tab \"+typelabel[ev.type]);\n\t  ev.stopPropagation();\n\t}\n      });\n      $(g).on(\"profile-selected\", function(ev, profile) {\n\t$(ev.target).find(\"button\").each(function() {\n\t  $(this).prop('disabled',\n\t\t       profile.type.indexOf($(this).data('ext')) < 0);\n\t});\n      });\n\n      return dom;\n    },\n\n    searchForm: function() {\n      var sform = $.el.form({class: \"search-sources\"},\n\t$.el.label({class:\"control-label\"}, 'Open source file containing'),\n        $.el.div(\n\t  {class: \"input-group\"},\n\t  $.el.input({ type: \"text\",\n\t\t       class: \"form-control search\",\n\t\t       placeholder: \"Search sources\",\n\t\t       'data-search-in': \"sources store_content\",\n\t\t     }),\n\t  $.el.div({ class: \"input-group-btn\" },\n\t\t   $.el.button({class:\"btn btn-default\", type:\"submit\"},\n\t\t\t       $.el.i({class:\"glyphicon glyphicon-search\"})))),\n\t$.el.div({class: \"input-group\"},\n\t  form.fields.radio(\"smatch\",\n\t    [ { label:\"Start of line\", value:\"sol\"},\n\t      { label:\"Start of word\", value:\"sow\", active:true},\n\t      { label:\"Anywhere\", value:\"anywhere\" }\n\t    ])));\n      $(sform).find(\"input.search\").search();\n\n      return sform;\n    },\n\n    profileForm: function() {\n      if ( config.swish.profiles && config.swish.profiles.length > 0 ) {\n\tvar def;\n\n\tfor(var i=0; i<config.swish.profiles.length; i++) {\n\t  delete config.swish.profiles[i].active;\n\t}\n\n\tif ( (def=preferences.getVal(\"default-profile\")) ) {\n\t  for(var i=0; i<config.swish.profiles.length; i++) {\n\t    if ( config.swish.profiles[i].value == def )\n\t      config.swish.profiles[i].active = true\n\t  }\n\t} else {\n\t  config.swish.profiles[0].active = true;\n\t}\n\n\tvar pform =\n\t$.el.div(\n\t  {class:\"tabbed-profile\"},\n\t  $.el.label({class: \"tabbed-left\"}, \"based on\"),\n\t  $.el.div({class: \"input-group select-profile\"},\n\t\t   form.fields.radio(\"profile\", config.swish.profiles)),\n\t  $.el.label({class: \"tabbed-right\"}, \"profile\"));\n\n\t$(pform).on(\"click\", function(ev) {\n\t  var select = $(ev.target).find(\"input\").val();\n\t  var profile = profileObject(select);\n\t  $(ev.target).closest(\".tab-pane\")\n\t\t      .find(\".tabbed-create .btn-group\")\n\t\t      .trigger(\"profile-selected\", profile);\n\t});\n\n\treturn pform;\n      }\n    },\n\n    profileValue: function(name, ext) {\n      var url = config.http.locations.swish + \"profile/\" + name + \".\" + ext;\n      return $.ajax({ url: url,\n\t\t      type: \"GET\",\n\t\t      data: {format: \"raw\"},\n\t\t      async: false,\n\t\t      error: function(jqXHR) {\n\t\t\tmodal.ajaxError(jqXHR);\n\t\t      }\n      }).responseText;\n    },\n\n    /**\n     * Get the UL list that represents the nav tabs\n     */\n    navTabs: function() {\n      return this.find(\"ul.nav-tabs\").first();\n    },\n\n    navTab: function(id) {\n      var a = this.find(\"ul.nav-tabs\").first().find(\"a[data-id='\"+id+\"']\");\n      if ( a.length > 0 )\n\treturn a;\n    },\n\n    navContent: function() {\n      return this.find(\"div.tab-content\").first();\n    }\n  }; // methods\n\n  /**\n   * Wrap a content element in a Bootstrap tab content.\n   * @param {Object} dom is the object that must be wrapped\n   * @param {String} id is the identifier to give to the new content\n   * @param {Boolean} active sets the tab to active if `true`\n   * @return {jQuery} `div` object of class `tab-pane` and the\n   * passed `id`.\n   */\n  function wrapInTab(dom, id, active) {\n    $(dom).wrap('<div role=\"tabpanel\" class=\"tab-pane\" id=\"'+id+'\"></div>');\n    var wrapped = $(dom).parent();\n\n    if ( active )\n      wrapped.addClass(\"active\");\n\n    return wrapped;\n  }\n\n  function glyphicon(glyph, className) {\n    var span = $.el.span({class:\"glyphicon glyphicon-\"+glyph});\n\n    if ( className )\n      $(span).addClass(className);\n\n    return span;\n  }\n\n  function genId()\n  { return \"tabbed-tab-\"+tabid++;\n  }\n\n  function profileObject(name) {\n    if ( config.swish.profiles ) {\n      for(var i=0; i<config.swish.profiles.length; i++) {\n\tif ( config.swish.profiles[i].value == name )\n\t  return config.swish.profiles[i];\n      }\n    }\n  }\n\n  /**\n   * <Class description>\n   *\n   * @class tabbed\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.tabbed = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\n  return tabbed;\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2016, VU University Amsterdam\n\t\t\t CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n *\n * RequireJS module providing some general support methods for accessing\n * Prolog\n *\n * @version 0.1.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\n/* Also depends on \"editor\", but requireJS cannot handle cyclic dependencies.\n   As downloadCSV() is only called after initialisation we dropped this\n   dependency.\n*/\n\ndefine('prolog',[ \"jquery\", \"config\", \"form\", \"preferences\",\n\t /* \"editor\" */\n       ],\n       function($, config, form, preferences) {\n  var prolog = {\n    /**\n     * Download query results as CSV.\n     * @param {Object} [options]\n     * @param {String} [options.projection] holds the Prolog projection\n     * variables, separated by commas, e.g., `\"X,Y\"`\n     * @param {String} [options.format=\"prolog\"] holds a string that\n     * defines the variation of the CSV format, e.g., `\"prolog\"` or\n     * `\"rdf\"`\n     * @param {String|Number} [options.limit] defines the max number of\n     * results.\n     * @param {Boolean} [options.distinct] requests only distinct\n     * results.\n     * @param {String} [options.disposition] provides the default for\n     * the download file.  If no extension is given, \".csv\" is added.\n     */\n    downloadCSV: function(query, source, options) {\n      options = options||{};\n      options.disposition = (options.disposition||\n\t\t\t     options.filename||\n\t\t\t     \"swish-results.csv\");\n\n      if ( options.projection ) {\n\tvar formel;\n\tvar format = options.format||\"prolog\";\n\n\tfunction attr(name,value) {\n\t  return $.el.input({type:\"hidden\", name:name, value:value});\n\t}\n\n\tif ( options.distinct )\n\t  query = \"distinct([\"+options.projection+\"],(\"+query+\"))\";\n\tif ( options.limit ) {\n\t  var limit = parseInt(options.limit.replace(/[ _]/g,\"\"));\n\n\t  if ( typeof(limit) == \"number\" ) {\n\t    query = \"limit(\"+limit+\",(\"+query+\"))\";\n\t  } else {\n\t    alert(\"Not an integer: \", options.limit);\n\t    return false;\n\t  }\n\t}\n\n\tformel = $.el.form({ method:\"POST\",\n                             action:config.http.locations.pengines+\"/create\",\n\t\t\t     target:\"_blank\"\n\t\t           },\n\t\t\t   attr(\"format\", \"csv\"),\n\t\t\t   attr(\"chunk\", \"10\"),\n\t\t\t   attr(\"solutions\", \"all\"),\n\t\t\t   attr(\"disposition\", options.disposition),\n\t\t\t   attr(\"application\", \"swish\"),\n\t\t\t   attr(\"ask\", query),\n\t\t\t   attr(\"src_text\", source),\n\t\t\t   attr(\"template\", format+\"(\"+options.projection+\")\"));\n\tconsole.log(formel);\n\t$(\"body\").append(formel);\n\tformel.submit();\n\t$(formel).remove();\n      } else {\n\tvar vars = $().prologEditor('variables', query);\n\tvar disposition = options.disposition;\n\tif ( disposition.indexOf(\".\") < 0 )\n\t  disposition += \".csv\";\n\n\tfunction infoBody() {\n\t  var formel = $.el.form(\n            {class:\"form-horizontal\"},\n\t    form.fields.projection(vars.join(\",\")),\n\t    form.fields.csvFormat(config.swish.csv_formats,\n\t\t\t\t  preferences.getVal(\"csvFormat\")),\n\t    form.fields.limit(\"10 000\", false),\n\t    form.fields.filename(disposition, 2),\n\t    form.fields.buttons(\n\t      { label: \"Download CSV\",\n\t\taction: function(ev, params) {\n\t\t  ev.preventDefault();\n\t\t  if ( config.swish.csv_formats.length > 1 )\n\t\t    preferences.setVal(\"csvFormat\", params.format);\n\t\t  prolog.downloadCSV(query, source, params);\n\n\t\t  return false;\n\t\t}\n\t      }));\n\t  this.append(formel);\n\t}\n\n\tform.showDialog({ title: \"Download query results as CSV\",\n\t\t\t  body:  infoBody\n\t\t        });\n      }\n\n      return this;\n      },\n\n    /**\n     * Remove the full-stop from a query string\n     */\n    trimFullStop: function(s) {\n      return s.replace(/\\.\\s*$/m, \"\");\n    },\n\n    /**\n     * Default options for $.swish()\n     */\n    options: {\n      application: \"swish\",\n      chunk: 5\n    }\n  }\n\n\t\t /*******************************\n\t\t *\t     PENGINES\t\t*\n\t\t *******************************/\n\n  /**\n   * $.swish(options) creates a new Pengine with given default\n   * options.  The default options are determined by `prolog.options`.\n   * This function expects pengines.js to be already loaded.  The\n   * bootstrapping of that is achieved in `swish.js`.\n   *\n   * @return {Pengine} the created pengine object\n   */\n  $.swish = function(options) {\n    for(var opt in prolog.options) {\n      if ( prolog.options.hasOwnProperty(opt) &&\n\t   !options.hasOwnProperty(opt) ) {\n\toptions[opt] = prolog.options[opt];\n      }\n    }\n\n    return new Pengine(options);\n  };\n\n  return prolog;\n});\n\n\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n// This is CodeMirror (http://codemirror.net), a code editor\n// implemented in JavaScript on top of the browser's DOM.\n//\n// You can find some technical background for some of the code below\n// at http://marijnhaverbeke.nl/blog/#cm-internals .\n\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define('cm/lib/codemirror',factory) :\n\t(global.CodeMirror = factory());\n}(this, (function () { 'use strict';\n\n// Kludges for bugs and behavior differences that can't be feature\n// detected are enabled based on userAgent etc sniffing.\nvar userAgent = navigator.userAgent;\nvar platform = navigator.platform;\n\nvar gecko = /gecko\\/\\d/i.test(userAgent);\nvar ie_upto10 = /MSIE \\d/.test(userAgent);\nvar ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(userAgent);\nvar edge = /Edge\\/(\\d+)/.exec(userAgent);\nvar ie = ie_upto10 || ie_11up || edge;\nvar ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1]);\nvar webkit = !edge && /WebKit\\//.test(userAgent);\nvar qtwebkit = webkit && /Qt\\/\\d+\\.\\d+/.test(userAgent);\nvar chrome = !edge && /Chrome\\//.test(userAgent);\nvar presto = /Opera\\//.test(userAgent);\nvar safari = /Apple Computer/.test(navigator.vendor);\nvar mac_geMountainLion = /Mac OS X 1\\d\\D([8-9]|\\d\\d)\\D/.test(userAgent);\nvar phantom = /PhantomJS/.test(userAgent);\n\nvar ios = !edge && /AppleWebKit/.test(userAgent) && /Mobile\\/\\w+/.test(userAgent);\nvar android = /Android/.test(userAgent);\n// This is woefully incomplete. Suggestions for alternative methods welcome.\nvar mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent);\nvar mac = ios || /Mac/.test(platform);\nvar chromeOS = /\\bCrOS\\b/.test(userAgent);\nvar windows = /win/i.test(platform);\n\nvar presto_version = presto && userAgent.match(/Version\\/(\\d*\\.\\d*)/);\nif (presto_version) { presto_version = Number(presto_version[1]); }\nif (presto_version && presto_version >= 15) { presto = false; webkit = true; }\n// Some browsers use the wrong event properties to signal cmd/ctrl on OS X\nvar flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11));\nvar captureRightClick = gecko || (ie && ie_version >= 9);\n\nfunction classTest(cls) { return new RegExp(\"(^|\\\\s)\" + cls + \"(?:$|\\\\s)\\\\s*\") }\n\nvar rmClass = function(node, cls) {\n  var current = node.className;\n  var match = classTest(cls).exec(current);\n  if (match) {\n    var after = current.slice(match.index + match[0].length);\n    node.className = current.slice(0, match.index) + (after ? match[1] + after : \"\");\n  }\n};\n\nfunction removeChildren(e) {\n  for (var count = e.childNodes.length; count > 0; --count)\n    { e.removeChild(e.firstChild); }\n  return e\n}\n\nfunction removeChildrenAndAdd(parent, e) {\n  return removeChildren(parent).appendChild(e)\n}\n\nfunction elt(tag, content, className, style) {\n  var e = document.createElement(tag);\n  if (className) { e.className = className; }\n  if (style) { e.style.cssText = style; }\n  if (typeof content == \"string\") { e.appendChild(document.createTextNode(content)); }\n  else if (content) { for (var i = 0; i < content.length; ++i) { e.appendChild(content[i]); } }\n  return e\n}\n// wrapper for elt, which removes the elt from the accessibility tree\nfunction eltP(tag, content, className, style) {\n  var e = elt(tag, content, className, style);\n  e.setAttribute(\"role\", \"presentation\");\n  return e\n}\n\nvar range;\nif (document.createRange) { range = function(node, start, end, endNode) {\n  var r = document.createRange();\n  r.setEnd(endNode || node, end);\n  r.setStart(node, start);\n  return r\n}; }\nelse { range = function(node, start, end) {\n  var r = document.body.createTextRange();\n  try { r.moveToElementText(node.parentNode); }\n  catch(e) { return r }\n  r.collapse(true);\n  r.moveEnd(\"character\", end);\n  r.moveStart(\"character\", start);\n  return r\n}; }\n\nfunction contains(parent, child) {\n  if (child.nodeType == 3) // Android browser always returns false when child is a textnode\n    { child = child.parentNode; }\n  if (parent.contains)\n    { return parent.contains(child) }\n  do {\n    if (child.nodeType == 11) { child = child.host; }\n    if (child == parent) { return true }\n  } while (child = child.parentNode)\n}\n\nfunction activeElt() {\n  // IE and Edge may throw an \"Unspecified Error\" when accessing document.activeElement.\n  // IE < 10 will throw when accessed while the page is loading or in an iframe.\n  // IE > 9 and Edge will throw when accessed in an iframe if document.body is unavailable.\n  var activeElement;\n  try {\n    activeElement = document.activeElement;\n  } catch(e) {\n    activeElement = document.body || null;\n  }\n  while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement)\n    { activeElement = activeElement.shadowRoot.activeElement; }\n  return activeElement\n}\n\nfunction addClass(node, cls) {\n  var current = node.className;\n  if (!classTest(cls).test(current)) { node.className += (current ? \" \" : \"\") + cls; }\n}\nfunction joinClasses(a, b) {\n  var as = a.split(\" \");\n  for (var i = 0; i < as.length; i++)\n    { if (as[i] && !classTest(as[i]).test(b)) { b += \" \" + as[i]; } }\n  return b\n}\n\nvar selectInput = function(node) { node.select(); };\nif (ios) // Mobile Safari apparently has a bug where select() is broken.\n  { selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length; }; }\nelse if (ie) // Suppress mysterious IE10 errors\n  { selectInput = function(node) { try { node.select(); } catch(_e) {} }; }\n\nfunction bind(f) {\n  var args = Array.prototype.slice.call(arguments, 1);\n  return function(){return f.apply(null, args)}\n}\n\nfunction copyObj(obj, target, overwrite) {\n  if (!target) { target = {}; }\n  for (var prop in obj)\n    { if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop)))\n      { target[prop] = obj[prop]; } }\n  return target\n}\n\n// Counts the column offset in a string, taking tabs into account.\n// Used mostly to find indentation.\nfunction countColumn(string, end, tabSize, startIndex, startValue) {\n  if (end == null) {\n    end = string.search(/[^\\s\\u00a0]/);\n    if (end == -1) { end = string.length; }\n  }\n  for (var i = startIndex || 0, n = startValue || 0;;) {\n    var nextTab = string.indexOf(\"\\t\", i);\n    if (nextTab < 0 || nextTab >= end)\n      { return n + (end - i) }\n    n += nextTab - i;\n    n += tabSize - (n % tabSize);\n    i = nextTab + 1;\n  }\n}\n\nvar Delayed = function() {this.id = null;};\nDelayed.prototype.set = function (ms, f) {\n  clearTimeout(this.id);\n  this.id = setTimeout(f, ms);\n};\n\nfunction indexOf(array, elt) {\n  for (var i = 0; i < array.length; ++i)\n    { if (array[i] == elt) { return i } }\n  return -1\n}\n\n// Number of pixels added to scroller and sizer to hide scrollbar\nvar scrollerGap = 30;\n\n// Returned or thrown by various protocols to signal 'I'm not\n// handling this'.\nvar Pass = {toString: function(){return \"CodeMirror.Pass\"}};\n\n// Reused option objects for setSelection & friends\nvar sel_dontScroll = {scroll: false};\nvar sel_mouse = {origin: \"*mouse\"};\nvar sel_move = {origin: \"+move\"};\n\n// The inverse of countColumn -- find the offset that corresponds to\n// a particular column.\nfunction findColumn(string, goal, tabSize) {\n  for (var pos = 0, col = 0;;) {\n    var nextTab = string.indexOf(\"\\t\", pos);\n    if (nextTab == -1) { nextTab = string.length; }\n    var skipped = nextTab - pos;\n    if (nextTab == string.length || col + skipped >= goal)\n      { return pos + Math.min(skipped, goal - col) }\n    col += nextTab - pos;\n    col += tabSize - (col % tabSize);\n    pos = nextTab + 1;\n    if (col >= goal) { return pos }\n  }\n}\n\nvar spaceStrs = [\"\"];\nfunction spaceStr(n) {\n  while (spaceStrs.length <= n)\n    { spaceStrs.push(lst(spaceStrs) + \" \"); }\n  return spaceStrs[n]\n}\n\nfunction lst(arr) { return arr[arr.length-1] }\n\nfunction map(array, f) {\n  var out = [];\n  for (var i = 0; i < array.length; i++) { out[i] = f(array[i], i); }\n  return out\n}\n\nfunction insertSorted(array, value, score) {\n  var pos = 0, priority = score(value);\n  while (pos < array.length && score(array[pos]) <= priority) { pos++; }\n  array.splice(pos, 0, value);\n}\n\nfunction nothing() {}\n\nfunction createObj(base, props) {\n  var inst;\n  if (Object.create) {\n    inst = Object.create(base);\n  } else {\n    nothing.prototype = base;\n    inst = new nothing();\n  }\n  if (props) { copyObj(props, inst); }\n  return inst\n}\n\nvar nonASCIISingleCaseWordChar = /[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;\nfunction isWordCharBasic(ch) {\n  return /\\w/.test(ch) || ch > \"\\x80\" &&\n    (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch))\n}\nfunction isWordChar(ch, helper) {\n  if (!helper) { return isWordCharBasic(ch) }\n  if (helper.source.indexOf(\"\\\\w\") > -1 && isWordCharBasic(ch)) { return true }\n  return helper.test(ch)\n}\n\nfunction isEmpty(obj) {\n  for (var n in obj) { if (obj.hasOwnProperty(n) && obj[n]) { return false } }\n  return true\n}\n\n// Extending unicode characters. A series of a non-extending char +\n// any number of extending chars is treated as a single unit as far\n// as editing and measuring is concerned. This is not fully correct,\n// since some scripts/fonts/browsers also treat other configurations\n// of code points as a group.\nvar extendingChars = /[\\u0300-\\u036f\\u0483-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u065e\\u0670\\u06d6-\\u06dc\\u06de-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0900-\\u0902\\u093c\\u0941-\\u0948\\u094d\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09bc\\u09be\\u09c1-\\u09c4\\u09cd\\u09d7\\u09e2\\u09e3\\u0a01\\u0a02\\u0a3c\\u0a41\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a70\\u0a71\\u0a75\\u0a81\\u0a82\\u0abc\\u0ac1-\\u0ac5\\u0ac7\\u0ac8\\u0acd\\u0ae2\\u0ae3\\u0b01\\u0b3c\\u0b3e\\u0b3f\\u0b41-\\u0b44\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b82\\u0bbe\\u0bc0\\u0bcd\\u0bd7\\u0c3e-\\u0c40\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0cbc\\u0cbf\\u0cc2\\u0cc6\\u0ccc\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0d3e\\u0d41-\\u0d44\\u0d4d\\u0d57\\u0d62\\u0d63\\u0dca\\u0dcf\\u0dd2-\\u0dd4\\u0dd6\\u0ddf\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0f18\\u0f19\\u0f35\\u0f37\\u0f39\\u0f71-\\u0f7e\\u0f80-\\u0f84\\u0f86\\u0f87\\u0f90-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102d-\\u1030\\u1032-\\u1037\\u1039\\u103a\\u103d\\u103e\\u1058\\u1059\\u105e-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108d\\u109d\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b7-\\u17bd\\u17c6\\u17c9-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193b\\u1a17\\u1a18\\u1a56\\u1a58-\\u1a5e\\u1a60\\u1a62\\u1a65-\\u1a6c\\u1a73-\\u1a7c\\u1a7f\\u1b00-\\u1b03\\u1b34\\u1b36-\\u1b3a\\u1b3c\\u1b42\\u1b6b-\\u1b73\\u1b80\\u1b81\\u1ba2-\\u1ba5\\u1ba8\\u1ba9\\u1c2c-\\u1c33\\u1c36\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce0\\u1ce2-\\u1ce8\\u1ced\\u1dc0-\\u1de6\\u1dfd-\\u1dff\\u200c\\u200d\\u20d0-\\u20f0\\u2cef-\\u2cf1\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua66f-\\ua672\\ua67c\\ua67d\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua825\\ua826\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua951\\ua980-\\ua982\\ua9b3\\ua9b6-\\ua9b9\\ua9bc\\uaa29-\\uaa2e\\uaa31\\uaa32\\uaa35\\uaa36\\uaa43\\uaa4c\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uabe5\\uabe8\\uabed\\udc00-\\udfff\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\uff9e\\uff9f]/;\nfunction isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch) }\n\n// Returns a number from the range [`0`; `str.length`] unless `pos` is outside that range.\nfunction skipExtendingChars(str, pos, dir) {\n  while ((dir < 0 ? pos > 0 : pos < str.length) && isExtendingChar(str.charAt(pos))) { pos += dir; }\n  return pos\n}\n\n// Returns the value from the range [`from`; `to`] that satisfies\n// `pred` and is closest to `from`. Assumes that at least `to` satisfies `pred`.\nfunction findFirst(pred, from, to) {\n  for (;;) {\n    if (Math.abs(from - to) <= 1) { return pred(from) ? from : to }\n    var mid = Math.floor((from + to) / 2);\n    if (pred(mid)) { to = mid; }\n    else { from = mid; }\n  }\n}\n\n// The display handles the DOM integration, both for input reading\n// and content drawing. It holds references to DOM nodes and\n// display-related state.\n\nfunction Display(place, doc, input) {\n  var d = this;\n  this.input = input;\n\n  // Covers bottom-right square when both scrollbars are present.\n  d.scrollbarFiller = elt(\"div\", null, \"CodeMirror-scrollbar-filler\");\n  d.scrollbarFiller.setAttribute(\"cm-not-content\", \"true\");\n  // Covers bottom of gutter when coverGutterNextToScrollbar is on\n  // and h scrollbar is present.\n  d.gutterFiller = elt(\"div\", null, \"CodeMirror-gutter-filler\");\n  d.gutterFiller.setAttribute(\"cm-not-content\", \"true\");\n  // Will contain the actual code, positioned to cover the viewport.\n  d.lineDiv = eltP(\"div\", null, \"CodeMirror-code\");\n  // Elements are added to these to represent selection and cursors.\n  d.selectionDiv = elt(\"div\", null, null, \"position: relative; z-index: 1\");\n  d.cursorDiv = elt(\"div\", null, \"CodeMirror-cursors\");\n  // A visibility: hidden element used to find the size of things.\n  d.measure = elt(\"div\", null, \"CodeMirror-measure\");\n  // When lines outside of the viewport are measured, they are drawn in this.\n  d.lineMeasure = elt(\"div\", null, \"CodeMirror-measure\");\n  // Wraps everything that needs to exist inside the vertically-padded coordinate system\n  d.lineSpace = eltP(\"div\", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv],\n                    null, \"position: relative; outline: none\");\n  var lines = eltP(\"div\", [d.lineSpace], \"CodeMirror-lines\");\n  // Moved around its parent to cover visible view.\n  d.mover = elt(\"div\", [lines], null, \"position: relative\");\n  // Set to the height of the document, allowing scrolling.\n  d.sizer = elt(\"div\", [d.mover], \"CodeMirror-sizer\");\n  d.sizerWidth = null;\n  // Behavior of elts with overflow: auto and padding is\n  // inconsistent across browsers. This is used to ensure the\n  // scrollable area is big enough.\n  d.heightForcer = elt(\"div\", null, null, \"position: absolute; height: \" + scrollerGap + \"px; width: 1px;\");\n  // Will contain the gutters, if any.\n  d.gutters = elt(\"div\", null, \"CodeMirror-gutters\");\n  d.lineGutter = null;\n  // Actual scrollable element.\n  d.scroller = elt(\"div\", [d.sizer, d.heightForcer, d.gutters], \"CodeMirror-scroll\");\n  d.scroller.setAttribute(\"tabIndex\", \"-1\");\n  // The element in which the editor lives.\n  d.wrapper = elt(\"div\", [d.scrollbarFiller, d.gutterFiller, d.scroller], \"CodeMirror\");\n\n  // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported)\n  if (ie && ie_version < 8) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0; }\n  if (!webkit && !(gecko && mobile)) { d.scroller.draggable = true; }\n\n  if (place) {\n    if (place.appendChild) { place.appendChild(d.wrapper); }\n    else { place(d.wrapper); }\n  }\n\n  // Current rendered range (may be bigger than the view window).\n  d.viewFrom = d.viewTo = doc.first;\n  d.reportedViewFrom = d.reportedViewTo = doc.first;\n  // Information about the rendered lines.\n  d.view = [];\n  d.renderedView = null;\n  // Holds info about a single rendered line when it was rendered\n  // for measurement, while not in view.\n  d.externalMeasured = null;\n  // Empty space (in pixels) above the view\n  d.viewOffset = 0;\n  d.lastWrapHeight = d.lastWrapWidth = 0;\n  d.updateLineNumbers = null;\n\n  d.nativeBarWidth = d.barHeight = d.barWidth = 0;\n  d.scrollbarsClipped = false;\n\n  // Used to only resize the line number gutter when necessary (when\n  // the amount of lines crosses a boundary that makes its width change)\n  d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null;\n  // Set to true when a non-horizontal-scrolling line widget is\n  // added. As an optimization, line widget aligning is skipped when\n  // this is false.\n  d.alignWidgets = false;\n\n  d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n\n  // Tracks the maximum line length so that the horizontal scrollbar\n  // can be kept static when scrolling.\n  d.maxLine = null;\n  d.maxLineLength = 0;\n  d.maxLineChanged = false;\n\n  // Used for measuring wheel scrolling granularity\n  d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null;\n\n  // True when shift is held down.\n  d.shift = false;\n\n  // Used to track whether anything happened since the context menu\n  // was opened.\n  d.selForContextMenu = null;\n\n  d.activeTouch = null;\n\n  input.init(d);\n}\n\n// Find the line object corresponding to the given line number.\nfunction getLine(doc, n) {\n  n -= doc.first;\n  if (n < 0 || n >= doc.size) { throw new Error(\"There is no line \" + (n + doc.first) + \" in the document.\") }\n  var chunk = doc;\n  while (!chunk.lines) {\n    for (var i = 0;; ++i) {\n      var child = chunk.children[i], sz = child.chunkSize();\n      if (n < sz) { chunk = child; break }\n      n -= sz;\n    }\n  }\n  return chunk.lines[n]\n}\n\n// Get the part of a document between two positions, as an array of\n// strings.\nfunction getBetween(doc, start, end) {\n  var out = [], n = start.line;\n  doc.iter(start.line, end.line + 1, function (line) {\n    var text = line.text;\n    if (n == end.line) { text = text.slice(0, end.ch); }\n    if (n == start.line) { text = text.slice(start.ch); }\n    out.push(text);\n    ++n;\n  });\n  return out\n}\n// Get the lines between from and to, as array of strings.\nfunction getLines(doc, from, to) {\n  var out = [];\n  doc.iter(from, to, function (line) { out.push(line.text); }); // iter aborts when callback returns truthy value\n  return out\n}\n\n// Update the height of a line, propagating the height change\n// upwards to parent nodes.\nfunction updateLineHeight(line, height) {\n  var diff = height - line.height;\n  if (diff) { for (var n = line; n; n = n.parent) { n.height += diff; } }\n}\n\n// Given a line object, find its line number by walking up through\n// its parent links.\nfunction lineNo(line) {\n  if (line.parent == null) { return null }\n  var cur = line.parent, no = indexOf(cur.lines, line);\n  for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) {\n    for (var i = 0;; ++i) {\n      if (chunk.children[i] == cur) { break }\n      no += chunk.children[i].chunkSize();\n    }\n  }\n  return no + cur.first\n}\n\n// Find the line at the given vertical position, using the height\n// information in the document tree.\nfunction lineAtHeight(chunk, h) {\n  var n = chunk.first;\n  outer: do {\n    for (var i$1 = 0; i$1 < chunk.children.length; ++i$1) {\n      var child = chunk.children[i$1], ch = child.height;\n      if (h < ch) { chunk = child; continue outer }\n      h -= ch;\n      n += child.chunkSize();\n    }\n    return n\n  } while (!chunk.lines)\n  var i = 0;\n  for (; i < chunk.lines.length; ++i) {\n    var line = chunk.lines[i], lh = line.height;\n    if (h < lh) { break }\n    h -= lh;\n  }\n  return n + i\n}\n\nfunction isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size}\n\nfunction lineNumberFor(options, i) {\n  return String(options.lineNumberFormatter(i + options.firstLineNumber))\n}\n\n// A Pos instance represents a position within the text.\nfunction Pos(line, ch, sticky) {\n  if ( sticky === void 0 ) sticky = null;\n\n  if (!(this instanceof Pos)) { return new Pos(line, ch, sticky) }\n  this.line = line;\n  this.ch = ch;\n  this.sticky = sticky;\n}\n\n// Compare two positions, return 0 if they are the same, a negative\n// number when a is less, and a positive number otherwise.\nfunction cmp(a, b) { return a.line - b.line || a.ch - b.ch }\n\nfunction equalCursorPos(a, b) { return a.sticky == b.sticky && cmp(a, b) == 0 }\n\nfunction copyPos(x) {return Pos(x.line, x.ch)}\nfunction maxPos(a, b) { return cmp(a, b) < 0 ? b : a }\nfunction minPos(a, b) { return cmp(a, b) < 0 ? a : b }\n\n// Most of the external API clips given positions to make sure they\n// actually exist within the document.\nfunction clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1))}\nfunction clipPos(doc, pos) {\n  if (pos.line < doc.first) { return Pos(doc.first, 0) }\n  var last = doc.first + doc.size - 1;\n  if (pos.line > last) { return Pos(last, getLine(doc, last).text.length) }\n  return clipToLen(pos, getLine(doc, pos.line).text.length)\n}\nfunction clipToLen(pos, linelen) {\n  var ch = pos.ch;\n  if (ch == null || ch > linelen) { return Pos(pos.line, linelen) }\n  else if (ch < 0) { return Pos(pos.line, 0) }\n  else { return pos }\n}\nfunction clipPosArray(doc, array) {\n  var out = [];\n  for (var i = 0; i < array.length; i++) { out[i] = clipPos(doc, array[i]); }\n  return out\n}\n\n// Optimize some code when these features are not used.\nvar sawReadOnlySpans = false;\nvar sawCollapsedSpans = false;\n\nfunction seeReadOnlySpans() {\n  sawReadOnlySpans = true;\n}\n\nfunction seeCollapsedSpans() {\n  sawCollapsedSpans = true;\n}\n\n// TEXTMARKER SPANS\n\nfunction MarkedSpan(marker, from, to) {\n  this.marker = marker;\n  this.from = from; this.to = to;\n}\n\n// Search an array of spans for a span matching the given marker.\nfunction getMarkedSpanFor(spans, marker) {\n  if (spans) { for (var i = 0; i < spans.length; ++i) {\n    var span = spans[i];\n    if (span.marker == marker) { return span }\n  } }\n}\n// Remove a span from an array, returning undefined if no spans are\n// left (we don't store arrays for lines without spans).\nfunction removeMarkedSpan(spans, span) {\n  var r;\n  for (var i = 0; i < spans.length; ++i)\n    { if (spans[i] != span) { (r || (r = [])).push(spans[i]); } }\n  return r\n}\n// Add a span to a line.\nfunction addMarkedSpan(line, span) {\n  line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span];\n  span.marker.attachLine(line);\n}\n\n// Used for the algorithm that adjusts markers for a change in the\n// document. These functions cut an array of spans at a given\n// character position, returning an array of remaining chunks (or\n// undefined if nothing remains).\nfunction markedSpansBefore(old, startCh, isInsert) {\n  var nw;\n  if (old) { for (var i = 0; i < old.length; ++i) {\n    var span = old[i], marker = span.marker;\n    var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh);\n    if (startsBefore || span.from == startCh && marker.type == \"bookmark\" && (!isInsert || !span.marker.insertLeft)) {\n      var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh);(nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to));\n    }\n  } }\n  return nw\n}\nfunction markedSpansAfter(old, endCh, isInsert) {\n  var nw;\n  if (old) { for (var i = 0; i < old.length; ++i) {\n    var span = old[i], marker = span.marker;\n    var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh);\n    if (endsAfter || span.from == endCh && marker.type == \"bookmark\" && (!isInsert || span.marker.insertLeft)) {\n      var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh);(nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh,\n                                            span.to == null ? null : span.to - endCh));\n    }\n  } }\n  return nw\n}\n\n// Given a change object, compute the new set of marker spans that\n// cover the line in which the change took place. Removes spans\n// entirely within the change, reconnects spans belonging to the\n// same marker that appear on both sides of the change, and cuts off\n// spans partially within the change. Returns an array of span\n// arrays with one element for each line in (after) the change.\nfunction stretchSpansOverChange(doc, change) {\n  if (change.full) { return null }\n  var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans;\n  var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans;\n  if (!oldFirst && !oldLast) { return null }\n\n  var startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0;\n  // Get the spans that 'stick out' on both sides\n  var first = markedSpansBefore(oldFirst, startCh, isInsert);\n  var last = markedSpansAfter(oldLast, endCh, isInsert);\n\n  // Next, merge those two ends\n  var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0);\n  if (first) {\n    // Fix up .to properties of first\n    for (var i = 0; i < first.length; ++i) {\n      var span = first[i];\n      if (span.to == null) {\n        var found = getMarkedSpanFor(last, span.marker);\n        if (!found) { span.to = startCh; }\n        else if (sameLine) { span.to = found.to == null ? null : found.to + offset; }\n      }\n    }\n  }\n  if (last) {\n    // Fix up .from in last (or move them into first in case of sameLine)\n    for (var i$1 = 0; i$1 < last.length; ++i$1) {\n      var span$1 = last[i$1];\n      if (span$1.to != null) { span$1.to += offset; }\n      if (span$1.from == null) {\n        var found$1 = getMarkedSpanFor(first, span$1.marker);\n        if (!found$1) {\n          span$1.from = offset;\n          if (sameLine) { (first || (first = [])).push(span$1); }\n        }\n      } else {\n        span$1.from += offset;\n        if (sameLine) { (first || (first = [])).push(span$1); }\n      }\n    }\n  }\n  // Make sure we didn't create any zero-length spans\n  if (first) { first = clearEmptySpans(first); }\n  if (last && last != first) { last = clearEmptySpans(last); }\n\n  var newMarkers = [first];\n  if (!sameLine) {\n    // Fill gap with whole-line-spans\n    var gap = change.text.length - 2, gapMarkers;\n    if (gap > 0 && first)\n      { for (var i$2 = 0; i$2 < first.length; ++i$2)\n        { if (first[i$2].to == null)\n          { (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i$2].marker, null, null)); } } }\n    for (var i$3 = 0; i$3 < gap; ++i$3)\n      { newMarkers.push(gapMarkers); }\n    newMarkers.push(last);\n  }\n  return newMarkers\n}\n\n// Remove spans that are empty and don't have a clearWhenEmpty\n// option of false.\nfunction clearEmptySpans(spans) {\n  for (var i = 0; i < spans.length; ++i) {\n    var span = spans[i];\n    if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false)\n      { spans.splice(i--, 1); }\n  }\n  if (!spans.length) { return null }\n  return spans\n}\n\n// Used to 'clip' out readOnly ranges when making a change.\nfunction removeReadOnlyRanges(doc, from, to) {\n  var markers = null;\n  doc.iter(from.line, to.line + 1, function (line) {\n    if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n      var mark = line.markedSpans[i].marker;\n      if (mark.readOnly && (!markers || indexOf(markers, mark) == -1))\n        { (markers || (markers = [])).push(mark); }\n    } }\n  });\n  if (!markers) { return null }\n  var parts = [{from: from, to: to}];\n  for (var i = 0; i < markers.length; ++i) {\n    var mk = markers[i], m = mk.find(0);\n    for (var j = 0; j < parts.length; ++j) {\n      var p = parts[j];\n      if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) { continue }\n      var newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to);\n      if (dfrom < 0 || !mk.inclusiveLeft && !dfrom)\n        { newParts.push({from: p.from, to: m.from}); }\n      if (dto > 0 || !mk.inclusiveRight && !dto)\n        { newParts.push({from: m.to, to: p.to}); }\n      parts.splice.apply(parts, newParts);\n      j += newParts.length - 3;\n    }\n  }\n  return parts\n}\n\n// Connect or disconnect spans from a line.\nfunction detachMarkedSpans(line) {\n  var spans = line.markedSpans;\n  if (!spans) { return }\n  for (var i = 0; i < spans.length; ++i)\n    { spans[i].marker.detachLine(line); }\n  line.markedSpans = null;\n}\nfunction attachMarkedSpans(line, spans) {\n  if (!spans) { return }\n  for (var i = 0; i < spans.length; ++i)\n    { spans[i].marker.attachLine(line); }\n  line.markedSpans = spans;\n}\n\n// Helpers used when computing which overlapping collapsed span\n// counts as the larger one.\nfunction extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0 }\nfunction extraRight(marker) { return marker.inclusiveRight ? 1 : 0 }\n\n// Returns a number indicating which of two overlapping collapsed\n// spans is larger (and thus includes the other). Falls back to\n// comparing ids when the spans cover exactly the same range.\nfunction compareCollapsedMarkers(a, b) {\n  var lenDiff = a.lines.length - b.lines.length;\n  if (lenDiff != 0) { return lenDiff }\n  var aPos = a.find(), bPos = b.find();\n  var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b);\n  if (fromCmp) { return -fromCmp }\n  var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b);\n  if (toCmp) { return toCmp }\n  return b.id - a.id\n}\n\n// Find out whether a line ends or starts in a collapsed span. If\n// so, return the marker for that span.\nfunction collapsedSpanAtSide(line, start) {\n  var sps = sawCollapsedSpans && line.markedSpans, found;\n  if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n    sp = sps[i];\n    if (sp.marker.collapsed && (start ? sp.from : sp.to) == null &&\n        (!found || compareCollapsedMarkers(found, sp.marker) < 0))\n      { found = sp.marker; }\n  } }\n  return found\n}\nfunction collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true) }\nfunction collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false) }\n\n// Test whether there exists a collapsed span that partially\n// overlaps (covers the start or end, but not both) of a new span.\n// Such overlap is not allowed.\nfunction conflictingCollapsedRange(doc, lineNo$$1, from, to, marker) {\n  var line = getLine(doc, lineNo$$1);\n  var sps = sawCollapsedSpans && line.markedSpans;\n  if (sps) { for (var i = 0; i < sps.length; ++i) {\n    var sp = sps[i];\n    if (!sp.marker.collapsed) { continue }\n    var found = sp.marker.find(0);\n    var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker);\n    var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker);\n    if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) { continue }\n    if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) ||\n        fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0))\n      { return true }\n  } }\n}\n\n// A visual line is a line as drawn on the screen. Folding, for\n// example, can cause multiple logical lines to appear on the same\n// visual line. This finds the start of the visual line that the\n// given line is part of (usually that is the line itself).\nfunction visualLine(line) {\n  var merged;\n  while (merged = collapsedSpanAtStart(line))\n    { line = merged.find(-1, true).line; }\n  return line\n}\n\nfunction visualLineEnd(line) {\n  var merged;\n  while (merged = collapsedSpanAtEnd(line))\n    { line = merged.find(1, true).line; }\n  return line\n}\n\n// Returns an array of logical lines that continue the visual line\n// started by the argument, or undefined if there are no such lines.\nfunction visualLineContinued(line) {\n  var merged, lines;\n  while (merged = collapsedSpanAtEnd(line)) {\n    line = merged.find(1, true).line\n    ;(lines || (lines = [])).push(line);\n  }\n  return lines\n}\n\n// Get the line number of the start of the visual line that the\n// given line number is part of.\nfunction visualLineNo(doc, lineN) {\n  var line = getLine(doc, lineN), vis = visualLine(line);\n  if (line == vis) { return lineN }\n  return lineNo(vis)\n}\n\n// Get the line number of the start of the next visual line after\n// the given line.\nfunction visualLineEndNo(doc, lineN) {\n  if (lineN > doc.lastLine()) { return lineN }\n  var line = getLine(doc, lineN), merged;\n  if (!lineIsHidden(doc, line)) { return lineN }\n  while (merged = collapsedSpanAtEnd(line))\n    { line = merged.find(1, true).line; }\n  return lineNo(line) + 1\n}\n\n// Compute whether a line is hidden. Lines count as hidden when they\n// are part of a visual line that starts with another line, or when\n// they are entirely covered by collapsed, non-widget span.\nfunction lineIsHidden(doc, line) {\n  var sps = sawCollapsedSpans && line.markedSpans;\n  if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n    sp = sps[i];\n    if (!sp.marker.collapsed) { continue }\n    if (sp.from == null) { return true }\n    if (sp.marker.widgetNode) { continue }\n    if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp))\n      { return true }\n  } }\n}\nfunction lineIsHiddenInner(doc, line, span) {\n  if (span.to == null) {\n    var end = span.marker.find(1, true);\n    return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker))\n  }\n  if (span.marker.inclusiveRight && span.to == line.text.length)\n    { return true }\n  for (var sp = (void 0), i = 0; i < line.markedSpans.length; ++i) {\n    sp = line.markedSpans[i];\n    if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to &&\n        (sp.to == null || sp.to != span.from) &&\n        (sp.marker.inclusiveLeft || span.marker.inclusiveRight) &&\n        lineIsHiddenInner(doc, line, sp)) { return true }\n  }\n}\n\n// Find the height above the given line.\nfunction heightAtLine(lineObj) {\n  lineObj = visualLine(lineObj);\n\n  var h = 0, chunk = lineObj.parent;\n  for (var i = 0; i < chunk.lines.length; ++i) {\n    var line = chunk.lines[i];\n    if (line == lineObj) { break }\n    else { h += line.height; }\n  }\n  for (var p = chunk.parent; p; chunk = p, p = chunk.parent) {\n    for (var i$1 = 0; i$1 < p.children.length; ++i$1) {\n      var cur = p.children[i$1];\n      if (cur == chunk) { break }\n      else { h += cur.height; }\n    }\n  }\n  return h\n}\n\n// Compute the character length of a line, taking into account\n// collapsed ranges (see markText) that might hide parts, and join\n// other lines onto it.\nfunction lineLength(line) {\n  if (line.height == 0) { return 0 }\n  var len = line.text.length, merged, cur = line;\n  while (merged = collapsedSpanAtStart(cur)) {\n    var found = merged.find(0, true);\n    cur = found.from.line;\n    len += found.from.ch - found.to.ch;\n  }\n  cur = line;\n  while (merged = collapsedSpanAtEnd(cur)) {\n    var found$1 = merged.find(0, true);\n    len -= cur.text.length - found$1.from.ch;\n    cur = found$1.to.line;\n    len += cur.text.length - found$1.to.ch;\n  }\n  return len\n}\n\n// Find the longest line in the document.\nfunction findMaxLine(cm) {\n  var d = cm.display, doc = cm.doc;\n  d.maxLine = getLine(doc, doc.first);\n  d.maxLineLength = lineLength(d.maxLine);\n  d.maxLineChanged = true;\n  doc.iter(function (line) {\n    var len = lineLength(line);\n    if (len > d.maxLineLength) {\n      d.maxLineLength = len;\n      d.maxLine = line;\n    }\n  });\n}\n\n// BIDI HELPERS\n\nfunction iterateBidiSections(order, from, to, f) {\n  if (!order) { return f(from, to, \"ltr\") }\n  var found = false;\n  for (var i = 0; i < order.length; ++i) {\n    var part = order[i];\n    if (part.from < to && part.to > from || from == to && part.to == from) {\n      f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? \"rtl\" : \"ltr\");\n      found = true;\n    }\n  }\n  if (!found) { f(from, to, \"ltr\"); }\n}\n\nvar bidiOther = null;\nfunction getBidiPartAt(order, ch, sticky) {\n  var found;\n  bidiOther = null;\n  for (var i = 0; i < order.length; ++i) {\n    var cur = order[i];\n    if (cur.from < ch && cur.to > ch) { return i }\n    if (cur.to == ch) {\n      if (cur.from != cur.to && sticky == \"before\") { found = i; }\n      else { bidiOther = i; }\n    }\n    if (cur.from == ch) {\n      if (cur.from != cur.to && sticky != \"before\") { found = i; }\n      else { bidiOther = i; }\n    }\n  }\n  return found != null ? found : bidiOther\n}\n\n// Bidirectional ordering algorithm\n// See http://unicode.org/reports/tr9/tr9-13.html for the algorithm\n// that this (partially) implements.\n\n// One-char codes used for character types:\n// L (L):   Left-to-Right\n// R (R):   Right-to-Left\n// r (AL):  Right-to-Left Arabic\n// 1 (EN):  European Number\n// + (ES):  European Number Separator\n// % (ET):  European Number Terminator\n// n (AN):  Arabic Number\n// , (CS):  Common Number Separator\n// m (NSM): Non-Spacing Mark\n// b (BN):  Boundary Neutral\n// s (B):   Paragraph Separator\n// t (S):   Segment Separator\n// w (WS):  Whitespace\n// N (ON):  Other Neutrals\n\n// Returns null if characters are ordered as they appear\n// (left-to-right), or an array of sections ({from, to, level}\n// objects) in the order in which they occur visually.\nvar bidiOrdering = (function() {\n  // Character types for codepoints 0 to 0xff\n  var lowTypes = \"bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN\";\n  // Character types for codepoints 0x600 to 0x6f9\n  var arabicTypes = \"nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111\";\n  function charType(code) {\n    if (code <= 0xf7) { return lowTypes.charAt(code) }\n    else if (0x590 <= code && code <= 0x5f4) { return \"R\" }\n    else if (0x600 <= code && code <= 0x6f9) { return arabicTypes.charAt(code - 0x600) }\n    else if (0x6ee <= code && code <= 0x8ac) { return \"r\" }\n    else if (0x2000 <= code && code <= 0x200b) { return \"w\" }\n    else if (code == 0x200c) { return \"b\" }\n    else { return \"L\" }\n  }\n\n  var bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n  var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/;\n\n  function BidiSpan(level, from, to) {\n    this.level = level;\n    this.from = from; this.to = to;\n  }\n\n  return function(str, direction) {\n    var outerType = direction == \"ltr\" ? \"L\" : \"R\";\n\n    if (str.length == 0 || direction == \"ltr\" && !bidiRE.test(str)) { return false }\n    var len = str.length, types = [];\n    for (var i = 0; i < len; ++i)\n      { types.push(charType(str.charCodeAt(i))); }\n\n    // W1. Examine each non-spacing mark (NSM) in the level run, and\n    // change the type of the NSM to the type of the previous\n    // character. If the NSM is at the start of the level run, it will\n    // get the type of sor.\n    for (var i$1 = 0, prev = outerType; i$1 < len; ++i$1) {\n      var type = types[i$1];\n      if (type == \"m\") { types[i$1] = prev; }\n      else { prev = type; }\n    }\n\n    // W2. Search backwards from each instance of a European number\n    // until the first strong type (R, L, AL, or sor) is found. If an\n    // AL is found, change the type of the European number to Arabic\n    // number.\n    // W3. Change all ALs to R.\n    for (var i$2 = 0, cur = outerType; i$2 < len; ++i$2) {\n      var type$1 = types[i$2];\n      if (type$1 == \"1\" && cur == \"r\") { types[i$2] = \"n\"; }\n      else if (isStrong.test(type$1)) { cur = type$1; if (type$1 == \"r\") { types[i$2] = \"R\"; } }\n    }\n\n    // W4. A single European separator between two European numbers\n    // changes to a European number. A single common separator between\n    // two numbers of the same type changes to that type.\n    for (var i$3 = 1, prev$1 = types[0]; i$3 < len - 1; ++i$3) {\n      var type$2 = types[i$3];\n      if (type$2 == \"+\" && prev$1 == \"1\" && types[i$3+1] == \"1\") { types[i$3] = \"1\"; }\n      else if (type$2 == \",\" && prev$1 == types[i$3+1] &&\n               (prev$1 == \"1\" || prev$1 == \"n\")) { types[i$3] = prev$1; }\n      prev$1 = type$2;\n    }\n\n    // W5. A sequence of European terminators adjacent to European\n    // numbers changes to all European numbers.\n    // W6. Otherwise, separators and terminators change to Other\n    // Neutral.\n    for (var i$4 = 0; i$4 < len; ++i$4) {\n      var type$3 = types[i$4];\n      if (type$3 == \",\") { types[i$4] = \"N\"; }\n      else if (type$3 == \"%\") {\n        var end = (void 0);\n        for (end = i$4 + 1; end < len && types[end] == \"%\"; ++end) {}\n        var replace = (i$4 && types[i$4-1] == \"!\") || (end < len && types[end] == \"1\") ? \"1\" : \"N\";\n        for (var j = i$4; j < end; ++j) { types[j] = replace; }\n        i$4 = end - 1;\n      }\n    }\n\n    // W7. Search backwards from each instance of a European number\n    // until the first strong type (R, L, or sor) is found. If an L is\n    // found, then change the type of the European number to L.\n    for (var i$5 = 0, cur$1 = outerType; i$5 < len; ++i$5) {\n      var type$4 = types[i$5];\n      if (cur$1 == \"L\" && type$4 == \"1\") { types[i$5] = \"L\"; }\n      else if (isStrong.test(type$4)) { cur$1 = type$4; }\n    }\n\n    // N1. A sequence of neutrals takes the direction of the\n    // surrounding strong text if the text on both sides has the same\n    // direction. European and Arabic numbers act as if they were R in\n    // terms of their influence on neutrals. Start-of-level-run (sor)\n    // and end-of-level-run (eor) are used at level run boundaries.\n    // N2. Any remaining neutrals take the embedding direction.\n    for (var i$6 = 0; i$6 < len; ++i$6) {\n      if (isNeutral.test(types[i$6])) {\n        var end$1 = (void 0);\n        for (end$1 = i$6 + 1; end$1 < len && isNeutral.test(types[end$1]); ++end$1) {}\n        var before = (i$6 ? types[i$6-1] : outerType) == \"L\";\n        var after = (end$1 < len ? types[end$1] : outerType) == \"L\";\n        var replace$1 = before == after ? (before ? \"L\" : \"R\") : outerType;\n        for (var j$1 = i$6; j$1 < end$1; ++j$1) { types[j$1] = replace$1; }\n        i$6 = end$1 - 1;\n      }\n    }\n\n    // Here we depart from the documented algorithm, in order to avoid\n    // building up an actual levels array. Since there are only three\n    // levels (0, 1, 2) in an implementation that doesn't take\n    // explicit embedding into account, we can build up the order on\n    // the fly, without following the level-based algorithm.\n    var order = [], m;\n    for (var i$7 = 0; i$7 < len;) {\n      if (countsAsLeft.test(types[i$7])) {\n        var start = i$7;\n        for (++i$7; i$7 < len && countsAsLeft.test(types[i$7]); ++i$7) {}\n        order.push(new BidiSpan(0, start, i$7));\n      } else {\n        var pos = i$7, at = order.length;\n        for (++i$7; i$7 < len && types[i$7] != \"L\"; ++i$7) {}\n        for (var j$2 = pos; j$2 < i$7;) {\n          if (countsAsNum.test(types[j$2])) {\n            if (pos < j$2) { order.splice(at, 0, new BidiSpan(1, pos, j$2)); }\n            var nstart = j$2;\n            for (++j$2; j$2 < i$7 && countsAsNum.test(types[j$2]); ++j$2) {}\n            order.splice(at, 0, new BidiSpan(2, nstart, j$2));\n            pos = j$2;\n          } else { ++j$2; }\n        }\n        if (pos < i$7) { order.splice(at, 0, new BidiSpan(1, pos, i$7)); }\n      }\n    }\n    if (order[0].level == 1 && (m = str.match(/^\\s+/))) {\n      order[0].from = m[0].length;\n      order.unshift(new BidiSpan(0, 0, m[0].length));\n    }\n    if (lst(order).level == 1 && (m = str.match(/\\s+$/))) {\n      lst(order).to -= m[0].length;\n      order.push(new BidiSpan(0, len - m[0].length, len));\n    }\n\n    return direction == \"rtl\" ? order.reverse() : order\n  }\n})();\n\n// Get the bidi ordering for the given line (and cache it). Returns\n// false for lines that are fully left-to-right, and an array of\n// BidiSpan objects otherwise.\nfunction getOrder(line, direction) {\n  var order = line.order;\n  if (order == null) { order = line.order = bidiOrdering(line.text, direction); }\n  return order\n}\n\nfunction moveCharLogically(line, ch, dir) {\n  var target = skipExtendingChars(line.text, ch + dir, dir);\n  return target < 0 || target > line.text.length ? null : target\n}\n\nfunction moveLogically(line, start, dir) {\n  var ch = moveCharLogically(line, start.ch, dir);\n  return ch == null ? null : new Pos(start.line, ch, dir < 0 ? \"after\" : \"before\")\n}\n\nfunction endOfLine(visually, cm, lineObj, lineNo, dir) {\n  if (visually) {\n    var order = getOrder(lineObj, cm.doc.direction);\n    if (order) {\n      var part = dir < 0 ? lst(order) : order[0];\n      var moveInStorageOrder = (dir < 0) == (part.level == 1);\n      var sticky = moveInStorageOrder ? \"after\" : \"before\";\n      var ch;\n      // With a wrapped rtl chunk (possibly spanning multiple bidi parts),\n      // it could be that the last bidi part is not on the last visual line,\n      // since visual lines contain content order-consecutive chunks.\n      // Thus, in rtl, we are looking for the first (content-order) character\n      // in the rtl chunk that is on the last line (that is, the same line\n      // as the last (content-order) character).\n      if (part.level > 0) {\n        var prep = prepareMeasureForLine(cm, lineObj);\n        ch = dir < 0 ? lineObj.text.length - 1 : 0;\n        var targetTop = measureCharPrepared(cm, prep, ch).top;\n        ch = findFirst(function (ch) { return measureCharPrepared(cm, prep, ch).top == targetTop; }, (dir < 0) == (part.level == 1) ? part.from : part.to - 1, ch);\n        if (sticky == \"before\") { ch = moveCharLogically(lineObj, ch, 1, true); }\n      } else { ch = dir < 0 ? part.to : part.from; }\n      return new Pos(lineNo, ch, sticky)\n    }\n  }\n  return new Pos(lineNo, dir < 0 ? lineObj.text.length : 0, dir < 0 ? \"before\" : \"after\")\n}\n\nfunction moveVisually(cm, line, start, dir) {\n  var bidi = getOrder(line, cm.doc.direction);\n  if (!bidi) { return moveLogically(line, start, dir) }\n  if (start.ch >= line.text.length) {\n    start.ch = line.text.length;\n    start.sticky = \"before\";\n  } else if (start.ch <= 0) {\n    start.ch = 0;\n    start.sticky = \"after\";\n  }\n  var partPos = getBidiPartAt(bidi, start.ch, start.sticky), part = bidi[partPos];\n  if (cm.doc.direction == \"ltr\" && part.level % 2 == 0 && (dir > 0 ? part.to > start.ch : part.from < start.ch)) {\n    // Case 1: We move within an ltr part in an ltr editor. Even with wrapped lines,\n    // nothing interesting happens.\n    return moveLogically(line, start, dir)\n  }\n\n  var mv = function (pos, dir) { return moveCharLogically(line, pos instanceof Pos ? pos.ch : pos, dir); };\n  var prep;\n  var getWrappedLineExtent = function (ch) {\n    if (!cm.options.lineWrapping) { return {begin: 0, end: line.text.length} }\n    prep = prep || prepareMeasureForLine(cm, line);\n    return wrappedLineExtentChar(cm, line, prep, ch)\n  };\n  var wrappedLineExtent = getWrappedLineExtent(start.sticky == \"before\" ? mv(start, -1) : start.ch);\n\n  if (cm.doc.direction == \"rtl\" || part.level == 1) {\n    var moveInStorageOrder = (part.level == 1) == (dir < 0);\n    var ch = mv(start, moveInStorageOrder ? 1 : -1);\n    if (ch != null && (!moveInStorageOrder ? ch >= part.from && ch >= wrappedLineExtent.begin : ch <= part.to && ch <= wrappedLineExtent.end)) {\n      // Case 2: We move within an rtl part or in an rtl editor on the same visual line\n      var sticky = moveInStorageOrder ? \"before\" : \"after\";\n      return new Pos(start.line, ch, sticky)\n    }\n  }\n\n  // Case 3: Could not move within this bidi part in this visual line, so leave\n  // the current bidi part\n\n  var searchInVisualLine = function (partPos, dir, wrappedLineExtent) {\n    var getRes = function (ch, moveInStorageOrder) { return moveInStorageOrder\n      ? new Pos(start.line, mv(ch, 1), \"before\")\n      : new Pos(start.line, ch, \"after\"); };\n\n    for (; partPos >= 0 && partPos < bidi.length; partPos += dir) {\n      var part = bidi[partPos];\n      var moveInStorageOrder = (dir > 0) == (part.level != 1);\n      var ch = moveInStorageOrder ? wrappedLineExtent.begin : mv(wrappedLineExtent.end, -1);\n      if (part.from <= ch && ch < part.to) { return getRes(ch, moveInStorageOrder) }\n      ch = moveInStorageOrder ? part.from : mv(part.to, -1);\n      if (wrappedLineExtent.begin <= ch && ch < wrappedLineExtent.end) { return getRes(ch, moveInStorageOrder) }\n    }\n  };\n\n  // Case 3a: Look for other bidi parts on the same visual line\n  var res = searchInVisualLine(partPos + dir, dir, wrappedLineExtent);\n  if (res) { return res }\n\n  // Case 3b: Look for other bidi parts on the next visual line\n  var nextCh = dir > 0 ? wrappedLineExtent.end : mv(wrappedLineExtent.begin, -1);\n  if (nextCh != null && !(dir > 0 && nextCh == line.text.length)) {\n    res = searchInVisualLine(dir > 0 ? 0 : bidi.length - 1, dir, getWrappedLineExtent(nextCh));\n    if (res) { return res }\n  }\n\n  // Case 4: Nowhere to move\n  return null\n}\n\n// EVENT HANDLING\n\n// Lightweight event framework. on/off also work on DOM nodes,\n// registering native DOM handlers.\n\nvar noHandlers = [];\n\nvar on = function(emitter, type, f) {\n  if (emitter.addEventListener) {\n    emitter.addEventListener(type, f, false);\n  } else if (emitter.attachEvent) {\n    emitter.attachEvent(\"on\" + type, f);\n  } else {\n    var map$$1 = emitter._handlers || (emitter._handlers = {});\n    map$$1[type] = (map$$1[type] || noHandlers).concat(f);\n  }\n};\n\nfunction getHandlers(emitter, type) {\n  return emitter._handlers && emitter._handlers[type] || noHandlers\n}\n\nfunction off(emitter, type, f) {\n  if (emitter.removeEventListener) {\n    emitter.removeEventListener(type, f, false);\n  } else if (emitter.detachEvent) {\n    emitter.detachEvent(\"on\" + type, f);\n  } else {\n    var map$$1 = emitter._handlers, arr = map$$1 && map$$1[type];\n    if (arr) {\n      var index = indexOf(arr, f);\n      if (index > -1)\n        { map$$1[type] = arr.slice(0, index).concat(arr.slice(index + 1)); }\n    }\n  }\n}\n\nfunction signal(emitter, type /*, values...*/) {\n  var handlers = getHandlers(emitter, type);\n  if (!handlers.length) { return }\n  var args = Array.prototype.slice.call(arguments, 2);\n  for (var i = 0; i < handlers.length; ++i) { handlers[i].apply(null, args); }\n}\n\n// The DOM events that CodeMirror handles can be overridden by\n// registering a (non-DOM) handler on the editor for the event name,\n// and preventDefault-ing the event in that handler.\nfunction signalDOMEvent(cm, e, override) {\n  if (typeof e == \"string\")\n    { e = {type: e, preventDefault: function() { this.defaultPrevented = true; }}; }\n  signal(cm, override || e.type, cm, e);\n  return e_defaultPrevented(e) || e.codemirrorIgnore\n}\n\nfunction signalCursorActivity(cm) {\n  var arr = cm._handlers && cm._handlers.cursorActivity;\n  if (!arr) { return }\n  var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []);\n  for (var i = 0; i < arr.length; ++i) { if (indexOf(set, arr[i]) == -1)\n    { set.push(arr[i]); } }\n}\n\nfunction hasHandler(emitter, type) {\n  return getHandlers(emitter, type).length > 0\n}\n\n// Add on and off methods to a constructor's prototype, to make\n// registering events on such objects more convenient.\nfunction eventMixin(ctor) {\n  ctor.prototype.on = function(type, f) {on(this, type, f);};\n  ctor.prototype.off = function(type, f) {off(this, type, f);};\n}\n\n// Due to the fact that we still support jurassic IE versions, some\n// compatibility wrappers are needed.\n\nfunction e_preventDefault(e) {\n  if (e.preventDefault) { e.preventDefault(); }\n  else { e.returnValue = false; }\n}\nfunction e_stopPropagation(e) {\n  if (e.stopPropagation) { e.stopPropagation(); }\n  else { e.cancelBubble = true; }\n}\nfunction e_defaultPrevented(e) {\n  return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false\n}\nfunction e_stop(e) {e_preventDefault(e); e_stopPropagation(e);}\n\nfunction e_target(e) {return e.target || e.srcElement}\nfunction e_button(e) {\n  var b = e.which;\n  if (b == null) {\n    if (e.button & 1) { b = 1; }\n    else if (e.button & 2) { b = 3; }\n    else if (e.button & 4) { b = 2; }\n  }\n  if (mac && e.ctrlKey && b == 1) { b = 3; }\n  return b\n}\n\n// Detect drag-and-drop\nvar dragAndDrop = function() {\n  // There is *some* kind of drag-and-drop support in IE6-8, but I\n  // couldn't get it to work yet.\n  if (ie && ie_version < 9) { return false }\n  var div = elt('div');\n  return \"draggable\" in div || \"dragDrop\" in div\n}();\n\nvar zwspSupported;\nfunction zeroWidthElement(measure) {\n  if (zwspSupported == null) {\n    var test = elt(\"span\", \"\\u200b\");\n    removeChildrenAndAdd(measure, elt(\"span\", [test, document.createTextNode(\"x\")]));\n    if (measure.firstChild.offsetHeight != 0)\n      { zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8); }\n  }\n  var node = zwspSupported ? elt(\"span\", \"\\u200b\") :\n    elt(\"span\", \"\\u00a0\", null, \"display: inline-block; width: 1px; margin-right: -1px\");\n  node.setAttribute(\"cm-text\", \"\");\n  return node\n}\n\n// Feature-detect IE's crummy client rect reporting for bidi text\nvar badBidiRects;\nfunction hasBadBidiRects(measure) {\n  if (badBidiRects != null) { return badBidiRects }\n  var txt = removeChildrenAndAdd(measure, document.createTextNode(\"A\\u062eA\"));\n  var r0 = range(txt, 0, 1).getBoundingClientRect();\n  var r1 = range(txt, 1, 2).getBoundingClientRect();\n  removeChildren(measure);\n  if (!r0 || r0.left == r0.right) { return false } // Safari returns null in some cases (#2780)\n  return badBidiRects = (r1.right - r0.right < 3)\n}\n\n// See if \"\".split is the broken IE version, if so, provide an\n// alternative way to split lines.\nvar splitLinesAuto = \"\\n\\nb\".split(/\\n/).length != 3 ? function (string) {\n  var pos = 0, result = [], l = string.length;\n  while (pos <= l) {\n    var nl = string.indexOf(\"\\n\", pos);\n    if (nl == -1) { nl = string.length; }\n    var line = string.slice(pos, string.charAt(nl - 1) == \"\\r\" ? nl - 1 : nl);\n    var rt = line.indexOf(\"\\r\");\n    if (rt != -1) {\n      result.push(line.slice(0, rt));\n      pos += rt + 1;\n    } else {\n      result.push(line);\n      pos = nl + 1;\n    }\n  }\n  return result\n} : function (string) { return string.split(/\\r\\n?|\\n/); };\n\nvar hasSelection = window.getSelection ? function (te) {\n  try { return te.selectionStart != te.selectionEnd }\n  catch(e) { return false }\n} : function (te) {\n  var range$$1;\n  try {range$$1 = te.ownerDocument.selection.createRange();}\n  catch(e) {}\n  if (!range$$1 || range$$1.parentElement() != te) { return false }\n  return range$$1.compareEndPoints(\"StartToEnd\", range$$1) != 0\n};\n\nvar hasCopyEvent = (function () {\n  var e = elt(\"div\");\n  if (\"oncopy\" in e) { return true }\n  e.setAttribute(\"oncopy\", \"return;\");\n  return typeof e.oncopy == \"function\"\n})();\n\nvar badZoomedRects = null;\nfunction hasBadZoomedRects(measure) {\n  if (badZoomedRects != null) { return badZoomedRects }\n  var node = removeChildrenAndAdd(measure, elt(\"span\", \"x\"));\n  var normal = node.getBoundingClientRect();\n  var fromRange = range(node, 0, 1).getBoundingClientRect();\n  return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1\n}\n\n// Known modes, by name and by MIME\nvar modes = {};\nvar mimeModes = {};\n\n// Extra arguments are stored as the mode's dependencies, which is\n// used by (legacy) mechanisms like loadmode.js to automatically\n// load a mode. (Preferred mechanism is the require/define calls.)\nfunction defineMode(name, mode) {\n  if (arguments.length > 2)\n    { mode.dependencies = Array.prototype.slice.call(arguments, 2); }\n  modes[name] = mode;\n}\n\nfunction defineMIME(mime, spec) {\n  mimeModes[mime] = spec;\n}\n\n// Given a MIME type, a {name, ...options} config object, or a name\n// string, return a mode config object.\nfunction resolveMode(spec) {\n  if (typeof spec == \"string\" && mimeModes.hasOwnProperty(spec)) {\n    spec = mimeModes[spec];\n  } else if (spec && typeof spec.name == \"string\" && mimeModes.hasOwnProperty(spec.name)) {\n    var found = mimeModes[spec.name];\n    if (typeof found == \"string\") { found = {name: found}; }\n    spec = createObj(found, spec);\n    spec.name = found.name;\n  } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+xml$/.test(spec)) {\n    return resolveMode(\"application/xml\")\n  } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+json$/.test(spec)) {\n    return resolveMode(\"application/json\")\n  }\n  if (typeof spec == \"string\") { return {name: spec} }\n  else { return spec || {name: \"null\"} }\n}\n\n// Given a mode spec (anything that resolveMode accepts), find and\n// initialize an actual mode object.\nfunction getMode(options, spec) {\n  spec = resolveMode(spec);\n  var mfactory = modes[spec.name];\n  if (!mfactory) { return getMode(options, \"text/plain\") }\n  var modeObj = mfactory(options, spec);\n  if (modeExtensions.hasOwnProperty(spec.name)) {\n    var exts = modeExtensions[spec.name];\n    for (var prop in exts) {\n      if (!exts.hasOwnProperty(prop)) { continue }\n      if (modeObj.hasOwnProperty(prop)) { modeObj[\"_\" + prop] = modeObj[prop]; }\n      modeObj[prop] = exts[prop];\n    }\n  }\n  modeObj.name = spec.name;\n  if (spec.helperType) { modeObj.helperType = spec.helperType; }\n  if (spec.modeProps) { for (var prop$1 in spec.modeProps)\n    { modeObj[prop$1] = spec.modeProps[prop$1]; } }\n\n  return modeObj\n}\n\n// This can be used to attach properties to mode objects from\n// outside the actual mode definition.\nvar modeExtensions = {};\nfunction extendMode(mode, properties) {\n  var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {});\n  copyObj(properties, exts);\n}\n\nfunction copyState(mode, state) {\n  if (state === true) { return state }\n  if (mode.copyState) { return mode.copyState(state) }\n  var nstate = {};\n  for (var n in state) {\n    var val = state[n];\n    if (val instanceof Array) { val = val.concat([]); }\n    nstate[n] = val;\n  }\n  return nstate\n}\n\n// Given a mode and a state (for that mode), find the inner mode and\n// state at the position that the state refers to.\nfunction innerMode(mode, state) {\n  var info;\n  while (mode.innerMode) {\n    info = mode.innerMode(state);\n    if (!info || info.mode == mode) { break }\n    state = info.state;\n    mode = info.mode;\n  }\n  return info || {mode: mode, state: state}\n}\n\nfunction startState(mode, a1, a2) {\n  return mode.startState ? mode.startState(a1, a2) : true\n}\n\n// STRING STREAM\n\n// Fed to the mode parsers, provides helper functions to make\n// parsers more succinct.\n\nvar StringStream = function(string, tabSize) {\n  this.pos = this.start = 0;\n  this.string = string;\n  this.tabSize = tabSize || 8;\n  this.lastColumnPos = this.lastColumnValue = 0;\n  this.lineStart = 0;\n};\n\nStringStream.prototype.eol = function () {return this.pos >= this.string.length};\nStringStream.prototype.sol = function () {return this.pos == this.lineStart};\nStringStream.prototype.peek = function () {return this.string.charAt(this.pos) || undefined};\nStringStream.prototype.next = function () {\n  if (this.pos < this.string.length)\n    { return this.string.charAt(this.pos++) }\n};\nStringStream.prototype.eat = function (match) {\n  var ch = this.string.charAt(this.pos);\n  var ok;\n  if (typeof match == \"string\") { ok = ch == match; }\n  else { ok = ch && (match.test ? match.test(ch) : match(ch)); }\n  if (ok) {++this.pos; return ch}\n};\nStringStream.prototype.eatWhile = function (match) {\n  var start = this.pos;\n  while (this.eat(match)){}\n  return this.pos > start\n};\nStringStream.prototype.eatSpace = function () {\n    var this$1 = this;\n\n  var start = this.pos;\n  while (/[\\s\\u00a0]/.test(this.string.charAt(this.pos))) { ++this$1.pos; }\n  return this.pos > start\n};\nStringStream.prototype.skipToEnd = function () {this.pos = this.string.length;};\nStringStream.prototype.skipTo = function (ch) {\n  var found = this.string.indexOf(ch, this.pos);\n  if (found > -1) {this.pos = found; return true}\n};\nStringStream.prototype.backUp = function (n) {this.pos -= n;};\nStringStream.prototype.column = function () {\n  if (this.lastColumnPos < this.start) {\n    this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue);\n    this.lastColumnPos = this.start;\n  }\n  return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n};\nStringStream.prototype.indentation = function () {\n  return countColumn(this.string, null, this.tabSize) -\n    (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n};\nStringStream.prototype.match = function (pattern, consume, caseInsensitive) {\n  if (typeof pattern == \"string\") {\n    var cased = function (str) { return caseInsensitive ? str.toLowerCase() : str; };\n    var substr = this.string.substr(this.pos, pattern.length);\n    if (cased(substr) == cased(pattern)) {\n      if (consume !== false) { this.pos += pattern.length; }\n      return true\n    }\n  } else {\n    var match = this.string.slice(this.pos).match(pattern);\n    if (match && match.index > 0) { return null }\n    if (match && consume !== false) { this.pos += match[0].length; }\n    return match\n  }\n};\nStringStream.prototype.current = function (){return this.string.slice(this.start, this.pos)};\nStringStream.prototype.hideFirstChars = function (n, inner) {\n  this.lineStart += n;\n  try { return inner() }\n  finally { this.lineStart -= n; }\n};\n\n// Compute a style array (an array starting with a mode generation\n// -- for invalidation -- followed by pairs of end positions and\n// style strings), which is used to highlight the tokens on the\n// line.\nfunction highlightLine(cm, line, state, forceToEnd) {\n  // A styles array always starts with a number identifying the\n  // mode/overlays that it is based on (for easy invalidation).\n  var st = [cm.state.modeGen], lineClasses = {};\n  // Compute the base array of styles\n  runMode(cm, line.text, cm.doc.mode, state, function (end, style) { return st.push(end, style); },\n    lineClasses, forceToEnd);\n\n  // Run overlays, adjust style array.\n  var loop = function ( o ) {\n    var overlay = cm.state.overlays[o], i = 1, at = 0;\n    runMode(cm, line.text, overlay.mode, true, function (end, style) {\n      var start = i;\n      // Ensure there's a token end at the current position, and that i points at it\n      while (at < end) {\n        var i_end = st[i];\n        if (i_end > end)\n          { st.splice(i, 1, end, st[i+1], i_end); }\n        i += 2;\n        at = Math.min(end, i_end);\n      }\n      if (!style) { return }\n      if (overlay.opaque) {\n        st.splice(start, i - start, end, \"overlay \" + style);\n        i = start + 2;\n      } else {\n        for (; start < i; start += 2) {\n          var cur = st[start+1];\n          st[start+1] = (cur ? cur + \" \" : \"\") + \"overlay \" + style;\n        }\n      }\n    }, lineClasses);\n  };\n\n  for (var o = 0; o < cm.state.overlays.length; ++o) loop( o );\n\n  return {styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null}\n}\n\nfunction getLineStyles(cm, line, updateFrontier) {\n  if (!line.styles || line.styles[0] != cm.state.modeGen) {\n    var state = getStateBefore(cm, lineNo(line));\n    var result = highlightLine(cm, line, line.text.length > cm.options.maxHighlightLength ? copyState(cm.doc.mode, state) : state);\n    line.stateAfter = state;\n    line.styles = result.styles;\n    if (result.classes) { line.styleClasses = result.classes; }\n    else if (line.styleClasses) { line.styleClasses = null; }\n    if (updateFrontier === cm.doc.frontier) { cm.doc.frontier++; }\n  }\n  return line.styles\n}\n\nfunction getStateBefore(cm, n, precise) {\n  var doc = cm.doc, display = cm.display;\n  if (!doc.mode.startState) { return true }\n  var pos = findStartLine(cm, n, precise), state = pos > doc.first && getLine(doc, pos-1).stateAfter;\n  if (!state) { state = startState(doc.mode); }\n  else { state = copyState(doc.mode, state); }\n  doc.iter(pos, n, function (line) {\n    processLine(cm, line.text, state);\n    var save = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo;\n    line.stateAfter = save ? copyState(doc.mode, state) : null;\n    ++pos;\n  });\n  if (precise) { doc.frontier = pos; }\n  return state\n}\n\n// Lightweight form of highlight -- proceed over this line and\n// update state, but don't save a style array. Used for lines that\n// aren't currently visible.\nfunction processLine(cm, text, state, startAt) {\n  var mode = cm.doc.mode;\n  var stream = new StringStream(text, cm.options.tabSize);\n  stream.start = stream.pos = startAt || 0;\n  if (text == \"\") { callBlankLine(mode, state); }\n  while (!stream.eol()) {\n    readToken(mode, stream, state);\n    stream.start = stream.pos;\n  }\n}\n\nfunction callBlankLine(mode, state) {\n  if (mode.blankLine) { return mode.blankLine(state) }\n  if (!mode.innerMode) { return }\n  var inner = innerMode(mode, state);\n  if (inner.mode.blankLine) { return inner.mode.blankLine(inner.state) }\n}\n\nfunction readToken(mode, stream, state, inner) {\n  for (var i = 0; i < 10; i++) {\n    if (inner) { inner[0] = innerMode(mode, state).mode; }\n    var style = mode.token(stream, state);\n    if (stream.pos > stream.start) { return style }\n  }\n  throw new Error(\"Mode \" + mode.name + \" failed to advance stream.\")\n}\n\n// Utility for getTokenAt and getLineTokens\nfunction takeToken(cm, pos, precise, asArray) {\n  var getObj = function (copy) { return ({\n    start: stream.start, end: stream.pos,\n    string: stream.current(),\n    type: style || null,\n    state: copy ? copyState(doc.mode, state) : state\n  }); };\n\n  var doc = cm.doc, mode = doc.mode, style;\n  pos = clipPos(doc, pos);\n  var line = getLine(doc, pos.line), state = getStateBefore(cm, pos.line, precise);\n  var stream = new StringStream(line.text, cm.options.tabSize), tokens;\n  if (asArray) { tokens = []; }\n  while ((asArray || stream.pos < pos.ch) && !stream.eol()) {\n    stream.start = stream.pos;\n    style = readToken(mode, stream, state);\n    if (asArray) { tokens.push(getObj(true)); }\n  }\n  return asArray ? tokens : getObj()\n}\n\nfunction extractLineClasses(type, output) {\n  if (type) { for (;;) {\n    var lineClass = type.match(/(?:^|\\s+)line-(background-)?(\\S+)/);\n    if (!lineClass) { break }\n    type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length);\n    var prop = lineClass[1] ? \"bgClass\" : \"textClass\";\n    if (output[prop] == null)\n      { output[prop] = lineClass[2]; }\n    else if (!(new RegExp(\"(?:^|\\s)\" + lineClass[2] + \"(?:$|\\s)\")).test(output[prop]))\n      { output[prop] += \" \" + lineClass[2]; }\n  } }\n  return type\n}\n\n// Run the given mode's parser over a line, calling f for each token.\nfunction runMode(cm, text, mode, state, f, lineClasses, forceToEnd) {\n  var flattenSpans = mode.flattenSpans;\n  if (flattenSpans == null) { flattenSpans = cm.options.flattenSpans; }\n  var curStart = 0, curStyle = null;\n  var stream = new StringStream(text, cm.options.tabSize), style;\n  var inner = cm.options.addModeClass && [null];\n  if (text == \"\") { extractLineClasses(callBlankLine(mode, state), lineClasses); }\n  while (!stream.eol()) {\n    if (stream.pos > cm.options.maxHighlightLength) {\n      flattenSpans = false;\n      if (forceToEnd) { processLine(cm, text, state, stream.pos); }\n      stream.pos = text.length;\n      style = null;\n    } else {\n      style = extractLineClasses(readToken(mode, stream, state, inner), lineClasses);\n    }\n    if (inner) {\n      var mName = inner[0].name;\n      if (mName) { style = \"m-\" + (style ? mName + \" \" + style : mName); }\n    }\n    if (!flattenSpans || curStyle != style) {\n      while (curStart < stream.start) {\n        curStart = Math.min(stream.start, curStart + 5000);\n        f(curStart, curStyle);\n      }\n      curStyle = style;\n    }\n    stream.start = stream.pos;\n  }\n  while (curStart < stream.pos) {\n    // Webkit seems to refuse to render text nodes longer than 57444\n    // characters, and returns inaccurate measurements in nodes\n    // starting around 5000 chars.\n    var pos = Math.min(stream.pos, curStart + 5000);\n    f(pos, curStyle);\n    curStart = pos;\n  }\n}\n\n// Finds the line to start with when starting a parse. Tries to\n// find a line with a stateAfter, so that it can start with a\n// valid state. If that fails, it returns the line with the\n// smallest indentation, which tends to need the least context to\n// parse correctly.\nfunction findStartLine(cm, n, precise) {\n  var minindent, minline, doc = cm.doc;\n  var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100);\n  for (var search = n; search > lim; --search) {\n    if (search <= doc.first) { return doc.first }\n    var line = getLine(doc, search - 1);\n    if (line.stateAfter && (!precise || search <= doc.frontier)) { return search }\n    var indented = countColumn(line.text, null, cm.options.tabSize);\n    if (minline == null || minindent > indented) {\n      minline = search - 1;\n      minindent = indented;\n    }\n  }\n  return minline\n}\n\n// LINE DATA STRUCTURE\n\n// Line objects. These hold state related to a line, including\n// highlighting info (the styles array).\nvar Line = function(text, markedSpans, estimateHeight) {\n  this.text = text;\n  attachMarkedSpans(this, markedSpans);\n  this.height = estimateHeight ? estimateHeight(this) : 1;\n};\n\nLine.prototype.lineNo = function () { return lineNo(this) };\neventMixin(Line);\n\n// Change the content (text, markers) of a line. Automatically\n// invalidates cached information and tries to re-estimate the\n// line's height.\nfunction updateLine(line, text, markedSpans, estimateHeight) {\n  line.text = text;\n  if (line.stateAfter) { line.stateAfter = null; }\n  if (line.styles) { line.styles = null; }\n  if (line.order != null) { line.order = null; }\n  detachMarkedSpans(line);\n  attachMarkedSpans(line, markedSpans);\n  var estHeight = estimateHeight ? estimateHeight(line) : 1;\n  if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n}\n\n// Detach a line from the document tree and its markers.\nfunction cleanUpLine(line) {\n  line.parent = null;\n  detachMarkedSpans(line);\n}\n\n// Convert a style as returned by a mode (either null, or a string\n// containing one or more styles) to a CSS style. This is cached,\n// and also looks for line-wide styles.\nvar styleToClassCache = {};\nvar styleToClassCacheWithMode = {};\nfunction interpretTokenStyle(style, options) {\n  if (!style || /^\\s*$/.test(style)) { return null }\n  var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache;\n  return cache[style] ||\n    (cache[style] = style.replace(/\\S+/g, \"cm-$&\"))\n}\n\n// Render the DOM representation of the text of a line. Also builds\n// up a 'line map', which points at the DOM nodes that represent\n// specific stretches of text, and is used by the measuring code.\n// The returned object contains the DOM node, this map, and\n// information about line-wide styles that were set by the mode.\nfunction buildLineContent(cm, lineView) {\n  // The padding-right forces the element to have a 'border', which\n  // is needed on Webkit to be able to get line-level bounding\n  // rectangles for it (in measureChar).\n  var content = eltP(\"span\", null, null, webkit ? \"padding-right: .1px\" : null);\n  var builder = {pre: eltP(\"pre\", [content], \"CodeMirror-line\"), content: content,\n                 col: 0, pos: 0, cm: cm,\n                 trailingSpace: false,\n                 splitSpaces: (ie || webkit) && cm.getOption(\"lineWrapping\")};\n  lineView.measure = {};\n\n  // Iterate over the logical lines that make up this visual line.\n  for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) {\n    var line = i ? lineView.rest[i - 1] : lineView.line, order = (void 0);\n    builder.pos = 0;\n    builder.addToken = buildToken;\n    // Optionally wire in some hacks into the token-rendering\n    // algorithm, to deal with browser quirks.\n    if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line, cm.doc.direction)))\n      { builder.addToken = buildTokenBadBidi(builder.addToken, order); }\n    builder.map = [];\n    var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line);\n    insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate));\n    if (line.styleClasses) {\n      if (line.styleClasses.bgClass)\n        { builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || \"\"); }\n      if (line.styleClasses.textClass)\n        { builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || \"\"); }\n    }\n\n    // Ensure at least a single node is present, for measuring.\n    if (builder.map.length == 0)\n      { builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure))); }\n\n    // Store the map and a cache object for the current logical line\n    if (i == 0) {\n      lineView.measure.map = builder.map;\n      lineView.measure.cache = {};\n    } else {\n      (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map)\n      ;(lineView.measure.caches || (lineView.measure.caches = [])).push({});\n    }\n  }\n\n  // See issue #2901\n  if (webkit) {\n    var last = builder.content.lastChild;\n    if (/\\bcm-tab\\b/.test(last.className) || (last.querySelector && last.querySelector(\".cm-tab\")))\n      { builder.content.className = \"cm-tab-wrap-hack\"; }\n  }\n\n  signal(cm, \"renderLine\", cm, lineView.line, builder.pre);\n  if (builder.pre.className)\n    { builder.textClass = joinClasses(builder.pre.className, builder.textClass || \"\"); }\n\n  return builder\n}\n\nfunction defaultSpecialCharPlaceholder(ch) {\n  var token = elt(\"span\", \"\\u2022\", \"cm-invalidchar\");\n  token.title = \"\\\\u\" + ch.charCodeAt(0).toString(16);\n  token.setAttribute(\"aria-label\", token.title);\n  return token\n}\n\n// Build up the DOM representation for a single token, and add it to\n// the line map. Takes care to render special characters separately.\nfunction buildToken(builder, text, style, startStyle, endStyle, title, css) {\n  if (!text) { return }\n  var displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text;\n  var special = builder.cm.state.specialChars, mustWrap = false;\n  var content;\n  if (!special.test(text)) {\n    builder.col += text.length;\n    content = document.createTextNode(displayText);\n    builder.map.push(builder.pos, builder.pos + text.length, content);\n    if (ie && ie_version < 9) { mustWrap = true; }\n    builder.pos += text.length;\n  } else {\n    content = document.createDocumentFragment();\n    var pos = 0;\n    while (true) {\n      special.lastIndex = pos;\n      var m = special.exec(text);\n      var skipped = m ? m.index - pos : text.length - pos;\n      if (skipped) {\n        var txt = document.createTextNode(displayText.slice(pos, pos + skipped));\n        if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt])); }\n        else { content.appendChild(txt); }\n        builder.map.push(builder.pos, builder.pos + skipped, txt);\n        builder.col += skipped;\n        builder.pos += skipped;\n      }\n      if (!m) { break }\n      pos += skipped + 1;\n      var txt$1 = (void 0);\n      if (m[0] == \"\\t\") {\n        var tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize;\n        txt$1 = content.appendChild(elt(\"span\", spaceStr(tabWidth), \"cm-tab\"));\n        txt$1.setAttribute(\"role\", \"presentation\");\n        txt$1.setAttribute(\"cm-text\", \"\\t\");\n        builder.col += tabWidth;\n      } else if (m[0] == \"\\r\" || m[0] == \"\\n\") {\n        txt$1 = content.appendChild(elt(\"span\", m[0] == \"\\r\" ? \"\\u240d\" : \"\\u2424\", \"cm-invalidchar\"));\n        txt$1.setAttribute(\"cm-text\", m[0]);\n        builder.col += 1;\n      } else {\n        txt$1 = builder.cm.options.specialCharPlaceholder(m[0]);\n        txt$1.setAttribute(\"cm-text\", m[0]);\n        if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt$1])); }\n        else { content.appendChild(txt$1); }\n        builder.col += 1;\n      }\n      builder.map.push(builder.pos, builder.pos + 1, txt$1);\n      builder.pos++;\n    }\n  }\n  builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32;\n  if (style || startStyle || endStyle || mustWrap || css) {\n    var fullStyle = style || \"\";\n    if (startStyle) { fullStyle += startStyle; }\n    if (endStyle) { fullStyle += endStyle; }\n    var token = elt(\"span\", [content], fullStyle, css);\n    if (title) { token.title = title; }\n    return builder.content.appendChild(token)\n  }\n  builder.content.appendChild(content);\n}\n\nfunction splitSpaces(text, trailingBefore) {\n  if (text.length > 1 && !/  /.test(text)) { return text }\n  var spaceBefore = trailingBefore, result = \"\";\n  for (var i = 0; i < text.length; i++) {\n    var ch = text.charAt(i);\n    if (ch == \" \" && spaceBefore && (i == text.length - 1 || text.charCodeAt(i + 1) == 32))\n      { ch = \"\\u00a0\"; }\n    result += ch;\n    spaceBefore = ch == \" \";\n  }\n  return result\n}\n\n// Work around nonsense dimensions being reported for stretches of\n// right-to-left text.\nfunction buildTokenBadBidi(inner, order) {\n  return function (builder, text, style, startStyle, endStyle, title, css) {\n    style = style ? style + \" cm-force-border\" : \"cm-force-border\";\n    var start = builder.pos, end = start + text.length;\n    for (;;) {\n      // Find the part that overlaps with the start of this text\n      var part = (void 0);\n      for (var i = 0; i < order.length; i++) {\n        part = order[i];\n        if (part.to > start && part.from <= start) { break }\n      }\n      if (part.to >= end) { return inner(builder, text, style, startStyle, endStyle, title, css) }\n      inner(builder, text.slice(0, part.to - start), style, startStyle, null, title, css);\n      startStyle = null;\n      text = text.slice(part.to - start);\n      start = part.to;\n    }\n  }\n}\n\nfunction buildCollapsedSpan(builder, size, marker, ignoreWidget) {\n  var widget = !ignoreWidget && marker.widgetNode;\n  if (widget) { builder.map.push(builder.pos, builder.pos + size, widget); }\n  if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) {\n    if (!widget)\n      { widget = builder.content.appendChild(document.createElement(\"span\")); }\n    widget.setAttribute(\"cm-marker\", marker.id);\n  }\n  if (widget) {\n    builder.cm.display.input.setUneditable(widget);\n    builder.content.appendChild(widget);\n  }\n  builder.pos += size;\n  builder.trailingSpace = false;\n}\n\n// Outputs a number of spans to make up a line, taking highlighting\n// and marked text into account.\nfunction insertLineContent(line, builder, styles) {\n  var spans = line.markedSpans, allText = line.text, at = 0;\n  if (!spans) {\n    for (var i$1 = 1; i$1 < styles.length; i$1+=2)\n      { builder.addToken(builder, allText.slice(at, at = styles[i$1]), interpretTokenStyle(styles[i$1+1], builder.cm.options)); }\n    return\n  }\n\n  var len = allText.length, pos = 0, i = 1, text = \"\", style, css;\n  var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, title, collapsed;\n  for (;;) {\n    if (nextChange == pos) { // Update current marker set\n      spanStyle = spanEndStyle = spanStartStyle = title = css = \"\";\n      collapsed = null; nextChange = Infinity;\n      var foundBookmarks = [], endStyles = (void 0);\n      for (var j = 0; j < spans.length; ++j) {\n        var sp = spans[j], m = sp.marker;\n        if (m.type == \"bookmark\" && sp.from == pos && m.widgetNode) {\n          foundBookmarks.push(m);\n        } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) {\n          if (sp.to != null && sp.to != pos && nextChange > sp.to) {\n            nextChange = sp.to;\n            spanEndStyle = \"\";\n          }\n          if (m.className) { spanStyle += \" \" + m.className; }\n          if (m.css) { css = (css ? css + \";\" : \"\") + m.css; }\n          if (m.startStyle && sp.from == pos) { spanStartStyle += \" \" + m.startStyle; }\n          if (m.endStyle && sp.to == nextChange) { (endStyles || (endStyles = [])).push(m.endStyle, sp.to); }\n          if (m.title && !title) { title = m.title; }\n          if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0))\n            { collapsed = sp; }\n        } else if (sp.from > pos && nextChange > sp.from) {\n          nextChange = sp.from;\n        }\n      }\n      if (endStyles) { for (var j$1 = 0; j$1 < endStyles.length; j$1 += 2)\n        { if (endStyles[j$1 + 1] == nextChange) { spanEndStyle += \" \" + endStyles[j$1]; } } }\n\n      if (!collapsed || collapsed.from == pos) { for (var j$2 = 0; j$2 < foundBookmarks.length; ++j$2)\n        { buildCollapsedSpan(builder, 0, foundBookmarks[j$2]); } }\n      if (collapsed && (collapsed.from || 0) == pos) {\n        buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos,\n                           collapsed.marker, collapsed.from == null);\n        if (collapsed.to == null) { return }\n        if (collapsed.to == pos) { collapsed = false; }\n      }\n    }\n    if (pos >= len) { break }\n\n    var upto = Math.min(len, nextChange);\n    while (true) {\n      if (text) {\n        var end = pos + text.length;\n        if (!collapsed) {\n          var tokenText = end > upto ? text.slice(0, upto - pos) : text;\n          builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle,\n                           spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : \"\", title, css);\n        }\n        if (end >= upto) {text = text.slice(upto - pos); pos = upto; break}\n        pos = end;\n        spanStartStyle = \"\";\n      }\n      text = allText.slice(at, at = styles[i++]);\n      style = interpretTokenStyle(styles[i++], builder.cm.options);\n    }\n  }\n}\n\n\n// These objects are used to represent the visible (currently drawn)\n// part of the document. A LineView may correspond to multiple\n// logical lines, if those are connected by collapsed ranges.\nfunction LineView(doc, line, lineN) {\n  // The starting line\n  this.line = line;\n  // Continuing lines, if any\n  this.rest = visualLineContinued(line);\n  // Number of logical lines in this visual line\n  this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1;\n  this.node = this.text = null;\n  this.hidden = lineIsHidden(doc, line);\n}\n\n// Create a range of LineView objects for the given lines.\nfunction buildViewArray(cm, from, to) {\n  var array = [], nextPos;\n  for (var pos = from; pos < to; pos = nextPos) {\n    var view = new LineView(cm.doc, getLine(cm.doc, pos), pos);\n    nextPos = pos + view.size;\n    array.push(view);\n  }\n  return array\n}\n\nvar operationGroup = null;\n\nfunction pushOperation(op) {\n  if (operationGroup) {\n    operationGroup.ops.push(op);\n  } else {\n    op.ownsGroup = operationGroup = {\n      ops: [op],\n      delayedCallbacks: []\n    };\n  }\n}\n\nfunction fireCallbacksForOps(group) {\n  // Calls delayed callbacks and cursorActivity handlers until no\n  // new ones appear\n  var callbacks = group.delayedCallbacks, i = 0;\n  do {\n    for (; i < callbacks.length; i++)\n      { callbacks[i].call(null); }\n    for (var j = 0; j < group.ops.length; j++) {\n      var op = group.ops[j];\n      if (op.cursorActivityHandlers)\n        { while (op.cursorActivityCalled < op.cursorActivityHandlers.length)\n          { op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm); } }\n    }\n  } while (i < callbacks.length)\n}\n\nfunction finishOperation(op, endCb) {\n  var group = op.ownsGroup;\n  if (!group) { return }\n\n  try { fireCallbacksForOps(group); }\n  finally {\n    operationGroup = null;\n    endCb(group);\n  }\n}\n\nvar orphanDelayedCallbacks = null;\n\n// Often, we want to signal events at a point where we are in the\n// middle of some work, but don't want the handler to start calling\n// other methods on the editor, which might be in an inconsistent\n// state or simply not expect any other events to happen.\n// signalLater looks whether there are any handlers, and schedules\n// them to be executed when the last operation ends, or, if no\n// operation is active, when a timeout fires.\nfunction signalLater(emitter, type /*, values...*/) {\n  var arr = getHandlers(emitter, type);\n  if (!arr.length) { return }\n  var args = Array.prototype.slice.call(arguments, 2), list;\n  if (operationGroup) {\n    list = operationGroup.delayedCallbacks;\n  } else if (orphanDelayedCallbacks) {\n    list = orphanDelayedCallbacks;\n  } else {\n    list = orphanDelayedCallbacks = [];\n    setTimeout(fireOrphanDelayed, 0);\n  }\n  var loop = function ( i ) {\n    list.push(function () { return arr[i].apply(null, args); });\n  };\n\n  for (var i = 0; i < arr.length; ++i)\n    loop( i );\n}\n\nfunction fireOrphanDelayed() {\n  var delayed = orphanDelayedCallbacks;\n  orphanDelayedCallbacks = null;\n  for (var i = 0; i < delayed.length; ++i) { delayed[i](); }\n}\n\n// When an aspect of a line changes, a string is added to\n// lineView.changes. This updates the relevant part of the line's\n// DOM structure.\nfunction updateLineForChanges(cm, lineView, lineN, dims) {\n  for (var j = 0; j < lineView.changes.length; j++) {\n    var type = lineView.changes[j];\n    if (type == \"text\") { updateLineText(cm, lineView); }\n    else if (type == \"gutter\") { updateLineGutter(cm, lineView, lineN, dims); }\n    else if (type == \"class\") { updateLineClasses(cm, lineView); }\n    else if (type == \"widget\") { updateLineWidgets(cm, lineView, dims); }\n  }\n  lineView.changes = null;\n}\n\n// Lines with gutter elements, widgets or a background class need to\n// be wrapped, and have the extra elements added to the wrapper div\nfunction ensureLineWrapped(lineView) {\n  if (lineView.node == lineView.text) {\n    lineView.node = elt(\"div\", null, null, \"position: relative\");\n    if (lineView.text.parentNode)\n      { lineView.text.parentNode.replaceChild(lineView.node, lineView.text); }\n    lineView.node.appendChild(lineView.text);\n    if (ie && ie_version < 8) { lineView.node.style.zIndex = 2; }\n  }\n  return lineView.node\n}\n\nfunction updateLineBackground(cm, lineView) {\n  var cls = lineView.bgClass ? lineView.bgClass + \" \" + (lineView.line.bgClass || \"\") : lineView.line.bgClass;\n  if (cls) { cls += \" CodeMirror-linebackground\"; }\n  if (lineView.background) {\n    if (cls) { lineView.background.className = cls; }\n    else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null; }\n  } else if (cls) {\n    var wrap = ensureLineWrapped(lineView);\n    lineView.background = wrap.insertBefore(elt(\"div\", null, cls), wrap.firstChild);\n    cm.display.input.setUneditable(lineView.background);\n  }\n}\n\n// Wrapper around buildLineContent which will reuse the structure\n// in display.externalMeasured when possible.\nfunction getLineContent(cm, lineView) {\n  var ext = cm.display.externalMeasured;\n  if (ext && ext.line == lineView.line) {\n    cm.display.externalMeasured = null;\n    lineView.measure = ext.measure;\n    return ext.built\n  }\n  return buildLineContent(cm, lineView)\n}\n\n// Redraw the line's text. Interacts with the background and text\n// classes because the mode may output tokens that influence these\n// classes.\nfunction updateLineText(cm, lineView) {\n  var cls = lineView.text.className;\n  var built = getLineContent(cm, lineView);\n  if (lineView.text == lineView.node) { lineView.node = built.pre; }\n  lineView.text.parentNode.replaceChild(built.pre, lineView.text);\n  lineView.text = built.pre;\n  if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) {\n    lineView.bgClass = built.bgClass;\n    lineView.textClass = built.textClass;\n    updateLineClasses(cm, lineView);\n  } else if (cls) {\n    lineView.text.className = cls;\n  }\n}\n\nfunction updateLineClasses(cm, lineView) {\n  updateLineBackground(cm, lineView);\n  if (lineView.line.wrapClass)\n    { ensureLineWrapped(lineView).className = lineView.line.wrapClass; }\n  else if (lineView.node != lineView.text)\n    { lineView.node.className = \"\"; }\n  var textClass = lineView.textClass ? lineView.textClass + \" \" + (lineView.line.textClass || \"\") : lineView.line.textClass;\n  lineView.text.className = textClass || \"\";\n}\n\nfunction updateLineGutter(cm, lineView, lineN, dims) {\n  if (lineView.gutter) {\n    lineView.node.removeChild(lineView.gutter);\n    lineView.gutter = null;\n  }\n  if (lineView.gutterBackground) {\n    lineView.node.removeChild(lineView.gutterBackground);\n    lineView.gutterBackground = null;\n  }\n  if (lineView.line.gutterClass) {\n    var wrap = ensureLineWrapped(lineView);\n    lineView.gutterBackground = elt(\"div\", null, \"CodeMirror-gutter-background \" + lineView.line.gutterClass,\n                                    (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px; width: \" + (dims.gutterTotalWidth) + \"px\"));\n    cm.display.input.setUneditable(lineView.gutterBackground);\n    wrap.insertBefore(lineView.gutterBackground, lineView.text);\n  }\n  var markers = lineView.line.gutterMarkers;\n  if (cm.options.lineNumbers || markers) {\n    var wrap$1 = ensureLineWrapped(lineView);\n    var gutterWrap = lineView.gutter = elt(\"div\", null, \"CodeMirror-gutter-wrapper\", (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px\"));\n    cm.display.input.setUneditable(gutterWrap);\n    wrap$1.insertBefore(gutterWrap, lineView.text);\n    if (lineView.line.gutterClass)\n      { gutterWrap.className += \" \" + lineView.line.gutterClass; }\n    if (cm.options.lineNumbers && (!markers || !markers[\"CodeMirror-linenumbers\"]))\n      { lineView.lineNumber = gutterWrap.appendChild(\n        elt(\"div\", lineNumberFor(cm.options, lineN),\n            \"CodeMirror-linenumber CodeMirror-gutter-elt\",\n            (\"left: \" + (dims.gutterLeft[\"CodeMirror-linenumbers\"]) + \"px; width: \" + (cm.display.lineNumInnerWidth) + \"px\"))); }\n    if (markers) { for (var k = 0; k < cm.options.gutters.length; ++k) {\n      var id = cm.options.gutters[k], found = markers.hasOwnProperty(id) && markers[id];\n      if (found)\n        { gutterWrap.appendChild(elt(\"div\", [found], \"CodeMirror-gutter-elt\",\n                                   (\"left: \" + (dims.gutterLeft[id]) + \"px; width: \" + (dims.gutterWidth[id]) + \"px\"))); }\n    } }\n  }\n}\n\nfunction updateLineWidgets(cm, lineView, dims) {\n  if (lineView.alignable) { lineView.alignable = null; }\n  for (var node = lineView.node.firstChild, next = (void 0); node; node = next) {\n    next = node.nextSibling;\n    if (node.className == \"CodeMirror-linewidget\")\n      { lineView.node.removeChild(node); }\n  }\n  insertLineWidgets(cm, lineView, dims);\n}\n\n// Build a line's DOM representation from scratch\nfunction buildLineElement(cm, lineView, lineN, dims) {\n  var built = getLineContent(cm, lineView);\n  lineView.text = lineView.node = built.pre;\n  if (built.bgClass) { lineView.bgClass = built.bgClass; }\n  if (built.textClass) { lineView.textClass = built.textClass; }\n\n  updateLineClasses(cm, lineView);\n  updateLineGutter(cm, lineView, lineN, dims);\n  insertLineWidgets(cm, lineView, dims);\n  return lineView.node\n}\n\n// A lineView may contain multiple logical lines (when merged by\n// collapsed spans). The widgets for all of them need to be drawn.\nfunction insertLineWidgets(cm, lineView, dims) {\n  insertLineWidgetsFor(cm, lineView.line, lineView, dims, true);\n  if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n    { insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false); } }\n}\n\nfunction insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) {\n  if (!line.widgets) { return }\n  var wrap = ensureLineWrapped(lineView);\n  for (var i = 0, ws = line.widgets; i < ws.length; ++i) {\n    var widget = ws[i], node = elt(\"div\", [widget.node], \"CodeMirror-linewidget\");\n    if (!widget.handleMouseEvents) { node.setAttribute(\"cm-ignore-events\", \"true\"); }\n    positionLineWidget(widget, node, lineView, dims);\n    cm.display.input.setUneditable(node);\n    if (allowAbove && widget.above)\n      { wrap.insertBefore(node, lineView.gutter || lineView.text); }\n    else\n      { wrap.appendChild(node); }\n    signalLater(widget, \"redraw\");\n  }\n}\n\nfunction positionLineWidget(widget, node, lineView, dims) {\n  if (widget.noHScroll) {\n    (lineView.alignable || (lineView.alignable = [])).push(node);\n    var width = dims.wrapperWidth;\n    node.style.left = dims.fixedPos + \"px\";\n    if (!widget.coverGutter) {\n      width -= dims.gutterTotalWidth;\n      node.style.paddingLeft = dims.gutterTotalWidth + \"px\";\n    }\n    node.style.width = width + \"px\";\n  }\n  if (widget.coverGutter) {\n    node.style.zIndex = 5;\n    node.style.position = \"relative\";\n    if (!widget.noHScroll) { node.style.marginLeft = -dims.gutterTotalWidth + \"px\"; }\n  }\n}\n\nfunction widgetHeight(widget) {\n  if (widget.height != null) { return widget.height }\n  var cm = widget.doc.cm;\n  if (!cm) { return 0 }\n  if (!contains(document.body, widget.node)) {\n    var parentStyle = \"position: relative;\";\n    if (widget.coverGutter)\n      { parentStyle += \"margin-left: -\" + cm.display.gutters.offsetWidth + \"px;\"; }\n    if (widget.noHScroll)\n      { parentStyle += \"width: \" + cm.display.wrapper.clientWidth + \"px;\"; }\n    removeChildrenAndAdd(cm.display.measure, elt(\"div\", [widget.node], null, parentStyle));\n  }\n  return widget.height = widget.node.parentNode.offsetHeight\n}\n\n// Return true when the given mouse event happened in a widget\nfunction eventInWidget(display, e) {\n  for (var n = e_target(e); n != display.wrapper; n = n.parentNode) {\n    if (!n || (n.nodeType == 1 && n.getAttribute(\"cm-ignore-events\") == \"true\") ||\n        (n.parentNode == display.sizer && n != display.mover))\n      { return true }\n  }\n}\n\n// POSITION MEASUREMENT\n\nfunction paddingTop(display) {return display.lineSpace.offsetTop}\nfunction paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight}\nfunction paddingH(display) {\n  if (display.cachedPaddingH) { return display.cachedPaddingH }\n  var e = removeChildrenAndAdd(display.measure, elt(\"pre\", \"x\"));\n  var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle;\n  var data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)};\n  if (!isNaN(data.left) && !isNaN(data.right)) { display.cachedPaddingH = data; }\n  return data\n}\n\nfunction scrollGap(cm) { return scrollerGap - cm.display.nativeBarWidth }\nfunction displayWidth(cm) {\n  return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth\n}\nfunction displayHeight(cm) {\n  return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight\n}\n\n// Ensure the lineView.wrapping.heights array is populated. This is\n// an array of bottom offsets for the lines that make up a drawn\n// line. When lineWrapping is on, there might be more than one\n// height.\nfunction ensureLineHeights(cm, lineView, rect) {\n  var wrapping = cm.options.lineWrapping;\n  var curWidth = wrapping && displayWidth(cm);\n  if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) {\n    var heights = lineView.measure.heights = [];\n    if (wrapping) {\n      lineView.measure.width = curWidth;\n      var rects = lineView.text.firstChild.getClientRects();\n      for (var i = 0; i < rects.length - 1; i++) {\n        var cur = rects[i], next = rects[i + 1];\n        if (Math.abs(cur.bottom - next.bottom) > 2)\n          { heights.push((cur.bottom + next.top) / 2 - rect.top); }\n      }\n    }\n    heights.push(rect.bottom - rect.top);\n  }\n}\n\n// Find a line map (mapping character offsets to text nodes) and a\n// measurement cache for the given line number. (A line view might\n// contain multiple lines when collapsed ranges are present.)\nfunction mapFromLineView(lineView, line, lineN) {\n  if (lineView.line == line)\n    { return {map: lineView.measure.map, cache: lineView.measure.cache} }\n  for (var i = 0; i < lineView.rest.length; i++)\n    { if (lineView.rest[i] == line)\n      { return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]} } }\n  for (var i$1 = 0; i$1 < lineView.rest.length; i$1++)\n    { if (lineNo(lineView.rest[i$1]) > lineN)\n      { return {map: lineView.measure.maps[i$1], cache: lineView.measure.caches[i$1], before: true} } }\n}\n\n// Render a line into the hidden node display.externalMeasured. Used\n// when measurement is needed for a line that's not in the viewport.\nfunction updateExternalMeasurement(cm, line) {\n  line = visualLine(line);\n  var lineN = lineNo(line);\n  var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN);\n  view.lineN = lineN;\n  var built = view.built = buildLineContent(cm, view);\n  view.text = built.pre;\n  removeChildrenAndAdd(cm.display.lineMeasure, built.pre);\n  return view\n}\n\n// Get a {top, bottom, left, right} box (in line-local coordinates)\n// for a given character.\nfunction measureChar(cm, line, ch, bias) {\n  return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias)\n}\n\n// Find a line view that corresponds to the given line number.\nfunction findViewForLine(cm, lineN) {\n  if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo)\n    { return cm.display.view[findViewIndex(cm, lineN)] }\n  var ext = cm.display.externalMeasured;\n  if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size)\n    { return ext }\n}\n\n// Measurement can be split in two steps, the set-up work that\n// applies to the whole line, and the measurement of the actual\n// character. Functions like coordsChar, that need to do a lot of\n// measurements in a row, can thus ensure that the set-up work is\n// only done once.\nfunction prepareMeasureForLine(cm, line) {\n  var lineN = lineNo(line);\n  var view = findViewForLine(cm, lineN);\n  if (view && !view.text) {\n    view = null;\n  } else if (view && view.changes) {\n    updateLineForChanges(cm, view, lineN, getDimensions(cm));\n    cm.curOp.forceUpdate = true;\n  }\n  if (!view)\n    { view = updateExternalMeasurement(cm, line); }\n\n  var info = mapFromLineView(view, line, lineN);\n  return {\n    line: line, view: view, rect: null,\n    map: info.map, cache: info.cache, before: info.before,\n    hasHeights: false\n  }\n}\n\n// Given a prepared measurement object, measures the position of an\n// actual character (or fetches it from the cache).\nfunction measureCharPrepared(cm, prepared, ch, bias, varHeight) {\n  if (prepared.before) { ch = -1; }\n  var key = ch + (bias || \"\"), found;\n  if (prepared.cache.hasOwnProperty(key)) {\n    found = prepared.cache[key];\n  } else {\n    if (!prepared.rect)\n      { prepared.rect = prepared.view.text.getBoundingClientRect(); }\n    if (!prepared.hasHeights) {\n      ensureLineHeights(cm, prepared.view, prepared.rect);\n      prepared.hasHeights = true;\n    }\n    found = measureCharInner(cm, prepared, ch, bias);\n    if (!found.bogus) { prepared.cache[key] = found; }\n  }\n  return {left: found.left, right: found.right,\n          top: varHeight ? found.rtop : found.top,\n          bottom: varHeight ? found.rbottom : found.bottom}\n}\n\nvar nullRect = {left: 0, right: 0, top: 0, bottom: 0};\n\nfunction nodeAndOffsetInLineMap(map$$1, ch, bias) {\n  var node, start, end, collapse, mStart, mEnd;\n  // First, search the line map for the text node corresponding to,\n  // or closest to, the target character.\n  for (var i = 0; i < map$$1.length; i += 3) {\n    mStart = map$$1[i];\n    mEnd = map$$1[i + 1];\n    if (ch < mStart) {\n      start = 0; end = 1;\n      collapse = \"left\";\n    } else if (ch < mEnd) {\n      start = ch - mStart;\n      end = start + 1;\n    } else if (i == map$$1.length - 3 || ch == mEnd && map$$1[i + 3] > ch) {\n      end = mEnd - mStart;\n      start = end - 1;\n      if (ch >= mEnd) { collapse = \"right\"; }\n    }\n    if (start != null) {\n      node = map$$1[i + 2];\n      if (mStart == mEnd && bias == (node.insertLeft ? \"left\" : \"right\"))\n        { collapse = bias; }\n      if (bias == \"left\" && start == 0)\n        { while (i && map$$1[i - 2] == map$$1[i - 3] && map$$1[i - 1].insertLeft) {\n          node = map$$1[(i -= 3) + 2];\n          collapse = \"left\";\n        } }\n      if (bias == \"right\" && start == mEnd - mStart)\n        { while (i < map$$1.length - 3 && map$$1[i + 3] == map$$1[i + 4] && !map$$1[i + 5].insertLeft) {\n          node = map$$1[(i += 3) + 2];\n          collapse = \"right\";\n        } }\n      break\n    }\n  }\n  return {node: node, start: start, end: end, collapse: collapse, coverStart: mStart, coverEnd: mEnd}\n}\n\nfunction getUsefulRect(rects, bias) {\n  var rect = nullRect;\n  if (bias == \"left\") { for (var i = 0; i < rects.length; i++) {\n    if ((rect = rects[i]).left != rect.right) { break }\n  } } else { for (var i$1 = rects.length - 1; i$1 >= 0; i$1--) {\n    if ((rect = rects[i$1]).left != rect.right) { break }\n  } }\n  return rect\n}\n\nfunction measureCharInner(cm, prepared, ch, bias) {\n  var place = nodeAndOffsetInLineMap(prepared.map, ch, bias);\n  var node = place.node, start = place.start, end = place.end, collapse = place.collapse;\n\n  var rect;\n  if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates.\n    for (var i$1 = 0; i$1 < 4; i$1++) { // Retry a maximum of 4 times when nonsense rectangles are returned\n      while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) { --start; }\n      while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) { ++end; }\n      if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart)\n        { rect = node.parentNode.getBoundingClientRect(); }\n      else\n        { rect = getUsefulRect(range(node, start, end).getClientRects(), bias); }\n      if (rect.left || rect.right || start == 0) { break }\n      end = start;\n      start = start - 1;\n      collapse = \"right\";\n    }\n    if (ie && ie_version < 11) { rect = maybeUpdateRectForZooming(cm.display.measure, rect); }\n  } else { // If it is a widget, simply get the box for the whole widget.\n    if (start > 0) { collapse = bias = \"right\"; }\n    var rects;\n    if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1)\n      { rect = rects[bias == \"right\" ? rects.length - 1 : 0]; }\n    else\n      { rect = node.getBoundingClientRect(); }\n  }\n  if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) {\n    var rSpan = node.parentNode.getClientRects()[0];\n    if (rSpan)\n      { rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom}; }\n    else\n      { rect = nullRect; }\n  }\n\n  var rtop = rect.top - prepared.rect.top, rbot = rect.bottom - prepared.rect.top;\n  var mid = (rtop + rbot) / 2;\n  var heights = prepared.view.measure.heights;\n  var i = 0;\n  for (; i < heights.length - 1; i++)\n    { if (mid < heights[i]) { break } }\n  var top = i ? heights[i - 1] : 0, bot = heights[i];\n  var result = {left: (collapse == \"right\" ? rect.right : rect.left) - prepared.rect.left,\n                right: (collapse == \"left\" ? rect.left : rect.right) - prepared.rect.left,\n                top: top, bottom: bot};\n  if (!rect.left && !rect.right) { result.bogus = true; }\n  if (!cm.options.singleCursorHeightPerLine) { result.rtop = rtop; result.rbottom = rbot; }\n\n  return result\n}\n\n// Work around problem with bounding client rects on ranges being\n// returned incorrectly when zoomed on IE10 and below.\nfunction maybeUpdateRectForZooming(measure, rect) {\n  if (!window.screen || screen.logicalXDPI == null ||\n      screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure))\n    { return rect }\n  var scaleX = screen.logicalXDPI / screen.deviceXDPI;\n  var scaleY = screen.logicalYDPI / screen.deviceYDPI;\n  return {left: rect.left * scaleX, right: rect.right * scaleX,\n          top: rect.top * scaleY, bottom: rect.bottom * scaleY}\n}\n\nfunction clearLineMeasurementCacheFor(lineView) {\n  if (lineView.measure) {\n    lineView.measure.cache = {};\n    lineView.measure.heights = null;\n    if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n      { lineView.measure.caches[i] = {}; } }\n  }\n}\n\nfunction clearLineMeasurementCache(cm) {\n  cm.display.externalMeasure = null;\n  removeChildren(cm.display.lineMeasure);\n  for (var i = 0; i < cm.display.view.length; i++)\n    { clearLineMeasurementCacheFor(cm.display.view[i]); }\n}\n\nfunction clearCaches(cm) {\n  clearLineMeasurementCache(cm);\n  cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null;\n  if (!cm.options.lineWrapping) { cm.display.maxLineChanged = true; }\n  cm.display.lineNumChars = null;\n}\n\nfunction pageScrollX() {\n  // Work around https://bugs.chromium.org/p/chromium/issues/detail?id=489206\n  // which causes page_Offset and bounding client rects to use\n  // different reference viewports and invalidate our calculations.\n  if (chrome && android) { return -(document.body.getBoundingClientRect().left - parseInt(getComputedStyle(document.body).marginLeft)) }\n  return window.pageXOffset || (document.documentElement || document.body).scrollLeft\n}\nfunction pageScrollY() {\n  if (chrome && android) { return -(document.body.getBoundingClientRect().top - parseInt(getComputedStyle(document.body).marginTop)) }\n  return window.pageYOffset || (document.documentElement || document.body).scrollTop\n}\n\n// Converts a {top, bottom, left, right} box from line-local\n// coordinates into another coordinate system. Context may be one of\n// \"line\", \"div\" (display.lineDiv), \"local\"./null (editor), \"window\",\n// or \"page\".\nfunction intoCoordSystem(cm, lineObj, rect, context, includeWidgets) {\n  if (!includeWidgets && lineObj.widgets) { for (var i = 0; i < lineObj.widgets.length; ++i) { if (lineObj.widgets[i].above) {\n    var size = widgetHeight(lineObj.widgets[i]);\n    rect.top += size; rect.bottom += size;\n  } } }\n  if (context == \"line\") { return rect }\n  if (!context) { context = \"local\"; }\n  var yOff = heightAtLine(lineObj);\n  if (context == \"local\") { yOff += paddingTop(cm.display); }\n  else { yOff -= cm.display.viewOffset; }\n  if (context == \"page\" || context == \"window\") {\n    var lOff = cm.display.lineSpace.getBoundingClientRect();\n    yOff += lOff.top + (context == \"window\" ? 0 : pageScrollY());\n    var xOff = lOff.left + (context == \"window\" ? 0 : pageScrollX());\n    rect.left += xOff; rect.right += xOff;\n  }\n  rect.top += yOff; rect.bottom += yOff;\n  return rect\n}\n\n// Coverts a box from \"div\" coords to another coordinate system.\n// Context may be \"window\", \"page\", \"div\", or \"local\"./null.\nfunction fromCoordSystem(cm, coords, context) {\n  if (context == \"div\") { return coords }\n  var left = coords.left, top = coords.top;\n  // First move into \"page\" coordinate system\n  if (context == \"page\") {\n    left -= pageScrollX();\n    top -= pageScrollY();\n  } else if (context == \"local\" || !context) {\n    var localBox = cm.display.sizer.getBoundingClientRect();\n    left += localBox.left;\n    top += localBox.top;\n  }\n\n  var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect();\n  return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top}\n}\n\nfunction charCoords(cm, pos, context, lineObj, bias) {\n  if (!lineObj) { lineObj = getLine(cm.doc, pos.line); }\n  return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context)\n}\n\n// Returns a box for a given cursor position, which may have an\n// 'other' property containing the position of the secondary cursor\n// on a bidi boundary.\n// A cursor Pos(line, char, \"before\") is on the same visual line as `char - 1`\n// and after `char - 1` in writing order of `char - 1`\n// A cursor Pos(line, char, \"after\") is on the same visual line as `char`\n// and before `char` in writing order of `char`\n// Examples (upper-case letters are RTL, lower-case are LTR):\n//     Pos(0, 1, ...)\n//     before   after\n// ab     a|b     a|b\n// aB     a|B     aB|\n// Ab     |Ab     A|b\n// AB     B|A     B|A\n// Every position after the last character on a line is considered to stick\n// to the last character on the line.\nfunction cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) {\n  lineObj = lineObj || getLine(cm.doc, pos.line);\n  if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n  function get(ch, right) {\n    var m = measureCharPrepared(cm, preparedMeasure, ch, right ? \"right\" : \"left\", varHeight);\n    if (right) { m.left = m.right; } else { m.right = m.left; }\n    return intoCoordSystem(cm, lineObj, m, context)\n  }\n  var order = getOrder(lineObj, cm.doc.direction), ch = pos.ch, sticky = pos.sticky;\n  if (ch >= lineObj.text.length) {\n    ch = lineObj.text.length;\n    sticky = \"before\";\n  } else if (ch <= 0) {\n    ch = 0;\n    sticky = \"after\";\n  }\n  if (!order) { return get(sticky == \"before\" ? ch - 1 : ch, sticky == \"before\") }\n\n  function getBidi(ch, partPos, invert) {\n    var part = order[partPos], right = (part.level % 2) != 0;\n    return get(invert ? ch - 1 : ch, right != invert)\n  }\n  var partPos = getBidiPartAt(order, ch, sticky);\n  var other = bidiOther;\n  var val = getBidi(ch, partPos, sticky == \"before\");\n  if (other != null) { val.other = getBidi(ch, other, sticky != \"before\"); }\n  return val\n}\n\n// Used to cheaply estimate the coordinates for a position. Used for\n// intermediate scroll updates.\nfunction estimateCoords(cm, pos) {\n  var left = 0;\n  pos = clipPos(cm.doc, pos);\n  if (!cm.options.lineWrapping) { left = charWidth(cm.display) * pos.ch; }\n  var lineObj = getLine(cm.doc, pos.line);\n  var top = heightAtLine(lineObj) + paddingTop(cm.display);\n  return {left: left, right: left, top: top, bottom: top + lineObj.height}\n}\n\n// Positions returned by coordsChar contain some extra information.\n// xRel is the relative x position of the input coordinates compared\n// to the found position (so xRel > 0 means the coordinates are to\n// the right of the character position, for example). When outside\n// is true, that means the coordinates lie outside the line's\n// vertical range.\nfunction PosWithInfo(line, ch, sticky, outside, xRel) {\n  var pos = Pos(line, ch, sticky);\n  pos.xRel = xRel;\n  if (outside) { pos.outside = true; }\n  return pos\n}\n\n// Compute the character position closest to the given coordinates.\n// Input must be lineSpace-local (\"div\" coordinate system).\nfunction coordsChar(cm, x, y) {\n  var doc = cm.doc;\n  y += cm.display.viewOffset;\n  if (y < 0) { return PosWithInfo(doc.first, 0, null, true, -1) }\n  var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1;\n  if (lineN > last)\n    { return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, true, 1) }\n  if (x < 0) { x = 0; }\n\n  var lineObj = getLine(doc, lineN);\n  for (;;) {\n    var found = coordsCharInner(cm, lineObj, lineN, x, y);\n    var merged = collapsedSpanAtEnd(lineObj);\n    var mergedPos = merged && merged.find(0, true);\n    if (merged && (found.ch > mergedPos.from.ch || found.ch == mergedPos.from.ch && found.xRel > 0))\n      { lineN = lineNo(lineObj = mergedPos.to.line); }\n    else\n      { return found }\n  }\n}\n\nfunction wrappedLineExtent(cm, lineObj, preparedMeasure, y) {\n  var measure = function (ch) { return intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, ch), \"line\"); };\n  var end = lineObj.text.length;\n  var begin = findFirst(function (ch) { return measure(ch - 1).bottom <= y; }, end, 0);\n  end = findFirst(function (ch) { return measure(ch).top > y; }, begin, end);\n  return {begin: begin, end: end}\n}\n\nfunction wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) {\n  var targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, target), \"line\").top;\n  return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop)\n}\n\nfunction coordsCharInner(cm, lineObj, lineNo$$1, x, y) {\n  y -= heightAtLine(lineObj);\n  var begin = 0, end = lineObj.text.length;\n  var preparedMeasure = prepareMeasureForLine(cm, lineObj);\n  var pos;\n  var order = getOrder(lineObj, cm.doc.direction);\n  if (order) {\n    if (cm.options.lineWrapping) {\n      var assign;\n      ((assign = wrappedLineExtent(cm, lineObj, preparedMeasure, y), begin = assign.begin, end = assign.end, assign));\n    }\n    pos = new Pos(lineNo$$1, begin);\n    var beginLeft = cursorCoords(cm, pos, \"line\", lineObj, preparedMeasure).left;\n    var dir = beginLeft < x ? 1 : -1;\n    var prevDiff, diff = beginLeft - x, prevPos;\n    do {\n      prevDiff = diff;\n      prevPos = pos;\n      pos = moveVisually(cm, lineObj, pos, dir);\n      if (pos == null || pos.ch < begin || end <= (pos.sticky == \"before\" ? pos.ch - 1 : pos.ch)) {\n        pos = prevPos;\n        break\n      }\n      diff = cursorCoords(cm, pos, \"line\", lineObj, preparedMeasure).left - x;\n    } while ((dir < 0) != (diff < 0) && (Math.abs(diff) <= Math.abs(prevDiff)))\n    if (Math.abs(diff) > Math.abs(prevDiff)) {\n      if ((diff < 0) == (prevDiff < 0)) { throw new Error(\"Broke out of infinite loop in coordsCharInner\") }\n      pos = prevPos;\n    }\n  } else {\n    var ch = findFirst(function (ch) {\n      var box = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, ch), \"line\");\n      if (box.top > y) {\n        // For the cursor stickiness\n        end = Math.min(ch, end);\n        return true\n      }\n      else if (box.bottom <= y) { return false }\n      else if (box.left > x) { return true }\n      else if (box.right < x) { return false }\n      else { return (x - box.left < box.right - x) }\n    }, begin, end);\n    ch = skipExtendingChars(lineObj.text, ch, 1);\n    pos = new Pos(lineNo$$1, ch, ch == end ? \"before\" : \"after\");\n  }\n  var coords = cursorCoords(cm, pos, \"line\", lineObj, preparedMeasure);\n  if (y < coords.top || coords.bottom < y) { pos.outside = true; }\n  pos.xRel = x < coords.left ? -1 : (x > coords.right ? 1 : 0);\n  return pos\n}\n\nvar measureText;\n// Compute the default text height.\nfunction textHeight(display) {\n  if (display.cachedTextHeight != null) { return display.cachedTextHeight }\n  if (measureText == null) {\n    measureText = elt(\"pre\");\n    // Measure a bunch of lines, for browsers that compute\n    // fractional heights.\n    for (var i = 0; i < 49; ++i) {\n      measureText.appendChild(document.createTextNode(\"x\"));\n      measureText.appendChild(elt(\"br\"));\n    }\n    measureText.appendChild(document.createTextNode(\"x\"));\n  }\n  removeChildrenAndAdd(display.measure, measureText);\n  var height = measureText.offsetHeight / 50;\n  if (height > 3) { display.cachedTextHeight = height; }\n  removeChildren(display.measure);\n  return height || 1\n}\n\n// Compute the default character width.\nfunction charWidth(display) {\n  if (display.cachedCharWidth != null) { return display.cachedCharWidth }\n  var anchor = elt(\"span\", \"xxxxxxxxxx\");\n  var pre = elt(\"pre\", [anchor]);\n  removeChildrenAndAdd(display.measure, pre);\n  var rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10;\n  if (width > 2) { display.cachedCharWidth = width; }\n  return width || 10\n}\n\n// Do a bulk-read of the DOM positions and sizes needed to draw the\n// view, so that we don't interleave reading and writing to the DOM.\nfunction getDimensions(cm) {\n  var d = cm.display, left = {}, width = {};\n  var gutterLeft = d.gutters.clientLeft;\n  for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) {\n    left[cm.options.gutters[i]] = n.offsetLeft + n.clientLeft + gutterLeft;\n    width[cm.options.gutters[i]] = n.clientWidth;\n  }\n  return {fixedPos: compensateForHScroll(d),\n          gutterTotalWidth: d.gutters.offsetWidth,\n          gutterLeft: left,\n          gutterWidth: width,\n          wrapperWidth: d.wrapper.clientWidth}\n}\n\n// Computes display.scroller.scrollLeft + display.gutters.offsetWidth,\n// but using getBoundingClientRect to get a sub-pixel-accurate\n// result.\nfunction compensateForHScroll(display) {\n  return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left\n}\n\n// Returns a function that estimates the height of a line, to use as\n// first approximation until the line becomes visible (and is thus\n// properly measurable).\nfunction estimateHeight(cm) {\n  var th = textHeight(cm.display), wrapping = cm.options.lineWrapping;\n  var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3);\n  return function (line) {\n    if (lineIsHidden(cm.doc, line)) { return 0 }\n\n    var widgetsHeight = 0;\n    if (line.widgets) { for (var i = 0; i < line.widgets.length; i++) {\n      if (line.widgets[i].height) { widgetsHeight += line.widgets[i].height; }\n    } }\n\n    if (wrapping)\n      { return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th }\n    else\n      { return widgetsHeight + th }\n  }\n}\n\nfunction estimateLineHeights(cm) {\n  var doc = cm.doc, est = estimateHeight(cm);\n  doc.iter(function (line) {\n    var estHeight = est(line);\n    if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n  });\n}\n\n// Given a mouse event, find the corresponding position. If liberal\n// is false, it checks whether a gutter or scrollbar was clicked,\n// and returns null if it was. forRect is used by rectangular\n// selections, and tries to estimate a character position even for\n// coordinates beyond the right of the text.\nfunction posFromMouse(cm, e, liberal, forRect) {\n  var display = cm.display;\n  if (!liberal && e_target(e).getAttribute(\"cm-not-content\") == \"true\") { return null }\n\n  var x, y, space = display.lineSpace.getBoundingClientRect();\n  // Fails unpredictably on IE[67] when mouse is dragged around quickly.\n  try { x = e.clientX - space.left; y = e.clientY - space.top; }\n  catch (e) { return null }\n  var coords = coordsChar(cm, x, y), line;\n  if (forRect && coords.xRel == 1 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) {\n    var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length;\n    coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff));\n  }\n  return coords\n}\n\n// Find the view element corresponding to a given line. Return null\n// when the line isn't visible.\nfunction findViewIndex(cm, n) {\n  if (n >= cm.display.viewTo) { return null }\n  n -= cm.display.viewFrom;\n  if (n < 0) { return null }\n  var view = cm.display.view;\n  for (var i = 0; i < view.length; i++) {\n    n -= view[i].size;\n    if (n < 0) { return i }\n  }\n}\n\nfunction updateSelection(cm) {\n  cm.display.input.showSelection(cm.display.input.prepareSelection());\n}\n\nfunction prepareSelection(cm, primary) {\n  var doc = cm.doc, result = {};\n  var curFragment = result.cursors = document.createDocumentFragment();\n  var selFragment = result.selection = document.createDocumentFragment();\n\n  for (var i = 0; i < doc.sel.ranges.length; i++) {\n    if (primary === false && i == doc.sel.primIndex) { continue }\n    var range$$1 = doc.sel.ranges[i];\n    if (range$$1.from().line >= cm.display.viewTo || range$$1.to().line < cm.display.viewFrom) { continue }\n    var collapsed = range$$1.empty();\n    if (collapsed || cm.options.showCursorWhenSelecting)\n      { drawSelectionCursor(cm, range$$1.head, curFragment); }\n    if (!collapsed)\n      { drawSelectionRange(cm, range$$1, selFragment); }\n  }\n  return result\n}\n\n// Draws a cursor for the given range\nfunction drawSelectionCursor(cm, head, output) {\n  var pos = cursorCoords(cm, head, \"div\", null, null, !cm.options.singleCursorHeightPerLine);\n\n  var cursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor\"));\n  cursor.style.left = pos.left + \"px\";\n  cursor.style.top = pos.top + \"px\";\n  cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + \"px\";\n\n  if (pos.other) {\n    // Secondary cursor, shown when on a 'jump' in bi-directional text\n    var otherCursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor CodeMirror-secondarycursor\"));\n    otherCursor.style.display = \"\";\n    otherCursor.style.left = pos.other.left + \"px\";\n    otherCursor.style.top = pos.other.top + \"px\";\n    otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + \"px\";\n  }\n}\n\n// Draws the given range as a highlighted selection\nfunction drawSelectionRange(cm, range$$1, output) {\n  var display = cm.display, doc = cm.doc;\n  var fragment = document.createDocumentFragment();\n  var padding = paddingH(cm.display), leftSide = padding.left;\n  var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right;\n\n  function add(left, top, width, bottom) {\n    if (top < 0) { top = 0; }\n    top = Math.round(top);\n    bottom = Math.round(bottom);\n    fragment.appendChild(elt(\"div\", null, \"CodeMirror-selected\", (\"position: absolute; left: \" + left + \"px;\\n                             top: \" + top + \"px; width: \" + (width == null ? rightSide - left : width) + \"px;\\n                             height: \" + (bottom - top) + \"px\")));\n  }\n\n  function drawForLine(line, fromArg, toArg) {\n    var lineObj = getLine(doc, line);\n    var lineLen = lineObj.text.length;\n    var start, end;\n    function coords(ch, bias) {\n      return charCoords(cm, Pos(line, ch), \"div\", lineObj, bias)\n    }\n\n    iterateBidiSections(getOrder(lineObj, doc.direction), fromArg || 0, toArg == null ? lineLen : toArg, function (from, to, dir) {\n      var leftPos = coords(from, \"left\"), rightPos, left, right;\n      if (from == to) {\n        rightPos = leftPos;\n        left = right = leftPos.left;\n      } else {\n        rightPos = coords(to - 1, \"right\");\n        if (dir == \"rtl\") { var tmp = leftPos; leftPos = rightPos; rightPos = tmp; }\n        left = leftPos.left;\n        right = rightPos.right;\n      }\n      if (fromArg == null && from == 0) { left = leftSide; }\n      if (rightPos.top - leftPos.top > 3) { // Different lines, draw top part\n        add(left, leftPos.top, null, leftPos.bottom);\n        left = leftSide;\n        if (leftPos.bottom < rightPos.top) { add(left, leftPos.bottom, null, rightPos.top); }\n      }\n      if (toArg == null && to == lineLen) { right = rightSide; }\n      if (!start || leftPos.top < start.top || leftPos.top == start.top && leftPos.left < start.left)\n        { start = leftPos; }\n      if (!end || rightPos.bottom > end.bottom || rightPos.bottom == end.bottom && rightPos.right > end.right)\n        { end = rightPos; }\n      if (left < leftSide + 1) { left = leftSide; }\n      add(left, rightPos.top, right - left, rightPos.bottom);\n    });\n    return {start: start, end: end}\n  }\n\n  var sFrom = range$$1.from(), sTo = range$$1.to();\n  if (sFrom.line == sTo.line) {\n    drawForLine(sFrom.line, sFrom.ch, sTo.ch);\n  } else {\n    var fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line);\n    var singleVLine = visualLine(fromLine) == visualLine(toLine);\n    var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end;\n    var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start;\n    if (singleVLine) {\n      if (leftEnd.top < rightStart.top - 2) {\n        add(leftEnd.right, leftEnd.top, null, leftEnd.bottom);\n        add(leftSide, rightStart.top, rightStart.left, rightStart.bottom);\n      } else {\n        add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom);\n      }\n    }\n    if (leftEnd.bottom < rightStart.top)\n      { add(leftSide, leftEnd.bottom, null, rightStart.top); }\n  }\n\n  output.appendChild(fragment);\n}\n\n// Cursor-blinking\nfunction restartBlink(cm) {\n  if (!cm.state.focused) { return }\n  var display = cm.display;\n  clearInterval(display.blinker);\n  var on = true;\n  display.cursorDiv.style.visibility = \"\";\n  if (cm.options.cursorBlinkRate > 0)\n    { display.blinker = setInterval(function () { return display.cursorDiv.style.visibility = (on = !on) ? \"\" : \"hidden\"; },\n      cm.options.cursorBlinkRate); }\n  else if (cm.options.cursorBlinkRate < 0)\n    { display.cursorDiv.style.visibility = \"hidden\"; }\n}\n\nfunction ensureFocus(cm) {\n  if (!cm.state.focused) { cm.display.input.focus(); onFocus(cm); }\n}\n\nfunction delayBlurEvent(cm) {\n  cm.state.delayingBlurEvent = true;\n  setTimeout(function () { if (cm.state.delayingBlurEvent) {\n    cm.state.delayingBlurEvent = false;\n    onBlur(cm);\n  } }, 100);\n}\n\nfunction onFocus(cm, e) {\n  if (cm.state.delayingBlurEvent) { cm.state.delayingBlurEvent = false; }\n\n  if (cm.options.readOnly == \"nocursor\") { return }\n  if (!cm.state.focused) {\n    signal(cm, \"focus\", cm, e);\n    cm.state.focused = true;\n    addClass(cm.display.wrapper, \"CodeMirror-focused\");\n    // This test prevents this from firing when a context\n    // menu is closed (since the input reset would kill the\n    // select-all detection hack)\n    if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) {\n      cm.display.input.reset();\n      if (webkit) { setTimeout(function () { return cm.display.input.reset(true); }, 20); } // Issue #1730\n    }\n    cm.display.input.receivedFocus();\n  }\n  restartBlink(cm);\n}\nfunction onBlur(cm, e) {\n  if (cm.state.delayingBlurEvent) { return }\n\n  if (cm.state.focused) {\n    signal(cm, \"blur\", cm, e);\n    cm.state.focused = false;\n    rmClass(cm.display.wrapper, \"CodeMirror-focused\");\n  }\n  clearInterval(cm.display.blinker);\n  setTimeout(function () { if (!cm.state.focused) { cm.display.shift = false; } }, 150);\n}\n\n// Re-align line numbers and gutter marks to compensate for\n// horizontal scrolling.\nfunction alignHorizontally(cm) {\n  var display = cm.display, view = display.view;\n  if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) { return }\n  var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft;\n  var gutterW = display.gutters.offsetWidth, left = comp + \"px\";\n  for (var i = 0; i < view.length; i++) { if (!view[i].hidden) {\n    if (cm.options.fixedGutter) {\n      if (view[i].gutter)\n        { view[i].gutter.style.left = left; }\n      if (view[i].gutterBackground)\n        { view[i].gutterBackground.style.left = left; }\n    }\n    var align = view[i].alignable;\n    if (align) { for (var j = 0; j < align.length; j++)\n      { align[j].style.left = left; } }\n  } }\n  if (cm.options.fixedGutter)\n    { display.gutters.style.left = (comp + gutterW) + \"px\"; }\n}\n\n// Used to ensure that the line number gutter is still the right\n// size for the current document size. Returns true when an update\n// is needed.\nfunction maybeUpdateLineNumberWidth(cm) {\n  if (!cm.options.lineNumbers) { return false }\n  var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display;\n  if (last.length != display.lineNumChars) {\n    var test = display.measure.appendChild(elt(\"div\", [elt(\"div\", last)],\n                                               \"CodeMirror-linenumber CodeMirror-gutter-elt\"));\n    var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW;\n    display.lineGutter.style.width = \"\";\n    display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1;\n    display.lineNumWidth = display.lineNumInnerWidth + padding;\n    display.lineNumChars = display.lineNumInnerWidth ? last.length : -1;\n    display.lineGutter.style.width = display.lineNumWidth + \"px\";\n    updateGutterSpace(cm);\n    return true\n  }\n  return false\n}\n\n// Read the actual heights of the rendered lines, and update their\n// stored heights to match.\nfunction updateHeightsInViewport(cm) {\n  var display = cm.display;\n  var prevBottom = display.lineDiv.offsetTop;\n  for (var i = 0; i < display.view.length; i++) {\n    var cur = display.view[i], height = (void 0);\n    if (cur.hidden) { continue }\n    if (ie && ie_version < 8) {\n      var bot = cur.node.offsetTop + cur.node.offsetHeight;\n      height = bot - prevBottom;\n      prevBottom = bot;\n    } else {\n      var box = cur.node.getBoundingClientRect();\n      height = box.bottom - box.top;\n    }\n    var diff = cur.line.height - height;\n    if (height < 2) { height = textHeight(display); }\n    if (diff > .001 || diff < -.001) {\n      updateLineHeight(cur.line, height);\n      updateWidgetHeight(cur.line);\n      if (cur.rest) { for (var j = 0; j < cur.rest.length; j++)\n        { updateWidgetHeight(cur.rest[j]); } }\n    }\n  }\n}\n\n// Read and store the height of line widgets associated with the\n// given line.\nfunction updateWidgetHeight(line) {\n  if (line.widgets) { for (var i = 0; i < line.widgets.length; ++i)\n    { line.widgets[i].height = line.widgets[i].node.parentNode.offsetHeight; } }\n}\n\n// Compute the lines that are visible in a given viewport (defaults\n// the the current scroll position). viewport may contain top,\n// height, and ensure (see op.scrollToPos) properties.\nfunction visibleLines(display, doc, viewport) {\n  var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop;\n  top = Math.floor(top - paddingTop(display));\n  var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight;\n\n  var from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom);\n  // Ensure is a {from: {line, ch}, to: {line, ch}} object, and\n  // forces those lines into the viewport (if possible).\n  if (viewport && viewport.ensure) {\n    var ensureFrom = viewport.ensure.from.line, ensureTo = viewport.ensure.to.line;\n    if (ensureFrom < from) {\n      from = ensureFrom;\n      to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight);\n    } else if (Math.min(ensureTo, doc.lastLine()) >= to) {\n      from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight);\n      to = ensureTo;\n    }\n  }\n  return {from: from, to: Math.max(to, from + 1)}\n}\n\n// Sync the scrollable area and scrollbars, ensure the viewport\n// covers the visible area.\nfunction setScrollTop(cm, val) {\n  if (Math.abs(cm.doc.scrollTop - val) < 2) { return }\n  cm.doc.scrollTop = val;\n  if (!gecko) { updateDisplaySimple(cm, {top: val}); }\n  if (cm.display.scroller.scrollTop != val) { cm.display.scroller.scrollTop = val; }\n  cm.display.scrollbars.setScrollTop(val);\n  if (gecko) { updateDisplaySimple(cm); }\n  startWorker(cm, 100);\n}\n// Sync scroller and scrollbar, ensure the gutter elements are\n// aligned.\nfunction setScrollLeft(cm, val, isScroller) {\n  if (isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) { return }\n  val = Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth);\n  cm.doc.scrollLeft = val;\n  alignHorizontally(cm);\n  if (cm.display.scroller.scrollLeft != val) { cm.display.scroller.scrollLeft = val; }\n  cm.display.scrollbars.setScrollLeft(val);\n}\n\n// Since the delta values reported on mouse wheel events are\n// unstandardized between browsers and even browser versions, and\n// generally horribly unpredictable, this code starts by measuring\n// the scroll effect that the first few mouse wheel events have,\n// and, from that, detects the way it can convert deltas to pixel\n// offsets afterwards.\n//\n// The reason we want to know the amount a wheel event will scroll\n// is that it gives us a chance to update the display before the\n// actual scrolling happens, reducing flickering.\n\nvar wheelSamples = 0;\nvar wheelPixelsPerUnit = null;\n// Fill in a browser-detected starting value on browsers where we\n// know one. These don't have to be accurate -- the result of them\n// being wrong would just be a slight flicker on the first wheel\n// scroll (if it is large enough).\nif (ie) { wheelPixelsPerUnit = -.53; }\nelse if (gecko) { wheelPixelsPerUnit = 15; }\nelse if (chrome) { wheelPixelsPerUnit = -.7; }\nelse if (safari) { wheelPixelsPerUnit = -1/3; }\n\nfunction wheelEventDelta(e) {\n  var dx = e.wheelDeltaX, dy = e.wheelDeltaY;\n  if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) { dx = e.detail; }\n  if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) { dy = e.detail; }\n  else if (dy == null) { dy = e.wheelDelta; }\n  return {x: dx, y: dy}\n}\nfunction wheelEventPixels(e) {\n  var delta = wheelEventDelta(e);\n  delta.x *= wheelPixelsPerUnit;\n  delta.y *= wheelPixelsPerUnit;\n  return delta\n}\n\nfunction onScrollWheel(cm, e) {\n  var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y;\n\n  var display = cm.display, scroll = display.scroller;\n  // Quit if there's nothing to scroll here\n  var canScrollX = scroll.scrollWidth > scroll.clientWidth;\n  var canScrollY = scroll.scrollHeight > scroll.clientHeight;\n  if (!(dx && canScrollX || dy && canScrollY)) { return }\n\n  // Webkit browsers on OS X abort momentum scrolls when the target\n  // of the scroll event is removed from the scrollable element.\n  // This hack (see related code in patchDisplay) makes sure the\n  // element is kept around.\n  if (dy && mac && webkit) {\n    outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) {\n      for (var i = 0; i < view.length; i++) {\n        if (view[i].node == cur) {\n          cm.display.currentWheelTarget = cur;\n          break outer\n        }\n      }\n    }\n  }\n\n  // On some browsers, horizontal scrolling will cause redraws to\n  // happen before the gutter has been realigned, causing it to\n  // wriggle around in a most unseemly way. When we have an\n  // estimated pixels/delta value, we just handle horizontal\n  // scrolling entirely here. It'll be slightly off from native, but\n  // better than glitching out.\n  if (dx && !gecko && !presto && wheelPixelsPerUnit != null) {\n    if (dy && canScrollY)\n      { setScrollTop(cm, Math.max(0, Math.min(scroll.scrollTop + dy * wheelPixelsPerUnit, scroll.scrollHeight - scroll.clientHeight))); }\n    setScrollLeft(cm, Math.max(0, Math.min(scroll.scrollLeft + dx * wheelPixelsPerUnit, scroll.scrollWidth - scroll.clientWidth)));\n    // Only prevent default scrolling if vertical scrolling is\n    // actually possible. Otherwise, it causes vertical scroll\n    // jitter on OSX trackpads when deltaX is small and deltaY\n    // is large (issue #3579)\n    if (!dy || (dy && canScrollY))\n      { e_preventDefault(e); }\n    display.wheelStartX = null; // Abort measurement, if in progress\n    return\n  }\n\n  // 'Project' the visible viewport to cover the area that is being\n  // scrolled into view (if we know enough to estimate it).\n  if (dy && wheelPixelsPerUnit != null) {\n    var pixels = dy * wheelPixelsPerUnit;\n    var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight;\n    if (pixels < 0) { top = Math.max(0, top + pixels - 50); }\n    else { bot = Math.min(cm.doc.height, bot + pixels + 50); }\n    updateDisplaySimple(cm, {top: top, bottom: bot});\n  }\n\n  if (wheelSamples < 20) {\n    if (display.wheelStartX == null) {\n      display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop;\n      display.wheelDX = dx; display.wheelDY = dy;\n      setTimeout(function () {\n        if (display.wheelStartX == null) { return }\n        var movedX = scroll.scrollLeft - display.wheelStartX;\n        var movedY = scroll.scrollTop - display.wheelStartY;\n        var sample = (movedY && display.wheelDY && movedY / display.wheelDY) ||\n          (movedX && display.wheelDX && movedX / display.wheelDX);\n        display.wheelStartX = display.wheelStartY = null;\n        if (!sample) { return }\n        wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1);\n        ++wheelSamples;\n      }, 200);\n    } else {\n      display.wheelDX += dx; display.wheelDY += dy;\n    }\n  }\n}\n\n// SCROLLBARS\n\n// Prepare DOM reads needed to update the scrollbars. Done in one\n// shot to minimize update/measure roundtrips.\nfunction measureForScrollbars(cm) {\n  var d = cm.display, gutterW = d.gutters.offsetWidth;\n  var docH = Math.round(cm.doc.height + paddingVert(cm.display));\n  return {\n    clientHeight: d.scroller.clientHeight,\n    viewHeight: d.wrapper.clientHeight,\n    scrollWidth: d.scroller.scrollWidth, clientWidth: d.scroller.clientWidth,\n    viewWidth: d.wrapper.clientWidth,\n    barLeft: cm.options.fixedGutter ? gutterW : 0,\n    docHeight: docH,\n    scrollHeight: docH + scrollGap(cm) + d.barHeight,\n    nativeBarWidth: d.nativeBarWidth,\n    gutterWidth: gutterW\n  }\n}\n\nvar NativeScrollbars = function(place, scroll, cm) {\n  this.cm = cm;\n  var vert = this.vert = elt(\"div\", [elt(\"div\", null, null, \"min-width: 1px\")], \"CodeMirror-vscrollbar\");\n  var horiz = this.horiz = elt(\"div\", [elt(\"div\", null, null, \"height: 100%; min-height: 1px\")], \"CodeMirror-hscrollbar\");\n  place(vert); place(horiz);\n\n  on(vert, \"scroll\", function () {\n    if (vert.clientHeight) { scroll(vert.scrollTop, \"vertical\"); }\n  });\n  on(horiz, \"scroll\", function () {\n    if (horiz.clientWidth) { scroll(horiz.scrollLeft, \"horizontal\"); }\n  });\n\n  this.checkedZeroWidth = false;\n  // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8).\n  if (ie && ie_version < 8) { this.horiz.style.minHeight = this.vert.style.minWidth = \"18px\"; }\n};\n\nNativeScrollbars.prototype.update = function (measure) {\n  var needsH = measure.scrollWidth > measure.clientWidth + 1;\n  var needsV = measure.scrollHeight > measure.clientHeight + 1;\n  var sWidth = measure.nativeBarWidth;\n\n  if (needsV) {\n    this.vert.style.display = \"block\";\n    this.vert.style.bottom = needsH ? sWidth + \"px\" : \"0\";\n    var totalHeight = measure.viewHeight - (needsH ? sWidth : 0);\n    // A bug in IE8 can cause this value to be negative, so guard it.\n    this.vert.firstChild.style.height =\n      Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + \"px\";\n  } else {\n    this.vert.style.display = \"\";\n    this.vert.firstChild.style.height = \"0\";\n  }\n\n  if (needsH) {\n    this.horiz.style.display = \"block\";\n    this.horiz.style.right = needsV ? sWidth + \"px\" : \"0\";\n    this.horiz.style.left = measure.barLeft + \"px\";\n    var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0);\n    this.horiz.firstChild.style.width =\n      Math.max(0, measure.scrollWidth - measure.clientWidth + totalWidth) + \"px\";\n  } else {\n    this.horiz.style.display = \"\";\n    this.horiz.firstChild.style.width = \"0\";\n  }\n\n  if (!this.checkedZeroWidth && measure.clientHeight > 0) {\n    if (sWidth == 0) { this.zeroWidthHack(); }\n    this.checkedZeroWidth = true;\n  }\n\n  return {right: needsV ? sWidth : 0, bottom: needsH ? sWidth : 0}\n};\n\nNativeScrollbars.prototype.setScrollLeft = function (pos) {\n  if (this.horiz.scrollLeft != pos) { this.horiz.scrollLeft = pos; }\n  if (this.disableHoriz) { this.enableZeroWidthBar(this.horiz, this.disableHoriz, \"horiz\"); }\n};\n\nNativeScrollbars.prototype.setScrollTop = function (pos) {\n  if (this.vert.scrollTop != pos) { this.vert.scrollTop = pos; }\n  if (this.disableVert) { this.enableZeroWidthBar(this.vert, this.disableVert, \"vert\"); }\n};\n\nNativeScrollbars.prototype.zeroWidthHack = function () {\n  var w = mac && !mac_geMountainLion ? \"12px\" : \"18px\";\n  this.horiz.style.height = this.vert.style.width = w;\n  this.horiz.style.pointerEvents = this.vert.style.pointerEvents = \"none\";\n  this.disableHoriz = new Delayed;\n  this.disableVert = new Delayed;\n};\n\nNativeScrollbars.prototype.enableZeroWidthBar = function (bar, delay, type) {\n  bar.style.pointerEvents = \"auto\";\n  function maybeDisable() {\n    // To find out whether the scrollbar is still visible, we\n    // check whether the element under the pixel in the bottom\n    // right corner of the scrollbar box is the scrollbar box\n    // itself (when the bar is still visible) or its filler child\n    // (when the bar is hidden). If it is still visible, we keep\n    // it enabled, if it's hidden, we disable pointer events.\n    var box = bar.getBoundingClientRect();\n    var elt$$1 = type == \"vert\" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2)\n        : document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1);\n    if (elt$$1 != bar) { bar.style.pointerEvents = \"none\"; }\n    else { delay.set(1000, maybeDisable); }\n  }\n  delay.set(1000, maybeDisable);\n};\n\nNativeScrollbars.prototype.clear = function () {\n  var parent = this.horiz.parentNode;\n  parent.removeChild(this.horiz);\n  parent.removeChild(this.vert);\n};\n\nvar NullScrollbars = function () {};\n\nNullScrollbars.prototype.update = function () { return {bottom: 0, right: 0} };\nNullScrollbars.prototype.setScrollLeft = function () {};\nNullScrollbars.prototype.setScrollTop = function () {};\nNullScrollbars.prototype.clear = function () {};\n\nfunction updateScrollbars(cm, measure) {\n  if (!measure) { measure = measureForScrollbars(cm); }\n  var startWidth = cm.display.barWidth, startHeight = cm.display.barHeight;\n  updateScrollbarsInner(cm, measure);\n  for (var i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) {\n    if (startWidth != cm.display.barWidth && cm.options.lineWrapping)\n      { updateHeightsInViewport(cm); }\n    updateScrollbarsInner(cm, measureForScrollbars(cm));\n    startWidth = cm.display.barWidth; startHeight = cm.display.barHeight;\n  }\n}\n\n// Re-synchronize the fake scrollbars with the actual size of the\n// content.\nfunction updateScrollbarsInner(cm, measure) {\n  var d = cm.display;\n  var sizes = d.scrollbars.update(measure);\n\n  d.sizer.style.paddingRight = (d.barWidth = sizes.right) + \"px\";\n  d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + \"px\";\n  d.heightForcer.style.borderBottom = sizes.bottom + \"px solid transparent\";\n\n  if (sizes.right && sizes.bottom) {\n    d.scrollbarFiller.style.display = \"block\";\n    d.scrollbarFiller.style.height = sizes.bottom + \"px\";\n    d.scrollbarFiller.style.width = sizes.right + \"px\";\n  } else { d.scrollbarFiller.style.display = \"\"; }\n  if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) {\n    d.gutterFiller.style.display = \"block\";\n    d.gutterFiller.style.height = sizes.bottom + \"px\";\n    d.gutterFiller.style.width = measure.gutterWidth + \"px\";\n  } else { d.gutterFiller.style.display = \"\"; }\n}\n\nvar scrollbarModel = {\"native\": NativeScrollbars, \"null\": NullScrollbars};\n\nfunction initScrollbars(cm) {\n  if (cm.display.scrollbars) {\n    cm.display.scrollbars.clear();\n    if (cm.display.scrollbars.addClass)\n      { rmClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n  }\n\n  cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](function (node) {\n    cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller);\n    // Prevent clicks in the scrollbars from killing focus\n    on(node, \"mousedown\", function () {\n      if (cm.state.focused) { setTimeout(function () { return cm.display.input.focus(); }, 0); }\n    });\n    node.setAttribute(\"cm-not-content\", \"true\");\n  }, function (pos, axis) {\n    if (axis == \"horizontal\") { setScrollLeft(cm, pos); }\n    else { setScrollTop(cm, pos); }\n  }, cm);\n  if (cm.display.scrollbars.addClass)\n    { addClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n}\n\n// SCROLLING THINGS INTO VIEW\n\n// If an editor sits on the top or bottom of the window, partially\n// scrolled out of view, this ensures that the cursor is visible.\nfunction maybeScrollWindow(cm, rect) {\n  if (signalDOMEvent(cm, \"scrollCursorIntoView\")) { return }\n\n  var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null;\n  if (rect.top + box.top < 0) { doScroll = true; }\n  else if (rect.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) { doScroll = false; }\n  if (doScroll != null && !phantom) {\n    var scrollNode = elt(\"div\", \"\\u200b\", null, (\"position: absolute;\\n                         top: \" + (rect.top - display.viewOffset - paddingTop(cm.display)) + \"px;\\n                         height: \" + (rect.bottom - rect.top + scrollGap(cm) + display.barHeight) + \"px;\\n                         left: \" + (rect.left) + \"px; width: \" + (Math.max(2, rect.right - rect.left)) + \"px;\"));\n    cm.display.lineSpace.appendChild(scrollNode);\n    scrollNode.scrollIntoView(doScroll);\n    cm.display.lineSpace.removeChild(scrollNode);\n  }\n}\n\n// Scroll a given position into view (immediately), verifying that\n// it actually became visible (as line heights are accurately\n// measured, the position of something may 'drift' during drawing).\nfunction scrollPosIntoView(cm, pos, end, margin) {\n  if (margin == null) { margin = 0; }\n  var rect;\n  for (var limit = 0; limit < 5; limit++) {\n    var changed = false;\n    var coords = cursorCoords(cm, pos);\n    var endCoords = !end || end == pos ? coords : cursorCoords(cm, end);\n    rect = {left: Math.min(coords.left, endCoords.left),\n            top: Math.min(coords.top, endCoords.top) - margin,\n            right: Math.max(coords.left, endCoords.left),\n            bottom: Math.max(coords.bottom, endCoords.bottom) + margin};\n    var scrollPos = calculateScrollPos(cm, rect);\n    var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft;\n    if (scrollPos.scrollTop != null) {\n      setScrollTop(cm, scrollPos.scrollTop);\n      if (Math.abs(cm.doc.scrollTop - startTop) > 1) { changed = true; }\n    }\n    if (scrollPos.scrollLeft != null) {\n      setScrollLeft(cm, scrollPos.scrollLeft);\n      if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) { changed = true; }\n    }\n    if (!changed) { break }\n  }\n  return rect\n}\n\n// Scroll a given set of coordinates into view (immediately).\nfunction scrollIntoView(cm, rect) {\n  var scrollPos = calculateScrollPos(cm, rect);\n  if (scrollPos.scrollTop != null) { setScrollTop(cm, scrollPos.scrollTop); }\n  if (scrollPos.scrollLeft != null) { setScrollLeft(cm, scrollPos.scrollLeft); }\n}\n\n// Calculate a new scroll position needed to scroll the given\n// rectangle into view. Returns an object with scrollTop and\n// scrollLeft properties. When these are undefined, the\n// vertical/horizontal position does not need to be adjusted.\nfunction calculateScrollPos(cm, rect) {\n  var display = cm.display, snapMargin = textHeight(cm.display);\n  if (rect.top < 0) { rect.top = 0; }\n  var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop;\n  var screen = displayHeight(cm), result = {};\n  if (rect.bottom - rect.top > screen) { rect.bottom = rect.top + screen; }\n  var docBottom = cm.doc.height + paddingVert(display);\n  var atTop = rect.top < snapMargin, atBottom = rect.bottom > docBottom - snapMargin;\n  if (rect.top < screentop) {\n    result.scrollTop = atTop ? 0 : rect.top;\n  } else if (rect.bottom > screentop + screen) {\n    var newTop = Math.min(rect.top, (atBottom ? docBottom : rect.bottom) - screen);\n    if (newTop != screentop) { result.scrollTop = newTop; }\n  }\n\n  var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft;\n  var screenw = displayWidth(cm) - (cm.options.fixedGutter ? display.gutters.offsetWidth : 0);\n  var tooWide = rect.right - rect.left > screenw;\n  if (tooWide) { rect.right = rect.left + screenw; }\n  if (rect.left < 10)\n    { result.scrollLeft = 0; }\n  else if (rect.left < screenleft)\n    { result.scrollLeft = Math.max(0, rect.left - (tooWide ? 0 : 10)); }\n  else if (rect.right > screenw + screenleft - 3)\n    { result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw; }\n  return result\n}\n\n// Store a relative adjustment to the scroll position in the current\n// operation (to be applied when the operation finishes).\nfunction addToScrollPos(cm, left, top) {\n  if (left != null || top != null) { resolveScrollToPos(cm); }\n  if (left != null)\n    { cm.curOp.scrollLeft = (cm.curOp.scrollLeft == null ? cm.doc.scrollLeft : cm.curOp.scrollLeft) + left; }\n  if (top != null)\n    { cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top; }\n}\n\n// Make sure that at the end of the operation the current cursor is\n// shown.\nfunction ensureCursorVisible(cm) {\n  resolveScrollToPos(cm);\n  var cur = cm.getCursor(), from = cur, to = cur;\n  if (!cm.options.lineWrapping) {\n    from = cur.ch ? Pos(cur.line, cur.ch - 1) : cur;\n    to = Pos(cur.line, cur.ch + 1);\n  }\n  cm.curOp.scrollToPos = {from: from, to: to, margin: cm.options.cursorScrollMargin};\n}\n\n// When an operation has its scrollToPos property set, and another\n// scroll action is applied before the end of the operation, this\n// 'simulates' scrolling that position into view in a cheap way, so\n// that the effect of intermediate scroll commands is not ignored.\nfunction resolveScrollToPos(cm) {\n  var range$$1 = cm.curOp.scrollToPos;\n  if (range$$1) {\n    cm.curOp.scrollToPos = null;\n    var from = estimateCoords(cm, range$$1.from), to = estimateCoords(cm, range$$1.to);\n    var sPos = calculateScrollPos(cm, {\n      left: Math.min(from.left, to.left),\n      top: Math.min(from.top, to.top) - range$$1.margin,\n      right: Math.max(from.right, to.right),\n      bottom: Math.max(from.bottom, to.bottom) + range$$1.margin\n    });\n    cm.scrollTo(sPos.scrollLeft, sPos.scrollTop);\n  }\n}\n\n// Operations are used to wrap a series of changes to the editor\n// state in such a way that each change won't have to update the\n// cursor and display (which would be awkward, slow, and\n// error-prone). Instead, display updates are batched and then all\n// combined and executed at once.\n\nvar nextOpId = 0;\n// Start a new operation.\nfunction startOperation(cm) {\n  cm.curOp = {\n    cm: cm,\n    viewChanged: false,      // Flag that indicates that lines might need to be redrawn\n    startHeight: cm.doc.height, // Used to detect need to update scrollbar\n    forceUpdate: false,      // Used to force a redraw\n    updateInput: null,       // Whether to reset the input textarea\n    typing: false,           // Whether this reset should be careful to leave existing text (for compositing)\n    changeObjs: null,        // Accumulated changes, for firing change events\n    cursorActivityHandlers: null, // Set of handlers to fire cursorActivity on\n    cursorActivityCalled: 0, // Tracks which cursorActivity handlers have been called already\n    selectionChanged: false, // Whether the selection needs to be redrawn\n    updateMaxLine: false,    // Set when the widest line needs to be determined anew\n    scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet\n    scrollToPos: null,       // Used to scroll to a specific position\n    focus: false,\n    id: ++nextOpId           // Unique ID\n  };\n  pushOperation(cm.curOp);\n}\n\n// Finish an operation, updating the display and signalling delayed events\nfunction endOperation(cm) {\n  var op = cm.curOp;\n  finishOperation(op, function (group) {\n    for (var i = 0; i < group.ops.length; i++)\n      { group.ops[i].cm.curOp = null; }\n    endOperations(group);\n  });\n}\n\n// The DOM updates done when an operation finishes are batched so\n// that the minimum number of relayouts are required.\nfunction endOperations(group) {\n  var ops = group.ops;\n  for (var i = 0; i < ops.length; i++) // Read DOM\n    { endOperation_R1(ops[i]); }\n  for (var i$1 = 0; i$1 < ops.length; i$1++) // Write DOM (maybe)\n    { endOperation_W1(ops[i$1]); }\n  for (var i$2 = 0; i$2 < ops.length; i$2++) // Read DOM\n    { endOperation_R2(ops[i$2]); }\n  for (var i$3 = 0; i$3 < ops.length; i$3++) // Write DOM (maybe)\n    { endOperation_W2(ops[i$3]); }\n  for (var i$4 = 0; i$4 < ops.length; i$4++) // Read DOM\n    { endOperation_finish(ops[i$4]); }\n}\n\nfunction endOperation_R1(op) {\n  var cm = op.cm, display = cm.display;\n  maybeClipScrollbars(cm);\n  if (op.updateMaxLine) { findMaxLine(cm); }\n\n  op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null ||\n    op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom ||\n                       op.scrollToPos.to.line >= display.viewTo) ||\n    display.maxLineChanged && cm.options.lineWrapping;\n  op.update = op.mustUpdate &&\n    new DisplayUpdate(cm, op.mustUpdate && {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate);\n}\n\nfunction endOperation_W1(op) {\n  op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update);\n}\n\nfunction endOperation_R2(op) {\n  var cm = op.cm, display = cm.display;\n  if (op.updatedDisplay) { updateHeightsInViewport(cm); }\n\n  op.barMeasure = measureForScrollbars(cm);\n\n  // If the max line changed since it was last measured, measure it,\n  // and ensure the document's width matches it.\n  // updateDisplay_W2 will use these properties to do the actual resizing\n  if (display.maxLineChanged && !cm.options.lineWrapping) {\n    op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3;\n    cm.display.sizerWidth = op.adjustWidthTo;\n    op.barMeasure.scrollWidth =\n      Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth);\n    op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm));\n  }\n\n  if (op.updatedDisplay || op.selectionChanged)\n    { op.preparedSelection = display.input.prepareSelection(op.focus); }\n}\n\nfunction endOperation_W2(op) {\n  var cm = op.cm;\n\n  if (op.adjustWidthTo != null) {\n    cm.display.sizer.style.minWidth = op.adjustWidthTo + \"px\";\n    if (op.maxScrollLeft < cm.doc.scrollLeft)\n      { setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true); }\n    cm.display.maxLineChanged = false;\n  }\n\n  var takeFocus = op.focus && op.focus == activeElt() && (!document.hasFocus || document.hasFocus());\n  if (op.preparedSelection)\n    { cm.display.input.showSelection(op.preparedSelection, takeFocus); }\n  if (op.updatedDisplay || op.startHeight != cm.doc.height)\n    { updateScrollbars(cm, op.barMeasure); }\n  if (op.updatedDisplay)\n    { setDocumentHeight(cm, op.barMeasure); }\n\n  if (op.selectionChanged) { restartBlink(cm); }\n\n  if (cm.state.focused && op.updateInput)\n    { cm.display.input.reset(op.typing); }\n  if (takeFocus) { ensureFocus(op.cm); }\n}\n\nfunction endOperation_finish(op) {\n  var cm = op.cm, display = cm.display, doc = cm.doc;\n\n  if (op.updatedDisplay) { postUpdateDisplay(cm, op.update); }\n\n  // Abort mouse wheel delta measurement, when scrolling explicitly\n  if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos))\n    { display.wheelStartX = display.wheelStartY = null; }\n\n  // Propagate the scroll position to the actual DOM scroller\n  if (op.scrollTop != null && (display.scroller.scrollTop != op.scrollTop || op.forceScroll)) {\n    doc.scrollTop = Math.max(0, Math.min(display.scroller.scrollHeight - display.scroller.clientHeight, op.scrollTop));\n    display.scrollbars.setScrollTop(doc.scrollTop);\n    display.scroller.scrollTop = doc.scrollTop;\n  }\n  if (op.scrollLeft != null && (display.scroller.scrollLeft != op.scrollLeft || op.forceScroll)) {\n    doc.scrollLeft = Math.max(0, Math.min(display.scroller.scrollWidth - display.scroller.clientWidth, op.scrollLeft));\n    display.scrollbars.setScrollLeft(doc.scrollLeft);\n    display.scroller.scrollLeft = doc.scrollLeft;\n    alignHorizontally(cm);\n  }\n  // If we need to scroll a specific position into view, do so.\n  if (op.scrollToPos) {\n    var rect = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from),\n                                 clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin);\n    maybeScrollWindow(cm, rect);\n  }\n\n  // Fire events for markers that are hidden/unidden by editing or\n  // undoing\n  var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers;\n  if (hidden) { for (var i = 0; i < hidden.length; ++i)\n    { if (!hidden[i].lines.length) { signal(hidden[i], \"hide\"); } } }\n  if (unhidden) { for (var i$1 = 0; i$1 < unhidden.length; ++i$1)\n    { if (unhidden[i$1].lines.length) { signal(unhidden[i$1], \"unhide\"); } } }\n\n  if (display.wrapper.offsetHeight)\n    { doc.scrollTop = cm.display.scroller.scrollTop; }\n\n  // Fire change events, and delayed event handlers\n  if (op.changeObjs)\n    { signal(cm, \"changes\", cm, op.changeObjs); }\n  if (op.update)\n    { op.update.finish(); }\n}\n\n// Run the given function in an operation\nfunction runInOp(cm, f) {\n  if (cm.curOp) { return f() }\n  startOperation(cm);\n  try { return f() }\n  finally { endOperation(cm); }\n}\n// Wraps a function in an operation. Returns the wrapped function.\nfunction operation(cm, f) {\n  return function() {\n    if (cm.curOp) { return f.apply(cm, arguments) }\n    startOperation(cm);\n    try { return f.apply(cm, arguments) }\n    finally { endOperation(cm); }\n  }\n}\n// Used to add methods to editor and doc instances, wrapping them in\n// operations.\nfunction methodOp(f) {\n  return function() {\n    if (this.curOp) { return f.apply(this, arguments) }\n    startOperation(this);\n    try { return f.apply(this, arguments) }\n    finally { endOperation(this); }\n  }\n}\nfunction docMethodOp(f) {\n  return function() {\n    var cm = this.cm;\n    if (!cm || cm.curOp) { return f.apply(this, arguments) }\n    startOperation(cm);\n    try { return f.apply(this, arguments) }\n    finally { endOperation(cm); }\n  }\n}\n\n// Updates the display.view data structure for a given change to the\n// document. From and to are in pre-change coordinates. Lendiff is\n// the amount of lines added or subtracted by the change. This is\n// used for changes that span multiple lines, or change the way\n// lines are divided into visual lines. regLineChange (below)\n// registers single-line changes.\nfunction regChange(cm, from, to, lendiff) {\n  if (from == null) { from = cm.doc.first; }\n  if (to == null) { to = cm.doc.first + cm.doc.size; }\n  if (!lendiff) { lendiff = 0; }\n\n  var display = cm.display;\n  if (lendiff && to < display.viewTo &&\n      (display.updateLineNumbers == null || display.updateLineNumbers > from))\n    { display.updateLineNumbers = from; }\n\n  cm.curOp.viewChanged = true;\n\n  if (from >= display.viewTo) { // Change after\n    if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo)\n      { resetView(cm); }\n  } else if (to <= display.viewFrom) { // Change before\n    if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) {\n      resetView(cm);\n    } else {\n      display.viewFrom += lendiff;\n      display.viewTo += lendiff;\n    }\n  } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap\n    resetView(cm);\n  } else if (from <= display.viewFrom) { // Top overlap\n    var cut = viewCuttingPoint(cm, to, to + lendiff, 1);\n    if (cut) {\n      display.view = display.view.slice(cut.index);\n      display.viewFrom = cut.lineN;\n      display.viewTo += lendiff;\n    } else {\n      resetView(cm);\n    }\n  } else if (to >= display.viewTo) { // Bottom overlap\n    var cut$1 = viewCuttingPoint(cm, from, from, -1);\n    if (cut$1) {\n      display.view = display.view.slice(0, cut$1.index);\n      display.viewTo = cut$1.lineN;\n    } else {\n      resetView(cm);\n    }\n  } else { // Gap in the middle\n    var cutTop = viewCuttingPoint(cm, from, from, -1);\n    var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1);\n    if (cutTop && cutBot) {\n      display.view = display.view.slice(0, cutTop.index)\n        .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN))\n        .concat(display.view.slice(cutBot.index));\n      display.viewTo += lendiff;\n    } else {\n      resetView(cm);\n    }\n  }\n\n  var ext = display.externalMeasured;\n  if (ext) {\n    if (to < ext.lineN)\n      { ext.lineN += lendiff; }\n    else if (from < ext.lineN + ext.size)\n      { display.externalMeasured = null; }\n  }\n}\n\n// Register a change to a single line. Type must be one of \"text\",\n// \"gutter\", \"class\", \"widget\"\nfunction regLineChange(cm, line, type) {\n  cm.curOp.viewChanged = true;\n  var display = cm.display, ext = cm.display.externalMeasured;\n  if (ext && line >= ext.lineN && line < ext.lineN + ext.size)\n    { display.externalMeasured = null; }\n\n  if (line < display.viewFrom || line >= display.viewTo) { return }\n  var lineView = display.view[findViewIndex(cm, line)];\n  if (lineView.node == null) { return }\n  var arr = lineView.changes || (lineView.changes = []);\n  if (indexOf(arr, type) == -1) { arr.push(type); }\n}\n\n// Clear the view.\nfunction resetView(cm) {\n  cm.display.viewFrom = cm.display.viewTo = cm.doc.first;\n  cm.display.view = [];\n  cm.display.viewOffset = 0;\n}\n\nfunction viewCuttingPoint(cm, oldN, newN, dir) {\n  var index = findViewIndex(cm, oldN), diff, view = cm.display.view;\n  if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size)\n    { return {index: index, lineN: newN} }\n  var n = cm.display.viewFrom;\n  for (var i = 0; i < index; i++)\n    { n += view[i].size; }\n  if (n != oldN) {\n    if (dir > 0) {\n      if (index == view.length - 1) { return null }\n      diff = (n + view[index].size) - oldN;\n      index++;\n    } else {\n      diff = n - oldN;\n    }\n    oldN += diff; newN += diff;\n  }\n  while (visualLineNo(cm.doc, newN) != newN) {\n    if (index == (dir < 0 ? 0 : view.length - 1)) { return null }\n    newN += dir * view[index - (dir < 0 ? 1 : 0)].size;\n    index += dir;\n  }\n  return {index: index, lineN: newN}\n}\n\n// Force the view to cover a given range, adding empty view element\n// or clipping off existing ones as needed.\nfunction adjustView(cm, from, to) {\n  var display = cm.display, view = display.view;\n  if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) {\n    display.view = buildViewArray(cm, from, to);\n    display.viewFrom = from;\n  } else {\n    if (display.viewFrom > from)\n      { display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view); }\n    else if (display.viewFrom < from)\n      { display.view = display.view.slice(findViewIndex(cm, from)); }\n    display.viewFrom = from;\n    if (display.viewTo < to)\n      { display.view = display.view.concat(buildViewArray(cm, display.viewTo, to)); }\n    else if (display.viewTo > to)\n      { display.view = display.view.slice(0, findViewIndex(cm, to)); }\n  }\n  display.viewTo = to;\n}\n\n// Count the number of lines in the view whose DOM representation is\n// out of date (or nonexistent).\nfunction countDirtyView(cm) {\n  var view = cm.display.view, dirty = 0;\n  for (var i = 0; i < view.length; i++) {\n    var lineView = view[i];\n    if (!lineView.hidden && (!lineView.node || lineView.changes)) { ++dirty; }\n  }\n  return dirty\n}\n\n// HIGHLIGHT WORKER\n\nfunction startWorker(cm, time) {\n  if (cm.doc.mode.startState && cm.doc.frontier < cm.display.viewTo)\n    { cm.state.highlight.set(time, bind(highlightWorker, cm)); }\n}\n\nfunction highlightWorker(cm) {\n  var doc = cm.doc;\n  if (doc.frontier < doc.first) { doc.frontier = doc.first; }\n  if (doc.frontier >= cm.display.viewTo) { return }\n  var end = +new Date + cm.options.workTime;\n  var state = copyState(doc.mode, getStateBefore(cm, doc.frontier));\n  var changedLines = [];\n\n  doc.iter(doc.frontier, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function (line) {\n    if (doc.frontier >= cm.display.viewFrom) { // Visible\n      var oldStyles = line.styles, tooLong = line.text.length > cm.options.maxHighlightLength;\n      var highlighted = highlightLine(cm, line, tooLong ? copyState(doc.mode, state) : state, true);\n      line.styles = highlighted.styles;\n      var oldCls = line.styleClasses, newCls = highlighted.classes;\n      if (newCls) { line.styleClasses = newCls; }\n      else if (oldCls) { line.styleClasses = null; }\n      var ischange = !oldStyles || oldStyles.length != line.styles.length ||\n        oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass);\n      for (var i = 0; !ischange && i < oldStyles.length; ++i) { ischange = oldStyles[i] != line.styles[i]; }\n      if (ischange) { changedLines.push(doc.frontier); }\n      line.stateAfter = tooLong ? state : copyState(doc.mode, state);\n    } else {\n      if (line.text.length <= cm.options.maxHighlightLength)\n        { processLine(cm, line.text, state); }\n      line.stateAfter = doc.frontier % 5 == 0 ? copyState(doc.mode, state) : null;\n    }\n    ++doc.frontier;\n    if (+new Date > end) {\n      startWorker(cm, cm.options.workDelay);\n      return true\n    }\n  });\n  if (changedLines.length) { runInOp(cm, function () {\n    for (var i = 0; i < changedLines.length; i++)\n      { regLineChange(cm, changedLines[i], \"text\"); }\n  }); }\n}\n\n// DISPLAY DRAWING\n\nvar DisplayUpdate = function(cm, viewport, force) {\n  var display = cm.display;\n\n  this.viewport = viewport;\n  // Store some values that we'll need later (but don't want to force a relayout for)\n  this.visible = visibleLines(display, cm.doc, viewport);\n  this.editorIsHidden = !display.wrapper.offsetWidth;\n  this.wrapperHeight = display.wrapper.clientHeight;\n  this.wrapperWidth = display.wrapper.clientWidth;\n  this.oldDisplayWidth = displayWidth(cm);\n  this.force = force;\n  this.dims = getDimensions(cm);\n  this.events = [];\n};\n\nDisplayUpdate.prototype.signal = function (emitter, type) {\n  if (hasHandler(emitter, type))\n    { this.events.push(arguments); }\n};\nDisplayUpdate.prototype.finish = function () {\n    var this$1 = this;\n\n  for (var i = 0; i < this.events.length; i++)\n    { signal.apply(null, this$1.events[i]); }\n};\n\nfunction maybeClipScrollbars(cm) {\n  var display = cm.display;\n  if (!display.scrollbarsClipped && display.scroller.offsetWidth) {\n    display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth;\n    display.heightForcer.style.height = scrollGap(cm) + \"px\";\n    display.sizer.style.marginBottom = -display.nativeBarWidth + \"px\";\n    display.sizer.style.borderRightWidth = scrollGap(cm) + \"px\";\n    display.scrollbarsClipped = true;\n  }\n}\n\n// Does the actual updating of the line display. Bails out\n// (returning false) when there is nothing to be done and forced is\n// false.\nfunction updateDisplayIfNeeded(cm, update) {\n  var display = cm.display, doc = cm.doc;\n\n  if (update.editorIsHidden) {\n    resetView(cm);\n    return false\n  }\n\n  // Bail out if the visible area is already rendered and nothing changed.\n  if (!update.force &&\n      update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo &&\n      (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) &&\n      display.renderedView == display.view && countDirtyView(cm) == 0)\n    { return false }\n\n  if (maybeUpdateLineNumberWidth(cm)) {\n    resetView(cm);\n    update.dims = getDimensions(cm);\n  }\n\n  // Compute a suitable new viewport (from & to)\n  var end = doc.first + doc.size;\n  var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first);\n  var to = Math.min(end, update.visible.to + cm.options.viewportMargin);\n  if (display.viewFrom < from && from - display.viewFrom < 20) { from = Math.max(doc.first, display.viewFrom); }\n  if (display.viewTo > to && display.viewTo - to < 20) { to = Math.min(end, display.viewTo); }\n  if (sawCollapsedSpans) {\n    from = visualLineNo(cm.doc, from);\n    to = visualLineEndNo(cm.doc, to);\n  }\n\n  var different = from != display.viewFrom || to != display.viewTo ||\n    display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth;\n  adjustView(cm, from, to);\n\n  display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom));\n  // Position the mover div to align with the current scroll position\n  cm.display.mover.style.top = display.viewOffset + \"px\";\n\n  var toUpdate = countDirtyView(cm);\n  if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view &&\n      (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo))\n    { return false }\n\n  // For big changes, we hide the enclosing element during the\n  // update, since that speeds up the operations on most browsers.\n  var focused = activeElt();\n  if (toUpdate > 4) { display.lineDiv.style.display = \"none\"; }\n  patchDisplay(cm, display.updateLineNumbers, update.dims);\n  if (toUpdate > 4) { display.lineDiv.style.display = \"\"; }\n  display.renderedView = display.view;\n  // There might have been a widget with a focused element that got\n  // hidden or updated, if so re-focus it.\n  if (focused && activeElt() != focused && focused.offsetHeight) { focused.focus(); }\n\n  // Prevent selection and cursors from interfering with the scroll\n  // width and height.\n  removeChildren(display.cursorDiv);\n  removeChildren(display.selectionDiv);\n  display.gutters.style.height = display.sizer.style.minHeight = 0;\n\n  if (different) {\n    display.lastWrapHeight = update.wrapperHeight;\n    display.lastWrapWidth = update.wrapperWidth;\n    startWorker(cm, 400);\n  }\n\n  display.updateLineNumbers = null;\n\n  return true\n}\n\nfunction postUpdateDisplay(cm, update) {\n  var viewport = update.viewport;\n\n  for (var first = true;; first = false) {\n    if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) {\n      // Clip forced viewport to actual scrollable area.\n      if (viewport && viewport.top != null)\n        { viewport = {top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)}; }\n      // Updated line heights might result in the drawn area not\n      // actually covering the viewport. Keep looping until it does.\n      update.visible = visibleLines(cm.display, cm.doc, viewport);\n      if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo)\n        { break }\n    }\n    if (!updateDisplayIfNeeded(cm, update)) { break }\n    updateHeightsInViewport(cm);\n    var barMeasure = measureForScrollbars(cm);\n    updateSelection(cm);\n    updateScrollbars(cm, barMeasure);\n    setDocumentHeight(cm, barMeasure);\n  }\n\n  update.signal(cm, \"update\", cm);\n  if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) {\n    update.signal(cm, \"viewportChange\", cm, cm.display.viewFrom, cm.display.viewTo);\n    cm.display.reportedViewFrom = cm.display.viewFrom; cm.display.reportedViewTo = cm.display.viewTo;\n  }\n}\n\nfunction updateDisplaySimple(cm, viewport) {\n  var update = new DisplayUpdate(cm, viewport);\n  if (updateDisplayIfNeeded(cm, update)) {\n    updateHeightsInViewport(cm);\n    postUpdateDisplay(cm, update);\n    var barMeasure = measureForScrollbars(cm);\n    updateSelection(cm);\n    updateScrollbars(cm, barMeasure);\n    setDocumentHeight(cm, barMeasure);\n    update.finish();\n  }\n}\n\n// Sync the actual display DOM structure with display.view, removing\n// nodes for lines that are no longer in view, and creating the ones\n// that are not there yet, and updating the ones that are out of\n// date.\nfunction patchDisplay(cm, updateNumbersFrom, dims) {\n  var display = cm.display, lineNumbers = cm.options.lineNumbers;\n  var container = display.lineDiv, cur = container.firstChild;\n\n  function rm(node) {\n    var next = node.nextSibling;\n    // Works around a throw-scroll bug in OS X Webkit\n    if (webkit && mac && cm.display.currentWheelTarget == node)\n      { node.style.display = \"none\"; }\n    else\n      { node.parentNode.removeChild(node); }\n    return next\n  }\n\n  var view = display.view, lineN = display.viewFrom;\n  // Loop over the elements in the view, syncing cur (the DOM nodes\n  // in display.lineDiv) with the view as we go.\n  for (var i = 0; i < view.length; i++) {\n    var lineView = view[i];\n    if (lineView.hidden) {\n    } else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet\n      var node = buildLineElement(cm, lineView, lineN, dims);\n      container.insertBefore(node, cur);\n    } else { // Already drawn\n      while (cur != lineView.node) { cur = rm(cur); }\n      var updateNumber = lineNumbers && updateNumbersFrom != null &&\n        updateNumbersFrom <= lineN && lineView.lineNumber;\n      if (lineView.changes) {\n        if (indexOf(lineView.changes, \"gutter\") > -1) { updateNumber = false; }\n        updateLineForChanges(cm, lineView, lineN, dims);\n      }\n      if (updateNumber) {\n        removeChildren(lineView.lineNumber);\n        lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN)));\n      }\n      cur = lineView.node.nextSibling;\n    }\n    lineN += lineView.size;\n  }\n  while (cur) { cur = rm(cur); }\n}\n\nfunction updateGutterSpace(cm) {\n  var width = cm.display.gutters.offsetWidth;\n  cm.display.sizer.style.marginLeft = width + \"px\";\n}\n\nfunction setDocumentHeight(cm, measure) {\n  cm.display.sizer.style.minHeight = measure.docHeight + \"px\";\n  cm.display.heightForcer.style.top = measure.docHeight + \"px\";\n  cm.display.gutters.style.height = (measure.docHeight + cm.display.barHeight + scrollGap(cm)) + \"px\";\n}\n\n// Rebuild the gutter elements, ensure the margin to the left of the\n// code matches their width.\nfunction updateGutters(cm) {\n  var gutters = cm.display.gutters, specs = cm.options.gutters;\n  removeChildren(gutters);\n  var i = 0;\n  for (; i < specs.length; ++i) {\n    var gutterClass = specs[i];\n    var gElt = gutters.appendChild(elt(\"div\", null, \"CodeMirror-gutter \" + gutterClass));\n    if (gutterClass == \"CodeMirror-linenumbers\") {\n      cm.display.lineGutter = gElt;\n      gElt.style.width = (cm.display.lineNumWidth || 1) + \"px\";\n    }\n  }\n  gutters.style.display = i ? \"\" : \"none\";\n  updateGutterSpace(cm);\n}\n\n// Make sure the gutters options contains the element\n// \"CodeMirror-linenumbers\" when the lineNumbers option is true.\nfunction setGuttersForLineNumbers(options) {\n  var found = indexOf(options.gutters, \"CodeMirror-linenumbers\");\n  if (found == -1 && options.lineNumbers) {\n    options.gutters = options.gutters.concat([\"CodeMirror-linenumbers\"]);\n  } else if (found > -1 && !options.lineNumbers) {\n    options.gutters = options.gutters.slice(0);\n    options.gutters.splice(found, 1);\n  }\n}\n\n// Selection objects are immutable. A new one is created every time\n// the selection changes. A selection is one or more non-overlapping\n// (and non-touching) ranges, sorted, and an integer that indicates\n// which one is the primary selection (the one that's scrolled into\n// view, that getCursor returns, etc).\nvar Selection = function(ranges, primIndex) {\n  this.ranges = ranges;\n  this.primIndex = primIndex;\n};\n\nSelection.prototype.primary = function () { return this.ranges[this.primIndex] };\n\nSelection.prototype.equals = function (other) {\n    var this$1 = this;\n\n  if (other == this) { return true }\n  if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) { return false }\n  for (var i = 0; i < this.ranges.length; i++) {\n    var here = this$1.ranges[i], there = other.ranges[i];\n    if (!equalCursorPos(here.anchor, there.anchor) || !equalCursorPos(here.head, there.head)) { return false }\n  }\n  return true\n};\n\nSelection.prototype.deepCopy = function () {\n    var this$1 = this;\n\n  var out = [];\n  for (var i = 0; i < this.ranges.length; i++)\n    { out[i] = new Range(copyPos(this$1.ranges[i].anchor), copyPos(this$1.ranges[i].head)); }\n  return new Selection(out, this.primIndex)\n};\n\nSelection.prototype.somethingSelected = function () {\n    var this$1 = this;\n\n  for (var i = 0; i < this.ranges.length; i++)\n    { if (!this$1.ranges[i].empty()) { return true } }\n  return false\n};\n\nSelection.prototype.contains = function (pos, end) {\n    var this$1 = this;\n\n  if (!end) { end = pos; }\n  for (var i = 0; i < this.ranges.length; i++) {\n    var range = this$1.ranges[i];\n    if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0)\n      { return i }\n  }\n  return -1\n};\n\nvar Range = function(anchor, head) {\n  this.anchor = anchor; this.head = head;\n};\n\nRange.prototype.from = function () { return minPos(this.anchor, this.head) };\nRange.prototype.to = function () { return maxPos(this.anchor, this.head) };\nRange.prototype.empty = function () { return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch };\n\n// Take an unsorted, potentially overlapping set of ranges, and\n// build a selection out of it. 'Consumes' ranges array (modifying\n// it).\nfunction normalizeSelection(ranges, primIndex) {\n  var prim = ranges[primIndex];\n  ranges.sort(function (a, b) { return cmp(a.from(), b.from()); });\n  primIndex = indexOf(ranges, prim);\n  for (var i = 1; i < ranges.length; i++) {\n    var cur = ranges[i], prev = ranges[i - 1];\n    if (cmp(prev.to(), cur.from()) >= 0) {\n      var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to());\n      var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head;\n      if (i <= primIndex) { --primIndex; }\n      ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to));\n    }\n  }\n  return new Selection(ranges, primIndex)\n}\n\nfunction simpleSelection(anchor, head) {\n  return new Selection([new Range(anchor, head || anchor)], 0)\n}\n\n// Compute the position of the end of a change (its 'to' property\n// refers to the pre-change end).\nfunction changeEnd(change) {\n  if (!change.text) { return change.to }\n  return Pos(change.from.line + change.text.length - 1,\n             lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0))\n}\n\n// Adjust a position to refer to the post-change position of the\n// same text, or the end of the change if the change covers it.\nfunction adjustForChange(pos, change) {\n  if (cmp(pos, change.from) < 0) { return pos }\n  if (cmp(pos, change.to) <= 0) { return changeEnd(change) }\n\n  var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch;\n  if (pos.line == change.to.line) { ch += changeEnd(change).ch - change.to.ch; }\n  return Pos(line, ch)\n}\n\nfunction computeSelAfterChange(doc, change) {\n  var out = [];\n  for (var i = 0; i < doc.sel.ranges.length; i++) {\n    var range = doc.sel.ranges[i];\n    out.push(new Range(adjustForChange(range.anchor, change),\n                       adjustForChange(range.head, change)));\n  }\n  return normalizeSelection(out, doc.sel.primIndex)\n}\n\nfunction offsetPos(pos, old, nw) {\n  if (pos.line == old.line)\n    { return Pos(nw.line, pos.ch - old.ch + nw.ch) }\n  else\n    { return Pos(nw.line + (pos.line - old.line), pos.ch) }\n}\n\n// Used by replaceSelections to allow moving the selection to the\n// start or around the replaced test. Hint may be \"start\" or \"around\".\nfunction computeReplacedSel(doc, changes, hint) {\n  var out = [];\n  var oldPrev = Pos(doc.first, 0), newPrev = oldPrev;\n  for (var i = 0; i < changes.length; i++) {\n    var change = changes[i];\n    var from = offsetPos(change.from, oldPrev, newPrev);\n    var to = offsetPos(changeEnd(change), oldPrev, newPrev);\n    oldPrev = change.to;\n    newPrev = to;\n    if (hint == \"around\") {\n      var range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor) < 0;\n      out[i] = new Range(inv ? to : from, inv ? from : to);\n    } else {\n      out[i] = new Range(from, from);\n    }\n  }\n  return new Selection(out, doc.sel.primIndex)\n}\n\n// Used to get the editor into a consistent state again when options change.\n\nfunction loadMode(cm) {\n  cm.doc.mode = getMode(cm.options, cm.doc.modeOption);\n  resetModeState(cm);\n}\n\nfunction resetModeState(cm) {\n  cm.doc.iter(function (line) {\n    if (line.stateAfter) { line.stateAfter = null; }\n    if (line.styles) { line.styles = null; }\n  });\n  cm.doc.frontier = cm.doc.first;\n  startWorker(cm, 100);\n  cm.state.modeGen++;\n  if (cm.curOp) { regChange(cm); }\n}\n\n// DOCUMENT DATA STRUCTURE\n\n// By default, updates that start and end at the beginning of a line\n// are treated specially, in order to make the association of line\n// widgets and marker elements with the text behave more intuitive.\nfunction isWholeLineUpdate(doc, change) {\n  return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == \"\" &&\n    (!doc.cm || doc.cm.options.wholeLineUpdateBefore)\n}\n\n// Perform a change on the document data structure.\nfunction updateDoc(doc, change, markedSpans, estimateHeight$$1) {\n  function spansFor(n) {return markedSpans ? markedSpans[n] : null}\n  function update(line, text, spans) {\n    updateLine(line, text, spans, estimateHeight$$1);\n    signalLater(line, \"change\", line, change);\n  }\n  function linesFor(start, end) {\n    var result = [];\n    for (var i = start; i < end; ++i)\n      { result.push(new Line(text[i], spansFor(i), estimateHeight$$1)); }\n    return result\n  }\n\n  var from = change.from, to = change.to, text = change.text;\n  var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line);\n  var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line;\n\n  // Adjust the line structure\n  if (change.full) {\n    doc.insert(0, linesFor(0, text.length));\n    doc.remove(text.length, doc.size - text.length);\n  } else if (isWholeLineUpdate(doc, change)) {\n    // This is a whole-line replace. Treated specially to make\n    // sure line objects move the way they are supposed to.\n    var added = linesFor(0, text.length - 1);\n    update(lastLine, lastLine.text, lastSpans);\n    if (nlines) { doc.remove(from.line, nlines); }\n    if (added.length) { doc.insert(from.line, added); }\n  } else if (firstLine == lastLine) {\n    if (text.length == 1) {\n      update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans);\n    } else {\n      var added$1 = linesFor(1, text.length - 1);\n      added$1.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight$$1));\n      update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n      doc.insert(from.line + 1, added$1);\n    }\n  } else if (text.length == 1) {\n    update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0));\n    doc.remove(from.line + 1, nlines);\n  } else {\n    update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n    update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans);\n    var added$2 = linesFor(1, text.length - 1);\n    if (nlines > 1) { doc.remove(from.line + 1, nlines - 1); }\n    doc.insert(from.line + 1, added$2);\n  }\n\n  signalLater(doc, \"change\", doc, change);\n}\n\n// Call f for all linked documents.\nfunction linkedDocs(doc, f, sharedHistOnly) {\n  function propagate(doc, skip, sharedHist) {\n    if (doc.linked) { for (var i = 0; i < doc.linked.length; ++i) {\n      var rel = doc.linked[i];\n      if (rel.doc == skip) { continue }\n      var shared = sharedHist && rel.sharedHist;\n      if (sharedHistOnly && !shared) { continue }\n      f(rel.doc, shared);\n      propagate(rel.doc, doc, shared);\n    } }\n  }\n  propagate(doc, null, true);\n}\n\n// Attach a document to an editor.\nfunction attachDoc(cm, doc) {\n  if (doc.cm) { throw new Error(\"This document is already in use.\") }\n  cm.doc = doc;\n  doc.cm = cm;\n  estimateLineHeights(cm);\n  loadMode(cm);\n  setDirectionClass(cm);\n  if (!cm.options.lineWrapping) { findMaxLine(cm); }\n  cm.options.mode = doc.modeOption;\n  regChange(cm);\n}\n\nfunction setDirectionClass(cm) {\n  (cm.doc.direction == \"rtl\" ? addClass : rmClass)(cm.display.lineDiv, \"CodeMirror-rtl\");\n}\n\nfunction directionChanged(cm) {\n  runInOp(cm, function () {\n    setDirectionClass(cm);\n    regChange(cm);\n  });\n}\n\nfunction History(startGen) {\n  // Arrays of change events and selections. Doing something adds an\n  // event to done and clears undo. Undoing moves events from done\n  // to undone, redoing moves them in the other direction.\n  this.done = []; this.undone = [];\n  this.undoDepth = Infinity;\n  // Used to track when changes can be merged into a single undo\n  // event\n  this.lastModTime = this.lastSelTime = 0;\n  this.lastOp = this.lastSelOp = null;\n  this.lastOrigin = this.lastSelOrigin = null;\n  // Used by the isClean() method\n  this.generation = this.maxGeneration = startGen || 1;\n}\n\n// Create a history change event from an updateDoc-style change\n// object.\nfunction historyChangeFromChange(doc, change) {\n  var histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)};\n  attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\n  linkedDocs(doc, function (doc) { return attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1); }, true);\n  return histChange\n}\n\n// Pop all selection events off the end of a history array. Stop at\n// a change event.\nfunction clearSelectionEvents(array) {\n  while (array.length) {\n    var last = lst(array);\n    if (last.ranges) { array.pop(); }\n    else { break }\n  }\n}\n\n// Find the top change event in the history. Pop off selection\n// events that are in the way.\nfunction lastChangeEvent(hist, force) {\n  if (force) {\n    clearSelectionEvents(hist.done);\n    return lst(hist.done)\n  } else if (hist.done.length && !lst(hist.done).ranges) {\n    return lst(hist.done)\n  } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) {\n    hist.done.pop();\n    return lst(hist.done)\n  }\n}\n\n// Register a change in the history. Merges changes that are within\n// a single operation, or are close together with an origin that\n// allows merging (starting with \"+\") into a single event.\nfunction addChangeToHistory(doc, change, selAfter, opId) {\n  var hist = doc.history;\n  hist.undone.length = 0;\n  var time = +new Date, cur;\n  var last;\n\n  if ((hist.lastOp == opId ||\n       hist.lastOrigin == change.origin && change.origin &&\n       ((change.origin.charAt(0) == \"+\" && doc.cm && hist.lastModTime > time - doc.cm.options.historyEventDelay) ||\n        change.origin.charAt(0) == \"*\")) &&\n      (cur = lastChangeEvent(hist, hist.lastOp == opId))) {\n    // Merge this change into the last event\n    last = lst(cur.changes);\n    if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) {\n      // Optimized case for simple insertion -- don't want to add\n      // new changesets for every character typed\n      last.to = changeEnd(change);\n    } else {\n      // Add new sub-event\n      cur.changes.push(historyChangeFromChange(doc, change));\n    }\n  } else {\n    // Can not be merged, start a new event.\n    var before = lst(hist.done);\n    if (!before || !before.ranges)\n      { pushSelectionToHistory(doc.sel, hist.done); }\n    cur = {changes: [historyChangeFromChange(doc, change)],\n           generation: hist.generation};\n    hist.done.push(cur);\n    while (hist.done.length > hist.undoDepth) {\n      hist.done.shift();\n      if (!hist.done[0].ranges) { hist.done.shift(); }\n    }\n  }\n  hist.done.push(selAfter);\n  hist.generation = ++hist.maxGeneration;\n  hist.lastModTime = hist.lastSelTime = time;\n  hist.lastOp = hist.lastSelOp = opId;\n  hist.lastOrigin = hist.lastSelOrigin = change.origin;\n\n  if (!last) { signal(doc, \"historyAdded\"); }\n}\n\nfunction selectionEventCanBeMerged(doc, origin, prev, sel) {\n  var ch = origin.charAt(0);\n  return ch == \"*\" ||\n    ch == \"+\" &&\n    prev.ranges.length == sel.ranges.length &&\n    prev.somethingSelected() == sel.somethingSelected() &&\n    new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500)\n}\n\n// Called whenever the selection changes, sets the new selection as\n// the pending selection in the history, and pushes the old pending\n// selection into the 'done' array when it was significantly\n// different (in number of selected ranges, emptiness, or time).\nfunction addSelectionToHistory(doc, sel, opId, options) {\n  var hist = doc.history, origin = options && options.origin;\n\n  // A new event is started when the previous origin does not match\n  // the current, or the origins don't allow matching. Origins\n  // starting with * are always merged, those starting with + are\n  // merged when similar and close together in time.\n  if (opId == hist.lastSelOp ||\n      (origin && hist.lastSelOrigin == origin &&\n       (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin ||\n        selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))))\n    { hist.done[hist.done.length - 1] = sel; }\n  else\n    { pushSelectionToHistory(sel, hist.done); }\n\n  hist.lastSelTime = +new Date;\n  hist.lastSelOrigin = origin;\n  hist.lastSelOp = opId;\n  if (options && options.clearRedo !== false)\n    { clearSelectionEvents(hist.undone); }\n}\n\nfunction pushSelectionToHistory(sel, dest) {\n  var top = lst(dest);\n  if (!(top && top.ranges && top.equals(sel)))\n    { dest.push(sel); }\n}\n\n// Used to store marked span information in the history.\nfunction attachLocalSpans(doc, change, from, to) {\n  var existing = change[\"spans_\" + doc.id], n = 0;\n  doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function (line) {\n    if (line.markedSpans)\n      { (existing || (existing = change[\"spans_\" + doc.id] = {}))[n] = line.markedSpans; }\n    ++n;\n  });\n}\n\n// When un/re-doing restores text containing marked spans, those\n// that have been explicitly cleared should not be restored.\nfunction removeClearedSpans(spans) {\n  if (!spans) { return null }\n  var out;\n  for (var i = 0; i < spans.length; ++i) {\n    if (spans[i].marker.explicitlyCleared) { if (!out) { out = spans.slice(0, i); } }\n    else if (out) { out.push(spans[i]); }\n  }\n  return !out ? spans : out.length ? out : null\n}\n\n// Retrieve and filter the old marked spans stored in a change event.\nfunction getOldSpans(doc, change) {\n  var found = change[\"spans_\" + doc.id];\n  if (!found) { return null }\n  var nw = [];\n  for (var i = 0; i < change.text.length; ++i)\n    { nw.push(removeClearedSpans(found[i])); }\n  return nw\n}\n\n// Used for un/re-doing changes from the history. Combines the\n// result of computing the existing spans with the set of spans that\n// existed in the history (so that deleting around a span and then\n// undoing brings back the span).\nfunction mergeOldSpans(doc, change) {\n  var old = getOldSpans(doc, change);\n  var stretched = stretchSpansOverChange(doc, change);\n  if (!old) { return stretched }\n  if (!stretched) { return old }\n\n  for (var i = 0; i < old.length; ++i) {\n    var oldCur = old[i], stretchCur = stretched[i];\n    if (oldCur && stretchCur) {\n      spans: for (var j = 0; j < stretchCur.length; ++j) {\n        var span = stretchCur[j];\n        for (var k = 0; k < oldCur.length; ++k)\n          { if (oldCur[k].marker == span.marker) { continue spans } }\n        oldCur.push(span);\n      }\n    } else if (stretchCur) {\n      old[i] = stretchCur;\n    }\n  }\n  return old\n}\n\n// Used both to provide a JSON-safe object in .getHistory, and, when\n// detaching a document, to split the history in two\nfunction copyHistoryArray(events, newGroup, instantiateSel) {\n  var copy = [];\n  for (var i = 0; i < events.length; ++i) {\n    var event = events[i];\n    if (event.ranges) {\n      copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event);\n      continue\n    }\n    var changes = event.changes, newChanges = [];\n    copy.push({changes: newChanges});\n    for (var j = 0; j < changes.length; ++j) {\n      var change = changes[j], m = (void 0);\n      newChanges.push({from: change.from, to: change.to, text: change.text});\n      if (newGroup) { for (var prop in change) { if (m = prop.match(/^spans_(\\d+)$/)) {\n        if (indexOf(newGroup, Number(m[1])) > -1) {\n          lst(newChanges)[prop] = change[prop];\n          delete change[prop];\n        }\n      } } }\n    }\n  }\n  return copy\n}\n\n// The 'scroll' parameter given to many of these indicated whether\n// the new cursor position should be scrolled into view after\n// modifying the selection.\n\n// If shift is held or the extend flag is set, extends a range to\n// include a given position (and optionally a second position).\n// Otherwise, simply returns the range between the given positions.\n// Used for cursor motion and such.\nfunction extendRange(doc, range, head, other) {\n  if (doc.cm && doc.cm.display.shift || doc.extend) {\n    var anchor = range.anchor;\n    if (other) {\n      var posBefore = cmp(head, anchor) < 0;\n      if (posBefore != (cmp(other, anchor) < 0)) {\n        anchor = head;\n        head = other;\n      } else if (posBefore != (cmp(head, other) < 0)) {\n        head = other;\n      }\n    }\n    return new Range(anchor, head)\n  } else {\n    return new Range(other || head, head)\n  }\n}\n\n// Extend the primary selection range, discard the rest.\nfunction extendSelection(doc, head, other, options) {\n  setSelection(doc, new Selection([extendRange(doc, doc.sel.primary(), head, other)], 0), options);\n}\n\n// Extend all selections (pos is an array of selections with length\n// equal the number of selections)\nfunction extendSelections(doc, heads, options) {\n  var out = [];\n  for (var i = 0; i < doc.sel.ranges.length; i++)\n    { out[i] = extendRange(doc, doc.sel.ranges[i], heads[i], null); }\n  var newSel = normalizeSelection(out, doc.sel.primIndex);\n  setSelection(doc, newSel, options);\n}\n\n// Updates a single range in the selection.\nfunction replaceOneSelection(doc, i, range, options) {\n  var ranges = doc.sel.ranges.slice(0);\n  ranges[i] = range;\n  setSelection(doc, normalizeSelection(ranges, doc.sel.primIndex), options);\n}\n\n// Reset the selection to a single range.\nfunction setSimpleSelection(doc, anchor, head, options) {\n  setSelection(doc, simpleSelection(anchor, head), options);\n}\n\n// Give beforeSelectionChange handlers a change to influence a\n// selection update.\nfunction filterSelectionChange(doc, sel, options) {\n  var obj = {\n    ranges: sel.ranges,\n    update: function(ranges) {\n      var this$1 = this;\n\n      this.ranges = [];\n      for (var i = 0; i < ranges.length; i++)\n        { this$1.ranges[i] = new Range(clipPos(doc, ranges[i].anchor),\n                                   clipPos(doc, ranges[i].head)); }\n    },\n    origin: options && options.origin\n  };\n  signal(doc, \"beforeSelectionChange\", doc, obj);\n  if (doc.cm) { signal(doc.cm, \"beforeSelectionChange\", doc.cm, obj); }\n  if (obj.ranges != sel.ranges) { return normalizeSelection(obj.ranges, obj.ranges.length - 1) }\n  else { return sel }\n}\n\nfunction setSelectionReplaceHistory(doc, sel, options) {\n  var done = doc.history.done, last = lst(done);\n  if (last && last.ranges) {\n    done[done.length - 1] = sel;\n    setSelectionNoUndo(doc, sel, options);\n  } else {\n    setSelection(doc, sel, options);\n  }\n}\n\n// Set a new selection.\nfunction setSelection(doc, sel, options) {\n  setSelectionNoUndo(doc, sel, options);\n  addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options);\n}\n\nfunction setSelectionNoUndo(doc, sel, options) {\n  if (hasHandler(doc, \"beforeSelectionChange\") || doc.cm && hasHandler(doc.cm, \"beforeSelectionChange\"))\n    { sel = filterSelectionChange(doc, sel, options); }\n\n  var bias = options && options.bias ||\n    (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1);\n  setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true));\n\n  if (!(options && options.scroll === false) && doc.cm)\n    { ensureCursorVisible(doc.cm); }\n}\n\nfunction setSelectionInner(doc, sel) {\n  if (sel.equals(doc.sel)) { return }\n\n  doc.sel = sel;\n\n  if (doc.cm) {\n    doc.cm.curOp.updateInput = doc.cm.curOp.selectionChanged = true;\n    signalCursorActivity(doc.cm);\n  }\n  signalLater(doc, \"cursorActivity\", doc);\n}\n\n// Verify that the selection does not partially select any atomic\n// marked ranges.\nfunction reCheckSelection(doc) {\n  setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false), sel_dontScroll);\n}\n\n// Return a selection that does not partially select any atomic\n// ranges.\nfunction skipAtomicInSelection(doc, sel, bias, mayClear) {\n  var out;\n  for (var i = 0; i < sel.ranges.length; i++) {\n    var range = sel.ranges[i];\n    var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i];\n    var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear);\n    var newHead = skipAtomic(doc, range.head, old && old.head, bias, mayClear);\n    if (out || newAnchor != range.anchor || newHead != range.head) {\n      if (!out) { out = sel.ranges.slice(0, i); }\n      out[i] = new Range(newAnchor, newHead);\n    }\n  }\n  return out ? normalizeSelection(out, sel.primIndex) : sel\n}\n\nfunction skipAtomicInner(doc, pos, oldPos, dir, mayClear) {\n  var line = getLine(doc, pos.line);\n  if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n    var sp = line.markedSpans[i], m = sp.marker;\n    if ((sp.from == null || (m.inclusiveLeft ? sp.from <= pos.ch : sp.from < pos.ch)) &&\n        (sp.to == null || (m.inclusiveRight ? sp.to >= pos.ch : sp.to > pos.ch))) {\n      if (mayClear) {\n        signal(m, \"beforeCursorEnter\");\n        if (m.explicitlyCleared) {\n          if (!line.markedSpans) { break }\n          else {--i; continue}\n        }\n      }\n      if (!m.atomic) { continue }\n\n      if (oldPos) {\n        var near = m.find(dir < 0 ? 1 : -1), diff = (void 0);\n        if (dir < 0 ? m.inclusiveRight : m.inclusiveLeft)\n          { near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null); }\n        if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0))\n          { return skipAtomicInner(doc, near, pos, dir, mayClear) }\n      }\n\n      var far = m.find(dir < 0 ? -1 : 1);\n      if (dir < 0 ? m.inclusiveLeft : m.inclusiveRight)\n        { far = movePos(doc, far, dir, far.line == pos.line ? line : null); }\n      return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null\n    }\n  } }\n  return pos\n}\n\n// Ensure a given position is not inside an atomic range.\nfunction skipAtomic(doc, pos, oldPos, bias, mayClear) {\n  var dir = bias || 1;\n  var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) ||\n      (!mayClear && skipAtomicInner(doc, pos, oldPos, dir, true)) ||\n      skipAtomicInner(doc, pos, oldPos, -dir, mayClear) ||\n      (!mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true));\n  if (!found) {\n    doc.cantEdit = true;\n    return Pos(doc.first, 0)\n  }\n  return found\n}\n\nfunction movePos(doc, pos, dir, line) {\n  if (dir < 0 && pos.ch == 0) {\n    if (pos.line > doc.first) { return clipPos(doc, Pos(pos.line - 1)) }\n    else { return null }\n  } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) {\n    if (pos.line < doc.first + doc.size - 1) { return Pos(pos.line + 1, 0) }\n    else { return null }\n  } else {\n    return new Pos(pos.line, pos.ch + dir)\n  }\n}\n\nfunction selectAll(cm) {\n  cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);\n}\n\n// UPDATING\n\n// Allow \"beforeChange\" event handlers to influence a change\nfunction filterChange(doc, change, update) {\n  var obj = {\n    canceled: false,\n    from: change.from,\n    to: change.to,\n    text: change.text,\n    origin: change.origin,\n    cancel: function () { return obj.canceled = true; }\n  };\n  if (update) { obj.update = function (from, to, text, origin) {\n    if (from) { obj.from = clipPos(doc, from); }\n    if (to) { obj.to = clipPos(doc, to); }\n    if (text) { obj.text = text; }\n    if (origin !== undefined) { obj.origin = origin; }\n  }; }\n  signal(doc, \"beforeChange\", doc, obj);\n  if (doc.cm) { signal(doc.cm, \"beforeChange\", doc.cm, obj); }\n\n  if (obj.canceled) { return null }\n  return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin}\n}\n\n// Apply a change to a document, and add it to the document's\n// history, and propagating it to all linked documents.\nfunction makeChange(doc, change, ignoreReadOnly) {\n  if (doc.cm) {\n    if (!doc.cm.curOp) { return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly) }\n    if (doc.cm.state.suppressEdits) { return }\n  }\n\n  if (hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\")) {\n    change = filterChange(doc, change, true);\n    if (!change) { return }\n  }\n\n  // Possibly split or suppress the update based on the presence\n  // of read-only spans in its range.\n  var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to);\n  if (split) {\n    for (var i = split.length - 1; i >= 0; --i)\n      { makeChangeInner(doc, {from: split[i].from, to: split[i].to, text: i ? [\"\"] : change.text}); }\n  } else {\n    makeChangeInner(doc, change);\n  }\n}\n\nfunction makeChangeInner(doc, change) {\n  if (change.text.length == 1 && change.text[0] == \"\" && cmp(change.from, change.to) == 0) { return }\n  var selAfter = computeSelAfterChange(doc, change);\n  addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN);\n\n  makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change));\n  var rebased = [];\n\n  linkedDocs(doc, function (doc, sharedHist) {\n    if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n      rebaseHist(doc.history, change);\n      rebased.push(doc.history);\n    }\n    makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change));\n  });\n}\n\n// Revert a change stored in a document's history.\nfunction makeChangeFromHistory(doc, type, allowSelectionOnly) {\n  if (doc.cm && doc.cm.state.suppressEdits && !allowSelectionOnly) { return }\n\n  var hist = doc.history, event, selAfter = doc.sel;\n  var source = type == \"undo\" ? hist.done : hist.undone, dest = type == \"undo\" ? hist.undone : hist.done;\n\n  // Verify that there is a useable event (so that ctrl-z won't\n  // needlessly clear selection events)\n  var i = 0;\n  for (; i < source.length; i++) {\n    event = source[i];\n    if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges)\n      { break }\n  }\n  if (i == source.length) { return }\n  hist.lastOrigin = hist.lastSelOrigin = null;\n\n  for (;;) {\n    event = source.pop();\n    if (event.ranges) {\n      pushSelectionToHistory(event, dest);\n      if (allowSelectionOnly && !event.equals(doc.sel)) {\n        setSelection(doc, event, {clearRedo: false});\n        return\n      }\n      selAfter = event;\n    }\n    else { break }\n  }\n\n  // Build up a reverse change object to add to the opposite history\n  // stack (redo when undoing, and vice versa).\n  var antiChanges = [];\n  pushSelectionToHistory(selAfter, dest);\n  dest.push({changes: antiChanges, generation: hist.generation});\n  hist.generation = event.generation || ++hist.maxGeneration;\n\n  var filter = hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\");\n\n  var loop = function ( i ) {\n    var change = event.changes[i];\n    change.origin = type;\n    if (filter && !filterChange(doc, change, false)) {\n      source.length = 0;\n      return {}\n    }\n\n    antiChanges.push(historyChangeFromChange(doc, change));\n\n    var after = i ? computeSelAfterChange(doc, change) : lst(source);\n    makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change));\n    if (!i && doc.cm) { doc.cm.scrollIntoView({from: change.from, to: changeEnd(change)}); }\n    var rebased = [];\n\n    // Propagate to the linked documents\n    linkedDocs(doc, function (doc, sharedHist) {\n      if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n        rebaseHist(doc.history, change);\n        rebased.push(doc.history);\n      }\n      makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change));\n    });\n  };\n\n  for (var i$1 = event.changes.length - 1; i$1 >= 0; --i$1) {\n    var returned = loop( i$1 );\n\n    if ( returned ) return returned.v;\n  }\n}\n\n// Sub-views need their line numbers shifted when text is added\n// above or below them in the parent document.\nfunction shiftDoc(doc, distance) {\n  if (distance == 0) { return }\n  doc.first += distance;\n  doc.sel = new Selection(map(doc.sel.ranges, function (range) { return new Range(\n    Pos(range.anchor.line + distance, range.anchor.ch),\n    Pos(range.head.line + distance, range.head.ch)\n  ); }), doc.sel.primIndex);\n  if (doc.cm) {\n    regChange(doc.cm, doc.first, doc.first - distance, distance);\n    for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++)\n      { regLineChange(doc.cm, l, \"gutter\"); }\n  }\n}\n\n// More lower-level change function, handling only a single document\n// (not linked ones).\nfunction makeChangeSingleDoc(doc, change, selAfter, spans) {\n  if (doc.cm && !doc.cm.curOp)\n    { return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans) }\n\n  if (change.to.line < doc.first) {\n    shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line));\n    return\n  }\n  if (change.from.line > doc.lastLine()) { return }\n\n  // Clip the change to the size of this doc\n  if (change.from.line < doc.first) {\n    var shift = change.text.length - 1 - (doc.first - change.from.line);\n    shiftDoc(doc, shift);\n    change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch),\n              text: [lst(change.text)], origin: change.origin};\n  }\n  var last = doc.lastLine();\n  if (change.to.line > last) {\n    change = {from: change.from, to: Pos(last, getLine(doc, last).text.length),\n              text: [change.text[0]], origin: change.origin};\n  }\n\n  change.removed = getBetween(doc, change.from, change.to);\n\n  if (!selAfter) { selAfter = computeSelAfterChange(doc, change); }\n  if (doc.cm) { makeChangeSingleDocInEditor(doc.cm, change, spans); }\n  else { updateDoc(doc, change, spans); }\n  setSelectionNoUndo(doc, selAfter, sel_dontScroll);\n}\n\n// Handle the interaction of a change to a document with the editor\n// that this document is part of.\nfunction makeChangeSingleDocInEditor(cm, change, spans) {\n  var doc = cm.doc, display = cm.display, from = change.from, to = change.to;\n\n  var recomputeMaxLength = false, checkWidthStart = from.line;\n  if (!cm.options.lineWrapping) {\n    checkWidthStart = lineNo(visualLine(getLine(doc, from.line)));\n    doc.iter(checkWidthStart, to.line + 1, function (line) {\n      if (line == display.maxLine) {\n        recomputeMaxLength = true;\n        return true\n      }\n    });\n  }\n\n  if (doc.sel.contains(change.from, change.to) > -1)\n    { signalCursorActivity(cm); }\n\n  updateDoc(doc, change, spans, estimateHeight(cm));\n\n  if (!cm.options.lineWrapping) {\n    doc.iter(checkWidthStart, from.line + change.text.length, function (line) {\n      var len = lineLength(line);\n      if (len > display.maxLineLength) {\n        display.maxLine = line;\n        display.maxLineLength = len;\n        display.maxLineChanged = true;\n        recomputeMaxLength = false;\n      }\n    });\n    if (recomputeMaxLength) { cm.curOp.updateMaxLine = true; }\n  }\n\n  // Adjust frontier, schedule worker\n  doc.frontier = Math.min(doc.frontier, from.line);\n  startWorker(cm, 400);\n\n  var lendiff = change.text.length - (to.line - from.line) - 1;\n  // Remember that these lines changed, for updating the display\n  if (change.full)\n    { regChange(cm); }\n  else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change))\n    { regLineChange(cm, from.line, \"text\"); }\n  else\n    { regChange(cm, from.line, to.line + 1, lendiff); }\n\n  var changesHandler = hasHandler(cm, \"changes\"), changeHandler = hasHandler(cm, \"change\");\n  if (changeHandler || changesHandler) {\n    var obj = {\n      from: from, to: to,\n      text: change.text,\n      removed: change.removed,\n      origin: change.origin\n    };\n    if (changeHandler) { signalLater(cm, \"change\", cm, obj); }\n    if (changesHandler) { (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj); }\n  }\n  cm.display.selForContextMenu = null;\n}\n\nfunction replaceRange(doc, code, from, to, origin) {\n  if (!to) { to = from; }\n  if (cmp(to, from) < 0) { var tmp = to; to = from; from = tmp; }\n  if (typeof code == \"string\") { code = doc.splitLines(code); }\n  makeChange(doc, {from: from, to: to, text: code, origin: origin});\n}\n\n// Rebasing/resetting history to deal with externally-sourced changes\n\nfunction rebaseHistSelSingle(pos, from, to, diff) {\n  if (to < pos.line) {\n    pos.line += diff;\n  } else if (from < pos.line) {\n    pos.line = from;\n    pos.ch = 0;\n  }\n}\n\n// Tries to rebase an array of history events given a change in the\n// document. If the change touches the same lines as the event, the\n// event, and everything 'behind' it, is discarded. If the change is\n// before the event, the event's positions are updated. Uses a\n// copy-on-write scheme for the positions, to avoid having to\n// reallocate them all on every rebase, but also avoid problems with\n// shared position objects being unsafely updated.\nfunction rebaseHistArray(array, from, to, diff) {\n  for (var i = 0; i < array.length; ++i) {\n    var sub = array[i], ok = true;\n    if (sub.ranges) {\n      if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied = true; }\n      for (var j = 0; j < sub.ranges.length; j++) {\n        rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff);\n        rebaseHistSelSingle(sub.ranges[j].head, from, to, diff);\n      }\n      continue\n    }\n    for (var j$1 = 0; j$1 < sub.changes.length; ++j$1) {\n      var cur = sub.changes[j$1];\n      if (to < cur.from.line) {\n        cur.from = Pos(cur.from.line + diff, cur.from.ch);\n        cur.to = Pos(cur.to.line + diff, cur.to.ch);\n      } else if (from <= cur.to.line) {\n        ok = false;\n        break\n      }\n    }\n    if (!ok) {\n      array.splice(0, i + 1);\n      i = 0;\n    }\n  }\n}\n\nfunction rebaseHist(hist, change) {\n  var from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1;\n  rebaseHistArray(hist.done, from, to, diff);\n  rebaseHistArray(hist.undone, from, to, diff);\n}\n\n// Utility for applying a change to a line by handle or number,\n// returning the number and optionally registering the line as\n// changed.\nfunction changeLine(doc, handle, changeType, op) {\n  var no = handle, line = handle;\n  if (typeof handle == \"number\") { line = getLine(doc, clipLine(doc, handle)); }\n  else { no = lineNo(handle); }\n  if (no == null) { return null }\n  if (op(line, no) && doc.cm) { regLineChange(doc.cm, no, changeType); }\n  return line\n}\n\n// The document is represented as a BTree consisting of leaves, with\n// chunk of lines in them, and branches, with up to ten leaves or\n// other branch nodes below them. The top node is always a branch\n// node, and is the document object itself (meaning it has\n// additional methods and properties).\n//\n// All nodes have parent links. The tree is used both to go from\n// line numbers to line objects, and to go from objects to numbers.\n// It also indexes by height, and is used to convert between height\n// and line object, and to find the total height of the document.\n//\n// See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html\n\nvar LeafChunk = function(lines) {\n  var this$1 = this;\n\n  this.lines = lines;\n  this.parent = null;\n  var height = 0;\n  for (var i = 0; i < lines.length; ++i) {\n    lines[i].parent = this$1;\n    height += lines[i].height;\n  }\n  this.height = height;\n};\n\nLeafChunk.prototype.chunkSize = function () { return this.lines.length };\n\n// Remove the n lines at offset 'at'.\nLeafChunk.prototype.removeInner = function (at, n) {\n    var this$1 = this;\n\n  for (var i = at, e = at + n; i < e; ++i) {\n    var line = this$1.lines[i];\n    this$1.height -= line.height;\n    cleanUpLine(line);\n    signalLater(line, \"delete\");\n  }\n  this.lines.splice(at, n);\n};\n\n// Helper used to collapse a small branch into a single leaf.\nLeafChunk.prototype.collapse = function (lines) {\n  lines.push.apply(lines, this.lines);\n};\n\n// Insert the given array of lines at offset 'at', count them as\n// having the given height.\nLeafChunk.prototype.insertInner = function (at, lines, height) {\n    var this$1 = this;\n\n  this.height += height;\n  this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at));\n  for (var i = 0; i < lines.length; ++i) { lines[i].parent = this$1; }\n};\n\n// Used to iterate over a part of the tree.\nLeafChunk.prototype.iterN = function (at, n, op) {\n    var this$1 = this;\n\n  for (var e = at + n; at < e; ++at)\n    { if (op(this$1.lines[at])) { return true } }\n};\n\nvar BranchChunk = function(children) {\n  var this$1 = this;\n\n  this.children = children;\n  var size = 0, height = 0;\n  for (var i = 0; i < children.length; ++i) {\n    var ch = children[i];\n    size += ch.chunkSize(); height += ch.height;\n    ch.parent = this$1;\n  }\n  this.size = size;\n  this.height = height;\n  this.parent = null;\n};\n\nBranchChunk.prototype.chunkSize = function () { return this.size };\n\nBranchChunk.prototype.removeInner = function (at, n) {\n    var this$1 = this;\n\n  this.size -= n;\n  for (var i = 0; i < this.children.length; ++i) {\n    var child = this$1.children[i], sz = child.chunkSize();\n    if (at < sz) {\n      var rm = Math.min(n, sz - at), oldHeight = child.height;\n      child.removeInner(at, rm);\n      this$1.height -= oldHeight - child.height;\n      if (sz == rm) { this$1.children.splice(i--, 1); child.parent = null; }\n      if ((n -= rm) == 0) { break }\n      at = 0;\n    } else { at -= sz; }\n  }\n  // If the result is smaller than 25 lines, ensure that it is a\n  // single leaf node.\n  if (this.size - n < 25 &&\n      (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) {\n    var lines = [];\n    this.collapse(lines);\n    this.children = [new LeafChunk(lines)];\n    this.children[0].parent = this;\n  }\n};\n\nBranchChunk.prototype.collapse = function (lines) {\n    var this$1 = this;\n\n  for (var i = 0; i < this.children.length; ++i) { this$1.children[i].collapse(lines); }\n};\n\nBranchChunk.prototype.insertInner = function (at, lines, height) {\n    var this$1 = this;\n\n  this.size += lines.length;\n  this.height += height;\n  for (var i = 0; i < this.children.length; ++i) {\n    var child = this$1.children[i], sz = child.chunkSize();\n    if (at <= sz) {\n      child.insertInner(at, lines, height);\n      if (child.lines && child.lines.length > 50) {\n        // To avoid memory thrashing when child.lines is huge (e.g. first view of a large file), it's never spliced.\n        // Instead, small slices are taken. They're taken in order because sequential memory accesses are fastest.\n        var remaining = child.lines.length % 25 + 25;\n        for (var pos = remaining; pos < child.lines.length;) {\n          var leaf = new LeafChunk(child.lines.slice(pos, pos += 25));\n          child.height -= leaf.height;\n          this$1.children.splice(++i, 0, leaf);\n          leaf.parent = this$1;\n        }\n        child.lines = child.lines.slice(0, remaining);\n        this$1.maybeSpill();\n      }\n      break\n    }\n    at -= sz;\n  }\n};\n\n// When a node has grown, check whether it should be split.\nBranchChunk.prototype.maybeSpill = function () {\n  if (this.children.length <= 10) { return }\n  var me = this;\n  do {\n    var spilled = me.children.splice(me.children.length - 5, 5);\n    var sibling = new BranchChunk(spilled);\n    if (!me.parent) { // Become the parent node\n      var copy = new BranchChunk(me.children);\n      copy.parent = me;\n      me.children = [copy, sibling];\n      me = copy;\n   } else {\n      me.size -= sibling.size;\n      me.height -= sibling.height;\n      var myIndex = indexOf(me.parent.children, me);\n      me.parent.children.splice(myIndex + 1, 0, sibling);\n    }\n    sibling.parent = me.parent;\n  } while (me.children.length > 10)\n  me.parent.maybeSpill();\n};\n\nBranchChunk.prototype.iterN = function (at, n, op) {\n    var this$1 = this;\n\n  for (var i = 0; i < this.children.length; ++i) {\n    var child = this$1.children[i], sz = child.chunkSize();\n    if (at < sz) {\n      var used = Math.min(n, sz - at);\n      if (child.iterN(at, used, op)) { return true }\n      if ((n -= used) == 0) { break }\n      at = 0;\n    } else { at -= sz; }\n  }\n};\n\n// Line widgets are block elements displayed above or below a line.\n\nvar LineWidget = function(doc, node, options) {\n  var this$1 = this;\n\n  if (options) { for (var opt in options) { if (options.hasOwnProperty(opt))\n    { this$1[opt] = options[opt]; } } }\n  this.doc = doc;\n  this.node = node;\n};\n\nLineWidget.prototype.clear = function () {\n    var this$1 = this;\n\n  var cm = this.doc.cm, ws = this.line.widgets, line = this.line, no = lineNo(line);\n  if (no == null || !ws) { return }\n  for (var i = 0; i < ws.length; ++i) { if (ws[i] == this$1) { ws.splice(i--, 1); } }\n  if (!ws.length) { line.widgets = null; }\n  var height = widgetHeight(this);\n  updateLineHeight(line, Math.max(0, line.height - height));\n  if (cm) {\n    runInOp(cm, function () {\n      adjustScrollWhenAboveVisible(cm, line, -height);\n      regLineChange(cm, no, \"widget\");\n    });\n    signalLater(cm, \"lineWidgetCleared\", cm, this, no);\n  }\n};\n\nLineWidget.prototype.changed = function () {\n    var this$1 = this;\n\n  var oldH = this.height, cm = this.doc.cm, line = this.line;\n  this.height = null;\n  var diff = widgetHeight(this) - oldH;\n  if (!diff) { return }\n  updateLineHeight(line, line.height + diff);\n  if (cm) {\n    runInOp(cm, function () {\n      cm.curOp.forceUpdate = true;\n      adjustScrollWhenAboveVisible(cm, line, diff);\n      signalLater(cm, \"lineWidgetChanged\", cm, this$1, lineNo(line));\n    });\n  }\n};\neventMixin(LineWidget);\n\nfunction adjustScrollWhenAboveVisible(cm, line, diff) {\n  if (heightAtLine(line) < ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop))\n    { addToScrollPos(cm, null, diff); }\n}\n\nfunction addLineWidget(doc, handle, node, options) {\n  var widget = new LineWidget(doc, node, options);\n  var cm = doc.cm;\n  if (cm && widget.noHScroll) { cm.display.alignWidgets = true; }\n  changeLine(doc, handle, \"widget\", function (line) {\n    var widgets = line.widgets || (line.widgets = []);\n    if (widget.insertAt == null) { widgets.push(widget); }\n    else { widgets.splice(Math.min(widgets.length - 1, Math.max(0, widget.insertAt)), 0, widget); }\n    widget.line = line;\n    if (cm && !lineIsHidden(doc, line)) {\n      var aboveVisible = heightAtLine(line) < doc.scrollTop;\n      updateLineHeight(line, line.height + widgetHeight(widget));\n      if (aboveVisible) { addToScrollPos(cm, null, widget.height); }\n      cm.curOp.forceUpdate = true;\n    }\n    return true\n  });\n  signalLater(cm, \"lineWidgetAdded\", cm, widget, typeof handle == \"number\" ? handle : lineNo(handle));\n  return widget\n}\n\n// TEXTMARKERS\n\n// Created with markText and setBookmark methods. A TextMarker is a\n// handle that can be used to clear or find a marked position in the\n// document. Line objects hold arrays (markedSpans) containing\n// {from, to, marker} object pointing to such marker objects, and\n// indicating that such a marker is present on that line. Multiple\n// lines may point to the same marker when it spans across lines.\n// The spans will have null for their from/to properties when the\n// marker continues beyond the start/end of the line. Markers have\n// links back to the lines they currently touch.\n\n// Collapsed markers have unique ids, in order to be able to order\n// them, which is needed for uniquely determining an outer marker\n// when they overlap (they may nest, but not partially overlap).\nvar nextMarkerId = 0;\n\nvar TextMarker = function(doc, type) {\n  this.lines = [];\n  this.type = type;\n  this.doc = doc;\n  this.id = ++nextMarkerId;\n};\n\n// Clear the marker.\nTextMarker.prototype.clear = function () {\n    var this$1 = this;\n\n  if (this.explicitlyCleared) { return }\n  var cm = this.doc.cm, withOp = cm && !cm.curOp;\n  if (withOp) { startOperation(cm); }\n  if (hasHandler(this, \"clear\")) {\n    var found = this.find();\n    if (found) { signalLater(this, \"clear\", found.from, found.to); }\n  }\n  var min = null, max = null;\n  for (var i = 0; i < this.lines.length; ++i) {\n    var line = this$1.lines[i];\n    var span = getMarkedSpanFor(line.markedSpans, this$1);\n    if (cm && !this$1.collapsed) { regLineChange(cm, lineNo(line), \"text\"); }\n    else if (cm) {\n      if (span.to != null) { max = lineNo(line); }\n      if (span.from != null) { min = lineNo(line); }\n    }\n    line.markedSpans = removeMarkedSpan(line.markedSpans, span);\n    if (span.from == null && this$1.collapsed && !lineIsHidden(this$1.doc, line) && cm)\n      { updateLineHeight(line, textHeight(cm.display)); }\n  }\n  if (cm && this.collapsed && !cm.options.lineWrapping) { for (var i$1 = 0; i$1 < this.lines.length; ++i$1) {\n    var visual = visualLine(this$1.lines[i$1]), len = lineLength(visual);\n    if (len > cm.display.maxLineLength) {\n      cm.display.maxLine = visual;\n      cm.display.maxLineLength = len;\n      cm.display.maxLineChanged = true;\n    }\n  } }\n\n  if (min != null && cm && this.collapsed) { regChange(cm, min, max + 1); }\n  this.lines.length = 0;\n  this.explicitlyCleared = true;\n  if (this.atomic && this.doc.cantEdit) {\n    this.doc.cantEdit = false;\n    if (cm) { reCheckSelection(cm.doc); }\n  }\n  if (cm) { signalLater(cm, \"markerCleared\", cm, this, min, max); }\n  if (withOp) { endOperation(cm); }\n  if (this.parent) { this.parent.clear(); }\n};\n\n// Find the position of the marker in the document. Returns a {from,\n// to} object by default. Side can be passed to get a specific side\n// -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the\n// Pos objects returned contain a line object, rather than a line\n// number (used to prevent looking up the same line twice).\nTextMarker.prototype.find = function (side, lineObj) {\n    var this$1 = this;\n\n  if (side == null && this.type == \"bookmark\") { side = 1; }\n  var from, to;\n  for (var i = 0; i < this.lines.length; ++i) {\n    var line = this$1.lines[i];\n    var span = getMarkedSpanFor(line.markedSpans, this$1);\n    if (span.from != null) {\n      from = Pos(lineObj ? line : lineNo(line), span.from);\n      if (side == -1) { return from }\n    }\n    if (span.to != null) {\n      to = Pos(lineObj ? line : lineNo(line), span.to);\n      if (side == 1) { return to }\n    }\n  }\n  return from && {from: from, to: to}\n};\n\n// Signals that the marker's widget changed, and surrounding layout\n// should be recomputed.\nTextMarker.prototype.changed = function () {\n    var this$1 = this;\n\n  var pos = this.find(-1, true), widget = this, cm = this.doc.cm;\n  if (!pos || !cm) { return }\n  runInOp(cm, function () {\n    var line = pos.line, lineN = lineNo(pos.line);\n    var view = findViewForLine(cm, lineN);\n    if (view) {\n      clearLineMeasurementCacheFor(view);\n      cm.curOp.selectionChanged = cm.curOp.forceUpdate = true;\n    }\n    cm.curOp.updateMaxLine = true;\n    if (!lineIsHidden(widget.doc, line) && widget.height != null) {\n      var oldHeight = widget.height;\n      widget.height = null;\n      var dHeight = widgetHeight(widget) - oldHeight;\n      if (dHeight)\n        { updateLineHeight(line, line.height + dHeight); }\n    }\n    signalLater(cm, \"markerChanged\", cm, this$1);\n  });\n};\n\nTextMarker.prototype.attachLine = function (line) {\n  if (!this.lines.length && this.doc.cm) {\n    var op = this.doc.cm.curOp;\n    if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1)\n      { (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this); }\n  }\n  this.lines.push(line);\n};\n\nTextMarker.prototype.detachLine = function (line) {\n  this.lines.splice(indexOf(this.lines, line), 1);\n  if (!this.lines.length && this.doc.cm) {\n    var op = this.doc.cm.curOp;(op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this);\n  }\n};\neventMixin(TextMarker);\n\n// Create a marker, wire it up to the right lines, and\nfunction markText(doc, from, to, options, type) {\n  // Shared markers (across linked documents) are handled separately\n  // (markTextShared will call out to this again, once per\n  // document).\n  if (options && options.shared) { return markTextShared(doc, from, to, options, type) }\n  // Ensure we are in an operation.\n  if (doc.cm && !doc.cm.curOp) { return operation(doc.cm, markText)(doc, from, to, options, type) }\n\n  var marker = new TextMarker(doc, type), diff = cmp(from, to);\n  if (options) { copyObj(options, marker, false); }\n  // Don't connect empty markers unless clearWhenEmpty is false\n  if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false)\n    { return marker }\n  if (marker.replacedWith) {\n    // Showing up as a widget implies collapsed (widget replaces text)\n    marker.collapsed = true;\n    marker.widgetNode = eltP(\"span\", [marker.replacedWith], \"CodeMirror-widget\");\n    if (!options.handleMouseEvents) { marker.widgetNode.setAttribute(\"cm-ignore-events\", \"true\"); }\n    if (options.insertLeft) { marker.widgetNode.insertLeft = true; }\n  }\n  if (marker.collapsed) {\n    if (conflictingCollapsedRange(doc, from.line, from, to, marker) ||\n        from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker))\n      { throw new Error(\"Inserting collapsed marker partially overlapping an existing one\") }\n    seeCollapsedSpans();\n  }\n\n  if (marker.addToHistory)\n    { addChangeToHistory(doc, {from: from, to: to, origin: \"markText\"}, doc.sel, NaN); }\n\n  var curLine = from.line, cm = doc.cm, updateMaxLine;\n  doc.iter(curLine, to.line + 1, function (line) {\n    if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine)\n      { updateMaxLine = true; }\n    if (marker.collapsed && curLine != from.line) { updateLineHeight(line, 0); }\n    addMarkedSpan(line, new MarkedSpan(marker,\n                                       curLine == from.line ? from.ch : null,\n                                       curLine == to.line ? to.ch : null));\n    ++curLine;\n  });\n  // lineIsHidden depends on the presence of the spans, so needs a second pass\n  if (marker.collapsed) { doc.iter(from.line, to.line + 1, function (line) {\n    if (lineIsHidden(doc, line)) { updateLineHeight(line, 0); }\n  }); }\n\n  if (marker.clearOnEnter) { on(marker, \"beforeCursorEnter\", function () { return marker.clear(); }); }\n\n  if (marker.readOnly) {\n    seeReadOnlySpans();\n    if (doc.history.done.length || doc.history.undone.length)\n      { doc.clearHistory(); }\n  }\n  if (marker.collapsed) {\n    marker.id = ++nextMarkerId;\n    marker.atomic = true;\n  }\n  if (cm) {\n    // Sync editor state\n    if (updateMaxLine) { cm.curOp.updateMaxLine = true; }\n    if (marker.collapsed)\n      { regChange(cm, from.line, to.line + 1); }\n    else if (marker.className || marker.title || marker.startStyle || marker.endStyle || marker.css)\n      { for (var i = from.line; i <= to.line; i++) { regLineChange(cm, i, \"text\"); } }\n    if (marker.atomic) { reCheckSelection(cm.doc); }\n    signalLater(cm, \"markerAdded\", cm, marker);\n  }\n  return marker\n}\n\n// SHARED TEXTMARKERS\n\n// A shared marker spans multiple linked documents. It is\n// implemented as a meta-marker-object controlling multiple normal\n// markers.\nvar SharedTextMarker = function(markers, primary) {\n  var this$1 = this;\n\n  this.markers = markers;\n  this.primary = primary;\n  for (var i = 0; i < markers.length; ++i)\n    { markers[i].parent = this$1; }\n};\n\nSharedTextMarker.prototype.clear = function () {\n    var this$1 = this;\n\n  if (this.explicitlyCleared) { return }\n  this.explicitlyCleared = true;\n  for (var i = 0; i < this.markers.length; ++i)\n    { this$1.markers[i].clear(); }\n  signalLater(this, \"clear\");\n};\n\nSharedTextMarker.prototype.find = function (side, lineObj) {\n  return this.primary.find(side, lineObj)\n};\neventMixin(SharedTextMarker);\n\nfunction markTextShared(doc, from, to, options, type) {\n  options = copyObj(options);\n  options.shared = false;\n  var markers = [markText(doc, from, to, options, type)], primary = markers[0];\n  var widget = options.widgetNode;\n  linkedDocs(doc, function (doc) {\n    if (widget) { options.widgetNode = widget.cloneNode(true); }\n    markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type));\n    for (var i = 0; i < doc.linked.length; ++i)\n      { if (doc.linked[i].isParent) { return } }\n    primary = lst(markers);\n  });\n  return new SharedTextMarker(markers, primary)\n}\n\nfunction findSharedMarkers(doc) {\n  return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), function (m) { return m.parent; })\n}\n\nfunction copySharedMarkers(doc, markers) {\n  for (var i = 0; i < markers.length; i++) {\n    var marker = markers[i], pos = marker.find();\n    var mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to);\n    if (cmp(mFrom, mTo)) {\n      var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type);\n      marker.markers.push(subMark);\n      subMark.parent = marker;\n    }\n  }\n}\n\nfunction detachSharedMarkers(markers) {\n  var loop = function ( i ) {\n    var marker = markers[i], linked = [marker.primary.doc];\n    linkedDocs(marker.primary.doc, function (d) { return linked.push(d); });\n    for (var j = 0; j < marker.markers.length; j++) {\n      var subMarker = marker.markers[j];\n      if (indexOf(linked, subMarker.doc) == -1) {\n        subMarker.parent = null;\n        marker.markers.splice(j--, 1);\n      }\n    }\n  };\n\n  for (var i = 0; i < markers.length; i++) loop( i );\n}\n\nvar nextDocId = 0;\nvar Doc = function(text, mode, firstLine, lineSep, direction) {\n  if (!(this instanceof Doc)) { return new Doc(text, mode, firstLine, lineSep, direction) }\n  if (firstLine == null) { firstLine = 0; }\n\n  BranchChunk.call(this, [new LeafChunk([new Line(\"\", null)])]);\n  this.first = firstLine;\n  this.scrollTop = this.scrollLeft = 0;\n  this.cantEdit = false;\n  this.cleanGeneration = 1;\n  this.frontier = firstLine;\n  var start = Pos(firstLine, 0);\n  this.sel = simpleSelection(start);\n  this.history = new History(null);\n  this.id = ++nextDocId;\n  this.modeOption = mode;\n  this.lineSep = lineSep;\n  this.direction = (direction == \"rtl\") ? \"rtl\" : \"ltr\";\n  this.extend = false;\n\n  if (typeof text == \"string\") { text = this.splitLines(text); }\n  updateDoc(this, {from: start, to: start, text: text});\n  setSelection(this, simpleSelection(start), sel_dontScroll);\n};\n\nDoc.prototype = createObj(BranchChunk.prototype, {\n  constructor: Doc,\n  // Iterate over the document. Supports two forms -- with only one\n  // argument, it calls that for each line in the document. With\n  // three, it iterates over the range given by the first two (with\n  // the second being non-inclusive).\n  iter: function(from, to, op) {\n    if (op) { this.iterN(from - this.first, to - from, op); }\n    else { this.iterN(this.first, this.first + this.size, from); }\n  },\n\n  // Non-public interface for adding and removing lines.\n  insert: function(at, lines) {\n    var height = 0;\n    for (var i = 0; i < lines.length; ++i) { height += lines[i].height; }\n    this.insertInner(at - this.first, lines, height);\n  },\n  remove: function(at, n) { this.removeInner(at - this.first, n); },\n\n  // From here, the methods are part of the public interface. Most\n  // are also available from CodeMirror (editor) instances.\n\n  getValue: function(lineSep) {\n    var lines = getLines(this, this.first, this.first + this.size);\n    if (lineSep === false) { return lines }\n    return lines.join(lineSep || this.lineSeparator())\n  },\n  setValue: docMethodOp(function(code) {\n    var top = Pos(this.first, 0), last = this.first + this.size - 1;\n    makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length),\n                      text: this.splitLines(code), origin: \"setValue\", full: true}, true);\n    if (this.cm) { this.cm.scrollTo(0, 0); }\n    setSelection(this, simpleSelection(top), sel_dontScroll);\n  }),\n  replaceRange: function(code, from, to, origin) {\n    from = clipPos(this, from);\n    to = to ? clipPos(this, to) : from;\n    replaceRange(this, code, from, to, origin);\n  },\n  getRange: function(from, to, lineSep) {\n    var lines = getBetween(this, clipPos(this, from), clipPos(this, to));\n    if (lineSep === false) { return lines }\n    return lines.join(lineSep || this.lineSeparator())\n  },\n\n  getLine: function(line) {var l = this.getLineHandle(line); return l && l.text},\n\n  getLineHandle: function(line) {if (isLine(this, line)) { return getLine(this, line) }},\n  getLineNumber: function(line) {return lineNo(line)},\n\n  getLineHandleVisualStart: function(line) {\n    if (typeof line == \"number\") { line = getLine(this, line); }\n    return visualLine(line)\n  },\n\n  lineCount: function() {return this.size},\n  firstLine: function() {return this.first},\n  lastLine: function() {return this.first + this.size - 1},\n\n  clipPos: function(pos) {return clipPos(this, pos)},\n\n  getCursor: function(start) {\n    var range$$1 = this.sel.primary(), pos;\n    if (start == null || start == \"head\") { pos = range$$1.head; }\n    else if (start == \"anchor\") { pos = range$$1.anchor; }\n    else if (start == \"end\" || start == \"to\" || start === false) { pos = range$$1.to(); }\n    else { pos = range$$1.from(); }\n    return pos\n  },\n  listSelections: function() { return this.sel.ranges },\n  somethingSelected: function() {return this.sel.somethingSelected()},\n\n  setCursor: docMethodOp(function(line, ch, options) {\n    setSimpleSelection(this, clipPos(this, typeof line == \"number\" ? Pos(line, ch || 0) : line), null, options);\n  }),\n  setSelection: docMethodOp(function(anchor, head, options) {\n    setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options);\n  }),\n  extendSelection: docMethodOp(function(head, other, options) {\n    extendSelection(this, clipPos(this, head), other && clipPos(this, other), options);\n  }),\n  extendSelections: docMethodOp(function(heads, options) {\n    extendSelections(this, clipPosArray(this, heads), options);\n  }),\n  extendSelectionsBy: docMethodOp(function(f, options) {\n    var heads = map(this.sel.ranges, f);\n    extendSelections(this, clipPosArray(this, heads), options);\n  }),\n  setSelections: docMethodOp(function(ranges, primary, options) {\n    var this$1 = this;\n\n    if (!ranges.length) { return }\n    var out = [];\n    for (var i = 0; i < ranges.length; i++)\n      { out[i] = new Range(clipPos(this$1, ranges[i].anchor),\n                         clipPos(this$1, ranges[i].head)); }\n    if (primary == null) { primary = Math.min(ranges.length - 1, this.sel.primIndex); }\n    setSelection(this, normalizeSelection(out, primary), options);\n  }),\n  addSelection: docMethodOp(function(anchor, head, options) {\n    var ranges = this.sel.ranges.slice(0);\n    ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor)));\n    setSelection(this, normalizeSelection(ranges, ranges.length - 1), options);\n  }),\n\n  getSelection: function(lineSep) {\n    var this$1 = this;\n\n    var ranges = this.sel.ranges, lines;\n    for (var i = 0; i < ranges.length; i++) {\n      var sel = getBetween(this$1, ranges[i].from(), ranges[i].to());\n      lines = lines ? lines.concat(sel) : sel;\n    }\n    if (lineSep === false) { return lines }\n    else { return lines.join(lineSep || this.lineSeparator()) }\n  },\n  getSelections: function(lineSep) {\n    var this$1 = this;\n\n    var parts = [], ranges = this.sel.ranges;\n    for (var i = 0; i < ranges.length; i++) {\n      var sel = getBetween(this$1, ranges[i].from(), ranges[i].to());\n      if (lineSep !== false) { sel = sel.join(lineSep || this$1.lineSeparator()); }\n      parts[i] = sel;\n    }\n    return parts\n  },\n  replaceSelection: function(code, collapse, origin) {\n    var dup = [];\n    for (var i = 0; i < this.sel.ranges.length; i++)\n      { dup[i] = code; }\n    this.replaceSelections(dup, collapse, origin || \"+input\");\n  },\n  replaceSelections: docMethodOp(function(code, collapse, origin) {\n    var this$1 = this;\n\n    var changes = [], sel = this.sel;\n    for (var i = 0; i < sel.ranges.length; i++) {\n      var range$$1 = sel.ranges[i];\n      changes[i] = {from: range$$1.from(), to: range$$1.to(), text: this$1.splitLines(code[i]), origin: origin};\n    }\n    var newSel = collapse && collapse != \"end\" && computeReplacedSel(this, changes, collapse);\n    for (var i$1 = changes.length - 1; i$1 >= 0; i$1--)\n      { makeChange(this$1, changes[i$1]); }\n    if (newSel) { setSelectionReplaceHistory(this, newSel); }\n    else if (this.cm) { ensureCursorVisible(this.cm); }\n  }),\n  undo: docMethodOp(function() {makeChangeFromHistory(this, \"undo\");}),\n  redo: docMethodOp(function() {makeChangeFromHistory(this, \"redo\");}),\n  undoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"undo\", true);}),\n  redoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"redo\", true);}),\n\n  setExtending: function(val) {this.extend = val;},\n  getExtending: function() {return this.extend},\n\n  historySize: function() {\n    var hist = this.history, done = 0, undone = 0;\n    for (var i = 0; i < hist.done.length; i++) { if (!hist.done[i].ranges) { ++done; } }\n    for (var i$1 = 0; i$1 < hist.undone.length; i$1++) { if (!hist.undone[i$1].ranges) { ++undone; } }\n    return {undo: done, redo: undone}\n  },\n  clearHistory: function() {this.history = new History(this.history.maxGeneration);},\n\n  markClean: function() {\n    this.cleanGeneration = this.changeGeneration(true);\n  },\n  changeGeneration: function(forceSplit) {\n    if (forceSplit)\n      { this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null; }\n    return this.history.generation\n  },\n  isClean: function (gen) {\n    return this.history.generation == (gen || this.cleanGeneration)\n  },\n\n  getHistory: function() {\n    return {done: copyHistoryArray(this.history.done),\n            undone: copyHistoryArray(this.history.undone)}\n  },\n  setHistory: function(histData) {\n    var hist = this.history = new History(this.history.maxGeneration);\n    hist.done = copyHistoryArray(histData.done.slice(0), null, true);\n    hist.undone = copyHistoryArray(histData.undone.slice(0), null, true);\n  },\n\n  setGutterMarker: docMethodOp(function(line, gutterID, value) {\n    return changeLine(this, line, \"gutter\", function (line) {\n      var markers = line.gutterMarkers || (line.gutterMarkers = {});\n      markers[gutterID] = value;\n      if (!value && isEmpty(markers)) { line.gutterMarkers = null; }\n      return true\n    })\n  }),\n\n  clearGutter: docMethodOp(function(gutterID) {\n    var this$1 = this;\n\n    this.iter(function (line) {\n      if (line.gutterMarkers && line.gutterMarkers[gutterID]) {\n        changeLine(this$1, line, \"gutter\", function () {\n          line.gutterMarkers[gutterID] = null;\n          if (isEmpty(line.gutterMarkers)) { line.gutterMarkers = null; }\n          return true\n        });\n      }\n    });\n  }),\n\n  lineInfo: function(line) {\n    var n;\n    if (typeof line == \"number\") {\n      if (!isLine(this, line)) { return null }\n      n = line;\n      line = getLine(this, line);\n      if (!line) { return null }\n    } else {\n      n = lineNo(line);\n      if (n == null) { return null }\n    }\n    return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers,\n            textClass: line.textClass, bgClass: line.bgClass, wrapClass: line.wrapClass,\n            widgets: line.widgets}\n  },\n\n  addLineClass: docMethodOp(function(handle, where, cls) {\n    return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n      var prop = where == \"text\" ? \"textClass\"\n               : where == \"background\" ? \"bgClass\"\n               : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n      if (!line[prop]) { line[prop] = cls; }\n      else if (classTest(cls).test(line[prop])) { return false }\n      else { line[prop] += \" \" + cls; }\n      return true\n    })\n  }),\n  removeLineClass: docMethodOp(function(handle, where, cls) {\n    return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n      var prop = where == \"text\" ? \"textClass\"\n               : where == \"background\" ? \"bgClass\"\n               : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n      var cur = line[prop];\n      if (!cur) { return false }\n      else if (cls == null) { line[prop] = null; }\n      else {\n        var found = cur.match(classTest(cls));\n        if (!found) { return false }\n        var end = found.index + found[0].length;\n        line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? \"\" : \" \") + cur.slice(end) || null;\n      }\n      return true\n    })\n  }),\n\n  addLineWidget: docMethodOp(function(handle, node, options) {\n    return addLineWidget(this, handle, node, options)\n  }),\n  removeLineWidget: function(widget) { widget.clear(); },\n\n  markText: function(from, to, options) {\n    return markText(this, clipPos(this, from), clipPos(this, to), options, options && options.type || \"range\")\n  },\n  setBookmark: function(pos, options) {\n    var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options),\n                    insertLeft: options && options.insertLeft,\n                    clearWhenEmpty: false, shared: options && options.shared,\n                    handleMouseEvents: options && options.handleMouseEvents};\n    pos = clipPos(this, pos);\n    return markText(this, pos, pos, realOpts, \"bookmark\")\n  },\n  findMarksAt: function(pos) {\n    pos = clipPos(this, pos);\n    var markers = [], spans = getLine(this, pos.line).markedSpans;\n    if (spans) { for (var i = 0; i < spans.length; ++i) {\n      var span = spans[i];\n      if ((span.from == null || span.from <= pos.ch) &&\n          (span.to == null || span.to >= pos.ch))\n        { markers.push(span.marker.parent || span.marker); }\n    } }\n    return markers\n  },\n  findMarks: function(from, to, filter) {\n    from = clipPos(this, from); to = clipPos(this, to);\n    var found = [], lineNo$$1 = from.line;\n    this.iter(from.line, to.line + 1, function (line) {\n      var spans = line.markedSpans;\n      if (spans) { for (var i = 0; i < spans.length; i++) {\n        var span = spans[i];\n        if (!(span.to != null && lineNo$$1 == from.line && from.ch >= span.to ||\n              span.from == null && lineNo$$1 != from.line ||\n              span.from != null && lineNo$$1 == to.line && span.from >= to.ch) &&\n            (!filter || filter(span.marker)))\n          { found.push(span.marker.parent || span.marker); }\n      } }\n      ++lineNo$$1;\n    });\n    return found\n  },\n  getAllMarks: function() {\n    var markers = [];\n    this.iter(function (line) {\n      var sps = line.markedSpans;\n      if (sps) { for (var i = 0; i < sps.length; ++i)\n        { if (sps[i].from != null) { markers.push(sps[i].marker); } } }\n    });\n    return markers\n  },\n\n  posFromIndex: function(off) {\n    var ch, lineNo$$1 = this.first, sepSize = this.lineSeparator().length;\n    this.iter(function (line) {\n      var sz = line.text.length + sepSize;\n      if (sz > off) { ch = off; return true }\n      off -= sz;\n      ++lineNo$$1;\n    });\n    return clipPos(this, Pos(lineNo$$1, ch))\n  },\n  indexFromPos: function (coords) {\n    coords = clipPos(this, coords);\n    var index = coords.ch;\n    if (coords.line < this.first || coords.ch < 0) { return 0 }\n    var sepSize = this.lineSeparator().length;\n    this.iter(this.first, coords.line, function (line) { // iter aborts when callback returns a truthy value\n      index += line.text.length + sepSize;\n    });\n    return index\n  },\n\n  copy: function(copyHistory) {\n    var doc = new Doc(getLines(this, this.first, this.first + this.size),\n                      this.modeOption, this.first, this.lineSep, this.direction);\n    doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft;\n    doc.sel = this.sel;\n    doc.extend = false;\n    if (copyHistory) {\n      doc.history.undoDepth = this.history.undoDepth;\n      doc.setHistory(this.getHistory());\n    }\n    return doc\n  },\n\n  linkedDoc: function(options) {\n    if (!options) { options = {}; }\n    var from = this.first, to = this.first + this.size;\n    if (options.from != null && options.from > from) { from = options.from; }\n    if (options.to != null && options.to < to) { to = options.to; }\n    var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep, this.direction);\n    if (options.sharedHist) { copy.history = this.history\n    ; }(this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist});\n    copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}];\n    copySharedMarkers(copy, findSharedMarkers(this));\n    return copy\n  },\n  unlinkDoc: function(other) {\n    var this$1 = this;\n\n    if (other instanceof CodeMirror$1) { other = other.doc; }\n    if (this.linked) { for (var i = 0; i < this.linked.length; ++i) {\n      var link = this$1.linked[i];\n      if (link.doc != other) { continue }\n      this$1.linked.splice(i, 1);\n      other.unlinkDoc(this$1);\n      detachSharedMarkers(findSharedMarkers(this$1));\n      break\n    } }\n    // If the histories were shared, split them again\n    if (other.history == this.history) {\n      var splitIds = [other.id];\n      linkedDocs(other, function (doc) { return splitIds.push(doc.id); }, true);\n      other.history = new History(null);\n      other.history.done = copyHistoryArray(this.history.done, splitIds);\n      other.history.undone = copyHistoryArray(this.history.undone, splitIds);\n    }\n  },\n  iterLinkedDocs: function(f) {linkedDocs(this, f);},\n\n  getMode: function() {return this.mode},\n  getEditor: function() {return this.cm},\n\n  splitLines: function(str) {\n    if (this.lineSep) { return str.split(this.lineSep) }\n    return splitLinesAuto(str)\n  },\n  lineSeparator: function() { return this.lineSep || \"\\n\" },\n\n  setDirection: docMethodOp(function (dir) {\n    if (dir != \"rtl\") { dir = \"ltr\"; }\n    if (dir == this.direction) { return }\n    this.direction = dir;\n    this.iter(function (line) { return line.order = null; });\n    if (this.cm) { directionChanged(this.cm); }\n  })\n});\n\n// Public alias.\nDoc.prototype.eachLine = Doc.prototype.iter;\n\n// Kludge to work around strange IE behavior where it'll sometimes\n// re-fire a series of drag-related events right after the drop (#1551)\nvar lastDrop = 0;\n\nfunction onDrop(e) {\n  var cm = this;\n  clearDragCursor(cm);\n  if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e))\n    { return }\n  e_preventDefault(e);\n  if (ie) { lastDrop = +new Date; }\n  var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files;\n  if (!pos || cm.isReadOnly()) { return }\n  // Might be a file drop, in which case we simply extract the text\n  // and insert it.\n  if (files && files.length && window.FileReader && window.File) {\n    var n = files.length, text = Array(n), read = 0;\n    var loadFile = function (file, i) {\n      if (cm.options.allowDropFileTypes &&\n          indexOf(cm.options.allowDropFileTypes, file.type) == -1)\n        { return }\n\n      var reader = new FileReader;\n      reader.onload = operation(cm, function () {\n        var content = reader.result;\n        if (/[\\x00-\\x08\\x0e-\\x1f]{2}/.test(content)) { content = \"\"; }\n        text[i] = content;\n        if (++read == n) {\n          pos = clipPos(cm.doc, pos);\n          var change = {from: pos, to: pos,\n                        text: cm.doc.splitLines(text.join(cm.doc.lineSeparator())),\n                        origin: \"paste\"};\n          makeChange(cm.doc, change);\n          setSelectionReplaceHistory(cm.doc, simpleSelection(pos, changeEnd(change)));\n        }\n      });\n      reader.readAsText(file);\n    };\n    for (var i = 0; i < n; ++i) { loadFile(files[i], i); }\n  } else { // Normal drop\n    // Don't do a replace if the drop happened inside of the selected text.\n    if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) {\n      cm.state.draggingText(e);\n      // Ensure the editor is re-focused\n      setTimeout(function () { return cm.display.input.focus(); }, 20);\n      return\n    }\n    try {\n      var text$1 = e.dataTransfer.getData(\"Text\");\n      if (text$1) {\n        var selected;\n        if (cm.state.draggingText && !cm.state.draggingText.copy)\n          { selected = cm.listSelections(); }\n        setSelectionNoUndo(cm.doc, simpleSelection(pos, pos));\n        if (selected) { for (var i$1 = 0; i$1 < selected.length; ++i$1)\n          { replaceRange(cm.doc, \"\", selected[i$1].anchor, selected[i$1].head, \"drag\"); } }\n        cm.replaceSelection(text$1, \"around\", \"paste\");\n        cm.display.input.focus();\n      }\n    }\n    catch(e){}\n  }\n}\n\nfunction onDragStart(cm, e) {\n  if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return }\n  if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) { return }\n\n  e.dataTransfer.setData(\"Text\", cm.getSelection());\n  e.dataTransfer.effectAllowed = \"copyMove\";\n\n  // Use dummy image instead of default browsers image.\n  // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there.\n  if (e.dataTransfer.setDragImage && !safari) {\n    var img = elt(\"img\", null, null, \"position: fixed; left: 0; top: 0;\");\n    img.src = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n    if (presto) {\n      img.width = img.height = 1;\n      cm.display.wrapper.appendChild(img);\n      // Force a relayout, or Opera won't use our image for some obscure reason\n      img._top = img.offsetTop;\n    }\n    e.dataTransfer.setDragImage(img, 0, 0);\n    if (presto) { img.parentNode.removeChild(img); }\n  }\n}\n\nfunction onDragOver(cm, e) {\n  var pos = posFromMouse(cm, e);\n  if (!pos) { return }\n  var frag = document.createDocumentFragment();\n  drawSelectionCursor(cm, pos, frag);\n  if (!cm.display.dragCursor) {\n    cm.display.dragCursor = elt(\"div\", null, \"CodeMirror-cursors CodeMirror-dragcursors\");\n    cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv);\n  }\n  removeChildrenAndAdd(cm.display.dragCursor, frag);\n}\n\nfunction clearDragCursor(cm) {\n  if (cm.display.dragCursor) {\n    cm.display.lineSpace.removeChild(cm.display.dragCursor);\n    cm.display.dragCursor = null;\n  }\n}\n\n// These must be handled carefully, because naively registering a\n// handler for each editor will cause the editors to never be\n// garbage collected.\n\nfunction forEachCodeMirror(f) {\n  if (!document.body.getElementsByClassName) { return }\n  var byClass = document.body.getElementsByClassName(\"CodeMirror\");\n  for (var i = 0; i < byClass.length; i++) {\n    var cm = byClass[i].CodeMirror;\n    if (cm) { f(cm); }\n  }\n}\n\nvar globalsRegistered = false;\nfunction ensureGlobalHandlers() {\n  if (globalsRegistered) { return }\n  registerGlobalHandlers();\n  globalsRegistered = true;\n}\nfunction registerGlobalHandlers() {\n  // When the window resizes, we need to refresh active editors.\n  var resizeTimer;\n  on(window, \"resize\", function () {\n    if (resizeTimer == null) { resizeTimer = setTimeout(function () {\n      resizeTimer = null;\n      forEachCodeMirror(onResize);\n    }, 100); }\n  });\n  // When the window loses focus, we want to show the editor as blurred\n  on(window, \"blur\", function () { return forEachCodeMirror(onBlur); });\n}\n// Called when the window resizes\nfunction onResize(cm) {\n  var d = cm.display;\n  if (d.lastWrapHeight == d.wrapper.clientHeight && d.lastWrapWidth == d.wrapper.clientWidth)\n    { return }\n  // Might be a text scaling operation, clear size caches.\n  d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n  d.scrollbarsClipped = false;\n  cm.setSize();\n}\n\nvar keyNames = {\n  3: \"Enter\", 8: \"Backspace\", 9: \"Tab\", 13: \"Enter\", 16: \"Shift\", 17: \"Ctrl\", 18: \"Alt\",\n  19: \"Pause\", 20: \"CapsLock\", 27: \"Esc\", 32: \"Space\", 33: \"PageUp\", 34: \"PageDown\", 35: \"End\",\n  36: \"Home\", 37: \"Left\", 38: \"Up\", 39: \"Right\", 40: \"Down\", 44: \"PrintScrn\", 45: \"Insert\",\n  46: \"Delete\", 59: \";\", 61: \"=\", 91: \"Mod\", 92: \"Mod\", 93: \"Mod\",\n  106: \"*\", 107: \"=\", 109: \"-\", 110: \".\", 111: \"/\", 127: \"Delete\",\n  173: \"-\", 186: \";\", 187: \"=\", 188: \",\", 189: \"-\", 190: \".\", 191: \"/\", 192: \"`\", 219: \"[\", 220: \"\\\\\",\n  221: \"]\", 222: \"'\", 63232: \"Up\", 63233: \"Down\", 63234: \"Left\", 63235: \"Right\", 63272: \"Delete\",\n  63273: \"Home\", 63275: \"End\", 63276: \"PageUp\", 63277: \"PageDown\", 63302: \"Insert\"\n};\n\n// Number keys\nfor (var i = 0; i < 10; i++) { keyNames[i + 48] = keyNames[i + 96] = String(i); }\n// Alphabetic keys\nfor (var i$1 = 65; i$1 <= 90; i$1++) { keyNames[i$1] = String.fromCharCode(i$1); }\n// Function keys\nfor (var i$2 = 1; i$2 <= 12; i$2++) { keyNames[i$2 + 111] = keyNames[i$2 + 63235] = \"F\" + i$2; }\n\nvar keyMap = {};\n\nkeyMap.basic = {\n  \"Left\": \"goCharLeft\", \"Right\": \"goCharRight\", \"Up\": \"goLineUp\", \"Down\": \"goLineDown\",\n  \"End\": \"goLineEnd\", \"Home\": \"goLineStartSmart\", \"PageUp\": \"goPageUp\", \"PageDown\": \"goPageDown\",\n  \"Delete\": \"delCharAfter\", \"Backspace\": \"delCharBefore\", \"Shift-Backspace\": \"delCharBefore\",\n  \"Tab\": \"defaultTab\", \"Shift-Tab\": \"indentAuto\",\n  \"Enter\": \"newlineAndIndent\", \"Insert\": \"toggleOverwrite\",\n  \"Esc\": \"singleSelection\"\n};\n// Note that the save and find-related commands aren't defined by\n// default. User code or addons can define them. Unknown commands\n// are simply ignored.\nkeyMap.pcDefault = {\n  \"Ctrl-A\": \"selectAll\", \"Ctrl-D\": \"deleteLine\", \"Ctrl-Z\": \"undo\", \"Shift-Ctrl-Z\": \"redo\", \"Ctrl-Y\": \"redo\",\n  \"Ctrl-Home\": \"goDocStart\", \"Ctrl-End\": \"goDocEnd\", \"Ctrl-Up\": \"goLineUp\", \"Ctrl-Down\": \"goLineDown\",\n  \"Ctrl-Left\": \"goGroupLeft\", \"Ctrl-Right\": \"goGroupRight\", \"Alt-Left\": \"goLineStart\", \"Alt-Right\": \"goLineEnd\",\n  \"Ctrl-Backspace\": \"delGroupBefore\", \"Ctrl-Delete\": \"delGroupAfter\", \"Ctrl-S\": \"save\", \"Ctrl-F\": \"find\",\n  \"Ctrl-G\": \"findNext\", \"Shift-Ctrl-G\": \"findPrev\", \"Shift-Ctrl-F\": \"replace\", \"Shift-Ctrl-R\": \"replaceAll\",\n  \"Ctrl-[\": \"indentLess\", \"Ctrl-]\": \"indentMore\",\n  \"Ctrl-U\": \"undoSelection\", \"Shift-Ctrl-U\": \"redoSelection\", \"Alt-U\": \"redoSelection\",\n  fallthrough: \"basic\"\n};\n// Very basic readline/emacs-style bindings, which are standard on Mac.\nkeyMap.emacsy = {\n  \"Ctrl-F\": \"goCharRight\", \"Ctrl-B\": \"goCharLeft\", \"Ctrl-P\": \"goLineUp\", \"Ctrl-N\": \"goLineDown\",\n  \"Alt-F\": \"goWordRight\", \"Alt-B\": \"goWordLeft\", \"Ctrl-A\": \"goLineStart\", \"Ctrl-E\": \"goLineEnd\",\n  \"Ctrl-V\": \"goPageDown\", \"Shift-Ctrl-V\": \"goPageUp\", \"Ctrl-D\": \"delCharAfter\", \"Ctrl-H\": \"delCharBefore\",\n  \"Alt-D\": \"delWordAfter\", \"Alt-Backspace\": \"delWordBefore\", \"Ctrl-K\": \"killLine\", \"Ctrl-T\": \"transposeChars\",\n  \"Ctrl-O\": \"openLine\"\n};\nkeyMap.macDefault = {\n  \"Cmd-A\": \"selectAll\", \"Cmd-D\": \"deleteLine\", \"Cmd-Z\": \"undo\", \"Shift-Cmd-Z\": \"redo\", \"Cmd-Y\": \"redo\",\n  \"Cmd-Home\": \"goDocStart\", \"Cmd-Up\": \"goDocStart\", \"Cmd-End\": \"goDocEnd\", \"Cmd-Down\": \"goDocEnd\", \"Alt-Left\": \"goGroupLeft\",\n  \"Alt-Right\": \"goGroupRight\", \"Cmd-Left\": \"goLineLeft\", \"Cmd-Right\": \"goLineRight\", \"Alt-Backspace\": \"delGroupBefore\",\n  \"Ctrl-Alt-Backspace\": \"delGroupAfter\", \"Alt-Delete\": \"delGroupAfter\", \"Cmd-S\": \"save\", \"Cmd-F\": \"find\",\n  \"Cmd-G\": \"findNext\", \"Shift-Cmd-G\": \"findPrev\", \"Cmd-Alt-F\": \"replace\", \"Shift-Cmd-Alt-F\": \"replaceAll\",\n  \"Cmd-[\": \"indentLess\", \"Cmd-]\": \"indentMore\", \"Cmd-Backspace\": \"delWrappedLineLeft\", \"Cmd-Delete\": \"delWrappedLineRight\",\n  \"Cmd-U\": \"undoSelection\", \"Shift-Cmd-U\": \"redoSelection\", \"Ctrl-Up\": \"goDocStart\", \"Ctrl-Down\": \"goDocEnd\",\n  fallthrough: [\"basic\", \"emacsy\"]\n};\nkeyMap[\"default\"] = mac ? keyMap.macDefault : keyMap.pcDefault;\n\n// KEYMAP DISPATCH\n\nfunction normalizeKeyName(name) {\n  var parts = name.split(/-(?!$)/);\n  name = parts[parts.length - 1];\n  var alt, ctrl, shift, cmd;\n  for (var i = 0; i < parts.length - 1; i++) {\n    var mod = parts[i];\n    if (/^(cmd|meta|m)$/i.test(mod)) { cmd = true; }\n    else if (/^a(lt)?$/i.test(mod)) { alt = true; }\n    else if (/^(c|ctrl|control)$/i.test(mod)) { ctrl = true; }\n    else if (/^s(hift)?$/i.test(mod)) { shift = true; }\n    else { throw new Error(\"Unrecognized modifier name: \" + mod) }\n  }\n  if (alt) { name = \"Alt-\" + name; }\n  if (ctrl) { name = \"Ctrl-\" + name; }\n  if (cmd) { name = \"Cmd-\" + name; }\n  if (shift) { name = \"Shift-\" + name; }\n  return name\n}\n\n// This is a kludge to keep keymaps mostly working as raw objects\n// (backwards compatibility) while at the same time support features\n// like normalization and multi-stroke key bindings. It compiles a\n// new normalized keymap, and then updates the old object to reflect\n// this.\nfunction normalizeKeyMap(keymap) {\n  var copy = {};\n  for (var keyname in keymap) { if (keymap.hasOwnProperty(keyname)) {\n    var value = keymap[keyname];\n    if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) { continue }\n    if (value == \"...\") { delete keymap[keyname]; continue }\n\n    var keys = map(keyname.split(\" \"), normalizeKeyName);\n    for (var i = 0; i < keys.length; i++) {\n      var val = (void 0), name = (void 0);\n      if (i == keys.length - 1) {\n        name = keys.join(\" \");\n        val = value;\n      } else {\n        name = keys.slice(0, i + 1).join(\" \");\n        val = \"...\";\n      }\n      var prev = copy[name];\n      if (!prev) { copy[name] = val; }\n      else if (prev != val) { throw new Error(\"Inconsistent bindings for \" + name) }\n    }\n    delete keymap[keyname];\n  } }\n  for (var prop in copy) { keymap[prop] = copy[prop]; }\n  return keymap\n}\n\nfunction lookupKey(key, map$$1, handle, context) {\n  map$$1 = getKeyMap(map$$1);\n  var found = map$$1.call ? map$$1.call(key, context) : map$$1[key];\n  if (found === false) { return \"nothing\" }\n  if (found === \"...\") { return \"multi\" }\n  if (found != null && handle(found)) { return \"handled\" }\n\n  if (map$$1.fallthrough) {\n    if (Object.prototype.toString.call(map$$1.fallthrough) != \"[object Array]\")\n      { return lookupKey(key, map$$1.fallthrough, handle, context) }\n    for (var i = 0; i < map$$1.fallthrough.length; i++) {\n      var result = lookupKey(key, map$$1.fallthrough[i], handle, context);\n      if (result) { return result }\n    }\n  }\n}\n\n// Modifier key presses don't count as 'real' key presses for the\n// purpose of keymap fallthrough.\nfunction isModifierKey(value) {\n  var name = typeof value == \"string\" ? value : keyNames[value.keyCode];\n  return name == \"Ctrl\" || name == \"Alt\" || name == \"Shift\" || name == \"Mod\"\n}\n\n// Look up the name of a key as indicated by an event object.\nfunction keyName(event, noShift) {\n  if (presto && event.keyCode == 34 && event[\"char\"]) { return false }\n  var base = keyNames[event.keyCode], name = base;\n  if (name == null || event.altGraphKey) { return false }\n  if (event.altKey && base != \"Alt\") { name = \"Alt-\" + name; }\n  if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != \"Ctrl\") { name = \"Ctrl-\" + name; }\n  if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != \"Cmd\") { name = \"Cmd-\" + name; }\n  if (!noShift && event.shiftKey && base != \"Shift\") { name = \"Shift-\" + name; }\n  return name\n}\n\nfunction getKeyMap(val) {\n  return typeof val == \"string\" ? keyMap[val] : val\n}\n\n// Helper for deleting text near the selection(s), used to implement\n// backspace, delete, and similar functionality.\nfunction deleteNearSelection(cm, compute) {\n  var ranges = cm.doc.sel.ranges, kill = [];\n  // Build up a set of ranges to kill first, merging overlapping\n  // ranges.\n  for (var i = 0; i < ranges.length; i++) {\n    var toKill = compute(ranges[i]);\n    while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) {\n      var replaced = kill.pop();\n      if (cmp(replaced.from, toKill.from) < 0) {\n        toKill.from = replaced.from;\n        break\n      }\n    }\n    kill.push(toKill);\n  }\n  // Next, remove those actual ranges.\n  runInOp(cm, function () {\n    for (var i = kill.length - 1; i >= 0; i--)\n      { replaceRange(cm.doc, \"\", kill[i].from, kill[i].to, \"+delete\"); }\n    ensureCursorVisible(cm);\n  });\n}\n\n// Commands are parameter-less actions that can be performed on an\n// editor, mostly used for keybindings.\nvar commands = {\n  selectAll: selectAll,\n  singleSelection: function (cm) { return cm.setSelection(cm.getCursor(\"anchor\"), cm.getCursor(\"head\"), sel_dontScroll); },\n  killLine: function (cm) { return deleteNearSelection(cm, function (range) {\n    if (range.empty()) {\n      var len = getLine(cm.doc, range.head.line).text.length;\n      if (range.head.ch == len && range.head.line < cm.lastLine())\n        { return {from: range.head, to: Pos(range.head.line + 1, 0)} }\n      else\n        { return {from: range.head, to: Pos(range.head.line, len)} }\n    } else {\n      return {from: range.from(), to: range.to()}\n    }\n  }); },\n  deleteLine: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n    from: Pos(range.from().line, 0),\n    to: clipPos(cm.doc, Pos(range.to().line + 1, 0))\n  }); }); },\n  delLineLeft: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n    from: Pos(range.from().line, 0), to: range.from()\n  }); }); },\n  delWrappedLineLeft: function (cm) { return deleteNearSelection(cm, function (range) {\n    var top = cm.charCoords(range.head, \"div\").top + 5;\n    var leftPos = cm.coordsChar({left: 0, top: top}, \"div\");\n    return {from: leftPos, to: range.from()}\n  }); },\n  delWrappedLineRight: function (cm) { return deleteNearSelection(cm, function (range) {\n    var top = cm.charCoords(range.head, \"div\").top + 5;\n    var rightPos = cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\");\n    return {from: range.from(), to: rightPos }\n  }); },\n  undo: function (cm) { return cm.undo(); },\n  redo: function (cm) { return cm.redo(); },\n  undoSelection: function (cm) { return cm.undoSelection(); },\n  redoSelection: function (cm) { return cm.redoSelection(); },\n  goDocStart: function (cm) { return cm.extendSelection(Pos(cm.firstLine(), 0)); },\n  goDocEnd: function (cm) { return cm.extendSelection(Pos(cm.lastLine())); },\n  goLineStart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStart(cm, range.head.line); },\n    {origin: \"+move\", bias: 1}\n  ); },\n  goLineStartSmart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStartSmart(cm, range.head); },\n    {origin: \"+move\", bias: 1}\n  ); },\n  goLineEnd: function (cm) { return cm.extendSelectionsBy(function (range) { return lineEnd(cm, range.head.line); },\n    {origin: \"+move\", bias: -1}\n  ); },\n  goLineRight: function (cm) { return cm.extendSelectionsBy(function (range) {\n    var top = cm.charCoords(range.head, \"div\").top + 5;\n    return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\")\n  }, sel_move); },\n  goLineLeft: function (cm) { return cm.extendSelectionsBy(function (range) {\n    var top = cm.charCoords(range.head, \"div\").top + 5;\n    return cm.coordsChar({left: 0, top: top}, \"div\")\n  }, sel_move); },\n  goLineLeftSmart: function (cm) { return cm.extendSelectionsBy(function (range) {\n    var top = cm.charCoords(range.head, \"div\").top + 5;\n    var pos = cm.coordsChar({left: 0, top: top}, \"div\");\n    if (pos.ch < cm.getLine(pos.line).search(/\\S/)) { return lineStartSmart(cm, range.head) }\n    return pos\n  }, sel_move); },\n  goLineUp: function (cm) { return cm.moveV(-1, \"line\"); },\n  goLineDown: function (cm) { return cm.moveV(1, \"line\"); },\n  goPageUp: function (cm) { return cm.moveV(-1, \"page\"); },\n  goPageDown: function (cm) { return cm.moveV(1, \"page\"); },\n  goCharLeft: function (cm) { return cm.moveH(-1, \"char\"); },\n  goCharRight: function (cm) { return cm.moveH(1, \"char\"); },\n  goColumnLeft: function (cm) { return cm.moveH(-1, \"column\"); },\n  goColumnRight: function (cm) { return cm.moveH(1, \"column\"); },\n  goWordLeft: function (cm) { return cm.moveH(-1, \"word\"); },\n  goGroupRight: function (cm) { return cm.moveH(1, \"group\"); },\n  goGroupLeft: function (cm) { return cm.moveH(-1, \"group\"); },\n  goWordRight: function (cm) { return cm.moveH(1, \"word\"); },\n  delCharBefore: function (cm) { return cm.deleteH(-1, \"char\"); },\n  delCharAfter: function (cm) { return cm.deleteH(1, \"char\"); },\n  delWordBefore: function (cm) { return cm.deleteH(-1, \"word\"); },\n  delWordAfter: function (cm) { return cm.deleteH(1, \"word\"); },\n  delGroupBefore: function (cm) { return cm.deleteH(-1, \"group\"); },\n  delGroupAfter: function (cm) { return cm.deleteH(1, \"group\"); },\n  indentAuto: function (cm) { return cm.indentSelection(\"smart\"); },\n  indentMore: function (cm) { return cm.indentSelection(\"add\"); },\n  indentLess: function (cm) { return cm.indentSelection(\"subtract\"); },\n  insertTab: function (cm) { return cm.replaceSelection(\"\\t\"); },\n  insertSoftTab: function (cm) {\n    var spaces = [], ranges = cm.listSelections(), tabSize = cm.options.tabSize;\n    for (var i = 0; i < ranges.length; i++) {\n      var pos = ranges[i].from();\n      var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize);\n      spaces.push(spaceStr(tabSize - col % tabSize));\n    }\n    cm.replaceSelections(spaces);\n  },\n  defaultTab: function (cm) {\n    if (cm.somethingSelected()) { cm.indentSelection(\"add\"); }\n    else { cm.execCommand(\"insertTab\"); }\n  },\n  // Swap the two chars left and right of each selection's head.\n  // Move cursor behind the two swapped characters afterwards.\n  //\n  // Doesn't consider line feeds a character.\n  // Doesn't scan more than one line above to find a character.\n  // Doesn't do anything on an empty line.\n  // Doesn't do anything with non-empty selections.\n  transposeChars: function (cm) { return runInOp(cm, function () {\n    var ranges = cm.listSelections(), newSel = [];\n    for (var i = 0; i < ranges.length; i++) {\n      if (!ranges[i].empty()) { continue }\n      var cur = ranges[i].head, line = getLine(cm.doc, cur.line).text;\n      if (line) {\n        if (cur.ch == line.length) { cur = new Pos(cur.line, cur.ch - 1); }\n        if (cur.ch > 0) {\n          cur = new Pos(cur.line, cur.ch + 1);\n          cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2),\n                          Pos(cur.line, cur.ch - 2), cur, \"+transpose\");\n        } else if (cur.line > cm.doc.first) {\n          var prev = getLine(cm.doc, cur.line - 1).text;\n          if (prev) {\n            cur = new Pos(cur.line, 1);\n            cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() +\n                            prev.charAt(prev.length - 1),\n                            Pos(cur.line - 1, prev.length - 1), cur, \"+transpose\");\n          }\n        }\n      }\n      newSel.push(new Range(cur, cur));\n    }\n    cm.setSelections(newSel);\n  }); },\n  newlineAndIndent: function (cm) { return runInOp(cm, function () {\n    var sels = cm.listSelections();\n    for (var i = sels.length - 1; i >= 0; i--)\n      { cm.replaceRange(cm.doc.lineSeparator(), sels[i].anchor, sels[i].head, \"+input\"); }\n    sels = cm.listSelections();\n    for (var i$1 = 0; i$1 < sels.length; i$1++)\n      { cm.indentLine(sels[i$1].from().line, null, true); }\n    ensureCursorVisible(cm);\n  }); },\n  openLine: function (cm) { return cm.replaceSelection(\"\\n\", \"start\"); },\n  toggleOverwrite: function (cm) { return cm.toggleOverwrite(); }\n};\n\n\nfunction lineStart(cm, lineN) {\n  var line = getLine(cm.doc, lineN);\n  var visual = visualLine(line);\n  if (visual != line) { lineN = lineNo(visual); }\n  return endOfLine(true, cm, visual, lineN, 1)\n}\nfunction lineEnd(cm, lineN) {\n  var line = getLine(cm.doc, lineN);\n  var visual = visualLineEnd(line);\n  if (visual != line) { lineN = lineNo(visual); }\n  return endOfLine(true, cm, line, lineN, -1)\n}\nfunction lineStartSmart(cm, pos) {\n  var start = lineStart(cm, pos.line);\n  var line = getLine(cm.doc, start.line);\n  var order = getOrder(line, cm.doc.direction);\n  if (!order || order[0].level == 0) {\n    var firstNonWS = Math.max(0, line.text.search(/\\S/));\n    var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch;\n    return Pos(start.line, inWS ? 0 : firstNonWS, start.sticky)\n  }\n  return start\n}\n\n// Run a handler that was bound to a key.\nfunction doHandleBinding(cm, bound, dropShift) {\n  if (typeof bound == \"string\") {\n    bound = commands[bound];\n    if (!bound) { return false }\n  }\n  // Ensure previous input has been read, so that the handler sees a\n  // consistent view of the document\n  cm.display.input.ensurePolled();\n  var prevShift = cm.display.shift, done = false;\n  try {\n    if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n    if (dropShift) { cm.display.shift = false; }\n    done = bound(cm) != Pass;\n  } finally {\n    cm.display.shift = prevShift;\n    cm.state.suppressEdits = false;\n  }\n  return done\n}\n\nfunction lookupKeyForEditor(cm, name, handle) {\n  for (var i = 0; i < cm.state.keyMaps.length; i++) {\n    var result = lookupKey(name, cm.state.keyMaps[i], handle, cm);\n    if (result) { return result }\n  }\n  return (cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm))\n    || lookupKey(name, cm.options.keyMap, handle, cm)\n}\n\nvar stopSeq = new Delayed;\nfunction dispatchKey(cm, name, e, handle) {\n  var seq = cm.state.keySeq;\n  if (seq) {\n    if (isModifierKey(name)) { return \"handled\" }\n    stopSeq.set(50, function () {\n      if (cm.state.keySeq == seq) {\n        cm.state.keySeq = null;\n        cm.display.input.reset();\n      }\n    });\n    name = seq + \" \" + name;\n  }\n  var result = lookupKeyForEditor(cm, name, handle);\n\n  if (result == \"multi\")\n    { cm.state.keySeq = name; }\n  if (result == \"handled\")\n    { signalLater(cm, \"keyHandled\", cm, name, e); }\n\n  if (result == \"handled\" || result == \"multi\") {\n    e_preventDefault(e);\n    restartBlink(cm);\n  }\n\n  if (seq && !result && /\\'$/.test(name)) {\n    e_preventDefault(e);\n    return true\n  }\n  return !!result\n}\n\n// Handle a key from the keydown event.\nfunction handleKeyBinding(cm, e) {\n  var name = keyName(e, true);\n  if (!name) { return false }\n\n  if (e.shiftKey && !cm.state.keySeq) {\n    // First try to resolve full name (including 'Shift-'). Failing\n    // that, see if there is a cursor-motion command (starting with\n    // 'go') bound to the keyname without 'Shift-'.\n    return dispatchKey(cm, \"Shift-\" + name, e, function (b) { return doHandleBinding(cm, b, true); })\n        || dispatchKey(cm, name, e, function (b) {\n             if (typeof b == \"string\" ? /^go[A-Z]/.test(b) : b.motion)\n               { return doHandleBinding(cm, b) }\n           })\n  } else {\n    return dispatchKey(cm, name, e, function (b) { return doHandleBinding(cm, b); })\n  }\n}\n\n// Handle a key from the keypress event\nfunction handleCharBinding(cm, e, ch) {\n  return dispatchKey(cm, \"'\" + ch + \"'\", e, function (b) { return doHandleBinding(cm, b, true); })\n}\n\nvar lastStoppedKey = null;\nfunction onKeyDown(e) {\n  var cm = this;\n  cm.curOp.focus = activeElt();\n  if (signalDOMEvent(cm, e)) { return }\n  // IE does strange things with escape.\n  if (ie && ie_version < 11 && e.keyCode == 27) { e.returnValue = false; }\n  var code = e.keyCode;\n  cm.display.shift = code == 16 || e.shiftKey;\n  var handled = handleKeyBinding(cm, e);\n  if (presto) {\n    lastStoppedKey = handled ? code : null;\n    // Opera has no cut event... we try to at least catch the key combo\n    if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey))\n      { cm.replaceSelection(\"\", null, \"cut\"); }\n  }\n\n  // Turn mouse into crosshair when Alt is held on Mac.\n  if (code == 18 && !/\\bCodeMirror-crosshair\\b/.test(cm.display.lineDiv.className))\n    { showCrossHair(cm); }\n}\n\nfunction showCrossHair(cm) {\n  var lineDiv = cm.display.lineDiv;\n  addClass(lineDiv, \"CodeMirror-crosshair\");\n\n  function up(e) {\n    if (e.keyCode == 18 || !e.altKey) {\n      rmClass(lineDiv, \"CodeMirror-crosshair\");\n      off(document, \"keyup\", up);\n      off(document, \"mouseover\", up);\n    }\n  }\n  on(document, \"keyup\", up);\n  on(document, \"mouseover\", up);\n}\n\nfunction onKeyUp(e) {\n  if (e.keyCode == 16) { this.doc.sel.shift = false; }\n  signalDOMEvent(this, e);\n}\n\nfunction onKeyPress(e) {\n  var cm = this;\n  if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) { return }\n  var keyCode = e.keyCode, charCode = e.charCode;\n  if (presto && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return}\n  if ((presto && (!e.which || e.which < 10)) && handleKeyBinding(cm, e)) { return }\n  var ch = String.fromCharCode(charCode == null ? keyCode : charCode);\n  // Some browsers fire keypress events for backspace\n  if (ch == \"\\x08\") { return }\n  if (handleCharBinding(cm, e, ch)) { return }\n  cm.display.input.onKeyPress(e);\n}\n\n// A mouse down can be a single click, double click, triple click,\n// start of selection drag, start of text drag, new cursor\n// (ctrl-click), rectangle drag (alt-drag), or xwin\n// middle-click-paste. Or it might be a click on something we should\n// not interfere with, such as a scrollbar or widget.\nfunction onMouseDown(e) {\n  var cm = this, display = cm.display;\n  if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) { return }\n  display.input.ensurePolled();\n  display.shift = e.shiftKey;\n\n  if (eventInWidget(display, e)) {\n    if (!webkit) {\n      // Briefly turn off draggability, to allow widgets to do\n      // normal dragging things.\n      display.scroller.draggable = false;\n      setTimeout(function () { return display.scroller.draggable = true; }, 100);\n    }\n    return\n  }\n  if (clickInGutter(cm, e)) { return }\n  var start = posFromMouse(cm, e);\n  window.focus();\n\n  switch (e_button(e)) {\n  case 1:\n    // #3261: make sure, that we're not starting a second selection\n    if (cm.state.selectingText)\n      { cm.state.selectingText(e); }\n    else if (start)\n      { leftButtonDown(cm, e, start); }\n    else if (e_target(e) == display.scroller)\n      { e_preventDefault(e); }\n    break\n  case 2:\n    if (webkit) { cm.state.lastMiddleDown = +new Date; }\n    if (start) { extendSelection(cm.doc, start); }\n    setTimeout(function () { return display.input.focus(); }, 20);\n    e_preventDefault(e);\n    break\n  case 3:\n    if (captureRightClick) { onContextMenu(cm, e); }\n    else { delayBlurEvent(cm); }\n    break\n  }\n}\n\nvar lastClick;\nvar lastDoubleClick;\nfunction leftButtonDown(cm, e, start) {\n  if (ie) { setTimeout(bind(ensureFocus, cm), 0); }\n  else { cm.curOp.focus = activeElt(); }\n\n  var now = +new Date, type;\n  if (lastDoubleClick && lastDoubleClick.time > now - 400 && cmp(lastDoubleClick.pos, start) == 0) {\n    type = \"triple\";\n  } else if (lastClick && lastClick.time > now - 400 && cmp(lastClick.pos, start) == 0) {\n    type = \"double\";\n    lastDoubleClick = {time: now, pos: start};\n  } else {\n    type = \"single\";\n    lastClick = {time: now, pos: start};\n  }\n\n  var sel = cm.doc.sel, modifier = mac ? e.metaKey : e.ctrlKey, contained;\n  if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() &&\n      type == \"single\" && (contained = sel.contains(start)) > -1 &&\n      (cmp((contained = sel.ranges[contained]).from(), start) < 0 || start.xRel > 0) &&\n      (cmp(contained.to(), start) > 0 || start.xRel < 0))\n    { leftButtonStartDrag(cm, e, start, modifier); }\n  else\n    { leftButtonSelect(cm, e, start, type, modifier); }\n}\n\n// Start a text drag. When it ends, see if any dragging actually\n// happen, and treat as a click if it didn't.\nfunction leftButtonStartDrag(cm, e, start, modifier) {\n  var display = cm.display, moved = false;\n  var dragEnd = operation(cm, function (e) {\n    if (webkit) { display.scroller.draggable = false; }\n    cm.state.draggingText = false;\n    off(document, \"mouseup\", dragEnd);\n    off(document, \"mousemove\", mouseMove);\n    off(display.scroller, \"dragstart\", dragStart);\n    off(display.scroller, \"drop\", dragEnd);\n    if (!moved) {\n      e_preventDefault(e);\n      if (!modifier)\n        { extendSelection(cm.doc, start); }\n      // Work around unexplainable focus problem in IE9 (#2127) and Chrome (#3081)\n      if (webkit || ie && ie_version == 9)\n        { setTimeout(function () {document.body.focus(); display.input.focus();}, 20); }\n      else\n        { display.input.focus(); }\n    }\n  });\n  var mouseMove = function(e2) {\n    moved = moved || Math.abs(e.clientX - e2.clientX) + Math.abs(e.clientY - e2.clientY) >= 10;\n  };\n  var dragStart = function () { return moved = true; };\n  // Let the drag handler handle this.\n  if (webkit) { display.scroller.draggable = true; }\n  cm.state.draggingText = dragEnd;\n  dragEnd.copy = mac ? e.altKey : e.ctrlKey;\n  // IE's approach to draggable\n  if (display.scroller.dragDrop) { display.scroller.dragDrop(); }\n  on(document, \"mouseup\", dragEnd);\n  on(document, \"mousemove\", mouseMove);\n  on(display.scroller, \"dragstart\", dragStart);\n  on(display.scroller, \"drop\", dragEnd);\n\n  delayBlurEvent(cm);\n  setTimeout(function () { return display.input.focus(); }, 20);\n}\n\n// Normal selection, as opposed to text dragging.\nfunction leftButtonSelect(cm, e, start, type, addNew) {\n  var display = cm.display, doc = cm.doc;\n  e_preventDefault(e);\n\n  var ourRange, ourIndex, startSel = doc.sel, ranges = startSel.ranges;\n  if (addNew && !e.shiftKey) {\n    ourIndex = doc.sel.contains(start);\n    if (ourIndex > -1)\n      { ourRange = ranges[ourIndex]; }\n    else\n      { ourRange = new Range(start, start); }\n  } else {\n    ourRange = doc.sel.primary();\n    ourIndex = doc.sel.primIndex;\n  }\n\n  if (chromeOS ? e.shiftKey && e.metaKey : e.altKey) {\n    type = \"rect\";\n    if (!addNew) { ourRange = new Range(start, start); }\n    start = posFromMouse(cm, e, true, true);\n    ourIndex = -1;\n  } else if (type == \"double\") {\n    var word = cm.findWordAt(start);\n    if (cm.display.shift || doc.extend)\n      { ourRange = extendRange(doc, ourRange, word.anchor, word.head); }\n    else\n      { ourRange = word; }\n  } else if (type == \"triple\") {\n    var line = new Range(Pos(start.line, 0), clipPos(doc, Pos(start.line + 1, 0)));\n    if (cm.display.shift || doc.extend)\n      { ourRange = extendRange(doc, ourRange, line.anchor, line.head); }\n    else\n      { ourRange = line; }\n  } else {\n    ourRange = extendRange(doc, ourRange, start);\n  }\n\n  if (!addNew) {\n    ourIndex = 0;\n    setSelection(doc, new Selection([ourRange], 0), sel_mouse);\n    startSel = doc.sel;\n  } else if (ourIndex == -1) {\n    ourIndex = ranges.length;\n    setSelection(doc, normalizeSelection(ranges.concat([ourRange]), ourIndex),\n                 {scroll: false, origin: \"*mouse\"});\n  } else if (ranges.length > 1 && ranges[ourIndex].empty() && type == \"single\" && !e.shiftKey) {\n    setSelection(doc, normalizeSelection(ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0),\n                 {scroll: false, origin: \"*mouse\"});\n    startSel = doc.sel;\n  } else {\n    replaceOneSelection(doc, ourIndex, ourRange, sel_mouse);\n  }\n\n  var lastPos = start;\n  function extendTo(pos) {\n    if (cmp(lastPos, pos) == 0) { return }\n    lastPos = pos;\n\n    if (type == \"rect\") {\n      var ranges = [], tabSize = cm.options.tabSize;\n      var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize);\n      var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize);\n      var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol);\n      for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line));\n           line <= end; line++) {\n        var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize);\n        if (left == right)\n          { ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos))); }\n        else if (text.length > leftPos)\n          { ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize)))); }\n      }\n      if (!ranges.length) { ranges.push(new Range(start, start)); }\n      setSelection(doc, normalizeSelection(startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex),\n                   {origin: \"*mouse\", scroll: false});\n      cm.scrollIntoView(pos);\n    } else {\n      var oldRange = ourRange;\n      var anchor = oldRange.anchor, head = pos;\n      if (type != \"single\") {\n        var range$$1;\n        if (type == \"double\")\n          { range$$1 = cm.findWordAt(pos); }\n        else\n          { range$$1 = new Range(Pos(pos.line, 0), clipPos(doc, Pos(pos.line + 1, 0))); }\n        if (cmp(range$$1.anchor, anchor) > 0) {\n          head = range$$1.head;\n          anchor = minPos(oldRange.from(), range$$1.anchor);\n        } else {\n          head = range$$1.anchor;\n          anchor = maxPos(oldRange.to(), range$$1.head);\n        }\n      }\n      var ranges$1 = startSel.ranges.slice(0);\n      ranges$1[ourIndex] = new Range(clipPos(doc, anchor), head);\n      setSelection(doc, normalizeSelection(ranges$1, ourIndex), sel_mouse);\n    }\n  }\n\n  var editorSize = display.wrapper.getBoundingClientRect();\n  // Used to ensure timeout re-tries don't fire when another extend\n  // happened in the meantime (clearTimeout isn't reliable -- at\n  // least on Chrome, the timeouts still happen even when cleared,\n  // if the clear happens after their scheduled firing time).\n  var counter = 0;\n\n  function extend(e) {\n    var curCount = ++counter;\n    var cur = posFromMouse(cm, e, true, type == \"rect\");\n    if (!cur) { return }\n    if (cmp(cur, lastPos) != 0) {\n      cm.curOp.focus = activeElt();\n      extendTo(cur);\n      var visible = visibleLines(display, doc);\n      if (cur.line >= visible.to || cur.line < visible.from)\n        { setTimeout(operation(cm, function () {if (counter == curCount) { extend(e); }}), 150); }\n    } else {\n      var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0;\n      if (outside) { setTimeout(operation(cm, function () {\n        if (counter != curCount) { return }\n        display.scroller.scrollTop += outside;\n        extend(e);\n      }), 50); }\n    }\n  }\n\n  function done(e) {\n    cm.state.selectingText = false;\n    counter = Infinity;\n    e_preventDefault(e);\n    display.input.focus();\n    off(document, \"mousemove\", move);\n    off(document, \"mouseup\", up);\n    doc.history.lastSelOrigin = null;\n  }\n\n  var move = operation(cm, function (e) {\n    if (!e_button(e)) { done(e); }\n    else { extend(e); }\n  });\n  var up = operation(cm, done);\n  cm.state.selectingText = up;\n  on(document, \"mousemove\", move);\n  on(document, \"mouseup\", up);\n}\n\n\n// Determines whether an event happened in the gutter, and fires the\n// handlers for the corresponding event.\nfunction gutterEvent(cm, e, type, prevent) {\n  var mX, mY;\n  try { mX = e.clientX; mY = e.clientY; }\n  catch(e) { return false }\n  if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) { return false }\n  if (prevent) { e_preventDefault(e); }\n\n  var display = cm.display;\n  var lineBox = display.lineDiv.getBoundingClientRect();\n\n  if (mY > lineBox.bottom || !hasHandler(cm, type)) { return e_defaultPrevented(e) }\n  mY -= lineBox.top - display.viewOffset;\n\n  for (var i = 0; i < cm.options.gutters.length; ++i) {\n    var g = display.gutters.childNodes[i];\n    if (g && g.getBoundingClientRect().right >= mX) {\n      var line = lineAtHeight(cm.doc, mY);\n      var gutter = cm.options.gutters[i];\n      signal(cm, type, cm, line, gutter, e);\n      return e_defaultPrevented(e)\n    }\n  }\n}\n\nfunction clickInGutter(cm, e) {\n  return gutterEvent(cm, e, \"gutterClick\", true)\n}\n\n// CONTEXT MENU HANDLING\n\n// To make the context menu work, we need to briefly unhide the\n// textarea (making it as unobtrusive as possible) to let the\n// right-click take effect on it.\nfunction onContextMenu(cm, e) {\n  if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) { return }\n  if (signalDOMEvent(cm, e, \"contextmenu\")) { return }\n  cm.display.input.onContextMenu(e);\n}\n\nfunction contextMenuInGutter(cm, e) {\n  if (!hasHandler(cm, \"gutterContextMenu\")) { return false }\n  return gutterEvent(cm, e, \"gutterContextMenu\", false)\n}\n\nfunction themeChanged(cm) {\n  cm.display.wrapper.className = cm.display.wrapper.className.replace(/\\s*cm-s-\\S+/g, \"\") +\n    cm.options.theme.replace(/(^|\\s)\\s*/g, \" cm-s-\");\n  clearCaches(cm);\n}\n\nvar Init = {toString: function(){return \"CodeMirror.Init\"}};\n\nvar defaults = {};\nvar optionHandlers = {};\n\nfunction defineOptions(CodeMirror) {\n  var optionHandlers = CodeMirror.optionHandlers;\n\n  function option(name, deflt, handle, notOnInit) {\n    CodeMirror.defaults[name] = deflt;\n    if (handle) { optionHandlers[name] =\n      notOnInit ? function (cm, val, old) {if (old != Init) { handle(cm, val, old); }} : handle; }\n  }\n\n  CodeMirror.defineOption = option;\n\n  // Passed to option handlers when there is no old value.\n  CodeMirror.Init = Init;\n\n  // These two are, on init, called from the constructor because they\n  // have to be initialized before the editor can start at all.\n  option(\"value\", \"\", function (cm, val) { return cm.setValue(val); }, true);\n  option(\"mode\", null, function (cm, val) {\n    cm.doc.modeOption = val;\n    loadMode(cm);\n  }, true);\n\n  option(\"indentUnit\", 2, loadMode, true);\n  option(\"indentWithTabs\", false);\n  option(\"smartIndent\", true);\n  option(\"tabSize\", 4, function (cm) {\n    resetModeState(cm);\n    clearCaches(cm);\n    regChange(cm);\n  }, true);\n  option(\"lineSeparator\", null, function (cm, val) {\n    cm.doc.lineSep = val;\n    if (!val) { return }\n    var newBreaks = [], lineNo = cm.doc.first;\n    cm.doc.iter(function (line) {\n      for (var pos = 0;;) {\n        var found = line.text.indexOf(val, pos);\n        if (found == -1) { break }\n        pos = found + val.length;\n        newBreaks.push(Pos(lineNo, found));\n      }\n      lineNo++;\n    });\n    for (var i = newBreaks.length - 1; i >= 0; i--)\n      { replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length)); }\n  });\n  option(\"specialChars\", /[\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u061c\\u200b-\\u200f\\u2028\\u2029\\ufeff]/g, function (cm, val, old) {\n    cm.state.specialChars = new RegExp(val.source + (val.test(\"\\t\") ? \"\" : \"|\\t\"), \"g\");\n    if (old != Init) { cm.refresh(); }\n  });\n  option(\"specialCharPlaceholder\", defaultSpecialCharPlaceholder, function (cm) { return cm.refresh(); }, true);\n  option(\"electricChars\", true);\n  option(\"inputStyle\", mobile ? \"contenteditable\" : \"textarea\", function () {\n    throw new Error(\"inputStyle can not (yet) be changed in a running editor\") // FIXME\n  }, true);\n  option(\"spellcheck\", false, function (cm, val) { return cm.getInputField().spellcheck = val; }, true);\n  option(\"rtlMoveVisually\", !windows);\n  option(\"wholeLineUpdateBefore\", true);\n\n  option(\"theme\", \"default\", function (cm) {\n    themeChanged(cm);\n    guttersChanged(cm);\n  }, true);\n  option(\"keyMap\", \"default\", function (cm, val, old) {\n    var next = getKeyMap(val);\n    var prev = old != Init && getKeyMap(old);\n    if (prev && prev.detach) { prev.detach(cm, next); }\n    if (next.attach) { next.attach(cm, prev || null); }\n  });\n  option(\"extraKeys\", null);\n\n  option(\"lineWrapping\", false, wrappingChanged, true);\n  option(\"gutters\", [], function (cm) {\n    setGuttersForLineNumbers(cm.options);\n    guttersChanged(cm);\n  }, true);\n  option(\"fixedGutter\", true, function (cm, val) {\n    cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + \"px\" : \"0\";\n    cm.refresh();\n  }, true);\n  option(\"coverGutterNextToScrollbar\", false, function (cm) { return updateScrollbars(cm); }, true);\n  option(\"scrollbarStyle\", \"native\", function (cm) {\n    initScrollbars(cm);\n    updateScrollbars(cm);\n    cm.display.scrollbars.setScrollTop(cm.doc.scrollTop);\n    cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft);\n  }, true);\n  option(\"lineNumbers\", false, function (cm) {\n    setGuttersForLineNumbers(cm.options);\n    guttersChanged(cm);\n  }, true);\n  option(\"firstLineNumber\", 1, guttersChanged, true);\n  option(\"lineNumberFormatter\", function (integer) { return integer; }, guttersChanged, true);\n  option(\"showCursorWhenSelecting\", false, updateSelection, true);\n\n  option(\"resetSelectionOnContextMenu\", true);\n  option(\"lineWiseCopyCut\", true);\n\n  option(\"readOnly\", false, function (cm, val) {\n    if (val == \"nocursor\") {\n      onBlur(cm);\n      cm.display.input.blur();\n      cm.display.disabled = true;\n    } else {\n      cm.display.disabled = false;\n    }\n    cm.display.input.readOnlyChanged(val);\n  });\n  option(\"disableInput\", false, function (cm, val) {if (!val) { cm.display.input.reset(); }}, true);\n  option(\"dragDrop\", true, dragDropChanged);\n  option(\"allowDropFileTypes\", null);\n\n  option(\"cursorBlinkRate\", 530);\n  option(\"cursorScrollMargin\", 0);\n  option(\"cursorHeight\", 1, updateSelection, true);\n  option(\"singleCursorHeightPerLine\", true, updateSelection, true);\n  option(\"workTime\", 100);\n  option(\"workDelay\", 100);\n  option(\"flattenSpans\", true, resetModeState, true);\n  option(\"addModeClass\", false, resetModeState, true);\n  option(\"pollInterval\", 100);\n  option(\"undoDepth\", 200, function (cm, val) { return cm.doc.history.undoDepth = val; });\n  option(\"historyEventDelay\", 1250);\n  option(\"viewportMargin\", 10, function (cm) { return cm.refresh(); }, true);\n  option(\"maxHighlightLength\", 10000, resetModeState, true);\n  option(\"moveInputWithCursor\", true, function (cm, val) {\n    if (!val) { cm.display.input.resetPosition(); }\n  });\n\n  option(\"tabindex\", null, function (cm, val) { return cm.display.input.getField().tabIndex = val || \"\"; });\n  option(\"autofocus\", null);\n  option(\"direction\", \"ltr\", function (cm, val) { return cm.doc.setDirection(val); }, true);\n}\n\nfunction guttersChanged(cm) {\n  updateGutters(cm);\n  regChange(cm);\n  alignHorizontally(cm);\n}\n\nfunction dragDropChanged(cm, value, old) {\n  var wasOn = old && old != Init;\n  if (!value != !wasOn) {\n    var funcs = cm.display.dragFunctions;\n    var toggle = value ? on : off;\n    toggle(cm.display.scroller, \"dragstart\", funcs.start);\n    toggle(cm.display.scroller, \"dragenter\", funcs.enter);\n    toggle(cm.display.scroller, \"dragover\", funcs.over);\n    toggle(cm.display.scroller, \"dragleave\", funcs.leave);\n    toggle(cm.display.scroller, \"drop\", funcs.drop);\n  }\n}\n\nfunction wrappingChanged(cm) {\n  if (cm.options.lineWrapping) {\n    addClass(cm.display.wrapper, \"CodeMirror-wrap\");\n    cm.display.sizer.style.minWidth = \"\";\n    cm.display.sizerWidth = null;\n  } else {\n    rmClass(cm.display.wrapper, \"CodeMirror-wrap\");\n    findMaxLine(cm);\n  }\n  estimateLineHeights(cm);\n  regChange(cm);\n  clearCaches(cm);\n  setTimeout(function () { return updateScrollbars(cm); }, 100);\n}\n\n// A CodeMirror instance represents an editor. This is the object\n// that user code is usually dealing with.\n\nfunction CodeMirror$1(place, options) {\n  var this$1 = this;\n\n  if (!(this instanceof CodeMirror$1)) { return new CodeMirror$1(place, options) }\n\n  this.options = options = options ? copyObj(options) : {};\n  // Determine effective options based on given values and defaults.\n  copyObj(defaults, options, false);\n  setGuttersForLineNumbers(options);\n\n  var doc = options.value;\n  if (typeof doc == \"string\") { doc = new Doc(doc, options.mode, null, options.lineSeparator, options.direction); }\n  this.doc = doc;\n\n  var input = new CodeMirror$1.inputStyles[options.inputStyle](this);\n  var display = this.display = new Display(place, doc, input);\n  display.wrapper.CodeMirror = this;\n  updateGutters(this);\n  themeChanged(this);\n  if (options.lineWrapping)\n    { this.display.wrapper.className += \" CodeMirror-wrap\"; }\n  initScrollbars(this);\n\n  this.state = {\n    keyMaps: [],  // stores maps added by addKeyMap\n    overlays: [], // highlighting overlays, as added by addOverlay\n    modeGen: 0,   // bumped when mode/overlay changes, used to invalidate highlighting info\n    overwrite: false,\n    delayingBlurEvent: false,\n    focused: false,\n    suppressEdits: false, // used to disable editing during key handlers when in readOnly mode\n    pasteIncoming: false, cutIncoming: false, // help recognize paste/cut edits in input.poll\n    selectingText: false,\n    draggingText: false,\n    highlight: new Delayed(), // stores highlight worker timeout\n    keySeq: null,  // Unfinished key sequence\n    specialChars: null\n  };\n\n  if (options.autofocus && !mobile) { display.input.focus(); }\n\n  // Override magic textarea content restore that IE sometimes does\n  // on our hidden textarea on reload\n  if (ie && ie_version < 11) { setTimeout(function () { return this$1.display.input.reset(true); }, 20); }\n\n  registerEventHandlers(this);\n  ensureGlobalHandlers();\n\n  startOperation(this);\n  this.curOp.forceUpdate = true;\n  attachDoc(this, doc);\n\n  if ((options.autofocus && !mobile) || this.hasFocus())\n    { setTimeout(bind(onFocus, this), 20); }\n  else\n    { onBlur(this); }\n\n  for (var opt in optionHandlers) { if (optionHandlers.hasOwnProperty(opt))\n    { optionHandlers[opt](this$1, options[opt], Init); } }\n  maybeUpdateLineNumberWidth(this);\n  if (options.finishInit) { options.finishInit(this); }\n  for (var i = 0; i < initHooks.length; ++i) { initHooks[i](this$1); }\n  endOperation(this);\n  // Suppress optimizelegibility in Webkit, since it breaks text\n  // measuring on line wrapping boundaries.\n  if (webkit && options.lineWrapping &&\n      getComputedStyle(display.lineDiv).textRendering == \"optimizelegibility\")\n    { display.lineDiv.style.textRendering = \"auto\"; }\n}\n\n// The default configuration options.\nCodeMirror$1.defaults = defaults;\n// Functions to run when options are changed.\nCodeMirror$1.optionHandlers = optionHandlers;\n\n// Attach the necessary event handlers when initializing the editor\nfunction registerEventHandlers(cm) {\n  var d = cm.display;\n  on(d.scroller, \"mousedown\", operation(cm, onMouseDown));\n  // Older IE's will not fire a second mousedown for a double click\n  if (ie && ie_version < 11)\n    { on(d.scroller, \"dblclick\", operation(cm, function (e) {\n      if (signalDOMEvent(cm, e)) { return }\n      var pos = posFromMouse(cm, e);\n      if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) { return }\n      e_preventDefault(e);\n      var word = cm.findWordAt(pos);\n      extendSelection(cm.doc, word.anchor, word.head);\n    })); }\n  else\n    { on(d.scroller, \"dblclick\", function (e) { return signalDOMEvent(cm, e) || e_preventDefault(e); }); }\n  // Some browsers fire contextmenu *after* opening the menu, at\n  // which point we can't mess with it anymore. Context menu is\n  // handled in onMouseDown for these browsers.\n  if (!captureRightClick) { on(d.scroller, \"contextmenu\", function (e) { return onContextMenu(cm, e); }); }\n\n  // Used to suppress mouse event handling when a touch happens\n  var touchFinished, prevTouch = {end: 0};\n  function finishTouch() {\n    if (d.activeTouch) {\n      touchFinished = setTimeout(function () { return d.activeTouch = null; }, 1000);\n      prevTouch = d.activeTouch;\n      prevTouch.end = +new Date;\n    }\n  }\n  function isMouseLikeTouchEvent(e) {\n    if (e.touches.length != 1) { return false }\n    var touch = e.touches[0];\n    return touch.radiusX <= 1 && touch.radiusY <= 1\n  }\n  function farAway(touch, other) {\n    if (other.left == null) { return true }\n    var dx = other.left - touch.left, dy = other.top - touch.top;\n    return dx * dx + dy * dy > 20 * 20\n  }\n  on(d.scroller, \"touchstart\", function (e) {\n    if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e)) {\n      d.input.ensurePolled();\n      clearTimeout(touchFinished);\n      var now = +new Date;\n      d.activeTouch = {start: now, moved: false,\n                       prev: now - prevTouch.end <= 300 ? prevTouch : null};\n      if (e.touches.length == 1) {\n        d.activeTouch.left = e.touches[0].pageX;\n        d.activeTouch.top = e.touches[0].pageY;\n      }\n    }\n  });\n  on(d.scroller, \"touchmove\", function () {\n    if (d.activeTouch) { d.activeTouch.moved = true; }\n  });\n  on(d.scroller, \"touchend\", function (e) {\n    var touch = d.activeTouch;\n    if (touch && !eventInWidget(d, e) && touch.left != null &&\n        !touch.moved && new Date - touch.start < 300) {\n      var pos = cm.coordsChar(d.activeTouch, \"page\"), range;\n      if (!touch.prev || farAway(touch, touch.prev)) // Single tap\n        { range = new Range(pos, pos); }\n      else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) // Double tap\n        { range = cm.findWordAt(pos); }\n      else // Triple tap\n        { range = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))); }\n      cm.setSelection(range.anchor, range.head);\n      cm.focus();\n      e_preventDefault(e);\n    }\n    finishTouch();\n  });\n  on(d.scroller, \"touchcancel\", finishTouch);\n\n  // Sync scrolling between fake scrollbars and real scrollable\n  // area, ensure viewport is updated when scrolling.\n  on(d.scroller, \"scroll\", function () {\n    if (d.scroller.clientHeight) {\n      setScrollTop(cm, d.scroller.scrollTop);\n      setScrollLeft(cm, d.scroller.scrollLeft, true);\n      signal(cm, \"scroll\", cm);\n    }\n  });\n\n  // Listen to wheel events in order to try and update the viewport on time.\n  on(d.scroller, \"mousewheel\", function (e) { return onScrollWheel(cm, e); });\n  on(d.scroller, \"DOMMouseScroll\", function (e) { return onScrollWheel(cm, e); });\n\n  // Prevent wrapper from ever scrolling\n  on(d.wrapper, \"scroll\", function () { return d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; });\n\n  d.dragFunctions = {\n    enter: function (e) {if (!signalDOMEvent(cm, e)) { e_stop(e); }},\n    over: function (e) {if (!signalDOMEvent(cm, e)) { onDragOver(cm, e); e_stop(e); }},\n    start: function (e) { return onDragStart(cm, e); },\n    drop: operation(cm, onDrop),\n    leave: function (e) {if (!signalDOMEvent(cm, e)) { clearDragCursor(cm); }}\n  };\n\n  var inp = d.input.getField();\n  on(inp, \"keyup\", function (e) { return onKeyUp.call(cm, e); });\n  on(inp, \"keydown\", operation(cm, onKeyDown));\n  on(inp, \"keypress\", operation(cm, onKeyPress));\n  on(inp, \"focus\", function (e) { return onFocus(cm, e); });\n  on(inp, \"blur\", function (e) { return onBlur(cm, e); });\n}\n\nvar initHooks = [];\nCodeMirror$1.defineInitHook = function (f) { return initHooks.push(f); };\n\n// Indent the given line. The how parameter can be \"smart\",\n// \"add\"/null, \"subtract\", or \"prev\". When aggressive is false\n// (typically set to true for forced single-line indents), empty\n// lines are not indented, and places where the mode returns Pass\n// are left alone.\nfunction indentLine(cm, n, how, aggressive) {\n  var doc = cm.doc, state;\n  if (how == null) { how = \"add\"; }\n  if (how == \"smart\") {\n    // Fall back to \"prev\" when the mode doesn't have an indentation\n    // method.\n    if (!doc.mode.indent) { how = \"prev\"; }\n    else { state = getStateBefore(cm, n); }\n  }\n\n  var tabSize = cm.options.tabSize;\n  var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize);\n  if (line.stateAfter) { line.stateAfter = null; }\n  var curSpaceString = line.text.match(/^\\s*/)[0], indentation;\n  if (!aggressive && !/\\S/.test(line.text)) {\n    indentation = 0;\n    how = \"not\";\n  } else if (how == \"smart\") {\n    indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text);\n    if (indentation == Pass || indentation > 150) {\n      if (!aggressive) { return }\n      how = \"prev\";\n    }\n  }\n  if (how == \"prev\") {\n    if (n > doc.first) { indentation = countColumn(getLine(doc, n-1).text, null, tabSize); }\n    else { indentation = 0; }\n  } else if (how == \"add\") {\n    indentation = curSpace + cm.options.indentUnit;\n  } else if (how == \"subtract\") {\n    indentation = curSpace - cm.options.indentUnit;\n  } else if (typeof how == \"number\") {\n    indentation = curSpace + how;\n  }\n  indentation = Math.max(0, indentation);\n\n  var indentString = \"\", pos = 0;\n  if (cm.options.indentWithTabs)\n    { for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += \"\\t\";} }\n  if (pos < indentation) { indentString += spaceStr(indentation - pos); }\n\n  if (indentString != curSpaceString) {\n    replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), \"+input\");\n    line.stateAfter = null;\n    return true\n  } else {\n    // Ensure that, if the cursor was in the whitespace at the start\n    // of the line, it is moved to the end of that space.\n    for (var i$1 = 0; i$1 < doc.sel.ranges.length; i$1++) {\n      var range = doc.sel.ranges[i$1];\n      if (range.head.line == n && range.head.ch < curSpaceString.length) {\n        var pos$1 = Pos(n, curSpaceString.length);\n        replaceOneSelection(doc, i$1, new Range(pos$1, pos$1));\n        break\n      }\n    }\n  }\n}\n\n// This will be set to a {lineWise: bool, text: [string]} object, so\n// that, when pasting, we know what kind of selections the copied\n// text was made out of.\nvar lastCopied = null;\n\nfunction setLastCopied(newLastCopied) {\n  lastCopied = newLastCopied;\n}\n\nfunction applyTextInput(cm, inserted, deleted, sel, origin) {\n  var doc = cm.doc;\n  cm.display.shift = false;\n  if (!sel) { sel = doc.sel; }\n\n  var paste = cm.state.pasteIncoming || origin == \"paste\";\n  var textLines = splitLinesAuto(inserted), multiPaste = null;\n  // When pasing N lines into N selections, insert one line per selection\n  if (paste && sel.ranges.length > 1) {\n    if (lastCopied && lastCopied.text.join(\"\\n\") == inserted) {\n      if (sel.ranges.length % lastCopied.text.length == 0) {\n        multiPaste = [];\n        for (var i = 0; i < lastCopied.text.length; i++)\n          { multiPaste.push(doc.splitLines(lastCopied.text[i])); }\n      }\n    } else if (textLines.length == sel.ranges.length) {\n      multiPaste = map(textLines, function (l) { return [l]; });\n    }\n  }\n\n  var updateInput;\n  // Normal behavior is to insert the new text into every selection\n  for (var i$1 = sel.ranges.length - 1; i$1 >= 0; i$1--) {\n    var range$$1 = sel.ranges[i$1];\n    var from = range$$1.from(), to = range$$1.to();\n    if (range$$1.empty()) {\n      if (deleted && deleted > 0) // Handle deletion\n        { from = Pos(from.line, from.ch - deleted); }\n      else if (cm.state.overwrite && !paste) // Handle overwrite\n        { to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length)); }\n      else if (lastCopied && lastCopied.lineWise && lastCopied.text.join(\"\\n\") == inserted)\n        { from = to = Pos(from.line, 0); }\n    }\n    updateInput = cm.curOp.updateInput;\n    var changeEvent = {from: from, to: to, text: multiPaste ? multiPaste[i$1 % multiPaste.length] : textLines,\n                       origin: origin || (paste ? \"paste\" : cm.state.cutIncoming ? \"cut\" : \"+input\")};\n    makeChange(cm.doc, changeEvent);\n    signalLater(cm, \"inputRead\", cm, changeEvent);\n  }\n  if (inserted && !paste)\n    { triggerElectric(cm, inserted); }\n\n  ensureCursorVisible(cm);\n  cm.curOp.updateInput = updateInput;\n  cm.curOp.typing = true;\n  cm.state.pasteIncoming = cm.state.cutIncoming = false;\n}\n\nfunction handlePaste(e, cm) {\n  var pasted = e.clipboardData && e.clipboardData.getData(\"Text\");\n  if (pasted) {\n    e.preventDefault();\n    if (!cm.isReadOnly() && !cm.options.disableInput)\n      { runInOp(cm, function () { return applyTextInput(cm, pasted, 0, null, \"paste\"); }); }\n    return true\n  }\n}\n\nfunction triggerElectric(cm, inserted) {\n  // When an 'electric' character is inserted, immediately trigger a reindent\n  if (!cm.options.electricChars || !cm.options.smartIndent) { return }\n  var sel = cm.doc.sel;\n\n  for (var i = sel.ranges.length - 1; i >= 0; i--) {\n    var range$$1 = sel.ranges[i];\n    if (range$$1.head.ch > 100 || (i && sel.ranges[i - 1].head.line == range$$1.head.line)) { continue }\n    var mode = cm.getModeAt(range$$1.head);\n    var indented = false;\n    if (mode.electricChars) {\n      for (var j = 0; j < mode.electricChars.length; j++)\n        { if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) {\n          indented = indentLine(cm, range$$1.head.line, \"smart\");\n          break\n        } }\n    } else if (mode.electricInput) {\n      if (mode.electricInput.test(getLine(cm.doc, range$$1.head.line).text.slice(0, range$$1.head.ch)))\n        { indented = indentLine(cm, range$$1.head.line, \"smart\"); }\n    }\n    if (indented) { signalLater(cm, \"electricInput\", cm, range$$1.head.line); }\n  }\n}\n\nfunction copyableRanges(cm) {\n  var text = [], ranges = [];\n  for (var i = 0; i < cm.doc.sel.ranges.length; i++) {\n    var line = cm.doc.sel.ranges[i].head.line;\n    var lineRange = {anchor: Pos(line, 0), head: Pos(line + 1, 0)};\n    ranges.push(lineRange);\n    text.push(cm.getRange(lineRange.anchor, lineRange.head));\n  }\n  return {text: text, ranges: ranges}\n}\n\nfunction disableBrowserMagic(field, spellcheck) {\n  field.setAttribute(\"autocorrect\", \"off\");\n  field.setAttribute(\"autocapitalize\", \"off\");\n  field.setAttribute(\"spellcheck\", !!spellcheck);\n}\n\nfunction hiddenTextarea() {\n  var te = elt(\"textarea\", null, null, \"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none\");\n  var div = elt(\"div\", [te], null, \"overflow: hidden; position: relative; width: 3px; height: 0px;\");\n  // The textarea is kept positioned near the cursor to prevent the\n  // fact that it'll be scrolled into view on input from scrolling\n  // our fake cursor out of view. On webkit, when wrap=off, paste is\n  // very slow. So make the area wide instead.\n  if (webkit) { te.style.width = \"1000px\"; }\n  else { te.setAttribute(\"wrap\", \"off\"); }\n  // If border: 0; -- iOS fails to open keyboard (issue #1287)\n  if (ios) { te.style.border = \"1px solid black\"; }\n  disableBrowserMagic(te);\n  return div\n}\n\n// The publicly visible API. Note that methodOp(f) means\n// 'wrap f in an operation, performed on its `this` parameter'.\n\n// This is not the complete set of editor methods. Most of the\n// methods defined on the Doc type are also injected into\n// CodeMirror.prototype, for backwards compatibility and\n// convenience.\n\nvar addEditorMethods = function(CodeMirror) {\n  var optionHandlers = CodeMirror.optionHandlers;\n\n  var helpers = CodeMirror.helpers = {};\n\n  CodeMirror.prototype = {\n    constructor: CodeMirror,\n    focus: function(){window.focus(); this.display.input.focus();},\n\n    setOption: function(option, value) {\n      var options = this.options, old = options[option];\n      if (options[option] == value && option != \"mode\") { return }\n      options[option] = value;\n      if (optionHandlers.hasOwnProperty(option))\n        { operation(this, optionHandlers[option])(this, value, old); }\n      signal(this, \"optionChange\", this, option);\n    },\n\n    getOption: function(option) {return this.options[option]},\n    getDoc: function() {return this.doc},\n\n    addKeyMap: function(map$$1, bottom) {\n      this.state.keyMaps[bottom ? \"push\" : \"unshift\"](getKeyMap(map$$1));\n    },\n    removeKeyMap: function(map$$1) {\n      var maps = this.state.keyMaps;\n      for (var i = 0; i < maps.length; ++i)\n        { if (maps[i] == map$$1 || maps[i].name == map$$1) {\n          maps.splice(i, 1);\n          return true\n        } }\n    },\n\n    addOverlay: methodOp(function(spec, options) {\n      var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec);\n      if (mode.startState) { throw new Error(\"Overlays may not be stateful.\") }\n      insertSorted(this.state.overlays,\n                   {mode: mode, modeSpec: spec, opaque: options && options.opaque,\n                    priority: (options && options.priority) || 0},\n                   function (overlay) { return overlay.priority; });\n      this.state.modeGen++;\n      regChange(this);\n    }),\n    removeOverlay: methodOp(function(spec) {\n      var this$1 = this;\n\n      var overlays = this.state.overlays;\n      for (var i = 0; i < overlays.length; ++i) {\n        var cur = overlays[i].modeSpec;\n        if (cur == spec || typeof spec == \"string\" && cur.name == spec) {\n          overlays.splice(i, 1);\n          this$1.state.modeGen++;\n          regChange(this$1);\n          return\n        }\n      }\n    }),\n\n    indentLine: methodOp(function(n, dir, aggressive) {\n      if (typeof dir != \"string\" && typeof dir != \"number\") {\n        if (dir == null) { dir = this.options.smartIndent ? \"smart\" : \"prev\"; }\n        else { dir = dir ? \"add\" : \"subtract\"; }\n      }\n      if (isLine(this.doc, n)) { indentLine(this, n, dir, aggressive); }\n    }),\n    indentSelection: methodOp(function(how) {\n      var this$1 = this;\n\n      var ranges = this.doc.sel.ranges, end = -1;\n      for (var i = 0; i < ranges.length; i++) {\n        var range$$1 = ranges[i];\n        if (!range$$1.empty()) {\n          var from = range$$1.from(), to = range$$1.to();\n          var start = Math.max(end, from.line);\n          end = Math.min(this$1.lastLine(), to.line - (to.ch ? 0 : 1)) + 1;\n          for (var j = start; j < end; ++j)\n            { indentLine(this$1, j, how); }\n          var newRanges = this$1.doc.sel.ranges;\n          if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0)\n            { replaceOneSelection(this$1.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll); }\n        } else if (range$$1.head.line > end) {\n          indentLine(this$1, range$$1.head.line, how, true);\n          end = range$$1.head.line;\n          if (i == this$1.doc.sel.primIndex) { ensureCursorVisible(this$1); }\n        }\n      }\n    }),\n\n    // Fetch the parser token for a given character. Useful for hacks\n    // that want to inspect the mode state (say, for completion).\n    getTokenAt: function(pos, precise) {\n      return takeToken(this, pos, precise)\n    },\n\n    getLineTokens: function(line, precise) {\n      return takeToken(this, Pos(line), precise, true)\n    },\n\n    getTokenTypeAt: function(pos) {\n      pos = clipPos(this.doc, pos);\n      var styles = getLineStyles(this, getLine(this.doc, pos.line));\n      var before = 0, after = (styles.length - 1) / 2, ch = pos.ch;\n      var type;\n      if (ch == 0) { type = styles[2]; }\n      else { for (;;) {\n        var mid = (before + after) >> 1;\n        if ((mid ? styles[mid * 2 - 1] : 0) >= ch) { after = mid; }\n        else if (styles[mid * 2 + 1] < ch) { before = mid + 1; }\n        else { type = styles[mid * 2 + 2]; break }\n      } }\n      var cut = type ? type.indexOf(\"overlay \") : -1;\n      return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1)\n    },\n\n    getModeAt: function(pos) {\n      var mode = this.doc.mode;\n      if (!mode.innerMode) { return mode }\n      return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode\n    },\n\n    getHelper: function(pos, type) {\n      return this.getHelpers(pos, type)[0]\n    },\n\n    getHelpers: function(pos, type) {\n      var this$1 = this;\n\n      var found = [];\n      if (!helpers.hasOwnProperty(type)) { return found }\n      var help = helpers[type], mode = this.getModeAt(pos);\n      if (typeof mode[type] == \"string\") {\n        if (help[mode[type]]) { found.push(help[mode[type]]); }\n      } else if (mode[type]) {\n        for (var i = 0; i < mode[type].length; i++) {\n          var val = help[mode[type][i]];\n          if (val) { found.push(val); }\n        }\n      } else if (mode.helperType && help[mode.helperType]) {\n        found.push(help[mode.helperType]);\n      } else if (help[mode.name]) {\n        found.push(help[mode.name]);\n      }\n      for (var i$1 = 0; i$1 < help._global.length; i$1++) {\n        var cur = help._global[i$1];\n        if (cur.pred(mode, this$1) && indexOf(found, cur.val) == -1)\n          { found.push(cur.val); }\n      }\n      return found\n    },\n\n    getStateAfter: function(line, precise) {\n      var doc = this.doc;\n      line = clipLine(doc, line == null ? doc.first + doc.size - 1: line);\n      return getStateBefore(this, line + 1, precise)\n    },\n\n    cursorCoords: function(start, mode) {\n      var pos, range$$1 = this.doc.sel.primary();\n      if (start == null) { pos = range$$1.head; }\n      else if (typeof start == \"object\") { pos = clipPos(this.doc, start); }\n      else { pos = start ? range$$1.from() : range$$1.to(); }\n      return cursorCoords(this, pos, mode || \"page\")\n    },\n\n    charCoords: function(pos, mode) {\n      return charCoords(this, clipPos(this.doc, pos), mode || \"page\")\n    },\n\n    coordsChar: function(coords, mode) {\n      coords = fromCoordSystem(this, coords, mode || \"page\");\n      return coordsChar(this, coords.left, coords.top)\n    },\n\n    lineAtHeight: function(height, mode) {\n      height = fromCoordSystem(this, {top: height, left: 0}, mode || \"page\").top;\n      return lineAtHeight(this.doc, height + this.display.viewOffset)\n    },\n    heightAtLine: function(line, mode, includeWidgets) {\n      var end = false, lineObj;\n      if (typeof line == \"number\") {\n        var last = this.doc.first + this.doc.size - 1;\n        if (line < this.doc.first) { line = this.doc.first; }\n        else if (line > last) { line = last; end = true; }\n        lineObj = getLine(this.doc, line);\n      } else {\n        lineObj = line;\n      }\n      return intoCoordSystem(this, lineObj, {top: 0, left: 0}, mode || \"page\", includeWidgets || end).top +\n        (end ? this.doc.height - heightAtLine(lineObj) : 0)\n    },\n\n    defaultTextHeight: function() { return textHeight(this.display) },\n    defaultCharWidth: function() { return charWidth(this.display) },\n\n    getViewport: function() { return {from: this.display.viewFrom, to: this.display.viewTo}},\n\n    addWidget: function(pos, node, scroll, vert, horiz) {\n      var display = this.display;\n      pos = cursorCoords(this, clipPos(this.doc, pos));\n      var top = pos.bottom, left = pos.left;\n      node.style.position = \"absolute\";\n      node.setAttribute(\"cm-ignore-events\", \"true\");\n      this.display.input.setUneditable(node);\n      display.sizer.appendChild(node);\n      if (vert == \"over\") {\n        top = pos.top;\n      } else if (vert == \"above\" || vert == \"near\") {\n        var vspace = Math.max(display.wrapper.clientHeight, this.doc.height),\n        hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth);\n        // Default to positioning above (if specified and possible); otherwise default to positioning below\n        if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight)\n          { top = pos.top - node.offsetHeight; }\n        else if (pos.bottom + node.offsetHeight <= vspace)\n          { top = pos.bottom; }\n        if (left + node.offsetWidth > hspace)\n          { left = hspace - node.offsetWidth; }\n      }\n      node.style.top = top + \"px\";\n      node.style.left = node.style.right = \"\";\n      if (horiz == \"right\") {\n        left = display.sizer.clientWidth - node.offsetWidth;\n        node.style.right = \"0px\";\n      } else {\n        if (horiz == \"left\") { left = 0; }\n        else if (horiz == \"middle\") { left = (display.sizer.clientWidth - node.offsetWidth) / 2; }\n        node.style.left = left + \"px\";\n      }\n      if (scroll)\n        { scrollIntoView(this, {left: left, top: top, right: left + node.offsetWidth, bottom: top + node.offsetHeight}); }\n    },\n\n    triggerOnKeyDown: methodOp(onKeyDown),\n    triggerOnKeyPress: methodOp(onKeyPress),\n    triggerOnKeyUp: onKeyUp,\n\n    execCommand: function(cmd) {\n      if (commands.hasOwnProperty(cmd))\n        { return commands[cmd].call(null, this) }\n    },\n\n    triggerElectric: methodOp(function(text) { triggerElectric(this, text); }),\n\n    findPosH: function(from, amount, unit, visually) {\n      var this$1 = this;\n\n      var dir = 1;\n      if (amount < 0) { dir = -1; amount = -amount; }\n      var cur = clipPos(this.doc, from);\n      for (var i = 0; i < amount; ++i) {\n        cur = findPosH(this$1.doc, cur, dir, unit, visually);\n        if (cur.hitSide) { break }\n      }\n      return cur\n    },\n\n    moveH: methodOp(function(dir, unit) {\n      var this$1 = this;\n\n      this.extendSelectionsBy(function (range$$1) {\n        if (this$1.display.shift || this$1.doc.extend || range$$1.empty())\n          { return findPosH(this$1.doc, range$$1.head, dir, unit, this$1.options.rtlMoveVisually) }\n        else\n          { return dir < 0 ? range$$1.from() : range$$1.to() }\n      }, sel_move);\n    }),\n\n    deleteH: methodOp(function(dir, unit) {\n      var sel = this.doc.sel, doc = this.doc;\n      if (sel.somethingSelected())\n        { doc.replaceSelection(\"\", null, \"+delete\"); }\n      else\n        { deleteNearSelection(this, function (range$$1) {\n          var other = findPosH(doc, range$$1.head, dir, unit, false);\n          return dir < 0 ? {from: other, to: range$$1.head} : {from: range$$1.head, to: other}\n        }); }\n    }),\n\n    findPosV: function(from, amount, unit, goalColumn) {\n      var this$1 = this;\n\n      var dir = 1, x = goalColumn;\n      if (amount < 0) { dir = -1; amount = -amount; }\n      var cur = clipPos(this.doc, from);\n      for (var i = 0; i < amount; ++i) {\n        var coords = cursorCoords(this$1, cur, \"div\");\n        if (x == null) { x = coords.left; }\n        else { coords.left = x; }\n        cur = findPosV(this$1, coords, dir, unit);\n        if (cur.hitSide) { break }\n      }\n      return cur\n    },\n\n    moveV: methodOp(function(dir, unit) {\n      var this$1 = this;\n\n      var doc = this.doc, goals = [];\n      var collapse = !this.display.shift && !doc.extend && doc.sel.somethingSelected();\n      doc.extendSelectionsBy(function (range$$1) {\n        if (collapse)\n          { return dir < 0 ? range$$1.from() : range$$1.to() }\n        var headPos = cursorCoords(this$1, range$$1.head, \"div\");\n        if (range$$1.goalColumn != null) { headPos.left = range$$1.goalColumn; }\n        goals.push(headPos.left);\n        var pos = findPosV(this$1, headPos, dir, unit);\n        if (unit == \"page\" && range$$1 == doc.sel.primary())\n          { addToScrollPos(this$1, null, charCoords(this$1, pos, \"div\").top - headPos.top); }\n        return pos\n      }, sel_move);\n      if (goals.length) { for (var i = 0; i < doc.sel.ranges.length; i++)\n        { doc.sel.ranges[i].goalColumn = goals[i]; } }\n    }),\n\n    // Find the word at the given position (as returned by coordsChar).\n    findWordAt: function(pos) {\n      var doc = this.doc, line = getLine(doc, pos.line).text;\n      var start = pos.ch, end = pos.ch;\n      if (line) {\n        var helper = this.getHelper(pos, \"wordChars\");\n        if ((pos.sticky == \"before\" || end == line.length) && start) { --start; } else { ++end; }\n        var startChar = line.charAt(start);\n        var check = isWordChar(startChar, helper)\n          ? function (ch) { return isWordChar(ch, helper); }\n          : /\\s/.test(startChar) ? function (ch) { return /\\s/.test(ch); }\n          : function (ch) { return (!/\\s/.test(ch) && !isWordChar(ch)); };\n        while (start > 0 && check(line.charAt(start - 1))) { --start; }\n        while (end < line.length && check(line.charAt(end))) { ++end; }\n      }\n      return new Range(Pos(pos.line, start), Pos(pos.line, end))\n    },\n\n    toggleOverwrite: function(value) {\n      if (value != null && value == this.state.overwrite) { return }\n      if (this.state.overwrite = !this.state.overwrite)\n        { addClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n      else\n        { rmClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n\n      signal(this, \"overwriteToggle\", this, this.state.overwrite);\n    },\n    hasFocus: function() { return this.display.input.getField() == activeElt() },\n    isReadOnly: function() { return !!(this.options.readOnly || this.doc.cantEdit) },\n\n    scrollTo: methodOp(function(x, y) {\n      if (x != null || y != null) { resolveScrollToPos(this); }\n      if (x != null) { this.curOp.scrollLeft = x; }\n      if (y != null) { this.curOp.scrollTop = y; }\n    }),\n    getScrollInfo: function() {\n      var scroller = this.display.scroller;\n      return {left: scroller.scrollLeft, top: scroller.scrollTop,\n              height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight,\n              width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth,\n              clientHeight: displayHeight(this), clientWidth: displayWidth(this)}\n    },\n\n    scrollIntoView: methodOp(function(range$$1, margin) {\n      if (range$$1 == null) {\n        range$$1 = {from: this.doc.sel.primary().head, to: null};\n        if (margin == null) { margin = this.options.cursorScrollMargin; }\n      } else if (typeof range$$1 == \"number\") {\n        range$$1 = {from: Pos(range$$1, 0), to: null};\n      } else if (range$$1.from == null) {\n        range$$1 = {from: range$$1, to: null};\n      }\n      if (!range$$1.to) { range$$1.to = range$$1.from; }\n      range$$1.margin = margin || 0;\n\n      if (range$$1.from.line != null) {\n        resolveScrollToPos(this);\n        this.curOp.scrollToPos = range$$1;\n      } else {\n        var sPos = calculateScrollPos(this, {\n          left: Math.min(range$$1.from.left, range$$1.to.left),\n          top: Math.min(range$$1.from.top, range$$1.to.top) - range$$1.margin,\n          right: Math.max(range$$1.from.right, range$$1.to.right),\n          bottom: Math.max(range$$1.from.bottom, range$$1.to.bottom) + range$$1.margin\n        });\n        this.scrollTo(sPos.scrollLeft, sPos.scrollTop);\n      }\n    }),\n\n    setSize: methodOp(function(width, height) {\n      var this$1 = this;\n\n      var interpret = function (val) { return typeof val == \"number\" || /^\\d+$/.test(String(val)) ? val + \"px\" : val; };\n      if (width != null) { this.display.wrapper.style.width = interpret(width); }\n      if (height != null) { this.display.wrapper.style.height = interpret(height); }\n      if (this.options.lineWrapping) { clearLineMeasurementCache(this); }\n      var lineNo$$1 = this.display.viewFrom;\n      this.doc.iter(lineNo$$1, this.display.viewTo, function (line) {\n        if (line.widgets) { for (var i = 0; i < line.widgets.length; i++)\n          { if (line.widgets[i].noHScroll) { regLineChange(this$1, lineNo$$1, \"widget\"); break } } }\n        ++lineNo$$1;\n      });\n      this.curOp.forceUpdate = true;\n      signal(this, \"refresh\", this);\n    }),\n\n    operation: function(f){return runInOp(this, f)},\n\n    refresh: methodOp(function() {\n      var oldHeight = this.display.cachedTextHeight;\n      regChange(this);\n      this.curOp.forceUpdate = true;\n      clearCaches(this);\n      this.scrollTo(this.doc.scrollLeft, this.doc.scrollTop);\n      updateGutterSpace(this);\n      if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5)\n        { estimateLineHeights(this); }\n      signal(this, \"refresh\", this);\n    }),\n\n    swapDoc: methodOp(function(doc) {\n      var old = this.doc;\n      old.cm = null;\n      attachDoc(this, doc);\n      clearCaches(this);\n      this.display.input.reset();\n      this.scrollTo(doc.scrollLeft, doc.scrollTop);\n      this.curOp.forceScroll = true;\n      signalLater(this, \"swapDoc\", this, old);\n      return old\n    }),\n\n    getInputField: function(){return this.display.input.getField()},\n    getWrapperElement: function(){return this.display.wrapper},\n    getScrollerElement: function(){return this.display.scroller},\n    getGutterElement: function(){return this.display.gutters}\n  };\n  eventMixin(CodeMirror);\n\n  CodeMirror.registerHelper = function(type, name, value) {\n    if (!helpers.hasOwnProperty(type)) { helpers[type] = CodeMirror[type] = {_global: []}; }\n    helpers[type][name] = value;\n  };\n  CodeMirror.registerGlobalHelper = function(type, name, predicate, value) {\n    CodeMirror.registerHelper(type, name, value);\n    helpers[type]._global.push({pred: predicate, val: value});\n  };\n};\n\n// Used for horizontal relative motion. Dir is -1 or 1 (left or\n// right), unit can be \"char\", \"column\" (like char, but doesn't\n// cross line boundaries), \"word\" (across next word), or \"group\" (to\n// the start of next group of word or non-word-non-whitespace\n// chars). The visually param controls whether, in right-to-left\n// text, direction 1 means to move towards the next index in the\n// string, or towards the character to the right of the current\n// position. The resulting position will have a hitSide=true\n// property if it reached the end of the document.\nfunction findPosH(doc, pos, dir, unit, visually) {\n  var oldPos = pos;\n  var origDir = dir;\n  var lineObj = getLine(doc, pos.line);\n  function findNextLine() {\n    var l = pos.line + dir;\n    if (l < doc.first || l >= doc.first + doc.size) { return false }\n    pos = new Pos(l, pos.ch, pos.sticky);\n    return lineObj = getLine(doc, l)\n  }\n  function moveOnce(boundToLine) {\n    var next;\n    if (visually) {\n      next = moveVisually(doc.cm, lineObj, pos, dir);\n    } else {\n      next = moveLogically(lineObj, pos, dir);\n    }\n    if (next == null) {\n      if (!boundToLine && findNextLine())\n        { pos = endOfLine(visually, doc.cm, lineObj, pos.line, dir); }\n      else\n        { return false }\n    } else {\n      pos = next;\n    }\n    return true\n  }\n\n  if (unit == \"char\") {\n    moveOnce();\n  } else if (unit == \"column\") {\n    moveOnce(true);\n  } else if (unit == \"word\" || unit == \"group\") {\n    var sawType = null, group = unit == \"group\";\n    var helper = doc.cm && doc.cm.getHelper(pos, \"wordChars\");\n    for (var first = true;; first = false) {\n      if (dir < 0 && !moveOnce(!first)) { break }\n      var cur = lineObj.text.charAt(pos.ch) || \"\\n\";\n      var type = isWordChar(cur, helper) ? \"w\"\n        : group && cur == \"\\n\" ? \"n\"\n        : !group || /\\s/.test(cur) ? null\n        : \"p\";\n      if (group && !first && !type) { type = \"s\"; }\n      if (sawType && sawType != type) {\n        if (dir < 0) {dir = 1; moveOnce(); pos.sticky = \"after\";}\n        break\n      }\n\n      if (type) { sawType = type; }\n      if (dir > 0 && !moveOnce(!first)) { break }\n    }\n  }\n  var result = skipAtomic(doc, pos, oldPos, origDir, true);\n  if (equalCursorPos(oldPos, result)) { result.hitSide = true; }\n  return result\n}\n\n// For relative vertical movement. Dir may be -1 or 1. Unit can be\n// \"page\" or \"line\". The resulting position will have a hitSide=true\n// property if it reached the end of the document.\nfunction findPosV(cm, pos, dir, unit) {\n  var doc = cm.doc, x = pos.left, y;\n  if (unit == \"page\") {\n    var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight);\n    var moveAmount = Math.max(pageSize - .5 * textHeight(cm.display), 3);\n    y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount;\n\n  } else if (unit == \"line\") {\n    y = dir > 0 ? pos.bottom + 3 : pos.top - 3;\n  }\n  var target;\n  for (;;) {\n    target = coordsChar(cm, x, y);\n    if (!target.outside) { break }\n    if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break }\n    y += dir * 5;\n  }\n  return target\n}\n\n// CONTENTEDITABLE INPUT STYLE\n\nvar ContentEditableInput = function(cm) {\n  this.cm = cm;\n  this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null;\n  this.polling = new Delayed();\n  this.composing = null;\n  this.gracePeriod = false;\n  this.readDOMTimeout = null;\n};\n\nContentEditableInput.prototype.init = function (display) {\n    var this$1 = this;\n\n  var input = this, cm = input.cm;\n  var div = input.div = display.lineDiv;\n  disableBrowserMagic(div, cm.options.spellcheck);\n\n  on(div, \"paste\", function (e) {\n    if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n    // IE doesn't fire input events, so we schedule a read for the pasted content in this way\n    if (ie_version <= 11) { setTimeout(operation(cm, function () { return this$1.updateFromDOM(); }), 20); }\n  });\n\n  on(div, \"compositionstart\", function (e) {\n    this$1.composing = {data: e.data, done: false};\n  });\n  on(div, \"compositionupdate\", function (e) {\n    if (!this$1.composing) { this$1.composing = {data: e.data, done: false}; }\n  });\n  on(div, \"compositionend\", function (e) {\n    if (this$1.composing) {\n      if (e.data != this$1.composing.data) { this$1.readFromDOMSoon(); }\n      this$1.composing.done = true;\n    }\n  });\n\n  on(div, \"touchstart\", function () { return input.forceCompositionEnd(); });\n\n  on(div, \"input\", function () {\n    if (!this$1.composing) { this$1.readFromDOMSoon(); }\n  });\n\n  function onCopyCut(e) {\n    if (signalDOMEvent(cm, e)) { return }\n    if (cm.somethingSelected()) {\n      setLastCopied({lineWise: false, text: cm.getSelections()});\n      if (e.type == \"cut\") { cm.replaceSelection(\"\", null, \"cut\"); }\n    } else if (!cm.options.lineWiseCopyCut) {\n      return\n    } else {\n      var ranges = copyableRanges(cm);\n      setLastCopied({lineWise: true, text: ranges.text});\n      if (e.type == \"cut\") {\n        cm.operation(function () {\n          cm.setSelections(ranges.ranges, 0, sel_dontScroll);\n          cm.replaceSelection(\"\", null, \"cut\");\n        });\n      }\n    }\n    if (e.clipboardData) {\n      e.clipboardData.clearData();\n      var content = lastCopied.text.join(\"\\n\");\n      // iOS exposes the clipboard API, but seems to discard content inserted into it\n      e.clipboardData.setData(\"Text\", content);\n      if (e.clipboardData.getData(\"Text\") == content) {\n        e.preventDefault();\n        return\n      }\n    }\n    // Old-fashioned briefly-focus-a-textarea hack\n    var kludge = hiddenTextarea(), te = kludge.firstChild;\n    cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild);\n    te.value = lastCopied.text.join(\"\\n\");\n    var hadFocus = document.activeElement;\n    selectInput(te);\n    setTimeout(function () {\n      cm.display.lineSpace.removeChild(kludge);\n      hadFocus.focus();\n      if (hadFocus == div) { input.showPrimarySelection(); }\n    }, 50);\n  }\n  on(div, \"copy\", onCopyCut);\n  on(div, \"cut\", onCopyCut);\n};\n\nContentEditableInput.prototype.prepareSelection = function () {\n  var result = prepareSelection(this.cm, false);\n  result.focus = this.cm.state.focused;\n  return result\n};\n\nContentEditableInput.prototype.showSelection = function (info, takeFocus) {\n  if (!info || !this.cm.display.view.length) { return }\n  if (info.focus || takeFocus) { this.showPrimarySelection(); }\n  this.showMultipleSelections(info);\n};\n\nContentEditableInput.prototype.showPrimarySelection = function () {\n  var sel = window.getSelection(), cm = this.cm, prim = cm.doc.sel.primary();\n  var from = prim.from(), to = prim.to();\n\n  if (cm.display.viewTo == cm.display.viewFrom || from.line >= cm.display.viewTo || to.line < cm.display.viewFrom) {\n    sel.removeAllRanges();\n    return\n  }\n\n  var curAnchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n  var curFocus = domToPos(cm, sel.focusNode, sel.focusOffset);\n  if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad &&\n      cmp(minPos(curAnchor, curFocus), from) == 0 &&\n      cmp(maxPos(curAnchor, curFocus), to) == 0)\n    { return }\n\n  var view = cm.display.view;\n  var start = (from.line >= cm.display.viewFrom && posToDOM(cm, from)) ||\n      {node: view[0].measure.map[2], offset: 0};\n  var end = to.line < cm.display.viewTo && posToDOM(cm, to);\n  if (!end) {\n    var measure = view[view.length - 1].measure;\n    var map$$1 = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map;\n    end = {node: map$$1[map$$1.length - 1], offset: map$$1[map$$1.length - 2] - map$$1[map$$1.length - 3]};\n  }\n\n  if (!start || !end) {\n    sel.removeAllRanges();\n    return\n  }\n\n  var old = sel.rangeCount && sel.getRangeAt(0), rng;\n  try { rng = range(start.node, start.offset, end.offset, end.node); }\n  catch(e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible\n  if (rng) {\n    if (!gecko && cm.state.focused) {\n      sel.collapse(start.node, start.offset);\n      if (!rng.collapsed) {\n        sel.removeAllRanges();\n        sel.addRange(rng);\n      }\n    } else {\n      sel.removeAllRanges();\n      sel.addRange(rng);\n    }\n    if (old && sel.anchorNode == null) { sel.addRange(old); }\n    else if (gecko) { this.startGracePeriod(); }\n  }\n  this.rememberSelection();\n};\n\nContentEditableInput.prototype.startGracePeriod = function () {\n    var this$1 = this;\n\n  clearTimeout(this.gracePeriod);\n  this.gracePeriod = setTimeout(function () {\n    this$1.gracePeriod = false;\n    if (this$1.selectionChanged())\n      { this$1.cm.operation(function () { return this$1.cm.curOp.selectionChanged = true; }); }\n  }, 20);\n};\n\nContentEditableInput.prototype.showMultipleSelections = function (info) {\n  removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors);\n  removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection);\n};\n\nContentEditableInput.prototype.rememberSelection = function () {\n  var sel = window.getSelection();\n  this.lastAnchorNode = sel.anchorNode; this.lastAnchorOffset = sel.anchorOffset;\n  this.lastFocusNode = sel.focusNode; this.lastFocusOffset = sel.focusOffset;\n};\n\nContentEditableInput.prototype.selectionInEditor = function () {\n  var sel = window.getSelection();\n  if (!sel.rangeCount) { return false }\n  var node = sel.getRangeAt(0).commonAncestorContainer;\n  return contains(this.div, node)\n};\n\nContentEditableInput.prototype.focus = function () {\n  if (this.cm.options.readOnly != \"nocursor\") {\n    if (!this.selectionInEditor())\n      { this.showSelection(this.prepareSelection(), true); }\n    this.div.focus();\n  }\n};\nContentEditableInput.prototype.blur = function () { this.div.blur(); };\nContentEditableInput.prototype.getField = function () { return this.div };\n\nContentEditableInput.prototype.supportsTouch = function () { return true };\n\nContentEditableInput.prototype.receivedFocus = function () {\n  var input = this;\n  if (this.selectionInEditor())\n    { this.pollSelection(); }\n  else\n    { runInOp(this.cm, function () { return input.cm.curOp.selectionChanged = true; }); }\n\n  function poll() {\n    if (input.cm.state.focused) {\n      input.pollSelection();\n      input.polling.set(input.cm.options.pollInterval, poll);\n    }\n  }\n  this.polling.set(this.cm.options.pollInterval, poll);\n};\n\nContentEditableInput.prototype.selectionChanged = function () {\n  var sel = window.getSelection();\n  return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset ||\n    sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset\n};\n\nContentEditableInput.prototype.pollSelection = function () {\n  if (this.readDOMTimeout != null || this.gracePeriod || !this.selectionChanged()) { return }\n  var sel = window.getSelection(), cm = this.cm;\n  // On Android Chrome (version 56, at least), backspacing into an\n  // uneditable block element will put the cursor in that element,\n  // and then, because it's not editable, hide the virtual keyboard.\n  // Because Android doesn't allow us to actually detect backspace\n  // presses in a sane way, this code checks for when that happens\n  // and simulates a backspace press in this case.\n  if (android && chrome && this.cm.options.gutters.length && isInGutter(sel.anchorNode)) {\n    this.cm.triggerOnKeyDown({type: \"keydown\", keyCode: 8, preventDefault: Math.abs});\n    this.blur();\n    this.focus();\n    return\n  }\n  if (this.composing) { return }\n  this.rememberSelection();\n  var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n  var head = domToPos(cm, sel.focusNode, sel.focusOffset);\n  if (anchor && head) { runInOp(cm, function () {\n    setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll);\n    if (anchor.bad || head.bad) { cm.curOp.selectionChanged = true; }\n  }); }\n};\n\nContentEditableInput.prototype.pollContent = function () {\n  if (this.readDOMTimeout != null) {\n    clearTimeout(this.readDOMTimeout);\n    this.readDOMTimeout = null;\n  }\n\n  var cm = this.cm, display = cm.display, sel = cm.doc.sel.primary();\n  var from = sel.from(), to = sel.to();\n  if (from.ch == 0 && from.line > cm.firstLine())\n    { from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length); }\n  if (to.ch == getLine(cm.doc, to.line).text.length && to.line < cm.lastLine())\n    { to = Pos(to.line + 1, 0); }\n  if (from.line < display.viewFrom || to.line > display.viewTo - 1) { return false }\n\n  var fromIndex, fromLine, fromNode;\n  if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) {\n    fromLine = lineNo(display.view[0].line);\n    fromNode = display.view[0].node;\n  } else {\n    fromLine = lineNo(display.view[fromIndex].line);\n    fromNode = display.view[fromIndex - 1].node.nextSibling;\n  }\n  var toIndex = findViewIndex(cm, to.line);\n  var toLine, toNode;\n  if (toIndex == display.view.length - 1) {\n    toLine = display.viewTo - 1;\n    toNode = display.lineDiv.lastChild;\n  } else {\n    toLine = lineNo(display.view[toIndex + 1].line) - 1;\n    toNode = display.view[toIndex + 1].node.previousSibling;\n  }\n\n  if (!fromNode) { return false }\n  var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine));\n  var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length));\n  while (newText.length > 1 && oldText.length > 1) {\n    if (lst(newText) == lst(oldText)) { newText.pop(); oldText.pop(); toLine--; }\n    else if (newText[0] == oldText[0]) { newText.shift(); oldText.shift(); fromLine++; }\n    else { break }\n  }\n\n  var cutFront = 0, cutEnd = 0;\n  var newTop = newText[0], oldTop = oldText[0], maxCutFront = Math.min(newTop.length, oldTop.length);\n  while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront))\n    { ++cutFront; }\n  var newBot = lst(newText), oldBot = lst(oldText);\n  var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0),\n                           oldBot.length - (oldText.length == 1 ? cutFront : 0));\n  while (cutEnd < maxCutEnd &&\n         newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1))\n    { ++cutEnd; }\n  // Try to move start of change to start of selection if ambiguous\n  if (newText.length == 1 && oldText.length == 1 && fromLine == from.line) {\n    while (cutFront && cutFront > from.ch &&\n           newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) {\n      cutFront--;\n      cutEnd++;\n    }\n  }\n\n  newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd).replace(/^\\u200b+/, \"\");\n  newText[0] = newText[0].slice(cutFront).replace(/\\u200b+$/, \"\");\n\n  var chFrom = Pos(fromLine, cutFront);\n  var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0);\n  if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) {\n    replaceRange(cm.doc, newText, chFrom, chTo, \"+input\");\n    return true\n  }\n};\n\nContentEditableInput.prototype.ensurePolled = function () {\n  this.forceCompositionEnd();\n};\nContentEditableInput.prototype.reset = function () {\n  this.forceCompositionEnd();\n};\nContentEditableInput.prototype.forceCompositionEnd = function () {\n  if (!this.composing) { return }\n  clearTimeout(this.readDOMTimeout);\n  this.composing = null;\n  this.updateFromDOM();\n  this.div.blur();\n  this.div.focus();\n};\nContentEditableInput.prototype.readFromDOMSoon = function () {\n    var this$1 = this;\n\n  if (this.readDOMTimeout != null) { return }\n  this.readDOMTimeout = setTimeout(function () {\n    this$1.readDOMTimeout = null;\n    if (this$1.composing) {\n      if (this$1.composing.done) { this$1.composing = null; }\n      else { return }\n    }\n    this$1.updateFromDOM();\n  }, 80);\n};\n\nContentEditableInput.prototype.updateFromDOM = function () {\n    var this$1 = this;\n\n  if (this.cm.isReadOnly() || !this.pollContent())\n    { runInOp(this.cm, function () { return regChange(this$1.cm); }); }\n};\n\nContentEditableInput.prototype.setUneditable = function (node) {\n  node.contentEditable = \"false\";\n};\n\nContentEditableInput.prototype.onKeyPress = function (e) {\n  if (e.charCode == 0) { return }\n  e.preventDefault();\n  if (!this.cm.isReadOnly())\n    { operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0); }\n};\n\nContentEditableInput.prototype.readOnlyChanged = function (val) {\n  this.div.contentEditable = String(val != \"nocursor\");\n};\n\nContentEditableInput.prototype.onContextMenu = function () {};\nContentEditableInput.prototype.resetPosition = function () {};\n\nContentEditableInput.prototype.needsContentAttribute = true;\n\nfunction posToDOM(cm, pos) {\n  var view = findViewForLine(cm, pos.line);\n  if (!view || view.hidden) { return null }\n  var line = getLine(cm.doc, pos.line);\n  var info = mapFromLineView(view, line, pos.line);\n\n  var order = getOrder(line, cm.doc.direction), side = \"left\";\n  if (order) {\n    var partPos = getBidiPartAt(order, pos.ch);\n    side = partPos % 2 ? \"right\" : \"left\";\n  }\n  var result = nodeAndOffsetInLineMap(info.map, pos.ch, side);\n  result.offset = result.collapse == \"right\" ? result.end : result.start;\n  return result\n}\n\nfunction isInGutter(node) {\n  for (var scan = node; scan; scan = scan.parentNode)\n    { if (/CodeMirror-gutter-wrapper/.test(scan.className)) { return true } }\n  return false\n}\n\nfunction badPos(pos, bad) { if (bad) { pos.bad = true; } return pos }\n\nfunction domTextBetween(cm, from, to, fromLine, toLine) {\n  var text = \"\", closing = false, lineSep = cm.doc.lineSeparator();\n  function recognizeMarker(id) { return function (marker) { return marker.id == id; } }\n  function close() {\n    if (closing) {\n      text += lineSep;\n      closing = false;\n    }\n  }\n  function addText(str) {\n    if (str) {\n      close();\n      text += str;\n    }\n  }\n  function walk(node) {\n    if (node.nodeType == 1) {\n      var cmText = node.getAttribute(\"cm-text\");\n      if (cmText != null) {\n        addText(cmText || node.textContent.replace(/\\u200b/g, \"\"));\n        return\n      }\n      var markerID = node.getAttribute(\"cm-marker\"), range$$1;\n      if (markerID) {\n        var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID));\n        if (found.length && (range$$1 = found[0].find()))\n          { addText(getBetween(cm.doc, range$$1.from, range$$1.to).join(lineSep)); }\n        return\n      }\n      if (node.getAttribute(\"contenteditable\") == \"false\") { return }\n      var isBlock = /^(pre|div|p)$/i.test(node.nodeName);\n      if (isBlock) { close(); }\n      for (var i = 0; i < node.childNodes.length; i++)\n        { walk(node.childNodes[i]); }\n      if (isBlock) { closing = true; }\n    } else if (node.nodeType == 3) {\n      addText(node.nodeValue);\n    }\n  }\n  for (;;) {\n    walk(from);\n    if (from == to) { break }\n    from = from.nextSibling;\n  }\n  return text\n}\n\nfunction domToPos(cm, node, offset) {\n  var lineNode;\n  if (node == cm.display.lineDiv) {\n    lineNode = cm.display.lineDiv.childNodes[offset];\n    if (!lineNode) { return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true) }\n    node = null; offset = 0;\n  } else {\n    for (lineNode = node;; lineNode = lineNode.parentNode) {\n      if (!lineNode || lineNode == cm.display.lineDiv) { return null }\n      if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) { break }\n    }\n  }\n  for (var i = 0; i < cm.display.view.length; i++) {\n    var lineView = cm.display.view[i];\n    if (lineView.node == lineNode)\n      { return locateNodeInLineView(lineView, node, offset) }\n  }\n}\n\nfunction locateNodeInLineView(lineView, node, offset) {\n  var wrapper = lineView.text.firstChild, bad = false;\n  if (!node || !contains(wrapper, node)) { return badPos(Pos(lineNo(lineView.line), 0), true) }\n  if (node == wrapper) {\n    bad = true;\n    node = wrapper.childNodes[offset];\n    offset = 0;\n    if (!node) {\n      var line = lineView.rest ? lst(lineView.rest) : lineView.line;\n      return badPos(Pos(lineNo(line), line.text.length), bad)\n    }\n  }\n\n  var textNode = node.nodeType == 3 ? node : null, topNode = node;\n  if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) {\n    textNode = node.firstChild;\n    if (offset) { offset = textNode.nodeValue.length; }\n  }\n  while (topNode.parentNode != wrapper) { topNode = topNode.parentNode; }\n  var measure = lineView.measure, maps = measure.maps;\n\n  function find(textNode, topNode, offset) {\n    for (var i = -1; i < (maps ? maps.length : 0); i++) {\n      var map$$1 = i < 0 ? measure.map : maps[i];\n      for (var j = 0; j < map$$1.length; j += 3) {\n        var curNode = map$$1[j + 2];\n        if (curNode == textNode || curNode == topNode) {\n          var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]);\n          var ch = map$$1[j] + offset;\n          if (offset < 0 || curNode != textNode) { ch = map$$1[j + (offset ? 1 : 0)]; }\n          return Pos(line, ch)\n        }\n      }\n    }\n  }\n  var found = find(textNode, topNode, offset);\n  if (found) { return badPos(found, bad) }\n\n  // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems\n  for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) {\n    found = find(after, after.firstChild, 0);\n    if (found)\n      { return badPos(Pos(found.line, found.ch - dist), bad) }\n    else\n      { dist += after.textContent.length; }\n  }\n  for (var before = topNode.previousSibling, dist$1 = offset; before; before = before.previousSibling) {\n    found = find(before, before.firstChild, -1);\n    if (found)\n      { return badPos(Pos(found.line, found.ch + dist$1), bad) }\n    else\n      { dist$1 += before.textContent.length; }\n  }\n}\n\n// TEXTAREA INPUT STYLE\n\nvar TextareaInput = function(cm) {\n  this.cm = cm;\n  // See input.poll and input.reset\n  this.prevInput = \"\";\n\n  // Flag that indicates whether we expect input to appear real soon\n  // now (after some event like 'keypress' or 'input') and are\n  // polling intensively.\n  this.pollingFast = false;\n  // Self-resetting timeout for the poller\n  this.polling = new Delayed();\n  // Tracks when input.reset has punted to just putting a short\n  // string into the textarea instead of the full selection.\n  this.inaccurateSelection = false;\n  // Used to work around IE issue with selection being forgotten when focus moves away from textarea\n  this.hasSelection = false;\n  this.composing = null;\n};\n\nTextareaInput.prototype.init = function (display) {\n    var this$1 = this;\n\n  var input = this, cm = this.cm;\n\n  // Wraps and hides input textarea\n  var div = this.wrapper = hiddenTextarea();\n  // The semihidden textarea that is focused when the editor is\n  // focused, and receives input.\n  var te = this.textarea = div.firstChild;\n  display.wrapper.insertBefore(div, display.wrapper.firstChild);\n\n  // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore)\n  if (ios) { te.style.width = \"0px\"; }\n\n  on(te, \"input\", function () {\n    if (ie && ie_version >= 9 && this$1.hasSelection) { this$1.hasSelection = null; }\n    input.poll();\n  });\n\n  on(te, \"paste\", function (e) {\n    if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n\n    cm.state.pasteIncoming = true;\n    input.fastPoll();\n  });\n\n  function prepareCopyCut(e) {\n    if (signalDOMEvent(cm, e)) { return }\n    if (cm.somethingSelected()) {\n      setLastCopied({lineWise: false, text: cm.getSelections()});\n      if (input.inaccurateSelection) {\n        input.prevInput = \"\";\n        input.inaccurateSelection = false;\n        te.value = lastCopied.text.join(\"\\n\");\n        selectInput(te);\n      }\n    } else if (!cm.options.lineWiseCopyCut) {\n      return\n    } else {\n      var ranges = copyableRanges(cm);\n      setLastCopied({lineWise: true, text: ranges.text});\n      if (e.type == \"cut\") {\n        cm.setSelections(ranges.ranges, null, sel_dontScroll);\n      } else {\n        input.prevInput = \"\";\n        te.value = ranges.text.join(\"\\n\");\n        selectInput(te);\n      }\n    }\n    if (e.type == \"cut\") { cm.state.cutIncoming = true; }\n  }\n  on(te, \"cut\", prepareCopyCut);\n  on(te, \"copy\", prepareCopyCut);\n\n  on(display.scroller, \"paste\", function (e) {\n    if (eventInWidget(display, e) || signalDOMEvent(cm, e)) { return }\n    cm.state.pasteIncoming = true;\n    input.focus();\n  });\n\n  // Prevent normal selection in the editor (we handle our own)\n  on(display.lineSpace, \"selectstart\", function (e) {\n    if (!eventInWidget(display, e)) { e_preventDefault(e); }\n  });\n\n  on(te, \"compositionstart\", function () {\n    var start = cm.getCursor(\"from\");\n    if (input.composing) { input.composing.range.clear(); }\n    input.composing = {\n      start: start,\n      range: cm.markText(start, cm.getCursor(\"to\"), {className: \"CodeMirror-composing\"})\n    };\n  });\n  on(te, \"compositionend\", function () {\n    if (input.composing) {\n      input.poll();\n      input.composing.range.clear();\n      input.composing = null;\n    }\n  });\n};\n\nTextareaInput.prototype.prepareSelection = function () {\n  // Redraw the selection and/or cursor\n  var cm = this.cm, display = cm.display, doc = cm.doc;\n  var result = prepareSelection(cm);\n\n  // Move the hidden textarea near the cursor to prevent scrolling artifacts\n  if (cm.options.moveInputWithCursor) {\n    var headPos = cursorCoords(cm, doc.sel.primary().head, \"div\");\n    var wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect();\n    result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10,\n                                        headPos.top + lineOff.top - wrapOff.top));\n    result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10,\n                                         headPos.left + lineOff.left - wrapOff.left));\n  }\n\n  return result\n};\n\nTextareaInput.prototype.showSelection = function (drawn) {\n  var cm = this.cm, display = cm.display;\n  removeChildrenAndAdd(display.cursorDiv, drawn.cursors);\n  removeChildrenAndAdd(display.selectionDiv, drawn.selection);\n  if (drawn.teTop != null) {\n    this.wrapper.style.top = drawn.teTop + \"px\";\n    this.wrapper.style.left = drawn.teLeft + \"px\";\n  }\n};\n\n// Reset the input to correspond to the selection (or to be empty,\n// when not typing and nothing is selected)\nTextareaInput.prototype.reset = function (typing) {\n  if (this.contextMenuPending) { return }\n  var minimal, selected, cm = this.cm, doc = cm.doc;\n  if (cm.somethingSelected()) {\n    this.prevInput = \"\";\n    var range$$1 = doc.sel.primary();\n    minimal = hasCopyEvent &&\n      (range$$1.to().line - range$$1.from().line > 100 || (selected = cm.getSelection()).length > 1000);\n    var content = minimal ? \"-\" : selected || cm.getSelection();\n    this.textarea.value = content;\n    if (cm.state.focused) { selectInput(this.textarea); }\n    if (ie && ie_version >= 9) { this.hasSelection = content; }\n  } else if (!typing) {\n    this.prevInput = this.textarea.value = \"\";\n    if (ie && ie_version >= 9) { this.hasSelection = null; }\n  }\n  this.inaccurateSelection = minimal;\n};\n\nTextareaInput.prototype.getField = function () { return this.textarea };\n\nTextareaInput.prototype.supportsTouch = function () { return false };\n\nTextareaInput.prototype.focus = function () {\n  if (this.cm.options.readOnly != \"nocursor\" && (!mobile || activeElt() != this.textarea)) {\n    try { this.textarea.focus(); }\n    catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM\n  }\n};\n\nTextareaInput.prototype.blur = function () { this.textarea.blur(); };\n\nTextareaInput.prototype.resetPosition = function () {\n  this.wrapper.style.top = this.wrapper.style.left = 0;\n};\n\nTextareaInput.prototype.receivedFocus = function () { this.slowPoll(); };\n\n// Poll for input changes, using the normal rate of polling. This\n// runs as long as the editor is focused.\nTextareaInput.prototype.slowPoll = function () {\n    var this$1 = this;\n\n  if (this.pollingFast) { return }\n  this.polling.set(this.cm.options.pollInterval, function () {\n    this$1.poll();\n    if (this$1.cm.state.focused) { this$1.slowPoll(); }\n  });\n};\n\n// When an event has just come in that is likely to add or change\n// something in the input textarea, we poll faster, to ensure that\n// the change appears on the screen quickly.\nTextareaInput.prototype.fastPoll = function () {\n  var missed = false, input = this;\n  input.pollingFast = true;\n  function p() {\n    var changed = input.poll();\n    if (!changed && !missed) {missed = true; input.polling.set(60, p);}\n    else {input.pollingFast = false; input.slowPoll();}\n  }\n  input.polling.set(20, p);\n};\n\n// Read input from the textarea, and update the document to match.\n// When something is selected, it is present in the textarea, and\n// selected (unless it is huge, in which case a placeholder is\n// used). When nothing is selected, the cursor sits after previously\n// seen text (can be empty), which is stored in prevInput (we must\n// not reset the textarea when typing, because that breaks IME).\nTextareaInput.prototype.poll = function () {\n    var this$1 = this;\n\n  var cm = this.cm, input = this.textarea, prevInput = this.prevInput;\n  // Since this is called a *lot*, try to bail out as cheaply as\n  // possible when it is clear that nothing happened. hasSelection\n  // will be the case when there is a lot of text in the textarea,\n  // in which case reading its value would be expensive.\n  if (this.contextMenuPending || !cm.state.focused ||\n      (hasSelection(input) && !prevInput && !this.composing) ||\n      cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq)\n    { return false }\n\n  var text = input.value;\n  // If nothing changed, bail.\n  if (text == prevInput && !cm.somethingSelected()) { return false }\n  // Work around nonsensical selection resetting in IE9/10, and\n  // inexplicable appearance of private area unicode characters on\n  // some key combos in Mac (#2689).\n  if (ie && ie_version >= 9 && this.hasSelection === text ||\n      mac && /[\\uf700-\\uf7ff]/.test(text)) {\n    cm.display.input.reset();\n    return false\n  }\n\n  if (cm.doc.sel == cm.display.selForContextMenu) {\n    var first = text.charCodeAt(0);\n    if (first == 0x200b && !prevInput) { prevInput = \"\\u200b\"; }\n    if (first == 0x21da) { this.reset(); return this.cm.execCommand(\"undo\") }\n  }\n  // Find the part of the input that is actually new\n  var same = 0, l = Math.min(prevInput.length, text.length);\n  while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) { ++same; }\n\n  runInOp(cm, function () {\n    applyTextInput(cm, text.slice(same), prevInput.length - same,\n                   null, this$1.composing ? \"*compose\" : null);\n\n    // Don't leave long text in the textarea, since it makes further polling slow\n    if (text.length > 1000 || text.indexOf(\"\\n\") > -1) { input.value = this$1.prevInput = \"\"; }\n    else { this$1.prevInput = text; }\n\n    if (this$1.composing) {\n      this$1.composing.range.clear();\n      this$1.composing.range = cm.markText(this$1.composing.start, cm.getCursor(\"to\"),\n                                         {className: \"CodeMirror-composing\"});\n    }\n  });\n  return true\n};\n\nTextareaInput.prototype.ensurePolled = function () {\n  if (this.pollingFast && this.poll()) { this.pollingFast = false; }\n};\n\nTextareaInput.prototype.onKeyPress = function () {\n  if (ie && ie_version >= 9) { this.hasSelection = null; }\n  this.fastPoll();\n};\n\nTextareaInput.prototype.onContextMenu = function (e) {\n  var input = this, cm = input.cm, display = cm.display, te = input.textarea;\n  var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop;\n  if (!pos || presto) { return } // Opera is difficult.\n\n  // Reset the current text selection only if the click is done outside of the selection\n  // and 'resetSelectionOnContextMenu' option is true.\n  var reset = cm.options.resetSelectionOnContextMenu;\n  if (reset && cm.doc.sel.contains(pos) == -1)\n    { operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll); }\n\n  var oldCSS = te.style.cssText, oldWrapperCSS = input.wrapper.style.cssText;\n  input.wrapper.style.cssText = \"position: absolute\";\n  var wrapperBox = input.wrapper.getBoundingClientRect();\n  te.style.cssText = \"position: absolute; width: 30px; height: 30px;\\n      top: \" + (e.clientY - wrapperBox.top - 5) + \"px; left: \" + (e.clientX - wrapperBox.left - 5) + \"px;\\n      z-index: 1000; background: \" + (ie ? \"rgba(255, 255, 255, .05)\" : \"transparent\") + \";\\n      outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);\";\n  var oldScrollY;\n  if (webkit) { oldScrollY = window.scrollY; } // Work around Chrome issue (#2712)\n  display.input.focus();\n  if (webkit) { window.scrollTo(null, oldScrollY); }\n  display.input.reset();\n  // Adds \"Select all\" to context menu in FF\n  if (!cm.somethingSelected()) { te.value = input.prevInput = \" \"; }\n  input.contextMenuPending = true;\n  display.selForContextMenu = cm.doc.sel;\n  clearTimeout(display.detectingSelectAll);\n\n  // Select-all will be greyed out if there's nothing to select, so\n  // this adds a zero-width space so that we can later check whether\n  // it got selected.\n  function prepareSelectAllHack() {\n    if (te.selectionStart != null) {\n      var selected = cm.somethingSelected();\n      var extval = \"\\u200b\" + (selected ? te.value : \"\");\n      te.value = \"\\u21da\"; // Used to catch context-menu undo\n      te.value = extval;\n      input.prevInput = selected ? \"\" : \"\\u200b\";\n      te.selectionStart = 1; te.selectionEnd = extval.length;\n      // Re-set this, in case some other handler touched the\n      // selection in the meantime.\n      display.selForContextMenu = cm.doc.sel;\n    }\n  }\n  function rehide() {\n    input.contextMenuPending = false;\n    input.wrapper.style.cssText = oldWrapperCSS;\n    te.style.cssText = oldCSS;\n    if (ie && ie_version < 9) { display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos); }\n\n    // Try to detect the user choosing select-all\n    if (te.selectionStart != null) {\n      if (!ie || (ie && ie_version < 9)) { prepareSelectAllHack(); }\n      var i = 0, poll = function () {\n        if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 &&\n            te.selectionEnd > 0 && input.prevInput == \"\\u200b\") {\n          operation(cm, selectAll)(cm);\n        } else if (i++ < 10) {\n          display.detectingSelectAll = setTimeout(poll, 500);\n        } else {\n          display.selForContextMenu = null;\n          display.input.reset();\n        }\n      };\n      display.detectingSelectAll = setTimeout(poll, 200);\n    }\n  }\n\n  if (ie && ie_version >= 9) { prepareSelectAllHack(); }\n  if (captureRightClick) {\n    e_stop(e);\n    var mouseup = function () {\n      off(window, \"mouseup\", mouseup);\n      setTimeout(rehide, 20);\n    };\n    on(window, \"mouseup\", mouseup);\n  } else {\n    setTimeout(rehide, 50);\n  }\n};\n\nTextareaInput.prototype.readOnlyChanged = function (val) {\n  if (!val) { this.reset(); }\n};\n\nTextareaInput.prototype.setUneditable = function () {};\n\nTextareaInput.prototype.needsContentAttribute = false;\n\nfunction fromTextArea(textarea, options) {\n  options = options ? copyObj(options) : {};\n  options.value = textarea.value;\n  if (!options.tabindex && textarea.tabIndex)\n    { options.tabindex = textarea.tabIndex; }\n  if (!options.placeholder && textarea.placeholder)\n    { options.placeholder = textarea.placeholder; }\n  // Set autofocus to true if this textarea is focused, or if it has\n  // autofocus and no other element is focused.\n  if (options.autofocus == null) {\n    var hasFocus = activeElt();\n    options.autofocus = hasFocus == textarea ||\n      textarea.getAttribute(\"autofocus\") != null && hasFocus == document.body;\n  }\n\n  function save() {textarea.value = cm.getValue();}\n\n  var realSubmit;\n  if (textarea.form) {\n    on(textarea.form, \"submit\", save);\n    // Deplorable hack to make the submit method do the right thing.\n    if (!options.leaveSubmitMethodAlone) {\n      var form = textarea.form;\n      realSubmit = form.submit;\n      try {\n        var wrappedSubmit = form.submit = function () {\n          save();\n          form.submit = realSubmit;\n          form.submit();\n          form.submit = wrappedSubmit;\n        };\n      } catch(e) {}\n    }\n  }\n\n  options.finishInit = function (cm) {\n    cm.save = save;\n    cm.getTextArea = function () { return textarea; };\n    cm.toTextArea = function () {\n      cm.toTextArea = isNaN; // Prevent this from being ran twice\n      save();\n      textarea.parentNode.removeChild(cm.getWrapperElement());\n      textarea.style.display = \"\";\n      if (textarea.form) {\n        off(textarea.form, \"submit\", save);\n        if (typeof textarea.form.submit == \"function\")\n          { textarea.form.submit = realSubmit; }\n      }\n    };\n  };\n\n  textarea.style.display = \"none\";\n  var cm = CodeMirror$1(function (node) { return textarea.parentNode.insertBefore(node, textarea.nextSibling); },\n    options);\n  return cm\n}\n\nfunction addLegacyProps(CodeMirror) {\n  CodeMirror.off = off;\n  CodeMirror.on = on;\n  CodeMirror.wheelEventPixels = wheelEventPixels;\n  CodeMirror.Doc = Doc;\n  CodeMirror.splitLines = splitLinesAuto;\n  CodeMirror.countColumn = countColumn;\n  CodeMirror.findColumn = findColumn;\n  CodeMirror.isWordChar = isWordCharBasic;\n  CodeMirror.Pass = Pass;\n  CodeMirror.signal = signal;\n  CodeMirror.Line = Line;\n  CodeMirror.changeEnd = changeEnd;\n  CodeMirror.scrollbarModel = scrollbarModel;\n  CodeMirror.Pos = Pos;\n  CodeMirror.cmpPos = cmp;\n  CodeMirror.modes = modes;\n  CodeMirror.mimeModes = mimeModes;\n  CodeMirror.resolveMode = resolveMode;\n  CodeMirror.getMode = getMode;\n  CodeMirror.modeExtensions = modeExtensions;\n  CodeMirror.extendMode = extendMode;\n  CodeMirror.copyState = copyState;\n  CodeMirror.startState = startState;\n  CodeMirror.innerMode = innerMode;\n  CodeMirror.commands = commands;\n  CodeMirror.keyMap = keyMap;\n  CodeMirror.keyName = keyName;\n  CodeMirror.isModifierKey = isModifierKey;\n  CodeMirror.lookupKey = lookupKey;\n  CodeMirror.normalizeKeyMap = normalizeKeyMap;\n  CodeMirror.StringStream = StringStream;\n  CodeMirror.SharedTextMarker = SharedTextMarker;\n  CodeMirror.TextMarker = TextMarker;\n  CodeMirror.LineWidget = LineWidget;\n  CodeMirror.e_preventDefault = e_preventDefault;\n  CodeMirror.e_stopPropagation = e_stopPropagation;\n  CodeMirror.e_stop = e_stop;\n  CodeMirror.addClass = addClass;\n  CodeMirror.contains = contains;\n  CodeMirror.rmClass = rmClass;\n  CodeMirror.keyNames = keyNames;\n}\n\n// EDITOR CONSTRUCTOR\n\ndefineOptions(CodeMirror$1);\n\naddEditorMethods(CodeMirror$1);\n\n// Set up methods on CodeMirror's prototype to redirect to the editor's document.\nvar dontDelegate = \"iter insert remove copy getEditor constructor\".split(\" \");\nfor (var prop in Doc.prototype) { if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0)\n  { CodeMirror$1.prototype[prop] = (function(method) {\n    return function() {return method.apply(this.doc, arguments)}\n  })(Doc.prototype[prop]); } }\n\neventMixin(Doc);\n\n// INPUT HANDLING\n\nCodeMirror$1.inputStyles = {\"textarea\": TextareaInput, \"contenteditable\": ContentEditableInput};\n\n// MODE DEFINITION AND QUERYING\n\n// Extra arguments are stored as the mode's dependencies, which is\n// used by (legacy) mechanisms like loadmode.js to automatically\n// load a mode. (Preferred mechanism is the require/define calls.)\nCodeMirror$1.defineMode = function(name/*, mode, …*/) {\n  if (!CodeMirror$1.defaults.mode && name != \"null\") { CodeMirror$1.defaults.mode = name; }\n  defineMode.apply(this, arguments);\n};\n\nCodeMirror$1.defineMIME = defineMIME;\n\n// Minimal default mode.\nCodeMirror$1.defineMode(\"null\", function () { return ({token: function (stream) { return stream.skipToEnd(); }}); });\nCodeMirror$1.defineMIME(\"text/plain\", \"null\");\n\n// EXTENSIONS\n\nCodeMirror$1.defineExtension = function (name, func) {\n  CodeMirror$1.prototype[name] = func;\n};\nCodeMirror$1.defineDocExtension = function (name, func) {\n  Doc.prototype[name] = func;\n};\n\nCodeMirror$1.fromTextArea = fromTextArea;\n\naddLegacyProps(CodeMirror$1);\n\nCodeMirror$1.version = \"5.25.2\";\n\nreturn CodeMirror$1;\n\n})));\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2016, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Render a single Prolog answer.\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('answer',[ \"jquery\", \"laconic\" ],\n       function() {\n\n\t\t /*******************************\n\t\t *\tRENDER AN ANSWER\t*\n\t\t *******************************/\n\n(function($) {\n  var pluginName = 'prologAnswer';\n\n  /** @lends $.fn.prologAnswer */\n  var methods = {\n    /**\n     * Represent the binding of one or more variables to exactly the\n     * same (==) Prolog term.\n     *\n     * @typedef {Object} Binding\n     * @property {Array.String} variables represents the names of the\n     * variables.  This array is at least one long.\n     * @property {String} value contains the HTML that describes the\n     * binding of the variable.\n     */\n\n    /**\n     * Represent the binding of a single variable used to represent\n     * sharing, an in particular cyclic terms\n     *\n     * @typedef {Object} Subsitution\n     * @property {String} var name of the variable\n     * @property {String} value contains the HTML that describes the\n     * binding of the variable.\n     */\n\n    /**\n     * Represent an answer as represented by the pengines `json-html`\n     * format.\n     * @typedef {Object} Answer\n     * @property {Array.Binding} variables represents the variable\n     * bindings.\n     * @property {Array.Subsitution} [substitutions] represents substitutions\n     * needed to break cyclic terms.\n     * @property {Array.String} [residuals] represents residual goals as HTML\n     * strings.\n     */\n\n    /**\n     * Render a single answer as returned by pengines `json-html` format\n     * as an HTML string.\n     *\n     * to HTML escaping issues\n     * @param {Answer} answer represents an answer to a Prolog query\n     */\n  _init: function(answer) {\n      return this.each(function() {\n\tvar elem = $(this);\n\n\tif ( answerHasOutput(answer) ) {\n\t  if ( elem.is(\"table\") ) {\n\t    var row = $.el.tr();\n\t    elem.append(row);\n\t    row.innerHTML = renderTabledAnswer(answer, elem);\n\t    evalScripts($(row));\n\t    $(row).find(\".render-multi\").renderMulti();\n\t  } else {\n\t    elem[0].innerHTML = renderAnswer(answer);\n\t    evalScripts(elem);\n\t    elem.find(\".render-multi\").renderMulti();\n\t  }\n\t} else\n\t  elem.append($.el.span({class: \"prolog-true\"}, \"true\"));\n      });\n    }\n  };\n\n  function answerHasOutput(answer) {\n    return answer.variables.length > 0 || answer.residuals;\n  }\n\n  function renderSubstitutions(substs, html) {\n    html.push(', <span class=\"pl-comment\">% where</span><br/>');\n    for (var s = 0; s < substs.length; s++) {\n      html.push('<span class=\"where-binding\">',\n\t\t\"<span class='pl-var'>\", substs[s].var+\"</span> = \",\n\t\tsubsts[s].value, '</span>');\n      if (s < substs.length - 1)\n\thtml.push(\",<br/>\");\n    }\n  }\n\n  function renderAnswer(answer) {\n    var html = [];\n    var bindings = answer.variables;\n    for (var i = 0; i < bindings.length; i++) {\n      var vars = bindings[i].variables;\n      for (var v = 0; v < vars.length - 1; v++) {\n\thtml.push(\"<span class='pl-ovar'>\", vars[v], \"</span> = \",\n\t\t  \"<span class='pl-var'>\", vars[v + 1], \"</span>, \");\n      }\n      html.push(\"<span class='pl-ovar'>\", vars[vars.length - 1],\n\t\t\"</span> = \", bindings[i].value);\n      if (bindings[i].substitutions) {\n\trenderSubstitutions(bindings[i].substitutions, html);\n      }\n      if (i < bindings.length - 1 || answer.residuals)\n\thtml.push(\",<br/>\");\n    }\n\n    var residuals;\n    if ((residuals = answer.residuals)) {\n      for (var i = 0; i < residuals.length; i++) {\n\thtml.push(residuals[i]);\n\tif (i < residuals.length - 1)\n\t  html.push(\",<br/>\");\n      }\n    }\n    return html.join(\"\");\n  }\n\n  /**\n   * Render answer as a new row to the answer table.\n   * @param {Answer} answer represents an answer to a Prolog query\n   * @param {Table} table is the jQuery table to which the answer must\n   * be added.\n   */\n  function renderTabledAnswer(answer, table) {\n    var html = [];\n\n    function findBinding(name) {\n      var bindings = answer.variables;\n      for (var i = 0; i < bindings.length; i++) {\n\tvar vars = bindings[i].variables;\n\tfor (var v = 0; v < vars.length; v++) {\n\t  if ( vars[v] == name )\n\t    return bindings[i];\n\t}\n      }\n      return null;\n    }\n\n    for(var i = 0; i<answer.projection.length; i++) {\n      var vname  = answer.projection[i];\n      var binding = findBinding(vname);\n\n      html.push(\"<td>\");\n      if ( binding ) {\n\thtml.push(binding.value);\n\tif ( binding.substitutions )\n\t  renderSubstitutions(binding.substitutions, html);\n      } else {\n\thtml.push(\"<span class='pl-var'>\", vname, \"</span>\");\n      }\n      html.push(\"</td>\");\n    }\n\n    function ensureResidualColumn() {\n      if ( table.find(\"tr.projection th.residuals\").length == 0 ) {\n\t$(\"<th class='residuals'>Residual goals</th>\").insertBefore(\n\t   table.find(\"tr.projection th.answer-nth\"));\n\t$(\"<td></td>\").insertBefore(\n\t   table.find(\"tr td.answer-nth\"));\n      }\n    }\n\n    var residuals;\n    if ((residuals = answer.residuals)) {\n      ensureResidualColumn();\n      html.push(\"<td>\");\n      for (var i = 0; i < residuals.length; i++) {\n\thtml.push(residuals[i]);\n\tif (i < residuals.length - 1)\n\t  html.push(\",<br/>\");\n      }\n      html.push(\"</td>\");\n    }\n\n    if ( answer.nth )\n      html.push(\"<td class='answer-nth'>\", answer.nth, \"</td>\");\n\n    return html.join(\"\");\n  }\n\n  /**\n   * Execute scripts that are embedded in the jQuery object elem.\n   * While executing a script, the property `$.ajaxScript` points\n   * to the executing script to enable the script to find elements\n   * in the ajax DOM extension in which the script is embedded.\n   * @param {jQuery} elem is the set in which scripts are searched\n   * and executed.\n   */\n  function evalScripts(elem) {\n    elem.find(\"script\").each(function() {\n      var type = this.getAttribute('type')||\"text/javascript\";\n      if ( type == \"text/javascript\" ) {\n\t$.ajaxScript = $(this);\n\teval(this.textContent);\n      }\n    });\n    if ( $.ajaxScript )\n      delete $.ajaxScript;\n  }\n\n\n  /**\n   * Render a single Prolog answer. This class is the entry point for\n   * more flexible answer rendering.\n   *\n   * @class prologAnswer\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} answer Either a method name or the jQuery\n   * plugin initialization object, which is the answer to a Prolog query\n   * in pengines \"json-html\" format\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.prologAnswer = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n\n}(jQuery));\n\n\t\t /*******************************\n\t\t *\t   RENDER TERMS\t\t*\n\t\t *******************************/\n\n(function($) {\n  var pluginName = 'renderMulti';\n  var timeout = 0;\n  var hovering = false;\n\n  /** @lends $.fn.renderMulti */\n  var methods = {\n    _init: function(options) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = {current: 0};\t\t/* private data */\n\tvar display = [];\n\tvar selector = $.el.div({class: \"render-multi-active\"});\n\n\tvar i = 0;\n\telem.children().each(function() {\n\t  var how = $(this).css(\"display\");\n\n\t  display.push(how);\n\t  if ( i++ == 0 ) {\n\t    elem.css(\"display\", how);\n\t    $(this).attr('draggable', false);\n\t  } else {\n\t    $(this).hide();\n\t  }\n\t});\n\tdata.display = display;\n\telem.append(selector);\n\n\t$(selector).hover(function(ev) { elem.renderMulti('showSelect', ev); },\n\t\t\t  function(ev) { elem.renderMulti('hideSelect', ev); });\n\telem.attr('draggable', true)\n            .bind('dragstart', dragStart);\n\n\telem.data(pluginName, data);\t/* store with element */\n      });\n    },\n\n    /**\n     * @returns {String} holding HTML with a radio button to select a\n     * rendering\n     */\n    selectMenu: function() {\n      var data = this.data(pluginName);\n      var select = [\"<label>View as</label><br>\"];\n      var children = this.children();\n\n      function downloadButton(i, name) {\n\tvar title, glyph;\n\n\tif ( name == \"Prolog term\" ) {\n\t  title = \"Copy\";\n\t  glyph = \"copy\";\n\t} else {\n\t  title = \"Download\";\n\t  glyph = \"download\";\n\t}\n\n\tbtn = '<a href=\"#\" class=\"btn btn-style btn-sm\" '+\n\t      'data-nr=\"'+i+'\" data-action=\"'+glyph+'\" title=\"'+title+'\">' +\n\t      '<span class=\"glyphicon glyphicon-'+glyph+'\"></span></a>';\n\n\treturn btn;\n      }\n\n      var i = 0;\n      for(var i=0; i<data.display.length; i++) {\n\tvar r = $(children[i]);\n\tvar name = r.attr(\"data-render\");\n\n\tif ( !name ) {\n\t  if ( i == 0 )\n\t    name = \"Default rendered\";\n\t  else\n\t    name = \"Alt rendered [\"+(i+1)+\"]\";\n\t}\n\n\tselect.push(\"<div class='render-item'>\",\n\t\t    downloadButton(i, name),\n\t\t    \"<input type='radio' name='render' value='\", i, \"'\");\n\tif ( i == data.current ) select.push(\" checked\");\n\tselect.push(\"> \", name, \"</div>\");\n      }\n\n      select.push(\"</form\");\n      return select.join(\"\");\n    },\n\n    showSelect: function(ev) {\n      var elem = this;\n      var menu = selectMenu();\n      var pos  = this.offset();\n      var target;\n\n      hovering = true;\n      if ( timeout ) {\n\tclearTimeout(timeout);\n\ttimeout = 0;\n      }\n\n      if ( (target=menu.data(\"target\")) )\n\ttarget.removeClass(\"render-selecting\");\n      menu.data(\"target\", elem);\n\n      menu.html(this.renderMulti('selectMenu'));\n      menu.css({ top:      pos.top + 5 + \"px\",\n                 left:     pos.left + 5 + \"px\"\n               }).show(400);\n\n      this.addClass(\"render-selecting\");\n    },\n\n    hideSelect: function(ev) {\n      resetHover();\n    },\n\n    /**\n     * Select the i-th (0-based) rendering alternative\n     * @param {Integer} i denotes the alternative\n     */\n    select: function(i) {\n      var data  = this.data(pluginName);\n\n      if ( data.current != i ) {\n\tvar child = this.children();\n\tvar how   = data.display[i];\n\n\t$(child[data.current]).hide(400);\n\t$(child[i]).show(400, function() { $(this).css(\"display\", how); });\n\tthis.css(\"display\", how);\n\tif ( $(child[i]).is(\"span.render-as-prolog\") ) {\n\t  this.attr(\"draggable\", false);\n\t} else {\n\t  this.attr(\"draggable\", true);\n\t}\n\n\tdata.current = i;\n      }\n\n      closeSelectMenu();\n    },\n\n    copy: function(i) {\n      var child = this.children();\n      var data  = this.data(pluginName);\n      var old   = data.current;\n\n      function selectElementText(el) {\n\tvar range = document.createRange();\n\trange.selectNodeContents(el);\n\tvar selection = window.getSelection();\n\tselection.removeAllRanges();\n\tselection.addRange(range);\n      }\n\n      this.renderMulti('select', i);\n      selectElementText(child[i]);\n      try {\n\tdocument.execCommand(\"copy\");\n      } catch(e) {\n\talert(\"Sorry, cannot copy text with this browser\");\n      }\n      this.renderMulti('select', old);\n\n      return this;\n    },\n\n    /**\n     * Download a rendered object.  The renderer can interact with this\n     * code by setting a class `export-dom` and an event-handler for the\n     * event `export-dom`. This handler is passed a plain object, for\n     * which is must set the properties `element`, `extensions` and\n     * `contentType`\n     */\n    download: function(i) {\n      var child = this.children();\n      var node  = $(child[i]);\n      var ext   = \"html\";\n      var data;\n\n      function aSupportsDownload() {\n\treturn $(\"<a>\")[0].download != undefined;\n      }\n\n      if ( node.hasClass(\"export-dom\") ) {\n\tvar r = {};\n\tnode = node.trigger(\"export-dom\", r);\n\tif ( r.element ) {\n\t  data = r.element.outerHTML;\n\t  ext  = r.extension||\"html\";\n\t  type = r.contentType||\"text/html\";\n\t} else {\n\t  alert(\"Failed to export rendered result\");\n\t}\n      } else if ( node.find(\"svg\").length == 1 ) {\n\tvar svg = node.find(\"svg\");\n\tif ( !svg.attr(\"xmlns\") )\n\t  svg.attr(\"xmlns\", \"http://www.w3.org/2000/svg\");\n\tdata = svg[0].outerHTML\n\text  = \"svg\";\n\ttype = \"image/svg+xml\";\n      } else {\n\tdata = node.html();\n\ttype = \"text/html\";\n      }\n\n      if ( !aSupportsDownload() )\n\ttype = \"application/octet-stream\";\n\n      var href\t= \"data:\"+type+\";charset=UTF-8,\"\n\t\t+ encodeURIComponent(data);\n\n      var a = $.el.a({ href:href,\n\t\t       download:\"swish-rendered.\"+ext\n\t\t     });\n      this.append(a);\n      a.click();\n      $(a).remove();\n\n      return this;\n    },\n\n    /**\n     * @return {String} native Prolog text for a multi-rendered block\n     */\n    prologText: function() {\n      return this.find(\"span.render-as-prolog\").text();\n    }\n  }; // methods\n\n\n  function selectMenu() {\n    var menu = $(\"#render-select\");\n\n    if ( !menu[0] ) {\n      menu = $($.el.form({ id:\"render-select\",\n                           style:\"display:none\"\n\t\t         }));\n\n      menu.on(\"click\", \"a\", function(ev) {\n\tvar a = $(ev.target).closest(\"a\");\n\tvar i = a.data(\"nr\");\n\n\tmenu.data(\"target\").renderMulti(a.data(\"action\"), i);\n\treturn false;\n      });\n      menu.on(\"click\", function() {\n\tvar r = $(\"input[name=render]:checked\", $(this)).val();\n\tmenu.data(\"target\").renderMulti('select', parseInt(r));\n      });\n      menu.hover(function() { hovering = true; startMenuTimeout(); },\n\t\t function() { resetHover(); });\n\n      $(\"body\").append(menu);\n    }\n\n    return menu;\n  }\n\n  function closeSelectMenu() {\n    if ( !hovering ) {\n      var menu = selectMenu();\n      var target = menu.data(\"target\");\n\n      if ( target ) {\n\ttarget.removeClass(\"render-selecting\");\n\tmenu.data(\"target\", null);\n      }\n      menu.hide(400);\n    }\n  }\n\n  function startMenuTimeout() {\n    timeout = setTimeout(function() {\n      closeSelectMenu();\n    }, 400);\n  }\n\n  function resetHover() {\n    hovering = false;\n    startMenuTimeout();\n  }\n\n  function dragStart(ev) {\n    var dt = ev.originalEvent.dataTransfer;\n    dt.setData(\"Text\", $(ev.target).renderMulti('prologText'));\n    return true;\n  }\n\n  /**\n   * <Class description>\n   *\n   * @class renderMulti\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.renderMulti = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\n\n\n\n\n});\n\n","/**\n*\n* jquery.sparkline.js\n*\n* v2.1.2\n* (c) Splunk, Inc\n* Contact: Gareth Watts (gareth@splunk.com)\n* http://omnipotent.net/jquery.sparkline/\n*\n* Generates inline sparkline charts from data supplied either to the method\n* or inline in HTML\n*\n* Compatible with Internet Explorer 6.0+ and modern browsers equipped with the canvas tag\n* (Firefox 2.0+, Safari, Opera, etc)\n*\n* License: New BSD License\n*\n* Copyright (c) 2012, Splunk Inc.\n* All rights reserved.\n*\n* Redistribution and use in source and binary forms, with or without modification,\n* are permitted provided that the following conditions are met:\n*\n*     * Redistributions of source code must retain the above copyright notice,\n*       this list of conditions and the following disclaimer.\n*     * Redistributions in binary form must reproduce the above copyright notice,\n*       this list of conditions and the following disclaimer in the documentation\n*       and/or other materials provided with the distribution.\n*     * Neither the name of Splunk Inc nor the names of its contributors may\n*       be used to endorse or promote products derived from this software without\n*       specific prior written permission.\n*\n* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\n* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT\n* SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT\n* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*\n*\n* Usage:\n*  $(selector).sparkline(values, options)\n*\n* If values is undefined or set to 'html' then the data values are read from the specified tag:\n*   <p>Sparkline: <span class=\"sparkline\">1,4,6,6,8,5,3,5</span></p>\n*   $('.sparkline').sparkline();\n* There must be no spaces in the enclosed data set\n*\n* Otherwise values must be an array of numbers or null values\n*    <p>Sparkline: <span id=\"sparkline1\">This text replaced if the browser is compatible</span></p>\n*    $('#sparkline1').sparkline([1,4,6,6,8,5,3,5])\n*    $('#sparkline2').sparkline([1,4,6,null,null,5,3,5])\n*\n* Values can also be specified in an HTML comment, or as a values attribute:\n*    <p>Sparkline: <span class=\"sparkline\"><!--1,4,6,6,8,5,3,5 --></span></p>\n*    <p>Sparkline: <span class=\"sparkline\" values=\"1,4,6,6,8,5,3,5\"></span></p>\n*    $('.sparkline').sparkline();\n*\n* For line charts, x values can also be specified:\n*   <p>Sparkline: <span class=\"sparkline\">1:1,2.7:4,3.4:6,5:6,6:8,8.7:5,9:3,10:5</span></p>\n*    $('#sparkline1').sparkline([ [1,1], [2.7,4], [3.4,6], [5,6], [6,8], [8.7,5], [9,3], [10,5] ])\n*\n* By default, options should be passed in as teh second argument to the sparkline function:\n*   $('.sparkline').sparkline([1,2,3,4], {type: 'bar'})\n*\n* Options can also be set by passing them on the tag itself.  This feature is disabled by default though\n* as there's a slight performance overhead:\n*   $('.sparkline').sparkline([1,2,3,4], {enableTagOptions: true})\n*   <p>Sparkline: <span class=\"sparkline\" sparkType=\"bar\" sparkBarColor=\"red\">loading</span></p>\n* Prefix all options supplied as tag attribute with \"spark\" (configurable by setting tagOptionPrefix)\n*\n* Supported options:\n*   lineColor - Color of the line used for the chart\n*   fillColor - Color used to fill in the chart - Set to '' or false for a transparent chart\n*   width - Width of the chart - Defaults to 3 times the number of values in pixels\n*   height - Height of the chart - Defaults to the height of the containing element\n*   chartRangeMin - Specify the minimum value to use for the Y range of the chart - Defaults to the minimum value supplied\n*   chartRangeMax - Specify the maximum value to use for the Y range of the chart - Defaults to the maximum value supplied\n*   chartRangeClip - Clip out of range values to the max/min specified by chartRangeMin and chartRangeMax\n*   chartRangeMinX - Specify the minimum value to use for the X range of the chart - Defaults to the minimum value supplied\n*   chartRangeMaxX - Specify the maximum value to use for the X range of the chart - Defaults to the maximum value supplied\n*   composite - If true then don't erase any existing chart attached to the tag, but draw\n*           another chart over the top - Note that width and height are ignored if an\n*           existing chart is detected.\n*   tagValuesAttribute - Name of tag attribute to check for data values - Defaults to 'values'\n*   enableTagOptions - Whether to check tags for sparkline options\n*   tagOptionPrefix - Prefix used for options supplied as tag attributes - Defaults to 'spark'\n*   disableHiddenCheck - If set to true, then the plugin will assume that charts will never be drawn into a\n*           hidden dom element, avoding a browser reflow\n*   disableInteraction - If set to true then all mouseover/click interaction behaviour will be disabled,\n*       making the plugin perform much like it did in 1.x\n*   disableTooltips - If set to true then tooltips will be disabled - Defaults to false (tooltips enabled)\n*   disableHighlight - If set to true then highlighting of selected chart elements on mouseover will be disabled\n*       defaults to false (highlights enabled)\n*   highlightLighten - Factor to lighten/darken highlighted chart values by - Defaults to 1.4 for a 40% increase\n*   tooltipContainer - Specify which DOM element the tooltip should be rendered into - defaults to document.body\n*   tooltipClassname - Optional CSS classname to apply to tooltips - If not specified then a default style will be applied\n*   tooltipOffsetX - How many pixels away from the mouse pointer to render the tooltip on the X axis\n*   tooltipOffsetY - How many pixels away from the mouse pointer to render the tooltip on the r axis\n*   tooltipFormatter  - Optional callback that allows you to override the HTML displayed in the tooltip\n*       callback is given arguments of (sparkline, options, fields)\n*   tooltipChartTitle - If specified then the tooltip uses the string specified by this setting as a title\n*   tooltipFormat - A format string or SPFormat object  (or an array thereof for multiple entries)\n*       to control the format of the tooltip\n*   tooltipPrefix - A string to prepend to each field displayed in a tooltip\n*   tooltipSuffix - A string to append to each field displayed in a tooltip\n*   tooltipSkipNull - If true then null values will not have a tooltip displayed (defaults to true)\n*   tooltipValueLookups - An object or range map to map field values to tooltip strings\n*       (eg. to map -1 to \"Lost\", 0 to \"Draw\", and 1 to \"Win\")\n*   numberFormatter - Optional callback for formatting numbers in tooltips\n*   numberDigitGroupSep - Character to use for group separator in numbers \"1,234\" - Defaults to \",\"\n*   numberDecimalMark - Character to use for the decimal point when formatting numbers - Defaults to \".\"\n*   numberDigitGroupCount - Number of digits between group separator - Defaults to 3\n*\n* There are 7 types of sparkline, selected by supplying a \"type\" option of 'line' (default),\n* 'bar', 'tristate', 'bullet', 'discrete', 'pie' or 'box'\n*    line - Line chart.  Options:\n*       spotColor - Set to '' to not end each line in a circular spot\n*       minSpotColor - If set, color of spot at minimum value\n*       maxSpotColor - If set, color of spot at maximum value\n*       spotRadius - Radius in pixels\n*       lineWidth - Width of line in pixels\n*       normalRangeMin\n*       normalRangeMax - If set draws a filled horizontal bar between these two values marking the \"normal\"\n*                      or expected range of values\n*       normalRangeColor - Color to use for the above bar\n*       drawNormalOnTop - Draw the normal range above the chart fill color if true\n*       defaultPixelsPerValue - Defaults to 3 pixels of width for each value in the chart\n*       highlightSpotColor - The color to use for drawing a highlight spot on mouseover - Set to null to disable\n*       highlightLineColor - The color to use for drawing a highlight line on mouseover - Set to null to disable\n*       valueSpots - Specify which points to draw spots on, and in which color.  Accepts a range map\n*\n*   bar - Bar chart.  Options:\n*       barColor - Color of bars for postive values\n*       negBarColor - Color of bars for negative values\n*       zeroColor - Color of bars with zero values\n*       nullColor - Color of bars with null values - Defaults to omitting the bar entirely\n*       barWidth - Width of bars in pixels\n*       colorMap - Optional mappnig of values to colors to override the *BarColor values above\n*                  can be an Array of values to control the color of individual bars or a range map\n*                  to specify colors for individual ranges of values\n*       barSpacing - Gap between bars in pixels\n*       zeroAxis - Centers the y-axis around zero if true\n*\n*   tristate - Charts values of win (>0), lose (<0) or draw (=0)\n*       posBarColor - Color of win values\n*       negBarColor - Color of lose values\n*       zeroBarColor - Color of draw values\n*       barWidth - Width of bars in pixels\n*       barSpacing - Gap between bars in pixels\n*       colorMap - Optional mappnig of values to colors to override the *BarColor values above\n*                  can be an Array of values to control the color of individual bars or a range map\n*                  to specify colors for individual ranges of values\n*\n*   discrete - Options:\n*       lineHeight - Height of each line in pixels - Defaults to 30% of the graph height\n*       thesholdValue - Values less than this value will be drawn using thresholdColor instead of lineColor\n*       thresholdColor\n*\n*   bullet - Values for bullet graphs msut be in the order: target, performance, range1, range2, range3, ...\n*       options:\n*       targetColor - The color of the vertical target marker\n*       targetWidth - The width of the target marker in pixels\n*       performanceColor - The color of the performance measure horizontal bar\n*       rangeColors - Colors to use for each qualitative range background color\n*\n*   pie - Pie chart. Options:\n*       sliceColors - An array of colors to use for pie slices\n*       offset - Angle in degrees to offset the first slice - Try -90 or +90\n*       borderWidth - Width of border to draw around the pie chart, in pixels - Defaults to 0 (no border)\n*       borderColor - Color to use for the pie chart border - Defaults to #000\n*\n*   box - Box plot. Options:\n*       raw - Set to true to supply pre-computed plot points as values\n*             values should be: low_outlier, low_whisker, q1, median, q3, high_whisker, high_outlier\n*             When set to false you can supply any number of values and the box plot will\n*             be computed for you.  Default is false.\n*       showOutliers - Set to true (default) to display outliers as circles\n*       outlierIQR - Interquartile range used to determine outliers.  Default 1.5\n*       boxLineColor - Outline color of the box\n*       boxFillColor - Fill color for the box\n*       whiskerColor - Line color used for whiskers\n*       outlierLineColor - Outline color of outlier circles\n*       outlierFillColor - Fill color of the outlier circles\n*       spotRadius - Radius of outlier circles\n*       medianColor - Line color of the median line\n*       target - Draw a target cross hair at the supplied value (default undefined)\n*\n*\n*\n*   Examples:\n*   $('#sparkline1').sparkline(myvalues, { lineColor: '#f00', fillColor: false });\n*   $('.barsparks').sparkline('html', { type:'bar', height:'40px', barWidth:5 });\n*   $('#tristate').sparkline([1,1,-1,1,0,0,-1], { type:'tristate' }):\n*   $('#discrete').sparkline([1,3,4,5,5,3,4,5], { type:'discrete' });\n*   $('#bullet').sparkline([10,12,12,9,7], { type:'bullet' });\n*   $('#pie').sparkline([1,1,2], { type:'pie' });\n*/\n\n/*jslint regexp: true, browser: true, jquery: true, white: true, nomen: false, plusplus: false, maxerr: 500, indent: 4 */\n\n(function(document, Math, undefined) { // performance/minified-size optimization\n(function(factory) {\n    if(typeof define === 'function' && define.amd) {\n        define('sparkline',['jquery'], factory);\n    } else if (jQuery && !jQuery.fn.sparkline) {\n        factory(jQuery);\n    }\n}\n(function($) {\n    'use strict';\n\n    var UNSET_OPTION = {},\n        getDefaults, createClass, SPFormat, clipval, quartile, normalizeValue, normalizeValues,\n        remove, isNumber, all, sum, addCSS, ensureArray, formatNumber, RangeMap,\n        MouseHandler, Tooltip, barHighlightMixin,\n        line, bar, tristate, discrete, bullet, pie, box, defaultStyles, initStyles,\n        VShape, VCanvas_base, VCanvas_canvas, VCanvas_vml, pending, shapeCount = 0;\n\n    /**\n     * Default configuration settings\n     */\n    getDefaults = function () {\n        return {\n            // Settings common to most/all chart types\n            common: {\n                type: 'line',\n                lineColor: '#00f',\n                fillColor: '#cdf',\n                defaultPixelsPerValue: 3,\n                width: 'auto',\n                height: 'auto',\n                composite: false,\n                tagValuesAttribute: 'values',\n                tagOptionsPrefix: 'spark',\n                enableTagOptions: false,\n                enableHighlight: true,\n                highlightLighten: 1.4,\n                tooltipSkipNull: true,\n                tooltipPrefix: '',\n                tooltipSuffix: '',\n                disableHiddenCheck: false,\n                numberFormatter: false,\n                numberDigitGroupCount: 3,\n                numberDigitGroupSep: ',',\n                numberDecimalMark: '.',\n                disableTooltips: false,\n                disableInteraction: false\n            },\n            // Defaults for line charts\n            line: {\n                spotColor: '#f80',\n                highlightSpotColor: '#5f5',\n                highlightLineColor: '#f22',\n                spotRadius: 1.5,\n                minSpotColor: '#f80',\n                maxSpotColor: '#f80',\n                lineWidth: 1,\n                normalRangeMin: undefined,\n                normalRangeMax: undefined,\n                normalRangeColor: '#ccc',\n                drawNormalOnTop: false,\n                chartRangeMin: undefined,\n                chartRangeMax: undefined,\n                chartRangeMinX: undefined,\n                chartRangeMaxX: undefined,\n                tooltipFormat: new SPFormat('<span style=\"color: {{color}}\">&#9679;</span> {{prefix}}{{y}}{{suffix}}')\n            },\n            // Defaults for bar charts\n            bar: {\n                barColor: '#3366cc',\n                negBarColor: '#f44',\n                stackedBarColor: ['#3366cc', '#dc3912', '#ff9900', '#109618', '#66aa00',\n                    '#dd4477', '#0099c6', '#990099'],\n                zeroColor: undefined,\n                nullColor: undefined,\n                zeroAxis: true,\n                barWidth: 4,\n                barSpacing: 1,\n                chartRangeMax: undefined,\n                chartRangeMin: undefined,\n                chartRangeClip: false,\n                colorMap: undefined,\n                tooltipFormat: new SPFormat('<span style=\"color: {{color}}\">&#9679;</span> {{prefix}}{{value}}{{suffix}}')\n            },\n            // Defaults for tristate charts\n            tristate: {\n                barWidth: 4,\n                barSpacing: 1,\n                posBarColor: '#6f6',\n                negBarColor: '#f44',\n                zeroBarColor: '#999',\n                colorMap: {},\n                tooltipFormat: new SPFormat('<span style=\"color: {{color}}\">&#9679;</span> {{value:map}}'),\n                tooltipValueLookups: { map: { '-1': 'Loss', '0': 'Draw', '1': 'Win' } }\n            },\n            // Defaults for discrete charts\n            discrete: {\n                lineHeight: 'auto',\n                thresholdColor: undefined,\n                thresholdValue: 0,\n                chartRangeMax: undefined,\n                chartRangeMin: undefined,\n                chartRangeClip: false,\n                tooltipFormat: new SPFormat('{{prefix}}{{value}}{{suffix}}')\n            },\n            // Defaults for bullet charts\n            bullet: {\n                targetColor: '#f33',\n                targetWidth: 3, // width of the target bar in pixels\n                performanceColor: '#33f',\n                rangeColors: ['#d3dafe', '#a8b6ff', '#7f94ff'],\n                base: undefined, // set this to a number to change the base start number\n                tooltipFormat: new SPFormat('{{fieldkey:fields}} - {{value}}'),\n                tooltipValueLookups: { fields: {r: 'Range', p: 'Performance', t: 'Target'} }\n            },\n            // Defaults for pie charts\n            pie: {\n                offset: 0,\n                sliceColors: ['#3366cc', '#dc3912', '#ff9900', '#109618', '#66aa00',\n                    '#dd4477', '#0099c6', '#990099'],\n                borderWidth: 0,\n                borderColor: '#000',\n                tooltipFormat: new SPFormat('<span style=\"color: {{color}}\">&#9679;</span> {{value}} ({{percent.1}}%)')\n            },\n            // Defaults for box plots\n            box: {\n                raw: false,\n                boxLineColor: '#000',\n                boxFillColor: '#cdf',\n                whiskerColor: '#000',\n                outlierLineColor: '#333',\n                outlierFillColor: '#fff',\n                medianColor: '#f00',\n                showOutliers: true,\n                outlierIQR: 1.5,\n                spotRadius: 1.5,\n                target: undefined,\n                targetColor: '#4a2',\n                chartRangeMax: undefined,\n                chartRangeMin: undefined,\n                tooltipFormat: new SPFormat('{{field:fields}}: {{value}}'),\n                tooltipFormatFieldlistKey: 'field',\n                tooltipValueLookups: { fields: { lq: 'Lower Quartile', med: 'Median',\n                    uq: 'Upper Quartile', lo: 'Left Outlier', ro: 'Right Outlier',\n                    lw: 'Left Whisker', rw: 'Right Whisker'} }\n            }\n        };\n    };\n\n    // You can have tooltips use a css class other than jqstooltip by specifying tooltipClassname\n    defaultStyles = '.jqstooltip { ' +\n            'position: absolute;' +\n            'left: 0px;' +\n            'top: 0px;' +\n            'visibility: hidden;' +\n            'background: rgb(0, 0, 0) transparent;' +\n            'background-color: rgba(0,0,0,0.6);' +\n            'filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);' +\n            '-ms-filter: \"progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)\";' +\n            'color: white;' +\n            'font: 10px arial, san serif;' +\n            'text-align: left;' +\n            'white-space: nowrap;' +\n            'padding: 5px;' +\n            'border: 1px solid white;' +\n            'z-index: 10000;' +\n            '}' +\n            '.jqsfield { ' +\n            'color: white;' +\n            'font: 10px arial, san serif;' +\n            'text-align: left;' +\n            '}';\n\n    /**\n     * Utilities\n     */\n\n    createClass = function (/* [baseclass, [mixin, ...]], definition */) {\n        var Class, args;\n        Class = function () {\n            this.init.apply(this, arguments);\n        };\n        if (arguments.length > 1) {\n            if (arguments[0]) {\n                Class.prototype = $.extend(new arguments[0](), arguments[arguments.length - 1]);\n                Class._super = arguments[0].prototype;\n            } else {\n                Class.prototype = arguments[arguments.length - 1];\n            }\n            if (arguments.length > 2) {\n                args = Array.prototype.slice.call(arguments, 1, -1);\n                args.unshift(Class.prototype);\n                $.extend.apply($, args);\n            }\n        } else {\n            Class.prototype = arguments[0];\n        }\n        Class.prototype.cls = Class;\n        return Class;\n    };\n\n    /**\n     * Wraps a format string for tooltips\n     * {{x}}\n     * {{x.2}\n     * {{x:months}}\n     */\n    $.SPFormatClass = SPFormat = createClass({\n        fre: /\\{\\{([\\w.]+?)(:(.+?))?\\}\\}/g,\n        precre: /(\\w+)\\.(\\d+)/,\n\n        init: function (format, fclass) {\n            this.format = format;\n            this.fclass = fclass;\n        },\n\n        render: function (fieldset, lookups, options) {\n            var self = this,\n                fields = fieldset,\n                match, token, lookupkey, fieldvalue, prec;\n            return this.format.replace(this.fre, function () {\n                var lookup;\n                token = arguments[1];\n                lookupkey = arguments[3];\n                match = self.precre.exec(token);\n                if (match) {\n                    prec = match[2];\n                    token = match[1];\n                } else {\n                    prec = false;\n                }\n                fieldvalue = fields[token];\n                if (fieldvalue === undefined) {\n                    return '';\n                }\n                if (lookupkey && lookups && lookups[lookupkey]) {\n                    lookup = lookups[lookupkey];\n                    if (lookup.get) { // RangeMap\n                        return lookups[lookupkey].get(fieldvalue) || fieldvalue;\n                    } else {\n                        return lookups[lookupkey][fieldvalue] || fieldvalue;\n                    }\n                }\n                if (isNumber(fieldvalue)) {\n                    if (options.get('numberFormatter')) {\n                        fieldvalue = options.get('numberFormatter')(fieldvalue);\n                    } else {\n                        fieldvalue = formatNumber(fieldvalue, prec,\n                            options.get('numberDigitGroupCount'),\n                            options.get('numberDigitGroupSep'),\n                            options.get('numberDecimalMark'));\n                    }\n                }\n                return fieldvalue;\n            });\n        }\n    });\n\n    // convience method to avoid needing the new operator\n    $.spformat = function(format, fclass) {\n        return new SPFormat(format, fclass);\n    };\n\n    clipval = function (val, min, max) {\n        if (val < min) {\n            return min;\n        }\n        if (val > max) {\n            return max;\n        }\n        return val;\n    };\n\n    quartile = function (values, q) {\n        var vl;\n        if (q === 2) {\n            vl = Math.floor(values.length / 2);\n            return values.length % 2 ? values[vl] : (values[vl-1] + values[vl]) / 2;\n        } else {\n            if (values.length % 2 ) { // odd\n                vl = (values.length * q + q) / 4;\n                return vl % 1 ? (values[Math.floor(vl)] + values[Math.floor(vl) - 1]) / 2 : values[vl-1];\n            } else { //even\n                vl = (values.length * q + 2) / 4;\n                return vl % 1 ? (values[Math.floor(vl)] + values[Math.floor(vl) - 1]) / 2 :  values[vl-1];\n\n            }\n        }\n    };\n\n    normalizeValue = function (val) {\n        var nf;\n        switch (val) {\n            case 'undefined':\n                val = undefined;\n                break;\n            case 'null':\n                val = null;\n                break;\n            case 'true':\n                val = true;\n                break;\n            case 'false':\n                val = false;\n                break;\n            default:\n                nf = parseFloat(val);\n                if (val == nf) {\n                    val = nf;\n                }\n        }\n        return val;\n    };\n\n    normalizeValues = function (vals) {\n        var i, result = [];\n        for (i = vals.length; i--;) {\n            result[i] = normalizeValue(vals[i]);\n        }\n        return result;\n    };\n\n    remove = function (vals, filter) {\n        var i, vl, result = [];\n        for (i = 0, vl = vals.length; i < vl; i++) {\n            if (vals[i] !== filter) {\n                result.push(vals[i]);\n            }\n        }\n        return result;\n    };\n\n    isNumber = function (num) {\n        return !isNaN(parseFloat(num)) && isFinite(num);\n    };\n\n    formatNumber = function (num, prec, groupsize, groupsep, decsep) {\n        var p, i;\n        num = (prec === false ? parseFloat(num).toString() : num.toFixed(prec)).split('');\n        p = (p = $.inArray('.', num)) < 0 ? num.length : p;\n        if (p < num.length) {\n            num[p] = decsep;\n        }\n        for (i = p - groupsize; i > 0; i -= groupsize) {\n            num.splice(i, 0, groupsep);\n        }\n        return num.join('');\n    };\n\n    // determine if all values of an array match a value\n    // returns true if the array is empty\n    all = function (val, arr, ignoreNull) {\n        var i;\n        for (i = arr.length; i--; ) {\n            if (ignoreNull && arr[i] === null) continue;\n            if (arr[i] !== val) {\n                return false;\n            }\n        }\n        return true;\n    };\n\n    // sums the numeric values in an array, ignoring other values\n    sum = function (vals) {\n        var total = 0, i;\n        for (i = vals.length; i--;) {\n            total += typeof vals[i] === 'number' ? vals[i] : 0;\n        }\n        return total;\n    };\n\n    ensureArray = function (val) {\n        return $.isArray(val) ? val : [val];\n    };\n\n    // http://paulirish.com/2008/bookmarklet-inject-new-css-rules/\n    addCSS = function(css) {\n        var tag;\n        //if ('\\v' == 'v') /* ie only */ {\n        if (document.createStyleSheet) {\n            document.createStyleSheet().cssText = css;\n        } else {\n            tag = document.createElement('style');\n            tag.type = 'text/css';\n            document.getElementsByTagName('head')[0].appendChild(tag);\n            tag[(typeof document.body.style.WebkitAppearance == 'string') /* webkit only */ ? 'innerText' : 'innerHTML'] = css;\n        }\n    };\n\n    // Provide a cross-browser interface to a few simple drawing primitives\n    $.fn.simpledraw = function (width, height, useExisting, interact) {\n        var target, mhandler;\n        if (useExisting && (target = this.data('_jqs_vcanvas'))) {\n            return target;\n        }\n\n        if ($.fn.sparkline.canvas === false) {\n            // We've already determined that neither Canvas nor VML are available\n            return false;\n\n        } else if ($.fn.sparkline.canvas === undefined) {\n            // No function defined yet -- need to see if we support Canvas or VML\n            var el = document.createElement('canvas');\n            if (!!(el.getContext && el.getContext('2d'))) {\n                // Canvas is available\n                $.fn.sparkline.canvas = function(width, height, target, interact) {\n                    return new VCanvas_canvas(width, height, target, interact);\n                };\n            } else if (document.namespaces && !document.namespaces.v) {\n                // VML is available\n                document.namespaces.add('v', 'urn:schemas-microsoft-com:vml', '#default#VML');\n                $.fn.sparkline.canvas = function(width, height, target, interact) {\n                    return new VCanvas_vml(width, height, target);\n                };\n            } else {\n                // Neither Canvas nor VML are available\n                $.fn.sparkline.canvas = false;\n                return false;\n            }\n        }\n\n        if (width === undefined) {\n            width = $(this).innerWidth();\n        }\n        if (height === undefined) {\n            height = $(this).innerHeight();\n        }\n\n        target = $.fn.sparkline.canvas(width, height, this, interact);\n\n        mhandler = $(this).data('_jqs_mhandler');\n        if (mhandler) {\n            mhandler.registerCanvas(target);\n        }\n        return target;\n    };\n\n    $.fn.cleardraw = function () {\n        var target = this.data('_jqs_vcanvas');\n        if (target) {\n            target.reset();\n        }\n    };\n\n    $.RangeMapClass = RangeMap = createClass({\n        init: function (map) {\n            var key, range, rangelist = [];\n            for (key in map) {\n                if (map.hasOwnProperty(key) && typeof key === 'string' && key.indexOf(':') > -1) {\n                    range = key.split(':');\n                    range[0] = range[0].length === 0 ? -Infinity : parseFloat(range[0]);\n                    range[1] = range[1].length === 0 ? Infinity : parseFloat(range[1]);\n                    range[2] = map[key];\n                    rangelist.push(range);\n                }\n            }\n            this.map = map;\n            this.rangelist = rangelist || false;\n        },\n\n        get: function (value) {\n            var rangelist = this.rangelist,\n                i, range, result;\n            if ((result = this.map[value]) !== undefined) {\n                return result;\n            }\n            if (rangelist) {\n                for (i = rangelist.length; i--;) {\n                    range = rangelist[i];\n                    if (range[0] <= value && range[1] >= value) {\n                        return range[2];\n                    }\n                }\n            }\n            return undefined;\n        }\n    });\n\n    // Convenience function\n    $.range_map = function(map) {\n        return new RangeMap(map);\n    };\n\n    MouseHandler = createClass({\n        init: function (el, options) {\n            var $el = $(el);\n            this.$el = $el;\n            this.options = options;\n            this.currentPageX = 0;\n            this.currentPageY = 0;\n            this.el = el;\n            this.splist = [];\n            this.tooltip = null;\n            this.over = false;\n            this.displayTooltips = !options.get('disableTooltips');\n            this.highlightEnabled = !options.get('disableHighlight');\n        },\n\n        registerSparkline: function (sp) {\n            this.splist.push(sp);\n            if (this.over) {\n                this.updateDisplay();\n            }\n        },\n\n        registerCanvas: function (canvas) {\n            var $canvas = $(canvas.canvas);\n            this.canvas = canvas;\n            this.$canvas = $canvas;\n            $canvas.mouseenter($.proxy(this.mouseenter, this));\n            $canvas.mouseleave($.proxy(this.mouseleave, this));\n            $canvas.click($.proxy(this.mouseclick, this));\n        },\n\n        reset: function (removeTooltip) {\n            this.splist = [];\n            if (this.tooltip && removeTooltip) {\n                this.tooltip.remove();\n                this.tooltip = undefined;\n            }\n        },\n\n        mouseclick: function (e) {\n            var clickEvent = $.Event('sparklineClick');\n            clickEvent.originalEvent = e;\n            clickEvent.sparklines = this.splist;\n            this.$el.trigger(clickEvent);\n        },\n\n        mouseenter: function (e) {\n            $(document.body).unbind('mousemove.jqs');\n            $(document.body).bind('mousemove.jqs', $.proxy(this.mousemove, this));\n            this.over = true;\n            this.currentPageX = e.pageX;\n            this.currentPageY = e.pageY;\n            this.currentEl = e.target;\n            if (!this.tooltip && this.displayTooltips) {\n                this.tooltip = new Tooltip(this.options);\n                this.tooltip.updatePosition(e.pageX, e.pageY);\n            }\n            this.updateDisplay();\n        },\n\n        mouseleave: function () {\n            $(document.body).unbind('mousemove.jqs');\n            var splist = this.splist,\n                 spcount = splist.length,\n                 needsRefresh = false,\n                 sp, i;\n            this.over = false;\n            this.currentEl = null;\n\n            if (this.tooltip) {\n                this.tooltip.remove();\n                this.tooltip = null;\n            }\n\n            for (i = 0; i < spcount; i++) {\n                sp = splist[i];\n                if (sp.clearRegionHighlight()) {\n                    needsRefresh = true;\n                }\n            }\n\n            if (needsRefresh) {\n                this.canvas.render();\n            }\n        },\n\n        mousemove: function (e) {\n            this.currentPageX = e.pageX;\n            this.currentPageY = e.pageY;\n            this.currentEl = e.target;\n            if (this.tooltip) {\n                this.tooltip.updatePosition(e.pageX, e.pageY);\n            }\n            this.updateDisplay();\n        },\n\n        updateDisplay: function () {\n            var splist = this.splist,\n                 spcount = splist.length,\n                 needsRefresh = false,\n                 offset = this.$canvas.offset(),\n                 localX = this.currentPageX - offset.left,\n                 localY = this.currentPageY - offset.top,\n                 tooltiphtml, sp, i, result, changeEvent;\n            if (!this.over) {\n                return;\n            }\n            for (i = 0; i < spcount; i++) {\n                sp = splist[i];\n                result = sp.setRegionHighlight(this.currentEl, localX, localY);\n                if (result) {\n                    needsRefresh = true;\n                }\n            }\n            if (needsRefresh) {\n                changeEvent = $.Event('sparklineRegionChange');\n                changeEvent.sparklines = this.splist;\n                this.$el.trigger(changeEvent);\n                if (this.tooltip) {\n                    tooltiphtml = '';\n                    for (i = 0; i < spcount; i++) {\n                        sp = splist[i];\n                        tooltiphtml += sp.getCurrentRegionTooltip();\n                    }\n                    this.tooltip.setContent(tooltiphtml);\n                }\n                if (!this.disableHighlight) {\n                    this.canvas.render();\n                }\n            }\n            if (result === null) {\n                this.mouseleave();\n            }\n        }\n    });\n\n\n    Tooltip = createClass({\n        sizeStyle: 'position: static !important;' +\n            'display: block !important;' +\n            'visibility: hidden !important;' +\n            'float: left !important;',\n\n        init: function (options) {\n            var tooltipClassname = options.get('tooltipClassname', 'jqstooltip'),\n                sizetipStyle = this.sizeStyle,\n                offset;\n            this.container = options.get('tooltipContainer') || document.body;\n            this.tooltipOffsetX = options.get('tooltipOffsetX', 10);\n            this.tooltipOffsetY = options.get('tooltipOffsetY', 12);\n            // remove any previous lingering tooltip\n            $('#jqssizetip').remove();\n            $('#jqstooltip').remove();\n            this.sizetip = $('<div/>', {\n                id: 'jqssizetip',\n                style: sizetipStyle,\n                'class': tooltipClassname\n            });\n            this.tooltip = $('<div/>', {\n                id: 'jqstooltip',\n                'class': tooltipClassname\n            }).appendTo(this.container);\n            // account for the container's location\n            offset = this.tooltip.offset();\n            this.offsetLeft = offset.left;\n            this.offsetTop = offset.top;\n            this.hidden = true;\n            $(window).unbind('resize.jqs scroll.jqs');\n            $(window).bind('resize.jqs scroll.jqs', $.proxy(this.updateWindowDims, this));\n            this.updateWindowDims();\n        },\n\n        updateWindowDims: function () {\n            this.scrollTop = $(window).scrollTop();\n            this.scrollLeft = $(window).scrollLeft();\n            this.scrollRight = this.scrollLeft + $(window).width();\n            this.updatePosition();\n        },\n\n        getSize: function (content) {\n            this.sizetip.html(content).appendTo(this.container);\n            this.width = this.sizetip.width() + 1;\n            this.height = this.sizetip.height();\n            this.sizetip.remove();\n        },\n\n        setContent: function (content) {\n            if (!content) {\n                this.tooltip.css('visibility', 'hidden');\n                this.hidden = true;\n                return;\n            }\n            this.getSize(content);\n            this.tooltip.html(content)\n                .css({\n                    'width': this.width,\n                    'height': this.height,\n                    'visibility': 'visible'\n                });\n            if (this.hidden) {\n                this.hidden = false;\n                this.updatePosition();\n            }\n        },\n\n        updatePosition: function (x, y) {\n            if (x === undefined) {\n                if (this.mousex === undefined) {\n                    return;\n                }\n                x = this.mousex - this.offsetLeft;\n                y = this.mousey - this.offsetTop;\n\n            } else {\n                this.mousex = x = x - this.offsetLeft;\n                this.mousey = y = y - this.offsetTop;\n            }\n            if (!this.height || !this.width || this.hidden) {\n                return;\n            }\n\n            y -= this.height + this.tooltipOffsetY;\n            x += this.tooltipOffsetX;\n\n            if (y < this.scrollTop) {\n                y = this.scrollTop;\n            }\n            if (x < this.scrollLeft) {\n                x = this.scrollLeft;\n            } else if (x + this.width > this.scrollRight) {\n                x = this.scrollRight - this.width;\n            }\n\n            this.tooltip.css({\n                'left': x,\n                'top': y\n            });\n        },\n\n        remove: function () {\n            this.tooltip.remove();\n            this.sizetip.remove();\n            this.sizetip = this.tooltip = undefined;\n            $(window).unbind('resize.jqs scroll.jqs');\n        }\n    });\n\n    initStyles = function() {\n        addCSS(defaultStyles);\n    };\n\n    $(initStyles);\n\n    pending = [];\n    $.fn.sparkline = function (userValues, userOptions) {\n        return this.each(function () {\n            var options = new $.fn.sparkline.options(this, userOptions),\n                 $this = $(this),\n                 render, i;\n            render = function () {\n                var values, width, height, tmp, mhandler, sp, vals;\n                if (userValues === 'html' || userValues === undefined) {\n                    vals = this.getAttribute(options.get('tagValuesAttribute'));\n                    if (vals === undefined || vals === null) {\n                        vals = $this.html();\n                    }\n                    values = vals.replace(/(^\\s*<!--)|(-->\\s*$)|\\s+/g, '').split(',');\n                } else {\n                    values = userValues;\n                }\n\n                width = options.get('width') === 'auto' ? values.length * options.get('defaultPixelsPerValue') : options.get('width');\n                if (options.get('height') === 'auto') {\n                    if (!options.get('composite') || !$.data(this, '_jqs_vcanvas')) {\n                        // must be a better way to get the line height\n                        tmp = document.createElement('span');\n                        tmp.innerHTML = 'a';\n                        $this.html(tmp);\n                        height = $(tmp).innerHeight() || $(tmp).height();\n                        $(tmp).remove();\n                        tmp = null;\n                    }\n                } else {\n                    height = options.get('height');\n                }\n\n                if (!options.get('disableInteraction')) {\n                    mhandler = $.data(this, '_jqs_mhandler');\n                    if (!mhandler) {\n                        mhandler = new MouseHandler(this, options);\n                        $.data(this, '_jqs_mhandler', mhandler);\n                    } else if (!options.get('composite')) {\n                        mhandler.reset();\n                    }\n                } else {\n                    mhandler = false;\n                }\n\n                if (options.get('composite') && !$.data(this, '_jqs_vcanvas')) {\n                    if (!$.data(this, '_jqs_errnotify')) {\n                        alert('Attempted to attach a composite sparkline to an element with no existing sparkline');\n                        $.data(this, '_jqs_errnotify', true);\n                    }\n                    return;\n                }\n\n                sp = new $.fn.sparkline[options.get('type')](this, values, options, width, height);\n\n                sp.render();\n\n                if (mhandler) {\n                    mhandler.registerSparkline(sp);\n                }\n            };\n            if (($(this).html() && !options.get('disableHiddenCheck') && $(this).is(':hidden')) || !$(this).parents('body').length) {\n                if (!options.get('composite') && $.data(this, '_jqs_pending')) {\n                    // remove any existing references to the element\n                    for (i = pending.length; i; i--) {\n                        if (pending[i - 1][0] == this) {\n                            pending.splice(i - 1, 1);\n                        }\n                    }\n                }\n                pending.push([this, render]);\n                $.data(this, '_jqs_pending', true);\n            } else {\n                render.call(this);\n            }\n        });\n    };\n\n    $.fn.sparkline.defaults = getDefaults();\n\n\n    $.sparkline_display_visible = function () {\n        var el, i, pl;\n        var done = [];\n        for (i = 0, pl = pending.length; i < pl; i++) {\n            el = pending[i][0];\n            if ($(el).is(':visible') && !$(el).parents().is(':hidden')) {\n                pending[i][1].call(el);\n                $.data(pending[i][0], '_jqs_pending', false);\n                done.push(i);\n            } else if (!$(el).closest('html').length && !$.data(el, '_jqs_pending')) {\n                // element has been inserted and removed from the DOM\n                // If it was not yet inserted into the dom then the .data request\n                // will return true.\n                // removing from the dom causes the data to be removed.\n                $.data(pending[i][0], '_jqs_pending', false);\n                done.push(i);\n            }\n        }\n        for (i = done.length; i; i--) {\n            pending.splice(done[i - 1], 1);\n        }\n    };\n\n\n    /**\n     * User option handler\n     */\n    $.fn.sparkline.options = createClass({\n        init: function (tag, userOptions) {\n            var extendedOptions, defaults, base, tagOptionType;\n            this.userOptions = userOptions = userOptions || {};\n            this.tag = tag;\n            this.tagValCache = {};\n            defaults = $.fn.sparkline.defaults;\n            base = defaults.common;\n            this.tagOptionsPrefix = userOptions.enableTagOptions && (userOptions.tagOptionsPrefix || base.tagOptionsPrefix);\n\n            tagOptionType = this.getTagSetting('type');\n            if (tagOptionType === UNSET_OPTION) {\n                extendedOptions = defaults[userOptions.type || base.type];\n            } else {\n                extendedOptions = defaults[tagOptionType];\n            }\n            this.mergedOptions = $.extend({}, base, extendedOptions, userOptions);\n        },\n\n\n        getTagSetting: function (key) {\n            var prefix = this.tagOptionsPrefix,\n                val, i, pairs, keyval;\n            if (prefix === false || prefix === undefined) {\n                return UNSET_OPTION;\n            }\n            if (this.tagValCache.hasOwnProperty(key)) {\n                val = this.tagValCache.key;\n            } else {\n                val = this.tag.getAttribute(prefix + key);\n                if (val === undefined || val === null) {\n                    val = UNSET_OPTION;\n                } else if (val.substr(0, 1) === '[') {\n                    val = val.substr(1, val.length - 2).split(',');\n                    for (i = val.length; i--;) {\n                        val[i] = normalizeValue(val[i].replace(/(^\\s*)|(\\s*$)/g, ''));\n                    }\n                } else if (val.substr(0, 1) === '{') {\n                    pairs = val.substr(1, val.length - 2).split(',');\n                    val = {};\n                    for (i = pairs.length; i--;) {\n                        keyval = pairs[i].split(':', 2);\n                        val[keyval[0].replace(/(^\\s*)|(\\s*$)/g, '')] = normalizeValue(keyval[1].replace(/(^\\s*)|(\\s*$)/g, ''));\n                    }\n                } else {\n                    val = normalizeValue(val);\n                }\n                this.tagValCache.key = val;\n            }\n            return val;\n        },\n\n        get: function (key, defaultval) {\n            var tagOption = this.getTagSetting(key),\n                result;\n            if (tagOption !== UNSET_OPTION) {\n                return tagOption;\n            }\n            return (result = this.mergedOptions[key]) === undefined ? defaultval : result;\n        }\n    });\n\n\n    $.fn.sparkline._base = createClass({\n        disabled: false,\n\n        init: function (el, values, options, width, height) {\n            this.el = el;\n            this.$el = $(el);\n            this.values = values;\n            this.options = options;\n            this.width = width;\n            this.height = height;\n            this.currentRegion = undefined;\n        },\n\n        /**\n         * Setup the canvas\n         */\n        initTarget: function () {\n            var interactive = !this.options.get('disableInteraction');\n            if (!(this.target = this.$el.simpledraw(this.width, this.height, this.options.get('composite'), interactive))) {\n                this.disabled = true;\n            } else {\n                this.canvasWidth = this.target.pixelWidth;\n                this.canvasHeight = this.target.pixelHeight;\n            }\n        },\n\n        /**\n         * Actually render the chart to the canvas\n         */\n        render: function () {\n            if (this.disabled) {\n                this.el.innerHTML = '';\n                return false;\n            }\n            return true;\n        },\n\n        /**\n         * Return a region id for a given x/y co-ordinate\n         */\n        getRegion: function (x, y) {\n        },\n\n        /**\n         * Highlight an item based on the moused-over x,y co-ordinate\n         */\n        setRegionHighlight: function (el, x, y) {\n            var currentRegion = this.currentRegion,\n                highlightEnabled = !this.options.get('disableHighlight'),\n                newRegion;\n            if (x > this.canvasWidth || y > this.canvasHeight || x < 0 || y < 0) {\n                return null;\n            }\n            newRegion = this.getRegion(el, x, y);\n            if (currentRegion !== newRegion) {\n                if (currentRegion !== undefined && highlightEnabled) {\n                    this.removeHighlight();\n                }\n                this.currentRegion = newRegion;\n                if (newRegion !== undefined && highlightEnabled) {\n                    this.renderHighlight();\n                }\n                return true;\n            }\n            return false;\n        },\n\n        /**\n         * Reset any currently highlighted item\n         */\n        clearRegionHighlight: function () {\n            if (this.currentRegion !== undefined) {\n                this.removeHighlight();\n                this.currentRegion = undefined;\n                return true;\n            }\n            return false;\n        },\n\n        renderHighlight: function () {\n            this.changeHighlight(true);\n        },\n\n        removeHighlight: function () {\n            this.changeHighlight(false);\n        },\n\n        changeHighlight: function (highlight)  {},\n\n        /**\n         * Fetch the HTML to display as a tooltip\n         */\n        getCurrentRegionTooltip: function () {\n            var options = this.options,\n                header = '',\n                entries = [],\n                fields, formats, formatlen, fclass, text, i,\n                showFields, showFieldsKey, newFields, fv,\n                formatter, format, fieldlen, j;\n            if (this.currentRegion === undefined) {\n                return '';\n            }\n            fields = this.getCurrentRegionFields();\n            formatter = options.get('tooltipFormatter');\n            if (formatter) {\n                return formatter(this, options, fields);\n            }\n            if (options.get('tooltipChartTitle')) {\n                header += '<div class=\"jqs jqstitle\">' + options.get('tooltipChartTitle') + '</div>\\n';\n            }\n            formats = this.options.get('tooltipFormat');\n            if (!formats) {\n                return '';\n            }\n            if (!$.isArray(formats)) {\n                formats = [formats];\n            }\n            if (!$.isArray(fields)) {\n                fields = [fields];\n            }\n            showFields = this.options.get('tooltipFormatFieldlist');\n            showFieldsKey = this.options.get('tooltipFormatFieldlistKey');\n            if (showFields && showFieldsKey) {\n                // user-selected ordering of fields\n                newFields = [];\n                for (i = fields.length; i--;) {\n                    fv = fields[i][showFieldsKey];\n                    if ((j = $.inArray(fv, showFields)) != -1) {\n                        newFields[j] = fields[i];\n                    }\n                }\n                fields = newFields;\n            }\n            formatlen = formats.length;\n            fieldlen = fields.length;\n            for (i = 0; i < formatlen; i++) {\n                format = formats[i];\n                if (typeof format === 'string') {\n                    format = new SPFormat(format);\n                }\n                fclass = format.fclass || 'jqsfield';\n                for (j = 0; j < fieldlen; j++) {\n                    if (!fields[j].isNull || !options.get('tooltipSkipNull')) {\n                        $.extend(fields[j], {\n                            prefix: options.get('tooltipPrefix'),\n                            suffix: options.get('tooltipSuffix')\n                        });\n                        text = format.render(fields[j], options.get('tooltipValueLookups'), options);\n                        entries.push('<div class=\"' + fclass + '\">' + text + '</div>');\n                    }\n                }\n            }\n            if (entries.length) {\n                return header + entries.join('\\n');\n            }\n            return '';\n        },\n\n        getCurrentRegionFields: function () {},\n\n        calcHighlightColor: function (color, options) {\n            var highlightColor = options.get('highlightColor'),\n                lighten = options.get('highlightLighten'),\n                parse, mult, rgbnew, i;\n            if (highlightColor) {\n                return highlightColor;\n            }\n            if (lighten) {\n                // extract RGB values\n                parse = /^#([0-9a-f])([0-9a-f])([0-9a-f])$/i.exec(color) || /^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(color);\n                if (parse) {\n                    rgbnew = [];\n                    mult = color.length === 4 ? 16 : 1;\n                    for (i = 0; i < 3; i++) {\n                        rgbnew[i] = clipval(Math.round(parseInt(parse[i + 1], 16) * mult * lighten), 0, 255);\n                    }\n                    return 'rgb(' + rgbnew.join(',') + ')';\n                }\n\n            }\n            return color;\n        }\n\n    });\n\n    barHighlightMixin = {\n        changeHighlight: function (highlight) {\n            var currentRegion = this.currentRegion,\n                target = this.target,\n                shapeids = this.regionShapes[currentRegion],\n                newShapes;\n            // will be null if the region value was null\n            if (shapeids) {\n                newShapes = this.renderRegion(currentRegion, highlight);\n                if ($.isArray(newShapes) || $.isArray(shapeids)) {\n                    target.replaceWithShapes(shapeids, newShapes);\n                    this.regionShapes[currentRegion] = $.map(newShapes, function (newShape) {\n                        return newShape.id;\n                    });\n                } else {\n                    target.replaceWithShape(shapeids, newShapes);\n                    this.regionShapes[currentRegion] = newShapes.id;\n                }\n            }\n        },\n\n        render: function () {\n            var values = this.values,\n                target = this.target,\n                regionShapes = this.regionShapes,\n                shapes, ids, i, j;\n\n            if (!this.cls._super.render.call(this)) {\n                return;\n            }\n            for (i = values.length; i--;) {\n                shapes = this.renderRegion(i);\n                if (shapes) {\n                    if ($.isArray(shapes)) {\n                        ids = [];\n                        for (j = shapes.length; j--;) {\n                            shapes[j].append();\n                            ids.push(shapes[j].id);\n                        }\n                        regionShapes[i] = ids;\n                    } else {\n                        shapes.append();\n                        regionShapes[i] = shapes.id; // store just the shapeid\n                    }\n                } else {\n                    // null value\n                    regionShapes[i] = null;\n                }\n            }\n            target.render();\n        }\n    };\n\n    /**\n     * Line charts\n     */\n    $.fn.sparkline.line = line = createClass($.fn.sparkline._base, {\n        type: 'line',\n\n        init: function (el, values, options, width, height) {\n            line._super.init.call(this, el, values, options, width, height);\n            this.vertices = [];\n            this.regionMap = [];\n            this.xvalues = [];\n            this.yvalues = [];\n            this.yminmax = [];\n            this.hightlightSpotId = null;\n            this.lastShapeId = null;\n            this.initTarget();\n        },\n\n        getRegion: function (el, x, y) {\n            var i,\n                regionMap = this.regionMap; // maps regions to value positions\n            for (i = regionMap.length; i--;) {\n                if (regionMap[i] !== null && x >= regionMap[i][0] && x <= regionMap[i][1]) {\n                    return regionMap[i][2];\n                }\n            }\n            return undefined;\n        },\n\n        getCurrentRegionFields: function () {\n            var currentRegion = this.currentRegion;\n            return {\n                isNull: this.yvalues[currentRegion] === null,\n                x: this.xvalues[currentRegion],\n                y: this.yvalues[currentRegion],\n                color: this.options.get('lineColor'),\n                fillColor: this.options.get('fillColor'),\n                offset: currentRegion\n            };\n        },\n\n        renderHighlight: function () {\n            var currentRegion = this.currentRegion,\n                target = this.target,\n                vertex = this.vertices[currentRegion],\n                options = this.options,\n                spotRadius = options.get('spotRadius'),\n                highlightSpotColor = options.get('highlightSpotColor'),\n                highlightLineColor = options.get('highlightLineColor'),\n                highlightSpot, highlightLine;\n\n            if (!vertex) {\n                return;\n            }\n            if (spotRadius && highlightSpotColor) {\n                highlightSpot = target.drawCircle(vertex[0], vertex[1],\n                    spotRadius, undefined, highlightSpotColor);\n                this.highlightSpotId = highlightSpot.id;\n                target.insertAfterShape(this.lastShapeId, highlightSpot);\n            }\n            if (highlightLineColor) {\n                highlightLine = target.drawLine(vertex[0], this.canvasTop, vertex[0],\n                    this.canvasTop + this.canvasHeight, highlightLineColor);\n                this.highlightLineId = highlightLine.id;\n                target.insertAfterShape(this.lastShapeId, highlightLine);\n            }\n        },\n\n        removeHighlight: function () {\n            var target = this.target;\n            if (this.highlightSpotId) {\n                target.removeShapeId(this.highlightSpotId);\n                this.highlightSpotId = null;\n            }\n            if (this.highlightLineId) {\n                target.removeShapeId(this.highlightLineId);\n                this.highlightLineId = null;\n            }\n        },\n\n        scanValues: function () {\n            var values = this.values,\n                valcount = values.length,\n                xvalues = this.xvalues,\n                yvalues = this.yvalues,\n                yminmax = this.yminmax,\n                i, val, isStr, isArray, sp;\n            for (i = 0; i < valcount; i++) {\n                val = values[i];\n                isStr = typeof(values[i]) === 'string';\n                isArray = typeof(values[i]) === 'object' && values[i] instanceof Array;\n                sp = isStr && values[i].split(':');\n                if (isStr && sp.length === 2) { // x:y\n                    xvalues.push(Number(sp[0]));\n                    yvalues.push(Number(sp[1]));\n                    yminmax.push(Number(sp[1]));\n                } else if (isArray) {\n                    xvalues.push(val[0]);\n                    yvalues.push(val[1]);\n                    yminmax.push(val[1]);\n                } else {\n                    xvalues.push(i);\n                    if (values[i] === null || values[i] === 'null') {\n                        yvalues.push(null);\n                    } else {\n                        yvalues.push(Number(val));\n                        yminmax.push(Number(val));\n                    }\n                }\n            }\n            if (this.options.get('xvalues')) {\n                xvalues = this.options.get('xvalues');\n            }\n\n            this.maxy = this.maxyorg = Math.max.apply(Math, yminmax);\n            this.miny = this.minyorg = Math.min.apply(Math, yminmax);\n\n            this.maxx = Math.max.apply(Math, xvalues);\n            this.minx = Math.min.apply(Math, xvalues);\n\n            this.xvalues = xvalues;\n            this.yvalues = yvalues;\n            this.yminmax = yminmax;\n\n        },\n\n        processRangeOptions: function () {\n            var options = this.options,\n                normalRangeMin = options.get('normalRangeMin'),\n                normalRangeMax = options.get('normalRangeMax');\n\n            if (normalRangeMin !== undefined) {\n                if (normalRangeMin < this.miny) {\n                    this.miny = normalRangeMin;\n                }\n                if (normalRangeMax > this.maxy) {\n                    this.maxy = normalRangeMax;\n                }\n            }\n            if (options.get('chartRangeMin') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMin') < this.miny)) {\n                this.miny = options.get('chartRangeMin');\n            }\n            if (options.get('chartRangeMax') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMax') > this.maxy)) {\n                this.maxy = options.get('chartRangeMax');\n            }\n            if (options.get('chartRangeMinX') !== undefined && (options.get('chartRangeClipX') || options.get('chartRangeMinX') < this.minx)) {\n                this.minx = options.get('chartRangeMinX');\n            }\n            if (options.get('chartRangeMaxX') !== undefined && (options.get('chartRangeClipX') || options.get('chartRangeMaxX') > this.maxx)) {\n                this.maxx = options.get('chartRangeMaxX');\n            }\n\n        },\n\n        drawNormalRange: function (canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey) {\n            var normalRangeMin = this.options.get('normalRangeMin'),\n                normalRangeMax = this.options.get('normalRangeMax'),\n                ytop = canvasTop + Math.round(canvasHeight - (canvasHeight * ((normalRangeMax - this.miny) / rangey))),\n                height = Math.round((canvasHeight * (normalRangeMax - normalRangeMin)) / rangey);\n            this.target.drawRect(canvasLeft, ytop, canvasWidth, height, undefined, this.options.get('normalRangeColor')).append();\n        },\n\n        render: function () {\n            var options = this.options,\n                target = this.target,\n                canvasWidth = this.canvasWidth,\n                canvasHeight = this.canvasHeight,\n                vertices = this.vertices,\n                spotRadius = options.get('spotRadius'),\n                regionMap = this.regionMap,\n                rangex, rangey, yvallast,\n                canvasTop, canvasLeft,\n                vertex, path, paths, x, y, xnext, xpos, xposnext,\n                last, next, yvalcount, lineShapes, fillShapes, plen,\n                valueSpots, hlSpotsEnabled, color, xvalues, yvalues, i;\n\n            if (!line._super.render.call(this)) {\n                return;\n            }\n\n            this.scanValues();\n            this.processRangeOptions();\n\n            xvalues = this.xvalues;\n            yvalues = this.yvalues;\n\n            if (!this.yminmax.length || this.yvalues.length < 2) {\n                // empty or all null valuess\n                return;\n            }\n\n            canvasTop = canvasLeft = 0;\n\n            rangex = this.maxx - this.minx === 0 ? 1 : this.maxx - this.minx;\n            rangey = this.maxy - this.miny === 0 ? 1 : this.maxy - this.miny;\n            yvallast = this.yvalues.length - 1;\n\n            if (spotRadius && (canvasWidth < (spotRadius * 4) || canvasHeight < (spotRadius * 4))) {\n                spotRadius = 0;\n            }\n            if (spotRadius) {\n                // adjust the canvas size as required so that spots will fit\n                hlSpotsEnabled = options.get('highlightSpotColor') &&  !options.get('disableInteraction');\n                if (hlSpotsEnabled || options.get('minSpotColor') || (options.get('spotColor') && yvalues[yvallast] === this.miny)) {\n                    canvasHeight -= Math.ceil(spotRadius);\n                }\n                if (hlSpotsEnabled || options.get('maxSpotColor') || (options.get('spotColor') && yvalues[yvallast] === this.maxy)) {\n                    canvasHeight -= Math.ceil(spotRadius);\n                    canvasTop += Math.ceil(spotRadius);\n                }\n                if (hlSpotsEnabled ||\n                     ((options.get('minSpotColor') || options.get('maxSpotColor')) && (yvalues[0] === this.miny || yvalues[0] === this.maxy))) {\n                    canvasLeft += Math.ceil(spotRadius);\n                    canvasWidth -= Math.ceil(spotRadius);\n                }\n                if (hlSpotsEnabled || options.get('spotColor') ||\n                    (options.get('minSpotColor') || options.get('maxSpotColor') &&\n                        (yvalues[yvallast] === this.miny || yvalues[yvallast] === this.maxy))) {\n                    canvasWidth -= Math.ceil(spotRadius);\n                }\n            }\n\n\n            canvasHeight--;\n\n            if (options.get('normalRangeMin') !== undefined && !options.get('drawNormalOnTop')) {\n                this.drawNormalRange(canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey);\n            }\n\n            path = [];\n            paths = [path];\n            last = next = null;\n            yvalcount = yvalues.length;\n            for (i = 0; i < yvalcount; i++) {\n                x = xvalues[i];\n                xnext = xvalues[i + 1];\n                y = yvalues[i];\n                xpos = canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex));\n                xposnext = i < yvalcount - 1 ? canvasLeft + Math.round((xnext - this.minx) * (canvasWidth / rangex)) : canvasWidth;\n                next = xpos + ((xposnext - xpos) / 2);\n                regionMap[i] = [last || 0, next, i];\n                last = next;\n                if (y === null) {\n                    if (i) {\n                        if (yvalues[i - 1] !== null) {\n                            path = [];\n                            paths.push(path);\n                        }\n                        vertices.push(null);\n                    }\n                } else {\n                    if (y < this.miny) {\n                        y = this.miny;\n                    }\n                    if (y > this.maxy) {\n                        y = this.maxy;\n                    }\n                    if (!path.length) {\n                        // previous value was null\n                        path.push([xpos, canvasTop + canvasHeight]);\n                    }\n                    vertex = [xpos, canvasTop + Math.round(canvasHeight - (canvasHeight * ((y - this.miny) / rangey)))];\n                    path.push(vertex);\n                    vertices.push(vertex);\n                }\n            }\n\n            lineShapes = [];\n            fillShapes = [];\n            plen = paths.length;\n            for (i = 0; i < plen; i++) {\n                path = paths[i];\n                if (path.length) {\n                    if (options.get('fillColor')) {\n                        path.push([path[path.length - 1][0], (canvasTop + canvasHeight)]);\n                        fillShapes.push(path.slice(0));\n                        path.pop();\n                    }\n                    // if there's only a single point in this path, then we want to display it\n                    // as a vertical line which means we keep path[0]  as is\n                    if (path.length > 2) {\n                        // else we want the first value\n                        path[0] = [path[0][0], path[1][1]];\n                    }\n                    lineShapes.push(path);\n                }\n            }\n\n            // draw the fill first, then optionally the normal range, then the line on top of that\n            plen = fillShapes.length;\n            for (i = 0; i < plen; i++) {\n                target.drawShape(fillShapes[i],\n                    options.get('fillColor'), options.get('fillColor')).append();\n            }\n\n            if (options.get('normalRangeMin') !== undefined && options.get('drawNormalOnTop')) {\n                this.drawNormalRange(canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey);\n            }\n\n            plen = lineShapes.length;\n            for (i = 0; i < plen; i++) {\n                target.drawShape(lineShapes[i], options.get('lineColor'), undefined,\n                    options.get('lineWidth')).append();\n            }\n\n            if (spotRadius && options.get('valueSpots')) {\n                valueSpots = options.get('valueSpots');\n                if (valueSpots.get === undefined) {\n                    valueSpots = new RangeMap(valueSpots);\n                }\n                for (i = 0; i < yvalcount; i++) {\n                    color = valueSpots.get(yvalues[i]);\n                    if (color) {\n                        target.drawCircle(canvasLeft + Math.round((xvalues[i] - this.minx) * (canvasWidth / rangex)),\n                            canvasTop + Math.round(canvasHeight - (canvasHeight * ((yvalues[i] - this.miny) / rangey))),\n                            spotRadius, undefined,\n                            color).append();\n                    }\n                }\n\n            }\n            if (spotRadius && options.get('spotColor') && yvalues[yvallast] !== null) {\n                target.drawCircle(canvasLeft + Math.round((xvalues[xvalues.length - 1] - this.minx) * (canvasWidth / rangex)),\n                    canvasTop + Math.round(canvasHeight - (canvasHeight * ((yvalues[yvallast] - this.miny) / rangey))),\n                    spotRadius, undefined,\n                    options.get('spotColor')).append();\n            }\n            if (this.maxy !== this.minyorg) {\n                if (spotRadius && options.get('minSpotColor')) {\n                    x = xvalues[$.inArray(this.minyorg, yvalues)];\n                    target.drawCircle(canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex)),\n                        canvasTop + Math.round(canvasHeight - (canvasHeight * ((this.minyorg - this.miny) / rangey))),\n                        spotRadius, undefined,\n                        options.get('minSpotColor')).append();\n                }\n                if (spotRadius && options.get('maxSpotColor')) {\n                    x = xvalues[$.inArray(this.maxyorg, yvalues)];\n                    target.drawCircle(canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex)),\n                        canvasTop + Math.round(canvasHeight - (canvasHeight * ((this.maxyorg - this.miny) / rangey))),\n                        spotRadius, undefined,\n                        options.get('maxSpotColor')).append();\n                }\n            }\n\n            this.lastShapeId = target.getLastShapeId();\n            this.canvasTop = canvasTop;\n            target.render();\n        }\n    });\n\n    /**\n     * Bar charts\n     */\n    $.fn.sparkline.bar = bar = createClass($.fn.sparkline._base, barHighlightMixin, {\n        type: 'bar',\n\n        init: function (el, values, options, width, height) {\n            var barWidth = parseInt(options.get('barWidth'), 10),\n                barSpacing = parseInt(options.get('barSpacing'), 10),\n                chartRangeMin = options.get('chartRangeMin'),\n                chartRangeMax = options.get('chartRangeMax'),\n                chartRangeClip = options.get('chartRangeClip'),\n                stackMin = Infinity,\n                stackMax = -Infinity,\n                isStackString, groupMin, groupMax, stackRanges,\n                numValues, i, vlen, range, zeroAxis, xaxisOffset, min, max, clipMin, clipMax,\n                stacked, vlist, j, slen, svals, val, yoffset, yMaxCalc, canvasHeightEf;\n            bar._super.init.call(this, el, values, options, width, height);\n\n            // scan values to determine whether to stack bars\n            for (i = 0, vlen = values.length; i < vlen; i++) {\n                val = values[i];\n                isStackString = typeof(val) === 'string' && val.indexOf(':') > -1;\n                if (isStackString || $.isArray(val)) {\n                    stacked = true;\n                    if (isStackString) {\n                        val = values[i] = normalizeValues(val.split(':'));\n                    }\n                    val = remove(val, null); // min/max will treat null as zero\n                    groupMin = Math.min.apply(Math, val);\n                    groupMax = Math.max.apply(Math, val);\n                    if (groupMin < stackMin) {\n                        stackMin = groupMin;\n                    }\n                    if (groupMax > stackMax) {\n                        stackMax = groupMax;\n                    }\n                }\n            }\n\n            this.stacked = stacked;\n            this.regionShapes = {};\n            this.barWidth = barWidth;\n            this.barSpacing = barSpacing;\n            this.totalBarWidth = barWidth + barSpacing;\n            this.width = width = (values.length * barWidth) + ((values.length - 1) * barSpacing);\n\n            this.initTarget();\n\n            if (chartRangeClip) {\n                clipMin = chartRangeMin === undefined ? -Infinity : chartRangeMin;\n                clipMax = chartRangeMax === undefined ? Infinity : chartRangeMax;\n            }\n\n            numValues = [];\n            stackRanges = stacked ? [] : numValues;\n            var stackTotals = [];\n            var stackRangesNeg = [];\n            for (i = 0, vlen = values.length; i < vlen; i++) {\n                if (stacked) {\n                    vlist = values[i];\n                    values[i] = svals = [];\n                    stackTotals[i] = 0;\n                    stackRanges[i] = stackRangesNeg[i] = 0;\n                    for (j = 0, slen = vlist.length; j < slen; j++) {\n                        val = svals[j] = chartRangeClip ? clipval(vlist[j], clipMin, clipMax) : vlist[j];\n                        if (val !== null) {\n                            if (val > 0) {\n                                stackTotals[i] += val;\n                            }\n                            if (stackMin < 0 && stackMax > 0) {\n                                if (val < 0) {\n                                    stackRangesNeg[i] += Math.abs(val);\n                                } else {\n                                    stackRanges[i] += val;\n                                }\n                            } else {\n                                stackRanges[i] += Math.abs(val - (val < 0 ? stackMax : stackMin));\n                            }\n                            numValues.push(val);\n                        }\n                    }\n                } else {\n                    val = chartRangeClip ? clipval(values[i], clipMin, clipMax) : values[i];\n                    val = values[i] = normalizeValue(val);\n                    if (val !== null) {\n                        numValues.push(val);\n                    }\n                }\n            }\n            this.max = max = Math.max.apply(Math, numValues);\n            this.min = min = Math.min.apply(Math, numValues);\n            this.stackMax = stackMax = stacked ? Math.max.apply(Math, stackTotals) : max;\n            this.stackMin = stackMin = stacked ? Math.min.apply(Math, numValues) : min;\n\n            if (options.get('chartRangeMin') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMin') < min)) {\n                min = options.get('chartRangeMin');\n            }\n            if (options.get('chartRangeMax') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMax') > max)) {\n                max = options.get('chartRangeMax');\n            }\n\n            this.zeroAxis = zeroAxis = options.get('zeroAxis', true);\n            if (min <= 0 && max >= 0 && zeroAxis) {\n                xaxisOffset = 0;\n            } else if (zeroAxis == false) {\n                xaxisOffset = min;\n            } else if (min > 0) {\n                xaxisOffset = min;\n            } else {\n                xaxisOffset = max;\n            }\n            this.xaxisOffset = xaxisOffset;\n\n            range = stacked ? (Math.max.apply(Math, stackRanges) + Math.max.apply(Math, stackRangesNeg)) : max - min;\n\n            // as we plot zero/min values a single pixel line, we add a pixel to all other\n            // values - Reduce the effective canvas size to suit\n            this.canvasHeightEf = (zeroAxis && min < 0) ? this.canvasHeight - 2 : this.canvasHeight - 1;\n\n            if (min < xaxisOffset) {\n                yMaxCalc = (stacked && max >= 0) ? stackMax : max;\n                yoffset = (yMaxCalc - xaxisOffset) / range * this.canvasHeight;\n                if (yoffset !== Math.ceil(yoffset)) {\n                    this.canvasHeightEf -= 2;\n                    yoffset = Math.ceil(yoffset);\n                }\n            } else {\n                yoffset = this.canvasHeight;\n            }\n            this.yoffset = yoffset;\n\n            if ($.isArray(options.get('colorMap'))) {\n                this.colorMapByIndex = options.get('colorMap');\n                this.colorMapByValue = null;\n            } else {\n                this.colorMapByIndex = null;\n                this.colorMapByValue = options.get('colorMap');\n                if (this.colorMapByValue && this.colorMapByValue.get === undefined) {\n                    this.colorMapByValue = new RangeMap(this.colorMapByValue);\n                }\n            }\n\n            this.range = range;\n        },\n\n        getRegion: function (el, x, y) {\n            var result = Math.floor(x / this.totalBarWidth);\n            return (result < 0 || result >= this.values.length) ? undefined : result;\n        },\n\n        getCurrentRegionFields: function () {\n            var currentRegion = this.currentRegion,\n                values = ensureArray(this.values[currentRegion]),\n                result = [],\n                value, i;\n            for (i = values.length; i--;) {\n                value = values[i];\n                result.push({\n                    isNull: value === null,\n                    value: value,\n                    color: this.calcColor(i, value, currentRegion),\n                    offset: currentRegion\n                });\n            }\n            return result;\n        },\n\n        calcColor: function (stacknum, value, valuenum) {\n            var colorMapByIndex = this.colorMapByIndex,\n                colorMapByValue = this.colorMapByValue,\n                options = this.options,\n                color, newColor;\n            if (this.stacked) {\n                color = options.get('stackedBarColor');\n            } else {\n                color = (value < 0) ? options.get('negBarColor') : options.get('barColor');\n            }\n            if (value === 0 && options.get('zeroColor') !== undefined) {\n                color = options.get('zeroColor');\n            }\n            if (colorMapByValue && (newColor = colorMapByValue.get(value))) {\n                color = newColor;\n            } else if (colorMapByIndex && colorMapByIndex.length > valuenum) {\n                color = colorMapByIndex[valuenum];\n            }\n            return $.isArray(color) ? color[stacknum % color.length] : color;\n        },\n\n        /**\n         * Render bar(s) for a region\n         */\n        renderRegion: function (valuenum, highlight) {\n            var vals = this.values[valuenum],\n                options = this.options,\n                xaxisOffset = this.xaxisOffset,\n                result = [],\n                range = this.range,\n                stacked = this.stacked,\n                target = this.target,\n                x = valuenum * this.totalBarWidth,\n                canvasHeightEf = this.canvasHeightEf,\n                yoffset = this.yoffset,\n                y, height, color, isNull, yoffsetNeg, i, valcount, val, minPlotted, allMin;\n\n            vals = $.isArray(vals) ? vals : [vals];\n            valcount = vals.length;\n            val = vals[0];\n            isNull = all(null, vals);\n            allMin = all(xaxisOffset, vals, true);\n\n            if (isNull) {\n                if (options.get('nullColor')) {\n                    color = highlight ? options.get('nullColor') : this.calcHighlightColor(options.get('nullColor'), options);\n                    y = (yoffset > 0) ? yoffset - 1 : yoffset;\n                    return target.drawRect(x, y, this.barWidth - 1, 0, color, color);\n                } else {\n                    return undefined;\n                }\n            }\n            yoffsetNeg = yoffset;\n            for (i = 0; i < valcount; i++) {\n                val = vals[i];\n\n                if (stacked && val === xaxisOffset) {\n                    if (!allMin || minPlotted) {\n                        continue;\n                    }\n                    minPlotted = true;\n                }\n\n                if (range > 0) {\n                    height = Math.floor(canvasHeightEf * ((Math.abs(val - xaxisOffset) / range))) + 1;\n                } else {\n                    height = 1;\n                }\n                if (val < xaxisOffset || (val === xaxisOffset && yoffset === 0)) {\n                    y = yoffsetNeg;\n                    yoffsetNeg += height;\n                } else {\n                    y = yoffset - height;\n                    yoffset -= height;\n                }\n                color = this.calcColor(i, val, valuenum);\n                if (highlight) {\n                    color = this.calcHighlightColor(color, options);\n                }\n                result.push(target.drawRect(x, y, this.barWidth - 1, height - 1, color, color));\n            }\n            if (result.length === 1) {\n                return result[0];\n            }\n            return result;\n        }\n    });\n\n    /**\n     * Tristate charts\n     */\n    $.fn.sparkline.tristate = tristate = createClass($.fn.sparkline._base, barHighlightMixin, {\n        type: 'tristate',\n\n        init: function (el, values, options, width, height) {\n            var barWidth = parseInt(options.get('barWidth'), 10),\n                barSpacing = parseInt(options.get('barSpacing'), 10);\n            tristate._super.init.call(this, el, values, options, width, height);\n\n            this.regionShapes = {};\n            this.barWidth = barWidth;\n            this.barSpacing = barSpacing;\n            this.totalBarWidth = barWidth + barSpacing;\n            this.values = $.map(values, Number);\n            this.width = width = (values.length * barWidth) + ((values.length - 1) * barSpacing);\n\n            if ($.isArray(options.get('colorMap'))) {\n                this.colorMapByIndex = options.get('colorMap');\n                this.colorMapByValue = null;\n            } else {\n                this.colorMapByIndex = null;\n                this.colorMapByValue = options.get('colorMap');\n                if (this.colorMapByValue && this.colorMapByValue.get === undefined) {\n                    this.colorMapByValue = new RangeMap(this.colorMapByValue);\n                }\n            }\n            this.initTarget();\n        },\n\n        getRegion: function (el, x, y) {\n            return Math.floor(x / this.totalBarWidth);\n        },\n\n        getCurrentRegionFields: function () {\n            var currentRegion = this.currentRegion;\n            return {\n                isNull: this.values[currentRegion] === undefined,\n                value: this.values[currentRegion],\n                color: this.calcColor(this.values[currentRegion], currentRegion),\n                offset: currentRegion\n            };\n        },\n\n        calcColor: function (value, valuenum) {\n            var values = this.values,\n                options = this.options,\n                colorMapByIndex = this.colorMapByIndex,\n                colorMapByValue = this.colorMapByValue,\n                color, newColor;\n\n            if (colorMapByValue && (newColor = colorMapByValue.get(value))) {\n                color = newColor;\n            } else if (colorMapByIndex && colorMapByIndex.length > valuenum) {\n                color = colorMapByIndex[valuenum];\n            } else if (values[valuenum] < 0) {\n                color = options.get('negBarColor');\n            } else if (values[valuenum] > 0) {\n                color = options.get('posBarColor');\n            } else {\n                color = options.get('zeroBarColor');\n            }\n            return color;\n        },\n\n        renderRegion: function (valuenum, highlight) {\n            var values = this.values,\n                options = this.options,\n                target = this.target,\n                canvasHeight, height, halfHeight,\n                x, y, color;\n\n            canvasHeight = target.pixelHeight;\n            halfHeight = Math.round(canvasHeight / 2);\n\n            x = valuenum * this.totalBarWidth;\n            if (values[valuenum] < 0) {\n                y = halfHeight;\n                height = halfHeight - 1;\n            } else if (values[valuenum] > 0) {\n                y = 0;\n                height = halfHeight - 1;\n            } else {\n                y = halfHeight - 1;\n                height = 2;\n            }\n            color = this.calcColor(values[valuenum], valuenum);\n            if (color === null) {\n                return;\n            }\n            if (highlight) {\n                color = this.calcHighlightColor(color, options);\n            }\n            return target.drawRect(x, y, this.barWidth - 1, height - 1, color, color);\n        }\n    });\n\n    /**\n     * Discrete charts\n     */\n    $.fn.sparkline.discrete = discrete = createClass($.fn.sparkline._base, barHighlightMixin, {\n        type: 'discrete',\n\n        init: function (el, values, options, width, height) {\n            discrete._super.init.call(this, el, values, options, width, height);\n\n            this.regionShapes = {};\n            this.values = values = $.map(values, Number);\n            this.min = Math.min.apply(Math, values);\n            this.max = Math.max.apply(Math, values);\n            this.range = this.max - this.min;\n            this.width = width = options.get('width') === 'auto' ? values.length * 2 : this.width;\n            this.interval = Math.floor(width / values.length);\n            this.itemWidth = width / values.length;\n            if (options.get('chartRangeMin') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMin') < this.min)) {\n                this.min = options.get('chartRangeMin');\n            }\n            if (options.get('chartRangeMax') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMax') > this.max)) {\n                this.max = options.get('chartRangeMax');\n            }\n            this.initTarget();\n            if (this.target) {\n                this.lineHeight = options.get('lineHeight') === 'auto' ? Math.round(this.canvasHeight * 0.3) : options.get('lineHeight');\n            }\n        },\n\n        getRegion: function (el, x, y) {\n            return Math.floor(x / this.itemWidth);\n        },\n\n        getCurrentRegionFields: function () {\n            var currentRegion = this.currentRegion;\n            return {\n                isNull: this.values[currentRegion] === undefined,\n                value: this.values[currentRegion],\n                offset: currentRegion\n            };\n        },\n\n        renderRegion: function (valuenum, highlight) {\n            var values = this.values,\n                options = this.options,\n                min = this.min,\n                max = this.max,\n                range = this.range,\n                interval = this.interval,\n                target = this.target,\n                canvasHeight = this.canvasHeight,\n                lineHeight = this.lineHeight,\n                pheight = canvasHeight - lineHeight,\n                ytop, val, color, x;\n\n            val = clipval(values[valuenum], min, max);\n            x = valuenum * interval;\n            ytop = Math.round(pheight - pheight * ((val - min) / range));\n            color = (options.get('thresholdColor') && val < options.get('thresholdValue')) ? options.get('thresholdColor') : options.get('lineColor');\n            if (highlight) {\n                color = this.calcHighlightColor(color, options);\n            }\n            return target.drawLine(x, ytop, x, ytop + lineHeight, color);\n        }\n    });\n\n    /**\n     * Bullet charts\n     */\n    $.fn.sparkline.bullet = bullet = createClass($.fn.sparkline._base, {\n        type: 'bullet',\n\n        init: function (el, values, options, width, height) {\n            var min, max, vals;\n            bullet._super.init.call(this, el, values, options, width, height);\n\n            // values: target, performance, range1, range2, range3\n            this.values = values = normalizeValues(values);\n            // target or performance could be null\n            vals = values.slice();\n            vals[0] = vals[0] === null ? vals[2] : vals[0];\n            vals[1] = values[1] === null ? vals[2] : vals[1];\n            min = Math.min.apply(Math, values);\n            max = Math.max.apply(Math, values);\n            if (options.get('base') === undefined) {\n                min = min < 0 ? min : 0;\n            } else {\n                min = options.get('base');\n            }\n            this.min = min;\n            this.max = max;\n            this.range = max - min;\n            this.shapes = {};\n            this.valueShapes = {};\n            this.regiondata = {};\n            this.width = width = options.get('width') === 'auto' ? '4.0em' : width;\n            this.target = this.$el.simpledraw(width, height, options.get('composite'));\n            if (!values.length) {\n                this.disabled = true;\n            }\n            this.initTarget();\n        },\n\n        getRegion: function (el, x, y) {\n            var shapeid = this.target.getShapeAt(el, x, y);\n            return (shapeid !== undefined && this.shapes[shapeid] !== undefined) ? this.shapes[shapeid] : undefined;\n        },\n\n        getCurrentRegionFields: function () {\n            var currentRegion = this.currentRegion;\n            return {\n                fieldkey: currentRegion.substr(0, 1),\n                value: this.values[currentRegion.substr(1)],\n                region: currentRegion\n            };\n        },\n\n        changeHighlight: function (highlight) {\n            var currentRegion = this.currentRegion,\n                shapeid = this.valueShapes[currentRegion],\n                shape;\n            delete this.shapes[shapeid];\n            switch (currentRegion.substr(0, 1)) {\n                case 'r':\n                    shape = this.renderRange(currentRegion.substr(1), highlight);\n                    break;\n                case 'p':\n                    shape = this.renderPerformance(highlight);\n                    break;\n                case 't':\n                    shape = this.renderTarget(highlight);\n                    break;\n            }\n            this.valueShapes[currentRegion] = shape.id;\n            this.shapes[shape.id] = currentRegion;\n            this.target.replaceWithShape(shapeid, shape);\n        },\n\n        renderRange: function (rn, highlight) {\n            var rangeval = this.values[rn],\n                rangewidth = Math.round(this.canvasWidth * ((rangeval - this.min) / this.range)),\n                color = this.options.get('rangeColors')[rn - 2];\n            if (highlight) {\n                color = this.calcHighlightColor(color, this.options);\n            }\n            return this.target.drawRect(0, 0, rangewidth - 1, this.canvasHeight - 1, color, color);\n        },\n\n        renderPerformance: function (highlight) {\n            var perfval = this.values[1],\n                perfwidth = Math.round(this.canvasWidth * ((perfval - this.min) / this.range)),\n                color = this.options.get('performanceColor');\n            if (highlight) {\n                color = this.calcHighlightColor(color, this.options);\n            }\n            return this.target.drawRect(0, Math.round(this.canvasHeight * 0.3), perfwidth - 1,\n                Math.round(this.canvasHeight * 0.4) - 1, color, color);\n        },\n\n        renderTarget: function (highlight) {\n            var targetval = this.values[0],\n                x = Math.round(this.canvasWidth * ((targetval - this.min) / this.range) - (this.options.get('targetWidth') / 2)),\n                targettop = Math.round(this.canvasHeight * 0.10),\n                targetheight = this.canvasHeight - (targettop * 2),\n                color = this.options.get('targetColor');\n            if (highlight) {\n                color = this.calcHighlightColor(color, this.options);\n            }\n            return this.target.drawRect(x, targettop, this.options.get('targetWidth') - 1, targetheight - 1, color, color);\n        },\n\n        render: function () {\n            var vlen = this.values.length,\n                target = this.target,\n                i, shape;\n            if (!bullet._super.render.call(this)) {\n                return;\n            }\n            for (i = 2; i < vlen; i++) {\n                shape = this.renderRange(i).append();\n                this.shapes[shape.id] = 'r' + i;\n                this.valueShapes['r' + i] = shape.id;\n            }\n            if (this.values[1] !== null) {\n                shape = this.renderPerformance().append();\n                this.shapes[shape.id] = 'p1';\n                this.valueShapes.p1 = shape.id;\n            }\n            if (this.values[0] !== null) {\n                shape = this.renderTarget().append();\n                this.shapes[shape.id] = 't0';\n                this.valueShapes.t0 = shape.id;\n            }\n            target.render();\n        }\n    });\n\n    /**\n     * Pie charts\n     */\n    $.fn.sparkline.pie = pie = createClass($.fn.sparkline._base, {\n        type: 'pie',\n\n        init: function (el, values, options, width, height) {\n            var total = 0, i;\n\n            pie._super.init.call(this, el, values, options, width, height);\n\n            this.shapes = {}; // map shape ids to value offsets\n            this.valueShapes = {}; // maps value offsets to shape ids\n            this.values = values = $.map(values, Number);\n\n            if (options.get('width') === 'auto') {\n                this.width = this.height;\n            }\n\n            if (values.length > 0) {\n                for (i = values.length; i--;) {\n                    total += values[i];\n                }\n            }\n            this.total = total;\n            this.initTarget();\n            this.radius = Math.floor(Math.min(this.canvasWidth, this.canvasHeight) / 2);\n        },\n\n        getRegion: function (el, x, y) {\n            var shapeid = this.target.getShapeAt(el, x, y);\n            return (shapeid !== undefined && this.shapes[shapeid] !== undefined) ? this.shapes[shapeid] : undefined;\n        },\n\n        getCurrentRegionFields: function () {\n            var currentRegion = this.currentRegion;\n            return {\n                isNull: this.values[currentRegion] === undefined,\n                value: this.values[currentRegion],\n                percent: this.values[currentRegion] / this.total * 100,\n                color: this.options.get('sliceColors')[currentRegion % this.options.get('sliceColors').length],\n                offset: currentRegion\n            };\n        },\n\n        changeHighlight: function (highlight) {\n            var currentRegion = this.currentRegion,\n                 newslice = this.renderSlice(currentRegion, highlight),\n                 shapeid = this.valueShapes[currentRegion];\n            delete this.shapes[shapeid];\n            this.target.replaceWithShape(shapeid, newslice);\n            this.valueShapes[currentRegion] = newslice.id;\n            this.shapes[newslice.id] = currentRegion;\n        },\n\n        renderSlice: function (valuenum, highlight) {\n            var target = this.target,\n                options = this.options,\n                radius = this.radius,\n                borderWidth = options.get('borderWidth'),\n                offset = options.get('offset'),\n                circle = 2 * Math.PI,\n                values = this.values,\n                total = this.total,\n                next = offset ? (2*Math.PI)*(offset/360) : 0,\n                start, end, i, vlen, color;\n\n            vlen = values.length;\n            for (i = 0; i < vlen; i++) {\n                start = next;\n                end = next;\n                if (total > 0) {  // avoid divide by zero\n                    end = next + (circle * (values[i] / total));\n                }\n                if (valuenum === i) {\n                    color = options.get('sliceColors')[i % options.get('sliceColors').length];\n                    if (highlight) {\n                        color = this.calcHighlightColor(color, options);\n                    }\n\n                    return target.drawPieSlice(radius, radius, radius - borderWidth, start, end, undefined, color);\n                }\n                next = end;\n            }\n        },\n\n        render: function () {\n            var target = this.target,\n                values = this.values,\n                options = this.options,\n                radius = this.radius,\n                borderWidth = options.get('borderWidth'),\n                shape, i;\n\n            if (!pie._super.render.call(this)) {\n                return;\n            }\n            if (borderWidth) {\n                target.drawCircle(radius, radius, Math.floor(radius - (borderWidth / 2)),\n                    options.get('borderColor'), undefined, borderWidth).append();\n            }\n            for (i = values.length; i--;) {\n                if (values[i]) { // don't render zero values\n                    shape = this.renderSlice(i).append();\n                    this.valueShapes[i] = shape.id; // store just the shapeid\n                    this.shapes[shape.id] = i;\n                }\n            }\n            target.render();\n        }\n    });\n\n    /**\n     * Box plots\n     */\n    $.fn.sparkline.box = box = createClass($.fn.sparkline._base, {\n        type: 'box',\n\n        init: function (el, values, options, width, height) {\n            box._super.init.call(this, el, values, options, width, height);\n            this.values = $.map(values, Number);\n            this.width = options.get('width') === 'auto' ? '4.0em' : width;\n            this.initTarget();\n            if (!this.values.length) {\n                this.disabled = 1;\n            }\n        },\n\n        /**\n         * Simulate a single region\n         */\n        getRegion: function () {\n            return 1;\n        },\n\n        getCurrentRegionFields: function () {\n            var result = [\n                { field: 'lq', value: this.quartiles[0] },\n                { field: 'med', value: this.quartiles[1] },\n                { field: 'uq', value: this.quartiles[2] }\n            ];\n            if (this.loutlier !== undefined) {\n                result.push({ field: 'lo', value: this.loutlier});\n            }\n            if (this.routlier !== undefined) {\n                result.push({ field: 'ro', value: this.routlier});\n            }\n            if (this.lwhisker !== undefined) {\n                result.push({ field: 'lw', value: this.lwhisker});\n            }\n            if (this.rwhisker !== undefined) {\n                result.push({ field: 'rw', value: this.rwhisker});\n            }\n            return result;\n        },\n\n        render: function () {\n            var target = this.target,\n                values = this.values,\n                vlen = values.length,\n                options = this.options,\n                canvasWidth = this.canvasWidth,\n                canvasHeight = this.canvasHeight,\n                minValue = options.get('chartRangeMin') === undefined ? Math.min.apply(Math, values) : options.get('chartRangeMin'),\n                maxValue = options.get('chartRangeMax') === undefined ? Math.max.apply(Math, values) : options.get('chartRangeMax'),\n                canvasLeft = 0,\n                lwhisker, loutlier, iqr, q1, q2, q3, rwhisker, routlier, i,\n                size, unitSize;\n\n            if (!box._super.render.call(this)) {\n                return;\n            }\n\n            if (options.get('raw')) {\n                if (options.get('showOutliers') && values.length > 5) {\n                    loutlier = values[0];\n                    lwhisker = values[1];\n                    q1 = values[2];\n                    q2 = values[3];\n                    q3 = values[4];\n                    rwhisker = values[5];\n                    routlier = values[6];\n                } else {\n                    lwhisker = values[0];\n                    q1 = values[1];\n                    q2 = values[2];\n                    q3 = values[3];\n                    rwhisker = values[4];\n                }\n            } else {\n                values.sort(function (a, b) { return a - b; });\n                q1 = quartile(values, 1);\n                q2 = quartile(values, 2);\n                q3 = quartile(values, 3);\n                iqr = q3 - q1;\n                if (options.get('showOutliers')) {\n                    lwhisker = rwhisker = undefined;\n                    for (i = 0; i < vlen; i++) {\n                        if (lwhisker === undefined && values[i] > q1 - (iqr * options.get('outlierIQR'))) {\n                            lwhisker = values[i];\n                        }\n                        if (values[i] < q3 + (iqr * options.get('outlierIQR'))) {\n                            rwhisker = values[i];\n                        }\n                    }\n                    loutlier = values[0];\n                    routlier = values[vlen - 1];\n                } else {\n                    lwhisker = values[0];\n                    rwhisker = values[vlen - 1];\n                }\n            }\n            this.quartiles = [q1, q2, q3];\n            this.lwhisker = lwhisker;\n            this.rwhisker = rwhisker;\n            this.loutlier = loutlier;\n            this.routlier = routlier;\n\n            unitSize = canvasWidth / (maxValue - minValue + 1);\n            if (options.get('showOutliers')) {\n                canvasLeft = Math.ceil(options.get('spotRadius'));\n                canvasWidth -= 2 * Math.ceil(options.get('spotRadius'));\n                unitSize = canvasWidth / (maxValue - minValue + 1);\n                if (loutlier < lwhisker) {\n                    target.drawCircle((loutlier - minValue) * unitSize + canvasLeft,\n                        canvasHeight / 2,\n                        options.get('spotRadius'),\n                        options.get('outlierLineColor'),\n                        options.get('outlierFillColor')).append();\n                }\n                if (routlier > rwhisker) {\n                    target.drawCircle((routlier - minValue) * unitSize + canvasLeft,\n                        canvasHeight / 2,\n                        options.get('spotRadius'),\n                        options.get('outlierLineColor'),\n                        options.get('outlierFillColor')).append();\n                }\n            }\n\n            // box\n            target.drawRect(\n                Math.round((q1 - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight * 0.1),\n                Math.round((q3 - q1) * unitSize),\n                Math.round(canvasHeight * 0.8),\n                options.get('boxLineColor'),\n                options.get('boxFillColor')).append();\n            // left whisker\n            target.drawLine(\n                Math.round((lwhisker - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight / 2),\n                Math.round((q1 - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight / 2),\n                options.get('lineColor')).append();\n            target.drawLine(\n                Math.round((lwhisker - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight / 4),\n                Math.round((lwhisker - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight - canvasHeight / 4),\n                options.get('whiskerColor')).append();\n            // right whisker\n            target.drawLine(Math.round((rwhisker - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight / 2),\n                Math.round((q3 - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight / 2),\n                options.get('lineColor')).append();\n            target.drawLine(\n                Math.round((rwhisker - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight / 4),\n                Math.round((rwhisker - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight - canvasHeight / 4),\n                options.get('whiskerColor')).append();\n            // median line\n            target.drawLine(\n                Math.round((q2 - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight * 0.1),\n                Math.round((q2 - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight * 0.9),\n                options.get('medianColor')).append();\n            if (options.get('target')) {\n                size = Math.ceil(options.get('spotRadius'));\n                target.drawLine(\n                    Math.round((options.get('target') - minValue) * unitSize + canvasLeft),\n                    Math.round((canvasHeight / 2) - size),\n                    Math.round((options.get('target') - minValue) * unitSize + canvasLeft),\n                    Math.round((canvasHeight / 2) + size),\n                    options.get('targetColor')).append();\n                target.drawLine(\n                    Math.round((options.get('target') - minValue) * unitSize + canvasLeft - size),\n                    Math.round(canvasHeight / 2),\n                    Math.round((options.get('target') - minValue) * unitSize + canvasLeft + size),\n                    Math.round(canvasHeight / 2),\n                    options.get('targetColor')).append();\n            }\n            target.render();\n        }\n    });\n\n    // Setup a very simple \"virtual canvas\" to make drawing the few shapes we need easier\n    // This is accessible as $(foo).simpledraw()\n\n    VShape = createClass({\n        init: function (target, id, type, args) {\n            this.target = target;\n            this.id = id;\n            this.type = type;\n            this.args = args;\n        },\n        append: function () {\n            this.target.appendShape(this);\n            return this;\n        }\n    });\n\n    VCanvas_base = createClass({\n        _pxregex: /(\\d+)(px)?\\s*$/i,\n\n        init: function (width, height, target) {\n            if (!width) {\n                return;\n            }\n            this.width = width;\n            this.height = height;\n            this.target = target;\n            this.lastShapeId = null;\n            if (target[0]) {\n                target = target[0];\n            }\n            $.data(target, '_jqs_vcanvas', this);\n        },\n\n        drawLine: function (x1, y1, x2, y2, lineColor, lineWidth) {\n            return this.drawShape([[x1, y1], [x2, y2]], lineColor, lineWidth);\n        },\n\n        drawShape: function (path, lineColor, fillColor, lineWidth) {\n            return this._genShape('Shape', [path, lineColor, fillColor, lineWidth]);\n        },\n\n        drawCircle: function (x, y, radius, lineColor, fillColor, lineWidth) {\n            return this._genShape('Circle', [x, y, radius, lineColor, fillColor, lineWidth]);\n        },\n\n        drawPieSlice: function (x, y, radius, startAngle, endAngle, lineColor, fillColor) {\n            return this._genShape('PieSlice', [x, y, radius, startAngle, endAngle, lineColor, fillColor]);\n        },\n\n        drawRect: function (x, y, width, height, lineColor, fillColor) {\n            return this._genShape('Rect', [x, y, width, height, lineColor, fillColor]);\n        },\n\n        getElement: function () {\n            return this.canvas;\n        },\n\n        /**\n         * Return the most recently inserted shape id\n         */\n        getLastShapeId: function () {\n            return this.lastShapeId;\n        },\n\n        /**\n         * Clear and reset the canvas\n         */\n        reset: function () {\n            alert('reset not implemented');\n        },\n\n        _insert: function (el, target) {\n            $(target).html(el);\n        },\n\n        /**\n         * Calculate the pixel dimensions of the canvas\n         */\n        _calculatePixelDims: function (width, height, canvas) {\n            // XXX This should probably be a configurable option\n            var match;\n            match = this._pxregex.exec(height);\n            if (match) {\n                this.pixelHeight = match[1];\n            } else {\n                this.pixelHeight = $(canvas).height();\n            }\n            match = this._pxregex.exec(width);\n            if (match) {\n                this.pixelWidth = match[1];\n            } else {\n                this.pixelWidth = $(canvas).width();\n            }\n        },\n\n        /**\n         * Generate a shape object and id for later rendering\n         */\n        _genShape: function (shapetype, shapeargs) {\n            var id = shapeCount++;\n            shapeargs.unshift(id);\n            return new VShape(this, id, shapetype, shapeargs);\n        },\n\n        /**\n         * Add a shape to the end of the render queue\n         */\n        appendShape: function (shape) {\n            alert('appendShape not implemented');\n        },\n\n        /**\n         * Replace one shape with another\n         */\n        replaceWithShape: function (shapeid, shape) {\n            alert('replaceWithShape not implemented');\n        },\n\n        /**\n         * Insert one shape after another in the render queue\n         */\n        insertAfterShape: function (shapeid, shape) {\n            alert('insertAfterShape not implemented');\n        },\n\n        /**\n         * Remove a shape from the queue\n         */\n        removeShapeId: function (shapeid) {\n            alert('removeShapeId not implemented');\n        },\n\n        /**\n         * Find a shape at the specified x/y co-ordinates\n         */\n        getShapeAt: function (el, x, y) {\n            alert('getShapeAt not implemented');\n        },\n\n        /**\n         * Render all queued shapes onto the canvas\n         */\n        render: function () {\n            alert('render not implemented');\n        }\n    });\n\n    VCanvas_canvas = createClass(VCanvas_base, {\n        init: function (width, height, target, interact) {\n            VCanvas_canvas._super.init.call(this, width, height, target);\n            this.canvas = document.createElement('canvas');\n            if (target[0]) {\n                target = target[0];\n            }\n            $.data(target, '_jqs_vcanvas', this);\n            $(this.canvas).css({ display: 'inline-block', width: width, height: height, verticalAlign: 'top' });\n            this._insert(this.canvas, target);\n            this._calculatePixelDims(width, height, this.canvas);\n            this.canvas.width = this.pixelWidth;\n            this.canvas.height = this.pixelHeight;\n            this.interact = interact;\n            this.shapes = {};\n            this.shapeseq = [];\n            this.currentTargetShapeId = undefined;\n            $(this.canvas).css({width: this.pixelWidth, height: this.pixelHeight});\n        },\n\n        _getContext: function (lineColor, fillColor, lineWidth) {\n            var context = this.canvas.getContext('2d');\n            if (lineColor !== undefined) {\n                context.strokeStyle = lineColor;\n            }\n            context.lineWidth = lineWidth === undefined ? 1 : lineWidth;\n            if (fillColor !== undefined) {\n                context.fillStyle = fillColor;\n            }\n            return context;\n        },\n\n        reset: function () {\n            var context = this._getContext();\n            context.clearRect(0, 0, this.pixelWidth, this.pixelHeight);\n            this.shapes = {};\n            this.shapeseq = [];\n            this.currentTargetShapeId = undefined;\n        },\n\n        _drawShape: function (shapeid, path, lineColor, fillColor, lineWidth) {\n            var context = this._getContext(lineColor, fillColor, lineWidth),\n                i, plen;\n            context.beginPath();\n            context.moveTo(path[0][0] + 0.5, path[0][1] + 0.5);\n            for (i = 1, plen = path.length; i < plen; i++) {\n                context.lineTo(path[i][0] + 0.5, path[i][1] + 0.5); // the 0.5 offset gives us crisp pixel-width lines\n            }\n            if (lineColor !== undefined) {\n                context.stroke();\n            }\n            if (fillColor !== undefined) {\n                context.fill();\n            }\n            if (this.targetX !== undefined && this.targetY !== undefined &&\n                context.isPointInPath(this.targetX, this.targetY)) {\n                this.currentTargetShapeId = shapeid;\n            }\n        },\n\n        _drawCircle: function (shapeid, x, y, radius, lineColor, fillColor, lineWidth) {\n            var context = this._getContext(lineColor, fillColor, lineWidth);\n            context.beginPath();\n            context.arc(x, y, radius, 0, 2 * Math.PI, false);\n            if (this.targetX !== undefined && this.targetY !== undefined &&\n                context.isPointInPath(this.targetX, this.targetY)) {\n                this.currentTargetShapeId = shapeid;\n            }\n            if (lineColor !== undefined) {\n                context.stroke();\n            }\n            if (fillColor !== undefined) {\n                context.fill();\n            }\n        },\n\n        _drawPieSlice: function (shapeid, x, y, radius, startAngle, endAngle, lineColor, fillColor) {\n            var context = this._getContext(lineColor, fillColor);\n            context.beginPath();\n            context.moveTo(x, y);\n            context.arc(x, y, radius, startAngle, endAngle, false);\n            context.lineTo(x, y);\n            context.closePath();\n            if (lineColor !== undefined) {\n                context.stroke();\n            }\n            if (fillColor) {\n                context.fill();\n            }\n            if (this.targetX !== undefined && this.targetY !== undefined &&\n                context.isPointInPath(this.targetX, this.targetY)) {\n                this.currentTargetShapeId = shapeid;\n            }\n        },\n\n        _drawRect: function (shapeid, x, y, width, height, lineColor, fillColor) {\n            return this._drawShape(shapeid, [[x, y], [x + width, y], [x + width, y + height], [x, y + height], [x, y]], lineColor, fillColor);\n        },\n\n        appendShape: function (shape) {\n            this.shapes[shape.id] = shape;\n            this.shapeseq.push(shape.id);\n            this.lastShapeId = shape.id;\n            return shape.id;\n        },\n\n        replaceWithShape: function (shapeid, shape) {\n            var shapeseq = this.shapeseq,\n                i;\n            this.shapes[shape.id] = shape;\n            for (i = shapeseq.length; i--;) {\n                if (shapeseq[i] == shapeid) {\n                    shapeseq[i] = shape.id;\n                }\n            }\n            delete this.shapes[shapeid];\n        },\n\n        replaceWithShapes: function (shapeids, shapes) {\n            var shapeseq = this.shapeseq,\n                shapemap = {},\n                sid, i, first;\n\n            for (i = shapeids.length; i--;) {\n                shapemap[shapeids[i]] = true;\n            }\n            for (i = shapeseq.length; i--;) {\n                sid = shapeseq[i];\n                if (shapemap[sid]) {\n                    shapeseq.splice(i, 1);\n                    delete this.shapes[sid];\n                    first = i;\n                }\n            }\n            for (i = shapes.length; i--;) {\n                shapeseq.splice(first, 0, shapes[i].id);\n                this.shapes[shapes[i].id] = shapes[i];\n            }\n\n        },\n\n        insertAfterShape: function (shapeid, shape) {\n            var shapeseq = this.shapeseq,\n                i;\n            for (i = shapeseq.length; i--;) {\n                if (shapeseq[i] === shapeid) {\n                    shapeseq.splice(i + 1, 0, shape.id);\n                    this.shapes[shape.id] = shape;\n                    return;\n                }\n            }\n        },\n\n        removeShapeId: function (shapeid) {\n            var shapeseq = this.shapeseq,\n                i;\n            for (i = shapeseq.length; i--;) {\n                if (shapeseq[i] === shapeid) {\n                    shapeseq.splice(i, 1);\n                    break;\n                }\n            }\n            delete this.shapes[shapeid];\n        },\n\n        getShapeAt: function (el, x, y) {\n            this.targetX = x;\n            this.targetY = y;\n            this.render();\n            return this.currentTargetShapeId;\n        },\n\n        render: function () {\n            var shapeseq = this.shapeseq,\n                shapes = this.shapes,\n                shapeCount = shapeseq.length,\n                context = this._getContext(),\n                shapeid, shape, i;\n            context.clearRect(0, 0, this.pixelWidth, this.pixelHeight);\n            for (i = 0; i < shapeCount; i++) {\n                shapeid = shapeseq[i];\n                shape = shapes[shapeid];\n                this['_draw' + shape.type].apply(this, shape.args);\n            }\n            if (!this.interact) {\n                // not interactive so no need to keep the shapes array\n                this.shapes = {};\n                this.shapeseq = [];\n            }\n        }\n\n    });\n\n    VCanvas_vml = createClass(VCanvas_base, {\n        init: function (width, height, target) {\n            var groupel;\n            VCanvas_vml._super.init.call(this, width, height, target);\n            if (target[0]) {\n                target = target[0];\n            }\n            $.data(target, '_jqs_vcanvas', this);\n            this.canvas = document.createElement('span');\n            $(this.canvas).css({ display: 'inline-block', position: 'relative', overflow: 'hidden', width: width, height: height, margin: '0px', padding: '0px', verticalAlign: 'top'});\n            this._insert(this.canvas, target);\n            this._calculatePixelDims(width, height, this.canvas);\n            this.canvas.width = this.pixelWidth;\n            this.canvas.height = this.pixelHeight;\n            groupel = '<v:group coordorigin=\"0 0\" coordsize=\"' + this.pixelWidth + ' ' + this.pixelHeight + '\"' +\n                    ' style=\"position:absolute;top:0;left:0;width:' + this.pixelWidth + 'px;height=' + this.pixelHeight + 'px;\"></v:group>';\n            this.canvas.insertAdjacentHTML('beforeEnd', groupel);\n            this.group = $(this.canvas).children()[0];\n            this.rendered = false;\n            this.prerender = '';\n        },\n\n        _drawShape: function (shapeid, path, lineColor, fillColor, lineWidth) {\n            var vpath = [],\n                initial, stroke, fill, closed, vel, plen, i;\n            for (i = 0, plen = path.length; i < plen; i++) {\n                vpath[i] = '' + (path[i][0]) + ',' + (path[i][1]);\n            }\n            initial = vpath.splice(0, 1);\n            lineWidth = lineWidth === undefined ? 1 : lineWidth;\n            stroke = lineColor === undefined ? ' stroked=\"false\" ' : ' strokeWeight=\"' + lineWidth + 'px\" strokeColor=\"' + lineColor + '\" ';\n            fill = fillColor === undefined ? ' filled=\"false\"' : ' fillColor=\"' + fillColor + '\" filled=\"true\" ';\n            closed = vpath[0] === vpath[vpath.length - 1] ? 'x ' : '';\n            vel = '<v:shape coordorigin=\"0 0\" coordsize=\"' + this.pixelWidth + ' ' + this.pixelHeight + '\" ' +\n                 ' id=\"jqsshape' + shapeid + '\" ' +\n                 stroke +\n                 fill +\n                ' style=\"position:absolute;left:0px;top:0px;height:' + this.pixelHeight + 'px;width:' + this.pixelWidth + 'px;padding:0px;margin:0px;\" ' +\n                ' path=\"m ' + initial + ' l ' + vpath.join(', ') + ' ' + closed + 'e\">' +\n                ' </v:shape>';\n            return vel;\n        },\n\n        _drawCircle: function (shapeid, x, y, radius, lineColor, fillColor, lineWidth) {\n            var stroke, fill, vel;\n            x -= radius;\n            y -= radius;\n            stroke = lineColor === undefined ? ' stroked=\"false\" ' : ' strokeWeight=\"' + lineWidth + 'px\" strokeColor=\"' + lineColor + '\" ';\n            fill = fillColor === undefined ? ' filled=\"false\"' : ' fillColor=\"' + fillColor + '\" filled=\"true\" ';\n            vel = '<v:oval ' +\n                 ' id=\"jqsshape' + shapeid + '\" ' +\n                stroke +\n                fill +\n                ' style=\"position:absolute;top:' + y + 'px; left:' + x + 'px; width:' + (radius * 2) + 'px; height:' + (radius * 2) + 'px\"></v:oval>';\n            return vel;\n\n        },\n\n        _drawPieSlice: function (shapeid, x, y, radius, startAngle, endAngle, lineColor, fillColor) {\n            var vpath, startx, starty, endx, endy, stroke, fill, vel;\n            if (startAngle === endAngle) {\n                return '';  // VML seems to have problem when start angle equals end angle.\n            }\n            if ((endAngle - startAngle) === (2 * Math.PI)) {\n                startAngle = 0.0;  // VML seems to have a problem when drawing a full circle that doesn't start 0\n                endAngle = (2 * Math.PI);\n            }\n\n            startx = x + Math.round(Math.cos(startAngle) * radius);\n            starty = y + Math.round(Math.sin(startAngle) * radius);\n            endx = x + Math.round(Math.cos(endAngle) * radius);\n            endy = y + Math.round(Math.sin(endAngle) * radius);\n\n            if (startx === endx && starty === endy) {\n                if ((endAngle - startAngle) < Math.PI) {\n                    // Prevent very small slices from being mistaken as a whole pie\n                    return '';\n                }\n                // essentially going to be the entire circle, so ignore startAngle\n                startx = endx = x + radius;\n                starty = endy = y;\n            }\n\n            if (startx === endx && starty === endy && (endAngle - startAngle) < Math.PI) {\n                return '';\n            }\n\n            vpath = [x - radius, y - radius, x + radius, y + radius, startx, starty, endx, endy];\n            stroke = lineColor === undefined ? ' stroked=\"false\" ' : ' strokeWeight=\"1px\" strokeColor=\"' + lineColor + '\" ';\n            fill = fillColor === undefined ? ' filled=\"false\"' : ' fillColor=\"' + fillColor + '\" filled=\"true\" ';\n            vel = '<v:shape coordorigin=\"0 0\" coordsize=\"' + this.pixelWidth + ' ' + this.pixelHeight + '\" ' +\n                 ' id=\"jqsshape' + shapeid + '\" ' +\n                 stroke +\n                 fill +\n                ' style=\"position:absolute;left:0px;top:0px;height:' + this.pixelHeight + 'px;width:' + this.pixelWidth + 'px;padding:0px;margin:0px;\" ' +\n                ' path=\"m ' + x + ',' + y + ' wa ' + vpath.join(', ') + ' x e\">' +\n                ' </v:shape>';\n            return vel;\n        },\n\n        _drawRect: function (shapeid, x, y, width, height, lineColor, fillColor) {\n            return this._drawShape(shapeid, [[x, y], [x, y + height], [x + width, y + height], [x + width, y], [x, y]], lineColor, fillColor);\n        },\n\n        reset: function () {\n            this.group.innerHTML = '';\n        },\n\n        appendShape: function (shape) {\n            var vel = this['_draw' + shape.type].apply(this, shape.args);\n            if (this.rendered) {\n                this.group.insertAdjacentHTML('beforeEnd', vel);\n            } else {\n                this.prerender += vel;\n            }\n            this.lastShapeId = shape.id;\n            return shape.id;\n        },\n\n        replaceWithShape: function (shapeid, shape) {\n            var existing = $('#jqsshape' + shapeid),\n                vel = this['_draw' + shape.type].apply(this, shape.args);\n            existing[0].outerHTML = vel;\n        },\n\n        replaceWithShapes: function (shapeids, shapes) {\n            // replace the first shapeid with all the new shapes then toast the remaining old shapes\n            var existing = $('#jqsshape' + shapeids[0]),\n                replace = '',\n                slen = shapes.length,\n                i;\n            for (i = 0; i < slen; i++) {\n                replace += this['_draw' + shapes[i].type].apply(this, shapes[i].args);\n            }\n            existing[0].outerHTML = replace;\n            for (i = 1; i < shapeids.length; i++) {\n                $('#jqsshape' + shapeids[i]).remove();\n            }\n        },\n\n        insertAfterShape: function (shapeid, shape) {\n            var existing = $('#jqsshape' + shapeid),\n                 vel = this['_draw' + shape.type].apply(this, shape.args);\n            existing[0].insertAdjacentHTML('afterEnd', vel);\n        },\n\n        removeShapeId: function (shapeid) {\n            var existing = $('#jqsshape' + shapeid);\n            this.group.removeChild(existing[0]);\n        },\n\n        getShapeAt: function (el, x, y) {\n            var shapeid = el.id.substr(8);\n            return shapeid;\n        },\n\n        render: function () {\n            if (!this.rendered) {\n                // batch the intial render into a single repaint\n                this.group.innerHTML = this.prerender;\n                this.rendered = true;\n            }\n        }\n    });\n\n}))}(document, Math));\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2016, VU University Amsterdam\n\t\t\t CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Provide download from the application\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('download',[ \"jquery\", \"laconic\" ],\n       function() {\n\n(function($) {\n  var pluginName = 'downloader';\n\n  /** @lends $.fn.downloader */\n  var methods = {\n    /**\n     * @param {Object} options\n     * @param {String} options.data Content to be sent.\n     * @param {String} [options.filename] (base) name of the downloaded\n     * file.\n     * @param {String} [options.type] MIME type (default\n     * `application/octet-stream`)\n     */\n    _init: function(options) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = $.extend({\n\t  name:\"swish-download\",\n\t  ext:\"dat\"\n\t}, options);\n\n\tvar type = data.content_type;\n\tvar name = data.filename || \"swish-download.dat\";\n\tvar chs  = data.charset  || \"charset=UTF-8\";\n\n\tfunction aSupportsDownload() {\n\t  return $(\"<a>\")[0].download != undefined;\n\t}\n\n\tif ( !aSupportsDownload() || !type )\n\t  type = \"application/octet-stream\";\n\n\tvar href      = \"data:\"+type+\";\"+chs+\",\";\n        href += (chs == \"base64\" ? data.data : encodeURIComponent(data.data));\n\n\telem.attr(\"download\", name);\n\telem.attr(\"href\", href);\n\telem.attr(\"title\", \"Download (use menu for save link as)\");\n\telem.text(name);\n\n\telem.addClass(\"btn btn-primary download\");\n\telem.append($.el.span({class:\"glyphicon glyphicon-download\"}));\n      });\n    }\n  }; // methods\n\n  /**\n   * <Class description>\n   *\n   * @class downloader\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.downloader = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2017, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Run an manage Prolog queries and their output\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n * @requires laconic\n * @requires editor\n */\n\ndefine('runner',[ \"jquery\", \"config\", \"preferences\",\n\t \"cm/lib/codemirror\", \"form\", \"prolog\", \"links\", \"modal\",\n\t \"answer\", \"laconic\", \"sparkline\", \"download\", \"search\"\n       ],\n       function($, config, preferences,\n\t\tCodeMirror, form, prolog, links, modal) {\n\n\t\t /*******************************\n\t\t *\t  THE COLLECTION\t*\n\t\t *******************************/\n\n(function($) {\n  var pluginName = 'prologRunners';\n\n  /** @lends $.fn.prologRunners */\n  var methods = {\n    /**\n     * Initialize the container for Prolog queries.\n     * @example $(\".prolog-runners\").prologRunners();\n     * @param {Object} [options] currently ignored\n     */\n    _init: function(options) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = {};\n\n\tfunction runnerMenu() {\n\t  var icon = $.el.span({class:\"glyphicon glyphicon-menu-hamburger\"});\n\t  var menu = form.widgets.dropdownButton(\n\t    icon,\n\t    { divClass:\"runners-menu btn-transparent\",\n\t      ulClass:\"pull-right\",\n\t      client:elem,\n\t      actions:\n\t      { \"Collapse all\": function() {\n\t\t  this.find(\".prolog-runner\").prologRunner('toggleIconic', true);\n\t        },\n\t\t\"Expand all\": function() {\n\t\t  this.find(\".prolog-runner\").prologRunner('toggleIconic', false);\n\t\t},\n\t\t\"Stop all\": function() {\n\t\t  this.find(\".prolog-runner\").prologRunner('stop');\n\t\t},\n\t\t\"Clear\": function() { this.prologRunners('clear'); }\n\t      }\n\t    });\n\n\t  return menu;\n\t}\n\n\tdata.stretch = $($.el.div({class:\"stretch\"}));\n\tdata.inner   = $($.el.div({class:\"inner\"}));\n\n\telem.append(runnerMenu());\n\telem.append(data.stretch);\n\telem.append(data.inner);\n\n\telem.on(\"pane.resize\", function() {\n\t  elem.prologRunners('scrollToBottom', true);\n\t});\n\n\telem.data(pluginName, data);\n      });\n    },\n\n    /**\n     * Run a Prolog query.  The methods appends a `<div>` and runs the\n     * plugin `prologRunner` on the new div.\n     * @param {Object} query\n     * @param {String} query.query the Prolog query to prove\n     * @param {String} [query.source] the Prolog program\n     * @param {prologEditor} [query.editor] the source editor\n     * @param {Boolean} [query.iconifyLast=true] define whether or not\n     * to iconify the previous runner.\n     * @param {Boolean} [query.tabled=false] if `true`, make a table with\n     * the results.\n     */\n    run: function(query) {\n      var data = this.data('prologRunners');\n\n      if ( query.iconifyLast )\n\tthis.prologRunners('iconifyLast');\n\n      var runner = $.el.div({class: \"prolog-runner\"});\n\n      data.inner.append(runner);\n      $(runner).prologRunner(query);\n      this.prologRunners('scrollToBottom');\n\n      return this;\n    },\n\n    /**\n     * Destroy all runners and, if applicable, their associated\n     * pengines.\n     */\n    clear: function() {\n      this.find(\".prolog-runner\").prologRunner('close');\n    },\n\n    /**\n     * Iconify the last runner if it is not associated to an open\n     * query.\n     */\n    iconifyLast: function() {\n      var jrunner = $(this.inner).children().last();\n\n      if ( jrunner.length == 1 )\n      { var runner = jrunner.prologRunner();\n\n\tif ( !runner.alive() )\n\t  runner.toggleIconic(true);\n      }\n\n      return this;\n    },\n\n    /**\n     * Keep the content at the bottom of the window, such that the\n     * buttons remain in the same position.  The only way to achieve\n     * this is by putting something on top of the content as long as\n     * the content is lower than the window.\n     *\n     * @param {Boolean} [onlydown=false] only scroll down if we are\n     * not at the bottom.\n     */\n    // the \"- 4\" compensates for the prolog-runner top&bottom margin.\n    scrollToBottom: function(onlydown) {\n      this.each(function() {\n\tvar elem = $(this);\n\tvar data   = elem.data('prologRunners');\n\tvar height = data.inner.height();\n\tvar room   = elem.height() - height - 4 - 2;\n\n\tif ( room > 0 || onlydown !== true ) {\n\t  data.stretch.height(room > 0 ? room : 0);\n\t  elem.scrollTop(height);\n\t}\n      });\n\n      return this;\n    }\n  }; // methods\n\n  /**\n   * Manage a subwindow (`<div>`) that acts as a collection of runner\n   * items.  Each runner represents a Prolog query, either active or\n   * terminated.  The collection keeps the runners properly stacked and\n   * provides a menu to control the collection, such as _clear_,\n   * _iconify all_, etc.\n   *\n   * @class prologRunners\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n  $.fn.prologRunners = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\n\n\t\t /*******************************\n\t\t *\tINDIVIDUAL RUNNER\t*\n\t\t *******************************/\n\n(function($) {\n  var pluginName = 'prologRunner';\n\n  // keyBindings rely on the jQuery normalized `which` field\n  var keyBindings = { 59:      'next',\t\t/* ; (FF) */\n\t\t      186:     'next',\t\t/* ; (Chromium) */\n\t\t      32:      'next',\t\t/* space */\n\t\t      190:     'stop',\t\t/* . */\n\t\t      13:      'stop',\t\t/* Enter */\n\t\t      65:      'stopOrAbort',\t/* a */\n\t\t      27:      'stopOrAbort',\t/* Esc */\n\t\t      46:      'close',\t\t/* Del */\n\t\t      112:     'help'\t\t/* F1 */\n                    };\n\n  /** @lends $.fn.prologRunner */\n  var methods = {\n    /**\n     * Initialize a runner for a Prolog query\n     * @param {Object} query\n     * @param {String} query.query the Prolog query to prove\n     * @param {String} [query.source] the Prolog program\n     * @param {Boolean} [query.tabled=false]  If `true`, represent the\n     * results as a table.\n     * @param {Boolean} [query.title=true] If `false`, suppress the\n     * title.\n     */\n    _init: function(query) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = {};\n\n\tfunction titleBarButton(glyph, title, action) {\n\t  var btn = $.el.button({title:title, class:\"rtb-\"+action},\n\t\t\t\t$.el.span({class:\"glyphicon glyphicon-\"+glyph}));\n\t  $(btn).on(\"click\", function() { elem.prologRunner(action); });\n\t  return btn;\n\t}\n\n\tfunction stateButton() {\n\t  var icon = $.el.span({class:\"runner-state show-state idle\"});\n\n\t  return form.widgets.dropdownButton(icon);\n\t}\n\n\tfunction controllerDiv() {\n\t  function next()     { elem.prologRunner('next',    1); }\n\t  function next10()   { elem.prologRunner('next',   10); }\n\t  function next100()  { elem.prologRunner('next',  100); }\n\t  function next1000() { elem.prologRunner('next', 1000); }\n\t  function stop()     { data.prolog.stop(); }\n\t  function abort()    { data.prolog.abort(); }\n\n\t  function button(action, label) {\n\t    var btn = $.el.button(label);\n\t    $(btn).on(\"click\", action);\n\t    return btn;\n\t  }\n\n\t  function input() {\n\t    var inp = $.el.input({class:\"prolog-input\"});\n\t    var btn = $.el.button(\"Send\");\n\n\t    $(inp).keypress(function(ev) {\n\t\t\t      if ( ev.which == 13 &&\n\t\t\t\t   elem.prologRunner('respond', $(inp).val()) ) {\n\t\t\t\t$(inp).val(\"\");\n\t\t\t\tev.preventDefault();\n\t\t\t\treturn false;\t\t/* prevent bubbling */\n\t\t\t      } else if ( ev.key != \"Esc\" ) {\n\t\t\t\tev.stopPropagation();   /* prevent bubbling */\n\t\t\t      }\n\t\t\t    });\n\t    $(btn).on(\"click\", function() {\n\t\t\t\t elem.prologRunner('respond', $(inp).val());\n\t\t\t       });\n\n\t    return {input:inp, button:btn};\n\t  }\n\n\t  function statusChart() {\n\t    var spark = $.el.span({class:\"sparklines\"}, \"\");\n\n\t    return spark;\n\t  }\n\n\t  var inp = input();\n\t  var div = $.el.div({class:\"controller show-state\"},\n\t\t\t     $.el.span({class:\"running\"},\n\t\t\t\t       button(abort, \"Abort\")),\n\t\t\t     $.el.span({class:\"wait-next\"},\n\t\t\t\t       button(next, \"Next\"),\n\t\t\t\t       button(next10, \"10\"),\n\t\t\t\t       button(next100, \"100\"),\n\t\t\t\t       button(next1000, \"1,000\"), \" \",\n\t\t\t\t       button(stop, \"Stop\")),\n\t\t\t     $.el.span({class:\"wait-input\"},\n\t\t\t\t       button(abort, \"Abort\"), inp.button,\n\t\t\t\t       $.el.span(inp.input)),\n\t\t\t     statusChart());\n\n\t  return div;\n\t}\n\n\telem.addClass(\"prolog-runner panel panel-default\");\n\tif ( query.tabled )\n\t  elem.addClass(\"tabled\");\n\tif ( query.title != false ) {\n\t  var qspan = $.el.span({class:\"query cm-s-prolog\"});\n\t  CodeMirror.runMode(query.query, \"prolog\", qspan);\n\t  elem.append($.el.div(\n\t    {class:\"runner-title panel-heading\"},\n\t    titleBarButton(\"remove-circle\", \"Close\",        'close'),\n\t    titleBarButton(\"minus\",         \"Iconify\",      'toggleIconic'),\n\t    titleBarButton(\"download\",      \"Download CSV\", 'downloadCSV'),\n\t    stateButton(),\n\t    qspan));\n\t} else {\n\t  var close = glyphButton(\"remove-circle\", \"Close\");\n\t  elem.append(close);\n\t  $(close).on(\"click\", function() {\n\t    elem.prologRunner('close');\n\t  });\n\t}\n\tif ( query.chunk )\n\t  data.chunk = query.chunk;\n\telem.append($.el.div({class:\"runner-results panel-body\"}));\n\telem.append(controllerDiv());\n\n\telem.data('prologRunner', data);\n\n\telem.prologRunner('populateActionMenu');\n\telem.keydown(function(ev) {\n\t  if ( elem.prologRunner('getState') != \"wait-input\" &&\n\t       !ev.ctrlKey && !ev.altKey ) {\n\t    if ( keyBindings[ev.which] ) {\n\t      ev.preventDefault();\n\t      elem.prologRunner(keyBindings[ev.which]);\n\t    }\n\t  }\n\t});\n\telem.on(\"click\", \"a\", links.followLink);\n\n\tdata.savedFocus = document.activeElement;\n\telem.attr('tabindex', -1);\n\telem.focus();\n\n\tdata.query   = query;\n\tdata.answers = 0;\n\n\t/* Load pengines.js incrementally because we wish to ask the\n\t   one from the pengine server rather than a packaged one.\n\t*/\n\n\trequire([config.http.locations.pengines+\"/pengines.js\"],\n\t\tfunction() {\n\n\t  data.prolog = new Pengine({\n\t    server: config.http.locations.pengines,\n\t    runner: elem,\n\t    application: \"swish\",\n\t    src: query.source,\n\t    destroy: false,\n\t    format: 'json-html',\n\t    oncreate: handleCreate,\n\t    onsuccess: handleSuccess,\n\t    onfailure: handleFailure,\n\t    onstop: handleStop,\n\t    onprompt: handlePrompt,\n\t    onoutput: handleOutput,\n\t    onping: handlePing,\n\t    onerror: handleError,\n\t    onabort: handleAbort});\n\t  data.prolog.state = \"idle\";\n\t  if ( config.swish.ping && data.prolog.ping != undefined ) {\n\t    data.prolog.ping(config.swish.ping*1000);\n\t  }\n\t});\n\n\treturn this;\n      });\n    }, //_init()\n\n    /**\n     * Add a _positive_ answer to the runner.  The answer is embedded in\n     * a `<div class=\"answer\">` with an additional class `\"even\"` or\n     * `\"odd\"` to simplify styling. Note that using CSS odd/even\n     * selectors is not possible because there are other elements such\n     * as errors.\n     * @param {Answer} answer pengine response in `json-html`\n     */\n    renderAnswer: function(answer) {\n      var data = this.data('prologRunner');\n      var even = (++data.answers % 2 == 0);\n\n      if ( data.query.tabled ) {\n\tif ( data.answers == 1 ) {\n\t  if ( answer.projection && answer.projection.length > 0 ) {\n\t    var table = answerTable(answer.projection);\n\t    addAnswer(this, table);\n\t    data.table = table;\n\t    data.projection = answer.projection;\n\t    answer.nth = data.answers;\n\t    $(data.table).prologAnswer(answer);\n\t    return this;\n\t  }\n        } else\n\t{ answer.projection = data.projection;\n\t  answer.nth = data.answers;\n\t  $(data.table).prologAnswer(answer);\n\t  return this;\n\t}\n      }\n\n      var div = $.el.div({class:\"answer \"+(even ? \"even\" : \"odd\")},\n\t\t\t $.el.span({class:\"answer-no\"}, data.answers));\n\n      addAnswer(this, div);\n      $(div).prologAnswer(answer);\n    },\n\n    /**\n     * Add pengine output as `<span class=\"output\">`\n     * @param {String} data HTML that is inserted into the span.\n     * @return {DOM} the added node (a span)\n     */\n    outputHTML: function(data) {\n      var span = $.el.span({class:\"output\"});\n      addAnswer(this, span);\n      span.innerHTML = data;\n      runScripts(span);\n      return span;\n    },\n\n    /**\n     * Handle object output\n     */\n     downloadButton: function(obj) {\n       var button = $.el.a({class:\"download\"});\n       addAnswer(this, button);\n       $(button).downloader(obj);\n     },\n\n    /**\n     * Display a syntax error in the query.\n     * {Object} options\n     * {String} options.message is the message\n     * {Object} options.location contains the `line` and `ch` position\n     */\n     syntaxError: function(options) {\n       var data = this.data(pluginName);\n\n       options.data = \"<pre class=\\\"output msg-error\\\">\" +\n\t\t      options.message +\n\t\t      \"</pre>\";\n       options.location.file = true;\n       $(data.query.query_editor).prologEditor('highlightError', options);\n       return this;\n     },\n\n    /**\n     * Add an error message to the output.  The error is\n     * wrapped in a `<pre class=\"error\">` element.\n     * @param {String|Object} options If `options` is a string, it is a\n     * plain-text error message.  Otherwise it is the Pengine error\n     * object.\n     * @param {String} options.message is the plain error message\n     * @param {String} options.code is the error code\n     */\n    error: function(options) {\n      var msg;\n\n      if ( typeof(options) == 'object' ) {\n\tif ( options.code == \"died\" ) {\n\t  addAnswer(this, $.el.div({\n\t    class:\"RIP\",\n\t    title:\"Remote pengine timed out\"\n\t  }));\n\t  return this;\n\t} else if ( options.code == \"syntax_error\" )\n\t{ var m = options.message.match(/^HTTP:DATA:(\\d+):(\\d+):\\s*(.*)/);\n\n\t  if ( m && m.length == 4 ) {\n\t    this.prologRunner('syntaxError',\n\t\t\t      { location:\n\t\t\t\t{ line: parseInt(m[1])-1,\n\t\t\t\t  ch:\tparseInt(m[2])\n\t\t\t\t},\n\t\t\t\tmessage: m[3]\n\t\t\t      });\n\t    msg = \"Cannot run query due to a syntax error (check query window)\";\n\t  }\n\t}\n\tif ( !msg )\n\t  msg = options.message;\n      } else\n\tmsg = options;\n\n      addAnswer(this, $.el.pre({class:\"prolog-message msg-error\"}, msg));\n      return this;\n    },\n\n    /**\n     * Handle trace events\n     */\n    trace: function(data) {\n      var elem = this;\n      var goal = $.el.span({class:\"goal\"});\n      var prompt = data.data;\n      $(goal).html(prompt.goal);\n\n      function capitalizeFirstLetter(string) {\n\treturn string.charAt(0).toUpperCase() + string.slice(1);\n      }\n\n      function button(label, action, context) {\n\tvar btn = $.el.button({class:action,\n\t\t\t       title:label\n\t\t\t      },\n\t\t\t      $.el.span(label));\n\t$(btn).on(\"click\", function(ev) {\n\t  if ( context !== undefined ) {\n\t    action += \"(\"+Pengine.stringify(context(ev))+\")\";\n\t  }\n\t  data.pengine.respond(action);\n\t  $(ev.target).parent().remove();\n\t});\n\treturn btn;\n      }\n\n      addAnswer(this,\n\t\t$.el.div({class:\"prolog-trace\"},\n\t\t\t $.el.span({ class:\"depth\",\n\t\t\t             style:\"width:\"+(prompt.depth*5-1)+\"px\"\n\t\t\t\t   }, \"\\u00A0\"), /* &nbsp; */\n\t\t\t $.el.span({ class:\"port \"+prompt.port\n\t\t\t           },\n\t\t\t\t   capitalizeFirstLetter(prompt.port),\n\t\t\t\t   \":\"),\n\t\t\t goal));\n      if ( prompt.port == \"exception\" )\n\taddAnswer(this,\n\t\t  $.el.div({class:\"prolog-exception\"},\n\t\t\t   prompt.exception.message));\n      addAnswer(this,\n\t\t$.el.div({class:\"trace-buttons\"},\n\t\t\t button(\"Continue\",  \"nodebug\", function(ev) {\n\t\t\t   return breakpoints($(ev.target)\n\t\t\t\t    .closest(\".prolog-runner\"));\n\t\t\t }),\n\t\t\t button(\"Step into\", \"continue\"),\n\t\t\t button(\"Step over\", \"skip\"),\n\t\t\t button(\"Step out\",  \"up\"),\n\t\t\t button(\"Retry\",     \"retry\"),\n\t\t\t button(\"Abort\",     \"abort\")));\n\n      this.closest(\".swish\")\n          .find(\".tabbed\")\n          .trigger(\"trace-location\", prompt);\n\n      this.prologRunner('setState', \"wait-debug\");\n    },\n\n    /**\n     * set the placeholder of the input field.  This is normally\n     * done from the pengine's onprompt handler\n     * @param {String} p the new placeholder\n     */\n    setPrompt: function(p) {\n      this.find(\".controller input\").attr(\"placeholder\", p);\n    },\n\n    /**\n     * Support arbitrary jQuery requests from Prolog\n     */\n    jQuery: function(prompt) {\n      var request = prompt.data;\n      var receiver;\n\n      if ( typeof(request.selector) == \"string\" ) {\n\treceiver = $(request.selector);\n      } else if ( typeof(request.selector) == \"object\" ) {\n\tswitch(request.selector.root) {\n\t  case \"this\":\troot = this; break;\n\t  case \"swish\":\troot = this.closest(\".swish\"); break;\n\t}\n\tif ( request.selector.sub == \"\" ) {\n\t  receiver = root;\n\t} else {\n\t  receiver = root.find(request.selector.sub);\n\t}\n      }\n\n      console.log(receiver);\n      var result = receiver[request.method].apply(receiver, request.arguments);\n      console.log(result);\n\n      prompt.pengine.respond(Pengine.stringify(result));\n    },\n\n    /**\n     * Handle a (dashboard) form.  This opens dialog from the supplied\n     * `html`.\n     * @param {Object} prompt\n     * @param {String} prompt.html contains the HTML content of the form\n     */\n    form: function(prompt) {\n      var data = this.data('prologRunner');\n\n      modal.show({\n\ttitle: \"Please enter parameters\",\n\tbody: function() {\n\t  this.html(prompt.data.html);\n\t  this.find(\"[data-search-in]\").search({search:false});\n\n\t  this.on(\"click\", \"button[data-action]\", function(ev) {\n\t    var button = $(ev.target).closest(\"button\");\n\t    var action = button.data('action');\n\n\t    if ( action == 'run' ) {\n\t      var formel = $(ev.target).closest(\"form\");\n\t      var fdata  = form.serializeAsObject(formel, true);\n\t      var s      = Pengine.stringify(fdata);\n\t      data.prolog.respond(s);\n\t    } else if ( action == 'cancel' ) {\n\t      data.prolog.respond(\"cancel\");\n\t    }\n\t    button.closest(\".modal\").modal('hide');\n\n\t    ev.preventDefault();\n\t    return false;\n\t  });\n\t}\n      });\n    },\n\n\n    /**\n     * send a response (to pengine onprompt handler) to the\n     * pengine and add the response to the dialogue as\n     * `div class=\"response\">`\n     * @param {String} s plain-text response\n     */\n    respond: function(text) {\n      var data = this.data('prologRunner');\n\n      if ( data.wait_for == \"term\" ) {\n\ts = termNoFullStop(text);\n\tif ( s == \"\" )\n\t  return null;\n      } else {\n\ts = Pengine.stringify(text+\"\\n\");\n      }\n\n      addAnswer(this, $.el.div({class:\"response\"}, text));\n      data.prolog.respond(s);\n      return this;\n    },\n\n    /**\n     * Stop the associated Prolog engines.\n     */\n    stop: function() {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = elem.data('prologRunner');\n\tdata.prolog.stop();\n      });\n    },\n\n    /**\n     * Stop the pengine if it is waiting for a next solution,\n     * abort it if it is running or waitin for input and ignore\n     * otherwise.\n     */\n    stopOrAbort: function() {\n      return this.each(function() {\n\tvar elem  = $(this);\n\tvar data  = elem.data('prologRunner');\n\tvar state = elem.prologRunner('getState');\n\n\tswitch(state)\n\t{ case \"running\":\n\t  case \"wait-input\":\n\t    data.prolog.abort();\n\t    break;\n\t  case \"wait-next\":\n\t    data.prolog.stop();\n\t}\n      });\n    },\n\n    /**\n     * Ask the associated Prolog engines for the next answer.\n     * @param {Integer} chunk maximum number of answers to return in the\n     * next chunk.\n     */\n    next: function(chunk) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = elem.data('prologRunner');\n\tdata.prolog.next(chunk);\n\telem.prologRunner('setState', \"running\");\n      });\n    },\n\n    /**\n     * Abort the associated Prolog engine.\n     */\n    abort: function() {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = elem.data('prologRunner');\n\tdata.prolog.abort();\n      });\n    },\n\n    /**\n     * If the associated pengine is alive, send it a `destroy`.  Next,\n     * remove the runner from its container.\n     */\n    close: function() {\n      if ( this.length ) {\n\tvar runners = RS(this);\n\n\tthis.each(function() {\n\t  var elem = $(this);\n\t  var data = elem.data('prologRunner');\n\n\t  if ( elem.prologRunner('alive') ) {\n\t    $(\".prolog-editor\").trigger('pengine-died', data.prolog.id);\n\t    data.prolog.abort();\n\t  }\n\t});\n\tthis.remove();\n\n\trunners.prologRunners('scrollToBottom', true);\n      }\n      return this;\n    },\n\n    /**\n     * Provide help on running a query\n     */\n     help: function() {\n       $(\".swish-event-receiver\").trigger(\"help\", {file:\"runner.html\"});\n     },\n\n    /**\n     * Toggle or set the iconic state of the runner.\n     * @param {Boolean} [on] if `true`, make iconify, `false` expanded\n     * and toggle if unspecified\n     */\n    toggleIconic: function(on) {\n      if ( on == undefined ) {\n\tthis.toggleClass(\"iconic\");\n      } else if ( on ) {\n\tthis.addClass(\"iconic\");\n      } else {\n\tthis.removeClass(\"iconic\");\n      }\n\n      RS(this).prologRunners('scrollToBottom', true);\n\n      return this;\n    },\n\n    /**\n     * Populate the menu associated with the pengine icon.\n     * @param {Object} [actions] associates labels with functions.\n     */\n    populateActionMenu: function(actions) {\n      var menu = this.find(\".runner-title .btn-group.dropdown\");\n\n      actions = $.extend({ \"Re-run\": function() { console.log(\"Re-Run \", this); }\n\t\t\t }, actions);\n\n      form.widgets.populateMenu(menu, this, actions);\n\n      return this;\n    },\n\n    /**\n     * Download query results as CSV.\n     */\n    downloadCSV: function(options) {\n      var data = this.data('prologRunner');\n      var query = termNoFullStop(data.query.query);\n\n      prolog.downloadCSV(query, data.query.source, options);\n\n      return this;\n    },\n\n  /**\n   * @param {String} state defines the new state of the pengine.\n   * Known states are:\n   *\n   *   - \"idle\"\t      - Pengine is not yet created\n   *   - \"running\"    - Pengine is running\n   *   - \"wait-next\"  - Pengine produced a non-deterministic answer\n   *   - \"wait-input\" - Pengine waits for input\n   *   - \"wait-debug\" - Pengine waits for for debugger reply\n   *   - \"true\"       - Pengine produced the last answer\n   *   - \"false\"      - Pengine failed\n   *   - \"error\"      - Pengine raised an error\n   *   - \"stopped\"    - User selected *stop* after non-det answer\n   *   - \"aborted\"    - User aborted execution\n   *\n   * The widget is brought to the new  state   by  adding the state as a\n   * class to all members of  the   class  `show-state`, which currently\n   * implies the pengines icon at the   top-left  and a _controller_ div\n   * created by controllerDiv().\n   */\n   setState: function(state) {\n     var data = this.data('prologRunner');\n\n     if ( !data )\n       return;\n\n     if ( data.prolog.state != state ) {\n       var stateful = this.find(\".show-state\");\n\n       stateful.removeClass(data.prolog.state).addClass(state);\n       data.prolog.state = state;\n       if ( !aliveState(state) && data.savedFocus ) {\n\t $(data.savedFocus).focus();\n\t data.savedFocus = null;\n       } else if ( state == \"wait-input\" ) {\n\t this.find(\"input\").focus();\n       }\n     }\n\n     var runners = RS(this);\n     if ( !aliveState(state) ) {\n       $(\".prolog-editor\").trigger('pengine-died', data.prolog.id);\n       data.prolog.destroy();\n       setTimeout(function() { runners.prologRunners('scrollToBottom') }, 100);\n     } else if ( state == \"wait-next\" || state == \"true\" ) {\n       setTimeout(function() { runners.prologRunners('scrollToBottom') }, 100);\n     } else {\n       runners.prologRunners('scrollToBottom');\n     }\n\n     return this;\n   },\n\n   /** @returns {String} representing the current state of the\n    * query execution.\n    * @see {@link setState}\n    */\n   getState: function() {\n     var data = this.data('prologRunner');\n\n     return data.prolog ? data.prolog.state : \"idle\";\n   },\n\n   /**\n    * @returns {Boolean} true if the related pengine is alive.  That\n    * means it has state `\"running\"`, `\"wait-next\"`, `\"wait-input\"` or\n    * `\"wait-debug\"`\n    */\n   alive: function() {\n     return aliveState(this.prologRunner('getState'));\n   },\n\n   /**\n    * Handle ping data, updating the sparkline status\n    */\n   ping: function(stats) {\n     var data = this.data('prologRunner');\n\n     if ( data && data.prolog && data.prolog.state == \"running\" ) {\n       var spark = this.find(\".sparklines\");\n       var stacks = [\"global\", \"local\", \"trail\"];\n       var colors = [\"red\", \"blue\", \"green\"];\n       var names  = [\"Global \", \"Local \", \"Trail \"];\n       var maxlength = 10;\n\n       if ( !data.stacks )\n\t data.stacks = { global:{usage:[]}, local:{usage:[]}, trail:{usage:[]} };\n\n       for(i=0; i<stacks.length; i++) {\n\t var s = stacks[i];\n\t var limit = stats.stacks[s].limit;\n\t var usage = stats.stacks[s].usage;\n\n\t var u = Math.log10((usage/limit)*10000);\n\t function toBytes(limit, n) {\n\t   var bytes = Math.round((Math.pow(10, n)/10000)*limit);\n\n\t   function numberWithCommas(x) {\n\t     x = x.toString();\n\t     var pattern = /(-?\\d+)(\\d{3})/;\n\t     while (pattern.test(x))\n\t       x = x.replace(pattern, \"$1,$2\");\n\t     return x;\n\t   }\n\n\t   return numberWithCommas(bytes);\n\t }\n\n\t data.stacks[s].limit = limit;\n\t if ( data.stacks[s].usage.length >= maxlength )\n\t   data.stacks[s].usage = data.stacks[s].usage.slice(1);\n\t data.stacks[s].usage.push(u);\n\t spark.sparkline(data.stacks[s].usage,\n\t\t\t { height: spark.parent().height(),\n\t\t\t   composite: i>0,\n\t\t\t   chartRangeMin: 0,\n\t\t\t   chartRangeMax: 4,\n\t\t\t   lineColor: colors[i],\n\t\t\t   tooltipPrefix: names[i],\n\t\t\t   tooltipSuffix: \" bytes\",\n\t\t\t   tooltipChartTitle: i == 0 ? \"Stack usage\" : undefined,\n\t\t\t   numberFormatter: function(n) {\n\t\t\t     return toBytes(limit, n);\n\t\t\t   }\n\t\t\t });\n       }\n     }\n   }\n\n  }; // methods\n\n\n\t\t /*******************************\n\t\t *     PRIVATE FUNCTIONS\t*\n\t\t *******************************/\n\n  function RS(from) {\t\t\t/* find runners from parts */\n    return $(from).closest(\".prolog-runners\");\n  }\n\n  function addAnswer(runner, html) {\n    var results = runner.find(\".runner-results\");\n    results.append(html);\n    return this;\n  }\n\n  function aliveState(state) {\n    switch( state )\n    { case \"running\":\n      case \"wait-next\":\n      case \"wait-input\":\n      case \"wait-debug\":\n\treturn true;\n      default:\n\treturn false;\n    }\n  }\n\n  function answerTable(projection) {\n    var tds = [{class:\"projection\"}];\n\n    for(i=0; i<projection.length; i++)\n      tds.push($.el.th({class:\"pl-pvar\"}, projection[i]));\n    tds.push($.el.th({class:\"answer-nth\"}, \"\"));\n\n    var table = $.el.table({class:\"prolog-answers\"},\n\t\t\t   $.el.tbody($.el.tr.apply(this, tds)));\n\n    return table;\n  }\n\n\t\t /*******************************\n\t\t *\t SCRIPTS IN NODES\t*\n\t\t *******************************/\n\n  var node_id = 1;\n  function runScripts(elem) {\n    var scripts = [];\n    elem = $(elem);\n\n    elem.find(\"script\").each(function() {\n      var type = this.getAttribute('type')||\"text/javascript\";\n      if ( type == \"text/javascript\" )\n\tscripts.push(this.textContent);\n    });\n\n    if ( scripts.length > 0 ) {\n      var script = \"(function(node){\" + scripts.join(\"\\n\") + \"})\";\n      var node = new Node({\n        node: elem[0]\n      });\n\n      try {\n\teval(script)(node);\n      } catch(e) {\n\talert(e);\n      }\n    }\n  }\n\n  function Node(options) {\n    this.my_node = options.node;\n  }\n\n  Node.prototype.node = function() {\n    return $(this.my_node);\n  }\n\n  /**\n   * Provide a unique id for the node.  This can be used as prefix to\n   * avoid conflicts for `id` attributes.\n   */\n  Node.prototype.unique_id = function() {\n    if ( !this.uid )\n      this.uid = node_id++;\n    return this.uid;\n  }\n\n\n\t\t /*******************************\n\t\t *   HANDLE PROLOG CALLBACKS\t*\n\t\t *******************************/\n\n  function breakpoints(runner) {\n    var data = runner.data(pluginName);\n\n    return $(runner).parents(\".swish\").swish('breakpoints', data.prolog.id);\n  }\n\n  function registerSources(pengine) {\n    var runner = pengine.options.runner;\n    var data   = runner.data(pluginName);\n\n    if ( data.query.editor )\n      $(data.query.editor).prologEditor('pengine', {add: pengine.id});\n  }\n\n  function handleCreate() {\n    var elem = this.pengine.options.runner;\n    var data = elem.data(pluginName);\n    var options = {};\n    var bps;\n    var resvar = config.swish.residuals_var || \"Residuals\";\n\n    registerSources(this.pengine);\n\n    if ( (bps = breakpoints(elem)) )\n      options.breakpoints = Pengine.stringify(bps);\n    if ( data.chunk )\n      options.chunk = data.chunk;\n\n    this.pengine.ask(\"'$swish wrapper'((\\n\" +\n\t\t     termNoFullStop(data.query.query) +\n\t\t     \"\\n), \"+resvar+\")\", options);\n    elem.prologRunner('setState', \"running\");\n  }\n\n  function handleSuccess() {\n    var elem = this.pengine.options.runner;\n\n    for(var i=0; i<this.data.length; i++) {\n      var answer = this.data[i];\n      if ( this.projection )\n\tanswer.projection = this.projection;\n\n      elem.prologRunner('renderAnswer', answer);\n    }\n    if ( this.time > 0.1 )\t/* more than 0.1 sec. CPU (TBD: preference) */\n      addAnswer(elem, $.el.div(\n\t{class:\"cputime\"},\n\t$.el.span(this.time.toFixed(3),\n\t\t  \" seconds cpu time\")));\n\n    elem.prologRunner('setState', this.more ? \"wait-next\" : \"true\");\n  }\n\n  function handleFailure() {\n    var elem = this.pengine.options.runner;\n\n    addAnswer(elem, $.el.span({class: \"prolog-false\"}, \"false\"));\n    elem.prologRunner('setState', \"false\");\n  }\n\n  function handleStop() {\n    var elem = this.pengine.options.runner;\n\n    elem.prologRunner('setState', \"stopped\");\n  }\n\n  function handlePrompt() {\n    var elem   = this.pengine.options.runner;\n    var data   = elem.data('prologRunner');\n    var prompt = this.data || \"Please enter a Prolog term\";\n\n    data.wait_for = \"term\";\n\n    if ( typeof(prompt) == \"object\" ) {\n      if ( prompt.type == \"trace\" ) {\n\treturn elem.prologRunner('trace', this);\n      } else if ( prompt.type == \"form\" ) {\n\treturn elem.prologRunner('form', this);\n      } else if ( prompt.type == \"jQuery\" ) {\n\treturn elem.prologRunner('jQuery', this);\n      } else if ( prompt.type == \"console\" ) {\n\tprompt = prompt.prompt || \"console> \";\n\tdata.wait_for = \"line\";\n      } else {\n\tprompt = JSON.stringify(prompt);\n      }\n    }\n\n    elem.prologRunner('setPrompt', prompt);\n    elem.prologRunner('setState', \"wait-input\");\n  }\n\n  /**\n   * Make indicated source locations clickable.\n   * @param {String} msg is the HTML error message string\n   * @param {DOM} editor is the source editor; the editor for pengine://\n   * source locations\n   */\n  function clickableLocations(msg, editor) {\n    var pattern = /pengine:\\/\\/[-0-9a-f]{36}\\/src:(\\d+)/;\n\n    return msg.replace(pattern, function(matched) {\n      var line = matched.match(pattern)[1];\n      return \"<a class='goto-error' title='Goto location'>\" +\n               \"<span class='glyphicon glyphicon-hand-right'></span> \"+\n\t       \"<b>line <span class='line'>\"+line+\"</span></b></a>\";\n    });\n  }\n\n  function gotoError(ev) {\n    var a        = $(ev.target).closest(\"a.goto-error\");\n    var ctx      = $(ev.target).closest(\".error-context\");\n    var econtext = ctx.data(\"error_context\");\n\n    if ( a[0] ) {\n      var line = parseInt(a.find(\"span.line\").text());\n      var file = a.find(\"span.file\").text();\n\n      ev.preventDefault();\n\n      if ( file ) {\n\tctx.closest(\"body.swish\")\n\t   .swish('playFile', {file:file, line:line});\n      } else {\n\t$(econtext.editor).prologEditor('gotoLine', line);\n      }\n\n      return false;\n    } else if ( econtext.location.file ) {\n      ctx.closest(\"body.swish\")\n\t .swish('playFile', econtext.location);\n    } else {\n      $(econtext.editor).prologEditor('gotoLine', econtext.location.line);\n    }\n  }\n\n  /**\n   * handle `pengine_output/1`.  Note that compiler warnings and errors\n   * also end up here. If they have a location, this is provided through\n   * this.location, which contains `file`, `line` and `ch`.  We must use\n   * this to indicate the location of the error in CodeMirror.\n   */\n\n  function handleOutput(msg) {\n    var elem = msg.pengine.options.runner;\n    var data = elem.data(pluginName);\n\n    if ( !data )\t\t\t\t/* runner is gone */\n      return;\n\n    if ( typeof(msg.data) == 'string' ) {\n      var econtext = {editor: data.query.editor};\n\n      msg.data = msg.data.replace(/'[-0-9a-f]{36}':/g, \"\")  /* remove module */\n\n      if ( msg.location ) {\n\tvar loc = msg.location;\n\tvar prefix = \"swish://\";\n\tvar span;\n\n\tfunction clickableError() {\n\t  var str = loc.file+\":\"+loc.line+\":\";\n\t  if ( loc.ch ) str += loc.ch+\":\";\n\t  str += \"\\\\s*\";\n\n\t  msg.data = clickableLocations(\n\t\t\t msg.data.replace(new RegExp(str, \"g\"), \"\"),\n\t\t\t econtext.editor);\n\n\t  span = elem.prologRunner('outputHTML', msg.data);\n\n\t  $(span).addClass(\"error-context\");\n\t  $(span).append($.el.span({class:\"glyphicon glyphicon-hand-right\"}));\n\t  $(span).attr(\"title\", \"Error in program.  Click to show in context\");\n\t  $(span).on(\"click\", gotoError);\n\t  $(span).data(\"error_context\", econtext);\n\t}\n\n\tif ( loc.file.startsWith(prefix) ) {\n\t  var file = loc.file.slice(prefix.length);\n\t  econtext.location = {file:file, line:loc.line};\n\t  clickableError();\n\t} else if ( loc.file.startsWith(\"pengine://\") ) {\n\t  econtext.location = {line:loc.line};\n\t  clickableError(data.query.editor);\n\t}\n\tregisterSources(msg.pengine);\n\tmsg.error_context = econtext;\n\tmsg.error_handler = gotoError;\n\t$(\".swish-event-receiver\").trigger(\"source-error\", msg);\n      } else {\n\tvar span = elem.prologRunner('outputHTML',\n\t\t\t\t     clickableLocations(msg.data,\n\t\t\t\t\t\t\tecontext.editor));\n\t$(span).on(\"click\", gotoError);\n\t$(span).data(\"error_context\", econtext);\n      }\n    } else if ( typeof(msg.data) == 'object' ) {\n      elem.prologRunner(msg.data.action, msg.data);\n    } else {\n      console.log(msg.data);\n    }\n    RS(elem).prologRunners('scrollToBottom');\n  }\n\n  function handleError() {\n    var elem = this.pengine.options.runner;\n    var msg;\n\n    if ( this.code == \"too_many_pengines\" ) {\n      this.message = \"Too many open queries.  Please complete some\\n\"+\n\t\t     \"queries by using |Next|, |Stop| or by\\n\"+\n\t\t     \"closing some queries.\";\n    } else if ( typeof(this.data) == 'string' ) {\n      this.message = this.data\n\t\t\t .replace(new RegExp(\"'\"+this.pengine.id+\"':\", 'g'), \"\");\n    } else {\n      this.message = \"Unknown error\";\n    }\n\n    elem.prologRunner('error', this);\n    elem.prologRunner('setState', \"error\");\n  }\n\n  function handleAbort() {\n    var elem = this.pengine.options.runner;\n    var data = elem.data('prologRunner');\n\n    if ( data ) {\n      elem.prologRunner('error', \"** Execution aborted **\");\n      elem.prologRunner('setState', \"aborted\");\n    } else {\n      this.pengine.destroy();\n    }\n  }\n\n  function handlePing() {\n    var elem = this.pengine.options.runner;\n\n    elem.prologRunner('ping', this.data);\n  }\n\n  /**\n   * @param {Object} answer a positive answer from the Pengine\n   * @returns {Boolean} true if the answer has printable part, i.e., no\n   * variable bindings nor residual goals.\n   */\n\n  function answerHasOutput(answer) {\n    return answer.variables.length > 0 || answer.residuals;\n  }\n\n  function termNoFullStop(s) {\n    return String($.trim(s)).replace(/\\.$/, \"\");\n  }\n\n  /**\n   * Run a Prolog query by starting a remote pengine.\n   *\n   * @class prologRunner\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.prologRunner = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\n\n\t\t   /*******************************\n\t\t   *\t       UTIL\t\t*\n\t\t   *******************************/\n\n  function glyphButton(glyph, title) {\n    var btn = $.el.a({href:\"#\", class:\"close btn btn-link btn-sm\",\n\t\t      title:title},\n\t\t     $.el.span({class:\"glyphicon glyphicon-\"+glyph}));\n\n    return btn;\n  }\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2016, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Dialog components to interact with the gitty store.\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('gitty',[ \"jquery\", \"config\", \"form\", \"modal\", \"laconic\" ],\n       function($, config, form, modal) {\n\n(function($) {\n  var pluginName = 'gitty';\n\n  /** @lends $.fn.gitty */\n  var methods = {\n    /**\n     * @param {Object} options\n     * @param {Object.meta} provides the gitty meta-data\n     */\n    _init: function(options) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = elem.data(pluginName)||{};\n\tvar meta = options.meta;\n\tvar tabs;\n\n\tdata.commits = [];\n\tdata.commits[meta.commit] = meta;\n\tdata.commit  = meta.commit;\n\tdata.editor  = options.editor;\n\n\tfunction tab(label, active, id, disabled) {\n\t  var attrs = {role:\"presentation\"};\n\t  var classes = [];\n\t  if ( active   ) classes.push(\"active\");\n\t  if ( disabled ) classes.push(\"disabled\");\n\t  if ( classes != [] )\n\t    attrs.class = classes.join(\" \");\n\t  var elem =\n\t  $.el.li(attrs, $.el.a({href:\"#\"+id, 'data-toggle':\"tab\"}, label));\n\t  return elem;\n\t}\n\n\thenabled = !Boolean(meta.previous);\n\ttabs     = $($.el.div({class:\"tab-content\"}));\n\n\telem.append($.el.ul(\n\t  {class:\"nav nav-tabs\"},\n\t  tab(\"Meta data\", true,  \"gitty-meta-data\"),\n\t  tab(\"History\",   false, \"gitty-history\",  henabled),\n\t  tab(\"Changes\",   false, \"gitty-diff\",     henabled)));\n\telem.append(tabs);\n\n\t/* meta-data tab */\n\ttabs.append($.el.div({ class:\"tab-pane fade in active gitty-meta-data\",\n\t                       id:\"gitty-meta-data\"}));\n\telem.find('[href=\"#gitty-meta-data\"]').on(\"show.bs.tab\", function(ev) {\n\t  elem.gitty('showMetaData');\n\t});\n\n\t/* history tab */\n\ttabs.append($.el.div({ class:\"tab-pane fade gitty-history\",\n\t                       id:\"gitty-history\"}));\n\telem.find('[href=\"#gitty-history\"]').on(\"show.bs.tab\", function(ev) {\n\t  elem.gitty('showHistory');\n\t});\n\n\t/* diff/changes tab */\n\ttabs.append($.el.div({ class:\"tab-pane fade gitty-diff\",\n\t                       id:\"gitty-diff\"}));\n\telem.find('[href=\"#gitty-diff\"]').on(\"show.bs.tab\", function(ev) {\n\t  elem.gitty('showDiff');\n\t});\n\n\telem.data(pluginName, data);\n\n\telem.gitty('showMetaData');\n      });\n    },\n\n    /**\n     * @param is the gitty meta-object\n     * @return {DOM} node holding the title\n     */\n    title: function(meta) {\n      var title = $.el.span(\"File \", $.el.span({class:\"filename\"}, meta.name));\n      if ( meta.symbolic != \"HEAD\" && meta.commit )\n\t$(title).append(\"@\", $.el.span({class:\"sha1 abbrev\"},\n\t\t\t\t       meta.commit.substring(0,7)));\n\n      return title;\n    },\n\n\n\t\t /*******************************\n\t\t *\t     META DATA\t\t*\n\t\t *******************************/\n\n    /**\n     * Show meta data for the current version.  If this is the HEAD,\n     * allow updating the meta-data\n     */\n    showMetaData: function() {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = elem.data(pluginName);\n\tvar tab  = elem.find(\".gitty-meta-data\");\n\tvar formel;\n\tvar meta = data.commits[data.commit];\n\n\tif ( data.metaData == data.commit )\n\t  return;\n\tdata.metaData = data.commit;\n\n\ttab.html(\"\");\n\tformel = $.el.form({class:\"form-horizontal\"},\n\t\t      form.fields.fileName(meta.name, meta.public, meta.example,\n\t\t\t\t\t   true), // disabled\n\t\t      form.fields.title(meta.title),\n\t\t      form.fields.author(meta.author),\n\t\t      form.fields.date(meta.time, \"Date\", \"date\"),\n\t\t      form.fields.tags(meta.tags));\n\n\tif ( meta.symbolic == \"HEAD\" ) {\n\t  $(formel).append(\n\t      form.fields.buttons(\n\t\t{ label: \"Update meta data\",\n\t\t  action: function(ev, newMetaData) {\n\t\t    data.editor.storage('save', newMetaData, \"only-meta-data\");\n\t\t    return false;\n\t\t  }\n\t\t}));\n\t}\n\n\ttab.append(formel);\n      });\n    },\n\n\n\t\t /*******************************\n\t\t *\t     COMMIT LOG\t\t*\n\t\t *******************************/\n\n    /**\n     * Fill the commit log tab\n     */\n    showHistory: function() {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = elem.data(pluginName);\n\tvar tab  = elem.find(\".gitty-history\");\n\tvar meta = data.commits[data.commit];\n\tvar playButton;\n\n\tif ( data.history )\n\t  return;\n\n\ttab.html(\"\");\n\ttab.append($.el.table(\n\t  { class:\"table table-striped table-condensed gitty-history\",\n\t    'data-click-to-select':true,\n\t    'data-single-select':true\n\t  },\n\t  $.el.tr($.el.th(\"Comment\"),\n\t\t  $.el.th(\"Date\"),\n\t\t  $.el.th(\"User\"),\n\t\t  $.el.th(\"Changed\")),\n\t  $.el.tbody()));\n\n\tplayButton = form.widgets.glyphIconButton(\n           \"play\",\n\t   { title:\"Open the highlighted version in SWISH\",\n\t     class:\"btn-primary\"\n\t   });\n\ttab.append(playButton);\n\t$(playButton).on(\"click\", function(ev) {\n\t  var row = elem.find(\"tr.success\");\n\t  if ( row.length == 1 ) {\n\t    var commit = row.data('commit');\n\n\t    if ( data.commits[commit].symbolic == \"HEAD\" )\n\t      file = data.commits[commit].name;\n\t    else\n\t      file = commit;\n\n\t    elem.parents(\".swish\").swish('playFile', file);\n\t    $(\"#ajaxModal\").modal('hide');\n\t  }\n\t  return false;\n\t});\n\n\tvar url  = config.http.locations.web_storage\n\t\t + encodeURI(meta.name);\n\n\t$.ajax({ url: url,\n\t\t contentType: \"application/json\",\n\t\t type: \"GET\",\n\t\t data: { format: \"history\",\n\t\t         depth: 6,\t\t/* might skip last */\n\t\t         to: data.commit\n\t\t       },\n\t\t success: function(reply) {\n\t\t   elem.gitty('fillHistoryTable', reply);\n\t\t   data.history = data.commit;\n\t\t },\n\t\t error: function(jqXHDR) {\n\t\t   modal.ajaxError(jqXHR);\n\t\t }\n\t       });\n      });\n    },\n\n    /**\n     * Fill the history table\n     */\n    fillHistoryTable: function(history) {\n      var gitty = this;\n      var data  = this.data(pluginName);\n      var table = this.find(\".table.gitty-history tbody\");\n\n      for(var i=0; i<history.length; i++) {\n\tvar h = history[i];\n\n\tif ( !data.commits[h.commit] )\n\t  data.commits[h.commit] = h;\n      }\n\n      function changedAttributes(m1) {\n\tvar m2, diff;\n\tvar elem = $.el.span();\n\n\tif ( m1.previous ) {\n\t  if ( (m2 = data.commits[m1.previous]) &&\n\t       (diff = diffMeta(m1, m2)) ) {\n\t    var change = 0;\n\n\t    for( var d in diff ) {\n\t      if ( diff.hasOwnProperty(d) ) {\n\t\tvar ch = (d == \"name\" ? \"forked \"+m2.name : d);\n\t\t$(elem).append((change++ == 0 ? undefined : \", \"),\n\t\t\t       $.el.span({class:\"change-type\"}, ch));\n\t      }\n\t    }\n\t  }\n\t} else {\n\t  $(elem).append(\"initial\");\n\t}\n\n\treturn elem;\n      }\n\n      for(var i=0; i<history.length; i++) {\n\tvar h = history[i];\n\tvar tr;\n\n\tif ( i == history.length-1 &&\n\t     h.previous && !data.commit[h.previous] )\n\t  break;\n\n\tvar attrs = {'data-commit':h.commit};\n\tif ( data.commit == h.commit )\n\t  attrs.class = \"success\";\n\n\ttr = $.el.tr(attrs,\n\t\t     $.el.td({class:\"commit-message\"},\n\t\t\t     h.commit_message||\"No comment\"),\n\t\t     $.el.td({class:\"date\"},\n\t\t\t     new Date(h.time*1000).toLocaleString()),\n\t\t     $.el.td({class:\"author\"},\n\t\t\t     h.author||\"No author\"),\n\t\t     $.el.td({class:\"changes\"},\n\t\t\t     changedAttributes(h)));\n\ttable.append(tr);\n      }\n\n      table.on(\"click\", \"tr\", function(ev) {\n\tvar tr = $(ev.target).parents(\"tr\");\n\tvar commit = tr.data('commit');\n\n\tgitty.gitty('setCommit', commit);\n      });\n    },\n\n    /**\n     * Select a row in the table and set the title.\n     * @param {String} version is the SHA1 of the new version\n     */\n\n    setCommit: function(commit) {\n      var data = this.data(pluginName);\t/* private data */\n      var h2   = this.parent(\".modal-content\").find(\"h2\");\n\n      h2.html(\"\");\n      h2.append(this.gitty('title', data.commits[commit]));\n      this.find(\"tr.success\").removeClass(\"success\");\n      this.find(\"tr[data-commit=\"+commit+\"]\").addClass(\"success\");\n      data.commit = commit;\n\n      return this;\n    },\n\n\t\t /*******************************\n\t\t *\t       DIFFS\t\t*\n\t\t *******************************/\n\n    /**\n     * Show diff of a given file\n     * @param {Object} options\n     * @param {String} options.file is the file for which to show diffs\n     * @param {String} [options.base] is the base SHA1 (defaults to\n     * HEAD^)\n     */\n\n    showDiff: function() {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = elem.data(pluginName);\n\n\tif ( data.diff == data.commit )\n\t  return;\n\n\telem.find(\".gitty-diff\").html(\"\");\n\tvar url  = config.http.locations.web_storage\n\t\t + encodeURI(data.commit);\n\n\t$.ajax({ url: url,\n\t\t contentType: \"application/json\",\n\t\t type: \"GET\",\n\t\t data: { format: \"diff\"\n\t\t },\n\t\t success: function(reply) {\n\t\t   elem.gitty('fillDiff', reply);\n\t\t   data.diff = data.commit;\n\t\t },\n\t\t error: function(jqXHR) {\n\t\t   modal.ajaxError(jqXHR);\n\t\t }\n\t       });\n      });\n    },\n\n    fillDiff: function(diff) {\n      if ( diff.tags ) this.gitty('diffTags', diff.tags);\n      if ( diff.data ) this.gitty('udiffData', diff.data);\n    },\n\n    diffTags: function(diff) {\n      var tab  = this.find(\".gitty-diff\");\n      var div = $($.el.div({class:\"diff-tags\"},\n\t\t\t    $.el.label(\"Tags\")));\n      var span = $($.el.span({class:\"diff-tags\"}));\n\n      div.append(span);\n\n      function addTag(tag, className) {\n\tspan.append($.el.span({class: \"diff-tag \"+className}, tag));\n      }\n\n      if ( diff.deleted.length ) {\n\tspan.append(\"Removed: \");\n\tfor(var i=0; i<diff.deleted.length; i++)\n\t  addTag(diff.deleted[i], \"deleted\");\n      }\n      if ( diff.added.length ) {\n\tspan.append(diff.deleted.length ? \", \" : \"\", \"Added: \");\n\tfor(var i=0; i<diff.added.length; i++)\n\t  addTag(diff.added[i], \"added\");\n      }\n\n      tab.append(div);\n\n      return this;\n    },\n\n    udiffData: function(diff) {\n      var tab  = this.find(\".gitty-diff\");\n      var lines = diff.split(\"\\n\");\n      var pre = $($.el.pre({class:\"udiff\"}));\n\n      for(var i=0; i<lines.length; i++) {\n\tvar line = lines[i];\n\tvar classmap = { '@': 'udiff-hdr',\n\t\t\t ' ': 'udiff-ctx',\n\t\t\t '+': 'udiff-add',\n\t\t\t '-': 'udiff-del'\n\t\t       };\n\tpre.append($.el.span({class:classmap[line.charAt(0)]}, line),\n\t\t   $.el.br());\n      }\n\n      tab.append(pre);\n    }\n  }; // methods\n\n  /**\n   * <Class description>\n   *\n   * @class gitty\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.gitty = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\n  /**\n   * Diff meta data\n   * @returns {Object|null}, where object holds `author`, `title` and/or\n   * `tags`\n   */\n\n  function diffMeta(m1, m2) {\n    var diff = {};\n\n    function diffAttr(a) {\n      if ( (m1[a] || m2[a]) && m1[a] != m2[a] )\n\tdiff[a] = {from: m1[a], to: m2[a]};\n    }\n\n    diffAttr(\"author\");\n    diffAttr(\"title\");\n    diffAttr(\"data\");\n    diffAttr(\"public\");\n    diffAttr(\"example\");\n    diffAttr(\"name\");\n\n    if ( (d=diffTags(m1.tags, m2.tags)) )\n      diff.tags = d;\n\n    return $.isEmptyObject(diff) ? null : diff;\n  }\n\n  function reduceMeta(meta, old) {\n    var r = {};\n\n    for( var k in meta ) {\n      if ( meta.hasOwnProperty(k) ) {\n\tswitch(typeof(meta[k])) {\n\t  case \"object\":\n\t    if ( $.isArray(meta[k]) ) {\n\t      if ( !diffTags(meta[k], old[k]) )\n\t\tcontinue;\n\t    }\n\t    break;\n\t  case \"string\":\n\t  case \"boolean\":\n\t    if ( old[k] == meta[k] )\n\t      continue;\n\t}\n\n\tr[k] = meta[k];\n      }\n    }\n\n    return r;\n  }\n\n  /**\n   * Diff two tag arrays (arrays of strings)\n   * @returns {Object|null}, where object.added is an array with new\n   * tags and object.deleted contains deleted tags.\n   */\n  function diffTags(t1, t2) {\n    var d, diff = {};\n\n    t1 = t1||[];\n    t2 = t2||[];\n\n    function added(t1, t2) {\n      var a = [];\n\n      for(var i=0; i<t2.length; i++) {\n\tif ( t1.indexOf(t2[i]) < 0 )\n\t  a.push(t2[i]);\n      }\n\n      return a;\n    }\n\n    if ( (d=added(t1,t2)).length > 0 ) diff.added = d;\n    if ( (d=added(t2,t1)).length > 0 ) diff.deleted = d;\n\n    return $.isEmptyObject(diff) ? null : diff;\n  }\n\n  return {\n    diffMeta:   diffMeta,\n    reduceMeta: reduceMeta,\n    diffTags:   diffTags\n  };\n});\n\n","/***\nThis is part of jsdifflib v1.0. <http://snowtide.com/jsdifflib>\n\nCopyright (c) 2007, Snowtide Informatics Systems, Inc.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\n\t* Redistributions of source code must retain the above copyright notice, this\n\t\tlist of conditions and the following disclaimer.\n\t* Redistributions in binary form must reproduce the above copyright notice,\n\t\tthis list of conditions and the following disclaimer in the documentation\n\t\tand/or other materials provided with the distribution.\n\t* Neither the name of the Snowtide Informatics Systems nor the names of its\n\t\tcontributors may be used to endorse or promote products derived from this\n\t\tsoftware without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\nEXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\nOF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT\nSHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\nINCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\nTO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\nBUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\nCONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\nANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH\nDAMAGE.\n***/\n/* Author: Chas Emerick <cemerick@snowtide.com> */\nvar __whitespace = {\" \":true, \"\\t\":true, \"\\n\":true, \"\\f\":true, \"\\r\":true};\n\nvar difflib = {\n\tdefaultJunkFunction: function (c) {\n\t\treturn __whitespace.hasOwnProperty(c);\n\t},\n\t\n\tstripLinebreaks: function (str) { return str.replace(/^[\\n\\r]*|[\\n\\r]*$/g, \"\"); },\n\t\n\tstringAsLines: function (str) {\n\t\tvar lfpos = str.indexOf(\"\\n\");\n\t\tvar crpos = str.indexOf(\"\\r\");\n\t\tvar linebreak = ((lfpos > -1 && crpos > -1) || crpos < 0) ? \"\\n\" : \"\\r\";\n\t\t\n\t\tvar lines = str.split(linebreak);\n\t\tfor (var i = 0; i < lines.length; i++) {\n\t\t\tlines[i] = difflib.stripLinebreaks(lines[i]);\n\t\t}\n\t\t\n\t\treturn lines;\n\t},\n\t\n\t// iteration-based reduce implementation\n\t__reduce: function (func, list, initial) {\n\t\tif (initial != null) {\n\t\t\tvar value = initial;\n\t\t\tvar idx = 0;\n\t\t} else if (list) {\n\t\t\tvar value = list[0];\n\t\t\tvar idx = 1;\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t\t\n\t\tfor (; idx < list.length; idx++) {\n\t\t\tvalue = func(value, list[idx]);\n\t\t}\n\t\t\n\t\treturn value;\n\t},\n\t\n\t// comparison function for sorting lists of numeric tuples\n\t__ntuplecomp: function (a, b) {\n\t\tvar mlen = Math.max(a.length, b.length);\n\t\tfor (var i = 0; i < mlen; i++) {\n\t\t\tif (a[i] < b[i]) return -1;\n\t\t\tif (a[i] > b[i]) return 1;\n\t\t}\n\t\t\n\t\treturn a.length == b.length ? 0 : (a.length < b.length ? -1 : 1);\n\t},\n\t\n\t__calculate_ratio: function (matches, length) {\n\t\treturn length ? 2.0 * matches / length : 1.0;\n\t},\n\t\n\t// returns a function that returns true if a key passed to the returned function\n\t// is in the dict (js object) provided to this function; replaces being able to\n\t// carry around dict.has_key in python...\n\t__isindict: function (dict) {\n\t\treturn function (key) { return dict.hasOwnProperty(key); };\n\t},\n\t\n\t// replacement for python's dict.get function -- need easy default values\n\t__dictget: function (dict, key, defaultValue) {\n\t\treturn dict.hasOwnProperty(key) ? dict[key] : defaultValue;\n\t},\t\n\t\n\tSequenceMatcher: function (a, b, isjunk) {\n\t\tthis.set_seqs = function (a, b) {\n\t\t\tthis.set_seq1(a);\n\t\t\tthis.set_seq2(b);\n\t\t}\n\t\t\n\t\tthis.set_seq1 = function (a) {\n\t\t\tif (a == this.a) return;\n\t\t\tthis.a = a;\n\t\t\tthis.matching_blocks = this.opcodes = null;\n\t\t}\n\t\t\n\t\tthis.set_seq2 = function (b) {\n\t\t\tif (b == this.b) return;\n\t\t\tthis.b = b;\n\t\t\tthis.matching_blocks = this.opcodes = this.fullbcount = null;\n\t\t\tthis.__chain_b();\n\t\t}\n\t\t\n\t\tthis.__chain_b = function () {\n\t\t\tvar b = this.b;\n\t\t\tvar n = b.length;\n\t\t\tvar b2j = this.b2j = {};\n\t\t\tvar populardict = {};\n\t\t\tfor (var i = 0; i < b.length; i++) {\n\t\t\t\tvar elt = b[i];\n\t\t\t\tif (b2j.hasOwnProperty(elt)) {\n\t\t\t\t\tvar indices = b2j[elt];\n\t\t\t\t\tif (n >= 200 && indices.length * 100 > n) {\n\t\t\t\t\t\tpopulardict[elt] = 1;\n\t\t\t\t\t\tdelete b2j[elt];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tindices.push(i);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tb2j[elt] = [i];\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tfor (var elt in populardict) {\n\t\t\t\tif (populardict.hasOwnProperty(elt)) {\n\t\t\t\t\tdelete b2j[elt];\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tvar isjunk = this.isjunk;\n\t\t\tvar junkdict = {};\n\t\t\tif (isjunk) {\n\t\t\t\tfor (var elt in populardict) {\n\t\t\t\t\tif (populardict.hasOwnProperty(elt) && isjunk(elt)) {\n\t\t\t\t\t\tjunkdict[elt] = 1;\n\t\t\t\t\t\tdelete populardict[elt];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor (var elt in b2j) {\n\t\t\t\t\tif (b2j.hasOwnProperty(elt) && isjunk(elt)) {\n\t\t\t\t\t\tjunkdict[elt] = 1;\n\t\t\t\t\t\tdelete b2j[elt];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tthis.isbjunk = difflib.__isindict(junkdict);\n\t\t\tthis.isbpopular = difflib.__isindict(populardict);\n\t\t}\n\t\t\n\t\tthis.find_longest_match = function (alo, ahi, blo, bhi) {\n\t\t\tvar a = this.a;\n\t\t\tvar b = this.b;\n\t\t\tvar b2j = this.b2j;\n\t\t\tvar isbjunk = this.isbjunk;\n\t\t\tvar besti = alo;\n\t\t\tvar bestj = blo;\n\t\t\tvar bestsize = 0;\n\t\t\tvar j = null;\n\t\t\tvar k;\n\t\n\t\t\tvar j2len = {};\n\t\t\tvar nothing = [];\n\t\t\tfor (var i = alo; i < ahi; i++) {\n\t\t\t\tvar newj2len = {};\n\t\t\t\tvar jdict = difflib.__dictget(b2j, a[i], nothing);\n\t\t\t\tfor (var jkey in jdict) {\n\t\t\t\t\tif (jdict.hasOwnProperty(jkey)) {\n\t\t\t\t\t\tj = jdict[jkey];\n\t\t\t\t\t\tif (j < blo) continue;\n\t\t\t\t\t\tif (j >= bhi) break;\n\t\t\t\t\t\tnewj2len[j] = k = difflib.__dictget(j2len, j - 1, 0) + 1;\n\t\t\t\t\t\tif (k > bestsize) {\n\t\t\t\t\t\t\tbesti = i - k + 1;\n\t\t\t\t\t\t\tbestj = j - k + 1;\n\t\t\t\t\t\t\tbestsize = k;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tj2len = newj2len;\n\t\t\t}\n\t\n\t\t\twhile (besti > alo && bestj > blo && !isbjunk(b[bestj - 1]) && a[besti - 1] == b[bestj - 1]) {\n\t\t\t\tbesti--;\n\t\t\t\tbestj--;\n\t\t\t\tbestsize++;\n\t\t\t}\n\t\t\t\t\n\t\t\twhile (besti + bestsize < ahi && bestj + bestsize < bhi &&\n\t\t\t\t\t!isbjunk(b[bestj + bestsize]) &&\n\t\t\t\t\ta[besti + bestsize] == b[bestj + bestsize]) {\n\t\t\t\tbestsize++;\n\t\t\t}\n\t\n\t\t\twhile (besti > alo && bestj > blo && isbjunk(b[bestj - 1]) && a[besti - 1] == b[bestj - 1]) {\n\t\t\t\tbesti--;\n\t\t\t\tbestj--;\n\t\t\t\tbestsize++;\n\t\t\t}\n\t\t\t\n\t\t\twhile (besti + bestsize < ahi && bestj + bestsize < bhi && isbjunk(b[bestj + bestsize]) &&\n\t\t\t\t\ta[besti + bestsize] == b[bestj + bestsize]) {\n\t\t\t\tbestsize++;\n\t\t\t}\n\t\n\t\t\treturn [besti, bestj, bestsize];\n\t\t}\n\t\t\n\t\tthis.get_matching_blocks = function () {\n\t\t\tif (this.matching_blocks != null) return this.matching_blocks;\n\t\t\tvar la = this.a.length;\n\t\t\tvar lb = this.b.length;\n\t\n\t\t\tvar queue = [[0, la, 0, lb]];\n\t\t\tvar matching_blocks = [];\n\t\t\tvar alo, ahi, blo, bhi, qi, i, j, k, x;\n\t\t\twhile (queue.length) {\n\t\t\t\tqi = queue.pop();\n\t\t\t\talo = qi[0];\n\t\t\t\tahi = qi[1];\n\t\t\t\tblo = qi[2];\n\t\t\t\tbhi = qi[3];\n\t\t\t\tx = this.find_longest_match(alo, ahi, blo, bhi);\n\t\t\t\ti = x[0];\n\t\t\t\tj = x[1];\n\t\t\t\tk = x[2];\n\t\n\t\t\t\tif (k) {\n\t\t\t\t\tmatching_blocks.push(x);\n\t\t\t\t\tif (alo < i && blo < j)\n\t\t\t\t\t\tqueue.push([alo, i, blo, j]);\n\t\t\t\t\tif (i+k < ahi && j+k < bhi)\n\t\t\t\t\t\tqueue.push([i + k, ahi, j + k, bhi]);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tmatching_blocks.sort(difflib.__ntuplecomp);\n\t\n\t\t\tvar i1 = 0, j1 = 0, k1 = 0, block = 0;\n\t\t\tvar i2, j2, k2;\n\t\t\tvar non_adjacent = [];\n\t\t\tfor (var idx in matching_blocks) {\n\t\t\t\tif (matching_blocks.hasOwnProperty(idx)) {\n\t\t\t\t\tblock = matching_blocks[idx];\n\t\t\t\t\ti2 = block[0];\n\t\t\t\t\tj2 = block[1];\n\t\t\t\t\tk2 = block[2];\n\t\t\t\t\tif (i1 + k1 == i2 && j1 + k1 == j2) {\n\t\t\t\t\t\tk1 += k2;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (k1) non_adjacent.push([i1, j1, k1]);\n\t\t\t\t\t\ti1 = i2;\n\t\t\t\t\t\tj1 = j2;\n\t\t\t\t\t\tk1 = k2;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif (k1) non_adjacent.push([i1, j1, k1]);\n\t\n\t\t\tnon_adjacent.push([la, lb, 0]);\n\t\t\tthis.matching_blocks = non_adjacent;\n\t\t\treturn this.matching_blocks;\n\t\t}\n\t\t\n\t\tthis.get_opcodes = function () {\n\t\t\tif (this.opcodes != null) return this.opcodes;\n\t\t\tvar i = 0;\n\t\t\tvar j = 0;\n\t\t\tvar answer = [];\n\t\t\tthis.opcodes = answer;\n\t\t\tvar block, ai, bj, size, tag;\n\t\t\tvar blocks = this.get_matching_blocks();\n\t\t\tfor (var idx in blocks) {\n\t\t\t\tif (blocks.hasOwnProperty(idx)) {\n\t\t\t\t\tblock = blocks[idx];\n\t\t\t\t\tai = block[0];\n\t\t\t\t\tbj = block[1];\n\t\t\t\t\tsize = block[2];\n\t\t\t\t\ttag = '';\n\t\t\t\t\tif (i < ai && j < bj) {\n\t\t\t\t\t\ttag = 'replace';\n\t\t\t\t\t} else if (i < ai) {\n\t\t\t\t\t\ttag = 'delete';\n\t\t\t\t\t} else if (j < bj) {\n\t\t\t\t\t\ttag = 'insert';\n\t\t\t\t\t}\n\t\t\t\t\tif (tag) answer.push([tag, i, ai, j, bj]);\n\t\t\t\t\ti = ai + size;\n\t\t\t\t\tj = bj + size;\n\t\t\t\t\t\n\t\t\t\t\tif (size) answer.push(['equal', ai, i, bj, j]);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn answer;\n\t\t}\n\t\t\n\t\t// this is a generator function in the python lib, which of course is not supported in javascript\n\t\t// the reimplementation builds up the grouped opcodes into a list in their entirety and returns that.\n\t\tthis.get_grouped_opcodes = function (n) {\n\t\t\tif (!n) n = 3;\n\t\t\tvar codes = this.get_opcodes();\n\t\t\tif (!codes) codes = [[\"equal\", 0, 1, 0, 1]];\n\t\t\tvar code, tag, i1, i2, j1, j2;\n\t\t\tif (codes[0][0] == 'equal') {\n\t\t\t\tcode = codes[0];\n\t\t\t\ttag = code[0];\n\t\t\t\ti1 = code[1];\n\t\t\t\ti2 = code[2];\n\t\t\t\tj1 = code[3];\n\t\t\t\tj2 = code[4];\n\t\t\t\tcodes[0] = [tag, Math.max(i1, i2 - n), i2, Math.max(j1, j2 - n), j2];\n\t\t\t}\n\t\t\tif (codes[codes.length - 1][0] == 'equal') {\n\t\t\t\tcode = codes[codes.length - 1];\n\t\t\t\ttag = code[0];\n\t\t\t\ti1 = code[1];\n\t\t\t\ti2 = code[2];\n\t\t\t\tj1 = code[3];\n\t\t\t\tj2 = code[4];\n\t\t\t\tcodes[codes.length - 1] = [tag, i1, Math.min(i2, i1 + n), j1, Math.min(j2, j1 + n)];\n\t\t\t}\n\t\n\t\t\tvar nn = n + n;\n\t\t\tvar group = [];\n\t\t\tvar groups = [];\n\t\t\tfor (var idx in codes) {\n\t\t\t\tif (codes.hasOwnProperty(idx)) {\n\t\t\t\t\tcode = codes[idx];\n\t\t\t\t\ttag = code[0];\n\t\t\t\t\ti1 = code[1];\n\t\t\t\t\ti2 = code[2];\n\t\t\t\t\tj1 = code[3];\n\t\t\t\t\tj2 = code[4];\n\t\t\t\t\tif (tag == 'equal' && i2 - i1 > nn) {\n\t\t\t\t\t\tgroup.push([tag, i1, Math.min(i2, i1 + n), j1, Math.min(j2, j1 + n)]);\n\t\t\t\t\t\tgroups.push(group);\n\t\t\t\t\t\tgroup = [];\n\t\t\t\t\t\ti1 = Math.max(i1, i2-n);\n\t\t\t\t\t\tj1 = Math.max(j1, j2-n);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tgroup.push([tag, i1, i2, j1, j2]);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif (group && !(group.length == 1 && group[0][0] == 'equal')) groups.push(group)\n\t\t\t\n\t\t\treturn groups;\n\t\t}\n\t\t\n\t\tthis.ratio = function () {\n\t\t\tmatches = difflib.__reduce(\n\t\t\t\t\t\t\tfunction (sum, triple) { return sum + triple[triple.length - 1]; },\n\t\t\t\t\t\t\tthis.get_matching_blocks(), 0);\n\t\t\treturn difflib.__calculate_ratio(matches, this.a.length + this.b.length);\n\t\t}\n\t\t\n\t\tthis.quick_ratio = function () {\n\t\t\tvar fullbcount, elt;\n\t\t\tif (this.fullbcount == null) {\n\t\t\t\tthis.fullbcount = fullbcount = {};\n\t\t\t\tfor (var i = 0; i < this.b.length; i++) {\n\t\t\t\t\telt = this.b[i];\n\t\t\t\t\tfullbcount[elt] = difflib.__dictget(fullbcount, elt, 0) + 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfullbcount = this.fullbcount;\n\t\n\t\t\tvar avail = {};\n\t\t\tvar availhas = difflib.__isindict(avail);\n\t\t\tvar matches = numb = 0;\n\t\t\tfor (var i = 0; i < this.a.length; i++) {\n\t\t\t\telt = this.a[i];\n\t\t\t\tif (availhas(elt)) {\n\t\t\t\t\tnumb = avail[elt];\n\t\t\t\t} else {\n\t\t\t\t\tnumb = difflib.__dictget(fullbcount, elt, 0);\n\t\t\t\t}\n\t\t\t\tavail[elt] = numb - 1;\n\t\t\t\tif (numb > 0) matches++;\n\t\t\t}\n\t\t\t\n\t\t\treturn difflib.__calculate_ratio(matches, this.a.length + this.b.length);\n\t\t}\n\t\t\n\t\tthis.real_quick_ratio = function () {\n\t\t\tvar la = this.a.length;\n\t\t\tvar lb = this.b.length;\n\t\t\treturn _calculate_ratio(Math.min(la, lb), la + lb);\n\t\t}\n\t\t\n\t\tthis.isjunk = isjunk ? isjunk : difflib.defaultJunkFunction;\n\t\tthis.a = this.b = null;\n\t\tthis.set_seqs(a, b);\n\t}\n};\n\n\ndefine(\"difflib\", function(){});\n\n","/*\nThis is part of jsdifflib v1.0. <http://github.com/cemerick/jsdifflib>\n\nCopyright 2007 - 2011 Chas Emerick <cemerick@snowtide.com>. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification, are\npermitted provided that the following conditions are met:\n\n   1. Redistributions of source code must retain the above copyright notice, this list of\n      conditions and the following disclaimer.\n\n   2. Redistributions in binary form must reproduce the above copyright notice, this list\n      of conditions and the following disclaimer in the documentation and/or other materials\n      provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY Chas Emerick ``AS IS'' AND ANY EXPRESS OR IMPLIED\nWARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Chas Emerick OR\nCONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\nCONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF\nADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\nThe views and conclusions contained in the software and documentation are those of the\nauthors and should not be interpreted as representing official policies, either expressed\nor implied, of Chas Emerick.\n*/\ndiffview = {\n\t/**\n\t * Builds and returns a visual diff view.  The single parameter, `params', should contain\n\t * the following values:\n\t *\n\t * - baseTextLines: the array of strings that was used as the base text input to SequenceMatcher\n\t * - newTextLines: the array of strings that was used as the new text input to SequenceMatcher\n\t * - opcodes: the array of arrays returned by SequenceMatcher.get_opcodes()\n\t * - baseTextName: the title to be displayed above the base text listing in the diff view; defaults\n\t *\t   to \"Base Text\"\n\t * - newTextName: the title to be displayed above the new text listing in the diff view; defaults\n\t *\t   to \"New Text\"\n\t * - contextSize: the number of lines of context to show around differences; by default, all lines\n\t *\t   are shown\n\t * - viewType: if 0, a side-by-side diff view is generated (default); if 1, an inline diff view is\n\t *\t   generated\n\t */\n\tbuildView: function (params) {\n\t\tvar baseTextLines = params.baseTextLines;\n\t\tvar newTextLines = params.newTextLines;\n\t\tvar opcodes = params.opcodes;\n\t\tvar baseTextName = params.baseTextName ? params.baseTextName : \"Base Text\";\n\t\tvar newTextName = params.newTextName ? params.newTextName : \"New Text\";\n\t\tvar contextSize = params.contextSize;\n\t\tvar inline = (params.viewType == 0 || params.viewType == 1) ? params.viewType : 0;\n\n\t\tif (baseTextLines == null)\n\t\t\tthrow \"Cannot build diff view; baseTextLines is not defined.\";\n\t\tif (newTextLines == null)\n\t\t\tthrow \"Cannot build diff view; newTextLines is not defined.\";\n\t\tif (!opcodes)\n\t\t\tthrow \"Canno build diff view; opcodes is not defined.\";\n\t\t\n\t\tfunction celt (name, clazz) {\n\t\t\tvar e = document.createElement(name);\n\t\t\te.className = clazz;\n\t\t\treturn e;\n\t\t}\n\t\t\n\t\tfunction telt (name, text) {\n\t\t\tvar e = document.createElement(name);\n\t\t\te.appendChild(document.createTextNode(text));\n\t\t\treturn e;\n\t\t}\n\t\t\n\t\tfunction ctelt (name, clazz, text) {\n\t\t\tvar e = document.createElement(name);\n\t\t\te.className = clazz;\n\t\t\te.appendChild(document.createTextNode(text));\n\t\t\treturn e;\n\t\t}\n\t\n\t\tvar tdata = document.createElement(\"thead\");\n\t\tvar node = document.createElement(\"tr\");\n\t\ttdata.appendChild(node);\n\t\tif (inline) {\n\t\t\tnode.appendChild(document.createElement(\"th\"));\n\t\t\tnode.appendChild(document.createElement(\"th\"));\n\t\t\tnode.appendChild(ctelt(\"th\", \"texttitle\", baseTextName + \" vs. \" + newTextName));\n\t\t} else {\n\t\t\tnode.appendChild(document.createElement(\"th\"));\n\t\t\tnode.appendChild(ctelt(\"th\", \"texttitle\", baseTextName));\n\t\t\tnode.appendChild(document.createElement(\"th\"));\n\t\t\tnode.appendChild(ctelt(\"th\", \"texttitle\", newTextName));\n\t\t}\n\t\ttdata = [tdata];\n\t\t\n\t\tvar rows = [];\n\t\tvar node2;\n\t\t\n\t\t/**\n\t\t * Adds two cells to the given row; if the given row corresponds to a real\n\t\t * line number (based on the line index tidx and the endpoint of the \n\t\t * range in question tend), then the cells will contain the line number\n\t\t * and the line of text from textLines at position tidx (with the class of\n\t\t * the second cell set to the name of the change represented), and tidx + 1 will\n\t\t * be returned.\t Otherwise, tidx is returned, and two empty cells are added\n\t\t * to the given row.\n\t\t */\n\t\tfunction addCells (row, tidx, tend, textLines, change) {\n\t\t\tif (tidx < tend) {\n\t\t\t\trow.appendChild(telt(\"th\", (tidx + 1).toString()));\n\t\t\t\trow.appendChild(ctelt(\"td\", change, textLines[tidx].replace(/\\t/g, \"\\u00a0\\u00a0\\u00a0\\u00a0\")));\n\t\t\t\treturn tidx + 1;\n\t\t\t} else {\n\t\t\t\trow.appendChild(document.createElement(\"th\"));\n\t\t\t\trow.appendChild(celt(\"td\", \"empty\"));\n\t\t\t\treturn tidx;\n\t\t\t}\n\t\t}\n\t\t\n\t\tfunction addCellsInline (row, tidx, tidx2, textLines, change) {\n\t\t\trow.appendChild(telt(\"th\", tidx == null ? \"\" : (tidx + 1).toString()));\n\t\t\trow.appendChild(telt(\"th\", tidx2 == null ? \"\" : (tidx2 + 1).toString()));\n\t\t\trow.appendChild(ctelt(\"td\", change, textLines[tidx != null ? tidx : tidx2].replace(/\\t/g, \"\\u00a0\\u00a0\\u00a0\\u00a0\")));\n\t\t}\n\t\t\n\t\tfor (var idx = 0; idx < opcodes.length; idx++) {\n\t\t\tcode = opcodes[idx];\n\t\t\tchange = code[0];\n\t\t\tvar b = code[1];\n\t\t\tvar be = code[2];\n\t\t\tvar n = code[3];\n\t\t\tvar ne = code[4];\n\t\t\tvar rowcnt = Math.max(be - b, ne - n);\n\t\t\tvar toprows = [];\n\t\t\tvar botrows = [];\n\t\t\tfor (var i = 0; i < rowcnt; i++) {\n\t\t\t\t// jump ahead if we've alredy provided leading context or if this is the first range\n\t\t\t\tif (contextSize && opcodes.length > 1 && ((idx > 0 && i == contextSize) || (idx == 0 && i == 0)) && change==\"equal\") {\n\t\t\t\t\tvar jump = rowcnt - ((idx == 0 ? 1 : 2) * contextSize);\n\t\t\t\t\tif (jump > 1) {\n\t\t\t\t\t\ttoprows.push(node = document.createElement(\"tr\"));\n\t\t\t\t\t\t\n\t\t\t\t\t\tb += jump;\n\t\t\t\t\t\tn += jump;\n\t\t\t\t\t\ti += jump - 1;\n\t\t\t\t\t\tnode.appendChild(telt(\"th\", \"...\"));\n\t\t\t\t\t\tif (!inline) node.appendChild(ctelt(\"td\", \"skip\", \"\"));\n\t\t\t\t\t\tnode.appendChild(telt(\"th\", \"...\"));\n\t\t\t\t\t\tnode.appendChild(ctelt(\"td\", \"skip\", \"\"));\n\t\t\t\t\t\t\n\t\t\t\t\t\t// skip last lines if they're all equal\n\t\t\t\t\t\tif (idx + 1 == opcodes.length) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\ttoprows.push(node = document.createElement(\"tr\"));\n\t\t\t\tif (inline) {\n\t\t\t\t\tif (change == \"insert\") {\n\t\t\t\t\t\taddCellsInline(node, null, n++, newTextLines, change);\n\t\t\t\t\t} else if (change == \"replace\") {\n\t\t\t\t\t\tbotrows.push(node2 = document.createElement(\"tr\"));\n\t\t\t\t\t\tif (b < be) addCellsInline(node, b++, null, baseTextLines, \"delete\");\n\t\t\t\t\t\tif (n < ne) addCellsInline(node2, null, n++, newTextLines, \"insert\");\n\t\t\t\t\t} else if (change == \"delete\") {\n\t\t\t\t\t\taddCellsInline(node, b++, null, baseTextLines, change);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// equal\n\t\t\t\t\t\taddCellsInline(node, b++, n++, baseTextLines, change);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tb = addCells(node, b, be, baseTextLines, change);\n\t\t\t\t\tn = addCells(node, n, ne, newTextLines, change);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (var i = 0; i < toprows.length; i++) rows.push(toprows[i]);\n\t\t\tfor (var i = 0; i < botrows.length; i++) rows.push(botrows[i]);\n\t\t}\n\t\t\n\t\trows.push(node = ctelt(\"th\", \"author\", \"diff view generated by \"));\n\t\tnode.setAttribute(\"colspan\", inline ? 3 : 4);\n\t\tnode.appendChild(node2 = telt(\"a\", \"jsdifflib\"));\n\t\tnode2.setAttribute(\"href\", \"http://github.com/cemerick/jsdifflib\");\n\t\t\n\t\ttdata.push(node = document.createElement(\"tbody\"));\n\t\tfor (var idx in rows) rows.hasOwnProperty(idx) && node.appendChild(rows[idx]);\n\t\t\n\t\tnode = celt(\"table\", \"diff\" + (inline ? \" inlinediff\" : \"\"));\n\t\tfor (var idx in tdata) tdata.hasOwnProperty(idx) && node.appendChild(tdata[idx]);\n\t\treturn node;\n\t}\n};\n\n\ndefine(\"diffview\", function(){});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2015-2016, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * View diffs between versions\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('diff',[ \"jquery\", \"difflib\", \"diffview\" ],\n       function() {\n\n(function($) {\n  var pluginName = 'diff';\n\n  /** @lends $.fn.diff */\n  var methods = {\n    /**\n     * Render diff between two strings in the target element (must\n     * be a `<div>`).\n     *\n     * @param {Object} [options]\n     * @param {String} [base] Old version\n     * @param {String} [head] New version\n     * @param {String} [baseName=\"Base text\"] Name for old version\n     * @param {String} [headName=\"Current text\"] Name for current version\n     * @param {Number} [context=3] Number of context lines\n     */\n    _init: function(options) {\n      return this.each(function() {\n\tvar base        = difflib.stringAsLines(options.base);\n\tvar newtxt      = difflib.stringAsLines(options.head);\n\tvar sm          = new difflib.SequenceMatcher(base, newtxt);\n\tvar opcodes     = sm.get_opcodes();\n\tvar contextSize = options.contextSize == undefined\n\t\t\t\t? 3 : options.contextSize;\n\n\tthis.appendChild(diffview.buildView(\n\t  { baseTextLines: base,\n\t    newTextLines: newtxt,\n\t    opcodes: opcodes,\n\t    baseTextName: options.baseName || \"Base text\",\n\t    newTextName:  options.headName || \"Current text\",\n\t    contextSize: contextSize,\n\t    viewType: $(\"inline\").checked ? 1 : 0\n\t  }));\n      });\n    }\n  }; // methods\n\n  /**\n   * This class is a jQuery wrapper around\n   *\n   * @class diff\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.diff = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2017, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Defines the interaction with the `File` menu and gitty storage\n * module of the server.\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('storage',[ \"jquery\", \"config\", \"modal\", \"form\", \"gitty\",\n\t \"history\", \"tabbed\", \"utils\",\n\t \"laconic\", \"diff\"\n       ],\n       function($, config, modal, form, gitty, history, tabbed, utils) {\n\n(function($) {\n  var pluginName = 'storage';\n\n  var defaults = {\n    typeName: \"program\",\n    is_clean: true,\n    markClean: function(clean) {}\n  }\n\n  /** @lends $.fn.storage */\n  var methods = {\n    /**\n     * @param {Object} options\n     * @param {Function} options.setValue sets the new document value\n     * @param {Function} options.getValue gets the current document value\n     * @param {Function} options.changeGen identifies the current state\n     * @param {String}   options.cleanData identifies the clean state\n     * @param {String}\t options.cleanCheckpoint is the action that\n     * caused the clean state\n     * @param {Any}\t options.cleanGeneration identifies the clean\n     * state.\n     */\n    _init: function(options) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = $.extend({}, defaults, options);\n\n\telem.data(pluginName, data);\t/* store with element */\n\telem.addClass(\"storage\");\n\telem.storage('update_tab_title');\n\n\t/**\n\t * Execute a method on the storage plugin. This particularly\n\t * avoids handling events that have bubbled up from children\n\t * that have a storage plugin attached, which may happen in\n\t * notebooks.\n\t */\n\tfunction onStorage(ev, method) {\n\t  var target = $(ev.target);\n\n\t  if ( target.hasClass(\"storage\") && target.is(\":visible\") ) {\n\t    var rc = target.storage.apply(\n\t\t       target,\n\t\t       Array.prototype.slice.call(arguments, 1));\n\t    if ( rc == \"propagate\" )\n\t      return;\n\t  }\n\t  ev.stopPropagation();\n\t}\n\n\telem.on(\"source\", function(ev, src) {\n\t  onStorage(ev, 'setSource', src);\n\t});\n\telem.on(\"save\", function(ev, data) {\n\t  onStorage(ev, 'save', data);\n\t});\n\telem.on(\"download\", function(ev) {\n\t  onStorage(ev, 'download');\n\t});\n\telem.on(\"fileInfo\", function(ev) {\n\t  onStorage(ev, 'info');\n\t});\n\telem.on(\"diff\", function(ev) {\n\t  onStorage(ev, 'diff');\n\t});\n\telem.on(\"revert\", function(ev) {\n\t  onStorage(ev, 'revert');\n\t});\n\telem.on(\"reload\", function(ev) {\n\t  onStorage(ev, 'reload');\n\t});\n\telem.on(\"chat-about-file\", function(ev) {\n\t  onStorage(ev, 'chat');\n\t});\n\telem.on(\"follow-file\", function(ev) {\n\t  onStorage(ev, 'follow');\n\t});\n\telem.on(\"activate-tab\", function(ev) {\n\t\t\t\t\t\t/* TBD: What exactly? */\n\t});\n\telem.on(\"data-is-clean\", function(ev, clean) {\n\t  elem.storage('markClean', clean);\n\t});\n\telem.on(\"fullscreen\", function(ev, val) {\n\t  if ( !val )\n\t    elem.storage('update_tab_title');\n\t});\n\n\t$(window).bind(\"beforeunload\", function(ev) {\n\t  return elem.storage('unload', \"beforeunload\", ev);\n\t});\n\n\telem.storage('chat', (data.meta||{}).chat||'update');\n      });\n    },\n\n    /**\n     * @param {String|Object} src becomes the new contents of the editor\n     * @param {String} src.data contains the data in the case that\n     * `src` is an object.\n     * @return {Object|String} The string `\"propagate\"` is\n     * returned if the provided src does not match the supported type.\n     */\n    setSource: function(src) {\n      var data = this.data(pluginName);\n      var type = tabbed.tabTypes[data.typeName];\n\n      if ( typeof(src) == \"string\" )\n\tsrc = {data:src};\n\n      if ( src.newTab )\n\treturn \"propagate\";\n\n      if ( (src.meta && src.meta.name) || src.url )\n      { var name = (src.meta && src.meta.name) ? src.meta.name : src.url;\n\tvar ext  = name.split('.').pop();\n\n\tif ( ext != type.dataType )\n\t  return \"propagate\";\n      }\n\n      if ( this.storage('unload', \"setSource\") == false )\n\treturn false;\n\n      if ( src.meta ) {\n\tdata.file = src.meta.name;\n\tdata.meta = src.meta;\n\tdata.url  = null;\n\tif ( src.meta.symbolic == \"HEAD\" )\n\t  src.url = config.http.locations.web_storage + src.meta.name;\n      } else {\n\tdata.file = null;\n\tdata.meta = null;\n      }\n      data.url     = src.url;\n      data.st_type = src.st_type;\n      data.chats   = src.chats;\n\n      data.setValue(src);\n      data.cleanGeneration = data.changeGen();\n      data.cleanData       = src.data;\n      data.cleanCheckpoint = src.cleanCheckpoint || \"load\";\n\n      this.storage('update_tab_title');\n\n      if ( !src.url       ) src.url = config.http.locations.swish;\n      if ( !src.noHistory ) history.push(src);\n\n      this.storage('chat', src.chat||(src.meta||{}).chat||'update');\n      $(\".storage\").storage('chat_status', true);\n\n      return this;\n    },\n\n    /**\n     * Update the label and icon shown in the tab\n     */\n    update_tab_title: function() {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = elem.data(pluginName);\n\tvar type = tabbed.tabTypes[data.typeName];\n\n\tvar title = (filebase(data.file) ||\n\t\t     filebase(basename(data.url)) ||\n\t\t     type.label);\n\n\telem.tabbed('title', title, type.dataType);\n\telem.tabbed('chats', data.chats);\n      });\n    },\n\n    /**\n     * Load document from the server.\n     */\n    load: function(file) {\n      if ( file ) {\n\tvar that = this;\n\tvar options = this.data(pluginName);\n\n\t$.ajax({ url: config.http.locations.web_storage + file,\n\t\t dataType: \"text\",\n\t\t success: function(data) {\n\t\t   that.storage('setSource',\n\t\t\t\t{ data: data,\n\t\t\t\t  meta: { name:file\n\t\t\t\t        }\n\t\t\t\t});\n\t\t },\n\t\t error: function(jqXHDR) {\n\t\t   modal.ajaxError(jqXHR);\n\t\t }\n\t       });\n      }\n      return this;\n    },\n\n    /**\n     * Revert to upstream version\n     */\n    revert: function() {\n      var data = this.data(pluginName);\n\n      data.setValue(data.cleanData);\n      data.cleanGeneration = data.changeGen();\n      data.markClean(true);\n      return this;\n    },\n\n    /**\n     * Reload from server\n     */\n    reload: function() {\n      var elem = this;\n      var data = elem.data(pluginName);\n      var url  = config.http.locations.web_storage +\n\t\t encodeURI(data.file);\n\n      $.ajax({ url: url,\n\t       type: \"GET\",\n\t       data: { format: \"json\" },\n\t       success: function(reply) {\n\t\t reply.url = url;\n\t\t reply.st_type = \"gitty\";\n\t\t reply.noHistory = true;\n\t\t elem.storage('setSource', reply);\n\t\t $(\"#chat\").trigger('send',\n\t\t\t\t    { type:'reloaded',\n\t\t\t\t      file:data.file,\n\t\t\t\t      commit:reply.meta.commit\n\t\t\t\t    });\n\t       },\n\t       error: function(jqXHR) {\n\t\t modal.ajaxError(jqXHR);\n\t       }\n\t     });\n\n      return this;\n    },\n\n    /**\n     * Save the current document to the server.  Depending on the\n     * arguments, this function implements several forms of saving:\n     *\n     *   - Without arguments arguments, it implements \"Save\".\n     *   - With (\"as\"), it implements \"Save as\", which opens a\n     *     dialog which calls this method again, but now with\n     *     meta-data in the first argument.\n     *   - With ({...}) it performs the save operation of \"Save as\"\n     *   - With ({...}, \"only-meta-data\") it only updates the meta\n     *     data on the server.\n     *\n     * @param {Object} [meta] provides additional meta-information.\n     * Currently defined fields are `author`, `email`,\n     * `title`, `keywords` and `description`. Illegal fields are ignored\n     * by the server.\n     * @param {String} [what] If `\"only-meta-data\"`, only the meta-data\n     * is updated.\n     */\n    save: function(meta, what) {\n      var data   = this.data(pluginName);\n      var type   = tabbed.tabTypes[data.typeName];\n      var url    = config.http.locations.web_storage;\n      var method = \"POST\";\n      var elem   = this;\n      var post;\n\n      if ( (data.st_type == \"filesys\" || data.st_type == \"external\") && data.url )\n\treturn this.storage('saveURL');\n\n      if ( meta == \"as\" ) {\n\tthis.storage('saveAs');\n\treturn this;\n      }\n\n      if ( data.file &&\n\t   !(meta && meta.default) &&\n\t   (!meta || meta.name == data.file) ) {\n\turl += encodeURI(data.file);\n\tmethod = \"PUT\";\n      }\n\n      if ( what == \"only-meta-data\" ) {\n\tmeta = gitty.reduceMeta(meta, data.meta)\n\tif ( $.isEmptyObject(meta) ) {\n\t  alert(\"No change\");\n\t  return;\n\t}\n\tpost = { update: \"meta-data\" };\n      } else if ( method == \"POST\" ) {\n\tpost = { data: data.getValue(),\n\t\t type: type.dataType\n\t       };\n      } else {\n\tif ( !data.isClean(data.cleanGeneration) ) {\n\t  post = { data: data.getValue(),\n\t\t   type: type.dataType\n\t\t };\n\t} else if ( gitty.diffTags(data.meta.tags, meta.tags) == null ) {\n\t  alert(\"No change\");\n\t  return;\n\t}\n      }\n\n      if ( meta )\n\tpost.meta = meta;\n      if ( data.meta )\n\tpost.previous = data.meta.commit;\n\n      $.ajax({ url: url,\n               dataType: \"json\",\n\t       contentType: \"application/json\",\n\t       type: method,\n\t       data: JSON.stringify(post),\n\t       success: function(reply) {\n\t\t if ( reply.error ) {\n\t\t   modal.alert(errorString(\"Could not save\", reply));\n\t\t } else {\n\t\t   if ( data.meta &&\n\t\t\tdata.meta.example != reply.meta.example ) {\n\t\t     elem.closest(\".swish\").trigger('examples-changed');\n\t\t   }\n\t\t   data.file = reply.file;\n\t\t   data.meta = reply.meta;\n\t\t   data.st_type = \"gitty\";\n\t\t   data.cleanGeneration = data.changeGen();\n\t\t   data.cleanData       = data.getValue();\n\t\t   data.cleanCheckpoint = \"save\";\n\t\t   data.markClean(true);\n\t\t   modal.feedback({ html: \"Saved\",\n\t\t\t\t    owner: elem\n\t\t                  });\n\n\t\t   if ( method == \"POST\" )\n\t\t     data.chats = 0;\t/* forked file has no chats */\n\t\t   elem.storage('update_tab_title');\n\t\t   elem.storage('chat', (data.meta||{}).chat||'update');\n\t\t   $(\".storage\").storage('chat_status', true);\n\t\t   history.push(reply);\n\t\t }\n\t       },\n\t       error: function(jqXHR, textStatus, errorThrown) {\n\t\t if ( jqXHR.status == 409 ) {\n\t\t   elem.storage('resolveEditConflict',\n\t\t\t\tJSON.parse(jqXHR.responseText));\n\t\t } else if ( jqXHR.status == 403 ) {\n\t\t   modal.alert(\"Permission denied.  Please try a different name\");\n\t\t } else {\n\t\t   alert('Save failed; click \"ok\" to try again');\n\t\t   elem.storage('saveAs');\n\t\t }\n\t       }\n\t     });\n\n      return this;\n    },\n\n    /**\n     * Provide a Save As dialog\n     */\n    saveAs: function(options) {\n      var data = this.data(pluginName);\n      var meta    = data.meta||{};\n      var editor  = this;\n      var update  = Boolean(data.file);\n      var fork    = data.meta && meta.symbolic != \"HEAD\" && !meta.default;\n      var type    = tabbed.tabTypes[data.typeName];\n      var profile = $(\"#login\").login('get_profile',\n\t\t\t\t      [ \"display_name\", \"avatar\", \"email\",\n\t\t\t\t\t\"identity\"\n\t\t\t\t      ]);\n      var author  = profile.display_name;\n      var modify  = meta.modify;\n      var canmodify;\n\n      if ( meta.public === undefined )\n\tmeta.public = true;\n\n      if ( !modify ) {\n\tif ( profile.identity )\n\t  modify = [\"login\", \"owner\"];\n\telse\n\t  modify = [\"any\", \"login\", \"owner\"];\n      }\n\n      canmodify = ( profile.identity == meta.identity ||\n\t\t    (profile.identity && !(meta.identity||meta.user)) );\n\n      options = options||{};\n\n      function saveAsBody() {\n\tthis.append($.el.form(\n          { class:\"form-horizontal\"},\n\t    form.fields.hidden(\"identity\", profile.identity),\n\t    form.fields.hidden(\"default\", meta.default),\n\t    form.fields.hidden(\"chat\", meta.chat),\n\t    profile.identity ? undefined :\n\t\t\t       form.fields.hidden(\"avatar\", profile.avatar),\n\t    form.fields.fileName(fork ? null: data.file,\n\t\t\t\t meta.public, meta.example),\n\t    form.fields.title(meta.title),\n\t    form.fields.author(author, profile.identity),\n\t    update ? form.fields.commit_message() : undefined,\n\t    form.fields.tags(meta.tags),\n\t    form.fields.modify(modify, canmodify),\n\t    form.fields.follow(profile.email),\n\t    form.fields.buttons(\n\t      { label: fork   ? \"Fork \"+type.label :\n\t\t       update ? \"Update \"+type.label :\n\t\t\t\t\"Save \"+type.label,\n\t\taction: function(ev, as) {\n\t\t\t  editor.storage('save', as);\n\t\t\t  return false;\n\t\t\t}\n\t      })));\n      }\n\n      form.showDialog({ title: options.title ? options.title :\n\t\t\t       fork   ? \"Fork from \"+meta.commit.substring(0,7) :\n\t\t\t       update ? \"Save new version\" :\n\t\t\t                \"Save \"+type.label+\" as\",\n\t\t\tbody:  saveAsBody\n\t\t      });\n\n      return this;\n    },\n\n    /**\n     * Save data to the URL it was loaded from.\n     * FIXME: feedback, allow recompilation (if Prolog source)\n     */\n    saveURL: function() {\n      var options = this.data(pluginName);\n      var data = options.getValue();\n      var type = tabbed.type(options.url)||{};\n      var elem = this;\n\n      if ( options.isClean(options.cleanGeneration) ) {\n\talert(\"No change\");\n\treturn this;\n      }\n\n      $.ajax({ url: options.url,\n               dataType: \"json\",\n\t       contentType: type.contentType||\"text/plain\",\n\t       type: \"PUT\",\n\t       data: data,\n\t       success: function(reply) {\n\t\t if ( reply.error ) {\n\t\t   modal.alert(errorString(\"Could not save\", reply));\n\t\t } else {\n\t\t   options.cleanGeneration = options.changeGen();\n\t\t   options.cleanData       = options.getValue();\n\t\t   options.cleanCheckpoint = \"save\";\n\t\t   options.markClean(true);\n\t\t   modal.feedback({ html: \"Saved\",\n\t\t\t\t    owner: elem\n\t\t                  });\n\t\t }\n\t       },\n\t       error: function(jqXHR) {\n\t\t if ( jqXHR.status == 403 ) {\n\t\t   var url = options.url;\n\t\t   delete(options.meta);\n\t\t   delete(options.st_type);\n\t\t   delete(options.url);\n\t\t   elem.storage('saveAs', {\n\t\t     title: \"<div class='warning'>Could not save to \"+url+\n\t\t\t    \"</div> Save a copy as\"\n\t\t   });\n\t\t } else\n\t\t { modal.ajaxError(jqXHR);\n\t\t }\n\t       }\n\t     });\n\n      return this;\n    },\n\n\t\t /*******************************\n\t\t *\t    EDIT CONFLICTS\t*\n\t\t *******************************/\n\n    resolveEditConflict: function(options) {\n      var bdiv;\n\n      options.storage = this;\n\n      function body() {\n\tvar elem = $(this);\n\n\telem.addClass(\"edit-conflict\");\n\n\tfunction tabLabel(label, active, id, disabled) {\n\t  var attrs = {role:\"presentation\"};\n\t  var classes = [];\n\t  if ( active   ) classes.push(\"active\");\n\t  if ( disabled ) classes.push(\"disabled\");\n\t  if ( classes != [] )\n\t    attrs.class = classes.join(\" \");\n\t  var elem =\n\t  $.el.li(attrs, $.el.a({href:\"#\"+id, 'data-toggle':\"tab\"}, label));\n\t  return elem;\n\t}\n\n\ttabs = $($.el.div({class:\"tab-content\"}));\n\telem.append($.el.ul(\n\t  {class:\"nav nav-tabs\"},\n\t  tabLabel(\"My edits\",    true,  \"merge-my-edits\"),\n\t  tabLabel(\"Their edits\", false, \"merge-server-edits\"),\n\t  tabLabel(\"Conflicts\",   false, \"merge-conflicts\")));\n\telem.append(tabs);\n\n\tfunction tabContent(id, cls) {\n\t  tabs.append($.el.div({class:\"tab-pane fade \"+id+\" \"+cls, id:id}));\n\t  elem.find('[href=\"#'+id+'\"]').on(\"show.bs.tab\", function(ev) {\n\t    elem.storage(id);\n\t  });\n\t}\n\n\ttabContent(\"merge-my-edits\",    \"in active\");\n\ttabContent(\"merge-server-edits\", \"\");\n\ttabContent(\"merge-conflicts\",   \"\");\n\n\telem.data(\"edit-conflict\", options);\n\n\telem.storage('merge-my-edits');\n\n\telem.append(bdiv =\n\t  $.el.div({class:\"form-group\"},\n\t\t   $.el.button({name:\"merge\",\n\t\t\t\tclass:\"btn btn-primary\"},\n\t\t\t       \"Merge\"),\n\t\t   $.el.button({name:\"discard-my-edits\",\n\t\t\t\tclass:\"btn btn-primary\"},\n\t\t\t       \"Discard my changes\"),\n\t\t   $.el.button({name:\"discard-server-edits\",\n\t\t\t\tclass:\"btn btn-primary\"},\n\t\t\t       \"Discard changes on server\"),\n\t\t   $.el.button({name:\"cancel\",\n\t\t\t\tclass:\"btn btn-danger\",\n\t\t\t\t'data-dismiss':\"modal\"},\n\t\t\t       \"Cancel\")));\n\n\n\t$(bdiv).on(\"click\", \"button\", function(ev) {\n\t  elem.storage('editConflictAction', $(ev.target).attr(\"name\"));\n\t  $(ev.target).parents(\".modal\").modal('hide');\n\t  ev.preventDefault();\n\t  return false;\n\t});\n      }\n\n      form.showDialog({ title: \"Edit conflict\",\n\t\t\tbody: body\n\t\t      });\n\n      return this;\n    },\n\n    'merge-my-edits': function() {\n      var data = $(this).data(\"edit-conflict\");\n      $(this).find(\".merge-my-edits\")\n        .empty()\n        .append(udiff(data.edit.me.data));\n    },\n\n    'merge-server-edits': function() {\n      var data = $(this).data(\"edit-conflict\");\n      $(this).find(\".merge-server-edits\")\n        .empty()\n        .append(udiff(data.edit.server.data));\n    },\n\n    'merge-conflicts': function() {\n      var data = $(this).data(\"edit-conflict\");\n      var tab  = $(this).find(\".merge-conflicts\");\n\n      tab.empty();\n      if ( data.patch_status != 0 ) {\n\ttab.append(editConflicts(data.merged));\n      } else {\n\ttab.html(\"No merge conflicts\");\n      }\n    },\n\n    editConflictAction: function(action) {\n      var options = $(this).data(\"edit-conflict\");\n      var data = $(options.storage).data(pluginName);\n\n      if ( action == \"merge\" ) {\n\tdata.setValue(options.merged);\n\tdata.meta.commit = options.edit.server.to.commit;\n      } else if ( action == \"discard-my-edits\" ) {\n\t$(options.storage).storage('reload');\n      } else if ( action == \"discard-server-edits\" ) {\n\tvar data = $(options.storage).data(pluginName);\n\tdata.meta.commit = options.edit.server.to.commit;\n      }\n    },\n\n\n\t\t /*******************************\n\t\t *\t   DOWNLOADING\t\t*\n\t\t *******************************/\n\n    download: function() {\n      var options = this.data(pluginName);\n      var type    = tabbed.tabTypes[options.typeName];\n      var data    = options.getValue();\n      var href    = \"data:text/plain;charset=UTF-8,\"\n\t          + encodeURIComponent(data);\n\n      var a = $.el.a({ href:href,\n\t\t       download:options.file||(\"swish.\"+type.dataType)\n\t\t     });\n      this.append(a);\n      a.click();\n      $(a).remove();\n\n      return this;\n    },\n\n    /**\n     * @param {Object} [options]\n     * @param {String|Boolean} [options.data=false] if `true`, always\n     * include the content of the storage.  If `\"if_modified\"`, only\n     * include the content if it is modified.\n     * @param {String} [options.type] if provided, only return objects\n     * associated with files with the given extension.\n     * @return {Array.Object}\n     */\n    getData: function(options) {\n      var result = [];\n\n      options = options||{};\n\n      this.each(function() {\n\tvar data = $(this).data(pluginName);\n\tvar obj = {};\n\n\tobj.type = data.type;\n\tif ( data.url ) obj.url = data.url;\n\tif ( data.meta ) {\n\t  function copyMeta(name) {\n\t    if ( data.meta[name] )\n\t      obj[name] = data.meta[name];\n\t  }\n\n\t  copyMeta(\"name\");\n\t  copyMeta(\"path\");\n\t  copyMeta(\"modified\");\n\t  copyMeta(\"loaded\");\n\t  copyMeta(\"modified_since_loaded\");\n\t  copyMeta(\"module\");\n\t}\n\n\tif ( $(this).closest(\".tab-pane.active\").length == 1 )\n\t  obj.active = true;\n\n\tif ( !options.type ||\n\t     ( options.name &&\n\t       options.name.split(\".\").pop() == options.type ) ) {\n\t  if ( options.data ) {\n\t    var value = data.getValue();\n\n\t    obj.modified = (value != data.cleanData);\n\t    if ( options.data == true ||\n\t\t (obj.modified && options.data == \"if_modified\") )\n\t      obj.data = value;\n\t  }\n\n\t  result.push(obj);\n        }\n      });\n\n      return result;\n    },\n\n    /**\n     * @return {jQuery|undefined} the jQuery storage element that\n     * matches `to`\n     */\n    match: function(to) {\n      for(var k=0; k<this.length; k++) {\n\tme = $(this[k]);\n\tvar data = me.data(pluginName);\n\n\tif ( to.file && to.file == data.file )\n\t  return me;\n\tif ( to.url && to.url == data.url )\n\t  return me;\n      }\n    },\n\n    /**\n     * Expose associateted tab\n     * @return {jQuery|undefined} storage plugin if tab could be\n     * exposed.\n     */\n    expose: function(reason) {\n      var tab = this.closest(\".tab-pane\");\n      if ( tab.length == 1 ) {\n\tvar tabbed = tab.closest(\".tabbed\");\n\ttabbed.tabbed('show', tab.attr('id'));\n\tif ( reason )\n\t  modal.feedback({ html: reason,\n\t                   owner: this\n\t                 });\n\n\treturn this;\n      }\n    },\n\n    /**\n     * Provide information about the current source in a modal\n     * dialog.\n     */\n    info: function() {\n      var data = this.data(pluginName);\n      var meta = data.meta||{};\n      var editor = this;\n      var title;\n\n      if ( data.st_type == \"gitty\" ) {\n\ttitle = $().gitty('title', meta);\n      } else if ( data.st_type == \"filesys\" ) {\n\ttitle = \"File system -- \" + basename(meta.path);\n      } else if ( data.st_type == \"external\" ) {\n\ttitle = \"External -- \" + data.url;\n      } else {\n\ttitle = \"Scratch source\";\n      }\n\n      function infoBody() {\n\tif ( data.st_type == \"gitty\" ) {\n\t  data.editor = editor;\t\t/* circular reference */\n\t  this.gitty(data);\n\t} else if ( data.st_type == \"filesys\" ) {\n\t  filesysInfo(this, meta);\n\t} else if ( !data.st_type ) {\n\t  this.append($.el.p(\"The source is not associated with a file. \",\n\t\t\t     \"Use \",\n\t\t\t     $.el.b(\"Save ...\"),\n\t\t\t     \" to save the source with meta information.\"\n\t\t\t    ));\n\t}\n      }\n\n      form.showDialog({ title: title,\n\t\t\tbody:  infoBody\n\t\t      });\n\n      return this;\n    },\n\n    /**\n     * Generate diff relative to last checkpoint.\n     */\n    diff: function() {\n      var data = this.data(pluginName);\n      var baseName = { load: \"Loaded text\",\n\t\t       new: \"New text\",\n\t\t       save: \"Saved text\"\n\t\t     };\n\n      function infoBody() {\n\tvar diff = $.el.div();\n\tvar current = data.getValue();\n\n\tthis.append(diff);\n\n\tif ( current == data.cleanData ) {\n\t  $(diff).append($.el.p(\"No changes\"));\n\t} else {\n\t  var rb;\n\t  var buttons = $.el.div({ class:\"btn-group diff\",\n\t\t\t           role:\"group\"\n\t\t\t\t },\n\t\t\t\t $.el.button({ name:\"close\",\n\t\t\t\t\t       'data-dismiss':\"modal\",\n\t\t\t\t               class:\"btn btn-primary\"\n\t\t\t\t\t     },\n\t\t\t\t\t     \"Close\"),\n\t\t\t\t rb=\n\t\t\t\t $.el.button({ name:\"revert\",\n\t\t\t\t               class:\"btn btn-danger\",\n\t\t\t\t\t       'data-dismiss':\"modal\"\n\t\t\t\t\t     },\n\t\t\t\t\t     \"Revert changes\"));\n\t  $(diff).diff({ base: data.cleanData,\n\t\t\t head: current,\n\t\t\t baseName: baseName[data.cleanCheckpoint]\n\t\t       });\n\t  this.append($.el.div({class: \"wrapper text-center\"}, buttons));\n\t  $(rb).on(\"click\", function(ev) {\n\t    $(\".swish-event-receiver\").trigger(\"revert\");\n\t  });\n\t  this.parents(\"div.modal-dialog\").addClass(\"modal-wide\");\n\t}\n      }\n\n      form.showDialog({ title: \"Changes since \" + baseName[data.cleanCheckpoint],\n\t\t\tbody:  infoBody\n\t\t      });\n\n      return this;\n    },\n\n    /**\n     * Get a description of the selection to be transferred with a\n     * chat message.\n     */\n    getSelection: function() {\n      if ( this.hasClass(\"prolog-editor\") ) {\t/* plain editor */\n\tvar sel = this.prologEditor('getSelection');\n\treturn sel ? sel[0].selections : null;\n      } else if ( this.hasClass(\"notebook\") ) {\n\treturn this.notebook('getSelection');\n      } else {\n\tconsole.log(sel);\n      }\n    },\n\n    /**\n     * @returns {String} description of the selection to use inside\n     * a link or button\n     */\n    getSelectionLabel: function(sel) {\n      function editorLabel(sels) {\n\tvar label = \"\";\n\tfor(var i=0; i<sels.length; i++) {\n\t  var s = sels[i];\n\t  if ( label != \"\" )\n\t    label += \";\";\n\t  label += \"@L\"+(s.from.line+1);\n\t  if ( s.to.line != s.from.line )\n\t    label += \"-\"+(s.to.line+1);\n\t}\n\treturn label;\n      }\n\n      if ( sel[0].cell ) {\n\tvar label = \"\";\n\n\tfor(var i=0; i<sel.length; i++) {\n\t  var ed = sel[i];\n\t  if ( label != \"\" )\n\t    label += \",\";\n\t  label += ed.cell + editorLabel(ed.selections);\n\t}\n\treturn label;\n      } else {\n\treturn editorLabel(sel);\n      }\n    },\n\n    /**\n     * Restore a selection retrieved using `getSelection`.\n     */\n    restoreSelection: function(sel) {\n      if ( this.hasClass(\"prolog-editor\") ) {\t/* plain editor */\n\treturn this.prologEditor('restoreSelection', sel);\n      } else if ( this.hasClass(\"notebook\") ) { /* notebook */\n\treturn this.notebook('restoreSelection', sel);\n      } else {\n\tconsole.log(sel);\n      }\n    },\n\n    /**\n     * Get a document identification string for chats, status, etc.\n     * @param {String} [type] defines the type of storage supported\n     * @param {Object} [data] is the data object from which to derive\n     * the id.\n     * @return {String} identifier for the document\n     */\n    docid: function(type, data) {\n      data = data||this.data(pluginName);\n\n      if ( !type || type == data.st_type ) {\n\tvar meta = data.meta||{};\n\n\tif ( data.st_type == \"gitty\" ) {\n\t  return \"gitty:\"+meta.name;\n\t} else if ( data.st_type == \"filesys\" ) {\n\t  return \"filesys:\"+meta.path;\n\t} else if ( data.st_type == \"external\" ) {\n\t  return \"url:\"+data.url;\n\t}\n      }\n    },\n\n    /**\n     * Open the chat window for the current file\n     */\n    chat: function(action) {\n      var data = this.data(pluginName);\n      var docid = this.storage('docid', 'gitty');\n\n      if ( docid ) {\n\tvar chat = this.closest(\".tab-pane\").find(\".chatroom\");\n\n\tif ( chat.length > 0 ) {\n\t  if ( action == 'update' )\n\t    chat.chatroom('docid', docid, 'close');\n\t  else\n\t    utils.flash(chat);\n\t} else if ( action != 'update' ) {\n\t  var percentage = (action == 'large' ? 60 : 20);\n\t  chat = $($.el.div({class:\"chatroom\"}));\n\n\t  chat.chatroom({docid:docid});\n\t  this.tile('split', chat, \"below\", percentage, 150)\n\t      .addClass(\"chat-container\");\n\t}\n      } else if ( action == 'update' ) {\n\tthis.storage('close_chat');\n      } else if ( !data.st_type ) {\n\tmodal.alert(\"The chat facility is bound to named documents.<br>\"+\n\t\t    \"Please save your document and try again.\");\n      } else {\n\tmodal.alert(\"The chat facility is only available for \"+\n\t\t    \"user-saved files.<br>\"+\n\t\t    \"You can use the <b>File/Chat help room</b> menu to \"+\n\t\t    \"access the shared chat room.\");\n      }\n\n      return this;\n    },\n\n    /**\n     * Close associated chat\n     */\n    close_chat: function() {\n      this.closest(\".chat-container\").find(\".chatroom\").chatroom('close');\n    },\n\n    /**\n     * Act upon the arrival of a chat message.  Update the tab title.\n     * If the message is not displayed and it is not permanent\n     * (`create == false`) we should not update the counter.\n     */\n    chat_message: function(msg) {\n      if ( !msg.displayed && msg.create == false )\n\treturn this;\n\n      return this.each(function() {\n\tvar elem = $(this);\n\n\tif ( msg.docid == elem.storage('docid') ) {\n\t  var data = elem.data(pluginName);\n\n\t  if ( data.chats && data.chats.count )\n\t    data.chats.count++;\n\t  else\n\t    data.chats = {count:1};\n\n\t  elem.storage('update_tab_title');\n\t}\n      });\n    },\n\n    /**\n     * Edit the _follow_ options for this file.\n     */\n\n    follow: function() {\n      var docid = this.storage('docid', 'gitty');\n\n      if ( docid ) {\n\tmodal.server_form({\n\t  title: \"Follow file options\",\n\t  url:   config.http.locations.follow_file_options,\n\t  data:  {docid: docid}\n\t});\n      } else {\n\tmodal.alert(\"Sorry, can only follow files\");\n      }\n    },\n\n    /**\n     * Called if the editor is destroyed to see whether it has pending\n     * modifications.\n     *\n     * @param {String} why is one of `\"beforeunload\" if the window is\n     * left or \"setSource\" if the source will be replaced.\n     */\n    unload: function(why, ev) {\n      var data = this.data(pluginName);\n\n      if ( !data )\t\t\t\t/* how can this happen? */\n\treturn undefined;\n\n      if ( data.meta ) {\n\thistory.addRecent({ st_type: \"gitty\",\n\t\t\t    id:\t  data.meta.name\t/* FIXME: add hash? */\n\t\t\t  });\n      }\n\n      if ( data.cleanData != data.getValue() ) {\n\tif ( why == \"beforeunload\" ) {\n\t  var message = \"The source editor has unsaved changes.\\n\"+\n\t                \"These will be lost if you leave the page\";\n\n\t  ev = ev||window.event;\n\t  if ( ev )\n\t    ev.returnValue = message;\n\n\t  return message;\n\t} else {\n\t  var message = \"The source editor has unsaved changes.\\n\"+\n\t                \"These will be lost\"+\n\t\t\t( why == \"setSource\" ? \" if you load a new program\" :\n\t\t\t  why == \"closetab\"  ? \" close this tab\" : \"\"\n\t\t\t);\n\n\t  return confirm(message);\n\t}\n      }\n\n      return undefined;\n    },\n\n    /**\n     * Called if this element is inside a tab this is being closed\n     */\n    close: function() {\n    },\n\n    /**\n     * maintain `data.is_clean`\n     */\n    markClean: function(clean) {\n      var data = this.data(pluginName);\n\n      data.is_clean = clean;\n    },\n\n    /**\n     * Broadcast all open (gitty) files. This is used to synchronise\n     * state.  Each state object has the property `file`.  If the file\n     * is locally modified, `state.modified` is `true` and if the file\n     * is the visible one, `state.visible` is true\n     * @param {Bool} [always] if `true`, also report if no files are\n     * open.\n     */\n    chat_status: function(always) {\n      var opened = [];\n\n      this.each(function() {\n\tvar data = $(this).data(pluginName);\n\n\tif ( data.st_type == \"gitty\" && data.meta && data.meta.name ) {\n\t  var state = { file:  data.meta.name };\n\n\t  if ( !data.is_clean ) state.modified = true;\n\t  if ( $(this).is(\":visible\") ) state.visible = true;\n\t  opened.push(state);\n\t}\n      });\n\n      if ( always || opened.length > 0 )\n\t$(\"#chat\").trigger('send',\n\t\t\t   { type:'has-open-files',\n\t\t\t     files:opened\n\t\t\t   });\n    }\n  }; // methods\n\n  function capitalizeFirstLetter(string) {\n    return string.charAt(0).toUpperCase() + string.slice(1);\n  }\n\n  function filesysInfo(form, meta) {\n    var table = $.el.table({class:\"table table-striped\"});\n\n    $(table).append($.el.tr($.el.th(\"Path\"),\n\t\t\t    $.el.td(meta.path)));\n    $(table).append($.el.tr($.el.th(\"Modified\"),\n\t\t\t    $.el.td(new Date(meta.last_modified*1000)\n\t\t\t\t    .toLocaleString())));\n    $(table).append($.el.tr($.el.th(\"Loaded\"),\n\t\t\t    $.el.td(meta.modified_since_loaded ? \"yes (modified)\":\n\t\t\t\t    meta.loaded ? \"yes\" : \"no\")));\n\n    form.append(table);\n  }\n\n  function errorString(action, error) {\n    if ( error.error == \"file_exists\" ) {\n      return action + \": file exists: \" + error.file;\n    }\n\n    return JSON.stringify(error);\n  }\n\n\n  /**\n   * <Class description>\n   *\n   * @class storage\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.storage = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\n  function filebase(file) {\n    return file ? file.split('.').slice(0,-1).join(\".\") : null;\n  }\n\n  function basename(path) {\n    return path ? path.split('/').pop() : null;\n  }\n\n  function udiff(diff) {\n    if ( diff ) {\n      var lines = diff.split(\"\\n\");\n      var pre = $($.el.pre({class:\"udiff\"}));\n\n      for(var i=0; i<lines.length; i++) {\n\tvar line = lines[i];\n\tvar classmap = { '@': 'udiff-hdr',\n\t\t\t ' ': 'udiff-ctx',\n\t\t\t '+': 'udiff-add',\n\t\t\t '-': 'udiff-del'\n\t\t       };\n\tpre.append($.el.span({class:classmap[line.charAt(0)]}, line),\n\t\t   $.el.br());\n      }\n      return pre;\n    } else {\n      return $($.el.div({class:\"udiff\"}, \"No changes\"));\n    }\n  }\n\n  function editConflicts(merged) {\n    var lines = merged.split(\"\\n\");\n    var pre = $($.el.pre({class:\"udiff\"}));\n    var cls = null;\n\n    function addLine(line, cls) {\n      pre.append($.el.span({class:cls}, line),\n\t\t $.el.br());\n    }\n\n    for(var i=0; i<lines.length; i++) {\n      var line = lines[i];\n\n      if ( line == \"<<<<<<<\" ) {\n\taddLine(line, \"edit-conflict-sep\");\n\tcls = \"edit-conflict-me\";\n      } else if ( cls == \"edit-conflict-me\" && line == \"=======\" ) {\n\taddLine(line, \"edit-conflict-sep\");\n\tcls = \"edit-conflict-them\";\n      } else if ( cls == \"edit-conflict-them\" && line == \">>>>>>>\" ) {\n\taddLine(line, \"edit-conflict-sep\");\n\tcls = null;\n      } else if ( cls ) {\n\taddLine(line, cls);\n     }\n   }\n\n   return pre;\n  }\n});\n\n","/*\n * [js-sha1]{@link https://github.com/emn178/js-sha1}\n *\n * @version 0.4.1\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2014-2016\n * @license MIT\n */\n/*jslint bitwise: true */\n(function() {\n  'use strict';\n\n  var root = typeof window === 'object' ? window : {};\n  var NODE_JS = !root.JS_SHA1_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n  if (NODE_JS) {\n    root = global;\n  }\n  var COMMON_JS = !root.JS_SHA1_NO_COMMON_JS && typeof module === 'object' && module.exports;\n  var AMD = typeof define === 'function' && define.amd;\n  var HEX_CHARS = '0123456789abcdef'.split('');\n  var EXTRA = [-2147483648, 8388608, 32768, 128];\n  var SHIFT = [24, 16, 8, 0];\n  var OUTPUT_TYPES = ['hex', 'array', 'digest', 'arrayBuffer'];\n\n  var blocks = [];\n\n  var createOutputMethod = function (outputType) {\n    return function (message) {\n      return new Sha1(true).update(message)[outputType]();\n    };\n  };\n\n  var createMethod = function () {\n    var method = createOutputMethod('hex');\n    if (NODE_JS) {\n      method = nodeWrap(method);\n    }\n    method.create = function () {\n      return new Sha1();\n    };\n    method.update = function (message) {\n      return method.create().update(message);\n    };\n    for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n      var type = OUTPUT_TYPES[i];\n      method[type] = createOutputMethod(type);\n    }\n    return method;\n  };\n\n  var nodeWrap = function (method) {\n    var crypto = require('crypto');\n    var Buffer = require('buffer').Buffer;\n    var nodeMethod = function (message) {\n      if (typeof message === 'string') {\n        return crypto.createHash('sha1').update(message, 'utf8').digest('hex');\n      } else if (message.constructor === ArrayBuffer) {\n        message = new Uint8Array(message);\n      } else if (message.length === undefined) {\n        return method(message);\n      }\n      return crypto.createHash('sha1').update(new Buffer(message)).digest('hex');\n    };\n    return nodeMethod;\n  };\n\n  function Sha1(sharedMemory) {\n    if (sharedMemory) {\n      blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n      blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n      blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n      blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n      this.blocks = blocks;\n    } else {\n      this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n    }\n\n    this.h0 = 0x67452301;\n    this.h1 = 0xEFCDAB89;\n    this.h2 = 0x98BADCFE;\n    this.h3 = 0x10325476;\n    this.h4 = 0xC3D2E1F0;\n\n    this.block = this.start = this.bytes = 0;\n    this.finalized = this.hashed = false;\n    this.first = true;\n  }\n\n  Sha1.prototype.update = function (message) {\n    if (this.finalized) {\n      return;\n    }\n    var notString = typeof(message) !== 'string';\n    if (notString && message.constructor === root.ArrayBuffer) {\n      message = new Uint8Array(message);\n    }\n    var code, index = 0, i, length = message.length || 0, blocks = this.blocks;\n\n    while (index < length) {\n      if (this.hashed) {\n        this.hashed = false;\n        blocks[0] = this.block;\n        blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n        blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n        blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n        blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n      }\n\n      if(notString) {\n        for (i = this.start; index < length && i < 64; ++index) {\n          blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n        }\n      } else {\n        for (i = this.start; index < length && i < 64; ++index) {\n          code = message.charCodeAt(index);\n          if (code < 0x80) {\n            blocks[i >> 2] |= code << SHIFT[i++ & 3];\n          } else if (code < 0x800) {\n            blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n            blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n          } else if (code < 0xd800 || code >= 0xe000) {\n            blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n            blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n            blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n          } else {\n            code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n            blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n            blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n            blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n            blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n          }\n        }\n      }\n\n      this.lastByteIndex = i;\n      this.bytes += i - this.start;\n      if (i >= 64) {\n        this.block = blocks[16];\n        this.start = i - 64;\n        this.hash();\n        this.hashed = true;\n      } else {\n        this.start = i;\n      }\n    }\n    return this;\n  };\n\n  Sha1.prototype.finalize = function () {\n    if (this.finalized) {\n      return;\n    }\n    this.finalized = true;\n    var blocks = this.blocks, i = this.lastByteIndex;\n    blocks[16] = this.block;\n    blocks[i >> 2] |= EXTRA[i & 3];\n    this.block = blocks[16];\n    if (i >= 56) {\n      if (!this.hashed) {\n        this.hash();\n      }\n      blocks[0] = this.block;\n      blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n      blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n      blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n      blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n    }\n    blocks[15] = this.bytes << 3;\n    this.hash();\n  };\n\n  Sha1.prototype.hash = function () {\n    var a = this.h0, b = this.h1, c = this.h2, d = this.h3, e = this.h4;\n    var f, j, t, blocks = this.blocks;\n\n    for(j = 16; j < 80; ++j) {\n      t = blocks[j - 3] ^ blocks[j - 8] ^ blocks[j - 14] ^ blocks[j - 16];\n      blocks[j] =  (t << 1) | (t >>> 31);\n    }\n\n    for(j = 0; j < 20; j += 5) {\n      f = (b & c) | ((~b) & d);\n      t = (a << 5) | (a >>> 27);\n      e = t + f + e + 1518500249 + blocks[j] << 0;\n      b = (b << 30) | (b >>> 2);\n\n      f = (a & b) | ((~a) & c);\n      t = (e << 5) | (e >>> 27);\n      d = t + f + d + 1518500249 + blocks[j + 1] << 0;\n      a = (a << 30) | (a >>> 2);\n\n      f = (e & a) | ((~e) & b);\n      t = (d << 5) | (d >>> 27);\n      c = t + f + c + 1518500249 + blocks[j + 2] << 0;\n      e = (e << 30) | (e >>> 2);\n\n      f = (d & e) | ((~d) & a);\n      t = (c << 5) | (c >>> 27);\n      b = t + f + b + 1518500249 + blocks[j + 3] << 0;\n      d = (d << 30) | (d >>> 2);\n\n      f = (c & d) | ((~c) & e);\n      t = (b << 5) | (b >>> 27);\n      a = t + f + a + 1518500249 + blocks[j + 4] << 0;\n      c = (c << 30) | (c >>> 2);\n    }\n\n    for(; j < 40; j += 5) {\n      f = b ^ c ^ d;\n      t = (a << 5) | (a >>> 27);\n      e = t + f + e + 1859775393 + blocks[j] << 0;\n      b = (b << 30) | (b >>> 2);\n\n      f = a ^ b ^ c;\n      t = (e << 5) | (e >>> 27);\n      d = t + f + d + 1859775393 + blocks[j + 1] << 0;\n      a = (a << 30) | (a >>> 2);\n\n      f = e ^ a ^ b;\n      t = (d << 5) | (d >>> 27);\n      c = t + f + c + 1859775393 + blocks[j + 2] << 0;\n      e = (e << 30) | (e >>> 2);\n\n      f = d ^ e ^ a;\n      t = (c << 5) | (c >>> 27);\n      b = t + f + b + 1859775393 + blocks[j + 3] << 0;\n      d = (d << 30) | (d >>> 2);\n\n      f = c ^ d ^ e;\n      t = (b << 5) | (b >>> 27);\n      a = t + f + a + 1859775393 + blocks[j + 4] << 0;\n      c = (c << 30) | (c >>> 2);\n    }\n\n    for(; j < 60; j += 5) {\n      f = (b & c) | (b & d) | (c & d);\n      t = (a << 5) | (a >>> 27);\n      e = t + f + e - 1894007588 + blocks[j] << 0;\n      b = (b << 30) | (b >>> 2);\n\n      f = (a & b) | (a & c) | (b & c);\n      t = (e << 5) | (e >>> 27);\n      d = t + f + d - 1894007588 + blocks[j + 1] << 0;\n      a = (a << 30) | (a >>> 2);\n\n      f = (e & a) | (e & b) | (a & b);\n      t = (d << 5) | (d >>> 27);\n      c = t + f + c - 1894007588 + blocks[j + 2] << 0;\n      e = (e << 30) | (e >>> 2);\n\n      f = (d & e) | (d & a) | (e & a);\n      t = (c << 5) | (c >>> 27);\n      b = t + f + b - 1894007588 + blocks[j + 3] << 0;\n      d = (d << 30) | (d >>> 2);\n\n      f = (c & d) | (c & e) | (d & e);\n      t = (b << 5) | (b >>> 27);\n      a = t + f + a - 1894007588 + blocks[j + 4] << 0;\n      c = (c << 30) | (c >>> 2);\n    }\n\n    for(; j < 80; j += 5) {\n      f = b ^ c ^ d;\n      t = (a << 5) | (a >>> 27);\n      e = t + f + e - 899497514 + blocks[j] << 0;\n      b = (b << 30) | (b >>> 2);\n\n      f = a ^ b ^ c;\n      t = (e << 5) | (e >>> 27);\n      d = t + f + d - 899497514 + blocks[j + 1] << 0;\n      a = (a << 30) | (a >>> 2);\n\n      f = e ^ a ^ b;\n      t = (d << 5) | (d >>> 27);\n      c = t + f + c - 899497514 + blocks[j + 2] << 0;\n      e = (e << 30) | (e >>> 2);\n\n      f = d ^ e ^ a;\n      t = (c << 5) | (c >>> 27);\n      b = t + f + b - 899497514 + blocks[j + 3] << 0;\n      d = (d << 30) | (d >>> 2);\n\n      f = c ^ d ^ e;\n      t = (b << 5) | (b >>> 27);\n      a = t + f + a - 899497514 + blocks[j + 4] << 0;\n      c = (c << 30) | (c >>> 2);\n    }\n\n    this.h0 = this.h0 + a << 0;\n    this.h1 = this.h1 + b << 0;\n    this.h2 = this.h2 + c << 0;\n    this.h3 = this.h3 + d << 0;\n    this.h4 = this.h4 + e << 0;\n  };\n\n  Sha1.prototype.hex = function () {\n    this.finalize();\n\n    var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4;\n\n    return HEX_CHARS[(h0 >> 28) & 0x0F] + HEX_CHARS[(h0 >> 24) & 0x0F] +\n           HEX_CHARS[(h0 >> 20) & 0x0F] + HEX_CHARS[(h0 >> 16) & 0x0F] +\n           HEX_CHARS[(h0 >> 12) & 0x0F] + HEX_CHARS[(h0 >> 8) & 0x0F] +\n           HEX_CHARS[(h0 >> 4) & 0x0F] + HEX_CHARS[h0 & 0x0F] +\n           HEX_CHARS[(h1 >> 28) & 0x0F] + HEX_CHARS[(h1 >> 24) & 0x0F] +\n           HEX_CHARS[(h1 >> 20) & 0x0F] + HEX_CHARS[(h1 >> 16) & 0x0F] +\n           HEX_CHARS[(h1 >> 12) & 0x0F] + HEX_CHARS[(h1 >> 8) & 0x0F] +\n           HEX_CHARS[(h1 >> 4) & 0x0F] + HEX_CHARS[h1 & 0x0F] +\n           HEX_CHARS[(h2 >> 28) & 0x0F] + HEX_CHARS[(h2 >> 24) & 0x0F] +\n           HEX_CHARS[(h2 >> 20) & 0x0F] + HEX_CHARS[(h2 >> 16) & 0x0F] +\n           HEX_CHARS[(h2 >> 12) & 0x0F] + HEX_CHARS[(h2 >> 8) & 0x0F] +\n           HEX_CHARS[(h2 >> 4) & 0x0F] + HEX_CHARS[h2 & 0x0F] +\n           HEX_CHARS[(h3 >> 28) & 0x0F] + HEX_CHARS[(h3 >> 24) & 0x0F] +\n           HEX_CHARS[(h3 >> 20) & 0x0F] + HEX_CHARS[(h3 >> 16) & 0x0F] +\n           HEX_CHARS[(h3 >> 12) & 0x0F] + HEX_CHARS[(h3 >> 8) & 0x0F] +\n           HEX_CHARS[(h3 >> 4) & 0x0F] + HEX_CHARS[h3 & 0x0F] +\n           HEX_CHARS[(h4 >> 28) & 0x0F] + HEX_CHARS[(h4 >> 24) & 0x0F] +\n           HEX_CHARS[(h4 >> 20) & 0x0F] + HEX_CHARS[(h4 >> 16) & 0x0F] +\n           HEX_CHARS[(h4 >> 12) & 0x0F] + HEX_CHARS[(h4 >> 8) & 0x0F] +\n           HEX_CHARS[(h4 >> 4) & 0x0F] + HEX_CHARS[h4 & 0x0F];\n  };\n\n  Sha1.prototype.toString = Sha1.prototype.hex;\n\n  Sha1.prototype.digest = function () {\n    this.finalize();\n\n    var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4;\n\n    return [\n      (h0 >> 24) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 8) & 0xFF, h0 & 0xFF,\n      (h1 >> 24) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 8) & 0xFF, h1 & 0xFF,\n      (h2 >> 24) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 8) & 0xFF, h2 & 0xFF,\n      (h3 >> 24) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 8) & 0xFF, h3 & 0xFF,\n      (h4 >> 24) & 0xFF, (h4 >> 16) & 0xFF, (h4 >> 8) & 0xFF, h4 & 0xFF\n    ];\n  };\n\n  Sha1.prototype.array = Sha1.prototype.digest;\n\n  Sha1.prototype.arrayBuffer = function () {\n    this.finalize();\n\n    var buffer = new ArrayBuffer(20);\n    var dataView = new DataView(buffer);\n    dataView.setUint32(0, this.h0);\n    dataView.setUint32(4, this.h1);\n    dataView.setUint32(8, this.h2);\n    dataView.setUint32(12, this.h3);\n    dataView.setUint32(16, this.h4);\n    return buffer;\n  };\n\n  var exports = createMethod();\n\n  if (COMMON_JS) {\n    module.exports = exports;\n  } else {\n    root.sha1 = exports;\n    if (AMD) {\n      define('sha1',[],function () {\n        return exports;\n      });\n    }\n  }\n})();\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2015-2017, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Manage the cell structure of a notebook modelled after IPython\n * NoteBook.  The nodebook consists of a toolbar with a series of\n * buttons and manages a list of cells.  The file defines two plugins\n * `notebook`, implementing the overall notebook and `nbCell`,\n * implementing a single cell.\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n */\n\ndefine('notebook',[ \"jquery\", \"config\", \"tabbed\", \"form\",\n\t \"preferences\", \"modal\", \"prolog\", \"links\",\n\t \"laconic\", \"runner\", \"storage\", \"sha1\"\n       ],\n       function($, config, tabbed, form, preferences, modal, prolog, links) {\n\nvar cellTypes = {\n  \"program\":  { label:\"Program\",  prefix:\"p\"   },\n  \"query\":    { label:\"Query\",    prefix:\"q\"   },\n  \"markdown\": { label:\"Markdown\", prefix:\"md\"  },\n  \"html\":     { label:\"HTML\",     prefix:\"htm\" }\n};\n\n(function($) {\n  var pluginName = 'notebook';\n  var clipboard = null;\n\n  /** @lends $.fn.notebook */\n  var methods = {\n    /**\n     * Initialize a Prolog Notebook.\n     * @param {Object} options\n     * @param {String} [options.value] provides the initial content\n     * @param {Boolean} [options.fullscreen] open notebook in fullscreen\n     * mode.\n     */\n    _init: function(options) {\n      options = options||{};\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar storage = {};\t\t/* storage info */\n\tvar data = {};\t\t\t/* private data */\n\tvar toolbar, content;\n\n\telem.addClass(\"notebook\");\n\telem.addClass(\"swish-event-receiver\");\n\n\tfunction notebookMenu() {\n\t  var icon = $.el.span({class:\"glyphicon glyphicon-menu-hamburger\"});\n\t  var menu = form.widgets.dropdownButton(\n\t    icon,\n\t    { divClass:\"notebook-menu btn-transparent\",\n\t      ulClass:\"pull-right\",\n\t      client:elem,\n\t      actions:\n\t      { \"Delete cell\":     function() { this.notebook('delete'); },\n\t\t\"Copy cell\":       function() { this.notebook('copy'); },\n\t\t\"Paste cell\":      function() { this.notebook('paste'); },\n\t\t\"Move cell up\":    function() { this.notebook('up'); },\n\t\t\"Move cell down\":  function() { this.notebook('down'); },\n\t\t\"Insert cell\":     function() { this.notebook('insertBelow'); },\n\t\t\"--\":\t\t   \"Notebook actions\",\n\t\t\"Exit fullscreen\": function() { this.notebook('fullscreen',false)}\n\t      }\n\t    });\n\n\t  return menu;\n\t}\n\n\telem.append(toolbar = $.el.div(\n            {class:\"nb-toolbar\"},\n\t    glyphButton(\"trash\", \"delete\", \"Delete cell\", \"warning\"),\n\t    glyphButton(\"copy\", \"copy\", \"Copy cell\", \"default\"),\n\t    glyphButton(\"paste\", \"paste\", \"Paste cell below\", \"default\"),\n\t    sep(),\n\t    glyphButton(\"chevron-up\", \"up\", \"Move cell up\", \"default\"),\n\t    glyphButton(\"chevron-down\", \"down\", \"Move cell down\", \"default\"),\n\t    sep(),\n\t    glyphButton(\"plus\", \"insertBelow\", \"Insert cell below\", \"primary\"),\n\t    glyphButton(\"fullscreen\", \"fullscreen\", \"Full screen\", \"default\")\n\t    ));\n\telem.append(notebookMenu());\n\telem.append($.el.div({class:\"nb-view\", tabIndex:\"-1\"},\n\t\t\t     content=$.el.div({class:\"nb-content\"}),\n\t\t\t     $.el.div({class:\"nb-bottom\"})));\n\n\t$(toolbar).on(\"click\", \"a.btn\", function(ev) {\n\t  var action = $(ev.target).closest(\"a\").data(\"action\");\n\t  elem.notebook(action);\n\t  ev.preventDefault();\n\t  return false;\n\t});\n\n\t$(content).on(\"click\", \".nb-cell-buttons a.btn\", function(ev) {\n\t  var a    = $(ev.target).closest(\"a\");\n\t  var cell = a.closest(\".nb-cell\");\n\n\t  var action = a.data(\"action\");\n\t  cell.nbCell(action);\n\t  ev.preventDefault();\n\t  return false;\n\t});\n\n\telem.focusin(function(ev) {\n\t  var cell = $(ev.target).closest(\".nb-cell\");\n\t  if ( cell.length > 0 ) {\n\t    elem.notebook('active', cell);\n\t  } else if ( $(ev.target).closest(\".nb-view\").length > 0 )\n\t  { elem.find(\".nb-content\").children(\".nb-cell.active\")\n\t\t\t\t    .nbCell('active', false);\n\t  }\n\t});\n\telem.focusout(function(ev) {\n\t  if ( $(ev.target).closest(\".notebook\")[0] != elem[0] ) {\n\t    elem.find(\".nb-content\").children(\".nb-cell.active\")\n\t\t\t\t    .nbCell('active', false);\n\t  }\n\t});\n\n\t/* Activate the active source or first source.  If the active\n\t * cell is a query, we could activate the source of the query?\n\t */\n\telem.on(\"activate-tab\", function(ev) {\n\t  if ( ev.target == elem[0] ) {\n\t    var eds = elem.find(\".nb-content\")\n                          .children(\".nb-cell.program\");\n\t    var aeds = eds.filter(\".active\");\n\t    var nc = aeds[0]||eds[0];\n\n\t    if ( nc ) {\n\t      $(nc).find(\".prolog-editor\").prologEditor('makeCurrent');\n\t    }\n\t    ev.stopPropagation();\n\t  }\n\t});\n\n\telem.data(pluginName, data);\t/* store with element */\n\n\t\t\t\t\t/* restore content */\n\tvar content = elem.find(\".notebook-data\");\n\tif ( options.value ) {\n\t  elem.notebook('value', options.value);\n\t} else if ( content.length > 0 ) {\n\t  function copyData(name) {\n\t    var value = content.data(name);\n\t    if ( value ) {\n\t      storage[name] = value;\n\t    }\n\t  }\n\n\t  copyData(\"file\");\n\t  copyData(\"url\");\n\t  copyData(\"title\");\n\t  copyData(\"meta\");\n\t  copyData(\"st_type\");\n\t  copyData(\"chats\");\n\n\t  var docid = elem.storage('docid', undefined, storage);\n\t  var prefs = preferences.getVal(docid)||{fullscreen:true};\n\n\t  elem.notebook('value', content.text(),\n\t\t\t{ fullscreen: prefs.fullscreen\n\t\t\t});\n\t  content.remove();\n\t} else {\n\t  elem.notebook('placeHolder');\n\t}\n\n\telem.notebook('setupStorage', storage);\n\telem.on(\"data-is-clean\", function(ev, clean) {\n\t  if ( $(ev.target).hasClass(\"prolog-editor\") )\n\t  { elem.notebook('checkModified');\n\t    ev.stopPropagation();\n\t    return false;\n\t  }\n\t});\n\telem.on(\"fullscreen\", function(ev, val) {\n\t  var prefs = preferences.getVal(docid)||{};\n\t  prefs.fullscreen = val;\n\t  preferences.setVal(docid, prefs);\n\t});\n      }); /* end .each() */\n    },\n\n\t\t /*******************************\n\t\t *\t  BUTTON ACTIONS\t*\n\t\t *******************************/\n\n    delete: function(cell) {\n      cell = cell||currentCell(this);\n      if ( cell ) {\n\tthis.notebook('active', cell.next()||cell.prev());\n\tcell.nbCell('close');\n\tthis.notebook('updatePlaceHolder');\n      }\n      this.notebook('checkModified');\n      return this;\n    },\n\n    copy: function(cell) {\n      cell = cell||currentCell(this);\n      if ( cell ) {\n\tvar dom = $.el.div({class:\"notebook\"});\n\t$(dom).append($(cell).nbCell('saveDOM'));\n\t$(dom).find(\".nb-cell\").removeAttr(\"name\");\n\tclipboard = stringifyNotebookDOM(dom);\n      }\n    },\n\n    paste: function(text) {\n      var nb = this;\n\n      text = text||clipboard;\n      if ( text ) {\n\tvar dom = $.el.div();\n\n\t$(dom).html(text);\n\tvar cells = $(dom).find(\".nb-cell\");\n\tif ( cells.length > 0 ) {\n\t  $(dom).find(\".nb-cell\").each(function() {\n\t    nb.notebook('insert', {\n\t      where: \"below\",\n\t      restore: $(this)\n\t    });\n\t  });\n\t  return this;\n\t} else {\n\t  modal.alert(\"Not a SWISH notebook\");\n\t}\n      } else {\n\tmodal.alert(\"Clipboard is empty\");\n      }\n    },\n\n    up: function(cell) {\n      cell = cell||currentCell(this);\n      if ( cell ) {\n\tcell.insertBefore(cell.prev());\n\tthis.notebook('checkModified');\n      }\n      return this;\n    },\n\n    down: function(cell) {\n      cell = cell||currentCell(this);\n      if ( cell ) {\n\tcell.insertAfter(cell.next());\n\tthis.notebook('checkModified');\n      }\n      return this;\n    },\n\n    insertAbove: function() {\n      return this.notebook('insert', { where:\"above\" });\n    },\n\n    insertBelow: function() {\n      if ( this.notebook('insert', {where:\"below\", if_visible:true}) == false ) {\n\tmodal.alert(\"<p>New cell would appear outside the visible area of the \" +\n\t\t    \"notebook.\" +\n\t\t    \"<p>Please select the cell below which you want the \"+\n\t\t    \"new cell to appear or scroll to the bottom of the \" +\n\t\t    \"notebook.\");\n      }\n\n      return this;\n    },\n\n    run: function(cell) {\n      cell = cell||currentCell(this);\n      if ( cell )\n\tcell.nbCell(\"run\");\n    },\n\n    fullscreen: function(val) {\n      if ( val == undefined )\t\t/* default: toggle */\n\tval = !this.hasClass(\"fullscreen\");\n\n      if ( val ) {\n\tvar chat_container = this.closest(\".chat-container\");\n\tvar node = chat_container.length == 1 ? chat_container : this;\n\t$(\"body.swish\").swish('fullscreen', node, this);\n      } else {\n\t$(\"body.swish\").swish('exitFullscreen');\n      }\n\n      return this;\n    },\n\n    cellType: function(cell, type) {\n      cell = cell||currentCell(this);\n      if ( cell )\n\tcell.nbCell('type', type);\n    },\n\n\t\t /*******************************\n\t\t *\t      SELECTION\t\t*\n\t\t *******************************/\n\n    getSelection: function() {\n      return this.notebook('assignCellNames')\n                 .find(\".prolog-editor\")\n\t\t .prologEditor('getSelection');\n    },\n\n    restoreSelection: function(sel) {\n      return this.notebook('assignCellNames')\n                 .find(\".prolog-editor\")\n\t\t .prologEditor('restoreSelection', sel);\n    },\n\n\n\t\t /*******************************\n\t\t *\t    CLEAN/DIRTY\t\t*\n\t\t *******************************/\n\n    checkModified: function() {\n      return this.each(function() {\n\tvar nb = $(this);\n\tvar store = nb.data(\"storage\");\n\tvar clean = store.cleanGeneration == nb.notebook('changeGen');\n\n\tnb.notebook('markClean', clean);\n      });\n    },\n\n    /**\n     * Called if the notebook changes from clean to dirty or visa versa.\n     * This triggers `data-is-clean`, which is trapped by the tab to\n     * indicate the changed state of the editor.\n     */\n    markClean: function(clean) {\n      return this.each(function() {\n\tvar nb = $(this);\n\tvar data = nb.data(pluginName);\n\n\tif ( data.clean_signalled != clean )\n\t{ data.clean_signalled = clean;\n\t  nb.trigger(\"data-is-clean\", clean);\n\t}\n\n\tif ( clean ) {\n\t  nb.find(\".prolog-editor\").prologEditor('setIsClean');\n\t}\n      });\n    },\n\n\n\t\t /*******************************\n\t\t *\t CELL MANAGEMENT\t*\n\t\t *******************************/\n\n    /**\n     * @param {jQuery} cell is the cell that must be activated\n     * @param {Boolean} [focus] if `true`, give the cell the focus\n     */\n    active: function(cell, focus) {\n      if ( cell ) {\n\tvar current = this.find(\".nb-content .nb-cell.active\");\n\n\tfunction removeNotForQuery(elem) {\n\t  elem.find(\".nb-content .nb-cell.not-for-query\")\n\t      .removeClass(\"not-for-query\");\n\t}\n\n\tif ( cell.length == 1 )\n\t{ if ( !(current.length == 1 && cell[0] == current[0]) ) {\n\t    removeNotForQuery(this);\n\t    current.nbCell('active', false);\n\t    cell.nbCell('active', true);\n\t    if ( focus )\n\t      cell.focus();\n\t  }\n\t} else\n\t{ removeNotForQuery(this);\n\t  current.nbCell('active', false);\n\t}\n      }\n    },\n\n    /**\n     * Insert a new cell\n     * @param {Object} [options]\n     * @param {String} [options.where] defines where the cell is\n     * inserted relative to the cell with the current focus.\n     * @param {jQuery} [options.restore] If provided, it must contains\n     * a save/restore node that will be used to fill the new cell.\n     * @param {Bool}   [options.if_visible]  If `true`, only insert is\n     * the insertion point is visible.\n     */\n    insert: function(options) {\n      options   = options||{};\n      var relto = currentCell(this);\n      var cell  = options.cell || $.el.div({class:\"nb-cell\"});\n      var view  = this.find(\".nb-view\")\n      var viewrect;\n\n      if ( options.if_visible ) {\n\tif ( view.find(\".nb-content > div.nb-cell\").length > 0 )\n\t  viewrect = view[0].getBoundingClientRect();\n      }\n\n      if ( relto ) {\n\tif ( options.where == 'above' ) {\n\t  if ( viewrect ) {\n\t    var seltop = relto[0].getBoundingClientRect().top;\n\t    if ( seltop < viewrect.top )\n\t      return false;\n\t  }\n\t  $(cell).insertBefore(relto);\n\t} else {\n\t  if ( viewrect ) {\n\t    var selbottom = relto[0].getBoundingClientRect().bottom;\n\n\t    if ( selbottom > viewrect.bottom - 20 )\n\t      return false;\n\t  }\n\t  $(cell).insertAfter(relto);\n\t}\n      } else {\n\tvar content = this.find(\".nb-content\");\n\n\tif ( viewrect ) {\n\t  var cbottom = content[0].getBoundingClientRect().bottom;\n\n\t  if ( cbottom > viewrect.bottom - 20 )\n\t    return false;\n\t}\n\tcontent.append(cell);\n      }\n\n      if ( !options.cell ) {\n\t$(cell).nbCell(options.restore);\n      }\n      $(cell).nbCell('assignName');\n      this.notebook('updatePlaceHolder');\n      this.notebook('active', $(cell));\n      this.notebook('checkModified');\n\n      return this;\n    },\n\n\t\t /*******************************\n\t\t *\t   SAVE/RESTORE\t\t*\n\t\t *******************************/\n\n    /**\n     * Setup connection to the storage manager.\n     */\n    setupStorage: function(storage) {\n      var notebook = this;\n\n      storage = $.extend(storage, {\n        getValue: function() {\n\t  return notebook.notebook('value');\n\t},\n\tsetValue: function(source) {\n\t  return notebook.notebook('setSource', source);\n\t},\n\tchangeGen: function() {\n\t  return notebook.notebook('changeGen');\n\t},\n\tisClean: function(gen) {\n\t  var cgen = notebook.notebook('changeGen');\n\t  return gen == cgen;\n\t},\n\tmarkClean: function(clean) {\n\t  notebook.notebook('markClean', clean);\n\t},\n\tcleanGeneration: this.notebook('changeGen'),\n\tcleanData:       this.notebook('value'),\n\tcleanCheckpoint: \"load\",\n\ttypeName:\t \"notebook\"\n      });\n\n      return this.storage(storage);\n    },\n\n    /**\n     * Set the source\n     */\n    setSource: function(source) {\n      if ( typeof(source) == \"string\" )\n\tsource = {data:source};\n\n      this.notebook('value', source.data);\n    },\n\n    /**\n     * Set or get the state of this notebook as a string.\n     * @param {Object} options\n     * @param {Boolean} [options.skipEmpty=false] if `true`, do not save\n     *\t\t        empty cells.\n     * @param {Boolean} [options.fullscreen] if `true', go fullscreen.\n     * Default is `true` if the toplevel `div.notebook` has a class\n     * `fullscreen`.\n     * @param [String] val is an HTML string that represents\n     * the notebook state.\n     */\n    value: function(val, options) {\n      options = options||{};\n\n      if ( val == undefined ) {\n\tvar dom = $.el.div({class:\"notebook\"});\n\tthis.find(\".nb-cell\").each(function() {\n\t  cell = $(this);\n\t  if ( !(options.skipEmpty && cell.nbCell('isEmpty')) )\n\t    $(dom).append(cell.nbCell('saveDOM'));\n\t});\n\n\treturn stringifyNotebookDOM(dom);\n      } else {\n\tvar notebook = this;\n\tvar content  = this.find(\".nb-content\");\n\tvar dom = $.el.div();\n\n\tcontent.html(\"\");\n\tdom.innerHTML = val;\t\t/* do not execute scripts */\n\n\tif ( options.fullscreen == undefined )\n\t  options.fullscreen = $(dom).find(\"div.notebook\").hasClass(\"fullscreen\");\n\tif ( options.fullscreen ) {\n\t  this.removeClass(\"fullscreen\");\n\t  this.notebook('fullscreen', true);\n\t}\n\n\t$(dom).find(\".nb-cell\").each(function() {\n\t  var cell = $.el.div({class:\"nb-cell\"});\n\t  content.append(cell);\n\t  $(cell).nbCell($(this));\n\t});\n\n\tthis.find(\".nb-cell\").nbCell('onload');\n\tthis.notebook('updatePlaceHolder');\n      }\n    },\n\n    /**\n     * Compute a state fingerprint for the entire notebook\n     * @return {String} SHA1 fingerprint\n     */\n    changeGen: function() {\n      var list = [];\n      this.find(\".nb-cell\").each(function() {\n\tcell = $(this);\n\tlist.push(cell.nbCell('changeGen'));\n      });\n      return sha1(list.join());\n    },\n\n    /**\n     * Assign names to all cells.  This is normally done as the\n     * notebook is created, but needs to be done for old notebooks\n     * if functions are used that require named cells.  Calling this\n     * method has no effect if all cells already have a name.\n     */\n    assignCellNames: function() {\n      this.find(\".nbCell\").nbCell('assignName');\n      return this.notebook('checkModified');\n    },\n\n\n\t\t /*******************************\n\t\t *\t       HELP\t\t*\n\t\t *******************************/\n\n    updatePlaceHolder: function() {\n      if ( this.find(\".nb-content\").children().length == 0 )\n\tthis.notebook('placeHolder');\n      else\n\tthis.find(\".nb-placeholder\").remove();\n    },\n\n    placeHolder: function() {\n      var placeholder = $.el.div({class:\"nb-placeholder\"});\n\n      $.ajax({ url: config.http.locations.help + \"/notebook.html\",\n\t       dataType: \"html\",\n\t       success: function(data) {\n\t\t $(placeholder).html(data);\n\t       }\n             });\n      this.find(\".nb-content\").append(placeholder);\n    }\n  }; // methods\n\n  // <private functions>\n\n  /**\n   * @returns {Object|null} cell that is focussed and inside our\n   * notebook.\n   * @param {Object} nb is the notebook\n   */\n  function currentCell(nb) {\n    var active = $(nb).find(\".nb-cell.active\");\n\n    if ( active.length == 1 )\n      return active.first();\n\n    return null;\n  }\n\n  function stringifyNotebookDOM(dom) {\n    /*\n     * Attributes from .html() are not ordered.  We need a canonical\n     * representation and therefore we need to reorder the HTML\n     * attributes and map the attribute names to lower case.\n     */\n    function orderAttrs(s) {\n      attrs = s.match(/[-a-z]+=\"[^\"]*\"/g);\n      if ( attrs ) {\n\tvar start = s.match(/^<[a-z]* /);\n\tfor(var i=0; i<attrs.length; i++) {\n\t  var l = attrs[i].split(/=(.*)/);\n\t  attrs[i] = l[0].toLowerCase()+\"=\"+l[1];\n\t}\n\treturn start[0]+attrs.sort().join(\" \")+\">\";\n      } else\n\treturn s;\n    }\n\n    var html = $($.el.div(dom)).html();\n    var nest = [];\n    return html.replace(/(<div [^>]*>|<\\/div>)/g, function(t) {\n      var is_cell;\n      if ( t == \"</div>\" ) {\n\tis_cell = nest.pop();\n\treturn is_cell ? \"\\n\"+t+\"\\n\" : t;\n      } else {\n\tis_cell = (t.match(/(nb-cell|notebook)/) != null);\n\tnest.push(is_cell);\n\treturn is_cell ? \"\\n\"+orderAttrs(t)+\"\\n\" : t;\n      }\n    }).slice(1);\n  }\n\n  tabbed.tabTypes.notebook = {\n    dataType: \"swinb\",\n    typeName: \"notebook\",\n    label: \"Notebook\",\n    contentType: \"text/x-prolog-notebook\",\n    order: 200,\n    create: function(dom, options) {\n      $(dom).notebook(options);\n    }\n  };\n\n  /**\n   * <Class description>\n   *\n   * @class notebook\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.notebook = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\n\t\t /*******************************\n\t\t *\t    PLUGIN nbCell\t*\n\t\t *******************************/\n\n(function($) {\n  var pluginName = 'nbCell';\n  var id = 0;\t\t\t\t/* generate unique cell ids */\n\n  /** @lends $.fn.nbCell */\n  var methods = {\n    /**\n     * Create a new notebook cell\n     * @param {jQuery} [dom] initialise the new cell from the saved\n     * DOM\n     */\n    _init: function(dom) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = {};\t\t\t/* private data */\n\tvar g;\n\n\telem.data(pluginName, data);\t/* store with element */\n\telem.attr(\"tabIndex\", -1);\n\telem.attr(\"id\", \"nbc\"+id++);\n\n\tif ( dom instanceof jQuery ) {\n\t  elem.nbCell('restoreDOM', dom);\n\t} else {\n\t  var close = glyphButton(\"remove-circle\", \"close\", \"Close\",\n\t\t\t\t  \"default\", \"xs\");\n\t  elem.append(close);\n\t  $(close).addClass(\"close-select\");\n\t  $(close).on(\"click\", function() {\n\t    elem.nbCell('close');\n\t  });\n\n\t  elem.append($.el.div({class:\"nb-type-select\"},\n\t\t\t       $.el.label(\"Create a \"),\n\t\t\t       g=$.el.div({class:\"btn-group\",role:\"group\"}),\n\t\t\t       $.el.label(\"cell here.\")));\n\n\t  for(var k in cellTypes) {\n\t    if ( cellTypes.hasOwnProperty(k) )\n\t      $(g).append($.el.button({ type:\"button\",\n\t\t\t\t\tclass:\"btn btn-default\",\n\t\t\t\t\t\"data-type\":k\n\t\t\t\t      },\n\t\t\t\t      cellTypes[k].label));\n\t  }\n\n\t  $(g).on(\"click\", \".btn\", function(ev) {\n\t    elem.nbCell('type', $(ev.target).data('type'));\n\t  });\n\n\t  elem.append($.el.div({class:\"nb-type-more\"},\n\t\t\t       typeMore(),\n\t\t\t       typeLess($.el.label(\"Insert notebook from \" +\n\t\t\t\t\t\t   \"local file \"),\n\t\t\t\t\tfileInsertInput()[0])));\n\t}\n      });\n    },\n\n    /**\n     * (de)activate the current cell.\n     */\n    active: function(val) {\n      var data = this.data(pluginName);\n\n      if ( val ) {\n\tthis.addClass(\"active\");\n\tswitch( data.type ) {\n\t  case \"program\":\n\t    this.find(\".editor\").prologEditor('makeCurrent');\n\t    break;\n\t  case \"query\":\n\t    var ed = this.prevAll(\".program\").first().find(\".editor\");\n\t    if ( ed.length == 1 )\n\t      ed.prologEditor('makeCurrent');\n\t    this.closest(\".notebook\")\n                .find(\".nb-cell.program\")\n                .not(this.nbCell(\"program_cells\"))\n                .addClass(\"not-for-query\");\n\t    break;\n\t}\n      } else if ( this.length > 0 ) {\n\tthis.removeClass(\"active\");\n\tswitch( data.type ) {\n\t  case \"markdown\":\n\t  case \"html\":\n\t    if ( this.hasClass(\"runnable\") ) {\n\t      this.nbCell('run');\n\t    }\n\t    break;\n\t}\n      }\n    },\n\n\n    type: function(type) {\n      var data = this.data(pluginName);\n      if ( data.type != type ) {\n\tmethods.type[type].apply(this);\n\tdata.type = type;\n\tthis.addClass(type);\n\tthis.removeAttr(\"name\");\n\tthis.nbCell('assignName');\n      }\n      return this;\n    },\n\n    /**\n     * Give the cells in a jQuery set a unique name inside their\n     * notebook.\n     */\n    assignName: function() {\n      return this.each(function() {\n\tvar cell = $(this);\n\n\tif ( !cell.attr(\"name\") ) {\n\t  var data   = cell.data(pluginName);\n\t  if ( data.type ) {\n\t    var prefix = cellTypes[data.type].prefix;\n\t    var nb     = cell.closest(\".notebook\");\n\n\t    for(i=1; ; i++) {\n\t      var name = prefix+i;\n\t      if ( nb.find(\"*[name=\"+name+\"]\").length == 0 ) {\n\t\tcell.attr(\"name\", name);\n\t\tbreak;\n\t      }\n\t    }\n\t  }\n\t}\n      });\n    },\n\n    /**\n     * Run the current cell\n     */\n    run: function() {\n      var args = arguments;\n\n      return this.each(function() {\n\tvar cell = $(this);\n\tif ( cell.hasClass(\"runnable\") ) {\n\t  var data = cell.data(pluginName);\n\n\t  return methods.run[data.type].apply(cell, args);\n\t} else {\n\t  console.log(\"Cell is not runnable: \", cell);\n\t}\n      });\n    },\n\n    runTabled: function() {\n      return this.nbCell('run', {tabled:true});\n    },\n\n    onload: function() {\n      var args = arguments;\n\n      this.each(function() {\n\tvar cell = $(this);\n\tvar data = cell.data(pluginName);\n\n\tif ( methods.onload[data.type] )\n\t  methods.onload[data.type].apply(cell, args);\n      });\n\n      return this.nbCell('refresh');\n    },\n\n    close: function() {\n      this.find(\".prolog-runner\").prologRunner('close');\n      return this.remove();\n    },\n\n    refresh: function() {\n      if ( this.hasClass(\"program\") ) {\n\tthis.find(\"a[data-action='background']\")\n            .attr('title', this.hasClass(\"background\") ?\n\t\t\t     \"Used for all queries in this notebook\" :\n\t\t             \"Used for queries below this cell\");\n\n      }\n      return this;\n    },\n\n    getSettings: function() {\n      return {\n        tabled: this.data(\"tabled\") == \"true\",\n\trun:    this.data(\"run\")    == \"onload\",\n\tchunk:  parseInt(this.data(\"chunk\")||\"1\"),\n\tname:   this.attr(\"name\")\n      };\n    },\n\n    /**\n     * Present a modal that shows the current query properties and\n     * allows for changing them.\n     */\n    settings: function() {\n      var elem    = this;\n      var current = this.nbCell('getSettings');\n\n      function querySettingsBody() {\n\tthis.append($.el.form(\n          { class:\"form-horizontal\"\n\t  },\n\t  form.fields.checkboxes(\n\t\t[ { name: \"tabled\",\n\t\t    label: \"table results\",\n\t\t    value: current.tabled,\n\t\t    title: \"Table results\"\n\t\t  },\n\t\t  { name: \"run\",\n\t\t    label: \"run on page load\",\n\t\t    value: current.run,\n\t\t    title: \"Run when document is loaded\"\n\t\t  }\n\t\t], {col:3}),\n\t  form.fields.chunk(current.chunk),\n\t  form.fields.name(current.name||\"\"),\n\t  form.fields.buttons(\n\t  { label: \"Apply\",\n\t    offset: 3,\n\t    action: function(ev, values) {\n\t      if ( values.tabled != current.tabled ) {\n\t\tif ( values.tabled )\n\t\t  elem.data(\"tabled\", \"true\");\n\t\telse\n\t\t  elem.removeData(\"tabled\");\n\t      }\n\t      if ( values.run != current.run ) {\n\t\tif ( values.run )\n\t\t  elem.data(\"run\", \"onload\");\n\t\telse\n\t\t  elem.removeData(\"run\");\n\t      }\n\t      if ( values.chunk != current.chunk ) {\n\t\tif ( values.chunk != 1 )\n\t\t  elem.data(\"chunk\",  \"\"+values.chunk);\n\t\telse\n\t\t  elem.removeData(\"chunk\");\n\t      }\n\t      var name = values.name ? values.name.trim() : \"\";\n\t      if (  name != current.name ) {\n\t\tif ( name )\n\t\t  elem.attr(\"name\", name);\n\t\telse\n\t\t  elem.attr(\"name\", null);\n\t      }\n\t      elem.closest(\".notebook\").notebook('checkModified');\n\t    }\n\t  })));\n      }\n\n      form.showDialog({ title: \"Set options for query\",\n                        body: querySettingsBody\n                      });\n    },\n\n    /**\n     * Change the editor of a program cell to fixed (one line) height\n     */\n    singleline: function() {\n      this.toggleClass(\"singleline\");\n      this.find(\".editor\").prologEditor('refresh');\n      glyphButtonGlyph(this, \"singleline\",\n\t\t       this.hasClass(\"singleline\")\n\t\t\t\t? \"triangle-left\"\n\t\t\t\t: \"triangle-bottom\");\n      this.find(\"a[data-action=singleline]\").blur();\n      return this;\n    },\n\n    /**\n     * Toggle a program fragment to be background/non-background\n     */\n    background: function() {\n      this.toggleClass(\"background\");\n      this.find(\"a[data-action=background]\").blur();\n      this.closest(\".notebook\").notebook('checkModified');\n      this.nbCell('refresh');\n      return this;\n    },\n\n    /**\n     * Returns all program cells in current notebook that are loaded\n     * for executing the current cell.  This always starts with the\n     * background programs.  If `this` is a program cell, it is added.\n     * Otherwise the program cell before `this` is added.\n     * @return {jQuery} set of nbCell elements that form the\n     * sources for the receiving query cell.\n     */\n    program_cells: function() {\n      var data = this.data(pluginName);\n      var programs = this.closest(\".notebook\")\n\t                 .find(\".nb-cell.program.background\");\n      if ( this.hasClass(\"program\") ) {\n\tif ( !this.hasClass(\"background\") )\n\t  programs = programs.add(this);\n      } else {\n\tprograms = programs.add(this.prevAll(\".program\").first());\n      }\n      return programs;\n    },\n\n    programs: function() {\n      var cells = this.nbCell('program_cells');\n      return cells.find(\".editor\");\n    },\n\n    isEmpty: function() {\n      return methods.isEmpty[this.data(pluginName).type].call(this);\n    },\n\n    saveDOM: function() {\n      return methods.saveDOM[this.data(pluginName).type].call(this);\n    },\n\n    restoreDOM: function(dom) {\n      var data = this.data(pluginName);\n\n      function domCellType(dom) {\n\tfor(var k in cellTypes) {\n\t  if ( cellTypes.hasOwnProperty(k) && dom.hasClass(k) )\n\t    return k;\n\t}\n      }\n\n      data.type = domCellType(dom);\n      methods.restoreDOM[data.type].apply(this, arguments);\n      this.addClass(data.type);\n    },\n\n    /**\n     * Compute a state fingerprint for the current cell.\n     */\n    changeGen: function() {\n      var type = this.data(pluginName).type;\n\n      if ( type )\n\treturn methods.changeGen[type].call(this);\n      else\n\treturn 0;\n    },\n\n    text: function() {\n      return cellText(this);\n    }\n  }; // methods\n\n\t\t /*******************************\n\t\t *\t     SET TYPE\t\t*\n\t\t *******************************/\n\n  methods.type.markdown = function(options) {\t/* markdown */\n    var editor;\n    var cell = this;\n\n    options = options||{};\n    options.mode = \"markdown\";\n\n    function setAttr(name) {\n      if ( options[name] != undefined ) {\n\tcell.attr(name, \"\"+options[name]);\n\tdelete options[name];\n      }\n    }\n    setAttr(\"name\");\n\n    this.html(\"\");\n    this.append(editor=$.el.div({class:\"editor\"}));\n    $(editor).prologEditor(options);\n    this.addClass(\"runnable\");\n  }\n\n  methods.type.html = function(options) {\t/* HTML */\n    var editor;\n    var cell = this;\n\n    options = options||{};\n    options.mode = \"htmlmixed\";\n\n    function setAttr(name) {\n      if ( options[name] != undefined ) {\n\tcell.attr(name, \"\"+options[name]);\n\tdelete options[name];\n      }\n    }\n    setAttr(\"name\");\n\n    this.html(\"\");\n    this.append(editor=$.el.div({class:\"editor\"}));\n    $(editor).prologEditor(options);\n    this.addClass(\"runnable\");\n  }\n\n  methods.type.program = function(options) {\t/* program */\n    var cell = this;\n    var editor;\n\n    options = options||{};\n    options.autoCurrent = false;\n    options.getSource = function() {\n      var programs = cell.nbCell('programs');\n      return programs.prologEditor('getSource', \"source\", true);\n    };\n\n    this.html(\"\");\n\n    var buttons = $.el.div(\n      {class:\"btn-group nb-cell-buttons\", role:\"group\"},\n      glyphButton(\"triangle-bottom\", \"singleline\", \"Show only first line\",\n\t\t  \"default\", \"xs\"),\n      imageButton(\"background\", \"Use as background program\", \"xs\"));\n    this.append(buttons,\n\t\teditor=$.el.div({class:\"editor with-buttons\"}));\n    if ( options.background )\n    { this.addClass(\"background\");\n    }\n    if ( options.singleline )\n    { this.nbCell('singleline');\n    }\n    $(editor).prologEditor(options);\n  }\n\n  methods.type.query = function(options) {\t/* query */\n    var editor;\n    var cell = this;\n\n    this.html(\"\");\n\n    options = options||{};\n    if ( options.tabled == undefined )\n      options.tabled = preferences.getVal(\"tabled_results\");\n\n    function setData(name) {\n      if ( options[name] != undefined ) {\n\tcell.data(name, \"\"+options[name]);\n\tdelete options[name];\n      }\n    }\n    function setAttr(name) {\n      if ( options[name] != undefined ) {\n\tcell.attr(name, \"\"+options[name]);\n\tdelete options[name];\n      }\n    }\n    setData(\"tabled\");\n    setData(\"chunk\");\n    setData(\"run\");\n    setAttr(\"name\");\n\n    options = $.extend({}, options,\n      { role: \"query\",\n\tsourceID: function() {\n\t  return cell.nbCell('programs').prologEditor('getSourceID');\n\t}\n      });\n\n    var buttons = $.el.div(\n      {class:\"btn-group nb-cell-buttons\", role:\"group\"},\n      glyphButton(\"wrench\", \"settings\", \"Settings\",\n\t\t  \"default\", \"xs\"),\n      glyphButton(\"play\", \"run\",       \"Run query\",\n\t\t  \"primary\", \"xs\"));\n\n    function wrapSolution(a)\n    { this.find(\".editor.query\").prologEditor('wrapSolution', $(a).text());\n    }\n\n    var menu = form.widgets.dropdownButton(\n      $.el.span({class:\"glyphicon glyphicon-menu-hamburger\"}),\n      { client: cell,\n\tdivClass: \"nb-query-menu\",\n        actions: {\n\t  \"Aggregate (count all)\": wrapSolution,\n\t  \"--\":\t\t\t   null,\n\t  \"Projection\":\t\t   wrapSolution,\n\t  \"Order by\":              wrapSolution,\n\t  \"Distinct\":              wrapSolution,\n\t  \"Limit\":\t\t   wrapSolution,\n\t  \"---\":\t\t   null,\n\t  \"Download answers as CSV\": function() {\n\t    var query  = cellText(this).replace(/\\.\\s*$/,\"\");\n\t    var source = this.nbCell('programs')\n\t\t\t     .prologEditor('getSource', \"source\", true);\n\t    var options = {};\n\t    var name   = this.attr(\"name\");\n\t    if ( name )\n\t      options.disposition = name;\n\t    prolog.downloadCSV(query, source, options);\n\t  }\n        }\n      });\n\n    this.append(buttons,\n\t\t$.el.div({class:\"query with-buttons\"},\n\t\t\t menu,\n\t\t\t $.el.span({class:\"prolog-prompt\"}, \"?-\"),\n\t\t\t editor=$.el.div({class:\"editor query\"})));\n\n    $(editor).prologEditor(options);\n    this.addClass(\"runnable\");\n  }\n\n\n\t\t /*******************************\n\t\t *\t    RUN BY TYPE\t\t*\n\t\t *******************************/\n\n  methods.run.markdown = function(markdownText) {\t/* markdown */\n    var cell = this;\n\n    markdownText = markdownText||cellText(this);\n\n    function makeEditable(ev) {\n      var cell = $(ev.target).closest(\".nb-cell\");\n      var text = cell.data('markdownText');\n      cell.removeData('markdownText');\n      methods.type.markdown.call(cell, {value:text});\n      cell.off(\"dblclick\", makeEditable);\n      cell.off(\"click\", links.followLink);\n    }\n\n\n    function setHTML(data) {\n      cell.html(data);\n      cell.removeClass(\"runnable\");\n      cell.data('markdownText', markdownText);\n      cell.on(\"dblclick\", makeEditable);\n      cell.on(\"click\", \"a\", links.followLink);\n    }\n\n    if ( markdownText.trim() != \"\" )\n    { $.ajax({ type: \"POST\",\n\t       url: config.http.locations.markdown,\n\t       data: markdownText,\n\t       contentType: \"text/plain; charset=UTF-8\",\n\t       success: setHTML\n\t     });\n    } else\n    { setHTML(\"<div class='nb-placeholder'>\"+\n\t      \"Empty markdown cell.  Double click to edit\"+\n\t      \"</div>\");\n    }\n  };\n\n  methods.run.html = function(htmlText, options) {\n    var cell = this;\n\n    options = options||{};\n    if ( options.html == false )\n    { runScripts();\n      return;\n    }\n\n    htmlText = (htmlText||cellText(this)).trim();\n\n    function makeEditable(ev) {\n      var cell = $(ev.target).closest(\".nb-cell\");\n      var text = cell.data('htmlText');\n      cell.removeData('htmlText');\n      methods.type.html.call(cell, {value:text});\n      cell.off(\"dblclick\", makeEditable);\n      cell.off(\"click\", links.followLink);\n    }\n\n    function runScripts() {\n      if ( config.swish.notebook.eval_script == true &&\n\t   options.eval_script != false ) {\n\tvar scripts = [];\n\n\tcell.find(\"script\").each(function() {\n\t  var type = this.getAttribute('type')||\"text/javascript\";\n\t  if ( type == \"text/javascript\" )\n\t    scripts.push(this.textContent);\n\t});\n\n\tif ( scripts.length > 0 ) {\n\t  var script = \"(function(notebook){\" + scripts.join(\"\\n\") + \"})\";\n\t  var nb = new Notebook({\n\t    cell: cell[0]\n\t  });\n\n\t  try {\n\t    eval(script)(nb);\n\t  } catch(e) {\n\t    alert(e);\n\t  }\n\t}\n      }\n    }\n\n    function runHTML(data) {\n      cell[0].innerHTML = data;\n      runScripts();\n    }\n\n    function setHTML(data) {\n      runHTML(data);\n      cell.removeClass(\"runnable\");\n      cell.data('htmlText', htmlText);\n      cell.on(\"dblclick\", makeEditable);\n      cell.on(\"click\", \"a\", links.followLink);\n    }\n\n    if ( htmlText != \"\" )\n    { setHTML(htmlText);\n    } else\n    { setHTML(\"<div class='nb-placeholder'>\"+\n\t      \"Empty HTML cell.  Double click to edit\"+\n\t      \"</div>\");\n    }\n  };\n\n  methods.run.program = function() {\t\t/* program */\n    modal.alert(\"Please define a query to run this program\");\n  };\n\n  /**\n   * Run a query cell.\n   * @param {Object} [options]\n   * @param {Any}    [options.bindings] Initial bindings.  If this is a\n\t\t     string, it is simply prepended to the query.  If\n\t\t     it is an object, it is translated into a sequence\n\t\t     of Prolog unifications to bind the variables.\n   */\n  methods.run.query = function(options) {\t/* query */\n    var programs = this.nbCell('programs');\n    var settings = this.nbCell('getSettings');\n    var text     = cellText(this);\n\n    options = options||{};\n    if ( options.bindings ) {\n      var pretext = \"\";\n      if ( typeof(options.bindings) === 'string' ) {\n\tpretext = options.bindings;\n      } else {\n\tfor(var k in options.bindings) {\n\t  if ( options.bindings.hasOwnProperty(k) ) {\n\t    if ( pretext )\n\t      pretext += \", \";\n\t    pretext += k + \" = \" + Pengine.stringify(options.bindings[k]);\n\t  }\n\t}\n      }\n      if ( pretext )\n\ttext = pretext + \", (\" + prolog.trimFullStop(text) + \")\";\n    }\n    var query = { source:       programs.prologEditor('getSource',\n\t\t\t\t\t\t      \"source\", true),\n                  query:        text,\n\t\t  tabled:       settings.tabled||false,\n\t\t  chunk:        settings.chunk,\n\t\t  title:        false,\n\t\t  query_editor: this.find(\".prolog-editor.query\")\n                };\n    if ( programs[0] )\n      query.editor = programs[0];\n\n    var runner = $.el.div({class: \"prolog-runner\"});\n    this.find(\".prolog-runner\").prologRunner('close');\n    this.append(runner);\n    $(runner).prologRunner(query);\n  };\n\n\t\t /*******************************\n\t\t *\t       ONLOAD\t\t*\n\t\t *******************************/\n\n/* These methods are executed after all cells have been initialised */\n\n  methods.onload.query = function() {\n    if ( this.data(\"run\") == \"onload\" )\n      this.nbCell(\"run\");\n  };\n\n  methods.onload.html = function() {\n    return methods.run.html.call(this,\n\t\t\t\t undefined,\t/* text */\n\t\t\t\t {html:false, eval_script:true});\n  };\n\n\n\t\t /*******************************\n\t\t *\tSAVE/RESTORE DOM\t*\n\t\t *******************************/\n\n/* ---------------- saveDOM ---------------- */\n\n  methods.saveDOM.markdown = function() {\t/* markdown */\n    var text = this.data('markdownText') || cellText(this);\n    var dom  = $.el.div({class:\"nb-cell markdown\"}, text);\n\n    function copyAttr(name) {\n      var value;\n      if ( (value=cell.attr(name)) && value ) {\n\t$(dom).attr(name, value);\n      }\n    }\n\n    copyAttr(\"name\");\n\n    return dom;\n  };\n\n  methods.saveDOM.html = function() {\t\t/* HTML */\n    var text = this.data('htmlText') || cellText(this);\n    var dom  = $.el.div({class:\"nb-cell html\"});\n\n    // assume scripts are executed when put into the DOM\n    $(dom).html(text);\n\n    function copyAttr(name) {\n      var value;\n      if ( (value=cell.attr(name)) && value ) {\n\t$(dom).attr(name, value);\n      }\n    }\n    copyAttr(\"name\");\n\n    return dom;\n  };\n\n  methods.saveDOM.program = function() {\t/* program */\n    var cell = this;\n    var dom = $.el.div({class:\"nb-cell program\"}, cellText(this));\n\n    function copyClassAttr(name) {\n      if ( cell.hasClass(name) ) {\n\t$(dom).attr(\"data-\"+name, true);\n      }\n    }\n    function copyAttr(name) {\n      var value;\n      if ( (value=cell.attr(name)) && value ) {\n\t$(dom).attr(name, value);\n      }\n    }\n\n    copyClassAttr(\"background\");\n    copyClassAttr(\"singleline\");\n    copyAttr(\"name\");\n\n    return dom;\n  };\n\n  methods.saveDOM.query = function() {\t\t/* query */\n    var cell = this;\n    var dom  = $.el.div({class:\"nb-cell query\"}, cellText(this));\n\n    function isDefault(name, value) {\n      if ( name == 'tabled' && (!value || value == \"false\") ) return true;\n      return false;\n    }\n\n    function copyData(name) {\n      var value;\n      if ( (value=cell.data(name)) && !isDefault(name,value) ) {\n\t$(dom).attr(\"data-\"+name, value);\n      }\n    }\n    function copyAttr(name) {\n      var value;\n      if ( (value=cell.attr(name)) && value ) {\n\t$(dom).attr(name, value);\n      }\n    }\n\n    copyData(\"tabled\");\n    copyData(\"chunk\");\n    copyData(\"run\");\n    copyAttr(\"name\");\n\n    return dom;\n  };\n\n/* ---------------- restoreDOM ---------------- */\n\n  methods.restoreDOM.markdown = function(dom) {\t/* markdown */\n    var cell = this;\n    var text = dom.text().trim();\n\n    cell.data('markdownText', text);\n\n    function copyAttr(name) {\n      var value;\n      if ( (value=dom.attr(name)) && value ) {\n\tcell.attr(name, value);\n      }\n    }\n    copyAttr(\"name\");\n\n    methods.run.markdown.call(this, text);\n  };\n\n  methods.restoreDOM.html = function(dom) {\t/* HTML */\n    var cell = this;\n\n    function copyAttr(name) {\n      var value;\n      if ( (value=dom.attr(name)) && value ) {\n\tcell.attr(name, value);\n      }\n    }\n    copyAttr(\"name\");\n\n    methods.run.html.call(this, dom.html(), {eval_script:false});\n  };\n\n  methods.restoreDOM.program = function(dom) {\t/* program */\n    var cell = this;\n    var opts = { value:dom.text().trim() };\n\n    function getAttr(name) {\n      var value;\n      if ( (value=dom.data(name)) ) {\n\topts[name] = value;\n      }\n    }\n    function copyAttr(name) {\n      var value;\n      if ( (value=dom.attr(name)) && value ) {\n\tcell.attr(name, value);\n      }\n    }\n\n    getAttr(\"background\");\n    getAttr(\"singleline\");\n    copyAttr(\"name\");\n\n    methods.type.program.call(this, opts);\n  };\n\n  methods.restoreDOM.query = function(dom) {\t/* query */\n    var opts = { value:dom.text().trim() };\n\n    function getData(name) {\n      var value;\n      if ( (value=dom.data(name)) ) {\n\tif ( name == \"chunk\" )\n\t  opts.chunk = parseInt(value);\n\telse\n\t  opts[name] = value;\n      }\n    }\n    function getAttr(name) {\n      var value;\n      if ( (value=dom.attr(name)) ) {\n\topts[name] = value;\n      }\n    }\n\n    getData(\"tabled\");\n    getData(\"chunk\");\n    getData(\"run\");\n    getAttr(\"name\");\n    if ( opts.tabled == undefined )\n      opts.tabled = false;\n\n    methods.type.query.call(this, opts);\n  };\n\n/* ---------------- changeGen ---------------- */\n\n  methods.changeGen.markdown = function() {\t/* markdown */\n    var text = this.data('markdownText') || cellText(this);\n\n    return sha1(text);\n  };\n\n  methods.changeGen.html = function() {\t/* HTML */\n    var text = this.data('htmlText') || cellText(this);\n\n    return sha1(text);\n  };\n\n  methods.changeGen.program = function() {\t/* program */\n    var text = \"\";\n    var cell = this;\n\n    function addClassAttr(name, key) {\n      if ( cell.hasClass(name) )\n\ttext += key;\n    }\n\n    addClassAttr(\"background\", \"B\");\n    addClassAttr(\"singleline\", \"S\");\n\n    text += \"V\"+cellText(this);\n    return sha1(text);\n  };\n\n  methods.changeGen.query = function() {\t/* query */\n    var text = \"\";\n    var cell = this;\n\n    function addData(name, key) {\n      var value;\n\n      if ( (value=cell.data(name)) )\n\ttext += key+value;\n    }\n    function addAttr(name, key) {\n      var value;\n\n      if ( (value=cell.attr(name)) )\n\ttext += key+value;\n    }\n\n    addData(\"tabled\", \"T\");\n    addData(\"chunk\", \"C\");\n    addData(\"run\", \"R\");\n    addAttr(\"name\", \"N\");\n    text += \"V\"+cellText(this);\n\n    return sha1(text);\n  };\n\n/* ---------------- isEmpty ---------------- */\n\n  methods.isEmpty.markdown = function() {\t/* markdown */\n    var text = this.data('markdownText') || cellText(this);\n\n    return text.trim() == \"\";\n  };\n\n  methods.isEmpty.html = function() {\t/* HTML */\n    var text = this.data('htmlText') || cellText(this);\n\n    return text.trim() == \"\";\n  };\n\n  methods.isEmpty.program = function() {\t/* program */\n    return cellText(this).trim() == \"\";\n  };\n\n  methods.isEmpty.query = function() {\t\t/* query */\n    return cellText(this).trim() == \"\";\n  };\n\n\t\t /*******************************\n\t\t *\t     UTILITIES\t\t*\n\t\t *******************************/\n\n  function cellText(cell) {\n    return cell.find(\".editor\").prologEditor('getSource', undefined, true);\n  }\n\n  /**\n   * Creates a file input that, after a file is selected, replaces\n   * the cell with the content of the local file.\n   */\n  function fileInsertInput() {\n    var form = $('<input type=\"file\" name=\"file\">');\n\n    form.on(\"change\", function(ev) {\n      var reader = new FileReader();\n      reader.onload = function(theFile) {\n\tvar cell = $(ev.target).closest(\".nb-cell\");\n\tvar nb   = cell.closest(\".notebook\");\n\n\tif ( nb.notebook('paste', reader.result) )\n\t  cell.remove();\n      };\n      reader.readAsText(ev.target.files[0]);\n\n      ev.preventDefault();\n      return false;\n    });\n\n    return form;\n  }\n\n  function typeMore() {\n    var div = $('<div class=\"form-more\">' +\n\t\t' <a href=\"#\">more<a>' +\n\t\t'</div>');\n    div.find(\"a\").on(\"click\", function(ev) {\n      var more = $(ev.target).closest(\".form-more\");\n      more.hide(400);\n      more.next().show(400);\n    });\n    return div[0];\n  }\n\n  function typeLess() {\n    var div = $('<div class=\"form-less\" style=\"display:none\">' +\n\t\t' <div><a href=\"#\" class=\"less\">less<a></div>' +\n\t\t'</div>');\n    for(var i=0; i<arguments.length; i++) {\n      div.append(arguments[i]);\n    }\n    div.find(\"a.less\").on(\"click\", function(ev) {\n      var less = $(ev.target).closest(\".form-less\");\n      less.hide(400);\n      less.prev().show(400);\n    });\n\n    return div[0];\n  }\n\n\n  /**\n   * <Class description>\n   *\n   * @class nbCell\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.nbCell = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\nfunction glyphButton(glyph, action, title, style, size) {\n  size = size||\"sm\";\n  var btn = $.el.a({href:\"#\",\n\t\t    class:\"btn btn-\"+style+\" btn-\"+size+\" action-\"+action,\n\t\t    title:title, \"data-action\":action},\n\t\t   $.el.span({class:\"glyphicon glyphicon-\"+glyph}));\n\n  return btn;\n}\n\nfunction imageButton(action, title, size) {\n  size = size||\"sm\";\n  var btn = $.el.a({href:\"#\",\n\t\t    class:\"btn btn-default btn-image btn-\"+size+\" action-\"+action,\n\t\t    title:title, \"data-action\":action},\n\t\t   $.el.span({class:\"image-icon\"}));\n\n  return btn;\n}\n\nfunction glyphButtonGlyph(elem, action, glyph) {\n  var span = elem.find(\"a[data-action=\"+action+\"] > span.glyphicon\");\n\n  span.removeClass(function(i,s) {\n    return s.match(/glyphicon-[-a-z]*/g).join(\" \");\n  }).addClass(\"glyphicon-\"+glyph);\n}\n\nfunction sep() {\n  return $.el.span({class:\"thin-space\"}, \" \");\n}\n\n\t\t /*******************************\n\t\t *\t NOTEBOOK ClASS\t\t*\n\t\t *******************************/\n\nfunction Notebook(options) {\n  this.my_cell = options.cell;\n}\n\n/**\n * Create a Pengine from default arguments\n */\nNotebook.prototype.swish = function(options) {\n  var pcells = this.cell().nbCell(\"programs\");\n  var source = pcells.prologEditor('getSource', \"source\", true);\n\n  if ( source )\n    options.src = source;\n\n  return $.swish(options);\n}\n\n/**\n * @param {String} [name] Return (query) cell with given name.  If\n * name is omitted, return the current cell.\n * @return {jQuery} Notebook cells\n */\nNotebook.prototype.cell = function(name) {\n  if ( name )\n    return this.notebook().find('.nb-cell[name=\"'+name+'\"]');\n  else\n    return $(this.my_cell);\n};\n\n/**\n * @returns {jQuery} the notebook as a whole.\n */\nNotebook.prototype.notebook = function() {\n  return $(this.my_cell).closest(\".notebook\");\n};\n\n/**\n * Run named query cell with bindings\n * @param {String} cell Name of the cell to run\n * @param {Object|String} [bindings] Bindings to pass to the query.\n */\nNotebook.prototype.run = function(cell, bindings) {\n  var options = {};\n  if ( bindings )\n    options.bindings = bindings;\n\n  this.cell(cell).nbCell('run', options);\n};\n\n/**\n * Submit a form, calling a predicate\n * @param {String} formsel is the selector to find the form in the\n * notebook cell.\n * @param {Object} options\n * @param {String} options.predicate predicate to call.  The predicate\n * receives one argument, containing the form data as a dict.\n * @param {Function} options.onsuccess is the function run on successful\n * completion\n */\nNotebook.prototype.submit = function(formsel, options) {\n  var formel = this.$(formsel);\n  var data   = form.serializeAsObject(formel);\n\n  form.formError(formel, null);\n  this.swish({\n    ask: options.predicate+\"((\"+Pengine.stringify(data)+\"))\",\n    onerror: function(data) { form.formError(formel, data); },\n    onsuccess: options.onsuccess\n  });\n};\n\nNotebook.prototype.$ = function(selector) {\n  return this.cell().find(selector);\n}\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2016, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Embed the navigation bar\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\n\ndefine('navbar',[ \"jquery\", \"preferences\", \"form\", \"laconic\" ],\n       function($, preferences, form) {\n\n(function($) {\n  var pluginName = 'navbar';\n\n  /** @lends $.fn.navbar */\n  var methods = {\n    /**\n     * Initialize a navigation bar.  For example:\n     *\n     *     $(\"#navbar\").navbar(\n     *       { \"File\":\n     *         { \"New\": function() { ... },\n     *           \"Save\": function() { ... }\n     *         },\n     *         \"Edit\":\n     *         { \"Undo\": function() { ... }\n     *         }\n     *       });\n     *\n     * @param {Object} actions Nested object mapping menu labels to\n     * submenus or functions.\n     */\n    _init: function(actions) {\n\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = {};\n\n\tfor(var p in actions) {\n\t  if ( actions.hasOwnProperty(p) ) {\n\t    elem.navbar('appendDropdown', p);\n\t    elem.navbar('populateDropdown', p, actions[p]);\n\t  }\n\t}\n\n\telem.on(\"click\", \"a\", function(ev) { runMenu(this, ev); } );\n      });\n    },\n\n    /**\n     * @param {String} label Name of new dropdown to add\n     */\n    appendDropdown: function(label) {\n      var ul1 = this.children(\".nav.navbar-nav.menubar\");\n      var ul2 = $.el.ul({name:label, class:\"dropdown-menu\"});\n      var li  = $.el.li({class:\"dropdown\"},\n\t\t\t$.el.a({class:\"dropdown-toggle\",\n\t\t\t\t\"data-toggle\":\"dropdown\"\n\t\t\t       },\n\t\t\t       label,\n\t\t\t       $.el.b({class:\"caret\"})),\n\t\t\tul2);\n\n      ul1.append(li);\n\n      return this;\n    },\n\n    /**\n     * @param {String} name Name of the dropdown to populate\n     * @param {Object|function} actions Object relating dropdown menu\n     * labels to functions.  If a function is passed, it is called with\n     * two arguments: the navbar and the name of the dropdown to\n     * populate.\n     */\n    populateDropdown: function(name, actions) {\n      if ( typeof(actions) == \"function\" ) {\n\tactions(this, name);\n      } else {\n\tvar ul = dropDownUL(this, name);\n\n\tfor(var p in actions) {\n\t  if ( actions.hasOwnProperty(p) ) {\n\t    appendDropdown(ul, p, actions[p]);\n\t  }\n\t}\n      }\n    },\n\n    /**\n     * @param {String} name is the name of the dropdown to clear\n     */\n    clearDropdown: function(name) {\n      var ul = dropDownUL(this, name);\n\n      ul.html(\"\");\n      return this;\n    },\n\n    /**\n     * @example\n     * $(\"#navbar\").navbar('extendDropdown', 'File',\n     *                     'Save as', function () { ... });\n     * @param {String} name is the dropdown to extend\n     * @param {String} label is the label to add\n     * @param {function} onclick is the action to perform\n     */\n    extendDropdown: function(name, label, onclick) {\n      var ul = dropDownUL(this, name);\n\n      appendDropdown(ul, label, onclick);\n    }\n  }; // methods\n\n  /**\n   * Append something to a navbar dropdown.\n   *\n   * @param {Object} dropdown is the jQuery object representing the\n   * dropdown.\n   * @param {String} label is the label for the menu entry\n   * @param {any} options defines the action.  There are many variations:\n   *   - The string `\"--\"` creates a _divider_\n   *   - A function creates a normal menu entry that calls the function\n   *     when selected\n   *   - An object with `.type == \"checkbox\"` creates a checkbox.  In\n   *     addition\n   *\t - if `.preference` exists, the checkbox is associated with the\n   *\t   named preference, otherwise\n   *\t - if `.action' exists, it is called on change with the new\n   *\t   value as argument.\n   *   - An object with `.type == \"submenu\" creates a submenu.\n   *   - An object with `.typeIcon` gets an icon indicating the type\n   */\n  function appendDropdown(dropdown, label, options) {\n    function glyph(name) {\n      if ( name ) {\n\treturn $.el.span({\n\t  class:\"dropdown-icon glyphicon glyphicon-\" + name});\n      }\n    }\n\n    if ( options == undefined ) {\n      // ignored\n    } else if ( options == \"--\" ) {\n      dropdown.append($.el.li({class:\"divider\"}));\n    } else if ( typeof(options) == \"function\" ) {\t/* Simple action */\n      var a;\n      var i;\n\n      if ( options.typeIcon ) {\n\ta = $.el.a(form.widgets.typeIcon(options.typeIcon),\n\t\t   label);\n      } else if ( options.glyph ) {\n\ta = $.el.a(glyph(options.glyph), label);\n      } else if ( (i=label.indexOf(\"(\")) > 0 ) {\n\tvar accell = label.substr(i);\n\ta = $.el.a({class:\"accelerated\"},\n\t\t   label.substr(0,i).trim(),\n\t\t   $.el.span({class:\"accell-spacer\"},accell),\n\t\t   $.el.span({class:\"accell-text\"},accell));\n      } else {\n\ta = $.el.a(label);\n      }\n\n      $(a).data('navbar-action', options);\n      if ( options.name )\n\t$(a).attr(\"id\", options.name);\n\n      dropdown.append($.el.li(a));\n    } else {\t\t\t\t\t\t/* Checkbox item */\n      if ( options.type == \"checkbox\" ) {\n\tvar cb = $($.el.input({type:\"checkbox\"}));\n\n\tif ( options.preference !== undefined ) {\n\t  cb.addClass(\"swish-event-receiver\");\n\t  if ( preferences.getVal(options.preference) )\n\t    cb.prop(\"checked\", true);\n\t  cb.on(\"click\", function() {\n\t    preferences.setVal(options.preference, $(this).prop(\"checked\"));\n\t  });\n\t  cb.on(\"preference\", function(pref) {\n\t    if ( pref.name == options.preference )\n\t      cb.prop(\"checked\", pref.value);\n\t  });\n\t} else {\n\t  if ( options.checked )\n\t    cb.prop(\"checked\", options.checked);\n\n\t  cb.on(\"click\", function() {\n\t    options.action($(this).prop(\"checked\"));\n\t  });\n\t}\n        dropdown.append($.el.li({class:\"checkbox\"},\n\t\t\t\tcb[0],\n\t\t\t\t$.el.span(label)));\n      } else if ( options.type == \"submenu\" ) {\t\t/* Submenu */\n\tvar submenu = $.el.ul({class:\"dropdown-menu sub-menu\"});\n\n\tdropdown.append($.el.li($.el.a({class:\"trigger right-caret\"},\n\t\t\t\t       glyph(options.glyph),\n\t\t\t\t       label),\n\t\t\t\tsubmenu));\n\tif ( options.action )\n\t  $(submenu).data('navbar-action', options.action);\n\tif ( options.items ) {\n\t  for(var i=0; i<options.items.length; i++) {\n\t    $(submenu).append($.el.li($.el.a(options.items[i])));\n\t  }\n\t}\n\tif ( options.update ) {\n\t  $(submenu).on(\"update\", function(ev) {\n\t    options.update.call(ev.target);\n\t  });\n\t}\n      } else {\n\talert(\"Unknown navbar item\");\n      }\n    }\n  }\n\n  function dropDownUL(nb, name) {\n    return nb.find(\".dropdown-menu\").filter(function() {\n      return $(this).attr(\"name\") == name;\n    });\n  }\n\n  function runMenu(a, ev) {\n    if ( $(a).hasClass(\"trigger\") ) {\n      clickSubMenu.call(a, ev);\n    } else {\n      var action = ($(a).data('navbar-action') ||\n\t\t    $(a).parents(\"ul\").data('navbar-action'));\n\n      clickNotSubMenu.call(a, ev);\n\n      if ( action ) {\n\tev.preventDefault();\n\taction.call(a, ev);\n      } else if ( $(a).hasClass(\"trigger\") ) {\n\tclickSubMenu.call(a, ev);\n      }\n\n      return false;\n    }\n  }\n\n  /**\n   * Bootstrap 3 extension to provide submenus.  Inspired by\n   * http://jsfiddle.net/chirayu45/YXkUT/16/\n   * Triggers an `update` event to the submenu's <ul> just\n   * before opening it.\n   */\n  function clickSubMenu(ev) {\n    var current = $(this).next();\t\t /* the submenu <ul> */\n    var grandparent = $(this).parent().parent(); /* the main menu <ul> */\n\n    if ( $(this).hasClass('left-caret') ||\n\t $(this).hasClass('right-caret') )\n      $(this).toggleClass('right-caret left-caret');\n\n    grandparent.find('.left-caret')\n\t       .not(this)\n\t       .toggleClass('right-caret left-caret');\n    grandparent.find(\".sub-menu:visible\")\n\t       .not(current).hide();\n\n    current.trigger(\"update\");\n    current.toggle();\n    ev.stopPropagation();\n  }\n\n  function clickNotSubMenu(ev) {\n    var root = $(this).closest('.dropdown');\n\n    root.find('.left-caret').toggleClass('right-caret left-caret');\n    root.find('.sub-menu:visible').hide();\n  }\n\n/* invoke is merged in general menu callback above\n  $(function() {\n    $(\".dropdown-menu > li > a.trigger\").on(\"click\", clickSubMenu);\n    $(\".dropdown-menu > li > a:not(.trigger)\").on(\"click\", clickNotSubMenu);\n  });\n*/\n\n  /**\n   * navbar jQuery plugin populates the application navigation bar using\n   * bootstrap styling.  Menu entries are added from JavaScript objects,\n   * which directly assocuate a label with a function.  It also allows\n   * populating a dropdown from a callback.\n   *\n   * @class navbar\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} method Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.navbar = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\n});\n\n\n","(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/hint/templates-hint',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  var templatesMap = [];\n  var Pos = CodeMirror.Pos;\n\n  function startsWith(str, token) {\n    return str.slice(0, token.length).toUpperCase() == token.toUpperCase();\n  }\n\n  function DEBUG(topic) {\n    //console.log.apply(null, Array.slice(arguments, 1));\n  }\n\n  CodeMirror.templatesHint = {};\n\n  function getLabel(proposal) {\n    var template = proposal.template;\n    return document.createTextNode(template.name);\n  }\n\n  var ourMap = {\n    Tab : selectNextVariable,\n    Enter : function(cm) { selectNextVariable(cm, true) },\n    Esc : uninstall,\n    \"Ctrl-Space\": hintValue\n  }\n\n  function TemplateState() {\n    this.marked = [];\n    this.selectableMarkers = [];\n    this.varIndex = -1;\n  }\n\n  function isNested(cm) {\n    return cm._templateStack ? cm._templateStack.length : 0;\n  }\n\n\n  // A Template instance represents an autocompletion template.\n  // It can be parsed from an eclipse-type template string,\n  // or supplied with a pre-parsed token array.\n  //\n  // The token array may consist of the following tokens:\n  //   \"\\n\" (newline character)\n  //       Single newline character per token.\n  //   text (string)\n  //       Normal text, no newline characters allowed.\n  //   { variable: \"name\" }\n  //       Variable token, to be populated by the user.\n  //   { cursor: true }\n  //       The cursor will be placed here after completing the template\n  //   { line_separator: true }\n  //       If the template surrounds existing text, the existing text will be\n  //       placed here. Not implemented currently.\n  function Template(data) {\n    this.name = data.name; // Optional\n    this.description = data.description; // Optional\n    this.text = data.text; // Optional\n    if ( data.varTemplates ) {\n      this.varTemplates = data.varTemplates;\n    }\n    if(data.template != null) {\n      this.source = data.template;\n    } else if(data.tokens != null) {\n      this._tokens = data.tokens;\n    }\n  }\n\n  Template.prototype.tokens = function() {\n    if(this._tokens == null) {\n      this._tokens = parseTemplate(this.source);\n    }\n    return this._tokens;\n  };\n\n  Template.prototype.content = function() {\n    if(this._content == null) {\n      var tokens = this.tokens();\n      var content = '';\n      for ( var i = 0; i < tokens.length; i++) {\n        var token = tokens[i];\n        if (typeof token == 'string') {\n          content += token;\n        } else if (token.variable) {\n          content += token.variable;\n        } else {\n          // Ignore special tokens\n        }\n      }\n      this._content = content;\n    }\n    return this._content;\n  };\n\n  function parseTemplate(content) {\n    var tokens = [];\n    var varParsing = false;\n    var last = null;\n    var token = '';\n    for ( var i = 0; i < content.length; i++) {\n      var current = content.charAt(i);\n      if (current == \"\\n\") {\n        if (token != '') {\n          tokens.push(token);\n        }\n        token = '';\n        tokens.push(current);\n        last = null;\n      } else {\n        var addChar = true;\n        if (varParsing) {\n          if (current == \"}\") {\n            varParsing = false;\n            addChar = false;\n            if(token == 'cursor') {\n              tokens.push({\n                \"cursor\" : true\n              });\n            } else if(token == 'line_selection') {\n              tokens.push({\n                \"line_selection\" : true\n              });\n            } else {\n              tokens.push({\n                \"variable\" : token\n              });\n            }\n            token = '';\n          }\n        } else {\n          if (current == \"$\" && (i + 1) <= content.length) {\n            i++;\n            var next = content.charAt(i);\n            if (next == \"{\") {\n              varParsing = true;\n              addChar = false;\n              if (token != '') {\n                tokens.push(token);\n              }\n              token = '';\n            }\n          }\n\n        }\n        if (addChar && last != \"$\") {\n          token += current;\n          last = current;\n        } else {\n          last = null;\n        }\n      }\n    }\n    if (token != '') {\n      tokens.push(token);\n    }\n    return tokens;\n  }\n\n\n  function getMarkerChanged(cm, textChanged) {\n    var markers = cm.findMarksAt(textChanged.from);\n    if (markers) {\n      for ( var i = 0; i < markers.length; i++) {\n        var marker = markers[i];\n        if (marker._templateVar) {\n          return marker;\n        }\n      }\n    }\n    return null;\n  }\n\n  /**\n   * Track changes.  If the change is outside any template variable,\n   * uninstall() the template editing.  If it is inside, see whether\n   * there are any other template variables with the same name and\n   * update them accordingly.\n   */\n  function onChange(cm, textChanged) {\n    var state = cm._templateState;\n    if (!textChanged.origin || !state || state.updating) {\n      return;\n    }\n    try {\n      state.updating = true;\n      var markerChanged = getMarkerChanged(cm, textChanged);\n      if (markerChanged == null) {\n        uninstall(cm);\n      } else {\n        var posChanged = markerChanged.find();\n        var newContent = cm.getRange(posChanged.from, posChanged.to);\n        for ( var i = 0; i < state.marked.length; i++) {\n          var marker = state.marked[i];\n          if (marker != markerChanged\n              && marker._templateVar == markerChanged._templateVar) {\n            var pos = marker.find();\n            cm.replaceRange(newContent, pos.from, pos.to);\n          }\n        }\n      }\n    } finally {\n      state.updating = false;\n    }\n  }\n\n  function onEndCompletion(cm) {\n    DEBUG(\"template\", \"endCompletion()\", isNested(cm));\n    if ( isNested(cm) )\n      uninstall(cm, true);\n  }\n\n  function selectNextVariable(cm, exitOnEnd) {\n    var state = cm._templateState;\n    if (state.selectableMarkers.length > 0) {\n      state.varIndex++;\n      if (state.varIndex >= state.selectableMarkers.length) {\n        // If we reach the last token and exitOnEnd is true, we exit instead of\n        // looping back to the first token.\n        if (exitOnEnd) {\n          exit(cm);\n          return;\n        }\n        state.varIndex = 0;\n      }\n      var marker = state.selectableMarkers[state.varIndex];\n      var pos = marker.find();\n      cm.setSelection(pos.from, pos.to);\n      var templateVar = marker._templateVar;\n      for ( var i = 0; i < state.marked.length; i++) {\n        var m = state.marked[i];\n        if (m == marker) {\n          m.className = \"\";\n          m.startStyle = \"\";\n          m.endStyle = \"\";\n        } else {\n          if (m._templateVar == marker._templateVar) {\n            m.className = \"CodeMirror-templates-variable-selected\";\n            m.startStyle = \"\";\n            m.endStyle = \"\";\n          } else {\n            m.className = \"CodeMirror-templates-variable\";\n            m.startStyle = \"CodeMirror-templates-variable-start\";\n            m.endStyle = \"CodeMirror-templates-variable-end\";\n          }\n        }\n      }\n      cm.refresh();\n    } else {\n      // No tokens - exit.\n      exit(cm);\n    }\n  }\n\n  /**\n   * Recursively use hinting for the values\n   */\n  function hintValue(cm) {\n    var state  = cm._templateState;\n    var marker = state.selectableMarkers[state.varIndex];\n    var prev   = {state:state};\n\n    if ( cm._hintTemplateMarker )\n      prev.marker = cm._hintTemplateMarker;\n\n    if ( !cm._templateStack )\n      cm._templateStack = [];\n    cm._templateStack.push(prev);\n    delete cm._templateState;\n\n    function samePos(p1, p2) {\n      return p1.ch == p2.ch && p1.line == p2.line;\n    }\n\n    cm._hintTemplateMarker = marker;\n    var pos = marker.find();\n    var sels = cm.listSelections();\n    if ( sels.length == 1 &&\n\t samePos(sels[0].anchor, pos.from) &&\n\t samePos(sels[0].head,   pos.to) ) {\n      cm.replaceRange(\"\\u2630\", pos.from, pos.to);\n    }\n\n    CodeMirror.commands.autocomplete(cm);\n  }\n\n  Template.prototype.insert = function(cm, data) {\n    var template = this;\n    var nested = isNested(cm);\n\n    DEBUG(\"template\", \"Insert, nested\", nested, \"template\", template);\n    if ( cm._templateState || nested ) {\n      DEBUG(\"template\", \"Uninstall from insert()\", nested);\n      uninstall(cm);\n    }\n\n    if ( template.text ) {\n      cm.replaceRange(template.text, data.from, data.to);\n      return;\n    }\n\n    var state = new TemplateState();\n    cm._templateState = state;\n\n    var tokens = this.tokens();\n    var content = '';\n    var line = data.from.line;\n    var col = data.from.ch;\n    var markers = [];\n    var variables = [];\n    var cursor = null;\n    for ( var i = 0; i < tokens.length; i++) {\n      var token = tokens[i];\n      if(typeof token == 'string') {\n        content += token;\n        if (token == \"\\n\") {\n          line++;\n          col = 0;\n        } else {\n          col += token.length;\n        }\n      } else if (token.variable) {\n        content += token.variable;\n        var from = Pos(line, col);\n        var to = Pos(line, col\n            + token.variable.length);\n        var selectable = variables[token.variable] != false;\n        col += token.variable.length;\n        markers.push({\n          from : from,\n          to : to,\n          variable : token.variable,\n          selectable : selectable\n        });\n        variables[token.variable] = false;\n      } else if(token.cursor) {\n        cursor = Pos(line, col);\n      } else {\n        // Unhandled tokens, e.g. line_selection. Ignore.\n      }\n    }\n\n    var from = data.from;\n    var to = data.to;\n    var startLine = from.line;\n    cm.replaceRange(content, from, to);\n\n    for ( var i = 0; i < markers.length; i++) {\n      function subTemplate(tvar) {\n\tif ( template.varTemplates && template.varTemplates[tvar] )\n\t  return template.varTemplates[tvar];\n\treturn undefined;\n      }\n\n      var marker = markers[i], from = marker.from, to = marker.to;\n      var markText = cm.markText(from, to, {\n        className : \"CodeMirror-templates-variable\",\n        startStyle : \"CodeMirror-templates-variable-start\",\n        endStyle : \"CodeMirror-templates-variable-end\",\n        inclusiveLeft : true,\n        inclusiveRight : true,\n        clearWhenEmpty: false,  // Works in CodeMirror 4.6\n        _templateVar : marker.variable,\n\t_templates : subTemplate(marker.variable)\n      });\n      state.marked.push(markText);\n      if (marker.selectable == true) {\n        state.selectableMarkers.push(markText);\n      }\n    }\n\n    if (cursor != null) {\n      state.cursor = cm.setBookmark(cursor);\n    }\n\n    // Auto-indent everything except the first line.\n    // This will typically indent the rest of the code according\n    // to the indentation of the first line.\n    // We do the indentation after creating the markers, so that the\n    // markers are moved accordingly.\n    var lines = content.split(\"\\n\");\n    for ( var x = 1; x < lines.length; x++) {\n      var targetLine = startLine + x;\n      cm.indentLine(targetLine);\n    }\n\n    // Have to be before selectNextVariable, since selectNextVariable\n    // may exit and remove the keymap again.\n    if ( !nested ) {\n      cm.on(\"change\", onChange);\n      DEBUG(\"template\", \"Installing endCompletion\");\n      cm.on(\"endCompletion\", onEndCompletion);\n      cm.addKeyMap(ourMap);\n    }\n\n    selectNextVariable(cm, true);\n  }\n\n  function exit(cm) {\n    // Move to ${cursor} in the template, then uninstall.\n    var cursor = cm._templateState.cursor;\n    if (cursor != null) {\n      var cursorPos = cursor.find();\n      if (cursorPos != null) {\n        cm.setSelection(cursorPos, cursorPos);\n      }\n    }\n    uninstall(cm);\n  }\n\n  function uninstall(cm, canceled) {\n    var state = cm._templateState;\n\n    function canceledMarker() {\n      DEBUG(\"template\", \"Canceled?\");\n\n      for ( var i = 0; i < state.marked.length; i++) {\n\tvar mark = state.marked[i];\n\tif ( mark == cm._hintTemplateMarker ) {\n\t  var pos = mark.find();\n\t  if ( pos && cm.getRange(pos.from, pos.to) == \"\\u2630\" )\n\t    cm.replaceRange(mark._templateVar, pos.from, pos.to);\n\t}\n      }\n    }\n\n    if ( state ) {\n      DEBUG(\"template\", \"Uninstall, clearing: \", state.marked.length);\n      for ( var i = 0; i < state.marked.length; i++) {\n\tstate.marked[i].clear();\n      }\n      if (state.cursor != null) {\n\tstate.cursor.clear();\n      }\n      state.marked.length = 0;\n      state.selectableMarkers.length = 0;\n    } else {\n      DEBUG(\"template\", \"Uninstall, no state\");\n    }\n\n    if ( cm._templateStack && cm._templateStack.length > 0 ) {\n      DEBUG(\"template\", \"Popping from level\", cm._templateStack.length);\n      var prev = cm._templateStack.pop();\n      state = cm._templateState = prev.state;\n      if ( canceled && cm._hintTemplateMarker )\n\tcanceledMarker();\n      if ( prev.marker ) {\n\tcm._hintTemplateMarker = prev.marker;\n      } else {\n\tdelete cm._hintTemplateMarker;\n      }\n    } else {\n      DEBUG(\"template\", \"Leaving template mode\");\n      cm.off(\"change\", onChange);\n      cm.off(\"endCompletion\", onEndCompletion);\n      cm.removeKeyMap(ourMap);\n      delete cm._templateState;\n      delete cm._hintTemplateMarker;\n    }\n  }\n\n  CodeMirror.templatesHint.getCompletions = function(cm, completions, text) {\n    var mode = cm.doc.mode.name;\n    var list = templatesMap[mode];\n    if (list) {\n      for ( var i = 0; i < list.length; i++) {\n        var template = list[i];\n        if (startsWith(template.name, text)) {\n          var label = template.name;\n          if (template.description) {\n            label += '- ' + template.description;\n          }\n          var className = \"CodeMirror-hint-template\";\n          if (template.className)\n            className = template.className;\n          var completion = {\n            \"className\" : className,\n            \"text\" : label,\n            \"template\" : template,\n          };\n          completion.data = completion;\n          completion.hint = function(cm, data, completion) {\n            completion.template.insert(cm, data);\n          };\n          completion.info = function(completion) {\n            var content = completion.template.content();\n\n            if (CodeMirror.runMode) {\n              var result = document.createElement('div');\n              result.className = 'cm-s-default';\n              if (cm.options && cm.options.theme)\n                result.className = 'cm-s-' + cm.options.theme;\n              CodeMirror.runMode(content, cm.getMode().name, result);\n              return result;\n            }\n            return content;\n          };\n          completions.push(completion);\n        }\n      }\n    }\n  }\n\n  CodeMirror.templatesHint.Template = Template;\n\n  CodeMirror.templatesHint.addTemplates = function(templates) {\n    var context = templates.context;\n    if (context) {\n      var list = templatesMap[context];\n      if (!list) {\n        list = [];\n        templatesMap[context] = list;\n      }\n      templates.templates.forEach(function(template) {\n        list.push(new Template(template));\n      });\n    }\n  }\n\n});\n\n\n","// Loosely based on codemirror/addon/hint/xml-hint.js\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/mode/prolog/prolog-template-hint',[ \"../../lib/codemirror\",\n\t     \"../../addon/hint/templates-hint\",\n\t     \"jquery\", \"config\", \"laconic\"\n\t   ], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror, TemplatesHint, $, config) {\n  \"use strict\";\n\n  var templates = config.swish.templates || [];\n\n  function PrologHint(options) {\n    var hint = this;\n\n    function modeToTemplate(mode) {\n      var varp = /[-+?:^@!]*([A-Z][A-Za-z_0-9]*)/g;\n      var detp = /\\bis\\s+(det|nondet|semidet|fail|multi)$/;\n\n      if ( !hint.template ) {\n\thint.template    = mode.replace(varp, \"$${$1}\")\n\t\t\t       .replace(detp, \"\");\n\tif ( !hint.template.match(/\\${cursor}/) )\n\t  hint.template += \"${cursor}\";\n      }\n\n      if ( !hint.displayText )\n\thint.displayText = mode;\n\n      if ( !hint.varTemplates ) {\n\tvar metav = mode.match(/:[A-Z][A-Za-z_0-9]*/g);\n\n\tif ( metav && metav.length > 0 ) {\n\t  var vt = {};\n\n\t  for(var i=0; i<metav.length; i++) {\n\t    vt[metav[i].substring(1)] = templates;\n\t  }\n\t  hint.varTemplates = vt;\n\t}\n      }\n    }\n\n    var copy = [ \"template\",\n\t\t \"displayText\",\n\t\t \"text\",\n\t\t {from:\"summary\", to:\"description\"},\n\t\t \"className\",\n\t\t \"varTemplates\"\n\t       ];\n\n    if ( typeof(options) == \"string\" ) {\n      this.displayText = options;\n      this.text = options;\n    } else {\n      for(var i=0; i<copy.length; i++) {\n\tvar spec = copy[i];\n\tif ( typeof(spec) == \"string\" ) {\n\t  if ( options[spec] )\n\t    this[spec] = options[spec];\n\t} else {\n\t  if ( options[spec.from] )\n\t    this[spec.to] = options[spec.from];\n\t}\n      }\n\n      if ( options.mode )\n\tmodeToTemplate(options.mode);\n\n      if ( options.classes )\n\toptions.className = options.classes.join(\" \");\n    }\n\n    /**\n     * Render a completion label inside a <li>.  This hook is called\n     * from standard CM addons/hint/show-hint.js to render the hinting\n     * alternatives.\n     * @param li is the list element\n     * @param data seems to be the result from getHints()\n     * @param me is this PrologHint instance\n     */\n    this.render = function(li, data, me) {\n      $(li).append(me.displayText);\n    }\n    /**\n     * Provide an HTML string or element that describes the completion.\n     * used by addon/hint/show-context-info.js\n     * @param me is this PrologHint instance\n     */\n    this.info = function(me) {\n      return me.description;\n    }\n  }\n\n  PrologHint.prototype.hint = function(cm, data, completion) {\n    var template = new CodeMirror.templatesHint.Template(this);\n    template.insert(cm, data);\n  };\n\n  function hintsFor(cm, state, options) {\n    var text = state.token.string;\n    var results = [];\n    var myTemplates = templates;\n\n    function startsWith(str, start) {\n      return str.slice(0, start.length) == start;\n    }\n\n    if ( cm._hintTemplateMarker ) {\n      if ( text == \"\\u2630\" )\n\ttext = \"\";\n      myTemplates = cm._hintTemplateMarker._templates;\n    }\n\n    var symbol = text.length > 0 && !text.match(/\\w/);\n\n    if ( myTemplates ) {\n      for(var i=0; i<myTemplates.length; i++) {\n\tvar templ = myTemplates[i];\n\tif ( typeof(templ) == \"string\" ) {\n\t  if ( startsWith(templ, text) )\n\t    results.push(new PrologHint(templ));\n\t} else {\n\t  var fields = [\"name\", \"mode\", \"template\", \"text\"];\n\n\t  if ( symbol ) {\n\t    if ( templ.name && templ.name.indexOf(text) >= 0 )\n\t      results.push(new PrologHint(templ));\n\t  } else {\n\t    for(var j=0; j<fields.length; j++) {\n\t      if ( templ[fields[j]] )\n\t      { if ( startsWith(templ[fields[j]], text) ) {\n\t\t  results.push(new PrologHint(templ));\n\t        }\n\t\tbreak;\n\t      }\n\t    }\n\t  }\n\t}\n      }\n    }\n\n    if ( results.length == 0 ) {\t/* Include AnyWord hinting completions */\n      var anyword = CodeMirror.hint.anyword;\n      var opts = (text==\"\"&&cm._hintTemplateMarker) ?\n\t\t  { word: /[A-Z][A-Za-z0-9_]*/ } : options;\n      var anyhint = anyword(cm, opts);\n      for(var i=0; i<anyhint.list.length; i++)\n\tresults.push(new PrologHint(anyhint.list[i]));\n    }\n\n    return { list: results,\n             from: state.position.from,\n\t     to:   state.position.to\n           };\n  }\n\n  function getHints(cm, callback, options) {\n    var state = getState(cm);\n  //console.log(state);\n    var data  = hintsFor(cm, state, options);\n    CodeMirror.attachContextInfo(data);\n    callback(data);\n  }\n  getHints.async = true;\n\n  function getState(cm) {\n    var cur = cm.getCursor();\n    var token = cm.getTokenAt(cur);\n//  var enriched = cm.getEnrichedToken(token);\n    var inner = CodeMirror.innerMode(cm.getMode(), token.state);\n    if (inner.mode.name != \"prolog\") {\n      return null;\n    }\n\n    var tokenPosition = {\n      from: new CodeMirror.Pos(cur.line, token.start),\n      to:   new CodeMirror.Pos(cur.line, token.end)\n    };\n\n    return { token:    token,\n\t     position: tokenPosition\n           };\n  }\n\n  CodeMirror.registerHelper(\"hint\", \"prologTemplate\", getHints);\n\n  return {\n    getHints: getHints,\n    getState: getState\n  };\n});\n\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/mode/prolog/prolog',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"prolog\", function(cmConfig, parserConfig) {\n\n  function chain(stream, state, f) {\n    state.tokenize = f;\n    return f(stream, state);\n  }\n\n\t\t /*******************************\n\t\t *\t   CONFIG DATA\t\t*\n\t\t *******************************/\n\n  var config = { quasiQuotations: true,\t\t/* {|Syntax||Quotation|} */\n\t         dicts: true,\t\t\t/* tag{k:v, ...} */\n\t\t unicodeEscape: true,\t\t/* \\uXXXX and \\UXXXXXXXX */\n\t\t multiLineQuoted: true,\t\t/* \"...\\n...\" */\n\t\t groupedIntegers: true\t\t/* 10 000 or 10_000 */\n\t       };\n\n  var quoteType = { '\"': \"string\",\n\t\t    \"'\": \"qatom\",\n\t\t    \"`\": \"bqstring\"\n\t\t  };\n\n  var isSingleEscChar = /[abref\\\\'\"nrtsv]/;\n  var isOctalDigit    = /[0-7]/;\n  var isHexDigit      = /[0-9a-fA-F]/;\n\n  var isSymbolChar = /[-#$&*+./:<=>?@\\\\^~]/;\t/* Prolog glueing symbols chars */\n  var isSoloChar   = /[[\\]{}(),;|!]/;\t\t/* Prolog solo chars */\n  var isNeck       = /^(:-|-->)$/;\n  var isControlOp  = /^(,|;|->|\\*->|\\\\+|\\|)$/;\n\n\n\t\t /*******************************\n\t\t *\t CHARACTER ESCAPES\t*\n\t\t *******************************/\n\n  function readDigits(stream, re, count) {\n    if ( count > 0 ) {\n      while( count-- > 0 ) {\n\tif ( !re.test(stream.next()) )\n\t  return false;\n      }\n    } else {\n      while ( re.test(stream.peek()) )\n\tstream.next();\n    }\n    return true;\n  }\n\n  function readEsc(stream) {\n    var next = stream.next();\n    if ( isSingleEscChar.test(next) )\n      return true;\n    switch( next )\n    { case \"u\":\n\tif ( config.unicodeEscape )\n\t  return readDigits(stream, isHexDigit, 4); /* SWI */\n        return false;\n      case \"U\":\n\tif ( config.unicodeEscape )\n\t  return readDigits(stream, isHexDigit, 8); /* SWI */\n        return false;\n      case null: return true;\t\t\t/* end of line */\n      case \"c\": stream.eatSpace(); return true;\n      case \"x\": return readDigits(stream, isHexDigit, 2);\n    }\n    if ( isOctalDigit.test(next) ) {\n      if ( !readDigits(stream, isOctalDigit, -1) )\n\treturn false;\n      if ( stream.peek() == \"\\\\\" )\t\t/* SWI: optional closing \\ */\n\tstream.next();\n      return true;\n    }\n    return false;\n  }\n\n  function nextUntilUnescaped(stream, state, end) {\n    var next;\n    while ((next = stream.next()) != null) {\n      if ( next == end && end != stream.peek() )\n      { state.nesting.pop();\n        return false;\n      }\n      if ( next == \"\\\\\" )\n      { if ( !readEsc(stream) )\n\t  return false;\n      }\n    }\n    return config.multiLineQuoted;\n  }\n\n\t\t /*******************************\n\t\t *\tCONTEXT NESTING\t\t*\n\t\t *******************************/\n\n  function nesting(state) {\n    return state.nesting.slice(-1)[0];\n  }\n\n  /* Called on every non-comment token */\n  function setArg1(state) {\n    var nest = nesting(state);\n    if ( nest ) {\n      if ( nest.arg == 0 )\t\t/* nested in a compound */\n\tnest.arg = 1;\n      else if ( nest.type == \"control\" )\n\tstate.goalStart = false;\n    } else\n      state.goalStart = false;\n  }\n\n  function setArgAlignment(state) {\n    var nest = nesting(state);\n    if ( nest && !nest.alignment && nest.arg != undefined ) {\n      if ( nest.arg == 0 )\n\tnest.alignment = nest.leftCol ? nest.leftCol+4 : nest.column+4;\n      else\n\tnest.alignment = nest.column+1;\n    }\n  }\n\n  function nextArg(state) {\n    var nest = nesting(state);\n    if ( nest ) {\n      if ( nest.arg )\t\t\t/* nested in a compound */\n\tnest.arg++;\n      else if ( nest.type == \"control\" )\n\tstate.goalStart = true;\t\t/* FIXME: also needed for ; and -> */\n    } else\n      state.goalStart = true;\n  }\n\n  function isControl(state) {\t\t/* our terms are goals */\n    var nest = nesting(state);\n    if ( nest ) {\n      if ( nest.type == \"control\" ) {\n\treturn true;\n      }\n      return false;\n    } else\n      return state.inBody;\n  }\n\n  // Used as scratch variables to communicate multiple values without\n  // consing up tons of objects.\n  var type, content;\n  function ret(tp, style, cont) {\n    type = tp; content = cont;\n    return style;\n  }\n\n  function peekSpace(stream) {\t\t/* TBD: handle block comment as space */\n    if ( stream.eol() ||\n\t /[\\s%]/.test(stream.peek()) )\n      return true;\n    return false;\n  }\n\n\n\t\t /*******************************\n\t\t *\t   SUB TOKENISERS\t*\n\t\t *******************************/\n\n  function plTokenBase(stream, state) {\n    var ch = stream.next();\n\n    if ( ch == \"(\" ) {\n      if ( state.lastType == \"functor\" ) {\n\tstate.nesting.push({ functor: state.functorName,\n\t\t\t     column: stream.column(),\n\t\t\t     leftCol: state.functorColumn,\n\t\t\t     arg: 0\n\t\t\t   });\n\tdelete state.functorName;\n\tdelete state.functorColumn;\n      } else {\n\tstate.nesting.push({ type: \"control\",\n\t\t\t     closeColumn: stream.column(),\n\t\t\t     alignment: stream.column()+4\n\t\t\t   });\n      }\n      return ret(\"solo\", null, \"(\");\n    }\n\n    if ( ch == \"{\" && state.lastType == \"tag\" ) {\n      state.nesting.push({ tag: state.tagName,\n\t\t\t   column: stream.column(),\n\t\t\t   leftCol: state.tagColumn,\n\t\t\t   arg: 0\n\t\t\t });\n      delete state.tagName;\n      delete state.tagColumn;\n      return ret(\"dict_open\", null);\n    }\n\n    if ( ch == \"/\" && stream.eat(\"*\") )\n      return chain(stream, state, plTokenComment);\n\n    if ( ch == \"%\" ) {\n      stream.skipToEnd();\n      return ret(\"comment\", \"comment\");\n    }\n\n    setArg1(state);\n\n    if ( isSoloChar.test(ch) ) {\n      switch ( ch )\n      { case \")\":\n\t  state.nesting.pop();\n\t  break;\n\tcase \"]\":\n\t  state.nesting.pop();\n\t  return ret(\"list_close\", null, \"]\");\n\tcase \"}\":\n\t{ var nest = nesting(state);\n\t  var type = (nest && nest.tag) ? \"dict_close\" : \"brace_term_close\";\n\n\t  state.nesting.pop();\n\t  return ret(type, null);\n\t}\n\tcase \",\":\n\t  if ( stream.eol() )\n\t    state.commaAtEOL = true;\n\t  nextArg(state);\n          /*FALLTHROUGH*/\n\tcase \";\":\n\t  if ( isControl(state) )\n\t    state.goalStart = true;\n\t  break;\n\tcase \"[\":\n\t  state.nesting.push({ type: \"list\",\n\t\t\t       closeColumn: stream.column(),\n\t\t\t       alignment: stream.column()+2\n\t\t\t     });\n\t  return ret(\"list_open\", null, \"[\");\n\t  break;\n\tcase \"{\":\n\t  if ( config.quasiQuotations && stream.eat(\"|\") ) {\n\t    state.nesting.push({ type: \"quasi-quotation\",\n\t\t\t         alignment: stream.column()+1\n\t\t\t       });\n\t    return ret(\"qq_open\", \"qq_open\");\n\t  } else {\n\t    state.nesting.push({ type: \"curly\",\n\t\t\t         closeColumn: stream.column(),\n\t\t\t\t alignment: stream.column()+2\n\t\t\t       });\n\t    return ret(\"brace_term_open\", null);\n\t  }\n\t  break;\n\tcase \"|\":\n\t  if ( config.quasiQuotations ) {\n\t    if ( stream.eat(\"|\") ) {\n\t      state.tokenize = plTokenQuasiQuotation;\n\t      return ret(\"qq_sep\", \"qq_sep\");\n\t    } else if ( stream.eat(\"}\") ) {\n\t      state.nesting.pop();\n\t      return ret(\"qq_close\", \"qq_close\");\n\t    }\n\t  }\n\t  if ( isControl(state) )\n\t    state.goalStart = true;\n\t  break;\n      }\n      return ret(\"solo\", null, ch);\n    }\n\n    if (ch == '\"' || ch == \"'\" || ch == \"`\")\n    { state.nesting.push({ type: \"quoted\",\n\t\t\t   alignment: stream.column()+1\n\t\t\t });\n      return chain(stream, state, plTokenString(ch));\n    }\n\n    if ( ch == \"0\" ) {\n      if ( stream.eat(/x/i)) {\n\tstream.eatWhile(/[\\da-f]/i);\n\treturn ret(\"number\", \"number\");\n      }\n      if ( stream.eat(/o/i)) {\n\tstream.eatWhile(/[0-7]/i);\n\treturn ret(\"number\", \"number\");\n      }\n      if ( stream.eat(/'/) ) {\t\t\t/* 0' */\n\tvar next = stream.next();\n\tif ( next == \"\\\\\" ) {\n\t  if ( !readEsc(stream) )\n\t    return ret(\"error\", \"error\");\n\t}\n\treturn ret(\"code\", \"code\");\n      }\n    }\n\n    if ( /\\d/.test(ch) || /[+-]/.test(ch) && stream.eat(/\\d/)) {\n      if ( config.groupedIntegers )\n\tstream.match(/^\\d*((_|\\s+)\\d+)*(?:\\.\\d+)?(?:[eE][+\\-]?\\d+)?/);\n      else\n\tstream.match(/^\\d*(?:\\.\\d+)?(?:[eE][+\\-]?\\d+)?/);\n      return ret(ch == \"-\" ? \"neg-number\" :\n\t\t ch == \"+\" ? \"pos-number\" :\n\t\t \"number\");\n    }\n\n    if ( isSymbolChar.test(ch) ) {\n      stream.eatWhile(isSymbolChar);\n      var atom = stream.current();\n      if ( atom == \".\" && peekSpace(stream) ) {\n\tif ( nesting(state) ) {\n\t  return ret(\"fullstop\", \"error\", atom);\n\t} else {\n\t} return ret(\"fullstop\", \"fullstop\", atom);\n      } else if ( isNeck.test(atom) ) {\n\treturn ret(\"neck\", \"neck\", atom);\n      } else if ( isControl(state) && isControlOp.test(atom) ) {\n\tstate.goalStart = true;\n\treturn ret(\"symbol\", \"operator\", atom);\n      } else\n\treturn ret(\"symbol\", \"operator\", atom);\n    }\n\n    stream.eatWhile(/[\\w_]/);\n    var word = stream.current();\n    if ( stream.peek() == \"{\" && config.dicts ) {\n      state.tagName = word;\t\t\t/* tmp state extension */\n      state.tagColumn = stream.column();\n      return ret(\"tag\", \"tag\", word);\n    } else if ( ch == \"_\" ) {\n      if ( word.length == 1 ) {\n\treturn ret(\"var\", \"anon\", word);\n      } else {\n\tvar sec = word.charAt(1);\n\tif ( sec == sec.toUpperCase() )\n\t  return ret(\"var\", \"var-2\", word);\n      }\n      return ret(\"var\", \"var\", word);\n    } else if ( ch == ch.toUpperCase() ) {\n      return ret(\"var\", \"var\", word);\n    } else if ( stream.peek() == \"(\" ) {\n      state.functorName = word;\t\t\t/* tmp state extension */\n      state.functorColumn = stream.column();\n      return ret(\"functor\", \"functor\", word);\n    } else\n      return ret(\"atom\", \"atom\", word);\n  }\n\n  function plTokenString(quote) {\n    return function(stream, state) {\n      if (!nextUntilUnescaped(stream, state, quote)) {\n        state.tokenize = plTokenBase;\n\tif ( stream.peek() == \"(\" ) {\t\t/* 'quoted functor'() */\n\t  var word = stream.current();\n\t  state.functorName = word;\t\t/* tmp state extension */\n\t  return ret(\"functor\", \"functor\", word);\n\t}\n\tif ( stream.peek() == \"{\" && config.dicts ) { /* 'quoted tag'{} */\n\t  var word = stream.current();\n\t  state.tagName = word;\t\t\t/* tmp state extension */\n\t  return ret(\"tag\", \"tag\", word);\n\t}\n      }\n      return ret(quoteType[quote], quoteType[quote]);\n    };\n  }\n\n  function plTokenQuasiQuotation(stream, state) {\n    var maybeEnd = false, ch;\n    while (ch = stream.next()) {\n      if (ch == \"}\" && maybeEnd) {\n        state.tokenize = plTokenBase;\n\tstream.backUp(2);\n\tbreak;\n      }\n      maybeEnd = (ch == \"|\");\n    }\n    return ret(\"qq_content\", \"qq_content\");\n  }\n\n  function plTokenComment(stream, state) {\n    var maybeEnd = false, ch;\n    while (ch = stream.next()) {\n      if (ch == \"/\" && maybeEnd) {\n        state.tokenize = plTokenBase;\n        break;\n      }\n      maybeEnd = (ch == \"*\");\n    }\n    return ret(\"comment\", \"comment\");\n  }\n\n\n\t\t /*******************************\n\t\t *\t   RETURN OBJECT\t*\n\t\t *******************************/\n\n  return {\n    startState: function() {\n      return {\n        tokenize: plTokenBase,\n\tinBody: false,\n\tgoalStart: false,\n\tlastType: null,\n\tnesting: new Array(),\t\t/* ([{}]) nesting FIXME: copy this */\n\tcurTerm: null,\t\t\t/* term index in metainfo */\n\tcurToken: null\t\t\t/* token in term */\n      };\n    },\n\n    token: function(stream, state) {\n      var nest;\n\n      if ( state.curTerm == null && parserConfig.metainfo ) {\n\tstate.curTerm = 0;\n\tstate.curToken = 0;\n      }\n\n      if ( stream.sol() )\n\tdelete state.commaAtEOL;\n\n      if ( state.tokenize == plTokenBase && stream.eatSpace() ) {\n\tif ( stream.eol() )\n\t  setArgAlignment(state);\n\treturn null;\n      }\n\n      var style = state.tokenize(stream, state);\n\n      if ( stream.eol() )\n\tsetArgAlignment(state);\n\n      if ( type == \"neck\" ) {\n\tstate.inBody = true;\n\tstate.goalStart = true;\n      } else if ( type == \"fullstop\" ) {\n\tstate.inBody = false;\n\tstate.goalStart = false;\n      }\n\n      state.lastType = type;\n\n      if ( typeof(parserConfig.enrich) == \"function\" )\n\tstyle = parserConfig.enrich(stream, state, type, content, style);\n\n      return style;\n    },\n\n    indent: function(state, textAfter) {\n      if (state.tokenize == plTokenComment) return CodeMirror.Pass;\n\n      var nest;\n      if ( (nest=nesting(state)) ) {\n\tif ( nest.closeColumn && !state.commaAtEOL )\n\t  return nest.closeColumn;\n\treturn nest.alignment;\n      }\n      if ( !state.inBody )\n\treturn 0;\n\n      return 4;\n    },\n\n    theme: \"prolog\",\n\n    blockCommentStart: \"/*\",\t\t/* continuecomment.js support */\n    blockCommentEnd: \"*/\",\n    blockCommentContinue: \" * \",\n    lineComment: \"%\",\n  };\n});\n\nCodeMirror.defineMIME(\"text/x-prolog\", \"prolog\");\n});\n\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/mode/prolog/prolog_keys',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\n\n\t\t /*******************************\n\t\t *\t    ACTIVE KEYS\t\t*\n\t\t *******************************/\n\n/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\nSupport if-then-else layout like this:\n\ngoal :-\n    (\tCondition\n    ->  IfTrue\n    ;   IfFalse\n    ).\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */\n\n\n  CodeMirror.commands.prologStartIfThenElse = function(cm) {\n    var start = cm.getCursor(\"start\");\n    var token = cm.getTokenAt(start, true);\n\n    if ( token.state.goalStart == true )\n    { cm.replaceSelection(\"(   \", \"end\");\n      return;\n    }\n\n    return CodeMirror.Pass;\n  }\n\n  CodeMirror.commands.prologStartThen = function(cm) {\n    var start = cm.getCursor(\"start\");\n    var token = cm.getTokenAt(start, true);\n\n    /* FIXME: These functions are copied from prolog.js.  How\n       can we reuse these?\n    */\n    function nesting(state) {\n      var len = state.nesting.length;\n      if ( len > 0 )\n\treturn state.nesting[len-1];\n      return null;\n    }\n\n    function isControl(state) {\t\t/* our terms are goals */\n      var nest = nesting(state);\n      if ( nest ) {\n\tif ( nest.type == \"control\" ) {\n\t  return true;\n\t}\n\treturn false;\n      } else\n\treturn state.inBody;\n    }\n\n    if ( start.ch == token.end &&\n\t token.type == \"operator\" &&\n\t token.string == \"-\" &&\n\t isControl(token.state) )\n    { cm.replaceSelection(\">  \", \"end\");\n      return;\n    }\n\n    return CodeMirror.Pass;\n  }\n\n  CodeMirror.commands.prologStartElse = function(cm) {\n    var start = cm.getCursor(\"start\");\n    var token = cm.getTokenAt(start, true);\n\n    if ( token.start == 0 && start.ch == token.end &&\n\t !/\\S/.test(token.string) )\n    { cm.replaceSelection(\";   \", \"end\");\n      return;\n    }\n\n    return CodeMirror.Pass;\n  }\n\n  CodeMirror.defineOption(\"prologKeys\", null, function(cm, val, prev) {\n    if (prev && prev != CodeMirror.Init)\n      cm.removeKeyMap(\"prolog\");\n    if ( val ) {\n      var map = { name:     \"prolog\",\n\t\t  \"'('\":    \"prologStartIfThenElse\",\n\t\t  \"'>'\":    \"prologStartThen\",\n\t\t  \"';'\":    \"prologStartElse\",\n\t\t  \"Ctrl-L\": \"refreshHighlight\"\n\t\t};\n      cm.addKeyMap(map);\n    }\n  });\n\n});\n\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/mode/prolog/prolog_query',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\n  CodeMirror.commands.prologFireQuery = function(cm) {\n    var endl  = cm.lineCount();\n    var endc  = cm.getLine(endl-1).length;\n    var token = cm.getTokenAt({line:endl, ch:endc}, true);\n\n    if ( token.type == \"fullstop\" )\n      return cm.prologFireQuery(cm.getValue());\n\n    return CodeMirror.Pass;\n  }\n\n  CodeMirror.defineOption(\"prologQuery\", null, function(cm, func, prev) {\n    if (prev && prev != CodeMirror.Init)\n      cm.removeKeyMap(\"prologQuery\");\n    if ( typeof(func) == \"function\" ) {\n      var map = { name:         \"prologQuery\",\n\t\t  \"Enter\":      \"prologFireQuery\",\n\t\t  \"Ctrl-Enter\": \"newlineAndIndent\"\n\t\t};\n      cm.addKeyMap(map);\n      cm.prologFireQuery = func;\n    }\n  });\n});\n\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\nThis  addon  extends  the  \"prolog\"   mode  to  perform  server-assisted\nhighlighting.   Server-assisted   highlighting   provides   a   semantic\nclassification of tokens.\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/mode/prolog/prolog_server',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  var DEFAULT_DELAY = 1000;\n  var USE_CHANGES_IF_LONGER_THEN = 1000;\n\n  function State(options) {\n    if (typeof options == \"object\") {\n      this.enabled = options.enabled || false;\n      this.role    = options.role    || \"source\";\n      if ( options.sourceID )\n\tthis.sourceID = options.sourceID;\n      this.url  = { change: options.url + \"change\",\n\t\t    tokens: options.url + \"tokens\",\n\t\t    leave:  options.url + \"leave\",\n\t\t    info:   options.url + \"info\"\n\t\t  },\n      this.delay = options.delay ? options.delay : DEFAULT_DELAY;\n      this.generationFromServer = -1;\n      this.tmo = null;\t\t\t/* timeout handle */\n    }\n  }\n\n  /**\n   * Trap CodeMirror change events. This asks for\n   * serverAssistedHighlight() after a configured delay.  If there\n   * is a mirror on the server, we collect the changes in an array\n   * and post them when we ask for server tokens.  Earlier versions\n   * posted immediately, but this is a waste of resources.  We might\n   * want to restore that behaviour if we want to forward changes to\n   * other users.\n   */\n  function changeEditor(cm, change) {\n    var state = cm.state.prologHighlightServer;\n\n    if ( state == null || state.url == null || !state.enabled )\n      return;\n\n    if ( state.tmo ) {\t\t\t/* changing: delay refresh */\n      cm.askRefresh();\n    }\n\n    if ( state.changes !== undefined )\n      state.changes.push(change);\n\n    if ( change.origin == \"setValue\" ||\n\t state.generationFromServer == -1 ) {\n      state.changes = undefined;\t/* force a clean start */\n      cm.serverAssistedHighlight();\n    }\n  }\n\n  function leaveEditor(cm) {\n    var state = cm.state.prologHighlightServer;\n\n    if ( state == null || state.url == null || state.uuid == null )\n      return;\n    var uuid = state.uuid;\n    delete state.uuid;\n\n    $.ajax({ url: state.url.leave,\n\t     async: false,  // otherwise it is killed before completion\n\t     contentType: 'application/json',\n\t     type: \"POST\",\n\t     dataType: \"json\",\n\t     data: JSON.stringify({ uuid: uuid\n\t\t\t\t  })\n\t   });\n  }\n\n  /**\n   * control server side highlight support. This can be in three states:\n   * (1) absent, in which case `cm.state.prologHighlightServer` is not\n   * present, (2) disabled and (3) enabled.\n   */\n  CodeMirror.defineOption(\"prologHighlightServer\", false, function(cm, val, old) {\n    function leaveCM() { leaveEditor(cm); }\n\n    if ( cm.state.prologHighlightServer ) {\n      if ( val == null ) {\t\t/* remove the highlight server */\n\tleaveEditor(cm);\n\tcm.off(\"change\", changeEditor);\n\twindow.removeEventListener(\"unload\", leaveCM);\n\tdelete cm.state.prologHighlightServer;\n\tcm.setOption(\"mode\", {name:\"prolog\"});\n      } else {\n\tif ( val.enabled != old.enabled ) {\n\t  cm.state.prologHighlightServer.enabled = val.enabled;\n\t  if ( val.enabled ) {\t\t/* enable the highlight server */\n\t    cm.on(\"change\", changeEditor);\n\t    window.addEventListener(\"unload\", leaveCM);\n\t    if ( cm.lineCount() > 0 ) {\n\t      cm.serverAssistedHighlight(true);\n\t    }\n\t  } else {\t\t\t/* disable */\n\t    leaveEditor(cm);\n\t    cm.off(\"change\", changeEditor);\n\t    window.removeEventListener(\"unload\", leaveCM);\n\t    cm.setOption(\"mode\", {name:\"prolog\"});\n\t  }\n\t}\n      }\n    } else if ( val ) {\t\t\t/* create for the first time */\n      cm.state.prologHighlightServer = new State(val);\n      if ( cm.state.prologHighlightServer.enabled ) {\n\tcm.on(\"change\", changeEditor);\n\twindow.addEventListener(\"unload\", leaveCM);\n\tif ( cm.lineCount() > 0 ) {\n\t  cm.serverAssistedHighlight(true);\n\t}\n      }\n    }\n  });\n\n\n  CodeMirror.prototype.askRefresh = function(time) {\n    var cm = this;\n    var state = cm.state.prologHighlightServer;\n\n    if ( state == null )\n      return;\n\n    if ( time === undefined )\n      time = state.delay;\n\n    if ( state.tmo )\n      clearTimeout(state.tmo);\n\n    state.tmo = setTimeout(function() { cm.serverAssistedHighlight(); },\n\t\t\t   time);\n  };\n\n\n  CodeMirror.prototype.serverAssistedHighlight = function(always) {\n    var cm = this;\n    var state = cm.state.prologHighlightServer;\n    var msg = {};\n\n    state.tmo = null;\n\n    if ( state == null || state.url == null || !state.enabled ||\n\t (cm.isClean(state.generationFromServer) && !always) )\n      return;\n\n    function modeOptions() {\n      var opts = cm.getOption(\"mode\");\n\n      if ( typeof(opts) != \"object\" ) {\n\topts = { name:\"prolog\",\n\t\t enrich:enrichStyle,\n\t\t editor:cm\n\t       };\n      } else if ( !opts.enrich ) {\n\topts.enrich = enrichStyle;\n\topts.editor = cm;\n      }\n      return opts;\n    }\n\n    if ( state.uuid ) {\t\t\t/* server has a mirror */\n      msg.uuid = state.uuid;\n      if ( state.changes == undefined ) {\n\tmsg.text = cm.getValue();\n\tif ( msg.text.length > USE_CHANGES_IF_LONGER_THEN )\n\t  state.changes = [];\n      } else {\n\tmsg.changes = state.changes;\n\tstate.changes = [];\n      }\n    } else {\n      msg.text   = cm.getValue();\n      if ( msg.text.trim() == \"\" )\n\treturn;\n      state.uuid = generateUUID();\n      msg.uuid   = state.uuid;\n    }\n    msg.role = state.role;\n    if ( typeof(state.sourceID) == \"function\" )\n      msg.sourceID = state.sourceID();\n\n    state.generationFromServer = cm.changeGeneration();\n    $.ajax({ url: state.url.tokens,\n\t     dataType: \"json\",\n\t     contentType: 'application/json',\n\t     type: \"POST\",\n\t     data: JSON.stringify(msg),\n\t     success: function(data, status) {\n\t       var opts = modeOptions();\n\t       opts.metainfo = data.tokens;\n\t       cm.setOption(\"mode\", opts);\n\t     },\n\t     error: function(jqXHR) {\n\t       if ( jqXHR.status == 409 ) {\n\t\t delete state.uuid;\n\t\t /* And refresh?  problem is this might get us into\n\t\t  * a loop.  We'd need some info from the server that\n\t\t  * this won't happen again\n\t\t  */\n\t       }\n\t     }\n\t   });\n  }\n\n  CodeMirror.commands.refreshHighlight = function(cm) {\n    cm.serverAssistedHighlight(true);\n  }\n\n  function generateUUID() {\n    var d = new Date().getTime();\n    var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'\n      .replace(/[xy]/g, function(c) {\n        var r = (d + Math.random()*16)%16 | 0;\n        d = Math.floor(d/16);\n        return (c=='x' ? r : (r&0x7|0x8)).toString(16);\n    });\n    return uuid;\n  }\n\n  var syncOnType = { \"var\": \"var\",\t/* JavaScript Types */\n\t\t     \"atom\": \"atom\",\n\t\t     \"qatom\": \"qatom\",\n\t\t     \"bqstring\": \"string\",\n\t\t     \"symbol\": \"atom\",\n\t\t     \"functor\": \"functor\",\n\t\t     \"tag\": \"tag\",\n\t\t     \"number\": \"number\",\n\t\t     \"string\": \"string\",\n\t\t     \"code\": \"number\",\n\t\t     \"neg-number\": \"number\",\n\t\t     \"pos-number\": \"number\",\n\t\t     \"list_open\": \"list_open\",\n\t\t     \"list_close\": \"list_close\",\n\t\t     \"qq_open\": \"qq_open\",\n\t\t     \"qq_sep\": \"qq_sep\",\n\t\t     \"qq_close\": \"qq_close\",\n\t\t     \"dict_open\": \"dict_open\",\n\t\t     \"dict_close\": \"dict_close\",\n\t\t     \"brace_term_open\": \"brace_term_open\",\n\t\t     \"brace_term_close\": \"brace_term_close\",\n\t\t     \"neck\": \"neck\",\n\t\t     \"fullstop\": \"fullstop\"\n\t\t   };\n  var serverSync = { \"var\": \"var\",\t/* Server Types */\n\t\t     \"singleton\": \"var\",\n\t\t     \"uatom\": \"var\",\t/* var_prefix in effect */\n\t\t     \"atom\": \"atom\",\n\t\t     \"qatom\": \"qatom\",\n\t\t     \"string\": \"string\",\n\t\t     \"codes\": \"string\",\n\t\t     \"chars\": \"string\",\n\t\t     \"functor\": \"functor\",\n\t\t     \"tag\": \"tag\",\n\t\t     \"control\": \"atom\",\n\t\t     \"meta\": \"atom\",\t/* or number 0-9 */\n\t\t     \"op_type\": \"atom\",\n\t\t     \"int\": \"number\",\n\t\t     \"float\": \"number\",\n\t\t     \"key\": \"atom\",\t/* TBD: or integer */\n\t\t     \"sep\": \"atom\",\t/* : in dict */\n\t\t     \"ext_quant\": \"atom\", /* setof ^-symbol */\n\n\t\t     \"expanded\": \"expanded\",\n\t\t     \"comment_string\":\"string\",\n\t\t     \"identifier\": \"atom\",\n\t\t     \"delimiter\": \"atom\",\n\t\t     \"module\": \"atom\",\n\n\t\t     \"head_exported\": \"atom\",\n\t\t     \"head_public\": \"atom\",\n\t\t     \"head_extern\": \"atom\",\n\t\t     \"head_dynamic\": \"atom\",\n\t\t     \"head_multifile\": \"atom\",\n\t\t     \"head_unreferenced\": \"atom\",\n\t\t     \"head_hook\": \"atom\",\n\t\t     \"head_meta\": \"atom\",\n\t\t     \"head_constraint\": \"atom\",\n\t\t     \"head_imported\": \"atom\",\n\t\t     \"head_built_in\": \"atom\",\n\t\t     \"head_iso\": \"atom\",\n\t\t     \"head_def_iso\": \"atom\",\n\t\t     \"head_def_swi\": \"atom\",\n\t\t     \"head\": \"atom\",\n\n\t\t     \"goal_built_in\": \"atom\",\n\t\t     \"goal_imported\": \"atom\",\n\t\t     \"goal_autoload\": \"atom\",\n\t\t     \"goal_global\": \"atom\",\n\t\t     \"goal_undefined\": \"atom\",\n\t\t     \"goal_thread_local\": \"atom\",\n\t\t     \"goal_dynamic\": \"atom\",\n\t\t     \"goal_multifile\": \"atom\",\n\t\t     \"goal_expanded\": \"atom\",\n\t\t     \"goal_extern\": \"atom\",\n\t\t     \"goal_recursion\": \"atom\",\n\t\t     \"goal_meta\": \"atom\",\n\t\t     \"goal_foreign\": \"atom\",\n\t\t     \"goal_local\": \"atom\",\n\t\t     \"goal_constraint\": \"atom\",\n\t\t     \"goal_not_callable\": \"atom\",\n\n\t\t     \"xpce_method\": \"functor\",\n\t\t     \"xpce_class_builtin\":\"atom\",\n\t\t     \"xpce_class_lib\":\"atom\",\n\t\t     \"xpce_class_user\":\"atom\",\n\t\t     \"xpce_class_undef\":\"atom\",\n\n\t\t     \"option_name\": \"atom\",\n\t\t     \"no_option_name\": \"atom\",\n\t\t     \"flag_name\": \"atom\",\n\t\t     \"no_flag_name\": \"atom\",\n\n\t\t     \"file_no_depends\": \"atom\",\n\t\t     \"file\": \"atom\",\n\t\t     \"nofile\": \"atom\",\n\n\t\t     \"list_open\": \"list_open\",\n\t\t     \"list_close\": \"list_close\",\n\t\t     \"qq_open\": \"qq_open\",\n\t\t     \"qq_sep\": \"qq_sep\",\n\t\t     \"qq_close\": \"qq_close\",\n\t\t     \"qq_type\": \"atom\",\n\t\t     \"dict_open\": \"dict_open\",\n\t\t     \"dict_close\": \"dict_close\",\n\t\t     \"brace_term_open\": \"brace_term_open\",\n\t\t     \"brace_term_close\": \"brace_term_close\",\n\t\t     \"neck\": \"neck\",\n\t\t     \"fullstop\": \"fullstop\",\n\n\t\t     \"string_terminal\": \"string\",\n\n\t\t     \"html\": \"functor\",\n\t\t     \"entity\": \"atom\",\n\t\t     \"html_attribute\": \"functor\",\n\t\t     \"sgml_attr_function\": \"atom\",\n\t\t     \"http_location_for_id\": \"atom\",\n\t\t     \"http_no_location_for_id\": \"atom\"\n\t\t   };\n\n  /* Enrich the style using the token list from the server.\n\n  @param stream  is the CM input stream\n  @param state   is the mode state object\n  @param type    is the syntactic category detected by the mode\n  @param content is the textual content of the token (if any)\n  @param style   is the style determined by the mode.\n  */\n\n  function enrichStyle(stream, state, type, content, style) {\n    var parserConfig = this;\n\n    /* serverToken(state) returns the server token at\n       state.curTerm.curToken or null\n    */\n\n    function serverToken(state) {\n      var term = parserConfig.metainfo[state.curTerm];\n      if ( !term ) return null;\n      var token = term[state.curToken];\n      if ( !token ) return null;\n\n      return token;\n    }\n\n    /* outOfSync() is called whenever we lost synchronization.  It\n       records the position where we lost sync and asks the server\n       for a fresh analysis.\n    */\n\n    function outOfSync() {\n      if ( !state.outOfSync ) {\n\tconsole.log(\"Mismatch: (\"+content+\") \"+type+\"/\"+token.type);\n\tstate.outOfSync = { okToken:       state.curToken,\n\t\t\t    okTerm:        state.curTerm,\n\t\t\t    skippedTerms:  0,\n\t\t\t    skippedTokens: [],\n\t\t\t  };\n      }\n      parserConfig.editor.askRefresh();\n    }\n\n    /* reSync() tries to re-synchronize after we lost synchronization\n       with the server due to local edits.  If successful, it clears\n       state.outOfSync and returns the enriched token.  Else it returns\n       null.\n\n       Data to work from:\n\n\t state.outOfSync.skipped: skipped tokens since out-of-sync or\n\t\tlast term\n\t state.outOfSync.skippedTerms: number of fullstop seen since\n\t\twe lost synchronisation\n    */\n\n    function reSync() {\n      var oos = state.outOfSync;\n      var resyncState = { curToken: oos.okToken,\n\t\t\t  curTerm:  oos.okTerm\n\t\t\t};\n\n      /* TBD */\n      if ( oos.skippedTerms ) {\n\n      } else {\n      }\n\n      return null;\n    }\n\n\n    /* match the next token.  It is possible that the server has combined\n       several tokens into one logical unit.  In that case the token is\n       merely a prefix of what the server returned and we try to eat the\n       remainder.  Examples are files specifications such as\n       library(lists).\n    */\n\n    function matchTokenText(tokenText) {\n      var start;\n\n      if ( content == tokenText )\n\treturn true;\n\n      if ( (start=tokenText.lastIndexOf(content,1)) >= 0 ) {\n\tvar left = tokenText.substring(content.length+start);\n\tfor(var i=0; i<left.length; i++) {\n\t  if ( !stream.eat(left.charAt(i)) ) {\n\t    stream.backUp(i);\n\t    return false;\n\t  }\n\t}\n\treturn true;\n      }\n\n      return false;\n    }\n\n    /**\n     * Test whether we are nested in quoted material.  That happens if\n     * a newline appears in the quoted value, where our CodeMirror\n     * tokeniser gives multiple \"string\", etc. tokens, while the server\n     * only gives one, so we should not increment the server curToken.\n     */\n    function isQuoted(nesting) {\n      var last = nesting.slice(-1)[0];\n      return last && last.type == \"quoted\";\n    }\n\n    /**\n     * Matches the server token `token` to the current token and updates\n     * state.curToken and/or state.curTerm if the two matches.\n     *\n     * @param {Object} token is the next token from the server array\n     * @param {Object} state is the mode state object\n     * @returns {String|undefined} enriched style, the original style\n     * or `undefined` if the mode token does not match the server token.\n    */\n\n    function matchToken(token, state) {\n      if ( token ) {\n\tif ( syncOnType[type] ) {\n\t  if ( token.text && content ) {\n\t    if ( matchTokenText(token.text) ) {\n\t      state.curToken++;\n\t      return token.type;\n\t    }\n\n\t    return undefined;\n\t  } else if ( syncOnType[type] == serverSync[token.type] ) {\n\t    if ( type == \"fullstop\" ) {\n\t      state.curTerm++;\n\t      state.curToken = 0;\n\t    } else if ( !isQuoted(state.nesting) ) {\n\t      state.curToken++;\n\t    }\n\t    return token.type;\n\t  } else if ( syncOnType[type] == token.base ) {\n\t    state.curToken++;\n\t    return token.type;\n\t  } else if ( type == \"qatom\" && serverSync[token.type] == \"atom\" ) {\n\t    state.curToken++;\n\t    return token.type;\n\t  } else if ( type == \"number\" && token.type == \"meta\" ) {\n\t    state.curToken++;\t/* 0-9 as meta_predicate arguments */\n\t    return token.type;\n\t  } else if ( type == \"neg-number\" &&\n\t\t      token.text && token.text == \"-\" ) {\n\t\t/* HACK: A-1 is tokenised as \"var\" \"neg-number\" */\n\t\t/* But the server says \"var\" \"atom\" \"number\" */\n\t\t/* Needs operator logic to fix at the client */\n\t    state.curToken += 2;\n\t    return \"number\";\n\t  } else if ( type == \"pos-number\" &&\n\t\t      token.text && token.text == \"+\" ) {\n\t\t/* HACK: A+1 is tokenised as \"var\" \"pos-number\" */\n\t\t/* But the server says \"var\" \"atom\" \"number\" */\n\t\t/* Needs operator logic to fix at the client */\n\t    state.curToken += 2;\n\t    return \"number\";\n\t  }\n\t} else if ( content && token.text == content ) {\n\t  state.curToken++;\t\t/* ,; are not synced */\n\t  return token.type;\n\t} else {\n\t  return style;\t\t\t/* not-synced client token */\n\t}\n      }\n\n      return undefined;\n    }\n\n    /* enrichStyle() body */\n\n    if ( state.curTerm != null ) {\n      var token;\n      var serverStyle;\n\n      //console.log(type,style,content,state);\n\n      if ( state.syntax_error ) {\t\t/* error state; recap after . */\n\tif ( type == \"fullstop\" ) {\n\t  parserConfig.editor.askRefresh();\n\t  delete state.syntax_error;\n\t}\n\treturn style;\n      }\n\n      if ( state.outOfSync ) {\t\t\t/* lost synchronization */\n\tvar oos = state.outOfSync;\n\n\tif ( oos.skippedTerms <= 3 ) {\n\t  oos.skippedTokens.push({ type:    type,\n\t\t\t           style:   style,\n\t\t\t\t   content: content\n\t\t\t         });\n\n\t  if ( (serverStyle=reSync()) ) {\n\t    return serverStyle;\t\t\t/* re-synchronized! */\n\t  } else if ( type == \"fullstop\" ) {\n\t    oos.skippedTokens = [];\n\t    oos.skippedTerms++;\n\t  }\n\t}\n\n\treturn style;\n      }\n\n      if ( !(token=serverToken(state)) ) {\n\tparserConfig.editor.askRefresh();\t/* more text added at the end */\n\treturn style;\n      }\n\n      //console.log(\"Enrich: (\"+content+\") \"+type+\"/\"+token.type);\n\n      if ( (serverStyle=matchToken(token, state)) !== undefined ) {\n\treturn serverStyle;\n      } else if ( token.type == \"syntax_error\" ) {\n\tstate.syntax_error = true;\n\tstate.curToken = 0;\n\tstate.curTerm++;\n\treturn style;\n      } else {\n\toutOfSync();\n\treturn style + \" outofsync\";\n      }\n    }\n\n    return style;\n  }\n\n\t\t /*******************************\n\t\t *\t  FETCH ENRICHED\t*\n\t\t *******************************/\n\n  CodeMirror.prototype.getEnrichedToken = function(token) {\n    if ( token.state.curTerm != null && token.state.curToken != null )\n    { var state = this.getOption(\"mode\");\n      var terminfo;\n\n      if ( state.metainfo && (terminfo=state.metainfo[token.state.curTerm]) )\n\treturn terminfo[token.state.curToken-1];\n    }\n\n    return undefined;\n  }\n\n  /**\n   * @param {Object} [elem] is the element that will be filled with\n   * the token information.  If not provided, a `<span>` of class\n   * `token-info` is returned.\n   * @returns {Object} DOM object providing info that will be filled\n   * later from the ajax call.\n   */\n  CodeMirror.prototype.tokenInfo = function(token, elem) {\n    var state = this.state.prologHighlightServer;\n\n    if ( !elem )\n      elem = $($.el.span({class:\"token-info\"}, \"...\"));\n\n    $.ajax({ url: state.url.info,\n\t     data: token,\n\t     success: function(data) {\n\t       elem.html(data);\n\t     }\n           });\n\n    return elem[0];\n  }\n\n  /**\n   * @param {Object} token is an enriched token\n   * @returns {Array(Object)} is an array of source references.\n   */\n\n  CodeMirror.prototype.getTokenReferences = function(token) {\n    var result = [];\n\n    function setFile(obj, from) {\n      if ( from && from.indexOf(\"swish://\") == 0 ) {\n\tobj.file = from.substring(8);\n\treturn true;\n      }\n    }\n\n    switch(token.type) {\n      case \"goal_local\":\n\tvar obj = {\n\t  title: \"Source for \"+token.text+\"/\"+token.arity,\n\t  line:  token.line,\n\t  regex: new RegExp(\"\\\\b\"+RegExp.escape(token.text), \"g\"),\n\t  showAllMatches: true\n\t};\n\tsetFile(obj, token.file);\n\tresult.push(obj);\n\tbreak;\n      case \"file\":\n\tvar obj = {};\n\n\tif ( setFile(obj, token.path) ) {\n\t  obj.title = \"Included file \" + obj.file;\n\t  result.push(obj);\n\t}\n        break;\n    }\n\n    return result;\n  }\n});\n\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/mode/xml/xml',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nvar htmlConfig = {\n  autoSelfClosers: {'area': true, 'base': true, 'br': true, 'col': true, 'command': true,\n                    'embed': true, 'frame': true, 'hr': true, 'img': true, 'input': true,\n                    'keygen': true, 'link': true, 'meta': true, 'param': true, 'source': true,\n                    'track': true, 'wbr': true, 'menuitem': true},\n  implicitlyClosed: {'dd': true, 'li': true, 'optgroup': true, 'option': true, 'p': true,\n                     'rp': true, 'rt': true, 'tbody': true, 'td': true, 'tfoot': true,\n                     'th': true, 'tr': true},\n  contextGrabbers: {\n    'dd': {'dd': true, 'dt': true},\n    'dt': {'dd': true, 'dt': true},\n    'li': {'li': true},\n    'option': {'option': true, 'optgroup': true},\n    'optgroup': {'optgroup': true},\n    'p': {'address': true, 'article': true, 'aside': true, 'blockquote': true, 'dir': true,\n          'div': true, 'dl': true, 'fieldset': true, 'footer': true, 'form': true,\n          'h1': true, 'h2': true, 'h3': true, 'h4': true, 'h5': true, 'h6': true,\n          'header': true, 'hgroup': true, 'hr': true, 'menu': true, 'nav': true, 'ol': true,\n          'p': true, 'pre': true, 'section': true, 'table': true, 'ul': true},\n    'rp': {'rp': true, 'rt': true},\n    'rt': {'rp': true, 'rt': true},\n    'tbody': {'tbody': true, 'tfoot': true},\n    'td': {'td': true, 'th': true},\n    'tfoot': {'tbody': true},\n    'th': {'td': true, 'th': true},\n    'thead': {'tbody': true, 'tfoot': true},\n    'tr': {'tr': true}\n  },\n  doNotIndent: {\"pre\": true},\n  allowUnquoted: true,\n  allowMissing: true,\n  caseFold: true\n}\n\nvar xmlConfig = {\n  autoSelfClosers: {},\n  implicitlyClosed: {},\n  contextGrabbers: {},\n  doNotIndent: {},\n  allowUnquoted: false,\n  allowMissing: false,\n  caseFold: false\n}\n\nCodeMirror.defineMode(\"xml\", function(editorConf, config_) {\n  var indentUnit = editorConf.indentUnit\n  var config = {}\n  var defaults = config_.htmlMode ? htmlConfig : xmlConfig\n  for (var prop in defaults) config[prop] = defaults[prop]\n  for (var prop in config_) config[prop] = config_[prop]\n\n  // Return variables for tokenizers\n  var type, setStyle;\n\n  function inText(stream, state) {\n    function chain(parser) {\n      state.tokenize = parser;\n      return parser(stream, state);\n    }\n\n    var ch = stream.next();\n    if (ch == \"<\") {\n      if (stream.eat(\"!\")) {\n        if (stream.eat(\"[\")) {\n          if (stream.match(\"CDATA[\")) return chain(inBlock(\"atom\", \"]]>\"));\n          else return null;\n        } else if (stream.match(\"--\")) {\n          return chain(inBlock(\"comment\", \"-->\"));\n        } else if (stream.match(\"DOCTYPE\", true, true)) {\n          stream.eatWhile(/[\\w\\._\\-]/);\n          return chain(doctype(1));\n        } else {\n          return null;\n        }\n      } else if (stream.eat(\"?\")) {\n        stream.eatWhile(/[\\w\\._\\-]/);\n        state.tokenize = inBlock(\"meta\", \"?>\");\n        return \"meta\";\n      } else {\n        type = stream.eat(\"/\") ? \"closeTag\" : \"openTag\";\n        state.tokenize = inTag;\n        return \"tag bracket\";\n      }\n    } else if (ch == \"&\") {\n      var ok;\n      if (stream.eat(\"#\")) {\n        if (stream.eat(\"x\")) {\n          ok = stream.eatWhile(/[a-fA-F\\d]/) && stream.eat(\";\");\n        } else {\n          ok = stream.eatWhile(/[\\d]/) && stream.eat(\";\");\n        }\n      } else {\n        ok = stream.eatWhile(/[\\w\\.\\-:]/) && stream.eat(\";\");\n      }\n      return ok ? \"atom\" : \"error\";\n    } else {\n      stream.eatWhile(/[^&<]/);\n      return null;\n    }\n  }\n  inText.isInText = true;\n\n  function inTag(stream, state) {\n    var ch = stream.next();\n    if (ch == \">\" || (ch == \"/\" && stream.eat(\">\"))) {\n      state.tokenize = inText;\n      type = ch == \">\" ? \"endTag\" : \"selfcloseTag\";\n      return \"tag bracket\";\n    } else if (ch == \"=\") {\n      type = \"equals\";\n      return null;\n    } else if (ch == \"<\") {\n      state.tokenize = inText;\n      state.state = baseState;\n      state.tagName = state.tagStart = null;\n      var next = state.tokenize(stream, state);\n      return next ? next + \" tag error\" : \"tag error\";\n    } else if (/[\\'\\\"]/.test(ch)) {\n      state.tokenize = inAttribute(ch);\n      state.stringStartCol = stream.column();\n      return state.tokenize(stream, state);\n    } else {\n      stream.match(/^[^\\s\\u00a0=<>\\\"\\']*[^\\s\\u00a0=<>\\\"\\'\\/]/);\n      return \"word\";\n    }\n  }\n\n  function inAttribute(quote) {\n    var closure = function(stream, state) {\n      while (!stream.eol()) {\n        if (stream.next() == quote) {\n          state.tokenize = inTag;\n          break;\n        }\n      }\n      return \"string\";\n    };\n    closure.isInAttribute = true;\n    return closure;\n  }\n\n  function inBlock(style, terminator) {\n    return function(stream, state) {\n      while (!stream.eol()) {\n        if (stream.match(terminator)) {\n          state.tokenize = inText;\n          break;\n        }\n        stream.next();\n      }\n      return style;\n    };\n  }\n  function doctype(depth) {\n    return function(stream, state) {\n      var ch;\n      while ((ch = stream.next()) != null) {\n        if (ch == \"<\") {\n          state.tokenize = doctype(depth + 1);\n          return state.tokenize(stream, state);\n        } else if (ch == \">\") {\n          if (depth == 1) {\n            state.tokenize = inText;\n            break;\n          } else {\n            state.tokenize = doctype(depth - 1);\n            return state.tokenize(stream, state);\n          }\n        }\n      }\n      return \"meta\";\n    };\n  }\n\n  function Context(state, tagName, startOfLine) {\n    this.prev = state.context;\n    this.tagName = tagName;\n    this.indent = state.indented;\n    this.startOfLine = startOfLine;\n    if (config.doNotIndent.hasOwnProperty(tagName) || (state.context && state.context.noIndent))\n      this.noIndent = true;\n  }\n  function popContext(state) {\n    if (state.context) state.context = state.context.prev;\n  }\n  function maybePopContext(state, nextTagName) {\n    var parentTagName;\n    while (true) {\n      if (!state.context) {\n        return;\n      }\n      parentTagName = state.context.tagName;\n      if (!config.contextGrabbers.hasOwnProperty(parentTagName) ||\n          !config.contextGrabbers[parentTagName].hasOwnProperty(nextTagName)) {\n        return;\n      }\n      popContext(state);\n    }\n  }\n\n  function baseState(type, stream, state) {\n    if (type == \"openTag\") {\n      state.tagStart = stream.column();\n      return tagNameState;\n    } else if (type == \"closeTag\") {\n      return closeTagNameState;\n    } else {\n      return baseState;\n    }\n  }\n  function tagNameState(type, stream, state) {\n    if (type == \"word\") {\n      state.tagName = stream.current();\n      setStyle = \"tag\";\n      return attrState;\n    } else {\n      setStyle = \"error\";\n      return tagNameState;\n    }\n  }\n  function closeTagNameState(type, stream, state) {\n    if (type == \"word\") {\n      var tagName = stream.current();\n      if (state.context && state.context.tagName != tagName &&\n          config.implicitlyClosed.hasOwnProperty(state.context.tagName))\n        popContext(state);\n      if ((state.context && state.context.tagName == tagName) || config.matchClosing === false) {\n        setStyle = \"tag\";\n        return closeState;\n      } else {\n        setStyle = \"tag error\";\n        return closeStateErr;\n      }\n    } else {\n      setStyle = \"error\";\n      return closeStateErr;\n    }\n  }\n\n  function closeState(type, _stream, state) {\n    if (type != \"endTag\") {\n      setStyle = \"error\";\n      return closeState;\n    }\n    popContext(state);\n    return baseState;\n  }\n  function closeStateErr(type, stream, state) {\n    setStyle = \"error\";\n    return closeState(type, stream, state);\n  }\n\n  function attrState(type, _stream, state) {\n    if (type == \"word\") {\n      setStyle = \"attribute\";\n      return attrEqState;\n    } else if (type == \"endTag\" || type == \"selfcloseTag\") {\n      var tagName = state.tagName, tagStart = state.tagStart;\n      state.tagName = state.tagStart = null;\n      if (type == \"selfcloseTag\" ||\n          config.autoSelfClosers.hasOwnProperty(tagName)) {\n        maybePopContext(state, tagName);\n      } else {\n        maybePopContext(state, tagName);\n        state.context = new Context(state, tagName, tagStart == state.indented);\n      }\n      return baseState;\n    }\n    setStyle = \"error\";\n    return attrState;\n  }\n  function attrEqState(type, stream, state) {\n    if (type == \"equals\") return attrValueState;\n    if (!config.allowMissing) setStyle = \"error\";\n    return attrState(type, stream, state);\n  }\n  function attrValueState(type, stream, state) {\n    if (type == \"string\") return attrContinuedState;\n    if (type == \"word\" && config.allowUnquoted) {setStyle = \"string\"; return attrState;}\n    setStyle = \"error\";\n    return attrState(type, stream, state);\n  }\n  function attrContinuedState(type, stream, state) {\n    if (type == \"string\") return attrContinuedState;\n    return attrState(type, stream, state);\n  }\n\n  return {\n    startState: function(baseIndent) {\n      var state = {tokenize: inText,\n                   state: baseState,\n                   indented: baseIndent || 0,\n                   tagName: null, tagStart: null,\n                   context: null}\n      if (baseIndent != null) state.baseIndent = baseIndent\n      return state\n    },\n\n    token: function(stream, state) {\n      if (!state.tagName && stream.sol())\n        state.indented = stream.indentation();\n\n      if (stream.eatSpace()) return null;\n      type = null;\n      var style = state.tokenize(stream, state);\n      if ((style || type) && style != \"comment\") {\n        setStyle = null;\n        state.state = state.state(type || style, stream, state);\n        if (setStyle)\n          style = setStyle == \"error\" ? style + \" error\" : setStyle;\n      }\n      return style;\n    },\n\n    indent: function(state, textAfter, fullLine) {\n      var context = state.context;\n      // Indent multi-line strings (e.g. css).\n      if (state.tokenize.isInAttribute) {\n        if (state.tagStart == state.indented)\n          return state.stringStartCol + 1;\n        else\n          return state.indented + indentUnit;\n      }\n      if (context && context.noIndent) return CodeMirror.Pass;\n      if (state.tokenize != inTag && state.tokenize != inText)\n        return fullLine ? fullLine.match(/^(\\s*)/)[0].length : 0;\n      // Indent the starts of attribute names.\n      if (state.tagName) {\n        if (config.multilineTagIndentPastTag !== false)\n          return state.tagStart + state.tagName.length + 2;\n        else\n          return state.tagStart + indentUnit * (config.multilineTagIndentFactor || 1);\n      }\n      if (config.alignCDATA && /<!\\[CDATA\\[/.test(textAfter)) return 0;\n      var tagAfter = textAfter && /^<(\\/)?([\\w_:\\.-]*)/.exec(textAfter);\n      if (tagAfter && tagAfter[1]) { // Closing tag spotted\n        while (context) {\n          if (context.tagName == tagAfter[2]) {\n            context = context.prev;\n            break;\n          } else if (config.implicitlyClosed.hasOwnProperty(context.tagName)) {\n            context = context.prev;\n          } else {\n            break;\n          }\n        }\n      } else if (tagAfter) { // Opening tag spotted\n        while (context) {\n          var grabbers = config.contextGrabbers[context.tagName];\n          if (grabbers && grabbers.hasOwnProperty(tagAfter[2]))\n            context = context.prev;\n          else\n            break;\n        }\n      }\n      while (context && context.prev && !context.startOfLine)\n        context = context.prev;\n      if (context) return context.indent + indentUnit;\n      else return state.baseIndent || 0;\n    },\n\n    electricInput: /<\\/[\\s\\w:]+>$/,\n    blockCommentStart: \"<!--\",\n    blockCommentEnd: \"-->\",\n\n    configuration: config.htmlMode ? \"html\" : \"xml\",\n    helperType: config.htmlMode ? \"html\" : \"xml\",\n\n    skipAttribute: function(state) {\n      if (state.state == attrValueState)\n        state.state = attrState\n    }\n  };\n});\n\nCodeMirror.defineMIME(\"text/xml\", \"xml\");\nCodeMirror.defineMIME(\"application/xml\", \"xml\");\nif (!CodeMirror.mimeModes.hasOwnProperty(\"text/html\"))\n  CodeMirror.defineMIME(\"text/html\", {name: \"xml\", htmlMode: true});\n\n});\n\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/mode/meta',[\"../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  CodeMirror.modeInfo = [\n    {name: \"APL\", mime: \"text/apl\", mode: \"apl\", ext: [\"dyalog\", \"apl\"]},\n    {name: \"PGP\", mimes: [\"application/pgp\", \"application/pgp-keys\", \"application/pgp-signature\"], mode: \"asciiarmor\", ext: [\"pgp\"]},\n    {name: \"ASN.1\", mime: \"text/x-ttcn-asn\", mode: \"asn.1\", ext: [\"asn\", \"asn1\"]},\n    {name: \"Asterisk\", mime: \"text/x-asterisk\", mode: \"asterisk\", file: /^extensions\\.conf$/i},\n    {name: \"Brainfuck\", mime: \"text/x-brainfuck\", mode: \"brainfuck\", ext: [\"b\", \"bf\"]},\n    {name: \"C\", mime: \"text/x-csrc\", mode: \"clike\", ext: [\"c\", \"h\"]},\n    {name: \"C++\", mime: \"text/x-c++src\", mode: \"clike\", ext: [\"cpp\", \"c++\", \"cc\", \"cxx\", \"hpp\", \"h++\", \"hh\", \"hxx\"], alias: [\"cpp\"]},\n    {name: \"Cobol\", mime: \"text/x-cobol\", mode: \"cobol\", ext: [\"cob\", \"cpy\"]},\n    {name: \"C#\", mime: \"text/x-csharp\", mode: \"clike\", ext: [\"cs\"], alias: [\"csharp\"]},\n    {name: \"Clojure\", mime: \"text/x-clojure\", mode: \"clojure\", ext: [\"clj\", \"cljc\", \"cljx\"]},\n    {name: \"ClojureScript\", mime: \"text/x-clojurescript\", mode: \"clojure\", ext: [\"cljs\"]},\n    {name: \"Closure Stylesheets (GSS)\", mime: \"text/x-gss\", mode: \"css\", ext: [\"gss\"]},\n    {name: \"CMake\", mime: \"text/x-cmake\", mode: \"cmake\", ext: [\"cmake\", \"cmake.in\"], file: /^CMakeLists.txt$/},\n    {name: \"CoffeeScript\", mime: \"text/x-coffeescript\", mode: \"coffeescript\", ext: [\"coffee\"], alias: [\"coffee\", \"coffee-script\"]},\n    {name: \"Common Lisp\", mime: \"text/x-common-lisp\", mode: \"commonlisp\", ext: [\"cl\", \"lisp\", \"el\"], alias: [\"lisp\"]},\n    {name: \"Cypher\", mime: \"application/x-cypher-query\", mode: \"cypher\", ext: [\"cyp\", \"cypher\"]},\n    {name: \"Cython\", mime: \"text/x-cython\", mode: \"python\", ext: [\"pyx\", \"pxd\", \"pxi\"]},\n    {name: \"Crystal\", mime: \"text/x-crystal\", mode: \"crystal\", ext: [\"cr\"]},\n    {name: \"CSS\", mime: \"text/css\", mode: \"css\", ext: [\"css\"]},\n    {name: \"CQL\", mime: \"text/x-cassandra\", mode: \"sql\", ext: [\"cql\"]},\n    {name: \"D\", mime: \"text/x-d\", mode: \"d\", ext: [\"d\"]},\n    {name: \"Dart\", mimes: [\"application/dart\", \"text/x-dart\"], mode: \"dart\", ext: [\"dart\"]},\n    {name: \"diff\", mime: \"text/x-diff\", mode: \"diff\", ext: [\"diff\", \"patch\"]},\n    {name: \"Django\", mime: \"text/x-django\", mode: \"django\"},\n    {name: \"Dockerfile\", mime: \"text/x-dockerfile\", mode: \"dockerfile\", file: /^Dockerfile$/},\n    {name: \"DTD\", mime: \"application/xml-dtd\", mode: \"dtd\", ext: [\"dtd\"]},\n    {name: \"Dylan\", mime: \"text/x-dylan\", mode: \"dylan\", ext: [\"dylan\", \"dyl\", \"intr\"]},\n    {name: \"EBNF\", mime: \"text/x-ebnf\", mode: \"ebnf\"},\n    {name: \"ECL\", mime: \"text/x-ecl\", mode: \"ecl\", ext: [\"ecl\"]},\n    {name: \"edn\", mime: \"application/edn\", mode: \"clojure\", ext: [\"edn\"]},\n    {name: \"Eiffel\", mime: \"text/x-eiffel\", mode: \"eiffel\", ext: [\"e\"]},\n    {name: \"Elm\", mime: \"text/x-elm\", mode: \"elm\", ext: [\"elm\"]},\n    {name: \"Embedded Javascript\", mime: \"application/x-ejs\", mode: \"htmlembedded\", ext: [\"ejs\"]},\n    {name: \"Embedded Ruby\", mime: \"application/x-erb\", mode: \"htmlembedded\", ext: [\"erb\"]},\n    {name: \"Erlang\", mime: \"text/x-erlang\", mode: \"erlang\", ext: [\"erl\"]},\n    {name: \"Factor\", mime: \"text/x-factor\", mode: \"factor\", ext: [\"factor\"]},\n    {name: \"FCL\", mime: \"text/x-fcl\", mode: \"fcl\"},\n    {name: \"Forth\", mime: \"text/x-forth\", mode: \"forth\", ext: [\"forth\", \"fth\", \"4th\"]},\n    {name: \"Fortran\", mime: \"text/x-fortran\", mode: \"fortran\", ext: [\"f\", \"for\", \"f77\", \"f90\"]},\n    {name: \"F#\", mime: \"text/x-fsharp\", mode: \"mllike\", ext: [\"fs\"], alias: [\"fsharp\"]},\n    {name: \"Gas\", mime: \"text/x-gas\", mode: \"gas\", ext: [\"s\"]},\n    {name: \"Gherkin\", mime: \"text/x-feature\", mode: \"gherkin\", ext: [\"feature\"]},\n    {name: \"GitHub Flavored Markdown\", mime: \"text/x-gfm\", mode: \"gfm\", file: /^(readme|contributing|history).md$/i},\n    {name: \"Go\", mime: \"text/x-go\", mode: \"go\", ext: [\"go\"]},\n    {name: \"Groovy\", mime: \"text/x-groovy\", mode: \"groovy\", ext: [\"groovy\", \"gradle\"], file: /^Jenkinsfile$/},\n    {name: \"HAML\", mime: \"text/x-haml\", mode: \"haml\", ext: [\"haml\"]},\n    {name: \"Haskell\", mime: \"text/x-haskell\", mode: \"haskell\", ext: [\"hs\"]},\n    {name: \"Haskell (Literate)\", mime: \"text/x-literate-haskell\", mode: \"haskell-literate\", ext: [\"lhs\"]},\n    {name: \"Haxe\", mime: \"text/x-haxe\", mode: \"haxe\", ext: [\"hx\"]},\n    {name: \"HXML\", mime: \"text/x-hxml\", mode: \"haxe\", ext: [\"hxml\"]},\n    {name: \"ASP.NET\", mime: \"application/x-aspx\", mode: \"htmlembedded\", ext: [\"aspx\"], alias: [\"asp\", \"aspx\"]},\n    {name: \"HTML\", mime: \"text/html\", mode: \"htmlmixed\", ext: [\"html\", \"htm\"], alias: [\"xhtml\"]},\n    {name: \"HTTP\", mime: \"message/http\", mode: \"http\"},\n    {name: \"IDL\", mime: \"text/x-idl\", mode: \"idl\", ext: [\"pro\"]},\n    {name: \"Pug\", mime: \"text/x-pug\", mode: \"pug\", ext: [\"jade\", \"pug\"], alias: [\"jade\"]},\n    {name: \"Java\", mime: \"text/x-java\", mode: \"clike\", ext: [\"java\"]},\n    {name: \"Java Server Pages\", mime: \"application/x-jsp\", mode: \"htmlembedded\", ext: [\"jsp\"], alias: [\"jsp\"]},\n    {name: \"JavaScript\", mimes: [\"text/javascript\", \"text/ecmascript\", \"application/javascript\", \"application/x-javascript\", \"application/ecmascript\"],\n     mode: \"javascript\", ext: [\"js\"], alias: [\"ecmascript\", \"js\", \"node\"]},\n    {name: \"JSON\", mimes: [\"application/json\", \"application/x-json\"], mode: \"javascript\", ext: [\"json\", \"map\"], alias: [\"json5\"]},\n    {name: \"JSON-LD\", mime: \"application/ld+json\", mode: \"javascript\", ext: [\"jsonld\"], alias: [\"jsonld\"]},\n    {name: \"JSX\", mime: \"text/jsx\", mode: \"jsx\", ext: [\"jsx\"]},\n    {name: \"Jinja2\", mime: \"null\", mode: \"jinja2\"},\n    {name: \"Julia\", mime: \"text/x-julia\", mode: \"julia\", ext: [\"jl\"]},\n    {name: \"Kotlin\", mime: \"text/x-kotlin\", mode: \"clike\", ext: [\"kt\"]},\n    {name: \"LESS\", mime: \"text/x-less\", mode: \"css\", ext: [\"less\"]},\n    {name: \"LiveScript\", mime: \"text/x-livescript\", mode: \"livescript\", ext: [\"ls\"], alias: [\"ls\"]},\n    {name: \"Lua\", mime: \"text/x-lua\", mode: \"lua\", ext: [\"lua\"]},\n    {name: \"Markdown\", mime: \"text/x-markdown\", mode: \"markdown\", ext: [\"markdown\", \"md\", \"mkd\"]},\n    {name: \"mIRC\", mime: \"text/mirc\", mode: \"mirc\"},\n    {name: \"MariaDB SQL\", mime: \"text/x-mariadb\", mode: \"sql\"},\n    {name: \"Mathematica\", mime: \"text/x-mathematica\", mode: \"mathematica\", ext: [\"m\", \"nb\"]},\n    {name: \"Modelica\", mime: \"text/x-modelica\", mode: \"modelica\", ext: [\"mo\"]},\n    {name: \"MUMPS\", mime: \"text/x-mumps\", mode: \"mumps\", ext: [\"mps\"]},\n    {name: \"MS SQL\", mime: \"text/x-mssql\", mode: \"sql\"},\n    {name: \"mbox\", mime: \"application/mbox\", mode: \"mbox\", ext: [\"mbox\"]},\n    {name: \"MySQL\", mime: \"text/x-mysql\", mode: \"sql\"},\n    {name: \"Nginx\", mime: \"text/x-nginx-conf\", mode: \"nginx\", file: /nginx.*\\.conf$/i},\n    {name: \"NSIS\", mime: \"text/x-nsis\", mode: \"nsis\", ext: [\"nsh\", \"nsi\"]},\n    {name: \"NTriples\", mime: \"text/n-triples\", mode: \"ntriples\", ext: [\"nt\"]},\n    {name: \"Objective C\", mime: \"text/x-objectivec\", mode: \"clike\", ext: [\"m\", \"mm\"], alias: [\"objective-c\", \"objc\"]},\n    {name: \"OCaml\", mime: \"text/x-ocaml\", mode: \"mllike\", ext: [\"ml\", \"mli\", \"mll\", \"mly\"]},\n    {name: \"Octave\", mime: \"text/x-octave\", mode: \"octave\", ext: [\"m\"]},\n    {name: \"Oz\", mime: \"text/x-oz\", mode: \"oz\", ext: [\"oz\"]},\n    {name: \"Pascal\", mime: \"text/x-pascal\", mode: \"pascal\", ext: [\"p\", \"pas\"]},\n    {name: \"PEG.js\", mime: \"null\", mode: \"pegjs\", ext: [\"jsonld\"]},\n    {name: \"Perl\", mime: \"text/x-perl\", mode: \"perl\", ext: [\"pl\", \"pm\"]},\n    {name: \"PHP\", mime: \"application/x-httpd-php\", mode: \"php\", ext: [\"php\", \"php3\", \"php4\", \"php5\", \"phtml\"]},\n    {name: \"Pig\", mime: \"text/x-pig\", mode: \"pig\", ext: [\"pig\"]},\n    {name: \"Plain Text\", mime: \"text/plain\", mode: \"null\", ext: [\"txt\", \"text\", \"conf\", \"def\", \"list\", \"log\"]},\n    {name: \"PLSQL\", mime: \"text/x-plsql\", mode: \"sql\", ext: [\"pls\"]},\n    {name: \"PowerShell\", mime: \"application/x-powershell\", mode: \"powershell\", ext: [\"ps1\", \"psd1\", \"psm1\"]},\n    {name: \"Properties files\", mime: \"text/x-properties\", mode: \"properties\", ext: [\"properties\", \"ini\", \"in\"], alias: [\"ini\", \"properties\"]},\n    {name: \"ProtoBuf\", mime: \"text/x-protobuf\", mode: \"protobuf\", ext: [\"proto\"]},\n    {name: \"Python\", mime: \"text/x-python\", mode: \"python\", ext: [\"BUILD\", \"bzl\", \"py\", \"pyw\"], file: /^(BUCK|BUILD)$/},\n    {name: \"Puppet\", mime: \"text/x-puppet\", mode: \"puppet\", ext: [\"pp\"]},\n    {name: \"Q\", mime: \"text/x-q\", mode: \"q\", ext: [\"q\"]},\n    {name: \"R\", mime: \"text/x-rsrc\", mode: \"r\", ext: [\"r\", \"R\"], alias: [\"rscript\"]},\n    {name: \"reStructuredText\", mime: \"text/x-rst\", mode: \"rst\", ext: [\"rst\"], alias: [\"rst\"]},\n    {name: \"RPM Changes\", mime: \"text/x-rpm-changes\", mode: \"rpm\"},\n    {name: \"RPM Spec\", mime: \"text/x-rpm-spec\", mode: \"rpm\", ext: [\"spec\"]},\n    {name: \"Ruby\", mime: \"text/x-ruby\", mode: \"ruby\", ext: [\"rb\"], alias: [\"jruby\", \"macruby\", \"rake\", \"rb\", \"rbx\"]},\n    {name: \"Rust\", mime: \"text/x-rustsrc\", mode: \"rust\", ext: [\"rs\"]},\n    {name: \"SAS\", mime: \"text/x-sas\", mode: \"sas\", ext: [\"sas\"]},\n    {name: \"Sass\", mime: \"text/x-sass\", mode: \"sass\", ext: [\"sass\"]},\n    {name: \"Scala\", mime: \"text/x-scala\", mode: \"clike\", ext: [\"scala\"]},\n    {name: \"Scheme\", mime: \"text/x-scheme\", mode: \"scheme\", ext: [\"scm\", \"ss\"]},\n    {name: \"SCSS\", mime: \"text/x-scss\", mode: \"css\", ext: [\"scss\"]},\n    {name: \"Shell\", mime: \"text/x-sh\", mode: \"shell\", ext: [\"sh\", \"ksh\", \"bash\"], alias: [\"bash\", \"sh\", \"zsh\"], file: /^PKGBUILD$/},\n    {name: \"Sieve\", mime: \"application/sieve\", mode: \"sieve\", ext: [\"siv\", \"sieve\"]},\n    {name: \"Slim\", mimes: [\"text/x-slim\", \"application/x-slim\"], mode: \"slim\", ext: [\"slim\"]},\n    {name: \"Smalltalk\", mime: \"text/x-stsrc\", mode: \"smalltalk\", ext: [\"st\"]},\n    {name: \"Smarty\", mime: \"text/x-smarty\", mode: \"smarty\", ext: [\"tpl\"]},\n    {name: \"Solr\", mime: \"text/x-solr\", mode: \"solr\"},\n    {name: \"Soy\", mime: \"text/x-soy\", mode: \"soy\", ext: [\"soy\"], alias: [\"closure template\"]},\n    {name: \"SPARQL\", mime: \"application/sparql-query\", mode: \"sparql\", ext: [\"rq\", \"sparql\"], alias: [\"sparul\"]},\n    {name: \"Spreadsheet\", mime: \"text/x-spreadsheet\", mode: \"spreadsheet\", alias: [\"excel\", \"formula\"]},\n    {name: \"SQL\", mime: \"text/x-sql\", mode: \"sql\", ext: [\"sql\"]},\n    {name: \"SQLite\", mime: \"text/x-sqlite\", mode: \"sql\"},\n    {name: \"Squirrel\", mime: \"text/x-squirrel\", mode: \"clike\", ext: [\"nut\"]},\n    {name: \"Stylus\", mime: \"text/x-styl\", mode: \"stylus\", ext: [\"styl\"]},\n    {name: \"Swift\", mime: \"text/x-swift\", mode: \"swift\", ext: [\"swift\"]},\n    {name: \"sTeX\", mime: \"text/x-stex\", mode: \"stex\"},\n    {name: \"LaTeX\", mime: \"text/x-latex\", mode: \"stex\", ext: [\"text\", \"ltx\"], alias: [\"tex\"]},\n    {name: \"SystemVerilog\", mime: \"text/x-systemverilog\", mode: \"verilog\", ext: [\"v\"]},\n    {name: \"Tcl\", mime: \"text/x-tcl\", mode: \"tcl\", ext: [\"tcl\"]},\n    {name: \"Textile\", mime: \"text/x-textile\", mode: \"textile\", ext: [\"textile\"]},\n    {name: \"TiddlyWiki \", mime: \"text/x-tiddlywiki\", mode: \"tiddlywiki\"},\n    {name: \"Tiki wiki\", mime: \"text/tiki\", mode: \"tiki\"},\n    {name: \"TOML\", mime: \"text/x-toml\", mode: \"toml\", ext: [\"toml\"]},\n    {name: \"Tornado\", mime: \"text/x-tornado\", mode: \"tornado\"},\n    {name: \"troff\", mime: \"text/troff\", mode: \"troff\", ext: [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"]},\n    {name: \"TTCN\", mime: \"text/x-ttcn\", mode: \"ttcn\", ext: [\"ttcn\", \"ttcn3\", \"ttcnpp\"]},\n    {name: \"TTCN_CFG\", mime: \"text/x-ttcn-cfg\", mode: \"ttcn-cfg\", ext: [\"cfg\"]},\n    {name: \"Turtle\", mime: \"text/turtle\", mode: \"turtle\", ext: [\"ttl\"]},\n    {name: \"TypeScript\", mime: \"application/typescript\", mode: \"javascript\", ext: [\"ts\"], alias: [\"ts\"]},\n    {name: \"TypeScript-JSX\", mime: \"text/typescript-jsx\", mode: \"jsx\", ext: [\"tsx\"], alias: [\"tsx\"]},\n    {name: \"Twig\", mime: \"text/x-twig\", mode: \"twig\"},\n    {name: \"Web IDL\", mime: \"text/x-webidl\", mode: \"webidl\", ext: [\"webidl\"]},\n    {name: \"VB.NET\", mime: \"text/x-vb\", mode: \"vb\", ext: [\"vb\"]},\n    {name: \"VBScript\", mime: \"text/vbscript\", mode: \"vbscript\", ext: [\"vbs\"]},\n    {name: \"Velocity\", mime: \"text/velocity\", mode: \"velocity\", ext: [\"vtl\"]},\n    {name: \"Verilog\", mime: \"text/x-verilog\", mode: \"verilog\", ext: [\"v\"]},\n    {name: \"VHDL\", mime: \"text/x-vhdl\", mode: \"vhdl\", ext: [\"vhd\", \"vhdl\"]},\n    {name: \"Vue.js Component\", mimes: [\"script/x-vue\", \"text/x-vue\"], mode: \"vue\", ext: [\"vue\"]},\n    {name: \"XML\", mimes: [\"application/xml\", \"text/xml\"], mode: \"xml\", ext: [\"xml\", \"xsl\", \"xsd\", \"svg\"], alias: [\"rss\", \"wsdl\", \"xsd\"]},\n    {name: \"XQuery\", mime: \"application/xquery\", mode: \"xquery\", ext: [\"xy\", \"xquery\"]},\n    {name: \"Yacas\", mime: \"text/x-yacas\", mode: \"yacas\", ext: [\"ys\"]},\n    {name: \"YAML\", mimes: [\"text/x-yaml\", \"text/yaml\"], mode: \"yaml\", ext: [\"yaml\", \"yml\"], alias: [\"yml\"]},\n    {name: \"Z80\", mime: \"text/x-z80\", mode: \"z80\", ext: [\"z80\"]},\n    {name: \"mscgen\", mime: \"text/x-mscgen\", mode: \"mscgen\", ext: [\"mscgen\", \"mscin\", \"msc\"]},\n    {name: \"xu\", mime: \"text/x-xu\", mode: \"mscgen\", ext: [\"xu\"]},\n    {name: \"msgenny\", mime: \"text/x-msgenny\", mode: \"mscgen\", ext: [\"msgenny\"]}\n  ];\n  // Ensure all modes have a mime property for backwards compatibility\n  for (var i = 0; i < CodeMirror.modeInfo.length; i++) {\n    var info = CodeMirror.modeInfo[i];\n    if (info.mimes) info.mime = info.mimes[0];\n  }\n\n  CodeMirror.findModeByMIME = function(mime) {\n    mime = mime.toLowerCase();\n    for (var i = 0; i < CodeMirror.modeInfo.length; i++) {\n      var info = CodeMirror.modeInfo[i];\n      if (info.mime == mime) return info;\n      if (info.mimes) for (var j = 0; j < info.mimes.length; j++)\n        if (info.mimes[j] == mime) return info;\n    }\n    if (/\\+xml$/.test(mime)) return CodeMirror.findModeByMIME(\"application/xml\")\n    if (/\\+json$/.test(mime)) return CodeMirror.findModeByMIME(\"application/json\")\n  };\n\n  CodeMirror.findModeByExtension = function(ext) {\n    for (var i = 0; i < CodeMirror.modeInfo.length; i++) {\n      var info = CodeMirror.modeInfo[i];\n      if (info.ext) for (var j = 0; j < info.ext.length; j++)\n        if (info.ext[j] == ext) return info;\n    }\n  };\n\n  CodeMirror.findModeByFileName = function(filename) {\n    for (var i = 0; i < CodeMirror.modeInfo.length; i++) {\n      var info = CodeMirror.modeInfo[i];\n      if (info.file && info.file.test(filename)) return info;\n    }\n    var dot = filename.lastIndexOf(\".\");\n    var ext = dot > -1 && filename.substring(dot + 1, filename.length);\n    if (ext) return CodeMirror.findModeByExtension(ext);\n  };\n\n  CodeMirror.findModeByName = function(name) {\n    name = name.toLowerCase();\n    for (var i = 0; i < CodeMirror.modeInfo.length; i++) {\n      var info = CodeMirror.modeInfo[i];\n      if (info.name.toLowerCase() == name) return info;\n      if (info.alias) for (var j = 0; j < info.alias.length; j++)\n        if (info.alias[j].toLowerCase() == name) return info;\n    }\n  };\n});\n\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"), require(\"../xml/xml\"), require(\"../meta\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/mode/markdown/markdown',[\"../../lib/codemirror\", \"../xml/xml\", \"../meta\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"markdown\", function(cmCfg, modeCfg) {\n\n  var htmlMode = CodeMirror.getMode(cmCfg, \"text/html\");\n  var htmlModeMissing = htmlMode.name == \"null\"\n\n  function getMode(name) {\n    if (CodeMirror.findModeByName) {\n      var found = CodeMirror.findModeByName(name);\n      if (found) name = found.mime || found.mimes[0];\n    }\n    var mode = CodeMirror.getMode(cmCfg, name);\n    return mode.name == \"null\" ? null : mode;\n  }\n\n  // Should characters that affect highlighting be highlighted separate?\n  // Does not include characters that will be output (such as `1.` and `-` for lists)\n  if (modeCfg.highlightFormatting === undefined)\n    modeCfg.highlightFormatting = false;\n\n  // Maximum number of nested blockquotes. Set to 0 for infinite nesting.\n  // Excess `>` will emit `error` token.\n  if (modeCfg.maxBlockquoteDepth === undefined)\n    modeCfg.maxBlockquoteDepth = 0;\n\n  // Use `fencedCodeBlocks` to configure fenced code blocks. false to\n  // disable, string to specify a precise regexp that the fence should\n  // match, and true to allow three or more backticks or tildes (as\n  // per CommonMark).\n\n  // Turn on task lists? (\"- [ ] \" and \"- [x] \")\n  if (modeCfg.taskLists === undefined) modeCfg.taskLists = false;\n\n  // Turn on strikethrough syntax\n  if (modeCfg.strikethrough === undefined)\n    modeCfg.strikethrough = false;\n\n  // Allow token types to be overridden by user-provided token types.\n  if (modeCfg.tokenTypeOverrides === undefined)\n    modeCfg.tokenTypeOverrides = {};\n\n  var tokenTypes = {\n    header: \"header\",\n    code: \"comment\",\n    quote: \"quote\",\n    list1: \"variable-2\",\n    list2: \"variable-3\",\n    list3: \"keyword\",\n    hr: \"hr\",\n    image: \"image\",\n    imageAltText: \"image-alt-text\",\n    imageMarker: \"image-marker\",\n    formatting: \"formatting\",\n    linkInline: \"link\",\n    linkEmail: \"link\",\n    linkText: \"link\",\n    linkHref: \"string\",\n    em: \"em\",\n    strong: \"strong\",\n    strikethrough: \"strikethrough\"\n  };\n\n  for (var tokenType in tokenTypes) {\n    if (tokenTypes.hasOwnProperty(tokenType) && modeCfg.tokenTypeOverrides[tokenType]) {\n      tokenTypes[tokenType] = modeCfg.tokenTypeOverrides[tokenType];\n    }\n  }\n\n  var hrRE = /^([*\\-_])(?:\\s*\\1){2,}\\s*$/\n  ,   listRE = /^(?:[*\\-+]|^[0-9]+([.)]))\\s+/\n  ,   taskListRE = /^\\[(x| )\\](?=\\s)/ // Must follow listRE\n  ,   atxHeaderRE = modeCfg.allowAtxHeaderWithoutSpace ? /^(#+)/ : /^(#+)(?: |$)/\n  ,   setextHeaderRE = /^ *(?:\\={1,}|-{1,})\\s*$/\n  ,   textRE = /^[^#!\\[\\]*_\\\\<>` \"'(~]+/\n  ,   fencedCodeRE = new RegExp(\"^(\" + (modeCfg.fencedCodeBlocks === true ? \"~~~+|```+\" : modeCfg.fencedCodeBlocks) +\n                                \")[ \\\\t]*([\\\\w+#\\-]*)\")\n  ,   punctuation = /[!\\\"#$%&\\'()*+,\\-\\.\\/:;<=>?@\\[\\\\\\]^_`{|}~—]/\n\n  function switchInline(stream, state, f) {\n    state.f = state.inline = f;\n    return f(stream, state);\n  }\n\n  function switchBlock(stream, state, f) {\n    state.f = state.block = f;\n    return f(stream, state);\n  }\n\n  function lineIsEmpty(line) {\n    return !line || !/\\S/.test(line.string)\n  }\n\n  // Blocks\n\n  function blankLine(state) {\n    // Reset linkTitle state\n    state.linkTitle = false;\n    // Reset EM state\n    state.em = false;\n    // Reset STRONG state\n    state.strong = false;\n    // Reset strikethrough state\n    state.strikethrough = false;\n    // Reset state.quote\n    state.quote = 0;\n    // Reset state.indentedCode\n    state.indentedCode = false;\n    if (state.f == htmlBlock) {\n      state.f = inlineNormal;\n      state.block = blockNormal;\n    }\n    // Reset state.trailingSpace\n    state.trailingSpace = 0;\n    state.trailingSpaceNewLine = false;\n    // Mark this line as blank\n    state.prevLine = state.thisLine\n    state.thisLine = null\n    return null;\n  }\n\n  function blockNormal(stream, state) {\n\n    var sol = stream.sol();\n\n    var prevLineIsList = state.list !== false,\n        prevLineIsIndentedCode = state.indentedCode;\n\n    state.indentedCode = false;\n\n    if (prevLineIsList) {\n      if (state.indentationDiff >= 0) { // Continued list\n        if (state.indentationDiff < 4) { // Only adjust indentation if *not* a code block\n          state.indentation -= state.indentationDiff;\n        }\n        state.list = null;\n      } else if (state.indentation > 0) {\n        state.list = null;\n      } else { // No longer a list\n        state.list = false;\n      }\n    }\n\n    var match = null;\n    if (state.indentationDiff >= 4) {\n      stream.skipToEnd();\n      if (prevLineIsIndentedCode || lineIsEmpty(state.prevLine)) {\n        state.indentation -= 4;\n        state.indentedCode = true;\n        return tokenTypes.code;\n      } else {\n        return null;\n      }\n    } else if (stream.eatSpace()) {\n      return null;\n    } else if ((match = stream.match(atxHeaderRE)) && match[1].length <= 6) {\n      state.header = match[1].length;\n      if (modeCfg.highlightFormatting) state.formatting = \"header\";\n      state.f = state.inline;\n      return getType(state);\n    } else if (!lineIsEmpty(state.prevLine) && !state.quote && !prevLineIsList &&\n               !prevLineIsIndentedCode && (match = stream.match(setextHeaderRE))) {\n      state.header = match[0].charAt(0) == '=' ? 1 : 2;\n      if (modeCfg.highlightFormatting) state.formatting = \"header\";\n      state.f = state.inline;\n      return getType(state);\n    } else if (stream.eat('>')) {\n      state.quote = sol ? 1 : state.quote + 1;\n      if (modeCfg.highlightFormatting) state.formatting = \"quote\";\n      stream.eatSpace();\n      return getType(state);\n    } else if (stream.peek() === '[') {\n      return switchInline(stream, state, footnoteLink);\n    } else if (stream.match(hrRE, true)) {\n      state.hr = true;\n      return tokenTypes.hr;\n    } else if (match = stream.match(listRE)) {\n      var listType = match[1] ? \"ol\" : \"ul\";\n      state.indentation = stream.column() + stream.current().length;\n      state.list = true;\n\n      // While this list item's marker's indentation\n      // is less than the deepest list item's content's indentation,\n      // pop the deepest list item indentation off the stack.\n      while (state.listStack && stream.column() < state.listStack[state.listStack.length - 1]) {\n        state.listStack.pop();\n      }\n\n      // Add this list item's content's indentation to the stack\n      state.listStack.push(state.indentation);\n\n      if (modeCfg.taskLists && stream.match(taskListRE, false)) {\n        state.taskList = true;\n      }\n      state.f = state.inline;\n      if (modeCfg.highlightFormatting) state.formatting = [\"list\", \"list-\" + listType];\n      return getType(state);\n    } else if (modeCfg.fencedCodeBlocks && (match = stream.match(fencedCodeRE, true))) {\n      state.fencedChars = match[1]\n      // try switching mode\n      state.localMode = getMode(match[2]);\n      if (state.localMode) state.localState = CodeMirror.startState(state.localMode);\n      state.f = state.block = local;\n      if (modeCfg.highlightFormatting) state.formatting = \"code-block\";\n      state.code = -1\n      return getType(state);\n    }\n\n    return switchInline(stream, state, state.inline);\n  }\n\n  function htmlBlock(stream, state) {\n    var style = htmlMode.token(stream, state.htmlState);\n    if (!htmlModeMissing) {\n      var inner = CodeMirror.innerMode(htmlMode, state.htmlState)\n      if ((inner.mode.name == \"xml\" && inner.state.tagStart === null &&\n           (!inner.state.context && inner.state.tokenize.isInText)) ||\n          (state.md_inside && stream.current().indexOf(\">\") > -1)) {\n        state.f = inlineNormal;\n        state.block = blockNormal;\n        state.htmlState = null;\n      }\n    }\n    return style;\n  }\n\n  function local(stream, state) {\n    if (state.fencedChars && stream.match(state.fencedChars)) {\n      if (modeCfg.highlightFormatting) state.formatting = \"code-block\";\n      var returnType = getType(state)\n      state.localMode = state.localState = null;\n      state.block = blockNormal;\n      state.f = inlineNormal;\n      state.fencedChars = null;\n      state.code = 0\n      return returnType;\n    } else if (state.fencedChars && stream.skipTo(state.fencedChars)) {\n      return \"comment\"\n    } else if (state.localMode) {\n      return state.localMode.token(stream, state.localState);\n    } else {\n      stream.skipToEnd();\n      return tokenTypes.code;\n    }\n  }\n\n  // Inline\n  function getType(state) {\n    var styles = [];\n\n    if (state.formatting) {\n      styles.push(tokenTypes.formatting);\n\n      if (typeof state.formatting === \"string\") state.formatting = [state.formatting];\n\n      for (var i = 0; i < state.formatting.length; i++) {\n        styles.push(tokenTypes.formatting + \"-\" + state.formatting[i]);\n\n        if (state.formatting[i] === \"header\") {\n          styles.push(tokenTypes.formatting + \"-\" + state.formatting[i] + \"-\" + state.header);\n        }\n\n        // Add `formatting-quote` and `formatting-quote-#` for blockquotes\n        // Add `error` instead if the maximum blockquote nesting depth is passed\n        if (state.formatting[i] === \"quote\") {\n          if (!modeCfg.maxBlockquoteDepth || modeCfg.maxBlockquoteDepth >= state.quote) {\n            styles.push(tokenTypes.formatting + \"-\" + state.formatting[i] + \"-\" + state.quote);\n          } else {\n            styles.push(\"error\");\n          }\n        }\n      }\n    }\n\n    if (state.taskOpen) {\n      styles.push(\"meta\");\n      return styles.length ? styles.join(' ') : null;\n    }\n    if (state.taskClosed) {\n      styles.push(\"property\");\n      return styles.length ? styles.join(' ') : null;\n    }\n\n    if (state.linkHref) {\n      styles.push(tokenTypes.linkHref, \"url\");\n    } else { // Only apply inline styles to non-url text\n      if (state.strong) { styles.push(tokenTypes.strong); }\n      if (state.em) { styles.push(tokenTypes.em); }\n      if (state.strikethrough) { styles.push(tokenTypes.strikethrough); }\n      if (state.linkText) { styles.push(tokenTypes.linkText); }\n      if (state.code) { styles.push(tokenTypes.code); }\n      if (state.image) { styles.push(tokenTypes.image); }\n      if (state.imageAltText) { styles.push(tokenTypes.imageAltText, \"link\"); }\n      if (state.imageMarker) { styles.push(tokenTypes.imageMarker); }\n    }\n\n    if (state.header) { styles.push(tokenTypes.header, tokenTypes.header + \"-\" + state.header); }\n\n    if (state.quote) {\n      styles.push(tokenTypes.quote);\n\n      // Add `quote-#` where the maximum for `#` is modeCfg.maxBlockquoteDepth\n      if (!modeCfg.maxBlockquoteDepth || modeCfg.maxBlockquoteDepth >= state.quote) {\n        styles.push(tokenTypes.quote + \"-\" + state.quote);\n      } else {\n        styles.push(tokenTypes.quote + \"-\" + modeCfg.maxBlockquoteDepth);\n      }\n    }\n\n    if (state.list !== false) {\n      var listMod = (state.listStack.length - 1) % 3;\n      if (!listMod) {\n        styles.push(tokenTypes.list1);\n      } else if (listMod === 1) {\n        styles.push(tokenTypes.list2);\n      } else {\n        styles.push(tokenTypes.list3);\n      }\n    }\n\n    if (state.trailingSpaceNewLine) {\n      styles.push(\"trailing-space-new-line\");\n    } else if (state.trailingSpace) {\n      styles.push(\"trailing-space-\" + (state.trailingSpace % 2 ? \"a\" : \"b\"));\n    }\n\n    return styles.length ? styles.join(' ') : null;\n  }\n\n  function handleText(stream, state) {\n    if (stream.match(textRE, true)) {\n      return getType(state);\n    }\n    return undefined;\n  }\n\n  function inlineNormal(stream, state) {\n    var style = state.text(stream, state);\n    if (typeof style !== 'undefined')\n      return style;\n\n    if (state.list) { // List marker (*, +, -, 1., etc)\n      state.list = null;\n      return getType(state);\n    }\n\n    if (state.taskList) {\n      var taskOpen = stream.match(taskListRE, true)[1] !== \"x\";\n      if (taskOpen) state.taskOpen = true;\n      else state.taskClosed = true;\n      if (modeCfg.highlightFormatting) state.formatting = \"task\";\n      state.taskList = false;\n      return getType(state);\n    }\n\n    state.taskOpen = false;\n    state.taskClosed = false;\n\n    if (state.header && stream.match(/^#+$/, true)) {\n      if (modeCfg.highlightFormatting) state.formatting = \"header\";\n      return getType(state);\n    }\n\n    var ch = stream.next();\n\n    // Matches link titles present on next line\n    if (state.linkTitle) {\n      state.linkTitle = false;\n      var matchCh = ch;\n      if (ch === '(') {\n        matchCh = ')';\n      }\n      matchCh = (matchCh+'').replace(/([.?*+^\\[\\]\\\\(){}|-])/g, \"\\\\$1\");\n      var regex = '^\\\\s*(?:[^' + matchCh + '\\\\\\\\]+|\\\\\\\\\\\\\\\\|\\\\\\\\.)' + matchCh;\n      if (stream.match(new RegExp(regex), true)) {\n        return tokenTypes.linkHref;\n      }\n    }\n\n    // If this block is changed, it may need to be updated in GFM mode\n    if (ch === '`') {\n      var previousFormatting = state.formatting;\n      if (modeCfg.highlightFormatting) state.formatting = \"code\";\n      stream.eatWhile('`');\n      var count = stream.current().length\n      if (state.code == 0) {\n        state.code = count\n        return getType(state)\n      } else if (count == state.code) { // Must be exact\n        var t = getType(state)\n        state.code = 0\n        return t\n      } else {\n        state.formatting = previousFormatting\n        return getType(state)\n      }\n    } else if (state.code) {\n      return getType(state);\n    }\n\n    if (ch === '\\\\') {\n      stream.next();\n      if (modeCfg.highlightFormatting) {\n        var type = getType(state);\n        var formattingEscape = tokenTypes.formatting + \"-escape\";\n        return type ? type + \" \" + formattingEscape : formattingEscape;\n      }\n    }\n\n    if (ch === '!' && stream.match(/\\[[^\\]]*\\] ?(?:\\(|\\[)/, false)) {\n      state.imageMarker = true;\n      state.image = true;\n      if (modeCfg.highlightFormatting) state.formatting = \"image\";\n      return getType(state);\n    }\n\n    if (ch === '[' && state.imageMarker && stream.match(/[^\\]]*\\](\\(.*?\\)| ?\\[.*?\\])/, false)) {\n      state.imageMarker = false;\n      state.imageAltText = true\n      if (modeCfg.highlightFormatting) state.formatting = \"image\";\n      return getType(state);\n    }\n\n    if (ch === ']' && state.imageAltText) {\n      if (modeCfg.highlightFormatting) state.formatting = \"image\";\n      var type = getType(state);\n      state.imageAltText = false;\n      state.image = false;\n      state.inline = state.f = linkHref;\n      return type;\n    }\n\n    if (ch === '[' && stream.match(/[^\\]]*\\](\\(.*\\)| ?\\[.*?\\])/, false) && !state.image) {\n      state.linkText = true;\n      if (modeCfg.highlightFormatting) state.formatting = \"link\";\n      return getType(state);\n    }\n\n    if (ch === ']' && state.linkText && stream.match(/\\(.*?\\)| ?\\[.*?\\]/, false)) {\n      if (modeCfg.highlightFormatting) state.formatting = \"link\";\n      var type = getType(state);\n      state.linkText = false;\n      state.inline = state.f = linkHref;\n      return type;\n    }\n\n    if (ch === '<' && stream.match(/^(https?|ftps?):\\/\\/(?:[^\\\\>]|\\\\.)+>/, false)) {\n      state.f = state.inline = linkInline;\n      if (modeCfg.highlightFormatting) state.formatting = \"link\";\n      var type = getType(state);\n      if (type){\n        type += \" \";\n      } else {\n        type = \"\";\n      }\n      return type + tokenTypes.linkInline;\n    }\n\n    if (ch === '<' && stream.match(/^[^> \\\\]+@(?:[^\\\\>]|\\\\.)+>/, false)) {\n      state.f = state.inline = linkInline;\n      if (modeCfg.highlightFormatting) state.formatting = \"link\";\n      var type = getType(state);\n      if (type){\n        type += \" \";\n      } else {\n        type = \"\";\n      }\n      return type + tokenTypes.linkEmail;\n    }\n\n    if (ch === '<' && stream.match(/^(!--|[a-z]+(?:\\s+[a-z_:.\\-]+(?:\\s*=\\s*[^ >]+)?)*\\s*>)/i, false)) {\n      var end = stream.string.indexOf(\">\", stream.pos);\n      if (end != -1) {\n        var atts = stream.string.substring(stream.start, end);\n        if (/markdown\\s*=\\s*('|\"){0,1}1('|\"){0,1}/.test(atts)) state.md_inside = true;\n      }\n      stream.backUp(1);\n      state.htmlState = CodeMirror.startState(htmlMode);\n      return switchBlock(stream, state, htmlBlock);\n    }\n\n    if (ch === '<' && stream.match(/^\\/\\w*?>/)) {\n      state.md_inside = false;\n      return \"tag\";\n    } else if (ch === \"*\" || ch === \"_\") {\n      var len = 1, before = stream.pos == 1 ? \" \" : stream.string.charAt(stream.pos - 2)\n      while (len < 3 && stream.eat(ch)) len++\n      var after = stream.peek() || \" \"\n      // See http://spec.commonmark.org/0.27/#emphasis-and-strong-emphasis\n      var leftFlanking = !/\\s/.test(after) && (!punctuation.test(after) || /\\s/.test(before) || punctuation.test(before))\n      var rightFlanking = !/\\s/.test(before) && (!punctuation.test(before) || /\\s/.test(after) || punctuation.test(after))\n      var setEm = null, setStrong = null\n      if (len % 2) { // Em\n        if (!state.em && leftFlanking && (ch === \"*\" || !rightFlanking || punctuation.test(before)))\n          setEm = true\n        else if (state.em == ch && rightFlanking && (ch === \"*\" || !leftFlanking || punctuation.test(after)))\n          setEm = false\n      }\n      if (len > 1) { // Strong\n        if (!state.strong && leftFlanking && (ch === \"*\" || !rightFlanking || punctuation.test(before)))\n          setStrong = true\n        else if (state.strong == ch && rightFlanking && (ch === \"*\" || !leftFlanking || punctuation.test(after)))\n          setStrong = false\n      }\n      if (setStrong != null || setEm != null) {\n        if (modeCfg.highlightFormatting) state.formatting = setEm == null ? \"strong\" : setStrong == null ? \"em\" : \"strong em\"\n        if (setEm === true) state.em = ch\n        if (setStrong === true) state.strong = ch\n        var t = getType(state)\n        if (setEm === false) state.em = false\n        if (setStrong === false) state.strong = false\n        return t\n      }\n    } else if (ch === ' ') {\n      if (stream.eat('*') || stream.eat('_')) { // Probably surrounded by spaces\n        if (stream.peek() === ' ') { // Surrounded by spaces, ignore\n          return getType(state);\n        } else { // Not surrounded by spaces, back up pointer\n          stream.backUp(1);\n        }\n      }\n    }\n\n    if (modeCfg.strikethrough) {\n      if (ch === '~' && stream.eatWhile(ch)) {\n        if (state.strikethrough) {// Remove strikethrough\n          if (modeCfg.highlightFormatting) state.formatting = \"strikethrough\";\n          var t = getType(state);\n          state.strikethrough = false;\n          return t;\n        } else if (stream.match(/^[^\\s]/, false)) {// Add strikethrough\n          state.strikethrough = true;\n          if (modeCfg.highlightFormatting) state.formatting = \"strikethrough\";\n          return getType(state);\n        }\n      } else if (ch === ' ') {\n        if (stream.match(/^~~/, true)) { // Probably surrounded by space\n          if (stream.peek() === ' ') { // Surrounded by spaces, ignore\n            return getType(state);\n          } else { // Not surrounded by spaces, back up pointer\n            stream.backUp(2);\n          }\n        }\n      }\n    }\n\n    if (ch === ' ') {\n      if (stream.match(/ +$/, false)) {\n        state.trailingSpace++;\n      } else if (state.trailingSpace) {\n        state.trailingSpaceNewLine = true;\n      }\n    }\n\n    return getType(state);\n  }\n\n  function linkInline(stream, state) {\n    var ch = stream.next();\n\n    if (ch === \">\") {\n      state.f = state.inline = inlineNormal;\n      if (modeCfg.highlightFormatting) state.formatting = \"link\";\n      var type = getType(state);\n      if (type){\n        type += \" \";\n      } else {\n        type = \"\";\n      }\n      return type + tokenTypes.linkInline;\n    }\n\n    stream.match(/^[^>]+/, true);\n\n    return tokenTypes.linkInline;\n  }\n\n  function linkHref(stream, state) {\n    // Check if space, and return NULL if so (to avoid marking the space)\n    if(stream.eatSpace()){\n      return null;\n    }\n    var ch = stream.next();\n    if (ch === '(' || ch === '[') {\n      state.f = state.inline = getLinkHrefInside(ch === \"(\" ? \")\" : \"]\", 0);\n      if (modeCfg.highlightFormatting) state.formatting = \"link-string\";\n      state.linkHref = true;\n      return getType(state);\n    }\n    return 'error';\n  }\n\n  var linkRE = {\n    \")\": /^(?:[^\\\\\\(\\)]|\\\\.|\\((?:[^\\\\\\(\\)]|\\\\.)*\\))*?(?=\\))/,\n    \"]\": /^(?:[^\\\\\\[\\]]|\\\\.|\\[(?:[^\\\\\\[\\\\]]|\\\\.)*\\])*?(?=\\])/\n  }\n\n  function getLinkHrefInside(endChar) {\n    return function(stream, state) {\n      var ch = stream.next();\n\n      if (ch === endChar) {\n        state.f = state.inline = inlineNormal;\n        if (modeCfg.highlightFormatting) state.formatting = \"link-string\";\n        var returnState = getType(state);\n        state.linkHref = false;\n        return returnState;\n      }\n\n      stream.match(linkRE[endChar])\n      state.linkHref = true;\n      return getType(state);\n    };\n  }\n\n  function footnoteLink(stream, state) {\n    if (stream.match(/^([^\\]\\\\]|\\\\.)*\\]:/, false)) {\n      state.f = footnoteLinkInside;\n      stream.next(); // Consume [\n      if (modeCfg.highlightFormatting) state.formatting = \"link\";\n      state.linkText = true;\n      return getType(state);\n    }\n    return switchInline(stream, state, inlineNormal);\n  }\n\n  function footnoteLinkInside(stream, state) {\n    if (stream.match(/^\\]:/, true)) {\n      state.f = state.inline = footnoteUrl;\n      if (modeCfg.highlightFormatting) state.formatting = \"link\";\n      var returnType = getType(state);\n      state.linkText = false;\n      return returnType;\n    }\n\n    stream.match(/^([^\\]\\\\]|\\\\.)+/, true);\n\n    return tokenTypes.linkText;\n  }\n\n  function footnoteUrl(stream, state) {\n    // Check if space, and return NULL if so (to avoid marking the space)\n    if(stream.eatSpace()){\n      return null;\n    }\n    // Match URL\n    stream.match(/^[^\\s]+/, true);\n    // Check for link title\n    if (stream.peek() === undefined) { // End of line, set flag to check next line\n      state.linkTitle = true;\n    } else { // More content on line, check if link title\n      stream.match(/^(?:\\s+(?:\"(?:[^\"\\\\]|\\\\\\\\|\\\\.)+\"|'(?:[^'\\\\]|\\\\\\\\|\\\\.)+'|\\((?:[^)\\\\]|\\\\\\\\|\\\\.)+\\)))?/, true);\n    }\n    state.f = state.inline = inlineNormal;\n    return tokenTypes.linkHref + \" url\";\n  }\n\n  var mode = {\n    startState: function() {\n      return {\n        f: blockNormal,\n\n        prevLine: null,\n        thisLine: null,\n\n        block: blockNormal,\n        htmlState: null,\n        indentation: 0,\n\n        inline: inlineNormal,\n        text: handleText,\n\n        formatting: false,\n        linkText: false,\n        linkHref: false,\n        linkTitle: false,\n        code: 0,\n        em: false,\n        strong: false,\n        header: 0,\n        hr: false,\n        taskList: false,\n        list: false,\n        listStack: [],\n        quote: 0,\n        trailingSpace: 0,\n        trailingSpaceNewLine: false,\n        strikethrough: false,\n        fencedChars: null\n      };\n    },\n\n    copyState: function(s) {\n      return {\n        f: s.f,\n\n        prevLine: s.prevLine,\n        thisLine: s.thisLine,\n\n        block: s.block,\n        htmlState: s.htmlState && CodeMirror.copyState(htmlMode, s.htmlState),\n        indentation: s.indentation,\n\n        localMode: s.localMode,\n        localState: s.localMode ? CodeMirror.copyState(s.localMode, s.localState) : null,\n\n        inline: s.inline,\n        text: s.text,\n        formatting: false,\n        linkTitle: s.linkTitle,\n        code: s.code,\n        em: s.em,\n        strong: s.strong,\n        strikethrough: s.strikethrough,\n        header: s.header,\n        hr: s.hr,\n        taskList: s.taskList,\n        list: s.list,\n        listStack: s.listStack.slice(0),\n        quote: s.quote,\n        indentedCode: s.indentedCode,\n        trailingSpace: s.trailingSpace,\n        trailingSpaceNewLine: s.trailingSpaceNewLine,\n        md_inside: s.md_inside,\n        fencedChars: s.fencedChars\n      };\n    },\n\n    token: function(stream, state) {\n\n      // Reset state.formatting\n      state.formatting = false;\n\n      if (stream != state.thisLine) {\n        var forceBlankLine = state.header || state.hr;\n\n        // Reset state.header and state.hr\n        state.header = 0;\n        state.hr = false;\n\n        if (stream.match(/^\\s*$/, true) || forceBlankLine) {\n          blankLine(state);\n          if (!forceBlankLine) return null\n          state.prevLine = null\n        }\n\n        state.prevLine = state.thisLine\n        state.thisLine = stream\n\n        // Reset state.taskList\n        state.taskList = false;\n\n        // Reset state.trailingSpace\n        state.trailingSpace = 0;\n        state.trailingSpaceNewLine = false;\n\n        state.f = state.block;\n        var indentation = stream.match(/^\\s*/, true)[0].replace(/\\t/g, '    ').length;\n        state.indentationDiff = Math.min(indentation - state.indentation, 4);\n        state.indentation = state.indentation + state.indentationDiff;\n        if (indentation > 0) return null;\n      }\n      return state.f(stream, state);\n    },\n\n    innerMode: function(state) {\n      if (state.block == htmlBlock) return {state: state.htmlState, mode: htmlMode};\n      if (state.localState) return {state: state.localState, mode: state.localMode};\n      return {state: state, mode: mode};\n    },\n\n    blankLine: blankLine,\n\n    getType: getType,\n\n    closeBrackets: \"()[]{}''\\\"\\\"``\",\n    fold: \"markdown\"\n  };\n  return mode;\n}, \"xml\");\n\nCodeMirror.defineMIME(\"text/x-markdown\", \"markdown\");\n\n});\n\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/edit/matchbrackets',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  var ie_lt8 = /MSIE \\d/.test(navigator.userAgent) &&\n    (document.documentMode == null || document.documentMode < 8);\n\n  var Pos = CodeMirror.Pos;\n\n  var matching = {\"(\": \")>\", \")\": \"(<\", \"[\": \"]>\", \"]\": \"[<\", \"{\": \"}>\", \"}\": \"{<\"};\n\n  function findMatchingBracket(cm, where, strict, config) {\n    var line = cm.getLineHandle(where.line), pos = where.ch - 1;\n    var match = (pos >= 0 && matching[line.text.charAt(pos)]) || matching[line.text.charAt(++pos)];\n    if (!match) return null;\n    var dir = match.charAt(1) == \">\" ? 1 : -1;\n    if (strict && (dir > 0) != (pos == where.ch)) return null;\n    var style = cm.getTokenTypeAt(Pos(where.line, pos + 1));\n\n    var found = scanForBracket(cm, Pos(where.line, pos + (dir > 0 ? 1 : 0)), dir, style || null, config);\n    if (found == null) return null;\n    return {from: Pos(where.line, pos), to: found && found.pos,\n            match: found && found.ch == match.charAt(0), forward: dir > 0};\n  }\n\n  // bracketRegex is used to specify which type of bracket to scan\n  // should be a regexp, e.g. /[[\\]]/\n  //\n  // Note: If \"where\" is on an open bracket, then this bracket is ignored.\n  //\n  // Returns false when no bracket was found, null when it reached\n  // maxScanLines and gave up\n  function scanForBracket(cm, where, dir, style, config) {\n    var maxScanLen = (config && config.maxScanLineLength) || 10000;\n    var maxScanLines = (config && config.maxScanLines) || 1000;\n\n    var stack = [];\n    var re = config && config.bracketRegex ? config.bracketRegex : /[(){}[\\]]/;\n    var lineEnd = dir > 0 ? Math.min(where.line + maxScanLines, cm.lastLine() + 1)\n                          : Math.max(cm.firstLine() - 1, where.line - maxScanLines);\n    for (var lineNo = where.line; lineNo != lineEnd; lineNo += dir) {\n      var line = cm.getLine(lineNo);\n      if (!line) continue;\n      var pos = dir > 0 ? 0 : line.length - 1, end = dir > 0 ? line.length : -1;\n      if (line.length > maxScanLen) continue;\n      if (lineNo == where.line) pos = where.ch - (dir < 0 ? 1 : 0);\n      for (; pos != end; pos += dir) {\n        var ch = line.charAt(pos);\n        if (re.test(ch) && (style === undefined || cm.getTokenTypeAt(Pos(lineNo, pos + 1)) == style)) {\n          var match = matching[ch];\n          if ((match.charAt(1) == \">\") == (dir > 0)) stack.push(ch);\n          else if (!stack.length) return {pos: Pos(lineNo, pos), ch: ch};\n          else stack.pop();\n        }\n      }\n    }\n    return lineNo - dir == (dir > 0 ? cm.lastLine() : cm.firstLine()) ? false : null;\n  }\n\n  function matchBrackets(cm, autoclear, config) {\n    // Disable brace matching in long lines, since it'll cause hugely slow updates\n    var maxHighlightLen = cm.state.matchBrackets.maxHighlightLineLength || 1000;\n    var marks = [], ranges = cm.listSelections();\n    for (var i = 0; i < ranges.length; i++) {\n      var match = ranges[i].empty() && findMatchingBracket(cm, ranges[i].head, false, config);\n      if (match && cm.getLine(match.from.line).length <= maxHighlightLen) {\n        var style = match.match ? \"CodeMirror-matchingbracket\" : \"CodeMirror-nonmatchingbracket\";\n        marks.push(cm.markText(match.from, Pos(match.from.line, match.from.ch + 1), {className: style}));\n        if (match.to && cm.getLine(match.to.line).length <= maxHighlightLen)\n          marks.push(cm.markText(match.to, Pos(match.to.line, match.to.ch + 1), {className: style}));\n      }\n    }\n\n    if (marks.length) {\n      // Kludge to work around the IE bug from issue #1193, where text\n      // input stops going to the textare whever this fires.\n      if (ie_lt8 && cm.state.focused) cm.focus();\n\n      var clear = function() {\n        cm.operation(function() {\n          for (var i = 0; i < marks.length; i++) marks[i].clear();\n        });\n      };\n      if (autoclear) setTimeout(clear, 800);\n      else return clear;\n    }\n  }\n\n  var currentlyHighlighted = null;\n  function doMatchBrackets(cm) {\n    cm.operation(function() {\n      if (currentlyHighlighted) {currentlyHighlighted(); currentlyHighlighted = null;}\n      currentlyHighlighted = matchBrackets(cm, false, cm.state.matchBrackets);\n    });\n  }\n\n  CodeMirror.defineOption(\"matchBrackets\", false, function(cm, val, old) {\n    if (old && old != CodeMirror.Init) {\n      cm.off(\"cursorActivity\", doMatchBrackets);\n      if (currentlyHighlighted) {currentlyHighlighted(); currentlyHighlighted = null;}\n    }\n    if (val) {\n      cm.state.matchBrackets = typeof val == \"object\" ? val : {};\n      cm.on(\"cursorActivity\", doMatchBrackets);\n    }\n  });\n\n  CodeMirror.defineExtension(\"matchBrackets\", function() {matchBrackets(this, true);});\n  CodeMirror.defineExtension(\"findMatchingBracket\", function(pos, strict, config){\n    return findMatchingBracket(this, pos, strict, config);\n  });\n  CodeMirror.defineExtension(\"scanForBracket\", function(pos, dir, style, config){\n    return scanForBracket(this, pos, dir, style, config);\n  });\n});\n\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/comment/continuecomment',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  var modes = [\"clike\", \"css\", \"javascript\"];\n\n  for (var i = 0; i < modes.length; ++i)\n    CodeMirror.extendMode(modes[i], {blockCommentContinue: \" * \"});\n\n  function continueComment(cm) {\n    if (cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n    var ranges = cm.listSelections(), mode, inserts = [];\n    for (var i = 0; i < ranges.length; i++) {\n      var pos = ranges[i].head, token = cm.getTokenAt(pos);\n      if (token.type != \"comment\") return CodeMirror.Pass;\n      var modeHere = CodeMirror.innerMode(cm.getMode(), token.state).mode;\n      if (!mode) mode = modeHere;\n      else if (mode != modeHere) return CodeMirror.Pass;\n\n      var insert = null;\n      if (mode.blockCommentStart && mode.blockCommentContinue) {\n        var end = token.string.indexOf(mode.blockCommentEnd);\n        var full = cm.getRange(CodeMirror.Pos(pos.line, 0), CodeMirror.Pos(pos.line, token.end)), found;\n        if (end != -1 && end == token.string.length - mode.blockCommentEnd.length && pos.ch >= end) {\n          // Comment ended, don't continue it\n        } else if (token.string.indexOf(mode.blockCommentStart) == 0) {\n          insert = full.slice(0, token.start);\n          if (!/^\\s*$/.test(insert)) {\n            insert = \"\";\n            for (var j = 0; j < token.start; ++j) insert += \" \";\n          }\n        } else if ((found = full.indexOf(mode.blockCommentContinue)) != -1 &&\n                   found + mode.blockCommentContinue.length > token.start &&\n                   /^\\s*$/.test(full.slice(0, found))) {\n          insert = full.slice(0, found);\n        }\n        if (insert != null) insert += mode.blockCommentContinue;\n      }\n      if (insert == null && mode.lineComment && continueLineCommentEnabled(cm)) {\n        var line = cm.getLine(pos.line), found = line.indexOf(mode.lineComment);\n        if (found > -1) {\n          insert = line.slice(0, found);\n          if (/\\S/.test(insert)) insert = null;\n          else insert += mode.lineComment + line.slice(found + mode.lineComment.length).match(/^\\s*/)[0];\n        }\n      }\n      if (insert == null) return CodeMirror.Pass;\n      inserts[i] = \"\\n\" + insert;\n    }\n\n    cm.operation(function() {\n      for (var i = ranges.length - 1; i >= 0; i--)\n        cm.replaceRange(inserts[i], ranges[i].from(), ranges[i].to(), \"+insert\");\n    });\n  }\n\n  function continueLineCommentEnabled(cm) {\n    var opt = cm.getOption(\"continueComments\");\n    if (opt && typeof opt == \"object\")\n      return opt.continueLineComment !== false;\n    return true;\n  }\n\n  CodeMirror.defineOption(\"continueComments\", null, function(cm, val, prev) {\n    if (prev && prev != CodeMirror.Init)\n      cm.removeKeyMap(\"continueComment\");\n    if (val) {\n      var key = \"Enter\";\n      if (typeof val == \"string\")\n        key = val;\n      else if (typeof val == \"object\" && val.key)\n        key = val.key;\n      var map = {name: \"continueComment\"};\n      map[key] = continueComment;\n      cm.addKeyMap(map);\n    }\n  });\n});\n\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/comment/comment',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  var noOptions = {};\n  var nonWS = /[^\\s\\u00a0]/;\n  var Pos = CodeMirror.Pos;\n\n  function firstNonWS(str) {\n    var found = str.search(nonWS);\n    return found == -1 ? 0 : found;\n  }\n\n  CodeMirror.commands.toggleComment = function(cm) {\n    cm.toggleComment();\n  };\n\n  CodeMirror.defineExtension(\"toggleComment\", function(options) {\n    if (!options) options = noOptions;\n    var cm = this;\n    var minLine = Infinity, ranges = this.listSelections(), mode = null;\n    for (var i = ranges.length - 1; i >= 0; i--) {\n      var from = ranges[i].from(), to = ranges[i].to();\n      if (from.line >= minLine) continue;\n      if (to.line >= minLine) to = Pos(minLine, 0);\n      minLine = from.line;\n      if (mode == null) {\n        if (cm.uncomment(from, to, options)) mode = \"un\";\n        else { cm.lineComment(from, to, options); mode = \"line\"; }\n      } else if (mode == \"un\") {\n        cm.uncomment(from, to, options);\n      } else {\n        cm.lineComment(from, to, options);\n      }\n    }\n  });\n\n  // Rough heuristic to try and detect lines that are part of multi-line string\n  function probablyInsideString(cm, pos, line) {\n    return /\\bstring\\b/.test(cm.getTokenTypeAt(Pos(pos.line, 0))) && !/^[\\'\\\"\\`]/.test(line)\n  }\n\n  function getMode(cm, pos) {\n    var mode = cm.getMode()\n    return mode.useInnerComments === false || !mode.innerMode ? mode : cm.getModeAt(pos)\n  }\n\n  CodeMirror.defineExtension(\"lineComment\", function(from, to, options) {\n    if (!options) options = noOptions;\n    var self = this, mode = getMode(self, from);\n    var firstLine = self.getLine(from.line);\n    if (firstLine == null || probablyInsideString(self, from, firstLine)) return;\n\n    var commentString = options.lineComment || mode.lineComment;\n    if (!commentString) {\n      if (options.blockCommentStart || mode.blockCommentStart) {\n        options.fullLines = true;\n        self.blockComment(from, to, options);\n      }\n      return;\n    }\n\n    var end = Math.min(to.ch != 0 || to.line == from.line ? to.line + 1 : to.line, self.lastLine() + 1);\n    var pad = options.padding == null ? \" \" : options.padding;\n    var blankLines = options.commentBlankLines || from.line == to.line;\n\n    self.operation(function() {\n      if (options.indent) {\n        var baseString = null;\n        for (var i = from.line; i < end; ++i) {\n          var line = self.getLine(i);\n          var whitespace = line.slice(0, firstNonWS(line));\n          if (baseString == null || baseString.length > whitespace.length) {\n            baseString = whitespace;\n          }\n        }\n        for (var i = from.line; i < end; ++i) {\n          var line = self.getLine(i), cut = baseString.length;\n          if (!blankLines && !nonWS.test(line)) continue;\n          if (line.slice(0, cut) != baseString) cut = firstNonWS(line);\n          self.replaceRange(baseString + commentString + pad, Pos(i, 0), Pos(i, cut));\n        }\n      } else {\n        for (var i = from.line; i < end; ++i) {\n          if (blankLines || nonWS.test(self.getLine(i)))\n            self.replaceRange(commentString + pad, Pos(i, 0));\n        }\n      }\n    });\n  });\n\n  CodeMirror.defineExtension(\"blockComment\", function(from, to, options) {\n    if (!options) options = noOptions;\n    var self = this, mode = getMode(self, from);\n    var startString = options.blockCommentStart || mode.blockCommentStart;\n    var endString = options.blockCommentEnd || mode.blockCommentEnd;\n    if (!startString || !endString) {\n      if ((options.lineComment || mode.lineComment) && options.fullLines != false)\n        self.lineComment(from, to, options);\n      return;\n    }\n    if (/\\bcomment\\b/.test(self.getTokenTypeAt(Pos(from.line, 0)))) return\n\n    var end = Math.min(to.line, self.lastLine());\n    if (end != from.line && to.ch == 0 && nonWS.test(self.getLine(end))) --end;\n\n    var pad = options.padding == null ? \" \" : options.padding;\n    if (from.line > end) return;\n\n    self.operation(function() {\n      if (options.fullLines != false) {\n        var lastLineHasText = nonWS.test(self.getLine(end));\n        self.replaceRange(pad + endString, Pos(end));\n        self.replaceRange(startString + pad, Pos(from.line, 0));\n        var lead = options.blockCommentLead || mode.blockCommentLead;\n        if (lead != null) for (var i = from.line + 1; i <= end; ++i)\n          if (i != end || lastLineHasText)\n            self.replaceRange(lead + pad, Pos(i, 0));\n      } else {\n        self.replaceRange(endString, to);\n        self.replaceRange(startString, from);\n      }\n    });\n  });\n\n  CodeMirror.defineExtension(\"uncomment\", function(from, to, options) {\n    if (!options) options = noOptions;\n    var self = this, mode = getMode(self, from);\n    var end = Math.min(to.ch != 0 || to.line == from.line ? to.line : to.line - 1, self.lastLine()), start = Math.min(from.line, end);\n\n    // Try finding line comments\n    var lineString = options.lineComment || mode.lineComment, lines = [];\n    var pad = options.padding == null ? \" \" : options.padding, didSomething;\n    lineComment: {\n      if (!lineString) break lineComment;\n      for (var i = start; i <= end; ++i) {\n        var line = self.getLine(i);\n        var found = line.indexOf(lineString);\n        if (found > -1 && !/comment/.test(self.getTokenTypeAt(Pos(i, found + 1)))) found = -1;\n        if (found == -1 && nonWS.test(line)) break lineComment;\n        if (found > -1 && nonWS.test(line.slice(0, found))) break lineComment;\n        lines.push(line);\n      }\n      self.operation(function() {\n        for (var i = start; i <= end; ++i) {\n          var line = lines[i - start];\n          var pos = line.indexOf(lineString), endPos = pos + lineString.length;\n          if (pos < 0) continue;\n          if (line.slice(endPos, endPos + pad.length) == pad) endPos += pad.length;\n          didSomething = true;\n          self.replaceRange(\"\", Pos(i, pos), Pos(i, endPos));\n        }\n      });\n      if (didSomething) return true;\n    }\n\n    // Try block comments\n    var startString = options.blockCommentStart || mode.blockCommentStart;\n    var endString = options.blockCommentEnd || mode.blockCommentEnd;\n    if (!startString || !endString) return false;\n    var lead = options.blockCommentLead || mode.blockCommentLead;\n    var startLine = self.getLine(start), open = startLine.indexOf(startString)\n    if (open == -1) return false\n    var endLine = end == start ? startLine : self.getLine(end)\n    var close = endLine.indexOf(endString, end == start ? open + startString.length : 0);\n    if (close == -1 && start != end) {\n      endLine = self.getLine(--end);\n      close = endLine.indexOf(endString);\n    }\n    var insideStart = Pos(start, open + 1), insideEnd = Pos(end, close + 1)\n    if (close == -1 ||\n        !/comment/.test(self.getTokenTypeAt(insideStart)) ||\n        !/comment/.test(self.getTokenTypeAt(insideEnd)) ||\n        self.getRange(insideStart, insideEnd, \"\\n\").indexOf(endString) > -1)\n      return false;\n\n    // Avoid killing block comments completely outside the selection.\n    // Positions of the last startString before the start of the selection, and the first endString after it.\n    var lastStart = startLine.lastIndexOf(startString, from.ch);\n    var firstEnd = lastStart == -1 ? -1 : startLine.slice(0, from.ch).indexOf(endString, lastStart + startString.length);\n    if (lastStart != -1 && firstEnd != -1 && firstEnd + endString.length != from.ch) return false;\n    // Positions of the first endString after the end of the selection, and the last startString before it.\n    firstEnd = endLine.indexOf(endString, to.ch);\n    var almostLastStart = endLine.slice(to.ch).lastIndexOf(startString, firstEnd - to.ch);\n    lastStart = (firstEnd == -1 || almostLastStart == -1) ? -1 : to.ch + almostLastStart;\n    if (firstEnd != -1 && lastStart != -1 && lastStart != to.ch) return false;\n\n    self.operation(function() {\n      self.replaceRange(\"\", Pos(end, close - (pad && endLine.slice(close - pad.length, close) == pad ? pad.length : 0)),\n                        Pos(end, close + endString.length));\n      var openEnd = open + startString.length;\n      if (pad && startLine.slice(openEnd, openEnd + pad.length) == pad) openEnd += pad.length;\n      self.replaceRange(\"\", Pos(start, open), Pos(start, openEnd));\n      if (lead) for (var i = start + 1; i <= end; ++i) {\n        var line = self.getLine(i), found = line.indexOf(lead);\n        if (found == -1 || nonWS.test(line.slice(0, found))) continue;\n        var foundEnd = found + lead.length;\n        if (pad && line.slice(foundEnd, foundEnd + pad.length) == pad) foundEnd += pad.length;\n        self.replaceRange(\"\", Pos(i, found), Pos(i, foundEnd));\n      }\n    });\n    return true;\n  });\n});\n\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/hint/show-hint',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  var HINT_ELEMENT_CLASS        = \"CodeMirror-hint\";\n  var ACTIVE_HINT_ELEMENT_CLASS = \"CodeMirror-hint-active\";\n\n  // This is the old interface, kept around for now to stay\n  // backwards-compatible.\n  CodeMirror.showHint = function(cm, getHints, options) {\n    if (!getHints) return cm.showHint(options);\n    if (options && options.async) getHints.async = true;\n    var newOpts = {hint: getHints};\n    if (options) for (var prop in options) newOpts[prop] = options[prop];\n    return cm.showHint(newOpts);\n  };\n\n  CodeMirror.defineExtension(\"showHint\", function(options) {\n    options = parseOptions(this, this.getCursor(\"start\"), options);\n    var selections = this.listSelections()\n    if (selections.length > 1) return;\n    // By default, don't allow completion when something is selected.\n    // A hint function can have a `supportsSelection` property to\n    // indicate that it can handle selections.\n    if (this.somethingSelected()) {\n      if (!options.hint.supportsSelection) return;\n      // Don't try with cross-line selections\n      for (var i = 0; i < selections.length; i++)\n        if (selections[i].head.line != selections[i].anchor.line) return;\n    }\n\n    if (this.state.completionActive) this.state.completionActive.close();\n    var completion = this.state.completionActive = new Completion(this, options);\n    if (!completion.options.hint) return;\n\n    CodeMirror.signal(this, \"startCompletion\", this);\n    completion.update(true);\n  });\n\n  function Completion(cm, options) {\n    this.cm = cm;\n    this.options = options;\n    this.widget = null;\n    this.debounce = 0;\n    this.tick = 0;\n    this.startPos = this.cm.getCursor(\"start\");\n    this.startLen = this.cm.getLine(this.startPos.line).length - this.cm.getSelection().length;\n\n    var self = this;\n    cm.on(\"cursorActivity\", this.activityFunc = function() { self.cursorActivity(); });\n  }\n\n  var requestAnimationFrame = window.requestAnimationFrame || function(fn) {\n    return setTimeout(fn, 1000/60);\n  };\n  var cancelAnimationFrame = window.cancelAnimationFrame || clearTimeout;\n\n  Completion.prototype = {\n    close: function() {\n      if (!this.active()) return;\n      this.cm.state.completionActive = null;\n      this.tick = null;\n      this.cm.off(\"cursorActivity\", this.activityFunc);\n\n      if (this.widget && this.data) CodeMirror.signal(this.data, \"close\");\n      if (this.widget) this.widget.close();\n      CodeMirror.signal(this.cm, \"endCompletion\", this.cm);\n    },\n\n    active: function() {\n      return this.cm.state.completionActive == this;\n    },\n\n    pick: function(data, i) {\n      var completion = data.list[i];\n      if (completion.hint) completion.hint(this.cm, data, completion);\n      else this.cm.replaceRange(getText(completion), completion.from || data.from,\n                                completion.to || data.to, \"complete\");\n      CodeMirror.signal(data, \"pick\", completion);\n      this.close();\n    },\n\n    cursorActivity: function() {\n      if (this.debounce) {\n        cancelAnimationFrame(this.debounce);\n        this.debounce = 0;\n      }\n\n      var pos = this.cm.getCursor(), line = this.cm.getLine(pos.line);\n      if (pos.line != this.startPos.line || line.length - pos.ch != this.startLen - this.startPos.ch ||\n          pos.ch < this.startPos.ch || this.cm.somethingSelected() ||\n          (pos.ch && this.options.closeCharacters.test(line.charAt(pos.ch - 1)))) {\n        this.close();\n      } else {\n        var self = this;\n        this.debounce = requestAnimationFrame(function() {self.update();});\n        if (this.widget) this.widget.disable();\n      }\n    },\n\n    update: function(first) {\n      if (this.tick == null) return\n      var self = this, myTick = ++this.tick\n      fetchHints(this.options.hint, this.cm, this.options, function(data) {\n        if (self.tick == myTick) self.finishUpdate(data, first)\n      })\n    },\n\n    finishUpdate: function(data, first) {\n      if (this.data) CodeMirror.signal(this.data, \"update\");\n\n      var picked = (this.widget && this.widget.picked) || (first && this.options.completeSingle);\n      if (this.widget) this.widget.close();\n\n      if (data && this.data && isNewCompletion(this.data, data)) return;\n      this.data = data;\n\n      if (data && data.list.length) {\n        if (picked && data.list.length == 1) {\n          this.pick(data, 0);\n        } else {\n          this.widget = new Widget(this, data);\n          CodeMirror.signal(data, \"shown\");\n        }\n      }\n    }\n  };\n\n  function isNewCompletion(old, nw) {\n    var moved = CodeMirror.cmpPos(nw.from, old.from)\n    return moved > 0 && old.to.ch - old.from.ch != nw.to.ch - nw.from.ch\n  }\n\n  function parseOptions(cm, pos, options) {\n    var editor = cm.options.hintOptions;\n    var out = {};\n    for (var prop in defaultOptions) out[prop] = defaultOptions[prop];\n    if (editor) for (var prop in editor)\n      if (editor[prop] !== undefined) out[prop] = editor[prop];\n    if (options) for (var prop in options)\n      if (options[prop] !== undefined) out[prop] = options[prop];\n    if (out.hint.resolve) out.hint = out.hint.resolve(cm, pos)\n    return out;\n  }\n\n  function getText(completion) {\n    if (typeof completion == \"string\") return completion;\n    else return completion.text;\n  }\n\n  function buildKeyMap(completion, handle) {\n    var baseMap = {\n      Up: function() {handle.moveFocus(-1);},\n      Down: function() {handle.moveFocus(1);},\n      PageUp: function() {handle.moveFocus(-handle.menuSize() + 1, true);},\n      PageDown: function() {handle.moveFocus(handle.menuSize() - 1, true);},\n      Home: function() {handle.setFocus(0);},\n      End: function() {handle.setFocus(handle.length - 1);},\n      Enter: handle.pick,\n      Tab: handle.pick,\n      Esc: handle.close\n    };\n    var custom = completion.options.customKeys;\n    var ourMap = custom ? {} : baseMap;\n    function addBinding(key, val) {\n      var bound;\n      if (typeof val != \"string\")\n        bound = function(cm) { return val(cm, handle); };\n      // This mechanism is deprecated\n      else if (baseMap.hasOwnProperty(val))\n        bound = baseMap[val];\n      else\n        bound = val;\n      ourMap[key] = bound;\n    }\n    if (custom)\n      for (var key in custom) if (custom.hasOwnProperty(key))\n        addBinding(key, custom[key]);\n    var extra = completion.options.extraKeys;\n    if (extra)\n      for (var key in extra) if (extra.hasOwnProperty(key))\n        addBinding(key, extra[key]);\n    return ourMap;\n  }\n\n  function getHintElement(hintsElement, el) {\n    while (el && el != hintsElement) {\n      if (el.nodeName.toUpperCase() === \"LI\" && el.parentNode == hintsElement) return el;\n      el = el.parentNode;\n    }\n  }\n\n  function Widget(completion, data) {\n    this.completion = completion;\n    this.data = data;\n    this.picked = false;\n    var widget = this, cm = completion.cm;\n\n    var hints = this.hints = document.createElement(\"ul\");\n    hints.className = \"CodeMirror-hints\";\n    this.selectedHint = data.selectedHint || 0;\n\n    var completions = data.list;\n    for (var i = 0; i < completions.length; ++i) {\n      var elt = hints.appendChild(document.createElement(\"li\")), cur = completions[i];\n      var className = HINT_ELEMENT_CLASS + (i != this.selectedHint ? \"\" : \" \" + ACTIVE_HINT_ELEMENT_CLASS);\n      if (cur.className != null) className = cur.className + \" \" + className;\n      elt.className = className;\n      if (cur.render) cur.render(elt, data, cur);\n      else elt.appendChild(document.createTextNode(cur.displayText || getText(cur)));\n      elt.hintId = i;\n    }\n\n    var pos = cm.cursorCoords(completion.options.alignWithWord ? data.from : null);\n    var left = pos.left, top = pos.bottom, below = true;\n    hints.style.left = left + \"px\";\n    hints.style.top = top + \"px\";\n    // If we're at the edge of the screen, then we want the menu to appear on the left of the cursor.\n    var winW = window.innerWidth || Math.max(document.body.offsetWidth, document.documentElement.offsetWidth);\n    var winH = window.innerHeight || Math.max(document.body.offsetHeight, document.documentElement.offsetHeight);\n    (completion.options.container || document.body).appendChild(hints);\n    var box = hints.getBoundingClientRect(), overlapY = box.bottom - winH;\n    var scrolls = hints.scrollHeight > hints.clientHeight + 1\n    var startScroll = cm.getScrollInfo();\n\n    if (overlapY > 0) {\n      var height = box.bottom - box.top, curTop = pos.top - (pos.bottom - box.top);\n      if (curTop - height > 0) { // Fits above cursor\n        hints.style.top = (top = pos.top - height) + \"px\";\n        below = false;\n      } else if (height > winH) {\n        hints.style.height = (winH - 5) + \"px\";\n        hints.style.top = (top = pos.bottom - box.top) + \"px\";\n        var cursor = cm.getCursor();\n        if (data.from.ch != cursor.ch) {\n          pos = cm.cursorCoords(cursor);\n          hints.style.left = (left = pos.left) + \"px\";\n          box = hints.getBoundingClientRect();\n        }\n      }\n    }\n    var overlapX = box.right - winW;\n    if (overlapX > 0) {\n      if (box.right - box.left > winW) {\n        hints.style.width = (winW - 5) + \"px\";\n        overlapX -= (box.right - box.left) - winW;\n      }\n      hints.style.left = (left = pos.left - overlapX) + \"px\";\n    }\n    if (scrolls) for (var node = hints.firstChild; node; node = node.nextSibling)\n      node.style.paddingRight = cm.display.nativeBarWidth + \"px\"\n\n    cm.addKeyMap(this.keyMap = buildKeyMap(completion, {\n      moveFocus: function(n, avoidWrap) { widget.changeActive(widget.selectedHint + n, avoidWrap); },\n      setFocus: function(n) { widget.changeActive(n); },\n      menuSize: function() { return widget.screenAmount(); },\n      length: completions.length,\n      close: function() { completion.close(); },\n      pick: function() { widget.pick(); },\n      data: data\n    }));\n\n    if (completion.options.closeOnUnfocus) {\n      var closingOnBlur;\n      cm.on(\"blur\", this.onBlur = function() { closingOnBlur = setTimeout(function() { completion.close(); }, 100); });\n      cm.on(\"focus\", this.onFocus = function() { clearTimeout(closingOnBlur); });\n    }\n\n    cm.on(\"scroll\", this.onScroll = function() {\n      var curScroll = cm.getScrollInfo(), editor = cm.getWrapperElement().getBoundingClientRect();\n      var newTop = top + startScroll.top - curScroll.top;\n      var point = newTop - (window.pageYOffset || (document.documentElement || document.body).scrollTop);\n      if (!below) point += hints.offsetHeight;\n      if (point <= editor.top || point >= editor.bottom) return completion.close();\n      hints.style.top = newTop + \"px\";\n      hints.style.left = (left + startScroll.left - curScroll.left) + \"px\";\n    });\n\n    CodeMirror.on(hints, \"dblclick\", function(e) {\n      var t = getHintElement(hints, e.target || e.srcElement);\n      if (t && t.hintId != null) {widget.changeActive(t.hintId); widget.pick();}\n    });\n\n    CodeMirror.on(hints, \"click\", function(e) {\n      var t = getHintElement(hints, e.target || e.srcElement);\n      if (t && t.hintId != null) {\n        widget.changeActive(t.hintId);\n        if (completion.options.completeOnSingleClick) widget.pick();\n      }\n    });\n\n    CodeMirror.on(hints, \"mousedown\", function() {\n      setTimeout(function(){cm.focus();}, 20);\n    });\n\n    CodeMirror.signal(data, \"select\", completions[0], hints.firstChild);\n    return true;\n  }\n\n  Widget.prototype = {\n    close: function() {\n      if (this.completion.widget != this) return;\n      this.completion.widget = null;\n      this.hints.parentNode.removeChild(this.hints);\n      this.completion.cm.removeKeyMap(this.keyMap);\n\n      var cm = this.completion.cm;\n      if (this.completion.options.closeOnUnfocus) {\n        cm.off(\"blur\", this.onBlur);\n        cm.off(\"focus\", this.onFocus);\n      }\n      cm.off(\"scroll\", this.onScroll);\n    },\n\n    disable: function() {\n      this.completion.cm.removeKeyMap(this.keyMap);\n      var widget = this;\n      this.keyMap = {Enter: function() { widget.picked = true; }};\n      this.completion.cm.addKeyMap(this.keyMap);\n    },\n\n    pick: function() {\n      this.completion.pick(this.data, this.selectedHint);\n    },\n\n    changeActive: function(i, avoidWrap) {\n      if (i >= this.data.list.length)\n        i = avoidWrap ? this.data.list.length - 1 : 0;\n      else if (i < 0)\n        i = avoidWrap ? 0  : this.data.list.length - 1;\n      if (this.selectedHint == i) return;\n      var node = this.hints.childNodes[this.selectedHint];\n      node.className = node.className.replace(\" \" + ACTIVE_HINT_ELEMENT_CLASS, \"\");\n      node = this.hints.childNodes[this.selectedHint = i];\n      node.className += \" \" + ACTIVE_HINT_ELEMENT_CLASS;\n      if (node.offsetTop < this.hints.scrollTop)\n        this.hints.scrollTop = node.offsetTop - 3;\n      else if (node.offsetTop + node.offsetHeight > this.hints.scrollTop + this.hints.clientHeight)\n        this.hints.scrollTop = node.offsetTop + node.offsetHeight - this.hints.clientHeight + 3;\n      CodeMirror.signal(this.data, \"select\", this.data.list[this.selectedHint], node);\n    },\n\n    screenAmount: function() {\n      return Math.floor(this.hints.clientHeight / this.hints.firstChild.offsetHeight) || 1;\n    }\n  };\n\n  function applicableHelpers(cm, helpers) {\n    if (!cm.somethingSelected()) return helpers\n    var result = []\n    for (var i = 0; i < helpers.length; i++)\n      if (helpers[i].supportsSelection) result.push(helpers[i])\n    return result\n  }\n\n  function fetchHints(hint, cm, options, callback) {\n    if (hint.async) {\n      hint(cm, callback, options)\n    } else {\n      var result = hint(cm, options)\n      if (result && result.then) result.then(callback)\n      else callback(result)\n    }\n  }\n\n  function resolveAutoHints(cm, pos) {\n    var helpers = cm.getHelpers(pos, \"hint\"), words\n    if (helpers.length) {\n      var resolved = function(cm, callback, options) {\n        var app = applicableHelpers(cm, helpers);\n        function run(i) {\n          if (i == app.length) return callback(null)\n          fetchHints(app[i], cm, options, function(result) {\n            if (result && result.list.length > 0) callback(result)\n            else run(i + 1)\n          })\n        }\n        run(0)\n      }\n      resolved.async = true\n      resolved.supportsSelection = true\n      return resolved\n    } else if (words = cm.getHelper(cm.getCursor(), \"hintWords\")) {\n      return function(cm) { return CodeMirror.hint.fromList(cm, {words: words}) }\n    } else if (CodeMirror.hint.anyword) {\n      return function(cm, options) { return CodeMirror.hint.anyword(cm, options) }\n    } else {\n      return function() {}\n    }\n  }\n\n  CodeMirror.registerHelper(\"hint\", \"auto\", {\n    resolve: resolveAutoHints\n  });\n\n  CodeMirror.registerHelper(\"hint\", \"fromList\", function(cm, options) {\n    var cur = cm.getCursor(), token = cm.getTokenAt(cur);\n    var to = CodeMirror.Pos(cur.line, token.end);\n    if (token.string && /\\w/.test(token.string[token.string.length - 1])) {\n      var term = token.string, from = CodeMirror.Pos(cur.line, token.start);\n    } else {\n      var term = \"\", from = to;\n    }\n    var found = [];\n    for (var i = 0; i < options.words.length; i++) {\n      var word = options.words[i];\n      if (word.slice(0, term.length) == term)\n        found.push(word);\n    }\n\n    if (found.length) return {list: found, from: from, to: to};\n  });\n\n  CodeMirror.commands.autocomplete = CodeMirror.showHint;\n\n  var defaultOptions = {\n    hint: CodeMirror.hint.auto,\n    completeSingle: true,\n    alignWithWord: true,\n    closeCharacters: /[\\s()\\[\\]{};:>,]/,\n    closeOnUnfocus: true,\n    completeOnSingleClick: true,\n    container: null,\n    customKeys: null,\n    extraKeys: null\n  };\n\n  CodeMirror.defineOption(\"hintOptions\", null);\n});\n\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/hint/anyword-hint',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  var WORD = /[\\w$]+/, RANGE = 500;\n\n  CodeMirror.registerHelper(\"hint\", \"anyword\", function(editor, options) {\n    var word = options && options.word || WORD;\n    var range = options && options.range || RANGE;\n    var cur = editor.getCursor(), curLine = editor.getLine(cur.line);\n    var end = cur.ch, start = end;\n    while (start && word.test(curLine.charAt(start - 1))) --start;\n    var curWord = start != end && curLine.slice(start, end);\n\n    var list = options && options.list || [], seen = {};\n    var re = new RegExp(word.source, \"g\");\n    for (var dir = -1; dir <= 1; dir += 2) {\n      var line = cur.line, endLine = Math.min(Math.max(line + dir * range, editor.firstLine()), editor.lastLine()) + dir;\n      for (; line != endLine; line += dir) {\n        var text = editor.getLine(line), m;\n        while (m = re.exec(text)) {\n          if (line == cur.line && m[0] === curWord) continue;\n          if ((!curWord || m[0].lastIndexOf(curWord, 0) == 0) && !Object.prototype.hasOwnProperty.call(seen, m[0])) {\n            seen[m[0]] = true;\n            list.push(m[0]);\n          }\n        }\n      }\n    }\n    return {list: list, from: CodeMirror.Pos(cur.line, start), to: CodeMirror.Pos(cur.line, end)};\n  });\n});\n\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/display/placeholder',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  CodeMirror.defineOption(\"placeholder\", \"\", function(cm, val, old) {\n    var prev = old && old != CodeMirror.Init;\n    if (val && !prev) {\n      cm.on(\"blur\", onBlur);\n      cm.on(\"change\", onChange);\n      cm.on(\"swapDoc\", onChange);\n      onChange(cm);\n    } else if (!val && prev) {\n      cm.off(\"blur\", onBlur);\n      cm.off(\"change\", onChange);\n      cm.off(\"swapDoc\", onChange);\n      clearPlaceholder(cm);\n      var wrapper = cm.getWrapperElement();\n      wrapper.className = wrapper.className.replace(\" CodeMirror-empty\", \"\");\n    }\n\n    if (val && !cm.hasFocus()) onBlur(cm);\n  });\n\n  function clearPlaceholder(cm) {\n    if (cm.state.placeholder) {\n      cm.state.placeholder.parentNode.removeChild(cm.state.placeholder);\n      cm.state.placeholder = null;\n    }\n  }\n  function setPlaceholder(cm) {\n    clearPlaceholder(cm);\n    var elt = cm.state.placeholder = document.createElement(\"pre\");\n    elt.style.cssText = \"height: 0; overflow: visible\";\n    elt.className = \"CodeMirror-placeholder\";\n    var placeHolder = cm.getOption(\"placeholder\")\n    if (typeof placeHolder == \"string\") placeHolder = document.createTextNode(placeHolder)\n    elt.appendChild(placeHolder)\n    cm.display.lineSpace.insertBefore(elt, cm.display.lineSpace.firstChild);\n  }\n\n  function onBlur(cm) {\n    if (isEmpty(cm)) setPlaceholder(cm);\n  }\n  function onChange(cm) {\n    var wrapper = cm.getWrapperElement(), empty = isEmpty(cm);\n    wrapper.className = wrapper.className.replace(\" CodeMirror-empty\", \"\") + (empty ? \" CodeMirror-empty\" : \"\");\n\n    if (empty) setPlaceholder(cm);\n    else clearPlaceholder(cm);\n  }\n\n  function isEmpty(cm) {\n    return (cm.lineCount() === 1) && (cm.getLine(0) === \"\");\n  }\n});\n\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/runmode/runmode',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.runMode = function(string, modespec, callback, options) {\n  var mode = CodeMirror.getMode(CodeMirror.defaults, modespec);\n  var ie = /MSIE \\d/.test(navigator.userAgent);\n  var ie_lt9 = ie && (document.documentMode == null || document.documentMode < 9);\n\n  if (callback.appendChild) {\n    var tabSize = (options && options.tabSize) || CodeMirror.defaults.tabSize;\n    var node = callback, col = 0;\n    node.innerHTML = \"\";\n    callback = function(text, style) {\n      if (text == \"\\n\") {\n        // Emitting LF or CRLF on IE8 or earlier results in an incorrect display.\n        // Emitting a carriage return makes everything ok.\n        node.appendChild(document.createTextNode(ie_lt9 ? '\\r' : text));\n        col = 0;\n        return;\n      }\n      var content = \"\";\n      // replace tabs\n      for (var pos = 0;;) {\n        var idx = text.indexOf(\"\\t\", pos);\n        if (idx == -1) {\n          content += text.slice(pos);\n          col += text.length - pos;\n          break;\n        } else {\n          col += idx - pos;\n          content += text.slice(pos, idx);\n          var size = tabSize - col % tabSize;\n          col += size;\n          for (var i = 0; i < size; ++i) content += \" \";\n          pos = idx + 1;\n        }\n      }\n\n      if (style) {\n        var sp = node.appendChild(document.createElement(\"span\"));\n        sp.className = \"cm-\" + style.replace(/ +/g, \" cm-\");\n        sp.appendChild(document.createTextNode(content));\n      } else {\n        node.appendChild(document.createTextNode(content));\n      }\n    };\n  }\n\n  var lines = CodeMirror.splitLines(string), state = (options && options.state) || CodeMirror.startState(mode);\n  for (var i = 0, e = lines.length; i < e; ++i) {\n    if (i) callback(\"\\n\");\n    var stream = new CodeMirror.StringStream(lines[i]);\n    if (!stream.string && mode.blankLine) mode.blankLine(state);\n    while (!stream.eol()) {\n      var style = mode.token(stream, state);\n      callback(stream.current(), style, i, stream.start, state);\n      stream.start = stream.pos;\n    }\n  }\n};\n\n});\n\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/search/searchcursor',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n  var Pos = CodeMirror.Pos;\n\n  function SearchCursor(doc, query, pos, caseFold) {\n    this.atOccurrence = false; this.doc = doc;\n    if (caseFold == null && typeof query == \"string\") caseFold = false;\n\n    pos = pos ? doc.clipPos(pos) : Pos(0, 0);\n    this.pos = {from: pos, to: pos};\n\n    // The matches method is filled in based on the type of query.\n    // It takes a position and a direction, and returns an object\n    // describing the next occurrence of the query, or null if no\n    // more matches were found.\n    if (typeof query != \"string\") { // Regexp match\n      if (!query.global) query = new RegExp(query.source, query.ignoreCase ? \"ig\" : \"g\");\n      this.matches = function(reverse, pos) {\n        if (reverse) {\n          query.lastIndex = 0;\n          var line = doc.getLine(pos.line).slice(0, pos.ch), cutOff = 0, match, start;\n          for (;;) {\n            query.lastIndex = cutOff;\n            var newMatch = query.exec(line);\n            if (!newMatch) break;\n            match = newMatch;\n            start = match.index;\n            cutOff = match.index + (match[0].length || 1);\n            if (cutOff == line.length) break;\n          }\n          var matchLen = (match && match[0].length) || 0;\n          if (!matchLen) {\n            if (start == 0 && line.length == 0) {match = undefined;}\n            else if (start != doc.getLine(pos.line).length) {\n              matchLen++;\n            }\n          }\n        } else {\n          query.lastIndex = pos.ch;\n          var line = doc.getLine(pos.line), match = query.exec(line);\n          var matchLen = (match && match[0].length) || 0;\n          var start = match && match.index;\n          if (start + matchLen != line.length && !matchLen) matchLen = 1;\n        }\n        if (match && matchLen)\n          return {from: Pos(pos.line, start),\n                  to: Pos(pos.line, start + matchLen),\n                  match: match};\n      };\n    } else { // String query\n      var origQuery = query;\n      if (caseFold) query = query.toLowerCase();\n      var fold = caseFold ? function(str){return str.toLowerCase();} : function(str){return str;};\n      var target = query.split(\"\\n\");\n      // Different methods for single-line and multi-line queries\n      if (target.length == 1) {\n        if (!query.length) {\n          // Empty string would match anything and never progress, so\n          // we define it to match nothing instead.\n          this.matches = function() {};\n        } else {\n          this.matches = function(reverse, pos) {\n            if (reverse) {\n              var orig = doc.getLine(pos.line).slice(0, pos.ch), line = fold(orig);\n              var match = line.lastIndexOf(query);\n              if (match > -1) {\n                match = adjustPos(orig, line, match);\n                return {from: Pos(pos.line, match), to: Pos(pos.line, match + origQuery.length)};\n              }\n             } else {\n               var orig = doc.getLine(pos.line).slice(pos.ch), line = fold(orig);\n               var match = line.indexOf(query);\n               if (match > -1) {\n                 match = adjustPos(orig, line, match) + pos.ch;\n                 return {from: Pos(pos.line, match), to: Pos(pos.line, match + origQuery.length)};\n               }\n            }\n          };\n        }\n      } else {\n        var origTarget = origQuery.split(\"\\n\");\n        this.matches = function(reverse, pos) {\n          var last = target.length - 1;\n          if (reverse) {\n            if (pos.line - (target.length - 1) < doc.firstLine()) return;\n            if (fold(doc.getLine(pos.line).slice(0, origTarget[last].length)) != target[target.length - 1]) return;\n            var to = Pos(pos.line, origTarget[last].length);\n            for (var ln = pos.line - 1, i = last - 1; i >= 1; --i, --ln)\n              if (target[i] != fold(doc.getLine(ln))) return;\n            var line = doc.getLine(ln), cut = line.length - origTarget[0].length;\n            if (fold(line.slice(cut)) != target[0]) return;\n            return {from: Pos(ln, cut), to: to};\n          } else {\n            if (pos.line + (target.length - 1) > doc.lastLine()) return;\n            var line = doc.getLine(pos.line), cut = line.length - origTarget[0].length;\n            if (fold(line.slice(cut)) != target[0]) return;\n            var from = Pos(pos.line, cut);\n            for (var ln = pos.line + 1, i = 1; i < last; ++i, ++ln)\n              if (target[i] != fold(doc.getLine(ln))) return;\n            if (fold(doc.getLine(ln).slice(0, origTarget[last].length)) != target[last]) return;\n            return {from: from, to: Pos(ln, origTarget[last].length)};\n          }\n        };\n      }\n    }\n  }\n\n  SearchCursor.prototype = {\n    findNext: function() {return this.find(false);},\n    findPrevious: function() {return this.find(true);},\n\n    find: function(reverse) {\n      var self = this, pos = this.doc.clipPos(reverse ? this.pos.from : this.pos.to);\n      function savePosAndFail(line) {\n        var pos = Pos(line, 0);\n        self.pos = {from: pos, to: pos};\n        self.atOccurrence = false;\n        return false;\n      }\n\n      for (;;) {\n        if (this.pos = this.matches(reverse, pos)) {\n          this.atOccurrence = true;\n          return this.pos.match || true;\n        }\n        if (reverse) {\n          if (!pos.line) return savePosAndFail(0);\n          pos = Pos(pos.line-1, this.doc.getLine(pos.line-1).length);\n        }\n        else {\n          var maxLine = this.doc.lineCount();\n          if (pos.line == maxLine - 1) return savePosAndFail(maxLine);\n          pos = Pos(pos.line + 1, 0);\n        }\n      }\n    },\n\n    from: function() {if (this.atOccurrence) return this.pos.from;},\n    to: function() {if (this.atOccurrence) return this.pos.to;},\n\n    replace: function(newText, origin) {\n      if (!this.atOccurrence) return;\n      var lines = CodeMirror.splitLines(newText);\n      this.doc.replaceRange(lines, this.pos.from, this.pos.to, origin);\n      this.pos.to = Pos(this.pos.from.line + lines.length - 1,\n                        lines[lines.length - 1].length + (lines.length == 1 ? this.pos.from.ch : 0));\n    }\n  };\n\n  // Maps a position in a case-folded line back to a position in the original line\n  // (compensating for codepoints increasing in number during folding)\n  function adjustPos(orig, folded, pos) {\n    if (orig.length == folded.length) return pos;\n    for (var pos1 = Math.min(pos, orig.length);;) {\n      var len1 = orig.slice(0, pos1).toLowerCase().length;\n      if (len1 < pos) ++pos1;\n      else if (len1 > pos) --pos1;\n      else return pos1;\n    }\n  }\n\n  CodeMirror.defineExtension(\"getSearchCursor\", function(query, pos, caseFold) {\n    return new SearchCursor(this.doc, query, pos, caseFold);\n  });\n  CodeMirror.defineDocExtension(\"getSearchCursor\", function(query, pos, caseFold) {\n    return new SearchCursor(this, query, pos, caseFold);\n  });\n\n  CodeMirror.defineExtension(\"selectMatches\", function(query, caseFold) {\n    var ranges = [];\n    var cur = this.getSearchCursor(query, this.getCursor(\"from\"), caseFold);\n    while (cur.findNext()) {\n      if (CodeMirror.cmpPos(cur.to(), this.getCursor(\"to\")) > 0) break;\n      ranges.push({anchor: cur.from(), head: cur.to()});\n    }\n    if (ranges.length)\n      this.setSelections(ranges, 0);\n  });\n});\n\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n// Open simple dialogs on top of an editor. Relies on dialog.css.\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/dialog/dialog',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  function dialogDiv(cm, template, bottom) {\n    var wrap = cm.getWrapperElement();\n    var dialog;\n    dialog = wrap.appendChild(document.createElement(\"div\"));\n    if (bottom)\n      dialog.className = \"CodeMirror-dialog CodeMirror-dialog-bottom\";\n    else\n      dialog.className = \"CodeMirror-dialog CodeMirror-dialog-top\";\n\n    if (typeof template == \"string\") {\n      dialog.innerHTML = template;\n    } else { // Assuming it's a detached DOM element.\n      dialog.appendChild(template);\n    }\n    return dialog;\n  }\n\n  function closeNotification(cm, newVal) {\n    if (cm.state.currentNotificationClose)\n      cm.state.currentNotificationClose();\n    cm.state.currentNotificationClose = newVal;\n  }\n\n  CodeMirror.defineExtension(\"openDialog\", function(template, callback, options) {\n    if (!options) options = {};\n\n    closeNotification(this, null);\n\n    var dialog = dialogDiv(this, template, options.bottom);\n    var closed = false, me = this;\n    function close(newVal) {\n      if (typeof newVal == 'string') {\n        inp.value = newVal;\n      } else {\n        if (closed) return;\n        closed = true;\n        dialog.parentNode.removeChild(dialog);\n        me.focus();\n\n        if (options.onClose) options.onClose(dialog);\n      }\n    }\n\n    var inp = dialog.getElementsByTagName(\"input\")[0], button;\n    if (inp) {\n      inp.focus();\n\n      if (options.value) {\n        inp.value = options.value;\n        if (options.selectValueOnOpen !== false) {\n          inp.select();\n        }\n      }\n\n      if (options.onInput)\n        CodeMirror.on(inp, \"input\", function(e) { options.onInput(e, inp.value, close);});\n      if (options.onKeyUp)\n        CodeMirror.on(inp, \"keyup\", function(e) {options.onKeyUp(e, inp.value, close);});\n\n      CodeMirror.on(inp, \"keydown\", function(e) {\n        if (options && options.onKeyDown && options.onKeyDown(e, inp.value, close)) { return; }\n        if (e.keyCode == 27 || (options.closeOnEnter !== false && e.keyCode == 13)) {\n          inp.blur();\n          CodeMirror.e_stop(e);\n          close();\n        }\n        if (e.keyCode == 13) callback(inp.value, e);\n      });\n\n      if (options.closeOnBlur !== false) CodeMirror.on(inp, \"blur\", close);\n    } else if (button = dialog.getElementsByTagName(\"button\")[0]) {\n      CodeMirror.on(button, \"click\", function() {\n        close();\n        me.focus();\n      });\n\n      if (options.closeOnBlur !== false) CodeMirror.on(button, \"blur\", close);\n\n      button.focus();\n    }\n    return close;\n  });\n\n  CodeMirror.defineExtension(\"openConfirm\", function(template, callbacks, options) {\n    closeNotification(this, null);\n    var dialog = dialogDiv(this, template, options && options.bottom);\n    var buttons = dialog.getElementsByTagName(\"button\");\n    var closed = false, me = this, blurring = 1;\n    function close() {\n      if (closed) return;\n      closed = true;\n      dialog.parentNode.removeChild(dialog);\n      me.focus();\n    }\n    buttons[0].focus();\n    for (var i = 0; i < buttons.length; ++i) {\n      var b = buttons[i];\n      (function(callback) {\n        CodeMirror.on(b, \"click\", function(e) {\n          CodeMirror.e_preventDefault(e);\n          close();\n          if (callback) callback(me);\n        });\n      })(callbacks[i]);\n      CodeMirror.on(b, \"blur\", function() {\n        --blurring;\n        setTimeout(function() { if (blurring <= 0) close(); }, 200);\n      });\n      CodeMirror.on(b, \"focus\", function() { ++blurring; });\n    }\n  });\n\n  /*\n   * openNotification\n   * Opens a notification, that can be closed with an optional timer\n   * (default 5000ms timer) and always closes on click.\n   *\n   * If a notification is opened while another is opened, it will close the\n   * currently opened one and open the new one immediately.\n   */\n  CodeMirror.defineExtension(\"openNotification\", function(template, options) {\n    closeNotification(this, close);\n    var dialog = dialogDiv(this, template, options && options.bottom);\n    var closed = false, doneTimer;\n    var duration = options && typeof options.duration !== \"undefined\" ? options.duration : 5000;\n\n    function close() {\n      if (closed) return;\n      closed = true;\n      clearTimeout(doneTimer);\n      dialog.parentNode.removeChild(dialog);\n    }\n\n    CodeMirror.on(dialog, 'click', function(e) {\n      CodeMirror.e_preventDefault(e);\n      close();\n    });\n\n    if (duration)\n      doneTimer = setTimeout(close, duration);\n\n    return close;\n  });\n});\n\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n// Define search commands. Depends on dialog.js or another\n// implementation of the openDialog method.\n\n// Replace works a little oddly -- it will do the replace on the next\n// Ctrl-G (or whatever is bound to findNext) press. You prevent a\n// replace by making sure the match is no longer selected when hitting\n// Ctrl-G.\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"), require(\"./searchcursor\"), require(\"../dialog/dialog\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/search/search',[\"../../lib/codemirror\", \"./searchcursor\", \"../dialog/dialog\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  function searchOverlay(query, caseInsensitive) {\n    if (typeof query == \"string\")\n      query = new RegExp(query.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\"), caseInsensitive ? \"gi\" : \"g\");\n    else if (!query.global)\n      query = new RegExp(query.source, query.ignoreCase ? \"gi\" : \"g\");\n\n    return {token: function(stream) {\n      query.lastIndex = stream.pos;\n      var match = query.exec(stream.string);\n      if (match && match.index == stream.pos) {\n        stream.pos += match[0].length || 1;\n        return \"searching\";\n      } else if (match) {\n        stream.pos = match.index;\n      } else {\n        stream.skipToEnd();\n      }\n    }};\n  }\n\n  function SearchState() {\n    this.posFrom = this.posTo = this.lastQuery = this.query = null;\n    this.overlay = null;\n  }\n\n  function getSearchState(cm) {\n    return cm.state.search || (cm.state.search = new SearchState());\n  }\n\n  function queryCaseInsensitive(query) {\n    return typeof query == \"string\" && query == query.toLowerCase();\n  }\n\n  function getSearchCursor(cm, query, pos) {\n    // Heuristic: if the query string is all lowercase, do a case insensitive search.\n    return cm.getSearchCursor(query, pos, queryCaseInsensitive(query));\n  }\n\n  function persistentDialog(cm, text, deflt, onEnter, onKeyDown) {\n    cm.openDialog(text, onEnter, {\n      value: deflt,\n      selectValueOnOpen: true,\n      closeOnEnter: false,\n      onClose: function() { clearSearch(cm); },\n      onKeyDown: onKeyDown\n    });\n  }\n\n  function dialog(cm, text, shortText, deflt, f) {\n    if (cm.openDialog) cm.openDialog(text, f, {value: deflt, selectValueOnOpen: true});\n    else f(prompt(shortText, deflt));\n  }\n\n  function confirmDialog(cm, text, shortText, fs) {\n    if (cm.openConfirm) cm.openConfirm(text, fs);\n    else if (confirm(shortText)) fs[0]();\n  }\n\n  function parseString(string) {\n    return string.replace(/\\\\(.)/g, function(_, ch) {\n      if (ch == \"n\") return \"\\n\"\n      if (ch == \"r\") return \"\\r\"\n      return ch\n    })\n  }\n\n  function parseQuery(query) {\n    var isRE = query.match(/^\\/(.*)\\/([a-z]*)$/);\n    if (isRE) {\n      try { query = new RegExp(isRE[1], isRE[2].indexOf(\"i\") == -1 ? \"\" : \"i\"); }\n      catch(e) {} // Not a regular expression after all, do a string search\n    } else {\n      query = parseString(query)\n    }\n    if (typeof query == \"string\" ? query == \"\" : query.test(\"\"))\n      query = /x^/;\n    return query;\n  }\n\n  var queryDialog =\n    '<span class=\"CodeMirror-search-label\">Search:</span> <input type=\"text\" style=\"width: 10em\" class=\"CodeMirror-search-field\"/> <span style=\"color: #888\" class=\"CodeMirror-search-hint\">(Use /re/ syntax for regexp search)</span>';\n\n  function startSearch(cm, state, query) {\n    state.queryText = query;\n    state.query = parseQuery(query);\n    cm.removeOverlay(state.overlay, queryCaseInsensitive(state.query));\n    state.overlay = searchOverlay(state.query, queryCaseInsensitive(state.query));\n    cm.addOverlay(state.overlay);\n    if (cm.showMatchesOnScrollbar) {\n      if (state.annotate) { state.annotate.clear(); state.annotate = null; }\n      state.annotate = cm.showMatchesOnScrollbar(state.query, queryCaseInsensitive(state.query));\n    }\n  }\n\n  function doSearch(cm, rev, persistent, immediate) {\n    var state = getSearchState(cm);\n    if (state.query) return findNext(cm, rev);\n    var q = cm.getSelection() || state.lastQuery;\n    if (persistent && cm.openDialog) {\n      var hiding = null\n      var searchNext = function(query, event) {\n        CodeMirror.e_stop(event);\n        if (!query) return;\n        if (query != state.queryText) {\n          startSearch(cm, state, query);\n          state.posFrom = state.posTo = cm.getCursor();\n        }\n        if (hiding) hiding.style.opacity = 1\n        findNext(cm, event.shiftKey, function(_, to) {\n          var dialog\n          if (to.line < 3 && document.querySelector &&\n              (dialog = cm.display.wrapper.querySelector(\".CodeMirror-dialog\")) &&\n              dialog.getBoundingClientRect().bottom - 4 > cm.cursorCoords(to, \"window\").top)\n            (hiding = dialog).style.opacity = .4\n        })\n      };\n      persistentDialog(cm, queryDialog, q, searchNext, function(event, query) {\n        var keyName = CodeMirror.keyName(event)\n        var cmd = CodeMirror.keyMap[cm.getOption(\"keyMap\")][keyName]\n        if (!cmd) cmd = cm.getOption('extraKeys')[keyName]\n        if (cmd == \"findNext\" || cmd == \"findPrev\" ||\n          cmd == \"findPersistentNext\" || cmd == \"findPersistentPrev\") {\n          CodeMirror.e_stop(event);\n          startSearch(cm, getSearchState(cm), query);\n          cm.execCommand(cmd);\n        } else if (cmd == \"find\" || cmd == \"findPersistent\") {\n          CodeMirror.e_stop(event);\n          searchNext(query, event);\n        }\n      });\n      if (immediate && q) {\n        startSearch(cm, state, q);\n        findNext(cm, rev);\n      }\n    } else {\n      dialog(cm, queryDialog, \"Search for:\", q, function(query) {\n        if (query && !state.query) cm.operation(function() {\n          startSearch(cm, state, query);\n          state.posFrom = state.posTo = cm.getCursor();\n          findNext(cm, rev);\n        });\n      });\n    }\n  }\n\n  function findNext(cm, rev, callback) {cm.operation(function() {\n    var state = getSearchState(cm);\n    var cursor = getSearchCursor(cm, state.query, rev ? state.posFrom : state.posTo);\n    if (!cursor.find(rev)) {\n      cursor = getSearchCursor(cm, state.query, rev ? CodeMirror.Pos(cm.lastLine()) : CodeMirror.Pos(cm.firstLine(), 0));\n      if (!cursor.find(rev)) return;\n    }\n    cm.setSelection(cursor.from(), cursor.to());\n    cm.scrollIntoView({from: cursor.from(), to: cursor.to()}, 20);\n    state.posFrom = cursor.from(); state.posTo = cursor.to();\n    if (callback) callback(cursor.from(), cursor.to())\n  });}\n\n  function clearSearch(cm) {cm.operation(function() {\n    var state = getSearchState(cm);\n    state.lastQuery = state.query;\n    if (!state.query) return;\n    state.query = state.queryText = null;\n    cm.removeOverlay(state.overlay);\n    if (state.annotate) { state.annotate.clear(); state.annotate = null; }\n  });}\n\n  var replaceQueryDialog =\n    ' <input type=\"text\" style=\"width: 10em\" class=\"CodeMirror-search-field\"/> <span style=\"color: #888\" class=\"CodeMirror-search-hint\">(Use /re/ syntax for regexp search)</span>';\n  var replacementQueryDialog = '<span class=\"CodeMirror-search-label\">With:</span> <input type=\"text\" style=\"width: 10em\" class=\"CodeMirror-search-field\"/>';\n  var doReplaceConfirm = '<span class=\"CodeMirror-search-label\">Replace?</span> <button>Yes</button> <button>No</button> <button>All</button> <button>Stop</button>';\n\n  function replaceAll(cm, query, text) {\n    cm.operation(function() {\n      for (var cursor = getSearchCursor(cm, query); cursor.findNext();) {\n        if (typeof query != \"string\") {\n          var match = cm.getRange(cursor.from(), cursor.to()).match(query);\n          cursor.replace(text.replace(/\\$(\\d)/g, function(_, i) {return match[i];}));\n        } else cursor.replace(text);\n      }\n    });\n  }\n\n  function replace(cm, all) {\n    if (cm.getOption(\"readOnly\")) return;\n    var query = cm.getSelection() || getSearchState(cm).lastQuery;\n    var dialogText = '<span class=\"CodeMirror-search-label\">' + (all ? 'Replace all:' : 'Replace:') + '</span>';\n    dialog(cm, dialogText + replaceQueryDialog, dialogText, query, function(query) {\n      if (!query) return;\n      query = parseQuery(query);\n      dialog(cm, replacementQueryDialog, \"Replace with:\", \"\", function(text) {\n        text = parseString(text)\n        if (all) {\n          replaceAll(cm, query, text)\n        } else {\n          clearSearch(cm);\n          var cursor = getSearchCursor(cm, query, cm.getCursor(\"from\"));\n          var advance = function() {\n            var start = cursor.from(), match;\n            if (!(match = cursor.findNext())) {\n              cursor = getSearchCursor(cm, query);\n              if (!(match = cursor.findNext()) ||\n                  (start && cursor.from().line == start.line && cursor.from().ch == start.ch)) return;\n            }\n            cm.setSelection(cursor.from(), cursor.to());\n            cm.scrollIntoView({from: cursor.from(), to: cursor.to()});\n            confirmDialog(cm, doReplaceConfirm, \"Replace?\",\n                          [function() {doReplace(match);}, advance,\n                           function() {replaceAll(cm, query, text)}]);\n          };\n          var doReplace = function(match) {\n            cursor.replace(typeof query == \"string\" ? text :\n                           text.replace(/\\$(\\d)/g, function(_, i) {return match[i];}));\n            advance();\n          };\n          advance();\n        }\n      });\n    });\n  }\n\n  CodeMirror.commands.find = function(cm) {clearSearch(cm); doSearch(cm);};\n  CodeMirror.commands.findPersistent = function(cm) {clearSearch(cm); doSearch(cm, false, true);};\n  CodeMirror.commands.findPersistentNext = function(cm) {doSearch(cm, false, true, true);};\n  CodeMirror.commands.findPersistentPrev = function(cm) {doSearch(cm, true, true, true);};\n  CodeMirror.commands.findNext = doSearch;\n  CodeMirror.commands.findPrev = function(cm) {doSearch(cm, true);};\n  CodeMirror.commands.clearSearch = clearSearch;\n  CodeMirror.commands.replace = replace;\n  CodeMirror.commands.replaceAll = function(cm) {replace(cm, true);};\n});\n\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n// Defines jumpToLine command. Uses dialog.js if present.\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"), require(\"../dialog/dialog\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/search/jump-to-line',[\"../../lib/codemirror\", \"../dialog/dialog\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  function dialog(cm, text, shortText, deflt, f) {\n    if (cm.openDialog) cm.openDialog(text, f, {value: deflt, selectValueOnOpen: true});\n    else f(prompt(shortText, deflt));\n  }\n\n  var jumpDialog =\n      'Jump to line: <input type=\"text\" style=\"width: 10em\" class=\"CodeMirror-search-field\"/> <span style=\"color: #888\" class=\"CodeMirror-search-hint\">(Use line:column or scroll% syntax)</span>';\n\n  function interpretLine(cm, string) {\n    var num = Number(string)\n    if (/^[-+]/.test(string)) return cm.getCursor().line + num\n    else return num - 1\n  }\n\n  CodeMirror.commands.jumpToLine = function(cm) {\n    var cur = cm.getCursor();\n    dialog(cm, jumpDialog, \"Jump to line:\", (cur.line + 1) + \":\" + cur.ch, function(posStr) {\n      if (!posStr) return;\n\n      var match;\n      if (match = /^\\s*([\\+\\-]?\\d+)\\s*\\:\\s*(\\d+)\\s*$/.exec(posStr)) {\n        cm.setCursor(interpretLine(cm, match[1]), Number(match[2]))\n      } else if (match = /^\\s*([\\+\\-]?\\d+(\\.\\d+)?)\\%\\s*/.exec(posStr)) {\n        var line = Math.round(cm.lineCount() * Number(match[1]) / 100);\n        if (/^[-+]/.test(match[1])) line = cur.line + line + 1;\n        cm.setCursor(line - 1, cur.ch);\n      } else if (match = /^\\s*\\:?\\s*([\\+\\-]?\\d+)\\s*/.exec(posStr)) {\n        cm.setCursor(interpretLine(cm, match[1]), cur.ch);\n      }\n    });\n  };\n\n  CodeMirror.keyMap[\"default\"][\"Alt-G\"] = \"jumpToLine\";\n});\n\n","(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/hover/text-hover',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\n(function() {\n  \"use strict\";\n\n  var HOVER_CLASS = \" CodeMirror-hover\";\n\n  function showTooltip(e, content) {\n    var tt = document.createElement(\"div\");\n    tt.className = \"CodeMirror-hover-tooltip\";\n    if (typeof content == \"string\") {\n      content = document.createTextNode(content);\n    }\n    tt.appendChild(content);\n    document.body.appendChild(tt);\n\n    function position(e) {\n      if (!tt.parentNode)\n        return CodeMirror.off(document, \"mousemove\", position);\n      tt.style.top = Math.max(0, e.clientY - tt.offsetHeight - 5) + \"px\";\n      tt.style.left = (e.clientX + 5) + \"px\";\n    }\n    CodeMirror.on(document, \"mousemove\", position);\n    position(e);\n    if (tt.style.opacity != null)\n      tt.style.opacity = 1;\n    return tt;\n  }\n  function rm(elt) {\n    if (elt.parentNode)\n      elt.parentNode.removeChild(elt);\n  }\n  function hideTooltip(tt) {\n    if (!tt.parentNode)\n      return;\n    if (tt.style.opacity == null)\n      rm(tt);\n    tt.style.opacity = 0;\n    setTimeout(function() {\n      rm(tt);\n    }, 600);\n  }\n\n  function showTooltipFor(e, content, node, state, cm) {\n    var tooltip = showTooltip(e, content);\n    function hide() {\n      CodeMirror.off(node, \"mouseout\", hide);\n      CodeMirror.off(node, \"click\", hide);\n      node.className = node.className.replace(HOVER_CLASS, \"\");\n      if (tooltip) {\n        hideTooltip(tooltip);\n        tooltip = null;\n      }\n      cm.removeKeyMap(state.keyMap);\n    }\n    var poll = setInterval(function() {\n      if (tooltip)\n        for ( var n = node;; n = n.parentNode) {\n          if (n == document.body)\n            return;\n          if (!n) {\n            hide();\n            break;\n          }\n        }\n      if (!tooltip)\n        return clearInterval(poll);\n    }, 400);\n    CodeMirror.on(node, \"mouseout\", hide);\n    CodeMirror.on(node, \"click\", hide);\n    state.keyMap = {Esc: hide};\n    cm.addKeyMap(state.keyMap);\n  }\n\n  function TextHoverState(cm, options) {\n    this.options = options;\n    this.timeout = null;\n    if (options.delay) {\n      this.onMouseOver = function(e) {\n        onMouseOverWithDelay(cm, e);\n      };\n    } else {\n      this.onMouseOver = function(e) {\n        onMouseOver(cm, e);\n      };\n    }\n    this.keyMap = null;\n  }\n\n  function parseOptions(cm, options) {\n    if (options instanceof Function)\n      return {\n        getTextHover : options\n      };\n    if (!options || options === true)\n      options = {};\n    if (!options.getTextHover)\n      options.getTextHover = cm.getHelper(CodeMirror.Pos(0, 0), \"textHover\");\n    if (!options.getTextHover)\n      throw new Error(\n          \"Required option 'getTextHover' missing (text-hover addon)\");\n    return options;\n  }\n\n  function onMouseOverWithDelay(cm, e) {\n    var state = cm.state.textHover, delay = state.options.delay;\n    clearTimeout(state.timeout);\n    if (e.srcElement) {\n\t// hack for IE, because e.srcElement failed when it is used in the tiemout function\n\tvar newE = {srcElement: e.srcElement, clientX : e.clientX, clientY: e.clientY};\n\te = newE;\n    }\n    state.timeout = setTimeout(function() {onMouseOver(cm, e);}, delay);\n  }\n\n  function onMouseOver(cm, e) {\n    var node = e.target || e.srcElement;\n    if (node) {\n      var state = cm.state.textHover, data = getTokenAndPosAt(cm, e);\n      var content = state.options.getTextHover(cm, data, e);\n      if (content) {\n        node.className += HOVER_CLASS;\n        if (typeof content == 'function')\n\t      content(showTooltipFor, data, e, node, state, cm);\n        else\n          showTooltipFor(e, content, node, state, cm);\n      }\n    }\n  }\n\n  function optionHandler(cm, val, old) {\n    if (old && old != CodeMirror.Init) {\n      CodeMirror.off(cm.getWrapperElement(), \"mouseover\",\n          cm.state.textHover.onMouseOver);\n      delete cm.state.textHover;\n    }\n\n    if (val) {\n      var state = cm.state.textHover = new TextHoverState(cm, parseOptions(cm,\n          val));\n      CodeMirror.on(cm.getWrapperElement(), \"mouseover\", state.onMouseOver);\n    }\n  }\n\n  // When the mouseover fires, the cursor might not actually be over\n  // the character itself yet. These pairs of x,y offsets are used to\n  // probe a few nearby points when no suitable marked range is found.\n  var nearby = [ 0, 0, 0, 5, 0, -5, 5, 0, -5, 0 ];\n\n  function getTokenAndPosAt(cm, e) {\n    var node = e.target || e.srcElement, text = node.innerText\n        || node.textContent;\n    for ( var i = 0; i < nearby.length; i += 2) {\n      var pos = cm.coordsChar({\n        left : e.clientX + nearby[i],\n        top : e.clientY + nearby[i + 1]\n      });\n      var token = cm.getTokenAt(pos);\n      if (token && token.string === text) {\n        return {\n          token : token,\n          pos : pos\n        };\n      }\n    }\n  }\n\n  CodeMirror.defineOption(\"textHover\", false, optionHandler); // deprecated\n\n})();\n\n});\n\n","define('cm/addon/hover/prolog-hover',[ \"../../lib/codemirror\",\n\t \"jquery\",\n\t \"laconic\"\n       ],\n       function(CodeMirror, $) {\n\"use strict\";\n\nvar pathTranslations = {};\n\nvar tokenHelp = {\n  \"goal_built_in\":  function(data, cm) {\n    if ( data ) {\n      return $.el.div(predName(data),\n\t\t      cm.tokenInfo(data));\n    } else {\n      return \"Built-in predicate\";\n    }\n  },\n\n  \"goal_global\":  function(data, cm) {\n    if ( data ) {\n      return $.el.div(predName(data),\n\t\t      cm.tokenInfo(data));\n    } else {\n      return \"Global predicate\";\n    }\n  },\n\n  \"goal_autoload\":  function(data, cm) {\n    if ( data ) {\n      return $.el.div(predName(data), \" (autoload from \",\n\t\t      fileName(data, cm), \"): \",\n\t\t      cm.tokenInfo(data));\n    } else {\n      return \"Autoloaded predicate\";\n    }\n  },\n\n  \"goal_imported\":  function(data, cm) {\n    if ( data ) {\n      return $.el.div(predName(data), \" (imported from \",\n\t\t      fileName(data, cm), \"): \",\n\t\t      cm.tokenInfo(data));\n    } else {\n      return \"Imported predicate\";\n    }\n  },\n\n  \"goal_recursion\":    \"Recursive call\",\n  \"goal_dynamic\":      \"Dynamic predicate\",\n  \"goal_undefined\":    \"Undefined predicate\",\n  \"goal_local\":        function(data, cm) {\n\t\t\t return localDef(\"predicate\",data,cm)\n\t\t       },\n  \"goal_constraint\":   function(data, cm) {\n\t\t\t return localDef(\"CHR constraint\",data,cm)\n\t\t       },\n  \"head_unreferenced\": \"Predicate is not called\",\n  \"unused_import\":     \"Imported predicate is not used\",\n  \"undefined_import\":  \"Imported predicate is not defined\",\n  \"head_constraint\":   \"CHR constraint\",\n\n  \"file\": function(data, cm) {\n    if ( data ) {\n      addFileTranslation(cm, data.text, data.path);\n      return $.el.div(\"File: \",\n\t\t      $.el.span({class:\"file-path\"},\n\t\t\t\tdata.path));\n    } else {\n      return \"File name\";\n    }\n  },\n\n  \"file_no_depends\": function(data, cm) {\n    if ( data ) {\n      addFileTranslation(cm, data.text, data.path);\n      return $.el.div(\"File: \",\n\t\t      $.el.span({class:\"file-path\"},\n\t\t\t\tdata.path),\n\t\t      $.el.div({class:\"hover-remark\"},\n\t\t\t       \"does not resolve any dependencies\")\n\t\t     );\n    } else {\n      return \"File name (does not resolve any dependencies)\";\n    }\n  },\n\n  \"error\": function(data, cm) {\n    if ( data ) {\n      if ( data.expected )\n\treturn $.el.div(\"error: \", $.el.strong(data.expected), \" expected\");\n    }\n\n    return \"error\";\n  },\n\n  \"singleton\": \"Variable appearing only once\",\n  \"codes\":     \"List of Unicode code points (integers)\",\n  \"chars\":     \"List of one-character atoms\",\n  \"string\":    \"Packed string (SWI7, use `text` for a list of codes)\",\n  \"qatom\":     \"Quoted atom\",\n  \"uatom\":     \"Uppercase atom due to var_prefix flag\",\n  \"tag\":       \"Tag of a SWI7 dict\",\n  \"ext_quant\": \"Existential quantification operator\",\n  \"instantiation_error\": \"No variable allowed here\",\n\n  \"string_terminal\": \"Terminal (DCG)\",\n\n  \"head\":       null,\n  \"control\":    null,\n  \"fullstop\":   null,\n  \"var\":        null,\n  \"int\":        null,\n  \"float\":      null,\n  \"number\":     null,\n  \"atom\":       null,\n  \"functor\":    null,\n  \"comment\":    null,\n  \"neck\":       null,\n  \"operator\":   null,\n  \"sep\":        null,\n  \"list_open\":  null,\n  \"list_close\": null,\n  \"dict_open\":  null,\n  \"dict_close\": null\n};\n\nfunction predName(data) {\n  return $.el.span({class:\"pred-name\"},\n\t\t   data.text+\"/\"+data.arity);\n}\n\nfunction addFileTranslation(cm, text, path) {\n  pathTranslations[path] = text;\n}\n\nfunction fileName(data, cm) {\n  var last;\n\n  if ( pathTranslations[data.file] )\n    return pathTranslations[data.file];\n\n  if ( (last=data.file.lastIndexOf(\"/\")) )\n    return data.file.substring(last+1);\n\n  return data.file;\n}\n\nfunction localDef(type, data, cm) {\n  if ( data && data.file ) {\n    return $.el.div(capitalizeFirstLetter(type)+\n\t\t    \" included from \",\n\t\t    $.el.span({class:\"file-path\"},\n\t\t\t      data.file));\n  } else if ( data && data.line ) {\n    return capitalizeFirstLetter(type) + \" defined in line \"+data.line;\n  } else {\n    return \"Locally defined \" + type;\n  }\n}\n\nfunction capitalizeFirstLetter(string) {\n    return string[0].toUpperCase() + string.slice(1);\n}\n\nCodeMirror.registerHelper(\"textHover\", \"prolog\", function(cm, data, node) {\n  if ( data ) {\n    var token = data.token;\n    var help  = tokenHelp[token.type];\n    var et;\n\n    if ( help !== undefined ) {\n      if ( typeof(help) === \"function\" ) {\n\tvar r = help(cm.getEnrichedToken(token), cm);\n\n\tif ( typeof(r) === \"string\" )\n\t  return $.el.div(r);\n\telse\n\t  return r;\n      } else if ( typeof(help) === \"string\" ) {\n\treturn $.el.div(help);\n      }\n    } else if ( (et=cm.getEnrichedToken(token)) ) {\n      if ( et.summary && et.info === \"ask\" )\n\treturn $.el.div(et.summary, cm.tokenInfo(et));\n      else if ( et.summary )\n\treturn $.el.div(et.summary);\n      else\n\treturn $.el.div(token.type);\n    } else {\n      return $.el.div(token.type);\n    }\n  }\n\n  return null;\n});\n\n});\n\n","(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/hint/show-context-info',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  var contextInfo = null;\n\n  CodeMirror.attachContextInfo = function(data) {\n    CodeMirror.on(data, 'select', function(completion, hints) {\n      hints = hints.parentNode;\n      var information = null;\n      if (completion.info) {\n        information = completion.info(completion);\n      }\n      if (information) {\n        var box = hints.getBoundingClientRect();\n        if (contextInfo == null) {\n          contextInfo = document.createElement('div');\n          contextInfo.className = 'CodeMirror-hints-contextInfo'\n          document.body.appendChild(contextInfo);\n        }\n        contextInfo.innerHTML = '';\n        contextInfo.style.top = hints.style.top;\n        contextInfo.style.left = box.right + 'px';\n        if(typeof information == \"string\") {\n          contextInfo.innerHTML = information;\n        } else {\n          contextInfo.appendChild(information);\n        }\n        contextInfo.style.display = 'block';\n      } else {\n        if (contextInfo != null) {\n          contextInfo.innerHTML = '';\n          contextInfo.style.display = 'none';\n        }\n      }\n    });\n\n    CodeMirror.on(data, 'close', function() {\n      if (contextInfo != null) {\n        contextInfo.parentNode.removeChild(contextInfo);\n      }\n      contextInfo = null;\n    });\n\n  }\n\n  CodeMirror.showContextInfo = function(getHints) {\n    return function(cm, showHints, options) {\n      if (!options)\n        options = showHints;\n      var data = getHints(cm, options);\n      CodeMirror.attachContextInfo(data);\n      return data;\n    }\n  }\n\n});\n\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/keymap/emacs',[\"../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  var Pos = CodeMirror.Pos;\n  function posEq(a, b) { return a.line == b.line && a.ch == b.ch; }\n\n  // Kill 'ring'\n\n  var killRing = [];\n  function addToRing(str) {\n    killRing.push(str);\n    if (killRing.length > 50) killRing.shift();\n  }\n  function growRingTop(str) {\n    if (!killRing.length) return addToRing(str);\n    killRing[killRing.length - 1] += str;\n  }\n  function getFromRing(n) { return killRing[killRing.length - (n ? Math.min(n, 1) : 1)] || \"\"; }\n  function popFromRing() { if (killRing.length > 1) killRing.pop(); return getFromRing(); }\n\n  var lastKill = null;\n\n  function kill(cm, from, to, mayGrow, text) {\n    if (text == null) text = cm.getRange(from, to);\n\n    if (mayGrow && lastKill && lastKill.cm == cm && posEq(from, lastKill.pos) && cm.isClean(lastKill.gen))\n      growRingTop(text);\n    else\n      addToRing(text);\n    cm.replaceRange(\"\", from, to, \"+delete\");\n\n    if (mayGrow) lastKill = {cm: cm, pos: from, gen: cm.changeGeneration()};\n    else lastKill = null;\n  }\n\n  // Boundaries of various units\n\n  function byChar(cm, pos, dir) {\n    return cm.findPosH(pos, dir, \"char\", true);\n  }\n\n  function byWord(cm, pos, dir) {\n    return cm.findPosH(pos, dir, \"word\", true);\n  }\n\n  function byLine(cm, pos, dir) {\n    return cm.findPosV(pos, dir, \"line\", cm.doc.sel.goalColumn);\n  }\n\n  function byPage(cm, pos, dir) {\n    return cm.findPosV(pos, dir, \"page\", cm.doc.sel.goalColumn);\n  }\n\n  function byParagraph(cm, pos, dir) {\n    var no = pos.line, line = cm.getLine(no);\n    var sawText = /\\S/.test(dir < 0 ? line.slice(0, pos.ch) : line.slice(pos.ch));\n    var fst = cm.firstLine(), lst = cm.lastLine();\n    for (;;) {\n      no += dir;\n      if (no < fst || no > lst)\n        return cm.clipPos(Pos(no - dir, dir < 0 ? 0 : null));\n      line = cm.getLine(no);\n      var hasText = /\\S/.test(line);\n      if (hasText) sawText = true;\n      else if (sawText) return Pos(no, 0);\n    }\n  }\n\n  function bySentence(cm, pos, dir) {\n    var line = pos.line, ch = pos.ch;\n    var text = cm.getLine(pos.line), sawWord = false;\n    for (;;) {\n      var next = text.charAt(ch + (dir < 0 ? -1 : 0));\n      if (!next) { // End/beginning of line reached\n        if (line == (dir < 0 ? cm.firstLine() : cm.lastLine())) return Pos(line, ch);\n        text = cm.getLine(line + dir);\n        if (!/\\S/.test(text)) return Pos(line, ch);\n        line += dir;\n        ch = dir < 0 ? text.length : 0;\n        continue;\n      }\n      if (sawWord && /[!?.]/.test(next)) return Pos(line, ch + (dir > 0 ? 1 : 0));\n      if (!sawWord) sawWord = /\\w/.test(next);\n      ch += dir;\n    }\n  }\n\n  function byExpr(cm, pos, dir) {\n    var wrap;\n    if (cm.findMatchingBracket && (wrap = cm.findMatchingBracket(pos, true))\n        && wrap.match && (wrap.forward ? 1 : -1) == dir)\n      return dir > 0 ? Pos(wrap.to.line, wrap.to.ch + 1) : wrap.to;\n\n    for (var first = true;; first = false) {\n      var token = cm.getTokenAt(pos);\n      var after = Pos(pos.line, dir < 0 ? token.start : token.end);\n      if (first && dir > 0 && token.end == pos.ch || !/\\w/.test(token.string)) {\n        var newPos = cm.findPosH(after, dir, \"char\");\n        if (posEq(after, newPos)) return pos;\n        else pos = newPos;\n      } else {\n        return after;\n      }\n    }\n  }\n\n  // Prefixes (only crudely supported)\n\n  function getPrefix(cm, precise) {\n    var digits = cm.state.emacsPrefix;\n    if (!digits) return precise ? null : 1;\n    clearPrefix(cm);\n    return digits == \"-\" ? -1 : Number(digits);\n  }\n\n  function repeated(cmd) {\n    var f = typeof cmd == \"string\" ? function(cm) { cm.execCommand(cmd); } : cmd;\n    return function(cm) {\n      var prefix = getPrefix(cm);\n      f(cm);\n      for (var i = 1; i < prefix; ++i) f(cm);\n    };\n  }\n\n  function findEnd(cm, pos, by, dir) {\n    var prefix = getPrefix(cm);\n    if (prefix < 0) { dir = -dir; prefix = -prefix; }\n    for (var i = 0; i < prefix; ++i) {\n      var newPos = by(cm, pos, dir);\n      if (posEq(newPos, pos)) break;\n      pos = newPos;\n    }\n    return pos;\n  }\n\n  function move(by, dir) {\n    var f = function(cm) {\n      cm.extendSelection(findEnd(cm, cm.getCursor(), by, dir));\n    };\n    f.motion = true;\n    return f;\n  }\n\n  function killTo(cm, by, dir) {\n    var selections = cm.listSelections(), cursor;\n    var i = selections.length;\n    while (i--) {\n      cursor = selections[i].head;\n      kill(cm, cursor, findEnd(cm, cursor, by, dir), true);\n    }\n  }\n\n  function killRegion(cm) {\n    if (cm.somethingSelected()) {\n      var selections = cm.listSelections(), selection;\n      var i = selections.length;\n      while (i--) {\n        selection = selections[i];\n        kill(cm, selection.anchor, selection.head);\n      }\n      return true;\n    }\n  }\n\n  function addPrefix(cm, digit) {\n    if (cm.state.emacsPrefix) {\n      if (digit != \"-\") cm.state.emacsPrefix += digit;\n      return;\n    }\n    // Not active yet\n    cm.state.emacsPrefix = digit;\n    cm.on(\"keyHandled\", maybeClearPrefix);\n    cm.on(\"inputRead\", maybeDuplicateInput);\n  }\n\n  var prefixPreservingKeys = {\"Alt-G\": true, \"Ctrl-X\": true, \"Ctrl-Q\": true, \"Ctrl-U\": true};\n\n  function maybeClearPrefix(cm, arg) {\n    if (!cm.state.emacsPrefixMap && !prefixPreservingKeys.hasOwnProperty(arg))\n      clearPrefix(cm);\n  }\n\n  function clearPrefix(cm) {\n    cm.state.emacsPrefix = null;\n    cm.off(\"keyHandled\", maybeClearPrefix);\n    cm.off(\"inputRead\", maybeDuplicateInput);\n  }\n\n  function maybeDuplicateInput(cm, event) {\n    var dup = getPrefix(cm);\n    if (dup > 1 && event.origin == \"+input\") {\n      var one = event.text.join(\"\\n\"), txt = \"\";\n      for (var i = 1; i < dup; ++i) txt += one;\n      cm.replaceSelection(txt);\n    }\n  }\n\n  function addPrefixMap(cm) {\n    cm.state.emacsPrefixMap = true;\n    cm.addKeyMap(prefixMap);\n    cm.on(\"keyHandled\", maybeRemovePrefixMap);\n    cm.on(\"inputRead\", maybeRemovePrefixMap);\n  }\n\n  function maybeRemovePrefixMap(cm, arg) {\n    if (typeof arg == \"string\" && (/^\\d$/.test(arg) || arg == \"Ctrl-U\")) return;\n    cm.removeKeyMap(prefixMap);\n    cm.state.emacsPrefixMap = false;\n    cm.off(\"keyHandled\", maybeRemovePrefixMap);\n    cm.off(\"inputRead\", maybeRemovePrefixMap);\n  }\n\n  // Utilities\n\n  function setMark(cm) {\n    cm.setCursor(cm.getCursor());\n    cm.setExtending(!cm.getExtending());\n    cm.on(\"change\", function() { cm.setExtending(false); });\n  }\n\n  function clearMark(cm) {\n    cm.setExtending(false);\n    cm.setCursor(cm.getCursor());\n  }\n\n  function getInput(cm, msg, f) {\n    if (cm.openDialog)\n      cm.openDialog(msg + \": <input type=\\\"text\\\" style=\\\"width: 10em\\\"/>\", f, {bottom: true});\n    else\n      f(prompt(msg, \"\"));\n  }\n\n  function operateOnWord(cm, op) {\n    var start = cm.getCursor(), end = cm.findPosH(start, 1, \"word\");\n    cm.replaceRange(op(cm.getRange(start, end)), start, end);\n    cm.setCursor(end);\n  }\n\n  function toEnclosingExpr(cm) {\n    var pos = cm.getCursor(), line = pos.line, ch = pos.ch;\n    var stack = [];\n    while (line >= cm.firstLine()) {\n      var text = cm.getLine(line);\n      for (var i = ch == null ? text.length : ch; i > 0;) {\n        var ch = text.charAt(--i);\n        if (ch == \")\")\n          stack.push(\"(\");\n        else if (ch == \"]\")\n          stack.push(\"[\");\n        else if (ch == \"}\")\n          stack.push(\"{\");\n        else if (/[\\(\\{\\[]/.test(ch) && (!stack.length || stack.pop() != ch))\n          return cm.extendSelection(Pos(line, i));\n      }\n      --line; ch = null;\n    }\n  }\n\n  function quit(cm) {\n    cm.execCommand(\"clearSearch\");\n    clearMark(cm);\n  }\n\n  CodeMirror.emacs = {kill: kill, killRegion: killRegion, repeated: repeated};\n\n  // Actual keymap\n\n  var keyMap = CodeMirror.keyMap.emacs = CodeMirror.normalizeKeyMap({\n    \"Ctrl-W\": function(cm) {kill(cm, cm.getCursor(\"start\"), cm.getCursor(\"end\"));},\n    \"Ctrl-K\": repeated(function(cm) {\n      var start = cm.getCursor(), end = cm.clipPos(Pos(start.line));\n      var text = cm.getRange(start, end);\n      if (!/\\S/.test(text)) {\n        text += \"\\n\";\n        end = Pos(start.line + 1, 0);\n      }\n      kill(cm, start, end, true, text);\n    }),\n    \"Alt-W\": function(cm) {\n      addToRing(cm.getSelection());\n      clearMark(cm);\n    },\n    \"Ctrl-Y\": function(cm) {\n      var start = cm.getCursor();\n      cm.replaceRange(getFromRing(getPrefix(cm)), start, start, \"paste\");\n      cm.setSelection(start, cm.getCursor());\n    },\n    \"Alt-Y\": function(cm) {cm.replaceSelection(popFromRing(), \"around\", \"paste\");},\n\n    \"Ctrl-Space\": setMark, \"Ctrl-Shift-2\": setMark,\n\n    \"Ctrl-F\": move(byChar, 1), \"Ctrl-B\": move(byChar, -1),\n    \"Right\": move(byChar, 1), \"Left\": move(byChar, -1),\n    \"Ctrl-D\": function(cm) { killTo(cm, byChar, 1); },\n    \"Delete\": function(cm) { killRegion(cm) || killTo(cm, byChar, 1); },\n    \"Ctrl-H\": function(cm) { killTo(cm, byChar, -1); },\n    \"Backspace\": function(cm) { killRegion(cm) || killTo(cm, byChar, -1); },\n\n    \"Alt-F\": move(byWord, 1), \"Alt-B\": move(byWord, -1),\n    \"Alt-D\": function(cm) { killTo(cm, byWord, 1); },\n    \"Alt-Backspace\": function(cm) { killTo(cm, byWord, -1); },\n\n    \"Ctrl-N\": move(byLine, 1), \"Ctrl-P\": move(byLine, -1),\n    \"Down\": move(byLine, 1), \"Up\": move(byLine, -1),\n    \"Ctrl-A\": \"goLineStart\", \"Ctrl-E\": \"goLineEnd\",\n    \"End\": \"goLineEnd\", \"Home\": \"goLineStart\",\n\n    \"Alt-V\": move(byPage, -1), \"Ctrl-V\": move(byPage, 1),\n    \"PageUp\": move(byPage, -1), \"PageDown\": move(byPage, 1),\n\n    \"Ctrl-Up\": move(byParagraph, -1), \"Ctrl-Down\": move(byParagraph, 1),\n\n    \"Alt-A\": move(bySentence, -1), \"Alt-E\": move(bySentence, 1),\n    \"Alt-K\": function(cm) { killTo(cm, bySentence, 1); },\n\n    \"Ctrl-Alt-K\": function(cm) { killTo(cm, byExpr, 1); },\n    \"Ctrl-Alt-Backspace\": function(cm) { killTo(cm, byExpr, -1); },\n    \"Ctrl-Alt-F\": move(byExpr, 1), \"Ctrl-Alt-B\": move(byExpr, -1),\n\n    \"Shift-Ctrl-Alt-2\": function(cm) {\n      var cursor = cm.getCursor();\n      cm.setSelection(findEnd(cm, cursor, byExpr, 1), cursor);\n    },\n    \"Ctrl-Alt-T\": function(cm) {\n      var leftStart = byExpr(cm, cm.getCursor(), -1), leftEnd = byExpr(cm, leftStart, 1);\n      var rightEnd = byExpr(cm, leftEnd, 1), rightStart = byExpr(cm, rightEnd, -1);\n      cm.replaceRange(cm.getRange(rightStart, rightEnd) + cm.getRange(leftEnd, rightStart) +\n                      cm.getRange(leftStart, leftEnd), leftStart, rightEnd);\n    },\n    \"Ctrl-Alt-U\": repeated(toEnclosingExpr),\n\n    \"Alt-Space\": function(cm) {\n      var pos = cm.getCursor(), from = pos.ch, to = pos.ch, text = cm.getLine(pos.line);\n      while (from && /\\s/.test(text.charAt(from - 1))) --from;\n      while (to < text.length && /\\s/.test(text.charAt(to))) ++to;\n      cm.replaceRange(\" \", Pos(pos.line, from), Pos(pos.line, to));\n    },\n    \"Ctrl-O\": repeated(function(cm) { cm.replaceSelection(\"\\n\", \"start\"); }),\n    \"Ctrl-T\": repeated(function(cm) {\n      cm.execCommand(\"transposeChars\");\n    }),\n\n    \"Alt-C\": repeated(function(cm) {\n      operateOnWord(cm, function(w) {\n        var letter = w.search(/\\w/);\n        if (letter == -1) return w;\n        return w.slice(0, letter) + w.charAt(letter).toUpperCase() + w.slice(letter + 1).toLowerCase();\n      });\n    }),\n    \"Alt-U\": repeated(function(cm) {\n      operateOnWord(cm, function(w) { return w.toUpperCase(); });\n    }),\n    \"Alt-L\": repeated(function(cm) {\n      operateOnWord(cm, function(w) { return w.toLowerCase(); });\n    }),\n\n    \"Alt-;\": \"toggleComment\",\n\n    \"Ctrl-/\": repeated(\"undo\"), \"Shift-Ctrl--\": repeated(\"undo\"),\n    \"Ctrl-Z\": repeated(\"undo\"), \"Cmd-Z\": repeated(\"undo\"),\n    \"Shift-Alt-,\": \"goDocStart\", \"Shift-Alt-.\": \"goDocEnd\",\n    \"Ctrl-S\": \"findNext\", \"Ctrl-R\": \"findPrev\", \"Ctrl-G\": quit, \"Shift-Alt-5\": \"replace\",\n    \"Alt-/\": \"autocomplete\",\n    \"Enter\": \"newlineAndIndent\",\n    \"Ctrl-J\": repeated(function(cm) { cm.replaceSelection(\"\\n\", \"end\"); }),\n    \"Tab\": \"indentAuto\",\n\n    \"Alt-G G\": function(cm) {\n      var prefix = getPrefix(cm, true);\n      if (prefix != null && prefix > 0) return cm.setCursor(prefix - 1);\n\n      getInput(cm, \"Goto line\", function(str) {\n        var num;\n        if (str && !isNaN(num = Number(str)) && num == (num|0) && num > 0)\n          cm.setCursor(num - 1);\n      });\n    },\n\n    \"Ctrl-X Tab\": function(cm) {\n      cm.indentSelection(getPrefix(cm, true) || cm.getOption(\"indentUnit\"));\n    },\n    \"Ctrl-X Ctrl-X\": function(cm) {\n      cm.setSelection(cm.getCursor(\"head\"), cm.getCursor(\"anchor\"));\n    },\n    \"Ctrl-X Ctrl-S\": \"save\",\n    \"Ctrl-X Ctrl-W\": \"save\",\n    \"Ctrl-X S\": \"saveAll\",\n    \"Ctrl-X F\": \"open\",\n    \"Ctrl-X U\": repeated(\"undo\"),\n    \"Ctrl-X K\": \"close\",\n    \"Ctrl-X Delete\": function(cm) { kill(cm, cm.getCursor(), bySentence(cm, cm.getCursor(), 1), true); },\n    \"Ctrl-X H\": \"selectAll\",\n\n    \"Ctrl-Q Tab\": repeated(\"insertTab\"),\n    \"Ctrl-U\": addPrefixMap\n  });\n\n  var prefixMap = {\"Ctrl-G\": clearPrefix};\n  function regPrefix(d) {\n    prefixMap[d] = function(cm) { addPrefix(cm, d); };\n    keyMap[\"Ctrl-\" + d] = function(cm) { addPrefix(cm, d); };\n    prefixPreservingKeys[\"Ctrl-\" + d] = true;\n  }\n  for (var i = 0; i < 10; ++i) regPrefix(String(i));\n  regPrefix(\"-\");\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2017, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Prolog editor plugin based on [CodeMirror](http://codemirror.net)\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n * @requires codemirror\n */\n\ndefine('editor',[ \"cm/lib/codemirror\",\n\t \"config\",\n\t \"preferences\",\n\t \"form\",\n\t \"cm/mode/prolog/prolog-template-hint\",\n\t \"modal\",\n\t \"tabbed\",\n\t \"prolog\",\n\n\t \"storage\",\n\n\t \"cm/mode/prolog/prolog\",\n\t \"cm/mode/prolog/prolog_keys\",\n\t \"cm/mode/prolog/prolog_query\",\n\t \"cm/mode/prolog/prolog_server\",\n\n\t \"cm/mode/markdown/markdown\",\n\n\t \"cm/addon/edit/matchbrackets\",\n\t \"cm/addon/comment/continuecomment\",\n\t \"cm/addon/comment/comment\",\n\t \"cm/addon/hint/show-hint\",\n\t \"cm/addon/hint/anyword-hint\",\n\t \"cm/addon/display/placeholder\",\n\t \"cm/addon/runmode/runmode\",\n\t \"cm/addon/search/search\",\n\t \"cm/addon/search/searchcursor\",\n\t \"cm/addon/search/jump-to-line\",\n\t \"cm/addon/dialog/dialog\",\n\n\t \"cm/addon/hover/text-hover\",\n\t \"cm/addon/hover/prolog-hover\",\n\n\t \"cm/addon/hint/templates-hint\",\n\t \"cm/addon/hint/show-context-info\",\n\n         \"jquery\", \"laconic\",\n\n\t \"cm/keymap/emacs\",\n       ],\n       function(CodeMirror, config, preferences, form, templateHint,\n\t\tmodal, tabbed, prolog) {\n\n(function($) {\n  var pluginName = 'prologEditor';\n\n  var modeDefaults = {\n    prolog: {\n      mode: \"prolog\",\n      role: \"source\",\n      placeholder: \"Your Prolog rules and facts go here ...\",\n      lineNumbers: true,\n      autoCurrent: true,\n      save: false,\n      theme: \"prolog\",\n      matchBrackets: true,\n      textHover: true,\n      prologKeys: true,\n      extraKeys: {\n\t\"Ctrl-Space\": \"autocomplete\",\n\t\"Alt-/\": \"autocomplete\",\n      },\n      hintOptions: {\n      hint: templateHint.getHints,\n      completeSingle: false\n      }\n    },\n\n    markdown: {\n      mode: \"markdown\",\n      placeholder: \"Your markdown block goes here ...\",\n      lineWrapping: true,\n      save: false\n    }\n  };\n\n  var roleDefaults = {\n    query: {\n      mode: \"prolog\",\n      role: \"query\",\n      placeholder: \"Your query goes here ...\",\n      lineNumbers: false,\n      lineWrapping: true,\n      save: false\n    }\n  };\n\n  var lastEditor;\n\n  /** @lends $.fn.prologEditor */\n  var methods = {\n    /**\n     * Initialize a Prolog editor.\n     * @param {Object} [options]\n     * @param {String} [options.role=\"source\"] determines the role of\n     * the editor. It is one of `source` or `query`.\n     * @param {String} [options.placeholder=\"Your Prolog program goes here ...\"]\n     * sets the placeholder for the editor.\n     * @param {Boolean} [options.lineNumbers=true] defines whether or\n     * not a left-gutter with line numbers is displayed.\n     * @param {Boolean} [options.save=false] defines whether the\n     * editor responds to storage events.\n     * @param {String} [options.mode=\"prolog\"] defines the mode used by\n     * CodeMirror.\n     * @param {String} [options.theme=\"prolog\"] defines the CSS used for\n     * highlighting.\n     * @param {Boolean} [options.matchBrackets=true] defines whether the\n     * matching bracket is highlighted.\n     * @param {Boolean} [options.prologKeys=true] defines whether \"(\",\n     * \">\" and \";\" act as active keys to support if-then-else layout.\n     * @param {Object} [options.extraKeys] specifies additional key\n     * bindings.  Default is to bind \"Ctrl-Space\" and \"Alt-/\" to\n     * \"autocomplete\".\n     *\n     */\n    _init: function(opts) {\n\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar storage = {};\t\t/* storage meta-data */\n\tvar data = {};\t\t\t/* our data */\n\tvar ta;\t\t\t\t/* textarea */\n\n\topts      = opts||{};\n\topts.mode = opts.mode||\"prolog\";\n\n\tvar options = $.extend({}, modeDefaults[opts.mode]);\n\tif ( opts.role && roleDefaults[opts.role] )\n\t  options = $.extend(options, roleDefaults[opts.role]);\n\toptions = $.extend(options, opts);\n\n\tif ( preferences.getVal(\"emacs-keybinding\") )\n\t  options.keyMap = \"emacs\";\n\n\tif ( options.mode == \"prolog\" ) {\n\t  data.role = options.role;\n\t  if ( options.getSource )\n\t    data.getSource = options.getSource;\n\n\t  if ( config.http.locations.cm_highlight ) {\n\t    options.prologHighlightServer =\n\t    { url:  config.http.locations.cm_highlight,\n\t      role: options.role,\n\t      enabled: preferences.getVal(\"semantic-highlighting\")\n\t    };\n\t    if ( options.sourceID )\n\t      options.prologHighlightServer.sourceID = options.sourceID;\n\t    options.extraKeys[\"Ctrl-R\"] = \"refreshHighlight\";\n\t  }\n\n\t  if ( options.role == \"source\" ) {\n\t    options.continueComments = \"Enter\";\n\t    options.gutters = [\"Prolog-breakpoints\"]\n\t  }\n\n\t  /*\n\t   * Long click detection and handling.\n\t   */\n\t  data.long_click = {};\n\t  function moveLongClick(ev) {\n\t    var lc = data.long_click;\n\t    var dx = ev.clientX - lc.clientX;\n\t    var dy = ev.clientY - lc.clientY;\n\t    if ( Math.sqrt(dx*dx+dy*dy) > 5 )\n\t      cancelLongClick();\n\t  }\n\t  function cancelLongClick() {\n\t    elem.off(\"mousemove\", moveLongClick);\n\t    var lc = data.long_click;\n\t    if ( lc.timeout ) {\n\t      clearTimeout(lc.timeout);\n\t      lc.target  = undefined;\n\t      lc.timeout = undefined;\n\t    }\n\t  }\n\n\t  elem.on(\"mousedown\", \".CodeMirror-code\", function(ev) {\n\t    var lc = data.long_click;\n\n\t    lc.clientX = ev.clientX;\n\t    lc.clientY = ev.clientY;\n\t    elem.on(\"mousemove\", moveLongClick);\n\t    data.long_click.timeout = setTimeout(function() {\n\t      cancelLongClick();\n\t      elem.prologEditor('contextAction');\n\t    }, 500);\n\t  });\n\t  elem.on(\"mouseup\", function(ev) {\n\t    cancelLongClick();\n\t  });\n\t}\n\n\t/*\n\t * Create CodeMirror\n\t */\n\tif ( (ta=elem.children(\"textarea\")[0]) ) {\n\t  function copyData(name) {\n\t    var value = $(ta).data(name);\n\t    if ( value ) {\n\t      storage[name] = value;\n\t    }\n\t  }\n\n\t  copyData(\"file\");\n\t  copyData(\"url\");\n\t  copyData(\"title\");\n\t  copyData(\"meta\");\n\t  copyData(\"st_type\");\n\t  copyData(\"chats\");\n\n\t  data.cm = CodeMirror.fromTextArea(ta, options);\n\t} else {\n\t  if ( !options.value )\n\t    options.value = elem.text();\n\t  data.cm = CodeMirror(elem[0], options);\n\t}\n\n\telem.data(pluginName, data);\n\telem.prologEditor('loadMode', options.mode);\n\n\telem.addClass(\"swish-event-receiver\");\n\telem.addClass(\"prolog-editor\");\n\telem.on(\"preference\", function(ev, pref) {\n\t  elem.prologEditor('preference', pref);\n\t});\n\telem.on(\"print\", function() {\n\t  if ( data.role != \"query\" )\n\t    elem.prologEditor('print');\n\t});\n\telem.on(\"clearMessages\", function(ev) {\n\t  elem.prologEditor('clearMessages');\n\t});\n\telem.on(\"edit-command\", function(ev, command) {\n\t  elem.prologEditor('execCommand', command);\n\t});\n\tdata.cm.on(\"blur\", function(ev) {\n\t  elem.prologEditor('execCommand', 'prepare');\n\t});\n\n\tif ( options.save ) {\n\t  storage.typeName = options.typeName||\"program\";\n\t  elem.prologEditor('setupStorage', storage);\n\t}\n\n\tif ( options.mode == \"prolog\" && data.role == \"source\" ) {\n\t  elem.on(\"activate-tab\", function(ev) {\n\t    if ( options.autoCurrent )\n\t      elem.prologEditor('makeCurrent');\n\t    data.cm.refresh();\t\t/* needed if a tab has been opened */\n\t  });\n\n\t  elem.on(\"source-error\", function(ev, error) {\n\t    elem.prologEditor('highlightError', error);\n\t  });\n\t  elem.on(\"pengine-died\", function(ev, id) {\n\t    if ( data.pengines ) {\n\t      var i = data.pengines.indexOf(id);\n\t      if ( i >= 0 )\n\t\tdata.pengines.splice(i, 1);\n\t    }\n\t    if ( data.traceMark && data.traceMark.pengine == id ) {\n\t      data.traceMark.clear();\n\t      data.traceMark = null;\n\t    }\n\t  });\n\t  elem.on('addExample', function(ev, query) {\n\t    elem.prologEditor('addExample', query);\n\t  });\n\t  data.cm.on(\"gutterClick\", function(cm, n) {\n\t    var info = cm.lineInfo(n);\n\n\t    function makeMarker() {\n\t      return $(\"<span class=\\\"breakpoint-marker\\\">&#9679;</span>\")[0];\n\t    }\n\n\t    if ( info.gutterMarkers )\n\t      cm.setGutterMarker(n, \"Prolog-breakpoints\", null);\n\t    else\n\t      cm.setGutterMarker(n, \"Prolog-breakpoints\", makeMarker());\n\t  });\n\t} /* end if prolog source */\n\n\tdata.cm.on(\"change\", function(cm, change) {\n\t  var clean;\n\n\t  if ( change.origin == \"setValue\" ) {\n\t    clean = true;\n\t  } else {\n\t    var store = elem.data(\"storage\");\n\t    var gen = store ? store.cleanGeneration : data.cleanGeneration;\n\n\t    clean = data.cm.isClean(gen);\n\t  }\n\n\t  elem.prologEditor('markClean', clean);\n\t});\n      });\n    },\n\n    /**\n     * @example // Get the CodeMirror instance\n     * $(element).prologEditor('getOption', 'cm');\n     * @param {String} opt Name of option to fetch.\n     * @return {*}\n     */\n\n    getOption: function(opt) {\n      return this.data(pluginName)[opt];\n    },\n\n    /**\n     * @example // Set the keybinding for the editor\n     * $(element).prologEditor('setKeybinding', 'emacs') set\n     * keybinding schema emacs.\n     * @param {String} schema Name of the keybinding\n     * return {*}\n     */\n    setKeybinding: function(schema) {\n      schema = schema || \"default\";\n      this.data(pluginName).cm.options.keyMap = schema;\n    },\n\n    /**\n     * Switch the editor to the requested mode, possibly by dynamically\n     * loading the mode.  It seems that if we use RequireJS, we should\n     * also use this for loading modes dynamically.\n     */\n    loadMode: function(mode) {\n      var data = this.data(pluginName);\n\n      if ( !CodeMirror.modes[mode] ) {\n\trequire([\"cm/mode/\"+mode+\"/\"+mode],\n\t\t  function() {\n\t\t    data.cm.setOption(\"mode\", mode);\n\t\t  });\n      } else if ( mode != data.mode ) {\n\tdata.cm.setOption(\"mode\", mode);\n      }\n\n      return this;\n    },\n\n    /**\n     * True if this source needs to be sent to the pengine.  This is\n     * the case of the source is loaded.  We should also exclude module\n     * files.  How do we detect a module file?  Detecting the module\n     * header without support from Prolog is rather hard: count the\n     * arity and ignore preceeding comments, encoding and conditional\n     * compilation directives.\n     */\n    isPengineSource: function() {\n      var data = $(this).data(pluginName);\n      if ( data && data.role == \"source\" ) {\n\tvar storageData = $(this).data('storage');\n\n\tif ( storageData && storageData.meta ) {\n\t  if ( storageData.meta.loaded ||\n\t       storageData.meta.module )\n\t    return false;\n\t}\n      }\n\n      return this;\n    },\n\n    /**\n     * Get the defined breakpoints.\n     * @param {String} pengineID is the pengine asking for the\n     * breakpoints.\n     * @returns {Array.Object} an array holding one object per source\n     * with breakpoints.  The object contains `file` and `breakpoints`,\n     * where the latter is an array of integers.\n     */\n    getBreakpoints: function(pengineID) {\n      var result = [];\n\n      this.each(function() {\n\tvar data = $(this).data(pluginName);\n\tvar breakpoints = [];\n\tvar offset = 0;\n\tvar cm = data.cm;\n\tvar line = cm.firstLine();\n\tvar last = cm.lastLine();\n\n\tfor( ; line < last; line++ ) {\n\t  var info = cm.lineInfo(line);\n\t  if ( info.gutterMarkers )\n\t    breakpoints.push(offset+line+1);\n\t}\n\n\tif ( breakpoints.length > 0 ) {\n\t  var file;\n\n\t  if ( data.pengines && data.pengines.indexOf(pengineID) >= 0 ) {\n\t    file = \"pengine://\"+pengineID+\"/src\";\n\t  } else {\n\t    var store = $(this).data(\"storage\");\n\t    if ( store )\n\t      file = \"swish://\"+store.file;\n\t  }\n\n\t  if ( file )\n\t    result.push({ file: file,\n\t\t          breakpoints: breakpoints\n\t\t        });\n\t}\n      });\n\n      return result;\n    },\n\n    /**\n     * Get the source text from a set of editors.  Each source is\n     * preceeded by a line :- '#file'(DocID, Line).\n     *\n     * @param {String} [role] Only return source for editors that\n     * match the given role.\n     * @param {Boolean} [direct] If `true`, do not try to indirect\n     * over the `data.getSource` function.\n     * @returns {String} current contents of the editor.  If\n     * the jQuery object holds multiple editors, we return the\n     * joined content of the editors.\n     */\n    getSource: function(role, direct) {\n      var src = [];\n\n      this.each(function() {\n\tif ( $(this).prologEditor('isPengineSource') ) {\n\t  var data = $(this).data(pluginName);\n\n\t  if ( data ) {\n\t    if ( !role || (role == data.role) ) {\n\t      var mysrc;\n//TBD\t      var docid = $(this).prologEditor('docid');\n\n\t      if ( typeof(data.getSource) == \"function\" && !direct ) {\n\t\tmysrc = data.getSource();\n\t      } else {\n\t\tmysrc = data.cm.getValue();\n\t      }\n//TBD\t      if ( role == \"source\" )\n//TBD\t\tsrc.push(\":- '#file'(\"+Pengine.stringify(docid)+\",1).\");\n\t      src.push(mysrc);\n\t    }\n\t  }\n\t}\n      });\n\n      return src.join(\"\\n\\n\");\n    },\n\n    /**\n     * @returns {Object} holding extended source information\n     */\n    getSourceEx: function() {\n      var obj = { value: this.data(pluginName).cm.getValue()\n\t\t};\n      var bps = this.prologEditor('getBreakpoints');\n      if ( bps.length > 0 )\n\tobj.breakpoints = bps;\n\n      return obj;\n    },\n\n    /*\n     * @returns {String} document identifier relating this editor to\n     * the server side document store.\n     */\n    docid: function() {\n      var st;\n\n      if ( this.hasClass(\"storage\") )\n\treturn this.storage('docid');\n      else if ( (st=this.closest(\".storage\")) && st.length > 0 ) {\n\tstdoc = st.storage('docid');\n\tif ( stdoc )\n\t  return stdoc + \"#\" + this.closest(\".nb-cell\").attr(\"name\");\n      }\n    },\n\n    /**\n     * @return {String[]} UUIDs of the sources used for\n     * server-side analysis.  The array may contain `null`s\n     * for sources that have no server side backup.\n     */\n     getSourceID: function() {\n       var ids = [];\n\n       this.each(function() {\n\t var data = $(this).data(pluginName);\n\n\t if ( data && data.cm && data.cm.state.prologHighlightServer )\n\t   ids.push(data.cm.state.prologHighlightServer.uuid);\n\t else\n\t   ids.push(null);\n       });\n\n       return ids;\n     },\n\n    /**\n     * @param {String} source sets the new content for the editor.  If\n     * the editor is associated with a storage plugin, the call is\n     * forwarded to the storage plugin.\n     * @param {Boolean} [direct=false] if this parameter is `true`, the\n     * message is never delegated to the storage\n     */\n    setSource: function(source, direct) {\n      if ( typeof(source) == \"string\" )\n\tsource = {data:source};\n\n      if ( this.data('storage') && direct != true ) {\n\tthis.storage('setSource', source);\n      } else {\n\tvar data = this.data(pluginName);\n\n\tdata.cm.setValue(source.data);\n\tif ( source.line || source.prompt ) {\n\t  data.cm.refresh();\n\n\t  if ( source.line ) {\n\t    this.prologEditor('gotoLine', source.line, source);\n\t  } else {\n\t    this.prologEditor('showTracePort', source.prompt);\n\t  }\n\t}\n\n\tif ( data.role == \"source\" )\n\t  $(\".swish-event-receiver\").trigger(\"program-loaded\", this);\n      }\n      return this;\n    },\n\n    /**\n     * Advertise this editor as the current editor.  This is the\n     * one used by the default query editor.\n     */\n    makeCurrent: function() {\n      $(\".swish-event-receiver\").trigger(\"current-program\", this);\n      return this;\n    },\n\n    /**\n     * Called if the editor changes from clean to dirty or visa versa.\n     * This triggers `data-is-clean`, which is trapped by the tab to\n     * indicate the changed state of the editor.\n     */\n    markClean: function(clean) {\n      var data = this.data(pluginName);\n\n      if ( data.clean_signalled != clean )\n      { data.clean_signalled = clean;\n\tthis.trigger(\"data-is-clean\", clean);\n      }\n    },\n\n    /**\n     * Set notion of clean for editors that are not associated with a\n     * storage\n     */\n    setIsClean: function() {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = elem.data(pluginName);\n\tdata.cleanGeneration = data.cm.changeGeneration();\n      });\n    },\n\n    /**\n     * @param {Object} options\n     * @param {String} [options.add] Id of pengine to add\n     * @param {String} [options.has] Match pengine, returning boolean\n     */\n    pengine: function(options) {\n      var data = this.data(pluginName);\n\n      if ( data ) {\n\tif ( options.add ) {\n\t  data.pengines = data.pengines || [];\n\t  if ( data.pengines.indexOf(options.add) < 0 )\n\t    data.pengines.push(options.add);\n\n\t  return this;\n\t} else if ( options.has ) {\n\t  return (data.pengines &&\n\t\t  data.pengines.indexOf(options.has) >= 0);\n\t}\n      }\n    },\n\n    /**\n     * print the current content of the editor after applying the\n     * the CodeMirror mode to it.\n     * @param {String} [src] Prolog source to print. Default is to print\n     * the content of the editor.\n     */\n    print: function(src) {\n      var pre = $.el.pre({class:\"cm-s-prolog\"});\n\n      if ( !src ) src = this.prologEditor('getSource');\n\n      CodeMirror.runMode(src, \"prolog\", pre);\n\n      function printWithIframe(elem) {\n\tvar iframe = $.el.iframe({src:\"about:blank\"});\n\t$(\"body\").append(iframe);\n\t$(\"body\", iframe.contentWindow.document).append(elem);\n\tiframe.contentWindow.print();\n      }\n\n      $.ajax({ url: config.http.locations.swish+\"js/codemirror/theme/prolog.css\",\n\t       dataType: \"text\",\n\t       success: function(data) {\n\t\t printWithIframe($.el.div($.el.style(data),\n\t\t\t\t\t  pre));\n\t       },\n\t       error: function(jqXHDR) {\n\t\t modal.ajaxError(jqXHDR);\n\t       }\n             });\n\n      return this;\n    },\n\n    /**\n     * Manage user preference changes.  Defines preferences are:\n     *\n     *   - \"highlight\" -- one of `semantic` or `syntactic`\n     *\n     * @param {Object} pref describes a preference\n     * @param {String} pref.name name of the preference\n     * @param {Any}    pref.value value of the preference\n     */\n    preference: function(pref) {\n      var data = this.data(pluginName);\n\n      if ( pref.name == \"semantic-highlighting\" ) {\n\tdata.cm.setOption(\"prologHighlightServer\",\n\t\t\t  { enabled: pref.value });\n      }\n\n      if ( pref.name == \"emacs-keybinding\") {\n\tif (pref.value == true) {\n\t  data.cm.setOption(\"keyMap\", \"emacs\");\n\t} else {\n\t  data.cm.setOption(\"keyMap\", \"default\");\n\t}\n      }\n\n      return this;\n    },\n\n    /**\n     * Highlight a (syntax) error in the source.\n     * @param {Object} error\n     * @param {String} error.data contains the error message (HTML\n     * string)\n     * @param {Object} error.location contains the location, providing\n     * `line` and `ch` attributes.\n     */\n    highlightError: function(error) {\n      if ( error.location.file &&\n\t   (error.location.file == true ||\n\t    this.prologEditor('isMyFile', error.location.file)) ) {\n\tvar data = this.data(pluginName);\n\tvar chmark;\n\n\tif ( error.location.ch ) {\n\t  left = data.cm.charCoords({ line: error.location.line-1,\n\t\t\t\t      ch:   error.location.ch-1\n\t\t\t\t    },\n\t\t\t\t    \"local\").left;\n\t  chmark = $.el.div({class:\"source-msg-charmark\"},\n\t\t\t    $.el.span({class:\"glyphicon glyphicon-chevron-up\"}));\n\t  $(chmark).css(\"padding-left\", left+\"px\");\n\t}\n\n\tvar elem = $.el.div({ class:\"source-msg error error-context\",\n\t\t\t      title:\"Error message.  Click to remove\"\n\t\t\t    },\n\t\t\t    chmark,\n\t\t\t    $(error.data)[0],\n\t\t\t    $.el.span({class:\"glyphicon glyphicon-remove-circle\"}));\n\tvar widget = data.cm.addLineWidget(error.location.line-1, elem);\n\n\tif ( error.error_context )\n\t  $(elem).data(\"error_context\", error.error_context);\n\t$(elem).on(\"click\", function(ev) {\n\t  if ( error.error_handler &&\n\t       error.error_handler(ev) == false )\n\t    return;\n\t  widget.clear();\n\t});\n\t$(elem).data(\"cm-widget\", widget);\n      }\n\n      return this;\n    },\n\n    /**\n     * Re-run the highlighting.  Used for query editors if the\n     * associated editor has changed.\n     */\n    refreshHighlight: function() {\n      var data = this.data(pluginName);\n      data.cm.serverAssistedHighlight(true);\n      return this;\n    },\n\n    /**\n     * Refresh the editor.  This is often needed if it is resized.\n     */\n    refresh: function() {\n      var data = this.data(pluginName);\n      if ( data )\n\tdata.cm.refresh();\n      return this;\n    },\n\n    /**\n     * Remove all inline messages from the editor\n     */\n    clearMessages: function() {\n      this.find(\".source-msg\").each(function() {\n\t$(this).data(\"cm-widget\").clear();\n      });\n\n      this.prologEditor('showTracePort', null);\n\n      return this;\n    },\n\n    /**\n     * Execute a command on the editor from the menu.  The trick is to\n     * find the current editor.  For that purpose we make \"blur\" trigger\n     * the 'prepare' command that sets the last editor.  On the\n     * following menu action we execute on the last editor.\n     */\n   execCommand: function(command) {\n     if ( command == 'prepare' ) {\n       lastEditor = this[0];\n     } else if ( lastEditor == this[0] ) {\n       elem = $(lastEditor);\n       var data = elem.data(pluginName);\n       data.cm.execCommand(command);\n       elem.find(\".Codemirror-dialog input\").focus();\n     }\n\n     return this;\n   },\n\n    /**\n     * @param {String} file is the file as known to Prolog,\n     * which is `pengine://<pengine>/src/` for the pengine main file\n     * and `swish://store.pl` for included files.\n     * @return {Boolean} whether or not this is my file.\n     */\n    isMyFile: function(file) {\n      var prefix = \"swish://\";\n\n      if ( file.startsWith(\"pengine://\") ) {\n\tvar data = this.data(pluginName);\n\n\tif ( data.pengines &&\n\t     (id = file.split(\"/\")[2]) &&\n\t     data.pengines.indexOf(id) >= 0 )\n\t  return true;\n      }\n\n      if ( file.startsWith(prefix) ) {\n\tvar store = this.data(\"storage\");\n\n\tif ( store && file.slice(prefix.length) == store.file )\n\t  return true;\n      }\n\n      return false;\n    },\n\n    /**\n     * Highlight source events.  The source pengine gets a prompt\n     * with `prompt.file` set to `pengine://<id>/src`.\n     * @param {Object|null} prompt for a tracer action.  Use `null`\n     * to clear.\n     * @return {jQuery|undefined} `this` if successful.  `undefined`\n     * if this is a valid trace event, but I cannot process it.\n     */\n    showTracePort: function(prompt) {\n      if ( this.length == 0 )\n\treturn this;\n\n      var data  = this.data(pluginName);\n\n      if ( data.traceMark ) {\n\tdata.traceMark.clear();\n\tdata.traceMark = null;\n      }\n\n      if ( prompt && prompt.source && prompt.source.file ) {\n\tvar file  = prompt.source.file;\n\n\tif ( this.prologEditor('isMyFile', file) ) {\n\t  if ( prompt.source.from && prompt.source.to ) {\n\t    var from = data.cm.charOffsetToPos(prompt.source.from);\n\t    var to   = data.cm.charOffsetToPos(prompt.source.to);\n\n\t    if ( !this.is(\":visible\") )\n\t      this.storage('expose', \"trace\");\n\n\t    if ( from && to ) {\n\t      data.traceMark = data.cm.markText(from, to,\n\t\t\t\t\t\t{ className: \"trace \"+prompt.port\n\t\t\t\t\t\t});\n\t      data.traceMark.pengine = prompt.pengine;\n\t      data.cm.scrollIntoView(from, 50);\n\t    }\n\t  }\n\n\t  return this;\n\t}\n      } else {\n\treturn this;\n      }\n    },\n\n    /**\n     * Get the selection for later reuse.\n     * @returns {null|Array} Array of selection descriptions for each\n     * editor in the jQuery object that has a selection.  Each editor\n     * selection contains `editor` and `selections`, where `selections`\n     * is an array of objects with `from`, `to` (line,ch), `string` and\n     * `context`.  The latter two allow for fuzzy restoration of the\n     * selection.\n     */\n    getSelection: function() {\n      var selection = [];\n\n      this.each(function() {\n\tvar ed   = $(this);\n\tvar data = ed.data(pluginName);\n\n\tif ( data.cm.somethingSelected() == true ) {\n\t  var sel    = data.cm.listSelections();\n\t  var esel   = {selections:[]};\n\n\t\t\t\t\t\t/* Hack */\n\t  var cell_name = ed.closest(\".nb-cell\").attr(\"name\");\n\t  if ( cell_name )\n\t    esel.cell = cell_name;\n\n\t  for(var i=0; i<sel.length; i++) {\n\t    var s = sel[i];\n\t    var sr = {};\n\n\t    function cmploc(l1, l2) {\n\t      if ( l1.line < l2.line ) return -1;\n\t      if ( l1.line > l2.line ) return  1;\n\t      if ( l1.ch   < l2.ch   ) return -1;\n\t      if ( l1.ch   > l2.ch   ) return  1;\n\t      return 0;\n\t    }\n\t    function sol(pos) {\n\t      return {line:pos.line, ch:0};\n\t    }\n\t    function eol(pos) {\n\t      return {line:pos.line, ch:data.cm.getLine(pos.line).length};\n\t    }\n\t    function cppos(pos) {\n\t      return {line:pos.line, ch:pos.ch};\n\t    }\n\n\t    if ( cmploc(s.anchor, s.head) ) {\n\t      sr.from = cppos(s.anchor);\n\t      sr.to   = cppos(s.head);\n\t    } else {\n\t      sr.to   = cppos(s.anchor);\n\t      sr.from = cppos(s.head);\n\t    }\n\n\t    sr.string  = data.cm.getRange(sr.from, sr.to);\n\t    sr.context = data.cm.getRange(sol(sr.from), eol(sr.to));\n\n\t    esel.selections.push(sr);\n\t  }\n\n\t  selection.push(esel);\n\t}\n      });\n\n      return selection.length > 0 ? selection : null;\n    },\n\n    /**\n     * @param {Array} sel is the selection to restore\n     * @fixme deal with notebook selections\n     */\n    restoreSelection: function(selection) {\n      function restoreEditorSelection(ed, sel) {\n\tvar data    = ed.data(pluginName);\n\tvar cm      = data.cm;\n\tvar cmsel   = [];\n\tvar loffset = \"\";\n\n\tfunction findsel(s) {\n\t  if ( cm.getRange(s.from, s.to) == s.string ) {\n\t    return {anchor:s.from, head: s.to};\n\t  } else {\n\t    var start   = cm.firstLine();\n\t    var end     = cm.lastLine();\n\t    var offset  = 0;\n\t    var goffset = 1;\n\n\t    function contextMatch(l0, s) {\n\t      var lines = s.split(\"\\n\");\n\t      for(var i=0; i<lines.length; i++) {\n\t\tif ( cm.getLine(l0+i) != lines[i] )\n\t\t  return false;\n\t      }\n\t      return true;\n\t    }\n\n\t    function stringMatch(l0, s) {\n\t      var lines = s.split(\"\\n\");\n\t      for(var i=0; i<lines.length; i++) {\n\t\tvar cml = cm.getLine(l0);\n\t\tvar   l = lines[i];\n\t\tvar choff;\n\n\t\tif ( i == 0 ) {\n\t\t  if ( i == lines.length-1 ) {\n\t\t    return cml.indexOf(l);\n\t\t  } else {\n\t\t    choff = cml.indexOf(l);\n\n\t\t    if ( !(choff >= 0 && l.length+choff == cml.length) )\n\t\t      return -1;\n\t\t  }\n\t\t} else if ( i == lines.length-1 ) {\n\t\t  if ( cml.indexOf(l) != 0 )\n\t\t    return -1;\n\t\t} else {\n\t\t  if ( cm.getLine(l0+i) != lines[i] )\n\t\t    return -1;\n\t\t}\n\t      }\n\t      return choff;\t\t\t/* ch of selection start */\n\t    }\n\n\t    function poff(p, l, ch) {\n\t      ch = ch||0;\n\t      return {line:p.line+l, ch:p.ch+ch};\n\t    }\n\n\t    while( s.from.line+offset >= start &&\n\t\t   s.to.line+offset <= end ) {\n\t      var ch;\n\n\t      if ( contextMatch(s.from.line+offset, s.context) )\n\t\treturn { anchor:poff(s.from, offset),\n\t\t\t head:  poff(s.to,   offset),\n\t\t\t offset:offset\n\t\t       };\n\t      if ( (ch=stringMatch(s.from.line+offset, s.string)) >= 0 ) {\n\t\tvar soff = ch-s.from.ch;\n\t\tvar toff = s.to.line != s.from.line ? 0 : soff;\n\n\t\treturn { anchor:poff(s.from, offset, soff),\n\t\t\t head:  poff(s.to,   offset, toff),\n\t\t\t offset:offset\n\t\t       };\n\t      }\n\n\t      goffset++;\n\t      offset = Math.floor(goffset/2);\n\t      if ( goffset%2 == 1 )\n\t\toffset = -offset;\n\t    }\n\t  }\n\t}\n\n\tfor(var i=0; i<sel.length; i++) {\n\t  var r = findsel(sel[i]);\n\t  if ( r ) {\n\t    cmsel.push(r);\n\t    if ( r.offset ) {\n\t      if ( loffset != \"\" )\n\t\tloffset += \";\";\n\t      loffset += r.offset\n\t    }\n\t  }\n\t}\n\n\tif ( cmsel.length > 0 )\n\t  cm.setSelections(cmsel, 0);\n\tif ( loffset != \"\" || cmsel.length < sel.length ) {\n\t  var msg;\n\n\t  if ( cmsel.length == sel.length )\n\t    msg = \"Found selections at offset \"+loffset;\n\t  else if ( loffset == \"\" )\n\t    msg = \"Could not restore all selections\";\n\t  else\n\t    msg = \"Only found some selections at offsets \" + loffset;\n\n\t  modal.feedback({ html: msg, owner: ed });\n\t}\n      }\n\n      // Our body\n      if ( selection[0].cell ) {\t/* notebook style */\n\tvar editors = this;\n\n\tfor(var i=0; i<selection.length; i++) {\n\t  var s = selection[i];\n\n\t  function findEditor(name) {\n\t    for(var i=0; i<editors.length; i++) {\n\t      if ( $(editors[i]).closest(\".nb-cell\").attr(\"name\") == name )\n\t\treturn $(editors[i]);\n\t    }\n\t  }\n\n\t  var ed = findEditor(s.cell);\n\t  if ( ed )\n\t    restoreEditorSelection(ed, s.selections);\n\t}\n      } else {\t\t\t\t/* plain editor */\n\trestoreEditorSelection(this, selection);\n      }\n\n      return this;\n    },\n\n    /**\n     * Extract example queries from text.  By   default,  this looks for\n     * structured  comment  blocks  labelled   *examples*  and  extracts\n     * fragments between `^ *?-` and `.`\n     *\n     * @param {String} [src] Source to parse. Default is the editor\n     * content.\n     * @param {Boolean} [inComment=true] if `true`, only process text\n     * that is in an *examples* structured comment block\n     * @returns {null|Array} Examples extracted from the source code.  If\n     * there is _no source_ code, `null` is returned.\n     */\n    getExamples: function(src, inComment) {\n      var source = src ? src : this.prologEditor('getSource');\n      var comments;\n      var exlist = [];\n\n      if ( $.trim(source) == \"\" )\n\treturn null;\n\n      if ( inComment == false )\n\tcomments = [src];\n      else\n\tcomments = source.match(/\\/\\*\\* *<?examples>?[\\s\\S]*?\\*\\//igm);\n\n      if ( comments ) {\n\tfor(var i=0; i<comments.length; i++) {\n\t  var exl = comments[i].match(/^ *\\?-[\\s\\S]*?[^-#$&*+./:<=>?@\\\\^~]\\.\\s/gm);\n\n\t  if ( exl ) {\n\t    for(var j=0; j<exl.length; j++) {\n\t      var ex = exl[j].replace(/^ *\\?-\\s*/, \"\")\n\t\t\t     .replace(/\\s*$/, \"\");\n\t      exlist.push(ex);\n\t    }\n\t  }\n\t}\n      }\n\n      return exlist;\n    },\n\n    /**\n     * Add an example to the examples comment block or create such a\n     * block.\n     */\n    addExample: function(query) {\n      var cm      = this.data(pluginName).cm;\n      var source = this.prologEditor('getSource');\n      var start  = this.prologEditor('search',\n\t\t\t\t     /\\/\\*\\* *<?examples>?/igm, {dir:-1,max:1});\n      var end    = this.prologEditor('search', /\\*\\//, {start:start.line,max:1});\n\n      if ( start.length == 1 && end.length == 1 ) {\n\tvar current = this.prologEditor('getExamples', source);\n\n\tif ( current && current.indexOf(query) != -1 )\n\t{ modal.alert(\"Query is already in examples\");\n\t  return this;\n\t}\n\n\tcm.setSelection({line:end[0].line-1, ch:0});\n\tcm.replaceSelection(\"?- \"+query+\"\\n\");\n      } else\n      { cm.setSelection({line:cm.lastLine(), ch:0});\n\tcm.replaceSelection(\"/** <examples>\\n\" +\n\t\t\t    \"?- \"+query+\"\\n\" +\n\t\t\t    \"*/\\n\");\n      }\n\n      return this;\n    },\n\n    /**\n     * @param {RegExp} re is the regular expression to search for\n     * @param {Object} [options]\n     * @param {number} [options.max] is the max number of hits to return\n     * @returns {Array.object} list of objects holding the matching line\n     * content and line number.\n     * @param {number} [options.dir=1] is -1 to search backwards\n     * @param {number} [options.start] to start at a given line\n     */\n    search: function(re, options) {\n      var cm      = this.data(pluginName).cm;\n      var dir     = options.dir||1;\n      var start   = cm.firstLine();\n      var end     = cm.lastLine();\n      var matches = [];\n\n      if ( dir == -1 )\n      { var tmp = start;\n\tstart = end;\n\tend = tmp;\n      }\n      if ( options.start !== undefined )\n\tstart = options.start;\n\n      if ( (dir > 0 && start > end) ||\n\t   (dir < 0 && start < end) )\n\treturn matches;\n      end += dir;\n\n      for(var i=start; i!=end; i+=dir) {\n\tvar line = cm.getLine(i);\n\tif ( line.search(re) >= 0 ) {\n\t  matches.push({line:i+1, text:line});\n\t  if ( options.max && options.max === matches.length )\n\t    return matches;\n\t}\n      }\n\n      return matches;\n    },\n\n    /**\n     * Go to a given 1-based line number and optionally highlight the\n     * match(es).\n     *\n     * @param {number} line\n     * @param {Object} [options]\n     * @param {RegExp} [options.regex] If provided, highlight the\n     * matches.\n     * @param {Boolean} [options.showAllMatches] if `true`, show all\n     * matches in the viewport.\n     */\n    gotoLine: function(line, options) {\n      var data = this.data(pluginName);\n      var cm   = data.cm;\n      var ch   = 0;\n      var re;\n\n      function clearSearchMarkers(cm) {\n\tif ( cm._searchMarkers !== undefined ) {\n\t  for(var i=0; i<cm._searchMarkers.length; i++)\n\t    cm._searchMarkers[i].clear();\n\t  cm.off(\"cursorActivity\", clearSearchMarkers);\n\t}\n\tcm._searchMarkers = [];\n      }\n\n      clearSearchMarkers(cm);\n      options = options||{};\n      re      = options.regex;\n      line    = line-1;\n\n      if ( re ) {\n\tch = cm.getLine(line).search(re);\n\tif ( ch < 0 )\n\t  ch = 0;\n      }\n\n      cm.setCursor({line:line,ch:ch});\n      var myHeight = cm.getScrollInfo().clientHeight;\n      var coords = cm.charCoords({line: line, ch: 0}, \"local\");\n      cm.scrollTo(null, (coords.top + coords.bottom - myHeight) / 2);\n\n      if ( re ) {\n\tfunction markMatches(line, className) {\n\t  var match;\n\n\t  while( (match=re.exec(cm.getLine(line))) ) {\n\t    cm._searchMarkers.push(\n\t      cm.markText({line:line,ch:match.index},\n\t\t\t  {line:line,ch:match.index+match[0].length},\n\t\t\t  {className:className,\n\t\t\t   clearOnEnter: true,\n\t\t\t   clearWhenEmpty: true,\n\t\t\t   title: \"Search match\"\n\t\t\t  }));\n\t  }\n\t}\n\n\tmarkMatches(line, \"CodeMirror-search-match\");\n\tif ( options.showAllMatches ) {\n\t  var vp = cm.getViewport();\n\n\t  for(var i=vp.from; i<vp.to; i++) {\n\t    if ( i != line ) {\n\t      markMatches(i, \"CodeMirror-search-alt-match\");\n\t    }\n\t  }\n\t}\n\n\tif ( cm._searchMarkers.length > 0 )\n\t  cm.on(\"cursorActivity\", clearSearchMarkers);\n      } else {\t\t\t\t\t/* mark entire line */\n\tcm._searchMarkers.push(\n\t      cm.markText({line:line, ch:0},\n\t\t\t  {line:line, ch:cm.getLine(line).length},\n\t\t\t  {className:\"CodeMirror-search-match\",\n\t\t\t   clearOnEnter: true,\n\t\t\t   clearWhenEmpty: true,\n\t\t\t   title: \"Target line\"\n\t\t\t  }));\n      }\n\n      return this;\n    },\n\n    /**\n     * @return {Integer} change generation for this editor\n     */\n    changeGen: function() {\n      return this.data(pluginName).cm.changeGeneration();\n    },\n\n    isClean: function(gen) {\n      return this.data(pluginName).cm.isClean(gen);\n    },\n\n    /**\n     * Associate the editor with the server side (gitty) source\n     */\n    setupStorage: function(storage) {\n      var data = this.data(pluginName);\n      var elem = this;\n\n      storage.setValue = function(source) {\n\telem.prologEditor('setSource', source, true);\n      };\n      storage.getValue = function() {\n\treturn data.cm.getValue();\n      };\n      storage.changeGen = function() {\n\treturn data.cm.changeGeneration();\n      };\n      storage.isClean = function(generation) {\n\treturn data.cm.isClean(generation);\n      };\n      storage.markClean = function(clean) {\n\telem.prologEditor('markClean', clean);\n      };\n\n      storage.cleanGeneration = data.cm.changeGeneration();\n      storage.cleanData       = data.cm.getValue();\n      storage.cleanCheckpoint = \"load\";\n\n      this.storage(storage);\n      return this;\n    },\n\n    /**\n     * Act on the current token.  Normally invoked after a long click.\n     */\n    contextAction: function() {\n      var elem  = this;\n      var data  = this.data(pluginName);\n      var here  = data.cm.getCursor();\n      var token = data.cm.getTokenAt(here, true);\n      var et    = data.cm.getEnrichedToken(token);\n      var locations = data.cm.getTokenReferences(et);\n\n      if ( locations && locations.length > 0 ) {\n\tvar ul = $.el.ul();\n\tvar select  = $.el.div({class: \"goto-source\"}, $.el.div(\"Go to\"), ul);\n\tvar modalel = $.el.div({class: \"edit-modal\"},\n\t\t\t       $.el.div({class: \"mask\"}),\n\t\t\t       select)\n\n\tfor(var i=0; i<locations.length; i++) {\n\t  var loc = locations[i];\n\t  $(ul).append($.el.li($.el.a({'data-locindex':i}, loc.title)));\n\t}\n\n\tvar coord = data.cm.cursorCoords(true);\n\t$(select).css({top: coord.bottom, left: coord.left});\n\n\t$(\"body\").append(modalel);\n\t$(modalel).on(\"click\", function(ev) {\n\t  var i = $(ev.target).data('locindex');\n\t  $(modalel).remove();\n\n\t  if ( i !== undefined ) {\n\t    var loc = locations[i];\n\n\t    if ( loc.file ) {\n\t      elem.closest(\".swish\").swish('playFile', loc);\n\t    } else {\n\t      var editor;\n\n\t      // If we are the query editor, we must find the related\n\t      // program editor.\n\t      if ( data.role == \"query\" ) {\n\t\teditor = elem.closest(\".prolog-query-editor\")\n\t\t\t     .queryEditor('getProgramEditor');\n\n\t\tif ( !editor[0] )\n\t\t  modal.alert(\"No related program editor\");\n\t      } else\n\t      { editor = elem;\n\t      }\n\n\t      if ( editor && editor[0] )\n\t\teditor.prologEditor('gotoLine', loc.line, loc).focus();\n\t    }\n\n\t  }\n\t});\n\n\t$(modalel).show();\n      }\n\n      return this;\n    },\n\n\t\t /*******************************\n\t\t *\tQUERY MANIPULATION\t*\n\t\t *******************************/\n\n    /**\n     * @param {String} [query] query to get the variables from\n     * @param {Boolean} [anon] if `true`, also include _X variables.\n     * @return {List.string} is a list of Prolog variables without\n     * duplicates\n     */\n\n    variables: function(query, anon) {\n      var qspan = $.el.span({class:\"query cm-s-prolog\"});\n      var vars = [];\n\n      CodeMirror.runMode(query, \"prolog\", qspan);\n\n      function addVars(selector) {\n\t$(qspan).find(selector).each(function() {\n\t  var name = $(this).text();\n\t  if ( vars.indexOf(name) < 0 )\n\t    vars.push(name);\n\t});\n      }\n\n      addVars(\"span.cm-var\");\n      if ( anon )\n\taddVars(\"span.cm-var-2\");\n\n      return vars;\n    },\n\n    /**\n     * Wrap current query in a solution modifier.\n     * TBD: If there is a selection, only wrap the selection\n     *\n     * @param {String} wrapper defines the type of wrapper to use.\n     */\n    wrapSolution: function(wrapper) {\n      var query = prolog.trimFullStop(this.prologEditor('getSource', \"query\"));\n      var that = this;\n      var vars = this.prologEditor('variables', query);\n\n      function wrapQuery(pre, post) {\n\tthat.prologEditor('setSource', pre + \"(\"+query+\")\" + post + \".\")\n\t    .focus();\n\treturn that;\n      }\n\n      function prefixQuery(pre) {\n\tthat.prologEditor('setSource', pre + query + \".\")\n\t    .focus();\n\treturn that;\n      }\n\n      function order(l) {\n\tvar order = [];\n\tfor(var i=0; i<vars.length; i++)\n\t  order.push(\"asc(\"+vars[i]+\")\");\n\treturn order.join(\",\");\n      }\n\n      switch ( wrapper ) {\n        case \"Aggregate (count all)\":\n\t  return wrapQuery(\"aggregate_all(count, \", \", Count)\");\n\tcase \"Projection\":\n\t  return prefixQuery(\"projection([\"+vars.join(\",\")+\"]),\\n\");\n        case \"Order by\":\n\t  return wrapQuery(\"order_by([\"+order(vars)+\"], \", \")\");\n        case \"Distinct\":\n\t  return wrapQuery(\"distinct([\"+vars.join(\",\")+\"], \", \")\");\n        case \"Limit\":\n\t  return wrapQuery(\"limit(10, \", \")\");\n        case \"Time\":\n\t  return wrapQuery(\"time(\", \")\");\n        case \"Debug (trace)\":\n\t  return wrapQuery(\"trace, \", \"\");\n\tdefault:\n\t  alert(\"Unknown wrapper: \\\"\"+wrapper+\"\\\"\");\n      }\n    }\n  }; // methods\n\n  tabbed.tabTypes.program = {\n    dataType: \"pl\",\n    typeName: \"program\",\n    label: \"Program\",\n    contentType: \"text/x-prolog\",\n    order: 100,\n    create: function(dom, options) {\n      $(dom).addClass(\"prolog-editor\")\n            .prologEditor($.extend({save:true}, options))\n\t    .prologEditor('makeCurrent');\n    }\n  };\n\n  if ( config.swish.tab_types ) {\n    var editDefaults = {\n      save: true,\n      lineNumbers: true\n    };\n\n    for(var i=0; i<config.swish.tab_types.length; i++) {\n      var tabType = config.swish.tab_types[i];\n      if ( tabType.editor ) {\n\tvar options = $.extend({typeName:tabType.typeName},\n\t\t\t       editDefaults,\n\t\t\t       tabType.editor);\n\n\ttabType.create = function(dom) {\n\t  $(dom).addClass(\"prolog-editor\")\n\t        .prologEditor(options);\n\t};\n\n\ttabbed.tabTypes[tabType.typeName] = tabType;\n      }\n    }\n  }\n\n\n  /**\n   * The prologEditor jQuery plugin converts a `<div>` into an code\n   * editor based on [CodeMirror](http://codemirror.net)\n   *\n   * @class prologEditor\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @example // Create a default Prolog editor\n   * $(\"#editor\").prologEditor();\n   * @example // Extract embedded examples\n   * $(\"#editor\").prologEditor('getExamples');\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.prologEditor = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\n\t\t /*******************************\n\t\t *\t     FUNCTIONS\t\t*\n\t\t *******************************/\n\nCodeMirror.prototype.charOffsetToPos = function(offset) {\n  var line = this.firstLine();\n  var last = this.lastLine();\n  var charno = 0;\n\n  for( ; line < last; line++ ) {\n    var text = this.getLine(line);\n\n    if ( charno <= offset && charno+text.length >= offset )\n      return {line:line, ch:offset-charno};\n\n    charno += text.length + 1;\t\t/* one extra for the newline */\n  }\n};\n\n\n\t\t /*******************************\n\t\t *\t      EMACS\t\t*\n\t\t *******************************/\n\nCodeMirror.keyMap.emacs.Enter = \"newlineAndIndent\";\n\n\n\t\t /*******************************\n\t\t *\tSTYLE CONFIGURATION\t*\n\t\t *******************************/\n\n/**\n * Include styles provided through the configuration object.\n *\n * @param {Object} style is an object mapping style names into style\n * properties.  The properties are also in an object, linking style\n * names to values.  For example:\n *\n *    ```\n *    { column: {color: \"#8b008b},\n *      table:  {color: \"#8b008b, \"font-weight\":\"bold\"}\n *    }\n *    ```\n */\n\nfunction loadStyleExtensions(style, prefix)\n{ var parts=[];\n\n  prefix = prefix || \"\";\n\n  parts.push(\"<style>\\n\");\n  for(var sname in style) {\n    if ( style.hasOwnProperty(sname) ) {\n      var attrs = style[sname];\n\n      parts.push(prefix, sname, \"{\");\n\n      for(var a in attrs) {\n\tif ( attrs.hasOwnProperty(a) ) {\n\t  parts.push(a, \":\", attrs[a], \";\");\n\t}\n      }\n\n      parts.push(\"}\\n\");\n    }\n  }\n  parts.push(\"</style>\\n\");\n\n  $(\"body\").append(parts.join(\"\"));\n}\n\nif ( config.swish.cm_style )\n  loadStyleExtensions(config.swish.cm_style,\n\t\t      \".cm-s-prolog span.cm-\");\nif ( config.swish.cm_hover_style )\n  loadStyleExtensions(config.swish.cm_hover_style,\n\t\t      \".CodeMirror-hover-tooltip \");\n\n}); // define\n;\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2017, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Provide the query editing facilities.\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n * @requires laconic\n * @requires editor\n */\n\ndefine('query',[ \"jquery\", \"config\", \"preferences\", \"cm/lib/codemirror\", \"modal\",\n\t \"laconic\", \"editor\"\n       ],\n       function($, config, preferences, CodeMirror, modal) {\n\n(function($) {\n  var pluginName = 'queryEditor';\n\n  var defaults = {\n    maxHistoryLength: 50\n  };\n\n  /** @lends $.fn.queryEditor */\n  var methods = {\n    /**\n     * @param {Object} options\n     * @param {Runner} options.runner an object that understands\n     * run(source, query), where source and query are strings.\n     * @param {Array.String|Function} [options.examples] called to\n     * populate the _Examples_ menu. Must return an array of strings.\n     * @param {Integer} [options.maxHistoryLength=50] is the max number\n     * of entries recalled by the history menu.\n     */\n    _init: function(options) {\n      return this.each(function() {\n\tvar elem   = $(this);\n\tvar data   = $.extend({}, defaults, options);\n\tvar qediv  = $.el.div({class:\"query\"});\n\tvar tabled = tableCheckbox(data);\n\n\telem.addClass(\"prolog-query-editor swish-event-receiver reactive-size\");\n\n\telem.append(qediv,\n\t\t    $.el.div({class:\"prolog-prompt\"}, \"?-\"),\n\t\t    $.el.div({class:\"query-buttons\"},\n\t\t\t     $.el.span({class:\"buttons-left\"},\n\t\t\t\t       examplesButton(data),\n\t\t\t\t       historyButton(data),\n\t\t\t\t       aggregateButton(data)),\n\t\t\t     $.el.span({class:\"buttons-right\"},\n\t\t\t\t       tabled,\n\t\t\t\t       runButton(data))));\n\n\tfunction tableSelected() {\n\t  return $(tabled).find(\"input\").prop(\"checked\");\n\t}\n\n\t$(qediv).append(elem.children(\"textarea\"))\n\t        .prologEditor({ role: \"query\",\n\t\t\t\tsourceID: function() {\n\t\t\t\t  return data.sourceID();\n\t\t\t\t},\n\t\t\t\tprologQuery: function(q) {\n\t\t\t\t  elem.queryEditor('run', q, tableSelected());\n\t\t\t\t}\n\t\t              });\n\n\telem.data(pluginName, data);\n\n\tif ( !$(qediv).prologEditor('getSource', \"query\") )\n\t{ if ( typeof(data.examples) == \"object\" ) {\n\t    if ( data.examples[0] )\n\t      $(qediv).prologEditor('setSource', data.examples[0]);\n\t  } else {\n\t    elem[pluginName]('setProgramEditor', $(data.editor), true);\n\t  }\n\t}\n\n\telem.on(\"current-program\", function(ev, editor) {\n\t  elem[pluginName]('setProgramEditor', $(editor));\n\t});\n\telem.on(\"program-loaded\", function(ev, editor) {\n\t  if ( $(data.editor).data('prologEditor') ==\n\t       $(editor).data('prologEditor') ) {\n\t    var exl = data.examples();\n\t    elem.queryEditor('setQuery', exl && exl[0] ? exl[0] : \"\");\n\t  }\n\t});\n      });\n    },\n\n    /**\n     * @param {jQuery} editor has become the new current program\n     * editor.  Update the examples and re-run the query highlighting.\n     */\n    setProgramEditor: function(editor, force) {\n      var data = this.data(pluginName);\n\n      if ( data.editor == editor[0] && !force )\n\treturn this;\n\n      data.editor = editor[0];\n      if ( data.editor ) {\n\tdata.examples = function() {\n\t  var exl    = editor.prologEditor('getExamples')||[];\n\t  var global = editor.parents(\".swish\").swish('examples', true)||[];\n\n\t  if ( $.isArray(global) )\n\t  exl.concat(global);\n\n\t  return exl;\n\t};\n\tif ( editor.prologEditor('isPengineSource') ) {\n\t  data.source = function() {\n\t    var src = editor.prologEditor('getSource', \"source\");\n\t    var bg  = $(\".background.prolog.source\").text();\n\n\t    if ( bg )\n\t      src += '\\n%@background@\\n' + bg;\n\n\t    return src;\n\t  };\n\t} else {\n\t  data.source = \"\";\n\t}\n\tdata.sourceID = function() {\n\t  return editor.prologEditor('getSourceID');\n\t};\n\n\tvar exl = data.examples();\n\tif ( exl && exl[0] && this.queryEditor('isClean') ) {\n\t  this.queryEditor('setQuery', exl[0]);\n\t} else {\n\t  editor.prologEditor('refreshHighlight');\n\t}\n      } else\n      { data.examples = \"\";\n      }\n    },\n\n    /**\n     * @returns {jQuery} the associated program editor\n     */\n    getProgramEditor: function() {\n      var data = this.data(pluginName);\n\n      if ( data.editor )\n\treturn $(data.editor);\n      else\n\treturn $();\n    },\n\n    /**\n     * @param {Array.String} set or extend the contents of the\n     * _Examples_ menu.\n     * @param {Boolean} [clear=true] clear the list before adding the\n     * new examples.\n     */\n    setExamples: function(list, clear) {\n      var ul = this.find(\"ul.examples\");\n\n      if ( !list ) list  = [];\n      if ( clear === undefined ) clear = true;\n\n      if ( clear && sameExamples(list) )\n\treturn this;\t\t\t/* no change */\n\n      function sameExamples(exs) {\n\tvar ex0;\n\n\tif ( (ex0=ul.data('examples')) &&\n\t     ex0.length == exs.length ) {\n\t  for(var i=0; i<ex0.length; i++) {\n\t    if ( ex0[i] != exs[i] )\n\t      return false;\n\t  }\n\t  return true;\n\t}\n\treturn false;\n      }\n\n      if ( clear === true )\n\tul.html(\"\");\n      ul.find(\"li.add-example, li.divider\").remove();\n      for(var i=0; i<list.length; i++) {\n\tul.append($.el.li($.el.a(list[i])));\n      }\n      ul.data('examples', list.slice(0));\n      ul.append($.el.li({class:\"divider\"}));\n      ul.append($.el.li({class:'add-example'},\n\t\t\t$.el.a(\"Add current query to examples\")));\n\n      return this;\n    },\n\n    /**\n     * Add the current query to the examples in the program\n     */\n    addExample: function()\n    { var query\t= this.find(\".query\").prologEditor('getSource');\n\n      if ( query.trim() != \"\" ) {\n\t$(\".swish-event-receiver:visible\")\n\t     .trigger(\"addExample\",\n\t\t      this.find(\".query\").prologEditor('getSource'));\n      } else\n      { modal.alert(\"The query window is empty\");\n      }\n\n      return this;\n    },\n\n    /**\n     * Add a query to the history menu. If it is already part of the\n     * menu, move it to the bottom.  If the menu exceeds the value\n     * of the option `maxHistoryLength`, remove the oldest entry.\n     * @param {String} query query to add to the history menu.\n     */\n    addHistory: function(query) {\n      var ul   = this.find(\"ul.history\");\n      var data = this.data('queryEditor');\n\n      function findInHistory() {\n\treturn ul.children().filter(function() {\n\t  return $(this).text() == query;\n\t});\n      }\n\n      if ( query ) {\n\tvar li;\n\n\tif ( (li=findInHistory()) )\n\t  li.remove();\n\tif ( ul.children().length >= data.maxHistoryLength )\n\t  ul.children().first().remove();\n\tul.append($.el.li($.el.a(query)));\n      }\n\n      return this;\n    },\n\n    /**\n     * Set the current query and focus the editor.\n     * @param {String} query the new value of the query\n     */\n    setQuery: function(query) {\n      var data = this.data(pluginName);\n\n      data.cleanGen =\n\tthis.find(\".query\")\n\t    .prologEditor('setSource', query)\n\t    .focus()\n\t    .prologEditor('changeGen');\n\n      return this;\n    },\n\n    isClean: function() {\n      var data = this.data(pluginName);\n\n      return ( !this.queryEditor('getQuery') ||\n\t       ( data.cleanGen &&\n\t\t this.find(\".query\").prologEditor('isClean', data.cleanGen)\n\t       )\n\t     );\n    },\n\n    /**\n     * @returns {String} the current query as Prolog text\n     */\n    getQuery: function() {\n      return this.find(\".query\").prologEditor('getSource', \"query\");\n    },\n\n    /**\n     * Collect source and query and submit them to the associated\n     * `runner`.\n     *\n     * @param {String} [q] is the query to execute.  Default asks it\n     * from the associated query editor.\n     * @param {Boolean} [tabled=false] when `true`, present the results\n     * as a table.\n     */\n    run: function(q, tabled) {\n      var data  = this.data('queryEditor');\n\n      if ( q === undefined ) q = this.queryEditor('getQuery');\n      q = $.trim(q);\n\n      if ( !q ) {\n\t$(\".swish-event-receiver\").trigger(\"help\", {file:\"query.html\"});\n\treturn this;\n      }\n      $(\".swish-event-receiver\").trigger(\"clearMessages\");\n\n      var query = { query: q,\n\t\t    editor: data.editor,\n\t\t    query_editor: this.find(\".query\")\n\t\t  };\n\n      if ( typeof(data.source) == \"function\" )\n\tquery.source = data.source(q);\n      else if ( typeof(data.source) == \"string\" )\n\tquery.source = data.source;\n      if ( tabled )\n\tquery.tabled = true;\n\n      this.queryEditor('addHistory', q);\n      data.runner.prologRunners('run', query);\n\n      return this;\n    }\n  }; // methods\n\n\n\t\t /*******************************\n\t\t *\tPRIVATE FUNCTIONS\t*\n\t\t *******************************/\n\n  /* Allow for e.g. Q(part).method(...)\n  */\n\n  function Q(from) {\n    return $(from).closest(\".prolog-query-editor\");\n  }\n\n  function dropup(cls, label, options) {\n    var dropup = $.el.div(\n      {class:\"btn-group dropup\"},\n      $.el.button(\n\t{class:\"btn btn-default btn-xs dropdown-toggle \"+cls,\n\t \"data-toggle\":\"dropdown\"},\n\tlabel,\n\t$.el.span({class:\"caret\"})),\n      $.el.ul({class:\"dropdown-menu \"+cls}));\n\n    $(dropup).on(\"click\", \"a\", function() {\n      var li = $(this).closest(\"li\");\n\n      if ( li.hasClass(\"add-example\") )\n\tQ(this).queryEditor('addExample');\n      else\n\tQ(this).queryEditor('setQuery', $(this).text());\n    });\n\n    return dropup;\n  }\n\n  function examplesButton(options) {\n    var el = dropup(\"examples\", \"Examples\", options);\n    var ul = $(el).find(\"ul\");\n\n    function updateExamples(options) {\n      var list = options.examples();\n\n      if ( $.isArray(list) )\n\tQ(el).queryEditor('setExamples', list, true);\n    }\n\n    if ( typeof(options.examples) == \"function\" ) {\n      var copy = $.extend({}, options);\n      $(el).mousedown(function(ev) {\n\t\t\tif ( ev.which == 1 ) {\n\t\t\t  updateExamples(copy);\n\t\t\t}\n\t\t      });\n    } else if ( options.examples ) {\n      var list = options.examples;\n\n      for(var i=0; i<list.length; i++) {\n\tul.append($.el.li($.el.a(list[i])));\n      }\n    }\n\n    return el;\n  }\n\n  function historyButton(options) {\n    return dropup(\"history\", \"History\", options);\n  }\n\n  function aggregateButton(options) {\n    var cls = \"aggregate\";\n    var list = options.aggregates ||\n      [ \"Aggregate (count all)\",\n\t\"--\",\n\t\"Projection\",\n\t\"Order by\",\n\t\"Distinct\",\n\t\"Limit\",\n\t\"--\",\n\t\"Time\",\n\t\"Debug (trace)\"\n      ];\n    var ul;\n\n    var dropup = $.el.div(\n      {class:\"btn-group dropup\"},\n      $.el.button(\n\t{class:\"btn btn-default btn-xs dropdown-toggle \"+cls,\n\t \"data-toggle\":\"dropdown\"},\n\t\"Solutions\",\n\t$.el.span({class:\"caret\"})),\n      ul=$.el.ul({class:\"dropdown-menu \"+cls}));\n\n    for(var i = 0; i<list.length; i++) {\n      var wrap = list[i];\n\n      if ( wrap == \"--\" )\n\t$(ul).append($.el.li({class:\"divider\"}));\n      else\n\t$(ul).append($.el.li($.el.a(wrap)));\n    }\n\n    $(dropup).on(\"click\", \"a\", function() {\n      Q(this).find(\".query\").prologEditor('wrapSolution', $(this).text());\n    });\n\n    return dropup;\n  }\n\n  function runButton(options) {\n    var button =\n      $.el.button(\n\t{class:\"run-btn-query\",\n\t class:\"btn btn-default btn-primary btn-xs\"\n\t},\n\t\"Run!\");\n\n    $(button).on(\"click\", function() {\n      Q(this).queryEditor('run', undefined, tableSelected(this));\n    });\n\n    return button;\n  }\n\n  function tableSelected(from) {\n    return $(from).parent().find(\"input\").prop(\"checked\");\n  }\n\n  function tableCheckbox(options) {\n    var checked = preferences.getVal(\"tabled_results\");\n    var attr    = {type:\"checkbox\", name:\"table\"};\n\n    if ( checked === undefined ) {\n      checked = config.swish.tabled_results;\n    }\n    if ( checked )\n      attr.checked = \"checked\";\n\n    var input = $.el.input(attr);\n    var checkbox = $.el.span({class:\"run-chk-table\"},\n\t\t\t     input, \" table results\");\n    $(input).on(\"change\", function(ev) {\n      preferences.setVal(\"tabled_results\",\n\t\t\t $(ev.target).prop(\"checked\"));\n    });\n\n    return checkbox;\n  }\n\n  /**\n   * <Class description>\n   *\n   * @class queryEditor\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.queryEditor = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2016, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\ndefine('term',[ \"jquery\" ],\n       function() {\n\nfunction unfold() {\n\t$(this).next().toggleClass('fold')\n\t$(this).remove()\n}\n\n$(document).on('click', '.pl-functor, .pl-infix', function() {\n\tvar p = $(this).parent()\n\t$(p).toggleClass('fold')\n\t$(p).before('<span class=\"pl-ellipsis\">...</span>').prev().click(unfold)\n})\n\n}); // define\n;\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2017, VU University Amsterdam\n\t\t\t CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Handle JavaScript based login\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('login',[ \"jquery\", \"modal\", \"config\", \"form\", \"laconic\" ],\n       function($, modal, config, form) {\n\nvar DEFAULT_USER_FIELDS = [\"display_name\", \"email\", \"avatar\"];\n\n(function($) {\n  var pluginName = 'login';\n\n  /** @lends $.fn.login */\n  var methods = {\n    _init: function(options) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = {};\n\n\tdata.url = elem.attr(\"href\");\n\telem.removeAttr(\"href\");\n\n\telem.on(\"click\", function(ev) {\n\t  if ( elem.hasClass(\"login\") )\n\t    elem.login('login', ev);\n\t});\n\n\telem.data(pluginName, data);\n\telem.login('update', \"startup\");\n      });\n    },\n\n    /**\n     * Update the status of the login element\n     */\n    update: function(why) {\n      var elem = $(this);\n      $.get(config.http.locations.user_info, {reason:why},\n\t    function(obj) {\n\t      if ( obj ) {\n\t\tconfig.swish.user = obj;\n\t\telem.removeClass(\"login\").addClass(\"logout\");\n\n\t\tvar span = elem.find(\"span.logout span.value\");\n\t\tvar icon;\n\n\t\tif ( obj.avatar ) {\n\t\t  icon = $.el.img({ class: \"profile-picture\",\n\t\t\t\t    src: obj.avatar\n\t\t\t\t  });\n\t\t} else {\n\t\t  icon = $.el.span({class:\"glyphicon glyphicon-user\"});\n\t\t}\n\t\ticon = $.el.span(icon, $.el.b({class: \"caret\"}));\n\t\tspan.html(\"\");\n\t\tspan.append(form.widgets.dropdownButton(icon, {\n\t\t  divClass:\"user-menu btn-transparent\",\n\t\t  ulClass:\"pull-right\",\n\t\t  client: elem,\n\t\t  actions: {\n\t\t    \"Logout\":  elem.hasClass('no-logout') ? undefined :\n\t\t\t       function() {\n\t\t      this.login('logout');\n\t\t    },\n\t\t    \"Profile\": function() {\n\t\t      this.login('profile');\n\t\t    }\n\t\t  }\n\t\t}));\n\t      } else\n\t      { delete config.swish.user;\n\t\telem.removeClass(\"logout\").addClass(\"login\");\n\t      }\n\t    },\n\t    \"json\");\n    },\n\n    /**\n     * Perform the login\n     */\n    login: function(ev) {\n      var elem   = $(this);\n      var data   = this.data(pluginName);\n      var target = $(ev.target);\n      var url    = data.url;\n      var server = target.closest(\"[data-server]\").data(\"server\");\n      var frame  = target.closest(\"[data-frame]\").data(\"frame\")||\"iframe\";\n\n      if ( server )\n\turl += \"?server=\"+encodeURIComponent(server);\n\n      if ( frame == \"popup\" ) {\n\topenPopup(url, \"_blank\",\n\t\t  'location=true,status=true,height=400,width=800',\n\t\t  function() {\n\t\t    elem.login('logged_in');\n\t\t  });\n      } else {\n\tmodal.show({\n\t  title: \"Login\",\n\t  body: function() {\n\t    var button = $.el.button({ name:\"ok\",\n\t\t\t\t       class:\"btn btn-primary login-cont\",\n\t\t\t\t       \"data-dismiss\":\"modal\"\n\t\t\t\t     },\n\t\t\t\t     \"Continue\");\n\t    this.append($.el.iframe({class:\"login\", src:url}),\n\t\t\tbutton);\n\t  },\n\t  onclose: function() {\n\t    elem.login('logged_in');\n\t  }\n\t});\n      }\n    },\n\n    /**\n     * User closed the login modal window.  Check the login.\n     */\n    logged_in: function() {\n      this.login('update', \"login\");\n    },\n\n    /**\n     * Examine/edit the user profile.  Opens a modal window that is\n     * filled through an AJAX call on the server.\n     */\n    profile: function() {\n      var login = $(this);\n\n      modal.server_form({\n\ttitle: \"User profile\",\n\turl: config.swish.user.swish_profile_url ||\n\t     config.http.locations.user_profile,\n\tonreply: function() { login.login('update', \"profile\"); }\n      });\n    },\n\n    /**\n     * Get information about the current user. If possible we get this\n     * from the logged in user.  Else we get the name and avatar from\n     * #chat.\n     * @param [fields] is an array with fields we want to have\n     * @return {Object} info about current user\n     */\n    get_profile: function(fields) {\n      var info = {};\n      var obj = config.swish.user||{};\n\n      function set_from_chat(key, chat_key) {\n\tvar chat = $(\"#chat\");\n\tif ( chat.length == 1 ) {\n\t  var v = chat.chat('self', [chat_key]);\n\t  if ( v[chat_key] ) info[key] = v[chat_key];\n\t}\n      }\n\n      fields = fields||DEFAULT_USER_FIELDS;\n      for(var i=0; i<fields.length; i++) {\n\tvar key = fields[i];\n\n\tif ( obj[key] ) {\n\t  info[key] = obj[key];\n\t} else if ( key == 'display_name' ) {\n\t  if ( obj.name )\n\t    info.display_name = obj.name;\n\t  else if ( obj.given_name && obj.family_name )\n\t    info.display_name = obj.given_name + \" \" + obj.family_name;\n\t  else if ( obj.family_name )\n\t    info.display_name = obj.family_name;\n\t  else if ( obj.given_name )\n\t    info.display_name = obj.given_name;\n\t  else if ( obj.nick_name )\n\t    info.display_name = obj.nick_name;\n\t  else\n\t    set_from_chat('display_name', 'name');\n\t} else if ( key == 'identity' ) {\n\t  if ( obj.external_identity && obj.identity_provider )\n\t    info.identity = obj.identity_provider + \":\" + obj.external_identity;\n\t} else if ( key == 'avatar' ) {\n\t  set_from_chat('avatar', 'avatar');\n\t}\n      }\n\n      return info;\n    },\n\n    /**\n     * Logout the current user\n     */\n    logout: function() {\n      var user = config.swish.user;\n      var elem = $(this);\n\n      if ( user ) {\n\tif ( user.logout_url ) {\n\t  $.ajax({ url: user.logout_url,\n\t           success: function() {\n\t\t     elem.login('update', \"logout_by_url\");\n\t\t   },\n\t\t   error: function(jqXHDR) {\n\t\t     modal.ajaxError(jqXHDR);\n\t\t   }\n\t         });\n\t} else if ( user.auth_method == \"basic\" ||\n\t\t    user.auth_method == \"digest\" ) {\n\t  clearAuthenticationCache(config.http.locations.http_logout,\n\t\t\t\t   config.swish.user.auth_method,\n\t\t\t\t   function() {\n\t\t\t\t     elem.login('update', \"logout_by_http\");\n\t\t\t\t   });\n\t} else {\n\t  alert(\"Don't know how to logout\");\n\t}\n      }\n    }\n  }; // methods\n\n  /**\n   * @see https://trac-hacks.org/wiki/TrueHttpLogoutPatch\n   * @see http://stackoverflow.com/questions/233507/how-to-log-out-user-from-web-site-using-basic-authentication\n   */\n  function clearAuthenticationCache(page, method, oncomplete) {\n    // Default to a non-existing page (give error 500).\n    // An empty page is better, here.\n    if (!page) page = '.force_logout';\n    try{\n      var agt=navigator.userAgent.toLowerCase();\n\n      if ( agt.indexOf(\"msie\") != -1 ) {\n\tdocument.execCommand(\"ClearAuthenticationCache\");\n      } else if ( agt.indexOf(\"webkit\") != -1 && method == \"basic\" ) {\n\tvar xmlhttp = createXMLObject(oncomplete);\n\n\tif ( xmlhttp ) {\n\t  xmlhttp.open(\"GET\", page, true);\n\t  xmlhttp.setRequestHeader(\"Authorization\", \"Basic logout\");\n\t  xmlhttp.send();\n\t}\n      } else {\n\tvar xmlhttp = createXMLObject(oncomplete);\n\n\tif ( xmlhttp ) {\n\t  xmlhttp.open(\"GET\", page, true, \"logout\", \"logout\");\n\t  xmlhttp.send(\"\");\n\t  xmlhttp.abort();\n\t}\n      }\n    } catch(e) {\n      // There was an error\n      return;\n    }\n  }\n\n  function createXMLObject(oncomplete) {\n    var xmlhttp;\n\n    try {\n      if (window.XMLHttpRequest) {\n\txmlhttp = new XMLHttpRequest();\n      } else if (window.ActiveXObject) {\n\txmlhttp=new ActiveXObject(\"Microsoft.XMLHTTP\");\n      }\n\n      if ( oncomplete ) {\n\txmlhttp.addEventListener(\"load\",  oncomplete);\n\txmlhttp.addEventListener(\"error\", oncomplete);\n\txmlhttp.addEventListener(\"abort\", oncomplete);\n      }\n    } catch (e) {\n    }\n\n    return xmlhttp;\n  }\n\n  /**\n   * Open a popup window for dealing with the federated login.  We\n   * must check the login status after the user completes the popup.\n   * Unfortunately the code below does not always work as `win.closed`\n   * is not always set.  An example is FF 51.0 using Cinamon.\n   */\n  function openPopup(uri, name, options, closeCallback) {\n    var win = window.open(uri, name, options);\n    var interval = window.setInterval(function() {\n      try {\n\tif (win == null || win.closed) {\n\t  window.clearInterval(interval);\n\t  closeCallback(win);\n\t}\n      }\n      catch (e) {\n      }\n    }, 1000);\n\n    if ( window.focus )\n      win.focus();\n\n    return win;\n  };\n\n\n  /**\n   * <Class description>\n   *\n   * @class login\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.login = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2017, VU University Amsterdam\n\t\t\t CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Provide the chat window.  The communication is handled by chat.js\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('chatroom',[ \"jquery\", \"form\", \"cm/lib/codemirror\", \"utils\", \"config\",\n\t \"modal\", \"links\",\n\t \"laconic\"\n       ],\n       function($, form, CodeMirror, utils, config, modal, links) {\n\n(function($) {\n  var pluginName = 'chatroom';\n\n  /** @lends $.fn.chatroom */\n  var methods = {\n    /**\n     * {Object} [options]\n     * {String} [options.docid] Document identifier\n     */\n\n    _init: function(options) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = {};\t\t\t/* private data */\n\tvar btn, send;\n\tvar close;\n\tvar text;\n\n\tdata.docid = options.docid;\n\telem.data(pluginName, data);\t/* store with element */\n\n\telem.addClass(\"chatroom each-minute\");\n\n\t\t\t\t\t/* build DOM */\n\n\tbtn  = $.el.div({class:\"btn-group dropup\"},\n\t\t send = $.el.button({ type:\"button\",\n\t\t\t\t      class:\"btn btn-primary btn-xs\"\n\t\t\t\t    }, \"Send\"),\n\t\t\t$.el.button({ type:\"button\",\n\t\t\t\t      class:\"btn btn-info btn-xs \"+\n\t\t\t\t            \"dropdown-toggle\",\n\t\t\t\t      'data-toggle':\"dropdown\",\n\t\t\t\t      'aria-haspopup':true,\n\t\t\t\t      'aria-expanded':false\n\t\t\t\t    },\n\t\t\t\t    $.el.span({class:\"caret\"})),\n\t\t   ul = $.el.ul({class:\"dropdown-menu pull-right\"}));\n\ttext = $.el.textarea({ placeholder:\"Type chat message here ...\"\n\t\t\t     }),\n\n\telem.append($.el.div({class:\"chat-conversation\"},\n\t\t\t     $.el.div({class:\"stretch\"}),\n\t\t\t     $.el.div({class:\"inner\"})),\n\t    close = $.el.span({class:\"glyphicon menu glyphicon-remove-circle\"}),\n\t\t    $.el.div({class:\"chat-input\"},\n\t\t\t     $.el.table({class:\"chat-input\"},\n\t\t\t\t\t$.el.tr($.el.td({class:\"chat-text\"}, text),\n\t\t\t\t\t\t$.el.td({class:\"chat-send\"}, btn)))));\n\n\t$(send).on(\"click\", function() {\n\t  elem.chatroom('send');\n\t});\n\n\t\t\t\t\t/* event handling */\n\tform.widgets.populateMenu($(btn), elem, {\n\t  \"Include my query\": function() {\n\t    var query = $(\".prolog-query-editor\").queryEditor('getQuery');\n\t    if ( query.trim() != \"\" ) {\n\t      this.chatroom('send',\n\t\t\t    {payload: [{type:\"query\", query:query}]});\n\t    } else {\n\t      modal.alert(\"Your query editor is empty\");\n\t    }\n\t  },\n\t  \"Broadcast to help room\": function() {\n\t    if ( data.docid != \"gitty:Help.swinb\" ) {\n\t      this.chatroom('send',\n\t\t\t    { docid:\"gitty:Help.swinb\",\n\t\t\t      payload: [{type:\"about\", docid:data.docid}],\n\t\t\t      clear:false\n\t\t\t    });\n\t      this.chatroom('send');\n\t    } else {\n\t      modal.alert(\"Please use `Cry for help' from the document \"+\n\t\t\t  \"about which you need help.\");\n\t    }\n\t  }\n\t});\n\t$(close).on(\"click\", function() {\n\t  elem.tile('close');\n\t});\n\t$(text).keypress(function(ev) {\n\t  if ( ev.which == 13 ) {\n\t    elem.chatroom('send');\n\t    ev.preventDefault();\n\t    return false;\n\t  }\n\t});\n\telem.on(\"click\", \".inner button\", function(ev) {\n\t  var button = $(ev.target).closest(\"button\");\n\t  var val;\n\n\t  if ( (val = button.data(\"commit\")) ) {\n\t    elem.closest(\".swish\").swish('playFile', val);\n\t  } else if ( (val = button.data(\"diff\")) ) {\n\t    elem.chatroom('diff', val);\n\t  }\n\n\t  ev.preventDefault();\n\t  return false;\n\t});\n\telem.on(\"click\", \".inner a\", links.followLink);\n\telem.on(\"pane.resize\", function() {\n\t  elem.chatroom('scrollToBottom', true);\n\t});\n\telem.on(\"minute\", function() {\n\t  elem.chatroom('update_time');\n\t});\n\n\telem.chatroom('load_from_server');\n      });\n    },\n\n    close: function() {\n      return this.tile('close');\n    },\n\n    /**\n     * Send a chat message.\n     * @param {Object} [options]\n     * @param {Array}  [options.payload] Payloads (queries, etc)\n     * @param {String} [options.docid] Addressed document of not self\n     */\n    send: function(options) {\n      options = options||{};\n      var data = this.data(pluginName);\n      var msg = {type:\"chat-message\"};\n      var ta = this.find(\"textarea\");\n      msg.text = ta.val().trim();\n      var payload = options.payload||[];\n      var has_payload = false;\n      var selection = this.chatroom('storage').storage('getSelection');\n\n      if ( selection )\n\tpayload.push({type:\"selection\", selection:selection});\n\n      for(var i=0; i<payload.length; i++) {\n\tif ( payload[i].type != 'about' ) {\n\t  has_payload = true;\n\t  break;\n\t}\n      }\n\n      if ( msg.text != \"\" || has_payload ) {\n\tif ( options.clear !== false )\n\t  ta.val(\"\");\n\n\tmsg.payload = payload;\n\tmsg.docid   = options.docid||data.docid;\n\tif ( options.class )\n\t  msg.class = options.class;\n\n\t$(\"#chat\").chat('send', msg);\n      } else if ( !options.payload ) {\n\tmodal.alert(\"No message to send\");\n      }\n    },\n\n    /**\n     * Get the related storage object\n     */\n    storage: function() {\n      return this.closest(\".tab-pane\").find(\".storage\");\n    },\n\n    /**\n     * Add a chat object to the conversation.\n     * @param {Object} msg\n     * @param {String} msg.html is the HTML content of the object\n     * @param {String} msg.text is the ext of the object\n     * @param {Object} msg.user Sender description\n     */\n    add: function(msg) {\n      var data  = this.data(pluginName);\n      var muser = msg.user||{};\n      var suser = config.swish.user||{};\n\n      if ( msg.docid != data.docid )\n\treturn this;\n\n      var self = $(\"#chat\").chat('self');\n      var is_self = ((muser.id && muser.id == self.id) ||\n\t\t     (muser.avatar && muser.avatar == self.avatar) ||\n\t\t     (muser.profile_id && muser.profile_id == suser.profile_id));\n\n      elem = $($.el.div({class:\"chat-message\"+(is_self ? \" self\" : \"\"),\n\t\t\t 'data-userid':muser.wsid}));\n      if ( !is_self && muser.avatar ) {\n\telem.append($.el.img({ class:\"avatar\", src:muser.avatar }));\n      }\n      elem.append($.el.span({class:\"chat-sender\"},\n\t\t\t    is_self ? \"Me\" : muser.name));\n\n      if ( msg.time ) {\n\tvar title = new Date(msg.time*1000).toLocaleString();\n\telem.append($.el.span({class:\"chat-time\", title:title},\n\t\t\t      \"(\", ago(msg.time), \") \"));\n\telem.data('time', msg.time);\n      }\n\n      this.find(\".inner\").append(elem);\n\n      if ( msg.payload ) {\n\tfor(var i=0; i<msg.payload.length; i++) {\n\t  var pl = msg.payload[i];\n\t  if ( payload_handlers[pl.type] )\n\t    payload_handlers[pl.type].call(elem, pl);\n\t  else\n\t    console.log(pl);\n\t}\n      }\n\n      var html;\n      if ( msg.html ) {\n\thtml = msg.html;\n      } else if ( msg.text ) {\n\thtml = $($.el.span(msg.text)).html();\n\thtml = markdown(html);\n      }\n\n      if ( html ) {\n\tvar span = $.el.span({class:\"chat-message html\"});\n\t$(span).html(html);\n\telem.append(span);\n      }\n\n      this.chatroom('scrollToBottom');\n\n      return this;\n    },\n\n    load_from_server: function(ifempty) {\n      var data = this.data(pluginName);\n      var elem = $(this);\n\n      $.get(config.http.locations.chat_messages,\n\t    { docid: data.docid\n\t    },\n\t    function(messages) {\n\t      if ( ifempty && messages.length == 0 ) {\n\t\telem.chatroom('close');\n\t      } else {\n\t\tfor(var i=0; i<messages.length; i++) {\n\t\t  elem.chatroom('add', messages[i]);\n\t\t}\n\t      }\n\t    }).fail(function(jqXHR, textStatus, errorThrown) {\n\t      modal.ajaxError(jqXHR);\n\t    });\n\n      return this;\n    },\n\n    update_time: function() {\n      return this.find(\".chat-message\").each(function() {\n\tvar elem = $(this);\n\tvar time;\n\tif ( (time=elem.data('time')) )\n\t  elem.find(\".chat-time\").text(\"(\"+ago(time)+\") \");\n      });\n    },\n\n    /**\n     * Show diff between versions\n     * @param {Object} options\n     * @param {String} options.from Base commit\n     * @param {String} options.to Target commit\n     * @param {String} options.name Name of the file\n     */\n\n    diff: function(options) {\n      function error(jqXHR) {\n\tmodal.ajaxError(jqXHR);\n      }\n\n      $.ajax({\n        url: config.http.locations.web_storage + options.from,\n\tdata: {format: \"raw\"},\n\tsuccess: function(from) {\n\t  $.ajax({\n\t    url: config.http.locations.web_storage + options.to,\n\t    data: {format: \"raw\"},\n\t    success: function(to) {\n\n\t      function diffBody() {\n\t\tvar diff = $.el.div();\n\n\t\tthis.append(diff);\n\t\t$(diff).diff({\n\t\t  base: from,\n\t\t  head: to,\n\t\t  baseName: options.name + \" (before)\",\n\t\t  headName: options.name + \" (after)\"\n\t\t});\n\t\tthis.parents(\"div.modal-dialog\").addClass(\"modal-wide\");\n\t      }\n\n\t      form.showDialog({\n\t        title: \"Update differences\",\n\t\tbody:  diffBody\n\t      });\n\t    },\n\t    error: error\n\t  })\n\t},\n\terror: error\n      });\n    },\n\n\n    /**\n     * Associate with a new document\n     */\n    docid: function(docid, ifempty) {\n      var data = this.data(pluginName);\n\n      if ( data.docid != docid ) {\n\tthis.find(\".inner\").html(\"\");\n\tdata.docid = docid;\n\tthis.chatroom('load_from_server', ifempty);\n      }\n    },\n\n    /**\n     * @param {String} docid docid of rooms we are looking for\n     * @returns {jQuery} set of chatrooms pointing at document id\n     */\n    rooms: function(docid) {\n      var rooms = [];\n\n      this.each(function() {\n\tvar room = $(this);\n\tvar data = room.data(pluginName);\n\tif ( data.docid == docid )\n\t  rooms.push(this);\n      });\n\n      return $(rooms);\n    },\n\n    scrollToBottom: function(onlydown) {\n      this.each(function() {\n\tvar elem = $(this);\n\tinner = elem.find(\"div.inner\");\n\tconv  = elem.find(\".chat-conversation\");\n\tvar height = inner.height();\n\tvar room   = conv.height() - height - 4 - 4;\n\n\tif ( room > 0 || onlydown !== true ) {\n\t  conv.find(\"div.stretch\").height(room > 0 ? room : 0);\n\t  conv.scrollTop(height);\n\t}\n      });\n\n      return this;\n    }\n  }; // methods\n\n\n\t\t /*******************************\n\t\t *\t PAYLOAD HANDLERS\t*\n\t\t *******************************/\n\n  var payload_handlers = {\n    selection: function(selection) {\n      var storage = this.chatroom('storage');\n      var label   = storage.storage('getSelectionLabel', selection.selection);\n      var btn = $($.el.button({ class:\"btn btn-xs btn-primary\"\n\t\t\t      },\n\t\t\t      label + \" \",\n\t\t\t      form.widgets.glyphIcon(\"eye-open\")));\n      btn.on(\"click\", function() {\n\tstorage.storage('restoreSelection', selection.selection);\n      });\n\n      this.append(\" \", btn, \" \");\n    },\n\n    query: function(query) {\n      var btn = $($.el.button({ class:\"btn btn-xs btn-primary\"\n\t\t\t      },\n\t\t\t      \"Query \",\n\t\t\t      form.widgets.glyphIcon(\"download\")));\n      btn.on(\"click\", function() {\n\tvar qe = $(\".prolog-query-editor\");\n\n\tqe.queryEditor('setQuery', query.query);\n\tutils.flash(qe.find(\".CodeMirror\"));\n      });\n      sourceToolTip(btn, query.query);\n\n      this.append(\" \", btn, \" \");\n    },\n\n    update: function(update) {\n      var old, dif, nwe;\n\n      this.append(\" \", $.el.span(\n        {class:\"update\"},\n\told = btn(\"play\",    \"btn-primary\", \"Open old version\"),\n\tdif = btn(\"zoom-in\", \"btn-info\",    \"View changes\"),\n        nwe = btn(\"play\",    \"btn-primary\", \"Open new version\")), \" \");\n\n      $(old).data('commit', update.previous);\n      $(dif).data('diff',   {from:update.previous, to:update.commit,\n\t\t\t     name:update.name});\n      $(nwe).data('commit', update.commit);\n    },\n\n    about: function(about) {\n      var file = about.docid.replace(\"gitty:\", \"\");\n\n      this.append(\" \",\n\t$.el.a({\n\t  href:config.http.locations.web_storage+file,\n\t  class:\"store btn btn-primary btn-xs\"\n\t}, file), \" \");\n    }\n  };\n\n\n  // private functions\n\n  function sourceToolTip(elem, src) {\n    var pre = $.el.pre({class:\"cm-s-prolog\"});\n\n    CodeMirror.runMode(src, \"prolog\", pre);\n\n    elem.attr(\"title\", $.el.div(pre).innerHTML);\n    elem.data(\"html\", true);\n    elem.data(\"placement\", \"bottom\");\n    elem.data(\"trigger\", \"hover\");\n    elem.tooltip();\n  }\n\n  function btn(glyph, type, title) {\n    return form.widgets.glyphIconButton(glyph,\n\t\t\t\t\t{class:\"btn-xs \"+type, title:title});\n  }\n\n  function ago(time) {\n    var ago = ((new Date().getTime())/1000) - time;\n\n    if ( ago < 20  ) return \"just now\";\n    if ( ago < 60  ) return \"less then a minute ago\";\n    ago = Math.round(ago/60);\n    if ( ago < 120 ) return ago + \" minutes ago\";\n    ago = Math.round(ago/60);\n    if ( ago < 48 )  return ago + \" hours ago\";\n    ago = Math.round(ago/24);\n    if ( ago < 360 ) return ago + \" days ago\";\n    ago = Math.round(ago/365);\n    return ago + \" years ago\";\n  }\n\n  /**\n   * Perform very simple regex based markdown processing\n   */\n  function markdown(text) {\n    var replace = [\n      { regex: /[a-z][a-zA-Z0-9_]*\\/[0-9]/g,\n        func:  function(match) {\n\t  return '<a class=\"builtin\" href=\"/pldoc/man?predicate='+match+'\">'\n\t         +match+'</a>';\n\t}\n      },\n      { regex: /[a-zA-Z0-9_-]+\\.(pl|swinb)\\b/g,\n        func:  function(match) {\n\t  return '<a class=\"builtin\" href=\"'+\n\t\t config.http.locations.web_storage+\n\t         match+'\">'\n\t         +match+'</a>';\n\t}\n      },\n      { regex: /`(.)`/g,\n        func:  function(match, content) {\n\t  return '<code>'+content+'</code>';\n\t}\n      },\n      { regex: /`([\\w\\[\\{\\(][^`]*[\\w\\]\\}\\)])`/g,\n        func:  function(match, content) {\n\t  return '<code>'+content+'</code>';\n\t}\n      },\n      { delim: \"\\\\*\", a: \"\\\\*\\\\b\", z: \"\\\\b\\\\*\", tag: \"b\" },\n      { delim: \"__\",  a: \"\\\\b__\",  z: \"__\\\\b\",  tag: \"b\" },\n      { delim: \"_\",   a: \"\\\\b_\",   z: \"_\\\\b\",   tag: \"i\" }\n    ];\n\n    function wrap(tag) {\n      return function(match, content) {\n\treturn \"<\"+tag+\">\"+content+\"</\"+tag+\">\";\n      };\n    }\n\n    for(var i=0; i<replace.length; i++) {\n      var r = replace[i];\n\n      if ( r.regex ) {\n\ttext = text.replace(r.regex, r.func);\n      } else if ( r.delim ) {\n\ttext = text.replace(RegExp(r.a+\"([^\"+r.delim+\"]+)\"+r.z,\"g\"),\n\t\t\t    wrap(r.tag));\n      }\n    }\n\n    return text;\n  }\n\n  /**\n   * <Class description>\n   *\n   * @class chatroom\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.chatroom = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n});\n\n","!function() {\n  var d3 = {\n    version: \"3.5.17\"\n  };\n  var d3_arraySlice = [].slice, d3_array = function(list) {\n    return d3_arraySlice.call(list);\n  };\n  var d3_document = this.document;\n  function d3_documentElement(node) {\n    return node && (node.ownerDocument || node.document || node).documentElement;\n  }\n  function d3_window(node) {\n    return node && (node.ownerDocument && node.ownerDocument.defaultView || node.document && node || node.defaultView);\n  }\n  if (d3_document) {\n    try {\n      d3_array(d3_document.documentElement.childNodes)[0].nodeType;\n    } catch (e) {\n      d3_array = function(list) {\n        var i = list.length, array = new Array(i);\n        while (i--) array[i] = list[i];\n        return array;\n      };\n    }\n  }\n  if (!Date.now) Date.now = function() {\n    return +new Date();\n  };\n  if (d3_document) {\n    try {\n      d3_document.createElement(\"DIV\").style.setProperty(\"opacity\", 0, \"\");\n    } catch (error) {\n      var d3_element_prototype = this.Element.prototype, d3_element_setAttribute = d3_element_prototype.setAttribute, d3_element_setAttributeNS = d3_element_prototype.setAttributeNS, d3_style_prototype = this.CSSStyleDeclaration.prototype, d3_style_setProperty = d3_style_prototype.setProperty;\n      d3_element_prototype.setAttribute = function(name, value) {\n        d3_element_setAttribute.call(this, name, value + \"\");\n      };\n      d3_element_prototype.setAttributeNS = function(space, local, value) {\n        d3_element_setAttributeNS.call(this, space, local, value + \"\");\n      };\n      d3_style_prototype.setProperty = function(name, value, priority) {\n        d3_style_setProperty.call(this, name, value + \"\", priority);\n      };\n    }\n  }\n  d3.ascending = d3_ascending;\n  function d3_ascending(a, b) {\n    return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n  }\n  d3.descending = function(a, b) {\n    return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n  };\n  d3.min = function(array, f) {\n    var i = -1, n = array.length, a, b;\n    if (arguments.length === 1) {\n      while (++i < n) if ((b = array[i]) != null && b >= b) {\n        a = b;\n        break;\n      }\n      while (++i < n) if ((b = array[i]) != null && a > b) a = b;\n    } else {\n      while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n        a = b;\n        break;\n      }\n      while (++i < n) if ((b = f.call(array, array[i], i)) != null && a > b) a = b;\n    }\n    return a;\n  };\n  d3.max = function(array, f) {\n    var i = -1, n = array.length, a, b;\n    if (arguments.length === 1) {\n      while (++i < n) if ((b = array[i]) != null && b >= b) {\n        a = b;\n        break;\n      }\n      while (++i < n) if ((b = array[i]) != null && b > a) a = b;\n    } else {\n      while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n        a = b;\n        break;\n      }\n      while (++i < n) if ((b = f.call(array, array[i], i)) != null && b > a) a = b;\n    }\n    return a;\n  };\n  d3.extent = function(array, f) {\n    var i = -1, n = array.length, a, b, c;\n    if (arguments.length === 1) {\n      while (++i < n) if ((b = array[i]) != null && b >= b) {\n        a = c = b;\n        break;\n      }\n      while (++i < n) if ((b = array[i]) != null) {\n        if (a > b) a = b;\n        if (c < b) c = b;\n      }\n    } else {\n      while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n        a = c = b;\n        break;\n      }\n      while (++i < n) if ((b = f.call(array, array[i], i)) != null) {\n        if (a > b) a = b;\n        if (c < b) c = b;\n      }\n    }\n    return [ a, c ];\n  };\n  function d3_number(x) {\n    return x === null ? NaN : +x;\n  }\n  function d3_numeric(x) {\n    return !isNaN(x);\n  }\n  d3.sum = function(array, f) {\n    var s = 0, n = array.length, a, i = -1;\n    if (arguments.length === 1) {\n      while (++i < n) if (d3_numeric(a = +array[i])) s += a;\n    } else {\n      while (++i < n) if (d3_numeric(a = +f.call(array, array[i], i))) s += a;\n    }\n    return s;\n  };\n  d3.mean = function(array, f) {\n    var s = 0, n = array.length, a, i = -1, j = n;\n    if (arguments.length === 1) {\n      while (++i < n) if (d3_numeric(a = d3_number(array[i]))) s += a; else --j;\n    } else {\n      while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) s += a; else --j;\n    }\n    if (j) return s / j;\n  };\n  d3.quantile = function(values, p) {\n    var H = (values.length - 1) * p + 1, h = Math.floor(H), v = +values[h - 1], e = H - h;\n    return e ? v + e * (values[h] - v) : v;\n  };\n  d3.median = function(array, f) {\n    var numbers = [], n = array.length, a, i = -1;\n    if (arguments.length === 1) {\n      while (++i < n) if (d3_numeric(a = d3_number(array[i]))) numbers.push(a);\n    } else {\n      while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) numbers.push(a);\n    }\n    if (numbers.length) return d3.quantile(numbers.sort(d3_ascending), .5);\n  };\n  d3.variance = function(array, f) {\n    var n = array.length, m = 0, a, d, s = 0, i = -1, j = 0;\n    if (arguments.length === 1) {\n      while (++i < n) {\n        if (d3_numeric(a = d3_number(array[i]))) {\n          d = a - m;\n          m += d / ++j;\n          s += d * (a - m);\n        }\n      }\n    } else {\n      while (++i < n) {\n        if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) {\n          d = a - m;\n          m += d / ++j;\n          s += d * (a - m);\n        }\n      }\n    }\n    if (j > 1) return s / (j - 1);\n  };\n  d3.deviation = function() {\n    var v = d3.variance.apply(this, arguments);\n    return v ? Math.sqrt(v) : v;\n  };\n  function d3_bisector(compare) {\n    return {\n      left: function(a, x, lo, hi) {\n        if (arguments.length < 3) lo = 0;\n        if (arguments.length < 4) hi = a.length;\n        while (lo < hi) {\n          var mid = lo + hi >>> 1;\n          if (compare(a[mid], x) < 0) lo = mid + 1; else hi = mid;\n        }\n        return lo;\n      },\n      right: function(a, x, lo, hi) {\n        if (arguments.length < 3) lo = 0;\n        if (arguments.length < 4) hi = a.length;\n        while (lo < hi) {\n          var mid = lo + hi >>> 1;\n          if (compare(a[mid], x) > 0) hi = mid; else lo = mid + 1;\n        }\n        return lo;\n      }\n    };\n  }\n  var d3_bisect = d3_bisector(d3_ascending);\n  d3.bisectLeft = d3_bisect.left;\n  d3.bisect = d3.bisectRight = d3_bisect.right;\n  d3.bisector = function(f) {\n    return d3_bisector(f.length === 1 ? function(d, x) {\n      return d3_ascending(f(d), x);\n    } : f);\n  };\n  d3.shuffle = function(array, i0, i1) {\n    if ((m = arguments.length) < 3) {\n      i1 = array.length;\n      if (m < 2) i0 = 0;\n    }\n    var m = i1 - i0, t, i;\n    while (m) {\n      i = Math.random() * m-- | 0;\n      t = array[m + i0], array[m + i0] = array[i + i0], array[i + i0] = t;\n    }\n    return array;\n  };\n  d3.permute = function(array, indexes) {\n    var i = indexes.length, permutes = new Array(i);\n    while (i--) permutes[i] = array[indexes[i]];\n    return permutes;\n  };\n  d3.pairs = function(array) {\n    var i = 0, n = array.length - 1, p0, p1 = array[0], pairs = new Array(n < 0 ? 0 : n);\n    while (i < n) pairs[i] = [ p0 = p1, p1 = array[++i] ];\n    return pairs;\n  };\n  d3.transpose = function(matrix) {\n    if (!(n = matrix.length)) return [];\n    for (var i = -1, m = d3.min(matrix, d3_transposeLength), transpose = new Array(m); ++i < m; ) {\n      for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n; ) {\n        row[j] = matrix[j][i];\n      }\n    }\n    return transpose;\n  };\n  function d3_transposeLength(d) {\n    return d.length;\n  }\n  d3.zip = function() {\n    return d3.transpose(arguments);\n  };\n  d3.keys = function(map) {\n    var keys = [];\n    for (var key in map) keys.push(key);\n    return keys;\n  };\n  d3.values = function(map) {\n    var values = [];\n    for (var key in map) values.push(map[key]);\n    return values;\n  };\n  d3.entries = function(map) {\n    var entries = [];\n    for (var key in map) entries.push({\n      key: key,\n      value: map[key]\n    });\n    return entries;\n  };\n  d3.merge = function(arrays) {\n    var n = arrays.length, m, i = -1, j = 0, merged, array;\n    while (++i < n) j += arrays[i].length;\n    merged = new Array(j);\n    while (--n >= 0) {\n      array = arrays[n];\n      m = array.length;\n      while (--m >= 0) {\n        merged[--j] = array[m];\n      }\n    }\n    return merged;\n  };\n  var abs = Math.abs;\n  d3.range = function(start, stop, step) {\n    if (arguments.length < 3) {\n      step = 1;\n      if (arguments.length < 2) {\n        stop = start;\n        start = 0;\n      }\n    }\n    if ((stop - start) / step === Infinity) throw new Error(\"infinite range\");\n    var range = [], k = d3_range_integerScale(abs(step)), i = -1, j;\n    start *= k, stop *= k, step *= k;\n    if (step < 0) while ((j = start + step * ++i) > stop) range.push(j / k); else while ((j = start + step * ++i) < stop) range.push(j / k);\n    return range;\n  };\n  function d3_range_integerScale(x) {\n    var k = 1;\n    while (x * k % 1) k *= 10;\n    return k;\n  }\n  function d3_class(ctor, properties) {\n    for (var key in properties) {\n      Object.defineProperty(ctor.prototype, key, {\n        value: properties[key],\n        enumerable: false\n      });\n    }\n  }\n  d3.map = function(object, f) {\n    var map = new d3_Map();\n    if (object instanceof d3_Map) {\n      object.forEach(function(key, value) {\n        map.set(key, value);\n      });\n    } else if (Array.isArray(object)) {\n      var i = -1, n = object.length, o;\n      if (arguments.length === 1) while (++i < n) map.set(i, object[i]); else while (++i < n) map.set(f.call(object, o = object[i], i), o);\n    } else {\n      for (var key in object) map.set(key, object[key]);\n    }\n    return map;\n  };\n  function d3_Map() {\n    this._ = Object.create(null);\n  }\n  var d3_map_proto = \"__proto__\", d3_map_zero = \"\\x00\";\n  d3_class(d3_Map, {\n    has: d3_map_has,\n    get: function(key) {\n      return this._[d3_map_escape(key)];\n    },\n    set: function(key, value) {\n      return this._[d3_map_escape(key)] = value;\n    },\n    remove: d3_map_remove,\n    keys: d3_map_keys,\n    values: function() {\n      var values = [];\n      for (var key in this._) values.push(this._[key]);\n      return values;\n    },\n    entries: function() {\n      var entries = [];\n      for (var key in this._) entries.push({\n        key: d3_map_unescape(key),\n        value: this._[key]\n      });\n      return entries;\n    },\n    size: d3_map_size,\n    empty: d3_map_empty,\n    forEach: function(f) {\n      for (var key in this._) f.call(this, d3_map_unescape(key), this._[key]);\n    }\n  });\n  function d3_map_escape(key) {\n    return (key += \"\") === d3_map_proto || key[0] === d3_map_zero ? d3_map_zero + key : key;\n  }\n  function d3_map_unescape(key) {\n    return (key += \"\")[0] === d3_map_zero ? key.slice(1) : key;\n  }\n  function d3_map_has(key) {\n    return d3_map_escape(key) in this._;\n  }\n  function d3_map_remove(key) {\n    return (key = d3_map_escape(key)) in this._ && delete this._[key];\n  }\n  function d3_map_keys() {\n    var keys = [];\n    for (var key in this._) keys.push(d3_map_unescape(key));\n    return keys;\n  }\n  function d3_map_size() {\n    var size = 0;\n    for (var key in this._) ++size;\n    return size;\n  }\n  function d3_map_empty() {\n    for (var key in this._) return false;\n    return true;\n  }\n  d3.nest = function() {\n    var nest = {}, keys = [], sortKeys = [], sortValues, rollup;\n    function map(mapType, array, depth) {\n      if (depth >= keys.length) return rollup ? rollup.call(nest, array) : sortValues ? array.sort(sortValues) : array;\n      var i = -1, n = array.length, key = keys[depth++], keyValue, object, setter, valuesByKey = new d3_Map(), values;\n      while (++i < n) {\n        if (values = valuesByKey.get(keyValue = key(object = array[i]))) {\n          values.push(object);\n        } else {\n          valuesByKey.set(keyValue, [ object ]);\n        }\n      }\n      if (mapType) {\n        object = mapType();\n        setter = function(keyValue, values) {\n          object.set(keyValue, map(mapType, values, depth));\n        };\n      } else {\n        object = {};\n        setter = function(keyValue, values) {\n          object[keyValue] = map(mapType, values, depth);\n        };\n      }\n      valuesByKey.forEach(setter);\n      return object;\n    }\n    function entries(map, depth) {\n      if (depth >= keys.length) return map;\n      var array = [], sortKey = sortKeys[depth++];\n      map.forEach(function(key, keyMap) {\n        array.push({\n          key: key,\n          values: entries(keyMap, depth)\n        });\n      });\n      return sortKey ? array.sort(function(a, b) {\n        return sortKey(a.key, b.key);\n      }) : array;\n    }\n    nest.map = function(array, mapType) {\n      return map(mapType, array, 0);\n    };\n    nest.entries = function(array) {\n      return entries(map(d3.map, array, 0), 0);\n    };\n    nest.key = function(d) {\n      keys.push(d);\n      return nest;\n    };\n    nest.sortKeys = function(order) {\n      sortKeys[keys.length - 1] = order;\n      return nest;\n    };\n    nest.sortValues = function(order) {\n      sortValues = order;\n      return nest;\n    };\n    nest.rollup = function(f) {\n      rollup = f;\n      return nest;\n    };\n    return nest;\n  };\n  d3.set = function(array) {\n    var set = new d3_Set();\n    if (array) for (var i = 0, n = array.length; i < n; ++i) set.add(array[i]);\n    return set;\n  };\n  function d3_Set() {\n    this._ = Object.create(null);\n  }\n  d3_class(d3_Set, {\n    has: d3_map_has,\n    add: function(key) {\n      this._[d3_map_escape(key += \"\")] = true;\n      return key;\n    },\n    remove: d3_map_remove,\n    values: d3_map_keys,\n    size: d3_map_size,\n    empty: d3_map_empty,\n    forEach: function(f) {\n      for (var key in this._) f.call(this, d3_map_unescape(key));\n    }\n  });\n  d3.behavior = {};\n  function d3_identity(d) {\n    return d;\n  }\n  d3.rebind = function(target, source) {\n    var i = 1, n = arguments.length, method;\n    while (++i < n) target[method = arguments[i]] = d3_rebind(target, source, source[method]);\n    return target;\n  };\n  function d3_rebind(target, source, method) {\n    return function() {\n      var value = method.apply(source, arguments);\n      return value === source ? target : value;\n    };\n  }\n  function d3_vendorSymbol(object, name) {\n    if (name in object) return name;\n    name = name.charAt(0).toUpperCase() + name.slice(1);\n    for (var i = 0, n = d3_vendorPrefixes.length; i < n; ++i) {\n      var prefixName = d3_vendorPrefixes[i] + name;\n      if (prefixName in object) return prefixName;\n    }\n  }\n  var d3_vendorPrefixes = [ \"webkit\", \"ms\", \"moz\", \"Moz\", \"o\", \"O\" ];\n  function d3_noop() {}\n  d3.dispatch = function() {\n    var dispatch = new d3_dispatch(), i = -1, n = arguments.length;\n    while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);\n    return dispatch;\n  };\n  function d3_dispatch() {}\n  d3_dispatch.prototype.on = function(type, listener) {\n    var i = type.indexOf(\".\"), name = \"\";\n    if (i >= 0) {\n      name = type.slice(i + 1);\n      type = type.slice(0, i);\n    }\n    if (type) return arguments.length < 2 ? this[type].on(name) : this[type].on(name, listener);\n    if (arguments.length === 2) {\n      if (listener == null) for (type in this) {\n        if (this.hasOwnProperty(type)) this[type].on(name, null);\n      }\n      return this;\n    }\n  };\n  function d3_dispatch_event(dispatch) {\n    var listeners = [], listenerByName = new d3_Map();\n    function event() {\n      var z = listeners, i = -1, n = z.length, l;\n      while (++i < n) if (l = z[i].on) l.apply(this, arguments);\n      return dispatch;\n    }\n    event.on = function(name, listener) {\n      var l = listenerByName.get(name), i;\n      if (arguments.length < 2) return l && l.on;\n      if (l) {\n        l.on = null;\n        listeners = listeners.slice(0, i = listeners.indexOf(l)).concat(listeners.slice(i + 1));\n        listenerByName.remove(name);\n      }\n      if (listener) listeners.push(listenerByName.set(name, {\n        on: listener\n      }));\n      return dispatch;\n    };\n    return event;\n  }\n  d3.event = null;\n  function d3_eventPreventDefault() {\n    d3.event.preventDefault();\n  }\n  function d3_eventSource() {\n    var e = d3.event, s;\n    while (s = e.sourceEvent) e = s;\n    return e;\n  }\n  function d3_eventDispatch(target) {\n    var dispatch = new d3_dispatch(), i = 0, n = arguments.length;\n    while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);\n    dispatch.of = function(thiz, argumentz) {\n      return function(e1) {\n        try {\n          var e0 = e1.sourceEvent = d3.event;\n          e1.target = target;\n          d3.event = e1;\n          dispatch[e1.type].apply(thiz, argumentz);\n        } finally {\n          d3.event = e0;\n        }\n      };\n    };\n    return dispatch;\n  }\n  d3.requote = function(s) {\n    return s.replace(d3_requote_re, \"\\\\$&\");\n  };\n  var d3_requote_re = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n  var d3_subclass = {}.__proto__ ? function(object, prototype) {\n    object.__proto__ = prototype;\n  } : function(object, prototype) {\n    for (var property in prototype) object[property] = prototype[property];\n  };\n  function d3_selection(groups) {\n    d3_subclass(groups, d3_selectionPrototype);\n    return groups;\n  }\n  var d3_select = function(s, n) {\n    return n.querySelector(s);\n  }, d3_selectAll = function(s, n) {\n    return n.querySelectorAll(s);\n  }, d3_selectMatches = function(n, s) {\n    var d3_selectMatcher = n.matches || n[d3_vendorSymbol(n, \"matchesSelector\")];\n    d3_selectMatches = function(n, s) {\n      return d3_selectMatcher.call(n, s);\n    };\n    return d3_selectMatches(n, s);\n  };\n  if (typeof Sizzle === \"function\") {\n    d3_select = function(s, n) {\n      return Sizzle(s, n)[0] || null;\n    };\n    d3_selectAll = Sizzle;\n    d3_selectMatches = Sizzle.matchesSelector;\n  }\n  d3.selection = function() {\n    return d3.select(d3_document.documentElement);\n  };\n  var d3_selectionPrototype = d3.selection.prototype = [];\n  d3_selectionPrototype.select = function(selector) {\n    var subgroups = [], subgroup, subnode, group, node;\n    selector = d3_selection_selector(selector);\n    for (var j = -1, m = this.length; ++j < m; ) {\n      subgroups.push(subgroup = []);\n      subgroup.parentNode = (group = this[j]).parentNode;\n      for (var i = -1, n = group.length; ++i < n; ) {\n        if (node = group[i]) {\n          subgroup.push(subnode = selector.call(node, node.__data__, i, j));\n          if (subnode && \"__data__\" in node) subnode.__data__ = node.__data__;\n        } else {\n          subgroup.push(null);\n        }\n      }\n    }\n    return d3_selection(subgroups);\n  };\n  function d3_selection_selector(selector) {\n    return typeof selector === \"function\" ? selector : function() {\n      return d3_select(selector, this);\n    };\n  }\n  d3_selectionPrototype.selectAll = function(selector) {\n    var subgroups = [], subgroup, node;\n    selector = d3_selection_selectorAll(selector);\n    for (var j = -1, m = this.length; ++j < m; ) {\n      for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n        if (node = group[i]) {\n          subgroups.push(subgroup = d3_array(selector.call(node, node.__data__, i, j)));\n          subgroup.parentNode = node;\n        }\n      }\n    }\n    return d3_selection(subgroups);\n  };\n  function d3_selection_selectorAll(selector) {\n    return typeof selector === \"function\" ? selector : function() {\n      return d3_selectAll(selector, this);\n    };\n  }\n  var d3_nsXhtml = \"http://www.w3.org/1999/xhtml\";\n  var d3_nsPrefix = {\n    svg: \"http://www.w3.org/2000/svg\",\n    xhtml: d3_nsXhtml,\n    xlink: \"http://www.w3.org/1999/xlink\",\n    xml: \"http://www.w3.org/XML/1998/namespace\",\n    xmlns: \"http://www.w3.org/2000/xmlns/\"\n  };\n  d3.ns = {\n    prefix: d3_nsPrefix,\n    qualify: function(name) {\n      var i = name.indexOf(\":\"), prefix = name;\n      if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n      return d3_nsPrefix.hasOwnProperty(prefix) ? {\n        space: d3_nsPrefix[prefix],\n        local: name\n      } : name;\n    }\n  };\n  d3_selectionPrototype.attr = function(name, value) {\n    if (arguments.length < 2) {\n      if (typeof name === \"string\") {\n        var node = this.node();\n        name = d3.ns.qualify(name);\n        return name.local ? node.getAttributeNS(name.space, name.local) : node.getAttribute(name);\n      }\n      for (value in name) this.each(d3_selection_attr(value, name[value]));\n      return this;\n    }\n    return this.each(d3_selection_attr(name, value));\n  };\n  function d3_selection_attr(name, value) {\n    name = d3.ns.qualify(name);\n    function attrNull() {\n      this.removeAttribute(name);\n    }\n    function attrNullNS() {\n      this.removeAttributeNS(name.space, name.local);\n    }\n    function attrConstant() {\n      this.setAttribute(name, value);\n    }\n    function attrConstantNS() {\n      this.setAttributeNS(name.space, name.local, value);\n    }\n    function attrFunction() {\n      var x = value.apply(this, arguments);\n      if (x == null) this.removeAttribute(name); else this.setAttribute(name, x);\n    }\n    function attrFunctionNS() {\n      var x = value.apply(this, arguments);\n      if (x == null) this.removeAttributeNS(name.space, name.local); else this.setAttributeNS(name.space, name.local, x);\n    }\n    return value == null ? name.local ? attrNullNS : attrNull : typeof value === \"function\" ? name.local ? attrFunctionNS : attrFunction : name.local ? attrConstantNS : attrConstant;\n  }\n  function d3_collapse(s) {\n    return s.trim().replace(/\\s+/g, \" \");\n  }\n  d3_selectionPrototype.classed = function(name, value) {\n    if (arguments.length < 2) {\n      if (typeof name === \"string\") {\n        var node = this.node(), n = (name = d3_selection_classes(name)).length, i = -1;\n        if (value = node.classList) {\n          while (++i < n) if (!value.contains(name[i])) return false;\n        } else {\n          value = node.getAttribute(\"class\");\n          while (++i < n) if (!d3_selection_classedRe(name[i]).test(value)) return false;\n        }\n        return true;\n      }\n      for (value in name) this.each(d3_selection_classed(value, name[value]));\n      return this;\n    }\n    return this.each(d3_selection_classed(name, value));\n  };\n  function d3_selection_classedRe(name) {\n    return new RegExp(\"(?:^|\\\\s+)\" + d3.requote(name) + \"(?:\\\\s+|$)\", \"g\");\n  }\n  function d3_selection_classes(name) {\n    return (name + \"\").trim().split(/^|\\s+/);\n  }\n  function d3_selection_classed(name, value) {\n    name = d3_selection_classes(name).map(d3_selection_classedName);\n    var n = name.length;\n    function classedConstant() {\n      var i = -1;\n      while (++i < n) name[i](this, value);\n    }\n    function classedFunction() {\n      var i = -1, x = value.apply(this, arguments);\n      while (++i < n) name[i](this, x);\n    }\n    return typeof value === \"function\" ? classedFunction : classedConstant;\n  }\n  function d3_selection_classedName(name) {\n    var re = d3_selection_classedRe(name);\n    return function(node, value) {\n      if (c = node.classList) return value ? c.add(name) : c.remove(name);\n      var c = node.getAttribute(\"class\") || \"\";\n      if (value) {\n        re.lastIndex = 0;\n        if (!re.test(c)) node.setAttribute(\"class\", d3_collapse(c + \" \" + name));\n      } else {\n        node.setAttribute(\"class\", d3_collapse(c.replace(re, \" \")));\n      }\n    };\n  }\n  d3_selectionPrototype.style = function(name, value, priority) {\n    var n = arguments.length;\n    if (n < 3) {\n      if (typeof name !== \"string\") {\n        if (n < 2) value = \"\";\n        for (priority in name) this.each(d3_selection_style(priority, name[priority], value));\n        return this;\n      }\n      if (n < 2) {\n        var node = this.node();\n        return d3_window(node).getComputedStyle(node, null).getPropertyValue(name);\n      }\n      priority = \"\";\n    }\n    return this.each(d3_selection_style(name, value, priority));\n  };\n  function d3_selection_style(name, value, priority) {\n    function styleNull() {\n      this.style.removeProperty(name);\n    }\n    function styleConstant() {\n      this.style.setProperty(name, value, priority);\n    }\n    function styleFunction() {\n      var x = value.apply(this, arguments);\n      if (x == null) this.style.removeProperty(name); else this.style.setProperty(name, x, priority);\n    }\n    return value == null ? styleNull : typeof value === \"function\" ? styleFunction : styleConstant;\n  }\n  d3_selectionPrototype.property = function(name, value) {\n    if (arguments.length < 2) {\n      if (typeof name === \"string\") return this.node()[name];\n      for (value in name) this.each(d3_selection_property(value, name[value]));\n      return this;\n    }\n    return this.each(d3_selection_property(name, value));\n  };\n  function d3_selection_property(name, value) {\n    function propertyNull() {\n      delete this[name];\n    }\n    function propertyConstant() {\n      this[name] = value;\n    }\n    function propertyFunction() {\n      var x = value.apply(this, arguments);\n      if (x == null) delete this[name]; else this[name] = x;\n    }\n    return value == null ? propertyNull : typeof value === \"function\" ? propertyFunction : propertyConstant;\n  }\n  d3_selectionPrototype.text = function(value) {\n    return arguments.length ? this.each(typeof value === \"function\" ? function() {\n      var v = value.apply(this, arguments);\n      this.textContent = v == null ? \"\" : v;\n    } : value == null ? function() {\n      this.textContent = \"\";\n    } : function() {\n      this.textContent = value;\n    }) : this.node().textContent;\n  };\n  d3_selectionPrototype.html = function(value) {\n    return arguments.length ? this.each(typeof value === \"function\" ? function() {\n      var v = value.apply(this, arguments);\n      this.innerHTML = v == null ? \"\" : v;\n    } : value == null ? function() {\n      this.innerHTML = \"\";\n    } : function() {\n      this.innerHTML = value;\n    }) : this.node().innerHTML;\n  };\n  d3_selectionPrototype.append = function(name) {\n    name = d3_selection_creator(name);\n    return this.select(function() {\n      return this.appendChild(name.apply(this, arguments));\n    });\n  };\n  function d3_selection_creator(name) {\n    function create() {\n      var document = this.ownerDocument, namespace = this.namespaceURI;\n      return namespace === d3_nsXhtml && document.documentElement.namespaceURI === d3_nsXhtml ? document.createElement(name) : document.createElementNS(namespace, name);\n    }\n    function createNS() {\n      return this.ownerDocument.createElementNS(name.space, name.local);\n    }\n    return typeof name === \"function\" ? name : (name = d3.ns.qualify(name)).local ? createNS : create;\n  }\n  d3_selectionPrototype.insert = function(name, before) {\n    name = d3_selection_creator(name);\n    before = d3_selection_selector(before);\n    return this.select(function() {\n      return this.insertBefore(name.apply(this, arguments), before.apply(this, arguments) || null);\n    });\n  };\n  d3_selectionPrototype.remove = function() {\n    return this.each(d3_selectionRemove);\n  };\n  function d3_selectionRemove() {\n    var parent = this.parentNode;\n    if (parent) parent.removeChild(this);\n  }\n  d3_selectionPrototype.data = function(value, key) {\n    var i = -1, n = this.length, group, node;\n    if (!arguments.length) {\n      value = new Array(n = (group = this[0]).length);\n      while (++i < n) {\n        if (node = group[i]) {\n          value[i] = node.__data__;\n        }\n      }\n      return value;\n    }\n    function bind(group, groupData) {\n      var i, n = group.length, m = groupData.length, n0 = Math.min(n, m), updateNodes = new Array(m), enterNodes = new Array(m), exitNodes = new Array(n), node, nodeData;\n      if (key) {\n        var nodeByKeyValue = new d3_Map(), keyValues = new Array(n), keyValue;\n        for (i = -1; ++i < n; ) {\n          if (node = group[i]) {\n            if (nodeByKeyValue.has(keyValue = key.call(node, node.__data__, i))) {\n              exitNodes[i] = node;\n            } else {\n              nodeByKeyValue.set(keyValue, node);\n            }\n            keyValues[i] = keyValue;\n          }\n        }\n        for (i = -1; ++i < m; ) {\n          if (!(node = nodeByKeyValue.get(keyValue = key.call(groupData, nodeData = groupData[i], i)))) {\n            enterNodes[i] = d3_selection_dataNode(nodeData);\n          } else if (node !== true) {\n            updateNodes[i] = node;\n            node.__data__ = nodeData;\n          }\n          nodeByKeyValue.set(keyValue, true);\n        }\n        for (i = -1; ++i < n; ) {\n          if (i in keyValues && nodeByKeyValue.get(keyValues[i]) !== true) {\n            exitNodes[i] = group[i];\n          }\n        }\n      } else {\n        for (i = -1; ++i < n0; ) {\n          node = group[i];\n          nodeData = groupData[i];\n          if (node) {\n            node.__data__ = nodeData;\n            updateNodes[i] = node;\n          } else {\n            enterNodes[i] = d3_selection_dataNode(nodeData);\n          }\n        }\n        for (;i < m; ++i) {\n          enterNodes[i] = d3_selection_dataNode(groupData[i]);\n        }\n        for (;i < n; ++i) {\n          exitNodes[i] = group[i];\n        }\n      }\n      enterNodes.update = updateNodes;\n      enterNodes.parentNode = updateNodes.parentNode = exitNodes.parentNode = group.parentNode;\n      enter.push(enterNodes);\n      update.push(updateNodes);\n      exit.push(exitNodes);\n    }\n    var enter = d3_selection_enter([]), update = d3_selection([]), exit = d3_selection([]);\n    if (typeof value === \"function\") {\n      while (++i < n) {\n        bind(group = this[i], value.call(group, group.parentNode.__data__, i));\n      }\n    } else {\n      while (++i < n) {\n        bind(group = this[i], value);\n      }\n    }\n    update.enter = function() {\n      return enter;\n    };\n    update.exit = function() {\n      return exit;\n    };\n    return update;\n  };\n  function d3_selection_dataNode(data) {\n    return {\n      __data__: data\n    };\n  }\n  d3_selectionPrototype.datum = function(value) {\n    return arguments.length ? this.property(\"__data__\", value) : this.property(\"__data__\");\n  };\n  d3_selectionPrototype.filter = function(filter) {\n    var subgroups = [], subgroup, group, node;\n    if (typeof filter !== \"function\") filter = d3_selection_filter(filter);\n    for (var j = 0, m = this.length; j < m; j++) {\n      subgroups.push(subgroup = []);\n      subgroup.parentNode = (group = this[j]).parentNode;\n      for (var i = 0, n = group.length; i < n; i++) {\n        if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {\n          subgroup.push(node);\n        }\n      }\n    }\n    return d3_selection(subgroups);\n  };\n  function d3_selection_filter(selector) {\n    return function() {\n      return d3_selectMatches(this, selector);\n    };\n  }\n  d3_selectionPrototype.order = function() {\n    for (var j = -1, m = this.length; ++j < m; ) {\n      for (var group = this[j], i = group.length - 1, next = group[i], node; --i >= 0; ) {\n        if (node = group[i]) {\n          if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next);\n          next = node;\n        }\n      }\n    }\n    return this;\n  };\n  d3_selectionPrototype.sort = function(comparator) {\n    comparator = d3_selection_sortComparator.apply(this, arguments);\n    for (var j = -1, m = this.length; ++j < m; ) this[j].sort(comparator);\n    return this.order();\n  };\n  function d3_selection_sortComparator(comparator) {\n    if (!arguments.length) comparator = d3_ascending;\n    return function(a, b) {\n      return a && b ? comparator(a.__data__, b.__data__) : !a - !b;\n    };\n  }\n  d3_selectionPrototype.each = function(callback) {\n    return d3_selection_each(this, function(node, i, j) {\n      callback.call(node, node.__data__, i, j);\n    });\n  };\n  function d3_selection_each(groups, callback) {\n    for (var j = 0, m = groups.length; j < m; j++) {\n      for (var group = groups[j], i = 0, n = group.length, node; i < n; i++) {\n        if (node = group[i]) callback(node, i, j);\n      }\n    }\n    return groups;\n  }\n  d3_selectionPrototype.call = function(callback) {\n    var args = d3_array(arguments);\n    callback.apply(args[0] = this, args);\n    return this;\n  };\n  d3_selectionPrototype.empty = function() {\n    return !this.node();\n  };\n  d3_selectionPrototype.node = function() {\n    for (var j = 0, m = this.length; j < m; j++) {\n      for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n        var node = group[i];\n        if (node) return node;\n      }\n    }\n    return null;\n  };\n  d3_selectionPrototype.size = function() {\n    var n = 0;\n    d3_selection_each(this, function() {\n      ++n;\n    });\n    return n;\n  };\n  function d3_selection_enter(selection) {\n    d3_subclass(selection, d3_selection_enterPrototype);\n    return selection;\n  }\n  var d3_selection_enterPrototype = [];\n  d3.selection.enter = d3_selection_enter;\n  d3.selection.enter.prototype = d3_selection_enterPrototype;\n  d3_selection_enterPrototype.append = d3_selectionPrototype.append;\n  d3_selection_enterPrototype.empty = d3_selectionPrototype.empty;\n  d3_selection_enterPrototype.node = d3_selectionPrototype.node;\n  d3_selection_enterPrototype.call = d3_selectionPrototype.call;\n  d3_selection_enterPrototype.size = d3_selectionPrototype.size;\n  d3_selection_enterPrototype.select = function(selector) {\n    var subgroups = [], subgroup, subnode, upgroup, group, node;\n    for (var j = -1, m = this.length; ++j < m; ) {\n      upgroup = (group = this[j]).update;\n      subgroups.push(subgroup = []);\n      subgroup.parentNode = group.parentNode;\n      for (var i = -1, n = group.length; ++i < n; ) {\n        if (node = group[i]) {\n          subgroup.push(upgroup[i] = subnode = selector.call(group.parentNode, node.__data__, i, j));\n          subnode.__data__ = node.__data__;\n        } else {\n          subgroup.push(null);\n        }\n      }\n    }\n    return d3_selection(subgroups);\n  };\n  d3_selection_enterPrototype.insert = function(name, before) {\n    if (arguments.length < 2) before = d3_selection_enterInsertBefore(this);\n    return d3_selectionPrototype.insert.call(this, name, before);\n  };\n  function d3_selection_enterInsertBefore(enter) {\n    var i0, j0;\n    return function(d, i, j) {\n      var group = enter[j].update, n = group.length, node;\n      if (j != j0) j0 = j, i0 = 0;\n      if (i >= i0) i0 = i + 1;\n      while (!(node = group[i0]) && ++i0 < n) ;\n      return node;\n    };\n  }\n  d3.select = function(node) {\n    var group;\n    if (typeof node === \"string\") {\n      group = [ d3_select(node, d3_document) ];\n      group.parentNode = d3_document.documentElement;\n    } else {\n      group = [ node ];\n      group.parentNode = d3_documentElement(node);\n    }\n    return d3_selection([ group ]);\n  };\n  d3.selectAll = function(nodes) {\n    var group;\n    if (typeof nodes === \"string\") {\n      group = d3_array(d3_selectAll(nodes, d3_document));\n      group.parentNode = d3_document.documentElement;\n    } else {\n      group = d3_array(nodes);\n      group.parentNode = null;\n    }\n    return d3_selection([ group ]);\n  };\n  d3_selectionPrototype.on = function(type, listener, capture) {\n    var n = arguments.length;\n    if (n < 3) {\n      if (typeof type !== \"string\") {\n        if (n < 2) listener = false;\n        for (capture in type) this.each(d3_selection_on(capture, type[capture], listener));\n        return this;\n      }\n      if (n < 2) return (n = this.node()[\"__on\" + type]) && n._;\n      capture = false;\n    }\n    return this.each(d3_selection_on(type, listener, capture));\n  };\n  function d3_selection_on(type, listener, capture) {\n    var name = \"__on\" + type, i = type.indexOf(\".\"), wrap = d3_selection_onListener;\n    if (i > 0) type = type.slice(0, i);\n    var filter = d3_selection_onFilters.get(type);\n    if (filter) type = filter, wrap = d3_selection_onFilter;\n    function onRemove() {\n      var l = this[name];\n      if (l) {\n        this.removeEventListener(type, l, l.$);\n        delete this[name];\n      }\n    }\n    function onAdd() {\n      var l = wrap(listener, d3_array(arguments));\n      onRemove.call(this);\n      this.addEventListener(type, this[name] = l, l.$ = capture);\n      l._ = listener;\n    }\n    function removeAll() {\n      var re = new RegExp(\"^__on([^.]+)\" + d3.requote(type) + \"$\"), match;\n      for (var name in this) {\n        if (match = name.match(re)) {\n          var l = this[name];\n          this.removeEventListener(match[1], l, l.$);\n          delete this[name];\n        }\n      }\n    }\n    return i ? listener ? onAdd : onRemove : listener ? d3_noop : removeAll;\n  }\n  var d3_selection_onFilters = d3.map({\n    mouseenter: \"mouseover\",\n    mouseleave: \"mouseout\"\n  });\n  if (d3_document) {\n    d3_selection_onFilters.forEach(function(k) {\n      if (\"on\" + k in d3_document) d3_selection_onFilters.remove(k);\n    });\n  }\n  function d3_selection_onListener(listener, argumentz) {\n    return function(e) {\n      var o = d3.event;\n      d3.event = e;\n      argumentz[0] = this.__data__;\n      try {\n        listener.apply(this, argumentz);\n      } finally {\n        d3.event = o;\n      }\n    };\n  }\n  function d3_selection_onFilter(listener, argumentz) {\n    var l = d3_selection_onListener(listener, argumentz);\n    return function(e) {\n      var target = this, related = e.relatedTarget;\n      if (!related || related !== target && !(related.compareDocumentPosition(target) & 8)) {\n        l.call(target, e);\n      }\n    };\n  }\n  var d3_event_dragSelect, d3_event_dragId = 0;\n  function d3_event_dragSuppress(node) {\n    var name = \".dragsuppress-\" + ++d3_event_dragId, click = \"click\" + name, w = d3.select(d3_window(node)).on(\"touchmove\" + name, d3_eventPreventDefault).on(\"dragstart\" + name, d3_eventPreventDefault).on(\"selectstart\" + name, d3_eventPreventDefault);\n    if (d3_event_dragSelect == null) {\n      d3_event_dragSelect = \"onselectstart\" in node ? false : d3_vendorSymbol(node.style, \"userSelect\");\n    }\n    if (d3_event_dragSelect) {\n      var style = d3_documentElement(node).style, select = style[d3_event_dragSelect];\n      style[d3_event_dragSelect] = \"none\";\n    }\n    return function(suppressClick) {\n      w.on(name, null);\n      if (d3_event_dragSelect) style[d3_event_dragSelect] = select;\n      if (suppressClick) {\n        var off = function() {\n          w.on(click, null);\n        };\n        w.on(click, function() {\n          d3_eventPreventDefault();\n          off();\n        }, true);\n        setTimeout(off, 0);\n      }\n    };\n  }\n  d3.mouse = function(container) {\n    return d3_mousePoint(container, d3_eventSource());\n  };\n  var d3_mouse_bug44083 = this.navigator && /WebKit/.test(this.navigator.userAgent) ? -1 : 0;\n  function d3_mousePoint(container, e) {\n    if (e.changedTouches) e = e.changedTouches[0];\n    var svg = container.ownerSVGElement || container;\n    if (svg.createSVGPoint) {\n      var point = svg.createSVGPoint();\n      if (d3_mouse_bug44083 < 0) {\n        var window = d3_window(container);\n        if (window.scrollX || window.scrollY) {\n          svg = d3.select(\"body\").append(\"svg\").style({\n            position: \"absolute\",\n            top: 0,\n            left: 0,\n            margin: 0,\n            padding: 0,\n            border: \"none\"\n          }, \"important\");\n          var ctm = svg[0][0].getScreenCTM();\n          d3_mouse_bug44083 = !(ctm.f || ctm.e);\n          svg.remove();\n        }\n      }\n      if (d3_mouse_bug44083) point.x = e.pageX, point.y = e.pageY; else point.x = e.clientX, \n      point.y = e.clientY;\n      point = point.matrixTransform(container.getScreenCTM().inverse());\n      return [ point.x, point.y ];\n    }\n    var rect = container.getBoundingClientRect();\n    return [ e.clientX - rect.left - container.clientLeft, e.clientY - rect.top - container.clientTop ];\n  }\n  d3.touch = function(container, touches, identifier) {\n    if (arguments.length < 3) identifier = touches, touches = d3_eventSource().changedTouches;\n    if (touches) for (var i = 0, n = touches.length, touch; i < n; ++i) {\n      if ((touch = touches[i]).identifier === identifier) {\n        return d3_mousePoint(container, touch);\n      }\n    }\n  };\n  d3.behavior.drag = function() {\n    var event = d3_eventDispatch(drag, \"drag\", \"dragstart\", \"dragend\"), origin = null, mousedown = dragstart(d3_noop, d3.mouse, d3_window, \"mousemove\", \"mouseup\"), touchstart = dragstart(d3_behavior_dragTouchId, d3.touch, d3_identity, \"touchmove\", \"touchend\");\n    function drag() {\n      this.on(\"mousedown.drag\", mousedown).on(\"touchstart.drag\", touchstart);\n    }\n    function dragstart(id, position, subject, move, end) {\n      return function() {\n        var that = this, target = d3.event.target.correspondingElement || d3.event.target, parent = that.parentNode, dispatch = event.of(that, arguments), dragged = 0, dragId = id(), dragName = \".drag\" + (dragId == null ? \"\" : \"-\" + dragId), dragOffset, dragSubject = d3.select(subject(target)).on(move + dragName, moved).on(end + dragName, ended), dragRestore = d3_event_dragSuppress(target), position0 = position(parent, dragId);\n        if (origin) {\n          dragOffset = origin.apply(that, arguments);\n          dragOffset = [ dragOffset.x - position0[0], dragOffset.y - position0[1] ];\n        } else {\n          dragOffset = [ 0, 0 ];\n        }\n        dispatch({\n          type: \"dragstart\"\n        });\n        function moved() {\n          var position1 = position(parent, dragId), dx, dy;\n          if (!position1) return;\n          dx = position1[0] - position0[0];\n          dy = position1[1] - position0[1];\n          dragged |= dx | dy;\n          position0 = position1;\n          dispatch({\n            type: \"drag\",\n            x: position1[0] + dragOffset[0],\n            y: position1[1] + dragOffset[1],\n            dx: dx,\n            dy: dy\n          });\n        }\n        function ended() {\n          if (!position(parent, dragId)) return;\n          dragSubject.on(move + dragName, null).on(end + dragName, null);\n          dragRestore(dragged);\n          dispatch({\n            type: \"dragend\"\n          });\n        }\n      };\n    }\n    drag.origin = function(x) {\n      if (!arguments.length) return origin;\n      origin = x;\n      return drag;\n    };\n    return d3.rebind(drag, event, \"on\");\n  };\n  function d3_behavior_dragTouchId() {\n    return d3.event.changedTouches[0].identifier;\n  }\n  d3.touches = function(container, touches) {\n    if (arguments.length < 2) touches = d3_eventSource().touches;\n    return touches ? d3_array(touches).map(function(touch) {\n      var point = d3_mousePoint(container, touch);\n      point.identifier = touch.identifier;\n      return point;\n    }) : [];\n  };\n  var ε = 1e-6, ε2 = ε * ε, π = Math.PI, τ = 2 * π, τε = τ - ε, halfπ = π / 2, d3_radians = π / 180, d3_degrees = 180 / π;\n  function d3_sgn(x) {\n    return x > 0 ? 1 : x < 0 ? -1 : 0;\n  }\n  function d3_cross2d(a, b, c) {\n    return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n  }\n  function d3_acos(x) {\n    return x > 1 ? 0 : x < -1 ? π : Math.acos(x);\n  }\n  function d3_asin(x) {\n    return x > 1 ? halfπ : x < -1 ? -halfπ : Math.asin(x);\n  }\n  function d3_sinh(x) {\n    return ((x = Math.exp(x)) - 1 / x) / 2;\n  }\n  function d3_cosh(x) {\n    return ((x = Math.exp(x)) + 1 / x) / 2;\n  }\n  function d3_tanh(x) {\n    return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n  }\n  function d3_haversin(x) {\n    return (x = Math.sin(x / 2)) * x;\n  }\n  var ρ = Math.SQRT2, ρ2 = 2, ρ4 = 4;\n  d3.interpolateZoom = function(p0, p1) {\n    var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], ux1 = p1[0], uy1 = p1[1], w1 = p1[2], dx = ux1 - ux0, dy = uy1 - uy0, d2 = dx * dx + dy * dy, i, S;\n    if (d2 < ε2) {\n      S = Math.log(w1 / w0) / ρ;\n      i = function(t) {\n        return [ ux0 + t * dx, uy0 + t * dy, w0 * Math.exp(ρ * t * S) ];\n      };\n    } else {\n      var d1 = Math.sqrt(d2), b0 = (w1 * w1 - w0 * w0 + ρ4 * d2) / (2 * w0 * ρ2 * d1), b1 = (w1 * w1 - w0 * w0 - ρ4 * d2) / (2 * w1 * ρ2 * d1), r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n      S = (r1 - r0) / ρ;\n      i = function(t) {\n        var s = t * S, coshr0 = d3_cosh(r0), u = w0 / (ρ2 * d1) * (coshr0 * d3_tanh(ρ * s + r0) - d3_sinh(r0));\n        return [ ux0 + u * dx, uy0 + u * dy, w0 * coshr0 / d3_cosh(ρ * s + r0) ];\n      };\n    }\n    i.duration = S * 1e3;\n    return i;\n  };\n  d3.behavior.zoom = function() {\n    var view = {\n      x: 0,\n      y: 0,\n      k: 1\n    }, translate0, center0, center, size = [ 960, 500 ], scaleExtent = d3_behavior_zoomInfinity, duration = 250, zooming = 0, mousedown = \"mousedown.zoom\", mousemove = \"mousemove.zoom\", mouseup = \"mouseup.zoom\", mousewheelTimer, touchstart = \"touchstart.zoom\", touchtime, event = d3_eventDispatch(zoom, \"zoomstart\", \"zoom\", \"zoomend\"), x0, x1, y0, y1;\n    if (!d3_behavior_zoomWheel) {\n      d3_behavior_zoomWheel = \"onwheel\" in d3_document ? (d3_behavior_zoomDelta = function() {\n        return -d3.event.deltaY * (d3.event.deltaMode ? 120 : 1);\n      }, \"wheel\") : \"onmousewheel\" in d3_document ? (d3_behavior_zoomDelta = function() {\n        return d3.event.wheelDelta;\n      }, \"mousewheel\") : (d3_behavior_zoomDelta = function() {\n        return -d3.event.detail;\n      }, \"MozMousePixelScroll\");\n    }\n    function zoom(g) {\n      g.on(mousedown, mousedowned).on(d3_behavior_zoomWheel + \".zoom\", mousewheeled).on(\"dblclick.zoom\", dblclicked).on(touchstart, touchstarted);\n    }\n    zoom.event = function(g) {\n      g.each(function() {\n        var dispatch = event.of(this, arguments), view1 = view;\n        if (d3_transitionInheritId) {\n          d3.select(this).transition().each(\"start.zoom\", function() {\n            view = this.__chart__ || {\n              x: 0,\n              y: 0,\n              k: 1\n            };\n            zoomstarted(dispatch);\n          }).tween(\"zoom:zoom\", function() {\n            var dx = size[0], dy = size[1], cx = center0 ? center0[0] : dx / 2, cy = center0 ? center0[1] : dy / 2, i = d3.interpolateZoom([ (cx - view.x) / view.k, (cy - view.y) / view.k, dx / view.k ], [ (cx - view1.x) / view1.k, (cy - view1.y) / view1.k, dx / view1.k ]);\n            return function(t) {\n              var l = i(t), k = dx / l[2];\n              this.__chart__ = view = {\n                x: cx - l[0] * k,\n                y: cy - l[1] * k,\n                k: k\n              };\n              zoomed(dispatch);\n            };\n          }).each(\"interrupt.zoom\", function() {\n            zoomended(dispatch);\n          }).each(\"end.zoom\", function() {\n            zoomended(dispatch);\n          });\n        } else {\n          this.__chart__ = view;\n          zoomstarted(dispatch);\n          zoomed(dispatch);\n          zoomended(dispatch);\n        }\n      });\n    };\n    zoom.translate = function(_) {\n      if (!arguments.length) return [ view.x, view.y ];\n      view = {\n        x: +_[0],\n        y: +_[1],\n        k: view.k\n      };\n      rescale();\n      return zoom;\n    };\n    zoom.scale = function(_) {\n      if (!arguments.length) return view.k;\n      view = {\n        x: view.x,\n        y: view.y,\n        k: null\n      };\n      scaleTo(+_);\n      rescale();\n      return zoom;\n    };\n    zoom.scaleExtent = function(_) {\n      if (!arguments.length) return scaleExtent;\n      scaleExtent = _ == null ? d3_behavior_zoomInfinity : [ +_[0], +_[1] ];\n      return zoom;\n    };\n    zoom.center = function(_) {\n      if (!arguments.length) return center;\n      center = _ && [ +_[0], +_[1] ];\n      return zoom;\n    };\n    zoom.size = function(_) {\n      if (!arguments.length) return size;\n      size = _ && [ +_[0], +_[1] ];\n      return zoom;\n    };\n    zoom.duration = function(_) {\n      if (!arguments.length) return duration;\n      duration = +_;\n      return zoom;\n    };\n    zoom.x = function(z) {\n      if (!arguments.length) return x1;\n      x1 = z;\n      x0 = z.copy();\n      view = {\n        x: 0,\n        y: 0,\n        k: 1\n      };\n      return zoom;\n    };\n    zoom.y = function(z) {\n      if (!arguments.length) return y1;\n      y1 = z;\n      y0 = z.copy();\n      view = {\n        x: 0,\n        y: 0,\n        k: 1\n      };\n      return zoom;\n    };\n    function location(p) {\n      return [ (p[0] - view.x) / view.k, (p[1] - view.y) / view.k ];\n    }\n    function point(l) {\n      return [ l[0] * view.k + view.x, l[1] * view.k + view.y ];\n    }\n    function scaleTo(s) {\n      view.k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], s));\n    }\n    function translateTo(p, l) {\n      l = point(l);\n      view.x += p[0] - l[0];\n      view.y += p[1] - l[1];\n    }\n    function zoomTo(that, p, l, k) {\n      that.__chart__ = {\n        x: view.x,\n        y: view.y,\n        k: view.k\n      };\n      scaleTo(Math.pow(2, k));\n      translateTo(center0 = p, l);\n      that = d3.select(that);\n      if (duration > 0) that = that.transition().duration(duration);\n      that.call(zoom.event);\n    }\n    function rescale() {\n      if (x1) x1.domain(x0.range().map(function(x) {\n        return (x - view.x) / view.k;\n      }).map(x0.invert));\n      if (y1) y1.domain(y0.range().map(function(y) {\n        return (y - view.y) / view.k;\n      }).map(y0.invert));\n    }\n    function zoomstarted(dispatch) {\n      if (!zooming++) dispatch({\n        type: \"zoomstart\"\n      });\n    }\n    function zoomed(dispatch) {\n      rescale();\n      dispatch({\n        type: \"zoom\",\n        scale: view.k,\n        translate: [ view.x, view.y ]\n      });\n    }\n    function zoomended(dispatch) {\n      if (!--zooming) dispatch({\n        type: \"zoomend\"\n      }), center0 = null;\n    }\n    function mousedowned() {\n      var that = this, dispatch = event.of(that, arguments), dragged = 0, subject = d3.select(d3_window(that)).on(mousemove, moved).on(mouseup, ended), location0 = location(d3.mouse(that)), dragRestore = d3_event_dragSuppress(that);\n      d3_selection_interrupt.call(that);\n      zoomstarted(dispatch);\n      function moved() {\n        dragged = 1;\n        translateTo(d3.mouse(that), location0);\n        zoomed(dispatch);\n      }\n      function ended() {\n        subject.on(mousemove, null).on(mouseup, null);\n        dragRestore(dragged);\n        zoomended(dispatch);\n      }\n    }\n    function touchstarted() {\n      var that = this, dispatch = event.of(that, arguments), locations0 = {}, distance0 = 0, scale0, zoomName = \".zoom-\" + d3.event.changedTouches[0].identifier, touchmove = \"touchmove\" + zoomName, touchend = \"touchend\" + zoomName, targets = [], subject = d3.select(that), dragRestore = d3_event_dragSuppress(that);\n      started();\n      zoomstarted(dispatch);\n      subject.on(mousedown, null).on(touchstart, started);\n      function relocate() {\n        var touches = d3.touches(that);\n        scale0 = view.k;\n        touches.forEach(function(t) {\n          if (t.identifier in locations0) locations0[t.identifier] = location(t);\n        });\n        return touches;\n      }\n      function started() {\n        var target = d3.event.target;\n        d3.select(target).on(touchmove, moved).on(touchend, ended);\n        targets.push(target);\n        var changed = d3.event.changedTouches;\n        for (var i = 0, n = changed.length; i < n; ++i) {\n          locations0[changed[i].identifier] = null;\n        }\n        var touches = relocate(), now = Date.now();\n        if (touches.length === 1) {\n          if (now - touchtime < 500) {\n            var p = touches[0];\n            zoomTo(that, p, locations0[p.identifier], Math.floor(Math.log(view.k) / Math.LN2) + 1);\n            d3_eventPreventDefault();\n          }\n          touchtime = now;\n        } else if (touches.length > 1) {\n          var p = touches[0], q = touches[1], dx = p[0] - q[0], dy = p[1] - q[1];\n          distance0 = dx * dx + dy * dy;\n        }\n      }\n      function moved() {\n        var touches = d3.touches(that), p0, l0, p1, l1;\n        d3_selection_interrupt.call(that);\n        for (var i = 0, n = touches.length; i < n; ++i, l1 = null) {\n          p1 = touches[i];\n          if (l1 = locations0[p1.identifier]) {\n            if (l0) break;\n            p0 = p1, l0 = l1;\n          }\n        }\n        if (l1) {\n          var distance1 = (distance1 = p1[0] - p0[0]) * distance1 + (distance1 = p1[1] - p0[1]) * distance1, scale1 = distance0 && Math.sqrt(distance1 / distance0);\n          p0 = [ (p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2 ];\n          l0 = [ (l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2 ];\n          scaleTo(scale1 * scale0);\n        }\n        touchtime = null;\n        translateTo(p0, l0);\n        zoomed(dispatch);\n      }\n      function ended() {\n        if (d3.event.touches.length) {\n          var changed = d3.event.changedTouches;\n          for (var i = 0, n = changed.length; i < n; ++i) {\n            delete locations0[changed[i].identifier];\n          }\n          for (var identifier in locations0) {\n            return void relocate();\n          }\n        }\n        d3.selectAll(targets).on(zoomName, null);\n        subject.on(mousedown, mousedowned).on(touchstart, touchstarted);\n        dragRestore();\n        zoomended(dispatch);\n      }\n    }\n    function mousewheeled() {\n      var dispatch = event.of(this, arguments);\n      if (mousewheelTimer) clearTimeout(mousewheelTimer); else d3_selection_interrupt.call(this), \n      translate0 = location(center0 = center || d3.mouse(this)), zoomstarted(dispatch);\n      mousewheelTimer = setTimeout(function() {\n        mousewheelTimer = null;\n        zoomended(dispatch);\n      }, 50);\n      d3_eventPreventDefault();\n      scaleTo(Math.pow(2, d3_behavior_zoomDelta() * .002) * view.k);\n      translateTo(center0, translate0);\n      zoomed(dispatch);\n    }\n    function dblclicked() {\n      var p = d3.mouse(this), k = Math.log(view.k) / Math.LN2;\n      zoomTo(this, p, location(p), d3.event.shiftKey ? Math.ceil(k) - 1 : Math.floor(k) + 1);\n    }\n    return d3.rebind(zoom, event, \"on\");\n  };\n  var d3_behavior_zoomInfinity = [ 0, Infinity ], d3_behavior_zoomDelta, d3_behavior_zoomWheel;\n  d3.color = d3_color;\n  function d3_color() {}\n  d3_color.prototype.toString = function() {\n    return this.rgb() + \"\";\n  };\n  d3.hsl = d3_hsl;\n  function d3_hsl(h, s, l) {\n    return this instanceof d3_hsl ? void (this.h = +h, this.s = +s, this.l = +l) : arguments.length < 2 ? h instanceof d3_hsl ? new d3_hsl(h.h, h.s, h.l) : d3_rgb_parse(\"\" + h, d3_rgb_hsl, d3_hsl) : new d3_hsl(h, s, l);\n  }\n  var d3_hslPrototype = d3_hsl.prototype = new d3_color();\n  d3_hslPrototype.brighter = function(k) {\n    k = Math.pow(.7, arguments.length ? k : 1);\n    return new d3_hsl(this.h, this.s, this.l / k);\n  };\n  d3_hslPrototype.darker = function(k) {\n    k = Math.pow(.7, arguments.length ? k : 1);\n    return new d3_hsl(this.h, this.s, k * this.l);\n  };\n  d3_hslPrototype.rgb = function() {\n    return d3_hsl_rgb(this.h, this.s, this.l);\n  };\n  function d3_hsl_rgb(h, s, l) {\n    var m1, m2;\n    h = isNaN(h) ? 0 : (h %= 360) < 0 ? h + 360 : h;\n    s = isNaN(s) ? 0 : s < 0 ? 0 : s > 1 ? 1 : s;\n    l = l < 0 ? 0 : l > 1 ? 1 : l;\n    m2 = l <= .5 ? l * (1 + s) : l + s - l * s;\n    m1 = 2 * l - m2;\n    function v(h) {\n      if (h > 360) h -= 360; else if (h < 0) h += 360;\n      if (h < 60) return m1 + (m2 - m1) * h / 60;\n      if (h < 180) return m2;\n      if (h < 240) return m1 + (m2 - m1) * (240 - h) / 60;\n      return m1;\n    }\n    function vv(h) {\n      return Math.round(v(h) * 255);\n    }\n    return new d3_rgb(vv(h + 120), vv(h), vv(h - 120));\n  }\n  d3.hcl = d3_hcl;\n  function d3_hcl(h, c, l) {\n    return this instanceof d3_hcl ? void (this.h = +h, this.c = +c, this.l = +l) : arguments.length < 2 ? h instanceof d3_hcl ? new d3_hcl(h.h, h.c, h.l) : h instanceof d3_lab ? d3_lab_hcl(h.l, h.a, h.b) : d3_lab_hcl((h = d3_rgb_lab((h = d3.rgb(h)).r, h.g, h.b)).l, h.a, h.b) : new d3_hcl(h, c, l);\n  }\n  var d3_hclPrototype = d3_hcl.prototype = new d3_color();\n  d3_hclPrototype.brighter = function(k) {\n    return new d3_hcl(this.h, this.c, Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)));\n  };\n  d3_hclPrototype.darker = function(k) {\n    return new d3_hcl(this.h, this.c, Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)));\n  };\n  d3_hclPrototype.rgb = function() {\n    return d3_hcl_lab(this.h, this.c, this.l).rgb();\n  };\n  function d3_hcl_lab(h, c, l) {\n    if (isNaN(h)) h = 0;\n    if (isNaN(c)) c = 0;\n    return new d3_lab(l, Math.cos(h *= d3_radians) * c, Math.sin(h) * c);\n  }\n  d3.lab = d3_lab;\n  function d3_lab(l, a, b) {\n    return this instanceof d3_lab ? void (this.l = +l, this.a = +a, this.b = +b) : arguments.length < 2 ? l instanceof d3_lab ? new d3_lab(l.l, l.a, l.b) : l instanceof d3_hcl ? d3_hcl_lab(l.h, l.c, l.l) : d3_rgb_lab((l = d3_rgb(l)).r, l.g, l.b) : new d3_lab(l, a, b);\n  }\n  var d3_lab_K = 18;\n  var d3_lab_X = .95047, d3_lab_Y = 1, d3_lab_Z = 1.08883;\n  var d3_labPrototype = d3_lab.prototype = new d3_color();\n  d3_labPrototype.brighter = function(k) {\n    return new d3_lab(Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);\n  };\n  d3_labPrototype.darker = function(k) {\n    return new d3_lab(Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);\n  };\n  d3_labPrototype.rgb = function() {\n    return d3_lab_rgb(this.l, this.a, this.b);\n  };\n  function d3_lab_rgb(l, a, b) {\n    var y = (l + 16) / 116, x = y + a / 500, z = y - b / 200;\n    x = d3_lab_xyz(x) * d3_lab_X;\n    y = d3_lab_xyz(y) * d3_lab_Y;\n    z = d3_lab_xyz(z) * d3_lab_Z;\n    return new d3_rgb(d3_xyz_rgb(3.2404542 * x - 1.5371385 * y - .4985314 * z), d3_xyz_rgb(-.969266 * x + 1.8760108 * y + .041556 * z), d3_xyz_rgb(.0556434 * x - .2040259 * y + 1.0572252 * z));\n  }\n  function d3_lab_hcl(l, a, b) {\n    return l > 0 ? new d3_hcl(Math.atan2(b, a) * d3_degrees, Math.sqrt(a * a + b * b), l) : new d3_hcl(NaN, NaN, l);\n  }\n  function d3_lab_xyz(x) {\n    return x > .206893034 ? x * x * x : (x - 4 / 29) / 7.787037;\n  }\n  function d3_xyz_lab(x) {\n    return x > .008856 ? Math.pow(x, 1 / 3) : 7.787037 * x + 4 / 29;\n  }\n  function d3_xyz_rgb(r) {\n    return Math.round(255 * (r <= .00304 ? 12.92 * r : 1.055 * Math.pow(r, 1 / 2.4) - .055));\n  }\n  d3.rgb = d3_rgb;\n  function d3_rgb(r, g, b) {\n    return this instanceof d3_rgb ? void (this.r = ~~r, this.g = ~~g, this.b = ~~b) : arguments.length < 2 ? r instanceof d3_rgb ? new d3_rgb(r.r, r.g, r.b) : d3_rgb_parse(\"\" + r, d3_rgb, d3_hsl_rgb) : new d3_rgb(r, g, b);\n  }\n  function d3_rgbNumber(value) {\n    return new d3_rgb(value >> 16, value >> 8 & 255, value & 255);\n  }\n  function d3_rgbString(value) {\n    return d3_rgbNumber(value) + \"\";\n  }\n  var d3_rgbPrototype = d3_rgb.prototype = new d3_color();\n  d3_rgbPrototype.brighter = function(k) {\n    k = Math.pow(.7, arguments.length ? k : 1);\n    var r = this.r, g = this.g, b = this.b, i = 30;\n    if (!r && !g && !b) return new d3_rgb(i, i, i);\n    if (r && r < i) r = i;\n    if (g && g < i) g = i;\n    if (b && b < i) b = i;\n    return new d3_rgb(Math.min(255, r / k), Math.min(255, g / k), Math.min(255, b / k));\n  };\n  d3_rgbPrototype.darker = function(k) {\n    k = Math.pow(.7, arguments.length ? k : 1);\n    return new d3_rgb(k * this.r, k * this.g, k * this.b);\n  };\n  d3_rgbPrototype.hsl = function() {\n    return d3_rgb_hsl(this.r, this.g, this.b);\n  };\n  d3_rgbPrototype.toString = function() {\n    return \"#\" + d3_rgb_hex(this.r) + d3_rgb_hex(this.g) + d3_rgb_hex(this.b);\n  };\n  function d3_rgb_hex(v) {\n    return v < 16 ? \"0\" + Math.max(0, v).toString(16) : Math.min(255, v).toString(16);\n  }\n  function d3_rgb_parse(format, rgb, hsl) {\n    var r = 0, g = 0, b = 0, m1, m2, color;\n    m1 = /([a-z]+)\\((.*)\\)/.exec(format = format.toLowerCase());\n    if (m1) {\n      m2 = m1[2].split(\",\");\n      switch (m1[1]) {\n       case \"hsl\":\n        {\n          return hsl(parseFloat(m2[0]), parseFloat(m2[1]) / 100, parseFloat(m2[2]) / 100);\n        }\n\n       case \"rgb\":\n        {\n          return rgb(d3_rgb_parseNumber(m2[0]), d3_rgb_parseNumber(m2[1]), d3_rgb_parseNumber(m2[2]));\n        }\n      }\n    }\n    if (color = d3_rgb_names.get(format)) {\n      return rgb(color.r, color.g, color.b);\n    }\n    if (format != null && format.charAt(0) === \"#\" && !isNaN(color = parseInt(format.slice(1), 16))) {\n      if (format.length === 4) {\n        r = (color & 3840) >> 4;\n        r = r >> 4 | r;\n        g = color & 240;\n        g = g >> 4 | g;\n        b = color & 15;\n        b = b << 4 | b;\n      } else if (format.length === 7) {\n        r = (color & 16711680) >> 16;\n        g = (color & 65280) >> 8;\n        b = color & 255;\n      }\n    }\n    return rgb(r, g, b);\n  }\n  function d3_rgb_hsl(r, g, b) {\n    var min = Math.min(r /= 255, g /= 255, b /= 255), max = Math.max(r, g, b), d = max - min, h, s, l = (max + min) / 2;\n    if (d) {\n      s = l < .5 ? d / (max + min) : d / (2 - max - min);\n      if (r == max) h = (g - b) / d + (g < b ? 6 : 0); else if (g == max) h = (b - r) / d + 2; else h = (r - g) / d + 4;\n      h *= 60;\n    } else {\n      h = NaN;\n      s = l > 0 && l < 1 ? 0 : h;\n    }\n    return new d3_hsl(h, s, l);\n  }\n  function d3_rgb_lab(r, g, b) {\n    r = d3_rgb_xyz(r);\n    g = d3_rgb_xyz(g);\n    b = d3_rgb_xyz(b);\n    var x = d3_xyz_lab((.4124564 * r + .3575761 * g + .1804375 * b) / d3_lab_X), y = d3_xyz_lab((.2126729 * r + .7151522 * g + .072175 * b) / d3_lab_Y), z = d3_xyz_lab((.0193339 * r + .119192 * g + .9503041 * b) / d3_lab_Z);\n    return d3_lab(116 * y - 16, 500 * (x - y), 200 * (y - z));\n  }\n  function d3_rgb_xyz(r) {\n    return (r /= 255) <= .04045 ? r / 12.92 : Math.pow((r + .055) / 1.055, 2.4);\n  }\n  function d3_rgb_parseNumber(c) {\n    var f = parseFloat(c);\n    return c.charAt(c.length - 1) === \"%\" ? Math.round(f * 2.55) : f;\n  }\n  var d3_rgb_names = d3.map({\n    aliceblue: 15792383,\n    antiquewhite: 16444375,\n    aqua: 65535,\n    aquamarine: 8388564,\n    azure: 15794175,\n    beige: 16119260,\n    bisque: 16770244,\n    black: 0,\n    blanchedalmond: 16772045,\n    blue: 255,\n    blueviolet: 9055202,\n    brown: 10824234,\n    burlywood: 14596231,\n    cadetblue: 6266528,\n    chartreuse: 8388352,\n    chocolate: 13789470,\n    coral: 16744272,\n    cornflowerblue: 6591981,\n    cornsilk: 16775388,\n    crimson: 14423100,\n    cyan: 65535,\n    darkblue: 139,\n    darkcyan: 35723,\n    darkgoldenrod: 12092939,\n    darkgray: 11119017,\n    darkgreen: 25600,\n    darkgrey: 11119017,\n    darkkhaki: 12433259,\n    darkmagenta: 9109643,\n    darkolivegreen: 5597999,\n    darkorange: 16747520,\n    darkorchid: 10040012,\n    darkred: 9109504,\n    darksalmon: 15308410,\n    darkseagreen: 9419919,\n    darkslateblue: 4734347,\n    darkslategray: 3100495,\n    darkslategrey: 3100495,\n    darkturquoise: 52945,\n    darkviolet: 9699539,\n    deeppink: 16716947,\n    deepskyblue: 49151,\n    dimgray: 6908265,\n    dimgrey: 6908265,\n    dodgerblue: 2003199,\n    firebrick: 11674146,\n    floralwhite: 16775920,\n    forestgreen: 2263842,\n    fuchsia: 16711935,\n    gainsboro: 14474460,\n    ghostwhite: 16316671,\n    gold: 16766720,\n    goldenrod: 14329120,\n    gray: 8421504,\n    green: 32768,\n    greenyellow: 11403055,\n    grey: 8421504,\n    honeydew: 15794160,\n    hotpink: 16738740,\n    indianred: 13458524,\n    indigo: 4915330,\n    ivory: 16777200,\n    khaki: 15787660,\n    lavender: 15132410,\n    lavenderblush: 16773365,\n    lawngreen: 8190976,\n    lemonchiffon: 16775885,\n    lightblue: 11393254,\n    lightcoral: 15761536,\n    lightcyan: 14745599,\n    lightgoldenrodyellow: 16448210,\n    lightgray: 13882323,\n    lightgreen: 9498256,\n    lightgrey: 13882323,\n    lightpink: 16758465,\n    lightsalmon: 16752762,\n    lightseagreen: 2142890,\n    lightskyblue: 8900346,\n    lightslategray: 7833753,\n    lightslategrey: 7833753,\n    lightsteelblue: 11584734,\n    lightyellow: 16777184,\n    lime: 65280,\n    limegreen: 3329330,\n    linen: 16445670,\n    magenta: 16711935,\n    maroon: 8388608,\n    mediumaquamarine: 6737322,\n    mediumblue: 205,\n    mediumorchid: 12211667,\n    mediumpurple: 9662683,\n    mediumseagreen: 3978097,\n    mediumslateblue: 8087790,\n    mediumspringgreen: 64154,\n    mediumturquoise: 4772300,\n    mediumvioletred: 13047173,\n    midnightblue: 1644912,\n    mintcream: 16121850,\n    mistyrose: 16770273,\n    moccasin: 16770229,\n    navajowhite: 16768685,\n    navy: 128,\n    oldlace: 16643558,\n    olive: 8421376,\n    olivedrab: 7048739,\n    orange: 16753920,\n    orangered: 16729344,\n    orchid: 14315734,\n    palegoldenrod: 15657130,\n    palegreen: 10025880,\n    paleturquoise: 11529966,\n    palevioletred: 14381203,\n    papayawhip: 16773077,\n    peachpuff: 16767673,\n    peru: 13468991,\n    pink: 16761035,\n    plum: 14524637,\n    powderblue: 11591910,\n    purple: 8388736,\n    rebeccapurple: 6697881,\n    red: 16711680,\n    rosybrown: 12357519,\n    royalblue: 4286945,\n    saddlebrown: 9127187,\n    salmon: 16416882,\n    sandybrown: 16032864,\n    seagreen: 3050327,\n    seashell: 16774638,\n    sienna: 10506797,\n    silver: 12632256,\n    skyblue: 8900331,\n    slateblue: 6970061,\n    slategray: 7372944,\n    slategrey: 7372944,\n    snow: 16775930,\n    springgreen: 65407,\n    steelblue: 4620980,\n    tan: 13808780,\n    teal: 32896,\n    thistle: 14204888,\n    tomato: 16737095,\n    turquoise: 4251856,\n    violet: 15631086,\n    wheat: 16113331,\n    white: 16777215,\n    whitesmoke: 16119285,\n    yellow: 16776960,\n    yellowgreen: 10145074\n  });\n  d3_rgb_names.forEach(function(key, value) {\n    d3_rgb_names.set(key, d3_rgbNumber(value));\n  });\n  function d3_functor(v) {\n    return typeof v === \"function\" ? v : function() {\n      return v;\n    };\n  }\n  d3.functor = d3_functor;\n  d3.xhr = d3_xhrType(d3_identity);\n  function d3_xhrType(response) {\n    return function(url, mimeType, callback) {\n      if (arguments.length === 2 && typeof mimeType === \"function\") callback = mimeType, \n      mimeType = null;\n      return d3_xhr(url, mimeType, response, callback);\n    };\n  }\n  function d3_xhr(url, mimeType, response, callback) {\n    var xhr = {}, dispatch = d3.dispatch(\"beforesend\", \"progress\", \"load\", \"error\"), headers = {}, request = new XMLHttpRequest(), responseType = null;\n    if (this.XDomainRequest && !(\"withCredentials\" in request) && /^(http(s)?:)?\\/\\//.test(url)) request = new XDomainRequest();\n    \"onload\" in request ? request.onload = request.onerror = respond : request.onreadystatechange = function() {\n      request.readyState > 3 && respond();\n    };\n    function respond() {\n      var status = request.status, result;\n      if (!status && d3_xhrHasResponse(request) || status >= 200 && status < 300 || status === 304) {\n        try {\n          result = response.call(xhr, request);\n        } catch (e) {\n          dispatch.error.call(xhr, e);\n          return;\n        }\n        dispatch.load.call(xhr, result);\n      } else {\n        dispatch.error.call(xhr, request);\n      }\n    }\n    request.onprogress = function(event) {\n      var o = d3.event;\n      d3.event = event;\n      try {\n        dispatch.progress.call(xhr, request);\n      } finally {\n        d3.event = o;\n      }\n    };\n    xhr.header = function(name, value) {\n      name = (name + \"\").toLowerCase();\n      if (arguments.length < 2) return headers[name];\n      if (value == null) delete headers[name]; else headers[name] = value + \"\";\n      return xhr;\n    };\n    xhr.mimeType = function(value) {\n      if (!arguments.length) return mimeType;\n      mimeType = value == null ? null : value + \"\";\n      return xhr;\n    };\n    xhr.responseType = function(value) {\n      if (!arguments.length) return responseType;\n      responseType = value;\n      return xhr;\n    };\n    xhr.response = function(value) {\n      response = value;\n      return xhr;\n    };\n    [ \"get\", \"post\" ].forEach(function(method) {\n      xhr[method] = function() {\n        return xhr.send.apply(xhr, [ method ].concat(d3_array(arguments)));\n      };\n    });\n    xhr.send = function(method, data, callback) {\n      if (arguments.length === 2 && typeof data === \"function\") callback = data, data = null;\n      request.open(method, url, true);\n      if (mimeType != null && !(\"accept\" in headers)) headers[\"accept\"] = mimeType + \",*/*\";\n      if (request.setRequestHeader) for (var name in headers) request.setRequestHeader(name, headers[name]);\n      if (mimeType != null && request.overrideMimeType) request.overrideMimeType(mimeType);\n      if (responseType != null) request.responseType = responseType;\n      if (callback != null) xhr.on(\"error\", callback).on(\"load\", function(request) {\n        callback(null, request);\n      });\n      dispatch.beforesend.call(xhr, request);\n      request.send(data == null ? null : data);\n      return xhr;\n    };\n    xhr.abort = function() {\n      request.abort();\n      return xhr;\n    };\n    d3.rebind(xhr, dispatch, \"on\");\n    return callback == null ? xhr : xhr.get(d3_xhr_fixCallback(callback));\n  }\n  function d3_xhr_fixCallback(callback) {\n    return callback.length === 1 ? function(error, request) {\n      callback(error == null ? request : null);\n    } : callback;\n  }\n  function d3_xhrHasResponse(request) {\n    var type = request.responseType;\n    return type && type !== \"text\" ? request.response : request.responseText;\n  }\n  d3.dsv = function(delimiter, mimeType) {\n    var reFormat = new RegExp('[\"' + delimiter + \"\\n]\"), delimiterCode = delimiter.charCodeAt(0);\n    function dsv(url, row, callback) {\n      if (arguments.length < 3) callback = row, row = null;\n      var xhr = d3_xhr(url, mimeType, row == null ? response : typedResponse(row), callback);\n      xhr.row = function(_) {\n        return arguments.length ? xhr.response((row = _) == null ? response : typedResponse(_)) : row;\n      };\n      return xhr;\n    }\n    function response(request) {\n      return dsv.parse(request.responseText);\n    }\n    function typedResponse(f) {\n      return function(request) {\n        return dsv.parse(request.responseText, f);\n      };\n    }\n    dsv.parse = function(text, f) {\n      var o;\n      return dsv.parseRows(text, function(row, i) {\n        if (o) return o(row, i - 1);\n        var a = new Function(\"d\", \"return {\" + row.map(function(name, i) {\n          return JSON.stringify(name) + \": d[\" + i + \"]\";\n        }).join(\",\") + \"}\");\n        o = f ? function(row, i) {\n          return f(a(row), i);\n        } : a;\n      });\n    };\n    dsv.parseRows = function(text, f) {\n      var EOL = {}, EOF = {}, rows = [], N = text.length, I = 0, n = 0, t, eol;\n      function token() {\n        if (I >= N) return EOF;\n        if (eol) return eol = false, EOL;\n        var j = I;\n        if (text.charCodeAt(j) === 34) {\n          var i = j;\n          while (i++ < N) {\n            if (text.charCodeAt(i) === 34) {\n              if (text.charCodeAt(i + 1) !== 34) break;\n              ++i;\n            }\n          }\n          I = i + 2;\n          var c = text.charCodeAt(i + 1);\n          if (c === 13) {\n            eol = true;\n            if (text.charCodeAt(i + 2) === 10) ++I;\n          } else if (c === 10) {\n            eol = true;\n          }\n          return text.slice(j + 1, i).replace(/\"\"/g, '\"');\n        }\n        while (I < N) {\n          var c = text.charCodeAt(I++), k = 1;\n          if (c === 10) eol = true; else if (c === 13) {\n            eol = true;\n            if (text.charCodeAt(I) === 10) ++I, ++k;\n          } else if (c !== delimiterCode) continue;\n          return text.slice(j, I - k);\n        }\n        return text.slice(j);\n      }\n      while ((t = token()) !== EOF) {\n        var a = [];\n        while (t !== EOL && t !== EOF) {\n          a.push(t);\n          t = token();\n        }\n        if (f && (a = f(a, n++)) == null) continue;\n        rows.push(a);\n      }\n      return rows;\n    };\n    dsv.format = function(rows) {\n      if (Array.isArray(rows[0])) return dsv.formatRows(rows);\n      var fieldSet = new d3_Set(), fields = [];\n      rows.forEach(function(row) {\n        for (var field in row) {\n          if (!fieldSet.has(field)) {\n            fields.push(fieldSet.add(field));\n          }\n        }\n      });\n      return [ fields.map(formatValue).join(delimiter) ].concat(rows.map(function(row) {\n        return fields.map(function(field) {\n          return formatValue(row[field]);\n        }).join(delimiter);\n      })).join(\"\\n\");\n    };\n    dsv.formatRows = function(rows) {\n      return rows.map(formatRow).join(\"\\n\");\n    };\n    function formatRow(row) {\n      return row.map(formatValue).join(delimiter);\n    }\n    function formatValue(text) {\n      return reFormat.test(text) ? '\"' + text.replace(/\\\"/g, '\"\"') + '\"' : text;\n    }\n    return dsv;\n  };\n  d3.csv = d3.dsv(\",\", \"text/csv\");\n  d3.tsv = d3.dsv(\"\t\", \"text/tab-separated-values\");\n  var d3_timer_queueHead, d3_timer_queueTail, d3_timer_interval, d3_timer_timeout, d3_timer_frame = this[d3_vendorSymbol(this, \"requestAnimationFrame\")] || function(callback) {\n    setTimeout(callback, 17);\n  };\n  d3.timer = function() {\n    d3_timer.apply(this, arguments);\n  };\n  function d3_timer(callback, delay, then) {\n    var n = arguments.length;\n    if (n < 2) delay = 0;\n    if (n < 3) then = Date.now();\n    var time = then + delay, timer = {\n      c: callback,\n      t: time,\n      n: null\n    };\n    if (d3_timer_queueTail) d3_timer_queueTail.n = timer; else d3_timer_queueHead = timer;\n    d3_timer_queueTail = timer;\n    if (!d3_timer_interval) {\n      d3_timer_timeout = clearTimeout(d3_timer_timeout);\n      d3_timer_interval = 1;\n      d3_timer_frame(d3_timer_step);\n    }\n    return timer;\n  }\n  function d3_timer_step() {\n    var now = d3_timer_mark(), delay = d3_timer_sweep() - now;\n    if (delay > 24) {\n      if (isFinite(delay)) {\n        clearTimeout(d3_timer_timeout);\n        d3_timer_timeout = setTimeout(d3_timer_step, delay);\n      }\n      d3_timer_interval = 0;\n    } else {\n      d3_timer_interval = 1;\n      d3_timer_frame(d3_timer_step);\n    }\n  }\n  d3.timer.flush = function() {\n    d3_timer_mark();\n    d3_timer_sweep();\n  };\n  function d3_timer_mark() {\n    var now = Date.now(), timer = d3_timer_queueHead;\n    while (timer) {\n      if (now >= timer.t && timer.c(now - timer.t)) timer.c = null;\n      timer = timer.n;\n    }\n    return now;\n  }\n  function d3_timer_sweep() {\n    var t0, t1 = d3_timer_queueHead, time = Infinity;\n    while (t1) {\n      if (t1.c) {\n        if (t1.t < time) time = t1.t;\n        t1 = (t0 = t1).n;\n      } else {\n        t1 = t0 ? t0.n = t1.n : d3_timer_queueHead = t1.n;\n      }\n    }\n    d3_timer_queueTail = t0;\n    return time;\n  }\n  function d3_format_precision(x, p) {\n    return p - (x ? Math.ceil(Math.log(x) / Math.LN10) : 1);\n  }\n  d3.round = function(x, n) {\n    return n ? Math.round(x * (n = Math.pow(10, n))) / n : Math.round(x);\n  };\n  var d3_formatPrefixes = [ \"y\", \"z\", \"a\", \"f\", \"p\", \"n\", \"µ\", \"m\", \"\", \"k\", \"M\", \"G\", \"T\", \"P\", \"E\", \"Z\", \"Y\" ].map(d3_formatPrefix);\n  d3.formatPrefix = function(value, precision) {\n    var i = 0;\n    if (value = +value) {\n      if (value < 0) value *= -1;\n      if (precision) value = d3.round(value, d3_format_precision(value, precision));\n      i = 1 + Math.floor(1e-12 + Math.log(value) / Math.LN10);\n      i = Math.max(-24, Math.min(24, Math.floor((i - 1) / 3) * 3));\n    }\n    return d3_formatPrefixes[8 + i / 3];\n  };\n  function d3_formatPrefix(d, i) {\n    var k = Math.pow(10, abs(8 - i) * 3);\n    return {\n      scale: i > 8 ? function(d) {\n        return d / k;\n      } : function(d) {\n        return d * k;\n      },\n      symbol: d\n    };\n  }\n  function d3_locale_numberFormat(locale) {\n    var locale_decimal = locale.decimal, locale_thousands = locale.thousands, locale_grouping = locale.grouping, locale_currency = locale.currency, formatGroup = locale_grouping && locale_thousands ? function(value, width) {\n      var i = value.length, t = [], j = 0, g = locale_grouping[0], length = 0;\n      while (i > 0 && g > 0) {\n        if (length + g + 1 > width) g = Math.max(1, width - length);\n        t.push(value.substring(i -= g, i + g));\n        if ((length += g + 1) > width) break;\n        g = locale_grouping[j = (j + 1) % locale_grouping.length];\n      }\n      return t.reverse().join(locale_thousands);\n    } : d3_identity;\n    return function(specifier) {\n      var match = d3_format_re.exec(specifier), fill = match[1] || \" \", align = match[2] || \">\", sign = match[3] || \"-\", symbol = match[4] || \"\", zfill = match[5], width = +match[6], comma = match[7], precision = match[8], type = match[9], scale = 1, prefix = \"\", suffix = \"\", integer = false, exponent = true;\n      if (precision) precision = +precision.substring(1);\n      if (zfill || fill === \"0\" && align === \"=\") {\n        zfill = fill = \"0\";\n        align = \"=\";\n      }\n      switch (type) {\n       case \"n\":\n        comma = true;\n        type = \"g\";\n        break;\n\n       case \"%\":\n        scale = 100;\n        suffix = \"%\";\n        type = \"f\";\n        break;\n\n       case \"p\":\n        scale = 100;\n        suffix = \"%\";\n        type = \"r\";\n        break;\n\n       case \"b\":\n       case \"o\":\n       case \"x\":\n       case \"X\":\n        if (symbol === \"#\") prefix = \"0\" + type.toLowerCase();\n\n       case \"c\":\n        exponent = false;\n\n       case \"d\":\n        integer = true;\n        precision = 0;\n        break;\n\n       case \"s\":\n        scale = -1;\n        type = \"r\";\n        break;\n      }\n      if (symbol === \"$\") prefix = locale_currency[0], suffix = locale_currency[1];\n      if (type == \"r\" && !precision) type = \"g\";\n      if (precision != null) {\n        if (type == \"g\") precision = Math.max(1, Math.min(21, precision)); else if (type == \"e\" || type == \"f\") precision = Math.max(0, Math.min(20, precision));\n      }\n      type = d3_format_types.get(type) || d3_format_typeDefault;\n      var zcomma = zfill && comma;\n      return function(value) {\n        var fullSuffix = suffix;\n        if (integer && value % 1) return \"\";\n        var negative = value < 0 || value === 0 && 1 / value < 0 ? (value = -value, \"-\") : sign === \"-\" ? \"\" : sign;\n        if (scale < 0) {\n          var unit = d3.formatPrefix(value, precision);\n          value = unit.scale(value);\n          fullSuffix = unit.symbol + suffix;\n        } else {\n          value *= scale;\n        }\n        value = type(value, precision);\n        var i = value.lastIndexOf(\".\"), before, after;\n        if (i < 0) {\n          var j = exponent ? value.lastIndexOf(\"e\") : -1;\n          if (j < 0) before = value, after = \"\"; else before = value.substring(0, j), after = value.substring(j);\n        } else {\n          before = value.substring(0, i);\n          after = locale_decimal + value.substring(i + 1);\n        }\n        if (!zfill && comma) before = formatGroup(before, Infinity);\n        var length = prefix.length + before.length + after.length + (zcomma ? 0 : negative.length), padding = length < width ? new Array(length = width - length + 1).join(fill) : \"\";\n        if (zcomma) before = formatGroup(padding + before, padding.length ? width - after.length : Infinity);\n        negative += prefix;\n        value = before + after;\n        return (align === \"<\" ? negative + value + padding : align === \">\" ? padding + negative + value : align === \"^\" ? padding.substring(0, length >>= 1) + negative + value + padding.substring(length) : negative + (zcomma ? value : padding + value)) + fullSuffix;\n      };\n    };\n  }\n  var d3_format_re = /(?:([^{])?([<>=^]))?([+\\- ])?([$#])?(0)?(\\d+)?(,)?(\\.-?\\d+)?([a-z%])?/i;\n  var d3_format_types = d3.map({\n    b: function(x) {\n      return x.toString(2);\n    },\n    c: function(x) {\n      return String.fromCharCode(x);\n    },\n    o: function(x) {\n      return x.toString(8);\n    },\n    x: function(x) {\n      return x.toString(16);\n    },\n    X: function(x) {\n      return x.toString(16).toUpperCase();\n    },\n    g: function(x, p) {\n      return x.toPrecision(p);\n    },\n    e: function(x, p) {\n      return x.toExponential(p);\n    },\n    f: function(x, p) {\n      return x.toFixed(p);\n    },\n    r: function(x, p) {\n      return (x = d3.round(x, d3_format_precision(x, p))).toFixed(Math.max(0, Math.min(20, d3_format_precision(x * (1 + 1e-15), p))));\n    }\n  });\n  function d3_format_typeDefault(x) {\n    return x + \"\";\n  }\n  var d3_time = d3.time = {}, d3_date = Date;\n  function d3_date_utc() {\n    this._ = new Date(arguments.length > 1 ? Date.UTC.apply(this, arguments) : arguments[0]);\n  }\n  d3_date_utc.prototype = {\n    getDate: function() {\n      return this._.getUTCDate();\n    },\n    getDay: function() {\n      return this._.getUTCDay();\n    },\n    getFullYear: function() {\n      return this._.getUTCFullYear();\n    },\n    getHours: function() {\n      return this._.getUTCHours();\n    },\n    getMilliseconds: function() {\n      return this._.getUTCMilliseconds();\n    },\n    getMinutes: function() {\n      return this._.getUTCMinutes();\n    },\n    getMonth: function() {\n      return this._.getUTCMonth();\n    },\n    getSeconds: function() {\n      return this._.getUTCSeconds();\n    },\n    getTime: function() {\n      return this._.getTime();\n    },\n    getTimezoneOffset: function() {\n      return 0;\n    },\n    valueOf: function() {\n      return this._.valueOf();\n    },\n    setDate: function() {\n      d3_time_prototype.setUTCDate.apply(this._, arguments);\n    },\n    setDay: function() {\n      d3_time_prototype.setUTCDay.apply(this._, arguments);\n    },\n    setFullYear: function() {\n      d3_time_prototype.setUTCFullYear.apply(this._, arguments);\n    },\n    setHours: function() {\n      d3_time_prototype.setUTCHours.apply(this._, arguments);\n    },\n    setMilliseconds: function() {\n      d3_time_prototype.setUTCMilliseconds.apply(this._, arguments);\n    },\n    setMinutes: function() {\n      d3_time_prototype.setUTCMinutes.apply(this._, arguments);\n    },\n    setMonth: function() {\n      d3_time_prototype.setUTCMonth.apply(this._, arguments);\n    },\n    setSeconds: function() {\n      d3_time_prototype.setUTCSeconds.apply(this._, arguments);\n    },\n    setTime: function() {\n      d3_time_prototype.setTime.apply(this._, arguments);\n    }\n  };\n  var d3_time_prototype = Date.prototype;\n  function d3_time_interval(local, step, number) {\n    function round(date) {\n      var d0 = local(date), d1 = offset(d0, 1);\n      return date - d0 < d1 - date ? d0 : d1;\n    }\n    function ceil(date) {\n      step(date = local(new d3_date(date - 1)), 1);\n      return date;\n    }\n    function offset(date, k) {\n      step(date = new d3_date(+date), k);\n      return date;\n    }\n    function range(t0, t1, dt) {\n      var time = ceil(t0), times = [];\n      if (dt > 1) {\n        while (time < t1) {\n          if (!(number(time) % dt)) times.push(new Date(+time));\n          step(time, 1);\n        }\n      } else {\n        while (time < t1) times.push(new Date(+time)), step(time, 1);\n      }\n      return times;\n    }\n    function range_utc(t0, t1, dt) {\n      try {\n        d3_date = d3_date_utc;\n        var utc = new d3_date_utc();\n        utc._ = t0;\n        return range(utc, t1, dt);\n      } finally {\n        d3_date = Date;\n      }\n    }\n    local.floor = local;\n    local.round = round;\n    local.ceil = ceil;\n    local.offset = offset;\n    local.range = range;\n    var utc = local.utc = d3_time_interval_utc(local);\n    utc.floor = utc;\n    utc.round = d3_time_interval_utc(round);\n    utc.ceil = d3_time_interval_utc(ceil);\n    utc.offset = d3_time_interval_utc(offset);\n    utc.range = range_utc;\n    return local;\n  }\n  function d3_time_interval_utc(method) {\n    return function(date, k) {\n      try {\n        d3_date = d3_date_utc;\n        var utc = new d3_date_utc();\n        utc._ = date;\n        return method(utc, k)._;\n      } finally {\n        d3_date = Date;\n      }\n    };\n  }\n  d3_time.year = d3_time_interval(function(date) {\n    date = d3_time.day(date);\n    date.setMonth(0, 1);\n    return date;\n  }, function(date, offset) {\n    date.setFullYear(date.getFullYear() + offset);\n  }, function(date) {\n    return date.getFullYear();\n  });\n  d3_time.years = d3_time.year.range;\n  d3_time.years.utc = d3_time.year.utc.range;\n  d3_time.day = d3_time_interval(function(date) {\n    var day = new d3_date(2e3, 0);\n    day.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n    return day;\n  }, function(date, offset) {\n    date.setDate(date.getDate() + offset);\n  }, function(date) {\n    return date.getDate() - 1;\n  });\n  d3_time.days = d3_time.day.range;\n  d3_time.days.utc = d3_time.day.utc.range;\n  d3_time.dayOfYear = function(date) {\n    var year = d3_time.year(date);\n    return Math.floor((date - year - (date.getTimezoneOffset() - year.getTimezoneOffset()) * 6e4) / 864e5);\n  };\n  [ \"sunday\", \"monday\", \"tuesday\", \"wednesday\", \"thursday\", \"friday\", \"saturday\" ].forEach(function(day, i) {\n    i = 7 - i;\n    var interval = d3_time[day] = d3_time_interval(function(date) {\n      (date = d3_time.day(date)).setDate(date.getDate() - (date.getDay() + i) % 7);\n      return date;\n    }, function(date, offset) {\n      date.setDate(date.getDate() + Math.floor(offset) * 7);\n    }, function(date) {\n      var day = d3_time.year(date).getDay();\n      return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7) - (day !== i);\n    });\n    d3_time[day + \"s\"] = interval.range;\n    d3_time[day + \"s\"].utc = interval.utc.range;\n    d3_time[day + \"OfYear\"] = function(date) {\n      var day = d3_time.year(date).getDay();\n      return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7);\n    };\n  });\n  d3_time.week = d3_time.sunday;\n  d3_time.weeks = d3_time.sunday.range;\n  d3_time.weeks.utc = d3_time.sunday.utc.range;\n  d3_time.weekOfYear = d3_time.sundayOfYear;\n  function d3_locale_timeFormat(locale) {\n    var locale_dateTime = locale.dateTime, locale_date = locale.date, locale_time = locale.time, locale_periods = locale.periods, locale_days = locale.days, locale_shortDays = locale.shortDays, locale_months = locale.months, locale_shortMonths = locale.shortMonths;\n    function d3_time_format(template) {\n      var n = template.length;\n      function format(date) {\n        var string = [], i = -1, j = 0, c, p, f;\n        while (++i < n) {\n          if (template.charCodeAt(i) === 37) {\n            string.push(template.slice(j, i));\n            if ((p = d3_time_formatPads[c = template.charAt(++i)]) != null) c = template.charAt(++i);\n            if (f = d3_time_formats[c]) c = f(date, p == null ? c === \"e\" ? \" \" : \"0\" : p);\n            string.push(c);\n            j = i + 1;\n          }\n        }\n        string.push(template.slice(j, i));\n        return string.join(\"\");\n      }\n      format.parse = function(string) {\n        var d = {\n          y: 1900,\n          m: 0,\n          d: 1,\n          H: 0,\n          M: 0,\n          S: 0,\n          L: 0,\n          Z: null\n        }, i = d3_time_parse(d, template, string, 0);\n        if (i != string.length) return null;\n        if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n        var localZ = d.Z != null && d3_date !== d3_date_utc, date = new (localZ ? d3_date_utc : d3_date)();\n        if (\"j\" in d) date.setFullYear(d.y, 0, d.j); else if (\"W\" in d || \"U\" in d) {\n          if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n          date.setFullYear(d.y, 0, 1);\n          date.setFullYear(d.y, 0, \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (date.getDay() + 5) % 7 : d.w + d.U * 7 - (date.getDay() + 6) % 7);\n        } else date.setFullYear(d.y, d.m, d.d);\n        date.setHours(d.H + (d.Z / 100 | 0), d.M + d.Z % 100, d.S, d.L);\n        return localZ ? date._ : date;\n      };\n      format.toString = function() {\n        return template;\n      };\n      return format;\n    }\n    function d3_time_parse(date, template, string, j) {\n      var c, p, t, i = 0, n = template.length, m = string.length;\n      while (i < n) {\n        if (j >= m) return -1;\n        c = template.charCodeAt(i++);\n        if (c === 37) {\n          t = template.charAt(i++);\n          p = d3_time_parsers[t in d3_time_formatPads ? template.charAt(i++) : t];\n          if (!p || (j = p(date, string, j)) < 0) return -1;\n        } else if (c != string.charCodeAt(j++)) {\n          return -1;\n        }\n      }\n      return j;\n    }\n    d3_time_format.utc = function(template) {\n      var local = d3_time_format(template);\n      function format(date) {\n        try {\n          d3_date = d3_date_utc;\n          var utc = new d3_date();\n          utc._ = date;\n          return local(utc);\n        } finally {\n          d3_date = Date;\n        }\n      }\n      format.parse = function(string) {\n        try {\n          d3_date = d3_date_utc;\n          var date = local.parse(string);\n          return date && date._;\n        } finally {\n          d3_date = Date;\n        }\n      };\n      format.toString = local.toString;\n      return format;\n    };\n    d3_time_format.multi = d3_time_format.utc.multi = d3_time_formatMulti;\n    var d3_time_periodLookup = d3.map(), d3_time_dayRe = d3_time_formatRe(locale_days), d3_time_dayLookup = d3_time_formatLookup(locale_days), d3_time_dayAbbrevRe = d3_time_formatRe(locale_shortDays), d3_time_dayAbbrevLookup = d3_time_formatLookup(locale_shortDays), d3_time_monthRe = d3_time_formatRe(locale_months), d3_time_monthLookup = d3_time_formatLookup(locale_months), d3_time_monthAbbrevRe = d3_time_formatRe(locale_shortMonths), d3_time_monthAbbrevLookup = d3_time_formatLookup(locale_shortMonths);\n    locale_periods.forEach(function(p, i) {\n      d3_time_periodLookup.set(p.toLowerCase(), i);\n    });\n    var d3_time_formats = {\n      a: function(d) {\n        return locale_shortDays[d.getDay()];\n      },\n      A: function(d) {\n        return locale_days[d.getDay()];\n      },\n      b: function(d) {\n        return locale_shortMonths[d.getMonth()];\n      },\n      B: function(d) {\n        return locale_months[d.getMonth()];\n      },\n      c: d3_time_format(locale_dateTime),\n      d: function(d, p) {\n        return d3_time_formatPad(d.getDate(), p, 2);\n      },\n      e: function(d, p) {\n        return d3_time_formatPad(d.getDate(), p, 2);\n      },\n      H: function(d, p) {\n        return d3_time_formatPad(d.getHours(), p, 2);\n      },\n      I: function(d, p) {\n        return d3_time_formatPad(d.getHours() % 12 || 12, p, 2);\n      },\n      j: function(d, p) {\n        return d3_time_formatPad(1 + d3_time.dayOfYear(d), p, 3);\n      },\n      L: function(d, p) {\n        return d3_time_formatPad(d.getMilliseconds(), p, 3);\n      },\n      m: function(d, p) {\n        return d3_time_formatPad(d.getMonth() + 1, p, 2);\n      },\n      M: function(d, p) {\n        return d3_time_formatPad(d.getMinutes(), p, 2);\n      },\n      p: function(d) {\n        return locale_periods[+(d.getHours() >= 12)];\n      },\n      S: function(d, p) {\n        return d3_time_formatPad(d.getSeconds(), p, 2);\n      },\n      U: function(d, p) {\n        return d3_time_formatPad(d3_time.sundayOfYear(d), p, 2);\n      },\n      w: function(d) {\n        return d.getDay();\n      },\n      W: function(d, p) {\n        return d3_time_formatPad(d3_time.mondayOfYear(d), p, 2);\n      },\n      x: d3_time_format(locale_date),\n      X: d3_time_format(locale_time),\n      y: function(d, p) {\n        return d3_time_formatPad(d.getFullYear() % 100, p, 2);\n      },\n      Y: function(d, p) {\n        return d3_time_formatPad(d.getFullYear() % 1e4, p, 4);\n      },\n      Z: d3_time_zone,\n      \"%\": function() {\n        return \"%\";\n      }\n    };\n    var d3_time_parsers = {\n      a: d3_time_parseWeekdayAbbrev,\n      A: d3_time_parseWeekday,\n      b: d3_time_parseMonthAbbrev,\n      B: d3_time_parseMonth,\n      c: d3_time_parseLocaleFull,\n      d: d3_time_parseDay,\n      e: d3_time_parseDay,\n      H: d3_time_parseHour24,\n      I: d3_time_parseHour24,\n      j: d3_time_parseDayOfYear,\n      L: d3_time_parseMilliseconds,\n      m: d3_time_parseMonthNumber,\n      M: d3_time_parseMinutes,\n      p: d3_time_parseAmPm,\n      S: d3_time_parseSeconds,\n      U: d3_time_parseWeekNumberSunday,\n      w: d3_time_parseWeekdayNumber,\n      W: d3_time_parseWeekNumberMonday,\n      x: d3_time_parseLocaleDate,\n      X: d3_time_parseLocaleTime,\n      y: d3_time_parseYear,\n      Y: d3_time_parseFullYear,\n      Z: d3_time_parseZone,\n      \"%\": d3_time_parseLiteralPercent\n    };\n    function d3_time_parseWeekdayAbbrev(date, string, i) {\n      d3_time_dayAbbrevRe.lastIndex = 0;\n      var n = d3_time_dayAbbrevRe.exec(string.slice(i));\n      return n ? (date.w = d3_time_dayAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n    }\n    function d3_time_parseWeekday(date, string, i) {\n      d3_time_dayRe.lastIndex = 0;\n      var n = d3_time_dayRe.exec(string.slice(i));\n      return n ? (date.w = d3_time_dayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n    }\n    function d3_time_parseMonthAbbrev(date, string, i) {\n      d3_time_monthAbbrevRe.lastIndex = 0;\n      var n = d3_time_monthAbbrevRe.exec(string.slice(i));\n      return n ? (date.m = d3_time_monthAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n    }\n    function d3_time_parseMonth(date, string, i) {\n      d3_time_monthRe.lastIndex = 0;\n      var n = d3_time_monthRe.exec(string.slice(i));\n      return n ? (date.m = d3_time_monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n    }\n    function d3_time_parseLocaleFull(date, string, i) {\n      return d3_time_parse(date, d3_time_formats.c.toString(), string, i);\n    }\n    function d3_time_parseLocaleDate(date, string, i) {\n      return d3_time_parse(date, d3_time_formats.x.toString(), string, i);\n    }\n    function d3_time_parseLocaleTime(date, string, i) {\n      return d3_time_parse(date, d3_time_formats.X.toString(), string, i);\n    }\n    function d3_time_parseAmPm(date, string, i) {\n      var n = d3_time_periodLookup.get(string.slice(i, i += 2).toLowerCase());\n      return n == null ? -1 : (date.p = n, i);\n    }\n    return d3_time_format;\n  }\n  var d3_time_formatPads = {\n    \"-\": \"\",\n    _: \" \",\n    \"0\": \"0\"\n  }, d3_time_numberRe = /^\\s*\\d+/, d3_time_percentRe = /^%/;\n  function d3_time_formatPad(value, fill, width) {\n    var sign = value < 0 ? \"-\" : \"\", string = (sign ? -value : value) + \"\", length = string.length;\n    return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n  }\n  function d3_time_formatRe(names) {\n    return new RegExp(\"^(?:\" + names.map(d3.requote).join(\"|\") + \")\", \"i\");\n  }\n  function d3_time_formatLookup(names) {\n    var map = new d3_Map(), i = -1, n = names.length;\n    while (++i < n) map.set(names[i].toLowerCase(), i);\n    return map;\n  }\n  function d3_time_parseWeekdayNumber(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 1));\n    return n ? (date.w = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseWeekNumberSunday(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i));\n    return n ? (date.U = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseWeekNumberMonday(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i));\n    return n ? (date.W = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseFullYear(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 4));\n    return n ? (date.y = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseYear(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n    return n ? (date.y = d3_time_expandYear(+n[0]), i + n[0].length) : -1;\n  }\n  function d3_time_parseZone(date, string, i) {\n    return /^[+-]\\d{4}$/.test(string = string.slice(i, i + 5)) ? (date.Z = -string, \n    i + 5) : -1;\n  }\n  function d3_time_expandYear(d) {\n    return d + (d > 68 ? 1900 : 2e3);\n  }\n  function d3_time_parseMonthNumber(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n    return n ? (date.m = n[0] - 1, i + n[0].length) : -1;\n  }\n  function d3_time_parseDay(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n    return n ? (date.d = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseDayOfYear(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 3));\n    return n ? (date.j = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseHour24(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n    return n ? (date.H = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseMinutes(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n    return n ? (date.M = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseSeconds(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n    return n ? (date.S = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseMilliseconds(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 3));\n    return n ? (date.L = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_zone(d) {\n    var z = d.getTimezoneOffset(), zs = z > 0 ? \"-\" : \"+\", zh = abs(z) / 60 | 0, zm = abs(z) % 60;\n    return zs + d3_time_formatPad(zh, \"0\", 2) + d3_time_formatPad(zm, \"0\", 2);\n  }\n  function d3_time_parseLiteralPercent(date, string, i) {\n    d3_time_percentRe.lastIndex = 0;\n    var n = d3_time_percentRe.exec(string.slice(i, i + 1));\n    return n ? i + n[0].length : -1;\n  }\n  function d3_time_formatMulti(formats) {\n    var n = formats.length, i = -1;\n    while (++i < n) formats[i][0] = this(formats[i][0]);\n    return function(date) {\n      var i = 0, f = formats[i];\n      while (!f[1](date)) f = formats[++i];\n      return f[0](date);\n    };\n  }\n  d3.locale = function(locale) {\n    return {\n      numberFormat: d3_locale_numberFormat(locale),\n      timeFormat: d3_locale_timeFormat(locale)\n    };\n  };\n  var d3_locale_enUS = d3.locale({\n    decimal: \".\",\n    thousands: \",\",\n    grouping: [ 3 ],\n    currency: [ \"$\", \"\" ],\n    dateTime: \"%a %b %e %X %Y\",\n    date: \"%m/%d/%Y\",\n    time: \"%H:%M:%S\",\n    periods: [ \"AM\", \"PM\" ],\n    days: [ \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\" ],\n    shortDays: [ \"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\" ],\n    months: [ \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\" ],\n    shortMonths: [ \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\" ]\n  });\n  d3.format = d3_locale_enUS.numberFormat;\n  d3.geo = {};\n  function d3_adder() {}\n  d3_adder.prototype = {\n    s: 0,\n    t: 0,\n    add: function(y) {\n      d3_adderSum(y, this.t, d3_adderTemp);\n      d3_adderSum(d3_adderTemp.s, this.s, this);\n      if (this.s) this.t += d3_adderTemp.t; else this.s = d3_adderTemp.t;\n    },\n    reset: function() {\n      this.s = this.t = 0;\n    },\n    valueOf: function() {\n      return this.s;\n    }\n  };\n  var d3_adderTemp = new d3_adder();\n  function d3_adderSum(a, b, o) {\n    var x = o.s = a + b, bv = x - a, av = x - bv;\n    o.t = a - av + (b - bv);\n  }\n  d3.geo.stream = function(object, listener) {\n    if (object && d3_geo_streamObjectType.hasOwnProperty(object.type)) {\n      d3_geo_streamObjectType[object.type](object, listener);\n    } else {\n      d3_geo_streamGeometry(object, listener);\n    }\n  };\n  function d3_geo_streamGeometry(geometry, listener) {\n    if (geometry && d3_geo_streamGeometryType.hasOwnProperty(geometry.type)) {\n      d3_geo_streamGeometryType[geometry.type](geometry, listener);\n    }\n  }\n  var d3_geo_streamObjectType = {\n    Feature: function(feature, listener) {\n      d3_geo_streamGeometry(feature.geometry, listener);\n    },\n    FeatureCollection: function(object, listener) {\n      var features = object.features, i = -1, n = features.length;\n      while (++i < n) d3_geo_streamGeometry(features[i].geometry, listener);\n    }\n  };\n  var d3_geo_streamGeometryType = {\n    Sphere: function(object, listener) {\n      listener.sphere();\n    },\n    Point: function(object, listener) {\n      object = object.coordinates;\n      listener.point(object[0], object[1], object[2]);\n    },\n    MultiPoint: function(object, listener) {\n      var coordinates = object.coordinates, i = -1, n = coordinates.length;\n      while (++i < n) object = coordinates[i], listener.point(object[0], object[1], object[2]);\n    },\n    LineString: function(object, listener) {\n      d3_geo_streamLine(object.coordinates, listener, 0);\n    },\n    MultiLineString: function(object, listener) {\n      var coordinates = object.coordinates, i = -1, n = coordinates.length;\n      while (++i < n) d3_geo_streamLine(coordinates[i], listener, 0);\n    },\n    Polygon: function(object, listener) {\n      d3_geo_streamPolygon(object.coordinates, listener);\n    },\n    MultiPolygon: function(object, listener) {\n      var coordinates = object.coordinates, i = -1, n = coordinates.length;\n      while (++i < n) d3_geo_streamPolygon(coordinates[i], listener);\n    },\n    GeometryCollection: function(object, listener) {\n      var geometries = object.geometries, i = -1, n = geometries.length;\n      while (++i < n) d3_geo_streamGeometry(geometries[i], listener);\n    }\n  };\n  function d3_geo_streamLine(coordinates, listener, closed) {\n    var i = -1, n = coordinates.length - closed, coordinate;\n    listener.lineStart();\n    while (++i < n) coordinate = coordinates[i], listener.point(coordinate[0], coordinate[1], coordinate[2]);\n    listener.lineEnd();\n  }\n  function d3_geo_streamPolygon(coordinates, listener) {\n    var i = -1, n = coordinates.length;\n    listener.polygonStart();\n    while (++i < n) d3_geo_streamLine(coordinates[i], listener, 1);\n    listener.polygonEnd();\n  }\n  d3.geo.area = function(object) {\n    d3_geo_areaSum = 0;\n    d3.geo.stream(object, d3_geo_area);\n    return d3_geo_areaSum;\n  };\n  var d3_geo_areaSum, d3_geo_areaRingSum = new d3_adder();\n  var d3_geo_area = {\n    sphere: function() {\n      d3_geo_areaSum += 4 * π;\n    },\n    point: d3_noop,\n    lineStart: d3_noop,\n    lineEnd: d3_noop,\n    polygonStart: function() {\n      d3_geo_areaRingSum.reset();\n      d3_geo_area.lineStart = d3_geo_areaRingStart;\n    },\n    polygonEnd: function() {\n      var area = 2 * d3_geo_areaRingSum;\n      d3_geo_areaSum += area < 0 ? 4 * π + area : area;\n      d3_geo_area.lineStart = d3_geo_area.lineEnd = d3_geo_area.point = d3_noop;\n    }\n  };\n  function d3_geo_areaRingStart() {\n    var λ00, φ00, λ0, cosφ0, sinφ0;\n    d3_geo_area.point = function(λ, φ) {\n      d3_geo_area.point = nextPoint;\n      λ0 = (λ00 = λ) * d3_radians, cosφ0 = Math.cos(φ = (φ00 = φ) * d3_radians / 2 + π / 4), \n      sinφ0 = Math.sin(φ);\n    };\n    function nextPoint(λ, φ) {\n      λ *= d3_radians;\n      φ = φ * d3_radians / 2 + π / 4;\n      var dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, cosφ = Math.cos(φ), sinφ = Math.sin(φ), k = sinφ0 * sinφ, u = cosφ0 * cosφ + k * Math.cos(adλ), v = k * sdλ * Math.sin(adλ);\n      d3_geo_areaRingSum.add(Math.atan2(v, u));\n      λ0 = λ, cosφ0 = cosφ, sinφ0 = sinφ;\n    }\n    d3_geo_area.lineEnd = function() {\n      nextPoint(λ00, φ00);\n    };\n  }\n  function d3_geo_cartesian(spherical) {\n    var λ = spherical[0], φ = spherical[1], cosφ = Math.cos(φ);\n    return [ cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ) ];\n  }\n  function d3_geo_cartesianDot(a, b) {\n    return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n  }\n  function d3_geo_cartesianCross(a, b) {\n    return [ a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0] ];\n  }\n  function d3_geo_cartesianAdd(a, b) {\n    a[0] += b[0];\n    a[1] += b[1];\n    a[2] += b[2];\n  }\n  function d3_geo_cartesianScale(vector, k) {\n    return [ vector[0] * k, vector[1] * k, vector[2] * k ];\n  }\n  function d3_geo_cartesianNormalize(d) {\n    var l = Math.sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n    d[0] /= l;\n    d[1] /= l;\n    d[2] /= l;\n  }\n  function d3_geo_spherical(cartesian) {\n    return [ Math.atan2(cartesian[1], cartesian[0]), d3_asin(cartesian[2]) ];\n  }\n  function d3_geo_sphericalEqual(a, b) {\n    return abs(a[0] - b[0]) < ε && abs(a[1] - b[1]) < ε;\n  }\n  d3.geo.bounds = function() {\n    var λ0, φ0, λ1, φ1, λ_, λ__, φ__, p0, dλSum, ranges, range;\n    var bound = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: function() {\n        bound.point = ringPoint;\n        bound.lineStart = ringStart;\n        bound.lineEnd = ringEnd;\n        dλSum = 0;\n        d3_geo_area.polygonStart();\n      },\n      polygonEnd: function() {\n        d3_geo_area.polygonEnd();\n        bound.point = point;\n        bound.lineStart = lineStart;\n        bound.lineEnd = lineEnd;\n        if (d3_geo_areaRingSum < 0) λ0 = -(λ1 = 180), φ0 = -(φ1 = 90); else if (dλSum > ε) φ1 = 90; else if (dλSum < -ε) φ0 = -90;\n        range[0] = λ0, range[1] = λ1;\n      }\n    };\n    function point(λ, φ) {\n      ranges.push(range = [ λ0 = λ, λ1 = λ ]);\n      if (φ < φ0) φ0 = φ;\n      if (φ > φ1) φ1 = φ;\n    }\n    function linePoint(λ, φ) {\n      var p = d3_geo_cartesian([ λ * d3_radians, φ * d3_radians ]);\n      if (p0) {\n        var normal = d3_geo_cartesianCross(p0, p), equatorial = [ normal[1], -normal[0], 0 ], inflection = d3_geo_cartesianCross(equatorial, normal);\n        d3_geo_cartesianNormalize(inflection);\n        inflection = d3_geo_spherical(inflection);\n        var dλ = λ - λ_, s = dλ > 0 ? 1 : -1, λi = inflection[0] * d3_degrees * s, antimeridian = abs(dλ) > 180;\n        if (antimeridian ^ (s * λ_ < λi && λi < s * λ)) {\n          var φi = inflection[1] * d3_degrees;\n          if (φi > φ1) φ1 = φi;\n        } else if (λi = (λi + 360) % 360 - 180, antimeridian ^ (s * λ_ < λi && λi < s * λ)) {\n          var φi = -inflection[1] * d3_degrees;\n          if (φi < φ0) φ0 = φi;\n        } else {\n          if (φ < φ0) φ0 = φ;\n          if (φ > φ1) φ1 = φ;\n        }\n        if (antimeridian) {\n          if (λ < λ_) {\n            if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;\n          } else {\n            if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;\n          }\n        } else {\n          if (λ1 >= λ0) {\n            if (λ < λ0) λ0 = λ;\n            if (λ > λ1) λ1 = λ;\n          } else {\n            if (λ > λ_) {\n              if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;\n            } else {\n              if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;\n            }\n          }\n        }\n      } else {\n        point(λ, φ);\n      }\n      p0 = p, λ_ = λ;\n    }\n    function lineStart() {\n      bound.point = linePoint;\n    }\n    function lineEnd() {\n      range[0] = λ0, range[1] = λ1;\n      bound.point = point;\n      p0 = null;\n    }\n    function ringPoint(λ, φ) {\n      if (p0) {\n        var dλ = λ - λ_;\n        dλSum += abs(dλ) > 180 ? dλ + (dλ > 0 ? 360 : -360) : dλ;\n      } else λ__ = λ, φ__ = φ;\n      d3_geo_area.point(λ, φ);\n      linePoint(λ, φ);\n    }\n    function ringStart() {\n      d3_geo_area.lineStart();\n    }\n    function ringEnd() {\n      ringPoint(λ__, φ__);\n      d3_geo_area.lineEnd();\n      if (abs(dλSum) > ε) λ0 = -(λ1 = 180);\n      range[0] = λ0, range[1] = λ1;\n      p0 = null;\n    }\n    function angle(λ0, λ1) {\n      return (λ1 -= λ0) < 0 ? λ1 + 360 : λ1;\n    }\n    function compareRanges(a, b) {\n      return a[0] - b[0];\n    }\n    function withinRange(x, range) {\n      return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n    }\n    return function(feature) {\n      φ1 = λ1 = -(λ0 = φ0 = Infinity);\n      ranges = [];\n      d3.geo.stream(feature, bound);\n      var n = ranges.length;\n      if (n) {\n        ranges.sort(compareRanges);\n        for (var i = 1, a = ranges[0], b, merged = [ a ]; i < n; ++i) {\n          b = ranges[i];\n          if (withinRange(b[0], a) || withinRange(b[1], a)) {\n            if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n            if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n          } else {\n            merged.push(a = b);\n          }\n        }\n        var best = -Infinity, dλ;\n        for (var n = merged.length - 1, i = 0, a = merged[n], b; i <= n; a = b, ++i) {\n          b = merged[i];\n          if ((dλ = angle(a[1], b[0])) > best) best = dλ, λ0 = b[0], λ1 = a[1];\n        }\n      }\n      ranges = range = null;\n      return λ0 === Infinity || φ0 === Infinity ? [ [ NaN, NaN ], [ NaN, NaN ] ] : [ [ λ0, φ0 ], [ λ1, φ1 ] ];\n    };\n  }();\n  d3.geo.centroid = function(object) {\n    d3_geo_centroidW0 = d3_geo_centroidW1 = d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;\n    d3.geo.stream(object, d3_geo_centroid);\n    var x = d3_geo_centroidX2, y = d3_geo_centroidY2, z = d3_geo_centroidZ2, m = x * x + y * y + z * z;\n    if (m < ε2) {\n      x = d3_geo_centroidX1, y = d3_geo_centroidY1, z = d3_geo_centroidZ1;\n      if (d3_geo_centroidW1 < ε) x = d3_geo_centroidX0, y = d3_geo_centroidY0, z = d3_geo_centroidZ0;\n      m = x * x + y * y + z * z;\n      if (m < ε2) return [ NaN, NaN ];\n    }\n    return [ Math.atan2(y, x) * d3_degrees, d3_asin(z / Math.sqrt(m)) * d3_degrees ];\n  };\n  var d3_geo_centroidW0, d3_geo_centroidW1, d3_geo_centroidX0, d3_geo_centroidY0, d3_geo_centroidZ0, d3_geo_centroidX1, d3_geo_centroidY1, d3_geo_centroidZ1, d3_geo_centroidX2, d3_geo_centroidY2, d3_geo_centroidZ2;\n  var d3_geo_centroid = {\n    sphere: d3_noop,\n    point: d3_geo_centroidPoint,\n    lineStart: d3_geo_centroidLineStart,\n    lineEnd: d3_geo_centroidLineEnd,\n    polygonStart: function() {\n      d3_geo_centroid.lineStart = d3_geo_centroidRingStart;\n    },\n    polygonEnd: function() {\n      d3_geo_centroid.lineStart = d3_geo_centroidLineStart;\n    }\n  };\n  function d3_geo_centroidPoint(λ, φ) {\n    λ *= d3_radians;\n    var cosφ = Math.cos(φ *= d3_radians);\n    d3_geo_centroidPointXYZ(cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ));\n  }\n  function d3_geo_centroidPointXYZ(x, y, z) {\n    ++d3_geo_centroidW0;\n    d3_geo_centroidX0 += (x - d3_geo_centroidX0) / d3_geo_centroidW0;\n    d3_geo_centroidY0 += (y - d3_geo_centroidY0) / d3_geo_centroidW0;\n    d3_geo_centroidZ0 += (z - d3_geo_centroidZ0) / d3_geo_centroidW0;\n  }\n  function d3_geo_centroidLineStart() {\n    var x0, y0, z0;\n    d3_geo_centroid.point = function(λ, φ) {\n      λ *= d3_radians;\n      var cosφ = Math.cos(φ *= d3_radians);\n      x0 = cosφ * Math.cos(λ);\n      y0 = cosφ * Math.sin(λ);\n      z0 = Math.sin(φ);\n      d3_geo_centroid.point = nextPoint;\n      d3_geo_centroidPointXYZ(x0, y0, z0);\n    };\n    function nextPoint(λ, φ) {\n      λ *= d3_radians;\n      var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), w = Math.atan2(Math.sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n      d3_geo_centroidW1 += w;\n      d3_geo_centroidX1 += w * (x0 + (x0 = x));\n      d3_geo_centroidY1 += w * (y0 + (y0 = y));\n      d3_geo_centroidZ1 += w * (z0 + (z0 = z));\n      d3_geo_centroidPointXYZ(x0, y0, z0);\n    }\n  }\n  function d3_geo_centroidLineEnd() {\n    d3_geo_centroid.point = d3_geo_centroidPoint;\n  }\n  function d3_geo_centroidRingStart() {\n    var λ00, φ00, x0, y0, z0;\n    d3_geo_centroid.point = function(λ, φ) {\n      λ00 = λ, φ00 = φ;\n      d3_geo_centroid.point = nextPoint;\n      λ *= d3_radians;\n      var cosφ = Math.cos(φ *= d3_radians);\n      x0 = cosφ * Math.cos(λ);\n      y0 = cosφ * Math.sin(λ);\n      z0 = Math.sin(φ);\n      d3_geo_centroidPointXYZ(x0, y0, z0);\n    };\n    d3_geo_centroid.lineEnd = function() {\n      nextPoint(λ00, φ00);\n      d3_geo_centroid.lineEnd = d3_geo_centroidLineEnd;\n      d3_geo_centroid.point = d3_geo_centroidPoint;\n    };\n    function nextPoint(λ, φ) {\n      λ *= d3_radians;\n      var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), cx = y0 * z - z0 * y, cy = z0 * x - x0 * z, cz = x0 * y - y0 * x, m = Math.sqrt(cx * cx + cy * cy + cz * cz), u = x0 * x + y0 * y + z0 * z, v = m && -d3_acos(u) / m, w = Math.atan2(m, u);\n      d3_geo_centroidX2 += v * cx;\n      d3_geo_centroidY2 += v * cy;\n      d3_geo_centroidZ2 += v * cz;\n      d3_geo_centroidW1 += w;\n      d3_geo_centroidX1 += w * (x0 + (x0 = x));\n      d3_geo_centroidY1 += w * (y0 + (y0 = y));\n      d3_geo_centroidZ1 += w * (z0 + (z0 = z));\n      d3_geo_centroidPointXYZ(x0, y0, z0);\n    }\n  }\n  function d3_geo_compose(a, b) {\n    function compose(x, y) {\n      return x = a(x, y), b(x[0], x[1]);\n    }\n    if (a.invert && b.invert) compose.invert = function(x, y) {\n      return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n    };\n    return compose;\n  }\n  function d3_true() {\n    return true;\n  }\n  function d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener) {\n    var subject = [], clip = [];\n    segments.forEach(function(segment) {\n      if ((n = segment.length - 1) <= 0) return;\n      var n, p0 = segment[0], p1 = segment[n];\n      if (d3_geo_sphericalEqual(p0, p1)) {\n        listener.lineStart();\n        for (var i = 0; i < n; ++i) listener.point((p0 = segment[i])[0], p0[1]);\n        listener.lineEnd();\n        return;\n      }\n      var a = new d3_geo_clipPolygonIntersection(p0, segment, null, true), b = new d3_geo_clipPolygonIntersection(p0, null, a, false);\n      a.o = b;\n      subject.push(a);\n      clip.push(b);\n      a = new d3_geo_clipPolygonIntersection(p1, segment, null, false);\n      b = new d3_geo_clipPolygonIntersection(p1, null, a, true);\n      a.o = b;\n      subject.push(a);\n      clip.push(b);\n    });\n    clip.sort(compare);\n    d3_geo_clipPolygonLinkCircular(subject);\n    d3_geo_clipPolygonLinkCircular(clip);\n    if (!subject.length) return;\n    for (var i = 0, entry = clipStartInside, n = clip.length; i < n; ++i) {\n      clip[i].e = entry = !entry;\n    }\n    var start = subject[0], points, point;\n    while (1) {\n      var current = start, isSubject = true;\n      while (current.v) if ((current = current.n) === start) return;\n      points = current.z;\n      listener.lineStart();\n      do {\n        current.v = current.o.v = true;\n        if (current.e) {\n          if (isSubject) {\n            for (var i = 0, n = points.length; i < n; ++i) listener.point((point = points[i])[0], point[1]);\n          } else {\n            interpolate(current.x, current.n.x, 1, listener);\n          }\n          current = current.n;\n        } else {\n          if (isSubject) {\n            points = current.p.z;\n            for (var i = points.length - 1; i >= 0; --i) listener.point((point = points[i])[0], point[1]);\n          } else {\n            interpolate(current.x, current.p.x, -1, listener);\n          }\n          current = current.p;\n        }\n        current = current.o;\n        points = current.z;\n        isSubject = !isSubject;\n      } while (!current.v);\n      listener.lineEnd();\n    }\n  }\n  function d3_geo_clipPolygonLinkCircular(array) {\n    if (!(n = array.length)) return;\n    var n, i = 0, a = array[0], b;\n    while (++i < n) {\n      a.n = b = array[i];\n      b.p = a;\n      a = b;\n    }\n    a.n = b = array[0];\n    b.p = a;\n  }\n  function d3_geo_clipPolygonIntersection(point, points, other, entry) {\n    this.x = point;\n    this.z = points;\n    this.o = other;\n    this.e = entry;\n    this.v = false;\n    this.n = this.p = null;\n  }\n  function d3_geo_clip(pointVisible, clipLine, interpolate, clipStart) {\n    return function(rotate, listener) {\n      var line = clipLine(listener), rotatedClipStart = rotate.invert(clipStart[0], clipStart[1]);\n      var clip = {\n        point: point,\n        lineStart: lineStart,\n        lineEnd: lineEnd,\n        polygonStart: function() {\n          clip.point = pointRing;\n          clip.lineStart = ringStart;\n          clip.lineEnd = ringEnd;\n          segments = [];\n          polygon = [];\n        },\n        polygonEnd: function() {\n          clip.point = point;\n          clip.lineStart = lineStart;\n          clip.lineEnd = lineEnd;\n          segments = d3.merge(segments);\n          var clipStartInside = d3_geo_pointInPolygon(rotatedClipStart, polygon);\n          if (segments.length) {\n            if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n            d3_geo_clipPolygon(segments, d3_geo_clipSort, clipStartInside, interpolate, listener);\n          } else if (clipStartInside) {\n            if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n            listener.lineStart();\n            interpolate(null, null, 1, listener);\n            listener.lineEnd();\n          }\n          if (polygonStarted) listener.polygonEnd(), polygonStarted = false;\n          segments = polygon = null;\n        },\n        sphere: function() {\n          listener.polygonStart();\n          listener.lineStart();\n          interpolate(null, null, 1, listener);\n          listener.lineEnd();\n          listener.polygonEnd();\n        }\n      };\n      function point(λ, φ) {\n        var point = rotate(λ, φ);\n        if (pointVisible(λ = point[0], φ = point[1])) listener.point(λ, φ);\n      }\n      function pointLine(λ, φ) {\n        var point = rotate(λ, φ);\n        line.point(point[0], point[1]);\n      }\n      function lineStart() {\n        clip.point = pointLine;\n        line.lineStart();\n      }\n      function lineEnd() {\n        clip.point = point;\n        line.lineEnd();\n      }\n      var segments;\n      var buffer = d3_geo_clipBufferListener(), ringListener = clipLine(buffer), polygonStarted = false, polygon, ring;\n      function pointRing(λ, φ) {\n        ring.push([ λ, φ ]);\n        var point = rotate(λ, φ);\n        ringListener.point(point[0], point[1]);\n      }\n      function ringStart() {\n        ringListener.lineStart();\n        ring = [];\n      }\n      function ringEnd() {\n        pointRing(ring[0][0], ring[0][1]);\n        ringListener.lineEnd();\n        var clean = ringListener.clean(), ringSegments = buffer.buffer(), segment, n = ringSegments.length;\n        ring.pop();\n        polygon.push(ring);\n        ring = null;\n        if (!n) return;\n        if (clean & 1) {\n          segment = ringSegments[0];\n          var n = segment.length - 1, i = -1, point;\n          if (n > 0) {\n            if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n            listener.lineStart();\n            while (++i < n) listener.point((point = segment[i])[0], point[1]);\n            listener.lineEnd();\n          }\n          return;\n        }\n        if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n        segments.push(ringSegments.filter(d3_geo_clipSegmentLength1));\n      }\n      return clip;\n    };\n  }\n  function d3_geo_clipSegmentLength1(segment) {\n    return segment.length > 1;\n  }\n  function d3_geo_clipBufferListener() {\n    var lines = [], line;\n    return {\n      lineStart: function() {\n        lines.push(line = []);\n      },\n      point: function(λ, φ) {\n        line.push([ λ, φ ]);\n      },\n      lineEnd: d3_noop,\n      buffer: function() {\n        var buffer = lines;\n        lines = [];\n        line = null;\n        return buffer;\n      },\n      rejoin: function() {\n        if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n      }\n    };\n  }\n  function d3_geo_clipSort(a, b) {\n    return ((a = a.x)[0] < 0 ? a[1] - halfπ - ε : halfπ - a[1]) - ((b = b.x)[0] < 0 ? b[1] - halfπ - ε : halfπ - b[1]);\n  }\n  var d3_geo_clipAntimeridian = d3_geo_clip(d3_true, d3_geo_clipAntimeridianLine, d3_geo_clipAntimeridianInterpolate, [ -π, -π / 2 ]);\n  function d3_geo_clipAntimeridianLine(listener) {\n    var λ0 = NaN, φ0 = NaN, sλ0 = NaN, clean;\n    return {\n      lineStart: function() {\n        listener.lineStart();\n        clean = 1;\n      },\n      point: function(λ1, φ1) {\n        var sλ1 = λ1 > 0 ? π : -π, dλ = abs(λ1 - λ0);\n        if (abs(dλ - π) < ε) {\n          listener.point(λ0, φ0 = (φ0 + φ1) / 2 > 0 ? halfπ : -halfπ);\n          listener.point(sλ0, φ0);\n          listener.lineEnd();\n          listener.lineStart();\n          listener.point(sλ1, φ0);\n          listener.point(λ1, φ0);\n          clean = 0;\n        } else if (sλ0 !== sλ1 && dλ >= π) {\n          if (abs(λ0 - sλ0) < ε) λ0 -= sλ0 * ε;\n          if (abs(λ1 - sλ1) < ε) λ1 -= sλ1 * ε;\n          φ0 = d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1);\n          listener.point(sλ0, φ0);\n          listener.lineEnd();\n          listener.lineStart();\n          listener.point(sλ1, φ0);\n          clean = 0;\n        }\n        listener.point(λ0 = λ1, φ0 = φ1);\n        sλ0 = sλ1;\n      },\n      lineEnd: function() {\n        listener.lineEnd();\n        λ0 = φ0 = NaN;\n      },\n      clean: function() {\n        return 2 - clean;\n      }\n    };\n  }\n  function d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1) {\n    var cosφ0, cosφ1, sinλ0_λ1 = Math.sin(λ0 - λ1);\n    return abs(sinλ0_λ1) > ε ? Math.atan((Math.sin(φ0) * (cosφ1 = Math.cos(φ1)) * Math.sin(λ1) - Math.sin(φ1) * (cosφ0 = Math.cos(φ0)) * Math.sin(λ0)) / (cosφ0 * cosφ1 * sinλ0_λ1)) : (φ0 + φ1) / 2;\n  }\n  function d3_geo_clipAntimeridianInterpolate(from, to, direction, listener) {\n    var φ;\n    if (from == null) {\n      φ = direction * halfπ;\n      listener.point(-π, φ);\n      listener.point(0, φ);\n      listener.point(π, φ);\n      listener.point(π, 0);\n      listener.point(π, -φ);\n      listener.point(0, -φ);\n      listener.point(-π, -φ);\n      listener.point(-π, 0);\n      listener.point(-π, φ);\n    } else if (abs(from[0] - to[0]) > ε) {\n      var s = from[0] < to[0] ? π : -π;\n      φ = direction * s / 2;\n      listener.point(-s, φ);\n      listener.point(0, φ);\n      listener.point(s, φ);\n    } else {\n      listener.point(to[0], to[1]);\n    }\n  }\n  function d3_geo_pointInPolygon(point, polygon) {\n    var meridian = point[0], parallel = point[1], meridianNormal = [ Math.sin(meridian), -Math.cos(meridian), 0 ], polarAngle = 0, winding = 0;\n    d3_geo_areaRingSum.reset();\n    for (var i = 0, n = polygon.length; i < n; ++i) {\n      var ring = polygon[i], m = ring.length;\n      if (!m) continue;\n      var point0 = ring[0], λ0 = point0[0], φ0 = point0[1] / 2 + π / 4, sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), j = 1;\n      while (true) {\n        if (j === m) j = 0;\n        point = ring[j];\n        var λ = point[0], φ = point[1] / 2 + π / 4, sinφ = Math.sin(φ), cosφ = Math.cos(φ), dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, antimeridian = adλ > π, k = sinφ0 * sinφ;\n        d3_geo_areaRingSum.add(Math.atan2(k * sdλ * Math.sin(adλ), cosφ0 * cosφ + k * Math.cos(adλ)));\n        polarAngle += antimeridian ? dλ + sdλ * τ : dλ;\n        if (antimeridian ^ λ0 >= meridian ^ λ >= meridian) {\n          var arc = d3_geo_cartesianCross(d3_geo_cartesian(point0), d3_geo_cartesian(point));\n          d3_geo_cartesianNormalize(arc);\n          var intersection = d3_geo_cartesianCross(meridianNormal, arc);\n          d3_geo_cartesianNormalize(intersection);\n          var φarc = (antimeridian ^ dλ >= 0 ? -1 : 1) * d3_asin(intersection[2]);\n          if (parallel > φarc || parallel === φarc && (arc[0] || arc[1])) {\n            winding += antimeridian ^ dλ >= 0 ? 1 : -1;\n          }\n        }\n        if (!j++) break;\n        λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ, point0 = point;\n      }\n    }\n    return (polarAngle < -ε || polarAngle < ε && d3_geo_areaRingSum < -ε) ^ winding & 1;\n  }\n  function d3_geo_clipCircle(radius) {\n    var cr = Math.cos(radius), smallRadius = cr > 0, notHemisphere = abs(cr) > ε, interpolate = d3_geo_circleInterpolate(radius, 6 * d3_radians);\n    return d3_geo_clip(visible, clipLine, interpolate, smallRadius ? [ 0, -radius ] : [ -π, radius - π ]);\n    function visible(λ, φ) {\n      return Math.cos(λ) * Math.cos(φ) > cr;\n    }\n    function clipLine(listener) {\n      var point0, c0, v0, v00, clean;\n      return {\n        lineStart: function() {\n          v00 = v0 = false;\n          clean = 1;\n        },\n        point: function(λ, φ) {\n          var point1 = [ λ, φ ], point2, v = visible(λ, φ), c = smallRadius ? v ? 0 : code(λ, φ) : v ? code(λ + (λ < 0 ? π : -π), φ) : 0;\n          if (!point0 && (v00 = v0 = v)) listener.lineStart();\n          if (v !== v0) {\n            point2 = intersect(point0, point1);\n            if (d3_geo_sphericalEqual(point0, point2) || d3_geo_sphericalEqual(point1, point2)) {\n              point1[0] += ε;\n              point1[1] += ε;\n              v = visible(point1[0], point1[1]);\n            }\n          }\n          if (v !== v0) {\n            clean = 0;\n            if (v) {\n              listener.lineStart();\n              point2 = intersect(point1, point0);\n              listener.point(point2[0], point2[1]);\n            } else {\n              point2 = intersect(point0, point1);\n              listener.point(point2[0], point2[1]);\n              listener.lineEnd();\n            }\n            point0 = point2;\n          } else if (notHemisphere && point0 && smallRadius ^ v) {\n            var t;\n            if (!(c & c0) && (t = intersect(point1, point0, true))) {\n              clean = 0;\n              if (smallRadius) {\n                listener.lineStart();\n                listener.point(t[0][0], t[0][1]);\n                listener.point(t[1][0], t[1][1]);\n                listener.lineEnd();\n              } else {\n                listener.point(t[1][0], t[1][1]);\n                listener.lineEnd();\n                listener.lineStart();\n                listener.point(t[0][0], t[0][1]);\n              }\n            }\n          }\n          if (v && (!point0 || !d3_geo_sphericalEqual(point0, point1))) {\n            listener.point(point1[0], point1[1]);\n          }\n          point0 = point1, v0 = v, c0 = c;\n        },\n        lineEnd: function() {\n          if (v0) listener.lineEnd();\n          point0 = null;\n        },\n        clean: function() {\n          return clean | (v00 && v0) << 1;\n        }\n      };\n    }\n    function intersect(a, b, two) {\n      var pa = d3_geo_cartesian(a), pb = d3_geo_cartesian(b);\n      var n1 = [ 1, 0, 0 ], n2 = d3_geo_cartesianCross(pa, pb), n2n2 = d3_geo_cartesianDot(n2, n2), n1n2 = n2[0], determinant = n2n2 - n1n2 * n1n2;\n      if (!determinant) return !two && a;\n      var c1 = cr * n2n2 / determinant, c2 = -cr * n1n2 / determinant, n1xn2 = d3_geo_cartesianCross(n1, n2), A = d3_geo_cartesianScale(n1, c1), B = d3_geo_cartesianScale(n2, c2);\n      d3_geo_cartesianAdd(A, B);\n      var u = n1xn2, w = d3_geo_cartesianDot(A, u), uu = d3_geo_cartesianDot(u, u), t2 = w * w - uu * (d3_geo_cartesianDot(A, A) - 1);\n      if (t2 < 0) return;\n      var t = Math.sqrt(t2), q = d3_geo_cartesianScale(u, (-w - t) / uu);\n      d3_geo_cartesianAdd(q, A);\n      q = d3_geo_spherical(q);\n      if (!two) return q;\n      var λ0 = a[0], λ1 = b[0], φ0 = a[1], φ1 = b[1], z;\n      if (λ1 < λ0) z = λ0, λ0 = λ1, λ1 = z;\n      var δλ = λ1 - λ0, polar = abs(δλ - π) < ε, meridian = polar || δλ < ε;\n      if (!polar && φ1 < φ0) z = φ0, φ0 = φ1, φ1 = z;\n      if (meridian ? polar ? φ0 + φ1 > 0 ^ q[1] < (abs(q[0] - λ0) < ε ? φ0 : φ1) : φ0 <= q[1] && q[1] <= φ1 : δλ > π ^ (λ0 <= q[0] && q[0] <= λ1)) {\n        var q1 = d3_geo_cartesianScale(u, (-w + t) / uu);\n        d3_geo_cartesianAdd(q1, A);\n        return [ q, d3_geo_spherical(q1) ];\n      }\n    }\n    function code(λ, φ) {\n      var r = smallRadius ? radius : π - radius, code = 0;\n      if (λ < -r) code |= 1; else if (λ > r) code |= 2;\n      if (φ < -r) code |= 4; else if (φ > r) code |= 8;\n      return code;\n    }\n  }\n  function d3_geom_clipLine(x0, y0, x1, y1) {\n    return function(line) {\n      var a = line.a, b = line.b, ax = a.x, ay = a.y, bx = b.x, by = b.y, t0 = 0, t1 = 1, dx = bx - ax, dy = by - ay, r;\n      r = x0 - ax;\n      if (!dx && r > 0) return;\n      r /= dx;\n      if (dx < 0) {\n        if (r < t0) return;\n        if (r < t1) t1 = r;\n      } else if (dx > 0) {\n        if (r > t1) return;\n        if (r > t0) t0 = r;\n      }\n      r = x1 - ax;\n      if (!dx && r < 0) return;\n      r /= dx;\n      if (dx < 0) {\n        if (r > t1) return;\n        if (r > t0) t0 = r;\n      } else if (dx > 0) {\n        if (r < t0) return;\n        if (r < t1) t1 = r;\n      }\n      r = y0 - ay;\n      if (!dy && r > 0) return;\n      r /= dy;\n      if (dy < 0) {\n        if (r < t0) return;\n        if (r < t1) t1 = r;\n      } else if (dy > 0) {\n        if (r > t1) return;\n        if (r > t0) t0 = r;\n      }\n      r = y1 - ay;\n      if (!dy && r < 0) return;\n      r /= dy;\n      if (dy < 0) {\n        if (r > t1) return;\n        if (r > t0) t0 = r;\n      } else if (dy > 0) {\n        if (r < t0) return;\n        if (r < t1) t1 = r;\n      }\n      if (t0 > 0) line.a = {\n        x: ax + t0 * dx,\n        y: ay + t0 * dy\n      };\n      if (t1 < 1) line.b = {\n        x: ax + t1 * dx,\n        y: ay + t1 * dy\n      };\n      return line;\n    };\n  }\n  var d3_geo_clipExtentMAX = 1e9;\n  d3.geo.clipExtent = function() {\n    var x0, y0, x1, y1, stream, clip, clipExtent = {\n      stream: function(output) {\n        if (stream) stream.valid = false;\n        stream = clip(output);\n        stream.valid = true;\n        return stream;\n      },\n      extent: function(_) {\n        if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];\n        clip = d3_geo_clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]);\n        if (stream) stream.valid = false, stream = null;\n        return clipExtent;\n      }\n    };\n    return clipExtent.extent([ [ 0, 0 ], [ 960, 500 ] ]);\n  };\n  function d3_geo_clipExtent(x0, y0, x1, y1) {\n    return function(listener) {\n      var listener_ = listener, bufferListener = d3_geo_clipBufferListener(), clipLine = d3_geom_clipLine(x0, y0, x1, y1), segments, polygon, ring;\n      var clip = {\n        point: point,\n        lineStart: lineStart,\n        lineEnd: lineEnd,\n        polygonStart: function() {\n          listener = bufferListener;\n          segments = [];\n          polygon = [];\n          clean = true;\n        },\n        polygonEnd: function() {\n          listener = listener_;\n          segments = d3.merge(segments);\n          var clipStartInside = insidePolygon([ x0, y1 ]), inside = clean && clipStartInside, visible = segments.length;\n          if (inside || visible) {\n            listener.polygonStart();\n            if (inside) {\n              listener.lineStart();\n              interpolate(null, null, 1, listener);\n              listener.lineEnd();\n            }\n            if (visible) {\n              d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener);\n            }\n            listener.polygonEnd();\n          }\n          segments = polygon = ring = null;\n        }\n      };\n      function insidePolygon(p) {\n        var wn = 0, n = polygon.length, y = p[1];\n        for (var i = 0; i < n; ++i) {\n          for (var j = 1, v = polygon[i], m = v.length, a = v[0], b; j < m; ++j) {\n            b = v[j];\n            if (a[1] <= y) {\n              if (b[1] > y && d3_cross2d(a, b, p) > 0) ++wn;\n            } else {\n              if (b[1] <= y && d3_cross2d(a, b, p) < 0) --wn;\n            }\n            a = b;\n          }\n        }\n        return wn !== 0;\n      }\n      function interpolate(from, to, direction, listener) {\n        var a = 0, a1 = 0;\n        if (from == null || (a = corner(from, direction)) !== (a1 = corner(to, direction)) || comparePoints(from, to) < 0 ^ direction > 0) {\n          do {\n            listener.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n          } while ((a = (a + direction + 4) % 4) !== a1);\n        } else {\n          listener.point(to[0], to[1]);\n        }\n      }\n      function pointVisible(x, y) {\n        return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n      }\n      function point(x, y) {\n        if (pointVisible(x, y)) listener.point(x, y);\n      }\n      var x__, y__, v__, x_, y_, v_, first, clean;\n      function lineStart() {\n        clip.point = linePoint;\n        if (polygon) polygon.push(ring = []);\n        first = true;\n        v_ = false;\n        x_ = y_ = NaN;\n      }\n      function lineEnd() {\n        if (segments) {\n          linePoint(x__, y__);\n          if (v__ && v_) bufferListener.rejoin();\n          segments.push(bufferListener.buffer());\n        }\n        clip.point = point;\n        if (v_) listener.lineEnd();\n      }\n      function linePoint(x, y) {\n        x = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, x));\n        y = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, y));\n        var v = pointVisible(x, y);\n        if (polygon) ring.push([ x, y ]);\n        if (first) {\n          x__ = x, y__ = y, v__ = v;\n          first = false;\n          if (v) {\n            listener.lineStart();\n            listener.point(x, y);\n          }\n        } else {\n          if (v && v_) listener.point(x, y); else {\n            var l = {\n              a: {\n                x: x_,\n                y: y_\n              },\n              b: {\n                x: x,\n                y: y\n              }\n            };\n            if (clipLine(l)) {\n              if (!v_) {\n                listener.lineStart();\n                listener.point(l.a.x, l.a.y);\n              }\n              listener.point(l.b.x, l.b.y);\n              if (!v) listener.lineEnd();\n              clean = false;\n            } else if (v) {\n              listener.lineStart();\n              listener.point(x, y);\n              clean = false;\n            }\n          }\n        }\n        x_ = x, y_ = y, v_ = v;\n      }\n      return clip;\n    };\n    function corner(p, direction) {\n      return abs(p[0] - x0) < ε ? direction > 0 ? 0 : 3 : abs(p[0] - x1) < ε ? direction > 0 ? 2 : 1 : abs(p[1] - y0) < ε ? direction > 0 ? 1 : 0 : direction > 0 ? 3 : 2;\n    }\n    function compare(a, b) {\n      return comparePoints(a.x, b.x);\n    }\n    function comparePoints(a, b) {\n      var ca = corner(a, 1), cb = corner(b, 1);\n      return ca !== cb ? ca - cb : ca === 0 ? b[1] - a[1] : ca === 1 ? a[0] - b[0] : ca === 2 ? a[1] - b[1] : b[0] - a[0];\n    }\n  }\n  function d3_geo_conic(projectAt) {\n    var φ0 = 0, φ1 = π / 3, m = d3_geo_projectionMutator(projectAt), p = m(φ0, φ1);\n    p.parallels = function(_) {\n      if (!arguments.length) return [ φ0 / π * 180, φ1 / π * 180 ];\n      return m(φ0 = _[0] * π / 180, φ1 = _[1] * π / 180);\n    };\n    return p;\n  }\n  function d3_geo_conicEqualArea(φ0, φ1) {\n    var sinφ0 = Math.sin(φ0), n = (sinφ0 + Math.sin(φ1)) / 2, C = 1 + sinφ0 * (2 * n - sinφ0), ρ0 = Math.sqrt(C) / n;\n    function forward(λ, φ) {\n      var ρ = Math.sqrt(C - 2 * n * Math.sin(φ)) / n;\n      return [ ρ * Math.sin(λ *= n), ρ0 - ρ * Math.cos(λ) ];\n    }\n    forward.invert = function(x, y) {\n      var ρ0_y = ρ0 - y;\n      return [ Math.atan2(x, ρ0_y) / n, d3_asin((C - (x * x + ρ0_y * ρ0_y) * n * n) / (2 * n)) ];\n    };\n    return forward;\n  }\n  (d3.geo.conicEqualArea = function() {\n    return d3_geo_conic(d3_geo_conicEqualArea);\n  }).raw = d3_geo_conicEqualArea;\n  d3.geo.albers = function() {\n    return d3.geo.conicEqualArea().rotate([ 96, 0 ]).center([ -.6, 38.7 ]).parallels([ 29.5, 45.5 ]).scale(1070);\n  };\n  d3.geo.albersUsa = function() {\n    var lower48 = d3.geo.albers();\n    var alaska = d3.geo.conicEqualArea().rotate([ 154, 0 ]).center([ -2, 58.5 ]).parallels([ 55, 65 ]);\n    var hawaii = d3.geo.conicEqualArea().rotate([ 157, 0 ]).center([ -3, 19.9 ]).parallels([ 8, 18 ]);\n    var point, pointStream = {\n      point: function(x, y) {\n        point = [ x, y ];\n      }\n    }, lower48Point, alaskaPoint, hawaiiPoint;\n    function albersUsa(coordinates) {\n      var x = coordinates[0], y = coordinates[1];\n      point = null;\n      (lower48Point(x, y), point) || (alaskaPoint(x, y), point) || hawaiiPoint(x, y);\n      return point;\n    }\n    albersUsa.invert = function(coordinates) {\n      var k = lower48.scale(), t = lower48.translate(), x = (coordinates[0] - t[0]) / k, y = (coordinates[1] - t[1]) / k;\n      return (y >= .12 && y < .234 && x >= -.425 && x < -.214 ? alaska : y >= .166 && y < .234 && x >= -.214 && x < -.115 ? hawaii : lower48).invert(coordinates);\n    };\n    albersUsa.stream = function(stream) {\n      var lower48Stream = lower48.stream(stream), alaskaStream = alaska.stream(stream), hawaiiStream = hawaii.stream(stream);\n      return {\n        point: function(x, y) {\n          lower48Stream.point(x, y);\n          alaskaStream.point(x, y);\n          hawaiiStream.point(x, y);\n        },\n        sphere: function() {\n          lower48Stream.sphere();\n          alaskaStream.sphere();\n          hawaiiStream.sphere();\n        },\n        lineStart: function() {\n          lower48Stream.lineStart();\n          alaskaStream.lineStart();\n          hawaiiStream.lineStart();\n        },\n        lineEnd: function() {\n          lower48Stream.lineEnd();\n          alaskaStream.lineEnd();\n          hawaiiStream.lineEnd();\n        },\n        polygonStart: function() {\n          lower48Stream.polygonStart();\n          alaskaStream.polygonStart();\n          hawaiiStream.polygonStart();\n        },\n        polygonEnd: function() {\n          lower48Stream.polygonEnd();\n          alaskaStream.polygonEnd();\n          hawaiiStream.polygonEnd();\n        }\n      };\n    };\n    albersUsa.precision = function(_) {\n      if (!arguments.length) return lower48.precision();\n      lower48.precision(_);\n      alaska.precision(_);\n      hawaii.precision(_);\n      return albersUsa;\n    };\n    albersUsa.scale = function(_) {\n      if (!arguments.length) return lower48.scale();\n      lower48.scale(_);\n      alaska.scale(_ * .35);\n      hawaii.scale(_);\n      return albersUsa.translate(lower48.translate());\n    };\n    albersUsa.translate = function(_) {\n      if (!arguments.length) return lower48.translate();\n      var k = lower48.scale(), x = +_[0], y = +_[1];\n      lower48Point = lower48.translate(_).clipExtent([ [ x - .455 * k, y - .238 * k ], [ x + .455 * k, y + .238 * k ] ]).stream(pointStream).point;\n      alaskaPoint = alaska.translate([ x - .307 * k, y + .201 * k ]).clipExtent([ [ x - .425 * k + ε, y + .12 * k + ε ], [ x - .214 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point;\n      hawaiiPoint = hawaii.translate([ x - .205 * k, y + .212 * k ]).clipExtent([ [ x - .214 * k + ε, y + .166 * k + ε ], [ x - .115 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point;\n      return albersUsa;\n    };\n    return albersUsa.scale(1070);\n  };\n  var d3_geo_pathAreaSum, d3_geo_pathAreaPolygon, d3_geo_pathArea = {\n    point: d3_noop,\n    lineStart: d3_noop,\n    lineEnd: d3_noop,\n    polygonStart: function() {\n      d3_geo_pathAreaPolygon = 0;\n      d3_geo_pathArea.lineStart = d3_geo_pathAreaRingStart;\n    },\n    polygonEnd: function() {\n      d3_geo_pathArea.lineStart = d3_geo_pathArea.lineEnd = d3_geo_pathArea.point = d3_noop;\n      d3_geo_pathAreaSum += abs(d3_geo_pathAreaPolygon / 2);\n    }\n  };\n  function d3_geo_pathAreaRingStart() {\n    var x00, y00, x0, y0;\n    d3_geo_pathArea.point = function(x, y) {\n      d3_geo_pathArea.point = nextPoint;\n      x00 = x0 = x, y00 = y0 = y;\n    };\n    function nextPoint(x, y) {\n      d3_geo_pathAreaPolygon += y0 * x - x0 * y;\n      x0 = x, y0 = y;\n    }\n    d3_geo_pathArea.lineEnd = function() {\n      nextPoint(x00, y00);\n    };\n  }\n  var d3_geo_pathBoundsX0, d3_geo_pathBoundsY0, d3_geo_pathBoundsX1, d3_geo_pathBoundsY1;\n  var d3_geo_pathBounds = {\n    point: d3_geo_pathBoundsPoint,\n    lineStart: d3_noop,\n    lineEnd: d3_noop,\n    polygonStart: d3_noop,\n    polygonEnd: d3_noop\n  };\n  function d3_geo_pathBoundsPoint(x, y) {\n    if (x < d3_geo_pathBoundsX0) d3_geo_pathBoundsX0 = x;\n    if (x > d3_geo_pathBoundsX1) d3_geo_pathBoundsX1 = x;\n    if (y < d3_geo_pathBoundsY0) d3_geo_pathBoundsY0 = y;\n    if (y > d3_geo_pathBoundsY1) d3_geo_pathBoundsY1 = y;\n  }\n  function d3_geo_pathBuffer() {\n    var pointCircle = d3_geo_pathBufferCircle(4.5), buffer = [];\n    var stream = {\n      point: point,\n      lineStart: function() {\n        stream.point = pointLineStart;\n      },\n      lineEnd: lineEnd,\n      polygonStart: function() {\n        stream.lineEnd = lineEndPolygon;\n      },\n      polygonEnd: function() {\n        stream.lineEnd = lineEnd;\n        stream.point = point;\n      },\n      pointRadius: function(_) {\n        pointCircle = d3_geo_pathBufferCircle(_);\n        return stream;\n      },\n      result: function() {\n        if (buffer.length) {\n          var result = buffer.join(\"\");\n          buffer = [];\n          return result;\n        }\n      }\n    };\n    function point(x, y) {\n      buffer.push(\"M\", x, \",\", y, pointCircle);\n    }\n    function pointLineStart(x, y) {\n      buffer.push(\"M\", x, \",\", y);\n      stream.point = pointLine;\n    }\n    function pointLine(x, y) {\n      buffer.push(\"L\", x, \",\", y);\n    }\n    function lineEnd() {\n      stream.point = point;\n    }\n    function lineEndPolygon() {\n      buffer.push(\"Z\");\n    }\n    return stream;\n  }\n  function d3_geo_pathBufferCircle(radius) {\n    return \"m0,\" + radius + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius + \"z\";\n  }\n  var d3_geo_pathCentroid = {\n    point: d3_geo_pathCentroidPoint,\n    lineStart: d3_geo_pathCentroidLineStart,\n    lineEnd: d3_geo_pathCentroidLineEnd,\n    polygonStart: function() {\n      d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidRingStart;\n    },\n    polygonEnd: function() {\n      d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;\n      d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidLineStart;\n      d3_geo_pathCentroid.lineEnd = d3_geo_pathCentroidLineEnd;\n    }\n  };\n  function d3_geo_pathCentroidPoint(x, y) {\n    d3_geo_centroidX0 += x;\n    d3_geo_centroidY0 += y;\n    ++d3_geo_centroidZ0;\n  }\n  function d3_geo_pathCentroidLineStart() {\n    var x0, y0;\n    d3_geo_pathCentroid.point = function(x, y) {\n      d3_geo_pathCentroid.point = nextPoint;\n      d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n    };\n    function nextPoint(x, y) {\n      var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);\n      d3_geo_centroidX1 += z * (x0 + x) / 2;\n      d3_geo_centroidY1 += z * (y0 + y) / 2;\n      d3_geo_centroidZ1 += z;\n      d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n    }\n  }\n  function d3_geo_pathCentroidLineEnd() {\n    d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;\n  }\n  function d3_geo_pathCentroidRingStart() {\n    var x00, y00, x0, y0;\n    d3_geo_pathCentroid.point = function(x, y) {\n      d3_geo_pathCentroid.point = nextPoint;\n      d3_geo_pathCentroidPoint(x00 = x0 = x, y00 = y0 = y);\n    };\n    function nextPoint(x, y) {\n      var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);\n      d3_geo_centroidX1 += z * (x0 + x) / 2;\n      d3_geo_centroidY1 += z * (y0 + y) / 2;\n      d3_geo_centroidZ1 += z;\n      z = y0 * x - x0 * y;\n      d3_geo_centroidX2 += z * (x0 + x);\n      d3_geo_centroidY2 += z * (y0 + y);\n      d3_geo_centroidZ2 += z * 3;\n      d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n    }\n    d3_geo_pathCentroid.lineEnd = function() {\n      nextPoint(x00, y00);\n    };\n  }\n  function d3_geo_pathContext(context) {\n    var pointRadius = 4.5;\n    var stream = {\n      point: point,\n      lineStart: function() {\n        stream.point = pointLineStart;\n      },\n      lineEnd: lineEnd,\n      polygonStart: function() {\n        stream.lineEnd = lineEndPolygon;\n      },\n      polygonEnd: function() {\n        stream.lineEnd = lineEnd;\n        stream.point = point;\n      },\n      pointRadius: function(_) {\n        pointRadius = _;\n        return stream;\n      },\n      result: d3_noop\n    };\n    function point(x, y) {\n      context.moveTo(x + pointRadius, y);\n      context.arc(x, y, pointRadius, 0, τ);\n    }\n    function pointLineStart(x, y) {\n      context.moveTo(x, y);\n      stream.point = pointLine;\n    }\n    function pointLine(x, y) {\n      context.lineTo(x, y);\n    }\n    function lineEnd() {\n      stream.point = point;\n    }\n    function lineEndPolygon() {\n      context.closePath();\n    }\n    return stream;\n  }\n  function d3_geo_resample(project) {\n    var δ2 = .5, cosMinDistance = Math.cos(30 * d3_radians), maxDepth = 16;\n    function resample(stream) {\n      return (maxDepth ? resampleRecursive : resampleNone)(stream);\n    }\n    function resampleNone(stream) {\n      return d3_geo_transformPoint(stream, function(x, y) {\n        x = project(x, y);\n        stream.point(x[0], x[1]);\n      });\n    }\n    function resampleRecursive(stream) {\n      var λ00, φ00, x00, y00, a00, b00, c00, λ0, x0, y0, a0, b0, c0;\n      var resample = {\n        point: point,\n        lineStart: lineStart,\n        lineEnd: lineEnd,\n        polygonStart: function() {\n          stream.polygonStart();\n          resample.lineStart = ringStart;\n        },\n        polygonEnd: function() {\n          stream.polygonEnd();\n          resample.lineStart = lineStart;\n        }\n      };\n      function point(x, y) {\n        x = project(x, y);\n        stream.point(x[0], x[1]);\n      }\n      function lineStart() {\n        x0 = NaN;\n        resample.point = linePoint;\n        stream.lineStart();\n      }\n      function linePoint(λ, φ) {\n        var c = d3_geo_cartesian([ λ, φ ]), p = project(λ, φ);\n        resampleLineTo(x0, y0, λ0, a0, b0, c0, x0 = p[0], y0 = p[1], λ0 = λ, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n        stream.point(x0, y0);\n      }\n      function lineEnd() {\n        resample.point = point;\n        stream.lineEnd();\n      }\n      function ringStart() {\n        lineStart();\n        resample.point = ringPoint;\n        resample.lineEnd = ringEnd;\n      }\n      function ringPoint(λ, φ) {\n        linePoint(λ00 = λ, φ00 = φ), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n        resample.point = linePoint;\n      }\n      function ringEnd() {\n        resampleLineTo(x0, y0, λ0, a0, b0, c0, x00, y00, λ00, a00, b00, c00, maxDepth, stream);\n        resample.lineEnd = lineEnd;\n        lineEnd();\n      }\n      return resample;\n    }\n    function resampleLineTo(x0, y0, λ0, a0, b0, c0, x1, y1, λ1, a1, b1, c1, depth, stream) {\n      var dx = x1 - x0, dy = y1 - y0, d2 = dx * dx + dy * dy;\n      if (d2 > 4 * δ2 && depth--) {\n        var a = a0 + a1, b = b0 + b1, c = c0 + c1, m = Math.sqrt(a * a + b * b + c * c), φ2 = Math.asin(c /= m), λ2 = abs(abs(c) - 1) < ε || abs(λ0 - λ1) < ε ? (λ0 + λ1) / 2 : Math.atan2(b, a), p = project(λ2, φ2), x2 = p[0], y2 = p[1], dx2 = x2 - x0, dy2 = y2 - y0, dz = dy * dx2 - dx * dy2;\n        if (dz * dz / d2 > δ2 || abs((dx * dx2 + dy * dy2) / d2 - .5) > .3 || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) {\n          resampleLineTo(x0, y0, λ0, a0, b0, c0, x2, y2, λ2, a /= m, b /= m, c, depth, stream);\n          stream.point(x2, y2);\n          resampleLineTo(x2, y2, λ2, a, b, c, x1, y1, λ1, a1, b1, c1, depth, stream);\n        }\n      }\n    }\n    resample.precision = function(_) {\n      if (!arguments.length) return Math.sqrt(δ2);\n      maxDepth = (δ2 = _ * _) > 0 && 16;\n      return resample;\n    };\n    return resample;\n  }\n  d3.geo.path = function() {\n    var pointRadius = 4.5, projection, context, projectStream, contextStream, cacheStream;\n    function path(object) {\n      if (object) {\n        if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n        if (!cacheStream || !cacheStream.valid) cacheStream = projectStream(contextStream);\n        d3.geo.stream(object, cacheStream);\n      }\n      return contextStream.result();\n    }\n    path.area = function(object) {\n      d3_geo_pathAreaSum = 0;\n      d3.geo.stream(object, projectStream(d3_geo_pathArea));\n      return d3_geo_pathAreaSum;\n    };\n    path.centroid = function(object) {\n      d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;\n      d3.geo.stream(object, projectStream(d3_geo_pathCentroid));\n      return d3_geo_centroidZ2 ? [ d3_geo_centroidX2 / d3_geo_centroidZ2, d3_geo_centroidY2 / d3_geo_centroidZ2 ] : d3_geo_centroidZ1 ? [ d3_geo_centroidX1 / d3_geo_centroidZ1, d3_geo_centroidY1 / d3_geo_centroidZ1 ] : d3_geo_centroidZ0 ? [ d3_geo_centroidX0 / d3_geo_centroidZ0, d3_geo_centroidY0 / d3_geo_centroidZ0 ] : [ NaN, NaN ];\n    };\n    path.bounds = function(object) {\n      d3_geo_pathBoundsX1 = d3_geo_pathBoundsY1 = -(d3_geo_pathBoundsX0 = d3_geo_pathBoundsY0 = Infinity);\n      d3.geo.stream(object, projectStream(d3_geo_pathBounds));\n      return [ [ d3_geo_pathBoundsX0, d3_geo_pathBoundsY0 ], [ d3_geo_pathBoundsX1, d3_geo_pathBoundsY1 ] ];\n    };\n    path.projection = function(_) {\n      if (!arguments.length) return projection;\n      projectStream = (projection = _) ? _.stream || d3_geo_pathProjectStream(_) : d3_identity;\n      return reset();\n    };\n    path.context = function(_) {\n      if (!arguments.length) return context;\n      contextStream = (context = _) == null ? new d3_geo_pathBuffer() : new d3_geo_pathContext(_);\n      if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n      return reset();\n    };\n    path.pointRadius = function(_) {\n      if (!arguments.length) return pointRadius;\n      pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n      return path;\n    };\n    function reset() {\n      cacheStream = null;\n      return path;\n    }\n    return path.projection(d3.geo.albersUsa()).context(null);\n  };\n  function d3_geo_pathProjectStream(project) {\n    var resample = d3_geo_resample(function(x, y) {\n      return project([ x * d3_degrees, y * d3_degrees ]);\n    });\n    return function(stream) {\n      return d3_geo_projectionRadians(resample(stream));\n    };\n  }\n  d3.geo.transform = function(methods) {\n    return {\n      stream: function(stream) {\n        var transform = new d3_geo_transform(stream);\n        for (var k in methods) transform[k] = methods[k];\n        return transform;\n      }\n    };\n  };\n  function d3_geo_transform(stream) {\n    this.stream = stream;\n  }\n  d3_geo_transform.prototype = {\n    point: function(x, y) {\n      this.stream.point(x, y);\n    },\n    sphere: function() {\n      this.stream.sphere();\n    },\n    lineStart: function() {\n      this.stream.lineStart();\n    },\n    lineEnd: function() {\n      this.stream.lineEnd();\n    },\n    polygonStart: function() {\n      this.stream.polygonStart();\n    },\n    polygonEnd: function() {\n      this.stream.polygonEnd();\n    }\n  };\n  function d3_geo_transformPoint(stream, point) {\n    return {\n      point: point,\n      sphere: function() {\n        stream.sphere();\n      },\n      lineStart: function() {\n        stream.lineStart();\n      },\n      lineEnd: function() {\n        stream.lineEnd();\n      },\n      polygonStart: function() {\n        stream.polygonStart();\n      },\n      polygonEnd: function() {\n        stream.polygonEnd();\n      }\n    };\n  }\n  d3.geo.projection = d3_geo_projection;\n  d3.geo.projectionMutator = d3_geo_projectionMutator;\n  function d3_geo_projection(project) {\n    return d3_geo_projectionMutator(function() {\n      return project;\n    })();\n  }\n  function d3_geo_projectionMutator(projectAt) {\n    var project, rotate, projectRotate, projectResample = d3_geo_resample(function(x, y) {\n      x = project(x, y);\n      return [ x[0] * k + δx, δy - x[1] * k ];\n    }), k = 150, x = 480, y = 250, λ = 0, φ = 0, δλ = 0, δφ = 0, δγ = 0, δx, δy, preclip = d3_geo_clipAntimeridian, postclip = d3_identity, clipAngle = null, clipExtent = null, stream;\n    function projection(point) {\n      point = projectRotate(point[0] * d3_radians, point[1] * d3_radians);\n      return [ point[0] * k + δx, δy - point[1] * k ];\n    }\n    function invert(point) {\n      point = projectRotate.invert((point[0] - δx) / k, (δy - point[1]) / k);\n      return point && [ point[0] * d3_degrees, point[1] * d3_degrees ];\n    }\n    projection.stream = function(output) {\n      if (stream) stream.valid = false;\n      stream = d3_geo_projectionRadians(preclip(rotate, projectResample(postclip(output))));\n      stream.valid = true;\n      return stream;\n    };\n    projection.clipAngle = function(_) {\n      if (!arguments.length) return clipAngle;\n      preclip = _ == null ? (clipAngle = _, d3_geo_clipAntimeridian) : d3_geo_clipCircle((clipAngle = +_) * d3_radians);\n      return invalidate();\n    };\n    projection.clipExtent = function(_) {\n      if (!arguments.length) return clipExtent;\n      clipExtent = _;\n      postclip = _ ? d3_geo_clipExtent(_[0][0], _[0][1], _[1][0], _[1][1]) : d3_identity;\n      return invalidate();\n    };\n    projection.scale = function(_) {\n      if (!arguments.length) return k;\n      k = +_;\n      return reset();\n    };\n    projection.translate = function(_) {\n      if (!arguments.length) return [ x, y ];\n      x = +_[0];\n      y = +_[1];\n      return reset();\n    };\n    projection.center = function(_) {\n      if (!arguments.length) return [ λ * d3_degrees, φ * d3_degrees ];\n      λ = _[0] % 360 * d3_radians;\n      φ = _[1] % 360 * d3_radians;\n      return reset();\n    };\n    projection.rotate = function(_) {\n      if (!arguments.length) return [ δλ * d3_degrees, δφ * d3_degrees, δγ * d3_degrees ];\n      δλ = _[0] % 360 * d3_radians;\n      δφ = _[1] % 360 * d3_radians;\n      δγ = _.length > 2 ? _[2] % 360 * d3_radians : 0;\n      return reset();\n    };\n    d3.rebind(projection, projectResample, \"precision\");\n    function reset() {\n      projectRotate = d3_geo_compose(rotate = d3_geo_rotation(δλ, δφ, δγ), project);\n      var center = project(λ, φ);\n      δx = x - center[0] * k;\n      δy = y + center[1] * k;\n      return invalidate();\n    }\n    function invalidate() {\n      if (stream) stream.valid = false, stream = null;\n      return projection;\n    }\n    return function() {\n      project = projectAt.apply(this, arguments);\n      projection.invert = project.invert && invert;\n      return reset();\n    };\n  }\n  function d3_geo_projectionRadians(stream) {\n    return d3_geo_transformPoint(stream, function(x, y) {\n      stream.point(x * d3_radians, y * d3_radians);\n    });\n  }\n  function d3_geo_equirectangular(λ, φ) {\n    return [ λ, φ ];\n  }\n  (d3.geo.equirectangular = function() {\n    return d3_geo_projection(d3_geo_equirectangular);\n  }).raw = d3_geo_equirectangular.invert = d3_geo_equirectangular;\n  d3.geo.rotation = function(rotate) {\n    rotate = d3_geo_rotation(rotate[0] % 360 * d3_radians, rotate[1] * d3_radians, rotate.length > 2 ? rotate[2] * d3_radians : 0);\n    function forward(coordinates) {\n      coordinates = rotate(coordinates[0] * d3_radians, coordinates[1] * d3_radians);\n      return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;\n    }\n    forward.invert = function(coordinates) {\n      coordinates = rotate.invert(coordinates[0] * d3_radians, coordinates[1] * d3_radians);\n      return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;\n    };\n    return forward;\n  };\n  function d3_geo_identityRotation(λ, φ) {\n    return [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ];\n  }\n  d3_geo_identityRotation.invert = d3_geo_equirectangular;\n  function d3_geo_rotation(δλ, δφ, δγ) {\n    return δλ ? δφ || δγ ? d3_geo_compose(d3_geo_rotationλ(δλ), d3_geo_rotationφγ(δφ, δγ)) : d3_geo_rotationλ(δλ) : δφ || δγ ? d3_geo_rotationφγ(δφ, δγ) : d3_geo_identityRotation;\n  }\n  function d3_geo_forwardRotationλ(δλ) {\n    return function(λ, φ) {\n      return λ += δλ, [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ];\n    };\n  }\n  function d3_geo_rotationλ(δλ) {\n    var rotation = d3_geo_forwardRotationλ(δλ);\n    rotation.invert = d3_geo_forwardRotationλ(-δλ);\n    return rotation;\n  }\n  function d3_geo_rotationφγ(δφ, δγ) {\n    var cosδφ = Math.cos(δφ), sinδφ = Math.sin(δφ), cosδγ = Math.cos(δγ), sinδγ = Math.sin(δγ);\n    function rotation(λ, φ) {\n      var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδφ + x * sinδφ;\n      return [ Math.atan2(y * cosδγ - k * sinδγ, x * cosδφ - z * sinδφ), d3_asin(k * cosδγ + y * sinδγ) ];\n    }\n    rotation.invert = function(λ, φ) {\n      var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδγ - y * sinδγ;\n      return [ Math.atan2(y * cosδγ + z * sinδγ, x * cosδφ + k * sinδφ), d3_asin(k * cosδφ - x * sinδφ) ];\n    };\n    return rotation;\n  }\n  d3.geo.circle = function() {\n    var origin = [ 0, 0 ], angle, precision = 6, interpolate;\n    function circle() {\n      var center = typeof origin === \"function\" ? origin.apply(this, arguments) : origin, rotate = d3_geo_rotation(-center[0] * d3_radians, -center[1] * d3_radians, 0).invert, ring = [];\n      interpolate(null, null, 1, {\n        point: function(x, y) {\n          ring.push(x = rotate(x, y));\n          x[0] *= d3_degrees, x[1] *= d3_degrees;\n        }\n      });\n      return {\n        type: \"Polygon\",\n        coordinates: [ ring ]\n      };\n    }\n    circle.origin = function(x) {\n      if (!arguments.length) return origin;\n      origin = x;\n      return circle;\n    };\n    circle.angle = function(x) {\n      if (!arguments.length) return angle;\n      interpolate = d3_geo_circleInterpolate((angle = +x) * d3_radians, precision * d3_radians);\n      return circle;\n    };\n    circle.precision = function(_) {\n      if (!arguments.length) return precision;\n      interpolate = d3_geo_circleInterpolate(angle * d3_radians, (precision = +_) * d3_radians);\n      return circle;\n    };\n    return circle.angle(90);\n  };\n  function d3_geo_circleInterpolate(radius, precision) {\n    var cr = Math.cos(radius), sr = Math.sin(radius);\n    return function(from, to, direction, listener) {\n      var step = direction * precision;\n      if (from != null) {\n        from = d3_geo_circleAngle(cr, from);\n        to = d3_geo_circleAngle(cr, to);\n        if (direction > 0 ? from < to : from > to) from += direction * τ;\n      } else {\n        from = radius + direction * τ;\n        to = radius - .5 * step;\n      }\n      for (var point, t = from; direction > 0 ? t > to : t < to; t -= step) {\n        listener.point((point = d3_geo_spherical([ cr, -sr * Math.cos(t), -sr * Math.sin(t) ]))[0], point[1]);\n      }\n    };\n  }\n  function d3_geo_circleAngle(cr, point) {\n    var a = d3_geo_cartesian(point);\n    a[0] -= cr;\n    d3_geo_cartesianNormalize(a);\n    var angle = d3_acos(-a[1]);\n    return ((-a[2] < 0 ? -angle : angle) + 2 * Math.PI - ε) % (2 * Math.PI);\n  }\n  d3.geo.distance = function(a, b) {\n    var Δλ = (b[0] - a[0]) * d3_radians, φ0 = a[1] * d3_radians, φ1 = b[1] * d3_radians, sinΔλ = Math.sin(Δλ), cosΔλ = Math.cos(Δλ), sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), sinφ1 = Math.sin(φ1), cosφ1 = Math.cos(φ1), t;\n    return Math.atan2(Math.sqrt((t = cosφ1 * sinΔλ) * t + (t = cosφ0 * sinφ1 - sinφ0 * cosφ1 * cosΔλ) * t), sinφ0 * sinφ1 + cosφ0 * cosφ1 * cosΔλ);\n  };\n  d3.geo.graticule = function() {\n    var x1, x0, X1, X0, y1, y0, Y1, Y0, dx = 10, dy = dx, DX = 90, DY = 360, x, y, X, Y, precision = 2.5;\n    function graticule() {\n      return {\n        type: \"MultiLineString\",\n        coordinates: lines()\n      };\n    }\n    function lines() {\n      return d3.range(Math.ceil(X0 / DX) * DX, X1, DX).map(X).concat(d3.range(Math.ceil(Y0 / DY) * DY, Y1, DY).map(Y)).concat(d3.range(Math.ceil(x0 / dx) * dx, x1, dx).filter(function(x) {\n        return abs(x % DX) > ε;\n      }).map(x)).concat(d3.range(Math.ceil(y0 / dy) * dy, y1, dy).filter(function(y) {\n        return abs(y % DY) > ε;\n      }).map(y));\n    }\n    graticule.lines = function() {\n      return lines().map(function(coordinates) {\n        return {\n          type: \"LineString\",\n          coordinates: coordinates\n        };\n      });\n    };\n    graticule.outline = function() {\n      return {\n        type: \"Polygon\",\n        coordinates: [ X(X0).concat(Y(Y1).slice(1), X(X1).reverse().slice(1), Y(Y0).reverse().slice(1)) ]\n      };\n    };\n    graticule.extent = function(_) {\n      if (!arguments.length) return graticule.minorExtent();\n      return graticule.majorExtent(_).minorExtent(_);\n    };\n    graticule.majorExtent = function(_) {\n      if (!arguments.length) return [ [ X0, Y0 ], [ X1, Y1 ] ];\n      X0 = +_[0][0], X1 = +_[1][0];\n      Y0 = +_[0][1], Y1 = +_[1][1];\n      if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n      if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n      return graticule.precision(precision);\n    };\n    graticule.minorExtent = function(_) {\n      if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];\n      x0 = +_[0][0], x1 = +_[1][0];\n      y0 = +_[0][1], y1 = +_[1][1];\n      if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n      if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n      return graticule.precision(precision);\n    };\n    graticule.step = function(_) {\n      if (!arguments.length) return graticule.minorStep();\n      return graticule.majorStep(_).minorStep(_);\n    };\n    graticule.majorStep = function(_) {\n      if (!arguments.length) return [ DX, DY ];\n      DX = +_[0], DY = +_[1];\n      return graticule;\n    };\n    graticule.minorStep = function(_) {\n      if (!arguments.length) return [ dx, dy ];\n      dx = +_[0], dy = +_[1];\n      return graticule;\n    };\n    graticule.precision = function(_) {\n      if (!arguments.length) return precision;\n      precision = +_;\n      x = d3_geo_graticuleX(y0, y1, 90);\n      y = d3_geo_graticuleY(x0, x1, precision);\n      X = d3_geo_graticuleX(Y0, Y1, 90);\n      Y = d3_geo_graticuleY(X0, X1, precision);\n      return graticule;\n    };\n    return graticule.majorExtent([ [ -180, -90 + ε ], [ 180, 90 - ε ] ]).minorExtent([ [ -180, -80 - ε ], [ 180, 80 + ε ] ]);\n  };\n  function d3_geo_graticuleX(y0, y1, dy) {\n    var y = d3.range(y0, y1 - ε, dy).concat(y1);\n    return function(x) {\n      return y.map(function(y) {\n        return [ x, y ];\n      });\n    };\n  }\n  function d3_geo_graticuleY(x0, x1, dx) {\n    var x = d3.range(x0, x1 - ε, dx).concat(x1);\n    return function(y) {\n      return x.map(function(x) {\n        return [ x, y ];\n      });\n    };\n  }\n  function d3_source(d) {\n    return d.source;\n  }\n  function d3_target(d) {\n    return d.target;\n  }\n  d3.geo.greatArc = function() {\n    var source = d3_source, source_, target = d3_target, target_;\n    function greatArc() {\n      return {\n        type: \"LineString\",\n        coordinates: [ source_ || source.apply(this, arguments), target_ || target.apply(this, arguments) ]\n      };\n    }\n    greatArc.distance = function() {\n      return d3.geo.distance(source_ || source.apply(this, arguments), target_ || target.apply(this, arguments));\n    };\n    greatArc.source = function(_) {\n      if (!arguments.length) return source;\n      source = _, source_ = typeof _ === \"function\" ? null : _;\n      return greatArc;\n    };\n    greatArc.target = function(_) {\n      if (!arguments.length) return target;\n      target = _, target_ = typeof _ === \"function\" ? null : _;\n      return greatArc;\n    };\n    greatArc.precision = function() {\n      return arguments.length ? greatArc : 0;\n    };\n    return greatArc;\n  };\n  d3.geo.interpolate = function(source, target) {\n    return d3_geo_interpolate(source[0] * d3_radians, source[1] * d3_radians, target[0] * d3_radians, target[1] * d3_radians);\n  };\n  function d3_geo_interpolate(x0, y0, x1, y1) {\n    var cy0 = Math.cos(y0), sy0 = Math.sin(y0), cy1 = Math.cos(y1), sy1 = Math.sin(y1), kx0 = cy0 * Math.cos(x0), ky0 = cy0 * Math.sin(x0), kx1 = cy1 * Math.cos(x1), ky1 = cy1 * Math.sin(x1), d = 2 * Math.asin(Math.sqrt(d3_haversin(y1 - y0) + cy0 * cy1 * d3_haversin(x1 - x0))), k = 1 / Math.sin(d);\n    var interpolate = d ? function(t) {\n      var B = Math.sin(t *= d) * k, A = Math.sin(d - t) * k, x = A * kx0 + B * kx1, y = A * ky0 + B * ky1, z = A * sy0 + B * sy1;\n      return [ Math.atan2(y, x) * d3_degrees, Math.atan2(z, Math.sqrt(x * x + y * y)) * d3_degrees ];\n    } : function() {\n      return [ x0 * d3_degrees, y0 * d3_degrees ];\n    };\n    interpolate.distance = d;\n    return interpolate;\n  }\n  d3.geo.length = function(object) {\n    d3_geo_lengthSum = 0;\n    d3.geo.stream(object, d3_geo_length);\n    return d3_geo_lengthSum;\n  };\n  var d3_geo_lengthSum;\n  var d3_geo_length = {\n    sphere: d3_noop,\n    point: d3_noop,\n    lineStart: d3_geo_lengthLineStart,\n    lineEnd: d3_noop,\n    polygonStart: d3_noop,\n    polygonEnd: d3_noop\n  };\n  function d3_geo_lengthLineStart() {\n    var λ0, sinφ0, cosφ0;\n    d3_geo_length.point = function(λ, φ) {\n      λ0 = λ * d3_radians, sinφ0 = Math.sin(φ *= d3_radians), cosφ0 = Math.cos(φ);\n      d3_geo_length.point = nextPoint;\n    };\n    d3_geo_length.lineEnd = function() {\n      d3_geo_length.point = d3_geo_length.lineEnd = d3_noop;\n    };\n    function nextPoint(λ, φ) {\n      var sinφ = Math.sin(φ *= d3_radians), cosφ = Math.cos(φ), t = abs((λ *= d3_radians) - λ0), cosΔλ = Math.cos(t);\n      d3_geo_lengthSum += Math.atan2(Math.sqrt((t = cosφ * Math.sin(t)) * t + (t = cosφ0 * sinφ - sinφ0 * cosφ * cosΔλ) * t), sinφ0 * sinφ + cosφ0 * cosφ * cosΔλ);\n      λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ;\n    }\n  }\n  function d3_geo_azimuthal(scale, angle) {\n    function azimuthal(λ, φ) {\n      var cosλ = Math.cos(λ), cosφ = Math.cos(φ), k = scale(cosλ * cosφ);\n      return [ k * cosφ * Math.sin(λ), k * Math.sin(φ) ];\n    }\n    azimuthal.invert = function(x, y) {\n      var ρ = Math.sqrt(x * x + y * y), c = angle(ρ), sinc = Math.sin(c), cosc = Math.cos(c);\n      return [ Math.atan2(x * sinc, ρ * cosc), Math.asin(ρ && y * sinc / ρ) ];\n    };\n    return azimuthal;\n  }\n  var d3_geo_azimuthalEqualArea = d3_geo_azimuthal(function(cosλcosφ) {\n    return Math.sqrt(2 / (1 + cosλcosφ));\n  }, function(ρ) {\n    return 2 * Math.asin(ρ / 2);\n  });\n  (d3.geo.azimuthalEqualArea = function() {\n    return d3_geo_projection(d3_geo_azimuthalEqualArea);\n  }).raw = d3_geo_azimuthalEqualArea;\n  var d3_geo_azimuthalEquidistant = d3_geo_azimuthal(function(cosλcosφ) {\n    var c = Math.acos(cosλcosφ);\n    return c && c / Math.sin(c);\n  }, d3_identity);\n  (d3.geo.azimuthalEquidistant = function() {\n    return d3_geo_projection(d3_geo_azimuthalEquidistant);\n  }).raw = d3_geo_azimuthalEquidistant;\n  function d3_geo_conicConformal(φ0, φ1) {\n    var cosφ0 = Math.cos(φ0), t = function(φ) {\n      return Math.tan(π / 4 + φ / 2);\n    }, n = φ0 === φ1 ? Math.sin(φ0) : Math.log(cosφ0 / Math.cos(φ1)) / Math.log(t(φ1) / t(φ0)), F = cosφ0 * Math.pow(t(φ0), n) / n;\n    if (!n) return d3_geo_mercator;\n    function forward(λ, φ) {\n      if (F > 0) {\n        if (φ < -halfπ + ε) φ = -halfπ + ε;\n      } else {\n        if (φ > halfπ - ε) φ = halfπ - ε;\n      }\n      var ρ = F / Math.pow(t(φ), n);\n      return [ ρ * Math.sin(n * λ), F - ρ * Math.cos(n * λ) ];\n    }\n    forward.invert = function(x, y) {\n      var ρ0_y = F - y, ρ = d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y);\n      return [ Math.atan2(x, ρ0_y) / n, 2 * Math.atan(Math.pow(F / ρ, 1 / n)) - halfπ ];\n    };\n    return forward;\n  }\n  (d3.geo.conicConformal = function() {\n    return d3_geo_conic(d3_geo_conicConformal);\n  }).raw = d3_geo_conicConformal;\n  function d3_geo_conicEquidistant(φ0, φ1) {\n    var cosφ0 = Math.cos(φ0), n = φ0 === φ1 ? Math.sin(φ0) : (cosφ0 - Math.cos(φ1)) / (φ1 - φ0), G = cosφ0 / n + φ0;\n    if (abs(n) < ε) return d3_geo_equirectangular;\n    function forward(λ, φ) {\n      var ρ = G - φ;\n      return [ ρ * Math.sin(n * λ), G - ρ * Math.cos(n * λ) ];\n    }\n    forward.invert = function(x, y) {\n      var ρ0_y = G - y;\n      return [ Math.atan2(x, ρ0_y) / n, G - d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y) ];\n    };\n    return forward;\n  }\n  (d3.geo.conicEquidistant = function() {\n    return d3_geo_conic(d3_geo_conicEquidistant);\n  }).raw = d3_geo_conicEquidistant;\n  var d3_geo_gnomonic = d3_geo_azimuthal(function(cosλcosφ) {\n    return 1 / cosλcosφ;\n  }, Math.atan);\n  (d3.geo.gnomonic = function() {\n    return d3_geo_projection(d3_geo_gnomonic);\n  }).raw = d3_geo_gnomonic;\n  function d3_geo_mercator(λ, φ) {\n    return [ λ, Math.log(Math.tan(π / 4 + φ / 2)) ];\n  }\n  d3_geo_mercator.invert = function(x, y) {\n    return [ x, 2 * Math.atan(Math.exp(y)) - halfπ ];\n  };\n  function d3_geo_mercatorProjection(project) {\n    var m = d3_geo_projection(project), scale = m.scale, translate = m.translate, clipExtent = m.clipExtent, clipAuto;\n    m.scale = function() {\n      var v = scale.apply(m, arguments);\n      return v === m ? clipAuto ? m.clipExtent(null) : m : v;\n    };\n    m.translate = function() {\n      var v = translate.apply(m, arguments);\n      return v === m ? clipAuto ? m.clipExtent(null) : m : v;\n    };\n    m.clipExtent = function(_) {\n      var v = clipExtent.apply(m, arguments);\n      if (v === m) {\n        if (clipAuto = _ == null) {\n          var k = π * scale(), t = translate();\n          clipExtent([ [ t[0] - k, t[1] - k ], [ t[0] + k, t[1] + k ] ]);\n        }\n      } else if (clipAuto) {\n        v = null;\n      }\n      return v;\n    };\n    return m.clipExtent(null);\n  }\n  (d3.geo.mercator = function() {\n    return d3_geo_mercatorProjection(d3_geo_mercator);\n  }).raw = d3_geo_mercator;\n  var d3_geo_orthographic = d3_geo_azimuthal(function() {\n    return 1;\n  }, Math.asin);\n  (d3.geo.orthographic = function() {\n    return d3_geo_projection(d3_geo_orthographic);\n  }).raw = d3_geo_orthographic;\n  var d3_geo_stereographic = d3_geo_azimuthal(function(cosλcosφ) {\n    return 1 / (1 + cosλcosφ);\n  }, function(ρ) {\n    return 2 * Math.atan(ρ);\n  });\n  (d3.geo.stereographic = function() {\n    return d3_geo_projection(d3_geo_stereographic);\n  }).raw = d3_geo_stereographic;\n  function d3_geo_transverseMercator(λ, φ) {\n    return [ Math.log(Math.tan(π / 4 + φ / 2)), -λ ];\n  }\n  d3_geo_transverseMercator.invert = function(x, y) {\n    return [ -y, 2 * Math.atan(Math.exp(x)) - halfπ ];\n  };\n  (d3.geo.transverseMercator = function() {\n    var projection = d3_geo_mercatorProjection(d3_geo_transverseMercator), center = projection.center, rotate = projection.rotate;\n    projection.center = function(_) {\n      return _ ? center([ -_[1], _[0] ]) : (_ = center(), [ _[1], -_[0] ]);\n    };\n    projection.rotate = function(_) {\n      return _ ? rotate([ _[0], _[1], _.length > 2 ? _[2] + 90 : 90 ]) : (_ = rotate(), \n      [ _[0], _[1], _[2] - 90 ]);\n    };\n    return rotate([ 0, 0, 90 ]);\n  }).raw = d3_geo_transverseMercator;\n  d3.geom = {};\n  function d3_geom_pointX(d) {\n    return d[0];\n  }\n  function d3_geom_pointY(d) {\n    return d[1];\n  }\n  d3.geom.hull = function(vertices) {\n    var x = d3_geom_pointX, y = d3_geom_pointY;\n    if (arguments.length) return hull(vertices);\n    function hull(data) {\n      if (data.length < 3) return [];\n      var fx = d3_functor(x), fy = d3_functor(y), i, n = data.length, points = [], flippedPoints = [];\n      for (i = 0; i < n; i++) {\n        points.push([ +fx.call(this, data[i], i), +fy.call(this, data[i], i), i ]);\n      }\n      points.sort(d3_geom_hullOrder);\n      for (i = 0; i < n; i++) flippedPoints.push([ points[i][0], -points[i][1] ]);\n      var upper = d3_geom_hullUpper(points), lower = d3_geom_hullUpper(flippedPoints);\n      var skipLeft = lower[0] === upper[0], skipRight = lower[lower.length - 1] === upper[upper.length - 1], polygon = [];\n      for (i = upper.length - 1; i >= 0; --i) polygon.push(data[points[upper[i]][2]]);\n      for (i = +skipLeft; i < lower.length - skipRight; ++i) polygon.push(data[points[lower[i]][2]]);\n      return polygon;\n    }\n    hull.x = function(_) {\n      return arguments.length ? (x = _, hull) : x;\n    };\n    hull.y = function(_) {\n      return arguments.length ? (y = _, hull) : y;\n    };\n    return hull;\n  };\n  function d3_geom_hullUpper(points) {\n    var n = points.length, hull = [ 0, 1 ], hs = 2;\n    for (var i = 2; i < n; i++) {\n      while (hs > 1 && d3_cross2d(points[hull[hs - 2]], points[hull[hs - 1]], points[i]) <= 0) --hs;\n      hull[hs++] = i;\n    }\n    return hull.slice(0, hs);\n  }\n  function d3_geom_hullOrder(a, b) {\n    return a[0] - b[0] || a[1] - b[1];\n  }\n  d3.geom.polygon = function(coordinates) {\n    d3_subclass(coordinates, d3_geom_polygonPrototype);\n    return coordinates;\n  };\n  var d3_geom_polygonPrototype = d3.geom.polygon.prototype = [];\n  d3_geom_polygonPrototype.area = function() {\n    var i = -1, n = this.length, a, b = this[n - 1], area = 0;\n    while (++i < n) {\n      a = b;\n      b = this[i];\n      area += a[1] * b[0] - a[0] * b[1];\n    }\n    return area * .5;\n  };\n  d3_geom_polygonPrototype.centroid = function(k) {\n    var i = -1, n = this.length, x = 0, y = 0, a, b = this[n - 1], c;\n    if (!arguments.length) k = -1 / (6 * this.area());\n    while (++i < n) {\n      a = b;\n      b = this[i];\n      c = a[0] * b[1] - b[0] * a[1];\n      x += (a[0] + b[0]) * c;\n      y += (a[1] + b[1]) * c;\n    }\n    return [ x * k, y * k ];\n  };\n  d3_geom_polygonPrototype.clip = function(subject) {\n    var input, closed = d3_geom_polygonClosed(subject), i = -1, n = this.length - d3_geom_polygonClosed(this), j, m, a = this[n - 1], b, c, d;\n    while (++i < n) {\n      input = subject.slice();\n      subject.length = 0;\n      b = this[i];\n      c = input[(m = input.length - closed) - 1];\n      j = -1;\n      while (++j < m) {\n        d = input[j];\n        if (d3_geom_polygonInside(d, a, b)) {\n          if (!d3_geom_polygonInside(c, a, b)) {\n            subject.push(d3_geom_polygonIntersect(c, d, a, b));\n          }\n          subject.push(d);\n        } else if (d3_geom_polygonInside(c, a, b)) {\n          subject.push(d3_geom_polygonIntersect(c, d, a, b));\n        }\n        c = d;\n      }\n      if (closed) subject.push(subject[0]);\n      a = b;\n    }\n    return subject;\n  };\n  function d3_geom_polygonInside(p, a, b) {\n    return (b[0] - a[0]) * (p[1] - a[1]) < (b[1] - a[1]) * (p[0] - a[0]);\n  }\n  function d3_geom_polygonIntersect(c, d, a, b) {\n    var x1 = c[0], x3 = a[0], x21 = d[0] - x1, x43 = b[0] - x3, y1 = c[1], y3 = a[1], y21 = d[1] - y1, y43 = b[1] - y3, ua = (x43 * (y1 - y3) - y43 * (x1 - x3)) / (y43 * x21 - x43 * y21);\n    return [ x1 + ua * x21, y1 + ua * y21 ];\n  }\n  function d3_geom_polygonClosed(coordinates) {\n    var a = coordinates[0], b = coordinates[coordinates.length - 1];\n    return !(a[0] - b[0] || a[1] - b[1]);\n  }\n  var d3_geom_voronoiEdges, d3_geom_voronoiCells, d3_geom_voronoiBeaches, d3_geom_voronoiBeachPool = [], d3_geom_voronoiFirstCircle, d3_geom_voronoiCircles, d3_geom_voronoiCirclePool = [];\n  function d3_geom_voronoiBeach() {\n    d3_geom_voronoiRedBlackNode(this);\n    this.edge = this.site = this.circle = null;\n  }\n  function d3_geom_voronoiCreateBeach(site) {\n    var beach = d3_geom_voronoiBeachPool.pop() || new d3_geom_voronoiBeach();\n    beach.site = site;\n    return beach;\n  }\n  function d3_geom_voronoiDetachBeach(beach) {\n    d3_geom_voronoiDetachCircle(beach);\n    d3_geom_voronoiBeaches.remove(beach);\n    d3_geom_voronoiBeachPool.push(beach);\n    d3_geom_voronoiRedBlackNode(beach);\n  }\n  function d3_geom_voronoiRemoveBeach(beach) {\n    var circle = beach.circle, x = circle.x, y = circle.cy, vertex = {\n      x: x,\n      y: y\n    }, previous = beach.P, next = beach.N, disappearing = [ beach ];\n    d3_geom_voronoiDetachBeach(beach);\n    var lArc = previous;\n    while (lArc.circle && abs(x - lArc.circle.x) < ε && abs(y - lArc.circle.cy) < ε) {\n      previous = lArc.P;\n      disappearing.unshift(lArc);\n      d3_geom_voronoiDetachBeach(lArc);\n      lArc = previous;\n    }\n    disappearing.unshift(lArc);\n    d3_geom_voronoiDetachCircle(lArc);\n    var rArc = next;\n    while (rArc.circle && abs(x - rArc.circle.x) < ε && abs(y - rArc.circle.cy) < ε) {\n      next = rArc.N;\n      disappearing.push(rArc);\n      d3_geom_voronoiDetachBeach(rArc);\n      rArc = next;\n    }\n    disappearing.push(rArc);\n    d3_geom_voronoiDetachCircle(rArc);\n    var nArcs = disappearing.length, iArc;\n    for (iArc = 1; iArc < nArcs; ++iArc) {\n      rArc = disappearing[iArc];\n      lArc = disappearing[iArc - 1];\n      d3_geom_voronoiSetEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n    }\n    lArc = disappearing[0];\n    rArc = disappearing[nArcs - 1];\n    rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, rArc.site, null, vertex);\n    d3_geom_voronoiAttachCircle(lArc);\n    d3_geom_voronoiAttachCircle(rArc);\n  }\n  function d3_geom_voronoiAddBeach(site) {\n    var x = site.x, directrix = site.y, lArc, rArc, dxl, dxr, node = d3_geom_voronoiBeaches._;\n    while (node) {\n      dxl = d3_geom_voronoiLeftBreakPoint(node, directrix) - x;\n      if (dxl > ε) node = node.L; else {\n        dxr = x - d3_geom_voronoiRightBreakPoint(node, directrix);\n        if (dxr > ε) {\n          if (!node.R) {\n            lArc = node;\n            break;\n          }\n          node = node.R;\n        } else {\n          if (dxl > -ε) {\n            lArc = node.P;\n            rArc = node;\n          } else if (dxr > -ε) {\n            lArc = node;\n            rArc = node.N;\n          } else {\n            lArc = rArc = node;\n          }\n          break;\n        }\n      }\n    }\n    var newArc = d3_geom_voronoiCreateBeach(site);\n    d3_geom_voronoiBeaches.insert(lArc, newArc);\n    if (!lArc && !rArc) return;\n    if (lArc === rArc) {\n      d3_geom_voronoiDetachCircle(lArc);\n      rArc = d3_geom_voronoiCreateBeach(lArc.site);\n      d3_geom_voronoiBeaches.insert(newArc, rArc);\n      newArc.edge = rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);\n      d3_geom_voronoiAttachCircle(lArc);\n      d3_geom_voronoiAttachCircle(rArc);\n      return;\n    }\n    if (!rArc) {\n      newArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);\n      return;\n    }\n    d3_geom_voronoiDetachCircle(lArc);\n    d3_geom_voronoiDetachCircle(rArc);\n    var lSite = lArc.site, ax = lSite.x, ay = lSite.y, bx = site.x - ax, by = site.y - ay, rSite = rArc.site, cx = rSite.x - ax, cy = rSite.y - ay, d = 2 * (bx * cy - by * cx), hb = bx * bx + by * by, hc = cx * cx + cy * cy, vertex = {\n      x: (cy * hb - by * hc) / d + ax,\n      y: (bx * hc - cx * hb) / d + ay\n    };\n    d3_geom_voronoiSetEdgeEnd(rArc.edge, lSite, rSite, vertex);\n    newArc.edge = d3_geom_voronoiCreateEdge(lSite, site, null, vertex);\n    rArc.edge = d3_geom_voronoiCreateEdge(site, rSite, null, vertex);\n    d3_geom_voronoiAttachCircle(lArc);\n    d3_geom_voronoiAttachCircle(rArc);\n  }\n  function d3_geom_voronoiLeftBreakPoint(arc, directrix) {\n    var site = arc.site, rfocx = site.x, rfocy = site.y, pby2 = rfocy - directrix;\n    if (!pby2) return rfocx;\n    var lArc = arc.P;\n    if (!lArc) return -Infinity;\n    site = lArc.site;\n    var lfocx = site.x, lfocy = site.y, plby2 = lfocy - directrix;\n    if (!plby2) return lfocx;\n    var hl = lfocx - rfocx, aby2 = 1 / pby2 - 1 / plby2, b = hl / plby2;\n    if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n    return (rfocx + lfocx) / 2;\n  }\n  function d3_geom_voronoiRightBreakPoint(arc, directrix) {\n    var rArc = arc.N;\n    if (rArc) return d3_geom_voronoiLeftBreakPoint(rArc, directrix);\n    var site = arc.site;\n    return site.y === directrix ? site.x : Infinity;\n  }\n  function d3_geom_voronoiCell(site) {\n    this.site = site;\n    this.edges = [];\n  }\n  d3_geom_voronoiCell.prototype.prepare = function() {\n    var halfEdges = this.edges, iHalfEdge = halfEdges.length, edge;\n    while (iHalfEdge--) {\n      edge = halfEdges[iHalfEdge].edge;\n      if (!edge.b || !edge.a) halfEdges.splice(iHalfEdge, 1);\n    }\n    halfEdges.sort(d3_geom_voronoiHalfEdgeOrder);\n    return halfEdges.length;\n  };\n  function d3_geom_voronoiCloseCells(extent) {\n    var x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], x2, y2, x3, y3, cells = d3_geom_voronoiCells, iCell = cells.length, cell, iHalfEdge, halfEdges, nHalfEdges, start, end;\n    while (iCell--) {\n      cell = cells[iCell];\n      if (!cell || !cell.prepare()) continue;\n      halfEdges = cell.edges;\n      nHalfEdges = halfEdges.length;\n      iHalfEdge = 0;\n      while (iHalfEdge < nHalfEdges) {\n        end = halfEdges[iHalfEdge].end(), x3 = end.x, y3 = end.y;\n        start = halfEdges[++iHalfEdge % nHalfEdges].start(), x2 = start.x, y2 = start.y;\n        if (abs(x3 - x2) > ε || abs(y3 - y2) > ε) {\n          halfEdges.splice(iHalfEdge, 0, new d3_geom_voronoiHalfEdge(d3_geom_voronoiCreateBorderEdge(cell.site, end, abs(x3 - x0) < ε && y1 - y3 > ε ? {\n            x: x0,\n            y: abs(x2 - x0) < ε ? y2 : y1\n          } : abs(y3 - y1) < ε && x1 - x3 > ε ? {\n            x: abs(y2 - y1) < ε ? x2 : x1,\n            y: y1\n          } : abs(x3 - x1) < ε && y3 - y0 > ε ? {\n            x: x1,\n            y: abs(x2 - x1) < ε ? y2 : y0\n          } : abs(y3 - y0) < ε && x3 - x0 > ε ? {\n            x: abs(y2 - y0) < ε ? x2 : x0,\n            y: y0\n          } : null), cell.site, null));\n          ++nHalfEdges;\n        }\n      }\n    }\n  }\n  function d3_geom_voronoiHalfEdgeOrder(a, b) {\n    return b.angle - a.angle;\n  }\n  function d3_geom_voronoiCircle() {\n    d3_geom_voronoiRedBlackNode(this);\n    this.x = this.y = this.arc = this.site = this.cy = null;\n  }\n  function d3_geom_voronoiAttachCircle(arc) {\n    var lArc = arc.P, rArc = arc.N;\n    if (!lArc || !rArc) return;\n    var lSite = lArc.site, cSite = arc.site, rSite = rArc.site;\n    if (lSite === rSite) return;\n    var bx = cSite.x, by = cSite.y, ax = lSite.x - bx, ay = lSite.y - by, cx = rSite.x - bx, cy = rSite.y - by;\n    var d = 2 * (ax * cy - ay * cx);\n    if (d >= -ε2) return;\n    var ha = ax * ax + ay * ay, hc = cx * cx + cy * cy, x = (cy * ha - ay * hc) / d, y = (ax * hc - cx * ha) / d, cy = y + by;\n    var circle = d3_geom_voronoiCirclePool.pop() || new d3_geom_voronoiCircle();\n    circle.arc = arc;\n    circle.site = cSite;\n    circle.x = x + bx;\n    circle.y = cy + Math.sqrt(x * x + y * y);\n    circle.cy = cy;\n    arc.circle = circle;\n    var before = null, node = d3_geom_voronoiCircles._;\n    while (node) {\n      if (circle.y < node.y || circle.y === node.y && circle.x <= node.x) {\n        if (node.L) node = node.L; else {\n          before = node.P;\n          break;\n        }\n      } else {\n        if (node.R) node = node.R; else {\n          before = node;\n          break;\n        }\n      }\n    }\n    d3_geom_voronoiCircles.insert(before, circle);\n    if (!before) d3_geom_voronoiFirstCircle = circle;\n  }\n  function d3_geom_voronoiDetachCircle(arc) {\n    var circle = arc.circle;\n    if (circle) {\n      if (!circle.P) d3_geom_voronoiFirstCircle = circle.N;\n      d3_geom_voronoiCircles.remove(circle);\n      d3_geom_voronoiCirclePool.push(circle);\n      d3_geom_voronoiRedBlackNode(circle);\n      arc.circle = null;\n    }\n  }\n  function d3_geom_voronoiClipEdges(extent) {\n    var edges = d3_geom_voronoiEdges, clip = d3_geom_clipLine(extent[0][0], extent[0][1], extent[1][0], extent[1][1]), i = edges.length, e;\n    while (i--) {\n      e = edges[i];\n      if (!d3_geom_voronoiConnectEdge(e, extent) || !clip(e) || abs(e.a.x - e.b.x) < ε && abs(e.a.y - e.b.y) < ε) {\n        e.a = e.b = null;\n        edges.splice(i, 1);\n      }\n    }\n  }\n  function d3_geom_voronoiConnectEdge(edge, extent) {\n    var vb = edge.b;\n    if (vb) return true;\n    var va = edge.a, x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], lSite = edge.l, rSite = edge.r, lx = lSite.x, ly = lSite.y, rx = rSite.x, ry = rSite.y, fx = (lx + rx) / 2, fy = (ly + ry) / 2, fm, fb;\n    if (ry === ly) {\n      if (fx < x0 || fx >= x1) return;\n      if (lx > rx) {\n        if (!va) va = {\n          x: fx,\n          y: y0\n        }; else if (va.y >= y1) return;\n        vb = {\n          x: fx,\n          y: y1\n        };\n      } else {\n        if (!va) va = {\n          x: fx,\n          y: y1\n        }; else if (va.y < y0) return;\n        vb = {\n          x: fx,\n          y: y0\n        };\n      }\n    } else {\n      fm = (lx - rx) / (ry - ly);\n      fb = fy - fm * fx;\n      if (fm < -1 || fm > 1) {\n        if (lx > rx) {\n          if (!va) va = {\n            x: (y0 - fb) / fm,\n            y: y0\n          }; else if (va.y >= y1) return;\n          vb = {\n            x: (y1 - fb) / fm,\n            y: y1\n          };\n        } else {\n          if (!va) va = {\n            x: (y1 - fb) / fm,\n            y: y1\n          }; else if (va.y < y0) return;\n          vb = {\n            x: (y0 - fb) / fm,\n            y: y0\n          };\n        }\n      } else {\n        if (ly < ry) {\n          if (!va) va = {\n            x: x0,\n            y: fm * x0 + fb\n          }; else if (va.x >= x1) return;\n          vb = {\n            x: x1,\n            y: fm * x1 + fb\n          };\n        } else {\n          if (!va) va = {\n            x: x1,\n            y: fm * x1 + fb\n          }; else if (va.x < x0) return;\n          vb = {\n            x: x0,\n            y: fm * x0 + fb\n          };\n        }\n      }\n    }\n    edge.a = va;\n    edge.b = vb;\n    return true;\n  }\n  function d3_geom_voronoiEdge(lSite, rSite) {\n    this.l = lSite;\n    this.r = rSite;\n    this.a = this.b = null;\n  }\n  function d3_geom_voronoiCreateEdge(lSite, rSite, va, vb) {\n    var edge = new d3_geom_voronoiEdge(lSite, rSite);\n    d3_geom_voronoiEdges.push(edge);\n    if (va) d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, va);\n    if (vb) d3_geom_voronoiSetEdgeEnd(edge, rSite, lSite, vb);\n    d3_geom_voronoiCells[lSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, lSite, rSite));\n    d3_geom_voronoiCells[rSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, rSite, lSite));\n    return edge;\n  }\n  function d3_geom_voronoiCreateBorderEdge(lSite, va, vb) {\n    var edge = new d3_geom_voronoiEdge(lSite, null);\n    edge.a = va;\n    edge.b = vb;\n    d3_geom_voronoiEdges.push(edge);\n    return edge;\n  }\n  function d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, vertex) {\n    if (!edge.a && !edge.b) {\n      edge.a = vertex;\n      edge.l = lSite;\n      edge.r = rSite;\n    } else if (edge.l === rSite) {\n      edge.b = vertex;\n    } else {\n      edge.a = vertex;\n    }\n  }\n  function d3_geom_voronoiHalfEdge(edge, lSite, rSite) {\n    var va = edge.a, vb = edge.b;\n    this.edge = edge;\n    this.site = lSite;\n    this.angle = rSite ? Math.atan2(rSite.y - lSite.y, rSite.x - lSite.x) : edge.l === lSite ? Math.atan2(vb.x - va.x, va.y - vb.y) : Math.atan2(va.x - vb.x, vb.y - va.y);\n  }\n  d3_geom_voronoiHalfEdge.prototype = {\n    start: function() {\n      return this.edge.l === this.site ? this.edge.a : this.edge.b;\n    },\n    end: function() {\n      return this.edge.l === this.site ? this.edge.b : this.edge.a;\n    }\n  };\n  function d3_geom_voronoiRedBlackTree() {\n    this._ = null;\n  }\n  function d3_geom_voronoiRedBlackNode(node) {\n    node.U = node.C = node.L = node.R = node.P = node.N = null;\n  }\n  d3_geom_voronoiRedBlackTree.prototype = {\n    insert: function(after, node) {\n      var parent, grandpa, uncle;\n      if (after) {\n        node.P = after;\n        node.N = after.N;\n        if (after.N) after.N.P = node;\n        after.N = node;\n        if (after.R) {\n          after = after.R;\n          while (after.L) after = after.L;\n          after.L = node;\n        } else {\n          after.R = node;\n        }\n        parent = after;\n      } else if (this._) {\n        after = d3_geom_voronoiRedBlackFirst(this._);\n        node.P = null;\n        node.N = after;\n        after.P = after.L = node;\n        parent = after;\n      } else {\n        node.P = node.N = null;\n        this._ = node;\n        parent = null;\n      }\n      node.L = node.R = null;\n      node.U = parent;\n      node.C = true;\n      after = node;\n      while (parent && parent.C) {\n        grandpa = parent.U;\n        if (parent === grandpa.L) {\n          uncle = grandpa.R;\n          if (uncle && uncle.C) {\n            parent.C = uncle.C = false;\n            grandpa.C = true;\n            after = grandpa;\n          } else {\n            if (after === parent.R) {\n              d3_geom_voronoiRedBlackRotateLeft(this, parent);\n              after = parent;\n              parent = after.U;\n            }\n            parent.C = false;\n            grandpa.C = true;\n            d3_geom_voronoiRedBlackRotateRight(this, grandpa);\n          }\n        } else {\n          uncle = grandpa.L;\n          if (uncle && uncle.C) {\n            parent.C = uncle.C = false;\n            grandpa.C = true;\n            after = grandpa;\n          } else {\n            if (after === parent.L) {\n              d3_geom_voronoiRedBlackRotateRight(this, parent);\n              after = parent;\n              parent = after.U;\n            }\n            parent.C = false;\n            grandpa.C = true;\n            d3_geom_voronoiRedBlackRotateLeft(this, grandpa);\n          }\n        }\n        parent = after.U;\n      }\n      this._.C = false;\n    },\n    remove: function(node) {\n      if (node.N) node.N.P = node.P;\n      if (node.P) node.P.N = node.N;\n      node.N = node.P = null;\n      var parent = node.U, sibling, left = node.L, right = node.R, next, red;\n      if (!left) next = right; else if (!right) next = left; else next = d3_geom_voronoiRedBlackFirst(right);\n      if (parent) {\n        if (parent.L === node) parent.L = next; else parent.R = next;\n      } else {\n        this._ = next;\n      }\n      if (left && right) {\n        red = next.C;\n        next.C = node.C;\n        next.L = left;\n        left.U = next;\n        if (next !== right) {\n          parent = next.U;\n          next.U = node.U;\n          node = next.R;\n          parent.L = node;\n          next.R = right;\n          right.U = next;\n        } else {\n          next.U = parent;\n          parent = next;\n          node = next.R;\n        }\n      } else {\n        red = node.C;\n        node = next;\n      }\n      if (node) node.U = parent;\n      if (red) return;\n      if (node && node.C) {\n        node.C = false;\n        return;\n      }\n      do {\n        if (node === this._) break;\n        if (node === parent.L) {\n          sibling = parent.R;\n          if (sibling.C) {\n            sibling.C = false;\n            parent.C = true;\n            d3_geom_voronoiRedBlackRotateLeft(this, parent);\n            sibling = parent.R;\n          }\n          if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {\n            if (!sibling.R || !sibling.R.C) {\n              sibling.L.C = false;\n              sibling.C = true;\n              d3_geom_voronoiRedBlackRotateRight(this, sibling);\n              sibling = parent.R;\n            }\n            sibling.C = parent.C;\n            parent.C = sibling.R.C = false;\n            d3_geom_voronoiRedBlackRotateLeft(this, parent);\n            node = this._;\n            break;\n          }\n        } else {\n          sibling = parent.L;\n          if (sibling.C) {\n            sibling.C = false;\n            parent.C = true;\n            d3_geom_voronoiRedBlackRotateRight(this, parent);\n            sibling = parent.L;\n          }\n          if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {\n            if (!sibling.L || !sibling.L.C) {\n              sibling.R.C = false;\n              sibling.C = true;\n              d3_geom_voronoiRedBlackRotateLeft(this, sibling);\n              sibling = parent.L;\n            }\n            sibling.C = parent.C;\n            parent.C = sibling.L.C = false;\n            d3_geom_voronoiRedBlackRotateRight(this, parent);\n            node = this._;\n            break;\n          }\n        }\n        sibling.C = true;\n        node = parent;\n        parent = parent.U;\n      } while (!node.C);\n      if (node) node.C = false;\n    }\n  };\n  function d3_geom_voronoiRedBlackRotateLeft(tree, node) {\n    var p = node, q = node.R, parent = p.U;\n    if (parent) {\n      if (parent.L === p) parent.L = q; else parent.R = q;\n    } else {\n      tree._ = q;\n    }\n    q.U = parent;\n    p.U = q;\n    p.R = q.L;\n    if (p.R) p.R.U = p;\n    q.L = p;\n  }\n  function d3_geom_voronoiRedBlackRotateRight(tree, node) {\n    var p = node, q = node.L, parent = p.U;\n    if (parent) {\n      if (parent.L === p) parent.L = q; else parent.R = q;\n    } else {\n      tree._ = q;\n    }\n    q.U = parent;\n    p.U = q;\n    p.L = q.R;\n    if (p.L) p.L.U = p;\n    q.R = p;\n  }\n  function d3_geom_voronoiRedBlackFirst(node) {\n    while (node.L) node = node.L;\n    return node;\n  }\n  function d3_geom_voronoi(sites, bbox) {\n    var site = sites.sort(d3_geom_voronoiVertexOrder).pop(), x0, y0, circle;\n    d3_geom_voronoiEdges = [];\n    d3_geom_voronoiCells = new Array(sites.length);\n    d3_geom_voronoiBeaches = new d3_geom_voronoiRedBlackTree();\n    d3_geom_voronoiCircles = new d3_geom_voronoiRedBlackTree();\n    while (true) {\n      circle = d3_geom_voronoiFirstCircle;\n      if (site && (!circle || site.y < circle.y || site.y === circle.y && site.x < circle.x)) {\n        if (site.x !== x0 || site.y !== y0) {\n          d3_geom_voronoiCells[site.i] = new d3_geom_voronoiCell(site);\n          d3_geom_voronoiAddBeach(site);\n          x0 = site.x, y0 = site.y;\n        }\n        site = sites.pop();\n      } else if (circle) {\n        d3_geom_voronoiRemoveBeach(circle.arc);\n      } else {\n        break;\n      }\n    }\n    if (bbox) d3_geom_voronoiClipEdges(bbox), d3_geom_voronoiCloseCells(bbox);\n    var diagram = {\n      cells: d3_geom_voronoiCells,\n      edges: d3_geom_voronoiEdges\n    };\n    d3_geom_voronoiBeaches = d3_geom_voronoiCircles = d3_geom_voronoiEdges = d3_geom_voronoiCells = null;\n    return diagram;\n  }\n  function d3_geom_voronoiVertexOrder(a, b) {\n    return b.y - a.y || b.x - a.x;\n  }\n  d3.geom.voronoi = function(points) {\n    var x = d3_geom_pointX, y = d3_geom_pointY, fx = x, fy = y, clipExtent = d3_geom_voronoiClipExtent;\n    if (points) return voronoi(points);\n    function voronoi(data) {\n      var polygons = new Array(data.length), x0 = clipExtent[0][0], y0 = clipExtent[0][1], x1 = clipExtent[1][0], y1 = clipExtent[1][1];\n      d3_geom_voronoi(sites(data), clipExtent).cells.forEach(function(cell, i) {\n        var edges = cell.edges, site = cell.site, polygon = polygons[i] = edges.length ? edges.map(function(e) {\n          var s = e.start();\n          return [ s.x, s.y ];\n        }) : site.x >= x0 && site.x <= x1 && site.y >= y0 && site.y <= y1 ? [ [ x0, y1 ], [ x1, y1 ], [ x1, y0 ], [ x0, y0 ] ] : [];\n        polygon.point = data[i];\n      });\n      return polygons;\n    }\n    function sites(data) {\n      return data.map(function(d, i) {\n        return {\n          x: Math.round(fx(d, i) / ε) * ε,\n          y: Math.round(fy(d, i) / ε) * ε,\n          i: i\n        };\n      });\n    }\n    voronoi.links = function(data) {\n      return d3_geom_voronoi(sites(data)).edges.filter(function(edge) {\n        return edge.l && edge.r;\n      }).map(function(edge) {\n        return {\n          source: data[edge.l.i],\n          target: data[edge.r.i]\n        };\n      });\n    };\n    voronoi.triangles = function(data) {\n      var triangles = [];\n      d3_geom_voronoi(sites(data)).cells.forEach(function(cell, i) {\n        var site = cell.site, edges = cell.edges.sort(d3_geom_voronoiHalfEdgeOrder), j = -1, m = edges.length, e0, s0, e1 = edges[m - 1].edge, s1 = e1.l === site ? e1.r : e1.l;\n        while (++j < m) {\n          e0 = e1;\n          s0 = s1;\n          e1 = edges[j].edge;\n          s1 = e1.l === site ? e1.r : e1.l;\n          if (i < s0.i && i < s1.i && d3_geom_voronoiTriangleArea(site, s0, s1) < 0) {\n            triangles.push([ data[i], data[s0.i], data[s1.i] ]);\n          }\n        }\n      });\n      return triangles;\n    };\n    voronoi.x = function(_) {\n      return arguments.length ? (fx = d3_functor(x = _), voronoi) : x;\n    };\n    voronoi.y = function(_) {\n      return arguments.length ? (fy = d3_functor(y = _), voronoi) : y;\n    };\n    voronoi.clipExtent = function(_) {\n      if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent;\n      clipExtent = _ == null ? d3_geom_voronoiClipExtent : _;\n      return voronoi;\n    };\n    voronoi.size = function(_) {\n      if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent && clipExtent[1];\n      return voronoi.clipExtent(_ && [ [ 0, 0 ], _ ]);\n    };\n    return voronoi;\n  };\n  var d3_geom_voronoiClipExtent = [ [ -1e6, -1e6 ], [ 1e6, 1e6 ] ];\n  function d3_geom_voronoiTriangleArea(a, b, c) {\n    return (a.x - c.x) * (b.y - a.y) - (a.x - b.x) * (c.y - a.y);\n  }\n  d3.geom.delaunay = function(vertices) {\n    return d3.geom.voronoi().triangles(vertices);\n  };\n  d3.geom.quadtree = function(points, x1, y1, x2, y2) {\n    var x = d3_geom_pointX, y = d3_geom_pointY, compat;\n    if (compat = arguments.length) {\n      x = d3_geom_quadtreeCompatX;\n      y = d3_geom_quadtreeCompatY;\n      if (compat === 3) {\n        y2 = y1;\n        x2 = x1;\n        y1 = x1 = 0;\n      }\n      return quadtree(points);\n    }\n    function quadtree(data) {\n      var d, fx = d3_functor(x), fy = d3_functor(y), xs, ys, i, n, x1_, y1_, x2_, y2_;\n      if (x1 != null) {\n        x1_ = x1, y1_ = y1, x2_ = x2, y2_ = y2;\n      } else {\n        x2_ = y2_ = -(x1_ = y1_ = Infinity);\n        xs = [], ys = [];\n        n = data.length;\n        if (compat) for (i = 0; i < n; ++i) {\n          d = data[i];\n          if (d.x < x1_) x1_ = d.x;\n          if (d.y < y1_) y1_ = d.y;\n          if (d.x > x2_) x2_ = d.x;\n          if (d.y > y2_) y2_ = d.y;\n          xs.push(d.x);\n          ys.push(d.y);\n        } else for (i = 0; i < n; ++i) {\n          var x_ = +fx(d = data[i], i), y_ = +fy(d, i);\n          if (x_ < x1_) x1_ = x_;\n          if (y_ < y1_) y1_ = y_;\n          if (x_ > x2_) x2_ = x_;\n          if (y_ > y2_) y2_ = y_;\n          xs.push(x_);\n          ys.push(y_);\n        }\n      }\n      var dx = x2_ - x1_, dy = y2_ - y1_;\n      if (dx > dy) y2_ = y1_ + dx; else x2_ = x1_ + dy;\n      function insert(n, d, x, y, x1, y1, x2, y2) {\n        if (isNaN(x) || isNaN(y)) return;\n        if (n.leaf) {\n          var nx = n.x, ny = n.y;\n          if (nx != null) {\n            if (abs(nx - x) + abs(ny - y) < .01) {\n              insertChild(n, d, x, y, x1, y1, x2, y2);\n            } else {\n              var nPoint = n.point;\n              n.x = n.y = n.point = null;\n              insertChild(n, nPoint, nx, ny, x1, y1, x2, y2);\n              insertChild(n, d, x, y, x1, y1, x2, y2);\n            }\n          } else {\n            n.x = x, n.y = y, n.point = d;\n          }\n        } else {\n          insertChild(n, d, x, y, x1, y1, x2, y2);\n        }\n      }\n      function insertChild(n, d, x, y, x1, y1, x2, y2) {\n        var xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym, i = below << 1 | right;\n        n.leaf = false;\n        n = n.nodes[i] || (n.nodes[i] = d3_geom_quadtreeNode());\n        if (right) x1 = xm; else x2 = xm;\n        if (below) y1 = ym; else y2 = ym;\n        insert(n, d, x, y, x1, y1, x2, y2);\n      }\n      var root = d3_geom_quadtreeNode();\n      root.add = function(d) {\n        insert(root, d, +fx(d, ++i), +fy(d, i), x1_, y1_, x2_, y2_);\n      };\n      root.visit = function(f) {\n        d3_geom_quadtreeVisit(f, root, x1_, y1_, x2_, y2_);\n      };\n      root.find = function(point) {\n        return d3_geom_quadtreeFind(root, point[0], point[1], x1_, y1_, x2_, y2_);\n      };\n      i = -1;\n      if (x1 == null) {\n        while (++i < n) {\n          insert(root, data[i], xs[i], ys[i], x1_, y1_, x2_, y2_);\n        }\n        --i;\n      } else data.forEach(root.add);\n      xs = ys = data = d = null;\n      return root;\n    }\n    quadtree.x = function(_) {\n      return arguments.length ? (x = _, quadtree) : x;\n    };\n    quadtree.y = function(_) {\n      return arguments.length ? (y = _, quadtree) : y;\n    };\n    quadtree.extent = function(_) {\n      if (!arguments.length) return x1 == null ? null : [ [ x1, y1 ], [ x2, y2 ] ];\n      if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = +_[0][0], y1 = +_[0][1], x2 = +_[1][0], \n      y2 = +_[1][1];\n      return quadtree;\n    };\n    quadtree.size = function(_) {\n      if (!arguments.length) return x1 == null ? null : [ x2 - x1, y2 - y1 ];\n      if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = y1 = 0, x2 = +_[0], y2 = +_[1];\n      return quadtree;\n    };\n    return quadtree;\n  };\n  function d3_geom_quadtreeCompatX(d) {\n    return d.x;\n  }\n  function d3_geom_quadtreeCompatY(d) {\n    return d.y;\n  }\n  function d3_geom_quadtreeNode() {\n    return {\n      leaf: true,\n      nodes: [],\n      point: null,\n      x: null,\n      y: null\n    };\n  }\n  function d3_geom_quadtreeVisit(f, node, x1, y1, x2, y2) {\n    if (!f(node, x1, y1, x2, y2)) {\n      var sx = (x1 + x2) * .5, sy = (y1 + y2) * .5, children = node.nodes;\n      if (children[0]) d3_geom_quadtreeVisit(f, children[0], x1, y1, sx, sy);\n      if (children[1]) d3_geom_quadtreeVisit(f, children[1], sx, y1, x2, sy);\n      if (children[2]) d3_geom_quadtreeVisit(f, children[2], x1, sy, sx, y2);\n      if (children[3]) d3_geom_quadtreeVisit(f, children[3], sx, sy, x2, y2);\n    }\n  }\n  function d3_geom_quadtreeFind(root, x, y, x0, y0, x3, y3) {\n    var minDistance2 = Infinity, closestPoint;\n    (function find(node, x1, y1, x2, y2) {\n      if (x1 > x3 || y1 > y3 || x2 < x0 || y2 < y0) return;\n      if (point = node.point) {\n        var point, dx = x - node.x, dy = y - node.y, distance2 = dx * dx + dy * dy;\n        if (distance2 < minDistance2) {\n          var distance = Math.sqrt(minDistance2 = distance2);\n          x0 = x - distance, y0 = y - distance;\n          x3 = x + distance, y3 = y + distance;\n          closestPoint = point;\n        }\n      }\n      var children = node.nodes, xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym;\n      for (var i = below << 1 | right, j = i + 4; i < j; ++i) {\n        if (node = children[i & 3]) switch (i & 3) {\n         case 0:\n          find(node, x1, y1, xm, ym);\n          break;\n\n         case 1:\n          find(node, xm, y1, x2, ym);\n          break;\n\n         case 2:\n          find(node, x1, ym, xm, y2);\n          break;\n\n         case 3:\n          find(node, xm, ym, x2, y2);\n          break;\n        }\n      }\n    })(root, x0, y0, x3, y3);\n    return closestPoint;\n  }\n  d3.interpolateRgb = d3_interpolateRgb;\n  function d3_interpolateRgb(a, b) {\n    a = d3.rgb(a);\n    b = d3.rgb(b);\n    var ar = a.r, ag = a.g, ab = a.b, br = b.r - ar, bg = b.g - ag, bb = b.b - ab;\n    return function(t) {\n      return \"#\" + d3_rgb_hex(Math.round(ar + br * t)) + d3_rgb_hex(Math.round(ag + bg * t)) + d3_rgb_hex(Math.round(ab + bb * t));\n    };\n  }\n  d3.interpolateObject = d3_interpolateObject;\n  function d3_interpolateObject(a, b) {\n    var i = {}, c = {}, k;\n    for (k in a) {\n      if (k in b) {\n        i[k] = d3_interpolate(a[k], b[k]);\n      } else {\n        c[k] = a[k];\n      }\n    }\n    for (k in b) {\n      if (!(k in a)) {\n        c[k] = b[k];\n      }\n    }\n    return function(t) {\n      for (k in i) c[k] = i[k](t);\n      return c;\n    };\n  }\n  d3.interpolateNumber = d3_interpolateNumber;\n  function d3_interpolateNumber(a, b) {\n    a = +a, b = +b;\n    return function(t) {\n      return a * (1 - t) + b * t;\n    };\n  }\n  d3.interpolateString = d3_interpolateString;\n  function d3_interpolateString(a, b) {\n    var bi = d3_interpolate_numberA.lastIndex = d3_interpolate_numberB.lastIndex = 0, am, bm, bs, i = -1, s = [], q = [];\n    a = a + \"\", b = b + \"\";\n    while ((am = d3_interpolate_numberA.exec(a)) && (bm = d3_interpolate_numberB.exec(b))) {\n      if ((bs = bm.index) > bi) {\n        bs = b.slice(bi, bs);\n        if (s[i]) s[i] += bs; else s[++i] = bs;\n      }\n      if ((am = am[0]) === (bm = bm[0])) {\n        if (s[i]) s[i] += bm; else s[++i] = bm;\n      } else {\n        s[++i] = null;\n        q.push({\n          i: i,\n          x: d3_interpolateNumber(am, bm)\n        });\n      }\n      bi = d3_interpolate_numberB.lastIndex;\n    }\n    if (bi < b.length) {\n      bs = b.slice(bi);\n      if (s[i]) s[i] += bs; else s[++i] = bs;\n    }\n    return s.length < 2 ? q[0] ? (b = q[0].x, function(t) {\n      return b(t) + \"\";\n    }) : function() {\n      return b;\n    } : (b = q.length, function(t) {\n      for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n      return s.join(\"\");\n    });\n  }\n  var d3_interpolate_numberA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g, d3_interpolate_numberB = new RegExp(d3_interpolate_numberA.source, \"g\");\n  d3.interpolate = d3_interpolate;\n  function d3_interpolate(a, b) {\n    var i = d3.interpolators.length, f;\n    while (--i >= 0 && !(f = d3.interpolators[i](a, b))) ;\n    return f;\n  }\n  d3.interpolators = [ function(a, b) {\n    var t = typeof b;\n    return (t === \"string\" ? d3_rgb_names.has(b.toLowerCase()) || /^(#|rgb\\(|hsl\\()/i.test(b) ? d3_interpolateRgb : d3_interpolateString : b instanceof d3_color ? d3_interpolateRgb : Array.isArray(b) ? d3_interpolateArray : t === \"object\" && isNaN(b) ? d3_interpolateObject : d3_interpolateNumber)(a, b);\n  } ];\n  d3.interpolateArray = d3_interpolateArray;\n  function d3_interpolateArray(a, b) {\n    var x = [], c = [], na = a.length, nb = b.length, n0 = Math.min(a.length, b.length), i;\n    for (i = 0; i < n0; ++i) x.push(d3_interpolate(a[i], b[i]));\n    for (;i < na; ++i) c[i] = a[i];\n    for (;i < nb; ++i) c[i] = b[i];\n    return function(t) {\n      for (i = 0; i < n0; ++i) c[i] = x[i](t);\n      return c;\n    };\n  }\n  var d3_ease_default = function() {\n    return d3_identity;\n  };\n  var d3_ease = d3.map({\n    linear: d3_ease_default,\n    poly: d3_ease_poly,\n    quad: function() {\n      return d3_ease_quad;\n    },\n    cubic: function() {\n      return d3_ease_cubic;\n    },\n    sin: function() {\n      return d3_ease_sin;\n    },\n    exp: function() {\n      return d3_ease_exp;\n    },\n    circle: function() {\n      return d3_ease_circle;\n    },\n    elastic: d3_ease_elastic,\n    back: d3_ease_back,\n    bounce: function() {\n      return d3_ease_bounce;\n    }\n  });\n  var d3_ease_mode = d3.map({\n    \"in\": d3_identity,\n    out: d3_ease_reverse,\n    \"in-out\": d3_ease_reflect,\n    \"out-in\": function(f) {\n      return d3_ease_reflect(d3_ease_reverse(f));\n    }\n  });\n  d3.ease = function(name) {\n    var i = name.indexOf(\"-\"), t = i >= 0 ? name.slice(0, i) : name, m = i >= 0 ? name.slice(i + 1) : \"in\";\n    t = d3_ease.get(t) || d3_ease_default;\n    m = d3_ease_mode.get(m) || d3_identity;\n    return d3_ease_clamp(m(t.apply(null, d3_arraySlice.call(arguments, 1))));\n  };\n  function d3_ease_clamp(f) {\n    return function(t) {\n      return t <= 0 ? 0 : t >= 1 ? 1 : f(t);\n    };\n  }\n  function d3_ease_reverse(f) {\n    return function(t) {\n      return 1 - f(1 - t);\n    };\n  }\n  function d3_ease_reflect(f) {\n    return function(t) {\n      return .5 * (t < .5 ? f(2 * t) : 2 - f(2 - 2 * t));\n    };\n  }\n  function d3_ease_quad(t) {\n    return t * t;\n  }\n  function d3_ease_cubic(t) {\n    return t * t * t;\n  }\n  function d3_ease_cubicInOut(t) {\n    if (t <= 0) return 0;\n    if (t >= 1) return 1;\n    var t2 = t * t, t3 = t2 * t;\n    return 4 * (t < .5 ? t3 : 3 * (t - t2) + t3 - .75);\n  }\n  function d3_ease_poly(e) {\n    return function(t) {\n      return Math.pow(t, e);\n    };\n  }\n  function d3_ease_sin(t) {\n    return 1 - Math.cos(t * halfπ);\n  }\n  function d3_ease_exp(t) {\n    return Math.pow(2, 10 * (t - 1));\n  }\n  function d3_ease_circle(t) {\n    return 1 - Math.sqrt(1 - t * t);\n  }\n  function d3_ease_elastic(a, p) {\n    var s;\n    if (arguments.length < 2) p = .45;\n    if (arguments.length) s = p / τ * Math.asin(1 / a); else a = 1, s = p / 4;\n    return function(t) {\n      return 1 + a * Math.pow(2, -10 * t) * Math.sin((t - s) * τ / p);\n    };\n  }\n  function d3_ease_back(s) {\n    if (!s) s = 1.70158;\n    return function(t) {\n      return t * t * ((s + 1) * t - s);\n    };\n  }\n  function d3_ease_bounce(t) {\n    return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375;\n  }\n  d3.interpolateHcl = d3_interpolateHcl;\n  function d3_interpolateHcl(a, b) {\n    a = d3.hcl(a);\n    b = d3.hcl(b);\n    var ah = a.h, ac = a.c, al = a.l, bh = b.h - ah, bc = b.c - ac, bl = b.l - al;\n    if (isNaN(bc)) bc = 0, ac = isNaN(ac) ? b.c : ac;\n    if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;\n    return function(t) {\n      return d3_hcl_lab(ah + bh * t, ac + bc * t, al + bl * t) + \"\";\n    };\n  }\n  d3.interpolateHsl = d3_interpolateHsl;\n  function d3_interpolateHsl(a, b) {\n    a = d3.hsl(a);\n    b = d3.hsl(b);\n    var ah = a.h, as = a.s, al = a.l, bh = b.h - ah, bs = b.s - as, bl = b.l - al;\n    if (isNaN(bs)) bs = 0, as = isNaN(as) ? b.s : as;\n    if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;\n    return function(t) {\n      return d3_hsl_rgb(ah + bh * t, as + bs * t, al + bl * t) + \"\";\n    };\n  }\n  d3.interpolateLab = d3_interpolateLab;\n  function d3_interpolateLab(a, b) {\n    a = d3.lab(a);\n    b = d3.lab(b);\n    var al = a.l, aa = a.a, ab = a.b, bl = b.l - al, ba = b.a - aa, bb = b.b - ab;\n    return function(t) {\n      return d3_lab_rgb(al + bl * t, aa + ba * t, ab + bb * t) + \"\";\n    };\n  }\n  d3.interpolateRound = d3_interpolateRound;\n  function d3_interpolateRound(a, b) {\n    b -= a;\n    return function(t) {\n      return Math.round(a + b * t);\n    };\n  }\n  d3.transform = function(string) {\n    var g = d3_document.createElementNS(d3.ns.prefix.svg, \"g\");\n    return (d3.transform = function(string) {\n      if (string != null) {\n        g.setAttribute(\"transform\", string);\n        var t = g.transform.baseVal.consolidate();\n      }\n      return new d3_transform(t ? t.matrix : d3_transformIdentity);\n    })(string);\n  };\n  function d3_transform(m) {\n    var r0 = [ m.a, m.b ], r1 = [ m.c, m.d ], kx = d3_transformNormalize(r0), kz = d3_transformDot(r0, r1), ky = d3_transformNormalize(d3_transformCombine(r1, r0, -kz)) || 0;\n    if (r0[0] * r1[1] < r1[0] * r0[1]) {\n      r0[0] *= -1;\n      r0[1] *= -1;\n      kx *= -1;\n      kz *= -1;\n    }\n    this.rotate = (kx ? Math.atan2(r0[1], r0[0]) : Math.atan2(-r1[0], r1[1])) * d3_degrees;\n    this.translate = [ m.e, m.f ];\n    this.scale = [ kx, ky ];\n    this.skew = ky ? Math.atan2(kz, ky) * d3_degrees : 0;\n  }\n  d3_transform.prototype.toString = function() {\n    return \"translate(\" + this.translate + \")rotate(\" + this.rotate + \")skewX(\" + this.skew + \")scale(\" + this.scale + \")\";\n  };\n  function d3_transformDot(a, b) {\n    return a[0] * b[0] + a[1] * b[1];\n  }\n  function d3_transformNormalize(a) {\n    var k = Math.sqrt(d3_transformDot(a, a));\n    if (k) {\n      a[0] /= k;\n      a[1] /= k;\n    }\n    return k;\n  }\n  function d3_transformCombine(a, b, k) {\n    a[0] += k * b[0];\n    a[1] += k * b[1];\n    return a;\n  }\n  var d3_transformIdentity = {\n    a: 1,\n    b: 0,\n    c: 0,\n    d: 1,\n    e: 0,\n    f: 0\n  };\n  d3.interpolateTransform = d3_interpolateTransform;\n  function d3_interpolateTransformPop(s) {\n    return s.length ? s.pop() + \",\" : \"\";\n  }\n  function d3_interpolateTranslate(ta, tb, s, q) {\n    if (ta[0] !== tb[0] || ta[1] !== tb[1]) {\n      var i = s.push(\"translate(\", null, \",\", null, \")\");\n      q.push({\n        i: i - 4,\n        x: d3_interpolateNumber(ta[0], tb[0])\n      }, {\n        i: i - 2,\n        x: d3_interpolateNumber(ta[1], tb[1])\n      });\n    } else if (tb[0] || tb[1]) {\n      s.push(\"translate(\" + tb + \")\");\n    }\n  }\n  function d3_interpolateRotate(ra, rb, s, q) {\n    if (ra !== rb) {\n      if (ra - rb > 180) rb += 360; else if (rb - ra > 180) ra += 360;\n      q.push({\n        i: s.push(d3_interpolateTransformPop(s) + \"rotate(\", null, \")\") - 2,\n        x: d3_interpolateNumber(ra, rb)\n      });\n    } else if (rb) {\n      s.push(d3_interpolateTransformPop(s) + \"rotate(\" + rb + \")\");\n    }\n  }\n  function d3_interpolateSkew(wa, wb, s, q) {\n    if (wa !== wb) {\n      q.push({\n        i: s.push(d3_interpolateTransformPop(s) + \"skewX(\", null, \")\") - 2,\n        x: d3_interpolateNumber(wa, wb)\n      });\n    } else if (wb) {\n      s.push(d3_interpolateTransformPop(s) + \"skewX(\" + wb + \")\");\n    }\n  }\n  function d3_interpolateScale(ka, kb, s, q) {\n    if (ka[0] !== kb[0] || ka[1] !== kb[1]) {\n      var i = s.push(d3_interpolateTransformPop(s) + \"scale(\", null, \",\", null, \")\");\n      q.push({\n        i: i - 4,\n        x: d3_interpolateNumber(ka[0], kb[0])\n      }, {\n        i: i - 2,\n        x: d3_interpolateNumber(ka[1], kb[1])\n      });\n    } else if (kb[0] !== 1 || kb[1] !== 1) {\n      s.push(d3_interpolateTransformPop(s) + \"scale(\" + kb + \")\");\n    }\n  }\n  function d3_interpolateTransform(a, b) {\n    var s = [], q = [];\n    a = d3.transform(a), b = d3.transform(b);\n    d3_interpolateTranslate(a.translate, b.translate, s, q);\n    d3_interpolateRotate(a.rotate, b.rotate, s, q);\n    d3_interpolateSkew(a.skew, b.skew, s, q);\n    d3_interpolateScale(a.scale, b.scale, s, q);\n    a = b = null;\n    return function(t) {\n      var i = -1, n = q.length, o;\n      while (++i < n) s[(o = q[i]).i] = o.x(t);\n      return s.join(\"\");\n    };\n  }\n  function d3_uninterpolateNumber(a, b) {\n    b = (b -= a = +a) || 1 / b;\n    return function(x) {\n      return (x - a) / b;\n    };\n  }\n  function d3_uninterpolateClamp(a, b) {\n    b = (b -= a = +a) || 1 / b;\n    return function(x) {\n      return Math.max(0, Math.min(1, (x - a) / b));\n    };\n  }\n  d3.layout = {};\n  d3.layout.bundle = function() {\n    return function(links) {\n      var paths = [], i = -1, n = links.length;\n      while (++i < n) paths.push(d3_layout_bundlePath(links[i]));\n      return paths;\n    };\n  };\n  function d3_layout_bundlePath(link) {\n    var start = link.source, end = link.target, lca = d3_layout_bundleLeastCommonAncestor(start, end), points = [ start ];\n    while (start !== lca) {\n      start = start.parent;\n      points.push(start);\n    }\n    var k = points.length;\n    while (end !== lca) {\n      points.splice(k, 0, end);\n      end = end.parent;\n    }\n    return points;\n  }\n  function d3_layout_bundleAncestors(node) {\n    var ancestors = [], parent = node.parent;\n    while (parent != null) {\n      ancestors.push(node);\n      node = parent;\n      parent = parent.parent;\n    }\n    ancestors.push(node);\n    return ancestors;\n  }\n  function d3_layout_bundleLeastCommonAncestor(a, b) {\n    if (a === b) return a;\n    var aNodes = d3_layout_bundleAncestors(a), bNodes = d3_layout_bundleAncestors(b), aNode = aNodes.pop(), bNode = bNodes.pop(), sharedNode = null;\n    while (aNode === bNode) {\n      sharedNode = aNode;\n      aNode = aNodes.pop();\n      bNode = bNodes.pop();\n    }\n    return sharedNode;\n  }\n  d3.layout.chord = function() {\n    var chord = {}, chords, groups, matrix, n, padding = 0, sortGroups, sortSubgroups, sortChords;\n    function relayout() {\n      var subgroups = {}, groupSums = [], groupIndex = d3.range(n), subgroupIndex = [], k, x, x0, i, j;\n      chords = [];\n      groups = [];\n      k = 0, i = -1;\n      while (++i < n) {\n        x = 0, j = -1;\n        while (++j < n) {\n          x += matrix[i][j];\n        }\n        groupSums.push(x);\n        subgroupIndex.push(d3.range(n));\n        k += x;\n      }\n      if (sortGroups) {\n        groupIndex.sort(function(a, b) {\n          return sortGroups(groupSums[a], groupSums[b]);\n        });\n      }\n      if (sortSubgroups) {\n        subgroupIndex.forEach(function(d, i) {\n          d.sort(function(a, b) {\n            return sortSubgroups(matrix[i][a], matrix[i][b]);\n          });\n        });\n      }\n      k = (τ - padding * n) / k;\n      x = 0, i = -1;\n      while (++i < n) {\n        x0 = x, j = -1;\n        while (++j < n) {\n          var di = groupIndex[i], dj = subgroupIndex[di][j], v = matrix[di][dj], a0 = x, a1 = x += v * k;\n          subgroups[di + \"-\" + dj] = {\n            index: di,\n            subindex: dj,\n            startAngle: a0,\n            endAngle: a1,\n            value: v\n          };\n        }\n        groups[di] = {\n          index: di,\n          startAngle: x0,\n          endAngle: x,\n          value: groupSums[di]\n        };\n        x += padding;\n      }\n      i = -1;\n      while (++i < n) {\n        j = i - 1;\n        while (++j < n) {\n          var source = subgroups[i + \"-\" + j], target = subgroups[j + \"-\" + i];\n          if (source.value || target.value) {\n            chords.push(source.value < target.value ? {\n              source: target,\n              target: source\n            } : {\n              source: source,\n              target: target\n            });\n          }\n        }\n      }\n      if (sortChords) resort();\n    }\n    function resort() {\n      chords.sort(function(a, b) {\n        return sortChords((a.source.value + a.target.value) / 2, (b.source.value + b.target.value) / 2);\n      });\n    }\n    chord.matrix = function(x) {\n      if (!arguments.length) return matrix;\n      n = (matrix = x) && matrix.length;\n      chords = groups = null;\n      return chord;\n    };\n    chord.padding = function(x) {\n      if (!arguments.length) return padding;\n      padding = x;\n      chords = groups = null;\n      return chord;\n    };\n    chord.sortGroups = function(x) {\n      if (!arguments.length) return sortGroups;\n      sortGroups = x;\n      chords = groups = null;\n      return chord;\n    };\n    chord.sortSubgroups = function(x) {\n      if (!arguments.length) return sortSubgroups;\n      sortSubgroups = x;\n      chords = null;\n      return chord;\n    };\n    chord.sortChords = function(x) {\n      if (!arguments.length) return sortChords;\n      sortChords = x;\n      if (chords) resort();\n      return chord;\n    };\n    chord.chords = function() {\n      if (!chords) relayout();\n      return chords;\n    };\n    chord.groups = function() {\n      if (!groups) relayout();\n      return groups;\n    };\n    return chord;\n  };\n  d3.layout.force = function() {\n    var force = {}, event = d3.dispatch(\"start\", \"tick\", \"end\"), timer, size = [ 1, 1 ], drag, alpha, friction = .9, linkDistance = d3_layout_forceLinkDistance, linkStrength = d3_layout_forceLinkStrength, charge = -30, chargeDistance2 = d3_layout_forceChargeDistance2, gravity = .1, theta2 = .64, nodes = [], links = [], distances, strengths, charges;\n    function repulse(node) {\n      return function(quad, x1, _, x2) {\n        if (quad.point !== node) {\n          var dx = quad.cx - node.x, dy = quad.cy - node.y, dw = x2 - x1, dn = dx * dx + dy * dy;\n          if (dw * dw / theta2 < dn) {\n            if (dn < chargeDistance2) {\n              var k = quad.charge / dn;\n              node.px -= dx * k;\n              node.py -= dy * k;\n            }\n            return true;\n          }\n          if (quad.point && dn && dn < chargeDistance2) {\n            var k = quad.pointCharge / dn;\n            node.px -= dx * k;\n            node.py -= dy * k;\n          }\n        }\n        return !quad.charge;\n      };\n    }\n    force.tick = function() {\n      if ((alpha *= .99) < .005) {\n        timer = null;\n        event.end({\n          type: \"end\",\n          alpha: alpha = 0\n        });\n        return true;\n      }\n      var n = nodes.length, m = links.length, q, i, o, s, t, l, k, x, y;\n      for (i = 0; i < m; ++i) {\n        o = links[i];\n        s = o.source;\n        t = o.target;\n        x = t.x - s.x;\n        y = t.y - s.y;\n        if (l = x * x + y * y) {\n          l = alpha * strengths[i] * ((l = Math.sqrt(l)) - distances[i]) / l;\n          x *= l;\n          y *= l;\n          t.x -= x * (k = s.weight + t.weight ? s.weight / (s.weight + t.weight) : .5);\n          t.y -= y * k;\n          s.x += x * (k = 1 - k);\n          s.y += y * k;\n        }\n      }\n      if (k = alpha * gravity) {\n        x = size[0] / 2;\n        y = size[1] / 2;\n        i = -1;\n        if (k) while (++i < n) {\n          o = nodes[i];\n          o.x += (x - o.x) * k;\n          o.y += (y - o.y) * k;\n        }\n      }\n      if (charge) {\n        d3_layout_forceAccumulate(q = d3.geom.quadtree(nodes), alpha, charges);\n        i = -1;\n        while (++i < n) {\n          if (!(o = nodes[i]).fixed) {\n            q.visit(repulse(o));\n          }\n        }\n      }\n      i = -1;\n      while (++i < n) {\n        o = nodes[i];\n        if (o.fixed) {\n          o.x = o.px;\n          o.y = o.py;\n        } else {\n          o.x -= (o.px - (o.px = o.x)) * friction;\n          o.y -= (o.py - (o.py = o.y)) * friction;\n        }\n      }\n      event.tick({\n        type: \"tick\",\n        alpha: alpha\n      });\n    };\n    force.nodes = function(x) {\n      if (!arguments.length) return nodes;\n      nodes = x;\n      return force;\n    };\n    force.links = function(x) {\n      if (!arguments.length) return links;\n      links = x;\n      return force;\n    };\n    force.size = function(x) {\n      if (!arguments.length) return size;\n      size = x;\n      return force;\n    };\n    force.linkDistance = function(x) {\n      if (!arguments.length) return linkDistance;\n      linkDistance = typeof x === \"function\" ? x : +x;\n      return force;\n    };\n    force.distance = force.linkDistance;\n    force.linkStrength = function(x) {\n      if (!arguments.length) return linkStrength;\n      linkStrength = typeof x === \"function\" ? x : +x;\n      return force;\n    };\n    force.friction = function(x) {\n      if (!arguments.length) return friction;\n      friction = +x;\n      return force;\n    };\n    force.charge = function(x) {\n      if (!arguments.length) return charge;\n      charge = typeof x === \"function\" ? x : +x;\n      return force;\n    };\n    force.chargeDistance = function(x) {\n      if (!arguments.length) return Math.sqrt(chargeDistance2);\n      chargeDistance2 = x * x;\n      return force;\n    };\n    force.gravity = function(x) {\n      if (!arguments.length) return gravity;\n      gravity = +x;\n      return force;\n    };\n    force.theta = function(x) {\n      if (!arguments.length) return Math.sqrt(theta2);\n      theta2 = x * x;\n      return force;\n    };\n    force.alpha = function(x) {\n      if (!arguments.length) return alpha;\n      x = +x;\n      if (alpha) {\n        if (x > 0) {\n          alpha = x;\n        } else {\n          timer.c = null, timer.t = NaN, timer = null;\n          event.end({\n            type: \"end\",\n            alpha: alpha = 0\n          });\n        }\n      } else if (x > 0) {\n        event.start({\n          type: \"start\",\n          alpha: alpha = x\n        });\n        timer = d3_timer(force.tick);\n      }\n      return force;\n    };\n    force.start = function() {\n      var i, n = nodes.length, m = links.length, w = size[0], h = size[1], neighbors, o;\n      for (i = 0; i < n; ++i) {\n        (o = nodes[i]).index = i;\n        o.weight = 0;\n      }\n      for (i = 0; i < m; ++i) {\n        o = links[i];\n        if (typeof o.source == \"number\") o.source = nodes[o.source];\n        if (typeof o.target == \"number\") o.target = nodes[o.target];\n        ++o.source.weight;\n        ++o.target.weight;\n      }\n      for (i = 0; i < n; ++i) {\n        o = nodes[i];\n        if (isNaN(o.x)) o.x = position(\"x\", w);\n        if (isNaN(o.y)) o.y = position(\"y\", h);\n        if (isNaN(o.px)) o.px = o.x;\n        if (isNaN(o.py)) o.py = o.y;\n      }\n      distances = [];\n      if (typeof linkDistance === \"function\") for (i = 0; i < m; ++i) distances[i] = +linkDistance.call(this, links[i], i); else for (i = 0; i < m; ++i) distances[i] = linkDistance;\n      strengths = [];\n      if (typeof linkStrength === \"function\") for (i = 0; i < m; ++i) strengths[i] = +linkStrength.call(this, links[i], i); else for (i = 0; i < m; ++i) strengths[i] = linkStrength;\n      charges = [];\n      if (typeof charge === \"function\") for (i = 0; i < n; ++i) charges[i] = +charge.call(this, nodes[i], i); else for (i = 0; i < n; ++i) charges[i] = charge;\n      function position(dimension, size) {\n        if (!neighbors) {\n          neighbors = new Array(n);\n          for (j = 0; j < n; ++j) {\n            neighbors[j] = [];\n          }\n          for (j = 0; j < m; ++j) {\n            var o = links[j];\n            neighbors[o.source.index].push(o.target);\n            neighbors[o.target.index].push(o.source);\n          }\n        }\n        var candidates = neighbors[i], j = -1, l = candidates.length, x;\n        while (++j < l) if (!isNaN(x = candidates[j][dimension])) return x;\n        return Math.random() * size;\n      }\n      return force.resume();\n    };\n    force.resume = function() {\n      return force.alpha(.1);\n    };\n    force.stop = function() {\n      return force.alpha(0);\n    };\n    force.drag = function() {\n      if (!drag) drag = d3.behavior.drag().origin(d3_identity).on(\"dragstart.force\", d3_layout_forceDragstart).on(\"drag.force\", dragmove).on(\"dragend.force\", d3_layout_forceDragend);\n      if (!arguments.length) return drag;\n      this.on(\"mouseover.force\", d3_layout_forceMouseover).on(\"mouseout.force\", d3_layout_forceMouseout).call(drag);\n    };\n    function dragmove(d) {\n      d.px = d3.event.x, d.py = d3.event.y;\n      force.resume();\n    }\n    return d3.rebind(force, event, \"on\");\n  };\n  function d3_layout_forceDragstart(d) {\n    d.fixed |= 2;\n  }\n  function d3_layout_forceDragend(d) {\n    d.fixed &= ~6;\n  }\n  function d3_layout_forceMouseover(d) {\n    d.fixed |= 4;\n    d.px = d.x, d.py = d.y;\n  }\n  function d3_layout_forceMouseout(d) {\n    d.fixed &= ~4;\n  }\n  function d3_layout_forceAccumulate(quad, alpha, charges) {\n    var cx = 0, cy = 0;\n    quad.charge = 0;\n    if (!quad.leaf) {\n      var nodes = quad.nodes, n = nodes.length, i = -1, c;\n      while (++i < n) {\n        c = nodes[i];\n        if (c == null) continue;\n        d3_layout_forceAccumulate(c, alpha, charges);\n        quad.charge += c.charge;\n        cx += c.charge * c.cx;\n        cy += c.charge * c.cy;\n      }\n    }\n    if (quad.point) {\n      if (!quad.leaf) {\n        quad.point.x += Math.random() - .5;\n        quad.point.y += Math.random() - .5;\n      }\n      var k = alpha * charges[quad.point.index];\n      quad.charge += quad.pointCharge = k;\n      cx += k * quad.point.x;\n      cy += k * quad.point.y;\n    }\n    quad.cx = cx / quad.charge;\n    quad.cy = cy / quad.charge;\n  }\n  var d3_layout_forceLinkDistance = 20, d3_layout_forceLinkStrength = 1, d3_layout_forceChargeDistance2 = Infinity;\n  d3.layout.hierarchy = function() {\n    var sort = d3_layout_hierarchySort, children = d3_layout_hierarchyChildren, value = d3_layout_hierarchyValue;\n    function hierarchy(root) {\n      var stack = [ root ], nodes = [], node;\n      root.depth = 0;\n      while ((node = stack.pop()) != null) {\n        nodes.push(node);\n        if ((childs = children.call(hierarchy, node, node.depth)) && (n = childs.length)) {\n          var n, childs, child;\n          while (--n >= 0) {\n            stack.push(child = childs[n]);\n            child.parent = node;\n            child.depth = node.depth + 1;\n          }\n          if (value) node.value = 0;\n          node.children = childs;\n        } else {\n          if (value) node.value = +value.call(hierarchy, node, node.depth) || 0;\n          delete node.children;\n        }\n      }\n      d3_layout_hierarchyVisitAfter(root, function(node) {\n        var childs, parent;\n        if (sort && (childs = node.children)) childs.sort(sort);\n        if (value && (parent = node.parent)) parent.value += node.value;\n      });\n      return nodes;\n    }\n    hierarchy.sort = function(x) {\n      if (!arguments.length) return sort;\n      sort = x;\n      return hierarchy;\n    };\n    hierarchy.children = function(x) {\n      if (!arguments.length) return children;\n      children = x;\n      return hierarchy;\n    };\n    hierarchy.value = function(x) {\n      if (!arguments.length) return value;\n      value = x;\n      return hierarchy;\n    };\n    hierarchy.revalue = function(root) {\n      if (value) {\n        d3_layout_hierarchyVisitBefore(root, function(node) {\n          if (node.children) node.value = 0;\n        });\n        d3_layout_hierarchyVisitAfter(root, function(node) {\n          var parent;\n          if (!node.children) node.value = +value.call(hierarchy, node, node.depth) || 0;\n          if (parent = node.parent) parent.value += node.value;\n        });\n      }\n      return root;\n    };\n    return hierarchy;\n  };\n  function d3_layout_hierarchyRebind(object, hierarchy) {\n    d3.rebind(object, hierarchy, \"sort\", \"children\", \"value\");\n    object.nodes = object;\n    object.links = d3_layout_hierarchyLinks;\n    return object;\n  }\n  function d3_layout_hierarchyVisitBefore(node, callback) {\n    var nodes = [ node ];\n    while ((node = nodes.pop()) != null) {\n      callback(node);\n      if ((children = node.children) && (n = children.length)) {\n        var n, children;\n        while (--n >= 0) nodes.push(children[n]);\n      }\n    }\n  }\n  function d3_layout_hierarchyVisitAfter(node, callback) {\n    var nodes = [ node ], nodes2 = [];\n    while ((node = nodes.pop()) != null) {\n      nodes2.push(node);\n      if ((children = node.children) && (n = children.length)) {\n        var i = -1, n, children;\n        while (++i < n) nodes.push(children[i]);\n      }\n    }\n    while ((node = nodes2.pop()) != null) {\n      callback(node);\n    }\n  }\n  function d3_layout_hierarchyChildren(d) {\n    return d.children;\n  }\n  function d3_layout_hierarchyValue(d) {\n    return d.value;\n  }\n  function d3_layout_hierarchySort(a, b) {\n    return b.value - a.value;\n  }\n  function d3_layout_hierarchyLinks(nodes) {\n    return d3.merge(nodes.map(function(parent) {\n      return (parent.children || []).map(function(child) {\n        return {\n          source: parent,\n          target: child\n        };\n      });\n    }));\n  }\n  d3.layout.partition = function() {\n    var hierarchy = d3.layout.hierarchy(), size = [ 1, 1 ];\n    function position(node, x, dx, dy) {\n      var children = node.children;\n      node.x = x;\n      node.y = node.depth * dy;\n      node.dx = dx;\n      node.dy = dy;\n      if (children && (n = children.length)) {\n        var i = -1, n, c, d;\n        dx = node.value ? dx / node.value : 0;\n        while (++i < n) {\n          position(c = children[i], x, d = c.value * dx, dy);\n          x += d;\n        }\n      }\n    }\n    function depth(node) {\n      var children = node.children, d = 0;\n      if (children && (n = children.length)) {\n        var i = -1, n;\n        while (++i < n) d = Math.max(d, depth(children[i]));\n      }\n      return 1 + d;\n    }\n    function partition(d, i) {\n      var nodes = hierarchy.call(this, d, i);\n      position(nodes[0], 0, size[0], size[1] / depth(nodes[0]));\n      return nodes;\n    }\n    partition.size = function(x) {\n      if (!arguments.length) return size;\n      size = x;\n      return partition;\n    };\n    return d3_layout_hierarchyRebind(partition, hierarchy);\n  };\n  d3.layout.pie = function() {\n    var value = Number, sort = d3_layout_pieSortByValue, startAngle = 0, endAngle = τ, padAngle = 0;\n    function pie(data) {\n      var n = data.length, values = data.map(function(d, i) {\n        return +value.call(pie, d, i);\n      }), a = +(typeof startAngle === \"function\" ? startAngle.apply(this, arguments) : startAngle), da = (typeof endAngle === \"function\" ? endAngle.apply(this, arguments) : endAngle) - a, p = Math.min(Math.abs(da) / n, +(typeof padAngle === \"function\" ? padAngle.apply(this, arguments) : padAngle)), pa = p * (da < 0 ? -1 : 1), sum = d3.sum(values), k = sum ? (da - n * pa) / sum : 0, index = d3.range(n), arcs = [], v;\n      if (sort != null) index.sort(sort === d3_layout_pieSortByValue ? function(i, j) {\n        return values[j] - values[i];\n      } : function(i, j) {\n        return sort(data[i], data[j]);\n      });\n      index.forEach(function(i) {\n        arcs[i] = {\n          data: data[i],\n          value: v = values[i],\n          startAngle: a,\n          endAngle: a += v * k + pa,\n          padAngle: p\n        };\n      });\n      return arcs;\n    }\n    pie.value = function(_) {\n      if (!arguments.length) return value;\n      value = _;\n      return pie;\n    };\n    pie.sort = function(_) {\n      if (!arguments.length) return sort;\n      sort = _;\n      return pie;\n    };\n    pie.startAngle = function(_) {\n      if (!arguments.length) return startAngle;\n      startAngle = _;\n      return pie;\n    };\n    pie.endAngle = function(_) {\n      if (!arguments.length) return endAngle;\n      endAngle = _;\n      return pie;\n    };\n    pie.padAngle = function(_) {\n      if (!arguments.length) return padAngle;\n      padAngle = _;\n      return pie;\n    };\n    return pie;\n  };\n  var d3_layout_pieSortByValue = {};\n  d3.layout.stack = function() {\n    var values = d3_identity, order = d3_layout_stackOrderDefault, offset = d3_layout_stackOffsetZero, out = d3_layout_stackOut, x = d3_layout_stackX, y = d3_layout_stackY;\n    function stack(data, index) {\n      if (!(n = data.length)) return data;\n      var series = data.map(function(d, i) {\n        return values.call(stack, d, i);\n      });\n      var points = series.map(function(d) {\n        return d.map(function(v, i) {\n          return [ x.call(stack, v, i), y.call(stack, v, i) ];\n        });\n      });\n      var orders = order.call(stack, points, index);\n      series = d3.permute(series, orders);\n      points = d3.permute(points, orders);\n      var offsets = offset.call(stack, points, index);\n      var m = series[0].length, n, i, j, o;\n      for (j = 0; j < m; ++j) {\n        out.call(stack, series[0][j], o = offsets[j], points[0][j][1]);\n        for (i = 1; i < n; ++i) {\n          out.call(stack, series[i][j], o += points[i - 1][j][1], points[i][j][1]);\n        }\n      }\n      return data;\n    }\n    stack.values = function(x) {\n      if (!arguments.length) return values;\n      values = x;\n      return stack;\n    };\n    stack.order = function(x) {\n      if (!arguments.length) return order;\n      order = typeof x === \"function\" ? x : d3_layout_stackOrders.get(x) || d3_layout_stackOrderDefault;\n      return stack;\n    };\n    stack.offset = function(x) {\n      if (!arguments.length) return offset;\n      offset = typeof x === \"function\" ? x : d3_layout_stackOffsets.get(x) || d3_layout_stackOffsetZero;\n      return stack;\n    };\n    stack.x = function(z) {\n      if (!arguments.length) return x;\n      x = z;\n      return stack;\n    };\n    stack.y = function(z) {\n      if (!arguments.length) return y;\n      y = z;\n      return stack;\n    };\n    stack.out = function(z) {\n      if (!arguments.length) return out;\n      out = z;\n      return stack;\n    };\n    return stack;\n  };\n  function d3_layout_stackX(d) {\n    return d.x;\n  }\n  function d3_layout_stackY(d) {\n    return d.y;\n  }\n  function d3_layout_stackOut(d, y0, y) {\n    d.y0 = y0;\n    d.y = y;\n  }\n  var d3_layout_stackOrders = d3.map({\n    \"inside-out\": function(data) {\n      var n = data.length, i, j, max = data.map(d3_layout_stackMaxIndex), sums = data.map(d3_layout_stackReduceSum), index = d3.range(n).sort(function(a, b) {\n        return max[a] - max[b];\n      }), top = 0, bottom = 0, tops = [], bottoms = [];\n      for (i = 0; i < n; ++i) {\n        j = index[i];\n        if (top < bottom) {\n          top += sums[j];\n          tops.push(j);\n        } else {\n          bottom += sums[j];\n          bottoms.push(j);\n        }\n      }\n      return bottoms.reverse().concat(tops);\n    },\n    reverse: function(data) {\n      return d3.range(data.length).reverse();\n    },\n    \"default\": d3_layout_stackOrderDefault\n  });\n  var d3_layout_stackOffsets = d3.map({\n    silhouette: function(data) {\n      var n = data.length, m = data[0].length, sums = [], max = 0, i, j, o, y0 = [];\n      for (j = 0; j < m; ++j) {\n        for (i = 0, o = 0; i < n; i++) o += data[i][j][1];\n        if (o > max) max = o;\n        sums.push(o);\n      }\n      for (j = 0; j < m; ++j) {\n        y0[j] = (max - sums[j]) / 2;\n      }\n      return y0;\n    },\n    wiggle: function(data) {\n      var n = data.length, x = data[0], m = x.length, i, j, k, s1, s2, s3, dx, o, o0, y0 = [];\n      y0[0] = o = o0 = 0;\n      for (j = 1; j < m; ++j) {\n        for (i = 0, s1 = 0; i < n; ++i) s1 += data[i][j][1];\n        for (i = 0, s2 = 0, dx = x[j][0] - x[j - 1][0]; i < n; ++i) {\n          for (k = 0, s3 = (data[i][j][1] - data[i][j - 1][1]) / (2 * dx); k < i; ++k) {\n            s3 += (data[k][j][1] - data[k][j - 1][1]) / dx;\n          }\n          s2 += s3 * data[i][j][1];\n        }\n        y0[j] = o -= s1 ? s2 / s1 * dx : 0;\n        if (o < o0) o0 = o;\n      }\n      for (j = 0; j < m; ++j) y0[j] -= o0;\n      return y0;\n    },\n    expand: function(data) {\n      var n = data.length, m = data[0].length, k = 1 / n, i, j, o, y0 = [];\n      for (j = 0; j < m; ++j) {\n        for (i = 0, o = 0; i < n; i++) o += data[i][j][1];\n        if (o) for (i = 0; i < n; i++) data[i][j][1] /= o; else for (i = 0; i < n; i++) data[i][j][1] = k;\n      }\n      for (j = 0; j < m; ++j) y0[j] = 0;\n      return y0;\n    },\n    zero: d3_layout_stackOffsetZero\n  });\n  function d3_layout_stackOrderDefault(data) {\n    return d3.range(data.length);\n  }\n  function d3_layout_stackOffsetZero(data) {\n    var j = -1, m = data[0].length, y0 = [];\n    while (++j < m) y0[j] = 0;\n    return y0;\n  }\n  function d3_layout_stackMaxIndex(array) {\n    var i = 1, j = 0, v = array[0][1], k, n = array.length;\n    for (;i < n; ++i) {\n      if ((k = array[i][1]) > v) {\n        j = i;\n        v = k;\n      }\n    }\n    return j;\n  }\n  function d3_layout_stackReduceSum(d) {\n    return d.reduce(d3_layout_stackSum, 0);\n  }\n  function d3_layout_stackSum(p, d) {\n    return p + d[1];\n  }\n  d3.layout.histogram = function() {\n    var frequency = true, valuer = Number, ranger = d3_layout_histogramRange, binner = d3_layout_histogramBinSturges;\n    function histogram(data, i) {\n      var bins = [], values = data.map(valuer, this), range = ranger.call(this, values, i), thresholds = binner.call(this, range, values, i), bin, i = -1, n = values.length, m = thresholds.length - 1, k = frequency ? 1 : 1 / n, x;\n      while (++i < m) {\n        bin = bins[i] = [];\n        bin.dx = thresholds[i + 1] - (bin.x = thresholds[i]);\n        bin.y = 0;\n      }\n      if (m > 0) {\n        i = -1;\n        while (++i < n) {\n          x = values[i];\n          if (x >= range[0] && x <= range[1]) {\n            bin = bins[d3.bisect(thresholds, x, 1, m) - 1];\n            bin.y += k;\n            bin.push(data[i]);\n          }\n        }\n      }\n      return bins;\n    }\n    histogram.value = function(x) {\n      if (!arguments.length) return valuer;\n      valuer = x;\n      return histogram;\n    };\n    histogram.range = function(x) {\n      if (!arguments.length) return ranger;\n      ranger = d3_functor(x);\n      return histogram;\n    };\n    histogram.bins = function(x) {\n      if (!arguments.length) return binner;\n      binner = typeof x === \"number\" ? function(range) {\n        return d3_layout_histogramBinFixed(range, x);\n      } : d3_functor(x);\n      return histogram;\n    };\n    histogram.frequency = function(x) {\n      if (!arguments.length) return frequency;\n      frequency = !!x;\n      return histogram;\n    };\n    return histogram;\n  };\n  function d3_layout_histogramBinSturges(range, values) {\n    return d3_layout_histogramBinFixed(range, Math.ceil(Math.log(values.length) / Math.LN2 + 1));\n  }\n  function d3_layout_histogramBinFixed(range, n) {\n    var x = -1, b = +range[0], m = (range[1] - b) / n, f = [];\n    while (++x <= n) f[x] = m * x + b;\n    return f;\n  }\n  function d3_layout_histogramRange(values) {\n    return [ d3.min(values), d3.max(values) ];\n  }\n  d3.layout.pack = function() {\n    var hierarchy = d3.layout.hierarchy().sort(d3_layout_packSort), padding = 0, size = [ 1, 1 ], radius;\n    function pack(d, i) {\n      var nodes = hierarchy.call(this, d, i), root = nodes[0], w = size[0], h = size[1], r = radius == null ? Math.sqrt : typeof radius === \"function\" ? radius : function() {\n        return radius;\n      };\n      root.x = root.y = 0;\n      d3_layout_hierarchyVisitAfter(root, function(d) {\n        d.r = +r(d.value);\n      });\n      d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);\n      if (padding) {\n        var dr = padding * (radius ? 1 : Math.max(2 * root.r / w, 2 * root.r / h)) / 2;\n        d3_layout_hierarchyVisitAfter(root, function(d) {\n          d.r += dr;\n        });\n        d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);\n        d3_layout_hierarchyVisitAfter(root, function(d) {\n          d.r -= dr;\n        });\n      }\n      d3_layout_packTransform(root, w / 2, h / 2, radius ? 1 : 1 / Math.max(2 * root.r / w, 2 * root.r / h));\n      return nodes;\n    }\n    pack.size = function(_) {\n      if (!arguments.length) return size;\n      size = _;\n      return pack;\n    };\n    pack.radius = function(_) {\n      if (!arguments.length) return radius;\n      radius = _ == null || typeof _ === \"function\" ? _ : +_;\n      return pack;\n    };\n    pack.padding = function(_) {\n      if (!arguments.length) return padding;\n      padding = +_;\n      return pack;\n    };\n    return d3_layout_hierarchyRebind(pack, hierarchy);\n  };\n  function d3_layout_packSort(a, b) {\n    return a.value - b.value;\n  }\n  function d3_layout_packInsert(a, b) {\n    var c = a._pack_next;\n    a._pack_next = b;\n    b._pack_prev = a;\n    b._pack_next = c;\n    c._pack_prev = b;\n  }\n  function d3_layout_packSplice(a, b) {\n    a._pack_next = b;\n    b._pack_prev = a;\n  }\n  function d3_layout_packIntersects(a, b) {\n    var dx = b.x - a.x, dy = b.y - a.y, dr = a.r + b.r;\n    return .999 * dr * dr > dx * dx + dy * dy;\n  }\n  function d3_layout_packSiblings(node) {\n    if (!(nodes = node.children) || !(n = nodes.length)) return;\n    var nodes, xMin = Infinity, xMax = -Infinity, yMin = Infinity, yMax = -Infinity, a, b, c, i, j, k, n;\n    function bound(node) {\n      xMin = Math.min(node.x - node.r, xMin);\n      xMax = Math.max(node.x + node.r, xMax);\n      yMin = Math.min(node.y - node.r, yMin);\n      yMax = Math.max(node.y + node.r, yMax);\n    }\n    nodes.forEach(d3_layout_packLink);\n    a = nodes[0];\n    a.x = -a.r;\n    a.y = 0;\n    bound(a);\n    if (n > 1) {\n      b = nodes[1];\n      b.x = b.r;\n      b.y = 0;\n      bound(b);\n      if (n > 2) {\n        c = nodes[2];\n        d3_layout_packPlace(a, b, c);\n        bound(c);\n        d3_layout_packInsert(a, c);\n        a._pack_prev = c;\n        d3_layout_packInsert(c, b);\n        b = a._pack_next;\n        for (i = 3; i < n; i++) {\n          d3_layout_packPlace(a, b, c = nodes[i]);\n          var isect = 0, s1 = 1, s2 = 1;\n          for (j = b._pack_next; j !== b; j = j._pack_next, s1++) {\n            if (d3_layout_packIntersects(j, c)) {\n              isect = 1;\n              break;\n            }\n          }\n          if (isect == 1) {\n            for (k = a._pack_prev; k !== j._pack_prev; k = k._pack_prev, s2++) {\n              if (d3_layout_packIntersects(k, c)) {\n                break;\n              }\n            }\n          }\n          if (isect) {\n            if (s1 < s2 || s1 == s2 && b.r < a.r) d3_layout_packSplice(a, b = j); else d3_layout_packSplice(a = k, b);\n            i--;\n          } else {\n            d3_layout_packInsert(a, c);\n            b = c;\n            bound(c);\n          }\n        }\n      }\n    }\n    var cx = (xMin + xMax) / 2, cy = (yMin + yMax) / 2, cr = 0;\n    for (i = 0; i < n; i++) {\n      c = nodes[i];\n      c.x -= cx;\n      c.y -= cy;\n      cr = Math.max(cr, c.r + Math.sqrt(c.x * c.x + c.y * c.y));\n    }\n    node.r = cr;\n    nodes.forEach(d3_layout_packUnlink);\n  }\n  function d3_layout_packLink(node) {\n    node._pack_next = node._pack_prev = node;\n  }\n  function d3_layout_packUnlink(node) {\n    delete node._pack_next;\n    delete node._pack_prev;\n  }\n  function d3_layout_packTransform(node, x, y, k) {\n    var children = node.children;\n    node.x = x += k * node.x;\n    node.y = y += k * node.y;\n    node.r *= k;\n    if (children) {\n      var i = -1, n = children.length;\n      while (++i < n) d3_layout_packTransform(children[i], x, y, k);\n    }\n  }\n  function d3_layout_packPlace(a, b, c) {\n    var db = a.r + c.r, dx = b.x - a.x, dy = b.y - a.y;\n    if (db && (dx || dy)) {\n      var da = b.r + c.r, dc = dx * dx + dy * dy;\n      da *= da;\n      db *= db;\n      var x = .5 + (db - da) / (2 * dc), y = Math.sqrt(Math.max(0, 2 * da * (db + dc) - (db -= dc) * db - da * da)) / (2 * dc);\n      c.x = a.x + x * dx + y * dy;\n      c.y = a.y + x * dy - y * dx;\n    } else {\n      c.x = a.x + db;\n      c.y = a.y;\n    }\n  }\n  d3.layout.tree = function() {\n    var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = null;\n    function tree(d, i) {\n      var nodes = hierarchy.call(this, d, i), root0 = nodes[0], root1 = wrapTree(root0);\n      d3_layout_hierarchyVisitAfter(root1, firstWalk), root1.parent.m = -root1.z;\n      d3_layout_hierarchyVisitBefore(root1, secondWalk);\n      if (nodeSize) d3_layout_hierarchyVisitBefore(root0, sizeNode); else {\n        var left = root0, right = root0, bottom = root0;\n        d3_layout_hierarchyVisitBefore(root0, function(node) {\n          if (node.x < left.x) left = node;\n          if (node.x > right.x) right = node;\n          if (node.depth > bottom.depth) bottom = node;\n        });\n        var tx = separation(left, right) / 2 - left.x, kx = size[0] / (right.x + separation(right, left) / 2 + tx), ky = size[1] / (bottom.depth || 1);\n        d3_layout_hierarchyVisitBefore(root0, function(node) {\n          node.x = (node.x + tx) * kx;\n          node.y = node.depth * ky;\n        });\n      }\n      return nodes;\n    }\n    function wrapTree(root0) {\n      var root1 = {\n        A: null,\n        children: [ root0 ]\n      }, queue = [ root1 ], node1;\n      while ((node1 = queue.pop()) != null) {\n        for (var children = node1.children, child, i = 0, n = children.length; i < n; ++i) {\n          queue.push((children[i] = child = {\n            _: children[i],\n            parent: node1,\n            children: (child = children[i].children) && child.slice() || [],\n            A: null,\n            a: null,\n            z: 0,\n            m: 0,\n            c: 0,\n            s: 0,\n            t: null,\n            i: i\n          }).a = child);\n        }\n      }\n      return root1.children[0];\n    }\n    function firstWalk(v) {\n      var children = v.children, siblings = v.parent.children, w = v.i ? siblings[v.i - 1] : null;\n      if (children.length) {\n        d3_layout_treeShift(v);\n        var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n        if (w) {\n          v.z = w.z + separation(v._, w._);\n          v.m = v.z - midpoint;\n        } else {\n          v.z = midpoint;\n        }\n      } else if (w) {\n        v.z = w.z + separation(v._, w._);\n      }\n      v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n    }\n    function secondWalk(v) {\n      v._.x = v.z + v.parent.m;\n      v.m += v.parent.m;\n    }\n    function apportion(v, w, ancestor) {\n      if (w) {\n        var vip = v, vop = v, vim = w, vom = vip.parent.children[0], sip = vip.m, sop = vop.m, sim = vim.m, som = vom.m, shift;\n        while (vim = d3_layout_treeRight(vim), vip = d3_layout_treeLeft(vip), vim && vip) {\n          vom = d3_layout_treeLeft(vom);\n          vop = d3_layout_treeRight(vop);\n          vop.a = v;\n          shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n          if (shift > 0) {\n            d3_layout_treeMove(d3_layout_treeAncestor(vim, v, ancestor), v, shift);\n            sip += shift;\n            sop += shift;\n          }\n          sim += vim.m;\n          sip += vip.m;\n          som += vom.m;\n          sop += vop.m;\n        }\n        if (vim && !d3_layout_treeRight(vop)) {\n          vop.t = vim;\n          vop.m += sim - sop;\n        }\n        if (vip && !d3_layout_treeLeft(vom)) {\n          vom.t = vip;\n          vom.m += sip - som;\n          ancestor = v;\n        }\n      }\n      return ancestor;\n    }\n    function sizeNode(node) {\n      node.x *= size[0];\n      node.y = node.depth * size[1];\n    }\n    tree.separation = function(x) {\n      if (!arguments.length) return separation;\n      separation = x;\n      return tree;\n    };\n    tree.size = function(x) {\n      if (!arguments.length) return nodeSize ? null : size;\n      nodeSize = (size = x) == null ? sizeNode : null;\n      return tree;\n    };\n    tree.nodeSize = function(x) {\n      if (!arguments.length) return nodeSize ? size : null;\n      nodeSize = (size = x) == null ? null : sizeNode;\n      return tree;\n    };\n    return d3_layout_hierarchyRebind(tree, hierarchy);\n  };\n  function d3_layout_treeSeparation(a, b) {\n    return a.parent == b.parent ? 1 : 2;\n  }\n  function d3_layout_treeLeft(v) {\n    var children = v.children;\n    return children.length ? children[0] : v.t;\n  }\n  function d3_layout_treeRight(v) {\n    var children = v.children, n;\n    return (n = children.length) ? children[n - 1] : v.t;\n  }\n  function d3_layout_treeMove(wm, wp, shift) {\n    var change = shift / (wp.i - wm.i);\n    wp.c -= change;\n    wp.s += shift;\n    wm.c += change;\n    wp.z += shift;\n    wp.m += shift;\n  }\n  function d3_layout_treeShift(v) {\n    var shift = 0, change = 0, children = v.children, i = children.length, w;\n    while (--i >= 0) {\n      w = children[i];\n      w.z += shift;\n      w.m += shift;\n      shift += w.s + (change += w.c);\n    }\n  }\n  function d3_layout_treeAncestor(vim, v, ancestor) {\n    return vim.a.parent === v.parent ? vim.a : ancestor;\n  }\n  d3.layout.cluster = function() {\n    var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = false;\n    function cluster(d, i) {\n      var nodes = hierarchy.call(this, d, i), root = nodes[0], previousNode, x = 0;\n      d3_layout_hierarchyVisitAfter(root, function(node) {\n        var children = node.children;\n        if (children && children.length) {\n          node.x = d3_layout_clusterX(children);\n          node.y = d3_layout_clusterY(children);\n        } else {\n          node.x = previousNode ? x += separation(node, previousNode) : 0;\n          node.y = 0;\n          previousNode = node;\n        }\n      });\n      var left = d3_layout_clusterLeft(root), right = d3_layout_clusterRight(root), x0 = left.x - separation(left, right) / 2, x1 = right.x + separation(right, left) / 2;\n      d3_layout_hierarchyVisitAfter(root, nodeSize ? function(node) {\n        node.x = (node.x - root.x) * size[0];\n        node.y = (root.y - node.y) * size[1];\n      } : function(node) {\n        node.x = (node.x - x0) / (x1 - x0) * size[0];\n        node.y = (1 - (root.y ? node.y / root.y : 1)) * size[1];\n      });\n      return nodes;\n    }\n    cluster.separation = function(x) {\n      if (!arguments.length) return separation;\n      separation = x;\n      return cluster;\n    };\n    cluster.size = function(x) {\n      if (!arguments.length) return nodeSize ? null : size;\n      nodeSize = (size = x) == null;\n      return cluster;\n    };\n    cluster.nodeSize = function(x) {\n      if (!arguments.length) return nodeSize ? size : null;\n      nodeSize = (size = x) != null;\n      return cluster;\n    };\n    return d3_layout_hierarchyRebind(cluster, hierarchy);\n  };\n  function d3_layout_clusterY(children) {\n    return 1 + d3.max(children, function(child) {\n      return child.y;\n    });\n  }\n  function d3_layout_clusterX(children) {\n    return children.reduce(function(x, child) {\n      return x + child.x;\n    }, 0) / children.length;\n  }\n  function d3_layout_clusterLeft(node) {\n    var children = node.children;\n    return children && children.length ? d3_layout_clusterLeft(children[0]) : node;\n  }\n  function d3_layout_clusterRight(node) {\n    var children = node.children, n;\n    return children && (n = children.length) ? d3_layout_clusterRight(children[n - 1]) : node;\n  }\n  d3.layout.treemap = function() {\n    var hierarchy = d3.layout.hierarchy(), round = Math.round, size = [ 1, 1 ], padding = null, pad = d3_layout_treemapPadNull, sticky = false, stickies, mode = \"squarify\", ratio = .5 * (1 + Math.sqrt(5));\n    function scale(children, k) {\n      var i = -1, n = children.length, child, area;\n      while (++i < n) {\n        area = (child = children[i]).value * (k < 0 ? 0 : k);\n        child.area = isNaN(area) || area <= 0 ? 0 : area;\n      }\n    }\n    function squarify(node) {\n      var children = node.children;\n      if (children && children.length) {\n        var rect = pad(node), row = [], remaining = children.slice(), child, best = Infinity, score, u = mode === \"slice\" ? rect.dx : mode === \"dice\" ? rect.dy : mode === \"slice-dice\" ? node.depth & 1 ? rect.dy : rect.dx : Math.min(rect.dx, rect.dy), n;\n        scale(remaining, rect.dx * rect.dy / node.value);\n        row.area = 0;\n        while ((n = remaining.length) > 0) {\n          row.push(child = remaining[n - 1]);\n          row.area += child.area;\n          if (mode !== \"squarify\" || (score = worst(row, u)) <= best) {\n            remaining.pop();\n            best = score;\n          } else {\n            row.area -= row.pop().area;\n            position(row, u, rect, false);\n            u = Math.min(rect.dx, rect.dy);\n            row.length = row.area = 0;\n            best = Infinity;\n          }\n        }\n        if (row.length) {\n          position(row, u, rect, true);\n          row.length = row.area = 0;\n        }\n        children.forEach(squarify);\n      }\n    }\n    function stickify(node) {\n      var children = node.children;\n      if (children && children.length) {\n        var rect = pad(node), remaining = children.slice(), child, row = [];\n        scale(remaining, rect.dx * rect.dy / node.value);\n        row.area = 0;\n        while (child = remaining.pop()) {\n          row.push(child);\n          row.area += child.area;\n          if (child.z != null) {\n            position(row, child.z ? rect.dx : rect.dy, rect, !remaining.length);\n            row.length = row.area = 0;\n          }\n        }\n        children.forEach(stickify);\n      }\n    }\n    function worst(row, u) {\n      var s = row.area, r, rmax = 0, rmin = Infinity, i = -1, n = row.length;\n      while (++i < n) {\n        if (!(r = row[i].area)) continue;\n        if (r < rmin) rmin = r;\n        if (r > rmax) rmax = r;\n      }\n      s *= s;\n      u *= u;\n      return s ? Math.max(u * rmax * ratio / s, s / (u * rmin * ratio)) : Infinity;\n    }\n    function position(row, u, rect, flush) {\n      var i = -1, n = row.length, x = rect.x, y = rect.y, v = u ? round(row.area / u) : 0, o;\n      if (u == rect.dx) {\n        if (flush || v > rect.dy) v = rect.dy;\n        while (++i < n) {\n          o = row[i];\n          o.x = x;\n          o.y = y;\n          o.dy = v;\n          x += o.dx = Math.min(rect.x + rect.dx - x, v ? round(o.area / v) : 0);\n        }\n        o.z = true;\n        o.dx += rect.x + rect.dx - x;\n        rect.y += v;\n        rect.dy -= v;\n      } else {\n        if (flush || v > rect.dx) v = rect.dx;\n        while (++i < n) {\n          o = row[i];\n          o.x = x;\n          o.y = y;\n          o.dx = v;\n          y += o.dy = Math.min(rect.y + rect.dy - y, v ? round(o.area / v) : 0);\n        }\n        o.z = false;\n        o.dy += rect.y + rect.dy - y;\n        rect.x += v;\n        rect.dx -= v;\n      }\n    }\n    function treemap(d) {\n      var nodes = stickies || hierarchy(d), root = nodes[0];\n      root.x = root.y = 0;\n      if (root.value) root.dx = size[0], root.dy = size[1]; else root.dx = root.dy = 0;\n      if (stickies) hierarchy.revalue(root);\n      scale([ root ], root.dx * root.dy / root.value);\n      (stickies ? stickify : squarify)(root);\n      if (sticky) stickies = nodes;\n      return nodes;\n    }\n    treemap.size = function(x) {\n      if (!arguments.length) return size;\n      size = x;\n      return treemap;\n    };\n    treemap.padding = function(x) {\n      if (!arguments.length) return padding;\n      function padFunction(node) {\n        var p = x.call(treemap, node, node.depth);\n        return p == null ? d3_layout_treemapPadNull(node) : d3_layout_treemapPad(node, typeof p === \"number\" ? [ p, p, p, p ] : p);\n      }\n      function padConstant(node) {\n        return d3_layout_treemapPad(node, x);\n      }\n      var type;\n      pad = (padding = x) == null ? d3_layout_treemapPadNull : (type = typeof x) === \"function\" ? padFunction : type === \"number\" ? (x = [ x, x, x, x ], \n      padConstant) : padConstant;\n      return treemap;\n    };\n    treemap.round = function(x) {\n      if (!arguments.length) return round != Number;\n      round = x ? Math.round : Number;\n      return treemap;\n    };\n    treemap.sticky = function(x) {\n      if (!arguments.length) return sticky;\n      sticky = x;\n      stickies = null;\n      return treemap;\n    };\n    treemap.ratio = function(x) {\n      if (!arguments.length) return ratio;\n      ratio = x;\n      return treemap;\n    };\n    treemap.mode = function(x) {\n      if (!arguments.length) return mode;\n      mode = x + \"\";\n      return treemap;\n    };\n    return d3_layout_hierarchyRebind(treemap, hierarchy);\n  };\n  function d3_layout_treemapPadNull(node) {\n    return {\n      x: node.x,\n      y: node.y,\n      dx: node.dx,\n      dy: node.dy\n    };\n  }\n  function d3_layout_treemapPad(node, padding) {\n    var x = node.x + padding[3], y = node.y + padding[0], dx = node.dx - padding[1] - padding[3], dy = node.dy - padding[0] - padding[2];\n    if (dx < 0) {\n      x += dx / 2;\n      dx = 0;\n    }\n    if (dy < 0) {\n      y += dy / 2;\n      dy = 0;\n    }\n    return {\n      x: x,\n      y: y,\n      dx: dx,\n      dy: dy\n    };\n  }\n  d3.random = {\n    normal: function(µ, σ) {\n      var n = arguments.length;\n      if (n < 2) σ = 1;\n      if (n < 1) µ = 0;\n      return function() {\n        var x, y, r;\n        do {\n          x = Math.random() * 2 - 1;\n          y = Math.random() * 2 - 1;\n          r = x * x + y * y;\n        } while (!r || r > 1);\n        return µ + σ * x * Math.sqrt(-2 * Math.log(r) / r);\n      };\n    },\n    logNormal: function() {\n      var random = d3.random.normal.apply(d3, arguments);\n      return function() {\n        return Math.exp(random());\n      };\n    },\n    bates: function(m) {\n      var random = d3.random.irwinHall(m);\n      return function() {\n        return random() / m;\n      };\n    },\n    irwinHall: function(m) {\n      return function() {\n        for (var s = 0, j = 0; j < m; j++) s += Math.random();\n        return s;\n      };\n    }\n  };\n  d3.scale = {};\n  function d3_scaleExtent(domain) {\n    var start = domain[0], stop = domain[domain.length - 1];\n    return start < stop ? [ start, stop ] : [ stop, start ];\n  }\n  function d3_scaleRange(scale) {\n    return scale.rangeExtent ? scale.rangeExtent() : d3_scaleExtent(scale.range());\n  }\n  function d3_scale_bilinear(domain, range, uninterpolate, interpolate) {\n    var u = uninterpolate(domain[0], domain[1]), i = interpolate(range[0], range[1]);\n    return function(x) {\n      return i(u(x));\n    };\n  }\n  function d3_scale_nice(domain, nice) {\n    var i0 = 0, i1 = domain.length - 1, x0 = domain[i0], x1 = domain[i1], dx;\n    if (x1 < x0) {\n      dx = i0, i0 = i1, i1 = dx;\n      dx = x0, x0 = x1, x1 = dx;\n    }\n    domain[i0] = nice.floor(x0);\n    domain[i1] = nice.ceil(x1);\n    return domain;\n  }\n  function d3_scale_niceStep(step) {\n    return step ? {\n      floor: function(x) {\n        return Math.floor(x / step) * step;\n      },\n      ceil: function(x) {\n        return Math.ceil(x / step) * step;\n      }\n    } : d3_scale_niceIdentity;\n  }\n  var d3_scale_niceIdentity = {\n    floor: d3_identity,\n    ceil: d3_identity\n  };\n  function d3_scale_polylinear(domain, range, uninterpolate, interpolate) {\n    var u = [], i = [], j = 0, k = Math.min(domain.length, range.length) - 1;\n    if (domain[k] < domain[0]) {\n      domain = domain.slice().reverse();\n      range = range.slice().reverse();\n    }\n    while (++j <= k) {\n      u.push(uninterpolate(domain[j - 1], domain[j]));\n      i.push(interpolate(range[j - 1], range[j]));\n    }\n    return function(x) {\n      var j = d3.bisect(domain, x, 1, k) - 1;\n      return i[j](u[j](x));\n    };\n  }\n  d3.scale.linear = function() {\n    return d3_scale_linear([ 0, 1 ], [ 0, 1 ], d3_interpolate, false);\n  };\n  function d3_scale_linear(domain, range, interpolate, clamp) {\n    var output, input;\n    function rescale() {\n      var linear = Math.min(domain.length, range.length) > 2 ? d3_scale_polylinear : d3_scale_bilinear, uninterpolate = clamp ? d3_uninterpolateClamp : d3_uninterpolateNumber;\n      output = linear(domain, range, uninterpolate, interpolate);\n      input = linear(range, domain, uninterpolate, d3_interpolate);\n      return scale;\n    }\n    function scale(x) {\n      return output(x);\n    }\n    scale.invert = function(y) {\n      return input(y);\n    };\n    scale.domain = function(x) {\n      if (!arguments.length) return domain;\n      domain = x.map(Number);\n      return rescale();\n    };\n    scale.range = function(x) {\n      if (!arguments.length) return range;\n      range = x;\n      return rescale();\n    };\n    scale.rangeRound = function(x) {\n      return scale.range(x).interpolate(d3_interpolateRound);\n    };\n    scale.clamp = function(x) {\n      if (!arguments.length) return clamp;\n      clamp = x;\n      return rescale();\n    };\n    scale.interpolate = function(x) {\n      if (!arguments.length) return interpolate;\n      interpolate = x;\n      return rescale();\n    };\n    scale.ticks = function(m) {\n      return d3_scale_linearTicks(domain, m);\n    };\n    scale.tickFormat = function(m, format) {\n      return d3_scale_linearTickFormat(domain, m, format);\n    };\n    scale.nice = function(m) {\n      d3_scale_linearNice(domain, m);\n      return rescale();\n    };\n    scale.copy = function() {\n      return d3_scale_linear(domain, range, interpolate, clamp);\n    };\n    return rescale();\n  }\n  function d3_scale_linearRebind(scale, linear) {\n    return d3.rebind(scale, linear, \"range\", \"rangeRound\", \"interpolate\", \"clamp\");\n  }\n  function d3_scale_linearNice(domain, m) {\n    d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));\n    d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));\n    return domain;\n  }\n  function d3_scale_linearTickRange(domain, m) {\n    if (m == null) m = 10;\n    var extent = d3_scaleExtent(domain), span = extent[1] - extent[0], step = Math.pow(10, Math.floor(Math.log(span / m) / Math.LN10)), err = m / span * step;\n    if (err <= .15) step *= 10; else if (err <= .35) step *= 5; else if (err <= .75) step *= 2;\n    extent[0] = Math.ceil(extent[0] / step) * step;\n    extent[1] = Math.floor(extent[1] / step) * step + step * .5;\n    extent[2] = step;\n    return extent;\n  }\n  function d3_scale_linearTicks(domain, m) {\n    return d3.range.apply(d3, d3_scale_linearTickRange(domain, m));\n  }\n  function d3_scale_linearTickFormat(domain, m, format) {\n    var range = d3_scale_linearTickRange(domain, m);\n    if (format) {\n      var match = d3_format_re.exec(format);\n      match.shift();\n      if (match[8] === \"s\") {\n        var prefix = d3.formatPrefix(Math.max(abs(range[0]), abs(range[1])));\n        if (!match[7]) match[7] = \".\" + d3_scale_linearPrecision(prefix.scale(range[2]));\n        match[8] = \"f\";\n        format = d3.format(match.join(\"\"));\n        return function(d) {\n          return format(prefix.scale(d)) + prefix.symbol;\n        };\n      }\n      if (!match[7]) match[7] = \".\" + d3_scale_linearFormatPrecision(match[8], range);\n      format = match.join(\"\");\n    } else {\n      format = \",.\" + d3_scale_linearPrecision(range[2]) + \"f\";\n    }\n    return d3.format(format);\n  }\n  var d3_scale_linearFormatSignificant = {\n    s: 1,\n    g: 1,\n    p: 1,\n    r: 1,\n    e: 1\n  };\n  function d3_scale_linearPrecision(value) {\n    return -Math.floor(Math.log(value) / Math.LN10 + .01);\n  }\n  function d3_scale_linearFormatPrecision(type, range) {\n    var p = d3_scale_linearPrecision(range[2]);\n    return type in d3_scale_linearFormatSignificant ? Math.abs(p - d3_scale_linearPrecision(Math.max(abs(range[0]), abs(range[1])))) + +(type !== \"e\") : p - (type === \"%\") * 2;\n  }\n  d3.scale.log = function() {\n    return d3_scale_log(d3.scale.linear().domain([ 0, 1 ]), 10, true, [ 1, 10 ]);\n  };\n  function d3_scale_log(linear, base, positive, domain) {\n    function log(x) {\n      return (positive ? Math.log(x < 0 ? 0 : x) : -Math.log(x > 0 ? 0 : -x)) / Math.log(base);\n    }\n    function pow(x) {\n      return positive ? Math.pow(base, x) : -Math.pow(base, -x);\n    }\n    function scale(x) {\n      return linear(log(x));\n    }\n    scale.invert = function(x) {\n      return pow(linear.invert(x));\n    };\n    scale.domain = function(x) {\n      if (!arguments.length) return domain;\n      positive = x[0] >= 0;\n      linear.domain((domain = x.map(Number)).map(log));\n      return scale;\n    };\n    scale.base = function(_) {\n      if (!arguments.length) return base;\n      base = +_;\n      linear.domain(domain.map(log));\n      return scale;\n    };\n    scale.nice = function() {\n      var niced = d3_scale_nice(domain.map(log), positive ? Math : d3_scale_logNiceNegative);\n      linear.domain(niced);\n      domain = niced.map(pow);\n      return scale;\n    };\n    scale.ticks = function() {\n      var extent = d3_scaleExtent(domain), ticks = [], u = extent[0], v = extent[1], i = Math.floor(log(u)), j = Math.ceil(log(v)), n = base % 1 ? 2 : base;\n      if (isFinite(j - i)) {\n        if (positive) {\n          for (;i < j; i++) for (var k = 1; k < n; k++) ticks.push(pow(i) * k);\n          ticks.push(pow(i));\n        } else {\n          ticks.push(pow(i));\n          for (;i++ < j; ) for (var k = n - 1; k > 0; k--) ticks.push(pow(i) * k);\n        }\n        for (i = 0; ticks[i] < u; i++) {}\n        for (j = ticks.length; ticks[j - 1] > v; j--) {}\n        ticks = ticks.slice(i, j);\n      }\n      return ticks;\n    };\n    scale.tickFormat = function(n, format) {\n      if (!arguments.length) return d3_scale_logFormat;\n      if (arguments.length < 2) format = d3_scale_logFormat; else if (typeof format !== \"function\") format = d3.format(format);\n      var k = Math.max(1, base * n / scale.ticks().length);\n      return function(d) {\n        var i = d / pow(Math.round(log(d)));\n        if (i * base < base - .5) i *= base;\n        return i <= k ? format(d) : \"\";\n      };\n    };\n    scale.copy = function() {\n      return d3_scale_log(linear.copy(), base, positive, domain);\n    };\n    return d3_scale_linearRebind(scale, linear);\n  }\n  var d3_scale_logFormat = d3.format(\".0e\"), d3_scale_logNiceNegative = {\n    floor: function(x) {\n      return -Math.ceil(-x);\n    },\n    ceil: function(x) {\n      return -Math.floor(-x);\n    }\n  };\n  d3.scale.pow = function() {\n    return d3_scale_pow(d3.scale.linear(), 1, [ 0, 1 ]);\n  };\n  function d3_scale_pow(linear, exponent, domain) {\n    var powp = d3_scale_powPow(exponent), powb = d3_scale_powPow(1 / exponent);\n    function scale(x) {\n      return linear(powp(x));\n    }\n    scale.invert = function(x) {\n      return powb(linear.invert(x));\n    };\n    scale.domain = function(x) {\n      if (!arguments.length) return domain;\n      linear.domain((domain = x.map(Number)).map(powp));\n      return scale;\n    };\n    scale.ticks = function(m) {\n      return d3_scale_linearTicks(domain, m);\n    };\n    scale.tickFormat = function(m, format) {\n      return d3_scale_linearTickFormat(domain, m, format);\n    };\n    scale.nice = function(m) {\n      return scale.domain(d3_scale_linearNice(domain, m));\n    };\n    scale.exponent = function(x) {\n      if (!arguments.length) return exponent;\n      powp = d3_scale_powPow(exponent = x);\n      powb = d3_scale_powPow(1 / exponent);\n      linear.domain(domain.map(powp));\n      return scale;\n    };\n    scale.copy = function() {\n      return d3_scale_pow(linear.copy(), exponent, domain);\n    };\n    return d3_scale_linearRebind(scale, linear);\n  }\n  function d3_scale_powPow(e) {\n    return function(x) {\n      return x < 0 ? -Math.pow(-x, e) : Math.pow(x, e);\n    };\n  }\n  d3.scale.sqrt = function() {\n    return d3.scale.pow().exponent(.5);\n  };\n  d3.scale.ordinal = function() {\n    return d3_scale_ordinal([], {\n      t: \"range\",\n      a: [ [] ]\n    });\n  };\n  function d3_scale_ordinal(domain, ranger) {\n    var index, range, rangeBand;\n    function scale(x) {\n      return range[((index.get(x) || (ranger.t === \"range\" ? index.set(x, domain.push(x)) : NaN)) - 1) % range.length];\n    }\n    function steps(start, step) {\n      return d3.range(domain.length).map(function(i) {\n        return start + step * i;\n      });\n    }\n    scale.domain = function(x) {\n      if (!arguments.length) return domain;\n      domain = [];\n      index = new d3_Map();\n      var i = -1, n = x.length, xi;\n      while (++i < n) if (!index.has(xi = x[i])) index.set(xi, domain.push(xi));\n      return scale[ranger.t].apply(scale, ranger.a);\n    };\n    scale.range = function(x) {\n      if (!arguments.length) return range;\n      range = x;\n      rangeBand = 0;\n      ranger = {\n        t: \"range\",\n        a: arguments\n      };\n      return scale;\n    };\n    scale.rangePoints = function(x, padding) {\n      if (arguments.length < 2) padding = 0;\n      var start = x[0], stop = x[1], step = domain.length < 2 ? (start = (start + stop) / 2, \n      0) : (stop - start) / (domain.length - 1 + padding);\n      range = steps(start + step * padding / 2, step);\n      rangeBand = 0;\n      ranger = {\n        t: \"rangePoints\",\n        a: arguments\n      };\n      return scale;\n    };\n    scale.rangeRoundPoints = function(x, padding) {\n      if (arguments.length < 2) padding = 0;\n      var start = x[0], stop = x[1], step = domain.length < 2 ? (start = stop = Math.round((start + stop) / 2), \n      0) : (stop - start) / (domain.length - 1 + padding) | 0;\n      range = steps(start + Math.round(step * padding / 2 + (stop - start - (domain.length - 1 + padding) * step) / 2), step);\n      rangeBand = 0;\n      ranger = {\n        t: \"rangeRoundPoints\",\n        a: arguments\n      };\n      return scale;\n    };\n    scale.rangeBands = function(x, padding, outerPadding) {\n      if (arguments.length < 2) padding = 0;\n      if (arguments.length < 3) outerPadding = padding;\n      var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = (stop - start) / (domain.length - padding + 2 * outerPadding);\n      range = steps(start + step * outerPadding, step);\n      if (reverse) range.reverse();\n      rangeBand = step * (1 - padding);\n      ranger = {\n        t: \"rangeBands\",\n        a: arguments\n      };\n      return scale;\n    };\n    scale.rangeRoundBands = function(x, padding, outerPadding) {\n      if (arguments.length < 2) padding = 0;\n      if (arguments.length < 3) outerPadding = padding;\n      var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = Math.floor((stop - start) / (domain.length - padding + 2 * outerPadding));\n      range = steps(start + Math.round((stop - start - (domain.length - padding) * step) / 2), step);\n      if (reverse) range.reverse();\n      rangeBand = Math.round(step * (1 - padding));\n      ranger = {\n        t: \"rangeRoundBands\",\n        a: arguments\n      };\n      return scale;\n    };\n    scale.rangeBand = function() {\n      return rangeBand;\n    };\n    scale.rangeExtent = function() {\n      return d3_scaleExtent(ranger.a[0]);\n    };\n    scale.copy = function() {\n      return d3_scale_ordinal(domain, ranger);\n    };\n    return scale.domain(domain);\n  }\n  d3.scale.category10 = function() {\n    return d3.scale.ordinal().range(d3_category10);\n  };\n  d3.scale.category20 = function() {\n    return d3.scale.ordinal().range(d3_category20);\n  };\n  d3.scale.category20b = function() {\n    return d3.scale.ordinal().range(d3_category20b);\n  };\n  d3.scale.category20c = function() {\n    return d3.scale.ordinal().range(d3_category20c);\n  };\n  var d3_category10 = [ 2062260, 16744206, 2924588, 14034728, 9725885, 9197131, 14907330, 8355711, 12369186, 1556175 ].map(d3_rgbString);\n  var d3_category20 = [ 2062260, 11454440, 16744206, 16759672, 2924588, 10018698, 14034728, 16750742, 9725885, 12955861, 9197131, 12885140, 14907330, 16234194, 8355711, 13092807, 12369186, 14408589, 1556175, 10410725 ].map(d3_rgbString);\n  var d3_category20b = [ 3750777, 5395619, 7040719, 10264286, 6519097, 9216594, 11915115, 13556636, 9202993, 12426809, 15186514, 15190932, 8666169, 11356490, 14049643, 15177372, 8077683, 10834324, 13528509, 14589654 ].map(d3_rgbString);\n  var d3_category20c = [ 3244733, 7057110, 10406625, 13032431, 15095053, 16616764, 16625259, 16634018, 3253076, 7652470, 10607003, 13101504, 7695281, 10394312, 12369372, 14342891, 6513507, 9868950, 12434877, 14277081 ].map(d3_rgbString);\n  d3.scale.quantile = function() {\n    return d3_scale_quantile([], []);\n  };\n  function d3_scale_quantile(domain, range) {\n    var thresholds;\n    function rescale() {\n      var k = 0, q = range.length;\n      thresholds = [];\n      while (++k < q) thresholds[k - 1] = d3.quantile(domain, k / q);\n      return scale;\n    }\n    function scale(x) {\n      if (!isNaN(x = +x)) return range[d3.bisect(thresholds, x)];\n    }\n    scale.domain = function(x) {\n      if (!arguments.length) return domain;\n      domain = x.map(d3_number).filter(d3_numeric).sort(d3_ascending);\n      return rescale();\n    };\n    scale.range = function(x) {\n      if (!arguments.length) return range;\n      range = x;\n      return rescale();\n    };\n    scale.quantiles = function() {\n      return thresholds;\n    };\n    scale.invertExtent = function(y) {\n      y = range.indexOf(y);\n      return y < 0 ? [ NaN, NaN ] : [ y > 0 ? thresholds[y - 1] : domain[0], y < thresholds.length ? thresholds[y] : domain[domain.length - 1] ];\n    };\n    scale.copy = function() {\n      return d3_scale_quantile(domain, range);\n    };\n    return rescale();\n  }\n  d3.scale.quantize = function() {\n    return d3_scale_quantize(0, 1, [ 0, 1 ]);\n  };\n  function d3_scale_quantize(x0, x1, range) {\n    var kx, i;\n    function scale(x) {\n      return range[Math.max(0, Math.min(i, Math.floor(kx * (x - x0))))];\n    }\n    function rescale() {\n      kx = range.length / (x1 - x0);\n      i = range.length - 1;\n      return scale;\n    }\n    scale.domain = function(x) {\n      if (!arguments.length) return [ x0, x1 ];\n      x0 = +x[0];\n      x1 = +x[x.length - 1];\n      return rescale();\n    };\n    scale.range = function(x) {\n      if (!arguments.length) return range;\n      range = x;\n      return rescale();\n    };\n    scale.invertExtent = function(y) {\n      y = range.indexOf(y);\n      y = y < 0 ? NaN : y / kx + x0;\n      return [ y, y + 1 / kx ];\n    };\n    scale.copy = function() {\n      return d3_scale_quantize(x0, x1, range);\n    };\n    return rescale();\n  }\n  d3.scale.threshold = function() {\n    return d3_scale_threshold([ .5 ], [ 0, 1 ]);\n  };\n  function d3_scale_threshold(domain, range) {\n    function scale(x) {\n      if (x <= x) return range[d3.bisect(domain, x)];\n    }\n    scale.domain = function(_) {\n      if (!arguments.length) return domain;\n      domain = _;\n      return scale;\n    };\n    scale.range = function(_) {\n      if (!arguments.length) return range;\n      range = _;\n      return scale;\n    };\n    scale.invertExtent = function(y) {\n      y = range.indexOf(y);\n      return [ domain[y - 1], domain[y] ];\n    };\n    scale.copy = function() {\n      return d3_scale_threshold(domain, range);\n    };\n    return scale;\n  }\n  d3.scale.identity = function() {\n    return d3_scale_identity([ 0, 1 ]);\n  };\n  function d3_scale_identity(domain) {\n    function identity(x) {\n      return +x;\n    }\n    identity.invert = identity;\n    identity.domain = identity.range = function(x) {\n      if (!arguments.length) return domain;\n      domain = x.map(identity);\n      return identity;\n    };\n    identity.ticks = function(m) {\n      return d3_scale_linearTicks(domain, m);\n    };\n    identity.tickFormat = function(m, format) {\n      return d3_scale_linearTickFormat(domain, m, format);\n    };\n    identity.copy = function() {\n      return d3_scale_identity(domain);\n    };\n    return identity;\n  }\n  d3.svg = {};\n  function d3_zero() {\n    return 0;\n  }\n  d3.svg.arc = function() {\n    var innerRadius = d3_svg_arcInnerRadius, outerRadius = d3_svg_arcOuterRadius, cornerRadius = d3_zero, padRadius = d3_svg_arcAuto, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle, padAngle = d3_svg_arcPadAngle;\n    function arc() {\n      var r0 = Math.max(0, +innerRadius.apply(this, arguments)), r1 = Math.max(0, +outerRadius.apply(this, arguments)), a0 = startAngle.apply(this, arguments) - halfπ, a1 = endAngle.apply(this, arguments) - halfπ, da = Math.abs(a1 - a0), cw = a0 > a1 ? 0 : 1;\n      if (r1 < r0) rc = r1, r1 = r0, r0 = rc;\n      if (da >= τε) return circleSegment(r1, cw) + (r0 ? circleSegment(r0, 1 - cw) : \"\") + \"Z\";\n      var rc, cr, rp, ap, p0 = 0, p1 = 0, x0, y0, x1, y1, x2, y2, x3, y3, path = [];\n      if (ap = (+padAngle.apply(this, arguments) || 0) / 2) {\n        rp = padRadius === d3_svg_arcAuto ? Math.sqrt(r0 * r0 + r1 * r1) : +padRadius.apply(this, arguments);\n        if (!cw) p1 *= -1;\n        if (r1) p1 = d3_asin(rp / r1 * Math.sin(ap));\n        if (r0) p0 = d3_asin(rp / r0 * Math.sin(ap));\n      }\n      if (r1) {\n        x0 = r1 * Math.cos(a0 + p1);\n        y0 = r1 * Math.sin(a0 + p1);\n        x1 = r1 * Math.cos(a1 - p1);\n        y1 = r1 * Math.sin(a1 - p1);\n        var l1 = Math.abs(a1 - a0 - 2 * p1) <= π ? 0 : 1;\n        if (p1 && d3_svg_arcSweep(x0, y0, x1, y1) === cw ^ l1) {\n          var h1 = (a0 + a1) / 2;\n          x0 = r1 * Math.cos(h1);\n          y0 = r1 * Math.sin(h1);\n          x1 = y1 = null;\n        }\n      } else {\n        x0 = y0 = 0;\n      }\n      if (r0) {\n        x2 = r0 * Math.cos(a1 - p0);\n        y2 = r0 * Math.sin(a1 - p0);\n        x3 = r0 * Math.cos(a0 + p0);\n        y3 = r0 * Math.sin(a0 + p0);\n        var l0 = Math.abs(a0 - a1 + 2 * p0) <= π ? 0 : 1;\n        if (p0 && d3_svg_arcSweep(x2, y2, x3, y3) === 1 - cw ^ l0) {\n          var h0 = (a0 + a1) / 2;\n          x2 = r0 * Math.cos(h0);\n          y2 = r0 * Math.sin(h0);\n          x3 = y3 = null;\n        }\n      } else {\n        x2 = y2 = 0;\n      }\n      if (da > ε && (rc = Math.min(Math.abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments))) > .001) {\n        cr = r0 < r1 ^ cw ? 0 : 1;\n        var rc1 = rc, rc0 = rc;\n        if (da < π) {\n          var oc = x3 == null ? [ x2, y2 ] : x1 == null ? [ x0, y0 ] : d3_geom_polygonIntersect([ x0, y0 ], [ x3, y3 ], [ x1, y1 ], [ x2, y2 ]), ax = x0 - oc[0], ay = y0 - oc[1], bx = x1 - oc[0], by = y1 - oc[1], kc = 1 / Math.sin(Math.acos((ax * bx + ay * by) / (Math.sqrt(ax * ax + ay * ay) * Math.sqrt(bx * bx + by * by))) / 2), lc = Math.sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n          rc0 = Math.min(rc, (r0 - lc) / (kc - 1));\n          rc1 = Math.min(rc, (r1 - lc) / (kc + 1));\n        }\n        if (x1 != null) {\n          var t30 = d3_svg_arcCornerTangents(x3 == null ? [ x2, y2 ] : [ x3, y3 ], [ x0, y0 ], r1, rc1, cw), t12 = d3_svg_arcCornerTangents([ x1, y1 ], [ x2, y2 ], r1, rc1, cw);\n          if (rc === rc1) {\n            path.push(\"M\", t30[0], \"A\", rc1, \",\", rc1, \" 0 0,\", cr, \" \", t30[1], \"A\", r1, \",\", r1, \" 0 \", 1 - cw ^ d3_svg_arcSweep(t30[1][0], t30[1][1], t12[1][0], t12[1][1]), \",\", cw, \" \", t12[1], \"A\", rc1, \",\", rc1, \" 0 0,\", cr, \" \", t12[0]);\n          } else {\n            path.push(\"M\", t30[0], \"A\", rc1, \",\", rc1, \" 0 1,\", cr, \" \", t12[0]);\n          }\n        } else {\n          path.push(\"M\", x0, \",\", y0);\n        }\n        if (x3 != null) {\n          var t03 = d3_svg_arcCornerTangents([ x0, y0 ], [ x3, y3 ], r0, -rc0, cw), t21 = d3_svg_arcCornerTangents([ x2, y2 ], x1 == null ? [ x0, y0 ] : [ x1, y1 ], r0, -rc0, cw);\n          if (rc === rc0) {\n            path.push(\"L\", t21[0], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t21[1], \"A\", r0, \",\", r0, \" 0 \", cw ^ d3_svg_arcSweep(t21[1][0], t21[1][1], t03[1][0], t03[1][1]), \",\", 1 - cw, \" \", t03[1], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t03[0]);\n          } else {\n            path.push(\"L\", t21[0], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t03[0]);\n          }\n        } else {\n          path.push(\"L\", x2, \",\", y2);\n        }\n      } else {\n        path.push(\"M\", x0, \",\", y0);\n        if (x1 != null) path.push(\"A\", r1, \",\", r1, \" 0 \", l1, \",\", cw, \" \", x1, \",\", y1);\n        path.push(\"L\", x2, \",\", y2);\n        if (x3 != null) path.push(\"A\", r0, \",\", r0, \" 0 \", l0, \",\", 1 - cw, \" \", x3, \",\", y3);\n      }\n      path.push(\"Z\");\n      return path.join(\"\");\n    }\n    function circleSegment(r1, cw) {\n      return \"M0,\" + r1 + \"A\" + r1 + \",\" + r1 + \" 0 1,\" + cw + \" 0,\" + -r1 + \"A\" + r1 + \",\" + r1 + \" 0 1,\" + cw + \" 0,\" + r1;\n    }\n    arc.innerRadius = function(v) {\n      if (!arguments.length) return innerRadius;\n      innerRadius = d3_functor(v);\n      return arc;\n    };\n    arc.outerRadius = function(v) {\n      if (!arguments.length) return outerRadius;\n      outerRadius = d3_functor(v);\n      return arc;\n    };\n    arc.cornerRadius = function(v) {\n      if (!arguments.length) return cornerRadius;\n      cornerRadius = d3_functor(v);\n      return arc;\n    };\n    arc.padRadius = function(v) {\n      if (!arguments.length) return padRadius;\n      padRadius = v == d3_svg_arcAuto ? d3_svg_arcAuto : d3_functor(v);\n      return arc;\n    };\n    arc.startAngle = function(v) {\n      if (!arguments.length) return startAngle;\n      startAngle = d3_functor(v);\n      return arc;\n    };\n    arc.endAngle = function(v) {\n      if (!arguments.length) return endAngle;\n      endAngle = d3_functor(v);\n      return arc;\n    };\n    arc.padAngle = function(v) {\n      if (!arguments.length) return padAngle;\n      padAngle = d3_functor(v);\n      return arc;\n    };\n    arc.centroid = function() {\n      var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2, a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - halfπ;\n      return [ Math.cos(a) * r, Math.sin(a) * r ];\n    };\n    return arc;\n  };\n  var d3_svg_arcAuto = \"auto\";\n  function d3_svg_arcInnerRadius(d) {\n    return d.innerRadius;\n  }\n  function d3_svg_arcOuterRadius(d) {\n    return d.outerRadius;\n  }\n  function d3_svg_arcStartAngle(d) {\n    return d.startAngle;\n  }\n  function d3_svg_arcEndAngle(d) {\n    return d.endAngle;\n  }\n  function d3_svg_arcPadAngle(d) {\n    return d && d.padAngle;\n  }\n  function d3_svg_arcSweep(x0, y0, x1, y1) {\n    return (x0 - x1) * y0 - (y0 - y1) * x0 > 0 ? 0 : 1;\n  }\n  function d3_svg_arcCornerTangents(p0, p1, r1, rc, cw) {\n    var x01 = p0[0] - p1[0], y01 = p0[1] - p1[1], lo = (cw ? rc : -rc) / Math.sqrt(x01 * x01 + y01 * y01), ox = lo * y01, oy = -lo * x01, x1 = p0[0] + ox, y1 = p0[1] + oy, x2 = p1[0] + ox, y2 = p1[1] + oy, x3 = (x1 + x2) / 2, y3 = (y1 + y2) / 2, dx = x2 - x1, dy = y2 - y1, d2 = dx * dx + dy * dy, r = r1 - rc, D = x1 * y2 - x2 * y1, d = (dy < 0 ? -1 : 1) * Math.sqrt(Math.max(0, r * r * d2 - D * D)), cx0 = (D * dy - dx * d) / d2, cy0 = (-D * dx - dy * d) / d2, cx1 = (D * dy + dx * d) / d2, cy1 = (-D * dx + dy * d) / d2, dx0 = cx0 - x3, dy0 = cy0 - y3, dx1 = cx1 - x3, dy1 = cy1 - y3;\n    if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n    return [ [ cx0 - ox, cy0 - oy ], [ cx0 * r1 / r, cy0 * r1 / r ] ];\n  }\n  function d3_svg_line(projection) {\n    var x = d3_geom_pointX, y = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, tension = .7;\n    function line(data) {\n      var segments = [], points = [], i = -1, n = data.length, d, fx = d3_functor(x), fy = d3_functor(y);\n      function segment() {\n        segments.push(\"M\", interpolate(projection(points), tension));\n      }\n      while (++i < n) {\n        if (defined.call(this, d = data[i], i)) {\n          points.push([ +fx.call(this, d, i), +fy.call(this, d, i) ]);\n        } else if (points.length) {\n          segment();\n          points = [];\n        }\n      }\n      if (points.length) segment();\n      return segments.length ? segments.join(\"\") : null;\n    }\n    line.x = function(_) {\n      if (!arguments.length) return x;\n      x = _;\n      return line;\n    };\n    line.y = function(_) {\n      if (!arguments.length) return y;\n      y = _;\n      return line;\n    };\n    line.defined = function(_) {\n      if (!arguments.length) return defined;\n      defined = _;\n      return line;\n    };\n    line.interpolate = function(_) {\n      if (!arguments.length) return interpolateKey;\n      if (typeof _ === \"function\") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;\n      return line;\n    };\n    line.tension = function(_) {\n      if (!arguments.length) return tension;\n      tension = _;\n      return line;\n    };\n    return line;\n  }\n  d3.svg.line = function() {\n    return d3_svg_line(d3_identity);\n  };\n  var d3_svg_lineInterpolators = d3.map({\n    linear: d3_svg_lineLinear,\n    \"linear-closed\": d3_svg_lineLinearClosed,\n    step: d3_svg_lineStep,\n    \"step-before\": d3_svg_lineStepBefore,\n    \"step-after\": d3_svg_lineStepAfter,\n    basis: d3_svg_lineBasis,\n    \"basis-open\": d3_svg_lineBasisOpen,\n    \"basis-closed\": d3_svg_lineBasisClosed,\n    bundle: d3_svg_lineBundle,\n    cardinal: d3_svg_lineCardinal,\n    \"cardinal-open\": d3_svg_lineCardinalOpen,\n    \"cardinal-closed\": d3_svg_lineCardinalClosed,\n    monotone: d3_svg_lineMonotone\n  });\n  d3_svg_lineInterpolators.forEach(function(key, value) {\n    value.key = key;\n    value.closed = /-closed$/.test(key);\n  });\n  function d3_svg_lineLinear(points) {\n    return points.length > 1 ? points.join(\"L\") : points + \"Z\";\n  }\n  function d3_svg_lineLinearClosed(points) {\n    return points.join(\"L\") + \"Z\";\n  }\n  function d3_svg_lineStep(points) {\n    var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n    while (++i < n) path.push(\"H\", (p[0] + (p = points[i])[0]) / 2, \"V\", p[1]);\n    if (n > 1) path.push(\"H\", p[0]);\n    return path.join(\"\");\n  }\n  function d3_svg_lineStepBefore(points) {\n    var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n    while (++i < n) path.push(\"V\", (p = points[i])[1], \"H\", p[0]);\n    return path.join(\"\");\n  }\n  function d3_svg_lineStepAfter(points) {\n    var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n    while (++i < n) path.push(\"H\", (p = points[i])[0], \"V\", p[1]);\n    return path.join(\"\");\n  }\n  function d3_svg_lineCardinalOpen(points, tension) {\n    return points.length < 4 ? d3_svg_lineLinear(points) : points[1] + d3_svg_lineHermite(points.slice(1, -1), d3_svg_lineCardinalTangents(points, tension));\n  }\n  function d3_svg_lineCardinalClosed(points, tension) {\n    return points.length < 3 ? d3_svg_lineLinearClosed(points) : points[0] + d3_svg_lineHermite((points.push(points[0]), \n    points), d3_svg_lineCardinalTangents([ points[points.length - 2] ].concat(points, [ points[1] ]), tension));\n  }\n  function d3_svg_lineCardinal(points, tension) {\n    return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineCardinalTangents(points, tension));\n  }\n  function d3_svg_lineHermite(points, tangents) {\n    if (tangents.length < 1 || points.length != tangents.length && points.length != tangents.length + 2) {\n      return d3_svg_lineLinear(points);\n    }\n    var quad = points.length != tangents.length, path = \"\", p0 = points[0], p = points[1], t0 = tangents[0], t = t0, pi = 1;\n    if (quad) {\n      path += \"Q\" + (p[0] - t0[0] * 2 / 3) + \",\" + (p[1] - t0[1] * 2 / 3) + \",\" + p[0] + \",\" + p[1];\n      p0 = points[1];\n      pi = 2;\n    }\n    if (tangents.length > 1) {\n      t = tangents[1];\n      p = points[pi];\n      pi++;\n      path += \"C\" + (p0[0] + t0[0]) + \",\" + (p0[1] + t0[1]) + \",\" + (p[0] - t[0]) + \",\" + (p[1] - t[1]) + \",\" + p[0] + \",\" + p[1];\n      for (var i = 2; i < tangents.length; i++, pi++) {\n        p = points[pi];\n        t = tangents[i];\n        path += \"S\" + (p[0] - t[0]) + \",\" + (p[1] - t[1]) + \",\" + p[0] + \",\" + p[1];\n      }\n    }\n    if (quad) {\n      var lp = points[pi];\n      path += \"Q\" + (p[0] + t[0] * 2 / 3) + \",\" + (p[1] + t[1] * 2 / 3) + \",\" + lp[0] + \",\" + lp[1];\n    }\n    return path;\n  }\n  function d3_svg_lineCardinalTangents(points, tension) {\n    var tangents = [], a = (1 - tension) / 2, p0, p1 = points[0], p2 = points[1], i = 1, n = points.length;\n    while (++i < n) {\n      p0 = p1;\n      p1 = p2;\n      p2 = points[i];\n      tangents.push([ a * (p2[0] - p0[0]), a * (p2[1] - p0[1]) ]);\n    }\n    return tangents;\n  }\n  function d3_svg_lineBasis(points) {\n    if (points.length < 3) return d3_svg_lineLinear(points);\n    var i = 1, n = points.length, pi = points[0], x0 = pi[0], y0 = pi[1], px = [ x0, x0, x0, (pi = points[1])[0] ], py = [ y0, y0, y0, pi[1] ], path = [ x0, \",\", y0, \"L\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];\n    points.push(points[n - 1]);\n    while (++i <= n) {\n      pi = points[i];\n      px.shift();\n      px.push(pi[0]);\n      py.shift();\n      py.push(pi[1]);\n      d3_svg_lineBasisBezier(path, px, py);\n    }\n    points.pop();\n    path.push(\"L\", pi);\n    return path.join(\"\");\n  }\n  function d3_svg_lineBasisOpen(points) {\n    if (points.length < 4) return d3_svg_lineLinear(points);\n    var path = [], i = -1, n = points.length, pi, px = [ 0 ], py = [ 0 ];\n    while (++i < 3) {\n      pi = points[i];\n      px.push(pi[0]);\n      py.push(pi[1]);\n    }\n    path.push(d3_svg_lineDot4(d3_svg_lineBasisBezier3, px) + \",\" + d3_svg_lineDot4(d3_svg_lineBasisBezier3, py));\n    --i;\n    while (++i < n) {\n      pi = points[i];\n      px.shift();\n      px.push(pi[0]);\n      py.shift();\n      py.push(pi[1]);\n      d3_svg_lineBasisBezier(path, px, py);\n    }\n    return path.join(\"\");\n  }\n  function d3_svg_lineBasisClosed(points) {\n    var path, i = -1, n = points.length, m = n + 4, pi, px = [], py = [];\n    while (++i < 4) {\n      pi = points[i % n];\n      px.push(pi[0]);\n      py.push(pi[1]);\n    }\n    path = [ d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];\n    --i;\n    while (++i < m) {\n      pi = points[i % n];\n      px.shift();\n      px.push(pi[0]);\n      py.shift();\n      py.push(pi[1]);\n      d3_svg_lineBasisBezier(path, px, py);\n    }\n    return path.join(\"\");\n  }\n  function d3_svg_lineBundle(points, tension) {\n    var n = points.length - 1;\n    if (n) {\n      var x0 = points[0][0], y0 = points[0][1], dx = points[n][0] - x0, dy = points[n][1] - y0, i = -1, p, t;\n      while (++i <= n) {\n        p = points[i];\n        t = i / n;\n        p[0] = tension * p[0] + (1 - tension) * (x0 + t * dx);\n        p[1] = tension * p[1] + (1 - tension) * (y0 + t * dy);\n      }\n    }\n    return d3_svg_lineBasis(points);\n  }\n  function d3_svg_lineDot4(a, b) {\n    return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n  }\n  var d3_svg_lineBasisBezier1 = [ 0, 2 / 3, 1 / 3, 0 ], d3_svg_lineBasisBezier2 = [ 0, 1 / 3, 2 / 3, 0 ], d3_svg_lineBasisBezier3 = [ 0, 1 / 6, 2 / 3, 1 / 6 ];\n  function d3_svg_lineBasisBezier(path, x, y) {\n    path.push(\"C\", d3_svg_lineDot4(d3_svg_lineBasisBezier1, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier1, y), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier2, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier2, y), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, y));\n  }\n  function d3_svg_lineSlope(p0, p1) {\n    return (p1[1] - p0[1]) / (p1[0] - p0[0]);\n  }\n  function d3_svg_lineFiniteDifferences(points) {\n    var i = 0, j = points.length - 1, m = [], p0 = points[0], p1 = points[1], d = m[0] = d3_svg_lineSlope(p0, p1);\n    while (++i < j) {\n      m[i] = (d + (d = d3_svg_lineSlope(p0 = p1, p1 = points[i + 1]))) / 2;\n    }\n    m[i] = d;\n    return m;\n  }\n  function d3_svg_lineMonotoneTangents(points) {\n    var tangents = [], d, a, b, s, m = d3_svg_lineFiniteDifferences(points), i = -1, j = points.length - 1;\n    while (++i < j) {\n      d = d3_svg_lineSlope(points[i], points[i + 1]);\n      if (abs(d) < ε) {\n        m[i] = m[i + 1] = 0;\n      } else {\n        a = m[i] / d;\n        b = m[i + 1] / d;\n        s = a * a + b * b;\n        if (s > 9) {\n          s = d * 3 / Math.sqrt(s);\n          m[i] = s * a;\n          m[i + 1] = s * b;\n        }\n      }\n    }\n    i = -1;\n    while (++i <= j) {\n      s = (points[Math.min(j, i + 1)][0] - points[Math.max(0, i - 1)][0]) / (6 * (1 + m[i] * m[i]));\n      tangents.push([ s || 0, m[i] * s || 0 ]);\n    }\n    return tangents;\n  }\n  function d3_svg_lineMonotone(points) {\n    return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineMonotoneTangents(points));\n  }\n  d3.svg.line.radial = function() {\n    var line = d3_svg_line(d3_svg_lineRadial);\n    line.radius = line.x, delete line.x;\n    line.angle = line.y, delete line.y;\n    return line;\n  };\n  function d3_svg_lineRadial(points) {\n    var point, i = -1, n = points.length, r, a;\n    while (++i < n) {\n      point = points[i];\n      r = point[0];\n      a = point[1] - halfπ;\n      point[0] = r * Math.cos(a);\n      point[1] = r * Math.sin(a);\n    }\n    return points;\n  }\n  function d3_svg_area(projection) {\n    var x0 = d3_geom_pointX, x1 = d3_geom_pointX, y0 = 0, y1 = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, interpolateReverse = interpolate, L = \"L\", tension = .7;\n    function area(data) {\n      var segments = [], points0 = [], points1 = [], i = -1, n = data.length, d, fx0 = d3_functor(x0), fy0 = d3_functor(y0), fx1 = x0 === x1 ? function() {\n        return x;\n      } : d3_functor(x1), fy1 = y0 === y1 ? function() {\n        return y;\n      } : d3_functor(y1), x, y;\n      function segment() {\n        segments.push(\"M\", interpolate(projection(points1), tension), L, interpolateReverse(projection(points0.reverse()), tension), \"Z\");\n      }\n      while (++i < n) {\n        if (defined.call(this, d = data[i], i)) {\n          points0.push([ x = +fx0.call(this, d, i), y = +fy0.call(this, d, i) ]);\n          points1.push([ +fx1.call(this, d, i), +fy1.call(this, d, i) ]);\n        } else if (points0.length) {\n          segment();\n          points0 = [];\n          points1 = [];\n        }\n      }\n      if (points0.length) segment();\n      return segments.length ? segments.join(\"\") : null;\n    }\n    area.x = function(_) {\n      if (!arguments.length) return x1;\n      x0 = x1 = _;\n      return area;\n    };\n    area.x0 = function(_) {\n      if (!arguments.length) return x0;\n      x0 = _;\n      return area;\n    };\n    area.x1 = function(_) {\n      if (!arguments.length) return x1;\n      x1 = _;\n      return area;\n    };\n    area.y = function(_) {\n      if (!arguments.length) return y1;\n      y0 = y1 = _;\n      return area;\n    };\n    area.y0 = function(_) {\n      if (!arguments.length) return y0;\n      y0 = _;\n      return area;\n    };\n    area.y1 = function(_) {\n      if (!arguments.length) return y1;\n      y1 = _;\n      return area;\n    };\n    area.defined = function(_) {\n      if (!arguments.length) return defined;\n      defined = _;\n      return area;\n    };\n    area.interpolate = function(_) {\n      if (!arguments.length) return interpolateKey;\n      if (typeof _ === \"function\") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;\n      interpolateReverse = interpolate.reverse || interpolate;\n      L = interpolate.closed ? \"M\" : \"L\";\n      return area;\n    };\n    area.tension = function(_) {\n      if (!arguments.length) return tension;\n      tension = _;\n      return area;\n    };\n    return area;\n  }\n  d3_svg_lineStepBefore.reverse = d3_svg_lineStepAfter;\n  d3_svg_lineStepAfter.reverse = d3_svg_lineStepBefore;\n  d3.svg.area = function() {\n    return d3_svg_area(d3_identity);\n  };\n  d3.svg.area.radial = function() {\n    var area = d3_svg_area(d3_svg_lineRadial);\n    area.radius = area.x, delete area.x;\n    area.innerRadius = area.x0, delete area.x0;\n    area.outerRadius = area.x1, delete area.x1;\n    area.angle = area.y, delete area.y;\n    area.startAngle = area.y0, delete area.y0;\n    area.endAngle = area.y1, delete area.y1;\n    return area;\n  };\n  d3.svg.chord = function() {\n    var source = d3_source, target = d3_target, radius = d3_svg_chordRadius, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle;\n    function chord(d, i) {\n      var s = subgroup(this, source, d, i), t = subgroup(this, target, d, i);\n      return \"M\" + s.p0 + arc(s.r, s.p1, s.a1 - s.a0) + (equals(s, t) ? curve(s.r, s.p1, s.r, s.p0) : curve(s.r, s.p1, t.r, t.p0) + arc(t.r, t.p1, t.a1 - t.a0) + curve(t.r, t.p1, s.r, s.p0)) + \"Z\";\n    }\n    function subgroup(self, f, d, i) {\n      var subgroup = f.call(self, d, i), r = radius.call(self, subgroup, i), a0 = startAngle.call(self, subgroup, i) - halfπ, a1 = endAngle.call(self, subgroup, i) - halfπ;\n      return {\n        r: r,\n        a0: a0,\n        a1: a1,\n        p0: [ r * Math.cos(a0), r * Math.sin(a0) ],\n        p1: [ r * Math.cos(a1), r * Math.sin(a1) ]\n      };\n    }\n    function equals(a, b) {\n      return a.a0 == b.a0 && a.a1 == b.a1;\n    }\n    function arc(r, p, a) {\n      return \"A\" + r + \",\" + r + \" 0 \" + +(a > π) + \",1 \" + p;\n    }\n    function curve(r0, p0, r1, p1) {\n      return \"Q 0,0 \" + p1;\n    }\n    chord.radius = function(v) {\n      if (!arguments.length) return radius;\n      radius = d3_functor(v);\n      return chord;\n    };\n    chord.source = function(v) {\n      if (!arguments.length) return source;\n      source = d3_functor(v);\n      return chord;\n    };\n    chord.target = function(v) {\n      if (!arguments.length) return target;\n      target = d3_functor(v);\n      return chord;\n    };\n    chord.startAngle = function(v) {\n      if (!arguments.length) return startAngle;\n      startAngle = d3_functor(v);\n      return chord;\n    };\n    chord.endAngle = function(v) {\n      if (!arguments.length) return endAngle;\n      endAngle = d3_functor(v);\n      return chord;\n    };\n    return chord;\n  };\n  function d3_svg_chordRadius(d) {\n    return d.radius;\n  }\n  d3.svg.diagonal = function() {\n    var source = d3_source, target = d3_target, projection = d3_svg_diagonalProjection;\n    function diagonal(d, i) {\n      var p0 = source.call(this, d, i), p3 = target.call(this, d, i), m = (p0.y + p3.y) / 2, p = [ p0, {\n        x: p0.x,\n        y: m\n      }, {\n        x: p3.x,\n        y: m\n      }, p3 ];\n      p = p.map(projection);\n      return \"M\" + p[0] + \"C\" + p[1] + \" \" + p[2] + \" \" + p[3];\n    }\n    diagonal.source = function(x) {\n      if (!arguments.length) return source;\n      source = d3_functor(x);\n      return diagonal;\n    };\n    diagonal.target = function(x) {\n      if (!arguments.length) return target;\n      target = d3_functor(x);\n      return diagonal;\n    };\n    diagonal.projection = function(x) {\n      if (!arguments.length) return projection;\n      projection = x;\n      return diagonal;\n    };\n    return diagonal;\n  };\n  function d3_svg_diagonalProjection(d) {\n    return [ d.x, d.y ];\n  }\n  d3.svg.diagonal.radial = function() {\n    var diagonal = d3.svg.diagonal(), projection = d3_svg_diagonalProjection, projection_ = diagonal.projection;\n    diagonal.projection = function(x) {\n      return arguments.length ? projection_(d3_svg_diagonalRadialProjection(projection = x)) : projection;\n    };\n    return diagonal;\n  };\n  function d3_svg_diagonalRadialProjection(projection) {\n    return function() {\n      var d = projection.apply(this, arguments), r = d[0], a = d[1] - halfπ;\n      return [ r * Math.cos(a), r * Math.sin(a) ];\n    };\n  }\n  d3.svg.symbol = function() {\n    var type = d3_svg_symbolType, size = d3_svg_symbolSize;\n    function symbol(d, i) {\n      return (d3_svg_symbols.get(type.call(this, d, i)) || d3_svg_symbolCircle)(size.call(this, d, i));\n    }\n    symbol.type = function(x) {\n      if (!arguments.length) return type;\n      type = d3_functor(x);\n      return symbol;\n    };\n    symbol.size = function(x) {\n      if (!arguments.length) return size;\n      size = d3_functor(x);\n      return symbol;\n    };\n    return symbol;\n  };\n  function d3_svg_symbolSize() {\n    return 64;\n  }\n  function d3_svg_symbolType() {\n    return \"circle\";\n  }\n  function d3_svg_symbolCircle(size) {\n    var r = Math.sqrt(size / π);\n    return \"M0,\" + r + \"A\" + r + \",\" + r + \" 0 1,1 0,\" + -r + \"A\" + r + \",\" + r + \" 0 1,1 0,\" + r + \"Z\";\n  }\n  var d3_svg_symbols = d3.map({\n    circle: d3_svg_symbolCircle,\n    cross: function(size) {\n      var r = Math.sqrt(size / 5) / 2;\n      return \"M\" + -3 * r + \",\" + -r + \"H\" + -r + \"V\" + -3 * r + \"H\" + r + \"V\" + -r + \"H\" + 3 * r + \"V\" + r + \"H\" + r + \"V\" + 3 * r + \"H\" + -r + \"V\" + r + \"H\" + -3 * r + \"Z\";\n    },\n    diamond: function(size) {\n      var ry = Math.sqrt(size / (2 * d3_svg_symbolTan30)), rx = ry * d3_svg_symbolTan30;\n      return \"M0,\" + -ry + \"L\" + rx + \",0\" + \" 0,\" + ry + \" \" + -rx + \",0\" + \"Z\";\n    },\n    square: function(size) {\n      var r = Math.sqrt(size) / 2;\n      return \"M\" + -r + \",\" + -r + \"L\" + r + \",\" + -r + \" \" + r + \",\" + r + \" \" + -r + \",\" + r + \"Z\";\n    },\n    \"triangle-down\": function(size) {\n      var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;\n      return \"M0,\" + ry + \"L\" + rx + \",\" + -ry + \" \" + -rx + \",\" + -ry + \"Z\";\n    },\n    \"triangle-up\": function(size) {\n      var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;\n      return \"M0,\" + -ry + \"L\" + rx + \",\" + ry + \" \" + -rx + \",\" + ry + \"Z\";\n    }\n  });\n  d3.svg.symbolTypes = d3_svg_symbols.keys();\n  var d3_svg_symbolSqrt3 = Math.sqrt(3), d3_svg_symbolTan30 = Math.tan(30 * d3_radians);\n  d3_selectionPrototype.transition = function(name) {\n    var id = d3_transitionInheritId || ++d3_transitionId, ns = d3_transitionNamespace(name), subgroups = [], subgroup, node, transition = d3_transitionInherit || {\n      time: Date.now(),\n      ease: d3_ease_cubicInOut,\n      delay: 0,\n      duration: 250\n    };\n    for (var j = -1, m = this.length; ++j < m; ) {\n      subgroups.push(subgroup = []);\n      for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n        if (node = group[i]) d3_transitionNode(node, i, ns, id, transition);\n        subgroup.push(node);\n      }\n    }\n    return d3_transition(subgroups, ns, id);\n  };\n  d3_selectionPrototype.interrupt = function(name) {\n    return this.each(name == null ? d3_selection_interrupt : d3_selection_interruptNS(d3_transitionNamespace(name)));\n  };\n  var d3_selection_interrupt = d3_selection_interruptNS(d3_transitionNamespace());\n  function d3_selection_interruptNS(ns) {\n    return function() {\n      var lock, activeId, active;\n      if ((lock = this[ns]) && (active = lock[activeId = lock.active])) {\n        active.timer.c = null;\n        active.timer.t = NaN;\n        if (--lock.count) delete lock[activeId]; else delete this[ns];\n        lock.active += .5;\n        active.event && active.event.interrupt.call(this, this.__data__, active.index);\n      }\n    };\n  }\n  function d3_transition(groups, ns, id) {\n    d3_subclass(groups, d3_transitionPrototype);\n    groups.namespace = ns;\n    groups.id = id;\n    return groups;\n  }\n  var d3_transitionPrototype = [], d3_transitionId = 0, d3_transitionInheritId, d3_transitionInherit;\n  d3_transitionPrototype.call = d3_selectionPrototype.call;\n  d3_transitionPrototype.empty = d3_selectionPrototype.empty;\n  d3_transitionPrototype.node = d3_selectionPrototype.node;\n  d3_transitionPrototype.size = d3_selectionPrototype.size;\n  d3.transition = function(selection, name) {\n    return selection && selection.transition ? d3_transitionInheritId ? selection.transition(name) : selection : d3.selection().transition(selection);\n  };\n  d3.transition.prototype = d3_transitionPrototype;\n  d3_transitionPrototype.select = function(selector) {\n    var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnode, node;\n    selector = d3_selection_selector(selector);\n    for (var j = -1, m = this.length; ++j < m; ) {\n      subgroups.push(subgroup = []);\n      for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n        if ((node = group[i]) && (subnode = selector.call(node, node.__data__, i, j))) {\n          if (\"__data__\" in node) subnode.__data__ = node.__data__;\n          d3_transitionNode(subnode, i, ns, id, node[ns][id]);\n          subgroup.push(subnode);\n        } else {\n          subgroup.push(null);\n        }\n      }\n    }\n    return d3_transition(subgroups, ns, id);\n  };\n  d3_transitionPrototype.selectAll = function(selector) {\n    var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnodes, node, subnode, transition;\n    selector = d3_selection_selectorAll(selector);\n    for (var j = -1, m = this.length; ++j < m; ) {\n      for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n        if (node = group[i]) {\n          transition = node[ns][id];\n          subnodes = selector.call(node, node.__data__, i, j);\n          subgroups.push(subgroup = []);\n          for (var k = -1, o = subnodes.length; ++k < o; ) {\n            if (subnode = subnodes[k]) d3_transitionNode(subnode, k, ns, id, transition);\n            subgroup.push(subnode);\n          }\n        }\n      }\n    }\n    return d3_transition(subgroups, ns, id);\n  };\n  d3_transitionPrototype.filter = function(filter) {\n    var subgroups = [], subgroup, group, node;\n    if (typeof filter !== \"function\") filter = d3_selection_filter(filter);\n    for (var j = 0, m = this.length; j < m; j++) {\n      subgroups.push(subgroup = []);\n      for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n        if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {\n          subgroup.push(node);\n        }\n      }\n    }\n    return d3_transition(subgroups, this.namespace, this.id);\n  };\n  d3_transitionPrototype.tween = function(name, tween) {\n    var id = this.id, ns = this.namespace;\n    if (arguments.length < 2) return this.node()[ns][id].tween.get(name);\n    return d3_selection_each(this, tween == null ? function(node) {\n      node[ns][id].tween.remove(name);\n    } : function(node) {\n      node[ns][id].tween.set(name, tween);\n    });\n  };\n  function d3_transition_tween(groups, name, value, tween) {\n    var id = groups.id, ns = groups.namespace;\n    return d3_selection_each(groups, typeof value === \"function\" ? function(node, i, j) {\n      node[ns][id].tween.set(name, tween(value.call(node, node.__data__, i, j)));\n    } : (value = tween(value), function(node) {\n      node[ns][id].tween.set(name, value);\n    }));\n  }\n  d3_transitionPrototype.attr = function(nameNS, value) {\n    if (arguments.length < 2) {\n      for (value in nameNS) this.attr(value, nameNS[value]);\n      return this;\n    }\n    var interpolate = nameNS == \"transform\" ? d3_interpolateTransform : d3_interpolate, name = d3.ns.qualify(nameNS);\n    function attrNull() {\n      this.removeAttribute(name);\n    }\n    function attrNullNS() {\n      this.removeAttributeNS(name.space, name.local);\n    }\n    function attrTween(b) {\n      return b == null ? attrNull : (b += \"\", function() {\n        var a = this.getAttribute(name), i;\n        return a !== b && (i = interpolate(a, b), function(t) {\n          this.setAttribute(name, i(t));\n        });\n      });\n    }\n    function attrTweenNS(b) {\n      return b == null ? attrNullNS : (b += \"\", function() {\n        var a = this.getAttributeNS(name.space, name.local), i;\n        return a !== b && (i = interpolate(a, b), function(t) {\n          this.setAttributeNS(name.space, name.local, i(t));\n        });\n      });\n    }\n    return d3_transition_tween(this, \"attr.\" + nameNS, value, name.local ? attrTweenNS : attrTween);\n  };\n  d3_transitionPrototype.attrTween = function(nameNS, tween) {\n    var name = d3.ns.qualify(nameNS);\n    function attrTween(d, i) {\n      var f = tween.call(this, d, i, this.getAttribute(name));\n      return f && function(t) {\n        this.setAttribute(name, f(t));\n      };\n    }\n    function attrTweenNS(d, i) {\n      var f = tween.call(this, d, i, this.getAttributeNS(name.space, name.local));\n      return f && function(t) {\n        this.setAttributeNS(name.space, name.local, f(t));\n      };\n    }\n    return this.tween(\"attr.\" + nameNS, name.local ? attrTweenNS : attrTween);\n  };\n  d3_transitionPrototype.style = function(name, value, priority) {\n    var n = arguments.length;\n    if (n < 3) {\n      if (typeof name !== \"string\") {\n        if (n < 2) value = \"\";\n        for (priority in name) this.style(priority, name[priority], value);\n        return this;\n      }\n      priority = \"\";\n    }\n    function styleNull() {\n      this.style.removeProperty(name);\n    }\n    function styleString(b) {\n      return b == null ? styleNull : (b += \"\", function() {\n        var a = d3_window(this).getComputedStyle(this, null).getPropertyValue(name), i;\n        return a !== b && (i = d3_interpolate(a, b), function(t) {\n          this.style.setProperty(name, i(t), priority);\n        });\n      });\n    }\n    return d3_transition_tween(this, \"style.\" + name, value, styleString);\n  };\n  d3_transitionPrototype.styleTween = function(name, tween, priority) {\n    if (arguments.length < 3) priority = \"\";\n    function styleTween(d, i) {\n      var f = tween.call(this, d, i, d3_window(this).getComputedStyle(this, null).getPropertyValue(name));\n      return f && function(t) {\n        this.style.setProperty(name, f(t), priority);\n      };\n    }\n    return this.tween(\"style.\" + name, styleTween);\n  };\n  d3_transitionPrototype.text = function(value) {\n    return d3_transition_tween(this, \"text\", value, d3_transition_text);\n  };\n  function d3_transition_text(b) {\n    if (b == null) b = \"\";\n    return function() {\n      this.textContent = b;\n    };\n  }\n  d3_transitionPrototype.remove = function() {\n    var ns = this.namespace;\n    return this.each(\"end.transition\", function() {\n      var p;\n      if (this[ns].count < 2 && (p = this.parentNode)) p.removeChild(this);\n    });\n  };\n  d3_transitionPrototype.ease = function(value) {\n    var id = this.id, ns = this.namespace;\n    if (arguments.length < 1) return this.node()[ns][id].ease;\n    if (typeof value !== \"function\") value = d3.ease.apply(d3, arguments);\n    return d3_selection_each(this, function(node) {\n      node[ns][id].ease = value;\n    });\n  };\n  d3_transitionPrototype.delay = function(value) {\n    var id = this.id, ns = this.namespace;\n    if (arguments.length < 1) return this.node()[ns][id].delay;\n    return d3_selection_each(this, typeof value === \"function\" ? function(node, i, j) {\n      node[ns][id].delay = +value.call(node, node.__data__, i, j);\n    } : (value = +value, function(node) {\n      node[ns][id].delay = value;\n    }));\n  };\n  d3_transitionPrototype.duration = function(value) {\n    var id = this.id, ns = this.namespace;\n    if (arguments.length < 1) return this.node()[ns][id].duration;\n    return d3_selection_each(this, typeof value === \"function\" ? function(node, i, j) {\n      node[ns][id].duration = Math.max(1, value.call(node, node.__data__, i, j));\n    } : (value = Math.max(1, value), function(node) {\n      node[ns][id].duration = value;\n    }));\n  };\n  d3_transitionPrototype.each = function(type, listener) {\n    var id = this.id, ns = this.namespace;\n    if (arguments.length < 2) {\n      var inherit = d3_transitionInherit, inheritId = d3_transitionInheritId;\n      try {\n        d3_transitionInheritId = id;\n        d3_selection_each(this, function(node, i, j) {\n          d3_transitionInherit = node[ns][id];\n          type.call(node, node.__data__, i, j);\n        });\n      } finally {\n        d3_transitionInherit = inherit;\n        d3_transitionInheritId = inheritId;\n      }\n    } else {\n      d3_selection_each(this, function(node) {\n        var transition = node[ns][id];\n        (transition.event || (transition.event = d3.dispatch(\"start\", \"end\", \"interrupt\"))).on(type, listener);\n      });\n    }\n    return this;\n  };\n  d3_transitionPrototype.transition = function() {\n    var id0 = this.id, id1 = ++d3_transitionId, ns = this.namespace, subgroups = [], subgroup, group, node, transition;\n    for (var j = 0, m = this.length; j < m; j++) {\n      subgroups.push(subgroup = []);\n      for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n        if (node = group[i]) {\n          transition = node[ns][id0];\n          d3_transitionNode(node, i, ns, id1, {\n            time: transition.time,\n            ease: transition.ease,\n            delay: transition.delay + transition.duration,\n            duration: transition.duration\n          });\n        }\n        subgroup.push(node);\n      }\n    }\n    return d3_transition(subgroups, ns, id1);\n  };\n  function d3_transitionNamespace(name) {\n    return name == null ? \"__transition__\" : \"__transition_\" + name + \"__\";\n  }\n  function d3_transitionNode(node, i, ns, id, inherit) {\n    var lock = node[ns] || (node[ns] = {\n      active: 0,\n      count: 0\n    }), transition = lock[id], time, timer, duration, ease, tweens;\n    function schedule(elapsed) {\n      var delay = transition.delay;\n      timer.t = delay + time;\n      if (delay <= elapsed) return start(elapsed - delay);\n      timer.c = start;\n    }\n    function start(elapsed) {\n      var activeId = lock.active, active = lock[activeId];\n      if (active) {\n        active.timer.c = null;\n        active.timer.t = NaN;\n        --lock.count;\n        delete lock[activeId];\n        active.event && active.event.interrupt.call(node, node.__data__, active.index);\n      }\n      for (var cancelId in lock) {\n        if (+cancelId < id) {\n          var cancel = lock[cancelId];\n          cancel.timer.c = null;\n          cancel.timer.t = NaN;\n          --lock.count;\n          delete lock[cancelId];\n        }\n      }\n      timer.c = tick;\n      d3_timer(function() {\n        if (timer.c && tick(elapsed || 1)) {\n          timer.c = null;\n          timer.t = NaN;\n        }\n        return 1;\n      }, 0, time);\n      lock.active = id;\n      transition.event && transition.event.start.call(node, node.__data__, i);\n      tweens = [];\n      transition.tween.forEach(function(key, value) {\n        if (value = value.call(node, node.__data__, i)) {\n          tweens.push(value);\n        }\n      });\n      ease = transition.ease;\n      duration = transition.duration;\n    }\n    function tick(elapsed) {\n      var t = elapsed / duration, e = ease(t), n = tweens.length;\n      while (n > 0) {\n        tweens[--n].call(node, e);\n      }\n      if (t >= 1) {\n        transition.event && transition.event.end.call(node, node.__data__, i);\n        if (--lock.count) delete lock[id]; else delete node[ns];\n        return 1;\n      }\n    }\n    if (!transition) {\n      time = inherit.time;\n      timer = d3_timer(schedule, 0, time);\n      transition = lock[id] = {\n        tween: new d3_Map(),\n        time: time,\n        timer: timer,\n        delay: inherit.delay,\n        duration: inherit.duration,\n        ease: inherit.ease,\n        index: i\n      };\n      inherit = null;\n      ++lock.count;\n    }\n  }\n  d3.svg.axis = function() {\n    var scale = d3.scale.linear(), orient = d3_svg_axisDefaultOrient, innerTickSize = 6, outerTickSize = 6, tickPadding = 3, tickArguments_ = [ 10 ], tickValues = null, tickFormat_;\n    function axis(g) {\n      g.each(function() {\n        var g = d3.select(this);\n        var scale0 = this.__chart__ || scale, scale1 = this.__chart__ = scale.copy();\n        var ticks = tickValues == null ? scale1.ticks ? scale1.ticks.apply(scale1, tickArguments_) : scale1.domain() : tickValues, tickFormat = tickFormat_ == null ? scale1.tickFormat ? scale1.tickFormat.apply(scale1, tickArguments_) : d3_identity : tickFormat_, tick = g.selectAll(\".tick\").data(ticks, scale1), tickEnter = tick.enter().insert(\"g\", \".domain\").attr(\"class\", \"tick\").style(\"opacity\", ε), tickExit = d3.transition(tick.exit()).style(\"opacity\", ε).remove(), tickUpdate = d3.transition(tick.order()).style(\"opacity\", 1), tickSpacing = Math.max(innerTickSize, 0) + tickPadding, tickTransform;\n        var range = d3_scaleRange(scale1), path = g.selectAll(\".domain\").data([ 0 ]), pathUpdate = (path.enter().append(\"path\").attr(\"class\", \"domain\"), \n        d3.transition(path));\n        tickEnter.append(\"line\");\n        tickEnter.append(\"text\");\n        var lineEnter = tickEnter.select(\"line\"), lineUpdate = tickUpdate.select(\"line\"), text = tick.select(\"text\").text(tickFormat), textEnter = tickEnter.select(\"text\"), textUpdate = tickUpdate.select(\"text\"), sign = orient === \"top\" || orient === \"left\" ? -1 : 1, x1, x2, y1, y2;\n        if (orient === \"bottom\" || orient === \"top\") {\n          tickTransform = d3_svg_axisX, x1 = \"x\", y1 = \"y\", x2 = \"x2\", y2 = \"y2\";\n          text.attr(\"dy\", sign < 0 ? \"0em\" : \".71em\").style(\"text-anchor\", \"middle\");\n          pathUpdate.attr(\"d\", \"M\" + range[0] + \",\" + sign * outerTickSize + \"V0H\" + range[1] + \"V\" + sign * outerTickSize);\n        } else {\n          tickTransform = d3_svg_axisY, x1 = \"y\", y1 = \"x\", x2 = \"y2\", y2 = \"x2\";\n          text.attr(\"dy\", \".32em\").style(\"text-anchor\", sign < 0 ? \"end\" : \"start\");\n          pathUpdate.attr(\"d\", \"M\" + sign * outerTickSize + \",\" + range[0] + \"H0V\" + range[1] + \"H\" + sign * outerTickSize);\n        }\n        lineEnter.attr(y2, sign * innerTickSize);\n        textEnter.attr(y1, sign * tickSpacing);\n        lineUpdate.attr(x2, 0).attr(y2, sign * innerTickSize);\n        textUpdate.attr(x1, 0).attr(y1, sign * tickSpacing);\n        if (scale1.rangeBand) {\n          var x = scale1, dx = x.rangeBand() / 2;\n          scale0 = scale1 = function(d) {\n            return x(d) + dx;\n          };\n        } else if (scale0.rangeBand) {\n          scale0 = scale1;\n        } else {\n          tickExit.call(tickTransform, scale1, scale0);\n        }\n        tickEnter.call(tickTransform, scale0, scale1);\n        tickUpdate.call(tickTransform, scale1, scale1);\n      });\n    }\n    axis.scale = function(x) {\n      if (!arguments.length) return scale;\n      scale = x;\n      return axis;\n    };\n    axis.orient = function(x) {\n      if (!arguments.length) return orient;\n      orient = x in d3_svg_axisOrients ? x + \"\" : d3_svg_axisDefaultOrient;\n      return axis;\n    };\n    axis.ticks = function() {\n      if (!arguments.length) return tickArguments_;\n      tickArguments_ = d3_array(arguments);\n      return axis;\n    };\n    axis.tickValues = function(x) {\n      if (!arguments.length) return tickValues;\n      tickValues = x;\n      return axis;\n    };\n    axis.tickFormat = function(x) {\n      if (!arguments.length) return tickFormat_;\n      tickFormat_ = x;\n      return axis;\n    };\n    axis.tickSize = function(x) {\n      var n = arguments.length;\n      if (!n) return innerTickSize;\n      innerTickSize = +x;\n      outerTickSize = +arguments[n - 1];\n      return axis;\n    };\n    axis.innerTickSize = function(x) {\n      if (!arguments.length) return innerTickSize;\n      innerTickSize = +x;\n      return axis;\n    };\n    axis.outerTickSize = function(x) {\n      if (!arguments.length) return outerTickSize;\n      outerTickSize = +x;\n      return axis;\n    };\n    axis.tickPadding = function(x) {\n      if (!arguments.length) return tickPadding;\n      tickPadding = +x;\n      return axis;\n    };\n    axis.tickSubdivide = function() {\n      return arguments.length && axis;\n    };\n    return axis;\n  };\n  var d3_svg_axisDefaultOrient = \"bottom\", d3_svg_axisOrients = {\n    top: 1,\n    right: 1,\n    bottom: 1,\n    left: 1\n  };\n  function d3_svg_axisX(selection, x0, x1) {\n    selection.attr(\"transform\", function(d) {\n      var v0 = x0(d);\n      return \"translate(\" + (isFinite(v0) ? v0 : x1(d)) + \",0)\";\n    });\n  }\n  function d3_svg_axisY(selection, y0, y1) {\n    selection.attr(\"transform\", function(d) {\n      var v0 = y0(d);\n      return \"translate(0,\" + (isFinite(v0) ? v0 : y1(d)) + \")\";\n    });\n  }\n  d3.svg.brush = function() {\n    var event = d3_eventDispatch(brush, \"brushstart\", \"brush\", \"brushend\"), x = null, y = null, xExtent = [ 0, 0 ], yExtent = [ 0, 0 ], xExtentDomain, yExtentDomain, xClamp = true, yClamp = true, resizes = d3_svg_brushResizes[0];\n    function brush(g) {\n      g.each(function() {\n        var g = d3.select(this).style(\"pointer-events\", \"all\").style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\").on(\"mousedown.brush\", brushstart).on(\"touchstart.brush\", brushstart);\n        var background = g.selectAll(\".background\").data([ 0 ]);\n        background.enter().append(\"rect\").attr(\"class\", \"background\").style(\"visibility\", \"hidden\").style(\"cursor\", \"crosshair\");\n        g.selectAll(\".extent\").data([ 0 ]).enter().append(\"rect\").attr(\"class\", \"extent\").style(\"cursor\", \"move\");\n        var resize = g.selectAll(\".resize\").data(resizes, d3_identity);\n        resize.exit().remove();\n        resize.enter().append(\"g\").attr(\"class\", function(d) {\n          return \"resize \" + d;\n        }).style(\"cursor\", function(d) {\n          return d3_svg_brushCursor[d];\n        }).append(\"rect\").attr(\"x\", function(d) {\n          return /[ew]$/.test(d) ? -3 : null;\n        }).attr(\"y\", function(d) {\n          return /^[ns]/.test(d) ? -3 : null;\n        }).attr(\"width\", 6).attr(\"height\", 6).style(\"visibility\", \"hidden\");\n        resize.style(\"display\", brush.empty() ? \"none\" : null);\n        var gUpdate = d3.transition(g), backgroundUpdate = d3.transition(background), range;\n        if (x) {\n          range = d3_scaleRange(x);\n          backgroundUpdate.attr(\"x\", range[0]).attr(\"width\", range[1] - range[0]);\n          redrawX(gUpdate);\n        }\n        if (y) {\n          range = d3_scaleRange(y);\n          backgroundUpdate.attr(\"y\", range[0]).attr(\"height\", range[1] - range[0]);\n          redrawY(gUpdate);\n        }\n        redraw(gUpdate);\n      });\n    }\n    brush.event = function(g) {\n      g.each(function() {\n        var event_ = event.of(this, arguments), extent1 = {\n          x: xExtent,\n          y: yExtent,\n          i: xExtentDomain,\n          j: yExtentDomain\n        }, extent0 = this.__chart__ || extent1;\n        this.__chart__ = extent1;\n        if (d3_transitionInheritId) {\n          d3.select(this).transition().each(\"start.brush\", function() {\n            xExtentDomain = extent0.i;\n            yExtentDomain = extent0.j;\n            xExtent = extent0.x;\n            yExtent = extent0.y;\n            event_({\n              type: \"brushstart\"\n            });\n          }).tween(\"brush:brush\", function() {\n            var xi = d3_interpolateArray(xExtent, extent1.x), yi = d3_interpolateArray(yExtent, extent1.y);\n            xExtentDomain = yExtentDomain = null;\n            return function(t) {\n              xExtent = extent1.x = xi(t);\n              yExtent = extent1.y = yi(t);\n              event_({\n                type: \"brush\",\n                mode: \"resize\"\n              });\n            };\n          }).each(\"end.brush\", function() {\n            xExtentDomain = extent1.i;\n            yExtentDomain = extent1.j;\n            event_({\n              type: \"brush\",\n              mode: \"resize\"\n            });\n            event_({\n              type: \"brushend\"\n            });\n          });\n        } else {\n          event_({\n            type: \"brushstart\"\n          });\n          event_({\n            type: \"brush\",\n            mode: \"resize\"\n          });\n          event_({\n            type: \"brushend\"\n          });\n        }\n      });\n    };\n    function redraw(g) {\n      g.selectAll(\".resize\").attr(\"transform\", function(d) {\n        return \"translate(\" + xExtent[+/e$/.test(d)] + \",\" + yExtent[+/^s/.test(d)] + \")\";\n      });\n    }\n    function redrawX(g) {\n      g.select(\".extent\").attr(\"x\", xExtent[0]);\n      g.selectAll(\".extent,.n>rect,.s>rect\").attr(\"width\", xExtent[1] - xExtent[0]);\n    }\n    function redrawY(g) {\n      g.select(\".extent\").attr(\"y\", yExtent[0]);\n      g.selectAll(\".extent,.e>rect,.w>rect\").attr(\"height\", yExtent[1] - yExtent[0]);\n    }\n    function brushstart() {\n      var target = this, eventTarget = d3.select(d3.event.target), event_ = event.of(target, arguments), g = d3.select(target), resizing = eventTarget.datum(), resizingX = !/^(n|s)$/.test(resizing) && x, resizingY = !/^(e|w)$/.test(resizing) && y, dragging = eventTarget.classed(\"extent\"), dragRestore = d3_event_dragSuppress(target), center, origin = d3.mouse(target), offset;\n      var w = d3.select(d3_window(target)).on(\"keydown.brush\", keydown).on(\"keyup.brush\", keyup);\n      if (d3.event.changedTouches) {\n        w.on(\"touchmove.brush\", brushmove).on(\"touchend.brush\", brushend);\n      } else {\n        w.on(\"mousemove.brush\", brushmove).on(\"mouseup.brush\", brushend);\n      }\n      g.interrupt().selectAll(\"*\").interrupt();\n      if (dragging) {\n        origin[0] = xExtent[0] - origin[0];\n        origin[1] = yExtent[0] - origin[1];\n      } else if (resizing) {\n        var ex = +/w$/.test(resizing), ey = +/^n/.test(resizing);\n        offset = [ xExtent[1 - ex] - origin[0], yExtent[1 - ey] - origin[1] ];\n        origin[0] = xExtent[ex];\n        origin[1] = yExtent[ey];\n      } else if (d3.event.altKey) center = origin.slice();\n      g.style(\"pointer-events\", \"none\").selectAll(\".resize\").style(\"display\", null);\n      d3.select(\"body\").style(\"cursor\", eventTarget.style(\"cursor\"));\n      event_({\n        type: \"brushstart\"\n      });\n      brushmove();\n      function keydown() {\n        if (d3.event.keyCode == 32) {\n          if (!dragging) {\n            center = null;\n            origin[0] -= xExtent[1];\n            origin[1] -= yExtent[1];\n            dragging = 2;\n          }\n          d3_eventPreventDefault();\n        }\n      }\n      function keyup() {\n        if (d3.event.keyCode == 32 && dragging == 2) {\n          origin[0] += xExtent[1];\n          origin[1] += yExtent[1];\n          dragging = 0;\n          d3_eventPreventDefault();\n        }\n      }\n      function brushmove() {\n        var point = d3.mouse(target), moved = false;\n        if (offset) {\n          point[0] += offset[0];\n          point[1] += offset[1];\n        }\n        if (!dragging) {\n          if (d3.event.altKey) {\n            if (!center) center = [ (xExtent[0] + xExtent[1]) / 2, (yExtent[0] + yExtent[1]) / 2 ];\n            origin[0] = xExtent[+(point[0] < center[0])];\n            origin[1] = yExtent[+(point[1] < center[1])];\n          } else center = null;\n        }\n        if (resizingX && move1(point, x, 0)) {\n          redrawX(g);\n          moved = true;\n        }\n        if (resizingY && move1(point, y, 1)) {\n          redrawY(g);\n          moved = true;\n        }\n        if (moved) {\n          redraw(g);\n          event_({\n            type: \"brush\",\n            mode: dragging ? \"move\" : \"resize\"\n          });\n        }\n      }\n      function move1(point, scale, i) {\n        var range = d3_scaleRange(scale), r0 = range[0], r1 = range[1], position = origin[i], extent = i ? yExtent : xExtent, size = extent[1] - extent[0], min, max;\n        if (dragging) {\n          r0 -= position;\n          r1 -= size + position;\n        }\n        min = (i ? yClamp : xClamp) ? Math.max(r0, Math.min(r1, point[i])) : point[i];\n        if (dragging) {\n          max = (min += position) + size;\n        } else {\n          if (center) position = Math.max(r0, Math.min(r1, 2 * center[i] - min));\n          if (position < min) {\n            max = min;\n            min = position;\n          } else {\n            max = position;\n          }\n        }\n        if (extent[0] != min || extent[1] != max) {\n          if (i) yExtentDomain = null; else xExtentDomain = null;\n          extent[0] = min;\n          extent[1] = max;\n          return true;\n        }\n      }\n      function brushend() {\n        brushmove();\n        g.style(\"pointer-events\", \"all\").selectAll(\".resize\").style(\"display\", brush.empty() ? \"none\" : null);\n        d3.select(\"body\").style(\"cursor\", null);\n        w.on(\"mousemove.brush\", null).on(\"mouseup.brush\", null).on(\"touchmove.brush\", null).on(\"touchend.brush\", null).on(\"keydown.brush\", null).on(\"keyup.brush\", null);\n        dragRestore();\n        event_({\n          type: \"brushend\"\n        });\n      }\n    }\n    brush.x = function(z) {\n      if (!arguments.length) return x;\n      x = z;\n      resizes = d3_svg_brushResizes[!x << 1 | !y];\n      return brush;\n    };\n    brush.y = function(z) {\n      if (!arguments.length) return y;\n      y = z;\n      resizes = d3_svg_brushResizes[!x << 1 | !y];\n      return brush;\n    };\n    brush.clamp = function(z) {\n      if (!arguments.length) return x && y ? [ xClamp, yClamp ] : x ? xClamp : y ? yClamp : null;\n      if (x && y) xClamp = !!z[0], yClamp = !!z[1]; else if (x) xClamp = !!z; else if (y) yClamp = !!z;\n      return brush;\n    };\n    brush.extent = function(z) {\n      var x0, x1, y0, y1, t;\n      if (!arguments.length) {\n        if (x) {\n          if (xExtentDomain) {\n            x0 = xExtentDomain[0], x1 = xExtentDomain[1];\n          } else {\n            x0 = xExtent[0], x1 = xExtent[1];\n            if (x.invert) x0 = x.invert(x0), x1 = x.invert(x1);\n            if (x1 < x0) t = x0, x0 = x1, x1 = t;\n          }\n        }\n        if (y) {\n          if (yExtentDomain) {\n            y0 = yExtentDomain[0], y1 = yExtentDomain[1];\n          } else {\n            y0 = yExtent[0], y1 = yExtent[1];\n            if (y.invert) y0 = y.invert(y0), y1 = y.invert(y1);\n            if (y1 < y0) t = y0, y0 = y1, y1 = t;\n          }\n        }\n        return x && y ? [ [ x0, y0 ], [ x1, y1 ] ] : x ? [ x0, x1 ] : y && [ y0, y1 ];\n      }\n      if (x) {\n        x0 = z[0], x1 = z[1];\n        if (y) x0 = x0[0], x1 = x1[0];\n        xExtentDomain = [ x0, x1 ];\n        if (x.invert) x0 = x(x0), x1 = x(x1);\n        if (x1 < x0) t = x0, x0 = x1, x1 = t;\n        if (x0 != xExtent[0] || x1 != xExtent[1]) xExtent = [ x0, x1 ];\n      }\n      if (y) {\n        y0 = z[0], y1 = z[1];\n        if (x) y0 = y0[1], y1 = y1[1];\n        yExtentDomain = [ y0, y1 ];\n        if (y.invert) y0 = y(y0), y1 = y(y1);\n        if (y1 < y0) t = y0, y0 = y1, y1 = t;\n        if (y0 != yExtent[0] || y1 != yExtent[1]) yExtent = [ y0, y1 ];\n      }\n      return brush;\n    };\n    brush.clear = function() {\n      if (!brush.empty()) {\n        xExtent = [ 0, 0 ], yExtent = [ 0, 0 ];\n        xExtentDomain = yExtentDomain = null;\n      }\n      return brush;\n    };\n    brush.empty = function() {\n      return !!x && xExtent[0] == xExtent[1] || !!y && yExtent[0] == yExtent[1];\n    };\n    return d3.rebind(brush, event, \"on\");\n  };\n  var d3_svg_brushCursor = {\n    n: \"ns-resize\",\n    e: \"ew-resize\",\n    s: \"ns-resize\",\n    w: \"ew-resize\",\n    nw: \"nwse-resize\",\n    ne: \"nesw-resize\",\n    se: \"nwse-resize\",\n    sw: \"nesw-resize\"\n  };\n  var d3_svg_brushResizes = [ [ \"n\", \"e\", \"s\", \"w\", \"nw\", \"ne\", \"se\", \"sw\" ], [ \"e\", \"w\" ], [ \"n\", \"s\" ], [] ];\n  var d3_time_format = d3_time.format = d3_locale_enUS.timeFormat;\n  var d3_time_formatUtc = d3_time_format.utc;\n  var d3_time_formatIso = d3_time_formatUtc(\"%Y-%m-%dT%H:%M:%S.%LZ\");\n  d3_time_format.iso = Date.prototype.toISOString && +new Date(\"2000-01-01T00:00:00.000Z\") ? d3_time_formatIsoNative : d3_time_formatIso;\n  function d3_time_formatIsoNative(date) {\n    return date.toISOString();\n  }\n  d3_time_formatIsoNative.parse = function(string) {\n    var date = new Date(string);\n    return isNaN(date) ? null : date;\n  };\n  d3_time_formatIsoNative.toString = d3_time_formatIso.toString;\n  d3_time.second = d3_time_interval(function(date) {\n    return new d3_date(Math.floor(date / 1e3) * 1e3);\n  }, function(date, offset) {\n    date.setTime(date.getTime() + Math.floor(offset) * 1e3);\n  }, function(date) {\n    return date.getSeconds();\n  });\n  d3_time.seconds = d3_time.second.range;\n  d3_time.seconds.utc = d3_time.second.utc.range;\n  d3_time.minute = d3_time_interval(function(date) {\n    return new d3_date(Math.floor(date / 6e4) * 6e4);\n  }, function(date, offset) {\n    date.setTime(date.getTime() + Math.floor(offset) * 6e4);\n  }, function(date) {\n    return date.getMinutes();\n  });\n  d3_time.minutes = d3_time.minute.range;\n  d3_time.minutes.utc = d3_time.minute.utc.range;\n  d3_time.hour = d3_time_interval(function(date) {\n    var timezone = date.getTimezoneOffset() / 60;\n    return new d3_date((Math.floor(date / 36e5 - timezone) + timezone) * 36e5);\n  }, function(date, offset) {\n    date.setTime(date.getTime() + Math.floor(offset) * 36e5);\n  }, function(date) {\n    return date.getHours();\n  });\n  d3_time.hours = d3_time.hour.range;\n  d3_time.hours.utc = d3_time.hour.utc.range;\n  d3_time.month = d3_time_interval(function(date) {\n    date = d3_time.day(date);\n    date.setDate(1);\n    return date;\n  }, function(date, offset) {\n    date.setMonth(date.getMonth() + offset);\n  }, function(date) {\n    return date.getMonth();\n  });\n  d3_time.months = d3_time.month.range;\n  d3_time.months.utc = d3_time.month.utc.range;\n  function d3_time_scale(linear, methods, format) {\n    function scale(x) {\n      return linear(x);\n    }\n    scale.invert = function(x) {\n      return d3_time_scaleDate(linear.invert(x));\n    };\n    scale.domain = function(x) {\n      if (!arguments.length) return linear.domain().map(d3_time_scaleDate);\n      linear.domain(x);\n      return scale;\n    };\n    function tickMethod(extent, count) {\n      var span = extent[1] - extent[0], target = span / count, i = d3.bisect(d3_time_scaleSteps, target);\n      return i == d3_time_scaleSteps.length ? [ methods.year, d3_scale_linearTickRange(extent.map(function(d) {\n        return d / 31536e6;\n      }), count)[2] ] : !i ? [ d3_time_scaleMilliseconds, d3_scale_linearTickRange(extent, count)[2] ] : methods[target / d3_time_scaleSteps[i - 1] < d3_time_scaleSteps[i] / target ? i - 1 : i];\n    }\n    scale.nice = function(interval, skip) {\n      var domain = scale.domain(), extent = d3_scaleExtent(domain), method = interval == null ? tickMethod(extent, 10) : typeof interval === \"number\" && tickMethod(extent, interval);\n      if (method) interval = method[0], skip = method[1];\n      function skipped(date) {\n        return !isNaN(date) && !interval.range(date, d3_time_scaleDate(+date + 1), skip).length;\n      }\n      return scale.domain(d3_scale_nice(domain, skip > 1 ? {\n        floor: function(date) {\n          while (skipped(date = interval.floor(date))) date = d3_time_scaleDate(date - 1);\n          return date;\n        },\n        ceil: function(date) {\n          while (skipped(date = interval.ceil(date))) date = d3_time_scaleDate(+date + 1);\n          return date;\n        }\n      } : interval));\n    };\n    scale.ticks = function(interval, skip) {\n      var extent = d3_scaleExtent(scale.domain()), method = interval == null ? tickMethod(extent, 10) : typeof interval === \"number\" ? tickMethod(extent, interval) : !interval.range && [ {\n        range: interval\n      }, skip ];\n      if (method) interval = method[0], skip = method[1];\n      return interval.range(extent[0], d3_time_scaleDate(+extent[1] + 1), skip < 1 ? 1 : skip);\n    };\n    scale.tickFormat = function() {\n      return format;\n    };\n    scale.copy = function() {\n      return d3_time_scale(linear.copy(), methods, format);\n    };\n    return d3_scale_linearRebind(scale, linear);\n  }\n  function d3_time_scaleDate(t) {\n    return new Date(t);\n  }\n  var d3_time_scaleSteps = [ 1e3, 5e3, 15e3, 3e4, 6e4, 3e5, 9e5, 18e5, 36e5, 108e5, 216e5, 432e5, 864e5, 1728e5, 6048e5, 2592e6, 7776e6, 31536e6 ];\n  var d3_time_scaleLocalMethods = [ [ d3_time.second, 1 ], [ d3_time.second, 5 ], [ d3_time.second, 15 ], [ d3_time.second, 30 ], [ d3_time.minute, 1 ], [ d3_time.minute, 5 ], [ d3_time.minute, 15 ], [ d3_time.minute, 30 ], [ d3_time.hour, 1 ], [ d3_time.hour, 3 ], [ d3_time.hour, 6 ], [ d3_time.hour, 12 ], [ d3_time.day, 1 ], [ d3_time.day, 2 ], [ d3_time.week, 1 ], [ d3_time.month, 1 ], [ d3_time.month, 3 ], [ d3_time.year, 1 ] ];\n  var d3_time_scaleLocalFormat = d3_time_format.multi([ [ \".%L\", function(d) {\n    return d.getMilliseconds();\n  } ], [ \":%S\", function(d) {\n    return d.getSeconds();\n  } ], [ \"%I:%M\", function(d) {\n    return d.getMinutes();\n  } ], [ \"%I %p\", function(d) {\n    return d.getHours();\n  } ], [ \"%a %d\", function(d) {\n    return d.getDay() && d.getDate() != 1;\n  } ], [ \"%b %d\", function(d) {\n    return d.getDate() != 1;\n  } ], [ \"%B\", function(d) {\n    return d.getMonth();\n  } ], [ \"%Y\", d3_true ] ]);\n  var d3_time_scaleMilliseconds = {\n    range: function(start, stop, step) {\n      return d3.range(Math.ceil(start / step) * step, +stop, step).map(d3_time_scaleDate);\n    },\n    floor: d3_identity,\n    ceil: d3_identity\n  };\n  d3_time_scaleLocalMethods.year = d3_time.year;\n  d3_time.scale = function() {\n    return d3_time_scale(d3.scale.linear(), d3_time_scaleLocalMethods, d3_time_scaleLocalFormat);\n  };\n  var d3_time_scaleUtcMethods = d3_time_scaleLocalMethods.map(function(m) {\n    return [ m[0].utc, m[1] ];\n  });\n  var d3_time_scaleUtcFormat = d3_time_formatUtc.multi([ [ \".%L\", function(d) {\n    return d.getUTCMilliseconds();\n  } ], [ \":%S\", function(d) {\n    return d.getUTCSeconds();\n  } ], [ \"%I:%M\", function(d) {\n    return d.getUTCMinutes();\n  } ], [ \"%I %p\", function(d) {\n    return d.getUTCHours();\n  } ], [ \"%a %d\", function(d) {\n    return d.getUTCDay() && d.getUTCDate() != 1;\n  } ], [ \"%b %d\", function(d) {\n    return d.getUTCDate() != 1;\n  } ], [ \"%B\", function(d) {\n    return d.getUTCMonth();\n  } ], [ \"%Y\", d3_true ] ]);\n  d3_time_scaleUtcMethods.year = d3_time.year.utc;\n  d3_time.scale.utc = function() {\n    return d3_time_scale(d3.scale.linear(), d3_time_scaleUtcMethods, d3_time_scaleUtcFormat);\n  };\n  d3.text = d3_xhrType(function(request) {\n    return request.responseText;\n  });\n  d3.json = function(url, callback) {\n    return d3_xhr(url, \"application/json\", d3_json, callback);\n  };\n  function d3_json(request) {\n    return JSON.parse(request.responseText);\n  }\n  d3.html = function(url, callback) {\n    return d3_xhr(url, \"text/html\", d3_html, callback);\n  };\n  function d3_html(request) {\n    var range = d3_document.createRange();\n    range.selectNode(d3_document.body);\n    return range.createContextualFragment(request.responseText);\n  }\n  d3.xml = d3_xhrType(function(request) {\n    return request.responseXML;\n  });\n  if (typeof define === \"function\" && define.amd) this.d3 = d3, define('d3',d3); else if (typeof module === \"object\" && module.exports) module.exports = d3; else this.d3 = d3;\n}();\n","(function (window) {\n    'use strict';\n\n    /*global define, module, exports, require */\n\n    var c3 = { version: \"0.4.11\" };\n\n    var c3_chart_fn,\n        c3_chart_internal_fn,\n        c3_chart_internal_axis_fn;\n\n    function API(owner) {\n        this.owner = owner;\n    }\n\n    function inherit(base, derived) {\n\n        if (Object.create) {\n            derived.prototype = Object.create(base.prototype);\n        } else {\n            var f = function f() {};\n            f.prototype = base.prototype;\n            derived.prototype = new f();\n        }\n\n        derived.prototype.constructor = derived;\n\n        return derived;\n    }\n\n    function Chart(config) {\n        var $$ = this.internal = new ChartInternal(this);\n        $$.loadConfig(config);\n\n        $$.beforeInit(config);\n        $$.init();\n        $$.afterInit(config);\n\n        // bind \"this\" to nested API\n        (function bindThis(fn, target, argThis) {\n            Object.keys(fn).forEach(function (key) {\n                target[key] = fn[key].bind(argThis);\n                if (Object.keys(fn[key]).length > 0) {\n                    bindThis(fn[key], target[key], argThis);\n                }\n            });\n        })(c3_chart_fn, this, this);\n    }\n\n    function ChartInternal(api) {\n        var $$ = this;\n        $$.d3 = window.d3 ? window.d3 : typeof require !== 'undefined' ? require(\"d3\") : undefined;\n        $$.api = api;\n        $$.config = $$.getDefaultConfig();\n        $$.data = {};\n        $$.cache = {};\n        $$.axes = {};\n    }\n\n    c3.generate = function (config) {\n        return new Chart(config);\n    };\n\n    c3.chart = {\n        fn: Chart.prototype,\n        internal: {\n            fn: ChartInternal.prototype,\n            axis: {\n                fn: Axis.prototype\n            }\n        }\n    };\n    c3_chart_fn = c3.chart.fn;\n    c3_chart_internal_fn = c3.chart.internal.fn;\n    c3_chart_internal_axis_fn = c3.chart.internal.axis.fn;\n\n    c3_chart_internal_fn.beforeInit = function () {\n        // can do something\n    };\n    c3_chart_internal_fn.afterInit = function () {\n        // can do something\n    };\n    c3_chart_internal_fn.init = function () {\n        var $$ = this, config = $$.config;\n\n        $$.initParams();\n\n        if (config.data_url) {\n            $$.convertUrlToData(config.data_url, config.data_mimeType, config.data_headers, config.data_keys, $$.initWithData);\n        }\n        else if (config.data_json) {\n            $$.initWithData($$.convertJsonToData(config.data_json, config.data_keys));\n        }\n        else if (config.data_rows) {\n            $$.initWithData($$.convertRowsToData(config.data_rows));\n        }\n        else if (config.data_columns) {\n            $$.initWithData($$.convertColumnsToData(config.data_columns));\n        }\n        else {\n            throw Error('url or json or rows or columns is required.');\n        }\n    };\n\n    c3_chart_internal_fn.initParams = function () {\n        var $$ = this, d3 = $$.d3, config = $$.config;\n\n        // MEMO: clipId needs to be unique because it conflicts when multiple charts exist\n        $$.clipId = \"c3-\" + (+new Date()) + '-clip',\n        $$.clipIdForXAxis = $$.clipId + '-xaxis',\n        $$.clipIdForYAxis = $$.clipId + '-yaxis',\n        $$.clipIdForGrid = $$.clipId + '-grid',\n        $$.clipIdForSubchart = $$.clipId + '-subchart',\n        $$.clipPath = $$.getClipPath($$.clipId),\n        $$.clipPathForXAxis = $$.getClipPath($$.clipIdForXAxis),\n        $$.clipPathForYAxis = $$.getClipPath($$.clipIdForYAxis);\n        $$.clipPathForGrid = $$.getClipPath($$.clipIdForGrid),\n        $$.clipPathForSubchart = $$.getClipPath($$.clipIdForSubchart),\n\n        $$.dragStart = null;\n        $$.dragging = false;\n        $$.flowing = false;\n        $$.cancelClick = false;\n        $$.mouseover = false;\n        $$.transiting = false;\n\n        $$.color = $$.generateColor();\n        $$.levelColor = $$.generateLevelColor();\n\n        $$.dataTimeFormat = config.data_xLocaltime ? d3.time.format : d3.time.format.utc;\n        $$.axisTimeFormat = config.axis_x_localtime ? d3.time.format : d3.time.format.utc;\n        $$.defaultAxisTimeFormat = $$.axisTimeFormat.multi([\n            [\".%L\", function (d) { return d.getMilliseconds(); }],\n            [\":%S\", function (d) { return d.getSeconds(); }],\n            [\"%I:%M\", function (d) { return d.getMinutes(); }],\n            [\"%I %p\", function (d) { return d.getHours(); }],\n            [\"%-m/%-d\", function (d) { return d.getDay() && d.getDate() !== 1; }],\n            [\"%-m/%-d\", function (d) { return d.getDate() !== 1; }],\n            [\"%-m/%-d\", function (d) { return d.getMonth(); }],\n            [\"%Y/%-m/%-d\", function () { return true; }]\n        ]);\n\n        $$.hiddenTargetIds = [];\n        $$.hiddenLegendIds = [];\n        $$.focusedTargetIds = [];\n        $$.defocusedTargetIds = [];\n\n        $$.xOrient = config.axis_rotated ? \"left\" : \"bottom\";\n        $$.yOrient = config.axis_rotated ? (config.axis_y_inner ? \"top\" : \"bottom\") : (config.axis_y_inner ? \"right\" : \"left\");\n        $$.y2Orient = config.axis_rotated ? (config.axis_y2_inner ? \"bottom\" : \"top\") : (config.axis_y2_inner ? \"left\" : \"right\");\n        $$.subXOrient = config.axis_rotated ? \"left\" : \"bottom\";\n\n        $$.isLegendRight = config.legend_position === 'right';\n        $$.isLegendInset = config.legend_position === 'inset';\n        $$.isLegendTop = config.legend_inset_anchor === 'top-left' || config.legend_inset_anchor === 'top-right';\n        $$.isLegendLeft = config.legend_inset_anchor === 'top-left' || config.legend_inset_anchor === 'bottom-left';\n        $$.legendStep = 0;\n        $$.legendItemWidth = 0;\n        $$.legendItemHeight = 0;\n\n        $$.currentMaxTickWidths = {\n            x: 0,\n            y: 0,\n            y2: 0\n        };\n\n        $$.rotated_padding_left = 30;\n        $$.rotated_padding_right = config.axis_rotated && !config.axis_x_show ? 0 : 30;\n        $$.rotated_padding_top = 5;\n\n        $$.withoutFadeIn = {};\n\n        $$.intervalForObserveInserted = undefined;\n\n        $$.axes.subx = d3.selectAll([]); // needs when excluding subchart.js\n    };\n\n    c3_chart_internal_fn.initChartElements = function () {\n        if (this.initBar) { this.initBar(); }\n        if (this.initLine) { this.initLine(); }\n        if (this.initArc) { this.initArc(); }\n        if (this.initGauge) { this.initGauge(); }\n        if (this.initText) { this.initText(); }\n    };\n\n    c3_chart_internal_fn.initWithData = function (data) {\n        var $$ = this, d3 = $$.d3, config = $$.config;\n        var defs, main, binding = true;\n\n        $$.axis = new Axis($$);\n\n        if ($$.initPie) { $$.initPie(); }\n        if ($$.initBrush) { $$.initBrush(); }\n        if ($$.initZoom) { $$.initZoom(); }\n\n        if (!config.bindto) {\n            $$.selectChart = d3.selectAll([]);\n        }\n        else if (typeof config.bindto.node === 'function') {\n            $$.selectChart = config.bindto;\n        }\n        else {\n            $$.selectChart = d3.select(config.bindto);\n        }\n        if ($$.selectChart.empty()) {\n            $$.selectChart = d3.select(document.createElement('div')).style('opacity', 0);\n            $$.observeInserted($$.selectChart);\n            binding = false;\n        }\n        $$.selectChart.html(\"\").classed(\"c3\", true);\n\n        // Init data as targets\n        $$.data.xs = {};\n        $$.data.targets = $$.convertDataToTargets(data);\n\n        if (config.data_filter) {\n            $$.data.targets = $$.data.targets.filter(config.data_filter);\n        }\n\n        // Set targets to hide if needed\n        if (config.data_hide) {\n            $$.addHiddenTargetIds(config.data_hide === true ? $$.mapToIds($$.data.targets) : config.data_hide);\n        }\n        if (config.legend_hide) {\n            $$.addHiddenLegendIds(config.legend_hide === true ? $$.mapToIds($$.data.targets) : config.legend_hide);\n        }\n\n        // when gauge, hide legend // TODO: fix\n        if ($$.hasType('gauge')) {\n            config.legend_show = false;\n        }\n\n        // Init sizes and scales\n        $$.updateSizes();\n        $$.updateScales();\n\n        // Set domains for each scale\n        $$.x.domain(d3.extent($$.getXDomain($$.data.targets)));\n        $$.y.domain($$.getYDomain($$.data.targets, 'y'));\n        $$.y2.domain($$.getYDomain($$.data.targets, 'y2'));\n        $$.subX.domain($$.x.domain());\n        $$.subY.domain($$.y.domain());\n        $$.subY2.domain($$.y2.domain());\n\n        // Save original x domain for zoom update\n        $$.orgXDomain = $$.x.domain();\n\n        // Set initialized scales to brush and zoom\n        if ($$.brush) { $$.brush.scale($$.subX); }\n        if (config.zoom_enabled) { $$.zoom.scale($$.x); }\n\n        /*-- Basic Elements --*/\n\n        // Define svgs\n        $$.svg = $$.selectChart.append(\"svg\")\n            .style(\"overflow\", \"hidden\")\n            .on('mouseenter', function () { return config.onmouseover.call($$); })\n            .on('mouseleave', function () { return config.onmouseout.call($$); });\n\n        if ($$.config.svg_classname) {\n            $$.svg.attr('class', $$.config.svg_classname);\n        }\n\n        // Define defs\n        defs = $$.svg.append(\"defs\");\n        $$.clipChart = $$.appendClip(defs, $$.clipId);\n        $$.clipXAxis = $$.appendClip(defs, $$.clipIdForXAxis);\n        $$.clipYAxis = $$.appendClip(defs, $$.clipIdForYAxis);\n        $$.clipGrid = $$.appendClip(defs, $$.clipIdForGrid);\n        $$.clipSubchart = $$.appendClip(defs, $$.clipIdForSubchart);\n        $$.updateSvgSize();\n\n        // Define regions\n        main = $$.main = $$.svg.append(\"g\").attr(\"transform\", $$.getTranslate('main'));\n\n        if ($$.initSubchart) { $$.initSubchart(); }\n        if ($$.initTooltip) { $$.initTooltip(); }\n        if ($$.initLegend) { $$.initLegend(); }\n        if ($$.initTitle) { $$.initTitle(); }\n\n        /*-- Main Region --*/\n\n        // text when empty\n        main.append(\"text\")\n            .attr(\"class\", CLASS.text + ' ' + CLASS.empty)\n            .attr(\"text-anchor\", \"middle\") // horizontal centering of text at x position in all browsers.\n            .attr(\"dominant-baseline\", \"middle\"); // vertical centering of text at y position in all browsers, except IE.\n\n        // Regions\n        $$.initRegion();\n\n        // Grids\n        $$.initGrid();\n\n        // Define g for chart area\n        main.append('g')\n            .attr(\"clip-path\", $$.clipPath)\n            .attr('class', CLASS.chart);\n\n        // Grid lines\n        if (config.grid_lines_front) { $$.initGridLines(); }\n\n        // Cover whole with rects for events\n        $$.initEventRect();\n\n        // Define g for chart\n        $$.initChartElements();\n\n        // if zoom privileged, insert rect to forefront\n        // TODO: is this needed?\n        main.insert('rect', config.zoom_privileged ? null : 'g.' + CLASS.regions)\n            .attr('class', CLASS.zoomRect)\n            .attr('width', $$.width)\n            .attr('height', $$.height)\n            .style('opacity', 0)\n            .on(\"dblclick.zoom\", null);\n\n        // Set default extent if defined\n        if (config.axis_x_extent) { $$.brush.extent($$.getDefaultExtent()); }\n\n        // Add Axis\n        $$.axis.init();\n\n        // Set targets\n        $$.updateTargets($$.data.targets);\n\n        // Draw with targets\n        if (binding) {\n            $$.updateDimension();\n            $$.config.oninit.call($$);\n            $$.redraw({\n                withTransition: false,\n                withTransform: true,\n                withUpdateXDomain: true,\n                withUpdateOrgXDomain: true,\n                withTransitionForAxis: false\n            });\n        }\n\n        // Bind resize event\n        $$.bindResize();\n\n        // export element of the chart\n        $$.api.element = $$.selectChart.node();\n    };\n\n    c3_chart_internal_fn.smoothLines = function (el, type) {\n        var $$ = this;\n        if (type === 'grid') {\n            el.each(function () {\n                var g = $$.d3.select(this),\n                    x1 = g.attr('x1'),\n                    x2 = g.attr('x2'),\n                    y1 = g.attr('y1'),\n                    y2 = g.attr('y2');\n                g.attr({\n                    'x1': Math.ceil(x1),\n                    'x2': Math.ceil(x2),\n                    'y1': Math.ceil(y1),\n                    'y2': Math.ceil(y2)\n                });\n            });\n        }\n    };\n\n\n    c3_chart_internal_fn.updateSizes = function () {\n        var $$ = this, config = $$.config;\n        var legendHeight = $$.legend ? $$.getLegendHeight() : 0,\n            legendWidth = $$.legend ? $$.getLegendWidth() : 0,\n            legendHeightForBottom = $$.isLegendRight || $$.isLegendInset ? 0 : legendHeight,\n            hasArc = $$.hasArcType(),\n            xAxisHeight = config.axis_rotated || hasArc ? 0 : $$.getHorizontalAxisHeight('x'),\n            subchartHeight = config.subchart_show && !hasArc ? (config.subchart_size_height + xAxisHeight) : 0;\n\n        $$.currentWidth = $$.getCurrentWidth();\n        $$.currentHeight = $$.getCurrentHeight();\n\n        // for main\n        $$.margin = config.axis_rotated ? {\n            top: $$.getHorizontalAxisHeight('y2') + $$.getCurrentPaddingTop(),\n            right: hasArc ? 0 : $$.getCurrentPaddingRight(),\n            bottom: $$.getHorizontalAxisHeight('y') + legendHeightForBottom + $$.getCurrentPaddingBottom(),\n            left: subchartHeight + (hasArc ? 0 : $$.getCurrentPaddingLeft())\n        } : {\n            top: 4 + $$.getCurrentPaddingTop(), // for top tick text\n            right: hasArc ? 0 : $$.getCurrentPaddingRight(),\n            bottom: xAxisHeight + subchartHeight + legendHeightForBottom + $$.getCurrentPaddingBottom(),\n            left: hasArc ? 0 : $$.getCurrentPaddingLeft()\n        };\n\n        // for subchart\n        $$.margin2 = config.axis_rotated ? {\n            top: $$.margin.top,\n            right: NaN,\n            bottom: 20 + legendHeightForBottom,\n            left: $$.rotated_padding_left\n        } : {\n            top: $$.currentHeight - subchartHeight - legendHeightForBottom,\n            right: NaN,\n            bottom: xAxisHeight + legendHeightForBottom,\n            left: $$.margin.left\n        };\n\n        // for legend\n        $$.margin3 = {\n            top: 0,\n            right: NaN,\n            bottom: 0,\n            left: 0\n        };\n        if ($$.updateSizeForLegend) { $$.updateSizeForLegend(legendHeight, legendWidth); }\n\n        $$.width = $$.currentWidth - $$.margin.left - $$.margin.right;\n        $$.height = $$.currentHeight - $$.margin.top - $$.margin.bottom;\n        if ($$.width < 0) { $$.width = 0; }\n        if ($$.height < 0) { $$.height = 0; }\n\n        $$.width2 = config.axis_rotated ? $$.margin.left - $$.rotated_padding_left - $$.rotated_padding_right : $$.width;\n        $$.height2 = config.axis_rotated ? $$.height : $$.currentHeight - $$.margin2.top - $$.margin2.bottom;\n        if ($$.width2 < 0) { $$.width2 = 0; }\n        if ($$.height2 < 0) { $$.height2 = 0; }\n\n        // for arc\n        $$.arcWidth = $$.width - ($$.isLegendRight ? legendWidth + 10 : 0);\n        $$.arcHeight = $$.height - ($$.isLegendRight ? 0 : 10);\n        if ($$.hasType('gauge') && !config.gauge_fullCircle) {\n            $$.arcHeight += $$.height - $$.getGaugeLabelHeight();\n        }\n        if ($$.updateRadius) { $$.updateRadius(); }\n\n        if ($$.isLegendRight && hasArc) {\n            $$.margin3.left = $$.arcWidth / 2 + $$.radiusExpanded * 1.1;\n        }\n    };\n\n    c3_chart_internal_fn.updateTargets = function (targets) {\n        var $$ = this;\n\n        /*-- Main --*/\n\n        //-- Text --//\n        $$.updateTargetsForText(targets);\n\n        //-- Bar --//\n        $$.updateTargetsForBar(targets);\n\n        //-- Line --//\n        $$.updateTargetsForLine(targets);\n\n        //-- Arc --//\n        if ($$.hasArcType() && $$.updateTargetsForArc) { $$.updateTargetsForArc(targets); }\n\n        /*-- Sub --*/\n\n        if ($$.updateTargetsForSubchart) { $$.updateTargetsForSubchart(targets); }\n\n        // Fade-in each chart\n        $$.showTargets();\n    };\n    c3_chart_internal_fn.showTargets = function () {\n        var $$ = this;\n        $$.svg.selectAll('.' + CLASS.target).filter(function (d) { return $$.isTargetToShow(d.id); })\n          .transition().duration($$.config.transition_duration)\n            .style(\"opacity\", 1);\n    };\n\n    c3_chart_internal_fn.redraw = function (options, transitions) {\n        var $$ = this, main = $$.main, d3 = $$.d3, config = $$.config;\n        var areaIndices = $$.getShapeIndices($$.isAreaType), barIndices = $$.getShapeIndices($$.isBarType), lineIndices = $$.getShapeIndices($$.isLineType);\n        var withY, withSubchart, withTransition, withTransitionForExit, withTransitionForAxis,\n            withTransform, withUpdateXDomain, withUpdateOrgXDomain, withTrimXDomain, withLegend,\n            withEventRect, withDimension, withUpdateXAxis;\n        var hideAxis = $$.hasArcType();\n        var drawArea, drawBar, drawLine, xForText, yForText;\n        var duration, durationForExit, durationForAxis;\n        var waitForDraw, flow;\n        var targetsToShow = $$.filterTargetsToShow($$.data.targets), tickValues, i, intervalForCulling, xDomainForZoom;\n        var xv = $$.xv.bind($$), cx, cy;\n\n        options = options || {};\n        withY = getOption(options, \"withY\", true);\n        withSubchart = getOption(options, \"withSubchart\", true);\n        withTransition = getOption(options, \"withTransition\", true);\n        withTransform = getOption(options, \"withTransform\", false);\n        withUpdateXDomain = getOption(options, \"withUpdateXDomain\", false);\n        withUpdateOrgXDomain = getOption(options, \"withUpdateOrgXDomain\", false);\n        withTrimXDomain = getOption(options, \"withTrimXDomain\", true);\n        withUpdateXAxis = getOption(options, \"withUpdateXAxis\", withUpdateXDomain);\n        withLegend = getOption(options, \"withLegend\", false);\n        withEventRect = getOption(options, \"withEventRect\", true);\n        withDimension = getOption(options, \"withDimension\", true);\n        withTransitionForExit = getOption(options, \"withTransitionForExit\", withTransition);\n        withTransitionForAxis = getOption(options, \"withTransitionForAxis\", withTransition);\n\n        duration = withTransition ? config.transition_duration : 0;\n        durationForExit = withTransitionForExit ? duration : 0;\n        durationForAxis = withTransitionForAxis ? duration : 0;\n\n        transitions = transitions || $$.axis.generateTransitions(durationForAxis);\n\n        // update legend and transform each g\n        if (withLegend && config.legend_show) {\n            $$.updateLegend($$.mapToIds($$.data.targets), options, transitions);\n        } else if (withDimension) {\n            // need to update dimension (e.g. axis.y.tick.values) because y tick values should change\n            // no need to update axis in it because they will be updated in redraw()\n            $$.updateDimension(true);\n        }\n\n        // MEMO: needed for grids calculation\n        if ($$.isCategorized() && targetsToShow.length === 0) {\n            $$.x.domain([0, $$.axes.x.selectAll('.tick').size()]);\n        }\n\n        if (targetsToShow.length) {\n            $$.updateXDomain(targetsToShow, withUpdateXDomain, withUpdateOrgXDomain, withTrimXDomain);\n            if (!config.axis_x_tick_values) {\n                tickValues = $$.axis.updateXAxisTickValues(targetsToShow);\n            }\n        } else {\n            $$.xAxis.tickValues([]);\n            $$.subXAxis.tickValues([]);\n        }\n\n        if (config.zoom_rescale && !options.flow) {\n            xDomainForZoom = $$.x.orgDomain();\n        }\n\n        $$.y.domain($$.getYDomain(targetsToShow, 'y', xDomainForZoom));\n        $$.y2.domain($$.getYDomain(targetsToShow, 'y2', xDomainForZoom));\n\n        if (!config.axis_y_tick_values && config.axis_y_tick_count) {\n            $$.yAxis.tickValues($$.axis.generateTickValues($$.y.domain(), config.axis_y_tick_count));\n        }\n        if (!config.axis_y2_tick_values && config.axis_y2_tick_count) {\n            $$.y2Axis.tickValues($$.axis.generateTickValues($$.y2.domain(), config.axis_y2_tick_count));\n        }\n\n        // axes\n        $$.axis.redraw(transitions, hideAxis);\n\n        // Update axis label\n        $$.axis.updateLabels(withTransition);\n\n        // show/hide if manual culling needed\n        if ((withUpdateXDomain || withUpdateXAxis) && targetsToShow.length) {\n            if (config.axis_x_tick_culling && tickValues) {\n                for (i = 1; i < tickValues.length; i++) {\n                    if (tickValues.length / i < config.axis_x_tick_culling_max) {\n                        intervalForCulling = i;\n                        break;\n                    }\n                }\n                $$.svg.selectAll('.' + CLASS.axisX + ' .tick text').each(function (e) {\n                    var index = tickValues.indexOf(e);\n                    if (index >= 0) {\n                        d3.select(this).style('display', index % intervalForCulling ? 'none' : 'block');\n                    }\n                });\n            } else {\n                $$.svg.selectAll('.' + CLASS.axisX + ' .tick text').style('display', 'block');\n            }\n        }\n\n        // setup drawer - MEMO: these must be called after axis updated\n        drawArea = $$.generateDrawArea ? $$.generateDrawArea(areaIndices, false) : undefined;\n        drawBar = $$.generateDrawBar ? $$.generateDrawBar(barIndices) : undefined;\n        drawLine = $$.generateDrawLine ? $$.generateDrawLine(lineIndices, false) : undefined;\n        xForText = $$.generateXYForText(areaIndices, barIndices, lineIndices, true);\n        yForText = $$.generateXYForText(areaIndices, barIndices, lineIndices, false);\n\n        // Update sub domain\n        if (withY) {\n            $$.subY.domain($$.getYDomain(targetsToShow, 'y'));\n            $$.subY2.domain($$.getYDomain(targetsToShow, 'y2'));\n        }\n\n        // xgrid focus\n        $$.updateXgridFocus();\n\n        // Data empty label positioning and text.\n        main.select(\"text.\" + CLASS.text + '.' + CLASS.empty)\n            .attr(\"x\", $$.width / 2)\n            .attr(\"y\", $$.height / 2)\n            .text(config.data_empty_label_text)\n          .transition()\n            .style('opacity', targetsToShow.length ? 0 : 1);\n\n        // grid\n        $$.updateGrid(duration);\n\n        // rect for regions\n        $$.updateRegion(duration);\n\n        // bars\n        $$.updateBar(durationForExit);\n\n        // lines, areas and cricles\n        $$.updateLine(durationForExit);\n        $$.updateArea(durationForExit);\n        $$.updateCircle();\n\n        // text\n        if ($$.hasDataLabel()) {\n            $$.updateText(durationForExit);\n        }\n\n        // title\n        if ($$.redrawTitle) { $$.redrawTitle(); }\n\n        // arc\n        if ($$.redrawArc) { $$.redrawArc(duration, durationForExit, withTransform); }\n\n        // subchart\n        if ($$.redrawSubchart) {\n            $$.redrawSubchart(withSubchart, transitions, duration, durationForExit, areaIndices, barIndices, lineIndices);\n        }\n\n        // circles for select\n        main.selectAll('.' + CLASS.selectedCircles)\n            .filter($$.isBarType.bind($$))\n            .selectAll('circle')\n            .remove();\n\n        // event rects will redrawn when flow called\n        if (config.interaction_enabled && !options.flow && withEventRect) {\n            $$.redrawEventRect();\n            if ($$.updateZoom) { $$.updateZoom(); }\n        }\n\n        // update circleY based on updated parameters\n        $$.updateCircleY();\n\n        // generate circle x/y functions depending on updated params\n        cx = ($$.config.axis_rotated ? $$.circleY : $$.circleX).bind($$);\n        cy = ($$.config.axis_rotated ? $$.circleX : $$.circleY).bind($$);\n\n        if (options.flow) {\n            flow = $$.generateFlow({\n                targets: targetsToShow,\n                flow: options.flow,\n                duration: options.flow.duration,\n                drawBar: drawBar,\n                drawLine: drawLine,\n                drawArea: drawArea,\n                cx: cx,\n                cy: cy,\n                xv: xv,\n                xForText: xForText,\n                yForText: yForText\n            });\n        }\n\n        if ((duration || flow) && $$.isTabVisible()) { // Only use transition if tab visible. See #938.\n            // transition should be derived from one transition\n            d3.transition().duration(duration).each(function () {\n                var transitionsToWait = [];\n\n                // redraw and gather transitions\n                [\n                    $$.redrawBar(drawBar, true),\n                    $$.redrawLine(drawLine, true),\n                    $$.redrawArea(drawArea, true),\n                    $$.redrawCircle(cx, cy, true),\n                    $$.redrawText(xForText, yForText, options.flow, true),\n                    $$.redrawRegion(true),\n                    $$.redrawGrid(true),\n                ].forEach(function (transitions) {\n                    transitions.forEach(function (transition) {\n                        transitionsToWait.push(transition);\n                    });\n                });\n\n                // Wait for end of transitions to call flow and onrendered callback\n                waitForDraw = $$.generateWait();\n                transitionsToWait.forEach(function (t) {\n                    waitForDraw.add(t);\n                });\n            })\n            .call(waitForDraw, function () {\n                if (flow) {\n                    flow();\n                }\n                if (config.onrendered) {\n                    config.onrendered.call($$);\n                }\n            });\n        }\n        else {\n            $$.redrawBar(drawBar);\n            $$.redrawLine(drawLine);\n            $$.redrawArea(drawArea);\n            $$.redrawCircle(cx, cy);\n            $$.redrawText(xForText, yForText, options.flow);\n            $$.redrawRegion();\n            $$.redrawGrid();\n            if (config.onrendered) {\n                config.onrendered.call($$);\n            }\n        }\n\n        // update fadein condition\n        $$.mapToIds($$.data.targets).forEach(function (id) {\n            $$.withoutFadeIn[id] = true;\n        });\n    };\n\n    c3_chart_internal_fn.updateAndRedraw = function (options) {\n        var $$ = this, config = $$.config, transitions;\n        options = options || {};\n        // same with redraw\n        options.withTransition = getOption(options, \"withTransition\", true);\n        options.withTransform = getOption(options, \"withTransform\", false);\n        options.withLegend = getOption(options, \"withLegend\", false);\n        // NOT same with redraw\n        options.withUpdateXDomain = true;\n        options.withUpdateOrgXDomain = true;\n        options.withTransitionForExit = false;\n        options.withTransitionForTransform = getOption(options, \"withTransitionForTransform\", options.withTransition);\n        // MEMO: this needs to be called before updateLegend and it means this ALWAYS needs to be called)\n        $$.updateSizes();\n        // MEMO: called in updateLegend in redraw if withLegend\n        if (!(options.withLegend && config.legend_show)) {\n            transitions = $$.axis.generateTransitions(options.withTransitionForAxis ? config.transition_duration : 0);\n            // Update scales\n            $$.updateScales();\n            $$.updateSvgSize();\n            // Update g positions\n            $$.transformAll(options.withTransitionForTransform, transitions);\n        }\n        // Draw with new sizes & scales\n        $$.redraw(options, transitions);\n    };\n    c3_chart_internal_fn.redrawWithoutRescale = function () {\n        this.redraw({\n            withY: false,\n            withSubchart: false,\n            withEventRect: false,\n            withTransitionForAxis: false\n        });\n    };\n\n    c3_chart_internal_fn.isTimeSeries = function () {\n        return this.config.axis_x_type === 'timeseries';\n    };\n    c3_chart_internal_fn.isCategorized = function () {\n        return this.config.axis_x_type.indexOf('categor') >= 0;\n    };\n    c3_chart_internal_fn.isCustomX = function () {\n        var $$ = this, config = $$.config;\n        return !$$.isTimeSeries() && (config.data_x || notEmpty(config.data_xs));\n    };\n\n    c3_chart_internal_fn.isTimeSeriesY = function () {\n        return this.config.axis_y_type === 'timeseries';\n    };\n\n    c3_chart_internal_fn.getTranslate = function (target) {\n        var $$ = this, config = $$.config, x, y;\n        if (target === 'main') {\n            x = asHalfPixel($$.margin.left);\n            y = asHalfPixel($$.margin.top);\n        } else if (target === 'context') {\n            x = asHalfPixel($$.margin2.left);\n            y = asHalfPixel($$.margin2.top);\n        } else if (target === 'legend') {\n            x = $$.margin3.left;\n            y = $$.margin3.top;\n        } else if (target === 'x') {\n            x = 0;\n            y = config.axis_rotated ? 0 : $$.height;\n        } else if (target === 'y') {\n            x = 0;\n            y = config.axis_rotated ? $$.height : 0;\n        } else if (target === 'y2') {\n            x = config.axis_rotated ? 0 : $$.width;\n            y = config.axis_rotated ? 1 : 0;\n        } else if (target === 'subx') {\n            x = 0;\n            y = config.axis_rotated ? 0 : $$.height2;\n        } else if (target === 'arc') {\n            x = $$.arcWidth / 2;\n            y = $$.arcHeight / 2;\n        }\n        return \"translate(\" + x + \",\" + y + \")\";\n    };\n    c3_chart_internal_fn.initialOpacity = function (d) {\n        return d.value !== null && this.withoutFadeIn[d.id] ? 1 : 0;\n    };\n    c3_chart_internal_fn.initialOpacityForCircle = function (d) {\n        return d.value !== null && this.withoutFadeIn[d.id] ? this.opacityForCircle(d) : 0;\n    };\n    c3_chart_internal_fn.opacityForCircle = function (d) {\n        var opacity = this.config.point_show ? 1 : 0;\n        return isValue(d.value) ? (this.isScatterType(d) ? 0.5 : opacity) : 0;\n    };\n    c3_chart_internal_fn.opacityForText = function () {\n        return this.hasDataLabel() ? 1 : 0;\n    };\n    c3_chart_internal_fn.xx = function (d) {\n        return d ? this.x(d.x) : null;\n    };\n    c3_chart_internal_fn.xv = function (d) {\n        var $$ = this, value = d.value;\n        if ($$.isTimeSeries()) {\n            value = $$.parseDate(d.value);\n        }\n        else if ($$.isCategorized() && typeof d.value === 'string') {\n            value = $$.config.axis_x_categories.indexOf(d.value);\n        }\n        return Math.ceil($$.x(value));\n    };\n    c3_chart_internal_fn.yv = function (d) {\n        var $$ = this,\n            yScale = d.axis && d.axis === 'y2' ? $$.y2 : $$.y;\n        return Math.ceil(yScale(d.value));\n    };\n    c3_chart_internal_fn.subxx = function (d) {\n        return d ? this.subX(d.x) : null;\n    };\n\n    c3_chart_internal_fn.transformMain = function (withTransition, transitions) {\n        var $$ = this,\n            xAxis, yAxis, y2Axis;\n        if (transitions && transitions.axisX) {\n            xAxis = transitions.axisX;\n        } else {\n            xAxis  = $$.main.select('.' + CLASS.axisX);\n            if (withTransition) { xAxis = xAxis.transition(); }\n        }\n        if (transitions && transitions.axisY) {\n            yAxis = transitions.axisY;\n        } else {\n            yAxis = $$.main.select('.' + CLASS.axisY);\n            if (withTransition) { yAxis = yAxis.transition(); }\n        }\n        if (transitions && transitions.axisY2) {\n            y2Axis = transitions.axisY2;\n        } else {\n            y2Axis = $$.main.select('.' + CLASS.axisY2);\n            if (withTransition) { y2Axis = y2Axis.transition(); }\n        }\n        (withTransition ? $$.main.transition() : $$.main).attr(\"transform\", $$.getTranslate('main'));\n        xAxis.attr(\"transform\", $$.getTranslate('x'));\n        yAxis.attr(\"transform\", $$.getTranslate('y'));\n        y2Axis.attr(\"transform\", $$.getTranslate('y2'));\n        $$.main.select('.' + CLASS.chartArcs).attr(\"transform\", $$.getTranslate('arc'));\n    };\n    c3_chart_internal_fn.transformAll = function (withTransition, transitions) {\n        var $$ = this;\n        $$.transformMain(withTransition, transitions);\n        if ($$.config.subchart_show) { $$.transformContext(withTransition, transitions); }\n        if ($$.legend) { $$.transformLegend(withTransition); }\n    };\n\n    c3_chart_internal_fn.updateSvgSize = function () {\n        var $$ = this,\n            brush = $$.svg.select(\".c3-brush .background\");\n        $$.svg.attr('width', $$.currentWidth).attr('height', $$.currentHeight);\n        $$.svg.selectAll(['#' + $$.clipId, '#' + $$.clipIdForGrid]).select('rect')\n            .attr('width', $$.width)\n            .attr('height', $$.height);\n        $$.svg.select('#' + $$.clipIdForXAxis).select('rect')\n            .attr('x', $$.getXAxisClipX.bind($$))\n            .attr('y', $$.getXAxisClipY.bind($$))\n            .attr('width', $$.getXAxisClipWidth.bind($$))\n            .attr('height', $$.getXAxisClipHeight.bind($$));\n        $$.svg.select('#' + $$.clipIdForYAxis).select('rect')\n            .attr('x', $$.getYAxisClipX.bind($$))\n            .attr('y', $$.getYAxisClipY.bind($$))\n            .attr('width', $$.getYAxisClipWidth.bind($$))\n            .attr('height', $$.getYAxisClipHeight.bind($$));\n        $$.svg.select('#' + $$.clipIdForSubchart).select('rect')\n            .attr('width', $$.width)\n            .attr('height', brush.size() ? brush.attr('height') : 0);\n        $$.svg.select('.' + CLASS.zoomRect)\n            .attr('width', $$.width)\n            .attr('height', $$.height);\n        // MEMO: parent div's height will be bigger than svg when <!DOCTYPE html>\n        $$.selectChart.style('max-height', $$.currentHeight + \"px\");\n    };\n\n\n    c3_chart_internal_fn.updateDimension = function (withoutAxis) {\n        var $$ = this;\n        if (!withoutAxis) {\n            if ($$.config.axis_rotated) {\n                $$.axes.x.call($$.xAxis);\n                $$.axes.subx.call($$.subXAxis);\n            } else {\n                $$.axes.y.call($$.yAxis);\n                $$.axes.y2.call($$.y2Axis);\n            }\n        }\n        $$.updateSizes();\n        $$.updateScales();\n        $$.updateSvgSize();\n        $$.transformAll(false);\n    };\n\n    c3_chart_internal_fn.observeInserted = function (selection) {\n        var $$ = this, observer;\n        if (typeof MutationObserver === 'undefined') {\n            window.console.error(\"MutationObserver not defined.\");\n            return;\n        }\n        observer= new MutationObserver(function (mutations) {\n            mutations.forEach(function (mutation) {\n                if (mutation.type === 'childList' && mutation.previousSibling) {\n                    observer.disconnect();\n                    // need to wait for completion of load because size calculation requires the actual sizes determined after that completion\n                    $$.intervalForObserveInserted = window.setInterval(function () {\n                        // parentNode will NOT be null when completed\n                        if (selection.node().parentNode) {\n                            window.clearInterval($$.intervalForObserveInserted);\n                            $$.updateDimension();\n                            if ($$.brush) { $$.brush.update(); }\n                            $$.config.oninit.call($$);\n                            $$.redraw({\n                                withTransform: true,\n                                withUpdateXDomain: true,\n                                withUpdateOrgXDomain: true,\n                                withTransition: false,\n                                withTransitionForTransform: false,\n                                withLegend: true\n                            });\n                            selection.transition().style('opacity', 1);\n                        }\n                    }, 10);\n                }\n            });\n        });\n        observer.observe(selection.node(), {attributes: true, childList: true, characterData: true});\n    };\n\n    c3_chart_internal_fn.bindResize = function () {\n        var $$ = this, config = $$.config;\n\n        $$.resizeFunction = $$.generateResize();\n\n        $$.resizeFunction.add(function () {\n            config.onresize.call($$);\n        });\n        if (config.resize_auto) {\n            $$.resizeFunction.add(function () {\n                if ($$.resizeTimeout !== undefined) {\n                    window.clearTimeout($$.resizeTimeout);\n                }\n                $$.resizeTimeout = window.setTimeout(function () {\n                    delete $$.resizeTimeout;\n                    $$.api.flush();\n                }, 100);\n            });\n        }\n        $$.resizeFunction.add(function () {\n            config.onresized.call($$);\n        });\n\n        if (window.attachEvent) {\n            window.attachEvent('onresize', $$.resizeFunction);\n        } else if (window.addEventListener) {\n            window.addEventListener('resize', $$.resizeFunction, false);\n        } else {\n            // fallback to this, if this is a very old browser\n            var wrapper = window.onresize;\n            if (!wrapper) {\n                // create a wrapper that will call all charts\n                wrapper = $$.generateResize();\n            } else if (!wrapper.add || !wrapper.remove) {\n                // there is already a handler registered, make sure we call it too\n                wrapper = $$.generateResize();\n                wrapper.add(window.onresize);\n            }\n            // add this graph to the wrapper, we will be removed if the user calls destroy\n            wrapper.add($$.resizeFunction);\n            window.onresize = wrapper;\n        }\n    };\n\n    c3_chart_internal_fn.generateResize = function () {\n        var resizeFunctions = [];\n        function callResizeFunctions() {\n            resizeFunctions.forEach(function (f) {\n                f();\n            });\n        }\n        callResizeFunctions.add = function (f) {\n            resizeFunctions.push(f);\n        };\n        callResizeFunctions.remove = function (f) {\n            for (var i = 0; i < resizeFunctions.length; i++) {\n                if (resizeFunctions[i] === f) {\n                    resizeFunctions.splice(i, 1);\n                    break;\n                }\n            }\n        };\n        return callResizeFunctions;\n    };\n\n    c3_chart_internal_fn.endall = function (transition, callback) {\n        var n = 0;\n        transition\n            .each(function () { ++n; })\n            .each(\"end\", function () {\n                if (!--n) { callback.apply(this, arguments); }\n            });\n    };\n    c3_chart_internal_fn.generateWait = function () {\n        var transitionsToWait = [],\n            f = function (transition, callback) {\n                var timer = setInterval(function () {\n                    var done = 0;\n                    transitionsToWait.forEach(function (t) {\n                        if (t.empty()) {\n                            done += 1;\n                            return;\n                        }\n                        try {\n                            t.transition();\n                        } catch (e) {\n                            done += 1;\n                        }\n                    });\n                    if (done === transitionsToWait.length) {\n                        clearInterval(timer);\n                        if (callback) { callback(); }\n                    }\n                }, 10);\n            };\n        f.add = function (transition) {\n            transitionsToWait.push(transition);\n        };\n        return f;\n    };\n\n    c3_chart_internal_fn.parseDate = function (date) {\n        var $$ = this, parsedDate;\n        if (date instanceof Date) {\n            parsedDate = date;\n        } else if (typeof date === 'string') {\n            parsedDate = $$.dataTimeFormat($$.config.data_xFormat).parse(date);\n        } else if (typeof date === 'number' && !isNaN(date)) {\n            parsedDate = new Date(+date);\n        }\n        if (!parsedDate || isNaN(+parsedDate)) {\n            window.console.error(\"Failed to parse x '\" + date + \"' to Date object\");\n        }\n        return parsedDate;\n    };\n\n    c3_chart_internal_fn.isTabVisible = function () {\n        var hidden;\n        if (typeof document.hidden !== \"undefined\") { // Opera 12.10 and Firefox 18 and later support\n            hidden = \"hidden\";\n        } else if (typeof document.mozHidden !== \"undefined\") {\n            hidden = \"mozHidden\";\n        } else if (typeof document.msHidden !== \"undefined\") {\n            hidden = \"msHidden\";\n        } else if (typeof document.webkitHidden !== \"undefined\") {\n            hidden = \"webkitHidden\";\n        }\n\n        return document[hidden] ? false : true;\n    };\n\n    c3_chart_internal_fn.getDefaultConfig = function () {\n        var config = {\n            bindto: '#chart',\n            svg_classname: undefined,\n            size_width: undefined,\n            size_height: undefined,\n            padding_left: undefined,\n            padding_right: undefined,\n            padding_top: undefined,\n            padding_bottom: undefined,\n            resize_auto: true,\n            zoom_enabled: false,\n            zoom_extent: undefined,\n            zoom_privileged: false,\n            zoom_rescale: false,\n            zoom_onzoom: function () {},\n            zoom_onzoomstart: function () {},\n            zoom_onzoomend: function () {},\n            zoom_x_min: undefined,\n            zoom_x_max: undefined,\n            interaction_brighten: true,\n            interaction_enabled: true,\n            onmouseover: function () {},\n            onmouseout: function () {},\n            onresize: function () {},\n            onresized: function () {},\n            oninit: function () {},\n            onrendered: function () {},\n            transition_duration: 350,\n            data_x: undefined,\n            data_xs: {},\n            data_xFormat: '%Y-%m-%d',\n            data_xLocaltime: true,\n            data_xSort: true,\n            data_idConverter: function (id) { return id; },\n            data_names: {},\n            data_classes: {},\n            data_groups: [],\n            data_axes: {},\n            data_type: undefined,\n            data_types: {},\n            data_labels: {},\n            data_order: 'desc',\n            data_regions: {},\n            data_color: undefined,\n            data_colors: {},\n            data_hide: false,\n            data_filter: undefined,\n            data_selection_enabled: false,\n            data_selection_grouped: false,\n            data_selection_isselectable: function () { return true; },\n            data_selection_multiple: true,\n            data_selection_draggable: false,\n            data_onclick: function () {},\n            data_onmouseover: function () {},\n            data_onmouseout: function () {},\n            data_onselected: function () {},\n            data_onunselected: function () {},\n            data_url: undefined,\n            data_headers: undefined,\n            data_json: undefined,\n            data_rows: undefined,\n            data_columns: undefined,\n            data_mimeType: undefined,\n            data_keys: undefined,\n            // configuration for no plot-able data supplied.\n            data_empty_label_text: \"\",\n            // subchart\n            subchart_show: false,\n            subchart_size_height: 60,\n            subchart_axis_x_show: true,\n            subchart_onbrush: function () {},\n            // color\n            color_pattern: [],\n            color_threshold: {},\n            // legend\n            legend_show: true,\n            legend_hide: false,\n            legend_position: 'bottom',\n            legend_inset_anchor: 'top-left',\n            legend_inset_x: 10,\n            legend_inset_y: 0,\n            legend_inset_step: undefined,\n            legend_item_onclick: undefined,\n            legend_item_onmouseover: undefined,\n            legend_item_onmouseout: undefined,\n            legend_equally: false,\n            legend_padding: 0,\n            legend_item_tile_width: 10,\n            legend_item_tile_height: 10,\n            // axis\n            axis_rotated: false,\n            axis_x_show: true,\n            axis_x_type: 'indexed',\n            axis_x_localtime: true,\n            axis_x_categories: [],\n            axis_x_tick_centered: false,\n            axis_x_tick_format: undefined,\n            axis_x_tick_culling: {},\n            axis_x_tick_culling_max: 10,\n            axis_x_tick_count: undefined,\n            axis_x_tick_fit: true,\n            axis_x_tick_values: null,\n            axis_x_tick_rotate: 0,\n            axis_x_tick_outer: true,\n            axis_x_tick_multiline: true,\n            axis_x_tick_width: null,\n            axis_x_max: undefined,\n            axis_x_min: undefined,\n            axis_x_padding: {},\n            axis_x_height: undefined,\n            axis_x_extent: undefined,\n            axis_x_label: {},\n            axis_y_show: true,\n            axis_y_type: undefined,\n            axis_y_max: undefined,\n            axis_y_min: undefined,\n            axis_y_inverted: false,\n            axis_y_center: undefined,\n            axis_y_inner: undefined,\n            axis_y_label: {},\n            axis_y_tick_format: undefined,\n            axis_y_tick_outer: true,\n            axis_y_tick_values: null,        \n            axis_y_tick_rotate: 0,\n            axis_y_tick_count: undefined,\n            axis_y_tick_time_value: undefined,\n            axis_y_tick_time_interval: undefined,\n            axis_y_padding: {},\n            axis_y_default: undefined,\n            axis_y2_show: false,\n            axis_y2_max: undefined,\n            axis_y2_min: undefined,\n            axis_y2_inverted: false,\n            axis_y2_center: undefined,\n            axis_y2_inner: undefined,\n            axis_y2_label: {},\n            axis_y2_tick_format: undefined,\n            axis_y2_tick_outer: true,\n            axis_y2_tick_values: null,\n            axis_y2_tick_count: undefined,\n            axis_y2_padding: {},\n            axis_y2_default: undefined,\n            // grid\n            grid_x_show: false,\n            grid_x_type: 'tick',\n            grid_x_lines: [],\n            grid_y_show: false,\n            // not used\n            // grid_y_type: 'tick',\n            grid_y_lines: [],\n            grid_y_ticks: 10,\n            grid_focus_show: true,\n            grid_lines_front: true,\n            // point - point of each data\n            point_show: true,\n            point_r: 2.5,\n            point_sensitivity: 10,\n            point_focus_expand_enabled: true,\n            point_focus_expand_r: undefined,\n            point_select_r: undefined,\n            // line\n            line_connectNull: false,\n            line_step_type: 'step',\n            // bar\n            bar_width: undefined,\n            bar_width_ratio: 0.6,\n            bar_width_max: undefined,\n            bar_zerobased: true,\n            // area\n            area_zerobased: true,\n            area_above: false,\n            // pie\n            pie_label_show: true,\n            pie_label_format: undefined,\n            pie_label_threshold: 0.05,\n            pie_label_ratio: undefined,\n            pie_expand: {},\n            pie_expand_duration: 50,\n            // gauge\n            gauge_fullCircle: false,\n            gauge_label_show: true,\n            gauge_label_format: undefined,\n            gauge_min: 0,\n            gauge_max: 100,\n            gauge_startingAngle: -1 * Math.PI/2,\n            gauge_units: undefined,\n            gauge_width: undefined,\n            gauge_expand: {},\n            gauge_expand_duration: 50,\n            // donut\n            donut_label_show: true,\n            donut_label_format: undefined,\n            donut_label_threshold: 0.05,\n            donut_label_ratio: undefined,\n            donut_width: undefined,\n            donut_title: \"\",\n            donut_expand: {},\n            donut_expand_duration: 50,\n            // spline\n            spline_interpolation_type: 'cardinal',\n            // region - region to change style\n            regions: [],\n            // tooltip - show when mouseover on each data\n            tooltip_show: true,\n            tooltip_grouped: true,\n            tooltip_format_title: undefined,\n            tooltip_format_name: undefined,\n            tooltip_format_value: undefined,\n            tooltip_position: undefined,\n            tooltip_contents: function (d, defaultTitleFormat, defaultValueFormat, color) {\n                return this.getTooltipContent ? this.getTooltipContent(d, defaultTitleFormat, defaultValueFormat, color) : '';\n            },\n            tooltip_init_show: false,\n            tooltip_init_x: 0,\n            tooltip_init_position: {top: '0px', left: '50px'},\n            tooltip_onshow: function () {},\n            tooltip_onhide: function () {},\n            // title\n            title_text: undefined,\n            title_padding: {\n                top: 0,\n                right: 0,\n                bottom: 0,\n                left: 0\n            },\n            title_position: 'top-center',\n        };\n\n        Object.keys(this.additionalConfig).forEach(function (key) {\n            config[key] = this.additionalConfig[key];\n        }, this);\n\n        return config;\n    };\n    c3_chart_internal_fn.additionalConfig = {};\n\n    c3_chart_internal_fn.loadConfig = function (config) {\n        var this_config = this.config, target, keys, read;\n        function find() {\n            var key = keys.shift();\n    //        console.log(\"key =>\", key, \", target =>\", target);\n            if (key && target && typeof target === 'object' && key in target) {\n                target = target[key];\n                return find();\n            }\n            else if (!key) {\n                return target;\n            }\n            else {\n                return undefined;\n            }\n        }\n        Object.keys(this_config).forEach(function (key) {\n            target = config;\n            keys = key.split('_');\n            read = find();\n    //        console.log(\"CONFIG : \", key, read);\n            if (isDefined(read)) {\n                this_config[key] = read;\n            }\n        });\n    };\n\n    c3_chart_internal_fn.getScale = function (min, max, forTimeseries) {\n        return (forTimeseries ? this.d3.time.scale() : this.d3.scale.linear()).range([min, max]);\n    };\n    c3_chart_internal_fn.getX = function (min, max, domain, offset) {\n        var $$ = this,\n            scale = $$.getScale(min, max, $$.isTimeSeries()),\n            _scale = domain ? scale.domain(domain) : scale, key;\n        // Define customized scale if categorized axis\n        if ($$.isCategorized()) {\n            offset = offset || function () { return 0; };\n            scale = function (d, raw) {\n                var v = _scale(d) + offset(d);\n                return raw ? v : Math.ceil(v);\n            };\n        } else {\n            scale = function (d, raw) {\n                var v = _scale(d);\n                return raw ? v : Math.ceil(v);\n            };\n        }\n        // define functions\n        for (key in _scale) {\n            scale[key] = _scale[key];\n        }\n        scale.orgDomain = function () {\n            return _scale.domain();\n        };\n        // define custom domain() for categorized axis\n        if ($$.isCategorized()) {\n            scale.domain = function (domain) {\n                if (!arguments.length) {\n                    domain = this.orgDomain();\n                    return [domain[0], domain[1] + 1];\n                }\n                _scale.domain(domain);\n                return scale;\n            };\n        }\n        return scale;\n    };\n    c3_chart_internal_fn.getY = function (min, max, domain) {\n        var scale = this.getScale(min, max, this.isTimeSeriesY());\n        if (domain) { scale.domain(domain); }\n        return scale;\n    };\n    c3_chart_internal_fn.getYScale = function (id) {\n        return this.axis.getId(id) === 'y2' ? this.y2 : this.y;\n    };\n    c3_chart_internal_fn.getSubYScale = function (id) {\n        return this.axis.getId(id) === 'y2' ? this.subY2 : this.subY;\n    };\n    c3_chart_internal_fn.updateScales = function () {\n        var $$ = this, config = $$.config,\n            forInit = !$$.x;\n        // update edges\n        $$.xMin = config.axis_rotated ? 1 : 0;\n        $$.xMax = config.axis_rotated ? $$.height : $$.width;\n        $$.yMin = config.axis_rotated ? 0 : $$.height;\n        $$.yMax = config.axis_rotated ? $$.width : 1;\n        $$.subXMin = $$.xMin;\n        $$.subXMax = $$.xMax;\n        $$.subYMin = config.axis_rotated ? 0 : $$.height2;\n        $$.subYMax = config.axis_rotated ? $$.width2 : 1;\n        // update scales\n        $$.x = $$.getX($$.xMin, $$.xMax, forInit ? undefined : $$.x.orgDomain(), function () { return $$.xAxis.tickOffset(); });\n        $$.y = $$.getY($$.yMin, $$.yMax, forInit ? config.axis_y_default : $$.y.domain());\n        $$.y2 = $$.getY($$.yMin, $$.yMax, forInit ? config.axis_y2_default : $$.y2.domain());\n        $$.subX = $$.getX($$.xMin, $$.xMax, $$.orgXDomain, function (d) { return d % 1 ? 0 : $$.subXAxis.tickOffset(); });\n        $$.subY = $$.getY($$.subYMin, $$.subYMax, forInit ? config.axis_y_default : $$.subY.domain());\n        $$.subY2 = $$.getY($$.subYMin, $$.subYMax, forInit ? config.axis_y2_default : $$.subY2.domain());\n        // update axes\n        $$.xAxisTickFormat = $$.axis.getXAxisTickFormat();\n        $$.xAxisTickValues = $$.axis.getXAxisTickValues();\n        $$.yAxisTickValues = $$.axis.getYAxisTickValues();\n        $$.y2AxisTickValues = $$.axis.getY2AxisTickValues();\n\n        $$.xAxis = $$.axis.getXAxis($$.x, $$.xOrient, $$.xAxisTickFormat, $$.xAxisTickValues, config.axis_x_tick_outer);\n        $$.subXAxis = $$.axis.getXAxis($$.subX, $$.subXOrient, $$.xAxisTickFormat, $$.xAxisTickValues, config.axis_x_tick_outer);\n        $$.yAxis = $$.axis.getYAxis($$.y, $$.yOrient, config.axis_y_tick_format, $$.yAxisTickValues, config.axis_y_tick_outer);\n        $$.y2Axis = $$.axis.getYAxis($$.y2, $$.y2Orient, config.axis_y2_tick_format, $$.y2AxisTickValues, config.axis_y2_tick_outer);\n\n        // Set initialized scales to brush and zoom\n        if (!forInit) {\n            if ($$.brush) { $$.brush.scale($$.subX); }\n            if (config.zoom_enabled) { $$.zoom.scale($$.x); }\n        }\n        // update for arc\n        if ($$.updateArc) { $$.updateArc(); }\n    };\n\n    c3_chart_internal_fn.getYDomainMin = function (targets) {\n        var $$ = this, config = $$.config,\n            ids = $$.mapToIds(targets), ys = $$.getValuesAsIdKeyed(targets),\n            j, k, baseId, idsInGroup, id, hasNegativeValue;\n        if (config.data_groups.length > 0) {\n            hasNegativeValue = $$.hasNegativeValueInTargets(targets);\n            for (j = 0; j < config.data_groups.length; j++) {\n                // Determine baseId\n                idsInGroup = config.data_groups[j].filter(function (id) { return ids.indexOf(id) >= 0; });\n                if (idsInGroup.length === 0) { continue; }\n                baseId = idsInGroup[0];\n                // Consider negative values\n                if (hasNegativeValue && ys[baseId]) {\n                    ys[baseId].forEach(function (v, i) {\n                        ys[baseId][i] = v < 0 ? v : 0;\n                    });\n                }\n                // Compute min\n                for (k = 1; k < idsInGroup.length; k++) {\n                    id = idsInGroup[k];\n                    if (! ys[id]) { continue; }\n                    ys[id].forEach(function (v, i) {\n                        if ($$.axis.getId(id) === $$.axis.getId(baseId) && ys[baseId] && !(hasNegativeValue && +v > 0)) {\n                            ys[baseId][i] += +v;\n                        }\n                    });\n                }\n            }\n        }\n        return $$.d3.min(Object.keys(ys).map(function (key) { return $$.d3.min(ys[key]); }));\n    };\n    c3_chart_internal_fn.getYDomainMax = function (targets) {\n        var $$ = this, config = $$.config,\n            ids = $$.mapToIds(targets), ys = $$.getValuesAsIdKeyed(targets),\n            j, k, baseId, idsInGroup, id, hasPositiveValue;\n        if (config.data_groups.length > 0) {\n            hasPositiveValue = $$.hasPositiveValueInTargets(targets);\n            for (j = 0; j < config.data_groups.length; j++) {\n                // Determine baseId\n                idsInGroup = config.data_groups[j].filter(function (id) { return ids.indexOf(id) >= 0; });\n                if (idsInGroup.length === 0) { continue; }\n                baseId = idsInGroup[0];\n                // Consider positive values\n                if (hasPositiveValue && ys[baseId]) {\n                    ys[baseId].forEach(function (v, i) {\n                        ys[baseId][i] = v > 0 ? v : 0;\n                    });\n                }\n                // Compute max\n                for (k = 1; k < idsInGroup.length; k++) {\n                    id = idsInGroup[k];\n                    if (! ys[id]) { continue; }\n                    ys[id].forEach(function (v, i) {\n                        if ($$.axis.getId(id) === $$.axis.getId(baseId) && ys[baseId] && !(hasPositiveValue && +v < 0)) {\n                            ys[baseId][i] += +v;\n                        }\n                    });\n                }\n            }\n        }\n        return $$.d3.max(Object.keys(ys).map(function (key) { return $$.d3.max(ys[key]); }));\n    };\n    c3_chart_internal_fn.getYDomain = function (targets, axisId, xDomain) {\n        var $$ = this, config = $$.config,\n            targetsByAxisId = targets.filter(function (t) { return $$.axis.getId(t.id) === axisId; }),\n            yTargets = xDomain ? $$.filterByXDomain(targetsByAxisId, xDomain) : targetsByAxisId,\n            yMin = axisId === 'y2' ? config.axis_y2_min : config.axis_y_min,\n            yMax = axisId === 'y2' ? config.axis_y2_max : config.axis_y_max,\n            yDomainMin = $$.getYDomainMin(yTargets),\n            yDomainMax = $$.getYDomainMax(yTargets),\n            domain, domainLength, padding, padding_top, padding_bottom,\n            center = axisId === 'y2' ? config.axis_y2_center : config.axis_y_center,\n            yDomainAbs, lengths, diff, ratio, isAllPositive, isAllNegative,\n            isZeroBased = ($$.hasType('bar', yTargets) && config.bar_zerobased) || ($$.hasType('area', yTargets) && config.area_zerobased),\n            isInverted = axisId === 'y2' ? config.axis_y2_inverted : config.axis_y_inverted,\n            showHorizontalDataLabel = $$.hasDataLabel() && config.axis_rotated,\n            showVerticalDataLabel = $$.hasDataLabel() && !config.axis_rotated;\n\n        // MEMO: avoid inverting domain unexpectedly\n        yDomainMin = isValue(yMin) ? yMin : isValue(yMax) ? (yDomainMin < yMax ? yDomainMin : yMax - 10) : yDomainMin;\n        yDomainMax = isValue(yMax) ? yMax : isValue(yMin) ? (yMin < yDomainMax ? yDomainMax : yMin + 10) : yDomainMax;\n\n        if (yTargets.length === 0) { // use current domain if target of axisId is none\n            return axisId === 'y2' ? $$.y2.domain() : $$.y.domain();\n        }\n        if (isNaN(yDomainMin)) { // set minimum to zero when not number\n            yDomainMin = 0;\n        }\n        if (isNaN(yDomainMax)) { // set maximum to have same value as yDomainMin\n            yDomainMax = yDomainMin;\n        }\n        if (yDomainMin === yDomainMax) {\n            yDomainMin < 0 ? yDomainMax = 0 : yDomainMin = 0;\n        }\n        isAllPositive = yDomainMin >= 0 && yDomainMax >= 0;\n        isAllNegative = yDomainMin <= 0 && yDomainMax <= 0;\n\n        // Cancel zerobased if axis_*_min / axis_*_max specified\n        if ((isValue(yMin) && isAllPositive) || (isValue(yMax) && isAllNegative)) {\n            isZeroBased = false;\n        }\n\n        // Bar/Area chart should be 0-based if all positive|negative\n        if (isZeroBased) {\n            if (isAllPositive) { yDomainMin = 0; }\n            if (isAllNegative) { yDomainMax = 0; }\n        }\n\n        domainLength = Math.abs(yDomainMax - yDomainMin);\n        padding = padding_top = padding_bottom = domainLength * 0.1;\n\n        if (typeof center !== 'undefined') {\n            yDomainAbs = Math.max(Math.abs(yDomainMin), Math.abs(yDomainMax));\n            yDomainMax = center + yDomainAbs;\n            yDomainMin = center - yDomainAbs;\n        }\n        // add padding for data label\n        if (showHorizontalDataLabel) {\n            lengths = $$.getDataLabelLength(yDomainMin, yDomainMax, 'width');\n            diff = diffDomain($$.y.range());\n            ratio = [lengths[0] / diff, lengths[1] / diff];\n            padding_top += domainLength * (ratio[1] / (1 - ratio[0] - ratio[1]));\n            padding_bottom += domainLength * (ratio[0] / (1 - ratio[0] - ratio[1]));\n        } else if (showVerticalDataLabel) {\n            lengths = $$.getDataLabelLength(yDomainMin, yDomainMax, 'height');\n            padding_top += $$.axis.convertPixelsToAxisPadding(lengths[1], domainLength);\n            padding_bottom += $$.axis.convertPixelsToAxisPadding(lengths[0], domainLength);\n        }\n        if (axisId === 'y' && notEmpty(config.axis_y_padding)) {\n            padding_top = $$.axis.getPadding(config.axis_y_padding, 'top', padding_top, domainLength);\n            padding_bottom = $$.axis.getPadding(config.axis_y_padding, 'bottom', padding_bottom, domainLength);\n        }\n        if (axisId === 'y2' && notEmpty(config.axis_y2_padding)) {\n            padding_top = $$.axis.getPadding(config.axis_y2_padding, 'top', padding_top, domainLength);\n            padding_bottom = $$.axis.getPadding(config.axis_y2_padding, 'bottom', padding_bottom, domainLength);\n        }\n        // Bar/Area chart should be 0-based if all positive|negative\n        if (isZeroBased) {\n            if (isAllPositive) { padding_bottom = yDomainMin; }\n            if (isAllNegative) { padding_top = -yDomainMax; }\n        }\n        domain = [yDomainMin - padding_bottom, yDomainMax + padding_top];\n        return isInverted ? domain.reverse() : domain;\n    };\n    c3_chart_internal_fn.getXDomainMin = function (targets) {\n        var $$ = this, config = $$.config;\n        return isDefined(config.axis_x_min) ?\n            ($$.isTimeSeries() ? this.parseDate(config.axis_x_min) : config.axis_x_min) :\n        $$.d3.min(targets, function (t) { return $$.d3.min(t.values, function (v) { return v.x; }); });\n    };\n    c3_chart_internal_fn.getXDomainMax = function (targets) {\n        var $$ = this, config = $$.config;\n        return isDefined(config.axis_x_max) ?\n            ($$.isTimeSeries() ? this.parseDate(config.axis_x_max) : config.axis_x_max) :\n        $$.d3.max(targets, function (t) { return $$.d3.max(t.values, function (v) { return v.x; }); });\n    };\n    c3_chart_internal_fn.getXDomainPadding = function (domain) {\n        var $$ = this, config = $$.config,\n            diff = domain[1] - domain[0],\n            maxDataCount, padding, paddingLeft, paddingRight;\n        if ($$.isCategorized()) {\n            padding = 0;\n        } else if ($$.hasType('bar')) {\n            maxDataCount = $$.getMaxDataCount();\n            padding = maxDataCount > 1 ? (diff / (maxDataCount - 1)) / 2 : 0.5;\n        } else {\n            padding = diff * 0.01;\n        }\n        if (typeof config.axis_x_padding === 'object' && notEmpty(config.axis_x_padding)) {\n            paddingLeft = isValue(config.axis_x_padding.left) ? config.axis_x_padding.left : padding;\n            paddingRight = isValue(config.axis_x_padding.right) ? config.axis_x_padding.right : padding;\n        } else if (typeof config.axis_x_padding === 'number') {\n            paddingLeft = paddingRight = config.axis_x_padding;\n        } else {\n            paddingLeft = paddingRight = padding;\n        }\n        return {left: paddingLeft, right: paddingRight};\n    };\n    c3_chart_internal_fn.getXDomain = function (targets) {\n        var $$ = this,\n            xDomain = [$$.getXDomainMin(targets), $$.getXDomainMax(targets)],\n            firstX = xDomain[0], lastX = xDomain[1],\n            padding = $$.getXDomainPadding(xDomain),\n            min = 0, max = 0;\n        // show center of x domain if min and max are the same\n        if ((firstX - lastX) === 0 && !$$.isCategorized()) {\n            if ($$.isTimeSeries()) {\n                firstX = new Date(firstX.getTime() * 0.5);\n                lastX = new Date(lastX.getTime() * 1.5);\n            } else {\n                firstX = firstX === 0 ? 1 : (firstX * 0.5);\n                lastX = lastX === 0 ? -1 : (lastX * 1.5);\n            }\n        }\n        if (firstX || firstX === 0) {\n            min = $$.isTimeSeries() ? new Date(firstX.getTime() - padding.left) : firstX - padding.left;\n        }\n        if (lastX || lastX === 0) {\n            max = $$.isTimeSeries() ? new Date(lastX.getTime() + padding.right) : lastX + padding.right;\n        }\n        return [min, max];\n    };\n    c3_chart_internal_fn.updateXDomain = function (targets, withUpdateXDomain, withUpdateOrgXDomain, withTrim, domain) {\n        var $$ = this, config = $$.config;\n\n        if (withUpdateOrgXDomain) {\n            $$.x.domain(domain ? domain : $$.d3.extent($$.getXDomain(targets)));\n            $$.orgXDomain = $$.x.domain();\n            if (config.zoom_enabled) { $$.zoom.scale($$.x).updateScaleExtent(); }\n            $$.subX.domain($$.x.domain());\n            if ($$.brush) { $$.brush.scale($$.subX); }\n        }\n        if (withUpdateXDomain) {\n            $$.x.domain(domain ? domain : (!$$.brush || $$.brush.empty()) ? $$.orgXDomain : $$.brush.extent());\n            if (config.zoom_enabled) { $$.zoom.scale($$.x).updateScaleExtent(); }\n        }\n\n        // Trim domain when too big by zoom mousemove event\n        if (withTrim) { $$.x.domain($$.trimXDomain($$.x.orgDomain())); }\n\n        return $$.x.domain();\n    };\n    c3_chart_internal_fn.trimXDomain = function (domain) {\n        var zoomDomain = this.getZoomDomain(),\n            min = zoomDomain[0], max = zoomDomain[1];\n        if (domain[0] <= min) {\n            domain[1] = +domain[1] + (min - domain[0]);\n            domain[0] = min;\n        }\n        if (max <= domain[1]) {\n            domain[0] = +domain[0] - (domain[1] - max);\n            domain[1] = max;\n        }\n        return domain;\n    };\n\n    c3_chart_internal_fn.isX = function (key) {\n        var $$ = this, config = $$.config;\n        return (config.data_x && key === config.data_x) || (notEmpty(config.data_xs) && hasValue(config.data_xs, key));\n    };\n    c3_chart_internal_fn.isNotX = function (key) {\n        return !this.isX(key);\n    };\n    c3_chart_internal_fn.getXKey = function (id) {\n        var $$ = this, config = $$.config;\n        return config.data_x ? config.data_x : notEmpty(config.data_xs) ? config.data_xs[id] : null;\n    };\n    c3_chart_internal_fn.getXValuesOfXKey = function (key, targets) {\n        var $$ = this,\n            xValues, ids = targets && notEmpty(targets) ? $$.mapToIds(targets) : [];\n        ids.forEach(function (id) {\n            if ($$.getXKey(id) === key) {\n                xValues = $$.data.xs[id];\n            }\n        });\n        return xValues;\n    };\n    c3_chart_internal_fn.getIndexByX = function (x) {\n        var $$ = this,\n            data = $$.filterByX($$.data.targets, x);\n        return data.length ? data[0].index : null;\n    };\n    c3_chart_internal_fn.getXValue = function (id, i) {\n        var $$ = this;\n        return id in $$.data.xs && $$.data.xs[id] && isValue($$.data.xs[id][i]) ? $$.data.xs[id][i] : i;\n    };\n    c3_chart_internal_fn.getOtherTargetXs = function () {\n        var $$ = this,\n            idsForX = Object.keys($$.data.xs);\n        return idsForX.length ? $$.data.xs[idsForX[0]] : null;\n    };\n    c3_chart_internal_fn.getOtherTargetX = function (index) {\n        var xs = this.getOtherTargetXs();\n        return xs && index < xs.length ? xs[index] : null;\n    };\n    c3_chart_internal_fn.addXs = function (xs) {\n        var $$ = this;\n        Object.keys(xs).forEach(function (id) {\n            $$.config.data_xs[id] = xs[id];\n        });\n    };\n    c3_chart_internal_fn.hasMultipleX = function (xs) {\n        return this.d3.set(Object.keys(xs).map(function (id) { return xs[id]; })).size() > 1;\n    };\n    c3_chart_internal_fn.isMultipleX = function () {\n        return notEmpty(this.config.data_xs) || !this.config.data_xSort || this.hasType('scatter');\n    };\n    c3_chart_internal_fn.addName = function (data) {\n        var $$ = this, name;\n        if (data) {\n            name = $$.config.data_names[data.id];\n            data.name = name !== undefined ? name : data.id;\n        }\n        return data;\n    };\n    c3_chart_internal_fn.getValueOnIndex = function (values, index) {\n        var valueOnIndex = values.filter(function (v) { return v.index === index; });\n        return valueOnIndex.length ? valueOnIndex[0] : null;\n    };\n    c3_chart_internal_fn.updateTargetX = function (targets, x) {\n        var $$ = this;\n        targets.forEach(function (t) {\n            t.values.forEach(function (v, i) {\n                v.x = $$.generateTargetX(x[i], t.id, i);\n            });\n            $$.data.xs[t.id] = x;\n        });\n    };\n    c3_chart_internal_fn.updateTargetXs = function (targets, xs) {\n        var $$ = this;\n        targets.forEach(function (t) {\n            if (xs[t.id]) {\n                $$.updateTargetX([t], xs[t.id]);\n            }\n        });\n    };\n    c3_chart_internal_fn.generateTargetX = function (rawX, id, index) {\n        var $$ = this, x;\n        if ($$.isTimeSeries()) {\n            x = rawX ? $$.parseDate(rawX) : $$.parseDate($$.getXValue(id, index));\n        }\n        else if ($$.isCustomX() && !$$.isCategorized()) {\n            x = isValue(rawX) ? +rawX : $$.getXValue(id, index);\n        }\n        else {\n            x = index;\n        }\n        return x;\n    };\n    c3_chart_internal_fn.cloneTarget = function (target) {\n        return {\n            id : target.id,\n            id_org : target.id_org,\n            values : target.values.map(function (d) {\n                return {x: d.x, value: d.value, id: d.id};\n            })\n        };\n    };\n    c3_chart_internal_fn.updateXs = function () {\n        var $$ = this;\n        if ($$.data.targets.length) {\n            $$.xs = [];\n            $$.data.targets[0].values.forEach(function (v) {\n                $$.xs[v.index] = v.x;\n            });\n        }\n    };\n    c3_chart_internal_fn.getPrevX = function (i) {\n        var x = this.xs[i - 1];\n        return typeof x !== 'undefined' ? x : null;\n    };\n    c3_chart_internal_fn.getNextX = function (i) {\n        var x = this.xs[i + 1];\n        return typeof x !== 'undefined' ? x : null;\n    };\n    c3_chart_internal_fn.getMaxDataCount = function () {\n        var $$ = this;\n        return $$.d3.max($$.data.targets, function (t) { return t.values.length; });\n    };\n    c3_chart_internal_fn.getMaxDataCountTarget = function (targets) {\n        var length = targets.length, max = 0, maxTarget;\n        if (length > 1) {\n            targets.forEach(function (t) {\n                if (t.values.length > max) {\n                    maxTarget = t;\n                    max = t.values.length;\n                }\n            });\n        } else {\n            maxTarget = length ? targets[0] : null;\n        }\n        return maxTarget;\n    };\n    c3_chart_internal_fn.getEdgeX = function (targets) {\n        var $$ = this;\n        return !targets.length ? [0, 0] : [\n            $$.d3.min(targets, function (t) { return t.values[0].x; }),\n            $$.d3.max(targets, function (t) { return t.values[t.values.length - 1].x; })\n        ];\n    };\n    c3_chart_internal_fn.mapToIds = function (targets) {\n        return targets.map(function (d) { return d.id; });\n    };\n    c3_chart_internal_fn.mapToTargetIds = function (ids) {\n        var $$ = this;\n        return ids ? [].concat(ids) : $$.mapToIds($$.data.targets);\n    };\n    c3_chart_internal_fn.hasTarget = function (targets, id) {\n        var ids = this.mapToIds(targets), i;\n        for (i = 0; i < ids.length; i++) {\n            if (ids[i] === id) {\n                return true;\n            }\n        }\n        return false;\n    };\n    c3_chart_internal_fn.isTargetToShow = function (targetId) {\n        return this.hiddenTargetIds.indexOf(targetId) < 0;\n    };\n    c3_chart_internal_fn.isLegendToShow = function (targetId) {\n        return this.hiddenLegendIds.indexOf(targetId) < 0;\n    };\n    c3_chart_internal_fn.filterTargetsToShow = function (targets) {\n        var $$ = this;\n        return targets.filter(function (t) { return $$.isTargetToShow(t.id); });\n    };\n    c3_chart_internal_fn.mapTargetsToUniqueXs = function (targets) {\n        var $$ = this;\n        var xs = $$.d3.set($$.d3.merge(targets.map(function (t) { return t.values.map(function (v) { return +v.x; }); }))).values();\n        xs = $$.isTimeSeries() ? xs.map(function (x) { return new Date(+x); }) : xs.map(function (x) { return +x; });\n        return xs.sort(function (a, b) { return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN; });\n    };\n    c3_chart_internal_fn.addHiddenTargetIds = function (targetIds) {\n        this.hiddenTargetIds = this.hiddenTargetIds.concat(targetIds);\n    };\n    c3_chart_internal_fn.removeHiddenTargetIds = function (targetIds) {\n        this.hiddenTargetIds = this.hiddenTargetIds.filter(function (id) { return targetIds.indexOf(id) < 0; });\n    };\n    c3_chart_internal_fn.addHiddenLegendIds = function (targetIds) {\n        this.hiddenLegendIds = this.hiddenLegendIds.concat(targetIds);\n    };\n    c3_chart_internal_fn.removeHiddenLegendIds = function (targetIds) {\n        this.hiddenLegendIds = this.hiddenLegendIds.filter(function (id) { return targetIds.indexOf(id) < 0; });\n    };\n    c3_chart_internal_fn.getValuesAsIdKeyed = function (targets) {\n        var ys = {};\n        targets.forEach(function (t) {\n            ys[t.id] = [];\n            t.values.forEach(function (v) {\n                ys[t.id].push(v.value);\n            });\n        });\n        return ys;\n    };\n    c3_chart_internal_fn.checkValueInTargets = function (targets, checker) {\n        var ids = Object.keys(targets), i, j, values;\n        for (i = 0; i < ids.length; i++) {\n            values = targets[ids[i]].values;\n            for (j = 0; j < values.length; j++) {\n                if (checker(values[j].value)) {\n                    return true;\n                }\n            }\n        }\n        return false;\n    };\n    c3_chart_internal_fn.hasNegativeValueInTargets = function (targets) {\n        return this.checkValueInTargets(targets, function (v) { return v < 0; });\n    };\n    c3_chart_internal_fn.hasPositiveValueInTargets = function (targets) {\n        return this.checkValueInTargets(targets, function (v) { return v > 0; });\n    };\n    c3_chart_internal_fn.isOrderDesc = function () {\n        var config = this.config;\n        return typeof(config.data_order) === 'string' && config.data_order.toLowerCase() === 'desc';\n    };\n    c3_chart_internal_fn.isOrderAsc = function () {\n        var config = this.config;\n        return typeof(config.data_order) === 'string' && config.data_order.toLowerCase() === 'asc';\n    };\n    c3_chart_internal_fn.orderTargets = function (targets) {\n        var $$ = this, config = $$.config, orderAsc = $$.isOrderAsc(), orderDesc = $$.isOrderDesc();\n        if (orderAsc || orderDesc) {\n            targets.sort(function (t1, t2) {\n                var reducer = function (p, c) { return p + Math.abs(c.value); };\n                var t1Sum = t1.values.reduce(reducer, 0),\n                    t2Sum = t2.values.reduce(reducer, 0);\n                return orderAsc ? t2Sum - t1Sum : t1Sum - t2Sum;\n            });\n        } else if (isFunction(config.data_order)) {\n            targets.sort(config.data_order);\n        } // TODO: accept name array for order\n        return targets;\n    };\n    c3_chart_internal_fn.filterByX = function (targets, x) {\n        return this.d3.merge(targets.map(function (t) { return t.values; })).filter(function (v) { return v.x - x === 0; });\n    };\n    c3_chart_internal_fn.filterRemoveNull = function (data) {\n        return data.filter(function (d) { return isValue(d.value); });\n    };\n    c3_chart_internal_fn.filterByXDomain = function (targets, xDomain) {\n        return targets.map(function (t) {\n            return {\n                id: t.id,\n                id_org: t.id_org,\n                values: t.values.filter(function (v) {\n                    return xDomain[0] <= v.x && v.x <= xDomain[1];\n                })\n            };\n        });\n    };\n    c3_chart_internal_fn.hasDataLabel = function () {\n        var config = this.config;\n        if (typeof config.data_labels === 'boolean' && config.data_labels) {\n            return true;\n        } else if (typeof config.data_labels === 'object' && notEmpty(config.data_labels)) {\n            return true;\n        }\n        return false;\n    };\n    c3_chart_internal_fn.getDataLabelLength = function (min, max, key) {\n        var $$ = this,\n            lengths = [0, 0], paddingCoef = 1.3;\n        $$.selectChart.select('svg').selectAll('.dummy')\n            .data([min, max])\n            .enter().append('text')\n            .text(function (d) { return $$.dataLabelFormat(d.id)(d); })\n            .each(function (d, i) {\n                lengths[i] = this.getBoundingClientRect()[key] * paddingCoef;\n            })\n            .remove();\n        return lengths;\n    };\n    c3_chart_internal_fn.isNoneArc = function (d) {\n        return this.hasTarget(this.data.targets, d.id);\n    },\n    c3_chart_internal_fn.isArc = function (d) {\n        return 'data' in d && this.hasTarget(this.data.targets, d.data.id);\n    };\n    c3_chart_internal_fn.findSameXOfValues = function (values, index) {\n        var i, targetX = values[index].x, sames = [];\n        for (i = index - 1; i >= 0; i--) {\n            if (targetX !== values[i].x) { break; }\n            sames.push(values[i]);\n        }\n        for (i = index; i < values.length; i++) {\n            if (targetX !== values[i].x) { break; }\n            sames.push(values[i]);\n        }\n        return sames;\n    };\n\n    c3_chart_internal_fn.findClosestFromTargets = function (targets, pos) {\n        var $$ = this, candidates;\n\n        // map to array of closest points of each target\n        candidates = targets.map(function (target) {\n            return $$.findClosest(target.values, pos);\n        });\n\n        // decide closest point and return\n        return $$.findClosest(candidates, pos);\n    };\n    c3_chart_internal_fn.findClosest = function (values, pos) {\n        var $$ = this, minDist = $$.config.point_sensitivity, closest;\n\n        // find mouseovering bar\n        values.filter(function (v) { return v && $$.isBarType(v.id); }).forEach(function (v) {\n            var shape = $$.main.select('.' + CLASS.bars + $$.getTargetSelectorSuffix(v.id) + ' .' + CLASS.bar + '-' + v.index).node();\n            if (!closest && $$.isWithinBar(shape)) {\n                closest = v;\n            }\n        });\n\n        // find closest point from non-bar\n        values.filter(function (v) { return v && !$$.isBarType(v.id); }).forEach(function (v) {\n            var d = $$.dist(v, pos);\n            if (d < minDist) {\n                minDist = d;\n                closest = v;\n            }\n        });\n\n        return closest;\n    };\n    c3_chart_internal_fn.dist = function (data, pos) {\n        var $$ = this, config = $$.config,\n            xIndex = config.axis_rotated ? 1 : 0,\n            yIndex = config.axis_rotated ? 0 : 1,\n            y = $$.circleY(data, data.index),\n            x = $$.x(data.x);\n        return Math.sqrt(Math.pow(x - pos[xIndex], 2) + Math.pow(y - pos[yIndex], 2));\n    };\n    c3_chart_internal_fn.convertValuesToStep = function (values) {\n        var converted = [].concat(values), i;\n\n        if (!this.isCategorized()) {\n            return values;\n        }\n\n        for (i = values.length + 1; 0 < i; i--) {\n            converted[i] = converted[i - 1];\n        }\n\n        converted[0] = {\n            x: converted[0].x - 1,\n            value: converted[0].value,\n            id: converted[0].id\n        };\n        converted[values.length + 1] = {\n            x: converted[values.length].x + 1,\n            value: converted[values.length].value,\n            id: converted[values.length].id\n        };\n\n        return converted;\n    };\n    c3_chart_internal_fn.updateDataAttributes = function (name, attrs) {\n        var $$ = this, config = $$.config, current = config['data_' + name];\n        if (typeof attrs === 'undefined') { return current; }\n        Object.keys(attrs).forEach(function (id) {\n            current[id] = attrs[id];\n        });\n        $$.redraw({withLegend: true});\n        return current;\n    };\n\n    c3_chart_internal_fn.convertUrlToData = function (url, mimeType, headers, keys, done) {\n        var $$ = this, type = mimeType ? mimeType : 'csv';\n        var req = $$.d3.xhr(url);\n        if (headers) {\n            Object.keys(headers).forEach(function (header) {\n                req.header(header, headers[header]);\n            });\n        }\n        req.get(function (error, data) {\n            var d;\n            if (!data) {\n                throw new Error(error.responseURL + ' ' + error.status + ' (' + error.statusText + ')');\n            }\n            if (type === 'json') {\n                d = $$.convertJsonToData(JSON.parse(data.response), keys);\n            } else if (type === 'tsv') {\n                d = $$.convertTsvToData(data.response);\n            } else {\n                d = $$.convertCsvToData(data.response);\n            }\n            done.call($$, d);\n        });\n    };\n    c3_chart_internal_fn.convertXsvToData = function (xsv, parser) {\n        var rows = parser.parseRows(xsv), d;\n        if (rows.length === 1) {\n            d = [{}];\n            rows[0].forEach(function (id) {\n                d[0][id] = null;\n            });\n        } else {\n            d = parser.parse(xsv);\n        }\n        return d;\n    };\n    c3_chart_internal_fn.convertCsvToData = function (csv) {\n        return this.convertXsvToData(csv, this.d3.csv);\n    };\n    c3_chart_internal_fn.convertTsvToData = function (tsv) {\n        return this.convertXsvToData(tsv, this.d3.tsv);\n    };\n    c3_chart_internal_fn.convertJsonToData = function (json, keys) {\n        var $$ = this,\n            new_rows = [], targetKeys, data;\n        if (keys) { // when keys specified, json would be an array that includes objects\n            if (keys.x) {\n                targetKeys = keys.value.concat(keys.x);\n                $$.config.data_x = keys.x;\n            } else {\n                targetKeys = keys.value;\n            }\n            new_rows.push(targetKeys);\n            json.forEach(function (o) {\n                var new_row = [];\n                targetKeys.forEach(function (key) {\n                    // convert undefined to null because undefined data will be removed in convertDataToTargets()\n                    var v = $$.findValueInJson(o, key);\n                    if (isUndefined(v)) {\n                        v = null;\n                    }\n                    new_row.push(v);\n                });\n                new_rows.push(new_row);\n            });\n            data = $$.convertRowsToData(new_rows);\n        } else {\n            Object.keys(json).forEach(function (key) {\n                new_rows.push([key].concat(json[key]));\n            });\n            data = $$.convertColumnsToData(new_rows);\n        }\n        return data;\n    };\n    c3_chart_internal_fn.findValueInJson = function (object, path) {\n        path = path.replace(/\\[(\\w+)\\]/g, '.$1'); // convert indexes to properties (replace [] with .)\n        path = path.replace(/^\\./, '');           // strip a leading dot\n        var pathArray = path.split('.');\n        for (var i = 0; i < pathArray.length; ++i) {\n            var k = pathArray[i];\n            if (k in object) {\n                object = object[k];\n            } else {\n                return;\n            }\n        }\n        return object;\n    };\n    c3_chart_internal_fn.convertRowsToData = function (rows) {\n        var keys = rows[0], new_row = {}, new_rows = [], i, j;\n        for (i = 1; i < rows.length; i++) {\n            new_row = {};\n            for (j = 0; j < rows[i].length; j++) {\n                if (isUndefined(rows[i][j])) {\n                    throw new Error(\"Source data is missing a component at (\" + i + \",\" + j + \")!\");\n                }\n                new_row[keys[j]] = rows[i][j];\n            }\n            new_rows.push(new_row);\n        }\n        return new_rows;\n    };\n    c3_chart_internal_fn.convertColumnsToData = function (columns) {\n        var new_rows = [], i, j, key;\n        for (i = 0; i < columns.length; i++) {\n            key = columns[i][0];\n            for (j = 1; j < columns[i].length; j++) {\n                if (isUndefined(new_rows[j - 1])) {\n                    new_rows[j - 1] = {};\n                }\n                if (isUndefined(columns[i][j])) {\n                    throw new Error(\"Source data is missing a component at (\" + i + \",\" + j + \")!\");\n                }\n                new_rows[j - 1][key] = columns[i][j];\n            }\n        }\n        return new_rows;\n    };\n    c3_chart_internal_fn.convertDataToTargets = function (data, appendXs) {\n        var $$ = this, config = $$.config,\n            ids = $$.d3.keys(data[0]).filter($$.isNotX, $$),\n            xs = $$.d3.keys(data[0]).filter($$.isX, $$),\n            targets;\n\n        // save x for update data by load when custom x and c3.x API\n        ids.forEach(function (id) {\n            var xKey = $$.getXKey(id);\n\n            if ($$.isCustomX() || $$.isTimeSeries()) {\n                // if included in input data\n                if (xs.indexOf(xKey) >= 0) {\n                    $$.data.xs[id] = (appendXs && $$.data.xs[id] ? $$.data.xs[id] : []).concat(\n                        data.map(function (d) { return d[xKey]; })\n                            .filter(isValue)\n                            .map(function (rawX, i) { return $$.generateTargetX(rawX, id, i); })\n                    );\n                }\n                // if not included in input data, find from preloaded data of other id's x\n                else if (config.data_x) {\n                    $$.data.xs[id] = $$.getOtherTargetXs();\n                }\n                // if not included in input data, find from preloaded data\n                else if (notEmpty(config.data_xs)) {\n                    $$.data.xs[id] = $$.getXValuesOfXKey(xKey, $$.data.targets);\n                }\n                // MEMO: if no x included, use same x of current will be used\n            } else {\n                $$.data.xs[id] = data.map(function (d, i) { return i; });\n            }\n        });\n\n\n        // check x is defined\n        ids.forEach(function (id) {\n            if (!$$.data.xs[id]) {\n                throw new Error('x is not defined for id = \"' + id + '\".');\n            }\n        });\n\n        // convert to target\n        targets = ids.map(function (id, index) {\n            var convertedId = config.data_idConverter(id);\n            return {\n                id: convertedId,\n                id_org: id,\n                values: data.map(function (d, i) {\n                    var xKey = $$.getXKey(id), rawX = d[xKey],\n                        value = d[id] !== null && !isNaN(d[id]) ? +d[id] : null, x;\n                    // use x as categories if custom x and categorized\n                    if ($$.isCustomX() && $$.isCategorized() && index === 0 && !isUndefined(rawX)) {\n                        if (index === 0 && i === 0) {\n                            config.axis_x_categories = [];\n                        }\n                        x = config.axis_x_categories.indexOf(rawX);\n                        if (x === -1) {\n                            x = config.axis_x_categories.length;\n                            config.axis_x_categories.push(rawX);\n                        }\n                    } else {\n                        x  = $$.generateTargetX(rawX, id, i);\n                    }\n                    // mark as x = undefined if value is undefined and filter to remove after mapped\n                    if (isUndefined(d[id]) || $$.data.xs[id].length <= i) {\n                        x = undefined;\n                    }\n                    return {x: x, value: value, id: convertedId};\n                }).filter(function (v) { return isDefined(v.x); })\n            };\n        });\n\n        // finish targets\n        targets.forEach(function (t) {\n            var i;\n            // sort values by its x\n            if (config.data_xSort) {\n                t.values = t.values.sort(function (v1, v2) {\n                    var x1 = v1.x || v1.x === 0 ? v1.x : Infinity,\n                        x2 = v2.x || v2.x === 0 ? v2.x : Infinity;\n                    return x1 - x2;\n                });\n            }\n            // indexing each value\n            i = 0;\n            t.values.forEach(function (v) {\n                v.index = i++;\n            });\n            // this needs to be sorted because its index and value.index is identical\n            $$.data.xs[t.id].sort(function (v1, v2) {\n                return v1 - v2;\n            });\n        });\n\n        // cache information about values\n        $$.hasNegativeValue = $$.hasNegativeValueInTargets(targets);\n        $$.hasPositiveValue = $$.hasPositiveValueInTargets(targets);\n\n        // set target types\n        if (config.data_type) {\n            $$.setTargetType($$.mapToIds(targets).filter(function (id) { return ! (id in config.data_types); }), config.data_type);\n        }\n\n        // cache as original id keyed\n        targets.forEach(function (d) {\n            $$.addCache(d.id_org, d);\n        });\n\n        return targets;\n    };\n\n    c3_chart_internal_fn.load = function (targets, args) {\n        var $$ = this;\n        if (targets) {\n            // filter loading targets if needed\n            if (args.filter) {\n                targets = targets.filter(args.filter);\n            }\n            // set type if args.types || args.type specified\n            if (args.type || args.types) {\n                targets.forEach(function (t) {\n                    var type = args.types && args.types[t.id] ? args.types[t.id] : args.type;\n                    $$.setTargetType(t.id, type);\n                });\n            }\n            // Update/Add data\n            $$.data.targets.forEach(function (d) {\n                for (var i = 0; i < targets.length; i++) {\n                    if (d.id === targets[i].id) {\n                        d.values = targets[i].values;\n                        targets.splice(i, 1);\n                        break;\n                    }\n                }\n            });\n            $$.data.targets = $$.data.targets.concat(targets); // add remained\n        }\n\n        // Set targets\n        $$.updateTargets($$.data.targets);\n\n        // Redraw with new targets\n        $$.redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true, withLegend: true});\n\n        if (args.done) { args.done(); }\n    };\n    c3_chart_internal_fn.loadFromArgs = function (args) {\n        var $$ = this;\n        if (args.data) {\n            $$.load($$.convertDataToTargets(args.data), args);\n        }\n        else if (args.url) {\n            $$.convertUrlToData(args.url, args.mimeType, args.headers, args.keys, function (data) {\n                $$.load($$.convertDataToTargets(data), args);\n            });\n        }\n        else if (args.json) {\n            $$.load($$.convertDataToTargets($$.convertJsonToData(args.json, args.keys)), args);\n        }\n        else if (args.rows) {\n            $$.load($$.convertDataToTargets($$.convertRowsToData(args.rows)), args);\n        }\n        else if (args.columns) {\n            $$.load($$.convertDataToTargets($$.convertColumnsToData(args.columns)), args);\n        }\n        else {\n            $$.load(null, args);\n        }\n    };\n    c3_chart_internal_fn.unload = function (targetIds, done) {\n        var $$ = this;\n        if (!done) {\n            done = function () {};\n        }\n        // filter existing target\n        targetIds = targetIds.filter(function (id) { return $$.hasTarget($$.data.targets, id); });\n        // If no target, call done and return\n        if (!targetIds || targetIds.length === 0) {\n            done();\n            return;\n        }\n        $$.svg.selectAll(targetIds.map(function (id) { return $$.selectorTarget(id); }))\n            .transition()\n            .style('opacity', 0)\n            .remove()\n            .call($$.endall, done);\n        targetIds.forEach(function (id) {\n            // Reset fadein for future load\n            $$.withoutFadeIn[id] = false;\n            // Remove target's elements\n            if ($$.legend) {\n                $$.legend.selectAll('.' + CLASS.legendItem + $$.getTargetSelectorSuffix(id)).remove();\n            }\n            // Remove target\n            $$.data.targets = $$.data.targets.filter(function (t) {\n                return t.id !== id;\n            });\n        });\n    };\n\n    c3_chart_internal_fn.categoryName = function (i) {\n        var config = this.config;\n        return i < config.axis_x_categories.length ? config.axis_x_categories[i] : i;\n    };\n\n    c3_chart_internal_fn.initEventRect = function () {\n        var $$ = this;\n        $$.main.select('.' + CLASS.chart).append(\"g\")\n            .attr(\"class\", CLASS.eventRects)\n            .style('fill-opacity', 0);\n    };\n    c3_chart_internal_fn.redrawEventRect = function () {\n        var $$ = this, config = $$.config,\n            eventRectUpdate, maxDataCountTarget,\n            isMultipleX = $$.isMultipleX();\n\n        // rects for mouseover\n        var eventRects = $$.main.select('.' + CLASS.eventRects)\n                .style('cursor', config.zoom_enabled ? config.axis_rotated ? 'ns-resize' : 'ew-resize' : null)\n                .classed(CLASS.eventRectsMultiple, isMultipleX)\n                .classed(CLASS.eventRectsSingle, !isMultipleX);\n\n        // clear old rects\n        eventRects.selectAll('.' + CLASS.eventRect).remove();\n\n        // open as public variable\n        $$.eventRect = eventRects.selectAll('.' + CLASS.eventRect);\n\n        if (isMultipleX) {\n            eventRectUpdate = $$.eventRect.data([0]);\n            // enter : only one rect will be added\n            $$.generateEventRectsForMultipleXs(eventRectUpdate.enter());\n            // update\n            $$.updateEventRect(eventRectUpdate);\n            // exit : not needed because always only one rect exists\n        }\n        else {\n            // Set data and update $$.eventRect\n            maxDataCountTarget = $$.getMaxDataCountTarget($$.data.targets);\n            eventRects.datum(maxDataCountTarget ? maxDataCountTarget.values : []);\n            $$.eventRect = eventRects.selectAll('.' + CLASS.eventRect);\n            eventRectUpdate = $$.eventRect.data(function (d) { return d; });\n            // enter\n            $$.generateEventRectsForSingleX(eventRectUpdate.enter());\n            // update\n            $$.updateEventRect(eventRectUpdate);\n            // exit\n            eventRectUpdate.exit().remove();\n        }\n    };\n    c3_chart_internal_fn.updateEventRect = function (eventRectUpdate) {\n        var $$ = this, config = $$.config,\n            x, y, w, h, rectW, rectX;\n\n        // set update selection if null\n        eventRectUpdate = eventRectUpdate || $$.eventRect.data(function (d) { return d; });\n\n        if ($$.isMultipleX()) {\n            // TODO: rotated not supported yet\n            x = 0;\n            y = 0;\n            w = $$.width;\n            h = $$.height;\n        }\n        else {\n            if (($$.isCustomX() || $$.isTimeSeries()) && !$$.isCategorized()) {\n\n                // update index for x that is used by prevX and nextX\n                $$.updateXs();\n\n                rectW = function (d) {\n                    var prevX = $$.getPrevX(d.index), nextX = $$.getNextX(d.index);\n\n                    // if there this is a single data point make the eventRect full width (or height)\n                    if (prevX === null && nextX === null) {\n                        return config.axis_rotated ? $$.height : $$.width;\n                    }\n\n                    if (prevX === null) { prevX = $$.x.domain()[0]; }\n                    if (nextX === null) { nextX = $$.x.domain()[1]; }\n\n                    return Math.max(0, ($$.x(nextX) - $$.x(prevX)) / 2);\n                };\n                rectX = function (d) {\n                    var prevX = $$.getPrevX(d.index), nextX = $$.getNextX(d.index),\n                        thisX = $$.data.xs[d.id][d.index];\n\n                    // if there this is a single data point position the eventRect at 0\n                    if (prevX === null && nextX === null) {\n                        return 0;\n                    }\n\n                    if (prevX === null) { prevX = $$.x.domain()[0]; }\n\n                    return ($$.x(thisX) + $$.x(prevX)) / 2;\n                };\n            } else {\n                rectW = $$.getEventRectWidth();\n                rectX = function (d) {\n                    return $$.x(d.x) - (rectW / 2);\n                };\n            }\n            x = config.axis_rotated ? 0 : rectX;\n            y = config.axis_rotated ? rectX : 0;\n            w = config.axis_rotated ? $$.width : rectW;\n            h = config.axis_rotated ? rectW : $$.height;\n        }\n\n        eventRectUpdate\n            .attr('class', $$.classEvent.bind($$))\n            .attr(\"x\", x)\n            .attr(\"y\", y)\n            .attr(\"width\", w)\n            .attr(\"height\", h);\n    };\n    c3_chart_internal_fn.generateEventRectsForSingleX = function (eventRectEnter) {\n        var $$ = this, d3 = $$.d3, config = $$.config;\n        eventRectEnter.append(\"rect\")\n            .attr(\"class\", $$.classEvent.bind($$))\n            .style(\"cursor\", config.data_selection_enabled && config.data_selection_grouped ? \"pointer\" : null)\n            .on('mouseover', function (d) {\n                var index = d.index;\n\n                if ($$.dragging || $$.flowing) { return; } // do nothing while dragging/flowing\n                if ($$.hasArcType()) { return; }\n\n                // Expand shapes for selection\n                if (config.point_focus_expand_enabled) { $$.expandCircles(index, null, true); }\n                $$.expandBars(index, null, true);\n\n                // Call event handler\n                $$.main.selectAll('.' + CLASS.shape + '-' + index).each(function (d) {\n                    config.data_onmouseover.call($$.api, d);\n                });\n            })\n            .on('mouseout', function (d) {\n                var index = d.index;\n                if (!$$.config) { return; } // chart is destroyed\n                if ($$.hasArcType()) { return; }\n                $$.hideXGridFocus();\n                $$.hideTooltip();\n                // Undo expanded shapes\n                $$.unexpandCircles();\n                $$.unexpandBars();\n                // Call event handler\n                $$.main.selectAll('.' + CLASS.shape + '-' + index).each(function (d) {\n                    config.data_onmouseout.call($$.api, d);\n                });\n            })\n            .on('mousemove', function (d) {\n                var selectedData, index = d.index,\n                    eventRect = $$.svg.select('.' + CLASS.eventRect + '-' + index);\n\n                if ($$.dragging || $$.flowing) { return; } // do nothing while dragging/flowing\n                if ($$.hasArcType()) { return; }\n\n                if ($$.isStepType(d) && $$.config.line_step_type === 'step-after' && d3.mouse(this)[0] < $$.x($$.getXValue(d.id, index))) {\n                    index -= 1;\n                }\n\n                // Show tooltip\n                selectedData = $$.filterTargetsToShow($$.data.targets).map(function (t) {\n                    return $$.addName($$.getValueOnIndex(t.values, index));\n                });\n\n                if (config.tooltip_grouped) {\n                    $$.showTooltip(selectedData, this);\n                    $$.showXGridFocus(selectedData);\n                }\n\n                if (config.tooltip_grouped && (!config.data_selection_enabled || config.data_selection_grouped)) {\n                    return;\n                }\n\n                $$.main.selectAll('.' + CLASS.shape + '-' + index)\n                    .each(function () {\n                        d3.select(this).classed(CLASS.EXPANDED, true);\n                        if (config.data_selection_enabled) {\n                            eventRect.style('cursor', config.data_selection_grouped ? 'pointer' : null);\n                        }\n                        if (!config.tooltip_grouped) {\n                            $$.hideXGridFocus();\n                            $$.hideTooltip();\n                            if (!config.data_selection_grouped) {\n                                $$.unexpandCircles(index);\n                                $$.unexpandBars(index);\n                            }\n                        }\n                    })\n                    .filter(function (d) {\n                        return $$.isWithinShape(this, d);\n                    })\n                    .each(function (d) {\n                        if (config.data_selection_enabled && (config.data_selection_grouped || config.data_selection_isselectable(d))) {\n                            eventRect.style('cursor', 'pointer');\n                        }\n                        if (!config.tooltip_grouped) {\n                            $$.showTooltip([d], this);\n                            $$.showXGridFocus([d]);\n                            if (config.point_focus_expand_enabled) { $$.expandCircles(index, d.id, true); }\n                            $$.expandBars(index, d.id, true);\n                        }\n                    });\n            })\n            .on('click', function (d) {\n                var index = d.index;\n                if ($$.hasArcType() || !$$.toggleShape) { return; }\n                if ($$.cancelClick) {\n                    $$.cancelClick = false;\n                    return;\n                }\n                if ($$.isStepType(d) && config.line_step_type === 'step-after' && d3.mouse(this)[0] < $$.x($$.getXValue(d.id, index))) {\n                    index -= 1;\n                }\n                $$.main.selectAll('.' + CLASS.shape + '-' + index).each(function (d) {\n                    if (config.data_selection_grouped || $$.isWithinShape(this, d)) {\n                        $$.toggleShape(this, d, index);\n                        $$.config.data_onclick.call($$.api, d, this);\n                    }\n                });\n            })\n            .call(\n                config.data_selection_draggable && $$.drag ? (\n                    d3.behavior.drag().origin(Object)\n                        .on('drag', function () { $$.drag(d3.mouse(this)); })\n                        .on('dragstart', function () { $$.dragstart(d3.mouse(this)); })\n                        .on('dragend', function () { $$.dragend(); })\n                ) : function () {}\n            );\n    };\n\n    c3_chart_internal_fn.generateEventRectsForMultipleXs = function (eventRectEnter) {\n        var $$ = this, d3 = $$.d3, config = $$.config;\n\n        function mouseout() {\n            $$.svg.select('.' + CLASS.eventRect).style('cursor', null);\n            $$.hideXGridFocus();\n            $$.hideTooltip();\n            $$.unexpandCircles();\n            $$.unexpandBars();\n        }\n\n        eventRectEnter.append('rect')\n            .attr('x', 0)\n            .attr('y', 0)\n            .attr('width', $$.width)\n            .attr('height', $$.height)\n            .attr('class', CLASS.eventRect)\n            .on('mouseout', function () {\n                if (!$$.config) { return; } // chart is destroyed\n                if ($$.hasArcType()) { return; }\n                mouseout();\n            })\n            .on('mousemove', function () {\n                var targetsToShow = $$.filterTargetsToShow($$.data.targets);\n                var mouse, closest, sameXData, selectedData;\n\n                if ($$.dragging) { return; } // do nothing when dragging\n                if ($$.hasArcType(targetsToShow)) { return; }\n\n                mouse = d3.mouse(this);\n                closest = $$.findClosestFromTargets(targetsToShow, mouse);\n\n                if ($$.mouseover && (!closest || closest.id !== $$.mouseover.id)) {\n                    config.data_onmouseout.call($$.api, $$.mouseover);\n                    $$.mouseover = undefined;\n                }\n\n                if (! closest) {\n                    mouseout();\n                    return;\n                }\n\n                if ($$.isScatterType(closest) || !config.tooltip_grouped) {\n                    sameXData = [closest];\n                } else {\n                    sameXData = $$.filterByX(targetsToShow, closest.x);\n                }\n\n                // show tooltip when cursor is close to some point\n                selectedData = sameXData.map(function (d) {\n                    return $$.addName(d);\n                });\n                $$.showTooltip(selectedData, this);\n\n                // expand points\n                if (config.point_focus_expand_enabled) {\n                    $$.expandCircles(closest.index, closest.id, true);\n                }\n                $$.expandBars(closest.index, closest.id, true);\n\n                // Show xgrid focus line\n                $$.showXGridFocus(selectedData);\n\n                // Show cursor as pointer if point is close to mouse position\n                if ($$.isBarType(closest.id) || $$.dist(closest, mouse) < config.point_sensitivity) {\n                    $$.svg.select('.' + CLASS.eventRect).style('cursor', 'pointer');\n                    if (!$$.mouseover) {\n                        config.data_onmouseover.call($$.api, closest);\n                        $$.mouseover = closest;\n                    }\n                }\n            })\n            .on('click', function () {\n                var targetsToShow = $$.filterTargetsToShow($$.data.targets);\n                var mouse, closest;\n                if ($$.hasArcType(targetsToShow)) { return; }\n\n                mouse = d3.mouse(this);\n                closest = $$.findClosestFromTargets(targetsToShow, mouse);\n                if (! closest) { return; }\n                // select if selection enabled\n                if ($$.isBarType(closest.id) || $$.dist(closest, mouse) < config.point_sensitivity) {\n                    $$.main.selectAll('.' + CLASS.shapes + $$.getTargetSelectorSuffix(closest.id)).selectAll('.' + CLASS.shape + '-' + closest.index).each(function () {\n                        if (config.data_selection_grouped || $$.isWithinShape(this, closest)) {\n                            $$.toggleShape(this, closest, closest.index);\n                            $$.config.data_onclick.call($$.api, closest, this);\n                        }\n                    });\n                }\n            })\n            .call(\n                config.data_selection_draggable && $$.drag ? (\n                    d3.behavior.drag().origin(Object)\n                        .on('drag', function () { $$.drag(d3.mouse(this)); })\n                        .on('dragstart', function () { $$.dragstart(d3.mouse(this)); })\n                        .on('dragend', function () { $$.dragend(); })\n                ) : function () {}\n            );\n    };\n    c3_chart_internal_fn.dispatchEvent = function (type, index, mouse) {\n        var $$ = this,\n            selector = '.' + CLASS.eventRect + (!$$.isMultipleX() ? '-' + index : ''),\n            eventRect = $$.main.select(selector).node(),\n            box = eventRect.getBoundingClientRect(),\n            x = box.left + (mouse ? mouse[0] : 0),\n            y = box.top + (mouse ? mouse[1] : 0),\n            event = document.createEvent(\"MouseEvents\");\n\n        event.initMouseEvent(type, true, true, window, 0, x, y, x, y,\n                             false, false, false, false, 0, null);\n        eventRect.dispatchEvent(event);\n    };\n\n    c3_chart_internal_fn.getCurrentWidth = function () {\n        var $$ = this, config = $$.config;\n        return config.size_width ? config.size_width : $$.getParentWidth();\n    };\n    c3_chart_internal_fn.getCurrentHeight = function () {\n        var $$ = this, config = $$.config,\n            h = config.size_height ? config.size_height : $$.getParentHeight();\n        return h > 0 ? h : 320 / ($$.hasType('gauge') && !config.gauge_fullCircle ? 2 : 1); \n    };\n    c3_chart_internal_fn.getCurrentPaddingTop = function () {\n        var $$ = this,\n            config = $$.config,\n            padding = isValue(config.padding_top) ? config.padding_top : 0;\n        if ($$.title && $$.title.node()) {\n            padding += $$.getTitlePadding();\n        }\n        return padding;\n    };\n    c3_chart_internal_fn.getCurrentPaddingBottom = function () {\n        var config = this.config;\n        return isValue(config.padding_bottom) ? config.padding_bottom : 0;\n    };\n    c3_chart_internal_fn.getCurrentPaddingLeft = function (withoutRecompute) {\n        var $$ = this, config = $$.config;\n        if (isValue(config.padding_left)) {\n            return config.padding_left;\n        } else if (config.axis_rotated) {\n            return !config.axis_x_show ? 1 : Math.max(ceil10($$.getAxisWidthByAxisId('x', withoutRecompute)), 40);\n        } else if (!config.axis_y_show || config.axis_y_inner) { // && !config.axis_rotated\n            return $$.axis.getYAxisLabelPosition().isOuter ? 30 : 1;\n        } else {\n            return ceil10($$.getAxisWidthByAxisId('y', withoutRecompute));\n        }\n    };\n    c3_chart_internal_fn.getCurrentPaddingRight = function () {\n        var $$ = this, config = $$.config,\n            defaultPadding = 10, legendWidthOnRight = $$.isLegendRight ? $$.getLegendWidth() + 20 : 0;\n        if (isValue(config.padding_right)) {\n            return config.padding_right + 1; // 1 is needed not to hide tick line\n        } else if (config.axis_rotated) {\n            return defaultPadding + legendWidthOnRight;\n        } else if (!config.axis_y2_show || config.axis_y2_inner) { // && !config.axis_rotated\n            return 2 + legendWidthOnRight + ($$.axis.getY2AxisLabelPosition().isOuter ? 20 : 0);\n        } else {\n            return ceil10($$.getAxisWidthByAxisId('y2')) + legendWidthOnRight;\n        }\n    };\n\n    c3_chart_internal_fn.getParentRectValue = function (key) {\n        var parent = this.selectChart.node(), v;\n        while (parent && parent.tagName !== 'BODY') {\n            try {\n                v = parent.getBoundingClientRect()[key];\n            } catch(e) {\n                if (key === 'width') {\n                    // In IE in certain cases getBoundingClientRect\n                    // will cause an \"unspecified error\"\n                    v = parent.offsetWidth;\n                }\n            }\n            if (v) {\n                break;\n            }\n            parent = parent.parentNode;\n        }\n        return v;\n    };\n    c3_chart_internal_fn.getParentWidth = function () {\n        return this.getParentRectValue('width');\n    };\n    c3_chart_internal_fn.getParentHeight = function () {\n        var h = this.selectChart.style('height');\n        return h.indexOf('px') > 0 ? +h.replace('px', '') : 0;\n    };\n\n\n    c3_chart_internal_fn.getSvgLeft = function (withoutRecompute) {\n        var $$ = this, config = $$.config,\n            hasLeftAxisRect = config.axis_rotated || (!config.axis_rotated && !config.axis_y_inner),\n            leftAxisClass = config.axis_rotated ? CLASS.axisX : CLASS.axisY,\n            leftAxis = $$.main.select('.' + leftAxisClass).node(),\n            svgRect = leftAxis && hasLeftAxisRect ? leftAxis.getBoundingClientRect() : {right: 0},\n            chartRect = $$.selectChart.node().getBoundingClientRect(),\n            hasArc = $$.hasArcType(),\n            svgLeft = svgRect.right - chartRect.left - (hasArc ? 0 : $$.getCurrentPaddingLeft(withoutRecompute));\n        return svgLeft > 0 ? svgLeft : 0;\n    };\n\n\n    c3_chart_internal_fn.getAxisWidthByAxisId = function (id, withoutRecompute) {\n        var $$ = this, position = $$.axis.getLabelPositionById(id);\n        return $$.axis.getMaxTickWidth(id, withoutRecompute) + (position.isInner ? 20 : 40);\n    };\n    c3_chart_internal_fn.getHorizontalAxisHeight = function (axisId) {\n        var $$ = this, config = $$.config, h = 30;\n        if (axisId === 'x' && !config.axis_x_show) { return 8; }\n        if (axisId === 'x' && config.axis_x_height) { return config.axis_x_height; }\n        if (axisId === 'y' && !config.axis_y_show) { \n            return config.legend_show && !$$.isLegendRight && !$$.isLegendInset ? 10 : 1; \n        }\n        if (axisId === 'y2' && !config.axis_y2_show) { return $$.rotated_padding_top; }\n        // Calculate x axis height when tick rotated\n        if (axisId === 'x' && !config.axis_rotated && config.axis_x_tick_rotate) {\n            h = 30 + $$.axis.getMaxTickWidth(axisId) * Math.cos(Math.PI * (90 - config.axis_x_tick_rotate) / 180);\n        }\n        // Calculate y axis height when tick rotated\n        if (axisId === 'y' && config.axis_rotated && config.axis_y_tick_rotate) {\n            h = 30 + $$.axis.getMaxTickWidth(axisId) * Math.cos(Math.PI * (90 - config.axis_y_tick_rotate) / 180);\n        }\n        return h + ($$.axis.getLabelPositionById(axisId).isInner ? 0 : 10) + (axisId === 'y2' ? -10 : 0);\n    };\n\n    c3_chart_internal_fn.getEventRectWidth = function () {\n        return Math.max(0, this.xAxis.tickInterval());\n    };\n\n    c3_chart_internal_fn.getShapeIndices = function (typeFilter) {\n        var $$ = this, config = $$.config,\n            indices = {}, i = 0, j, k;\n        $$.filterTargetsToShow($$.data.targets.filter(typeFilter, $$)).forEach(function (d) {\n            for (j = 0; j < config.data_groups.length; j++) {\n                if (config.data_groups[j].indexOf(d.id) < 0) { continue; }\n                for (k = 0; k < config.data_groups[j].length; k++) {\n                    if (config.data_groups[j][k] in indices) {\n                        indices[d.id] = indices[config.data_groups[j][k]];\n                        break;\n                    }\n                }\n            }\n            if (isUndefined(indices[d.id])) { indices[d.id] = i++; }\n        });\n        indices.__max__ = i - 1;\n        return indices;\n    };\n    c3_chart_internal_fn.getShapeX = function (offset, targetsNum, indices, isSub) {\n        var $$ = this, scale = isSub ? $$.subX : $$.x;\n        return function (d) {\n            var index = d.id in indices ? indices[d.id] : 0;\n            return d.x || d.x === 0 ? scale(d.x) - offset * (targetsNum / 2 - index) : 0;\n        };\n    };\n    c3_chart_internal_fn.getShapeY = function (isSub) {\n        var $$ = this;\n        return function (d) {\n            var scale = isSub ? $$.getSubYScale(d.id) : $$.getYScale(d.id);\n            return scale(d.value);\n        };\n    };\n    c3_chart_internal_fn.getShapeOffset = function (typeFilter, indices, isSub) {\n        var $$ = this,\n            targets = $$.orderTargets($$.filterTargetsToShow($$.data.targets.filter(typeFilter, $$))),\n            targetIds = targets.map(function (t) { return t.id; });\n        return function (d, i) {\n            var scale = isSub ? $$.getSubYScale(d.id) : $$.getYScale(d.id),\n                y0 = scale(0), offset = y0;\n            targets.forEach(function (t) {\n                var values = $$.isStepType(d) ? $$.convertValuesToStep(t.values) : t.values;\n                if (t.id === d.id || indices[t.id] !== indices[d.id]) { return; }\n                if (targetIds.indexOf(t.id) < targetIds.indexOf(d.id)) {\n                    // check if the x values line up\n                    if (typeof values[i] === 'undefined' || +values[i].x !== +d.x) {  // \"+\" for timeseries\n                        // if not, try to find the value that does line up\n                        i = -1;\n                        values.forEach(function (v, j) {\n                            if (v.x === d.x) {\n                                i = j;\n                            }\n                        });\n                    }\n                    if (i in values && values[i].value * d.value >= 0) {\n                        offset += scale(values[i].value) - y0;\n                    }\n                }\n            });\n            return offset;\n        };\n    };\n    c3_chart_internal_fn.isWithinShape = function (that, d) {\n        var $$ = this,\n            shape = $$.d3.select(that), isWithin;\n        if (!$$.isTargetToShow(d.id)) {\n            isWithin = false;\n        }\n        else if (that.nodeName === 'circle') {\n            isWithin = $$.isStepType(d) ? $$.isWithinStep(that, $$.getYScale(d.id)(d.value)) : $$.isWithinCircle(that, $$.pointSelectR(d) * 1.5);\n        }\n        else if (that.nodeName === 'path') {\n            isWithin = shape.classed(CLASS.bar) ? $$.isWithinBar(that) : true;\n        }\n        return isWithin;\n    };\n\n\n    c3_chart_internal_fn.getInterpolate = function (d) {\n        var $$ = this,\n            interpolation = $$.isInterpolationType($$.config.spline_interpolation_type) ? $$.config.spline_interpolation_type : 'cardinal';\n        return $$.isSplineType(d) ? interpolation : $$.isStepType(d) ? $$.config.line_step_type : \"linear\";\n    };\n\n    c3_chart_internal_fn.initLine = function () {\n        var $$ = this;\n        $$.main.select('.' + CLASS.chart).append(\"g\")\n            .attr(\"class\", CLASS.chartLines);\n    };\n    c3_chart_internal_fn.updateTargetsForLine = function (targets) {\n        var $$ = this, config = $$.config,\n            mainLineUpdate, mainLineEnter,\n            classChartLine = $$.classChartLine.bind($$),\n            classLines = $$.classLines.bind($$),\n            classAreas = $$.classAreas.bind($$),\n            classCircles = $$.classCircles.bind($$),\n            classFocus = $$.classFocus.bind($$);\n        mainLineUpdate = $$.main.select('.' + CLASS.chartLines).selectAll('.' + CLASS.chartLine)\n            .data(targets)\n            .attr('class', function (d) { return classChartLine(d) + classFocus(d); });\n        mainLineEnter = mainLineUpdate.enter().append('g')\n            .attr('class', classChartLine)\n            .style('opacity', 0)\n            .style(\"pointer-events\", \"none\");\n        // Lines for each data\n        mainLineEnter.append('g')\n            .attr(\"class\", classLines);\n        // Areas\n        mainLineEnter.append('g')\n            .attr('class', classAreas);\n        // Circles for each data point on lines\n        mainLineEnter.append('g')\n            .attr(\"class\", function (d) { return $$.generateClass(CLASS.selectedCircles, d.id); });\n        mainLineEnter.append('g')\n            .attr(\"class\", classCircles)\n            .style(\"cursor\", function (d) { return config.data_selection_isselectable(d) ? \"pointer\" : null; });\n        // Update date for selected circles\n        targets.forEach(function (t) {\n            $$.main.selectAll('.' + CLASS.selectedCircles + $$.getTargetSelectorSuffix(t.id)).selectAll('.' + CLASS.selectedCircle).each(function (d) {\n                d.value = t.values[d.index].value;\n            });\n        });\n        // MEMO: can not keep same color...\n        //mainLineUpdate.exit().remove();\n    };\n    c3_chart_internal_fn.updateLine = function (durationForExit) {\n        var $$ = this;\n        $$.mainLine = $$.main.selectAll('.' + CLASS.lines).selectAll('.' + CLASS.line)\n            .data($$.lineData.bind($$));\n        $$.mainLine.enter().append('path')\n            .attr('class', $$.classLine.bind($$))\n            .style(\"stroke\", $$.color);\n        $$.mainLine\n            .style(\"opacity\", $$.initialOpacity.bind($$))\n            .style('shape-rendering', function (d) { return $$.isStepType(d) ? 'crispEdges' : ''; })\n            .attr('transform', null);\n        $$.mainLine.exit().transition().duration(durationForExit)\n            .style('opacity', 0)\n            .remove();\n    };\n    c3_chart_internal_fn.redrawLine = function (drawLine, withTransition) {\n        return [\n            (withTransition ? this.mainLine.transition(Math.random().toString()) : this.mainLine)\n                .attr(\"d\", drawLine)\n                .style(\"stroke\", this.color)\n                .style(\"opacity\", 1)\n        ];\n    };\n    c3_chart_internal_fn.generateDrawLine = function (lineIndices, isSub) {\n        var $$ = this, config = $$.config,\n            line = $$.d3.svg.line(),\n            getPoints = $$.generateGetLinePoints(lineIndices, isSub),\n            yScaleGetter = isSub ? $$.getSubYScale : $$.getYScale,\n            xValue = function (d) { return (isSub ? $$.subxx : $$.xx).call($$, d); },\n            yValue = function (d, i) {\n                return config.data_groups.length > 0 ? getPoints(d, i)[0][1] : yScaleGetter.call($$, d.id)(d.value);\n            };\n\n        line = config.axis_rotated ? line.x(yValue).y(xValue) : line.x(xValue).y(yValue);\n        if (!config.line_connectNull) { line = line.defined(function (d) { return d.value != null; }); }\n        return function (d) {\n            var values = config.line_connectNull ? $$.filterRemoveNull(d.values) : d.values,\n                x = isSub ? $$.x : $$.subX, y = yScaleGetter.call($$, d.id), x0 = 0, y0 = 0, path;\n            if ($$.isLineType(d)) {\n                if (config.data_regions[d.id]) {\n                    path = $$.lineWithRegions(values, x, y, config.data_regions[d.id]);\n                } else {\n                    if ($$.isStepType(d)) { values = $$.convertValuesToStep(values); }\n                    path = line.interpolate($$.getInterpolate(d))(values);\n                }\n            } else {\n                if (values[0]) {\n                    x0 = x(values[0].x);\n                    y0 = y(values[0].value);\n                }\n                path = config.axis_rotated ? \"M \" + y0 + \" \" + x0 : \"M \" + x0 + \" \" + y0;\n            }\n            return path ? path : \"M 0 0\";\n        };\n    };\n    c3_chart_internal_fn.generateGetLinePoints = function (lineIndices, isSub) { // partial duplication of generateGetBarPoints\n        var $$ = this, config = $$.config,\n            lineTargetsNum = lineIndices.__max__ + 1,\n            x = $$.getShapeX(0, lineTargetsNum, lineIndices, !!isSub),\n            y = $$.getShapeY(!!isSub),\n            lineOffset = $$.getShapeOffset($$.isLineType, lineIndices, !!isSub),\n            yScale = isSub ? $$.getSubYScale : $$.getYScale;\n        return function (d, i) {\n            var y0 = yScale.call($$, d.id)(0),\n                offset = lineOffset(d, i) || y0, // offset is for stacked area chart\n                posX = x(d), posY = y(d);\n            // fix posY not to overflow opposite quadrant\n            if (config.axis_rotated) {\n                if ((0 < d.value && posY < y0) || (d.value < 0 && y0 < posY)) { posY = y0; }\n            }\n            // 1 point that marks the line position\n            return [\n                [posX, posY - (y0 - offset)],\n                [posX, posY - (y0 - offset)], // needed for compatibility\n                [posX, posY - (y0 - offset)], // needed for compatibility\n                [posX, posY - (y0 - offset)]  // needed for compatibility\n            ];\n        };\n    };\n\n\n    c3_chart_internal_fn.lineWithRegions = function (d, x, y, _regions) {\n        var $$ = this, config = $$.config,\n            prev = -1, i, j,\n            s = \"M\", sWithRegion,\n            xp, yp, dx, dy, dd, diff, diffx2,\n            xOffset = $$.isCategorized() ? 0.5 : 0,\n            xValue, yValue,\n            regions = [];\n\n        function isWithinRegions(x, regions) {\n            var i;\n            for (i = 0; i < regions.length; i++) {\n                if (regions[i].start < x && x <= regions[i].end) { return true; }\n            }\n            return false;\n        }\n\n        // Check start/end of regions\n        if (isDefined(_regions)) {\n            for (i = 0; i < _regions.length; i++) {\n                regions[i] = {};\n                if (isUndefined(_regions[i].start)) {\n                    regions[i].start = d[0].x;\n                } else {\n                    regions[i].start = $$.isTimeSeries() ? $$.parseDate(_regions[i].start) : _regions[i].start;\n                }\n                if (isUndefined(_regions[i].end)) {\n                    regions[i].end = d[d.length - 1].x;\n                } else {\n                    regions[i].end = $$.isTimeSeries() ? $$.parseDate(_regions[i].end) : _regions[i].end;\n                }\n            }\n        }\n\n        // Set scales\n        xValue = config.axis_rotated ? function (d) { return y(d.value); } : function (d) { return x(d.x); };\n        yValue = config.axis_rotated ? function (d) { return x(d.x); } : function (d) { return y(d.value); };\n\n        // Define svg generator function for region\n        function generateM(points) {\n            return 'M' + points[0][0] + ' ' + points[0][1] + ' ' + points[1][0] + ' ' + points[1][1];\n        }\n        if ($$.isTimeSeries()) {\n            sWithRegion = function (d0, d1, j, diff) {\n                var x0 = d0.x.getTime(), x_diff = d1.x - d0.x,\n                    xv0 = new Date(x0 + x_diff * j),\n                    xv1 = new Date(x0 + x_diff * (j + diff)),\n                    points;\n                if (config.axis_rotated) {\n                    points = [[y(yp(j)), x(xv0)], [y(yp(j + diff)), x(xv1)]];\n                } else {\n                    points = [[x(xv0), y(yp(j))], [x(xv1), y(yp(j + diff))]];\n                }\n                return generateM(points);\n            };\n        } else {\n            sWithRegion = function (d0, d1, j, diff) {\n                var points;\n                if (config.axis_rotated) {\n                    points = [[y(yp(j), true), x(xp(j))], [y(yp(j + diff), true), x(xp(j + diff))]];\n                } else {\n                    points = [[x(xp(j), true), y(yp(j))], [x(xp(j + diff), true), y(yp(j + diff))]];\n                }\n                return generateM(points);\n            };\n        }\n\n        // Generate\n        for (i = 0; i < d.length; i++) {\n\n            // Draw as normal\n            if (isUndefined(regions) || ! isWithinRegions(d[i].x, regions)) {\n                s += \" \" + xValue(d[i]) + \" \" + yValue(d[i]);\n            }\n            // Draw with region // TODO: Fix for horizotal charts\n            else {\n                xp = $$.getScale(d[i - 1].x + xOffset, d[i].x + xOffset, $$.isTimeSeries());\n                yp = $$.getScale(d[i - 1].value, d[i].value);\n\n                dx = x(d[i].x) - x(d[i - 1].x);\n                dy = y(d[i].value) - y(d[i - 1].value);\n                dd = Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2));\n                diff = 2 / dd;\n                diffx2 = diff * 2;\n\n                for (j = diff; j <= 1; j += diffx2) {\n                    s += sWithRegion(d[i - 1], d[i], j, diff);\n                }\n            }\n            prev = d[i].x;\n        }\n\n        return s;\n    };\n\n\n    c3_chart_internal_fn.updateArea = function (durationForExit) {\n        var $$ = this, d3 = $$.d3;\n        $$.mainArea = $$.main.selectAll('.' + CLASS.areas).selectAll('.' + CLASS.area)\n            .data($$.lineData.bind($$));\n        $$.mainArea.enter().append('path')\n            .attr(\"class\", $$.classArea.bind($$))\n            .style(\"fill\", $$.color)\n            .style(\"opacity\", function () { $$.orgAreaOpacity = +d3.select(this).style('opacity'); return 0; });\n        $$.mainArea\n            .style(\"opacity\", $$.orgAreaOpacity);\n        $$.mainArea.exit().transition().duration(durationForExit)\n            .style('opacity', 0)\n            .remove();\n    };\n    c3_chart_internal_fn.redrawArea = function (drawArea, withTransition) {\n        return [\n            (withTransition ? this.mainArea.transition(Math.random().toString()) : this.mainArea)\n                .attr(\"d\", drawArea)\n                .style(\"fill\", this.color)\n                .style(\"opacity\", this.orgAreaOpacity)\n        ];\n    };\n    c3_chart_internal_fn.generateDrawArea = function (areaIndices, isSub) {\n        var $$ = this, config = $$.config, area = $$.d3.svg.area(),\n            getPoints = $$.generateGetAreaPoints(areaIndices, isSub),\n            yScaleGetter = isSub ? $$.getSubYScale : $$.getYScale,\n            xValue = function (d) { return (isSub ? $$.subxx : $$.xx).call($$, d); },\n            value0 = function (d, i) {\n                return config.data_groups.length > 0 ? getPoints(d, i)[0][1] : yScaleGetter.call($$, d.id)($$.getAreaBaseValue(d.id));\n            },\n            value1 = function (d, i) {\n                return config.data_groups.length > 0 ? getPoints(d, i)[1][1] : yScaleGetter.call($$, d.id)(d.value);\n            };\n\n        area = config.axis_rotated ? area.x0(value0).x1(value1).y(xValue) : area.x(xValue).y0(config.area_above ? 0 : value0).y1(value1);\n        if (!config.line_connectNull) {\n            area = area.defined(function (d) { return d.value !== null; });\n        }\n\n        return function (d) {\n            var values = config.line_connectNull ? $$.filterRemoveNull(d.values) : d.values,\n                x0 = 0, y0 = 0, path;\n            if ($$.isAreaType(d)) {\n                if ($$.isStepType(d)) { values = $$.convertValuesToStep(values); }\n                path = area.interpolate($$.getInterpolate(d))(values);\n            } else {\n                if (values[0]) {\n                    x0 = $$.x(values[0].x);\n                    y0 = $$.getYScale(d.id)(values[0].value);\n                }\n                path = config.axis_rotated ? \"M \" + y0 + \" \" + x0 : \"M \" + x0 + \" \" + y0;\n            }\n            return path ? path : \"M 0 0\";\n        };\n    };\n    c3_chart_internal_fn.getAreaBaseValue = function () {\n        return 0;\n    };\n    c3_chart_internal_fn.generateGetAreaPoints = function (areaIndices, isSub) { // partial duplication of generateGetBarPoints\n        var $$ = this, config = $$.config,\n            areaTargetsNum = areaIndices.__max__ + 1,\n            x = $$.getShapeX(0, areaTargetsNum, areaIndices, !!isSub),\n            y = $$.getShapeY(!!isSub),\n            areaOffset = $$.getShapeOffset($$.isAreaType, areaIndices, !!isSub),\n            yScale = isSub ? $$.getSubYScale : $$.getYScale;\n        return function (d, i) {\n            var y0 = yScale.call($$, d.id)(0),\n                offset = areaOffset(d, i) || y0, // offset is for stacked area chart\n                posX = x(d), posY = y(d);\n            // fix posY not to overflow opposite quadrant\n            if (config.axis_rotated) {\n                if ((0 < d.value && posY < y0) || (d.value < 0 && y0 < posY)) { posY = y0; }\n            }\n            // 1 point that marks the area position\n            return [\n                [posX, offset],\n                [posX, posY - (y0 - offset)],\n                [posX, posY - (y0 - offset)], // needed for compatibility\n                [posX, offset] // needed for compatibility\n            ];\n        };\n    };\n\n\n    c3_chart_internal_fn.updateCircle = function () {\n        var $$ = this;\n        $$.mainCircle = $$.main.selectAll('.' + CLASS.circles).selectAll('.' + CLASS.circle)\n            .data($$.lineOrScatterData.bind($$));\n        $$.mainCircle.enter().append(\"circle\")\n            .attr(\"class\", $$.classCircle.bind($$))\n            .attr(\"r\", $$.pointR.bind($$))\n            .style(\"fill\", $$.color);\n        $$.mainCircle\n            .style(\"opacity\", $$.initialOpacityForCircle.bind($$));\n        $$.mainCircle.exit().remove();\n    };\n    c3_chart_internal_fn.redrawCircle = function (cx, cy, withTransition) {\n        var selectedCircles = this.main.selectAll('.' + CLASS.selectedCircle);\n        return [\n            (withTransition ? this.mainCircle.transition(Math.random().toString()) : this.mainCircle)\n                .style('opacity', this.opacityForCircle.bind(this))\n                .style(\"fill\", this.color)\n                .attr(\"cx\", cx)\n                .attr(\"cy\", cy),\n            (withTransition ? selectedCircles.transition(Math.random().toString()) : selectedCircles)\n                .attr(\"cx\", cx)\n                .attr(\"cy\", cy)\n        ];\n    };\n    c3_chart_internal_fn.circleX = function (d) {\n        return d.x || d.x === 0 ? this.x(d.x) : null;\n    };\n    c3_chart_internal_fn.updateCircleY = function () {\n        var $$ = this, lineIndices, getPoints;\n        if ($$.config.data_groups.length > 0) {\n            lineIndices = $$.getShapeIndices($$.isLineType),\n            getPoints = $$.generateGetLinePoints(lineIndices);\n            $$.circleY = function (d, i) {\n                return getPoints(d, i)[0][1];\n            };\n        } else {\n            $$.circleY = function (d) {\n                return $$.getYScale(d.id)(d.value);\n            };\n        }\n    };\n    c3_chart_internal_fn.getCircles = function (i, id) {\n        var $$ = this;\n        return (id ? $$.main.selectAll('.' + CLASS.circles + $$.getTargetSelectorSuffix(id)) : $$.main).selectAll('.' + CLASS.circle + (isValue(i) ? '-' + i : ''));\n    };\n    c3_chart_internal_fn.expandCircles = function (i, id, reset) {\n        var $$ = this,\n            r = $$.pointExpandedR.bind($$);\n        if (reset) { $$.unexpandCircles(); }\n        $$.getCircles(i, id)\n            .classed(CLASS.EXPANDED, true)\n            .attr('r', r);\n    };\n    c3_chart_internal_fn.unexpandCircles = function (i) {\n        var $$ = this,\n            r = $$.pointR.bind($$);\n        $$.getCircles(i)\n            .filter(function () { return $$.d3.select(this).classed(CLASS.EXPANDED); })\n            .classed(CLASS.EXPANDED, false)\n            .attr('r', r);\n    };\n    c3_chart_internal_fn.pointR = function (d) {\n        var $$ = this, config = $$.config;\n        return $$.isStepType(d) ? 0 : (isFunction(config.point_r) ? config.point_r(d) : config.point_r);\n    };\n    c3_chart_internal_fn.pointExpandedR = function (d) {\n        var $$ = this, config = $$.config;\n        return config.point_focus_expand_enabled ? (config.point_focus_expand_r ? config.point_focus_expand_r : $$.pointR(d) * 1.75) : $$.pointR(d);\n    };\n    c3_chart_internal_fn.pointSelectR = function (d) {\n        var $$ = this, config = $$.config;\n        return isFunction(config.point_select_r) ? config.point_select_r(d) : ((config.point_select_r) ? config.point_select_r : $$.pointR(d) * 4);\n    };\n    c3_chart_internal_fn.isWithinCircle = function (that, r) {\n        var d3 = this.d3,\n            mouse = d3.mouse(that), d3_this = d3.select(that),\n            cx = +d3_this.attr(\"cx\"), cy = +d3_this.attr(\"cy\");\n        return Math.sqrt(Math.pow(cx - mouse[0], 2) + Math.pow(cy - mouse[1], 2)) < r;\n    };\n    c3_chart_internal_fn.isWithinStep = function (that, y) {\n        return Math.abs(y - this.d3.mouse(that)[1]) < 30;\n    };\n\n    c3_chart_internal_fn.initBar = function () {\n        var $$ = this;\n        $$.main.select('.' + CLASS.chart).append(\"g\")\n            .attr(\"class\", CLASS.chartBars);\n    };\n    c3_chart_internal_fn.updateTargetsForBar = function (targets) {\n        var $$ = this, config = $$.config,\n            mainBarUpdate, mainBarEnter,\n            classChartBar = $$.classChartBar.bind($$),\n            classBars = $$.classBars.bind($$),\n            classFocus = $$.classFocus.bind($$);\n        mainBarUpdate = $$.main.select('.' + CLASS.chartBars).selectAll('.' + CLASS.chartBar)\n            .data(targets)\n            .attr('class', function (d) { return classChartBar(d) + classFocus(d); });\n        mainBarEnter = mainBarUpdate.enter().append('g')\n            .attr('class', classChartBar)\n            .style('opacity', 0)\n            .style(\"pointer-events\", \"none\");\n        // Bars for each data\n        mainBarEnter.append('g')\n            .attr(\"class\", classBars)\n            .style(\"cursor\", function (d) { return config.data_selection_isselectable(d) ? \"pointer\" : null; });\n\n    };\n    c3_chart_internal_fn.updateBar = function (durationForExit) {\n        var $$ = this,\n            barData = $$.barData.bind($$),\n            classBar = $$.classBar.bind($$),\n            initialOpacity = $$.initialOpacity.bind($$),\n            color = function (d) { return $$.color(d.id); };\n        $$.mainBar = $$.main.selectAll('.' + CLASS.bars).selectAll('.' + CLASS.bar)\n            .data(barData);\n        $$.mainBar.enter().append('path')\n            .attr(\"class\", classBar)\n            .style(\"stroke\", color)\n            .style(\"fill\", color);\n        $$.mainBar\n            .style(\"opacity\", initialOpacity);\n        $$.mainBar.exit().transition().duration(durationForExit)\n            .style('opacity', 0)\n            .remove();\n    };\n    c3_chart_internal_fn.redrawBar = function (drawBar, withTransition) {\n        return [\n            (withTransition ? this.mainBar.transition(Math.random().toString()) : this.mainBar)\n                .attr('d', drawBar)\n                .style(\"fill\", this.color)\n                .style(\"opacity\", 1)\n        ];\n    };\n    c3_chart_internal_fn.getBarW = function (axis, barTargetsNum) {\n        var $$ = this, config = $$.config,\n            w = typeof config.bar_width === 'number' ? config.bar_width : barTargetsNum ? (axis.tickInterval() * config.bar_width_ratio) / barTargetsNum : 0;\n        return config.bar_width_max && w > config.bar_width_max ? config.bar_width_max : w;\n    };\n    c3_chart_internal_fn.getBars = function (i, id) {\n        var $$ = this;\n        return (id ? $$.main.selectAll('.' + CLASS.bars + $$.getTargetSelectorSuffix(id)) : $$.main).selectAll('.' + CLASS.bar + (isValue(i) ? '-' + i : ''));\n    };\n    c3_chart_internal_fn.expandBars = function (i, id, reset) {\n        var $$ = this;\n        if (reset) { $$.unexpandBars(); }\n        $$.getBars(i, id).classed(CLASS.EXPANDED, true);\n    };\n    c3_chart_internal_fn.unexpandBars = function (i) {\n        var $$ = this;\n        $$.getBars(i).classed(CLASS.EXPANDED, false);\n    };\n    c3_chart_internal_fn.generateDrawBar = function (barIndices, isSub) {\n        var $$ = this, config = $$.config,\n            getPoints = $$.generateGetBarPoints(barIndices, isSub);\n        return function (d, i) {\n            // 4 points that make a bar\n            var points = getPoints(d, i);\n\n            // switch points if axis is rotated, not applicable for sub chart\n            var indexX = config.axis_rotated ? 1 : 0;\n            var indexY = config.axis_rotated ? 0 : 1;\n\n            var path = 'M ' + points[0][indexX] + ',' + points[0][indexY] + ' ' +\n                    'L' + points[1][indexX] + ',' + points[1][indexY] + ' ' +\n                    'L' + points[2][indexX] + ',' + points[2][indexY] + ' ' +\n                    'L' + points[3][indexX] + ',' + points[3][indexY] + ' ' +\n                    'z';\n\n            return path;\n        };\n    };\n    c3_chart_internal_fn.generateGetBarPoints = function (barIndices, isSub) {\n        var $$ = this,\n            axis = isSub ? $$.subXAxis : $$.xAxis,\n            barTargetsNum = barIndices.__max__ + 1,\n            barW = $$.getBarW(axis, barTargetsNum),\n            barX = $$.getShapeX(barW, barTargetsNum, barIndices, !!isSub),\n            barY = $$.getShapeY(!!isSub),\n            barOffset = $$.getShapeOffset($$.isBarType, barIndices, !!isSub),\n            yScale = isSub ? $$.getSubYScale : $$.getYScale;\n        return function (d, i) {\n            var y0 = yScale.call($$, d.id)(0),\n                offset = barOffset(d, i) || y0, // offset is for stacked bar chart\n                posX = barX(d), posY = barY(d);\n            // fix posY not to overflow opposite quadrant\n            if ($$.config.axis_rotated) {\n                if ((0 < d.value && posY < y0) || (d.value < 0 && y0 < posY)) { posY = y0; }\n            }\n            // 4 points that make a bar\n            return [\n                [posX, offset],\n                [posX, posY - (y0 - offset)],\n                [posX + barW, posY - (y0 - offset)],\n                [posX + barW, offset]\n            ];\n        };\n    };\n    c3_chart_internal_fn.isWithinBar = function (that) {\n        var mouse = this.d3.mouse(that), box = that.getBoundingClientRect(),\n            seg0 = that.pathSegList.getItem(0), seg1 = that.pathSegList.getItem(1),\n            x = Math.min(seg0.x, seg1.x), y = Math.min(seg0.y, seg1.y),\n            w = box.width, h = box.height, offset = 2,\n            sx = x - offset, ex = x + w + offset, sy = y + h + offset, ey = y - offset;\n        return sx < mouse[0] && mouse[0] < ex && ey < mouse[1] && mouse[1] < sy;\n    };\n\n    c3_chart_internal_fn.initText = function () {\n        var $$ = this;\n        $$.main.select('.' + CLASS.chart).append(\"g\")\n            .attr(\"class\", CLASS.chartTexts);\n        $$.mainText = $$.d3.selectAll([]);\n    };\n    c3_chart_internal_fn.updateTargetsForText = function (targets) {\n        var $$ = this, mainTextUpdate, mainTextEnter,\n            classChartText = $$.classChartText.bind($$),\n            classTexts = $$.classTexts.bind($$),\n            classFocus = $$.classFocus.bind($$);\n        mainTextUpdate = $$.main.select('.' + CLASS.chartTexts).selectAll('.' + CLASS.chartText)\n            .data(targets)\n            .attr('class', function (d) { return classChartText(d) + classFocus(d); });\n        mainTextEnter = mainTextUpdate.enter().append('g')\n            .attr('class', classChartText)\n            .style('opacity', 0)\n            .style(\"pointer-events\", \"none\");\n        mainTextEnter.append('g')\n            .attr('class', classTexts);\n    };\n    c3_chart_internal_fn.updateText = function (durationForExit) {\n        var $$ = this, config = $$.config,\n            barOrLineData = $$.barOrLineData.bind($$),\n            classText = $$.classText.bind($$);\n        $$.mainText = $$.main.selectAll('.' + CLASS.texts).selectAll('.' + CLASS.text)\n            .data(barOrLineData);\n        $$.mainText.enter().append('text')\n            .attr(\"class\", classText)\n            .attr('text-anchor', function (d) { return config.axis_rotated ? (d.value < 0 ? 'end' : 'start') : 'middle'; })\n            .style(\"stroke\", 'none')\n            .style(\"fill\", function (d) { return $$.color(d); })\n            .style(\"fill-opacity\", 0);\n        $$.mainText\n            .text(function (d, i, j) { return $$.dataLabelFormat(d.id)(d.value, d.id, i, j); });\n        $$.mainText.exit()\n            .transition().duration(durationForExit)\n            .style('fill-opacity', 0)\n            .remove();\n    };\n    c3_chart_internal_fn.redrawText = function (xForText, yForText, forFlow, withTransition) {\n        return [\n            (withTransition ? this.mainText.transition() : this.mainText)\n                .attr('x', xForText)\n                .attr('y', yForText)\n                .style(\"fill\", this.color)\n                .style(\"fill-opacity\", forFlow ? 0 : this.opacityForText.bind(this))\n        ];\n    };\n    c3_chart_internal_fn.getTextRect = function (text, cls, element) {\n        var dummy = this.d3.select('body').append('div').classed('c3', true),\n            svg = dummy.append(\"svg\").style('visibility', 'hidden').style('position', 'fixed').style('top', 0).style('left', 0),\n            font = this.d3.select(element).style('font'),\n            rect;\n        svg.selectAll('.dummy')\n            .data([text])\n          .enter().append('text')\n            .classed(cls ? cls : \"\", true)\n            .style('font', font)\n            .text(text)\n          .each(function () { rect = this.getBoundingClientRect(); });\n        dummy.remove();\n        return rect;\n    };\n    c3_chart_internal_fn.generateXYForText = function (areaIndices, barIndices, lineIndices, forX) {\n        var $$ = this,\n            getAreaPoints = $$.generateGetAreaPoints(areaIndices, false),\n            getBarPoints = $$.generateGetBarPoints(barIndices, false),\n            getLinePoints = $$.generateGetLinePoints(lineIndices, false),\n            getter = forX ? $$.getXForText : $$.getYForText;\n        return function (d, i) {\n            var getPoints = $$.isAreaType(d) ? getAreaPoints : $$.isBarType(d) ? getBarPoints : getLinePoints;\n            return getter.call($$, getPoints(d, i), d, this);\n        };\n    };\n    c3_chart_internal_fn.getXForText = function (points, d, textElement) {\n        var $$ = this,\n            box = textElement.getBoundingClientRect(), xPos, padding;\n        if ($$.config.axis_rotated) {\n            padding = $$.isBarType(d) ? 4 : 6;\n            xPos = points[2][1] + padding * (d.value < 0 ? -1 : 1);\n        } else {\n            xPos = $$.hasType('bar') ? (points[2][0] + points[0][0]) / 2 : points[0][0];\n        }\n        // show labels regardless of the domain if value is null\n        if (d.value === null) {\n            if (xPos > $$.width) {\n                xPos = $$.width - box.width;\n            } else if (xPos < 0) {\n                xPos = 4;\n            }\n        }\n        return xPos;\n    };\n    c3_chart_internal_fn.getYForText = function (points, d, textElement) {\n        var $$ = this,\n            box = textElement.getBoundingClientRect(),\n            yPos;\n        if ($$.config.axis_rotated) {\n            yPos = (points[0][0] + points[2][0] + box.height * 0.6) / 2;\n        } else {\n            yPos = points[2][1];\n            if (d.value < 0  || (d.value === 0 && !$$.hasPositiveValue)) {\n                yPos += box.height;\n                if ($$.isBarType(d) && $$.isSafari()) {\n                    yPos -= 3;\n                }\n                else if (!$$.isBarType(d) && $$.isChrome()) {\n                    yPos += 3;\n                }\n            } else {\n                yPos += $$.isBarType(d) ? -3 : -6;\n            }\n        }\n        // show labels regardless of the domain if value is null\n        if (d.value === null && !$$.config.axis_rotated) {\n            if (yPos < box.height) {\n                yPos = box.height;\n            } else if (yPos > this.height) {\n                yPos = this.height - 4;\n            }\n        }\n        return yPos;\n    };\n\n    c3_chart_internal_fn.setTargetType = function (targetIds, type) {\n        var $$ = this, config = $$.config;\n        $$.mapToTargetIds(targetIds).forEach(function (id) {\n            $$.withoutFadeIn[id] = (type === config.data_types[id]);\n            config.data_types[id] = type;\n        });\n        if (!targetIds) {\n            config.data_type = type;\n        }\n    };\n    c3_chart_internal_fn.hasType = function (type, targets) {\n        var $$ = this, types = $$.config.data_types, has = false;\n        targets = targets || $$.data.targets;\n        if (targets && targets.length) {\n            targets.forEach(function (target) {\n                var t = types[target.id];\n                if ((t && t.indexOf(type) >= 0) || (!t && type === 'line')) {\n                    has = true;\n                }\n            });\n        } else if (Object.keys(types).length) {\n            Object.keys(types).forEach(function (id) {\n                if (types[id] === type) { has = true; }\n            });\n        } else {\n            has = $$.config.data_type === type;\n        }\n        return has;\n    };\n    c3_chart_internal_fn.hasArcType = function (targets) {\n        return this.hasType('pie', targets) || this.hasType('donut', targets) || this.hasType('gauge', targets);\n    };\n    c3_chart_internal_fn.isLineType = function (d) {\n        var config = this.config, id = isString(d) ? d : d.id;\n        return !config.data_types[id] || ['line', 'spline', 'area', 'area-spline', 'step', 'area-step'].indexOf(config.data_types[id]) >= 0;\n    };\n    c3_chart_internal_fn.isStepType = function (d) {\n        var id = isString(d) ? d : d.id;\n        return ['step', 'area-step'].indexOf(this.config.data_types[id]) >= 0;\n    };\n    c3_chart_internal_fn.isSplineType = function (d) {\n        var id = isString(d) ? d : d.id;\n        return ['spline', 'area-spline'].indexOf(this.config.data_types[id]) >= 0;\n    };\n    c3_chart_internal_fn.isAreaType = function (d) {\n        var id = isString(d) ? d : d.id;\n        return ['area', 'area-spline', 'area-step'].indexOf(this.config.data_types[id]) >= 0;\n    };\n    c3_chart_internal_fn.isBarType = function (d) {\n        var id = isString(d) ? d : d.id;\n        return this.config.data_types[id] === 'bar';\n    };\n    c3_chart_internal_fn.isScatterType = function (d) {\n        var id = isString(d) ? d : d.id;\n        return this.config.data_types[id] === 'scatter';\n    };\n    c3_chart_internal_fn.isPieType = function (d) {\n        var id = isString(d) ? d : d.id;\n        return this.config.data_types[id] === 'pie';\n    };\n    c3_chart_internal_fn.isGaugeType = function (d) {\n        var id = isString(d) ? d : d.id;\n        return this.config.data_types[id] === 'gauge';\n    };\n    c3_chart_internal_fn.isDonutType = function (d) {\n        var id = isString(d) ? d : d.id;\n        return this.config.data_types[id] === 'donut';\n    };\n    c3_chart_internal_fn.isArcType = function (d) {\n        return this.isPieType(d) || this.isDonutType(d) || this.isGaugeType(d);\n    };\n    c3_chart_internal_fn.lineData = function (d) {\n        return this.isLineType(d) ? [d] : [];\n    };\n    c3_chart_internal_fn.arcData = function (d) {\n        return this.isArcType(d.data) ? [d] : [];\n    };\n    /* not used\n     function scatterData(d) {\n     return isScatterType(d) ? d.values : [];\n     }\n     */\n    c3_chart_internal_fn.barData = function (d) {\n        return this.isBarType(d) ? d.values : [];\n    };\n    c3_chart_internal_fn.lineOrScatterData = function (d) {\n        return this.isLineType(d) || this.isScatterType(d) ? d.values : [];\n    };\n    c3_chart_internal_fn.barOrLineData = function (d) {\n        return this.isBarType(d) || this.isLineType(d) ? d.values : [];\n    };\n    c3_chart_internal_fn.isInterpolationType = function (type) {\n        return ['linear', 'linear-closed', 'basis', 'basis-open', 'basis-closed', 'bundle', 'cardinal', 'cardinal-open', 'cardinal-closed', 'monotone'].indexOf(type) >= 0;\n    };\n\n    c3_chart_internal_fn.initGrid = function () {\n        var $$ = this, config = $$.config, d3 = $$.d3;\n        $$.grid = $$.main.append('g')\n            .attr(\"clip-path\", $$.clipPathForGrid)\n            .attr('class', CLASS.grid);\n        if (config.grid_x_show) {\n            $$.grid.append(\"g\").attr(\"class\", CLASS.xgrids);\n        }\n        if (config.grid_y_show) {\n            $$.grid.append('g').attr('class', CLASS.ygrids);\n        }\n        if (config.grid_focus_show) {\n            $$.grid.append('g')\n                .attr(\"class\", CLASS.xgridFocus)\n                .append('line')\n                .attr('class', CLASS.xgridFocus);\n        }\n        $$.xgrid = d3.selectAll([]);\n        if (!config.grid_lines_front) { $$.initGridLines(); }\n    };\n    c3_chart_internal_fn.initGridLines = function () {\n        var $$ = this, d3 = $$.d3;\n        $$.gridLines = $$.main.append('g')\n            .attr(\"clip-path\", $$.clipPathForGrid)\n            .attr('class', CLASS.grid + ' ' + CLASS.gridLines);\n        $$.gridLines.append('g').attr(\"class\", CLASS.xgridLines);\n        $$.gridLines.append('g').attr('class', CLASS.ygridLines);\n        $$.xgridLines = d3.selectAll([]);\n    };\n    c3_chart_internal_fn.updateXGrid = function (withoutUpdate) {\n        var $$ = this, config = $$.config, d3 = $$.d3,\n            xgridData = $$.generateGridData(config.grid_x_type, $$.x),\n            tickOffset = $$.isCategorized() ? $$.xAxis.tickOffset() : 0;\n\n        $$.xgridAttr = config.axis_rotated ? {\n            'x1': 0,\n            'x2': $$.width,\n            'y1': function (d) { return $$.x(d) - tickOffset; },\n            'y2': function (d) { return $$.x(d) - tickOffset; }\n        } : {\n            'x1': function (d) { return $$.x(d) + tickOffset; },\n            'x2': function (d) { return $$.x(d) + tickOffset; },\n            'y1': 0,\n            'y2': $$.height\n        };\n\n        $$.xgrid = $$.main.select('.' + CLASS.xgrids).selectAll('.' + CLASS.xgrid)\n            .data(xgridData);\n        $$.xgrid.enter().append('line').attr(\"class\", CLASS.xgrid);\n        if (!withoutUpdate) {\n            $$.xgrid.attr($$.xgridAttr)\n                .style(\"opacity\", function () { return +d3.select(this).attr(config.axis_rotated ? 'y1' : 'x1') === (config.axis_rotated ? $$.height : 0) ? 0 : 1; });\n        }\n        $$.xgrid.exit().remove();\n    };\n\n    c3_chart_internal_fn.updateYGrid = function () {\n        var $$ = this, config = $$.config,\n            gridValues = $$.yAxis.tickValues() || $$.y.ticks(config.grid_y_ticks);\n        $$.ygrid = $$.main.select('.' + CLASS.ygrids).selectAll('.' + CLASS.ygrid)\n            .data(gridValues);\n        $$.ygrid.enter().append('line')\n            .attr('class', CLASS.ygrid);\n        $$.ygrid.attr(\"x1\", config.axis_rotated ? $$.y : 0)\n            .attr(\"x2\", config.axis_rotated ? $$.y : $$.width)\n            .attr(\"y1\", config.axis_rotated ? 0 : $$.y)\n            .attr(\"y2\", config.axis_rotated ? $$.height : $$.y);\n        $$.ygrid.exit().remove();\n        $$.smoothLines($$.ygrid, 'grid');\n    };\n\n    c3_chart_internal_fn.gridTextAnchor = function (d) {\n        return d.position ? d.position : \"end\";\n    };\n    c3_chart_internal_fn.gridTextDx = function (d) {\n        return d.position === 'start' ? 4 : d.position === 'middle' ? 0 : -4;\n    };\n    c3_chart_internal_fn.xGridTextX = function (d) {\n        return d.position === 'start' ? -this.height : d.position === 'middle' ? -this.height / 2 : 0;\n    };\n    c3_chart_internal_fn.yGridTextX = function (d) {\n        return d.position === 'start' ? 0 : d.position === 'middle' ? this.width / 2 : this.width;\n    };\n    c3_chart_internal_fn.updateGrid = function (duration) {\n        var $$ = this, main = $$.main, config = $$.config,\n            xgridLine, ygridLine, yv;\n\n        // hide if arc type\n        $$.grid.style('visibility', $$.hasArcType() ? 'hidden' : 'visible');\n\n        main.select('line.' + CLASS.xgridFocus).style(\"visibility\", \"hidden\");\n        if (config.grid_x_show) {\n            $$.updateXGrid();\n        }\n        $$.xgridLines = main.select('.' + CLASS.xgridLines).selectAll('.' + CLASS.xgridLine)\n            .data(config.grid_x_lines);\n        // enter\n        xgridLine = $$.xgridLines.enter().append('g')\n            .attr(\"class\", function (d) { return CLASS.xgridLine + (d['class'] ? ' ' + d['class'] : ''); });\n        xgridLine.append('line')\n            .style(\"opacity\", 0);\n        xgridLine.append('text')\n            .attr(\"text-anchor\", $$.gridTextAnchor)\n            .attr(\"transform\", config.axis_rotated ? \"\" : \"rotate(-90)\")\n            .attr('dx', $$.gridTextDx)\n            .attr('dy', -5)\n            .style(\"opacity\", 0);\n        // udpate\n        // done in d3.transition() of the end of this function\n        // exit\n        $$.xgridLines.exit().transition().duration(duration)\n            .style(\"opacity\", 0)\n            .remove();\n\n        // Y-Grid\n        if (config.grid_y_show) {\n            $$.updateYGrid();\n        }\n        $$.ygridLines = main.select('.' + CLASS.ygridLines).selectAll('.' + CLASS.ygridLine)\n            .data(config.grid_y_lines);\n        // enter\n        ygridLine = $$.ygridLines.enter().append('g')\n            .attr(\"class\", function (d) { return CLASS.ygridLine + (d['class'] ? ' ' + d['class'] : ''); });\n        ygridLine.append('line')\n            .style(\"opacity\", 0);\n        ygridLine.append('text')\n            .attr(\"text-anchor\", $$.gridTextAnchor)\n            .attr(\"transform\", config.axis_rotated ? \"rotate(-90)\" : \"\")\n            .attr('dx', $$.gridTextDx)\n            .attr('dy', -5)\n            .style(\"opacity\", 0);\n        // update\n        yv = $$.yv.bind($$);\n        $$.ygridLines.select('line')\n          .transition().duration(duration)\n            .attr(\"x1\", config.axis_rotated ? yv : 0)\n            .attr(\"x2\", config.axis_rotated ? yv : $$.width)\n            .attr(\"y1\", config.axis_rotated ? 0 : yv)\n            .attr(\"y2\", config.axis_rotated ? $$.height : yv)\n            .style(\"opacity\", 1);\n        $$.ygridLines.select('text')\n          .transition().duration(duration)\n            .attr(\"x\", config.axis_rotated ? $$.xGridTextX.bind($$) : $$.yGridTextX.bind($$))\n            .attr(\"y\", yv)\n            .text(function (d) { return d.text; })\n            .style(\"opacity\", 1);\n        // exit\n        $$.ygridLines.exit().transition().duration(duration)\n            .style(\"opacity\", 0)\n            .remove();\n    };\n    c3_chart_internal_fn.redrawGrid = function (withTransition) {\n        var $$ = this, config = $$.config, xv = $$.xv.bind($$),\n            lines = $$.xgridLines.select('line'),\n            texts = $$.xgridLines.select('text');\n        return [\n            (withTransition ? lines.transition() : lines)\n                .attr(\"x1\", config.axis_rotated ? 0 : xv)\n                .attr(\"x2\", config.axis_rotated ? $$.width : xv)\n                .attr(\"y1\", config.axis_rotated ? xv : 0)\n                .attr(\"y2\", config.axis_rotated ? xv : $$.height)\n                .style(\"opacity\", 1),\n            (withTransition ? texts.transition() : texts)\n                .attr(\"x\", config.axis_rotated ? $$.yGridTextX.bind($$) : $$.xGridTextX.bind($$))\n                .attr(\"y\", xv)\n                .text(function (d) { return d.text; })\n                .style(\"opacity\", 1)\n        ];\n    };\n    c3_chart_internal_fn.showXGridFocus = function (selectedData) {\n        var $$ = this, config = $$.config,\n            dataToShow = selectedData.filter(function (d) { return d && isValue(d.value); }),\n            focusEl = $$.main.selectAll('line.' + CLASS.xgridFocus),\n            xx = $$.xx.bind($$);\n        if (! config.tooltip_show) { return; }\n        // Hide when scatter plot exists\n        if ($$.hasType('scatter') || $$.hasArcType()) { return; }\n        focusEl\n            .style(\"visibility\", \"visible\")\n            .data([dataToShow[0]])\n            .attr(config.axis_rotated ? 'y1' : 'x1', xx)\n            .attr(config.axis_rotated ? 'y2' : 'x2', xx);\n        $$.smoothLines(focusEl, 'grid');\n    };\n    c3_chart_internal_fn.hideXGridFocus = function () {\n        this.main.select('line.' + CLASS.xgridFocus).style(\"visibility\", \"hidden\");\n    };\n    c3_chart_internal_fn.updateXgridFocus = function () {\n        var $$ = this, config = $$.config;\n        $$.main.select('line.' + CLASS.xgridFocus)\n            .attr(\"x1\", config.axis_rotated ? 0 : -10)\n            .attr(\"x2\", config.axis_rotated ? $$.width : -10)\n            .attr(\"y1\", config.axis_rotated ? -10 : 0)\n            .attr(\"y2\", config.axis_rotated ? -10 : $$.height);\n    };\n    c3_chart_internal_fn.generateGridData = function (type, scale) {\n        var $$ = this,\n            gridData = [], xDomain, firstYear, lastYear, i,\n            tickNum = $$.main.select(\".\" + CLASS.axisX).selectAll('.tick').size();\n        if (type === 'year') {\n            xDomain = $$.getXDomain();\n            firstYear = xDomain[0].getFullYear();\n            lastYear = xDomain[1].getFullYear();\n            for (i = firstYear; i <= lastYear; i++) {\n                gridData.push(new Date(i + '-01-01 00:00:00'));\n            }\n        } else {\n            gridData = scale.ticks(10);\n            if (gridData.length > tickNum) { // use only int\n                gridData = gridData.filter(function (d) { return (\"\" + d).indexOf('.') < 0; });\n            }\n        }\n        return gridData;\n    };\n    c3_chart_internal_fn.getGridFilterToRemove = function (params) {\n        return params ? function (line) {\n            var found = false;\n            [].concat(params).forEach(function (param) {\n                if ((('value' in param && line.value === param.value) || ('class' in param && line['class'] === param['class']))) {\n                    found = true;\n                }\n            });\n            return found;\n        } : function () { return true; };\n    };\n    c3_chart_internal_fn.removeGridLines = function (params, forX) {\n        var $$ = this, config = $$.config,\n            toRemove = $$.getGridFilterToRemove(params),\n            toShow = function (line) { return !toRemove(line); },\n            classLines = forX ? CLASS.xgridLines : CLASS.ygridLines,\n            classLine = forX ? CLASS.xgridLine : CLASS.ygridLine;\n        $$.main.select('.' + classLines).selectAll('.' + classLine).filter(toRemove)\n            .transition().duration(config.transition_duration)\n            .style('opacity', 0).remove();\n        if (forX) {\n            config.grid_x_lines = config.grid_x_lines.filter(toShow);\n        } else {\n            config.grid_y_lines = config.grid_y_lines.filter(toShow);\n        }\n    };\n\n    c3_chart_internal_fn.initTooltip = function () {\n        var $$ = this, config = $$.config, i;\n        $$.tooltip = $$.selectChart\n            .style(\"position\", \"relative\")\n          .append(\"div\")\n            .attr('class', CLASS.tooltipContainer)\n            .style(\"position\", \"absolute\")\n            .style(\"pointer-events\", \"none\")\n            .style(\"display\", \"none\");\n        // Show tooltip if needed\n        if (config.tooltip_init_show) {\n            if ($$.isTimeSeries() && isString(config.tooltip_init_x)) {\n                config.tooltip_init_x = $$.parseDate(config.tooltip_init_x);\n                for (i = 0; i < $$.data.targets[0].values.length; i++) {\n                    if (($$.data.targets[0].values[i].x - config.tooltip_init_x) === 0) { break; }\n                }\n                config.tooltip_init_x = i;\n            }\n            $$.tooltip.html(config.tooltip_contents.call($$, $$.data.targets.map(function (d) {\n                return $$.addName(d.values[config.tooltip_init_x]);\n            }), $$.axis.getXAxisTickFormat(), $$.getYFormat($$.hasArcType()), $$.color));\n            $$.tooltip.style(\"top\", config.tooltip_init_position.top)\n                .style(\"left\", config.tooltip_init_position.left)\n                .style(\"display\", \"block\");\n        }\n    };\n    c3_chart_internal_fn.getTooltipContent = function (d, defaultTitleFormat, defaultValueFormat, color) {\n        var $$ = this, config = $$.config,\n            titleFormat = config.tooltip_format_title || defaultTitleFormat,\n            nameFormat = config.tooltip_format_name || function (name) { return name; },\n            valueFormat = config.tooltip_format_value || defaultValueFormat,\n            text, i, title, value, name, bgcolor,\n            orderAsc = $$.isOrderAsc();\n\n        if (config.data_groups.length === 0) {\n            d.sort(function(a, b){\n                var v1 = a ? a.value : null, v2 = b ? b.value : null;\n                return orderAsc ? v1 - v2 : v2 - v1;\n            });\n        } else {\n            var ids = $$.orderTargets($$.data.targets).map(function (i) {\n                return i.id;\n            });\n            d.sort(function(a, b) {\n                var v1 = a ? a.value : null, v2 = b ? b.value : null;\n                if (v1 > 0 && v2 > 0) {\n                    v1 = a ? ids.indexOf(a.id) : null;\n                    v2 = b ? ids.indexOf(b.id) : null;\n                }\n                return orderAsc ? v1 - v2 : v2 - v1;\n            });\n        }\n\n        for (i = 0; i < d.length; i++) {\n            if (! (d[i] && (d[i].value || d[i].value === 0))) { continue; }\n\n            if (! text) {\n                title = sanitise(titleFormat ? titleFormat(d[i].x) : d[i].x);\n                text = \"<table class='\" + $$.CLASS.tooltip + \"'>\" + (title || title === 0 ? \"<tr><th colspan='2'>\" + title + \"</th></tr>\" : \"\");\n            }\n\n            value = sanitise(valueFormat(d[i].value, d[i].ratio, d[i].id, d[i].index, d));\n            if (value !== undefined) {\n                // Skip elements when their name is set to null\n                if (d[i].name === null) { continue; }\n                name = sanitise(nameFormat(d[i].name, d[i].ratio, d[i].id, d[i].index));\n                bgcolor = $$.levelColor ? $$.levelColor(d[i].value) : color(d[i].id);\n\n                text += \"<tr class='\" + $$.CLASS.tooltipName + \"-\" + $$.getTargetSelectorSuffix(d[i].id) + \"'>\";\n                text += \"<td class='name'><span style='background-color:\" + bgcolor + \"'></span>\" + name + \"</td>\";\n                text += \"<td class='value'>\" + value + \"</td>\";\n                text += \"</tr>\";\n            }\n        }\n        return text + \"</table>\";\n    };\n    c3_chart_internal_fn.tooltipPosition = function (dataToShow, tWidth, tHeight, element) {\n        var $$ = this, config = $$.config, d3 = $$.d3;\n        var svgLeft, tooltipLeft, tooltipRight, tooltipTop, chartRight;\n        var forArc = $$.hasArcType(),\n            mouse = d3.mouse(element);\n      // Determin tooltip position\n        if (forArc) {\n            tooltipLeft = (($$.width - ($$.isLegendRight ? $$.getLegendWidth() : 0)) / 2) + mouse[0];\n            tooltipTop = ($$.height / 2) + mouse[1] + 20;\n        } else {\n            svgLeft = $$.getSvgLeft(true);\n            if (config.axis_rotated) {\n                tooltipLeft = svgLeft + mouse[0] + 100;\n                tooltipRight = tooltipLeft + tWidth;\n                chartRight = $$.currentWidth - $$.getCurrentPaddingRight();\n                tooltipTop = $$.x(dataToShow[0].x) + 20;\n            } else {\n                tooltipLeft = svgLeft + $$.getCurrentPaddingLeft(true) + $$.x(dataToShow[0].x) + 20;\n                tooltipRight = tooltipLeft + tWidth;\n                chartRight = svgLeft + $$.currentWidth - $$.getCurrentPaddingRight();\n                tooltipTop = mouse[1] + 15;\n            }\n\n            if (tooltipRight > chartRight) {\n                // 20 is needed for Firefox to keep tooltip width\n                tooltipLeft -= tooltipRight - chartRight + 20;\n            }\n            if (tooltipTop + tHeight > $$.currentHeight) {\n                tooltipTop -= tHeight + 30;\n            }\n        }\n        if (tooltipTop < 0) {\n            tooltipTop = 0;\n        }\n        return {top: tooltipTop, left: tooltipLeft};\n    };\n    c3_chart_internal_fn.showTooltip = function (selectedData, element) {\n        var $$ = this, config = $$.config;\n        var tWidth, tHeight, position;\n        var forArc = $$.hasArcType(),\n            dataToShow = selectedData.filter(function (d) { return d && isValue(d.value); }),\n            positionFunction = config.tooltip_position || c3_chart_internal_fn.tooltipPosition;\n        if (dataToShow.length === 0 || !config.tooltip_show) {\n            return;\n        }\n        $$.tooltip.html(config.tooltip_contents.call($$, selectedData, $$.axis.getXAxisTickFormat(), $$.getYFormat(forArc), $$.color)).style(\"display\", \"block\");\n\n        // Get tooltip dimensions\n        tWidth = $$.tooltip.property('offsetWidth');\n        tHeight = $$.tooltip.property('offsetHeight');\n\n        position = positionFunction.call(this, dataToShow, tWidth, tHeight, element);\n        // Set tooltip\n        $$.tooltip\n            .style(\"top\", position.top + \"px\")\n            .style(\"left\", position.left + 'px');\n    };\n    c3_chart_internal_fn.hideTooltip = function () {\n        this.tooltip.style(\"display\", \"none\");\n    };\n\n    c3_chart_internal_fn.initLegend = function () {\n        var $$ = this;\n        $$.legendItemTextBox = {};\n        $$.legendHasRendered = false;\n        $$.legend = $$.svg.append(\"g\").attr(\"transform\", $$.getTranslate('legend'));\n        if (!$$.config.legend_show) {\n            $$.legend.style('visibility', 'hidden');\n            $$.hiddenLegendIds = $$.mapToIds($$.data.targets);\n            return;\n        }\n        // MEMO: call here to update legend box and tranlate for all\n        // MEMO: translate will be upated by this, so transform not needed in updateLegend()\n        $$.updateLegendWithDefaults();\n    };\n    c3_chart_internal_fn.updateLegendWithDefaults = function () {\n        var $$ = this;\n        $$.updateLegend($$.mapToIds($$.data.targets), {withTransform: false, withTransitionForTransform: false, withTransition: false});\n    };\n    c3_chart_internal_fn.updateSizeForLegend = function (legendHeight, legendWidth) {\n        var $$ = this, config = $$.config, insetLegendPosition = {\n            top: $$.isLegendTop ? $$.getCurrentPaddingTop() + config.legend_inset_y + 5.5 : $$.currentHeight - legendHeight - $$.getCurrentPaddingBottom() - config.legend_inset_y,\n            left: $$.isLegendLeft ? $$.getCurrentPaddingLeft() + config.legend_inset_x + 0.5 : $$.currentWidth - legendWidth - $$.getCurrentPaddingRight() - config.legend_inset_x + 0.5\n        };\n\n        $$.margin3 = {\n            top: $$.isLegendRight ? 0 : $$.isLegendInset ? insetLegendPosition.top : $$.currentHeight - legendHeight,\n            right: NaN,\n            bottom: 0,\n            left: $$.isLegendRight ? $$.currentWidth - legendWidth : $$.isLegendInset ? insetLegendPosition.left : 0\n        };\n    };\n    c3_chart_internal_fn.transformLegend = function (withTransition) {\n        var $$ = this;\n        (withTransition ? $$.legend.transition() : $$.legend).attr(\"transform\", $$.getTranslate('legend'));\n    };\n    c3_chart_internal_fn.updateLegendStep = function (step) {\n        this.legendStep = step;\n    };\n    c3_chart_internal_fn.updateLegendItemWidth = function (w) {\n        this.legendItemWidth = w;\n    };\n    c3_chart_internal_fn.updateLegendItemHeight = function (h) {\n        this.legendItemHeight = h;\n    };\n    c3_chart_internal_fn.getLegendWidth = function () {\n        var $$ = this;\n        return $$.config.legend_show ? $$.isLegendRight || $$.isLegendInset ? $$.legendItemWidth * ($$.legendStep + 1) : $$.currentWidth : 0;\n    };\n    c3_chart_internal_fn.getLegendHeight = function () {\n        var $$ = this, h = 0;\n        if ($$.config.legend_show) {\n            if ($$.isLegendRight) {\n                h = $$.currentHeight;\n            } else {\n                h = Math.max(20, $$.legendItemHeight) * ($$.legendStep + 1);\n            }\n        }\n        return h;\n    };\n    c3_chart_internal_fn.opacityForLegend = function (legendItem) {\n        return legendItem.classed(CLASS.legendItemHidden) ? null : 1;\n    };\n    c3_chart_internal_fn.opacityForUnfocusedLegend = function (legendItem) {\n        return legendItem.classed(CLASS.legendItemHidden) ? null : 0.3;\n    };\n    c3_chart_internal_fn.toggleFocusLegend = function (targetIds, focus) {\n        var $$ = this;\n        targetIds = $$.mapToTargetIds(targetIds);\n        $$.legend.selectAll('.' + CLASS.legendItem)\n            .filter(function (id) { return targetIds.indexOf(id) >= 0; })\n            .classed(CLASS.legendItemFocused, focus)\n          .transition().duration(100)\n            .style('opacity', function () {\n                var opacity = focus ? $$.opacityForLegend : $$.opacityForUnfocusedLegend;\n                return opacity.call($$, $$.d3.select(this));\n            });\n    };\n    c3_chart_internal_fn.revertLegend = function () {\n        var $$ = this, d3 = $$.d3;\n        $$.legend.selectAll('.' + CLASS.legendItem)\n            .classed(CLASS.legendItemFocused, false)\n            .transition().duration(100)\n            .style('opacity', function () { return $$.opacityForLegend(d3.select(this)); });\n    };\n    c3_chart_internal_fn.showLegend = function (targetIds) {\n        var $$ = this, config = $$.config;\n        if (!config.legend_show) {\n            config.legend_show = true;\n            $$.legend.style('visibility', 'visible');\n            if (!$$.legendHasRendered) {\n                $$.updateLegendWithDefaults();\n            }\n        }\n        $$.removeHiddenLegendIds(targetIds);\n        $$.legend.selectAll($$.selectorLegends(targetIds))\n            .style('visibility', 'visible')\n            .transition()\n            .style('opacity', function () { return $$.opacityForLegend($$.d3.select(this)); });\n    };\n    c3_chart_internal_fn.hideLegend = function (targetIds) {\n        var $$ = this, config = $$.config;\n        if (config.legend_show && isEmpty(targetIds)) {\n            config.legend_show = false;\n            $$.legend.style('visibility', 'hidden');\n        }\n        $$.addHiddenLegendIds(targetIds);\n        $$.legend.selectAll($$.selectorLegends(targetIds))\n            .style('opacity', 0)\n            .style('visibility', 'hidden');\n    };\n    c3_chart_internal_fn.clearLegendItemTextBoxCache = function () {\n        this.legendItemTextBox = {};\n    };\n    c3_chart_internal_fn.updateLegend = function (targetIds, options, transitions) {\n        var $$ = this, config = $$.config;\n        var xForLegend, xForLegendText, xForLegendRect, yForLegend, yForLegendText, yForLegendRect, x1ForLegendTile, x2ForLegendTile, yForLegendTile;\n        var paddingTop = 4, paddingRight = 10, maxWidth = 0, maxHeight = 0, posMin = 10, tileWidth = config.legend_item_tile_width + 5;\n        var l, totalLength = 0, offsets = {}, widths = {}, heights = {}, margins = [0], steps = {}, step = 0;\n        var withTransition, withTransitionForTransform;\n        var texts, rects, tiles, background;\n\n        // Skip elements when their name is set to null\n        targetIds = targetIds.filter(function(id) {\n            return !isDefined(config.data_names[id]) || config.data_names[id] !== null;\n        });\n\n        options = options || {};\n        withTransition = getOption(options, \"withTransition\", true);\n        withTransitionForTransform = getOption(options, \"withTransitionForTransform\", true);\n\n        function getTextBox(textElement, id) {\n            if (!$$.legendItemTextBox[id]) {\n                $$.legendItemTextBox[id] = $$.getTextRect(textElement.textContent, CLASS.legendItem, textElement);\n            }\n            return $$.legendItemTextBox[id];\n        }\n\n        function updatePositions(textElement, id, index) {\n            var reset = index === 0, isLast = index === targetIds.length - 1,\n                box = getTextBox(textElement, id),\n                itemWidth = box.width + tileWidth + (isLast && !($$.isLegendRight || $$.isLegendInset) ? 0 : paddingRight) + config.legend_padding,\n                itemHeight = box.height + paddingTop,\n                itemLength = $$.isLegendRight || $$.isLegendInset ? itemHeight : itemWidth,\n                areaLength = $$.isLegendRight || $$.isLegendInset ? $$.getLegendHeight() : $$.getLegendWidth(),\n                margin, maxLength;\n\n            // MEMO: care about condifion of step, totalLength\n            function updateValues(id, withoutStep) {\n                if (!withoutStep) {\n                    margin = (areaLength - totalLength - itemLength) / 2;\n                    if (margin < posMin) {\n                        margin = (areaLength - itemLength) / 2;\n                        totalLength = 0;\n                        step++;\n                    }\n                }\n                steps[id] = step;\n                margins[step] = $$.isLegendInset ? 10 : margin;\n                offsets[id] = totalLength;\n                totalLength += itemLength;\n            }\n\n            if (reset) {\n                totalLength = 0;\n                step = 0;\n                maxWidth = 0;\n                maxHeight = 0;\n            }\n\n            if (config.legend_show && !$$.isLegendToShow(id)) {\n                widths[id] = heights[id] = steps[id] = offsets[id] = 0;\n                return;\n            }\n\n            widths[id] = itemWidth;\n            heights[id] = itemHeight;\n\n            if (!maxWidth || itemWidth >= maxWidth) { maxWidth = itemWidth; }\n            if (!maxHeight || itemHeight >= maxHeight) { maxHeight = itemHeight; }\n            maxLength = $$.isLegendRight || $$.isLegendInset ? maxHeight : maxWidth;\n\n            if (config.legend_equally) {\n                Object.keys(widths).forEach(function (id) { widths[id] = maxWidth; });\n                Object.keys(heights).forEach(function (id) { heights[id] = maxHeight; });\n                margin = (areaLength - maxLength * targetIds.length) / 2;\n                if (margin < posMin) {\n                    totalLength = 0;\n                    step = 0;\n                    targetIds.forEach(function (id) { updateValues(id); });\n                }\n                else {\n                    updateValues(id, true);\n                }\n            } else {\n                updateValues(id);\n            }\n        }\n\n        if ($$.isLegendInset) {\n            step = config.legend_inset_step ? config.legend_inset_step : targetIds.length;\n            $$.updateLegendStep(step);\n        }\n\n        if ($$.isLegendRight) {\n            xForLegend = function (id) { return maxWidth * steps[id]; };\n            yForLegend = function (id) { return margins[steps[id]] + offsets[id]; };\n        } else if ($$.isLegendInset) {\n            xForLegend = function (id) { return maxWidth * steps[id] + 10; };\n            yForLegend = function (id) { return margins[steps[id]] + offsets[id]; };\n        } else {\n            xForLegend = function (id) { return margins[steps[id]] + offsets[id]; };\n            yForLegend = function (id) { return maxHeight * steps[id]; };\n        }\n        xForLegendText = function (id, i) { return xForLegend(id, i) + 4 + config.legend_item_tile_width; };\n        yForLegendText = function (id, i) { return yForLegend(id, i) + 9; };\n        xForLegendRect = function (id, i) { return xForLegend(id, i); };\n        yForLegendRect = function (id, i) { return yForLegend(id, i) - 5; };\n        x1ForLegendTile = function (id, i) { return xForLegend(id, i) - 2; };\n        x2ForLegendTile = function (id, i) { return xForLegend(id, i) - 2 + config.legend_item_tile_width; };\n        yForLegendTile = function (id, i) { return yForLegend(id, i) + 4; };\n\n        // Define g for legend area\n        l = $$.legend.selectAll('.' + CLASS.legendItem)\n            .data(targetIds)\n            .enter().append('g')\n            .attr('class', function (id) { return $$.generateClass(CLASS.legendItem, id); })\n            .style('visibility', function (id) { return $$.isLegendToShow(id) ? 'visible' : 'hidden'; })\n            .style('cursor', 'pointer')\n            .on('click', function (id) {\n                if (config.legend_item_onclick) {\n                    config.legend_item_onclick.call($$, id);\n                } else {\n                    if ($$.d3.event.altKey) {\n                        $$.api.hide();\n                        $$.api.show(id);\n                    } else {\n                        $$.api.toggle(id);\n                        $$.isTargetToShow(id) ? $$.api.focus(id) : $$.api.revert();\n                    }\n                }\n            })\n            .on('mouseover', function (id) {\n                if (config.legend_item_onmouseover) {\n                    config.legend_item_onmouseover.call($$, id);\n                }\n                else {\n                    $$.d3.select(this).classed(CLASS.legendItemFocused, true);\n                    if (!$$.transiting && $$.isTargetToShow(id)) {\n                        $$.api.focus(id);\n                    }\n                }\n            })\n            .on('mouseout', function (id) {\n                if (config.legend_item_onmouseout) {\n                    config.legend_item_onmouseout.call($$, id);\n                }\n                else {\n                    $$.d3.select(this).classed(CLASS.legendItemFocused, false);\n                    $$.api.revert();\n                }\n            });\n        l.append('text')\n            .text(function (id) { return isDefined(config.data_names[id]) ? config.data_names[id] : id; })\n            .each(function (id, i) { updatePositions(this, id, i); })\n            .style(\"pointer-events\", \"none\")\n            .attr('x', $$.isLegendRight || $$.isLegendInset ? xForLegendText : -200)\n            .attr('y', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendText);\n        l.append('rect')\n            .attr(\"class\", CLASS.legendItemEvent)\n            .style('fill-opacity', 0)\n            .attr('x', $$.isLegendRight || $$.isLegendInset ? xForLegendRect : -200)\n            .attr('y', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendRect);\n        l.append('line')\n            .attr('class', CLASS.legendItemTile)\n            .style('stroke', $$.color)\n            .style(\"pointer-events\", \"none\")\n            .attr('x1', $$.isLegendRight || $$.isLegendInset ? x1ForLegendTile : -200)\n            .attr('y1', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendTile)\n            .attr('x2', $$.isLegendRight || $$.isLegendInset ? x2ForLegendTile : -200)\n            .attr('y2', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendTile)\n            .attr('stroke-width', config.legend_item_tile_height);\n\n        // Set background for inset legend\n        background = $$.legend.select('.' + CLASS.legendBackground + ' rect');\n        if ($$.isLegendInset && maxWidth > 0 && background.size() === 0) {\n            background = $$.legend.insert('g', '.' + CLASS.legendItem)\n                .attr(\"class\", CLASS.legendBackground)\n                .append('rect');\n        }\n\n        texts = $$.legend.selectAll('text')\n            .data(targetIds)\n            .text(function (id) { return isDefined(config.data_names[id]) ? config.data_names[id] : id; }) // MEMO: needed for update\n            .each(function (id, i) { updatePositions(this, id, i); });\n        (withTransition ? texts.transition() : texts)\n            .attr('x', xForLegendText)\n            .attr('y', yForLegendText);\n\n        rects = $$.legend.selectAll('rect.' + CLASS.legendItemEvent)\n            .data(targetIds);\n        (withTransition ? rects.transition() : rects)\n            .attr('width', function (id) { return widths[id]; })\n            .attr('height', function (id) { return heights[id]; })\n            .attr('x', xForLegendRect)\n            .attr('y', yForLegendRect);\n\n        tiles = $$.legend.selectAll('line.' + CLASS.legendItemTile)\n                .data(targetIds);\n            (withTransition ? tiles.transition() : tiles)\n                .style('stroke', $$.color)\n                .attr('x1', x1ForLegendTile)\n                .attr('y1', yForLegendTile)\n                .attr('x2', x2ForLegendTile)\n                .attr('y2', yForLegendTile);\n\n        if (background) {\n            (withTransition ? background.transition() : background)\n                .attr('height', $$.getLegendHeight() - 12)\n                .attr('width', maxWidth * (step + 1) + 10);\n        }\n\n        // toggle legend state\n        $$.legend.selectAll('.' + CLASS.legendItem)\n            .classed(CLASS.legendItemHidden, function (id) { return !$$.isTargetToShow(id); });\n\n        // Update all to reflect change of legend\n        $$.updateLegendItemWidth(maxWidth);\n        $$.updateLegendItemHeight(maxHeight);\n        $$.updateLegendStep(step);\n        // Update size and scale\n        $$.updateSizes();\n        $$.updateScales();\n        $$.updateSvgSize();\n        // Update g positions\n        $$.transformAll(withTransitionForTransform, transitions);\n        $$.legendHasRendered = true;\n    };\n\n    c3_chart_internal_fn.initTitle = function () {\n        var $$ = this;\n        $$.title = $$.svg.append(\"text\")\n              .text($$.config.title_text)\n              .attr(\"class\", $$.CLASS.title);\n    };\n    c3_chart_internal_fn.redrawTitle = function () {\n        var $$ = this;\n        $$.title\n              .attr(\"x\", $$.xForTitle.bind($$))\n              .attr(\"y\", $$.yForTitle.bind($$));\n    };\n    c3_chart_internal_fn.xForTitle = function () {\n        var $$ = this, config = $$.config, position = config.title_position || 'left', x;\n        if (position.indexOf('right') >= 0) {\n            x = $$.currentWidth - $$.getTextRect($$.title.node().textContent, $$.CLASS.title, $$.title.node()).width - config.title_padding.right;\n        } else if (position.indexOf('center') >= 0) {\n            x = ($$.currentWidth - $$.getTextRect($$.title.node().textContent, $$.CLASS.title, $$.title.node()).width) / 2;\n        } else { // left\n            x = config.title_padding.left;\n        }\n        return x;\n    };\n    c3_chart_internal_fn.yForTitle = function () {\n        var $$ = this;\n        return $$.config.title_padding.top + $$.getTextRect($$.title.node().textContent, $$.CLASS.title, $$.title.node()).height;\n    };\n    c3_chart_internal_fn.getTitlePadding = function() {\n        var $$ = this;\n        return $$.yForTitle() + $$.config.title_padding.bottom;\n    };\n\n    function Axis(owner) {\n        API.call(this, owner);\n    }\n\n    inherit(API, Axis);\n\n    Axis.prototype.init = function init() {\n\n        var $$ = this.owner, config = $$.config, main = $$.main;\n        $$.axes.x = main.append(\"g\")\n            .attr(\"class\", CLASS.axis + ' ' + CLASS.axisX)\n            .attr(\"clip-path\", $$.clipPathForXAxis)\n            .attr(\"transform\", $$.getTranslate('x'))\n            .style(\"visibility\", config.axis_x_show ? 'visible' : 'hidden');\n        $$.axes.x.append(\"text\")\n            .attr(\"class\", CLASS.axisXLabel)\n            .attr(\"transform\", config.axis_rotated ? \"rotate(-90)\" : \"\")\n            .style(\"text-anchor\", this.textAnchorForXAxisLabel.bind(this));\n        $$.axes.y = main.append(\"g\")\n            .attr(\"class\", CLASS.axis + ' ' + CLASS.axisY)\n            .attr(\"clip-path\", config.axis_y_inner ? \"\" : $$.clipPathForYAxis)\n            .attr(\"transform\", $$.getTranslate('y'))\n            .style(\"visibility\", config.axis_y_show ? 'visible' : 'hidden');\n        $$.axes.y.append(\"text\")\n            .attr(\"class\", CLASS.axisYLabel)\n            .attr(\"transform\", config.axis_rotated ? \"\" : \"rotate(-90)\")\n            .style(\"text-anchor\", this.textAnchorForYAxisLabel.bind(this));\n\n        $$.axes.y2 = main.append(\"g\")\n            .attr(\"class\", CLASS.axis + ' ' + CLASS.axisY2)\n            // clip-path?\n            .attr(\"transform\", $$.getTranslate('y2'))\n            .style(\"visibility\", config.axis_y2_show ? 'visible' : 'hidden');\n        $$.axes.y2.append(\"text\")\n            .attr(\"class\", CLASS.axisY2Label)\n            .attr(\"transform\", config.axis_rotated ? \"\" : \"rotate(-90)\")\n            .style(\"text-anchor\", this.textAnchorForY2AxisLabel.bind(this));\n    };\n    Axis.prototype.getXAxis = function getXAxis(scale, orient, tickFormat, tickValues, withOuterTick, withoutTransition, withoutRotateTickText) {\n        var $$ = this.owner, config = $$.config,\n            axisParams = {\n                isCategory: $$.isCategorized(),\n                withOuterTick: withOuterTick,\n                tickMultiline: config.axis_x_tick_multiline,\n                tickWidth: config.axis_x_tick_width,\n                tickTextRotate: withoutRotateTickText ? 0 : config.axis_x_tick_rotate,\n                withoutTransition: withoutTransition,\n            },\n            axis = c3_axis($$.d3, axisParams).scale(scale).orient(orient);\n\n        if ($$.isTimeSeries() && tickValues && typeof tickValues !== \"function\") {\n            tickValues = tickValues.map(function (v) { return $$.parseDate(v); });\n        }\n\n        // Set tick\n        axis.tickFormat(tickFormat).tickValues(tickValues);\n        if ($$.isCategorized()) {\n            axis.tickCentered(config.axis_x_tick_centered);\n            if (isEmpty(config.axis_x_tick_culling)) {\n                config.axis_x_tick_culling = false;\n            }\n        }\n\n        return axis;\n    };\n    Axis.prototype.updateXAxisTickValues = function updateXAxisTickValues(targets, axis) {\n        var $$ = this.owner, config = $$.config, tickValues;\n        if (config.axis_x_tick_fit || config.axis_x_tick_count) {\n            tickValues = this.generateTickValues($$.mapTargetsToUniqueXs(targets), config.axis_x_tick_count, $$.isTimeSeries());\n        }\n        if (axis) {\n            axis.tickValues(tickValues);\n        } else {\n            $$.xAxis.tickValues(tickValues);\n            $$.subXAxis.tickValues(tickValues);\n        }\n        return tickValues;\n    };\n    Axis.prototype.getYAxis = function getYAxis(scale, orient, tickFormat, tickValues, withOuterTick, withoutTransition, withoutRotateTickText) {\n        var $$ = this.owner, config = $$.config,\n            axisParams = {\n                withOuterTick: withOuterTick,\n                withoutTransition: withoutTransition,\n                tickTextRotate: withoutRotateTickText ? 0 : config.axis_y_tick_rotate\n            },\n            axis = c3_axis($$.d3, axisParams).scale(scale).orient(orient).tickFormat(tickFormat);\n        if ($$.isTimeSeriesY()) {\n            axis.ticks($$.d3.time[config.axis_y_tick_time_value], config.axis_y_tick_time_interval);\n        } else {\n            axis.tickValues(tickValues);\n        }\n        return axis;\n    };\n    Axis.prototype.getId = function getId(id) {\n        var config = this.owner.config;\n        return id in config.data_axes ? config.data_axes[id] : 'y';\n    };\n    Axis.prototype.getXAxisTickFormat = function getXAxisTickFormat() {\n        var $$ = this.owner, config = $$.config,\n            format = $$.isTimeSeries() ? $$.defaultAxisTimeFormat : $$.isCategorized() ? $$.categoryName : function (v) { return v < 0 ? v.toFixed(0) : v; };\n        if (config.axis_x_tick_format) {\n            if (isFunction(config.axis_x_tick_format)) {\n                format = config.axis_x_tick_format;\n            } else if ($$.isTimeSeries()) {\n                format = function (date) {\n                    return date ? $$.axisTimeFormat(config.axis_x_tick_format)(date) : \"\";\n                };\n            }\n        }\n        return isFunction(format) ? function (v) { return format.call($$, v); } : format;\n    };\n    Axis.prototype.getTickValues = function getTickValues(tickValues, axis) {\n        return tickValues ? tickValues : axis ? axis.tickValues() : undefined;\n    };\n    Axis.prototype.getXAxisTickValues = function getXAxisTickValues() {\n        return this.getTickValues(this.owner.config.axis_x_tick_values, this.owner.xAxis);\n    };\n    Axis.prototype.getYAxisTickValues = function getYAxisTickValues() {\n        return this.getTickValues(this.owner.config.axis_y_tick_values, this.owner.yAxis);\n    };\n    Axis.prototype.getY2AxisTickValues = function getY2AxisTickValues() {\n        return this.getTickValues(this.owner.config.axis_y2_tick_values, this.owner.y2Axis);\n    };\n    Axis.prototype.getLabelOptionByAxisId = function getLabelOptionByAxisId(axisId) {\n        var $$ = this.owner, config = $$.config, option;\n        if (axisId === 'y') {\n            option = config.axis_y_label;\n        } else if (axisId === 'y2') {\n            option = config.axis_y2_label;\n        } else if (axisId === 'x') {\n            option = config.axis_x_label;\n        }\n        return option;\n    };\n    Axis.prototype.getLabelText = function getLabelText(axisId) {\n        var option = this.getLabelOptionByAxisId(axisId);\n        return isString(option) ? option : option ? option.text : null;\n    };\n    Axis.prototype.setLabelText = function setLabelText(axisId, text) {\n        var $$ = this.owner, config = $$.config,\n            option = this.getLabelOptionByAxisId(axisId);\n        if (isString(option)) {\n            if (axisId === 'y') {\n                config.axis_y_label = text;\n            } else if (axisId === 'y2') {\n                config.axis_y2_label = text;\n            } else if (axisId === 'x') {\n                config.axis_x_label = text;\n            }\n        } else if (option) {\n            option.text = text;\n        }\n    };\n    Axis.prototype.getLabelPosition = function getLabelPosition(axisId, defaultPosition) {\n        var option = this.getLabelOptionByAxisId(axisId),\n            position = (option && typeof option === 'object' && option.position) ? option.position : defaultPosition;\n        return {\n            isInner: position.indexOf('inner') >= 0,\n            isOuter: position.indexOf('outer') >= 0,\n            isLeft: position.indexOf('left') >= 0,\n            isCenter: position.indexOf('center') >= 0,\n            isRight: position.indexOf('right') >= 0,\n            isTop: position.indexOf('top') >= 0,\n            isMiddle: position.indexOf('middle') >= 0,\n            isBottom: position.indexOf('bottom') >= 0\n        };\n    };\n    Axis.prototype.getXAxisLabelPosition = function getXAxisLabelPosition() {\n        return this.getLabelPosition('x', this.owner.config.axis_rotated ? 'inner-top' : 'inner-right');\n    };\n    Axis.prototype.getYAxisLabelPosition = function getYAxisLabelPosition() {\n        return this.getLabelPosition('y', this.owner.config.axis_rotated ? 'inner-right' : 'inner-top');\n    };\n    Axis.prototype.getY2AxisLabelPosition = function getY2AxisLabelPosition() {\n        return this.getLabelPosition('y2', this.owner.config.axis_rotated ? 'inner-right' : 'inner-top');\n    };\n    Axis.prototype.getLabelPositionById = function getLabelPositionById(id) {\n        return id === 'y2' ? this.getY2AxisLabelPosition() : id === 'y' ? this.getYAxisLabelPosition() : this.getXAxisLabelPosition();\n    };\n    Axis.prototype.textForXAxisLabel = function textForXAxisLabel() {\n        return this.getLabelText('x');\n    };\n    Axis.prototype.textForYAxisLabel = function textForYAxisLabel() {\n        return this.getLabelText('y');\n    };\n    Axis.prototype.textForY2AxisLabel = function textForY2AxisLabel() {\n        return this.getLabelText('y2');\n    };\n    Axis.prototype.xForAxisLabel = function xForAxisLabel(forHorizontal, position) {\n        var $$ = this.owner;\n        if (forHorizontal) {\n            return position.isLeft ? 0 : position.isCenter ? $$.width / 2 : $$.width;\n        } else {\n            return position.isBottom ? -$$.height : position.isMiddle ? -$$.height / 2 : 0;\n        }\n    };\n    Axis.prototype.dxForAxisLabel = function dxForAxisLabel(forHorizontal, position) {\n        if (forHorizontal) {\n            return position.isLeft ? \"0.5em\" : position.isRight ? \"-0.5em\" : \"0\";\n        } else {\n            return position.isTop ? \"-0.5em\" : position.isBottom ? \"0.5em\" : \"0\";\n        }\n    };\n    Axis.prototype.textAnchorForAxisLabel = function textAnchorForAxisLabel(forHorizontal, position) {\n        if (forHorizontal) {\n            return position.isLeft ? 'start' : position.isCenter ? 'middle' : 'end';\n        } else {\n            return position.isBottom ? 'start' : position.isMiddle ? 'middle' : 'end';\n        }\n    };\n    Axis.prototype.xForXAxisLabel = function xForXAxisLabel() {\n        return this.xForAxisLabel(!this.owner.config.axis_rotated, this.getXAxisLabelPosition());\n    };\n    Axis.prototype.xForYAxisLabel = function xForYAxisLabel() {\n        return this.xForAxisLabel(this.owner.config.axis_rotated, this.getYAxisLabelPosition());\n    };\n    Axis.prototype.xForY2AxisLabel = function xForY2AxisLabel() {\n        return this.xForAxisLabel(this.owner.config.axis_rotated, this.getY2AxisLabelPosition());\n    };\n    Axis.prototype.dxForXAxisLabel = function dxForXAxisLabel() {\n        return this.dxForAxisLabel(!this.owner.config.axis_rotated, this.getXAxisLabelPosition());\n    };\n    Axis.prototype.dxForYAxisLabel = function dxForYAxisLabel() {\n        return this.dxForAxisLabel(this.owner.config.axis_rotated, this.getYAxisLabelPosition());\n    };\n    Axis.prototype.dxForY2AxisLabel = function dxForY2AxisLabel() {\n        return this.dxForAxisLabel(this.owner.config.axis_rotated, this.getY2AxisLabelPosition());\n    };\n    Axis.prototype.dyForXAxisLabel = function dyForXAxisLabel() {\n        var $$ = this.owner, config = $$.config,\n            position = this.getXAxisLabelPosition();\n        if (config.axis_rotated) {\n            return position.isInner ? \"1.2em\" : -25 - this.getMaxTickWidth('x');\n        } else {\n            return position.isInner ? \"-0.5em\" : config.axis_x_height ? config.axis_x_height - 10 : \"3em\";\n        }\n    };\n    Axis.prototype.dyForYAxisLabel = function dyForYAxisLabel() {\n        var $$ = this.owner,\n            position = this.getYAxisLabelPosition();\n        if ($$.config.axis_rotated) {\n            return position.isInner ? \"-0.5em\" : \"3em\";\n        } else {\n            return position.isInner ? \"1.2em\" : -10 - ($$.config.axis_y_inner ? 0 : (this.getMaxTickWidth('y') + 10));\n        }\n    };\n    Axis.prototype.dyForY2AxisLabel = function dyForY2AxisLabel() {\n        var $$ = this.owner,\n            position = this.getY2AxisLabelPosition();\n        if ($$.config.axis_rotated) {\n            return position.isInner ? \"1.2em\" : \"-2.2em\";\n        } else {\n            return position.isInner ? \"-0.5em\" : 15 + ($$.config.axis_y2_inner ? 0 : (this.getMaxTickWidth('y2') + 15));\n        }\n    };\n    Axis.prototype.textAnchorForXAxisLabel = function textAnchorForXAxisLabel() {\n        var $$ = this.owner;\n        return this.textAnchorForAxisLabel(!$$.config.axis_rotated, this.getXAxisLabelPosition());\n    };\n    Axis.prototype.textAnchorForYAxisLabel = function textAnchorForYAxisLabel() {\n        var $$ = this.owner;\n        return this.textAnchorForAxisLabel($$.config.axis_rotated, this.getYAxisLabelPosition());\n    };\n    Axis.prototype.textAnchorForY2AxisLabel = function textAnchorForY2AxisLabel() {\n        var $$ = this.owner;\n        return this.textAnchorForAxisLabel($$.config.axis_rotated, this.getY2AxisLabelPosition());\n    };\n    Axis.prototype.getMaxTickWidth = function getMaxTickWidth(id, withoutRecompute) {\n        var $$ = this.owner, config = $$.config,\n            maxWidth = 0, targetsToShow, scale, axis, dummy, svg;\n        if (withoutRecompute && $$.currentMaxTickWidths[id]) {\n            return $$.currentMaxTickWidths[id];\n        }\n        if ($$.svg) {\n            targetsToShow = $$.filterTargetsToShow($$.data.targets);\n            if (id === 'y') {\n                scale = $$.y.copy().domain($$.getYDomain(targetsToShow, 'y'));\n                axis = this.getYAxis(scale, $$.yOrient, config.axis_y_tick_format, $$.yAxisTickValues, false, true, true);\n            } else if (id === 'y2') {\n                scale = $$.y2.copy().domain($$.getYDomain(targetsToShow, 'y2'));\n                axis = this.getYAxis(scale, $$.y2Orient, config.axis_y2_tick_format, $$.y2AxisTickValues, false, true, true);\n            } else {\n                scale = $$.x.copy().domain($$.getXDomain(targetsToShow));\n                axis = this.getXAxis(scale, $$.xOrient, $$.xAxisTickFormat, $$.xAxisTickValues, false, true, true);\n                this.updateXAxisTickValues(targetsToShow, axis);\n            }\n            dummy = $$.d3.select('body').append('div').classed('c3', true);\n            svg = dummy.append(\"svg\").style('visibility', 'hidden').style('position', 'fixed').style('top', 0).style('left', 0),\n            svg.append('g').call(axis).each(function () {\n                $$.d3.select(this).selectAll('text').each(function () {\n                    var box = this.getBoundingClientRect();\n                    if (maxWidth < box.width) { maxWidth = box.width; }\n                });\n                dummy.remove();\n            });\n        }\n        $$.currentMaxTickWidths[id] = maxWidth <= 0 ? $$.currentMaxTickWidths[id] : maxWidth;\n        return $$.currentMaxTickWidths[id];\n    };\n\n    Axis.prototype.updateLabels = function updateLabels(withTransition) {\n        var $$ = this.owner;\n        var axisXLabel = $$.main.select('.' + CLASS.axisX + ' .' + CLASS.axisXLabel),\n            axisYLabel = $$.main.select('.' + CLASS.axisY + ' .' + CLASS.axisYLabel),\n            axisY2Label = $$.main.select('.' + CLASS.axisY2 + ' .' + CLASS.axisY2Label);\n        (withTransition ? axisXLabel.transition() : axisXLabel)\n            .attr(\"x\", this.xForXAxisLabel.bind(this))\n            .attr(\"dx\", this.dxForXAxisLabel.bind(this))\n            .attr(\"dy\", this.dyForXAxisLabel.bind(this))\n            .text(this.textForXAxisLabel.bind(this));\n        (withTransition ? axisYLabel.transition() : axisYLabel)\n            .attr(\"x\", this.xForYAxisLabel.bind(this))\n            .attr(\"dx\", this.dxForYAxisLabel.bind(this))\n            .attr(\"dy\", this.dyForYAxisLabel.bind(this))\n            .text(this.textForYAxisLabel.bind(this));\n        (withTransition ? axisY2Label.transition() : axisY2Label)\n            .attr(\"x\", this.xForY2AxisLabel.bind(this))\n            .attr(\"dx\", this.dxForY2AxisLabel.bind(this))\n            .attr(\"dy\", this.dyForY2AxisLabel.bind(this))\n            .text(this.textForY2AxisLabel.bind(this));\n    };\n    Axis.prototype.getPadding = function getPadding(padding, key, defaultValue, domainLength) {\n        var p = typeof padding === 'number' ? padding : padding[key];\n        if (!isValue(p)) {\n            return defaultValue;\n        }\n        if (padding.unit === 'ratio') {\n            return padding[key] * domainLength;\n        }\n        // assume padding is pixels if unit is not specified\n        return this.convertPixelsToAxisPadding(p, domainLength);\n    };\n    Axis.prototype.convertPixelsToAxisPadding = function convertPixelsToAxisPadding(pixels, domainLength) {\n        var $$ = this.owner,\n            length = $$.config.axis_rotated ? $$.width : $$.height;\n        return domainLength * (pixels / length);\n    };\n    Axis.prototype.generateTickValues = function generateTickValues(values, tickCount, forTimeSeries) {\n        var tickValues = values, targetCount, start, end, count, interval, i, tickValue;\n        if (tickCount) {\n            targetCount = isFunction(tickCount) ? tickCount() : tickCount;\n            // compute ticks according to tickCount\n            if (targetCount === 1) {\n                tickValues = [values[0]];\n            } else if (targetCount === 2) {\n                tickValues = [values[0], values[values.length - 1]];\n            } else if (targetCount > 2) {\n                count = targetCount - 2;\n                start = values[0];\n                end = values[values.length - 1];\n                interval = (end - start) / (count + 1);\n                // re-construct unique values\n                tickValues = [start];\n                for (i = 0; i < count; i++) {\n                    tickValue = +start + interval * (i + 1);\n                    tickValues.push(forTimeSeries ? new Date(tickValue) : tickValue);\n                }\n                tickValues.push(end);\n            }\n        }\n        if (!forTimeSeries) { tickValues = tickValues.sort(function (a, b) { return a - b; }); }\n        return tickValues;\n    };\n    Axis.prototype.generateTransitions = function generateTransitions(duration) {\n        var $$ = this.owner, axes = $$.axes;\n        return {\n            axisX: duration ? axes.x.transition().duration(duration) : axes.x,\n            axisY: duration ? axes.y.transition().duration(duration) : axes.y,\n            axisY2: duration ? axes.y2.transition().duration(duration) : axes.y2,\n            axisSubX: duration ? axes.subx.transition().duration(duration) : axes.subx\n        };\n    };\n    Axis.prototype.redraw = function redraw(transitions, isHidden) {\n        var $$ = this.owner;\n        $$.axes.x.style(\"opacity\", isHidden ? 0 : 1);\n        $$.axes.y.style(\"opacity\", isHidden ? 0 : 1);\n        $$.axes.y2.style(\"opacity\", isHidden ? 0 : 1);\n        $$.axes.subx.style(\"opacity\", isHidden ? 0 : 1);\n        transitions.axisX.call($$.xAxis);\n        transitions.axisY.call($$.yAxis);\n        transitions.axisY2.call($$.y2Axis);\n        transitions.axisSubX.call($$.subXAxis);\n    };\n\n    c3_chart_internal_fn.getClipPath = function (id) {\n        var isIE9 = window.navigator.appVersion.toLowerCase().indexOf(\"msie 9.\") >= 0;\n        return \"url(\" + (isIE9 ? \"\" : document.URL.split('#')[0]) + \"#\" + id + \")\";\n    };\n    c3_chart_internal_fn.appendClip = function (parent, id) {\n        return parent.append(\"clipPath\").attr(\"id\", id).append(\"rect\");\n    };\n    c3_chart_internal_fn.getAxisClipX = function (forHorizontal) {\n        // axis line width + padding for left\n        var left = Math.max(30, this.margin.left);\n        return forHorizontal ? -(1 + left) : -(left - 1);\n    };\n    c3_chart_internal_fn.getAxisClipY = function (forHorizontal) {\n        return forHorizontal ? -20 : -this.margin.top;\n    };\n    c3_chart_internal_fn.getXAxisClipX = function () {\n        var $$ = this;\n        return $$.getAxisClipX(!$$.config.axis_rotated);\n    };\n    c3_chart_internal_fn.getXAxisClipY = function () {\n        var $$ = this;\n        return $$.getAxisClipY(!$$.config.axis_rotated);\n    };\n    c3_chart_internal_fn.getYAxisClipX = function () {\n        var $$ = this;\n        return $$.config.axis_y_inner ? -1 : $$.getAxisClipX($$.config.axis_rotated);\n    };\n    c3_chart_internal_fn.getYAxisClipY = function () {\n        var $$ = this;\n        return $$.getAxisClipY($$.config.axis_rotated);\n    };\n    c3_chart_internal_fn.getAxisClipWidth = function (forHorizontal) {\n        var $$ = this,\n            left = Math.max(30, $$.margin.left),\n            right = Math.max(30, $$.margin.right);\n        // width + axis line width + padding for left/right\n        return forHorizontal ? $$.width + 2 + left + right : $$.margin.left + 20;\n    };\n    c3_chart_internal_fn.getAxisClipHeight = function (forHorizontal) {\n        // less than 20 is not enough to show the axis label 'outer' without legend\n        return (forHorizontal ? this.margin.bottom : (this.margin.top + this.height)) + 20;\n    };\n    c3_chart_internal_fn.getXAxisClipWidth = function () {\n        var $$ = this;\n        return $$.getAxisClipWidth(!$$.config.axis_rotated);\n    };\n    c3_chart_internal_fn.getXAxisClipHeight = function () {\n        var $$ = this;\n        return $$.getAxisClipHeight(!$$.config.axis_rotated);\n    };\n    c3_chart_internal_fn.getYAxisClipWidth = function () {\n        var $$ = this;\n        return $$.getAxisClipWidth($$.config.axis_rotated) + ($$.config.axis_y_inner ? 20 : 0);\n    };\n    c3_chart_internal_fn.getYAxisClipHeight = function () {\n        var $$ = this;\n        return $$.getAxisClipHeight($$.config.axis_rotated);\n    };\n\n    c3_chart_internal_fn.initPie = function () {\n        var $$ = this, d3 = $$.d3, config = $$.config;\n        $$.pie = d3.layout.pie().value(function (d) {\n            return d.values.reduce(function (a, b) { return a + b.value; }, 0);\n        });\n        if (!config.data_order) {\n            $$.pie.sort(null);\n        }\n    };\n\n    c3_chart_internal_fn.updateRadius = function () {\n        var $$ = this, config = $$.config,\n            w = config.gauge_width || config.donut_width;\n        $$.radiusExpanded = Math.min($$.arcWidth, $$.arcHeight) / 2;\n        $$.radius = $$.radiusExpanded * 0.95;\n        $$.innerRadiusRatio = w ? ($$.radius - w) / $$.radius : 0.6;\n        $$.innerRadius = $$.hasType('donut') || $$.hasType('gauge') ? $$.radius * $$.innerRadiusRatio : 0;\n    };\n\n    c3_chart_internal_fn.updateArc = function () {\n        var $$ = this;\n        $$.svgArc = $$.getSvgArc();\n        $$.svgArcExpanded = $$.getSvgArcExpanded();\n        $$.svgArcExpandedSub = $$.getSvgArcExpanded(0.98);\n    };\n\n    c3_chart_internal_fn.updateAngle = function (d) {\n        var $$ = this, config = $$.config,\n            found = false, index = 0,\n            gMin, gMax, gTic, gValue;\n\n        if (!config) {\n            return null;\n        }\n\n        $$.pie($$.filterTargetsToShow($$.data.targets)).forEach(function (t) {\n            if (! found && t.data.id === d.data.id) {\n                found = true;\n                d = t;\n                d.index = index;\n            }\n            index++;\n        });\n        if (isNaN(d.startAngle)) {\n            d.startAngle = 0;\n        }\n        if (isNaN(d.endAngle)) {\n            d.endAngle = d.startAngle;\n        }\n        if ($$.isGaugeType(d.data)) {\n            gMin = config.gauge_min;\n            gMax = config.gauge_max;\n            gTic = (Math.PI * (config.gauge_fullCircle ? 2 : 1)) / (gMax - gMin);\n            gValue = d.value < gMin ? 0 : d.value < gMax ? d.value - gMin : (gMax - gMin);\n            d.startAngle = config.gauge_startingAngle;\n            d.endAngle = d.startAngle + gTic * gValue;\n        }\n        return found ? d : null;\n    };\n\n    c3_chart_internal_fn.getSvgArc = function () {\n        var $$ = this,\n            arc = $$.d3.svg.arc().outerRadius($$.radius).innerRadius($$.innerRadius),\n            newArc = function (d, withoutUpdate) {\n                var updated;\n                if (withoutUpdate) { return arc(d); } // for interpolate\n                updated = $$.updateAngle(d);\n                return updated ? arc(updated) : \"M 0 0\";\n            };\n        // TODO: extends all function\n        newArc.centroid = arc.centroid;\n        return newArc;\n    };\n\n    c3_chart_internal_fn.getSvgArcExpanded = function (rate) {\n        var $$ = this,\n            arc = $$.d3.svg.arc().outerRadius($$.radiusExpanded * (rate ? rate : 1)).innerRadius($$.innerRadius);\n        return function (d) {\n            var updated = $$.updateAngle(d);\n            return updated ? arc(updated) : \"M 0 0\";\n        };\n    };\n\n    c3_chart_internal_fn.getArc = function (d, withoutUpdate, force) {\n        return force || this.isArcType(d.data) ? this.svgArc(d, withoutUpdate) : \"M 0 0\";\n    };\n\n\n    c3_chart_internal_fn.transformForArcLabel = function (d) {\n        var $$ = this, config = $$.config,\n            updated = $$.updateAngle(d), c, x, y, h, ratio, translate = \"\";\n        if (updated && !$$.hasType('gauge')) {\n            c = this.svgArc.centroid(updated);\n            x = isNaN(c[0]) ? 0 : c[0];\n            y = isNaN(c[1]) ? 0 : c[1];\n            h = Math.sqrt(x * x + y * y);\n            if ($$.hasType('donut') && config.donut_label_ratio) {\n                ratio = isFunction(config.donut_label_ratio) ? config.donut_label_ratio(d, $$.radius, h) : config.donut_label_ratio;\n            } else if ($$.hasType('pie') && config.pie_label_ratio) {\n                ratio = isFunction(config.pie_label_ratio) ? config.pie_label_ratio(d, $$.radius, h) : config.pie_label_ratio;\n            } else {\n                ratio = $$.radius && h ? (36 / $$.radius > 0.375 ? 1.175 - 36 / $$.radius : 0.8) * $$.radius / h : 0;\n            }\n            translate = \"translate(\" + (x * ratio) +  ',' + (y * ratio) +  \")\";\n        }\n        return translate;\n    };\n\n    c3_chart_internal_fn.getArcRatio = function (d) {\n        var $$ = this,\n            config = $$.config,\n            whole = Math.PI * ($$.hasType('gauge') && !config.gauge_fullCircle ? 1 : 2);\n        return d ? (d.endAngle - d.startAngle) / whole : null;\n    };\n\n    c3_chart_internal_fn.convertToArcData = function (d) {\n        return this.addName({\n            id: d.data.id,\n            value: d.value,\n            ratio: this.getArcRatio(d),\n            index: d.index\n        });\n    };\n\n    c3_chart_internal_fn.textForArcLabel = function (d) {\n        var $$ = this,\n            updated, value, ratio, id, format;\n        if (! $$.shouldShowArcLabel()) { return \"\"; }\n        updated = $$.updateAngle(d);\n        value = updated ? updated.value : null;\n        ratio = $$.getArcRatio(updated);\n        id = d.data.id;\n        if (! $$.hasType('gauge') && ! $$.meetsArcLabelThreshold(ratio)) { return \"\"; }\n        format = $$.getArcLabelFormat();\n        return format ? format(value, ratio, id) : $$.defaultArcValueFormat(value, ratio);\n    };\n\n    c3_chart_internal_fn.expandArc = function (targetIds) {\n        var $$ = this, interval;\n\n        // MEMO: avoid to cancel transition\n        if ($$.transiting) {\n            interval = window.setInterval(function () {\n                if (!$$.transiting) {\n                    window.clearInterval(interval);\n                    if ($$.legend.selectAll('.c3-legend-item-focused').size() > 0) {\n                        $$.expandArc(targetIds);\n                    }\n                }\n            }, 10);\n            return;\n        }\n\n        targetIds = $$.mapToTargetIds(targetIds);\n\n        $$.svg.selectAll($$.selectorTargets(targetIds, '.' + CLASS.chartArc)).each(function (d) {\n            if (! $$.shouldExpand(d.data.id)) { return; }\n            $$.d3.select(this).selectAll('path')\n                .transition().duration($$.expandDuration(d.data.id))\n                .attr(\"d\", $$.svgArcExpanded)\n                .transition().duration($$.expandDuration(d.data.id) * 2)\n                .attr(\"d\", $$.svgArcExpandedSub)\n                .each(function (d) {\n                    if ($$.isDonutType(d.data)) {\n                        // callback here\n                    }\n                });\n        });\n    };\n\n    c3_chart_internal_fn.unexpandArc = function (targetIds) {\n        var $$ = this;\n\n        if ($$.transiting) { return; }\n\n        targetIds = $$.mapToTargetIds(targetIds);\n\n        $$.svg.selectAll($$.selectorTargets(targetIds, '.' + CLASS.chartArc)).selectAll('path')\n            .transition().duration(function(d) {\n                return $$.expandDuration(d.data.id);\n            })\n            .attr(\"d\", $$.svgArc);\n        $$.svg.selectAll('.' + CLASS.arc)\n            .style(\"opacity\", 1);\n    };\n\n    c3_chart_internal_fn.expandDuration = function (id) {\n        var $$ = this, config = $$.config;\n\n        if ($$.isDonutType(id)) {\n            return config.donut_expand_duration;\n        } else if ($$.isGaugeType(id)) {\n            return config.gauge_expand_duration;\n        } else if ($$.isPieType(id)) {\n            return config.pie_expand_duration;\n        } else {\n            return 50;\n        }\n\n    };\n\n    c3_chart_internal_fn.shouldExpand = function (id) {\n        var $$ = this, config = $$.config;\n        return ($$.isDonutType(id) && config.donut_expand) ||\n               ($$.isGaugeType(id) && config.gauge_expand) ||\n               ($$.isPieType(id) && config.pie_expand);\n    };\n\n    c3_chart_internal_fn.shouldShowArcLabel = function () {\n        var $$ = this, config = $$.config, shouldShow = true;\n        if ($$.hasType('donut')) {\n            shouldShow = config.donut_label_show;\n        } else if ($$.hasType('pie')) {\n            shouldShow = config.pie_label_show;\n        }\n        // when gauge, always true\n        return shouldShow;\n    };\n\n    c3_chart_internal_fn.meetsArcLabelThreshold = function (ratio) {\n        var $$ = this, config = $$.config,\n            threshold = $$.hasType('donut') ? config.donut_label_threshold : config.pie_label_threshold;\n        return ratio >= threshold;\n    };\n\n    c3_chart_internal_fn.getArcLabelFormat = function () {\n        var $$ = this, config = $$.config,\n            format = config.pie_label_format;\n        if ($$.hasType('gauge')) {\n            format = config.gauge_label_format;\n        } else if ($$.hasType('donut')) {\n            format = config.donut_label_format;\n        }\n        return format;\n    };\n\n    c3_chart_internal_fn.getArcTitle = function () {\n        var $$ = this;\n        return $$.hasType('donut') ? $$.config.donut_title : \"\";\n    };\n\n    c3_chart_internal_fn.updateTargetsForArc = function (targets) {\n        var $$ = this, main = $$.main,\n            mainPieUpdate, mainPieEnter,\n            classChartArc = $$.classChartArc.bind($$),\n            classArcs = $$.classArcs.bind($$),\n            classFocus = $$.classFocus.bind($$);\n        mainPieUpdate = main.select('.' + CLASS.chartArcs).selectAll('.' + CLASS.chartArc)\n            .data($$.pie(targets))\n            .attr(\"class\", function (d) { return classChartArc(d) + classFocus(d.data); });\n        mainPieEnter = mainPieUpdate.enter().append(\"g\")\n            .attr(\"class\", classChartArc);\n        mainPieEnter.append('g')\n            .attr('class', classArcs);\n        mainPieEnter.append(\"text\")\n            .attr(\"dy\", $$.hasType('gauge') ? \"-.1em\" : \".35em\")\n            .style(\"opacity\", 0)\n            .style(\"text-anchor\", \"middle\")\n            .style(\"pointer-events\", \"none\");\n        // MEMO: can not keep same color..., but not bad to update color in redraw\n        //mainPieUpdate.exit().remove();\n    };\n\n    c3_chart_internal_fn.initArc = function () {\n        var $$ = this;\n        $$.arcs = $$.main.select('.' + CLASS.chart).append(\"g\")\n            .attr(\"class\", CLASS.chartArcs)\n            .attr(\"transform\", $$.getTranslate('arc'));\n        $$.arcs.append('text')\n            .attr('class', CLASS.chartArcsTitle)\n            .style(\"text-anchor\", \"middle\")\n            .text($$.getArcTitle());\n    };\n\n    c3_chart_internal_fn.redrawArc = function (duration, durationForExit, withTransform) {\n        var $$ = this, d3 = $$.d3, config = $$.config, main = $$.main,\n            mainArc;\n        mainArc = main.selectAll('.' + CLASS.arcs).selectAll('.' + CLASS.arc)\n            .data($$.arcData.bind($$));\n        mainArc.enter().append('path')\n            .attr(\"class\", $$.classArc.bind($$))\n            .style(\"fill\", function (d) { return $$.color(d.data); })\n            .style(\"cursor\", function (d) { return config.interaction_enabled && config.data_selection_isselectable(d) ? \"pointer\" : null; })\n            .style(\"opacity\", 0)\n            .each(function (d) {\n                if ($$.isGaugeType(d.data)) {\n                    d.startAngle = d.endAngle = config.gauge_startingAngle;\n                }\n                this._current = d;\n            });\n        mainArc\n            .attr(\"transform\", function (d) { return !$$.isGaugeType(d.data) && withTransform ? \"scale(0)\" : \"\"; })\n            .style(\"opacity\", function (d) { return d === this._current ? 0 : 1; })\n            .on('mouseover', config.interaction_enabled ? function (d) {\n                var updated, arcData;\n                if ($$.transiting) { // skip while transiting\n                    return;\n                }\n                updated = $$.updateAngle(d);\n                if (updated) {\n                    arcData = $$.convertToArcData(updated);\n                    // transitions\n                    $$.expandArc(updated.data.id);\n                    $$.api.focus(updated.data.id);\n                    $$.toggleFocusLegend(updated.data.id, true);\n                    $$.config.data_onmouseover(arcData, this);\n                }\n            } : null)\n            .on('mousemove', config.interaction_enabled ? function (d) {\n                var updated = $$.updateAngle(d), arcData, selectedData;\n                if (updated) {\n                    arcData = $$.convertToArcData(updated),\n                    selectedData = [arcData];\n                    $$.showTooltip(selectedData, this);\n                }\n            } : null)\n            .on('mouseout', config.interaction_enabled ? function (d) {\n                var updated, arcData;\n                if ($$.transiting) { // skip while transiting\n                    return;\n                }\n                updated = $$.updateAngle(d);\n                if (updated) {\n                    arcData = $$.convertToArcData(updated);\n                    // transitions\n                    $$.unexpandArc(updated.data.id);\n                    $$.api.revert();\n                    $$.revertLegend();\n                    $$.hideTooltip();\n                    $$.config.data_onmouseout(arcData, this);\n                }\n            } : null)\n            .on('click', config.interaction_enabled ? function (d, i) {\n                var updated = $$.updateAngle(d), arcData;\n                if (updated) {\n                    arcData = $$.convertToArcData(updated);\n                    if ($$.toggleShape) {\n                        $$.toggleShape(this, arcData, i);\n                    }\n                    $$.config.data_onclick.call($$.api, arcData, this);\n                }\n            } : null)\n            .each(function () { $$.transiting = true; })\n            .transition().duration(duration)\n            .attrTween(\"d\", function (d) {\n                var updated = $$.updateAngle(d), interpolate;\n                if (! updated) {\n                    return function () { return \"M 0 0\"; };\n                }\n                //                if (this._current === d) {\n                //                    this._current = {\n                //                        startAngle: Math.PI*2,\n                //                        endAngle: Math.PI*2,\n                //                    };\n                //                }\n                if (isNaN(this._current.startAngle)) {\n                    this._current.startAngle = 0;\n                }\n                if (isNaN(this._current.endAngle)) {\n                    this._current.endAngle = this._current.startAngle;\n                }\n                interpolate = d3.interpolate(this._current, updated);\n                this._current = interpolate(0);\n                return function (t) {\n                    var interpolated = interpolate(t);\n                    interpolated.data = d.data; // data.id will be updated by interporator\n                    return $$.getArc(interpolated, true);\n                };\n            })\n            .attr(\"transform\", withTransform ? \"scale(1)\" : \"\")\n            .style(\"fill\", function (d) {\n                return $$.levelColor ? $$.levelColor(d.data.values[0].value) : $$.color(d.data.id);\n            }) // Where gauge reading color would receive customization.\n            .style(\"opacity\", 1)\n            .call($$.endall, function () {\n                $$.transiting = false;\n            });\n        mainArc.exit().transition().duration(durationForExit)\n            .style('opacity', 0)\n            .remove();\n        main.selectAll('.' + CLASS.chartArc).select('text')\n            .style(\"opacity\", 0)\n            .attr('class', function (d) { return $$.isGaugeType(d.data) ? CLASS.gaugeValue : ''; })\n            .text($$.textForArcLabel.bind($$))\n            .attr(\"transform\", $$.transformForArcLabel.bind($$))\n            .style('font-size', function (d) { return $$.isGaugeType(d.data) ? Math.round($$.radius / 5) + 'px' : ''; })\n          .transition().duration(duration)\n            .style(\"opacity\", function (d) { return $$.isTargetToShow(d.data.id) && $$.isArcType(d.data) ? 1 : 0; });\n        main.select('.' + CLASS.chartArcsTitle)\n            .style(\"opacity\", $$.hasType('donut') || $$.hasType('gauge') ? 1 : 0);\n\n        if ($$.hasType('gauge')) {\n            $$.arcs.select('.' + CLASS.chartArcsBackground)\n                .attr(\"d\", function () {\n                    var d = {\n                        data: [{value: config.gauge_max}],\n                        startAngle: config.gauge_startingAngle,\n                        endAngle: -1 * config.gauge_startingAngle\n                    };\n                    return $$.getArc(d, true, true);\n                });\n            $$.arcs.select('.' + CLASS.chartArcsGaugeUnit)\n                .attr(\"dy\", \".75em\")\n                .text(config.gauge_label_show ? config.gauge_units : '');\n            $$.arcs.select('.' + CLASS.chartArcsGaugeMin)\n                .attr(\"dx\", -1 * ($$.innerRadius + (($$.radius - $$.innerRadius) / (config.gauge_fullCircle ? 1 : 2))) + \"px\")\n                .attr(\"dy\", \"1.2em\")\n                .text(config.gauge_label_show ? config.gauge_min : '');\n            $$.arcs.select('.' + CLASS.chartArcsGaugeMax)\n                .attr(\"dx\", $$.innerRadius + (($$.radius - $$.innerRadius) / (config.gauge_fullCircle ? 1 : 2)) + \"px\")\n                .attr(\"dy\", \"1.2em\")\n                .text(config.gauge_label_show ? config.gauge_max : '');\n        }\n    };\n    c3_chart_internal_fn.initGauge = function () {\n        var arcs = this.arcs;\n        if (this.hasType('gauge')) {\n            arcs.append('path')\n                .attr(\"class\", CLASS.chartArcsBackground);\n            arcs.append(\"text\")\n                .attr(\"class\", CLASS.chartArcsGaugeUnit)\n                .style(\"text-anchor\", \"middle\")\n                .style(\"pointer-events\", \"none\");\n            arcs.append(\"text\")\n                .attr(\"class\", CLASS.chartArcsGaugeMin)\n                .style(\"text-anchor\", \"middle\")\n                .style(\"pointer-events\", \"none\");\n            arcs.append(\"text\")\n                .attr(\"class\", CLASS.chartArcsGaugeMax)\n                .style(\"text-anchor\", \"middle\")\n                .style(\"pointer-events\", \"none\");\n        }\n    };\n    c3_chart_internal_fn.getGaugeLabelHeight = function () {\n        return this.config.gauge_label_show ? 20 : 0;\n    };\n\n    c3_chart_internal_fn.initRegion = function () {\n        var $$ = this;\n        $$.region = $$.main.append('g')\n            .attr(\"clip-path\", $$.clipPath)\n            .attr(\"class\", CLASS.regions);\n    };\n    c3_chart_internal_fn.updateRegion = function (duration) {\n        var $$ = this, config = $$.config;\n\n        // hide if arc type\n        $$.region.style('visibility', $$.hasArcType() ? 'hidden' : 'visible');\n\n        $$.mainRegion = $$.main.select('.' + CLASS.regions).selectAll('.' + CLASS.region)\n            .data(config.regions);\n        $$.mainRegion.enter().append('g')\n          .append('rect')\n            .style(\"fill-opacity\", 0);\n        $$.mainRegion\n            .attr('class', $$.classRegion.bind($$));\n        $$.mainRegion.exit().transition().duration(duration)\n            .style(\"opacity\", 0)\n            .remove();\n    };\n    c3_chart_internal_fn.redrawRegion = function (withTransition) {\n        var $$ = this,\n            regions = $$.mainRegion.selectAll('rect').each(function () {\n                // data is binded to g and it's not transferred to rect (child node) automatically,\n                // then data of each rect has to be updated manually.\n                // TODO: there should be more efficient way to solve this?\n                var parentData = $$.d3.select(this.parentNode).datum();\n                $$.d3.select(this).datum(parentData);\n            }),\n            x = $$.regionX.bind($$),\n            y = $$.regionY.bind($$),\n            w = $$.regionWidth.bind($$),\n            h = $$.regionHeight.bind($$);\n        return [\n            (withTransition ? regions.transition() : regions)\n                .attr(\"x\", x)\n                .attr(\"y\", y)\n                .attr(\"width\", w)\n                .attr(\"height\", h)\n                .style(\"fill-opacity\", function (d) { return isValue(d.opacity) ? d.opacity : 0.1; })\n        ];\n    };\n    c3_chart_internal_fn.regionX = function (d) {\n        var $$ = this, config = $$.config,\n            xPos, yScale = d.axis === 'y' ? $$.y : $$.y2;\n        if (d.axis === 'y' || d.axis === 'y2') {\n            xPos = config.axis_rotated ? ('start' in d ? yScale(d.start) : 0) : 0;\n        } else {\n            xPos = config.axis_rotated ? 0 : ('start' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.start) : d.start) : 0);\n        }\n        return xPos;\n    };\n    c3_chart_internal_fn.regionY = function (d) {\n        var $$ = this, config = $$.config,\n            yPos, yScale = d.axis === 'y' ? $$.y : $$.y2;\n        if (d.axis === 'y' || d.axis === 'y2') {\n            yPos = config.axis_rotated ? 0 : ('end' in d ? yScale(d.end) : 0);\n        } else {\n            yPos = config.axis_rotated ? ('start' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.start) : d.start) : 0) : 0;\n        }\n        return yPos;\n    };\n    c3_chart_internal_fn.regionWidth = function (d) {\n        var $$ = this, config = $$.config,\n            start = $$.regionX(d), end, yScale = d.axis === 'y' ? $$.y : $$.y2;\n        if (d.axis === 'y' || d.axis === 'y2') {\n            end = config.axis_rotated ? ('end' in d ? yScale(d.end) : $$.width) : $$.width;\n        } else {\n            end = config.axis_rotated ? $$.width : ('end' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.end) : d.end) : $$.width);\n        }\n        return end < start ? 0 : end - start;\n    };\n    c3_chart_internal_fn.regionHeight = function (d) {\n        var $$ = this, config = $$.config,\n            start = this.regionY(d), end, yScale = d.axis === 'y' ? $$.y : $$.y2;\n        if (d.axis === 'y' || d.axis === 'y2') {\n            end = config.axis_rotated ? $$.height : ('start' in d ? yScale(d.start) : $$.height);\n        } else {\n            end = config.axis_rotated ? ('end' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.end) : d.end) : $$.height) : $$.height;\n        }\n        return end < start ? 0 : end - start;\n    };\n    c3_chart_internal_fn.isRegionOnX = function (d) {\n        return !d.axis || d.axis === 'x';\n    };\n\n    c3_chart_internal_fn.drag = function (mouse) {\n        var $$ = this, config = $$.config, main = $$.main, d3 = $$.d3;\n        var sx, sy, mx, my, minX, maxX, minY, maxY;\n\n        if ($$.hasArcType()) { return; }\n        if (! config.data_selection_enabled) { return; } // do nothing if not selectable\n        if (config.zoom_enabled && ! $$.zoom.altDomain) { return; } // skip if zoomable because of conflict drag dehavior\n        if (!config.data_selection_multiple) { return; } // skip when single selection because drag is used for multiple selection\n\n        sx = $$.dragStart[0];\n        sy = $$.dragStart[1];\n        mx = mouse[0];\n        my = mouse[1];\n        minX = Math.min(sx, mx);\n        maxX = Math.max(sx, mx);\n        minY = (config.data_selection_grouped) ? $$.margin.top : Math.min(sy, my);\n        maxY = (config.data_selection_grouped) ? $$.height : Math.max(sy, my);\n\n        main.select('.' + CLASS.dragarea)\n            .attr('x', minX)\n            .attr('y', minY)\n            .attr('width', maxX - minX)\n            .attr('height', maxY - minY);\n        // TODO: binary search when multiple xs\n        main.selectAll('.' + CLASS.shapes).selectAll('.' + CLASS.shape)\n            .filter(function (d) { return config.data_selection_isselectable(d); })\n            .each(function (d, i) {\n                var shape = d3.select(this),\n                    isSelected = shape.classed(CLASS.SELECTED),\n                    isIncluded = shape.classed(CLASS.INCLUDED),\n                    _x, _y, _w, _h, toggle, isWithin = false, box;\n                if (shape.classed(CLASS.circle)) {\n                    _x = shape.attr(\"cx\") * 1;\n                    _y = shape.attr(\"cy\") * 1;\n                    toggle = $$.togglePoint;\n                    isWithin = minX < _x && _x < maxX && minY < _y && _y < maxY;\n                }\n                else if (shape.classed(CLASS.bar)) {\n                    box = getPathBox(this);\n                    _x = box.x;\n                    _y = box.y;\n                    _w = box.width;\n                    _h = box.height;\n                    toggle = $$.togglePath;\n                    isWithin = !(maxX < _x || _x + _w < minX) && !(maxY < _y || _y + _h < minY);\n                } else {\n                    // line/area selection not supported yet\n                    return;\n                }\n                if (isWithin ^ isIncluded) {\n                    shape.classed(CLASS.INCLUDED, !isIncluded);\n                    // TODO: included/unincluded callback here\n                    shape.classed(CLASS.SELECTED, !isSelected);\n                    toggle.call($$, !isSelected, shape, d, i);\n                }\n            });\n    };\n\n    c3_chart_internal_fn.dragstart = function (mouse) {\n        var $$ = this, config = $$.config;\n        if ($$.hasArcType()) { return; }\n        if (! config.data_selection_enabled) { return; } // do nothing if not selectable\n        $$.dragStart = mouse;\n        $$.main.select('.' + CLASS.chart).append('rect')\n            .attr('class', CLASS.dragarea)\n            .style('opacity', 0.1);\n        $$.dragging = true;\n    };\n\n    c3_chart_internal_fn.dragend = function () {\n        var $$ = this, config = $$.config;\n        if ($$.hasArcType()) { return; }\n        if (! config.data_selection_enabled) { return; } // do nothing if not selectable\n        $$.main.select('.' + CLASS.dragarea)\n            .transition().duration(100)\n            .style('opacity', 0)\n            .remove();\n        $$.main.selectAll('.' + CLASS.shape)\n            .classed(CLASS.INCLUDED, false);\n        $$.dragging = false;\n    };\n\n    c3_chart_internal_fn.selectPoint = function (target, d, i) {\n        var $$ = this, config = $$.config,\n            cx = (config.axis_rotated ? $$.circleY : $$.circleX).bind($$),\n            cy = (config.axis_rotated ? $$.circleX : $$.circleY).bind($$),\n            r = $$.pointSelectR.bind($$);\n        config.data_onselected.call($$.api, d, target.node());\n        // add selected-circle on low layer g\n        $$.main.select('.' + CLASS.selectedCircles + $$.getTargetSelectorSuffix(d.id)).selectAll('.' + CLASS.selectedCircle + '-' + i)\n            .data([d])\n            .enter().append('circle')\n            .attr(\"class\", function () { return $$.generateClass(CLASS.selectedCircle, i); })\n            .attr(\"cx\", cx)\n            .attr(\"cy\", cy)\n            .attr(\"stroke\", function () { return $$.color(d); })\n            .attr(\"r\", function (d) { return $$.pointSelectR(d) * 1.4; })\n            .transition().duration(100)\n            .attr(\"r\", r);\n    };\n    c3_chart_internal_fn.unselectPoint = function (target, d, i) {\n        var $$ = this;\n        $$.config.data_onunselected.call($$.api, d, target.node());\n        // remove selected-circle from low layer g\n        $$.main.select('.' + CLASS.selectedCircles + $$.getTargetSelectorSuffix(d.id)).selectAll('.' + CLASS.selectedCircle + '-' + i)\n            .transition().duration(100).attr('r', 0)\n            .remove();\n    };\n    c3_chart_internal_fn.togglePoint = function (selected, target, d, i) {\n        selected ? this.selectPoint(target, d, i) : this.unselectPoint(target, d, i);\n    };\n    c3_chart_internal_fn.selectPath = function (target, d) {\n        var $$ = this;\n        $$.config.data_onselected.call($$, d, target.node());\n        if ($$.config.interaction_brighten) {\n            target.transition().duration(100)\n                .style(\"fill\", function () { return $$.d3.rgb($$.color(d)).brighter(0.75); });\n        }\n    };\n    c3_chart_internal_fn.unselectPath = function (target, d) {\n        var $$ = this;\n        $$.config.data_onunselected.call($$, d, target.node());\n        if ($$.config.interaction_brighten) {\n            target.transition().duration(100)\n                .style(\"fill\", function () { return $$.color(d); });\n        }\n    };\n    c3_chart_internal_fn.togglePath = function (selected, target, d, i) {\n        selected ? this.selectPath(target, d, i) : this.unselectPath(target, d, i);\n    };\n    c3_chart_internal_fn.getToggle = function (that, d) {\n        var $$ = this, toggle;\n        if (that.nodeName === 'circle') {\n            if ($$.isStepType(d)) {\n                // circle is hidden in step chart, so treat as within the click area\n                toggle = function () {}; // TODO: how to select step chart?\n            } else {\n                toggle = $$.togglePoint;\n            }\n        }\n        else if (that.nodeName === 'path') {\n            toggle = $$.togglePath;\n        }\n        return toggle;\n    };\n    c3_chart_internal_fn.toggleShape = function (that, d, i) {\n        var $$ = this, d3 = $$.d3, config = $$.config,\n            shape = d3.select(that), isSelected = shape.classed(CLASS.SELECTED),\n            toggle = $$.getToggle(that, d).bind($$);\n\n        if (config.data_selection_enabled && config.data_selection_isselectable(d)) {\n            if (!config.data_selection_multiple) {\n                $$.main.selectAll('.' + CLASS.shapes + (config.data_selection_grouped ? $$.getTargetSelectorSuffix(d.id) : \"\")).selectAll('.' + CLASS.shape).each(function (d, i) {\n                    var shape = d3.select(this);\n                    if (shape.classed(CLASS.SELECTED)) { toggle(false, shape.classed(CLASS.SELECTED, false), d, i); }\n                });\n            }\n            shape.classed(CLASS.SELECTED, !isSelected);\n            toggle(!isSelected, shape, d, i);\n        }\n    };\n\n    c3_chart_internal_fn.initBrush = function () {\n        var $$ = this, d3 = $$.d3;\n        $$.brush = d3.svg.brush().on(\"brush\", function () { $$.redrawForBrush(); });\n        $$.brush.update = function () {\n            if ($$.context) { $$.context.select('.' + CLASS.brush).call(this); }\n            return this;\n        };\n        $$.brush.scale = function (scale) {\n            return $$.config.axis_rotated ? this.y(scale) : this.x(scale);\n        };\n    };\n    c3_chart_internal_fn.initSubchart = function () {\n        var $$ = this, config = $$.config,\n            context = $$.context = $$.svg.append(\"g\").attr(\"transform\", $$.getTranslate('context')),\n            visibility = config.subchart_show ? 'visible' : 'hidden';\n\n        context.style('visibility', visibility);\n\n        // Define g for chart area\n        context.append('g')\n            .attr(\"clip-path\", $$.clipPathForSubchart)\n            .attr('class', CLASS.chart);\n\n        // Define g for bar chart area\n        context.select('.' + CLASS.chart).append(\"g\")\n            .attr(\"class\", CLASS.chartBars);\n\n        // Define g for line chart area\n        context.select('.' + CLASS.chart).append(\"g\")\n            .attr(\"class\", CLASS.chartLines);\n\n        // Add extent rect for Brush\n        context.append(\"g\")\n            .attr(\"clip-path\", $$.clipPath)\n            .attr(\"class\", CLASS.brush)\n            .call($$.brush);\n\n        // ATTENTION: This must be called AFTER chart added\n        // Add Axis\n        $$.axes.subx = context.append(\"g\")\n            .attr(\"class\", CLASS.axisX)\n            .attr(\"transform\", $$.getTranslate('subx'))\n            .attr(\"clip-path\", config.axis_rotated ? \"\" : $$.clipPathForXAxis)\n            .style(\"visibility\", config.subchart_axis_x_show ? visibility : 'hidden');\n    };\n    c3_chart_internal_fn.updateTargetsForSubchart = function (targets) {\n        var $$ = this, context = $$.context, config = $$.config,\n            contextLineEnter, contextLineUpdate, contextBarEnter, contextBarUpdate,\n            classChartBar = $$.classChartBar.bind($$),\n            classBars = $$.classBars.bind($$),\n            classChartLine = $$.classChartLine.bind($$),\n            classLines = $$.classLines.bind($$),\n            classAreas = $$.classAreas.bind($$);\n\n        if (config.subchart_show) {\n            //-- Bar --//\n            contextBarUpdate = context.select('.' + CLASS.chartBars).selectAll('.' + CLASS.chartBar)\n                .data(targets)\n                .attr('class', classChartBar);\n            contextBarEnter = contextBarUpdate.enter().append('g')\n                .style('opacity', 0)\n                .attr('class', classChartBar);\n            // Bars for each data\n            contextBarEnter.append('g')\n                .attr(\"class\", classBars);\n\n            //-- Line --//\n            contextLineUpdate = context.select('.' + CLASS.chartLines).selectAll('.' + CLASS.chartLine)\n                .data(targets)\n                .attr('class', classChartLine);\n            contextLineEnter = contextLineUpdate.enter().append('g')\n                .style('opacity', 0)\n                .attr('class', classChartLine);\n            // Lines for each data\n            contextLineEnter.append(\"g\")\n                .attr(\"class\", classLines);\n            // Area\n            contextLineEnter.append(\"g\")\n                .attr(\"class\", classAreas);\n\n            //-- Brush --//\n            context.selectAll('.' + CLASS.brush + ' rect')\n                .attr(config.axis_rotated ? \"width\" : \"height\", config.axis_rotated ? $$.width2 : $$.height2);\n        }\n    };\n    c3_chart_internal_fn.updateBarForSubchart = function (durationForExit) {\n        var $$ = this;\n        $$.contextBar = $$.context.selectAll('.' + CLASS.bars).selectAll('.' + CLASS.bar)\n            .data($$.barData.bind($$));\n        $$.contextBar.enter().append('path')\n            .attr(\"class\", $$.classBar.bind($$))\n            .style(\"stroke\", 'none')\n            .style(\"fill\", $$.color);\n        $$.contextBar\n            .style(\"opacity\", $$.initialOpacity.bind($$));\n        $$.contextBar.exit().transition().duration(durationForExit)\n            .style('opacity', 0)\n            .remove();\n    };\n    c3_chart_internal_fn.redrawBarForSubchart = function (drawBarOnSub, withTransition, duration) {\n        (withTransition ? this.contextBar.transition(Math.random().toString()).duration(duration) : this.contextBar)\n            .attr('d', drawBarOnSub)\n            .style('opacity', 1);\n    };\n    c3_chart_internal_fn.updateLineForSubchart = function (durationForExit) {\n        var $$ = this;\n        $$.contextLine = $$.context.selectAll('.' + CLASS.lines).selectAll('.' + CLASS.line)\n            .data($$.lineData.bind($$));\n        $$.contextLine.enter().append('path')\n            .attr('class', $$.classLine.bind($$))\n            .style('stroke', $$.color);\n        $$.contextLine\n            .style(\"opacity\", $$.initialOpacity.bind($$));\n        $$.contextLine.exit().transition().duration(durationForExit)\n            .style('opacity', 0)\n            .remove();\n    };\n    c3_chart_internal_fn.redrawLineForSubchart = function (drawLineOnSub, withTransition, duration) {\n        (withTransition ? this.contextLine.transition(Math.random().toString()).duration(duration) : this.contextLine)\n            .attr(\"d\", drawLineOnSub)\n            .style('opacity', 1);\n    };\n    c3_chart_internal_fn.updateAreaForSubchart = function (durationForExit) {\n        var $$ = this, d3 = $$.d3;\n        $$.contextArea = $$.context.selectAll('.' + CLASS.areas).selectAll('.' + CLASS.area)\n            .data($$.lineData.bind($$));\n        $$.contextArea.enter().append('path')\n            .attr(\"class\", $$.classArea.bind($$))\n            .style(\"fill\", $$.color)\n            .style(\"opacity\", function () { $$.orgAreaOpacity = +d3.select(this).style('opacity'); return 0; });\n        $$.contextArea\n            .style(\"opacity\", 0);\n        $$.contextArea.exit().transition().duration(durationForExit)\n            .style('opacity', 0)\n            .remove();\n    };\n    c3_chart_internal_fn.redrawAreaForSubchart = function (drawAreaOnSub, withTransition, duration) {\n        (withTransition ? this.contextArea.transition(Math.random().toString()).duration(duration) : this.contextArea)\n            .attr(\"d\", drawAreaOnSub)\n            .style(\"fill\", this.color)\n            .style(\"opacity\", this.orgAreaOpacity);\n    };\n    c3_chart_internal_fn.redrawSubchart = function (withSubchart, transitions, duration, durationForExit, areaIndices, barIndices, lineIndices) {\n        var $$ = this, d3 = $$.d3, config = $$.config,\n            drawAreaOnSub, drawBarOnSub, drawLineOnSub;\n\n        $$.context.style('visibility', config.subchart_show ? 'visible' : 'hidden');\n\n        // subchart\n        if (config.subchart_show) {\n            // reflect main chart to extent on subchart if zoomed\n            if (d3.event && d3.event.type === 'zoom') {\n                $$.brush.extent($$.x.orgDomain()).update();\n            }\n            // update subchart elements if needed\n            if (withSubchart) {\n\n                // extent rect\n                if (!$$.brush.empty()) {\n                    $$.brush.extent($$.x.orgDomain()).update();\n                }\n                // setup drawer - MEMO: this must be called after axis updated\n                drawAreaOnSub = $$.generateDrawArea(areaIndices, true);\n                drawBarOnSub = $$.generateDrawBar(barIndices, true);\n                drawLineOnSub = $$.generateDrawLine(lineIndices, true);\n\n                $$.updateBarForSubchart(duration);\n                $$.updateLineForSubchart(duration);\n                $$.updateAreaForSubchart(duration);\n\n                $$.redrawBarForSubchart(drawBarOnSub, duration, duration);\n                $$.redrawLineForSubchart(drawLineOnSub, duration, duration);\n                $$.redrawAreaForSubchart(drawAreaOnSub, duration, duration);\n            }\n        }\n    };\n    c3_chart_internal_fn.redrawForBrush = function () {\n        var $$ = this, x = $$.x;\n        $$.redraw({\n            withTransition: false,\n            withY: $$.config.zoom_rescale,\n            withSubchart: false,\n            withUpdateXDomain: true,\n            withDimension: false\n        });\n        $$.config.subchart_onbrush.call($$.api, x.orgDomain());\n    };\n    c3_chart_internal_fn.transformContext = function (withTransition, transitions) {\n        var $$ = this, subXAxis;\n        if (transitions && transitions.axisSubX) {\n            subXAxis = transitions.axisSubX;\n        } else {\n            subXAxis = $$.context.select('.' + CLASS.axisX);\n            if (withTransition) { subXAxis = subXAxis.transition(); }\n        }\n        $$.context.attr(\"transform\", $$.getTranslate('context'));\n        subXAxis.attr(\"transform\", $$.getTranslate('subx'));\n    };\n    c3_chart_internal_fn.getDefaultExtent = function () {\n        var $$ = this, config = $$.config,\n            extent = isFunction(config.axis_x_extent) ? config.axis_x_extent($$.getXDomain($$.data.targets)) : config.axis_x_extent;\n        if ($$.isTimeSeries()) {\n            extent = [$$.parseDate(extent[0]), $$.parseDate(extent[1])];\n        }\n        return extent;\n    };\n\n    c3_chart_internal_fn.initZoom = function () {\n        var $$ = this, d3 = $$.d3, config = $$.config, startEvent;\n\n        $$.zoom = d3.behavior.zoom()\n            .on(\"zoomstart\", function () {\n                startEvent = d3.event.sourceEvent;\n                $$.zoom.altDomain = d3.event.sourceEvent.altKey ? $$.x.orgDomain() : null;\n                config.zoom_onzoomstart.call($$.api, d3.event.sourceEvent);\n            })\n            .on(\"zoom\", function () {\n                $$.redrawForZoom.call($$);\n            })\n            .on('zoomend', function () {\n                var event = d3.event.sourceEvent;\n                // if click, do nothing. otherwise, click interaction will be canceled.\n                if (event && startEvent.clientX === event.clientX && startEvent.clientY === event.clientY) {\n                    return;\n                }\n                $$.redrawEventRect();\n                $$.updateZoom();\n                config.zoom_onzoomend.call($$.api, $$.x.orgDomain());\n            });\n        $$.zoom.scale = function (scale) {\n            return config.axis_rotated ? this.y(scale) : this.x(scale);\n        };\n        $$.zoom.orgScaleExtent = function () {\n            var extent = config.zoom_extent ? config.zoom_extent : [1, 10];\n            return [extent[0], Math.max($$.getMaxDataCount() / extent[1], extent[1])];\n        };\n        $$.zoom.updateScaleExtent = function () {\n            var ratio = diffDomain($$.x.orgDomain()) / diffDomain($$.getZoomDomain()),\n                extent = this.orgScaleExtent();\n            this.scaleExtent([extent[0] * ratio, extent[1] * ratio]);\n            return this;\n        };\n    };\n    c3_chart_internal_fn.getZoomDomain = function () {\n        var $$ = this, config = $$.config, d3 = $$.d3,\n            min = d3.min([$$.orgXDomain[0], config.zoom_x_min]),\n            max = d3.max([$$.orgXDomain[1], config.zoom_x_max]);\n        return [min, max];\n    };\n    c3_chart_internal_fn.updateZoom = function () {\n        var $$ = this, z = $$.config.zoom_enabled ? $$.zoom : function () {};\n        $$.main.select('.' + CLASS.zoomRect).call(z).on(\"dblclick.zoom\", null);\n        $$.main.selectAll('.' + CLASS.eventRect).call(z).on(\"dblclick.zoom\", null);\n    };\n    c3_chart_internal_fn.redrawForZoom = function () {\n        var $$ = this, d3 = $$.d3, config = $$.config, zoom = $$.zoom, x = $$.x;\n        if (!config.zoom_enabled) {\n            return;\n        }\n        if ($$.filterTargetsToShow($$.data.targets).length === 0) {\n            return;\n        }\n        if (d3.event.sourceEvent.type === 'mousemove' && zoom.altDomain) {\n            x.domain(zoom.altDomain);\n            zoom.scale(x).updateScaleExtent();\n            return;\n        }\n        if ($$.isCategorized() && x.orgDomain()[0] === $$.orgXDomain[0]) {\n            x.domain([$$.orgXDomain[0] - 1e-10, x.orgDomain()[1]]);\n        }\n        $$.redraw({\n            withTransition: false,\n            withY: config.zoom_rescale,\n            withSubchart: false,\n            withEventRect: false,\n            withDimension: false\n        });\n        if (d3.event.sourceEvent.type === 'mousemove') {\n            $$.cancelClick = true;\n        }\n        config.zoom_onzoom.call($$.api, x.orgDomain());\n    };\n\n    c3_chart_internal_fn.generateColor = function () {\n        var $$ = this, config = $$.config, d3 = $$.d3,\n            colors = config.data_colors,\n            pattern = notEmpty(config.color_pattern) ? config.color_pattern : d3.scale.category10().range(),\n            callback = config.data_color,\n            ids = [];\n\n        return function (d) {\n            var id = d.id || (d.data && d.data.id) || d, color;\n\n            // if callback function is provided\n            if (colors[id] instanceof Function) {\n                color = colors[id](d);\n            }\n            // if specified, choose that color\n            else if (colors[id]) {\n                color = colors[id];\n            }\n            // if not specified, choose from pattern\n            else {\n                if (ids.indexOf(id) < 0) { ids.push(id); }\n                color = pattern[ids.indexOf(id) % pattern.length];\n                colors[id] = color;\n            }\n            return callback instanceof Function ? callback(color, d) : color;\n        };\n    };\n    c3_chart_internal_fn.generateLevelColor = function () {\n        var $$ = this, config = $$.config,\n            colors = config.color_pattern,\n            threshold = config.color_threshold,\n            asValue = threshold.unit === 'value',\n            values = threshold.values && threshold.values.length ? threshold.values : [],\n            max = threshold.max || 100;\n        return notEmpty(config.color_threshold) ? function (value) {\n            var i, v, color = colors[colors.length - 1];\n            for (i = 0; i < values.length; i++) {\n                v = asValue ? value : (value * 100 / max);\n                if (v < values[i]) {\n                    color = colors[i];\n                    break;\n                }\n            }\n            return color;\n        } : null;\n    };\n\n    c3_chart_internal_fn.getYFormat = function (forArc) {\n        var $$ = this,\n            formatForY = forArc && !$$.hasType('gauge') ? $$.defaultArcValueFormat : $$.yFormat,\n            formatForY2 = forArc && !$$.hasType('gauge') ? $$.defaultArcValueFormat : $$.y2Format;\n        return function (v, ratio, id) {\n            var format = $$.axis.getId(id) === 'y2' ? formatForY2 : formatForY;\n            return format.call($$, v, ratio);\n        };\n    };\n    c3_chart_internal_fn.yFormat = function (v) {\n        var $$ = this, config = $$.config,\n            format = config.axis_y_tick_format ? config.axis_y_tick_format : $$.defaultValueFormat;\n        return format(v);\n    };\n    c3_chart_internal_fn.y2Format = function (v) {\n        var $$ = this, config = $$.config,\n            format = config.axis_y2_tick_format ? config.axis_y2_tick_format : $$.defaultValueFormat;\n        return format(v);\n    };\n    c3_chart_internal_fn.defaultValueFormat = function (v) {\n        return isValue(v) ? +v : \"\";\n    };\n    c3_chart_internal_fn.defaultArcValueFormat = function (v, ratio) {\n        return (ratio * 100).toFixed(1) + '%';\n    };\n    c3_chart_internal_fn.dataLabelFormat = function (targetId) {\n        var $$ = this, data_labels = $$.config.data_labels,\n            format, defaultFormat = function (v) { return isValue(v) ? +v : \"\"; };\n        // find format according to axis id\n        if (typeof data_labels.format === 'function') {\n            format = data_labels.format;\n        } else if (typeof data_labels.format === 'object') {\n            if (data_labels.format[targetId]) {\n                format = data_labels.format[targetId] === true ? defaultFormat : data_labels.format[targetId];\n            } else {\n                format = function () { return ''; };\n            }\n        } else {\n            format = defaultFormat;\n        }\n        return format;\n    };\n\n    c3_chart_internal_fn.hasCaches = function (ids) {\n        for (var i = 0; i < ids.length; i++) {\n            if (! (ids[i] in this.cache)) { return false; }\n        }\n        return true;\n    };\n    c3_chart_internal_fn.addCache = function (id, target) {\n        this.cache[id] = this.cloneTarget(target);\n    };\n    c3_chart_internal_fn.getCaches = function (ids) {\n        var targets = [], i;\n        for (i = 0; i < ids.length; i++) {\n            if (ids[i] in this.cache) { targets.push(this.cloneTarget(this.cache[ids[i]])); }\n        }\n        return targets;\n    };\n\n    var CLASS = c3_chart_internal_fn.CLASS = {\n        target: 'c3-target',\n        chart: 'c3-chart',\n        chartLine: 'c3-chart-line',\n        chartLines: 'c3-chart-lines',\n        chartBar: 'c3-chart-bar',\n        chartBars: 'c3-chart-bars',\n        chartText: 'c3-chart-text',\n        chartTexts: 'c3-chart-texts',\n        chartArc: 'c3-chart-arc',\n        chartArcs: 'c3-chart-arcs',\n        chartArcsTitle: 'c3-chart-arcs-title',\n        chartArcsBackground: 'c3-chart-arcs-background',\n        chartArcsGaugeUnit: 'c3-chart-arcs-gauge-unit',\n        chartArcsGaugeMax: 'c3-chart-arcs-gauge-max',\n        chartArcsGaugeMin: 'c3-chart-arcs-gauge-min',\n        selectedCircle: 'c3-selected-circle',\n        selectedCircles: 'c3-selected-circles',\n        eventRect: 'c3-event-rect',\n        eventRects: 'c3-event-rects',\n        eventRectsSingle: 'c3-event-rects-single',\n        eventRectsMultiple: 'c3-event-rects-multiple',\n        zoomRect: 'c3-zoom-rect',\n        brush: 'c3-brush',\n        focused: 'c3-focused',\n        defocused: 'c3-defocused',\n        region: 'c3-region',\n        regions: 'c3-regions',\n        title: 'c3-title',\n        tooltipContainer: 'c3-tooltip-container',\n        tooltip: 'c3-tooltip',\n        tooltipName: 'c3-tooltip-name',\n        shape: 'c3-shape',\n        shapes: 'c3-shapes',\n        line: 'c3-line',\n        lines: 'c3-lines',\n        bar: 'c3-bar',\n        bars: 'c3-bars',\n        circle: 'c3-circle',\n        circles: 'c3-circles',\n        arc: 'c3-arc',\n        arcs: 'c3-arcs',\n        area: 'c3-area',\n        areas: 'c3-areas',\n        empty: 'c3-empty',\n        text: 'c3-text',\n        texts: 'c3-texts',\n        gaugeValue: 'c3-gauge-value',\n        grid: 'c3-grid',\n        gridLines: 'c3-grid-lines',\n        xgrid: 'c3-xgrid',\n        xgrids: 'c3-xgrids',\n        xgridLine: 'c3-xgrid-line',\n        xgridLines: 'c3-xgrid-lines',\n        xgridFocus: 'c3-xgrid-focus',\n        ygrid: 'c3-ygrid',\n        ygrids: 'c3-ygrids',\n        ygridLine: 'c3-ygrid-line',\n        ygridLines: 'c3-ygrid-lines',\n        axis: 'c3-axis',\n        axisX: 'c3-axis-x',\n        axisXLabel: 'c3-axis-x-label',\n        axisY: 'c3-axis-y',\n        axisYLabel: 'c3-axis-y-label',\n        axisY2: 'c3-axis-y2',\n        axisY2Label: 'c3-axis-y2-label',\n        legendBackground: 'c3-legend-background',\n        legendItem: 'c3-legend-item',\n        legendItemEvent: 'c3-legend-item-event',\n        legendItemTile: 'c3-legend-item-tile',\n        legendItemHidden: 'c3-legend-item-hidden',\n        legendItemFocused: 'c3-legend-item-focused',\n        dragarea: 'c3-dragarea',\n        EXPANDED: '_expanded_',\n        SELECTED: '_selected_',\n        INCLUDED: '_included_'\n    };\n    c3_chart_internal_fn.generateClass = function (prefix, targetId) {\n        return \" \" + prefix + \" \" + prefix + this.getTargetSelectorSuffix(targetId);\n    };\n    c3_chart_internal_fn.classText = function (d) {\n        return this.generateClass(CLASS.text, d.index);\n    };\n    c3_chart_internal_fn.classTexts = function (d) {\n        return this.generateClass(CLASS.texts, d.id);\n    };\n    c3_chart_internal_fn.classShape = function (d) {\n        return this.generateClass(CLASS.shape, d.index);\n    };\n    c3_chart_internal_fn.classShapes = function (d) {\n        return this.generateClass(CLASS.shapes, d.id);\n    };\n    c3_chart_internal_fn.classLine = function (d) {\n        return this.classShape(d) + this.generateClass(CLASS.line, d.id);\n    };\n    c3_chart_internal_fn.classLines = function (d) {\n        return this.classShapes(d) + this.generateClass(CLASS.lines, d.id);\n    };\n    c3_chart_internal_fn.classCircle = function (d) {\n        return this.classShape(d) + this.generateClass(CLASS.circle, d.index);\n    };\n    c3_chart_internal_fn.classCircles = function (d) {\n        return this.classShapes(d) + this.generateClass(CLASS.circles, d.id);\n    };\n    c3_chart_internal_fn.classBar = function (d) {\n        return this.classShape(d) + this.generateClass(CLASS.bar, d.index);\n    };\n    c3_chart_internal_fn.classBars = function (d) {\n        return this.classShapes(d) + this.generateClass(CLASS.bars, d.id);\n    };\n    c3_chart_internal_fn.classArc = function (d) {\n        return this.classShape(d.data) + this.generateClass(CLASS.arc, d.data.id);\n    };\n    c3_chart_internal_fn.classArcs = function (d) {\n        return this.classShapes(d.data) + this.generateClass(CLASS.arcs, d.data.id);\n    };\n    c3_chart_internal_fn.classArea = function (d) {\n        return this.classShape(d) + this.generateClass(CLASS.area, d.id);\n    };\n    c3_chart_internal_fn.classAreas = function (d) {\n        return this.classShapes(d) + this.generateClass(CLASS.areas, d.id);\n    };\n    c3_chart_internal_fn.classRegion = function (d, i) {\n        return this.generateClass(CLASS.region, i) + ' ' + ('class' in d ? d['class'] : '');\n    };\n    c3_chart_internal_fn.classEvent = function (d) {\n        return this.generateClass(CLASS.eventRect, d.index);\n    };\n    c3_chart_internal_fn.classTarget = function (id) {\n        var $$ = this;\n        var additionalClassSuffix = $$.config.data_classes[id], additionalClass = '';\n        if (additionalClassSuffix) {\n            additionalClass = ' ' + CLASS.target + '-' + additionalClassSuffix;\n        }\n        return $$.generateClass(CLASS.target, id) + additionalClass;\n    };\n    c3_chart_internal_fn.classFocus = function (d) {\n        return this.classFocused(d) + this.classDefocused(d);\n    };\n    c3_chart_internal_fn.classFocused = function (d) {\n        return ' ' + (this.focusedTargetIds.indexOf(d.id) >= 0 ? CLASS.focused : '');\n    };\n    c3_chart_internal_fn.classDefocused = function (d) {\n        return ' ' + (this.defocusedTargetIds.indexOf(d.id) >= 0 ? CLASS.defocused : '');\n    };\n    c3_chart_internal_fn.classChartText = function (d) {\n        return CLASS.chartText + this.classTarget(d.id);\n    };\n    c3_chart_internal_fn.classChartLine = function (d) {\n        return CLASS.chartLine + this.classTarget(d.id);\n    };\n    c3_chart_internal_fn.classChartBar = function (d) {\n        return CLASS.chartBar + this.classTarget(d.id);\n    };\n    c3_chart_internal_fn.classChartArc = function (d) {\n        return CLASS.chartArc + this.classTarget(d.data.id);\n    };\n    c3_chart_internal_fn.getTargetSelectorSuffix = function (targetId) {\n        return targetId || targetId === 0 ? ('-' + targetId).replace(/[\\s?!@#$%^&*()_=+,.<>'\":;\\[\\]\\/|~`{}\\\\]/g, '-') : '';\n    };\n    c3_chart_internal_fn.selectorTarget = function (id, prefix) {\n        return (prefix || '') + '.' + CLASS.target + this.getTargetSelectorSuffix(id);\n    };\n    c3_chart_internal_fn.selectorTargets = function (ids, prefix) {\n        var $$ = this;\n        ids = ids || [];\n        return ids.length ? ids.map(function (id) { return $$.selectorTarget(id, prefix); }) : null;\n    };\n    c3_chart_internal_fn.selectorLegend = function (id) {\n        return '.' + CLASS.legendItem + this.getTargetSelectorSuffix(id);\n    };\n    c3_chart_internal_fn.selectorLegends = function (ids) {\n        var $$ = this;\n        return ids && ids.length ? ids.map(function (id) { return $$.selectorLegend(id); }) : null;\n    };\n\n    var isValue = c3_chart_internal_fn.isValue = function (v) {\n        return v || v === 0;\n    },\n        isFunction = c3_chart_internal_fn.isFunction = function (o) {\n            return typeof o === 'function';\n        },\n        isString = c3_chart_internal_fn.isString = function (o) {\n            return typeof o === 'string';\n        },\n        isUndefined = c3_chart_internal_fn.isUndefined = function (v) {\n            return typeof v === 'undefined';\n        },\n        isDefined = c3_chart_internal_fn.isDefined = function (v) {\n            return typeof v !== 'undefined';\n        },\n        ceil10 = c3_chart_internal_fn.ceil10 = function (v) {\n            return Math.ceil(v / 10) * 10;\n        },\n        asHalfPixel = c3_chart_internal_fn.asHalfPixel = function (n) {\n            return Math.ceil(n) + 0.5;\n        },\n        diffDomain = c3_chart_internal_fn.diffDomain = function (d) {\n            return d[1] - d[0];\n        },\n        isEmpty = c3_chart_internal_fn.isEmpty = function (o) {\n            return typeof o === 'undefined' || o === null || (isString(o) && o.length === 0) || (typeof o === 'object' && Object.keys(o).length === 0);\n        },\n        notEmpty = c3_chart_internal_fn.notEmpty = function (o) {\n            return !c3_chart_internal_fn.isEmpty(o);\n        },\n        getOption = c3_chart_internal_fn.getOption = function (options, key, defaultValue) {\n            return isDefined(options[key]) ? options[key] : defaultValue;\n        },\n        hasValue = c3_chart_internal_fn.hasValue = function (dict, value) {\n            var found = false;\n            Object.keys(dict).forEach(function (key) {\n                if (dict[key] === value) { found = true; }\n            });\n            return found;\n        },\n        sanitise = c3_chart_internal_fn.sanitise = function (str) {\n            return typeof str === 'string' ? str.replace(/</g, '&lt;').replace(/>/g, '&gt;') : str;\n        },\n        getPathBox = c3_chart_internal_fn.getPathBox = function (path) {\n            var box = path.getBoundingClientRect(),\n                items = [path.pathSegList.getItem(0), path.pathSegList.getItem(1)],\n                minX = items[0].x, minY = Math.min(items[0].y, items[1].y);\n            return {x: minX, y: minY, width: box.width, height: box.height};\n        };\n\n    c3_chart_fn.focus = function (targetIds) {\n        var $$ = this.internal, candidates;\n\n        targetIds = $$.mapToTargetIds(targetIds);\n        candidates = $$.svg.selectAll($$.selectorTargets(targetIds.filter($$.isTargetToShow, $$))),\n\n        this.revert();\n        this.defocus();\n        candidates.classed(CLASS.focused, true).classed(CLASS.defocused, false);\n        if ($$.hasArcType()) {\n            $$.expandArc(targetIds);\n        }\n        $$.toggleFocusLegend(targetIds, true);\n\n        $$.focusedTargetIds = targetIds;\n        $$.defocusedTargetIds = $$.defocusedTargetIds.filter(function (id) {\n            return targetIds.indexOf(id) < 0;\n        });\n    };\n\n    c3_chart_fn.defocus = function (targetIds) {\n        var $$ = this.internal, candidates;\n\n        targetIds = $$.mapToTargetIds(targetIds);\n        candidates = $$.svg.selectAll($$.selectorTargets(targetIds.filter($$.isTargetToShow, $$))),\n\n        candidates.classed(CLASS.focused, false).classed(CLASS.defocused, true);\n        if ($$.hasArcType()) {\n            $$.unexpandArc(targetIds);\n        }\n        $$.toggleFocusLegend(targetIds, false);\n\n        $$.focusedTargetIds = $$.focusedTargetIds.filter(function (id) {\n            return targetIds.indexOf(id) < 0;\n        });\n        $$.defocusedTargetIds = targetIds;\n    };\n\n    c3_chart_fn.revert = function (targetIds) {\n        var $$ = this.internal, candidates;\n\n        targetIds = $$.mapToTargetIds(targetIds);\n        candidates = $$.svg.selectAll($$.selectorTargets(targetIds)); // should be for all targets\n\n        candidates.classed(CLASS.focused, false).classed(CLASS.defocused, false);\n        if ($$.hasArcType()) {\n            $$.unexpandArc(targetIds);\n        }\n        if ($$.config.legend_show) {\n            $$.showLegend(targetIds.filter($$.isLegendToShow.bind($$)));\n            $$.legend.selectAll($$.selectorLegends(targetIds))\n                .filter(function () {\n                    return $$.d3.select(this).classed(CLASS.legendItemFocused);\n                })\n                .classed(CLASS.legendItemFocused, false);\n        }\n\n        $$.focusedTargetIds = [];\n        $$.defocusedTargetIds = [];\n    };\n\n    c3_chart_fn.show = function (targetIds, options) {\n        var $$ = this.internal, targets;\n\n        targetIds = $$.mapToTargetIds(targetIds);\n        options = options || {};\n\n        $$.removeHiddenTargetIds(targetIds);\n        targets = $$.svg.selectAll($$.selectorTargets(targetIds));\n\n        targets.transition()\n            .style('opacity', 1, 'important')\n            .call($$.endall, function () {\n                targets.style('opacity', null).style('opacity', 1);\n            });\n\n        if (options.withLegend) {\n            $$.showLegend(targetIds);\n        }\n\n        $$.redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true, withLegend: true});\n    };\n\n    c3_chart_fn.hide = function (targetIds, options) {\n        var $$ = this.internal, targets;\n\n        targetIds = $$.mapToTargetIds(targetIds);\n        options = options || {};\n\n        $$.addHiddenTargetIds(targetIds);\n        targets = $$.svg.selectAll($$.selectorTargets(targetIds));\n\n        targets.transition()\n            .style('opacity', 0, 'important')\n            .call($$.endall, function () {\n                targets.style('opacity', null).style('opacity', 0);\n            });\n\n        if (options.withLegend) {\n            $$.hideLegend(targetIds);\n        }\n\n        $$.redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true, withLegend: true});\n    };\n\n    c3_chart_fn.toggle = function (targetIds, options) {\n        var that = this, $$ = this.internal;\n        $$.mapToTargetIds(targetIds).forEach(function (targetId) {\n            $$.isTargetToShow(targetId) ? that.hide(targetId, options) : that.show(targetId, options);\n        });\n    };\n\n    c3_chart_fn.zoom = function (domain) {\n        var $$ = this.internal;\n        if (domain) {\n            if ($$.isTimeSeries()) {\n                domain = domain.map(function (x) { return $$.parseDate(x); });\n            }\n            $$.brush.extent(domain);\n            $$.redraw({withUpdateXDomain: true, withY: $$.config.zoom_rescale});\n            $$.config.zoom_onzoom.call(this, $$.x.orgDomain());\n        }\n        return $$.brush.extent();\n    };\n    c3_chart_fn.zoom.enable = function (enabled) {\n        var $$ = this.internal;\n        $$.config.zoom_enabled = enabled;\n        $$.updateAndRedraw();\n    };\n    c3_chart_fn.unzoom = function () {\n        var $$ = this.internal;\n        $$.brush.clear().update();\n        $$.redraw({withUpdateXDomain: true});\n    };\n\n    c3_chart_fn.zoom.max = function (max) {\n        var $$ = this.internal, config = $$.config, d3 = $$.d3;\n        if (max === 0 || max) {\n            config.zoom_x_max = d3.max([$$.orgXDomain[1], max]);\n        }\n        else {\n            return config.zoom_x_max;\n        }\n    };\n\n    c3_chart_fn.zoom.min = function (min) {\n        var $$ = this.internal, config = $$.config, d3 = $$.d3;\n        if (min === 0 || min) {\n            config.zoom_x_min = d3.min([$$.orgXDomain[0], min]);\n        }\n        else {\n            return config.zoom_x_min;\n        }\n    };\n\n    c3_chart_fn.zoom.range = function (range) {\n        if (arguments.length) {\n            if (isDefined(range.max)) { this.domain.max(range.max); }\n            if (isDefined(range.min)) { this.domain.min(range.min); }\n        } else {\n            return {\n                max: this.domain.max(),\n                min: this.domain.min()\n            };\n        }\n    };\n\n    c3_chart_fn.load = function (args) {\n        var $$ = this.internal, config = $$.config;\n        // update xs if specified\n        if (args.xs) {\n            $$.addXs(args.xs);\n        }\n        // update names if exists\n        if ('names' in args) {\n            c3_chart_fn.data.names.bind(this)(args.names);\n        }\n        // update classes if exists\n        if ('classes' in args) {\n            Object.keys(args.classes).forEach(function (id) {\n                config.data_classes[id] = args.classes[id];\n            });\n        }\n        // update categories if exists\n        if ('categories' in args && $$.isCategorized()) {\n            config.axis_x_categories = args.categories;\n        }\n        // update axes if exists\n        if ('axes' in args) {\n            Object.keys(args.axes).forEach(function (id) {\n                config.data_axes[id] = args.axes[id];\n            });\n        }\n        // update colors if exists\n        if ('colors' in args) {\n            Object.keys(args.colors).forEach(function (id) {\n                config.data_colors[id] = args.colors[id];\n            });\n        }\n        // use cache if exists\n        if ('cacheIds' in args && $$.hasCaches(args.cacheIds)) {\n            $$.load($$.getCaches(args.cacheIds), args.done);\n            return;\n        }\n        // unload if needed\n        if ('unload' in args) {\n            // TODO: do not unload if target will load (included in url/rows/columns)\n            $$.unload($$.mapToTargetIds((typeof args.unload === 'boolean' && args.unload) ? null : args.unload), function () {\n                $$.loadFromArgs(args);\n            });\n        } else {\n            $$.loadFromArgs(args);\n        }\n    };\n\n    c3_chart_fn.unload = function (args) {\n        var $$ = this.internal;\n        args = args || {};\n        if (args instanceof Array) {\n            args = {ids: args};\n        } else if (typeof args === 'string') {\n            args = {ids: [args]};\n        }\n        $$.unload($$.mapToTargetIds(args.ids), function () {\n            $$.redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true, withLegend: true});\n            if (args.done) { args.done(); }\n        });\n    };\n\n    c3_chart_fn.flow = function (args) {\n        var $$ = this.internal,\n            targets, data, notfoundIds = [], orgDataCount = $$.getMaxDataCount(),\n            dataCount, domain, baseTarget, baseValue, length = 0, tail = 0, diff, to;\n\n        if (args.json) {\n            data = $$.convertJsonToData(args.json, args.keys);\n        }\n        else if (args.rows) {\n            data = $$.convertRowsToData(args.rows);\n        }\n        else if (args.columns) {\n            data = $$.convertColumnsToData(args.columns);\n        }\n        else {\n            return;\n        }\n        targets = $$.convertDataToTargets(data, true);\n\n        // Update/Add data\n        $$.data.targets.forEach(function (t) {\n            var found = false, i, j;\n            for (i = 0; i < targets.length; i++) {\n                if (t.id === targets[i].id) {\n                    found = true;\n\n                    if (t.values[t.values.length - 1]) {\n                        tail = t.values[t.values.length - 1].index + 1;\n                    }\n                    length = targets[i].values.length;\n\n                    for (j = 0; j < length; j++) {\n                        targets[i].values[j].index = tail + j;\n                        if (!$$.isTimeSeries()) {\n                            targets[i].values[j].x = tail + j;\n                        }\n                    }\n                    t.values = t.values.concat(targets[i].values);\n\n                    targets.splice(i, 1);\n                    break;\n                }\n            }\n            if (!found) { notfoundIds.push(t.id); }\n        });\n\n        // Append null for not found targets\n        $$.data.targets.forEach(function (t) {\n            var i, j;\n            for (i = 0; i < notfoundIds.length; i++) {\n                if (t.id === notfoundIds[i]) {\n                    tail = t.values[t.values.length - 1].index + 1;\n                    for (j = 0; j < length; j++) {\n                        t.values.push({\n                            id: t.id,\n                            index: tail + j,\n                            x: $$.isTimeSeries() ? $$.getOtherTargetX(tail + j) : tail + j,\n                            value: null\n                        });\n                    }\n                }\n            }\n        });\n\n        // Generate null values for new target\n        if ($$.data.targets.length) {\n            targets.forEach(function (t) {\n                var i, missing = [];\n                for (i = $$.data.targets[0].values[0].index; i < tail; i++) {\n                    missing.push({\n                        id: t.id,\n                        index: i,\n                        x: $$.isTimeSeries() ? $$.getOtherTargetX(i) : i,\n                        value: null\n                    });\n                }\n                t.values.forEach(function (v) {\n                    v.index += tail;\n                    if (!$$.isTimeSeries()) {\n                        v.x += tail;\n                    }\n                });\n                t.values = missing.concat(t.values);\n            });\n        }\n        $$.data.targets = $$.data.targets.concat(targets); // add remained\n\n        // check data count because behavior needs to change when it's only one\n        dataCount = $$.getMaxDataCount();\n        baseTarget = $$.data.targets[0];\n        baseValue = baseTarget.values[0];\n\n        // Update length to flow if needed\n        if (isDefined(args.to)) {\n            length = 0;\n            to = $$.isTimeSeries() ? $$.parseDate(args.to) : args.to;\n            baseTarget.values.forEach(function (v) {\n                if (v.x < to) { length++; }\n            });\n        } else if (isDefined(args.length)) {\n            length = args.length;\n        }\n\n        // If only one data, update the domain to flow from left edge of the chart\n        if (!orgDataCount) {\n            if ($$.isTimeSeries()) {\n                if (baseTarget.values.length > 1) {\n                    diff = baseTarget.values[baseTarget.values.length - 1].x - baseValue.x;\n                } else {\n                    diff = baseValue.x - $$.getXDomain($$.data.targets)[0];\n                }\n            } else {\n                diff = 1;\n            }\n            domain = [baseValue.x - diff, baseValue.x];\n            $$.updateXDomain(null, true, true, false, domain);\n        } else if (orgDataCount === 1) {\n            if ($$.isTimeSeries()) {\n                diff = (baseTarget.values[baseTarget.values.length - 1].x - baseValue.x) / 2;\n                domain = [new Date(+baseValue.x - diff), new Date(+baseValue.x + diff)];\n                $$.updateXDomain(null, true, true, false, domain);\n            }\n        }\n\n        // Set targets\n        $$.updateTargets($$.data.targets);\n\n        // Redraw with new targets\n        $$.redraw({\n            flow: {\n                index: baseValue.index,\n                length: length,\n                duration: isValue(args.duration) ? args.duration : $$.config.transition_duration,\n                done: args.done,\n                orgDataCount: orgDataCount,\n            },\n            withLegend: true,\n            withTransition: orgDataCount > 1,\n            withTrimXDomain: false,\n            withUpdateXAxis: true,\n        });\n    };\n\n    c3_chart_internal_fn.generateFlow = function (args) {\n        var $$ = this, config = $$.config, d3 = $$.d3;\n\n        return function () {\n            var targets = args.targets,\n                flow = args.flow,\n                drawBar = args.drawBar,\n                drawLine = args.drawLine,\n                drawArea = args.drawArea,\n                cx = args.cx,\n                cy = args.cy,\n                xv = args.xv,\n                xForText = args.xForText,\n                yForText = args.yForText,\n                duration = args.duration;\n\n            var translateX, scaleX = 1, transform,\n                flowIndex = flow.index,\n                flowLength = flow.length,\n                flowStart = $$.getValueOnIndex($$.data.targets[0].values, flowIndex),\n                flowEnd = $$.getValueOnIndex($$.data.targets[0].values, flowIndex + flowLength),\n                orgDomain = $$.x.domain(), domain,\n                durationForFlow = flow.duration || duration,\n                done = flow.done || function () {},\n                wait = $$.generateWait();\n\n            var xgrid = $$.xgrid || d3.selectAll([]),\n                xgridLines = $$.xgridLines || d3.selectAll([]),\n                mainRegion = $$.mainRegion || d3.selectAll([]),\n                mainText = $$.mainText || d3.selectAll([]),\n                mainBar = $$.mainBar || d3.selectAll([]),\n                mainLine = $$.mainLine || d3.selectAll([]),\n                mainArea = $$.mainArea || d3.selectAll([]),\n                mainCircle = $$.mainCircle || d3.selectAll([]);\n\n            // set flag\n            $$.flowing = true;\n\n            // remove head data after rendered\n            $$.data.targets.forEach(function (d) {\n                d.values.splice(0, flowLength);\n            });\n\n            // update x domain to generate axis elements for flow\n            domain = $$.updateXDomain(targets, true, true);\n            // update elements related to x scale\n            if ($$.updateXGrid) { $$.updateXGrid(true); }\n\n            // generate transform to flow\n            if (!flow.orgDataCount) { // if empty\n                if ($$.data.targets[0].values.length !== 1) {\n                    translateX = $$.x(orgDomain[0]) - $$.x(domain[0]);\n                } else {\n                    if ($$.isTimeSeries()) {\n                        flowStart = $$.getValueOnIndex($$.data.targets[0].values, 0);\n                        flowEnd = $$.getValueOnIndex($$.data.targets[0].values, $$.data.targets[0].values.length - 1);\n                        translateX = $$.x(flowStart.x) - $$.x(flowEnd.x);\n                    } else {\n                        translateX = diffDomain(domain) / 2;\n                    }\n                }\n            } else if (flow.orgDataCount === 1 || (flowStart && flowStart.x) === (flowEnd && flowEnd.x)) {\n                translateX = $$.x(orgDomain[0]) - $$.x(domain[0]);\n            } else {\n                if ($$.isTimeSeries()) {\n                    translateX = ($$.x(orgDomain[0]) - $$.x(domain[0]));\n                } else {\n                    translateX = ($$.x(flowStart.x) - $$.x(flowEnd.x));\n                }\n            }\n            scaleX = (diffDomain(orgDomain) / diffDomain(domain));\n            transform = 'translate(' + translateX + ',0) scale(' + scaleX + ',1)';\n\n            $$.hideXGridFocus();\n\n            d3.transition().ease('linear').duration(durationForFlow).each(function () {\n                wait.add($$.axes.x.transition().call($$.xAxis));\n                wait.add(mainBar.transition().attr('transform', transform));\n                wait.add(mainLine.transition().attr('transform', transform));\n                wait.add(mainArea.transition().attr('transform', transform));\n                wait.add(mainCircle.transition().attr('transform', transform));\n                wait.add(mainText.transition().attr('transform', transform));\n                wait.add(mainRegion.filter($$.isRegionOnX).transition().attr('transform', transform));\n                wait.add(xgrid.transition().attr('transform', transform));\n                wait.add(xgridLines.transition().attr('transform', transform));\n            })\n            .call(wait, function () {\n                var i, shapes = [], texts = [], eventRects = [];\n\n                // remove flowed elements\n                if (flowLength) {\n                    for (i = 0; i < flowLength; i++) {\n                        shapes.push('.' + CLASS.shape + '-' + (flowIndex + i));\n                        texts.push('.' + CLASS.text + '-' + (flowIndex + i));\n                        eventRects.push('.' + CLASS.eventRect + '-' + (flowIndex + i));\n                    }\n                    $$.svg.selectAll('.' + CLASS.shapes).selectAll(shapes).remove();\n                    $$.svg.selectAll('.' + CLASS.texts).selectAll(texts).remove();\n                    $$.svg.selectAll('.' + CLASS.eventRects).selectAll(eventRects).remove();\n                    $$.svg.select('.' + CLASS.xgrid).remove();\n                }\n\n                // draw again for removing flowed elements and reverting attr\n                xgrid\n                    .attr('transform', null)\n                    .attr($$.xgridAttr);\n                xgridLines\n                    .attr('transform', null);\n                xgridLines.select('line')\n                    .attr(\"x1\", config.axis_rotated ? 0 : xv)\n                    .attr(\"x2\", config.axis_rotated ? $$.width : xv);\n                xgridLines.select('text')\n                    .attr(\"x\", config.axis_rotated ? $$.width : 0)\n                    .attr(\"y\", xv);\n                mainBar\n                    .attr('transform', null)\n                    .attr(\"d\", drawBar);\n                mainLine\n                    .attr('transform', null)\n                    .attr(\"d\", drawLine);\n                mainArea\n                    .attr('transform', null)\n                    .attr(\"d\", drawArea);\n                mainCircle\n                    .attr('transform', null)\n                    .attr(\"cx\", cx)\n                    .attr(\"cy\", cy);\n                mainText\n                    .attr('transform', null)\n                    .attr('x', xForText)\n                    .attr('y', yForText)\n                    .style('fill-opacity', $$.opacityForText.bind($$));\n                mainRegion\n                    .attr('transform', null);\n                mainRegion.select('rect').filter($$.isRegionOnX)\n                    .attr(\"x\", $$.regionX.bind($$))\n                    .attr(\"width\", $$.regionWidth.bind($$));\n\n                if (config.interaction_enabled) {\n                    $$.redrawEventRect();\n                }\n\n                // callback for end of flow\n                done();\n\n                $$.flowing = false;\n            });\n        };\n    };\n\n    c3_chart_fn.selected = function (targetId) {\n        var $$ = this.internal, d3 = $$.d3;\n        return d3.merge(\n            $$.main.selectAll('.' + CLASS.shapes + $$.getTargetSelectorSuffix(targetId)).selectAll('.' + CLASS.shape)\n                .filter(function () { return d3.select(this).classed(CLASS.SELECTED); })\n                .map(function (d) { return d.map(function (d) { var data = d.__data__; return data.data ? data.data : data; }); })\n        );\n    };\n    c3_chart_fn.select = function (ids, indices, resetOther) {\n        var $$ = this.internal, d3 = $$.d3, config = $$.config;\n        if (! config.data_selection_enabled) { return; }\n        $$.main.selectAll('.' + CLASS.shapes).selectAll('.' + CLASS.shape).each(function (d, i) {\n            var shape = d3.select(this), id = d.data ? d.data.id : d.id,\n                toggle = $$.getToggle(this, d).bind($$),\n                isTargetId = config.data_selection_grouped || !ids || ids.indexOf(id) >= 0,\n                isTargetIndex = !indices || indices.indexOf(i) >= 0,\n                isSelected = shape.classed(CLASS.SELECTED);\n            // line/area selection not supported yet\n            if (shape.classed(CLASS.line) || shape.classed(CLASS.area)) {\n                return;\n            }\n            if (isTargetId && isTargetIndex) {\n                if (config.data_selection_isselectable(d) && !isSelected) {\n                    toggle(true, shape.classed(CLASS.SELECTED, true), d, i);\n                }\n            } else if (isDefined(resetOther) && resetOther) {\n                if (isSelected) {\n                    toggle(false, shape.classed(CLASS.SELECTED, false), d, i);\n                }\n            }\n        });\n    };\n    c3_chart_fn.unselect = function (ids, indices) {\n        var $$ = this.internal, d3 = $$.d3, config = $$.config;\n        if (! config.data_selection_enabled) { return; }\n        $$.main.selectAll('.' + CLASS.shapes).selectAll('.' + CLASS.shape).each(function (d, i) {\n            var shape = d3.select(this), id = d.data ? d.data.id : d.id,\n                toggle = $$.getToggle(this, d).bind($$),\n                isTargetId = config.data_selection_grouped || !ids || ids.indexOf(id) >= 0,\n                isTargetIndex = !indices || indices.indexOf(i) >= 0,\n                isSelected = shape.classed(CLASS.SELECTED);\n            // line/area selection not supported yet\n            if (shape.classed(CLASS.line) || shape.classed(CLASS.area)) {\n                return;\n            }\n            if (isTargetId && isTargetIndex) {\n                if (config.data_selection_isselectable(d)) {\n                    if (isSelected) {\n                        toggle(false, shape.classed(CLASS.SELECTED, false), d, i);\n                    }\n                }\n            }\n        });\n    };\n\n    c3_chart_fn.transform = function (type, targetIds) {\n        var $$ = this.internal,\n            options = ['pie', 'donut'].indexOf(type) >= 0 ? {withTransform: true} : null;\n        $$.transformTo(targetIds, type, options);\n    };\n\n    c3_chart_internal_fn.transformTo = function (targetIds, type, optionsForRedraw) {\n        var $$ = this,\n            withTransitionForAxis = !$$.hasArcType(),\n            options = optionsForRedraw || {withTransitionForAxis: withTransitionForAxis};\n        options.withTransitionForTransform = false;\n        $$.transiting = false;\n        $$.setTargetType(targetIds, type);\n        $$.updateTargets($$.data.targets); // this is needed when transforming to arc\n        $$.updateAndRedraw(options);\n    };\n\n    c3_chart_fn.groups = function (groups) {\n        var $$ = this.internal, config = $$.config;\n        if (isUndefined(groups)) { return config.data_groups; }\n        config.data_groups = groups;\n        $$.redraw();\n        return config.data_groups;\n    };\n\n    c3_chart_fn.xgrids = function (grids) {\n        var $$ = this.internal, config = $$.config;\n        if (! grids) { return config.grid_x_lines; }\n        config.grid_x_lines = grids;\n        $$.redrawWithoutRescale();\n        return config.grid_x_lines;\n    };\n    c3_chart_fn.xgrids.add = function (grids) {\n        var $$ = this.internal;\n        return this.xgrids($$.config.grid_x_lines.concat(grids ? grids : []));\n    };\n    c3_chart_fn.xgrids.remove = function (params) { // TODO: multiple\n        var $$ = this.internal;\n        $$.removeGridLines(params, true);\n    };\n\n    c3_chart_fn.ygrids = function (grids) {\n        var $$ = this.internal, config = $$.config;\n        if (! grids) { return config.grid_y_lines; }\n        config.grid_y_lines = grids;\n        $$.redrawWithoutRescale();\n        return config.grid_y_lines;\n    };\n    c3_chart_fn.ygrids.add = function (grids) {\n        var $$ = this.internal;\n        return this.ygrids($$.config.grid_y_lines.concat(grids ? grids : []));\n    };\n    c3_chart_fn.ygrids.remove = function (params) { // TODO: multiple\n        var $$ = this.internal;\n        $$.removeGridLines(params, false);\n    };\n\n    c3_chart_fn.regions = function (regions) {\n        var $$ = this.internal, config = $$.config;\n        if (!regions) { return config.regions; }\n        config.regions = regions;\n        $$.redrawWithoutRescale();\n        return config.regions;\n    };\n    c3_chart_fn.regions.add = function (regions) {\n        var $$ = this.internal, config = $$.config;\n        if (!regions) { return config.regions; }\n        config.regions = config.regions.concat(regions);\n        $$.redrawWithoutRescale();\n        return config.regions;\n    };\n    c3_chart_fn.regions.remove = function (options) {\n        var $$ = this.internal, config = $$.config,\n            duration, classes, regions;\n\n        options = options || {};\n        duration = $$.getOption(options, \"duration\", config.transition_duration);\n        classes = $$.getOption(options, \"classes\", [CLASS.region]);\n\n        regions = $$.main.select('.' + CLASS.regions).selectAll(classes.map(function (c) { return '.' + c; }));\n        (duration ? regions.transition().duration(duration) : regions)\n            .style('opacity', 0)\n            .remove();\n\n        config.regions = config.regions.filter(function (region) {\n            var found = false;\n            if (!region['class']) {\n                return true;\n            }\n            region['class'].split(' ').forEach(function (c) {\n                if (classes.indexOf(c) >= 0) { found = true; }\n            });\n            return !found;\n        });\n\n        return config.regions;\n    };\n\n    c3_chart_fn.data = function (targetIds) {\n        var targets = this.internal.data.targets;\n        return typeof targetIds === 'undefined' ? targets : targets.filter(function (t) {\n            return [].concat(targetIds).indexOf(t.id) >= 0;\n        });\n    };\n    c3_chart_fn.data.shown = function (targetIds) {\n        return this.internal.filterTargetsToShow(this.data(targetIds));\n    };\n    c3_chart_fn.data.values = function (targetId) {\n        var targets, values = null;\n        if (targetId) {\n            targets = this.data(targetId);\n            values = targets[0] ? targets[0].values.map(function (d) { return d.value; }) : null;\n        }\n        return values;\n    };\n    c3_chart_fn.data.names = function (names) {\n        this.internal.clearLegendItemTextBoxCache();\n        return this.internal.updateDataAttributes('names', names);\n    };\n    c3_chart_fn.data.colors = function (colors) {\n        return this.internal.updateDataAttributes('colors', colors);\n    };\n    c3_chart_fn.data.axes = function (axes) {\n        return this.internal.updateDataAttributes('axes', axes);\n    };\n\n    c3_chart_fn.category = function (i, category) {\n        var $$ = this.internal, config = $$.config;\n        if (arguments.length > 1) {\n            config.axis_x_categories[i] = category;\n            $$.redraw();\n        }\n        return config.axis_x_categories[i];\n    };\n    c3_chart_fn.categories = function (categories) {\n        var $$ = this.internal, config = $$.config;\n        if (!arguments.length) { return config.axis_x_categories; }\n        config.axis_x_categories = categories;\n        $$.redraw();\n        return config.axis_x_categories;\n    };\n\n    // TODO: fix\n    c3_chart_fn.color = function (id) {\n        var $$ = this.internal;\n        return $$.color(id); // more patterns\n    };\n\n    c3_chart_fn.x = function (x) {\n        var $$ = this.internal;\n        if (arguments.length) {\n            $$.updateTargetX($$.data.targets, x);\n            $$.redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true});\n        }\n        return $$.data.xs;\n    };\n    c3_chart_fn.xs = function (xs) {\n        var $$ = this.internal;\n        if (arguments.length) {\n            $$.updateTargetXs($$.data.targets, xs);\n            $$.redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true});\n        }\n        return $$.data.xs;\n    };\n\n    c3_chart_fn.axis = function () {};\n    c3_chart_fn.axis.labels = function (labels) {\n        var $$ = this.internal;\n        if (arguments.length) {\n            Object.keys(labels).forEach(function (axisId) {\n                $$.axis.setLabelText(axisId, labels[axisId]);\n            });\n            $$.axis.updateLabels();\n        }\n        // TODO: return some values?\n    };\n    c3_chart_fn.axis.max = function (max) {\n        var $$ = this.internal, config = $$.config;\n        if (arguments.length) {\n            if (typeof max === 'object') {\n                if (isValue(max.x)) { config.axis_x_max = max.x; }\n                if (isValue(max.y)) { config.axis_y_max = max.y; }\n                if (isValue(max.y2)) { config.axis_y2_max = max.y2; }\n            } else {\n                config.axis_y_max = config.axis_y2_max = max;\n            }\n            $$.redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true});\n        } else {\n            return {\n                x: config.axis_x_max,\n                y: config.axis_y_max,\n                y2: config.axis_y2_max\n            };\n        }\n    };\n    c3_chart_fn.axis.min = function (min) {\n        var $$ = this.internal, config = $$.config;\n        if (arguments.length) {\n            if (typeof min === 'object') {\n                if (isValue(min.x)) { config.axis_x_min = min.x; }\n                if (isValue(min.y)) { config.axis_y_min = min.y; }\n                if (isValue(min.y2)) { config.axis_y2_min = min.y2; }\n            } else {\n                config.axis_y_min = config.axis_y2_min = min;\n            }\n            $$.redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true});\n        } else {\n            return {\n                x: config.axis_x_min,\n                y: config.axis_y_min,\n                y2: config.axis_y2_min\n            };\n        }\n    };\n    c3_chart_fn.axis.range = function (range) {\n        if (arguments.length) {\n            if (isDefined(range.max)) { this.axis.max(range.max); }\n            if (isDefined(range.min)) { this.axis.min(range.min); }\n        } else {\n            return {\n                max: this.axis.max(),\n                min: this.axis.min()\n            };\n        }\n    };\n\n    c3_chart_fn.legend = function () {};\n    c3_chart_fn.legend.show = function (targetIds) {\n        var $$ = this.internal;\n        $$.showLegend($$.mapToTargetIds(targetIds));\n        $$.updateAndRedraw({withLegend: true});\n    };\n    c3_chart_fn.legend.hide = function (targetIds) {\n        var $$ = this.internal;\n        $$.hideLegend($$.mapToTargetIds(targetIds));\n        $$.updateAndRedraw({withLegend: true});\n    };\n\n    c3_chart_fn.resize = function (size) {\n        var $$ = this.internal, config = $$.config;\n        config.size_width = size ? size.width : null;\n        config.size_height = size ? size.height : null;\n        this.flush();\n    };\n\n    c3_chart_fn.flush = function () {\n        var $$ = this.internal;\n        $$.updateAndRedraw({withLegend: true, withTransition: false, withTransitionForTransform: false});\n    };\n\n    c3_chart_fn.destroy = function () {\n        var $$ = this.internal;\n\n        window.clearInterval($$.intervalForObserveInserted);\n\n        if ($$.resizeTimeout !== undefined) {\n            window.clearTimeout($$.resizeTimeout);\n        }\n\n        if (window.detachEvent) {\n            window.detachEvent('onresize', $$.resizeFunction);\n        } else if (window.removeEventListener) {\n            window.removeEventListener('resize', $$.resizeFunction);\n        } else {\n            var wrapper = window.onresize;\n            // check if no one else removed our wrapper and remove our resizeFunction from it\n            if (wrapper && wrapper.add && wrapper.remove) {\n                wrapper.remove($$.resizeFunction);\n            }\n        }\n\n        $$.selectChart.classed('c3', false).html(\"\");\n\n        // MEMO: this is needed because the reference of some elements will not be released, then memory leak will happen.\n        Object.keys($$).forEach(function (key) {\n            $$[key] = null;\n        });\n\n        return null;\n    };\n\n    c3_chart_fn.tooltip = function () {};\n    c3_chart_fn.tooltip.show = function (args) {\n        var $$ = this.internal, index, mouse;\n\n        // determine mouse position on the chart\n        if (args.mouse) {\n            mouse = args.mouse;\n        }\n\n        // determine focus data\n        if (args.data) {\n            if ($$.isMultipleX()) {\n                // if multiple xs, target point will be determined by mouse\n                mouse = [$$.x(args.data.x), $$.getYScale(args.data.id)(args.data.value)];\n                index = null;\n            } else {\n                // TODO: when tooltip_grouped = false\n                index = isValue(args.data.index) ? args.data.index : $$.getIndexByX(args.data.x);\n            }\n        }\n        else if (typeof args.x !== 'undefined') {\n            index = $$.getIndexByX(args.x);\n        }\n        else if (typeof args.index !== 'undefined') {\n            index = args.index;\n        }\n\n        // emulate mouse events to show\n        $$.dispatchEvent('mouseover', index, mouse);\n        $$.dispatchEvent('mousemove', index, mouse);\n\n        $$.config.tooltip_onshow.call($$, args.data);\n    };\n    c3_chart_fn.tooltip.hide = function () {\n        // TODO: get target data by checking the state of focus\n        this.internal.dispatchEvent('mouseout', 0);\n\n        this.internal.config.tooltip_onhide.call(this);\n    };\n\n    // Features:\n    // 1. category axis\n    // 2. ceil values of translate/x/y to int for half pixel antialiasing\n    // 3. multiline tick text\n    var tickTextCharSize;\n    function c3_axis(d3, params) {\n        var scale = d3.scale.linear(), orient = \"bottom\", innerTickSize = 6, outerTickSize, tickPadding = 3, tickValues = null, tickFormat, tickArguments;\n\n        var tickOffset = 0, tickCulling = true, tickCentered;\n\n        params = params || {};\n        outerTickSize = params.withOuterTick ? 6 : 0;\n\n        function axisX(selection, x) {\n            selection.attr(\"transform\", function (d) {\n                return \"translate(\" + Math.ceil(x(d) + tickOffset) + \", 0)\";\n            });\n        }\n        function axisY(selection, y) {\n            selection.attr(\"transform\", function (d) {\n                return \"translate(0,\" + Math.ceil(y(d)) + \")\";\n            });\n        }\n        function scaleExtent(domain) {\n            var start = domain[0], stop = domain[domain.length - 1];\n            return start < stop ? [ start, stop ] : [ stop, start ];\n        }\n        function generateTicks(scale) {\n            var i, domain, ticks = [];\n            if (scale.ticks) {\n                return scale.ticks.apply(scale, tickArguments);\n            }\n            domain = scale.domain();\n            for (i = Math.ceil(domain[0]); i < domain[1]; i++) {\n                ticks.push(i);\n            }\n            if (ticks.length > 0 && ticks[0] > 0) {\n                ticks.unshift(ticks[0] - (ticks[1] - ticks[0]));\n            }\n            return ticks;\n        }\n        function copyScale() {\n            var newScale = scale.copy(), domain;\n            if (params.isCategory) {\n                domain = scale.domain();\n                newScale.domain([domain[0], domain[1] - 1]);\n            }\n            return newScale;\n        }\n        function textFormatted(v) {\n            var formatted = tickFormat ? tickFormat(v) : v;\n            return typeof formatted !== 'undefined' ? formatted : '';\n        }\n        function getSizeFor1Char(tick) {\n            if (tickTextCharSize) {\n                return tickTextCharSize;\n            }\n            var size = {\n                h: 11.5,\n                w: 5.5\n            };\n            tick.select('text').text(textFormatted).each(function (d) {\n                var box = this.getBoundingClientRect(),\n                    text = textFormatted(d),\n                    h = box.height,\n                    w = text ? (box.width / text.length) : undefined;\n                if (h && w) {\n                    size.h = h;\n                    size.w = w;\n                }\n            }).text('');\n            tickTextCharSize = size;\n            return size;\n        }\n        function transitionise(selection) {\n            return params.withoutTransition ? selection : d3.transition(selection);\n        }\n        function axis(g) {\n            g.each(function () {\n                var g = axis.g = d3.select(this);\n\n                var scale0 = this.__chart__ || scale, scale1 = this.__chart__ = copyScale();\n\n                var ticks = tickValues ? tickValues : generateTicks(scale1),\n                    tick = g.selectAll(\".tick\").data(ticks, scale1),\n                    tickEnter = tick.enter().insert(\"g\", \".domain\").attr(\"class\", \"tick\").style(\"opacity\", 1e-6),\n                    // MEMO: No exit transition. The reason is this transition affects max tick width calculation because old tick will be included in the ticks.\n                    tickExit = tick.exit().remove(),\n                    tickUpdate = transitionise(tick).style(\"opacity\", 1),\n                    tickTransform, tickX, tickY;\n\n                var range = scale.rangeExtent ? scale.rangeExtent() : scaleExtent(scale.range()),\n                    path = g.selectAll(\".domain\").data([ 0 ]),\n                    pathUpdate = (path.enter().append(\"path\").attr(\"class\", \"domain\"), transitionise(path));\n                tickEnter.append(\"line\");\n                tickEnter.append(\"text\");\n\n                var lineEnter = tickEnter.select(\"line\"),\n                    lineUpdate = tickUpdate.select(\"line\"),\n                    textEnter = tickEnter.select(\"text\"),\n                    textUpdate = tickUpdate.select(\"text\");\n\n                if (params.isCategory) {\n                    tickOffset = Math.ceil((scale1(1) - scale1(0)) / 2);\n                    tickX = tickCentered ? 0 : tickOffset;\n                    tickY = tickCentered ? tickOffset : 0;\n                } else {\n                    tickOffset = tickX = 0;\n                }\n\n                var text, tspan, sizeFor1Char = getSizeFor1Char(g.select('.tick')), counts = [];\n                var tickLength = Math.max(innerTickSize, 0) + tickPadding,\n                    isVertical = orient === 'left' || orient === 'right';\n\n                // this should be called only when category axis\n                function splitTickText(d, maxWidth) {\n                    var tickText = textFormatted(d),\n                        subtext, spaceIndex, textWidth, splitted = [];\n\n                    if (Object.prototype.toString.call(tickText) === \"[object Array]\") {\n                        return tickText;\n                    }\n\n                    if (!maxWidth || maxWidth <= 0) {\n                        maxWidth = isVertical ? 95 : params.isCategory ? (Math.ceil(scale1(ticks[1]) - scale1(ticks[0])) - 12) : 110;\n                    }\n\n                    function split(splitted, text) {\n                        spaceIndex = undefined;\n                        for (var i = 1; i < text.length; i++) {\n                            if (text.charAt(i) === ' ') {\n                                spaceIndex = i;\n                            }\n                            subtext = text.substr(0, i + 1);\n                            textWidth = sizeFor1Char.w * subtext.length;\n                            // if text width gets over tick width, split by space index or crrent index\n                            if (maxWidth < textWidth) {\n                                return split(\n                                    splitted.concat(text.substr(0, spaceIndex ? spaceIndex : i)),\n                                    text.slice(spaceIndex ? spaceIndex + 1 : i)\n                                );\n                            }\n                        }\n                        return splitted.concat(text);\n                    }\n\n                    return split(splitted, tickText + \"\");\n                }\n\n                function tspanDy(d, i) {\n                    var dy = sizeFor1Char.h;\n                    if (i === 0) {\n                        if (orient === 'left' || orient === 'right') {\n                            dy = -((counts[d.index] - 1) * (sizeFor1Char.h / 2) - 3);\n                        } else {\n                            dy = \".71em\";\n                        }\n                    }\n                    return dy;\n                }\n\n                function tickSize(d) {\n                    var tickPosition = scale(d) + (tickCentered ? 0 : tickOffset);\n                    return range[0] < tickPosition && tickPosition < range[1] ? innerTickSize : 0;\n                }\n\n                text = tick.select(\"text\");\n                tspan = text.selectAll('tspan')\n                    .data(function (d, i) {\n                        var splitted = params.tickMultiline ? splitTickText(d, params.tickWidth) : [].concat(textFormatted(d));\n                        counts[i] = splitted.length;\n                        return splitted.map(function (s) {\n                            return { index: i, splitted: s };\n                        });\n                    });\n                tspan.enter().append('tspan');\n                tspan.exit().remove();\n                tspan.text(function (d) { return d.splitted; });\n\n                var rotate = params.tickTextRotate;\n\n                function textAnchorForText(rotate) {\n                    if (!rotate) {\n                        return 'middle';\n                    }\n                    return rotate > 0 ? \"start\" : \"end\";\n                }\n                function textTransform(rotate) {\n                    if (!rotate) {\n                        return '';\n                    }\n                    return \"rotate(\" + rotate + \")\";\n                }\n                function dxForText(rotate) {\n                    if (!rotate) {\n                        return 0;\n                    }\n                    return 8 * Math.sin(Math.PI * (rotate / 180));\n                }\n                function yForText(rotate) {\n                    if (!rotate) {\n                        return tickLength;\n                    }\n                    return 11.5 - 2.5 * (rotate / 15) * (rotate > 0 ? 1 : -1);\n                }\n\n                switch (orient) {\n                case \"bottom\":\n                    {\n                        tickTransform = axisX;\n                        lineEnter.attr(\"y2\", innerTickSize);\n                        textEnter.attr(\"y\", tickLength);\n                        lineUpdate.attr(\"x1\", tickX).attr(\"x2\", tickX).attr(\"y2\", tickSize);\n                        textUpdate.attr(\"x\", 0).attr(\"y\", yForText(rotate))\n                            .style(\"text-anchor\", textAnchorForText(rotate))\n                            .attr(\"transform\", textTransform(rotate));\n                        tspan.attr('x', 0).attr(\"dy\", tspanDy).attr('dx', dxForText(rotate));\n                        pathUpdate.attr(\"d\", \"M\" + range[0] + \",\" + outerTickSize + \"V0H\" + range[1] + \"V\" + outerTickSize);\n                        break;\n                    }\n                case \"top\":\n                    {\n                        // TODO: rotated tick text\n                        tickTransform = axisX;\n                        lineEnter.attr(\"y2\", -innerTickSize);\n                        textEnter.attr(\"y\", -tickLength);\n                        lineUpdate.attr(\"x2\", 0).attr(\"y2\", -innerTickSize);\n                        textUpdate.attr(\"x\", 0).attr(\"y\", -tickLength);\n                        text.style(\"text-anchor\", \"middle\");\n                        tspan.attr('x', 0).attr(\"dy\", \"0em\");\n                        pathUpdate.attr(\"d\", \"M\" + range[0] + \",\" + -outerTickSize + \"V0H\" + range[1] + \"V\" + -outerTickSize);\n                        break;\n                    }\n                case \"left\":\n                    {\n                        tickTransform = axisY;\n                        lineEnter.attr(\"x2\", -innerTickSize);\n                        textEnter.attr(\"x\", -tickLength);\n                        lineUpdate.attr(\"x2\", -innerTickSize).attr(\"y1\", tickY).attr(\"y2\", tickY);\n                        textUpdate.attr(\"x\", -tickLength).attr(\"y\", tickOffset);\n                        text.style(\"text-anchor\", \"end\");\n                        tspan.attr('x', -tickLength).attr(\"dy\", tspanDy);\n                        pathUpdate.attr(\"d\", \"M\" + -outerTickSize + \",\" + range[0] + \"H0V\" + range[1] + \"H\" + -outerTickSize);\n                        break;\n                    }\n                case \"right\":\n                    {\n                        tickTransform = axisY;\n                        lineEnter.attr(\"x2\", innerTickSize);\n                        textEnter.attr(\"x\", tickLength);\n                        lineUpdate.attr(\"x2\", innerTickSize).attr(\"y2\", 0);\n                        textUpdate.attr(\"x\", tickLength).attr(\"y\", 0);\n                        text.style(\"text-anchor\", \"start\");\n                        tspan.attr('x', tickLength).attr(\"dy\", tspanDy);\n                        pathUpdate.attr(\"d\", \"M\" + outerTickSize + \",\" + range[0] + \"H0V\" + range[1] + \"H\" + outerTickSize);\n                        break;\n                    }\n                }\n                if (scale1.rangeBand) {\n                    var x = scale1, dx = x.rangeBand() / 2;\n                    scale0 = scale1 = function (d) {\n                        return x(d) + dx;\n                    };\n                } else if (scale0.rangeBand) {\n                    scale0 = scale1;\n                } else {\n                    tickExit.call(tickTransform, scale1);\n                }\n                tickEnter.call(tickTransform, scale0);\n                tickUpdate.call(tickTransform, scale1);\n            });\n        }\n        axis.scale = function (x) {\n            if (!arguments.length) { return scale; }\n            scale = x;\n            return axis;\n        };\n        axis.orient = function (x) {\n            if (!arguments.length) { return orient; }\n            orient = x in {top: 1, right: 1, bottom: 1, left: 1} ? x + \"\" : \"bottom\";\n            return axis;\n        };\n        axis.tickFormat = function (format) {\n            if (!arguments.length) { return tickFormat; }\n            tickFormat = format;\n            return axis;\n        };\n        axis.tickCentered = function (isCentered) {\n            if (!arguments.length) { return tickCentered; }\n            tickCentered = isCentered;\n            return axis;\n        };\n        axis.tickOffset = function () {\n            return tickOffset;\n        };\n        axis.tickInterval = function () {\n            var interval, length;\n            if (params.isCategory) {\n                interval = tickOffset * 2;\n            }\n            else {\n                length = axis.g.select('path.domain').node().getTotalLength() - outerTickSize * 2;\n                interval = length / axis.g.selectAll('line').size();\n            }\n            return interval === Infinity ? 0 : interval;\n        };\n        axis.ticks = function () {\n            if (!arguments.length) { return tickArguments; }\n            tickArguments = arguments;\n            return axis;\n        };\n        axis.tickCulling = function (culling) {\n            if (!arguments.length) { return tickCulling; }\n            tickCulling = culling;\n            return axis;\n        };\n        axis.tickValues = function (x) {\n            if (typeof x === 'function') {\n                tickValues = function () {\n                    return x(scale.domain());\n                };\n            }\n            else {\n                if (!arguments.length) { return tickValues; }\n                tickValues = x;\n            }\n            return axis;\n        };\n        return axis;\n    }\n\n    c3_chart_internal_fn.isSafari = function () {\n        var ua = window.navigator.userAgent;\n        return ua.indexOf('Safari') >= 0 && ua.indexOf('Chrome') < 0;\n    };\n    c3_chart_internal_fn.isChrome = function () {\n        var ua = window.navigator.userAgent;\n        return ua.indexOf('Chrome') >= 0;\n    };\n\n    /* jshint ignore:start */\n\n    // PhantomJS doesn't have support for Function.prototype.bind, which has caused confusion. Use\n    // this polyfill to avoid the confusion.\n    // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind#Polyfill\n\n    if (!Function.prototype.bind) {\n      Function.prototype.bind = function(oThis) {\n        if (typeof this !== 'function') {\n          // closest thing possible to the ECMAScript 5\n          // internal IsCallable function\n          throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');\n        }\n\n        var aArgs   = Array.prototype.slice.call(arguments, 1),\n            fToBind = this,\n            fNOP    = function() {},\n            fBound  = function() {\n              return fToBind.apply(this instanceof fNOP ? this : oThis, aArgs.concat(Array.prototype.slice.call(arguments)));\n            };\n\n        fNOP.prototype = this.prototype;\n        fBound.prototype = new fNOP();\n\n        return fBound;\n      };\n    }\n\n    //SVGPathSeg API polyfill\n    //https://github.com/progers/pathseg\n    //\n    //This is a drop-in replacement for the SVGPathSeg and SVGPathSegList APIs that were removed from\n    //SVG2 (https://lists.w3.org/Archives/Public/www-svg/2015Jun/0044.html), including the latest spec\n    //changes which were implemented in Firefox 43 and Chrome 46.\n    //Chrome 48 removes these APIs, so this polyfill is required.\n\n    (function() { \"use strict\";\n     if (!(\"SVGPathSeg\" in window)) {\n         // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGPathSeg\n         window.SVGPathSeg = function(type, typeAsLetter, owningPathSegList) {\n             this.pathSegType = type;\n             this.pathSegTypeAsLetter = typeAsLetter;\n             this._owningPathSegList = owningPathSegList;\n         }\n\n         SVGPathSeg.PATHSEG_UNKNOWN = 0;\n         SVGPathSeg.PATHSEG_CLOSEPATH = 1;\n         SVGPathSeg.PATHSEG_MOVETO_ABS = 2;\n         SVGPathSeg.PATHSEG_MOVETO_REL = 3;\n         SVGPathSeg.PATHSEG_LINETO_ABS = 4;\n         SVGPathSeg.PATHSEG_LINETO_REL = 5;\n         SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS = 6;\n         SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL = 7;\n         SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS = 8;\n         SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL = 9;\n         SVGPathSeg.PATHSEG_ARC_ABS = 10;\n         SVGPathSeg.PATHSEG_ARC_REL = 11;\n         SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS = 12;\n         SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL = 13;\n         SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS = 14;\n         SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL = 15;\n         SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS = 16;\n         SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL = 17;\n         SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS = 18;\n         SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL = 19;\n\n         // Notify owning PathSegList on any changes so they can be synchronized back to the path element.\n         SVGPathSeg.prototype._segmentChanged = function() {\n             if (this._owningPathSegList)\n                 this._owningPathSegList.segmentChanged(this);\n         }\n\n         window.SVGPathSegClosePath = function(owningPathSegList) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_CLOSEPATH, \"z\", owningPathSegList);\n         }\n         SVGPathSegClosePath.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegClosePath.prototype.toString = function() { return \"[object SVGPathSegClosePath]\"; }\n         SVGPathSegClosePath.prototype._asPathString = function() { return this.pathSegTypeAsLetter; }\n         SVGPathSegClosePath.prototype.clone = function() { return new SVGPathSegClosePath(undefined); }\n\n         window.SVGPathSegMovetoAbs = function(owningPathSegList, x, y) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_MOVETO_ABS, \"M\", owningPathSegList);\n             this._x = x;\n             this._y = y;\n         }\n         SVGPathSegMovetoAbs.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegMovetoAbs.prototype.toString = function() { return \"[object SVGPathSegMovetoAbs]\"; }\n         SVGPathSegMovetoAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y; }\n         SVGPathSegMovetoAbs.prototype.clone = function() { return new SVGPathSegMovetoAbs(undefined, this._x, this._y); }\n         Object.defineProperty(SVGPathSegMovetoAbs.prototype, \"x\", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegMovetoAbs.prototype, \"y\", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegMovetoRel = function(owningPathSegList, x, y) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_MOVETO_REL, \"m\", owningPathSegList);\n             this._x = x;\n             this._y = y;\n         }\n         SVGPathSegMovetoRel.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegMovetoRel.prototype.toString = function() { return \"[object SVGPathSegMovetoRel]\"; }\n         SVGPathSegMovetoRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y; }\n         SVGPathSegMovetoRel.prototype.clone = function() { return new SVGPathSegMovetoRel(undefined, this._x, this._y); }\n         Object.defineProperty(SVGPathSegMovetoRel.prototype, \"x\", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegMovetoRel.prototype, \"y\", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegLinetoAbs = function(owningPathSegList, x, y) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_LINETO_ABS, \"L\", owningPathSegList);\n             this._x = x;\n             this._y = y;\n         }\n         SVGPathSegLinetoAbs.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegLinetoAbs.prototype.toString = function() { return \"[object SVGPathSegLinetoAbs]\"; }\n         SVGPathSegLinetoAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y; }\n         SVGPathSegLinetoAbs.prototype.clone = function() { return new SVGPathSegLinetoAbs(undefined, this._x, this._y); }\n         Object.defineProperty(SVGPathSegLinetoAbs.prototype, \"x\", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegLinetoAbs.prototype, \"y\", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegLinetoRel = function(owningPathSegList, x, y) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_LINETO_REL, \"l\", owningPathSegList);\n             this._x = x;\n             this._y = y;\n         }\n         SVGPathSegLinetoRel.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegLinetoRel.prototype.toString = function() { return \"[object SVGPathSegLinetoRel]\"; }\n         SVGPathSegLinetoRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y; }\n         SVGPathSegLinetoRel.prototype.clone = function() { return new SVGPathSegLinetoRel(undefined, this._x, this._y); }\n         Object.defineProperty(SVGPathSegLinetoRel.prototype, \"x\", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegLinetoRel.prototype, \"y\", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegCurvetoCubicAbs = function(owningPathSegList, x, y, x1, y1, x2, y2) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS, \"C\", owningPathSegList);\n             this._x = x;\n             this._y = y;\n             this._x1 = x1;\n             this._y1 = y1;\n             this._x2 = x2;\n             this._y2 = y2;\n         }\n         SVGPathSegCurvetoCubicAbs.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegCurvetoCubicAbs.prototype.toString = function() { return \"[object SVGPathSegCurvetoCubicAbs]\"; }\n         SVGPathSegCurvetoCubicAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._x1 + \" \" + this._y1 + \" \" + this._x2 + \" \" + this._y2 + \" \" + this._x + \" \" + this._y; }\n         SVGPathSegCurvetoCubicAbs.prototype.clone = function() { return new SVGPathSegCurvetoCubicAbs(undefined, this._x, this._y, this._x1, this._y1, this._x2, this._y2); }\n         Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype, \"x\", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype, \"y\", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype, \"x1\", { get: function() { return this._x1; }, set: function(x1) { this._x1 = x1; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype, \"y1\", { get: function() { return this._y1; }, set: function(y1) { this._y1 = y1; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype, \"x2\", { get: function() { return this._x2; }, set: function(x2) { this._x2 = x2; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype, \"y2\", { get: function() { return this._y2; }, set: function(y2) { this._y2 = y2; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegCurvetoCubicRel = function(owningPathSegList, x, y, x1, y1, x2, y2) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL, \"c\", owningPathSegList);\n             this._x = x;\n             this._y = y;\n             this._x1 = x1;\n             this._y1 = y1;\n             this._x2 = x2;\n             this._y2 = y2;\n         }\n         SVGPathSegCurvetoCubicRel.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegCurvetoCubicRel.prototype.toString = function() { return \"[object SVGPathSegCurvetoCubicRel]\"; }\n         SVGPathSegCurvetoCubicRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._x1 + \" \" + this._y1 + \" \" + this._x2 + \" \" + this._y2 + \" \" + this._x + \" \" + this._y; }\n         SVGPathSegCurvetoCubicRel.prototype.clone = function() { return new SVGPathSegCurvetoCubicRel(undefined, this._x, this._y, this._x1, this._y1, this._x2, this._y2); }\n         Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype, \"x\", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype, \"y\", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype, \"x1\", { get: function() { return this._x1; }, set: function(x1) { this._x1 = x1; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype, \"y1\", { get: function() { return this._y1; }, set: function(y1) { this._y1 = y1; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype, \"x2\", { get: function() { return this._x2; }, set: function(x2) { this._x2 = x2; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype, \"y2\", { get: function() { return this._y2; }, set: function(y2) { this._y2 = y2; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegCurvetoQuadraticAbs = function(owningPathSegList, x, y, x1, y1) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS, \"Q\", owningPathSegList);\n             this._x = x;\n             this._y = y;\n             this._x1 = x1;\n             this._y1 = y1;\n         }\n         SVGPathSegCurvetoQuadraticAbs.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegCurvetoQuadraticAbs.prototype.toString = function() { return \"[object SVGPathSegCurvetoQuadraticAbs]\"; }\n         SVGPathSegCurvetoQuadraticAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._x1 + \" \" + this._y1 + \" \" + this._x + \" \" + this._y; }\n         SVGPathSegCurvetoQuadraticAbs.prototype.clone = function() { return new SVGPathSegCurvetoQuadraticAbs(undefined, this._x, this._y, this._x1, this._y1); }\n         Object.defineProperty(SVGPathSegCurvetoQuadraticAbs.prototype, \"x\", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoQuadraticAbs.prototype, \"y\", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoQuadraticAbs.prototype, \"x1\", { get: function() { return this._x1; }, set: function(x1) { this._x1 = x1; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoQuadraticAbs.prototype, \"y1\", { get: function() { return this._y1; }, set: function(y1) { this._y1 = y1; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegCurvetoQuadraticRel = function(owningPathSegList, x, y, x1, y1) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL, \"q\", owningPathSegList);\n             this._x = x;\n             this._y = y;\n             this._x1 = x1;\n             this._y1 = y1;\n         }\n         SVGPathSegCurvetoQuadraticRel.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegCurvetoQuadraticRel.prototype.toString = function() { return \"[object SVGPathSegCurvetoQuadraticRel]\"; }\n         SVGPathSegCurvetoQuadraticRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._x1 + \" \" + this._y1 + \" \" + this._x + \" \" + this._y; }\n         SVGPathSegCurvetoQuadraticRel.prototype.clone = function() { return new SVGPathSegCurvetoQuadraticRel(undefined, this._x, this._y, this._x1, this._y1); }\n         Object.defineProperty(SVGPathSegCurvetoQuadraticRel.prototype, \"x\", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoQuadraticRel.prototype, \"y\", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoQuadraticRel.prototype, \"x1\", { get: function() { return this._x1; }, set: function(x1) { this._x1 = x1; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoQuadraticRel.prototype, \"y1\", { get: function() { return this._y1; }, set: function(y1) { this._y1 = y1; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegArcAbs = function(owningPathSegList, x, y, r1, r2, angle, largeArcFlag, sweepFlag) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_ARC_ABS, \"A\", owningPathSegList);\n             this._x = x;\n             this._y = y;\n             this._r1 = r1;\n             this._r2 = r2;\n             this._angle = angle;\n             this._largeArcFlag = largeArcFlag;\n             this._sweepFlag = sweepFlag;\n         }\n         SVGPathSegArcAbs.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegArcAbs.prototype.toString = function() { return \"[object SVGPathSegArcAbs]\"; }\n         SVGPathSegArcAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._r1 + \" \" + this._r2 + \" \" + this._angle + \" \" + (this._largeArcFlag ? \"1\" : \"0\") + \" \" + (this._sweepFlag ? \"1\" : \"0\") + \" \" + this._x + \" \" + this._y; }\n         SVGPathSegArcAbs.prototype.clone = function() { return new SVGPathSegArcAbs(undefined, this._x, this._y, this._r1, this._r2, this._angle, this._largeArcFlag, this._sweepFlag); }\n         Object.defineProperty(SVGPathSegArcAbs.prototype, \"x\", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegArcAbs.prototype, \"y\", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegArcAbs.prototype, \"r1\", { get: function() { return this._r1; }, set: function(r1) { this._r1 = r1; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegArcAbs.prototype, \"r2\", { get: function() { return this._r2; }, set: function(r2) { this._r2 = r2; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegArcAbs.prototype, \"angle\", { get: function() { return this._angle; }, set: function(angle) { this._angle = angle; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegArcAbs.prototype, \"largeArcFlag\", { get: function() { return this._largeArcFlag; }, set: function(largeArcFlag) { this._largeArcFlag = largeArcFlag; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegArcAbs.prototype, \"sweepFlag\", { get: function() { return this._sweepFlag; }, set: function(sweepFlag) { this._sweepFlag = sweepFlag; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegArcRel = function(owningPathSegList, x, y, r1, r2, angle, largeArcFlag, sweepFlag) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_ARC_REL, \"a\", owningPathSegList);\n             this._x = x;\n             this._y = y;\n             this._r1 = r1;\n             this._r2 = r2;\n             this._angle = angle;\n             this._largeArcFlag = largeArcFlag;\n             this._sweepFlag = sweepFlag;\n         }\n         SVGPathSegArcRel.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegArcRel.prototype.toString = function() { return \"[object SVGPathSegArcRel]\"; }\n         SVGPathSegArcRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._r1 + \" \" + this._r2 + \" \" + this._angle + \" \" + (this._largeArcFlag ? \"1\" : \"0\") + \" \" + (this._sweepFlag ? \"1\" : \"0\") + \" \" + this._x + \" \" + this._y; }\n         SVGPathSegArcRel.prototype.clone = function() { return new SVGPathSegArcRel(undefined, this._x, this._y, this._r1, this._r2, this._angle, this._largeArcFlag, this._sweepFlag); }\n         Object.defineProperty(SVGPathSegArcRel.prototype, \"x\", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegArcRel.prototype, \"y\", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegArcRel.prototype, \"r1\", { get: function() { return this._r1; }, set: function(r1) { this._r1 = r1; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegArcRel.prototype, \"r2\", { get: function() { return this._r2; }, set: function(r2) { this._r2 = r2; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegArcRel.prototype, \"angle\", { get: function() { return this._angle; }, set: function(angle) { this._angle = angle; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegArcRel.prototype, \"largeArcFlag\", { get: function() { return this._largeArcFlag; }, set: function(largeArcFlag) { this._largeArcFlag = largeArcFlag; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegArcRel.prototype, \"sweepFlag\", { get: function() { return this._sweepFlag; }, set: function(sweepFlag) { this._sweepFlag = sweepFlag; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegLinetoHorizontalAbs = function(owningPathSegList, x) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS, \"H\", owningPathSegList);\n             this._x = x;\n         }\n         SVGPathSegLinetoHorizontalAbs.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegLinetoHorizontalAbs.prototype.toString = function() { return \"[object SVGPathSegLinetoHorizontalAbs]\"; }\n         SVGPathSegLinetoHorizontalAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._x; }\n         SVGPathSegLinetoHorizontalAbs.prototype.clone = function() { return new SVGPathSegLinetoHorizontalAbs(undefined, this._x); }\n         Object.defineProperty(SVGPathSegLinetoHorizontalAbs.prototype, \"x\", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegLinetoHorizontalRel = function(owningPathSegList, x) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL, \"h\", owningPathSegList);\n             this._x = x;\n         }\n         SVGPathSegLinetoHorizontalRel.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegLinetoHorizontalRel.prototype.toString = function() { return \"[object SVGPathSegLinetoHorizontalRel]\"; }\n         SVGPathSegLinetoHorizontalRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._x; }\n         SVGPathSegLinetoHorizontalRel.prototype.clone = function() { return new SVGPathSegLinetoHorizontalRel(undefined, this._x); }\n         Object.defineProperty(SVGPathSegLinetoHorizontalRel.prototype, \"x\", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegLinetoVerticalAbs = function(owningPathSegList, y) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS, \"V\", owningPathSegList);\n             this._y = y;\n         }\n         SVGPathSegLinetoVerticalAbs.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegLinetoVerticalAbs.prototype.toString = function() { return \"[object SVGPathSegLinetoVerticalAbs]\"; }\n         SVGPathSegLinetoVerticalAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._y; }\n         SVGPathSegLinetoVerticalAbs.prototype.clone = function() { return new SVGPathSegLinetoVerticalAbs(undefined, this._y); }\n         Object.defineProperty(SVGPathSegLinetoVerticalAbs.prototype, \"y\", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegLinetoVerticalRel = function(owningPathSegList, y) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL, \"v\", owningPathSegList);\n             this._y = y;\n         }\n         SVGPathSegLinetoVerticalRel.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegLinetoVerticalRel.prototype.toString = function() { return \"[object SVGPathSegLinetoVerticalRel]\"; }\n         SVGPathSegLinetoVerticalRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._y; }\n         SVGPathSegLinetoVerticalRel.prototype.clone = function() { return new SVGPathSegLinetoVerticalRel(undefined, this._y); }\n         Object.defineProperty(SVGPathSegLinetoVerticalRel.prototype, \"y\", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegCurvetoCubicSmoothAbs = function(owningPathSegList, x, y, x2, y2) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS, \"S\", owningPathSegList);\n             this._x = x;\n             this._y = y;\n             this._x2 = x2;\n             this._y2 = y2;\n         }\n         SVGPathSegCurvetoCubicSmoothAbs.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegCurvetoCubicSmoothAbs.prototype.toString = function() { return \"[object SVGPathSegCurvetoCubicSmoothAbs]\"; }\n         SVGPathSegCurvetoCubicSmoothAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._x2 + \" \" + this._y2 + \" \" + this._x + \" \" + this._y; }\n         SVGPathSegCurvetoCubicSmoothAbs.prototype.clone = function() { return new SVGPathSegCurvetoCubicSmoothAbs(undefined, this._x, this._y, this._x2, this._y2); }\n         Object.defineProperty(SVGPathSegCurvetoCubicSmoothAbs.prototype, \"x\", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoCubicSmoothAbs.prototype, \"y\", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoCubicSmoothAbs.prototype, \"x2\", { get: function() { return this._x2; }, set: function(x2) { this._x2 = x2; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoCubicSmoothAbs.prototype, \"y2\", { get: function() { return this._y2; }, set: function(y2) { this._y2 = y2; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegCurvetoCubicSmoothRel = function(owningPathSegList, x, y, x2, y2) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL, \"s\", owningPathSegList);\n             this._x = x;\n             this._y = y;\n             this._x2 = x2;\n             this._y2 = y2;\n         }\n         SVGPathSegCurvetoCubicSmoothRel.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegCurvetoCubicSmoothRel.prototype.toString = function() { return \"[object SVGPathSegCurvetoCubicSmoothRel]\"; }\n         SVGPathSegCurvetoCubicSmoothRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._x2 + \" \" + this._y2 + \" \" + this._x + \" \" + this._y; }\n         SVGPathSegCurvetoCubicSmoothRel.prototype.clone = function() { return new SVGPathSegCurvetoCubicSmoothRel(undefined, this._x, this._y, this._x2, this._y2); }\n         Object.defineProperty(SVGPathSegCurvetoCubicSmoothRel.prototype, \"x\", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoCubicSmoothRel.prototype, \"y\", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoCubicSmoothRel.prototype, \"x2\", { get: function() { return this._x2; }, set: function(x2) { this._x2 = x2; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoCubicSmoothRel.prototype, \"y2\", { get: function() { return this._y2; }, set: function(y2) { this._y2 = y2; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegCurvetoQuadraticSmoothAbs = function(owningPathSegList, x, y) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS, \"T\", owningPathSegList);\n             this._x = x;\n             this._y = y;\n         }\n         SVGPathSegCurvetoQuadraticSmoothAbs.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegCurvetoQuadraticSmoothAbs.prototype.toString = function() { return \"[object SVGPathSegCurvetoQuadraticSmoothAbs]\"; }\n         SVGPathSegCurvetoQuadraticSmoothAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y; }\n         SVGPathSegCurvetoQuadraticSmoothAbs.prototype.clone = function() { return new SVGPathSegCurvetoQuadraticSmoothAbs(undefined, this._x, this._y); }\n         Object.defineProperty(SVGPathSegCurvetoQuadraticSmoothAbs.prototype, \"x\", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoQuadraticSmoothAbs.prototype, \"y\", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegCurvetoQuadraticSmoothRel = function(owningPathSegList, x, y) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL, \"t\", owningPathSegList);\n             this._x = x;\n             this._y = y;\n         }\n         SVGPathSegCurvetoQuadraticSmoothRel.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegCurvetoQuadraticSmoothRel.prototype.toString = function() { return \"[object SVGPathSegCurvetoQuadraticSmoothRel]\"; }\n         SVGPathSegCurvetoQuadraticSmoothRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y; }\n         SVGPathSegCurvetoQuadraticSmoothRel.prototype.clone = function() { return new SVGPathSegCurvetoQuadraticSmoothRel(undefined, this._x, this._y); }\n         Object.defineProperty(SVGPathSegCurvetoQuadraticSmoothRel.prototype, \"x\", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoQuadraticSmoothRel.prototype, \"y\", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });\n\n         // Add createSVGPathSeg* functions to SVGPathElement.\n         // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGPathElement.\n         SVGPathElement.prototype.createSVGPathSegClosePath = function() { return new SVGPathSegClosePath(undefined); }\n         SVGPathElement.prototype.createSVGPathSegMovetoAbs = function(x, y) { return new SVGPathSegMovetoAbs(undefined, x, y); }\n         SVGPathElement.prototype.createSVGPathSegMovetoRel = function(x, y) { return new SVGPathSegMovetoRel(undefined, x, y); }\n         SVGPathElement.prototype.createSVGPathSegLinetoAbs = function(x, y) { return new SVGPathSegLinetoAbs(undefined, x, y); }\n         SVGPathElement.prototype.createSVGPathSegLinetoRel = function(x, y) { return new SVGPathSegLinetoRel(undefined, x, y); }\n         SVGPathElement.prototype.createSVGPathSegCurvetoCubicAbs = function(x, y, x1, y1, x2, y2) { return new SVGPathSegCurvetoCubicAbs(undefined, x, y, x1, y1, x2, y2); }\n         SVGPathElement.prototype.createSVGPathSegCurvetoCubicRel = function(x, y, x1, y1, x2, y2) { return new SVGPathSegCurvetoCubicRel(undefined, x, y, x1, y1, x2, y2); }\n         SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticAbs = function(x, y, x1, y1) { return new SVGPathSegCurvetoQuadraticAbs(undefined, x, y, x1, y1); }\n         SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticRel = function(x, y, x1, y1) { return new SVGPathSegCurvetoQuadraticRel(undefined, x, y, x1, y1); }\n         SVGPathElement.prototype.createSVGPathSegArcAbs = function(x, y, r1, r2, angle, largeArcFlag, sweepFlag) { return new SVGPathSegArcAbs(undefined, x, y, r1, r2, angle, largeArcFlag, sweepFlag); }\n         SVGPathElement.prototype.createSVGPathSegArcRel = function(x, y, r1, r2, angle, largeArcFlag, sweepFlag) { return new SVGPathSegArcRel(undefined, x, y, r1, r2, angle, largeArcFlag, sweepFlag); }\n         SVGPathElement.prototype.createSVGPathSegLinetoHorizontalAbs = function(x) { return new SVGPathSegLinetoHorizontalAbs(undefined, x); }\n         SVGPathElement.prototype.createSVGPathSegLinetoHorizontalRel = function(x) { return new SVGPathSegLinetoHorizontalRel(undefined, x); }\n         SVGPathElement.prototype.createSVGPathSegLinetoVerticalAbs = function(y) { return new SVGPathSegLinetoVerticalAbs(undefined, y); }\n         SVGPathElement.prototype.createSVGPathSegLinetoVerticalRel = function(y) { return new SVGPathSegLinetoVerticalRel(undefined, y); }\n         SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothAbs = function(x, y, x2, y2) { return new SVGPathSegCurvetoCubicSmoothAbs(undefined, x, y, x2, y2); }\n         SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothRel = function(x, y, x2, y2) { return new SVGPathSegCurvetoCubicSmoothRel(undefined, x, y, x2, y2); }\n         SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothAbs = function(x, y) { return new SVGPathSegCurvetoQuadraticSmoothAbs(undefined, x, y); }\n         SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothRel = function(x, y) { return new SVGPathSegCurvetoQuadraticSmoothRel(undefined, x, y); }\n     }\n\n     if (!(\"SVGPathSegList\" in window)) {\n         // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGPathSegList\n         window.SVGPathSegList = function(pathElement) {\n             this._pathElement = pathElement;\n             this._list = this._parsePath(this._pathElement.getAttribute(\"d\"));\n\n             // Use a MutationObserver to catch changes to the path's \"d\" attribute.\n             this._mutationObserverConfig = { \"attributes\": true, \"attributeFilter\": [\"d\"] };\n             this._pathElementMutationObserver = new MutationObserver(this._updateListFromPathMutations.bind(this));\n             this._pathElementMutationObserver.observe(this._pathElement, this._mutationObserverConfig);\n         }\n\n         Object.defineProperty(SVGPathSegList.prototype, \"numberOfItems\", {\n             get: function() {\n                 this._checkPathSynchronizedToList();\n                 return this._list.length;\n             },\n             enumerable: true\n         });\n\n         // Add the pathSegList accessors to SVGPathElement.\n         // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGAnimatedPathData\n         Object.defineProperty(SVGPathElement.prototype, \"pathSegList\", {\n             get: function() {\n                 if (!this._pathSegList)\n                     this._pathSegList = new SVGPathSegList(this);\n                 return this._pathSegList;\n             },\n             enumerable: true\n         });\n         // FIXME: The following are not implemented and simply return SVGPathElement.pathSegList.\n         Object.defineProperty(SVGPathElement.prototype, \"normalizedPathSegList\", { get: function() { return this.pathSegList; }, enumerable: true });\n         Object.defineProperty(SVGPathElement.prototype, \"animatedPathSegList\", { get: function() { return this.pathSegList; }, enumerable: true });\n         Object.defineProperty(SVGPathElement.prototype, \"animatedNormalizedPathSegList\", { get: function() { return this.pathSegList; }, enumerable: true });\n\n         // Process any pending mutations to the path element and update the list as needed.\n         // This should be the first call of all public functions and is needed because\n         // MutationObservers are not synchronous so we can have pending asynchronous mutations.\n         SVGPathSegList.prototype._checkPathSynchronizedToList = function() {\n             this._updateListFromPathMutations(this._pathElementMutationObserver.takeRecords());\n         }\n\n         SVGPathSegList.prototype._updateListFromPathMutations = function(mutationRecords) {\n             if (!this._pathElement)\n                 return;\n             var hasPathMutations = false;\n             mutationRecords.forEach(function(record) {\n                 if (record.attributeName == \"d\")\n                     hasPathMutations = true;\n             });\n             if (hasPathMutations)\n                 this._list = this._parsePath(this._pathElement.getAttribute(\"d\"));\n         }\n\n         // Serialize the list and update the path's 'd' attribute.\n         SVGPathSegList.prototype._writeListToPath = function() {\n             this._pathElementMutationObserver.disconnect();\n             this._pathElement.setAttribute(\"d\", SVGPathSegList._pathSegArrayAsString(this._list));\n             this._pathElementMutationObserver.observe(this._pathElement, this._mutationObserverConfig);\n         }\n\n         // When a path segment changes the list needs to be synchronized back to the path element.\n         SVGPathSegList.prototype.segmentChanged = function(pathSeg) {\n             this._writeListToPath();\n         }\n\n         SVGPathSegList.prototype.clear = function() {\n             this._checkPathSynchronizedToList();\n\n             this._list.forEach(function(pathSeg) {\n                 pathSeg._owningPathSegList = null;\n             });\n             this._list = [];\n             this._writeListToPath();\n         }\n\n         SVGPathSegList.prototype.initialize = function(newItem) {\n             this._checkPathSynchronizedToList();\n\n             this._list = [newItem];\n             newItem._owningPathSegList = this;\n             this._writeListToPath();\n             return newItem;\n         }\n\n         SVGPathSegList.prototype._checkValidIndex = function(index) {\n             if (isNaN(index) || index < 0 || index >= this.numberOfItems)\n                 throw \"INDEX_SIZE_ERR\";\n         }\n\n         SVGPathSegList.prototype.getItem = function(index) {\n             this._checkPathSynchronizedToList();\n\n             this._checkValidIndex(index);\n             return this._list[index];\n         }\n\n         SVGPathSegList.prototype.insertItemBefore = function(newItem, index) {\n             this._checkPathSynchronizedToList();\n\n             // Spec: If the index is greater than or equal to numberOfItems, then the new item is appended to the end of the list.\n             if (index > this.numberOfItems)\n                 index = this.numberOfItems;\n             if (newItem._owningPathSegList) {\n                 // SVG2 spec says to make a copy.\n                 newItem = newItem.clone();\n             }\n             this._list.splice(index, 0, newItem);\n             newItem._owningPathSegList = this;\n             this._writeListToPath();\n             return newItem;\n         }\n\n         SVGPathSegList.prototype.replaceItem = function(newItem, index) {\n             this._checkPathSynchronizedToList();\n\n             if (newItem._owningPathSegList) {\n                 // SVG2 spec says to make a copy.\n                 newItem = newItem.clone();\n             }\n             this._checkValidIndex(index);\n             this._list[index] = newItem;\n             newItem._owningPathSegList = this;\n             this._writeListToPath();\n             return newItem;\n         }\n\n         SVGPathSegList.prototype.removeItem = function(index) {\n             this._checkPathSynchronizedToList();\n\n             this._checkValidIndex(index);\n             var item = this._list[index];\n             this._list.splice(index, 1);\n             this._writeListToPath();\n             return item;\n         }\n\n         SVGPathSegList.prototype.appendItem = function(newItem) {\n             this._checkPathSynchronizedToList();\n\n             if (newItem._owningPathSegList) {\n                 // SVG2 spec says to make a copy.\n                 newItem = newItem.clone();\n             }\n             this._list.push(newItem);\n             newItem._owningPathSegList = this;\n             // TODO: Optimize this to just append to the existing attribute.\n             this._writeListToPath();\n             return newItem;\n         }\n\n         SVGPathSegList._pathSegArrayAsString = function(pathSegArray) {\n             var string = \"\";\n             var first = true;\n             pathSegArray.forEach(function(pathSeg) {\n                 if (first) {\n                     first = false;\n                     string += pathSeg._asPathString();\n                 } else {\n                     string += \" \" + pathSeg._asPathString();\n                 }\n             });\n             return string;\n         }\n\n         // This closely follows SVGPathParser::parsePath from Source/core/svg/SVGPathParser.cpp.\n         SVGPathSegList.prototype._parsePath = function(string) {\n             if (!string || string.length == 0)\n                 return [];\n\n             var owningPathSegList = this;\n\n             var Builder = function() {\n                 this.pathSegList = [];\n             }\n\n             Builder.prototype.appendSegment = function(pathSeg) {\n                 this.pathSegList.push(pathSeg);\n             }\n\n             var Source = function(string) {\n                 this._string = string;\n                 this._currentIndex = 0;\n                 this._endIndex = this._string.length;\n                 this._previousCommand = SVGPathSeg.PATHSEG_UNKNOWN;\n\n                 this._skipOptionalSpaces();\n             }\n\n             Source.prototype._isCurrentSpace = function() {\n                 var character = this._string[this._currentIndex];\n                 return character <= \" \" && (character == \" \" || character == \"\\n\" || character == \"\\t\" || character == \"\\r\" || character == \"\\f\");\n             }\n\n             Source.prototype._skipOptionalSpaces = function() {\n                 while (this._currentIndex < this._endIndex && this._isCurrentSpace())\n                     this._currentIndex++;\n                 return this._currentIndex < this._endIndex;\n             }\n\n             Source.prototype._skipOptionalSpacesOrDelimiter = function() {\n                 if (this._currentIndex < this._endIndex && !this._isCurrentSpace() && this._string.charAt(this._currentIndex) != \",\")\n                     return false;\n                 if (this._skipOptionalSpaces()) {\n                     if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \",\") {\n                         this._currentIndex++;\n                         this._skipOptionalSpaces();\n                     }\n                 }\n                 return this._currentIndex < this._endIndex;\n             }\n\n             Source.prototype.hasMoreData = function() {\n                 return this._currentIndex < this._endIndex;\n             }\n\n             Source.prototype.peekSegmentType = function() {\n                 var lookahead = this._string[this._currentIndex];\n                 return this._pathSegTypeFromChar(lookahead);\n             }\n\n             Source.prototype._pathSegTypeFromChar = function(lookahead) {\n                 switch (lookahead) {\n                 case \"Z\":\n                 case \"z\":\n                     return SVGPathSeg.PATHSEG_CLOSEPATH;\n                 case \"M\":\n                     return SVGPathSeg.PATHSEG_MOVETO_ABS;\n                 case \"m\":\n                     return SVGPathSeg.PATHSEG_MOVETO_REL;\n                 case \"L\":\n                     return SVGPathSeg.PATHSEG_LINETO_ABS;\n                 case \"l\":\n                     return SVGPathSeg.PATHSEG_LINETO_REL;\n                 case \"C\":\n                     return SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS;\n                 case \"c\":\n                     return SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL;\n                 case \"Q\":\n                     return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS;\n                 case \"q\":\n                     return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL;\n                 case \"A\":\n                     return SVGPathSeg.PATHSEG_ARC_ABS;\n                 case \"a\":\n                     return SVGPathSeg.PATHSEG_ARC_REL;\n                 case \"H\":\n                     return SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS;\n                 case \"h\":\n                     return SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL;\n                 case \"V\":\n                     return SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS;\n                 case \"v\":\n                     return SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL;\n                 case \"S\":\n                     return SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS;\n                 case \"s\":\n                     return SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL;\n                 case \"T\":\n                     return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS;\n                 case \"t\":\n                     return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL;\n                 default:\n                     return SVGPathSeg.PATHSEG_UNKNOWN;\n                 }\n             }\n\n             Source.prototype._nextCommandHelper = function(lookahead, previousCommand) {\n                 // Check for remaining coordinates in the current command.\n                 if ((lookahead == \"+\" || lookahead == \"-\" || lookahead == \".\" || (lookahead >= \"0\" && lookahead <= \"9\")) && previousCommand != SVGPathSeg.PATHSEG_CLOSEPATH) {\n                     if (previousCommand == SVGPathSeg.PATHSEG_MOVETO_ABS)\n                         return SVGPathSeg.PATHSEG_LINETO_ABS;\n                     if (previousCommand == SVGPathSeg.PATHSEG_MOVETO_REL)\n                         return SVGPathSeg.PATHSEG_LINETO_REL;\n                     return previousCommand;\n                 }\n                 return SVGPathSeg.PATHSEG_UNKNOWN;\n             }\n\n             Source.prototype.initialCommandIsMoveTo = function() {\n                 // If the path is empty it is still valid, so return true.\n                 if (!this.hasMoreData())\n                     return true;\n                 var command = this.peekSegmentType();\n                 // Path must start with moveTo.\n                 return command == SVGPathSeg.PATHSEG_MOVETO_ABS || command == SVGPathSeg.PATHSEG_MOVETO_REL;\n             }\n\n             // Parse a number from an SVG path. This very closely follows genericParseNumber(...) from Source/core/svg/SVGParserUtilities.cpp.\n             // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-PathDataBNF\n             Source.prototype._parseNumber = function() {\n                 var exponent = 0;\n                 var integer = 0;\n                 var frac = 1;\n                 var decimal = 0;\n                 var sign = 1;\n                 var expsign = 1;\n\n                 var startIndex = this._currentIndex;\n\n                 this._skipOptionalSpaces();\n\n                 // Read the sign.\n                 if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \"+\")\n                     this._currentIndex++;\n                 else if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \"-\") {\n                     this._currentIndex++;\n                     sign = -1;\n                 }\n\n                 if (this._currentIndex == this._endIndex || ((this._string.charAt(this._currentIndex) < \"0\" || this._string.charAt(this._currentIndex) > \"9\") && this._string.charAt(this._currentIndex) != \".\"))\n                     // The first character of a number must be one of [0-9+-.].\n                     return undefined;\n\n                 // Read the integer part, build right-to-left.\n                 var startIntPartIndex = this._currentIndex;\n                 while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= \"0\" && this._string.charAt(this._currentIndex) <= \"9\")\n                     this._currentIndex++; // Advance to first non-digit.\n\n                 if (this._currentIndex != startIntPartIndex) {\n                     var scanIntPartIndex = this._currentIndex - 1;\n                     var multiplier = 1;\n                     while (scanIntPartIndex >= startIntPartIndex) {\n                         integer += multiplier * (this._string.charAt(scanIntPartIndex--) - \"0\");\n                         multiplier *= 10;\n                     }\n                 }\n\n                 // Read the decimals.\n                 if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \".\") {\n                     this._currentIndex++;\n\n                     // There must be a least one digit following the .\n                     if (this._currentIndex >= this._endIndex || this._string.charAt(this._currentIndex) < \"0\" || this._string.charAt(this._currentIndex) > \"9\")\n                         return undefined;\n                     while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= \"0\" && this._string.charAt(this._currentIndex) <= \"9\")\n                         decimal += (this._string.charAt(this._currentIndex++) - \"0\") * (frac *= 0.1);\n                 }\n\n                 // Read the exponent part.\n                 if (this._currentIndex != startIndex && this._currentIndex + 1 < this._endIndex && (this._string.charAt(this._currentIndex) == \"e\" || this._string.charAt(this._currentIndex) == \"E\") && (this._string.charAt(this._currentIndex + 1) != \"x\" && this._string.charAt(this._currentIndex + 1) != \"m\")) {\n                     this._currentIndex++;\n\n                     // Read the sign of the exponent.\n                     if (this._string.charAt(this._currentIndex) == \"+\") {\n                         this._currentIndex++;\n                     } else if (this._string.charAt(this._currentIndex) == \"-\") {\n                         this._currentIndex++;\n                         expsign = -1;\n                     }\n\n                     // There must be an exponent.\n                     if (this._currentIndex >= this._endIndex || this._string.charAt(this._currentIndex) < \"0\" || this._string.charAt(this._currentIndex) > \"9\")\n                         return undefined;\n\n                     while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= \"0\" && this._string.charAt(this._currentIndex) <= \"9\") {\n                         exponent *= 10;\n                         exponent += (this._string.charAt(this._currentIndex) - \"0\");\n                         this._currentIndex++;\n                     }\n                 }\n\n                 var number = integer + decimal;\n                 number *= sign;\n\n                 if (exponent)\n                     number *= Math.pow(10, expsign * exponent);\n\n                 if (startIndex == this._currentIndex)\n                     return undefined;\n\n                 this._skipOptionalSpacesOrDelimiter();\n\n                 return number;\n             }\n\n             Source.prototype._parseArcFlag = function() {\n                 if (this._currentIndex >= this._endIndex)\n                     return undefined;\n                 var flag = false;\n                 var flagChar = this._string.charAt(this._currentIndex++);\n                 if (flagChar == \"0\")\n                     flag = false;\n                 else if (flagChar == \"1\")\n                     flag = true;\n                 else\n                     return undefined;\n\n                 this._skipOptionalSpacesOrDelimiter();\n                 return flag;\n             }\n\n             Source.prototype.parseSegment = function() {\n                 var lookahead = this._string[this._currentIndex];\n                 var command = this._pathSegTypeFromChar(lookahead);\n                 if (command == SVGPathSeg.PATHSEG_UNKNOWN) {\n                     // Possibly an implicit command. Not allowed if this is the first command.\n                     if (this._previousCommand == SVGPathSeg.PATHSEG_UNKNOWN)\n                         return null;\n                     command = this._nextCommandHelper(lookahead, this._previousCommand);\n                     if (command == SVGPathSeg.PATHSEG_UNKNOWN)\n                         return null;\n                 } else {\n                     this._currentIndex++;\n                 }\n\n                 this._previousCommand = command;\n\n                 switch (command) {\n                 case SVGPathSeg.PATHSEG_MOVETO_REL:\n                     return new SVGPathSegMovetoRel(owningPathSegList, this._parseNumber(), this._parseNumber());\n                 case SVGPathSeg.PATHSEG_MOVETO_ABS:\n                     return new SVGPathSegMovetoAbs(owningPathSegList, this._parseNumber(), this._parseNumber());\n                 case SVGPathSeg.PATHSEG_LINETO_REL:\n                     return new SVGPathSegLinetoRel(owningPathSegList, this._parseNumber(), this._parseNumber());\n                 case SVGPathSeg.PATHSEG_LINETO_ABS:\n                     return new SVGPathSegLinetoAbs(owningPathSegList, this._parseNumber(), this._parseNumber());\n                 case SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL:\n                     return new SVGPathSegLinetoHorizontalRel(owningPathSegList, this._parseNumber());\n                 case SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS:\n                     return new SVGPathSegLinetoHorizontalAbs(owningPathSegList, this._parseNumber());\n                 case SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL:\n                     return new SVGPathSegLinetoVerticalRel(owningPathSegList, this._parseNumber());\n                 case SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS:\n                     return new SVGPathSegLinetoVerticalAbs(owningPathSegList, this._parseNumber());\n                 case SVGPathSeg.PATHSEG_CLOSEPATH:\n                     this._skipOptionalSpaces();\n                     return new SVGPathSegClosePath(owningPathSegList);\n                 case SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL:\n                     var points = {x1: this._parseNumber(), y1: this._parseNumber(), x2: this._parseNumber(), y2: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber()};\n                     return new SVGPathSegCurvetoCubicRel(owningPathSegList, points.x, points.y, points.x1, points.y1, points.x2, points.y2);\n                 case SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS:\n                     var points = {x1: this._parseNumber(), y1: this._parseNumber(), x2: this._parseNumber(), y2: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber()};\n                     return new SVGPathSegCurvetoCubicAbs(owningPathSegList, points.x, points.y, points.x1, points.y1, points.x2, points.y2);\n                 case SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL:\n                     var points = {x2: this._parseNumber(), y2: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber()};\n                     return new SVGPathSegCurvetoCubicSmoothRel(owningPathSegList, points.x, points.y, points.x2, points.y2);\n                 case SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS:\n                     var points = {x2: this._parseNumber(), y2: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber()};\n                     return new SVGPathSegCurvetoCubicSmoothAbs(owningPathSegList, points.x, points.y, points.x2, points.y2);\n                 case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL:\n                     var points = {x1: this._parseNumber(), y1: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber()};\n                     return new SVGPathSegCurvetoQuadraticRel(owningPathSegList, points.x, points.y, points.x1, points.y1);\n                 case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS:\n                     var points = {x1: this._parseNumber(), y1: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber()};\n                     return new SVGPathSegCurvetoQuadraticAbs(owningPathSegList, points.x, points.y, points.x1, points.y1);\n                 case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL:\n                     return new SVGPathSegCurvetoQuadraticSmoothRel(owningPathSegList, this._parseNumber(), this._parseNumber());\n                 case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS:\n                     return new SVGPathSegCurvetoQuadraticSmoothAbs(owningPathSegList, this._parseNumber(), this._parseNumber());\n                 case SVGPathSeg.PATHSEG_ARC_REL:\n                     var points = {x1: this._parseNumber(), y1: this._parseNumber(), arcAngle: this._parseNumber(), arcLarge: this._parseArcFlag(), arcSweep: this._parseArcFlag(), x: this._parseNumber(), y: this._parseNumber()};\n                     return new SVGPathSegArcRel(owningPathSegList, points.x, points.y, points.x1, points.y1, points.arcAngle, points.arcLarge, points.arcSweep);\n                 case SVGPathSeg.PATHSEG_ARC_ABS:\n                     var points = {x1: this._parseNumber(), y1: this._parseNumber(), arcAngle: this._parseNumber(), arcLarge: this._parseArcFlag(), arcSweep: this._parseArcFlag(), x: this._parseNumber(), y: this._parseNumber()};\n                     return new SVGPathSegArcAbs(owningPathSegList, points.x, points.y, points.x1, points.y1, points.arcAngle, points.arcLarge, points.arcSweep);\n                 default:\n                     throw \"Unknown path seg type.\"\n                 }\n             }\n\n             var builder = new Builder();\n             var source = new Source(string);\n\n             if (!source.initialCommandIsMoveTo())\n                 return [];\n             while (source.hasMoreData()) {\n                 var pathSeg = source.parseSegment();\n                 if (!pathSeg)\n                     return [];\n                 builder.appendSegment(pathSeg);\n             }\n\n             return builder.pathSegList;\n         }\n     }\n    }());\n\n    /* jshint ignore:end */\n\n    if (typeof define === 'function' && define.amd) {\n        define(\"c3\", [\"d3\"], function () { return c3; });\n    } else if ('undefined' !== typeof exports && 'undefined' !== typeof module) {\n        module.exports = c3;\n    } else {\n        window.c3 = c3;\n    }\n\n})(window);\n\n","// svg-pan-zoom v3.5.1\n// https://github.com/ariutta/svg-pan-zoom\n!function t(e,n,o){function i(r,a){if(!n[r]){if(!e[r]){var l=\"function\"==typeof require&&require;if(!a&&l)return l(r,!0);if(s)return s(r,!0);var u=new Error(\"Cannot find module '\"+r+\"'\");throw u.code=\"MODULE_NOT_FOUND\",u}var h=n[r]={exports:{}};e[r][0].call(h.exports,function(t){var n=e[r][1][t];return i(n?n:t)},h,h.exports,t,e,n,o)}return n[r].exports}for(var s=\"function\"==typeof require&&require,r=0;r<o.length;r++)i(o[r]);return i}({1:[function(t,e,n){var o=t(\"./svg-pan-zoom.js\");!function(t,n){\"function\"==typeof define&&define.amd?define(\"svg-pan-zoom\",[],function(){return o}):\"undefined\"!=typeof e&&e.exports&&(e.exports=o,t.svgPanZoom=o)}(window,document)},{\"./svg-pan-zoom.js\":4}],2:[function(t,e,n){var o=t(\"./svg-utilities\");e.exports={enable:function(t){var e=t.svg.querySelector(\"defs\");e||(e=document.createElementNS(o.svgNS,\"defs\"),t.svg.appendChild(e));var n=e.querySelector(\"style#svg-pan-zoom-controls-styles\");if(!n){var i=document.createElementNS(o.svgNS,\"style\");i.setAttribute(\"id\",\"svg-pan-zoom-controls-styles\"),i.setAttribute(\"type\",\"text/css\"),i.textContent=\".svg-pan-zoom-control { cursor: pointer; fill: black; fill-opacity: 0.333; } .svg-pan-zoom-control:hover { fill-opacity: 0.8; } .svg-pan-zoom-control-background { fill: white; fill-opacity: 0.5; } .svg-pan-zoom-control-background { fill-opacity: 0.8; }\",e.appendChild(i)}var s=document.createElementNS(o.svgNS,\"g\");s.setAttribute(\"id\",\"svg-pan-zoom-controls\"),s.setAttribute(\"transform\",\"translate(\"+(t.width-70)+\" \"+(t.height-76)+\") scale(0.75)\"),s.setAttribute(\"class\",\"svg-pan-zoom-control\"),s.appendChild(this._createZoomIn(t)),s.appendChild(this._createZoomReset(t)),s.appendChild(this._createZoomOut(t)),t.svg.appendChild(s),t.controlIcons=s},_createZoomIn:function(t){var e=document.createElementNS(o.svgNS,\"g\");e.setAttribute(\"id\",\"svg-pan-zoom-zoom-in\"),e.setAttribute(\"transform\",\"translate(30.5 5) scale(0.015)\"),e.setAttribute(\"class\",\"svg-pan-zoom-control\"),e.addEventListener(\"click\",function(){t.getPublicInstance().zoomIn()},!1),e.addEventListener(\"touchstart\",function(){t.getPublicInstance().zoomIn()},!1);var n=document.createElementNS(o.svgNS,\"rect\");n.setAttribute(\"x\",\"0\"),n.setAttribute(\"y\",\"0\"),n.setAttribute(\"width\",\"1500\"),n.setAttribute(\"height\",\"1400\"),n.setAttribute(\"class\",\"svg-pan-zoom-control-background\"),e.appendChild(n);var i=document.createElementNS(o.svgNS,\"path\");return i.setAttribute(\"d\",\"M1280 576v128q0 26 -19 45t-45 19h-320v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-320q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h320v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h320q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z\"),i.setAttribute(\"class\",\"svg-pan-zoom-control-element\"),e.appendChild(i),e},_createZoomReset:function(t){var e=document.createElementNS(o.svgNS,\"g\");e.setAttribute(\"id\",\"svg-pan-zoom-reset-pan-zoom\"),e.setAttribute(\"transform\",\"translate(5 35) scale(0.4)\"),e.setAttribute(\"class\",\"svg-pan-zoom-control\"),e.addEventListener(\"click\",function(){t.getPublicInstance().reset()},!1),e.addEventListener(\"touchstart\",function(){t.getPublicInstance().reset()},!1);var n=document.createElementNS(o.svgNS,\"rect\");n.setAttribute(\"x\",\"2\"),n.setAttribute(\"y\",\"2\"),n.setAttribute(\"width\",\"182\"),n.setAttribute(\"height\",\"58\"),n.setAttribute(\"class\",\"svg-pan-zoom-control-background\"),e.appendChild(n);var i=document.createElementNS(o.svgNS,\"path\");i.setAttribute(\"d\",\"M33.051,20.632c-0.742-0.406-1.854-0.609-3.338-0.609h-7.969v9.281h7.769c1.543,0,2.701-0.188,3.473-0.562c1.365-0.656,2.048-1.953,2.048-3.891C35.032,22.757,34.372,21.351,33.051,20.632z\"),i.setAttribute(\"class\",\"svg-pan-zoom-control-element\"),e.appendChild(i);var s=document.createElementNS(o.svgNS,\"path\");return s.setAttribute(\"d\",\"M170.231,0.5H15.847C7.102,0.5,0.5,5.708,0.5,11.84v38.861C0.5,56.833,7.102,61.5,15.847,61.5h154.384c8.745,0,15.269-4.667,15.269-10.798V11.84C185.5,5.708,178.976,0.5,170.231,0.5z M42.837,48.569h-7.969c-0.219-0.766-0.375-1.383-0.469-1.852c-0.188-0.969-0.289-1.961-0.305-2.977l-0.047-3.211c-0.03-2.203-0.41-3.672-1.142-4.406c-0.732-0.734-2.103-1.102-4.113-1.102h-7.05v13.547h-7.055V14.022h16.524c2.361,0.047,4.178,0.344,5.45,0.891c1.272,0.547,2.351,1.352,3.234,2.414c0.731,0.875,1.31,1.844,1.737,2.906s0.64,2.273,0.64,3.633c0,1.641-0.414,3.254-1.242,4.84s-2.195,2.707-4.102,3.363c1.594,0.641,2.723,1.551,3.387,2.73s0.996,2.98,0.996,5.402v2.32c0,1.578,0.063,2.648,0.19,3.211c0.19,0.891,0.635,1.547,1.333,1.969V48.569z M75.579,48.569h-26.18V14.022h25.336v6.117H56.454v7.336h16.781v6H56.454v8.883h19.125V48.569z M104.497,46.331c-2.44,2.086-5.887,3.129-10.34,3.129c-4.548,0-8.125-1.027-10.731-3.082s-3.909-4.879-3.909-8.473h6.891c0.224,1.578,0.662,2.758,1.316,3.539c1.196,1.422,3.246,2.133,6.15,2.133c1.739,0,3.151-0.188,4.236-0.562c2.058-0.719,3.087-2.055,3.087-4.008c0-1.141-0.504-2.023-1.512-2.648c-1.008-0.609-2.607-1.148-4.796-1.617l-3.74-0.82c-3.676-0.812-6.201-1.695-7.576-2.648c-2.328-1.594-3.492-4.086-3.492-7.477c0-3.094,1.139-5.664,3.417-7.711s5.623-3.07,10.036-3.07c3.685,0,6.829,0.965,9.431,2.895c2.602,1.93,3.966,4.73,4.093,8.402h-6.938c-0.128-2.078-1.057-3.555-2.787-4.43c-1.154-0.578-2.587-0.867-4.301-0.867c-1.907,0-3.428,0.375-4.565,1.125c-1.138,0.75-1.706,1.797-1.706,3.141c0,1.234,0.561,2.156,1.682,2.766c0.721,0.406,2.25,0.883,4.589,1.43l6.063,1.43c2.657,0.625,4.648,1.461,5.975,2.508c2.059,1.625,3.089,3.977,3.089,7.055C108.157,41.624,106.937,44.245,104.497,46.331z M139.61,48.569h-26.18V14.022h25.336v6.117h-18.281v7.336h16.781v6h-16.781v8.883h19.125V48.569z M170.337,20.14h-10.336v28.43h-7.266V20.14h-10.383v-6.117h27.984V20.14z\"),s.setAttribute(\"class\",\"svg-pan-zoom-control-element\"),e.appendChild(s),e},_createZoomOut:function(t){var e=document.createElementNS(o.svgNS,\"g\");e.setAttribute(\"id\",\"svg-pan-zoom-zoom-out\"),e.setAttribute(\"transform\",\"translate(30.5 70) scale(0.015)\"),e.setAttribute(\"class\",\"svg-pan-zoom-control\"),e.addEventListener(\"click\",function(){t.getPublicInstance().zoomOut()},!1),e.addEventListener(\"touchstart\",function(){t.getPublicInstance().zoomOut()},!1);var n=document.createElementNS(o.svgNS,\"rect\");n.setAttribute(\"x\",\"0\"),n.setAttribute(\"y\",\"0\"),n.setAttribute(\"width\",\"1500\"),n.setAttribute(\"height\",\"1400\"),n.setAttribute(\"class\",\"svg-pan-zoom-control-background\"),e.appendChild(n);var i=document.createElementNS(o.svgNS,\"path\");return i.setAttribute(\"d\",\"M1280 576v128q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h896q26 0 45 19t19 45zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z\"),i.setAttribute(\"class\",\"svg-pan-zoom-control-element\"),e.appendChild(i),e},disable:function(t){t.controlIcons&&(t.controlIcons.parentNode.removeChild(t.controlIcons),t.controlIcons=null)}}},{\"./svg-utilities\":5}],3:[function(t,e,n){var o=t(\"./svg-utilities\"),i=t(\"./utilities\"),s=function(t,e){this.init(t,e)};s.prototype.init=function(t,e){this.viewport=t,this.options=e,this.originalState={zoom:1,x:0,y:0},this.activeState={zoom:1,x:0,y:0},this.updateCTMCached=i.proxy(this.updateCTM,this),this.requestAnimationFrame=i.createRequestAnimationFrame(this.options.refreshRate),this.viewBox={x:0,y:0,width:0,height:0},this.cacheViewBox();var n=this.processCTM();this.setCTM(n),this.updateCTM()},s.prototype.cacheViewBox=function(){var t=this.options.svg.getAttribute(\"viewBox\");if(t){var e=t.split(/[\\s\\,]/).filter(function(t){return t}).map(parseFloat);this.viewBox.x=e[0],this.viewBox.y=e[1],this.viewBox.width=e[2],this.viewBox.height=e[3];var n=Math.min(this.options.width/this.viewBox.width,this.options.height/this.viewBox.height);this.activeState.zoom=n,this.activeState.x=(this.options.width-this.viewBox.width*n)/2,this.activeState.y=(this.options.height-this.viewBox.height*n)/2,this.updateCTMOnNextFrame(),this.options.svg.removeAttribute(\"viewBox\")}else this.simpleViewBoxCache()},s.prototype.simpleViewBoxCache=function(){var t=this.viewport.getBBox();this.viewBox.x=t.x,this.viewBox.y=t.y,this.viewBox.width=t.width,this.viewBox.height=t.height},s.prototype.getViewBox=function(){return i.extend({},this.viewBox)},s.prototype.processCTM=function(){var t=this.getCTM();if(this.options.fit||this.options.contain){var e;e=this.options.fit?Math.min(this.options.width/this.viewBox.width,this.options.height/this.viewBox.height):Math.max(this.options.width/this.viewBox.width,this.options.height/this.viewBox.height),t.a=e,t.d=e,t.e=-this.viewBox.x*e,t.f=-this.viewBox.y*e}if(this.options.center){var n=.5*(this.options.width-(this.viewBox.width+2*this.viewBox.x)*t.a),o=.5*(this.options.height-(this.viewBox.height+2*this.viewBox.y)*t.a);t.e=n,t.f=o}return this.originalState.zoom=t.a,this.originalState.x=t.e,this.originalState.y=t.f,t},s.prototype.getOriginalState=function(){return i.extend({},this.originalState)},s.prototype.getState=function(){return i.extend({},this.activeState)},s.prototype.getZoom=function(){return this.activeState.zoom},s.prototype.getRelativeZoom=function(){return this.activeState.zoom/this.originalState.zoom},s.prototype.computeRelativeZoom=function(t){return t/this.originalState.zoom},s.prototype.getPan=function(){return{x:this.activeState.x,y:this.activeState.y}},s.prototype.getCTM=function(){var t=this.options.svg.createSVGMatrix();return t.a=this.activeState.zoom,t.b=0,t.c=0,t.d=this.activeState.zoom,t.e=this.activeState.x,t.f=this.activeState.y,t},s.prototype.setCTM=function(t){var e=this.isZoomDifferent(t),n=this.isPanDifferent(t);if(e||n){if(e&&(this.options.beforeZoom(this.getRelativeZoom(),this.computeRelativeZoom(t.a))===!1?(t.a=t.d=this.activeState.zoom,e=!1):(this.updateCache(t),this.options.onZoom(this.getRelativeZoom()))),n){var o=this.options.beforePan(this.getPan(),{x:t.e,y:t.f}),s=!1,r=!1;o===!1?(t.e=this.getPan().x,t.f=this.getPan().y,s=r=!0):i.isObject(o)&&(o.x===!1?(t.e=this.getPan().x,s=!0):i.isNumber(o.x)&&(t.e=o.x),o.y===!1?(t.f=this.getPan().y,r=!0):i.isNumber(o.y)&&(t.f=o.y)),s&&r||!this.isPanDifferent(t)?n=!1:(this.updateCache(t),this.options.onPan(this.getPan()))}(e||n)&&this.updateCTMOnNextFrame()}},s.prototype.isZoomDifferent=function(t){return this.activeState.zoom!==t.a},s.prototype.isPanDifferent=function(t){return this.activeState.x!==t.e||this.activeState.y!==t.f},s.prototype.updateCache=function(t){this.activeState.zoom=t.a,this.activeState.x=t.e,this.activeState.y=t.f},s.prototype.pendingUpdate=!1,s.prototype.updateCTMOnNextFrame=function(){this.pendingUpdate||(this.pendingUpdate=!0,this.requestAnimationFrame.call(window,this.updateCTMCached))},s.prototype.updateCTM=function(){var t=this.getCTM();o.setCTM(this.viewport,t,this.defs),this.pendingUpdate=!1,this.options.onUpdatedCTM&&this.options.onUpdatedCTM(t)},e.exports=function(t,e){return new s(t,e)}},{\"./svg-utilities\":5,\"./utilities\":7}],4:[function(t,e,n){var o=t(\"./uniwheel\"),i=t(\"./control-icons\"),s=t(\"./utilities\"),r=t(\"./svg-utilities\"),a=t(\"./shadow-viewport\"),l=function(t,e){this.init(t,e)},u={viewportSelector:\".svg-pan-zoom_viewport\",panEnabled:!0,controlIconsEnabled:!1,zoomEnabled:!0,dblClickZoomEnabled:!0,mouseWheelZoomEnabled:!0,preventMouseEventsDefault:!0,zoomScaleSensitivity:.1,minZoom:.5,maxZoom:10,fit:!0,contain:!1,center:!0,refreshRate:\"auto\",beforeZoom:null,onZoom:null,beforePan:null,onPan:null,customEventsHandler:null,eventsListenerElement:null,onUpdatedCTM:null};l.prototype.init=function(t,e){var n=this;this.svg=t,this.defs=t.querySelector(\"defs\"),r.setupSvgAttributes(this.svg),this.options=s.extend(s.extend({},u),e),this.state=\"none\";var o=r.getBoundingClientRectNormalized(t);this.width=o.width,this.height=o.height,this.viewport=a(r.getOrCreateViewport(this.svg,this.options.viewportSelector),{svg:this.svg,width:this.width,height:this.height,fit:this.options.fit,contain:this.options.contain,center:this.options.center,refreshRate:this.options.refreshRate,beforeZoom:function(t,e){return n.viewport&&n.options.beforeZoom?n.options.beforeZoom(t,e):void 0},onZoom:function(t){return n.viewport&&n.options.onZoom?n.options.onZoom(t):void 0},beforePan:function(t,e){return n.viewport&&n.options.beforePan?n.options.beforePan(t,e):void 0},onPan:function(t){return n.viewport&&n.options.onPan?n.options.onPan(t):void 0},onUpdatedCTM:function(t){return n.viewport&&n.options.onUpdatedCTM?n.options.onUpdatedCTM(t):void 0}});var l=this.getPublicInstance();l.setBeforeZoom(this.options.beforeZoom),l.setOnZoom(this.options.onZoom),l.setBeforePan(this.options.beforePan),l.setOnPan(this.options.onPan),l.setOnUpdatedCTM(this.options.onUpdatedCTM),this.options.controlIconsEnabled&&i.enable(this),this.lastMouseWheelEventTime=Date.now(),this.setupHandlers()},l.prototype.setupHandlers=function(){var t=this,e=null;if(this.eventListeners={mousedown:function(n){var o=t.handleMouseDown(n,e);return e=n,o},touchstart:function(n){var o=t.handleMouseDown(n,e);return e=n,o},mouseup:function(e){return t.handleMouseUp(e)},touchend:function(e){return t.handleMouseUp(e)},mousemove:function(e){return t.handleMouseMove(e)},touchmove:function(e){return t.handleMouseMove(e)},mouseleave:function(e){return t.handleMouseUp(e)},touchleave:function(e){return t.handleMouseUp(e)},touchcancel:function(e){return t.handleMouseUp(e)}},null!=this.options.customEventsHandler){this.options.customEventsHandler.init({svgElement:this.svg,eventsListenerElement:this.options.eventsListenerElement,instance:this.getPublicInstance()});var n=this.options.customEventsHandler.haltEventListeners;if(n&&n.length)for(var o=n.length-1;o>=0;o--)this.eventListeners.hasOwnProperty(n[o])&&delete this.eventListeners[n[o]]}for(var i in this.eventListeners)(this.options.eventsListenerElement||this.svg).addEventListener(i,this.eventListeners[i],!1);this.options.mouseWheelZoomEnabled&&(this.options.mouseWheelZoomEnabled=!1,this.enableMouseWheelZoom())},l.prototype.enableMouseWheelZoom=function(){if(!this.options.mouseWheelZoomEnabled){var t=this;this.wheelListener=function(e){return t.handleMouseWheel(e)},o.on(this.options.eventsListenerElement||this.svg,this.wheelListener,!1),this.options.mouseWheelZoomEnabled=!0}},l.prototype.disableMouseWheelZoom=function(){this.options.mouseWheelZoomEnabled&&(o.off(this.options.eventsListenerElement||this.svg,this.wheelListener,!1),this.options.mouseWheelZoomEnabled=!1)},l.prototype.handleMouseWheel=function(t){if(this.options.zoomEnabled&&\"none\"===this.state){this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1);var e=t.deltaY||1,n=Date.now()-this.lastMouseWheelEventTime,o=3+Math.max(0,30-n);this.lastMouseWheelEventTime=Date.now(),\"deltaMode\"in t&&0===t.deltaMode&&t.wheelDelta&&(e=0===t.deltaY?0:Math.abs(t.wheelDelta)/t.deltaY),e=e>-.3&&.3>e?e:(e>0?1:-1)*Math.log(Math.abs(e)+10)/o;var i=this.svg.getScreenCTM().inverse(),s=r.getEventPoint(t,this.svg).matrixTransform(i),a=Math.pow(1+this.options.zoomScaleSensitivity,-1*e);this.zoomAtPoint(a,s)}},l.prototype.zoomAtPoint=function(t,e,n){var o=this.viewport.getOriginalState();n?(t=Math.max(this.options.minZoom*o.zoom,Math.min(this.options.maxZoom*o.zoom,t)),t/=this.getZoom()):this.getZoom()*t<this.options.minZoom*o.zoom?t=this.options.minZoom*o.zoom/this.getZoom():this.getZoom()*t>this.options.maxZoom*o.zoom&&(t=this.options.maxZoom*o.zoom/this.getZoom());var i=this.viewport.getCTM(),s=e.matrixTransform(i.inverse()),r=this.svg.createSVGMatrix().translate(s.x,s.y).scale(t).translate(-s.x,-s.y),a=i.multiply(r);a.a!==i.a&&this.viewport.setCTM(a)},l.prototype.zoom=function(t,e){this.zoomAtPoint(t,r.getSvgCenterPoint(this.svg,this.width,this.height),e)},l.prototype.publicZoom=function(t,e){e&&(t=this.computeFromRelativeZoom(t)),this.zoom(t,e)},l.prototype.publicZoomAtPoint=function(t,e,n){if(n&&(t=this.computeFromRelativeZoom(t)),\"SVGPoint\"!==s.getType(e)){if(!(\"x\"in e&&\"y\"in e))throw new Error(\"Given point is invalid\");e=r.createSVGPoint(this.svg,e.x,e.y)}this.zoomAtPoint(t,e,n)},l.prototype.getZoom=function(){return this.viewport.getZoom()},l.prototype.getRelativeZoom=function(){return this.viewport.getRelativeZoom()},l.prototype.computeFromRelativeZoom=function(t){return t*this.viewport.getOriginalState().zoom},l.prototype.resetZoom=function(){var t=this.viewport.getOriginalState();this.zoom(t.zoom,!0)},l.prototype.resetPan=function(){this.pan(this.viewport.getOriginalState())},l.prototype.reset=function(){this.resetZoom(),this.resetPan()},l.prototype.handleDblClick=function(t){if(this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1),this.options.controlIconsEnabled){var e=t.target.getAttribute(\"class\")||\"\";if(e.indexOf(\"svg-pan-zoom-control\")>-1)return!1}var n;n=t.shiftKey?1/(2*(1+this.options.zoomScaleSensitivity)):2*(1+this.options.zoomScaleSensitivity);var o=r.getEventPoint(t,this.svg).matrixTransform(this.svg.getScreenCTM().inverse());this.zoomAtPoint(n,o)},l.prototype.handleMouseDown=function(t,e){this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1),s.mouseAndTouchNormalize(t,this.svg),this.options.dblClickZoomEnabled&&s.isDblClick(t,e)?this.handleDblClick(t):(this.state=\"pan\",this.firstEventCTM=this.viewport.getCTM(),this.stateOrigin=r.getEventPoint(t,this.svg).matrixTransform(this.firstEventCTM.inverse()))},l.prototype.handleMouseMove=function(t){if(this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1),\"pan\"===this.state&&this.options.panEnabled){var e=r.getEventPoint(t,this.svg).matrixTransform(this.firstEventCTM.inverse()),n=this.firstEventCTM.translate(e.x-this.stateOrigin.x,e.y-this.stateOrigin.y);this.viewport.setCTM(n)}},l.prototype.handleMouseUp=function(t){this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1),\"pan\"===this.state&&(this.state=\"none\")},l.prototype.fit=function(){var t=this.viewport.getViewBox(),e=Math.min(this.width/t.width,this.height/t.height);this.zoom(e,!0)},l.prototype.contain=function(){var t=this.viewport.getViewBox(),e=Math.max(this.width/t.width,this.height/t.height);this.zoom(e,!0)},l.prototype.center=function(){var t=this.viewport.getViewBox(),e=.5*(this.width-(t.width+2*t.x)*this.getZoom()),n=.5*(this.height-(t.height+2*t.y)*this.getZoom());this.getPublicInstance().pan({x:e,y:n})},l.prototype.updateBBox=function(){this.viewport.simpleViewBoxCache()},l.prototype.pan=function(t){var e=this.viewport.getCTM();e.e=t.x,e.f=t.y,this.viewport.setCTM(e)},l.prototype.panBy=function(t){var e=this.viewport.getCTM();e.e+=t.x,e.f+=t.y,this.viewport.setCTM(e)},l.prototype.getPan=function(){var t=this.viewport.getState();return{x:t.x,y:t.y}},l.prototype.resize=function(){var t=r.getBoundingClientRectNormalized(this.svg);this.width=t.width,this.height=t.height;var e=this.viewport;e.options.width=this.width,e.options.height=this.height,e.processCTM(),this.options.controlIconsEnabled&&(this.getPublicInstance().disableControlIcons(),this.getPublicInstance().enableControlIcons())},l.prototype.destroy=function(){var t=this;this.beforeZoom=null,this.onZoom=null,this.beforePan=null,this.onPan=null,this.onUpdatedCTM=null,null!=this.options.customEventsHandler&&this.options.customEventsHandler.destroy({svgElement:this.svg,eventsListenerElement:this.options.eventsListenerElement,instance:this.getPublicInstance()});for(var e in this.eventListeners)(this.options.eventsListenerElement||this.svg).removeEventListener(e,this.eventListeners[e],!1);this.disableMouseWheelZoom(),this.getPublicInstance().disableControlIcons(),this.reset(),h=h.filter(function(e){return e.svg!==t.svg}),delete this.options,delete this.viewport,delete this.publicInstance,delete this.pi,this.getPublicInstance=function(){return null}},l.prototype.getPublicInstance=function(){var t=this;return this.publicInstance||(this.publicInstance=this.pi={enablePan:function(){return t.options.panEnabled=!0,t.pi},disablePan:function(){return t.options.panEnabled=!1,t.pi},isPanEnabled:function(){return!!t.options.panEnabled},pan:function(e){return t.pan(e),t.pi},panBy:function(e){return t.panBy(e),t.pi},getPan:function(){return t.getPan()},setBeforePan:function(e){return t.options.beforePan=null===e?null:s.proxy(e,t.publicInstance),t.pi},setOnPan:function(e){return t.options.onPan=null===e?null:s.proxy(e,t.publicInstance),t.pi},enableZoom:function(){return t.options.zoomEnabled=!0,t.pi},disableZoom:function(){return t.options.zoomEnabled=!1,t.pi},isZoomEnabled:function(){return!!t.options.zoomEnabled},enableControlIcons:function(){return t.options.controlIconsEnabled||(t.options.controlIconsEnabled=!0,i.enable(t)),t.pi},disableControlIcons:function(){return t.options.controlIconsEnabled&&(t.options.controlIconsEnabled=!1,i.disable(t)),t.pi},isControlIconsEnabled:function(){return!!t.options.controlIconsEnabled},enableDblClickZoom:function(){return t.options.dblClickZoomEnabled=!0,t.pi},disableDblClickZoom:function(){return t.options.dblClickZoomEnabled=!1,t.pi},isDblClickZoomEnabled:function(){return!!t.options.dblClickZoomEnabled},enableMouseWheelZoom:function(){return t.enableMouseWheelZoom(),t.pi},disableMouseWheelZoom:function(){return t.disableMouseWheelZoom(),t.pi},isMouseWheelZoomEnabled:function(){return!!t.options.mouseWheelZoomEnabled},setZoomScaleSensitivity:function(e){return t.options.zoomScaleSensitivity=e,t.pi},setMinZoom:function(e){return t.options.minZoom=e,t.pi},setMaxZoom:function(e){return t.options.maxZoom=e,t.pi},setBeforeZoom:function(e){return t.options.beforeZoom=null===e?null:s.proxy(e,t.publicInstance),t.pi},setOnZoom:function(e){return t.options.onZoom=null===e?null:s.proxy(e,t.publicInstance),t.pi},zoom:function(e){return t.publicZoom(e,!0),t.pi},zoomBy:function(e){return t.publicZoom(e,!1),t.pi},zoomAtPoint:function(e,n){return t.publicZoomAtPoint(e,n,!0),t.pi},zoomAtPointBy:function(e,n){return t.publicZoomAtPoint(e,n,!1),t.pi},zoomIn:function(){return this.zoomBy(1+t.options.zoomScaleSensitivity),t.pi},zoomOut:function(){return this.zoomBy(1/(1+t.options.zoomScaleSensitivity)),t.pi},getZoom:function(){return t.getRelativeZoom()},setOnUpdatedCTM:function(e){return t.options.onUpdatedCTM=null===e?null:s.proxy(e,t.publicInstance),t.pi},resetZoom:function(){return t.resetZoom(),t.pi},resetPan:function(){return t.resetPan(),t.pi},reset:function(){return t.reset(),t.pi},fit:function(){return t.fit(),t.pi},contain:function(){return t.contain(),t.pi},center:function(){return t.center(),t.pi},updateBBox:function(){return t.updateBBox(),t.pi},resize:function(){return t.resize(),t.pi},getSizes:function(){return{width:t.width,height:t.height,realZoom:t.getZoom(),viewBox:t.viewport.getViewBox()}},destroy:function(){return t.destroy(),t.pi}}),this.publicInstance};var h=[],c=function(t,e){var n=s.getSvg(t);if(null===n)return null;for(var o=h.length-1;o>=0;o--)if(h[o].svg===n)return h[o].instance.getPublicInstance();return h.push({svg:n,instance:new l(n,e)}),h[h.length-1].instance.getPublicInstance()};e.exports=c},{\"./control-icons\":2,\"./shadow-viewport\":3,\"./svg-utilities\":5,\"./uniwheel\":6,\"./utilities\":7}],5:[function(t,e,n){var o=t(\"./utilities\"),i=\"unknown\";document.documentMode&&(i=\"ie\"),e.exports={svgNS:\"http://www.w3.org/2000/svg\",xmlNS:\"http://www.w3.org/XML/1998/namespace\",xmlnsNS:\"http://www.w3.org/2000/xmlns/\",xlinkNS:\"http://www.w3.org/1999/xlink\",evNS:\"http://www.w3.org/2001/xml-events\",getBoundingClientRectNormalized:function(t){if(t.clientWidth&&t.clientHeight)return{width:t.clientWidth,height:t.clientHeight};if(t.getBoundingClientRect())return t.getBoundingClientRect();throw new Error(\"Cannot get BoundingClientRect for SVG.\")},getOrCreateViewport:function(t,e){var n=null;if(n=o.isElement(e)?e:t.querySelector(e),!n){var i=Array.prototype.slice.call(t.childNodes||t.children).filter(function(t){return\"defs\"!==t.nodeName&&\"#text\"!==t.nodeName});1===i.length&&\"g\"===i[0].nodeName&&null===i[0].getAttribute(\"transform\")&&(n=i[0])}if(!n){var s=\"viewport-\"+(new Date).toISOString().replace(/\\D/g,\"\");n=document.createElementNS(this.svgNS,\"g\"),n.setAttribute(\"id\",s);var r=t.childNodes||t.children;if(r&&r.length>0)for(var a=r.length;a>0;a--)\"defs\"!==r[r.length-a].nodeName&&n.appendChild(r[r.length-a]);t.appendChild(n)}var l=[];return n.getAttribute(\"class\")&&(l=n.getAttribute(\"class\").split(\" \")),~l.indexOf(\"svg-pan-zoom_viewport\")||(l.push(\"svg-pan-zoom_viewport\"),n.setAttribute(\"class\",l.join(\" \"))),n},setupSvgAttributes:function(t){if(t.setAttribute(\"xmlns\",this.svgNS),t.setAttributeNS(this.xmlnsNS,\"xmlns:xlink\",this.xlinkNS),t.setAttributeNS(this.xmlnsNS,\"xmlns:ev\",this.evNS),null!==t.parentNode){var e=t.getAttribute(\"style\")||\"\";-1===e.toLowerCase().indexOf(\"overflow\")&&t.setAttribute(\"style\",\"overflow: hidden; \"+e)}},internetExplorerRedisplayInterval:300,refreshDefsGlobal:o.throttle(function(){for(var t=document.querySelectorAll(\"defs\"),e=t.length,n=0;e>n;n++){var o=t[n];o.parentNode.insertBefore(o,o)}},this.internetExplorerRedisplayInterval),setCTM:function(t,e,n){var o=this,s=\"matrix(\"+e.a+\",\"+e.b+\",\"+e.c+\",\"+e.d+\",\"+e.e+\",\"+e.f+\")\";t.setAttributeNS(null,\"transform\",s),\"transform\"in t.style?t.style.transform=s:\"-ms-transform\"in t.style?t.style[\"-ms-transform\"]=s:\"-webkit-transform\"in t.style&&(t.style[\"-webkit-transform\"]=s),\"ie\"===i&&n&&(n.parentNode.insertBefore(n,n),window.setTimeout(function(){o.refreshDefsGlobal()},o.internetExplorerRedisplayInterval))},getEventPoint:function(t,e){var n=e.createSVGPoint();return o.mouseAndTouchNormalize(t,e),n.x=t.clientX,n.y=t.clientY,n},getSvgCenterPoint:function(t,e,n){return this.createSVGPoint(t,e/2,n/2)},createSVGPoint:function(t,e,n){var o=t.createSVGPoint();return o.x=e,o.y=n,o}}},{\"./utilities\":7}],6:[function(t,e,n){e.exports=function(){function t(t,e,n){var o=function(t){!t&&(t=window.event);var n={originalEvent:t,target:t.target||t.srcElement,type:\"wheel\",deltaMode:\"MozMousePixelScroll\"==t.type?0:1,deltaX:0,delatZ:0,preventDefault:function(){t.preventDefault?t.preventDefault():t.returnValue=!1}};return\"mousewheel\"==u?(n.deltaY=-1/40*t.wheelDelta,t.wheelDeltaX&&(n.deltaX=-1/40*t.wheelDeltaX)):n.deltaY=t.detail,e(n)};return c.push({element:t,fn:o,capture:n}),o}function e(t,e){for(var n=0;n<c.length;n++)if(c[n].element===t&&c[n].capture===e)return c[n].fn;return function(){}}function n(t,e){for(var n=0;n<c.length;n++)if(c[n].element===t&&c[n].capture===e)return c.splice(n,1)}function o(e,n,o,i){var s;s=\"wheel\"===u?o:t(e,o,i),e[a](h+n,s,i||!1)}function i(t,o,i,s){var r;r=\"wheel\"===u?i:e(t,s),t[l](h+o,r,s||!1),n(t,s)}function s(t,e,n){o(t,u,e,n),\"DOMMouseScroll\"==u&&o(t,\"MozMousePixelScroll\",e,n)}function r(t,e,n){i(t,u,e,n),\"DOMMouseScroll\"==u&&i(t,\"MozMousePixelScroll\",e,n)}var a,l,u,h=\"\",c=[];return window.addEventListener?(a=\"addEventListener\",l=\"removeEventListener\"):(a=\"attachEvent\",l=\"detachEvent\",h=\"on\"),u=\"onwheel\"in document.createElement(\"div\")?\"wheel\":void 0!==document.onmousewheel?\"mousewheel\":\"DOMMouseScroll\",{on:s,off:r}}()},{}],7:[function(t,e,n){function o(t){return function(e){window.setTimeout(e,t)}}e.exports={extend:function(t,e){t=t||{};for(var n in e)this.isObject(e[n])?t[n]=this.extend(t[n],e[n]):t[n]=e[n];return t},isElement:function(t){return t instanceof HTMLElement||t instanceof SVGElement||t instanceof SVGSVGElement||t&&\"object\"==typeof t&&null!==t&&1===t.nodeType&&\"string\"==typeof t.nodeName},isObject:function(t){return\"[object Object]\"===Object.prototype.toString.call(t)},isNumber:function(t){return!isNaN(parseFloat(t))&&isFinite(t)},getSvg:function(t){var e,n;if(this.isElement(t))e=t;else{if(!(\"string\"==typeof t||t instanceof String))throw new Error(\"Provided selector is not an HTML object nor String\");if(e=document.querySelector(t),!e)throw new Error(\"Provided selector did not find any elements. Selector: \"+t)}if(\"svg\"===e.tagName.toLowerCase())n=e;else if(\"object\"===e.tagName.toLowerCase())n=e.contentDocument.documentElement;else{if(\"embed\"!==e.tagName.toLowerCase())throw\"img\"===e.tagName.toLowerCase()?new Error('Cannot script an SVG in an \"img\" element. Please use an \"object\" element or an in-line SVG.'):new Error(\"Cannot get SVG.\");n=e.getSVGDocument().documentElement}return n},proxy:function(t,e){return function(){return t.apply(e,arguments)}},getType:function(t){return Object.prototype.toString.apply(t).replace(/^\\[object\\s/,\"\").replace(/\\]$/,\"\")},mouseAndTouchNormalize:function(t,e){if(void 0===t.clientX||null===t.clientX)if(t.clientX=0,t.clientY=0,void 0!==t.changedTouches&&t.changedTouches.length){if(void 0!==t.changedTouches[0].clientX)t.clientX=t.changedTouches[0].clientX,t.clientY=t.changedTouches[0].clientY;else if(void 0!==t.changedTouches[0].pageX){var n=e.getBoundingClientRect();t.clientX=t.changedTouches[0].pageX-n.left,t.clientY=t.changedTouches[0].pageY-n.top}}else void 0!==t.originalEvent&&void 0!==t.originalEvent.clientX&&(t.clientX=t.originalEvent.clientX,t.clientY=t.originalEvent.clientY)},isDblClick:function(t,e){if(2===t.detail)return!0;if(void 0!==e&&null!==e){var n=t.timeStamp-e.timeStamp,o=Math.sqrt(Math.pow(t.clientX-e.clientX,2)+Math.pow(t.clientY-e.clientY,2));return 250>n&&10>o}return!1},now:Date.now||function(){return(new Date).getTime()},throttle:function(t,e,n){var o,i,s,r=this,a=null,l=0;n||(n={});var u=function(){l=n.leading===!1?0:r.now(),a=null,s=t.apply(o,i),a||(o=i=null)};return function(){var h=r.now();l||n.leading!==!1||(l=h);var c=e-(h-l);return o=this,i=arguments,0>=c||c>e?(clearTimeout(a),a=null,l=h,s=t.apply(o,i),a||(o=i=null)):a||n.trailing===!1||(a=setTimeout(u,c)),s}},createRequestAnimationFrame:function(t){var e=null;return\"auto\"!==t&&60>t&&t>1&&(e=Math.floor(1e3/t)),null===e?window.requestAnimationFrame||o(33):o(e)}}},{}]},{},[1]);\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2017, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Combine the SWISH components.\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('jswish',[ \"jquery\",\n\t \"config\",\n\t \"preferences\",\n\t \"history\",\n\t \"modal\",\n\t \"chat\",\n\t \"splitter\",\n\t \"bootstrap\",\n\t \"pane\",\n\t \"tabbed\",\n\t \"notebook\",\n\t \"navbar\",\n\t \"search\",\n\t \"editor\",\n\t \"query\",\n\t \"runner\",\n\t \"term\",\n\t \"laconic\",\n\t \"login\",\n\t \"chatroom\",\n\t \"d3\",\n\t \"c3\",\n\t \"svg-pan-zoom\"\n       ], function($, config, preferences, history, modal) {\n\npreferences.setDefault(\"semantic-highlighting\", true);\npreferences.setDefault(\"emacs-keybinding\", false);\n\n(function($) {\n  var pluginName = 'swish';\n\n  function glyph(name, func) {\n    func.glyph = name;\n    return func;\n  }\n\n  function icon(name, func) {\n    func.typeIcon = name;\n    return func;\n  }\n\n  var defaults = {\n    menu: {\n      \"File\":\n      { \"Save ...\": glyph(\"cloud-upload\", function() {\n\t  menuBroadcast(\"save\", \"as\");\n\t}),\n\t\"Info & history ...\": glyph(\"info-sign\", function() {\n\t  menuBroadcast(\"fileInfo\");\n\t}),\n\t\"Reload\": glyph(\"refresh\", function() {\n\t  menuBroadcast(\"reload\");\n\t}),\n\t\"Open recent\": {\n\t  type: \"submenu\",\n\t  glyph: \"paperclip\",\n\t  action: function(ev) {\n\t    history.openRecent(ev, $(this).data('document'));\n\t  },\n\t  update: history.updateRecentUL\n\t},\n\t\"Share\": \"--\",\n\t\"Follow ...\": config.http.locations.follow_file_options ?\n\t\t      glyph(\"eye-open\", function() {\n\t  menuBroadcast(\"follow-file\");\n\t}) : undefined,\n\t\"Chat ...\": icon(\"chat\", function() {\n\t  menuBroadcast(\"chat-about-file\");\n\t}),\n\t\"Chat help room ...\": icon(\"chathelp\", function() {\n\t  $(\"body\").swish('playFile', {\n\t    file:\"Help.swinb\",\n\t    chat:'large'\n\t  });\n\t}),\n\t\"Start TogetherJS ...\": icon(\"togetherjs\", function() {\n\t  $(\"body\").swish('collaborate');\n\t}),\n\t\"Export\": \"--\",\n\t\"Download\": glyph(\"floppy-save\", function() {\n\t  menuBroadcast(\"download\");\n\t}),\n\t\"Print ...\": glyph(\"print\", function() {\n\t  menuBroadcast(\"print\");\n\t})\n      },\n      \"Edit\":\n      { \"Clear messages\": function() {\n\t  menuBroadcast(\"clearMessages\");\n\t},\n\t\"Changes\": \"--\",\n\t\"View changes\": function() {\n\t  menuBroadcast(\"diff\");\n\t},\n\t\"Edit\": \"--\",\n\t\"Find (Ctrl-F)\": function() {\n\t  menuBroadcast(\"edit-command\", \"find\");\n\t},\n\t\"Find and replace (Shift-Ctrl-F)\": function() {\n\t  menuBroadcast(\"edit-command\", \"replace\");\n\t},\n\t\"Jump to line (Alt-G)\": function() {\n\t  menuBroadcast(\"edit-command\", \"jumpToLine\");\n\t},\n\t\"Options\": \"--\",\n\t\"Semantic highlighting\": {\n\t  preference: \"semantic-highlighting\",\n\t  type: \"checkbox\"\n\t},\n\t\"Emacs Keybinding\": {\n\t  preference: \"emacs-keybinding\",\n\t  type: \"checkbox\",\n\t  value: \"false\"\n\t}\n      },\n      \"Examples\": function(navbar, dropdown) {\n\t$(\"body\").swish('populateExamples', navbar, dropdown);\n      },\n      \"Help\": function(navbar, dropdown) {\n\t$(\"body\").swish('populateHelp', navbar, dropdown);\n      }\n    }\n  }; // defaults;\n\n\n  /** @lends $.fn.swish */\n  var methods = {\n    /**\n     * Initialise SWISH on the page. At this moment, a page can only\n     * contain one SWISH application and swish is normally initialised\n     * on the body.  This might change.\n     * @example $(\"body\").swish();\n     * {Object} options\n     * {Boolean} options.show_beware If `true`, show a dialogue box\n     * telling this is a limited version.\n     */\n    _init: function(options) {\n      swishLogo();\n      setupModal();\n      setupPanes();\n      setupResize();\n      $(\"#search\").search();\n\n      options = options||{};\n      this.addClass(\"swish\");\n\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = {};\t\t\t/* private data */\n\n\t$(\"#navbar\").navbar(defaults.menu);\n\t$(\"#login\").login();\n\n\tvar  editor = $(\".prolog-editor\").prologEditor({save:true});\n\tdata.runner = $(\".prolog-runners\").prologRunners();\n\tdata.query  = $(\".prolog-query\").queryEditor(\n          { source:   function() {\n\t      return elem.swish('prologSource');\n\t    },\n\t    sourceID: function() {\n\t      return editor.prologEditor('getSourceID');\n\t    },\n\t    examples: elem.swish('examples'),\n\t    runner:   data.runner,\n\t    editor:   editor[0]\n\t  });\n\n\t$(\".notebook\").notebook();\n\n\tif ( options.show_beware &&\n\t     !(swish.option && swish.option.show_beware == false) )\n\t  menuBroadcast(\"help\", {file:\"beware.html\", notagain:\"beware\"});\n\n\telem.data(pluginName, data);\t/* store with element */\n\n\tif ( window.location.href.indexOf(\"&togetherjs=\") > 0 )\n\t  elem.swish('collaborate');\n\n\t$(\"#chat\").chat('');\n\n\tsetInterval(function(){\n\t  $(\".each-minute\").trigger(\"minute\");\n\t}, 60000);\n      });\n    },\n\n    /**\n     * Trigger a global event in SWISH.  Currently defined events are:\n     *\n     *   - `help`        -- show a modal help window\n     *   - `source`      -- load a new source\n     *   - `saveProgram` -- save the current program\n     *\n     * This method triggers all elements of class\n     * `swish-event-receiver`.\n     *\n     * @param {String} name is the name of the trigger.\n     * @param {Object|null} data provides additional data for the event.\n     */\n    trigger: function(name, data) {\n      menuBroadcast(name, data);\n      return this;\n    },\n\n    /**\n     * Play a file from the webstore, loading it through ajax\n     * @param {String|Object} options If a string, the name\n     * of the file in the web storage\n     * @param {String} options.file is the name of the file in the web\n     * storage\n     * @param {Number} [options.line] is the initial line number\n     * @param {RegEx} [options.regex] search to highlight\n     * @param {Boolean} [options.showAllMatches] Show other matches on\n     * page.\n     * @param {Boolean} [options.newTab] if `true`, open the file in\n     * a new tab.\n     * @param {Boolean} [options.noHistory] if `true`, do not push the\n     * new document to the history.\n     * @param {Object} [options.prompt] provided for trace events.  Must\n     * be used to highlight the Prolog port at the indicated location.\n     */\n    playFile: function(options) {\n      var elem = this;\n      if ( typeof(options) == \"string\" )\n\toptions = {file:options};\n\n      var existing = this.find(\".storage\").storage('match', options);\n      if ( existing && existing.storage('expose', \"Already open\") )\n\treturn this;\t\t\t\t/* FIXME: go to line */\n\n      var url = config.http.locations.web_storage + options.file;\n      $.ajax({ url: url,\n\t       type: \"GET\",\n\t       data: {format: \"json\"},\n\t       success: function(reply) {\n\t\t reply.url = url;\n\t\t reply.st_type = \"gitty\";\n\n\t\t function copyAttrs(names) {\n\t\t   for(var i=0; i<names.length; i++) {\n\t\t     var name = names[i];\n\t\t     if ( options[name] )\n\t\t       reply[name] = options[name];\n\t\t   }\n\t\t }\n\n\t\t copyAttrs([ \"line\",\n\t\t\t     \"regex\", \"showAllMatches\",\n\t\t\t     \"newTab\", \"noHistory\",\n\t\t\t     \"prompt\", \"chat\"\n\t\t\t   ]);\n\n\t\t elem.swish('setSource', reply);\n\t       },\n\t       error: function(jqXHR) {\n\t\t modal.ajaxError(jqXHR);\n\t       }\n\t     });\n\n      return this;\n    },\n\n    /**\n     * Load file from a URL.  This fetches the data from the URL and\n     * broadcasts a `\"source\"` event that is normally picked up by\n     * the tabbed pane.\n     * @param {Object}   options\n     * @param {String}   options.url     URL to load.\n     * @param {Integer} [options.line]   Line to go to.\n     * @param {Regex}   [options.search] Text searched for.\n     */\n    playURL: function(options) {\n      var elem = this;\n      var existing = this.find(\".storage\").storage('match', options);\n\n      if ( existing && existing.storage('expose', \"Already open\") )\n\treturn this;\t\t\t\t/* FIXME: go to line */\n\n      $.ajax({ url: options.url,\n\t       type: \"GET\",\n\t       data: {format: \"json\"},\n\t       success: function(source) {\n\t\t var msg;\n\n\t\t if ( typeof(source) == \"string\" ) {\n\t\t   msg = { data: source };\n\t\t   msg.st_type = \"external\";\n\t\t } else if ( typeof(source) == \"object\" &&\n\t\t\t     typeof(source.data) == \"string\" ) {\n\t\t   msg = source;\n\t\t   msg.st_type = \"filesys\";\n\t\t } else {\n\t\t   alert(\"Invalid data\");\n\t\t   return;\n\t\t }\n\n\t\t msg.url  = options.url;\n\n\t\t function copyAttrs(names) {\n\t\t   for(var i=0; i<names.length; i++) {\n\t\t     var name = names[i];\n\t\t     if ( options[name] )\n\t\t       msg[name] = options[name];\n\t\t   }\n\t\t }\n\n\t\t copyAttrs([ \"line\",\n\t\t\t     \"regex\", \"showAllMatches\",\n\t\t\t     \"newTab\", \"noHistory\",\n\t\t\t     \"prompt\"\n\t\t\t   ]);\n\n\t\t elem.swish('setSource', msg);\n\t       },\n\t       error: function(jqXHR) {\n\t\t modal.ajaxError(jqXHR);\n\t       }\n      });\n    },\n\n    /**\n     * Open a source.  If we are in fullscreen mode and the current\n     * object cannot be opened by the current fullscreen node, we\n     * leave fullscreen mode and retry.  Called by playFile and playURL.\n     */\n    setSource: function(options) {\n      menuBroadcast(\"source\", options);\n      if ( !this.find(\".storage\").storage('match', options) ) {\n\tif ( this.swish('exitFullscreen') )\n\t  menuBroadcast(\"source\", options);\n      }\n    },\n\n\n    /**\n     * @param {Object} ex\n     * @param {String} ex.title is the title of the example\n     * @param {String} ex.file is the (file) name of the example\n     * @param {String} ex.href is the URL from which to download the\n     * program.\n     * @returns {Function|String} function that loads an example\n     */\n    openExampleFunction: function(ex) {\n      var swish = this;\n\n      if ( ex.type == \"divider\" ) {\n\treturn \"--\";\n      } else if ( ex.type == \"store\" ) {\n\treturn function() {\n\t  methods.playFile.call(swish, ex.file);\n\t};\n      } else {\n\treturn function() {\n\t  methods.playURL.call(swish, {url:ex.href});\n\t};\n      }\n    },\n\n    /**\n     * Populate the examples dropdown of the navigation bar. This\n     * method is used by the navigation bar initialization.\n     * @param {Object} navbar is the navigation bar\n     * @param {Object} dropdown is the examples dropdown\n     */\n    populateExamples: function(navbar, dropdown) {\n      var that = this;\n\n      that.off(\"examples-changed\")\n\t  .on(\"examples-changed\", function() {\n\t     $(\"#navbar\").navbar('clearDropdown', dropdown);\n\t     that.swish('populateExamples', navbar, dropdown);\n\t   });\n      $.ajax(config.http.locations.swish_examples,\n\t     { dataType: \"json\",\n\t       success: function(data) {\n\t\t for(var i=0; i<data.length; i++) {\n\t\t   var ex = data[i];\n\t\t   var title;\n\t\t   var options;\n\n\t\t   if ( ex == \"--\" || ex.type == \"divider\" ) {\n\t\t     title = \"--\";\n\t\t     options = \"--\";\n\t\t   } else {\n\t\t     var name = ex.file || ex.href;\n\t\t     title = ex.title;\n\t\t     options = that.swish('openExampleFunction', ex);\n\t\t     if ( name )\n\t\t       options.typeIcon = name.split('.').pop();\n\t\t   }\n\n\t\t   $(\"#navbar\").navbar('extendDropdown', dropdown,\n\t\t\t\t       title, options);\n\t\t }\n\t       }\n\t     });\n      return this;\n    },\n\n    /**\n     * Populate the help dropdown of the navigation bar. This\n     * method is used by the navigation bar initialization.\n     * @param {Object} navbar is the navigation bar\n     * @param {Object} dropdown is the examples dropdown\n     */\n    populateHelp: function(navbar, dropdown) {\n      var that = this;\n\n      function openHelpFunction(help) {\n\treturn function() {\n\t  menuBroadcast(\"help\", {file:help.file});\n\t};\n      }\n\n      $.ajax(config.http.locations.swish_help_index,\n\t     { dataType: \"json\",\n\t       success: function(data) {\n\t\t for(var i=0; i<data.length; i++) {\n\t\t   var help = data[i];\n\t\t   var title;\n\t\t   var options;\n\n\t\t   if ( help == \"--\" || help.type == \"divider\" ) {\n\t\t     title = \"--\";\n\t\t     options = \"--\";\n\t\t   } else {\n\t\t     var name = help.file;\n\t\t     title = help.title;\n\t\t     options = openHelpFunction(help);\n\t\t   }\n\n\t\t   $(\"#navbar\").navbar('extendDropdown', dropdown,\n\t\t\t\t       title, options);\n\t\t }\n\t       }\n\t     });\n      return this;\n    },\n\n\n    /**\n     * pick up all Prolog sources, preparing to execute a query. Currently\n     * picks up:\n     *\n     *   - The `.text()` from all elements that match\n     *   `\".background.prolog.source\"`\n     *   - The source of the Prolog editor.  We need some notion of a\n     *   _current_ Prolog editor.\n     */\n    prologSource: function() {\n      var list = [];\n      var src;\n\n      if ( (src=$(\".prolog-editor\").prologEditor('getSource', \"source\")) )\n\tlist.push(src);\n      if ( (src=$(\".background.prolog.source\").text()) )\n\tlist.push(src);\n\n      return list.join(\"\\n\\n\");\n    },\n\n    /**\n     * Pick up all breakpoints.  Currently assumes a single source.\n     * @param {String} pengineID is the pengine for which to set\n     * the breakpoints.\n     */\n    breakpoints: function(pengineID) {\n      return this.find(\".prolog-editor\")\n                 .prologEditor('getBreakpoints', pengineID)||[];\n    },\n\n    /**\n     * @param {Object} [options]\n     * @param {Boolean} [options.active=false] If `true`, only return\n     * info on the active tab\n     */\n    tabData: function(options) {\n      options = options||{};\n      if ( options.active ) {\n\treturn this.find(\".tab-pane.active .storage\").storage('getData', options);\n      } else {\n\treturn this.find(\".storage\").storage('getData', options);\n      }\n    },\n\n    /**\n     * Extract examples from `$(\".examples.prolog\").text()`.  If this\n     * does not exist, it returns a function that extracts the examples\n     * from the current Prolog source editor.\n     * @param {Boolean} [onlyglobal] if `true`, only extract globally\n     * listed examples.\n     * @returns {Array.String|null|Function}\n     */\n    examples: function(onlyglobal) {\n      var text = $(\".examples.prolog\").text();\n\n      if ( text ) {\n\treturn $().prologEditor('getExamples', text, false);\n      } else if ( onlyglobal != true ) {\n\treturn function() {\n\t  return $(\".prolog-editor\").prologEditor('getExamples');\n\t};\n      }\n    },\n\n    /**\n     * Make DOM element fullscreen\n     * @param {jQuery} node is the element to turn into fullscreen.\n     * Currently this only works for a notebook.\n     * @patam {jQuery} main is the node getting the `fullscreen\n     * hamburger` class.\n     */\n    fullscreen: function(node, main) {\n      var content = this.find(\".container.tile-top\");\n\n      if ( !content.hasClass(\"fullscreen\") ) {\n\tvar data = this.data(\"fullscreen\");\n\tif ( !data ) {\n\t  data = {};\n\t  this.data(\"fullscreen\", data);\n\t}\n\tcontent.addClass(\"fullscreen\");\n\tmain = main||node;\n\tmain.addClass(\"fullscreen hamburger\");\n\tdata.fullscreen_origin = node.parent()[0];\n\tdata.fullscreen_main = main[0];\n\t$(content.children()[0]).hide();\n\tcontent.append(node);\n\tmain.trigger('fullscreen', true);\n      }\n\n      return this;\n    },\n\n    /**\n     * If some element is in fullscreen mode, revert\n     * back to tabbed mode.\n     * @return {Boolean} `true` if successful.\n     */\n    exitFullscreen: function() {\n      var content = this.find(\".container.tile-top\");\n\n      if ( content.hasClass(\"fullscreen\") ) {\n\tvar data = this.data(\"fullscreen\");\n\tvar node = $(content.children()[1]);\n\tvar main = data.fullscreen_main;\n\n\tcontent.removeClass(\"fullscreen\");\n\t$(data.fullscreen_main).removeClass(\"fullscreen hamburger\");\n\t$(data.fullscreen_origin).append(node);\n\tdata.fullscreen_origin = null;\n\tdata.fullscreen_main = null;\n\t$(content.children()[0]).show();\n\t$(main).trigger('fullscreen', false);\n\n\treturn true;\n      }\n\n      return false;\n    },\n\n    /**\n     * Open TogetherJS after lazy loading.\n     */\n    collaborate: function() {\n      var elem = this;\n      $(this).attr(\"data-end-togetherjs-html\", \"End collaboration\");\n      require([ \"https://togetherjs.com/togetherjs-min.js\"\n\t      ],\n\t      function() {\n\t\tTogetherJS(elem);\n\t      });\n      return this;\n    }\n  }; // methods\n\n  /**\n   * General actions on SWISH are sent as triggers.  Any part of\n   * the interface that is interested in events should add the class\n   * `swish-event-receiver` and listen to the events in which it is\n   * interested.\n   */\n  function menuBroadcast(event, data) {\n    $(\".swish-event-receiver\").trigger(event, data);\n  }\n\n  /**\n   * Turn elements with class `swish-logo` into the SWISH logo.\n   */\n  function swishLogo() {\n    $(\".swish-logo\")\n      .append($.el.b($.el.span({style:\"color:darkblue\"}, \"SWI\"),\n\t\t     $.el.span({style:\"color:maroon\"}, \"SH\")))\n      .css(\"margin-left\", \"30px\")\n      .css(\"font-size\", \"24px\")\n      .addClass(\"navbar-brand\");\n  }\n\n  /**\n   * Setup modal actions.  Subsequently, modal dialogue windows\n   * are opened by using the trigger `help`.\n   * @example $(\"body\").swish('action', 'help', {file:\"about.html\"});\n   */\n  function setupModal() {\n    if ( $(\"#modal\").length == 0 ) {\n      $(\"body\").append($.el.div({id:\"modal\"}));\n      $(\"#modal\").swishModal();\n    }\n  }\n\n  /**\n   * Setup the panes and allow for resizing them\n   */\n  function setupPanes() {\n    $(\".tile\").tile();\n    $(window).resize(function() { $(\".tile\").tile('resize'); });\n    $(\".tabbed\").tabbed();\n  }\n\n  function setupResize() {\n    $(window).resize(function() {\n      $(\".reactive-size\").trigger('reactive-resize');\n    });\n  }\n\n  /**\n   * <Class description>\n   *\n   * @class swish\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.swish = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\n}); // define()\n;\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2016, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Load SWISH. Just provides the RequireJS config, requires jswish.js\n * and initialises this on the body.\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\nrequire.config({\n  urlArgs: \"ts=\"+new Date().getTime(),\t/* prevent caching during development */\n  waitSeconds: 60,\t\t\t/* swish-min.js is big */\n  paths:\n  { jquery:      \"../bower_components/jquery/dist/jquery.min\",\n    \"jquery-ui\": \"../bower_components/jquery-ui/jquery-ui.min\",\n    laconic:     \"../bower_components/laconic/laconic\",\n    bootstrap:   \"../bower_components/bootstrap/dist/js/bootstrap.min\",\n    bloodhound:  \"../bower_components/typeahead.js/dist/bloodhound\",\n    typeahead:   \"../bower_components/typeahead.js/dist/typeahead.jquery\",\n    splitter:    \"../bower_components/jquery.splitter/js/jquery.splitter-0.15.0\",\n    tagmanager:  \"../bower_components/tagmanager/tagmanager\",\n    sha1:        \"../bower_components/js-sha1/src/sha1\",\n    c3:          \"../bower_components/c3/c3\",\n    d3:          \"../bower_components/d3/d3\",\n    \"svg-pan-zoom\": \"../bower_components/svg-pan-zoom/dist/svg-pan-zoom.min\",\n    sparkline:\t \"../bower_components/sparkline/dist/jquery.sparkline\",\n\n\t\t\t\t\t/* CodeMirror extensions */\n    \"cm/mode/prolog\": \"codemirror/mode/prolog\",\n    \"cm/addon/hover/prolog-hover\": \"codemirror/addon/hover/prolog-hover\",\n    \"cm/addon/hover/text-hover\": \"codemirror/addon/hover/text-hover\",\n    \"cm/addon/hint/templates-hint\": \"codemirror/addon/hint/templates-hint\",\n    \"cm/addon/hint/show-context-info\": \"codemirror/addon/hint/show-context-info\",\n\n\t\t\t\t\t/* Standard CodeMirror */\n    \"cm\" : \"../bower_components/codemirror\"\n  },\n  shim:\n  { bootstrap:\n    { deps:[\"jquery\"]\n    },\n    typeahead: /* HACK: See https://github.com/twitter/typeahead.js/issues/1211 */\n    { deps:[\"jquery\"],\n      init: function ($) {\n\treturn require.s.contexts._.registry['typeahead.js'].factory($);\n      }\n    },\n    bloodhound:\n    { deps:[\"jquery\"]\n    },\n    splitter:\n    { deps:[\"jquery\"]\n    },\n    laconic:\n    { deps:[\"jquery\"]\n    },\n    tagmanager:\n    { deps:[\"jquery\"]\n    },\n  }\n}); //require.config\n\n/*\n * Create the SWISH application.  Note that we need two levels of\n * require because the first gives us the location of the pengine\n * API, while the second fetches the pengines and starts the\n * application.\n */\nrequire([\"jquery\", \"config\", \"jswish\"],\n\tfunction($, config, swish) {\n  require([config.http.locations.pengines+\"/pengines.js\"],\n\t  function() {\n    $(function() {\n      $(\"body\").swish(config.swish||{});\n    });\n  });\n});\n\n\ndefine(\"swish\", function(){});\n\n"]}
\ No newline at end of file
+{"version":3,"sources":["../bower_components/bootstrap/dist/js/bootstrap.min.js","../bower_components/jquery/dist/jquery.min.js","config.js","preferences.js","links.js","../bower_components/laconic/laconic.js","modal.js","../bower_components/tagmanager/tagmanager.js","form.js","history.js","utils.js","chat.js","../bower_components/jquery.splitter/js/jquery.splitter-0.15.0.js","pane.js","../bower_components/typeahead.js/dist/bloodhound.js","../bower_components/typeahead.js/dist/typeahead.jquery.js","search.js","../bower_components/codemirror/lib/codemirror.js","chatroom.js","chatbell.js","tabbed.js","prolog.js","answer.js","../bower_components/sparkline/dist/jquery.sparkline.js","download.js","runner.js","gitty.js","difflib.js","diffview.js","diff.js","storage.js","../bower_components/js-sha1/src/sha1.js","notebook.js","navbar.js","codemirror/addon/hint/templates-hint.js","codemirror/mode/prolog/prolog-template-hint.js","codemirror/mode/prolog/prolog-ctype.js","codemirror/mode/prolog/prolog.js","codemirror/mode/prolog/prolog_keys.js","codemirror/mode/prolog/prolog_query.js","codemirror/mode/prolog/prolog_server.js","../bower_components/codemirror/mode/xml/xml.js","../bower_components/codemirror/mode/meta.js","../bower_components/codemirror/mode/markdown/markdown.js","../bower_components/codemirror/addon/edit/matchbrackets.js","../bower_components/codemirror/addon/comment/continuecomment.js","../bower_components/codemirror/addon/comment/comment.js","../bower_components/codemirror/addon/hint/show-hint.js","../bower_components/codemirror/addon/hint/anyword-hint.js","../bower_components/codemirror/addon/display/placeholder.js","../bower_components/codemirror/addon/runmode/runmode.js","../bower_components/codemirror/addon/search/searchcursor.js","../bower_components/codemirror/addon/dialog/dialog.js","../bower_components/codemirror/addon/search/search.js","../bower_components/codemirror/addon/search/jump-to-line.js","codemirror/addon/hover/text-hover.js","codemirror/addon/hover/prolog-hover.js","codemirror/addon/hint/show-context-info.js","../bower_components/codemirror/keymap/emacs.js","editor.js","query.js","term.js","login.js","../bower_components/d3/d3.js","../bower_components/c3/c3.js","../bower_components/svg-pan-zoom/dist/svg-pan-zoom.min.js","jswish.js","swish.js"],"names":["a","b","module","exports","document","Error","window","this","p","d","c","createElement","text","head","appendChild","parentNode","removeChild","w","length","r","type","isWindow","B","nodeName","toLowerCase","E","isFunction","grep","call","nodeType","i","D","test","filter","K","M","each","match","L","N","O","P","e","promise","done","fail","then","apply","slice","S","removeEventListener","ready","V","expando","uid","$","Y","JSON","parse","_","replace","Z","getAttribute","X","set","fa","f","g","h","cur","css","j","cssNumber","k","ba","exec","style","unit","start","end","ha","ownerDocument","ga","body","ia","display","W","get","da","na","getElementsByTagName","querySelectorAll","merge","oa","qa","l","createDocumentFragment","m","n","o","pa","ka","ma","_default","innerHTML","htmlPrefilter","lastChild","childNodes","firstChild","textContent","push","createTextNode","inArray","contains","la","va","wa","xa","activeElement","ya","off","arguments","guid","event","add","Ea","Fa","Ga","Ca","removeAttribute","Ha","hasData","access","events","handle","extend","Ia","ja","checked","defaultValue","Ja","q","s","checkClone","Ba","eq","html","map","clone","src","_evalUrl","Da","Ka","cleanData","Oa","Na","getPropertyValue","pixelMarginRight","Ma","La","width","minWidth","maxWidth","Pa","Wa","Va","toUpperCase","Ua","Xa","cssProps","Ya","Math","max","Za","ca","$a","boxSizingReliable","parseFloat","_a","prototype","init","eb","bb","hidden","requestAnimationFrame","setTimeout","fx","interval","tick","fb","ab","now","gb","height","opacity","hb","kb","tweeners","concat","ib","queue","_queueHooks","unqueued","empty","fire","always","cb","isEmptyObject","overflow","overflowX","overflowY","remove","jb","camelCase","Array","isArray","cssHooks","expand","prefilters","Deferred","elem","startTime","duration","tweens","run","notifyWith","resolveWith","props","opts","specialEasing","easing","originalProperties","originalOptions","createTween","Tween","stop","rejectWith","proxy","progress","complete","timer","anim","pb","join","qb","Ab","wb","Mb","unshift","Nb","dataTypes","Jb","Ob","ajaxSettings","flatOptions","Pb","contents","shift","mimeType","getResponseHeader","converters","Qb","responseFields","dataFilter","dataType","split","state","error","data","Object","getPrototypeOf","indexOf","toString","hasOwnProperty","fn","t","u","v","jquery","constructor","toArray","pushStack","prevObject","first","last","sort","splice","isPlainObject","random","isReady","noop","isNumeric","isNaN","globalEval","trim","makeArray","Date","support","Symbol","iterator","x","getElementById","id","G","getElementsByClassName","qsa","A","setAttribute","sa","cacheLength","attrHandle","sourceIndex","nextSibling","disabled","isDisabled","ea","ra","value","ta","dir","next","uniqueID","ua","I","relative","matches","za","find","TAG","y","z","uniqueSort","C","pop","F","H","J","RegExp","Q","R","T","U","ID","CLASS","ATTR","PSEUDO","CHILD","bool","needsContext","aa","String","fromCharCode","charCodeAt","isXML","documentElement","setDocument","defaultView","top","addEventListener","attachEvent","attributes","className","createComment","getById","getElementsByName","getAttributeNode","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","sortDetached","attr","specified","escape","detectDuplicates","sortStable","getText","nodeValue","selectors","createPseudo",">"," ","+","~","preFilter","pseudos","setFilters","not","has","innerText","lang","target","location","hash","root","focus","hasFocus","href","tabIndex","enabled","selected","selectedIndex","parent","header","input","button","even","odd","lt","gt","nth","radio","checkbox","file","password","image","submit","reset","filters","tokenize","compile","selector","select","expr","unique","isXMLDoc","escapeSelector","is","parseHTML","children","prev","closest","index","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","siblings","contentDocument","content","reverse","Callbacks","once","stopOnFalse","memory","disable","lock","locked","fireWith","fired","catch","pipe","notify","resolve","reject","TypeError","exceptionHook","stackTrace","getStackHook","when","console","warn","name","message","stack","readyException","readyWait","readyState","doScroll","cache","defineProperty","configurable","removeData","_data","_removeData","dequeue","clearQueue","source","show","hide","toggle","option","thead","col","tr","td","optgroup","tbody","tfoot","colgroup","caption","th","cloneNode","noCloneChecked","global","handler","triggered","dispatch","special","delegateType","bindType","origType","namespace","delegateCount","setup","teardown","removeEvent","fix","delegateTarget","preDispatch","handlers","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","handleObj","result","preventDefault","stopPropagation","postDispatch","addProp","Event","enumerable","originalEvent","writable","load","noBubble","trigger","blur","click","beforeunload","returnValue","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","isSimulated","stopImmediatePropagation","altKey","bubbles","cancelable","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","shiftKey","view","char","charCode","key","keyCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","which","mouseenter","mouseleave","pointerenter","pointerleave","on","one","Aa","detach","append","prepend","insertBefore","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","opener","getComputedStyle","cssText","marginLeft","marginRight","backgroundClip","clearCloneStyle","pixelPosition","reliableMarginLeft","Qa","Ra","Sa","position","visibility","Ta","letterSpacing","fontWeight","animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","lineHeight","order","orphans","widows","zIndex","zoom","float","setProperty","isFinite","getClientRects","getBoundingClientRect","left","margin","padding","border","prop","options","propHooks","pos","step","scrollTop","scrollLeft","linear","swing","cos","PI","db","Animation","*","tweener","prefilter","speed","speeds","old","fadeTo","animate","finish","timers","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","delay","clearTimeout","checkOn","optSelected","radioValue","lb","mb","removeAttr","attrHooks","nb","ob","removeProp","propFix","parseInt","for","class","addClass","removeClass","toggleClass","hasClass","rb","val","valHooks","sb","isTrigger","parentWindow","simulate","triggerHandler","hover","focusin","tb","ub","vb","parseXML","DOMParser","parseFromString","xb","yb","zb","param","encodeURIComponent","serialize","serializeArray","Bb","Cb","Db","Eb","Fb","Gb","Hb","Ib","Kb","Lb","active","lastModified","etag","url","isLocal","protocol","processData","async","contentType","accepts","xml","json","* text","text html","text json","text xml","context","ajaxSetup","ajaxPrefilter","ajaxTransport","ajax","ifModified","status","statusText","statusCode","getAllResponseHeaders","setRequestHeader","overrideMimeType","abort","method","crossDomain","host","traditional","hasContent","headers","beforeSend","success","timeout","send","getJSON","getScript","throws","wrapAll","firstElementChild","wrapInner","wrap","unwrap","visible","offsetWidth","offsetHeight","xhr","XMLHttpRequest","Rb","0","1223","Sb","cors","open","username","xhrFields","onload","onerror","onabort","onreadystatechange","responseType","responseText","binary","response","script","text script","charset","scriptCharset","Tb","Ub","jsonp","jsonpCallback","createHTMLDocument","implementation","animated","offset","setOffset","using","pageYOffset","clientTop","pageXOffset","clientLeft","offsetParent","scrollTo","Height","Width","","bind","unbind","delegate","undelegate","holdReady","parseJSON","define","amd","Vb","jQuery","Wb","noConflict","getCachedConfig","swish","config_hash","str","localStorage","getItem","KEY","config","setCachedConfig","setItem","stringify","alert","readNotAgain","err","hasLocalStore","defaults","preferences","persistent","setNotAgain","notagain","broadcast","setVal","setDefault","getVal","setDocVal","docid","prefs","getDocVal","def","undefined","modal","functions","PlDoc","from","ev","parsePred","pred","substring","charAt","arity","decodeURIComponent","runQueryLink","isVar","vars","novars","qname","cell","prologEditor","nbCell","bindings","vr","feedback","owner","followLink","accept","swishStore","http","locations","swishExamples","startsWith","laconic","el","arg","substr","toExponential","toFixed","attributeMap","isEvent","child","acceptcharset","accesskey","allowtransparency","bgcolor","cellpadding","cellspacing","classname","colspan","csstext","defaultchecked","defaultselected","defaultvalue","frameborder","hspace","htmlfor","longdesc","maxlength","marginwidth","marginheight","noresize","noshade","readonly","rowspan","tabindex","valign","vspace","registerElement","renderer","deprecatedTags","tags","makeApply","tagName","dollar","WebkitTransition","MozTransition","OTransition","transition","emulateTransitionEnd","bsTransitionEnd","close","VERSION","TRANSITION_DURATION","Constructor","setState","$element","DEFAULTS","isLoading","loadingText","resetText","slide","to","pause","cycle","$indicators","paused","sliding","$active","$items","keyboard","keydown","clearInterval","setInterval","getItemIndex","getItemForDirection","direction","carousel","$trigger","transitioning","$parent","getParent","addAriaAndCollapsedClass","dimension","collapse","dropdown","$body","$dialog","$backdrop","isShown","originalBodyPad","scrollbarWidth","ignoreBackdropClick","remote","BACKDROP_TRANSITION_DURATION","backdrop","checkScrollbar","setScrollbar","resize","adjustDialog","enforceFocus","hideModal","handleUpdate","resetAdjustments","resetScrollbar","removeBackdrop","scrollHeight","clientHeight","paddingLeft","bodyIsOverflowing","paddingRight","innerWidth","right","abs","clientWidth","measureScrollbar","hoverState","inState","animation","placement","template","title","container","viewport","getOptions","$viewport","enter","leave","_options","fixTitle","getDefaults","getDelegateOptions","tip","isInStateTrue","getUID","setContent","getPosition","bottom","getCalculatedOffset","applyPlacement","$tip","round","getViewportAdjustedDelta","replaceArrow","arrow","getTitle","SVGElement","scroll","$arrow","enable","toggleEnabled","destroy","tooltip","getContent","popover","$scrollElement","offsets","targets","activeTarget","process","refresh","getScrollHeight","activate","clear","scrollspy","element","tab","$target","checkPosition","checkPositionWithEventLoop","affixed","unpin","pinnedOffset","RESET","getState","getPinnedOffset","affix","offsetBottom","offsetTop","links","form","saveNotagain","closeButton","data-dismiss","notAgain","label","data-notagain","initTagsManagers","prefilled","tagsManager","pluginName","methods","_init","swishModal","icon","jqXHR","showHelp","that","help","showForm","showPlDoc","docURL","term","pldoc_doc_for","docBody","div","h2","md","modalel","role","onclose","server_form","require","jqXHDR","formel","serializeAsObject","obj","onreply","formError","showAjaxError","dom","h1","win","resizeIframe","iframe","contentWindow","ntfid","ajaxError","wsid","epos","outerWidth","time","onremove","chat","CapitalizeFirstLetter","preventSubmitOnEnter","isClearInputOnEsc","externalTagId","prefillIdFieldName","prefillValueFieldName","AjaxPush","AjaxPushAllTags","AjaxPushParameters","delimiters","backspace","maxTags","hiddenTagListName","hiddenTagListId","output","deleteTagsOnBackspace","tagsContainer","tagCloseIcon","tagClass","validator","onlyTagList","tagList","fillInputOnTagRemove","publicMethods","pushTag","tag","ignoreEvents","alreadyInList","tlisLowerCase","tagId","idx","newTagId","newTagRemoveId","escaped","$el","lastTagObj","$self","tlis","tlid","privateMethods","trimTag","delimiterChars","$tagList","item","suggestion","blinkClass","backgroundColor","blinkBGColor_1","blinkBGColor_2","Infinity","post","tagClasses","TagIdToRemove","spliceTag","refreshHiddenTagList","showOrHide","popTag","tagBeingRemoved","cl","tagBaseClass","inputBaseClass","lhiddenTagList","baseDelimiter","change","killEvent","cancelBubble","keyInArray","ary","applyDelimiter","prefill","pta","pushAllTags","keyNums","delimeters","delimiterKeys","hiddenObj","rndid","albet","floor","navigator","userAgent","valgridw","LABELWIDTH","elemName","attrs","textInput","placeholder","tagInput","textarea","addSelect","ignore_empty","arr","inset","jvalue","code","errors","fieldError","field","msg","group","showDialog","formBroadcast","fields","fileName","public","example","fork","labeltext","community_examples","span","btn","author","identity","date","stamp","labels","toLocaleString","description","commit_message","modify","who","canmodify","checkboxes","follow","email","projection","csvFormat","list","format","limit","distinct","boxes","boxel","dopts","box","autocomplete","chunk","filename","action","data-toggle","cls","lblopts","widgets","glyphIcon","glyph","typeIcon","glyphIconButton","dropdownButton","divClass","ulClass","ul","actions","populateMenu","client","menu","runMenu","addMenuItem","onclick","li","bound","history","reply","cpath","pathname","meta","pushState","recentMaxLength","addRecent","doc","equalDocument","d1","d2","recent","openRecent","st_type","updateRecentUL","gitty","onpopstate","utils","htmlEncode","generateUUID","getTime","uuid","flash","lastIndexOf","MIN_RECONNECT_DELAY","MAX_RECONNECT_DELAY","li_user","avatar","keypress","img","reconnect_delay","last_open","connect","add_pref_param","pname","lead","swish_chat","ws","connection","reconnect","WebSocket","onmessage","origin","log","onopen","empty_queue","disconnect","subscribe","channel","sub_channel","unsubscribe","subchannel","welcome","avatar_source","visitors","check_login","login","storage","userCount","cnt","gazers","gazer","profile","reason","rejoined","avatars","joined","session_closed","chat-message","rooms","chatroom","hangout","chatbell","displayed","user","forbidden","read_until","broadcast_room","notifyUser","isBroadcast","event_argv","create_user","user_li","unnotify","updateFiles","addUser","removeUser","lost","tmo","user_info","users","rc","self","is_self","addUserFile","fli","data-file","removeUserFile","user_too","removeFile","count","splitter_id","splitters","current_splitter","get_position","settings","orientation","panel_1","panel_2","invisible","onDragStart","onDragEnd","onDrag","splitter","new_width","new_height","silent","sw","sw2","pw","outerHeight","isActive","not_null","paneInfo","pane","panes","second","flipdir","tile","resize_start","info","resize_save","percent","resizestart","rel","minheight","relto","sumh","splitContainer","factory","a0","isMsie","isBlankString","escapeRegExChars","isString","isNumber","isObject","isUndefined","isElement","isJQuery","toStr","collection","reverseArgs","every","some","mixin","getIdGenerator","counter","templatify","defer","debounce","func","wait","immediate","later","callNow","args","throttle","previous","remaining","tokenizers","whitespace","nonword","getObjTokenizer","tokenizer","keys","tokens","LruCache","maxSize","List","tail","Node","node","tailItem","size","moveToFront","PersistentStorage","override","prefix","ttlKey","keyMatcher","ls","LOCAL_STORAGE","_noop","encode","decode","gatherMatchingKeys","len","removeItem","_prefix","_ttlKey","isExpired","_safeSet","ttl","Transport","cancelled","lastReq","_send","transport","_get","limiter","_cache","sharedCache","pendingRequestsCount","pendingRequests","maxPendingRequests","setMaxPendingRequests","num","resetCache","_fingerprint","resp","fingerprint","onDeckRequestArgs","jqXhr","cancel","SearchIndex","datumTokenizer","queryTokenizer","identify","normalizeTokens","token","newNode","IDS","CHILDREN","array","seen","uniques","getIntersection","arrayA","arrayB","ai","bi","intersection","lenArrayA","lenArrayB","bootstrap","datums","trie","datum","chars","ch","ids","search","query","all","values","Prefetch","prepare","transform","thumbprint","cacheKey","_settings","store","fromCache","stored","fromNetwork","onError","onResponse","Remote","cancelLastRequest","oParser","parsePrefetch","callbackToDeferred","parseRemote","wildcard","rateLimitBy","rateLimitWait","toRemotePrepare","toLimiter","prepareByReplace","prepareByWildcard","idenityPrepare","onSuccess","deferred","sorter","initialize","sufficient","local","prefetch","Bloodhound","__ttAdapter","withAsync","sync","withoutAsync","_loadPrefetch","serialized","_initialize","addLocalToIndex","initPromise","force","processRemote","nonDuplicates","clearPrefetchCache","clearRemoteCache","ttAdapter","WWW","build","www","classes","defaultClassNames","buildCss","buildHtml","buildSelectors","wrapper","hint","borderColor","boxShadow","verticalAlign","inputWithNoHint","ltr","rtl","backgroundImage","dataset","selectable","cursor","highlight","EventBus","deprecationMap","render","cursorchange","_trigger","$e","deprecatedType","EventEmitter","types","bindContext","_callbacks","onAsync","onSync","callbacks","syncFlush","asyncFlush","getFlush","nextTick","flush","getNextTick","nextTickFn","setImmediate","getRegex","patterns","caseSensitive","wordsOnly","regexStr","escapedPatterns","pattern","hightlightTextNode","textNode","patternNode","wrapperNode","regex","splitText","traverse","childNode","TEXT_NODE_TYPE","Input","$hint","$input","queryWhenFocused","$overflowHelper","buildOverflowHelper","_checkLanguageDirection","setHint","getHint","clearHint","clearHintIfInvalid","whiteSpace","fontFamily","fontSize","fontStyle","fontVariant","wordSpacing","textIndent","textRendering","textTransform","areQueriesEquivalent","normalizeQuery","withModifier","specialKeyCodeMap","9","27","37","39","13","38","40","_onBlur","resetInputValue","_onFocus","_onKeydown","keyName","_managePreventDefault","_shouldTrigger","_onInput","_setQuery","getInputValue","areEquivalent","hasDifferentWhitespace","onBlur","onFocus","onKeydown","onInput","getLangDir","getQuery","setQuery","setInputValue","hasQueryChangedSinceLastFocus","valIsPrefixOfHint","isValid","hasOverflow","constraint","isCursorAtEnd","valueLength","selectionStart","range","selection","createRange","moveStart","Dataset","templates","notFound","isValidName","nameGenerator","displayFn","getDisplayFn","displayKey","getTemplates","_resetLastSuggestion","suggestionTemplate","pending","footer","extractData","_overwrite","suggestions","_renderSuggestions","_renderPending","_renderNotFound","_empty","_append","$lastSuggestion","_appendSuggestions","$fragment","_getSuggestionsFragment","_getHeader","_getFooter","fragment","_injectQuery","_query","update","syncCalled","rendered","canceled","isEmpty","Menu","initializeDataset","oDataset","$node","datasets","_onSelectableClick","_onRendered","_allDatasetsEmpty","_onCleared","_propagate","isDatasetEmpty","_getSelectables","_removeCursor","$selectable","getActiveSelectable","_ensureVisible","elTop","elBottom","nodeScrollTop","nodeHeight","onSelectableClick","isOpen","setLanguageDirection","selectableRelativeToCursor","delta","$selectables","$oldCursor","oldIndex","newIndex","setCursor","getSelectableData","getTopSelectable","updateDataset","isValidUpdate","clearDataset","destroyDataset","DefaultMenu","_show","_hide","Typeahead","onFocused","onBlurred","onEnterKeyed","onTabKeyed","onEscKeyed","onUpKeyed","onDownKeyed","onLeftKeyed","onRightKeyed","onQueryChanged","onWhitespaceChanged","eventBus","minLength","_hacks","_onSelectableClicked","_onAsyncRequested","_onAsyncCanceled","_onAsyncReceived","_onDatasetRendered","_onDatasetCleared","_onLangDirChanged","ctx","$menu","hasActive","_updateHint","_onFocused","_minLengthMet","_onBlurred","_onEnterKeyed","_onTabKeyed","_onEscKeyed","_onUpKeyed","moveCursor","_onDownKeyed","_onLeftKeyed","_onRightKeyed","_onQueryChanged","_onWhitespaceChanged","_openIfActive","escapedQuery","frontMatchRegEx","isEnabled","deactivate","$candidate","payload","cancelMove","ttEach","$els","typeahead","buildHintFromInput","getBackgroundStyles","spellcheck","prepInput","backgroundAttachment","backgroundOrigin","backgroundPosition","backgroundRepeat","backgroundSize","revert","$wrapper","$elOrNull","attach","defaultHint","defaultMenu","MenuConstructor","classNames","newVal","ret","contexts","registry","bloodHoundURL","fileTokenizer","renderFile","filetype","filebase","renderStoreSourceLine","hit","currentFile","alias","currentAlias","ext","renderSourceMatch","sourceLineTokenizer","renderSourceLine","predicateMatcher","ql","pl","templ","renderPredicate","mode","iso","summary","sourceMatcher","re","sourceRE","editor","line","renderUser","encodeURI","ttSources","sources","typeaheadProperties","files","swish_typeahead","storeContent","query_cache_length","store_content","predicates","of","showAllMatches","play","string","CodeMirror","classTest","removeChildren","removeChildrenAndAdd","elt","eltP","activeElt","shadowRoot","current","joinClasses","as","copyObj","overwrite","countColumn","tabSize","startIndex","startValue","nextTab","findColumn","goal","skipped","min","spaceStr","spaceStrs","lst","out","insertSorted","score","priority","nothing","createObj","base","inst","create","isWordCharBasic","nonASCIISingleCaseWordChar","isWordChar","helper","isExtendingChar","extendingChars","skipExtendingChars","findFirst","mid","Display","place","scrollbarFiller","gutterFiller","lineDiv","selectionDiv","cursorDiv","measure","lineMeasure","lineSpace","lines","mover","sizer","sizerWidth","heightForcer","scrollerGap","gutters","lineGutter","scroller","ie","ie_version","webkit","gecko","mobile","draggable","viewFrom","viewTo","reportedViewFrom","reportedViewTo","renderedView","externalMeasured","viewOffset","lastWrapHeight","lastWrapWidth","updateLineNumbers","nativeBarWidth","barHeight","barWidth","scrollbarsClipped","lineNumWidth","lineNumInnerWidth","lineNumChars","alignWidgets","cachedCharWidth","cachedTextHeight","cachedPaddingH","maxLine","maxLineLength","maxLineChanged","wheelDX","wheelDY","wheelStartX","wheelStartY","selForContextMenu","activeTouch","getLine","sz","chunkSize","getBetween","iter","getLines","updateLineHeight","diff","lineNo","no","lineAtHeight","outer","i$1","lh","isLine","lineNumberFor","lineNumberFormatter","firstLineNumber","Pos","sticky","cmp","equalCursorPos","copyPos","maxPos","minPos","clipLine","clipPos","clipToLen","linelen","clipPosArray","seeReadOnlySpans","sawReadOnlySpans","seeCollapsedSpans","sawCollapsedSpans","MarkedSpan","marker","getMarkedSpanFor","spans","removeMarkedSpan","addMarkedSpan","markedSpans","attachLine","markedSpansBefore","startCh","isInsert","nw","startsBefore","inclusiveLeft","insertLeft","endsAfter","inclusiveRight","markedSpansAfter","endCh","stretchSpansOverChange","full","oldFirst","oldLast","sameLine","found","span$1","found$1","clearEmptySpans","newMarkers","gapMarkers","gap","i$2","i$3","clearWhenEmpty","removeReadOnlyRanges","markers","mark","readOnly","parts","mk","newParts","dfrom","dto","detachMarkedSpans","detachLine","attachMarkedSpans","extraLeft","extraRight","compareCollapsedMarkers","lenDiff","aPos","bPos","fromCmp","toCmp","collapsedSpanAtSide","sps","sp","collapsed","collapsedSpanAtStart","collapsedSpanAtEnd","conflictingCollapsedRange","lineNo$$1","visualLine","merged","visualLineEnd","visualLineContinued","visualLineNo","lineN","vis","visualLineEndNo","lastLine","lineIsHidden","widgetNode","lineIsHiddenInner","heightAtLine","lineObj","lineLength","findMaxLine","cm","iterateBidiSections","part","level","getBidiPartAt","bidiOther","getOrder","bidiOrdering","moveCharLogically","moveLogically","endOfLine","visually","moveInStorageOrder","prep","prepareMeasureForLine","targetTop","measureCharPrepared","moveVisually","bidi","partPos","mv","getWrappedLineExtent","lineWrapping","wrappedLineExtentChar","begin","wrappedLineExtent","searchInVisualLine","getRes","res","nextCh","getHandlers","emitter","_handlers","noHandlers","detachEvent","map$$1","signal","signalDOMEvent","e_defaultPrevented","codemirrorIgnore","signalCursorActivity","cursorActivity","curOp","cursorActivityHandlers","hasHandler","eventMixin","ctor","e_preventDefault","e_stopPropagation","e_stop","e_target","srcElement","e_button","mac","zeroWidthElement","zwspSupported","hasBadBidiRects","badBidiRects","txt","r0","r1","hasBadZoomedRects","badZoomedRects","normal","fromRange","defineMode","dependencies","modes","defineMIME","mime","spec","mimeModes","resolveMode","getMode","mfactory","modeObj","modeExtensions","exts","helperType","modeProps","prop$1","extendMode","properties","copyState","nstate","innerMode","startState","a1","a2","highlightLine","forceToEnd","st","modeGen","lineClasses","runMode","loop","overlay","overlays","at","i_end","opaque","styles","bgClass","textClass","getLineStyles","updateFrontier","getStateBefore","maxHighlightLength","stateAfter","styleClasses","frontier","precise","findStartLine","processLine","save","startAt","stream","StringStream","callBlankLine","eol","readToken","blankLine","inner","takeToken","asArray","getObj","copy","extractLineClasses","lineClass","flattenSpans","curStart","curStyle","addModeClass","mName","minindent","minline","lim","indented","updateLine","estimateHeight","estHeight","cleanUpLine","interpretTokenStyle","styleToClassCacheWithMode","styleToClassCache","buildLineContent","lineView","builder","pre","trailingSpace","splitSpaces","getOption","rest","addToken","buildToken","buildTokenBadBidi","allowFrontierUpdate","insertLineContent","maps","caches","querySelector","defaultSpecialCharPlaceholder","startStyle","endStyle","displayText","specialChars","mustWrap","lastIndex","txt$1","tabWidth","specialCharPlaceholder","fullStyle","trailingBefore","spaceBefore","buildCollapsedSpan","ignoreWidget","widget","needsContentAttribute","setUneditable","allText","spanStyle","spanEndStyle","spanStartStyle","nextChange","foundBookmarks","endStyles","j$1","j$2","upto","tokenText","LineView","buildViewArray","nextPos","pushOperation","op","operationGroup","ops","ownsGroup","delayedCallbacks","fireCallbacksForOps","cursorActivityCalled","finishOperation","endCb","signalLater","orphanDelayedCallbacks","fireOrphanDelayed","delayed","updateLineForChanges","dims","changes","updateLineText","updateLineGutter","updateLineClasses","updateLineWidgets","ensureLineWrapped","updateLineBackground","background","getLineContent","built","wrapClass","gutter","gutterBackground","gutterClass","fixedGutter","fixedPos","gutterTotalWidth","gutterMarkers","lineNumbers","wrap$1","gutterWrap","lineNumber","gutterLeft","gutterWidth","alignable","insertLineWidgets","buildLineElement","insertLineWidgetsFor","allowAbove","handleMouseEvents","positionLineWidget","above","noHScroll","wrapperWidth","coverGutter","widgetHeight","parentStyle","eventInWidget","paddingTop","paddingVert","paddingH","currentStyle","scrollGap","displayWidth","displayHeight","ensureLineHeights","rect","wrapping","curWidth","heights","rects","mapFromLineView","updateExternalMeasurement","measureChar","bias","findViewForLine","findViewIndex","getDimensions","forceUpdate","hasHeights","prepared","varHeight","measureCharInner","bogus","rtop","rbottom","nodeAndOffsetInLineMap","mStart","mEnd","coverStart","coverEnd","getUsefulRect","nullRect","maybeUpdateRectForZooming","rSpan","charWidth","rbot","bot","singleCursorHeightPerLine","screen","logicalXDPI","deviceXDPI","scaleX","scaleY","logicalYDPI","deviceYDPI","clearLineMeasurementCacheFor","clearLineMeasurementCache","externalMeasure","clearCaches","pageScrollX","chrome","android","pageScrollY","marginTop","intoCoordSystem","includeWidgets","yOff","lOff","xOff","fromCoordSystem","coords","localBox","lineSpaceBox","charCoords","cursorCoords","preparedMeasure","getBidi","invert","other","estimateCoords","PosWithInfo","outside","xRel","coordsChar","coordsCharInner","mergedPos","assign","prevDiff","prevPos","beginLeft","textHeight","measureText","anchor","offsetLeft","compensateForHScroll","perLine","widgetsHeight","ceil","estimateLineHeights","est","posFromMouse","liberal","forRect","space","colDiff","updateSelection","showSelection","prepareSelection","primary","curFragment","cursors","selFragment","sel","ranges","primIndex","range$$1","showCursorWhenSelecting","drawSelectionCursor","drawSelectionRange","cursorHeight","otherCursor","rightSide","drawForLine","fromArg","toArg","lineLen","rightPos","leftPos","tmp","leftSide","sFrom","sTo","fromLine","toLine","singleVLine","leftEnd","rightStart","restartBlink","focused","blinker","cursorBlinkRate","ensureFocus","delayBlurEvent","delayingBlurEvent","receivedFocus","rmClass","alignHorizontally","comp","gutterW","align","maybeUpdateLineNumberWidth","innerW","updateGutterSpace","updateHeightsInViewport","prevBottom","updateWidgetHeight","visibleLines","ensure","ensureFrom","ensureTo","setScrollTop","updateDisplaySimple","scrollbars","startWorker","setScrollLeft","isScroller","scrollWidth","wheelEventDelta","dx","wheelDeltaX","dy","wheelDeltaY","axis","HORIZONTAL_AXIS","VERTICAL_AXIS","wheelDelta","wheelEventPixels","wheelPixelsPerUnit","onScrollWheel","canScrollX","canScrollY","currentWheelTarget","presto","pixels","wheelSamples","movedX","movedY","sample","measureForScrollbars","docH","viewHeight","viewWidth","barLeft","docHeight","updateScrollbars","startWidth","startHeight","updateScrollbarsInner","sizes","paddingBottom","borderBottom","coverGutterNextToScrollbar","initScrollbars","scrollbarModel","scrollbarStyle","maybeScrollWindow","innerHeight","phantom","scrollNode","scrollIntoView","scrollPosIntoView","changed","endCoords","scrollPos","calculateScrollPos","startTop","startLeft","snapMargin","screentop","docBottom","atTop","atBottom","newTop","screenleft","screenw","tooWide","addToScrollPos","resolveScrollToPos","ensureCursorVisible","getCursor","scrollToPos","cursorScrollMargin","sPos","startOperation","viewChanged","updateInput","typing","changeObjs","selectionChanged","updateMaxLine","nextOpId","endOperation","endOperations","endOperation_R1","endOperation_W1","endOperation_R2","endOperation_W2","i$4","endOperation_finish","maybeClipScrollbars","mustUpdate","DisplayUpdate","updatedDisplay","updateDisplayIfNeeded","barMeasure","adjustWidthTo","maxScrollLeft","preparedSelection","takeFocus","setDocumentHeight","postUpdateDisplay","forceScroll","maybeHiddenMarkers","unhidden","maybeUnhiddenMarkers","runInOp","operation","methodOp","docMethodOp","regChange","lendiff","resetView","cut","viewCuttingPoint","cut$1","cutTop","cutBot","regLineChange","oldN","newN","adjustView","countDirtyView","dirty","highlightWorker","workTime","changedLines","oldStyles","tooLong","highlighted","oldCls","newCls","ischange","workDelay","marginBottom","borderRightWidth","editorIsHidden","viewportMargin","different","wrapperHeight","toUpdate","patchDisplay","minHeight","oldDisplayWidth","updateNumbersFrom","rm","updateNumber","updateGutters","specs","gElt","setGuttersForLineNumbers","normalizeSelection","prim","inv","Range","Selection","simpleSelection","changeEnd","adjustForChange","computeSelAfterChange","offsetPos","computeReplacedSel","oldPrev","newPrev","loadMode","modeOption","resetModeState","isWholeLineUpdate","wholeLineUpdateBefore","updateDoc","estimateHeight$$1","spansFor","linesFor","Line","firstLine","lastText","lastSpans","nlines","insert","added","added$1","added$2","linkedDocs","sharedHistOnly","propagate","skip","sharedHist","linked","shared","attachDoc","setDirectionClass","directionChanged","History","startGen","undone","undoDepth","lastModTime","lastSelTime","lastOp","lastSelOp","lastOrigin","lastSelOrigin","generation","maxGeneration","historyChangeFromChange","histChange","attachLocalSpans","clearSelectionEvents","lastChangeEvent","hist","addChangeToHistory","selAfter","opId","historyEventDelay","pushSelectionToHistory","selectionEventCanBeMerged","somethingSelected","addSelectionToHistory","clearRedo","dest","equals","existing","removeClearedSpans","explicitlyCleared","getOldSpans","mergeOldSpans","stretched","oldCur","stretchCur","copyHistoryArray","newGroup","instantiateSel","deepCopy","newChanges","Number","extendRange","posBefore","extendSelection","setSelection","extendSelections","heads","newSel","replaceOneSelection","setSimpleSelection","filterSelectionChange","this$1","setSelectionReplaceHistory","setSelectionNoUndo","NaN","setSelectionInner","skipAtomicInSelection","reCheckSelection","sel_dontScroll","mayClear","newAnchor","skipAtomic","newHead","skipAtomicInner","oldPos","atomic","near","movePos","far","cantEdit","selectAll","filterChange","makeChange","ignoreReadOnly","suppressEdits","makeChangeInner","makeChangeSingleDoc","rebased","rebaseHist","makeChangeFromHistory","allowSelectionOnly","antiChanges","returned","shiftDoc","distance","removed","makeChangeSingleDocInEditor","recomputeMaxLength","checkWidthStart","changesHandler","changeHandler","replaceRange","splitLines","rebaseHistSelSingle","rebaseHistArray","sub","ok","copied","changeLine","changeType","adjustScrollWhenAboveVisible","addLineWidget","LineWidget","insertAt","aboveVisible","markText","markTextShared","TextMarker","replacedWith","addToHistory","curLine","clearOnEnter","clearHistory","nextMarkerId","isParent","SharedTextMarker","findSharedMarkers","findMarks","copySharedMarkers","mFrom","mTo","subMark","detachSharedMarkers","subMarker","onDrop","clearDragCursor","lastDrop","dataTransfer","isReadOnly","FileReader","File","read","loadFile","allowDropFileTypes","reader","lineSeparator","readAsText","draggingText","text$1","getData","listSelections","replaceSelection","setData","getSelection","effectAllowed","setDragImage","safari","_top","onDragOver","frag","dragCursor","forEachCodeMirror","byClass","ensureGlobalHandlers","globalsRegistered","registerGlobalHandlers","resizeTimer","onResize","setSize","normalizeKeyName","alt","ctrl","cmd","mod","normalizeKeyMap","keymap","keyname","lookupKey","getKeyMap","fallthrough","isModifierKey","keyNames","noShift","altGraphKey","flipCtrlCmd","keyMap","deleteNearSelection","compute","kill","toKill","replaced","lineStart","visual","lineEnd","lineStartSmart","firstNonWS","inWS","doHandleBinding","dropShift","commands","ensurePolled","prevShift","Pass","lookupKeyForEditor","keyMaps","extraKeys","dispatchKey","seq","keySeq","stopSeq","handleKeyBinding","motion","handleCharBinding","onKeyDown","handled","lastStoppedKey","hasCopyEvent","showCrossHair","up","onKeyUp","onKeyPress","onMouseDown","supportsTouch","clickInGutter","selectingText","leftButtonDown","lastMiddleDown","captureRightClick","onContextMenu","lastDoubleClick","lastClick","contained","modifier","dragDrop","dragAndDrop","leftButtonStartDrag","leftButtonSelect","moved","dragEnd","mouseMove","dragStart","e2","addNew","extendTo","lastPos","startCol","posCol","startSel","ourIndex","oldRange","ourRange","findWordAt","ranges$1","sel_mouse","curCount","editorSize","move","chromeOS","word","gutterEvent","prevent","mX","mY","lineBox","contextMenuInGutter","themeChanged","theme","defineOptions","deflt","notOnInit","optionHandlers","Init","defineOption","setValue","lineSep","newBreaks","getInputField","windows","guttersChanged","wrappingChanged","integer","readOnlyChanged","dragDropChanged","resetPosition","getField","setDirection","wasOn","funcs","dragFunctions","over","drop","CodeMirror$1","Doc","inputStyles","inputStyle","pasteIncoming","cutIncoming","Delayed","autofocus","registerEventHandlers","opt","finishInit","initHooks","finishTouch","touchFinished","prevTouch","isMouseLikeTouchEvent","touch","radiusX","radiusY","farAway","inp","indentLine","how","aggressive","indent","curSpace","indentation","curSpaceString","indentUnit","indentString","indentWithTabs","pos$1","setLastCopied","newLastCopied","lastCopied","applyTextInput","inserted","deleted","paste","textLines","splitLinesAuto","multiPaste","lineWise","changeEvent","triggerElectric","handlePaste","pasted","clipboardData","disableInput","electricChars","smartIndent","getModeAt","electricInput","copyableRanges","lineRange","getRange","disableBrowserMagic","hiddenTextarea","te","ios","findPosH","findNextLine","moveOnce","boundToLine","origDir","sawType","getHelper","hitSide","findPosV","pageSize","moveAmount","posToDOM","side","isInGutter","scan","badPos","bad","domTextBetween","recognizeMarker","closing","addText","walk","cmText","markerID","isBlock","domToPos","lineNode","locateNodeInLineView","topNode","curNode","dist","previousSibling","dist$1","fromTextArea","getValue","realSubmit","leaveSubmitMethodAlone","wrappedSubmit","getTextArea","toTextArea","getWrapperElement","addLegacyProps","cmpPos","platform","ie_upto10","ie_11up","edge","documentMode","qtwebkit","vendor","mac_geMountainLion","presto_version","endNode","setEnd","setStart","createTextRange","moveToElementText","moveEnd","selectInput","selectionEnd","_e","ms","sel_move","charType","lowTypes","arabicTypes","BidiSpan","bidiRE","isNeutral","isStrong","countsAsLeft","countsAsNum","outerType","type$1","prev$1","type$2","type$3","i$5","cur$1","type$4","i$6","end$1","replace$1","i$7","nstart","nl","rt","hasSelection","parentElement","compareEndPoints","oncopy","lastColumnPos","lastColumnValue","sol","peek","eat","eatWhile","eatSpace","skipToEnd","skipTo","backUp","column","consume","caseInsensitive","cased","hideFirstChars","NativeScrollbars","vert","horiz","checkedZeroWidth","needsH","needsV","sWidth","totalHeight","totalWidth","zeroWidthHack","disableHoriz","enableZeroWidthBar","disableVert","pointerEvents","bar","maybeDisable","elt$$1","elementFromPoint","NullScrollbars","native","null","here","there","LeafChunk","removeInner","insertInner","iterN","BranchChunk","oldHeight","leaf","maybeSpill","me","spilled","sibling","myIndex","used","oldH","withOp","dHeight","nextDocId","cleanGeneration","getLineHandle","getLineNumber","getLineHandleVisualStart","lineCount","extendSelectionsBy","setSelections","addSelection","getSelections","dup","replaceSelections","undo","redo","undoSelection","redoSelection","setExtending","getExtending","historySize","markClean","changeGeneration","forceSplit","isClean","gen","getHistory","setHistory","histData","setGutterMarker","gutterID","clearGutter","lineInfo","addLineClass","where","removeLineClass","removeLineWidget","setBookmark","realOpts","findMarksAt","getAllMarks","posFromIndex","sepSize","indexFromPos","copyHistory","linkedDoc","unlinkDoc","link","splitIds","iterLinkedDocs","getEditor","eachLine","3","8","16","17","18","19","20","32","33","34","35","36","44","45","46","59","61","91","92","93","106","107","109","110","111","127","173","186","187","188","189","190","191","192","219","220","221","222","63232","63233","63234","63235","63272","63273","63275","63276","63277","63302","basic","Left","Right","Up","Down","End","Home","PageUp","PageDown","Delete","Backspace","Shift-Backspace","Tab","Shift-Tab","Enter","Insert","Esc","pcDefault","Ctrl-A","Ctrl-D","Ctrl-Z","Shift-Ctrl-Z","Ctrl-Y","Ctrl-Home","Ctrl-End","Ctrl-Up","Ctrl-Down","Ctrl-Left","Ctrl-Right","Alt-Left","Alt-Right","Ctrl-Backspace","Ctrl-Delete","Ctrl-S","Ctrl-F","Ctrl-G","Shift-Ctrl-G","Shift-Ctrl-F","Shift-Ctrl-R","Ctrl-[","Ctrl-]","Ctrl-U","Shift-Ctrl-U","Alt-U","emacsy","Ctrl-B","Ctrl-P","Ctrl-N","Alt-F","Alt-B","Ctrl-E","Ctrl-V","Shift-Ctrl-V","Ctrl-H","Alt-D","Alt-Backspace","Ctrl-K","Ctrl-T","Ctrl-O","macDefault","Cmd-A","Cmd-D","Cmd-Z","Shift-Cmd-Z","Cmd-Y","Cmd-Home","Cmd-Up","Cmd-End","Cmd-Down","Cmd-Left","Cmd-Right","Ctrl-Alt-Backspace","Alt-Delete","Cmd-S","Cmd-F","Cmd-G","Shift-Cmd-G","Cmd-Alt-F","Shift-Cmd-Alt-F","Cmd-[","Cmd-]","Cmd-Backspace","Cmd-Delete","Cmd-U","Shift-Cmd-U","singleSelection","killLine","deleteLine","delLineLeft","delWrappedLineLeft","delWrappedLineRight","goDocStart","goDocEnd","goLineStart","goLineStartSmart","goLineEnd","goLineRight","goLineLeft","goLineLeftSmart","goLineUp","moveV","goLineDown","goPageUp","goPageDown","goCharLeft","moveH","goCharRight","goColumnLeft","goColumnRight","goWordLeft","goGroupRight","goGroupLeft","goWordRight","delCharBefore","deleteH","delCharAfter","delWordBefore","delWordAfter","delGroupBefore","delGroupAfter","indentAuto","indentSelection","indentMore","indentLess","insertTab","insertSoftTab","spaces","defaultTab","execCommand","transposeChars","newlineAndIndent","sels","openLine","toggleOverwrite","defineInitHook","addEditorMethods","helpers","setOption","getDoc","addKeyMap","removeKeyMap","addOverlay","modeSpec","removeOverlay","newRanges","getTokenAt","getLineTokens","getTokenTypeAt","getHelpers","_global","getStateAfter","defaultTextHeight","defaultCharWidth","getViewport","addWidget","triggerOnKeyDown","triggerOnKeyPress","triggerOnKeyUp","amount","rtlMoveVisually","goalColumn","goals","headPos","startChar","check","getScrollInfo","interpret","swapDoc","getScrollerElement","getGutterElement","registerHelper","registerGlobalHelper","predicate","ContentEditableInput","lastAnchorNode","lastAnchorOffset","lastFocusNode","lastFocusOffset","polling","composing","gracePeriod","readDOMTimeout","onCopyCut","lineWiseCopyCut","clearData","kludge","hadFocus","showPrimarySelection","updateFromDOM","readFromDOMSoon","forceCompositionEnd","showMultipleSelections","removeAllRanges","curAnchor","anchorNode","anchorOffset","curFocus","focusNode","focusOffset","rng","rangeCount","getRangeAt","addRange","startGracePeriod","rememberSelection","selectionInEditor","commonAncestorContainer","poll","pollSelection","pollInterval","pollContent","fromIndex","fromNode","toNode","toIndex","newText","oldText","cutFront","cutEnd","oldTop","maxCutFront","newBot","oldBot","maxCutEnd","chFrom","chTo","contentEditable","TextareaInput","prevInput","pollingFast","inaccurateSelection","prepareCopyCut","fastPoll","moveInputWithCursor","wrapOff","lineOff","teTop","teLeft","drawn","contextMenuPending","minimal","slowPoll","missed","same","prepareSelectAllHack","extval","rehide","oldWrapperCSS","oldCSS","detectingSelectAll","resetSelectionOnContextMenu","wrapperBox","oldScrollY","scrollY","mouseup","dontDelegate","contenteditable","defineExtension","defineDocExtension","version","sourceToolTip","ago","markdown","web_storage","delim","lasthangoutwarning","messages","aria-haspopup","aria-expanded","table","Include my query","queryEditor","Broadcast to hangout","oneline","has_payload","muser","suser","profile_id","data-userid","payload_handlers","load_from_server","ifempty","chat_messages","textStatus","errorThrown","update_time","diffBody","baseName","headName","room","scrollToBottom","onlydown","qe","dif","nwe","commit","about","chats","empty_title","total","chats++","chat_status","tabbed","tabTypes","wrapInTab","wrapped","glyphicon","genId","tabid","profileObject","profiles","newTab","prompt","clean","makeTabbed","newContentID","hr","tabFromSource","inNewTab","setSource","tabType","showTracePort","isPengineSrc","isStoreSrc","pengineID","editors","noHistory","addTab","removeTab","new_active","prologRunner","tabLabel","close_button","data-id","tabSelect","data-type","typeName","data-ext","typelabel","download","print","fileInfo","searchForm","sform","data-search-in","profileForm","pform","profileValue","navTabs","navTab","navContent","prolog","downloadCSV","infoBody","csv_formats","disposition","params","pengines","trimFullStop","application","Pengine","answerHasOutput","answer","variables","residuals","renderSubstitutions","substs","var","renderAnswer","substitutions","renderTabledAnswer","findBinding","ensureResidualColumn","vname","binding","evalScripts","ajaxScript","eval","row","renderMulti","prologAnswer","selectMenu","hovering","startMenuTimeout","resetHover","closeSelectMenu","dt","downloadButton","showSelect","hideSelect","selectElementText","selectNodeContents","aSupportsDownload","outerHTML","extension","svg","prologText","sparkline","createClass","SPFormat","clipval","quartile","normalizeValue","normalizeValues","sum","addCSS","ensureArray","formatNumber","RangeMap","MouseHandler","Tooltip","barHighlightMixin","tristate","discrete","bullet","pie","defaultStyles","initStyles","VShape","VCanvas_base","VCanvas_canvas","VCanvas_vml","UNSET_OPTION","shapeCount","common","lineColor","fillColor","defaultPixelsPerValue","composite","tagValuesAttribute","tagOptionsPrefix","enableTagOptions","enableHighlight","highlightLighten","tooltipSkipNull","tooltipPrefix","tooltipSuffix","disableHiddenCheck","numberFormatter","numberDigitGroupCount","numberDigitGroupSep","numberDecimalMark","disableTooltips","disableInteraction","spotColor","highlightSpotColor","highlightLineColor","spotRadius","minSpotColor","maxSpotColor","lineWidth","normalRangeMin","normalRangeMax","normalRangeColor","drawNormalOnTop","chartRangeMin","chartRangeMax","chartRangeMinX","chartRangeMaxX","tooltipFormat","barColor","negBarColor","stackedBarColor","zeroColor","nullColor","zeroAxis","barSpacing","chartRangeClip","colorMap","posBarColor","zeroBarColor","tooltipValueLookups","-1","1","thresholdColor","thresholdValue","targetColor","targetWidth","performanceColor","rangeColors","sliceColors","borderWidth","raw","boxLineColor","boxFillColor","whiskerColor","outlierLineColor","outlierFillColor","medianColor","showOutliers","outlierIQR","tooltipFormatFieldlistKey","lq","med","uq","lo","ro","lw","rw","Class","_super","SPFormatClass","fre","precre","fclass","fieldset","lookups","lookupkey","fieldvalue","prec","lookup","spformat","vl","nf","vals","groupsize","groupsep","decsep","ignoreNull","createStyleSheet","WebkitAppearance","simpledraw","useExisting","interact","mhandler","canvas","getContext","namespaces","registerCanvas","cleardraw","RangeMapClass","rangelist","range_map","currentPageX","currentPageY","splist","displayTooltips","highlightEnabled","registerSparkline","updateDisplay","$canvas","mouseclick","removeTooltip","clickEvent","sparklines","mousemove","currentEl","updatePosition","spcount","needsRefresh","clearRegionHighlight","tooltiphtml","localX","localY","setRegionHighlight","getCurrentRegionTooltip","disableHighlight","sizeStyle","tooltipClassname","sizetipStyle","tooltipOffsetX","tooltipOffsetY","sizetip","updateWindowDims","scrollRight","getSize","mousex","mousey","userValues","userOptions","$this","sparkline_display_visible","extendedOptions","tagOptionType","tagValCache","getTagSetting","mergedOptions","pairs","keyval","defaultval","tagOption","_base","currentRegion","initTarget","interactive","canvasWidth","pixelWidth","canvasHeight","pixelHeight","getRegion","newRegion","removeHighlight","renderHighlight","changeHighlight","formats","formatlen","showFields","showFieldsKey","newFields","fv","formatter","fieldlen","entries","getCurrentRegionFields","isNull","suffix","calcHighlightColor","color","mult","rgbnew","highlightColor","lighten","newShapes","shapeids","regionShapes","renderRegion","replaceWithShapes","newShape","replaceWithShape","shapes","vertices","regionMap","xvalues","yvalues","yminmax","hightlightSpotId","lastShapeId","highlightSpot","vertex","drawCircle","highlightSpotId","insertAfterShape","drawLine","canvasTop","highlightLineId","removeShapeId","scanValues","isStr","valcount","maxy","maxyorg","miny","minyorg","maxx","minx","processRangeOptions","drawNormalRange","canvasLeft","rangey","ytop","drawRect","rangex","yvallast","path","paths","xnext","xpos","xposnext","yvalcount","lineShapes","fillShapes","plen","valueSpots","hlSpotsEnabled","drawShape","getLastShapeId","isStackString","groupMin","groupMax","stackRanges","numValues","vlen","xaxisOffset","clipMin","clipMax","stacked","vlist","slen","svals","yoffset","yMaxCalc","stackMin","stackMax","totalBarWidth","stackTotals","stackRangesNeg","canvasHeightEf","colorMapByIndex","colorMapByValue","calcColor","stacknum","valuenum","newColor","yoffsetNeg","minPlotted","allMin","halfHeight","itemWidth","pheight","valueShapes","regiondata","shapeid","getShapeAt","fieldkey","region","shape","renderRange","renderPerformance","renderTarget","rn","rangeval","rangewidth","perfval","perfwidth","targetval","targettop","targetheight","p1","t0","radius","newslice","renderSlice","circle","drawPieSlice","quartiles","loutlier","routlier","lwhisker","rwhisker","iqr","q1","q2","q3","unitSize","minValue","maxValue","appendShape","_pxregex","x1","y1","x2","y2","_genShape","startAngle","endAngle","getElement","_insert","_calculatePixelDims","shapetype","shapeargs","shapeseq","currentTargetShapeId","_getContext","strokeStyle","fillStyle","clearRect","_drawShape","beginPath","moveTo","lineTo","stroke","fill","targetX","targetY","isPointInPath","_drawCircle","arc","_drawPieSlice","closePath","_drawRect","sid","shapemap","groupel","insertAdjacentHTML","prerender","initial","closed","vel","vpath","startx","starty","endx","endy","sin","content_type","chs","downloader","glyphButton","runnerMenu","Collapse all","Expand all","Stop all","Clear","prologRunners","stretch","iconifyLast","runner","jrunner","alive","toggleIconic","RS","addAnswer","results","aliveState","answerTable","tds","runScripts","scripts","my_node","breakpoints","registerSources","pengine","handleCreate","bps","resvar","residuals_var","ask","termNoFullStop","handleSuccess","more","handleFailure","handleStop","handlePrompt","wait_for","clickableLocations","matched","gotoError","econtext","handleOutput","clickableError","loc","error_context","error_handler","handleError","handleAbort","handlePing","keyBindings","65","112","titleBarButton","stateButton","controllerDiv","next10","next100","next1000","statusChart","spark","tabled","qspan","savedFocus","answers","server","oncreate","onsuccess","onfailure","onstop","onprompt","onoutput","onping","ping","setScreenDimensions","sh","cw","cols","rows","outputHTML","syntaxError","query_editor","trace","capitalizeFirstLetter","respond","depth","port","exception","setPrompt","receiver","request","fdata","stopOrAbort","runners","populateActionMenu","Re-run","stateful","stats","toBytes","numberWithCommas","bytes","pow","stacks","colors","names","usage","trail","log10","tooltipChartTitle","node_id","unique_id","diffMeta","m1","m2","diffAttr","diffTags","reduceMeta","t1","t2","tabs","commits","henabled","Boolean","symbolic","showMetaData","metaData","newMetaData","showHistory","playButton","data-click-to-select","data-single-select","fillHistoryTable","changedAttributes","data-commit","setCommit","showDiff","fillDiff","addTag","udiffData","classmap","@","-","br","__whitespace","\t","\n","\f","\r","difflib","defaultJunkFunction","stripLinebreaks","stringAsLines","lfpos","crpos","linebreak","__reduce","__ntuplecomp","mlen","__calculate_ratio","__isindict","dict","__dictget","SequenceMatcher","isjunk","set_seqs","set_seq1","set_seq2","matching_blocks","opcodes","fullbcount","__chain_b","b2j","populardict","indices","junkdict","isbjunk","isbpopular","find_longest_match","alo","ahi","blo","bhi","besti","bestj","bestsize","j2len","newj2len","jdict","jkey","get_matching_blocks","qi","i2","j2","k2","i1","j1","k1","block","non_adjacent","get_opcodes","bj","blocks","get_grouped_opcodes","codes","nn","groups","ratio","triple","quick_ratio","avail","availhas","numb","real_quick_ratio","_calculate_ratio","diffview","buildView","celt","clazz","telt","ctelt","addCells","tidx","tend","addCellsInline","tidx2","baseTextLines","newTextLines","baseTextName","newTextName","contextSize","inline","viewType","tdata","node2","be","ne","rowcnt","toprows","botrows","jump","newtxt","sm","basename","udiff","editConflicts","addLine","filesysInfo","last_modified","modified_since_loaded","loaded","errorString","is_clean","onStorage","supportsType","changeGen","cleanCheckpoint","update_tab_title","reload","what","default","saveAs","saveAsBody","display_name","saveURL","resolveEditConflict","tabContent","bdiv","merge-my-edits","edit","merge-server-edits","merge-conflicts","patch_status","editConflictAction","copyMeta","modified","expose","new","selections","notebook","getSelectionLabel","editorLabel","ed","restoreSelection","percentage","close_chat","chat_message","follow_file_options","unload","why","confirm","opened","Sha1","sharedMemory","h0","h3","h4","finalized","hashed","NODE_JS","JS_SHA1_NO_NODE_JS","versions","COMMON_JS","JS_SHA1_NO_COMMON_JS","AMD","HEX_CHARS","EXTRA","SHIFT","OUTPUT_TYPES","createOutputMethod","outputType","createMethod","nodeWrap","crypto","Buffer","nodeMethod","createHash","digest","ArrayBuffer","Uint8Array","notString","lastByteIndex","finalize","hex","arrayBuffer","buffer","dataView","DataView","setUint32","sha1","data-action","imageButton","glyphButtonGlyph","sep","Notebook","my_cell","cellTypes","program","currentCell","stringifyNotebookDOM","orderAttrs","nest","is_cell","clipboard","notebookMenu","Delete cell","Copy cell","Paste cell","Move cell up","Move cell down","Insert cell","--","Exit fullscreen","copyData","toolbar","focusout","eds","aeds","nc","fullscreen","delete","cells","restore","down","insertAbove","insertBelow","if_visible","chat_container","cellType","checkModified","clean_signalled","removeNotForQuery","viewrect","seltop","selbottom","cbottom","setupStorage","cgen","skipEmpty","assignCellNames","updatePlaceHolder","placeHolder","cellText","fileInsertInput","theFile","typeMore","typeLess","less","assignName","runTabled","getSettings","querySettingsBody","singleline","program_cells","programs","saveDOM","restoreDOM","domCellType","setAttr","autoCurrent","getSource","wrapSolution","sourceID","Aggregate (count all)","Projection","Order by","Distinct","Limit","---","Download answers as CSV","markdownText","makeEditable","setHTML","htmlText","eval_script","runHTML","pretext","copyAttr","copyClassAttr","isDefault","getAttr","addClassAttr","addData","addAttr","pcells","formsel","appendDropdown","accell","preference","pref","submenu","items","dropDownUL","clickNotSubMenu","clickSubMenu","grandparent","navbar","ul1","ul2","populateDropdown","clearDropdown","extendDropdown","DEBUG","topic","TemplateState","marked","selectableMarkers","varIndex","isNested","_templateStack","Template","varTemplates","_tokens","parseTemplate","varParsing","addChar","line_selection","variable","getMarkerChanged","textChanged","_templateVar","onChange","_templateState","updating","markerChanged","uninstall","posChanged","newContent","onEndCompletion","selectNextVariable","exitOnEnd","exit","hintValue","samePos","p2","_hintTemplateMarker","cursorPos","canceledMarker","ourMap","templatesMap","templatesHint","Ctrl-Space","_content","subTemplate","tvar","nested","startLine","_templates","targetLine","getCompletions","completions","completion","addTemplates","forEach","TemplatesHint","PrologHint","modeToTemplate","varp","detp","metav","vt","hintsFor","myTemplates","symbol","anyword","anyhint","getHints","callback","attachContextInfo","tokenPosition","uflagsW","chr","cp","UNICODE_MAP_SIZE","uflags_map","U_ID_START","U_ID_CONTINUE","U_UPPERCASE","U_SEPARATOR","U_SYMBOL","U_OTHER","U_CONTROL","ucp0x00","ucp0x01","ucp0x02","ucp0x03","ucp0x04","ucp0x05","ucp0x06","ucp0x07","ucp0x08","ucp0x09","ucp0x0a","ucp0x0b","ucp0x0c","ucp0x0d","ucp0x0e","ucp0x0f","ucp0x10","ucp0x12","ucp0x13","ucp0x14","ucp0x16","ucp0x17","ucp0x18","ucp0x19","ucp0x1a","ucp0x1b","ucp0x1c","ucp0x1d","ucp0x1e","ucp0x1f","ucp0x20","ucp0x21","ucp0x23","ucp0x24","ucp0x27","ucp0x2b","ucp0x2c","ucp0x2d","ucp0x2e","ucp0x2f","ucp0x30","ucp0x31","ucp0x32","ucp0x4d","ucp0x9f","ucp0xa4","ucp0xa6","ucp0xa7","ucp0xa8","ucp0xa9","ucp0xaa","ucp0xab","ucp0xd7","ucp0xd8","ucp0xdb","ucp0xdc","ucp0xdf","ucp0xe0","ucp0xf8","ucp0xfa","ucp0xfb","ucp0xfd","ucp0xfe","ucp0xff","ucp0x100","ucp0x101","ucp0x102","ucp0x103","ucp0x104","ucp0x108","ucp0x109","ucp0x10a","ucp0x10b","ucp0x10c","ucp0x10e","ucp0x110","ucp0x111","ucp0x116","ucp0x123","ucp0x124","ucp0x134","ucp0x16a","ucp0x16f","ucp0x1b0","ucp0x1d0","ucp0x1d1","ucp0x1d2","ucp0x1d3","ucp0x1d4","ucp0x1d5","ucp0x1d6","ucp0x1d7","ucp0x1ee","ucp0x1f0","ucp0x1f1","ucp0x1f2","ucp0x1f3","ucp0x1f4","ucp0x1f5","ucp0x1f6","ucp0x1f7","ucp0x2a6","ucp0x2b7","ucp0x2b8","ucp0x2fa","ucp0xe00","ucp0xe01","ucp0xf00","ucp0xfff","ucp0x1000","ucp0x10ff","flags","id_start","id_continue","uppercase","separator","control","ctype","cmConfig","parserConfig","chain","readDigits","readEsc","isSingleEscChar","unicodeEscape","isHexDigit","isOctalDigit","nextUntilUnescaped","nesting","multiLineQuoted","setArg1","goalStart","setArgAlignment","alignment","leftCol","nextArg","isControl","inBody","tp","cont","peekSpace","plTokenBase","lastType","functor","functorName","functorColumn","closeColumn","tagColumn","plTokenComment","isSoloChar","commaAtEOL","quasiQuotations","plTokenQuasiQuotation","plTokenString","groupedIntegers","atom","isNeck","isControlOp","dicts","sec","quote","quoteType","maybeEnd","\"","'","`","curTerm","curToken","metainfo","enrich","textAfter","blockCommentStart","blockCommentEnd","blockCommentContinue","lineComment","prologStartIfThenElse","prologStartThen","prologStartElse","'('","'>'","';'","Ctrl-L","prologFireQuery","endl","endc","Ctrl-Enter","State","DEFAULT_DELAY","generationFromServer","changeEditor","prologHighlightServer","askRefresh","serverAssistedHighlight","leaveEditor","enrichStyle","serverToken","outOfSync","okToken","okTerm","skippedTerms","skippedTokens","reSync","oos","matchTokenText","isQuoted","matchToken","syncOnType","serverSync","serverStyle","syntax_error","USE_CHANGES_IF_LONGER_THEN","leaveCM","modeOptions","refreshHighlight","qatom","bqstring","number","neg-number","pos-number","list_open","list_close","qq_open","qq_sep","qq_close","dict_open","dict_close","brace_term_open","brace_term_close","neck","fullstop","singleton","uatom","op_type","int","ext_quant","expanded","comment_string","identifier","delimiter","head_exported","head_public","head_extern","head_dynamic","head_multifile","head_unreferenced","head_hook","head_meta","head_constraint","head_imported","head_built_in","head_iso","head_def_iso","head_def_swi","goal_built_in","goal_imported","goal_autoload","goal_global","goal_undefined","goal_thread_local","goal_dynamic","goal_multifile","goal_expanded","goal_extern","goal_recursion","goal_meta","goal_foreign","goal_local","goal_constraint","goal_not_callable","xpce_method","xpce_class_builtin","xpce_class_lib","xpce_class_user","xpce_class_undef","option_name","no_option_name","flag_name","no_flag_name","file_no_depends","nofile","qq_type","string_terminal","entity","html_attribute","sgml_attr_function","http_location_for_id","http_no_location_for_id","getEnrichedToken","terminfo","tokenInfo","getTokenReferences","setFile","htmlConfig","autoSelfClosers","area","command","embed","frame","keygen","track","wbr","menuitem","implicitlyClosed","dd","rp","contextGrabbers","address","article","aside","blockquote","dl","h5","h6","hgroup","nav","ol","section","doNotIndent","allowUnquoted","allowMissing","caseFold","xmlConfig","editorConf","config_","inText","parser","inBlock","doctype","inTag","baseState","tagStart","inAttribute","stringStartCol","closure","isInAttribute","terminator","Context","startOfLine","noIndent","popContext","maybePopContext","nextTagName","parentTagName","tagNameState","closeTagNameState","setStyle","attrState","matchClosing","closeState","closeStateErr","_stream","attrEqState","attrValueState","attrContinuedState","htmlMode","isInText","baseIndent","fullLine","multilineTagIndentPastTag","multilineTagIndentFactor","alignCDATA","tagAfter","grabbers","configuration","skipAttribute","modeInfo","mimes","findModeByMIME","findModeByExtension","findModeByFileName","dot","findModeByName","cmCfg","modeCfg","switchInline","switchBlock","lineIsEmpty","linkTitle","em","strong","strikethrough","indentedCode","htmlBlock","inlineNormal","blockNormal","trailingSpaceNewLine","prevLine","thisLine","prevLineIsList","prevLineIsIndentedCode","indentationDiff","tokenTypes","atxHeaderRE","highlightFormatting","formatting","getType","setextHeaderRE","footnoteLink","hrRE","listRE","listType","listStack","taskLists","taskListRE","taskList","fencedCodeBlocks","fencedCodeRE","fencedChars","localMode","localState","htmlState","htmlModeMissing","md_inside","returnType","maxBlockquoteDepth","taskOpen","taskClosed","linkHref","linkText","imageAltText","imageMarker","listMod","list2","list3","list1","handleText","textRE","matchCh","previousFormatting","formattingEscape","linkInline","linkEmail","atts","leftFlanking","punctuation","rightFlanking","setEm","setStrong","getLinkHrefInside","endChar","returnState","linkRE","footnoteLinkInside","footnoteUrl","tokenTypeOverrides","tokenType","allowAtxHeaderWithoutSpace",")","]","forceBlankLine","closeBrackets","fold","findMatchingBracket","strict","matching","scanForBracket","forward","maxScanLen","maxScanLineLength","maxScanLines","bracketRegex","matchBrackets","autoclear","maxHighlightLen","maxHighlightLineLength","marks","ie_lt8","doMatchBrackets","currentlyHighlighted","(","[","{","}","continueComment","inserts","modeHere","continueLineCommentEnabled","continueLineComment","nonWS","probablyInsideString","useInnerComments","noOptions","toggleComment","minLine","uncomment","commentString","fullLines","blockComment","pad","blankLines","commentBlankLines","baseString","startString","endString","lastLineHasText","blockCommentLead","didSomething","lineString","endPos","endLine","insideStart","insideEnd","lastStart","firstEnd","almostLastStart","openEnd","foundEnd","Completion","startPos","startLen","activityFunc","isNewCompletion","parseOptions","hintOptions","defaultOptions","buildKeyMap","addBinding","baseMap","moveFocus","menuSize","setFocus","pick","custom","customKeys","extra","getHintElement","hintsElement","Widget","picked","hints","selectedHint","HINT_ELEMENT_CLASS","ACTIVE_HINT_ELEMENT_CLASS","hintId","alignWithWord","below","winW","winH","overlapY","scrolls","startScroll","curTop","overlapX","avoidWrap","changeActive","screenAmount","closeOnUnfocus","closingOnBlur","onScroll","curScroll","point","completeOnSingleClick","applicableHelpers","supportsSelection","fetchHints","resolveAutoHints","words","resolved","app","fromList","showHint","newOpts","completionActive","cancelAnimationFrame","closeCharacters","myTick","finishUpdate","completeSingle","auto","WORD","RANGE","curWord","clearPlaceholder","setPlaceholder","modespec","ie_lt9","SearchCursor","atOccurrence","ignoreCase","cutOff","newMatch","matchLen","origQuery","orig","adjustPos","origTarget","ln","folded","pos1","len1","findNext","findPrevious","savePosAndFail","getSearchCursor","dialogDiv","dialog","closeNotification","currentNotificationClose","onClose","selectValueOnOpen","closeOnEnter","closeOnBlur","blurring","doneTimer","searchOverlay","SearchState","posFrom","posTo","lastQuery","getSearchState","queryCaseInsensitive","persistentDialog","onEnter","openDialog","clearSearch","shortText","confirmDialog","fs","openConfirm","parseString","parseQuery","isRE","startSearch","queryText","showMatchesOnScrollbar","annotate","doSearch","rev","hiding","searchNext","queryDialog","dialogText","replaceQueryDialog","replacementQueryDialog","advance","doReplaceConfirm","doReplace","findPersistent","findPersistentNext","findPersistentPrev","findPrev","interpretLine","jumpDialog","jumpToLine","posStr","showTooltip","tt","hideTooltip","showTooltipFor","HOVER_CLASS","TextHoverState","onMouseOver","onMouseOverWithDelay","Function","getTextHover","textHover","newE","getTokenAndPosAt","optionHandler","nearby","predName","addFileTranslation","pathTranslations","localDef","tokenHelp","unused_import","undefined_import","expected","instantiation_error","comment","operator","et","contextInfo","information","showContextInfo","showHints","posEq","addToRing","killRing","growRingTop","getFromRing","popFromRing","mayGrow","lastKill","byChar","byWord","byLine","byPage","byParagraph","sawText","fst","hasText","bySentence","sawWord","byExpr","newPos","getPrefix","digits","emacsPrefix","clearPrefix","repeated","findEnd","by","killTo","killRegion","addPrefix","digit","maybeClearPrefix","maybeDuplicateInput","emacsPrefixMap","prefixPreservingKeys","addPrefixMap","prefixMap","maybeRemovePrefixMap","setMark","clearMark","getInput","operateOnWord","toEnclosingExpr","quit","regPrefix","Alt-G","Ctrl-X","Ctrl-Q","emacs","Ctrl-W","Alt-W","Alt-Y","Ctrl-Shift-2","Alt-V","Alt-A","Alt-E","Alt-K","Ctrl-Alt-K","Ctrl-Alt-F","Ctrl-Alt-B","Shift-Ctrl-Alt-2","Ctrl-Alt-T","leftStart","rightEnd","Ctrl-Alt-U","Alt-Space","Alt-C","letter","Alt-L","Alt-;","Ctrl-/","Shift-Ctrl--","Shift-Alt-,","Shift-Alt-.","Ctrl-R","Shift-Alt-5","Alt-/","Ctrl-J","Alt-G G","Ctrl-X Tab","Ctrl-X Ctrl-X","Ctrl-X Ctrl-S","Ctrl-X Ctrl-W","Ctrl-X S","Ctrl-X F","Ctrl-X U","Ctrl-X K","Ctrl-X Delete","Ctrl-X H","Ctrl-Q Tab","templateHint","loadStyleExtensions","sname","lastEditor","modeDefaults","prologKeys","roleDefaults","moveLongClick","lc","long_click","sqrt","cancelLongClick","cm_highlight","continueComments","traceMark","makeMarker","setKeybinding","schema","isPengineSource","storageData","getBreakpoints","direct","mysrc","getSourceEx","stdoc","getSourceID","makeCurrent","setIsClean","printWithIframe","highlightError","chmark","clearMessages","isMyFile","charOffsetToPos","cmploc","l1","l2","cppos","esel","cell_name","sr","restoreEditorSelection","findsel","contextMatch","l0","stringMatch","choff","cml","poff","goffset","soff","toff","cmsel","loffset","findEditor","getExamples","inComment","comments","exlist","exl","ex","addExample","gotoLine","clearSearchMarkers","_searchMarkers","markMatches","myHeight","vp","contextAction","data-locindex","coord","anon","addVars","wrapQuery","prefixQuery","tab_types","editDefaults","charno","cm_style","cm_hover_style","dropup","examplesButton","updateExamples","examples","mousedown","historyButton","aggregateButton","aggregates","runButton","tableSelected","tableCheckbox","tabled_results","maxHistoryLength","qediv","prologQuery","setProgramEditor","bg","getProgramEditor","setExamples","sameExamples","exs","ex0","addHistory","findInHistory","cleanGen","unfold","DEFAULT_USER_FIELDS","clearAuthenticationCache","page","oncomplete","agt","xmlhttp","createXMLObject","ActiveXObject","openPopup","uri","closeCallback","Logout","Profile","logged_in","swish_profile_url","user_profile","get_profile","set_from_chat","chat_key","given_name","family_name","nick_name","external_identity","identity_provider","logout","logout_url","auth_method","http_logout","d3_documentElement","d3_window","d3_ascending","d3_number","d3_numeric","d3_bisector","compare","hi","d3_transposeLength","d3_range_integerScale","d3_class","d3_Map","d3_map_escape","d3_map_proto","d3_map_zero","d3_map_unescape","d3_map_has","d3_map_remove","d3_map_keys","d3_map_size","d3_map_empty","d3_Set","d3_identity","d3_rebind","d3_vendorSymbol","object","d3_vendorPrefixes","prefixName","d3_noop","d3_dispatch","d3_dispatch_event","listeners","listenerByName","listener","d3_eventPreventDefault","d3","d3_eventSource","sourceEvent","d3_eventDispatch","thiz","argumentz","e1","e0","d3_selection","d3_subclass","d3_selectionPrototype","d3_selection_selector","d3_select","d3_selection_selectorAll","d3_selectAll","d3_selection_attr","attrNull","attrNullNS","removeAttributeNS","attrConstant","attrConstantNS","setAttributeNS","attrFunction","attrFunctionNS","ns","qualify","d3_collapse","d3_selection_classedRe","requote","d3_selection_classes","d3_selection_classed","classedConstant","classedFunction","d3_selection_classedName","classList","d3_selection_style","styleNull","removeProperty","styleConstant","styleFunction","d3_selection_property","propertyNull","propertyConstant","propertyFunction","d3_selection_creator","namespaceURI","d3_nsXhtml","createElementNS","createNS","d3_selectionRemove","d3_selection_dataNode","__data__","d3_selection_filter","d3_selectMatches","d3_selection_sortComparator","comparator","d3_selection_each","d3_selection_enter","d3_selection_enterPrototype","d3_selection_enterInsertBefore","i0","j0","d3_selection_on","capture","onRemove","onAdd","d3_array","removeAll","d3_selection_onListener","d3_selection_onFilters","d3_selection_onFilter","related","d3_event_dragSuppress","d3_event_dragId","d3_event_dragSelect","suppressClick","d3_mousePoint","ownerSVGElement","createSVGPoint","d3_mouse_bug44083","scrollX","ctm","getScreenCTM","matrixTransform","inverse","d3_behavior_dragTouchId","d3_sgn","d3_cross2d","d3_acos","π","acos","d3_asin","halfπ","asin","d3_sinh","exp","d3_cosh","d3_tanh","d3_haversin","d3_color","d3_hsl","d3_rgb_parse","d3_rgb_hsl","d3_hsl_rgb","vv","d3_rgb","d3_hcl","d3_lab","d3_lab_hcl","d3_rgb_lab","rgb","d3_hcl_lab","d3_radians","d3_lab_rgb","d3_lab_xyz","d3_lab_X","d3_lab_Y","d3_lab_Z","d3_xyz_rgb","atan2","d3_degrees","d3_xyz_lab","d3_rgbNumber","d3_rgbString","d3_rgb_hex","hsl","d3_rgb_parseNumber","d3_rgb_names","d3_rgb_xyz","d3_functor","d3_xhrType","d3_xhr","d3_xhrHasResponse","XDomainRequest","onprogress","beforesend","rebind","d3_xhr_fixCallback","d3_timer","d3_timer_queueTail","d3_timer_queueHead","d3_timer_interval","d3_timer_timeout","d3_timer_frame","d3_timer_step","d3_timer_mark","d3_timer_sweep","d3_format_precision","LN10","d3_formatPrefix","scale","d3_locale_numberFormat","locale","locale_decimal","decimal","locale_thousands","thousands","locale_grouping","grouping","locale_currency","currency","formatGroup","specifier","d3_format_re","sign","zfill","comma","precision","exponent","d3_format_types","d3_format_typeDefault","zcomma","fullSuffix","negative","formatPrefix","d3_date_utc","UTC","d3_time_interval","d0","d3_date","times","range_utc","utc","d3_time_interval_utc","d3_locale_timeFormat","d3_time_format","d3_time_formatPads","d3_time_formats","d3_time_parse","localZ","setFullYear","getDay","setHours","d3_time_parsers","d3_time_parseWeekdayAbbrev","d3_time_dayAbbrevRe","d3_time_dayAbbrevLookup","d3_time_parseWeekday","d3_time_dayRe","d3_time_dayLookup","d3_time_parseMonthAbbrev","d3_time_monthAbbrevRe","d3_time_monthAbbrevLookup","d3_time_parseMonth","d3_time_monthRe","d3_time_monthLookup","d3_time_parseLocaleFull","d3_time_parseLocaleDate","d3_time_parseLocaleTime","d3_time_parseAmPm","d3_time_periodLookup","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_days","days","locale_shortDays","shortDays","locale_months","months","locale_shortMonths","shortMonths","multi","d3_time_formatMulti","d3_time_formatRe","d3_time_formatLookup","getMonth","d3_time_formatPad","getDate","getHours","d3_time","dayOfYear","getMilliseconds","getMinutes","getSeconds","sundayOfYear","mondayOfYear","getFullYear","d3_time_zone","%","d3_time_parseDay","d3_time_parseHour24","d3_time_parseDayOfYear","d3_time_parseMilliseconds","d3_time_parseMonthNumber","d3_time_parseMinutes","d3_time_parseSeconds","d3_time_parseWeekNumberSunday","d3_time_parseWeekdayNumber","d3_time_parseWeekNumberMonday","d3_time_parseYear","d3_time_parseFullYear","d3_time_parseZone","d3_time_parseLiteralPercent","d3_time_numberRe","d3_time_expandYear","getTimezoneOffset","zs","zh","zm","d3_time_percentRe","d3_adder","d3_adderSum","bv","av","d3_geo_streamGeometry","geometry","d3_geo_streamGeometryType","d3_geo_streamLine","coordinates","coordinate","d3_geo_streamPolygon","polygonStart","polygonEnd","d3_geo_areaRingStart","nextPoint","λ","φ","dλ","λ0","sdλ","adλ","cosφ","sinφ","sinφ0","cosφ0","d3_geo_areaRingSum","λ00","φ00","d3_geo_area","d3_geo_cartesian","spherical","d3_geo_cartesianDot","d3_geo_cartesianCross","d3_geo_cartesianAdd","d3_geo_cartesianScale","vector","d3_geo_cartesianNormalize","d3_geo_spherical","cartesian","d3_geo_sphericalEqual","ε","d3_geo_centroidPoint","d3_geo_centroidPointXYZ","d3_geo_centroidW0","d3_geo_centroidX0","d3_geo_centroidY0","d3_geo_centroidZ0","d3_geo_centroidLineStart","y0","z0","x0","d3_geo_centroidW1","d3_geo_centroidX1","d3_geo_centroidY1","d3_geo_centroidZ1","d3_geo_centroid","d3_geo_centroidLineEnd","d3_geo_centroidRingStart","cx","cy","cz","d3_geo_centroidX2","d3_geo_centroidY2","d3_geo_centroidZ2","d3_geo_compose","compose","d3_true","d3_geo_clipPolygon","segments","clipStartInside","interpolate","subject","clip","segment","p0","d3_geo_clipPolygonIntersection","d3_geo_clipPolygonLinkCircular","entry","points","isSubject","d3_geo_clip","pointVisible","clipStart","rotate","pointLine","pointRing","ring","ringListener","ringStart","ringEnd","ringSegments","polygon","polygonStarted","d3_geo_clipSegmentLength1","rotatedClipStart","d3_geo_pointInPolygon","d3_geo_clipSort","sphere","d3_geo_clipBufferListener","rejoin","d3_geo_clipAntimeridianLine","φ0","sλ0","λ1","φ1","sλ1","d3_geo_clipAntimeridianIntersect","cosφ1","sinλ0_λ1","atan","d3_geo_clipAntimeridianInterpolate","meridian","parallel","meridianNormal","polarAngle","winding","point0","antimeridian","τ","φarc","d3_geo_clipCircle","cr","c0","v0","v00","point2","point1","smallRadius","intersect","notHemisphere","two","n1","n2","n2n2","n1n2","determinant","c1","c2","n1xn2","uu","δλ","polar","d3_geo_circleInterpolate","d3_geom_clipLine","ax","ay","bx","d3_geo_clipExtent","corner","comparePoints","insidePolygon","wn","linePoint","v_","x_","y_","x__","y__","v__","bufferListener","d3_geo_clipExtentMAX","listener_","inside","d3_geo_conic","projectAt","d3_geo_projectionMutator","parallels","d3_geo_conicEqualArea","ρ","ρ0","ρ0_y","d3_geo_pathAreaRingStart","d3_geo_pathAreaPolygon","x00","y00","d3_geo_pathArea","d3_geo_pathBoundsPoint","d3_geo_pathBoundsX0","d3_geo_pathBoundsX1","d3_geo_pathBoundsY0","d3_geo_pathBoundsY1","d3_geo_pathBuffer","pointCircle","pointLineStart","lineEndPolygon","d3_geo_pathBufferCircle","pointRadius","d3_geo_pathCentroidPoint","d3_geo_pathCentroidLineStart","d3_geo_pathCentroid","d3_geo_pathCentroidLineEnd","d3_geo_pathCentroidRingStart","d3_geo_pathContext","d3_geo_resample","project","resample","maxDepth","resampleRecursive","resampleNone","d3_geo_transformPoint","resampleLineTo","b0","ringPoint","a00","b00","c00","b1","δ2","φ2","λ2","dx2","dy2","dz","cosMinDistance","d3_geo_pathProjectStream","d3_geo_projectionRadians","d3_geo_transform","d3_geo_projection","projectRotate","δx","δy","d3_geo_rotation","δφ","δγ","center","invalidate","valid","projectResample","preclip","d3_geo_clipAntimeridian","postclip","clipAngle","clipExtent","translate","d3_geo_equirectangular","d3_geo_identityRotation","d3_geo_rotationλ","d3_geo_rotationφγ","d3_geo_forwardRotationλ","rotation","cosδφ","sinδφ","cosδγ","sinδγ","d3_geo_circleAngle","angle","d3_geo_graticuleX","d3_geo_graticuleY","d3_source","d3_target","d3_geo_interpolate","cy0","sy0","cy1","sy1","kx0","ky0","kx1","ky1","d3_geo_lengthLineStart","cosΔλ","d3_geo_lengthSum","d3_geo_length","d3_geo_azimuthal","azimuthal","cosλ","sinc","cosc","d3_geo_conicConformal","tan","d3_geo_mercator","d3_geo_conicEquidistant","d3_geo_mercatorProjection","clipAuto","d3_geo_transverseMercator","d3_geom_pointX","d3_geom_pointY","d3_geom_hullUpper","hull","hs","d3_geom_hullOrder","d3_geom_polygonInside","d3_geom_polygonIntersect","x3","x21","x43","y3","y21","y43","d3_geom_polygonClosed","d3_geom_voronoiBeach","d3_geom_voronoiRedBlackNode","site","d3_geom_voronoiCreateBeach","beach","d3_geom_voronoiBeachPool","d3_geom_voronoiDetachBeach","d3_geom_voronoiDetachCircle","d3_geom_voronoiBeaches","d3_geom_voronoiRemoveBeach","disappearing","lArc","rArc","iArc","nArcs","d3_geom_voronoiSetEdgeEnd","d3_geom_voronoiCreateEdge","d3_geom_voronoiAttachCircle","d3_geom_voronoiAddBeach","dxl","dxr","directrix","d3_geom_voronoiLeftBreakPoint","d3_geom_voronoiRightBreakPoint","newArc","lSite","rSite","hc","rfocx","rfocy","pby2","lfocx","lfocy","plby2","hl","aby2","d3_geom_voronoiCell","edges","d3_geom_voronoiCloseCells","extent","iHalfEdge","halfEdges","nHalfEdges","d3_geom_voronoiCells","iCell","d3_geom_voronoiHalfEdge","d3_geom_voronoiCreateBorderEdge","d3_geom_voronoiHalfEdgeOrder","d3_geom_voronoiCircle","cSite","ε2","d3_geom_voronoiCirclePool","d3_geom_voronoiCircles","d3_geom_voronoiFirstCircle","d3_geom_voronoiClipEdges","d3_geom_voronoiEdges","d3_geom_voronoiConnectEdge","fm","lx","ly","rx","ry","fy","d3_geom_voronoiEdge","d3_geom_voronoiRedBlackTree","d3_geom_voronoiRedBlackRotateLeft","tree","d3_geom_voronoiRedBlackRotateRight","d3_geom_voronoiRedBlackFirst","d3_geom_voronoi","sites","bbox","d3_geom_voronoiVertexOrder","diagram","d3_geom_voronoiTriangleArea","d3_geom_quadtreeCompatX","d3_geom_quadtreeCompatY","d3_geom_quadtreeNode","nodes","d3_geom_quadtreeVisit","sx","sy","d3_geom_quadtreeFind","closestPoint","minDistance2","distance2","xm","ym","d3_interpolateRgb","ar","ag","d3_interpolateObject","d3_interpolate","d3_interpolateNumber","d3_interpolateString","am","bm","bs","d3_interpolate_numberA","d3_interpolate_numberB","interpolators","d3_interpolateArray","n0","d3_ease_clamp","d3_ease_reverse","d3_ease_reflect","d3_ease_quad","d3_ease_cubic","d3_ease_cubicInOut","t3","d3_ease_poly","d3_ease_sin","d3_ease_exp","d3_ease_circle","d3_ease_elastic","d3_ease_back","d3_ease_bounce","d3_interpolateHcl","hcl","ah","ac","al","bh","bc","bl","d3_interpolateHsl","d3_interpolateLab","lab","d3_interpolateRound","d3_transform","kx","d3_transformNormalize","kz","d3_transformDot","ky","d3_transformCombine","skew","d3_interpolateTransformPop","d3_interpolateTranslate","d3_interpolateRotate","d3_interpolateSkew","d3_interpolateScale","d3_interpolateTransform","d3_uninterpolateNumber","d3_uninterpolateClamp","d3_layout_bundlePath","lca","d3_layout_bundleLeastCommonAncestor","d3_layout_bundleAncestors","ancestors","aNodes","bNodes","aNode","bNode","sharedNode","d3_layout_forceDragstart","fixed","d3_layout_forceDragend","d3_layout_forceMouseover","px","py","d3_layout_forceMouseout","d3_layout_forceAccumulate","quad","alpha","charges","charge","pointCharge","d3_layout_hierarchyRebind","hierarchy","d3_layout_hierarchyLinks","d3_layout_hierarchyVisitBefore","d3_layout_hierarchyVisitAfter","nodes2","d3_layout_hierarchyChildren","d3_layout_hierarchyValue","d3_layout_hierarchySort","d3_layout_stackX","d3_layout_stackY","d3_layout_stackOut","d3_layout_stackOrderDefault","d3_layout_stackOffsetZero","d3_layout_stackMaxIndex","d3_layout_stackReduceSum","reduce","d3_layout_stackSum","d3_layout_histogramBinSturges","d3_layout_histogramBinFixed","LN2","d3_layout_histogramRange","d3_layout_packSort","d3_layout_packInsert","_pack_next","_pack_prev","d3_layout_packSplice","d3_layout_packIntersects","dr","d3_layout_packSiblings","xMin","xMax","yMin","yMax","d3_layout_packLink","d3_layout_packPlace","isect","s1","s2","d3_layout_packUnlink","d3_layout_packTransform","dc","d3_layout_treeSeparation","d3_layout_treeLeft","d3_layout_treeRight","d3_layout_treeMove","wm","wp","d3_layout_treeShift","d3_layout_treeAncestor","vim","ancestor","d3_layout_clusterY","d3_layout_clusterX","d3_layout_clusterLeft","d3_layout_clusterRight","d3_layout_treemapPadNull","d3_layout_treemapPad","d3_scaleExtent","domain","d3_scaleRange","rangeExtent","d3_scale_bilinear","uninterpolate","d3_scale_nice","nice","d3_scale_niceStep","d3_scale_niceIdentity","d3_scale_polylinear","bisect","d3_scale_linear","clamp","rescale","rangeRound","ticks","d3_scale_linearTicks","tickFormat","d3_scale_linearTickFormat","d3_scale_linearNice","d3_scale_linearRebind","d3_scale_linearTickRange","d3_scale_linearPrecision","d3_scale_linearFormatPrecision","d3_scale_linearFormatSignificant","d3_scale_log","positive","niced","d3_scale_logNiceNegative","d3_scale_logFormat","d3_scale_pow","powp","d3_scale_powPow","powb","d3_scale_ordinal","ranger","steps","rangeBand","xi","rangePoints","rangeRoundPoints","rangeBands","outerPadding","rangeRoundBands","d3_scale_quantile","thresholds","quantile","quantiles","invertExtent","d3_scale_quantize","d3_scale_threshold","d3_scale_identity","d3_zero","d3_svg_arcInnerRadius","innerRadius","d3_svg_arcOuterRadius","outerRadius","d3_svg_arcStartAngle","d3_svg_arcEndAngle","d3_svg_arcPadAngle","padAngle","d3_svg_arcSweep","d3_svg_arcCornerTangents","x01","y01","ox","oy","cx0","cx1","dx0","dy0","dx1","dy1","d3_svg_line","tension","defined","d3_svg_lineLinear","interpolateKey","d3_svg_lineInterpolators","d3_svg_lineLinearClosed","d3_svg_lineStep","d3_svg_lineStepBefore","d3_svg_lineStepAfter","d3_svg_lineCardinalOpen","d3_svg_lineHermite","d3_svg_lineCardinalTangents","d3_svg_lineCardinalClosed","d3_svg_lineCardinal","tangents","pi","lp","d3_svg_lineBasis","d3_svg_lineDot4","d3_svg_lineBasisBezier3","d3_svg_lineBasisBezier","d3_svg_lineBasisOpen","d3_svg_lineBasisClosed","d3_svg_lineBundle","d3_svg_lineBasisBezier1","d3_svg_lineBasisBezier2","d3_svg_lineSlope","d3_svg_lineFiniteDifferences","d3_svg_lineMonotoneTangents","d3_svg_lineMonotone","d3_svg_lineRadial","d3_svg_area","points1","interpolateReverse","points0","fx0","fy0","fx1","fy1","d3_svg_chordRadius","d3_svg_diagonalProjection","d3_svg_diagonalRadialProjection","d3_svg_symbolSize","d3_svg_symbolType","d3_svg_symbolCircle","d3_selection_interruptNS","activeId","interrupt","d3_transition","d3_transitionPrototype","d3_transition_tween","tween","d3_transition_text","d3_transitionNamespace","d3_transitionNode","inherit","schedule","elapsed","cancelId","ease","d3_svg_axisX","d3_svg_axisY","d3_time_formatIsoNative","toISOString","d3_time_scale","tickMethod","d3_time_scaleSteps","year","d3_time_scaleMilliseconds","d3_time_scaleDate","d3_json","d3_html","d3_document","selectNode","createContextualFragment","d3_arraySlice","d3_element_prototype","Element","d3_element_setAttribute","d3_element_setAttributeNS","d3_style_prototype","CSSStyleDeclaration","d3_style_setProperty","ascending","descending","mean","median","numbers","variance","deviation","d3_bisect","bisectLeft","bisectRight","bisector","shuffle","permute","indexes","permutes","transpose","matrix","zip","arrays","mapType","rollup","sortValues","keyValue","setter","valuesByKey","sortKey","sortKeys","behavior","d3_requote_re","__proto__","property","d3_selectMatcher","Sizzle","subgroup","subnode","subgroups","d3_nsPrefix","xhtml","xlink","xmlns","getAttributeNS","classed","groupData","nodeData","updateNodes","enterNodes","exitNodes","nodeByKeyValue","keyValues","upgroup","mouse","drag","touchstart","dragstart","position1","dragId","position0","dragged","dragOffset","ended","dragSubject","dragName","dragRestore","correspondingElement","τε","SQRT2","ρ2","ρ4","interpolateZoom","ux0","uy0","w0","ux1","uy1","w1","coshr0","mousedowned","d3_behavior_zoomWheel","mousewheeled","dblclicked","touchstarted","scaleTo","scaleExtent","translateTo","zoomTo","__chart__","center0","zoomstarted","zooming","zoomed","zoomended","location0","d3_selection_interrupt","relocate","scale0","locations0","started","touchmove","touchend","touchtime","distance0","distance1","scale1","zoomName","mousewheelTimer","translate0","d3_behavior_zoomDelta","d3_behavior_zoomInfinity","deltaY","deltaMode","view1","d3_transitionInheritId","d3_hslPrototype","brighter","darker","d3_hclPrototype","d3_lab_K","d3_labPrototype","d3_rgbPrototype","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","dsv","typedResponse","formatRow","formatValue","reFormat","delimiterCode","parseRows","EOF","EOL","formatRows","fieldSet","csv","tsv","d3_formatPrefixes","toPrecision","getUTCDate","getUTCDay","getUTCFullYear","getUTCHours","getUTCMilliseconds","getUTCMinutes","getUTCMonth","getUTCSeconds","valueOf","setDate","d3_time_prototype","setUTCDate","setDay","setUTCDay","setUTCFullYear","setUTCHours","setMilliseconds","setUTCMilliseconds","setMinutes","setUTCMinutes","setMonth","setUTCMonth","setSeconds","setUTCSeconds","setTime","day","years","week","sunday","weeks","weekOfYear","numberFormat","timeFormat","d3_locale_enUS","geo","d3_adderTemp","d3_geo_streamObjectType","Feature","feature","FeatureCollection","features","Sphere","Point","MultiPoint","LineString","MultiLineString","Polygon","MultiPolygon","GeometryCollection","geometries","d3_geo_areaSum","bounds","equatorial","inflection","λ_","λi","φi","dλSum","λ__","φ__","compareRanges","withinRange","best","centroid","conicEqualArea","albers","albersUsa","lower48Point","alaskaPoint","hawaiiPoint","lower48","alaska","hawaii","pointStream","lower48Stream","alaskaStream","hawaiiStream","d3_geo_pathAreaSum","d3_geo_pathBounds","contextStream","cacheStream","projectStream","projectionMutator","equirectangular","Δλ","sinΔλ","sinφ1","graticule","X0","DX","X1","Y0","DY","Y1","outline","majorExtent","minorExtent","majorStep","minorStep","greatArc","source_","target_","d3_geo_azimuthalEqualArea","cosλcosφ","azimuthalEqualArea","d3_geo_azimuthalEquidistant","azimuthalEquidistant","conicConformal","conicEquidistant","d3_geo_gnomonic","gnomonic","mercator","d3_geo_orthographic","orthographic","d3_geo_stereographic","stereographic","transverseMercator","geom","flippedPoints","upper","lower","skipLeft","skipRight","d3_geom_polygonPrototype","grandpa","uncle","voronoi","polygons","d3_geom_voronoiClipExtent","triangles","s0","delaunay","quadtree","nx","ny","insertChild","nPoint","xs","ys","x1_","y1_","x2_","y2_","compat","visit","interpolateRgb","interpolateObject","interpolateNumber","interpolateString","interpolateArray","d3_ease_default","d3_ease","poly","cubic","elastic","back","bounce","d3_ease_mode","in","in-out","out-in","interpolateHcl","interpolateHsl","interpolateLab","interpolateRound","baseVal","consolidate","d3_transformIdentity","interpolateTransform","layout","bundle","chord","relayout","groupSums","groupIndex","subgroupIndex","chords","sortGroups","sortSubgroups","di","dj","subindex","sortChords","resort","repulse","dw","dn","theta2","chargeDistance2","dragmove","resume","distances","strengths","friction","linkDistance","d3_layout_forceLinkDistance","linkStrength","d3_layout_forceLinkStrength","d3_layout_forceChargeDistance2","gravity","weight","chargeDistance","theta","neighbors","candidates","childs","revalue","partition","arcs","d3_layout_pieSortByValue","series","orders","d3_layout_stackOrders","d3_layout_stackOffsets","inside-out","sums","tops","bottoms","silhouette","wiggle","s3","o0","zero","histogram","bin","bins","valuer","binner","frequency","pack","root0","root1","wrapTree","firstWalk","secondWalk","nodeSize","sizeNode","tx","separation","node1","midpoint","apportion","vip","vop","vom","sip","sop","sim","som","cluster","previousNode","treemap","squarify","worst","stickify","rmax","rmin","stickies","padFunction","padConstant","µ","σ","logNormal","bates","irwinHall","ordinal","category10","d3_category10","category20","d3_category20","category20b","d3_category20b","category20c","d3_category20c","quantize","threshold","circleSegment","ap","padRadius","d3_svg_arcAuto","cornerRadius","rc1","rc0","oc","kc","t30","t12","t03","t21","linear-closed","step-before","step-after","basis","basis-open","basis-closed","cardinal","cardinal-open","cardinal-closed","monotone","radial","curve","diagonal","p3","projection_","d3_svg_symbols","cross","diamond","d3_svg_symbolTan30","square","triangle-down","d3_svg_symbolSqrt3","triangle-up","symbolTypes","d3_transitionId","d3_transitionInherit","subnodes","nameNS","attrTween","attrTweenNS","styleString","styleTween","inheritId","id0","id1","tickTransform","tickValues","tickArguments_","tickFormat_","tickEnter","tickExit","tickUpdate","tickSpacing","innerTickSize","tickPadding","pathUpdate","lineEnter","lineUpdate","textEnter","textUpdate","orient","outerTickSize","d3_svg_axisDefaultOrient","d3_svg_axisOrients","tickSize","tickSubdivide","brush","brushstart","resizes","d3_svg_brushCursor","gUpdate","backgroundUpdate","redrawX","redrawY","redraw","xExtent","yExtent","dragging","keyup","brushmove","resizingX","move1","resizingY","event_","yClamp","xClamp","yExtentDomain","xExtentDomain","brushend","eventTarget","resizing","ey","d3_svg_brushResizes","extent1","extent0","yi","se","d3_time_formatUtc","d3_time_formatIso","seconds","minute","minutes","hour","timezone","hours","month","d3_time_scaleLocalMethods","d3_time_scaleLocalFormat","d3_time_scaleUtcMethods","d3_time_scaleUtcFormat","responseXML","API","derived","Chart","$$","internal","ChartInternal","loadConfig","beforeInit","afterInit","bindThis","argThis","c3_chart_fn","api","getDefaultConfig","axes","Axis","c3_axis","axisX","tickOffset","axisY","generateTicks","tickArguments","copyScale","newScale","isCategory","textFormatted","formatted","getSizeFor1Char","tickTextCharSize","transitionise","withoutTransition","splitTickText","splitted","spaceIndex","subtext","textWidth","sizeFor1Char","tickText","isVertical","tspanDy","counts","tickPosition","tickCentered","textAnchorForText","dxForText","yForText","tickLength","tickX","tickY","tspan","tickMultiline","tickWidth","tickTextRotate","tickCulling","withOuterTick","isCentered","tickInterval","getTotalLength","culling","c3_chart_internal_fn","c3_chart_internal_axis_fn","c3","generate","chart","initParams","data_url","convertUrlToData","data_mimeType","data_headers","data_keys","initWithData","data_json","convertJsonToData","data_rows","convertRowsToData","data_columns","convertColumnsToData","clipId","clipIdForXAxis","clipIdForYAxis","clipIdForGrid","clipIdForSubchart","clipPath","getClipPath","clipPathForXAxis","clipPathForYAxis","clipPathForGrid","clipPathForSubchart","flowing","cancelClick","mouseover","transiting","generateColor","levelColor","generateLevelColor","dataTimeFormat","data_xLocaltime","axisTimeFormat","axis_x_localtime","defaultAxisTimeFormat","hiddenTargetIds","hiddenLegendIds","focusedTargetIds","defocusedTargetIds","xOrient","axis_rotated","yOrient","axis_y_inner","y2Orient","axis_y2_inner","subXOrient","isLegendRight","legend_position","isLegendInset","isLegendTop","legend_inset_anchor","isLegendLeft","legendStep","legendItemWidth","legendItemHeight","currentMaxTickWidths","rotated_padding_left","rotated_padding_right","axis_x_show","rotated_padding_top","withoutFadeIn","intervalForObserveInserted","subx","initChartElements","initBar","initLine","initArc","initGauge","initText","defs","main","initPie","initBrush","initZoom","bindto","selectChart","observeInserted","convertDataToTargets","data_filter","data_hide","addHiddenTargetIds","mapToIds","legend_hide","addHiddenLegendIds","hasType","legend_show","updateSizes","updateScales","getXDomain","getYDomain","subX","subY","subY2","orgXDomain","zoom_enabled","onmouseover","onmouseout","svg_classname","clipChart","appendClip","clipXAxis","clipYAxis","clipGrid","clipSubchart","updateSvgSize","getTranslate","initSubchart","initTooltip","initLegend","initTitle","initRegion","initGrid","grid_lines_front","initGridLines","initEventRect","zoom_privileged","regions","zoomRect","axis_x_extent","getDefaultExtent","updateTargets","updateDimension","oninit","withTransition","withTransform","withUpdateXDomain","withUpdateOrgXDomain","withTransitionForAxis","bindResize","smoothLines","legendHeight","legend","getLegendHeight","legendWidth","getLegendWidth","legendHeightForBottom","hasArc","hasArcType","xAxisHeight","getHorizontalAxisHeight","subchartHeight","subchart_show","subchart_size_height","currentWidth","getCurrentWidth","currentHeight","getCurrentHeight","getCurrentPaddingTop","getCurrentPaddingRight","getCurrentPaddingBottom","getCurrentPaddingLeft","margin2","margin3","updateSizeForLegend","width2","height2","arcWidth","arcHeight","gauge_fullCircle","getGaugeLabelHeight","updateRadius","radiusExpanded","updateTargetsForText","updateTargetsForBar","updateTargetsForLine","updateTargetsForArc","updateTargetsForSubchart","showTargets","isTargetToShow","transition_duration","transitions","withY","withSubchart","withTransitionForExit","withTrimXDomain","withLegend","withEventRect","withDimension","withUpdateXAxis","drawArea","drawBar","xForText","durationForExit","durationForAxis","waitForDraw","flow","intervalForCulling","xDomainForZoom","areaIndices","getShapeIndices","isAreaType","barIndices","isBarType","lineIndices","isLineType","hideAxis","targetsToShow","filterTargetsToShow","xv","generateTransitions","updateLegend","isCategorized","updateXDomain","axis_x_tick_values","updateXAxisTickValues","xAxis","subXAxis","zoom_rescale","orgDomain","axis_y_tick_values","axis_y_tick_count","yAxis","generateTickValues","axis_y2_tick_values","axis_y2_tick_count","y2Axis","updateLabels","axis_x_tick_culling","axis_x_tick_culling_max","generateDrawArea","generateDrawBar","generateDrawLine","generateXYForText","updateXgridFocus","data_empty_label_text","updateGrid","updateRegion","updateBar","updateArea","updateCircle","hasDataLabel","updateText","redrawTitle","redrawArc","redrawSubchart","selectedCircles","interaction_enabled","redrawEventRect","updateZoom","updateCircleY","circleY","circleX","generateFlow","isTabVisible","transitionsToWait","redrawBar","redrawLine","redrawArea","redrawCircle","redrawText","redrawRegion","redrawGrid","generateWait","onrendered","updateAndRedraw","withTransitionForTransform","transformAll","redrawWithoutRescale","isTimeSeries","axis_x_type","isCustomX","data_x","notEmpty","data_xs","isTimeSeriesY","axis_y_type","asHalfPixel","initialOpacity","initialOpacityForCircle","opacityForCircle","point_show","isValue","isScatterType","opacityForText","xx","parseDate","axis_x_categories","yv","yScale","subxx","transformMain","axisY2","chartArcs","transformContext","transformLegend","getXAxisClipX","getXAxisClipY","getXAxisClipWidth","getXAxisClipHeight","getYAxisClipX","getYAxisClipY","getYAxisClipWidth","getYAxisClipHeight","withoutAxis","observer","MutationObserver","mutations","mutation","observe","childList","characterData","resizeFunction","generateResize","onresize","resize_auto","resizeTimeout","onresized","callResizeFunctions","resizeFunctions","endall","parsedDate","data_xFormat","mozHidden","msHidden","webkitHidden","size_width","size_height","padding_left","padding_right","padding_top","padding_bottom","zoom_extent","zoom_onzoom","zoom_onzoomstart","zoom_onzoomend","zoom_x_min","zoom_x_max","interaction_brighten","data_xSort","data_idConverter","data_names","data_classes","data_groups","data_axes","data_type","data_types","data_labels","data_order","data_regions","data_color","data_colors","data_selection_enabled","data_selection_grouped","data_selection_isselectable","data_selection_multiple","data_selection_draggable","data_onclick","data_onmouseover","data_onmouseout","data_onselected","data_onunselected","subchart_axis_x_show","subchart_onbrush","color_pattern","color_threshold","legend_inset_x","legend_inset_y","legend_inset_step","legend_item_onclick","legend_item_onmouseover","legend_item_onmouseout","legend_equally","legend_padding","legend_item_tile_width","legend_item_tile_height","axis_x_tick_centered","axis_x_tick_format","axis_x_tick_count","axis_x_tick_fit","axis_x_tick_rotate","axis_x_tick_outer","axis_x_tick_multiline","axis_x_tick_width","axis_x_max","axis_x_min","axis_x_padding","axis_x_height","axis_x_label","axis_y_show","axis_y_max","axis_y_min","axis_y_inverted","axis_y_center","axis_y_label","axis_y_tick_format","axis_y_tick_outer","axis_y_tick_rotate","axis_y_tick_time_value","axis_y_tick_time_interval","axis_y_padding","axis_y_default","axis_y2_show","axis_y2_max","axis_y2_min","axis_y2_inverted","axis_y2_center","axis_y2_label","axis_y2_tick_format","axis_y2_tick_outer","axis_y2_padding","axis_y2_default","grid_x_show","grid_x_type","grid_x_lines","grid_y_show","grid_y_lines","grid_y_ticks","grid_focus_show","point_r","point_sensitivity","point_focus_expand_enabled","point_focus_expand_r","point_select_r","line_connectNull","line_step_type","bar_width","bar_width_ratio","bar_width_max","bar_zerobased","area_zerobased","area_above","pie_label_show","pie_label_format","pie_label_threshold","pie_label_ratio","pie_expand","pie_expand_duration","gauge_label_show","gauge_label_format","gauge_min","gauge_max","gauge_startingAngle","gauge_units","gauge_width","gauge_expand","gauge_expand_duration","donut_label_show","donut_label_format","donut_label_threshold","donut_label_ratio","donut_width","donut_title","donut_expand","donut_expand_duration","spline_interpolation_type","tooltip_show","tooltip_grouped","tooltip_format_title","tooltip_format_name","tooltip_format_value","tooltip_position","tooltip_contents","defaultTitleFormat","defaultValueFormat","getTooltipContent","tooltip_init_show","tooltip_init_x","tooltip_init_position","tooltip_onshow","tooltip_onhide","title_text","title_padding","title_position","additionalConfig","this_config","isDefined","getScale","forTimeseries","getX","_scale","getY","getYScale","getId","getSubYScale","forInit","subXMin","subXMax","subYMin","subYMax","xAxisTickFormat","getXAxisTickFormat","xAxisTickValues","getXAxisTickValues","yAxisTickValues","getYAxisTickValues","y2AxisTickValues","getY2AxisTickValues","getXAxis","getYAxis","updateArc","getYDomainMin","baseId","idsInGroup","hasNegativeValue","getValuesAsIdKeyed","hasNegativeValueInTargets","getYDomainMax","hasPositiveValue","hasPositiveValueInTargets","axisId","xDomain","domainLength","yDomainAbs","lengths","isAllPositive","isAllNegative","targetsByAxisId","yTargets","filterByXDomain","yDomainMin","yDomainMax","isZeroBased","isInverted","showHorizontalDataLabel","showVerticalDataLabel","getDataLabelLength","diffDomain","convertPixelsToAxisPadding","getPadding","getXDomainMin","getXDomainMax","getXDomainPadding","maxDataCount","getMaxDataCount","firstX","lastX","withTrim","updateScaleExtent","trimXDomain","zoomDomain","getZoomDomain","isX","hasValue","isNotX","getXKey","getXValuesOfXKey","xValues","getIndexByX","filterByX","getXValue","getOtherTargetXs","idsForX","getOtherTargetX","addXs","hasMultipleX","isMultipleX","addName","getValueOnIndex","valueOnIndex","updateTargetX","generateTargetX","updateTargetXs","rawX","cloneTarget","id_org","updateXs","getPrevX","getNextX","getMaxDataCountTarget","maxTarget","getEdgeX","mapToTargetIds","hasTarget","targetId","isLegendToShow","mapTargetsToUniqueXs","targetIds","removeHiddenTargetIds","removeHiddenLegendIds","checkValueInTargets","checker","isOrderDesc","isOrderAsc","orderTargets","orderAsc","orderDesc","reducer","t1Sum","t2Sum","filterRemoveNull","paddingCoef","dataLabelFormat","isNoneArc","isArc","findSameXOfValues","sames","findClosestFromTargets","findClosest","minDist","bars","getTargetSelectorSuffix","isWithinBar","xIndex","yIndex","convertValuesToStep","converted","updateDataAttributes","req","responseURL","convertTsvToData","convertCsvToData","convertXsvToData","xsv","targetKeys","new_rows","new_row","findValueInJson","pathArray","columns","appendXs","xKey","convertedId","v1","v2","setTargetType","addCache","loadFromArgs","selectorTarget","legendItem","categoryName","eventRects","eventRectUpdate","maxDataCountTarget","eventRectsMultiple","eventRectsSingle","eventRect","generateEventRectsForMultipleXs","updateEventRect","generateEventRectsForSingleX","rectW","rectX","getEventRectWidth","prevX","nextX","thisX","classEvent","eventRectEnter","expandCircles","expandBars","hideXGridFocus","unexpandCircles","unexpandBars","selectedData","isStepType","showXGridFocus","EXPANDED","isWithinShape","toggleShape","dragend","mouseout","sameXData","dispatchEvent","createEvent","initMouseEvent","getParentWidth","getParentHeight","getTitlePadding","withoutRecompute","ceil10","getAxisWidthByAxisId","getYAxisLabelPosition","isOuter","defaultPadding","legendWidthOnRight","getY2AxisLabelPosition","getParentRectValue","getSvgLeft","hasLeftAxisRect","leftAxisClass","leftAxis","svgRect","chartRect","svgLeft","getLabelPositionById","getMaxTickWidth","isInner","typeFilter","__max__","getShapeX","targetsNum","isSub","getShapeY","getShapeOffset","isWithin","isWithinStep","isWithinCircle","pointSelectR","getInterpolate","interpolation","isInterpolationType","isSplineType","chartLines","mainLineUpdate","mainLineEnter","classChartLine","classLines","classAreas","classCircles","classFocus","chartLine","generateClass","selectedCircle","mainLine","lineData","classLine","getPoints","generateGetLinePoints","yScaleGetter","xValue","yValue","lineWithRegions","lineTargetsNum","lineOffset","posX","posY","_regions","isWithinRegions","generateM","sWithRegion","xp","yp","diffx2","xOffset","x_diff","xv0","xv1","mainArea","areas","classArea","orgAreaOpacity","generateGetAreaPoints","value0","getAreaBaseValue","value1","areaTargetsNum","areaOffset","mainCircle","circles","lineOrScatterData","classCircle","pointR","getCircles","pointExpandedR","d3_this","chartBars","mainBarUpdate","mainBarEnter","classChartBar","classBars","chartBar","barData","classBar","mainBar","getBarW","barTargetsNum","getBars","generateGetBarPoints","indexX","indexY","barW","barX","barY","barOffset","seg0","pathSegList","seg1","chartTexts","mainText","mainTextUpdate","mainTextEnter","classChartText","classTexts","chartText","barOrLineData","classText","texts","forFlow","getTextRect","dummy","font","forX","getAreaPoints","getBarPoints","getLinePoints","getter","getXForText","getYForText","textElement","xPos","yPos","isSafari","isChrome","isPieType","isGaugeType","isDonutType","isArcType","arcData","grid","xgrids","ygrids","xgridFocus","xgrid","gridLines","xgridLines","ygridLines","updateXGrid","withoutUpdate","xgridData","generateGridData","xgridAttr","updateYGrid","gridValues","ygrid","gridTextAnchor","gridTextDx","xGridTextX","yGridTextX","xgridLine","ygridLine","dataToShow","focusEl","firstYear","lastYear","gridData","tickNum","getGridFilterToRemove","removeGridLines","toRemove","toShow","tooltipContainer","getYFormat","titleFormat","nameFormat","valueFormat","sanitise","tooltipName","tooltipPosition","tWidth","tHeight","tooltipLeft","tooltipRight","tooltipTop","chartRight","forArc","positionFunction","legendItemTextBox","legendHasRendered","updateLegendWithDefaults","insetLegendPosition","updateLegendStep","updateLegendItemWidth","updateLegendItemHeight","opacityForLegend","legendItemHidden","opacityForUnfocusedLegend","toggleFocusLegend","legendItemFocused","revertLegend","showLegend","selectorLegends","hideLegend","clearLegendItemTextBoxCache","getTextBox","updatePositions","updateValues","withoutStep","areaLength","totalLength","itemLength","posMin","margins","maxLength","isLast","tileWidth","itemHeight","maxHeight","widths","xForLegend","xForLegendText","xForLegendRect","yForLegend","yForLegendText","yForLegendRect","x1ForLegendTile","x2ForLegendTile","yForLegendTile","tiles","legendItemEvent","legendItemTile","legendBackground","xForTitle","yForTitle","axisXLabel","textAnchorForXAxisLabel","axisYLabel","textAnchorForYAxisLabel","axisY2Label","textAnchorForY2AxisLabel","withoutRotateTickText","axisParams","getTickValues","getLabelOptionByAxisId","getLabelText","setLabelText","getLabelPosition","defaultPosition","isLeft","isCenter","isRight","isTop","isMiddle","isBottom","getXAxisLabelPosition","textForXAxisLabel","textForYAxisLabel","textForY2AxisLabel","xForAxisLabel","forHorizontal","dxForAxisLabel","textAnchorForAxisLabel","xForXAxisLabel","xForYAxisLabel","xForY2AxisLabel","dxForXAxisLabel","dxForYAxisLabel","dxForY2AxisLabel","dyForXAxisLabel","dyForYAxisLabel","dyForY2AxisLabel","tickCount","forTimeSeries","targetCount","tickValue","axisSubX","isHidden","isIE9","appVersion","URL","getAxisClipX","getAxisClipY","getAxisClipWidth","getAxisClipHeight","innerRadiusRatio","svgArc","getSvgArc","svgArcExpanded","getSvgArcExpanded","svgArcExpandedSub","updateAngle","gMin","gMax","gTic","gValue","updated","rate","getArc","transformForArcLabel","getArcRatio","whole","convertToArcData","textForArcLabel","shouldShowArcLabel","meetsArcLabelThreshold","getArcLabelFormat","defaultArcValueFormat","expandArc","selectorTargets","chartArc","shouldExpand","expandDuration","unexpandArc","shouldShow","getArcTitle","mainPieUpdate","mainPieEnter","classChartArc","classArcs","chartArcsTitle","mainArc","classArc","_current","interpolated","gaugeValue","chartArcsBackground","chartArcsGaugeUnit","chartArcsGaugeMin","chartArcsGaugeMax","mainRegion","classRegion","parentData","regionX","regionY","regionWidth","regionHeight","isRegionOnX","mx","my","minX","maxX","minY","maxY","altDomain","dragarea","_x","_y","_w","_h","isSelected","SELECTED","isIncluded","INCLUDED","togglePoint","getPathBox","togglePath","selectPoint","unselectPoint","selectPath","unselectPath","getToggle","redrawForBrush","contextLineEnter","contextLineUpdate","contextBarEnter","contextBarUpdate","updateBarForSubchart","contextBar","redrawBarForSubchart","drawBarOnSub","updateLineForSubchart","contextLine","redrawLineForSubchart","drawLineOnSub","updateAreaForSubchart","contextArea","redrawAreaForSubchart","drawAreaOnSub","startEvent","redrawForZoom","orgScaleExtent","asValue","formatForY","yFormat","formatForY2","y2Format","defaultFormat","hasCaches","getCaches","defocused","classShape","classShapes","classTarget","additionalClassSuffix","additionalClass","classFocused","classDefocused","selectorLegend","defocus","unzoom","categories","cacheIds","dataCount","baseTarget","baseValue","notfoundIds","orgDataCount","missing","translateX","flowIndex","flowLength","flowStart","flowEnd","durationForFlow","resetOther","isTargetId","isTargetIndex","unselect","transformTo","optionsForRedraw","grids","shown","category","oThis","aArgs","fToBind","fNOP","fBound","SVGPathSeg","typeAsLetter","owningPathSegList","pathSegType","pathSegTypeAsLetter","_owningPathSegList","PATHSEG_UNKNOWN","PATHSEG_CLOSEPATH","PATHSEG_MOVETO_ABS","PATHSEG_MOVETO_REL","PATHSEG_LINETO_ABS","PATHSEG_LINETO_REL","PATHSEG_CURVETO_CUBIC_ABS","PATHSEG_CURVETO_CUBIC_REL","PATHSEG_CURVETO_QUADRATIC_ABS","PATHSEG_CURVETO_QUADRATIC_REL","PATHSEG_ARC_ABS","PATHSEG_ARC_REL","PATHSEG_LINETO_HORIZONTAL_ABS","PATHSEG_LINETO_HORIZONTAL_REL","PATHSEG_LINETO_VERTICAL_ABS","PATHSEG_LINETO_VERTICAL_REL","PATHSEG_CURVETO_CUBIC_SMOOTH_ABS","PATHSEG_CURVETO_CUBIC_SMOOTH_REL","PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS","PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL","_segmentChanged","segmentChanged","SVGPathSegClosePath","_asPathString","SVGPathSegMovetoAbs","SVGPathSegMovetoRel","SVGPathSegLinetoAbs","SVGPathSegLinetoRel","SVGPathSegCurvetoCubicAbs","_x1","_y1","_x2","_y2","SVGPathSegCurvetoCubicRel","SVGPathSegCurvetoQuadraticAbs","SVGPathSegCurvetoQuadraticRel","SVGPathSegArcAbs","r2","largeArcFlag","sweepFlag","_r1","_r2","_angle","_largeArcFlag","_sweepFlag","SVGPathSegArcRel","SVGPathSegLinetoHorizontalAbs","SVGPathSegLinetoHorizontalRel","SVGPathSegLinetoVerticalAbs","SVGPathSegLinetoVerticalRel","SVGPathSegCurvetoCubicSmoothAbs","SVGPathSegCurvetoCubicSmoothRel","SVGPathSegCurvetoQuadraticSmoothAbs","SVGPathSegCurvetoQuadraticSmoothRel","SVGPathElement","createSVGPathSegClosePath","createSVGPathSegMovetoAbs","createSVGPathSegMovetoRel","createSVGPathSegLinetoAbs","createSVGPathSegLinetoRel","createSVGPathSegCurvetoCubicAbs","createSVGPathSegCurvetoCubicRel","createSVGPathSegCurvetoQuadraticAbs","createSVGPathSegCurvetoQuadraticRel","createSVGPathSegArcAbs","createSVGPathSegArcRel","createSVGPathSegLinetoHorizontalAbs","createSVGPathSegLinetoHorizontalRel","createSVGPathSegLinetoVerticalAbs","createSVGPathSegLinetoVerticalRel","createSVGPathSegCurvetoCubicSmoothAbs","createSVGPathSegCurvetoCubicSmoothRel","createSVGPathSegCurvetoQuadraticSmoothAbs","createSVGPathSegCurvetoQuadraticSmoothRel","SVGPathSegList","pathElement","_pathElement","_list","_parsePath","_mutationObserverConfig","attributeFilter","_pathElementMutationObserver","_updateListFromPathMutations","_checkPathSynchronizedToList","_pathSegList","takeRecords","mutationRecords","hasPathMutations","record","attributeName","_writeListToPath","_pathSegArrayAsString","pathSeg","newItem","_checkValidIndex","numberOfItems","insertItemBefore","replaceItem","appendItem","pathSegArray","Builder","appendSegment","Source","_string","_currentIndex","_endIndex","_previousCommand","_skipOptionalSpaces","_isCurrentSpace","character","_skipOptionalSpacesOrDelimiter","hasMoreData","peekSegmentType","lookahead","_pathSegTypeFromChar","_nextCommandHelper","previousCommand","initialCommandIsMoveTo","_parseNumber","frac","expsign","startIntPartIndex","scanIntPartIndex","multiplier","_parseArcFlag","flag","flagChar","parseSegment","arcAngle","arcLarge","arcSweep","svgPanZoom","./svg-pan-zoom.js","2","svgNS","_createZoomIn","_createZoomReset","_createZoomOut","controlIcons","getPublicInstance","zoomIn","zoomOut","./svg-utilities","originalState","activeState","updateCTMCached","updateCTM","createRequestAnimationFrame","refreshRate","viewBox","cacheViewBox","processCTM","setCTM","updateCTMOnNextFrame","simpleViewBoxCache","getBBox","getViewBox","getCTM","fit","contain","getOriginalState","getZoom","getRelativeZoom","computeRelativeZoom","getPan","createSVGMatrix","isZoomDifferent","isPanDifferent","beforeZoom","updateCache","onZoom","beforePan","onPan","pendingUpdate","onUpdatedCTM","./utilities","4","viewportSelector","panEnabled","controlIconsEnabled","zoomEnabled","dblClickZoomEnabled","mouseWheelZoomEnabled","preventMouseEventsDefault","zoomScaleSensitivity","minZoom","maxZoom","customEventsHandler","eventsListenerElement","setupSvgAttributes","getBoundingClientRectNormalized","getOrCreateViewport","setBeforeZoom","setOnZoom","setBeforePan","setOnPan","setOnUpdatedCTM","lastMouseWheelEventTime","setupHandlers","eventListeners","handleMouseDown","handleMouseUp","handleMouseMove","touchleave","touchcancel","svgElement","instance","haltEventListeners","enableMouseWheelZoom","wheelListener","handleMouseWheel","disableMouseWheelZoom","getEventPoint","zoomAtPoint","multiply","getSvgCenterPoint","publicZoom","computeFromRelativeZoom","publicZoomAtPoint","resetZoom","resetPan","pan","handleDblClick","mouseAndTouchNormalize","isDblClick","firstEventCTM","stateOrigin","updateBBox","panBy","disableControlIcons","enableControlIcons","publicInstance","enablePan","disablePan","isPanEnabled","enableZoom","disableZoom","isZoomEnabled","isControlIconsEnabled","enableDblClickZoom","disableDblClickZoom","isDblClickZoomEnabled","isMouseWheelZoomEnabled","setZoomScaleSensitivity","setMinZoom","setMaxZoom","zoomBy","zoomAtPointBy","getSizes","realZoom","getSvg","./control-icons","./shadow-viewport","./uniwheel","5","xmlNS","xmlnsNS","xlinkNS","evNS","internetExplorerRedisplayInterval","refreshDefsGlobal","6","deltaX","delatZ","onmousewheel","7","HTMLElement","SVGSVGElement","getSVGDocument","leading","trailing","menuBroadcast","swishLogo","setupModal","setupPanes","setupResize","Save ...","Info & history ...","Reload","Open recent","Share","Follow ...","Start TogetherJS ...","Export","Download","Print ...","Edit","Clear messages","Changes","View changes","Find (Ctrl-F)","Find and replace (Shift-Ctrl-F)","Jump to line (Alt-G)","Options","Semantic highlighting","Emacs Keybinding","Examples","Help","show_beware","playFile","copyAttrs","playURL","openExampleFunction","populateExamples","swish_examples","populateHelp","openHelpFunction","swish_help_index","prologSource","tabData","onlyglobal","fullscreen_origin","fullscreen_main","exitFullscreen","isFullscreen","collaborate","TogetherJS","urlArgs","waitSeconds","jquery-ui","bloodhound","tagmanager","svg-pan-zoom","cm/mode/prolog","cm/addon/hover/prolog-hover","cm/addon/hover/text-hover","cm/addon/hint/templates-hint","cm/addon/hint/show-context-info","shim","deps"],"mappings":"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AAAC,EACA,GAAA,GAAA,GAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACAC,EAAAC,EAAAC,EAAA,GAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAAC,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAAC,EACA,EAAA,EAAA,EAAA,EAAAC,GAAA,EAAAC,GAAAC,GACAC,GAAAC,GAAAC,GAAAC,GAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAAC,GACAC,GAAA,EAAA,EAAAC,GAAAC,GAAA,EAAA,EAAAC,GACAC,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACAC,GAAA,EAAAC,GAAAC,GAAA,EAAAC,GAAAC,GAAAC,GACAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAA,EAAA,EAAA,EACAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAA,EAAAC,GAAA,EACAC,GAAAC,GAAA,EAAA,EAAA,EAAA,EAAAC,GAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAAC,GAAAC,GAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAAC,GAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAAC,GAAA,EAAA,EAAA,EAAA,EAAAC,GACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACAC,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAAC,GAAA,EACAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAAC,GAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAAC,GACAC,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAAC,GAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACAC,GAAAC,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACAC,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAAC,GACAC,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,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","file":"swish-min.js.new","sourcesContent":["/*!\n * Bootstrap v3.3.7 (http://getbootstrap.com)\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under the MIT license\n */\nif(\"undefined\"==typeof jQuery)throw new Error(\"Bootstrap's JavaScript requires jQuery\");+function(a){\"use strict\";var b=a.fn.jquery.split(\" \")[0].split(\".\");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>3)throw new Error(\"Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4\")}(jQuery),+function(a){\"use strict\";function b(){var a=document.createElement(\"bootstrap\"),b={WebkitTransition:\"webkitTransitionEnd\",MozTransition:\"transitionend\",OTransition:\"oTransitionEnd otransitionend\",transition:\"transitionend\"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one(\"bsTransitionEnd\",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){if(a(b.target).is(this))return b.handleObj.handler.apply(this,arguments)}})})}(jQuery),+function(a){\"use strict\";function b(b){return this.each(function(){var c=a(this),e=c.data(\"bs.alert\");e||c.data(\"bs.alert\",e=new d(this)),\"string\"==typeof b&&e[b].call(c)})}var c='[data-dismiss=\"alert\"]',d=function(b){a(b).on(\"click\",c,this.close)};d.VERSION=\"3.3.7\",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger(\"closed.bs.alert\").remove()}var e=a(this),f=e.attr(\"data-target\");f||(f=e.attr(\"href\"),f=f&&f.replace(/.*(?=#[^\\s]*$)/,\"\"));var g=a(\"#\"===f?[]:f);b&&b.preventDefault(),g.length||(g=e.closest(\".alert\")),g.trigger(b=a.Event(\"close.bs.alert\")),b.isDefaultPrevented()||(g.removeClass(\"in\"),a.support.transition&&g.hasClass(\"fade\")?g.one(\"bsTransitionEnd\",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on(\"click.bs.alert.data-api\",c,d.prototype.close)}(jQuery),+function(a){\"use strict\";function b(b){return this.each(function(){var d=a(this),e=d.data(\"bs.button\"),f=\"object\"==typeof b&&b;e||d.data(\"bs.button\",e=new c(this,f)),\"toggle\"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION=\"3.3.7\",c.DEFAULTS={loadingText:\"loading...\"},c.prototype.setState=function(b){var c=\"disabled\",d=this.$element,e=d.is(\"input\")?\"val\":\"html\",f=d.data();b+=\"Text\",null==f.resetText&&d.data(\"resetText\",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),\"loadingText\"==b?(this.isLoading=!0,d.addClass(c).attr(c,c).prop(c,!0)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c).prop(c,!1))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle=\"buttons\"]');if(b.length){var c=this.$element.find(\"input\");\"radio\"==c.prop(\"type\")?(c.prop(\"checked\")&&(a=!1),b.find(\".active\").removeClass(\"active\"),this.$element.addClass(\"active\")):\"checkbox\"==c.prop(\"type\")&&(c.prop(\"checked\")!==this.$element.hasClass(\"active\")&&(a=!1),this.$element.toggleClass(\"active\")),c.prop(\"checked\",this.$element.hasClass(\"active\")),a&&c.trigger(\"change\")}else this.$element.attr(\"aria-pressed\",!this.$element.hasClass(\"active\")),this.$element.toggleClass(\"active\")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on(\"click.bs.button.data-api\",'[data-toggle^=\"button\"]',function(c){var d=a(c.target).closest(\".btn\");b.call(d,\"toggle\"),a(c.target).is('input[type=\"radio\"], input[type=\"checkbox\"]')||(c.preventDefault(),d.is(\"input,button\")?d.trigger(\"focus\"):d.find(\"input:visible,button:visible\").first().trigger(\"focus\"))}).on(\"focus.bs.button.data-api blur.bs.button.data-api\",'[data-toggle^=\"button\"]',function(b){a(b.target).closest(\".btn\").toggleClass(\"focus\",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){\"use strict\";function b(b){return this.each(function(){var d=a(this),e=d.data(\"bs.carousel\"),f=a.extend({},c.DEFAULTS,d.data(),\"object\"==typeof b&&b),g=\"string\"==typeof b?b:f.slide;e||d.data(\"bs.carousel\",e=new c(this,f)),\"number\"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(\".carousel-indicators\"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on(\"keydown.bs.carousel\",a.proxy(this.keydown,this)),\"hover\"==this.options.pause&&!(\"ontouchstart\"in document.documentElement)&&this.$element.on(\"mouseenter.bs.carousel\",a.proxy(this.pause,this)).on(\"mouseleave.bs.carousel\",a.proxy(this.cycle,this))};c.VERSION=\"3.3.7\",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:\"hover\",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(\".item\"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d=\"prev\"==a&&0===c||\"next\"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e=\"prev\"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(\".item.active\"));if(!(a>this.$items.length-1||a<0))return this.sliding?this.$element.one(\"slid.bs.carousel\",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?\"next\":\"prev\",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(\".next, .prev\").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){if(!this.sliding)return this.slide(\"next\")},c.prototype.prev=function(){if(!this.sliding)return this.slide(\"prev\")},c.prototype.slide=function(b,d){var e=this.$element.find(\".item.active\"),f=d||this.getItemForDirection(b,e),g=this.interval,h=\"next\"==b?\"left\":\"right\",i=this;if(f.hasClass(\"active\"))return this.sliding=!1;var j=f[0],k=a.Event(\"slide.bs.carousel\",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(\".active\").removeClass(\"active\");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass(\"active\")}var m=a.Event(\"slid.bs.carousel\",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass(\"slide\")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one(\"bsTransitionEnd\",function(){f.removeClass([b,h].join(\" \")).addClass(\"active\"),e.removeClass([\"active\",h].join(\" \")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass(\"active\"),f.addClass(\"active\"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr(\"data-target\")||(d=e.attr(\"href\"))&&d.replace(/.*(?=#[^\\s]+$)/,\"\"));if(f.hasClass(\"carousel\")){var g=a.extend({},f.data(),e.data()),h=e.attr(\"data-slide-to\");h&&(g.interval=!1),b.call(f,g),h&&f.data(\"bs.carousel\").to(h),c.preventDefault()}};a(document).on(\"click.bs.carousel.data-api\",\"[data-slide]\",e).on(\"click.bs.carousel.data-api\",\"[data-slide-to]\",e),a(window).on(\"load\",function(){a('[data-ride=\"carousel\"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){\"use strict\";function b(b){var c,d=b.attr(\"data-target\")||(c=b.attr(\"href\"))&&c.replace(/.*(?=#[^\\s]+$)/,\"\");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data(\"bs.collapse\"),f=a.extend({},d.DEFAULTS,c.data(),\"object\"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data(\"bs.collapse\",e=new d(this,f)),\"string\"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle=\"collapse\"][href=\"#'+b.id+'\"],[data-toggle=\"collapse\"][data-target=\"#'+b.id+'\"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION=\"3.3.7\",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass(\"width\");return a?\"width\":\"height\"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass(\"in\")){var b,e=this.$parent&&this.$parent.children(\".panel\").children(\".in, .collapsing\");if(!(e&&e.length&&(b=e.data(\"bs.collapse\"),b&&b.transitioning))){var f=a.Event(\"show.bs.collapse\");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,\"hide\"),b||e.data(\"bs.collapse\",null));var g=this.dimension();this.$element.removeClass(\"collapse\").addClass(\"collapsing\")[g](0).attr(\"aria-expanded\",!0),this.$trigger.removeClass(\"collapsed\").attr(\"aria-expanded\",!0),this.transitioning=1;var h=function(){this.$element.removeClass(\"collapsing\").addClass(\"collapse in\")[g](\"\"),this.transitioning=0,this.$element.trigger(\"shown.bs.collapse\")};if(!a.support.transition)return h.call(this);var i=a.camelCase([\"scroll\",g].join(\"-\"));this.$element.one(\"bsTransitionEnd\",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass(\"in\")){var b=a.Event(\"hide.bs.collapse\");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass(\"collapsing\").removeClass(\"collapse in\").attr(\"aria-expanded\",!1),this.$trigger.addClass(\"collapsed\").attr(\"aria-expanded\",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass(\"collapsing\").addClass(\"collapse\").trigger(\"hidden.bs.collapse\")};return a.support.transition?void this.$element[c](0).one(\"bsTransitionEnd\",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass(\"in\")?\"hide\":\"show\"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle=\"collapse\"][data-parent=\"'+this.options.parent+'\"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass(\"in\");a.attr(\"aria-expanded\",c),b.toggleClass(\"collapsed\",!c).attr(\"aria-expanded\",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on(\"click.bs.collapse.data-api\",'[data-toggle=\"collapse\"]',function(d){var e=a(this);e.attr(\"data-target\")||d.preventDefault();var f=b(e),g=f.data(\"bs.collapse\"),h=g?\"toggle\":e.data();c.call(f,h)})}(jQuery),+function(a){\"use strict\";function b(b){var c=b.attr(\"data-target\");c||(c=b.attr(\"href\"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\\s]*$)/,\"\"));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass(\"open\")&&(c&&\"click\"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event(\"hide.bs.dropdown\",f)),c.isDefaultPrevented()||(d.attr(\"aria-expanded\",\"false\"),e.removeClass(\"open\").trigger(a.Event(\"hidden.bs.dropdown\",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data(\"bs.dropdown\");d||c.data(\"bs.dropdown\",d=new g(this)),\"string\"==typeof b&&d[b].call(c)})}var e=\".dropdown-backdrop\",f='[data-toggle=\"dropdown\"]',g=function(b){a(b).on(\"click.bs.dropdown\",this.toggle)};g.VERSION=\"3.3.7\",g.prototype.toggle=function(d){var e=a(this);if(!e.is(\".disabled, :disabled\")){var f=b(e),g=f.hasClass(\"open\");if(c(),!g){\"ontouchstart\"in document.documentElement&&!f.closest(\".navbar-nav\").length&&a(document.createElement(\"div\")).addClass(\"dropdown-backdrop\").insertAfter(a(this)).on(\"click\",c);var h={relatedTarget:this};if(f.trigger(d=a.Event(\"show.bs.dropdown\",h)),d.isDefaultPrevented())return;e.trigger(\"focus\").attr(\"aria-expanded\",\"true\"),f.toggleClass(\"open\").trigger(a.Event(\"shown.bs.dropdown\",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(\".disabled, :disabled\")){var e=b(d),g=e.hasClass(\"open\");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger(\"focus\"),d.trigger(\"click\");var h=\" li:not(.disabled):visible a\",i=e.find(\".dropdown-menu\"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger(\"focus\")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on(\"click.bs.dropdown.data-api\",c).on(\"click.bs.dropdown.data-api\",\".dropdown form\",function(a){a.stopPropagation()}).on(\"click.bs.dropdown.data-api\",f,g.prototype.toggle).on(\"keydown.bs.dropdown.data-api\",f,g.prototype.keydown).on(\"keydown.bs.dropdown.data-api\",\".dropdown-menu\",g.prototype.keydown)}(jQuery),+function(a){\"use strict\";function b(b,d){return this.each(function(){var e=a(this),f=e.data(\"bs.modal\"),g=a.extend({},c.DEFAULTS,e.data(),\"object\"==typeof b&&b);f||e.data(\"bs.modal\",f=new c(this,g)),\"string\"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$dialog=this.$element.find(\".modal-dialog\"),this.$backdrop=null,this.isShown=null,this.originalBodyPad=null,this.scrollbarWidth=0,this.ignoreBackdropClick=!1,this.options.remote&&this.$element.find(\".modal-content\").load(this.options.remote,a.proxy(function(){this.$element.trigger(\"loaded.bs.modal\")},this))};c.VERSION=\"3.3.7\",c.TRANSITION_DURATION=300,c.BACKDROP_TRANSITION_DURATION=150,c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var d=this,e=a.Event(\"show.bs.modal\",{relatedTarget:b});this.$element.trigger(e),this.isShown||e.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass(\"modal-open\"),this.escape(),this.resize(),this.$element.on(\"click.dismiss.bs.modal\",'[data-dismiss=\"modal\"]',a.proxy(this.hide,this)),this.$dialog.on(\"mousedown.dismiss.bs.modal\",function(){d.$element.one(\"mouseup.dismiss.bs.modal\",function(b){a(b.target).is(d.$element)&&(d.ignoreBackdropClick=!0)})}),this.backdrop(function(){var e=a.support.transition&&d.$element.hasClass(\"fade\");d.$element.parent().length||d.$element.appendTo(d.$body),d.$element.show().scrollTop(0),d.adjustDialog(),e&&d.$element[0].offsetWidth,d.$element.addClass(\"in\"),d.enforceFocus();var f=a.Event(\"shown.bs.modal\",{relatedTarget:b});e?d.$dialog.one(\"bsTransitionEnd\",function(){d.$element.trigger(\"focus\").trigger(f)}).emulateTransitionEnd(c.TRANSITION_DURATION):d.$element.trigger(\"focus\").trigger(f)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event(\"hide.bs.modal\"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),a(document).off(\"focusin.bs.modal\"),this.$element.removeClass(\"in\").off(\"click.dismiss.bs.modal\").off(\"mouseup.dismiss.bs.modal\"),this.$dialog.off(\"mousedown.dismiss.bs.modal\"),a.support.transition&&this.$element.hasClass(\"fade\")?this.$element.one(\"bsTransitionEnd\",a.proxy(this.hideModal,this)).emulateTransitionEnd(c.TRANSITION_DURATION):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off(\"focusin.bs.modal\").on(\"focusin.bs.modal\",a.proxy(function(a){document===a.target||this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger(\"focus\")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on(\"keydown.dismiss.bs.modal\",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off(\"keydown.dismiss.bs.modal\")},c.prototype.resize=function(){this.isShown?a(window).on(\"resize.bs.modal\",a.proxy(this.handleUpdate,this)):a(window).off(\"resize.bs.modal\")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$body.removeClass(\"modal-open\"),a.resetAdjustments(),a.resetScrollbar(),a.$element.trigger(\"hidden.bs.modal\")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var d=this,e=this.$element.hasClass(\"fade\")?\"fade\":\"\";if(this.isShown&&this.options.backdrop){var f=a.support.transition&&e;if(this.$backdrop=a(document.createElement(\"div\")).addClass(\"modal-backdrop \"+e).appendTo(this.$body),this.$element.on(\"click.dismiss.bs.modal\",a.proxy(function(a){return this.ignoreBackdropClick?void(this.ignoreBackdropClick=!1):void(a.target===a.currentTarget&&(\"static\"==this.options.backdrop?this.$element[0].focus():this.hide()))},this)),f&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass(\"in\"),!b)return;f?this.$backdrop.one(\"bsTransitionEnd\",b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass(\"in\");var g=function(){d.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass(\"fade\")?this.$backdrop.one(\"bsTransitionEnd\",g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):g()}else b&&b()},c.prototype.handleUpdate=function(){this.adjustDialog()},c.prototype.adjustDialog=function(){var a=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:\"\",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:\"\"})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:\"\",paddingRight:\"\"})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth<a,this.scrollbarWidth=this.measureScrollbar()},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css(\"padding-right\")||0,10);this.originalBodyPad=document.body.style.paddingRight||\"\",this.bodyIsOverflowing&&this.$body.css(\"padding-right\",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css(\"padding-right\",this.originalBodyPad)},c.prototype.measureScrollbar=function(){var a=document.createElement(\"div\");a.className=\"modal-scrollbar-measure\",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on(\"click.bs.modal.data-api\",'[data-toggle=\"modal\"]',function(c){var d=a(this),e=d.attr(\"href\"),f=a(d.attr(\"data-target\")||e&&e.replace(/.*(?=#[^\\s]+$)/,\"\")),g=f.data(\"bs.modal\")?\"toggle\":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is(\"a\")&&c.preventDefault(),f.one(\"show.bs.modal\",function(a){a.isDefaultPrevented()||f.one(\"hidden.bs.modal\",function(){d.is(\":visible\")&&d.trigger(\"focus\")})}),b.call(f,g,this)})}(jQuery),+function(a){\"use strict\";function b(b){return this.each(function(){var d=a(this),e=d.data(\"bs.tooltip\"),f=\"object\"==typeof b&&b;!e&&/destroy|hide/.test(b)||(e||d.data(\"bs.tooltip\",e=new c(this,f)),\"string\"==typeof b&&e[b]())})}var c=function(a,b){this.type=null,this.options=null,this.enabled=null,this.timeout=null,this.hoverState=null,this.$element=null,this.inState=null,this.init(\"tooltip\",a,b)};c.VERSION=\"3.3.7\",c.TRANSITION_DURATION=150,c.DEFAULTS={animation:!0,placement:\"top\",selector:!1,template:'<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>',trigger:\"hover focus\",title:\"\",delay:0,html:!1,container:!1,viewport:{selector:\"body\",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error(\"`selector` option must be specified when initializing \"+this.type+\" on the window.document object!\");for(var e=this.options.trigger.split(\" \"),f=e.length;f--;){var g=e[f];if(\"click\"==g)this.$element.on(\"click.\"+this.type,this.options.selector,a.proxy(this.toggle,this));else if(\"manual\"!=g){var h=\"hover\"==g?\"mouseenter\":\"focusin\",i=\"hover\"==g?\"mouseleave\":\"focusout\";this.$element.on(h+\".\"+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+\".\"+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:\"manual\",selector:\"\"}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&\"number\"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data(\"bs.\"+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data(\"bs.\"+this.type,c)),b instanceof a.Event&&(c.inState[\"focusin\"==b.type?\"focus\":\"hover\"]=!0),c.tip().hasClass(\"in\")||\"in\"==c.hoverState?void(c.hoverState=\"in\"):(clearTimeout(c.timeout),c.hoverState=\"in\",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){\"in\"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data(\"bs.\"+this.type);if(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data(\"bs.\"+this.type,c)),b instanceof a.Event&&(c.inState[\"focusout\"==b.type?\"focus\":\"hover\"]=!1),!c.isInStateTrue())return clearTimeout(c.timeout),c.hoverState=\"out\",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){\"out\"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event(\"show.bs.\"+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr(\"id\",g),this.$element.attr(\"aria-describedby\",g),this.options.animation&&f.addClass(\"fade\");var h=\"function\"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\\s?auto?\\s?/i,j=i.test(h);j&&(h=h.replace(i,\"\")||\"top\"),f.detach().css({top:0,left:0,display:\"block\"}).addClass(h).data(\"bs.\"+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger(\"inserted.bs.\"+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h=\"bottom\"==h&&k.bottom+m>o.bottom?\"top\":\"top\"==h&&k.top-m<o.top?\"bottom\":\"right\"==h&&k.right+l>o.width?\"left\":\"left\"==h&&k.left-l<o.left?\"right\":h,f.removeClass(n).addClass(h)}var p=this.getCalculatedOffset(h,k,l,m);this.applyPlacement(p,h);var q=function(){var a=e.hoverState;e.$element.trigger(\"shown.bs.\"+e.type),e.hoverState=null,\"out\"==a&&e.leave(e)};a.support.transition&&this.$tip.hasClass(\"fade\")?f.one(\"bsTransitionEnd\",q).emulateTransitionEnd(c.TRANSITION_DURATION):q()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css(\"margin-top\"),10),h=parseInt(d.css(\"margin-left\"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),b.top+=g,b.left+=h,a.offset.setOffset(d[0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),d.addClass(\"in\");var i=d[0].offsetWidth,j=d[0].offsetHeight;\"top\"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=/top|bottom/.test(c),m=l?2*k.left-e+i:2*k.top-f+j,n=l?\"offsetWidth\":\"offsetHeight\";d.offset(b),this.replaceArrow(m,d[0][n],l)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c?\"left\":\"top\",50*(1-a/b)+\"%\").css(c?\"top\":\"left\",\"\")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(\".tooltip-inner\")[this.options.html?\"html\":\"text\"](b),a.removeClass(\"fade in top bottom left right\")},c.prototype.hide=function(b){function d(){\"in\"!=e.hoverState&&f.detach(),e.$element&&e.$element.removeAttr(\"aria-describedby\").trigger(\"hidden.bs.\"+e.type),b&&b()}var e=this,f=a(this.$tip),g=a.Event(\"hide.bs.\"+this.type);if(this.$element.trigger(g),!g.isDefaultPrevented())return f.removeClass(\"in\"),a.support.transition&&f.hasClass(\"fade\")?f.one(\"bsTransitionEnd\",d).emulateTransitionEnd(c.TRANSITION_DURATION):d(),this.hoverState=null,this},c.prototype.fixTitle=function(){var a=this.$element;(a.attr(\"title\")||\"string\"!=typeof a.attr(\"data-original-title\"))&&a.attr(\"data-original-title\",a.attr(\"title\")||\"\").attr(\"title\",\"\")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[0],d=\"BODY\"==c.tagName,e=c.getBoundingClientRect();null==e.width&&(e=a.extend({},e,{width:e.right-e.left,height:e.bottom-e.top}));var f=window.SVGElement&&c instanceof window.SVGElement,g=d?{top:0,left:0}:f?null:b.offset(),h={scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop()},i=d?{width:a(window).width(),height:a(window).height()}:null;return a.extend({},e,h,i,g)},c.prototype.getCalculatedOffset=function(a,b,c,d){return\"bottom\"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:\"top\"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:\"left\"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:0,left:0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h<g.top?e.top=g.top-h:i>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j<g.left?e.left=g.left-j:k>g.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr(\"data-original-title\")||(\"function\"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+\" `template` option must consist of exactly 1 top-level element!\");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(\".tooltip-arrow\")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data(\"bs.\"+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data(\"bs.\"+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass(\"in\")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off(\".\"+a.type).removeData(\"bs.\"+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null,a.$element=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){\"use strict\";function b(b){return this.each(function(){var d=a(this),e=d.data(\"bs.popover\"),f=\"object\"==typeof b&&b;!e&&/destroy|hide/.test(b)||(e||d.data(\"bs.popover\",e=new c(this,f)),\"string\"==typeof b&&e[b]())})}var c=function(a,b){this.init(\"popover\",a,b)};if(!a.fn.tooltip)throw new Error(\"Popover requires tooltip.js\");c.VERSION=\"3.3.7\",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:\"right\",trigger:\"click\",content:\"\",template:'<div class=\"popover\" role=\"tooltip\"><div class=\"arrow\"></div><h3 class=\"popover-title\"></h3><div class=\"popover-content\"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(\".popover-title\")[this.options.html?\"html\":\"text\"](b),a.find(\".popover-content\").children().detach().end()[this.options.html?\"string\"==typeof c?\"html\":\"append\":\"text\"](c),a.removeClass(\"fade top bottom left right in\"),a.find(\".popover-title\").html()||a.find(\".popover-title\").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr(\"data-content\")||(\"function\"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(\".arrow\")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){\"use strict\";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||\"\")+\" .nav li > a\",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on(\"scroll.bs.scrollspy\",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data(\"bs.scrollspy\"),f=\"object\"==typeof c&&c;e||d.data(\"bs.scrollspy\",e=new b(this,f)),\"string\"==typeof c&&e[c]()})}b.VERSION=\"3.3.7\",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c=\"offset\",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c=\"position\",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data(\"target\")||b.attr(\"href\"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(\":visible\")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b<e[0])return this.activeTarget=null,this.clear();for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(void 0===e[a+1]||b<e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){\nthis.activeTarget=b,this.clear();var c=this.selector+'[data-target=\"'+b+'\"],'+this.selector+'[href=\"'+b+'\"]',d=a(c).parents(\"li\").addClass(\"active\");d.parent(\".dropdown-menu\").length&&(d=d.closest(\"li.dropdown\").addClass(\"active\")),d.trigger(\"activate.bs.scrollspy\")},b.prototype.clear=function(){a(this.selector).parentsUntil(this.options.target,\".active\").removeClass(\"active\")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on(\"load.bs.scrollspy.data-api\",function(){a('[data-spy=\"scroll\"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){\"use strict\";function b(b){return this.each(function(){var d=a(this),e=d.data(\"bs.tab\");e||d.data(\"bs.tab\",e=new c(this)),\"string\"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION=\"3.3.7\",c.TRANSITION_DURATION=150,c.prototype.show=function(){var b=this.element,c=b.closest(\"ul:not(.dropdown-menu)\"),d=b.data(\"target\");if(d||(d=b.attr(\"href\"),d=d&&d.replace(/.*(?=#[^\\s]*$)/,\"\")),!b.parent(\"li\").hasClass(\"active\")){var e=c.find(\".active:last a\"),f=a.Event(\"hide.bs.tab\",{relatedTarget:b[0]}),g=a.Event(\"show.bs.tab\",{relatedTarget:e[0]});if(e.trigger(f),b.trigger(g),!g.isDefaultPrevented()&&!f.isDefaultPrevented()){var h=a(d);this.activate(b.closest(\"li\"),c),this.activate(h,h.parent(),function(){e.trigger({type:\"hidden.bs.tab\",relatedTarget:b[0]}),b.trigger({type:\"shown.bs.tab\",relatedTarget:e[0]})})}}},c.prototype.activate=function(b,d,e){function f(){g.removeClass(\"active\").find(\"> .dropdown-menu > .active\").removeClass(\"active\").end().find('[data-toggle=\"tab\"]').attr(\"aria-expanded\",!1),b.addClass(\"active\").find('[data-toggle=\"tab\"]').attr(\"aria-expanded\",!0),h?(b[0].offsetWidth,b.addClass(\"in\")):b.removeClass(\"fade\"),b.parent(\".dropdown-menu\").length&&b.closest(\"li.dropdown\").addClass(\"active\").end().find('[data-toggle=\"tab\"]').attr(\"aria-expanded\",!0),e&&e()}var g=d.find(\"> .active\"),h=e&&a.support.transition&&(g.length&&g.hasClass(\"fade\")||!!d.find(\"> .fade\").length);g.length&&h?g.one(\"bsTransitionEnd\",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass(\"in\")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),\"show\")};a(document).on(\"click.bs.tab.data-api\",'[data-toggle=\"tab\"]',e).on(\"click.bs.tab.data-api\",'[data-toggle=\"pill\"]',e)}(jQuery),+function(a){\"use strict\";function b(b){return this.each(function(){var d=a(this),e=d.data(\"bs.affix\"),f=\"object\"==typeof b&&b;e||d.data(\"bs.affix\",e=new c(this,f)),\"string\"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on(\"scroll.bs.affix.data-api\",a.proxy(this.checkPosition,this)).on(\"click.bs.affix.data-api\",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION=\"3.3.7\",c.RESET=\"affix affix-top affix-bottom\",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&\"top\"==this.affixed)return e<c&&\"top\";if(\"bottom\"==this.affixed)return null!=c?!(e+this.unpin<=f.top)&&\"bottom\":!(e+g<=a-d)&&\"bottom\";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&e<=c?\"top\":null!=d&&i+j>=a-d&&\"bottom\"},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass(\"affix\");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(\":visible\")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());\"object\"!=typeof d&&(f=e=d),\"function\"==typeof e&&(e=d.top(this.$element)),\"function\"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css(\"top\",\"\");var i=\"affix\"+(h?\"-\"+h:\"\"),j=a.Event(i+\".bs.affix\");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin=\"bottom\"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace(\"affix\",\"affixed\")+\".bs.affix\")}\"bottom\"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on(\"load\",function(){a('[data-spy=\"affix\"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);\ndefine(\"bootstrap\", [\"jquery\"], function(){});\n\n","/*! jQuery v3.2.1 | (c) JS Foundation and other contributors | jquery.org/license */\n!function(a,b){\"use strict\";\"object\"==typeof module&&\"object\"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error(\"jQuery requires a window with a document\");return b(a)}:b(a)}(\"undefined\"!=typeof window?window:this,function(a,b){\"use strict\";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement(\"script\");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q=\"3.2.1\",r=function(a,b){return new r.fn.init(a,b)},s=/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null==a?f.call(this):a<0?this[a+this.length]:this[a]},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c<b?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:h,sort:c.sort,splice:c.splice},r.extend=r.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for(\"boolean\"==typeof g&&(j=g,g=arguments[h]||{},h++),\"object\"==typeof g||r.isFunction(g)||(g={}),h===i&&(g=this,h--);h<i;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(r.isPlainObject(d)||(e=Array.isArray(d)))?(e?(e=!1,f=c&&Array.isArray(c)?c:[]):f=c&&r.isPlainObject(c)?c:{},g[b]=r.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},r.extend({expando:\"jQuery\"+(q+Math.random()).replace(/\\D/g,\"\"),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return\"function\"===r.type(a)},isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){var b=r.type(a);return(\"number\"===b||\"string\"===b)&&!isNaN(a-parseFloat(a))},isPlainObject:function(a){var b,c;return!(!a||\"[object Object]\"!==k.call(a))&&(!(b=e(a))||(c=l.call(b,\"constructor\")&&b.constructor,\"function\"==typeof c&&m.call(c)===n))},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+\"\":\"object\"==typeof a||\"function\"==typeof a?j[k.call(a)]||\"object\":typeof a},globalEval:function(a){p(a)},camelCase:function(a){return a.replace(t,\"ms-\").replace(u,v)},each:function(a,b){var c,d=0;if(w(a)){for(c=a.length;d<c;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?\"\":(a+\"\").replace(s,\"\")},makeArray:function(a,b){var c=b||[];return null!=a&&(w(Object(a))?r.merge(c,\"string\"==typeof a?[a]:a):h.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:i.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;d<c;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;f<g;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,f=0,h=[];if(w(a))for(d=a.length;f<d;f++)e=b(a[f],f,c),null!=e&&h.push(e);else for(f in a)e=b(a[f],f,c),null!=e&&h.push(e);return g.apply([],h)},guid:1,proxy:function(a,b){var c,d,e;if(\"string\"==typeof b&&(c=a[b],b=a,a=c),r.isFunction(a))return d=f.call(arguments,2),e=function(){return a.apply(b||this,d.concat(f.call(arguments)))},e.guid=a.guid=a.guid||r.guid++,e},now:Date.now,support:o}),\"function\"==typeof Symbol&&(r.fn[Symbol.iterator]=c[Symbol.iterator]),r.each(\"Boolean Number String Function Array Date RegExp Object Error Symbol\".split(\" \"),function(a,b){j[\"[object \"+b+\"]\"]=b.toLowerCase()});function w(a){var b=!!a&&\"length\"in a&&a.length,c=r.type(a);return\"function\"!==c&&!r.isWindow(a)&&(\"array\"===c||0===b||\"number\"==typeof b&&b>0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u=\"sizzle\"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return c;return-1},J=\"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",K=\"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",L=\"(?:\\\\\\\\.|[\\\\w-]|[^\\0-\\\\xa0])+\",M=\"\\\\[\"+K+\"*(\"+L+\")(?:\"+K+\"*([*^$|!~]?=)\"+K+\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\"+L+\"))|)\"+K+\"*\\\\]\",N=\":(\"+L+\")(?:\\\\((('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\"+M+\")*)|.*)\\\\)|)\",O=new RegExp(K+\"+\",\"g\"),P=new RegExp(\"^\"+K+\"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\"+K+\"+$\",\"g\"),Q=new RegExp(\"^\"+K+\"*,\"+K+\"*\"),R=new RegExp(\"^\"+K+\"*([>+~]|\"+K+\")\"+K+\"*\"),S=new RegExp(\"=\"+K+\"*([^\\\\]'\\\"]*?)\"+K+\"*\\\\]\",\"g\"),T=new RegExp(N),U=new RegExp(\"^\"+L+\"$\"),V={ID:new RegExp(\"^#(\"+L+\")\"),CLASS:new RegExp(\"^\\\\.(\"+L+\")\"),TAG:new RegExp(\"^(\"+L+\"|[*])\"),ATTR:new RegExp(\"^\"+M),PSEUDO:new RegExp(\"^\"+N),CHILD:new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\"+K+\"*(even|odd|(([+-]|)(\\\\d*)n|)\"+K+\"*(?:([+-]|)\"+K+\"*(\\\\d+)|))\"+K+\"*\\\\)|)\",\"i\"),bool:new RegExp(\"^(?:\"+J+\")$\",\"i\"),needsContext:new RegExp(\"^\"+K+\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\"+K+\"*((?:-\\\\d)?\\\\d*)\"+K+\"*\\\\)|)(?=[^-]|$)\",\"i\")},W=/^(?:input|select|textarea|button)$/i,X=/^h\\d$/i,Y=/^[^{]+\\{\\s*\\[native \\w/,Z=/^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,$=/[+~]/,_=new RegExp(\"\\\\\\\\([\\\\da-f]{1,6}\"+K+\"?|(\"+K+\")|.)\",\"ig\"),aa=function(a,b,c){var d=\"0x\"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,ca=function(a,b){return b?\"\\0\"===a?\"\\ufffd\":a.slice(0,-1)+\"\\\\\"+a.charCodeAt(a.length-1).toString(16)+\" \":\"\\\\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&(\"form\"in a||\"label\"in a)},{dir:\"parentNode\",next:\"legend\"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],\"string\"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+\" \"]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if(\"object\"!==b.nodeName.toLowerCase()){(k=b.getAttribute(\"id\"))?k=k.replace(ba,ca):b.setAttribute(\"id\",k=u),o=g(a),h=o.length;while(h--)o[h]=\"#\"+k+\" \"+sa(o[h]);r=o.join(\",\"),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute(\"id\")}}}return i(a.replace(P,\"$1\"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+\" \")>d.cacheLength&&delete b[a.shift()],b[c+\" \"]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement(\"fieldset\");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split(\"|\"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return\"input\"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return(\"input\"===c||\"button\"===c)&&b.type===a}}function oa(a){return function(b){return\"form\"in b?b.parentNode&&b.disabled===!1?\"label\"in b?\"label\"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:\"label\"in b&&b.disabled===a}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&\"undefined\"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&\"HTML\"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener(\"unload\",da,!1):e.attachEvent&&e.attachEvent(\"onunload\",da)),c.attributes=ja(function(a){return a.className=\"i\",!a.getAttribute(\"className\")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment(\"\")),!a.getElementsByTagName(\"*\").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute(\"id\")===b}},d.find.ID=function(a,b){if(\"undefined\"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}}):(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c=\"undefined\"!=typeof a.getAttributeNode&&a.getAttributeNode(\"id\");return c&&c.value===b}},d.find.ID=function(a,b){if(\"undefined\"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode(\"id\"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode(\"id\"),c&&c.value===a)return[f]}return[]}}),d.find.TAG=c.getElementsByTagName?function(a,b){return\"undefined\"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if(\"*\"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if(\"undefined\"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML=\"<a id='\"+u+\"'></a><select id='\"+u+\"-\\r\\\\' msallowcapture=''><option selected=''></option></select>\",a.querySelectorAll(\"[msallowcapture^='']\").length&&q.push(\"[*^$]=\"+K+\"*(?:''|\\\"\\\")\"),a.querySelectorAll(\"[selected]\").length||q.push(\"\\\\[\"+K+\"*(?:value|\"+J+\")\"),a.querySelectorAll(\"[id~=\"+u+\"-]\").length||q.push(\"~=\"),a.querySelectorAll(\":checked\").length||q.push(\":checked\"),a.querySelectorAll(\"a#\"+u+\"+*\").length||q.push(\".#.+[+~]\")}),ja(function(a){a.innerHTML=\"<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>\";var b=n.createElement(\"input\");b.setAttribute(\"type\",\"hidden\"),a.appendChild(b).setAttribute(\"name\",\"D\"),a.querySelectorAll(\"[name=d]\").length&&q.push(\"name\"+K+\"*[*^$|!~]?=\"),2!==a.querySelectorAll(\":enabled\").length&&q.push(\":enabled\",\":disabled\"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(\":disabled\").length&&q.push(\":enabled\",\":disabled\"),a.querySelectorAll(\"*,:x\"),q.push(\",.*:\")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,\"*\"),s.call(a,\"[s!='']:x\"),r.push(\"!=\",N)}),q=q.length&&new RegExp(q.join(\"|\")),r=r.length&&new RegExp(r.join(\"|\")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,\"='$1']\"),c.matchesSelector&&p&&!A[b+\" \"]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+\"\").replace(ba,ca)},ga.error=function(a){throw new Error(\"Syntax error, unrecognized expression: \"+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c=\"\",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if(\"string\"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{\">\":{dir:\"parentNode\",first:!0},\" \":{dir:\"parentNode\"},\"+\":{dir:\"previousSibling\",first:!0},\"~\":{dir:\"previousSibling\"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||\"\").replace(_,aa),\"~=\"===a[2]&&(a[3]=\" \"+a[3]+\" \"),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),\"nth\"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*(\"even\"===a[3]||\"odd\"===a[3])),a[5]=+(a[7]+a[8]||\"odd\"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||\"\":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(\")\",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return\"*\"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+\" \"];return b||(b=new RegExp(\"(^|\"+K+\")\"+a+\"(\"+K+\"|$)\"))&&y(a,function(a){return b.test(\"string\"==typeof a.className&&a.className||\"undefined\"!=typeof a.getAttribute&&a.getAttribute(\"class\")||\"\")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?\"!=\"===b:!b||(e+=\"\",\"=\"===b?e===c:\"!=\"===b?e!==c:\"^=\"===b?c&&0===e.indexOf(c):\"*=\"===b?c&&e.indexOf(c)>-1:\"$=\"===b?c&&e.slice(-c.length)===c:\"~=\"===b?(\" \"+e.replace(O,\" \")+\" \").indexOf(c)>-1:\"|=\"===b&&(e===c||e.slice(0,c.length+1)===c+\"-\"))}},CHILD:function(a,b,c,d,e){var f=\"nth\"!==a.slice(0,3),g=\"last\"!==a.slice(-4),h=\"of-type\"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?\"nextSibling\":\"previousSibling\",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p=\"only\"===a&&!o&&\"nextSibling\"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error(\"unsupported pseudo: \"+a);return e[u]?e(b):e.length>1?(c=[a,a,\"\",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,\"$1\"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||\"\")||ga.error(\"unsupported lang: \"+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute(\"xml:lang\")||b.getAttribute(\"lang\"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+\"-\");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return\"input\"===b&&!!a.checked||\"option\"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return\"input\"===b&&\"button\"===a.type||\"button\"===b},text:function(a){var b;return\"input\"===a.nodeName.toLowerCase()&&\"text\"===a.type&&(null==(b=a.getAttribute(\"type\"))||\"text\"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c<b;c+=2)a.push(c);return a}),odd:pa(function(a,b){for(var c=1;c<b;c+=2)a.push(c);return a}),lt:pa(function(a,b,c){for(var d=c<0?c+b:c;--d>=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function ra(){}ra.prototype=d.filters=d.pseudos,d.setFilters=new ra,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+\" \"];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=Q.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=R.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(P,\" \")}),h=h.slice(c.length));for(g in d.filter)!(e=V[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function sa(a){for(var b=0,c=a.length,d=\"\";b<c;b++)d+=a[b].value;return d}function ta(a,b,c){var d=b.dir,e=b.next,f=e||d,g=c&&\"parentNode\"===f,h=x++;return b.first?function(b,c,e){while(b=b[d])if(1===b.nodeType||g)return a(b,c,e);return!1}:function(b,c,i){var j,k,l,m=[w,h];if(i){while(b=b[d])if((1===b.nodeType||g)&&a(b,c,i))return!0}else while(b=b[d])if(1===b.nodeType||g)if(l=b[u]||(b[u]={}),k=l[b.uniqueID]||(l[b.uniqueID]={}),e&&e===b.nodeName.toLowerCase())b=b[d]||b;else{if((j=k[f])&&j[0]===w&&j[1]===h)return m[2]=j[2];if(k[f]=m,m[2]=a(b,c,i))return!0}return!1}}function ua(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d<e;d++)ga(a,b[d],c);return c}function wa(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;h<i;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function xa(a,b,c,d,e,f){return d&&!d[u]&&(d=xa(d)),e&&!e[u]&&(e=xa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||va(b||\"*\",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:wa(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=wa(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[\" \"],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i<f;i++)if(c=d.relative[a[i].type])m=[ta(ua(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;e<f;e++)if(d.relative[a[e].type])break;return xa(i>1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:\" \"===a[i-2].type?\"*\":\"\"})).replace(P,\"$1\"),c,i<e&&ya(a.slice(i,e)),e<f&&ya(a=a.slice(e)),e<f&&sa(a))}m.push(c)}return ua(m)}function za(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s=\"0\",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG(\"*\",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+\" \"];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m=\"function\"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&\"ID\"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split(\"\").sort(B).join(\"\")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement(\"fieldset\"))}),ja(function(a){return a.innerHTML=\"<a href='#'></a>\",\"#\"===a.firstChild.getAttribute(\"href\")})||ka(\"type|href|height|width\",function(a,b,c){if(!c)return a.getAttribute(b,\"type\"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML=\"<input/>\",a.firstChild.setAttribute(\"value\",\"\"),\"\"===a.firstChild.getAttribute(\"value\")})||ka(\"value\",function(a,b,c){if(!c&&\"input\"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute(\"disabled\")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[\":\"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext;function B(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()}var C=/^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i,D=/^.[^:#\\[\\.,]*$/;function E(a,b,c){return r.isFunction(b)?r.grep(a,function(a,d){return!!b.call(a,d,a)!==c}):b.nodeType?r.grep(a,function(a){return a===b!==c}):\"string\"!=typeof b?r.grep(a,function(a){return i.call(b,a)>-1!==c}):D.test(b)?r.filter(b,a,c):(b=r.filter(b,a),r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType}))}r.filter=function(a,b,c){var d=b[0];return c&&(a=\":not(\"+a+\")\"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if(\"string\"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b<d;b++)if(r.contains(e[b],this))return!0}));for(c=this.pushStack([]),b=0;b<d;b++)r.find(a,e[b],c);return d>1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(E(this,a||[],!1))},not:function(a){return this.pushStack(E(this,a||[],!0))},is:function(a){return!!E(this,\"string\"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var F,G=/^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,H=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||F,\"string\"==typeof a){if(e=\"<\"===a[0]&&\">\"===a[a.length-1]&&a.length>=3?[null,a,null]:G.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),C.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};H.prototype=r.fn,F=r(d);var I=/^(?:parents|prev(?:Until|All))/,J={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a<c;a++)if(r.contains(this,b[a]))return!0})},closest:function(a,b){var c,d=0,e=this.length,f=[],g=\"string\"!=typeof a&&r(a);if(!A.test(a))for(;d<e;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?\"string\"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function K(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,\"parentNode\")},parentsUntil:function(a,b,c){return y(a,\"parentNode\",c)},next:function(a){return K(a,\"nextSibling\")},prev:function(a){return K(a,\"previousSibling\")},nextAll:function(a){return y(a,\"nextSibling\")},prevAll:function(a){return y(a,\"previousSibling\")},nextUntil:function(a,b,c){return y(a,\"nextSibling\",c)},prevUntil:function(a,b,c){return y(a,\"previousSibling\",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return B(a,\"iframe\")?a.contentDocument:(B(a,\"template\")&&(a=a.content||a),r.merge([],a.childNodes))}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return\"Until\"!==a.slice(-5)&&(d=c),d&&\"string\"==typeof d&&(e=r.filter(d,e)),this.length>1&&(J[a]||r.uniqueSort(e),I.test(a)&&e.reverse()),this.pushStack(e)}});var L=/[^\\x20\\t\\r\\n\\f]+/g;function M(a){var b={};return r.each(a.match(L)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a=\"string\"==typeof a?M(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=e||a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:\"\")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){r.each(b,function(b,c){r.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&\"string\"!==r.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return r.each(arguments,function(a,b){var c;while((c=r.inArray(b,f,c))>-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c=\"\",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=\"\"),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function N(a){return a}function O(a){throw a}function P(a,b,c,d){var e;try{a&&r.isFunction(e=a.promise)?e.call(a).done(b).fail(c):a&&r.isFunction(e=a.then)?e.call(a,b,c):b.apply(void 0,[a].slice(d))}catch(a){c.apply(void 0,[a])}}r.extend({Deferred:function(b){var c=[[\"notify\",\"progress\",r.Callbacks(\"memory\"),r.Callbacks(\"memory\"),2],[\"resolve\",\"done\",r.Callbacks(\"once memory\"),r.Callbacks(\"once memory\"),0,\"resolved\"],[\"reject\",\"fail\",r.Callbacks(\"once memory\"),r.Callbacks(\"once memory\"),1,\"rejected\"]],d=\"pending\",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},\"catch\":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+\"With\"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b<f)){if(a=d.apply(h,i),a===c.promise())throw new TypeError(\"Thenable self-resolution\");j=a&&(\"object\"==typeof a||\"function\"==typeof a)&&a.then,r.isFunction(j)?e?j.call(a,g(f,c,N,e),g(f,c,O,e)):(f++,j.call(a,g(f,c,N,e),g(f,c,O,e),g(f,c,N,c.notifyWith))):(d!==N&&(h=void 0,i=[a]),(e||c.resolveWith)(h,i))}},k=e?j:function(){try{j()}catch(a){r.Deferred.exceptionHook&&r.Deferred.exceptionHook(a,k.stackTrace),b+1>=f&&(d!==O&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:N,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:N)),c[2][3].add(g(0,a,r.isFunction(d)?d:O))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+\"With\"](this===f?void 0:this,arguments),this},f[b[0]+\"With\"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(P(a,g.done(h(c)).resolve,g.reject,!b),\"pending\"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)P(e[c],h(c),g.reject);return g.promise()}});var Q=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&Q.test(b.name)&&a.console.warn(\"jQuery.Deferred exception: \"+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var R=r.Deferred();r.fn.ready=function(a){return R.then(a)[\"catch\"](function(a){r.readyException(a)}),this},r.extend({isReady:!1,readyWait:1,ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||R.resolveWith(d,[r]))}}),r.ready.then=R.then;function S(){d.removeEventListener(\"DOMContentLoaded\",S),\na.removeEventListener(\"load\",S),r.ready()}\"complete\"===d.readyState||\"loading\"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener(\"DOMContentLoaded\",S),a.addEventListener(\"load\",S));var T=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if(\"object\"===r.type(c)){e=!0;for(h in c)T(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h<i;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},U=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function V(){this.expando=r.expando+V.uid++}V.uid=1,V.prototype={cache:function(a){var b=a[this.expando];return b||(b={},U(a)&&(a.nodeType?a[this.expando]=b:Object.defineProperty(a,this.expando,{value:b,configurable:!0}))),b},set:function(a,b,c){var d,e=this.cache(a);if(\"string\"==typeof b)e[r.camelCase(b)]=c;else for(d in b)e[r.camelCase(d)]=b[d];return e},get:function(a,b){return void 0===b?this.cache(a):a[this.expando]&&a[this.expando][r.camelCase(b)]},access:function(a,b,c){return void 0===b||b&&\"string\"==typeof b&&void 0===c?this.get(a,b):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d=a[this.expando];if(void 0!==d){if(void 0!==b){Array.isArray(b)?b=b.map(r.camelCase):(b=r.camelCase(b),b=b in d?[b]:b.match(L)||[]),c=b.length;while(c--)delete d[b[c]]}(void 0===b||r.isEmptyObject(d))&&(a.nodeType?a[this.expando]=void 0:delete a[this.expando])}},hasData:function(a){var b=a[this.expando];return void 0!==b&&!r.isEmptyObject(b)}};var W=new V,X=new V,Y=/^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,Z=/[A-Z]/g;function $(a){return\"true\"===a||\"false\"!==a&&(\"null\"===a?null:a===+a+\"\"?+a:Y.test(a)?JSON.parse(a):a)}function _(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d=\"data-\"+b.replace(Z,\"-$&\").toLowerCase(),c=a.getAttribute(d),\"string\"==typeof c){try{c=$(c)}catch(e){}X.set(a,b,c)}else c=void 0;return c}r.extend({hasData:function(a){return X.hasData(a)||W.hasData(a)},data:function(a,b,c){return X.access(a,b,c)},removeData:function(a,b){X.remove(a,b)},_data:function(a,b,c){return W.access(a,b,c)},_removeData:function(a,b){W.remove(a,b)}}),r.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=X.get(f),1===f.nodeType&&!W.get(f,\"hasDataAttrs\"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf(\"data-\")&&(d=r.camelCase(d.slice(5)),_(f,d,e[d])));W.set(f,\"hasDataAttrs\",!0)}return e}return\"object\"==typeof a?this.each(function(){X.set(this,a)}):T(this,function(b){var c;if(f&&void 0===b){if(c=X.get(f,a),void 0!==c)return c;if(c=_(f,a),void 0!==c)return c}else this.each(function(){X.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){X.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||\"fx\")+\"queue\",d=W.get(a,b),c&&(!d||Array.isArray(c)?d=W.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||\"fx\";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};\"inprogress\"===e&&(e=c.shift(),d--),e&&(\"fx\"===b&&c.unshift(\"inprogress\"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+\"queueHooks\";return W.get(a,c)||W.access(a,c,{empty:r.Callbacks(\"once memory\").add(function(){W.remove(a,[b+\"queue\",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return\"string\"!=typeof a&&(b=a,a=\"fx\",c--),arguments.length<c?r.queue(this[0],a):void 0===b?this:this.each(function(){var c=r.queue(this,a,b);r._queueHooks(this,a),\"fx\"===a&&\"inprogress\"!==c[0]&&r.dequeue(this,a)})},dequeue:function(a){return this.each(function(){r.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||\"fx\",[])},promise:function(a,b){var c,d=1,e=r.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};\"string\"!=typeof a&&(b=a,a=void 0),a=a||\"fx\";while(g--)c=W.get(f[g],a+\"queueHooks\"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var aa=/[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source,ba=new RegExp(\"^(?:([+-])=|)(\"+aa+\")([a-z%]*)$\",\"i\"),ca=[\"Top\",\"Right\",\"Bottom\",\"Left\"],da=function(a,b){return a=b||a,\"none\"===a.style.display||\"\"===a.style.display&&r.contains(a.ownerDocument,a)&&\"none\"===r.css(a,\"display\")},ea=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};function fa(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return r.css(a,b,\"\")},i=h(),j=c&&c[3]||(r.cssNumber[b]?\"\":\"px\"),k=(r.cssNumber[b]||\"px\"!==j&&+i)&&ba.exec(r.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||\".5\",k/=f,r.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var ga={};function ha(a){var b,c=a.ownerDocument,d=a.nodeName,e=ga[d];return e?e:(b=c.body.appendChild(c.createElement(d)),e=r.css(b,\"display\"),b.parentNode.removeChild(b),\"none\"===e&&(e=\"block\"),ga[d]=e,e)}function ia(a,b){for(var c,d,e=[],f=0,g=a.length;f<g;f++)d=a[f],d.style&&(c=d.style.display,b?(\"none\"===c&&(e[f]=W.get(d,\"display\")||null,e[f]||(d.style.display=\"\")),\"\"===d.style.display&&da(d)&&(e[f]=ha(d))):\"none\"!==c&&(e[f]=\"none\",W.set(d,\"display\",c)));for(f=0;f<g;f++)null!=e[f]&&(a[f].style.display=e[f]);return a}r.fn.extend({show:function(){return ia(this,!0)},hide:function(){return ia(this)},toggle:function(a){return\"boolean\"==typeof a?a?this.show():this.hide():this.each(function(){da(this)?r(this).show():r(this).hide()})}});var ja=/^(?:checkbox|radio)$/i,ka=/<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]+)/i,la=/^$|\\/(?:java|ecma)script/i,ma={option:[1,\"<select multiple='multiple'>\",\"</select>\"],thead:[1,\"<table>\",\"</table>\"],col:[2,\"<table><colgroup>\",\"</colgroup></table>\"],tr:[2,\"<table><tbody>\",\"</tbody></table>\"],td:[3,\"<table><tbody><tr>\",\"</tr></tbody></table>\"],_default:[0,\"\",\"\"]};ma.optgroup=ma.option,ma.tbody=ma.tfoot=ma.colgroup=ma.caption=ma.thead,ma.th=ma.td;function na(a,b){var c;return c=\"undefined\"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||\"*\"):\"undefined\"!=typeof a.querySelectorAll?a.querySelectorAll(b||\"*\"):[],void 0===b||b&&B(a,b)?r.merge([a],c):c}function oa(a,b){for(var c=0,d=a.length;c<d;c++)W.set(a[c],\"globalEval\",!b||W.get(b[c],\"globalEval\"))}var pa=/<|&#?\\w+;/;function qa(a,b,c,d,e){for(var f,g,h,i,j,k,l=b.createDocumentFragment(),m=[],n=0,o=a.length;n<o;n++)if(f=a[n],f||0===f)if(\"object\"===r.type(f))r.merge(m,f.nodeType?[f]:f);else if(pa.test(f)){g=g||l.appendChild(b.createElement(\"div\")),h=(ka.exec(f)||[\"\",\"\"])[1].toLowerCase(),i=ma[h]||ma._default,g.innerHTML=i[1]+r.htmlPrefilter(f)+i[2],k=i[0];while(k--)g=g.lastChild;r.merge(m,g.childNodes),g=l.firstChild,g.textContent=\"\"}else m.push(b.createTextNode(f));l.textContent=\"\",n=0;while(f=m[n++])if(d&&r.inArray(f,d)>-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=na(l.appendChild(f),\"script\"),j&&oa(g),c){k=0;while(f=g[k++])la.test(f.type||\"\")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement(\"div\")),c=d.createElement(\"input\");c.setAttribute(\"type\",\"radio\"),c.setAttribute(\"checked\",\"checked\"),c.setAttribute(\"name\",\"t\"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML=\"<textarea>x</textarea>\",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var ra=d.documentElement,sa=/^key/,ta=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ua=/^([^.]*)(?:\\.(.+)|)/;function va(){return!0}function wa(){return!1}function xa(){try{return d.activeElement}catch(a){}}function ya(a,b,c,d,e,f){var g,h;if(\"object\"==typeof b){\"string\"!=typeof c&&(d=d||c,c=void 0);for(h in b)ya(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&(\"string\"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=wa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(ra,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return\"undefined\"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||\"\").match(L)||[\"\"],j=b.length;while(j--)h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||\"\").split(\".\").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(\".\")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.hasData(a)&&W.get(a);if(q&&(i=q.events)){b=(b||\"\").match(L)||[\"\"],j=b.length;while(j--)if(h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||\"\").split(\".\").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp(\"(^|\\\\.)\"+o.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&(\"**\"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&W.remove(a,\"handle events\")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(W.get(this,\"events\")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c<arguments.length;c++)i[c]=arguments[c];if(b.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,b)!==!1){h=r.event.handlers.call(this,b,j),c=0;while((f=h[c++])&&!b.isPropagationStopped()){b.currentTarget=f.elem,d=0;while((g=f.handlers[d++])&&!b.isImmediatePropagationStopped())b.rnamespace&&!b.rnamespace.test(g.namespace)||(b.handleObj=g,b.data=g.data,e=((r.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(b.result=e)===!1&&(b.preventDefault(),b.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,b),b.result}},handlers:function(a,b){var c,d,e,f,g,h=[],i=b.delegateCount,j=a.target;if(i&&j.nodeType&&!(\"click\"===a.type&&a.button>=1))for(;j!==this;j=j.parentNode||this)if(1===j.nodeType&&(\"click\"!==a.type||j.disabled!==!0)){for(f=[],g={},c=0;c<i;c++)d=b[c],e=d.selector+\" \",void 0===g[e]&&(g[e]=d.needsContext?r(e,this).index(j)>-1:r.find(e,this,null,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}return j=this,i<b.length&&h.push({elem:j,handlers:b.slice(i)}),h},addProp:function(a,b){Object.defineProperty(r.Event.prototype,a,{enumerable:!0,configurable:!0,get:r.isFunction(b)?function(){if(this.originalEvent)return b(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[a]},set:function(b){Object.defineProperty(this,a,{enumerable:!0,configurable:!0,writable:!0,value:b})}})},fix:function(a){return a[r.expando]?a:new r.Event(a)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==xa()&&this.focus)return this.focus(),!1},delegateType:\"focusin\"},blur:{trigger:function(){if(this===xa()&&this.blur)return this.blur(),!1},delegateType:\"focusout\"},click:{trigger:function(){if(\"checkbox\"===this.type&&this.click&&B(this,\"input\"))return this.click(),!1},_default:function(a){return B(a.target,\"a\")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}}},r.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)},r.Event=function(a,b){return this instanceof r.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?va:wa,this.target=a.target&&3===a.target.nodeType?a.target.parentNode:a.target,this.currentTarget=a.currentTarget,this.relatedTarget=a.relatedTarget):this.type=a,b&&r.extend(this,b),this.timeStamp=a&&a.timeStamp||r.now(),void(this[r.expando]=!0)):new r.Event(a,b)},r.Event.prototype={constructor:r.Event,isDefaultPrevented:wa,isPropagationStopped:wa,isImmediatePropagationStopped:wa,isSimulated:!1,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=va,a&&!this.isSimulated&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=va,a&&!this.isSimulated&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=va,a&&!this.isSimulated&&a.stopImmediatePropagation(),this.stopPropagation()}},r.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,\"char\":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(a){var b=a.button;return null==a.which&&sa.test(a.type)?null!=a.charCode?a.charCode:a.keyCode:!a.which&&void 0!==b&&ta.test(a.type)?1&b?1:2&b?3:4&b?2:0:a.which}},r.event.addProp),r.each({mouseenter:\"mouseover\",mouseleave:\"mouseout\",pointerenter:\"pointerover\",pointerleave:\"pointerout\"},function(a,b){r.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return e&&(e===d||r.contains(d,e))||(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),r.fn.extend({on:function(a,b,c,d){return ya(this,a,b,c,d)},one:function(a,b,c,d){return ya(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,r(a.delegateTarget).off(d.namespace?d.origType+\".\"+d.namespace:d.origType,d.selector,d.handler),this;if(\"object\"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return b!==!1&&\"function\"!=typeof b||(c=b,b=void 0),c===!1&&(c=wa),this.each(function(){r.event.remove(this,a,c,b)})}});var za=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi,Aa=/<script|<style|<link/i,Ba=/checked\\s*(?:[^=]|=\\s*.checked.)/i,Ca=/^true\\/(.*)/,Da=/^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;function Ea(a,b){return B(a,\"table\")&&B(11!==b.nodeType?b:b.firstChild,\"tr\")?r(\">tbody\",a)[0]||a:a}function Fa(a){return a.type=(null!==a.getAttribute(\"type\"))+\"/\"+a.type,a}function Ga(a){var b=Ca.exec(a.type);return b?a.type=b[1]:a.removeAttribute(\"type\"),a}function Ha(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(W.hasData(a)&&(f=W.access(a),g=W.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c<d;c++)r.event.add(b,e,j[e][c])}X.hasData(a)&&(h=X.access(a),i=r.extend({},h),X.set(b,i))}}function Ia(a,b){var c=b.nodeName.toLowerCase();\"input\"===c&&ja.test(a.type)?b.checked=a.checked:\"input\"!==c&&\"textarea\"!==c||(b.defaultValue=a.defaultValue)}function Ja(a,b,c,d){b=g.apply([],b);var e,f,h,i,j,k,l=0,m=a.length,n=m-1,q=b[0],s=r.isFunction(q);if(s||m>1&&\"string\"==typeof q&&!o.checkClone&&Ba.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ja(f,b,c,d)});if(m&&(e=qa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(na(e,\"script\"),Fa),i=h.length;l<m;l++)j=e,l!==n&&(j=r.clone(j,!0,!0),i&&r.merge(h,na(j,\"script\"))),c.call(a[l],j,l);if(i)for(k=h[h.length-1].ownerDocument,r.map(h,Ga),l=0;l<i;l++)j=h[l],la.test(j.type||\"\")&&!W.access(j,\"globalEval\")&&r.contains(k,j)&&(j.src?r._evalUrl&&r._evalUrl(j.src):p(j.textContent.replace(Da,\"\"),k))}return a}function Ka(a,b,c){for(var d,e=b?r.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||r.cleanData(na(d)),d.parentNode&&(c&&r.contains(d.ownerDocument,d)&&oa(na(d,\"script\")),d.parentNode.removeChild(d));return a}r.extend({htmlPrefilter:function(a){return a.replace(za,\"<$1></$2>\")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=na(h),f=na(a),d=0,e=f.length;d<e;d++)Ia(f[d],g[d]);if(b)if(c)for(f=f||na(a),g=g||na(h),d=0,e=f.length;d<e;d++)Ha(f[d],g[d]);else Ha(a,h);return g=na(h,\"script\"),g.length>0&&oa(g,!i&&na(a,\"script\")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(U(c)){if(b=c[W.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[W.expando]=void 0}c[X.expando]&&(c[X.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ka(this,a,!0)},remove:function(a){return Ka(this,a)},text:function(a){return T(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.appendChild(a)}})},prepend:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(na(a,!1)),a.textContent=\"\");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return T(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if(\"string\"==typeof a&&!Aa.test(a)&&!ma[(ka.exec(a)||[\"\",\"\"])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c<d;c++)b=this[c]||{},1===b.nodeType&&(r.cleanData(na(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ja(this,arguments,function(b){var c=this.parentNode;r.inArray(this,a)<0&&(r.cleanData(na(this)),c&&c.replaceChild(b,this))},a)}}),r.each({appendTo:\"append\",prependTo:\"prepend\",insertBefore:\"before\",insertAfter:\"after\",replaceAll:\"replaceWith\"},function(a,b){r.fn[a]=function(a){for(var c,d=[],e=r(a),f=e.length-1,g=0;g<=f;g++)c=g===f?this:this.clone(!0),r(e[g])[b](c),h.apply(d,c.get());return this.pushStack(d)}});var La=/^margin/,Ma=new RegExp(\"^(\"+aa+\")(?!px)[a-z%]+$\",\"i\"),Na=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)};!function(){function b(){if(i){i.style.cssText=\"box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%\",i.innerHTML=\"\",ra.appendChild(h);var b=a.getComputedStyle(i);c=\"1%\"!==b.top,g=\"2px\"===b.marginLeft,e=\"4px\"===b.width,i.style.marginRight=\"50%\",f=\"4px\"===b.marginRight,ra.removeChild(h),i=null}}var c,e,f,g,h=d.createElement(\"div\"),i=d.createElement(\"div\");i.style&&(i.style.backgroundClip=\"content-box\",i.cloneNode(!0).style.backgroundClip=\"\",o.clearCloneStyle=\"content-box\"===i.style.backgroundClip,h.style.cssText=\"border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute\",h.appendChild(i),r.extend(o,{pixelPosition:function(){return b(),c},boxSizingReliable:function(){return b(),e},pixelMarginRight:function(){return b(),f},reliableMarginLeft:function(){return b(),g}}))}();function Oa(a,b,c){var d,e,f,g,h=a.style;return c=c||Na(a),c&&(g=c.getPropertyValue(b)||c[b],\"\"!==g||r.contains(a.ownerDocument,a)||(g=r.style(a,b)),!o.pixelMarginRight()&&Ma.test(g)&&La.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+\"\":g}function Pa(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Qa=/^(none|table(?!-c[ea]).+)/,Ra=/^--/,Sa={position:\"absolute\",visibility:\"hidden\",display:\"block\"},Ta={letterSpacing:\"0\",fontWeight:\"400\"},Ua=[\"Webkit\",\"Moz\",\"ms\"],Va=d.createElement(\"div\").style;function Wa(a){if(a in Va)return a;var b=a[0].toUpperCase()+a.slice(1),c=Ua.length;while(c--)if(a=Ua[c]+b,a in Va)return a}function Xa(a){var b=r.cssProps[a];return b||(b=r.cssProps[a]=Wa(a)||a),b}function Ya(a,b,c){var d=ba.exec(b);return d?Math.max(0,d[2]-(c||0))+(d[3]||\"px\"):b}function Za(a,b,c,d,e){var f,g=0;for(f=c===(d?\"border\":\"content\")?4:\"width\"===b?1:0;f<4;f+=2)\"margin\"===c&&(g+=r.css(a,c+ca[f],!0,e)),d?(\"content\"===c&&(g-=r.css(a,\"padding\"+ca[f],!0,e)),\"margin\"!==c&&(g-=r.css(a,\"border\"+ca[f]+\"Width\",!0,e))):(g+=r.css(a,\"padding\"+ca[f],!0,e),\"padding\"!==c&&(g+=r.css(a,\"border\"+ca[f]+\"Width\",!0,e)));return g}function $a(a,b,c){var d,e=Na(a),f=Oa(a,b,e),g=\"border-box\"===r.css(a,\"boxSizing\",!1,e);return Ma.test(f)?f:(d=g&&(o.boxSizingReliable()||f===a.style[b]),\"auto\"===f&&(f=a[\"offset\"+b[0].toUpperCase()+b.slice(1)]),f=parseFloat(f)||0,f+Za(a,b,c||(g?\"border\":\"content\"),d,e)+\"px\")}r.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Oa(a,\"opacity\");return\"\"===c?\"1\":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{\"float\":\"cssFloat\"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=r.camelCase(b),i=Ra.test(b),j=a.style;return i||(b=Xa(h)),g=r.cssHooks[b]||r.cssHooks[h],void 0===c?g&&\"get\"in g&&void 0!==(e=g.get(a,!1,d))?e:j[b]:(f=typeof c,\"string\"===f&&(e=ba.exec(c))&&e[1]&&(c=fa(a,b,e),f=\"number\"),null!=c&&c===c&&(\"number\"===f&&(c+=e&&e[3]||(r.cssNumber[h]?\"\":\"px\")),o.clearCloneStyle||\"\"!==c||0!==b.indexOf(\"background\")||(j[b]=\"inherit\"),g&&\"set\"in g&&void 0===(c=g.set(a,c,d))||(i?j.setProperty(b,c):j[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=r.camelCase(b),i=Ra.test(b);return i||(b=Xa(h)),g=r.cssHooks[b]||r.cssHooks[h],g&&\"get\"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=Oa(a,b,d)),\"normal\"===e&&b in Ta&&(e=Ta[b]),\"\"===c||c?(f=parseFloat(e),c===!0||isFinite(f)?f||0:e):e}}),r.each([\"height\",\"width\"],function(a,b){r.cssHooks[b]={get:function(a,c,d){if(c)return!Qa.test(r.css(a,\"display\"))||a.getClientRects().length&&a.getBoundingClientRect().width?$a(a,b,d):ea(a,Sa,function(){return $a(a,b,d)})},set:function(a,c,d){var e,f=d&&Na(a),g=d&&Za(a,b,d,\"border-box\"===r.css(a,\"boxSizing\",!1,f),f);return g&&(e=ba.exec(c))&&\"px\"!==(e[3]||\"px\")&&(a.style[b]=c,c=r.css(a,b)),Ya(a,c,g)}}}),r.cssHooks.marginLeft=Pa(o.reliableMarginLeft,function(a,b){if(b)return(parseFloat(Oa(a,\"marginLeft\"))||a.getBoundingClientRect().left-ea(a,{marginLeft:0},function(){return a.getBoundingClientRect().left}))+\"px\"}),r.each({margin:\"\",padding:\"\",border:\"Width\"},function(a,b){r.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f=\"string\"==typeof c?c.split(\" \"):[c];d<4;d++)e[a+ca[d]+b]=f[d]||f[d-2]||f[0];return e}},La.test(a)||(r.cssHooks[a+b].set=Ya)}),r.fn.extend({css:function(a,b){return T(this,function(a,b,c){var d,e,f={},g=0;if(Array.isArray(b)){for(d=Na(a),e=b.length;g<e;g++)f[b[g]]=r.css(a,b[g],!1,d);return f}return void 0!==c?r.style(a,b,c):r.css(a,b)},a,b,arguments.length>1)}});function _a(a,b,c,d,e){return new _a.prototype.init(a,b,c,d,e)}r.Tween=_a,_a.prototype={constructor:_a,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||r.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(r.cssNumber[c]?\"\":\"px\")},cur:function(){var a=_a.propHooks[this.prop];return a&&a.get?a.get(this):_a.propHooks._default.get(this)},run:function(a){var b,c=_a.propHooks[this.prop];return this.options.duration?this.pos=b=r.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):_a.propHooks._default.set(this),this}},_a.prototype.init.prototype=_a.prototype,_a.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=r.css(a.elem,a.prop,\"\"),b&&\"auto\"!==b?b:0)},set:function(a){r.fx.step[a.prop]?r.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[r.cssProps[a.prop]]&&!r.cssHooks[a.prop]?a.elem[a.prop]=a.now:r.style(a.elem,a.prop,a.now+a.unit)}}},_a.propHooks.scrollTop=_a.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},r.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:\"swing\"},r.fx=_a.prototype.init,r.fx.step={};var ab,bb,cb=/^(?:toggle|show|hide)$/,db=/queueHooks$/;function eb(){bb&&(d.hidden===!1&&a.requestAnimationFrame?a.requestAnimationFrame(eb):a.setTimeout(eb,r.fx.interval),r.fx.tick())}function fb(){return a.setTimeout(function(){ab=void 0}),ab=r.now()}function gb(a,b){var c,d=0,e={height:a};for(b=b?1:0;d<4;d+=2-b)c=ca[d],e[\"margin\"+c]=e[\"padding\"+c]=a;return b&&(e.opacity=e.width=a),e}function hb(a,b,c){for(var d,e=(kb.tweeners[b]||[]).concat(kb.tweeners[\"*\"]),f=0,g=e.length;f<g;f++)if(d=e[f].call(c,b,a))return d}function ib(a,b,c){var d,e,f,g,h,i,j,k,l=\"width\"in b||\"height\"in b,m=this,n={},o=a.style,p=a.nodeType&&da(a),q=W.get(a,\"fxshow\");c.queue||(g=r._queueHooks(a,\"fx\"),null==g.unqueued&&(g.unqueued=0,h=g.empty.fire,g.empty.fire=function(){g.unqueued||h()}),g.unqueued++,m.always(function(){m.always(function(){g.unqueued--,r.queue(a,\"fx\").length||g.empty.fire()})}));for(d in b)if(e=b[d],cb.test(e)){if(delete b[d],f=f||\"toggle\"===e,e===(p?\"hide\":\"show\")){if(\"show\"!==e||!q||void 0===q[d])continue;p=!0}n[d]=q&&q[d]||r.style(a,d)}if(i=!r.isEmptyObject(b),i||!r.isEmptyObject(n)){l&&1===a.nodeType&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=q&&q.display,null==j&&(j=W.get(a,\"display\")),k=r.css(a,\"display\"),\"none\"===k&&(j?k=j:(ia([a],!0),j=a.style.display||j,k=r.css(a,\"display\"),ia([a]))),(\"inline\"===k||\"inline-block\"===k&&null!=j)&&\"none\"===r.css(a,\"float\")&&(i||(m.done(function(){o.display=j}),null==j&&(k=o.display,j=\"none\"===k?\"\":k)),o.display=\"inline-block\")),c.overflow&&(o.overflow=\"hidden\",m.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]})),i=!1;for(d in n)i||(q?\"hidden\"in q&&(p=q.hidden):q=W.access(a,\"fxshow\",{display:j}),f&&(q.hidden=!p),p&&ia([a],!0),m.done(function(){p||ia([a]),W.remove(a,\"fxshow\");for(d in n)r.style(a,d,n[d])})),i=hb(p?q[d]:0,d,m),d in q||(q[d]=i.start,p&&(i.end=i.start,i.start=0))}}function jb(a,b){var c,d,e,f,g;for(c in a)if(d=r.camelCase(c),e=b[d],f=a[c],Array.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=r.cssHooks[d],g&&\"expand\"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function kb(a,b,c){var d,e,f=0,g=kb.prefilters.length,h=r.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=ab||fb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;g<i;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),f<1&&i?c:(i||h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:r.extend({},b),opts:r.extend(!0,{specialEasing:{},easing:r.easing._default},c),originalProperties:b,originalOptions:c,startTime:ab||fb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=r.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;c<d;c++)j.tweens[c].run(1);return b?(h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for(jb(k,j.opts.specialEasing);f<g;f++)if(d=kb.prefilters[f].call(j,a,k,j.opts))return r.isFunction(d.stop)&&(r._queueHooks(j.elem,j.opts.queue).stop=r.proxy(d.stop,d)),d;return r.map(k,hb,j),r.isFunction(j.opts.start)&&j.opts.start.call(a,j),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always),r.fx.timer(r.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j}r.Animation=r.extend(kb,{tweeners:{\"*\":[function(a,b){var c=this.createTween(a,b);return fa(c.elem,a,ba.exec(b),c),c}]},tweener:function(a,b){r.isFunction(a)?(b=a,a=[\"*\"]):a=a.match(L);for(var c,d=0,e=a.length;d<e;d++)c=a[d],kb.tweeners[c]=kb.tweeners[c]||[],kb.tweeners[c].unshift(b)},prefilters:[ib],prefilter:function(a,b){b?kb.prefilters.unshift(a):kb.prefilters.push(a)}}),r.speed=function(a,b,c){var d=a&&\"object\"==typeof a?r.extend({},a):{complete:c||!c&&b||r.isFunction(a)&&a,duration:a,easing:c&&b||b&&!r.isFunction(b)&&b};return r.fx.off?d.duration=0:\"number\"!=typeof d.duration&&(d.duration in r.fx.speeds?d.duration=r.fx.speeds[d.duration]:d.duration=r.fx.speeds._default),null!=d.queue&&d.queue!==!0||(d.queue=\"fx\"),d.old=d.complete,d.complete=function(){r.isFunction(d.old)&&d.old.call(this),d.queue&&r.dequeue(this,d.queue)},d},r.fn.extend({fadeTo:function(a,b,c,d){return this.filter(da).css(\"opacity\",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=r.isEmptyObject(a),f=r.speed(b,c,d),g=function(){var b=kb(this,r.extend({},a),f);(e||W.get(this,\"finish\"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return\"string\"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||\"fx\",[]),this.each(function(){var b=!0,e=null!=a&&a+\"queueHooks\",f=r.timers,g=W.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&db.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));!b&&c||r.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||\"fx\"),this.each(function(){var b,c=W.get(this),d=c[a+\"queue\"],e=c[a+\"queueHooks\"],f=r.timers,g=d?d.length:0;for(c.finish=!0,r.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;b<g;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),r.each([\"toggle\",\"show\",\"hide\"],function(a,b){var c=r.fn[b];r.fn[b]=function(a,d,e){return null==a||\"boolean\"==typeof a?c.apply(this,arguments):this.animate(gb(b,!0),a,d,e)}}),r.each({slideDown:gb(\"show\"),slideUp:gb(\"hide\"),slideToggle:gb(\"toggle\"),fadeIn:{opacity:\"show\"},fadeOut:{opacity:\"hide\"},fadeToggle:{opacity:\"toggle\"}},function(a,b){r.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),r.timers=[],r.fx.tick=function(){var a,b=0,c=r.timers;for(ab=r.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||r.fx.stop(),ab=void 0},r.fx.timer=function(a){r.timers.push(a),r.fx.start()},r.fx.interval=13,r.fx.start=function(){bb||(bb=!0,eb())},r.fx.stop=function(){bb=null},r.fx.speeds={slow:600,fast:200,_default:400},r.fn.delay=function(b,c){return b=r.fx?r.fx.speeds[b]||b:b,c=c||\"fx\",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a=d.createElement(\"input\"),b=d.createElement(\"select\"),c=b.appendChild(d.createElement(\"option\"));a.type=\"checkbox\",o.checkOn=\"\"!==a.value,o.optSelected=c.selected,a=d.createElement(\"input\"),a.value=\"t\",a.type=\"radio\",o.radioValue=\"t\"===a.value}();var lb,mb=r.expr.attrHandle;r.fn.extend({attr:function(a,b){return T(this,r.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return\"undefined\"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?lb:void 0)),void 0!==c?null===c?void r.removeAttr(a,b):e&&\"set\"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+\"\"),c):e&&\"get\"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b),\nnull==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&\"radio\"===b&&B(a,\"input\")){var c=a.value;return a.setAttribute(\"type\",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(L);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),lb={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\\w+/g),function(a,b){var c=mb[b]||r.find.attr;mb[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=mb[g],mb[g]=e,e=null!=c(a,b,d)?g:null,mb[g]=f),e}});var nb=/^(?:input|select|textarea|button)$/i,ob=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return T(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&\"set\"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&\"get\"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,\"tabindex\");return b?parseInt(b,10):nb.test(a.nodeName)||ob.test(a.nodeName)&&a.href?0:-1}}},propFix:{\"for\":\"htmlFor\",\"class\":\"className\"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each([\"tabIndex\",\"readOnly\",\"maxLength\",\"cellSpacing\",\"cellPadding\",\"rowSpan\",\"colSpan\",\"useMap\",\"frameBorder\",\"contentEditable\"],function(){r.propFix[this.toLowerCase()]=this});function pb(a){var b=a.match(L)||[];return b.join(\" \")}function qb(a){return a.getAttribute&&a.getAttribute(\"class\")||\"\"}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,qb(this)))});if(\"string\"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&\" \"+pb(e)+\" \"){g=0;while(f=b[g++])d.indexOf(\" \"+f+\" \")<0&&(d+=f+\" \");h=pb(d),e!==h&&c.setAttribute(\"class\",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,qb(this)))});if(!arguments.length)return this.attr(\"class\",\"\");if(\"string\"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&\" \"+pb(e)+\" \"){g=0;while(f=b[g++])while(d.indexOf(\" \"+f+\" \")>-1)d=d.replace(\" \"+f+\" \",\" \");h=pb(d),e!==h&&c.setAttribute(\"class\",h)}}return this},toggleClass:function(a,b){var c=typeof a;return\"boolean\"==typeof b&&\"string\"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,qb(this),b),b)}):this.each(function(){var b,d,e,f;if(\"string\"===c){d=0,e=r(this),f=a.match(L)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&\"boolean\"!==c||(b=qb(this),b&&W.set(this,\"__className__\",b),this.setAttribute&&this.setAttribute(\"class\",b||a===!1?\"\":W.get(this,\"__className__\")||\"\"))})},hasClass:function(a){var b,c,d=0;b=\" \"+a+\" \";while(c=this[d++])if(1===c.nodeType&&(\" \"+pb(qb(c))+\" \").indexOf(b)>-1)return!0;return!1}});var rb=/\\r/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e=\"\":\"number\"==typeof e?e+=\"\":Array.isArray(e)&&(e=r.map(e,function(a){return null==a?\"\":a+\"\"})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&\"set\"in b&&void 0!==b.set(this,e,\"value\")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&\"get\"in b&&void 0!==(c=b.get(e,\"value\"))?c:(c=e.value,\"string\"==typeof c?c.replace(rb,\"\"):null==c?\"\":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,\"value\");return null!=b?b:pb(r.text(a))}},select:{get:function(a){var b,c,d,e=a.options,f=a.selectedIndex,g=\"select-one\"===a.type,h=g?null:[],i=g?f+1:e.length;for(d=f<0?i:g?f:0;d<i;d++)if(c=e[d],(c.selected||d===f)&&!c.disabled&&(!c.parentNode.disabled||!B(c.parentNode,\"optgroup\"))){if(b=r(c).val(),g)return b;h.push(b)}return h},set:function(a,b){var c,d,e=a.options,f=r.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=r.inArray(r.valHooks.option.get(d),f)>-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each([\"radio\",\"checkbox\"],function(){r.valHooks[this]={set:function(a,b){if(Array.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute(\"value\")?\"on\":a.value})});var sb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,\"type\")?b.type:b,q=l.call(b,\"namespace\")?b.namespace.split(\".\"):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!sb.test(p+r.event.triggered)&&(p.indexOf(\".\")>-1&&(q=p.split(\".\"),p=q.shift(),q.sort()),k=p.indexOf(\":\")<0&&\"on\"+p,b=b[r.expando]?b:new r.Event(p,\"object\"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join(\".\"),b.rnamespace=b.namespace?new RegExp(\"(^|\\\\.)\"+q.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,sb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(W.get(h,\"events\")||{})[b.type]&&W.get(h,\"handle\"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&U(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!U(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each(\"blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu\".split(\" \"),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin=\"onfocusin\"in a,o.focusin||r.each({focus:\"focusin\",blur:\"focusout\"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=W.access(d,b);e||d.addEventListener(a,c,!0),W.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=W.access(d,b)-1;e?W.access(d,b,e):(d.removeEventListener(a,c,!0),W.remove(d,b))}}});var tb=a.location,ub=r.now(),vb=/\\?/;r.parseXML=function(b){var c;if(!b||\"string\"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,\"text/xml\")}catch(d){c=void 0}return c&&!c.getElementsByTagName(\"parsererror\").length||r.error(\"Invalid XML: \"+b),c};var wb=/\\[\\]$/,xb=/\\r?\\n/g,yb=/^(?:submit|button|image|reset|file)$/i,zb=/^(?:input|select|textarea|keygen)/i;function Ab(a,b,c,d){var e;if(Array.isArray(b))r.each(b,function(b,e){c||wb.test(a)?d(a,e):Ab(a+\"[\"+(\"object\"==typeof e&&null!=e?b:\"\")+\"]\",e,c,d)});else if(c||\"object\"!==r.type(b))d(a,b);else for(e in b)Ab(a+\"[\"+e+\"]\",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+\"=\"+encodeURIComponent(null==c?\"\":c)};if(Array.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)Ab(c,a[c],b,e);return d.join(\"&\")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,\"elements\");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(\":disabled\")&&zb.test(this.nodeName)&&!yb.test(a)&&(this.checked||!ja.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:Array.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(xb,\"\\r\\n\")}}):{name:b.name,value:c.replace(xb,\"\\r\\n\")}}).get()}});var Bb=/%20/g,Cb=/#.*$/,Db=/([?&])_=[^&]*/,Eb=/^(.*?):[ \\t]*([^\\r\\n]*)$/gm,Fb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Gb=/^(?:GET|HEAD)$/,Hb=/^\\/\\//,Ib={},Jb={},Kb=\"*/\".concat(\"*\"),Lb=d.createElement(\"a\");Lb.href=tb.href;function Mb(a){return function(b,c){\"string\"!=typeof b&&(c=b,b=\"*\");var d,e=0,f=b.toLowerCase().match(L)||[];if(r.isFunction(c))while(d=f[e++])\"+\"===d[0]?(d=d.slice(1)||\"*\",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Nb(a,b,c,d){var e={},f=a===Jb;function g(h){var i;return e[h]=!0,r.each(a[h]||[],function(a,h){var j=h(b,c,d);return\"string\"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e[\"*\"]&&g(\"*\")}function Ob(a,b){var c,d,e=r.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&r.extend(!0,a,d),a}function Pb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while(\"*\"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader(\"Content-Type\"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+\" \"+i[0]]){f=e;break}g||(g=e)}f=f||g}if(f)return f!==i[0]&&i.unshift(f),c[f]}function Qb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if(\"*\"===f)f=i;else if(\"*\"!==i&&i!==f){if(g=j[i+\" \"+f]||j[\"* \"+f],!g)for(e in j)if(h=e.split(\" \"),h[1]===f&&(g=j[i+\" \"+h[0]]||j[\"* \"+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a[\"throws\"])b=g(b);else try{b=g(b)}catch(l){return{state:\"parsererror\",error:g?l:\"No conversion from \"+i+\" to \"+f}}}return{state:\"success\",data:b}}r.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:tb.href,type:\"GET\",isLocal:Fb.test(tb.protocol),global:!0,processData:!0,async:!0,contentType:\"application/x-www-form-urlencoded; charset=UTF-8\",accepts:{\"*\":Kb,text:\"text/plain\",html:\"text/html\",xml:\"application/xml, text/xml\",json:\"application/json, text/javascript\"},contents:{xml:/\\bxml\\b/,html:/\\bhtml/,json:/\\bjson\\b/},responseFields:{xml:\"responseXML\",text:\"responseText\",json:\"responseJSON\"},converters:{\"* text\":String,\"text html\":!0,\"text json\":JSON.parse,\"text xml\":r.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Ob(Ob(a,r.ajaxSettings),b):Ob(r.ajaxSettings,a)},ajaxPrefilter:Mb(Ib),ajaxTransport:Mb(Jb),ajax:function(b,c){\"object\"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m,n,o=r.ajaxSetup({},c),p=o.context||o,q=o.context&&(p.nodeType||p.jquery)?r(p):r.event,s=r.Deferred(),t=r.Callbacks(\"once memory\"),u=o.statusCode||{},v={},w={},x=\"canceled\",y={readyState:0,getResponseHeader:function(a){var b;if(k){if(!h){h={};while(b=Eb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return k?g:null},setRequestHeader:function(a,b){return null==k&&(a=w[a.toLowerCase()]=w[a.toLowerCase()]||a,v[a]=b),this},overrideMimeType:function(a){return null==k&&(o.mimeType=a),this},statusCode:function(a){var b;if(a)if(k)y.always(a[y.status]);else for(b in a)u[b]=[u[b],a[b]];return this},abort:function(a){var b=a||x;return e&&e.abort(b),A(0,b),this}};if(s.promise(y),o.url=((b||o.url||tb.href)+\"\").replace(Hb,tb.protocol+\"//\"),o.type=c.method||c.type||o.method||o.type,o.dataTypes=(o.dataType||\"*\").toLowerCase().match(L)||[\"\"],null==o.crossDomain){j=d.createElement(\"a\");try{j.href=o.url,j.href=j.href,o.crossDomain=Lb.protocol+\"//\"+Lb.host!=j.protocol+\"//\"+j.host}catch(z){o.crossDomain=!0}}if(o.data&&o.processData&&\"string\"!=typeof o.data&&(o.data=r.param(o.data,o.traditional)),Nb(Ib,o,c,y),k)return y;l=r.event&&o.global,l&&0===r.active++&&r.event.trigger(\"ajaxStart\"),o.type=o.type.toUpperCase(),o.hasContent=!Gb.test(o.type),f=o.url.replace(Cb,\"\"),o.hasContent?o.data&&o.processData&&0===(o.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&(o.data=o.data.replace(Bb,\"+\")):(n=o.url.slice(f.length),o.data&&(f+=(vb.test(f)?\"&\":\"?\")+o.data,delete o.data),o.cache===!1&&(f=f.replace(Db,\"$1\"),n=(vb.test(f)?\"&\":\"?\")+\"_=\"+ub++ +n),o.url=f+n),o.ifModified&&(r.lastModified[f]&&y.setRequestHeader(\"If-Modified-Since\",r.lastModified[f]),r.etag[f]&&y.setRequestHeader(\"If-None-Match\",r.etag[f])),(o.data&&o.hasContent&&o.contentType!==!1||c.contentType)&&y.setRequestHeader(\"Content-Type\",o.contentType),y.setRequestHeader(\"Accept\",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+(\"*\"!==o.dataTypes[0]?\", \"+Kb+\"; q=0.01\":\"\"):o.accepts[\"*\"]);for(m in o.headers)y.setRequestHeader(m,o.headers[m]);if(o.beforeSend&&(o.beforeSend.call(p,y,o)===!1||k))return y.abort();if(x=\"abort\",t.add(o.complete),y.done(o.success),y.fail(o.error),e=Nb(Jb,o,c,y)){if(y.readyState=1,l&&q.trigger(\"ajaxSend\",[y,o]),k)return y;o.async&&o.timeout>0&&(i=a.setTimeout(function(){y.abort(\"timeout\")},o.timeout));try{k=!1,e.send(v,A)}catch(z){if(k)throw z;A(-1,z)}}else A(-1,\"No Transport\");function A(b,c,d,h){var j,m,n,v,w,x=c;k||(k=!0,i&&a.clearTimeout(i),e=void 0,g=h||\"\",y.readyState=b>0?4:0,j=b>=200&&b<300||304===b,d&&(v=Pb(o,y,d)),v=Qb(o,v,y,j),j?(o.ifModified&&(w=y.getResponseHeader(\"Last-Modified\"),w&&(r.lastModified[f]=w),w=y.getResponseHeader(\"etag\"),w&&(r.etag[f]=w)),204===b||\"HEAD\"===o.type?x=\"nocontent\":304===b?x=\"notmodified\":(x=v.state,m=v.data,n=v.error,j=!n)):(n=x,!b&&x||(x=\"error\",b<0&&(b=0))),y.status=b,y.statusText=(c||x)+\"\",j?s.resolveWith(p,[m,x,y]):s.rejectWith(p,[y,x,n]),y.statusCode(u),u=void 0,l&&q.trigger(j?\"ajaxSuccess\":\"ajaxError\",[y,o,j?m:n]),t.fireWith(p,[y,x]),l&&(q.trigger(\"ajaxComplete\",[y,o]),--r.active||r.event.trigger(\"ajaxStop\")))}return y},getJSON:function(a,b,c){return r.get(a,b,c,\"json\")},getScript:function(a,b){return r.get(a,void 0,b,\"script\")}}),r.each([\"get\",\"post\"],function(a,b){r[b]=function(a,c,d,e){return r.isFunction(c)&&(e=e||d,d=c,c=void 0),r.ajax(r.extend({url:a,type:b,dataType:e,data:c,success:d},r.isPlainObject(a)&&a))}}),r._evalUrl=function(a){return r.ajax({url:a,type:\"GET\",dataType:\"script\",cache:!0,async:!1,global:!1,\"throws\":!0})},r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not(\"body\").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},r.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Rb={0:200,1223:204},Sb=r.ajaxSettings.xhr();o.cors=!!Sb&&\"withCredentials\"in Sb,o.ajax=Sb=!!Sb,r.ajaxTransport(function(b){var c,d;if(o.cors||Sb&&!b.crossDomain)return{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e[\"X-Requested-With\"]||(e[\"X-Requested-With\"]=\"XMLHttpRequest\");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,\"abort\"===a?h.abort():\"error\"===a?\"number\"!=typeof h.status?f(0,\"error\"):f(h.status,h.statusText):f(Rb[h.status]||h.status,h.statusText,\"text\"!==(h.responseType||\"text\")||\"string\"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c(\"error\"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c(\"abort\");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}}),r.ajaxPrefilter(function(a){a.crossDomain&&(a.contents.script=!1)}),r.ajaxSetup({accepts:{script:\"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"},contents:{script:/\\b(?:java|ecma)script\\b/},converters:{\"text script\":function(a){return r.globalEval(a),a}}}),r.ajaxPrefilter(\"script\",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type=\"GET\")}),r.ajaxTransport(\"script\",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=r(\"<script>\").prop({charset:a.scriptCharset,src:a.url}).on(\"load error\",c=function(a){b.remove(),c=null,a&&f(\"error\"===a.type?404:200,a.type)}),d.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Tb=[],Ub=/(=)\\?(?=&|$)|\\?\\?/;r.ajaxSetup({jsonp:\"callback\",jsonpCallback:function(){var a=Tb.pop()||r.expando+\"_\"+ub++;return this[a]=!0,a}}),r.ajaxPrefilter(\"json jsonp\",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Ub.test(b.url)?\"url\":\"string\"==typeof b.data&&0===(b.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&Ub.test(b.data)&&\"data\");if(h||\"jsonp\"===b.dataTypes[0])return e=b.jsonpCallback=r.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Ub,\"$1\"+e):b.jsonp!==!1&&(b.url+=(vb.test(b.url)?\"&\":\"?\")+b.jsonp+\"=\"+e),b.converters[\"script json\"]=function(){return g||r.error(e+\" was not called\"),g[0]},b.dataTypes[0]=\"json\",f=a[e],a[e]=function(){g=arguments},d.always(function(){void 0===f?r(a).removeProp(e):a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Tb.push(e)),g&&r.isFunction(f)&&f(g[0]),g=f=void 0}),\"script\"}),o.createHTMLDocument=function(){var a=d.implementation.createHTMLDocument(\"\").body;return a.innerHTML=\"<form></form><form></form>\",2===a.childNodes.length}(),r.parseHTML=function(a,b,c){if(\"string\"!=typeof a)return[];\"boolean\"==typeof b&&(c=b,b=!1);var e,f,g;return b||(o.createHTMLDocument?(b=d.implementation.createHTMLDocument(\"\"),e=b.createElement(\"base\"),e.href=d.location.href,b.head.appendChild(e)):b=d),f=C.exec(a),g=!c&&[],f?[b.createElement(f[1])]:(f=qa([a],b,g),g&&g.length&&r(g).remove(),r.merge([],f.childNodes))},r.fn.load=function(a,b,c){var d,e,f,g=this,h=a.indexOf(\" \");return h>-1&&(d=pb(a.slice(h)),a=a.slice(0,h)),r.isFunction(b)?(c=b,b=void 0):b&&\"object\"==typeof b&&(e=\"POST\"),g.length>0&&r.ajax({url:a,type:e||\"GET\",dataType:\"html\",data:b}).done(function(a){f=arguments,g.html(d?r(\"<div>\").append(r.parseHTML(a)).find(d):a)}).always(c&&function(a,b){g.each(function(){c.apply(this,f||[a.responseText,b,a])})}),this},r.each([\"ajaxStart\",\"ajaxStop\",\"ajaxComplete\",\"ajaxError\",\"ajaxSuccess\",\"ajaxSend\"],function(a,b){r.fn[b]=function(a){return this.on(b,a)}}),r.expr.pseudos.animated=function(a){return r.grep(r.timers,function(b){return a===b.elem}).length},r.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=r.css(a,\"position\"),l=r(a),m={};\"static\"===k&&(a.style.position=\"relative\"),h=l.offset(),f=r.css(a,\"top\"),i=r.css(a,\"left\"),j=(\"absolute\"===k||\"fixed\"===k)&&(f+i).indexOf(\"auto\")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),r.isFunction(b)&&(b=b.call(a,c,r.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),\"using\"in b?b.using.call(a,m):l.css(m)}},r.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){r.offset.setOffset(this,a,b)});var b,c,d,e,f=this[0];if(f)return f.getClientRects().length?(d=f.getBoundingClientRect(),b=f.ownerDocument,c=b.documentElement,e=b.defaultView,{top:d.top+e.pageYOffset-c.clientTop,left:d.left+e.pageXOffset-c.clientLeft}):{top:0,left:0}},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return\"fixed\"===r.css(c,\"position\")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),B(a[0],\"html\")||(d=a.offset()),d={top:d.top+r.css(a[0],\"borderTopWidth\",!0),left:d.left+r.css(a[0],\"borderLeftWidth\",!0)}),{top:b.top-d.top-r.css(c,\"marginTop\",!0),left:b.left-d.left-r.css(c,\"marginLeft\",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&\"static\"===r.css(a,\"position\"))a=a.offsetParent;return a||ra})}}),r.each({scrollLeft:\"pageXOffset\",scrollTop:\"pageYOffset\"},function(a,b){var c=\"pageYOffset\"===b;r.fn[a]=function(d){return T(this,function(a,d,e){var f;return r.isWindow(a)?f=a:9===a.nodeType&&(f=a.defaultView),void 0===e?f?f[b]:a[d]:void(f?f.scrollTo(c?f.pageXOffset:e,c?e:f.pageYOffset):a[d]=e)},a,d,arguments.length)}}),r.each([\"top\",\"left\"],function(a,b){r.cssHooks[b]=Pa(o.pixelPosition,function(a,c){if(c)return c=Oa(a,b),Ma.test(c)?r(a).position()[b]+\"px\":c})}),r.each({Height:\"height\",Width:\"width\"},function(a,b){r.each({padding:\"inner\"+a,content:b,\"\":\"outer\"+a},function(c,d){r.fn[d]=function(e,f){var g=arguments.length&&(c||\"boolean\"!=typeof e),h=c||(e===!0||f===!0?\"margin\":\"border\");return T(this,function(b,c,e){var f;return r.isWindow(b)?0===d.indexOf(\"outer\")?b[\"inner\"+a]:b.document.documentElement[\"client\"+a]:9===b.nodeType?(f=b.documentElement,Math.max(b.body[\"scroll\"+a],f[\"scroll\"+a],b.body[\"offset\"+a],f[\"offset\"+a],f[\"client\"+a])):void 0===e?r.css(b,c,h):r.style(b,c,e,h)},b,g?e:void 0,g)}})}),r.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,\"**\"):this.off(b,a||\"**\",c)}}),r.holdReady=function(a){a?r.readyWait++:r.ready(!0)},r.isArray=Array.isArray,r.parseJSON=JSON.parse,r.nodeName=B,\"function\"==typeof define&&define.amd&&define(\"jquery\",[],function(){return r});var Vb=a.jQuery,Wb=a.$;return r.noConflict=function(b){return a.$===r&&(a.$=Wb),b&&a.jQuery===r&&(a.jQuery=Vb),r},b||(a.jQuery=a.$=r),r});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2016, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n *\n * RequireJS module to get server configuration information. This module\n * fetches \"config.json\" relative  to  the   main  document.  The Prolog\n * server emits a  JSON  object  that   provides  the  location  of  all\n * explicitly  identified  HTTP  handlers.  These    are   intended  for\n * (typically) AJAX calls:\n *\n * ```\n *   $.ajax({ url: config.http.locations.swish_examples,\n *            ...\n * ```\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('config',[ \"jquery\" ],\n       function($) {\nvar KEY = \"SWISHCONFIG\";\n\n/* Configuration of various server components.  We provide\n   defaults for the case that these files are served from\n   a non-Prolog server.\n*/\n\nvar config;\n\nfunction getCachedConfig() {\n  if ( typeof(Storage) !== \"undefined\" && window.swish.config_hash ) {\n    var str;\n\n    if ( (str = localStorage.getItem(KEY)) ) {\n      value = JSON.parse(str);\n      if ( value.hash == window.swish.config_hash )\n\treturn value.config;\n    }\n  }\n}\n\nfunction setCachedConfig(config) {\n  if ( typeof(Storage) !== \"undefined\" && window.swish.config_hash ) {\n    localStorage.setItem(KEY, JSON.stringify(\n      { hash: window.swish.config_hash,\n        config: config\n      }));\n  }\n}\n\nif ( !config ) {\n  if ( !(config = getCachedConfig()) ) {\n    $.ajax(\"swish_config.json\",\n\t   { dataType: \"json\",\n\t     async: false,\n\t     success: function(data) {\n\t       config = data;\n\t       setCachedConfig(config);\n\t     },\n\t     error: function() {\n\t       alert(\"Failed to fetch configuration from server\");\n\t     }\n\t   });\n  }\n}\n\nreturn config;\n});\n\n\n\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2016, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n *\n * Manage persistent data such as preferences.\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n */\n\ndefine('preferences',[\"jquery\"],\n       function($) {\n  var hasLocalStore = (typeof(Storage) !== \"undefined\");\n  var defaults = {};\n\n  var preferences = {\n    /**\n     * @returns {Boolean} indicating whether persistent storage is\n     * supported.\n     */\n    persistent: function() {\n      return hasLocalStore;\n    },\n\n    /**\n     * Store that we do not want to see info dialogue with a given\n     * identifier again.\n     * @param {String} id\n     */\n    setNotAgain: function(id) {\n      if ( hasLocalStore ) {\n\tvar data = readNotAgain();\n\n\tif ( data.indexOf(id) < 0 ) {\n\t  data.push(id);\n\t  localStorage.setItem(\"notagain\", JSON.stringify(data));\n\t}\n      }\n    },\n\n    /**\n     * @returns {Boolean} `true` if the user choose not to see this\n     * dialogue again\n     * @param {String} id identifier to test\n     */\n    notagain: function(id) {\n      if ( hasLocalStore ) {\n\tvar data = readNotAgain();\n\treturn data.indexOf(id) >= 0;\n      }\n      return false;\n    },\n\n    /**\n     * Broadcast the change of a preference.\n     */\n    broadcast: function(name, value) {\n      $(\".swish-event-receiver\").trigger(\"preference\",\n\t\t\t\t\t { name: name,\n\t\t\t\t\t   value: value\n\t\t\t\t\t });\n    },\n\n    /**\n     * Set the value of a preference and broadcast it.\n     * FIXME: we should only broadcast if the value has changed.\n     * @param {String} name describes the name of the preference\n     * @param {Any} value describes the value.  Values are stored\n     * using JSON serialization.\n     */\n    setVal: function(name, value) {\n      if ( hasLocalStore ) {\n\tlocalStorage.setItem(name, JSON.stringify(value));\n      }\n      this.broadcast(name, value);\n    },\n\n    /**\n     * @param {String} name describes the name of the preference\n     * @param {Any} value describes the default value.\n     */\n    setDefault: function(name, value) {\n      defaults[name] = value;\n    },\n\n    /**\n     * @param {String} name describes the name of the preference\n     */\n    getVal: function(name) {\n      if ( hasLocalStore ) {\n\tvar str;\n\n\tif ( (str = localStorage.getItem(name)) ) {\n\t  value = JSON.parse(str);\n\t  return value;\n\t}\n      }\n      return defaults[name];\n    },\n\n    /**\n     * Set a preference value for a document.\n     */\n    setDocVal: function(docid, name, value) {\n      var prefs = preferences.getVal(docid)||{};\n      prefs[name] = value;\n      preferences.setVal(docid, prefs);\n    },\n\n    /**\n     * Get a preference value for a document.\n     */\n    getDocVal: function(docid, name, def) {\n      var prefs = preferences.getVal(docid)||{};\n      return prefs[name] === undefined ? def : prefs[name];\n    }\n  }\n\n  function readNotAgain() {\n    var str = localStorage.getItem(\"notagain\") || \"[]\";\n    var notagain;\n\n    try {\n      data = JSON.parse(str);\n      if ( typeof(data) != \"object\" )\n\tdata = [];\n    } catch(err) {\n      data = [];\n    }\n\n    return data;\n  }\n\n  return preferences;\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2016, VU University Amsterdam\n\t\t\t CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n *\n * Manage hyper links.\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n */\n\ndefine('links',[\"jquery\", \"config\", \"modal\"],\n       function($, config, modal) {\n\n  var functions = {\n    /** Decode a PlDoc specification and, if valid, open the\n     * corresponding documentation.\n     * @arg {String} from The PlDoc specification.  Accepted if it\n     * is of the form `[.*:].*[/]/?\\d+`\n     * @return Boolean `true` if the string was recognised\n     */\n    PlDoc: function(from, ev) {\n      function parsePred(s) {\n\tvar pred = {};\n\tvar i;\n\n\tif ( (i=s.indexOf(\":\")) > 0 ) {\n\t  pred.module = s.substring(0,i);\n\t  s = s.slice(i+1);\n\t}\n\tif ( (i=s.indexOf(\"/\")) > 0 ) {\n\t  pred.name = s.substring(0,i);\n\t  if ( s.charAt(i+1) == '/' )\t/* name//arity is a non-terminal */\n\t    pred.arity = parseInt(s.slice(i+2))+2;\n\t  else\n\t    pred.arity = parseInt(s.slice(i+1));\n\n\t  if ( !isNaN(pred.arity) )\n\t    return pred;\n\t}\n      }\n\n      if ( from ) {\n\tvar pred = parsePred(decodeURIComponent(from));\n\n\tif ( pred ) {\n\t  $(ev.target).closest(\"#ajaxModal\").modal('hide');\n\t  $(\".swish-event-receiver\").trigger(\"pldoc\", pred);\n\t  ev.preventDefault();\n\n\t  return true;\n\t}\n      }\n\n      return false;\n    },\n\n    /**\n     * Run a link that refers to a cell. Such a link has a\n     * `data-query=name` attribute and optionally a number of\n     * `data-Var=Value` attributes. Because attributes are\n     * case-insensitive, `Var` is matched case-insensitive against\n     * variables from the query.\n     */\n    runQueryLink: function(a, ev) {\n      var nb    = a.closest(\".notebook\");\n      var qname = a.data(\"query\");\n      var cell  = nb.find('.nb-cell[name=\"'+qname+'\"]');\n\n      if ( cell ) {\n\tvar vars = $().prologEditor('variables', cell.nbCell('text'), true);\n\tvar bindings = \"\";\n\tvar options  = {};\n\tvar novars   = [];\n\n\tfunction isVar(k) {\n\t  for(var i=0; i<vars.length; i++) {\n\t    if ( vars[i].toLowerCase() == k.toLowerCase() )\n\t      return vars[i];\n\t  }\n\t  novars.push(k);\n\t}\n\n\t$.each(a.data(), function(k, v) {\n\t  var vr;\n\n\t  if ( k !== 'query' && (vr=isVar(k)) ) {\n\t    if ( bindings != \"\" )\n\t      bindings += \", \";\n\t    bindings += vr + \" = (\" + v + \")\";\n\t  }\n\t});\n\n\tif ( novars.length > 0 ) {\n\t  modal.feedback({\n\t    owner:    nb,\n\t    type:     \"warning\",\n\t    duration: 3000,\n\t    html:     \"The variables <b>\" + novars.join(\", \") + \"</b> do not appear in \" +\n\t\t      \"query <b>\" + qname + \"</b>\"\n\t  });\n\t}\n\n\tif ( bindings != \"\" )\n          options.bindings = bindings;\n\n\tcell.nbCell('run', options);\n      }\n    },\n\n    /**\n     * Follow a link from a markdown or HTML cell. This recognises links\n     * to internal SWISH objects and handles them using AJAX calls\n     * rather then opening a new page.  If the link is not recognised,\n     * it is opened on a new tab/page.  Recognised:\n     *\n     *  - class=\"store\" links open a gitty store element in a tab\n     *  - class=\"file\" links opens a file in a tab\n     *  - PlDoc links creates a modal dialog holding the documentation\n     *  - data-query=<query-name> runs a query.  data-<Var>=<Value>\n     *    binds variables.\n     *\n     * @param {Event} ev is the event to follow form\n     */\n    followLink: function(ev) {\n      var a = $(ev.target).closest(\"a\");\n      var done = false;\n\n      function accept() {\n\tdone = true;\n\tev.preventDefault();\n\n\t$(ev.target).closest(\"#ajaxModal\").modal('hide');\n      }\n\n      if ( a.attr(\"href\") ) {\n\tvar swishStore    = config.http.locations.swish + \"p/\";\n\tvar swishExamples = config.http.locations.swish + \"example/\";\n\tvar href\t  = a.attr(\"href\");\n\tvar modal;\n\n\tif ( href.startsWith(swishStore) && !href.match(/#/) ) {\n\t  accept();\n\t  file = href.slice(swishStore.length);\n\t  $(ev.target).closest(\".swish\").swish('playFile', file);\n\t} else if ( a.hasClass(\"store\") ) {\n\t  accept();\n\t  modal.alert(\"File does not appear to come from gitty store?\");\n\t} else if ( a.hasClass(\"file\") ||\n\t\t    (href.startsWith(swishExamples) && !href.match(/#/)) ) {\n\t  accept();\n\t  $(ev.target).closest(\".swish\")\n\t\t      .swish('playURL', {url: href});\n\t} else if ( a.hasClass(\"builtin\") && href.match(/predicate=/) ) {\n\t  done = functions.PlDoc(href.split(\"predicate=\").pop(), ev);\n\t} else if ( href.match(/object=/) ) {\n\t  done = functions.PlDoc(href.split(\"object=\").pop(), ev);\n\t} else if ( (modal=$(ev.target).closest(\"#ajaxModal\")).length == 1 &&\n\t\t    href.match(/#/) )\n\t{ var id = href.split(\"#\").pop();\n\t  var target;\n\n\t  if ( (target=modal.find(\"#\"+id)).length == 1 )\n\t  { done = true;\n\t    ev.preventDefault();\n\t    modal.animate({scrollTop: target.position().top}, 2000);\n\t  }\n\t}\n\n\tif ( !done ) {\n\t  ev.preventDefault();\n\t  window.open(href, '_blank');\n\t}\n      } else if ( a.data(\"query\") ) {\n\tfunctions.runQueryLink(a, ev);\n      }\n    }\n  }\n\n  return functions;\n});\n\n","// Laconic simplifies the generation of DOM content.\n(function(context) {\n\n  // properly-cased attribute names for IE setAttribute support\n  var attributeMap = {\n    'acceptcharset'     : 'acceptCharset',\n    'accesskey'         : 'accessKey',\n    'allowtransparency' : 'allowTransparency',\n    'bgcolor'           : 'bgColor',\n    'cellpadding'       : 'cellPadding',\n    'cellspacing'       : 'cellSpacing',\n    'class'             : 'className',\n    'classname'         : 'className',\n    'colspan'           : 'colSpan',\n    'csstext'           : 'style',\n    'defaultchecked'    : 'defaultChecked',\n    'defaultselected'   : 'defaultSelected',\n    'defaultvalue'      : 'defaultValue',\n    'for'               : 'htmlFor',\n    'frameborder'       : 'frameBorder',\n    'hspace'            : 'hSpace',\n    'htmlfor'           : 'htmlFor',\n    'longdesc'          : 'longDesc',\n    'maxlength'         : 'maxLength',\n    'marginwidth'       : 'marginWidth',\n    'marginheight'      : 'marginHeight',\n    'noresize'          : 'noResize',\n    'noshade'           : 'noShade',\n    'readonly'          : 'readOnly',\n    'rowspan'           : 'rowSpan',\n    'tabindex'          : 'tabIndex',\n    'valign'            : 'vAlign',\n    'vspace'            : 'vSpace'\n  };\n\n  // The laconic function serves as a generic method for generating\n  // DOM content, and also as a placeholder for helper functions.\n  //\n  // The first parameter MUST be a string specifying the element's \n  // tag name.  \n  // \n  // An optional object of element attributs may follow directly \n  // after the tag name.  \n  // \n  // Additional arguments will be considered children of the new \n  // element and may consist of elements, strings, or numbers.\n  // \n  // for example:\n  // laconic('div', {'class' : 'foo'}, 'bar');\n  function laconic() {\n\n    // create a new element of the requested type\n    var el = document.createElement(arguments[0]);\n    \n    // walk through the rest of the arguments\n    for(var i=1; i<arguments.length; i++) {\n      var arg = arguments[i];\n      if(arg === null || arg === undefined) continue;\n\n      // if the argument is a dom node, we simply append it\n      if(arg.nodeType === 1) {\n        el.appendChild(arg); \n      }\n\n      // if the argument is a string or a number, we append it as\n      // a new text node\n      else if(\n          (!!(arg === '' || (arg && arg.charCodeAt && arg.substr))) ||\n          (!!(arg === 0  || (arg && arg.toExponential && arg.toFixed)))) {\n\n        el.appendChild(document.createTextNode(arg));\n      }\n\n      // if the argument is a plain-old object, and we're processing the first \n      // argument, then we apply the object's values as element attributes\n      else if(i === 1 && typeof(arg) === 'object') {\n        for(var key in arg) {\n          if(arg.hasOwnProperty(key)) {\n            var value = arg[key];\n            if(value !== null && value !== undefined) {\n              key = key.toLowerCase();\n              key = attributeMap[key] || key;\n\n              // if the key represents an event (onclick, onchange, etc)\n              // we'll set the href to '#' if none is given, and we'll apply\n              // the attribute directly to the element for IE7 support.\n              var isEvent = key.charAt(0) === 'o' && key.charAt(1) === 'n';\n              if(isEvent) {\n                if(arg.href === undefined && key === 'onclick') {\n                  el.setAttribute('href', '#');\n                }\n                el[key] = value;\n              }\n\n              // if we're setting the style attribute, we may need to \n              // use the cssText property\n              else if(key === 'style' && el.style.setAttribute) {\n                el.style.setAttribute('cssText', value);\n              }\n\n              // if we're setting an attribute that's not properly supported \n              // by IE7's setAttribute implementation, then we apply the \n              // attribute directly to the element\n              else if(key === 'className' || key === 'htmlFor') {\n                el[key] = value;\n              }\n\n              // otherwise, we use the standard setAttribute\n              else {\n                el.setAttribute(key, value);\n              }\n            }\n          }\n        }\n      }\n\n      // if the argument is an array, we append each element\n      else if(Object.prototype.toString.call(arg) === '[object Array]') {\n        for(var j=0; j<arg.length; j++) {\n          var child = arg[j];\n          if(child.nodeType === 1) {\n            el.appendChild(child);\n          }\n        }\n      }\n    }\n\n    // Add an appendTo method to the newly created element, which will allow\n    // the DOM insertion to be method chained to the creation.  For example:\n    // $el.div('foo').appendTo(document.body);\n    el.appendTo = function(parentNode) {\n      if(parentNode.nodeType === 1 && this.nodeType === 1) {\n        parentNode.appendChild(this);\n      }\n      return this;\n    };\n    \n    return el;\n  }\n\n  // registers a new 'tag' that can be used to automate\n  // the creation of a known element hierarchy\n  laconic.registerElement= function(name, renderer) {\n    if(!laconic[name]) {\n      laconic[name] = function() {\n        var el = laconic('div', {'class' : name});\n        renderer.apply(el, Array.prototype.slice.call(arguments));\n        return el;\n      };\n    }\n  };\n\n  // html 4 tags \n  var deprecatedTags = ['acronym', 'applet', 'basefont', 'big', 'center', 'dir',\n    'font', 'frame', 'frameset', 'noframes', 'strike', 'tt', 'u', 'xmp'];\n\n  // html 5 tags\n  var tags = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b',\n    'base', 'bdo', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption',\n    'cite', 'code', 'col', 'colgroup', 'command', 'datalist', 'dd', 'del',\n    'details', 'dfn', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset',\n    'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5',\n    'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img',\n    'input', 'ins', 'keygen', 'kbd', 'label', 'legend', 'li', 'link', 'map',\n    'mark', 'menu', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol',\n    'optgroup', 'option', 'output', 'p', 'picture', 'param', 'pre', 'progress', \n    'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', \n    'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', \n    'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title',\n    'tr', 'ul', 'var', 'video', 'wbr'].concat(deprecatedTags);\n\n  // add our tag methods to the laconic object \n  var makeApply = function(tagName) {\n    return function() {\n      return laconic.apply(this, \n        [tagName].concat(Array.prototype.slice.call(arguments)));\n    };\n  };\n\n  for(var i=0; i<tags.length; i++) {\n    laconic[tags[i]] = makeApply(tags[i]);\n  }\n\n  // If we're in a CommonJS environment, we export our laconic methods\n  if(typeof module !== 'undefined' && module.exports) {\n    module.exports = laconic;\n  } \n\n  // otherwise, we attach them to the top level $.el namespace\n  else {\n    var dollar = context.$ || {};\n    dollar.el = laconic;\n    context.$ = dollar;\n  }\n}(this));\n\ndefine(\"laconic\", [\"jquery\"], function(){});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2016, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Show modal windows\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('modal',[ \"jquery\", \"config\", \"preferences\", \"links\", \"form\",\n\t \"laconic\", \"bootstrap\" ],\n       function($, config, preferences, links, form) {\n\n/* NOTE: form dependency is circular.  Form is initialized later. */\n\n(function($) {\n  var pluginName = 'swishModal';\n\n  /** @lends $.fn.modal */\n  var methods = {\n    /**\n     * Initialize the widget and listen for \"help\" events.\n     * @param {Object} options currently ignored\n     */\n    _init: function(options) {\n      return this.each(function() {\n\tvar elem = $(this);\n\n\telem.addClass(\"swish-event-receiver\");\n\telem.on(\"help\", function(ev, data) {\n\t  elem.swishModal('showHelp', data);\n\t});\n\telem.on(\"pldoc\", function(ev, data) {\n\t  elem.swishModal('showPlDoc', data);\n\t});\n\telem.on(\"form\", function(ev, data) {\n\t  elem.swishModal('showForm', data);\n\t});\n\telem.on(\"dialog\", function(ev, data) {\n\t  elem.swishModal('show', data);\n\t});\n\telem.on(\"error\", function(ev, data) { /* still needed? */\n\t  elem.swishModal('show', data);\n\t});\n\telem.on(\"alert\", function(ev, str) {\n\t  var icon = \"<span class='glyphicon glyphicon-warning-sign'></span>\";\n\t  elem.swishModal('show', {title: icon, body:str});\n\t});\n\telem.on(\"ajaxError\", function(ev, jqXHR) {\n\t  elem.swishModal('showAjaxError', jqXHR);\n\t});\n\telem.on(\"feedback\", function(ev, options) {\n\t  elem.swishModal('feedback', options);\n\t});\n\telem.on(\"show\", function(ev, options) {\n\t  elem.swishModal('show', options);\n\t});\n\telem.on(\"server_form\", function(ev, options) {\n\t  elem.swishModal('server_form', options);\n\t});\n      });\n    },\n\n    /**\n     * Show a help file.  The help file is a normal HTML document.  The\n     * `<title>` element is used for the title, while the `<body>`\n     * carries the content of the help file.\n     * @param {Object} options\n     * @param {String} options.file file help file.\n     * @param {String} options.notagain Identifier to stop this dialog\n     */\n    showHelp: function(options) {\n      var that = this;\n\n      if ( options.notagain && preferences.notagain(options.notagain) )\n\treturn;\n\n      $.ajax({ url: config.http.locations.help + \"/\" + options.file,\n\t       dataType: \"html\",\n\t       success: function(data) {\n\t\t var container = $(\"<div>\");\n\t\t container.html(data);\n\t\t that.swishModal('show',\n\t\t\t\t $.extend(\n\t\t\t\t   { title: container.find(\"title\").text(),\n\t\t\t\t     body:  container\n\t\t\t\t   }, options));\n\t       }\n             });\n    },\n\n    /**\n     * Show a form.  The form is an HTML document.\n     * @param {Object} options\n     * @param {String} options.file file help file.\n     * @param {String} options.notagain Identifier to stop this dialog\n     */\n    showForm: function(options) {\n      var that = this;\n\n      $.ajax({ url: config.http.locations.form + \"/\" + options.file,\n\t       dataType: \"html\",\n\t       success: function(data) {\n\t\t var container = $(\"<div>\");\n\t\t container.html(data);\n\t\t that.swishModal('show',\n\t\t\t\t $.extend(\n\t\t\t\t   { title: container.find(\"legend\").text(),\n\t\t\t\t     body:  container\n\t\t\t\t   }, options));\n\t       }\n             });\n    },\n\n    /** Show PlDoc manual page\n     * @param {Object} options\n     * @param {String} options.name is the name of the predicate to show\n     * @param {String} options.arity arity of the predicate\n     * @param {String} [options.module] module of the predicate\n     */\n    showPlDoc: function(options) {\n      function docURL(options) {\n\tvar term = \"(\"+options.name+\")/\"+options.arity;\n\tif ( options.module )\t\t\t/* FIXME: must be valid Prolog term */\n\t  term = options.module+\":\"+term;\n\treturn   config.http.locations.pldoc_doc_for\n\t       + \"?header=false&object=\"\n\t       + encodeURIComponent(term);\n      }\n\n      function docBody(content, url) {\n\tcontent.parents(\"div.modal-dialog\").addClass(\"swish-embedded-manual\");\n\treturn \"<iframe class='swish-embedded-manual' \" +\n\t\t       \"onload='javascript:resizeIframe(this);' \" +\n                       \"src='\"+url+\"'>\" +\n\t       \"</iframe>\";\n      }\n\n      var data = { title: \"SWI-Prolog manual\",\n                   body:  function() {\n\t\t     return docBody(this, docURL(options))\n\t\t   }\n                 };\n\n      return this.swishModal('show', data);\n    },\n\n    /**\n     * Show a modal dialog.\n     * @param {Object} options\n     * @param {String} options.title HTML rendered as title\n     * @param {String|function} options.body  If this is a string the\n     * content is set using `$.html()`, else the function is called,\n     * where `this` refers to the jQuery content element and the\n     * function result is added to the content using `$.append()`.\n     * @param {String} options.notagain Identifier to stop this dialog\n     * showing\n     * @param {function} [options.onclose] If present, call this\n     * function if the modal window is closed.\n     */\n    show: function(options) {\n      var content = $.el.div({class:\"modal-body\"});\n      var title   = $.el.h2();\n      var md      = $.el.div({class:\"modal-content\"},\n\t\t\t     $.el.div({class:\"modal-header\"},\n\t\t\t\t      notAgain(options),\n\t\t\t\t      closeButton(),\n\t\t\t\t      title),\n\t\t\t     content);\n      var modalel = $.el.div({class:\"modal fade\", id:\"ajaxModal\",\n\t\t\t      tabindex:-1, role:\"dialog\"\n\t\t\t     },\n\t\t\t     $.el.div({class:\"modal-dialog\"},\n\t\t\t\t      md));\n      if ( options.notagain && preferences.persistent() ) {\n\t$(md).append($.el.div(\n\t  {class:\"modal-footer\"},\n\t  notAgain(options)));\n      }\n      content = $(content);\n      if ( typeof(options.body) == \"function\" ) {\n\tvar c = options.body.call(content);\n\tif ( c )\n\t  content.append(c);\n      } else {\n\tcontent.html(options.body);\n      }\n      $(title).html(options.title);\n      $(modalel).modal({show: true})\n\t\t.on(\"click\", \"a\", links.followLink)\n\t        .on(\"shown.bs.modal\", initTagsManagers)\n\t        .on(\"hidden.bs.modal\", function() {\n\t\t  if ( options.onclose )\n\t\t    options.onclose();\n\t\t  saveNotagain($(this));\n\t\t  $(this).remove();\n\t\t});\n\n      return this\n    },\n\n    /**\n     * Show a server-generated form and act on the buttons.\n     * @arg {Object} options\n     * @arg {String} options.url is the URL that generates the form\n     * content\n     * @arg {String} options.title sets the title of the form.\n     * @arg {Function} options.onreply is called after the form has\n     * been submitted.  `this` points at the submitting button and\n     * the first argument contains the server reply.\n     */\n\n    server_form: function(options) {\n      var modalel = $(this);\n\n      if ( form === undefined )\t\t\t/* circular dependency */\n\tform = require(\"form\");\n\n      return this.swishModal('show', {\n\ttitle: options.title,\n\tbody: function() {\n\t  elem = $(this);\n\t  $.ajax({ url: options.url,\n\t\t   data: options.data,\n\t\t   success: function(data) {\n\t\t     elem.append(data);\n\t\t   },\n\t\t   error: function(jqXHDR) {\n\t\t     modalel.swishModal('showAjaxError', jqXHDR);\n\t\t   }\n\t         });\n\n\t  elem.on(\"click\", \"button[data-action]\", function(ev) {\n\t    var formel = $(ev.target).closest(\"form\");\n\t    var data   = form.serializeAsObject(formel, true);\n\t    var button = $(ev.target).closest(\"button\");\n\n\t    if ( button.data(\"form_data\") == false ) {\n\t      $.ajax({ url: button.data(\"action\"),\n\t               success: function(obj) {\n\t\t\t button.closest(\".modal\").modal('hide');\n\t\t\t if ( options.onreply )\n\t\t\t   options.onreply.call(button[0], obj);\n\t\t\t ev.preventDefault();\n\t\t\t return false;\n\t\t       },\n\t\t       error: function(jqXHDR) {\n\t\t\t modalel.swishModal('showAjaxError', jqXHDR);\n\t\t       }\n\t      });\n\t    } else {\n\t      $.ajax({ url: button.data(\"action\"),\n\t\t       data: JSON.stringify(data),\n\t\t       dataType: \"json\",\n\t\t       contentType: \"application/json\",\n\t\t       type: \"POST\",\n\t\t       success: function(obj) {\n\t\t\t if ( obj.status == \"success\" ) {\n\t\t\t   button.closest(\".modal\").modal('hide');\n\t\t\t   if ( options.onreply )\n\t\t\t     options.onreply.call(button[0], obj);\n\t\t\t   ev.preventDefault();\n\t\t\t   return false;\n\t\t\t } else if ( obj.status == \"error\" ) {\n\t\t\t   form.formError(formel, obj.error);\n\t\t\t } else {\n\t\t\t   alert(\"Updated failed: \" +\n\t\t\t\t JSON.serializeAsObject(obj));\n\t\t\t }\n\t\t       },\n\t\t       error: function(jqXHDR) {\n\t\t\t modalel.swishModal('showAjaxError', jqXHDR);\n\t\t       }\n\t      });\n\t    }\n\n\t    ev.preventDefault();\n\t    return false;\n\t  });\n\t}\n      });\n    },\n\n    /**\n     * Display information about an ajax error\n     */\n    showAjaxError: function(jqXHR) {\n      var dom = $.el.div();\n\n      $(dom).html(jqXHR.responseText);\n      var h1 = $(dom).find(\"h1\");\n      var title = h1.text() || \"Server error\";\n      h1.remove();\n\n      var data = { title: title,\n\t\t   body: dom\n\t\t };\n\n      this.swishModal('show', data);\n    },\n\n    /**\n     * Display briefly a feedback message\n     * @param {Object} options\n     * @param {String} options.html defines the HTML content that is\n     * rendered.\n     * @param {Number} [options.duration=1500] number of milliseconds\n     * that the message is visible.\n     * @param {Object} [options.owner=$(\"body\")] is the DOM element to\n     * which the feedback window is added.\n     */\n    feedback: function(options) {\n      var win = $.el.div({class:\"feedback \"+options.type||\"\"});\n      $(win).html(options.html);\n\n      $(options.owner||\"body\").append(win);\n      setTimeout(function() {\n\t$(win).hide(400, function() {\n\t  $(win).remove();\n\t});\n      }, options.duration||1500);\n      return this;\n    }\n  }; // methods\n\n  function saveNotagain(elem) {\n    if ( !elem.hasClass(\"modal\") )\n      elem = elem.closest(\".modal\");\n\n    elem.find(\"[data-notagain]\")\n\t.each(function() {\n      if ( $(this).prop(\"checked\") ) {\n\tpreferences.setNotAgain($(this).attr(\"data-notagain\"));\n\treturn false;\n      }\n    });\n  }\n\n  function closeButton() {\n    var button = $.el.button({ type:\"button\", class:\"close\",\n\t\t\t       \"data-dismiss\":\"modal\"\n                             });\n    $(button)\n\t.html(\"&times;\")\n\t.on(\"click\", function(ev) {\n\t  ev.preventDefault();\n\t  saveNotagain($(ev.target));\n\t});\n\n    return button;\n  }\n\n  function notAgain(options) {\n    if ( options.notagain && preferences.persistent() ) {\n      return $.el.label($.el.input({ type:\"checkbox\",\n\t\t\t\t     'data-notagain':options.notagain,\n\t\t\t\t     name:\"dismiss\"\n\t\t\t\t   }),\n\t\t\t\" Don't show again!\");\n    } else {\n      return \"\";\n    }\n  }\n\n  /**\n   * Tags managers must be initialised after the DOM is complete.\n   * This cooperates with `tagInput()` from `form.js`\n   */\n  function initTagsManagers() {\n    var set = $(this).find(\".tm-input\");\n\n    set.each(function() {\n      var elem = $(this);\n      var tags = elem.data(\"prefilled\");\n      var options = {};\n\n      if ( tags ) options.prefilled = tags;\n\n      elem.tagsManager(options);\n    });\n  }\n\n  /**\n   * See http://stackoverflow.com/questions/9975810/make-iframe-automatically-adjust-height-according-to-the-contents-without-using\n   */\n  window.resizeIframe = function(iframe) {\n    iframe.style.height = 0;\n    iframe.style.height = iframe.contentWindow.document.body.scrollHeight+20\n                          + 'px';\n  }\n\n  /**\n   * This class is a small layer around bootstrap $.modal that isolates\n   * us from bootstrap and provides most of the intermediate divs\n   * needed to create a nice modal window.  In addition, it listens to\n   * `\"help\"` events.\n   *\n   * @class swishModal\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.swishModal = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\n  var ntfid = 1;\n\n  return {\n    ajaxError: function(jqXHR) {\n      $(\".swish-event-receiver\").trigger(\"ajaxError\", jqXHR);\n    },\n    feedback: function(options) {\n      $(\".swish-event-receiver\").trigger(\"feedback\", options);\n    },\n    alert: function(options) {\n      $(\".swish-event-receiver\").trigger(\"alert\", options);\n    },\n    help: function(options) {\n      $(\".swish-event-receiver\").trigger(\"help\", options);\n    },\n    show: function(options) {\n      $(\".swish-event-receiver\").trigger(\"show\", options);\n    },\n    server_form: function(options) {\n      $(\".swish-event-receiver\").trigger(\"server_form\", options);\n    },\n\n    /**\n     * Provide a brief notification for an element, typically an\n     * icon or similar object.\n     *\n     * @param {Object} options\n     * @param {String} options.html provides the inner html of the message.\n     * @param {Number} [options.fadeIn=400] provide the fade in time.\n     * @param {Number} [options.fadeOut=400] provide the fade out time.\n     * @param {Number} [options.time=5000] provide the show time.  The\n     * value `0` prevents a timeout.\n     */\n    notify: function(elem, options) {\n      var id = \"ntf-\"+(options.wsid||ntfid++);\n\n      var div  = $.el.div({ class:\"notification notify-arrow\",\n\t\t\t    id:id\n\t\t\t  });\n      var epos = elem.offset();\n\n      $(\"body\").append(div);\n      if ( options.html )\n\t$(div).html(options.html);\n      else if ( options.dom )\n\t$(div).append(options.dom);\n\n      $(div).css({ left: epos.left+elem.width()-$(div).outerWidth()+15,\n\t\t   top:  epos.top+elem.height()+12\n\t\t })\n\t    .on(\"click\", function(){$(div).remove();})\n\t    .show(options.fadeIn||400);\n\n      if ( options.time !== 0 ) {\n\tvar time = options.time;\n\n\tif ( !time )\n\t  time = elem.hasClass(\"myself\") ? 1000 : 5000;\n\n\tsetTimeout(function() {\n\t  $(div).hide(options.fadeOut||400, function() {\n\t    $(\"#\"+id).remove();\n\t    if ( options.onremove )\n\t      options.onremove(options);\n\t    elem.chat('unnotify', options.wsid);\n\t  });\n\t}, time);\n      }\n    }\n  };\n});\n\n\n","/* ===================================================\n * tagmanager.js v3.0.1\n * http://welldonethings.com/tags/manager\n * ===================================================\n * Copyright 2012 Max Favilli\n *\n * Licensed under the Mozilla Public License, Version 2.0 You may not use this work except in compliance with the License.\n *\n * http://www.mozilla.org/MPL/2.0/\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ========================================================== */\n(function($) {\n\n    \"use strict\";\n\n    var defaults = {\n        prefilled: null,\n        CapitalizeFirstLetter: false,\n        preventSubmitOnEnter: true,     // deprecated\n        isClearInputOnEsc: true,        // deprecated\n        externalTagId: false,\n        prefillIdFieldName: 'Id',\n        prefillValueFieldName: 'Value',\n        AjaxPush: null,\n        AjaxPushAllTags: null,\n        AjaxPushParameters: null,\n        delimiters: [9, 13, 44],        // tab, enter, comma\n        backspace: [8],\n        maxTags: 0,\n        hiddenTagListName: null,        // deprecated\n        hiddenTagListId: null,          // deprecated\n        replace: true,\n        output: null,\n        deleteTagsOnBackspace: true,    // deprecated\n        tagsContainer: null,\n        tagCloseIcon: 'x',\n        tagClass: '',\n        validator: null,\n        onlyTagList: false,\n        tagList: null,\n        fillInputOnTagRemove: false\n    },\n\n    publicMethods = {\n        pushTag : function (tag, ignoreEvents, externalTagId) {\n            var $self = $(this), opts = $self.data('opts'), alreadyInList, tlisLowerCase, max, tagId,\n            tlis = $self.data(\"tlis\"), tlid = $self.data(\"tlid\"), idx, newTagId, newTagRemoveId, escaped,\n            html, $el, lastTagId, lastTagObj;\n\n            tag = privateMethods.trimTag(tag, opts.delimiterChars);\n\n            if (!tag || tag.length <= 0) { return; }\n\n            // check if restricted only to the tagList suggestions\n            if (opts.onlyTagList && undefined !== opts.tagList ){\n\n                //if the list has been updated by look pushed tag in the tagList. if not found return\n                if (opts.tagList){\n                    var $tagList = opts.tagList;\n\n                    // change each array item to lower case\n                    $.each($tagList, function(index, item) {\n                        $tagList[index] = item.toLowerCase();\n                    });\n                    var suggestion = $.inArray(tag.toLowerCase(), $tagList);\n\n                    if ( -1 === suggestion ) {\n                        //console.log(\"tag:\" + tag + \" not in tagList, not adding it\");\n                        return;\n                    } \n                }\n\n            }\n\n            if (opts.CapitalizeFirstLetter && tag.length > 1) {\n                tag = tag.charAt(0).toUpperCase() + tag.slice(1).toLowerCase();\n            }\n\n            // call the validator (if any) and do not let the tag pass if invalid\n            if (opts.validator && !opts.validator(tag)) {\n                $self.trigger('tm:invalid', tag)\n                return;\n            }\n\n            // dont accept new tags beyond the defined maximum\n            if (opts.maxTags > 0 && tlis.length >= opts.maxTags) { return; }\n\n            alreadyInList = false;\n            //use jQuery.map to make this work in IE8 (pure JS map is JS 1.6 but IE8 only supports JS 1.5)\n            tlisLowerCase = jQuery.map(tlis, function(elem) {\n                return elem.toLowerCase();\n            });\n\n            idx = $.inArray(tag.toLowerCase(), tlisLowerCase);\n\n            if (-1 !== idx) {\n                // console.log(\"tag:\" + tag + \" !!already in list!!\");\n                alreadyInList = true;\n            }\n\n            if (alreadyInList) {\n                $self.trigger('tm:duplicated', tag);\n                if (opts.blinkClass) {\n                    for (var i = 0; i < 6; ++i) {\n                        $(\"#\" + $self.data(\"tm_rndid\") + \"_\" + tlid[idx]).queue(function(next) {\n                            $(this).toggleClass(opts.blinkClass);\n                            next();\n                        }).delay(100);\n                    }\n                } else {\n                    $(\"#\" + $self.data(\"tm_rndid\") + \"_\" + tlid[idx]).stop()\n                        .animate({backgroundColor: opts.blinkBGColor_1}, 100)\n                        .animate({backgroundColor: opts.blinkBGColor_2}, 100)\n                        .animate({backgroundColor: opts.blinkBGColor_1}, 100)\n                        .animate({backgroundColor: opts.blinkBGColor_2}, 100)\n                        .animate({backgroundColor: opts.blinkBGColor_1}, 100)\n                        .animate({backgroundColor: opts.blinkBGColor_2}, 100);\n                }\n            } else {\n                if (opts.externalTagId === true) {\n                    if (externalTagId === undefined) {\n                        $.error('externalTagId is not passed for tag -' + tag);\n                    }\n                    tagId = externalTagId;\n                } else {\n                    max = Math.max.apply(null, tlid);\n                    max = max === -Infinity ? 0 : max;\n\n                    tagId = ++max;\n                }\n                if (!ignoreEvents) { $self.trigger('tm:pushing', [tag, tagId]); }\n                tlis.push(tag);\n                tlid.push(tagId);\n\n                if (!ignoreEvents)\n                    if (opts.AjaxPush !== null && opts.AjaxPushAllTags == null) {\n                        if ($.inArray(tag, opts.prefilled) === -1) {\n                            $.post(opts.AjaxPush, $.extend({tag: tag}, opts.AjaxPushParameters));\n                        }\n                    }\n\n                // console.log(\"tagList: \" + tlis);\n\n                newTagId = $self.data(\"tm_rndid\") + '_' + tagId;\n                newTagRemoveId = $self.data(\"tm_rndid\") + '_Remover_' + tagId;\n                escaped = $(\"<span/>\").text(tag).html();\n\n                html = '<span class=\"' + privateMethods.tagClasses.call($self) + '\" id=\"' + newTagId + '\">';\n                html+= '<span>' + escaped + '</span>';\n                html+= '<a href=\"#\" class=\"tm-tag-remove\" id=\"' + newTagRemoveId + '\" TagIdToRemove=\"' + tagId + '\">';\n                html+= opts.tagCloseIcon + '</a></span> ';\n                $el = $(html);\n\n                if (opts.tagsContainer !== null) {\n                    $(opts.tagsContainer).append($el);\n                } else {\n                    if (tlid.length > 1) {\n                        lastTagObj = $self.siblings(\"#\" + $self.data(\"tm_rndid\") + \"_\" + tlid[tlid.length - 2]);\n                        lastTagObj.after($el);\n                    } else {\n                        $self.before($el);\n                    }\n                }\n\n                $el.find(\"#\" + newTagRemoveId).on(\"click\", $self, function(e) {\n                    e.preventDefault();\n                    var TagIdToRemove = parseInt($(this).attr(\"TagIdToRemove\"));\n                    privateMethods.spliceTag.call($self, TagIdToRemove, e.data);\n                });\n\n                privateMethods.refreshHiddenTagList.call($self);\n\n                if (!ignoreEvents) { $self.trigger('tm:pushed', [tag, tagId]); }\n\n                privateMethods.showOrHide.call($self);\n                //if (tagManagerOptions.maxTags > 0 && tlis.length >= tagManagerOptions.maxTags) {\n                //  obj.hide();\n                //}\n            }\n            $self.val(\"\");\n        },\n\n        popTag : function () {\n            var $self = $(this), tagId, tagBeingRemoved,\n            tlis = $self.data(\"tlis\"),\n            tlid = $self.data(\"tlid\");\n\n            if (tlid.length > 0) {\n              tagId = tlid.pop();\n\n              tagBeingRemoved = tlis[tlis.length - 1];\n              $self.trigger('tm:popping', [tagBeingRemoved, tagId]);\n              tlis.pop();\n\n              // console.log(\"TagIdToRemove: \" + tagId);\n              $(\"#\" + $self.data(\"tm_rndid\") + \"_\" + tagId).remove();\n              privateMethods.refreshHiddenTagList.call($self);\n              $self.trigger('tm:popped', [tagBeingRemoved, tagId]);\n              // console.log(tlis);\n            }\n        },\n\n        empty : function() {\n            var $self = $(this), tlis = $self.data(\"tlis\"), tlid = $self.data(\"tlid\"), tagId;\n\n            while (tlid.length > 0) {\n                tagId = tlid.pop();\n                tlis.pop();\n                // console.log(\"TagIdToRemove: \" + tagId);\n                $(\"#\" + $self.data(\"tm_rndid\") + \"_\" + tagId).remove();\n                privateMethods.refreshHiddenTagList.call($self);\n                // console.log(tlis);\n            }\n            $self.trigger('tm:emptied', null);\n\n            privateMethods.showOrHide.call($self);\n            //if (tagManagerOptions.maxTags > 0 && tlis.length < tagManagerOptions.maxTags) {\n            //  obj.show();\n            //}\n        },\n\n        tags : function() {\n            var $self = this, tlis = $self.data(\"tlis\");\n            return tlis;\n        }\n    },\n\n    privateMethods = {\n        showOrHide : function () {\n            var $self = this, opts = $self.data('opts'), tlis = $self.data(\"tlis\");\n\n            if (opts.maxTags > 0 && tlis.length < opts.maxTags) {\n                $self.show();\n                $self.trigger('tm:show');\n            }\n\n            if (opts.maxTags > 0 && tlis.length >= opts.maxTags) {\n                $self.hide();\n                $self.trigger('tm:hide');\n            }\n        },\n\n        tagClasses : function () {\n            var $self = $(this), opts = $self.data('opts'), tagBaseClass = opts.tagBaseClass,\n            inputBaseClass = opts.inputBaseClass, cl;\n            // 1) default class (tm-tag)\n            cl = tagBaseClass;\n            // 2) interpolate from input class: tm-input-xxx --> tm-tag-xxx\n            if ($self.attr('class')) {\n                $.each($self.attr('class').split(' '), function (index, value) {\n                    if (value.indexOf(inputBaseClass + '-') !== -1) {\n                        cl += ' ' + tagBaseClass + value.substring(inputBaseClass.length);\n                    }\n                });\n            }\n            // 3) tags from tagClass option\n            cl += (opts.tagClass ? ' ' + opts.tagClass : '');\n            return cl;\n        },\n\n        trimTag : function (tag, delimiterChars) {\n            var i;\n            tag = $.trim(tag);\n            // truncate at the first delimiter char\n            i = 0;\n            for (i; i < tag.length; i++) {\n                if ($.inArray(tag.charCodeAt(i), delimiterChars) !== -1) { break; }\n            }\n            return tag.substring(0, i);\n        },\n\n        refreshHiddenTagList : function () {\n            var $self = $(this), tlis = $self.data(\"tlis\"), lhiddenTagList = $self.data(\"lhiddenTagList\");\n\n            if (lhiddenTagList) {\n                $(lhiddenTagList).val(tlis.join($self.data('opts').baseDelimiter)).change();\n            }\n\n            $self.trigger('tm:refresh', tlis.join($self.data('opts').baseDelimiter));\n        },\n\n        killEvent : function (e) {\n            e.cancelBubble = true;\n            e.returnValue = false;\n            e.stopPropagation();\n            e.preventDefault();\n        },\n\n        keyInArray : function (e, ary) {\n            return $.inArray(e.which, ary) !== -1;\n        },\n\n        applyDelimiter : function (e) {\n            var $self = $(this);\n            publicMethods.pushTag.call($self,$(this).val());\n            e.preventDefault();\n        },\n\n        prefill: function (pta) {\n            var $self = $(this);\n            var opts = $self.data('opts')\n            $.each(pta, function (key, val) {\n                if (opts.externalTagId === true) {\n                    publicMethods.pushTag.call($self, val[opts.prefillValueFieldName], true, val[opts.prefillIdFieldName]);\n                } else {\n                    publicMethods.pushTag.call($self, val, true);\n                }\n            });\n        },\n\n        pushAllTags : function (e, tag) {\n            var $self = $(this), opts = $self.data('opts'), tlis = $self.data(\"tlis\");\n            if (opts.AjaxPushAllTags) {\n                if (e.type !== 'tm:pushed' || $.inArray(tag, opts.prefilled) === -1) {\n                    $.post(opts.AjaxPush, $.extend({ tags: tlis.join(opts.baseDelimiter) }, opts.AjaxPushParameters));\n                }\n            }\n        },\n\n        spliceTag : function (tagId) {\n            var $self = this, tlis = $self.data(\"tlis\"), tlid = $self.data(\"tlid\"), idx = $.inArray(tagId, tlid),\n            tagBeingRemoved;\n\n            // console.log(\"TagIdToRemove: \" + tagId);\n            // console.log(\"position: \" + idx);\n\n            if (-1 !== idx) {\n                tagBeingRemoved = tlis[idx];\n                $self.trigger('tm:splicing', [tagBeingRemoved, tagId]);\n                $(\"#\" + $self.data(\"tm_rndid\") + \"_\" + tagId).remove();\n                tlis.splice(idx, 1);\n                tlid.splice(idx, 1);\n                privateMethods.refreshHiddenTagList.call($self);\n                $self.trigger('tm:spliced', [tagBeingRemoved, tagId]);\n                // console.log(tlis);\n            }\n\n            privateMethods.showOrHide.call($self);\n            //if (tagManagerOptions.maxTags > 0 && tlis.length < tagManagerOptions.maxTags) {\n            //  obj.show();\n            //}\n        },\n\n        init : function (options) {\n            var opts = $.extend({}, defaults, options), delimiters, keyNums;\n\n            opts.hiddenTagListName = (opts.hiddenTagListName === null)\n                ? 'hidden-' + this.attr('name')\n                : opts.hiddenTagListName;\n\n            delimiters = opts.delimeters || opts.delimiters; // 'delimeter' is deprecated\n            keyNums = [9, 13, 17, 18, 19, 37, 38, 39, 40]; // delimiter values to be handled as key codes\n            opts.delimiterChars = [];\n            opts.delimiterKeys = [];\n\n            $.each(delimiters, function (i, v) {\n                if ($.inArray(v, keyNums) !== -1) {\n                    opts.delimiterKeys.push(v);\n                } else {\n                    opts.delimiterChars.push(v);\n                }\n            });\n\n            opts.baseDelimiter = String.fromCharCode(opts.delimiterChars[0] || 44);\n            opts.tagBaseClass = 'tm-tag';\n            opts.inputBaseClass = 'tm-input';\n\n            if (!$.isFunction(opts.validator)) { opts.validator = null; }\n\n            this.each(function() {\n                var $self = $(this), hiddenObj ='', rndid ='', albet = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\";\n\n                // prevent double-initialization of TagManager\n                if ($self.data('tagManager')) { return false; }\n                $self.data('tagManager', true);\n\n                for (var i = 0; i < 5; i++) {\n                  rndid += albet.charAt(Math.floor(Math.random() * albet.length));\n                }\n\n                $self.data(\"tm_rndid\", rndid);\n\n                // store instance-specific data in the DOM object\n                $self.data('opts',opts)\n                    .data('tlis', []) //list of string tags\n                    .data('tlid', []); //list of ID of the string tags\n\n                if (opts.output === null) {\n                    hiddenObj = $('<input/>', {\n                        type: 'hidden',\n                        name: opts.hiddenTagListName\n                    });\n                    $self.after(hiddenObj);\n                    $self.data(\"lhiddenTagList\", hiddenObj);\n                } else {\n                    $self.data(\"lhiddenTagList\", $(opts.output));\n                }\n\n                if (opts.AjaxPushAllTags) {\n                    $self.on('tm:spliced', privateMethods.pushAllTags);\n                    $self.on('tm:popped', privateMethods.pushAllTags);\n                    $self.on('tm:pushed', privateMethods.pushAllTags);\n                }\n\n                // hide popovers on focus and keypress events\n                $self.on('focus keypress', function(e) {\n                    if ($(this).popover) { $(this).popover('hide'); }\n                });\n\n                // handle ESC (keyup used for browser compatibility)\n                if (opts.isClearInputOnEsc) {\n                    $self.on('keyup', function(e) {\n                        if (e.which === 27) {\n                            // console.log('esc detected');\n                            $(this).val('');\n                            privateMethods.killEvent(e);\n                        }\n                    });\n                }\n\n                $self.on('keypress', function(e) {\n                    // push ASCII-based delimiters\n                    if (privateMethods.keyInArray(e, opts.delimiterChars)) {\n                        privateMethods.applyDelimiter.call($self, e);\n                    }\n                });\n\n                $self.on('keydown', function(e) {\n                    // disable ENTER\n                    if (e.which === 13) {\n                        if (opts.preventSubmitOnEnter) {\n                            privateMethods.killEvent(e);\n                        }\n                    }\n\n                    // push key-based delimiters (includes <enter> by default)\n                    if (privateMethods.keyInArray(e, opts.delimiterKeys)) {\n                        privateMethods.applyDelimiter.call($self, e);\n                    }\n                });\n\n                // BACKSPACE (keydown used for browser compatibility)\n                if (opts.deleteTagsOnBackspace) {\n                    $self.on('keydown', function(e) {\n                        if (privateMethods.keyInArray(e, opts.backspace)) {\n                            // console.log(\"backspace detected\");\n                            if ($(this).val().length <= 0) {\n                                publicMethods.popTag.call($self);\n                                privateMethods.killEvent(e);\n                            }\n                        }\n                    });\n                }\n\n                // on tag pop fill back the tag's content to the input field\n                if (opts.fillInputOnTagRemove) {\n                    $self.on('tm:popped', function(e, tag) {\n                        $(this).val(tag);\n                    });\n                }\n\n                $self.change(function(e) {\n                    if (!/webkit/.test(navigator.userAgent.toLowerCase())) {\n                        $self.focus();\n                    } // why?\n\n                    /* unimplemented mode to push tag on blur\n                     else if (tagManagerOptions.pushTagOnBlur) {\n                     console.log('change: pushTagOnBlur ' + tag);\n                     pushTag($(this).val());\n                     } */\n                    privateMethods.killEvent(e);\n                });\n\n                if (opts.prefilled !== null) {\n                    if (typeof (opts.prefilled) === \"object\") {\n                        privateMethods.prefill.call($self, opts.prefilled);\n                    } else if (typeof (opts.prefilled) === \"string\") {\n                        privateMethods.prefill.call($self, opts.prefilled.split(opts.baseDelimiter));\n                    } else if (typeof (opts.prefilled) === \"function\") {\n                        privateMethods.prefill.call($self, opts.prefilled());\n                    }\n                } else if (opts.output !== null) {\n                    if ($(opts.output) && $(opts.output).val()) { var existing_tags = $(opts.output); }\n                    privateMethods.prefill.call($self,$(opts.output).val().split(opts.baseDelimiter));\n                }\n\n            });\n\n            return this;\n        }\n    };\n\n    $.fn.tagsManager = function(method) {\n        var $self = $(this);\n\n        if (!(0 in this)) { return this; }\n\n        if ( publicMethods[method] ) {\n            return publicMethods[method].apply( $self, Array.prototype.slice.call(arguments, 1) );\n        } else if ( typeof method === 'object' || ! method ) {\n            return privateMethods.init.apply( this, arguments );\n        } else {\n            $.error( 'Method ' +  method + ' does not exist.' );\n            return false;\n        }\n    };\n\n}(jQuery));\n\ndefine(\"tagmanager\", [\"jquery\"], function(){});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2017, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n *\n * RequireJS module providing some general support methods for handling\n * forms and functions to build Bootstrap forms easily.\n *\n * @version 0.1.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('form',[ \"jquery\", \"config\", \"modal\", \"laconic\", \"tagmanager\" ],\n       function($, config, modal) {\n\n  var LABELWIDTH = 3;\n\n  var form = {\n    /**\n     * Serialize a form as an object. The following normalizations are\n     * performed:\n     *   - Form fields that have an empty string are ignored unless\n     *     `ignore_empty` is `true`\n     *   - The value from a `<input type=\"checkbox\">`is converted\n     *     into a JavaScript boolean.\n     *\t - The value of a tag-list is converted into a list of strings.\n     * @returns {Object} holding the name/value pairs of the form\n     */\n    serializeAsObject: function(form, ignore_empty) {\n      var arr = form.serializeArray();\n      var inset = [];\n      var obj = {};\n\n      // get arrays of checkboxes\n      form.find(\"div.checkboxes.array\").each(function() {\n\tvar elem = $(this);\n\tvar set = [];\n\n\telem.find(\"input:checked\").each(function() {\n\t  var name = $(this).attr(\"name\");\n\t  set.push(name);\n\t});\n\telem.find(\"input\").each(function() {\n\t  var name = $(this).attr(\"name\");\n\t  inset.push(name);\n\t});\n\n\tobj[elem.attr(\"name\")] = set;\n      });\n\n      for(var i=0; i<arr.length; i++) {\n\tvar name  = arr[i].name;\n\tvar value = arr[i].value;\n\tvar input = form.find('[name=\"'+name+'\"]');\n\tvar type  = input.prop(\"type\");\n\tvar jvalue;\n\n\tif ( (jvalue = input.data('json-value')) ) {\n\t  obj[name] = jvalue;\n\t} else if ( value != \"\" || ignore_empty == true ) {\n\t  // deal with tag lists\n\t  if ( type == \"hidden\" && name.indexOf(\"hidden-\") == 0 ) {\n\t    name = name.slice(\"hidden-\".length);\n\t    if ( obj[name] == undefined ) {\n\t      obj[name] = value.split(\",\");\n\t    } else {\n\t      obj[name] = value.split(\",\").concat(obj[name]);\n\t    }\n\t  } else if ( type == \"text\" && input.hasClass(\"tag-list\") ) {\n\t    if ( value != \"\" ) {\n\t      if ( obj[name] !== undefined )\n\t\tobj[name].push(value);\n\t      else\n\t\tobj[name] = [value];\n\t    }\n\t  } else if ( type == \"number\" ) {\n\t    obj[name] = parseInt(value);\n\t  } else if ( type == \"checkbox\" ) {\n\t    if ( inset.indexOf(name) == -1 )\n\t      obj[name] = (value == \"on\" ? true : false);\n\t  } else {\n\t    obj[name] = value;\n\t  }\n\t}\n      }\n\n      // unchecked checkboxes are not reported\n      form.find(\"[type=checkbox]\").each(function() {\n\tvar checkbox = $(this);\n\tvar name = checkbox.prop('name');\n\tif ( checkbox.prop(\"disabled\") != true &&\n\t     obj[name] === undefined &&\n\t     inset.indexOf(name) == -1 )\n\t  obj[name] = false;\n      });\n\n      return obj;\n    },\n\n    /**\n     * Provide feedback about problems with form elements\n     * @param form is the form to decorate\n     * @param error is a pengine error message created by lib/form.pl\n     */\n\n    formError: function(formel, error) {\n      formel.find(\".has-error\").removeClass(\"has-error\");\n      formel.find(\".help-block.with-errors\").remove();\n\n      if ( error ) {\n\tif ( error.code == \"form_error\" || error.code == \"input_error\" ) {\n\t  errors = error.data.split(\"\\n\");\n\t  for(var i=0; i<errors.length; i++) {\n\t    var el = errors[i].split(/:\\s*(.*)?/);\n\n\t    form.fieldError(formel, el[0], el[1]);\n\t  }\n\t} else\n\t{ modal.alert(error.data);\n\t}\n      }\n    },\n\n    fieldError: function(form, field, msg) {\n      var input = form.find(\"input[name=\"+field+\"]\");\n\n      if ( input.length > 0 ) {\n\tvar group = input.closest(\".form-group\");\n\n\tif ( input.parent().hasClass(\"input-group\") )\n\t  input = input.parent();\n\n\tgroup.addClass(\"has-error\");\n\tinput.after($.el.p({class:\"help-block with-errors\"}, msg));\n      } else\n      { alert(\"Missing value for \"+field);\n      }\n    },\n\n    showDialog: function(data) {\n      $(\".swish-event-receiver\").trigger(\"dialog\", data);\n    },\n\n    /**\n     * Invoke the central broadcasting of SWISH\n     * @param {String} event is the event name\n     * @param {any} [data] is the associated data\n     */\n    formBroadcast: function(event, data) {\n      $(\".swish-event-receiver\").trigger(event, data);\n    },\n\n    fields: {\n      fileName: function(name, public, example, disabled) {\n\tvar labeltext = config.swish.community_examples ? \"Public | Example | name\" : \"Public | name\"\n\tvar empty = \"(leave empty for generated random name)\"\n\tvar fork, input;\n        var elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(\"name\", labeltext),\n\t\t $.el.div({class:valgridw()},\n\t\t\t  $.el.div({class:\"input-group\"},\n\t\t\t\t   $.el.span({class:\"input-group-addon\",\n\t\t\t\t              title:\"If checked, other users can find this program\"\n\t\t\t\t             },\n\t\t\t\t\t     checkbox(\"public\",\n\t\t\t\t\t\t      { checked: public\n\t\t\t\t\t\t      })),\n\t\t\t\t   config.swish.community_examples ?\n\t\t\t\t   $.el.span({class:\"input-group-addon\",\n\t\t\t\t              title:\"If checked, add to examples menu\"\n\t\t\t\t             },\n\t\t\t\t\t     checkbox(\"example\",\n\t\t\t\t\t\t      { checked: example\n\t\t\t\t\t\t      })) : undefined,\n\t\t\t   input = textInput(\"name\",\n\t\t\t\t\t     {placeholder:\"Name \" + empty,\n\t\t\t\t\t      title:\"Public name of your program\",\n\t\t\t\t\t      value:name,\n\t\t\t\t\t      disabled:disabled}),\n\t\t\t    fork = $.el.span({class:\"input-group-btn\"\n\t\t\t\t             },\n\t\t\t\t\t     $.el.button({ class: \"btn btn-success\",\n\t\t\t\t\t\t\t   type: \"button\"\n\t\t\t\t\t\t\t }, \"Fork\"))\n\t\t\t\t  )));\n\t$(fork).on(\"click\", function() {\n\t  var btn = $(input).closest(\"form\").find(\".btn.btn-primary\");\n\t  $(input).attr(\"placeholder\", \"Fork as \" + empty);\n\t  $(input).val(\"\");\n\t  btn.text(btn.text().replace(\"Update\", \"Fork\"));\n\t});\n\treturn elem;\n      },\n\n      title: function(title) {\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(\"title\", \"Title\"),\n\t\t $.el.div({class:valgridw()},\n\t\t\t  textInput(\"title\",\n\t\t\t\t    {placeholder:\"Descriptive title\",\n\t\t\t\t     value:title})));\n\treturn elem;\n      },\n\n      /**\n       * @param {String} [identity] if provided, this indicates that the\n       * author cannot be changed.\n       */\n      author: function(author, identity) {\n\tvar options = { placeholder:\"Your name\", value:author };\n\n\tif ( author && identity ) {\n\t  options.readonly = true;\n\t  options.title    = \"Verified author name\";\n\t}\n\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(\"author\", \"Author\"),\n\t\t $.el.div({class:valgridw()},\n\t\t\t  textInput(\"author\", options)));\n\treturn elem;\n      },\n\n      date: function(stamp, labels, name) {\n\tname = name||label;\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(name, labels),\n\t\t $.el.div({class:valgridw()},\n\t\t\t  textInput(name,\n\t\t\t\t    {disabled: true,\n\t\t\t\t     value:new Date(stamp*1000).toLocaleString()\n\t\t\t\t    })));\n\treturn elem;\n      },\n\n      description: function(description) {\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(\"description\", \"Description\"),\n\t\t $.el.div({class:valgridw()},\n\t\t\t  textarea(\"description\", {value:description})));\n\treturn elem;\n      },\n\n      commit_message: function(msg) {\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(\"commit_message\", \"Changes\"),\n\t\t $.el.div({class:valgridw()},\n\t\t\t  textarea(\"commit_message\",\n\t\t\t\t   { value:msg,\n\t\t\t\t     placeholder:\"Describe your changes here\"\n\t\t\t\t   })));\n\treturn elem;\n      },\n\n      tags: function(tags) {\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(\"tags\", \"Tags\"),\n\t\t $.el.div({class:valgridw()},\n\t\t\t  tagInput(\"tags\", \"Tags help finding this code\", tags)));\n\treturn elem;\n      },\n\n      /**\n       * Provide checkboxes for determining who may save a new version\n       * of this file\n       */\n      modify: function(who, canmodify) {\n\tvar fields = [];\n\tvar opts = { name:\"modify\", label:\"Can save new version\",\n\t\t     type:\"array\"\n\t\t   };\n\n\tfunction add(key, label) {\n\t  fields.push({ name:key,\n\t\t\tlabel:label,\n\t\t\tvalue:who.indexOf(key) != -1,\n\t\t\treadonly: !canmodify\n\t\t      });\n\t}\n\n\tadd(\"any\",   \"Anyone\");\n\tadd(\"login\", \"Logged in users\");\n\tadd(\"owner\", \"Only me\");\n\n\tif ( !canmodify )\n\t  opts.title = \"Only logged in users and owners can set permissions\";\n\telse\n\t  opts.title = \"Specify who can save an updated version of this file\";\n\n\treturn form.fields.checkboxes(fields, opts);\n      },\n\n      follow: function(email) {\n\treturn form.fields.checkboxes(\n\t\t [ { name: \"follow\", label: \"Follow this document\",\n\t\t     value:!!email, readonly:!email\n\t\t   }\n\t\t ],\n\t\t { name:\"options\", label:\"\",\n\t\t   title: \"Notify about activity (updates, chat)\\n\"+\n\t\t\t  \"Requires being logged in with valid email\"\n\t\t });\n      },\n\n      projection: function(projection) {\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(\"projection\", \"Projection\"),\n\t\t $.el.div({class:valgridw()},\n\t\t\t  textInput(\"projection\",\n\t\t\t\t    {placeholder:\"Columns\", value:projection})));\n\treturn elem;\n      },\n\n      csvFormat: function(list, format) {\n\tvar elem;\n\n\tlist = list||[\"prolog\"];\n\tformat = format||list[0];\n\n\tif ( list.length == 1 ) {\n\t  elem = $.el.input({type:\"hidden\", name:\"format\", value:list[0]});\n\t} else {\n\t  elem = $.el.div({class:\"form-group\"},\n\t\t\t  label(\"format\", \"Format\"),\n\t\t\t  $.el.div({class:valgridw()},\n\t\t\t\t   select(\"format\",\n\t\t\t\t\t  list,\n\t\t\t\t\t  {value:format})));\n\t}\n\n\treturn elem;\n      },\n\n      /**\n       * Ask for limit and distinct to modify the solution set.\n       * @param {Number} [limit] is the max number of solutions to\n       * return\n       * @param {Boolean} [distinct] requests only to return distinct\n       * solutions.\n       */\n      limit: function(limit, distinct) {\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(\"name\", \"Distinct | limit\"),\n\t\t $.el.div({class:valgridw()},\n\t\t\t  $.el.div({class:\"input-group\"},\n\t\t\t\t   $.el.span({class:\"input-group-addon\",\n\t\t\t\t              title:\"If checked only return distinct results\"\n\t\t\t\t             },\n\t\t\t\t\t     checkbox(\"distinct\",\n\t\t\t\t\t\t      { checked: distinct\n\t\t\t\t\t\t      })),\n\t\t\t\t   textInput(\"limit\",\n\t\t\t\t\t     {placeholder:\"Maximum result count (blank for unlimited)\",\n\t\t\t\t\t      title:\"Limit results\",\n\t\t\t\t\t      value:limit}))));\n\treturn elem;\n      },\n\n      /**\n       * @param {Array} boxes is a list of checkbox specifications.\n       * Uses .name, .label, .value (Boolean) and .readonly\n       */\n      checkboxes: function(boxes, options) {\n\tvar boxel;\n\n\toptions = $.extend({name:\"options\", label:\"Options\", col:LABELWIDTH},\n\t\t\t   options||{});\n\n\tvar dopts = { class: \"checkboxes col-xs-\"+(12-options.col),\n\t              name:  options.name\n\t\t    };\n\tif ( options.title ) dopts.title = options.title;\n\tif ( options.type  ) dopts.class += \" \"+options.type;\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(options.name, options.label, options.col),\n\t\t boxel = $.el.div(dopts));\n\n\tfor(var k=0; k<boxes.length; k++) {\n\t  var box = boxes[k];\n\t  var opts = {type: \"checkbox\", name:box.name, autocomplete:\"false\"};\n\t  if ( box.value )\n\t    opts.checked = \"checked\";\n\t  if ( box.readonly )\n\t    opts.disabled = \"disabled\";\n\t  $(boxel).append($.el.label({class:\"checkbox-inline\"},\n\t\t\t\t     $.el.input(opts), box.label));\n\t}\n\n\treturn elem;\n      },\n\n      chunk: function(value) {\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(\"count\", \"Initial solutions\", 3),\n\t\t $.el.div({class:\"col-xs-9\"},\n\t\t\t  $.el.div({class:\"input-group\"},\n\t\t\t\t   textInput(\"chunk\",\n\t\t\t\t\t     { title:\"Initial number of solutions\",\n\t\t\t\t\t       type:\"number\",\n\t\t\t\t\t       value:value}))));\n\treturn elem;\n      },\n\n      name: function(name, col) {\n\tcol = col||3;\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(\"name\", \"Name\", col),\n\t\t $.el.div({class:\"col-xs-\"+(12-col)},\n\t\t\t  textInput(\"name\",\n\t\t\t\t    {placeholder:\"Name\",\n\t\t\t\t     value:name})));\n\treturn elem;\n      },\n\n      filename: function(name, col) {\n\tcol = col||3;\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t label(\"filename\", \"File name\", col),\n\t\t $.el.div({class:\"col-xs-\"+(12-col)},\n\t\t\t  textInput(\"filename\",\n\t\t\t\t    {placeholder:\"File name\",\n\t\t\t\t     value:name})));\n\treturn elem;\n      },\n\n      hidden: function(name, value) {\n\tif ( value !== undefined )\n\t  return $.el.input({type:\"hidden\", name:name, value:value});\n      },\n\n      /**\n       * @param {Object} options\n       * @param {String} options.label is the label used for the\n       * primary button.\n       * @param {Function} options.action is called with two arguments,\n       * the _event_ and the serialized data from the embedded form\n       * @param {Number} options.offset determines the begin column in\n       * the grid (default 2)\n       */\n      buttons: function(options) {\n\toptions    = options||{};\n\tvar label  = options.label||\"Save program\";\n\tvar offset = options.offset||LABELWIDTH;\n\tvar button = $.el.button({ name:\"save\",\n\t\t\t\t   class:\"btn btn-primary\"\n\t\t\t\t },\n\t\t\t\t label);\n\n\t$(button).on(\"click\", function(ev) {\n\t  var elem = $(ev.target).parents(\"form\")[0];\n\t  var data = form.serializeAsObject($(elem));\n\n\t  options.action(ev, data);\n\t  $(ev.target).parents(\".modal\").modal('hide');\n\t  ev.preventDefault();\n\t  return false;\n\t});\n\n\tvar elem =\n\t$.el.div({class:\"form-group\"},\n\t\t $.el.div({class:\"col-xs-offset-\"+offset+\" col-xs-\"+(12-offset)},\n\t\t\t  button,\n\t\t\t  $.el.button({name:\"cancel\",\n\t\t\t\t       class:\"btn btn-danger\",\n\t\t\t\t       'data-dismiss':\"modal\"},\n\t\t\t\t      \"Cancel\")));\n\treturn elem;\n      },\n\n      /**\n       * Bootstrap radio button.  To get the value, use\n       * `$(\"label.active > input[name=Name]\").val();\n       * @param {String} name is the name of the radio button\n       * @param {Array(Object)} buttons is an array of objects with\n       * .active, .label and .value\n       */\n      radio: function(name, buttons, type) {\n\tvar elem = $.el.div({class:\"btn-group\", \"data-toggle\":\"buttons\"});\n\ttype = type||\"radio\"\n\n\tfor(var i=0; i<buttons.length; i++) {\n\t  var cls = \"btn btn-default btn-xs\";\n\t  if ( buttons[i].active )\n\t    cls += \" active\";\n\n\t  var opts = { type:type, name:name,\n\t               autocomplete:\"off\",\n\t\t       value:buttons[i].value\n\t\t     };\n\t  var lblopts = {class:cls};\n\t  if ( buttons[i].title )\n\t    lblopts.title = buttons[i].title;\n\t  $(elem).append($.el.label(lblopts,\n\t\t\t\t    $.el.input(opts),\n\t\t\t\t    buttons[i].label));\n\t}\n\n        return elem;\n      }\n    },\n\n    widgets: {\n      glyphIcon: function(glyph) {\n\treturn $.el.span({class:\"glyphicon glyphicon-\"+glyph});\n      },\n\n      typeIcon: function(type) {\n\treturn $.el.span({class:\"dropdown-icon type-icon \"+type});\n      },\n\n      glyphIconButton: function(glyph, options) {\n\tvar attrs = {class:\"btn\", type:\"button\"};\n\n\tif ( options.action ) attrs['data-action'] = options.action;\n\tif ( options.title )  attrs.title          = options.title;\n\tif ( options.class )  attrs.class\t  += \" \"+options.class;\n\n\treturn $.el.button(attrs, form.widgets.glyphIcon(glyph));\n      },\n\n      /**\n       * Turn an icon into a dropdown button.\n       * @param {Object} options\n       * @param {Any}\t options.client is the `this` for the menu\n       *\t\t functions.\n       * @param {String} [options.divClass] additional class for the\n       * returned `div` element\n       * @param {String} [options.ulClass] additional class for the\n       * `ul` element that defines the menu.\n       * @param {Object} [options.actions] defines the menu items.\n       * this is passed to populateMenu()\n       * @returns {DIV} the downdown button\n       */\n      dropdownButton: function(icon, options) {\n\tif ( !options ) options = {};\n\tvar cls     = options.divClass;\n\tvar ulClass = options.ulClass;\n\n\tvar dropdown = $.el.div(\n\t  {class: \"btn-group dropdown\"+(cls?\" \"+cls:\"\")},\n\t  $.el.button(\n\t    {class:\"dropdown-toggle\",\n\t     \"data-toggle\":\"dropdown\"},\n\t    icon),\n\t  $.el.ul({class:\"dropdown-menu\"+(ulClass?\" \"+ulClass:\"\")}));\n\n\tif ( options.actions )\n\t  form.widgets.populateMenu($(dropdown), options.client, options.actions);\n\n\treturn dropdown;\n      },\n\n      populateMenu: function(menu, client, actions) {\n\tvar ul = menu.find(\".dropdown-menu\");\n\tvar data = ul.data(\"menu\")||{};\n\n\tfunction runMenu(ev, a) {\n\t  var action = $(a).data('action');\n\n\t  if ( action )\n\t    action.call(client, a);\n\t}\n\n\tfunction addMenuItem(label, onclick) {\n\t  if ( onclick !== undefined ) {\n\t    if ( label.indexOf(\"--\") == 0 ) {\n\t      ul.append($.el.li({class:\"divider\"}));\n\t    } else {\n\t      var a = $.el.a(label);\n\n\t      $(a).data('action', onclick);\n\t      ul.append($.el.li(a));\n\t    }\n\t  }\n\t}\n\n\tfor(var a in actions) {\n\t  if ( actions.hasOwnProperty(a) ) {\n\t    addMenuItem(a, actions[a]);\n\t  }\n\t}\n\n\tif ( !data.bound ) {\n\t  data.bound = true;\n\t  ul.on(\"click\", \"a\", function(ev) { runMenu(ev, this); } );\n\t}\n\n\tul.data(\"menu\", data);\n\n\treturn menu;\n      }\n    }\n  };\n\n\t\t /*******************************\n\t\t *\t     FUNCTIONS\t\t*\n\t\t *******************************/\n\n  function valgridw(n) {\n    if ( n === undefined ) n = LABELWIDTH;\n    return \"col-xs-\"+(12-n);\n  }\n  function colgridw(n) {\n    if ( n === undefined ) n = LABELWIDTH;\n    return \"col-xs-\"+n;\n  }\n\n  function label(elemName, text, width) {\n    width = width || LABELWIDTH;\n    return $.el.label({class:\"control-label col-xs-\"+width+\"\", for:elemName}, text);\n  }\n\n  function checkbox(name, options) {\n    var attrs = {name:name, type:\"checkbox\"};\n    options = options||{};\n    if ( options.checked ) attrs.checked = \"checked\";\n    if ( options.title   ) attrs.title\t = options.title;\n    return $.el.input(attrs);\n  }\n\n  function textInput(name, options) {\n    var attrs = {name:name, type:\"text\", class:\"form-control\"};\n    options = options||{};\n    if ( options.placeholder ) attrs.placeholder = options.placeholder;\n    if ( options.title )       attrs.title       = options.title;\n    if ( options.value )       attrs.value       = options.value;\n    if ( options.disabled )    attrs.disabled    = options.disabled;\n    if ( options.readonly )    attrs.readonly    = options.readonly;\n    if ( options.type )        attrs.type        = options.type;\n    return $.el.input(attrs);\n  }\n\n  function tagInput(name, placeholder, tags) {\n    var attrs = { name:name, type:\"text\",\n                  class:\"tm-input tag-list\"\n                };\n    if ( placeholder ) attrs.placeholder = placeholder;\n    var elem = $.el.input(attrs);\n    if ( tags )\n      $(elem).data(\"prefilled\", tags);\n    return elem;\n  }\n\n  function helpBlock(help) {\n    return $.el.p({class:\"help-block\"},\n\t\t  \"Make saved file public and give it a meaningful name\");\n  }\n\n  function textarea(name, options) {\n    var attrs = {name:name, class:\"form-control\"};\n    options = options||{};\n\n    if ( options.placeholder ) attrs.placeholder = options.placeholder;\n\n    return $.el.textarea(attrs, options.value||\"\");\n  }\n\n  /**\n   * Create a bootstrap <select> element from a list of options\n   * @param {String} name is the name of the select element\n   * @param {Array} from is an array of options. Each options is a\n   * string or an object with keys `value` and `label`.\n   * @param {Object} [options]\n   * @param {Object} [options.value] If provided, the corresponding\n   * option is selected\n   */\n\n  function select(name, from, options) {\n    var select = $($.el.select({class:\"form-control\", name:name}));\n\n    options=options||{};\n\n    function addSelect(e) {\n      if ( typeof(e) == \"string\" ) {\n\tif ( e == options.value ) {\n\t  select.append($.el.option({selected:\"selected\"}, e));\n\t} else {\n\t  select.append($.el.option(e));\n\t}\n      } else {\n\tvar opts = {value:e.value};\n\tif ( e.value == options.value )\n\t  opts.selected = \"selected\";\n\n\tselect.append($.el.option(opts, e.label));\n      }\n    }\n\n    for(var i=0; i<from.length; i++)\n      addSelect(from[i]);\n\n    return select[0];\n  }\n\n  return form;\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2015-2016, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n *\n * Manage application history. This file supports  two types of history:\n * plugin for the browser history  and  keep   track  of  issues such as\n * recently used files.\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n */\n\ndefine('history',[\"jquery\", \"preferences\", \"form\"],\n       function($, preferences, form) {\n  var history = {\n\n\t\t /*******************************\n\t\t *\t BROWSER HISTORY\t*\n\t\t *******************************/\n\n    /**\n     * Push a new entry to the browser history.\n     * FIXME: Safe history menu of the query window.\n     * FIXME: Deal with unsafed data.\n     */\n    push: function(reply) {\n      var cpath = window.location.pathname;\n\n      if ( cpath != reply.url ) {\n\tvar state = {location:reply.url};\n\n\tif ( reply.meta )\n\t  state.meta = reply.meta;\n\n\twindow.history.pushState(state, \"\", reply.url);\n\tdocument.title = \"SWISH -- \"\n                       + (reply.file ? reply.file\n\t\t\t             : \"SWI-Prolog for SHaring\");\n      }\n    },\n\n    /**\n     * Restore a previous browser history state\n     */\n    pop: function(e) {\n      if ( e.state ) {\n\tif ( e.state.meta && e.state.meta.name ) {\n\t  $(\".swish\").swish('playFile', e.state.meta.name);\n\t} else if ( e.state.location ) {\n\t  window.location =  e.state.location;\n\t}\n      }\n    },\n\n\t\t /*******************************\n\t\t *\t  RECENT DOCUMENTS\t*\n\t\t *******************************/\n\n    recentMaxLength: 10,\n\n    /**\n     * Add/refresh document to list of recent documents.\n     * @param {Object} doc\n     * @param {String} doc.id is the document _identifier_\n     * @param {String} [doc.label] is the document label for\n     * the _Open recent_ menu.  Default is the `id`.\n     * @param {String} doc.type is the type of document.\n     * A document of a specific type is opened by calling\n     * `history.openRecent.type.call(event, doc)`\n     */\n\n    addRecent: function(doc) {\n      var recent = preferences.getVal(\"recentDocuments\")||[];\n\n      function equalDocument(d1, d2) {\n\treturn d1.type == d2.type && d1.id == d2.id;\n      }\n\n      for(var i=0; i<recent.length; i++) {\n\tif ( equalDocument(doc, recent[i]) ) {\n\t  recent.splice(i,1);\n\t  break;\n\t}\n      }\n      while ( recent.length+1 > history.recentMaxLength )\n\trecent.pop();\n      recent.splice(0,0,doc);\n\n      preferences.setVal(\"recentDocuments\", recent);\n    },\n\n    openRecent: function(ev, doc) {\n      return history.openRecent[doc.st_type](ev, doc);\n    },\n\n    /**\n     * Fill a (navbar) <ul> with <li><a> elements, where\n     * each <a> carries the related entry as `data('document')`\n     */\n    updateRecentUL: function() {\n      var ul = $(this);\n      var recent = preferences.getVal(\"recentDocuments\")||[];\n\n      ul.html(\"\");\n      for(var i=0; i<recent.length; i++) {\n\tvar e = recent[i];\n\n\tif ( e.id ) {\n\t  var a = $.el.a(form.widgets.typeIcon(e.id.split(\".\").pop()),\n\t\t\t e.label||e.id);\n\n\t  $(a).data('document', e);\n\t  ul.append($.el.li(a));\n\t}\n      }\n    }\n  };\n\n  /**\n   * Open recent \"gitty\" document\n   */\n  history.openRecent.gitty = function(ev, doc) {\n    $(ev.target).parents(\".swish\").swish('playFile', doc.id);\n  };\n\n  window.onpopstate = history.pop;\n\n  return history;\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2016, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n *\n * Small utilities\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n */\n\ndefine('utils',[\"jquery\"],\n       function($) {\n\n  var utils = {\n    /**\n     * @param   {String} text is the text to be encoded\n     * @returns {String} HTML encoded version of text\n     */\n    htmlEncode: function(text) {\n      if ( !text ) return \"\";\n      return document.createElement('a')\n                     .appendChild(document.createTextNode(text))\n\t\t     .parentNode\n\t\t     .innerHTML;\n    },\n\n    /**\n     * @returns {String} (random) UUID\n     */\n    generateUUID: function() {\n      var d = new Date().getTime();\n      var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'\n\t.replace(/[xy]/g, function(c) {\n\t  var r = (d + Math.random()*16)%16 | 0;\n\t  d = Math.floor(d/16);\n\t  return (c=='x' ? r : (r&0x7|0x8)).toString(16);\n\t});\n      return uuid;\n    },\n\n    flash: function(obj) {\n      obj.addClass(\"flash\");\n      setTimeout(function() { obj.removeClass(\"flash\"); }, 1500);\n    }\n  }\n\n  if (typeof String.prototype.startsWith != 'function') {\n    String.prototype.startsWith = function(str) {\n      return this.lastIndexOf(str, 0) === 0;\n    };\n  }\n\n  return utils;\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2016-2017, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Deal with cooperation\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('chat',[ \"jquery\", \"config\", \"preferences\", \"form\", \"modal\", \"utils\" ],\n       function($, config, preferences, form, modal, utils) {\n\nvar MIN_RECONNECT_DELAY =   1000;\nvar MAX_RECONNECT_DELAY = 300000;\n\n(function($) {\n  var pluginName = 'chat';\n  var reconnect_delay = MIN_RECONNECT_DELAY;\n  var last_open = null;\n\n  /** @lends $.fn.chat */\n  var methods = {\n    _init: function(options) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = {};\t\t\t/* private data */\n\n\telem.data(pluginName, data);\t/* store with element */\n\n\t/* add event handling */\n\telem.on(\"click\", function(ev) {\n\t  var li = $(ev.target).closest(\"li.user\");\n\n\t  if ( li.length == 1 )\n\t    elem.chat('unnotify', li.attr(\"id\"));\n\t});\n\telem.on(\"send\", function(ev, msg) {\n\t  elem.chat('send', msg);\n\t});\n\t$(window).bind(\"beforeunload\", function() {\n\t  elem.chat('disconnect');\n\t});\n\n\t/* setup websocket */\n\tif ( config.swish.chat ) {\n\t  elem.chat('connect');\n\t}\n      });\n    },\n\n\t\t /*******************************\n\t\t *\t      WEBSOCKET\t\t*\n\t\t *******************************/\n\n    /**\n     * Create a websocket connection to /chat on the SWISH server.\n     */\n    connect: function() {\n      var elem = this;\n      var data = this.data(pluginName);\n      var url  = window.location.host + config.http.locations.swish_chat;\n      var lead = \"?\";\n      var ws = window.location.protocol.replace(\"http\", \"ws\");\n\n      if ( data.connection && data.connection.readyState == 1 )\n\treturn this;\t\t\t/* already connected */\n\n      function add_pref_param(name, pname) {\n\tvar value = preferences.getVal(pname);\n\n\tif ( value ) {\n\t  if ( pname == \"anon-avatar\" ) {\n\t    /* hack to deal with possibly rebased server */\n\t    value = config.http.locations.avatar+value.split(\"/\").pop();\n\t  }\n\n\t  url += lead + name + \"=\" + encodeURIComponent(value);\n\t  lead = \"&\";\n\t}\n      }\n\n      add_pref_param(\"avatar\",   \"anon-avatar\");\n      add_pref_param(\"nickname\", \"nick-name\");\n\n      if ( data.reconnect ) {\t\t\t/* reconnecting */\n\turl += lead + \"reconnect\" + \"=\" + encodeURIComponent(data.reconnect);\n\tlead = \"&\";\n      }\n\n      data.connection = new WebSocket(ws + \"//\" + url,\n\t\t\t\t      ['v1.chat.swish.swi-prolog.org']);\n\n      data.connection.onerror = function(error) {\n\telem.chat('userCount', undefined);\n      };\n      data.connection.onclose = function(ev) {\n\tif ( last_open == null ) {\n\t  reconnect_delay *= 2;\n\t  if ( reconnect_delay > MAX_RECONNECT_DELAY )\n\t    reconnect_delay = MAX_RECONNECT_DELAY;\n\t} else {\n\t  if ( getTime() - last_open > 300000 )\n\t  { reconnect_delay = MIN_RECONNECT_DELAY;\n\t  } else\n\t  { reconnect_delay *= 2;\n\t    if ( reconnect_delay > MAX_RECONNECT_DELAY )\n\t      reconnect_delay = MAX_RECONNECT_DELAY;\n\t  }\n\t}\n\tsetTimeout(function() {\n\t  elem.chat('connect');\n\t}, reconnect_delay);\n      };\n      data.connection.onmessage = function(e) {\n\tvar msg = JSON.parse(e.data);\n\tmsg.origin = e.origin;\n\tif ( msg.type )\n\t  elem.chat(msg.type, msg);\n\telse\n\t  console.log(e);\n      };\n      data.connection.onopen = function() {\n      };\n    },\n\n    empty_queue: function() {\n      var data = this.data(pluginName);\n\n      while( data.queue &&\n\t     data.queue.length > 0\n\t     && data.connection.readyState == 1 ) {\n\tvar str = data.queue.shift();\n\tdata.connection.send(str);\n      }\n    },\n\n    disconnect: function() {\n      var data = this.data(pluginName);\n\n      this.chat('send', {type: \"unload\"});\n      data.connection.onclose = function(){};\n      data.connection.close();\n      data.connection = undefined;\n\n      return this;\n    },\n\n\n\t\t /*******************************\n\t\t *\t   BASIC MESSAGES\t*\n\t\t *******************************/\n\n    /**\n     * @param {Object} msg is the JSON object to broadcast\n     */\n    send: function(msg) {\n      var data = this.data(pluginName);\n\n      if ( data && data.connection ) {\n\tvar str = JSON.stringify(msg);\n\n\tif ( data.connection.readyState != 1 ) {\n\t  if ( !data.queue )\n\t    data.queue = [str];\n\t  else\n\t    data.queue.push(str);\n\t  this.chat('connect');\n\t} else {\n\t  data.connection.send(str);\n\t}\n      }\n\n      return this;\n    },\n\n    subscribe: function(channel, sub_channel) {\n      var msg = { type: \"subscribe\", channel: channel };\n\n      if ( sub_channel )\n\tmsg.sub_channel = sub_channel;\n\n      this.chat('send', msg);\n    },\n\n    unsubscribe: function(channel, subchannel) {\n      var msg = { type: \"unsubscribe\", channel: channel };\n\n      if ( sub_channel )\n\tmsg.sub_channel = sub_channel;\n\n      this.chat('send', msg);\n    },\n\n\t\t /*******************************\n\t\t *\t      ACTIONS\t\t*\n\t\t *******************************/\n\n    /**\n     * The welcome message is sent by SWISH immediately after opening\n     * the websocket connection.  It provides the session UID for this\n     * user\n     */\n    welcome: function(e) {\n      var data = this.data(pluginName);\n\n      if ( data.wsid && data.wsid != e.wsid ) {\n\tthis.html(\"\");\t\t\t\t/* server restart? */\n      }\n\n      data.wsid = e.wsid;\n      data.reconnect = e.reconnect;\t\t/* reconnection token */\n      if ( e.avatar && e.avatar_source == 'generated' )\n\tpreferences.setVal(\"anon-avatar\", e.avatar);\n      e.role = \"self\";\n\n      var li = this.chat('addUser', e);\n      $(li).addClass(\"myself\");\n      this.chat('userCount', e.visitors);\n      last_open = getTime();\n\n      if ( e.check_login )\n\t$(\"#login\").login('update', \"check\");\n      $(\".storage\").storage('chat_status');\n      this.chat('empty_queue');\n    },\n\n    userCount: function(cnt) {\n      var elem = $(\"#user-count\");\n\n      if ( cnt == undefined ) {\n\telem.parent().hide();\n      } else {\n\telem.parent().show();\n\telem.text(cnt);\n      }\n    },\n\n    /**\n     * Replied when opening SWISH on a file to inform\n     * the new user about existing visitors to same\n     * files as are open in the current SWISH.  See\n     * inform_newby_about_existing_gazers/2.\n     */\n    gazers: function(e) {\n      if ( e.gazers ) {\n\tfor(var i=0; i<e.gazers.length; i++) {\n\t  var gazer = e.gazers[i];\n\t  this.chat('addUser', gazer);\n\t  if ( gazer.file )\n\t    this.chat('addUserFile', gazer.wsid, gazer.file);\n\t}\n      }\n    },\n\n    /**\n     * Replied if the profile associated with a visitor changes.  A\n     * key `reason` carries the reason for the change.\n     */\n\n    profile: function(e) {\n      var li = $(\"#\"+e.wsid);\n\n      li.children(\"a\").html(\"\").append(avatar(e));\n      if ( e.avatar ) {\n\t$(\"*[data-userid=\"+e.wsid+\"] img.avatar\").attr(\"src\", e.avatar);\n\tif ( e.avatar_source == 'generated' )\n\t  preferences.setVal(\"anon-avatar\", e.avatar);\n      }\n\n      if ( e.name ) {\n\tli.prop('title', e.name);\n\tif ( e.reason == 'set-nick-name' ) {\n\t  e.html = \"Named <i>\"+utils.htmlEncode(e.name)+\"</i>\";\n\t  this.chat('notifyUser', e);\n\t}\n      }\n    },\n\n    /**\n     * A user has rejoined. This is the case if we lost the\n     * connection and the connection was re-established.\n     */\n    rejoined: function(e) {\n      var avatars = $(\"#\"+e.wsid);\n\n      this.chat('lost', avatars, false);\n      if ( e.visitors )\n\tthis.chat('userCount', e.visitors);\n    },\n\n    /**\n     * A new user has joined.\n     */\n    joined: function(e) {\n      if ( e.visitors )\n\tthis.chat('userCount', e.visitors);\n    },\n\n    session_closed: function() {\n      $(\"#login\").login('update', \"session-closed\");\n    },\n\n    /**\n     * Display a notification by some user.\n     */\n    notify: function(e) {\n      this.chat('notifyUser', e);\n    },\n\n    /**\n     * Add incomming chat messages to the chatroom.  If there is no\n     * chatroom we should warn/open it\n     */\n    'chat-message': function(e) {\n      var rooms = $(\"div.chatroom\").chatroom('rooms', e.docid);\n\n      $(\".storage\").storage('chat_message', e);\n\n      if ( e.docid == \"gitty:\"+config.swish.hangout ) {\n\t$(\"#broadcast-bell\").chatbell('chat-message', e);\n      }\n\n      if ( rooms.length > 0 ) {\n\trooms.chatroom('add', e);\n\te.displayed = true;\n      } else {\n\tif ( $(\"#\"+e.user.id).length > 0 ) {\n\t  msg = $.extend({}, e);\n\t  msg.wsid = e.user.id;\n\t  msg.html = \"Wants to chat\";\n\t  this.chat('notifyUser', msg);\n\t}\n      }\n    },\n\n    /**\n     * Some action was forbidden\n     */\n\n     forbidden: function(e) {\n       modal.alert(e.message||\"Action is forbidden\");\n     },\n\n    /**\n     * Indicate we have read all messages upto a certain time stamp.\n     * @param {String} docid is the document id for which we should\n     * update the counter.\n     * @param {Number} time is the time of the last message read\n     * (seconds after 1/1/1970)\n     */\n    read_until: function(docid, time) {\n      preferences.setDocVal(docid, 'chatBar', time);\n    },\n\n\n\t\t /*******************************\n\t\t *\t        UI\t\t*\n\t\t *******************************/\n\n    /**\n     * Get the broadcast room\n     */\n     broadcast_room: function() {\n      return this.closest(\".swish\")\n                 .find(\".storage\")\n                 .storage('match', {file:config.swish.hangout});\n    },\n\n    /**\n     * Present a notification associated with a user. We do not\n     * add a user icon for open and close on the broadcast room if\n     * we do not have this open when the message arrives.\n     */\n    notifyUser: function(options) {\n      var elem = this;\n\n      function isBroadcast(options) {\n\treturn ( ( options.event == 'opened' ||\n\t\t   options.event == 'closed' ) &&\n\t\t options.event_argv &&\n\t\t options.event_argv[0] == config.swish.hangout\n\t       );\n      }\n\n      if ( isBroadcast(options) && !this.chat('broadcast_room') )\n\toptions.create_user = false;\n\n      var user_li = this.chat('addUser', options);\n\n      if ( user_li && user_li.length > 0 ) {\n\toptions.onremove = function() {\n\t  elem.chat('unnotify', options.wsid);\n\t};\n\tmodal.notify(user_li, options);\n\n\tthis.chat('updateFiles', options);\n      }\n    },\n\n    unnotify: function(wsid) {\n      if ( $(\"#\"+wsid).hasClass(\"removed\") )\n\tthis.chat('removeUser', wsid);\n\n      return this;\n    },\n\n    updateFiles: function(options) {\n      var data = $(this).data(pluginName);\n\n      function file() {\n\treturn options.event_argv[0];\n      }\n\n      if ( options.event == \"opened\" ) {\n\tthis.chat('addUserFile', options.wsid, file());\n      } else if ( options.event == \"closed\" ) {\n\tvar wsid = options.wsid == data.wsid ? undefined : options.wsid;\n\tthis.chat('removeUserFile', wsid, file(), true);\n      }\n    },\n\n    /**\n     * Return or add a user to the notification area.\n     * @param {Object} options\n     * @param {String} options.wsid Identifier for the user (a UUID)\n     * @param {String} [options.name] is the name of the user\n     * @returns {jQuery} the `li` element representing the user\n     */\n    addUser: function(options) {\n      var li = $(\"#\"+options.wsid);\n\n      if ( li.length == 0 )\n      { if ( options.create_user != false ) {\n\t  li = $(li_user(options.wsid, options));\n\t  this.prepend(li);\n        } else {\n\t  return null;\n\t}\n      } else {\n\tthis.chat('lost', li, false);\n      }\n\n      return li;\n    },\n\n    /**\n     * Remove a user avatar.  If a notification is pending we delay\n     * removal until the notification times out\n     */\n    removeUser: function(wsid) {\n      if ( typeof wsid == \"string\" ) {\n\twsid = {wsid:wsid};\n      }\n\n      if ( wsid.visitors !== undefined )\n\tthis.chat('userCount', wsid.visitors);\n      var li = $(\"#\"+wsid.wsid);\n      if ( li.length == 0 )\n\treturn this;\n\n      if ( wsid.reason != \"close\" ) {\n\tif ( $(\"#ntf-\"+wsid.wsid).length > 0 )\t/* notification pending */\n\t  li.addClass(\"removed\");\n\telse\n\t  li.hide(400, function() {this.remove();});\n      } else {\t\t\t\t\t/* connection was lost */\n\tthis.chat('lost', li, true);\n      }\n\n      return this;\n    },\n\n    /**\n     * Set/clear lost-connection state of users.\n     * @param {jQuery} li set of items to set/clear\n     * @param {Boolean} lost is `true` if we lost the connection\n     */\n    lost: function(li, lost) {\n      if ( lost ) {\n\tli.addClass(\"lost\");\n      } else {\n\tli.removeClass(\"lost\");\n      }\n\n      li.each(function() {\n\tvar elem = $(this);\n\tif ( lost ) {\n\t  elem.data('lost-timer',\n\t\t    setTimeout(function() {\n\t\t      if ( li.hasClass(\"lost\") )\n\t\t\tli.remove();\n\t\t    }, 60000));\n\t} else {\n\t  var tmo = elem.data('lost-timer');\n\t  if ( tmo ) {\n\t    clearTimeout(tmo);\n\t    elem.data('lost-timer', undefined);\n\t  }\n\t}\n      });\n    },\n\n    /**\n     * Get info about a specific user.\n     * @param {Array} [fields] lists the keys we want to have in the\n     * user objects.  Default is all we have.\n     */\n    user_info: function(fields) {\n      var li = $(this);\n      var user = {};\n\n      if ( !fields || fields.indexOf('id') >= 0 ) {\n\tuser.id = li.attr(\"id\");\n      }\n      if ( !fields || fields.indexOf('name') >= 0 ) {\n\tvar name = li.prop(\"title\");\n\tif ( name && name !== \"Me\" )\n\t  user.name = name;\n      }\n      if ( !fields || fields.indexOf('avatar') >= 0 ) {\n\tuser.avatar = li.find(\"img.avatar\").attr(\"src\");\n      }\n\n      return user;\n    },\n\n    /**\n     * Get the set of visible users.  The return is an object holding\n     * a key `self` and a key `users` bound to an array of users.\n     * `self` points to the user of this browser.  Self always has\n     * all keys\n     */\n    users: function(fields) {\n      var users = [];\n      var rc = {users:users};\n\n      this.find(\"li.user[id]\").each(function() {\n\tvar elem = $(this);\n\tvar self = elem.hasClass(\"myself\");\n\tvar user = elem.chat('user_info', self ? undefined : fields);\n\n\tif ( self ) {\n\t  rc.self = $.extend({}, user);\n\t  user.is_self = true;\n\t}\n\n\tusers.push(user);\n      });\n\n      return rc;\n    },\n\n    /**\n     * Get info on the _self_ user.\n     */\n    self: function(fields) {\n      var li = this.find(\"li.user.myself[id]\");\n\n      return li.chat('user_info', fields);\n    },\n\n    /**\n     * Browser `wsid` has opened `file`\n     */\n    addUserFile: function(wsid, file) {\n      var li = $(\"#\"+wsid);\n      var ul = li.find(\"ul.dropdown-menu\");\n      var fli;\n\n      ul.find(\"li.file\").each(function() {\n\tif ( $(this).data(\"file\") == file ) {\n\t  fli = this;\n\t  return false;\n\t}\n      });\n\n      if ( fli == undefined ) {\n\tvar type = file.split(\".\").pop();\n\tul.append(\n\t  $.el.li({class:\"file\", \"data-file\":file, title:\"Shared file\"},\n\t\t  $.el.a($.el.span({class: \"dropdown-icon type-icon \"+type}),\n\t\t\t file)));\n      }\n\n      return this;\n    },\n\n    /**\n     * Remove a file associated with the user wsid.\n     * @param {String} [wsid] User for which to remove file.  If\n     * `undefined`, remove file for all users.\n     * @param {Boolean} [user_too] if `true', remove the user if\n     * the set of files becomes empty and this is not `myself`.\n     */\n    removeUserFile: function(wsid, file, user_too) {\n      var elem = this;\n\n      function removeFile(user_li) {\n\tvar ul = user_li.children(\"ul.dropdown-menu\");\n\n\tul.find(\"li.file\").each(function() {\n\t  if ( $(this).data(\"file\") == file ) {\n\t    $(this).remove();\n\t    if ( user_too &&\n\t\t !user_li.hasClass(\"myself\") &&\n\t\t ul.find(\"li.file\").length == 0 )\n\t      elem.chat('removeUser', user_li.attr(\"id\"));\n\t    return false;\n\t  }\n\t});\n      }\n\n      if ( wsid ) {\n\tremoveFile($(\"#\"+wsid));\n      } else {\n\tthis.children().each(function() {\n\t  removeFile($(this), file, user_too);\n\t});\n      }\n    }\n  }; // methods\n\n  // Private functions\n\n  /**\n   * Add an entry for a user to the notification area\n   */\n  function li_user(id, options) {\n    options = options||{};\n    var ul;\n    var a;\n    var name = options.name;\n\n    if ( !name && options.role == \"self\" )\n      name = \"Me\";\n    if ( !name )\n      name = id;\n\n    var li = $.el.li({class:\"dropdown user\", id:id, title:name},\n\t\t   a=$.el.a({ class:\"dropdown-toggle avatar\",\n\t\t\t      'data-toggle':\"dropdown\"\n\t\t\t    },\n\t\t\t    avatar(options)),\n\t\t  ul=$.el.ul({ class:\"dropdown-menu pull-right\",\n\t\t\t       title:\"\"\n\t\t\t     }));\n\n    if ( options.role == \"self\" ) {\n      $(a).append($.el.b({class:\"caret\"}));\n\n      var input = $.el.input({ type:\"text\",\n\t\t\t       placeholder:\"Nick name\",\n\t\t\t       value:options.name||\"\",\n\t\t\t       title:\"Nick name\"\n\t\t\t     });\n      ul.append($.el.li(input));\n      $(input).keypress(function(ev) {\n\tif ( ev.which == 13 ) {\n\t  var name = $(input).val().trim();\n\n\t  if ( name != \"\" ) {\n\t    $(\"#chat\").trigger('send',\n\t\t\t       { type:'set-nick-name',\n\t\t\t\t name: name\n\t\t\t       });\n\t    preferences.setVal(\"nick-name\", name);\n\t  }\n\t  $(input).closest('.dropdown.open').removeClass('open');\n\t}\n      });\n\n      form.widgets.populateMenu($(li), $(\"#chat\"), {\n/*\t\"Chat ...\": function() {\n\t  this.chat('start_chat');\n\t}\n*/\n      });\n\n      ul.append($.el.li({class:\"divider\"}));\n    }\n\n    return li;\n  }\n\n  function avatar(options) {\n    if ( options.avatar ) {\n      return $.el.img({ class:\"avatar\", src:options.avatar\n\t\t      });\n    } else {\n      return $.el.span({class:\"avatar glyphicon glyphicon-user\"})\n    }\n  }\n\n  /**\n   * @return {Number} time since 1/1/1970 in milliseconds\n   */\n  function getTime() {\n    var d = new Date();\n    return d.getTime();\n  }\n\n  /**\n   * <Class description>\n   *\n   * @class chat\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.chat = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n});\n\n","/*!\n * JQuery Spliter Plugin\n * Copyright (C) 2010-2013 Jakub Jankiewicz <http://jcubic.pl>\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n */\n(function($, undefined) {\n    var count = 0;\n    var splitter_id = null;\n    var splitters = [];\n    var current_splitter = null;\n    $.fn.split = function(options) {\n        var data = this.data('splitter');\n        if (data) {\n            return data;\n        }\n        var panel_1;\n        var panel_2;\n        var settings = $.extend({\n            limit: 100,\n            orientation: 'horizontal',\n            position: '50%',\n            invisible: false,\n            onDragStart: $.noop,\n            onDragEnd: $.noop,\n            onDrag: $.noop\n        }, options || {});\n        this.settings = settings;\n        var cls;\n        var children = this.children();\n        if (settings.orientation == 'vertical') {\n            panel_1 = children.first().addClass('left_panel');\n            panel_2 = panel_1.next().addClass('right_panel');\n            cls = 'vsplitter';\n        } else if (settings.orientation == 'horizontal') {\n            panel_1 = children.first().addClass('top_panel')\n            panel_2 = panel_1.next().addClass('bottom_panel');\n            cls = 'hsplitter';\n        }\n        if (settings.invisible) {\n            cls += ' splitter-invisible';\n        }\n        var width = this.width();\n        var height = this.height();\n        var id = count++;\n        this.addClass('splitter_panel');\n        var splitter = $('<div/>').addClass(cls).bind('mouseenter touchstart', function() {\n            splitter_id = id;\n        }).bind('mouseleave touchend', function() {\n            splitter_id = null;\n        }).insertAfter(panel_1);\n        var position;\n\n        function get_position(position) {\n            if (typeof position === 'number') {\n                return position;\n            } else if (typeof position === 'string') {\n                var match = position.match(/^([0-9\\.]+)(px|%)$/);\n                if (match) {\n                    if (match[2] == 'px') {\n                        return +match[1];\n                    } else {\n                        if (settings.orientation == 'vertical') {\n                            return (width * +match[1]) / 100;\n                        } else if (settings.orientation == 'horizontal') {\n                            return (height * +match[1]) / 100;\n                        }\n                    }\n                } else {\n                    //throw position + ' is invalid value';\n                }\n            } else {\n                //throw 'position have invalid type';\n            }\n        }\n\n        var self = $.extend(this, {\n            refresh: function() {\n                var new_width = this.width();\n                var new_height = this.height();\n                if (width != new_width || height != new_height) {\n                    width = this.width();\n                    height = this.height();\n                    self.position(position);\n                }\n            },\n            position: (function() {\n                if (settings.orientation == 'vertical') {\n                    return function(n, silent) {\n                        if (n === undefined) {\n                            return position;\n                        } else {\n                            position = get_position(n);\n                            var sw = splitter.width();\n                            var sw2 = sw/2;\n                            if (settings.invisible) {\n                                var pw = panel_1.width(position).outerWidth();\n                                panel_2.width(self.width()-pw);\n                                splitter.css('left', pw-sw2);\n                            } else {\n                                var pw = panel_1.width(position-sw2).outerWidth();\n                                panel_2.width(self.width()-pw-sw);\n                                splitter.css('left', pw);\n                            }\n                        }\n                        if (!silent) {\n                            self.find('.splitter_panel').trigger('splitter.resize');\n                        }\n                        return self;\n                    };\n                } else if (settings.orientation == 'horizontal') {\n                    return function(n, silent) {\n                        if (n === undefined) {\n                            return position;\n                        } else {\n                            position = get_position(n);\n                            var sw = splitter.height();\n                            var sw2 = sw/2;\n                            if (settings.invisible) {\n                                var pw = panel_1.height(position).outerHeight();\n                                panel_2.height(self.height()-pw);\n                                splitter.css('top', pw-sw2);\n                            } else {\n                                var pw = panel_1.height(position-sw2).outerHeight();\n                                panel_2.height(self.height()-pw-sw);\n                                splitter.css('top', pw);\n                            }\n                        }\n                        if (!silent) {\n                            self.find('.splitter_panel').trigger('splitter.resize');\n                        }\n                        return self;\n                    };\n                } else {\n                    return $.noop;\n                }\n            })(),\n            orientation: settings.orientation,\n            limit: settings.limit,\n            isActive: function() {\n                return splitter_id === id;\n            },\n            destroy: function() {\n                self.removeClass('splitter_panel');\n                splitter.unbind('mouseenter');\n                splitter.unbind('mouseleave');\n                splitter.unbind('touchstart');\n                splitter.unbind('touchmove');\n                splitter.unbind('touchend');\n                splitter.unbind('touchleave');\n                splitter.unbind('touchcancel');\n                if (settings.orientation == 'vertical') {\n                    panel_1.removeClass('left_panel');\n                    panel_2.removeClass('right_panel');\n                } else if (settings.orientation == 'horizontal') {\n                    panel_1.removeClass('top_panel');\n                    panel_2.removeClass('bottom_panel');\n                }\n                self.unbind('splitter.resize');\n                self.find('.splitter_panel').trigger('splitter.resize');\n                splitters[id] = null;\n                splitter.remove();\n                var not_null = false;\n                for (var i=splitters.length; i--;) {\n                    if (splitters[i] !== null) {\n                        not_null = true;\n                        break;\n                    }\n                }\n                //remove document events when no splitters\n                if (!not_null) {\n                    $(document.documentElement).unbind('.splitter');\n                    $(window).unbind('resize.splitter');\n                    self.data('splitter', null);\n                    splitters = [];\n                    count = 0;\n                }\n            }\n        });\n        self.bind('splitter.resize', function(e) {\n            var pos = self.position();\n            if (self.orientation == 'vertical' &&\n                pos > self.width()) {\n                pos = self.width() - self.limit-1;\n            } else if (self.orientation == 'horizontal' &&\n                       pos > self.height()) {\n                pos = self.height() - self.limit-1;\n            }\n            if (pos < self.limit) {\n                pos = self.limit + 1;\n            }\n            self.position(pos, true);\n        });\n        //inital position of splitter\n        var pos;\n        if (settings.orientation == 'vertical') {\n            if (pos > width-settings.limit) {\n                pos = width-settings.limit;\n            } else {\n                pos = get_position(settings.position);\n            }\n        } else if (settings.orientation == 'horizontal') {\n            //position = height/2;\n            if (pos > height-settings.limit) {\n                pos = height-settings.limit;\n            } else {\n                pos = get_position(settings.position);\n            }\n        }\n        if (pos < settings.limit) {\n            pos = settings.limit;\n        }\n        self.position(pos, true);\n        if (splitters.length == 0) { // first time bind events to document\n            $(window).bind('resize.splitter', function() {\n                $.each(splitters, function(i, splitter) {\n                    if ( splitter ) splitter.refresh();\n                });\n            });\n            $(document.documentElement).bind('mousedown.splitter touchstart.splitter', function(e) {\n                if (splitter_id !== null) {\n                    current_splitter = splitters[splitter_id];\n                    $('<div class=\"splitterMask\"></div>').css('cursor', current_splitter.children().eq(1).css('cursor')).insertAfter(current_splitter);\n                    current_splitter.settings.onDragStart(e);\n                    return false;\n                }\n            }).bind('mouseup.splitter touchend.splitter touchleave.splitter touchcancel.splitter', function(e) {\n                if (current_splitter) {\n                    $('.splitterMask').remove();\n                    current_splitter.settings.onDragEnd(e);\n                    current_splitter = null;\n                }\n            }).bind('mousemove.splitter touchmove.splitter', function(e) {\n                if (current_splitter !== null) {\n                    var limit = current_splitter.limit;\n                    var offset = current_splitter.offset();\n                    if (current_splitter.orientation == 'vertical') {\n                        var pageX = e.pageX;\n                        if(e.originalEvent && e.originalEvent.changedTouches){\n                          pageX = e.originalEvent.changedTouches[0].pageX;\n                        }\n                        var x = pageX - offset.left;\n                        if (x <= current_splitter.limit) {\n                            x = current_splitter.limit + 1;\n                        } else if (x >= current_splitter.width() - limit) {\n                            x = current_splitter.width() - limit - 1;\n                        }\n                        if (x > current_splitter.limit &&\n                            x < current_splitter.width()-limit) {\n                            current_splitter.position(x, true);\n                            current_splitter.find('.splitter_panel').\n                                trigger('splitter.resize');\n                            e.preventDefault();\n                        }\n                    } else if (current_splitter.orientation == 'horizontal') {\n                        var pageY = e.pageY;\n                        if(e.originalEvent && e.originalEvent.changedTouches){\n                          pageY = e.originalEvent.changedTouches[0].pageY;\n                        }\n                        var y = pageY-offset.top;\n                        if (y <= current_splitter.limit) {\n                            y = current_splitter.limit + 1;\n                        } else if (y >= current_splitter.height() - limit) {\n                            y = current_splitter.height() - limit - 1;\n                        }\n                        if (y > current_splitter.limit &&\n                            y < current_splitter.height()-limit) {\n                            current_splitter.position(y, true);\n                            current_splitter.find('.splitter_panel').\n                                trigger('splitter.resize');\n                            e.preventDefault();\n                        }\n                    }\n                    current_splitter.settings.onDrag(e);\n                }\n            });\n        }\n        splitters.push(self);\n        self.data('splitter', self);\n        return self;\n    };\n})(jQuery);\n\ndefine(\"splitter\", [\"jquery\"], function(){});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2016, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Deal with subwindow layout\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('pane',[ \"jquery\", \"splitter\" ],\n       function() {\n\n(function($) {\n  var pluginName = 'tile';\n\n  /** @lends $.fn.tile */\n  var methods = {\n    /**\n     * @param {Object} [options] currently ignored\n     */\n    _init: function(options) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar dir   = elem.hasClass(\"horizontal\") ? \"vertical\" : \"horizontal\";\n\tvar pos   = elem.attr(\"data-split\");\n\tvar panes = elem.children();\n\n\tpos = pos||\"50%\";\n\n\tpanes.each(function() {\n\t  $(this).wrap('<div class=\"pane-wrapper\"></div>')\n\t});\n\telem.addClass(\"pane-container\");\n\telem.split({ orientation:dir,\n\t             position:pos,\n\t\t     limit:10,\n\t\t     onDragStart: function() { elem.tile('resize_start'); },\n\t\t     onDrag: function(ev) { panes.trigger(\"pane.resize\"); },\n\t\t     onDragEnd: function() { elem.tile('resize_save'); }\n\t           });\n\telem.tile('resize_save');\n\n\telem.on('fullscreen', function(ev, val) {\n\t  elem.tile('resize');\n\t});\n      });\n    },\n\n    resize_start: function() {\n      return this.each(function() {\n\tvar elem    = $(this);\n\tvar info    = paneInfo(elem);\n\n\telem.find(\".reactive-size\").trigger(\"reactive-resize-start\",\n\t\t\t\t\t    info.splitter.orientation);\n      });\n    },\n\n    /**\n     * Save the current split location as a percentage, so we can\n     * maintain this percentage at subsequent resize events.  This\n     * is normally called after establishing the tile and after a\n     * user-initiated resize.\n     */\n    resize_save: function() {\n      this.each(function() {\n\tvar elem    = $(this);\n\tvar info    = paneInfo(elem);\n\tvar length, pos;\n\n\tif ( info.splitter.orientation == 'horizontal' ) {\n\t  length = elem.height();\n\t  pos    = $(info.first).height();\n\t} else {\n\t  length = elem.width();\n\t  pos    = $(info.first).width();\n\t}\n\n\tvar percent = Math.round(((100 * pos) / length)) + \"%\";\n\n\tinfo.splitter.resizestart = percent;\n      });\n\n      this.find(\".reactive-size\").trigger(\"reactive-resize\");\n      return this;\n    },\n\n    /**\n     * Act on a resize by keeping the relative distribution and respect\n     * min/max style properties. This assumes that {@link resizestart}\n     * is called at the start of the windowresize.\n     * @example $(window).resize(function() { $(\".tile\").tile('resize'); });\n     */\n    resize: function() {\n      return this.each(function() {\n\tvar elem     = $(this);\n\tvar splitter = elem.split();\n\n\tif ( splitter.resizestart ) {\n\t  splitter.position(splitter.resizestart);\n\t  splitter.settings.onDrag(elem);\n\t}\n      });\n    },\n\n    /**\n     * Split a pane, adding a new pane above/below/left/right of the\n     * splitted pane.  `this` must be the pane content!\n     * @param {Element} pane is a `<div>` element providing the content\n     * for the new tile.\n     * @param {String} [rel] is one of `above`/`below`/`left`/`right`.\n     * Default is `\"below\"`\n     * @param {Number} [pos] is percentage of the height/width taken by\n     * the new pane\n     * @param {Number} [minheight] is the minimum height of the new tab\n     * in the case of a vertical split.\n     * @return {jQuery} parent `pane-container` that hold me and the note\n     * that was added next to me.\n     */\n    split: function(pane, rel, pos, minheight) {\n      rel = rel||\"below\";\n\n      var relto  = this;\n      var dir    = (rel == \"above\" || rel == \"below\") ? \"horizontal\" : \"vertical\";\n      var parent = relto.wrap('<div class=\"pane-container tile \"' +\n\t\t\t      flipdir(dir) +\n\t\t\t      '></div>')\n                        .parent();\n\n      if ( pos == undefined )\n\tpos = 50;\n      else if ( pos < 10 )\n\tpos = 10;\n      else if ( pos > 90 )\n\tpos = 90;\n\n      if ( minheight && dir == \"horizontal\" ) {\n\tsumh = this.height();\n\tleft = sumh*pos/100;\n\tif ( left < minheight && minheight < sumh*0.9 ) {\n\t  pos = (minheight*100/sumh);\n\t}\n      }\n\n      if ( rel == \"above\" || rel == \"left\" ) {\n\tparent.prepend(pane);\n      } else {\n\tpos = 100 - pos;\n\tparent.append(pane);\n      }\n\n      var panes = $(relto).add(pane);\n      panes.wrap('<div class=\"pane-wrapper\"></div>');\n\n      parent.split({ orientation:dir,\n\t\t     position:pos+\"%\",\n\t\t     limit:10,\n\t\t     onDragStart: function() { parent.tile('resize_start'); },\n\t\t     onDrag:      function() { panes.trigger(\"pane.resize\"); },\n\t\t     onDragEnd:   function() { parent.tile('resize_save'); }\n\t\t   });\n      parent.tile('resize_save');\n      panes.trigger(\"pane.resize\");\n\n      return parent;\n    },\n\n    /**\n     * Remove a tile from the DOM, causing the remaining half to occupy\n     * the whole space.  Again, `this` is the content pane.\n     */\n     close: function() {\n      var pane = this;\n      var splitContainer = pane.closest(\".pane-container\");\n\n      splitContainer.split().destroy();\n      pane.parent().remove();\n      splitContainer.children().first().children().first().unwrap().unwrap();\n    }\n  }; // methods\n\n  function paneInfo(pane) {\n    var panes = pane.children();\n\n    return { splitter: pane.split(),\n             first:    $(panes[0]).children()[0],\n\t     second:   $(panes[2]).children()[0]\n           };\n  }\n\n  function flipdir(dir) {\n    return dir == \"horizontal\" ? \"vertical\" : \"horizontal\";\n  }\n\n  /**\n   * Generate a tiled subwindow layout from a hierarchy of `<div>`\n   * elements.  Below is the HTML that creates the SWISH 2.0 subwindow\n   * layout.  This plugin uses the class `horizontal` or `vertical` to\n   * decide on the direction of the split and the attribute `data-split`\n   * to locate the split location.\n   *\n   *     <div class=\"tile horizontal\" data-split=\"60%\">\n   *       <div class=\"prolog-editor\"></div>\n   *       <div class=\"tile vertical\" data-split=\"70%\">\n   *         <div class=\"prolog-runners\"></div>\n   *         <div class=\"prolog-query\"></div>\n   *       </div>\n   *     </div>\n   *\n   * @class tile\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @example $(\".tile\").tile();\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.tile = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n});\n\n","/*!\n * typeahead.js 0.11.1\n * https://github.com/twitter/typeahead.js\n * Copyright 2013-2015 Twitter, Inc. and other contributors; Licensed MIT\n */\n\n(function(root, factory) {\n    if (typeof define === \"function\" && define.amd) {\n        define(\"bloodhound\", [ \"jquery\" ], function(a0) {\n            return root[\"Bloodhound\"] = factory(a0);\n        });\n    } else if (typeof exports === \"object\") {\n        module.exports = factory(require(\"jquery\"));\n    } else {\n        root[\"Bloodhound\"] = factory(jQuery);\n    }\n})(this, function($) {\n    var _ = function() {\n        \"use strict\";\n        return {\n            isMsie: function() {\n                return /(msie|trident)/i.test(navigator.userAgent) ? navigator.userAgent.match(/(msie |rv:)(\\d+(.\\d+)?)/i)[2] : false;\n            },\n            isBlankString: function(str) {\n                return !str || /^\\s*$/.test(str);\n            },\n            escapeRegExChars: function(str) {\n                return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\");\n            },\n            isString: function(obj) {\n                return typeof obj === \"string\";\n            },\n            isNumber: function(obj) {\n                return typeof obj === \"number\";\n            },\n            isArray: $.isArray,\n            isFunction: $.isFunction,\n            isObject: $.isPlainObject,\n            isUndefined: function(obj) {\n                return typeof obj === \"undefined\";\n            },\n            isElement: function(obj) {\n                return !!(obj && obj.nodeType === 1);\n            },\n            isJQuery: function(obj) {\n                return obj instanceof $;\n            },\n            toStr: function toStr(s) {\n                return _.isUndefined(s) || s === null ? \"\" : s + \"\";\n            },\n            bind: $.proxy,\n            each: function(collection, cb) {\n                $.each(collection, reverseArgs);\n                function reverseArgs(index, value) {\n                    return cb(value, index);\n                }\n            },\n            map: $.map,\n            filter: $.grep,\n            every: function(obj, test) {\n                var result = true;\n                if (!obj) {\n                    return result;\n                }\n                $.each(obj, function(key, val) {\n                    if (!(result = test.call(null, val, key, obj))) {\n                        return false;\n                    }\n                });\n                return !!result;\n            },\n            some: function(obj, test) {\n                var result = false;\n                if (!obj) {\n                    return result;\n                }\n                $.each(obj, function(key, val) {\n                    if (result = test.call(null, val, key, obj)) {\n                        return false;\n                    }\n                });\n                return !!result;\n            },\n            mixin: $.extend,\n            identity: function(x) {\n                return x;\n            },\n            clone: function(obj) {\n                return $.extend(true, {}, obj);\n            },\n            getIdGenerator: function() {\n                var counter = 0;\n                return function() {\n                    return counter++;\n                };\n            },\n            templatify: function templatify(obj) {\n                return $.isFunction(obj) ? obj : template;\n                function template() {\n                    return String(obj);\n                }\n            },\n            defer: function(fn) {\n                setTimeout(fn, 0);\n            },\n            debounce: function(func, wait, immediate) {\n                var timeout, result;\n                return function() {\n                    var context = this, args = arguments, later, callNow;\n                    later = function() {\n                        timeout = null;\n                        if (!immediate) {\n                            result = func.apply(context, args);\n                        }\n                    };\n                    callNow = immediate && !timeout;\n                    clearTimeout(timeout);\n                    timeout = setTimeout(later, wait);\n                    if (callNow) {\n                        result = func.apply(context, args);\n                    }\n                    return result;\n                };\n            },\n            throttle: function(func, wait) {\n                var context, args, timeout, result, previous, later;\n                previous = 0;\n                later = function() {\n                    previous = new Date();\n                    timeout = null;\n                    result = func.apply(context, args);\n                };\n                return function() {\n                    var now = new Date(), remaining = wait - (now - previous);\n                    context = this;\n                    args = arguments;\n                    if (remaining <= 0) {\n                        clearTimeout(timeout);\n                        timeout = null;\n                        previous = now;\n                        result = func.apply(context, args);\n                    } else if (!timeout) {\n                        timeout = setTimeout(later, remaining);\n                    }\n                    return result;\n                };\n            },\n            stringify: function(val) {\n                return _.isString(val) ? val : JSON.stringify(val);\n            },\n            noop: function() {}\n        };\n    }();\n    var VERSION = \"0.11.1\";\n    var tokenizers = function() {\n        \"use strict\";\n        return {\n            nonword: nonword,\n            whitespace: whitespace,\n            obj: {\n                nonword: getObjTokenizer(nonword),\n                whitespace: getObjTokenizer(whitespace)\n            }\n        };\n        function whitespace(str) {\n            str = _.toStr(str);\n            return str ? str.split(/\\s+/) : [];\n        }\n        function nonword(str) {\n            str = _.toStr(str);\n            return str ? str.split(/\\W+/) : [];\n        }\n        function getObjTokenizer(tokenizer) {\n            return function setKey(keys) {\n                keys = _.isArray(keys) ? keys : [].slice.call(arguments, 0);\n                return function tokenize(o) {\n                    var tokens = [];\n                    _.each(keys, function(k) {\n                        tokens = tokens.concat(tokenizer(_.toStr(o[k])));\n                    });\n                    return tokens;\n                };\n            };\n        }\n    }();\n    var LruCache = function() {\n        \"use strict\";\n        function LruCache(maxSize) {\n            this.maxSize = _.isNumber(maxSize) ? maxSize : 100;\n            this.reset();\n            if (this.maxSize <= 0) {\n                this.set = this.get = $.noop;\n            }\n        }\n        _.mixin(LruCache.prototype, {\n            set: function set(key, val) {\n                var tailItem = this.list.tail, node;\n                if (this.size >= this.maxSize) {\n                    this.list.remove(tailItem);\n                    delete this.hash[tailItem.key];\n                    this.size--;\n                }\n                if (node = this.hash[key]) {\n                    node.val = val;\n                    this.list.moveToFront(node);\n                } else {\n                    node = new Node(key, val);\n                    this.list.add(node);\n                    this.hash[key] = node;\n                    this.size++;\n                }\n            },\n            get: function get(key) {\n                var node = this.hash[key];\n                if (node) {\n                    this.list.moveToFront(node);\n                    return node.val;\n                }\n            },\n            reset: function reset() {\n                this.size = 0;\n                this.hash = {};\n                this.list = new List();\n            }\n        });\n        function List() {\n            this.head = this.tail = null;\n        }\n        _.mixin(List.prototype, {\n            add: function add(node) {\n                if (this.head) {\n                    node.next = this.head;\n                    this.head.prev = node;\n                }\n                this.head = node;\n                this.tail = this.tail || node;\n            },\n            remove: function remove(node) {\n                node.prev ? node.prev.next = node.next : this.head = node.next;\n                node.next ? node.next.prev = node.prev : this.tail = node.prev;\n            },\n            moveToFront: function(node) {\n                this.remove(node);\n                this.add(node);\n            }\n        });\n        function Node(key, val) {\n            this.key = key;\n            this.val = val;\n            this.prev = this.next = null;\n        }\n        return LruCache;\n    }();\n    var PersistentStorage = function() {\n        \"use strict\";\n        var LOCAL_STORAGE;\n        try {\n            LOCAL_STORAGE = window.localStorage;\n            LOCAL_STORAGE.setItem(\"~~~\", \"!\");\n            LOCAL_STORAGE.removeItem(\"~~~\");\n        } catch (err) {\n            LOCAL_STORAGE = null;\n        }\n        function PersistentStorage(namespace, override) {\n            this.prefix = [ \"__\", namespace, \"__\" ].join(\"\");\n            this.ttlKey = \"__ttl__\";\n            this.keyMatcher = new RegExp(\"^\" + _.escapeRegExChars(this.prefix));\n            this.ls = override || LOCAL_STORAGE;\n            !this.ls && this._noop();\n        }\n        _.mixin(PersistentStorage.prototype, {\n            _prefix: function(key) {\n                return this.prefix + key;\n            },\n            _ttlKey: function(key) {\n                return this._prefix(key) + this.ttlKey;\n            },\n            _noop: function() {\n                this.get = this.set = this.remove = this.clear = this.isExpired = _.noop;\n            },\n            _safeSet: function(key, val) {\n                try {\n                    this.ls.setItem(key, val);\n                } catch (err) {\n                    if (err.name === \"QuotaExceededError\") {\n                        this.clear();\n                        this._noop();\n                    }\n                }\n            },\n            get: function(key) {\n                if (this.isExpired(key)) {\n                    this.remove(key);\n                }\n                return decode(this.ls.getItem(this._prefix(key)));\n            },\n            set: function(key, val, ttl) {\n                if (_.isNumber(ttl)) {\n                    this._safeSet(this._ttlKey(key), encode(now() + ttl));\n                } else {\n                    this.ls.removeItem(this._ttlKey(key));\n                }\n                return this._safeSet(this._prefix(key), encode(val));\n            },\n            remove: function(key) {\n                this.ls.removeItem(this._ttlKey(key));\n                this.ls.removeItem(this._prefix(key));\n                return this;\n            },\n            clear: function() {\n                var i, keys = gatherMatchingKeys(this.keyMatcher);\n                for (i = keys.length; i--; ) {\n                    this.remove(keys[i]);\n                }\n                return this;\n            },\n            isExpired: function(key) {\n                var ttl = decode(this.ls.getItem(this._ttlKey(key)));\n                return _.isNumber(ttl) && now() > ttl ? true : false;\n            }\n        });\n        return PersistentStorage;\n        function now() {\n            return new Date().getTime();\n        }\n        function encode(val) {\n            return JSON.stringify(_.isUndefined(val) ? null : val);\n        }\n        function decode(val) {\n            return $.parseJSON(val);\n        }\n        function gatherMatchingKeys(keyMatcher) {\n            var i, key, keys = [], len = LOCAL_STORAGE.length;\n            for (i = 0; i < len; i++) {\n                if ((key = LOCAL_STORAGE.key(i)).match(keyMatcher)) {\n                    keys.push(key.replace(keyMatcher, \"\"));\n                }\n            }\n            return keys;\n        }\n    }();\n    var Transport = function() {\n        \"use strict\";\n        var pendingRequestsCount = 0, pendingRequests = {}, maxPendingRequests = 6, sharedCache = new LruCache(10);\n        function Transport(o) {\n            o = o || {};\n            this.cancelled = false;\n            this.lastReq = null;\n            this._send = o.transport;\n            this._get = o.limiter ? o.limiter(this._get) : this._get;\n            this._cache = o.cache === false ? new LruCache(0) : sharedCache;\n        }\n        Transport.setMaxPendingRequests = function setMaxPendingRequests(num) {\n            maxPendingRequests = num;\n        };\n        Transport.resetCache = function resetCache() {\n            sharedCache.reset();\n        };\n        _.mixin(Transport.prototype, {\n            _fingerprint: function fingerprint(o) {\n                o = o || {};\n                return o.url + o.type + $.param(o.data || {});\n            },\n            _get: function(o, cb) {\n                var that = this, fingerprint, jqXhr;\n                fingerprint = this._fingerprint(o);\n                if (this.cancelled || fingerprint !== this.lastReq) {\n                    return;\n                }\n                if (jqXhr = pendingRequests[fingerprint]) {\n                    jqXhr.done(done).fail(fail);\n                } else if (pendingRequestsCount < maxPendingRequests) {\n                    pendingRequestsCount++;\n                    pendingRequests[fingerprint] = this._send(o).done(done).fail(fail).always(always);\n                } else {\n                    this.onDeckRequestArgs = [].slice.call(arguments, 0);\n                }\n                function done(resp) {\n                    cb(null, resp);\n                    that._cache.set(fingerprint, resp);\n                }\n                function fail() {\n                    cb(true);\n                }\n                function always() {\n                    pendingRequestsCount--;\n                    delete pendingRequests[fingerprint];\n                    if (that.onDeckRequestArgs) {\n                        that._get.apply(that, that.onDeckRequestArgs);\n                        that.onDeckRequestArgs = null;\n                    }\n                }\n            },\n            get: function(o, cb) {\n                var resp, fingerprint;\n                cb = cb || $.noop;\n                o = _.isString(o) ? {\n                    url: o\n                } : o || {};\n                fingerprint = this._fingerprint(o);\n                this.cancelled = false;\n                this.lastReq = fingerprint;\n                if (resp = this._cache.get(fingerprint)) {\n                    cb(null, resp);\n                } else {\n                    this._get(o, cb);\n                }\n            },\n            cancel: function() {\n                this.cancelled = true;\n            }\n        });\n        return Transport;\n    }();\n    var SearchIndex = window.SearchIndex = function() {\n        \"use strict\";\n        var CHILDREN = \"c\", IDS = \"i\";\n        function SearchIndex(o) {\n            o = o || {};\n            if (!o.datumTokenizer || !o.queryTokenizer) {\n                $.error(\"datumTokenizer and queryTokenizer are both required\");\n            }\n            this.identify = o.identify || _.stringify;\n            this.datumTokenizer = o.datumTokenizer;\n            this.queryTokenizer = o.queryTokenizer;\n            this.reset();\n        }\n        _.mixin(SearchIndex.prototype, {\n            bootstrap: function bootstrap(o) {\n                this.datums = o.datums;\n                this.trie = o.trie;\n            },\n            add: function(data) {\n                var that = this;\n                data = _.isArray(data) ? data : [ data ];\n                _.each(data, function(datum) {\n                    var id, tokens;\n                    that.datums[id = that.identify(datum)] = datum;\n                    tokens = normalizeTokens(that.datumTokenizer(datum));\n                    _.each(tokens, function(token) {\n                        var node, chars, ch;\n                        node = that.trie;\n                        chars = token.split(\"\");\n                        while (ch = chars.shift()) {\n                            node = node[CHILDREN][ch] || (node[CHILDREN][ch] = newNode());\n                            node[IDS].push(id);\n                        }\n                    });\n                });\n            },\n            get: function get(ids) {\n                var that = this;\n                return _.map(ids, function(id) {\n                    return that.datums[id];\n                });\n            },\n            search: function search(query) {\n                var that = this, tokens, matches;\n                tokens = normalizeTokens(this.queryTokenizer(query));\n                _.each(tokens, function(token) {\n                    var node, chars, ch, ids;\n                    if (matches && matches.length === 0) {\n                        return false;\n                    }\n                    node = that.trie;\n                    chars = token.split(\"\");\n                    while (node && (ch = chars.shift())) {\n                        node = node[CHILDREN][ch];\n                    }\n                    if (node && chars.length === 0) {\n                        ids = node[IDS].slice(0);\n                        matches = matches ? getIntersection(matches, ids) : ids;\n                    } else {\n                        matches = [];\n                        return false;\n                    }\n                });\n                return matches ? _.map(unique(matches), function(id) {\n                    return that.datums[id];\n                }) : [];\n            },\n            all: function all() {\n                var values = [];\n                for (var key in this.datums) {\n                    values.push(this.datums[key]);\n                }\n                return values;\n            },\n            reset: function reset() {\n                this.datums = {};\n                this.trie = newNode();\n            },\n            serialize: function serialize() {\n                return {\n                    datums: this.datums,\n                    trie: this.trie\n                };\n            }\n        });\n        return SearchIndex;\n        function normalizeTokens(tokens) {\n            tokens = _.filter(tokens, function(token) {\n                return !!token;\n            });\n            tokens = _.map(tokens, function(token) {\n                return token.toLowerCase();\n            });\n            return tokens;\n        }\n        function newNode() {\n            var node = {};\n            node[IDS] = [];\n            node[CHILDREN] = {};\n            return node;\n        }\n        function unique(array) {\n            var seen = {}, uniques = [];\n            for (var i = 0, len = array.length; i < len; i++) {\n                if (!seen[array[i]]) {\n                    seen[array[i]] = true;\n                    uniques.push(array[i]);\n                }\n            }\n            return uniques;\n        }\n        function getIntersection(arrayA, arrayB) {\n            var ai = 0, bi = 0, intersection = [];\n            arrayA = arrayA.sort();\n            arrayB = arrayB.sort();\n            var lenArrayA = arrayA.length, lenArrayB = arrayB.length;\n            while (ai < lenArrayA && bi < lenArrayB) {\n                if (arrayA[ai] < arrayB[bi]) {\n                    ai++;\n                } else if (arrayA[ai] > arrayB[bi]) {\n                    bi++;\n                } else {\n                    intersection.push(arrayA[ai]);\n                    ai++;\n                    bi++;\n                }\n            }\n            return intersection;\n        }\n    }();\n    var Prefetch = function() {\n        \"use strict\";\n        var keys;\n        keys = {\n            data: \"data\",\n            protocol: \"protocol\",\n            thumbprint: \"thumbprint\"\n        };\n        function Prefetch(o) {\n            this.url = o.url;\n            this.ttl = o.ttl;\n            this.cache = o.cache;\n            this.prepare = o.prepare;\n            this.transform = o.transform;\n            this.transport = o.transport;\n            this.thumbprint = o.thumbprint;\n            this.storage = new PersistentStorage(o.cacheKey);\n        }\n        _.mixin(Prefetch.prototype, {\n            _settings: function settings() {\n                return {\n                    url: this.url,\n                    type: \"GET\",\n                    dataType: \"json\"\n                };\n            },\n            store: function store(data) {\n                if (!this.cache) {\n                    return;\n                }\n                this.storage.set(keys.data, data, this.ttl);\n                this.storage.set(keys.protocol, location.protocol, this.ttl);\n                this.storage.set(keys.thumbprint, this.thumbprint, this.ttl);\n            },\n            fromCache: function fromCache() {\n                var stored = {}, isExpired;\n                if (!this.cache) {\n                    return null;\n                }\n                stored.data = this.storage.get(keys.data);\n                stored.protocol = this.storage.get(keys.protocol);\n                stored.thumbprint = this.storage.get(keys.thumbprint);\n                isExpired = stored.thumbprint !== this.thumbprint || stored.protocol !== location.protocol;\n                return stored.data && !isExpired ? stored.data : null;\n            },\n            fromNetwork: function(cb) {\n                var that = this, settings;\n                if (!cb) {\n                    return;\n                }\n                settings = this.prepare(this._settings());\n                this.transport(settings).fail(onError).done(onResponse);\n                function onError() {\n                    cb(true);\n                }\n                function onResponse(resp) {\n                    cb(null, that.transform(resp));\n                }\n            },\n            clear: function clear() {\n                this.storage.clear();\n                return this;\n            }\n        });\n        return Prefetch;\n    }();\n    var Remote = function() {\n        \"use strict\";\n        function Remote(o) {\n            this.url = o.url;\n            this.prepare = o.prepare;\n            this.transform = o.transform;\n            this.transport = new Transport({\n                cache: o.cache,\n                limiter: o.limiter,\n                transport: o.transport\n            });\n        }\n        _.mixin(Remote.prototype, {\n            _settings: function settings() {\n                return {\n                    url: this.url,\n                    type: \"GET\",\n                    dataType: \"json\"\n                };\n            },\n            get: function get(query, cb) {\n                var that = this, settings;\n                if (!cb) {\n                    return;\n                }\n                query = query || \"\";\n                settings = this.prepare(query, this._settings());\n                return this.transport.get(settings, onResponse);\n                function onResponse(err, resp) {\n                    err ? cb([]) : cb(that.transform(resp));\n                }\n            },\n            cancelLastRequest: function cancelLastRequest() {\n                this.transport.cancel();\n            }\n        });\n        return Remote;\n    }();\n    var oParser = function() {\n        \"use strict\";\n        return function parse(o) {\n            var defaults, sorter;\n            defaults = {\n                initialize: true,\n                identify: _.stringify,\n                datumTokenizer: null,\n                queryTokenizer: null,\n                sufficient: 5,\n                sorter: null,\n                local: [],\n                prefetch: null,\n                remote: null\n            };\n            o = _.mixin(defaults, o || {});\n            !o.datumTokenizer && $.error(\"datumTokenizer is required\");\n            !o.queryTokenizer && $.error(\"queryTokenizer is required\");\n            sorter = o.sorter;\n            o.sorter = sorter ? function(x) {\n                return x.sort(sorter);\n            } : _.identity;\n            o.local = _.isFunction(o.local) ? o.local() : o.local;\n            o.prefetch = parsePrefetch(o.prefetch);\n            o.remote = parseRemote(o.remote);\n            return o;\n        };\n        function parsePrefetch(o) {\n            var defaults;\n            if (!o) {\n                return null;\n            }\n            defaults = {\n                url: null,\n                ttl: 24 * 60 * 60 * 1e3,\n                cache: true,\n                cacheKey: null,\n                thumbprint: \"\",\n                prepare: _.identity,\n                transform: _.identity,\n                transport: null\n            };\n            o = _.isString(o) ? {\n                url: o\n            } : o;\n            o = _.mixin(defaults, o);\n            !o.url && $.error(\"prefetch requires url to be set\");\n            o.transform = o.filter || o.transform;\n            o.cacheKey = o.cacheKey || o.url;\n            o.thumbprint = VERSION + o.thumbprint;\n            o.transport = o.transport ? callbackToDeferred(o.transport) : $.ajax;\n            return o;\n        }\n        function parseRemote(o) {\n            var defaults;\n            if (!o) {\n                return;\n            }\n            defaults = {\n                url: null,\n                cache: true,\n                prepare: null,\n                replace: null,\n                wildcard: null,\n                limiter: null,\n                rateLimitBy: \"debounce\",\n                rateLimitWait: 300,\n                transform: _.identity,\n                transport: null\n            };\n            o = _.isString(o) ? {\n                url: o\n            } : o;\n            o = _.mixin(defaults, o);\n            !o.url && $.error(\"remote requires url to be set\");\n            o.transform = o.filter || o.transform;\n            o.prepare = toRemotePrepare(o);\n            o.limiter = toLimiter(o);\n            o.transport = o.transport ? callbackToDeferred(o.transport) : $.ajax;\n            delete o.replace;\n            delete o.wildcard;\n            delete o.rateLimitBy;\n            delete o.rateLimitWait;\n            return o;\n        }\n        function toRemotePrepare(o) {\n            var prepare, replace, wildcard;\n            prepare = o.prepare;\n            replace = o.replace;\n            wildcard = o.wildcard;\n            if (prepare) {\n                return prepare;\n            }\n            if (replace) {\n                prepare = prepareByReplace;\n            } else if (o.wildcard) {\n                prepare = prepareByWildcard;\n            } else {\n                prepare = idenityPrepare;\n            }\n            return prepare;\n            function prepareByReplace(query, settings) {\n                settings.url = replace(settings.url, query);\n                return settings;\n            }\n            function prepareByWildcard(query, settings) {\n                settings.url = settings.url.replace(wildcard, encodeURIComponent(query));\n                return settings;\n            }\n            function idenityPrepare(query, settings) {\n                return settings;\n            }\n        }\n        function toLimiter(o) {\n            var limiter, method, wait;\n            limiter = o.limiter;\n            method = o.rateLimitBy;\n            wait = o.rateLimitWait;\n            if (!limiter) {\n                limiter = /^throttle$/i.test(method) ? throttle(wait) : debounce(wait);\n            }\n            return limiter;\n            function debounce(wait) {\n                return function debounce(fn) {\n                    return _.debounce(fn, wait);\n                };\n            }\n            function throttle(wait) {\n                return function throttle(fn) {\n                    return _.throttle(fn, wait);\n                };\n            }\n        }\n        function callbackToDeferred(fn) {\n            return function wrapper(o) {\n                var deferred = $.Deferred();\n                fn(o, onSuccess, onError);\n                return deferred;\n                function onSuccess(resp) {\n                    _.defer(function() {\n                        deferred.resolve(resp);\n                    });\n                }\n                function onError(err) {\n                    _.defer(function() {\n                        deferred.reject(err);\n                    });\n                }\n            };\n        }\n    }();\n    var Bloodhound = function() {\n        \"use strict\";\n        var old;\n        old = window && window.Bloodhound;\n        function Bloodhound(o) {\n            o = oParser(o);\n            this.sorter = o.sorter;\n            this.identify = o.identify;\n            this.sufficient = o.sufficient;\n            this.local = o.local;\n            this.remote = o.remote ? new Remote(o.remote) : null;\n            this.prefetch = o.prefetch ? new Prefetch(o.prefetch) : null;\n            this.index = new SearchIndex({\n                identify: this.identify,\n                datumTokenizer: o.datumTokenizer,\n                queryTokenizer: o.queryTokenizer\n            });\n            o.initialize !== false && this.initialize();\n        }\n        Bloodhound.noConflict = function noConflict() {\n            window && (window.Bloodhound = old);\n            return Bloodhound;\n        };\n        Bloodhound.tokenizers = tokenizers;\n        _.mixin(Bloodhound.prototype, {\n            __ttAdapter: function ttAdapter() {\n                var that = this;\n                return this.remote ? withAsync : withoutAsync;\n                function withAsync(query, sync, async) {\n                    return that.search(query, sync, async);\n                }\n                function withoutAsync(query, sync) {\n                    return that.search(query, sync);\n                }\n            },\n            _loadPrefetch: function loadPrefetch() {\n                var that = this, deferred, serialized;\n                deferred = $.Deferred();\n                if (!this.prefetch) {\n                    deferred.resolve();\n                } else if (serialized = this.prefetch.fromCache()) {\n                    this.index.bootstrap(serialized);\n                    deferred.resolve();\n                } else {\n                    this.prefetch.fromNetwork(done);\n                }\n                return deferred.promise();\n                function done(err, data) {\n                    if (err) {\n                        return deferred.reject();\n                    }\n                    that.add(data);\n                    that.prefetch.store(that.index.serialize());\n                    deferred.resolve();\n                }\n            },\n            _initialize: function initialize() {\n                var that = this, deferred;\n                this.clear();\n                (this.initPromise = this._loadPrefetch()).done(addLocalToIndex);\n                return this.initPromise;\n                function addLocalToIndex() {\n                    that.add(that.local);\n                }\n            },\n            initialize: function initialize(force) {\n                return !this.initPromise || force ? this._initialize() : this.initPromise;\n            },\n            add: function add(data) {\n                this.index.add(data);\n                return this;\n            },\n            get: function get(ids) {\n                ids = _.isArray(ids) ? ids : [].slice.call(arguments);\n                return this.index.get(ids);\n            },\n            search: function search(query, sync, async) {\n                var that = this, local;\n                local = this.sorter(this.index.search(query));\n                sync(this.remote ? local.slice() : local);\n                if (this.remote && local.length < this.sufficient) {\n                    this.remote.get(query, processRemote);\n                } else if (this.remote) {\n                    this.remote.cancelLastRequest();\n                }\n                return this;\n                function processRemote(remote) {\n                    var nonDuplicates = [];\n                    _.each(remote, function(r) {\n                        !_.some(local, function(l) {\n                            return that.identify(r) === that.identify(l);\n                        }) && nonDuplicates.push(r);\n                    });\n                    async && async(nonDuplicates);\n                }\n            },\n            all: function all() {\n                return this.index.all();\n            },\n            clear: function clear() {\n                this.index.reset();\n                return this;\n            },\n            clearPrefetchCache: function clearPrefetchCache() {\n                this.prefetch && this.prefetch.clear();\n                return this;\n            },\n            clearRemoteCache: function clearRemoteCache() {\n                Transport.resetCache();\n                return this;\n            },\n            ttAdapter: function ttAdapter() {\n                return this.__ttAdapter();\n            }\n        });\n        return Bloodhound;\n    }();\n    return Bloodhound;\n});\n","/*!\n * typeahead.js 0.11.1\n * https://github.com/twitter/typeahead.js\n * Copyright 2013-2015 Twitter, Inc. and other contributors; Licensed MIT\n */\n\n(function(root, factory) {\n    if (typeof define === \"function\" && define.amd) {\n        define(\"typeahead.js\", [ \"jquery\" ], function(a0) {\n            return factory(a0);\n        });\n    } else if (typeof exports === \"object\") {\n        module.exports = factory(require(\"jquery\"));\n    } else {\n        factory(jQuery);\n    }\n})(this, function($) {\n    var _ = function() {\n        \"use strict\";\n        return {\n            isMsie: function() {\n                return /(msie|trident)/i.test(navigator.userAgent) ? navigator.userAgent.match(/(msie |rv:)(\\d+(.\\d+)?)/i)[2] : false;\n            },\n            isBlankString: function(str) {\n                return !str || /^\\s*$/.test(str);\n            },\n            escapeRegExChars: function(str) {\n                return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\");\n            },\n            isString: function(obj) {\n                return typeof obj === \"string\";\n            },\n            isNumber: function(obj) {\n                return typeof obj === \"number\";\n            },\n            isArray: $.isArray,\n            isFunction: $.isFunction,\n            isObject: $.isPlainObject,\n            isUndefined: function(obj) {\n                return typeof obj === \"undefined\";\n            },\n            isElement: function(obj) {\n                return !!(obj && obj.nodeType === 1);\n            },\n            isJQuery: function(obj) {\n                return obj instanceof $;\n            },\n            toStr: function toStr(s) {\n                return _.isUndefined(s) || s === null ? \"\" : s + \"\";\n            },\n            bind: $.proxy,\n            each: function(collection, cb) {\n                $.each(collection, reverseArgs);\n                function reverseArgs(index, value) {\n                    return cb(value, index);\n                }\n            },\n            map: $.map,\n            filter: $.grep,\n            every: function(obj, test) {\n                var result = true;\n                if (!obj) {\n                    return result;\n                }\n                $.each(obj, function(key, val) {\n                    if (!(result = test.call(null, val, key, obj))) {\n                        return false;\n                    }\n                });\n                return !!result;\n            },\n            some: function(obj, test) {\n                var result = false;\n                if (!obj) {\n                    return result;\n                }\n                $.each(obj, function(key, val) {\n                    if (result = test.call(null, val, key, obj)) {\n                        return false;\n                    }\n                });\n                return !!result;\n            },\n            mixin: $.extend,\n            identity: function(x) {\n                return x;\n            },\n            clone: function(obj) {\n                return $.extend(true, {}, obj);\n            },\n            getIdGenerator: function() {\n                var counter = 0;\n                return function() {\n                    return counter++;\n                };\n            },\n            templatify: function templatify(obj) {\n                return $.isFunction(obj) ? obj : template;\n                function template() {\n                    return String(obj);\n                }\n            },\n            defer: function(fn) {\n                setTimeout(fn, 0);\n            },\n            debounce: function(func, wait, immediate) {\n                var timeout, result;\n                return function() {\n                    var context = this, args = arguments, later, callNow;\n                    later = function() {\n                        timeout = null;\n                        if (!immediate) {\n                            result = func.apply(context, args);\n                        }\n                    };\n                    callNow = immediate && !timeout;\n                    clearTimeout(timeout);\n                    timeout = setTimeout(later, wait);\n                    if (callNow) {\n                        result = func.apply(context, args);\n                    }\n                    return result;\n                };\n            },\n            throttle: function(func, wait) {\n                var context, args, timeout, result, previous, later;\n                previous = 0;\n                later = function() {\n                    previous = new Date();\n                    timeout = null;\n                    result = func.apply(context, args);\n                };\n                return function() {\n                    var now = new Date(), remaining = wait - (now - previous);\n                    context = this;\n                    args = arguments;\n                    if (remaining <= 0) {\n                        clearTimeout(timeout);\n                        timeout = null;\n                        previous = now;\n                        result = func.apply(context, args);\n                    } else if (!timeout) {\n                        timeout = setTimeout(later, remaining);\n                    }\n                    return result;\n                };\n            },\n            stringify: function(val) {\n                return _.isString(val) ? val : JSON.stringify(val);\n            },\n            noop: function() {}\n        };\n    }();\n    var WWW = function() {\n        \"use strict\";\n        var defaultClassNames = {\n            wrapper: \"twitter-typeahead\",\n            input: \"tt-input\",\n            hint: \"tt-hint\",\n            menu: \"tt-menu\",\n            dataset: \"tt-dataset\",\n            suggestion: \"tt-suggestion\",\n            selectable: \"tt-selectable\",\n            empty: \"tt-empty\",\n            open: \"tt-open\",\n            cursor: \"tt-cursor\",\n            highlight: \"tt-highlight\"\n        };\n        return build;\n        function build(o) {\n            var www, classes;\n            classes = _.mixin({}, defaultClassNames, o);\n            www = {\n                css: buildCss(),\n                classes: classes,\n                html: buildHtml(classes),\n                selectors: buildSelectors(classes)\n            };\n            return {\n                css: www.css,\n                html: www.html,\n                classes: www.classes,\n                selectors: www.selectors,\n                mixin: function(o) {\n                    _.mixin(o, www);\n                }\n            };\n        }\n        function buildHtml(c) {\n            return {\n                wrapper: '<span class=\"' + c.wrapper + '\"></span>',\n                menu: '<div class=\"' + c.menu + '\"></div>'\n            };\n        }\n        function buildSelectors(classes) {\n            var selectors = {};\n            _.each(classes, function(v, k) {\n                selectors[k] = \".\" + v;\n            });\n            return selectors;\n        }\n        function buildCss() {\n            var css = {\n                wrapper: {\n                    position: \"relative\",\n                    display: \"inline-block\"\n                },\n                hint: {\n                    position: \"absolute\",\n                    top: \"0\",\n                    left: \"0\",\n                    borderColor: \"transparent\",\n                    boxShadow: \"none\",\n                    opacity: \"1\"\n                },\n                input: {\n                    position: \"relative\",\n                    verticalAlign: \"top\",\n                    backgroundColor: \"transparent\"\n                },\n                inputWithNoHint: {\n                    position: \"relative\",\n                    verticalAlign: \"top\"\n                },\n                menu: {\n                    position: \"absolute\",\n                    top: \"100%\",\n                    left: \"0\",\n                    zIndex: \"100\",\n                    display: \"none\"\n                },\n                ltr: {\n                    left: \"0\",\n                    right: \"auto\"\n                },\n                rtl: {\n                    left: \"auto\",\n                    right: \" 0\"\n                }\n            };\n            if (_.isMsie()) {\n                _.mixin(css.input, {\n                    backgroundImage: \"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)\"\n                });\n            }\n            return css;\n        }\n    }();\n    var EventBus = function() {\n        \"use strict\";\n        var namespace, deprecationMap;\n        namespace = \"typeahead:\";\n        deprecationMap = {\n            render: \"rendered\",\n            cursorchange: \"cursorchanged\",\n            select: \"selected\",\n            autocomplete: \"autocompleted\"\n        };\n        function EventBus(o) {\n            if (!o || !o.el) {\n                $.error(\"EventBus initialized without el\");\n            }\n            this.$el = $(o.el);\n        }\n        _.mixin(EventBus.prototype, {\n            _trigger: function(type, args) {\n                var $e;\n                $e = $.Event(namespace + type);\n                (args = args || []).unshift($e);\n                this.$el.trigger.apply(this.$el, args);\n                return $e;\n            },\n            before: function(type) {\n                var args, $e;\n                args = [].slice.call(arguments, 1);\n                $e = this._trigger(\"before\" + type, args);\n                return $e.isDefaultPrevented();\n            },\n            trigger: function(type) {\n                var deprecatedType;\n                this._trigger(type, [].slice.call(arguments, 1));\n                if (deprecatedType = deprecationMap[type]) {\n                    this._trigger(deprecatedType, [].slice.call(arguments, 1));\n                }\n            }\n        });\n        return EventBus;\n    }();\n    var EventEmitter = function() {\n        \"use strict\";\n        var splitter = /\\s+/, nextTick = getNextTick();\n        return {\n            onSync: onSync,\n            onAsync: onAsync,\n            off: off,\n            trigger: trigger\n        };\n        function on(method, types, cb, context) {\n            var type;\n            if (!cb) {\n                return this;\n            }\n            types = types.split(splitter);\n            cb = context ? bindContext(cb, context) : cb;\n            this._callbacks = this._callbacks || {};\n            while (type = types.shift()) {\n                this._callbacks[type] = this._callbacks[type] || {\n                    sync: [],\n                    async: []\n                };\n                this._callbacks[type][method].push(cb);\n            }\n            return this;\n        }\n        function onAsync(types, cb, context) {\n            return on.call(this, \"async\", types, cb, context);\n        }\n        function onSync(types, cb, context) {\n            return on.call(this, \"sync\", types, cb, context);\n        }\n        function off(types) {\n            var type;\n            if (!this._callbacks) {\n                return this;\n            }\n            types = types.split(splitter);\n            while (type = types.shift()) {\n                delete this._callbacks[type];\n            }\n            return this;\n        }\n        function trigger(types) {\n            var type, callbacks, args, syncFlush, asyncFlush;\n            if (!this._callbacks) {\n                return this;\n            }\n            types = types.split(splitter);\n            args = [].slice.call(arguments, 1);\n            while ((type = types.shift()) && (callbacks = this._callbacks[type])) {\n                syncFlush = getFlush(callbacks.sync, this, [ type ].concat(args));\n                asyncFlush = getFlush(callbacks.async, this, [ type ].concat(args));\n                syncFlush() && nextTick(asyncFlush);\n            }\n            return this;\n        }\n        function getFlush(callbacks, context, args) {\n            return flush;\n            function flush() {\n                var cancelled;\n                for (var i = 0, len = callbacks.length; !cancelled && i < len; i += 1) {\n                    cancelled = callbacks[i].apply(context, args) === false;\n                }\n                return !cancelled;\n            }\n        }\n        function getNextTick() {\n            var nextTickFn;\n            if (window.setImmediate) {\n                nextTickFn = function nextTickSetImmediate(fn) {\n                    setImmediate(function() {\n                        fn();\n                    });\n                };\n            } else {\n                nextTickFn = function nextTickSetTimeout(fn) {\n                    setTimeout(function() {\n                        fn();\n                    }, 0);\n                };\n            }\n            return nextTickFn;\n        }\n        function bindContext(fn, context) {\n            return fn.bind ? fn.bind(context) : function() {\n                fn.apply(context, [].slice.call(arguments, 0));\n            };\n        }\n    }();\n    var highlight = function(doc) {\n        \"use strict\";\n        var defaults = {\n            node: null,\n            pattern: null,\n            tagName: \"strong\",\n            className: null,\n            wordsOnly: false,\n            caseSensitive: false\n        };\n        return function hightlight(o) {\n            var regex;\n            o = _.mixin({}, defaults, o);\n            if (!o.node || !o.pattern) {\n                return;\n            }\n            o.pattern = _.isArray(o.pattern) ? o.pattern : [ o.pattern ];\n            regex = getRegex(o.pattern, o.caseSensitive, o.wordsOnly);\n            traverse(o.node, hightlightTextNode);\n            function hightlightTextNode(textNode) {\n                var match, patternNode, wrapperNode;\n                if (match = regex.exec(textNode.data)) {\n                    wrapperNode = doc.createElement(o.tagName);\n                    o.className && (wrapperNode.className = o.className);\n                    patternNode = textNode.splitText(match.index);\n                    patternNode.splitText(match[0].length);\n                    wrapperNode.appendChild(patternNode.cloneNode(true));\n                    textNode.parentNode.replaceChild(wrapperNode, patternNode);\n                }\n                return !!match;\n            }\n            function traverse(el, hightlightTextNode) {\n                var childNode, TEXT_NODE_TYPE = 3;\n                for (var i = 0; i < el.childNodes.length; i++) {\n                    childNode = el.childNodes[i];\n                    if (childNode.nodeType === TEXT_NODE_TYPE) {\n                        i += hightlightTextNode(childNode) ? 1 : 0;\n                    } else {\n                        traverse(childNode, hightlightTextNode);\n                    }\n                }\n            }\n        };\n        function getRegex(patterns, caseSensitive, wordsOnly) {\n            var escapedPatterns = [], regexStr;\n            for (var i = 0, len = patterns.length; i < len; i++) {\n                escapedPatterns.push(_.escapeRegExChars(patterns[i]));\n            }\n            regexStr = wordsOnly ? \"\\\\b(\" + escapedPatterns.join(\"|\") + \")\\\\b\" : \"(\" + escapedPatterns.join(\"|\") + \")\";\n            return caseSensitive ? new RegExp(regexStr) : new RegExp(regexStr, \"i\");\n        }\n    }(window.document);\n    var Input = function() {\n        \"use strict\";\n        var specialKeyCodeMap;\n        specialKeyCodeMap = {\n            9: \"tab\",\n            27: \"esc\",\n            37: \"left\",\n            39: \"right\",\n            13: \"enter\",\n            38: \"up\",\n            40: \"down\"\n        };\n        function Input(o, www) {\n            o = o || {};\n            if (!o.input) {\n                $.error(\"input is missing\");\n            }\n            www.mixin(this);\n            this.$hint = $(o.hint);\n            this.$input = $(o.input);\n            this.query = this.$input.val();\n            this.queryWhenFocused = this.hasFocus() ? this.query : null;\n            this.$overflowHelper = buildOverflowHelper(this.$input);\n            this._checkLanguageDirection();\n            if (this.$hint.length === 0) {\n                this.setHint = this.getHint = this.clearHint = this.clearHintIfInvalid = _.noop;\n            }\n        }\n        Input.normalizeQuery = function(str) {\n            return _.toStr(str).replace(/^\\s*/g, \"\").replace(/\\s{2,}/g, \" \");\n        };\n        _.mixin(Input.prototype, EventEmitter, {\n            _onBlur: function onBlur() {\n                this.resetInputValue();\n                this.trigger(\"blurred\");\n            },\n            _onFocus: function onFocus() {\n                this.queryWhenFocused = this.query;\n                this.trigger(\"focused\");\n            },\n            _onKeydown: function onKeydown($e) {\n                var keyName = specialKeyCodeMap[$e.which || $e.keyCode];\n                this._managePreventDefault(keyName, $e);\n                if (keyName && this._shouldTrigger(keyName, $e)) {\n                    this.trigger(keyName + \"Keyed\", $e);\n                }\n            },\n            _onInput: function onInput() {\n                this._setQuery(this.getInputValue());\n                this.clearHintIfInvalid();\n                this._checkLanguageDirection();\n            },\n            _managePreventDefault: function managePreventDefault(keyName, $e) {\n                var preventDefault;\n                switch (keyName) {\n                  case \"up\":\n                  case \"down\":\n                    preventDefault = !withModifier($e);\n                    break;\n\n                  default:\n                    preventDefault = false;\n                }\n                preventDefault && $e.preventDefault();\n            },\n            _shouldTrigger: function shouldTrigger(keyName, $e) {\n                var trigger;\n                switch (keyName) {\n                  case \"tab\":\n                    trigger = !withModifier($e);\n                    break;\n\n                  default:\n                    trigger = true;\n                }\n                return trigger;\n            },\n            _checkLanguageDirection: function checkLanguageDirection() {\n                var dir = (this.$input.css(\"direction\") || \"ltr\").toLowerCase();\n                if (this.dir !== dir) {\n                    this.dir = dir;\n                    this.$hint.attr(\"dir\", dir);\n                    this.trigger(\"langDirChanged\", dir);\n                }\n            },\n            _setQuery: function setQuery(val, silent) {\n                var areEquivalent, hasDifferentWhitespace;\n                areEquivalent = areQueriesEquivalent(val, this.query);\n                hasDifferentWhitespace = areEquivalent ? this.query.length !== val.length : false;\n                this.query = val;\n                if (!silent && !areEquivalent) {\n                    this.trigger(\"queryChanged\", this.query);\n                } else if (!silent && hasDifferentWhitespace) {\n                    this.trigger(\"whitespaceChanged\", this.query);\n                }\n            },\n            bind: function() {\n                var that = this, onBlur, onFocus, onKeydown, onInput;\n                onBlur = _.bind(this._onBlur, this);\n                onFocus = _.bind(this._onFocus, this);\n                onKeydown = _.bind(this._onKeydown, this);\n                onInput = _.bind(this._onInput, this);\n                this.$input.on(\"blur.tt\", onBlur).on(\"focus.tt\", onFocus).on(\"keydown.tt\", onKeydown);\n                if (!_.isMsie() || _.isMsie() > 9) {\n                    this.$input.on(\"input.tt\", onInput);\n                } else {\n                    this.$input.on(\"keydown.tt keypress.tt cut.tt paste.tt\", function($e) {\n                        if (specialKeyCodeMap[$e.which || $e.keyCode]) {\n                            return;\n                        }\n                        _.defer(_.bind(that._onInput, that, $e));\n                    });\n                }\n                return this;\n            },\n            focus: function focus() {\n                this.$input.focus();\n            },\n            blur: function blur() {\n                this.$input.blur();\n            },\n            getLangDir: function getLangDir() {\n                return this.dir;\n            },\n            getQuery: function getQuery() {\n                return this.query || \"\";\n            },\n            setQuery: function setQuery(val, silent) {\n                this.setInputValue(val);\n                this._setQuery(val, silent);\n            },\n            hasQueryChangedSinceLastFocus: function hasQueryChangedSinceLastFocus() {\n                return this.query !== this.queryWhenFocused;\n            },\n            getInputValue: function getInputValue() {\n                return this.$input.val();\n            },\n            setInputValue: function setInputValue(value) {\n                this.$input.val(value);\n                this.clearHintIfInvalid();\n                this._checkLanguageDirection();\n            },\n            resetInputValue: function resetInputValue() {\n                this.setInputValue(this.query);\n            },\n            getHint: function getHint() {\n                return this.$hint.val();\n            },\n            setHint: function setHint(value) {\n                this.$hint.val(value);\n            },\n            clearHint: function clearHint() {\n                this.setHint(\"\");\n            },\n            clearHintIfInvalid: function clearHintIfInvalid() {\n                var val, hint, valIsPrefixOfHint, isValid;\n                val = this.getInputValue();\n                hint = this.getHint();\n                valIsPrefixOfHint = val !== hint && hint.indexOf(val) === 0;\n                isValid = val !== \"\" && valIsPrefixOfHint && !this.hasOverflow();\n                !isValid && this.clearHint();\n            },\n            hasFocus: function hasFocus() {\n                return this.$input.is(\":focus\");\n            },\n            hasOverflow: function hasOverflow() {\n                var constraint = this.$input.width() - 2;\n                this.$overflowHelper.text(this.getInputValue());\n                return this.$overflowHelper.width() >= constraint;\n            },\n            isCursorAtEnd: function() {\n                var valueLength, selectionStart, range;\n                valueLength = this.$input.val().length;\n                selectionStart = this.$input[0].selectionStart;\n                if (_.isNumber(selectionStart)) {\n                    return selectionStart === valueLength;\n                } else if (document.selection) {\n                    range = document.selection.createRange();\n                    range.moveStart(\"character\", -valueLength);\n                    return valueLength === range.text.length;\n                }\n                return true;\n            },\n            destroy: function destroy() {\n                this.$hint.off(\".tt\");\n                this.$input.off(\".tt\");\n                this.$overflowHelper.remove();\n                this.$hint = this.$input = this.$overflowHelper = $(\"<div>\");\n            }\n        });\n        return Input;\n        function buildOverflowHelper($input) {\n            return $('<pre aria-hidden=\"true\"></pre>').css({\n                position: \"absolute\",\n                visibility: \"hidden\",\n                whiteSpace: \"pre\",\n                fontFamily: $input.css(\"font-family\"),\n                fontSize: $input.css(\"font-size\"),\n                fontStyle: $input.css(\"font-style\"),\n                fontVariant: $input.css(\"font-variant\"),\n                fontWeight: $input.css(\"font-weight\"),\n                wordSpacing: $input.css(\"word-spacing\"),\n                letterSpacing: $input.css(\"letter-spacing\"),\n                textIndent: $input.css(\"text-indent\"),\n                textRendering: $input.css(\"text-rendering\"),\n                textTransform: $input.css(\"text-transform\")\n            }).insertAfter($input);\n        }\n        function areQueriesEquivalent(a, b) {\n            return Input.normalizeQuery(a) === Input.normalizeQuery(b);\n        }\n        function withModifier($e) {\n            return $e.altKey || $e.ctrlKey || $e.metaKey || $e.shiftKey;\n        }\n    }();\n    var Dataset = function() {\n        \"use strict\";\n        var keys, nameGenerator;\n        keys = {\n            val: \"tt-selectable-display\",\n            obj: \"tt-selectable-object\"\n        };\n        nameGenerator = _.getIdGenerator();\n        function Dataset(o, www) {\n            o = o || {};\n            o.templates = o.templates || {};\n            o.templates.notFound = o.templates.notFound || o.templates.empty;\n            if (!o.source) {\n                $.error(\"missing source\");\n            }\n            if (!o.node) {\n                $.error(\"missing node\");\n            }\n            if (o.name && !isValidName(o.name)) {\n                $.error(\"invalid dataset name: \" + o.name);\n            }\n            www.mixin(this);\n            this.highlight = !!o.highlight;\n            this.name = o.name || nameGenerator();\n            this.limit = o.limit || 5;\n            this.displayFn = getDisplayFn(o.display || o.displayKey);\n            this.templates = getTemplates(o.templates, this.displayFn);\n            this.source = o.source.__ttAdapter ? o.source.__ttAdapter() : o.source;\n            this.async = _.isUndefined(o.async) ? this.source.length > 2 : !!o.async;\n            this._resetLastSuggestion();\n            this.$el = $(o.node).addClass(this.classes.dataset).addClass(this.classes.dataset + \"-\" + this.name);\n        }\n        Dataset.extractData = function extractData(el) {\n            var $el = $(el);\n            if ($el.data(keys.obj)) {\n                return {\n                    val: $el.data(keys.val) || \"\",\n                    obj: $el.data(keys.obj) || null\n                };\n            }\n            return null;\n        };\n        _.mixin(Dataset.prototype, EventEmitter, {\n            _overwrite: function overwrite(query, suggestions) {\n                suggestions = suggestions || [];\n                if (suggestions.length) {\n                    this._renderSuggestions(query, suggestions);\n                } else if (this.async && this.templates.pending) {\n                    this._renderPending(query);\n                } else if (!this.async && this.templates.notFound) {\n                    this._renderNotFound(query);\n                } else {\n                    this._empty();\n                }\n                this.trigger(\"rendered\", this.name, suggestions, false);\n            },\n            _append: function append(query, suggestions) {\n                suggestions = suggestions || [];\n                if (suggestions.length && this.$lastSuggestion.length) {\n                    this._appendSuggestions(query, suggestions);\n                } else if (suggestions.length) {\n                    this._renderSuggestions(query, suggestions);\n                } else if (!this.$lastSuggestion.length && this.templates.notFound) {\n                    this._renderNotFound(query);\n                }\n                this.trigger(\"rendered\", this.name, suggestions, true);\n            },\n            _renderSuggestions: function renderSuggestions(query, suggestions) {\n                var $fragment;\n                $fragment = this._getSuggestionsFragment(query, suggestions);\n                this.$lastSuggestion = $fragment.children().last();\n                this.$el.html($fragment).prepend(this._getHeader(query, suggestions)).append(this._getFooter(query, suggestions));\n            },\n            _appendSuggestions: function appendSuggestions(query, suggestions) {\n                var $fragment, $lastSuggestion;\n                $fragment = this._getSuggestionsFragment(query, suggestions);\n                $lastSuggestion = $fragment.children().last();\n                this.$lastSuggestion.after($fragment);\n                this.$lastSuggestion = $lastSuggestion;\n            },\n            _renderPending: function renderPending(query) {\n                var template = this.templates.pending;\n                this._resetLastSuggestion();\n                template && this.$el.html(template({\n                    query: query,\n                    dataset: this.name\n                }));\n            },\n            _renderNotFound: function renderNotFound(query) {\n                var template = this.templates.notFound;\n                this._resetLastSuggestion();\n                template && this.$el.html(template({\n                    query: query,\n                    dataset: this.name\n                }));\n            },\n            _empty: function empty() {\n                this.$el.empty();\n                this._resetLastSuggestion();\n            },\n            _getSuggestionsFragment: function getSuggestionsFragment(query, suggestions) {\n                var that = this, fragment;\n                fragment = document.createDocumentFragment();\n                _.each(suggestions, function getSuggestionNode(suggestion) {\n                    var $el, context;\n                    context = that._injectQuery(query, suggestion);\n                    $el = $(that.templates.suggestion(context)).data(keys.obj, suggestion).data(keys.val, that.displayFn(suggestion)).addClass(that.classes.suggestion + \" \" + that.classes.selectable);\n                    fragment.appendChild($el[0]);\n                });\n                this.highlight && highlight({\n                    className: this.classes.highlight,\n                    node: fragment,\n                    pattern: query\n                });\n                return $(fragment);\n            },\n            _getFooter: function getFooter(query, suggestions) {\n                return this.templates.footer ? this.templates.footer({\n                    query: query,\n                    suggestions: suggestions,\n                    dataset: this.name\n                }) : null;\n            },\n            _getHeader: function getHeader(query, suggestions) {\n                return this.templates.header ? this.templates.header({\n                    query: query,\n                    suggestions: suggestions,\n                    dataset: this.name\n                }) : null;\n            },\n            _resetLastSuggestion: function resetLastSuggestion() {\n                this.$lastSuggestion = $();\n            },\n            _injectQuery: function injectQuery(query, obj) {\n                return _.isObject(obj) ? _.mixin({\n                    _query: query\n                }, obj) : obj;\n            },\n            update: function update(query) {\n                var that = this, canceled = false, syncCalled = false, rendered = 0;\n                this.cancel();\n                this.cancel = function cancel() {\n                    canceled = true;\n                    that.cancel = $.noop;\n                    that.async && that.trigger(\"asyncCanceled\", query);\n                };\n                this.source(query, sync, async);\n                !syncCalled && sync([]);\n                function sync(suggestions) {\n                    if (syncCalled) {\n                        return;\n                    }\n                    syncCalled = true;\n                    suggestions = (suggestions || []).slice(0, that.limit);\n                    rendered = suggestions.length;\n                    that._overwrite(query, suggestions);\n                    if (rendered < that.limit && that.async) {\n                        that.trigger(\"asyncRequested\", query);\n                    }\n                }\n                function async(suggestions) {\n                    suggestions = suggestions || [];\n                    if (!canceled && rendered < that.limit) {\n                        that.cancel = $.noop;\n                        rendered += suggestions.length;\n                        that._append(query, suggestions.slice(0, that.limit - rendered));\n                        that.async && that.trigger(\"asyncReceived\", query);\n                    }\n                }\n            },\n            cancel: $.noop,\n            clear: function clear() {\n                this._empty();\n                this.cancel();\n                this.trigger(\"cleared\");\n            },\n            isEmpty: function isEmpty() {\n                return this.$el.is(\":empty\");\n            },\n            destroy: function destroy() {\n                this.$el = $(\"<div>\");\n            }\n        });\n        return Dataset;\n        function getDisplayFn(display) {\n            display = display || _.stringify;\n            return _.isFunction(display) ? display : displayFn;\n            function displayFn(obj) {\n                return obj[display];\n            }\n        }\n        function getTemplates(templates, displayFn) {\n            return {\n                notFound: templates.notFound && _.templatify(templates.notFound),\n                pending: templates.pending && _.templatify(templates.pending),\n                header: templates.header && _.templatify(templates.header),\n                footer: templates.footer && _.templatify(templates.footer),\n                suggestion: templates.suggestion || suggestionTemplate\n            };\n            function suggestionTemplate(context) {\n                return $(\"<div>\").text(displayFn(context));\n            }\n        }\n        function isValidName(str) {\n            return /^[_a-zA-Z0-9-]+$/.test(str);\n        }\n    }();\n    var Menu = function() {\n        \"use strict\";\n        function Menu(o, www) {\n            var that = this;\n            o = o || {};\n            if (!o.node) {\n                $.error(\"node is required\");\n            }\n            www.mixin(this);\n            this.$node = $(o.node);\n            this.query = null;\n            this.datasets = _.map(o.datasets, initializeDataset);\n            function initializeDataset(oDataset) {\n                var node = that.$node.find(oDataset.node).first();\n                oDataset.node = node.length ? node : $(\"<div>\").appendTo(that.$node);\n                return new Dataset(oDataset, www);\n            }\n        }\n        _.mixin(Menu.prototype, EventEmitter, {\n            _onSelectableClick: function onSelectableClick($e) {\n                this.trigger(\"selectableClicked\", $($e.currentTarget));\n            },\n            _onRendered: function onRendered(type, dataset, suggestions, async) {\n                this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty());\n                this.trigger(\"datasetRendered\", dataset, suggestions, async);\n            },\n            _onCleared: function onCleared() {\n                this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty());\n                this.trigger(\"datasetCleared\");\n            },\n            _propagate: function propagate() {\n                this.trigger.apply(this, arguments);\n            },\n            _allDatasetsEmpty: function allDatasetsEmpty() {\n                return _.every(this.datasets, isDatasetEmpty);\n                function isDatasetEmpty(dataset) {\n                    return dataset.isEmpty();\n                }\n            },\n            _getSelectables: function getSelectables() {\n                return this.$node.find(this.selectors.selectable);\n            },\n            _removeCursor: function _removeCursor() {\n                var $selectable = this.getActiveSelectable();\n                $selectable && $selectable.removeClass(this.classes.cursor);\n            },\n            _ensureVisible: function ensureVisible($el) {\n                var elTop, elBottom, nodeScrollTop, nodeHeight;\n                elTop = $el.position().top;\n                elBottom = elTop + $el.outerHeight(true);\n                nodeScrollTop = this.$node.scrollTop();\n                nodeHeight = this.$node.height() + parseInt(this.$node.css(\"paddingTop\"), 10) + parseInt(this.$node.css(\"paddingBottom\"), 10);\n                if (elTop < 0) {\n                    this.$node.scrollTop(nodeScrollTop + elTop);\n                } else if (nodeHeight < elBottom) {\n                    this.$node.scrollTop(nodeScrollTop + (elBottom - nodeHeight));\n                }\n            },\n            bind: function() {\n                var that = this, onSelectableClick;\n                onSelectableClick = _.bind(this._onSelectableClick, this);\n                this.$node.on(\"click.tt\", this.selectors.selectable, onSelectableClick);\n                _.each(this.datasets, function(dataset) {\n                    dataset.onSync(\"asyncRequested\", that._propagate, that).onSync(\"asyncCanceled\", that._propagate, that).onSync(\"asyncReceived\", that._propagate, that).onSync(\"rendered\", that._onRendered, that).onSync(\"cleared\", that._onCleared, that);\n                });\n                return this;\n            },\n            isOpen: function isOpen() {\n                return this.$node.hasClass(this.classes.open);\n            },\n            open: function open() {\n                this.$node.addClass(this.classes.open);\n            },\n            close: function close() {\n                this.$node.removeClass(this.classes.open);\n                this._removeCursor();\n            },\n            setLanguageDirection: function setLanguageDirection(dir) {\n                this.$node.attr(\"dir\", dir);\n            },\n            selectableRelativeToCursor: function selectableRelativeToCursor(delta) {\n                var $selectables, $oldCursor, oldIndex, newIndex;\n                $oldCursor = this.getActiveSelectable();\n                $selectables = this._getSelectables();\n                oldIndex = $oldCursor ? $selectables.index($oldCursor) : -1;\n                newIndex = oldIndex + delta;\n                newIndex = (newIndex + 1) % ($selectables.length + 1) - 1;\n                newIndex = newIndex < -1 ? $selectables.length - 1 : newIndex;\n                return newIndex === -1 ? null : $selectables.eq(newIndex);\n            },\n            setCursor: function setCursor($selectable) {\n                this._removeCursor();\n                if ($selectable = $selectable && $selectable.first()) {\n                    $selectable.addClass(this.classes.cursor);\n                    this._ensureVisible($selectable);\n                }\n            },\n            getSelectableData: function getSelectableData($el) {\n                return $el && $el.length ? Dataset.extractData($el) : null;\n            },\n            getActiveSelectable: function getActiveSelectable() {\n                var $selectable = this._getSelectables().filter(this.selectors.cursor).first();\n                return $selectable.length ? $selectable : null;\n            },\n            getTopSelectable: function getTopSelectable() {\n                var $selectable = this._getSelectables().first();\n                return $selectable.length ? $selectable : null;\n            },\n            update: function update(query) {\n                var isValidUpdate = query !== this.query;\n                if (isValidUpdate) {\n                    this.query = query;\n                    _.each(this.datasets, updateDataset);\n                }\n                return isValidUpdate;\n                function updateDataset(dataset) {\n                    dataset.update(query);\n                }\n            },\n            empty: function empty() {\n                _.each(this.datasets, clearDataset);\n                this.query = null;\n                this.$node.addClass(this.classes.empty);\n                function clearDataset(dataset) {\n                    dataset.clear();\n                }\n            },\n            destroy: function destroy() {\n                this.$node.off(\".tt\");\n                this.$node = $(\"<div>\");\n                _.each(this.datasets, destroyDataset);\n                function destroyDataset(dataset) {\n                    dataset.destroy();\n                }\n            }\n        });\n        return Menu;\n    }();\n    var DefaultMenu = function() {\n        \"use strict\";\n        var s = Menu.prototype;\n        function DefaultMenu() {\n            Menu.apply(this, [].slice.call(arguments, 0));\n        }\n        _.mixin(DefaultMenu.prototype, Menu.prototype, {\n            open: function open() {\n                !this._allDatasetsEmpty() && this._show();\n                return s.open.apply(this, [].slice.call(arguments, 0));\n            },\n            close: function close() {\n                this._hide();\n                return s.close.apply(this, [].slice.call(arguments, 0));\n            },\n            _onRendered: function onRendered() {\n                if (this._allDatasetsEmpty()) {\n                    this._hide();\n                } else {\n                    this.isOpen() && this._show();\n                }\n                return s._onRendered.apply(this, [].slice.call(arguments, 0));\n            },\n            _onCleared: function onCleared() {\n                if (this._allDatasetsEmpty()) {\n                    this._hide();\n                } else {\n                    this.isOpen() && this._show();\n                }\n                return s._onCleared.apply(this, [].slice.call(arguments, 0));\n            },\n            setLanguageDirection: function setLanguageDirection(dir) {\n                this.$node.css(dir === \"ltr\" ? this.css.ltr : this.css.rtl);\n                return s.setLanguageDirection.apply(this, [].slice.call(arguments, 0));\n            },\n            _hide: function hide() {\n                this.$node.hide();\n            },\n            _show: function show() {\n                this.$node.css(\"display\", \"block\");\n            }\n        });\n        return DefaultMenu;\n    }();\n    var Typeahead = function() {\n        \"use strict\";\n        function Typeahead(o, www) {\n            var onFocused, onBlurred, onEnterKeyed, onTabKeyed, onEscKeyed, onUpKeyed, onDownKeyed, onLeftKeyed, onRightKeyed, onQueryChanged, onWhitespaceChanged;\n            o = o || {};\n            if (!o.input) {\n                $.error(\"missing input\");\n            }\n            if (!o.menu) {\n                $.error(\"missing menu\");\n            }\n            if (!o.eventBus) {\n                $.error(\"missing event bus\");\n            }\n            www.mixin(this);\n            this.eventBus = o.eventBus;\n            this.minLength = _.isNumber(o.minLength) ? o.minLength : 1;\n            this.input = o.input;\n            this.menu = o.menu;\n            this.enabled = true;\n            this.active = false;\n            this.input.hasFocus() && this.activate();\n            this.dir = this.input.getLangDir();\n            this._hacks();\n            this.menu.bind().onSync(\"selectableClicked\", this._onSelectableClicked, this).onSync(\"asyncRequested\", this._onAsyncRequested, this).onSync(\"asyncCanceled\", this._onAsyncCanceled, this).onSync(\"asyncReceived\", this._onAsyncReceived, this).onSync(\"datasetRendered\", this._onDatasetRendered, this).onSync(\"datasetCleared\", this._onDatasetCleared, this);\n            onFocused = c(this, \"activate\", \"open\", \"_onFocused\");\n            onBlurred = c(this, \"deactivate\", \"_onBlurred\");\n            onEnterKeyed = c(this, \"isActive\", \"isOpen\", \"_onEnterKeyed\");\n            onTabKeyed = c(this, \"isActive\", \"isOpen\", \"_onTabKeyed\");\n            onEscKeyed = c(this, \"isActive\", \"_onEscKeyed\");\n            onUpKeyed = c(this, \"isActive\", \"open\", \"_onUpKeyed\");\n            onDownKeyed = c(this, \"isActive\", \"open\", \"_onDownKeyed\");\n            onLeftKeyed = c(this, \"isActive\", \"isOpen\", \"_onLeftKeyed\");\n            onRightKeyed = c(this, \"isActive\", \"isOpen\", \"_onRightKeyed\");\n            onQueryChanged = c(this, \"_openIfActive\", \"_onQueryChanged\");\n            onWhitespaceChanged = c(this, \"_openIfActive\", \"_onWhitespaceChanged\");\n            this.input.bind().onSync(\"focused\", onFocused, this).onSync(\"blurred\", onBlurred, this).onSync(\"enterKeyed\", onEnterKeyed, this).onSync(\"tabKeyed\", onTabKeyed, this).onSync(\"escKeyed\", onEscKeyed, this).onSync(\"upKeyed\", onUpKeyed, this).onSync(\"downKeyed\", onDownKeyed, this).onSync(\"leftKeyed\", onLeftKeyed, this).onSync(\"rightKeyed\", onRightKeyed, this).onSync(\"queryChanged\", onQueryChanged, this).onSync(\"whitespaceChanged\", onWhitespaceChanged, this).onSync(\"langDirChanged\", this._onLangDirChanged, this);\n        }\n        _.mixin(Typeahead.prototype, {\n            _hacks: function hacks() {\n                var $input, $menu;\n                $input = this.input.$input || $(\"<div>\");\n                $menu = this.menu.$node || $(\"<div>\");\n                $input.on(\"blur.tt\", function($e) {\n                    var active, isActive, hasActive;\n                    active = document.activeElement;\n                    isActive = $menu.is(active);\n                    hasActive = $menu.has(active).length > 0;\n                    if (_.isMsie() && (isActive || hasActive)) {\n                        $e.preventDefault();\n                        $e.stopImmediatePropagation();\n                        _.defer(function() {\n                            $input.focus();\n                        });\n                    }\n                });\n                $menu.on(\"mousedown.tt\", function($e) {\n                    $e.preventDefault();\n                });\n            },\n            _onSelectableClicked: function onSelectableClicked(type, $el) {\n                this.select($el);\n            },\n            _onDatasetCleared: function onDatasetCleared() {\n                this._updateHint();\n            },\n            _onDatasetRendered: function onDatasetRendered(type, dataset, suggestions, async) {\n                this._updateHint();\n                this.eventBus.trigger(\"render\", suggestions, async, dataset);\n            },\n            _onAsyncRequested: function onAsyncRequested(type, dataset, query) {\n                this.eventBus.trigger(\"asyncrequest\", query, dataset);\n            },\n            _onAsyncCanceled: function onAsyncCanceled(type, dataset, query) {\n                this.eventBus.trigger(\"asynccancel\", query, dataset);\n            },\n            _onAsyncReceived: function onAsyncReceived(type, dataset, query) {\n                this.eventBus.trigger(\"asyncreceive\", query, dataset);\n            },\n            _onFocused: function onFocused() {\n                this._minLengthMet() && this.menu.update(this.input.getQuery());\n            },\n            _onBlurred: function onBlurred() {\n                if (this.input.hasQueryChangedSinceLastFocus()) {\n                    this.eventBus.trigger(\"change\", this.input.getQuery());\n                }\n            },\n            _onEnterKeyed: function onEnterKeyed(type, $e) {\n                var $selectable;\n                if ($selectable = this.menu.getActiveSelectable()) {\n                    this.select($selectable) && $e.preventDefault();\n                }\n            },\n            _onTabKeyed: function onTabKeyed(type, $e) {\n                var $selectable;\n                if ($selectable = this.menu.getActiveSelectable()) {\n                    this.select($selectable) && $e.preventDefault();\n                } else if ($selectable = this.menu.getTopSelectable()) {\n                    this.autocomplete($selectable) && $e.preventDefault();\n                }\n            },\n            _onEscKeyed: function onEscKeyed() {\n                this.close();\n            },\n            _onUpKeyed: function onUpKeyed() {\n                this.moveCursor(-1);\n            },\n            _onDownKeyed: function onDownKeyed() {\n                this.moveCursor(+1);\n            },\n            _onLeftKeyed: function onLeftKeyed() {\n                if (this.dir === \"rtl\" && this.input.isCursorAtEnd()) {\n                    this.autocomplete(this.menu.getTopSelectable());\n                }\n            },\n            _onRightKeyed: function onRightKeyed() {\n                if (this.dir === \"ltr\" && this.input.isCursorAtEnd()) {\n                    this.autocomplete(this.menu.getTopSelectable());\n                }\n            },\n            _onQueryChanged: function onQueryChanged(e, query) {\n                this._minLengthMet(query) ? this.menu.update(query) : this.menu.empty();\n            },\n            _onWhitespaceChanged: function onWhitespaceChanged() {\n                this._updateHint();\n            },\n            _onLangDirChanged: function onLangDirChanged(e, dir) {\n                if (this.dir !== dir) {\n                    this.dir = dir;\n                    this.menu.setLanguageDirection(dir);\n                }\n            },\n            _openIfActive: function openIfActive() {\n                this.isActive() && this.open();\n            },\n            _minLengthMet: function minLengthMet(query) {\n                query = _.isString(query) ? query : this.input.getQuery() || \"\";\n                return query.length >= this.minLength;\n            },\n            _updateHint: function updateHint() {\n                var $selectable, data, val, query, escapedQuery, frontMatchRegEx, match;\n                $selectable = this.menu.getTopSelectable();\n                data = this.menu.getSelectableData($selectable);\n                val = this.input.getInputValue();\n                if (data && !_.isBlankString(val) && !this.input.hasOverflow()) {\n                    query = Input.normalizeQuery(val);\n                    escapedQuery = _.escapeRegExChars(query);\n                    frontMatchRegEx = new RegExp(\"^(?:\" + escapedQuery + \")(.+$)\", \"i\");\n                    match = frontMatchRegEx.exec(data.val);\n                    match && this.input.setHint(val + match[1]);\n                } else {\n                    this.input.clearHint();\n                }\n            },\n            isEnabled: function isEnabled() {\n                return this.enabled;\n            },\n            enable: function enable() {\n                this.enabled = true;\n            },\n            disable: function disable() {\n                this.enabled = false;\n            },\n            isActive: function isActive() {\n                return this.active;\n            },\n            activate: function activate() {\n                if (this.isActive()) {\n                    return true;\n                } else if (!this.isEnabled() || this.eventBus.before(\"active\")) {\n                    return false;\n                } else {\n                    this.active = true;\n                    this.eventBus.trigger(\"active\");\n                    return true;\n                }\n            },\n            deactivate: function deactivate() {\n                if (!this.isActive()) {\n                    return true;\n                } else if (this.eventBus.before(\"idle\")) {\n                    return false;\n                } else {\n                    this.active = false;\n                    this.close();\n                    this.eventBus.trigger(\"idle\");\n                    return true;\n                }\n            },\n            isOpen: function isOpen() {\n                return this.menu.isOpen();\n            },\n            open: function open() {\n                if (!this.isOpen() && !this.eventBus.before(\"open\")) {\n                    this.menu.open();\n                    this._updateHint();\n                    this.eventBus.trigger(\"open\");\n                }\n                return this.isOpen();\n            },\n            close: function close() {\n                if (this.isOpen() && !this.eventBus.before(\"close\")) {\n                    this.menu.close();\n                    this.input.clearHint();\n                    this.input.resetInputValue();\n                    this.eventBus.trigger(\"close\");\n                }\n                return !this.isOpen();\n            },\n            setVal: function setVal(val) {\n                this.input.setQuery(_.toStr(val));\n            },\n            getVal: function getVal() {\n                return this.input.getQuery();\n            },\n            select: function select($selectable) {\n                var data = this.menu.getSelectableData($selectable);\n                if (data && !this.eventBus.before(\"select\", data.obj)) {\n                    this.input.setQuery(data.val, true);\n                    this.eventBus.trigger(\"select\", data.obj);\n                    this.close();\n                    return true;\n                }\n                return false;\n            },\n            autocomplete: function autocomplete($selectable) {\n                var query, data, isValid;\n                query = this.input.getQuery();\n                data = this.menu.getSelectableData($selectable);\n                isValid = data && query !== data.val;\n                if (isValid && !this.eventBus.before(\"autocomplete\", data.obj)) {\n                    this.input.setQuery(data.val);\n                    this.eventBus.trigger(\"autocomplete\", data.obj);\n                    return true;\n                }\n                return false;\n            },\n            moveCursor: function moveCursor(delta) {\n                var query, $candidate, data, payload, cancelMove;\n                query = this.input.getQuery();\n                $candidate = this.menu.selectableRelativeToCursor(delta);\n                data = this.menu.getSelectableData($candidate);\n                payload = data ? data.obj : null;\n                cancelMove = this._minLengthMet() && this.menu.update(query);\n                if (!cancelMove && !this.eventBus.before(\"cursorchange\", payload)) {\n                    this.menu.setCursor($candidate);\n                    if (data) {\n                        this.input.setInputValue(data.val);\n                    } else {\n                        this.input.resetInputValue();\n                        this._updateHint();\n                    }\n                    this.eventBus.trigger(\"cursorchange\", payload);\n                    return true;\n                }\n                return false;\n            },\n            destroy: function destroy() {\n                this.input.destroy();\n                this.menu.destroy();\n            }\n        });\n        return Typeahead;\n        function c(ctx) {\n            var methods = [].slice.call(arguments, 1);\n            return function() {\n                var args = [].slice.call(arguments);\n                _.each(methods, function(method) {\n                    return ctx[method].apply(ctx, args);\n                });\n            };\n        }\n    }();\n    (function() {\n        \"use strict\";\n        var old, keys, methods;\n        old = $.fn.typeahead;\n        keys = {\n            www: \"tt-www\",\n            attrs: \"tt-attrs\",\n            typeahead: \"tt-typeahead\"\n        };\n        methods = {\n            initialize: function initialize(o, datasets) {\n                var www;\n                datasets = _.isArray(datasets) ? datasets : [].slice.call(arguments, 1);\n                o = o || {};\n                www = WWW(o.classNames);\n                return this.each(attach);\n                function attach() {\n                    var $input, $wrapper, $hint, $menu, defaultHint, defaultMenu, eventBus, input, menu, typeahead, MenuConstructor;\n                    _.each(datasets, function(d) {\n                        d.highlight = !!o.highlight;\n                    });\n                    $input = $(this);\n                    $wrapper = $(www.html.wrapper);\n                    $hint = $elOrNull(o.hint);\n                    $menu = $elOrNull(o.menu);\n                    defaultHint = o.hint !== false && !$hint;\n                    defaultMenu = o.menu !== false && !$menu;\n                    defaultHint && ($hint = buildHintFromInput($input, www));\n                    defaultMenu && ($menu = $(www.html.menu).css(www.css.menu));\n                    $hint && $hint.val(\"\");\n                    $input = prepInput($input, www);\n                    if (defaultHint || defaultMenu) {\n                        $wrapper.css(www.css.wrapper);\n                        $input.css(defaultHint ? www.css.input : www.css.inputWithNoHint);\n                        $input.wrap($wrapper).parent().prepend(defaultHint ? $hint : null).append(defaultMenu ? $menu : null);\n                    }\n                    MenuConstructor = defaultMenu ? DefaultMenu : Menu;\n                    eventBus = new EventBus({\n                        el: $input\n                    });\n                    input = new Input({\n                        hint: $hint,\n                        input: $input\n                    }, www);\n                    menu = new MenuConstructor({\n                        node: $menu,\n                        datasets: datasets\n                    }, www);\n                    typeahead = new Typeahead({\n                        input: input,\n                        menu: menu,\n                        eventBus: eventBus,\n                        minLength: o.minLength\n                    }, www);\n                    $input.data(keys.www, www);\n                    $input.data(keys.typeahead, typeahead);\n                }\n            },\n            isEnabled: function isEnabled() {\n                var enabled;\n                ttEach(this.first(), function(t) {\n                    enabled = t.isEnabled();\n                });\n                return enabled;\n            },\n            enable: function enable() {\n                ttEach(this, function(t) {\n                    t.enable();\n                });\n                return this;\n            },\n            disable: function disable() {\n                ttEach(this, function(t) {\n                    t.disable();\n                });\n                return this;\n            },\n            isActive: function isActive() {\n                var active;\n                ttEach(this.first(), function(t) {\n                    active = t.isActive();\n                });\n                return active;\n            },\n            activate: function activate() {\n                ttEach(this, function(t) {\n                    t.activate();\n                });\n                return this;\n            },\n            deactivate: function deactivate() {\n                ttEach(this, function(t) {\n                    t.deactivate();\n                });\n                return this;\n            },\n            isOpen: function isOpen() {\n                var open;\n                ttEach(this.first(), function(t) {\n                    open = t.isOpen();\n                });\n                return open;\n            },\n            open: function open() {\n                ttEach(this, function(t) {\n                    t.open();\n                });\n                return this;\n            },\n            close: function close() {\n                ttEach(this, function(t) {\n                    t.close();\n                });\n                return this;\n            },\n            select: function select(el) {\n                var success = false, $el = $(el);\n                ttEach(this.first(), function(t) {\n                    success = t.select($el);\n                });\n                return success;\n            },\n            autocomplete: function autocomplete(el) {\n                var success = false, $el = $(el);\n                ttEach(this.first(), function(t) {\n                    success = t.autocomplete($el);\n                });\n                return success;\n            },\n            moveCursor: function moveCursoe(delta) {\n                var success = false;\n                ttEach(this.first(), function(t) {\n                    success = t.moveCursor(delta);\n                });\n                return success;\n            },\n            val: function val(newVal) {\n                var query;\n                if (!arguments.length) {\n                    ttEach(this.first(), function(t) {\n                        query = t.getVal();\n                    });\n                    return query;\n                } else {\n                    ttEach(this, function(t) {\n                        t.setVal(newVal);\n                    });\n                    return this;\n                }\n            },\n            destroy: function destroy() {\n                ttEach(this, function(typeahead, $input) {\n                    revert($input);\n                    typeahead.destroy();\n                });\n                return this;\n            }\n        };\n        $.fn.typeahead = function(method) {\n            if (methods[method]) {\n                return methods[method].apply(this, [].slice.call(arguments, 1));\n            } else {\n                return methods.initialize.apply(this, arguments);\n            }\n        };\n        $.fn.typeahead.noConflict = function noConflict() {\n            $.fn.typeahead = old;\n            return this;\n        };\n        function ttEach($els, fn) {\n            $els.each(function() {\n                var $input = $(this), typeahead;\n                (typeahead = $input.data(keys.typeahead)) && fn(typeahead, $input);\n            });\n        }\n        function buildHintFromInput($input, www) {\n            return $input.clone().addClass(www.classes.hint).removeData().css(www.css.hint).css(getBackgroundStyles($input)).prop(\"readonly\", true).removeAttr(\"id name placeholder required\").attr({\n                autocomplete: \"off\",\n                spellcheck: \"false\",\n                tabindex: -1\n            });\n        }\n        function prepInput($input, www) {\n            $input.data(keys.attrs, {\n                dir: $input.attr(\"dir\"),\n                autocomplete: $input.attr(\"autocomplete\"),\n                spellcheck: $input.attr(\"spellcheck\"),\n                style: $input.attr(\"style\")\n            });\n            $input.addClass(www.classes.input).attr({\n                autocomplete: \"off\",\n                spellcheck: false\n            });\n            try {\n                !$input.attr(\"dir\") && $input.attr(\"dir\", \"auto\");\n            } catch (e) {}\n            return $input;\n        }\n        function getBackgroundStyles($el) {\n            return {\n                backgroundAttachment: $el.css(\"background-attachment\"),\n                backgroundClip: $el.css(\"background-clip\"),\n                backgroundColor: $el.css(\"background-color\"),\n                backgroundImage: $el.css(\"background-image\"),\n                backgroundOrigin: $el.css(\"background-origin\"),\n                backgroundPosition: $el.css(\"background-position\"),\n                backgroundRepeat: $el.css(\"background-repeat\"),\n                backgroundSize: $el.css(\"background-size\")\n            };\n        }\n        function revert($input) {\n            var www, $wrapper;\n            www = $input.data(keys.www);\n            $wrapper = $input.parent().filter(www.selectors.wrapper);\n            _.each($input.data(keys.attrs), function(val, key) {\n                _.isUndefined(val) ? $input.removeAttr(key) : $input.attr(key, val);\n            });\n            $input.removeData(keys.typeahead).removeData(keys.www).removeData(keys.attr).removeClass(www.classes.input);\n            if ($wrapper.length) {\n                $input.detach().insertAfter($wrapper);\n                $wrapper.remove();\n            }\n        }\n        function $elOrNull(obj) {\n            var isValid, $el;\n            isValid = _.isJQuery(obj) || _.isElement(obj);\n            $el = isValid ? $(obj).first() : [];\n            return $el.length ? $el : null;\n        }\n    })();\n});\ndefine(\"typeahead\", [\"jquery\"], (function (global) {\n    return function () {\n        var ret, fn;\n       fn = function ($) {\n\treturn require.s.contexts._.registry['typeahead.js'].factory($);\n      };\n        ret = fn.apply(global, arguments);\n        return ret;\n    };\n}(this)));\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2017, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Support the SWISH search box.  This we want to find:\n *\n *   - Predicates based on templates we also use for template completion\n *   - Source code (line)\t\t[TBD]\n *   - Saved programs by\n *     - Name\n *     - Tag\n *     - Description\t\t\t[TBD]\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('search',[ \"jquery\", \"config\", \"utils\", \"bloodhound\", \"typeahead\" ],\n       function($, config, utils, Bloodhound) {\n\n(function($) {\n  var pluginName = 'search';\n\n  /** @lends $.fn.search */\n  var methods = {\n    /**\n     * Turn Bootstrap search input into a typeahead widget\n     * @param {Object}  [options]\n     * @param {Boolean} [options.search=true] If false, merely use\n     * typeahead to fill a value.\n     */\n    _init: function(options) {\n      options = options||{};\n\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar query;\t\t\t/* current query */\n\n\t\t /*******************************\n\t\t *\t FILE COMPLETION\t*\n\t\t *******************************/\n\n\tvar files = new Bloodhound({\n\t\t\tname: \"files\",\n\t\t\tremote: { url: config.http.locations.swish_typeahead +\n\t\t\t\t       \"?set=file&q=%QUERY\",\n\t\t\t\t  wildcard: '%QUERY'\n\t\t\t},\n\t\t\tdatumTokenizer: fileTokenizer,\n\t\t\tqueryTokenizer: Bloodhound.tokenizers.whitespace\n\t               });\n\tfiles.initialize();\n\n\tfunction fileTokenizer(f) {\n\t  return (f.tags||[]).push(f.name);\n\t}\n\n\tfunction renderFile(f) {\n\t  function filetype(file) {\n\t    return file.split('.').pop();\n\t  }\n\t  function filebase(file) {\n\t    return file.split('.').slice(0,-1).join(\".\");\n\t  }\n\n\t  var str = \"<div class=\\\"tt-match file type-icon \"\n\t          + filetype(f.name)\n\t          + \"\\\">\"\n\t\t  + \"<span class=\\\"tt-label\\\">\"\n\t\t  + utils.htmlEncode(filebase(f.name));\n\t          + \"</span>\";\n\n\t  if ( f.tags ) {\n\t    str += \"<span class=\\\"tt-tags\\\">\";\n\t    for(var i=0; i<f.tags.length; i++) {\n\t      var tag = f.tags[i];\n\t      str += \"<span class=\\\"tt-tag\\\">\"\n\t\t   + utils.htmlEncode(tag)\n\t\t   + \"</span>\";\n\t    }\n\t    str += \"</span>\";\n\t  }\n\n\t  if ( f.title )\n\t    str += \"<div class=\\\"tt-title file\\\">\"\n\t\t + utils.htmlEncode(f.title)\n\t\t + \"</div>\";\n\t  str += \"</div>\";\n\n\t  return str;\n\t}\n\n\t\t /*******************************\n\t\t *     SEARCH STORE SOURCES\t*\n\t\t *******************************/\n\n\tvar storeContent = new Bloodhound({\n\t\t\t     name: \"store_content\",\n\t\t\t     limit: 20,\n\t\t\t     cache: false,\n\t\t\t     remote: {\n\t\t\t       url: config.http.locations.swish_typeahead +\n\t\t\t\t     \"?set=store_content&q=%QUERY\",\n\t\t\t       replace:bloodHoundURL\n\t\t\t     },\n\t\t\t     datumTokenizer: sourceLineTokenizer,\n\t\t\t     queryTokenizer: Bloodhound.tokenizers.whitespace\n\t                   });\n\tstoreContent.initialize();\n\n\tvar currentFile  = null;\n\tvar currentAlias = null;\n\tfunction renderStoreSourceLine(hit) {\n\t  var str = \"\";\n\n\t  if ( hit.file != currentFile || hit.alias != currentAlias ) {\n\t    var ext = hit.file.split('.').pop();\n\t    currentFile = hit.file;\n\t    currentAlias = hit.alias;\n\t    str = \"<div class=\\\"tt-file-header type-icon \"+ext+\"\\\">\"\n\t\t+ \"<span class=\\\"tt-path-file\\\">\"\n\t\t+ utils.htmlEncode(hit.file)\n\t\t+ \"</span>\"\n\t\t+ \"</div>\";\n\t  }\n\n\t  return str+renderSourceMatch(hit);\n\t}\n\n\t\t /*******************************\n\t\t *     SEARCH REMOTE SOURCES\t*\n\t\t *******************************/\n\n\tvar sources = new Bloodhound({\n\t\t\tname: \"source\",\n\t\t\tlimit: 15,\n\t\t\tcache: false,\n\t\t\tquery_cache_length: 1,\n\t\t\tremote: {\n\t\t\t  url: config.http.locations.swish_typeahead +\n\t\t\t\t\"?set=sources&q=%QUERY\",\n\t\t\t  replace: bloodHoundURL\n\t\t\t},\n\t\t\tdatumTokenizer: sourceLineTokenizer,\n\t\t\tqueryTokenizer: Bloodhound.tokenizers.whitespace\n\t               });\n\tsources.initialize();\n\n\tfunction sourceLineTokenizer(hit) {\n\t  return Bloodhound.tokenizers.whitespace(hit.text);\n\t}\n\n\tfunction renderSourceLine(hit) {\n\t  var str = \"\";\n\n\t  if ( hit.file != currentFile || hit.alias != currentAlias ) {\n\t    currentFile = hit.file;\n\t    currentAlias = hit.alias;\n\t    str = \"<div class=\\\"tt-file-header type-icon \"+hit.ext+\"\\\">\"\n\t        + \"<span class=\\\"tt-path-alias\\\">\"\n\t        + utils.htmlEncode(hit.alias)\n\t\t+ \"</span>(<span class=\\\"tt-path-file\\\">\"\n\t\t+ utils.htmlEncode(hit.file)\n\t\t+ \")</span>\"\n\t\t+ \"</div>\";\n\t  }\n\n\t  if ( hit.text )\n\t    str += renderSourceMatch(hit);\n\t  return str;\n\t}\n\n\n\t\t /*******************************\n\t\t *    PREDICATE COMPLETION\t*\n\t\t *******************************/\n\n\tfunction predicateMatcher(q, cb) {\n\t  var templates = config.swish.templates;\n\t  var matches = [];\n\t  var ql = q.split(\" \");\n\t  var pl = [];\n\n\t  for(var i=0; i<ql.length; i++)\n\t    pl.push({prefix:ql[i], regex:new RegExp(\"_\"+ql[i])});\n\n\t  for(var i=0; i<templates.length; i++) {\n\t    var templ = templates[i];\n\n\t    if ( templ.arity !== undefined ) {\n\t      for(var j=0, match=true; j<pl.length && match; j++) {\n\t\tif ( !(templ.name.startsWith(pl[j].prefix) ||\n\t\t       templ.name.match(pl[j].regex)) )\n\t\t  match=false;\n\t      }\n\t      if ( match )\n\t        matches.push(templ);\n\t    }\n\t  }\n\n\t  cb(matches);\n\t}\n\n\n\tfunction renderPredicate(p) {\n\t  var str = \"<div class=\\\"tt-match predicate\";\n\n\t  if ( p.type ) str += \" \" + p.type;\n\t  if ( p.mode ) str += \"\\\" title=\\\"\"\n                             + p.mode;\n\n\t  str += \"\\\">\"\n               + \"<span class=\\\"tt-label\\\">\"\n\t       + utils.htmlEncode(p.name)\n\t       + \"/\"\n\t       + p.arity\n\t       + \"</span>\";\n\n\t  if ( p.iso ) {\n\t    str += \"<span class=\\\"tt-tags\\\">\";\n\t    if ( p.iso )\n\t      str += \"<span class=\\\"tt-tag\\\">ISO</span>\";\n\t    str += \"</span>\";\n\t  }\n\n\t  if ( p.summary )\n\t    str += \"<div class=\\\"tt-title file\\\">\"\n\t\t + utils.htmlEncode(p.summary)\n\t\t + \"</div>\";\n\t  str += \"</div>\";\n\n\n\t  str += \"</div>\";\n\n\t  return str;\n\t}\n\n\t\t /*******************************\n\t\t *\t   SEARCH SOURCE\t*\n\t\t *******************************/\n\n\tvar sourceRE;\n\n\tfunction sourceMatcher(q, cb) {\n\t  query = q;\n\t  if ( q.length < 2 ) return [];\n\n\t  var matches = [];\n\t  var re = new RegExp(\"\\\\b\"+q, \"g\");\n\t  sourceRE = re;\n\n\t  $(\".prolog-editor\").each(function() {\n\t    var editor = this;\n\t    var m = $(editor).prologEditor('search', re, {max: 7});\n\n\t    for(var i=0; i<m.length; i++) {\n\t      m[i].editor = editor;\n\t      m[i].regex  = sourceRE;\n\t      matches.push(m[i]);\n\t    }\n\t  });\n\n\t  cb(matches);\n\t}\n\n\n\tfunction renderSourceMatch(hit) {\n\t  var text = hit.text;\n\t  var i;\n\n\t  if ( (i=text.search(sourceRE)) > 20 )\n\t    text = \"...\"+text.slice(i-17);\n\t  if ( text.length > 80 )\n\t    text = text.substring(0,80);\n\n\t  var str = \"<div class=\\\"tt-match source\\\">\"\n\t          + \"<span class=\\\"tt-line\\\">\"\n\t\t  + \"<span class=\\\"tt-lineno\\\">\"\n\t\t  + hit.line\n\t\t  + \"</span>\"\n\t\t  + \"<span class=\\\"tt-text\\\">\"\n\t\t  + utils.htmlEncode(text)\n\t          + \"</span>\"\n\t          + \"</span>\"\n\t\t  + \"</div>\";\n\n\t  return str;\n\t}\n\n\n\t\t /*******************************\n\t\t *\t       USERS\t\t*\n\t\t *******************************/\n\n\tvar users = new Bloodhound({\n\t\t\t     name: \"users\",\n\t\t\t     limit: 20,\n\t\t\t     cache: false,\n\t\t\t     remote: {\n\t\t\t       url: config.http.locations.swish_typeahead +\n\t\t\t\t     \"?set=user&q=%QUERY\",\n\t\t\t       replace:bloodHoundURL\n\t\t\t     },\n\t\t\t     datumTokenizer: sourceLineTokenizer,\n\t\t\t     queryTokenizer: Bloodhound.tokenizers.whitespace\n\t                   });\n\tusers.initialize();\n\n\tfunction renderUser(hit) {\n\t  function avatar(hit) {\n\t    if ( hit.avatar ) {\n\t      return '<img class=\"avatar\" src=\"'+encodeURI(hit.avatar)+'\">';\n\t    } else {\n\t      return \"\";\n\t    }\n\t  }\n\n\t  var str = '<div class=\"tt-match user\">'\n\t\t  + avatar(hit)\n\t\t  + '<span class=\"tt-label\">'\n\t\t  + utils.htmlEncode(hit.name)\n\t\t  + '</span>'\n\t\t  + '</div>';\n\n\t  return str;\n\t}\n\n\n\t\t /*******************************\n\t\t *\t      COMBINE\t\t*\n\t\t *******************************/\n\n\tvar typeaheadProperties = {\n\t  source:\t\t\t/* local source */\n\t  { name: \"source\",\n\t    display: 'text',\n\t    source: sourceMatcher,\n\t    templates: { suggestion: renderSourceMatch }\n\t  },\n\t  sources:\t\t\t/* remote sources */\n\t  { name: \"sources\",\n\t    display: 'file',\n\t    source: sources.ttAdapter(),\n\t    templates: { suggestion: renderSourceLine },\n\t    limit: 15\n\t  },\n\t  files:\t\t\t/* files in gitty on name and tags */\n\t  { name: \"files\",\n\t    display: 'name',\n\t    source: files.ttAdapter(),\n\t    templates: { suggestion: renderFile }\n\t  },\n\t  store_content:\t\t/* file content in gitty */\n\t  { name: \"store_content\",\n\t    display: 'file',\n\t    source: storeContent.ttAdapter(),\n\t    templates: { suggestion: renderStoreSourceLine }\n\t  },\n\t  predicates:\t\t\t/* built-in and library predicates */\n\t  { name: \"predicates\",\n\t    display: function(p) {\n\t      return p.name+\"/\"+p.arity;\n\t    },\n\t    source: predicateMatcher,\n\t    templates: { suggestion: renderPredicate }\n\t  },\n\t  users:\t\t\t/* Users (profiles) */\n\t  { name: \"users\",\n\t    display: \"name\",\n\t    source: users.ttAdapter(),\n\t    templates: { suggestion: renderUser }\n\t  }\n\t};\n\n\t// Get the actual query string exchanged between\n\t// typeahead and Bloodhound.\n\tvar of = typeaheadProperties.sources.source;\n\ttypeaheadProperties.sources.source = function(q, cb) {\n\t  currentFile = null;\n\t  currentAlias = null;\n\t  sourceRE = new RegExp(RegExp.escape(q));\n\t  return of(q, cb);\n\t}\n\n\t/**\n\t * Assemble the sources\n\t */\n\n\tfunction ttSources(from) {\n\t  var sources = [];\n\t  var src = from.replace(/\\s+/g, ' ').split(\" \");\n\n\t  for(var i=0; i<src.length; i++) {\n\t    sources.push(typeaheadProperties[src[i]]);\n\t  }\n\n\t  return sources;\n\t}\n\n\t\t /*******************************\n\t\t *\t     TYPEAHEAD\t\t*\n\t\t *******************************/\n\n\telem.typeahead({ minLength: 2,\n\t\t\t highlight: true\n\t\t       },\n\t\t       ttSources(elem.data(\"search-in\")))\n\t  .on('typeahead:selected typeahead:autocompleted',\n\t      function(ev, datum) {\n\n\t\tif ( options.search == false ) {\n\t\t  elem.data(\"json-value\", datum);\n\t\t} else {\n\t\t  if ( datum.type == \"store\" ) {\n\t\t    if ( datum.query ) {\n\t\t      datum.regex = new RegExp(RegExp.escape(datum.query), \"g\");\n\t\t      datum.showAllMatches = true;\n\t\t    }\n\t\t    $(ev.target).closest(\".swish\").swish('playFile', datum);\n\t\t  } else if ( datum.arity !== undefined ) {\n\t\t    $(\".swish-event-receiver\").trigger(\"pldoc\", datum);\n\t\t  } else if ( datum.editor !== undefined &&\n\t\t\t      datum.line !== undefined ) {\n\t\t    $(datum.editor).prologEditor('gotoLine', datum.line,\n\t\t\t\t\t\t { regex: datum.regex,\n\t\t\t\t\t\t   showAllMatches: true\n\t\t\t\t\t\t });\n\t\t  } else if ( datum.alias !== undefined ) {\n\t\t    var url = encodeURI(\"/\"+datum.alias+\n\t\t\t\t\t\"/\"+datum.file+\n\t\t\t\t\t\".\"+datum.ext);\n\t\t    var play = { url:url, line:datum.line };\n\n\t\t    if ( datum.query ) {\n\t\t      play.regex = new RegExp(RegExp.escape(datum.query), \"g\");\n\t\t      play.showAllMatches = true;\n\t\t    }\n\n\t\t    $(ev.target).closest(\".swish\").swish('playURL', play);\n\t\t  } else {\n\t\t    elem.data(\"json-value\", datum);\n\t\t    console.log(elem.data(\"json-value\"));\n\t\t  }\n\t\t}\n\t      });\n\n\tif ( options.search != false ) {\n\t  elem.closest(\"form\").submit(function(ev) {\n\t    var data = elem.data(\"json-value\");\n\t    var str  = elem.val();\n\n\t    if ( !(data && data.datum && data.datum.label == str) )\n\t      data = str;\n\n\t    elem.val(\"\");\n\t    elem.data(\"json-value\", null);\n\n\t    elem.search('search', data);\n\n\t    return false;\n\t  });\n\t}\n      });\n    },\n\n    /**\n     * Search for the a given query.\n     *\n     * @param {String|Object} q specifies the search target. If it is a\n     * string, no autocompletion was performed.  If it is an object, it\n     * is the object returned by Bloodhound\n     */\n    search: function(q) {\n      alert(\"Full search not yet implemented\\n\"+\n\t    \"Please select from auto completion list\");\n    }\n  }; // methods\n\n  function bloodHoundURL(url, query) {\n    var url = url.replace('%QUERY',\n\t\t\t  encodeURIComponent(query));\n    var match = $(\"label.active > input[name=smatch]\").val();\n    if ( match )\n      url += \"&match=\"+match;\n\n    return url;\n  }\n\n  /**\n   * <Class description>\n   *\n   * @class search\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.search = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\nRegExp.escape = function(string) {\n  return string.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&')\n};\n\n});\n\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n// This is CodeMirror (http://codemirror.net), a code editor\n// implemented in JavaScript on top of the browser's DOM.\n//\n// You can find some technical background for some of the code below\n// at http://marijnhaverbeke.nl/blog/#cm-internals .\n\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define('cm/lib/codemirror',factory) :\n\t(global.CodeMirror = factory());\n}(this, (function () { 'use strict';\n\n// Kludges for bugs and behavior differences that can't be feature\n// detected are enabled based on userAgent etc sniffing.\nvar userAgent = navigator.userAgent;\nvar platform = navigator.platform;\n\nvar gecko = /gecko\\/\\d/i.test(userAgent);\nvar ie_upto10 = /MSIE \\d/.test(userAgent);\nvar ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(userAgent);\nvar edge = /Edge\\/(\\d+)/.exec(userAgent);\nvar ie = ie_upto10 || ie_11up || edge;\nvar ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1]);\nvar webkit = !edge && /WebKit\\//.test(userAgent);\nvar qtwebkit = webkit && /Qt\\/\\d+\\.\\d+/.test(userAgent);\nvar chrome = !edge && /Chrome\\//.test(userAgent);\nvar presto = /Opera\\//.test(userAgent);\nvar safari = /Apple Computer/.test(navigator.vendor);\nvar mac_geMountainLion = /Mac OS X 1\\d\\D([8-9]|\\d\\d)\\D/.test(userAgent);\nvar phantom = /PhantomJS/.test(userAgent);\n\nvar ios = !edge && /AppleWebKit/.test(userAgent) && /Mobile\\/\\w+/.test(userAgent);\nvar android = /Android/.test(userAgent);\n// This is woefully incomplete. Suggestions for alternative methods welcome.\nvar mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent);\nvar mac = ios || /Mac/.test(platform);\nvar chromeOS = /\\bCrOS\\b/.test(userAgent);\nvar windows = /win/i.test(platform);\n\nvar presto_version = presto && userAgent.match(/Version\\/(\\d*\\.\\d*)/);\nif (presto_version) { presto_version = Number(presto_version[1]); }\nif (presto_version && presto_version >= 15) { presto = false; webkit = true; }\n// Some browsers use the wrong event properties to signal cmd/ctrl on OS X\nvar flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11));\nvar captureRightClick = gecko || (ie && ie_version >= 9);\n\nfunction classTest(cls) { return new RegExp(\"(^|\\\\s)\" + cls + \"(?:$|\\\\s)\\\\s*\") }\n\nvar rmClass = function(node, cls) {\n  var current = node.className;\n  var match = classTest(cls).exec(current);\n  if (match) {\n    var after = current.slice(match.index + match[0].length);\n    node.className = current.slice(0, match.index) + (after ? match[1] + after : \"\");\n  }\n};\n\nfunction removeChildren(e) {\n  for (var count = e.childNodes.length; count > 0; --count)\n    { e.removeChild(e.firstChild); }\n  return e\n}\n\nfunction removeChildrenAndAdd(parent, e) {\n  return removeChildren(parent).appendChild(e)\n}\n\nfunction elt(tag, content, className, style) {\n  var e = document.createElement(tag);\n  if (className) { e.className = className; }\n  if (style) { e.style.cssText = style; }\n  if (typeof content == \"string\") { e.appendChild(document.createTextNode(content)); }\n  else if (content) { for (var i = 0; i < content.length; ++i) { e.appendChild(content[i]); } }\n  return e\n}\n// wrapper for elt, which removes the elt from the accessibility tree\nfunction eltP(tag, content, className, style) {\n  var e = elt(tag, content, className, style);\n  e.setAttribute(\"role\", \"presentation\");\n  return e\n}\n\nvar range;\nif (document.createRange) { range = function(node, start, end, endNode) {\n  var r = document.createRange();\n  r.setEnd(endNode || node, end);\n  r.setStart(node, start);\n  return r\n}; }\nelse { range = function(node, start, end) {\n  var r = document.body.createTextRange();\n  try { r.moveToElementText(node.parentNode); }\n  catch(e) { return r }\n  r.collapse(true);\n  r.moveEnd(\"character\", end);\n  r.moveStart(\"character\", start);\n  return r\n}; }\n\nfunction contains(parent, child) {\n  if (child.nodeType == 3) // Android browser always returns false when child is a textnode\n    { child = child.parentNode; }\n  if (parent.contains)\n    { return parent.contains(child) }\n  do {\n    if (child.nodeType == 11) { child = child.host; }\n    if (child == parent) { return true }\n  } while (child = child.parentNode)\n}\n\nfunction activeElt() {\n  // IE and Edge may throw an \"Unspecified Error\" when accessing document.activeElement.\n  // IE < 10 will throw when accessed while the page is loading or in an iframe.\n  // IE > 9 and Edge will throw when accessed in an iframe if document.body is unavailable.\n  var activeElement;\n  try {\n    activeElement = document.activeElement;\n  } catch(e) {\n    activeElement = document.body || null;\n  }\n  while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement)\n    { activeElement = activeElement.shadowRoot.activeElement; }\n  return activeElement\n}\n\nfunction addClass(node, cls) {\n  var current = node.className;\n  if (!classTest(cls).test(current)) { node.className += (current ? \" \" : \"\") + cls; }\n}\nfunction joinClasses(a, b) {\n  var as = a.split(\" \");\n  for (var i = 0; i < as.length; i++)\n    { if (as[i] && !classTest(as[i]).test(b)) { b += \" \" + as[i]; } }\n  return b\n}\n\nvar selectInput = function(node) { node.select(); };\nif (ios) // Mobile Safari apparently has a bug where select() is broken.\n  { selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length; }; }\nelse if (ie) // Suppress mysterious IE10 errors\n  { selectInput = function(node) { try { node.select(); } catch(_e) {} }; }\n\nfunction bind(f) {\n  var args = Array.prototype.slice.call(arguments, 1);\n  return function(){return f.apply(null, args)}\n}\n\nfunction copyObj(obj, target, overwrite) {\n  if (!target) { target = {}; }\n  for (var prop in obj)\n    { if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop)))\n      { target[prop] = obj[prop]; } }\n  return target\n}\n\n// Counts the column offset in a string, taking tabs into account.\n// Used mostly to find indentation.\nfunction countColumn(string, end, tabSize, startIndex, startValue) {\n  if (end == null) {\n    end = string.search(/[^\\s\\u00a0]/);\n    if (end == -1) { end = string.length; }\n  }\n  for (var i = startIndex || 0, n = startValue || 0;;) {\n    var nextTab = string.indexOf(\"\\t\", i);\n    if (nextTab < 0 || nextTab >= end)\n      { return n + (end - i) }\n    n += nextTab - i;\n    n += tabSize - (n % tabSize);\n    i = nextTab + 1;\n  }\n}\n\nvar Delayed = function() {this.id = null;};\nDelayed.prototype.set = function (ms, f) {\n  clearTimeout(this.id);\n  this.id = setTimeout(f, ms);\n};\n\nfunction indexOf(array, elt) {\n  for (var i = 0; i < array.length; ++i)\n    { if (array[i] == elt) { return i } }\n  return -1\n}\n\n// Number of pixels added to scroller and sizer to hide scrollbar\nvar scrollerGap = 30;\n\n// Returned or thrown by various protocols to signal 'I'm not\n// handling this'.\nvar Pass = {toString: function(){return \"CodeMirror.Pass\"}};\n\n// Reused option objects for setSelection & friends\nvar sel_dontScroll = {scroll: false};\nvar sel_mouse = {origin: \"*mouse\"};\nvar sel_move = {origin: \"+move\"};\n\n// The inverse of countColumn -- find the offset that corresponds to\n// a particular column.\nfunction findColumn(string, goal, tabSize) {\n  for (var pos = 0, col = 0;;) {\n    var nextTab = string.indexOf(\"\\t\", pos);\n    if (nextTab == -1) { nextTab = string.length; }\n    var skipped = nextTab - pos;\n    if (nextTab == string.length || col + skipped >= goal)\n      { return pos + Math.min(skipped, goal - col) }\n    col += nextTab - pos;\n    col += tabSize - (col % tabSize);\n    pos = nextTab + 1;\n    if (col >= goal) { return pos }\n  }\n}\n\nvar spaceStrs = [\"\"];\nfunction spaceStr(n) {\n  while (spaceStrs.length <= n)\n    { spaceStrs.push(lst(spaceStrs) + \" \"); }\n  return spaceStrs[n]\n}\n\nfunction lst(arr) { return arr[arr.length-1] }\n\nfunction map(array, f) {\n  var out = [];\n  for (var i = 0; i < array.length; i++) { out[i] = f(array[i], i); }\n  return out\n}\n\nfunction insertSorted(array, value, score) {\n  var pos = 0, priority = score(value);\n  while (pos < array.length && score(array[pos]) <= priority) { pos++; }\n  array.splice(pos, 0, value);\n}\n\nfunction nothing() {}\n\nfunction createObj(base, props) {\n  var inst;\n  if (Object.create) {\n    inst = Object.create(base);\n  } else {\n    nothing.prototype = base;\n    inst = new nothing();\n  }\n  if (props) { copyObj(props, inst); }\n  return inst\n}\n\nvar nonASCIISingleCaseWordChar = /[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;\nfunction isWordCharBasic(ch) {\n  return /\\w/.test(ch) || ch > \"\\x80\" &&\n    (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch))\n}\nfunction isWordChar(ch, helper) {\n  if (!helper) { return isWordCharBasic(ch) }\n  if (helper.source.indexOf(\"\\\\w\") > -1 && isWordCharBasic(ch)) { return true }\n  return helper.test(ch)\n}\n\nfunction isEmpty(obj) {\n  for (var n in obj) { if (obj.hasOwnProperty(n) && obj[n]) { return false } }\n  return true\n}\n\n// Extending unicode characters. A series of a non-extending char +\n// any number of extending chars is treated as a single unit as far\n// as editing and measuring is concerned. This is not fully correct,\n// since some scripts/fonts/browsers also treat other configurations\n// of code points as a group.\nvar extendingChars = /[\\u0300-\\u036f\\u0483-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u065e\\u0670\\u06d6-\\u06dc\\u06de-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0900-\\u0902\\u093c\\u0941-\\u0948\\u094d\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09bc\\u09be\\u09c1-\\u09c4\\u09cd\\u09d7\\u09e2\\u09e3\\u0a01\\u0a02\\u0a3c\\u0a41\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a70\\u0a71\\u0a75\\u0a81\\u0a82\\u0abc\\u0ac1-\\u0ac5\\u0ac7\\u0ac8\\u0acd\\u0ae2\\u0ae3\\u0b01\\u0b3c\\u0b3e\\u0b3f\\u0b41-\\u0b44\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b82\\u0bbe\\u0bc0\\u0bcd\\u0bd7\\u0c3e-\\u0c40\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0cbc\\u0cbf\\u0cc2\\u0cc6\\u0ccc\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0d3e\\u0d41-\\u0d44\\u0d4d\\u0d57\\u0d62\\u0d63\\u0dca\\u0dcf\\u0dd2-\\u0dd4\\u0dd6\\u0ddf\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0f18\\u0f19\\u0f35\\u0f37\\u0f39\\u0f71-\\u0f7e\\u0f80-\\u0f84\\u0f86\\u0f87\\u0f90-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102d-\\u1030\\u1032-\\u1037\\u1039\\u103a\\u103d\\u103e\\u1058\\u1059\\u105e-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108d\\u109d\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b7-\\u17bd\\u17c6\\u17c9-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193b\\u1a17\\u1a18\\u1a56\\u1a58-\\u1a5e\\u1a60\\u1a62\\u1a65-\\u1a6c\\u1a73-\\u1a7c\\u1a7f\\u1b00-\\u1b03\\u1b34\\u1b36-\\u1b3a\\u1b3c\\u1b42\\u1b6b-\\u1b73\\u1b80\\u1b81\\u1ba2-\\u1ba5\\u1ba8\\u1ba9\\u1c2c-\\u1c33\\u1c36\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce0\\u1ce2-\\u1ce8\\u1ced\\u1dc0-\\u1de6\\u1dfd-\\u1dff\\u200c\\u200d\\u20d0-\\u20f0\\u2cef-\\u2cf1\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua66f-\\ua672\\ua67c\\ua67d\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua825\\ua826\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua951\\ua980-\\ua982\\ua9b3\\ua9b6-\\ua9b9\\ua9bc\\uaa29-\\uaa2e\\uaa31\\uaa32\\uaa35\\uaa36\\uaa43\\uaa4c\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uabe5\\uabe8\\uabed\\udc00-\\udfff\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\uff9e\\uff9f]/;\nfunction isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch) }\n\n// Returns a number from the range [`0`; `str.length`] unless `pos` is outside that range.\nfunction skipExtendingChars(str, pos, dir) {\n  while ((dir < 0 ? pos > 0 : pos < str.length) && isExtendingChar(str.charAt(pos))) { pos += dir; }\n  return pos\n}\n\n// Returns the value from the range [`from`; `to`] that satisfies\n// `pred` and is closest to `from`. Assumes that at least `to` satisfies `pred`.\nfunction findFirst(pred, from, to) {\n  for (;;) {\n    if (Math.abs(from - to) <= 1) { return pred(from) ? from : to }\n    var mid = Math.floor((from + to) / 2);\n    if (pred(mid)) { to = mid; }\n    else { from = mid; }\n  }\n}\n\n// The display handles the DOM integration, both for input reading\n// and content drawing. It holds references to DOM nodes and\n// display-related state.\n\nfunction Display(place, doc, input) {\n  var d = this;\n  this.input = input;\n\n  // Covers bottom-right square when both scrollbars are present.\n  d.scrollbarFiller = elt(\"div\", null, \"CodeMirror-scrollbar-filler\");\n  d.scrollbarFiller.setAttribute(\"cm-not-content\", \"true\");\n  // Covers bottom of gutter when coverGutterNextToScrollbar is on\n  // and h scrollbar is present.\n  d.gutterFiller = elt(\"div\", null, \"CodeMirror-gutter-filler\");\n  d.gutterFiller.setAttribute(\"cm-not-content\", \"true\");\n  // Will contain the actual code, positioned to cover the viewport.\n  d.lineDiv = eltP(\"div\", null, \"CodeMirror-code\");\n  // Elements are added to these to represent selection and cursors.\n  d.selectionDiv = elt(\"div\", null, null, \"position: relative; z-index: 1\");\n  d.cursorDiv = elt(\"div\", null, \"CodeMirror-cursors\");\n  // A visibility: hidden element used to find the size of things.\n  d.measure = elt(\"div\", null, \"CodeMirror-measure\");\n  // When lines outside of the viewport are measured, they are drawn in this.\n  d.lineMeasure = elt(\"div\", null, \"CodeMirror-measure\");\n  // Wraps everything that needs to exist inside the vertically-padded coordinate system\n  d.lineSpace = eltP(\"div\", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv],\n                    null, \"position: relative; outline: none\");\n  var lines = eltP(\"div\", [d.lineSpace], \"CodeMirror-lines\");\n  // Moved around its parent to cover visible view.\n  d.mover = elt(\"div\", [lines], null, \"position: relative\");\n  // Set to the height of the document, allowing scrolling.\n  d.sizer = elt(\"div\", [d.mover], \"CodeMirror-sizer\");\n  d.sizerWidth = null;\n  // Behavior of elts with overflow: auto and padding is\n  // inconsistent across browsers. This is used to ensure the\n  // scrollable area is big enough.\n  d.heightForcer = elt(\"div\", null, null, \"position: absolute; height: \" + scrollerGap + \"px; width: 1px;\");\n  // Will contain the gutters, if any.\n  d.gutters = elt(\"div\", null, \"CodeMirror-gutters\");\n  d.lineGutter = null;\n  // Actual scrollable element.\n  d.scroller = elt(\"div\", [d.sizer, d.heightForcer, d.gutters], \"CodeMirror-scroll\");\n  d.scroller.setAttribute(\"tabIndex\", \"-1\");\n  // The element in which the editor lives.\n  d.wrapper = elt(\"div\", [d.scrollbarFiller, d.gutterFiller, d.scroller], \"CodeMirror\");\n\n  // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported)\n  if (ie && ie_version < 8) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0; }\n  if (!webkit && !(gecko && mobile)) { d.scroller.draggable = true; }\n\n  if (place) {\n    if (place.appendChild) { place.appendChild(d.wrapper); }\n    else { place(d.wrapper); }\n  }\n\n  // Current rendered range (may be bigger than the view window).\n  d.viewFrom = d.viewTo = doc.first;\n  d.reportedViewFrom = d.reportedViewTo = doc.first;\n  // Information about the rendered lines.\n  d.view = [];\n  d.renderedView = null;\n  // Holds info about a single rendered line when it was rendered\n  // for measurement, while not in view.\n  d.externalMeasured = null;\n  // Empty space (in pixels) above the view\n  d.viewOffset = 0;\n  d.lastWrapHeight = d.lastWrapWidth = 0;\n  d.updateLineNumbers = null;\n\n  d.nativeBarWidth = d.barHeight = d.barWidth = 0;\n  d.scrollbarsClipped = false;\n\n  // Used to only resize the line number gutter when necessary (when\n  // the amount of lines crosses a boundary that makes its width change)\n  d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null;\n  // Set to true when a non-horizontal-scrolling line widget is\n  // added. As an optimization, line widget aligning is skipped when\n  // this is false.\n  d.alignWidgets = false;\n\n  d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n\n  // Tracks the maximum line length so that the horizontal scrollbar\n  // can be kept static when scrolling.\n  d.maxLine = null;\n  d.maxLineLength = 0;\n  d.maxLineChanged = false;\n\n  // Used for measuring wheel scrolling granularity\n  d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null;\n\n  // True when shift is held down.\n  d.shift = false;\n\n  // Used to track whether anything happened since the context menu\n  // was opened.\n  d.selForContextMenu = null;\n\n  d.activeTouch = null;\n\n  input.init(d);\n}\n\n// Find the line object corresponding to the given line number.\nfunction getLine(doc, n) {\n  n -= doc.first;\n  if (n < 0 || n >= doc.size) { throw new Error(\"There is no line \" + (n + doc.first) + \" in the document.\") }\n  var chunk = doc;\n  while (!chunk.lines) {\n    for (var i = 0;; ++i) {\n      var child = chunk.children[i], sz = child.chunkSize();\n      if (n < sz) { chunk = child; break }\n      n -= sz;\n    }\n  }\n  return chunk.lines[n]\n}\n\n// Get the part of a document between two positions, as an array of\n// strings.\nfunction getBetween(doc, start, end) {\n  var out = [], n = start.line;\n  doc.iter(start.line, end.line + 1, function (line) {\n    var text = line.text;\n    if (n == end.line) { text = text.slice(0, end.ch); }\n    if (n == start.line) { text = text.slice(start.ch); }\n    out.push(text);\n    ++n;\n  });\n  return out\n}\n// Get the lines between from and to, as array of strings.\nfunction getLines(doc, from, to) {\n  var out = [];\n  doc.iter(from, to, function (line) { out.push(line.text); }); // iter aborts when callback returns truthy value\n  return out\n}\n\n// Update the height of a line, propagating the height change\n// upwards to parent nodes.\nfunction updateLineHeight(line, height) {\n  var diff = height - line.height;\n  if (diff) { for (var n = line; n; n = n.parent) { n.height += diff; } }\n}\n\n// Given a line object, find its line number by walking up through\n// its parent links.\nfunction lineNo(line) {\n  if (line.parent == null) { return null }\n  var cur = line.parent, no = indexOf(cur.lines, line);\n  for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) {\n    for (var i = 0;; ++i) {\n      if (chunk.children[i] == cur) { break }\n      no += chunk.children[i].chunkSize();\n    }\n  }\n  return no + cur.first\n}\n\n// Find the line at the given vertical position, using the height\n// information in the document tree.\nfunction lineAtHeight(chunk, h) {\n  var n = chunk.first;\n  outer: do {\n    for (var i$1 = 0; i$1 < chunk.children.length; ++i$1) {\n      var child = chunk.children[i$1], ch = child.height;\n      if (h < ch) { chunk = child; continue outer }\n      h -= ch;\n      n += child.chunkSize();\n    }\n    return n\n  } while (!chunk.lines)\n  var i = 0;\n  for (; i < chunk.lines.length; ++i) {\n    var line = chunk.lines[i], lh = line.height;\n    if (h < lh) { break }\n    h -= lh;\n  }\n  return n + i\n}\n\nfunction isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size}\n\nfunction lineNumberFor(options, i) {\n  return String(options.lineNumberFormatter(i + options.firstLineNumber))\n}\n\n// A Pos instance represents a position within the text.\nfunction Pos(line, ch, sticky) {\n  if ( sticky === void 0 ) sticky = null;\n\n  if (!(this instanceof Pos)) { return new Pos(line, ch, sticky) }\n  this.line = line;\n  this.ch = ch;\n  this.sticky = sticky;\n}\n\n// Compare two positions, return 0 if they are the same, a negative\n// number when a is less, and a positive number otherwise.\nfunction cmp(a, b) { return a.line - b.line || a.ch - b.ch }\n\nfunction equalCursorPos(a, b) { return a.sticky == b.sticky && cmp(a, b) == 0 }\n\nfunction copyPos(x) {return Pos(x.line, x.ch)}\nfunction maxPos(a, b) { return cmp(a, b) < 0 ? b : a }\nfunction minPos(a, b) { return cmp(a, b) < 0 ? a : b }\n\n// Most of the external API clips given positions to make sure they\n// actually exist within the document.\nfunction clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1))}\nfunction clipPos(doc, pos) {\n  if (pos.line < doc.first) { return Pos(doc.first, 0) }\n  var last = doc.first + doc.size - 1;\n  if (pos.line > last) { return Pos(last, getLine(doc, last).text.length) }\n  return clipToLen(pos, getLine(doc, pos.line).text.length)\n}\nfunction clipToLen(pos, linelen) {\n  var ch = pos.ch;\n  if (ch == null || ch > linelen) { return Pos(pos.line, linelen) }\n  else if (ch < 0) { return Pos(pos.line, 0) }\n  else { return pos }\n}\nfunction clipPosArray(doc, array) {\n  var out = [];\n  for (var i = 0; i < array.length; i++) { out[i] = clipPos(doc, array[i]); }\n  return out\n}\n\n// Optimize some code when these features are not used.\nvar sawReadOnlySpans = false;\nvar sawCollapsedSpans = false;\n\nfunction seeReadOnlySpans() {\n  sawReadOnlySpans = true;\n}\n\nfunction seeCollapsedSpans() {\n  sawCollapsedSpans = true;\n}\n\n// TEXTMARKER SPANS\n\nfunction MarkedSpan(marker, from, to) {\n  this.marker = marker;\n  this.from = from; this.to = to;\n}\n\n// Search an array of spans for a span matching the given marker.\nfunction getMarkedSpanFor(spans, marker) {\n  if (spans) { for (var i = 0; i < spans.length; ++i) {\n    var span = spans[i];\n    if (span.marker == marker) { return span }\n  } }\n}\n// Remove a span from an array, returning undefined if no spans are\n// left (we don't store arrays for lines without spans).\nfunction removeMarkedSpan(spans, span) {\n  var r;\n  for (var i = 0; i < spans.length; ++i)\n    { if (spans[i] != span) { (r || (r = [])).push(spans[i]); } }\n  return r\n}\n// Add a span to a line.\nfunction addMarkedSpan(line, span) {\n  line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span];\n  span.marker.attachLine(line);\n}\n\n// Used for the algorithm that adjusts markers for a change in the\n// document. These functions cut an array of spans at a given\n// character position, returning an array of remaining chunks (or\n// undefined if nothing remains).\nfunction markedSpansBefore(old, startCh, isInsert) {\n  var nw;\n  if (old) { for (var i = 0; i < old.length; ++i) {\n    var span = old[i], marker = span.marker;\n    var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh);\n    if (startsBefore || span.from == startCh && marker.type == \"bookmark\" && (!isInsert || !span.marker.insertLeft)) {\n      var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh);(nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to));\n    }\n  } }\n  return nw\n}\nfunction markedSpansAfter(old, endCh, isInsert) {\n  var nw;\n  if (old) { for (var i = 0; i < old.length; ++i) {\n    var span = old[i], marker = span.marker;\n    var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh);\n    if (endsAfter || span.from == endCh && marker.type == \"bookmark\" && (!isInsert || span.marker.insertLeft)) {\n      var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh);(nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh,\n                                            span.to == null ? null : span.to - endCh));\n    }\n  } }\n  return nw\n}\n\n// Given a change object, compute the new set of marker spans that\n// cover the line in which the change took place. Removes spans\n// entirely within the change, reconnects spans belonging to the\n// same marker that appear on both sides of the change, and cuts off\n// spans partially within the change. Returns an array of span\n// arrays with one element for each line in (after) the change.\nfunction stretchSpansOverChange(doc, change) {\n  if (change.full) { return null }\n  var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans;\n  var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans;\n  if (!oldFirst && !oldLast) { return null }\n\n  var startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0;\n  // Get the spans that 'stick out' on both sides\n  var first = markedSpansBefore(oldFirst, startCh, isInsert);\n  var last = markedSpansAfter(oldLast, endCh, isInsert);\n\n  // Next, merge those two ends\n  var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0);\n  if (first) {\n    // Fix up .to properties of first\n    for (var i = 0; i < first.length; ++i) {\n      var span = first[i];\n      if (span.to == null) {\n        var found = getMarkedSpanFor(last, span.marker);\n        if (!found) { span.to = startCh; }\n        else if (sameLine) { span.to = found.to == null ? null : found.to + offset; }\n      }\n    }\n  }\n  if (last) {\n    // Fix up .from in last (or move them into first in case of sameLine)\n    for (var i$1 = 0; i$1 < last.length; ++i$1) {\n      var span$1 = last[i$1];\n      if (span$1.to != null) { span$1.to += offset; }\n      if (span$1.from == null) {\n        var found$1 = getMarkedSpanFor(first, span$1.marker);\n        if (!found$1) {\n          span$1.from = offset;\n          if (sameLine) { (first || (first = [])).push(span$1); }\n        }\n      } else {\n        span$1.from += offset;\n        if (sameLine) { (first || (first = [])).push(span$1); }\n      }\n    }\n  }\n  // Make sure we didn't create any zero-length spans\n  if (first) { first = clearEmptySpans(first); }\n  if (last && last != first) { last = clearEmptySpans(last); }\n\n  var newMarkers = [first];\n  if (!sameLine) {\n    // Fill gap with whole-line-spans\n    var gap = change.text.length - 2, gapMarkers;\n    if (gap > 0 && first)\n      { for (var i$2 = 0; i$2 < first.length; ++i$2)\n        { if (first[i$2].to == null)\n          { (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i$2].marker, null, null)); } } }\n    for (var i$3 = 0; i$3 < gap; ++i$3)\n      { newMarkers.push(gapMarkers); }\n    newMarkers.push(last);\n  }\n  return newMarkers\n}\n\n// Remove spans that are empty and don't have a clearWhenEmpty\n// option of false.\nfunction clearEmptySpans(spans) {\n  for (var i = 0; i < spans.length; ++i) {\n    var span = spans[i];\n    if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false)\n      { spans.splice(i--, 1); }\n  }\n  if (!spans.length) { return null }\n  return spans\n}\n\n// Used to 'clip' out readOnly ranges when making a change.\nfunction removeReadOnlyRanges(doc, from, to) {\n  var markers = null;\n  doc.iter(from.line, to.line + 1, function (line) {\n    if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n      var mark = line.markedSpans[i].marker;\n      if (mark.readOnly && (!markers || indexOf(markers, mark) == -1))\n        { (markers || (markers = [])).push(mark); }\n    } }\n  });\n  if (!markers) { return null }\n  var parts = [{from: from, to: to}];\n  for (var i = 0; i < markers.length; ++i) {\n    var mk = markers[i], m = mk.find(0);\n    for (var j = 0; j < parts.length; ++j) {\n      var p = parts[j];\n      if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) { continue }\n      var newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to);\n      if (dfrom < 0 || !mk.inclusiveLeft && !dfrom)\n        { newParts.push({from: p.from, to: m.from}); }\n      if (dto > 0 || !mk.inclusiveRight && !dto)\n        { newParts.push({from: m.to, to: p.to}); }\n      parts.splice.apply(parts, newParts);\n      j += newParts.length - 3;\n    }\n  }\n  return parts\n}\n\n// Connect or disconnect spans from a line.\nfunction detachMarkedSpans(line) {\n  var spans = line.markedSpans;\n  if (!spans) { return }\n  for (var i = 0; i < spans.length; ++i)\n    { spans[i].marker.detachLine(line); }\n  line.markedSpans = null;\n}\nfunction attachMarkedSpans(line, spans) {\n  if (!spans) { return }\n  for (var i = 0; i < spans.length; ++i)\n    { spans[i].marker.attachLine(line); }\n  line.markedSpans = spans;\n}\n\n// Helpers used when computing which overlapping collapsed span\n// counts as the larger one.\nfunction extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0 }\nfunction extraRight(marker) { return marker.inclusiveRight ? 1 : 0 }\n\n// Returns a number indicating which of two overlapping collapsed\n// spans is larger (and thus includes the other). Falls back to\n// comparing ids when the spans cover exactly the same range.\nfunction compareCollapsedMarkers(a, b) {\n  var lenDiff = a.lines.length - b.lines.length;\n  if (lenDiff != 0) { return lenDiff }\n  var aPos = a.find(), bPos = b.find();\n  var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b);\n  if (fromCmp) { return -fromCmp }\n  var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b);\n  if (toCmp) { return toCmp }\n  return b.id - a.id\n}\n\n// Find out whether a line ends or starts in a collapsed span. If\n// so, return the marker for that span.\nfunction collapsedSpanAtSide(line, start) {\n  var sps = sawCollapsedSpans && line.markedSpans, found;\n  if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n    sp = sps[i];\n    if (sp.marker.collapsed && (start ? sp.from : sp.to) == null &&\n        (!found || compareCollapsedMarkers(found, sp.marker) < 0))\n      { found = sp.marker; }\n  } }\n  return found\n}\nfunction collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true) }\nfunction collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false) }\n\n// Test whether there exists a collapsed span that partially\n// overlaps (covers the start or end, but not both) of a new span.\n// Such overlap is not allowed.\nfunction conflictingCollapsedRange(doc, lineNo$$1, from, to, marker) {\n  var line = getLine(doc, lineNo$$1);\n  var sps = sawCollapsedSpans && line.markedSpans;\n  if (sps) { for (var i = 0; i < sps.length; ++i) {\n    var sp = sps[i];\n    if (!sp.marker.collapsed) { continue }\n    var found = sp.marker.find(0);\n    var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker);\n    var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker);\n    if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) { continue }\n    if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) ||\n        fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0))\n      { return true }\n  } }\n}\n\n// A visual line is a line as drawn on the screen. Folding, for\n// example, can cause multiple logical lines to appear on the same\n// visual line. This finds the start of the visual line that the\n// given line is part of (usually that is the line itself).\nfunction visualLine(line) {\n  var merged;\n  while (merged = collapsedSpanAtStart(line))\n    { line = merged.find(-1, true).line; }\n  return line\n}\n\nfunction visualLineEnd(line) {\n  var merged;\n  while (merged = collapsedSpanAtEnd(line))\n    { line = merged.find(1, true).line; }\n  return line\n}\n\n// Returns an array of logical lines that continue the visual line\n// started by the argument, or undefined if there are no such lines.\nfunction visualLineContinued(line) {\n  var merged, lines;\n  while (merged = collapsedSpanAtEnd(line)) {\n    line = merged.find(1, true).line\n    ;(lines || (lines = [])).push(line);\n  }\n  return lines\n}\n\n// Get the line number of the start of the visual line that the\n// given line number is part of.\nfunction visualLineNo(doc, lineN) {\n  var line = getLine(doc, lineN), vis = visualLine(line);\n  if (line == vis) { return lineN }\n  return lineNo(vis)\n}\n\n// Get the line number of the start of the next visual line after\n// the given line.\nfunction visualLineEndNo(doc, lineN) {\n  if (lineN > doc.lastLine()) { return lineN }\n  var line = getLine(doc, lineN), merged;\n  if (!lineIsHidden(doc, line)) { return lineN }\n  while (merged = collapsedSpanAtEnd(line))\n    { line = merged.find(1, true).line; }\n  return lineNo(line) + 1\n}\n\n// Compute whether a line is hidden. Lines count as hidden when they\n// are part of a visual line that starts with another line, or when\n// they are entirely covered by collapsed, non-widget span.\nfunction lineIsHidden(doc, line) {\n  var sps = sawCollapsedSpans && line.markedSpans;\n  if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n    sp = sps[i];\n    if (!sp.marker.collapsed) { continue }\n    if (sp.from == null) { return true }\n    if (sp.marker.widgetNode) { continue }\n    if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp))\n      { return true }\n  } }\n}\nfunction lineIsHiddenInner(doc, line, span) {\n  if (span.to == null) {\n    var end = span.marker.find(1, true);\n    return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker))\n  }\n  if (span.marker.inclusiveRight && span.to == line.text.length)\n    { return true }\n  for (var sp = (void 0), i = 0; i < line.markedSpans.length; ++i) {\n    sp = line.markedSpans[i];\n    if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to &&\n        (sp.to == null || sp.to != span.from) &&\n        (sp.marker.inclusiveLeft || span.marker.inclusiveRight) &&\n        lineIsHiddenInner(doc, line, sp)) { return true }\n  }\n}\n\n// Find the height above the given line.\nfunction heightAtLine(lineObj) {\n  lineObj = visualLine(lineObj);\n\n  var h = 0, chunk = lineObj.parent;\n  for (var i = 0; i < chunk.lines.length; ++i) {\n    var line = chunk.lines[i];\n    if (line == lineObj) { break }\n    else { h += line.height; }\n  }\n  for (var p = chunk.parent; p; chunk = p, p = chunk.parent) {\n    for (var i$1 = 0; i$1 < p.children.length; ++i$1) {\n      var cur = p.children[i$1];\n      if (cur == chunk) { break }\n      else { h += cur.height; }\n    }\n  }\n  return h\n}\n\n// Compute the character length of a line, taking into account\n// collapsed ranges (see markText) that might hide parts, and join\n// other lines onto it.\nfunction lineLength(line) {\n  if (line.height == 0) { return 0 }\n  var len = line.text.length, merged, cur = line;\n  while (merged = collapsedSpanAtStart(cur)) {\n    var found = merged.find(0, true);\n    cur = found.from.line;\n    len += found.from.ch - found.to.ch;\n  }\n  cur = line;\n  while (merged = collapsedSpanAtEnd(cur)) {\n    var found$1 = merged.find(0, true);\n    len -= cur.text.length - found$1.from.ch;\n    cur = found$1.to.line;\n    len += cur.text.length - found$1.to.ch;\n  }\n  return len\n}\n\n// Find the longest line in the document.\nfunction findMaxLine(cm) {\n  var d = cm.display, doc = cm.doc;\n  d.maxLine = getLine(doc, doc.first);\n  d.maxLineLength = lineLength(d.maxLine);\n  d.maxLineChanged = true;\n  doc.iter(function (line) {\n    var len = lineLength(line);\n    if (len > d.maxLineLength) {\n      d.maxLineLength = len;\n      d.maxLine = line;\n    }\n  });\n}\n\n// BIDI HELPERS\n\nfunction iterateBidiSections(order, from, to, f) {\n  if (!order) { return f(from, to, \"ltr\") }\n  var found = false;\n  for (var i = 0; i < order.length; ++i) {\n    var part = order[i];\n    if (part.from < to && part.to > from || from == to && part.to == from) {\n      f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? \"rtl\" : \"ltr\");\n      found = true;\n    }\n  }\n  if (!found) { f(from, to, \"ltr\"); }\n}\n\nvar bidiOther = null;\nfunction getBidiPartAt(order, ch, sticky) {\n  var found;\n  bidiOther = null;\n  for (var i = 0; i < order.length; ++i) {\n    var cur = order[i];\n    if (cur.from < ch && cur.to > ch) { return i }\n    if (cur.to == ch) {\n      if (cur.from != cur.to && sticky == \"before\") { found = i; }\n      else { bidiOther = i; }\n    }\n    if (cur.from == ch) {\n      if (cur.from != cur.to && sticky != \"before\") { found = i; }\n      else { bidiOther = i; }\n    }\n  }\n  return found != null ? found : bidiOther\n}\n\n// Bidirectional ordering algorithm\n// See http://unicode.org/reports/tr9/tr9-13.html for the algorithm\n// that this (partially) implements.\n\n// One-char codes used for character types:\n// L (L):   Left-to-Right\n// R (R):   Right-to-Left\n// r (AL):  Right-to-Left Arabic\n// 1 (EN):  European Number\n// + (ES):  European Number Separator\n// % (ET):  European Number Terminator\n// n (AN):  Arabic Number\n// , (CS):  Common Number Separator\n// m (NSM): Non-Spacing Mark\n// b (BN):  Boundary Neutral\n// s (B):   Paragraph Separator\n// t (S):   Segment Separator\n// w (WS):  Whitespace\n// N (ON):  Other Neutrals\n\n// Returns null if characters are ordered as they appear\n// (left-to-right), or an array of sections ({from, to, level}\n// objects) in the order in which they occur visually.\nvar bidiOrdering = (function() {\n  // Character types for codepoints 0 to 0xff\n  var lowTypes = \"bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN\";\n  // Character types for codepoints 0x600 to 0x6f9\n  var arabicTypes = \"nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111\";\n  function charType(code) {\n    if (code <= 0xf7) { return lowTypes.charAt(code) }\n    else if (0x590 <= code && code <= 0x5f4) { return \"R\" }\n    else if (0x600 <= code && code <= 0x6f9) { return arabicTypes.charAt(code - 0x600) }\n    else if (0x6ee <= code && code <= 0x8ac) { return \"r\" }\n    else if (0x2000 <= code && code <= 0x200b) { return \"w\" }\n    else if (code == 0x200c) { return \"b\" }\n    else { return \"L\" }\n  }\n\n  var bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n  var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/;\n\n  function BidiSpan(level, from, to) {\n    this.level = level;\n    this.from = from; this.to = to;\n  }\n\n  return function(str, direction) {\n    var outerType = direction == \"ltr\" ? \"L\" : \"R\";\n\n    if (str.length == 0 || direction == \"ltr\" && !bidiRE.test(str)) { return false }\n    var len = str.length, types = [];\n    for (var i = 0; i < len; ++i)\n      { types.push(charType(str.charCodeAt(i))); }\n\n    // W1. Examine each non-spacing mark (NSM) in the level run, and\n    // change the type of the NSM to the type of the previous\n    // character. If the NSM is at the start of the level run, it will\n    // get the type of sor.\n    for (var i$1 = 0, prev = outerType; i$1 < len; ++i$1) {\n      var type = types[i$1];\n      if (type == \"m\") { types[i$1] = prev; }\n      else { prev = type; }\n    }\n\n    // W2. Search backwards from each instance of a European number\n    // until the first strong type (R, L, AL, or sor) is found. If an\n    // AL is found, change the type of the European number to Arabic\n    // number.\n    // W3. Change all ALs to R.\n    for (var i$2 = 0, cur = outerType; i$2 < len; ++i$2) {\n      var type$1 = types[i$2];\n      if (type$1 == \"1\" && cur == \"r\") { types[i$2] = \"n\"; }\n      else if (isStrong.test(type$1)) { cur = type$1; if (type$1 == \"r\") { types[i$2] = \"R\"; } }\n    }\n\n    // W4. A single European separator between two European numbers\n    // changes to a European number. A single common separator between\n    // two numbers of the same type changes to that type.\n    for (var i$3 = 1, prev$1 = types[0]; i$3 < len - 1; ++i$3) {\n      var type$2 = types[i$3];\n      if (type$2 == \"+\" && prev$1 == \"1\" && types[i$3+1] == \"1\") { types[i$3] = \"1\"; }\n      else if (type$2 == \",\" && prev$1 == types[i$3+1] &&\n               (prev$1 == \"1\" || prev$1 == \"n\")) { types[i$3] = prev$1; }\n      prev$1 = type$2;\n    }\n\n    // W5. A sequence of European terminators adjacent to European\n    // numbers changes to all European numbers.\n    // W6. Otherwise, separators and terminators change to Other\n    // Neutral.\n    for (var i$4 = 0; i$4 < len; ++i$4) {\n      var type$3 = types[i$4];\n      if (type$3 == \",\") { types[i$4] = \"N\"; }\n      else if (type$3 == \"%\") {\n        var end = (void 0);\n        for (end = i$4 + 1; end < len && types[end] == \"%\"; ++end) {}\n        var replace = (i$4 && types[i$4-1] == \"!\") || (end < len && types[end] == \"1\") ? \"1\" : \"N\";\n        for (var j = i$4; j < end; ++j) { types[j] = replace; }\n        i$4 = end - 1;\n      }\n    }\n\n    // W7. Search backwards from each instance of a European number\n    // until the first strong type (R, L, or sor) is found. If an L is\n    // found, then change the type of the European number to L.\n    for (var i$5 = 0, cur$1 = outerType; i$5 < len; ++i$5) {\n      var type$4 = types[i$5];\n      if (cur$1 == \"L\" && type$4 == \"1\") { types[i$5] = \"L\"; }\n      else if (isStrong.test(type$4)) { cur$1 = type$4; }\n    }\n\n    // N1. A sequence of neutrals takes the direction of the\n    // surrounding strong text if the text on both sides has the same\n    // direction. European and Arabic numbers act as if they were R in\n    // terms of their influence on neutrals. Start-of-level-run (sor)\n    // and end-of-level-run (eor) are used at level run boundaries.\n    // N2. Any remaining neutrals take the embedding direction.\n    for (var i$6 = 0; i$6 < len; ++i$6) {\n      if (isNeutral.test(types[i$6])) {\n        var end$1 = (void 0);\n        for (end$1 = i$6 + 1; end$1 < len && isNeutral.test(types[end$1]); ++end$1) {}\n        var before = (i$6 ? types[i$6-1] : outerType) == \"L\";\n        var after = (end$1 < len ? types[end$1] : outerType) == \"L\";\n        var replace$1 = before == after ? (before ? \"L\" : \"R\") : outerType;\n        for (var j$1 = i$6; j$1 < end$1; ++j$1) { types[j$1] = replace$1; }\n        i$6 = end$1 - 1;\n      }\n    }\n\n    // Here we depart from the documented algorithm, in order to avoid\n    // building up an actual levels array. Since there are only three\n    // levels (0, 1, 2) in an implementation that doesn't take\n    // explicit embedding into account, we can build up the order on\n    // the fly, without following the level-based algorithm.\n    var order = [], m;\n    for (var i$7 = 0; i$7 < len;) {\n      if (countsAsLeft.test(types[i$7])) {\n        var start = i$7;\n        for (++i$7; i$7 < len && countsAsLeft.test(types[i$7]); ++i$7) {}\n        order.push(new BidiSpan(0, start, i$7));\n      } else {\n        var pos = i$7, at = order.length;\n        for (++i$7; i$7 < len && types[i$7] != \"L\"; ++i$7) {}\n        for (var j$2 = pos; j$2 < i$7;) {\n          if (countsAsNum.test(types[j$2])) {\n            if (pos < j$2) { order.splice(at, 0, new BidiSpan(1, pos, j$2)); }\n            var nstart = j$2;\n            for (++j$2; j$2 < i$7 && countsAsNum.test(types[j$2]); ++j$2) {}\n            order.splice(at, 0, new BidiSpan(2, nstart, j$2));\n            pos = j$2;\n          } else { ++j$2; }\n        }\n        if (pos < i$7) { order.splice(at, 0, new BidiSpan(1, pos, i$7)); }\n      }\n    }\n    if (order[0].level == 1 && (m = str.match(/^\\s+/))) {\n      order[0].from = m[0].length;\n      order.unshift(new BidiSpan(0, 0, m[0].length));\n    }\n    if (lst(order).level == 1 && (m = str.match(/\\s+$/))) {\n      lst(order).to -= m[0].length;\n      order.push(new BidiSpan(0, len - m[0].length, len));\n    }\n\n    return direction == \"rtl\" ? order.reverse() : order\n  }\n})();\n\n// Get the bidi ordering for the given line (and cache it). Returns\n// false for lines that are fully left-to-right, and an array of\n// BidiSpan objects otherwise.\nfunction getOrder(line, direction) {\n  var order = line.order;\n  if (order == null) { order = line.order = bidiOrdering(line.text, direction); }\n  return order\n}\n\nfunction moveCharLogically(line, ch, dir) {\n  var target = skipExtendingChars(line.text, ch + dir, dir);\n  return target < 0 || target > line.text.length ? null : target\n}\n\nfunction moveLogically(line, start, dir) {\n  var ch = moveCharLogically(line, start.ch, dir);\n  return ch == null ? null : new Pos(start.line, ch, dir < 0 ? \"after\" : \"before\")\n}\n\nfunction endOfLine(visually, cm, lineObj, lineNo, dir) {\n  if (visually) {\n    var order = getOrder(lineObj, cm.doc.direction);\n    if (order) {\n      var part = dir < 0 ? lst(order) : order[0];\n      var moveInStorageOrder = (dir < 0) == (part.level == 1);\n      var sticky = moveInStorageOrder ? \"after\" : \"before\";\n      var ch;\n      // With a wrapped rtl chunk (possibly spanning multiple bidi parts),\n      // it could be that the last bidi part is not on the last visual line,\n      // since visual lines contain content order-consecutive chunks.\n      // Thus, in rtl, we are looking for the first (content-order) character\n      // in the rtl chunk that is on the last line (that is, the same line\n      // as the last (content-order) character).\n      if (part.level > 0) {\n        var prep = prepareMeasureForLine(cm, lineObj);\n        ch = dir < 0 ? lineObj.text.length - 1 : 0;\n        var targetTop = measureCharPrepared(cm, prep, ch).top;\n        ch = findFirst(function (ch) { return measureCharPrepared(cm, prep, ch).top == targetTop; }, (dir < 0) == (part.level == 1) ? part.from : part.to - 1, ch);\n        if (sticky == \"before\") { ch = moveCharLogically(lineObj, ch, 1, true); }\n      } else { ch = dir < 0 ? part.to : part.from; }\n      return new Pos(lineNo, ch, sticky)\n    }\n  }\n  return new Pos(lineNo, dir < 0 ? lineObj.text.length : 0, dir < 0 ? \"before\" : \"after\")\n}\n\nfunction moveVisually(cm, line, start, dir) {\n  var bidi = getOrder(line, cm.doc.direction);\n  if (!bidi) { return moveLogically(line, start, dir) }\n  if (start.ch >= line.text.length) {\n    start.ch = line.text.length;\n    start.sticky = \"before\";\n  } else if (start.ch <= 0) {\n    start.ch = 0;\n    start.sticky = \"after\";\n  }\n  var partPos = getBidiPartAt(bidi, start.ch, start.sticky), part = bidi[partPos];\n  if (cm.doc.direction == \"ltr\" && part.level % 2 == 0 && (dir > 0 ? part.to > start.ch : part.from < start.ch)) {\n    // Case 1: We move within an ltr part in an ltr editor. Even with wrapped lines,\n    // nothing interesting happens.\n    return moveLogically(line, start, dir)\n  }\n\n  var mv = function (pos, dir) { return moveCharLogically(line, pos instanceof Pos ? pos.ch : pos, dir); };\n  var prep;\n  var getWrappedLineExtent = function (ch) {\n    if (!cm.options.lineWrapping) { return {begin: 0, end: line.text.length} }\n    prep = prep || prepareMeasureForLine(cm, line);\n    return wrappedLineExtentChar(cm, line, prep, ch)\n  };\n  var wrappedLineExtent = getWrappedLineExtent(start.sticky == \"before\" ? mv(start, -1) : start.ch);\n\n  if (cm.doc.direction == \"rtl\" || part.level == 1) {\n    var moveInStorageOrder = (part.level == 1) == (dir < 0);\n    var ch = mv(start, moveInStorageOrder ? 1 : -1);\n    if (ch != null && (!moveInStorageOrder ? ch >= part.from && ch >= wrappedLineExtent.begin : ch <= part.to && ch <= wrappedLineExtent.end)) {\n      // Case 2: We move within an rtl part or in an rtl editor on the same visual line\n      var sticky = moveInStorageOrder ? \"before\" : \"after\";\n      return new Pos(start.line, ch, sticky)\n    }\n  }\n\n  // Case 3: Could not move within this bidi part in this visual line, so leave\n  // the current bidi part\n\n  var searchInVisualLine = function (partPos, dir, wrappedLineExtent) {\n    var getRes = function (ch, moveInStorageOrder) { return moveInStorageOrder\n      ? new Pos(start.line, mv(ch, 1), \"before\")\n      : new Pos(start.line, ch, \"after\"); };\n\n    for (; partPos >= 0 && partPos < bidi.length; partPos += dir) {\n      var part = bidi[partPos];\n      var moveInStorageOrder = (dir > 0) == (part.level != 1);\n      var ch = moveInStorageOrder ? wrappedLineExtent.begin : mv(wrappedLineExtent.end, -1);\n      if (part.from <= ch && ch < part.to) { return getRes(ch, moveInStorageOrder) }\n      ch = moveInStorageOrder ? part.from : mv(part.to, -1);\n      if (wrappedLineExtent.begin <= ch && ch < wrappedLineExtent.end) { return getRes(ch, moveInStorageOrder) }\n    }\n  };\n\n  // Case 3a: Look for other bidi parts on the same visual line\n  var res = searchInVisualLine(partPos + dir, dir, wrappedLineExtent);\n  if (res) { return res }\n\n  // Case 3b: Look for other bidi parts on the next visual line\n  var nextCh = dir > 0 ? wrappedLineExtent.end : mv(wrappedLineExtent.begin, -1);\n  if (nextCh != null && !(dir > 0 && nextCh == line.text.length)) {\n    res = searchInVisualLine(dir > 0 ? 0 : bidi.length - 1, dir, getWrappedLineExtent(nextCh));\n    if (res) { return res }\n  }\n\n  // Case 4: Nowhere to move\n  return null\n}\n\n// EVENT HANDLING\n\n// Lightweight event framework. on/off also work on DOM nodes,\n// registering native DOM handlers.\n\nvar noHandlers = [];\n\nvar on = function(emitter, type, f) {\n  if (emitter.addEventListener) {\n    emitter.addEventListener(type, f, false);\n  } else if (emitter.attachEvent) {\n    emitter.attachEvent(\"on\" + type, f);\n  } else {\n    var map$$1 = emitter._handlers || (emitter._handlers = {});\n    map$$1[type] = (map$$1[type] || noHandlers).concat(f);\n  }\n};\n\nfunction getHandlers(emitter, type) {\n  return emitter._handlers && emitter._handlers[type] || noHandlers\n}\n\nfunction off(emitter, type, f) {\n  if (emitter.removeEventListener) {\n    emitter.removeEventListener(type, f, false);\n  } else if (emitter.detachEvent) {\n    emitter.detachEvent(\"on\" + type, f);\n  } else {\n    var map$$1 = emitter._handlers, arr = map$$1 && map$$1[type];\n    if (arr) {\n      var index = indexOf(arr, f);\n      if (index > -1)\n        { map$$1[type] = arr.slice(0, index).concat(arr.slice(index + 1)); }\n    }\n  }\n}\n\nfunction signal(emitter, type /*, values...*/) {\n  var handlers = getHandlers(emitter, type);\n  if (!handlers.length) { return }\n  var args = Array.prototype.slice.call(arguments, 2);\n  for (var i = 0; i < handlers.length; ++i) { handlers[i].apply(null, args); }\n}\n\n// The DOM events that CodeMirror handles can be overridden by\n// registering a (non-DOM) handler on the editor for the event name,\n// and preventDefault-ing the event in that handler.\nfunction signalDOMEvent(cm, e, override) {\n  if (typeof e == \"string\")\n    { e = {type: e, preventDefault: function() { this.defaultPrevented = true; }}; }\n  signal(cm, override || e.type, cm, e);\n  return e_defaultPrevented(e) || e.codemirrorIgnore\n}\n\nfunction signalCursorActivity(cm) {\n  var arr = cm._handlers && cm._handlers.cursorActivity;\n  if (!arr) { return }\n  var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []);\n  for (var i = 0; i < arr.length; ++i) { if (indexOf(set, arr[i]) == -1)\n    { set.push(arr[i]); } }\n}\n\nfunction hasHandler(emitter, type) {\n  return getHandlers(emitter, type).length > 0\n}\n\n// Add on and off methods to a constructor's prototype, to make\n// registering events on such objects more convenient.\nfunction eventMixin(ctor) {\n  ctor.prototype.on = function(type, f) {on(this, type, f);};\n  ctor.prototype.off = function(type, f) {off(this, type, f);};\n}\n\n// Due to the fact that we still support jurassic IE versions, some\n// compatibility wrappers are needed.\n\nfunction e_preventDefault(e) {\n  if (e.preventDefault) { e.preventDefault(); }\n  else { e.returnValue = false; }\n}\nfunction e_stopPropagation(e) {\n  if (e.stopPropagation) { e.stopPropagation(); }\n  else { e.cancelBubble = true; }\n}\nfunction e_defaultPrevented(e) {\n  return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false\n}\nfunction e_stop(e) {e_preventDefault(e); e_stopPropagation(e);}\n\nfunction e_target(e) {return e.target || e.srcElement}\nfunction e_button(e) {\n  var b = e.which;\n  if (b == null) {\n    if (e.button & 1) { b = 1; }\n    else if (e.button & 2) { b = 3; }\n    else if (e.button & 4) { b = 2; }\n  }\n  if (mac && e.ctrlKey && b == 1) { b = 3; }\n  return b\n}\n\n// Detect drag-and-drop\nvar dragAndDrop = function() {\n  // There is *some* kind of drag-and-drop support in IE6-8, but I\n  // couldn't get it to work yet.\n  if (ie && ie_version < 9) { return false }\n  var div = elt('div');\n  return \"draggable\" in div || \"dragDrop\" in div\n}();\n\nvar zwspSupported;\nfunction zeroWidthElement(measure) {\n  if (zwspSupported == null) {\n    var test = elt(\"span\", \"\\u200b\");\n    removeChildrenAndAdd(measure, elt(\"span\", [test, document.createTextNode(\"x\")]));\n    if (measure.firstChild.offsetHeight != 0)\n      { zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8); }\n  }\n  var node = zwspSupported ? elt(\"span\", \"\\u200b\") :\n    elt(\"span\", \"\\u00a0\", null, \"display: inline-block; width: 1px; margin-right: -1px\");\n  node.setAttribute(\"cm-text\", \"\");\n  return node\n}\n\n// Feature-detect IE's crummy client rect reporting for bidi text\nvar badBidiRects;\nfunction hasBadBidiRects(measure) {\n  if (badBidiRects != null) { return badBidiRects }\n  var txt = removeChildrenAndAdd(measure, document.createTextNode(\"A\\u062eA\"));\n  var r0 = range(txt, 0, 1).getBoundingClientRect();\n  var r1 = range(txt, 1, 2).getBoundingClientRect();\n  removeChildren(measure);\n  if (!r0 || r0.left == r0.right) { return false } // Safari returns null in some cases (#2780)\n  return badBidiRects = (r1.right - r0.right < 3)\n}\n\n// See if \"\".split is the broken IE version, if so, provide an\n// alternative way to split lines.\nvar splitLinesAuto = \"\\n\\nb\".split(/\\n/).length != 3 ? function (string) {\n  var pos = 0, result = [], l = string.length;\n  while (pos <= l) {\n    var nl = string.indexOf(\"\\n\", pos);\n    if (nl == -1) { nl = string.length; }\n    var line = string.slice(pos, string.charAt(nl - 1) == \"\\r\" ? nl - 1 : nl);\n    var rt = line.indexOf(\"\\r\");\n    if (rt != -1) {\n      result.push(line.slice(0, rt));\n      pos += rt + 1;\n    } else {\n      result.push(line);\n      pos = nl + 1;\n    }\n  }\n  return result\n} : function (string) { return string.split(/\\r\\n?|\\n/); };\n\nvar hasSelection = window.getSelection ? function (te) {\n  try { return te.selectionStart != te.selectionEnd }\n  catch(e) { return false }\n} : function (te) {\n  var range$$1;\n  try {range$$1 = te.ownerDocument.selection.createRange();}\n  catch(e) {}\n  if (!range$$1 || range$$1.parentElement() != te) { return false }\n  return range$$1.compareEndPoints(\"StartToEnd\", range$$1) != 0\n};\n\nvar hasCopyEvent = (function () {\n  var e = elt(\"div\");\n  if (\"oncopy\" in e) { return true }\n  e.setAttribute(\"oncopy\", \"return;\");\n  return typeof e.oncopy == \"function\"\n})();\n\nvar badZoomedRects = null;\nfunction hasBadZoomedRects(measure) {\n  if (badZoomedRects != null) { return badZoomedRects }\n  var node = removeChildrenAndAdd(measure, elt(\"span\", \"x\"));\n  var normal = node.getBoundingClientRect();\n  var fromRange = range(node, 0, 1).getBoundingClientRect();\n  return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1\n}\n\n// Known modes, by name and by MIME\nvar modes = {};\nvar mimeModes = {};\n\n// Extra arguments are stored as the mode's dependencies, which is\n// used by (legacy) mechanisms like loadmode.js to automatically\n// load a mode. (Preferred mechanism is the require/define calls.)\nfunction defineMode(name, mode) {\n  if (arguments.length > 2)\n    { mode.dependencies = Array.prototype.slice.call(arguments, 2); }\n  modes[name] = mode;\n}\n\nfunction defineMIME(mime, spec) {\n  mimeModes[mime] = spec;\n}\n\n// Given a MIME type, a {name, ...options} config object, or a name\n// string, return a mode config object.\nfunction resolveMode(spec) {\n  if (typeof spec == \"string\" && mimeModes.hasOwnProperty(spec)) {\n    spec = mimeModes[spec];\n  } else if (spec && typeof spec.name == \"string\" && mimeModes.hasOwnProperty(spec.name)) {\n    var found = mimeModes[spec.name];\n    if (typeof found == \"string\") { found = {name: found}; }\n    spec = createObj(found, spec);\n    spec.name = found.name;\n  } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+xml$/.test(spec)) {\n    return resolveMode(\"application/xml\")\n  } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+json$/.test(spec)) {\n    return resolveMode(\"application/json\")\n  }\n  if (typeof spec == \"string\") { return {name: spec} }\n  else { return spec || {name: \"null\"} }\n}\n\n// Given a mode spec (anything that resolveMode accepts), find and\n// initialize an actual mode object.\nfunction getMode(options, spec) {\n  spec = resolveMode(spec);\n  var mfactory = modes[spec.name];\n  if (!mfactory) { return getMode(options, \"text/plain\") }\n  var modeObj = mfactory(options, spec);\n  if (modeExtensions.hasOwnProperty(spec.name)) {\n    var exts = modeExtensions[spec.name];\n    for (var prop in exts) {\n      if (!exts.hasOwnProperty(prop)) { continue }\n      if (modeObj.hasOwnProperty(prop)) { modeObj[\"_\" + prop] = modeObj[prop]; }\n      modeObj[prop] = exts[prop];\n    }\n  }\n  modeObj.name = spec.name;\n  if (spec.helperType) { modeObj.helperType = spec.helperType; }\n  if (spec.modeProps) { for (var prop$1 in spec.modeProps)\n    { modeObj[prop$1] = spec.modeProps[prop$1]; } }\n\n  return modeObj\n}\n\n// This can be used to attach properties to mode objects from\n// outside the actual mode definition.\nvar modeExtensions = {};\nfunction extendMode(mode, properties) {\n  var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {});\n  copyObj(properties, exts);\n}\n\nfunction copyState(mode, state) {\n  if (state === true) { return state }\n  if (mode.copyState) { return mode.copyState(state) }\n  var nstate = {};\n  for (var n in state) {\n    var val = state[n];\n    if (val instanceof Array) { val = val.concat([]); }\n    nstate[n] = val;\n  }\n  return nstate\n}\n\n// Given a mode and a state (for that mode), find the inner mode and\n// state at the position that the state refers to.\nfunction innerMode(mode, state) {\n  var info;\n  while (mode.innerMode) {\n    info = mode.innerMode(state);\n    if (!info || info.mode == mode) { break }\n    state = info.state;\n    mode = info.mode;\n  }\n  return info || {mode: mode, state: state}\n}\n\nfunction startState(mode, a1, a2) {\n  return mode.startState ? mode.startState(a1, a2) : true\n}\n\n// STRING STREAM\n\n// Fed to the mode parsers, provides helper functions to make\n// parsers more succinct.\n\nvar StringStream = function(string, tabSize) {\n  this.pos = this.start = 0;\n  this.string = string;\n  this.tabSize = tabSize || 8;\n  this.lastColumnPos = this.lastColumnValue = 0;\n  this.lineStart = 0;\n};\n\nStringStream.prototype.eol = function () {return this.pos >= this.string.length};\nStringStream.prototype.sol = function () {return this.pos == this.lineStart};\nStringStream.prototype.peek = function () {return this.string.charAt(this.pos) || undefined};\nStringStream.prototype.next = function () {\n  if (this.pos < this.string.length)\n    { return this.string.charAt(this.pos++) }\n};\nStringStream.prototype.eat = function (match) {\n  var ch = this.string.charAt(this.pos);\n  var ok;\n  if (typeof match == \"string\") { ok = ch == match; }\n  else { ok = ch && (match.test ? match.test(ch) : match(ch)); }\n  if (ok) {++this.pos; return ch}\n};\nStringStream.prototype.eatWhile = function (match) {\n  var start = this.pos;\n  while (this.eat(match)){}\n  return this.pos > start\n};\nStringStream.prototype.eatSpace = function () {\n    var this$1 = this;\n\n  var start = this.pos;\n  while (/[\\s\\u00a0]/.test(this.string.charAt(this.pos))) { ++this$1.pos; }\n  return this.pos > start\n};\nStringStream.prototype.skipToEnd = function () {this.pos = this.string.length;};\nStringStream.prototype.skipTo = function (ch) {\n  var found = this.string.indexOf(ch, this.pos);\n  if (found > -1) {this.pos = found; return true}\n};\nStringStream.prototype.backUp = function (n) {this.pos -= n;};\nStringStream.prototype.column = function () {\n  if (this.lastColumnPos < this.start) {\n    this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue);\n    this.lastColumnPos = this.start;\n  }\n  return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n};\nStringStream.prototype.indentation = function () {\n  return countColumn(this.string, null, this.tabSize) -\n    (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n};\nStringStream.prototype.match = function (pattern, consume, caseInsensitive) {\n  if (typeof pattern == \"string\") {\n    var cased = function (str) { return caseInsensitive ? str.toLowerCase() : str; };\n    var substr = this.string.substr(this.pos, pattern.length);\n    if (cased(substr) == cased(pattern)) {\n      if (consume !== false) { this.pos += pattern.length; }\n      return true\n    }\n  } else {\n    var match = this.string.slice(this.pos).match(pattern);\n    if (match && match.index > 0) { return null }\n    if (match && consume !== false) { this.pos += match[0].length; }\n    return match\n  }\n};\nStringStream.prototype.current = function (){return this.string.slice(this.start, this.pos)};\nStringStream.prototype.hideFirstChars = function (n, inner) {\n  this.lineStart += n;\n  try { return inner() }\n  finally { this.lineStart -= n; }\n};\n\n// Compute a style array (an array starting with a mode generation\n// -- for invalidation -- followed by pairs of end positions and\n// style strings), which is used to highlight the tokens on the\n// line.\nfunction highlightLine(cm, line, state, forceToEnd) {\n  // A styles array always starts with a number identifying the\n  // mode/overlays that it is based on (for easy invalidation).\n  var st = [cm.state.modeGen], lineClasses = {};\n  // Compute the base array of styles\n  runMode(cm, line.text, cm.doc.mode, state, function (end, style) { return st.push(end, style); },\n    lineClasses, forceToEnd);\n\n  // Run overlays, adjust style array.\n  var loop = function ( o ) {\n    var overlay = cm.state.overlays[o], i = 1, at = 0;\n    runMode(cm, line.text, overlay.mode, true, function (end, style) {\n      var start = i;\n      // Ensure there's a token end at the current position, and that i points at it\n      while (at < end) {\n        var i_end = st[i];\n        if (i_end > end)\n          { st.splice(i, 1, end, st[i+1], i_end); }\n        i += 2;\n        at = Math.min(end, i_end);\n      }\n      if (!style) { return }\n      if (overlay.opaque) {\n        st.splice(start, i - start, end, \"overlay \" + style);\n        i = start + 2;\n      } else {\n        for (; start < i; start += 2) {\n          var cur = st[start+1];\n          st[start+1] = (cur ? cur + \" \" : \"\") + \"overlay \" + style;\n        }\n      }\n    }, lineClasses);\n  };\n\n  for (var o = 0; o < cm.state.overlays.length; ++o) loop( o );\n\n  return {styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null}\n}\n\nfunction getLineStyles(cm, line, updateFrontier) {\n  if (!line.styles || line.styles[0] != cm.state.modeGen) {\n    var state = getStateBefore(cm, lineNo(line));\n    var result = highlightLine(cm, line, line.text.length > cm.options.maxHighlightLength ? copyState(cm.doc.mode, state) : state);\n    line.stateAfter = state;\n    line.styles = result.styles;\n    if (result.classes) { line.styleClasses = result.classes; }\n    else if (line.styleClasses) { line.styleClasses = null; }\n    if (updateFrontier === cm.doc.frontier) { cm.doc.frontier++; }\n  }\n  return line.styles\n}\n\nfunction getStateBefore(cm, n, precise) {\n  var doc = cm.doc, display = cm.display;\n  if (!doc.mode.startState) { return true }\n  var pos = findStartLine(cm, n, precise), state = pos > doc.first && getLine(doc, pos-1).stateAfter;\n  if (!state) { state = startState(doc.mode); }\n  else { state = copyState(doc.mode, state); }\n  doc.iter(pos, n, function (line) {\n    processLine(cm, line.text, state);\n    var save = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo;\n    line.stateAfter = save ? copyState(doc.mode, state) : null;\n    ++pos;\n  });\n  if (precise) { doc.frontier = pos; }\n  return state\n}\n\n// Lightweight form of highlight -- proceed over this line and\n// update state, but don't save a style array. Used for lines that\n// aren't currently visible.\nfunction processLine(cm, text, state, startAt) {\n  var mode = cm.doc.mode;\n  var stream = new StringStream(text, cm.options.tabSize);\n  stream.start = stream.pos = startAt || 0;\n  if (text == \"\") { callBlankLine(mode, state); }\n  while (!stream.eol()) {\n    readToken(mode, stream, state);\n    stream.start = stream.pos;\n  }\n}\n\nfunction callBlankLine(mode, state) {\n  if (mode.blankLine) { return mode.blankLine(state) }\n  if (!mode.innerMode) { return }\n  var inner = innerMode(mode, state);\n  if (inner.mode.blankLine) { return inner.mode.blankLine(inner.state) }\n}\n\nfunction readToken(mode, stream, state, inner) {\n  for (var i = 0; i < 10; i++) {\n    if (inner) { inner[0] = innerMode(mode, state).mode; }\n    var style = mode.token(stream, state);\n    if (stream.pos > stream.start) { return style }\n  }\n  throw new Error(\"Mode \" + mode.name + \" failed to advance stream.\")\n}\n\n// Utility for getTokenAt and getLineTokens\nfunction takeToken(cm, pos, precise, asArray) {\n  var getObj = function (copy) { return ({\n    start: stream.start, end: stream.pos,\n    string: stream.current(),\n    type: style || null,\n    state: copy ? copyState(doc.mode, state) : state\n  }); };\n\n  var doc = cm.doc, mode = doc.mode, style;\n  pos = clipPos(doc, pos);\n  var line = getLine(doc, pos.line), state = getStateBefore(cm, pos.line, precise);\n  var stream = new StringStream(line.text, cm.options.tabSize), tokens;\n  if (asArray) { tokens = []; }\n  while ((asArray || stream.pos < pos.ch) && !stream.eol()) {\n    stream.start = stream.pos;\n    style = readToken(mode, stream, state);\n    if (asArray) { tokens.push(getObj(true)); }\n  }\n  return asArray ? tokens : getObj()\n}\n\nfunction extractLineClasses(type, output) {\n  if (type) { for (;;) {\n    var lineClass = type.match(/(?:^|\\s+)line-(background-)?(\\S+)/);\n    if (!lineClass) { break }\n    type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length);\n    var prop = lineClass[1] ? \"bgClass\" : \"textClass\";\n    if (output[prop] == null)\n      { output[prop] = lineClass[2]; }\n    else if (!(new RegExp(\"(?:^|\\s)\" + lineClass[2] + \"(?:$|\\s)\")).test(output[prop]))\n      { output[prop] += \" \" + lineClass[2]; }\n  } }\n  return type\n}\n\n// Run the given mode's parser over a line, calling f for each token.\nfunction runMode(cm, text, mode, state, f, lineClasses, forceToEnd) {\n  var flattenSpans = mode.flattenSpans;\n  if (flattenSpans == null) { flattenSpans = cm.options.flattenSpans; }\n  var curStart = 0, curStyle = null;\n  var stream = new StringStream(text, cm.options.tabSize), style;\n  var inner = cm.options.addModeClass && [null];\n  if (text == \"\") { extractLineClasses(callBlankLine(mode, state), lineClasses); }\n  while (!stream.eol()) {\n    if (stream.pos > cm.options.maxHighlightLength) {\n      flattenSpans = false;\n      if (forceToEnd) { processLine(cm, text, state, stream.pos); }\n      stream.pos = text.length;\n      style = null;\n    } else {\n      style = extractLineClasses(readToken(mode, stream, state, inner), lineClasses);\n    }\n    if (inner) {\n      var mName = inner[0].name;\n      if (mName) { style = \"m-\" + (style ? mName + \" \" + style : mName); }\n    }\n    if (!flattenSpans || curStyle != style) {\n      while (curStart < stream.start) {\n        curStart = Math.min(stream.start, curStart + 5000);\n        f(curStart, curStyle);\n      }\n      curStyle = style;\n    }\n    stream.start = stream.pos;\n  }\n  while (curStart < stream.pos) {\n    // Webkit seems to refuse to render text nodes longer than 57444\n    // characters, and returns inaccurate measurements in nodes\n    // starting around 5000 chars.\n    var pos = Math.min(stream.pos, curStart + 5000);\n    f(pos, curStyle);\n    curStart = pos;\n  }\n}\n\n// Finds the line to start with when starting a parse. Tries to\n// find a line with a stateAfter, so that it can start with a\n// valid state. If that fails, it returns the line with the\n// smallest indentation, which tends to need the least context to\n// parse correctly.\nfunction findStartLine(cm, n, precise) {\n  var minindent, minline, doc = cm.doc;\n  var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100);\n  for (var search = n; search > lim; --search) {\n    if (search <= doc.first) { return doc.first }\n    var line = getLine(doc, search - 1);\n    if (line.stateAfter && (!precise || search <= doc.frontier)) { return search }\n    var indented = countColumn(line.text, null, cm.options.tabSize);\n    if (minline == null || minindent > indented) {\n      minline = search - 1;\n      minindent = indented;\n    }\n  }\n  return minline\n}\n\n// LINE DATA STRUCTURE\n\n// Line objects. These hold state related to a line, including\n// highlighting info (the styles array).\nvar Line = function(text, markedSpans, estimateHeight) {\n  this.text = text;\n  attachMarkedSpans(this, markedSpans);\n  this.height = estimateHeight ? estimateHeight(this) : 1;\n};\n\nLine.prototype.lineNo = function () { return lineNo(this) };\neventMixin(Line);\n\n// Change the content (text, markers) of a line. Automatically\n// invalidates cached information and tries to re-estimate the\n// line's height.\nfunction updateLine(line, text, markedSpans, estimateHeight) {\n  line.text = text;\n  if (line.stateAfter) { line.stateAfter = null; }\n  if (line.styles) { line.styles = null; }\n  if (line.order != null) { line.order = null; }\n  detachMarkedSpans(line);\n  attachMarkedSpans(line, markedSpans);\n  var estHeight = estimateHeight ? estimateHeight(line) : 1;\n  if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n}\n\n// Detach a line from the document tree and its markers.\nfunction cleanUpLine(line) {\n  line.parent = null;\n  detachMarkedSpans(line);\n}\n\n// Convert a style as returned by a mode (either null, or a string\n// containing one or more styles) to a CSS style. This is cached,\n// and also looks for line-wide styles.\nvar styleToClassCache = {};\nvar styleToClassCacheWithMode = {};\nfunction interpretTokenStyle(style, options) {\n  if (!style || /^\\s*$/.test(style)) { return null }\n  var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache;\n  return cache[style] ||\n    (cache[style] = style.replace(/\\S+/g, \"cm-$&\"))\n}\n\n// Render the DOM representation of the text of a line. Also builds\n// up a 'line map', which points at the DOM nodes that represent\n// specific stretches of text, and is used by the measuring code.\n// The returned object contains the DOM node, this map, and\n// information about line-wide styles that were set by the mode.\nfunction buildLineContent(cm, lineView) {\n  // The padding-right forces the element to have a 'border', which\n  // is needed on Webkit to be able to get line-level bounding\n  // rectangles for it (in measureChar).\n  var content = eltP(\"span\", null, null, webkit ? \"padding-right: .1px\" : null);\n  var builder = {pre: eltP(\"pre\", [content], \"CodeMirror-line\"), content: content,\n                 col: 0, pos: 0, cm: cm,\n                 trailingSpace: false,\n                 splitSpaces: (ie || webkit) && cm.getOption(\"lineWrapping\")};\n  lineView.measure = {};\n\n  // Iterate over the logical lines that make up this visual line.\n  for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) {\n    var line = i ? lineView.rest[i - 1] : lineView.line, order = (void 0);\n    builder.pos = 0;\n    builder.addToken = buildToken;\n    // Optionally wire in some hacks into the token-rendering\n    // algorithm, to deal with browser quirks.\n    if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line, cm.doc.direction)))\n      { builder.addToken = buildTokenBadBidi(builder.addToken, order); }\n    builder.map = [];\n    var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line);\n    insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate));\n    if (line.styleClasses) {\n      if (line.styleClasses.bgClass)\n        { builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || \"\"); }\n      if (line.styleClasses.textClass)\n        { builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || \"\"); }\n    }\n\n    // Ensure at least a single node is present, for measuring.\n    if (builder.map.length == 0)\n      { builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure))); }\n\n    // Store the map and a cache object for the current logical line\n    if (i == 0) {\n      lineView.measure.map = builder.map;\n      lineView.measure.cache = {};\n    } else {\n      (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map)\n      ;(lineView.measure.caches || (lineView.measure.caches = [])).push({});\n    }\n  }\n\n  // See issue #2901\n  if (webkit) {\n    var last = builder.content.lastChild;\n    if (/\\bcm-tab\\b/.test(last.className) || (last.querySelector && last.querySelector(\".cm-tab\")))\n      { builder.content.className = \"cm-tab-wrap-hack\"; }\n  }\n\n  signal(cm, \"renderLine\", cm, lineView.line, builder.pre);\n  if (builder.pre.className)\n    { builder.textClass = joinClasses(builder.pre.className, builder.textClass || \"\"); }\n\n  return builder\n}\n\nfunction defaultSpecialCharPlaceholder(ch) {\n  var token = elt(\"span\", \"\\u2022\", \"cm-invalidchar\");\n  token.title = \"\\\\u\" + ch.charCodeAt(0).toString(16);\n  token.setAttribute(\"aria-label\", token.title);\n  return token\n}\n\n// Build up the DOM representation for a single token, and add it to\n// the line map. Takes care to render special characters separately.\nfunction buildToken(builder, text, style, startStyle, endStyle, title, css) {\n  if (!text) { return }\n  var displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text;\n  var special = builder.cm.state.specialChars, mustWrap = false;\n  var content;\n  if (!special.test(text)) {\n    builder.col += text.length;\n    content = document.createTextNode(displayText);\n    builder.map.push(builder.pos, builder.pos + text.length, content);\n    if (ie && ie_version < 9) { mustWrap = true; }\n    builder.pos += text.length;\n  } else {\n    content = document.createDocumentFragment();\n    var pos = 0;\n    while (true) {\n      special.lastIndex = pos;\n      var m = special.exec(text);\n      var skipped = m ? m.index - pos : text.length - pos;\n      if (skipped) {\n        var txt = document.createTextNode(displayText.slice(pos, pos + skipped));\n        if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt])); }\n        else { content.appendChild(txt); }\n        builder.map.push(builder.pos, builder.pos + skipped, txt);\n        builder.col += skipped;\n        builder.pos += skipped;\n      }\n      if (!m) { break }\n      pos += skipped + 1;\n      var txt$1 = (void 0);\n      if (m[0] == \"\\t\") {\n        var tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize;\n        txt$1 = content.appendChild(elt(\"span\", spaceStr(tabWidth), \"cm-tab\"));\n        txt$1.setAttribute(\"role\", \"presentation\");\n        txt$1.setAttribute(\"cm-text\", \"\\t\");\n        builder.col += tabWidth;\n      } else if (m[0] == \"\\r\" || m[0] == \"\\n\") {\n        txt$1 = content.appendChild(elt(\"span\", m[0] == \"\\r\" ? \"\\u240d\" : \"\\u2424\", \"cm-invalidchar\"));\n        txt$1.setAttribute(\"cm-text\", m[0]);\n        builder.col += 1;\n      } else {\n        txt$1 = builder.cm.options.specialCharPlaceholder(m[0]);\n        txt$1.setAttribute(\"cm-text\", m[0]);\n        if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt$1])); }\n        else { content.appendChild(txt$1); }\n        builder.col += 1;\n      }\n      builder.map.push(builder.pos, builder.pos + 1, txt$1);\n      builder.pos++;\n    }\n  }\n  builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32;\n  if (style || startStyle || endStyle || mustWrap || css) {\n    var fullStyle = style || \"\";\n    if (startStyle) { fullStyle += startStyle; }\n    if (endStyle) { fullStyle += endStyle; }\n    var token = elt(\"span\", [content], fullStyle, css);\n    if (title) { token.title = title; }\n    return builder.content.appendChild(token)\n  }\n  builder.content.appendChild(content);\n}\n\nfunction splitSpaces(text, trailingBefore) {\n  if (text.length > 1 && !/  /.test(text)) { return text }\n  var spaceBefore = trailingBefore, result = \"\";\n  for (var i = 0; i < text.length; i++) {\n    var ch = text.charAt(i);\n    if (ch == \" \" && spaceBefore && (i == text.length - 1 || text.charCodeAt(i + 1) == 32))\n      { ch = \"\\u00a0\"; }\n    result += ch;\n    spaceBefore = ch == \" \";\n  }\n  return result\n}\n\n// Work around nonsense dimensions being reported for stretches of\n// right-to-left text.\nfunction buildTokenBadBidi(inner, order) {\n  return function (builder, text, style, startStyle, endStyle, title, css) {\n    style = style ? style + \" cm-force-border\" : \"cm-force-border\";\n    var start = builder.pos, end = start + text.length;\n    for (;;) {\n      // Find the part that overlaps with the start of this text\n      var part = (void 0);\n      for (var i = 0; i < order.length; i++) {\n        part = order[i];\n        if (part.to > start && part.from <= start) { break }\n      }\n      if (part.to >= end) { return inner(builder, text, style, startStyle, endStyle, title, css) }\n      inner(builder, text.slice(0, part.to - start), style, startStyle, null, title, css);\n      startStyle = null;\n      text = text.slice(part.to - start);\n      start = part.to;\n    }\n  }\n}\n\nfunction buildCollapsedSpan(builder, size, marker, ignoreWidget) {\n  var widget = !ignoreWidget && marker.widgetNode;\n  if (widget) { builder.map.push(builder.pos, builder.pos + size, widget); }\n  if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) {\n    if (!widget)\n      { widget = builder.content.appendChild(document.createElement(\"span\")); }\n    widget.setAttribute(\"cm-marker\", marker.id);\n  }\n  if (widget) {\n    builder.cm.display.input.setUneditable(widget);\n    builder.content.appendChild(widget);\n  }\n  builder.pos += size;\n  builder.trailingSpace = false;\n}\n\n// Outputs a number of spans to make up a line, taking highlighting\n// and marked text into account.\nfunction insertLineContent(line, builder, styles) {\n  var spans = line.markedSpans, allText = line.text, at = 0;\n  if (!spans) {\n    for (var i$1 = 1; i$1 < styles.length; i$1+=2)\n      { builder.addToken(builder, allText.slice(at, at = styles[i$1]), interpretTokenStyle(styles[i$1+1], builder.cm.options)); }\n    return\n  }\n\n  var len = allText.length, pos = 0, i = 1, text = \"\", style, css;\n  var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, title, collapsed;\n  for (;;) {\n    if (nextChange == pos) { // Update current marker set\n      spanStyle = spanEndStyle = spanStartStyle = title = css = \"\";\n      collapsed = null; nextChange = Infinity;\n      var foundBookmarks = [], endStyles = (void 0);\n      for (var j = 0; j < spans.length; ++j) {\n        var sp = spans[j], m = sp.marker;\n        if (m.type == \"bookmark\" && sp.from == pos && m.widgetNode) {\n          foundBookmarks.push(m);\n        } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) {\n          if (sp.to != null && sp.to != pos && nextChange > sp.to) {\n            nextChange = sp.to;\n            spanEndStyle = \"\";\n          }\n          if (m.className) { spanStyle += \" \" + m.className; }\n          if (m.css) { css = (css ? css + \";\" : \"\") + m.css; }\n          if (m.startStyle && sp.from == pos) { spanStartStyle += \" \" + m.startStyle; }\n          if (m.endStyle && sp.to == nextChange) { (endStyles || (endStyles = [])).push(m.endStyle, sp.to); }\n          if (m.title && !title) { title = m.title; }\n          if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0))\n            { collapsed = sp; }\n        } else if (sp.from > pos && nextChange > sp.from) {\n          nextChange = sp.from;\n        }\n      }\n      if (endStyles) { for (var j$1 = 0; j$1 < endStyles.length; j$1 += 2)\n        { if (endStyles[j$1 + 1] == nextChange) { spanEndStyle += \" \" + endStyles[j$1]; } } }\n\n      if (!collapsed || collapsed.from == pos) { for (var j$2 = 0; j$2 < foundBookmarks.length; ++j$2)\n        { buildCollapsedSpan(builder, 0, foundBookmarks[j$2]); } }\n      if (collapsed && (collapsed.from || 0) == pos) {\n        buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos,\n                           collapsed.marker, collapsed.from == null);\n        if (collapsed.to == null) { return }\n        if (collapsed.to == pos) { collapsed = false; }\n      }\n    }\n    if (pos >= len) { break }\n\n    var upto = Math.min(len, nextChange);\n    while (true) {\n      if (text) {\n        var end = pos + text.length;\n        if (!collapsed) {\n          var tokenText = end > upto ? text.slice(0, upto - pos) : text;\n          builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle,\n                           spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : \"\", title, css);\n        }\n        if (end >= upto) {text = text.slice(upto - pos); pos = upto; break}\n        pos = end;\n        spanStartStyle = \"\";\n      }\n      text = allText.slice(at, at = styles[i++]);\n      style = interpretTokenStyle(styles[i++], builder.cm.options);\n    }\n  }\n}\n\n\n// These objects are used to represent the visible (currently drawn)\n// part of the document. A LineView may correspond to multiple\n// logical lines, if those are connected by collapsed ranges.\nfunction LineView(doc, line, lineN) {\n  // The starting line\n  this.line = line;\n  // Continuing lines, if any\n  this.rest = visualLineContinued(line);\n  // Number of logical lines in this visual line\n  this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1;\n  this.node = this.text = null;\n  this.hidden = lineIsHidden(doc, line);\n}\n\n// Create a range of LineView objects for the given lines.\nfunction buildViewArray(cm, from, to) {\n  var array = [], nextPos;\n  for (var pos = from; pos < to; pos = nextPos) {\n    var view = new LineView(cm.doc, getLine(cm.doc, pos), pos);\n    nextPos = pos + view.size;\n    array.push(view);\n  }\n  return array\n}\n\nvar operationGroup = null;\n\nfunction pushOperation(op) {\n  if (operationGroup) {\n    operationGroup.ops.push(op);\n  } else {\n    op.ownsGroup = operationGroup = {\n      ops: [op],\n      delayedCallbacks: []\n    };\n  }\n}\n\nfunction fireCallbacksForOps(group) {\n  // Calls delayed callbacks and cursorActivity handlers until no\n  // new ones appear\n  var callbacks = group.delayedCallbacks, i = 0;\n  do {\n    for (; i < callbacks.length; i++)\n      { callbacks[i].call(null); }\n    for (var j = 0; j < group.ops.length; j++) {\n      var op = group.ops[j];\n      if (op.cursorActivityHandlers)\n        { while (op.cursorActivityCalled < op.cursorActivityHandlers.length)\n          { op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm); } }\n    }\n  } while (i < callbacks.length)\n}\n\nfunction finishOperation(op, endCb) {\n  var group = op.ownsGroup;\n  if (!group) { return }\n\n  try { fireCallbacksForOps(group); }\n  finally {\n    operationGroup = null;\n    endCb(group);\n  }\n}\n\nvar orphanDelayedCallbacks = null;\n\n// Often, we want to signal events at a point where we are in the\n// middle of some work, but don't want the handler to start calling\n// other methods on the editor, which might be in an inconsistent\n// state or simply not expect any other events to happen.\n// signalLater looks whether there are any handlers, and schedules\n// them to be executed when the last operation ends, or, if no\n// operation is active, when a timeout fires.\nfunction signalLater(emitter, type /*, values...*/) {\n  var arr = getHandlers(emitter, type);\n  if (!arr.length) { return }\n  var args = Array.prototype.slice.call(arguments, 2), list;\n  if (operationGroup) {\n    list = operationGroup.delayedCallbacks;\n  } else if (orphanDelayedCallbacks) {\n    list = orphanDelayedCallbacks;\n  } else {\n    list = orphanDelayedCallbacks = [];\n    setTimeout(fireOrphanDelayed, 0);\n  }\n  var loop = function ( i ) {\n    list.push(function () { return arr[i].apply(null, args); });\n  };\n\n  for (var i = 0; i < arr.length; ++i)\n    loop( i );\n}\n\nfunction fireOrphanDelayed() {\n  var delayed = orphanDelayedCallbacks;\n  orphanDelayedCallbacks = null;\n  for (var i = 0; i < delayed.length; ++i) { delayed[i](); }\n}\n\n// When an aspect of a line changes, a string is added to\n// lineView.changes. This updates the relevant part of the line's\n// DOM structure.\nfunction updateLineForChanges(cm, lineView, lineN, dims) {\n  for (var j = 0; j < lineView.changes.length; j++) {\n    var type = lineView.changes[j];\n    if (type == \"text\") { updateLineText(cm, lineView); }\n    else if (type == \"gutter\") { updateLineGutter(cm, lineView, lineN, dims); }\n    else if (type == \"class\") { updateLineClasses(cm, lineView); }\n    else if (type == \"widget\") { updateLineWidgets(cm, lineView, dims); }\n  }\n  lineView.changes = null;\n}\n\n// Lines with gutter elements, widgets or a background class need to\n// be wrapped, and have the extra elements added to the wrapper div\nfunction ensureLineWrapped(lineView) {\n  if (lineView.node == lineView.text) {\n    lineView.node = elt(\"div\", null, null, \"position: relative\");\n    if (lineView.text.parentNode)\n      { lineView.text.parentNode.replaceChild(lineView.node, lineView.text); }\n    lineView.node.appendChild(lineView.text);\n    if (ie && ie_version < 8) { lineView.node.style.zIndex = 2; }\n  }\n  return lineView.node\n}\n\nfunction updateLineBackground(cm, lineView) {\n  var cls = lineView.bgClass ? lineView.bgClass + \" \" + (lineView.line.bgClass || \"\") : lineView.line.bgClass;\n  if (cls) { cls += \" CodeMirror-linebackground\"; }\n  if (lineView.background) {\n    if (cls) { lineView.background.className = cls; }\n    else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null; }\n  } else if (cls) {\n    var wrap = ensureLineWrapped(lineView);\n    lineView.background = wrap.insertBefore(elt(\"div\", null, cls), wrap.firstChild);\n    cm.display.input.setUneditable(lineView.background);\n  }\n}\n\n// Wrapper around buildLineContent which will reuse the structure\n// in display.externalMeasured when possible.\nfunction getLineContent(cm, lineView) {\n  var ext = cm.display.externalMeasured;\n  if (ext && ext.line == lineView.line) {\n    cm.display.externalMeasured = null;\n    lineView.measure = ext.measure;\n    return ext.built\n  }\n  return buildLineContent(cm, lineView)\n}\n\n// Redraw the line's text. Interacts with the background and text\n// classes because the mode may output tokens that influence these\n// classes.\nfunction updateLineText(cm, lineView) {\n  var cls = lineView.text.className;\n  var built = getLineContent(cm, lineView);\n  if (lineView.text == lineView.node) { lineView.node = built.pre; }\n  lineView.text.parentNode.replaceChild(built.pre, lineView.text);\n  lineView.text = built.pre;\n  if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) {\n    lineView.bgClass = built.bgClass;\n    lineView.textClass = built.textClass;\n    updateLineClasses(cm, lineView);\n  } else if (cls) {\n    lineView.text.className = cls;\n  }\n}\n\nfunction updateLineClasses(cm, lineView) {\n  updateLineBackground(cm, lineView);\n  if (lineView.line.wrapClass)\n    { ensureLineWrapped(lineView).className = lineView.line.wrapClass; }\n  else if (lineView.node != lineView.text)\n    { lineView.node.className = \"\"; }\n  var textClass = lineView.textClass ? lineView.textClass + \" \" + (lineView.line.textClass || \"\") : lineView.line.textClass;\n  lineView.text.className = textClass || \"\";\n}\n\nfunction updateLineGutter(cm, lineView, lineN, dims) {\n  if (lineView.gutter) {\n    lineView.node.removeChild(lineView.gutter);\n    lineView.gutter = null;\n  }\n  if (lineView.gutterBackground) {\n    lineView.node.removeChild(lineView.gutterBackground);\n    lineView.gutterBackground = null;\n  }\n  if (lineView.line.gutterClass) {\n    var wrap = ensureLineWrapped(lineView);\n    lineView.gutterBackground = elt(\"div\", null, \"CodeMirror-gutter-background \" + lineView.line.gutterClass,\n                                    (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px; width: \" + (dims.gutterTotalWidth) + \"px\"));\n    cm.display.input.setUneditable(lineView.gutterBackground);\n    wrap.insertBefore(lineView.gutterBackground, lineView.text);\n  }\n  var markers = lineView.line.gutterMarkers;\n  if (cm.options.lineNumbers || markers) {\n    var wrap$1 = ensureLineWrapped(lineView);\n    var gutterWrap = lineView.gutter = elt(\"div\", null, \"CodeMirror-gutter-wrapper\", (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px\"));\n    cm.display.input.setUneditable(gutterWrap);\n    wrap$1.insertBefore(gutterWrap, lineView.text);\n    if (lineView.line.gutterClass)\n      { gutterWrap.className += \" \" + lineView.line.gutterClass; }\n    if (cm.options.lineNumbers && (!markers || !markers[\"CodeMirror-linenumbers\"]))\n      { lineView.lineNumber = gutterWrap.appendChild(\n        elt(\"div\", lineNumberFor(cm.options, lineN),\n            \"CodeMirror-linenumber CodeMirror-gutter-elt\",\n            (\"left: \" + (dims.gutterLeft[\"CodeMirror-linenumbers\"]) + \"px; width: \" + (cm.display.lineNumInnerWidth) + \"px\"))); }\n    if (markers) { for (var k = 0; k < cm.options.gutters.length; ++k) {\n      var id = cm.options.gutters[k], found = markers.hasOwnProperty(id) && markers[id];\n      if (found)\n        { gutterWrap.appendChild(elt(\"div\", [found], \"CodeMirror-gutter-elt\",\n                                   (\"left: \" + (dims.gutterLeft[id]) + \"px; width: \" + (dims.gutterWidth[id]) + \"px\"))); }\n    } }\n  }\n}\n\nfunction updateLineWidgets(cm, lineView, dims) {\n  if (lineView.alignable) { lineView.alignable = null; }\n  for (var node = lineView.node.firstChild, next = (void 0); node; node = next) {\n    next = node.nextSibling;\n    if (node.className == \"CodeMirror-linewidget\")\n      { lineView.node.removeChild(node); }\n  }\n  insertLineWidgets(cm, lineView, dims);\n}\n\n// Build a line's DOM representation from scratch\nfunction buildLineElement(cm, lineView, lineN, dims) {\n  var built = getLineContent(cm, lineView);\n  lineView.text = lineView.node = built.pre;\n  if (built.bgClass) { lineView.bgClass = built.bgClass; }\n  if (built.textClass) { lineView.textClass = built.textClass; }\n\n  updateLineClasses(cm, lineView);\n  updateLineGutter(cm, lineView, lineN, dims);\n  insertLineWidgets(cm, lineView, dims);\n  return lineView.node\n}\n\n// A lineView may contain multiple logical lines (when merged by\n// collapsed spans). The widgets for all of them need to be drawn.\nfunction insertLineWidgets(cm, lineView, dims) {\n  insertLineWidgetsFor(cm, lineView.line, lineView, dims, true);\n  if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n    { insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false); } }\n}\n\nfunction insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) {\n  if (!line.widgets) { return }\n  var wrap = ensureLineWrapped(lineView);\n  for (var i = 0, ws = line.widgets; i < ws.length; ++i) {\n    var widget = ws[i], node = elt(\"div\", [widget.node], \"CodeMirror-linewidget\");\n    if (!widget.handleMouseEvents) { node.setAttribute(\"cm-ignore-events\", \"true\"); }\n    positionLineWidget(widget, node, lineView, dims);\n    cm.display.input.setUneditable(node);\n    if (allowAbove && widget.above)\n      { wrap.insertBefore(node, lineView.gutter || lineView.text); }\n    else\n      { wrap.appendChild(node); }\n    signalLater(widget, \"redraw\");\n  }\n}\n\nfunction positionLineWidget(widget, node, lineView, dims) {\n  if (widget.noHScroll) {\n    (lineView.alignable || (lineView.alignable = [])).push(node);\n    var width = dims.wrapperWidth;\n    node.style.left = dims.fixedPos + \"px\";\n    if (!widget.coverGutter) {\n      width -= dims.gutterTotalWidth;\n      node.style.paddingLeft = dims.gutterTotalWidth + \"px\";\n    }\n    node.style.width = width + \"px\";\n  }\n  if (widget.coverGutter) {\n    node.style.zIndex = 5;\n    node.style.position = \"relative\";\n    if (!widget.noHScroll) { node.style.marginLeft = -dims.gutterTotalWidth + \"px\"; }\n  }\n}\n\nfunction widgetHeight(widget) {\n  if (widget.height != null) { return widget.height }\n  var cm = widget.doc.cm;\n  if (!cm) { return 0 }\n  if (!contains(document.body, widget.node)) {\n    var parentStyle = \"position: relative;\";\n    if (widget.coverGutter)\n      { parentStyle += \"margin-left: -\" + cm.display.gutters.offsetWidth + \"px;\"; }\n    if (widget.noHScroll)\n      { parentStyle += \"width: \" + cm.display.wrapper.clientWidth + \"px;\"; }\n    removeChildrenAndAdd(cm.display.measure, elt(\"div\", [widget.node], null, parentStyle));\n  }\n  return widget.height = widget.node.parentNode.offsetHeight\n}\n\n// Return true when the given mouse event happened in a widget\nfunction eventInWidget(display, e) {\n  for (var n = e_target(e); n != display.wrapper; n = n.parentNode) {\n    if (!n || (n.nodeType == 1 && n.getAttribute(\"cm-ignore-events\") == \"true\") ||\n        (n.parentNode == display.sizer && n != display.mover))\n      { return true }\n  }\n}\n\n// POSITION MEASUREMENT\n\nfunction paddingTop(display) {return display.lineSpace.offsetTop}\nfunction paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight}\nfunction paddingH(display) {\n  if (display.cachedPaddingH) { return display.cachedPaddingH }\n  var e = removeChildrenAndAdd(display.measure, elt(\"pre\", \"x\"));\n  var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle;\n  var data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)};\n  if (!isNaN(data.left) && !isNaN(data.right)) { display.cachedPaddingH = data; }\n  return data\n}\n\nfunction scrollGap(cm) { return scrollerGap - cm.display.nativeBarWidth }\nfunction displayWidth(cm) {\n  return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth\n}\nfunction displayHeight(cm) {\n  return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight\n}\n\n// Ensure the lineView.wrapping.heights array is populated. This is\n// an array of bottom offsets for the lines that make up a drawn\n// line. When lineWrapping is on, there might be more than one\n// height.\nfunction ensureLineHeights(cm, lineView, rect) {\n  var wrapping = cm.options.lineWrapping;\n  var curWidth = wrapping && displayWidth(cm);\n  if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) {\n    var heights = lineView.measure.heights = [];\n    if (wrapping) {\n      lineView.measure.width = curWidth;\n      var rects = lineView.text.firstChild.getClientRects();\n      for (var i = 0; i < rects.length - 1; i++) {\n        var cur = rects[i], next = rects[i + 1];\n        if (Math.abs(cur.bottom - next.bottom) > 2)\n          { heights.push((cur.bottom + next.top) / 2 - rect.top); }\n      }\n    }\n    heights.push(rect.bottom - rect.top);\n  }\n}\n\n// Find a line map (mapping character offsets to text nodes) and a\n// measurement cache for the given line number. (A line view might\n// contain multiple lines when collapsed ranges are present.)\nfunction mapFromLineView(lineView, line, lineN) {\n  if (lineView.line == line)\n    { return {map: lineView.measure.map, cache: lineView.measure.cache} }\n  for (var i = 0; i < lineView.rest.length; i++)\n    { if (lineView.rest[i] == line)\n      { return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]} } }\n  for (var i$1 = 0; i$1 < lineView.rest.length; i$1++)\n    { if (lineNo(lineView.rest[i$1]) > lineN)\n      { return {map: lineView.measure.maps[i$1], cache: lineView.measure.caches[i$1], before: true} } }\n}\n\n// Render a line into the hidden node display.externalMeasured. Used\n// when measurement is needed for a line that's not in the viewport.\nfunction updateExternalMeasurement(cm, line) {\n  line = visualLine(line);\n  var lineN = lineNo(line);\n  var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN);\n  view.lineN = lineN;\n  var built = view.built = buildLineContent(cm, view);\n  view.text = built.pre;\n  removeChildrenAndAdd(cm.display.lineMeasure, built.pre);\n  return view\n}\n\n// Get a {top, bottom, left, right} box (in line-local coordinates)\n// for a given character.\nfunction measureChar(cm, line, ch, bias) {\n  return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias)\n}\n\n// Find a line view that corresponds to the given line number.\nfunction findViewForLine(cm, lineN) {\n  if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo)\n    { return cm.display.view[findViewIndex(cm, lineN)] }\n  var ext = cm.display.externalMeasured;\n  if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size)\n    { return ext }\n}\n\n// Measurement can be split in two steps, the set-up work that\n// applies to the whole line, and the measurement of the actual\n// character. Functions like coordsChar, that need to do a lot of\n// measurements in a row, can thus ensure that the set-up work is\n// only done once.\nfunction prepareMeasureForLine(cm, line) {\n  var lineN = lineNo(line);\n  var view = findViewForLine(cm, lineN);\n  if (view && !view.text) {\n    view = null;\n  } else if (view && view.changes) {\n    updateLineForChanges(cm, view, lineN, getDimensions(cm));\n    cm.curOp.forceUpdate = true;\n  }\n  if (!view)\n    { view = updateExternalMeasurement(cm, line); }\n\n  var info = mapFromLineView(view, line, lineN);\n  return {\n    line: line, view: view, rect: null,\n    map: info.map, cache: info.cache, before: info.before,\n    hasHeights: false\n  }\n}\n\n// Given a prepared measurement object, measures the position of an\n// actual character (or fetches it from the cache).\nfunction measureCharPrepared(cm, prepared, ch, bias, varHeight) {\n  if (prepared.before) { ch = -1; }\n  var key = ch + (bias || \"\"), found;\n  if (prepared.cache.hasOwnProperty(key)) {\n    found = prepared.cache[key];\n  } else {\n    if (!prepared.rect)\n      { prepared.rect = prepared.view.text.getBoundingClientRect(); }\n    if (!prepared.hasHeights) {\n      ensureLineHeights(cm, prepared.view, prepared.rect);\n      prepared.hasHeights = true;\n    }\n    found = measureCharInner(cm, prepared, ch, bias);\n    if (!found.bogus) { prepared.cache[key] = found; }\n  }\n  return {left: found.left, right: found.right,\n          top: varHeight ? found.rtop : found.top,\n          bottom: varHeight ? found.rbottom : found.bottom}\n}\n\nvar nullRect = {left: 0, right: 0, top: 0, bottom: 0};\n\nfunction nodeAndOffsetInLineMap(map$$1, ch, bias) {\n  var node, start, end, collapse, mStart, mEnd;\n  // First, search the line map for the text node corresponding to,\n  // or closest to, the target character.\n  for (var i = 0; i < map$$1.length; i += 3) {\n    mStart = map$$1[i];\n    mEnd = map$$1[i + 1];\n    if (ch < mStart) {\n      start = 0; end = 1;\n      collapse = \"left\";\n    } else if (ch < mEnd) {\n      start = ch - mStart;\n      end = start + 1;\n    } else if (i == map$$1.length - 3 || ch == mEnd && map$$1[i + 3] > ch) {\n      end = mEnd - mStart;\n      start = end - 1;\n      if (ch >= mEnd) { collapse = \"right\"; }\n    }\n    if (start != null) {\n      node = map$$1[i + 2];\n      if (mStart == mEnd && bias == (node.insertLeft ? \"left\" : \"right\"))\n        { collapse = bias; }\n      if (bias == \"left\" && start == 0)\n        { while (i && map$$1[i - 2] == map$$1[i - 3] && map$$1[i - 1].insertLeft) {\n          node = map$$1[(i -= 3) + 2];\n          collapse = \"left\";\n        } }\n      if (bias == \"right\" && start == mEnd - mStart)\n        { while (i < map$$1.length - 3 && map$$1[i + 3] == map$$1[i + 4] && !map$$1[i + 5].insertLeft) {\n          node = map$$1[(i += 3) + 2];\n          collapse = \"right\";\n        } }\n      break\n    }\n  }\n  return {node: node, start: start, end: end, collapse: collapse, coverStart: mStart, coverEnd: mEnd}\n}\n\nfunction getUsefulRect(rects, bias) {\n  var rect = nullRect;\n  if (bias == \"left\") { for (var i = 0; i < rects.length; i++) {\n    if ((rect = rects[i]).left != rect.right) { break }\n  } } else { for (var i$1 = rects.length - 1; i$1 >= 0; i$1--) {\n    if ((rect = rects[i$1]).left != rect.right) { break }\n  } }\n  return rect\n}\n\nfunction measureCharInner(cm, prepared, ch, bias) {\n  var place = nodeAndOffsetInLineMap(prepared.map, ch, bias);\n  var node = place.node, start = place.start, end = place.end, collapse = place.collapse;\n\n  var rect;\n  if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates.\n    for (var i$1 = 0; i$1 < 4; i$1++) { // Retry a maximum of 4 times when nonsense rectangles are returned\n      while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) { --start; }\n      while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) { ++end; }\n      if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart)\n        { rect = node.parentNode.getBoundingClientRect(); }\n      else\n        { rect = getUsefulRect(range(node, start, end).getClientRects(), bias); }\n      if (rect.left || rect.right || start == 0) { break }\n      end = start;\n      start = start - 1;\n      collapse = \"right\";\n    }\n    if (ie && ie_version < 11) { rect = maybeUpdateRectForZooming(cm.display.measure, rect); }\n  } else { // If it is a widget, simply get the box for the whole widget.\n    if (start > 0) { collapse = bias = \"right\"; }\n    var rects;\n    if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1)\n      { rect = rects[bias == \"right\" ? rects.length - 1 : 0]; }\n    else\n      { rect = node.getBoundingClientRect(); }\n  }\n  if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) {\n    var rSpan = node.parentNode.getClientRects()[0];\n    if (rSpan)\n      { rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom}; }\n    else\n      { rect = nullRect; }\n  }\n\n  var rtop = rect.top - prepared.rect.top, rbot = rect.bottom - prepared.rect.top;\n  var mid = (rtop + rbot) / 2;\n  var heights = prepared.view.measure.heights;\n  var i = 0;\n  for (; i < heights.length - 1; i++)\n    { if (mid < heights[i]) { break } }\n  var top = i ? heights[i - 1] : 0, bot = heights[i];\n  var result = {left: (collapse == \"right\" ? rect.right : rect.left) - prepared.rect.left,\n                right: (collapse == \"left\" ? rect.left : rect.right) - prepared.rect.left,\n                top: top, bottom: bot};\n  if (!rect.left && !rect.right) { result.bogus = true; }\n  if (!cm.options.singleCursorHeightPerLine) { result.rtop = rtop; result.rbottom = rbot; }\n\n  return result\n}\n\n// Work around problem with bounding client rects on ranges being\n// returned incorrectly when zoomed on IE10 and below.\nfunction maybeUpdateRectForZooming(measure, rect) {\n  if (!window.screen || screen.logicalXDPI == null ||\n      screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure))\n    { return rect }\n  var scaleX = screen.logicalXDPI / screen.deviceXDPI;\n  var scaleY = screen.logicalYDPI / screen.deviceYDPI;\n  return {left: rect.left * scaleX, right: rect.right * scaleX,\n          top: rect.top * scaleY, bottom: rect.bottom * scaleY}\n}\n\nfunction clearLineMeasurementCacheFor(lineView) {\n  if (lineView.measure) {\n    lineView.measure.cache = {};\n    lineView.measure.heights = null;\n    if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n      { lineView.measure.caches[i] = {}; } }\n  }\n}\n\nfunction clearLineMeasurementCache(cm) {\n  cm.display.externalMeasure = null;\n  removeChildren(cm.display.lineMeasure);\n  for (var i = 0; i < cm.display.view.length; i++)\n    { clearLineMeasurementCacheFor(cm.display.view[i]); }\n}\n\nfunction clearCaches(cm) {\n  clearLineMeasurementCache(cm);\n  cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null;\n  if (!cm.options.lineWrapping) { cm.display.maxLineChanged = true; }\n  cm.display.lineNumChars = null;\n}\n\nfunction pageScrollX() {\n  // Work around https://bugs.chromium.org/p/chromium/issues/detail?id=489206\n  // which causes page_Offset and bounding client rects to use\n  // different reference viewports and invalidate our calculations.\n  if (chrome && android) { return -(document.body.getBoundingClientRect().left - parseInt(getComputedStyle(document.body).marginLeft)) }\n  return window.pageXOffset || (document.documentElement || document.body).scrollLeft\n}\nfunction pageScrollY() {\n  if (chrome && android) { return -(document.body.getBoundingClientRect().top - parseInt(getComputedStyle(document.body).marginTop)) }\n  return window.pageYOffset || (document.documentElement || document.body).scrollTop\n}\n\n// Converts a {top, bottom, left, right} box from line-local\n// coordinates into another coordinate system. Context may be one of\n// \"line\", \"div\" (display.lineDiv), \"local\"./null (editor), \"window\",\n// or \"page\".\nfunction intoCoordSystem(cm, lineObj, rect, context, includeWidgets) {\n  if (!includeWidgets && lineObj.widgets) { for (var i = 0; i < lineObj.widgets.length; ++i) { if (lineObj.widgets[i].above) {\n    var size = widgetHeight(lineObj.widgets[i]);\n    rect.top += size; rect.bottom += size;\n  } } }\n  if (context == \"line\") { return rect }\n  if (!context) { context = \"local\"; }\n  var yOff = heightAtLine(lineObj);\n  if (context == \"local\") { yOff += paddingTop(cm.display); }\n  else { yOff -= cm.display.viewOffset; }\n  if (context == \"page\" || context == \"window\") {\n    var lOff = cm.display.lineSpace.getBoundingClientRect();\n    yOff += lOff.top + (context == \"window\" ? 0 : pageScrollY());\n    var xOff = lOff.left + (context == \"window\" ? 0 : pageScrollX());\n    rect.left += xOff; rect.right += xOff;\n  }\n  rect.top += yOff; rect.bottom += yOff;\n  return rect\n}\n\n// Coverts a box from \"div\" coords to another coordinate system.\n// Context may be \"window\", \"page\", \"div\", or \"local\"./null.\nfunction fromCoordSystem(cm, coords, context) {\n  if (context == \"div\") { return coords }\n  var left = coords.left, top = coords.top;\n  // First move into \"page\" coordinate system\n  if (context == \"page\") {\n    left -= pageScrollX();\n    top -= pageScrollY();\n  } else if (context == \"local\" || !context) {\n    var localBox = cm.display.sizer.getBoundingClientRect();\n    left += localBox.left;\n    top += localBox.top;\n  }\n\n  var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect();\n  return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top}\n}\n\nfunction charCoords(cm, pos, context, lineObj, bias) {\n  if (!lineObj) { lineObj = getLine(cm.doc, pos.line); }\n  return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context)\n}\n\n// Returns a box for a given cursor position, which may have an\n// 'other' property containing the position of the secondary cursor\n// on a bidi boundary.\n// A cursor Pos(line, char, \"before\") is on the same visual line as `char - 1`\n// and after `char - 1` in writing order of `char - 1`\n// A cursor Pos(line, char, \"after\") is on the same visual line as `char`\n// and before `char` in writing order of `char`\n// Examples (upper-case letters are RTL, lower-case are LTR):\n//     Pos(0, 1, ...)\n//     before   after\n// ab     a|b     a|b\n// aB     a|B     aB|\n// Ab     |Ab     A|b\n// AB     B|A     B|A\n// Every position after the last character on a line is considered to stick\n// to the last character on the line.\nfunction cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) {\n  lineObj = lineObj || getLine(cm.doc, pos.line);\n  if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n  function get(ch, right) {\n    var m = measureCharPrepared(cm, preparedMeasure, ch, right ? \"right\" : \"left\", varHeight);\n    if (right) { m.left = m.right; } else { m.right = m.left; }\n    return intoCoordSystem(cm, lineObj, m, context)\n  }\n  var order = getOrder(lineObj, cm.doc.direction), ch = pos.ch, sticky = pos.sticky;\n  if (ch >= lineObj.text.length) {\n    ch = lineObj.text.length;\n    sticky = \"before\";\n  } else if (ch <= 0) {\n    ch = 0;\n    sticky = \"after\";\n  }\n  if (!order) { return get(sticky == \"before\" ? ch - 1 : ch, sticky == \"before\") }\n\n  function getBidi(ch, partPos, invert) {\n    var part = order[partPos], right = (part.level % 2) != 0;\n    return get(invert ? ch - 1 : ch, right != invert)\n  }\n  var partPos = getBidiPartAt(order, ch, sticky);\n  var other = bidiOther;\n  var val = getBidi(ch, partPos, sticky == \"before\");\n  if (other != null) { val.other = getBidi(ch, other, sticky != \"before\"); }\n  return val\n}\n\n// Used to cheaply estimate the coordinates for a position. Used for\n// intermediate scroll updates.\nfunction estimateCoords(cm, pos) {\n  var left = 0;\n  pos = clipPos(cm.doc, pos);\n  if (!cm.options.lineWrapping) { left = charWidth(cm.display) * pos.ch; }\n  var lineObj = getLine(cm.doc, pos.line);\n  var top = heightAtLine(lineObj) + paddingTop(cm.display);\n  return {left: left, right: left, top: top, bottom: top + lineObj.height}\n}\n\n// Positions returned by coordsChar contain some extra information.\n// xRel is the relative x position of the input coordinates compared\n// to the found position (so xRel > 0 means the coordinates are to\n// the right of the character position, for example). When outside\n// is true, that means the coordinates lie outside the line's\n// vertical range.\nfunction PosWithInfo(line, ch, sticky, outside, xRel) {\n  var pos = Pos(line, ch, sticky);\n  pos.xRel = xRel;\n  if (outside) { pos.outside = true; }\n  return pos\n}\n\n// Compute the character position closest to the given coordinates.\n// Input must be lineSpace-local (\"div\" coordinate system).\nfunction coordsChar(cm, x, y) {\n  var doc = cm.doc;\n  y += cm.display.viewOffset;\n  if (y < 0) { return PosWithInfo(doc.first, 0, null, true, -1) }\n  var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1;\n  if (lineN > last)\n    { return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, true, 1) }\n  if (x < 0) { x = 0; }\n\n  var lineObj = getLine(doc, lineN);\n  for (;;) {\n    var found = coordsCharInner(cm, lineObj, lineN, x, y);\n    var merged = collapsedSpanAtEnd(lineObj);\n    var mergedPos = merged && merged.find(0, true);\n    if (merged && (found.ch > mergedPos.from.ch || found.ch == mergedPos.from.ch && found.xRel > 0))\n      { lineN = lineNo(lineObj = mergedPos.to.line); }\n    else\n      { return found }\n  }\n}\n\nfunction wrappedLineExtent(cm, lineObj, preparedMeasure, y) {\n  var measure = function (ch) { return intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, ch), \"line\"); };\n  var end = lineObj.text.length;\n  var begin = findFirst(function (ch) { return measure(ch - 1).bottom <= y; }, end, 0);\n  end = findFirst(function (ch) { return measure(ch).top > y; }, begin, end);\n  return {begin: begin, end: end}\n}\n\nfunction wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) {\n  var targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, target), \"line\").top;\n  return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop)\n}\n\nfunction coordsCharInner(cm, lineObj, lineNo$$1, x, y) {\n  y -= heightAtLine(lineObj);\n  var begin = 0, end = lineObj.text.length;\n  var preparedMeasure = prepareMeasureForLine(cm, lineObj);\n  var pos;\n  var order = getOrder(lineObj, cm.doc.direction);\n  if (order) {\n    if (cm.options.lineWrapping) {\n      var assign;\n      ((assign = wrappedLineExtent(cm, lineObj, preparedMeasure, y), begin = assign.begin, end = assign.end, assign));\n    }\n    pos = new Pos(lineNo$$1, begin);\n    var beginLeft = cursorCoords(cm, pos, \"line\", lineObj, preparedMeasure).left;\n    var dir = beginLeft < x ? 1 : -1;\n    var prevDiff, diff = beginLeft - x, prevPos;\n    do {\n      prevDiff = diff;\n      prevPos = pos;\n      pos = moveVisually(cm, lineObj, pos, dir);\n      if (pos == null || pos.ch < begin || end <= (pos.sticky == \"before\" ? pos.ch - 1 : pos.ch)) {\n        pos = prevPos;\n        break\n      }\n      diff = cursorCoords(cm, pos, \"line\", lineObj, preparedMeasure).left - x;\n    } while ((dir < 0) != (diff < 0) && (Math.abs(diff) <= Math.abs(prevDiff)))\n    if (Math.abs(diff) > Math.abs(prevDiff)) {\n      if ((diff < 0) == (prevDiff < 0)) { throw new Error(\"Broke out of infinite loop in coordsCharInner\") }\n      pos = prevPos;\n    }\n  } else {\n    var ch = findFirst(function (ch) {\n      var box = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, ch), \"line\");\n      if (box.top > y) {\n        // For the cursor stickiness\n        end = Math.min(ch, end);\n        return true\n      }\n      else if (box.bottom <= y) { return false }\n      else if (box.left > x) { return true }\n      else if (box.right < x) { return false }\n      else { return (x - box.left < box.right - x) }\n    }, begin, end);\n    ch = skipExtendingChars(lineObj.text, ch, 1);\n    pos = new Pos(lineNo$$1, ch, ch == end ? \"before\" : \"after\");\n  }\n  var coords = cursorCoords(cm, pos, \"line\", lineObj, preparedMeasure);\n  if (y < coords.top || coords.bottom < y) { pos.outside = true; }\n  pos.xRel = x < coords.left ? -1 : (x > coords.right ? 1 : 0);\n  return pos\n}\n\nvar measureText;\n// Compute the default text height.\nfunction textHeight(display) {\n  if (display.cachedTextHeight != null) { return display.cachedTextHeight }\n  if (measureText == null) {\n    measureText = elt(\"pre\");\n    // Measure a bunch of lines, for browsers that compute\n    // fractional heights.\n    for (var i = 0; i < 49; ++i) {\n      measureText.appendChild(document.createTextNode(\"x\"));\n      measureText.appendChild(elt(\"br\"));\n    }\n    measureText.appendChild(document.createTextNode(\"x\"));\n  }\n  removeChildrenAndAdd(display.measure, measureText);\n  var height = measureText.offsetHeight / 50;\n  if (height > 3) { display.cachedTextHeight = height; }\n  removeChildren(display.measure);\n  return height || 1\n}\n\n// Compute the default character width.\nfunction charWidth(display) {\n  if (display.cachedCharWidth != null) { return display.cachedCharWidth }\n  var anchor = elt(\"span\", \"xxxxxxxxxx\");\n  var pre = elt(\"pre\", [anchor]);\n  removeChildrenAndAdd(display.measure, pre);\n  var rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10;\n  if (width > 2) { display.cachedCharWidth = width; }\n  return width || 10\n}\n\n// Do a bulk-read of the DOM positions and sizes needed to draw the\n// view, so that we don't interleave reading and writing to the DOM.\nfunction getDimensions(cm) {\n  var d = cm.display, left = {}, width = {};\n  var gutterLeft = d.gutters.clientLeft;\n  for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) {\n    left[cm.options.gutters[i]] = n.offsetLeft + n.clientLeft + gutterLeft;\n    width[cm.options.gutters[i]] = n.clientWidth;\n  }\n  return {fixedPos: compensateForHScroll(d),\n          gutterTotalWidth: d.gutters.offsetWidth,\n          gutterLeft: left,\n          gutterWidth: width,\n          wrapperWidth: d.wrapper.clientWidth}\n}\n\n// Computes display.scroller.scrollLeft + display.gutters.offsetWidth,\n// but using getBoundingClientRect to get a sub-pixel-accurate\n// result.\nfunction compensateForHScroll(display) {\n  return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left\n}\n\n// Returns a function that estimates the height of a line, to use as\n// first approximation until the line becomes visible (and is thus\n// properly measurable).\nfunction estimateHeight(cm) {\n  var th = textHeight(cm.display), wrapping = cm.options.lineWrapping;\n  var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3);\n  return function (line) {\n    if (lineIsHidden(cm.doc, line)) { return 0 }\n\n    var widgetsHeight = 0;\n    if (line.widgets) { for (var i = 0; i < line.widgets.length; i++) {\n      if (line.widgets[i].height) { widgetsHeight += line.widgets[i].height; }\n    } }\n\n    if (wrapping)\n      { return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th }\n    else\n      { return widgetsHeight + th }\n  }\n}\n\nfunction estimateLineHeights(cm) {\n  var doc = cm.doc, est = estimateHeight(cm);\n  doc.iter(function (line) {\n    var estHeight = est(line);\n    if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n  });\n}\n\n// Given a mouse event, find the corresponding position. If liberal\n// is false, it checks whether a gutter or scrollbar was clicked,\n// and returns null if it was. forRect is used by rectangular\n// selections, and tries to estimate a character position even for\n// coordinates beyond the right of the text.\nfunction posFromMouse(cm, e, liberal, forRect) {\n  var display = cm.display;\n  if (!liberal && e_target(e).getAttribute(\"cm-not-content\") == \"true\") { return null }\n\n  var x, y, space = display.lineSpace.getBoundingClientRect();\n  // Fails unpredictably on IE[67] when mouse is dragged around quickly.\n  try { x = e.clientX - space.left; y = e.clientY - space.top; }\n  catch (e) { return null }\n  var coords = coordsChar(cm, x, y), line;\n  if (forRect && coords.xRel == 1 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) {\n    var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length;\n    coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff));\n  }\n  return coords\n}\n\n// Find the view element corresponding to a given line. Return null\n// when the line isn't visible.\nfunction findViewIndex(cm, n) {\n  if (n >= cm.display.viewTo) { return null }\n  n -= cm.display.viewFrom;\n  if (n < 0) { return null }\n  var view = cm.display.view;\n  for (var i = 0; i < view.length; i++) {\n    n -= view[i].size;\n    if (n < 0) { return i }\n  }\n}\n\nfunction updateSelection(cm) {\n  cm.display.input.showSelection(cm.display.input.prepareSelection());\n}\n\nfunction prepareSelection(cm, primary) {\n  var doc = cm.doc, result = {};\n  var curFragment = result.cursors = document.createDocumentFragment();\n  var selFragment = result.selection = document.createDocumentFragment();\n\n  for (var i = 0; i < doc.sel.ranges.length; i++) {\n    if (primary === false && i == doc.sel.primIndex) { continue }\n    var range$$1 = doc.sel.ranges[i];\n    if (range$$1.from().line >= cm.display.viewTo || range$$1.to().line < cm.display.viewFrom) { continue }\n    var collapsed = range$$1.empty();\n    if (collapsed || cm.options.showCursorWhenSelecting)\n      { drawSelectionCursor(cm, range$$1.head, curFragment); }\n    if (!collapsed)\n      { drawSelectionRange(cm, range$$1, selFragment); }\n  }\n  return result\n}\n\n// Draws a cursor for the given range\nfunction drawSelectionCursor(cm, head, output) {\n  var pos = cursorCoords(cm, head, \"div\", null, null, !cm.options.singleCursorHeightPerLine);\n\n  var cursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor\"));\n  cursor.style.left = pos.left + \"px\";\n  cursor.style.top = pos.top + \"px\";\n  cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + \"px\";\n\n  if (pos.other) {\n    // Secondary cursor, shown when on a 'jump' in bi-directional text\n    var otherCursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor CodeMirror-secondarycursor\"));\n    otherCursor.style.display = \"\";\n    otherCursor.style.left = pos.other.left + \"px\";\n    otherCursor.style.top = pos.other.top + \"px\";\n    otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + \"px\";\n  }\n}\n\n// Draws the given range as a highlighted selection\nfunction drawSelectionRange(cm, range$$1, output) {\n  var display = cm.display, doc = cm.doc;\n  var fragment = document.createDocumentFragment();\n  var padding = paddingH(cm.display), leftSide = padding.left;\n  var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right;\n\n  function add(left, top, width, bottom) {\n    if (top < 0) { top = 0; }\n    top = Math.round(top);\n    bottom = Math.round(bottom);\n    fragment.appendChild(elt(\"div\", null, \"CodeMirror-selected\", (\"position: absolute; left: \" + left + \"px;\\n                             top: \" + top + \"px; width: \" + (width == null ? rightSide - left : width) + \"px;\\n                             height: \" + (bottom - top) + \"px\")));\n  }\n\n  function drawForLine(line, fromArg, toArg) {\n    var lineObj = getLine(doc, line);\n    var lineLen = lineObj.text.length;\n    var start, end;\n    function coords(ch, bias) {\n      return charCoords(cm, Pos(line, ch), \"div\", lineObj, bias)\n    }\n\n    iterateBidiSections(getOrder(lineObj, doc.direction), fromArg || 0, toArg == null ? lineLen : toArg, function (from, to, dir) {\n      var leftPos = coords(from, \"left\"), rightPos, left, right;\n      if (from == to) {\n        rightPos = leftPos;\n        left = right = leftPos.left;\n      } else {\n        rightPos = coords(to - 1, \"right\");\n        if (dir == \"rtl\") { var tmp = leftPos; leftPos = rightPos; rightPos = tmp; }\n        left = leftPos.left;\n        right = rightPos.right;\n      }\n      if (fromArg == null && from == 0) { left = leftSide; }\n      if (rightPos.top - leftPos.top > 3) { // Different lines, draw top part\n        add(left, leftPos.top, null, leftPos.bottom);\n        left = leftSide;\n        if (leftPos.bottom < rightPos.top) { add(left, leftPos.bottom, null, rightPos.top); }\n      }\n      if (toArg == null && to == lineLen) { right = rightSide; }\n      if (!start || leftPos.top < start.top || leftPos.top == start.top && leftPos.left < start.left)\n        { start = leftPos; }\n      if (!end || rightPos.bottom > end.bottom || rightPos.bottom == end.bottom && rightPos.right > end.right)\n        { end = rightPos; }\n      if (left < leftSide + 1) { left = leftSide; }\n      add(left, rightPos.top, right - left, rightPos.bottom);\n    });\n    return {start: start, end: end}\n  }\n\n  var sFrom = range$$1.from(), sTo = range$$1.to();\n  if (sFrom.line == sTo.line) {\n    drawForLine(sFrom.line, sFrom.ch, sTo.ch);\n  } else {\n    var fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line);\n    var singleVLine = visualLine(fromLine) == visualLine(toLine);\n    var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end;\n    var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start;\n    if (singleVLine) {\n      if (leftEnd.top < rightStart.top - 2) {\n        add(leftEnd.right, leftEnd.top, null, leftEnd.bottom);\n        add(leftSide, rightStart.top, rightStart.left, rightStart.bottom);\n      } else {\n        add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom);\n      }\n    }\n    if (leftEnd.bottom < rightStart.top)\n      { add(leftSide, leftEnd.bottom, null, rightStart.top); }\n  }\n\n  output.appendChild(fragment);\n}\n\n// Cursor-blinking\nfunction restartBlink(cm) {\n  if (!cm.state.focused) { return }\n  var display = cm.display;\n  clearInterval(display.blinker);\n  var on = true;\n  display.cursorDiv.style.visibility = \"\";\n  if (cm.options.cursorBlinkRate > 0)\n    { display.blinker = setInterval(function () { return display.cursorDiv.style.visibility = (on = !on) ? \"\" : \"hidden\"; },\n      cm.options.cursorBlinkRate); }\n  else if (cm.options.cursorBlinkRate < 0)\n    { display.cursorDiv.style.visibility = \"hidden\"; }\n}\n\nfunction ensureFocus(cm) {\n  if (!cm.state.focused) { cm.display.input.focus(); onFocus(cm); }\n}\n\nfunction delayBlurEvent(cm) {\n  cm.state.delayingBlurEvent = true;\n  setTimeout(function () { if (cm.state.delayingBlurEvent) {\n    cm.state.delayingBlurEvent = false;\n    onBlur(cm);\n  } }, 100);\n}\n\nfunction onFocus(cm, e) {\n  if (cm.state.delayingBlurEvent) { cm.state.delayingBlurEvent = false; }\n\n  if (cm.options.readOnly == \"nocursor\") { return }\n  if (!cm.state.focused) {\n    signal(cm, \"focus\", cm, e);\n    cm.state.focused = true;\n    addClass(cm.display.wrapper, \"CodeMirror-focused\");\n    // This test prevents this from firing when a context\n    // menu is closed (since the input reset would kill the\n    // select-all detection hack)\n    if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) {\n      cm.display.input.reset();\n      if (webkit) { setTimeout(function () { return cm.display.input.reset(true); }, 20); } // Issue #1730\n    }\n    cm.display.input.receivedFocus();\n  }\n  restartBlink(cm);\n}\nfunction onBlur(cm, e) {\n  if (cm.state.delayingBlurEvent) { return }\n\n  if (cm.state.focused) {\n    signal(cm, \"blur\", cm, e);\n    cm.state.focused = false;\n    rmClass(cm.display.wrapper, \"CodeMirror-focused\");\n  }\n  clearInterval(cm.display.blinker);\n  setTimeout(function () { if (!cm.state.focused) { cm.display.shift = false; } }, 150);\n}\n\n// Re-align line numbers and gutter marks to compensate for\n// horizontal scrolling.\nfunction alignHorizontally(cm) {\n  var display = cm.display, view = display.view;\n  if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) { return }\n  var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft;\n  var gutterW = display.gutters.offsetWidth, left = comp + \"px\";\n  for (var i = 0; i < view.length; i++) { if (!view[i].hidden) {\n    if (cm.options.fixedGutter) {\n      if (view[i].gutter)\n        { view[i].gutter.style.left = left; }\n      if (view[i].gutterBackground)\n        { view[i].gutterBackground.style.left = left; }\n    }\n    var align = view[i].alignable;\n    if (align) { for (var j = 0; j < align.length; j++)\n      { align[j].style.left = left; } }\n  } }\n  if (cm.options.fixedGutter)\n    { display.gutters.style.left = (comp + gutterW) + \"px\"; }\n}\n\n// Used to ensure that the line number gutter is still the right\n// size for the current document size. Returns true when an update\n// is needed.\nfunction maybeUpdateLineNumberWidth(cm) {\n  if (!cm.options.lineNumbers) { return false }\n  var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display;\n  if (last.length != display.lineNumChars) {\n    var test = display.measure.appendChild(elt(\"div\", [elt(\"div\", last)],\n                                               \"CodeMirror-linenumber CodeMirror-gutter-elt\"));\n    var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW;\n    display.lineGutter.style.width = \"\";\n    display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1;\n    display.lineNumWidth = display.lineNumInnerWidth + padding;\n    display.lineNumChars = display.lineNumInnerWidth ? last.length : -1;\n    display.lineGutter.style.width = display.lineNumWidth + \"px\";\n    updateGutterSpace(cm);\n    return true\n  }\n  return false\n}\n\n// Read the actual heights of the rendered lines, and update their\n// stored heights to match.\nfunction updateHeightsInViewport(cm) {\n  var display = cm.display;\n  var prevBottom = display.lineDiv.offsetTop;\n  for (var i = 0; i < display.view.length; i++) {\n    var cur = display.view[i], height = (void 0);\n    if (cur.hidden) { continue }\n    if (ie && ie_version < 8) {\n      var bot = cur.node.offsetTop + cur.node.offsetHeight;\n      height = bot - prevBottom;\n      prevBottom = bot;\n    } else {\n      var box = cur.node.getBoundingClientRect();\n      height = box.bottom - box.top;\n    }\n    var diff = cur.line.height - height;\n    if (height < 2) { height = textHeight(display); }\n    if (diff > .001 || diff < -.001) {\n      updateLineHeight(cur.line, height);\n      updateWidgetHeight(cur.line);\n      if (cur.rest) { for (var j = 0; j < cur.rest.length; j++)\n        { updateWidgetHeight(cur.rest[j]); } }\n    }\n  }\n}\n\n// Read and store the height of line widgets associated with the\n// given line.\nfunction updateWidgetHeight(line) {\n  if (line.widgets) { for (var i = 0; i < line.widgets.length; ++i)\n    { line.widgets[i].height = line.widgets[i].node.parentNode.offsetHeight; } }\n}\n\n// Compute the lines that are visible in a given viewport (defaults\n// the the current scroll position). viewport may contain top,\n// height, and ensure (see op.scrollToPos) properties.\nfunction visibleLines(display, doc, viewport) {\n  var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop;\n  top = Math.floor(top - paddingTop(display));\n  var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight;\n\n  var from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom);\n  // Ensure is a {from: {line, ch}, to: {line, ch}} object, and\n  // forces those lines into the viewport (if possible).\n  if (viewport && viewport.ensure) {\n    var ensureFrom = viewport.ensure.from.line, ensureTo = viewport.ensure.to.line;\n    if (ensureFrom < from) {\n      from = ensureFrom;\n      to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight);\n    } else if (Math.min(ensureTo, doc.lastLine()) >= to) {\n      from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight);\n      to = ensureTo;\n    }\n  }\n  return {from: from, to: Math.max(to, from + 1)}\n}\n\n// Sync the scrollable area and scrollbars, ensure the viewport\n// covers the visible area.\nfunction setScrollTop(cm, val) {\n  if (Math.abs(cm.doc.scrollTop - val) < 2) { return }\n  cm.doc.scrollTop = val;\n  if (!gecko) { updateDisplaySimple(cm, {top: val}); }\n  if (cm.display.scroller.scrollTop != val) { cm.display.scroller.scrollTop = val; }\n  cm.display.scrollbars.setScrollTop(val);\n  if (gecko) { updateDisplaySimple(cm); }\n  startWorker(cm, 100);\n}\n// Sync scroller and scrollbar, ensure the gutter elements are\n// aligned.\nfunction setScrollLeft(cm, val, isScroller) {\n  if (isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) { return }\n  val = Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth);\n  cm.doc.scrollLeft = val;\n  alignHorizontally(cm);\n  if (cm.display.scroller.scrollLeft != val) { cm.display.scroller.scrollLeft = val; }\n  cm.display.scrollbars.setScrollLeft(val);\n}\n\n// Since the delta values reported on mouse wheel events are\n// unstandardized between browsers and even browser versions, and\n// generally horribly unpredictable, this code starts by measuring\n// the scroll effect that the first few mouse wheel events have,\n// and, from that, detects the way it can convert deltas to pixel\n// offsets afterwards.\n//\n// The reason we want to know the amount a wheel event will scroll\n// is that it gives us a chance to update the display before the\n// actual scrolling happens, reducing flickering.\n\nvar wheelSamples = 0;\nvar wheelPixelsPerUnit = null;\n// Fill in a browser-detected starting value on browsers where we\n// know one. These don't have to be accurate -- the result of them\n// being wrong would just be a slight flicker on the first wheel\n// scroll (if it is large enough).\nif (ie) { wheelPixelsPerUnit = -.53; }\nelse if (gecko) { wheelPixelsPerUnit = 15; }\nelse if (chrome) { wheelPixelsPerUnit = -.7; }\nelse if (safari) { wheelPixelsPerUnit = -1/3; }\n\nfunction wheelEventDelta(e) {\n  var dx = e.wheelDeltaX, dy = e.wheelDeltaY;\n  if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) { dx = e.detail; }\n  if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) { dy = e.detail; }\n  else if (dy == null) { dy = e.wheelDelta; }\n  return {x: dx, y: dy}\n}\nfunction wheelEventPixels(e) {\n  var delta = wheelEventDelta(e);\n  delta.x *= wheelPixelsPerUnit;\n  delta.y *= wheelPixelsPerUnit;\n  return delta\n}\n\nfunction onScrollWheel(cm, e) {\n  var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y;\n\n  var display = cm.display, scroll = display.scroller;\n  // Quit if there's nothing to scroll here\n  var canScrollX = scroll.scrollWidth > scroll.clientWidth;\n  var canScrollY = scroll.scrollHeight > scroll.clientHeight;\n  if (!(dx && canScrollX || dy && canScrollY)) { return }\n\n  // Webkit browsers on OS X abort momentum scrolls when the target\n  // of the scroll event is removed from the scrollable element.\n  // This hack (see related code in patchDisplay) makes sure the\n  // element is kept around.\n  if (dy && mac && webkit) {\n    outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) {\n      for (var i = 0; i < view.length; i++) {\n        if (view[i].node == cur) {\n          cm.display.currentWheelTarget = cur;\n          break outer\n        }\n      }\n    }\n  }\n\n  // On some browsers, horizontal scrolling will cause redraws to\n  // happen before the gutter has been realigned, causing it to\n  // wriggle around in a most unseemly way. When we have an\n  // estimated pixels/delta value, we just handle horizontal\n  // scrolling entirely here. It'll be slightly off from native, but\n  // better than glitching out.\n  if (dx && !gecko && !presto && wheelPixelsPerUnit != null) {\n    if (dy && canScrollY)\n      { setScrollTop(cm, Math.max(0, Math.min(scroll.scrollTop + dy * wheelPixelsPerUnit, scroll.scrollHeight - scroll.clientHeight))); }\n    setScrollLeft(cm, Math.max(0, Math.min(scroll.scrollLeft + dx * wheelPixelsPerUnit, scroll.scrollWidth - scroll.clientWidth)));\n    // Only prevent default scrolling if vertical scrolling is\n    // actually possible. Otherwise, it causes vertical scroll\n    // jitter on OSX trackpads when deltaX is small and deltaY\n    // is large (issue #3579)\n    if (!dy || (dy && canScrollY))\n      { e_preventDefault(e); }\n    display.wheelStartX = null; // Abort measurement, if in progress\n    return\n  }\n\n  // 'Project' the visible viewport to cover the area that is being\n  // scrolled into view (if we know enough to estimate it).\n  if (dy && wheelPixelsPerUnit != null) {\n    var pixels = dy * wheelPixelsPerUnit;\n    var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight;\n    if (pixels < 0) { top = Math.max(0, top + pixels - 50); }\n    else { bot = Math.min(cm.doc.height, bot + pixels + 50); }\n    updateDisplaySimple(cm, {top: top, bottom: bot});\n  }\n\n  if (wheelSamples < 20) {\n    if (display.wheelStartX == null) {\n      display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop;\n      display.wheelDX = dx; display.wheelDY = dy;\n      setTimeout(function () {\n        if (display.wheelStartX == null) { return }\n        var movedX = scroll.scrollLeft - display.wheelStartX;\n        var movedY = scroll.scrollTop - display.wheelStartY;\n        var sample = (movedY && display.wheelDY && movedY / display.wheelDY) ||\n          (movedX && display.wheelDX && movedX / display.wheelDX);\n        display.wheelStartX = display.wheelStartY = null;\n        if (!sample) { return }\n        wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1);\n        ++wheelSamples;\n      }, 200);\n    } else {\n      display.wheelDX += dx; display.wheelDY += dy;\n    }\n  }\n}\n\n// SCROLLBARS\n\n// Prepare DOM reads needed to update the scrollbars. Done in one\n// shot to minimize update/measure roundtrips.\nfunction measureForScrollbars(cm) {\n  var d = cm.display, gutterW = d.gutters.offsetWidth;\n  var docH = Math.round(cm.doc.height + paddingVert(cm.display));\n  return {\n    clientHeight: d.scroller.clientHeight,\n    viewHeight: d.wrapper.clientHeight,\n    scrollWidth: d.scroller.scrollWidth, clientWidth: d.scroller.clientWidth,\n    viewWidth: d.wrapper.clientWidth,\n    barLeft: cm.options.fixedGutter ? gutterW : 0,\n    docHeight: docH,\n    scrollHeight: docH + scrollGap(cm) + d.barHeight,\n    nativeBarWidth: d.nativeBarWidth,\n    gutterWidth: gutterW\n  }\n}\n\nvar NativeScrollbars = function(place, scroll, cm) {\n  this.cm = cm;\n  var vert = this.vert = elt(\"div\", [elt(\"div\", null, null, \"min-width: 1px\")], \"CodeMirror-vscrollbar\");\n  var horiz = this.horiz = elt(\"div\", [elt(\"div\", null, null, \"height: 100%; min-height: 1px\")], \"CodeMirror-hscrollbar\");\n  place(vert); place(horiz);\n\n  on(vert, \"scroll\", function () {\n    if (vert.clientHeight) { scroll(vert.scrollTop, \"vertical\"); }\n  });\n  on(horiz, \"scroll\", function () {\n    if (horiz.clientWidth) { scroll(horiz.scrollLeft, \"horizontal\"); }\n  });\n\n  this.checkedZeroWidth = false;\n  // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8).\n  if (ie && ie_version < 8) { this.horiz.style.minHeight = this.vert.style.minWidth = \"18px\"; }\n};\n\nNativeScrollbars.prototype.update = function (measure) {\n  var needsH = measure.scrollWidth > measure.clientWidth + 1;\n  var needsV = measure.scrollHeight > measure.clientHeight + 1;\n  var sWidth = measure.nativeBarWidth;\n\n  if (needsV) {\n    this.vert.style.display = \"block\";\n    this.vert.style.bottom = needsH ? sWidth + \"px\" : \"0\";\n    var totalHeight = measure.viewHeight - (needsH ? sWidth : 0);\n    // A bug in IE8 can cause this value to be negative, so guard it.\n    this.vert.firstChild.style.height =\n      Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + \"px\";\n  } else {\n    this.vert.style.display = \"\";\n    this.vert.firstChild.style.height = \"0\";\n  }\n\n  if (needsH) {\n    this.horiz.style.display = \"block\";\n    this.horiz.style.right = needsV ? sWidth + \"px\" : \"0\";\n    this.horiz.style.left = measure.barLeft + \"px\";\n    var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0);\n    this.horiz.firstChild.style.width =\n      Math.max(0, measure.scrollWidth - measure.clientWidth + totalWidth) + \"px\";\n  } else {\n    this.horiz.style.display = \"\";\n    this.horiz.firstChild.style.width = \"0\";\n  }\n\n  if (!this.checkedZeroWidth && measure.clientHeight > 0) {\n    if (sWidth == 0) { this.zeroWidthHack(); }\n    this.checkedZeroWidth = true;\n  }\n\n  return {right: needsV ? sWidth : 0, bottom: needsH ? sWidth : 0}\n};\n\nNativeScrollbars.prototype.setScrollLeft = function (pos) {\n  if (this.horiz.scrollLeft != pos) { this.horiz.scrollLeft = pos; }\n  if (this.disableHoriz) { this.enableZeroWidthBar(this.horiz, this.disableHoriz, \"horiz\"); }\n};\n\nNativeScrollbars.prototype.setScrollTop = function (pos) {\n  if (this.vert.scrollTop != pos) { this.vert.scrollTop = pos; }\n  if (this.disableVert) { this.enableZeroWidthBar(this.vert, this.disableVert, \"vert\"); }\n};\n\nNativeScrollbars.prototype.zeroWidthHack = function () {\n  var w = mac && !mac_geMountainLion ? \"12px\" : \"18px\";\n  this.horiz.style.height = this.vert.style.width = w;\n  this.horiz.style.pointerEvents = this.vert.style.pointerEvents = \"none\";\n  this.disableHoriz = new Delayed;\n  this.disableVert = new Delayed;\n};\n\nNativeScrollbars.prototype.enableZeroWidthBar = function (bar, delay, type) {\n  bar.style.pointerEvents = \"auto\";\n  function maybeDisable() {\n    // To find out whether the scrollbar is still visible, we\n    // check whether the element under the pixel in the bottom\n    // right corner of the scrollbar box is the scrollbar box\n    // itself (when the bar is still visible) or its filler child\n    // (when the bar is hidden). If it is still visible, we keep\n    // it enabled, if it's hidden, we disable pointer events.\n    var box = bar.getBoundingClientRect();\n    var elt$$1 = type == \"vert\" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2)\n        : document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1);\n    if (elt$$1 != bar) { bar.style.pointerEvents = \"none\"; }\n    else { delay.set(1000, maybeDisable); }\n  }\n  delay.set(1000, maybeDisable);\n};\n\nNativeScrollbars.prototype.clear = function () {\n  var parent = this.horiz.parentNode;\n  parent.removeChild(this.horiz);\n  parent.removeChild(this.vert);\n};\n\nvar NullScrollbars = function () {};\n\nNullScrollbars.prototype.update = function () { return {bottom: 0, right: 0} };\nNullScrollbars.prototype.setScrollLeft = function () {};\nNullScrollbars.prototype.setScrollTop = function () {};\nNullScrollbars.prototype.clear = function () {};\n\nfunction updateScrollbars(cm, measure) {\n  if (!measure) { measure = measureForScrollbars(cm); }\n  var startWidth = cm.display.barWidth, startHeight = cm.display.barHeight;\n  updateScrollbarsInner(cm, measure);\n  for (var i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) {\n    if (startWidth != cm.display.barWidth && cm.options.lineWrapping)\n      { updateHeightsInViewport(cm); }\n    updateScrollbarsInner(cm, measureForScrollbars(cm));\n    startWidth = cm.display.barWidth; startHeight = cm.display.barHeight;\n  }\n}\n\n// Re-synchronize the fake scrollbars with the actual size of the\n// content.\nfunction updateScrollbarsInner(cm, measure) {\n  var d = cm.display;\n  var sizes = d.scrollbars.update(measure);\n\n  d.sizer.style.paddingRight = (d.barWidth = sizes.right) + \"px\";\n  d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + \"px\";\n  d.heightForcer.style.borderBottom = sizes.bottom + \"px solid transparent\";\n\n  if (sizes.right && sizes.bottom) {\n    d.scrollbarFiller.style.display = \"block\";\n    d.scrollbarFiller.style.height = sizes.bottom + \"px\";\n    d.scrollbarFiller.style.width = sizes.right + \"px\";\n  } else { d.scrollbarFiller.style.display = \"\"; }\n  if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) {\n    d.gutterFiller.style.display = \"block\";\n    d.gutterFiller.style.height = sizes.bottom + \"px\";\n    d.gutterFiller.style.width = measure.gutterWidth + \"px\";\n  } else { d.gutterFiller.style.display = \"\"; }\n}\n\nvar scrollbarModel = {\"native\": NativeScrollbars, \"null\": NullScrollbars};\n\nfunction initScrollbars(cm) {\n  if (cm.display.scrollbars) {\n    cm.display.scrollbars.clear();\n    if (cm.display.scrollbars.addClass)\n      { rmClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n  }\n\n  cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](function (node) {\n    cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller);\n    // Prevent clicks in the scrollbars from killing focus\n    on(node, \"mousedown\", function () {\n      if (cm.state.focused) { setTimeout(function () { return cm.display.input.focus(); }, 0); }\n    });\n    node.setAttribute(\"cm-not-content\", \"true\");\n  }, function (pos, axis) {\n    if (axis == \"horizontal\") { setScrollLeft(cm, pos); }\n    else { setScrollTop(cm, pos); }\n  }, cm);\n  if (cm.display.scrollbars.addClass)\n    { addClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n}\n\n// SCROLLING THINGS INTO VIEW\n\n// If an editor sits on the top or bottom of the window, partially\n// scrolled out of view, this ensures that the cursor is visible.\nfunction maybeScrollWindow(cm, rect) {\n  if (signalDOMEvent(cm, \"scrollCursorIntoView\")) { return }\n\n  var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null;\n  if (rect.top + box.top < 0) { doScroll = true; }\n  else if (rect.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) { doScroll = false; }\n  if (doScroll != null && !phantom) {\n    var scrollNode = elt(\"div\", \"\\u200b\", null, (\"position: absolute;\\n                         top: \" + (rect.top - display.viewOffset - paddingTop(cm.display)) + \"px;\\n                         height: \" + (rect.bottom - rect.top + scrollGap(cm) + display.barHeight) + \"px;\\n                         left: \" + (rect.left) + \"px; width: \" + (Math.max(2, rect.right - rect.left)) + \"px;\"));\n    cm.display.lineSpace.appendChild(scrollNode);\n    scrollNode.scrollIntoView(doScroll);\n    cm.display.lineSpace.removeChild(scrollNode);\n  }\n}\n\n// Scroll a given position into view (immediately), verifying that\n// it actually became visible (as line heights are accurately\n// measured, the position of something may 'drift' during drawing).\nfunction scrollPosIntoView(cm, pos, end, margin) {\n  if (margin == null) { margin = 0; }\n  var rect;\n  for (var limit = 0; limit < 5; limit++) {\n    var changed = false;\n    var coords = cursorCoords(cm, pos);\n    var endCoords = !end || end == pos ? coords : cursorCoords(cm, end);\n    rect = {left: Math.min(coords.left, endCoords.left),\n            top: Math.min(coords.top, endCoords.top) - margin,\n            right: Math.max(coords.left, endCoords.left),\n            bottom: Math.max(coords.bottom, endCoords.bottom) + margin};\n    var scrollPos = calculateScrollPos(cm, rect);\n    var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft;\n    if (scrollPos.scrollTop != null) {\n      setScrollTop(cm, scrollPos.scrollTop);\n      if (Math.abs(cm.doc.scrollTop - startTop) > 1) { changed = true; }\n    }\n    if (scrollPos.scrollLeft != null) {\n      setScrollLeft(cm, scrollPos.scrollLeft);\n      if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) { changed = true; }\n    }\n    if (!changed) { break }\n  }\n  return rect\n}\n\n// Scroll a given set of coordinates into view (immediately).\nfunction scrollIntoView(cm, rect) {\n  var scrollPos = calculateScrollPos(cm, rect);\n  if (scrollPos.scrollTop != null) { setScrollTop(cm, scrollPos.scrollTop); }\n  if (scrollPos.scrollLeft != null) { setScrollLeft(cm, scrollPos.scrollLeft); }\n}\n\n// Calculate a new scroll position needed to scroll the given\n// rectangle into view. Returns an object with scrollTop and\n// scrollLeft properties. When these are undefined, the\n// vertical/horizontal position does not need to be adjusted.\nfunction calculateScrollPos(cm, rect) {\n  var display = cm.display, snapMargin = textHeight(cm.display);\n  if (rect.top < 0) { rect.top = 0; }\n  var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop;\n  var screen = displayHeight(cm), result = {};\n  if (rect.bottom - rect.top > screen) { rect.bottom = rect.top + screen; }\n  var docBottom = cm.doc.height + paddingVert(display);\n  var atTop = rect.top < snapMargin, atBottom = rect.bottom > docBottom - snapMargin;\n  if (rect.top < screentop) {\n    result.scrollTop = atTop ? 0 : rect.top;\n  } else if (rect.bottom > screentop + screen) {\n    var newTop = Math.min(rect.top, (atBottom ? docBottom : rect.bottom) - screen);\n    if (newTop != screentop) { result.scrollTop = newTop; }\n  }\n\n  var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft;\n  var screenw = displayWidth(cm) - (cm.options.fixedGutter ? display.gutters.offsetWidth : 0);\n  var tooWide = rect.right - rect.left > screenw;\n  if (tooWide) { rect.right = rect.left + screenw; }\n  if (rect.left < 10)\n    { result.scrollLeft = 0; }\n  else if (rect.left < screenleft)\n    { result.scrollLeft = Math.max(0, rect.left - (tooWide ? 0 : 10)); }\n  else if (rect.right > screenw + screenleft - 3)\n    { result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw; }\n  return result\n}\n\n// Store a relative adjustment to the scroll position in the current\n// operation (to be applied when the operation finishes).\nfunction addToScrollPos(cm, left, top) {\n  if (left != null || top != null) { resolveScrollToPos(cm); }\n  if (left != null)\n    { cm.curOp.scrollLeft = (cm.curOp.scrollLeft == null ? cm.doc.scrollLeft : cm.curOp.scrollLeft) + left; }\n  if (top != null)\n    { cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top; }\n}\n\n// Make sure that at the end of the operation the current cursor is\n// shown.\nfunction ensureCursorVisible(cm) {\n  resolveScrollToPos(cm);\n  var cur = cm.getCursor(), from = cur, to = cur;\n  if (!cm.options.lineWrapping) {\n    from = cur.ch ? Pos(cur.line, cur.ch - 1) : cur;\n    to = Pos(cur.line, cur.ch + 1);\n  }\n  cm.curOp.scrollToPos = {from: from, to: to, margin: cm.options.cursorScrollMargin};\n}\n\n// When an operation has its scrollToPos property set, and another\n// scroll action is applied before the end of the operation, this\n// 'simulates' scrolling that position into view in a cheap way, so\n// that the effect of intermediate scroll commands is not ignored.\nfunction resolveScrollToPos(cm) {\n  var range$$1 = cm.curOp.scrollToPos;\n  if (range$$1) {\n    cm.curOp.scrollToPos = null;\n    var from = estimateCoords(cm, range$$1.from), to = estimateCoords(cm, range$$1.to);\n    var sPos = calculateScrollPos(cm, {\n      left: Math.min(from.left, to.left),\n      top: Math.min(from.top, to.top) - range$$1.margin,\n      right: Math.max(from.right, to.right),\n      bottom: Math.max(from.bottom, to.bottom) + range$$1.margin\n    });\n    cm.scrollTo(sPos.scrollLeft, sPos.scrollTop);\n  }\n}\n\n// Operations are used to wrap a series of changes to the editor\n// state in such a way that each change won't have to update the\n// cursor and display (which would be awkward, slow, and\n// error-prone). Instead, display updates are batched and then all\n// combined and executed at once.\n\nvar nextOpId = 0;\n// Start a new operation.\nfunction startOperation(cm) {\n  cm.curOp = {\n    cm: cm,\n    viewChanged: false,      // Flag that indicates that lines might need to be redrawn\n    startHeight: cm.doc.height, // Used to detect need to update scrollbar\n    forceUpdate: false,      // Used to force a redraw\n    updateInput: null,       // Whether to reset the input textarea\n    typing: false,           // Whether this reset should be careful to leave existing text (for compositing)\n    changeObjs: null,        // Accumulated changes, for firing change events\n    cursorActivityHandlers: null, // Set of handlers to fire cursorActivity on\n    cursorActivityCalled: 0, // Tracks which cursorActivity handlers have been called already\n    selectionChanged: false, // Whether the selection needs to be redrawn\n    updateMaxLine: false,    // Set when the widest line needs to be determined anew\n    scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet\n    scrollToPos: null,       // Used to scroll to a specific position\n    focus: false,\n    id: ++nextOpId           // Unique ID\n  };\n  pushOperation(cm.curOp);\n}\n\n// Finish an operation, updating the display and signalling delayed events\nfunction endOperation(cm) {\n  var op = cm.curOp;\n  finishOperation(op, function (group) {\n    for (var i = 0; i < group.ops.length; i++)\n      { group.ops[i].cm.curOp = null; }\n    endOperations(group);\n  });\n}\n\n// The DOM updates done when an operation finishes are batched so\n// that the minimum number of relayouts are required.\nfunction endOperations(group) {\n  var ops = group.ops;\n  for (var i = 0; i < ops.length; i++) // Read DOM\n    { endOperation_R1(ops[i]); }\n  for (var i$1 = 0; i$1 < ops.length; i$1++) // Write DOM (maybe)\n    { endOperation_W1(ops[i$1]); }\n  for (var i$2 = 0; i$2 < ops.length; i$2++) // Read DOM\n    { endOperation_R2(ops[i$2]); }\n  for (var i$3 = 0; i$3 < ops.length; i$3++) // Write DOM (maybe)\n    { endOperation_W2(ops[i$3]); }\n  for (var i$4 = 0; i$4 < ops.length; i$4++) // Read DOM\n    { endOperation_finish(ops[i$4]); }\n}\n\nfunction endOperation_R1(op) {\n  var cm = op.cm, display = cm.display;\n  maybeClipScrollbars(cm);\n  if (op.updateMaxLine) { findMaxLine(cm); }\n\n  op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null ||\n    op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom ||\n                       op.scrollToPos.to.line >= display.viewTo) ||\n    display.maxLineChanged && cm.options.lineWrapping;\n  op.update = op.mustUpdate &&\n    new DisplayUpdate(cm, op.mustUpdate && {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate);\n}\n\nfunction endOperation_W1(op) {\n  op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update);\n}\n\nfunction endOperation_R2(op) {\n  var cm = op.cm, display = cm.display;\n  if (op.updatedDisplay) { updateHeightsInViewport(cm); }\n\n  op.barMeasure = measureForScrollbars(cm);\n\n  // If the max line changed since it was last measured, measure it,\n  // and ensure the document's width matches it.\n  // updateDisplay_W2 will use these properties to do the actual resizing\n  if (display.maxLineChanged && !cm.options.lineWrapping) {\n    op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3;\n    cm.display.sizerWidth = op.adjustWidthTo;\n    op.barMeasure.scrollWidth =\n      Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth);\n    op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm));\n  }\n\n  if (op.updatedDisplay || op.selectionChanged)\n    { op.preparedSelection = display.input.prepareSelection(op.focus); }\n}\n\nfunction endOperation_W2(op) {\n  var cm = op.cm;\n\n  if (op.adjustWidthTo != null) {\n    cm.display.sizer.style.minWidth = op.adjustWidthTo + \"px\";\n    if (op.maxScrollLeft < cm.doc.scrollLeft)\n      { setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true); }\n    cm.display.maxLineChanged = false;\n  }\n\n  var takeFocus = op.focus && op.focus == activeElt() && (!document.hasFocus || document.hasFocus());\n  if (op.preparedSelection)\n    { cm.display.input.showSelection(op.preparedSelection, takeFocus); }\n  if (op.updatedDisplay || op.startHeight != cm.doc.height)\n    { updateScrollbars(cm, op.barMeasure); }\n  if (op.updatedDisplay)\n    { setDocumentHeight(cm, op.barMeasure); }\n\n  if (op.selectionChanged) { restartBlink(cm); }\n\n  if (cm.state.focused && op.updateInput)\n    { cm.display.input.reset(op.typing); }\n  if (takeFocus) { ensureFocus(op.cm); }\n}\n\nfunction endOperation_finish(op) {\n  var cm = op.cm, display = cm.display, doc = cm.doc;\n\n  if (op.updatedDisplay) { postUpdateDisplay(cm, op.update); }\n\n  // Abort mouse wheel delta measurement, when scrolling explicitly\n  if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos))\n    { display.wheelStartX = display.wheelStartY = null; }\n\n  // Propagate the scroll position to the actual DOM scroller\n  if (op.scrollTop != null && (display.scroller.scrollTop != op.scrollTop || op.forceScroll)) {\n    doc.scrollTop = Math.max(0, Math.min(display.scroller.scrollHeight - display.scroller.clientHeight, op.scrollTop));\n    display.scrollbars.setScrollTop(doc.scrollTop);\n    display.scroller.scrollTop = doc.scrollTop;\n  }\n  if (op.scrollLeft != null && (display.scroller.scrollLeft != op.scrollLeft || op.forceScroll)) {\n    doc.scrollLeft = Math.max(0, Math.min(display.scroller.scrollWidth - display.scroller.clientWidth, op.scrollLeft));\n    display.scrollbars.setScrollLeft(doc.scrollLeft);\n    display.scroller.scrollLeft = doc.scrollLeft;\n    alignHorizontally(cm);\n  }\n  // If we need to scroll a specific position into view, do so.\n  if (op.scrollToPos) {\n    var rect = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from),\n                                 clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin);\n    maybeScrollWindow(cm, rect);\n  }\n\n  // Fire events for markers that are hidden/unidden by editing or\n  // undoing\n  var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers;\n  if (hidden) { for (var i = 0; i < hidden.length; ++i)\n    { if (!hidden[i].lines.length) { signal(hidden[i], \"hide\"); } } }\n  if (unhidden) { for (var i$1 = 0; i$1 < unhidden.length; ++i$1)\n    { if (unhidden[i$1].lines.length) { signal(unhidden[i$1], \"unhide\"); } } }\n\n  if (display.wrapper.offsetHeight)\n    { doc.scrollTop = cm.display.scroller.scrollTop; }\n\n  // Fire change events, and delayed event handlers\n  if (op.changeObjs)\n    { signal(cm, \"changes\", cm, op.changeObjs); }\n  if (op.update)\n    { op.update.finish(); }\n}\n\n// Run the given function in an operation\nfunction runInOp(cm, f) {\n  if (cm.curOp) { return f() }\n  startOperation(cm);\n  try { return f() }\n  finally { endOperation(cm); }\n}\n// Wraps a function in an operation. Returns the wrapped function.\nfunction operation(cm, f) {\n  return function() {\n    if (cm.curOp) { return f.apply(cm, arguments) }\n    startOperation(cm);\n    try { return f.apply(cm, arguments) }\n    finally { endOperation(cm); }\n  }\n}\n// Used to add methods to editor and doc instances, wrapping them in\n// operations.\nfunction methodOp(f) {\n  return function() {\n    if (this.curOp) { return f.apply(this, arguments) }\n    startOperation(this);\n    try { return f.apply(this, arguments) }\n    finally { endOperation(this); }\n  }\n}\nfunction docMethodOp(f) {\n  return function() {\n    var cm = this.cm;\n    if (!cm || cm.curOp) { return f.apply(this, arguments) }\n    startOperation(cm);\n    try { return f.apply(this, arguments) }\n    finally { endOperation(cm); }\n  }\n}\n\n// Updates the display.view data structure for a given change to the\n// document. From and to are in pre-change coordinates. Lendiff is\n// the amount of lines added or subtracted by the change. This is\n// used for changes that span multiple lines, or change the way\n// lines are divided into visual lines. regLineChange (below)\n// registers single-line changes.\nfunction regChange(cm, from, to, lendiff) {\n  if (from == null) { from = cm.doc.first; }\n  if (to == null) { to = cm.doc.first + cm.doc.size; }\n  if (!lendiff) { lendiff = 0; }\n\n  var display = cm.display;\n  if (lendiff && to < display.viewTo &&\n      (display.updateLineNumbers == null || display.updateLineNumbers > from))\n    { display.updateLineNumbers = from; }\n\n  cm.curOp.viewChanged = true;\n\n  if (from >= display.viewTo) { // Change after\n    if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo)\n      { resetView(cm); }\n  } else if (to <= display.viewFrom) { // Change before\n    if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) {\n      resetView(cm);\n    } else {\n      display.viewFrom += lendiff;\n      display.viewTo += lendiff;\n    }\n  } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap\n    resetView(cm);\n  } else if (from <= display.viewFrom) { // Top overlap\n    var cut = viewCuttingPoint(cm, to, to + lendiff, 1);\n    if (cut) {\n      display.view = display.view.slice(cut.index);\n      display.viewFrom = cut.lineN;\n      display.viewTo += lendiff;\n    } else {\n      resetView(cm);\n    }\n  } else if (to >= display.viewTo) { // Bottom overlap\n    var cut$1 = viewCuttingPoint(cm, from, from, -1);\n    if (cut$1) {\n      display.view = display.view.slice(0, cut$1.index);\n      display.viewTo = cut$1.lineN;\n    } else {\n      resetView(cm);\n    }\n  } else { // Gap in the middle\n    var cutTop = viewCuttingPoint(cm, from, from, -1);\n    var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1);\n    if (cutTop && cutBot) {\n      display.view = display.view.slice(0, cutTop.index)\n        .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN))\n        .concat(display.view.slice(cutBot.index));\n      display.viewTo += lendiff;\n    } else {\n      resetView(cm);\n    }\n  }\n\n  var ext = display.externalMeasured;\n  if (ext) {\n    if (to < ext.lineN)\n      { ext.lineN += lendiff; }\n    else if (from < ext.lineN + ext.size)\n      { display.externalMeasured = null; }\n  }\n}\n\n// Register a change to a single line. Type must be one of \"text\",\n// \"gutter\", \"class\", \"widget\"\nfunction regLineChange(cm, line, type) {\n  cm.curOp.viewChanged = true;\n  var display = cm.display, ext = cm.display.externalMeasured;\n  if (ext && line >= ext.lineN && line < ext.lineN + ext.size)\n    { display.externalMeasured = null; }\n\n  if (line < display.viewFrom || line >= display.viewTo) { return }\n  var lineView = display.view[findViewIndex(cm, line)];\n  if (lineView.node == null) { return }\n  var arr = lineView.changes || (lineView.changes = []);\n  if (indexOf(arr, type) == -1) { arr.push(type); }\n}\n\n// Clear the view.\nfunction resetView(cm) {\n  cm.display.viewFrom = cm.display.viewTo = cm.doc.first;\n  cm.display.view = [];\n  cm.display.viewOffset = 0;\n}\n\nfunction viewCuttingPoint(cm, oldN, newN, dir) {\n  var index = findViewIndex(cm, oldN), diff, view = cm.display.view;\n  if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size)\n    { return {index: index, lineN: newN} }\n  var n = cm.display.viewFrom;\n  for (var i = 0; i < index; i++)\n    { n += view[i].size; }\n  if (n != oldN) {\n    if (dir > 0) {\n      if (index == view.length - 1) { return null }\n      diff = (n + view[index].size) - oldN;\n      index++;\n    } else {\n      diff = n - oldN;\n    }\n    oldN += diff; newN += diff;\n  }\n  while (visualLineNo(cm.doc, newN) != newN) {\n    if (index == (dir < 0 ? 0 : view.length - 1)) { return null }\n    newN += dir * view[index - (dir < 0 ? 1 : 0)].size;\n    index += dir;\n  }\n  return {index: index, lineN: newN}\n}\n\n// Force the view to cover a given range, adding empty view element\n// or clipping off existing ones as needed.\nfunction adjustView(cm, from, to) {\n  var display = cm.display, view = display.view;\n  if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) {\n    display.view = buildViewArray(cm, from, to);\n    display.viewFrom = from;\n  } else {\n    if (display.viewFrom > from)\n      { display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view); }\n    else if (display.viewFrom < from)\n      { display.view = display.view.slice(findViewIndex(cm, from)); }\n    display.viewFrom = from;\n    if (display.viewTo < to)\n      { display.view = display.view.concat(buildViewArray(cm, display.viewTo, to)); }\n    else if (display.viewTo > to)\n      { display.view = display.view.slice(0, findViewIndex(cm, to)); }\n  }\n  display.viewTo = to;\n}\n\n// Count the number of lines in the view whose DOM representation is\n// out of date (or nonexistent).\nfunction countDirtyView(cm) {\n  var view = cm.display.view, dirty = 0;\n  for (var i = 0; i < view.length; i++) {\n    var lineView = view[i];\n    if (!lineView.hidden && (!lineView.node || lineView.changes)) { ++dirty; }\n  }\n  return dirty\n}\n\n// HIGHLIGHT WORKER\n\nfunction startWorker(cm, time) {\n  if (cm.doc.mode.startState && cm.doc.frontier < cm.display.viewTo)\n    { cm.state.highlight.set(time, bind(highlightWorker, cm)); }\n}\n\nfunction highlightWorker(cm) {\n  var doc = cm.doc;\n  if (doc.frontier < doc.first) { doc.frontier = doc.first; }\n  if (doc.frontier >= cm.display.viewTo) { return }\n  var end = +new Date + cm.options.workTime;\n  var state = copyState(doc.mode, getStateBefore(cm, doc.frontier));\n  var changedLines = [];\n\n  doc.iter(doc.frontier, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function (line) {\n    if (doc.frontier >= cm.display.viewFrom) { // Visible\n      var oldStyles = line.styles, tooLong = line.text.length > cm.options.maxHighlightLength;\n      var highlighted = highlightLine(cm, line, tooLong ? copyState(doc.mode, state) : state, true);\n      line.styles = highlighted.styles;\n      var oldCls = line.styleClasses, newCls = highlighted.classes;\n      if (newCls) { line.styleClasses = newCls; }\n      else if (oldCls) { line.styleClasses = null; }\n      var ischange = !oldStyles || oldStyles.length != line.styles.length ||\n        oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass);\n      for (var i = 0; !ischange && i < oldStyles.length; ++i) { ischange = oldStyles[i] != line.styles[i]; }\n      if (ischange) { changedLines.push(doc.frontier); }\n      line.stateAfter = tooLong ? state : copyState(doc.mode, state);\n    } else {\n      if (line.text.length <= cm.options.maxHighlightLength)\n        { processLine(cm, line.text, state); }\n      line.stateAfter = doc.frontier % 5 == 0 ? copyState(doc.mode, state) : null;\n    }\n    ++doc.frontier;\n    if (+new Date > end) {\n      startWorker(cm, cm.options.workDelay);\n      return true\n    }\n  });\n  if (changedLines.length) { runInOp(cm, function () {\n    for (var i = 0; i < changedLines.length; i++)\n      { regLineChange(cm, changedLines[i], \"text\"); }\n  }); }\n}\n\n// DISPLAY DRAWING\n\nvar DisplayUpdate = function(cm, viewport, force) {\n  var display = cm.display;\n\n  this.viewport = viewport;\n  // Store some values that we'll need later (but don't want to force a relayout for)\n  this.visible = visibleLines(display, cm.doc, viewport);\n  this.editorIsHidden = !display.wrapper.offsetWidth;\n  this.wrapperHeight = display.wrapper.clientHeight;\n  this.wrapperWidth = display.wrapper.clientWidth;\n  this.oldDisplayWidth = displayWidth(cm);\n  this.force = force;\n  this.dims = getDimensions(cm);\n  this.events = [];\n};\n\nDisplayUpdate.prototype.signal = function (emitter, type) {\n  if (hasHandler(emitter, type))\n    { this.events.push(arguments); }\n};\nDisplayUpdate.prototype.finish = function () {\n    var this$1 = this;\n\n  for (var i = 0; i < this.events.length; i++)\n    { signal.apply(null, this$1.events[i]); }\n};\n\nfunction maybeClipScrollbars(cm) {\n  var display = cm.display;\n  if (!display.scrollbarsClipped && display.scroller.offsetWidth) {\n    display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth;\n    display.heightForcer.style.height = scrollGap(cm) + \"px\";\n    display.sizer.style.marginBottom = -display.nativeBarWidth + \"px\";\n    display.sizer.style.borderRightWidth = scrollGap(cm) + \"px\";\n    display.scrollbarsClipped = true;\n  }\n}\n\n// Does the actual updating of the line display. Bails out\n// (returning false) when there is nothing to be done and forced is\n// false.\nfunction updateDisplayIfNeeded(cm, update) {\n  var display = cm.display, doc = cm.doc;\n\n  if (update.editorIsHidden) {\n    resetView(cm);\n    return false\n  }\n\n  // Bail out if the visible area is already rendered and nothing changed.\n  if (!update.force &&\n      update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo &&\n      (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) &&\n      display.renderedView == display.view && countDirtyView(cm) == 0)\n    { return false }\n\n  if (maybeUpdateLineNumberWidth(cm)) {\n    resetView(cm);\n    update.dims = getDimensions(cm);\n  }\n\n  // Compute a suitable new viewport (from & to)\n  var end = doc.first + doc.size;\n  var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first);\n  var to = Math.min(end, update.visible.to + cm.options.viewportMargin);\n  if (display.viewFrom < from && from - display.viewFrom < 20) { from = Math.max(doc.first, display.viewFrom); }\n  if (display.viewTo > to && display.viewTo - to < 20) { to = Math.min(end, display.viewTo); }\n  if (sawCollapsedSpans) {\n    from = visualLineNo(cm.doc, from);\n    to = visualLineEndNo(cm.doc, to);\n  }\n\n  var different = from != display.viewFrom || to != display.viewTo ||\n    display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth;\n  adjustView(cm, from, to);\n\n  display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom));\n  // Position the mover div to align with the current scroll position\n  cm.display.mover.style.top = display.viewOffset + \"px\";\n\n  var toUpdate = countDirtyView(cm);\n  if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view &&\n      (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo))\n    { return false }\n\n  // For big changes, we hide the enclosing element during the\n  // update, since that speeds up the operations on most browsers.\n  var focused = activeElt();\n  if (toUpdate > 4) { display.lineDiv.style.display = \"none\"; }\n  patchDisplay(cm, display.updateLineNumbers, update.dims);\n  if (toUpdate > 4) { display.lineDiv.style.display = \"\"; }\n  display.renderedView = display.view;\n  // There might have been a widget with a focused element that got\n  // hidden or updated, if so re-focus it.\n  if (focused && activeElt() != focused && focused.offsetHeight) { focused.focus(); }\n\n  // Prevent selection and cursors from interfering with the scroll\n  // width and height.\n  removeChildren(display.cursorDiv);\n  removeChildren(display.selectionDiv);\n  display.gutters.style.height = display.sizer.style.minHeight = 0;\n\n  if (different) {\n    display.lastWrapHeight = update.wrapperHeight;\n    display.lastWrapWidth = update.wrapperWidth;\n    startWorker(cm, 400);\n  }\n\n  display.updateLineNumbers = null;\n\n  return true\n}\n\nfunction postUpdateDisplay(cm, update) {\n  var viewport = update.viewport;\n\n  for (var first = true;; first = false) {\n    if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) {\n      // Clip forced viewport to actual scrollable area.\n      if (viewport && viewport.top != null)\n        { viewport = {top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)}; }\n      // Updated line heights might result in the drawn area not\n      // actually covering the viewport. Keep looping until it does.\n      update.visible = visibleLines(cm.display, cm.doc, viewport);\n      if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo)\n        { break }\n    }\n    if (!updateDisplayIfNeeded(cm, update)) { break }\n    updateHeightsInViewport(cm);\n    var barMeasure = measureForScrollbars(cm);\n    updateSelection(cm);\n    updateScrollbars(cm, barMeasure);\n    setDocumentHeight(cm, barMeasure);\n  }\n\n  update.signal(cm, \"update\", cm);\n  if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) {\n    update.signal(cm, \"viewportChange\", cm, cm.display.viewFrom, cm.display.viewTo);\n    cm.display.reportedViewFrom = cm.display.viewFrom; cm.display.reportedViewTo = cm.display.viewTo;\n  }\n}\n\nfunction updateDisplaySimple(cm, viewport) {\n  var update = new DisplayUpdate(cm, viewport);\n  if (updateDisplayIfNeeded(cm, update)) {\n    updateHeightsInViewport(cm);\n    postUpdateDisplay(cm, update);\n    var barMeasure = measureForScrollbars(cm);\n    updateSelection(cm);\n    updateScrollbars(cm, barMeasure);\n    setDocumentHeight(cm, barMeasure);\n    update.finish();\n  }\n}\n\n// Sync the actual display DOM structure with display.view, removing\n// nodes for lines that are no longer in view, and creating the ones\n// that are not there yet, and updating the ones that are out of\n// date.\nfunction patchDisplay(cm, updateNumbersFrom, dims) {\n  var display = cm.display, lineNumbers = cm.options.lineNumbers;\n  var container = display.lineDiv, cur = container.firstChild;\n\n  function rm(node) {\n    var next = node.nextSibling;\n    // Works around a throw-scroll bug in OS X Webkit\n    if (webkit && mac && cm.display.currentWheelTarget == node)\n      { node.style.display = \"none\"; }\n    else\n      { node.parentNode.removeChild(node); }\n    return next\n  }\n\n  var view = display.view, lineN = display.viewFrom;\n  // Loop over the elements in the view, syncing cur (the DOM nodes\n  // in display.lineDiv) with the view as we go.\n  for (var i = 0; i < view.length; i++) {\n    var lineView = view[i];\n    if (lineView.hidden) {\n    } else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet\n      var node = buildLineElement(cm, lineView, lineN, dims);\n      container.insertBefore(node, cur);\n    } else { // Already drawn\n      while (cur != lineView.node) { cur = rm(cur); }\n      var updateNumber = lineNumbers && updateNumbersFrom != null &&\n        updateNumbersFrom <= lineN && lineView.lineNumber;\n      if (lineView.changes) {\n        if (indexOf(lineView.changes, \"gutter\") > -1) { updateNumber = false; }\n        updateLineForChanges(cm, lineView, lineN, dims);\n      }\n      if (updateNumber) {\n        removeChildren(lineView.lineNumber);\n        lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN)));\n      }\n      cur = lineView.node.nextSibling;\n    }\n    lineN += lineView.size;\n  }\n  while (cur) { cur = rm(cur); }\n}\n\nfunction updateGutterSpace(cm) {\n  var width = cm.display.gutters.offsetWidth;\n  cm.display.sizer.style.marginLeft = width + \"px\";\n}\n\nfunction setDocumentHeight(cm, measure) {\n  cm.display.sizer.style.minHeight = measure.docHeight + \"px\";\n  cm.display.heightForcer.style.top = measure.docHeight + \"px\";\n  cm.display.gutters.style.height = (measure.docHeight + cm.display.barHeight + scrollGap(cm)) + \"px\";\n}\n\n// Rebuild the gutter elements, ensure the margin to the left of the\n// code matches their width.\nfunction updateGutters(cm) {\n  var gutters = cm.display.gutters, specs = cm.options.gutters;\n  removeChildren(gutters);\n  var i = 0;\n  for (; i < specs.length; ++i) {\n    var gutterClass = specs[i];\n    var gElt = gutters.appendChild(elt(\"div\", null, \"CodeMirror-gutter \" + gutterClass));\n    if (gutterClass == \"CodeMirror-linenumbers\") {\n      cm.display.lineGutter = gElt;\n      gElt.style.width = (cm.display.lineNumWidth || 1) + \"px\";\n    }\n  }\n  gutters.style.display = i ? \"\" : \"none\";\n  updateGutterSpace(cm);\n}\n\n// Make sure the gutters options contains the element\n// \"CodeMirror-linenumbers\" when the lineNumbers option is true.\nfunction setGuttersForLineNumbers(options) {\n  var found = indexOf(options.gutters, \"CodeMirror-linenumbers\");\n  if (found == -1 && options.lineNumbers) {\n    options.gutters = options.gutters.concat([\"CodeMirror-linenumbers\"]);\n  } else if (found > -1 && !options.lineNumbers) {\n    options.gutters = options.gutters.slice(0);\n    options.gutters.splice(found, 1);\n  }\n}\n\n// Selection objects are immutable. A new one is created every time\n// the selection changes. A selection is one or more non-overlapping\n// (and non-touching) ranges, sorted, and an integer that indicates\n// which one is the primary selection (the one that's scrolled into\n// view, that getCursor returns, etc).\nvar Selection = function(ranges, primIndex) {\n  this.ranges = ranges;\n  this.primIndex = primIndex;\n};\n\nSelection.prototype.primary = function () { return this.ranges[this.primIndex] };\n\nSelection.prototype.equals = function (other) {\n    var this$1 = this;\n\n  if (other == this) { return true }\n  if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) { return false }\n  for (var i = 0; i < this.ranges.length; i++) {\n    var here = this$1.ranges[i], there = other.ranges[i];\n    if (!equalCursorPos(here.anchor, there.anchor) || !equalCursorPos(here.head, there.head)) { return false }\n  }\n  return true\n};\n\nSelection.prototype.deepCopy = function () {\n    var this$1 = this;\n\n  var out = [];\n  for (var i = 0; i < this.ranges.length; i++)\n    { out[i] = new Range(copyPos(this$1.ranges[i].anchor), copyPos(this$1.ranges[i].head)); }\n  return new Selection(out, this.primIndex)\n};\n\nSelection.prototype.somethingSelected = function () {\n    var this$1 = this;\n\n  for (var i = 0; i < this.ranges.length; i++)\n    { if (!this$1.ranges[i].empty()) { return true } }\n  return false\n};\n\nSelection.prototype.contains = function (pos, end) {\n    var this$1 = this;\n\n  if (!end) { end = pos; }\n  for (var i = 0; i < this.ranges.length; i++) {\n    var range = this$1.ranges[i];\n    if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0)\n      { return i }\n  }\n  return -1\n};\n\nvar Range = function(anchor, head) {\n  this.anchor = anchor; this.head = head;\n};\n\nRange.prototype.from = function () { return minPos(this.anchor, this.head) };\nRange.prototype.to = function () { return maxPos(this.anchor, this.head) };\nRange.prototype.empty = function () { return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch };\n\n// Take an unsorted, potentially overlapping set of ranges, and\n// build a selection out of it. 'Consumes' ranges array (modifying\n// it).\nfunction normalizeSelection(ranges, primIndex) {\n  var prim = ranges[primIndex];\n  ranges.sort(function (a, b) { return cmp(a.from(), b.from()); });\n  primIndex = indexOf(ranges, prim);\n  for (var i = 1; i < ranges.length; i++) {\n    var cur = ranges[i], prev = ranges[i - 1];\n    if (cmp(prev.to(), cur.from()) >= 0) {\n      var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to());\n      var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head;\n      if (i <= primIndex) { --primIndex; }\n      ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to));\n    }\n  }\n  return new Selection(ranges, primIndex)\n}\n\nfunction simpleSelection(anchor, head) {\n  return new Selection([new Range(anchor, head || anchor)], 0)\n}\n\n// Compute the position of the end of a change (its 'to' property\n// refers to the pre-change end).\nfunction changeEnd(change) {\n  if (!change.text) { return change.to }\n  return Pos(change.from.line + change.text.length - 1,\n             lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0))\n}\n\n// Adjust a position to refer to the post-change position of the\n// same text, or the end of the change if the change covers it.\nfunction adjustForChange(pos, change) {\n  if (cmp(pos, change.from) < 0) { return pos }\n  if (cmp(pos, change.to) <= 0) { return changeEnd(change) }\n\n  var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch;\n  if (pos.line == change.to.line) { ch += changeEnd(change).ch - change.to.ch; }\n  return Pos(line, ch)\n}\n\nfunction computeSelAfterChange(doc, change) {\n  var out = [];\n  for (var i = 0; i < doc.sel.ranges.length; i++) {\n    var range = doc.sel.ranges[i];\n    out.push(new Range(adjustForChange(range.anchor, change),\n                       adjustForChange(range.head, change)));\n  }\n  return normalizeSelection(out, doc.sel.primIndex)\n}\n\nfunction offsetPos(pos, old, nw) {\n  if (pos.line == old.line)\n    { return Pos(nw.line, pos.ch - old.ch + nw.ch) }\n  else\n    { return Pos(nw.line + (pos.line - old.line), pos.ch) }\n}\n\n// Used by replaceSelections to allow moving the selection to the\n// start or around the replaced test. Hint may be \"start\" or \"around\".\nfunction computeReplacedSel(doc, changes, hint) {\n  var out = [];\n  var oldPrev = Pos(doc.first, 0), newPrev = oldPrev;\n  for (var i = 0; i < changes.length; i++) {\n    var change = changes[i];\n    var from = offsetPos(change.from, oldPrev, newPrev);\n    var to = offsetPos(changeEnd(change), oldPrev, newPrev);\n    oldPrev = change.to;\n    newPrev = to;\n    if (hint == \"around\") {\n      var range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor) < 0;\n      out[i] = new Range(inv ? to : from, inv ? from : to);\n    } else {\n      out[i] = new Range(from, from);\n    }\n  }\n  return new Selection(out, doc.sel.primIndex)\n}\n\n// Used to get the editor into a consistent state again when options change.\n\nfunction loadMode(cm) {\n  cm.doc.mode = getMode(cm.options, cm.doc.modeOption);\n  resetModeState(cm);\n}\n\nfunction resetModeState(cm) {\n  cm.doc.iter(function (line) {\n    if (line.stateAfter) { line.stateAfter = null; }\n    if (line.styles) { line.styles = null; }\n  });\n  cm.doc.frontier = cm.doc.first;\n  startWorker(cm, 100);\n  cm.state.modeGen++;\n  if (cm.curOp) { regChange(cm); }\n}\n\n// DOCUMENT DATA STRUCTURE\n\n// By default, updates that start and end at the beginning of a line\n// are treated specially, in order to make the association of line\n// widgets and marker elements with the text behave more intuitive.\nfunction isWholeLineUpdate(doc, change) {\n  return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == \"\" &&\n    (!doc.cm || doc.cm.options.wholeLineUpdateBefore)\n}\n\n// Perform a change on the document data structure.\nfunction updateDoc(doc, change, markedSpans, estimateHeight$$1) {\n  function spansFor(n) {return markedSpans ? markedSpans[n] : null}\n  function update(line, text, spans) {\n    updateLine(line, text, spans, estimateHeight$$1);\n    signalLater(line, \"change\", line, change);\n  }\n  function linesFor(start, end) {\n    var result = [];\n    for (var i = start; i < end; ++i)\n      { result.push(new Line(text[i], spansFor(i), estimateHeight$$1)); }\n    return result\n  }\n\n  var from = change.from, to = change.to, text = change.text;\n  var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line);\n  var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line;\n\n  // Adjust the line structure\n  if (change.full) {\n    doc.insert(0, linesFor(0, text.length));\n    doc.remove(text.length, doc.size - text.length);\n  } else if (isWholeLineUpdate(doc, change)) {\n    // This is a whole-line replace. Treated specially to make\n    // sure line objects move the way they are supposed to.\n    var added = linesFor(0, text.length - 1);\n    update(lastLine, lastLine.text, lastSpans);\n    if (nlines) { doc.remove(from.line, nlines); }\n    if (added.length) { doc.insert(from.line, added); }\n  } else if (firstLine == lastLine) {\n    if (text.length == 1) {\n      update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans);\n    } else {\n      var added$1 = linesFor(1, text.length - 1);\n      added$1.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight$$1));\n      update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n      doc.insert(from.line + 1, added$1);\n    }\n  } else if (text.length == 1) {\n    update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0));\n    doc.remove(from.line + 1, nlines);\n  } else {\n    update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n    update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans);\n    var added$2 = linesFor(1, text.length - 1);\n    if (nlines > 1) { doc.remove(from.line + 1, nlines - 1); }\n    doc.insert(from.line + 1, added$2);\n  }\n\n  signalLater(doc, \"change\", doc, change);\n}\n\n// Call f for all linked documents.\nfunction linkedDocs(doc, f, sharedHistOnly) {\n  function propagate(doc, skip, sharedHist) {\n    if (doc.linked) { for (var i = 0; i < doc.linked.length; ++i) {\n      var rel = doc.linked[i];\n      if (rel.doc == skip) { continue }\n      var shared = sharedHist && rel.sharedHist;\n      if (sharedHistOnly && !shared) { continue }\n      f(rel.doc, shared);\n      propagate(rel.doc, doc, shared);\n    } }\n  }\n  propagate(doc, null, true);\n}\n\n// Attach a document to an editor.\nfunction attachDoc(cm, doc) {\n  if (doc.cm) { throw new Error(\"This document is already in use.\") }\n  cm.doc = doc;\n  doc.cm = cm;\n  estimateLineHeights(cm);\n  loadMode(cm);\n  setDirectionClass(cm);\n  if (!cm.options.lineWrapping) { findMaxLine(cm); }\n  cm.options.mode = doc.modeOption;\n  regChange(cm);\n}\n\nfunction setDirectionClass(cm) {\n  (cm.doc.direction == \"rtl\" ? addClass : rmClass)(cm.display.lineDiv, \"CodeMirror-rtl\");\n}\n\nfunction directionChanged(cm) {\n  runInOp(cm, function () {\n    setDirectionClass(cm);\n    regChange(cm);\n  });\n}\n\nfunction History(startGen) {\n  // Arrays of change events and selections. Doing something adds an\n  // event to done and clears undo. Undoing moves events from done\n  // to undone, redoing moves them in the other direction.\n  this.done = []; this.undone = [];\n  this.undoDepth = Infinity;\n  // Used to track when changes can be merged into a single undo\n  // event\n  this.lastModTime = this.lastSelTime = 0;\n  this.lastOp = this.lastSelOp = null;\n  this.lastOrigin = this.lastSelOrigin = null;\n  // Used by the isClean() method\n  this.generation = this.maxGeneration = startGen || 1;\n}\n\n// Create a history change event from an updateDoc-style change\n// object.\nfunction historyChangeFromChange(doc, change) {\n  var histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)};\n  attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\n  linkedDocs(doc, function (doc) { return attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1); }, true);\n  return histChange\n}\n\n// Pop all selection events off the end of a history array. Stop at\n// a change event.\nfunction clearSelectionEvents(array) {\n  while (array.length) {\n    var last = lst(array);\n    if (last.ranges) { array.pop(); }\n    else { break }\n  }\n}\n\n// Find the top change event in the history. Pop off selection\n// events that are in the way.\nfunction lastChangeEvent(hist, force) {\n  if (force) {\n    clearSelectionEvents(hist.done);\n    return lst(hist.done)\n  } else if (hist.done.length && !lst(hist.done).ranges) {\n    return lst(hist.done)\n  } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) {\n    hist.done.pop();\n    return lst(hist.done)\n  }\n}\n\n// Register a change in the history. Merges changes that are within\n// a single operation, or are close together with an origin that\n// allows merging (starting with \"+\") into a single event.\nfunction addChangeToHistory(doc, change, selAfter, opId) {\n  var hist = doc.history;\n  hist.undone.length = 0;\n  var time = +new Date, cur;\n  var last;\n\n  if ((hist.lastOp == opId ||\n       hist.lastOrigin == change.origin && change.origin &&\n       ((change.origin.charAt(0) == \"+\" && doc.cm && hist.lastModTime > time - doc.cm.options.historyEventDelay) ||\n        change.origin.charAt(0) == \"*\")) &&\n      (cur = lastChangeEvent(hist, hist.lastOp == opId))) {\n    // Merge this change into the last event\n    last = lst(cur.changes);\n    if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) {\n      // Optimized case for simple insertion -- don't want to add\n      // new changesets for every character typed\n      last.to = changeEnd(change);\n    } else {\n      // Add new sub-event\n      cur.changes.push(historyChangeFromChange(doc, change));\n    }\n  } else {\n    // Can not be merged, start a new event.\n    var before = lst(hist.done);\n    if (!before || !before.ranges)\n      { pushSelectionToHistory(doc.sel, hist.done); }\n    cur = {changes: [historyChangeFromChange(doc, change)],\n           generation: hist.generation};\n    hist.done.push(cur);\n    while (hist.done.length > hist.undoDepth) {\n      hist.done.shift();\n      if (!hist.done[0].ranges) { hist.done.shift(); }\n    }\n  }\n  hist.done.push(selAfter);\n  hist.generation = ++hist.maxGeneration;\n  hist.lastModTime = hist.lastSelTime = time;\n  hist.lastOp = hist.lastSelOp = opId;\n  hist.lastOrigin = hist.lastSelOrigin = change.origin;\n\n  if (!last) { signal(doc, \"historyAdded\"); }\n}\n\nfunction selectionEventCanBeMerged(doc, origin, prev, sel) {\n  var ch = origin.charAt(0);\n  return ch == \"*\" ||\n    ch == \"+\" &&\n    prev.ranges.length == sel.ranges.length &&\n    prev.somethingSelected() == sel.somethingSelected() &&\n    new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500)\n}\n\n// Called whenever the selection changes, sets the new selection as\n// the pending selection in the history, and pushes the old pending\n// selection into the 'done' array when it was significantly\n// different (in number of selected ranges, emptiness, or time).\nfunction addSelectionToHistory(doc, sel, opId, options) {\n  var hist = doc.history, origin = options && options.origin;\n\n  // A new event is started when the previous origin does not match\n  // the current, or the origins don't allow matching. Origins\n  // starting with * are always merged, those starting with + are\n  // merged when similar and close together in time.\n  if (opId == hist.lastSelOp ||\n      (origin && hist.lastSelOrigin == origin &&\n       (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin ||\n        selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))))\n    { hist.done[hist.done.length - 1] = sel; }\n  else\n    { pushSelectionToHistory(sel, hist.done); }\n\n  hist.lastSelTime = +new Date;\n  hist.lastSelOrigin = origin;\n  hist.lastSelOp = opId;\n  if (options && options.clearRedo !== false)\n    { clearSelectionEvents(hist.undone); }\n}\n\nfunction pushSelectionToHistory(sel, dest) {\n  var top = lst(dest);\n  if (!(top && top.ranges && top.equals(sel)))\n    { dest.push(sel); }\n}\n\n// Used to store marked span information in the history.\nfunction attachLocalSpans(doc, change, from, to) {\n  var existing = change[\"spans_\" + doc.id], n = 0;\n  doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function (line) {\n    if (line.markedSpans)\n      { (existing || (existing = change[\"spans_\" + doc.id] = {}))[n] = line.markedSpans; }\n    ++n;\n  });\n}\n\n// When un/re-doing restores text containing marked spans, those\n// that have been explicitly cleared should not be restored.\nfunction removeClearedSpans(spans) {\n  if (!spans) { return null }\n  var out;\n  for (var i = 0; i < spans.length; ++i) {\n    if (spans[i].marker.explicitlyCleared) { if (!out) { out = spans.slice(0, i); } }\n    else if (out) { out.push(spans[i]); }\n  }\n  return !out ? spans : out.length ? out : null\n}\n\n// Retrieve and filter the old marked spans stored in a change event.\nfunction getOldSpans(doc, change) {\n  var found = change[\"spans_\" + doc.id];\n  if (!found) { return null }\n  var nw = [];\n  for (var i = 0; i < change.text.length; ++i)\n    { nw.push(removeClearedSpans(found[i])); }\n  return nw\n}\n\n// Used for un/re-doing changes from the history. Combines the\n// result of computing the existing spans with the set of spans that\n// existed in the history (so that deleting around a span and then\n// undoing brings back the span).\nfunction mergeOldSpans(doc, change) {\n  var old = getOldSpans(doc, change);\n  var stretched = stretchSpansOverChange(doc, change);\n  if (!old) { return stretched }\n  if (!stretched) { return old }\n\n  for (var i = 0; i < old.length; ++i) {\n    var oldCur = old[i], stretchCur = stretched[i];\n    if (oldCur && stretchCur) {\n      spans: for (var j = 0; j < stretchCur.length; ++j) {\n        var span = stretchCur[j];\n        for (var k = 0; k < oldCur.length; ++k)\n          { if (oldCur[k].marker == span.marker) { continue spans } }\n        oldCur.push(span);\n      }\n    } else if (stretchCur) {\n      old[i] = stretchCur;\n    }\n  }\n  return old\n}\n\n// Used both to provide a JSON-safe object in .getHistory, and, when\n// detaching a document, to split the history in two\nfunction copyHistoryArray(events, newGroup, instantiateSel) {\n  var copy = [];\n  for (var i = 0; i < events.length; ++i) {\n    var event = events[i];\n    if (event.ranges) {\n      copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event);\n      continue\n    }\n    var changes = event.changes, newChanges = [];\n    copy.push({changes: newChanges});\n    for (var j = 0; j < changes.length; ++j) {\n      var change = changes[j], m = (void 0);\n      newChanges.push({from: change.from, to: change.to, text: change.text});\n      if (newGroup) { for (var prop in change) { if (m = prop.match(/^spans_(\\d+)$/)) {\n        if (indexOf(newGroup, Number(m[1])) > -1) {\n          lst(newChanges)[prop] = change[prop];\n          delete change[prop];\n        }\n      } } }\n    }\n  }\n  return copy\n}\n\n// The 'scroll' parameter given to many of these indicated whether\n// the new cursor position should be scrolled into view after\n// modifying the selection.\n\n// If shift is held or the extend flag is set, extends a range to\n// include a given position (and optionally a second position).\n// Otherwise, simply returns the range between the given positions.\n// Used for cursor motion and such.\nfunction extendRange(doc, range, head, other) {\n  if (doc.cm && doc.cm.display.shift || doc.extend) {\n    var anchor = range.anchor;\n    if (other) {\n      var posBefore = cmp(head, anchor) < 0;\n      if (posBefore != (cmp(other, anchor) < 0)) {\n        anchor = head;\n        head = other;\n      } else if (posBefore != (cmp(head, other) < 0)) {\n        head = other;\n      }\n    }\n    return new Range(anchor, head)\n  } else {\n    return new Range(other || head, head)\n  }\n}\n\n// Extend the primary selection range, discard the rest.\nfunction extendSelection(doc, head, other, options) {\n  setSelection(doc, new Selection([extendRange(doc, doc.sel.primary(), head, other)], 0), options);\n}\n\n// Extend all selections (pos is an array of selections with length\n// equal the number of selections)\nfunction extendSelections(doc, heads, options) {\n  var out = [];\n  for (var i = 0; i < doc.sel.ranges.length; i++)\n    { out[i] = extendRange(doc, doc.sel.ranges[i], heads[i], null); }\n  var newSel = normalizeSelection(out, doc.sel.primIndex);\n  setSelection(doc, newSel, options);\n}\n\n// Updates a single range in the selection.\nfunction replaceOneSelection(doc, i, range, options) {\n  var ranges = doc.sel.ranges.slice(0);\n  ranges[i] = range;\n  setSelection(doc, normalizeSelection(ranges, doc.sel.primIndex), options);\n}\n\n// Reset the selection to a single range.\nfunction setSimpleSelection(doc, anchor, head, options) {\n  setSelection(doc, simpleSelection(anchor, head), options);\n}\n\n// Give beforeSelectionChange handlers a change to influence a\n// selection update.\nfunction filterSelectionChange(doc, sel, options) {\n  var obj = {\n    ranges: sel.ranges,\n    update: function(ranges) {\n      var this$1 = this;\n\n      this.ranges = [];\n      for (var i = 0; i < ranges.length; i++)\n        { this$1.ranges[i] = new Range(clipPos(doc, ranges[i].anchor),\n                                   clipPos(doc, ranges[i].head)); }\n    },\n    origin: options && options.origin\n  };\n  signal(doc, \"beforeSelectionChange\", doc, obj);\n  if (doc.cm) { signal(doc.cm, \"beforeSelectionChange\", doc.cm, obj); }\n  if (obj.ranges != sel.ranges) { return normalizeSelection(obj.ranges, obj.ranges.length - 1) }\n  else { return sel }\n}\n\nfunction setSelectionReplaceHistory(doc, sel, options) {\n  var done = doc.history.done, last = lst(done);\n  if (last && last.ranges) {\n    done[done.length - 1] = sel;\n    setSelectionNoUndo(doc, sel, options);\n  } else {\n    setSelection(doc, sel, options);\n  }\n}\n\n// Set a new selection.\nfunction setSelection(doc, sel, options) {\n  setSelectionNoUndo(doc, sel, options);\n  addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options);\n}\n\nfunction setSelectionNoUndo(doc, sel, options) {\n  if (hasHandler(doc, \"beforeSelectionChange\") || doc.cm && hasHandler(doc.cm, \"beforeSelectionChange\"))\n    { sel = filterSelectionChange(doc, sel, options); }\n\n  var bias = options && options.bias ||\n    (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1);\n  setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true));\n\n  if (!(options && options.scroll === false) && doc.cm)\n    { ensureCursorVisible(doc.cm); }\n}\n\nfunction setSelectionInner(doc, sel) {\n  if (sel.equals(doc.sel)) { return }\n\n  doc.sel = sel;\n\n  if (doc.cm) {\n    doc.cm.curOp.updateInput = doc.cm.curOp.selectionChanged = true;\n    signalCursorActivity(doc.cm);\n  }\n  signalLater(doc, \"cursorActivity\", doc);\n}\n\n// Verify that the selection does not partially select any atomic\n// marked ranges.\nfunction reCheckSelection(doc) {\n  setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false), sel_dontScroll);\n}\n\n// Return a selection that does not partially select any atomic\n// ranges.\nfunction skipAtomicInSelection(doc, sel, bias, mayClear) {\n  var out;\n  for (var i = 0; i < sel.ranges.length; i++) {\n    var range = sel.ranges[i];\n    var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i];\n    var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear);\n    var newHead = skipAtomic(doc, range.head, old && old.head, bias, mayClear);\n    if (out || newAnchor != range.anchor || newHead != range.head) {\n      if (!out) { out = sel.ranges.slice(0, i); }\n      out[i] = new Range(newAnchor, newHead);\n    }\n  }\n  return out ? normalizeSelection(out, sel.primIndex) : sel\n}\n\nfunction skipAtomicInner(doc, pos, oldPos, dir, mayClear) {\n  var line = getLine(doc, pos.line);\n  if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n    var sp = line.markedSpans[i], m = sp.marker;\n    if ((sp.from == null || (m.inclusiveLeft ? sp.from <= pos.ch : sp.from < pos.ch)) &&\n        (sp.to == null || (m.inclusiveRight ? sp.to >= pos.ch : sp.to > pos.ch))) {\n      if (mayClear) {\n        signal(m, \"beforeCursorEnter\");\n        if (m.explicitlyCleared) {\n          if (!line.markedSpans) { break }\n          else {--i; continue}\n        }\n      }\n      if (!m.atomic) { continue }\n\n      if (oldPos) {\n        var near = m.find(dir < 0 ? 1 : -1), diff = (void 0);\n        if (dir < 0 ? m.inclusiveRight : m.inclusiveLeft)\n          { near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null); }\n        if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0))\n          { return skipAtomicInner(doc, near, pos, dir, mayClear) }\n      }\n\n      var far = m.find(dir < 0 ? -1 : 1);\n      if (dir < 0 ? m.inclusiveLeft : m.inclusiveRight)\n        { far = movePos(doc, far, dir, far.line == pos.line ? line : null); }\n      return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null\n    }\n  } }\n  return pos\n}\n\n// Ensure a given position is not inside an atomic range.\nfunction skipAtomic(doc, pos, oldPos, bias, mayClear) {\n  var dir = bias || 1;\n  var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) ||\n      (!mayClear && skipAtomicInner(doc, pos, oldPos, dir, true)) ||\n      skipAtomicInner(doc, pos, oldPos, -dir, mayClear) ||\n      (!mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true));\n  if (!found) {\n    doc.cantEdit = true;\n    return Pos(doc.first, 0)\n  }\n  return found\n}\n\nfunction movePos(doc, pos, dir, line) {\n  if (dir < 0 && pos.ch == 0) {\n    if (pos.line > doc.first) { return clipPos(doc, Pos(pos.line - 1)) }\n    else { return null }\n  } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) {\n    if (pos.line < doc.first + doc.size - 1) { return Pos(pos.line + 1, 0) }\n    else { return null }\n  } else {\n    return new Pos(pos.line, pos.ch + dir)\n  }\n}\n\nfunction selectAll(cm) {\n  cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);\n}\n\n// UPDATING\n\n// Allow \"beforeChange\" event handlers to influence a change\nfunction filterChange(doc, change, update) {\n  var obj = {\n    canceled: false,\n    from: change.from,\n    to: change.to,\n    text: change.text,\n    origin: change.origin,\n    cancel: function () { return obj.canceled = true; }\n  };\n  if (update) { obj.update = function (from, to, text, origin) {\n    if (from) { obj.from = clipPos(doc, from); }\n    if (to) { obj.to = clipPos(doc, to); }\n    if (text) { obj.text = text; }\n    if (origin !== undefined) { obj.origin = origin; }\n  }; }\n  signal(doc, \"beforeChange\", doc, obj);\n  if (doc.cm) { signal(doc.cm, \"beforeChange\", doc.cm, obj); }\n\n  if (obj.canceled) { return null }\n  return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin}\n}\n\n// Apply a change to a document, and add it to the document's\n// history, and propagating it to all linked documents.\nfunction makeChange(doc, change, ignoreReadOnly) {\n  if (doc.cm) {\n    if (!doc.cm.curOp) { return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly) }\n    if (doc.cm.state.suppressEdits) { return }\n  }\n\n  if (hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\")) {\n    change = filterChange(doc, change, true);\n    if (!change) { return }\n  }\n\n  // Possibly split or suppress the update based on the presence\n  // of read-only spans in its range.\n  var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to);\n  if (split) {\n    for (var i = split.length - 1; i >= 0; --i)\n      { makeChangeInner(doc, {from: split[i].from, to: split[i].to, text: i ? [\"\"] : change.text}); }\n  } else {\n    makeChangeInner(doc, change);\n  }\n}\n\nfunction makeChangeInner(doc, change) {\n  if (change.text.length == 1 && change.text[0] == \"\" && cmp(change.from, change.to) == 0) { return }\n  var selAfter = computeSelAfterChange(doc, change);\n  addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN);\n\n  makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change));\n  var rebased = [];\n\n  linkedDocs(doc, function (doc, sharedHist) {\n    if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n      rebaseHist(doc.history, change);\n      rebased.push(doc.history);\n    }\n    makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change));\n  });\n}\n\n// Revert a change stored in a document's history.\nfunction makeChangeFromHistory(doc, type, allowSelectionOnly) {\n  if (doc.cm && doc.cm.state.suppressEdits && !allowSelectionOnly) { return }\n\n  var hist = doc.history, event, selAfter = doc.sel;\n  var source = type == \"undo\" ? hist.done : hist.undone, dest = type == \"undo\" ? hist.undone : hist.done;\n\n  // Verify that there is a useable event (so that ctrl-z won't\n  // needlessly clear selection events)\n  var i = 0;\n  for (; i < source.length; i++) {\n    event = source[i];\n    if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges)\n      { break }\n  }\n  if (i == source.length) { return }\n  hist.lastOrigin = hist.lastSelOrigin = null;\n\n  for (;;) {\n    event = source.pop();\n    if (event.ranges) {\n      pushSelectionToHistory(event, dest);\n      if (allowSelectionOnly && !event.equals(doc.sel)) {\n        setSelection(doc, event, {clearRedo: false});\n        return\n      }\n      selAfter = event;\n    }\n    else { break }\n  }\n\n  // Build up a reverse change object to add to the opposite history\n  // stack (redo when undoing, and vice versa).\n  var antiChanges = [];\n  pushSelectionToHistory(selAfter, dest);\n  dest.push({changes: antiChanges, generation: hist.generation});\n  hist.generation = event.generation || ++hist.maxGeneration;\n\n  var filter = hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\");\n\n  var loop = function ( i ) {\n    var change = event.changes[i];\n    change.origin = type;\n    if (filter && !filterChange(doc, change, false)) {\n      source.length = 0;\n      return {}\n    }\n\n    antiChanges.push(historyChangeFromChange(doc, change));\n\n    var after = i ? computeSelAfterChange(doc, change) : lst(source);\n    makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change));\n    if (!i && doc.cm) { doc.cm.scrollIntoView({from: change.from, to: changeEnd(change)}); }\n    var rebased = [];\n\n    // Propagate to the linked documents\n    linkedDocs(doc, function (doc, sharedHist) {\n      if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n        rebaseHist(doc.history, change);\n        rebased.push(doc.history);\n      }\n      makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change));\n    });\n  };\n\n  for (var i$1 = event.changes.length - 1; i$1 >= 0; --i$1) {\n    var returned = loop( i$1 );\n\n    if ( returned ) return returned.v;\n  }\n}\n\n// Sub-views need their line numbers shifted when text is added\n// above or below them in the parent document.\nfunction shiftDoc(doc, distance) {\n  if (distance == 0) { return }\n  doc.first += distance;\n  doc.sel = new Selection(map(doc.sel.ranges, function (range) { return new Range(\n    Pos(range.anchor.line + distance, range.anchor.ch),\n    Pos(range.head.line + distance, range.head.ch)\n  ); }), doc.sel.primIndex);\n  if (doc.cm) {\n    regChange(doc.cm, doc.first, doc.first - distance, distance);\n    for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++)\n      { regLineChange(doc.cm, l, \"gutter\"); }\n  }\n}\n\n// More lower-level change function, handling only a single document\n// (not linked ones).\nfunction makeChangeSingleDoc(doc, change, selAfter, spans) {\n  if (doc.cm && !doc.cm.curOp)\n    { return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans) }\n\n  if (change.to.line < doc.first) {\n    shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line));\n    return\n  }\n  if (change.from.line > doc.lastLine()) { return }\n\n  // Clip the change to the size of this doc\n  if (change.from.line < doc.first) {\n    var shift = change.text.length - 1 - (doc.first - change.from.line);\n    shiftDoc(doc, shift);\n    change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch),\n              text: [lst(change.text)], origin: change.origin};\n  }\n  var last = doc.lastLine();\n  if (change.to.line > last) {\n    change = {from: change.from, to: Pos(last, getLine(doc, last).text.length),\n              text: [change.text[0]], origin: change.origin};\n  }\n\n  change.removed = getBetween(doc, change.from, change.to);\n\n  if (!selAfter) { selAfter = computeSelAfterChange(doc, change); }\n  if (doc.cm) { makeChangeSingleDocInEditor(doc.cm, change, spans); }\n  else { updateDoc(doc, change, spans); }\n  setSelectionNoUndo(doc, selAfter, sel_dontScroll);\n}\n\n// Handle the interaction of a change to a document with the editor\n// that this document is part of.\nfunction makeChangeSingleDocInEditor(cm, change, spans) {\n  var doc = cm.doc, display = cm.display, from = change.from, to = change.to;\n\n  var recomputeMaxLength = false, checkWidthStart = from.line;\n  if (!cm.options.lineWrapping) {\n    checkWidthStart = lineNo(visualLine(getLine(doc, from.line)));\n    doc.iter(checkWidthStart, to.line + 1, function (line) {\n      if (line == display.maxLine) {\n        recomputeMaxLength = true;\n        return true\n      }\n    });\n  }\n\n  if (doc.sel.contains(change.from, change.to) > -1)\n    { signalCursorActivity(cm); }\n\n  updateDoc(doc, change, spans, estimateHeight(cm));\n\n  if (!cm.options.lineWrapping) {\n    doc.iter(checkWidthStart, from.line + change.text.length, function (line) {\n      var len = lineLength(line);\n      if (len > display.maxLineLength) {\n        display.maxLine = line;\n        display.maxLineLength = len;\n        display.maxLineChanged = true;\n        recomputeMaxLength = false;\n      }\n    });\n    if (recomputeMaxLength) { cm.curOp.updateMaxLine = true; }\n  }\n\n  // Adjust frontier, schedule worker\n  doc.frontier = Math.min(doc.frontier, from.line);\n  startWorker(cm, 400);\n\n  var lendiff = change.text.length - (to.line - from.line) - 1;\n  // Remember that these lines changed, for updating the display\n  if (change.full)\n    { regChange(cm); }\n  else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change))\n    { regLineChange(cm, from.line, \"text\"); }\n  else\n    { regChange(cm, from.line, to.line + 1, lendiff); }\n\n  var changesHandler = hasHandler(cm, \"changes\"), changeHandler = hasHandler(cm, \"change\");\n  if (changeHandler || changesHandler) {\n    var obj = {\n      from: from, to: to,\n      text: change.text,\n      removed: change.removed,\n      origin: change.origin\n    };\n    if (changeHandler) { signalLater(cm, \"change\", cm, obj); }\n    if (changesHandler) { (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj); }\n  }\n  cm.display.selForContextMenu = null;\n}\n\nfunction replaceRange(doc, code, from, to, origin) {\n  if (!to) { to = from; }\n  if (cmp(to, from) < 0) { var tmp = to; to = from; from = tmp; }\n  if (typeof code == \"string\") { code = doc.splitLines(code); }\n  makeChange(doc, {from: from, to: to, text: code, origin: origin});\n}\n\n// Rebasing/resetting history to deal with externally-sourced changes\n\nfunction rebaseHistSelSingle(pos, from, to, diff) {\n  if (to < pos.line) {\n    pos.line += diff;\n  } else if (from < pos.line) {\n    pos.line = from;\n    pos.ch = 0;\n  }\n}\n\n// Tries to rebase an array of history events given a change in the\n// document. If the change touches the same lines as the event, the\n// event, and everything 'behind' it, is discarded. If the change is\n// before the event, the event's positions are updated. Uses a\n// copy-on-write scheme for the positions, to avoid having to\n// reallocate them all on every rebase, but also avoid problems with\n// shared position objects being unsafely updated.\nfunction rebaseHistArray(array, from, to, diff) {\n  for (var i = 0; i < array.length; ++i) {\n    var sub = array[i], ok = true;\n    if (sub.ranges) {\n      if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied = true; }\n      for (var j = 0; j < sub.ranges.length; j++) {\n        rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff);\n        rebaseHistSelSingle(sub.ranges[j].head, from, to, diff);\n      }\n      continue\n    }\n    for (var j$1 = 0; j$1 < sub.changes.length; ++j$1) {\n      var cur = sub.changes[j$1];\n      if (to < cur.from.line) {\n        cur.from = Pos(cur.from.line + diff, cur.from.ch);\n        cur.to = Pos(cur.to.line + diff, cur.to.ch);\n      } else if (from <= cur.to.line) {\n        ok = false;\n        break\n      }\n    }\n    if (!ok) {\n      array.splice(0, i + 1);\n      i = 0;\n    }\n  }\n}\n\nfunction rebaseHist(hist, change) {\n  var from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1;\n  rebaseHistArray(hist.done, from, to, diff);\n  rebaseHistArray(hist.undone, from, to, diff);\n}\n\n// Utility for applying a change to a line by handle or number,\n// returning the number and optionally registering the line as\n// changed.\nfunction changeLine(doc, handle, changeType, op) {\n  var no = handle, line = handle;\n  if (typeof handle == \"number\") { line = getLine(doc, clipLine(doc, handle)); }\n  else { no = lineNo(handle); }\n  if (no == null) { return null }\n  if (op(line, no) && doc.cm) { regLineChange(doc.cm, no, changeType); }\n  return line\n}\n\n// The document is represented as a BTree consisting of leaves, with\n// chunk of lines in them, and branches, with up to ten leaves or\n// other branch nodes below them. The top node is always a branch\n// node, and is the document object itself (meaning it has\n// additional methods and properties).\n//\n// All nodes have parent links. The tree is used both to go from\n// line numbers to line objects, and to go from objects to numbers.\n// It also indexes by height, and is used to convert between height\n// and line object, and to find the total height of the document.\n//\n// See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html\n\nvar LeafChunk = function(lines) {\n  var this$1 = this;\n\n  this.lines = lines;\n  this.parent = null;\n  var height = 0;\n  for (var i = 0; i < lines.length; ++i) {\n    lines[i].parent = this$1;\n    height += lines[i].height;\n  }\n  this.height = height;\n};\n\nLeafChunk.prototype.chunkSize = function () { return this.lines.length };\n\n// Remove the n lines at offset 'at'.\nLeafChunk.prototype.removeInner = function (at, n) {\n    var this$1 = this;\n\n  for (var i = at, e = at + n; i < e; ++i) {\n    var line = this$1.lines[i];\n    this$1.height -= line.height;\n    cleanUpLine(line);\n    signalLater(line, \"delete\");\n  }\n  this.lines.splice(at, n);\n};\n\n// Helper used to collapse a small branch into a single leaf.\nLeafChunk.prototype.collapse = function (lines) {\n  lines.push.apply(lines, this.lines);\n};\n\n// Insert the given array of lines at offset 'at', count them as\n// having the given height.\nLeafChunk.prototype.insertInner = function (at, lines, height) {\n    var this$1 = this;\n\n  this.height += height;\n  this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at));\n  for (var i = 0; i < lines.length; ++i) { lines[i].parent = this$1; }\n};\n\n// Used to iterate over a part of the tree.\nLeafChunk.prototype.iterN = function (at, n, op) {\n    var this$1 = this;\n\n  for (var e = at + n; at < e; ++at)\n    { if (op(this$1.lines[at])) { return true } }\n};\n\nvar BranchChunk = function(children) {\n  var this$1 = this;\n\n  this.children = children;\n  var size = 0, height = 0;\n  for (var i = 0; i < children.length; ++i) {\n    var ch = children[i];\n    size += ch.chunkSize(); height += ch.height;\n    ch.parent = this$1;\n  }\n  this.size = size;\n  this.height = height;\n  this.parent = null;\n};\n\nBranchChunk.prototype.chunkSize = function () { return this.size };\n\nBranchChunk.prototype.removeInner = function (at, n) {\n    var this$1 = this;\n\n  this.size -= n;\n  for (var i = 0; i < this.children.length; ++i) {\n    var child = this$1.children[i], sz = child.chunkSize();\n    if (at < sz) {\n      var rm = Math.min(n, sz - at), oldHeight = child.height;\n      child.removeInner(at, rm);\n      this$1.height -= oldHeight - child.height;\n      if (sz == rm) { this$1.children.splice(i--, 1); child.parent = null; }\n      if ((n -= rm) == 0) { break }\n      at = 0;\n    } else { at -= sz; }\n  }\n  // If the result is smaller than 25 lines, ensure that it is a\n  // single leaf node.\n  if (this.size - n < 25 &&\n      (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) {\n    var lines = [];\n    this.collapse(lines);\n    this.children = [new LeafChunk(lines)];\n    this.children[0].parent = this;\n  }\n};\n\nBranchChunk.prototype.collapse = function (lines) {\n    var this$1 = this;\n\n  for (var i = 0; i < this.children.length; ++i) { this$1.children[i].collapse(lines); }\n};\n\nBranchChunk.prototype.insertInner = function (at, lines, height) {\n    var this$1 = this;\n\n  this.size += lines.length;\n  this.height += height;\n  for (var i = 0; i < this.children.length; ++i) {\n    var child = this$1.children[i], sz = child.chunkSize();\n    if (at <= sz) {\n      child.insertInner(at, lines, height);\n      if (child.lines && child.lines.length > 50) {\n        // To avoid memory thrashing when child.lines is huge (e.g. first view of a large file), it's never spliced.\n        // Instead, small slices are taken. They're taken in order because sequential memory accesses are fastest.\n        var remaining = child.lines.length % 25 + 25;\n        for (var pos = remaining; pos < child.lines.length;) {\n          var leaf = new LeafChunk(child.lines.slice(pos, pos += 25));\n          child.height -= leaf.height;\n          this$1.children.splice(++i, 0, leaf);\n          leaf.parent = this$1;\n        }\n        child.lines = child.lines.slice(0, remaining);\n        this$1.maybeSpill();\n      }\n      break\n    }\n    at -= sz;\n  }\n};\n\n// When a node has grown, check whether it should be split.\nBranchChunk.prototype.maybeSpill = function () {\n  if (this.children.length <= 10) { return }\n  var me = this;\n  do {\n    var spilled = me.children.splice(me.children.length - 5, 5);\n    var sibling = new BranchChunk(spilled);\n    if (!me.parent) { // Become the parent node\n      var copy = new BranchChunk(me.children);\n      copy.parent = me;\n      me.children = [copy, sibling];\n      me = copy;\n   } else {\n      me.size -= sibling.size;\n      me.height -= sibling.height;\n      var myIndex = indexOf(me.parent.children, me);\n      me.parent.children.splice(myIndex + 1, 0, sibling);\n    }\n    sibling.parent = me.parent;\n  } while (me.children.length > 10)\n  me.parent.maybeSpill();\n};\n\nBranchChunk.prototype.iterN = function (at, n, op) {\n    var this$1 = this;\n\n  for (var i = 0; i < this.children.length; ++i) {\n    var child = this$1.children[i], sz = child.chunkSize();\n    if (at < sz) {\n      var used = Math.min(n, sz - at);\n      if (child.iterN(at, used, op)) { return true }\n      if ((n -= used) == 0) { break }\n      at = 0;\n    } else { at -= sz; }\n  }\n};\n\n// Line widgets are block elements displayed above or below a line.\n\nvar LineWidget = function(doc, node, options) {\n  var this$1 = this;\n\n  if (options) { for (var opt in options) { if (options.hasOwnProperty(opt))\n    { this$1[opt] = options[opt]; } } }\n  this.doc = doc;\n  this.node = node;\n};\n\nLineWidget.prototype.clear = function () {\n    var this$1 = this;\n\n  var cm = this.doc.cm, ws = this.line.widgets, line = this.line, no = lineNo(line);\n  if (no == null || !ws) { return }\n  for (var i = 0; i < ws.length; ++i) { if (ws[i] == this$1) { ws.splice(i--, 1); } }\n  if (!ws.length) { line.widgets = null; }\n  var height = widgetHeight(this);\n  updateLineHeight(line, Math.max(0, line.height - height));\n  if (cm) {\n    runInOp(cm, function () {\n      adjustScrollWhenAboveVisible(cm, line, -height);\n      regLineChange(cm, no, \"widget\");\n    });\n    signalLater(cm, \"lineWidgetCleared\", cm, this, no);\n  }\n};\n\nLineWidget.prototype.changed = function () {\n    var this$1 = this;\n\n  var oldH = this.height, cm = this.doc.cm, line = this.line;\n  this.height = null;\n  var diff = widgetHeight(this) - oldH;\n  if (!diff) { return }\n  updateLineHeight(line, line.height + diff);\n  if (cm) {\n    runInOp(cm, function () {\n      cm.curOp.forceUpdate = true;\n      adjustScrollWhenAboveVisible(cm, line, diff);\n      signalLater(cm, \"lineWidgetChanged\", cm, this$1, lineNo(line));\n    });\n  }\n};\neventMixin(LineWidget);\n\nfunction adjustScrollWhenAboveVisible(cm, line, diff) {\n  if (heightAtLine(line) < ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop))\n    { addToScrollPos(cm, null, diff); }\n}\n\nfunction addLineWidget(doc, handle, node, options) {\n  var widget = new LineWidget(doc, node, options);\n  var cm = doc.cm;\n  if (cm && widget.noHScroll) { cm.display.alignWidgets = true; }\n  changeLine(doc, handle, \"widget\", function (line) {\n    var widgets = line.widgets || (line.widgets = []);\n    if (widget.insertAt == null) { widgets.push(widget); }\n    else { widgets.splice(Math.min(widgets.length - 1, Math.max(0, widget.insertAt)), 0, widget); }\n    widget.line = line;\n    if (cm && !lineIsHidden(doc, line)) {\n      var aboveVisible = heightAtLine(line) < doc.scrollTop;\n      updateLineHeight(line, line.height + widgetHeight(widget));\n      if (aboveVisible) { addToScrollPos(cm, null, widget.height); }\n      cm.curOp.forceUpdate = true;\n    }\n    return true\n  });\n  signalLater(cm, \"lineWidgetAdded\", cm, widget, typeof handle == \"number\" ? handle : lineNo(handle));\n  return widget\n}\n\n// TEXTMARKERS\n\n// Created with markText and setBookmark methods. A TextMarker is a\n// handle that can be used to clear or find a marked position in the\n// document. Line objects hold arrays (markedSpans) containing\n// {from, to, marker} object pointing to such marker objects, and\n// indicating that such a marker is present on that line. Multiple\n// lines may point to the same marker when it spans across lines.\n// The spans will have null for their from/to properties when the\n// marker continues beyond the start/end of the line. Markers have\n// links back to the lines they currently touch.\n\n// Collapsed markers have unique ids, in order to be able to order\n// them, which is needed for uniquely determining an outer marker\n// when they overlap (they may nest, but not partially overlap).\nvar nextMarkerId = 0;\n\nvar TextMarker = function(doc, type) {\n  this.lines = [];\n  this.type = type;\n  this.doc = doc;\n  this.id = ++nextMarkerId;\n};\n\n// Clear the marker.\nTextMarker.prototype.clear = function () {\n    var this$1 = this;\n\n  if (this.explicitlyCleared) { return }\n  var cm = this.doc.cm, withOp = cm && !cm.curOp;\n  if (withOp) { startOperation(cm); }\n  if (hasHandler(this, \"clear\")) {\n    var found = this.find();\n    if (found) { signalLater(this, \"clear\", found.from, found.to); }\n  }\n  var min = null, max = null;\n  for (var i = 0; i < this.lines.length; ++i) {\n    var line = this$1.lines[i];\n    var span = getMarkedSpanFor(line.markedSpans, this$1);\n    if (cm && !this$1.collapsed) { regLineChange(cm, lineNo(line), \"text\"); }\n    else if (cm) {\n      if (span.to != null) { max = lineNo(line); }\n      if (span.from != null) { min = lineNo(line); }\n    }\n    line.markedSpans = removeMarkedSpan(line.markedSpans, span);\n    if (span.from == null && this$1.collapsed && !lineIsHidden(this$1.doc, line) && cm)\n      { updateLineHeight(line, textHeight(cm.display)); }\n  }\n  if (cm && this.collapsed && !cm.options.lineWrapping) { for (var i$1 = 0; i$1 < this.lines.length; ++i$1) {\n    var visual = visualLine(this$1.lines[i$1]), len = lineLength(visual);\n    if (len > cm.display.maxLineLength) {\n      cm.display.maxLine = visual;\n      cm.display.maxLineLength = len;\n      cm.display.maxLineChanged = true;\n    }\n  } }\n\n  if (min != null && cm && this.collapsed) { regChange(cm, min, max + 1); }\n  this.lines.length = 0;\n  this.explicitlyCleared = true;\n  if (this.atomic && this.doc.cantEdit) {\n    this.doc.cantEdit = false;\n    if (cm) { reCheckSelection(cm.doc); }\n  }\n  if (cm) { signalLater(cm, \"markerCleared\", cm, this, min, max); }\n  if (withOp) { endOperation(cm); }\n  if (this.parent) { this.parent.clear(); }\n};\n\n// Find the position of the marker in the document. Returns a {from,\n// to} object by default. Side can be passed to get a specific side\n// -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the\n// Pos objects returned contain a line object, rather than a line\n// number (used to prevent looking up the same line twice).\nTextMarker.prototype.find = function (side, lineObj) {\n    var this$1 = this;\n\n  if (side == null && this.type == \"bookmark\") { side = 1; }\n  var from, to;\n  for (var i = 0; i < this.lines.length; ++i) {\n    var line = this$1.lines[i];\n    var span = getMarkedSpanFor(line.markedSpans, this$1);\n    if (span.from != null) {\n      from = Pos(lineObj ? line : lineNo(line), span.from);\n      if (side == -1) { return from }\n    }\n    if (span.to != null) {\n      to = Pos(lineObj ? line : lineNo(line), span.to);\n      if (side == 1) { return to }\n    }\n  }\n  return from && {from: from, to: to}\n};\n\n// Signals that the marker's widget changed, and surrounding layout\n// should be recomputed.\nTextMarker.prototype.changed = function () {\n    var this$1 = this;\n\n  var pos = this.find(-1, true), widget = this, cm = this.doc.cm;\n  if (!pos || !cm) { return }\n  runInOp(cm, function () {\n    var line = pos.line, lineN = lineNo(pos.line);\n    var view = findViewForLine(cm, lineN);\n    if (view) {\n      clearLineMeasurementCacheFor(view);\n      cm.curOp.selectionChanged = cm.curOp.forceUpdate = true;\n    }\n    cm.curOp.updateMaxLine = true;\n    if (!lineIsHidden(widget.doc, line) && widget.height != null) {\n      var oldHeight = widget.height;\n      widget.height = null;\n      var dHeight = widgetHeight(widget) - oldHeight;\n      if (dHeight)\n        { updateLineHeight(line, line.height + dHeight); }\n    }\n    signalLater(cm, \"markerChanged\", cm, this$1);\n  });\n};\n\nTextMarker.prototype.attachLine = function (line) {\n  if (!this.lines.length && this.doc.cm) {\n    var op = this.doc.cm.curOp;\n    if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1)\n      { (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this); }\n  }\n  this.lines.push(line);\n};\n\nTextMarker.prototype.detachLine = function (line) {\n  this.lines.splice(indexOf(this.lines, line), 1);\n  if (!this.lines.length && this.doc.cm) {\n    var op = this.doc.cm.curOp;(op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this);\n  }\n};\neventMixin(TextMarker);\n\n// Create a marker, wire it up to the right lines, and\nfunction markText(doc, from, to, options, type) {\n  // Shared markers (across linked documents) are handled separately\n  // (markTextShared will call out to this again, once per\n  // document).\n  if (options && options.shared) { return markTextShared(doc, from, to, options, type) }\n  // Ensure we are in an operation.\n  if (doc.cm && !doc.cm.curOp) { return operation(doc.cm, markText)(doc, from, to, options, type) }\n\n  var marker = new TextMarker(doc, type), diff = cmp(from, to);\n  if (options) { copyObj(options, marker, false); }\n  // Don't connect empty markers unless clearWhenEmpty is false\n  if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false)\n    { return marker }\n  if (marker.replacedWith) {\n    // Showing up as a widget implies collapsed (widget replaces text)\n    marker.collapsed = true;\n    marker.widgetNode = eltP(\"span\", [marker.replacedWith], \"CodeMirror-widget\");\n    if (!options.handleMouseEvents) { marker.widgetNode.setAttribute(\"cm-ignore-events\", \"true\"); }\n    if (options.insertLeft) { marker.widgetNode.insertLeft = true; }\n  }\n  if (marker.collapsed) {\n    if (conflictingCollapsedRange(doc, from.line, from, to, marker) ||\n        from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker))\n      { throw new Error(\"Inserting collapsed marker partially overlapping an existing one\") }\n    seeCollapsedSpans();\n  }\n\n  if (marker.addToHistory)\n    { addChangeToHistory(doc, {from: from, to: to, origin: \"markText\"}, doc.sel, NaN); }\n\n  var curLine = from.line, cm = doc.cm, updateMaxLine;\n  doc.iter(curLine, to.line + 1, function (line) {\n    if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine)\n      { updateMaxLine = true; }\n    if (marker.collapsed && curLine != from.line) { updateLineHeight(line, 0); }\n    addMarkedSpan(line, new MarkedSpan(marker,\n                                       curLine == from.line ? from.ch : null,\n                                       curLine == to.line ? to.ch : null));\n    ++curLine;\n  });\n  // lineIsHidden depends on the presence of the spans, so needs a second pass\n  if (marker.collapsed) { doc.iter(from.line, to.line + 1, function (line) {\n    if (lineIsHidden(doc, line)) { updateLineHeight(line, 0); }\n  }); }\n\n  if (marker.clearOnEnter) { on(marker, \"beforeCursorEnter\", function () { return marker.clear(); }); }\n\n  if (marker.readOnly) {\n    seeReadOnlySpans();\n    if (doc.history.done.length || doc.history.undone.length)\n      { doc.clearHistory(); }\n  }\n  if (marker.collapsed) {\n    marker.id = ++nextMarkerId;\n    marker.atomic = true;\n  }\n  if (cm) {\n    // Sync editor state\n    if (updateMaxLine) { cm.curOp.updateMaxLine = true; }\n    if (marker.collapsed)\n      { regChange(cm, from.line, to.line + 1); }\n    else if (marker.className || marker.title || marker.startStyle || marker.endStyle || marker.css)\n      { for (var i = from.line; i <= to.line; i++) { regLineChange(cm, i, \"text\"); } }\n    if (marker.atomic) { reCheckSelection(cm.doc); }\n    signalLater(cm, \"markerAdded\", cm, marker);\n  }\n  return marker\n}\n\n// SHARED TEXTMARKERS\n\n// A shared marker spans multiple linked documents. It is\n// implemented as a meta-marker-object controlling multiple normal\n// markers.\nvar SharedTextMarker = function(markers, primary) {\n  var this$1 = this;\n\n  this.markers = markers;\n  this.primary = primary;\n  for (var i = 0; i < markers.length; ++i)\n    { markers[i].parent = this$1; }\n};\n\nSharedTextMarker.prototype.clear = function () {\n    var this$1 = this;\n\n  if (this.explicitlyCleared) { return }\n  this.explicitlyCleared = true;\n  for (var i = 0; i < this.markers.length; ++i)\n    { this$1.markers[i].clear(); }\n  signalLater(this, \"clear\");\n};\n\nSharedTextMarker.prototype.find = function (side, lineObj) {\n  return this.primary.find(side, lineObj)\n};\neventMixin(SharedTextMarker);\n\nfunction markTextShared(doc, from, to, options, type) {\n  options = copyObj(options);\n  options.shared = false;\n  var markers = [markText(doc, from, to, options, type)], primary = markers[0];\n  var widget = options.widgetNode;\n  linkedDocs(doc, function (doc) {\n    if (widget) { options.widgetNode = widget.cloneNode(true); }\n    markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type));\n    for (var i = 0; i < doc.linked.length; ++i)\n      { if (doc.linked[i].isParent) { return } }\n    primary = lst(markers);\n  });\n  return new SharedTextMarker(markers, primary)\n}\n\nfunction findSharedMarkers(doc) {\n  return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), function (m) { return m.parent; })\n}\n\nfunction copySharedMarkers(doc, markers) {\n  for (var i = 0; i < markers.length; i++) {\n    var marker = markers[i], pos = marker.find();\n    var mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to);\n    if (cmp(mFrom, mTo)) {\n      var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type);\n      marker.markers.push(subMark);\n      subMark.parent = marker;\n    }\n  }\n}\n\nfunction detachSharedMarkers(markers) {\n  var loop = function ( i ) {\n    var marker = markers[i], linked = [marker.primary.doc];\n    linkedDocs(marker.primary.doc, function (d) { return linked.push(d); });\n    for (var j = 0; j < marker.markers.length; j++) {\n      var subMarker = marker.markers[j];\n      if (indexOf(linked, subMarker.doc) == -1) {\n        subMarker.parent = null;\n        marker.markers.splice(j--, 1);\n      }\n    }\n  };\n\n  for (var i = 0; i < markers.length; i++) loop( i );\n}\n\nvar nextDocId = 0;\nvar Doc = function(text, mode, firstLine, lineSep, direction) {\n  if (!(this instanceof Doc)) { return new Doc(text, mode, firstLine, lineSep, direction) }\n  if (firstLine == null) { firstLine = 0; }\n\n  BranchChunk.call(this, [new LeafChunk([new Line(\"\", null)])]);\n  this.first = firstLine;\n  this.scrollTop = this.scrollLeft = 0;\n  this.cantEdit = false;\n  this.cleanGeneration = 1;\n  this.frontier = firstLine;\n  var start = Pos(firstLine, 0);\n  this.sel = simpleSelection(start);\n  this.history = new History(null);\n  this.id = ++nextDocId;\n  this.modeOption = mode;\n  this.lineSep = lineSep;\n  this.direction = (direction == \"rtl\") ? \"rtl\" : \"ltr\";\n  this.extend = false;\n\n  if (typeof text == \"string\") { text = this.splitLines(text); }\n  updateDoc(this, {from: start, to: start, text: text});\n  setSelection(this, simpleSelection(start), sel_dontScroll);\n};\n\nDoc.prototype = createObj(BranchChunk.prototype, {\n  constructor: Doc,\n  // Iterate over the document. Supports two forms -- with only one\n  // argument, it calls that for each line in the document. With\n  // three, it iterates over the range given by the first two (with\n  // the second being non-inclusive).\n  iter: function(from, to, op) {\n    if (op) { this.iterN(from - this.first, to - from, op); }\n    else { this.iterN(this.first, this.first + this.size, from); }\n  },\n\n  // Non-public interface for adding and removing lines.\n  insert: function(at, lines) {\n    var height = 0;\n    for (var i = 0; i < lines.length; ++i) { height += lines[i].height; }\n    this.insertInner(at - this.first, lines, height);\n  },\n  remove: function(at, n) { this.removeInner(at - this.first, n); },\n\n  // From here, the methods are part of the public interface. Most\n  // are also available from CodeMirror (editor) instances.\n\n  getValue: function(lineSep) {\n    var lines = getLines(this, this.first, this.first + this.size);\n    if (lineSep === false) { return lines }\n    return lines.join(lineSep || this.lineSeparator())\n  },\n  setValue: docMethodOp(function(code) {\n    var top = Pos(this.first, 0), last = this.first + this.size - 1;\n    makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length),\n                      text: this.splitLines(code), origin: \"setValue\", full: true}, true);\n    if (this.cm) { this.cm.scrollTo(0, 0); }\n    setSelection(this, simpleSelection(top), sel_dontScroll);\n  }),\n  replaceRange: function(code, from, to, origin) {\n    from = clipPos(this, from);\n    to = to ? clipPos(this, to) : from;\n    replaceRange(this, code, from, to, origin);\n  },\n  getRange: function(from, to, lineSep) {\n    var lines = getBetween(this, clipPos(this, from), clipPos(this, to));\n    if (lineSep === false) { return lines }\n    return lines.join(lineSep || this.lineSeparator())\n  },\n\n  getLine: function(line) {var l = this.getLineHandle(line); return l && l.text},\n\n  getLineHandle: function(line) {if (isLine(this, line)) { return getLine(this, line) }},\n  getLineNumber: function(line) {return lineNo(line)},\n\n  getLineHandleVisualStart: function(line) {\n    if (typeof line == \"number\") { line = getLine(this, line); }\n    return visualLine(line)\n  },\n\n  lineCount: function() {return this.size},\n  firstLine: function() {return this.first},\n  lastLine: function() {return this.first + this.size - 1},\n\n  clipPos: function(pos) {return clipPos(this, pos)},\n\n  getCursor: function(start) {\n    var range$$1 = this.sel.primary(), pos;\n    if (start == null || start == \"head\") { pos = range$$1.head; }\n    else if (start == \"anchor\") { pos = range$$1.anchor; }\n    else if (start == \"end\" || start == \"to\" || start === false) { pos = range$$1.to(); }\n    else { pos = range$$1.from(); }\n    return pos\n  },\n  listSelections: function() { return this.sel.ranges },\n  somethingSelected: function() {return this.sel.somethingSelected()},\n\n  setCursor: docMethodOp(function(line, ch, options) {\n    setSimpleSelection(this, clipPos(this, typeof line == \"number\" ? Pos(line, ch || 0) : line), null, options);\n  }),\n  setSelection: docMethodOp(function(anchor, head, options) {\n    setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options);\n  }),\n  extendSelection: docMethodOp(function(head, other, options) {\n    extendSelection(this, clipPos(this, head), other && clipPos(this, other), options);\n  }),\n  extendSelections: docMethodOp(function(heads, options) {\n    extendSelections(this, clipPosArray(this, heads), options);\n  }),\n  extendSelectionsBy: docMethodOp(function(f, options) {\n    var heads = map(this.sel.ranges, f);\n    extendSelections(this, clipPosArray(this, heads), options);\n  }),\n  setSelections: docMethodOp(function(ranges, primary, options) {\n    var this$1 = this;\n\n    if (!ranges.length) { return }\n    var out = [];\n    for (var i = 0; i < ranges.length; i++)\n      { out[i] = new Range(clipPos(this$1, ranges[i].anchor),\n                         clipPos(this$1, ranges[i].head)); }\n    if (primary == null) { primary = Math.min(ranges.length - 1, this.sel.primIndex); }\n    setSelection(this, normalizeSelection(out, primary), options);\n  }),\n  addSelection: docMethodOp(function(anchor, head, options) {\n    var ranges = this.sel.ranges.slice(0);\n    ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor)));\n    setSelection(this, normalizeSelection(ranges, ranges.length - 1), options);\n  }),\n\n  getSelection: function(lineSep) {\n    var this$1 = this;\n\n    var ranges = this.sel.ranges, lines;\n    for (var i = 0; i < ranges.length; i++) {\n      var sel = getBetween(this$1, ranges[i].from(), ranges[i].to());\n      lines = lines ? lines.concat(sel) : sel;\n    }\n    if (lineSep === false) { return lines }\n    else { return lines.join(lineSep || this.lineSeparator()) }\n  },\n  getSelections: function(lineSep) {\n    var this$1 = this;\n\n    var parts = [], ranges = this.sel.ranges;\n    for (var i = 0; i < ranges.length; i++) {\n      var sel = getBetween(this$1, ranges[i].from(), ranges[i].to());\n      if (lineSep !== false) { sel = sel.join(lineSep || this$1.lineSeparator()); }\n      parts[i] = sel;\n    }\n    return parts\n  },\n  replaceSelection: function(code, collapse, origin) {\n    var dup = [];\n    for (var i = 0; i < this.sel.ranges.length; i++)\n      { dup[i] = code; }\n    this.replaceSelections(dup, collapse, origin || \"+input\");\n  },\n  replaceSelections: docMethodOp(function(code, collapse, origin) {\n    var this$1 = this;\n\n    var changes = [], sel = this.sel;\n    for (var i = 0; i < sel.ranges.length; i++) {\n      var range$$1 = sel.ranges[i];\n      changes[i] = {from: range$$1.from(), to: range$$1.to(), text: this$1.splitLines(code[i]), origin: origin};\n    }\n    var newSel = collapse && collapse != \"end\" && computeReplacedSel(this, changes, collapse);\n    for (var i$1 = changes.length - 1; i$1 >= 0; i$1--)\n      { makeChange(this$1, changes[i$1]); }\n    if (newSel) { setSelectionReplaceHistory(this, newSel); }\n    else if (this.cm) { ensureCursorVisible(this.cm); }\n  }),\n  undo: docMethodOp(function() {makeChangeFromHistory(this, \"undo\");}),\n  redo: docMethodOp(function() {makeChangeFromHistory(this, \"redo\");}),\n  undoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"undo\", true);}),\n  redoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"redo\", true);}),\n\n  setExtending: function(val) {this.extend = val;},\n  getExtending: function() {return this.extend},\n\n  historySize: function() {\n    var hist = this.history, done = 0, undone = 0;\n    for (var i = 0; i < hist.done.length; i++) { if (!hist.done[i].ranges) { ++done; } }\n    for (var i$1 = 0; i$1 < hist.undone.length; i$1++) { if (!hist.undone[i$1].ranges) { ++undone; } }\n    return {undo: done, redo: undone}\n  },\n  clearHistory: function() {this.history = new History(this.history.maxGeneration);},\n\n  markClean: function() {\n    this.cleanGeneration = this.changeGeneration(true);\n  },\n  changeGeneration: function(forceSplit) {\n    if (forceSplit)\n      { this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null; }\n    return this.history.generation\n  },\n  isClean: function (gen) {\n    return this.history.generation == (gen || this.cleanGeneration)\n  },\n\n  getHistory: function() {\n    return {done: copyHistoryArray(this.history.done),\n            undone: copyHistoryArray(this.history.undone)}\n  },\n  setHistory: function(histData) {\n    var hist = this.history = new History(this.history.maxGeneration);\n    hist.done = copyHistoryArray(histData.done.slice(0), null, true);\n    hist.undone = copyHistoryArray(histData.undone.slice(0), null, true);\n  },\n\n  setGutterMarker: docMethodOp(function(line, gutterID, value) {\n    return changeLine(this, line, \"gutter\", function (line) {\n      var markers = line.gutterMarkers || (line.gutterMarkers = {});\n      markers[gutterID] = value;\n      if (!value && isEmpty(markers)) { line.gutterMarkers = null; }\n      return true\n    })\n  }),\n\n  clearGutter: docMethodOp(function(gutterID) {\n    var this$1 = this;\n\n    this.iter(function (line) {\n      if (line.gutterMarkers && line.gutterMarkers[gutterID]) {\n        changeLine(this$1, line, \"gutter\", function () {\n          line.gutterMarkers[gutterID] = null;\n          if (isEmpty(line.gutterMarkers)) { line.gutterMarkers = null; }\n          return true\n        });\n      }\n    });\n  }),\n\n  lineInfo: function(line) {\n    var n;\n    if (typeof line == \"number\") {\n      if (!isLine(this, line)) { return null }\n      n = line;\n      line = getLine(this, line);\n      if (!line) { return null }\n    } else {\n      n = lineNo(line);\n      if (n == null) { return null }\n    }\n    return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers,\n            textClass: line.textClass, bgClass: line.bgClass, wrapClass: line.wrapClass,\n            widgets: line.widgets}\n  },\n\n  addLineClass: docMethodOp(function(handle, where, cls) {\n    return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n      var prop = where == \"text\" ? \"textClass\"\n               : where == \"background\" ? \"bgClass\"\n               : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n      if (!line[prop]) { line[prop] = cls; }\n      else if (classTest(cls).test(line[prop])) { return false }\n      else { line[prop] += \" \" + cls; }\n      return true\n    })\n  }),\n  removeLineClass: docMethodOp(function(handle, where, cls) {\n    return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n      var prop = where == \"text\" ? \"textClass\"\n               : where == \"background\" ? \"bgClass\"\n               : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n      var cur = line[prop];\n      if (!cur) { return false }\n      else if (cls == null) { line[prop] = null; }\n      else {\n        var found = cur.match(classTest(cls));\n        if (!found) { return false }\n        var end = found.index + found[0].length;\n        line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? \"\" : \" \") + cur.slice(end) || null;\n      }\n      return true\n    })\n  }),\n\n  addLineWidget: docMethodOp(function(handle, node, options) {\n    return addLineWidget(this, handle, node, options)\n  }),\n  removeLineWidget: function(widget) { widget.clear(); },\n\n  markText: function(from, to, options) {\n    return markText(this, clipPos(this, from), clipPos(this, to), options, options && options.type || \"range\")\n  },\n  setBookmark: function(pos, options) {\n    var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options),\n                    insertLeft: options && options.insertLeft,\n                    clearWhenEmpty: false, shared: options && options.shared,\n                    handleMouseEvents: options && options.handleMouseEvents};\n    pos = clipPos(this, pos);\n    return markText(this, pos, pos, realOpts, \"bookmark\")\n  },\n  findMarksAt: function(pos) {\n    pos = clipPos(this, pos);\n    var markers = [], spans = getLine(this, pos.line).markedSpans;\n    if (spans) { for (var i = 0; i < spans.length; ++i) {\n      var span = spans[i];\n      if ((span.from == null || span.from <= pos.ch) &&\n          (span.to == null || span.to >= pos.ch))\n        { markers.push(span.marker.parent || span.marker); }\n    } }\n    return markers\n  },\n  findMarks: function(from, to, filter) {\n    from = clipPos(this, from); to = clipPos(this, to);\n    var found = [], lineNo$$1 = from.line;\n    this.iter(from.line, to.line + 1, function (line) {\n      var spans = line.markedSpans;\n      if (spans) { for (var i = 0; i < spans.length; i++) {\n        var span = spans[i];\n        if (!(span.to != null && lineNo$$1 == from.line && from.ch >= span.to ||\n              span.from == null && lineNo$$1 != from.line ||\n              span.from != null && lineNo$$1 == to.line && span.from >= to.ch) &&\n            (!filter || filter(span.marker)))\n          { found.push(span.marker.parent || span.marker); }\n      } }\n      ++lineNo$$1;\n    });\n    return found\n  },\n  getAllMarks: function() {\n    var markers = [];\n    this.iter(function (line) {\n      var sps = line.markedSpans;\n      if (sps) { for (var i = 0; i < sps.length; ++i)\n        { if (sps[i].from != null) { markers.push(sps[i].marker); } } }\n    });\n    return markers\n  },\n\n  posFromIndex: function(off) {\n    var ch, lineNo$$1 = this.first, sepSize = this.lineSeparator().length;\n    this.iter(function (line) {\n      var sz = line.text.length + sepSize;\n      if (sz > off) { ch = off; return true }\n      off -= sz;\n      ++lineNo$$1;\n    });\n    return clipPos(this, Pos(lineNo$$1, ch))\n  },\n  indexFromPos: function (coords) {\n    coords = clipPos(this, coords);\n    var index = coords.ch;\n    if (coords.line < this.first || coords.ch < 0) { return 0 }\n    var sepSize = this.lineSeparator().length;\n    this.iter(this.first, coords.line, function (line) { // iter aborts when callback returns a truthy value\n      index += line.text.length + sepSize;\n    });\n    return index\n  },\n\n  copy: function(copyHistory) {\n    var doc = new Doc(getLines(this, this.first, this.first + this.size),\n                      this.modeOption, this.first, this.lineSep, this.direction);\n    doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft;\n    doc.sel = this.sel;\n    doc.extend = false;\n    if (copyHistory) {\n      doc.history.undoDepth = this.history.undoDepth;\n      doc.setHistory(this.getHistory());\n    }\n    return doc\n  },\n\n  linkedDoc: function(options) {\n    if (!options) { options = {}; }\n    var from = this.first, to = this.first + this.size;\n    if (options.from != null && options.from > from) { from = options.from; }\n    if (options.to != null && options.to < to) { to = options.to; }\n    var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep, this.direction);\n    if (options.sharedHist) { copy.history = this.history\n    ; }(this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist});\n    copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}];\n    copySharedMarkers(copy, findSharedMarkers(this));\n    return copy\n  },\n  unlinkDoc: function(other) {\n    var this$1 = this;\n\n    if (other instanceof CodeMirror$1) { other = other.doc; }\n    if (this.linked) { for (var i = 0; i < this.linked.length; ++i) {\n      var link = this$1.linked[i];\n      if (link.doc != other) { continue }\n      this$1.linked.splice(i, 1);\n      other.unlinkDoc(this$1);\n      detachSharedMarkers(findSharedMarkers(this$1));\n      break\n    } }\n    // If the histories were shared, split them again\n    if (other.history == this.history) {\n      var splitIds = [other.id];\n      linkedDocs(other, function (doc) { return splitIds.push(doc.id); }, true);\n      other.history = new History(null);\n      other.history.done = copyHistoryArray(this.history.done, splitIds);\n      other.history.undone = copyHistoryArray(this.history.undone, splitIds);\n    }\n  },\n  iterLinkedDocs: function(f) {linkedDocs(this, f);},\n\n  getMode: function() {return this.mode},\n  getEditor: function() {return this.cm},\n\n  splitLines: function(str) {\n    if (this.lineSep) { return str.split(this.lineSep) }\n    return splitLinesAuto(str)\n  },\n  lineSeparator: function() { return this.lineSep || \"\\n\" },\n\n  setDirection: docMethodOp(function (dir) {\n    if (dir != \"rtl\") { dir = \"ltr\"; }\n    if (dir == this.direction) { return }\n    this.direction = dir;\n    this.iter(function (line) { return line.order = null; });\n    if (this.cm) { directionChanged(this.cm); }\n  })\n});\n\n// Public alias.\nDoc.prototype.eachLine = Doc.prototype.iter;\n\n// Kludge to work around strange IE behavior where it'll sometimes\n// re-fire a series of drag-related events right after the drop (#1551)\nvar lastDrop = 0;\n\nfunction onDrop(e) {\n  var cm = this;\n  clearDragCursor(cm);\n  if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e))\n    { return }\n  e_preventDefault(e);\n  if (ie) { lastDrop = +new Date; }\n  var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files;\n  if (!pos || cm.isReadOnly()) { return }\n  // Might be a file drop, in which case we simply extract the text\n  // and insert it.\n  if (files && files.length && window.FileReader && window.File) {\n    var n = files.length, text = Array(n), read = 0;\n    var loadFile = function (file, i) {\n      if (cm.options.allowDropFileTypes &&\n          indexOf(cm.options.allowDropFileTypes, file.type) == -1)\n        { return }\n\n      var reader = new FileReader;\n      reader.onload = operation(cm, function () {\n        var content = reader.result;\n        if (/[\\x00-\\x08\\x0e-\\x1f]{2}/.test(content)) { content = \"\"; }\n        text[i] = content;\n        if (++read == n) {\n          pos = clipPos(cm.doc, pos);\n          var change = {from: pos, to: pos,\n                        text: cm.doc.splitLines(text.join(cm.doc.lineSeparator())),\n                        origin: \"paste\"};\n          makeChange(cm.doc, change);\n          setSelectionReplaceHistory(cm.doc, simpleSelection(pos, changeEnd(change)));\n        }\n      });\n      reader.readAsText(file);\n    };\n    for (var i = 0; i < n; ++i) { loadFile(files[i], i); }\n  } else { // Normal drop\n    // Don't do a replace if the drop happened inside of the selected text.\n    if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) {\n      cm.state.draggingText(e);\n      // Ensure the editor is re-focused\n      setTimeout(function () { return cm.display.input.focus(); }, 20);\n      return\n    }\n    try {\n      var text$1 = e.dataTransfer.getData(\"Text\");\n      if (text$1) {\n        var selected;\n        if (cm.state.draggingText && !cm.state.draggingText.copy)\n          { selected = cm.listSelections(); }\n        setSelectionNoUndo(cm.doc, simpleSelection(pos, pos));\n        if (selected) { for (var i$1 = 0; i$1 < selected.length; ++i$1)\n          { replaceRange(cm.doc, \"\", selected[i$1].anchor, selected[i$1].head, \"drag\"); } }\n        cm.replaceSelection(text$1, \"around\", \"paste\");\n        cm.display.input.focus();\n      }\n    }\n    catch(e){}\n  }\n}\n\nfunction onDragStart(cm, e) {\n  if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return }\n  if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) { return }\n\n  e.dataTransfer.setData(\"Text\", cm.getSelection());\n  e.dataTransfer.effectAllowed = \"copyMove\";\n\n  // Use dummy image instead of default browsers image.\n  // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there.\n  if (e.dataTransfer.setDragImage && !safari) {\n    var img = elt(\"img\", null, null, \"position: fixed; left: 0; top: 0;\");\n    img.src = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n    if (presto) {\n      img.width = img.height = 1;\n      cm.display.wrapper.appendChild(img);\n      // Force a relayout, or Opera won't use our image for some obscure reason\n      img._top = img.offsetTop;\n    }\n    e.dataTransfer.setDragImage(img, 0, 0);\n    if (presto) { img.parentNode.removeChild(img); }\n  }\n}\n\nfunction onDragOver(cm, e) {\n  var pos = posFromMouse(cm, e);\n  if (!pos) { return }\n  var frag = document.createDocumentFragment();\n  drawSelectionCursor(cm, pos, frag);\n  if (!cm.display.dragCursor) {\n    cm.display.dragCursor = elt(\"div\", null, \"CodeMirror-cursors CodeMirror-dragcursors\");\n    cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv);\n  }\n  removeChildrenAndAdd(cm.display.dragCursor, frag);\n}\n\nfunction clearDragCursor(cm) {\n  if (cm.display.dragCursor) {\n    cm.display.lineSpace.removeChild(cm.display.dragCursor);\n    cm.display.dragCursor = null;\n  }\n}\n\n// These must be handled carefully, because naively registering a\n// handler for each editor will cause the editors to never be\n// garbage collected.\n\nfunction forEachCodeMirror(f) {\n  if (!document.body.getElementsByClassName) { return }\n  var byClass = document.body.getElementsByClassName(\"CodeMirror\");\n  for (var i = 0; i < byClass.length; i++) {\n    var cm = byClass[i].CodeMirror;\n    if (cm) { f(cm); }\n  }\n}\n\nvar globalsRegistered = false;\nfunction ensureGlobalHandlers() {\n  if (globalsRegistered) { return }\n  registerGlobalHandlers();\n  globalsRegistered = true;\n}\nfunction registerGlobalHandlers() {\n  // When the window resizes, we need to refresh active editors.\n  var resizeTimer;\n  on(window, \"resize\", function () {\n    if (resizeTimer == null) { resizeTimer = setTimeout(function () {\n      resizeTimer = null;\n      forEachCodeMirror(onResize);\n    }, 100); }\n  });\n  // When the window loses focus, we want to show the editor as blurred\n  on(window, \"blur\", function () { return forEachCodeMirror(onBlur); });\n}\n// Called when the window resizes\nfunction onResize(cm) {\n  var d = cm.display;\n  if (d.lastWrapHeight == d.wrapper.clientHeight && d.lastWrapWidth == d.wrapper.clientWidth)\n    { return }\n  // Might be a text scaling operation, clear size caches.\n  d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n  d.scrollbarsClipped = false;\n  cm.setSize();\n}\n\nvar keyNames = {\n  3: \"Enter\", 8: \"Backspace\", 9: \"Tab\", 13: \"Enter\", 16: \"Shift\", 17: \"Ctrl\", 18: \"Alt\",\n  19: \"Pause\", 20: \"CapsLock\", 27: \"Esc\", 32: \"Space\", 33: \"PageUp\", 34: \"PageDown\", 35: \"End\",\n  36: \"Home\", 37: \"Left\", 38: \"Up\", 39: \"Right\", 40: \"Down\", 44: \"PrintScrn\", 45: \"Insert\",\n  46: \"Delete\", 59: \";\", 61: \"=\", 91: \"Mod\", 92: \"Mod\", 93: \"Mod\",\n  106: \"*\", 107: \"=\", 109: \"-\", 110: \".\", 111: \"/\", 127: \"Delete\",\n  173: \"-\", 186: \";\", 187: \"=\", 188: \",\", 189: \"-\", 190: \".\", 191: \"/\", 192: \"`\", 219: \"[\", 220: \"\\\\\",\n  221: \"]\", 222: \"'\", 63232: \"Up\", 63233: \"Down\", 63234: \"Left\", 63235: \"Right\", 63272: \"Delete\",\n  63273: \"Home\", 63275: \"End\", 63276: \"PageUp\", 63277: \"PageDown\", 63302: \"Insert\"\n};\n\n// Number keys\nfor (var i = 0; i < 10; i++) { keyNames[i + 48] = keyNames[i + 96] = String(i); }\n// Alphabetic keys\nfor (var i$1 = 65; i$1 <= 90; i$1++) { keyNames[i$1] = String.fromCharCode(i$1); }\n// Function keys\nfor (var i$2 = 1; i$2 <= 12; i$2++) { keyNames[i$2 + 111] = keyNames[i$2 + 63235] = \"F\" + i$2; }\n\nvar keyMap = {};\n\nkeyMap.basic = {\n  \"Left\": \"goCharLeft\", \"Right\": \"goCharRight\", \"Up\": \"goLineUp\", \"Down\": \"goLineDown\",\n  \"End\": \"goLineEnd\", \"Home\": \"goLineStartSmart\", \"PageUp\": \"goPageUp\", \"PageDown\": \"goPageDown\",\n  \"Delete\": \"delCharAfter\", \"Backspace\": \"delCharBefore\", \"Shift-Backspace\": \"delCharBefore\",\n  \"Tab\": \"defaultTab\", \"Shift-Tab\": \"indentAuto\",\n  \"Enter\": \"newlineAndIndent\", \"Insert\": \"toggleOverwrite\",\n  \"Esc\": \"singleSelection\"\n};\n// Note that the save and find-related commands aren't defined by\n// default. User code or addons can define them. Unknown commands\n// are simply ignored.\nkeyMap.pcDefault = {\n  \"Ctrl-A\": \"selectAll\", \"Ctrl-D\": \"deleteLine\", \"Ctrl-Z\": \"undo\", \"Shift-Ctrl-Z\": \"redo\", \"Ctrl-Y\": \"redo\",\n  \"Ctrl-Home\": \"goDocStart\", \"Ctrl-End\": \"goDocEnd\", \"Ctrl-Up\": \"goLineUp\", \"Ctrl-Down\": \"goLineDown\",\n  \"Ctrl-Left\": \"goGroupLeft\", \"Ctrl-Right\": \"goGroupRight\", \"Alt-Left\": \"goLineStart\", \"Alt-Right\": \"goLineEnd\",\n  \"Ctrl-Backspace\": \"delGroupBefore\", \"Ctrl-Delete\": \"delGroupAfter\", \"Ctrl-S\": \"save\", \"Ctrl-F\": \"find\",\n  \"Ctrl-G\": \"findNext\", \"Shift-Ctrl-G\": \"findPrev\", \"Shift-Ctrl-F\": \"replace\", \"Shift-Ctrl-R\": \"replaceAll\",\n  \"Ctrl-[\": \"indentLess\", \"Ctrl-]\": \"indentMore\",\n  \"Ctrl-U\": \"undoSelection\", \"Shift-Ctrl-U\": \"redoSelection\", \"Alt-U\": \"redoSelection\",\n  fallthrough: \"basic\"\n};\n// Very basic readline/emacs-style bindings, which are standard on Mac.\nkeyMap.emacsy = {\n  \"Ctrl-F\": \"goCharRight\", \"Ctrl-B\": \"goCharLeft\", \"Ctrl-P\": \"goLineUp\", \"Ctrl-N\": \"goLineDown\",\n  \"Alt-F\": \"goWordRight\", \"Alt-B\": \"goWordLeft\", \"Ctrl-A\": \"goLineStart\", \"Ctrl-E\": \"goLineEnd\",\n  \"Ctrl-V\": \"goPageDown\", \"Shift-Ctrl-V\": \"goPageUp\", \"Ctrl-D\": \"delCharAfter\", \"Ctrl-H\": \"delCharBefore\",\n  \"Alt-D\": \"delWordAfter\", \"Alt-Backspace\": \"delWordBefore\", \"Ctrl-K\": \"killLine\", \"Ctrl-T\": \"transposeChars\",\n  \"Ctrl-O\": \"openLine\"\n};\nkeyMap.macDefault = {\n  \"Cmd-A\": \"selectAll\", \"Cmd-D\": \"deleteLine\", \"Cmd-Z\": \"undo\", \"Shift-Cmd-Z\": \"redo\", \"Cmd-Y\": \"redo\",\n  \"Cmd-Home\": \"goDocStart\", \"Cmd-Up\": \"goDocStart\", \"Cmd-End\": \"goDocEnd\", \"Cmd-Down\": \"goDocEnd\", \"Alt-Left\": \"goGroupLeft\",\n  \"Alt-Right\": \"goGroupRight\", \"Cmd-Left\": \"goLineLeft\", \"Cmd-Right\": \"goLineRight\", \"Alt-Backspace\": \"delGroupBefore\",\n  \"Ctrl-Alt-Backspace\": \"delGroupAfter\", \"Alt-Delete\": \"delGroupAfter\", \"Cmd-S\": \"save\", \"Cmd-F\": \"find\",\n  \"Cmd-G\": \"findNext\", \"Shift-Cmd-G\": \"findPrev\", \"Cmd-Alt-F\": \"replace\", \"Shift-Cmd-Alt-F\": \"replaceAll\",\n  \"Cmd-[\": \"indentLess\", \"Cmd-]\": \"indentMore\", \"Cmd-Backspace\": \"delWrappedLineLeft\", \"Cmd-Delete\": \"delWrappedLineRight\",\n  \"Cmd-U\": \"undoSelection\", \"Shift-Cmd-U\": \"redoSelection\", \"Ctrl-Up\": \"goDocStart\", \"Ctrl-Down\": \"goDocEnd\",\n  fallthrough: [\"basic\", \"emacsy\"]\n};\nkeyMap[\"default\"] = mac ? keyMap.macDefault : keyMap.pcDefault;\n\n// KEYMAP DISPATCH\n\nfunction normalizeKeyName(name) {\n  var parts = name.split(/-(?!$)/);\n  name = parts[parts.length - 1];\n  var alt, ctrl, shift, cmd;\n  for (var i = 0; i < parts.length - 1; i++) {\n    var mod = parts[i];\n    if (/^(cmd|meta|m)$/i.test(mod)) { cmd = true; }\n    else if (/^a(lt)?$/i.test(mod)) { alt = true; }\n    else if (/^(c|ctrl|control)$/i.test(mod)) { ctrl = true; }\n    else if (/^s(hift)?$/i.test(mod)) { shift = true; }\n    else { throw new Error(\"Unrecognized modifier name: \" + mod) }\n  }\n  if (alt) { name = \"Alt-\" + name; }\n  if (ctrl) { name = \"Ctrl-\" + name; }\n  if (cmd) { name = \"Cmd-\" + name; }\n  if (shift) { name = \"Shift-\" + name; }\n  return name\n}\n\n// This is a kludge to keep keymaps mostly working as raw objects\n// (backwards compatibility) while at the same time support features\n// like normalization and multi-stroke key bindings. It compiles a\n// new normalized keymap, and then updates the old object to reflect\n// this.\nfunction normalizeKeyMap(keymap) {\n  var copy = {};\n  for (var keyname in keymap) { if (keymap.hasOwnProperty(keyname)) {\n    var value = keymap[keyname];\n    if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) { continue }\n    if (value == \"...\") { delete keymap[keyname]; continue }\n\n    var keys = map(keyname.split(\" \"), normalizeKeyName);\n    for (var i = 0; i < keys.length; i++) {\n      var val = (void 0), name = (void 0);\n      if (i == keys.length - 1) {\n        name = keys.join(\" \");\n        val = value;\n      } else {\n        name = keys.slice(0, i + 1).join(\" \");\n        val = \"...\";\n      }\n      var prev = copy[name];\n      if (!prev) { copy[name] = val; }\n      else if (prev != val) { throw new Error(\"Inconsistent bindings for \" + name) }\n    }\n    delete keymap[keyname];\n  } }\n  for (var prop in copy) { keymap[prop] = copy[prop]; }\n  return keymap\n}\n\nfunction lookupKey(key, map$$1, handle, context) {\n  map$$1 = getKeyMap(map$$1);\n  var found = map$$1.call ? map$$1.call(key, context) : map$$1[key];\n  if (found === false) { return \"nothing\" }\n  if (found === \"...\") { return \"multi\" }\n  if (found != null && handle(found)) { return \"handled\" }\n\n  if (map$$1.fallthrough) {\n    if (Object.prototype.toString.call(map$$1.fallthrough) != \"[object Array]\")\n      { return lookupKey(key, map$$1.fallthrough, handle, context) }\n    for (var i = 0; i < map$$1.fallthrough.length; i++) {\n      var result = lookupKey(key, map$$1.fallthrough[i], handle, context);\n      if (result) { return result }\n    }\n  }\n}\n\n// Modifier key presses don't count as 'real' key presses for the\n// purpose of keymap fallthrough.\nfunction isModifierKey(value) {\n  var name = typeof value == \"string\" ? value : keyNames[value.keyCode];\n  return name == \"Ctrl\" || name == \"Alt\" || name == \"Shift\" || name == \"Mod\"\n}\n\n// Look up the name of a key as indicated by an event object.\nfunction keyName(event, noShift) {\n  if (presto && event.keyCode == 34 && event[\"char\"]) { return false }\n  var base = keyNames[event.keyCode], name = base;\n  if (name == null || event.altGraphKey) { return false }\n  if (event.altKey && base != \"Alt\") { name = \"Alt-\" + name; }\n  if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != \"Ctrl\") { name = \"Ctrl-\" + name; }\n  if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != \"Cmd\") { name = \"Cmd-\" + name; }\n  if (!noShift && event.shiftKey && base != \"Shift\") { name = \"Shift-\" + name; }\n  return name\n}\n\nfunction getKeyMap(val) {\n  return typeof val == \"string\" ? keyMap[val] : val\n}\n\n// Helper for deleting text near the selection(s), used to implement\n// backspace, delete, and similar functionality.\nfunction deleteNearSelection(cm, compute) {\n  var ranges = cm.doc.sel.ranges, kill = [];\n  // Build up a set of ranges to kill first, merging overlapping\n  // ranges.\n  for (var i = 0; i < ranges.length; i++) {\n    var toKill = compute(ranges[i]);\n    while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) {\n      var replaced = kill.pop();\n      if (cmp(replaced.from, toKill.from) < 0) {\n        toKill.from = replaced.from;\n        break\n      }\n    }\n    kill.push(toKill);\n  }\n  // Next, remove those actual ranges.\n  runInOp(cm, function () {\n    for (var i = kill.length - 1; i >= 0; i--)\n      { replaceRange(cm.doc, \"\", kill[i].from, kill[i].to, \"+delete\"); }\n    ensureCursorVisible(cm);\n  });\n}\n\n// Commands are parameter-less actions that can be performed on an\n// editor, mostly used for keybindings.\nvar commands = {\n  selectAll: selectAll,\n  singleSelection: function (cm) { return cm.setSelection(cm.getCursor(\"anchor\"), cm.getCursor(\"head\"), sel_dontScroll); },\n  killLine: function (cm) { return deleteNearSelection(cm, function (range) {\n    if (range.empty()) {\n      var len = getLine(cm.doc, range.head.line).text.length;\n      if (range.head.ch == len && range.head.line < cm.lastLine())\n        { return {from: range.head, to: Pos(range.head.line + 1, 0)} }\n      else\n        { return {from: range.head, to: Pos(range.head.line, len)} }\n    } else {\n      return {from: range.from(), to: range.to()}\n    }\n  }); },\n  deleteLine: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n    from: Pos(range.from().line, 0),\n    to: clipPos(cm.doc, Pos(range.to().line + 1, 0))\n  }); }); },\n  delLineLeft: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n    from: Pos(range.from().line, 0), to: range.from()\n  }); }); },\n  delWrappedLineLeft: function (cm) { return deleteNearSelection(cm, function (range) {\n    var top = cm.charCoords(range.head, \"div\").top + 5;\n    var leftPos = cm.coordsChar({left: 0, top: top}, \"div\");\n    return {from: leftPos, to: range.from()}\n  }); },\n  delWrappedLineRight: function (cm) { return deleteNearSelection(cm, function (range) {\n    var top = cm.charCoords(range.head, \"div\").top + 5;\n    var rightPos = cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\");\n    return {from: range.from(), to: rightPos }\n  }); },\n  undo: function (cm) { return cm.undo(); },\n  redo: function (cm) { return cm.redo(); },\n  undoSelection: function (cm) { return cm.undoSelection(); },\n  redoSelection: function (cm) { return cm.redoSelection(); },\n  goDocStart: function (cm) { return cm.extendSelection(Pos(cm.firstLine(), 0)); },\n  goDocEnd: function (cm) { return cm.extendSelection(Pos(cm.lastLine())); },\n  goLineStart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStart(cm, range.head.line); },\n    {origin: \"+move\", bias: 1}\n  ); },\n  goLineStartSmart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStartSmart(cm, range.head); },\n    {origin: \"+move\", bias: 1}\n  ); },\n  goLineEnd: function (cm) { return cm.extendSelectionsBy(function (range) { return lineEnd(cm, range.head.line); },\n    {origin: \"+move\", bias: -1}\n  ); },\n  goLineRight: function (cm) { return cm.extendSelectionsBy(function (range) {\n    var top = cm.charCoords(range.head, \"div\").top + 5;\n    return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\")\n  }, sel_move); },\n  goLineLeft: function (cm) { return cm.extendSelectionsBy(function (range) {\n    var top = cm.charCoords(range.head, \"div\").top + 5;\n    return cm.coordsChar({left: 0, top: top}, \"div\")\n  }, sel_move); },\n  goLineLeftSmart: function (cm) { return cm.extendSelectionsBy(function (range) {\n    var top = cm.charCoords(range.head, \"div\").top + 5;\n    var pos = cm.coordsChar({left: 0, top: top}, \"div\");\n    if (pos.ch < cm.getLine(pos.line).search(/\\S/)) { return lineStartSmart(cm, range.head) }\n    return pos\n  }, sel_move); },\n  goLineUp: function (cm) { return cm.moveV(-1, \"line\"); },\n  goLineDown: function (cm) { return cm.moveV(1, \"line\"); },\n  goPageUp: function (cm) { return cm.moveV(-1, \"page\"); },\n  goPageDown: function (cm) { return cm.moveV(1, \"page\"); },\n  goCharLeft: function (cm) { return cm.moveH(-1, \"char\"); },\n  goCharRight: function (cm) { return cm.moveH(1, \"char\"); },\n  goColumnLeft: function (cm) { return cm.moveH(-1, \"column\"); },\n  goColumnRight: function (cm) { return cm.moveH(1, \"column\"); },\n  goWordLeft: function (cm) { return cm.moveH(-1, \"word\"); },\n  goGroupRight: function (cm) { return cm.moveH(1, \"group\"); },\n  goGroupLeft: function (cm) { return cm.moveH(-1, \"group\"); },\n  goWordRight: function (cm) { return cm.moveH(1, \"word\"); },\n  delCharBefore: function (cm) { return cm.deleteH(-1, \"char\"); },\n  delCharAfter: function (cm) { return cm.deleteH(1, \"char\"); },\n  delWordBefore: function (cm) { return cm.deleteH(-1, \"word\"); },\n  delWordAfter: function (cm) { return cm.deleteH(1, \"word\"); },\n  delGroupBefore: function (cm) { return cm.deleteH(-1, \"group\"); },\n  delGroupAfter: function (cm) { return cm.deleteH(1, \"group\"); },\n  indentAuto: function (cm) { return cm.indentSelection(\"smart\"); },\n  indentMore: function (cm) { return cm.indentSelection(\"add\"); },\n  indentLess: function (cm) { return cm.indentSelection(\"subtract\"); },\n  insertTab: function (cm) { return cm.replaceSelection(\"\\t\"); },\n  insertSoftTab: function (cm) {\n    var spaces = [], ranges = cm.listSelections(), tabSize = cm.options.tabSize;\n    for (var i = 0; i < ranges.length; i++) {\n      var pos = ranges[i].from();\n      var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize);\n      spaces.push(spaceStr(tabSize - col % tabSize));\n    }\n    cm.replaceSelections(spaces);\n  },\n  defaultTab: function (cm) {\n    if (cm.somethingSelected()) { cm.indentSelection(\"add\"); }\n    else { cm.execCommand(\"insertTab\"); }\n  },\n  // Swap the two chars left and right of each selection's head.\n  // Move cursor behind the two swapped characters afterwards.\n  //\n  // Doesn't consider line feeds a character.\n  // Doesn't scan more than one line above to find a character.\n  // Doesn't do anything on an empty line.\n  // Doesn't do anything with non-empty selections.\n  transposeChars: function (cm) { return runInOp(cm, function () {\n    var ranges = cm.listSelections(), newSel = [];\n    for (var i = 0; i < ranges.length; i++) {\n      if (!ranges[i].empty()) { continue }\n      var cur = ranges[i].head, line = getLine(cm.doc, cur.line).text;\n      if (line) {\n        if (cur.ch == line.length) { cur = new Pos(cur.line, cur.ch - 1); }\n        if (cur.ch > 0) {\n          cur = new Pos(cur.line, cur.ch + 1);\n          cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2),\n                          Pos(cur.line, cur.ch - 2), cur, \"+transpose\");\n        } else if (cur.line > cm.doc.first) {\n          var prev = getLine(cm.doc, cur.line - 1).text;\n          if (prev) {\n            cur = new Pos(cur.line, 1);\n            cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() +\n                            prev.charAt(prev.length - 1),\n                            Pos(cur.line - 1, prev.length - 1), cur, \"+transpose\");\n          }\n        }\n      }\n      newSel.push(new Range(cur, cur));\n    }\n    cm.setSelections(newSel);\n  }); },\n  newlineAndIndent: function (cm) { return runInOp(cm, function () {\n    var sels = cm.listSelections();\n    for (var i = sels.length - 1; i >= 0; i--)\n      { cm.replaceRange(cm.doc.lineSeparator(), sels[i].anchor, sels[i].head, \"+input\"); }\n    sels = cm.listSelections();\n    for (var i$1 = 0; i$1 < sels.length; i$1++)\n      { cm.indentLine(sels[i$1].from().line, null, true); }\n    ensureCursorVisible(cm);\n  }); },\n  openLine: function (cm) { return cm.replaceSelection(\"\\n\", \"start\"); },\n  toggleOverwrite: function (cm) { return cm.toggleOverwrite(); }\n};\n\n\nfunction lineStart(cm, lineN) {\n  var line = getLine(cm.doc, lineN);\n  var visual = visualLine(line);\n  if (visual != line) { lineN = lineNo(visual); }\n  return endOfLine(true, cm, visual, lineN, 1)\n}\nfunction lineEnd(cm, lineN) {\n  var line = getLine(cm.doc, lineN);\n  var visual = visualLineEnd(line);\n  if (visual != line) { lineN = lineNo(visual); }\n  return endOfLine(true, cm, line, lineN, -1)\n}\nfunction lineStartSmart(cm, pos) {\n  var start = lineStart(cm, pos.line);\n  var line = getLine(cm.doc, start.line);\n  var order = getOrder(line, cm.doc.direction);\n  if (!order || order[0].level == 0) {\n    var firstNonWS = Math.max(0, line.text.search(/\\S/));\n    var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch;\n    return Pos(start.line, inWS ? 0 : firstNonWS, start.sticky)\n  }\n  return start\n}\n\n// Run a handler that was bound to a key.\nfunction doHandleBinding(cm, bound, dropShift) {\n  if (typeof bound == \"string\") {\n    bound = commands[bound];\n    if (!bound) { return false }\n  }\n  // Ensure previous input has been read, so that the handler sees a\n  // consistent view of the document\n  cm.display.input.ensurePolled();\n  var prevShift = cm.display.shift, done = false;\n  try {\n    if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n    if (dropShift) { cm.display.shift = false; }\n    done = bound(cm) != Pass;\n  } finally {\n    cm.display.shift = prevShift;\n    cm.state.suppressEdits = false;\n  }\n  return done\n}\n\nfunction lookupKeyForEditor(cm, name, handle) {\n  for (var i = 0; i < cm.state.keyMaps.length; i++) {\n    var result = lookupKey(name, cm.state.keyMaps[i], handle, cm);\n    if (result) { return result }\n  }\n  return (cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm))\n    || lookupKey(name, cm.options.keyMap, handle, cm)\n}\n\nvar stopSeq = new Delayed;\nfunction dispatchKey(cm, name, e, handle) {\n  var seq = cm.state.keySeq;\n  if (seq) {\n    if (isModifierKey(name)) { return \"handled\" }\n    stopSeq.set(50, function () {\n      if (cm.state.keySeq == seq) {\n        cm.state.keySeq = null;\n        cm.display.input.reset();\n      }\n    });\n    name = seq + \" \" + name;\n  }\n  var result = lookupKeyForEditor(cm, name, handle);\n\n  if (result == \"multi\")\n    { cm.state.keySeq = name; }\n  if (result == \"handled\")\n    { signalLater(cm, \"keyHandled\", cm, name, e); }\n\n  if (result == \"handled\" || result == \"multi\") {\n    e_preventDefault(e);\n    restartBlink(cm);\n  }\n\n  if (seq && !result && /\\'$/.test(name)) {\n    e_preventDefault(e);\n    return true\n  }\n  return !!result\n}\n\n// Handle a key from the keydown event.\nfunction handleKeyBinding(cm, e) {\n  var name = keyName(e, true);\n  if (!name) { return false }\n\n  if (e.shiftKey && !cm.state.keySeq) {\n    // First try to resolve full name (including 'Shift-'). Failing\n    // that, see if there is a cursor-motion command (starting with\n    // 'go') bound to the keyname without 'Shift-'.\n    return dispatchKey(cm, \"Shift-\" + name, e, function (b) { return doHandleBinding(cm, b, true); })\n        || dispatchKey(cm, name, e, function (b) {\n             if (typeof b == \"string\" ? /^go[A-Z]/.test(b) : b.motion)\n               { return doHandleBinding(cm, b) }\n           })\n  } else {\n    return dispatchKey(cm, name, e, function (b) { return doHandleBinding(cm, b); })\n  }\n}\n\n// Handle a key from the keypress event\nfunction handleCharBinding(cm, e, ch) {\n  return dispatchKey(cm, \"'\" + ch + \"'\", e, function (b) { return doHandleBinding(cm, b, true); })\n}\n\nvar lastStoppedKey = null;\nfunction onKeyDown(e) {\n  var cm = this;\n  cm.curOp.focus = activeElt();\n  if (signalDOMEvent(cm, e)) { return }\n  // IE does strange things with escape.\n  if (ie && ie_version < 11 && e.keyCode == 27) { e.returnValue = false; }\n  var code = e.keyCode;\n  cm.display.shift = code == 16 || e.shiftKey;\n  var handled = handleKeyBinding(cm, e);\n  if (presto) {\n    lastStoppedKey = handled ? code : null;\n    // Opera has no cut event... we try to at least catch the key combo\n    if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey))\n      { cm.replaceSelection(\"\", null, \"cut\"); }\n  }\n\n  // Turn mouse into crosshair when Alt is held on Mac.\n  if (code == 18 && !/\\bCodeMirror-crosshair\\b/.test(cm.display.lineDiv.className))\n    { showCrossHair(cm); }\n}\n\nfunction showCrossHair(cm) {\n  var lineDiv = cm.display.lineDiv;\n  addClass(lineDiv, \"CodeMirror-crosshair\");\n\n  function up(e) {\n    if (e.keyCode == 18 || !e.altKey) {\n      rmClass(lineDiv, \"CodeMirror-crosshair\");\n      off(document, \"keyup\", up);\n      off(document, \"mouseover\", up);\n    }\n  }\n  on(document, \"keyup\", up);\n  on(document, \"mouseover\", up);\n}\n\nfunction onKeyUp(e) {\n  if (e.keyCode == 16) { this.doc.sel.shift = false; }\n  signalDOMEvent(this, e);\n}\n\nfunction onKeyPress(e) {\n  var cm = this;\n  if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) { return }\n  var keyCode = e.keyCode, charCode = e.charCode;\n  if (presto && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return}\n  if ((presto && (!e.which || e.which < 10)) && handleKeyBinding(cm, e)) { return }\n  var ch = String.fromCharCode(charCode == null ? keyCode : charCode);\n  // Some browsers fire keypress events for backspace\n  if (ch == \"\\x08\") { return }\n  if (handleCharBinding(cm, e, ch)) { return }\n  cm.display.input.onKeyPress(e);\n}\n\n// A mouse down can be a single click, double click, triple click,\n// start of selection drag, start of text drag, new cursor\n// (ctrl-click), rectangle drag (alt-drag), or xwin\n// middle-click-paste. Or it might be a click on something we should\n// not interfere with, such as a scrollbar or widget.\nfunction onMouseDown(e) {\n  var cm = this, display = cm.display;\n  if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) { return }\n  display.input.ensurePolled();\n  display.shift = e.shiftKey;\n\n  if (eventInWidget(display, e)) {\n    if (!webkit) {\n      // Briefly turn off draggability, to allow widgets to do\n      // normal dragging things.\n      display.scroller.draggable = false;\n      setTimeout(function () { return display.scroller.draggable = true; }, 100);\n    }\n    return\n  }\n  if (clickInGutter(cm, e)) { return }\n  var start = posFromMouse(cm, e);\n  window.focus();\n\n  switch (e_button(e)) {\n  case 1:\n    // #3261: make sure, that we're not starting a second selection\n    if (cm.state.selectingText)\n      { cm.state.selectingText(e); }\n    else if (start)\n      { leftButtonDown(cm, e, start); }\n    else if (e_target(e) == display.scroller)\n      { e_preventDefault(e); }\n    break\n  case 2:\n    if (webkit) { cm.state.lastMiddleDown = +new Date; }\n    if (start) { extendSelection(cm.doc, start); }\n    setTimeout(function () { return display.input.focus(); }, 20);\n    e_preventDefault(e);\n    break\n  case 3:\n    if (captureRightClick) { onContextMenu(cm, e); }\n    else { delayBlurEvent(cm); }\n    break\n  }\n}\n\nvar lastClick;\nvar lastDoubleClick;\nfunction leftButtonDown(cm, e, start) {\n  if (ie) { setTimeout(bind(ensureFocus, cm), 0); }\n  else { cm.curOp.focus = activeElt(); }\n\n  var now = +new Date, type;\n  if (lastDoubleClick && lastDoubleClick.time > now - 400 && cmp(lastDoubleClick.pos, start) == 0) {\n    type = \"triple\";\n  } else if (lastClick && lastClick.time > now - 400 && cmp(lastClick.pos, start) == 0) {\n    type = \"double\";\n    lastDoubleClick = {time: now, pos: start};\n  } else {\n    type = \"single\";\n    lastClick = {time: now, pos: start};\n  }\n\n  var sel = cm.doc.sel, modifier = mac ? e.metaKey : e.ctrlKey, contained;\n  if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() &&\n      type == \"single\" && (contained = sel.contains(start)) > -1 &&\n      (cmp((contained = sel.ranges[contained]).from(), start) < 0 || start.xRel > 0) &&\n      (cmp(contained.to(), start) > 0 || start.xRel < 0))\n    { leftButtonStartDrag(cm, e, start, modifier); }\n  else\n    { leftButtonSelect(cm, e, start, type, modifier); }\n}\n\n// Start a text drag. When it ends, see if any dragging actually\n// happen, and treat as a click if it didn't.\nfunction leftButtonStartDrag(cm, e, start, modifier) {\n  var display = cm.display, moved = false;\n  var dragEnd = operation(cm, function (e) {\n    if (webkit) { display.scroller.draggable = false; }\n    cm.state.draggingText = false;\n    off(document, \"mouseup\", dragEnd);\n    off(document, \"mousemove\", mouseMove);\n    off(display.scroller, \"dragstart\", dragStart);\n    off(display.scroller, \"drop\", dragEnd);\n    if (!moved) {\n      e_preventDefault(e);\n      if (!modifier)\n        { extendSelection(cm.doc, start); }\n      // Work around unexplainable focus problem in IE9 (#2127) and Chrome (#3081)\n      if (webkit || ie && ie_version == 9)\n        { setTimeout(function () {document.body.focus(); display.input.focus();}, 20); }\n      else\n        { display.input.focus(); }\n    }\n  });\n  var mouseMove = function(e2) {\n    moved = moved || Math.abs(e.clientX - e2.clientX) + Math.abs(e.clientY - e2.clientY) >= 10;\n  };\n  var dragStart = function () { return moved = true; };\n  // Let the drag handler handle this.\n  if (webkit) { display.scroller.draggable = true; }\n  cm.state.draggingText = dragEnd;\n  dragEnd.copy = mac ? e.altKey : e.ctrlKey;\n  // IE's approach to draggable\n  if (display.scroller.dragDrop) { display.scroller.dragDrop(); }\n  on(document, \"mouseup\", dragEnd);\n  on(document, \"mousemove\", mouseMove);\n  on(display.scroller, \"dragstart\", dragStart);\n  on(display.scroller, \"drop\", dragEnd);\n\n  delayBlurEvent(cm);\n  setTimeout(function () { return display.input.focus(); }, 20);\n}\n\n// Normal selection, as opposed to text dragging.\nfunction leftButtonSelect(cm, e, start, type, addNew) {\n  var display = cm.display, doc = cm.doc;\n  e_preventDefault(e);\n\n  var ourRange, ourIndex, startSel = doc.sel, ranges = startSel.ranges;\n  if (addNew && !e.shiftKey) {\n    ourIndex = doc.sel.contains(start);\n    if (ourIndex > -1)\n      { ourRange = ranges[ourIndex]; }\n    else\n      { ourRange = new Range(start, start); }\n  } else {\n    ourRange = doc.sel.primary();\n    ourIndex = doc.sel.primIndex;\n  }\n\n  if (chromeOS ? e.shiftKey && e.metaKey : e.altKey) {\n    type = \"rect\";\n    if (!addNew) { ourRange = new Range(start, start); }\n    start = posFromMouse(cm, e, true, true);\n    ourIndex = -1;\n  } else if (type == \"double\") {\n    var word = cm.findWordAt(start);\n    if (cm.display.shift || doc.extend)\n      { ourRange = extendRange(doc, ourRange, word.anchor, word.head); }\n    else\n      { ourRange = word; }\n  } else if (type == \"triple\") {\n    var line = new Range(Pos(start.line, 0), clipPos(doc, Pos(start.line + 1, 0)));\n    if (cm.display.shift || doc.extend)\n      { ourRange = extendRange(doc, ourRange, line.anchor, line.head); }\n    else\n      { ourRange = line; }\n  } else {\n    ourRange = extendRange(doc, ourRange, start);\n  }\n\n  if (!addNew) {\n    ourIndex = 0;\n    setSelection(doc, new Selection([ourRange], 0), sel_mouse);\n    startSel = doc.sel;\n  } else if (ourIndex == -1) {\n    ourIndex = ranges.length;\n    setSelection(doc, normalizeSelection(ranges.concat([ourRange]), ourIndex),\n                 {scroll: false, origin: \"*mouse\"});\n  } else if (ranges.length > 1 && ranges[ourIndex].empty() && type == \"single\" && !e.shiftKey) {\n    setSelection(doc, normalizeSelection(ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0),\n                 {scroll: false, origin: \"*mouse\"});\n    startSel = doc.sel;\n  } else {\n    replaceOneSelection(doc, ourIndex, ourRange, sel_mouse);\n  }\n\n  var lastPos = start;\n  function extendTo(pos) {\n    if (cmp(lastPos, pos) == 0) { return }\n    lastPos = pos;\n\n    if (type == \"rect\") {\n      var ranges = [], tabSize = cm.options.tabSize;\n      var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize);\n      var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize);\n      var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol);\n      for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line));\n           line <= end; line++) {\n        var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize);\n        if (left == right)\n          { ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos))); }\n        else if (text.length > leftPos)\n          { ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize)))); }\n      }\n      if (!ranges.length) { ranges.push(new Range(start, start)); }\n      setSelection(doc, normalizeSelection(startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex),\n                   {origin: \"*mouse\", scroll: false});\n      cm.scrollIntoView(pos);\n    } else {\n      var oldRange = ourRange;\n      var anchor = oldRange.anchor, head = pos;\n      if (type != \"single\") {\n        var range$$1;\n        if (type == \"double\")\n          { range$$1 = cm.findWordAt(pos); }\n        else\n          { range$$1 = new Range(Pos(pos.line, 0), clipPos(doc, Pos(pos.line + 1, 0))); }\n        if (cmp(range$$1.anchor, anchor) > 0) {\n          head = range$$1.head;\n          anchor = minPos(oldRange.from(), range$$1.anchor);\n        } else {\n          head = range$$1.anchor;\n          anchor = maxPos(oldRange.to(), range$$1.head);\n        }\n      }\n      var ranges$1 = startSel.ranges.slice(0);\n      ranges$1[ourIndex] = new Range(clipPos(doc, anchor), head);\n      setSelection(doc, normalizeSelection(ranges$1, ourIndex), sel_mouse);\n    }\n  }\n\n  var editorSize = display.wrapper.getBoundingClientRect();\n  // Used to ensure timeout re-tries don't fire when another extend\n  // happened in the meantime (clearTimeout isn't reliable -- at\n  // least on Chrome, the timeouts still happen even when cleared,\n  // if the clear happens after their scheduled firing time).\n  var counter = 0;\n\n  function extend(e) {\n    var curCount = ++counter;\n    var cur = posFromMouse(cm, e, true, type == \"rect\");\n    if (!cur) { return }\n    if (cmp(cur, lastPos) != 0) {\n      cm.curOp.focus = activeElt();\n      extendTo(cur);\n      var visible = visibleLines(display, doc);\n      if (cur.line >= visible.to || cur.line < visible.from)\n        { setTimeout(operation(cm, function () {if (counter == curCount) { extend(e); }}), 150); }\n    } else {\n      var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0;\n      if (outside) { setTimeout(operation(cm, function () {\n        if (counter != curCount) { return }\n        display.scroller.scrollTop += outside;\n        extend(e);\n      }), 50); }\n    }\n  }\n\n  function done(e) {\n    cm.state.selectingText = false;\n    counter = Infinity;\n    e_preventDefault(e);\n    display.input.focus();\n    off(document, \"mousemove\", move);\n    off(document, \"mouseup\", up);\n    doc.history.lastSelOrigin = null;\n  }\n\n  var move = operation(cm, function (e) {\n    if (!e_button(e)) { done(e); }\n    else { extend(e); }\n  });\n  var up = operation(cm, done);\n  cm.state.selectingText = up;\n  on(document, \"mousemove\", move);\n  on(document, \"mouseup\", up);\n}\n\n\n// Determines whether an event happened in the gutter, and fires the\n// handlers for the corresponding event.\nfunction gutterEvent(cm, e, type, prevent) {\n  var mX, mY;\n  try { mX = e.clientX; mY = e.clientY; }\n  catch(e) { return false }\n  if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) { return false }\n  if (prevent) { e_preventDefault(e); }\n\n  var display = cm.display;\n  var lineBox = display.lineDiv.getBoundingClientRect();\n\n  if (mY > lineBox.bottom || !hasHandler(cm, type)) { return e_defaultPrevented(e) }\n  mY -= lineBox.top - display.viewOffset;\n\n  for (var i = 0; i < cm.options.gutters.length; ++i) {\n    var g = display.gutters.childNodes[i];\n    if (g && g.getBoundingClientRect().right >= mX) {\n      var line = lineAtHeight(cm.doc, mY);\n      var gutter = cm.options.gutters[i];\n      signal(cm, type, cm, line, gutter, e);\n      return e_defaultPrevented(e)\n    }\n  }\n}\n\nfunction clickInGutter(cm, e) {\n  return gutterEvent(cm, e, \"gutterClick\", true)\n}\n\n// CONTEXT MENU HANDLING\n\n// To make the context menu work, we need to briefly unhide the\n// textarea (making it as unobtrusive as possible) to let the\n// right-click take effect on it.\nfunction onContextMenu(cm, e) {\n  if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) { return }\n  if (signalDOMEvent(cm, e, \"contextmenu\")) { return }\n  cm.display.input.onContextMenu(e);\n}\n\nfunction contextMenuInGutter(cm, e) {\n  if (!hasHandler(cm, \"gutterContextMenu\")) { return false }\n  return gutterEvent(cm, e, \"gutterContextMenu\", false)\n}\n\nfunction themeChanged(cm) {\n  cm.display.wrapper.className = cm.display.wrapper.className.replace(/\\s*cm-s-\\S+/g, \"\") +\n    cm.options.theme.replace(/(^|\\s)\\s*/g, \" cm-s-\");\n  clearCaches(cm);\n}\n\nvar Init = {toString: function(){return \"CodeMirror.Init\"}};\n\nvar defaults = {};\nvar optionHandlers = {};\n\nfunction defineOptions(CodeMirror) {\n  var optionHandlers = CodeMirror.optionHandlers;\n\n  function option(name, deflt, handle, notOnInit) {\n    CodeMirror.defaults[name] = deflt;\n    if (handle) { optionHandlers[name] =\n      notOnInit ? function (cm, val, old) {if (old != Init) { handle(cm, val, old); }} : handle; }\n  }\n\n  CodeMirror.defineOption = option;\n\n  // Passed to option handlers when there is no old value.\n  CodeMirror.Init = Init;\n\n  // These two are, on init, called from the constructor because they\n  // have to be initialized before the editor can start at all.\n  option(\"value\", \"\", function (cm, val) { return cm.setValue(val); }, true);\n  option(\"mode\", null, function (cm, val) {\n    cm.doc.modeOption = val;\n    loadMode(cm);\n  }, true);\n\n  option(\"indentUnit\", 2, loadMode, true);\n  option(\"indentWithTabs\", false);\n  option(\"smartIndent\", true);\n  option(\"tabSize\", 4, function (cm) {\n    resetModeState(cm);\n    clearCaches(cm);\n    regChange(cm);\n  }, true);\n  option(\"lineSeparator\", null, function (cm, val) {\n    cm.doc.lineSep = val;\n    if (!val) { return }\n    var newBreaks = [], lineNo = cm.doc.first;\n    cm.doc.iter(function (line) {\n      for (var pos = 0;;) {\n        var found = line.text.indexOf(val, pos);\n        if (found == -1) { break }\n        pos = found + val.length;\n        newBreaks.push(Pos(lineNo, found));\n      }\n      lineNo++;\n    });\n    for (var i = newBreaks.length - 1; i >= 0; i--)\n      { replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length)); }\n  });\n  option(\"specialChars\", /[\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u061c\\u200b-\\u200f\\u2028\\u2029\\ufeff]/g, function (cm, val, old) {\n    cm.state.specialChars = new RegExp(val.source + (val.test(\"\\t\") ? \"\" : \"|\\t\"), \"g\");\n    if (old != Init) { cm.refresh(); }\n  });\n  option(\"specialCharPlaceholder\", defaultSpecialCharPlaceholder, function (cm) { return cm.refresh(); }, true);\n  option(\"electricChars\", true);\n  option(\"inputStyle\", mobile ? \"contenteditable\" : \"textarea\", function () {\n    throw new Error(\"inputStyle can not (yet) be changed in a running editor\") // FIXME\n  }, true);\n  option(\"spellcheck\", false, function (cm, val) { return cm.getInputField().spellcheck = val; }, true);\n  option(\"rtlMoveVisually\", !windows);\n  option(\"wholeLineUpdateBefore\", true);\n\n  option(\"theme\", \"default\", function (cm) {\n    themeChanged(cm);\n    guttersChanged(cm);\n  }, true);\n  option(\"keyMap\", \"default\", function (cm, val, old) {\n    var next = getKeyMap(val);\n    var prev = old != Init && getKeyMap(old);\n    if (prev && prev.detach) { prev.detach(cm, next); }\n    if (next.attach) { next.attach(cm, prev || null); }\n  });\n  option(\"extraKeys\", null);\n\n  option(\"lineWrapping\", false, wrappingChanged, true);\n  option(\"gutters\", [], function (cm) {\n    setGuttersForLineNumbers(cm.options);\n    guttersChanged(cm);\n  }, true);\n  option(\"fixedGutter\", true, function (cm, val) {\n    cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + \"px\" : \"0\";\n    cm.refresh();\n  }, true);\n  option(\"coverGutterNextToScrollbar\", false, function (cm) { return updateScrollbars(cm); }, true);\n  option(\"scrollbarStyle\", \"native\", function (cm) {\n    initScrollbars(cm);\n    updateScrollbars(cm);\n    cm.display.scrollbars.setScrollTop(cm.doc.scrollTop);\n    cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft);\n  }, true);\n  option(\"lineNumbers\", false, function (cm) {\n    setGuttersForLineNumbers(cm.options);\n    guttersChanged(cm);\n  }, true);\n  option(\"firstLineNumber\", 1, guttersChanged, true);\n  option(\"lineNumberFormatter\", function (integer) { return integer; }, guttersChanged, true);\n  option(\"showCursorWhenSelecting\", false, updateSelection, true);\n\n  option(\"resetSelectionOnContextMenu\", true);\n  option(\"lineWiseCopyCut\", true);\n\n  option(\"readOnly\", false, function (cm, val) {\n    if (val == \"nocursor\") {\n      onBlur(cm);\n      cm.display.input.blur();\n      cm.display.disabled = true;\n    } else {\n      cm.display.disabled = false;\n    }\n    cm.display.input.readOnlyChanged(val);\n  });\n  option(\"disableInput\", false, function (cm, val) {if (!val) { cm.display.input.reset(); }}, true);\n  option(\"dragDrop\", true, dragDropChanged);\n  option(\"allowDropFileTypes\", null);\n\n  option(\"cursorBlinkRate\", 530);\n  option(\"cursorScrollMargin\", 0);\n  option(\"cursorHeight\", 1, updateSelection, true);\n  option(\"singleCursorHeightPerLine\", true, updateSelection, true);\n  option(\"workTime\", 100);\n  option(\"workDelay\", 100);\n  option(\"flattenSpans\", true, resetModeState, true);\n  option(\"addModeClass\", false, resetModeState, true);\n  option(\"pollInterval\", 100);\n  option(\"undoDepth\", 200, function (cm, val) { return cm.doc.history.undoDepth = val; });\n  option(\"historyEventDelay\", 1250);\n  option(\"viewportMargin\", 10, function (cm) { return cm.refresh(); }, true);\n  option(\"maxHighlightLength\", 10000, resetModeState, true);\n  option(\"moveInputWithCursor\", true, function (cm, val) {\n    if (!val) { cm.display.input.resetPosition(); }\n  });\n\n  option(\"tabindex\", null, function (cm, val) { return cm.display.input.getField().tabIndex = val || \"\"; });\n  option(\"autofocus\", null);\n  option(\"direction\", \"ltr\", function (cm, val) { return cm.doc.setDirection(val); }, true);\n}\n\nfunction guttersChanged(cm) {\n  updateGutters(cm);\n  regChange(cm);\n  alignHorizontally(cm);\n}\n\nfunction dragDropChanged(cm, value, old) {\n  var wasOn = old && old != Init;\n  if (!value != !wasOn) {\n    var funcs = cm.display.dragFunctions;\n    var toggle = value ? on : off;\n    toggle(cm.display.scroller, \"dragstart\", funcs.start);\n    toggle(cm.display.scroller, \"dragenter\", funcs.enter);\n    toggle(cm.display.scroller, \"dragover\", funcs.over);\n    toggle(cm.display.scroller, \"dragleave\", funcs.leave);\n    toggle(cm.display.scroller, \"drop\", funcs.drop);\n  }\n}\n\nfunction wrappingChanged(cm) {\n  if (cm.options.lineWrapping) {\n    addClass(cm.display.wrapper, \"CodeMirror-wrap\");\n    cm.display.sizer.style.minWidth = \"\";\n    cm.display.sizerWidth = null;\n  } else {\n    rmClass(cm.display.wrapper, \"CodeMirror-wrap\");\n    findMaxLine(cm);\n  }\n  estimateLineHeights(cm);\n  regChange(cm);\n  clearCaches(cm);\n  setTimeout(function () { return updateScrollbars(cm); }, 100);\n}\n\n// A CodeMirror instance represents an editor. This is the object\n// that user code is usually dealing with.\n\nfunction CodeMirror$1(place, options) {\n  var this$1 = this;\n\n  if (!(this instanceof CodeMirror$1)) { return new CodeMirror$1(place, options) }\n\n  this.options = options = options ? copyObj(options) : {};\n  // Determine effective options based on given values and defaults.\n  copyObj(defaults, options, false);\n  setGuttersForLineNumbers(options);\n\n  var doc = options.value;\n  if (typeof doc == \"string\") { doc = new Doc(doc, options.mode, null, options.lineSeparator, options.direction); }\n  this.doc = doc;\n\n  var input = new CodeMirror$1.inputStyles[options.inputStyle](this);\n  var display = this.display = new Display(place, doc, input);\n  display.wrapper.CodeMirror = this;\n  updateGutters(this);\n  themeChanged(this);\n  if (options.lineWrapping)\n    { this.display.wrapper.className += \" CodeMirror-wrap\"; }\n  initScrollbars(this);\n\n  this.state = {\n    keyMaps: [],  // stores maps added by addKeyMap\n    overlays: [], // highlighting overlays, as added by addOverlay\n    modeGen: 0,   // bumped when mode/overlay changes, used to invalidate highlighting info\n    overwrite: false,\n    delayingBlurEvent: false,\n    focused: false,\n    suppressEdits: false, // used to disable editing during key handlers when in readOnly mode\n    pasteIncoming: false, cutIncoming: false, // help recognize paste/cut edits in input.poll\n    selectingText: false,\n    draggingText: false,\n    highlight: new Delayed(), // stores highlight worker timeout\n    keySeq: null,  // Unfinished key sequence\n    specialChars: null\n  };\n\n  if (options.autofocus && !mobile) { display.input.focus(); }\n\n  // Override magic textarea content restore that IE sometimes does\n  // on our hidden textarea on reload\n  if (ie && ie_version < 11) { setTimeout(function () { return this$1.display.input.reset(true); }, 20); }\n\n  registerEventHandlers(this);\n  ensureGlobalHandlers();\n\n  startOperation(this);\n  this.curOp.forceUpdate = true;\n  attachDoc(this, doc);\n\n  if ((options.autofocus && !mobile) || this.hasFocus())\n    { setTimeout(bind(onFocus, this), 20); }\n  else\n    { onBlur(this); }\n\n  for (var opt in optionHandlers) { if (optionHandlers.hasOwnProperty(opt))\n    { optionHandlers[opt](this$1, options[opt], Init); } }\n  maybeUpdateLineNumberWidth(this);\n  if (options.finishInit) { options.finishInit(this); }\n  for (var i = 0; i < initHooks.length; ++i) { initHooks[i](this$1); }\n  endOperation(this);\n  // Suppress optimizelegibility in Webkit, since it breaks text\n  // measuring on line wrapping boundaries.\n  if (webkit && options.lineWrapping &&\n      getComputedStyle(display.lineDiv).textRendering == \"optimizelegibility\")\n    { display.lineDiv.style.textRendering = \"auto\"; }\n}\n\n// The default configuration options.\nCodeMirror$1.defaults = defaults;\n// Functions to run when options are changed.\nCodeMirror$1.optionHandlers = optionHandlers;\n\n// Attach the necessary event handlers when initializing the editor\nfunction registerEventHandlers(cm) {\n  var d = cm.display;\n  on(d.scroller, \"mousedown\", operation(cm, onMouseDown));\n  // Older IE's will not fire a second mousedown for a double click\n  if (ie && ie_version < 11)\n    { on(d.scroller, \"dblclick\", operation(cm, function (e) {\n      if (signalDOMEvent(cm, e)) { return }\n      var pos = posFromMouse(cm, e);\n      if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) { return }\n      e_preventDefault(e);\n      var word = cm.findWordAt(pos);\n      extendSelection(cm.doc, word.anchor, word.head);\n    })); }\n  else\n    { on(d.scroller, \"dblclick\", function (e) { return signalDOMEvent(cm, e) || e_preventDefault(e); }); }\n  // Some browsers fire contextmenu *after* opening the menu, at\n  // which point we can't mess with it anymore. Context menu is\n  // handled in onMouseDown for these browsers.\n  if (!captureRightClick) { on(d.scroller, \"contextmenu\", function (e) { return onContextMenu(cm, e); }); }\n\n  // Used to suppress mouse event handling when a touch happens\n  var touchFinished, prevTouch = {end: 0};\n  function finishTouch() {\n    if (d.activeTouch) {\n      touchFinished = setTimeout(function () { return d.activeTouch = null; }, 1000);\n      prevTouch = d.activeTouch;\n      prevTouch.end = +new Date;\n    }\n  }\n  function isMouseLikeTouchEvent(e) {\n    if (e.touches.length != 1) { return false }\n    var touch = e.touches[0];\n    return touch.radiusX <= 1 && touch.radiusY <= 1\n  }\n  function farAway(touch, other) {\n    if (other.left == null) { return true }\n    var dx = other.left - touch.left, dy = other.top - touch.top;\n    return dx * dx + dy * dy > 20 * 20\n  }\n  on(d.scroller, \"touchstart\", function (e) {\n    if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e)) {\n      d.input.ensurePolled();\n      clearTimeout(touchFinished);\n      var now = +new Date;\n      d.activeTouch = {start: now, moved: false,\n                       prev: now - prevTouch.end <= 300 ? prevTouch : null};\n      if (e.touches.length == 1) {\n        d.activeTouch.left = e.touches[0].pageX;\n        d.activeTouch.top = e.touches[0].pageY;\n      }\n    }\n  });\n  on(d.scroller, \"touchmove\", function () {\n    if (d.activeTouch) { d.activeTouch.moved = true; }\n  });\n  on(d.scroller, \"touchend\", function (e) {\n    var touch = d.activeTouch;\n    if (touch && !eventInWidget(d, e) && touch.left != null &&\n        !touch.moved && new Date - touch.start < 300) {\n      var pos = cm.coordsChar(d.activeTouch, \"page\"), range;\n      if (!touch.prev || farAway(touch, touch.prev)) // Single tap\n        { range = new Range(pos, pos); }\n      else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) // Double tap\n        { range = cm.findWordAt(pos); }\n      else // Triple tap\n        { range = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))); }\n      cm.setSelection(range.anchor, range.head);\n      cm.focus();\n      e_preventDefault(e);\n    }\n    finishTouch();\n  });\n  on(d.scroller, \"touchcancel\", finishTouch);\n\n  // Sync scrolling between fake scrollbars and real scrollable\n  // area, ensure viewport is updated when scrolling.\n  on(d.scroller, \"scroll\", function () {\n    if (d.scroller.clientHeight) {\n      setScrollTop(cm, d.scroller.scrollTop);\n      setScrollLeft(cm, d.scroller.scrollLeft, true);\n      signal(cm, \"scroll\", cm);\n    }\n  });\n\n  // Listen to wheel events in order to try and update the viewport on time.\n  on(d.scroller, \"mousewheel\", function (e) { return onScrollWheel(cm, e); });\n  on(d.scroller, \"DOMMouseScroll\", function (e) { return onScrollWheel(cm, e); });\n\n  // Prevent wrapper from ever scrolling\n  on(d.wrapper, \"scroll\", function () { return d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; });\n\n  d.dragFunctions = {\n    enter: function (e) {if (!signalDOMEvent(cm, e)) { e_stop(e); }},\n    over: function (e) {if (!signalDOMEvent(cm, e)) { onDragOver(cm, e); e_stop(e); }},\n    start: function (e) { return onDragStart(cm, e); },\n    drop: operation(cm, onDrop),\n    leave: function (e) {if (!signalDOMEvent(cm, e)) { clearDragCursor(cm); }}\n  };\n\n  var inp = d.input.getField();\n  on(inp, \"keyup\", function (e) { return onKeyUp.call(cm, e); });\n  on(inp, \"keydown\", operation(cm, onKeyDown));\n  on(inp, \"keypress\", operation(cm, onKeyPress));\n  on(inp, \"focus\", function (e) { return onFocus(cm, e); });\n  on(inp, \"blur\", function (e) { return onBlur(cm, e); });\n}\n\nvar initHooks = [];\nCodeMirror$1.defineInitHook = function (f) { return initHooks.push(f); };\n\n// Indent the given line. The how parameter can be \"smart\",\n// \"add\"/null, \"subtract\", or \"prev\". When aggressive is false\n// (typically set to true for forced single-line indents), empty\n// lines are not indented, and places where the mode returns Pass\n// are left alone.\nfunction indentLine(cm, n, how, aggressive) {\n  var doc = cm.doc, state;\n  if (how == null) { how = \"add\"; }\n  if (how == \"smart\") {\n    // Fall back to \"prev\" when the mode doesn't have an indentation\n    // method.\n    if (!doc.mode.indent) { how = \"prev\"; }\n    else { state = getStateBefore(cm, n); }\n  }\n\n  var tabSize = cm.options.tabSize;\n  var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize);\n  if (line.stateAfter) { line.stateAfter = null; }\n  var curSpaceString = line.text.match(/^\\s*/)[0], indentation;\n  if (!aggressive && !/\\S/.test(line.text)) {\n    indentation = 0;\n    how = \"not\";\n  } else if (how == \"smart\") {\n    indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text);\n    if (indentation == Pass || indentation > 150) {\n      if (!aggressive) { return }\n      how = \"prev\";\n    }\n  }\n  if (how == \"prev\") {\n    if (n > doc.first) { indentation = countColumn(getLine(doc, n-1).text, null, tabSize); }\n    else { indentation = 0; }\n  } else if (how == \"add\") {\n    indentation = curSpace + cm.options.indentUnit;\n  } else if (how == \"subtract\") {\n    indentation = curSpace - cm.options.indentUnit;\n  } else if (typeof how == \"number\") {\n    indentation = curSpace + how;\n  }\n  indentation = Math.max(0, indentation);\n\n  var indentString = \"\", pos = 0;\n  if (cm.options.indentWithTabs)\n    { for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += \"\\t\";} }\n  if (pos < indentation) { indentString += spaceStr(indentation - pos); }\n\n  if (indentString != curSpaceString) {\n    replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), \"+input\");\n    line.stateAfter = null;\n    return true\n  } else {\n    // Ensure that, if the cursor was in the whitespace at the start\n    // of the line, it is moved to the end of that space.\n    for (var i$1 = 0; i$1 < doc.sel.ranges.length; i$1++) {\n      var range = doc.sel.ranges[i$1];\n      if (range.head.line == n && range.head.ch < curSpaceString.length) {\n        var pos$1 = Pos(n, curSpaceString.length);\n        replaceOneSelection(doc, i$1, new Range(pos$1, pos$1));\n        break\n      }\n    }\n  }\n}\n\n// This will be set to a {lineWise: bool, text: [string]} object, so\n// that, when pasting, we know what kind of selections the copied\n// text was made out of.\nvar lastCopied = null;\n\nfunction setLastCopied(newLastCopied) {\n  lastCopied = newLastCopied;\n}\n\nfunction applyTextInput(cm, inserted, deleted, sel, origin) {\n  var doc = cm.doc;\n  cm.display.shift = false;\n  if (!sel) { sel = doc.sel; }\n\n  var paste = cm.state.pasteIncoming || origin == \"paste\";\n  var textLines = splitLinesAuto(inserted), multiPaste = null;\n  // When pasing N lines into N selections, insert one line per selection\n  if (paste && sel.ranges.length > 1) {\n    if (lastCopied && lastCopied.text.join(\"\\n\") == inserted) {\n      if (sel.ranges.length % lastCopied.text.length == 0) {\n        multiPaste = [];\n        for (var i = 0; i < lastCopied.text.length; i++)\n          { multiPaste.push(doc.splitLines(lastCopied.text[i])); }\n      }\n    } else if (textLines.length == sel.ranges.length) {\n      multiPaste = map(textLines, function (l) { return [l]; });\n    }\n  }\n\n  var updateInput;\n  // Normal behavior is to insert the new text into every selection\n  for (var i$1 = sel.ranges.length - 1; i$1 >= 0; i$1--) {\n    var range$$1 = sel.ranges[i$1];\n    var from = range$$1.from(), to = range$$1.to();\n    if (range$$1.empty()) {\n      if (deleted && deleted > 0) // Handle deletion\n        { from = Pos(from.line, from.ch - deleted); }\n      else if (cm.state.overwrite && !paste) // Handle overwrite\n        { to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length)); }\n      else if (lastCopied && lastCopied.lineWise && lastCopied.text.join(\"\\n\") == inserted)\n        { from = to = Pos(from.line, 0); }\n    }\n    updateInput = cm.curOp.updateInput;\n    var changeEvent = {from: from, to: to, text: multiPaste ? multiPaste[i$1 % multiPaste.length] : textLines,\n                       origin: origin || (paste ? \"paste\" : cm.state.cutIncoming ? \"cut\" : \"+input\")};\n    makeChange(cm.doc, changeEvent);\n    signalLater(cm, \"inputRead\", cm, changeEvent);\n  }\n  if (inserted && !paste)\n    { triggerElectric(cm, inserted); }\n\n  ensureCursorVisible(cm);\n  cm.curOp.updateInput = updateInput;\n  cm.curOp.typing = true;\n  cm.state.pasteIncoming = cm.state.cutIncoming = false;\n}\n\nfunction handlePaste(e, cm) {\n  var pasted = e.clipboardData && e.clipboardData.getData(\"Text\");\n  if (pasted) {\n    e.preventDefault();\n    if (!cm.isReadOnly() && !cm.options.disableInput)\n      { runInOp(cm, function () { return applyTextInput(cm, pasted, 0, null, \"paste\"); }); }\n    return true\n  }\n}\n\nfunction triggerElectric(cm, inserted) {\n  // When an 'electric' character is inserted, immediately trigger a reindent\n  if (!cm.options.electricChars || !cm.options.smartIndent) { return }\n  var sel = cm.doc.sel;\n\n  for (var i = sel.ranges.length - 1; i >= 0; i--) {\n    var range$$1 = sel.ranges[i];\n    if (range$$1.head.ch > 100 || (i && sel.ranges[i - 1].head.line == range$$1.head.line)) { continue }\n    var mode = cm.getModeAt(range$$1.head);\n    var indented = false;\n    if (mode.electricChars) {\n      for (var j = 0; j < mode.electricChars.length; j++)\n        { if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) {\n          indented = indentLine(cm, range$$1.head.line, \"smart\");\n          break\n        } }\n    } else if (mode.electricInput) {\n      if (mode.electricInput.test(getLine(cm.doc, range$$1.head.line).text.slice(0, range$$1.head.ch)))\n        { indented = indentLine(cm, range$$1.head.line, \"smart\"); }\n    }\n    if (indented) { signalLater(cm, \"electricInput\", cm, range$$1.head.line); }\n  }\n}\n\nfunction copyableRanges(cm) {\n  var text = [], ranges = [];\n  for (var i = 0; i < cm.doc.sel.ranges.length; i++) {\n    var line = cm.doc.sel.ranges[i].head.line;\n    var lineRange = {anchor: Pos(line, 0), head: Pos(line + 1, 0)};\n    ranges.push(lineRange);\n    text.push(cm.getRange(lineRange.anchor, lineRange.head));\n  }\n  return {text: text, ranges: ranges}\n}\n\nfunction disableBrowserMagic(field, spellcheck) {\n  field.setAttribute(\"autocorrect\", \"off\");\n  field.setAttribute(\"autocapitalize\", \"off\");\n  field.setAttribute(\"spellcheck\", !!spellcheck);\n}\n\nfunction hiddenTextarea() {\n  var te = elt(\"textarea\", null, null, \"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none\");\n  var div = elt(\"div\", [te], null, \"overflow: hidden; position: relative; width: 3px; height: 0px;\");\n  // The textarea is kept positioned near the cursor to prevent the\n  // fact that it'll be scrolled into view on input from scrolling\n  // our fake cursor out of view. On webkit, when wrap=off, paste is\n  // very slow. So make the area wide instead.\n  if (webkit) { te.style.width = \"1000px\"; }\n  else { te.setAttribute(\"wrap\", \"off\"); }\n  // If border: 0; -- iOS fails to open keyboard (issue #1287)\n  if (ios) { te.style.border = \"1px solid black\"; }\n  disableBrowserMagic(te);\n  return div\n}\n\n// The publicly visible API. Note that methodOp(f) means\n// 'wrap f in an operation, performed on its `this` parameter'.\n\n// This is not the complete set of editor methods. Most of the\n// methods defined on the Doc type are also injected into\n// CodeMirror.prototype, for backwards compatibility and\n// convenience.\n\nvar addEditorMethods = function(CodeMirror) {\n  var optionHandlers = CodeMirror.optionHandlers;\n\n  var helpers = CodeMirror.helpers = {};\n\n  CodeMirror.prototype = {\n    constructor: CodeMirror,\n    focus: function(){window.focus(); this.display.input.focus();},\n\n    setOption: function(option, value) {\n      var options = this.options, old = options[option];\n      if (options[option] == value && option != \"mode\") { return }\n      options[option] = value;\n      if (optionHandlers.hasOwnProperty(option))\n        { operation(this, optionHandlers[option])(this, value, old); }\n      signal(this, \"optionChange\", this, option);\n    },\n\n    getOption: function(option) {return this.options[option]},\n    getDoc: function() {return this.doc},\n\n    addKeyMap: function(map$$1, bottom) {\n      this.state.keyMaps[bottom ? \"push\" : \"unshift\"](getKeyMap(map$$1));\n    },\n    removeKeyMap: function(map$$1) {\n      var maps = this.state.keyMaps;\n      for (var i = 0; i < maps.length; ++i)\n        { if (maps[i] == map$$1 || maps[i].name == map$$1) {\n          maps.splice(i, 1);\n          return true\n        } }\n    },\n\n    addOverlay: methodOp(function(spec, options) {\n      var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec);\n      if (mode.startState) { throw new Error(\"Overlays may not be stateful.\") }\n      insertSorted(this.state.overlays,\n                   {mode: mode, modeSpec: spec, opaque: options && options.opaque,\n                    priority: (options && options.priority) || 0},\n                   function (overlay) { return overlay.priority; });\n      this.state.modeGen++;\n      regChange(this);\n    }),\n    removeOverlay: methodOp(function(spec) {\n      var this$1 = this;\n\n      var overlays = this.state.overlays;\n      for (var i = 0; i < overlays.length; ++i) {\n        var cur = overlays[i].modeSpec;\n        if (cur == spec || typeof spec == \"string\" && cur.name == spec) {\n          overlays.splice(i, 1);\n          this$1.state.modeGen++;\n          regChange(this$1);\n          return\n        }\n      }\n    }),\n\n    indentLine: methodOp(function(n, dir, aggressive) {\n      if (typeof dir != \"string\" && typeof dir != \"number\") {\n        if (dir == null) { dir = this.options.smartIndent ? \"smart\" : \"prev\"; }\n        else { dir = dir ? \"add\" : \"subtract\"; }\n      }\n      if (isLine(this.doc, n)) { indentLine(this, n, dir, aggressive); }\n    }),\n    indentSelection: methodOp(function(how) {\n      var this$1 = this;\n\n      var ranges = this.doc.sel.ranges, end = -1;\n      for (var i = 0; i < ranges.length; i++) {\n        var range$$1 = ranges[i];\n        if (!range$$1.empty()) {\n          var from = range$$1.from(), to = range$$1.to();\n          var start = Math.max(end, from.line);\n          end = Math.min(this$1.lastLine(), to.line - (to.ch ? 0 : 1)) + 1;\n          for (var j = start; j < end; ++j)\n            { indentLine(this$1, j, how); }\n          var newRanges = this$1.doc.sel.ranges;\n          if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0)\n            { replaceOneSelection(this$1.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll); }\n        } else if (range$$1.head.line > end) {\n          indentLine(this$1, range$$1.head.line, how, true);\n          end = range$$1.head.line;\n          if (i == this$1.doc.sel.primIndex) { ensureCursorVisible(this$1); }\n        }\n      }\n    }),\n\n    // Fetch the parser token for a given character. Useful for hacks\n    // that want to inspect the mode state (say, for completion).\n    getTokenAt: function(pos, precise) {\n      return takeToken(this, pos, precise)\n    },\n\n    getLineTokens: function(line, precise) {\n      return takeToken(this, Pos(line), precise, true)\n    },\n\n    getTokenTypeAt: function(pos) {\n      pos = clipPos(this.doc, pos);\n      var styles = getLineStyles(this, getLine(this.doc, pos.line));\n      var before = 0, after = (styles.length - 1) / 2, ch = pos.ch;\n      var type;\n      if (ch == 0) { type = styles[2]; }\n      else { for (;;) {\n        var mid = (before + after) >> 1;\n        if ((mid ? styles[mid * 2 - 1] : 0) >= ch) { after = mid; }\n        else if (styles[mid * 2 + 1] < ch) { before = mid + 1; }\n        else { type = styles[mid * 2 + 2]; break }\n      } }\n      var cut = type ? type.indexOf(\"overlay \") : -1;\n      return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1)\n    },\n\n    getModeAt: function(pos) {\n      var mode = this.doc.mode;\n      if (!mode.innerMode) { return mode }\n      return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode\n    },\n\n    getHelper: function(pos, type) {\n      return this.getHelpers(pos, type)[0]\n    },\n\n    getHelpers: function(pos, type) {\n      var this$1 = this;\n\n      var found = [];\n      if (!helpers.hasOwnProperty(type)) { return found }\n      var help = helpers[type], mode = this.getModeAt(pos);\n      if (typeof mode[type] == \"string\") {\n        if (help[mode[type]]) { found.push(help[mode[type]]); }\n      } else if (mode[type]) {\n        for (var i = 0; i < mode[type].length; i++) {\n          var val = help[mode[type][i]];\n          if (val) { found.push(val); }\n        }\n      } else if (mode.helperType && help[mode.helperType]) {\n        found.push(help[mode.helperType]);\n      } else if (help[mode.name]) {\n        found.push(help[mode.name]);\n      }\n      for (var i$1 = 0; i$1 < help._global.length; i$1++) {\n        var cur = help._global[i$1];\n        if (cur.pred(mode, this$1) && indexOf(found, cur.val) == -1)\n          { found.push(cur.val); }\n      }\n      return found\n    },\n\n    getStateAfter: function(line, precise) {\n      var doc = this.doc;\n      line = clipLine(doc, line == null ? doc.first + doc.size - 1: line);\n      return getStateBefore(this, line + 1, precise)\n    },\n\n    cursorCoords: function(start, mode) {\n      var pos, range$$1 = this.doc.sel.primary();\n      if (start == null) { pos = range$$1.head; }\n      else if (typeof start == \"object\") { pos = clipPos(this.doc, start); }\n      else { pos = start ? range$$1.from() : range$$1.to(); }\n      return cursorCoords(this, pos, mode || \"page\")\n    },\n\n    charCoords: function(pos, mode) {\n      return charCoords(this, clipPos(this.doc, pos), mode || \"page\")\n    },\n\n    coordsChar: function(coords, mode) {\n      coords = fromCoordSystem(this, coords, mode || \"page\");\n      return coordsChar(this, coords.left, coords.top)\n    },\n\n    lineAtHeight: function(height, mode) {\n      height = fromCoordSystem(this, {top: height, left: 0}, mode || \"page\").top;\n      return lineAtHeight(this.doc, height + this.display.viewOffset)\n    },\n    heightAtLine: function(line, mode, includeWidgets) {\n      var end = false, lineObj;\n      if (typeof line == \"number\") {\n        var last = this.doc.first + this.doc.size - 1;\n        if (line < this.doc.first) { line = this.doc.first; }\n        else if (line > last) { line = last; end = true; }\n        lineObj = getLine(this.doc, line);\n      } else {\n        lineObj = line;\n      }\n      return intoCoordSystem(this, lineObj, {top: 0, left: 0}, mode || \"page\", includeWidgets || end).top +\n        (end ? this.doc.height - heightAtLine(lineObj) : 0)\n    },\n\n    defaultTextHeight: function() { return textHeight(this.display) },\n    defaultCharWidth: function() { return charWidth(this.display) },\n\n    getViewport: function() { return {from: this.display.viewFrom, to: this.display.viewTo}},\n\n    addWidget: function(pos, node, scroll, vert, horiz) {\n      var display = this.display;\n      pos = cursorCoords(this, clipPos(this.doc, pos));\n      var top = pos.bottom, left = pos.left;\n      node.style.position = \"absolute\";\n      node.setAttribute(\"cm-ignore-events\", \"true\");\n      this.display.input.setUneditable(node);\n      display.sizer.appendChild(node);\n      if (vert == \"over\") {\n        top = pos.top;\n      } else if (vert == \"above\" || vert == \"near\") {\n        var vspace = Math.max(display.wrapper.clientHeight, this.doc.height),\n        hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth);\n        // Default to positioning above (if specified and possible); otherwise default to positioning below\n        if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight)\n          { top = pos.top - node.offsetHeight; }\n        else if (pos.bottom + node.offsetHeight <= vspace)\n          { top = pos.bottom; }\n        if (left + node.offsetWidth > hspace)\n          { left = hspace - node.offsetWidth; }\n      }\n      node.style.top = top + \"px\";\n      node.style.left = node.style.right = \"\";\n      if (horiz == \"right\") {\n        left = display.sizer.clientWidth - node.offsetWidth;\n        node.style.right = \"0px\";\n      } else {\n        if (horiz == \"left\") { left = 0; }\n        else if (horiz == \"middle\") { left = (display.sizer.clientWidth - node.offsetWidth) / 2; }\n        node.style.left = left + \"px\";\n      }\n      if (scroll)\n        { scrollIntoView(this, {left: left, top: top, right: left + node.offsetWidth, bottom: top + node.offsetHeight}); }\n    },\n\n    triggerOnKeyDown: methodOp(onKeyDown),\n    triggerOnKeyPress: methodOp(onKeyPress),\n    triggerOnKeyUp: onKeyUp,\n\n    execCommand: function(cmd) {\n      if (commands.hasOwnProperty(cmd))\n        { return commands[cmd].call(null, this) }\n    },\n\n    triggerElectric: methodOp(function(text) { triggerElectric(this, text); }),\n\n    findPosH: function(from, amount, unit, visually) {\n      var this$1 = this;\n\n      var dir = 1;\n      if (amount < 0) { dir = -1; amount = -amount; }\n      var cur = clipPos(this.doc, from);\n      for (var i = 0; i < amount; ++i) {\n        cur = findPosH(this$1.doc, cur, dir, unit, visually);\n        if (cur.hitSide) { break }\n      }\n      return cur\n    },\n\n    moveH: methodOp(function(dir, unit) {\n      var this$1 = this;\n\n      this.extendSelectionsBy(function (range$$1) {\n        if (this$1.display.shift || this$1.doc.extend || range$$1.empty())\n          { return findPosH(this$1.doc, range$$1.head, dir, unit, this$1.options.rtlMoveVisually) }\n        else\n          { return dir < 0 ? range$$1.from() : range$$1.to() }\n      }, sel_move);\n    }),\n\n    deleteH: methodOp(function(dir, unit) {\n      var sel = this.doc.sel, doc = this.doc;\n      if (sel.somethingSelected())\n        { doc.replaceSelection(\"\", null, \"+delete\"); }\n      else\n        { deleteNearSelection(this, function (range$$1) {\n          var other = findPosH(doc, range$$1.head, dir, unit, false);\n          return dir < 0 ? {from: other, to: range$$1.head} : {from: range$$1.head, to: other}\n        }); }\n    }),\n\n    findPosV: function(from, amount, unit, goalColumn) {\n      var this$1 = this;\n\n      var dir = 1, x = goalColumn;\n      if (amount < 0) { dir = -1; amount = -amount; }\n      var cur = clipPos(this.doc, from);\n      for (var i = 0; i < amount; ++i) {\n        var coords = cursorCoords(this$1, cur, \"div\");\n        if (x == null) { x = coords.left; }\n        else { coords.left = x; }\n        cur = findPosV(this$1, coords, dir, unit);\n        if (cur.hitSide) { break }\n      }\n      return cur\n    },\n\n    moveV: methodOp(function(dir, unit) {\n      var this$1 = this;\n\n      var doc = this.doc, goals = [];\n      var collapse = !this.display.shift && !doc.extend && doc.sel.somethingSelected();\n      doc.extendSelectionsBy(function (range$$1) {\n        if (collapse)\n          { return dir < 0 ? range$$1.from() : range$$1.to() }\n        var headPos = cursorCoords(this$1, range$$1.head, \"div\");\n        if (range$$1.goalColumn != null) { headPos.left = range$$1.goalColumn; }\n        goals.push(headPos.left);\n        var pos = findPosV(this$1, headPos, dir, unit);\n        if (unit == \"page\" && range$$1 == doc.sel.primary())\n          { addToScrollPos(this$1, null, charCoords(this$1, pos, \"div\").top - headPos.top); }\n        return pos\n      }, sel_move);\n      if (goals.length) { for (var i = 0; i < doc.sel.ranges.length; i++)\n        { doc.sel.ranges[i].goalColumn = goals[i]; } }\n    }),\n\n    // Find the word at the given position (as returned by coordsChar).\n    findWordAt: function(pos) {\n      var doc = this.doc, line = getLine(doc, pos.line).text;\n      var start = pos.ch, end = pos.ch;\n      if (line) {\n        var helper = this.getHelper(pos, \"wordChars\");\n        if ((pos.sticky == \"before\" || end == line.length) && start) { --start; } else { ++end; }\n        var startChar = line.charAt(start);\n        var check = isWordChar(startChar, helper)\n          ? function (ch) { return isWordChar(ch, helper); }\n          : /\\s/.test(startChar) ? function (ch) { return /\\s/.test(ch); }\n          : function (ch) { return (!/\\s/.test(ch) && !isWordChar(ch)); };\n        while (start > 0 && check(line.charAt(start - 1))) { --start; }\n        while (end < line.length && check(line.charAt(end))) { ++end; }\n      }\n      return new Range(Pos(pos.line, start), Pos(pos.line, end))\n    },\n\n    toggleOverwrite: function(value) {\n      if (value != null && value == this.state.overwrite) { return }\n      if (this.state.overwrite = !this.state.overwrite)\n        { addClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n      else\n        { rmClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n\n      signal(this, \"overwriteToggle\", this, this.state.overwrite);\n    },\n    hasFocus: function() { return this.display.input.getField() == activeElt() },\n    isReadOnly: function() { return !!(this.options.readOnly || this.doc.cantEdit) },\n\n    scrollTo: methodOp(function(x, y) {\n      if (x != null || y != null) { resolveScrollToPos(this); }\n      if (x != null) { this.curOp.scrollLeft = x; }\n      if (y != null) { this.curOp.scrollTop = y; }\n    }),\n    getScrollInfo: function() {\n      var scroller = this.display.scroller;\n      return {left: scroller.scrollLeft, top: scroller.scrollTop,\n              height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight,\n              width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth,\n              clientHeight: displayHeight(this), clientWidth: displayWidth(this)}\n    },\n\n    scrollIntoView: methodOp(function(range$$1, margin) {\n      if (range$$1 == null) {\n        range$$1 = {from: this.doc.sel.primary().head, to: null};\n        if (margin == null) { margin = this.options.cursorScrollMargin; }\n      } else if (typeof range$$1 == \"number\") {\n        range$$1 = {from: Pos(range$$1, 0), to: null};\n      } else if (range$$1.from == null) {\n        range$$1 = {from: range$$1, to: null};\n      }\n      if (!range$$1.to) { range$$1.to = range$$1.from; }\n      range$$1.margin = margin || 0;\n\n      if (range$$1.from.line != null) {\n        resolveScrollToPos(this);\n        this.curOp.scrollToPos = range$$1;\n      } else {\n        var sPos = calculateScrollPos(this, {\n          left: Math.min(range$$1.from.left, range$$1.to.left),\n          top: Math.min(range$$1.from.top, range$$1.to.top) - range$$1.margin,\n          right: Math.max(range$$1.from.right, range$$1.to.right),\n          bottom: Math.max(range$$1.from.bottom, range$$1.to.bottom) + range$$1.margin\n        });\n        this.scrollTo(sPos.scrollLeft, sPos.scrollTop);\n      }\n    }),\n\n    setSize: methodOp(function(width, height) {\n      var this$1 = this;\n\n      var interpret = function (val) { return typeof val == \"number\" || /^\\d+$/.test(String(val)) ? val + \"px\" : val; };\n      if (width != null) { this.display.wrapper.style.width = interpret(width); }\n      if (height != null) { this.display.wrapper.style.height = interpret(height); }\n      if (this.options.lineWrapping) { clearLineMeasurementCache(this); }\n      var lineNo$$1 = this.display.viewFrom;\n      this.doc.iter(lineNo$$1, this.display.viewTo, function (line) {\n        if (line.widgets) { for (var i = 0; i < line.widgets.length; i++)\n          { if (line.widgets[i].noHScroll) { regLineChange(this$1, lineNo$$1, \"widget\"); break } } }\n        ++lineNo$$1;\n      });\n      this.curOp.forceUpdate = true;\n      signal(this, \"refresh\", this);\n    }),\n\n    operation: function(f){return runInOp(this, f)},\n\n    refresh: methodOp(function() {\n      var oldHeight = this.display.cachedTextHeight;\n      regChange(this);\n      this.curOp.forceUpdate = true;\n      clearCaches(this);\n      this.scrollTo(this.doc.scrollLeft, this.doc.scrollTop);\n      updateGutterSpace(this);\n      if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5)\n        { estimateLineHeights(this); }\n      signal(this, \"refresh\", this);\n    }),\n\n    swapDoc: methodOp(function(doc) {\n      var old = this.doc;\n      old.cm = null;\n      attachDoc(this, doc);\n      clearCaches(this);\n      this.display.input.reset();\n      this.scrollTo(doc.scrollLeft, doc.scrollTop);\n      this.curOp.forceScroll = true;\n      signalLater(this, \"swapDoc\", this, old);\n      return old\n    }),\n\n    getInputField: function(){return this.display.input.getField()},\n    getWrapperElement: function(){return this.display.wrapper},\n    getScrollerElement: function(){return this.display.scroller},\n    getGutterElement: function(){return this.display.gutters}\n  };\n  eventMixin(CodeMirror);\n\n  CodeMirror.registerHelper = function(type, name, value) {\n    if (!helpers.hasOwnProperty(type)) { helpers[type] = CodeMirror[type] = {_global: []}; }\n    helpers[type][name] = value;\n  };\n  CodeMirror.registerGlobalHelper = function(type, name, predicate, value) {\n    CodeMirror.registerHelper(type, name, value);\n    helpers[type]._global.push({pred: predicate, val: value});\n  };\n};\n\n// Used for horizontal relative motion. Dir is -1 or 1 (left or\n// right), unit can be \"char\", \"column\" (like char, but doesn't\n// cross line boundaries), \"word\" (across next word), or \"group\" (to\n// the start of next group of word or non-word-non-whitespace\n// chars). The visually param controls whether, in right-to-left\n// text, direction 1 means to move towards the next index in the\n// string, or towards the character to the right of the current\n// position. The resulting position will have a hitSide=true\n// property if it reached the end of the document.\nfunction findPosH(doc, pos, dir, unit, visually) {\n  var oldPos = pos;\n  var origDir = dir;\n  var lineObj = getLine(doc, pos.line);\n  function findNextLine() {\n    var l = pos.line + dir;\n    if (l < doc.first || l >= doc.first + doc.size) { return false }\n    pos = new Pos(l, pos.ch, pos.sticky);\n    return lineObj = getLine(doc, l)\n  }\n  function moveOnce(boundToLine) {\n    var next;\n    if (visually) {\n      next = moveVisually(doc.cm, lineObj, pos, dir);\n    } else {\n      next = moveLogically(lineObj, pos, dir);\n    }\n    if (next == null) {\n      if (!boundToLine && findNextLine())\n        { pos = endOfLine(visually, doc.cm, lineObj, pos.line, dir); }\n      else\n        { return false }\n    } else {\n      pos = next;\n    }\n    return true\n  }\n\n  if (unit == \"char\") {\n    moveOnce();\n  } else if (unit == \"column\") {\n    moveOnce(true);\n  } else if (unit == \"word\" || unit == \"group\") {\n    var sawType = null, group = unit == \"group\";\n    var helper = doc.cm && doc.cm.getHelper(pos, \"wordChars\");\n    for (var first = true;; first = false) {\n      if (dir < 0 && !moveOnce(!first)) { break }\n      var cur = lineObj.text.charAt(pos.ch) || \"\\n\";\n      var type = isWordChar(cur, helper) ? \"w\"\n        : group && cur == \"\\n\" ? \"n\"\n        : !group || /\\s/.test(cur) ? null\n        : \"p\";\n      if (group && !first && !type) { type = \"s\"; }\n      if (sawType && sawType != type) {\n        if (dir < 0) {dir = 1; moveOnce(); pos.sticky = \"after\";}\n        break\n      }\n\n      if (type) { sawType = type; }\n      if (dir > 0 && !moveOnce(!first)) { break }\n    }\n  }\n  var result = skipAtomic(doc, pos, oldPos, origDir, true);\n  if (equalCursorPos(oldPos, result)) { result.hitSide = true; }\n  return result\n}\n\n// For relative vertical movement. Dir may be -1 or 1. Unit can be\n// \"page\" or \"line\". The resulting position will have a hitSide=true\n// property if it reached the end of the document.\nfunction findPosV(cm, pos, dir, unit) {\n  var doc = cm.doc, x = pos.left, y;\n  if (unit == \"page\") {\n    var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight);\n    var moveAmount = Math.max(pageSize - .5 * textHeight(cm.display), 3);\n    y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount;\n\n  } else if (unit == \"line\") {\n    y = dir > 0 ? pos.bottom + 3 : pos.top - 3;\n  }\n  var target;\n  for (;;) {\n    target = coordsChar(cm, x, y);\n    if (!target.outside) { break }\n    if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break }\n    y += dir * 5;\n  }\n  return target\n}\n\n// CONTENTEDITABLE INPUT STYLE\n\nvar ContentEditableInput = function(cm) {\n  this.cm = cm;\n  this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null;\n  this.polling = new Delayed();\n  this.composing = null;\n  this.gracePeriod = false;\n  this.readDOMTimeout = null;\n};\n\nContentEditableInput.prototype.init = function (display) {\n    var this$1 = this;\n\n  var input = this, cm = input.cm;\n  var div = input.div = display.lineDiv;\n  disableBrowserMagic(div, cm.options.spellcheck);\n\n  on(div, \"paste\", function (e) {\n    if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n    // IE doesn't fire input events, so we schedule a read for the pasted content in this way\n    if (ie_version <= 11) { setTimeout(operation(cm, function () { return this$1.updateFromDOM(); }), 20); }\n  });\n\n  on(div, \"compositionstart\", function (e) {\n    this$1.composing = {data: e.data, done: false};\n  });\n  on(div, \"compositionupdate\", function (e) {\n    if (!this$1.composing) { this$1.composing = {data: e.data, done: false}; }\n  });\n  on(div, \"compositionend\", function (e) {\n    if (this$1.composing) {\n      if (e.data != this$1.composing.data) { this$1.readFromDOMSoon(); }\n      this$1.composing.done = true;\n    }\n  });\n\n  on(div, \"touchstart\", function () { return input.forceCompositionEnd(); });\n\n  on(div, \"input\", function () {\n    if (!this$1.composing) { this$1.readFromDOMSoon(); }\n  });\n\n  function onCopyCut(e) {\n    if (signalDOMEvent(cm, e)) { return }\n    if (cm.somethingSelected()) {\n      setLastCopied({lineWise: false, text: cm.getSelections()});\n      if (e.type == \"cut\") { cm.replaceSelection(\"\", null, \"cut\"); }\n    } else if (!cm.options.lineWiseCopyCut) {\n      return\n    } else {\n      var ranges = copyableRanges(cm);\n      setLastCopied({lineWise: true, text: ranges.text});\n      if (e.type == \"cut\") {\n        cm.operation(function () {\n          cm.setSelections(ranges.ranges, 0, sel_dontScroll);\n          cm.replaceSelection(\"\", null, \"cut\");\n        });\n      }\n    }\n    if (e.clipboardData) {\n      e.clipboardData.clearData();\n      var content = lastCopied.text.join(\"\\n\");\n      // iOS exposes the clipboard API, but seems to discard content inserted into it\n      e.clipboardData.setData(\"Text\", content);\n      if (e.clipboardData.getData(\"Text\") == content) {\n        e.preventDefault();\n        return\n      }\n    }\n    // Old-fashioned briefly-focus-a-textarea hack\n    var kludge = hiddenTextarea(), te = kludge.firstChild;\n    cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild);\n    te.value = lastCopied.text.join(\"\\n\");\n    var hadFocus = document.activeElement;\n    selectInput(te);\n    setTimeout(function () {\n      cm.display.lineSpace.removeChild(kludge);\n      hadFocus.focus();\n      if (hadFocus == div) { input.showPrimarySelection(); }\n    }, 50);\n  }\n  on(div, \"copy\", onCopyCut);\n  on(div, \"cut\", onCopyCut);\n};\n\nContentEditableInput.prototype.prepareSelection = function () {\n  var result = prepareSelection(this.cm, false);\n  result.focus = this.cm.state.focused;\n  return result\n};\n\nContentEditableInput.prototype.showSelection = function (info, takeFocus) {\n  if (!info || !this.cm.display.view.length) { return }\n  if (info.focus || takeFocus) { this.showPrimarySelection(); }\n  this.showMultipleSelections(info);\n};\n\nContentEditableInput.prototype.showPrimarySelection = function () {\n  var sel = window.getSelection(), cm = this.cm, prim = cm.doc.sel.primary();\n  var from = prim.from(), to = prim.to();\n\n  if (cm.display.viewTo == cm.display.viewFrom || from.line >= cm.display.viewTo || to.line < cm.display.viewFrom) {\n    sel.removeAllRanges();\n    return\n  }\n\n  var curAnchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n  var curFocus = domToPos(cm, sel.focusNode, sel.focusOffset);\n  if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad &&\n      cmp(minPos(curAnchor, curFocus), from) == 0 &&\n      cmp(maxPos(curAnchor, curFocus), to) == 0)\n    { return }\n\n  var view = cm.display.view;\n  var start = (from.line >= cm.display.viewFrom && posToDOM(cm, from)) ||\n      {node: view[0].measure.map[2], offset: 0};\n  var end = to.line < cm.display.viewTo && posToDOM(cm, to);\n  if (!end) {\n    var measure = view[view.length - 1].measure;\n    var map$$1 = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map;\n    end = {node: map$$1[map$$1.length - 1], offset: map$$1[map$$1.length - 2] - map$$1[map$$1.length - 3]};\n  }\n\n  if (!start || !end) {\n    sel.removeAllRanges();\n    return\n  }\n\n  var old = sel.rangeCount && sel.getRangeAt(0), rng;\n  try { rng = range(start.node, start.offset, end.offset, end.node); }\n  catch(e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible\n  if (rng) {\n    if (!gecko && cm.state.focused) {\n      sel.collapse(start.node, start.offset);\n      if (!rng.collapsed) {\n        sel.removeAllRanges();\n        sel.addRange(rng);\n      }\n    } else {\n      sel.removeAllRanges();\n      sel.addRange(rng);\n    }\n    if (old && sel.anchorNode == null) { sel.addRange(old); }\n    else if (gecko) { this.startGracePeriod(); }\n  }\n  this.rememberSelection();\n};\n\nContentEditableInput.prototype.startGracePeriod = function () {\n    var this$1 = this;\n\n  clearTimeout(this.gracePeriod);\n  this.gracePeriod = setTimeout(function () {\n    this$1.gracePeriod = false;\n    if (this$1.selectionChanged())\n      { this$1.cm.operation(function () { return this$1.cm.curOp.selectionChanged = true; }); }\n  }, 20);\n};\n\nContentEditableInput.prototype.showMultipleSelections = function (info) {\n  removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors);\n  removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection);\n};\n\nContentEditableInput.prototype.rememberSelection = function () {\n  var sel = window.getSelection();\n  this.lastAnchorNode = sel.anchorNode; this.lastAnchorOffset = sel.anchorOffset;\n  this.lastFocusNode = sel.focusNode; this.lastFocusOffset = sel.focusOffset;\n};\n\nContentEditableInput.prototype.selectionInEditor = function () {\n  var sel = window.getSelection();\n  if (!sel.rangeCount) { return false }\n  var node = sel.getRangeAt(0).commonAncestorContainer;\n  return contains(this.div, node)\n};\n\nContentEditableInput.prototype.focus = function () {\n  if (this.cm.options.readOnly != \"nocursor\") {\n    if (!this.selectionInEditor())\n      { this.showSelection(this.prepareSelection(), true); }\n    this.div.focus();\n  }\n};\nContentEditableInput.prototype.blur = function () { this.div.blur(); };\nContentEditableInput.prototype.getField = function () { return this.div };\n\nContentEditableInput.prototype.supportsTouch = function () { return true };\n\nContentEditableInput.prototype.receivedFocus = function () {\n  var input = this;\n  if (this.selectionInEditor())\n    { this.pollSelection(); }\n  else\n    { runInOp(this.cm, function () { return input.cm.curOp.selectionChanged = true; }); }\n\n  function poll() {\n    if (input.cm.state.focused) {\n      input.pollSelection();\n      input.polling.set(input.cm.options.pollInterval, poll);\n    }\n  }\n  this.polling.set(this.cm.options.pollInterval, poll);\n};\n\nContentEditableInput.prototype.selectionChanged = function () {\n  var sel = window.getSelection();\n  return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset ||\n    sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset\n};\n\nContentEditableInput.prototype.pollSelection = function () {\n  if (this.readDOMTimeout != null || this.gracePeriod || !this.selectionChanged()) { return }\n  var sel = window.getSelection(), cm = this.cm;\n  // On Android Chrome (version 56, at least), backspacing into an\n  // uneditable block element will put the cursor in that element,\n  // and then, because it's not editable, hide the virtual keyboard.\n  // Because Android doesn't allow us to actually detect backspace\n  // presses in a sane way, this code checks for when that happens\n  // and simulates a backspace press in this case.\n  if (android && chrome && this.cm.options.gutters.length && isInGutter(sel.anchorNode)) {\n    this.cm.triggerOnKeyDown({type: \"keydown\", keyCode: 8, preventDefault: Math.abs});\n    this.blur();\n    this.focus();\n    return\n  }\n  if (this.composing) { return }\n  this.rememberSelection();\n  var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n  var head = domToPos(cm, sel.focusNode, sel.focusOffset);\n  if (anchor && head) { runInOp(cm, function () {\n    setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll);\n    if (anchor.bad || head.bad) { cm.curOp.selectionChanged = true; }\n  }); }\n};\n\nContentEditableInput.prototype.pollContent = function () {\n  if (this.readDOMTimeout != null) {\n    clearTimeout(this.readDOMTimeout);\n    this.readDOMTimeout = null;\n  }\n\n  var cm = this.cm, display = cm.display, sel = cm.doc.sel.primary();\n  var from = sel.from(), to = sel.to();\n  if (from.ch == 0 && from.line > cm.firstLine())\n    { from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length); }\n  if (to.ch == getLine(cm.doc, to.line).text.length && to.line < cm.lastLine())\n    { to = Pos(to.line + 1, 0); }\n  if (from.line < display.viewFrom || to.line > display.viewTo - 1) { return false }\n\n  var fromIndex, fromLine, fromNode;\n  if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) {\n    fromLine = lineNo(display.view[0].line);\n    fromNode = display.view[0].node;\n  } else {\n    fromLine = lineNo(display.view[fromIndex].line);\n    fromNode = display.view[fromIndex - 1].node.nextSibling;\n  }\n  var toIndex = findViewIndex(cm, to.line);\n  var toLine, toNode;\n  if (toIndex == display.view.length - 1) {\n    toLine = display.viewTo - 1;\n    toNode = display.lineDiv.lastChild;\n  } else {\n    toLine = lineNo(display.view[toIndex + 1].line) - 1;\n    toNode = display.view[toIndex + 1].node.previousSibling;\n  }\n\n  if (!fromNode) { return false }\n  var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine));\n  var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length));\n  while (newText.length > 1 && oldText.length > 1) {\n    if (lst(newText) == lst(oldText)) { newText.pop(); oldText.pop(); toLine--; }\n    else if (newText[0] == oldText[0]) { newText.shift(); oldText.shift(); fromLine++; }\n    else { break }\n  }\n\n  var cutFront = 0, cutEnd = 0;\n  var newTop = newText[0], oldTop = oldText[0], maxCutFront = Math.min(newTop.length, oldTop.length);\n  while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront))\n    { ++cutFront; }\n  var newBot = lst(newText), oldBot = lst(oldText);\n  var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0),\n                           oldBot.length - (oldText.length == 1 ? cutFront : 0));\n  while (cutEnd < maxCutEnd &&\n         newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1))\n    { ++cutEnd; }\n  // Try to move start of change to start of selection if ambiguous\n  if (newText.length == 1 && oldText.length == 1 && fromLine == from.line) {\n    while (cutFront && cutFront > from.ch &&\n           newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) {\n      cutFront--;\n      cutEnd++;\n    }\n  }\n\n  newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd).replace(/^\\u200b+/, \"\");\n  newText[0] = newText[0].slice(cutFront).replace(/\\u200b+$/, \"\");\n\n  var chFrom = Pos(fromLine, cutFront);\n  var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0);\n  if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) {\n    replaceRange(cm.doc, newText, chFrom, chTo, \"+input\");\n    return true\n  }\n};\n\nContentEditableInput.prototype.ensurePolled = function () {\n  this.forceCompositionEnd();\n};\nContentEditableInput.prototype.reset = function () {\n  this.forceCompositionEnd();\n};\nContentEditableInput.prototype.forceCompositionEnd = function () {\n  if (!this.composing) { return }\n  clearTimeout(this.readDOMTimeout);\n  this.composing = null;\n  this.updateFromDOM();\n  this.div.blur();\n  this.div.focus();\n};\nContentEditableInput.prototype.readFromDOMSoon = function () {\n    var this$1 = this;\n\n  if (this.readDOMTimeout != null) { return }\n  this.readDOMTimeout = setTimeout(function () {\n    this$1.readDOMTimeout = null;\n    if (this$1.composing) {\n      if (this$1.composing.done) { this$1.composing = null; }\n      else { return }\n    }\n    this$1.updateFromDOM();\n  }, 80);\n};\n\nContentEditableInput.prototype.updateFromDOM = function () {\n    var this$1 = this;\n\n  if (this.cm.isReadOnly() || !this.pollContent())\n    { runInOp(this.cm, function () { return regChange(this$1.cm); }); }\n};\n\nContentEditableInput.prototype.setUneditable = function (node) {\n  node.contentEditable = \"false\";\n};\n\nContentEditableInput.prototype.onKeyPress = function (e) {\n  if (e.charCode == 0) { return }\n  e.preventDefault();\n  if (!this.cm.isReadOnly())\n    { operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0); }\n};\n\nContentEditableInput.prototype.readOnlyChanged = function (val) {\n  this.div.contentEditable = String(val != \"nocursor\");\n};\n\nContentEditableInput.prototype.onContextMenu = function () {};\nContentEditableInput.prototype.resetPosition = function () {};\n\nContentEditableInput.prototype.needsContentAttribute = true;\n\nfunction posToDOM(cm, pos) {\n  var view = findViewForLine(cm, pos.line);\n  if (!view || view.hidden) { return null }\n  var line = getLine(cm.doc, pos.line);\n  var info = mapFromLineView(view, line, pos.line);\n\n  var order = getOrder(line, cm.doc.direction), side = \"left\";\n  if (order) {\n    var partPos = getBidiPartAt(order, pos.ch);\n    side = partPos % 2 ? \"right\" : \"left\";\n  }\n  var result = nodeAndOffsetInLineMap(info.map, pos.ch, side);\n  result.offset = result.collapse == \"right\" ? result.end : result.start;\n  return result\n}\n\nfunction isInGutter(node) {\n  for (var scan = node; scan; scan = scan.parentNode)\n    { if (/CodeMirror-gutter-wrapper/.test(scan.className)) { return true } }\n  return false\n}\n\nfunction badPos(pos, bad) { if (bad) { pos.bad = true; } return pos }\n\nfunction domTextBetween(cm, from, to, fromLine, toLine) {\n  var text = \"\", closing = false, lineSep = cm.doc.lineSeparator();\n  function recognizeMarker(id) { return function (marker) { return marker.id == id; } }\n  function close() {\n    if (closing) {\n      text += lineSep;\n      closing = false;\n    }\n  }\n  function addText(str) {\n    if (str) {\n      close();\n      text += str;\n    }\n  }\n  function walk(node) {\n    if (node.nodeType == 1) {\n      var cmText = node.getAttribute(\"cm-text\");\n      if (cmText != null) {\n        addText(cmText || node.textContent.replace(/\\u200b/g, \"\"));\n        return\n      }\n      var markerID = node.getAttribute(\"cm-marker\"), range$$1;\n      if (markerID) {\n        var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID));\n        if (found.length && (range$$1 = found[0].find()))\n          { addText(getBetween(cm.doc, range$$1.from, range$$1.to).join(lineSep)); }\n        return\n      }\n      if (node.getAttribute(\"contenteditable\") == \"false\") { return }\n      var isBlock = /^(pre|div|p)$/i.test(node.nodeName);\n      if (isBlock) { close(); }\n      for (var i = 0; i < node.childNodes.length; i++)\n        { walk(node.childNodes[i]); }\n      if (isBlock) { closing = true; }\n    } else if (node.nodeType == 3) {\n      addText(node.nodeValue);\n    }\n  }\n  for (;;) {\n    walk(from);\n    if (from == to) { break }\n    from = from.nextSibling;\n  }\n  return text\n}\n\nfunction domToPos(cm, node, offset) {\n  var lineNode;\n  if (node == cm.display.lineDiv) {\n    lineNode = cm.display.lineDiv.childNodes[offset];\n    if (!lineNode) { return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true) }\n    node = null; offset = 0;\n  } else {\n    for (lineNode = node;; lineNode = lineNode.parentNode) {\n      if (!lineNode || lineNode == cm.display.lineDiv) { return null }\n      if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) { break }\n    }\n  }\n  for (var i = 0; i < cm.display.view.length; i++) {\n    var lineView = cm.display.view[i];\n    if (lineView.node == lineNode)\n      { return locateNodeInLineView(lineView, node, offset) }\n  }\n}\n\nfunction locateNodeInLineView(lineView, node, offset) {\n  var wrapper = lineView.text.firstChild, bad = false;\n  if (!node || !contains(wrapper, node)) { return badPos(Pos(lineNo(lineView.line), 0), true) }\n  if (node == wrapper) {\n    bad = true;\n    node = wrapper.childNodes[offset];\n    offset = 0;\n    if (!node) {\n      var line = lineView.rest ? lst(lineView.rest) : lineView.line;\n      return badPos(Pos(lineNo(line), line.text.length), bad)\n    }\n  }\n\n  var textNode = node.nodeType == 3 ? node : null, topNode = node;\n  if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) {\n    textNode = node.firstChild;\n    if (offset) { offset = textNode.nodeValue.length; }\n  }\n  while (topNode.parentNode != wrapper) { topNode = topNode.parentNode; }\n  var measure = lineView.measure, maps = measure.maps;\n\n  function find(textNode, topNode, offset) {\n    for (var i = -1; i < (maps ? maps.length : 0); i++) {\n      var map$$1 = i < 0 ? measure.map : maps[i];\n      for (var j = 0; j < map$$1.length; j += 3) {\n        var curNode = map$$1[j + 2];\n        if (curNode == textNode || curNode == topNode) {\n          var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]);\n          var ch = map$$1[j] + offset;\n          if (offset < 0 || curNode != textNode) { ch = map$$1[j + (offset ? 1 : 0)]; }\n          return Pos(line, ch)\n        }\n      }\n    }\n  }\n  var found = find(textNode, topNode, offset);\n  if (found) { return badPos(found, bad) }\n\n  // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems\n  for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) {\n    found = find(after, after.firstChild, 0);\n    if (found)\n      { return badPos(Pos(found.line, found.ch - dist), bad) }\n    else\n      { dist += after.textContent.length; }\n  }\n  for (var before = topNode.previousSibling, dist$1 = offset; before; before = before.previousSibling) {\n    found = find(before, before.firstChild, -1);\n    if (found)\n      { return badPos(Pos(found.line, found.ch + dist$1), bad) }\n    else\n      { dist$1 += before.textContent.length; }\n  }\n}\n\n// TEXTAREA INPUT STYLE\n\nvar TextareaInput = function(cm) {\n  this.cm = cm;\n  // See input.poll and input.reset\n  this.prevInput = \"\";\n\n  // Flag that indicates whether we expect input to appear real soon\n  // now (after some event like 'keypress' or 'input') and are\n  // polling intensively.\n  this.pollingFast = false;\n  // Self-resetting timeout for the poller\n  this.polling = new Delayed();\n  // Tracks when input.reset has punted to just putting a short\n  // string into the textarea instead of the full selection.\n  this.inaccurateSelection = false;\n  // Used to work around IE issue with selection being forgotten when focus moves away from textarea\n  this.hasSelection = false;\n  this.composing = null;\n};\n\nTextareaInput.prototype.init = function (display) {\n    var this$1 = this;\n\n  var input = this, cm = this.cm;\n\n  // Wraps and hides input textarea\n  var div = this.wrapper = hiddenTextarea();\n  // The semihidden textarea that is focused when the editor is\n  // focused, and receives input.\n  var te = this.textarea = div.firstChild;\n  display.wrapper.insertBefore(div, display.wrapper.firstChild);\n\n  // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore)\n  if (ios) { te.style.width = \"0px\"; }\n\n  on(te, \"input\", function () {\n    if (ie && ie_version >= 9 && this$1.hasSelection) { this$1.hasSelection = null; }\n    input.poll();\n  });\n\n  on(te, \"paste\", function (e) {\n    if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n\n    cm.state.pasteIncoming = true;\n    input.fastPoll();\n  });\n\n  function prepareCopyCut(e) {\n    if (signalDOMEvent(cm, e)) { return }\n    if (cm.somethingSelected()) {\n      setLastCopied({lineWise: false, text: cm.getSelections()});\n      if (input.inaccurateSelection) {\n        input.prevInput = \"\";\n        input.inaccurateSelection = false;\n        te.value = lastCopied.text.join(\"\\n\");\n        selectInput(te);\n      }\n    } else if (!cm.options.lineWiseCopyCut) {\n      return\n    } else {\n      var ranges = copyableRanges(cm);\n      setLastCopied({lineWise: true, text: ranges.text});\n      if (e.type == \"cut\") {\n        cm.setSelections(ranges.ranges, null, sel_dontScroll);\n      } else {\n        input.prevInput = \"\";\n        te.value = ranges.text.join(\"\\n\");\n        selectInput(te);\n      }\n    }\n    if (e.type == \"cut\") { cm.state.cutIncoming = true; }\n  }\n  on(te, \"cut\", prepareCopyCut);\n  on(te, \"copy\", prepareCopyCut);\n\n  on(display.scroller, \"paste\", function (e) {\n    if (eventInWidget(display, e) || signalDOMEvent(cm, e)) { return }\n    cm.state.pasteIncoming = true;\n    input.focus();\n  });\n\n  // Prevent normal selection in the editor (we handle our own)\n  on(display.lineSpace, \"selectstart\", function (e) {\n    if (!eventInWidget(display, e)) { e_preventDefault(e); }\n  });\n\n  on(te, \"compositionstart\", function () {\n    var start = cm.getCursor(\"from\");\n    if (input.composing) { input.composing.range.clear(); }\n    input.composing = {\n      start: start,\n      range: cm.markText(start, cm.getCursor(\"to\"), {className: \"CodeMirror-composing\"})\n    };\n  });\n  on(te, \"compositionend\", function () {\n    if (input.composing) {\n      input.poll();\n      input.composing.range.clear();\n      input.composing = null;\n    }\n  });\n};\n\nTextareaInput.prototype.prepareSelection = function () {\n  // Redraw the selection and/or cursor\n  var cm = this.cm, display = cm.display, doc = cm.doc;\n  var result = prepareSelection(cm);\n\n  // Move the hidden textarea near the cursor to prevent scrolling artifacts\n  if (cm.options.moveInputWithCursor) {\n    var headPos = cursorCoords(cm, doc.sel.primary().head, \"div\");\n    var wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect();\n    result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10,\n                                        headPos.top + lineOff.top - wrapOff.top));\n    result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10,\n                                         headPos.left + lineOff.left - wrapOff.left));\n  }\n\n  return result\n};\n\nTextareaInput.prototype.showSelection = function (drawn) {\n  var cm = this.cm, display = cm.display;\n  removeChildrenAndAdd(display.cursorDiv, drawn.cursors);\n  removeChildrenAndAdd(display.selectionDiv, drawn.selection);\n  if (drawn.teTop != null) {\n    this.wrapper.style.top = drawn.teTop + \"px\";\n    this.wrapper.style.left = drawn.teLeft + \"px\";\n  }\n};\n\n// Reset the input to correspond to the selection (or to be empty,\n// when not typing and nothing is selected)\nTextareaInput.prototype.reset = function (typing) {\n  if (this.contextMenuPending) { return }\n  var minimal, selected, cm = this.cm, doc = cm.doc;\n  if (cm.somethingSelected()) {\n    this.prevInput = \"\";\n    var range$$1 = doc.sel.primary();\n    minimal = hasCopyEvent &&\n      (range$$1.to().line - range$$1.from().line > 100 || (selected = cm.getSelection()).length > 1000);\n    var content = minimal ? \"-\" : selected || cm.getSelection();\n    this.textarea.value = content;\n    if (cm.state.focused) { selectInput(this.textarea); }\n    if (ie && ie_version >= 9) { this.hasSelection = content; }\n  } else if (!typing) {\n    this.prevInput = this.textarea.value = \"\";\n    if (ie && ie_version >= 9) { this.hasSelection = null; }\n  }\n  this.inaccurateSelection = minimal;\n};\n\nTextareaInput.prototype.getField = function () { return this.textarea };\n\nTextareaInput.prototype.supportsTouch = function () { return false };\n\nTextareaInput.prototype.focus = function () {\n  if (this.cm.options.readOnly != \"nocursor\" && (!mobile || activeElt() != this.textarea)) {\n    try { this.textarea.focus(); }\n    catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM\n  }\n};\n\nTextareaInput.prototype.blur = function () { this.textarea.blur(); };\n\nTextareaInput.prototype.resetPosition = function () {\n  this.wrapper.style.top = this.wrapper.style.left = 0;\n};\n\nTextareaInput.prototype.receivedFocus = function () { this.slowPoll(); };\n\n// Poll for input changes, using the normal rate of polling. This\n// runs as long as the editor is focused.\nTextareaInput.prototype.slowPoll = function () {\n    var this$1 = this;\n\n  if (this.pollingFast) { return }\n  this.polling.set(this.cm.options.pollInterval, function () {\n    this$1.poll();\n    if (this$1.cm.state.focused) { this$1.slowPoll(); }\n  });\n};\n\n// When an event has just come in that is likely to add or change\n// something in the input textarea, we poll faster, to ensure that\n// the change appears on the screen quickly.\nTextareaInput.prototype.fastPoll = function () {\n  var missed = false, input = this;\n  input.pollingFast = true;\n  function p() {\n    var changed = input.poll();\n    if (!changed && !missed) {missed = true; input.polling.set(60, p);}\n    else {input.pollingFast = false; input.slowPoll();}\n  }\n  input.polling.set(20, p);\n};\n\n// Read input from the textarea, and update the document to match.\n// When something is selected, it is present in the textarea, and\n// selected (unless it is huge, in which case a placeholder is\n// used). When nothing is selected, the cursor sits after previously\n// seen text (can be empty), which is stored in prevInput (we must\n// not reset the textarea when typing, because that breaks IME).\nTextareaInput.prototype.poll = function () {\n    var this$1 = this;\n\n  var cm = this.cm, input = this.textarea, prevInput = this.prevInput;\n  // Since this is called a *lot*, try to bail out as cheaply as\n  // possible when it is clear that nothing happened. hasSelection\n  // will be the case when there is a lot of text in the textarea,\n  // in which case reading its value would be expensive.\n  if (this.contextMenuPending || !cm.state.focused ||\n      (hasSelection(input) && !prevInput && !this.composing) ||\n      cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq)\n    { return false }\n\n  var text = input.value;\n  // If nothing changed, bail.\n  if (text == prevInput && !cm.somethingSelected()) { return false }\n  // Work around nonsensical selection resetting in IE9/10, and\n  // inexplicable appearance of private area unicode characters on\n  // some key combos in Mac (#2689).\n  if (ie && ie_version >= 9 && this.hasSelection === text ||\n      mac && /[\\uf700-\\uf7ff]/.test(text)) {\n    cm.display.input.reset();\n    return false\n  }\n\n  if (cm.doc.sel == cm.display.selForContextMenu) {\n    var first = text.charCodeAt(0);\n    if (first == 0x200b && !prevInput) { prevInput = \"\\u200b\"; }\n    if (first == 0x21da) { this.reset(); return this.cm.execCommand(\"undo\") }\n  }\n  // Find the part of the input that is actually new\n  var same = 0, l = Math.min(prevInput.length, text.length);\n  while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) { ++same; }\n\n  runInOp(cm, function () {\n    applyTextInput(cm, text.slice(same), prevInput.length - same,\n                   null, this$1.composing ? \"*compose\" : null);\n\n    // Don't leave long text in the textarea, since it makes further polling slow\n    if (text.length > 1000 || text.indexOf(\"\\n\") > -1) { input.value = this$1.prevInput = \"\"; }\n    else { this$1.prevInput = text; }\n\n    if (this$1.composing) {\n      this$1.composing.range.clear();\n      this$1.composing.range = cm.markText(this$1.composing.start, cm.getCursor(\"to\"),\n                                         {className: \"CodeMirror-composing\"});\n    }\n  });\n  return true\n};\n\nTextareaInput.prototype.ensurePolled = function () {\n  if (this.pollingFast && this.poll()) { this.pollingFast = false; }\n};\n\nTextareaInput.prototype.onKeyPress = function () {\n  if (ie && ie_version >= 9) { this.hasSelection = null; }\n  this.fastPoll();\n};\n\nTextareaInput.prototype.onContextMenu = function (e) {\n  var input = this, cm = input.cm, display = cm.display, te = input.textarea;\n  var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop;\n  if (!pos || presto) { return } // Opera is difficult.\n\n  // Reset the current text selection only if the click is done outside of the selection\n  // and 'resetSelectionOnContextMenu' option is true.\n  var reset = cm.options.resetSelectionOnContextMenu;\n  if (reset && cm.doc.sel.contains(pos) == -1)\n    { operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll); }\n\n  var oldCSS = te.style.cssText, oldWrapperCSS = input.wrapper.style.cssText;\n  input.wrapper.style.cssText = \"position: absolute\";\n  var wrapperBox = input.wrapper.getBoundingClientRect();\n  te.style.cssText = \"position: absolute; width: 30px; height: 30px;\\n      top: \" + (e.clientY - wrapperBox.top - 5) + \"px; left: \" + (e.clientX - wrapperBox.left - 5) + \"px;\\n      z-index: 1000; background: \" + (ie ? \"rgba(255, 255, 255, .05)\" : \"transparent\") + \";\\n      outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);\";\n  var oldScrollY;\n  if (webkit) { oldScrollY = window.scrollY; } // Work around Chrome issue (#2712)\n  display.input.focus();\n  if (webkit) { window.scrollTo(null, oldScrollY); }\n  display.input.reset();\n  // Adds \"Select all\" to context menu in FF\n  if (!cm.somethingSelected()) { te.value = input.prevInput = \" \"; }\n  input.contextMenuPending = true;\n  display.selForContextMenu = cm.doc.sel;\n  clearTimeout(display.detectingSelectAll);\n\n  // Select-all will be greyed out if there's nothing to select, so\n  // this adds a zero-width space so that we can later check whether\n  // it got selected.\n  function prepareSelectAllHack() {\n    if (te.selectionStart != null) {\n      var selected = cm.somethingSelected();\n      var extval = \"\\u200b\" + (selected ? te.value : \"\");\n      te.value = \"\\u21da\"; // Used to catch context-menu undo\n      te.value = extval;\n      input.prevInput = selected ? \"\" : \"\\u200b\";\n      te.selectionStart = 1; te.selectionEnd = extval.length;\n      // Re-set this, in case some other handler touched the\n      // selection in the meantime.\n      display.selForContextMenu = cm.doc.sel;\n    }\n  }\n  function rehide() {\n    input.contextMenuPending = false;\n    input.wrapper.style.cssText = oldWrapperCSS;\n    te.style.cssText = oldCSS;\n    if (ie && ie_version < 9) { display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos); }\n\n    // Try to detect the user choosing select-all\n    if (te.selectionStart != null) {\n      if (!ie || (ie && ie_version < 9)) { prepareSelectAllHack(); }\n      var i = 0, poll = function () {\n        if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 &&\n            te.selectionEnd > 0 && input.prevInput == \"\\u200b\") {\n          operation(cm, selectAll)(cm);\n        } else if (i++ < 10) {\n          display.detectingSelectAll = setTimeout(poll, 500);\n        } else {\n          display.selForContextMenu = null;\n          display.input.reset();\n        }\n      };\n      display.detectingSelectAll = setTimeout(poll, 200);\n    }\n  }\n\n  if (ie && ie_version >= 9) { prepareSelectAllHack(); }\n  if (captureRightClick) {\n    e_stop(e);\n    var mouseup = function () {\n      off(window, \"mouseup\", mouseup);\n      setTimeout(rehide, 20);\n    };\n    on(window, \"mouseup\", mouseup);\n  } else {\n    setTimeout(rehide, 50);\n  }\n};\n\nTextareaInput.prototype.readOnlyChanged = function (val) {\n  if (!val) { this.reset(); }\n};\n\nTextareaInput.prototype.setUneditable = function () {};\n\nTextareaInput.prototype.needsContentAttribute = false;\n\nfunction fromTextArea(textarea, options) {\n  options = options ? copyObj(options) : {};\n  options.value = textarea.value;\n  if (!options.tabindex && textarea.tabIndex)\n    { options.tabindex = textarea.tabIndex; }\n  if (!options.placeholder && textarea.placeholder)\n    { options.placeholder = textarea.placeholder; }\n  // Set autofocus to true if this textarea is focused, or if it has\n  // autofocus and no other element is focused.\n  if (options.autofocus == null) {\n    var hasFocus = activeElt();\n    options.autofocus = hasFocus == textarea ||\n      textarea.getAttribute(\"autofocus\") != null && hasFocus == document.body;\n  }\n\n  function save() {textarea.value = cm.getValue();}\n\n  var realSubmit;\n  if (textarea.form) {\n    on(textarea.form, \"submit\", save);\n    // Deplorable hack to make the submit method do the right thing.\n    if (!options.leaveSubmitMethodAlone) {\n      var form = textarea.form;\n      realSubmit = form.submit;\n      try {\n        var wrappedSubmit = form.submit = function () {\n          save();\n          form.submit = realSubmit;\n          form.submit();\n          form.submit = wrappedSubmit;\n        };\n      } catch(e) {}\n    }\n  }\n\n  options.finishInit = function (cm) {\n    cm.save = save;\n    cm.getTextArea = function () { return textarea; };\n    cm.toTextArea = function () {\n      cm.toTextArea = isNaN; // Prevent this from being ran twice\n      save();\n      textarea.parentNode.removeChild(cm.getWrapperElement());\n      textarea.style.display = \"\";\n      if (textarea.form) {\n        off(textarea.form, \"submit\", save);\n        if (typeof textarea.form.submit == \"function\")\n          { textarea.form.submit = realSubmit; }\n      }\n    };\n  };\n\n  textarea.style.display = \"none\";\n  var cm = CodeMirror$1(function (node) { return textarea.parentNode.insertBefore(node, textarea.nextSibling); },\n    options);\n  return cm\n}\n\nfunction addLegacyProps(CodeMirror) {\n  CodeMirror.off = off;\n  CodeMirror.on = on;\n  CodeMirror.wheelEventPixels = wheelEventPixels;\n  CodeMirror.Doc = Doc;\n  CodeMirror.splitLines = splitLinesAuto;\n  CodeMirror.countColumn = countColumn;\n  CodeMirror.findColumn = findColumn;\n  CodeMirror.isWordChar = isWordCharBasic;\n  CodeMirror.Pass = Pass;\n  CodeMirror.signal = signal;\n  CodeMirror.Line = Line;\n  CodeMirror.changeEnd = changeEnd;\n  CodeMirror.scrollbarModel = scrollbarModel;\n  CodeMirror.Pos = Pos;\n  CodeMirror.cmpPos = cmp;\n  CodeMirror.modes = modes;\n  CodeMirror.mimeModes = mimeModes;\n  CodeMirror.resolveMode = resolveMode;\n  CodeMirror.getMode = getMode;\n  CodeMirror.modeExtensions = modeExtensions;\n  CodeMirror.extendMode = extendMode;\n  CodeMirror.copyState = copyState;\n  CodeMirror.startState = startState;\n  CodeMirror.innerMode = innerMode;\n  CodeMirror.commands = commands;\n  CodeMirror.keyMap = keyMap;\n  CodeMirror.keyName = keyName;\n  CodeMirror.isModifierKey = isModifierKey;\n  CodeMirror.lookupKey = lookupKey;\n  CodeMirror.normalizeKeyMap = normalizeKeyMap;\n  CodeMirror.StringStream = StringStream;\n  CodeMirror.SharedTextMarker = SharedTextMarker;\n  CodeMirror.TextMarker = TextMarker;\n  CodeMirror.LineWidget = LineWidget;\n  CodeMirror.e_preventDefault = e_preventDefault;\n  CodeMirror.e_stopPropagation = e_stopPropagation;\n  CodeMirror.e_stop = e_stop;\n  CodeMirror.addClass = addClass;\n  CodeMirror.contains = contains;\n  CodeMirror.rmClass = rmClass;\n  CodeMirror.keyNames = keyNames;\n}\n\n// EDITOR CONSTRUCTOR\n\ndefineOptions(CodeMirror$1);\n\naddEditorMethods(CodeMirror$1);\n\n// Set up methods on CodeMirror's prototype to redirect to the editor's document.\nvar dontDelegate = \"iter insert remove copy getEditor constructor\".split(\" \");\nfor (var prop in Doc.prototype) { if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0)\n  { CodeMirror$1.prototype[prop] = (function(method) {\n    return function() {return method.apply(this.doc, arguments)}\n  })(Doc.prototype[prop]); } }\n\neventMixin(Doc);\n\n// INPUT HANDLING\n\nCodeMirror$1.inputStyles = {\"textarea\": TextareaInput, \"contenteditable\": ContentEditableInput};\n\n// MODE DEFINITION AND QUERYING\n\n// Extra arguments are stored as the mode's dependencies, which is\n// used by (legacy) mechanisms like loadmode.js to automatically\n// load a mode. (Preferred mechanism is the require/define calls.)\nCodeMirror$1.defineMode = function(name/*, mode, …*/) {\n  if (!CodeMirror$1.defaults.mode && name != \"null\") { CodeMirror$1.defaults.mode = name; }\n  defineMode.apply(this, arguments);\n};\n\nCodeMirror$1.defineMIME = defineMIME;\n\n// Minimal default mode.\nCodeMirror$1.defineMode(\"null\", function () { return ({token: function (stream) { return stream.skipToEnd(); }}); });\nCodeMirror$1.defineMIME(\"text/plain\", \"null\");\n\n// EXTENSIONS\n\nCodeMirror$1.defineExtension = function (name, func) {\n  CodeMirror$1.prototype[name] = func;\n};\nCodeMirror$1.defineDocExtension = function (name, func) {\n  Doc.prototype[name] = func;\n};\n\nCodeMirror$1.fromTextArea = fromTextArea;\n\naddLegacyProps(CodeMirror$1);\n\nCodeMirror$1.version = \"5.25.2\";\n\nreturn CodeMirror$1;\n\n})));\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2017, VU University Amsterdam\n\t\t\t CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Provide the chat window.  The communication is handled by chat.js\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('chatroom',[ \"jquery\", \"form\", \"cm/lib/codemirror\", \"utils\", \"config\",\n\t \"modal\", \"links\",\n\t \"laconic\"\n       ],\n       function($, form, CodeMirror, utils, config, modal, links) {\n\n(function($) {\n  var pluginName = 'chatroom';\n  var lasthangoutwarning = 0;\n\n  /** @lends $.fn.chatroom */\n  var methods = {\n    /**\n     * {Object} [options]\n     * {String} [options.docid] Document identifier\n     */\n\n    _init: function(options) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = { messages: [] };\t\t/* private data */\n\tvar btn, send;\n\tvar close;\n\tvar text;\n\tvar hangout = \"gitty:\"+config.swish.hangout;\n\n\tdata.docid = options.docid;\n\telem.data(pluginName, data);\t/* store with element */\n\n\telem.addClass(\"chatroom each-minute swish-event-receiver\");\n\n\t\t\t\t\t/* build DOM */\n\n\tbtn  = $.el.div({class:\"btn-group dropup\"},\n\t\t send = $.el.button({ type:\"button\",\n\t\t\t\t      class:\"btn btn-primary btn-xs\"\n\t\t\t\t    }, \"Send\"),\n\t\t\t$.el.button({ type:\"button\",\n\t\t\t\t      class:\"btn btn-info btn-xs \"+\n\t\t\t\t            \"dropdown-toggle\",\n\t\t\t\t      'data-toggle':\"dropdown\",\n\t\t\t\t      'aria-haspopup':true,\n\t\t\t\t      'aria-expanded':false\n\t\t\t\t    },\n\t\t\t\t    $.el.span({class:\"caret\"})),\n\t\t   ul = $.el.ul({class:\"dropdown-menu pull-right\"}));\n\ttext = $.el.textarea({ placeholder:\"Type chat message here ...\"\n\t\t\t     }),\n\n\telem.append($.el.div(\n\t\t      {class:\"chat-conversation\"},\n\t\t      $.el.div({class:\"chat-outer-wrapper\"},\n\t\t\t $.el.div({class:\"chat-inner-wrapper\"},\n\t\t\t   $.el.div({class:\"chat-content-wrapper\"},\n\t\t\t      $.el.div({class:\"chat-stretch\"}),\n\t\t\t      $.el.div({class:\"chat-content\"}))))),\n\t    close = $.el.span({class:\"glyphicon menu glyphicon-remove-circle\"}),\n\t\t    $.el.div({class:\"chat-input\"},\n\t\t\t     $.el.table({class:\"chat-input\"},\n\t\t\t\t\t$.el.tr($.el.td({class:\"chat-text\"}, text),\n\t\t\t\t\t\t$.el.td({class:\"chat-send\"}, btn)))));\n\n\t$(send).on(\"click\", function() {\n\t  elem.chatroom('send');\n\t});\n\n\t\t\t\t\t/* event handling */\n\tform.widgets.populateMenu($(btn), elem, {\n\t  \"Include my query\": function() {\n\t    var query = $(\".prolog-query-editor\").queryEditor('getQuery');\n\t    if ( query.trim() != \"\" ) {\n\t      this.chatroom('send',\n\t\t\t    {payload: [{type:\"query\", query:query}]});\n\t    } else {\n\t      modal.alert(\"Your query editor is empty\");\n\t    }\n\t  }\n\t});\n\tif ( options.docid != hangout ) {\n\t  form.widgets.populateMenu($(btn), elem, {\n\t    \"Broadcast to hangout\": function() {\n\t      this.chatroom('send',\n\t\t\t    { broadcast: \"gitty:\"+config.swish.hangout\n\t\t\t    });\n\t    }\n\t  });\n\t}\n\t$(close).on(\"click\", function() {\n\t  elem.tile('close');\n\t});\n\tif ( options.oneline ) {\n\t  $(text).keypress(function(ev) {\n\t    if ( ev.which == 13 ) {\n\t      elem.chatroom('send');\n\t      ev.preventDefault();\n\t      return false;\n\t    }\n\t  });\n\t} else {\n\t  $(text).on('keyup', function() {\n\t    var that = $(this);\n\t    var h;\n\n\t    if ( that.scrollTop() != 0 && (h=that.height()) < 500 ) {\n\t      h += parseFloat(that.css('line-height'));\n\n\t      that.animate({ height: h }, 200,\n\t\t\t   function() { elem.chatroom('scrollToBottom'); });\n\t    }\n\t  });\n\t}\n\tif ( options.docid == hangout ) {\n\t  $(text).focus(function() {\n\t    if ( $(text).val() == \"\" ) {\n\t      var now = new Date().getTime();\n\n\t      if ( now-lasthangoutwarning > 300000 ) {\n\t\tlasthangoutwarning = now;\n\n\t\tmodal.help({file:\"hangout.html\", notagain:\"hangout\"});\n\t      }\n\t    }\n\t  });\n\t}\n\telem.on(\"click\", \".inner button\", function(ev) {\n\t  var button = $(ev.target).closest(\"button\");\n\t  var val;\n\n\t  if ( (val = button.data(\"commit\")) ) {\n\t    elem.closest(\".swish\").swish('playFile', val);\n\t  } else if ( (val = button.data(\"diff\")) ) {\n\t    elem.chatroom('diff', val);\n\t  }\n\n\t  ev.preventDefault();\n\t  return false;\n\t});\n\telem.on(\"click\", \".chat-content a\", links.followLink);\n\telem.on(\"pane.resize\", function() {\n\t  elem.chatroom('scrollToBottom', true);\n\t});\n\telem.on(\"minute\", function() {\n\t  elem.chatroom('update_time');\n\t});\n\telem.on(\"activate-tab\", function() {\n\t  elem.chatroom('read_until');\n\t});\n\n\t$(text).height(parseFloat($(text).css('line-height'))+5);\n\n\telem.chatroom('load_from_server');\n      });\n    },\n\n    close: function() {\n      return this.tile('close');\n    },\n\n    /**\n     * Send a chat message.\n     * @param {Object} [options]\n     * @param {Array}  [options.payload] Payloads (queries, etc)\n     * @param {String} [options.docid] Addressed document of not self\n     * @param {String} [options.broadcast] Also broadcast the message\n     * to the indicated document id.\n     * @param {Bool}   [options.clear] if `false`, do not clear the\n     * message window after sending.\n     */\n    send: function(options) {\n      options = options||{};\n      var data = this.data(pluginName);\n      var msg = {type:\"chat-message\"};\n      var ta = this.find(\"textarea\");\n      msg.text = ta.val().trim();\n      var payload = options.payload||[];\n      var has_payload = false;\n      var selection = this.chatroom('storage').storage('getSelection');\n      var hangout = \"gitty:\" + config.swish.hangout;\n\n      if ( selection )\n\tpayload.push({type:\"selection\", selection:selection});\n\n      for(var i=0; i<payload.length; i++) {\n\tif ( payload[i].type != 'about' ) {\n\t  has_payload = true;\n\t  break;\n\t}\n      }\n\t\t\t\t\t/* send first message to hangout */\n      if ( !options.broadcast &&\n\t   data.docid != hangout &&\n\t   data.messages.length == 0 )\n\toptions.broadcast = hangout;\n\n      if ( msg.text != \"\" || has_payload ) {\n\tmsg.uuid    = utils.generateUUID();\n\tmsg.payload = payload;\n\tmsg.docid   = options.docid||data.docid;\n\tif ( options.class )\n\t  msg.class = options.class;\n\n\tif ( options.clear == true ) {\n\t  this.chatroom('clear');\n\t} else {\n\t  data.clear = msg.uuid;\n\t}\n\n\t$(\"#chat\").chat('send', msg);\n\tif ( options.broadcast ) {\n\t  msg.payload.unshift({type:\"about\", docid:data.docid});\n\t  msg.docid = options.broadcast;\n\t  $(\"#chat\").chat('send', msg);\n\t}\n      } else if ( !options.payload ) {\n\tmodal.alert(\"No message to send\");\n      }\n    },\n\n    /**\n     * Get the related storage object\n     */\n    storage: function() {\n      return this.closest(\".tab-pane\").find(\".storage\");\n    },\n\n    /**\n     * @param {Object} msg is the chat message object\n     * @return {Bool} `true` if the msg is sent by the current user.\n     */\n    is_self: function(msg) {\n      var muser = msg.user||{};\n      var suser = config.swish.user||{};\n\n      var self = $(\"#chat\").chat('self');\n\n      return ((muser.id && muser.id == self.id) ||\n\t      (muser.avatar && muser.avatar == self.avatar) ||\n\t      (muser.profile_id && muser.profile_id == suser.profile_id));\n    },\n\n    /**\n     * Indicate we have read all content\n     */\n    read_until: function(msg) {\n      var data;\n\n      if ( msg == undefined &&\n\t   (data = this.data(pluginName)) &&\n\t   data.messages.length > 0 )\n\tmsg = data.messages[data.messages.length-1];\n\n      if ( msg ) {\n\t$(\"#chat\").chat('read_until', msg.docid, msg.time);\n\t$(\".chat-bell\").chatbell('read_until', msg.docid, msg.time);\n      }\n    },\n\n    /**\n     * Render a chat message.\n     * @param {Object} msg\n     * @param {String} msg.html is the HTML content of the object\n     * @param {String} msg.text is the ext of the object\n     * @param {Object} msg.user Sender description\n     */\n    render: function(msg) {\n      var muser = msg.user||{};\n      var suser = config.swish.user||{};\n\n      if ( msg.is_self === undefined )\n\tmsg.is_self = this.chatroom('is_self', msg);\n\n      elem = $($.el.div({class:\"chat-message\"+(msg.is_self ? \" self\" : \"\"),\n\t\t\t 'data-userid':muser.wsid}));\n      if ( !msg.is_self && muser.avatar ) {\n\telem.append($.el.img({ class:\"avatar\", src:muser.avatar }));\n      }\n      elem.append($.el.span({class:\"chat-sender\"},\n\t\t\t    msg.is_self ? \"Me\" : muser.name));\n\n      if ( msg.time ) {\n\tvar title = new Date(msg.time*1000).toLocaleString();\n\telem.append($.el.span({class:\"chat-time\", title:title},\n\t\t\t      \"(\", ago(msg.time), \") \"));\n\telem.data('time', msg.time);\n      }\n\n      if ( msg.payload ) {\n\tfor(var i=0; i<msg.payload.length; i++) {\n\t  var pl = msg.payload[i];\n\t  if ( payload_handlers[pl.type] )\n\t    payload_handlers[pl.type].call(elem, pl);\n\t  else\n\t    console.log(pl);\n\t}\n      }\n\n      var html;\n      if ( msg.html ) {\n\thtml = msg.html;\n      } else if ( msg.text ) {\n\thtml = $($.el.span(msg.text)).html();\n\thtml = markdown(html);\n      }\n\n      if ( html ) {\n\tvar span = $.el.span({class:\"chat-message html\"});\n\t$(span).html(html);\n\telem.append(span);\n      }\n\n      return elem;\n    },\n\n    /**\n     * Add a message to the chatroom.\n     * @param {Object} msg is the message to display\n     * @param {Bool} [seen] if `true`, claim that the message is read.\n     * When omitted it is `true` if the chatroom is visible.\n     */\n    add: function(msg, seen) {\n      var data = this.data(pluginName);\n\n      if ( msg.docid == data.docid )\n      { var elem;\n\n\tif ( seen == undefined )\n\t  seen = this.is(\":visible\");\n\n\tif ( msg.is_self == undefined )\n\t  msg.is_self = this.chatroom('is_self', msg);\n\tdata.messages.push(msg);\n\n\telem = this.chatroom('render', msg);\n\tthis.find(\".chat-content\").append(elem);\n\tthis.chatroom('scrollToBottom');\n\n\tif ( seen )\n\t  this.chatroom('read_until', msg);\n      }\n\n      if ( msg.uuid && msg.uuid == data.clear ) {\n\tthis.chatroom('clear');\n      }\n\n      return this;\n    },\n\n    clear: function() {\n      var ta = this.find(\"textarea\");\n\n      ta.val(\"\");\n      ta.height(parseFloat(ta.css('line-height')+5));\n    },\n\n    load_from_server: function(ifempty) {\n      var data = this.data(pluginName);\n      var elem = $(this);\n\n      $.get(config.http.locations.chat_messages,\n\t    { docid: data.docid\n\t    },\n\t    function(messages) {\n\t      if ( messages.length == 0 ) {\n\t\tif ( ifempty )\n\t\t  elem.chatroom('close');\n\t\telse if ( data.docid != \"gitty:\"+config.swish.hangout )\n\t\t  modal.help({file:\"newchat.html\", notagain:\"newchat\"});\n\t      } else {\n\t\tfor(var i=0; i<messages.length; i++) {\n\t\t  elem.chatroom('add', messages[i], i == messages.length-1 );\n\t\t}\n\t      }\n\t    }).fail(function(jqXHR, textStatus, errorThrown) {\n\t      modal.ajaxError(jqXHR);\n\t    });\n\n      return this;\n    },\n\n    update_time: function() {\n      return this.find(\".chat-message\").each(function() {\n\tvar elem = $(this);\n\tvar time;\n\tif ( (time=elem.data('time')) )\n\t  elem.find(\".chat-time\").text(\"(\"+ago(time)+\") \");\n      });\n    },\n\n    /**\n     * Show diff between versions\n     * @param {Object} options\n     * @param {String} options.from Base commit\n     * @param {String} options.to Target commit\n     * @param {String} options.name Name of the file\n     */\n\n    diff: function(options) {\n      function error(jqXHR) {\n\tmodal.ajaxError(jqXHR);\n      }\n\n      $.ajax({\n        url: config.http.locations.web_storage + options.from,\n\tdata: {format: \"raw\"},\n\tsuccess: function(from) {\n\t  $.ajax({\n\t    url: config.http.locations.web_storage + options.to,\n\t    data: {format: \"raw\"},\n\t    success: function(to) {\n\n\t      function diffBody() {\n\t\tvar diff = $.el.div();\n\n\t\tthis.append(diff);\n\t\t$(diff).diff({\n\t\t  base: from,\n\t\t  head: to,\n\t\t  baseName: options.name + \" (before)\",\n\t\t  headName: options.name + \" (after)\"\n\t\t});\n\t\tthis.parents(\"div.modal-dialog\").addClass(\"modal-wide\");\n\t      }\n\n\t      form.showDialog({\n\t        title: \"Update differences\",\n\t\tbody:  diffBody\n\t      });\n\t    },\n\t    error: error\n\t  })\n\t},\n\terror: error\n      });\n    },\n\n\n    /**\n     * Associate with a new document\n     */\n    docid: function(docid, ifempty) {\n      var data = this.data(pluginName);\n\n      if ( data.docid != docid ) {\n\tthis.find(\".chat-content\").html(\"\");\n\tdata.docid = docid;\n\tthis.chatroom('load_from_server', ifempty);\n      }\n    },\n\n    /**\n     * @param {String} docid docid of rooms we are looking for\n     * @returns {jQuery} set of chatrooms pointing at document id\n     */\n    rooms: function(docid) {\n      var rooms = [];\n\n      this.each(function() {\n\tvar room = $(this);\n\tvar data = room.data(pluginName);\n\tif ( data.docid == docid )\n\t  rooms.push(this);\n      });\n\n      return $(rooms);\n    },\n\n    scrollToBottom: function(onlydown) {\n      this.each(function() {\n\tvar elem = $(this);\n\tscroll  =   elem.find(\"div.chat-inner-wrapper\");\n\twrap    = scroll.find(\"div.chat-content-wrapper\");\n\tcontent =   wrap.find(\"div.chat-content\");\n\tvar height = content[0].scrollHeight;\n\tvar room   = wrap.height() - height - 8;\n\n\tif ( room > 0 || onlydown !== true ) {\n\t  wrap.find(\"div.chat-stretch\").height(room > 0 ? room : 0);\n\t  scroll.scrollTop(height);\n\t}\n      });\n\n      return this;\n    }\n  }; // methods\n\n\n\t\t /*******************************\n\t\t *\t PAYLOAD HANDLERS\t*\n\t\t *******************************/\n\n  var payload_handlers = {\n    selection: function(selection) {\n      var label   = $().storage('getSelectionLabel', selection.selection);\n      var btn = $($.el.button({ class:\"btn btn-xs btn-primary\"\n\t\t\t      },\n\t\t\t      label + \" \",\n\t\t\t      form.widgets.glyphIcon(\"eye-open\")));\n      btn.on(\"click\", function(ev) {\n\t$(ev.target).chatroom('storage')\n\t            .storage('restoreSelection', selection.selection);\n      });\n\n      this.append(\" \", btn, \" \");\n    },\n\n    query: function(query) {\n      var btn = $($.el.button({ class:\"btn btn-xs btn-primary\"\n\t\t\t      },\n\t\t\t      \"Query \",\n\t\t\t      form.widgets.glyphIcon(\"download\")));\n      btn.on(\"click\", function() {\n\tvar qe = $(\".prolog-query-editor\");\n\n\tqe.queryEditor('setQuery', query.query);\n\tutils.flash(qe.find(\".CodeMirror\"));\n      });\n      sourceToolTip(btn, query.query);\n\n      this.append(\" \", btn, \" \");\n    },\n\n    update: function(update) {\n      var old, dif, nwe;\n\n      this.append(\" \", $.el.span(\n        {class:\"update\"},\n\told = btn(\"play\",    \"btn-primary\", \"Open old version\"),\n\tdif = btn(\"zoom-in\", \"btn-info\",    \"View changes\"),\n        nwe = btn(\"play\",    \"btn-primary\", \"Open new version\")), \" \");\n\n      $(old).data('commit', update.previous);\n      $(dif).data('diff',   {from:update.previous, to:update.commit,\n\t\t\t     name:update.name});\n      $(nwe).data('commit', update.commit);\n    },\n\n    about: function(about) {\n      var file = about.docid.replace(\"gitty:\", \"\");\n\n      this.append(\" \",\n\t$.el.a({\n\t  href:config.http.locations.web_storage+file,\n\t  class:\"store btn btn-primary btn-xs\"\n\t}, file), \" \");\n    }\n  };\n\n\n  // private functions\n\n  function sourceToolTip(elem, src) {\n    var pre = $.el.pre({class:\"cm-s-prolog\"});\n\n    CodeMirror.runMode(src, \"prolog\", pre);\n\n    elem.attr(\"title\", $.el.div(pre).innerHTML);\n    elem.data(\"html\", true);\n    elem.data(\"placement\", \"bottom\");\n    elem.data(\"trigger\", \"hover\");\n    elem.tooltip();\n  }\n\n  function btn(glyph, type, title) {\n    return form.widgets.glyphIconButton(glyph,\n\t\t\t\t\t{class:\"btn-xs \"+type, title:title});\n  }\n\n  function ago(time) {\n    var ago = ((new Date().getTime())/1000) - time;\n\n    if ( ago < 20  ) return \"just now\";\n    if ( ago < 60  ) return \"less then a minute ago\";\n    ago = Math.round(ago/60);\n    if ( ago < 120 ) return ago + \" minutes ago\";\n    ago = Math.round(ago/60);\n    if ( ago < 48 )  return ago + \" hours ago\";\n    ago = Math.round(ago/24);\n    if ( ago < 360 ) return ago + \" days ago\";\n    ago = Math.round(ago/365);\n    return ago + \" years ago\";\n  }\n\n  /**\n   * Perform very simple regex based markdown processing\n   */\n  function markdown(text) {\n    var replace = [\n      { regex: /[a-z][a-zA-Z0-9_]*\\/[0-9]/g,\n        func:  function(match) {\n\t  return '<a class=\"builtin\" href=\"/pldoc/man?predicate='+match+'\">'\n\t         +match+'</a>';\n\t}\n      },\n      { regex: /[a-zA-Z0-9_-]+\\.(pl|swinb)\\b/g,\n        func:  function(match) {\n\t  return '<a class=\"builtin\" href=\"'+\n\t\t config.http.locations.web_storage+\n\t         match+'\">'\n\t         +match+'</a>';\n\t}\n      },\n      { regex: /`(.)`/g,\n        func:  function(match, content) {\n\t  return '<code>'+content+'</code>';\n\t}\n      },\n      { regex: /`([\\w\\[\\{\\(][^`]*[\\w\\]\\}\\)])`/g,\n        func:  function(match, content) {\n\t  return '<code>'+content+'</code>';\n\t}\n      },\n      { delim: \"\\\\*\", a: \"\\\\*\\\\b\", z: \"\\\\b\\\\*\", tag: \"b\" },\n      { delim: \"__\",  a: \"\\\\b__\",  z: \"__\\\\b\",  tag: \"b\" },\n      { delim: \"_\",   a: \"\\\\b_\",   z: \"_\\\\b\",   tag: \"i\" }\n    ];\n\n    function wrap(tag) {\n      return function(match, content) {\n\treturn \"<\"+tag+\">\"+content+\"</\"+tag+\">\";\n      };\n    }\n\n    for(var i=0; i<replace.length; i++) {\n      var r = replace[i];\n\n      if ( r.regex ) {\n\ttext = text.replace(r.regex, r.func);\n      } else if ( r.delim ) {\n\ttext = text.replace(RegExp(r.a+\"([^\"+r.delim+\"]+)\"+r.z,\"g\"),\n\t\t\t    wrap(r.tag));\n      }\n    }\n\n    return text;\n  }\n\n  /**\n   * <Class description>\n   *\n   * @class chatroom\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.chatroom = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2017, VU University Amsterdam\n\t\t\t CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * <Description of the File>\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('chatbell',[ \"jquery\", \"form\", \"modal\", \"config\", \"preferences\",\n\t \"laconic\", \"chatroom\"\n       ],\n       function($, form, modal, config, preferences) {\n\n(function($) {\n  var pluginName = 'chatbell';\n\n  /** @lends $.fn.chatbell */\n  var methods = {\n    /**\n     * @param {Object} [options]\n     * @param {String} [options.docid] Associate with a document id.\n     * If default, try the `data-document` attribute.\n     * @param {String} [options.empty_title] Title attribute if there\n     * are no new messages\n     */\n    _init: function(options) {\n      options = options||{};\n\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = $.extend({}, options); /* private data */\n\n\tdata.docid = options.docid||elem.data('document');\n\telem.data(pluginName, data);\t/* store with element */\n\n\telem.addClass(\"chat-bell\");\n\telem.attr('title', \"Messages available\");\n\telem.append(form.widgets.glyphIcon(\"bell\"),\n\t\t    $.el.span({class:\"chat-bell-count\"}, \"-\"));\n\telem.chatbell('update');\n      });\n    },\n\n    /**\n     * Set the chat counter and optionally associate the chat bell\n     * with a document (`docid`)\n     * @param {Object} chats\n     * @param {Number} chats.count number of chat messages to report\n     * @param {String} [chats.docid] associate bell with document\n     */\n    chats: function(chats) {\n      var data = this.data(pluginName);\n      var span = this.find(\".chat-bell-count\");\n      var elem = this;\n\n      function empty() {\n\tspan.text(\"-\");\n\telem.removeClass('chat-available chat-alert');\n\telem.attr('title', data.empty_title||\"No messages available\");\n      }\n\n      if ( chats == undefined ) {\n\tdelete data.docid;\n\tdelete data.count;\n\tdelete data.total;\n\n\tempty();\n      } else {\n\tvar count = chats.count == undefined ? chats.total : chats.count;\n\n\tif ( chats.docid ) data.docid = chats.docid;\n\tif ( chats.count ) data.count = chats.count;\n\tif ( chats.total ) data.total = chats.total;\n\n\tif ( chats.total > 0 ) {\n\t  this.addClass('chat-available');\n\t  if ( count > 0 ) {\n\t    span.text(count);\n\t    this.addClass('chat-alert');\n\t    this.attr('title', count + \" new messages\");\n\t  } else {\n\t    span.text(chats.total);\n\t    this.removeClass('chat-alert');\n\t    this.attr('title', chats.total + \" old messages\");\n\t  }\n\t} else {\n\t  empty();\n\t}\n      }\n\n      return this;\n    },\n\n    'chats++': function(docid) {\n      var data = this.data(pluginName);\n\n      if ( data.total != undefined ) data.total++; else data.total = 1;\n      if ( data.count != undefined ) data.count++;\n      if (      docid != undefined ) data.docid = docid;\n\n      if ( data.total ) {\n\tthis.chatbell('chats', {\n\t  total: data.total,\n\t  count: data.count\n\t});\n      }\n\n      return this;\n    },\n\n    /**\n     * Update the chat bell.\n     * @param {Object} [chats]\n     * @param {Number} [chats.total]\n     * @param {Number} [chats.count]\n     * @param {Number} [chats.docid]\n     */\n    update: function(chats) {\n      var data = this.data(pluginName);\n\n      chats = chats||{};\n\n      if ( chats.total != undefined &&\n\t   chats.count != undefined ) {\n\tthis.chatbell('chats', chats);\n      } else {\n\tvar docid = chats.docid||data.docid;\n\tvar after = preferences.getDocVal(docid, 'chatBar', 0);\n\n\t\t\t/* fetch if we want unread or we don't know total */\n\tif ( docid && (after || chats.total == undefined) ) {\n\t  var elem = $(this);\n\n\t  $.get(config.http.locations.chat_status,\n\t\t{ docid: docid,\n\t\t  after: after\n\t\t},\n\t\tfunction(chats) {\n\t\t  elem.chatbell('chats', chats);\n\t\t});\n\t} else if ( chats.total != undefined ) {\n\t  this.chatbell('chats', chats);\n\t}\n      }\n\n      return this;\n    },\n\n    /**\n     * Sent by the chatroom if the user saw the last message.\n     */\n    read_until: function(docid, time) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = elem.data(pluginName);\n\n\tif ( data.docid == docid && data.total ) {\n\t  elem.chatbell('chats', {total: data.total, count:0});\n\t}\n      });\n    },\n\n    /**\n     * Handle an incomming chat message.  If the message is not from\n     * myself, display as a short notification.\n     */\n    'chat-message': function(msg) {\n      if ( msg.is_self == undefined )\n\tmsg.is_self = this.chatroom('is_self', msg);\n\n      this.chatbell('chats++');\n\n      if ( !msg.is_self ) {\n\tvar elem = this.chatroom('render', msg);\n\tvar options = {\n\t  dom: elem\n\t};\n\n\tmodal.notify(this, options);\n      }\n    }\n  }; // methods\n\n  /**\n   * <Class description>\n   *\n   * @class chatbell\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.chatbell = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2017, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * This file deals with tabbed panes.  It implements dynamic tabs on top\n * if Bootstrap.\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('tabbed',[ \"jquery\", \"form\", \"config\", \"preferences\", \"modal\",\n\t \"laconic\", \"search\", \"chatbell\" ],\n       function($, form, config, preferences, modal) {\nvar tabbed = {\n  tabTypes: {},\n  type: function(from) {\n    var ext = from.split('.').pop();\n\n    for(var k in tabbed.tabTypes) {\n      if ( tabbed.tabTypes.hasOwnProperty(k) &&\n\t   tabbed.tabTypes[k].dataType == ext )\n\treturn tabbed.tabTypes[k];\n    }\n  }\n};\n\n(function($) {\n  var pluginName = 'tabbed';\n  var tabid = 0;\n\n  /** @lends $.fn.tabbed */\n  var methods = {\n    /**\n     * Turn the current element into a Bootstrap tabbed pane. All\n     * children of the current element are changed into tabs.  The\n     * child can control the mapping using:\n     *\n     *   - `data-label = \"Label\"`\n     *   - `data-close = \"disabled\"`\n     */\n    _init: function(options) {\n      options = options||{};\n\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = {};\t\t\t/* private data */\n\n\tdata.newTab   = options.newTab;\n\tdata.tabTypes = options.tabTypes || tabbed.tabTypes;\n\telem.data(pluginName, data);\t/* store with element */\n\n\telem.addClass(\"tabbed\");\n\telem.tabbed('makeTabbed');\n\telem.on(\"trace-location\", function(ev, prompt) {\n\t  elem.tabbed('showTracePort', prompt);\n\t});\n\telem.on(\"data-is-clean\", function(ev, clean) {\n\t  var tab = $(ev.target).closest(\".tab-pane\");\n\t  var a   = elem.tabbed('navTab', tab.attr('id'));\n\n\t  if ( a )\n\t  { if ( clean )\n\t      a.removeClass(\"data-dirty\");\n\t    else\n\t      a.addClass(\"data-dirty\");\n\t  }\n\t});\n      });\n    },\n\n    /**\n     * Turn the pane into a tabbed pane\n     */\n    makeTabbed: function() {\n      var children = this.children();\n      var ul = $.el.ul({ class:\"nav nav-tabs\",\n\t\t\t role:\"tablist\"\n\t\t       });\n      var contents = $.el.div({class:\"tab-content\"});\n\n      this.prepend(contents);\n      this.prepend(ul);\n\n      $(ul).on(\"click\", \"span.xclose\", function(ev) {\n\tvar id = $(ev.target).parent().attr(\"data-id\");\n\t$(ev.target).parents(\".tabbed\").first().tabbed('removeTab', id);\n\tev.preventDefault();\n      });\n      $(ul).on(\"click\", \"a\", function(ev) {\n\t$(ev.target).closest(\"a\").tab('show');\n\tev.preventDefault();\n      });\n\n\t\t\t/* Turn children into tabs */\n      for(var i=0; i<children.length; i++) {\n\tvar child = $(children[i]);\n\tvar id = genId();\n\tvar label = child.attr(\"data-label\") || \"Unknown\";\n\tvar close = child.attr(\"data-close\") != \"disabled\";\n\tvar active = (i == children.length-1);\t/* activate last */\n\n\tvar li = this.tabbed('tabLabel', id, label, close);\n\tif ( active )\n\t  $(li).addClass(\"active\");\n\t$(ul).append(li);\n\t$(contents).append(wrapInTab($(children[i]), id, active));\n      }\n\n\t\t\t/* Create and handle \"+\" button */\n      var create = $.el.a({ class: \"tab-new compact\",\n\t\t\t    title: \"Open a new tab\"\n\t\t\t  },\n\t\t\t  glyphicon(\"plus\"));\n      $(ul).append($.el.li({ role:\"presentation\" }, create));\n      $(create).on(\"click\", function(ev) {\n\tvar tabbed = $(ev.target).parents(\".tabbed\").first();\n\n\ttabbed.tabbed('newTab');\n\tev.preventDefault();\n\treturn false;\n      });\n\n\t\t\t/* Handle tab-switching */\n      $(ul).on(\"shown.bs.tab\", \"a\", function(ev) {\n\tvar newContentID  = $(ev.target).data(\"id\");\n\t$(\"#\"+newContentID+\" .swish-event-receiver\").trigger(\"activate-tab\");\n      });\n\n      if ( this.tabbed('navContent').children().length == 0 ) {\n\tthis.tabbed('newTab');\n      }\n    },\n\n    /**\n     * Add an empty new tab from the \"+\" button.  This calls\n     * options.newTab() to return a DOM element for the new\n     * tab.\n     * @param {HTMLElement} [content] Content for the new tab\n     * If omitted, it calls `options.newTab` or uses the method\n     * `tabSelect`.\n     * @return {jQuery} object representing the created tab\n     */\n    newTab: function(dom) {\n      var data = this.data(pluginName);\n\n      if ( dom == undefined ) {\n\tif ( data.newTab ) {\n\t  dom = data.newTab();\n\t} else {\n\t  dom = this.tabbed('tabSelect');\n\t  $(dom).append(this.tabbed('profileForm'),\n\t\t\t$.el.hr(),\n\t\t\tthis.tabbed('searchForm'));\n\t}\n      }\n\n      return this.tabbed('addTab', dom, {active:true,close:true});\n    },\n\n    /**\n     * Add a new tab from the provided source.  If there is a _select_\n     * (new) tab, open the data in this tab.\n     */\n    tabFromSource: function(src) {\n      var elem = this;\n      var select = this.find(\"div.tabbed-select\");\n\n      if ( typeof(src) == \"string\" )\n\tsrc = {data:src};\n\n      function inNewTab() {\n\tvar tab = elem.tabbed('newTab', $(\"<span></span>\"));\n\tif ( !elem.tabbed('setSource', tab, src) ) {\n\t  elem.tabbed('removeTab', tab.attr(\"id\"));\n\t}\n      }\n\n      if ( select.length > 0 ) {\n\tvar tab = select.first().closest(\".tab-pane\");\n\tthis.tabbed('show', tab.attr(\"id\"));\n\tthis.tabbed('setSource', tab, src);\n      } else if ( src.newTab ) {\n\tinNewTab();\n      } else\n      { var tab;\n\n\tthis.find(\".storage\").each(function(i, st) {\n\t  if ( $(st).storage('setSource', src) ) {\n\t    tab = $(st).closest(\".tab-pane\");\n\t    return false;\n\t  }\n        });\n\n\tif ( tab )\n\t  this.tabbed('show', tab.attr(\"id\"));\n\telse\n\t  inNewTab();\n      }\n\n      return this;\n    },\n\n    /**\n     * Transform the new tab into a tab that can hold the requested\n     * source.\n     * @return {Boolean} `true` if a suitable type was found\n     */\n    setSource: function(tab, src) {\n      if ( typeof(src) == \"object\" &&\n\t   ((src.meta && src.meta.name) || src.url) )\n      { var name = (src.meta && src.meta.name) ? src.meta.name : src.url;\n\tvar tabType = tabbed.type(name);\n\tvar content = $.el.div();\n\n\ttab.html(\"\");\n\ttab.tabbed('title', tabType.label, tabType.dataType);\n\ttab.append(content);\n\ttabType.create(content);\n\t$(content).storage('setSource', src);\n\treturn true;\n      }\n\n      return false;\n    },\n\n    /**\n     * Show a tracer port. This implies finding the proper editor,\n     * making sure it is visible and ask it to show to port or, if\n     * no editor is displaying this source, create a new one.\n     * @param {Object} prompt\n     * @param {Object} [prompt.source]\n     * @param {Object} [prompt.source.file] is the file associated\n     * with the debug event.  Currently, we accept\n     *\n     *   - `pengine://<pengine>/src` refers to the editor that provided\n     *     the source for pengine <pengine>\n     *\t - `swish://<file>.pl` refers to an included file from the\n     *\t   store.\n     */\n    showTracePort: function(prompt) {\n      if ( prompt && prompt.source && prompt.source.file ) {\n\tvar file = prompt.source.file;\n\tvar pengineID, store;\n\tvar editors;\n\n\tfunction isPengineSrc() {\n\t  var id;\n\n\t  if ( file.startsWith(\"pengine://\") )\n\t    return file.split(\"/\")[2];\n\t}\n\n\tfunction isStoreSrc() {\n\t  var prefix = \"swish://\";\n\t  if ( file.startsWith(prefix) )\n\t    return file.slice(prefix.length);\n\t}\n\n\tif ( (pengineID=isPengineSrc()) ) {\n\t  editors = this.find(\".prolog-editor\")\n\t\t\t.filter(function(i, e) {\n\t\t\t  return $(e).prologEditor('pengine', {has:pengineID});\n\t\t\t});\n\t} else if ( (store=isStoreSrc()) ) {\n\t  editors = this.find(\".storage\")\n\t\t\t.storage('match', {file:store});\n\n\t  if ( !editors ) {\n\t    this.closest(\".swish\")\n\t        .swish('playFile',\n\t\t       { file: store,\n\t\t\t newTab: true,\n\t\t\t noHistory: true,\n\t\t\t prompt: prompt\n\t\t       });\n\t    return this;\n\t  }\n\t}\n\n\tif ( editors )\n\t  editors.prologEditor('showTracePort', prompt);\n      }\n\n      return this;\n    },\n\n\n    /**\n     * Add a new tab using content\n     * @param {Object} content is the DOM node to use as content for the\n     * tab.\n     * @param {Object} options\n     * @param {Boolean} [options.active] if `true`, make the new tab\n     * active\n     * @param {Boolean} [options.close] if `true`, allow closing the new\n     * tab.\n     * @return {jQuery} the created tab element\n     */\n    addTab: function(content, options) {\n      var ul  = this.tabbed('navTabs');\n      var id  = genId();\n      var tab =\twrapInTab(content, id, options.close);\n\n      this.tabbed('navContent').append(tab);\n\n      var li  = this.tabbed('tabLabel', id, \"New tab\", close, \"select\");\n\n      var create = ul.find(\"a.tab-new\");\n      if ( create.length == 1 )\n\t$(li).insertBefore(create.first().parent());\n      else\n\tul.append(li);\n\n      if ( options.active )\n\t$(li).find(\"a\").first().tab('show');\n\n      return tab;\n    },\n\n    /**\n     * Remove tab with given Id. If the tab is the active tab, make the\n     * previous tab active, or if there is no previous, the next. If the\n     * tabbed environment becomes empty, add a virgin tab.\n     *\n     * @param {String} id is the id of the tab to destroy\n     */\n    removeTab: function(id) {\n      var li  = this.tabbed('navTabs').find(\"a[data-id='\"+id+\"']\").parent();\n      var tab = $(\"#\"+id);\n      var new_active;\n\n      if ( tab.find(\".storage\").storage('unload', \"closetab\") == false )\n\treturn;\n\n      if ( tab.is(\":visible\") )\n\tnew_active = li.prev() || li.next();\n      li.remove();\n\t\t\t\t\t/* HACK: close embedded runners */\n      tab.find(\".prolog-runner\").prologRunner('close');\n      tab.find(\".storage\").storage('close');\n      tab.remove();\n      if ( new_active && new_active.length > 0 ) {\n\tnew_active.find(\"a\").first().tab('show');\n      } else if ( this.tabbed('navContent').children().length == 0 ) {\n\tthis.tabbed('newTab');\n      }\n\n      $(\".storage\").storage('chat_status', true);\n    },\n\n    /**\n     * Show indicated tab.\n     * @param {String} id is the id of the tab to show.\n     */\n    show: function(id) {\n      var a = this.tabbed('navTab', id);\n      if ( a ) {\n\ta.tab('show');\n      }\n\n      $(\".storage\").storage('chat_status', true);\n    },\n\n    /**\n     * Create a label (`li`) for a new tab.\n     * @param {String} id is the identifier of the new tab\n     * @param {String} label is the textual label of the new tab\n     * @param {Boolean} close determines whether or nor a close button\n     * is added to the tab.\n     * @param {String} [type=\"pl\"] indicates the type of the tab. This\n     * is used for associating an icon with the tab.\n     */\n    tabLabel: function(id, label, close, type) {\n      var close_button;\n      var chat;\n\n      if ( close )\n      { close_button = glyphicon(\"remove\", \"xclose\");\n\t$(close_button).attr(\"title\", \"Close tab\");\n      }\n      type = type||\"pl\";\n\n      var a1 = $.el.a({class:\"compact\", href:\"#\"+id, \"data-id\":id},\n\t\t      $.el.span({class:\"tab-icon type-icon \"+type}),\n\t\t      $.el.span({class:\"tab-dirty\",\n\t\t                 title:\"Tab is modified. \"+\n\t\t\t\t       \"See File/Save and Edit/View changes\"}),\n\t       chat = $.el.a({class:'tab-chat'}),\n\t\t      $.el.span({class:\"tab-title\"}, label),\n\t\t      close_button);\n      var li = $.el.li({role:\"presentation\"}, a1);\n\n      $(chat).chatbell()\n             .on(\"click\", function(ev) {\n\tvar id = $(ev.target).closest(\"a.compact\").data(\"id\");\n\t$(\"#\"+id).find(\".storage\").storage('chat');\n\treturn false;\n      });\n\n      return li;\n    },\n\n    /**\n     * Calling obj.tabbed('anchor') finds the <a> element\n     * represeting the tab label from the node obj that appears\n     * somewhere on the tab\n     */\n    anchor: function() {\n      var tab    = this.closest(\".tab-pane\");\n\n      if ( tab.length == 0 ) {\n\treturn undefined;\t\t/* e.g., fullscreen mode */\n      }\n\n      var tabbed = tab.closest(\".tabbed\");\n      var id     = tab.attr(\"id\");\n      var ul\t = tabbed.tabbed('navTabs');\n      var a      = ul.find(\"a[data-id=\"+id+\"]\");\n\n      return a;\n    },\n\n\n    /**\n     * This method is typically _not_ called on the tab, but on some\n     * inner element of the tab.  It changes the title of the tab.\n     * @param {String} title is the new title for the tab.\n     * @param {String} [type=\"pl\"] is the new type for the tab.\n     */\n    title: function(title, type) {\n      var a = this.tabbed('anchor');\n\n      if ( a ) {\n\ta.find(\".tab-title\").text(title);\n\tif ( type ) {\n\t  var icon = a.find(\".tab-icon\");\n\t  icon.removeClass();\n\t  icon.addClass(\"tab-icon type-icon \"+type);\n\t}\n      }\n\n      return this;\n    },\n\n    /**\n     * Set the chat message feedback for this tab\n     * @param {Object} [chats]\n     * @param {Number} [chats.count] number of available chat messages\n     * on the document.\n     */\n    chats: function(chats) {\n      var a = this.tabbed('anchor');\n\n      if ( a ) {\n\ta.find(\".chat-bell\").chatbell('update', chats);\n      }\n\n      return this;\n    },\n\n    /**\n     * Increment the chat count and possibly associate the bell\n     * with the document identifier.\n     * @param {String} [docid] is the document identifier to associate\n     * with.\n     */\n    'chats++': function(docid) {\n      var a = this.tabbed('anchor');\n\n      if ( a ) {\n\ta.find(\".chat-bell\").chatbell('chats++', docid);\n      }\n\n      return this;\n    },\n\n\n    /**\n     * Default empty tab content that allows the user to transform\n     * the tab into the desired object.\n     * @return {Object} containing content for the new tab\n     */\n    tabSelect: function() {\n      var data = this.data(pluginName);\n      var dom = $.el.div({class:\"tabbed-select\"},\n\t\t\t $.el.div({class: \"tabbed-create\"},\n\t\t\t\t  $.el.label({class: \"tabbed-left\"},\n\t\t\t\t\t     \"Create a \"),\n\t\t\t\t  g=$.el.div({class:\"btn-group\",role:\"group\"}),\n\t\t\t\t  $.el.label({class: \"tabbed-right\"}, \"here\")));\n      var types = [];\n\n      for(var k in data.tabTypes) {\n\tif ( data.tabTypes.hasOwnProperty(k) &&\n\t     data.tabTypes[k].order )\n\t  types.push(k);\n      }\n      types.sort(function(a,b) {\n\treturn data.tabTypes[a].order - data.tabTypes[b].order;\n      });\n\n      for(var i = 0; i<types.length; i++) {\n\tvar type = data.tabTypes[types[i]];\n\n\t$(g).append($.el.button({ type:\"button\",\n\t\t\t\t  class:\"btn btn-primary\",\n\t\t\t\t  \"data-type\":type.typeName,\n\t\t\t\t  \"data-ext\":type.dataType\n\t\t\t\t},\n\t\t\t\ttype.label));\n      }\n\n      $(g).on(\"click\", \".btn\", function(ev) {\n\tvar type    = $(ev.target).data('type');\n\tvar tab     = $(ev.target).closest(\".tab-pane\");\n\tvar content = $.el.div();\n\tvar options = $.extend({}, tabbed.tabTypes[type]);\n\tvar profile = tab.find(\"label.active > input[name=profile]\").val();\n\n\tif ( profile ) {\n\t  options.profile = profile;\n\t  options.value   = tab.tabbed('profileValue', profile,\n\t\t\t\t       tabbed.tabTypes[type].dataType);\n\t  if ( options.value != undefined )\n\t    preferences.setVal(\"default-profile\", profile);\n\t}\n\n\ttab.html(\"\");\n\ttab.tabbed('title', options.label, options.dataType);\n\ttab.append(content);\n\ttabbed.tabTypes[type].create(content, options);\n      });\n      $(g).addClass(\"swish-event-receiver\");\n      $(g).on(\"download save fileInfo print\", function(ev) {\n\tvar tab = $(ev.target).closest(\".tab-pane\");\n\tif ( tab.is(\":visible\") ) {\n\t  var typelabel = { \"download\" : \"you wish to download\",\n\t\t\t    \"save\"     : \"you wish to save\",\n\t\t\t    \"print\"    : \"you wish to print\",\n\t\t\t    \"fileInfo\" : \"for which you want details\"\n\t  };\n\n\t  modal.alert(\"Please activate the tab \"+typelabel[ev.type]);\n\t  ev.stopPropagation();\n\t}\n      });\n      $(g).on(\"profile-selected\", function(ev, profile) {\n\t$(ev.target).find(\"button\").each(function() {\n\t  $(this).prop('disabled',\n\t\t       profile.type.indexOf($(this).data('ext')) < 0);\n\t});\n      });\n\n      return dom;\n    },\n\n    searchForm: function() {\n      var sform = $.el.form({class: \"search-sources\"},\n\t$.el.label({class:\"control-label\"}, 'Open source file containing'),\n        $.el.div(\n\t  {class: \"input-group\"},\n\t  $.el.input({ type: \"text\",\n\t\t       class: \"form-control search\",\n\t\t       placeholder: \"Search sources\",\n\t\t       'data-search-in': \"sources store_content\",\n\t\t     }),\n\t  $.el.div({ class: \"input-group-btn\" },\n\t\t   $.el.button({class:\"btn btn-default\", type:\"submit\"},\n\t\t\t       $.el.i({class:\"glyphicon glyphicon-search\"})))),\n\t$.el.div({class: \"input-group\"},\n\t  form.fields.radio(\"smatch\",\n\t    [ { label:\"Start of line\", value:\"sol\"},\n\t      { label:\"Start of word\", value:\"sow\", active:true},\n\t      { label:\"Anywhere\", value:\"anywhere\" }\n\t    ])));\n      $(sform).find(\"input.search\").search();\n\n      return sform;\n    },\n\n    profileForm: function() {\n      if ( config.swish.profiles && config.swish.profiles.length > 0 ) {\n\tvar def;\n\n\tfor(var i=0; i<config.swish.profiles.length; i++) {\n\t  delete config.swish.profiles[i].active;\n\t}\n\n\tif ( (def=preferences.getVal(\"default-profile\")) ) {\n\t  for(var i=0; i<config.swish.profiles.length; i++) {\n\t    if ( config.swish.profiles[i].value == def )\n\t      config.swish.profiles[i].active = true\n\t  }\n\t} else {\n\t  config.swish.profiles[0].active = true;\n\t}\n\n\tvar pform =\n\t$.el.div(\n\t  {class:\"tabbed-profile\"},\n\t  $.el.label({class: \"tabbed-left\"}, \"based on\"),\n\t  $.el.div({class: \"input-group select-profile\"},\n\t\t   form.fields.radio(\"profile\", config.swish.profiles)),\n\t  $.el.label({class: \"tabbed-right\"}, \"profile\"));\n\n\t$(pform).on(\"click\", function(ev) {\n\t  var select = $(ev.target).find(\"input\").val();\n\t  var profile = profileObject(select);\n\t  $(ev.target).closest(\".tab-pane\")\n\t\t      .find(\".tabbed-create .btn-group\")\n\t\t      .trigger(\"profile-selected\", profile);\n\t});\n\n\treturn pform;\n      }\n    },\n\n    profileValue: function(name, ext) {\n      var url = config.http.locations.swish + \"profile/\" + name + \".\" + ext;\n      return $.ajax({ url: url,\n\t\t      type: \"GET\",\n\t\t      data: {format: \"raw\"},\n\t\t      async: false,\n\t\t      error: function(jqXHR) {\n\t\t\tmodal.ajaxError(jqXHR);\n\t\t      }\n      }).responseText;\n    },\n\n    /**\n     * Get the UL list that represents the nav tabs\n     */\n    navTabs: function() {\n      return this.find(\"ul.nav-tabs\").first();\n    },\n\n    navTab: function(id) {\n      var a = this.find(\"ul.nav-tabs\").first().find(\"a[data-id='\"+id+\"']\");\n      if ( a.length > 0 )\n\treturn a;\n    },\n\n    navContent: function() {\n      return this.find(\"div.tab-content\").first();\n    }\n  }; // methods\n\n  /**\n   * Wrap a content element in a Bootstrap tab content.\n   * @param {Object} dom is the object that must be wrapped\n   * @param {String} id is the identifier to give to the new content\n   * @param {Boolean} active sets the tab to active if `true`\n   * @return {jQuery} `div` object of class `tab-pane` and the\n   * passed `id`.\n   */\n  function wrapInTab(dom, id, active) {\n    $(dom).wrap('<div role=\"tabpanel\" class=\"tab-pane\" id=\"'+id+'\"></div>');\n    var wrapped = $(dom).parent();\n\n    if ( active )\n      wrapped.addClass(\"active\");\n\n    return wrapped;\n  }\n\n  function glyphicon(glyph, className) {\n    var span = $.el.span({class:\"glyphicon glyphicon-\"+glyph});\n\n    if ( className )\n      $(span).addClass(className);\n\n    return span;\n  }\n\n  function genId()\n  { return \"tabbed-tab-\"+tabid++;\n  }\n\n  function profileObject(name) {\n    if ( config.swish.profiles ) {\n      for(var i=0; i<config.swish.profiles.length; i++) {\n\tif ( config.swish.profiles[i].value == name )\n\t  return config.swish.profiles[i];\n      }\n    }\n  }\n\n  /**\n   * <Class description>\n   *\n   * @class tabbed\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.tabbed = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\n  return tabbed;\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2016, VU University Amsterdam\n\t\t\t CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n *\n * RequireJS module providing some general support methods for accessing\n * Prolog\n *\n * @version 0.1.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\n/* Also depends on \"editor\", but requireJS cannot handle cyclic dependencies.\n   As downloadCSV() is only called after initialisation we dropped this\n   dependency.\n*/\n\ndefine('prolog',[ \"jquery\", \"config\", \"form\", \"preferences\",\n\t /* \"editor\" */\n       ],\n       function($, config, form, preferences) {\n  var prolog = {\n    /**\n     * Download query results as CSV.\n     * @param {Object} [options]\n     * @param {String} [options.projection] holds the Prolog projection\n     * variables, separated by commas, e.g., `\"X,Y\"`\n     * @param {String} [options.format=\"prolog\"] holds a string that\n     * defines the variation of the CSV format, e.g., `\"prolog\"` or\n     * `\"rdf\"`\n     * @param {String|Number} [options.limit] defines the max number of\n     * results.\n     * @param {Boolean} [options.distinct] requests only distinct\n     * results.\n     * @param {String} [options.disposition] provides the default for\n     * the download file.  If no extension is given, \".csv\" is added.\n     */\n    downloadCSV: function(query, source, options) {\n      options = options||{};\n      options.disposition = (options.disposition||\n\t\t\t     options.filename||\n\t\t\t     \"swish-results.csv\");\n\n      if ( options.projection ) {\n\tvar formel;\n\tvar format = options.format||\"prolog\";\n\n\tfunction attr(name,value) {\n\t  return $.el.input({type:\"hidden\", name:name, value:value});\n\t}\n\n\tif ( options.distinct )\n\t  query = \"distinct([\"+options.projection+\"],(\"+query+\"))\";\n\tif ( options.limit ) {\n\t  var limit = parseInt(options.limit.replace(/[ _]/g,\"\"));\n\n\t  if ( typeof(limit) == \"number\" ) {\n\t    query = \"limit(\"+limit+\",(\"+query+\"))\";\n\t  } else {\n\t    alert(\"Not an integer: \", options.limit);\n\t    return false;\n\t  }\n\t}\n\n\tformel = $.el.form({ method:\"POST\",\n                             action:config.http.locations.pengines+\"/create\",\n\t\t\t     target:\"_blank\"\n\t\t           },\n\t\t\t   attr(\"format\", \"csv\"),\n\t\t\t   attr(\"chunk\", \"10\"),\n\t\t\t   attr(\"solutions\", \"all\"),\n\t\t\t   attr(\"disposition\", options.disposition),\n\t\t\t   attr(\"application\", \"swish\"),\n\t\t\t   attr(\"ask\", query),\n\t\t\t   attr(\"src_text\", source),\n\t\t\t   attr(\"template\", format+\"(\"+options.projection+\")\"));\n\tconsole.log(formel);\n\t$(\"body\").append(formel);\n\tformel.submit();\n\t$(formel).remove();\n      } else {\n\tvar vars = $().prologEditor('variables', query);\n\tvar disposition = options.disposition;\n\tif ( disposition.indexOf(\".\") < 0 )\n\t  disposition += \".csv\";\n\n\tfunction infoBody() {\n\t  var formel = $.el.form(\n            {class:\"form-horizontal\"},\n\t    form.fields.projection(vars.join(\",\")),\n\t    form.fields.csvFormat(config.swish.csv_formats,\n\t\t\t\t  preferences.getVal(\"csvFormat\")),\n\t    form.fields.limit(\"10 000\", false),\n\t    form.fields.filename(disposition, 2),\n\t    form.fields.buttons(\n\t      { label: \"Download CSV\",\n\t\taction: function(ev, params) {\n\t\t  ev.preventDefault();\n\t\t  if ( config.swish.csv_formats.length > 1 )\n\t\t    preferences.setVal(\"csvFormat\", params.format);\n\t\t  prolog.downloadCSV(query, source, params);\n\n\t\t  return false;\n\t\t}\n\t      }));\n\t  this.append(formel);\n\t}\n\n\tform.showDialog({ title: \"Download query results as CSV\",\n\t\t\t  body:  infoBody\n\t\t        });\n      }\n\n      return this;\n      },\n\n    /**\n     * Remove the full-stop from a query string\n     */\n    trimFullStop: function(s) {\n      return s.replace(/\\.\\s*$/m, \"\");\n    },\n\n    /**\n     * Default options for $.swish()\n     */\n    options: {\n      application: \"swish\",\n      chunk: 5\n    }\n  }\n\n\t\t /*******************************\n\t\t *\t     PENGINES\t\t*\n\t\t *******************************/\n\n  /**\n   * $.swish(options) creates a new Pengine with given default\n   * options.  The default options are determined by `prolog.options`.\n   * This function expects pengines.js to be already loaded.  The\n   * bootstrapping of that is achieved in `swish.js`.\n   *\n   * @return {Pengine} the created pengine object\n   */\n  $.swish = function(options) {\n    for(var opt in prolog.options) {\n      if ( prolog.options.hasOwnProperty(opt) &&\n\t   !options.hasOwnProperty(opt) ) {\n\toptions[opt] = prolog.options[opt];\n      }\n    }\n\n    return new Pengine(options);\n  };\n\n  return prolog;\n});\n\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2016, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Render a single Prolog answer.\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('answer',[ \"jquery\", \"laconic\" ],\n       function() {\n\n\t\t /*******************************\n\t\t *\tRENDER AN ANSWER\t*\n\t\t *******************************/\n\n(function($) {\n  var pluginName = 'prologAnswer';\n\n  /** @lends $.fn.prologAnswer */\n  var methods = {\n    /**\n     * Represent the binding of one or more variables to exactly the\n     * same (==) Prolog term.\n     *\n     * @typedef {Object} Binding\n     * @property {Array.String} variables represents the names of the\n     * variables.  This array is at least one long.\n     * @property {String} value contains the HTML that describes the\n     * binding of the variable.\n     */\n\n    /**\n     * Represent the binding of a single variable used to represent\n     * sharing, an in particular cyclic terms\n     *\n     * @typedef {Object} Subsitution\n     * @property {String} var name of the variable\n     * @property {String} value contains the HTML that describes the\n     * binding of the variable.\n     */\n\n    /**\n     * Represent an answer as represented by the pengines `json-html`\n     * format.\n     * @typedef {Object} Answer\n     * @property {Array.Binding} variables represents the variable\n     * bindings.\n     * @property {Array.Subsitution} [substitutions] represents substitutions\n     * needed to break cyclic terms.\n     * @property {Array.String} [residuals] represents residual goals as HTML\n     * strings.\n     */\n\n    /**\n     * Render a single answer as returned by pengines `json-html` format\n     * as an HTML string.\n     *\n     * to HTML escaping issues\n     * @param {Answer} answer represents an answer to a Prolog query\n     */\n  _init: function(answer) {\n      return this.each(function() {\n\tvar elem = $(this);\n\n\tif ( answerHasOutput(answer) ) {\n\t  if ( elem.is(\"table\") ) {\n\t    var row = $.el.tr();\n\t    elem.append(row);\n\t    row.innerHTML = renderTabledAnswer(answer, elem);\n\t    evalScripts($(row));\n\t    $(row).find(\".render-multi\").renderMulti();\n\t  } else {\n\t    elem[0].innerHTML = renderAnswer(answer);\n\t    evalScripts(elem);\n\t    elem.find(\".render-multi\").renderMulti();\n\t  }\n\t} else\n\t  elem.append($.el.span({class: \"prolog-true\"}, \"true\"));\n      });\n    }\n  };\n\n  function answerHasOutput(answer) {\n    return answer.variables.length > 0 || answer.residuals;\n  }\n\n  function renderSubstitutions(substs, html) {\n    html.push(', <span class=\"pl-comment\">% where</span><br/>');\n    for (var s = 0; s < substs.length; s++) {\n      html.push('<span class=\"where-binding\">',\n\t\t\"<span class='pl-var'>\", substs[s].var+\"</span> = \",\n\t\tsubsts[s].value, '</span>');\n      if (s < substs.length - 1)\n\thtml.push(\",<br/>\");\n    }\n  }\n\n  function renderAnswer(answer) {\n    var html = [];\n    var bindings = answer.variables;\n    for (var i = 0; i < bindings.length; i++) {\n      var vars = bindings[i].variables;\n      for (var v = 0; v < vars.length - 1; v++) {\n\thtml.push(\"<span class='pl-ovar'>\", vars[v], \"</span> = \",\n\t\t  \"<span class='pl-var'>\", vars[v + 1], \"</span>, \");\n      }\n      html.push(\"<span class='pl-ovar'>\", vars[vars.length - 1],\n\t\t\"</span> = \", bindings[i].value);\n      if (bindings[i].substitutions) {\n\trenderSubstitutions(bindings[i].substitutions, html);\n      }\n      if (i < bindings.length - 1 || answer.residuals)\n\thtml.push(\",<br/>\");\n    }\n\n    var residuals;\n    if ((residuals = answer.residuals)) {\n      for (var i = 0; i < residuals.length; i++) {\n\thtml.push(residuals[i]);\n\tif (i < residuals.length - 1)\n\t  html.push(\",<br/>\");\n      }\n    }\n    return html.join(\"\");\n  }\n\n  /**\n   * Render answer as a new row to the answer table.\n   * @param {Answer} answer represents an answer to a Prolog query\n   * @param {Table} table is the jQuery table to which the answer must\n   * be added.\n   */\n  function renderTabledAnswer(answer, table) {\n    var html = [];\n\n    function findBinding(name) {\n      var bindings = answer.variables;\n      for (var i = 0; i < bindings.length; i++) {\n\tvar vars = bindings[i].variables;\n\tfor (var v = 0; v < vars.length; v++) {\n\t  if ( vars[v] == name )\n\t    return bindings[i];\n\t}\n      }\n      return null;\n    }\n\n    for(var i = 0; i<answer.projection.length; i++) {\n      var vname  = answer.projection[i];\n      var binding = findBinding(vname);\n\n      html.push(\"<td>\");\n      if ( binding ) {\n\thtml.push(binding.value);\n\tif ( binding.substitutions )\n\t  renderSubstitutions(binding.substitutions, html);\n      } else {\n\thtml.push(\"<span class='pl-var'>\", vname, \"</span>\");\n      }\n      html.push(\"</td>\");\n    }\n\n    function ensureResidualColumn() {\n      if ( table.find(\"tr.projection th.residuals\").length == 0 ) {\n\t$(\"<th class='residuals'>Residual goals</th>\").insertBefore(\n\t   table.find(\"tr.projection th.answer-nth\"));\n\t$(\"<td></td>\").insertBefore(\n\t   table.find(\"tr td.answer-nth\"));\n      }\n    }\n\n    var residuals;\n    if ((residuals = answer.residuals)) {\n      ensureResidualColumn();\n      html.push(\"<td>\");\n      for (var i = 0; i < residuals.length; i++) {\n\thtml.push(residuals[i]);\n\tif (i < residuals.length - 1)\n\t  html.push(\",<br/>\");\n      }\n      html.push(\"</td>\");\n    }\n\n    if ( answer.nth )\n      html.push(\"<td class='answer-nth'>\", answer.nth, \"</td>\");\n\n    return html.join(\"\");\n  }\n\n  /**\n   * Execute scripts that are embedded in the jQuery object elem.\n   * While executing a script, the property `$.ajaxScript` points\n   * to the executing script to enable the script to find elements\n   * in the ajax DOM extension in which the script is embedded.\n   * @param {jQuery} elem is the set in which scripts are searched\n   * and executed.\n   */\n  function evalScripts(elem) {\n    elem.find(\"script\").each(function() {\n      var type = this.getAttribute('type')||\"text/javascript\";\n      if ( type == \"text/javascript\" ) {\n\t$.ajaxScript = $(this);\n\teval(this.textContent);\n      }\n    });\n    if ( $.ajaxScript )\n      delete $.ajaxScript;\n  }\n\n\n  /**\n   * Render a single Prolog answer. This class is the entry point for\n   * more flexible answer rendering.\n   *\n   * @class prologAnswer\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} answer Either a method name or the jQuery\n   * plugin initialization object, which is the answer to a Prolog query\n   * in pengines \"json-html\" format\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.prologAnswer = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n\n}(jQuery));\n\n\t\t /*******************************\n\t\t *\t   RENDER TERMS\t\t*\n\t\t *******************************/\n\n(function($) {\n  var pluginName = 'renderMulti';\n  var timeout = 0;\n  var hovering = false;\n\n  /** @lends $.fn.renderMulti */\n  var methods = {\n    _init: function(options) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = {current: 0};\t\t/* private data */\n\tvar display = [];\n\tvar selector = $.el.div({class: \"render-multi-active\"});\n\n\tvar i = 0;\n\telem.children().each(function() {\n\t  var how = $(this).css(\"display\");\n\n\t  display.push(how);\n\t  if ( i++ == 0 ) {\n\t    elem.css(\"display\", how);\n\t    $(this).attr('draggable', false);\n\t  } else {\n\t    $(this).hide();\n\t  }\n\t});\n\tdata.display = display;\n\telem.append(selector);\n\n\t$(selector).hover(function(ev) { elem.renderMulti('showSelect', ev); },\n\t\t\t  function(ev) { elem.renderMulti('hideSelect', ev); });\n\telem.attr('draggable', true)\n            .bind('dragstart', dragStart);\n\n\telem.data(pluginName, data);\t/* store with element */\n      });\n    },\n\n    /**\n     * @returns {String} holding HTML with a radio button to select a\n     * rendering\n     */\n    selectMenu: function() {\n      var data = this.data(pluginName);\n      var select = [\"<label>View as</label><br>\"];\n      var children = this.children();\n\n      function downloadButton(i, name) {\n\tvar title, glyph;\n\n\tif ( name == \"Prolog term\" ) {\n\t  title = \"Copy\";\n\t  glyph = \"copy\";\n\t} else {\n\t  title = \"Download\";\n\t  glyph = \"download\";\n\t}\n\n\tbtn = '<a href=\"#\" class=\"btn btn-style btn-sm\" '+\n\t      'data-nr=\"'+i+'\" data-action=\"'+glyph+'\" title=\"'+title+'\">' +\n\t      '<span class=\"glyphicon glyphicon-'+glyph+'\"></span></a>';\n\n\treturn btn;\n      }\n\n      var i = 0;\n      for(var i=0; i<data.display.length; i++) {\n\tvar r = $(children[i]);\n\tvar name = r.attr(\"data-render\");\n\n\tif ( !name ) {\n\t  if ( i == 0 )\n\t    name = \"Default rendered\";\n\t  else\n\t    name = \"Alt rendered [\"+(i+1)+\"]\";\n\t}\n\n\tselect.push(\"<div class='render-item'>\",\n\t\t    downloadButton(i, name),\n\t\t    \"<input type='radio' name='render' value='\", i, \"'\");\n\tif ( i == data.current ) select.push(\" checked\");\n\tselect.push(\"> \", name, \"</div>\");\n      }\n\n      select.push(\"</form\");\n      return select.join(\"\");\n    },\n\n    showSelect: function(ev) {\n      var elem = this;\n      var menu = selectMenu();\n      var pos  = this.offset();\n      var target;\n\n      hovering = true;\n      if ( timeout ) {\n\tclearTimeout(timeout);\n\ttimeout = 0;\n      }\n\n      if ( (target=menu.data(\"target\")) )\n\ttarget.removeClass(\"render-selecting\");\n      menu.data(\"target\", elem);\n\n      menu.html(this.renderMulti('selectMenu'));\n      menu.css({ top:      pos.top + 5 + \"px\",\n                 left:     pos.left + 5 + \"px\"\n               }).show(400);\n\n      this.addClass(\"render-selecting\");\n    },\n\n    hideSelect: function(ev) {\n      resetHover();\n    },\n\n    /**\n     * Select the i-th (0-based) rendering alternative\n     * @param {Integer} i denotes the alternative\n     */\n    select: function(i) {\n      var data  = this.data(pluginName);\n\n      if ( data.current != i ) {\n\tvar child = this.children();\n\tvar how   = data.display[i];\n\n\t$(child[data.current]).hide(400);\n\t$(child[i]).show(400, function() { $(this).css(\"display\", how); });\n\tthis.css(\"display\", how);\n\tif ( $(child[i]).is(\"span.render-as-prolog\") ) {\n\t  this.attr(\"draggable\", false);\n\t} else {\n\t  this.attr(\"draggable\", true);\n\t}\n\n\tdata.current = i;\n      }\n\n      closeSelectMenu();\n    },\n\n    copy: function(i) {\n      var child = this.children();\n      var data  = this.data(pluginName);\n      var old   = data.current;\n\n      function selectElementText(el) {\n\tvar range = document.createRange();\n\trange.selectNodeContents(el);\n\tvar selection = window.getSelection();\n\tselection.removeAllRanges();\n\tselection.addRange(range);\n      }\n\n      this.renderMulti('select', i);\n      selectElementText(child[i]);\n      try {\n\tdocument.execCommand(\"copy\");\n      } catch(e) {\n\talert(\"Sorry, cannot copy text with this browser\");\n      }\n      this.renderMulti('select', old);\n\n      return this;\n    },\n\n    /**\n     * Download a rendered object.  The renderer can interact with this\n     * code by setting a class `export-dom` and an event-handler for the\n     * event `export-dom`. This handler is passed a plain object, for\n     * which is must set the properties `element`, `extensions` and\n     * `contentType`\n     */\n    download: function(i) {\n      var child = this.children();\n      var node  = $(child[i]);\n      var ext   = \"html\";\n      var data;\n\n      function aSupportsDownload() {\n\treturn $(\"<a>\")[0].download != undefined;\n      }\n\n      if ( node.hasClass(\"export-dom\") ) {\n\tvar r = {};\n\tnode = node.trigger(\"export-dom\", r);\n\tif ( r.element ) {\n\t  data = r.element.outerHTML;\n\t  ext  = r.extension||\"html\";\n\t  type = r.contentType||\"text/html\";\n\t} else {\n\t  alert(\"Failed to export rendered result\");\n\t}\n      } else if ( node.find(\"svg\").length == 1 ) {\n\tvar svg = node.find(\"svg\");\n\tif ( !svg.attr(\"xmlns\") )\n\t  svg.attr(\"xmlns\", \"http://www.w3.org/2000/svg\");\n\tdata = svg[0].outerHTML\n\text  = \"svg\";\n\ttype = \"image/svg+xml\";\n      } else {\n\tdata = node.html();\n\ttype = \"text/html\";\n      }\n\n      if ( !aSupportsDownload() )\n\ttype = \"application/octet-stream\";\n\n      var href\t= \"data:\"+type+\";charset=UTF-8,\"\n\t\t+ encodeURIComponent(data);\n\n      var a = $.el.a({ href:href,\n\t\t       download:\"swish-rendered.\"+ext\n\t\t     });\n      this.append(a);\n      a.click();\n      $(a).remove();\n\n      return this;\n    },\n\n    /**\n     * @return {String} native Prolog text for a multi-rendered block\n     */\n    prologText: function() {\n      return this.find(\"span.render-as-prolog\").text();\n    }\n  }; // methods\n\n\n  function selectMenu() {\n    var menu = $(\"#render-select\");\n\n    if ( !menu[0] ) {\n      menu = $($.el.form({ id:\"render-select\",\n                           style:\"display:none\"\n\t\t         }));\n\n      menu.on(\"click\", \"a\", function(ev) {\n\tvar a = $(ev.target).closest(\"a\");\n\tvar i = a.data(\"nr\");\n\n\tmenu.data(\"target\").renderMulti(a.data(\"action\"), i);\n\treturn false;\n      });\n      menu.on(\"click\", function() {\n\tvar r = $(\"input[name=render]:checked\", $(this)).val();\n\tmenu.data(\"target\").renderMulti('select', parseInt(r));\n      });\n      menu.hover(function() { hovering = true; startMenuTimeout(); },\n\t\t function() { resetHover(); });\n\n      $(\"body\").append(menu);\n    }\n\n    return menu;\n  }\n\n  function closeSelectMenu() {\n    if ( !hovering ) {\n      var menu = selectMenu();\n      var target = menu.data(\"target\");\n\n      if ( target ) {\n\ttarget.removeClass(\"render-selecting\");\n\tmenu.data(\"target\", null);\n      }\n      menu.hide(400);\n    }\n  }\n\n  function startMenuTimeout() {\n    timeout = setTimeout(function() {\n      closeSelectMenu();\n    }, 400);\n  }\n\n  function resetHover() {\n    hovering = false;\n    startMenuTimeout();\n  }\n\n  function dragStart(ev) {\n    var dt = ev.originalEvent.dataTransfer;\n    dt.setData(\"Text\", $(ev.target).renderMulti('prologText'));\n    return true;\n  }\n\n  /**\n   * <Class description>\n   *\n   * @class renderMulti\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.renderMulti = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\n\n\n\n\n});\n\n","/**\n*\n* jquery.sparkline.js\n*\n* v2.1.2\n* (c) Splunk, Inc\n* Contact: Gareth Watts (gareth@splunk.com)\n* http://omnipotent.net/jquery.sparkline/\n*\n* Generates inline sparkline charts from data supplied either to the method\n* or inline in HTML\n*\n* Compatible with Internet Explorer 6.0+ and modern browsers equipped with the canvas tag\n* (Firefox 2.0+, Safari, Opera, etc)\n*\n* License: New BSD License\n*\n* Copyright (c) 2012, Splunk Inc.\n* All rights reserved.\n*\n* Redistribution and use in source and binary forms, with or without modification,\n* are permitted provided that the following conditions are met:\n*\n*     * Redistributions of source code must retain the above copyright notice,\n*       this list of conditions and the following disclaimer.\n*     * Redistributions in binary form must reproduce the above copyright notice,\n*       this list of conditions and the following disclaimer in the documentation\n*       and/or other materials provided with the distribution.\n*     * Neither the name of Splunk Inc nor the names of its contributors may\n*       be used to endorse or promote products derived from this software without\n*       specific prior written permission.\n*\n* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\n* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT\n* SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT\n* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*\n*\n* Usage:\n*  $(selector).sparkline(values, options)\n*\n* If values is undefined or set to 'html' then the data values are read from the specified tag:\n*   <p>Sparkline: <span class=\"sparkline\">1,4,6,6,8,5,3,5</span></p>\n*   $('.sparkline').sparkline();\n* There must be no spaces in the enclosed data set\n*\n* Otherwise values must be an array of numbers or null values\n*    <p>Sparkline: <span id=\"sparkline1\">This text replaced if the browser is compatible</span></p>\n*    $('#sparkline1').sparkline([1,4,6,6,8,5,3,5])\n*    $('#sparkline2').sparkline([1,4,6,null,null,5,3,5])\n*\n* Values can also be specified in an HTML comment, or as a values attribute:\n*    <p>Sparkline: <span class=\"sparkline\"><!--1,4,6,6,8,5,3,5 --></span></p>\n*    <p>Sparkline: <span class=\"sparkline\" values=\"1,4,6,6,8,5,3,5\"></span></p>\n*    $('.sparkline').sparkline();\n*\n* For line charts, x values can also be specified:\n*   <p>Sparkline: <span class=\"sparkline\">1:1,2.7:4,3.4:6,5:6,6:8,8.7:5,9:3,10:5</span></p>\n*    $('#sparkline1').sparkline([ [1,1], [2.7,4], [3.4,6], [5,6], [6,8], [8.7,5], [9,3], [10,5] ])\n*\n* By default, options should be passed in as teh second argument to the sparkline function:\n*   $('.sparkline').sparkline([1,2,3,4], {type: 'bar'})\n*\n* Options can also be set by passing them on the tag itself.  This feature is disabled by default though\n* as there's a slight performance overhead:\n*   $('.sparkline').sparkline([1,2,3,4], {enableTagOptions: true})\n*   <p>Sparkline: <span class=\"sparkline\" sparkType=\"bar\" sparkBarColor=\"red\">loading</span></p>\n* Prefix all options supplied as tag attribute with \"spark\" (configurable by setting tagOptionPrefix)\n*\n* Supported options:\n*   lineColor - Color of the line used for the chart\n*   fillColor - Color used to fill in the chart - Set to '' or false for a transparent chart\n*   width - Width of the chart - Defaults to 3 times the number of values in pixels\n*   height - Height of the chart - Defaults to the height of the containing element\n*   chartRangeMin - Specify the minimum value to use for the Y range of the chart - Defaults to the minimum value supplied\n*   chartRangeMax - Specify the maximum value to use for the Y range of the chart - Defaults to the maximum value supplied\n*   chartRangeClip - Clip out of range values to the max/min specified by chartRangeMin and chartRangeMax\n*   chartRangeMinX - Specify the minimum value to use for the X range of the chart - Defaults to the minimum value supplied\n*   chartRangeMaxX - Specify the maximum value to use for the X range of the chart - Defaults to the maximum value supplied\n*   composite - If true then don't erase any existing chart attached to the tag, but draw\n*           another chart over the top - Note that width and height are ignored if an\n*           existing chart is detected.\n*   tagValuesAttribute - Name of tag attribute to check for data values - Defaults to 'values'\n*   enableTagOptions - Whether to check tags for sparkline options\n*   tagOptionPrefix - Prefix used for options supplied as tag attributes - Defaults to 'spark'\n*   disableHiddenCheck - If set to true, then the plugin will assume that charts will never be drawn into a\n*           hidden dom element, avoding a browser reflow\n*   disableInteraction - If set to true then all mouseover/click interaction behaviour will be disabled,\n*       making the plugin perform much like it did in 1.x\n*   disableTooltips - If set to true then tooltips will be disabled - Defaults to false (tooltips enabled)\n*   disableHighlight - If set to true then highlighting of selected chart elements on mouseover will be disabled\n*       defaults to false (highlights enabled)\n*   highlightLighten - Factor to lighten/darken highlighted chart values by - Defaults to 1.4 for a 40% increase\n*   tooltipContainer - Specify which DOM element the tooltip should be rendered into - defaults to document.body\n*   tooltipClassname - Optional CSS classname to apply to tooltips - If not specified then a default style will be applied\n*   tooltipOffsetX - How many pixels away from the mouse pointer to render the tooltip on the X axis\n*   tooltipOffsetY - How many pixels away from the mouse pointer to render the tooltip on the r axis\n*   tooltipFormatter  - Optional callback that allows you to override the HTML displayed in the tooltip\n*       callback is given arguments of (sparkline, options, fields)\n*   tooltipChartTitle - If specified then the tooltip uses the string specified by this setting as a title\n*   tooltipFormat - A format string or SPFormat object  (or an array thereof for multiple entries)\n*       to control the format of the tooltip\n*   tooltipPrefix - A string to prepend to each field displayed in a tooltip\n*   tooltipSuffix - A string to append to each field displayed in a tooltip\n*   tooltipSkipNull - If true then null values will not have a tooltip displayed (defaults to true)\n*   tooltipValueLookups - An object or range map to map field values to tooltip strings\n*       (eg. to map -1 to \"Lost\", 0 to \"Draw\", and 1 to \"Win\")\n*   numberFormatter - Optional callback for formatting numbers in tooltips\n*   numberDigitGroupSep - Character to use for group separator in numbers \"1,234\" - Defaults to \",\"\n*   numberDecimalMark - Character to use for the decimal point when formatting numbers - Defaults to \".\"\n*   numberDigitGroupCount - Number of digits between group separator - Defaults to 3\n*\n* There are 7 types of sparkline, selected by supplying a \"type\" option of 'line' (default),\n* 'bar', 'tristate', 'bullet', 'discrete', 'pie' or 'box'\n*    line - Line chart.  Options:\n*       spotColor - Set to '' to not end each line in a circular spot\n*       minSpotColor - If set, color of spot at minimum value\n*       maxSpotColor - If set, color of spot at maximum value\n*       spotRadius - Radius in pixels\n*       lineWidth - Width of line in pixels\n*       normalRangeMin\n*       normalRangeMax - If set draws a filled horizontal bar between these two values marking the \"normal\"\n*                      or expected range of values\n*       normalRangeColor - Color to use for the above bar\n*       drawNormalOnTop - Draw the normal range above the chart fill color if true\n*       defaultPixelsPerValue - Defaults to 3 pixels of width for each value in the chart\n*       highlightSpotColor - The color to use for drawing a highlight spot on mouseover - Set to null to disable\n*       highlightLineColor - The color to use for drawing a highlight line on mouseover - Set to null to disable\n*       valueSpots - Specify which points to draw spots on, and in which color.  Accepts a range map\n*\n*   bar - Bar chart.  Options:\n*       barColor - Color of bars for postive values\n*       negBarColor - Color of bars for negative values\n*       zeroColor - Color of bars with zero values\n*       nullColor - Color of bars with null values - Defaults to omitting the bar entirely\n*       barWidth - Width of bars in pixels\n*       colorMap - Optional mappnig of values to colors to override the *BarColor values above\n*                  can be an Array of values to control the color of individual bars or a range map\n*                  to specify colors for individual ranges of values\n*       barSpacing - Gap between bars in pixels\n*       zeroAxis - Centers the y-axis around zero if true\n*\n*   tristate - Charts values of win (>0), lose (<0) or draw (=0)\n*       posBarColor - Color of win values\n*       negBarColor - Color of lose values\n*       zeroBarColor - Color of draw values\n*       barWidth - Width of bars in pixels\n*       barSpacing - Gap between bars in pixels\n*       colorMap - Optional mappnig of values to colors to override the *BarColor values above\n*                  can be an Array of values to control the color of individual bars or a range map\n*                  to specify colors for individual ranges of values\n*\n*   discrete - Options:\n*       lineHeight - Height of each line in pixels - Defaults to 30% of the graph height\n*       thesholdValue - Values less than this value will be drawn using thresholdColor instead of lineColor\n*       thresholdColor\n*\n*   bullet - Values for bullet graphs msut be in the order: target, performance, range1, range2, range3, ...\n*       options:\n*       targetColor - The color of the vertical target marker\n*       targetWidth - The width of the target marker in pixels\n*       performanceColor - The color of the performance measure horizontal bar\n*       rangeColors - Colors to use for each qualitative range background color\n*\n*   pie - Pie chart. Options:\n*       sliceColors - An array of colors to use for pie slices\n*       offset - Angle in degrees to offset the first slice - Try -90 or +90\n*       borderWidth - Width of border to draw around the pie chart, in pixels - Defaults to 0 (no border)\n*       borderColor - Color to use for the pie chart border - Defaults to #000\n*\n*   box - Box plot. Options:\n*       raw - Set to true to supply pre-computed plot points as values\n*             values should be: low_outlier, low_whisker, q1, median, q3, high_whisker, high_outlier\n*             When set to false you can supply any number of values and the box plot will\n*             be computed for you.  Default is false.\n*       showOutliers - Set to true (default) to display outliers as circles\n*       outlierIQR - Interquartile range used to determine outliers.  Default 1.5\n*       boxLineColor - Outline color of the box\n*       boxFillColor - Fill color for the box\n*       whiskerColor - Line color used for whiskers\n*       outlierLineColor - Outline color of outlier circles\n*       outlierFillColor - Fill color of the outlier circles\n*       spotRadius - Radius of outlier circles\n*       medianColor - Line color of the median line\n*       target - Draw a target cross hair at the supplied value (default undefined)\n*\n*\n*\n*   Examples:\n*   $('#sparkline1').sparkline(myvalues, { lineColor: '#f00', fillColor: false });\n*   $('.barsparks').sparkline('html', { type:'bar', height:'40px', barWidth:5 });\n*   $('#tristate').sparkline([1,1,-1,1,0,0,-1], { type:'tristate' }):\n*   $('#discrete').sparkline([1,3,4,5,5,3,4,5], { type:'discrete' });\n*   $('#bullet').sparkline([10,12,12,9,7], { type:'bullet' });\n*   $('#pie').sparkline([1,1,2], { type:'pie' });\n*/\n\n/*jslint regexp: true, browser: true, jquery: true, white: true, nomen: false, plusplus: false, maxerr: 500, indent: 4 */\n\n(function(document, Math, undefined) { // performance/minified-size optimization\n(function(factory) {\n    if(typeof define === 'function' && define.amd) {\n        define('sparkline',['jquery'], factory);\n    } else if (jQuery && !jQuery.fn.sparkline) {\n        factory(jQuery);\n    }\n}\n(function($) {\n    'use strict';\n\n    var UNSET_OPTION = {},\n        getDefaults, createClass, SPFormat, clipval, quartile, normalizeValue, normalizeValues,\n        remove, isNumber, all, sum, addCSS, ensureArray, formatNumber, RangeMap,\n        MouseHandler, Tooltip, barHighlightMixin,\n        line, bar, tristate, discrete, bullet, pie, box, defaultStyles, initStyles,\n        VShape, VCanvas_base, VCanvas_canvas, VCanvas_vml, pending, shapeCount = 0;\n\n    /**\n     * Default configuration settings\n     */\n    getDefaults = function () {\n        return {\n            // Settings common to most/all chart types\n            common: {\n                type: 'line',\n                lineColor: '#00f',\n                fillColor: '#cdf',\n                defaultPixelsPerValue: 3,\n                width: 'auto',\n                height: 'auto',\n                composite: false,\n                tagValuesAttribute: 'values',\n                tagOptionsPrefix: 'spark',\n                enableTagOptions: false,\n                enableHighlight: true,\n                highlightLighten: 1.4,\n                tooltipSkipNull: true,\n                tooltipPrefix: '',\n                tooltipSuffix: '',\n                disableHiddenCheck: false,\n                numberFormatter: false,\n                numberDigitGroupCount: 3,\n                numberDigitGroupSep: ',',\n                numberDecimalMark: '.',\n                disableTooltips: false,\n                disableInteraction: false\n            },\n            // Defaults for line charts\n            line: {\n                spotColor: '#f80',\n                highlightSpotColor: '#5f5',\n                highlightLineColor: '#f22',\n                spotRadius: 1.5,\n                minSpotColor: '#f80',\n                maxSpotColor: '#f80',\n                lineWidth: 1,\n                normalRangeMin: undefined,\n                normalRangeMax: undefined,\n                normalRangeColor: '#ccc',\n                drawNormalOnTop: false,\n                chartRangeMin: undefined,\n                chartRangeMax: undefined,\n                chartRangeMinX: undefined,\n                chartRangeMaxX: undefined,\n                tooltipFormat: new SPFormat('<span style=\"color: {{color}}\">&#9679;</span> {{prefix}}{{y}}{{suffix}}')\n            },\n            // Defaults for bar charts\n            bar: {\n                barColor: '#3366cc',\n                negBarColor: '#f44',\n                stackedBarColor: ['#3366cc', '#dc3912', '#ff9900', '#109618', '#66aa00',\n                    '#dd4477', '#0099c6', '#990099'],\n                zeroColor: undefined,\n                nullColor: undefined,\n                zeroAxis: true,\n                barWidth: 4,\n                barSpacing: 1,\n                chartRangeMax: undefined,\n                chartRangeMin: undefined,\n                chartRangeClip: false,\n                colorMap: undefined,\n                tooltipFormat: new SPFormat('<span style=\"color: {{color}}\">&#9679;</span> {{prefix}}{{value}}{{suffix}}')\n            },\n            // Defaults for tristate charts\n            tristate: {\n                barWidth: 4,\n                barSpacing: 1,\n                posBarColor: '#6f6',\n                negBarColor: '#f44',\n                zeroBarColor: '#999',\n                colorMap: {},\n                tooltipFormat: new SPFormat('<span style=\"color: {{color}}\">&#9679;</span> {{value:map}}'),\n                tooltipValueLookups: { map: { '-1': 'Loss', '0': 'Draw', '1': 'Win' } }\n            },\n            // Defaults for discrete charts\n            discrete: {\n                lineHeight: 'auto',\n                thresholdColor: undefined,\n                thresholdValue: 0,\n                chartRangeMax: undefined,\n                chartRangeMin: undefined,\n                chartRangeClip: false,\n                tooltipFormat: new SPFormat('{{prefix}}{{value}}{{suffix}}')\n            },\n            // Defaults for bullet charts\n            bullet: {\n                targetColor: '#f33',\n                targetWidth: 3, // width of the target bar in pixels\n                performanceColor: '#33f',\n                rangeColors: ['#d3dafe', '#a8b6ff', '#7f94ff'],\n                base: undefined, // set this to a number to change the base start number\n                tooltipFormat: new SPFormat('{{fieldkey:fields}} - {{value}}'),\n                tooltipValueLookups: { fields: {r: 'Range', p: 'Performance', t: 'Target'} }\n            },\n            // Defaults for pie charts\n            pie: {\n                offset: 0,\n                sliceColors: ['#3366cc', '#dc3912', '#ff9900', '#109618', '#66aa00',\n                    '#dd4477', '#0099c6', '#990099'],\n                borderWidth: 0,\n                borderColor: '#000',\n                tooltipFormat: new SPFormat('<span style=\"color: {{color}}\">&#9679;</span> {{value}} ({{percent.1}}%)')\n            },\n            // Defaults for box plots\n            box: {\n                raw: false,\n                boxLineColor: '#000',\n                boxFillColor: '#cdf',\n                whiskerColor: '#000',\n                outlierLineColor: '#333',\n                outlierFillColor: '#fff',\n                medianColor: '#f00',\n                showOutliers: true,\n                outlierIQR: 1.5,\n                spotRadius: 1.5,\n                target: undefined,\n                targetColor: '#4a2',\n                chartRangeMax: undefined,\n                chartRangeMin: undefined,\n                tooltipFormat: new SPFormat('{{field:fields}}: {{value}}'),\n                tooltipFormatFieldlistKey: 'field',\n                tooltipValueLookups: { fields: { lq: 'Lower Quartile', med: 'Median',\n                    uq: 'Upper Quartile', lo: 'Left Outlier', ro: 'Right Outlier',\n                    lw: 'Left Whisker', rw: 'Right Whisker'} }\n            }\n        };\n    };\n\n    // You can have tooltips use a css class other than jqstooltip by specifying tooltipClassname\n    defaultStyles = '.jqstooltip { ' +\n            'position: absolute;' +\n            'left: 0px;' +\n            'top: 0px;' +\n            'visibility: hidden;' +\n            'background: rgb(0, 0, 0) transparent;' +\n            'background-color: rgba(0,0,0,0.6);' +\n            'filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);' +\n            '-ms-filter: \"progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)\";' +\n            'color: white;' +\n            'font: 10px arial, san serif;' +\n            'text-align: left;' +\n            'white-space: nowrap;' +\n            'padding: 5px;' +\n            'border: 1px solid white;' +\n            'z-index: 10000;' +\n            '}' +\n            '.jqsfield { ' +\n            'color: white;' +\n            'font: 10px arial, san serif;' +\n            'text-align: left;' +\n            '}';\n\n    /**\n     * Utilities\n     */\n\n    createClass = function (/* [baseclass, [mixin, ...]], definition */) {\n        var Class, args;\n        Class = function () {\n            this.init.apply(this, arguments);\n        };\n        if (arguments.length > 1) {\n            if (arguments[0]) {\n                Class.prototype = $.extend(new arguments[0](), arguments[arguments.length - 1]);\n                Class._super = arguments[0].prototype;\n            } else {\n                Class.prototype = arguments[arguments.length - 1];\n            }\n            if (arguments.length > 2) {\n                args = Array.prototype.slice.call(arguments, 1, -1);\n                args.unshift(Class.prototype);\n                $.extend.apply($, args);\n            }\n        } else {\n            Class.prototype = arguments[0];\n        }\n        Class.prototype.cls = Class;\n        return Class;\n    };\n\n    /**\n     * Wraps a format string for tooltips\n     * {{x}}\n     * {{x.2}\n     * {{x:months}}\n     */\n    $.SPFormatClass = SPFormat = createClass({\n        fre: /\\{\\{([\\w.]+?)(:(.+?))?\\}\\}/g,\n        precre: /(\\w+)\\.(\\d+)/,\n\n        init: function (format, fclass) {\n            this.format = format;\n            this.fclass = fclass;\n        },\n\n        render: function (fieldset, lookups, options) {\n            var self = this,\n                fields = fieldset,\n                match, token, lookupkey, fieldvalue, prec;\n            return this.format.replace(this.fre, function () {\n                var lookup;\n                token = arguments[1];\n                lookupkey = arguments[3];\n                match = self.precre.exec(token);\n                if (match) {\n                    prec = match[2];\n                    token = match[1];\n                } else {\n                    prec = false;\n                }\n                fieldvalue = fields[token];\n                if (fieldvalue === undefined) {\n                    return '';\n                }\n                if (lookupkey && lookups && lookups[lookupkey]) {\n                    lookup = lookups[lookupkey];\n                    if (lookup.get) { // RangeMap\n                        return lookups[lookupkey].get(fieldvalue) || fieldvalue;\n                    } else {\n                        return lookups[lookupkey][fieldvalue] || fieldvalue;\n                    }\n                }\n                if (isNumber(fieldvalue)) {\n                    if (options.get('numberFormatter')) {\n                        fieldvalue = options.get('numberFormatter')(fieldvalue);\n                    } else {\n                        fieldvalue = formatNumber(fieldvalue, prec,\n                            options.get('numberDigitGroupCount'),\n                            options.get('numberDigitGroupSep'),\n                            options.get('numberDecimalMark'));\n                    }\n                }\n                return fieldvalue;\n            });\n        }\n    });\n\n    // convience method to avoid needing the new operator\n    $.spformat = function(format, fclass) {\n        return new SPFormat(format, fclass);\n    };\n\n    clipval = function (val, min, max) {\n        if (val < min) {\n            return min;\n        }\n        if (val > max) {\n            return max;\n        }\n        return val;\n    };\n\n    quartile = function (values, q) {\n        var vl;\n        if (q === 2) {\n            vl = Math.floor(values.length / 2);\n            return values.length % 2 ? values[vl] : (values[vl-1] + values[vl]) / 2;\n        } else {\n            if (values.length % 2 ) { // odd\n                vl = (values.length * q + q) / 4;\n                return vl % 1 ? (values[Math.floor(vl)] + values[Math.floor(vl) - 1]) / 2 : values[vl-1];\n            } else { //even\n                vl = (values.length * q + 2) / 4;\n                return vl % 1 ? (values[Math.floor(vl)] + values[Math.floor(vl) - 1]) / 2 :  values[vl-1];\n\n            }\n        }\n    };\n\n    normalizeValue = function (val) {\n        var nf;\n        switch (val) {\n            case 'undefined':\n                val = undefined;\n                break;\n            case 'null':\n                val = null;\n                break;\n            case 'true':\n                val = true;\n                break;\n            case 'false':\n                val = false;\n                break;\n            default:\n                nf = parseFloat(val);\n                if (val == nf) {\n                    val = nf;\n                }\n        }\n        return val;\n    };\n\n    normalizeValues = function (vals) {\n        var i, result = [];\n        for (i = vals.length; i--;) {\n            result[i] = normalizeValue(vals[i]);\n        }\n        return result;\n    };\n\n    remove = function (vals, filter) {\n        var i, vl, result = [];\n        for (i = 0, vl = vals.length; i < vl; i++) {\n            if (vals[i] !== filter) {\n                result.push(vals[i]);\n            }\n        }\n        return result;\n    };\n\n    isNumber = function (num) {\n        return !isNaN(parseFloat(num)) && isFinite(num);\n    };\n\n    formatNumber = function (num, prec, groupsize, groupsep, decsep) {\n        var p, i;\n        num = (prec === false ? parseFloat(num).toString() : num.toFixed(prec)).split('');\n        p = (p = $.inArray('.', num)) < 0 ? num.length : p;\n        if (p < num.length) {\n            num[p] = decsep;\n        }\n        for (i = p - groupsize; i > 0; i -= groupsize) {\n            num.splice(i, 0, groupsep);\n        }\n        return num.join('');\n    };\n\n    // determine if all values of an array match a value\n    // returns true if the array is empty\n    all = function (val, arr, ignoreNull) {\n        var i;\n        for (i = arr.length; i--; ) {\n            if (ignoreNull && arr[i] === null) continue;\n            if (arr[i] !== val) {\n                return false;\n            }\n        }\n        return true;\n    };\n\n    // sums the numeric values in an array, ignoring other values\n    sum = function (vals) {\n        var total = 0, i;\n        for (i = vals.length; i--;) {\n            total += typeof vals[i] === 'number' ? vals[i] : 0;\n        }\n        return total;\n    };\n\n    ensureArray = function (val) {\n        return $.isArray(val) ? val : [val];\n    };\n\n    // http://paulirish.com/2008/bookmarklet-inject-new-css-rules/\n    addCSS = function(css) {\n        var tag;\n        //if ('\\v' == 'v') /* ie only */ {\n        if (document.createStyleSheet) {\n            document.createStyleSheet().cssText = css;\n        } else {\n            tag = document.createElement('style');\n            tag.type = 'text/css';\n            document.getElementsByTagName('head')[0].appendChild(tag);\n            tag[(typeof document.body.style.WebkitAppearance == 'string') /* webkit only */ ? 'innerText' : 'innerHTML'] = css;\n        }\n    };\n\n    // Provide a cross-browser interface to a few simple drawing primitives\n    $.fn.simpledraw = function (width, height, useExisting, interact) {\n        var target, mhandler;\n        if (useExisting && (target = this.data('_jqs_vcanvas'))) {\n            return target;\n        }\n\n        if ($.fn.sparkline.canvas === false) {\n            // We've already determined that neither Canvas nor VML are available\n            return false;\n\n        } else if ($.fn.sparkline.canvas === undefined) {\n            // No function defined yet -- need to see if we support Canvas or VML\n            var el = document.createElement('canvas');\n            if (!!(el.getContext && el.getContext('2d'))) {\n                // Canvas is available\n                $.fn.sparkline.canvas = function(width, height, target, interact) {\n                    return new VCanvas_canvas(width, height, target, interact);\n                };\n            } else if (document.namespaces && !document.namespaces.v) {\n                // VML is available\n                document.namespaces.add('v', 'urn:schemas-microsoft-com:vml', '#default#VML');\n                $.fn.sparkline.canvas = function(width, height, target, interact) {\n                    return new VCanvas_vml(width, height, target);\n                };\n            } else {\n                // Neither Canvas nor VML are available\n                $.fn.sparkline.canvas = false;\n                return false;\n            }\n        }\n\n        if (width === undefined) {\n            width = $(this).innerWidth();\n        }\n        if (height === undefined) {\n            height = $(this).innerHeight();\n        }\n\n        target = $.fn.sparkline.canvas(width, height, this, interact);\n\n        mhandler = $(this).data('_jqs_mhandler');\n        if (mhandler) {\n            mhandler.registerCanvas(target);\n        }\n        return target;\n    };\n\n    $.fn.cleardraw = function () {\n        var target = this.data('_jqs_vcanvas');\n        if (target) {\n            target.reset();\n        }\n    };\n\n    $.RangeMapClass = RangeMap = createClass({\n        init: function (map) {\n            var key, range, rangelist = [];\n            for (key in map) {\n                if (map.hasOwnProperty(key) && typeof key === 'string' && key.indexOf(':') > -1) {\n                    range = key.split(':');\n                    range[0] = range[0].length === 0 ? -Infinity : parseFloat(range[0]);\n                    range[1] = range[1].length === 0 ? Infinity : parseFloat(range[1]);\n                    range[2] = map[key];\n                    rangelist.push(range);\n                }\n            }\n            this.map = map;\n            this.rangelist = rangelist || false;\n        },\n\n        get: function (value) {\n            var rangelist = this.rangelist,\n                i, range, result;\n            if ((result = this.map[value]) !== undefined) {\n                return result;\n            }\n            if (rangelist) {\n                for (i = rangelist.length; i--;) {\n                    range = rangelist[i];\n                    if (range[0] <= value && range[1] >= value) {\n                        return range[2];\n                    }\n                }\n            }\n            return undefined;\n        }\n    });\n\n    // Convenience function\n    $.range_map = function(map) {\n        return new RangeMap(map);\n    };\n\n    MouseHandler = createClass({\n        init: function (el, options) {\n            var $el = $(el);\n            this.$el = $el;\n            this.options = options;\n            this.currentPageX = 0;\n            this.currentPageY = 0;\n            this.el = el;\n            this.splist = [];\n            this.tooltip = null;\n            this.over = false;\n            this.displayTooltips = !options.get('disableTooltips');\n            this.highlightEnabled = !options.get('disableHighlight');\n        },\n\n        registerSparkline: function (sp) {\n            this.splist.push(sp);\n            if (this.over) {\n                this.updateDisplay();\n            }\n        },\n\n        registerCanvas: function (canvas) {\n            var $canvas = $(canvas.canvas);\n            this.canvas = canvas;\n            this.$canvas = $canvas;\n            $canvas.mouseenter($.proxy(this.mouseenter, this));\n            $canvas.mouseleave($.proxy(this.mouseleave, this));\n            $canvas.click($.proxy(this.mouseclick, this));\n        },\n\n        reset: function (removeTooltip) {\n            this.splist = [];\n            if (this.tooltip && removeTooltip) {\n                this.tooltip.remove();\n                this.tooltip = undefined;\n            }\n        },\n\n        mouseclick: function (e) {\n            var clickEvent = $.Event('sparklineClick');\n            clickEvent.originalEvent = e;\n            clickEvent.sparklines = this.splist;\n            this.$el.trigger(clickEvent);\n        },\n\n        mouseenter: function (e) {\n            $(document.body).unbind('mousemove.jqs');\n            $(document.body).bind('mousemove.jqs', $.proxy(this.mousemove, this));\n            this.over = true;\n            this.currentPageX = e.pageX;\n            this.currentPageY = e.pageY;\n            this.currentEl = e.target;\n            if (!this.tooltip && this.displayTooltips) {\n                this.tooltip = new Tooltip(this.options);\n                this.tooltip.updatePosition(e.pageX, e.pageY);\n            }\n            this.updateDisplay();\n        },\n\n        mouseleave: function () {\n            $(document.body).unbind('mousemove.jqs');\n            var splist = this.splist,\n                 spcount = splist.length,\n                 needsRefresh = false,\n                 sp, i;\n            this.over = false;\n            this.currentEl = null;\n\n            if (this.tooltip) {\n                this.tooltip.remove();\n                this.tooltip = null;\n            }\n\n            for (i = 0; i < spcount; i++) {\n                sp = splist[i];\n                if (sp.clearRegionHighlight()) {\n                    needsRefresh = true;\n                }\n            }\n\n            if (needsRefresh) {\n                this.canvas.render();\n            }\n        },\n\n        mousemove: function (e) {\n            this.currentPageX = e.pageX;\n            this.currentPageY = e.pageY;\n            this.currentEl = e.target;\n            if (this.tooltip) {\n                this.tooltip.updatePosition(e.pageX, e.pageY);\n            }\n            this.updateDisplay();\n        },\n\n        updateDisplay: function () {\n            var splist = this.splist,\n                 spcount = splist.length,\n                 needsRefresh = false,\n                 offset = this.$canvas.offset(),\n                 localX = this.currentPageX - offset.left,\n                 localY = this.currentPageY - offset.top,\n                 tooltiphtml, sp, i, result, changeEvent;\n            if (!this.over) {\n                return;\n            }\n            for (i = 0; i < spcount; i++) {\n                sp = splist[i];\n                result = sp.setRegionHighlight(this.currentEl, localX, localY);\n                if (result) {\n                    needsRefresh = true;\n                }\n            }\n            if (needsRefresh) {\n                changeEvent = $.Event('sparklineRegionChange');\n                changeEvent.sparklines = this.splist;\n                this.$el.trigger(changeEvent);\n                if (this.tooltip) {\n                    tooltiphtml = '';\n                    for (i = 0; i < spcount; i++) {\n                        sp = splist[i];\n                        tooltiphtml += sp.getCurrentRegionTooltip();\n                    }\n                    this.tooltip.setContent(tooltiphtml);\n                }\n                if (!this.disableHighlight) {\n                    this.canvas.render();\n                }\n            }\n            if (result === null) {\n                this.mouseleave();\n            }\n        }\n    });\n\n\n    Tooltip = createClass({\n        sizeStyle: 'position: static !important;' +\n            'display: block !important;' +\n            'visibility: hidden !important;' +\n            'float: left !important;',\n\n        init: function (options) {\n            var tooltipClassname = options.get('tooltipClassname', 'jqstooltip'),\n                sizetipStyle = this.sizeStyle,\n                offset;\n            this.container = options.get('tooltipContainer') || document.body;\n            this.tooltipOffsetX = options.get('tooltipOffsetX', 10);\n            this.tooltipOffsetY = options.get('tooltipOffsetY', 12);\n            // remove any previous lingering tooltip\n            $('#jqssizetip').remove();\n            $('#jqstooltip').remove();\n            this.sizetip = $('<div/>', {\n                id: 'jqssizetip',\n                style: sizetipStyle,\n                'class': tooltipClassname\n            });\n            this.tooltip = $('<div/>', {\n                id: 'jqstooltip',\n                'class': tooltipClassname\n            }).appendTo(this.container);\n            // account for the container's location\n            offset = this.tooltip.offset();\n            this.offsetLeft = offset.left;\n            this.offsetTop = offset.top;\n            this.hidden = true;\n            $(window).unbind('resize.jqs scroll.jqs');\n            $(window).bind('resize.jqs scroll.jqs', $.proxy(this.updateWindowDims, this));\n            this.updateWindowDims();\n        },\n\n        updateWindowDims: function () {\n            this.scrollTop = $(window).scrollTop();\n            this.scrollLeft = $(window).scrollLeft();\n            this.scrollRight = this.scrollLeft + $(window).width();\n            this.updatePosition();\n        },\n\n        getSize: function (content) {\n            this.sizetip.html(content).appendTo(this.container);\n            this.width = this.sizetip.width() + 1;\n            this.height = this.sizetip.height();\n            this.sizetip.remove();\n        },\n\n        setContent: function (content) {\n            if (!content) {\n                this.tooltip.css('visibility', 'hidden');\n                this.hidden = true;\n                return;\n            }\n            this.getSize(content);\n            this.tooltip.html(content)\n                .css({\n                    'width': this.width,\n                    'height': this.height,\n                    'visibility': 'visible'\n                });\n            if (this.hidden) {\n                this.hidden = false;\n                this.updatePosition();\n            }\n        },\n\n        updatePosition: function (x, y) {\n            if (x === undefined) {\n                if (this.mousex === undefined) {\n                    return;\n                }\n                x = this.mousex - this.offsetLeft;\n                y = this.mousey - this.offsetTop;\n\n            } else {\n                this.mousex = x = x - this.offsetLeft;\n                this.mousey = y = y - this.offsetTop;\n            }\n            if (!this.height || !this.width || this.hidden) {\n                return;\n            }\n\n            y -= this.height + this.tooltipOffsetY;\n            x += this.tooltipOffsetX;\n\n            if (y < this.scrollTop) {\n                y = this.scrollTop;\n            }\n            if (x < this.scrollLeft) {\n                x = this.scrollLeft;\n            } else if (x + this.width > this.scrollRight) {\n                x = this.scrollRight - this.width;\n            }\n\n            this.tooltip.css({\n                'left': x,\n                'top': y\n            });\n        },\n\n        remove: function () {\n            this.tooltip.remove();\n            this.sizetip.remove();\n            this.sizetip = this.tooltip = undefined;\n            $(window).unbind('resize.jqs scroll.jqs');\n        }\n    });\n\n    initStyles = function() {\n        addCSS(defaultStyles);\n    };\n\n    $(initStyles);\n\n    pending = [];\n    $.fn.sparkline = function (userValues, userOptions) {\n        return this.each(function () {\n            var options = new $.fn.sparkline.options(this, userOptions),\n                 $this = $(this),\n                 render, i;\n            render = function () {\n                var values, width, height, tmp, mhandler, sp, vals;\n                if (userValues === 'html' || userValues === undefined) {\n                    vals = this.getAttribute(options.get('tagValuesAttribute'));\n                    if (vals === undefined || vals === null) {\n                        vals = $this.html();\n                    }\n                    values = vals.replace(/(^\\s*<!--)|(-->\\s*$)|\\s+/g, '').split(',');\n                } else {\n                    values = userValues;\n                }\n\n                width = options.get('width') === 'auto' ? values.length * options.get('defaultPixelsPerValue') : options.get('width');\n                if (options.get('height') === 'auto') {\n                    if (!options.get('composite') || !$.data(this, '_jqs_vcanvas')) {\n                        // must be a better way to get the line height\n                        tmp = document.createElement('span');\n                        tmp.innerHTML = 'a';\n                        $this.html(tmp);\n                        height = $(tmp).innerHeight() || $(tmp).height();\n                        $(tmp).remove();\n                        tmp = null;\n                    }\n                } else {\n                    height = options.get('height');\n                }\n\n                if (!options.get('disableInteraction')) {\n                    mhandler = $.data(this, '_jqs_mhandler');\n                    if (!mhandler) {\n                        mhandler = new MouseHandler(this, options);\n                        $.data(this, '_jqs_mhandler', mhandler);\n                    } else if (!options.get('composite')) {\n                        mhandler.reset();\n                    }\n                } else {\n                    mhandler = false;\n                }\n\n                if (options.get('composite') && !$.data(this, '_jqs_vcanvas')) {\n                    if (!$.data(this, '_jqs_errnotify')) {\n                        alert('Attempted to attach a composite sparkline to an element with no existing sparkline');\n                        $.data(this, '_jqs_errnotify', true);\n                    }\n                    return;\n                }\n\n                sp = new $.fn.sparkline[options.get('type')](this, values, options, width, height);\n\n                sp.render();\n\n                if (mhandler) {\n                    mhandler.registerSparkline(sp);\n                }\n            };\n            if (($(this).html() && !options.get('disableHiddenCheck') && $(this).is(':hidden')) || !$(this).parents('body').length) {\n                if (!options.get('composite') && $.data(this, '_jqs_pending')) {\n                    // remove any existing references to the element\n                    for (i = pending.length; i; i--) {\n                        if (pending[i - 1][0] == this) {\n                            pending.splice(i - 1, 1);\n                        }\n                    }\n                }\n                pending.push([this, render]);\n                $.data(this, '_jqs_pending', true);\n            } else {\n                render.call(this);\n            }\n        });\n    };\n\n    $.fn.sparkline.defaults = getDefaults();\n\n\n    $.sparkline_display_visible = function () {\n        var el, i, pl;\n        var done = [];\n        for (i = 0, pl = pending.length; i < pl; i++) {\n            el = pending[i][0];\n            if ($(el).is(':visible') && !$(el).parents().is(':hidden')) {\n                pending[i][1].call(el);\n                $.data(pending[i][0], '_jqs_pending', false);\n                done.push(i);\n            } else if (!$(el).closest('html').length && !$.data(el, '_jqs_pending')) {\n                // element has been inserted and removed from the DOM\n                // If it was not yet inserted into the dom then the .data request\n                // will return true.\n                // removing from the dom causes the data to be removed.\n                $.data(pending[i][0], '_jqs_pending', false);\n                done.push(i);\n            }\n        }\n        for (i = done.length; i; i--) {\n            pending.splice(done[i - 1], 1);\n        }\n    };\n\n\n    /**\n     * User option handler\n     */\n    $.fn.sparkline.options = createClass({\n        init: function (tag, userOptions) {\n            var extendedOptions, defaults, base, tagOptionType;\n            this.userOptions = userOptions = userOptions || {};\n            this.tag = tag;\n            this.tagValCache = {};\n            defaults = $.fn.sparkline.defaults;\n            base = defaults.common;\n            this.tagOptionsPrefix = userOptions.enableTagOptions && (userOptions.tagOptionsPrefix || base.tagOptionsPrefix);\n\n            tagOptionType = this.getTagSetting('type');\n            if (tagOptionType === UNSET_OPTION) {\n                extendedOptions = defaults[userOptions.type || base.type];\n            } else {\n                extendedOptions = defaults[tagOptionType];\n            }\n            this.mergedOptions = $.extend({}, base, extendedOptions, userOptions);\n        },\n\n\n        getTagSetting: function (key) {\n            var prefix = this.tagOptionsPrefix,\n                val, i, pairs, keyval;\n            if (prefix === false || prefix === undefined) {\n                return UNSET_OPTION;\n            }\n            if (this.tagValCache.hasOwnProperty(key)) {\n                val = this.tagValCache.key;\n            } else {\n                val = this.tag.getAttribute(prefix + key);\n                if (val === undefined || val === null) {\n                    val = UNSET_OPTION;\n                } else if (val.substr(0, 1) === '[') {\n                    val = val.substr(1, val.length - 2).split(',');\n                    for (i = val.length; i--;) {\n                        val[i] = normalizeValue(val[i].replace(/(^\\s*)|(\\s*$)/g, ''));\n                    }\n                } else if (val.substr(0, 1) === '{') {\n                    pairs = val.substr(1, val.length - 2).split(',');\n                    val = {};\n                    for (i = pairs.length; i--;) {\n                        keyval = pairs[i].split(':', 2);\n                        val[keyval[0].replace(/(^\\s*)|(\\s*$)/g, '')] = normalizeValue(keyval[1].replace(/(^\\s*)|(\\s*$)/g, ''));\n                    }\n                } else {\n                    val = normalizeValue(val);\n                }\n                this.tagValCache.key = val;\n            }\n            return val;\n        },\n\n        get: function (key, defaultval) {\n            var tagOption = this.getTagSetting(key),\n                result;\n            if (tagOption !== UNSET_OPTION) {\n                return tagOption;\n            }\n            return (result = this.mergedOptions[key]) === undefined ? defaultval : result;\n        }\n    });\n\n\n    $.fn.sparkline._base = createClass({\n        disabled: false,\n\n        init: function (el, values, options, width, height) {\n            this.el = el;\n            this.$el = $(el);\n            this.values = values;\n            this.options = options;\n            this.width = width;\n            this.height = height;\n            this.currentRegion = undefined;\n        },\n\n        /**\n         * Setup the canvas\n         */\n        initTarget: function () {\n            var interactive = !this.options.get('disableInteraction');\n            if (!(this.target = this.$el.simpledraw(this.width, this.height, this.options.get('composite'), interactive))) {\n                this.disabled = true;\n            } else {\n                this.canvasWidth = this.target.pixelWidth;\n                this.canvasHeight = this.target.pixelHeight;\n            }\n        },\n\n        /**\n         * Actually render the chart to the canvas\n         */\n        render: function () {\n            if (this.disabled) {\n                this.el.innerHTML = '';\n                return false;\n            }\n            return true;\n        },\n\n        /**\n         * Return a region id for a given x/y co-ordinate\n         */\n        getRegion: function (x, y) {\n        },\n\n        /**\n         * Highlight an item based on the moused-over x,y co-ordinate\n         */\n        setRegionHighlight: function (el, x, y) {\n            var currentRegion = this.currentRegion,\n                highlightEnabled = !this.options.get('disableHighlight'),\n                newRegion;\n            if (x > this.canvasWidth || y > this.canvasHeight || x < 0 || y < 0) {\n                return null;\n            }\n            newRegion = this.getRegion(el, x, y);\n            if (currentRegion !== newRegion) {\n                if (currentRegion !== undefined && highlightEnabled) {\n                    this.removeHighlight();\n                }\n                this.currentRegion = newRegion;\n                if (newRegion !== undefined && highlightEnabled) {\n                    this.renderHighlight();\n                }\n                return true;\n            }\n            return false;\n        },\n\n        /**\n         * Reset any currently highlighted item\n         */\n        clearRegionHighlight: function () {\n            if (this.currentRegion !== undefined) {\n                this.removeHighlight();\n                this.currentRegion = undefined;\n                return true;\n            }\n            return false;\n        },\n\n        renderHighlight: function () {\n            this.changeHighlight(true);\n        },\n\n        removeHighlight: function () {\n            this.changeHighlight(false);\n        },\n\n        changeHighlight: function (highlight)  {},\n\n        /**\n         * Fetch the HTML to display as a tooltip\n         */\n        getCurrentRegionTooltip: function () {\n            var options = this.options,\n                header = '',\n                entries = [],\n                fields, formats, formatlen, fclass, text, i,\n                showFields, showFieldsKey, newFields, fv,\n                formatter, format, fieldlen, j;\n            if (this.currentRegion === undefined) {\n                return '';\n            }\n            fields = this.getCurrentRegionFields();\n            formatter = options.get('tooltipFormatter');\n            if (formatter) {\n                return formatter(this, options, fields);\n            }\n            if (options.get('tooltipChartTitle')) {\n                header += '<div class=\"jqs jqstitle\">' + options.get('tooltipChartTitle') + '</div>\\n';\n            }\n            formats = this.options.get('tooltipFormat');\n            if (!formats) {\n                return '';\n            }\n            if (!$.isArray(formats)) {\n                formats = [formats];\n            }\n            if (!$.isArray(fields)) {\n                fields = [fields];\n            }\n            showFields = this.options.get('tooltipFormatFieldlist');\n            showFieldsKey = this.options.get('tooltipFormatFieldlistKey');\n            if (showFields && showFieldsKey) {\n                // user-selected ordering of fields\n                newFields = [];\n                for (i = fields.length; i--;) {\n                    fv = fields[i][showFieldsKey];\n                    if ((j = $.inArray(fv, showFields)) != -1) {\n                        newFields[j] = fields[i];\n                    }\n                }\n                fields = newFields;\n            }\n            formatlen = formats.length;\n            fieldlen = fields.length;\n            for (i = 0; i < formatlen; i++) {\n                format = formats[i];\n                if (typeof format === 'string') {\n                    format = new SPFormat(format);\n                }\n                fclass = format.fclass || 'jqsfield';\n                for (j = 0; j < fieldlen; j++) {\n                    if (!fields[j].isNull || !options.get('tooltipSkipNull')) {\n                        $.extend(fields[j], {\n                            prefix: options.get('tooltipPrefix'),\n                            suffix: options.get('tooltipSuffix')\n                        });\n                        text = format.render(fields[j], options.get('tooltipValueLookups'), options);\n                        entries.push('<div class=\"' + fclass + '\">' + text + '</div>');\n                    }\n                }\n            }\n            if (entries.length) {\n                return header + entries.join('\\n');\n            }\n            return '';\n        },\n\n        getCurrentRegionFields: function () {},\n\n        calcHighlightColor: function (color, options) {\n            var highlightColor = options.get('highlightColor'),\n                lighten = options.get('highlightLighten'),\n                parse, mult, rgbnew, i;\n            if (highlightColor) {\n                return highlightColor;\n            }\n            if (lighten) {\n                // extract RGB values\n                parse = /^#([0-9a-f])([0-9a-f])([0-9a-f])$/i.exec(color) || /^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(color);\n                if (parse) {\n                    rgbnew = [];\n                    mult = color.length === 4 ? 16 : 1;\n                    for (i = 0; i < 3; i++) {\n                        rgbnew[i] = clipval(Math.round(parseInt(parse[i + 1], 16) * mult * lighten), 0, 255);\n                    }\n                    return 'rgb(' + rgbnew.join(',') + ')';\n                }\n\n            }\n            return color;\n        }\n\n    });\n\n    barHighlightMixin = {\n        changeHighlight: function (highlight) {\n            var currentRegion = this.currentRegion,\n                target = this.target,\n                shapeids = this.regionShapes[currentRegion],\n                newShapes;\n            // will be null if the region value was null\n            if (shapeids) {\n                newShapes = this.renderRegion(currentRegion, highlight);\n                if ($.isArray(newShapes) || $.isArray(shapeids)) {\n                    target.replaceWithShapes(shapeids, newShapes);\n                    this.regionShapes[currentRegion] = $.map(newShapes, function (newShape) {\n                        return newShape.id;\n                    });\n                } else {\n                    target.replaceWithShape(shapeids, newShapes);\n                    this.regionShapes[currentRegion] = newShapes.id;\n                }\n            }\n        },\n\n        render: function () {\n            var values = this.values,\n                target = this.target,\n                regionShapes = this.regionShapes,\n                shapes, ids, i, j;\n\n            if (!this.cls._super.render.call(this)) {\n                return;\n            }\n            for (i = values.length; i--;) {\n                shapes = this.renderRegion(i);\n                if (shapes) {\n                    if ($.isArray(shapes)) {\n                        ids = [];\n                        for (j = shapes.length; j--;) {\n                            shapes[j].append();\n                            ids.push(shapes[j].id);\n                        }\n                        regionShapes[i] = ids;\n                    } else {\n                        shapes.append();\n                        regionShapes[i] = shapes.id; // store just the shapeid\n                    }\n                } else {\n                    // null value\n                    regionShapes[i] = null;\n                }\n            }\n            target.render();\n        }\n    };\n\n    /**\n     * Line charts\n     */\n    $.fn.sparkline.line = line = createClass($.fn.sparkline._base, {\n        type: 'line',\n\n        init: function (el, values, options, width, height) {\n            line._super.init.call(this, el, values, options, width, height);\n            this.vertices = [];\n            this.regionMap = [];\n            this.xvalues = [];\n            this.yvalues = [];\n            this.yminmax = [];\n            this.hightlightSpotId = null;\n            this.lastShapeId = null;\n            this.initTarget();\n        },\n\n        getRegion: function (el, x, y) {\n            var i,\n                regionMap = this.regionMap; // maps regions to value positions\n            for (i = regionMap.length; i--;) {\n                if (regionMap[i] !== null && x >= regionMap[i][0] && x <= regionMap[i][1]) {\n                    return regionMap[i][2];\n                }\n            }\n            return undefined;\n        },\n\n        getCurrentRegionFields: function () {\n            var currentRegion = this.currentRegion;\n            return {\n                isNull: this.yvalues[currentRegion] === null,\n                x: this.xvalues[currentRegion],\n                y: this.yvalues[currentRegion],\n                color: this.options.get('lineColor'),\n                fillColor: this.options.get('fillColor'),\n                offset: currentRegion\n            };\n        },\n\n        renderHighlight: function () {\n            var currentRegion = this.currentRegion,\n                target = this.target,\n                vertex = this.vertices[currentRegion],\n                options = this.options,\n                spotRadius = options.get('spotRadius'),\n                highlightSpotColor = options.get('highlightSpotColor'),\n                highlightLineColor = options.get('highlightLineColor'),\n                highlightSpot, highlightLine;\n\n            if (!vertex) {\n                return;\n            }\n            if (spotRadius && highlightSpotColor) {\n                highlightSpot = target.drawCircle(vertex[0], vertex[1],\n                    spotRadius, undefined, highlightSpotColor);\n                this.highlightSpotId = highlightSpot.id;\n                target.insertAfterShape(this.lastShapeId, highlightSpot);\n            }\n            if (highlightLineColor) {\n                highlightLine = target.drawLine(vertex[0], this.canvasTop, vertex[0],\n                    this.canvasTop + this.canvasHeight, highlightLineColor);\n                this.highlightLineId = highlightLine.id;\n                target.insertAfterShape(this.lastShapeId, highlightLine);\n            }\n        },\n\n        removeHighlight: function () {\n            var target = this.target;\n            if (this.highlightSpotId) {\n                target.removeShapeId(this.highlightSpotId);\n                this.highlightSpotId = null;\n            }\n            if (this.highlightLineId) {\n                target.removeShapeId(this.highlightLineId);\n                this.highlightLineId = null;\n            }\n        },\n\n        scanValues: function () {\n            var values = this.values,\n                valcount = values.length,\n                xvalues = this.xvalues,\n                yvalues = this.yvalues,\n                yminmax = this.yminmax,\n                i, val, isStr, isArray, sp;\n            for (i = 0; i < valcount; i++) {\n                val = values[i];\n                isStr = typeof(values[i]) === 'string';\n                isArray = typeof(values[i]) === 'object' && values[i] instanceof Array;\n                sp = isStr && values[i].split(':');\n                if (isStr && sp.length === 2) { // x:y\n                    xvalues.push(Number(sp[0]));\n                    yvalues.push(Number(sp[1]));\n                    yminmax.push(Number(sp[1]));\n                } else if (isArray) {\n                    xvalues.push(val[0]);\n                    yvalues.push(val[1]);\n                    yminmax.push(val[1]);\n                } else {\n                    xvalues.push(i);\n                    if (values[i] === null || values[i] === 'null') {\n                        yvalues.push(null);\n                    } else {\n                        yvalues.push(Number(val));\n                        yminmax.push(Number(val));\n                    }\n                }\n            }\n            if (this.options.get('xvalues')) {\n                xvalues = this.options.get('xvalues');\n            }\n\n            this.maxy = this.maxyorg = Math.max.apply(Math, yminmax);\n            this.miny = this.minyorg = Math.min.apply(Math, yminmax);\n\n            this.maxx = Math.max.apply(Math, xvalues);\n            this.minx = Math.min.apply(Math, xvalues);\n\n            this.xvalues = xvalues;\n            this.yvalues = yvalues;\n            this.yminmax = yminmax;\n\n        },\n\n        processRangeOptions: function () {\n            var options = this.options,\n                normalRangeMin = options.get('normalRangeMin'),\n                normalRangeMax = options.get('normalRangeMax');\n\n            if (normalRangeMin !== undefined) {\n                if (normalRangeMin < this.miny) {\n                    this.miny = normalRangeMin;\n                }\n                if (normalRangeMax > this.maxy) {\n                    this.maxy = normalRangeMax;\n                }\n            }\n            if (options.get('chartRangeMin') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMin') < this.miny)) {\n                this.miny = options.get('chartRangeMin');\n            }\n            if (options.get('chartRangeMax') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMax') > this.maxy)) {\n                this.maxy = options.get('chartRangeMax');\n            }\n            if (options.get('chartRangeMinX') !== undefined && (options.get('chartRangeClipX') || options.get('chartRangeMinX') < this.minx)) {\n                this.minx = options.get('chartRangeMinX');\n            }\n            if (options.get('chartRangeMaxX') !== undefined && (options.get('chartRangeClipX') || options.get('chartRangeMaxX') > this.maxx)) {\n                this.maxx = options.get('chartRangeMaxX');\n            }\n\n        },\n\n        drawNormalRange: function (canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey) {\n            var normalRangeMin = this.options.get('normalRangeMin'),\n                normalRangeMax = this.options.get('normalRangeMax'),\n                ytop = canvasTop + Math.round(canvasHeight - (canvasHeight * ((normalRangeMax - this.miny) / rangey))),\n                height = Math.round((canvasHeight * (normalRangeMax - normalRangeMin)) / rangey);\n            this.target.drawRect(canvasLeft, ytop, canvasWidth, height, undefined, this.options.get('normalRangeColor')).append();\n        },\n\n        render: function () {\n            var options = this.options,\n                target = this.target,\n                canvasWidth = this.canvasWidth,\n                canvasHeight = this.canvasHeight,\n                vertices = this.vertices,\n                spotRadius = options.get('spotRadius'),\n                regionMap = this.regionMap,\n                rangex, rangey, yvallast,\n                canvasTop, canvasLeft,\n                vertex, path, paths, x, y, xnext, xpos, xposnext,\n                last, next, yvalcount, lineShapes, fillShapes, plen,\n                valueSpots, hlSpotsEnabled, color, xvalues, yvalues, i;\n\n            if (!line._super.render.call(this)) {\n                return;\n            }\n\n            this.scanValues();\n            this.processRangeOptions();\n\n            xvalues = this.xvalues;\n            yvalues = this.yvalues;\n\n            if (!this.yminmax.length || this.yvalues.length < 2) {\n                // empty or all null valuess\n                return;\n            }\n\n            canvasTop = canvasLeft = 0;\n\n            rangex = this.maxx - this.minx === 0 ? 1 : this.maxx - this.minx;\n            rangey = this.maxy - this.miny === 0 ? 1 : this.maxy - this.miny;\n            yvallast = this.yvalues.length - 1;\n\n            if (spotRadius && (canvasWidth < (spotRadius * 4) || canvasHeight < (spotRadius * 4))) {\n                spotRadius = 0;\n            }\n            if (spotRadius) {\n                // adjust the canvas size as required so that spots will fit\n                hlSpotsEnabled = options.get('highlightSpotColor') &&  !options.get('disableInteraction');\n                if (hlSpotsEnabled || options.get('minSpotColor') || (options.get('spotColor') && yvalues[yvallast] === this.miny)) {\n                    canvasHeight -= Math.ceil(spotRadius);\n                }\n                if (hlSpotsEnabled || options.get('maxSpotColor') || (options.get('spotColor') && yvalues[yvallast] === this.maxy)) {\n                    canvasHeight -= Math.ceil(spotRadius);\n                    canvasTop += Math.ceil(spotRadius);\n                }\n                if (hlSpotsEnabled ||\n                     ((options.get('minSpotColor') || options.get('maxSpotColor')) && (yvalues[0] === this.miny || yvalues[0] === this.maxy))) {\n                    canvasLeft += Math.ceil(spotRadius);\n                    canvasWidth -= Math.ceil(spotRadius);\n                }\n                if (hlSpotsEnabled || options.get('spotColor') ||\n                    (options.get('minSpotColor') || options.get('maxSpotColor') &&\n                        (yvalues[yvallast] === this.miny || yvalues[yvallast] === this.maxy))) {\n                    canvasWidth -= Math.ceil(spotRadius);\n                }\n            }\n\n\n            canvasHeight--;\n\n            if (options.get('normalRangeMin') !== undefined && !options.get('drawNormalOnTop')) {\n                this.drawNormalRange(canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey);\n            }\n\n            path = [];\n            paths = [path];\n            last = next = null;\n            yvalcount = yvalues.length;\n            for (i = 0; i < yvalcount; i++) {\n                x = xvalues[i];\n                xnext = xvalues[i + 1];\n                y = yvalues[i];\n                xpos = canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex));\n                xposnext = i < yvalcount - 1 ? canvasLeft + Math.round((xnext - this.minx) * (canvasWidth / rangex)) : canvasWidth;\n                next = xpos + ((xposnext - xpos) / 2);\n                regionMap[i] = [last || 0, next, i];\n                last = next;\n                if (y === null) {\n                    if (i) {\n                        if (yvalues[i - 1] !== null) {\n                            path = [];\n                            paths.push(path);\n                        }\n                        vertices.push(null);\n                    }\n                } else {\n                    if (y < this.miny) {\n                        y = this.miny;\n                    }\n                    if (y > this.maxy) {\n                        y = this.maxy;\n                    }\n                    if (!path.length) {\n                        // previous value was null\n                        path.push([xpos, canvasTop + canvasHeight]);\n                    }\n                    vertex = [xpos, canvasTop + Math.round(canvasHeight - (canvasHeight * ((y - this.miny) / rangey)))];\n                    path.push(vertex);\n                    vertices.push(vertex);\n                }\n            }\n\n            lineShapes = [];\n            fillShapes = [];\n            plen = paths.length;\n            for (i = 0; i < plen; i++) {\n                path = paths[i];\n                if (path.length) {\n                    if (options.get('fillColor')) {\n                        path.push([path[path.length - 1][0], (canvasTop + canvasHeight)]);\n                        fillShapes.push(path.slice(0));\n                        path.pop();\n                    }\n                    // if there's only a single point in this path, then we want to display it\n                    // as a vertical line which means we keep path[0]  as is\n                    if (path.length > 2) {\n                        // else we want the first value\n                        path[0] = [path[0][0], path[1][1]];\n                    }\n                    lineShapes.push(path);\n                }\n            }\n\n            // draw the fill first, then optionally the normal range, then the line on top of that\n            plen = fillShapes.length;\n            for (i = 0; i < plen; i++) {\n                target.drawShape(fillShapes[i],\n                    options.get('fillColor'), options.get('fillColor')).append();\n            }\n\n            if (options.get('normalRangeMin') !== undefined && options.get('drawNormalOnTop')) {\n                this.drawNormalRange(canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey);\n            }\n\n            plen = lineShapes.length;\n            for (i = 0; i < plen; i++) {\n                target.drawShape(lineShapes[i], options.get('lineColor'), undefined,\n                    options.get('lineWidth')).append();\n            }\n\n            if (spotRadius && options.get('valueSpots')) {\n                valueSpots = options.get('valueSpots');\n                if (valueSpots.get === undefined) {\n                    valueSpots = new RangeMap(valueSpots);\n                }\n                for (i = 0; i < yvalcount; i++) {\n                    color = valueSpots.get(yvalues[i]);\n                    if (color) {\n                        target.drawCircle(canvasLeft + Math.round((xvalues[i] - this.minx) * (canvasWidth / rangex)),\n                            canvasTop + Math.round(canvasHeight - (canvasHeight * ((yvalues[i] - this.miny) / rangey))),\n                            spotRadius, undefined,\n                            color).append();\n                    }\n                }\n\n            }\n            if (spotRadius && options.get('spotColor') && yvalues[yvallast] !== null) {\n                target.drawCircle(canvasLeft + Math.round((xvalues[xvalues.length - 1] - this.minx) * (canvasWidth / rangex)),\n                    canvasTop + Math.round(canvasHeight - (canvasHeight * ((yvalues[yvallast] - this.miny) / rangey))),\n                    spotRadius, undefined,\n                    options.get('spotColor')).append();\n            }\n            if (this.maxy !== this.minyorg) {\n                if (spotRadius && options.get('minSpotColor')) {\n                    x = xvalues[$.inArray(this.minyorg, yvalues)];\n                    target.drawCircle(canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex)),\n                        canvasTop + Math.round(canvasHeight - (canvasHeight * ((this.minyorg - this.miny) / rangey))),\n                        spotRadius, undefined,\n                        options.get('minSpotColor')).append();\n                }\n                if (spotRadius && options.get('maxSpotColor')) {\n                    x = xvalues[$.inArray(this.maxyorg, yvalues)];\n                    target.drawCircle(canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex)),\n                        canvasTop + Math.round(canvasHeight - (canvasHeight * ((this.maxyorg - this.miny) / rangey))),\n                        spotRadius, undefined,\n                        options.get('maxSpotColor')).append();\n                }\n            }\n\n            this.lastShapeId = target.getLastShapeId();\n            this.canvasTop = canvasTop;\n            target.render();\n        }\n    });\n\n    /**\n     * Bar charts\n     */\n    $.fn.sparkline.bar = bar = createClass($.fn.sparkline._base, barHighlightMixin, {\n        type: 'bar',\n\n        init: function (el, values, options, width, height) {\n            var barWidth = parseInt(options.get('barWidth'), 10),\n                barSpacing = parseInt(options.get('barSpacing'), 10),\n                chartRangeMin = options.get('chartRangeMin'),\n                chartRangeMax = options.get('chartRangeMax'),\n                chartRangeClip = options.get('chartRangeClip'),\n                stackMin = Infinity,\n                stackMax = -Infinity,\n                isStackString, groupMin, groupMax, stackRanges,\n                numValues, i, vlen, range, zeroAxis, xaxisOffset, min, max, clipMin, clipMax,\n                stacked, vlist, j, slen, svals, val, yoffset, yMaxCalc, canvasHeightEf;\n            bar._super.init.call(this, el, values, options, width, height);\n\n            // scan values to determine whether to stack bars\n            for (i = 0, vlen = values.length; i < vlen; i++) {\n                val = values[i];\n                isStackString = typeof(val) === 'string' && val.indexOf(':') > -1;\n                if (isStackString || $.isArray(val)) {\n                    stacked = true;\n                    if (isStackString) {\n                        val = values[i] = normalizeValues(val.split(':'));\n                    }\n                    val = remove(val, null); // min/max will treat null as zero\n                    groupMin = Math.min.apply(Math, val);\n                    groupMax = Math.max.apply(Math, val);\n                    if (groupMin < stackMin) {\n                        stackMin = groupMin;\n                    }\n                    if (groupMax > stackMax) {\n                        stackMax = groupMax;\n                    }\n                }\n            }\n\n            this.stacked = stacked;\n            this.regionShapes = {};\n            this.barWidth = barWidth;\n            this.barSpacing = barSpacing;\n            this.totalBarWidth = barWidth + barSpacing;\n            this.width = width = (values.length * barWidth) + ((values.length - 1) * barSpacing);\n\n            this.initTarget();\n\n            if (chartRangeClip) {\n                clipMin = chartRangeMin === undefined ? -Infinity : chartRangeMin;\n                clipMax = chartRangeMax === undefined ? Infinity : chartRangeMax;\n            }\n\n            numValues = [];\n            stackRanges = stacked ? [] : numValues;\n            var stackTotals = [];\n            var stackRangesNeg = [];\n            for (i = 0, vlen = values.length; i < vlen; i++) {\n                if (stacked) {\n                    vlist = values[i];\n                    values[i] = svals = [];\n                    stackTotals[i] = 0;\n                    stackRanges[i] = stackRangesNeg[i] = 0;\n                    for (j = 0, slen = vlist.length; j < slen; j++) {\n                        val = svals[j] = chartRangeClip ? clipval(vlist[j], clipMin, clipMax) : vlist[j];\n                        if (val !== null) {\n                            if (val > 0) {\n                                stackTotals[i] += val;\n                            }\n                            if (stackMin < 0 && stackMax > 0) {\n                                if (val < 0) {\n                                    stackRangesNeg[i] += Math.abs(val);\n                                } else {\n                                    stackRanges[i] += val;\n                                }\n                            } else {\n                                stackRanges[i] += Math.abs(val - (val < 0 ? stackMax : stackMin));\n                            }\n                            numValues.push(val);\n                        }\n                    }\n                } else {\n                    val = chartRangeClip ? clipval(values[i], clipMin, clipMax) : values[i];\n                    val = values[i] = normalizeValue(val);\n                    if (val !== null) {\n                        numValues.push(val);\n                    }\n                }\n            }\n            this.max = max = Math.max.apply(Math, numValues);\n            this.min = min = Math.min.apply(Math, numValues);\n            this.stackMax = stackMax = stacked ? Math.max.apply(Math, stackTotals) : max;\n            this.stackMin = stackMin = stacked ? Math.min.apply(Math, numValues) : min;\n\n            if (options.get('chartRangeMin') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMin') < min)) {\n                min = options.get('chartRangeMin');\n            }\n            if (options.get('chartRangeMax') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMax') > max)) {\n                max = options.get('chartRangeMax');\n            }\n\n            this.zeroAxis = zeroAxis = options.get('zeroAxis', true);\n            if (min <= 0 && max >= 0 && zeroAxis) {\n                xaxisOffset = 0;\n            } else if (zeroAxis == false) {\n                xaxisOffset = min;\n            } else if (min > 0) {\n                xaxisOffset = min;\n            } else {\n                xaxisOffset = max;\n            }\n            this.xaxisOffset = xaxisOffset;\n\n            range = stacked ? (Math.max.apply(Math, stackRanges) + Math.max.apply(Math, stackRangesNeg)) : max - min;\n\n            // as we plot zero/min values a single pixel line, we add a pixel to all other\n            // values - Reduce the effective canvas size to suit\n            this.canvasHeightEf = (zeroAxis && min < 0) ? this.canvasHeight - 2 : this.canvasHeight - 1;\n\n            if (min < xaxisOffset) {\n                yMaxCalc = (stacked && max >= 0) ? stackMax : max;\n                yoffset = (yMaxCalc - xaxisOffset) / range * this.canvasHeight;\n                if (yoffset !== Math.ceil(yoffset)) {\n                    this.canvasHeightEf -= 2;\n                    yoffset = Math.ceil(yoffset);\n                }\n            } else {\n                yoffset = this.canvasHeight;\n            }\n            this.yoffset = yoffset;\n\n            if ($.isArray(options.get('colorMap'))) {\n                this.colorMapByIndex = options.get('colorMap');\n                this.colorMapByValue = null;\n            } else {\n                this.colorMapByIndex = null;\n                this.colorMapByValue = options.get('colorMap');\n                if (this.colorMapByValue && this.colorMapByValue.get === undefined) {\n                    this.colorMapByValue = new RangeMap(this.colorMapByValue);\n                }\n            }\n\n            this.range = range;\n        },\n\n        getRegion: function (el, x, y) {\n            var result = Math.floor(x / this.totalBarWidth);\n            return (result < 0 || result >= this.values.length) ? undefined : result;\n        },\n\n        getCurrentRegionFields: function () {\n            var currentRegion = this.currentRegion,\n                values = ensureArray(this.values[currentRegion]),\n                result = [],\n                value, i;\n            for (i = values.length; i--;) {\n                value = values[i];\n                result.push({\n                    isNull: value === null,\n                    value: value,\n                    color: this.calcColor(i, value, currentRegion),\n                    offset: currentRegion\n                });\n            }\n            return result;\n        },\n\n        calcColor: function (stacknum, value, valuenum) {\n            var colorMapByIndex = this.colorMapByIndex,\n                colorMapByValue = this.colorMapByValue,\n                options = this.options,\n                color, newColor;\n            if (this.stacked) {\n                color = options.get('stackedBarColor');\n            } else {\n                color = (value < 0) ? options.get('negBarColor') : options.get('barColor');\n            }\n            if (value === 0 && options.get('zeroColor') !== undefined) {\n                color = options.get('zeroColor');\n            }\n            if (colorMapByValue && (newColor = colorMapByValue.get(value))) {\n                color = newColor;\n            } else if (colorMapByIndex && colorMapByIndex.length > valuenum) {\n                color = colorMapByIndex[valuenum];\n            }\n            return $.isArray(color) ? color[stacknum % color.length] : color;\n        },\n\n        /**\n         * Render bar(s) for a region\n         */\n        renderRegion: function (valuenum, highlight) {\n            var vals = this.values[valuenum],\n                options = this.options,\n                xaxisOffset = this.xaxisOffset,\n                result = [],\n                range = this.range,\n                stacked = this.stacked,\n                target = this.target,\n                x = valuenum * this.totalBarWidth,\n                canvasHeightEf = this.canvasHeightEf,\n                yoffset = this.yoffset,\n                y, height, color, isNull, yoffsetNeg, i, valcount, val, minPlotted, allMin;\n\n            vals = $.isArray(vals) ? vals : [vals];\n            valcount = vals.length;\n            val = vals[0];\n            isNull = all(null, vals);\n            allMin = all(xaxisOffset, vals, true);\n\n            if (isNull) {\n                if (options.get('nullColor')) {\n                    color = highlight ? options.get('nullColor') : this.calcHighlightColor(options.get('nullColor'), options);\n                    y = (yoffset > 0) ? yoffset - 1 : yoffset;\n                    return target.drawRect(x, y, this.barWidth - 1, 0, color, color);\n                } else {\n                    return undefined;\n                }\n            }\n            yoffsetNeg = yoffset;\n            for (i = 0; i < valcount; i++) {\n                val = vals[i];\n\n                if (stacked && val === xaxisOffset) {\n                    if (!allMin || minPlotted) {\n                        continue;\n                    }\n                    minPlotted = true;\n                }\n\n                if (range > 0) {\n                    height = Math.floor(canvasHeightEf * ((Math.abs(val - xaxisOffset) / range))) + 1;\n                } else {\n                    height = 1;\n                }\n                if (val < xaxisOffset || (val === xaxisOffset && yoffset === 0)) {\n                    y = yoffsetNeg;\n                    yoffsetNeg += height;\n                } else {\n                    y = yoffset - height;\n                    yoffset -= height;\n                }\n                color = this.calcColor(i, val, valuenum);\n                if (highlight) {\n                    color = this.calcHighlightColor(color, options);\n                }\n                result.push(target.drawRect(x, y, this.barWidth - 1, height - 1, color, color));\n            }\n            if (result.length === 1) {\n                return result[0];\n            }\n            return result;\n        }\n    });\n\n    /**\n     * Tristate charts\n     */\n    $.fn.sparkline.tristate = tristate = createClass($.fn.sparkline._base, barHighlightMixin, {\n        type: 'tristate',\n\n        init: function (el, values, options, width, height) {\n            var barWidth = parseInt(options.get('barWidth'), 10),\n                barSpacing = parseInt(options.get('barSpacing'), 10);\n            tristate._super.init.call(this, el, values, options, width, height);\n\n            this.regionShapes = {};\n            this.barWidth = barWidth;\n            this.barSpacing = barSpacing;\n            this.totalBarWidth = barWidth + barSpacing;\n            this.values = $.map(values, Number);\n            this.width = width = (values.length * barWidth) + ((values.length - 1) * barSpacing);\n\n            if ($.isArray(options.get('colorMap'))) {\n                this.colorMapByIndex = options.get('colorMap');\n                this.colorMapByValue = null;\n            } else {\n                this.colorMapByIndex = null;\n                this.colorMapByValue = options.get('colorMap');\n                if (this.colorMapByValue && this.colorMapByValue.get === undefined) {\n                    this.colorMapByValue = new RangeMap(this.colorMapByValue);\n                }\n            }\n            this.initTarget();\n        },\n\n        getRegion: function (el, x, y) {\n            return Math.floor(x / this.totalBarWidth);\n        },\n\n        getCurrentRegionFields: function () {\n            var currentRegion = this.currentRegion;\n            return {\n                isNull: this.values[currentRegion] === undefined,\n                value: this.values[currentRegion],\n                color: this.calcColor(this.values[currentRegion], currentRegion),\n                offset: currentRegion\n            };\n        },\n\n        calcColor: function (value, valuenum) {\n            var values = this.values,\n                options = this.options,\n                colorMapByIndex = this.colorMapByIndex,\n                colorMapByValue = this.colorMapByValue,\n                color, newColor;\n\n            if (colorMapByValue && (newColor = colorMapByValue.get(value))) {\n                color = newColor;\n            } else if (colorMapByIndex && colorMapByIndex.length > valuenum) {\n                color = colorMapByIndex[valuenum];\n            } else if (values[valuenum] < 0) {\n                color = options.get('negBarColor');\n            } else if (values[valuenum] > 0) {\n                color = options.get('posBarColor');\n            } else {\n                color = options.get('zeroBarColor');\n            }\n            return color;\n        },\n\n        renderRegion: function (valuenum, highlight) {\n            var values = this.values,\n                options = this.options,\n                target = this.target,\n                canvasHeight, height, halfHeight,\n                x, y, color;\n\n            canvasHeight = target.pixelHeight;\n            halfHeight = Math.round(canvasHeight / 2);\n\n            x = valuenum * this.totalBarWidth;\n            if (values[valuenum] < 0) {\n                y = halfHeight;\n                height = halfHeight - 1;\n            } else if (values[valuenum] > 0) {\n                y = 0;\n                height = halfHeight - 1;\n            } else {\n                y = halfHeight - 1;\n                height = 2;\n            }\n            color = this.calcColor(values[valuenum], valuenum);\n            if (color === null) {\n                return;\n            }\n            if (highlight) {\n                color = this.calcHighlightColor(color, options);\n            }\n            return target.drawRect(x, y, this.barWidth - 1, height - 1, color, color);\n        }\n    });\n\n    /**\n     * Discrete charts\n     */\n    $.fn.sparkline.discrete = discrete = createClass($.fn.sparkline._base, barHighlightMixin, {\n        type: 'discrete',\n\n        init: function (el, values, options, width, height) {\n            discrete._super.init.call(this, el, values, options, width, height);\n\n            this.regionShapes = {};\n            this.values = values = $.map(values, Number);\n            this.min = Math.min.apply(Math, values);\n            this.max = Math.max.apply(Math, values);\n            this.range = this.max - this.min;\n            this.width = width = options.get('width') === 'auto' ? values.length * 2 : this.width;\n            this.interval = Math.floor(width / values.length);\n            this.itemWidth = width / values.length;\n            if (options.get('chartRangeMin') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMin') < this.min)) {\n                this.min = options.get('chartRangeMin');\n            }\n            if (options.get('chartRangeMax') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMax') > this.max)) {\n                this.max = options.get('chartRangeMax');\n            }\n            this.initTarget();\n            if (this.target) {\n                this.lineHeight = options.get('lineHeight') === 'auto' ? Math.round(this.canvasHeight * 0.3) : options.get('lineHeight');\n            }\n        },\n\n        getRegion: function (el, x, y) {\n            return Math.floor(x / this.itemWidth);\n        },\n\n        getCurrentRegionFields: function () {\n            var currentRegion = this.currentRegion;\n            return {\n                isNull: this.values[currentRegion] === undefined,\n                value: this.values[currentRegion],\n                offset: currentRegion\n            };\n        },\n\n        renderRegion: function (valuenum, highlight) {\n            var values = this.values,\n                options = this.options,\n                min = this.min,\n                max = this.max,\n                range = this.range,\n                interval = this.interval,\n                target = this.target,\n                canvasHeight = this.canvasHeight,\n                lineHeight = this.lineHeight,\n                pheight = canvasHeight - lineHeight,\n                ytop, val, color, x;\n\n            val = clipval(values[valuenum], min, max);\n            x = valuenum * interval;\n            ytop = Math.round(pheight - pheight * ((val - min) / range));\n            color = (options.get('thresholdColor') && val < options.get('thresholdValue')) ? options.get('thresholdColor') : options.get('lineColor');\n            if (highlight) {\n                color = this.calcHighlightColor(color, options);\n            }\n            return target.drawLine(x, ytop, x, ytop + lineHeight, color);\n        }\n    });\n\n    /**\n     * Bullet charts\n     */\n    $.fn.sparkline.bullet = bullet = createClass($.fn.sparkline._base, {\n        type: 'bullet',\n\n        init: function (el, values, options, width, height) {\n            var min, max, vals;\n            bullet._super.init.call(this, el, values, options, width, height);\n\n            // values: target, performance, range1, range2, range3\n            this.values = values = normalizeValues(values);\n            // target or performance could be null\n            vals = values.slice();\n            vals[0] = vals[0] === null ? vals[2] : vals[0];\n            vals[1] = values[1] === null ? vals[2] : vals[1];\n            min = Math.min.apply(Math, values);\n            max = Math.max.apply(Math, values);\n            if (options.get('base') === undefined) {\n                min = min < 0 ? min : 0;\n            } else {\n                min = options.get('base');\n            }\n            this.min = min;\n            this.max = max;\n            this.range = max - min;\n            this.shapes = {};\n            this.valueShapes = {};\n            this.regiondata = {};\n            this.width = width = options.get('width') === 'auto' ? '4.0em' : width;\n            this.target = this.$el.simpledraw(width, height, options.get('composite'));\n            if (!values.length) {\n                this.disabled = true;\n            }\n            this.initTarget();\n        },\n\n        getRegion: function (el, x, y) {\n            var shapeid = this.target.getShapeAt(el, x, y);\n            return (shapeid !== undefined && this.shapes[shapeid] !== undefined) ? this.shapes[shapeid] : undefined;\n        },\n\n        getCurrentRegionFields: function () {\n            var currentRegion = this.currentRegion;\n            return {\n                fieldkey: currentRegion.substr(0, 1),\n                value: this.values[currentRegion.substr(1)],\n                region: currentRegion\n            };\n        },\n\n        changeHighlight: function (highlight) {\n            var currentRegion = this.currentRegion,\n                shapeid = this.valueShapes[currentRegion],\n                shape;\n            delete this.shapes[shapeid];\n            switch (currentRegion.substr(0, 1)) {\n                case 'r':\n                    shape = this.renderRange(currentRegion.substr(1), highlight);\n                    break;\n                case 'p':\n                    shape = this.renderPerformance(highlight);\n                    break;\n                case 't':\n                    shape = this.renderTarget(highlight);\n                    break;\n            }\n            this.valueShapes[currentRegion] = shape.id;\n            this.shapes[shape.id] = currentRegion;\n            this.target.replaceWithShape(shapeid, shape);\n        },\n\n        renderRange: function (rn, highlight) {\n            var rangeval = this.values[rn],\n                rangewidth = Math.round(this.canvasWidth * ((rangeval - this.min) / this.range)),\n                color = this.options.get('rangeColors')[rn - 2];\n            if (highlight) {\n                color = this.calcHighlightColor(color, this.options);\n            }\n            return this.target.drawRect(0, 0, rangewidth - 1, this.canvasHeight - 1, color, color);\n        },\n\n        renderPerformance: function (highlight) {\n            var perfval = this.values[1],\n                perfwidth = Math.round(this.canvasWidth * ((perfval - this.min) / this.range)),\n                color = this.options.get('performanceColor');\n            if (highlight) {\n                color = this.calcHighlightColor(color, this.options);\n            }\n            return this.target.drawRect(0, Math.round(this.canvasHeight * 0.3), perfwidth - 1,\n                Math.round(this.canvasHeight * 0.4) - 1, color, color);\n        },\n\n        renderTarget: function (highlight) {\n            var targetval = this.values[0],\n                x = Math.round(this.canvasWidth * ((targetval - this.min) / this.range) - (this.options.get('targetWidth') / 2)),\n                targettop = Math.round(this.canvasHeight * 0.10),\n                targetheight = this.canvasHeight - (targettop * 2),\n                color = this.options.get('targetColor');\n            if (highlight) {\n                color = this.calcHighlightColor(color, this.options);\n            }\n            return this.target.drawRect(x, targettop, this.options.get('targetWidth') - 1, targetheight - 1, color, color);\n        },\n\n        render: function () {\n            var vlen = this.values.length,\n                target = this.target,\n                i, shape;\n            if (!bullet._super.render.call(this)) {\n                return;\n            }\n            for (i = 2; i < vlen; i++) {\n                shape = this.renderRange(i).append();\n                this.shapes[shape.id] = 'r' + i;\n                this.valueShapes['r' + i] = shape.id;\n            }\n            if (this.values[1] !== null) {\n                shape = this.renderPerformance().append();\n                this.shapes[shape.id] = 'p1';\n                this.valueShapes.p1 = shape.id;\n            }\n            if (this.values[0] !== null) {\n                shape = this.renderTarget().append();\n                this.shapes[shape.id] = 't0';\n                this.valueShapes.t0 = shape.id;\n            }\n            target.render();\n        }\n    });\n\n    /**\n     * Pie charts\n     */\n    $.fn.sparkline.pie = pie = createClass($.fn.sparkline._base, {\n        type: 'pie',\n\n        init: function (el, values, options, width, height) {\n            var total = 0, i;\n\n            pie._super.init.call(this, el, values, options, width, height);\n\n            this.shapes = {}; // map shape ids to value offsets\n            this.valueShapes = {}; // maps value offsets to shape ids\n            this.values = values = $.map(values, Number);\n\n            if (options.get('width') === 'auto') {\n                this.width = this.height;\n            }\n\n            if (values.length > 0) {\n                for (i = values.length; i--;) {\n                    total += values[i];\n                }\n            }\n            this.total = total;\n            this.initTarget();\n            this.radius = Math.floor(Math.min(this.canvasWidth, this.canvasHeight) / 2);\n        },\n\n        getRegion: function (el, x, y) {\n            var shapeid = this.target.getShapeAt(el, x, y);\n            return (shapeid !== undefined && this.shapes[shapeid] !== undefined) ? this.shapes[shapeid] : undefined;\n        },\n\n        getCurrentRegionFields: function () {\n            var currentRegion = this.currentRegion;\n            return {\n                isNull: this.values[currentRegion] === undefined,\n                value: this.values[currentRegion],\n                percent: this.values[currentRegion] / this.total * 100,\n                color: this.options.get('sliceColors')[currentRegion % this.options.get('sliceColors').length],\n                offset: currentRegion\n            };\n        },\n\n        changeHighlight: function (highlight) {\n            var currentRegion = this.currentRegion,\n                 newslice = this.renderSlice(currentRegion, highlight),\n                 shapeid = this.valueShapes[currentRegion];\n            delete this.shapes[shapeid];\n            this.target.replaceWithShape(shapeid, newslice);\n            this.valueShapes[currentRegion] = newslice.id;\n            this.shapes[newslice.id] = currentRegion;\n        },\n\n        renderSlice: function (valuenum, highlight) {\n            var target = this.target,\n                options = this.options,\n                radius = this.radius,\n                borderWidth = options.get('borderWidth'),\n                offset = options.get('offset'),\n                circle = 2 * Math.PI,\n                values = this.values,\n                total = this.total,\n                next = offset ? (2*Math.PI)*(offset/360) : 0,\n                start, end, i, vlen, color;\n\n            vlen = values.length;\n            for (i = 0; i < vlen; i++) {\n                start = next;\n                end = next;\n                if (total > 0) {  // avoid divide by zero\n                    end = next + (circle * (values[i] / total));\n                }\n                if (valuenum === i) {\n                    color = options.get('sliceColors')[i % options.get('sliceColors').length];\n                    if (highlight) {\n                        color = this.calcHighlightColor(color, options);\n                    }\n\n                    return target.drawPieSlice(radius, radius, radius - borderWidth, start, end, undefined, color);\n                }\n                next = end;\n            }\n        },\n\n        render: function () {\n            var target = this.target,\n                values = this.values,\n                options = this.options,\n                radius = this.radius,\n                borderWidth = options.get('borderWidth'),\n                shape, i;\n\n            if (!pie._super.render.call(this)) {\n                return;\n            }\n            if (borderWidth) {\n                target.drawCircle(radius, radius, Math.floor(radius - (borderWidth / 2)),\n                    options.get('borderColor'), undefined, borderWidth).append();\n            }\n            for (i = values.length; i--;) {\n                if (values[i]) { // don't render zero values\n                    shape = this.renderSlice(i).append();\n                    this.valueShapes[i] = shape.id; // store just the shapeid\n                    this.shapes[shape.id] = i;\n                }\n            }\n            target.render();\n        }\n    });\n\n    /**\n     * Box plots\n     */\n    $.fn.sparkline.box = box = createClass($.fn.sparkline._base, {\n        type: 'box',\n\n        init: function (el, values, options, width, height) {\n            box._super.init.call(this, el, values, options, width, height);\n            this.values = $.map(values, Number);\n            this.width = options.get('width') === 'auto' ? '4.0em' : width;\n            this.initTarget();\n            if (!this.values.length) {\n                this.disabled = 1;\n            }\n        },\n\n        /**\n         * Simulate a single region\n         */\n        getRegion: function () {\n            return 1;\n        },\n\n        getCurrentRegionFields: function () {\n            var result = [\n                { field: 'lq', value: this.quartiles[0] },\n                { field: 'med', value: this.quartiles[1] },\n                { field: 'uq', value: this.quartiles[2] }\n            ];\n            if (this.loutlier !== undefined) {\n                result.push({ field: 'lo', value: this.loutlier});\n            }\n            if (this.routlier !== undefined) {\n                result.push({ field: 'ro', value: this.routlier});\n            }\n            if (this.lwhisker !== undefined) {\n                result.push({ field: 'lw', value: this.lwhisker});\n            }\n            if (this.rwhisker !== undefined) {\n                result.push({ field: 'rw', value: this.rwhisker});\n            }\n            return result;\n        },\n\n        render: function () {\n            var target = this.target,\n                values = this.values,\n                vlen = values.length,\n                options = this.options,\n                canvasWidth = this.canvasWidth,\n                canvasHeight = this.canvasHeight,\n                minValue = options.get('chartRangeMin') === undefined ? Math.min.apply(Math, values) : options.get('chartRangeMin'),\n                maxValue = options.get('chartRangeMax') === undefined ? Math.max.apply(Math, values) : options.get('chartRangeMax'),\n                canvasLeft = 0,\n                lwhisker, loutlier, iqr, q1, q2, q3, rwhisker, routlier, i,\n                size, unitSize;\n\n            if (!box._super.render.call(this)) {\n                return;\n            }\n\n            if (options.get('raw')) {\n                if (options.get('showOutliers') && values.length > 5) {\n                    loutlier = values[0];\n                    lwhisker = values[1];\n                    q1 = values[2];\n                    q2 = values[3];\n                    q3 = values[4];\n                    rwhisker = values[5];\n                    routlier = values[6];\n                } else {\n                    lwhisker = values[0];\n                    q1 = values[1];\n                    q2 = values[2];\n                    q3 = values[3];\n                    rwhisker = values[4];\n                }\n            } else {\n                values.sort(function (a, b) { return a - b; });\n                q1 = quartile(values, 1);\n                q2 = quartile(values, 2);\n                q3 = quartile(values, 3);\n                iqr = q3 - q1;\n                if (options.get('showOutliers')) {\n                    lwhisker = rwhisker = undefined;\n                    for (i = 0; i < vlen; i++) {\n                        if (lwhisker === undefined && values[i] > q1 - (iqr * options.get('outlierIQR'))) {\n                            lwhisker = values[i];\n                        }\n                        if (values[i] < q3 + (iqr * options.get('outlierIQR'))) {\n                            rwhisker = values[i];\n                        }\n                    }\n                    loutlier = values[0];\n                    routlier = values[vlen - 1];\n                } else {\n                    lwhisker = values[0];\n                    rwhisker = values[vlen - 1];\n                }\n            }\n            this.quartiles = [q1, q2, q3];\n            this.lwhisker = lwhisker;\n            this.rwhisker = rwhisker;\n            this.loutlier = loutlier;\n            this.routlier = routlier;\n\n            unitSize = canvasWidth / (maxValue - minValue + 1);\n            if (options.get('showOutliers')) {\n                canvasLeft = Math.ceil(options.get('spotRadius'));\n                canvasWidth -= 2 * Math.ceil(options.get('spotRadius'));\n                unitSize = canvasWidth / (maxValue - minValue + 1);\n                if (loutlier < lwhisker) {\n                    target.drawCircle((loutlier - minValue) * unitSize + canvasLeft,\n                        canvasHeight / 2,\n                        options.get('spotRadius'),\n                        options.get('outlierLineColor'),\n                        options.get('outlierFillColor')).append();\n                }\n                if (routlier > rwhisker) {\n                    target.drawCircle((routlier - minValue) * unitSize + canvasLeft,\n                        canvasHeight / 2,\n                        options.get('spotRadius'),\n                        options.get('outlierLineColor'),\n                        options.get('outlierFillColor')).append();\n                }\n            }\n\n            // box\n            target.drawRect(\n                Math.round((q1 - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight * 0.1),\n                Math.round((q3 - q1) * unitSize),\n                Math.round(canvasHeight * 0.8),\n                options.get('boxLineColor'),\n                options.get('boxFillColor')).append();\n            // left whisker\n            target.drawLine(\n                Math.round((lwhisker - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight / 2),\n                Math.round((q1 - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight / 2),\n                options.get('lineColor')).append();\n            target.drawLine(\n                Math.round((lwhisker - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight / 4),\n                Math.round((lwhisker - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight - canvasHeight / 4),\n                options.get('whiskerColor')).append();\n            // right whisker\n            target.drawLine(Math.round((rwhisker - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight / 2),\n                Math.round((q3 - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight / 2),\n                options.get('lineColor')).append();\n            target.drawLine(\n                Math.round((rwhisker - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight / 4),\n                Math.round((rwhisker - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight - canvasHeight / 4),\n                options.get('whiskerColor')).append();\n            // median line\n            target.drawLine(\n                Math.round((q2 - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight * 0.1),\n                Math.round((q2 - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight * 0.9),\n                options.get('medianColor')).append();\n            if (options.get('target')) {\n                size = Math.ceil(options.get('spotRadius'));\n                target.drawLine(\n                    Math.round((options.get('target') - minValue) * unitSize + canvasLeft),\n                    Math.round((canvasHeight / 2) - size),\n                    Math.round((options.get('target') - minValue) * unitSize + canvasLeft),\n                    Math.round((canvasHeight / 2) + size),\n                    options.get('targetColor')).append();\n                target.drawLine(\n                    Math.round((options.get('target') - minValue) * unitSize + canvasLeft - size),\n                    Math.round(canvasHeight / 2),\n                    Math.round((options.get('target') - minValue) * unitSize + canvasLeft + size),\n                    Math.round(canvasHeight / 2),\n                    options.get('targetColor')).append();\n            }\n            target.render();\n        }\n    });\n\n    // Setup a very simple \"virtual canvas\" to make drawing the few shapes we need easier\n    // This is accessible as $(foo).simpledraw()\n\n    VShape = createClass({\n        init: function (target, id, type, args) {\n            this.target = target;\n            this.id = id;\n            this.type = type;\n            this.args = args;\n        },\n        append: function () {\n            this.target.appendShape(this);\n            return this;\n        }\n    });\n\n    VCanvas_base = createClass({\n        _pxregex: /(\\d+)(px)?\\s*$/i,\n\n        init: function (width, height, target) {\n            if (!width) {\n                return;\n            }\n            this.width = width;\n            this.height = height;\n            this.target = target;\n            this.lastShapeId = null;\n            if (target[0]) {\n                target = target[0];\n            }\n            $.data(target, '_jqs_vcanvas', this);\n        },\n\n        drawLine: function (x1, y1, x2, y2, lineColor, lineWidth) {\n            return this.drawShape([[x1, y1], [x2, y2]], lineColor, lineWidth);\n        },\n\n        drawShape: function (path, lineColor, fillColor, lineWidth) {\n            return this._genShape('Shape', [path, lineColor, fillColor, lineWidth]);\n        },\n\n        drawCircle: function (x, y, radius, lineColor, fillColor, lineWidth) {\n            return this._genShape('Circle', [x, y, radius, lineColor, fillColor, lineWidth]);\n        },\n\n        drawPieSlice: function (x, y, radius, startAngle, endAngle, lineColor, fillColor) {\n            return this._genShape('PieSlice', [x, y, radius, startAngle, endAngle, lineColor, fillColor]);\n        },\n\n        drawRect: function (x, y, width, height, lineColor, fillColor) {\n            return this._genShape('Rect', [x, y, width, height, lineColor, fillColor]);\n        },\n\n        getElement: function () {\n            return this.canvas;\n        },\n\n        /**\n         * Return the most recently inserted shape id\n         */\n        getLastShapeId: function () {\n            return this.lastShapeId;\n        },\n\n        /**\n         * Clear and reset the canvas\n         */\n        reset: function () {\n            alert('reset not implemented');\n        },\n\n        _insert: function (el, target) {\n            $(target).html(el);\n        },\n\n        /**\n         * Calculate the pixel dimensions of the canvas\n         */\n        _calculatePixelDims: function (width, height, canvas) {\n            // XXX This should probably be a configurable option\n            var match;\n            match = this._pxregex.exec(height);\n            if (match) {\n                this.pixelHeight = match[1];\n            } else {\n                this.pixelHeight = $(canvas).height();\n            }\n            match = this._pxregex.exec(width);\n            if (match) {\n                this.pixelWidth = match[1];\n            } else {\n                this.pixelWidth = $(canvas).width();\n            }\n        },\n\n        /**\n         * Generate a shape object and id for later rendering\n         */\n        _genShape: function (shapetype, shapeargs) {\n            var id = shapeCount++;\n            shapeargs.unshift(id);\n            return new VShape(this, id, shapetype, shapeargs);\n        },\n\n        /**\n         * Add a shape to the end of the render queue\n         */\n        appendShape: function (shape) {\n            alert('appendShape not implemented');\n        },\n\n        /**\n         * Replace one shape with another\n         */\n        replaceWithShape: function (shapeid, shape) {\n            alert('replaceWithShape not implemented');\n        },\n\n        /**\n         * Insert one shape after another in the render queue\n         */\n        insertAfterShape: function (shapeid, shape) {\n            alert('insertAfterShape not implemented');\n        },\n\n        /**\n         * Remove a shape from the queue\n         */\n        removeShapeId: function (shapeid) {\n            alert('removeShapeId not implemented');\n        },\n\n        /**\n         * Find a shape at the specified x/y co-ordinates\n         */\n        getShapeAt: function (el, x, y) {\n            alert('getShapeAt not implemented');\n        },\n\n        /**\n         * Render all queued shapes onto the canvas\n         */\n        render: function () {\n            alert('render not implemented');\n        }\n    });\n\n    VCanvas_canvas = createClass(VCanvas_base, {\n        init: function (width, height, target, interact) {\n            VCanvas_canvas._super.init.call(this, width, height, target);\n            this.canvas = document.createElement('canvas');\n            if (target[0]) {\n                target = target[0];\n            }\n            $.data(target, '_jqs_vcanvas', this);\n            $(this.canvas).css({ display: 'inline-block', width: width, height: height, verticalAlign: 'top' });\n            this._insert(this.canvas, target);\n            this._calculatePixelDims(width, height, this.canvas);\n            this.canvas.width = this.pixelWidth;\n            this.canvas.height = this.pixelHeight;\n            this.interact = interact;\n            this.shapes = {};\n            this.shapeseq = [];\n            this.currentTargetShapeId = undefined;\n            $(this.canvas).css({width: this.pixelWidth, height: this.pixelHeight});\n        },\n\n        _getContext: function (lineColor, fillColor, lineWidth) {\n            var context = this.canvas.getContext('2d');\n            if (lineColor !== undefined) {\n                context.strokeStyle = lineColor;\n            }\n            context.lineWidth = lineWidth === undefined ? 1 : lineWidth;\n            if (fillColor !== undefined) {\n                context.fillStyle = fillColor;\n            }\n            return context;\n        },\n\n        reset: function () {\n            var context = this._getContext();\n            context.clearRect(0, 0, this.pixelWidth, this.pixelHeight);\n            this.shapes = {};\n            this.shapeseq = [];\n            this.currentTargetShapeId = undefined;\n        },\n\n        _drawShape: function (shapeid, path, lineColor, fillColor, lineWidth) {\n            var context = this._getContext(lineColor, fillColor, lineWidth),\n                i, plen;\n            context.beginPath();\n            context.moveTo(path[0][0] + 0.5, path[0][1] + 0.5);\n            for (i = 1, plen = path.length; i < plen; i++) {\n                context.lineTo(path[i][0] + 0.5, path[i][1] + 0.5); // the 0.5 offset gives us crisp pixel-width lines\n            }\n            if (lineColor !== undefined) {\n                context.stroke();\n            }\n            if (fillColor !== undefined) {\n                context.fill();\n            }\n            if (this.targetX !== undefined && this.targetY !== undefined &&\n                context.isPointInPath(this.targetX, this.targetY)) {\n                this.currentTargetShapeId = shapeid;\n            }\n        },\n\n        _drawCircle: function (shapeid, x, y, radius, lineColor, fillColor, lineWidth) {\n            var context = this._getContext(lineColor, fillColor, lineWidth);\n            context.beginPath();\n            context.arc(x, y, radius, 0, 2 * Math.PI, false);\n            if (this.targetX !== undefined && this.targetY !== undefined &&\n                context.isPointInPath(this.targetX, this.targetY)) {\n                this.currentTargetShapeId = shapeid;\n            }\n            if (lineColor !== undefined) {\n                context.stroke();\n            }\n            if (fillColor !== undefined) {\n                context.fill();\n            }\n        },\n\n        _drawPieSlice: function (shapeid, x, y, radius, startAngle, endAngle, lineColor, fillColor) {\n            var context = this._getContext(lineColor, fillColor);\n            context.beginPath();\n            context.moveTo(x, y);\n            context.arc(x, y, radius, startAngle, endAngle, false);\n            context.lineTo(x, y);\n            context.closePath();\n            if (lineColor !== undefined) {\n                context.stroke();\n            }\n            if (fillColor) {\n                context.fill();\n            }\n            if (this.targetX !== undefined && this.targetY !== undefined &&\n                context.isPointInPath(this.targetX, this.targetY)) {\n                this.currentTargetShapeId = shapeid;\n            }\n        },\n\n        _drawRect: function (shapeid, x, y, width, height, lineColor, fillColor) {\n            return this._drawShape(shapeid, [[x, y], [x + width, y], [x + width, y + height], [x, y + height], [x, y]], lineColor, fillColor);\n        },\n\n        appendShape: function (shape) {\n            this.shapes[shape.id] = shape;\n            this.shapeseq.push(shape.id);\n            this.lastShapeId = shape.id;\n            return shape.id;\n        },\n\n        replaceWithShape: function (shapeid, shape) {\n            var shapeseq = this.shapeseq,\n                i;\n            this.shapes[shape.id] = shape;\n            for (i = shapeseq.length; i--;) {\n                if (shapeseq[i] == shapeid) {\n                    shapeseq[i] = shape.id;\n                }\n            }\n            delete this.shapes[shapeid];\n        },\n\n        replaceWithShapes: function (shapeids, shapes) {\n            var shapeseq = this.shapeseq,\n                shapemap = {},\n                sid, i, first;\n\n            for (i = shapeids.length; i--;) {\n                shapemap[shapeids[i]] = true;\n            }\n            for (i = shapeseq.length; i--;) {\n                sid = shapeseq[i];\n                if (shapemap[sid]) {\n                    shapeseq.splice(i, 1);\n                    delete this.shapes[sid];\n                    first = i;\n                }\n            }\n            for (i = shapes.length; i--;) {\n                shapeseq.splice(first, 0, shapes[i].id);\n                this.shapes[shapes[i].id] = shapes[i];\n            }\n\n        },\n\n        insertAfterShape: function (shapeid, shape) {\n            var shapeseq = this.shapeseq,\n                i;\n            for (i = shapeseq.length; i--;) {\n                if (shapeseq[i] === shapeid) {\n                    shapeseq.splice(i + 1, 0, shape.id);\n                    this.shapes[shape.id] = shape;\n                    return;\n                }\n            }\n        },\n\n        removeShapeId: function (shapeid) {\n            var shapeseq = this.shapeseq,\n                i;\n            for (i = shapeseq.length; i--;) {\n                if (shapeseq[i] === shapeid) {\n                    shapeseq.splice(i, 1);\n                    break;\n                }\n            }\n            delete this.shapes[shapeid];\n        },\n\n        getShapeAt: function (el, x, y) {\n            this.targetX = x;\n            this.targetY = y;\n            this.render();\n            return this.currentTargetShapeId;\n        },\n\n        render: function () {\n            var shapeseq = this.shapeseq,\n                shapes = this.shapes,\n                shapeCount = shapeseq.length,\n                context = this._getContext(),\n                shapeid, shape, i;\n            context.clearRect(0, 0, this.pixelWidth, this.pixelHeight);\n            for (i = 0; i < shapeCount; i++) {\n                shapeid = shapeseq[i];\n                shape = shapes[shapeid];\n                this['_draw' + shape.type].apply(this, shape.args);\n            }\n            if (!this.interact) {\n                // not interactive so no need to keep the shapes array\n                this.shapes = {};\n                this.shapeseq = [];\n            }\n        }\n\n    });\n\n    VCanvas_vml = createClass(VCanvas_base, {\n        init: function (width, height, target) {\n            var groupel;\n            VCanvas_vml._super.init.call(this, width, height, target);\n            if (target[0]) {\n                target = target[0];\n            }\n            $.data(target, '_jqs_vcanvas', this);\n            this.canvas = document.createElement('span');\n            $(this.canvas).css({ display: 'inline-block', position: 'relative', overflow: 'hidden', width: width, height: height, margin: '0px', padding: '0px', verticalAlign: 'top'});\n            this._insert(this.canvas, target);\n            this._calculatePixelDims(width, height, this.canvas);\n            this.canvas.width = this.pixelWidth;\n            this.canvas.height = this.pixelHeight;\n            groupel = '<v:group coordorigin=\"0 0\" coordsize=\"' + this.pixelWidth + ' ' + this.pixelHeight + '\"' +\n                    ' style=\"position:absolute;top:0;left:0;width:' + this.pixelWidth + 'px;height=' + this.pixelHeight + 'px;\"></v:group>';\n            this.canvas.insertAdjacentHTML('beforeEnd', groupel);\n            this.group = $(this.canvas).children()[0];\n            this.rendered = false;\n            this.prerender = '';\n        },\n\n        _drawShape: function (shapeid, path, lineColor, fillColor, lineWidth) {\n            var vpath = [],\n                initial, stroke, fill, closed, vel, plen, i;\n            for (i = 0, plen = path.length; i < plen; i++) {\n                vpath[i] = '' + (path[i][0]) + ',' + (path[i][1]);\n            }\n            initial = vpath.splice(0, 1);\n            lineWidth = lineWidth === undefined ? 1 : lineWidth;\n            stroke = lineColor === undefined ? ' stroked=\"false\" ' : ' strokeWeight=\"' + lineWidth + 'px\" strokeColor=\"' + lineColor + '\" ';\n            fill = fillColor === undefined ? ' filled=\"false\"' : ' fillColor=\"' + fillColor + '\" filled=\"true\" ';\n            closed = vpath[0] === vpath[vpath.length - 1] ? 'x ' : '';\n            vel = '<v:shape coordorigin=\"0 0\" coordsize=\"' + this.pixelWidth + ' ' + this.pixelHeight + '\" ' +\n                 ' id=\"jqsshape' + shapeid + '\" ' +\n                 stroke +\n                 fill +\n                ' style=\"position:absolute;left:0px;top:0px;height:' + this.pixelHeight + 'px;width:' + this.pixelWidth + 'px;padding:0px;margin:0px;\" ' +\n                ' path=\"m ' + initial + ' l ' + vpath.join(', ') + ' ' + closed + 'e\">' +\n                ' </v:shape>';\n            return vel;\n        },\n\n        _drawCircle: function (shapeid, x, y, radius, lineColor, fillColor, lineWidth) {\n            var stroke, fill, vel;\n            x -= radius;\n            y -= radius;\n            stroke = lineColor === undefined ? ' stroked=\"false\" ' : ' strokeWeight=\"' + lineWidth + 'px\" strokeColor=\"' + lineColor + '\" ';\n            fill = fillColor === undefined ? ' filled=\"false\"' : ' fillColor=\"' + fillColor + '\" filled=\"true\" ';\n            vel = '<v:oval ' +\n                 ' id=\"jqsshape' + shapeid + '\" ' +\n                stroke +\n                fill +\n                ' style=\"position:absolute;top:' + y + 'px; left:' + x + 'px; width:' + (radius * 2) + 'px; height:' + (radius * 2) + 'px\"></v:oval>';\n            return vel;\n\n        },\n\n        _drawPieSlice: function (shapeid, x, y, radius, startAngle, endAngle, lineColor, fillColor) {\n            var vpath, startx, starty, endx, endy, stroke, fill, vel;\n            if (startAngle === endAngle) {\n                return '';  // VML seems to have problem when start angle equals end angle.\n            }\n            if ((endAngle - startAngle) === (2 * Math.PI)) {\n                startAngle = 0.0;  // VML seems to have a problem when drawing a full circle that doesn't start 0\n                endAngle = (2 * Math.PI);\n            }\n\n            startx = x + Math.round(Math.cos(startAngle) * radius);\n            starty = y + Math.round(Math.sin(startAngle) * radius);\n            endx = x + Math.round(Math.cos(endAngle) * radius);\n            endy = y + Math.round(Math.sin(endAngle) * radius);\n\n            if (startx === endx && starty === endy) {\n                if ((endAngle - startAngle) < Math.PI) {\n                    // Prevent very small slices from being mistaken as a whole pie\n                    return '';\n                }\n                // essentially going to be the entire circle, so ignore startAngle\n                startx = endx = x + radius;\n                starty = endy = y;\n            }\n\n            if (startx === endx && starty === endy && (endAngle - startAngle) < Math.PI) {\n                return '';\n            }\n\n            vpath = [x - radius, y - radius, x + radius, y + radius, startx, starty, endx, endy];\n            stroke = lineColor === undefined ? ' stroked=\"false\" ' : ' strokeWeight=\"1px\" strokeColor=\"' + lineColor + '\" ';\n            fill = fillColor === undefined ? ' filled=\"false\"' : ' fillColor=\"' + fillColor + '\" filled=\"true\" ';\n            vel = '<v:shape coordorigin=\"0 0\" coordsize=\"' + this.pixelWidth + ' ' + this.pixelHeight + '\" ' +\n                 ' id=\"jqsshape' + shapeid + '\" ' +\n                 stroke +\n                 fill +\n                ' style=\"position:absolute;left:0px;top:0px;height:' + this.pixelHeight + 'px;width:' + this.pixelWidth + 'px;padding:0px;margin:0px;\" ' +\n                ' path=\"m ' + x + ',' + y + ' wa ' + vpath.join(', ') + ' x e\">' +\n                ' </v:shape>';\n            return vel;\n        },\n\n        _drawRect: function (shapeid, x, y, width, height, lineColor, fillColor) {\n            return this._drawShape(shapeid, [[x, y], [x, y + height], [x + width, y + height], [x + width, y], [x, y]], lineColor, fillColor);\n        },\n\n        reset: function () {\n            this.group.innerHTML = '';\n        },\n\n        appendShape: function (shape) {\n            var vel = this['_draw' + shape.type].apply(this, shape.args);\n            if (this.rendered) {\n                this.group.insertAdjacentHTML('beforeEnd', vel);\n            } else {\n                this.prerender += vel;\n            }\n            this.lastShapeId = shape.id;\n            return shape.id;\n        },\n\n        replaceWithShape: function (shapeid, shape) {\n            var existing = $('#jqsshape' + shapeid),\n                vel = this['_draw' + shape.type].apply(this, shape.args);\n            existing[0].outerHTML = vel;\n        },\n\n        replaceWithShapes: function (shapeids, shapes) {\n            // replace the first shapeid with all the new shapes then toast the remaining old shapes\n            var existing = $('#jqsshape' + shapeids[0]),\n                replace = '',\n                slen = shapes.length,\n                i;\n            for (i = 0; i < slen; i++) {\n                replace += this['_draw' + shapes[i].type].apply(this, shapes[i].args);\n            }\n            existing[0].outerHTML = replace;\n            for (i = 1; i < shapeids.length; i++) {\n                $('#jqsshape' + shapeids[i]).remove();\n            }\n        },\n\n        insertAfterShape: function (shapeid, shape) {\n            var existing = $('#jqsshape' + shapeid),\n                 vel = this['_draw' + shape.type].apply(this, shape.args);\n            existing[0].insertAdjacentHTML('afterEnd', vel);\n        },\n\n        removeShapeId: function (shapeid) {\n            var existing = $('#jqsshape' + shapeid);\n            this.group.removeChild(existing[0]);\n        },\n\n        getShapeAt: function (el, x, y) {\n            var shapeid = el.id.substr(8);\n            return shapeid;\n        },\n\n        render: function () {\n            if (!this.rendered) {\n                // batch the intial render into a single repaint\n                this.group.innerHTML = this.prerender;\n                this.rendered = true;\n            }\n        }\n    });\n\n}))}(document, Math));\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2016, VU University Amsterdam\n\t\t\t CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Provide download from the application\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('download',[ \"jquery\", \"laconic\" ],\n       function() {\n\n(function($) {\n  var pluginName = 'downloader';\n\n  /** @lends $.fn.downloader */\n  var methods = {\n    /**\n     * @param {Object} options\n     * @param {String} options.data Content to be sent.\n     * @param {String} [options.filename] (base) name of the downloaded\n     * file.\n     * @param {String} [options.type] MIME type (default\n     * `application/octet-stream`)\n     */\n    _init: function(options) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = $.extend({\n\t  name:\"swish-download\",\n\t  ext:\"dat\"\n\t}, options);\n\n\tvar type = data.content_type;\n\tvar name = data.filename || \"swish-download.dat\";\n\tvar chs  = data.charset  || \"charset=UTF-8\";\n\n\tfunction aSupportsDownload() {\n\t  return $(\"<a>\")[0].download != undefined;\n\t}\n\n\tif ( !aSupportsDownload() || !type )\n\t  type = \"application/octet-stream\";\n\n\tvar href      = \"data:\"+type+\";\"+chs+\",\";\n        href += (chs == \"base64\" ? data.data : encodeURIComponent(data.data));\n\n\telem.attr(\"download\", name);\n\telem.attr(\"href\", href);\n\telem.attr(\"title\", \"Download (use menu for save link as)\");\n\telem.text(name);\n\n\telem.addClass(\"btn btn-primary download\");\n\telem.append($.el.span({class:\"glyphicon glyphicon-download\"}));\n      });\n    }\n  }; // methods\n\n  /**\n   * <Class description>\n   *\n   * @class downloader\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.downloader = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2017, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Run an manage Prolog queries and their output\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n * @requires laconic\n * @requires editor\n */\n\ndefine('runner',[ \"jquery\", \"config\", \"preferences\",\n\t \"cm/lib/codemirror\", \"form\", \"prolog\", \"links\", \"modal\",\n\t \"answer\", \"laconic\", \"sparkline\", \"download\", \"search\"\n       ],\n       function($, config, preferences,\n\t\tCodeMirror, form, prolog, links, modal) {\n\n\t\t /*******************************\n\t\t *\t  THE COLLECTION\t*\n\t\t *******************************/\n\n(function($) {\n  var pluginName = 'prologRunners';\n\n  /** @lends $.fn.prologRunners */\n  var methods = {\n    /**\n     * Initialize the container for Prolog queries.\n     * @example $(\".prolog-runners\").prologRunners();\n     * @param {Object} [options] currently ignored\n     */\n    _init: function(options) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = {};\n\n\tfunction runnerMenu() {\n\t  var icon = $.el.span({class:\"glyphicon glyphicon-menu-hamburger\"});\n\t  var menu = form.widgets.dropdownButton(\n\t    icon,\n\t    { divClass:\"runners-menu btn-transparent\",\n\t      ulClass:\"pull-right\",\n\t      client:elem,\n\t      actions:\n\t      { \"Collapse all\": function() {\n\t\t  this.find(\".prolog-runner\").prologRunner('toggleIconic', true);\n\t        },\n\t\t\"Expand all\": function() {\n\t\t  this.find(\".prolog-runner\").prologRunner('toggleIconic', false);\n\t\t},\n\t\t\"Stop all\": function() {\n\t\t  this.find(\".prolog-runner\").prologRunner('stop');\n\t\t},\n\t\t\"Clear\": function() { this.prologRunners('clear'); }\n\t      }\n\t    });\n\n\t  return menu;\n\t}\n\n\tdata.stretch = $($.el.div({class:\"stretch\"}));\n\tdata.inner   = $($.el.div({class:\"inner\"}));\n\n\telem.append(runnerMenu());\n\telem.append(data.stretch);\n\telem.append(data.inner);\n\n\telem.on(\"pane.resize\", function() {\n\t  elem.prologRunners('scrollToBottom', true);\n\t});\n\n\telem.data(pluginName, data);\n      });\n    },\n\n    /**\n     * Run a Prolog query.  The methods appends a `<div>` and runs the\n     * plugin `prologRunner` on the new div.\n     * @param {Object} query\n     * @param {String} query.query the Prolog query to prove\n     * @param {String} [query.source] the Prolog program\n     * @param {prologEditor} [query.editor] the source editor\n     * @param {Boolean} [query.iconifyLast=true] define whether or not\n     * to iconify the previous runner.\n     * @param {Boolean} [query.tabled=false] if `true`, make a table with\n     * the results.\n     */\n    run: function(query) {\n      var data = this.data('prologRunners');\n\n      if ( query.iconifyLast )\n\tthis.prologRunners('iconifyLast');\n\n      var runner = $.el.div({class: \"prolog-runner\"});\n\n      data.inner.append(runner);\n      $(runner).prologRunner(query);\n      this.prologRunners('scrollToBottom');\n\n      return this;\n    },\n\n    /**\n     * Destroy all runners and, if applicable, their associated\n     * pengines.\n     */\n    clear: function() {\n      this.find(\".prolog-runner\").prologRunner('close');\n    },\n\n    /**\n     * Iconify the last runner if it is not associated to an open\n     * query.\n     */\n    iconifyLast: function() {\n      var jrunner = $(this.inner).children().last();\n\n      if ( jrunner.length == 1 )\n      { var runner = jrunner.prologRunner();\n\n\tif ( !runner.alive() )\n\t  runner.toggleIconic(true);\n      }\n\n      return this;\n    },\n\n    /**\n     * Keep the content at the bottom of the window, such that the\n     * buttons remain in the same position.  The only way to achieve\n     * this is by putting something on top of the content as long as\n     * the content is lower than the window.\n     *\n     * @param {Boolean} [onlydown=false] only scroll down if we are\n     * not at the bottom.\n     */\n    // the \"- 4\" compensates for the prolog-runner top&bottom margin.\n    scrollToBottom: function(onlydown) {\n      this.each(function() {\n\tvar elem = $(this);\n\tvar data   = elem.data('prologRunners');\n\tvar height = data.inner.height();\n\tvar room   = elem.height() - height - 4 - 2;\n\n\tif ( room > 0 || onlydown !== true ) {\n\t  data.stretch.height(room > 0 ? room : 0);\n\t  elem.scrollTop(height);\n\t}\n      });\n\n      return this;\n    }\n  }; // methods\n\n  /**\n   * Manage a subwindow (`<div>`) that acts as a collection of runner\n   * items.  Each runner represents a Prolog query, either active or\n   * terminated.  The collection keeps the runners properly stacked and\n   * provides a menu to control the collection, such as _clear_,\n   * _iconify all_, etc.\n   *\n   * @class prologRunners\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n  $.fn.prologRunners = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\n\n\t\t /*******************************\n\t\t *\tINDIVIDUAL RUNNER\t*\n\t\t *******************************/\n\n(function($) {\n  var pluginName = 'prologRunner';\n\n  // keyBindings rely on the jQuery normalized `which` field\n  var keyBindings = { 59:      'next',\t\t/* ; (FF) */\n\t\t      186:     'next',\t\t/* ; (Chromium) */\n\t\t      32:      'next',\t\t/* space */\n\t\t      190:     'stop',\t\t/* . */\n\t\t      13:      'stop',\t\t/* Enter */\n\t\t      65:      'stopOrAbort',\t/* a */\n\t\t      27:      'stopOrAbort',\t/* Esc */\n\t\t      46:      'close',\t\t/* Del */\n\t\t      112:     'help'\t\t/* F1 */\n                    };\n\n  /** @lends $.fn.prologRunner */\n  var methods = {\n    /**\n     * Initialize a runner for a Prolog query\n     * @param {Object} query\n     * @param {String} query.query the Prolog query to prove\n     * @param {String} [query.source] the Prolog program\n     * @param {Boolean} [query.tabled=false]  If `true`, represent the\n     * results as a table.\n     * @param {Boolean} [query.title=true] If `false`, suppress the\n     * title.\n     */\n    _init: function(query) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = {};\n\n\tfunction titleBarButton(glyph, title, action) {\n\t  var btn = $.el.button({title:title, class:\"rtb-\"+action},\n\t\t\t\t$.el.span({class:\"glyphicon glyphicon-\"+glyph}));\n\t  $(btn).on(\"click\", function() { elem.prologRunner(action); });\n\t  return btn;\n\t}\n\n\tfunction stateButton() {\n\t  var icon = $.el.span({class:\"runner-state show-state idle\"});\n\n\t  return form.widgets.dropdownButton(icon);\n\t}\n\n\tfunction controllerDiv() {\n\t  function next()     { elem.prologRunner('next',    1); }\n\t  function next10()   { elem.prologRunner('next',   10); }\n\t  function next100()  { elem.prologRunner('next',  100); }\n\t  function next1000() { elem.prologRunner('next', 1000); }\n\t  function stop()     { data.prolog.stop(); }\n\t  function abort()    { data.prolog.abort(); }\n\n\t  function button(action, label) {\n\t    var btn = $.el.button(label);\n\t    $(btn).on(\"click\", action);\n\t    return btn;\n\t  }\n\n\t  function input() {\n\t    var inp = $.el.input({class:\"prolog-input\"});\n\t    var btn = $.el.button(\"Send\");\n\n\t    $(inp).keypress(function(ev) {\n\t\t\t      if ( ev.which == 13 &&\n\t\t\t\t   elem.prologRunner('respond', $(inp).val()) ) {\n\t\t\t\t$(inp).val(\"\");\n\t\t\t\tev.preventDefault();\n\t\t\t\treturn false;\t\t/* prevent bubbling */\n\t\t\t      } else if ( ev.key != \"Esc\" ) {\n\t\t\t\tev.stopPropagation();   /* prevent bubbling */\n\t\t\t      }\n\t\t\t    });\n\t    $(btn).on(\"click\", function() {\n\t\t\t\t elem.prologRunner('respond', $(inp).val());\n\t\t\t       });\n\n\t    return {input:inp, button:btn};\n\t  }\n\n\t  function statusChart() {\n\t    var spark = $.el.span({class:\"sparklines\"}, \"\");\n\n\t    return spark;\n\t  }\n\n\t  var inp = input();\n\t  var div = $.el.div({class:\"controller show-state\"},\n\t\t\t     $.el.span({class:\"running\"},\n\t\t\t\t       button(abort, \"Abort\")),\n\t\t\t     $.el.span({class:\"wait-next\"},\n\t\t\t\t       button(next, \"Next\"),\n\t\t\t\t       button(next10, \"10\"),\n\t\t\t\t       button(next100, \"100\"),\n\t\t\t\t       button(next1000, \"1,000\"), \" \",\n\t\t\t\t       button(stop, \"Stop\")),\n\t\t\t     $.el.span({class:\"wait-input\"},\n\t\t\t\t       button(abort, \"Abort\"), inp.button,\n\t\t\t\t       $.el.span(inp.input)),\n\t\t\t     statusChart());\n\n\t  return div;\n\t}\n\n\telem.addClass(\"prolog-runner panel panel-default\");\n\tif ( query.tabled )\n\t  elem.addClass(\"tabled\");\n\tif ( query.title != false ) {\n\t  var qspan = $.el.span({class:\"query cm-s-prolog\"});\n\t  CodeMirror.runMode(query.query, \"prolog\", qspan);\n\t  elem.append($.el.div(\n\t    {class:\"runner-title panel-heading\"},\n\t    titleBarButton(\"remove-circle\", \"Close\",        'close'),\n\t    titleBarButton(\"minus\",         \"Iconify\",      'toggleIconic'),\n\t    titleBarButton(\"download\",      \"Download CSV\", 'downloadCSV'),\n\t    stateButton(),\n\t    qspan));\n\t} else {\n\t  var close = glyphButton(\"remove-circle\", \"Close\");\n\t  elem.append(close);\n\t  $(close).on(\"click\", function() {\n\t    elem.prologRunner('close');\n\t  });\n\t}\n\tif ( query.chunk )\n\t  data.chunk = query.chunk;\n\telem.append($.el.div({class:\"runner-results panel-body\"}));\n\telem.append(controllerDiv());\n\n\telem.data('prologRunner', data);\n\n\telem.prologRunner('populateActionMenu');\n\telem.keydown(function(ev) {\n\t  if ( elem.prologRunner('getState') != \"wait-input\" &&\n\t       !ev.ctrlKey && !ev.altKey ) {\n\t    if ( keyBindings[ev.which] ) {\n\t      ev.preventDefault();\n\t      elem.prologRunner(keyBindings[ev.which]);\n\t    }\n\t  }\n\t});\n\telem.on(\"click\", \"a\", links.followLink);\n\n\tdata.savedFocus = document.activeElement;\n\telem.attr('tabindex', -1);\n\telem.focus();\n\n\tdata.query   = query;\n\tdata.answers = 0;\n\n\telem.prologRunner('setScreenDimensions');\n\n\t/* Load pengines.js incrementally because we wish to ask the\n\t   one from the pengine server rather than a packaged one.\n\t*/\n\n\trequire([config.http.locations.pengines+\"/pengines.js\"],\n\t\tfunction() {\n\n\t  data.prolog = new Pengine({\n\t    server: config.http.locations.pengines,\n\t    runner: elem,\n\t    application: \"swish\",\n\t    src: query.source,\n\t    destroy: false,\n\t    format: 'json-html',\n\t    oncreate: handleCreate,\n\t    onsuccess: handleSuccess,\n\t    onfailure: handleFailure,\n\t    onstop: handleStop,\n\t    onprompt: handlePrompt,\n\t    onoutput: handleOutput,\n\t    onping: handlePing,\n\t    onerror: handleError,\n\t    onabort: handleAbort});\n\t  data.prolog.state = \"idle\";\n\t  if ( config.swish.ping && data.prolog.ping != undefined ) {\n\t    data.prolog.ping(config.swish.ping*1000);\n\t  }\n\t});\n\n\treturn this;\n      });\n    }, //_init()\n\n    setScreenDimensions: function() {\n      var data = this.data(pluginName);\n      var pre  = $.el.pre({class: \"measure\"}, \"xxxxxxxxxx\");\n      var sw   = this.width();\n      var sh;\n      var container;\n\n      container = this.closest(\".prolog-runners\");\n      if ( container.length == 0 )\n\tcontainer = this.closest(\".nb-view\");\n      if ( container.length )\n\tsh = container.height();\n\n      this.append(pre);\n      var cw = $(pre).width()/10;\n      var ch = $(pre).height();\n      $(pre).remove();\n\n      data.screen = {\n        width: sw,\n\tcols: Math.floor(sw/cw)\n      };\n      if ( sh !== undefined ) {\n\tdata.screen.height = sh;\n\tdata.screen.rows   = Math.floor(sh/ch);\n      }\n    },\n\n    /**\n     * Add a _positive_ answer to the runner.  The answer is embedded in\n     * a `<div class=\"answer\">` with an additional class `\"even\"` or\n     * `\"odd\"` to simplify styling. Note that using CSS odd/even\n     * selectors is not possible because there are other elements such\n     * as errors.\n     * @param {Answer} answer pengine response in `json-html`\n     */\n    renderAnswer: function(answer) {\n      var data = this.data('prologRunner');\n      var even = (++data.answers % 2 == 0);\n\n      if ( data.query.tabled ) {\n\tif ( data.answers == 1 ) {\n\t  if ( answer.projection && answer.projection.length > 0 ) {\n\t    var table = answerTable(answer.projection);\n\t    addAnswer(this, table);\n\t    data.table = table;\n\t    data.projection = answer.projection;\n\t    answer.nth = data.answers;\n\t    $(data.table).prologAnswer(answer);\n\t    return this;\n\t  }\n        } else\n\t{ answer.projection = data.projection;\n\t  answer.nth = data.answers;\n\t  $(data.table).prologAnswer(answer);\n\t  return this;\n\t}\n      }\n\n      var div = $.el.div({class:\"answer \"+(even ? \"even\" : \"odd\")},\n\t\t\t $.el.span({class:\"answer-no\"}, data.answers));\n\n      addAnswer(this, div);\n      $(div).prologAnswer(answer);\n    },\n\n    /**\n     * Add pengine output as `<span class=\"output\">`\n     * @param {String} data HTML that is inserted into the span.\n     * @return {DOM} the added node (a span)\n     */\n    outputHTML: function(data) {\n      var span = $.el.span({class:\"output\"});\n      addAnswer(this, span);\n      span.innerHTML = data;\n      runScripts(span);\n      return span;\n    },\n\n    /**\n     * Handle object output\n     */\n     downloadButton: function(obj) {\n       var button = $.el.a({class:\"download\"});\n       addAnswer(this, button);\n       $(button).downloader(obj);\n     },\n\n    /**\n     * Display a syntax error in the query.\n     * {Object} options\n     * {String} options.message is the message\n     * {Object} options.location contains the `line` and `ch` position\n     */\n     syntaxError: function(options) {\n       var data = this.data(pluginName);\n\n       options.data = \"<pre class=\\\"output msg-error\\\">\" +\n\t\t      options.message +\n\t\t      \"</pre>\";\n       options.location.file = true;\n       $(data.query.query_editor).prologEditor('highlightError', options);\n       return this;\n     },\n\n    /**\n     * Add an error message to the output.  The error is\n     * wrapped in a `<pre class=\"error\">` element.\n     * @param {String|Object} options If `options` is a string, it is a\n     * plain-text error message.  Otherwise it is the Pengine error\n     * object.\n     * @param {String} options.message is the plain error message\n     * @param {String} options.code is the error code\n     */\n    error: function(options) {\n      var msg;\n\n      if ( typeof(options) == 'object' ) {\n\tif ( options.code == \"died\" ) {\n\t  addAnswer(this, $.el.div({\n\t    class:\"RIP\",\n\t    title:\"Remote pengine timed out\"\n\t  }));\n\t  return this;\n\t} else if ( options.code == \"syntax_error\" )\n\t{ var m = options.message.match(/^HTTP:DATA:(\\d+):(\\d+):\\s*(.*)/);\n\n\t  if ( m && m.length == 4 ) {\n\t    this.prologRunner('syntaxError',\n\t\t\t      { location:\n\t\t\t\t{ line: parseInt(m[1])-1,\n\t\t\t\t  ch:\tparseInt(m[2])\n\t\t\t\t},\n\t\t\t\tmessage: m[3]\n\t\t\t      });\n\t    msg = \"Cannot run query due to a syntax error (check query window)\";\n\t  }\n\t}\n\tif ( !msg )\n\t  msg = options.message;\n      } else\n\tmsg = options;\n\n      addAnswer(this, $.el.pre({class:\"prolog-message msg-error\"}, msg));\n      return this;\n    },\n\n    /**\n     * Handle trace events\n     */\n    trace: function(data) {\n      var elem = this;\n      var goal = $.el.span({class:\"goal\"});\n      var prompt = data.data;\n      $(goal).html(prompt.goal);\n\n      function capitalizeFirstLetter(string) {\n\treturn string.charAt(0).toUpperCase() + string.slice(1);\n      }\n\n      function button(label, action, context) {\n\tvar btn = $.el.button({class:action,\n\t\t\t       title:label\n\t\t\t      },\n\t\t\t      $.el.span(label));\n\t$(btn).on(\"click\", function(ev) {\n\t  if ( context !== undefined ) {\n\t    action += \"(\"+Pengine.stringify(context(ev))+\")\";\n\t  }\n\t  data.pengine.respond(action);\n\t  $(ev.target).parent().remove();\n\t});\n\treturn btn;\n      }\n\n      addAnswer(this,\n\t\t$.el.div({class:\"prolog-trace\"},\n\t\t\t $.el.span({ class:\"depth\",\n\t\t\t             style:\"width:\"+(prompt.depth*5-1)+\"px\"\n\t\t\t\t   }, \"\\u00A0\"), /* &nbsp; */\n\t\t\t $.el.span({ class:\"port \"+prompt.port\n\t\t\t           },\n\t\t\t\t   capitalizeFirstLetter(prompt.port),\n\t\t\t\t   \":\"),\n\t\t\t goal));\n      if ( prompt.port == \"exception\" )\n\taddAnswer(this,\n\t\t  $.el.div({class:\"prolog-exception\"},\n\t\t\t   prompt.exception.message));\n      addAnswer(this,\n\t\t$.el.div({class:\"trace-buttons\"},\n\t\t\t button(\"Continue\",  \"nodebug\", function(ev) {\n\t\t\t   return breakpoints($(ev.target)\n\t\t\t\t    .closest(\".prolog-runner\"));\n\t\t\t }),\n\t\t\t button(\"Step into\", \"continue\"),\n\t\t\t button(\"Step over\", \"skip\"),\n\t\t\t button(\"Step out\",  \"up\"),\n\t\t\t button(\"Retry\",     \"retry\"),\n\t\t\t button(\"Abort\",     \"abort\")));\n\n      this.closest(\".swish\")\n          .find(\".tabbed\")\n          .trigger(\"trace-location\", prompt);\n\n      this.prologRunner('setState', \"wait-debug\");\n    },\n\n    /**\n     * set the placeholder of the input field.  This is normally\n     * done from the pengine's onprompt handler\n     * @param {String} p the new placeholder\n     */\n    setPrompt: function(p) {\n      this.find(\".controller input\").attr(\"placeholder\", p);\n    },\n\n    /**\n     * Support arbitrary jQuery requests from Prolog\n     */\n    jQuery: function(prompt) {\n      var request = prompt.data;\n      var receiver;\n\n      if ( typeof(request.selector) == \"string\" ) {\n\treceiver = $(request.selector);\n      } else if ( typeof(request.selector) == \"object\" ) {\n\tswitch(request.selector.root) {\n\t  case \"this\":\troot = this; break;\n\t  case \"swish\":\troot = this.closest(\".swish\"); break;\n\t}\n\tif ( request.selector.sub == \"\" ) {\n\t  receiver = root;\n\t} else {\n\t  receiver = root.find(request.selector.sub);\n\t}\n      }\n\n      console.log(receiver);\n      var result = receiver[request.method].apply(receiver, request.arguments);\n      console.log(result);\n\n      prompt.pengine.respond(Pengine.stringify(result));\n    },\n\n    /**\n     * Handle a (dashboard) form.  This opens dialog from the supplied\n     * `html`.\n     * @param {Object} prompt\n     * @param {String} prompt.html contains the HTML content of the form\n     */\n    form: function(prompt) {\n      var data = this.data('prologRunner');\n\n      modal.show({\n\ttitle: \"Please enter parameters\",\n\tbody: function() {\n\t  this.html(prompt.data.html);\n\t  this.find(\"[data-search-in]\").search({search:false});\n\n\t  this.on(\"click\", \"button[data-action]\", function(ev) {\n\t    var button = $(ev.target).closest(\"button\");\n\t    var action = button.data('action');\n\n\t    if ( action == 'run' ) {\n\t      var formel = $(ev.target).closest(\"form\");\n\t      var fdata  = form.serializeAsObject(formel, true);\n\t      var s      = Pengine.stringify(fdata);\n\t      data.prolog.respond(s);\n\t    } else if ( action == 'cancel' ) {\n\t      data.prolog.respond(\"cancel\");\n\t    }\n\t    button.closest(\".modal\").modal('hide');\n\n\t    ev.preventDefault();\n\t    return false;\n\t  });\n\t}\n      });\n    },\n\n\n    /**\n     * send a response (to pengine onprompt handler) to the\n     * pengine and add the response to the dialogue as\n     * `div class=\"response\">`\n     * @param {String} s plain-text response\n     */\n    respond: function(text) {\n      var data = this.data('prologRunner');\n\n      if ( data.wait_for == \"term\" ) {\n\ts = termNoFullStop(text);\n\tif ( s == \"\" )\n\t  return null;\n      } else {\n\ts = Pengine.stringify(text+\"\\n\");\n      }\n\n      addAnswer(this, $.el.div({class:\"response\"}, text));\n      data.prolog.respond(s);\n      return this;\n    },\n\n    /**\n     * Stop the associated Prolog engines.\n     */\n    stop: function() {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = elem.data('prologRunner');\n\tdata.prolog.stop();\n      });\n    },\n\n    /**\n     * Stop the pengine if it is waiting for a next solution,\n     * abort it if it is running or waitin for input and ignore\n     * otherwise.\n     */\n    stopOrAbort: function() {\n      return this.each(function() {\n\tvar elem  = $(this);\n\tvar data  = elem.data('prologRunner');\n\tvar state = elem.prologRunner('getState');\n\n\tswitch(state)\n\t{ case \"running\":\n\t  case \"wait-input\":\n\t    data.prolog.abort();\n\t    break;\n\t  case \"wait-next\":\n\t    data.prolog.stop();\n\t}\n      });\n    },\n\n    /**\n     * Ask the associated Prolog engines for the next answer.\n     * @param {Integer} chunk maximum number of answers to return in the\n     * next chunk.\n     */\n    next: function(chunk) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = elem.data('prologRunner');\n\tdata.prolog.next(chunk);\n\telem.prologRunner('setState', \"running\");\n      });\n    },\n\n    /**\n     * Abort the associated Prolog engine.\n     */\n    abort: function() {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = elem.data('prologRunner');\n\tdata.prolog.abort();\n      });\n    },\n\n    /**\n     * If the associated pengine is alive, send it a `destroy`.  Next,\n     * remove the runner from its container.\n     */\n    close: function() {\n      if ( this.length ) {\n\tvar runners = RS(this);\n\n\tthis.each(function() {\n\t  var elem = $(this);\n\t  var data = elem.data('prologRunner');\n\n\t  if ( elem.prologRunner('alive') ) {\n\t    $(\".prolog-editor\").trigger('pengine-died', data.prolog.id);\n\t    data.prolog.abort();\n\t  }\n\t});\n\tthis.remove();\n\n\trunners.prologRunners('scrollToBottom', true);\n      }\n      return this;\n    },\n\n    /**\n     * Provide help on running a query\n     */\n     help: function() {\n       $(\".swish-event-receiver\").trigger(\"help\", {file:\"runner.html\"});\n     },\n\n    /**\n     * Toggle or set the iconic state of the runner.\n     * @param {Boolean} [on] if `true`, make iconify, `false` expanded\n     * and toggle if unspecified\n     */\n    toggleIconic: function(on) {\n      if ( on == undefined ) {\n\tthis.toggleClass(\"iconic\");\n      } else if ( on ) {\n\tthis.addClass(\"iconic\");\n      } else {\n\tthis.removeClass(\"iconic\");\n      }\n\n      RS(this).prologRunners('scrollToBottom', true);\n\n      return this;\n    },\n\n    /**\n     * Populate the menu associated with the pengine icon.\n     * @param {Object} [actions] associates labels with functions.\n     */\n    populateActionMenu: function(actions) {\n      var menu = this.find(\".runner-title .btn-group.dropdown\");\n\n      actions = $.extend({ \"Re-run\": function() { console.log(\"Re-Run \", this); }\n\t\t\t }, actions);\n\n      form.widgets.populateMenu(menu, this, actions);\n\n      return this;\n    },\n\n    /**\n     * Download query results as CSV.\n     */\n    downloadCSV: function(options) {\n      var data = this.data('prologRunner');\n      var query = termNoFullStop(data.query.query);\n\n      prolog.downloadCSV(query, data.query.source, options);\n\n      return this;\n    },\n\n  /**\n   * @param {String} state defines the new state of the pengine.\n   * Known states are:\n   *\n   *   - \"idle\"\t      - Pengine is not yet created\n   *   - \"running\"    - Pengine is running\n   *   - \"wait-next\"  - Pengine produced a non-deterministic answer\n   *   - \"wait-input\" - Pengine waits for input\n   *   - \"wait-debug\" - Pengine waits for for debugger reply\n   *   - \"true\"       - Pengine produced the last answer\n   *   - \"false\"      - Pengine failed\n   *   - \"error\"      - Pengine raised an error\n   *   - \"stopped\"    - User selected *stop* after non-det answer\n   *   - \"aborted\"    - User aborted execution\n   *\n   * The widget is brought to the new  state   by  adding the state as a\n   * class to all members of  the   class  `show-state`, which currently\n   * implies the pengines icon at the   top-left  and a _controller_ div\n   * created by controllerDiv().\n   */\n   setState: function(state) {\n     var data = this.data('prologRunner');\n\n     if ( !data )\n       return;\n\n     if ( data.prolog.state != state ) {\n       var stateful = this.find(\".show-state\");\n\n       stateful.removeClass(data.prolog.state).addClass(state);\n       data.prolog.state = state;\n       if ( !aliveState(state) && data.savedFocus ) {\n\t $(data.savedFocus).focus();\n\t data.savedFocus = null;\n       } else if ( state == \"wait-input\" ) {\n\t this.find(\"input\").focus();\n       }\n     }\n\n     var runners = RS(this);\n     if ( !aliveState(state) ) {\n       $(\".prolog-editor\").trigger('pengine-died', data.prolog.id);\n       data.prolog.destroy();\n       setTimeout(function() { runners.prologRunners('scrollToBottom') }, 100);\n     } else if ( state == \"wait-next\" || state == \"true\" ) {\n       setTimeout(function() { runners.prologRunners('scrollToBottom') }, 100);\n     } else {\n       runners.prologRunners('scrollToBottom');\n     }\n\n     return this;\n   },\n\n   /** @returns {String} representing the current state of the\n    * query execution.\n    * @see {@link setState}\n    */\n   getState: function() {\n     var data = this.data('prologRunner');\n\n     return data.prolog ? data.prolog.state : \"idle\";\n   },\n\n   /**\n    * @returns {Boolean} true if the related pengine is alive.  That\n    * means it has state `\"running\"`, `\"wait-next\"`, `\"wait-input\"` or\n    * `\"wait-debug\"`\n    */\n   alive: function() {\n     return aliveState(this.prologRunner('getState'));\n   },\n\n   /**\n    * Handle ping data, updating the sparkline status\n    */\n   ping: function(stats) {\n     var data = this.data('prologRunner');\n\n     if ( data && data.prolog && data.prolog.state == \"running\" ) {\n       var spark = this.find(\".sparklines\");\n       var stacks = [\"global\", \"local\", \"trail\"];\n       var colors = [\"red\", \"blue\", \"green\"];\n       var names  = [\"Global \", \"Local \", \"Trail \"];\n       var maxlength = 10;\n\n       if ( !data.stacks )\n\t data.stacks = { global:{usage:[]}, local:{usage:[]}, trail:{usage:[]} };\n\n       for(i=0; i<stacks.length; i++) {\n\t var s = stacks[i];\n\t var limit = stats.stacks[s].limit;\n\t var usage = stats.stacks[s].usage;\n\n\t var u = Math.log10((usage/limit)*10000);\n\t function toBytes(limit, n) {\n\t   var bytes = Math.round((Math.pow(10, n)/10000)*limit);\n\n\t   function numberWithCommas(x) {\n\t     x = x.toString();\n\t     var pattern = /(-?\\d+)(\\d{3})/;\n\t     while (pattern.test(x))\n\t       x = x.replace(pattern, \"$1,$2\");\n\t     return x;\n\t   }\n\n\t   return numberWithCommas(bytes);\n\t }\n\n\t data.stacks[s].limit = limit;\n\t if ( data.stacks[s].usage.length >= maxlength )\n\t   data.stacks[s].usage = data.stacks[s].usage.slice(1);\n\t data.stacks[s].usage.push(u);\n\t spark.sparkline(data.stacks[s].usage,\n\t\t\t { height: spark.parent().height(),\n\t\t\t   composite: i>0,\n\t\t\t   chartRangeMin: 0,\n\t\t\t   chartRangeMax: 4,\n\t\t\t   lineColor: colors[i],\n\t\t\t   tooltipPrefix: names[i],\n\t\t\t   tooltipSuffix: \" bytes\",\n\t\t\t   tooltipChartTitle: i == 0 ? \"Stack usage\" : undefined,\n\t\t\t   numberFormatter: function(n) {\n\t\t\t     return toBytes(limit, n);\n\t\t\t   }\n\t\t\t });\n       }\n     }\n   }\n\n  }; // methods\n\n\n\t\t /*******************************\n\t\t *     PRIVATE FUNCTIONS\t*\n\t\t *******************************/\n\n  function RS(from) {\t\t\t/* find runners from parts */\n    return $(from).closest(\".prolog-runners\");\n  }\n\n  function addAnswer(runner, html) {\n    var results = runner.find(\".runner-results\");\n    results.append(html);\n    return this;\n  }\n\n  function aliveState(state) {\n    switch( state )\n    { case \"running\":\n      case \"wait-next\":\n      case \"wait-input\":\n      case \"wait-debug\":\n\treturn true;\n      default:\n\treturn false;\n    }\n  }\n\n  function answerTable(projection) {\n    var tds = [{class:\"projection\"}];\n\n    for(i=0; i<projection.length; i++)\n      tds.push($.el.th({class:\"pl-pvar\"}, projection[i]));\n    tds.push($.el.th({class:\"answer-nth\"}, \"\"));\n\n    var table = $.el.table({class:\"prolog-answers\"},\n\t\t\t   $.el.tbody($.el.tr.apply(this, tds)));\n\n    return table;\n  }\n\n\t\t /*******************************\n\t\t *\t SCRIPTS IN NODES\t*\n\t\t *******************************/\n\n  var node_id = 1;\n  function runScripts(elem) {\n    var scripts = [];\n    elem = $(elem);\n\n    elem.find(\"script\").each(function() {\n      var type = this.getAttribute('type')||\"text/javascript\";\n      if ( type == \"text/javascript\" )\n\tscripts.push(this.textContent);\n    });\n\n    if ( scripts.length > 0 ) {\n      var script = \"(function(node){\" + scripts.join(\"\\n\") + \"})\";\n      var node = new Node({\n        node: elem[0]\n      });\n\n      try {\n\teval(script)(node);\n      } catch(e) {\n\talert(e);\n      }\n    }\n  }\n\n  function Node(options) {\n    this.my_node = options.node;\n  }\n\n  Node.prototype.node = function() {\n    return $(this.my_node);\n  }\n\n  /**\n   * Provide a unique id for the node.  This can be used as prefix to\n   * avoid conflicts for `id` attributes.\n   */\n  Node.prototype.unique_id = function() {\n    if ( !this.uid )\n      this.uid = node_id++;\n    return this.uid;\n  }\n\n\n\t\t /*******************************\n\t\t *   HANDLE PROLOG CALLBACKS\t*\n\t\t *******************************/\n\n  function breakpoints(runner) {\n    var data = runner.data(pluginName);\n\n    return $(runner).parents(\".swish\").swish('breakpoints', data.prolog.id);\n  }\n\n  function registerSources(pengine) {\n    var runner = pengine.options.runner;\n    var data   = runner.data(pluginName);\n\n    if ( data.query.editor )\n      $(data.query.editor).prologEditor('pengine', {add: pengine.id});\n  }\n\n  function handleCreate() {\n    var elem = this.pengine.options.runner;\n    var data = elem.data(pluginName);\n    var options = $.extend({}, data.screen);\n    var bps;\n    var resvar = config.swish.residuals_var || \"Residuals\";\n\n    registerSources(this.pengine);\n\n    if ( (bps = breakpoints(elem)) )\n      options.breakpoints = Pengine.stringify(bps);\n    if ( data.chunk )\n      options.chunk = data.chunk;\n\n    this.pengine.ask(\"'$swish wrapper'((\\n\" +\n\t\t     termNoFullStop(data.query.query) +\n\t\t     \"\\n), \"+resvar+\")\", options);\n    elem.prologRunner('setState', \"running\");\n  }\n\n  function handleSuccess() {\n    var elem = this.pengine.options.runner;\n\n    for(var i=0; i<this.data.length; i++) {\n      var answer = this.data[i];\n      if ( this.projection )\n\tanswer.projection = this.projection;\n\n      elem.prologRunner('renderAnswer', answer);\n    }\n    if ( this.time > 0.1 )\t/* more than 0.1 sec. CPU (TBD: preference) */\n      addAnswer(elem, $.el.div(\n\t{class:\"cputime\"},\n\t$.el.span(this.time.toFixed(3),\n\t\t  \" seconds cpu time\")));\n\n    elem.prologRunner('setState', this.more ? \"wait-next\" : \"true\");\n  }\n\n  function handleFailure() {\n    var elem = this.pengine.options.runner;\n\n    addAnswer(elem, $.el.span({class: \"prolog-false\"}, \"false\"));\n    elem.prologRunner('setState', \"false\");\n  }\n\n  function handleStop() {\n    var elem = this.pengine.options.runner;\n\n    elem.prologRunner('setState', \"stopped\");\n  }\n\n  function handlePrompt() {\n    var elem   = this.pengine.options.runner;\n    var data   = elem.data('prologRunner');\n    var prompt = this.data || \"Please enter a Prolog term\";\n\n    data.wait_for = \"term\";\n\n    if ( typeof(prompt) == \"object\" ) {\n      if ( prompt.type == \"trace\" ) {\n\treturn elem.prologRunner('trace', this);\n      } else if ( prompt.type == \"form\" ) {\n\treturn elem.prologRunner('form', this);\n      } else if ( prompt.type == \"jQuery\" ) {\n\treturn elem.prologRunner('jQuery', this);\n      } else if ( prompt.type == \"console\" ) {\n\tprompt = prompt.prompt || \"console> \";\n\tdata.wait_for = \"line\";\n      } else {\n\tprompt = JSON.stringify(prompt);\n      }\n    }\n\n    elem.prologRunner('setPrompt', prompt);\n    elem.prologRunner('setState', \"wait-input\");\n  }\n\n  /**\n   * Make indicated source locations clickable.\n   * @param {String} msg is the HTML error message string\n   * @param {DOM} editor is the source editor; the editor for pengine://\n   * source locations\n   */\n  function clickableLocations(msg, editor) {\n    var pattern = /pengine:\\/\\/[-0-9a-f]{36}\\/src:(\\d+)/;\n\n    return msg.replace(pattern, function(matched) {\n      var line = matched.match(pattern)[1];\n      return \"<a class='goto-error' title='Goto location'>\" +\n               \"<span class='glyphicon glyphicon-hand-right'></span> \"+\n\t       \"<b>line <span class='line'>\"+line+\"</span></b></a>\";\n    });\n  }\n\n  function gotoError(ev) {\n    var a        = $(ev.target).closest(\"a.goto-error\");\n    var ctx      = $(ev.target).closest(\".error-context\");\n    var econtext = ctx.data(\"error_context\");\n\n    if ( a[0] ) {\n      var line = parseInt(a.find(\"span.line\").text());\n      var file = a.find(\"span.file\").text();\n\n      ev.preventDefault();\n\n      if ( file ) {\n\tctx.closest(\"body.swish\")\n\t   .swish('playFile', {file:file, line:line});\n      } else {\n\t$(econtext.editor).prologEditor('gotoLine', line);\n      }\n\n      return false;\n    } else if ( econtext.location.file ) {\n      ctx.closest(\"body.swish\")\n\t .swish('playFile', econtext.location);\n    } else {\n      $(econtext.editor).prologEditor('gotoLine', econtext.location.line);\n    }\n  }\n\n  /**\n   * handle `pengine_output/1`.  Note that compiler warnings and errors\n   * also end up here. If they have a location, this is provided through\n   * this.location, which contains `file`, `line` and `ch`.  We must use\n   * this to indicate the location of the error in CodeMirror.\n   */\n\n  function handleOutput(msg) {\n    var elem = msg.pengine.options.runner;\n    var data = elem.data(pluginName);\n\n    if ( !data )\t\t\t\t/* runner is gone */\n      return;\n\n    if ( typeof(msg.data) == 'string' ) {\n      var econtext = {editor: data.query.editor};\n\n      msg.data = msg.data.replace(/'[-0-9a-f]{36}':/g, \"\")  /* remove module */\n\n      if ( msg.location ) {\n\tvar loc = msg.location;\n\tvar prefix = \"swish://\";\n\tvar span;\n\n\tfunction clickableError() {\n\t  var str = loc.file+\":\"+loc.line+\":\";\n\t  if ( loc.ch ) str += loc.ch+\":\";\n\t  str += \"\\\\s*\";\n\n\t  msg.data = clickableLocations(\n\t\t\t msg.data.replace(new RegExp(str, \"g\"), \"\"),\n\t\t\t econtext.editor);\n\n\t  span = elem.prologRunner('outputHTML', msg.data);\n\n\t  $(span).addClass(\"error-context\");\n\t  $(span).append($.el.span({class:\"glyphicon glyphicon-hand-right\"}));\n\t  $(span).attr(\"title\", \"Error in program.  Click to show in context\");\n\t  $(span).on(\"click\", gotoError);\n\t  $(span).data(\"error_context\", econtext);\n\t}\n\n\tif ( loc.file.startsWith(prefix) ) {\n\t  var file = loc.file.slice(prefix.length);\n\t  econtext.location = {file:file, line:loc.line};\n\t  clickableError();\n\t} else if ( loc.file.startsWith(\"pengine://\") ) {\n\t  econtext.location = {line:loc.line};\n\t  clickableError(data.query.editor);\n\t}\n\tregisterSources(msg.pengine);\n\tmsg.error_context = econtext;\n\tmsg.error_handler = gotoError;\n\t$(\".swish-event-receiver\").trigger(\"source-error\", msg);\n      } else {\n\tvar span = elem.prologRunner('outputHTML',\n\t\t\t\t     clickableLocations(msg.data,\n\t\t\t\t\t\t\tecontext.editor));\n\t$(span).on(\"click\", gotoError);\n\t$(span).data(\"error_context\", econtext);\n      }\n    } else if ( typeof(msg.data) == 'object' ) {\n      elem.prologRunner(msg.data.action, msg.data);\n    } else {\n      console.log(msg.data);\n    }\n    RS(elem).prologRunners('scrollToBottom');\n  }\n\n  function handleError() {\n    var elem = this.pengine.options.runner;\n    var msg;\n\n    if ( this.code == \"too_many_pengines\" ) {\n      this.message = \"Too many open queries.  Please complete some\\n\"+\n\t\t     \"queries by using |Next|, |Stop| or by\\n\"+\n\t\t     \"closing some queries.\";\n    } else if ( typeof(this.data) == 'string' ) {\n      this.message = this.data\n\t\t\t .replace(new RegExp(\"'\"+this.pengine.id+\"':\", 'g'), \"\");\n    } else {\n      this.message = \"Unknown error\";\n    }\n\n    elem.prologRunner('error', this);\n    elem.prologRunner('setState', \"error\");\n  }\n\n  function handleAbort() {\n    var elem = this.pengine.options.runner;\n    var data = elem.data('prologRunner');\n\n    if ( data ) {\n      elem.prologRunner('error', \"** Execution aborted **\");\n      elem.prologRunner('setState', \"aborted\");\n    } else {\n      this.pengine.destroy();\n    }\n  }\n\n  function handlePing() {\n    var elem = this.pengine.options.runner;\n\n    elem.prologRunner('ping', this.data);\n  }\n\n  /**\n   * @param {Object} answer a positive answer from the Pengine\n   * @returns {Boolean} true if the answer has printable part, i.e., no\n   * variable bindings nor residual goals.\n   */\n\n  function answerHasOutput(answer) {\n    return answer.variables.length > 0 || answer.residuals;\n  }\n\n  function termNoFullStop(s) {\n    return String($.trim(s)).replace(/\\.$/, \"\");\n  }\n\n  /**\n   * Run a Prolog query by starting a remote pengine.\n   *\n   * @class prologRunner\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.prologRunner = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\n\n\t\t   /*******************************\n\t\t   *\t       UTIL\t\t*\n\t\t   *******************************/\n\n  function glyphButton(glyph, title) {\n    var btn = $.el.a({href:\"#\", class:\"close btn btn-link btn-sm\",\n\t\t      title:title},\n\t\t     $.el.span({class:\"glyphicon glyphicon-\"+glyph}));\n\n    return btn;\n  }\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2016, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Dialog components to interact with the gitty store.\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('gitty',[ \"jquery\", \"config\", \"form\", \"modal\", \"laconic\" ],\n       function($, config, form, modal) {\n\n(function($) {\n  var pluginName = 'gitty';\n\n  /** @lends $.fn.gitty */\n  var methods = {\n    /**\n     * @param {Object} options\n     * @param {Object.meta} provides the gitty meta-data\n     */\n    _init: function(options) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = elem.data(pluginName)||{};\n\tvar meta = options.meta;\n\tvar tabs;\n\n\tdata.commits = [];\n\tdata.commits[meta.commit] = meta;\n\tdata.commit  = meta.commit;\n\tdata.editor  = options.editor;\n\n\tfunction tab(label, active, id, disabled) {\n\t  var attrs = {role:\"presentation\"};\n\t  var classes = [];\n\t  if ( active   ) classes.push(\"active\");\n\t  if ( disabled ) classes.push(\"disabled\");\n\t  if ( classes != [] )\n\t    attrs.class = classes.join(\" \");\n\t  var elem =\n\t  $.el.li(attrs, $.el.a({href:\"#\"+id, 'data-toggle':\"tab\"}, label));\n\t  return elem;\n\t}\n\n\thenabled = !Boolean(meta.previous);\n\ttabs     = $($.el.div({class:\"tab-content\"}));\n\n\telem.append($.el.ul(\n\t  {class:\"nav nav-tabs\"},\n\t  tab(\"Meta data\", true,  \"gitty-meta-data\"),\n\t  tab(\"History\",   false, \"gitty-history\",  henabled),\n\t  tab(\"Changes\",   false, \"gitty-diff\",     henabled)));\n\telem.append(tabs);\n\n\t/* meta-data tab */\n\ttabs.append($.el.div({ class:\"tab-pane fade in active gitty-meta-data\",\n\t                       id:\"gitty-meta-data\"}));\n\telem.find('[href=\"#gitty-meta-data\"]').on(\"show.bs.tab\", function(ev) {\n\t  elem.gitty('showMetaData');\n\t});\n\n\t/* history tab */\n\ttabs.append($.el.div({ class:\"tab-pane fade gitty-history\",\n\t                       id:\"gitty-history\"}));\n\telem.find('[href=\"#gitty-history\"]').on(\"show.bs.tab\", function(ev) {\n\t  elem.gitty('showHistory');\n\t});\n\n\t/* diff/changes tab */\n\ttabs.append($.el.div({ class:\"tab-pane fade gitty-diff\",\n\t                       id:\"gitty-diff\"}));\n\telem.find('[href=\"#gitty-diff\"]').on(\"show.bs.tab\", function(ev) {\n\t  elem.gitty('showDiff');\n\t});\n\n\telem.data(pluginName, data);\n\n\telem.gitty('showMetaData');\n      });\n    },\n\n    /**\n     * @param is the gitty meta-object\n     * @return {DOM} node holding the title\n     */\n    title: function(meta) {\n      var title = $.el.span(\"File \", $.el.span({class:\"filename\"}, meta.name));\n      if ( meta.symbolic != \"HEAD\" && meta.commit )\n\t$(title).append(\"@\", $.el.span({class:\"sha1 abbrev\"},\n\t\t\t\t       meta.commit.substring(0,7)));\n\n      return title;\n    },\n\n\n\t\t /*******************************\n\t\t *\t     META DATA\t\t*\n\t\t *******************************/\n\n    /**\n     * Show meta data for the current version.  If this is the HEAD,\n     * allow updating the meta-data\n     */\n    showMetaData: function() {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = elem.data(pluginName);\n\tvar tab  = elem.find(\".gitty-meta-data\");\n\tvar formel;\n\tvar meta = data.commits[data.commit];\n\n\tif ( data.metaData == data.commit )\n\t  return;\n\tdata.metaData = data.commit;\n\n\ttab.html(\"\");\n\tformel = $.el.form({class:\"form-horizontal\"},\n\t\t      form.fields.fileName(meta.name, meta.public, meta.example,\n\t\t\t\t\t   true), // disabled\n\t\t      form.fields.title(meta.title),\n\t\t      form.fields.author(meta.author),\n\t\t      form.fields.date(meta.time, \"Date\", \"date\"),\n\t\t      form.fields.tags(meta.tags));\n\n\tif ( meta.symbolic == \"HEAD\" ) {\n\t  $(formel).append(\n\t      form.fields.buttons(\n\t\t{ label: \"Update meta data\",\n\t\t  action: function(ev, newMetaData) {\n\t\t    data.editor.storage('save', newMetaData, \"only-meta-data\");\n\t\t    return false;\n\t\t  }\n\t\t}));\n\t}\n\n\ttab.append(formel);\n      });\n    },\n\n\n\t\t /*******************************\n\t\t *\t     COMMIT LOG\t\t*\n\t\t *******************************/\n\n    /**\n     * Fill the commit log tab\n     */\n    showHistory: function() {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = elem.data(pluginName);\n\tvar tab  = elem.find(\".gitty-history\");\n\tvar meta = data.commits[data.commit];\n\tvar playButton;\n\n\tif ( data.history )\n\t  return;\n\n\ttab.html(\"\");\n\ttab.append($.el.table(\n\t  { class:\"table table-striped table-condensed gitty-history\",\n\t    'data-click-to-select':true,\n\t    'data-single-select':true\n\t  },\n\t  $.el.tr($.el.th(\"Comment\"),\n\t\t  $.el.th(\"Date\"),\n\t\t  $.el.th(\"User\"),\n\t\t  $.el.th(\"Changed\")),\n\t  $.el.tbody()));\n\n\tplayButton = form.widgets.glyphIconButton(\n           \"play\",\n\t   { title:\"Open the highlighted version in SWISH\",\n\t     class:\"btn-primary\"\n\t   });\n\ttab.append(playButton);\n\t$(playButton).on(\"click\", function(ev) {\n\t  var row = elem.find(\"tr.success\");\n\t  if ( row.length == 1 ) {\n\t    var commit = row.data('commit');\n\n\t    if ( data.commits[commit].symbolic == \"HEAD\" )\n\t      file = data.commits[commit].name;\n\t    else\n\t      file = commit;\n\n\t    elem.parents(\".swish\").swish('playFile', file);\n\t    $(\"#ajaxModal\").modal('hide');\n\t  }\n\t  return false;\n\t});\n\n\tvar url  = config.http.locations.web_storage\n\t\t + encodeURI(meta.name);\n\n\t$.ajax({ url: url,\n\t\t contentType: \"application/json\",\n\t\t type: \"GET\",\n\t\t data: { format: \"history\",\n\t\t         depth: 6,\t\t/* might skip last */\n\t\t         to: data.commit\n\t\t       },\n\t\t success: function(reply) {\n\t\t   elem.gitty('fillHistoryTable', reply);\n\t\t   data.history = data.commit;\n\t\t },\n\t\t error: function(jqXHDR) {\n\t\t   modal.ajaxError(jqXHR);\n\t\t }\n\t       });\n      });\n    },\n\n    /**\n     * Fill the history table\n     */\n    fillHistoryTable: function(history) {\n      var gitty = this;\n      var data  = this.data(pluginName);\n      var table = this.find(\".table.gitty-history tbody\");\n\n      for(var i=0; i<history.length; i++) {\n\tvar h = history[i];\n\n\tif ( !data.commits[h.commit] )\n\t  data.commits[h.commit] = h;\n      }\n\n      function changedAttributes(m1) {\n\tvar m2, diff;\n\tvar elem = $.el.span();\n\n\tif ( m1.previous ) {\n\t  if ( (m2 = data.commits[m1.previous]) &&\n\t       (diff = diffMeta(m1, m2)) ) {\n\t    var change = 0;\n\n\t    for( var d in diff ) {\n\t      if ( diff.hasOwnProperty(d) ) {\n\t\tvar ch = (d == \"name\" ? \"forked \"+m2.name : d);\n\t\t$(elem).append((change++ == 0 ? undefined : \", \"),\n\t\t\t       $.el.span({class:\"change-type\"}, ch));\n\t      }\n\t    }\n\t  }\n\t} else {\n\t  $(elem).append(\"initial\");\n\t}\n\n\treturn elem;\n      }\n\n      for(var i=0; i<history.length; i++) {\n\tvar h = history[i];\n\tvar tr;\n\n\tif ( i == history.length-1 &&\n\t     h.previous && !data.commit[h.previous] )\n\t  break;\n\n\tvar attrs = {'data-commit':h.commit};\n\tif ( data.commit == h.commit )\n\t  attrs.class = \"success\";\n\n\ttr = $.el.tr(attrs,\n\t\t     $.el.td({class:\"commit-message\"},\n\t\t\t     h.commit_message||\"No comment\"),\n\t\t     $.el.td({class:\"date\"},\n\t\t\t     new Date(h.time*1000).toLocaleString()),\n\t\t     $.el.td({class:\"author\"},\n\t\t\t     h.author||\"No author\"),\n\t\t     $.el.td({class:\"changes\"},\n\t\t\t     changedAttributes(h)));\n\ttable.append(tr);\n      }\n\n      table.on(\"click\", \"tr\", function(ev) {\n\tvar tr = $(ev.target).parents(\"tr\");\n\tvar commit = tr.data('commit');\n\n\tgitty.gitty('setCommit', commit);\n      });\n    },\n\n    /**\n     * Select a row in the table and set the title.\n     * @param {String} version is the SHA1 of the new version\n     */\n\n    setCommit: function(commit) {\n      var data = this.data(pluginName);\t/* private data */\n      var h2   = this.parent(\".modal-content\").find(\"h2\");\n\n      h2.html(\"\");\n      h2.append(this.gitty('title', data.commits[commit]));\n      this.find(\"tr.success\").removeClass(\"success\");\n      this.find(\"tr[data-commit=\"+commit+\"]\").addClass(\"success\");\n      data.commit = commit;\n\n      return this;\n    },\n\n\t\t /*******************************\n\t\t *\t       DIFFS\t\t*\n\t\t *******************************/\n\n    /**\n     * Show diff of a given file\n     * @param {Object} options\n     * @param {String} options.file is the file for which to show diffs\n     * @param {String} [options.base] is the base SHA1 (defaults to\n     * HEAD^)\n     */\n\n    showDiff: function() {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = elem.data(pluginName);\n\n\tif ( data.diff == data.commit )\n\t  return;\n\n\telem.find(\".gitty-diff\").html(\"\");\n\tvar url  = config.http.locations.web_storage\n\t\t + encodeURI(data.commit);\n\n\t$.ajax({ url: url,\n\t\t contentType: \"application/json\",\n\t\t type: \"GET\",\n\t\t data: { format: \"diff\"\n\t\t },\n\t\t success: function(reply) {\n\t\t   elem.gitty('fillDiff', reply);\n\t\t   data.diff = data.commit;\n\t\t },\n\t\t error: function(jqXHR) {\n\t\t   modal.ajaxError(jqXHR);\n\t\t }\n\t       });\n      });\n    },\n\n    fillDiff: function(diff) {\n      if ( diff.tags ) this.gitty('diffTags', diff.tags);\n      if ( diff.data ) this.gitty('udiffData', diff.data);\n    },\n\n    diffTags: function(diff) {\n      var tab  = this.find(\".gitty-diff\");\n      var div = $($.el.div({class:\"diff-tags\"},\n\t\t\t    $.el.label(\"Tags\")));\n      var span = $($.el.span({class:\"diff-tags\"}));\n\n      div.append(span);\n\n      function addTag(tag, className) {\n\tspan.append($.el.span({class: \"diff-tag \"+className}, tag));\n      }\n\n      if ( diff.deleted.length ) {\n\tspan.append(\"Removed: \");\n\tfor(var i=0; i<diff.deleted.length; i++)\n\t  addTag(diff.deleted[i], \"deleted\");\n      }\n      if ( diff.added.length ) {\n\tspan.append(diff.deleted.length ? \", \" : \"\", \"Added: \");\n\tfor(var i=0; i<diff.added.length; i++)\n\t  addTag(diff.added[i], \"added\");\n      }\n\n      tab.append(div);\n\n      return this;\n    },\n\n    udiffData: function(diff) {\n      var tab  = this.find(\".gitty-diff\");\n      var lines = diff.split(\"\\n\");\n      var pre = $($.el.pre({class:\"udiff\"}));\n\n      for(var i=0; i<lines.length; i++) {\n\tvar line = lines[i];\n\tvar classmap = { '@': 'udiff-hdr',\n\t\t\t ' ': 'udiff-ctx',\n\t\t\t '+': 'udiff-add',\n\t\t\t '-': 'udiff-del'\n\t\t       };\n\tpre.append($.el.span({class:classmap[line.charAt(0)]}, line),\n\t\t   $.el.br());\n      }\n\n      tab.append(pre);\n    }\n  }; // methods\n\n  /**\n   * <Class description>\n   *\n   * @class gitty\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.gitty = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\n  /**\n   * Diff meta data\n   * @returns {Object|null}, where object holds `author`, `title` and/or\n   * `tags`\n   */\n\n  function diffMeta(m1, m2) {\n    var diff = {};\n\n    function diffAttr(a) {\n      if ( (m1[a] || m2[a]) && m1[a] != m2[a] )\n\tdiff[a] = {from: m1[a], to: m2[a]};\n    }\n\n    diffAttr(\"author\");\n    diffAttr(\"title\");\n    diffAttr(\"data\");\n    diffAttr(\"public\");\n    diffAttr(\"example\");\n    diffAttr(\"name\");\n\n    if ( (d=diffTags(m1.tags, m2.tags)) )\n      diff.tags = d;\n\n    return $.isEmptyObject(diff) ? null : diff;\n  }\n\n  function reduceMeta(meta, old) {\n    var r = {};\n\n    for( var k in meta ) {\n      if ( meta.hasOwnProperty(k) ) {\n\tswitch(typeof(meta[k])) {\n\t  case \"object\":\n\t    if ( $.isArray(meta[k]) ) {\n\t      if ( !diffTags(meta[k], old[k]) )\n\t\tcontinue;\n\t    }\n\t    break;\n\t  case \"string\":\n\t  case \"boolean\":\n\t    if ( old[k] == meta[k] )\n\t      continue;\n\t}\n\n\tr[k] = meta[k];\n      }\n    }\n\n    return r;\n  }\n\n  /**\n   * Diff two tag arrays (arrays of strings)\n   * @returns {Object|null}, where object.added is an array with new\n   * tags and object.deleted contains deleted tags.\n   */\n  function diffTags(t1, t2) {\n    var d, diff = {};\n\n    t1 = t1||[];\n    t2 = t2||[];\n\n    function added(t1, t2) {\n      var a = [];\n\n      for(var i=0; i<t2.length; i++) {\n\tif ( t1.indexOf(t2[i]) < 0 )\n\t  a.push(t2[i]);\n      }\n\n      return a;\n    }\n\n    if ( (d=added(t1,t2)).length > 0 ) diff.added = d;\n    if ( (d=added(t2,t1)).length > 0 ) diff.deleted = d;\n\n    return $.isEmptyObject(diff) ? null : diff;\n  }\n\n  return {\n    diffMeta:   diffMeta,\n    reduceMeta: reduceMeta,\n    diffTags:   diffTags\n  };\n});\n\n","/***\nThis is part of jsdifflib v1.0. <http://snowtide.com/jsdifflib>\n\nCopyright (c) 2007, Snowtide Informatics Systems, Inc.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\n\t* Redistributions of source code must retain the above copyright notice, this\n\t\tlist of conditions and the following disclaimer.\n\t* Redistributions in binary form must reproduce the above copyright notice,\n\t\tthis list of conditions and the following disclaimer in the documentation\n\t\tand/or other materials provided with the distribution.\n\t* Neither the name of the Snowtide Informatics Systems nor the names of its\n\t\tcontributors may be used to endorse or promote products derived from this\n\t\tsoftware without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\nEXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\nOF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT\nSHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\nINCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\nTO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\nBUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\nCONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\nANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH\nDAMAGE.\n***/\n/* Author: Chas Emerick <cemerick@snowtide.com> */\nvar __whitespace = {\" \":true, \"\\t\":true, \"\\n\":true, \"\\f\":true, \"\\r\":true};\n\nvar difflib = {\n\tdefaultJunkFunction: function (c) {\n\t\treturn __whitespace.hasOwnProperty(c);\n\t},\n\t\n\tstripLinebreaks: function (str) { return str.replace(/^[\\n\\r]*|[\\n\\r]*$/g, \"\"); },\n\t\n\tstringAsLines: function (str) {\n\t\tvar lfpos = str.indexOf(\"\\n\");\n\t\tvar crpos = str.indexOf(\"\\r\");\n\t\tvar linebreak = ((lfpos > -1 && crpos > -1) || crpos < 0) ? \"\\n\" : \"\\r\";\n\t\t\n\t\tvar lines = str.split(linebreak);\n\t\tfor (var i = 0; i < lines.length; i++) {\n\t\t\tlines[i] = difflib.stripLinebreaks(lines[i]);\n\t\t}\n\t\t\n\t\treturn lines;\n\t},\n\t\n\t// iteration-based reduce implementation\n\t__reduce: function (func, list, initial) {\n\t\tif (initial != null) {\n\t\t\tvar value = initial;\n\t\t\tvar idx = 0;\n\t\t} else if (list) {\n\t\t\tvar value = list[0];\n\t\t\tvar idx = 1;\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t\t\n\t\tfor (; idx < list.length; idx++) {\n\t\t\tvalue = func(value, list[idx]);\n\t\t}\n\t\t\n\t\treturn value;\n\t},\n\t\n\t// comparison function for sorting lists of numeric tuples\n\t__ntuplecomp: function (a, b) {\n\t\tvar mlen = Math.max(a.length, b.length);\n\t\tfor (var i = 0; i < mlen; i++) {\n\t\t\tif (a[i] < b[i]) return -1;\n\t\t\tif (a[i] > b[i]) return 1;\n\t\t}\n\t\t\n\t\treturn a.length == b.length ? 0 : (a.length < b.length ? -1 : 1);\n\t},\n\t\n\t__calculate_ratio: function (matches, length) {\n\t\treturn length ? 2.0 * matches / length : 1.0;\n\t},\n\t\n\t// returns a function that returns true if a key passed to the returned function\n\t// is in the dict (js object) provided to this function; replaces being able to\n\t// carry around dict.has_key in python...\n\t__isindict: function (dict) {\n\t\treturn function (key) { return dict.hasOwnProperty(key); };\n\t},\n\t\n\t// replacement for python's dict.get function -- need easy default values\n\t__dictget: function (dict, key, defaultValue) {\n\t\treturn dict.hasOwnProperty(key) ? dict[key] : defaultValue;\n\t},\t\n\t\n\tSequenceMatcher: function (a, b, isjunk) {\n\t\tthis.set_seqs = function (a, b) {\n\t\t\tthis.set_seq1(a);\n\t\t\tthis.set_seq2(b);\n\t\t}\n\t\t\n\t\tthis.set_seq1 = function (a) {\n\t\t\tif (a == this.a) return;\n\t\t\tthis.a = a;\n\t\t\tthis.matching_blocks = this.opcodes = null;\n\t\t}\n\t\t\n\t\tthis.set_seq2 = function (b) {\n\t\t\tif (b == this.b) return;\n\t\t\tthis.b = b;\n\t\t\tthis.matching_blocks = this.opcodes = this.fullbcount = null;\n\t\t\tthis.__chain_b();\n\t\t}\n\t\t\n\t\tthis.__chain_b = function () {\n\t\t\tvar b = this.b;\n\t\t\tvar n = b.length;\n\t\t\tvar b2j = this.b2j = {};\n\t\t\tvar populardict = {};\n\t\t\tfor (var i = 0; i < b.length; i++) {\n\t\t\t\tvar elt = b[i];\n\t\t\t\tif (b2j.hasOwnProperty(elt)) {\n\t\t\t\t\tvar indices = b2j[elt];\n\t\t\t\t\tif (n >= 200 && indices.length * 100 > n) {\n\t\t\t\t\t\tpopulardict[elt] = 1;\n\t\t\t\t\t\tdelete b2j[elt];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tindices.push(i);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tb2j[elt] = [i];\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tfor (var elt in populardict) {\n\t\t\t\tif (populardict.hasOwnProperty(elt)) {\n\t\t\t\t\tdelete b2j[elt];\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tvar isjunk = this.isjunk;\n\t\t\tvar junkdict = {};\n\t\t\tif (isjunk) {\n\t\t\t\tfor (var elt in populardict) {\n\t\t\t\t\tif (populardict.hasOwnProperty(elt) && isjunk(elt)) {\n\t\t\t\t\t\tjunkdict[elt] = 1;\n\t\t\t\t\t\tdelete populardict[elt];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor (var elt in b2j) {\n\t\t\t\t\tif (b2j.hasOwnProperty(elt) && isjunk(elt)) {\n\t\t\t\t\t\tjunkdict[elt] = 1;\n\t\t\t\t\t\tdelete b2j[elt];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tthis.isbjunk = difflib.__isindict(junkdict);\n\t\t\tthis.isbpopular = difflib.__isindict(populardict);\n\t\t}\n\t\t\n\t\tthis.find_longest_match = function (alo, ahi, blo, bhi) {\n\t\t\tvar a = this.a;\n\t\t\tvar b = this.b;\n\t\t\tvar b2j = this.b2j;\n\t\t\tvar isbjunk = this.isbjunk;\n\t\t\tvar besti = alo;\n\t\t\tvar bestj = blo;\n\t\t\tvar bestsize = 0;\n\t\t\tvar j = null;\n\t\t\tvar k;\n\t\n\t\t\tvar j2len = {};\n\t\t\tvar nothing = [];\n\t\t\tfor (var i = alo; i < ahi; i++) {\n\t\t\t\tvar newj2len = {};\n\t\t\t\tvar jdict = difflib.__dictget(b2j, a[i], nothing);\n\t\t\t\tfor (var jkey in jdict) {\n\t\t\t\t\tif (jdict.hasOwnProperty(jkey)) {\n\t\t\t\t\t\tj = jdict[jkey];\n\t\t\t\t\t\tif (j < blo) continue;\n\t\t\t\t\t\tif (j >= bhi) break;\n\t\t\t\t\t\tnewj2len[j] = k = difflib.__dictget(j2len, j - 1, 0) + 1;\n\t\t\t\t\t\tif (k > bestsize) {\n\t\t\t\t\t\t\tbesti = i - k + 1;\n\t\t\t\t\t\t\tbestj = j - k + 1;\n\t\t\t\t\t\t\tbestsize = k;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tj2len = newj2len;\n\t\t\t}\n\t\n\t\t\twhile (besti > alo && bestj > blo && !isbjunk(b[bestj - 1]) && a[besti - 1] == b[bestj - 1]) {\n\t\t\t\tbesti--;\n\t\t\t\tbestj--;\n\t\t\t\tbestsize++;\n\t\t\t}\n\t\t\t\t\n\t\t\twhile (besti + bestsize < ahi && bestj + bestsize < bhi &&\n\t\t\t\t\t!isbjunk(b[bestj + bestsize]) &&\n\t\t\t\t\ta[besti + bestsize] == b[bestj + bestsize]) {\n\t\t\t\tbestsize++;\n\t\t\t}\n\t\n\t\t\twhile (besti > alo && bestj > blo && isbjunk(b[bestj - 1]) && a[besti - 1] == b[bestj - 1]) {\n\t\t\t\tbesti--;\n\t\t\t\tbestj--;\n\t\t\t\tbestsize++;\n\t\t\t}\n\t\t\t\n\t\t\twhile (besti + bestsize < ahi && bestj + bestsize < bhi && isbjunk(b[bestj + bestsize]) &&\n\t\t\t\t\ta[besti + bestsize] == b[bestj + bestsize]) {\n\t\t\t\tbestsize++;\n\t\t\t}\n\t\n\t\t\treturn [besti, bestj, bestsize];\n\t\t}\n\t\t\n\t\tthis.get_matching_blocks = function () {\n\t\t\tif (this.matching_blocks != null) return this.matching_blocks;\n\t\t\tvar la = this.a.length;\n\t\t\tvar lb = this.b.length;\n\t\n\t\t\tvar queue = [[0, la, 0, lb]];\n\t\t\tvar matching_blocks = [];\n\t\t\tvar alo, ahi, blo, bhi, qi, i, j, k, x;\n\t\t\twhile (queue.length) {\n\t\t\t\tqi = queue.pop();\n\t\t\t\talo = qi[0];\n\t\t\t\tahi = qi[1];\n\t\t\t\tblo = qi[2];\n\t\t\t\tbhi = qi[3];\n\t\t\t\tx = this.find_longest_match(alo, ahi, blo, bhi);\n\t\t\t\ti = x[0];\n\t\t\t\tj = x[1];\n\t\t\t\tk = x[2];\n\t\n\t\t\t\tif (k) {\n\t\t\t\t\tmatching_blocks.push(x);\n\t\t\t\t\tif (alo < i && blo < j)\n\t\t\t\t\t\tqueue.push([alo, i, blo, j]);\n\t\t\t\t\tif (i+k < ahi && j+k < bhi)\n\t\t\t\t\t\tqueue.push([i + k, ahi, j + k, bhi]);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tmatching_blocks.sort(difflib.__ntuplecomp);\n\t\n\t\t\tvar i1 = 0, j1 = 0, k1 = 0, block = 0;\n\t\t\tvar i2, j2, k2;\n\t\t\tvar non_adjacent = [];\n\t\t\tfor (var idx in matching_blocks) {\n\t\t\t\tif (matching_blocks.hasOwnProperty(idx)) {\n\t\t\t\t\tblock = matching_blocks[idx];\n\t\t\t\t\ti2 = block[0];\n\t\t\t\t\tj2 = block[1];\n\t\t\t\t\tk2 = block[2];\n\t\t\t\t\tif (i1 + k1 == i2 && j1 + k1 == j2) {\n\t\t\t\t\t\tk1 += k2;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (k1) non_adjacent.push([i1, j1, k1]);\n\t\t\t\t\t\ti1 = i2;\n\t\t\t\t\t\tj1 = j2;\n\t\t\t\t\t\tk1 = k2;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif (k1) non_adjacent.push([i1, j1, k1]);\n\t\n\t\t\tnon_adjacent.push([la, lb, 0]);\n\t\t\tthis.matching_blocks = non_adjacent;\n\t\t\treturn this.matching_blocks;\n\t\t}\n\t\t\n\t\tthis.get_opcodes = function () {\n\t\t\tif (this.opcodes != null) return this.opcodes;\n\t\t\tvar i = 0;\n\t\t\tvar j = 0;\n\t\t\tvar answer = [];\n\t\t\tthis.opcodes = answer;\n\t\t\tvar block, ai, bj, size, tag;\n\t\t\tvar blocks = this.get_matching_blocks();\n\t\t\tfor (var idx in blocks) {\n\t\t\t\tif (blocks.hasOwnProperty(idx)) {\n\t\t\t\t\tblock = blocks[idx];\n\t\t\t\t\tai = block[0];\n\t\t\t\t\tbj = block[1];\n\t\t\t\t\tsize = block[2];\n\t\t\t\t\ttag = '';\n\t\t\t\t\tif (i < ai && j < bj) {\n\t\t\t\t\t\ttag = 'replace';\n\t\t\t\t\t} else if (i < ai) {\n\t\t\t\t\t\ttag = 'delete';\n\t\t\t\t\t} else if (j < bj) {\n\t\t\t\t\t\ttag = 'insert';\n\t\t\t\t\t}\n\t\t\t\t\tif (tag) answer.push([tag, i, ai, j, bj]);\n\t\t\t\t\ti = ai + size;\n\t\t\t\t\tj = bj + size;\n\t\t\t\t\t\n\t\t\t\t\tif (size) answer.push(['equal', ai, i, bj, j]);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn answer;\n\t\t}\n\t\t\n\t\t// this is a generator function in the python lib, which of course is not supported in javascript\n\t\t// the reimplementation builds up the grouped opcodes into a list in their entirety and returns that.\n\t\tthis.get_grouped_opcodes = function (n) {\n\t\t\tif (!n) n = 3;\n\t\t\tvar codes = this.get_opcodes();\n\t\t\tif (!codes) codes = [[\"equal\", 0, 1, 0, 1]];\n\t\t\tvar code, tag, i1, i2, j1, j2;\n\t\t\tif (codes[0][0] == 'equal') {\n\t\t\t\tcode = codes[0];\n\t\t\t\ttag = code[0];\n\t\t\t\ti1 = code[1];\n\t\t\t\ti2 = code[2];\n\t\t\t\tj1 = code[3];\n\t\t\t\tj2 = code[4];\n\t\t\t\tcodes[0] = [tag, Math.max(i1, i2 - n), i2, Math.max(j1, j2 - n), j2];\n\t\t\t}\n\t\t\tif (codes[codes.length - 1][0] == 'equal') {\n\t\t\t\tcode = codes[codes.length - 1];\n\t\t\t\ttag = code[0];\n\t\t\t\ti1 = code[1];\n\t\t\t\ti2 = code[2];\n\t\t\t\tj1 = code[3];\n\t\t\t\tj2 = code[4];\n\t\t\t\tcodes[codes.length - 1] = [tag, i1, Math.min(i2, i1 + n), j1, Math.min(j2, j1 + n)];\n\t\t\t}\n\t\n\t\t\tvar nn = n + n;\n\t\t\tvar group = [];\n\t\t\tvar groups = [];\n\t\t\tfor (var idx in codes) {\n\t\t\t\tif (codes.hasOwnProperty(idx)) {\n\t\t\t\t\tcode = codes[idx];\n\t\t\t\t\ttag = code[0];\n\t\t\t\t\ti1 = code[1];\n\t\t\t\t\ti2 = code[2];\n\t\t\t\t\tj1 = code[3];\n\t\t\t\t\tj2 = code[4];\n\t\t\t\t\tif (tag == 'equal' && i2 - i1 > nn) {\n\t\t\t\t\t\tgroup.push([tag, i1, Math.min(i2, i1 + n), j1, Math.min(j2, j1 + n)]);\n\t\t\t\t\t\tgroups.push(group);\n\t\t\t\t\t\tgroup = [];\n\t\t\t\t\t\ti1 = Math.max(i1, i2-n);\n\t\t\t\t\t\tj1 = Math.max(j1, j2-n);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tgroup.push([tag, i1, i2, j1, j2]);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif (group && !(group.length == 1 && group[0][0] == 'equal')) groups.push(group)\n\t\t\t\n\t\t\treturn groups;\n\t\t}\n\t\t\n\t\tthis.ratio = function () {\n\t\t\tmatches = difflib.__reduce(\n\t\t\t\t\t\t\tfunction (sum, triple) { return sum + triple[triple.length - 1]; },\n\t\t\t\t\t\t\tthis.get_matching_blocks(), 0);\n\t\t\treturn difflib.__calculate_ratio(matches, this.a.length + this.b.length);\n\t\t}\n\t\t\n\t\tthis.quick_ratio = function () {\n\t\t\tvar fullbcount, elt;\n\t\t\tif (this.fullbcount == null) {\n\t\t\t\tthis.fullbcount = fullbcount = {};\n\t\t\t\tfor (var i = 0; i < this.b.length; i++) {\n\t\t\t\t\telt = this.b[i];\n\t\t\t\t\tfullbcount[elt] = difflib.__dictget(fullbcount, elt, 0) + 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfullbcount = this.fullbcount;\n\t\n\t\t\tvar avail = {};\n\t\t\tvar availhas = difflib.__isindict(avail);\n\t\t\tvar matches = numb = 0;\n\t\t\tfor (var i = 0; i < this.a.length; i++) {\n\t\t\t\telt = this.a[i];\n\t\t\t\tif (availhas(elt)) {\n\t\t\t\t\tnumb = avail[elt];\n\t\t\t\t} else {\n\t\t\t\t\tnumb = difflib.__dictget(fullbcount, elt, 0);\n\t\t\t\t}\n\t\t\t\tavail[elt] = numb - 1;\n\t\t\t\tif (numb > 0) matches++;\n\t\t\t}\n\t\t\t\n\t\t\treturn difflib.__calculate_ratio(matches, this.a.length + this.b.length);\n\t\t}\n\t\t\n\t\tthis.real_quick_ratio = function () {\n\t\t\tvar la = this.a.length;\n\t\t\tvar lb = this.b.length;\n\t\t\treturn _calculate_ratio(Math.min(la, lb), la + lb);\n\t\t}\n\t\t\n\t\tthis.isjunk = isjunk ? isjunk : difflib.defaultJunkFunction;\n\t\tthis.a = this.b = null;\n\t\tthis.set_seqs(a, b);\n\t}\n};\n\n\ndefine(\"difflib\", function(){});\n\n","/*\nThis is part of jsdifflib v1.0. <http://github.com/cemerick/jsdifflib>\n\nCopyright 2007 - 2011 Chas Emerick <cemerick@snowtide.com>. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification, are\npermitted provided that the following conditions are met:\n\n   1. Redistributions of source code must retain the above copyright notice, this list of\n      conditions and the following disclaimer.\n\n   2. Redistributions in binary form must reproduce the above copyright notice, this list\n      of conditions and the following disclaimer in the documentation and/or other materials\n      provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY Chas Emerick ``AS IS'' AND ANY EXPRESS OR IMPLIED\nWARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Chas Emerick OR\nCONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\nCONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF\nADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\nThe views and conclusions contained in the software and documentation are those of the\nauthors and should not be interpreted as representing official policies, either expressed\nor implied, of Chas Emerick.\n*/\ndiffview = {\n\t/**\n\t * Builds and returns a visual diff view.  The single parameter, `params', should contain\n\t * the following values:\n\t *\n\t * - baseTextLines: the array of strings that was used as the base text input to SequenceMatcher\n\t * - newTextLines: the array of strings that was used as the new text input to SequenceMatcher\n\t * - opcodes: the array of arrays returned by SequenceMatcher.get_opcodes()\n\t * - baseTextName: the title to be displayed above the base text listing in the diff view; defaults\n\t *\t   to \"Base Text\"\n\t * - newTextName: the title to be displayed above the new text listing in the diff view; defaults\n\t *\t   to \"New Text\"\n\t * - contextSize: the number of lines of context to show around differences; by default, all lines\n\t *\t   are shown\n\t * - viewType: if 0, a side-by-side diff view is generated (default); if 1, an inline diff view is\n\t *\t   generated\n\t */\n\tbuildView: function (params) {\n\t\tvar baseTextLines = params.baseTextLines;\n\t\tvar newTextLines = params.newTextLines;\n\t\tvar opcodes = params.opcodes;\n\t\tvar baseTextName = params.baseTextName ? params.baseTextName : \"Base Text\";\n\t\tvar newTextName = params.newTextName ? params.newTextName : \"New Text\";\n\t\tvar contextSize = params.contextSize;\n\t\tvar inline = (params.viewType == 0 || params.viewType == 1) ? params.viewType : 0;\n\n\t\tif (baseTextLines == null)\n\t\t\tthrow \"Cannot build diff view; baseTextLines is not defined.\";\n\t\tif (newTextLines == null)\n\t\t\tthrow \"Cannot build diff view; newTextLines is not defined.\";\n\t\tif (!opcodes)\n\t\t\tthrow \"Canno build diff view; opcodes is not defined.\";\n\t\t\n\t\tfunction celt (name, clazz) {\n\t\t\tvar e = document.createElement(name);\n\t\t\te.className = clazz;\n\t\t\treturn e;\n\t\t}\n\t\t\n\t\tfunction telt (name, text) {\n\t\t\tvar e = document.createElement(name);\n\t\t\te.appendChild(document.createTextNode(text));\n\t\t\treturn e;\n\t\t}\n\t\t\n\t\tfunction ctelt (name, clazz, text) {\n\t\t\tvar e = document.createElement(name);\n\t\t\te.className = clazz;\n\t\t\te.appendChild(document.createTextNode(text));\n\t\t\treturn e;\n\t\t}\n\t\n\t\tvar tdata = document.createElement(\"thead\");\n\t\tvar node = document.createElement(\"tr\");\n\t\ttdata.appendChild(node);\n\t\tif (inline) {\n\t\t\tnode.appendChild(document.createElement(\"th\"));\n\t\t\tnode.appendChild(document.createElement(\"th\"));\n\t\t\tnode.appendChild(ctelt(\"th\", \"texttitle\", baseTextName + \" vs. \" + newTextName));\n\t\t} else {\n\t\t\tnode.appendChild(document.createElement(\"th\"));\n\t\t\tnode.appendChild(ctelt(\"th\", \"texttitle\", baseTextName));\n\t\t\tnode.appendChild(document.createElement(\"th\"));\n\t\t\tnode.appendChild(ctelt(\"th\", \"texttitle\", newTextName));\n\t\t}\n\t\ttdata = [tdata];\n\t\t\n\t\tvar rows = [];\n\t\tvar node2;\n\t\t\n\t\t/**\n\t\t * Adds two cells to the given row; if the given row corresponds to a real\n\t\t * line number (based on the line index tidx and the endpoint of the \n\t\t * range in question tend), then the cells will contain the line number\n\t\t * and the line of text from textLines at position tidx (with the class of\n\t\t * the second cell set to the name of the change represented), and tidx + 1 will\n\t\t * be returned.\t Otherwise, tidx is returned, and two empty cells are added\n\t\t * to the given row.\n\t\t */\n\t\tfunction addCells (row, tidx, tend, textLines, change) {\n\t\t\tif (tidx < tend) {\n\t\t\t\trow.appendChild(telt(\"th\", (tidx + 1).toString()));\n\t\t\t\trow.appendChild(ctelt(\"td\", change, textLines[tidx].replace(/\\t/g, \"\\u00a0\\u00a0\\u00a0\\u00a0\")));\n\t\t\t\treturn tidx + 1;\n\t\t\t} else {\n\t\t\t\trow.appendChild(document.createElement(\"th\"));\n\t\t\t\trow.appendChild(celt(\"td\", \"empty\"));\n\t\t\t\treturn tidx;\n\t\t\t}\n\t\t}\n\t\t\n\t\tfunction addCellsInline (row, tidx, tidx2, textLines, change) {\n\t\t\trow.appendChild(telt(\"th\", tidx == null ? \"\" : (tidx + 1).toString()));\n\t\t\trow.appendChild(telt(\"th\", tidx2 == null ? \"\" : (tidx2 + 1).toString()));\n\t\t\trow.appendChild(ctelt(\"td\", change, textLines[tidx != null ? tidx : tidx2].replace(/\\t/g, \"\\u00a0\\u00a0\\u00a0\\u00a0\")));\n\t\t}\n\t\t\n\t\tfor (var idx = 0; idx < opcodes.length; idx++) {\n\t\t\tcode = opcodes[idx];\n\t\t\tchange = code[0];\n\t\t\tvar b = code[1];\n\t\t\tvar be = code[2];\n\t\t\tvar n = code[3];\n\t\t\tvar ne = code[4];\n\t\t\tvar rowcnt = Math.max(be - b, ne - n);\n\t\t\tvar toprows = [];\n\t\t\tvar botrows = [];\n\t\t\tfor (var i = 0; i < rowcnt; i++) {\n\t\t\t\t// jump ahead if we've alredy provided leading context or if this is the first range\n\t\t\t\tif (contextSize && opcodes.length > 1 && ((idx > 0 && i == contextSize) || (idx == 0 && i == 0)) && change==\"equal\") {\n\t\t\t\t\tvar jump = rowcnt - ((idx == 0 ? 1 : 2) * contextSize);\n\t\t\t\t\tif (jump > 1) {\n\t\t\t\t\t\ttoprows.push(node = document.createElement(\"tr\"));\n\t\t\t\t\t\t\n\t\t\t\t\t\tb += jump;\n\t\t\t\t\t\tn += jump;\n\t\t\t\t\t\ti += jump - 1;\n\t\t\t\t\t\tnode.appendChild(telt(\"th\", \"...\"));\n\t\t\t\t\t\tif (!inline) node.appendChild(ctelt(\"td\", \"skip\", \"\"));\n\t\t\t\t\t\tnode.appendChild(telt(\"th\", \"...\"));\n\t\t\t\t\t\tnode.appendChild(ctelt(\"td\", \"skip\", \"\"));\n\t\t\t\t\t\t\n\t\t\t\t\t\t// skip last lines if they're all equal\n\t\t\t\t\t\tif (idx + 1 == opcodes.length) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\ttoprows.push(node = document.createElement(\"tr\"));\n\t\t\t\tif (inline) {\n\t\t\t\t\tif (change == \"insert\") {\n\t\t\t\t\t\taddCellsInline(node, null, n++, newTextLines, change);\n\t\t\t\t\t} else if (change == \"replace\") {\n\t\t\t\t\t\tbotrows.push(node2 = document.createElement(\"tr\"));\n\t\t\t\t\t\tif (b < be) addCellsInline(node, b++, null, baseTextLines, \"delete\");\n\t\t\t\t\t\tif (n < ne) addCellsInline(node2, null, n++, newTextLines, \"insert\");\n\t\t\t\t\t} else if (change == \"delete\") {\n\t\t\t\t\t\taddCellsInline(node, b++, null, baseTextLines, change);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// equal\n\t\t\t\t\t\taddCellsInline(node, b++, n++, baseTextLines, change);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tb = addCells(node, b, be, baseTextLines, change);\n\t\t\t\t\tn = addCells(node, n, ne, newTextLines, change);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (var i = 0; i < toprows.length; i++) rows.push(toprows[i]);\n\t\t\tfor (var i = 0; i < botrows.length; i++) rows.push(botrows[i]);\n\t\t}\n\t\t\n\t\trows.push(node = ctelt(\"th\", \"author\", \"diff view generated by \"));\n\t\tnode.setAttribute(\"colspan\", inline ? 3 : 4);\n\t\tnode.appendChild(node2 = telt(\"a\", \"jsdifflib\"));\n\t\tnode2.setAttribute(\"href\", \"http://github.com/cemerick/jsdifflib\");\n\t\t\n\t\ttdata.push(node = document.createElement(\"tbody\"));\n\t\tfor (var idx in rows) rows.hasOwnProperty(idx) && node.appendChild(rows[idx]);\n\t\t\n\t\tnode = celt(\"table\", \"diff\" + (inline ? \" inlinediff\" : \"\"));\n\t\tfor (var idx in tdata) tdata.hasOwnProperty(idx) && node.appendChild(tdata[idx]);\n\t\treturn node;\n\t}\n};\n\n\ndefine(\"diffview\", function(){});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2015-2016, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * View diffs between versions\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('diff',[ \"jquery\", \"difflib\", \"diffview\" ],\n       function() {\n\n(function($) {\n  var pluginName = 'diff';\n\n  /** @lends $.fn.diff */\n  var methods = {\n    /**\n     * Render diff between two strings in the target element (must\n     * be a `<div>`).\n     *\n     * @param {Object} [options]\n     * @param {String} [base] Old version\n     * @param {String} [head] New version\n     * @param {String} [baseName=\"Base text\"] Name for old version\n     * @param {String} [headName=\"Current text\"] Name for current version\n     * @param {Number} [context=3] Number of context lines\n     */\n    _init: function(options) {\n      return this.each(function() {\n\tvar base        = difflib.stringAsLines(options.base);\n\tvar newtxt      = difflib.stringAsLines(options.head);\n\tvar sm          = new difflib.SequenceMatcher(base, newtxt);\n\tvar opcodes     = sm.get_opcodes();\n\tvar contextSize = options.contextSize == undefined\n\t\t\t\t? 3 : options.contextSize;\n\n\tthis.appendChild(diffview.buildView(\n\t  { baseTextLines: base,\n\t    newTextLines: newtxt,\n\t    opcodes: opcodes,\n\t    baseTextName: options.baseName || \"Base text\",\n\t    newTextName:  options.headName || \"Current text\",\n\t    contextSize: contextSize,\n\t    viewType: $(\"inline\").checked ? 1 : 0\n\t  }));\n      });\n    }\n  }; // methods\n\n  /**\n   * This class is a jQuery wrapper around\n   *\n   * @class diff\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.diff = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2017, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Defines the interaction with the `File` menu and gitty storage\n * module of the server.\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('storage',[ \"jquery\", \"config\", \"modal\", \"form\", \"gitty\",\n\t \"history\", \"tabbed\", \"utils\",\n\t \"laconic\", \"diff\"\n       ],\n       function($, config, modal, form, gitty, history, tabbed, utils) {\n\n(function($) {\n  var pluginName = 'storage';\n\n  var defaults = {\n    typeName: \"program\",\n    is_clean: true,\n    markClean: function(clean) {}\n  }\n\n  /** @lends $.fn.storage */\n  var methods = {\n    /**\n     * @param {Object} options\n     * @param {Function} options.setValue sets the new document value\n     * @param {Function} options.getValue gets the current document value\n     * @param {Function} options.changeGen identifies the current state\n     * @param {String}   options.cleanData identifies the clean state\n     * @param {String}\t options.cleanCheckpoint is the action that\n     * caused the clean state\n     * @param {Any}\t options.cleanGeneration identifies the clean\n     * state.\n     */\n    _init: function(options) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = $.extend({}, defaults, options);\n\n\telem.data(pluginName, data);\t/* store with element */\n\telem.addClass(\"storage\");\n\telem.storage('update_tab_title');\n\n\t/**\n\t * Execute a method on the storage plugin. This particularly\n\t * avoids handling events that have bubbled up from children\n\t * that have a storage plugin attached, which may happen in\n\t * notebooks.\n\t */\n\tfunction onStorage(ev, method) {\n\t  var target = $(ev.target);\n\n\t  if ( target.hasClass(\"storage\") && target.is(\":visible\") ) {\n\t    var rc = target.storage.apply(\n\t\t       target,\n\t\t       Array.prototype.slice.call(arguments, 1));\n\t    if ( rc == \"propagate\" )\n\t      return;\n\t  }\n\t  ev.stopPropagation();\n\t}\n\n\telem.on(\"save\", function(ev, data) {\n\t  onStorage(ev, 'save', data);\n\t});\n\telem.on(\"download\", function(ev) {\n\t  onStorage(ev, 'download');\n\t});\n\telem.on(\"fileInfo\", function(ev) {\n\t  onStorage(ev, 'info');\n\t});\n\telem.on(\"diff\", function(ev) {\n\t  onStorage(ev, 'diff');\n\t});\n\telem.on(\"revert\", function(ev) {\n\t  onStorage(ev, 'revert');\n\t});\n\telem.on(\"reload\", function(ev) {\n\t  onStorage(ev, 'reload');\n\t});\n\telem.on(\"chat-about-file\", function(ev) {\n\t  onStorage(ev, 'chat');\n\t});\n\telem.on(\"follow-file\", function(ev) {\n\t  onStorage(ev, 'follow');\n\t});\n\telem.on(\"activate-tab\", function(ev) {\n\t\t\t\t\t\t/* TBD: What exactly? */\n\t});\n\telem.on(\"data-is-clean\", function(ev, clean) {\n\t  elem.storage('markClean', clean);\n\t});\n\telem.on(\"fullscreen\", function(ev, val) {\n\t  if ( !val )\n\t    elem.storage('update_tab_title');\n\t});\n\n\t$(window).bind(\"beforeunload\", function(ev) {\n\t  return elem.storage('unload', \"beforeunload\", ev);\n\t});\n\n\telem.storage('chat', (data.meta||{}).chat||'update');\n      });\n    },\n\n    /**\n     * @returns {Boolean} `true` if the storage can represent the\n     * requested type\n     */\n    supportsType: function(src) {\n      var data = this.data(pluginName);\n      var type = tabbed.tabTypes[data.typeName];\n\n      if ( typeof(src) == \"string\" )\n\tsrc = {data:src};\n\n      if ( (src.meta && src.meta.name) || src.url )\n      { var name = (src.meta && src.meta.name) ? src.meta.name : src.url;\n\tvar ext  = name.split('.').pop();\n\n\tif ( ext != type.dataType )\n\t  return false;\n      }\n\n      return true;\n    },\n\n    /**\n     * @param {String|Object} src becomes the new contents of the editor\n     * @param {String} src.data contains the data in the case that\n     * `src` is an object.\n     * @return {Object|String} The string `\"propagate\"` is\n     * returned if the provided src does not match the supported type.\n     */\n    setSource: function(src) {\n      var data = this.data(pluginName);\n\n      if ( typeof(src) == \"string\" )\n\tsrc = {data:src};\n\n      if ( !this.storage('supportsType', src) )\n\treturn undefined;\n\n      if ( this.storage('unload', \"setSource\") == false )\n\treturn false;\n\n      if ( src.meta ) {\n\tdata.file = src.meta.name;\n\tdata.meta = src.meta;\n\tdata.url  = null;\n\tif ( src.meta.symbolic == \"HEAD\" )\n\t  src.url = config.http.locations.web_storage + src.meta.name;\n      } else {\n\tdata.file = null;\n\tdata.meta = null;\n      }\n      data.url     = src.url;\n      data.st_type = src.st_type;\n      data.chats   = src.chats;\n\n      data.setValue(src);\n      data.cleanGeneration = data.changeGen();\n      data.cleanData       = data.getValue();\n      data.cleanCheckpoint = src.cleanCheckpoint || \"load\";\n\n      this.storage('update_tab_title');\n\n      if ( !src.url       ) src.url = config.http.locations.swish;\n      if ( !src.noHistory ) history.push(src);\n\n      this.storage('chat', src.chat||(src.meta||{}).chat||'update');\n      $(\".storage\").storage('chat_status', true);\n\n      return this;\n    },\n\n    /**\n     * Update the label and icon shown in the tab\n     */\n    update_tab_title: function(action) {\n      return this.each(function() {\n\tvar elem  = $(this);\n\tvar docid = elem.storage('docid');\n\n\tif ( action == 'chats++' ) {\n\t  elem.tabbed('chats++', docid);\n\t} else {\n\t  var data  = elem.data(pluginName);\n\t  var type  = tabbed.tabTypes[data.typeName];\n\n\t  var title = (filebase(data.file) ||\n\t\t       filebase(basename(data.url)) ||\n\t\t       type.label);\n\n\t  if ( docid && data.chats )\n\t    data.chats.docid = docid;\n\n\t  elem.tabbed('title', title, type.dataType);\n\t  elem.tabbed('chats', data.chats);\n\t}\n      });\n    },\n\n    /**\n     * Load document from the server.\n     */\n    load: function(file) {\n      if ( file ) {\n\tvar that = this;\n\tvar options = this.data(pluginName);\n\n\t$.ajax({ url: config.http.locations.web_storage + file,\n\t\t dataType: \"text\",\n\t\t success: function(data) {\n\t\t   that.storage('setSource',\n\t\t\t\t{ data: data,\n\t\t\t\t  meta: { name:file\n\t\t\t\t        }\n\t\t\t\t});\n\t\t },\n\t\t error: function(jqXHDR) {\n\t\t   modal.ajaxError(jqXHR);\n\t\t }\n\t       });\n      }\n      return this;\n    },\n\n    /**\n     * Revert to upstream version\n     */\n    revert: function() {\n      var data = this.data(pluginName);\n\n      data.setValue(data.cleanData);\n      data.cleanGeneration = data.changeGen();\n      data.markClean(true);\n      return this;\n    },\n\n    /**\n     * Reload from server\n     */\n    reload: function() {\n      var elem = this;\n      var data = elem.data(pluginName);\n      var url  = config.http.locations.web_storage +\n\t\t encodeURI(data.file);\n\n      $.ajax({ url: url,\n\t       type: \"GET\",\n\t       data: { format: \"json\" },\n\t       success: function(reply) {\n\t\t reply.url = url;\n\t\t reply.st_type = \"gitty\";\n\t\t reply.noHistory = true;\n\t\t elem.storage('setSource', reply);\n\t\t $(\"#chat\").trigger('send',\n\t\t\t\t    { type:'reloaded',\n\t\t\t\t      file:data.file,\n\t\t\t\t      commit:reply.meta.commit\n\t\t\t\t    });\n\t       },\n\t       error: function(jqXHR) {\n\t\t modal.ajaxError(jqXHR);\n\t       }\n\t     });\n\n      return this;\n    },\n\n    /**\n     * Save the current document to the server.  Depending on the\n     * arguments, this function implements several forms of saving:\n     *\n     *   - Without arguments arguments, it implements \"Save\".\n     *   - With (\"as\"), it implements \"Save as\", which opens a\n     *     dialog which calls this method again, but now with\n     *     meta-data in the first argument.\n     *   - With ({...}) it performs the save operation of \"Save as\"\n     *   - With ({...}, \"only-meta-data\") it only updates the meta\n     *     data on the server.\n     *\n     * @param {Object} [meta] provides additional meta-information.\n     * Currently defined fields are `author`, `email`,\n     * `title`, `keywords` and `description`. Illegal fields are ignored\n     * by the server.\n     * @param {String} [what] If `\"only-meta-data\"`, only the meta-data\n     * is updated.\n     */\n    save: function(meta, what) {\n      var data   = this.data(pluginName);\n      var type   = tabbed.tabTypes[data.typeName];\n      var url    = config.http.locations.web_storage;\n      var method = \"POST\";\n      var elem   = this;\n      var post;\n\n      if ( (data.st_type == \"filesys\" || data.st_type == \"external\") && data.url )\n\treturn this.storage('saveURL');\n\n      if ( meta == \"as\" ) {\n\tthis.storage('saveAs');\n\treturn this;\n      }\n\n      if ( data.file &&\n\t   !(meta && meta.default) &&\n\t   (!meta || meta.name == data.file) ) {\n\turl += encodeURI(data.file);\n\tmethod = \"PUT\";\n      }\n\n      if ( what == \"only-meta-data\" ) {\n\tmeta = gitty.reduceMeta(meta, data.meta)\n\tif ( $.isEmptyObject(meta) ) {\n\t  alert(\"No change\");\n\t  return;\n\t}\n\tpost = { update: \"meta-data\" };\n      } else if ( method == \"POST\" ) {\n\tpost = { data: data.getValue(),\n\t\t type: type.dataType\n\t       };\n      } else {\n\tif ( !data.isClean(data.cleanGeneration) ) {\n\t  post = { data: data.getValue(),\n\t\t   type: type.dataType\n\t\t };\n\t} else if ( gitty.diffTags(data.meta.tags, meta.tags) == null ) {\n\t  alert(\"No change\");\n\t  return;\n\t}\n      }\n\n      if ( meta )\n\tpost.meta = meta;\n      if ( data.meta )\n\tpost.previous = data.meta.commit;\n\n      $.ajax({ url: url,\n               dataType: \"json\",\n\t       contentType: \"application/json\",\n\t       type: method,\n\t       data: JSON.stringify(post),\n\t       success: function(reply) {\n\t\t if ( reply.error ) {\n\t\t   modal.alert(errorString(\"Could not save\", reply));\n\t\t } else {\n\t\t   if ( data.meta &&\n\t\t\tdata.meta.example != reply.meta.example ) {\n\t\t     elem.closest(\".swish\").trigger('examples-changed');\n\t\t   }\n\t\t   data.file = reply.file;\n\t\t   data.meta = reply.meta;\n\t\t   data.st_type = \"gitty\";\n\t\t   data.cleanGeneration = data.changeGen();\n\t\t   data.cleanData       = data.getValue();\n\t\t   data.cleanCheckpoint = \"save\";\n\t\t   data.markClean(true);\n\t\t   modal.feedback({ html: \"Saved\",\n\t\t\t\t    owner: elem\n\t\t                  });\n\n\t\t   if ( method == \"POST\" )\n\t\t     data.chats = {\t\t/* forked file has no chats */\n\t\t       docid: elem.storage('docid'),\n\t\t       total: 0\n\t\t     };\n\t\t   elem.storage('update_tab_title');\n\t\t   elem.storage('chat', (data.meta||{}).chat||'update');\n\t\t   $(\".storage\").storage('chat_status', true);\n\t\t   history.push(reply);\n\t\t }\n\t       },\n\t       error: function(jqXHR, textStatus, errorThrown) {\n\t\t if ( jqXHR.status == 409 ) {\n\t\t   elem.storage('resolveEditConflict',\n\t\t\t\tJSON.parse(jqXHR.responseText));\n\t\t } else if ( jqXHR.status == 403 ) {\n\t\t   modal.alert(\"Permission denied.  Please try a different name\");\n\t\t } else {\n\t\t   alert('Save failed; click \"ok\" to try again');\n\t\t   elem.storage('saveAs');\n\t\t }\n\t       }\n\t     });\n\n      return this;\n    },\n\n    /**\n     * Provide a Save As dialog\n     */\n    saveAs: function(options) {\n      var data = this.data(pluginName);\n      var meta    = data.meta||{};\n      var editor  = this;\n      var update  = Boolean(data.file);\n      var fork    = data.meta && meta.symbolic != \"HEAD\" && !meta.default;\n      var type    = tabbed.tabTypes[data.typeName];\n      var profile = $(\"#login\").login('get_profile',\n\t\t\t\t      [ \"display_name\", \"avatar\", \"email\",\n\t\t\t\t\t\"identity\"\n\t\t\t\t      ]);\n      var author  = profile.display_name;\n      var modify  = meta.modify;\n      var canmodify;\n\n      if ( meta.public === undefined )\n\tmeta.public = true;\n\n      if ( profile.identity ) {\n\tif ( !modify )\n\t  modify = [\"login\", \"owner\"];\n      } else\n      { modify = [\"any\", \"login\", \"owner\"];\n      }\n\n      canmodify = ( profile.identity == meta.identity ||\n\t\t    (profile.identity && !(meta.identity||meta.user)) );\n\n      options = options||{};\n\n      function saveAsBody() {\n\tthis.append($.el.form(\n          { class:\"form-horizontal\"},\n\t    form.fields.hidden(\"identity\", profile.identity),\n\t    form.fields.hidden(\"default\", meta.default),\n\t    form.fields.hidden(\"chat\", meta.chat),\n\t    profile.identity ? undefined :\n\t\t\t       form.fields.hidden(\"avatar\", profile.avatar),\n\t    form.fields.fileName(fork ? null: data.file,\n\t\t\t\t meta.public, meta.example),\n\t    form.fields.title(meta.title),\n\t    form.fields.author(author, profile.identity),\n\t    update ? form.fields.commit_message() : undefined,\n\t    form.fields.tags(meta.tags),\n\t    form.fields.modify(modify, canmodify),\n\t    form.fields.follow(profile.email),\n\t    form.fields.buttons(\n\t      { label: fork   ? \"Fork \"+type.label :\n\t\t       update ? \"Update \"+type.label :\n\t\t\t\t\"Save \"+type.label,\n\t\taction: function(ev, as) {\n\t\t\t  editor.storage('save', as);\n\t\t\t  return false;\n\t\t\t}\n\t      })));\n      }\n\n      form.showDialog({ title: options.title ? options.title :\n\t\t\t       fork   ? \"Fork from \"+meta.commit.substring(0,7) :\n\t\t\t       update ? \"Save new version\" :\n\t\t\t                \"Save \"+type.label+\" as\",\n\t\t\tbody:  saveAsBody\n\t\t      });\n\n      return this;\n    },\n\n    /**\n     * Save data to the URL it was loaded from.\n     * FIXME: feedback, allow recompilation (if Prolog source)\n     */\n    saveURL: function() {\n      var options = this.data(pluginName);\n      var data = options.getValue();\n      var type = tabbed.type(options.url)||{};\n      var elem = this;\n\n      if ( options.isClean(options.cleanGeneration) ) {\n\talert(\"No change\");\n\treturn this;\n      }\n\n      $.ajax({ url: options.url,\n               dataType: \"json\",\n\t       contentType: type.contentType||\"text/plain\",\n\t       type: \"PUT\",\n\t       data: data,\n\t       success: function(reply) {\n\t\t if ( reply.error ) {\n\t\t   modal.alert(errorString(\"Could not save\", reply));\n\t\t } else {\n\t\t   options.cleanGeneration = options.changeGen();\n\t\t   options.cleanData       = options.getValue();\n\t\t   options.cleanCheckpoint = \"save\";\n\t\t   options.markClean(true);\n\t\t   modal.feedback({ html: \"Saved\",\n\t\t\t\t    owner: elem\n\t\t                  });\n\t\t }\n\t       },\n\t       error: function(jqXHR) {\n\t\t if ( jqXHR.status == 403 ) {\n\t\t   var url = options.url;\n\t\t   delete(options.meta);\n\t\t   delete(options.st_type);\n\t\t   delete(options.url);\n\t\t   elem.storage('saveAs', {\n\t\t     title: \"<div class='warning'>Could not save to \"+url+\n\t\t\t    \"</div> Save a copy as\"\n\t\t   });\n\t\t } else\n\t\t { modal.ajaxError(jqXHR);\n\t\t }\n\t       }\n\t     });\n\n      return this;\n    },\n\n\t\t /*******************************\n\t\t *\t    EDIT CONFLICTS\t*\n\t\t *******************************/\n\n    resolveEditConflict: function(options) {\n      var bdiv;\n\n      options.storage = this;\n\n      function body() {\n\tvar elem = $(this);\n\n\telem.addClass(\"edit-conflict\");\n\n\tfunction tabLabel(label, active, id, disabled) {\n\t  var attrs = {role:\"presentation\"};\n\t  var classes = [];\n\t  if ( active   ) classes.push(\"active\");\n\t  if ( disabled ) classes.push(\"disabled\");\n\t  if ( classes != [] )\n\t    attrs.class = classes.join(\" \");\n\t  var elem =\n\t  $.el.li(attrs, $.el.a({href:\"#\"+id, 'data-toggle':\"tab\"}, label));\n\t  return elem;\n\t}\n\n\ttabs = $($.el.div({class:\"tab-content\"}));\n\telem.append($.el.ul(\n\t  {class:\"nav nav-tabs\"},\n\t  tabLabel(\"My edits\",    true,  \"merge-my-edits\"),\n\t  tabLabel(\"Their edits\", false, \"merge-server-edits\"),\n\t  tabLabel(\"Conflicts\",   false, \"merge-conflicts\")));\n\telem.append(tabs);\n\n\tfunction tabContent(id, cls) {\n\t  tabs.append($.el.div({class:\"tab-pane fade \"+id+\" \"+cls, id:id}));\n\t  elem.find('[href=\"#'+id+'\"]').on(\"show.bs.tab\", function(ev) {\n\t    elem.storage(id);\n\t  });\n\t}\n\n\ttabContent(\"merge-my-edits\",    \"in active\");\n\ttabContent(\"merge-server-edits\", \"\");\n\ttabContent(\"merge-conflicts\",   \"\");\n\n\telem.data(\"edit-conflict\", options);\n\n\telem.storage('merge-my-edits');\n\n\telem.append(bdiv =\n\t  $.el.div({class:\"form-group\"},\n\t\t   $.el.button({name:\"merge\",\n\t\t\t\tclass:\"btn btn-primary\"},\n\t\t\t       \"Merge\"),\n\t\t   $.el.button({name:\"discard-my-edits\",\n\t\t\t\tclass:\"btn btn-primary\"},\n\t\t\t       \"Discard my changes\"),\n\t\t   $.el.button({name:\"discard-server-edits\",\n\t\t\t\tclass:\"btn btn-primary\"},\n\t\t\t       \"Discard changes on server\"),\n\t\t   $.el.button({name:\"cancel\",\n\t\t\t\tclass:\"btn btn-danger\",\n\t\t\t\t'data-dismiss':\"modal\"},\n\t\t\t       \"Cancel\")));\n\n\n\t$(bdiv).on(\"click\", \"button\", function(ev) {\n\t  elem.storage('editConflictAction', $(ev.target).attr(\"name\"));\n\t  $(ev.target).parents(\".modal\").modal('hide');\n\t  ev.preventDefault();\n\t  return false;\n\t});\n      }\n\n      form.showDialog({ title: \"Edit conflict\",\n\t\t\tbody: body\n\t\t      });\n\n      return this;\n    },\n\n    'merge-my-edits': function() {\n      var data = $(this).data(\"edit-conflict\");\n      $(this).find(\".merge-my-edits\")\n        .empty()\n        .append(udiff(data.edit.me.data));\n    },\n\n    'merge-server-edits': function() {\n      var data = $(this).data(\"edit-conflict\");\n      $(this).find(\".merge-server-edits\")\n        .empty()\n        .append(udiff(data.edit.server.data));\n    },\n\n    'merge-conflicts': function() {\n      var data = $(this).data(\"edit-conflict\");\n      var tab  = $(this).find(\".merge-conflicts\");\n\n      tab.empty();\n      if ( data.patch_status != 0 ) {\n\ttab.append(editConflicts(data.merged));\n      } else {\n\ttab.html(\"No merge conflicts\");\n      }\n    },\n\n    editConflictAction: function(action) {\n      var options = $(this).data(\"edit-conflict\");\n      var data = $(options.storage).data(pluginName);\n\n      if ( action == \"merge\" ) {\n\tdata.setValue(options.merged);\n\tdata.meta.commit = options.edit.server.to.commit;\n      } else if ( action == \"discard-my-edits\" ) {\n\t$(options.storage).storage('reload');\n      } else if ( action == \"discard-server-edits\" ) {\n\tvar data = $(options.storage).data(pluginName);\n\tdata.meta.commit = options.edit.server.to.commit;\n      }\n    },\n\n\n\t\t /*******************************\n\t\t *\t   DOWNLOADING\t\t*\n\t\t *******************************/\n\n    download: function() {\n      var options = this.data(pluginName);\n      var type    = tabbed.tabTypes[options.typeName];\n      var data    = options.getValue();\n      var href    = \"data:text/plain;charset=UTF-8,\"\n\t          + encodeURIComponent(data);\n\n      var a = $.el.a({ href:href,\n\t\t       download:options.file||(\"swish.\"+type.dataType)\n\t\t     });\n      this.append(a);\n      a.click();\n      $(a).remove();\n\n      return this;\n    },\n\n    /**\n     * @param {Object} [options]\n     * @param {String|Boolean} [options.data=false] if `true`, always\n     * include the content of the storage.  If `\"if_modified\"`, only\n     * include the content if it is modified.\n     * @param {String} [options.type] if provided, only return objects\n     * associated with files with the given extension.\n     * @return {Array.Object}\n     */\n    getData: function(options) {\n      var result = [];\n\n      options = options||{};\n\n      this.each(function() {\n\tvar data = $(this).data(pluginName);\n\tvar obj = {};\n\n\tobj.type = data.type;\n\tif ( data.url ) obj.url = data.url;\n\tif ( data.meta ) {\n\t  function copyMeta(name) {\n\t    if ( data.meta[name] )\n\t      obj[name] = data.meta[name];\n\t  }\n\n\t  copyMeta(\"name\");\n\t  copyMeta(\"path\");\n\t  copyMeta(\"modified\");\n\t  copyMeta(\"loaded\");\n\t  copyMeta(\"modified_since_loaded\");\n\t  copyMeta(\"module\");\n\t}\n\n\tif ( $(this).closest(\".tab-pane.active\").length == 1 )\n\t  obj.active = true;\n\n\tif ( !options.type ||\n\t     ( options.name &&\n\t       options.name.split(\".\").pop() == options.type ) ) {\n\t  if ( options.data ) {\n\t    var value = data.getValue();\n\n\t    obj.modified = (value != data.cleanData);\n\t    if ( options.data == true ||\n\t\t (obj.modified && options.data == \"if_modified\") )\n\t      obj.data = value;\n\t  }\n\n\t  result.push(obj);\n        }\n      });\n\n      return result;\n    },\n\n    /**\n     * @return {jQuery|undefined} the jQuery storage element that\n     * matches `to`\n     */\n    match: function(to) {\n      for(var k=0; k<this.length; k++) {\n\tme = $(this[k]);\n\tvar data = me.data(pluginName);\n\n\tif ( to.file && to.file == data.file )\n\t  return me;\n\tif ( to.url && to.url == data.url )\n\t  return me;\n      }\n    },\n\n    /**\n     * Expose associateted tab\n     * @return {jQuery|undefined} storage plugin if tab could be\n     * exposed.\n     */\n    expose: function(reason) {\n      var tab = this.closest(\".tab-pane\");\n      if ( tab.length == 1 ) {\n\tvar tabbed = tab.closest(\".tabbed\");\n\ttabbed.tabbed('show', tab.attr('id'));\n\tif ( reason )\n\t  modal.feedback({ html: reason,\n\t                   owner: this\n\t                 });\n\n\treturn this;\n      }\n    },\n\n    /**\n     * Provide information about the current source in a modal\n     * dialog.\n     */\n    info: function() {\n      var data = this.data(pluginName);\n      var meta = data.meta||{};\n      var editor = this;\n      var title;\n\n      if ( data.st_type == \"gitty\" ) {\n\ttitle = $().gitty('title', meta);\n      } else if ( data.st_type == \"filesys\" ) {\n\ttitle = \"File system -- \" + basename(meta.path);\n      } else if ( data.st_type == \"external\" ) {\n\ttitle = \"External -- \" + data.url;\n      } else {\n\ttitle = \"Scratch source\";\n      }\n\n      function infoBody() {\n\tif ( data.st_type == \"gitty\" ) {\n\t  data.editor = editor;\t\t/* circular reference */\n\t  this.gitty(data);\n\t} else if ( data.st_type == \"filesys\" ) {\n\t  filesysInfo(this, meta);\n\t} else if ( !data.st_type ) {\n\t  this.append($.el.p(\"The source is not associated with a file. \",\n\t\t\t     \"Use \",\n\t\t\t     $.el.b(\"Save ...\"),\n\t\t\t     \" to save the source with meta information.\"\n\t\t\t    ));\n\t}\n      }\n\n      form.showDialog({ title: title,\n\t\t\tbody:  infoBody\n\t\t      });\n\n      return this;\n    },\n\n    /**\n     * Generate diff relative to last checkpoint.\n     */\n    diff: function() {\n      var data = this.data(pluginName);\n      var baseName = { load: \"Loaded text\",\n\t\t       new: \"New text\",\n\t\t       save: \"Saved text\"\n\t\t     };\n\n      function infoBody() {\n\tvar diff = $.el.div();\n\tvar current = data.getValue();\n\n\tthis.append(diff);\n\n\tif ( current == data.cleanData ) {\n\t  $(diff).append($.el.p(\"No changes\"));\n\t} else {\n\t  var rb;\n\t  var buttons = $.el.div({ class:\"btn-group diff\",\n\t\t\t           role:\"group\"\n\t\t\t\t },\n\t\t\t\t $.el.button({ name:\"close\",\n\t\t\t\t\t       'data-dismiss':\"modal\",\n\t\t\t\t               class:\"btn btn-primary\"\n\t\t\t\t\t     },\n\t\t\t\t\t     \"Close\"),\n\t\t\t\t rb=\n\t\t\t\t $.el.button({ name:\"revert\",\n\t\t\t\t               class:\"btn btn-danger\",\n\t\t\t\t\t       'data-dismiss':\"modal\"\n\t\t\t\t\t     },\n\t\t\t\t\t     \"Revert changes\"));\n\t  $(diff).diff({ base: data.cleanData,\n\t\t\t head: current,\n\t\t\t baseName: baseName[data.cleanCheckpoint]\n\t\t       });\n\t  this.append($.el.div({class: \"wrapper text-center\"}, buttons));\n\t  $(rb).on(\"click\", function(ev) {\n\t    $(\".swish-event-receiver\").trigger(\"revert\");\n\t  });\n\t  this.parents(\"div.modal-dialog\").addClass(\"modal-wide\");\n\t}\n      }\n\n      form.showDialog({ title: \"Changes since \" + baseName[data.cleanCheckpoint],\n\t\t\tbody:  infoBody\n\t\t      });\n\n      return this;\n    },\n\n    /**\n     * Get a description of the selection to be transferred with a\n     * chat message.\n     */\n    getSelection: function() {\n      if ( this.hasClass(\"prolog-editor\") ) {\t/* plain editor */\n\tvar sel = this.prologEditor('getSelection');\n\treturn sel ? sel[0].selections : null;\n      } else if ( this.hasClass(\"notebook\") ) {\n\treturn this.notebook('getSelection');\n      } else {\n\tconsole.log(\"Don't know how to get selection from\", this);\n      }\n    },\n\n    /**\n     * @returns {String} description of the selection to use inside\n     * a link or button\n     */\n    getSelectionLabel: function(sel) {\n      function editorLabel(sels) {\n\tvar label = \"\";\n\tfor(var i=0; i<sels.length; i++) {\n\t  var s = sels[i];\n\t  if ( label != \"\" )\n\t    label += \";\";\n\t  label += \"@L\"+(s.from.line+1);\n\t  if ( s.to.line != s.from.line )\n\t    label += \"-\"+(s.to.line+1);\n\t}\n\treturn label;\n      }\n\n      if ( sel[0].selections ) {\n\tvar label = \"\";\n\n\tfor(var i=0; i<sel.length; i++) {\n\t  var ed = sel[i];\n\t  if ( label != \"\" )\n\t    label += \",\";\n\t  label += (ed.cell||\"\") + editorLabel(ed.selections);\n\t}\n\treturn label;\n      } else {\n\treturn editorLabel(sel);\n      }\n    },\n\n    /**\n     * Restore a selection retrieved using `getSelection`.\n     */\n    restoreSelection: function(sel) {\n      if ( this.hasClass(\"prolog-editor\") ) {\t/* plain editor */\n\treturn this.prologEditor('restoreSelection', sel);\n      } else if ( this.hasClass(\"notebook\") ) { /* notebook */\n\treturn this.notebook('restoreSelection', sel);\n      } else {\n\tconsole.log(sel);\n      }\n    },\n\n    /**\n     * Get a document identification string for chats, status, etc.\n     * @param {String} [type] defines the type of storage supported\n     * @param {Object} [data] is the data object from which to derive\n     * the id.\n     * @return {String} identifier for the document\n     */\n    docid: function(type, data) {\n      data = data||this.data(pluginName);\n\n      if ( !type || type == data.st_type ) {\n\tvar meta = data.meta||{};\n\n\tif ( data.st_type == \"gitty\" ) {\n\t  return \"gitty:\"+meta.name;\n\t} else if ( data.st_type == \"filesys\" ) {\n\t  return \"filesys:\"+meta.path;\n\t} else if ( data.st_type == \"external\" ) {\n\t  return \"url:\"+data.url;\n\t}\n      }\n    },\n\n    /**\n     * Open the chat window for the current file\n     */\n    chat: function(action) {\n      var data = this.data(pluginName);\n      var docid = this.storage('docid', 'gitty');\n\n      if ( docid ) {\n\tvar chat = this.closest(\".tab-pane\").find(\".chatroom\");\n\n\tif ( chat.length > 0 ) {\n\t  if ( action == 'update' )\n\t    chat.chatroom('docid', docid, 'close');\n\t  else\n\t    utils.flash(chat);\n\t} else if ( action != 'update' ) {\n\t  var percentage = (action == 'large' ? 80 : 20);\n\t  chat = $($.el.div({class:\"chatroom\"}));\n\n\t  chat.chatroom({docid:docid});\n\t  this.tile('split', chat, \"below\", percentage, 150)\n\t      .addClass(\"chat-container\");\n\t}\n      } else if ( action == 'update' ) {\n\tthis.storage('close_chat');\n      } else if ( !data.st_type ) {\n\tmodal.alert(\"You can only chat about a saved document.<br>\"+\n\t\t    \"Please save your document and try again.\");\n      } else {\n\tmodal.alert(\"The chat facility is only available for \"+\n\t\t    \"user-saved files.<br>\"+\n\t\t    \"You can use the <b>Open hangout</b> menu from \"+\n\t\t    \"the top-right bell to access the hangout room.\");\n      }\n\n      return this;\n    },\n\n    /**\n     * Close associated chat\n     */\n    close_chat: function() {\n      this.closest(\".chat-container\").find(\".chatroom\").chatroom('close');\n    },\n\n    /**\n     * Act upon the arrival of a chat message.  Update the tab title.\n     * If the message is not displayed and it is not permanent\n     * (`create == false`) we should not update the counter.\n     */\n    chat_message: function(msg) {\n      if ( !msg.displayed && msg.create == false )\n\treturn this;\n\n      return this.each(function() {\n\tvar elem = $(this);\n\n\tif ( msg.docid == elem.storage('docid') ) {\n\t  var data = elem.data(pluginName);\n\n\t  if ( data.chats ) {\n\t    if ( data.chats.total != undefined ) data.chats.total++;\n\t    if ( data.chats.count != undefined ) data.chats.count++;\n\t  } else {\n\t    data.chats = {total:1};\n\t  }\n\n\t  elem.storage('update_tab_title', 'chats++');\n\t}\n      });\n    },\n\n    /**\n     * Edit the _follow_ options for this file.\n     */\n\n    follow: function() {\n      var docid = this.storage('docid', 'gitty');\n\n      if ( docid ) {\n\tmodal.server_form({\n\t  title: \"Follow file options\",\n\t  url:   config.http.locations.follow_file_options,\n\t  data:  {docid: docid}\n\t});\n      } else {\n\tmodal.alert(\"Sorry, can only follow files\");\n      }\n    },\n\n    /**\n     * Called if the editor is destroyed to see whether it has pending\n     * modifications.\n     *\n     * @param {String} why is one of `\"beforeunload\" if the window is\n     * left or \"setSource\" if the source will be replaced.\n     */\n    unload: function(why, ev) {\n      var data = this.data(pluginName);\n\n      if ( !data )\t\t\t\t/* how can this happen? */\n\treturn undefined;\n\n      if ( data.meta ) {\n\thistory.addRecent({ st_type: \"gitty\",\n\t\t\t    id:\t  data.meta.name\t/* FIXME: add hash? */\n\t\t\t  });\n      }\n\n      if ( data.cleanData != data.getValue() ) {\n\tif ( why == \"beforeunload\" ) {\n\t  var message = \"The source editor has unsaved changes.\\n\"+\n\t                \"These will be lost if you leave the page\";\n\n\t  ev = ev||window.event;\n\t  if ( ev )\n\t    ev.returnValue = message;\n\n\t  return message;\n\t} else {\n\t  var message = \"The source editor has unsaved changes.\\n\"+\n\t                \"These will be lost\"+\n\t\t\t( why == \"setSource\" ? \" if you load a new program\" :\n\t\t\t  why == \"closetab\"  ? \" close this tab\" : \"\"\n\t\t\t);\n\n\t  return confirm(message);\n\t}\n      }\n\n      return undefined;\n    },\n\n    /**\n     * Called if this element is inside a tab this is being closed\n     */\n    close: function() {\n    },\n\n    /**\n     * maintain `data.is_clean`\n     */\n    markClean: function(clean) {\n      var data = this.data(pluginName);\n\n      data.is_clean = clean;\n    },\n\n    /**\n     * Broadcast all open (gitty) files. This is used to synchronise\n     * state.  Each state object has the property `file`.  If the file\n     * is locally modified, `state.modified` is `true` and if the file\n     * is the visible one, `state.visible` is true\n     * @param {Bool} [always] if `true`, also report if no files are\n     * open.\n     */\n    chat_status: function(always) {\n      var opened = [];\n\n      this.each(function() {\n\tvar data = $(this).data(pluginName);\n\n\tif ( data.st_type == \"gitty\" && data.meta && data.meta.name ) {\n\t  var state = { file:  data.meta.name };\n\n\t  if ( !data.is_clean ) state.modified = true;\n\t  if ( $(this).is(\":visible\") ) state.visible = true;\n\t  opened.push(state);\n\t}\n      });\n\n      if ( always || opened.length > 0 )\n\t$(\"#chat\").trigger('send',\n\t\t\t   { type:'has-open-files',\n\t\t\t     files:opened\n\t\t\t   });\n    }\n  }; // methods\n\n  function capitalizeFirstLetter(string) {\n    return string.charAt(0).toUpperCase() + string.slice(1);\n  }\n\n  function filesysInfo(form, meta) {\n    var table = $.el.table({class:\"table table-striped\"});\n\n    $(table).append($.el.tr($.el.th(\"Path\"),\n\t\t\t    $.el.td(meta.path)));\n    $(table).append($.el.tr($.el.th(\"Modified\"),\n\t\t\t    $.el.td(new Date(meta.last_modified*1000)\n\t\t\t\t    .toLocaleString())));\n    $(table).append($.el.tr($.el.th(\"Loaded\"),\n\t\t\t    $.el.td(meta.modified_since_loaded ? \"yes (modified)\":\n\t\t\t\t    meta.loaded ? \"yes\" : \"no\")));\n\n    form.append(table);\n  }\n\n  function errorString(action, error) {\n    if ( error.error == \"file_exists\" ) {\n      return action + \": file exists: \" + error.file;\n    }\n\n    return JSON.stringify(error);\n  }\n\n\n  /**\n   * <Class description>\n   *\n   * @class storage\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.storage = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\n  function filebase(file) {\n    return file ? file.split('.').slice(0,-1).join(\".\") : null;\n  }\n\n  function basename(path) {\n    return path ? path.split('/').pop() : null;\n  }\n\n  function udiff(diff) {\n    if ( diff ) {\n      var lines = diff.split(\"\\n\");\n      var pre = $($.el.pre({class:\"udiff\"}));\n\n      for(var i=0; i<lines.length; i++) {\n\tvar line = lines[i];\n\tvar classmap = { '@': 'udiff-hdr',\n\t\t\t ' ': 'udiff-ctx',\n\t\t\t '+': 'udiff-add',\n\t\t\t '-': 'udiff-del'\n\t\t       };\n\tpre.append($.el.span({class:classmap[line.charAt(0)]}, line),\n\t\t   $.el.br());\n      }\n      return pre;\n    } else {\n      return $($.el.div({class:\"udiff\"}, \"No changes\"));\n    }\n  }\n\n  function editConflicts(merged) {\n    var lines = merged.split(\"\\n\");\n    var pre = $($.el.pre({class:\"udiff\"}));\n    var cls = null;\n\n    function addLine(line, cls) {\n      pre.append($.el.span({class:cls}, line),\n\t\t $.el.br());\n    }\n\n    for(var i=0; i<lines.length; i++) {\n      var line = lines[i];\n\n      if ( line == \"<<<<<<<\" ) {\n\taddLine(line, \"edit-conflict-sep\");\n\tcls = \"edit-conflict-me\";\n      } else if ( cls == \"edit-conflict-me\" && line == \"=======\" ) {\n\taddLine(line, \"edit-conflict-sep\");\n\tcls = \"edit-conflict-them\";\n      } else if ( cls == \"edit-conflict-them\" && line == \">>>>>>>\" ) {\n\taddLine(line, \"edit-conflict-sep\");\n\tcls = null;\n      } else if ( cls ) {\n\taddLine(line, cls);\n     }\n   }\n\n   return pre;\n  }\n});\n\n","/*\n * [js-sha1]{@link https://github.com/emn178/js-sha1}\n *\n * @version 0.4.1\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2014-2016\n * @license MIT\n */\n/*jslint bitwise: true */\n(function() {\n  'use strict';\n\n  var root = typeof window === 'object' ? window : {};\n  var NODE_JS = !root.JS_SHA1_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n  if (NODE_JS) {\n    root = global;\n  }\n  var COMMON_JS = !root.JS_SHA1_NO_COMMON_JS && typeof module === 'object' && module.exports;\n  var AMD = typeof define === 'function' && define.amd;\n  var HEX_CHARS = '0123456789abcdef'.split('');\n  var EXTRA = [-2147483648, 8388608, 32768, 128];\n  var SHIFT = [24, 16, 8, 0];\n  var OUTPUT_TYPES = ['hex', 'array', 'digest', 'arrayBuffer'];\n\n  var blocks = [];\n\n  var createOutputMethod = function (outputType) {\n    return function (message) {\n      return new Sha1(true).update(message)[outputType]();\n    };\n  };\n\n  var createMethod = function () {\n    var method = createOutputMethod('hex');\n    if (NODE_JS) {\n      method = nodeWrap(method);\n    }\n    method.create = function () {\n      return new Sha1();\n    };\n    method.update = function (message) {\n      return method.create().update(message);\n    };\n    for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n      var type = OUTPUT_TYPES[i];\n      method[type] = createOutputMethod(type);\n    }\n    return method;\n  };\n\n  var nodeWrap = function (method) {\n    var crypto = require('crypto');\n    var Buffer = require('buffer').Buffer;\n    var nodeMethod = function (message) {\n      if (typeof message === 'string') {\n        return crypto.createHash('sha1').update(message, 'utf8').digest('hex');\n      } else if (message.constructor === ArrayBuffer) {\n        message = new Uint8Array(message);\n      } else if (message.length === undefined) {\n        return method(message);\n      }\n      return crypto.createHash('sha1').update(new Buffer(message)).digest('hex');\n    };\n    return nodeMethod;\n  };\n\n  function Sha1(sharedMemory) {\n    if (sharedMemory) {\n      blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n      blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n      blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n      blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n      this.blocks = blocks;\n    } else {\n      this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n    }\n\n    this.h0 = 0x67452301;\n    this.h1 = 0xEFCDAB89;\n    this.h2 = 0x98BADCFE;\n    this.h3 = 0x10325476;\n    this.h4 = 0xC3D2E1F0;\n\n    this.block = this.start = this.bytes = 0;\n    this.finalized = this.hashed = false;\n    this.first = true;\n  }\n\n  Sha1.prototype.update = function (message) {\n    if (this.finalized) {\n      return;\n    }\n    var notString = typeof(message) !== 'string';\n    if (notString && message.constructor === root.ArrayBuffer) {\n      message = new Uint8Array(message);\n    }\n    var code, index = 0, i, length = message.length || 0, blocks = this.blocks;\n\n    while (index < length) {\n      if (this.hashed) {\n        this.hashed = false;\n        blocks[0] = this.block;\n        blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n        blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n        blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n        blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n      }\n\n      if(notString) {\n        for (i = this.start; index < length && i < 64; ++index) {\n          blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n        }\n      } else {\n        for (i = this.start; index < length && i < 64; ++index) {\n          code = message.charCodeAt(index);\n          if (code < 0x80) {\n            blocks[i >> 2] |= code << SHIFT[i++ & 3];\n          } else if (code < 0x800) {\n            blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n            blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n          } else if (code < 0xd800 || code >= 0xe000) {\n            blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n            blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n            blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n          } else {\n            code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n            blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n            blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n            blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n            blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n          }\n        }\n      }\n\n      this.lastByteIndex = i;\n      this.bytes += i - this.start;\n      if (i >= 64) {\n        this.block = blocks[16];\n        this.start = i - 64;\n        this.hash();\n        this.hashed = true;\n      } else {\n        this.start = i;\n      }\n    }\n    return this;\n  };\n\n  Sha1.prototype.finalize = function () {\n    if (this.finalized) {\n      return;\n    }\n    this.finalized = true;\n    var blocks = this.blocks, i = this.lastByteIndex;\n    blocks[16] = this.block;\n    blocks[i >> 2] |= EXTRA[i & 3];\n    this.block = blocks[16];\n    if (i >= 56) {\n      if (!this.hashed) {\n        this.hash();\n      }\n      blocks[0] = this.block;\n      blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n      blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n      blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n      blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n    }\n    blocks[15] = this.bytes << 3;\n    this.hash();\n  };\n\n  Sha1.prototype.hash = function () {\n    var a = this.h0, b = this.h1, c = this.h2, d = this.h3, e = this.h4;\n    var f, j, t, blocks = this.blocks;\n\n    for(j = 16; j < 80; ++j) {\n      t = blocks[j - 3] ^ blocks[j - 8] ^ blocks[j - 14] ^ blocks[j - 16];\n      blocks[j] =  (t << 1) | (t >>> 31);\n    }\n\n    for(j = 0; j < 20; j += 5) {\n      f = (b & c) | ((~b) & d);\n      t = (a << 5) | (a >>> 27);\n      e = t + f + e + 1518500249 + blocks[j] << 0;\n      b = (b << 30) | (b >>> 2);\n\n      f = (a & b) | ((~a) & c);\n      t = (e << 5) | (e >>> 27);\n      d = t + f + d + 1518500249 + blocks[j + 1] << 0;\n      a = (a << 30) | (a >>> 2);\n\n      f = (e & a) | ((~e) & b);\n      t = (d << 5) | (d >>> 27);\n      c = t + f + c + 1518500249 + blocks[j + 2] << 0;\n      e = (e << 30) | (e >>> 2);\n\n      f = (d & e) | ((~d) & a);\n      t = (c << 5) | (c >>> 27);\n      b = t + f + b + 1518500249 + blocks[j + 3] << 0;\n      d = (d << 30) | (d >>> 2);\n\n      f = (c & d) | ((~c) & e);\n      t = (b << 5) | (b >>> 27);\n      a = t + f + a + 1518500249 + blocks[j + 4] << 0;\n      c = (c << 30) | (c >>> 2);\n    }\n\n    for(; j < 40; j += 5) {\n      f = b ^ c ^ d;\n      t = (a << 5) | (a >>> 27);\n      e = t + f + e + 1859775393 + blocks[j] << 0;\n      b = (b << 30) | (b >>> 2);\n\n      f = a ^ b ^ c;\n      t = (e << 5) | (e >>> 27);\n      d = t + f + d + 1859775393 + blocks[j + 1] << 0;\n      a = (a << 30) | (a >>> 2);\n\n      f = e ^ a ^ b;\n      t = (d << 5) | (d >>> 27);\n      c = t + f + c + 1859775393 + blocks[j + 2] << 0;\n      e = (e << 30) | (e >>> 2);\n\n      f = d ^ e ^ a;\n      t = (c << 5) | (c >>> 27);\n      b = t + f + b + 1859775393 + blocks[j + 3] << 0;\n      d = (d << 30) | (d >>> 2);\n\n      f = c ^ d ^ e;\n      t = (b << 5) | (b >>> 27);\n      a = t + f + a + 1859775393 + blocks[j + 4] << 0;\n      c = (c << 30) | (c >>> 2);\n    }\n\n    for(; j < 60; j += 5) {\n      f = (b & c) | (b & d) | (c & d);\n      t = (a << 5) | (a >>> 27);\n      e = t + f + e - 1894007588 + blocks[j] << 0;\n      b = (b << 30) | (b >>> 2);\n\n      f = (a & b) | (a & c) | (b & c);\n      t = (e << 5) | (e >>> 27);\n      d = t + f + d - 1894007588 + blocks[j + 1] << 0;\n      a = (a << 30) | (a >>> 2);\n\n      f = (e & a) | (e & b) | (a & b);\n      t = (d << 5) | (d >>> 27);\n      c = t + f + c - 1894007588 + blocks[j + 2] << 0;\n      e = (e << 30) | (e >>> 2);\n\n      f = (d & e) | (d & a) | (e & a);\n      t = (c << 5) | (c >>> 27);\n      b = t + f + b - 1894007588 + blocks[j + 3] << 0;\n      d = (d << 30) | (d >>> 2);\n\n      f = (c & d) | (c & e) | (d & e);\n      t = (b << 5) | (b >>> 27);\n      a = t + f + a - 1894007588 + blocks[j + 4] << 0;\n      c = (c << 30) | (c >>> 2);\n    }\n\n    for(; j < 80; j += 5) {\n      f = b ^ c ^ d;\n      t = (a << 5) | (a >>> 27);\n      e = t + f + e - 899497514 + blocks[j] << 0;\n      b = (b << 30) | (b >>> 2);\n\n      f = a ^ b ^ c;\n      t = (e << 5) | (e >>> 27);\n      d = t + f + d - 899497514 + blocks[j + 1] << 0;\n      a = (a << 30) | (a >>> 2);\n\n      f = e ^ a ^ b;\n      t = (d << 5) | (d >>> 27);\n      c = t + f + c - 899497514 + blocks[j + 2] << 0;\n      e = (e << 30) | (e >>> 2);\n\n      f = d ^ e ^ a;\n      t = (c << 5) | (c >>> 27);\n      b = t + f + b - 899497514 + blocks[j + 3] << 0;\n      d = (d << 30) | (d >>> 2);\n\n      f = c ^ d ^ e;\n      t = (b << 5) | (b >>> 27);\n      a = t + f + a - 899497514 + blocks[j + 4] << 0;\n      c = (c << 30) | (c >>> 2);\n    }\n\n    this.h0 = this.h0 + a << 0;\n    this.h1 = this.h1 + b << 0;\n    this.h2 = this.h2 + c << 0;\n    this.h3 = this.h3 + d << 0;\n    this.h4 = this.h4 + e << 0;\n  };\n\n  Sha1.prototype.hex = function () {\n    this.finalize();\n\n    var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4;\n\n    return HEX_CHARS[(h0 >> 28) & 0x0F] + HEX_CHARS[(h0 >> 24) & 0x0F] +\n           HEX_CHARS[(h0 >> 20) & 0x0F] + HEX_CHARS[(h0 >> 16) & 0x0F] +\n           HEX_CHARS[(h0 >> 12) & 0x0F] + HEX_CHARS[(h0 >> 8) & 0x0F] +\n           HEX_CHARS[(h0 >> 4) & 0x0F] + HEX_CHARS[h0 & 0x0F] +\n           HEX_CHARS[(h1 >> 28) & 0x0F] + HEX_CHARS[(h1 >> 24) & 0x0F] +\n           HEX_CHARS[(h1 >> 20) & 0x0F] + HEX_CHARS[(h1 >> 16) & 0x0F] +\n           HEX_CHARS[(h1 >> 12) & 0x0F] + HEX_CHARS[(h1 >> 8) & 0x0F] +\n           HEX_CHARS[(h1 >> 4) & 0x0F] + HEX_CHARS[h1 & 0x0F] +\n           HEX_CHARS[(h2 >> 28) & 0x0F] + HEX_CHARS[(h2 >> 24) & 0x0F] +\n           HEX_CHARS[(h2 >> 20) & 0x0F] + HEX_CHARS[(h2 >> 16) & 0x0F] +\n           HEX_CHARS[(h2 >> 12) & 0x0F] + HEX_CHARS[(h2 >> 8) & 0x0F] +\n           HEX_CHARS[(h2 >> 4) & 0x0F] + HEX_CHARS[h2 & 0x0F] +\n           HEX_CHARS[(h3 >> 28) & 0x0F] + HEX_CHARS[(h3 >> 24) & 0x0F] +\n           HEX_CHARS[(h3 >> 20) & 0x0F] + HEX_CHARS[(h3 >> 16) & 0x0F] +\n           HEX_CHARS[(h3 >> 12) & 0x0F] + HEX_CHARS[(h3 >> 8) & 0x0F] +\n           HEX_CHARS[(h3 >> 4) & 0x0F] + HEX_CHARS[h3 & 0x0F] +\n           HEX_CHARS[(h4 >> 28) & 0x0F] + HEX_CHARS[(h4 >> 24) & 0x0F] +\n           HEX_CHARS[(h4 >> 20) & 0x0F] + HEX_CHARS[(h4 >> 16) & 0x0F] +\n           HEX_CHARS[(h4 >> 12) & 0x0F] + HEX_CHARS[(h4 >> 8) & 0x0F] +\n           HEX_CHARS[(h4 >> 4) & 0x0F] + HEX_CHARS[h4 & 0x0F];\n  };\n\n  Sha1.prototype.toString = Sha1.prototype.hex;\n\n  Sha1.prototype.digest = function () {\n    this.finalize();\n\n    var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4;\n\n    return [\n      (h0 >> 24) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 8) & 0xFF, h0 & 0xFF,\n      (h1 >> 24) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 8) & 0xFF, h1 & 0xFF,\n      (h2 >> 24) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 8) & 0xFF, h2 & 0xFF,\n      (h3 >> 24) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 8) & 0xFF, h3 & 0xFF,\n      (h4 >> 24) & 0xFF, (h4 >> 16) & 0xFF, (h4 >> 8) & 0xFF, h4 & 0xFF\n    ];\n  };\n\n  Sha1.prototype.array = Sha1.prototype.digest;\n\n  Sha1.prototype.arrayBuffer = function () {\n    this.finalize();\n\n    var buffer = new ArrayBuffer(20);\n    var dataView = new DataView(buffer);\n    dataView.setUint32(0, this.h0);\n    dataView.setUint32(4, this.h1);\n    dataView.setUint32(8, this.h2);\n    dataView.setUint32(12, this.h3);\n    dataView.setUint32(16, this.h4);\n    return buffer;\n  };\n\n  var exports = createMethod();\n\n  if (COMMON_JS) {\n    module.exports = exports;\n  } else {\n    root.sha1 = exports;\n    if (AMD) {\n      define('sha1',[],function () {\n        return exports;\n      });\n    }\n  }\n})();\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2015-2017, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Manage the cell structure of a notebook modelled after IPython\n * NoteBook.  The nodebook consists of a toolbar with a series of\n * buttons and manages a list of cells.  The file defines two plugins\n * `notebook`, implementing the overall notebook and `nbCell`,\n * implementing a single cell.\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n */\n\ndefine('notebook',[ \"jquery\", \"config\", \"tabbed\", \"form\",\n\t \"preferences\", \"modal\", \"prolog\", \"links\",\n\t \"laconic\", \"runner\", \"storage\", \"sha1\"\n       ],\n       function($, config, tabbed, form, preferences, modal, prolog, links) {\n\nvar cellTypes = {\n  \"program\":  { label:\"Program\",  prefix:\"p\"   },\n  \"query\":    { label:\"Query\",    prefix:\"q\"   },\n  \"markdown\": { label:\"Markdown\", prefix:\"md\"  },\n  \"html\":     { label:\"HTML\",     prefix:\"htm\" }\n};\n\n(function($) {\n  var pluginName = 'notebook';\n  var clipboard = null;\n\n  /** @lends $.fn.notebook */\n  var methods = {\n    /**\n     * Initialize a Prolog Notebook.\n     * @param {Object} options\n     * @param {String} [options.value] provides the initial content\n     * @param {Boolean} [options.fullscreen] open notebook in fullscreen\n     * mode.\n     */\n    _init: function(options) {\n      options = options||{};\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar storage = {};\t\t/* storage info */\n\tvar data = {};\t\t\t/* private data */\n\tvar toolbar, content;\n\n\telem.addClass(\"notebook\");\n\telem.addClass(\"swish-event-receiver\");\n\n\tfunction notebookMenu() {\n\t  var icon = $.el.span({class:\"glyphicon glyphicon-menu-hamburger\"});\n\t  var menu = form.widgets.dropdownButton(\n\t    icon,\n\t    { divClass:\"notebook-menu btn-transparent\",\n\t      ulClass:\"pull-right\",\n\t      client:elem,\n\t      actions:\n\t      { \"Delete cell\":     function() { this.notebook('delete'); },\n\t\t\"Copy cell\":       function() { this.notebook('copy'); },\n\t\t\"Paste cell\":      function() { this.notebook('paste'); },\n\t\t\"Move cell up\":    function() { this.notebook('up'); },\n\t\t\"Move cell down\":  function() { this.notebook('down'); },\n\t\t\"Insert cell\":     function() { this.notebook('insertBelow'); },\n\t\t\"--\":\t\t   \"Notebook actions\",\n\t\t\"Exit fullscreen\": function() { this.notebook('fullscreen',false)}\n\t      }\n\t    });\n\n\t  return menu;\n\t}\n\n\telem.append(toolbar = $.el.div(\n            {class:\"nb-toolbar\"},\n\t    glyphButton(\"trash\", \"delete\", \"Delete cell\", \"warning\"),\n\t    glyphButton(\"copy\", \"copy\", \"Copy cell\", \"default\"),\n\t    glyphButton(\"paste\", \"paste\", \"Paste cell below\", \"default\"),\n\t    sep(),\n\t    glyphButton(\"chevron-up\", \"up\", \"Move cell up\", \"default\"),\n\t    glyphButton(\"chevron-down\", \"down\", \"Move cell down\", \"default\"),\n\t    sep(),\n\t    glyphButton(\"plus\", \"insertBelow\", \"Insert cell below\", \"primary\"),\n\t    glyphButton(\"fullscreen\", \"fullscreen\", \"Full screen\", \"default\")\n\t    ));\n\telem.append(notebookMenu());\n\telem.append($.el.div({class:\"nb-view\", tabIndex:\"-1\"},\n\t\t\t     content=$.el.div({class:\"nb-content\"}),\n\t\t\t     $.el.div({class:\"nb-bottom\"})));\n\n\t$(toolbar).on(\"click\", \"a.btn\", function(ev) {\n\t  var action = $(ev.target).closest(\"a\").data(\"action\");\n\t  elem.notebook(action);\n\t  ev.preventDefault();\n\t  return false;\n\t});\n\n\t$(content).on(\"click\", \".nb-cell-buttons a.btn\", function(ev) {\n\t  var a    = $(ev.target).closest(\"a\");\n\t  var cell = a.closest(\".nb-cell\");\n\n\t  var action = a.data(\"action\");\n\t  cell.nbCell(action);\n\t  ev.preventDefault();\n\t  return false;\n\t});\n\n\telem.focusin(function(ev) {\n\t  var cell = $(ev.target).closest(\".nb-cell\");\n\t  if ( cell.length > 0 ) {\n\t    elem.notebook('active', cell);\n\t  } else if ( $(ev.target).closest(\".nb-view\").length > 0 )\n\t  { elem.find(\".nb-content\").children(\".nb-cell.active\")\n\t\t\t\t    .nbCell('active', false);\n\t  }\n\t});\n\telem.focusout(function(ev) {\n\t  if ( $(ev.target).closest(\".notebook\")[0] != elem[0] ) {\n\t    elem.find(\".nb-content\").children(\".nb-cell.active\")\n\t\t\t\t    .nbCell('active', false);\n\t  }\n\t});\n\n\t/* Activate the active source or first source.  If the active\n\t * cell is a query, we could activate the source of the query?\n\t */\n\telem.on(\"activate-tab\", function(ev) {\n\t  if ( ev.target == elem[0] ) {\n\t    var eds = elem.find(\".nb-content\")\n                          .children(\".nb-cell.program\");\n\t    var aeds = eds.filter(\".active\");\n\t    var nc = aeds[0]||eds[0];\n\n\t    if ( nc ) {\n\t      $(nc).find(\".prolog-editor\").prologEditor('makeCurrent');\n\t    }\n\t    ev.stopPropagation();\n\t  }\n\t});\n\n\telem.data(pluginName, data);\t/* store with element */\n\n\t\t\t\t\t/* restore content */\n\tvar content = elem.find(\".notebook-data\");\n\tif ( options.value ) {\n\t  elem.notebook('value', options.value);\n\t} else if ( content.length > 0 ) {\n\t  function copyData(name) {\n\t    var value = content.data(name);\n\t    if ( value ) {\n\t      storage[name] = value;\n\t    }\n\t  }\n\n\t  copyData(\"file\");\n\t  copyData(\"url\");\n\t  copyData(\"title\");\n\t  copyData(\"meta\");\n\t  copyData(\"st_type\");\n\t  copyData(\"chats\");\n\n\t  var docid      = elem.storage('docid', undefined, storage);\n\t  var fullscreen = preferences.getDocVal(docid, 'fullscreen', true);\n\n\t  elem.notebook('value', content.text(),\n\t\t\t{ fullscreen: fullscreen\n\t\t\t});\n\t  content.remove();\n\t} else {\n\t  elem.notebook('placeHolder');\n\t}\n\n\telem.notebook('setupStorage', storage);\n\telem.on(\"data-is-clean\", function(ev, clean) {\n\t  if ( $(ev.target).hasClass(\"prolog-editor\") )\n\t  { elem.notebook('checkModified');\n\t    ev.stopPropagation();\n\t    return false;\n\t  }\n\t});\n\telem.on(\"fullscreen\", function(ev, val) {\n\t  preferences.setDocVal(docid, 'fullscreen', val);\n\t});\n      }); /* end .each() */\n    },\n\n\t\t /*******************************\n\t\t *\t  BUTTON ACTIONS\t*\n\t\t *******************************/\n\n    delete: function(cell) {\n      cell = cell||currentCell(this);\n      if ( cell ) {\n\tthis.notebook('active', cell.next()||cell.prev());\n\tcell.nbCell('close');\n\tthis.notebook('updatePlaceHolder');\n      }\n      this.notebook('checkModified');\n      return this;\n    },\n\n    copy: function(cell) {\n      cell = cell||currentCell(this);\n      if ( cell ) {\n\tvar dom = $.el.div({class:\"notebook\"});\n\t$(dom).append($(cell).nbCell('saveDOM'));\n\t$(dom).find(\".nb-cell\").removeAttr(\"name\");\n\tclipboard = stringifyNotebookDOM(dom);\n      }\n    },\n\n    paste: function(text) {\n      var nb = this;\n\n      text = text||clipboard;\n      if ( text ) {\n\tvar dom = $.el.div();\n\n\t$(dom).html(text);\n\tvar cells = $(dom).find(\".nb-cell\");\n\tif ( cells.length > 0 ) {\n\t  $(dom).find(\".nb-cell\").each(function() {\n\t    nb.notebook('insert', {\n\t      where: \"below\",\n\t      restore: $(this)\n\t    });\n\t  });\n\t  return this;\n\t} else {\n\t  modal.alert(\"Not a SWISH notebook\");\n\t}\n      } else {\n\tmodal.alert(\"Clipboard is empty\");\n      }\n    },\n\n    up: function(cell) {\n      cell = cell||currentCell(this);\n      if ( cell ) {\n\tcell.insertBefore(cell.prev());\n\tthis.notebook('checkModified');\n      }\n      return this;\n    },\n\n    down: function(cell) {\n      cell = cell||currentCell(this);\n      if ( cell ) {\n\tcell.insertAfter(cell.next());\n\tthis.notebook('checkModified');\n      }\n      return this;\n    },\n\n    insertAbove: function() {\n      return this.notebook('insert', { where:\"above\" });\n    },\n\n    insertBelow: function() {\n      if ( this.notebook('insert', {where:\"below\", if_visible:true}) == false ) {\n\tmodal.alert(\"<p>New cell would appear outside the visible area of the \" +\n\t\t    \"notebook.\" +\n\t\t    \"<p>Please select the cell below which you want the \"+\n\t\t    \"new cell to appear or scroll to the bottom of the \" +\n\t\t    \"notebook.\");\n      }\n\n      return this;\n    },\n\n    run: function(cell) {\n      cell = cell||currentCell(this);\n      if ( cell )\n\tcell.nbCell(\"run\");\n    },\n\n    fullscreen: function(val) {\n      if ( val == undefined )\t\t/* default: toggle */\n\tval = !this.hasClass(\"fullscreen\");\n\n      if ( val ) {\n\tvar chat_container = this.closest(\".chat-container\");\n\tvar node = chat_container.length == 1 ? chat_container : this;\n\t$(\"body.swish\").swish('fullscreen', node, this);\n      } else {\n\t$(\"body.swish\").swish('exitFullscreen');\n      }\n\n      return this;\n    },\n\n    cellType: function(cell, type) {\n      cell = cell||currentCell(this);\n      if ( cell )\n\tcell.nbCell('type', type);\n    },\n\n\t\t /*******************************\n\t\t *\t      SELECTION\t\t*\n\t\t *******************************/\n\n    getSelection: function() {\n      return this.notebook('assignCellNames')\n                 .find(\".prolog-editor\")\n\t\t .prologEditor('getSelection');\n    },\n\n    restoreSelection: function(sel) {\n      return this.notebook('assignCellNames')\n                 .find(\".prolog-editor\")\n\t\t .prologEditor('restoreSelection', sel);\n    },\n\n\n\t\t /*******************************\n\t\t *\t    CLEAN/DIRTY\t\t*\n\t\t *******************************/\n\n    checkModified: function() {\n      return this.each(function() {\n\tvar nb = $(this);\n\tvar store = nb.data(\"storage\");\n\tvar clean = store.cleanGeneration == nb.notebook('changeGen');\n\n\tnb.notebook('markClean', clean);\n      });\n    },\n\n    /**\n     * Called if the notebook changes from clean to dirty or visa versa.\n     * This triggers `data-is-clean`, which is trapped by the tab to\n     * indicate the changed state of the editor.\n     */\n    markClean: function(clean) {\n      return this.each(function() {\n\tvar nb = $(this);\n\tvar data = nb.data(pluginName);\n\n\tif ( data.clean_signalled != clean )\n\t{ data.clean_signalled = clean;\n\t  nb.trigger(\"data-is-clean\", clean);\n\t}\n\n\tif ( clean ) {\n\t  nb.find(\".prolog-editor\").prologEditor('setIsClean');\n\t}\n      });\n    },\n\n\n\t\t /*******************************\n\t\t *\t CELL MANAGEMENT\t*\n\t\t *******************************/\n\n    /**\n     * @param {jQuery} cell is the cell that must be activated\n     * @param {Boolean} [focus] if `true`, give the cell the focus\n     */\n    active: function(cell, focus) {\n      if ( cell ) {\n\tvar current = this.find(\".nb-content .nb-cell.active\");\n\n\tfunction removeNotForQuery(elem) {\n\t  elem.find(\".nb-content .nb-cell.not-for-query\")\n\t      .removeClass(\"not-for-query\");\n\t}\n\n\tif ( cell.length == 1 )\n\t{ if ( !(current.length == 1 && cell[0] == current[0]) ) {\n\t    removeNotForQuery(this);\n\t    current.nbCell('active', false);\n\t    cell.nbCell('active', true);\n\t    if ( focus )\n\t      cell.focus();\n\t  }\n\t} else\n\t{ removeNotForQuery(this);\n\t  current.nbCell('active', false);\n\t}\n      }\n    },\n\n    /**\n     * Insert a new cell\n     * @param {Object} [options]\n     * @param {String} [options.where] defines where the cell is\n     * inserted relative to the cell with the current focus.\n     * @param {jQuery} [options.restore] If provided, it must contains\n     * a save/restore node that will be used to fill the new cell.\n     * @param {Bool}   [options.if_visible]  If `true`, only insert is\n     * the insertion point is visible.\n     */\n    insert: function(options) {\n      options   = options||{};\n      var relto = currentCell(this);\n      var cell  = options.cell || $.el.div({class:\"nb-cell\"});\n      var view  = this.find(\".nb-view\")\n      var viewrect;\n\n      if ( options.if_visible ) {\n\tif ( view.find(\".nb-content > div.nb-cell\").length > 0 )\n\t  viewrect = view[0].getBoundingClientRect();\n      }\n\n      if ( relto ) {\n\tif ( options.where == 'above' ) {\n\t  if ( viewrect ) {\n\t    var seltop = relto[0].getBoundingClientRect().top;\n\t    if ( seltop < viewrect.top )\n\t      return false;\n\t  }\n\t  $(cell).insertBefore(relto);\n\t} else {\n\t  if ( viewrect ) {\n\t    var selbottom = relto[0].getBoundingClientRect().bottom;\n\n\t    if ( selbottom > viewrect.bottom - 20 )\n\t      return false;\n\t  }\n\t  $(cell).insertAfter(relto);\n\t}\n      } else {\n\tvar content = this.find(\".nb-content\");\n\n\tif ( viewrect ) {\n\t  var cbottom = content[0].getBoundingClientRect().bottom;\n\n\t  if ( cbottom > viewrect.bottom - 20 )\n\t    return false;\n\t}\n\tcontent.append(cell);\n      }\n\n      if ( !options.cell ) {\n\t$(cell).nbCell(options.restore);\n      }\n      $(cell).nbCell('assignName');\n      this.notebook('updatePlaceHolder');\n      this.notebook('active', $(cell));\n      this.notebook('checkModified');\n\n      return this;\n    },\n\n\t\t /*******************************\n\t\t *\t   SAVE/RESTORE\t\t*\n\t\t *******************************/\n\n    /**\n     * Setup connection to the storage manager.\n     */\n    setupStorage: function(storage) {\n      var notebook = this;\n\n      storage = $.extend(storage, {\n        getValue: function() {\n\t  return notebook.notebook('value');\n\t},\n\tsetValue: function(source) {\n\t  return notebook.notebook('setSource', source);\n\t},\n\tchangeGen: function() {\n\t  return notebook.notebook('changeGen');\n\t},\n\tisClean: function(gen) {\n\t  var cgen = notebook.notebook('changeGen');\n\t  return gen == cgen;\n\t},\n\tmarkClean: function(clean) {\n\t  notebook.notebook('markClean', clean);\n\t},\n\tcleanGeneration: this.notebook('changeGen'),\n\tcleanData:       this.notebook('value'),\n\tcleanCheckpoint: \"load\",\n\ttypeName:\t \"notebook\"\n      });\n\n      return this.storage(storage);\n    },\n\n    /**\n     * Set the source\n     */\n    setSource: function(source) {\n      if ( typeof(source) == \"string\" )\n\tsource = {data:source};\n\n      this.notebook('value', source.data);\n    },\n\n    /**\n     * Set or get the state of this notebook as a string.\n     * @param {Object} options\n     * @param {Boolean} [options.skipEmpty=false] if `true`, do not save\n     *\t\t        empty cells.\n     * @param {Boolean} [options.fullscreen] if `true', go fullscreen.\n     * Default is `true` if the toplevel `div.notebook` has a class\n     * `fullscreen`.\n     * @param [String] val is an HTML string that represents\n     * the notebook state.\n     */\n    value: function(val, options) {\n      options = options||{};\n\n      if ( val == undefined ) {\n\tvar dom = $.el.div({class:\"notebook\"});\n\n\tthis.notebook('assignCellNames', false);\n\tthis.find(\".nb-cell\").each(function() {\n\t  cell = $(this);\n\t  if ( !(options.skipEmpty && cell.nbCell('isEmpty')) )\n\t    $(dom).append(cell.nbCell('saveDOM'));\n\t});\n\n\treturn stringifyNotebookDOM(dom);\n      } else {\n\tvar notebook = this;\n\tvar content  = this.find(\".nb-content\");\n\tvar dom = $.el.div();\n\n\tcontent.html(\"\");\n\tdom.innerHTML = val;\t\t/* do not execute scripts */\n\n\tif ( options.fullscreen == undefined )\n\t  options.fullscreen = $(dom).find(\"div.notebook\").hasClass(\"fullscreen\");\n\tif ( options.fullscreen ) {\n\t  this.removeClass(\"fullscreen\");\n\t  this.notebook('fullscreen', true);\n\t}\n\n\t$(dom).find(\".nb-cell\").each(function() {\n\t  var cell = $.el.div({class:\"nb-cell\"});\n\t  content.append(cell);\n\t  $(cell).nbCell($(this));\n\t});\n\n\tthis.find(\".nb-cell\").nbCell('onload');\n\tthis.notebook('updatePlaceHolder');\n      }\n    },\n\n    /**\n     * Compute a state fingerprint for the entire notebook\n     * @return {String} SHA1 fingerprint\n     */\n    changeGen: function() {\n      var list = [];\n      this.find(\".nb-cell\").each(function() {\n\tcell = $(this);\n\tlist.push(cell.nbCell('changeGen'));\n      });\n      return sha1(list.join());\n    },\n\n    /**\n     * Assign names to all cells.  This is normally done as the\n     * notebook is created, but needs to be done for old notebooks\n     * if functions are used that require named cells.  Calling this\n     * method has no effect if all cells already have a name.\n     */\n    assignCellNames: function(check) {\n      this.find(\".nb-cell\").nbCell('assignName');\n      if ( check != false )\n\tthis.notebook('checkModified');\n      return this;\n    },\n\n\n\t\t /*******************************\n\t\t *\t       HELP\t\t*\n\t\t *******************************/\n\n    updatePlaceHolder: function() {\n      if ( this.find(\".nb-content\").children().length == 0 )\n\tthis.notebook('placeHolder');\n      else\n\tthis.find(\".nb-placeholder\").remove();\n    },\n\n    placeHolder: function() {\n      var placeholder = $.el.div({class:\"nb-placeholder\"});\n\n      $.ajax({ url: config.http.locations.help + \"/notebook.html\",\n\t       dataType: \"html\",\n\t       success: function(data) {\n\t\t $(placeholder).html(data);\n\t       }\n             });\n      this.find(\".nb-content\").append(placeholder);\n    }\n  }; // methods\n\n  // <private functions>\n\n  /**\n   * @returns {Object|null} cell that is focussed and inside our\n   * notebook.\n   * @param {Object} nb is the notebook\n   */\n  function currentCell(nb) {\n    var active = $(nb).find(\".nb-cell.active\");\n\n    if ( active.length == 1 )\n      return active.first();\n\n    return null;\n  }\n\n  function stringifyNotebookDOM(dom) {\n    /*\n     * Attributes from .html() are not ordered.  We need a canonical\n     * representation and therefore we need to reorder the HTML\n     * attributes and map the attribute names to lower case.\n     */\n    function orderAttrs(s) {\n      attrs = s.match(/[-a-z]+=\"[^\"]*\"/g);\n      if ( attrs ) {\n\tvar start = s.match(/^<[a-z]* /);\n\tfor(var i=0; i<attrs.length; i++) {\n\t  var l = attrs[i].split(/=(.*)/);\n\t  attrs[i] = l[0].toLowerCase()+\"=\"+l[1];\n\t}\n\treturn start[0]+attrs.sort().join(\" \")+\">\";\n      } else\n\treturn s;\n    }\n\n    var html = $($.el.div(dom)).html();\n    var nest = [];\n    return html.replace(/(<div [^>]*>|<\\/div>)/g, function(t) {\n      var is_cell;\n      if ( t == \"</div>\" ) {\n\tis_cell = nest.pop();\n\treturn is_cell ? \"\\n\"+t+\"\\n\" : t;\n      } else {\n\tis_cell = (t.match(/(nb-cell|notebook)/) != null);\n\tnest.push(is_cell);\n\treturn is_cell ? \"\\n\"+orderAttrs(t)+\"\\n\" : t;\n      }\n    }).slice(1);\n  }\n\n  tabbed.tabTypes.notebook = {\n    dataType: \"swinb\",\n    typeName: \"notebook\",\n    label: \"Notebook\",\n    contentType: \"text/x-prolog-notebook\",\n    order: 200,\n    create: function(dom, options) {\n      $(dom).notebook(options);\n    }\n  };\n\n  /**\n   * <Class description>\n   *\n   * @class notebook\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.notebook = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\n\t\t /*******************************\n\t\t *\t    PLUGIN nbCell\t*\n\t\t *******************************/\n\n(function($) {\n  var pluginName = 'nbCell';\n  var id = 0;\t\t\t\t/* generate unique cell ids */\n\n  /** @lends $.fn.nbCell */\n  var methods = {\n    /**\n     * Create a new notebook cell\n     * @param {jQuery} [dom] initialise the new cell from the saved\n     * DOM\n     */\n    _init: function(dom) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = {};\t\t\t/* private data */\n\tvar g;\n\n\telem.data(pluginName, data);\t/* store with element */\n\telem.attr(\"tabIndex\", -1);\n\telem.attr(\"id\", \"nbc\"+id++);\n\n\tif ( dom instanceof jQuery ) {\n\t  elem.nbCell('restoreDOM', dom);\n\t} else {\n\t  var close = glyphButton(\"remove-circle\", \"close\", \"Close\",\n\t\t\t\t  \"default\", \"xs\");\n\t  elem.append(close);\n\t  $(close).addClass(\"close-select\");\n\t  $(close).on(\"click\", function() {\n\t    elem.nbCell('close');\n\t  });\n\n\t  elem.append($.el.div({class:\"nb-type-select\"},\n\t\t\t       $.el.label(\"Create a \"),\n\t\t\t       g=$.el.div({class:\"btn-group\",role:\"group\"}),\n\t\t\t       $.el.label(\"cell here.\")));\n\n\t  for(var k in cellTypes) {\n\t    if ( cellTypes.hasOwnProperty(k) )\n\t      $(g).append($.el.button({ type:\"button\",\n\t\t\t\t\tclass:\"btn btn-default\",\n\t\t\t\t\t\"data-type\":k\n\t\t\t\t      },\n\t\t\t\t      cellTypes[k].label));\n\t  }\n\n\t  $(g).on(\"click\", \".btn\", function(ev) {\n\t    elem.nbCell('type', $(ev.target).data('type'));\n\t  });\n\n\t  elem.append($.el.div({class:\"nb-type-more\"},\n\t\t\t       typeMore(),\n\t\t\t       typeLess($.el.label(\"Insert notebook from \" +\n\t\t\t\t\t\t   \"local file \"),\n\t\t\t\t\tfileInsertInput()[0])));\n\t}\n      });\n    },\n\n    /**\n     * (de)activate the current cell.\n     */\n    active: function(val) {\n      var data = this.data(pluginName);\n\n      if ( val ) {\n\tthis.addClass(\"active\");\n\tswitch( data.type ) {\n\t  case \"program\":\n\t    this.find(\".editor\").prologEditor('makeCurrent');\n\t    break;\n\t  case \"query\":\n\t    var ed = this.prevAll(\".program\").first().find(\".editor\");\n\t    if ( ed.length == 1 )\n\t      ed.prologEditor('makeCurrent');\n\t    this.closest(\".notebook\")\n                .find(\".nb-cell.program\")\n                .not(this.nbCell(\"program_cells\"))\n                .addClass(\"not-for-query\");\n\t    break;\n\t}\n      } else if ( this.length > 0 ) {\n\tthis.removeClass(\"active\");\n\tswitch( data.type ) {\n\t  case \"markdown\":\n\t  case \"html\":\n\t    if ( this.hasClass(\"runnable\") ) {\n\t      this.nbCell('run');\n\t    }\n\t    break;\n\t}\n      }\n    },\n\n\n    type: function(type) {\n      var data = this.data(pluginName);\n      if ( data.type != type ) {\n\tmethods.type[type].apply(this);\n\tdata.type = type;\n\tthis.addClass(type);\n\tthis.removeAttr(\"name\");\n\tthis.nbCell('assignName');\n      }\n      return this;\n    },\n\n    /**\n     * Give the cells in a jQuery set a unique name inside their\n     * notebook.\n     */\n    assignName: function() {\n      return this.each(function() {\n\tvar cell = $(this);\n\n\tif ( !cell.attr(\"name\") ) {\n\t  var data   = cell.data(pluginName);\n\t  if ( data.type ) {\n\t    var prefix = cellTypes[data.type].prefix;\n\t    var nb     = cell.closest(\".notebook\");\n\n\t    for(i=1; ; i++) {\n\t      var name = prefix+i;\n\t      if ( nb.find(\"*[name=\"+name+\"]\").length == 0 ) {\n\t\tcell.attr(\"name\", name);\n\t\tbreak;\n\t      }\n\t    }\n\t  }\n\t}\n      });\n    },\n\n    /**\n     * Run the current cell\n     */\n    run: function() {\n      var args = arguments;\n\n      return this.each(function() {\n\tvar cell = $(this);\n\tif ( cell.hasClass(\"runnable\") ) {\n\t  var data = cell.data(pluginName);\n\n\t  return methods.run[data.type].apply(cell, args);\n\t} else {\n\t  console.log(\"Cell is not runnable: \", cell);\n\t}\n      });\n    },\n\n    runTabled: function() {\n      return this.nbCell('run', {tabled:true});\n    },\n\n    onload: function() {\n      var args = arguments;\n\n      this.each(function() {\n\tvar cell = $(this);\n\tvar data = cell.data(pluginName);\n\n\tif ( methods.onload[data.type] )\n\t  methods.onload[data.type].apply(cell, args);\n      });\n\n      return this.nbCell('refresh');\n    },\n\n    close: function() {\n      this.find(\".prolog-runner\").prologRunner('close');\n      return this.remove();\n    },\n\n    refresh: function() {\n      if ( this.hasClass(\"program\") ) {\n\tthis.find(\"a[data-action='background']\")\n            .attr('title', this.hasClass(\"background\") ?\n\t\t\t     \"Used for all queries in this notebook\" :\n\t\t             \"Used for queries below this cell\");\n\n      }\n      return this;\n    },\n\n    getSettings: function() {\n      return {\n        tabled: this.data(\"tabled\") == \"true\",\n\trun:    this.data(\"run\")    == \"onload\",\n\tchunk:  parseInt(this.data(\"chunk\")||\"1\"),\n\tname:   this.attr(\"name\")\n      };\n    },\n\n    /**\n     * Present a modal that shows the current query properties and\n     * allows for changing them.\n     */\n    settings: function() {\n      var elem    = this;\n      var current = this.nbCell('getSettings');\n\n      function querySettingsBody() {\n\tthis.append($.el.form(\n          { class:\"form-horizontal\"\n\t  },\n\t  form.fields.checkboxes(\n\t\t[ { name: \"tabled\",\n\t\t    label: \"table results\",\n\t\t    value: current.tabled,\n\t\t    title: \"Table results\"\n\t\t  },\n\t\t  { name: \"run\",\n\t\t    label: \"run on page load\",\n\t\t    value: current.run,\n\t\t    title: \"Run when document is loaded\"\n\t\t  }\n\t\t], {col:3}),\n\t  form.fields.chunk(current.chunk),\n\t  form.fields.name(current.name||\"\"),\n\t  form.fields.buttons(\n\t  { label: \"Apply\",\n\t    offset: 3,\n\t    action: function(ev, values) {\n\t      if ( values.tabled != current.tabled ) {\n\t\tif ( values.tabled )\n\t\t  elem.data(\"tabled\", \"true\");\n\t\telse\n\t\t  elem.removeData(\"tabled\");\n\t      }\n\t      if ( values.run != current.run ) {\n\t\tif ( values.run )\n\t\t  elem.data(\"run\", \"onload\");\n\t\telse\n\t\t  elem.removeData(\"run\");\n\t      }\n\t      if ( values.chunk != current.chunk ) {\n\t\tif ( values.chunk != 1 )\n\t\t  elem.data(\"chunk\",  \"\"+values.chunk);\n\t\telse\n\t\t  elem.removeData(\"chunk\");\n\t      }\n\t      var name = values.name ? values.name.trim() : \"\";\n\t      if (  name != current.name ) {\n\t\tif ( name )\n\t\t  elem.attr(\"name\", name);\n\t\telse\n\t\t  elem.attr(\"name\", null);\n\t      }\n\t      elem.closest(\".notebook\").notebook('checkModified');\n\t    }\n\t  })));\n      }\n\n      form.showDialog({ title: \"Set options for query\",\n                        body: querySettingsBody\n                      });\n    },\n\n    /**\n     * Change the editor of a program cell to fixed (one line) height\n     */\n    singleline: function() {\n      this.toggleClass(\"singleline\");\n      this.find(\".editor\").prologEditor('refresh');\n      glyphButtonGlyph(this, \"singleline\",\n\t\t       this.hasClass(\"singleline\")\n\t\t\t\t? \"triangle-left\"\n\t\t\t\t: \"triangle-bottom\");\n      this.find(\"a[data-action=singleline]\").blur();\n      return this;\n    },\n\n    /**\n     * Toggle a program fragment to be background/non-background\n     */\n    background: function() {\n      this.toggleClass(\"background\");\n      this.find(\"a[data-action=background]\").blur();\n      this.closest(\".notebook\").notebook('checkModified');\n      this.nbCell('refresh');\n      return this;\n    },\n\n    /**\n     * Returns all program cells in current notebook that are loaded\n     * for executing the current cell.  This always starts with the\n     * background programs.  If `this` is a program cell, it is added.\n     * Otherwise the program cell before `this` is added.\n     * @return {jQuery} set of nbCell elements that form the\n     * sources for the receiving query cell.\n     */\n    program_cells: function() {\n      var data = this.data(pluginName);\n      var programs = this.closest(\".notebook\")\n\t                 .find(\".nb-cell.program.background\");\n      if ( this.hasClass(\"program\") ) {\n\tif ( !this.hasClass(\"background\") )\n\t  programs = programs.add(this);\n      } else {\n\tprograms = programs.add(this.prevAll(\".program\").first());\n      }\n      return programs;\n    },\n\n    programs: function() {\n      var cells = this.nbCell('program_cells');\n      return cells.find(\".editor\");\n    },\n\n    isEmpty: function() {\n      return methods.isEmpty[this.data(pluginName).type].call(this);\n    },\n\n    saveDOM: function() {\n      return methods.saveDOM[this.data(pluginName).type].call(this);\n    },\n\n    restoreDOM: function(dom) {\n      var data = this.data(pluginName);\n\n      function domCellType(dom) {\n\tfor(var k in cellTypes) {\n\t  if ( cellTypes.hasOwnProperty(k) && dom.hasClass(k) )\n\t    return k;\n\t}\n      }\n\n      data.type = domCellType(dom);\n      methods.restoreDOM[data.type].apply(this, arguments);\n      this.addClass(data.type);\n    },\n\n    /**\n     * Compute a state fingerprint for the current cell.\n     */\n    changeGen: function() {\n      var type = this.data(pluginName).type;\n\n      if ( type )\n\treturn methods.changeGen[type].call(this);\n      else\n\treturn 0;\n    },\n\n    text: function() {\n      return cellText(this);\n    }\n  }; // methods\n\n\t\t /*******************************\n\t\t *\t     SET TYPE\t\t*\n\t\t *******************************/\n\n  methods.type.markdown = function(options) {\t/* markdown */\n    var editor;\n    var cell = this;\n\n    options = options||{};\n    options.mode = \"markdown\";\n\n    function setAttr(name) {\n      if ( options[name] != undefined ) {\n\tcell.attr(name, \"\"+options[name]);\n\tdelete options[name];\n      }\n    }\n    setAttr(\"name\");\n\n    this.html(\"\");\n    this.append(editor=$.el.div({class:\"editor\"}));\n    $(editor).prologEditor(options);\n    this.addClass(\"runnable\");\n  }\n\n  methods.type.html = function(options) {\t/* HTML */\n    var editor;\n    var cell = this;\n\n    options = options||{};\n    options.mode = \"htmlmixed\";\n\n    function setAttr(name) {\n      if ( options[name] != undefined ) {\n\tcell.attr(name, \"\"+options[name]);\n\tdelete options[name];\n      }\n    }\n    setAttr(\"name\");\n\n    this.html(\"\");\n    this.append(editor=$.el.div({class:\"editor\"}));\n    $(editor).prologEditor(options);\n    this.addClass(\"runnable\");\n  }\n\n  methods.type.program = function(options) {\t/* program */\n    var cell = this;\n    var editor;\n\n    options = options||{};\n    options.autoCurrent = false;\n    options.getSource = function() {\n      var programs = cell.nbCell('programs');\n      return programs.prologEditor('getSource', \"source\", true);\n    };\n\n    this.html(\"\");\n\n    var buttons = $.el.div(\n      {class:\"btn-group nb-cell-buttons\", role:\"group\"},\n      glyphButton(\"triangle-bottom\", \"singleline\", \"Show only first line\",\n\t\t  \"default\", \"xs\"),\n      imageButton(\"background\", \"Use as background program\", \"xs\"));\n    this.append(buttons,\n\t\teditor=$.el.div({class:\"editor with-buttons\"}));\n    if ( options.background )\n    { this.addClass(\"background\");\n    }\n    if ( options.singleline )\n    { this.nbCell('singleline');\n    }\n    $(editor).prologEditor(options);\n  }\n\n  methods.type.query = function(options) {\t/* query */\n    var editor;\n    var cell = this;\n\n    this.html(\"\");\n\n    options = options||{};\n    if ( options.tabled == undefined )\n      options.tabled = preferences.getVal(\"tabled_results\");\n\n    function setData(name) {\n      if ( options[name] != undefined ) {\n\tcell.data(name, \"\"+options[name]);\n\tdelete options[name];\n      }\n    }\n    function setAttr(name) {\n      if ( options[name] != undefined ) {\n\tcell.attr(name, \"\"+options[name]);\n\tdelete options[name];\n      }\n    }\n    setData(\"tabled\");\n    setData(\"chunk\");\n    setData(\"run\");\n    setAttr(\"name\");\n\n    options = $.extend({}, options,\n      { role: \"query\",\n\tsourceID: function() {\n\t  return cell.nbCell('programs').prologEditor('getSourceID');\n\t}\n      });\n\n    var buttons = $.el.div(\n      {class:\"btn-group nb-cell-buttons\", role:\"group\"},\n      glyphButton(\"wrench\", \"settings\", \"Settings\",\n\t\t  \"default\", \"xs\"),\n      glyphButton(\"play\", \"run\",       \"Run query\",\n\t\t  \"primary\", \"xs\"));\n\n    function wrapSolution(a)\n    { this.find(\".editor.query\").prologEditor('wrapSolution', $(a).text());\n    }\n\n    var menu = form.widgets.dropdownButton(\n      $.el.span({class:\"glyphicon glyphicon-menu-hamburger\"}),\n      { client: cell,\n\tdivClass: \"nb-query-menu\",\n        actions: {\n\t  \"Aggregate (count all)\": wrapSolution,\n\t  \"--\":\t\t\t   null,\n\t  \"Projection\":\t\t   wrapSolution,\n\t  \"Order by\":              wrapSolution,\n\t  \"Distinct\":              wrapSolution,\n\t  \"Limit\":\t\t   wrapSolution,\n\t  \"---\":\t\t   null,\n\t  \"Download answers as CSV\": function() {\n\t    var query  = cellText(this).replace(/\\.\\s*$/,\"\");\n\t    var source = this.nbCell('programs')\n\t\t\t     .prologEditor('getSource', \"source\", true);\n\t    var options = {};\n\t    var name   = this.attr(\"name\");\n\t    if ( name )\n\t      options.disposition = name;\n\t    prolog.downloadCSV(query, source, options);\n\t  }\n        }\n      });\n\n    this.append(buttons,\n\t\t$.el.div({class:\"query with-buttons\"},\n\t\t\t menu,\n\t\t\t $.el.span({class:\"prolog-prompt\"}, \"?-\"),\n\t\t\t editor=$.el.div({class:\"editor query\"})));\n\n    $(editor).prologEditor(options);\n    this.addClass(\"runnable\");\n  }\n\n\n\t\t /*******************************\n\t\t *\t    RUN BY TYPE\t\t*\n\t\t *******************************/\n\n  methods.run.markdown = function(markdownText) {\t/* markdown */\n    var cell = this;\n\n    markdownText = markdownText||cellText(this);\n\n    function makeEditable(ev) {\n      var cell = $(ev.target).closest(\".nb-cell\");\n      var text = cell.data('markdownText');\n      cell.removeData('markdownText');\n      methods.type.markdown.call(cell, {value:text});\n      cell.off(\"dblclick\", makeEditable);\n      cell.off(\"click\", links.followLink);\n    }\n\n\n    function setHTML(data) {\n      cell.html(data);\n      cell.removeClass(\"runnable\");\n      cell.data('markdownText', markdownText);\n      cell.on(\"dblclick\", makeEditable);\n      cell.on(\"click\", \"a\", links.followLink);\n    }\n\n    if ( markdownText.trim() != \"\" )\n    { $.ajax({ type: \"POST\",\n\t       url: config.http.locations.markdown,\n\t       data: markdownText,\n\t       contentType: \"text/plain; charset=UTF-8\",\n\t       success: setHTML\n\t     });\n    } else\n    { setHTML(\"<div class='nb-placeholder'>\"+\n\t      \"Empty markdown cell.  Double click to edit\"+\n\t      \"</div>\");\n    }\n  };\n\n  methods.run.html = function(htmlText, options) {\n    var cell = this;\n\n    options = options||{};\n    if ( options.html == false )\n    { runScripts();\n      return;\n    }\n\n    htmlText = (htmlText||cellText(this)).trim();\n\n    function makeEditable(ev) {\n      var cell = $(ev.target).closest(\".nb-cell\");\n      var text = cell.data('htmlText');\n      cell.removeData('htmlText');\n      methods.type.html.call(cell, {value:text});\n      cell.off(\"dblclick\", makeEditable);\n      cell.off(\"click\", links.followLink);\n    }\n\n    function runScripts() {\n      if ( config.swish.notebook.eval_script == true &&\n\t   options.eval_script != false ) {\n\tvar scripts = [];\n\n\tcell.find(\"script\").each(function() {\n\t  var type = this.getAttribute('type')||\"text/javascript\";\n\t  if ( type == \"text/javascript\" )\n\t    scripts.push(this.textContent);\n\t});\n\n\tif ( scripts.length > 0 ) {\n\t  var script = \"(function(notebook){\" + scripts.join(\"\\n\") + \"})\";\n\t  var nb = new Notebook({\n\t    cell: cell[0]\n\t  });\n\n\t  try {\n\t    eval(script)(nb);\n\t  } catch(e) {\n\t    alert(e);\n\t  }\n\t}\n      }\n    }\n\n    function runHTML(data) {\n      cell[0].innerHTML = data;\n      runScripts();\n    }\n\n    function setHTML(data) {\n      runHTML(data);\n      cell.removeClass(\"runnable\");\n      cell.data('htmlText', htmlText);\n      cell.on(\"dblclick\", makeEditable);\n      cell.on(\"click\", \"a\", links.followLink);\n    }\n\n    if ( htmlText != \"\" )\n    { setHTML(htmlText);\n    } else\n    { setHTML(\"<div class='nb-placeholder'>\"+\n\t      \"Empty HTML cell.  Double click to edit\"+\n\t      \"</div>\");\n    }\n  };\n\n  methods.run.program = function() {\t\t/* program */\n    modal.alert(\"Please define a query to run this program\");\n  };\n\n  /**\n   * Run a query cell.\n   * @param {Object} [options]\n   * @param {Any}    [options.bindings] Initial bindings.  If this is a\n\t\t     string, it is simply prepended to the query.  If\n\t\t     it is an object, it is translated into a sequence\n\t\t     of Prolog unifications to bind the variables.\n   */\n  methods.run.query = function(options) {\t/* query */\n    var programs = this.nbCell('programs');\n    var settings = this.nbCell('getSettings');\n    var text     = cellText(this);\n\n    options = options||{};\n    if ( options.bindings ) {\n      var pretext = \"\";\n      if ( typeof(options.bindings) === 'string' ) {\n\tpretext = options.bindings;\n      } else {\n\tfor(var k in options.bindings) {\n\t  if ( options.bindings.hasOwnProperty(k) ) {\n\t    if ( pretext )\n\t      pretext += \", \";\n\t    pretext += k + \" = \" + Pengine.stringify(options.bindings[k]);\n\t  }\n\t}\n      }\n      if ( pretext )\n\ttext = pretext + \", (\" + prolog.trimFullStop(text) + \")\";\n    }\n    var query = { source:       programs.prologEditor('getSource',\n\t\t\t\t\t\t      \"source\", true),\n                  query:        text,\n\t\t  tabled:       settings.tabled||false,\n\t\t  chunk:        settings.chunk,\n\t\t  title:        false,\n\t\t  query_editor: this.find(\".prolog-editor.query\")\n                };\n    if ( programs[0] )\n      query.editor = programs[0];\n\n    var runner = $.el.div({class: \"prolog-runner\"});\n    this.find(\".prolog-runner\").prologRunner('close');\n    this.append(runner);\n    $(runner).prologRunner(query);\n  };\n\n\t\t /*******************************\n\t\t *\t       ONLOAD\t\t*\n\t\t *******************************/\n\n/* These methods are executed after all cells have been initialised */\n\n  methods.onload.query = function() {\n    if ( this.data(\"run\") == \"onload\" )\n      this.nbCell(\"run\");\n  };\n\n  methods.onload.html = function() {\n    return methods.run.html.call(this,\n\t\t\t\t undefined,\t/* text */\n\t\t\t\t {html:false, eval_script:true});\n  };\n\n\n\t\t /*******************************\n\t\t *\tSAVE/RESTORE DOM\t*\n\t\t *******************************/\n\n/* ---------------- saveDOM ---------------- */\n\n  methods.saveDOM.markdown = function() {\t/* markdown */\n    var text = this.data('markdownText') || cellText(this);\n    var dom  = $.el.div({class:\"nb-cell markdown\"}, text);\n\n    function copyAttr(name) {\n      var value;\n      if ( (value=cell.attr(name)) && value ) {\n\t$(dom).attr(name, value);\n      }\n    }\n\n    copyAttr(\"name\");\n\n    return dom;\n  };\n\n  methods.saveDOM.html = function() {\t\t/* HTML */\n    var text = this.data('htmlText') || cellText(this);\n    var dom  = $.el.div({class:\"nb-cell html\"});\n\n    // assume scripts are executed when put into the DOM\n    $(dom).html(text);\n\n    function copyAttr(name) {\n      var value;\n      if ( (value=cell.attr(name)) && value ) {\n\t$(dom).attr(name, value);\n      }\n    }\n    copyAttr(\"name\");\n\n    return dom;\n  };\n\n  methods.saveDOM.program = function() {\t/* program */\n    var cell = this;\n    var dom = $.el.div({class:\"nb-cell program\"}, cellText(this));\n\n    function copyClassAttr(name) {\n      if ( cell.hasClass(name) ) {\n\t$(dom).attr(\"data-\"+name, true);\n      }\n    }\n    function copyAttr(name) {\n      var value;\n      if ( (value=cell.attr(name)) && value ) {\n\t$(dom).attr(name, value);\n      }\n    }\n\n    copyClassAttr(\"background\");\n    copyClassAttr(\"singleline\");\n    copyAttr(\"name\");\n\n    return dom;\n  };\n\n  methods.saveDOM.query = function() {\t\t/* query */\n    var cell = this;\n    var dom  = $.el.div({class:\"nb-cell query\"}, cellText(this));\n\n    function isDefault(name, value) {\n      if ( name == 'tabled' && (!value || value == \"false\") ) return true;\n      return false;\n    }\n\n    function copyData(name) {\n      var value;\n      if ( (value=cell.data(name)) && !isDefault(name,value) ) {\n\t$(dom).attr(\"data-\"+name, value);\n      }\n    }\n    function copyAttr(name) {\n      var value;\n      if ( (value=cell.attr(name)) && value ) {\n\t$(dom).attr(name, value);\n      }\n    }\n\n    copyData(\"tabled\");\n    copyData(\"chunk\");\n    copyData(\"run\");\n    copyAttr(\"name\");\n\n    return dom;\n  };\n\n/* ---------------- restoreDOM ---------------- */\n\n  methods.restoreDOM.markdown = function(dom) {\t/* markdown */\n    var cell = this;\n    var text = dom.text().trim();\n\n    cell.data('markdownText', text);\n\n    function copyAttr(name) {\n      var value;\n      if ( (value=dom.attr(name)) && value ) {\n\tcell.attr(name, value);\n      }\n    }\n    copyAttr(\"name\");\n\n    methods.run.markdown.call(this, text);\n  };\n\n  methods.restoreDOM.html = function(dom) {\t/* HTML */\n    var cell = this;\n\n    function copyAttr(name) {\n      var value;\n      if ( (value=dom.attr(name)) && value ) {\n\tcell.attr(name, value);\n      }\n    }\n    copyAttr(\"name\");\n\n    methods.run.html.call(this, dom.html(), {eval_script:false});\n  };\n\n  methods.restoreDOM.program = function(dom) {\t/* program */\n    var cell = this;\n    var opts = { value:dom.text().trim() };\n\n    function getAttr(name) {\n      var value;\n      if ( (value=dom.data(name)) ) {\n\topts[name] = value;\n      }\n    }\n    function copyAttr(name) {\n      var value;\n      if ( (value=dom.attr(name)) && value ) {\n\tcell.attr(name, value);\n      }\n    }\n\n    getAttr(\"background\");\n    getAttr(\"singleline\");\n    copyAttr(\"name\");\n\n    methods.type.program.call(this, opts);\n  };\n\n  methods.restoreDOM.query = function(dom) {\t/* query */\n    var opts = { value:dom.text().trim() };\n\n    function getData(name) {\n      var value;\n      if ( (value=dom.data(name)) ) {\n\tif ( name == \"chunk\" )\n\t  opts.chunk = parseInt(value);\n\telse\n\t  opts[name] = value;\n      }\n    }\n    function getAttr(name) {\n      var value;\n      if ( (value=dom.attr(name)) ) {\n\topts[name] = value;\n      }\n    }\n\n    getData(\"tabled\");\n    getData(\"chunk\");\n    getData(\"run\");\n    getAttr(\"name\");\n    if ( opts.tabled == undefined )\n      opts.tabled = false;\n\n    methods.type.query.call(this, opts);\n  };\n\n/* ---------------- changeGen ---------------- */\n\n  methods.changeGen.markdown = function() {\t/* markdown */\n    var text = this.data('markdownText') || cellText(this);\n\n    return sha1(text);\n  };\n\n  methods.changeGen.html = function() {\t/* HTML */\n    var text = this.data('htmlText') || cellText(this);\n\n    return sha1(text);\n  };\n\n  methods.changeGen.program = function() {\t/* program */\n    var text = \"\";\n    var cell = this;\n\n    function addClassAttr(name, key) {\n      if ( cell.hasClass(name) )\n\ttext += key;\n    }\n\n    addClassAttr(\"background\", \"B\");\n    addClassAttr(\"singleline\", \"S\");\n\n    text += \"V\"+cellText(this);\n    return sha1(text);\n  };\n\n  methods.changeGen.query = function() {\t/* query */\n    var text = \"\";\n    var cell = this;\n\n    function addData(name, key) {\n      var value;\n\n      if ( (value=cell.data(name)) )\n\ttext += key+value;\n    }\n    function addAttr(name, key) {\n      var value;\n\n      if ( (value=cell.attr(name)) )\n\ttext += key+value;\n    }\n\n    addData(\"tabled\", \"T\");\n    addData(\"chunk\", \"C\");\n    addData(\"run\", \"R\");\n    addAttr(\"name\", \"N\");\n    text += \"V\"+cellText(this);\n\n    return sha1(text);\n  };\n\n/* ---------------- isEmpty ---------------- */\n\n  methods.isEmpty.markdown = function() {\t/* markdown */\n    var text = this.data('markdownText') || cellText(this);\n\n    return text.trim() == \"\";\n  };\n\n  methods.isEmpty.html = function() {\t/* HTML */\n    var text = this.data('htmlText') || cellText(this);\n\n    return text.trim() == \"\";\n  };\n\n  methods.isEmpty.program = function() {\t/* program */\n    return cellText(this).trim() == \"\";\n  };\n\n  methods.isEmpty.query = function() {\t\t/* query */\n    return cellText(this).trim() == \"\";\n  };\n\n\t\t /*******************************\n\t\t *\t     UTILITIES\t\t*\n\t\t *******************************/\n\n  function cellText(cell) {\n    return cell.find(\".editor\").prologEditor('getSource', undefined, true);\n  }\n\n  /**\n   * Creates a file input that, after a file is selected, replaces\n   * the cell with the content of the local file.\n   */\n  function fileInsertInput() {\n    var form = $('<input type=\"file\" name=\"file\">');\n\n    form.on(\"change\", function(ev) {\n      var reader = new FileReader();\n      reader.onload = function(theFile) {\n\tvar cell = $(ev.target).closest(\".nb-cell\");\n\tvar nb   = cell.closest(\".notebook\");\n\n\tif ( nb.notebook('paste', reader.result) )\n\t  cell.remove();\n      };\n      reader.readAsText(ev.target.files[0]);\n\n      ev.preventDefault();\n      return false;\n    });\n\n    return form;\n  }\n\n  function typeMore() {\n    var div = $('<div class=\"form-more\">' +\n\t\t' <a href=\"#\">more<a>' +\n\t\t'</div>');\n    div.find(\"a\").on(\"click\", function(ev) {\n      var more = $(ev.target).closest(\".form-more\");\n      more.hide(400);\n      more.next().show(400);\n    });\n    return div[0];\n  }\n\n  function typeLess() {\n    var div = $('<div class=\"form-less\" style=\"display:none\">' +\n\t\t' <div><a href=\"#\" class=\"less\">less<a></div>' +\n\t\t'</div>');\n    for(var i=0; i<arguments.length; i++) {\n      div.append(arguments[i]);\n    }\n    div.find(\"a.less\").on(\"click\", function(ev) {\n      var less = $(ev.target).closest(\".form-less\");\n      less.hide(400);\n      less.prev().show(400);\n    });\n\n    return div[0];\n  }\n\n\n  /**\n   * <Class description>\n   *\n   * @class nbCell\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.nbCell = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\nfunction glyphButton(glyph, action, title, style, size) {\n  size = size||\"sm\";\n  var btn = $.el.a({href:\"#\",\n\t\t    class:\"btn btn-\"+style+\" btn-\"+size+\" action-\"+action,\n\t\t    title:title, \"data-action\":action},\n\t\t   $.el.span({class:\"glyphicon glyphicon-\"+glyph}));\n\n  return btn;\n}\n\nfunction imageButton(action, title, size) {\n  size = size||\"sm\";\n  var btn = $.el.a({href:\"#\",\n\t\t    class:\"btn btn-default btn-image btn-\"+size+\" action-\"+action,\n\t\t    title:title, \"data-action\":action},\n\t\t   $.el.span({class:\"image-icon\"}));\n\n  return btn;\n}\n\nfunction glyphButtonGlyph(elem, action, glyph) {\n  var span = elem.find(\"a[data-action=\"+action+\"] > span.glyphicon\");\n\n  span.removeClass(function(i,s) {\n    return s.match(/glyphicon-[-a-z]*/g).join(\" \");\n  }).addClass(\"glyphicon-\"+glyph);\n}\n\nfunction sep() {\n  return $.el.span({class:\"thin-space\"}, \" \");\n}\n\n\t\t /*******************************\n\t\t *\t NOTEBOOK ClASS\t\t*\n\t\t *******************************/\n\nfunction Notebook(options) {\n  this.my_cell = options.cell;\n}\n\n/**\n * Create a Pengine from default arguments\n */\nNotebook.prototype.swish = function(options) {\n  var pcells = this.cell().nbCell(\"programs\");\n  var source = pcells.prologEditor('getSource', \"source\", true);\n\n  if ( source )\n    options.src = source;\n\n  return $.swish(options);\n}\n\n/**\n * @param {String} [name] Return (query) cell with given name.  If\n * name is omitted, return the current cell.\n * @return {jQuery} Notebook cells\n */\nNotebook.prototype.cell = function(name) {\n  if ( name )\n    return this.notebook().find('.nb-cell[name=\"'+name+'\"]');\n  else\n    return $(this.my_cell);\n};\n\n/**\n * @returns {jQuery} the notebook as a whole.\n */\nNotebook.prototype.notebook = function() {\n  return $(this.my_cell).closest(\".notebook\");\n};\n\n/**\n * Run named query cell with bindings\n * @param {String} cell Name of the cell to run\n * @param {Object|String} [bindings] Bindings to pass to the query.\n */\nNotebook.prototype.run = function(cell, bindings) {\n  var options = {};\n  if ( bindings )\n    options.bindings = bindings;\n\n  this.cell(cell).nbCell('run', options);\n};\n\n/**\n * Submit a form, calling a predicate\n * @param {String} formsel is the selector to find the form in the\n * notebook cell.\n * @param {Object} options\n * @param {String} options.predicate predicate to call.  The predicate\n * receives one argument, containing the form data as a dict.\n * @param {Function} options.onsuccess is the function run on successful\n * completion\n */\nNotebook.prototype.submit = function(formsel, options) {\n  var formel = this.$(formsel);\n  var data   = form.serializeAsObject(formel);\n\n  form.formError(formel, null);\n  this.swish({\n    ask: options.predicate+\"((\"+Pengine.stringify(data)+\"))\",\n    onerror: function(data) { form.formError(formel, data); },\n    onsuccess: options.onsuccess\n  });\n};\n\nNotebook.prototype.$ = function(selector) {\n  return this.cell().find(selector);\n}\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2016, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Embed the navigation bar\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\n\ndefine('navbar',[ \"jquery\", \"preferences\", \"form\", \"laconic\" ],\n       function($, preferences, form) {\n\n(function($) {\n  var pluginName = 'navbar';\n\n  /** @lends $.fn.navbar */\n  var methods = {\n    /**\n     * Initialize a navigation bar.  For example:\n     *\n     *     $(\"#navbar\").navbar(\n     *       { \"File\":\n     *         { \"New\": function() { ... },\n     *           \"Save\": function() { ... }\n     *         },\n     *         \"Edit\":\n     *         { \"Undo\": function() { ... }\n     *         }\n     *       });\n     *\n     * @param {Object} actions Nested object mapping menu labels to\n     * submenus or functions.\n     */\n    _init: function(actions) {\n\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = {};\n\n\tfor(var p in actions) {\n\t  if ( actions.hasOwnProperty(p) ) {\n\t    elem.navbar('appendDropdown', p);\n\t    elem.navbar('populateDropdown', p, actions[p]);\n\t  }\n\t}\n\n\telem.on(\"click\", \"a\", function(ev) { runMenu(this, ev); } );\n      });\n    },\n\n    /**\n     * @param {String} label Name of new dropdown to add\n     */\n    appendDropdown: function(label) {\n      var ul1 = this.children(\".nav.navbar-nav.menubar\");\n      var ul2 = $.el.ul({name:label, class:\"dropdown-menu\"});\n      var li  = $.el.li({class:\"dropdown\"},\n\t\t\t$.el.a({class:\"dropdown-toggle\",\n\t\t\t\t\"data-toggle\":\"dropdown\"\n\t\t\t       },\n\t\t\t       label,\n\t\t\t       $.el.b({class:\"caret\"})),\n\t\t\tul2);\n\n      ul1.append(li);\n\n      return this;\n    },\n\n    /**\n     * @param {String} name Name of the dropdown to populate\n     * @param {Object|function} actions Object relating dropdown menu\n     * labels to functions.  If a function is passed, it is called with\n     * two arguments: the navbar and the name of the dropdown to\n     * populate.\n     */\n    populateDropdown: function(name, actions) {\n      if ( typeof(actions) == \"function\" ) {\n\tactions(this, name);\n      } else {\n\tvar ul = dropDownUL(this, name);\n\n\tfor(var p in actions) {\n\t  if ( actions.hasOwnProperty(p) ) {\n\t    appendDropdown(ul, p, actions[p]);\n\t  }\n\t}\n      }\n    },\n\n    /**\n     * @param {String} name is the name of the dropdown to clear\n     */\n    clearDropdown: function(name) {\n      var ul = dropDownUL(this, name);\n\n      ul.html(\"\");\n      return this;\n    },\n\n    /**\n     * @example\n     * $(\"#navbar\").navbar('extendDropdown', 'File',\n     *                     'Save as', function () { ... });\n     * @param {String} name is the dropdown to extend\n     * @param {String} label is the label to add\n     * @param {function} onclick is the action to perform\n     */\n    extendDropdown: function(name, label, onclick) {\n      var ul = dropDownUL(this, name);\n\n      appendDropdown(ul, label, onclick);\n    }\n  }; // methods\n\n  /**\n   * Append something to a navbar dropdown.\n   *\n   * @param {Object} dropdown is the jQuery object representing the\n   * dropdown.\n   * @param {String} label is the label for the menu entry\n   * @param {any} options defines the action.  There are many variations:\n   *   - The string `\"--\"` creates a _divider_\n   *   - A function creates a normal menu entry that calls the function\n   *     when selected\n   *   - An object with `.type == \"checkbox\"` creates a checkbox.  In\n   *     addition\n   *\t - if `.preference` exists, the checkbox is associated with the\n   *\t   named preference, otherwise\n   *\t - if `.action' exists, it is called on change with the new\n   *\t   value as argument.\n   *   - An object with `.type == \"submenu\" creates a submenu.\n   *   - An object with `.typeIcon` gets an icon indicating the type\n   */\n  function appendDropdown(dropdown, label, options) {\n    function glyph(name) {\n      if ( name ) {\n\treturn $.el.span({\n\t  class:\"dropdown-icon glyphicon glyphicon-\" + name});\n      }\n    }\n\n    if ( options == undefined ) {\n      // ignored\n    } else if ( options == \"--\" ) {\n      dropdown.append($.el.li({class:\"divider\"}));\n    } else if ( typeof(options) == \"function\" ) {\t/* Simple action */\n      var a;\n      var i;\n\n      if ( options.typeIcon ) {\n\ta = $.el.a(form.widgets.typeIcon(options.typeIcon),\n\t\t   label);\n      } else if ( options.glyph ) {\n\ta = $.el.a(glyph(options.glyph), label);\n      } else if ( (i=label.indexOf(\"(\")) > 0 ) {\n\tvar accell = label.substr(i);\n\ta = $.el.a({class:\"accelerated\"},\n\t\t   label.substr(0,i).trim(),\n\t\t   $.el.span({class:\"accell-spacer\"},accell),\n\t\t   $.el.span({class:\"accell-text\"},accell));\n      } else {\n\ta = $.el.a(label);\n      }\n\n      $(a).data('navbar-action', options);\n      if ( options.name )\n\t$(a).attr(\"id\", options.name);\n\n      dropdown.append($.el.li(a));\n    } else {\t\t\t\t\t\t/* Checkbox item */\n      if ( options.type == \"checkbox\" ) {\n\tvar cb = $($.el.input({type:\"checkbox\"}));\n\n\tif ( options.preference !== undefined ) {\n\t  cb.addClass(\"swish-event-receiver\");\n\t  if ( preferences.getVal(options.preference) )\n\t    cb.prop(\"checked\", true);\n\t  cb.on(\"click\", function() {\n\t    preferences.setVal(options.preference, $(this).prop(\"checked\"));\n\t  });\n\t  cb.on(\"preference\", function(pref) {\n\t    if ( pref.name == options.preference )\n\t      cb.prop(\"checked\", pref.value);\n\t  });\n\t} else {\n\t  if ( options.checked )\n\t    cb.prop(\"checked\", options.checked);\n\n\t  cb.on(\"click\", function() {\n\t    options.action($(this).prop(\"checked\"));\n\t  });\n\t}\n        dropdown.append($.el.li({class:\"checkbox\"},\n\t\t\t\tcb[0],\n\t\t\t\t$.el.span(label)));\n      } else if ( options.type == \"submenu\" ) {\t\t/* Submenu */\n\tvar submenu = $.el.ul({class:\"dropdown-menu sub-menu\"});\n\n\tdropdown.append($.el.li($.el.a({class:\"trigger right-caret\"},\n\t\t\t\t       glyph(options.glyph),\n\t\t\t\t       label),\n\t\t\t\tsubmenu));\n\tif ( options.action )\n\t  $(submenu).data('navbar-action', options.action);\n\tif ( options.items ) {\n\t  for(var i=0; i<options.items.length; i++) {\n\t    $(submenu).append($.el.li($.el.a(options.items[i])));\n\t  }\n\t}\n\tif ( options.update ) {\n\t  $(submenu).on(\"update\", function(ev) {\n\t    options.update.call(ev.target);\n\t  });\n\t}\n      } else {\n\talert(\"Unknown navbar item\");\n      }\n    }\n  }\n\n  function dropDownUL(nb, name) {\n    return nb.find(\".dropdown-menu\").filter(function() {\n      return $(this).attr(\"name\") == name;\n    });\n  }\n\n  function runMenu(a, ev) {\n    if ( $(a).hasClass(\"trigger\") ) {\n      clickSubMenu.call(a, ev);\n    } else {\n      var action = ($(a).data('navbar-action') ||\n\t\t    $(a).parents(\"ul\").data('navbar-action'));\n\n      clickNotSubMenu.call(a, ev);\n\n      if ( action ) {\n\tev.preventDefault();\n\taction.call(a, ev);\n      } else if ( $(a).hasClass(\"trigger\") ) {\n\tclickSubMenu.call(a, ev);\n      }\n\n      return false;\n    }\n  }\n\n  /**\n   * Bootstrap 3 extension to provide submenus.  Inspired by\n   * http://jsfiddle.net/chirayu45/YXkUT/16/\n   * Triggers an `update` event to the submenu's <ul> just\n   * before opening it.\n   */\n  function clickSubMenu(ev) {\n    var current = $(this).next();\t\t /* the submenu <ul> */\n    var grandparent = $(this).parent().parent(); /* the main menu <ul> */\n\n    if ( $(this).hasClass('left-caret') ||\n\t $(this).hasClass('right-caret') )\n      $(this).toggleClass('right-caret left-caret');\n\n    grandparent.find('.left-caret')\n\t       .not(this)\n\t       .toggleClass('right-caret left-caret');\n    grandparent.find(\".sub-menu:visible\")\n\t       .not(current).hide();\n\n    current.trigger(\"update\");\n    current.toggle();\n    ev.stopPropagation();\n  }\n\n  function clickNotSubMenu(ev) {\n    var root = $(this).closest('.dropdown');\n\n    root.find('.left-caret').toggleClass('right-caret left-caret');\n    root.find('.sub-menu:visible').hide();\n  }\n\n/* invoke is merged in general menu callback above\n  $(function() {\n    $(\".dropdown-menu > li > a.trigger\").on(\"click\", clickSubMenu);\n    $(\".dropdown-menu > li > a:not(.trigger)\").on(\"click\", clickNotSubMenu);\n  });\n*/\n\n  /**\n   * navbar jQuery plugin populates the application navigation bar using\n   * bootstrap styling.  Menu entries are added from JavaScript objects,\n   * which directly assocuate a label with a function.  It also allows\n   * populating a dropdown from a callback.\n   *\n   * @class navbar\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} method Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.navbar = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\n});\n\n\n","(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/hint/templates-hint',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  var templatesMap = [];\n  var Pos = CodeMirror.Pos;\n\n  function startsWith(str, token) {\n    return str.slice(0, token.length).toUpperCase() == token.toUpperCase();\n  }\n\n  function DEBUG(topic) {\n    //console.log.apply(null, Array.slice(arguments, 1));\n  }\n\n  CodeMirror.templatesHint = {};\n\n  function getLabel(proposal) {\n    var template = proposal.template;\n    return document.createTextNode(template.name);\n  }\n\n  var ourMap = {\n    Tab : selectNextVariable,\n    Enter : function(cm) { selectNextVariable(cm, true) },\n    Esc : uninstall,\n    \"Ctrl-Space\": hintValue\n  }\n\n  function TemplateState() {\n    this.marked = [];\n    this.selectableMarkers = [];\n    this.varIndex = -1;\n  }\n\n  function isNested(cm) {\n    return cm._templateStack ? cm._templateStack.length : 0;\n  }\n\n\n  // A Template instance represents an autocompletion template.\n  // It can be parsed from an eclipse-type template string,\n  // or supplied with a pre-parsed token array.\n  //\n  // The token array may consist of the following tokens:\n  //   \"\\n\" (newline character)\n  //       Single newline character per token.\n  //   text (string)\n  //       Normal text, no newline characters allowed.\n  //   { variable: \"name\" }\n  //       Variable token, to be populated by the user.\n  //   { cursor: true }\n  //       The cursor will be placed here after completing the template\n  //   { line_separator: true }\n  //       If the template surrounds existing text, the existing text will be\n  //       placed here. Not implemented currently.\n  function Template(data) {\n    this.name = data.name; // Optional\n    this.description = data.description; // Optional\n    this.text = data.text; // Optional\n    if ( data.varTemplates ) {\n      this.varTemplates = data.varTemplates;\n    }\n    if(data.template != null) {\n      this.source = data.template;\n    } else if(data.tokens != null) {\n      this._tokens = data.tokens;\n    }\n  }\n\n  Template.prototype.tokens = function() {\n    if(this._tokens == null) {\n      this._tokens = parseTemplate(this.source);\n    }\n    return this._tokens;\n  };\n\n  Template.prototype.content = function() {\n    if(this._content == null) {\n      var tokens = this.tokens();\n      var content = '';\n      for ( var i = 0; i < tokens.length; i++) {\n        var token = tokens[i];\n        if (typeof token == 'string') {\n          content += token;\n        } else if (token.variable) {\n          content += token.variable;\n        } else {\n          // Ignore special tokens\n        }\n      }\n      this._content = content;\n    }\n    return this._content;\n  };\n\n  function parseTemplate(content) {\n    var tokens = [];\n    var varParsing = false;\n    var last = null;\n    var token = '';\n    for ( var i = 0; i < content.length; i++) {\n      var current = content.charAt(i);\n      if (current == \"\\n\") {\n        if (token != '') {\n          tokens.push(token);\n        }\n        token = '';\n        tokens.push(current);\n        last = null;\n      } else {\n        var addChar = true;\n        if (varParsing) {\n          if (current == \"}\") {\n            varParsing = false;\n            addChar = false;\n            if(token == 'cursor') {\n              tokens.push({\n                \"cursor\" : true\n              });\n            } else if(token == 'line_selection') {\n              tokens.push({\n                \"line_selection\" : true\n              });\n            } else {\n              tokens.push({\n                \"variable\" : token\n              });\n            }\n            token = '';\n          }\n        } else {\n          if (current == \"$\" && (i + 1) <= content.length) {\n            i++;\n            var next = content.charAt(i);\n            if (next == \"{\") {\n              varParsing = true;\n              addChar = false;\n              if (token != '') {\n                tokens.push(token);\n              }\n              token = '';\n            }\n          }\n\n        }\n        if (addChar && last != \"$\") {\n          token += current;\n          last = current;\n        } else {\n          last = null;\n        }\n      }\n    }\n    if (token != '') {\n      tokens.push(token);\n    }\n    return tokens;\n  }\n\n\n  function getMarkerChanged(cm, textChanged) {\n    var markers = cm.findMarksAt(textChanged.from);\n    if (markers) {\n      for ( var i = 0; i < markers.length; i++) {\n        var marker = markers[i];\n        if (marker._templateVar) {\n          return marker;\n        }\n      }\n    }\n    return null;\n  }\n\n  /**\n   * Track changes.  If the change is outside any template variable,\n   * uninstall() the template editing.  If it is inside, see whether\n   * there are any other template variables with the same name and\n   * update them accordingly.\n   */\n  function onChange(cm, textChanged) {\n    var state = cm._templateState;\n    if (!textChanged.origin || !state || state.updating) {\n      return;\n    }\n    try {\n      state.updating = true;\n      var markerChanged = getMarkerChanged(cm, textChanged);\n      if (markerChanged == null) {\n        uninstall(cm);\n      } else {\n        var posChanged = markerChanged.find();\n        var newContent = cm.getRange(posChanged.from, posChanged.to);\n        for ( var i = 0; i < state.marked.length; i++) {\n          var marker = state.marked[i];\n          if (marker != markerChanged\n              && marker._templateVar == markerChanged._templateVar) {\n            var pos = marker.find();\n            cm.replaceRange(newContent, pos.from, pos.to);\n          }\n        }\n      }\n    } finally {\n      state.updating = false;\n    }\n  }\n\n  function onEndCompletion(cm) {\n    DEBUG(\"template\", \"endCompletion()\", isNested(cm));\n    if ( isNested(cm) )\n      uninstall(cm, true);\n  }\n\n  function selectNextVariable(cm, exitOnEnd) {\n    var state = cm._templateState;\n    if (state.selectableMarkers.length > 0) {\n      state.varIndex++;\n      if (state.varIndex >= state.selectableMarkers.length) {\n        // If we reach the last token and exitOnEnd is true, we exit instead of\n        // looping back to the first token.\n        if (exitOnEnd) {\n          exit(cm);\n          return;\n        }\n        state.varIndex = 0;\n      }\n      var marker = state.selectableMarkers[state.varIndex];\n      var pos = marker.find();\n      cm.setSelection(pos.from, pos.to);\n      var templateVar = marker._templateVar;\n      for ( var i = 0; i < state.marked.length; i++) {\n        var m = state.marked[i];\n        if (m == marker) {\n          m.className = \"\";\n          m.startStyle = \"\";\n          m.endStyle = \"\";\n        } else {\n          if (m._templateVar == marker._templateVar) {\n            m.className = \"CodeMirror-templates-variable-selected\";\n            m.startStyle = \"\";\n            m.endStyle = \"\";\n          } else {\n            m.className = \"CodeMirror-templates-variable\";\n            m.startStyle = \"CodeMirror-templates-variable-start\";\n            m.endStyle = \"CodeMirror-templates-variable-end\";\n          }\n        }\n      }\n      cm.refresh();\n    } else {\n      // No tokens - exit.\n      exit(cm);\n    }\n  }\n\n  /**\n   * Recursively use hinting for the values\n   */\n  function hintValue(cm) {\n    var state  = cm._templateState;\n    var marker = state.selectableMarkers[state.varIndex];\n    var prev   = {state:state};\n\n    if ( cm._hintTemplateMarker )\n      prev.marker = cm._hintTemplateMarker;\n\n    if ( !cm._templateStack )\n      cm._templateStack = [];\n    cm._templateStack.push(prev);\n    delete cm._templateState;\n\n    function samePos(p1, p2) {\n      return p1.ch == p2.ch && p1.line == p2.line;\n    }\n\n    cm._hintTemplateMarker = marker;\n    var pos = marker.find();\n    var sels = cm.listSelections();\n    if ( sels.length == 1 &&\n\t samePos(sels[0].anchor, pos.from) &&\n\t samePos(sels[0].head,   pos.to) ) {\n      cm.replaceRange(\"\\u2630\", pos.from, pos.to);\n    }\n\n    CodeMirror.commands.autocomplete(cm);\n  }\n\n  Template.prototype.insert = function(cm, data) {\n    var template = this;\n    var nested = isNested(cm);\n\n    DEBUG(\"template\", \"Insert, nested\", nested, \"template\", template);\n    if ( cm._templateState || nested ) {\n      DEBUG(\"template\", \"Uninstall from insert()\", nested);\n      uninstall(cm);\n    }\n\n    if ( template.text ) {\n      cm.replaceRange(template.text, data.from, data.to);\n      return;\n    }\n\n    var state = new TemplateState();\n    cm._templateState = state;\n\n    var tokens = this.tokens();\n    var content = '';\n    var line = data.from.line;\n    var col = data.from.ch;\n    var markers = [];\n    var variables = [];\n    var cursor = null;\n    for ( var i = 0; i < tokens.length; i++) {\n      var token = tokens[i];\n      if(typeof token == 'string') {\n        content += token;\n        if (token == \"\\n\") {\n          line++;\n          col = 0;\n        } else {\n          col += token.length;\n        }\n      } else if (token.variable) {\n        content += token.variable;\n        var from = Pos(line, col);\n        var to = Pos(line, col\n            + token.variable.length);\n        var selectable = variables[token.variable] != false;\n        col += token.variable.length;\n        markers.push({\n          from : from,\n          to : to,\n          variable : token.variable,\n          selectable : selectable\n        });\n        variables[token.variable] = false;\n      } else if(token.cursor) {\n        cursor = Pos(line, col);\n      } else {\n        // Unhandled tokens, e.g. line_selection. Ignore.\n      }\n    }\n\n    var from = data.from;\n    var to = data.to;\n    var startLine = from.line;\n    cm.replaceRange(content, from, to);\n\n    for ( var i = 0; i < markers.length; i++) {\n      function subTemplate(tvar) {\n\tif ( template.varTemplates && template.varTemplates[tvar] )\n\t  return template.varTemplates[tvar];\n\treturn undefined;\n      }\n\n      var marker = markers[i], from = marker.from, to = marker.to;\n      var markText = cm.markText(from, to, {\n        className : \"CodeMirror-templates-variable\",\n        startStyle : \"CodeMirror-templates-variable-start\",\n        endStyle : \"CodeMirror-templates-variable-end\",\n        inclusiveLeft : true,\n        inclusiveRight : true,\n        clearWhenEmpty: false,  // Works in CodeMirror 4.6\n        _templateVar : marker.variable,\n\t_templates : subTemplate(marker.variable)\n      });\n      state.marked.push(markText);\n      if (marker.selectable == true) {\n        state.selectableMarkers.push(markText);\n      }\n    }\n\n    if (cursor != null) {\n      state.cursor = cm.setBookmark(cursor);\n    }\n\n    // Auto-indent everything except the first line.\n    // This will typically indent the rest of the code according\n    // to the indentation of the first line.\n    // We do the indentation after creating the markers, so that the\n    // markers are moved accordingly.\n    var lines = content.split(\"\\n\");\n    for ( var x = 1; x < lines.length; x++) {\n      var targetLine = startLine + x;\n      cm.indentLine(targetLine);\n    }\n\n    // Have to be before selectNextVariable, since selectNextVariable\n    // may exit and remove the keymap again.\n    if ( !nested ) {\n      cm.on(\"change\", onChange);\n      DEBUG(\"template\", \"Installing endCompletion\");\n      cm.on(\"endCompletion\", onEndCompletion);\n      cm.addKeyMap(ourMap);\n    }\n\n    selectNextVariable(cm, true);\n  }\n\n  function exit(cm) {\n    // Move to ${cursor} in the template, then uninstall.\n    var cursor = cm._templateState.cursor;\n    if (cursor != null) {\n      var cursorPos = cursor.find();\n      if (cursorPos != null) {\n        cm.setSelection(cursorPos, cursorPos);\n      }\n    }\n    uninstall(cm);\n  }\n\n  function uninstall(cm, canceled) {\n    var state = cm._templateState;\n\n    function canceledMarker() {\n      DEBUG(\"template\", \"Canceled?\");\n\n      for ( var i = 0; i < state.marked.length; i++) {\n\tvar mark = state.marked[i];\n\tif ( mark == cm._hintTemplateMarker ) {\n\t  var pos = mark.find();\n\t  if ( pos && cm.getRange(pos.from, pos.to) == \"\\u2630\" )\n\t    cm.replaceRange(mark._templateVar, pos.from, pos.to);\n\t}\n      }\n    }\n\n    if ( state ) {\n      DEBUG(\"template\", \"Uninstall, clearing: \", state.marked.length);\n      for ( var i = 0; i < state.marked.length; i++) {\n\tstate.marked[i].clear();\n      }\n      if (state.cursor != null) {\n\tstate.cursor.clear();\n      }\n      state.marked.length = 0;\n      state.selectableMarkers.length = 0;\n    } else {\n      DEBUG(\"template\", \"Uninstall, no state\");\n    }\n\n    if ( cm._templateStack && cm._templateStack.length > 0 ) {\n      DEBUG(\"template\", \"Popping from level\", cm._templateStack.length);\n      var prev = cm._templateStack.pop();\n      state = cm._templateState = prev.state;\n      if ( canceled && cm._hintTemplateMarker )\n\tcanceledMarker();\n      if ( prev.marker ) {\n\tcm._hintTemplateMarker = prev.marker;\n      } else {\n\tdelete cm._hintTemplateMarker;\n      }\n    } else {\n      DEBUG(\"template\", \"Leaving template mode\");\n      cm.off(\"change\", onChange);\n      cm.off(\"endCompletion\", onEndCompletion);\n      cm.removeKeyMap(ourMap);\n      delete cm._templateState;\n      delete cm._hintTemplateMarker;\n    }\n  }\n\n  CodeMirror.templatesHint.getCompletions = function(cm, completions, text) {\n    var mode = cm.doc.mode.name;\n    var list = templatesMap[mode];\n    if (list) {\n      for ( var i = 0; i < list.length; i++) {\n        var template = list[i];\n        if (startsWith(template.name, text)) {\n          var label = template.name;\n          if (template.description) {\n            label += '- ' + template.description;\n          }\n          var className = \"CodeMirror-hint-template\";\n          if (template.className)\n            className = template.className;\n          var completion = {\n            \"className\" : className,\n            \"text\" : label,\n            \"template\" : template,\n          };\n          completion.data = completion;\n          completion.hint = function(cm, data, completion) {\n            completion.template.insert(cm, data);\n          };\n          completion.info = function(completion) {\n            var content = completion.template.content();\n\n            if (CodeMirror.runMode) {\n              var result = document.createElement('div');\n              result.className = 'cm-s-default';\n              if (cm.options && cm.options.theme)\n                result.className = 'cm-s-' + cm.options.theme;\n              CodeMirror.runMode(content, cm.getMode().name, result);\n              return result;\n            }\n            return content;\n          };\n          completions.push(completion);\n        }\n      }\n    }\n  }\n\n  CodeMirror.templatesHint.Template = Template;\n\n  CodeMirror.templatesHint.addTemplates = function(templates) {\n    var context = templates.context;\n    if (context) {\n      var list = templatesMap[context];\n      if (!list) {\n        list = [];\n        templatesMap[context] = list;\n      }\n      templates.templates.forEach(function(template) {\n        list.push(new Template(template));\n      });\n    }\n  }\n\n});\n\n\n","// Loosely based on codemirror/addon/hint/xml-hint.js\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/mode/prolog/prolog-template-hint',[ \"../../lib/codemirror\",\n\t     \"../../addon/hint/templates-hint\",\n\t     \"jquery\", \"config\", \"laconic\"\n\t   ], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror, TemplatesHint, $, config) {\n  \"use strict\";\n\n  var templates = config.swish.templates || [];\n\n  function PrologHint(options) {\n    var hint = this;\n\n    function modeToTemplate(mode) {\n      var varp = /[-+?:^@!]*([A-Z][A-Za-z_0-9]*)/g;\n      var detp = /\\bis\\s+(det|nondet|semidet|fail|multi)$/;\n\n      if ( !hint.template ) {\n\thint.template    = mode.replace(varp, \"$${$1}\")\n\t\t\t       .replace(detp, \"\");\n\tif ( !hint.template.match(/\\${cursor}/) )\n\t  hint.template += \"${cursor}\";\n      }\n\n      if ( !hint.displayText )\n\thint.displayText = mode;\n\n      if ( !hint.varTemplates ) {\n\tvar metav = mode.match(/:[A-Z][A-Za-z_0-9]*/g);\n\n\tif ( metav && metav.length > 0 ) {\n\t  var vt = {};\n\n\t  for(var i=0; i<metav.length; i++) {\n\t    vt[metav[i].substring(1)] = templates;\n\t  }\n\t  hint.varTemplates = vt;\n\t}\n      }\n    }\n\n    var copy = [ \"template\",\n\t\t \"displayText\",\n\t\t \"text\",\n\t\t {from:\"summary\", to:\"description\"},\n\t\t \"className\",\n\t\t \"varTemplates\"\n\t       ];\n\n    if ( typeof(options) == \"string\" ) {\n      this.displayText = options;\n      this.text = options;\n    } else {\n      for(var i=0; i<copy.length; i++) {\n\tvar spec = copy[i];\n\tif ( typeof(spec) == \"string\" ) {\n\t  if ( options[spec] )\n\t    this[spec] = options[spec];\n\t} else {\n\t  if ( options[spec.from] )\n\t    this[spec.to] = options[spec.from];\n\t}\n      }\n\n      if ( options.mode )\n\tmodeToTemplate(options.mode);\n\n      if ( options.classes )\n\toptions.className = options.classes.join(\" \");\n    }\n\n    /**\n     * Render a completion label inside a <li>.  This hook is called\n     * from standard CM addons/hint/show-hint.js to render the hinting\n     * alternatives.\n     * @param li is the list element\n     * @param data seems to be the result from getHints()\n     * @param me is this PrologHint instance\n     */\n    this.render = function(li, data, me) {\n      $(li).append(me.displayText);\n    }\n    /**\n     * Provide an HTML string or element that describes the completion.\n     * used by addon/hint/show-context-info.js\n     * @param me is this PrologHint instance\n     */\n    this.info = function(me) {\n      return me.description;\n    }\n  }\n\n  PrologHint.prototype.hint = function(cm, data, completion) {\n    var template = new CodeMirror.templatesHint.Template(this);\n    template.insert(cm, data);\n  };\n\n  function hintsFor(cm, state, options) {\n    var text = state.token.string;\n    var results = [];\n    var myTemplates = templates;\n\n    function startsWith(str, start) {\n      return str.slice(0, start.length) == start;\n    }\n\n    if ( cm._hintTemplateMarker ) {\n      if ( text == \"\\u2630\" )\n\ttext = \"\";\n      myTemplates = cm._hintTemplateMarker._templates;\n    }\n\n    var symbol = text.length > 0 && !text.match(/\\w/);\n\n    if ( myTemplates ) {\n      for(var i=0; i<myTemplates.length; i++) {\n\tvar templ = myTemplates[i];\n\tif ( typeof(templ) == \"string\" ) {\n\t  if ( startsWith(templ, text) )\n\t    results.push(new PrologHint(templ));\n\t} else {\n\t  var fields = [\"name\", \"mode\", \"template\", \"text\"];\n\n\t  if ( symbol ) {\n\t    if ( templ.name && templ.name.indexOf(text) >= 0 )\n\t      results.push(new PrologHint(templ));\n\t  } else {\n\t    for(var j=0; j<fields.length; j++) {\n\t      if ( templ[fields[j]] )\n\t      { if ( startsWith(templ[fields[j]], text) ) {\n\t\t  results.push(new PrologHint(templ));\n\t        }\n\t\tbreak;\n\t      }\n\t    }\n\t  }\n\t}\n      }\n    }\n\n    if ( results.length == 0 ) {\t/* Include AnyWord hinting completions */\n      var anyword = CodeMirror.hint.anyword;\n      var opts = (text==\"\"&&cm._hintTemplateMarker) ?\n\t\t  { word: /[A-Z][A-Za-z0-9_]*/ } : options;\n      var anyhint = anyword(cm, opts);\n      for(var i=0; i<anyhint.list.length; i++)\n\tresults.push(new PrologHint(anyhint.list[i]));\n    }\n\n    return { list: results,\n             from: state.position.from,\n\t     to:   state.position.to\n           };\n  }\n\n  function getHints(cm, callback, options) {\n    var state = getState(cm);\n  //console.log(state);\n    var data  = hintsFor(cm, state, options);\n    CodeMirror.attachContextInfo(data);\n    callback(data);\n  }\n  getHints.async = true;\n\n  function getState(cm) {\n    var cur = cm.getCursor();\n    var token = cm.getTokenAt(cur);\n//  var enriched = cm.getEnrichedToken(token);\n    var inner = CodeMirror.innerMode(cm.getMode(), token.state);\n    if (inner.mode.name != \"prolog\") {\n      return null;\n    }\n\n    var tokenPosition = {\n      from: new CodeMirror.Pos(cur.line, token.start),\n      to:   new CodeMirror.Pos(cur.line, token.end)\n    };\n\n    return { token:    token,\n\t     position: tokenPosition\n           };\n  }\n\n  CodeMirror.registerHelper(\"hint\", \"prologTemplate\", getHints);\n\n  return {\n    getHints: getHints,\n    getState: getState\n  };\n});\n\n","/*  Generated file.  Do not edit!\n    Generated by Unicode/prolog_syntax_map.pl\n*/\n\ndefine('cm/mode/prolog/prolog-ctype',[], function() {\nvar UNICODE_MAP_SIZE     = 4353;\nvar U_ID_START            = 0x1;\nvar U_ID_CONTINUE         = 0x2;\nvar U_UPPERCASE           = 0x4;\nvar U_SEPARATOR           = 0x8;\nvar U_SYMBOL             = 0x10;\nvar U_OTHER              = 0x20;\nvar U_CONTROL            = 0x40;\n\n\nvar ucp0x00 = \"\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x00\\x00\\x00\\x10\\x10\\x00\\x10\\x00\\x00\\x00\\x10\\x10\\x00\\x10\\x10\\x10\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x00\\x10\\x10\\x10\\x10\\x10\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x00\\x10\\x00\\x10\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x10\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x03\\x10\\x10\\x40\\x10\\x10\\x10\\x10\\x20\\x20\\x10\\x03\\x10\\x10\\x10\\x20\\x03\\x10\\x20\\x20\\x20\\x10\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x10\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\";\nvar ucp0x01 = \"\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x07\\x03\\x07\\x03\\x07\\x03\\x03\\x03\\x07\\x07\\x03\\x07\\x03\\x07\\x07\\x03\\x07\\x07\\x07\\x03\\x03\\x07\\x07\\x07\\x07\\x03\\x07\\x07\\x03\\x07\\x07\\x07\\x03\\x03\\x03\\x07\\x07\\x03\\x07\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x07\\x03\\x07\\x03\\x03\\x07\\x03\\x07\\x07\\x03\\x07\\x07\\x07\\x03\\x07\\x03\\x07\\x07\\x03\\x03\\x03\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x03\\x03\\x07\\x03\\x03\\x07\\x03\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x03\\x07\\x03\\x03\\x07\\x03\\x07\\x07\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\";\nvar ucp0x02 = \"\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x03\\x07\\x07\\x03\\x03\\x07\\x03\\x07\\x07\\x07\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x03\\x10\\x03\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\";\nvar ucp0x03 = \"\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x07\\x03\\x07\\x03\\x03\\x10\\x07\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x10\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x07\\x12\\x07\\x07\\x07\\x00\\x07\\x00\\x07\\x07\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x00\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x03\\x03\\x07\\x07\\x07\\x03\\x03\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x03\\x03\\x03\\x03\\x07\\x03\\x10\\x07\\x03\\x07\\x07\\x03\\x03\\x07\\x07\\x07\";\nvar ucp0x04 = \"\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x10\\x02\\x02\\x02\\x02\\x02\\x20\\x20\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\";\nvar ucp0x05 = \"\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x00\\x00\\x03\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x10\\x10\\x00\\x00\\x00\\x00\\x10\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x02\\x10\\x02\\x02\\x10\\x02\\x02\\x10\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x06 = \"\\x40\\x40\\x40\\x40\\x40\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x40\\x00\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x10\\x10\\x03\\x03\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x40\\x10\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x02\\x02\\x10\\x02\\x02\\x02\\x02\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x10\\x10\\x03\";\nvar ucp0x07 = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x40\\x03\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x10\\x10\\x10\\x10\\x03\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x08 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x02\\x02\\x02\\x03\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x00\\x00\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\";\nvar ucp0x09 = \"\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x10\\x10\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x02\\x02\\x02\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x00\\x00\\x02\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x02\\x02\\x00\\x00\\x02\\x02\\x02\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x00\\x00\\x00\\x00\\x03\\x03\\x00\\x03\\x03\\x03\\x02\\x02\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x10\\x10\\x20\\x20\\x20\\x20\\x20\\x20\\x10\\x10\\x00\\x00\\x00\\x00\";\nvar ucp0x0a = \"\\x00\\x02\\x02\\x02\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x00\\x03\\x03\\x00\\x03\\x03\\x00\\x00\\x02\\x00\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x02\\x02\\x00\\x00\\x02\\x02\\x02\\x00\\x00\\x00\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x00\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x02\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x02\\x02\\x02\\x00\\x02\\x02\\x02\\x00\\x00\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x02\\x02\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x0b = \"\\x00\\x02\\x02\\x02\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x02\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x02\\x02\\x00\\x00\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x00\\x00\\x00\\x00\\x03\\x03\\x00\\x03\\x03\\x03\\x02\\x02\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x03\\x20\\x20\\x20\\x20\\x20\\x20\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x03\\x03\\x00\\x03\\x00\\x03\\x03\\x00\\x00\\x00\\x03\\x03\\x00\\x00\\x00\\x03\\x03\\x03\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x02\\x02\\x02\\x00\\x02\\x02\\x02\\x02\\x00\\x00\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x20\\x20\\x20\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x0c = \"\\x00\\x02\\x02\\x02\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x02\\x02\\x02\\x00\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x00\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x02\\x02\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x10\\x00\\x00\\x02\\x02\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x02\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x02\\x02\\x02\\x00\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x00\\x03\\x03\\x02\\x02\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x0d = \"\\x00\\x00\\x02\\x02\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x02\\x02\\x02\\x00\\x02\\x02\\x02\\x02\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x02\\x02\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x20\\x20\\x20\\x20\\x20\\x20\\x00\\x00\\x00\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x02\\x02\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x02\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x02\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x0e = \"\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x00\\x03\\x00\\x00\\x03\\x03\\x00\\x03\\x00\\x00\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x00\\x03\\x00\\x03\\x00\\x00\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x02\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x02\\x02\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x0f = \"\\x03\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x02\\x02\\x10\\x10\\x10\\x10\\x10\\x10\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x10\\x02\\x10\\x02\\x10\\x02\\x10\\x10\\x10\\x10\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x02\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x10 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x10\\x10\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x03\\x02\\x02\\x02\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x00\\x07\\x00\\x00\\x00\\x00\\x00\\x07\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x03\\x03\\x03\\x03\";\nvar ucp0x12 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x00\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x00\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\";\nvar ucp0x13 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x02\\x02\\x02\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x22\\x22\\x22\\x22\\x22\\x22\\x22\\x22\\x22\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x14 = \"\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\";\nvar ucp0x16 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x08\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x10\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x17 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x00\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x10\\x03\\x10\\x10\\x10\\x10\\x03\\x02\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x18 = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x02\\x02\\x02\\x40\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x03\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x19 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x10\\x00\\x00\\x00\\x10\\x10\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x22\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\";\nvar ucp0x1a = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x03\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x1b = \"\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\";\nvar ucp0x1c = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x10\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x02\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x1d = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\";\nvar ucp0x1e = \"\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\";\nvar ucp0x1f = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x07\\x07\\x07\\x07\\x07\\x07\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x07\\x07\\x07\\x07\\x07\\x07\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x07\\x00\\x07\\x00\\x07\\x00\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x07\\x07\\x07\\x07\\x03\\x10\\x03\\x10\\x10\\x10\\x03\\x03\\x03\\x00\\x03\\x03\\x07\\x07\\x07\\x07\\x03\\x10\\x10\\x10\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x07\\x07\\x07\\x07\\x00\\x10\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x10\\x10\\x10\\x00\\x00\\x03\\x03\\x03\\x00\\x03\\x03\\x07\\x07\\x07\\x07\\x03\\x10\\x10\\x00\";\nvar ucp0x20 = \"\\x08\\x08\\x08\\x08\\x08\\x08\\x08\\x08\\x08\\x08\\x08\\x40\\x40\\x40\\x40\\x40\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x08\\x08\\x40\\x40\\x40\\x40\\x40\\x08\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x12\\x12\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x12\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x08\\x40\\x40\\x40\\x40\\x40\\x00\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x20\\x03\\x00\\x00\\x20\\x20\\x20\\x20\\x20\\x20\\x10\\x10\\x10\\x10\\x10\\x03\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x10\\x10\\x10\\x10\\x10\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x20\\x20\\x20\\x20\\x02\\x20\\x20\\x20\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x21 = \"\\x10\\x10\\x07\\x10\\x10\\x10\\x10\\x07\\x10\\x10\\x03\\x07\\x07\\x07\\x03\\x03\\x07\\x07\\x07\\x03\\x10\\x07\\x10\\x10\\x13\\x07\\x07\\x07\\x07\\x07\\x10\\x10\\x10\\x10\\x10\\x10\\x07\\x10\\x07\\x10\\x07\\x10\\x07\\x07\\x07\\x07\\x13\\x03\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x03\\x03\\x07\\x07\\x10\\x10\\x10\\x10\\x10\\x07\\x03\\x03\\x03\\x03\\x10\\x10\\x10\\x10\\x03\\x10\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x03\\x03\\x03\\x03\\x03\\x20\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\";\nvar ucp0x23 = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x24 = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x14\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\";\nvar ucp0x27 = \"\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\";\nvar ucp0x2b = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x2c = \"\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x07\\x03\\x07\\x07\\x07\\x03\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x07\\x07\\x07\\x03\\x07\\x03\\x03\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x03\\x10\\x10\\x10\\x10\\x10\\x10\\x07\\x03\\x07\\x03\\x02\\x02\\x02\\x07\\x03\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x20\\x10\\x10\";\nvar ucp0x2d = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x00\\x00\\x00\\x00\\x00\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\";\nvar ucp0x2e = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x2f = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\";\nvar ucp0x30 = \"\\x08\\x10\\x10\\x10\\x10\\x03\\x03\\x03\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x10\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x02\\x02\\x13\\x13\\x03\\x03\\x03\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x03\\x03\\x03\\x03\";\nvar ucp0x31 = \"\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x10\\x10\\x20\\x20\\x20\\x20\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\";\nvar ucp0x32 = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x10\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\";\nvar ucp0x4d = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\";\nvar ucp0x9f = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0xa4 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\";\nvar ucp0xa6 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x03\\x02\\x20\\x20\\x20\\x10\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0xa7 = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x03\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x03\\x07\\x03\\x07\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x03\\x10\\x10\\x07\\x03\\x07\\x03\\x00\\x07\\x03\\x07\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x03\\x07\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\";\nvar ucp0xa8 = \"\\x03\\x03\\x02\\x03\\x03\\x03\\x02\\x03\\x03\\x03\\x03\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x20\\x20\\x20\\x20\\x20\\x20\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x10\\x03\\x00\\x00\\x00\\x00\";\nvar ucp0xa9 = \"\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0xaa = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x10\\x10\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x10\\x03\\x02\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x03\\x02\\x02\\x02\\x03\\x03\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x03\\x02\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x03\\x03\\x03\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0xab = \"\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x02\\x02\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0xd7 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\";\nvar ucp0xd8 = \"\\x40\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0xdb = \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x40\\x40\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x40\";\nvar ucp0xdc = \"\\x40\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0xdf = \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x40\";\nvar ucp0xe0 = \"\\x40\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0xf8 = \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x40\";\nvar ucp0xfa = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0xfb = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x03\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x00\\x03\\x03\\x00\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\";\nvar ucp0xfd = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x00\\x00\";\nvar ucp0xfe = \"\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x12\\x12\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x12\\x12\\x12\\x10\\x10\\x10\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x40\";\nvar ucp0xff = \"\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x10\\x10\\x10\\x10\\x12\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x40\\x40\\x40\\x10\\x10\\x00\\x00\";\nvar ucp0x100 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x101 = \"\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x20\\x20\\x20\\x20\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x20\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x02\\x00\\x00\";\nvar ucp0x102 = \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x103 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x20\\x20\\x20\\x20\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x104 = \"\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x108 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x00\\x00\\x00\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x10\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x109 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x20\\x20\\x20\\x20\\x20\\x20\\x00\\x00\\x00\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x10a = \"\\x03\\x02\\x02\\x02\\x00\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x02\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x20\\x20\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x10b = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x10c = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x10e = \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x110 = \"\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x40\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x111 = \"\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x116 = \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x123 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x124 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x134 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x16a = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x16f = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x02\\x02\\x02\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x1b0 = \"\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x1d0 = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x1d1 = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x10\\x02\\x02\\x02\\x02\\x02\\x02\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x02\\x02\\x02\\x02\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x1d2 = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x02\\x02\\x02\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x1d3 = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x1d4 = \"\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x00\\x07\\x07\\x00\\x00\\x07\\x00\\x00\\x07\\x07\\x00\\x00\\x07\\x07\\x07\\x07\\x00\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x00\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\";\nvar ucp0x1d5 = \"\\x03\\x03\\x03\\x03\\x07\\x07\\x00\\x07\\x07\\x07\\x07\\x00\\x00\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x00\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x00\\x07\\x07\\x07\\x07\\x00\\x07\\x07\\x07\\x07\\x07\\x00\\x07\\x00\\x00\\x00\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\";\nvar ucp0x1d6 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x10\\x03\\x03\\x03\\x03\";\nvar ucp0x1d7 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x10\\x03\\x03\\x03\\x03\\x03\\x03\\x07\\x03\\x00\\x00\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\";\nvar ucp0x1ee = \"\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x00\\x03\\x00\\x00\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x00\\x03\\x00\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x00\\x00\\x00\\x00\\x03\\x00\\x03\\x00\\x03\\x00\\x03\\x03\\x03\\x00\\x03\\x03\\x00\\x03\\x00\\x00\\x03\\x00\\x03\\x00\\x03\\x00\\x03\\x00\\x03\\x00\\x03\\x03\\x00\\x03\\x00\\x00\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x00\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x1f0 = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x1f1 = \"\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\";\nvar ucp0x1f2 = \"\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x1f3 = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x1f4 = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x10\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x10\\x10\\x10\\x10\\x00\\x00\\x00\";\nvar ucp0x1f5 = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\";\nvar ucp0x1f6 = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x1f7 = \"\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x2a6 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x2b7 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\";\nvar ucp0x2b8 = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x2fa = \"\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0xe00 = \"\\x00\\x40\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x40\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0xe01 = \"\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0xf00 = \"\\x40\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0xfff = \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x40\\x00\\x00\";\nvar ucp0x1000 = \"\\x40\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nvar ucp0x10ff = \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x40\\x00\\x00\";\nvar uflags_map = [ucp0x00, ucp0x01, ucp0x02, ucp0x03, ucp0x04, ucp0x05, ucp0x06, ucp0x07,\n  ucp0x08, ucp0x09, ucp0x0a, ucp0x0b, ucp0x0c, ucp0x0d, ucp0x0e, ucp0x0f,\n  ucp0x10, 0x3, ucp0x12, ucp0x13, ucp0x14, 0x3, ucp0x16, ucp0x17,\n  ucp0x18, ucp0x19, ucp0x1a, ucp0x1b, ucp0x1c, ucp0x1d, ucp0x1e, ucp0x1f,\n  ucp0x20, ucp0x21, 0x10, ucp0x23, ucp0x24, 0x10, 0x10, ucp0x27,\n  0x10, 0x10, 0x10, ucp0x2b, ucp0x2c, ucp0x2d, ucp0x2e, ucp0x2f,\n  ucp0x30, ucp0x31, ucp0x32, 0x10, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, ucp0x4d, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, ucp0x9f,\n  0x3, 0x3, 0x3, 0x3, ucp0xa4, 0x3, ucp0xa6, ucp0xa7,\n  ucp0xa8, ucp0xa9, ucp0xaa, ucp0xab, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, ucp0xd7,\n  ucp0xd8, 0x0, 0x0, ucp0xdb, ucp0xdc, 0x0, 0x0, ucp0xdf,\n  ucp0xe0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  ucp0xf8, 0x3, ucp0xfa, ucp0xfb, 0x3, ucp0xfd, ucp0xfe, ucp0xff,\n  ucp0x100, ucp0x101, ucp0x102, ucp0x103, ucp0x104, 0x0, 0x0, 0x0,\n  ucp0x108, ucp0x109, ucp0x10a, ucp0x10b, ucp0x10c, 0x0, ucp0x10e, 0x0,\n  ucp0x110, ucp0x111, 0x0, 0x0, 0x0, 0x0, ucp0x116, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x3, 0x3, 0x3, ucp0x123, ucp0x124, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x3, 0x3, 0x3, 0x3, ucp0x134, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x3, 0x3, ucp0x16a, 0x0, 0x0, 0x0, 0x0, ucp0x16f,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  ucp0x1b0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  ucp0x1d0, ucp0x1d1, ucp0x1d2, ucp0x1d3, ucp0x1d4, ucp0x1d5, ucp0x1d6, ucp0x1d7,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ucp0x1ee, 0x0,\n  ucp0x1f0, ucp0x1f1, ucp0x1f2, ucp0x1f3, ucp0x1f4, ucp0x1f5, ucp0x1f6, ucp0x1f7,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, ucp0x2a6, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,\n  0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, ucp0x2b7,\n  ucp0x2b8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x3, 0x3, ucp0x2fa, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  ucp0xe00, ucp0xe01, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  ucp0xf00, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ucp0xfff,\n  ucp0x1000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ucp0x10ff,\n  0x0];\n\nfunction uflagsW(chr) {\n  var code = chr.charCodeAt(0);\n  var cp = Math.floor(code/0x100);\n  if ( cp < UNICODE_MAP_SIZE ) {\n    var map = uflags_map[cp];\n\n    if ( typeof(map) == \"number\" ) {\n      return map;\n    } else {\n      return map.charCodeAt(code&0xff);\n    }\n  }\n  return 0;\n}\n\nreturn {\n  flags:       uflagsW,\n  id_start:    function(chr) { return (uflagsW(chr) & U_ID_START)    != 0 },\n  id_continue: function(chr) { return (uflagsW(chr) & U_ID_CONTINUE) != 0 },\n  uppercase:   function(chr) { return (uflagsW(chr) & U_UPPERCASE)   != 0 },\n  separator:   function(chr) { return (uflagsW(chr) & U_SEPARATOR)   != 0 },\n  symbol:      function(chr) { return (uflagsW(chr) & U_SYMBOL)      != 0 },\n  other:       function(chr) { return (uflagsW(chr) & U_OTHER)       != 0 },\n  control:     function(chr) { return (uflagsW(chr) & U_CONTROL)     != 0 }\n}\n});\n\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/mode/prolog/prolog',[\"../../lib/codemirror\", \"./prolog-ctype\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror, ctype) {\n\"use strict\";\n\n  CodeMirror.defineMode(\"prolog\", function(cmConfig, parserConfig) {\n\n  function chain(stream, state, f) {\n    state.tokenize = f;\n    return f(stream, state);\n  }\n\n\t\t /*******************************\n\t\t *\t   CONFIG DATA\t\t*\n\t\t *******************************/\n\n  var config = { quasiQuotations: true,\t\t/* {|Syntax||Quotation|} */\n\t         dicts: true,\t\t\t/* tag{k:v, ...} */\n\t\t unicodeEscape: true,\t\t/* \\uXXXX and \\UXXXXXXXX */\n\t\t multiLineQuoted: true,\t\t/* \"...\\n...\" */\n\t\t groupedIntegers: true\t\t/* 10 000 or 10_000 */\n\t       };\n\n  var quoteType = { '\"': \"string\",\n\t\t    \"'\": \"qatom\",\n\t\t    \"`\": \"bqstring\"\n\t\t  };\n\n  var isSingleEscChar = /[abref\\\\'\"nrtsv]/;\n  var isOctalDigit    = /[0-7]/;\n  var isHexDigit      = /[0-9a-fA-F]/;\n\n  var isSymbolChar = /[-#$&*+./:<=>?@\\\\^~]/;\t/* Prolog glueing symbols chars */\n  var isSoloChar   = /[[\\]{}(),;|!]/;\t\t/* Prolog solo chars */\n  var isNeck       = /^(:-|-->)$/;\n  var isControlOp  = /^(,|;|->|\\*->|\\\\+|\\|)$/;\n\n\n\t\t /*******************************\n\t\t *\t CHARACTER ESCAPES\t*\n\t\t *******************************/\n\n  function readDigits(stream, re, count) {\n    if ( count > 0 ) {\n      while( count-- > 0 ) {\n\tif ( !re.test(stream.next()) )\n\t  return false;\n      }\n    } else {\n      while ( re.test(stream.peek()) )\n\tstream.next();\n    }\n    return true;\n  }\n\n  function readEsc(stream) {\n    var next = stream.next();\n    if ( isSingleEscChar.test(next) )\n      return true;\n    switch( next )\n    { case \"u\":\n\tif ( config.unicodeEscape )\n\t  return readDigits(stream, isHexDigit, 4); /* SWI */\n        return false;\n      case \"U\":\n\tif ( config.unicodeEscape )\n\t  return readDigits(stream, isHexDigit, 8); /* SWI */\n        return false;\n      case null: return true;\t\t\t/* end of line */\n      case \"c\": stream.eatSpace(); return true;\n      case \"x\": return readDigits(stream, isHexDigit, 2);\n    }\n    if ( isOctalDigit.test(next) ) {\n      if ( !readDigits(stream, isOctalDigit, -1) )\n\treturn false;\n      if ( stream.peek() == \"\\\\\" )\t\t/* SWI: optional closing \\ */\n\tstream.next();\n      return true;\n    }\n    return false;\n  }\n\n  function nextUntilUnescaped(stream, state, end) {\n    var next;\n    while ((next = stream.next()) != null) {\n      if ( next == end && end != stream.peek() )\n      { state.nesting.pop();\n        return false;\n      }\n      if ( next == \"\\\\\" )\n      { if ( !readEsc(stream) )\n\t  return false;\n      }\n    }\n    return config.multiLineQuoted;\n  }\n\n\t\t /*******************************\n\t\t *\tCONTEXT NESTING\t\t*\n\t\t *******************************/\n\n  function nesting(state) {\n    return state.nesting.slice(-1)[0];\n  }\n\n  /* Called on every non-comment token */\n  function setArg1(state) {\n    var nest = nesting(state);\n    if ( nest ) {\n      if ( nest.arg == 0 )\t\t/* nested in a compound */\n\tnest.arg = 1;\n      else if ( nest.type == \"control\" )\n\tstate.goalStart = false;\n    } else\n      state.goalStart = false;\n  }\n\n  function setArgAlignment(state) {\n    var nest = nesting(state);\n    if ( nest && !nest.alignment && nest.arg != undefined ) {\n      if ( nest.arg == 0 )\n\tnest.alignment = nest.leftCol ? nest.leftCol+4 : nest.column+4;\n      else\n\tnest.alignment = nest.column+1;\n    }\n  }\n\n  function nextArg(state) {\n    var nest = nesting(state);\n    if ( nest ) {\n      if ( nest.arg )\t\t\t/* nested in a compound */\n\tnest.arg++;\n      else if ( nest.type == \"control\" )\n\tstate.goalStart = true;\t\t/* FIXME: also needed for ; and -> */\n    } else\n      state.goalStart = true;\n  }\n\n  function isControl(state) {\t\t/* our terms are goals */\n    var nest = nesting(state);\n    if ( nest ) {\n      if ( nest.type == \"control\" ) {\n\treturn true;\n      }\n      return false;\n    } else\n      return state.inBody;\n  }\n\n  // Used as scratch variables to communicate multiple values without\n  // consing up tons of objects.\n  var type, content;\n  function ret(tp, style, cont) {\n    type = tp; content = cont;\n    return style;\n  }\n\n  function peekSpace(stream) {\t\t/* TBD: handle block comment as space */\n    if ( stream.eol() ||\n\t /[\\s%]/.test(stream.peek()) )\n      return true;\n    return false;\n  }\n\n\n\t\t /*******************************\n\t\t *\t   SUB TOKENISERS\t*\n\t\t *******************************/\n\n  function plTokenBase(stream, state) {\n    var ch = stream.next();\n\n    if ( ch == \"(\" ) {\n      if ( state.lastType == \"functor\" ) {\n\tstate.nesting.push({ functor: state.functorName,\n\t\t\t     column: stream.column(),\n\t\t\t     leftCol: state.functorColumn,\n\t\t\t     arg: 0\n\t\t\t   });\n\tdelete state.functorName;\n\tdelete state.functorColumn;\n      } else {\n\tstate.nesting.push({ type: \"control\",\n\t\t\t     closeColumn: stream.column(),\n\t\t\t     alignment: stream.column()+4\n\t\t\t   });\n      }\n      return ret(\"solo\", null, \"(\");\n    }\n\n    if ( ch == \"{\" && state.lastType == \"tag\" ) {\n      state.nesting.push({ tag: state.tagName,\n\t\t\t   column: stream.column(),\n\t\t\t   leftCol: state.tagColumn,\n\t\t\t   arg: 0\n\t\t\t });\n      delete state.tagName;\n      delete state.tagColumn;\n      return ret(\"dict_open\", null);\n    }\n\n    if ( ch == \"/\" && stream.eat(\"*\") )\n      return chain(stream, state, plTokenComment);\n\n    if ( ch == \"%\" ) {\n      stream.skipToEnd();\n      return ret(\"comment\", \"comment\");\n    }\n\n    setArg1(state);\n\n    if ( isSoloChar.test(ch) ) {\n      switch ( ch )\n      { case \")\":\n\t  state.nesting.pop();\n\t  break;\n\tcase \"]\":\n\t  state.nesting.pop();\n\t  return ret(\"list_close\", null, \"]\");\n\tcase \"}\":\n\t{ var nest = nesting(state);\n\t  var type = (nest && nest.tag) ? \"dict_close\" : \"brace_term_close\";\n\n\t  state.nesting.pop();\n\t  return ret(type, null);\n\t}\n\tcase \",\":\n\t  if ( stream.eol() )\n\t    state.commaAtEOL = true;\n\t  nextArg(state);\n          /*FALLTHROUGH*/\n\tcase \";\":\n\t  if ( isControl(state) )\n\t    state.goalStart = true;\n\t  break;\n\tcase \"[\":\n\t  state.nesting.push({ type: \"list\",\n\t\t\t       closeColumn: stream.column(),\n\t\t\t       alignment: stream.column()+2\n\t\t\t     });\n\t  return ret(\"list_open\", null, \"[\");\n\t  break;\n\tcase \"{\":\n\t  if ( config.quasiQuotations && stream.eat(\"|\") ) {\n\t    state.nesting.push({ type: \"quasi-quotation\",\n\t\t\t         alignment: stream.column()+1\n\t\t\t       });\n\t    return ret(\"qq_open\", \"qq_open\");\n\t  } else {\n\t    state.nesting.push({ type: \"curly\",\n\t\t\t         closeColumn: stream.column(),\n\t\t\t\t alignment: stream.column()+2\n\t\t\t       });\n\t    return ret(\"brace_term_open\", null);\n\t  }\n\t  break;\n\tcase \"|\":\n\t  if ( config.quasiQuotations ) {\n\t    if ( stream.eat(\"|\") ) {\n\t      state.tokenize = plTokenQuasiQuotation;\n\t      return ret(\"qq_sep\", \"qq_sep\");\n\t    } else if ( stream.eat(\"}\") ) {\n\t      state.nesting.pop();\n\t      return ret(\"qq_close\", \"qq_close\");\n\t    }\n\t  }\n\t  if ( isControl(state) )\n\t    state.goalStart = true;\n\t  break;\n      }\n      return ret(\"solo\", null, ch);\n    }\n\n    if (ch == '\"' || ch == \"'\" || ch == \"`\")\n    { state.nesting.push({ type: \"quoted\",\n\t\t\t   alignment: stream.column()+1\n\t\t\t });\n      return chain(stream, state, plTokenString(ch));\n    }\n\n    if ( ch == \"0\" ) {\n      if ( stream.eat(/x/i)) {\n\tstream.eatWhile(/[\\da-f]/i);\n\treturn ret(\"number\", \"number\");\n      }\n      if ( stream.eat(/o/i)) {\n\tstream.eatWhile(/[0-7]/i);\n\treturn ret(\"number\", \"number\");\n      }\n      if ( stream.eat(/'/) ) {\t\t\t/* 0' */\n\tvar next = stream.next();\n\tif ( next == \"\\\\\" ) {\n\t  if ( !readEsc(stream) )\n\t    return ret(\"error\", \"error\");\n\t}\n\treturn ret(\"code\", \"code\");\n      }\n    }\n\n    if ( /\\d/.test(ch) || /[+-]/.test(ch) && stream.eat(/\\d/)) {\n      if ( config.groupedIntegers )\n\tstream.match(/^\\d*((_|\\s+)\\d+)*(?:\\.\\d+)?(?:[eE][+\\-]?\\d+)?/);\n      else\n\tstream.match(/^\\d*(?:\\.\\d+)?(?:[eE][+\\-]?\\d+)?/);\n      return ret(ch == \"-\" ? \"neg-number\" :\n\t\t ch == \"+\" ? \"pos-number\" :\n\t\t \"number\");\n    }\n\n    if ( ctype.symbol(ch) ) {\n      stream.eatWhile(ctype.symbol);\n      var atom = stream.current();\n      if ( atom == \".\" && peekSpace(stream) ) {\n\tif ( nesting(state) ) {\n\t  return ret(\"fullstop\", \"error\", atom);\n\t} else {\n\t} return ret(\"fullstop\", \"fullstop\", atom);\n      } else if ( isNeck.test(atom) ) {\n\treturn ret(\"neck\", \"neck\", atom);\n      } else if ( isControl(state) && isControlOp.test(atom) ) {\n\tstate.goalStart = true;\n\treturn ret(\"symbol\", \"operator\", atom);\n      } else\n\treturn ret(\"symbol\", \"operator\", atom);\n    }\n\n    stream.eatWhile(ctype.id_continue);\n    var word = stream.current();\n    if ( stream.peek() == \"{\" && config.dicts ) {\n      state.tagName = word;\t\t\t/* tmp state extension */\n      state.tagColumn = stream.column();\n      return ret(\"tag\", \"tag\", word);\n    } else if ( ch == \"_\" ) {\n      if ( word.length == 1 ) {\n\treturn ret(\"var\", \"anon\", word);\n      } else {\n\tvar sec = word.charAt(1);\n\tif ( ctype.uppercase(sec) )\n\t  return ret(\"var\", \"var-2\", word);\n      }\n      return ret(\"var\", \"var\", word);\n    } else if ( ctype.uppercase(ch) ) {\n      return ret(\"var\", \"var\", word);\n    } else if ( stream.peek() == \"(\" ) {\n      state.functorName = word;\t\t\t/* tmp state extension */\n      state.functorColumn = stream.column();\n      return ret(\"functor\", \"functor\", word);\n    } else\n      return ret(\"atom\", \"atom\", word);\n  }\n\n  function plTokenString(quote) {\n    return function(stream, state) {\n      if (!nextUntilUnescaped(stream, state, quote)) {\n        state.tokenize = plTokenBase;\n\tif ( stream.peek() == \"(\" ) {\t\t/* 'quoted functor'() */\n\t  var word = stream.current();\n\t  state.functorName = word;\t\t/* tmp state extension */\n\t  return ret(\"functor\", \"functor\", word);\n\t}\n\tif ( stream.peek() == \"{\" && config.dicts ) { /* 'quoted tag'{} */\n\t  var word = stream.current();\n\t  state.tagName = word;\t\t\t/* tmp state extension */\n\t  return ret(\"tag\", \"tag\", word);\n\t}\n      }\n      return ret(quoteType[quote], quoteType[quote]);\n    };\n  }\n\n  function plTokenQuasiQuotation(stream, state) {\n    var maybeEnd = false, ch;\n    while (ch = stream.next()) {\n      if (ch == \"}\" && maybeEnd) {\n        state.tokenize = plTokenBase;\n\tstream.backUp(2);\n\tbreak;\n      }\n      maybeEnd = (ch == \"|\");\n    }\n    return ret(\"qq_content\", \"qq_content\");\n  }\n\n  function plTokenComment(stream, state) {\n    var maybeEnd = false, ch;\n    while (ch = stream.next()) {\n      if (ch == \"/\" && maybeEnd) {\n        state.tokenize = plTokenBase;\n        break;\n      }\n      maybeEnd = (ch == \"*\");\n    }\n    return ret(\"comment\", \"comment\");\n  }\n\n\n\t\t /*******************************\n\t\t *\t   RETURN OBJECT\t*\n\t\t *******************************/\n\n  return {\n    startState: function() {\n      return {\n        tokenize: plTokenBase,\n\tinBody: false,\n\tgoalStart: false,\n\tlastType: null,\n\tnesting: new Array(),\t\t/* ([{}]) nesting FIXME: copy this */\n\tcurTerm: null,\t\t\t/* term index in metainfo */\n\tcurToken: null\t\t\t/* token in term */\n      };\n    },\n\n    token: function(stream, state) {\n      var nest;\n\n      if ( state.curTerm == null && parserConfig.metainfo ) {\n\tstate.curTerm = 0;\n\tstate.curToken = 0;\n      }\n\n      if ( stream.sol() )\n\tdelete state.commaAtEOL;\n\n      if ( state.tokenize == plTokenBase && stream.eatSpace() ) {\n\tif ( stream.eol() )\n\t  setArgAlignment(state);\n\treturn null;\n      }\n\n      var style = state.tokenize(stream, state);\n\n      if ( stream.eol() )\n\tsetArgAlignment(state);\n\n      if ( type == \"neck\" ) {\n\tstate.inBody = true;\n\tstate.goalStart = true;\n      } else if ( type == \"fullstop\" ) {\n\tstate.inBody = false;\n\tstate.goalStart = false;\n      }\n\n      state.lastType = type;\n\n      if ( typeof(parserConfig.enrich) == \"function\" )\n\tstyle = parserConfig.enrich(stream, state, type, content, style);\n\n      return style;\n    },\n\n    indent: function(state, textAfter) {\n      if (state.tokenize == plTokenComment) return CodeMirror.Pass;\n\n      var nest;\n      if ( (nest=nesting(state)) ) {\n\tif ( nest.closeColumn && !state.commaAtEOL )\n\t  return nest.closeColumn;\n\treturn nest.alignment;\n      }\n      if ( !state.inBody )\n\treturn 0;\n\n      return 4;\n    },\n\n    theme: \"prolog\",\n\n    blockCommentStart: \"/*\",\t\t/* continuecomment.js support */\n    blockCommentEnd: \"*/\",\n    blockCommentContinue: \" * \",\n    lineComment: \"%\",\n  };\n});\n\nCodeMirror.defineMIME(\"text/x-prolog\", \"prolog\");\n});\n\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/mode/prolog/prolog_keys',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\n\n\t\t /*******************************\n\t\t *\t    ACTIVE KEYS\t\t*\n\t\t *******************************/\n\n/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\nSupport if-then-else layout like this:\n\ngoal :-\n    (\tCondition\n    ->  IfTrue\n    ;   IfFalse\n    ).\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */\n\n\n  CodeMirror.commands.prologStartIfThenElse = function(cm) {\n    var start = cm.getCursor(\"start\");\n    var token = cm.getTokenAt(start, true);\n\n    if ( token.state.goalStart == true )\n    { cm.replaceSelection(\"(   \", \"end\");\n      return;\n    }\n\n    return CodeMirror.Pass;\n  }\n\n  CodeMirror.commands.prologStartThen = function(cm) {\n    var start = cm.getCursor(\"start\");\n    var token = cm.getTokenAt(start, true);\n\n    /* FIXME: These functions are copied from prolog.js.  How\n       can we reuse these?\n    */\n    function nesting(state) {\n      var len = state.nesting.length;\n      if ( len > 0 )\n\treturn state.nesting[len-1];\n      return null;\n    }\n\n    function isControl(state) {\t\t/* our terms are goals */\n      var nest = nesting(state);\n      if ( nest ) {\n\tif ( nest.type == \"control\" ) {\n\t  return true;\n\t}\n\treturn false;\n      } else\n\treturn state.inBody;\n    }\n\n    if ( start.ch == token.end &&\n\t token.type == \"operator\" &&\n\t token.string == \"-\" &&\n\t isControl(token.state) )\n    { cm.replaceSelection(\">  \", \"end\");\n      return;\n    }\n\n    return CodeMirror.Pass;\n  }\n\n  CodeMirror.commands.prologStartElse = function(cm) {\n    var start = cm.getCursor(\"start\");\n    var token = cm.getTokenAt(start, true);\n\n    if ( token.start == 0 && start.ch == token.end &&\n\t !/\\S/.test(token.string) )\n    { cm.replaceSelection(\";   \", \"end\");\n      return;\n    }\n\n    return CodeMirror.Pass;\n  }\n\n  CodeMirror.defineOption(\"prologKeys\", null, function(cm, val, prev) {\n    if (prev && prev != CodeMirror.Init)\n      cm.removeKeyMap(\"prolog\");\n    if ( val ) {\n      var map = { name:     \"prolog\",\n\t\t  \"'('\":    \"prologStartIfThenElse\",\n\t\t  \"'>'\":    \"prologStartThen\",\n\t\t  \"';'\":    \"prologStartElse\",\n\t\t  \"Ctrl-L\": \"refreshHighlight\"\n\t\t};\n      cm.addKeyMap(map);\n    }\n  });\n\n});\n\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/mode/prolog/prolog_query',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\n  CodeMirror.commands.prologFireQuery = function(cm) {\n    var endl  = cm.lineCount();\n    var endc  = cm.getLine(endl-1).length;\n    var token = cm.getTokenAt({line:endl, ch:endc}, true);\n\n    if ( token.type == \"fullstop\" )\n      return cm.prologFireQuery(cm.getValue());\n\n    return CodeMirror.Pass;\n  }\n\n  CodeMirror.defineOption(\"prologQuery\", null, function(cm, func, prev) {\n    if (prev && prev != CodeMirror.Init)\n      cm.removeKeyMap(\"prologQuery\");\n    if ( typeof(func) == \"function\" ) {\n      var map = { name:         \"prologQuery\",\n\t\t  \"Enter\":      \"prologFireQuery\",\n\t\t  \"Ctrl-Enter\": \"newlineAndIndent\"\n\t\t};\n      cm.addKeyMap(map);\n      cm.prologFireQuery = func;\n    }\n  });\n});\n\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\nThis  addon  extends  the  \"prolog\"   mode  to  perform  server-assisted\nhighlighting.   Server-assisted   highlighting   provides   a   semantic\nclassification of tokens.\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/mode/prolog/prolog_server',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  var DEFAULT_DELAY = 1000;\n  var USE_CHANGES_IF_LONGER_THEN = 1000;\n\n  function State(options) {\n    if (typeof options == \"object\") {\n      this.enabled = options.enabled || false;\n      this.role    = options.role    || \"source\";\n      if ( options.sourceID )\n\tthis.sourceID = options.sourceID;\n      this.url  = { change: options.url + \"change\",\n\t\t    tokens: options.url + \"tokens\",\n\t\t    leave:  options.url + \"leave\",\n\t\t    info:   options.url + \"info\"\n\t\t  },\n      this.delay = options.delay ? options.delay : DEFAULT_DELAY;\n      this.generationFromServer = -1;\n      this.tmo = null;\t\t\t/* timeout handle */\n    }\n  }\n\n  /**\n   * Trap CodeMirror change events. This asks for\n   * serverAssistedHighlight() after a configured delay.  If there\n   * is a mirror on the server, we collect the changes in an array\n   * and post them when we ask for server tokens.  Earlier versions\n   * posted immediately, but this is a waste of resources.  We might\n   * want to restore that behaviour if we want to forward changes to\n   * other users.\n   */\n  function changeEditor(cm, change) {\n    var state = cm.state.prologHighlightServer;\n\n    if ( state == null || state.url == null || !state.enabled )\n      return;\n\n    if ( state.tmo ) {\t\t\t/* changing: delay refresh */\n      cm.askRefresh();\n    }\n\n    if ( state.changes !== undefined )\n      state.changes.push(change);\n\n    if ( change.origin == \"setValue\" ||\n\t state.generationFromServer == -1 ) {\n      state.changes = undefined;\t/* force a clean start */\n      cm.serverAssistedHighlight();\n    }\n  }\n\n  function leaveEditor(cm) {\n    var state = cm.state.prologHighlightServer;\n\n    if ( state == null || state.url == null || state.uuid == null )\n      return;\n    var uuid = state.uuid;\n    delete state.uuid;\n\n    $.ajax({ url: state.url.leave,\n\t     async: false,  // otherwise it is killed before completion\n\t     contentType: 'application/json',\n\t     type: \"POST\",\n\t     dataType: \"json\",\n\t     data: JSON.stringify({ uuid: uuid\n\t\t\t\t  })\n\t   });\n  }\n\n  /**\n   * control server side highlight support. This can be in three states:\n   * (1) absent, in which case `cm.state.prologHighlightServer` is not\n   * present, (2) disabled and (3) enabled.\n   */\n  CodeMirror.defineOption(\"prologHighlightServer\", false, function(cm, val, old) {\n    function leaveCM() { leaveEditor(cm); }\n\n    if ( cm.state.prologHighlightServer ) {\n      if ( val == null ) {\t\t/* remove the highlight server */\n\tleaveEditor(cm);\n\tcm.off(\"change\", changeEditor);\n\twindow.removeEventListener(\"unload\", leaveCM);\n\tdelete cm.state.prologHighlightServer;\n\tcm.setOption(\"mode\", {name:\"prolog\"});\n      } else {\n\tif ( val.enabled != old.enabled ) {\n\t  cm.state.prologHighlightServer.enabled = val.enabled;\n\t  if ( val.enabled ) {\t\t/* enable the highlight server */\n\t    cm.on(\"change\", changeEditor);\n\t    window.addEventListener(\"unload\", leaveCM);\n\t    if ( cm.lineCount() > 0 ) {\n\t      cm.serverAssistedHighlight(true);\n\t    }\n\t  } else {\t\t\t/* disable */\n\t    leaveEditor(cm);\n\t    cm.off(\"change\", changeEditor);\n\t    window.removeEventListener(\"unload\", leaveCM);\n\t    cm.setOption(\"mode\", {name:\"prolog\"});\n\t  }\n\t}\n      }\n    } else if ( val ) {\t\t\t/* create for the first time */\n      cm.state.prologHighlightServer = new State(val);\n      if ( cm.state.prologHighlightServer.enabled ) {\n\tcm.on(\"change\", changeEditor);\n\twindow.addEventListener(\"unload\", leaveCM);\n\tif ( cm.lineCount() > 0 ) {\n\t  cm.serverAssistedHighlight(true);\n\t}\n      }\n    }\n  });\n\n\n  CodeMirror.prototype.askRefresh = function(time) {\n    var cm = this;\n    var state = cm.state.prologHighlightServer;\n\n    if ( state == null )\n      return;\n\n    if ( time === undefined )\n      time = state.delay;\n\n    if ( state.tmo )\n      clearTimeout(state.tmo);\n\n    state.tmo = setTimeout(function() { cm.serverAssistedHighlight(); },\n\t\t\t   time);\n  };\n\n\n  CodeMirror.prototype.serverAssistedHighlight = function(always) {\n    var cm = this;\n    var state = cm.state.prologHighlightServer;\n    var msg = {};\n\n    state.tmo = null;\n\n    if ( state == null || state.url == null || !state.enabled ||\n\t (cm.isClean(state.generationFromServer) && !always) )\n      return;\n\n    function modeOptions() {\n      var opts = cm.getOption(\"mode\");\n\n      if ( typeof(opts) != \"object\" ) {\n\topts = { name:\"prolog\",\n\t\t enrich:enrichStyle,\n\t\t editor:cm\n\t       };\n      } else if ( !opts.enrich ) {\n\topts.enrich = enrichStyle;\n\topts.editor = cm;\n      }\n      return opts;\n    }\n\n    if ( state.uuid ) {\t\t\t/* server has a mirror */\n      msg.uuid = state.uuid;\n      if ( state.changes == undefined ) {\n\tmsg.text = cm.getValue();\n\tif ( msg.text.length > USE_CHANGES_IF_LONGER_THEN )\n\t  state.changes = [];\n      } else {\n\tmsg.changes = state.changes;\n\tstate.changes = [];\n      }\n    } else {\n      msg.text   = cm.getValue();\n      if ( msg.text.trim() == \"\" )\n\treturn;\n      state.uuid = generateUUID();\n      msg.uuid   = state.uuid;\n    }\n    msg.role = state.role;\n    if ( typeof(state.sourceID) == \"function\" )\n      msg.sourceID = state.sourceID();\n\n    state.generationFromServer = cm.changeGeneration();\n    $.ajax({ url: state.url.tokens,\n\t     dataType: \"json\",\n\t     contentType: 'application/json',\n\t     type: \"POST\",\n\t     data: JSON.stringify(msg),\n\t     success: function(data, status) {\n\t       var opts = modeOptions();\n\t       opts.metainfo = data.tokens;\n\t       cm.setOption(\"mode\", opts);\n\t     },\n\t     error: function(jqXHR) {\n\t       if ( jqXHR.status == 409 ) {\n\t\t delete state.uuid;\n\t\t /* And refresh?  problem is this might get us into\n\t\t  * a loop.  We'd need some info from the server that\n\t\t  * this won't happen again\n\t\t  */\n\t       }\n\t     }\n\t   });\n  }\n\n  CodeMirror.commands.refreshHighlight = function(cm) {\n    cm.serverAssistedHighlight(true);\n  }\n\n  function generateUUID() {\n    var d = new Date().getTime();\n    var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'\n      .replace(/[xy]/g, function(c) {\n        var r = (d + Math.random()*16)%16 | 0;\n        d = Math.floor(d/16);\n        return (c=='x' ? r : (r&0x7|0x8)).toString(16);\n    });\n    return uuid;\n  }\n\n  var syncOnType = { \"var\": \"var\",\t/* JavaScript Types */\n\t\t     \"atom\": \"atom\",\n\t\t     \"qatom\": \"qatom\",\n\t\t     \"bqstring\": \"string\",\n\t\t     \"symbol\": \"atom\",\n\t\t     \"functor\": \"functor\",\n\t\t     \"tag\": \"tag\",\n\t\t     \"number\": \"number\",\n\t\t     \"string\": \"string\",\n\t\t     \"code\": \"number\",\n\t\t     \"neg-number\": \"number\",\n\t\t     \"pos-number\": \"number\",\n\t\t     \"list_open\": \"list_open\",\n\t\t     \"list_close\": \"list_close\",\n\t\t     \"qq_open\": \"qq_open\",\n\t\t     \"qq_sep\": \"qq_sep\",\n\t\t     \"qq_close\": \"qq_close\",\n\t\t     \"dict_open\": \"dict_open\",\n\t\t     \"dict_close\": \"dict_close\",\n\t\t     \"brace_term_open\": \"brace_term_open\",\n\t\t     \"brace_term_close\": \"brace_term_close\",\n\t\t     \"neck\": \"neck\",\n\t\t     \"fullstop\": \"fullstop\"\n\t\t   };\n  var serverSync = { \"var\": \"var\",\t/* Server Types */\n\t\t     \"singleton\": \"var\",\n\t\t     \"uatom\": \"var\",\t/* var_prefix in effect */\n\t\t     \"atom\": \"atom\",\n\t\t     \"qatom\": \"qatom\",\n\t\t     \"string\": \"string\",\n\t\t     \"codes\": \"string\",\n\t\t     \"chars\": \"string\",\n\t\t     \"functor\": \"functor\",\n\t\t     \"tag\": \"tag\",\n\t\t     \"control\": \"atom\",\n\t\t     \"meta\": \"atom\",\t/* or number 0-9 */\n\t\t     \"op_type\": \"atom\",\n\t\t     \"int\": \"number\",\n\t\t     \"float\": \"number\",\n\t\t     \"key\": \"atom\",\t/* TBD: or integer */\n\t\t     \"sep\": \"atom\",\t/* : in dict */\n\t\t     \"ext_quant\": \"atom\", /* setof ^-symbol */\n\n\t\t     \"expanded\": \"expanded\",\n\t\t     \"comment_string\":\"string\",\n\t\t     \"identifier\": \"atom\",\n\t\t     \"delimiter\": \"atom\",\n\t\t     \"module\": \"atom\",\n\n\t\t     \"head_exported\": \"atom\",\n\t\t     \"head_public\": \"atom\",\n\t\t     \"head_extern\": \"atom\",\n\t\t     \"head_dynamic\": \"atom\",\n\t\t     \"head_multifile\": \"atom\",\n\t\t     \"head_unreferenced\": \"atom\",\n\t\t     \"head_hook\": \"atom\",\n\t\t     \"head_meta\": \"atom\",\n\t\t     \"head_constraint\": \"atom\",\n\t\t     \"head_imported\": \"atom\",\n\t\t     \"head_built_in\": \"atom\",\n\t\t     \"head_iso\": \"atom\",\n\t\t     \"head_def_iso\": \"atom\",\n\t\t     \"head_def_swi\": \"atom\",\n\t\t     \"head\": \"atom\",\n\n\t\t     \"goal_built_in\": \"atom\",\n\t\t     \"goal_imported\": \"atom\",\n\t\t     \"goal_autoload\": \"atom\",\n\t\t     \"goal_global\": \"atom\",\n\t\t     \"goal_undefined\": \"atom\",\n\t\t     \"goal_thread_local\": \"atom\",\n\t\t     \"goal_dynamic\": \"atom\",\n\t\t     \"goal_multifile\": \"atom\",\n\t\t     \"goal_expanded\": \"atom\",\n\t\t     \"goal_extern\": \"atom\",\n\t\t     \"goal_recursion\": \"atom\",\n\t\t     \"goal_meta\": \"atom\",\n\t\t     \"goal_foreign\": \"atom\",\n\t\t     \"goal_local\": \"atom\",\n\t\t     \"goal_constraint\": \"atom\",\n\t\t     \"goal_not_callable\": \"atom\",\n\n\t\t     \"xpce_method\": \"functor\",\n\t\t     \"xpce_class_builtin\":\"atom\",\n\t\t     \"xpce_class_lib\":\"atom\",\n\t\t     \"xpce_class_user\":\"atom\",\n\t\t     \"xpce_class_undef\":\"atom\",\n\n\t\t     \"option_name\": \"atom\",\n\t\t     \"no_option_name\": \"atom\",\n\t\t     \"flag_name\": \"atom\",\n\t\t     \"no_flag_name\": \"atom\",\n\n\t\t     \"file_no_depends\": \"atom\",\n\t\t     \"file\": \"atom\",\n\t\t     \"nofile\": \"atom\",\n\n\t\t     \"list_open\": \"list_open\",\n\t\t     \"list_close\": \"list_close\",\n\t\t     \"qq_open\": \"qq_open\",\n\t\t     \"qq_sep\": \"qq_sep\",\n\t\t     \"qq_close\": \"qq_close\",\n\t\t     \"qq_type\": \"atom\",\n\t\t     \"dict_open\": \"dict_open\",\n\t\t     \"dict_close\": \"dict_close\",\n\t\t     \"brace_term_open\": \"brace_term_open\",\n\t\t     \"brace_term_close\": \"brace_term_close\",\n\t\t     \"neck\": \"neck\",\n\t\t     \"fullstop\": \"fullstop\",\n\n\t\t     \"string_terminal\": \"string\",\n\n\t\t     \"html\": \"functor\",\n\t\t     \"entity\": \"atom\",\n\t\t     \"html_attribute\": \"functor\",\n\t\t     \"sgml_attr_function\": \"atom\",\n\t\t     \"http_location_for_id\": \"atom\",\n\t\t     \"http_no_location_for_id\": \"atom\"\n\t\t   };\n\n  /* Enrich the style using the token list from the server.\n\n  @param stream  is the CM input stream\n  @param state   is the mode state object\n  @param type    is the syntactic category detected by the mode\n  @param content is the textual content of the token (if any)\n  @param style   is the style determined by the mode.\n  */\n\n  function enrichStyle(stream, state, type, content, style) {\n    var parserConfig = this;\n\n    /* serverToken(state) returns the server token at\n       state.curTerm.curToken or null\n    */\n\n    function serverToken(state) {\n      var term = parserConfig.metainfo[state.curTerm];\n      if ( !term ) return null;\n      var token = term[state.curToken];\n      if ( !token ) return null;\n\n      return token;\n    }\n\n    /* outOfSync() is called whenever we lost synchronization.  It\n       records the position where we lost sync and asks the server\n       for a fresh analysis.\n    */\n\n    function outOfSync() {\n      if ( !state.outOfSync ) {\n\tconsole.log(\"Mismatch: (\"+content+\") \"+type+\"/\"+token.type);\n\tstate.outOfSync = { okToken:       state.curToken,\n\t\t\t    okTerm:        state.curTerm,\n\t\t\t    skippedTerms:  0,\n\t\t\t    skippedTokens: [],\n\t\t\t  };\n      }\n      parserConfig.editor.askRefresh();\n    }\n\n    /* reSync() tries to re-synchronize after we lost synchronization\n       with the server due to local edits.  If successful, it clears\n       state.outOfSync and returns the enriched token.  Else it returns\n       null.\n\n       Data to work from:\n\n\t state.outOfSync.skipped: skipped tokens since out-of-sync or\n\t\tlast term\n\t state.outOfSync.skippedTerms: number of fullstop seen since\n\t\twe lost synchronisation\n    */\n\n    function reSync() {\n      var oos = state.outOfSync;\n      var resyncState = { curToken: oos.okToken,\n\t\t\t  curTerm:  oos.okTerm\n\t\t\t};\n\n      /* TBD */\n      if ( oos.skippedTerms ) {\n\n      } else {\n      }\n\n      return null;\n    }\n\n\n    /* match the next token.  It is possible that the server has combined\n       several tokens into one logical unit.  In that case the token is\n       merely a prefix of what the server returned and we try to eat the\n       remainder.  Examples are files specifications such as\n       library(lists).\n    */\n\n    function matchTokenText(tokenText) {\n      var start;\n\n      if ( content == tokenText )\n\treturn true;\n\n      if ( (start=tokenText.lastIndexOf(content,1)) >= 0 ) {\n\tvar left = tokenText.substring(content.length+start);\n\tfor(var i=0; i<left.length; i++) {\n\t  if ( !stream.eat(left.charAt(i)) ) {\n\t    stream.backUp(i);\n\t    return false;\n\t  }\n\t}\n\treturn true;\n      }\n\n      return false;\n    }\n\n    /**\n     * Test whether we are nested in quoted material.  That happens if\n     * a newline appears in the quoted value, where our CodeMirror\n     * tokeniser gives multiple \"string\", etc. tokens, while the server\n     * only gives one, so we should not increment the server curToken.\n     */\n    function isQuoted(nesting) {\n      var last = nesting.slice(-1)[0];\n      return last && last.type == \"quoted\";\n    }\n\n    /**\n     * Matches the server token `token` to the current token and updates\n     * state.curToken and/or state.curTerm if the two matches.\n     *\n     * @param {Object} token is the next token from the server array\n     * @param {Object} state is the mode state object\n     * @returns {String|undefined} enriched style, the original style\n     * or `undefined` if the mode token does not match the server token.\n    */\n\n    function matchToken(token, state) {\n      if ( token ) {\n\tif ( syncOnType[type] ) {\n\t  if ( token.text && content ) {\n\t    if ( matchTokenText(token.text) ) {\n\t      state.curToken++;\n\t      return token.type;\n\t    }\n\n\t    return undefined;\n\t  } else if ( syncOnType[type] == serverSync[token.type] ) {\n\t    if ( type == \"fullstop\" ) {\n\t      state.curTerm++;\n\t      state.curToken = 0;\n\t    } else if ( !isQuoted(state.nesting) ) {\n\t      state.curToken++;\n\t    }\n\t    return token.type;\n\t  } else if ( syncOnType[type] == token.base ) {\n\t    state.curToken++;\n\t    return token.type;\n\t  } else if ( type == \"qatom\" && serverSync[token.type] == \"atom\" ) {\n\t    state.curToken++;\n\t    return token.type;\n\t  } else if ( type == \"number\" && token.type == \"meta\" ) {\n\t    state.curToken++;\t/* 0-9 as meta_predicate arguments */\n\t    return token.type;\n\t  } else if ( type == \"neg-number\" &&\n\t\t      token.text && token.text == \"-\" ) {\n\t\t/* HACK: A-1 is tokenised as \"var\" \"neg-number\" */\n\t\t/* But the server says \"var\" \"atom\" \"number\" */\n\t\t/* Needs operator logic to fix at the client */\n\t    state.curToken += 2;\n\t    return \"number\";\n\t  } else if ( type == \"pos-number\" &&\n\t\t      token.text && token.text == \"+\" ) {\n\t\t/* HACK: A+1 is tokenised as \"var\" \"pos-number\" */\n\t\t/* But the server says \"var\" \"atom\" \"number\" */\n\t\t/* Needs operator logic to fix at the client */\n\t    state.curToken += 2;\n\t    return \"number\";\n\t  }\n\t} else if ( content && token.text == content ) {\n\t  state.curToken++;\t\t/* ,; are not synced */\n\t  return token.type;\n\t} else {\n\t  return style;\t\t\t/* not-synced client token */\n\t}\n      }\n\n      return undefined;\n    }\n\n    /* enrichStyle() body */\n\n    if ( state.curTerm != null ) {\n      var token;\n      var serverStyle;\n\n      //console.log(type,style,content,state);\n\n      if ( state.syntax_error ) {\t\t/* error state; recap after . */\n\tif ( type == \"fullstop\" ) {\n\t  parserConfig.editor.askRefresh();\n\t  delete state.syntax_error;\n\t}\n\treturn style;\n      }\n\n      if ( state.outOfSync ) {\t\t\t/* lost synchronization */\n\tvar oos = state.outOfSync;\n\n\tif ( oos.skippedTerms <= 3 ) {\n\t  oos.skippedTokens.push({ type:    type,\n\t\t\t           style:   style,\n\t\t\t\t   content: content\n\t\t\t         });\n\n\t  if ( (serverStyle=reSync()) ) {\n\t    return serverStyle;\t\t\t/* re-synchronized! */\n\t  } else if ( type == \"fullstop\" ) {\n\t    oos.skippedTokens = [];\n\t    oos.skippedTerms++;\n\t  }\n\t}\n\n\treturn style;\n      }\n\n      if ( !(token=serverToken(state)) ) {\n\tparserConfig.editor.askRefresh();\t/* more text added at the end */\n\treturn style;\n      }\n\n      //console.log(\"Enrich: (\"+content+\") \"+type+\"/\"+token.type);\n\n      if ( (serverStyle=matchToken(token, state)) !== undefined ) {\n\treturn serverStyle;\n      } else if ( token.type == \"syntax_error\" ) {\n\tstate.syntax_error = true;\n\tstate.curToken = 0;\n\tstate.curTerm++;\n\treturn style;\n      } else {\n\toutOfSync();\n\treturn style + \" outofsync\";\n      }\n    }\n\n    return style;\n  }\n\n\t\t /*******************************\n\t\t *\t  FETCH ENRICHED\t*\n\t\t *******************************/\n\n  CodeMirror.prototype.getEnrichedToken = function(token) {\n    if ( token.state.curTerm != null && token.state.curToken != null )\n    { var state = this.getOption(\"mode\");\n      var terminfo;\n\n      if ( state.metainfo && (terminfo=state.metainfo[token.state.curTerm]) )\n\treturn terminfo[token.state.curToken-1];\n    }\n\n    return undefined;\n  }\n\n  /**\n   * @param {Object} [elem] is the element that will be filled with\n   * the token information.  If not provided, a `<span>` of class\n   * `token-info` is returned.\n   * @returns {Object} DOM object providing info that will be filled\n   * later from the ajax call.\n   */\n  CodeMirror.prototype.tokenInfo = function(token, elem) {\n    var state = this.state.prologHighlightServer;\n\n    if ( !elem )\n      elem = $($.el.span({class:\"token-info\"}, \"...\"));\n\n    $.ajax({ url: state.url.info,\n\t     data: token,\n\t     success: function(data) {\n\t       elem.html(data);\n\t     }\n           });\n\n    return elem[0];\n  }\n\n  /**\n   * @param {Object} token is an enriched token\n   * @returns {Array(Object)} is an array of source references.\n   */\n\n  CodeMirror.prototype.getTokenReferences = function(token) {\n    var result = [];\n\n    function setFile(obj, from) {\n      if ( from && from.indexOf(\"swish://\") == 0 ) {\n\tobj.file = from.substring(8);\n\treturn true;\n      }\n    }\n\n    switch(token.type) {\n      case \"goal_local\":\n\tvar obj = {\n\t  title: \"Source for \"+token.text+\"/\"+token.arity,\n\t  line:  token.line,\n\t  regex: new RegExp(\"\\\\b\"+RegExp.escape(token.text), \"g\"),\n\t  showAllMatches: true\n\t};\n\tsetFile(obj, token.file);\n\tresult.push(obj);\n\tbreak;\n      case \"file\":\n\tvar obj = {};\n\n\tif ( setFile(obj, token.path) ) {\n\t  obj.title = \"Included file \" + obj.file;\n\t  result.push(obj);\n\t}\n        break;\n    }\n\n    return result;\n  }\n});\n\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/mode/xml/xml',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nvar htmlConfig = {\n  autoSelfClosers: {'area': true, 'base': true, 'br': true, 'col': true, 'command': true,\n                    'embed': true, 'frame': true, 'hr': true, 'img': true, 'input': true,\n                    'keygen': true, 'link': true, 'meta': true, 'param': true, 'source': true,\n                    'track': true, 'wbr': true, 'menuitem': true},\n  implicitlyClosed: {'dd': true, 'li': true, 'optgroup': true, 'option': true, 'p': true,\n                     'rp': true, 'rt': true, 'tbody': true, 'td': true, 'tfoot': true,\n                     'th': true, 'tr': true},\n  contextGrabbers: {\n    'dd': {'dd': true, 'dt': true},\n    'dt': {'dd': true, 'dt': true},\n    'li': {'li': true},\n    'option': {'option': true, 'optgroup': true},\n    'optgroup': {'optgroup': true},\n    'p': {'address': true, 'article': true, 'aside': true, 'blockquote': true, 'dir': true,\n          'div': true, 'dl': true, 'fieldset': true, 'footer': true, 'form': true,\n          'h1': true, 'h2': true, 'h3': true, 'h4': true, 'h5': true, 'h6': true,\n          'header': true, 'hgroup': true, 'hr': true, 'menu': true, 'nav': true, 'ol': true,\n          'p': true, 'pre': true, 'section': true, 'table': true, 'ul': true},\n    'rp': {'rp': true, 'rt': true},\n    'rt': {'rp': true, 'rt': true},\n    'tbody': {'tbody': true, 'tfoot': true},\n    'td': {'td': true, 'th': true},\n    'tfoot': {'tbody': true},\n    'th': {'td': true, 'th': true},\n    'thead': {'tbody': true, 'tfoot': true},\n    'tr': {'tr': true}\n  },\n  doNotIndent: {\"pre\": true},\n  allowUnquoted: true,\n  allowMissing: true,\n  caseFold: true\n}\n\nvar xmlConfig = {\n  autoSelfClosers: {},\n  implicitlyClosed: {},\n  contextGrabbers: {},\n  doNotIndent: {},\n  allowUnquoted: false,\n  allowMissing: false,\n  caseFold: false\n}\n\nCodeMirror.defineMode(\"xml\", function(editorConf, config_) {\n  var indentUnit = editorConf.indentUnit\n  var config = {}\n  var defaults = config_.htmlMode ? htmlConfig : xmlConfig\n  for (var prop in defaults) config[prop] = defaults[prop]\n  for (var prop in config_) config[prop] = config_[prop]\n\n  // Return variables for tokenizers\n  var type, setStyle;\n\n  function inText(stream, state) {\n    function chain(parser) {\n      state.tokenize = parser;\n      return parser(stream, state);\n    }\n\n    var ch = stream.next();\n    if (ch == \"<\") {\n      if (stream.eat(\"!\")) {\n        if (stream.eat(\"[\")) {\n          if (stream.match(\"CDATA[\")) return chain(inBlock(\"atom\", \"]]>\"));\n          else return null;\n        } else if (stream.match(\"--\")) {\n          return chain(inBlock(\"comment\", \"-->\"));\n        } else if (stream.match(\"DOCTYPE\", true, true)) {\n          stream.eatWhile(/[\\w\\._\\-]/);\n          return chain(doctype(1));\n        } else {\n          return null;\n        }\n      } else if (stream.eat(\"?\")) {\n        stream.eatWhile(/[\\w\\._\\-]/);\n        state.tokenize = inBlock(\"meta\", \"?>\");\n        return \"meta\";\n      } else {\n        type = stream.eat(\"/\") ? \"closeTag\" : \"openTag\";\n        state.tokenize = inTag;\n        return \"tag bracket\";\n      }\n    } else if (ch == \"&\") {\n      var ok;\n      if (stream.eat(\"#\")) {\n        if (stream.eat(\"x\")) {\n          ok = stream.eatWhile(/[a-fA-F\\d]/) && stream.eat(\";\");\n        } else {\n          ok = stream.eatWhile(/[\\d]/) && stream.eat(\";\");\n        }\n      } else {\n        ok = stream.eatWhile(/[\\w\\.\\-:]/) && stream.eat(\";\");\n      }\n      return ok ? \"atom\" : \"error\";\n    } else {\n      stream.eatWhile(/[^&<]/);\n      return null;\n    }\n  }\n  inText.isInText = true;\n\n  function inTag(stream, state) {\n    var ch = stream.next();\n    if (ch == \">\" || (ch == \"/\" && stream.eat(\">\"))) {\n      state.tokenize = inText;\n      type = ch == \">\" ? \"endTag\" : \"selfcloseTag\";\n      return \"tag bracket\";\n    } else if (ch == \"=\") {\n      type = \"equals\";\n      return null;\n    } else if (ch == \"<\") {\n      state.tokenize = inText;\n      state.state = baseState;\n      state.tagName = state.tagStart = null;\n      var next = state.tokenize(stream, state);\n      return next ? next + \" tag error\" : \"tag error\";\n    } else if (/[\\'\\\"]/.test(ch)) {\n      state.tokenize = inAttribute(ch);\n      state.stringStartCol = stream.column();\n      return state.tokenize(stream, state);\n    } else {\n      stream.match(/^[^\\s\\u00a0=<>\\\"\\']*[^\\s\\u00a0=<>\\\"\\'\\/]/);\n      return \"word\";\n    }\n  }\n\n  function inAttribute(quote) {\n    var closure = function(stream, state) {\n      while (!stream.eol()) {\n        if (stream.next() == quote) {\n          state.tokenize = inTag;\n          break;\n        }\n      }\n      return \"string\";\n    };\n    closure.isInAttribute = true;\n    return closure;\n  }\n\n  function inBlock(style, terminator) {\n    return function(stream, state) {\n      while (!stream.eol()) {\n        if (stream.match(terminator)) {\n          state.tokenize = inText;\n          break;\n        }\n        stream.next();\n      }\n      return style;\n    };\n  }\n  function doctype(depth) {\n    return function(stream, state) {\n      var ch;\n      while ((ch = stream.next()) != null) {\n        if (ch == \"<\") {\n          state.tokenize = doctype(depth + 1);\n          return state.tokenize(stream, state);\n        } else if (ch == \">\") {\n          if (depth == 1) {\n            state.tokenize = inText;\n            break;\n          } else {\n            state.tokenize = doctype(depth - 1);\n            return state.tokenize(stream, state);\n          }\n        }\n      }\n      return \"meta\";\n    };\n  }\n\n  function Context(state, tagName, startOfLine) {\n    this.prev = state.context;\n    this.tagName = tagName;\n    this.indent = state.indented;\n    this.startOfLine = startOfLine;\n    if (config.doNotIndent.hasOwnProperty(tagName) || (state.context && state.context.noIndent))\n      this.noIndent = true;\n  }\n  function popContext(state) {\n    if (state.context) state.context = state.context.prev;\n  }\n  function maybePopContext(state, nextTagName) {\n    var parentTagName;\n    while (true) {\n      if (!state.context) {\n        return;\n      }\n      parentTagName = state.context.tagName;\n      if (!config.contextGrabbers.hasOwnProperty(parentTagName) ||\n          !config.contextGrabbers[parentTagName].hasOwnProperty(nextTagName)) {\n        return;\n      }\n      popContext(state);\n    }\n  }\n\n  function baseState(type, stream, state) {\n    if (type == \"openTag\") {\n      state.tagStart = stream.column();\n      return tagNameState;\n    } else if (type == \"closeTag\") {\n      return closeTagNameState;\n    } else {\n      return baseState;\n    }\n  }\n  function tagNameState(type, stream, state) {\n    if (type == \"word\") {\n      state.tagName = stream.current();\n      setStyle = \"tag\";\n      return attrState;\n    } else {\n      setStyle = \"error\";\n      return tagNameState;\n    }\n  }\n  function closeTagNameState(type, stream, state) {\n    if (type == \"word\") {\n      var tagName = stream.current();\n      if (state.context && state.context.tagName != tagName &&\n          config.implicitlyClosed.hasOwnProperty(state.context.tagName))\n        popContext(state);\n      if ((state.context && state.context.tagName == tagName) || config.matchClosing === false) {\n        setStyle = \"tag\";\n        return closeState;\n      } else {\n        setStyle = \"tag error\";\n        return closeStateErr;\n      }\n    } else {\n      setStyle = \"error\";\n      return closeStateErr;\n    }\n  }\n\n  function closeState(type, _stream, state) {\n    if (type != \"endTag\") {\n      setStyle = \"error\";\n      return closeState;\n    }\n    popContext(state);\n    return baseState;\n  }\n  function closeStateErr(type, stream, state) {\n    setStyle = \"error\";\n    return closeState(type, stream, state);\n  }\n\n  function attrState(type, _stream, state) {\n    if (type == \"word\") {\n      setStyle = \"attribute\";\n      return attrEqState;\n    } else if (type == \"endTag\" || type == \"selfcloseTag\") {\n      var tagName = state.tagName, tagStart = state.tagStart;\n      state.tagName = state.tagStart = null;\n      if (type == \"selfcloseTag\" ||\n          config.autoSelfClosers.hasOwnProperty(tagName)) {\n        maybePopContext(state, tagName);\n      } else {\n        maybePopContext(state, tagName);\n        state.context = new Context(state, tagName, tagStart == state.indented);\n      }\n      return baseState;\n    }\n    setStyle = \"error\";\n    return attrState;\n  }\n  function attrEqState(type, stream, state) {\n    if (type == \"equals\") return attrValueState;\n    if (!config.allowMissing) setStyle = \"error\";\n    return attrState(type, stream, state);\n  }\n  function attrValueState(type, stream, state) {\n    if (type == \"string\") return attrContinuedState;\n    if (type == \"word\" && config.allowUnquoted) {setStyle = \"string\"; return attrState;}\n    setStyle = \"error\";\n    return attrState(type, stream, state);\n  }\n  function attrContinuedState(type, stream, state) {\n    if (type == \"string\") return attrContinuedState;\n    return attrState(type, stream, state);\n  }\n\n  return {\n    startState: function(baseIndent) {\n      var state = {tokenize: inText,\n                   state: baseState,\n                   indented: baseIndent || 0,\n                   tagName: null, tagStart: null,\n                   context: null}\n      if (baseIndent != null) state.baseIndent = baseIndent\n      return state\n    },\n\n    token: function(stream, state) {\n      if (!state.tagName && stream.sol())\n        state.indented = stream.indentation();\n\n      if (stream.eatSpace()) return null;\n      type = null;\n      var style = state.tokenize(stream, state);\n      if ((style || type) && style != \"comment\") {\n        setStyle = null;\n        state.state = state.state(type || style, stream, state);\n        if (setStyle)\n          style = setStyle == \"error\" ? style + \" error\" : setStyle;\n      }\n      return style;\n    },\n\n    indent: function(state, textAfter, fullLine) {\n      var context = state.context;\n      // Indent multi-line strings (e.g. css).\n      if (state.tokenize.isInAttribute) {\n        if (state.tagStart == state.indented)\n          return state.stringStartCol + 1;\n        else\n          return state.indented + indentUnit;\n      }\n      if (context && context.noIndent) return CodeMirror.Pass;\n      if (state.tokenize != inTag && state.tokenize != inText)\n        return fullLine ? fullLine.match(/^(\\s*)/)[0].length : 0;\n      // Indent the starts of attribute names.\n      if (state.tagName) {\n        if (config.multilineTagIndentPastTag !== false)\n          return state.tagStart + state.tagName.length + 2;\n        else\n          return state.tagStart + indentUnit * (config.multilineTagIndentFactor || 1);\n      }\n      if (config.alignCDATA && /<!\\[CDATA\\[/.test(textAfter)) return 0;\n      var tagAfter = textAfter && /^<(\\/)?([\\w_:\\.-]*)/.exec(textAfter);\n      if (tagAfter && tagAfter[1]) { // Closing tag spotted\n        while (context) {\n          if (context.tagName == tagAfter[2]) {\n            context = context.prev;\n            break;\n          } else if (config.implicitlyClosed.hasOwnProperty(context.tagName)) {\n            context = context.prev;\n          } else {\n            break;\n          }\n        }\n      } else if (tagAfter) { // Opening tag spotted\n        while (context) {\n          var grabbers = config.contextGrabbers[context.tagName];\n          if (grabbers && grabbers.hasOwnProperty(tagAfter[2]))\n            context = context.prev;\n          else\n            break;\n        }\n      }\n      while (context && context.prev && !context.startOfLine)\n        context = context.prev;\n      if (context) return context.indent + indentUnit;\n      else return state.baseIndent || 0;\n    },\n\n    electricInput: /<\\/[\\s\\w:]+>$/,\n    blockCommentStart: \"<!--\",\n    blockCommentEnd: \"-->\",\n\n    configuration: config.htmlMode ? \"html\" : \"xml\",\n    helperType: config.htmlMode ? \"html\" : \"xml\",\n\n    skipAttribute: function(state) {\n      if (state.state == attrValueState)\n        state.state = attrState\n    }\n  };\n});\n\nCodeMirror.defineMIME(\"text/xml\", \"xml\");\nCodeMirror.defineMIME(\"application/xml\", \"xml\");\nif (!CodeMirror.mimeModes.hasOwnProperty(\"text/html\"))\n  CodeMirror.defineMIME(\"text/html\", {name: \"xml\", htmlMode: true});\n\n});\n\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/mode/meta',[\"../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  CodeMirror.modeInfo = [\n    {name: \"APL\", mime: \"text/apl\", mode: \"apl\", ext: [\"dyalog\", \"apl\"]},\n    {name: \"PGP\", mimes: [\"application/pgp\", \"application/pgp-keys\", \"application/pgp-signature\"], mode: \"asciiarmor\", ext: [\"pgp\"]},\n    {name: \"ASN.1\", mime: \"text/x-ttcn-asn\", mode: \"asn.1\", ext: [\"asn\", \"asn1\"]},\n    {name: \"Asterisk\", mime: \"text/x-asterisk\", mode: \"asterisk\", file: /^extensions\\.conf$/i},\n    {name: \"Brainfuck\", mime: \"text/x-brainfuck\", mode: \"brainfuck\", ext: [\"b\", \"bf\"]},\n    {name: \"C\", mime: \"text/x-csrc\", mode: \"clike\", ext: [\"c\", \"h\"]},\n    {name: \"C++\", mime: \"text/x-c++src\", mode: \"clike\", ext: [\"cpp\", \"c++\", \"cc\", \"cxx\", \"hpp\", \"h++\", \"hh\", \"hxx\"], alias: [\"cpp\"]},\n    {name: \"Cobol\", mime: \"text/x-cobol\", mode: \"cobol\", ext: [\"cob\", \"cpy\"]},\n    {name: \"C#\", mime: \"text/x-csharp\", mode: \"clike\", ext: [\"cs\"], alias: [\"csharp\"]},\n    {name: \"Clojure\", mime: \"text/x-clojure\", mode: \"clojure\", ext: [\"clj\", \"cljc\", \"cljx\"]},\n    {name: \"ClojureScript\", mime: \"text/x-clojurescript\", mode: \"clojure\", ext: [\"cljs\"]},\n    {name: \"Closure Stylesheets (GSS)\", mime: \"text/x-gss\", mode: \"css\", ext: [\"gss\"]},\n    {name: \"CMake\", mime: \"text/x-cmake\", mode: \"cmake\", ext: [\"cmake\", \"cmake.in\"], file: /^CMakeLists.txt$/},\n    {name: \"CoffeeScript\", mime: \"text/x-coffeescript\", mode: \"coffeescript\", ext: [\"coffee\"], alias: [\"coffee\", \"coffee-script\"]},\n    {name: \"Common Lisp\", mime: \"text/x-common-lisp\", mode: \"commonlisp\", ext: [\"cl\", \"lisp\", \"el\"], alias: [\"lisp\"]},\n    {name: \"Cypher\", mime: \"application/x-cypher-query\", mode: \"cypher\", ext: [\"cyp\", \"cypher\"]},\n    {name: \"Cython\", mime: \"text/x-cython\", mode: \"python\", ext: [\"pyx\", \"pxd\", \"pxi\"]},\n    {name: \"Crystal\", mime: \"text/x-crystal\", mode: \"crystal\", ext: [\"cr\"]},\n    {name: \"CSS\", mime: \"text/css\", mode: \"css\", ext: [\"css\"]},\n    {name: \"CQL\", mime: \"text/x-cassandra\", mode: \"sql\", ext: [\"cql\"]},\n    {name: \"D\", mime: \"text/x-d\", mode: \"d\", ext: [\"d\"]},\n    {name: \"Dart\", mimes: [\"application/dart\", \"text/x-dart\"], mode: \"dart\", ext: [\"dart\"]},\n    {name: \"diff\", mime: \"text/x-diff\", mode: \"diff\", ext: [\"diff\", \"patch\"]},\n    {name: \"Django\", mime: \"text/x-django\", mode: \"django\"},\n    {name: \"Dockerfile\", mime: \"text/x-dockerfile\", mode: \"dockerfile\", file: /^Dockerfile$/},\n    {name: \"DTD\", mime: \"application/xml-dtd\", mode: \"dtd\", ext: [\"dtd\"]},\n    {name: \"Dylan\", mime: \"text/x-dylan\", mode: \"dylan\", ext: [\"dylan\", \"dyl\", \"intr\"]},\n    {name: \"EBNF\", mime: \"text/x-ebnf\", mode: \"ebnf\"},\n    {name: \"ECL\", mime: \"text/x-ecl\", mode: \"ecl\", ext: [\"ecl\"]},\n    {name: \"edn\", mime: \"application/edn\", mode: \"clojure\", ext: [\"edn\"]},\n    {name: \"Eiffel\", mime: \"text/x-eiffel\", mode: \"eiffel\", ext: [\"e\"]},\n    {name: \"Elm\", mime: \"text/x-elm\", mode: \"elm\", ext: [\"elm\"]},\n    {name: \"Embedded Javascript\", mime: \"application/x-ejs\", mode: \"htmlembedded\", ext: [\"ejs\"]},\n    {name: \"Embedded Ruby\", mime: \"application/x-erb\", mode: \"htmlembedded\", ext: [\"erb\"]},\n    {name: \"Erlang\", mime: \"text/x-erlang\", mode: \"erlang\", ext: [\"erl\"]},\n    {name: \"Factor\", mime: \"text/x-factor\", mode: \"factor\", ext: [\"factor\"]},\n    {name: \"FCL\", mime: \"text/x-fcl\", mode: \"fcl\"},\n    {name: \"Forth\", mime: \"text/x-forth\", mode: \"forth\", ext: [\"forth\", \"fth\", \"4th\"]},\n    {name: \"Fortran\", mime: \"text/x-fortran\", mode: \"fortran\", ext: [\"f\", \"for\", \"f77\", \"f90\"]},\n    {name: \"F#\", mime: \"text/x-fsharp\", mode: \"mllike\", ext: [\"fs\"], alias: [\"fsharp\"]},\n    {name: \"Gas\", mime: \"text/x-gas\", mode: \"gas\", ext: [\"s\"]},\n    {name: \"Gherkin\", mime: \"text/x-feature\", mode: \"gherkin\", ext: [\"feature\"]},\n    {name: \"GitHub Flavored Markdown\", mime: \"text/x-gfm\", mode: \"gfm\", file: /^(readme|contributing|history).md$/i},\n    {name: \"Go\", mime: \"text/x-go\", mode: \"go\", ext: [\"go\"]},\n    {name: \"Groovy\", mime: \"text/x-groovy\", mode: \"groovy\", ext: [\"groovy\", \"gradle\"], file: /^Jenkinsfile$/},\n    {name: \"HAML\", mime: \"text/x-haml\", mode: \"haml\", ext: [\"haml\"]},\n    {name: \"Haskell\", mime: \"text/x-haskell\", mode: \"haskell\", ext: [\"hs\"]},\n    {name: \"Haskell (Literate)\", mime: \"text/x-literate-haskell\", mode: \"haskell-literate\", ext: [\"lhs\"]},\n    {name: \"Haxe\", mime: \"text/x-haxe\", mode: \"haxe\", ext: [\"hx\"]},\n    {name: \"HXML\", mime: \"text/x-hxml\", mode: \"haxe\", ext: [\"hxml\"]},\n    {name: \"ASP.NET\", mime: \"application/x-aspx\", mode: \"htmlembedded\", ext: [\"aspx\"], alias: [\"asp\", \"aspx\"]},\n    {name: \"HTML\", mime: \"text/html\", mode: \"htmlmixed\", ext: [\"html\", \"htm\"], alias: [\"xhtml\"]},\n    {name: \"HTTP\", mime: \"message/http\", mode: \"http\"},\n    {name: \"IDL\", mime: \"text/x-idl\", mode: \"idl\", ext: [\"pro\"]},\n    {name: \"Pug\", mime: \"text/x-pug\", mode: \"pug\", ext: [\"jade\", \"pug\"], alias: [\"jade\"]},\n    {name: \"Java\", mime: \"text/x-java\", mode: \"clike\", ext: [\"java\"]},\n    {name: \"Java Server Pages\", mime: \"application/x-jsp\", mode: \"htmlembedded\", ext: [\"jsp\"], alias: [\"jsp\"]},\n    {name: \"JavaScript\", mimes: [\"text/javascript\", \"text/ecmascript\", \"application/javascript\", \"application/x-javascript\", \"application/ecmascript\"],\n     mode: \"javascript\", ext: [\"js\"], alias: [\"ecmascript\", \"js\", \"node\"]},\n    {name: \"JSON\", mimes: [\"application/json\", \"application/x-json\"], mode: \"javascript\", ext: [\"json\", \"map\"], alias: [\"json5\"]},\n    {name: \"JSON-LD\", mime: \"application/ld+json\", mode: \"javascript\", ext: [\"jsonld\"], alias: [\"jsonld\"]},\n    {name: \"JSX\", mime: \"text/jsx\", mode: \"jsx\", ext: [\"jsx\"]},\n    {name: \"Jinja2\", mime: \"null\", mode: \"jinja2\"},\n    {name: \"Julia\", mime: \"text/x-julia\", mode: \"julia\", ext: [\"jl\"]},\n    {name: \"Kotlin\", mime: \"text/x-kotlin\", mode: \"clike\", ext: [\"kt\"]},\n    {name: \"LESS\", mime: \"text/x-less\", mode: \"css\", ext: [\"less\"]},\n    {name: \"LiveScript\", mime: \"text/x-livescript\", mode: \"livescript\", ext: [\"ls\"], alias: [\"ls\"]},\n    {name: \"Lua\", mime: \"text/x-lua\", mode: \"lua\", ext: [\"lua\"]},\n    {name: \"Markdown\", mime: \"text/x-markdown\", mode: \"markdown\", ext: [\"markdown\", \"md\", \"mkd\"]},\n    {name: \"mIRC\", mime: \"text/mirc\", mode: \"mirc\"},\n    {name: \"MariaDB SQL\", mime: \"text/x-mariadb\", mode: \"sql\"},\n    {name: \"Mathematica\", mime: \"text/x-mathematica\", mode: \"mathematica\", ext: [\"m\", \"nb\"]},\n    {name: \"Modelica\", mime: \"text/x-modelica\", mode: \"modelica\", ext: [\"mo\"]},\n    {name: \"MUMPS\", mime: \"text/x-mumps\", mode: \"mumps\", ext: [\"mps\"]},\n    {name: \"MS SQL\", mime: \"text/x-mssql\", mode: \"sql\"},\n    {name: \"mbox\", mime: \"application/mbox\", mode: \"mbox\", ext: [\"mbox\"]},\n    {name: \"MySQL\", mime: \"text/x-mysql\", mode: \"sql\"},\n    {name: \"Nginx\", mime: \"text/x-nginx-conf\", mode: \"nginx\", file: /nginx.*\\.conf$/i},\n    {name: \"NSIS\", mime: \"text/x-nsis\", mode: \"nsis\", ext: [\"nsh\", \"nsi\"]},\n    {name: \"NTriples\", mime: \"text/n-triples\", mode: \"ntriples\", ext: [\"nt\"]},\n    {name: \"Objective C\", mime: \"text/x-objectivec\", mode: \"clike\", ext: [\"m\", \"mm\"], alias: [\"objective-c\", \"objc\"]},\n    {name: \"OCaml\", mime: \"text/x-ocaml\", mode: \"mllike\", ext: [\"ml\", \"mli\", \"mll\", \"mly\"]},\n    {name: \"Octave\", mime: \"text/x-octave\", mode: \"octave\", ext: [\"m\"]},\n    {name: \"Oz\", mime: \"text/x-oz\", mode: \"oz\", ext: [\"oz\"]},\n    {name: \"Pascal\", mime: \"text/x-pascal\", mode: \"pascal\", ext: [\"p\", \"pas\"]},\n    {name: \"PEG.js\", mime: \"null\", mode: \"pegjs\", ext: [\"jsonld\"]},\n    {name: \"Perl\", mime: \"text/x-perl\", mode: \"perl\", ext: [\"pl\", \"pm\"]},\n    {name: \"PHP\", mime: \"application/x-httpd-php\", mode: \"php\", ext: [\"php\", \"php3\", \"php4\", \"php5\", \"phtml\"]},\n    {name: \"Pig\", mime: \"text/x-pig\", mode: \"pig\", ext: [\"pig\"]},\n    {name: \"Plain Text\", mime: \"text/plain\", mode: \"null\", ext: [\"txt\", \"text\", \"conf\", \"def\", \"list\", \"log\"]},\n    {name: \"PLSQL\", mime: \"text/x-plsql\", mode: \"sql\", ext: [\"pls\"]},\n    {name: \"PowerShell\", mime: \"application/x-powershell\", mode: \"powershell\", ext: [\"ps1\", \"psd1\", \"psm1\"]},\n    {name: \"Properties files\", mime: \"text/x-properties\", mode: \"properties\", ext: [\"properties\", \"ini\", \"in\"], alias: [\"ini\", \"properties\"]},\n    {name: \"ProtoBuf\", mime: \"text/x-protobuf\", mode: \"protobuf\", ext: [\"proto\"]},\n    {name: \"Python\", mime: \"text/x-python\", mode: \"python\", ext: [\"BUILD\", \"bzl\", \"py\", \"pyw\"], file: /^(BUCK|BUILD)$/},\n    {name: \"Puppet\", mime: \"text/x-puppet\", mode: \"puppet\", ext: [\"pp\"]},\n    {name: \"Q\", mime: \"text/x-q\", mode: \"q\", ext: [\"q\"]},\n    {name: \"R\", mime: \"text/x-rsrc\", mode: \"r\", ext: [\"r\", \"R\"], alias: [\"rscript\"]},\n    {name: \"reStructuredText\", mime: \"text/x-rst\", mode: \"rst\", ext: [\"rst\"], alias: [\"rst\"]},\n    {name: \"RPM Changes\", mime: \"text/x-rpm-changes\", mode: \"rpm\"},\n    {name: \"RPM Spec\", mime: \"text/x-rpm-spec\", mode: \"rpm\", ext: [\"spec\"]},\n    {name: \"Ruby\", mime: \"text/x-ruby\", mode: \"ruby\", ext: [\"rb\"], alias: [\"jruby\", \"macruby\", \"rake\", \"rb\", \"rbx\"]},\n    {name: \"Rust\", mime: \"text/x-rustsrc\", mode: \"rust\", ext: [\"rs\"]},\n    {name: \"SAS\", mime: \"text/x-sas\", mode: \"sas\", ext: [\"sas\"]},\n    {name: \"Sass\", mime: \"text/x-sass\", mode: \"sass\", ext: [\"sass\"]},\n    {name: \"Scala\", mime: \"text/x-scala\", mode: \"clike\", ext: [\"scala\"]},\n    {name: \"Scheme\", mime: \"text/x-scheme\", mode: \"scheme\", ext: [\"scm\", \"ss\"]},\n    {name: \"SCSS\", mime: \"text/x-scss\", mode: \"css\", ext: [\"scss\"]},\n    {name: \"Shell\", mime: \"text/x-sh\", mode: \"shell\", ext: [\"sh\", \"ksh\", \"bash\"], alias: [\"bash\", \"sh\", \"zsh\"], file: /^PKGBUILD$/},\n    {name: \"Sieve\", mime: \"application/sieve\", mode: \"sieve\", ext: [\"siv\", \"sieve\"]},\n    {name: \"Slim\", mimes: [\"text/x-slim\", \"application/x-slim\"], mode: \"slim\", ext: [\"slim\"]},\n    {name: \"Smalltalk\", mime: \"text/x-stsrc\", mode: \"smalltalk\", ext: [\"st\"]},\n    {name: \"Smarty\", mime: \"text/x-smarty\", mode: \"smarty\", ext: [\"tpl\"]},\n    {name: \"Solr\", mime: \"text/x-solr\", mode: \"solr\"},\n    {name: \"Soy\", mime: \"text/x-soy\", mode: \"soy\", ext: [\"soy\"], alias: [\"closure template\"]},\n    {name: \"SPARQL\", mime: \"application/sparql-query\", mode: \"sparql\", ext: [\"rq\", \"sparql\"], alias: [\"sparul\"]},\n    {name: \"Spreadsheet\", mime: \"text/x-spreadsheet\", mode: \"spreadsheet\", alias: [\"excel\", \"formula\"]},\n    {name: \"SQL\", mime: \"text/x-sql\", mode: \"sql\", ext: [\"sql\"]},\n    {name: \"SQLite\", mime: \"text/x-sqlite\", mode: \"sql\"},\n    {name: \"Squirrel\", mime: \"text/x-squirrel\", mode: \"clike\", ext: [\"nut\"]},\n    {name: \"Stylus\", mime: \"text/x-styl\", mode: \"stylus\", ext: [\"styl\"]},\n    {name: \"Swift\", mime: \"text/x-swift\", mode: \"swift\", ext: [\"swift\"]},\n    {name: \"sTeX\", mime: \"text/x-stex\", mode: \"stex\"},\n    {name: \"LaTeX\", mime: \"text/x-latex\", mode: \"stex\", ext: [\"text\", \"ltx\"], alias: [\"tex\"]},\n    {name: \"SystemVerilog\", mime: \"text/x-systemverilog\", mode: \"verilog\", ext: [\"v\"]},\n    {name: \"Tcl\", mime: \"text/x-tcl\", mode: \"tcl\", ext: [\"tcl\"]},\n    {name: \"Textile\", mime: \"text/x-textile\", mode: \"textile\", ext: [\"textile\"]},\n    {name: \"TiddlyWiki \", mime: \"text/x-tiddlywiki\", mode: \"tiddlywiki\"},\n    {name: \"Tiki wiki\", mime: \"text/tiki\", mode: \"tiki\"},\n    {name: \"TOML\", mime: \"text/x-toml\", mode: \"toml\", ext: [\"toml\"]},\n    {name: \"Tornado\", mime: \"text/x-tornado\", mode: \"tornado\"},\n    {name: \"troff\", mime: \"text/troff\", mode: \"troff\", ext: [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"]},\n    {name: \"TTCN\", mime: \"text/x-ttcn\", mode: \"ttcn\", ext: [\"ttcn\", \"ttcn3\", \"ttcnpp\"]},\n    {name: \"TTCN_CFG\", mime: \"text/x-ttcn-cfg\", mode: \"ttcn-cfg\", ext: [\"cfg\"]},\n    {name: \"Turtle\", mime: \"text/turtle\", mode: \"turtle\", ext: [\"ttl\"]},\n    {name: \"TypeScript\", mime: \"application/typescript\", mode: \"javascript\", ext: [\"ts\"], alias: [\"ts\"]},\n    {name: \"TypeScript-JSX\", mime: \"text/typescript-jsx\", mode: \"jsx\", ext: [\"tsx\"], alias: [\"tsx\"]},\n    {name: \"Twig\", mime: \"text/x-twig\", mode: \"twig\"},\n    {name: \"Web IDL\", mime: \"text/x-webidl\", mode: \"webidl\", ext: [\"webidl\"]},\n    {name: \"VB.NET\", mime: \"text/x-vb\", mode: \"vb\", ext: [\"vb\"]},\n    {name: \"VBScript\", mime: \"text/vbscript\", mode: \"vbscript\", ext: [\"vbs\"]},\n    {name: \"Velocity\", mime: \"text/velocity\", mode: \"velocity\", ext: [\"vtl\"]},\n    {name: \"Verilog\", mime: \"text/x-verilog\", mode: \"verilog\", ext: [\"v\"]},\n    {name: \"VHDL\", mime: \"text/x-vhdl\", mode: \"vhdl\", ext: [\"vhd\", \"vhdl\"]},\n    {name: \"Vue.js Component\", mimes: [\"script/x-vue\", \"text/x-vue\"], mode: \"vue\", ext: [\"vue\"]},\n    {name: \"XML\", mimes: [\"application/xml\", \"text/xml\"], mode: \"xml\", ext: [\"xml\", \"xsl\", \"xsd\", \"svg\"], alias: [\"rss\", \"wsdl\", \"xsd\"]},\n    {name: \"XQuery\", mime: \"application/xquery\", mode: \"xquery\", ext: [\"xy\", \"xquery\"]},\n    {name: \"Yacas\", mime: \"text/x-yacas\", mode: \"yacas\", ext: [\"ys\"]},\n    {name: \"YAML\", mimes: [\"text/x-yaml\", \"text/yaml\"], mode: \"yaml\", ext: [\"yaml\", \"yml\"], alias: [\"yml\"]},\n    {name: \"Z80\", mime: \"text/x-z80\", mode: \"z80\", ext: [\"z80\"]},\n    {name: \"mscgen\", mime: \"text/x-mscgen\", mode: \"mscgen\", ext: [\"mscgen\", \"mscin\", \"msc\"]},\n    {name: \"xu\", mime: \"text/x-xu\", mode: \"mscgen\", ext: [\"xu\"]},\n    {name: \"msgenny\", mime: \"text/x-msgenny\", mode: \"mscgen\", ext: [\"msgenny\"]}\n  ];\n  // Ensure all modes have a mime property for backwards compatibility\n  for (var i = 0; i < CodeMirror.modeInfo.length; i++) {\n    var info = CodeMirror.modeInfo[i];\n    if (info.mimes) info.mime = info.mimes[0];\n  }\n\n  CodeMirror.findModeByMIME = function(mime) {\n    mime = mime.toLowerCase();\n    for (var i = 0; i < CodeMirror.modeInfo.length; i++) {\n      var info = CodeMirror.modeInfo[i];\n      if (info.mime == mime) return info;\n      if (info.mimes) for (var j = 0; j < info.mimes.length; j++)\n        if (info.mimes[j] == mime) return info;\n    }\n    if (/\\+xml$/.test(mime)) return CodeMirror.findModeByMIME(\"application/xml\")\n    if (/\\+json$/.test(mime)) return CodeMirror.findModeByMIME(\"application/json\")\n  };\n\n  CodeMirror.findModeByExtension = function(ext) {\n    for (var i = 0; i < CodeMirror.modeInfo.length; i++) {\n      var info = CodeMirror.modeInfo[i];\n      if (info.ext) for (var j = 0; j < info.ext.length; j++)\n        if (info.ext[j] == ext) return info;\n    }\n  };\n\n  CodeMirror.findModeByFileName = function(filename) {\n    for (var i = 0; i < CodeMirror.modeInfo.length; i++) {\n      var info = CodeMirror.modeInfo[i];\n      if (info.file && info.file.test(filename)) return info;\n    }\n    var dot = filename.lastIndexOf(\".\");\n    var ext = dot > -1 && filename.substring(dot + 1, filename.length);\n    if (ext) return CodeMirror.findModeByExtension(ext);\n  };\n\n  CodeMirror.findModeByName = function(name) {\n    name = name.toLowerCase();\n    for (var i = 0; i < CodeMirror.modeInfo.length; i++) {\n      var info = CodeMirror.modeInfo[i];\n      if (info.name.toLowerCase() == name) return info;\n      if (info.alias) for (var j = 0; j < info.alias.length; j++)\n        if (info.alias[j].toLowerCase() == name) return info;\n    }\n  };\n});\n\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"), require(\"../xml/xml\"), require(\"../meta\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/mode/markdown/markdown',[\"../../lib/codemirror\", \"../xml/xml\", \"../meta\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"markdown\", function(cmCfg, modeCfg) {\n\n  var htmlMode = CodeMirror.getMode(cmCfg, \"text/html\");\n  var htmlModeMissing = htmlMode.name == \"null\"\n\n  function getMode(name) {\n    if (CodeMirror.findModeByName) {\n      var found = CodeMirror.findModeByName(name);\n      if (found) name = found.mime || found.mimes[0];\n    }\n    var mode = CodeMirror.getMode(cmCfg, name);\n    return mode.name == \"null\" ? null : mode;\n  }\n\n  // Should characters that affect highlighting be highlighted separate?\n  // Does not include characters that will be output (such as `1.` and `-` for lists)\n  if (modeCfg.highlightFormatting === undefined)\n    modeCfg.highlightFormatting = false;\n\n  // Maximum number of nested blockquotes. Set to 0 for infinite nesting.\n  // Excess `>` will emit `error` token.\n  if (modeCfg.maxBlockquoteDepth === undefined)\n    modeCfg.maxBlockquoteDepth = 0;\n\n  // Use `fencedCodeBlocks` to configure fenced code blocks. false to\n  // disable, string to specify a precise regexp that the fence should\n  // match, and true to allow three or more backticks or tildes (as\n  // per CommonMark).\n\n  // Turn on task lists? (\"- [ ] \" and \"- [x] \")\n  if (modeCfg.taskLists === undefined) modeCfg.taskLists = false;\n\n  // Turn on strikethrough syntax\n  if (modeCfg.strikethrough === undefined)\n    modeCfg.strikethrough = false;\n\n  // Allow token types to be overridden by user-provided token types.\n  if (modeCfg.tokenTypeOverrides === undefined)\n    modeCfg.tokenTypeOverrides = {};\n\n  var tokenTypes = {\n    header: \"header\",\n    code: \"comment\",\n    quote: \"quote\",\n    list1: \"variable-2\",\n    list2: \"variable-3\",\n    list3: \"keyword\",\n    hr: \"hr\",\n    image: \"image\",\n    imageAltText: \"image-alt-text\",\n    imageMarker: \"image-marker\",\n    formatting: \"formatting\",\n    linkInline: \"link\",\n    linkEmail: \"link\",\n    linkText: \"link\",\n    linkHref: \"string\",\n    em: \"em\",\n    strong: \"strong\",\n    strikethrough: \"strikethrough\"\n  };\n\n  for (var tokenType in tokenTypes) {\n    if (tokenTypes.hasOwnProperty(tokenType) && modeCfg.tokenTypeOverrides[tokenType]) {\n      tokenTypes[tokenType] = modeCfg.tokenTypeOverrides[tokenType];\n    }\n  }\n\n  var hrRE = /^([*\\-_])(?:\\s*\\1){2,}\\s*$/\n  ,   listRE = /^(?:[*\\-+]|^[0-9]+([.)]))\\s+/\n  ,   taskListRE = /^\\[(x| )\\](?=\\s)/ // Must follow listRE\n  ,   atxHeaderRE = modeCfg.allowAtxHeaderWithoutSpace ? /^(#+)/ : /^(#+)(?: |$)/\n  ,   setextHeaderRE = /^ *(?:\\={1,}|-{1,})\\s*$/\n  ,   textRE = /^[^#!\\[\\]*_\\\\<>` \"'(~]+/\n  ,   fencedCodeRE = new RegExp(\"^(\" + (modeCfg.fencedCodeBlocks === true ? \"~~~+|```+\" : modeCfg.fencedCodeBlocks) +\n                                \")[ \\\\t]*([\\\\w+#\\-]*)\")\n  ,   punctuation = /[!\\\"#$%&\\'()*+,\\-\\.\\/:;<=>?@\\[\\\\\\]^_`{|}~—]/\n\n  function switchInline(stream, state, f) {\n    state.f = state.inline = f;\n    return f(stream, state);\n  }\n\n  function switchBlock(stream, state, f) {\n    state.f = state.block = f;\n    return f(stream, state);\n  }\n\n  function lineIsEmpty(line) {\n    return !line || !/\\S/.test(line.string)\n  }\n\n  // Blocks\n\n  function blankLine(state) {\n    // Reset linkTitle state\n    state.linkTitle = false;\n    // Reset EM state\n    state.em = false;\n    // Reset STRONG state\n    state.strong = false;\n    // Reset strikethrough state\n    state.strikethrough = false;\n    // Reset state.quote\n    state.quote = 0;\n    // Reset state.indentedCode\n    state.indentedCode = false;\n    if (state.f == htmlBlock) {\n      state.f = inlineNormal;\n      state.block = blockNormal;\n    }\n    // Reset state.trailingSpace\n    state.trailingSpace = 0;\n    state.trailingSpaceNewLine = false;\n    // Mark this line as blank\n    state.prevLine = state.thisLine\n    state.thisLine = null\n    return null;\n  }\n\n  function blockNormal(stream, state) {\n\n    var sol = stream.sol();\n\n    var prevLineIsList = state.list !== false,\n        prevLineIsIndentedCode = state.indentedCode;\n\n    state.indentedCode = false;\n\n    if (prevLineIsList) {\n      if (state.indentationDiff >= 0) { // Continued list\n        if (state.indentationDiff < 4) { // Only adjust indentation if *not* a code block\n          state.indentation -= state.indentationDiff;\n        }\n        state.list = null;\n      } else if (state.indentation > 0) {\n        state.list = null;\n      } else { // No longer a list\n        state.list = false;\n      }\n    }\n\n    var match = null;\n    if (state.indentationDiff >= 4) {\n      stream.skipToEnd();\n      if (prevLineIsIndentedCode || lineIsEmpty(state.prevLine)) {\n        state.indentation -= 4;\n        state.indentedCode = true;\n        return tokenTypes.code;\n      } else {\n        return null;\n      }\n    } else if (stream.eatSpace()) {\n      return null;\n    } else if ((match = stream.match(atxHeaderRE)) && match[1].length <= 6) {\n      state.header = match[1].length;\n      if (modeCfg.highlightFormatting) state.formatting = \"header\";\n      state.f = state.inline;\n      return getType(state);\n    } else if (!lineIsEmpty(state.prevLine) && !state.quote && !prevLineIsList &&\n               !prevLineIsIndentedCode && (match = stream.match(setextHeaderRE))) {\n      state.header = match[0].charAt(0) == '=' ? 1 : 2;\n      if (modeCfg.highlightFormatting) state.formatting = \"header\";\n      state.f = state.inline;\n      return getType(state);\n    } else if (stream.eat('>')) {\n      state.quote = sol ? 1 : state.quote + 1;\n      if (modeCfg.highlightFormatting) state.formatting = \"quote\";\n      stream.eatSpace();\n      return getType(state);\n    } else if (stream.peek() === '[') {\n      return switchInline(stream, state, footnoteLink);\n    } else if (stream.match(hrRE, true)) {\n      state.hr = true;\n      return tokenTypes.hr;\n    } else if (match = stream.match(listRE)) {\n      var listType = match[1] ? \"ol\" : \"ul\";\n      state.indentation = stream.column() + stream.current().length;\n      state.list = true;\n\n      // While this list item's marker's indentation\n      // is less than the deepest list item's content's indentation,\n      // pop the deepest list item indentation off the stack.\n      while (state.listStack && stream.column() < state.listStack[state.listStack.length - 1]) {\n        state.listStack.pop();\n      }\n\n      // Add this list item's content's indentation to the stack\n      state.listStack.push(state.indentation);\n\n      if (modeCfg.taskLists && stream.match(taskListRE, false)) {\n        state.taskList = true;\n      }\n      state.f = state.inline;\n      if (modeCfg.highlightFormatting) state.formatting = [\"list\", \"list-\" + listType];\n      return getType(state);\n    } else if (modeCfg.fencedCodeBlocks && (match = stream.match(fencedCodeRE, true))) {\n      state.fencedChars = match[1]\n      // try switching mode\n      state.localMode = getMode(match[2]);\n      if (state.localMode) state.localState = CodeMirror.startState(state.localMode);\n      state.f = state.block = local;\n      if (modeCfg.highlightFormatting) state.formatting = \"code-block\";\n      state.code = -1\n      return getType(state);\n    }\n\n    return switchInline(stream, state, state.inline);\n  }\n\n  function htmlBlock(stream, state) {\n    var style = htmlMode.token(stream, state.htmlState);\n    if (!htmlModeMissing) {\n      var inner = CodeMirror.innerMode(htmlMode, state.htmlState)\n      if ((inner.mode.name == \"xml\" && inner.state.tagStart === null &&\n           (!inner.state.context && inner.state.tokenize.isInText)) ||\n          (state.md_inside && stream.current().indexOf(\">\") > -1)) {\n        state.f = inlineNormal;\n        state.block = blockNormal;\n        state.htmlState = null;\n      }\n    }\n    return style;\n  }\n\n  function local(stream, state) {\n    if (state.fencedChars && stream.match(state.fencedChars)) {\n      if (modeCfg.highlightFormatting) state.formatting = \"code-block\";\n      var returnType = getType(state)\n      state.localMode = state.localState = null;\n      state.block = blockNormal;\n      state.f = inlineNormal;\n      state.fencedChars = null;\n      state.code = 0\n      return returnType;\n    } else if (state.fencedChars && stream.skipTo(state.fencedChars)) {\n      return \"comment\"\n    } else if (state.localMode) {\n      return state.localMode.token(stream, state.localState);\n    } else {\n      stream.skipToEnd();\n      return tokenTypes.code;\n    }\n  }\n\n  // Inline\n  function getType(state) {\n    var styles = [];\n\n    if (state.formatting) {\n      styles.push(tokenTypes.formatting);\n\n      if (typeof state.formatting === \"string\") state.formatting = [state.formatting];\n\n      for (var i = 0; i < state.formatting.length; i++) {\n        styles.push(tokenTypes.formatting + \"-\" + state.formatting[i]);\n\n        if (state.formatting[i] === \"header\") {\n          styles.push(tokenTypes.formatting + \"-\" + state.formatting[i] + \"-\" + state.header);\n        }\n\n        // Add `formatting-quote` and `formatting-quote-#` for blockquotes\n        // Add `error` instead if the maximum blockquote nesting depth is passed\n        if (state.formatting[i] === \"quote\") {\n          if (!modeCfg.maxBlockquoteDepth || modeCfg.maxBlockquoteDepth >= state.quote) {\n            styles.push(tokenTypes.formatting + \"-\" + state.formatting[i] + \"-\" + state.quote);\n          } else {\n            styles.push(\"error\");\n          }\n        }\n      }\n    }\n\n    if (state.taskOpen) {\n      styles.push(\"meta\");\n      return styles.length ? styles.join(' ') : null;\n    }\n    if (state.taskClosed) {\n      styles.push(\"property\");\n      return styles.length ? styles.join(' ') : null;\n    }\n\n    if (state.linkHref) {\n      styles.push(tokenTypes.linkHref, \"url\");\n    } else { // Only apply inline styles to non-url text\n      if (state.strong) { styles.push(tokenTypes.strong); }\n      if (state.em) { styles.push(tokenTypes.em); }\n      if (state.strikethrough) { styles.push(tokenTypes.strikethrough); }\n      if (state.linkText) { styles.push(tokenTypes.linkText); }\n      if (state.code) { styles.push(tokenTypes.code); }\n      if (state.image) { styles.push(tokenTypes.image); }\n      if (state.imageAltText) { styles.push(tokenTypes.imageAltText, \"link\"); }\n      if (state.imageMarker) { styles.push(tokenTypes.imageMarker); }\n    }\n\n    if (state.header) { styles.push(tokenTypes.header, tokenTypes.header + \"-\" + state.header); }\n\n    if (state.quote) {\n      styles.push(tokenTypes.quote);\n\n      // Add `quote-#` where the maximum for `#` is modeCfg.maxBlockquoteDepth\n      if (!modeCfg.maxBlockquoteDepth || modeCfg.maxBlockquoteDepth >= state.quote) {\n        styles.push(tokenTypes.quote + \"-\" + state.quote);\n      } else {\n        styles.push(tokenTypes.quote + \"-\" + modeCfg.maxBlockquoteDepth);\n      }\n    }\n\n    if (state.list !== false) {\n      var listMod = (state.listStack.length - 1) % 3;\n      if (!listMod) {\n        styles.push(tokenTypes.list1);\n      } else if (listMod === 1) {\n        styles.push(tokenTypes.list2);\n      } else {\n        styles.push(tokenTypes.list3);\n      }\n    }\n\n    if (state.trailingSpaceNewLine) {\n      styles.push(\"trailing-space-new-line\");\n    } else if (state.trailingSpace) {\n      styles.push(\"trailing-space-\" + (state.trailingSpace % 2 ? \"a\" : \"b\"));\n    }\n\n    return styles.length ? styles.join(' ') : null;\n  }\n\n  function handleText(stream, state) {\n    if (stream.match(textRE, true)) {\n      return getType(state);\n    }\n    return undefined;\n  }\n\n  function inlineNormal(stream, state) {\n    var style = state.text(stream, state);\n    if (typeof style !== 'undefined')\n      return style;\n\n    if (state.list) { // List marker (*, +, -, 1., etc)\n      state.list = null;\n      return getType(state);\n    }\n\n    if (state.taskList) {\n      var taskOpen = stream.match(taskListRE, true)[1] !== \"x\";\n      if (taskOpen) state.taskOpen = true;\n      else state.taskClosed = true;\n      if (modeCfg.highlightFormatting) state.formatting = \"task\";\n      state.taskList = false;\n      return getType(state);\n    }\n\n    state.taskOpen = false;\n    state.taskClosed = false;\n\n    if (state.header && stream.match(/^#+$/, true)) {\n      if (modeCfg.highlightFormatting) state.formatting = \"header\";\n      return getType(state);\n    }\n\n    var ch = stream.next();\n\n    // Matches link titles present on next line\n    if (state.linkTitle) {\n      state.linkTitle = false;\n      var matchCh = ch;\n      if (ch === '(') {\n        matchCh = ')';\n      }\n      matchCh = (matchCh+'').replace(/([.?*+^\\[\\]\\\\(){}|-])/g, \"\\\\$1\");\n      var regex = '^\\\\s*(?:[^' + matchCh + '\\\\\\\\]+|\\\\\\\\\\\\\\\\|\\\\\\\\.)' + matchCh;\n      if (stream.match(new RegExp(regex), true)) {\n        return tokenTypes.linkHref;\n      }\n    }\n\n    // If this block is changed, it may need to be updated in GFM mode\n    if (ch === '`') {\n      var previousFormatting = state.formatting;\n      if (modeCfg.highlightFormatting) state.formatting = \"code\";\n      stream.eatWhile('`');\n      var count = stream.current().length\n      if (state.code == 0) {\n        state.code = count\n        return getType(state)\n      } else if (count == state.code) { // Must be exact\n        var t = getType(state)\n        state.code = 0\n        return t\n      } else {\n        state.formatting = previousFormatting\n        return getType(state)\n      }\n    } else if (state.code) {\n      return getType(state);\n    }\n\n    if (ch === '\\\\') {\n      stream.next();\n      if (modeCfg.highlightFormatting) {\n        var type = getType(state);\n        var formattingEscape = tokenTypes.formatting + \"-escape\";\n        return type ? type + \" \" + formattingEscape : formattingEscape;\n      }\n    }\n\n    if (ch === '!' && stream.match(/\\[[^\\]]*\\] ?(?:\\(|\\[)/, false)) {\n      state.imageMarker = true;\n      state.image = true;\n      if (modeCfg.highlightFormatting) state.formatting = \"image\";\n      return getType(state);\n    }\n\n    if (ch === '[' && state.imageMarker && stream.match(/[^\\]]*\\](\\(.*?\\)| ?\\[.*?\\])/, false)) {\n      state.imageMarker = false;\n      state.imageAltText = true\n      if (modeCfg.highlightFormatting) state.formatting = \"image\";\n      return getType(state);\n    }\n\n    if (ch === ']' && state.imageAltText) {\n      if (modeCfg.highlightFormatting) state.formatting = \"image\";\n      var type = getType(state);\n      state.imageAltText = false;\n      state.image = false;\n      state.inline = state.f = linkHref;\n      return type;\n    }\n\n    if (ch === '[' && stream.match(/[^\\]]*\\](\\(.*\\)| ?\\[.*?\\])/, false) && !state.image) {\n      state.linkText = true;\n      if (modeCfg.highlightFormatting) state.formatting = \"link\";\n      return getType(state);\n    }\n\n    if (ch === ']' && state.linkText && stream.match(/\\(.*?\\)| ?\\[.*?\\]/, false)) {\n      if (modeCfg.highlightFormatting) state.formatting = \"link\";\n      var type = getType(state);\n      state.linkText = false;\n      state.inline = state.f = linkHref;\n      return type;\n    }\n\n    if (ch === '<' && stream.match(/^(https?|ftps?):\\/\\/(?:[^\\\\>]|\\\\.)+>/, false)) {\n      state.f = state.inline = linkInline;\n      if (modeCfg.highlightFormatting) state.formatting = \"link\";\n      var type = getType(state);\n      if (type){\n        type += \" \";\n      } else {\n        type = \"\";\n      }\n      return type + tokenTypes.linkInline;\n    }\n\n    if (ch === '<' && stream.match(/^[^> \\\\]+@(?:[^\\\\>]|\\\\.)+>/, false)) {\n      state.f = state.inline = linkInline;\n      if (modeCfg.highlightFormatting) state.formatting = \"link\";\n      var type = getType(state);\n      if (type){\n        type += \" \";\n      } else {\n        type = \"\";\n      }\n      return type + tokenTypes.linkEmail;\n    }\n\n    if (ch === '<' && stream.match(/^(!--|[a-z]+(?:\\s+[a-z_:.\\-]+(?:\\s*=\\s*[^ >]+)?)*\\s*>)/i, false)) {\n      var end = stream.string.indexOf(\">\", stream.pos);\n      if (end != -1) {\n        var atts = stream.string.substring(stream.start, end);\n        if (/markdown\\s*=\\s*('|\"){0,1}1('|\"){0,1}/.test(atts)) state.md_inside = true;\n      }\n      stream.backUp(1);\n      state.htmlState = CodeMirror.startState(htmlMode);\n      return switchBlock(stream, state, htmlBlock);\n    }\n\n    if (ch === '<' && stream.match(/^\\/\\w*?>/)) {\n      state.md_inside = false;\n      return \"tag\";\n    } else if (ch === \"*\" || ch === \"_\") {\n      var len = 1, before = stream.pos == 1 ? \" \" : stream.string.charAt(stream.pos - 2)\n      while (len < 3 && stream.eat(ch)) len++\n      var after = stream.peek() || \" \"\n      // See http://spec.commonmark.org/0.27/#emphasis-and-strong-emphasis\n      var leftFlanking = !/\\s/.test(after) && (!punctuation.test(after) || /\\s/.test(before) || punctuation.test(before))\n      var rightFlanking = !/\\s/.test(before) && (!punctuation.test(before) || /\\s/.test(after) || punctuation.test(after))\n      var setEm = null, setStrong = null\n      if (len % 2) { // Em\n        if (!state.em && leftFlanking && (ch === \"*\" || !rightFlanking || punctuation.test(before)))\n          setEm = true\n        else if (state.em == ch && rightFlanking && (ch === \"*\" || !leftFlanking || punctuation.test(after)))\n          setEm = false\n      }\n      if (len > 1) { // Strong\n        if (!state.strong && leftFlanking && (ch === \"*\" || !rightFlanking || punctuation.test(before)))\n          setStrong = true\n        else if (state.strong == ch && rightFlanking && (ch === \"*\" || !leftFlanking || punctuation.test(after)))\n          setStrong = false\n      }\n      if (setStrong != null || setEm != null) {\n        if (modeCfg.highlightFormatting) state.formatting = setEm == null ? \"strong\" : setStrong == null ? \"em\" : \"strong em\"\n        if (setEm === true) state.em = ch\n        if (setStrong === true) state.strong = ch\n        var t = getType(state)\n        if (setEm === false) state.em = false\n        if (setStrong === false) state.strong = false\n        return t\n      }\n    } else if (ch === ' ') {\n      if (stream.eat('*') || stream.eat('_')) { // Probably surrounded by spaces\n        if (stream.peek() === ' ') { // Surrounded by spaces, ignore\n          return getType(state);\n        } else { // Not surrounded by spaces, back up pointer\n          stream.backUp(1);\n        }\n      }\n    }\n\n    if (modeCfg.strikethrough) {\n      if (ch === '~' && stream.eatWhile(ch)) {\n        if (state.strikethrough) {// Remove strikethrough\n          if (modeCfg.highlightFormatting) state.formatting = \"strikethrough\";\n          var t = getType(state);\n          state.strikethrough = false;\n          return t;\n        } else if (stream.match(/^[^\\s]/, false)) {// Add strikethrough\n          state.strikethrough = true;\n          if (modeCfg.highlightFormatting) state.formatting = \"strikethrough\";\n          return getType(state);\n        }\n      } else if (ch === ' ') {\n        if (stream.match(/^~~/, true)) { // Probably surrounded by space\n          if (stream.peek() === ' ') { // Surrounded by spaces, ignore\n            return getType(state);\n          } else { // Not surrounded by spaces, back up pointer\n            stream.backUp(2);\n          }\n        }\n      }\n    }\n\n    if (ch === ' ') {\n      if (stream.match(/ +$/, false)) {\n        state.trailingSpace++;\n      } else if (state.trailingSpace) {\n        state.trailingSpaceNewLine = true;\n      }\n    }\n\n    return getType(state);\n  }\n\n  function linkInline(stream, state) {\n    var ch = stream.next();\n\n    if (ch === \">\") {\n      state.f = state.inline = inlineNormal;\n      if (modeCfg.highlightFormatting) state.formatting = \"link\";\n      var type = getType(state);\n      if (type){\n        type += \" \";\n      } else {\n        type = \"\";\n      }\n      return type + tokenTypes.linkInline;\n    }\n\n    stream.match(/^[^>]+/, true);\n\n    return tokenTypes.linkInline;\n  }\n\n  function linkHref(stream, state) {\n    // Check if space, and return NULL if so (to avoid marking the space)\n    if(stream.eatSpace()){\n      return null;\n    }\n    var ch = stream.next();\n    if (ch === '(' || ch === '[') {\n      state.f = state.inline = getLinkHrefInside(ch === \"(\" ? \")\" : \"]\", 0);\n      if (modeCfg.highlightFormatting) state.formatting = \"link-string\";\n      state.linkHref = true;\n      return getType(state);\n    }\n    return 'error';\n  }\n\n  var linkRE = {\n    \")\": /^(?:[^\\\\\\(\\)]|\\\\.|\\((?:[^\\\\\\(\\)]|\\\\.)*\\))*?(?=\\))/,\n    \"]\": /^(?:[^\\\\\\[\\]]|\\\\.|\\[(?:[^\\\\\\[\\\\]]|\\\\.)*\\])*?(?=\\])/\n  }\n\n  function getLinkHrefInside(endChar) {\n    return function(stream, state) {\n      var ch = stream.next();\n\n      if (ch === endChar) {\n        state.f = state.inline = inlineNormal;\n        if (modeCfg.highlightFormatting) state.formatting = \"link-string\";\n        var returnState = getType(state);\n        state.linkHref = false;\n        return returnState;\n      }\n\n      stream.match(linkRE[endChar])\n      state.linkHref = true;\n      return getType(state);\n    };\n  }\n\n  function footnoteLink(stream, state) {\n    if (stream.match(/^([^\\]\\\\]|\\\\.)*\\]:/, false)) {\n      state.f = footnoteLinkInside;\n      stream.next(); // Consume [\n      if (modeCfg.highlightFormatting) state.formatting = \"link\";\n      state.linkText = true;\n      return getType(state);\n    }\n    return switchInline(stream, state, inlineNormal);\n  }\n\n  function footnoteLinkInside(stream, state) {\n    if (stream.match(/^\\]:/, true)) {\n      state.f = state.inline = footnoteUrl;\n      if (modeCfg.highlightFormatting) state.formatting = \"link\";\n      var returnType = getType(state);\n      state.linkText = false;\n      return returnType;\n    }\n\n    stream.match(/^([^\\]\\\\]|\\\\.)+/, true);\n\n    return tokenTypes.linkText;\n  }\n\n  function footnoteUrl(stream, state) {\n    // Check if space, and return NULL if so (to avoid marking the space)\n    if(stream.eatSpace()){\n      return null;\n    }\n    // Match URL\n    stream.match(/^[^\\s]+/, true);\n    // Check for link title\n    if (stream.peek() === undefined) { // End of line, set flag to check next line\n      state.linkTitle = true;\n    } else { // More content on line, check if link title\n      stream.match(/^(?:\\s+(?:\"(?:[^\"\\\\]|\\\\\\\\|\\\\.)+\"|'(?:[^'\\\\]|\\\\\\\\|\\\\.)+'|\\((?:[^)\\\\]|\\\\\\\\|\\\\.)+\\)))?/, true);\n    }\n    state.f = state.inline = inlineNormal;\n    return tokenTypes.linkHref + \" url\";\n  }\n\n  var mode = {\n    startState: function() {\n      return {\n        f: blockNormal,\n\n        prevLine: null,\n        thisLine: null,\n\n        block: blockNormal,\n        htmlState: null,\n        indentation: 0,\n\n        inline: inlineNormal,\n        text: handleText,\n\n        formatting: false,\n        linkText: false,\n        linkHref: false,\n        linkTitle: false,\n        code: 0,\n        em: false,\n        strong: false,\n        header: 0,\n        hr: false,\n        taskList: false,\n        list: false,\n        listStack: [],\n        quote: 0,\n        trailingSpace: 0,\n        trailingSpaceNewLine: false,\n        strikethrough: false,\n        fencedChars: null\n      };\n    },\n\n    copyState: function(s) {\n      return {\n        f: s.f,\n\n        prevLine: s.prevLine,\n        thisLine: s.thisLine,\n\n        block: s.block,\n        htmlState: s.htmlState && CodeMirror.copyState(htmlMode, s.htmlState),\n        indentation: s.indentation,\n\n        localMode: s.localMode,\n        localState: s.localMode ? CodeMirror.copyState(s.localMode, s.localState) : null,\n\n        inline: s.inline,\n        text: s.text,\n        formatting: false,\n        linkTitle: s.linkTitle,\n        code: s.code,\n        em: s.em,\n        strong: s.strong,\n        strikethrough: s.strikethrough,\n        header: s.header,\n        hr: s.hr,\n        taskList: s.taskList,\n        list: s.list,\n        listStack: s.listStack.slice(0),\n        quote: s.quote,\n        indentedCode: s.indentedCode,\n        trailingSpace: s.trailingSpace,\n        trailingSpaceNewLine: s.trailingSpaceNewLine,\n        md_inside: s.md_inside,\n        fencedChars: s.fencedChars\n      };\n    },\n\n    token: function(stream, state) {\n\n      // Reset state.formatting\n      state.formatting = false;\n\n      if (stream != state.thisLine) {\n        var forceBlankLine = state.header || state.hr;\n\n        // Reset state.header and state.hr\n        state.header = 0;\n        state.hr = false;\n\n        if (stream.match(/^\\s*$/, true) || forceBlankLine) {\n          blankLine(state);\n          if (!forceBlankLine) return null\n          state.prevLine = null\n        }\n\n        state.prevLine = state.thisLine\n        state.thisLine = stream\n\n        // Reset state.taskList\n        state.taskList = false;\n\n        // Reset state.trailingSpace\n        state.trailingSpace = 0;\n        state.trailingSpaceNewLine = false;\n\n        state.f = state.block;\n        var indentation = stream.match(/^\\s*/, true)[0].replace(/\\t/g, '    ').length;\n        state.indentationDiff = Math.min(indentation - state.indentation, 4);\n        state.indentation = state.indentation + state.indentationDiff;\n        if (indentation > 0) return null;\n      }\n      return state.f(stream, state);\n    },\n\n    innerMode: function(state) {\n      if (state.block == htmlBlock) return {state: state.htmlState, mode: htmlMode};\n      if (state.localState) return {state: state.localState, mode: state.localMode};\n      return {state: state, mode: mode};\n    },\n\n    blankLine: blankLine,\n\n    getType: getType,\n\n    closeBrackets: \"()[]{}''\\\"\\\"``\",\n    fold: \"markdown\"\n  };\n  return mode;\n}, \"xml\");\n\nCodeMirror.defineMIME(\"text/x-markdown\", \"markdown\");\n\n});\n\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/edit/matchbrackets',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  var ie_lt8 = /MSIE \\d/.test(navigator.userAgent) &&\n    (document.documentMode == null || document.documentMode < 8);\n\n  var Pos = CodeMirror.Pos;\n\n  var matching = {\"(\": \")>\", \")\": \"(<\", \"[\": \"]>\", \"]\": \"[<\", \"{\": \"}>\", \"}\": \"{<\"};\n\n  function findMatchingBracket(cm, where, strict, config) {\n    var line = cm.getLineHandle(where.line), pos = where.ch - 1;\n    var match = (pos >= 0 && matching[line.text.charAt(pos)]) || matching[line.text.charAt(++pos)];\n    if (!match) return null;\n    var dir = match.charAt(1) == \">\" ? 1 : -1;\n    if (strict && (dir > 0) != (pos == where.ch)) return null;\n    var style = cm.getTokenTypeAt(Pos(where.line, pos + 1));\n\n    var found = scanForBracket(cm, Pos(where.line, pos + (dir > 0 ? 1 : 0)), dir, style || null, config);\n    if (found == null) return null;\n    return {from: Pos(where.line, pos), to: found && found.pos,\n            match: found && found.ch == match.charAt(0), forward: dir > 0};\n  }\n\n  // bracketRegex is used to specify which type of bracket to scan\n  // should be a regexp, e.g. /[[\\]]/\n  //\n  // Note: If \"where\" is on an open bracket, then this bracket is ignored.\n  //\n  // Returns false when no bracket was found, null when it reached\n  // maxScanLines and gave up\n  function scanForBracket(cm, where, dir, style, config) {\n    var maxScanLen = (config && config.maxScanLineLength) || 10000;\n    var maxScanLines = (config && config.maxScanLines) || 1000;\n\n    var stack = [];\n    var re = config && config.bracketRegex ? config.bracketRegex : /[(){}[\\]]/;\n    var lineEnd = dir > 0 ? Math.min(where.line + maxScanLines, cm.lastLine() + 1)\n                          : Math.max(cm.firstLine() - 1, where.line - maxScanLines);\n    for (var lineNo = where.line; lineNo != lineEnd; lineNo += dir) {\n      var line = cm.getLine(lineNo);\n      if (!line) continue;\n      var pos = dir > 0 ? 0 : line.length - 1, end = dir > 0 ? line.length : -1;\n      if (line.length > maxScanLen) continue;\n      if (lineNo == where.line) pos = where.ch - (dir < 0 ? 1 : 0);\n      for (; pos != end; pos += dir) {\n        var ch = line.charAt(pos);\n        if (re.test(ch) && (style === undefined || cm.getTokenTypeAt(Pos(lineNo, pos + 1)) == style)) {\n          var match = matching[ch];\n          if ((match.charAt(1) == \">\") == (dir > 0)) stack.push(ch);\n          else if (!stack.length) return {pos: Pos(lineNo, pos), ch: ch};\n          else stack.pop();\n        }\n      }\n    }\n    return lineNo - dir == (dir > 0 ? cm.lastLine() : cm.firstLine()) ? false : null;\n  }\n\n  function matchBrackets(cm, autoclear, config) {\n    // Disable brace matching in long lines, since it'll cause hugely slow updates\n    var maxHighlightLen = cm.state.matchBrackets.maxHighlightLineLength || 1000;\n    var marks = [], ranges = cm.listSelections();\n    for (var i = 0; i < ranges.length; i++) {\n      var match = ranges[i].empty() && findMatchingBracket(cm, ranges[i].head, false, config);\n      if (match && cm.getLine(match.from.line).length <= maxHighlightLen) {\n        var style = match.match ? \"CodeMirror-matchingbracket\" : \"CodeMirror-nonmatchingbracket\";\n        marks.push(cm.markText(match.from, Pos(match.from.line, match.from.ch + 1), {className: style}));\n        if (match.to && cm.getLine(match.to.line).length <= maxHighlightLen)\n          marks.push(cm.markText(match.to, Pos(match.to.line, match.to.ch + 1), {className: style}));\n      }\n    }\n\n    if (marks.length) {\n      // Kludge to work around the IE bug from issue #1193, where text\n      // input stops going to the textare whever this fires.\n      if (ie_lt8 && cm.state.focused) cm.focus();\n\n      var clear = function() {\n        cm.operation(function() {\n          for (var i = 0; i < marks.length; i++) marks[i].clear();\n        });\n      };\n      if (autoclear) setTimeout(clear, 800);\n      else return clear;\n    }\n  }\n\n  var currentlyHighlighted = null;\n  function doMatchBrackets(cm) {\n    cm.operation(function() {\n      if (currentlyHighlighted) {currentlyHighlighted(); currentlyHighlighted = null;}\n      currentlyHighlighted = matchBrackets(cm, false, cm.state.matchBrackets);\n    });\n  }\n\n  CodeMirror.defineOption(\"matchBrackets\", false, function(cm, val, old) {\n    if (old && old != CodeMirror.Init) {\n      cm.off(\"cursorActivity\", doMatchBrackets);\n      if (currentlyHighlighted) {currentlyHighlighted(); currentlyHighlighted = null;}\n    }\n    if (val) {\n      cm.state.matchBrackets = typeof val == \"object\" ? val : {};\n      cm.on(\"cursorActivity\", doMatchBrackets);\n    }\n  });\n\n  CodeMirror.defineExtension(\"matchBrackets\", function() {matchBrackets(this, true);});\n  CodeMirror.defineExtension(\"findMatchingBracket\", function(pos, strict, config){\n    return findMatchingBracket(this, pos, strict, config);\n  });\n  CodeMirror.defineExtension(\"scanForBracket\", function(pos, dir, style, config){\n    return scanForBracket(this, pos, dir, style, config);\n  });\n});\n\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/comment/continuecomment',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  var modes = [\"clike\", \"css\", \"javascript\"];\n\n  for (var i = 0; i < modes.length; ++i)\n    CodeMirror.extendMode(modes[i], {blockCommentContinue: \" * \"});\n\n  function continueComment(cm) {\n    if (cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n    var ranges = cm.listSelections(), mode, inserts = [];\n    for (var i = 0; i < ranges.length; i++) {\n      var pos = ranges[i].head, token = cm.getTokenAt(pos);\n      if (token.type != \"comment\") return CodeMirror.Pass;\n      var modeHere = CodeMirror.innerMode(cm.getMode(), token.state).mode;\n      if (!mode) mode = modeHere;\n      else if (mode != modeHere) return CodeMirror.Pass;\n\n      var insert = null;\n      if (mode.blockCommentStart && mode.blockCommentContinue) {\n        var end = token.string.indexOf(mode.blockCommentEnd);\n        var full = cm.getRange(CodeMirror.Pos(pos.line, 0), CodeMirror.Pos(pos.line, token.end)), found;\n        if (end != -1 && end == token.string.length - mode.blockCommentEnd.length && pos.ch >= end) {\n          // Comment ended, don't continue it\n        } else if (token.string.indexOf(mode.blockCommentStart) == 0) {\n          insert = full.slice(0, token.start);\n          if (!/^\\s*$/.test(insert)) {\n            insert = \"\";\n            for (var j = 0; j < token.start; ++j) insert += \" \";\n          }\n        } else if ((found = full.indexOf(mode.blockCommentContinue)) != -1 &&\n                   found + mode.blockCommentContinue.length > token.start &&\n                   /^\\s*$/.test(full.slice(0, found))) {\n          insert = full.slice(0, found);\n        }\n        if (insert != null) insert += mode.blockCommentContinue;\n      }\n      if (insert == null && mode.lineComment && continueLineCommentEnabled(cm)) {\n        var line = cm.getLine(pos.line), found = line.indexOf(mode.lineComment);\n        if (found > -1) {\n          insert = line.slice(0, found);\n          if (/\\S/.test(insert)) insert = null;\n          else insert += mode.lineComment + line.slice(found + mode.lineComment.length).match(/^\\s*/)[0];\n        }\n      }\n      if (insert == null) return CodeMirror.Pass;\n      inserts[i] = \"\\n\" + insert;\n    }\n\n    cm.operation(function() {\n      for (var i = ranges.length - 1; i >= 0; i--)\n        cm.replaceRange(inserts[i], ranges[i].from(), ranges[i].to(), \"+insert\");\n    });\n  }\n\n  function continueLineCommentEnabled(cm) {\n    var opt = cm.getOption(\"continueComments\");\n    if (opt && typeof opt == \"object\")\n      return opt.continueLineComment !== false;\n    return true;\n  }\n\n  CodeMirror.defineOption(\"continueComments\", null, function(cm, val, prev) {\n    if (prev && prev != CodeMirror.Init)\n      cm.removeKeyMap(\"continueComment\");\n    if (val) {\n      var key = \"Enter\";\n      if (typeof val == \"string\")\n        key = val;\n      else if (typeof val == \"object\" && val.key)\n        key = val.key;\n      var map = {name: \"continueComment\"};\n      map[key] = continueComment;\n      cm.addKeyMap(map);\n    }\n  });\n});\n\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/comment/comment',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  var noOptions = {};\n  var nonWS = /[^\\s\\u00a0]/;\n  var Pos = CodeMirror.Pos;\n\n  function firstNonWS(str) {\n    var found = str.search(nonWS);\n    return found == -1 ? 0 : found;\n  }\n\n  CodeMirror.commands.toggleComment = function(cm) {\n    cm.toggleComment();\n  };\n\n  CodeMirror.defineExtension(\"toggleComment\", function(options) {\n    if (!options) options = noOptions;\n    var cm = this;\n    var minLine = Infinity, ranges = this.listSelections(), mode = null;\n    for (var i = ranges.length - 1; i >= 0; i--) {\n      var from = ranges[i].from(), to = ranges[i].to();\n      if (from.line >= minLine) continue;\n      if (to.line >= minLine) to = Pos(minLine, 0);\n      minLine = from.line;\n      if (mode == null) {\n        if (cm.uncomment(from, to, options)) mode = \"un\";\n        else { cm.lineComment(from, to, options); mode = \"line\"; }\n      } else if (mode == \"un\") {\n        cm.uncomment(from, to, options);\n      } else {\n        cm.lineComment(from, to, options);\n      }\n    }\n  });\n\n  // Rough heuristic to try and detect lines that are part of multi-line string\n  function probablyInsideString(cm, pos, line) {\n    return /\\bstring\\b/.test(cm.getTokenTypeAt(Pos(pos.line, 0))) && !/^[\\'\\\"\\`]/.test(line)\n  }\n\n  function getMode(cm, pos) {\n    var mode = cm.getMode()\n    return mode.useInnerComments === false || !mode.innerMode ? mode : cm.getModeAt(pos)\n  }\n\n  CodeMirror.defineExtension(\"lineComment\", function(from, to, options) {\n    if (!options) options = noOptions;\n    var self = this, mode = getMode(self, from);\n    var firstLine = self.getLine(from.line);\n    if (firstLine == null || probablyInsideString(self, from, firstLine)) return;\n\n    var commentString = options.lineComment || mode.lineComment;\n    if (!commentString) {\n      if (options.blockCommentStart || mode.blockCommentStart) {\n        options.fullLines = true;\n        self.blockComment(from, to, options);\n      }\n      return;\n    }\n\n    var end = Math.min(to.ch != 0 || to.line == from.line ? to.line + 1 : to.line, self.lastLine() + 1);\n    var pad = options.padding == null ? \" \" : options.padding;\n    var blankLines = options.commentBlankLines || from.line == to.line;\n\n    self.operation(function() {\n      if (options.indent) {\n        var baseString = null;\n        for (var i = from.line; i < end; ++i) {\n          var line = self.getLine(i);\n          var whitespace = line.slice(0, firstNonWS(line));\n          if (baseString == null || baseString.length > whitespace.length) {\n            baseString = whitespace;\n          }\n        }\n        for (var i = from.line; i < end; ++i) {\n          var line = self.getLine(i), cut = baseString.length;\n          if (!blankLines && !nonWS.test(line)) continue;\n          if (line.slice(0, cut) != baseString) cut = firstNonWS(line);\n          self.replaceRange(baseString + commentString + pad, Pos(i, 0), Pos(i, cut));\n        }\n      } else {\n        for (var i = from.line; i < end; ++i) {\n          if (blankLines || nonWS.test(self.getLine(i)))\n            self.replaceRange(commentString + pad, Pos(i, 0));\n        }\n      }\n    });\n  });\n\n  CodeMirror.defineExtension(\"blockComment\", function(from, to, options) {\n    if (!options) options = noOptions;\n    var self = this, mode = getMode(self, from);\n    var startString = options.blockCommentStart || mode.blockCommentStart;\n    var endString = options.blockCommentEnd || mode.blockCommentEnd;\n    if (!startString || !endString) {\n      if ((options.lineComment || mode.lineComment) && options.fullLines != false)\n        self.lineComment(from, to, options);\n      return;\n    }\n    if (/\\bcomment\\b/.test(self.getTokenTypeAt(Pos(from.line, 0)))) return\n\n    var end = Math.min(to.line, self.lastLine());\n    if (end != from.line && to.ch == 0 && nonWS.test(self.getLine(end))) --end;\n\n    var pad = options.padding == null ? \" \" : options.padding;\n    if (from.line > end) return;\n\n    self.operation(function() {\n      if (options.fullLines != false) {\n        var lastLineHasText = nonWS.test(self.getLine(end));\n        self.replaceRange(pad + endString, Pos(end));\n        self.replaceRange(startString + pad, Pos(from.line, 0));\n        var lead = options.blockCommentLead || mode.blockCommentLead;\n        if (lead != null) for (var i = from.line + 1; i <= end; ++i)\n          if (i != end || lastLineHasText)\n            self.replaceRange(lead + pad, Pos(i, 0));\n      } else {\n        self.replaceRange(endString, to);\n        self.replaceRange(startString, from);\n      }\n    });\n  });\n\n  CodeMirror.defineExtension(\"uncomment\", function(from, to, options) {\n    if (!options) options = noOptions;\n    var self = this, mode = getMode(self, from);\n    var end = Math.min(to.ch != 0 || to.line == from.line ? to.line : to.line - 1, self.lastLine()), start = Math.min(from.line, end);\n\n    // Try finding line comments\n    var lineString = options.lineComment || mode.lineComment, lines = [];\n    var pad = options.padding == null ? \" \" : options.padding, didSomething;\n    lineComment: {\n      if (!lineString) break lineComment;\n      for (var i = start; i <= end; ++i) {\n        var line = self.getLine(i);\n        var found = line.indexOf(lineString);\n        if (found > -1 && !/comment/.test(self.getTokenTypeAt(Pos(i, found + 1)))) found = -1;\n        if (found == -1 && nonWS.test(line)) break lineComment;\n        if (found > -1 && nonWS.test(line.slice(0, found))) break lineComment;\n        lines.push(line);\n      }\n      self.operation(function() {\n        for (var i = start; i <= end; ++i) {\n          var line = lines[i - start];\n          var pos = line.indexOf(lineString), endPos = pos + lineString.length;\n          if (pos < 0) continue;\n          if (line.slice(endPos, endPos + pad.length) == pad) endPos += pad.length;\n          didSomething = true;\n          self.replaceRange(\"\", Pos(i, pos), Pos(i, endPos));\n        }\n      });\n      if (didSomething) return true;\n    }\n\n    // Try block comments\n    var startString = options.blockCommentStart || mode.blockCommentStart;\n    var endString = options.blockCommentEnd || mode.blockCommentEnd;\n    if (!startString || !endString) return false;\n    var lead = options.blockCommentLead || mode.blockCommentLead;\n    var startLine = self.getLine(start), open = startLine.indexOf(startString)\n    if (open == -1) return false\n    var endLine = end == start ? startLine : self.getLine(end)\n    var close = endLine.indexOf(endString, end == start ? open + startString.length : 0);\n    if (close == -1 && start != end) {\n      endLine = self.getLine(--end);\n      close = endLine.indexOf(endString);\n    }\n    var insideStart = Pos(start, open + 1), insideEnd = Pos(end, close + 1)\n    if (close == -1 ||\n        !/comment/.test(self.getTokenTypeAt(insideStart)) ||\n        !/comment/.test(self.getTokenTypeAt(insideEnd)) ||\n        self.getRange(insideStart, insideEnd, \"\\n\").indexOf(endString) > -1)\n      return false;\n\n    // Avoid killing block comments completely outside the selection.\n    // Positions of the last startString before the start of the selection, and the first endString after it.\n    var lastStart = startLine.lastIndexOf(startString, from.ch);\n    var firstEnd = lastStart == -1 ? -1 : startLine.slice(0, from.ch).indexOf(endString, lastStart + startString.length);\n    if (lastStart != -1 && firstEnd != -1 && firstEnd + endString.length != from.ch) return false;\n    // Positions of the first endString after the end of the selection, and the last startString before it.\n    firstEnd = endLine.indexOf(endString, to.ch);\n    var almostLastStart = endLine.slice(to.ch).lastIndexOf(startString, firstEnd - to.ch);\n    lastStart = (firstEnd == -1 || almostLastStart == -1) ? -1 : to.ch + almostLastStart;\n    if (firstEnd != -1 && lastStart != -1 && lastStart != to.ch) return false;\n\n    self.operation(function() {\n      self.replaceRange(\"\", Pos(end, close - (pad && endLine.slice(close - pad.length, close) == pad ? pad.length : 0)),\n                        Pos(end, close + endString.length));\n      var openEnd = open + startString.length;\n      if (pad && startLine.slice(openEnd, openEnd + pad.length) == pad) openEnd += pad.length;\n      self.replaceRange(\"\", Pos(start, open), Pos(start, openEnd));\n      if (lead) for (var i = start + 1; i <= end; ++i) {\n        var line = self.getLine(i), found = line.indexOf(lead);\n        if (found == -1 || nonWS.test(line.slice(0, found))) continue;\n        var foundEnd = found + lead.length;\n        if (pad && line.slice(foundEnd, foundEnd + pad.length) == pad) foundEnd += pad.length;\n        self.replaceRange(\"\", Pos(i, found), Pos(i, foundEnd));\n      }\n    });\n    return true;\n  });\n});\n\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/hint/show-hint',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  var HINT_ELEMENT_CLASS        = \"CodeMirror-hint\";\n  var ACTIVE_HINT_ELEMENT_CLASS = \"CodeMirror-hint-active\";\n\n  // This is the old interface, kept around for now to stay\n  // backwards-compatible.\n  CodeMirror.showHint = function(cm, getHints, options) {\n    if (!getHints) return cm.showHint(options);\n    if (options && options.async) getHints.async = true;\n    var newOpts = {hint: getHints};\n    if (options) for (var prop in options) newOpts[prop] = options[prop];\n    return cm.showHint(newOpts);\n  };\n\n  CodeMirror.defineExtension(\"showHint\", function(options) {\n    options = parseOptions(this, this.getCursor(\"start\"), options);\n    var selections = this.listSelections()\n    if (selections.length > 1) return;\n    // By default, don't allow completion when something is selected.\n    // A hint function can have a `supportsSelection` property to\n    // indicate that it can handle selections.\n    if (this.somethingSelected()) {\n      if (!options.hint.supportsSelection) return;\n      // Don't try with cross-line selections\n      for (var i = 0; i < selections.length; i++)\n        if (selections[i].head.line != selections[i].anchor.line) return;\n    }\n\n    if (this.state.completionActive) this.state.completionActive.close();\n    var completion = this.state.completionActive = new Completion(this, options);\n    if (!completion.options.hint) return;\n\n    CodeMirror.signal(this, \"startCompletion\", this);\n    completion.update(true);\n  });\n\n  function Completion(cm, options) {\n    this.cm = cm;\n    this.options = options;\n    this.widget = null;\n    this.debounce = 0;\n    this.tick = 0;\n    this.startPos = this.cm.getCursor(\"start\");\n    this.startLen = this.cm.getLine(this.startPos.line).length - this.cm.getSelection().length;\n\n    var self = this;\n    cm.on(\"cursorActivity\", this.activityFunc = function() { self.cursorActivity(); });\n  }\n\n  var requestAnimationFrame = window.requestAnimationFrame || function(fn) {\n    return setTimeout(fn, 1000/60);\n  };\n  var cancelAnimationFrame = window.cancelAnimationFrame || clearTimeout;\n\n  Completion.prototype = {\n    close: function() {\n      if (!this.active()) return;\n      this.cm.state.completionActive = null;\n      this.tick = null;\n      this.cm.off(\"cursorActivity\", this.activityFunc);\n\n      if (this.widget && this.data) CodeMirror.signal(this.data, \"close\");\n      if (this.widget) this.widget.close();\n      CodeMirror.signal(this.cm, \"endCompletion\", this.cm);\n    },\n\n    active: function() {\n      return this.cm.state.completionActive == this;\n    },\n\n    pick: function(data, i) {\n      var completion = data.list[i];\n      if (completion.hint) completion.hint(this.cm, data, completion);\n      else this.cm.replaceRange(getText(completion), completion.from || data.from,\n                                completion.to || data.to, \"complete\");\n      CodeMirror.signal(data, \"pick\", completion);\n      this.close();\n    },\n\n    cursorActivity: function() {\n      if (this.debounce) {\n        cancelAnimationFrame(this.debounce);\n        this.debounce = 0;\n      }\n\n      var pos = this.cm.getCursor(), line = this.cm.getLine(pos.line);\n      if (pos.line != this.startPos.line || line.length - pos.ch != this.startLen - this.startPos.ch ||\n          pos.ch < this.startPos.ch || this.cm.somethingSelected() ||\n          (pos.ch && this.options.closeCharacters.test(line.charAt(pos.ch - 1)))) {\n        this.close();\n      } else {\n        var self = this;\n        this.debounce = requestAnimationFrame(function() {self.update();});\n        if (this.widget) this.widget.disable();\n      }\n    },\n\n    update: function(first) {\n      if (this.tick == null) return\n      var self = this, myTick = ++this.tick\n      fetchHints(this.options.hint, this.cm, this.options, function(data) {\n        if (self.tick == myTick) self.finishUpdate(data, first)\n      })\n    },\n\n    finishUpdate: function(data, first) {\n      if (this.data) CodeMirror.signal(this.data, \"update\");\n\n      var picked = (this.widget && this.widget.picked) || (first && this.options.completeSingle);\n      if (this.widget) this.widget.close();\n\n      if (data && this.data && isNewCompletion(this.data, data)) return;\n      this.data = data;\n\n      if (data && data.list.length) {\n        if (picked && data.list.length == 1) {\n          this.pick(data, 0);\n        } else {\n          this.widget = new Widget(this, data);\n          CodeMirror.signal(data, \"shown\");\n        }\n      }\n    }\n  };\n\n  function isNewCompletion(old, nw) {\n    var moved = CodeMirror.cmpPos(nw.from, old.from)\n    return moved > 0 && old.to.ch - old.from.ch != nw.to.ch - nw.from.ch\n  }\n\n  function parseOptions(cm, pos, options) {\n    var editor = cm.options.hintOptions;\n    var out = {};\n    for (var prop in defaultOptions) out[prop] = defaultOptions[prop];\n    if (editor) for (var prop in editor)\n      if (editor[prop] !== undefined) out[prop] = editor[prop];\n    if (options) for (var prop in options)\n      if (options[prop] !== undefined) out[prop] = options[prop];\n    if (out.hint.resolve) out.hint = out.hint.resolve(cm, pos)\n    return out;\n  }\n\n  function getText(completion) {\n    if (typeof completion == \"string\") return completion;\n    else return completion.text;\n  }\n\n  function buildKeyMap(completion, handle) {\n    var baseMap = {\n      Up: function() {handle.moveFocus(-1);},\n      Down: function() {handle.moveFocus(1);},\n      PageUp: function() {handle.moveFocus(-handle.menuSize() + 1, true);},\n      PageDown: function() {handle.moveFocus(handle.menuSize() - 1, true);},\n      Home: function() {handle.setFocus(0);},\n      End: function() {handle.setFocus(handle.length - 1);},\n      Enter: handle.pick,\n      Tab: handle.pick,\n      Esc: handle.close\n    };\n    var custom = completion.options.customKeys;\n    var ourMap = custom ? {} : baseMap;\n    function addBinding(key, val) {\n      var bound;\n      if (typeof val != \"string\")\n        bound = function(cm) { return val(cm, handle); };\n      // This mechanism is deprecated\n      else if (baseMap.hasOwnProperty(val))\n        bound = baseMap[val];\n      else\n        bound = val;\n      ourMap[key] = bound;\n    }\n    if (custom)\n      for (var key in custom) if (custom.hasOwnProperty(key))\n        addBinding(key, custom[key]);\n    var extra = completion.options.extraKeys;\n    if (extra)\n      for (var key in extra) if (extra.hasOwnProperty(key))\n        addBinding(key, extra[key]);\n    return ourMap;\n  }\n\n  function getHintElement(hintsElement, el) {\n    while (el && el != hintsElement) {\n      if (el.nodeName.toUpperCase() === \"LI\" && el.parentNode == hintsElement) return el;\n      el = el.parentNode;\n    }\n  }\n\n  function Widget(completion, data) {\n    this.completion = completion;\n    this.data = data;\n    this.picked = false;\n    var widget = this, cm = completion.cm;\n\n    var hints = this.hints = document.createElement(\"ul\");\n    hints.className = \"CodeMirror-hints\";\n    this.selectedHint = data.selectedHint || 0;\n\n    var completions = data.list;\n    for (var i = 0; i < completions.length; ++i) {\n      var elt = hints.appendChild(document.createElement(\"li\")), cur = completions[i];\n      var className = HINT_ELEMENT_CLASS + (i != this.selectedHint ? \"\" : \" \" + ACTIVE_HINT_ELEMENT_CLASS);\n      if (cur.className != null) className = cur.className + \" \" + className;\n      elt.className = className;\n      if (cur.render) cur.render(elt, data, cur);\n      else elt.appendChild(document.createTextNode(cur.displayText || getText(cur)));\n      elt.hintId = i;\n    }\n\n    var pos = cm.cursorCoords(completion.options.alignWithWord ? data.from : null);\n    var left = pos.left, top = pos.bottom, below = true;\n    hints.style.left = left + \"px\";\n    hints.style.top = top + \"px\";\n    // If we're at the edge of the screen, then we want the menu to appear on the left of the cursor.\n    var winW = window.innerWidth || Math.max(document.body.offsetWidth, document.documentElement.offsetWidth);\n    var winH = window.innerHeight || Math.max(document.body.offsetHeight, document.documentElement.offsetHeight);\n    (completion.options.container || document.body).appendChild(hints);\n    var box = hints.getBoundingClientRect(), overlapY = box.bottom - winH;\n    var scrolls = hints.scrollHeight > hints.clientHeight + 1\n    var startScroll = cm.getScrollInfo();\n\n    if (overlapY > 0) {\n      var height = box.bottom - box.top, curTop = pos.top - (pos.bottom - box.top);\n      if (curTop - height > 0) { // Fits above cursor\n        hints.style.top = (top = pos.top - height) + \"px\";\n        below = false;\n      } else if (height > winH) {\n        hints.style.height = (winH - 5) + \"px\";\n        hints.style.top = (top = pos.bottom - box.top) + \"px\";\n        var cursor = cm.getCursor();\n        if (data.from.ch != cursor.ch) {\n          pos = cm.cursorCoords(cursor);\n          hints.style.left = (left = pos.left) + \"px\";\n          box = hints.getBoundingClientRect();\n        }\n      }\n    }\n    var overlapX = box.right - winW;\n    if (overlapX > 0) {\n      if (box.right - box.left > winW) {\n        hints.style.width = (winW - 5) + \"px\";\n        overlapX -= (box.right - box.left) - winW;\n      }\n      hints.style.left = (left = pos.left - overlapX) + \"px\";\n    }\n    if (scrolls) for (var node = hints.firstChild; node; node = node.nextSibling)\n      node.style.paddingRight = cm.display.nativeBarWidth + \"px\"\n\n    cm.addKeyMap(this.keyMap = buildKeyMap(completion, {\n      moveFocus: function(n, avoidWrap) { widget.changeActive(widget.selectedHint + n, avoidWrap); },\n      setFocus: function(n) { widget.changeActive(n); },\n      menuSize: function() { return widget.screenAmount(); },\n      length: completions.length,\n      close: function() { completion.close(); },\n      pick: function() { widget.pick(); },\n      data: data\n    }));\n\n    if (completion.options.closeOnUnfocus) {\n      var closingOnBlur;\n      cm.on(\"blur\", this.onBlur = function() { closingOnBlur = setTimeout(function() { completion.close(); }, 100); });\n      cm.on(\"focus\", this.onFocus = function() { clearTimeout(closingOnBlur); });\n    }\n\n    cm.on(\"scroll\", this.onScroll = function() {\n      var curScroll = cm.getScrollInfo(), editor = cm.getWrapperElement().getBoundingClientRect();\n      var newTop = top + startScroll.top - curScroll.top;\n      var point = newTop - (window.pageYOffset || (document.documentElement || document.body).scrollTop);\n      if (!below) point += hints.offsetHeight;\n      if (point <= editor.top || point >= editor.bottom) return completion.close();\n      hints.style.top = newTop + \"px\";\n      hints.style.left = (left + startScroll.left - curScroll.left) + \"px\";\n    });\n\n    CodeMirror.on(hints, \"dblclick\", function(e) {\n      var t = getHintElement(hints, e.target || e.srcElement);\n      if (t && t.hintId != null) {widget.changeActive(t.hintId); widget.pick();}\n    });\n\n    CodeMirror.on(hints, \"click\", function(e) {\n      var t = getHintElement(hints, e.target || e.srcElement);\n      if (t && t.hintId != null) {\n        widget.changeActive(t.hintId);\n        if (completion.options.completeOnSingleClick) widget.pick();\n      }\n    });\n\n    CodeMirror.on(hints, \"mousedown\", function() {\n      setTimeout(function(){cm.focus();}, 20);\n    });\n\n    CodeMirror.signal(data, \"select\", completions[0], hints.firstChild);\n    return true;\n  }\n\n  Widget.prototype = {\n    close: function() {\n      if (this.completion.widget != this) return;\n      this.completion.widget = null;\n      this.hints.parentNode.removeChild(this.hints);\n      this.completion.cm.removeKeyMap(this.keyMap);\n\n      var cm = this.completion.cm;\n      if (this.completion.options.closeOnUnfocus) {\n        cm.off(\"blur\", this.onBlur);\n        cm.off(\"focus\", this.onFocus);\n      }\n      cm.off(\"scroll\", this.onScroll);\n    },\n\n    disable: function() {\n      this.completion.cm.removeKeyMap(this.keyMap);\n      var widget = this;\n      this.keyMap = {Enter: function() { widget.picked = true; }};\n      this.completion.cm.addKeyMap(this.keyMap);\n    },\n\n    pick: function() {\n      this.completion.pick(this.data, this.selectedHint);\n    },\n\n    changeActive: function(i, avoidWrap) {\n      if (i >= this.data.list.length)\n        i = avoidWrap ? this.data.list.length - 1 : 0;\n      else if (i < 0)\n        i = avoidWrap ? 0  : this.data.list.length - 1;\n      if (this.selectedHint == i) return;\n      var node = this.hints.childNodes[this.selectedHint];\n      node.className = node.className.replace(\" \" + ACTIVE_HINT_ELEMENT_CLASS, \"\");\n      node = this.hints.childNodes[this.selectedHint = i];\n      node.className += \" \" + ACTIVE_HINT_ELEMENT_CLASS;\n      if (node.offsetTop < this.hints.scrollTop)\n        this.hints.scrollTop = node.offsetTop - 3;\n      else if (node.offsetTop + node.offsetHeight > this.hints.scrollTop + this.hints.clientHeight)\n        this.hints.scrollTop = node.offsetTop + node.offsetHeight - this.hints.clientHeight + 3;\n      CodeMirror.signal(this.data, \"select\", this.data.list[this.selectedHint], node);\n    },\n\n    screenAmount: function() {\n      return Math.floor(this.hints.clientHeight / this.hints.firstChild.offsetHeight) || 1;\n    }\n  };\n\n  function applicableHelpers(cm, helpers) {\n    if (!cm.somethingSelected()) return helpers\n    var result = []\n    for (var i = 0; i < helpers.length; i++)\n      if (helpers[i].supportsSelection) result.push(helpers[i])\n    return result\n  }\n\n  function fetchHints(hint, cm, options, callback) {\n    if (hint.async) {\n      hint(cm, callback, options)\n    } else {\n      var result = hint(cm, options)\n      if (result && result.then) result.then(callback)\n      else callback(result)\n    }\n  }\n\n  function resolveAutoHints(cm, pos) {\n    var helpers = cm.getHelpers(pos, \"hint\"), words\n    if (helpers.length) {\n      var resolved = function(cm, callback, options) {\n        var app = applicableHelpers(cm, helpers);\n        function run(i) {\n          if (i == app.length) return callback(null)\n          fetchHints(app[i], cm, options, function(result) {\n            if (result && result.list.length > 0) callback(result)\n            else run(i + 1)\n          })\n        }\n        run(0)\n      }\n      resolved.async = true\n      resolved.supportsSelection = true\n      return resolved\n    } else if (words = cm.getHelper(cm.getCursor(), \"hintWords\")) {\n      return function(cm) { return CodeMirror.hint.fromList(cm, {words: words}) }\n    } else if (CodeMirror.hint.anyword) {\n      return function(cm, options) { return CodeMirror.hint.anyword(cm, options) }\n    } else {\n      return function() {}\n    }\n  }\n\n  CodeMirror.registerHelper(\"hint\", \"auto\", {\n    resolve: resolveAutoHints\n  });\n\n  CodeMirror.registerHelper(\"hint\", \"fromList\", function(cm, options) {\n    var cur = cm.getCursor(), token = cm.getTokenAt(cur);\n    var to = CodeMirror.Pos(cur.line, token.end);\n    if (token.string && /\\w/.test(token.string[token.string.length - 1])) {\n      var term = token.string, from = CodeMirror.Pos(cur.line, token.start);\n    } else {\n      var term = \"\", from = to;\n    }\n    var found = [];\n    for (var i = 0; i < options.words.length; i++) {\n      var word = options.words[i];\n      if (word.slice(0, term.length) == term)\n        found.push(word);\n    }\n\n    if (found.length) return {list: found, from: from, to: to};\n  });\n\n  CodeMirror.commands.autocomplete = CodeMirror.showHint;\n\n  var defaultOptions = {\n    hint: CodeMirror.hint.auto,\n    completeSingle: true,\n    alignWithWord: true,\n    closeCharacters: /[\\s()\\[\\]{};:>,]/,\n    closeOnUnfocus: true,\n    completeOnSingleClick: true,\n    container: null,\n    customKeys: null,\n    extraKeys: null\n  };\n\n  CodeMirror.defineOption(\"hintOptions\", null);\n});\n\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/hint/anyword-hint',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  var WORD = /[\\w$]+/, RANGE = 500;\n\n  CodeMirror.registerHelper(\"hint\", \"anyword\", function(editor, options) {\n    var word = options && options.word || WORD;\n    var range = options && options.range || RANGE;\n    var cur = editor.getCursor(), curLine = editor.getLine(cur.line);\n    var end = cur.ch, start = end;\n    while (start && word.test(curLine.charAt(start - 1))) --start;\n    var curWord = start != end && curLine.slice(start, end);\n\n    var list = options && options.list || [], seen = {};\n    var re = new RegExp(word.source, \"g\");\n    for (var dir = -1; dir <= 1; dir += 2) {\n      var line = cur.line, endLine = Math.min(Math.max(line + dir * range, editor.firstLine()), editor.lastLine()) + dir;\n      for (; line != endLine; line += dir) {\n        var text = editor.getLine(line), m;\n        while (m = re.exec(text)) {\n          if (line == cur.line && m[0] === curWord) continue;\n          if ((!curWord || m[0].lastIndexOf(curWord, 0) == 0) && !Object.prototype.hasOwnProperty.call(seen, m[0])) {\n            seen[m[0]] = true;\n            list.push(m[0]);\n          }\n        }\n      }\n    }\n    return {list: list, from: CodeMirror.Pos(cur.line, start), to: CodeMirror.Pos(cur.line, end)};\n  });\n});\n\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/display/placeholder',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  CodeMirror.defineOption(\"placeholder\", \"\", function(cm, val, old) {\n    var prev = old && old != CodeMirror.Init;\n    if (val && !prev) {\n      cm.on(\"blur\", onBlur);\n      cm.on(\"change\", onChange);\n      cm.on(\"swapDoc\", onChange);\n      onChange(cm);\n    } else if (!val && prev) {\n      cm.off(\"blur\", onBlur);\n      cm.off(\"change\", onChange);\n      cm.off(\"swapDoc\", onChange);\n      clearPlaceholder(cm);\n      var wrapper = cm.getWrapperElement();\n      wrapper.className = wrapper.className.replace(\" CodeMirror-empty\", \"\");\n    }\n\n    if (val && !cm.hasFocus()) onBlur(cm);\n  });\n\n  function clearPlaceholder(cm) {\n    if (cm.state.placeholder) {\n      cm.state.placeholder.parentNode.removeChild(cm.state.placeholder);\n      cm.state.placeholder = null;\n    }\n  }\n  function setPlaceholder(cm) {\n    clearPlaceholder(cm);\n    var elt = cm.state.placeholder = document.createElement(\"pre\");\n    elt.style.cssText = \"height: 0; overflow: visible\";\n    elt.className = \"CodeMirror-placeholder\";\n    var placeHolder = cm.getOption(\"placeholder\")\n    if (typeof placeHolder == \"string\") placeHolder = document.createTextNode(placeHolder)\n    elt.appendChild(placeHolder)\n    cm.display.lineSpace.insertBefore(elt, cm.display.lineSpace.firstChild);\n  }\n\n  function onBlur(cm) {\n    if (isEmpty(cm)) setPlaceholder(cm);\n  }\n  function onChange(cm) {\n    var wrapper = cm.getWrapperElement(), empty = isEmpty(cm);\n    wrapper.className = wrapper.className.replace(\" CodeMirror-empty\", \"\") + (empty ? \" CodeMirror-empty\" : \"\");\n\n    if (empty) setPlaceholder(cm);\n    else clearPlaceholder(cm);\n  }\n\n  function isEmpty(cm) {\n    return (cm.lineCount() === 1) && (cm.getLine(0) === \"\");\n  }\n});\n\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/runmode/runmode',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.runMode = function(string, modespec, callback, options) {\n  var mode = CodeMirror.getMode(CodeMirror.defaults, modespec);\n  var ie = /MSIE \\d/.test(navigator.userAgent);\n  var ie_lt9 = ie && (document.documentMode == null || document.documentMode < 9);\n\n  if (callback.appendChild) {\n    var tabSize = (options && options.tabSize) || CodeMirror.defaults.tabSize;\n    var node = callback, col = 0;\n    node.innerHTML = \"\";\n    callback = function(text, style) {\n      if (text == \"\\n\") {\n        // Emitting LF or CRLF on IE8 or earlier results in an incorrect display.\n        // Emitting a carriage return makes everything ok.\n        node.appendChild(document.createTextNode(ie_lt9 ? '\\r' : text));\n        col = 0;\n        return;\n      }\n      var content = \"\";\n      // replace tabs\n      for (var pos = 0;;) {\n        var idx = text.indexOf(\"\\t\", pos);\n        if (idx == -1) {\n          content += text.slice(pos);\n          col += text.length - pos;\n          break;\n        } else {\n          col += idx - pos;\n          content += text.slice(pos, idx);\n          var size = tabSize - col % tabSize;\n          col += size;\n          for (var i = 0; i < size; ++i) content += \" \";\n          pos = idx + 1;\n        }\n      }\n\n      if (style) {\n        var sp = node.appendChild(document.createElement(\"span\"));\n        sp.className = \"cm-\" + style.replace(/ +/g, \" cm-\");\n        sp.appendChild(document.createTextNode(content));\n      } else {\n        node.appendChild(document.createTextNode(content));\n      }\n    };\n  }\n\n  var lines = CodeMirror.splitLines(string), state = (options && options.state) || CodeMirror.startState(mode);\n  for (var i = 0, e = lines.length; i < e; ++i) {\n    if (i) callback(\"\\n\");\n    var stream = new CodeMirror.StringStream(lines[i]);\n    if (!stream.string && mode.blankLine) mode.blankLine(state);\n    while (!stream.eol()) {\n      var style = mode.token(stream, state);\n      callback(stream.current(), style, i, stream.start, state);\n      stream.start = stream.pos;\n    }\n  }\n};\n\n});\n\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/search/searchcursor',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n  var Pos = CodeMirror.Pos;\n\n  function SearchCursor(doc, query, pos, caseFold) {\n    this.atOccurrence = false; this.doc = doc;\n    if (caseFold == null && typeof query == \"string\") caseFold = false;\n\n    pos = pos ? doc.clipPos(pos) : Pos(0, 0);\n    this.pos = {from: pos, to: pos};\n\n    // The matches method is filled in based on the type of query.\n    // It takes a position and a direction, and returns an object\n    // describing the next occurrence of the query, or null if no\n    // more matches were found.\n    if (typeof query != \"string\") { // Regexp match\n      if (!query.global) query = new RegExp(query.source, query.ignoreCase ? \"ig\" : \"g\");\n      this.matches = function(reverse, pos) {\n        if (reverse) {\n          query.lastIndex = 0;\n          var line = doc.getLine(pos.line).slice(0, pos.ch), cutOff = 0, match, start;\n          for (;;) {\n            query.lastIndex = cutOff;\n            var newMatch = query.exec(line);\n            if (!newMatch) break;\n            match = newMatch;\n            start = match.index;\n            cutOff = match.index + (match[0].length || 1);\n            if (cutOff == line.length) break;\n          }\n          var matchLen = (match && match[0].length) || 0;\n          if (!matchLen) {\n            if (start == 0 && line.length == 0) {match = undefined;}\n            else if (start != doc.getLine(pos.line).length) {\n              matchLen++;\n            }\n          }\n        } else {\n          query.lastIndex = pos.ch;\n          var line = doc.getLine(pos.line), match = query.exec(line);\n          var matchLen = (match && match[0].length) || 0;\n          var start = match && match.index;\n          if (start + matchLen != line.length && !matchLen) matchLen = 1;\n        }\n        if (match && matchLen)\n          return {from: Pos(pos.line, start),\n                  to: Pos(pos.line, start + matchLen),\n                  match: match};\n      };\n    } else { // String query\n      var origQuery = query;\n      if (caseFold) query = query.toLowerCase();\n      var fold = caseFold ? function(str){return str.toLowerCase();} : function(str){return str;};\n      var target = query.split(\"\\n\");\n      // Different methods for single-line and multi-line queries\n      if (target.length == 1) {\n        if (!query.length) {\n          // Empty string would match anything and never progress, so\n          // we define it to match nothing instead.\n          this.matches = function() {};\n        } else {\n          this.matches = function(reverse, pos) {\n            if (reverse) {\n              var orig = doc.getLine(pos.line).slice(0, pos.ch), line = fold(orig);\n              var match = line.lastIndexOf(query);\n              if (match > -1) {\n                match = adjustPos(orig, line, match);\n                return {from: Pos(pos.line, match), to: Pos(pos.line, match + origQuery.length)};\n              }\n             } else {\n               var orig = doc.getLine(pos.line).slice(pos.ch), line = fold(orig);\n               var match = line.indexOf(query);\n               if (match > -1) {\n                 match = adjustPos(orig, line, match) + pos.ch;\n                 return {from: Pos(pos.line, match), to: Pos(pos.line, match + origQuery.length)};\n               }\n            }\n          };\n        }\n      } else {\n        var origTarget = origQuery.split(\"\\n\");\n        this.matches = function(reverse, pos) {\n          var last = target.length - 1;\n          if (reverse) {\n            if (pos.line - (target.length - 1) < doc.firstLine()) return;\n            if (fold(doc.getLine(pos.line).slice(0, origTarget[last].length)) != target[target.length - 1]) return;\n            var to = Pos(pos.line, origTarget[last].length);\n            for (var ln = pos.line - 1, i = last - 1; i >= 1; --i, --ln)\n              if (target[i] != fold(doc.getLine(ln))) return;\n            var line = doc.getLine(ln), cut = line.length - origTarget[0].length;\n            if (fold(line.slice(cut)) != target[0]) return;\n            return {from: Pos(ln, cut), to: to};\n          } else {\n            if (pos.line + (target.length - 1) > doc.lastLine()) return;\n            var line = doc.getLine(pos.line), cut = line.length - origTarget[0].length;\n            if (fold(line.slice(cut)) != target[0]) return;\n            var from = Pos(pos.line, cut);\n            for (var ln = pos.line + 1, i = 1; i < last; ++i, ++ln)\n              if (target[i] != fold(doc.getLine(ln))) return;\n            if (fold(doc.getLine(ln).slice(0, origTarget[last].length)) != target[last]) return;\n            return {from: from, to: Pos(ln, origTarget[last].length)};\n          }\n        };\n      }\n    }\n  }\n\n  SearchCursor.prototype = {\n    findNext: function() {return this.find(false);},\n    findPrevious: function() {return this.find(true);},\n\n    find: function(reverse) {\n      var self = this, pos = this.doc.clipPos(reverse ? this.pos.from : this.pos.to);\n      function savePosAndFail(line) {\n        var pos = Pos(line, 0);\n        self.pos = {from: pos, to: pos};\n        self.atOccurrence = false;\n        return false;\n      }\n\n      for (;;) {\n        if (this.pos = this.matches(reverse, pos)) {\n          this.atOccurrence = true;\n          return this.pos.match || true;\n        }\n        if (reverse) {\n          if (!pos.line) return savePosAndFail(0);\n          pos = Pos(pos.line-1, this.doc.getLine(pos.line-1).length);\n        }\n        else {\n          var maxLine = this.doc.lineCount();\n          if (pos.line == maxLine - 1) return savePosAndFail(maxLine);\n          pos = Pos(pos.line + 1, 0);\n        }\n      }\n    },\n\n    from: function() {if (this.atOccurrence) return this.pos.from;},\n    to: function() {if (this.atOccurrence) return this.pos.to;},\n\n    replace: function(newText, origin) {\n      if (!this.atOccurrence) return;\n      var lines = CodeMirror.splitLines(newText);\n      this.doc.replaceRange(lines, this.pos.from, this.pos.to, origin);\n      this.pos.to = Pos(this.pos.from.line + lines.length - 1,\n                        lines[lines.length - 1].length + (lines.length == 1 ? this.pos.from.ch : 0));\n    }\n  };\n\n  // Maps a position in a case-folded line back to a position in the original line\n  // (compensating for codepoints increasing in number during folding)\n  function adjustPos(orig, folded, pos) {\n    if (orig.length == folded.length) return pos;\n    for (var pos1 = Math.min(pos, orig.length);;) {\n      var len1 = orig.slice(0, pos1).toLowerCase().length;\n      if (len1 < pos) ++pos1;\n      else if (len1 > pos) --pos1;\n      else return pos1;\n    }\n  }\n\n  CodeMirror.defineExtension(\"getSearchCursor\", function(query, pos, caseFold) {\n    return new SearchCursor(this.doc, query, pos, caseFold);\n  });\n  CodeMirror.defineDocExtension(\"getSearchCursor\", function(query, pos, caseFold) {\n    return new SearchCursor(this, query, pos, caseFold);\n  });\n\n  CodeMirror.defineExtension(\"selectMatches\", function(query, caseFold) {\n    var ranges = [];\n    var cur = this.getSearchCursor(query, this.getCursor(\"from\"), caseFold);\n    while (cur.findNext()) {\n      if (CodeMirror.cmpPos(cur.to(), this.getCursor(\"to\")) > 0) break;\n      ranges.push({anchor: cur.from(), head: cur.to()});\n    }\n    if (ranges.length)\n      this.setSelections(ranges, 0);\n  });\n});\n\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n// Open simple dialogs on top of an editor. Relies on dialog.css.\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/dialog/dialog',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  function dialogDiv(cm, template, bottom) {\n    var wrap = cm.getWrapperElement();\n    var dialog;\n    dialog = wrap.appendChild(document.createElement(\"div\"));\n    if (bottom)\n      dialog.className = \"CodeMirror-dialog CodeMirror-dialog-bottom\";\n    else\n      dialog.className = \"CodeMirror-dialog CodeMirror-dialog-top\";\n\n    if (typeof template == \"string\") {\n      dialog.innerHTML = template;\n    } else { // Assuming it's a detached DOM element.\n      dialog.appendChild(template);\n    }\n    return dialog;\n  }\n\n  function closeNotification(cm, newVal) {\n    if (cm.state.currentNotificationClose)\n      cm.state.currentNotificationClose();\n    cm.state.currentNotificationClose = newVal;\n  }\n\n  CodeMirror.defineExtension(\"openDialog\", function(template, callback, options) {\n    if (!options) options = {};\n\n    closeNotification(this, null);\n\n    var dialog = dialogDiv(this, template, options.bottom);\n    var closed = false, me = this;\n    function close(newVal) {\n      if (typeof newVal == 'string') {\n        inp.value = newVal;\n      } else {\n        if (closed) return;\n        closed = true;\n        dialog.parentNode.removeChild(dialog);\n        me.focus();\n\n        if (options.onClose) options.onClose(dialog);\n      }\n    }\n\n    var inp = dialog.getElementsByTagName(\"input\")[0], button;\n    if (inp) {\n      inp.focus();\n\n      if (options.value) {\n        inp.value = options.value;\n        if (options.selectValueOnOpen !== false) {\n          inp.select();\n        }\n      }\n\n      if (options.onInput)\n        CodeMirror.on(inp, \"input\", function(e) { options.onInput(e, inp.value, close);});\n      if (options.onKeyUp)\n        CodeMirror.on(inp, \"keyup\", function(e) {options.onKeyUp(e, inp.value, close);});\n\n      CodeMirror.on(inp, \"keydown\", function(e) {\n        if (options && options.onKeyDown && options.onKeyDown(e, inp.value, close)) { return; }\n        if (e.keyCode == 27 || (options.closeOnEnter !== false && e.keyCode == 13)) {\n          inp.blur();\n          CodeMirror.e_stop(e);\n          close();\n        }\n        if (e.keyCode == 13) callback(inp.value, e);\n      });\n\n      if (options.closeOnBlur !== false) CodeMirror.on(inp, \"blur\", close);\n    } else if (button = dialog.getElementsByTagName(\"button\")[0]) {\n      CodeMirror.on(button, \"click\", function() {\n        close();\n        me.focus();\n      });\n\n      if (options.closeOnBlur !== false) CodeMirror.on(button, \"blur\", close);\n\n      button.focus();\n    }\n    return close;\n  });\n\n  CodeMirror.defineExtension(\"openConfirm\", function(template, callbacks, options) {\n    closeNotification(this, null);\n    var dialog = dialogDiv(this, template, options && options.bottom);\n    var buttons = dialog.getElementsByTagName(\"button\");\n    var closed = false, me = this, blurring = 1;\n    function close() {\n      if (closed) return;\n      closed = true;\n      dialog.parentNode.removeChild(dialog);\n      me.focus();\n    }\n    buttons[0].focus();\n    for (var i = 0; i < buttons.length; ++i) {\n      var b = buttons[i];\n      (function(callback) {\n        CodeMirror.on(b, \"click\", function(e) {\n          CodeMirror.e_preventDefault(e);\n          close();\n          if (callback) callback(me);\n        });\n      })(callbacks[i]);\n      CodeMirror.on(b, \"blur\", function() {\n        --blurring;\n        setTimeout(function() { if (blurring <= 0) close(); }, 200);\n      });\n      CodeMirror.on(b, \"focus\", function() { ++blurring; });\n    }\n  });\n\n  /*\n   * openNotification\n   * Opens a notification, that can be closed with an optional timer\n   * (default 5000ms timer) and always closes on click.\n   *\n   * If a notification is opened while another is opened, it will close the\n   * currently opened one and open the new one immediately.\n   */\n  CodeMirror.defineExtension(\"openNotification\", function(template, options) {\n    closeNotification(this, close);\n    var dialog = dialogDiv(this, template, options && options.bottom);\n    var closed = false, doneTimer;\n    var duration = options && typeof options.duration !== \"undefined\" ? options.duration : 5000;\n\n    function close() {\n      if (closed) return;\n      closed = true;\n      clearTimeout(doneTimer);\n      dialog.parentNode.removeChild(dialog);\n    }\n\n    CodeMirror.on(dialog, 'click', function(e) {\n      CodeMirror.e_preventDefault(e);\n      close();\n    });\n\n    if (duration)\n      doneTimer = setTimeout(close, duration);\n\n    return close;\n  });\n});\n\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n// Define search commands. Depends on dialog.js or another\n// implementation of the openDialog method.\n\n// Replace works a little oddly -- it will do the replace on the next\n// Ctrl-G (or whatever is bound to findNext) press. You prevent a\n// replace by making sure the match is no longer selected when hitting\n// Ctrl-G.\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"), require(\"./searchcursor\"), require(\"../dialog/dialog\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/search/search',[\"../../lib/codemirror\", \"./searchcursor\", \"../dialog/dialog\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  function searchOverlay(query, caseInsensitive) {\n    if (typeof query == \"string\")\n      query = new RegExp(query.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\"), caseInsensitive ? \"gi\" : \"g\");\n    else if (!query.global)\n      query = new RegExp(query.source, query.ignoreCase ? \"gi\" : \"g\");\n\n    return {token: function(stream) {\n      query.lastIndex = stream.pos;\n      var match = query.exec(stream.string);\n      if (match && match.index == stream.pos) {\n        stream.pos += match[0].length || 1;\n        return \"searching\";\n      } else if (match) {\n        stream.pos = match.index;\n      } else {\n        stream.skipToEnd();\n      }\n    }};\n  }\n\n  function SearchState() {\n    this.posFrom = this.posTo = this.lastQuery = this.query = null;\n    this.overlay = null;\n  }\n\n  function getSearchState(cm) {\n    return cm.state.search || (cm.state.search = new SearchState());\n  }\n\n  function queryCaseInsensitive(query) {\n    return typeof query == \"string\" && query == query.toLowerCase();\n  }\n\n  function getSearchCursor(cm, query, pos) {\n    // Heuristic: if the query string is all lowercase, do a case insensitive search.\n    return cm.getSearchCursor(query, pos, queryCaseInsensitive(query));\n  }\n\n  function persistentDialog(cm, text, deflt, onEnter, onKeyDown) {\n    cm.openDialog(text, onEnter, {\n      value: deflt,\n      selectValueOnOpen: true,\n      closeOnEnter: false,\n      onClose: function() { clearSearch(cm); },\n      onKeyDown: onKeyDown\n    });\n  }\n\n  function dialog(cm, text, shortText, deflt, f) {\n    if (cm.openDialog) cm.openDialog(text, f, {value: deflt, selectValueOnOpen: true});\n    else f(prompt(shortText, deflt));\n  }\n\n  function confirmDialog(cm, text, shortText, fs) {\n    if (cm.openConfirm) cm.openConfirm(text, fs);\n    else if (confirm(shortText)) fs[0]();\n  }\n\n  function parseString(string) {\n    return string.replace(/\\\\(.)/g, function(_, ch) {\n      if (ch == \"n\") return \"\\n\"\n      if (ch == \"r\") return \"\\r\"\n      return ch\n    })\n  }\n\n  function parseQuery(query) {\n    var isRE = query.match(/^\\/(.*)\\/([a-z]*)$/);\n    if (isRE) {\n      try { query = new RegExp(isRE[1], isRE[2].indexOf(\"i\") == -1 ? \"\" : \"i\"); }\n      catch(e) {} // Not a regular expression after all, do a string search\n    } else {\n      query = parseString(query)\n    }\n    if (typeof query == \"string\" ? query == \"\" : query.test(\"\"))\n      query = /x^/;\n    return query;\n  }\n\n  var queryDialog =\n    '<span class=\"CodeMirror-search-label\">Search:</span> <input type=\"text\" style=\"width: 10em\" class=\"CodeMirror-search-field\"/> <span style=\"color: #888\" class=\"CodeMirror-search-hint\">(Use /re/ syntax for regexp search)</span>';\n\n  function startSearch(cm, state, query) {\n    state.queryText = query;\n    state.query = parseQuery(query);\n    cm.removeOverlay(state.overlay, queryCaseInsensitive(state.query));\n    state.overlay = searchOverlay(state.query, queryCaseInsensitive(state.query));\n    cm.addOverlay(state.overlay);\n    if (cm.showMatchesOnScrollbar) {\n      if (state.annotate) { state.annotate.clear(); state.annotate = null; }\n      state.annotate = cm.showMatchesOnScrollbar(state.query, queryCaseInsensitive(state.query));\n    }\n  }\n\n  function doSearch(cm, rev, persistent, immediate) {\n    var state = getSearchState(cm);\n    if (state.query) return findNext(cm, rev);\n    var q = cm.getSelection() || state.lastQuery;\n    if (persistent && cm.openDialog) {\n      var hiding = null\n      var searchNext = function(query, event) {\n        CodeMirror.e_stop(event);\n        if (!query) return;\n        if (query != state.queryText) {\n          startSearch(cm, state, query);\n          state.posFrom = state.posTo = cm.getCursor();\n        }\n        if (hiding) hiding.style.opacity = 1\n        findNext(cm, event.shiftKey, function(_, to) {\n          var dialog\n          if (to.line < 3 && document.querySelector &&\n              (dialog = cm.display.wrapper.querySelector(\".CodeMirror-dialog\")) &&\n              dialog.getBoundingClientRect().bottom - 4 > cm.cursorCoords(to, \"window\").top)\n            (hiding = dialog).style.opacity = .4\n        })\n      };\n      persistentDialog(cm, queryDialog, q, searchNext, function(event, query) {\n        var keyName = CodeMirror.keyName(event)\n        var cmd = CodeMirror.keyMap[cm.getOption(\"keyMap\")][keyName]\n        if (!cmd) cmd = cm.getOption('extraKeys')[keyName]\n        if (cmd == \"findNext\" || cmd == \"findPrev\" ||\n          cmd == \"findPersistentNext\" || cmd == \"findPersistentPrev\") {\n          CodeMirror.e_stop(event);\n          startSearch(cm, getSearchState(cm), query);\n          cm.execCommand(cmd);\n        } else if (cmd == \"find\" || cmd == \"findPersistent\") {\n          CodeMirror.e_stop(event);\n          searchNext(query, event);\n        }\n      });\n      if (immediate && q) {\n        startSearch(cm, state, q);\n        findNext(cm, rev);\n      }\n    } else {\n      dialog(cm, queryDialog, \"Search for:\", q, function(query) {\n        if (query && !state.query) cm.operation(function() {\n          startSearch(cm, state, query);\n          state.posFrom = state.posTo = cm.getCursor();\n          findNext(cm, rev);\n        });\n      });\n    }\n  }\n\n  function findNext(cm, rev, callback) {cm.operation(function() {\n    var state = getSearchState(cm);\n    var cursor = getSearchCursor(cm, state.query, rev ? state.posFrom : state.posTo);\n    if (!cursor.find(rev)) {\n      cursor = getSearchCursor(cm, state.query, rev ? CodeMirror.Pos(cm.lastLine()) : CodeMirror.Pos(cm.firstLine(), 0));\n      if (!cursor.find(rev)) return;\n    }\n    cm.setSelection(cursor.from(), cursor.to());\n    cm.scrollIntoView({from: cursor.from(), to: cursor.to()}, 20);\n    state.posFrom = cursor.from(); state.posTo = cursor.to();\n    if (callback) callback(cursor.from(), cursor.to())\n  });}\n\n  function clearSearch(cm) {cm.operation(function() {\n    var state = getSearchState(cm);\n    state.lastQuery = state.query;\n    if (!state.query) return;\n    state.query = state.queryText = null;\n    cm.removeOverlay(state.overlay);\n    if (state.annotate) { state.annotate.clear(); state.annotate = null; }\n  });}\n\n  var replaceQueryDialog =\n    ' <input type=\"text\" style=\"width: 10em\" class=\"CodeMirror-search-field\"/> <span style=\"color: #888\" class=\"CodeMirror-search-hint\">(Use /re/ syntax for regexp search)</span>';\n  var replacementQueryDialog = '<span class=\"CodeMirror-search-label\">With:</span> <input type=\"text\" style=\"width: 10em\" class=\"CodeMirror-search-field\"/>';\n  var doReplaceConfirm = '<span class=\"CodeMirror-search-label\">Replace?</span> <button>Yes</button> <button>No</button> <button>All</button> <button>Stop</button>';\n\n  function replaceAll(cm, query, text) {\n    cm.operation(function() {\n      for (var cursor = getSearchCursor(cm, query); cursor.findNext();) {\n        if (typeof query != \"string\") {\n          var match = cm.getRange(cursor.from(), cursor.to()).match(query);\n          cursor.replace(text.replace(/\\$(\\d)/g, function(_, i) {return match[i];}));\n        } else cursor.replace(text);\n      }\n    });\n  }\n\n  function replace(cm, all) {\n    if (cm.getOption(\"readOnly\")) return;\n    var query = cm.getSelection() || getSearchState(cm).lastQuery;\n    var dialogText = '<span class=\"CodeMirror-search-label\">' + (all ? 'Replace all:' : 'Replace:') + '</span>';\n    dialog(cm, dialogText + replaceQueryDialog, dialogText, query, function(query) {\n      if (!query) return;\n      query = parseQuery(query);\n      dialog(cm, replacementQueryDialog, \"Replace with:\", \"\", function(text) {\n        text = parseString(text)\n        if (all) {\n          replaceAll(cm, query, text)\n        } else {\n          clearSearch(cm);\n          var cursor = getSearchCursor(cm, query, cm.getCursor(\"from\"));\n          var advance = function() {\n            var start = cursor.from(), match;\n            if (!(match = cursor.findNext())) {\n              cursor = getSearchCursor(cm, query);\n              if (!(match = cursor.findNext()) ||\n                  (start && cursor.from().line == start.line && cursor.from().ch == start.ch)) return;\n            }\n            cm.setSelection(cursor.from(), cursor.to());\n            cm.scrollIntoView({from: cursor.from(), to: cursor.to()});\n            confirmDialog(cm, doReplaceConfirm, \"Replace?\",\n                          [function() {doReplace(match);}, advance,\n                           function() {replaceAll(cm, query, text)}]);\n          };\n          var doReplace = function(match) {\n            cursor.replace(typeof query == \"string\" ? text :\n                           text.replace(/\\$(\\d)/g, function(_, i) {return match[i];}));\n            advance();\n          };\n          advance();\n        }\n      });\n    });\n  }\n\n  CodeMirror.commands.find = function(cm) {clearSearch(cm); doSearch(cm);};\n  CodeMirror.commands.findPersistent = function(cm) {clearSearch(cm); doSearch(cm, false, true);};\n  CodeMirror.commands.findPersistentNext = function(cm) {doSearch(cm, false, true, true);};\n  CodeMirror.commands.findPersistentPrev = function(cm) {doSearch(cm, true, true, true);};\n  CodeMirror.commands.findNext = doSearch;\n  CodeMirror.commands.findPrev = function(cm) {doSearch(cm, true);};\n  CodeMirror.commands.clearSearch = clearSearch;\n  CodeMirror.commands.replace = replace;\n  CodeMirror.commands.replaceAll = function(cm) {replace(cm, true);};\n});\n\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n// Defines jumpToLine command. Uses dialog.js if present.\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"), require(\"../dialog/dialog\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/search/jump-to-line',[\"../../lib/codemirror\", \"../dialog/dialog\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  function dialog(cm, text, shortText, deflt, f) {\n    if (cm.openDialog) cm.openDialog(text, f, {value: deflt, selectValueOnOpen: true});\n    else f(prompt(shortText, deflt));\n  }\n\n  var jumpDialog =\n      'Jump to line: <input type=\"text\" style=\"width: 10em\" class=\"CodeMirror-search-field\"/> <span style=\"color: #888\" class=\"CodeMirror-search-hint\">(Use line:column or scroll% syntax)</span>';\n\n  function interpretLine(cm, string) {\n    var num = Number(string)\n    if (/^[-+]/.test(string)) return cm.getCursor().line + num\n    else return num - 1\n  }\n\n  CodeMirror.commands.jumpToLine = function(cm) {\n    var cur = cm.getCursor();\n    dialog(cm, jumpDialog, \"Jump to line:\", (cur.line + 1) + \":\" + cur.ch, function(posStr) {\n      if (!posStr) return;\n\n      var match;\n      if (match = /^\\s*([\\+\\-]?\\d+)\\s*\\:\\s*(\\d+)\\s*$/.exec(posStr)) {\n        cm.setCursor(interpretLine(cm, match[1]), Number(match[2]))\n      } else if (match = /^\\s*([\\+\\-]?\\d+(\\.\\d+)?)\\%\\s*/.exec(posStr)) {\n        var line = Math.round(cm.lineCount() * Number(match[1]) / 100);\n        if (/^[-+]/.test(match[1])) line = cur.line + line + 1;\n        cm.setCursor(line - 1, cur.ch);\n      } else if (match = /^\\s*\\:?\\s*([\\+\\-]?\\d+)\\s*/.exec(posStr)) {\n        cm.setCursor(interpretLine(cm, match[1]), cur.ch);\n      }\n    });\n  };\n\n  CodeMirror.keyMap[\"default\"][\"Alt-G\"] = \"jumpToLine\";\n});\n\n","(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/hover/text-hover',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\n(function() {\n  \"use strict\";\n\n  var HOVER_CLASS = \" CodeMirror-hover\";\n\n  function showTooltip(e, content) {\n    var tt = document.createElement(\"div\");\n    tt.className = \"CodeMirror-hover-tooltip\";\n    if (typeof content == \"string\") {\n      content = document.createTextNode(content);\n    }\n    tt.appendChild(content);\n    document.body.appendChild(tt);\n\n    function position(e) {\n      if (!tt.parentNode)\n        return CodeMirror.off(document, \"mousemove\", position);\n      tt.style.top = Math.max(0, e.clientY - tt.offsetHeight - 5) + \"px\";\n      tt.style.left = (e.clientX + 5) + \"px\";\n    }\n    CodeMirror.on(document, \"mousemove\", position);\n    position(e);\n    if (tt.style.opacity != null)\n      tt.style.opacity = 1;\n    return tt;\n  }\n  function rm(elt) {\n    if (elt.parentNode)\n      elt.parentNode.removeChild(elt);\n  }\n  function hideTooltip(tt) {\n    if (!tt.parentNode)\n      return;\n    if (tt.style.opacity == null)\n      rm(tt);\n    tt.style.opacity = 0;\n    setTimeout(function() {\n      rm(tt);\n    }, 600);\n  }\n\n  function showTooltipFor(e, content, node, state, cm) {\n    var tooltip = showTooltip(e, content);\n    function hide() {\n      CodeMirror.off(node, \"mouseout\", hide);\n      CodeMirror.off(node, \"click\", hide);\n      node.className = node.className.replace(HOVER_CLASS, \"\");\n      if (tooltip) {\n        hideTooltip(tooltip);\n        tooltip = null;\n      }\n      cm.removeKeyMap(state.keyMap);\n    }\n    var poll = setInterval(function() {\n      if (tooltip)\n        for ( var n = node;; n = n.parentNode) {\n          if (n == document.body)\n            return;\n          if (!n) {\n            hide();\n            break;\n          }\n        }\n      if (!tooltip)\n        return clearInterval(poll);\n    }, 400);\n    CodeMirror.on(node, \"mouseout\", hide);\n    CodeMirror.on(node, \"click\", hide);\n    state.keyMap = {Esc: hide};\n    cm.addKeyMap(state.keyMap);\n  }\n\n  function TextHoverState(cm, options) {\n    this.options = options;\n    this.timeout = null;\n    if (options.delay) {\n      this.onMouseOver = function(e) {\n        onMouseOverWithDelay(cm, e);\n      };\n    } else {\n      this.onMouseOver = function(e) {\n        onMouseOver(cm, e);\n      };\n    }\n    this.keyMap = null;\n  }\n\n  function parseOptions(cm, options) {\n    if (options instanceof Function)\n      return {\n        getTextHover : options\n      };\n    if (!options || options === true)\n      options = {};\n    if (!options.getTextHover)\n      options.getTextHover = cm.getHelper(CodeMirror.Pos(0, 0), \"textHover\");\n    if (!options.getTextHover)\n      throw new Error(\n          \"Required option 'getTextHover' missing (text-hover addon)\");\n    return options;\n  }\n\n  function onMouseOverWithDelay(cm, e) {\n    var state = cm.state.textHover, delay = state.options.delay;\n    clearTimeout(state.timeout);\n    if (e.srcElement) {\n\t// hack for IE, because e.srcElement failed when it is used in the tiemout function\n\tvar newE = {srcElement: e.srcElement, clientX : e.clientX, clientY: e.clientY};\n\te = newE;\n    }\n    state.timeout = setTimeout(function() {onMouseOver(cm, e);}, delay);\n  }\n\n  function onMouseOver(cm, e) {\n    var node = e.target || e.srcElement;\n    if (node) {\n      var state = cm.state.textHover, data = getTokenAndPosAt(cm, e);\n      var content = state.options.getTextHover(cm, data, e);\n      if (content) {\n        node.className += HOVER_CLASS;\n        if (typeof content == 'function')\n\t      content(showTooltipFor, data, e, node, state, cm);\n        else\n          showTooltipFor(e, content, node, state, cm);\n      }\n    }\n  }\n\n  function optionHandler(cm, val, old) {\n    if (old && old != CodeMirror.Init) {\n      CodeMirror.off(cm.getWrapperElement(), \"mouseover\",\n          cm.state.textHover.onMouseOver);\n      delete cm.state.textHover;\n    }\n\n    if (val) {\n      var state = cm.state.textHover = new TextHoverState(cm, parseOptions(cm,\n          val));\n      CodeMirror.on(cm.getWrapperElement(), \"mouseover\", state.onMouseOver);\n    }\n  }\n\n  // When the mouseover fires, the cursor might not actually be over\n  // the character itself yet. These pairs of x,y offsets are used to\n  // probe a few nearby points when no suitable marked range is found.\n  var nearby = [ 0, 0, 0, 5, 0, -5, 5, 0, -5, 0 ];\n\n  function getTokenAndPosAt(cm, e) {\n    var node = e.target || e.srcElement, text = node.innerText\n        || node.textContent;\n    for ( var i = 0; i < nearby.length; i += 2) {\n      var pos = cm.coordsChar({\n        left : e.clientX + nearby[i],\n        top : e.clientY + nearby[i + 1]\n      });\n      var token = cm.getTokenAt(pos);\n      if (token && token.string === text) {\n        return {\n          token : token,\n          pos : pos\n        };\n      }\n    }\n  }\n\n  CodeMirror.defineOption(\"textHover\", false, optionHandler); // deprecated\n\n})();\n\n});\n\n","define('cm/addon/hover/prolog-hover',[ \"../../lib/codemirror\",\n\t \"jquery\",\n\t \"laconic\"\n       ],\n       function(CodeMirror, $) {\n\"use strict\";\n\nvar pathTranslations = {};\n\nvar tokenHelp = {\n  \"goal_built_in\":  function(data, cm) {\n    if ( data ) {\n      return $.el.div(predName(data),\n\t\t      cm.tokenInfo(data));\n    } else {\n      return \"Built-in predicate\";\n    }\n  },\n\n  \"goal_global\":  function(data, cm) {\n    if ( data ) {\n      return $.el.div(predName(data),\n\t\t      cm.tokenInfo(data));\n    } else {\n      return \"Global predicate\";\n    }\n  },\n\n  \"goal_autoload\":  function(data, cm) {\n    if ( data ) {\n      return $.el.div(predName(data), \" (autoload from \",\n\t\t      fileName(data, cm), \"): \",\n\t\t      cm.tokenInfo(data));\n    } else {\n      return \"Autoloaded predicate\";\n    }\n  },\n\n  \"goal_imported\":  function(data, cm) {\n    if ( data ) {\n      return $.el.div(predName(data), \" (imported from \",\n\t\t      fileName(data, cm), \"): \",\n\t\t      cm.tokenInfo(data));\n    } else {\n      return \"Imported predicate\";\n    }\n  },\n\n  \"goal_recursion\":    \"Recursive call\",\n  \"goal_dynamic\":      \"Dynamic predicate\",\n  \"goal_undefined\":    \"Undefined predicate\",\n  \"goal_local\":        function(data, cm) {\n\t\t\t return localDef(\"predicate\",data,cm)\n\t\t       },\n  \"goal_constraint\":   function(data, cm) {\n\t\t\t return localDef(\"CHR constraint\",data,cm)\n\t\t       },\n  \"head_unreferenced\": \"Predicate is not called\",\n  \"unused_import\":     \"Imported predicate is not used\",\n  \"undefined_import\":  \"Imported predicate is not defined\",\n  \"head_constraint\":   \"CHR constraint\",\n\n  \"file\": function(data, cm) {\n    if ( data ) {\n      addFileTranslation(cm, data.text, data.path);\n      return $.el.div(\"File: \",\n\t\t      $.el.span({class:\"file-path\"},\n\t\t\t\tdata.path));\n    } else {\n      return \"File name\";\n    }\n  },\n\n  \"file_no_depends\": function(data, cm) {\n    if ( data ) {\n      addFileTranslation(cm, data.text, data.path);\n      return $.el.div(\"File: \",\n\t\t      $.el.span({class:\"file-path\"},\n\t\t\t\tdata.path),\n\t\t      $.el.div({class:\"hover-remark\"},\n\t\t\t       \"does not resolve any dependencies\")\n\t\t     );\n    } else {\n      return \"File name (does not resolve any dependencies)\";\n    }\n  },\n\n  \"error\": function(data, cm) {\n    if ( data ) {\n      if ( data.expected )\n\treturn $.el.div(\"error: \", $.el.strong(data.expected), \" expected\");\n    }\n\n    return \"error\";\n  },\n\n  \"singleton\": \"Variable appearing only once\",\n  \"codes\":     \"List of Unicode code points (integers)\",\n  \"chars\":     \"List of one-character atoms\",\n  \"string\":    \"Packed string (SWI7, use `text` for a list of codes)\",\n  \"qatom\":     \"Quoted atom\",\n  \"uatom\":     \"Uppercase atom due to var_prefix flag\",\n  \"tag\":       \"Tag of a SWI7 dict\",\n  \"ext_quant\": \"Existential quantification operator\",\n  \"instantiation_error\": \"No variable allowed here\",\n\n  \"string_terminal\": \"Terminal (DCG)\",\n\n  \"head\":       null,\n  \"control\":    null,\n  \"fullstop\":   null,\n  \"var\":        null,\n  \"int\":        null,\n  \"float\":      null,\n  \"number\":     null,\n  \"atom\":       null,\n  \"functor\":    null,\n  \"comment\":    null,\n  \"neck\":       null,\n  \"operator\":   null,\n  \"sep\":        null,\n  \"list_open\":  null,\n  \"list_close\": null,\n  \"dict_open\":  null,\n  \"dict_close\": null\n};\n\nfunction predName(data) {\n  return $.el.span({class:\"pred-name\"},\n\t\t   data.text+\"/\"+data.arity);\n}\n\nfunction addFileTranslation(cm, text, path) {\n  pathTranslations[path] = text;\n}\n\nfunction fileName(data, cm) {\n  var last;\n\n  if ( pathTranslations[data.file] )\n    return pathTranslations[data.file];\n\n  if ( (last=data.file.lastIndexOf(\"/\")) )\n    return data.file.substring(last+1);\n\n  return data.file;\n}\n\nfunction localDef(type, data, cm) {\n  if ( data && data.file ) {\n    return $.el.div(capitalizeFirstLetter(type)+\n\t\t    \" included from \",\n\t\t    $.el.span({class:\"file-path\"},\n\t\t\t      data.file));\n  } else if ( data && data.line ) {\n    return capitalizeFirstLetter(type) + \" defined in line \"+data.line;\n  } else {\n    return \"Locally defined \" + type;\n  }\n}\n\nfunction capitalizeFirstLetter(string) {\n    return string[0].toUpperCase() + string.slice(1);\n}\n\nCodeMirror.registerHelper(\"textHover\", \"prolog\", function(cm, data, node) {\n  if ( data ) {\n    var token = data.token;\n    var help  = tokenHelp[token.type];\n    var et;\n\n    if ( help !== undefined ) {\n      if ( typeof(help) === \"function\" ) {\n\tvar r = help(cm.getEnrichedToken(token), cm);\n\n\tif ( typeof(r) === \"string\" )\n\t  return $.el.div(r);\n\telse\n\t  return r;\n      } else if ( typeof(help) === \"string\" ) {\n\treturn $.el.div(help);\n      }\n    } else if ( (et=cm.getEnrichedToken(token)) ) {\n      if ( et.summary && et.info === \"ask\" )\n\treturn $.el.div(et.summary, cm.tokenInfo(et));\n      else if ( et.summary )\n\treturn $.el.div(et.summary);\n      else\n\treturn $.el.div(token.type);\n    } else {\n      return $.el.div(token.type);\n    }\n  }\n\n  return null;\n});\n\n});\n\n","(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/addon/hint/show-context-info',[\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  var contextInfo = null;\n\n  CodeMirror.attachContextInfo = function(data) {\n    CodeMirror.on(data, 'select', function(completion, hints) {\n      hints = hints.parentNode;\n      var information = null;\n      if (completion.info) {\n        information = completion.info(completion);\n      }\n      if (information) {\n        var box = hints.getBoundingClientRect();\n        if (contextInfo == null) {\n          contextInfo = document.createElement('div');\n          contextInfo.className = 'CodeMirror-hints-contextInfo'\n          document.body.appendChild(contextInfo);\n        }\n        contextInfo.innerHTML = '';\n        contextInfo.style.top = hints.style.top;\n        contextInfo.style.left = box.right + 'px';\n        if(typeof information == \"string\") {\n          contextInfo.innerHTML = information;\n        } else {\n          contextInfo.appendChild(information);\n        }\n        contextInfo.style.display = 'block';\n      } else {\n        if (contextInfo != null) {\n          contextInfo.innerHTML = '';\n          contextInfo.style.display = 'none';\n        }\n      }\n    });\n\n    CodeMirror.on(data, 'close', function() {\n      if (contextInfo != null) {\n        contextInfo.parentNode.removeChild(contextInfo);\n      }\n      contextInfo = null;\n    });\n\n  }\n\n  CodeMirror.showContextInfo = function(getHints) {\n    return function(cm, showHints, options) {\n      if (!options)\n        options = showHints;\n      var data = getHints(cm, options);\n      CodeMirror.attachContextInfo(data);\n      return data;\n    }\n  }\n\n});\n\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define('cm/keymap/emacs',[\"../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  var Pos = CodeMirror.Pos;\n  function posEq(a, b) { return a.line == b.line && a.ch == b.ch; }\n\n  // Kill 'ring'\n\n  var killRing = [];\n  function addToRing(str) {\n    killRing.push(str);\n    if (killRing.length > 50) killRing.shift();\n  }\n  function growRingTop(str) {\n    if (!killRing.length) return addToRing(str);\n    killRing[killRing.length - 1] += str;\n  }\n  function getFromRing(n) { return killRing[killRing.length - (n ? Math.min(n, 1) : 1)] || \"\"; }\n  function popFromRing() { if (killRing.length > 1) killRing.pop(); return getFromRing(); }\n\n  var lastKill = null;\n\n  function kill(cm, from, to, mayGrow, text) {\n    if (text == null) text = cm.getRange(from, to);\n\n    if (mayGrow && lastKill && lastKill.cm == cm && posEq(from, lastKill.pos) && cm.isClean(lastKill.gen))\n      growRingTop(text);\n    else\n      addToRing(text);\n    cm.replaceRange(\"\", from, to, \"+delete\");\n\n    if (mayGrow) lastKill = {cm: cm, pos: from, gen: cm.changeGeneration()};\n    else lastKill = null;\n  }\n\n  // Boundaries of various units\n\n  function byChar(cm, pos, dir) {\n    return cm.findPosH(pos, dir, \"char\", true);\n  }\n\n  function byWord(cm, pos, dir) {\n    return cm.findPosH(pos, dir, \"word\", true);\n  }\n\n  function byLine(cm, pos, dir) {\n    return cm.findPosV(pos, dir, \"line\", cm.doc.sel.goalColumn);\n  }\n\n  function byPage(cm, pos, dir) {\n    return cm.findPosV(pos, dir, \"page\", cm.doc.sel.goalColumn);\n  }\n\n  function byParagraph(cm, pos, dir) {\n    var no = pos.line, line = cm.getLine(no);\n    var sawText = /\\S/.test(dir < 0 ? line.slice(0, pos.ch) : line.slice(pos.ch));\n    var fst = cm.firstLine(), lst = cm.lastLine();\n    for (;;) {\n      no += dir;\n      if (no < fst || no > lst)\n        return cm.clipPos(Pos(no - dir, dir < 0 ? 0 : null));\n      line = cm.getLine(no);\n      var hasText = /\\S/.test(line);\n      if (hasText) sawText = true;\n      else if (sawText) return Pos(no, 0);\n    }\n  }\n\n  function bySentence(cm, pos, dir) {\n    var line = pos.line, ch = pos.ch;\n    var text = cm.getLine(pos.line), sawWord = false;\n    for (;;) {\n      var next = text.charAt(ch + (dir < 0 ? -1 : 0));\n      if (!next) { // End/beginning of line reached\n        if (line == (dir < 0 ? cm.firstLine() : cm.lastLine())) return Pos(line, ch);\n        text = cm.getLine(line + dir);\n        if (!/\\S/.test(text)) return Pos(line, ch);\n        line += dir;\n        ch = dir < 0 ? text.length : 0;\n        continue;\n      }\n      if (sawWord && /[!?.]/.test(next)) return Pos(line, ch + (dir > 0 ? 1 : 0));\n      if (!sawWord) sawWord = /\\w/.test(next);\n      ch += dir;\n    }\n  }\n\n  function byExpr(cm, pos, dir) {\n    var wrap;\n    if (cm.findMatchingBracket && (wrap = cm.findMatchingBracket(pos, true))\n        && wrap.match && (wrap.forward ? 1 : -1) == dir)\n      return dir > 0 ? Pos(wrap.to.line, wrap.to.ch + 1) : wrap.to;\n\n    for (var first = true;; first = false) {\n      var token = cm.getTokenAt(pos);\n      var after = Pos(pos.line, dir < 0 ? token.start : token.end);\n      if (first && dir > 0 && token.end == pos.ch || !/\\w/.test(token.string)) {\n        var newPos = cm.findPosH(after, dir, \"char\");\n        if (posEq(after, newPos)) return pos;\n        else pos = newPos;\n      } else {\n        return after;\n      }\n    }\n  }\n\n  // Prefixes (only crudely supported)\n\n  function getPrefix(cm, precise) {\n    var digits = cm.state.emacsPrefix;\n    if (!digits) return precise ? null : 1;\n    clearPrefix(cm);\n    return digits == \"-\" ? -1 : Number(digits);\n  }\n\n  function repeated(cmd) {\n    var f = typeof cmd == \"string\" ? function(cm) { cm.execCommand(cmd); } : cmd;\n    return function(cm) {\n      var prefix = getPrefix(cm);\n      f(cm);\n      for (var i = 1; i < prefix; ++i) f(cm);\n    };\n  }\n\n  function findEnd(cm, pos, by, dir) {\n    var prefix = getPrefix(cm);\n    if (prefix < 0) { dir = -dir; prefix = -prefix; }\n    for (var i = 0; i < prefix; ++i) {\n      var newPos = by(cm, pos, dir);\n      if (posEq(newPos, pos)) break;\n      pos = newPos;\n    }\n    return pos;\n  }\n\n  function move(by, dir) {\n    var f = function(cm) {\n      cm.extendSelection(findEnd(cm, cm.getCursor(), by, dir));\n    };\n    f.motion = true;\n    return f;\n  }\n\n  function killTo(cm, by, dir) {\n    var selections = cm.listSelections(), cursor;\n    var i = selections.length;\n    while (i--) {\n      cursor = selections[i].head;\n      kill(cm, cursor, findEnd(cm, cursor, by, dir), true);\n    }\n  }\n\n  function killRegion(cm) {\n    if (cm.somethingSelected()) {\n      var selections = cm.listSelections(), selection;\n      var i = selections.length;\n      while (i--) {\n        selection = selections[i];\n        kill(cm, selection.anchor, selection.head);\n      }\n      return true;\n    }\n  }\n\n  function addPrefix(cm, digit) {\n    if (cm.state.emacsPrefix) {\n      if (digit != \"-\") cm.state.emacsPrefix += digit;\n      return;\n    }\n    // Not active yet\n    cm.state.emacsPrefix = digit;\n    cm.on(\"keyHandled\", maybeClearPrefix);\n    cm.on(\"inputRead\", maybeDuplicateInput);\n  }\n\n  var prefixPreservingKeys = {\"Alt-G\": true, \"Ctrl-X\": true, \"Ctrl-Q\": true, \"Ctrl-U\": true};\n\n  function maybeClearPrefix(cm, arg) {\n    if (!cm.state.emacsPrefixMap && !prefixPreservingKeys.hasOwnProperty(arg))\n      clearPrefix(cm);\n  }\n\n  function clearPrefix(cm) {\n    cm.state.emacsPrefix = null;\n    cm.off(\"keyHandled\", maybeClearPrefix);\n    cm.off(\"inputRead\", maybeDuplicateInput);\n  }\n\n  function maybeDuplicateInput(cm, event) {\n    var dup = getPrefix(cm);\n    if (dup > 1 && event.origin == \"+input\") {\n      var one = event.text.join(\"\\n\"), txt = \"\";\n      for (var i = 1; i < dup; ++i) txt += one;\n      cm.replaceSelection(txt);\n    }\n  }\n\n  function addPrefixMap(cm) {\n    cm.state.emacsPrefixMap = true;\n    cm.addKeyMap(prefixMap);\n    cm.on(\"keyHandled\", maybeRemovePrefixMap);\n    cm.on(\"inputRead\", maybeRemovePrefixMap);\n  }\n\n  function maybeRemovePrefixMap(cm, arg) {\n    if (typeof arg == \"string\" && (/^\\d$/.test(arg) || arg == \"Ctrl-U\")) return;\n    cm.removeKeyMap(prefixMap);\n    cm.state.emacsPrefixMap = false;\n    cm.off(\"keyHandled\", maybeRemovePrefixMap);\n    cm.off(\"inputRead\", maybeRemovePrefixMap);\n  }\n\n  // Utilities\n\n  function setMark(cm) {\n    cm.setCursor(cm.getCursor());\n    cm.setExtending(!cm.getExtending());\n    cm.on(\"change\", function() { cm.setExtending(false); });\n  }\n\n  function clearMark(cm) {\n    cm.setExtending(false);\n    cm.setCursor(cm.getCursor());\n  }\n\n  function getInput(cm, msg, f) {\n    if (cm.openDialog)\n      cm.openDialog(msg + \": <input type=\\\"text\\\" style=\\\"width: 10em\\\"/>\", f, {bottom: true});\n    else\n      f(prompt(msg, \"\"));\n  }\n\n  function operateOnWord(cm, op) {\n    var start = cm.getCursor(), end = cm.findPosH(start, 1, \"word\");\n    cm.replaceRange(op(cm.getRange(start, end)), start, end);\n    cm.setCursor(end);\n  }\n\n  function toEnclosingExpr(cm) {\n    var pos = cm.getCursor(), line = pos.line, ch = pos.ch;\n    var stack = [];\n    while (line >= cm.firstLine()) {\n      var text = cm.getLine(line);\n      for (var i = ch == null ? text.length : ch; i > 0;) {\n        var ch = text.charAt(--i);\n        if (ch == \")\")\n          stack.push(\"(\");\n        else if (ch == \"]\")\n          stack.push(\"[\");\n        else if (ch == \"}\")\n          stack.push(\"{\");\n        else if (/[\\(\\{\\[]/.test(ch) && (!stack.length || stack.pop() != ch))\n          return cm.extendSelection(Pos(line, i));\n      }\n      --line; ch = null;\n    }\n  }\n\n  function quit(cm) {\n    cm.execCommand(\"clearSearch\");\n    clearMark(cm);\n  }\n\n  CodeMirror.emacs = {kill: kill, killRegion: killRegion, repeated: repeated};\n\n  // Actual keymap\n\n  var keyMap = CodeMirror.keyMap.emacs = CodeMirror.normalizeKeyMap({\n    \"Ctrl-W\": function(cm) {kill(cm, cm.getCursor(\"start\"), cm.getCursor(\"end\"));},\n    \"Ctrl-K\": repeated(function(cm) {\n      var start = cm.getCursor(), end = cm.clipPos(Pos(start.line));\n      var text = cm.getRange(start, end);\n      if (!/\\S/.test(text)) {\n        text += \"\\n\";\n        end = Pos(start.line + 1, 0);\n      }\n      kill(cm, start, end, true, text);\n    }),\n    \"Alt-W\": function(cm) {\n      addToRing(cm.getSelection());\n      clearMark(cm);\n    },\n    \"Ctrl-Y\": function(cm) {\n      var start = cm.getCursor();\n      cm.replaceRange(getFromRing(getPrefix(cm)), start, start, \"paste\");\n      cm.setSelection(start, cm.getCursor());\n    },\n    \"Alt-Y\": function(cm) {cm.replaceSelection(popFromRing(), \"around\", \"paste\");},\n\n    \"Ctrl-Space\": setMark, \"Ctrl-Shift-2\": setMark,\n\n    \"Ctrl-F\": move(byChar, 1), \"Ctrl-B\": move(byChar, -1),\n    \"Right\": move(byChar, 1), \"Left\": move(byChar, -1),\n    \"Ctrl-D\": function(cm) { killTo(cm, byChar, 1); },\n    \"Delete\": function(cm) { killRegion(cm) || killTo(cm, byChar, 1); },\n    \"Ctrl-H\": function(cm) { killTo(cm, byChar, -1); },\n    \"Backspace\": function(cm) { killRegion(cm) || killTo(cm, byChar, -1); },\n\n    \"Alt-F\": move(byWord, 1), \"Alt-B\": move(byWord, -1),\n    \"Alt-D\": function(cm) { killTo(cm, byWord, 1); },\n    \"Alt-Backspace\": function(cm) { killTo(cm, byWord, -1); },\n\n    \"Ctrl-N\": move(byLine, 1), \"Ctrl-P\": move(byLine, -1),\n    \"Down\": move(byLine, 1), \"Up\": move(byLine, -1),\n    \"Ctrl-A\": \"goLineStart\", \"Ctrl-E\": \"goLineEnd\",\n    \"End\": \"goLineEnd\", \"Home\": \"goLineStart\",\n\n    \"Alt-V\": move(byPage, -1), \"Ctrl-V\": move(byPage, 1),\n    \"PageUp\": move(byPage, -1), \"PageDown\": move(byPage, 1),\n\n    \"Ctrl-Up\": move(byParagraph, -1), \"Ctrl-Down\": move(byParagraph, 1),\n\n    \"Alt-A\": move(bySentence, -1), \"Alt-E\": move(bySentence, 1),\n    \"Alt-K\": function(cm) { killTo(cm, bySentence, 1); },\n\n    \"Ctrl-Alt-K\": function(cm) { killTo(cm, byExpr, 1); },\n    \"Ctrl-Alt-Backspace\": function(cm) { killTo(cm, byExpr, -1); },\n    \"Ctrl-Alt-F\": move(byExpr, 1), \"Ctrl-Alt-B\": move(byExpr, -1),\n\n    \"Shift-Ctrl-Alt-2\": function(cm) {\n      var cursor = cm.getCursor();\n      cm.setSelection(findEnd(cm, cursor, byExpr, 1), cursor);\n    },\n    \"Ctrl-Alt-T\": function(cm) {\n      var leftStart = byExpr(cm, cm.getCursor(), -1), leftEnd = byExpr(cm, leftStart, 1);\n      var rightEnd = byExpr(cm, leftEnd, 1), rightStart = byExpr(cm, rightEnd, -1);\n      cm.replaceRange(cm.getRange(rightStart, rightEnd) + cm.getRange(leftEnd, rightStart) +\n                      cm.getRange(leftStart, leftEnd), leftStart, rightEnd);\n    },\n    \"Ctrl-Alt-U\": repeated(toEnclosingExpr),\n\n    \"Alt-Space\": function(cm) {\n      var pos = cm.getCursor(), from = pos.ch, to = pos.ch, text = cm.getLine(pos.line);\n      while (from && /\\s/.test(text.charAt(from - 1))) --from;\n      while (to < text.length && /\\s/.test(text.charAt(to))) ++to;\n      cm.replaceRange(\" \", Pos(pos.line, from), Pos(pos.line, to));\n    },\n    \"Ctrl-O\": repeated(function(cm) { cm.replaceSelection(\"\\n\", \"start\"); }),\n    \"Ctrl-T\": repeated(function(cm) {\n      cm.execCommand(\"transposeChars\");\n    }),\n\n    \"Alt-C\": repeated(function(cm) {\n      operateOnWord(cm, function(w) {\n        var letter = w.search(/\\w/);\n        if (letter == -1) return w;\n        return w.slice(0, letter) + w.charAt(letter).toUpperCase() + w.slice(letter + 1).toLowerCase();\n      });\n    }),\n    \"Alt-U\": repeated(function(cm) {\n      operateOnWord(cm, function(w) { return w.toUpperCase(); });\n    }),\n    \"Alt-L\": repeated(function(cm) {\n      operateOnWord(cm, function(w) { return w.toLowerCase(); });\n    }),\n\n    \"Alt-;\": \"toggleComment\",\n\n    \"Ctrl-/\": repeated(\"undo\"), \"Shift-Ctrl--\": repeated(\"undo\"),\n    \"Ctrl-Z\": repeated(\"undo\"), \"Cmd-Z\": repeated(\"undo\"),\n    \"Shift-Alt-,\": \"goDocStart\", \"Shift-Alt-.\": \"goDocEnd\",\n    \"Ctrl-S\": \"findNext\", \"Ctrl-R\": \"findPrev\", \"Ctrl-G\": quit, \"Shift-Alt-5\": \"replace\",\n    \"Alt-/\": \"autocomplete\",\n    \"Enter\": \"newlineAndIndent\",\n    \"Ctrl-J\": repeated(function(cm) { cm.replaceSelection(\"\\n\", \"end\"); }),\n    \"Tab\": \"indentAuto\",\n\n    \"Alt-G G\": function(cm) {\n      var prefix = getPrefix(cm, true);\n      if (prefix != null && prefix > 0) return cm.setCursor(prefix - 1);\n\n      getInput(cm, \"Goto line\", function(str) {\n        var num;\n        if (str && !isNaN(num = Number(str)) && num == (num|0) && num > 0)\n          cm.setCursor(num - 1);\n      });\n    },\n\n    \"Ctrl-X Tab\": function(cm) {\n      cm.indentSelection(getPrefix(cm, true) || cm.getOption(\"indentUnit\"));\n    },\n    \"Ctrl-X Ctrl-X\": function(cm) {\n      cm.setSelection(cm.getCursor(\"head\"), cm.getCursor(\"anchor\"));\n    },\n    \"Ctrl-X Ctrl-S\": \"save\",\n    \"Ctrl-X Ctrl-W\": \"save\",\n    \"Ctrl-X S\": \"saveAll\",\n    \"Ctrl-X F\": \"open\",\n    \"Ctrl-X U\": repeated(\"undo\"),\n    \"Ctrl-X K\": \"close\",\n    \"Ctrl-X Delete\": function(cm) { kill(cm, cm.getCursor(), bySentence(cm, cm.getCursor(), 1), true); },\n    \"Ctrl-X H\": \"selectAll\",\n\n    \"Ctrl-Q Tab\": repeated(\"insertTab\"),\n    \"Ctrl-U\": addPrefixMap\n  });\n\n  var prefixMap = {\"Ctrl-G\": clearPrefix};\n  function regPrefix(d) {\n    prefixMap[d] = function(cm) { addPrefix(cm, d); };\n    keyMap[\"Ctrl-\" + d] = function(cm) { addPrefix(cm, d); };\n    prefixPreservingKeys[\"Ctrl-\" + d] = true;\n  }\n  for (var i = 0; i < 10; ++i) regPrefix(String(i));\n  regPrefix(\"-\");\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2017, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Prolog editor plugin based on [CodeMirror](http://codemirror.net)\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n * @requires codemirror\n */\n\ndefine('editor',[ \"cm/lib/codemirror\",\n\t \"config\",\n\t \"preferences\",\n\t \"form\",\n\t \"cm/mode/prolog/prolog-template-hint\",\n\t \"modal\",\n\t \"tabbed\",\n\t \"prolog\",\n\n\t \"storage\",\n\n\t \"cm/mode/prolog/prolog\",\n\t \"cm/mode/prolog/prolog_keys\",\n\t \"cm/mode/prolog/prolog_query\",\n\t \"cm/mode/prolog/prolog_server\",\n\n\t \"cm/mode/markdown/markdown\",\n\n\t \"cm/addon/edit/matchbrackets\",\n\t \"cm/addon/comment/continuecomment\",\n\t \"cm/addon/comment/comment\",\n\t \"cm/addon/hint/show-hint\",\n\t \"cm/addon/hint/anyword-hint\",\n\t \"cm/addon/display/placeholder\",\n\t \"cm/addon/runmode/runmode\",\n\t \"cm/addon/search/search\",\n\t \"cm/addon/search/searchcursor\",\n\t \"cm/addon/search/jump-to-line\",\n\t \"cm/addon/dialog/dialog\",\n\n\t \"cm/addon/hover/text-hover\",\n\t \"cm/addon/hover/prolog-hover\",\n\n\t \"cm/addon/hint/templates-hint\",\n\t \"cm/addon/hint/show-context-info\",\n\n         \"jquery\", \"laconic\",\n\n\t \"cm/keymap/emacs\",\n       ],\n       function(CodeMirror, config, preferences, form, templateHint,\n\t\tmodal, tabbed, prolog) {\n\n(function($) {\n  var pluginName = 'prologEditor';\n\n  var modeDefaults = {\n    prolog: {\n      mode: \"prolog\",\n      role: \"source\",\n      placeholder: \"Your Prolog rules and facts go here ...\",\n      lineNumbers: true,\n      autoCurrent: true,\n      save: false,\n      theme: \"prolog\",\n      matchBrackets: true,\n      textHover: true,\n      prologKeys: true,\n      extraKeys: {\n\t\"Ctrl-Space\": \"autocomplete\",\n\t\"Alt-/\": \"autocomplete\",\n      },\n      hintOptions: {\n      hint: templateHint.getHints,\n      completeSingle: false\n      }\n    },\n\n    markdown: {\n      mode: \"markdown\",\n      placeholder: \"Your markdown block goes here ...\",\n      lineWrapping: true,\n      save: false\n    }\n  };\n\n  var roleDefaults = {\n    query: {\n      mode: \"prolog\",\n      role: \"query\",\n      placeholder: \"Your query goes here ...\",\n      lineNumbers: false,\n      lineWrapping: true,\n      save: false\n    }\n  };\n\n  var lastEditor;\n\n  /** @lends $.fn.prologEditor */\n  var methods = {\n    /**\n     * Initialize a Prolog editor.\n     * @param {Object} [options]\n     * @param {String} [options.role=\"source\"] determines the role of\n     * the editor. It is one of `source` or `query`.\n     * @param {String} [options.placeholder=\"Your Prolog program goes here ...\"]\n     * sets the placeholder for the editor.\n     * @param {Boolean} [options.lineNumbers=true] defines whether or\n     * not a left-gutter with line numbers is displayed.\n     * @param {Boolean} [options.save=false] defines whether the\n     * editor responds to storage events.\n     * @param {String} [options.mode=\"prolog\"] defines the mode used by\n     * CodeMirror.\n     * @param {String} [options.theme=\"prolog\"] defines the CSS used for\n     * highlighting.\n     * @param {Boolean} [options.matchBrackets=true] defines whether the\n     * matching bracket is highlighted.\n     * @param {Boolean} [options.prologKeys=true] defines whether \"(\",\n     * \">\" and \";\" act as active keys to support if-then-else layout.\n     * @param {Object} [options.extraKeys] specifies additional key\n     * bindings.  Default is to bind \"Ctrl-Space\" and \"Alt-/\" to\n     * \"autocomplete\".\n     *\n     */\n    _init: function(opts) {\n\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar storage = {};\t\t/* storage meta-data */\n\tvar data = {};\t\t\t/* our data */\n\tvar ta;\t\t\t\t/* textarea */\n\n\topts      = opts||{};\n\topts.mode = opts.mode||\"prolog\";\n\n\tvar options = $.extend({}, modeDefaults[opts.mode]);\n\tif ( opts.role && roleDefaults[opts.role] )\n\t  options = $.extend(options, roleDefaults[opts.role]);\n\toptions = $.extend(options, opts);\n\n\tif ( preferences.getVal(\"emacs-keybinding\") )\n\t  options.keyMap = \"emacs\";\n\n\tif ( options.mode == \"prolog\" ) {\n\t  data.role = options.role;\n\t  if ( options.getSource )\n\t    data.getSource = options.getSource;\n\n\t  if ( config.http.locations.cm_highlight ) {\n\t    options.prologHighlightServer =\n\t    { url:  config.http.locations.cm_highlight,\n\t      role: options.role,\n\t      enabled: preferences.getVal(\"semantic-highlighting\")\n\t    };\n\t    if ( options.sourceID )\n\t      options.prologHighlightServer.sourceID = options.sourceID;\n\t    options.extraKeys[\"Ctrl-R\"] = \"refreshHighlight\";\n\t  }\n\n\t  if ( options.role == \"source\" ) {\n\t    options.continueComments = \"Enter\";\n\t    options.gutters = [\"Prolog-breakpoints\"]\n\t  }\n\n\t  /*\n\t   * Long click detection and handling.\n\t   */\n\t  data.long_click = {};\n\t  function moveLongClick(ev) {\n\t    var lc = data.long_click;\n\t    var dx = ev.clientX - lc.clientX;\n\t    var dy = ev.clientY - lc.clientY;\n\t    if ( Math.sqrt(dx*dx+dy*dy) > 5 )\n\t      cancelLongClick();\n\t  }\n\t  function cancelLongClick() {\n\t    elem.off(\"mousemove\", moveLongClick);\n\t    var lc = data.long_click;\n\t    if ( lc.timeout ) {\n\t      clearTimeout(lc.timeout);\n\t      lc.target  = undefined;\n\t      lc.timeout = undefined;\n\t    }\n\t  }\n\n\t  elem.on(\"mousedown\", \".CodeMirror-code\", function(ev) {\n\t    var lc = data.long_click;\n\n\t    lc.clientX = ev.clientX;\n\t    lc.clientY = ev.clientY;\n\t    elem.on(\"mousemove\", moveLongClick);\n\t    data.long_click.timeout = setTimeout(function() {\n\t      cancelLongClick();\n\t      elem.prologEditor('contextAction');\n\t    }, 500);\n\t  });\n\t  elem.on(\"mouseup\", function(ev) {\n\t    cancelLongClick();\n\t  });\n\t}\n\n\t/*\n\t * Create CodeMirror\n\t */\n\tif ( (ta=elem.children(\"textarea\")[0]) ) {\n\t  function copyData(name) {\n\t    var value = $(ta).data(name);\n\t    if ( value ) {\n\t      storage[name] = value;\n\t    }\n\t  }\n\n\t  copyData(\"file\");\n\t  copyData(\"url\");\n\t  copyData(\"title\");\n\t  copyData(\"meta\");\n\t  copyData(\"st_type\");\n\t  copyData(\"chats\");\n\n\t  data.cm = CodeMirror.fromTextArea(ta, options);\n\t} else {\n\t  if ( !options.value )\n\t    options.value = elem.text();\n\t  data.cm = CodeMirror(elem[0], options);\n\t}\n\n\telem.data(pluginName, data);\n\telem.prologEditor('loadMode', options.mode);\n\n\telem.addClass(\"swish-event-receiver\");\n\telem.addClass(\"prolog-editor\");\n\telem.on(\"preference\", function(ev, pref) {\n\t  elem.prologEditor('preference', pref);\n\t});\n\telem.on(\"print\", function() {\n\t  if ( data.role != \"query\" )\n\t    elem.prologEditor('print');\n\t});\n\telem.on(\"clearMessages\", function(ev) {\n\t  elem.prologEditor('clearMessages');\n\t});\n\telem.on(\"edit-command\", function(ev, command) {\n\t  elem.prologEditor('execCommand', command);\n\t});\n\tdata.cm.on(\"blur\", function(ev) {\n\t  elem.prologEditor('execCommand', 'prepare');\n\t});\n\n\tif ( options.save ) {\n\t  storage.typeName = options.typeName||\"program\";\n\t  elem.prologEditor('setupStorage', storage);\n\t}\n\n\tif ( options.mode == \"prolog\" && data.role == \"source\" ) {\n\t  elem.on(\"activate-tab\", function(ev) {\n\t    if ( options.autoCurrent )\n\t      elem.prologEditor('makeCurrent');\n\t    data.cm.refresh();\t\t/* needed if a tab has been opened */\n\t  });\n\n\t  elem.on(\"source-error\", function(ev, error) {\n\t    elem.prologEditor('highlightError', error);\n\t  });\n\t  elem.on(\"pengine-died\", function(ev, id) {\n\t    if ( data.pengines ) {\n\t      var i = data.pengines.indexOf(id);\n\t      if ( i >= 0 )\n\t\tdata.pengines.splice(i, 1);\n\t    }\n\t    if ( data.traceMark && data.traceMark.pengine == id ) {\n\t      data.traceMark.clear();\n\t      data.traceMark = null;\n\t    }\n\t  });\n\t  elem.on('addExample', function(ev, query) {\n\t    elem.prologEditor('addExample', query);\n\t  });\n\t  data.cm.on(\"gutterClick\", function(cm, n) {\n\t    var info = cm.lineInfo(n);\n\n\t    function makeMarker() {\n\t      return $(\"<span class=\\\"breakpoint-marker\\\">&#9679;</span>\")[0];\n\t    }\n\n\t    if ( info.gutterMarkers )\n\t      cm.setGutterMarker(n, \"Prolog-breakpoints\", null);\n\t    else\n\t      cm.setGutterMarker(n, \"Prolog-breakpoints\", makeMarker());\n\t  });\n\t} /* end if prolog source */\n\n\tdata.cm.on(\"change\", function(cm, change) {\n\t  var clean;\n\n\t  if ( change.origin == \"setValue\" ) {\n\t    clean = true;\n\t  } else {\n\t    var store = elem.data(\"storage\");\n\t    var gen = store ? store.cleanGeneration : data.cleanGeneration;\n\n\t    clean = data.cm.isClean(gen);\n\t  }\n\n\t  elem.prologEditor('markClean', clean);\n\t});\n      });\n    },\n\n    /**\n     * @example // Get the CodeMirror instance\n     * $(element).prologEditor('getOption', 'cm');\n     * @param {String} opt Name of option to fetch.\n     * @return {*}\n     */\n\n    getOption: function(opt) {\n      return this.data(pluginName)[opt];\n    },\n\n    /**\n     * @example // Set the keybinding for the editor\n     * $(element).prologEditor('setKeybinding', 'emacs') set\n     * keybinding schema emacs.\n     * @param {String} schema Name of the keybinding\n     * return {*}\n     */\n    setKeybinding: function(schema) {\n      schema = schema || \"default\";\n      this.data(pluginName).cm.options.keyMap = schema;\n    },\n\n    /**\n     * Switch the editor to the requested mode, possibly by dynamically\n     * loading the mode.  It seems that if we use RequireJS, we should\n     * also use this for loading modes dynamically.\n     */\n    loadMode: function(mode) {\n      var data = this.data(pluginName);\n\n      if ( !CodeMirror.modes[mode] ) {\n\trequire([\"cm/mode/\"+mode+\"/\"+mode],\n\t\t  function() {\n\t\t    data.cm.setOption(\"mode\", mode);\n\t\t  });\n      } else if ( mode != data.mode ) {\n\tdata.cm.setOption(\"mode\", mode);\n      }\n\n      return this;\n    },\n\n    /**\n     * True if this source needs to be sent to the pengine.  This is\n     * the case of the source is loaded.  We should also exclude module\n     * files.  How do we detect a module file?  Detecting the module\n     * header without support from Prolog is rather hard: count the\n     * arity and ignore preceeding comments, encoding and conditional\n     * compilation directives.\n     */\n    isPengineSource: function() {\n      var data = $(this).data(pluginName);\n      if ( data && data.role == \"source\" ) {\n\tvar storageData = $(this).data('storage');\n\n\tif ( storageData && storageData.meta ) {\n\t  if ( storageData.meta.loaded ||\n\t       storageData.meta.module )\n\t    return false;\n\t}\n      }\n\n      return this;\n    },\n\n    /**\n     * Get the defined breakpoints.\n     * @param {String} pengineID is the pengine asking for the\n     * breakpoints.\n     * @returns {Array.Object} an array holding one object per source\n     * with breakpoints.  The object contains `file` and `breakpoints`,\n     * where the latter is an array of integers.\n     */\n    getBreakpoints: function(pengineID) {\n      var result = [];\n\n      this.each(function() {\n\tvar data = $(this).data(pluginName);\n\tvar breakpoints = [];\n\tvar offset = 0;\n\tvar cm = data.cm;\n\tvar line = cm.firstLine();\n\tvar last = cm.lastLine();\n\n\tfor( ; line < last; line++ ) {\n\t  var info = cm.lineInfo(line);\n\t  if ( info.gutterMarkers )\n\t    breakpoints.push(offset+line+1);\n\t}\n\n\tif ( breakpoints.length > 0 ) {\n\t  var file;\n\n\t  if ( data.pengines && data.pengines.indexOf(pengineID) >= 0 ) {\n\t    file = \"pengine://\"+pengineID+\"/src\";\n\t  } else {\n\t    var store = $(this).data(\"storage\");\n\t    if ( store )\n\t      file = \"swish://\"+store.file;\n\t  }\n\n\t  if ( file )\n\t    result.push({ file: file,\n\t\t          breakpoints: breakpoints\n\t\t        });\n\t}\n      });\n\n      return result;\n    },\n\n    /**\n     * Get the source text from a set of editors.  Each source is\n     * preceeded by a line :- '#file'(DocID, Line).\n     *\n     * @param {String} [role] Only return source for editors that\n     * match the given role.\n     * @param {Boolean} [direct] If `true`, do not try to indirect\n     * over the `data.getSource` function.\n     * @returns {String} current contents of the editor.  If\n     * the jQuery object holds multiple editors, we return the\n     * joined content of the editors.\n     */\n    getSource: function(role, direct) {\n      var src = [];\n\n      this.each(function() {\n\tif ( $(this).prologEditor('isPengineSource') ) {\n\t  var data = $(this).data(pluginName);\n\n\t  if ( data ) {\n\t    if ( !role || (role == data.role) ) {\n\t      var mysrc;\n//TBD\t      var docid = $(this).prologEditor('docid');\n\n\t      if ( typeof(data.getSource) == \"function\" && !direct ) {\n\t\tmysrc = data.getSource();\n\t      } else {\n\t\tmysrc = data.cm.getValue();\n\t      }\n//TBD\t      if ( role == \"source\" )\n//TBD\t\tsrc.push(\":- '#file'(\"+Pengine.stringify(docid)+\",1).\");\n\t      src.push(mysrc);\n\t    }\n\t  }\n\t}\n      });\n\n      return src.join(\"\\n\\n\");\n    },\n\n    /**\n     * @returns {Object} holding extended source information\n     */\n    getSourceEx: function() {\n      var obj = { value: this.data(pluginName).cm.getValue()\n\t\t};\n      var bps = this.prologEditor('getBreakpoints');\n      if ( bps.length > 0 )\n\tobj.breakpoints = bps;\n\n      return obj;\n    },\n\n    /*\n     * @returns {String} document identifier relating this editor to\n     * the server side document store.\n     */\n    docid: function() {\n      var st;\n\n      if ( this.hasClass(\"storage\") )\n\treturn this.storage('docid');\n      else if ( (st=this.closest(\".storage\")) && st.length > 0 ) {\n\tstdoc = st.storage('docid');\n\tif ( stdoc )\n\t  return stdoc + \"#\" + this.closest(\".nb-cell\").attr(\"name\");\n      }\n    },\n\n    /**\n     * @return {String[]} UUIDs of the sources used for\n     * server-side analysis.  The array may contain `null`s\n     * for sources that have no server side backup.\n     */\n     getSourceID: function() {\n       var ids = [];\n\n       this.each(function() {\n\t var data = $(this).data(pluginName);\n\n\t if ( data && data.cm && data.cm.state.prologHighlightServer )\n\t   ids.push(data.cm.state.prologHighlightServer.uuid);\n\t else\n\t   ids.push(null);\n       });\n\n       return ids;\n     },\n\n    /**\n     * @param {String} source sets the new content for the editor.  If\n     * the editor is associated with a storage plugin, the call is\n     * forwarded to the storage plugin.\n     * @param {Boolean} [direct=false] if this parameter is `true`, the\n     * message is never delegated to the storage\n     */\n    setSource: function(source, direct) {\n      if ( typeof(source) == \"string\" )\n\tsource = {data:source};\n\n      if ( this.data('storage') && direct != true ) {\n\tthis.storage('setSource', source);\n      } else {\n\tvar data = this.data(pluginName);\n\n\tdata.cm.setValue(source.data);\n\tif ( source.line || source.prompt ) {\n\t  data.cm.refresh();\n\n\t  if ( source.line ) {\n\t    this.prologEditor('gotoLine', source.line, source);\n\t  } else {\n\t    this.prologEditor('showTracePort', source.prompt);\n\t  }\n\t}\n\n\tif ( data.role == \"source\" )\n\t  $(\".swish-event-receiver\").trigger(\"program-loaded\", this);\n      }\n      return this;\n    },\n\n    /**\n     * Advertise this editor as the current editor.  This is the\n     * one used by the default query editor.\n     */\n    makeCurrent: function() {\n      $(\".swish-event-receiver\").trigger(\"current-program\", this);\n      return this;\n    },\n\n    /**\n     * Called if the editor changes from clean to dirty or visa versa.\n     * This triggers `data-is-clean`, which is trapped by the tab to\n     * indicate the changed state of the editor.\n     */\n    markClean: function(clean) {\n      var data = this.data(pluginName);\n\n      if ( data.clean_signalled != clean )\n      { data.clean_signalled = clean;\n\tthis.trigger(\"data-is-clean\", clean);\n      }\n    },\n\n    /**\n     * Set notion of clean for editors that are not associated with a\n     * storage\n     */\n    setIsClean: function() {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = elem.data(pluginName);\n\tdata.cleanGeneration = data.cm.changeGeneration();\n      });\n    },\n\n    /**\n     * @param {Object} options\n     * @param {String} [options.add] Id of pengine to add\n     * @param {String} [options.has] Match pengine, returning boolean\n     */\n    pengine: function(options) {\n      var data = this.data(pluginName);\n\n      if ( data ) {\n\tif ( options.add ) {\n\t  data.pengines = data.pengines || [];\n\t  if ( data.pengines.indexOf(options.add) < 0 )\n\t    data.pengines.push(options.add);\n\n\t  return this;\n\t} else if ( options.has ) {\n\t  return (data.pengines &&\n\t\t  data.pengines.indexOf(options.has) >= 0);\n\t}\n      }\n    },\n\n    /**\n     * print the current content of the editor after applying the\n     * the CodeMirror mode to it.\n     * @param {String} [src] Prolog source to print. Default is to print\n     * the content of the editor.\n     */\n    print: function(src) {\n      var pre = $.el.pre({class:\"cm-s-prolog\"});\n\n      if ( !src ) src = this.prologEditor('getSource');\n\n      CodeMirror.runMode(src, \"prolog\", pre);\n\n      function printWithIframe(elem) {\n\tvar iframe = $.el.iframe({src:\"about:blank\"});\n\t$(\"body\").append(iframe);\n\t$(\"body\", iframe.contentWindow.document).append(elem);\n\tiframe.contentWindow.print();\n      }\n\n      $.ajax({ url: config.http.locations.swish+\"js/codemirror/theme/prolog.css\",\n\t       dataType: \"text\",\n\t       success: function(data) {\n\t\t printWithIframe($.el.div($.el.style(data),\n\t\t\t\t\t  pre));\n\t       },\n\t       error: function(jqXHDR) {\n\t\t modal.ajaxError(jqXHDR);\n\t       }\n             });\n\n      return this;\n    },\n\n    /**\n     * Manage user preference changes.  Defines preferences are:\n     *\n     *   - \"highlight\" -- one of `semantic` or `syntactic`\n     *\n     * @param {Object} pref describes a preference\n     * @param {String} pref.name name of the preference\n     * @param {Any}    pref.value value of the preference\n     */\n    preference: function(pref) {\n      var data = this.data(pluginName);\n\n      if ( pref.name == \"semantic-highlighting\" ) {\n\tdata.cm.setOption(\"prologHighlightServer\",\n\t\t\t  { enabled: pref.value });\n      }\n\n      if ( pref.name == \"emacs-keybinding\") {\n\tif (pref.value == true) {\n\t  data.cm.setOption(\"keyMap\", \"emacs\");\n\t} else {\n\t  data.cm.setOption(\"keyMap\", \"default\");\n\t}\n      }\n\n      return this;\n    },\n\n    /**\n     * Highlight a (syntax) error in the source.\n     * @param {Object} error\n     * @param {String} error.data contains the error message (HTML\n     * string)\n     * @param {Object} error.location contains the location, providing\n     * `line` and `ch` attributes.\n     */\n    highlightError: function(error) {\n      if ( error.location.file &&\n\t   (error.location.file == true ||\n\t    this.prologEditor('isMyFile', error.location.file)) ) {\n\tvar data = this.data(pluginName);\n\tvar chmark;\n\n\tif ( error.location.ch ) {\n\t  left = data.cm.charCoords({ line: error.location.line-1,\n\t\t\t\t      ch:   error.location.ch-1\n\t\t\t\t    },\n\t\t\t\t    \"local\").left;\n\t  chmark = $.el.div({class:\"source-msg-charmark\"},\n\t\t\t    $.el.span({class:\"glyphicon glyphicon-chevron-up\"}));\n\t  $(chmark).css(\"padding-left\", left+\"px\");\n\t}\n\n\tvar elem = $.el.div({ class:\"source-msg error error-context\",\n\t\t\t      title:\"Error message.  Click to remove\"\n\t\t\t    },\n\t\t\t    chmark,\n\t\t\t    $(error.data)[0],\n\t\t\t    $.el.span({class:\"glyphicon glyphicon-remove-circle\"}));\n\tvar widget = data.cm.addLineWidget(error.location.line-1, elem);\n\n\tif ( error.error_context )\n\t  $(elem).data(\"error_context\", error.error_context);\n\t$(elem).on(\"click\", function(ev) {\n\t  if ( error.error_handler &&\n\t       error.error_handler(ev) == false )\n\t    return;\n\t  widget.clear();\n\t});\n\t$(elem).data(\"cm-widget\", widget);\n      }\n\n      return this;\n    },\n\n    /**\n     * Re-run the highlighting.  Used for query editors if the\n     * associated editor has changed.\n     */\n    refreshHighlight: function() {\n      var data = this.data(pluginName);\n      data.cm.serverAssistedHighlight(true);\n      return this;\n    },\n\n    /**\n     * Refresh the editor.  This is often needed if it is resized.\n     */\n    refresh: function() {\n      var data = this.data(pluginName);\n      if ( data )\n\tdata.cm.refresh();\n      return this;\n    },\n\n    /**\n     * Remove all inline messages from the editor\n     */\n    clearMessages: function() {\n      this.find(\".source-msg\").each(function() {\n\t$(this).data(\"cm-widget\").clear();\n      });\n\n      this.prologEditor('showTracePort', null);\n\n      return this;\n    },\n\n    /**\n     * Execute a command on the editor from the menu.  The trick is to\n     * find the current editor.  For that purpose we make \"blur\" trigger\n     * the 'prepare' command that sets the last editor.  On the\n     * following menu action we execute on the last editor.\n     */\n   execCommand: function(command) {\n     if ( command == 'prepare' ) {\n       lastEditor = this[0];\n     } else if ( lastEditor == this[0] ) {\n       elem = $(lastEditor);\n       var data = elem.data(pluginName);\n       data.cm.execCommand(command);\n       elem.find(\".Codemirror-dialog input\").focus();\n     }\n\n     return this;\n   },\n\n    /**\n     * @param {String} file is the file as known to Prolog,\n     * which is `pengine://<pengine>/src/` for the pengine main file\n     * and `swish://store.pl` for included files.\n     * @return {Boolean} whether or not this is my file.\n     */\n    isMyFile: function(file) {\n      var prefix = \"swish://\";\n\n      if ( file.startsWith(\"pengine://\") ) {\n\tvar data = this.data(pluginName);\n\n\tif ( data.pengines &&\n\t     (id = file.split(\"/\")[2]) &&\n\t     data.pengines.indexOf(id) >= 0 )\n\t  return true;\n      }\n\n      if ( file.startsWith(prefix) ) {\n\tvar store = this.data(\"storage\");\n\n\tif ( store && file.slice(prefix.length) == store.file )\n\t  return true;\n      }\n\n      return false;\n    },\n\n    /**\n     * Highlight source events.  The source pengine gets a prompt\n     * with `prompt.file` set to `pengine://<id>/src`.\n     * @param {Object|null} prompt for a tracer action.  Use `null`\n     * to clear.\n     * @return {jQuery|undefined} `this` if successful.  `undefined`\n     * if this is a valid trace event, but I cannot process it.\n     */\n    showTracePort: function(prompt) {\n      if ( this.length == 0 )\n\treturn this;\n\n      var data  = this.data(pluginName);\n\n      if ( data.traceMark ) {\n\tdata.traceMark.clear();\n\tdata.traceMark = null;\n      }\n\n      if ( prompt && prompt.source && prompt.source.file ) {\n\tvar file  = prompt.source.file;\n\n\tif ( this.prologEditor('isMyFile', file) ) {\n\t  if ( prompt.source.from && prompt.source.to ) {\n\t    var from = data.cm.charOffsetToPos(prompt.source.from);\n\t    var to   = data.cm.charOffsetToPos(prompt.source.to);\n\n\t    if ( !this.is(\":visible\") )\n\t      this.storage('expose', \"trace\");\n\n\t    if ( from && to ) {\n\t      data.traceMark = data.cm.markText(from, to,\n\t\t\t\t\t\t{ className: \"trace \"+prompt.port\n\t\t\t\t\t\t});\n\t      data.traceMark.pengine = prompt.pengine;\n\t      data.cm.scrollIntoView(from, 50);\n\t    }\n\t  }\n\n\t  return this;\n\t}\n      } else {\n\treturn this;\n      }\n    },\n\n    /**\n     * Get the selection for later reuse.\n     * @returns {null|Array} Array of selection descriptions for each\n     * editor in the jQuery object that has a selection.  Each editor\n     * selection contains `editor` and `selections`, where `selections`\n     * is an array of objects with `from`, `to` (line,ch), `string` and\n     * `context`.  The latter two allow for fuzzy restoration of the\n     * selection.\n     */\n    getSelection: function() {\n      var selection = [];\n\n      this.each(function() {\n\tvar ed   = $(this);\n\tvar data = ed.data(pluginName);\n\n\tif ( data.cm.somethingSelected() == true ) {\n\t  var sel    = data.cm.listSelections();\n\t  var esel   = {selections:[]};\n\n\t\t\t\t\t\t/* Hack */\n\t  var cell_name = ed.closest(\".nb-cell\").attr(\"name\");\n\t  if ( cell_name )\n\t    esel.cell = cell_name;\n\n\t  for(var i=0; i<sel.length; i++) {\n\t    var s = sel[i];\n\t    var sr = {};\n\n\t    function cmploc(l1, l2) {\n\t      if ( l1.line < l2.line ) return -1;\n\t      if ( l1.line > l2.line ) return  1;\n\t      if ( l1.ch   < l2.ch   ) return -1;\n\t      if ( l1.ch   > l2.ch   ) return  1;\n\t      return 0;\n\t    }\n\t    function sol(pos) {\n\t      return {line:pos.line, ch:0};\n\t    }\n\t    function eol(pos) {\n\t      return {line:pos.line, ch:data.cm.getLine(pos.line).length};\n\t    }\n\t    function cppos(pos) {\n\t      return {line:pos.line, ch:pos.ch};\n\t    }\n\n\t    switch ( cmploc(s.anchor, s.head) )\n\t    { case -1:\n\t\tsr.from = cppos(s.anchor);\n\t        sr.to   = cppos(s.head);\n\t\tbreak;\n\t      case 1:\n\t\tsr.to   = cppos(s.anchor);\n\t        sr.from = cppos(s.head);\n\t\tbreak;\n\t      case 0:\n\t\tcontinue;\n\t    }\n\n\t    sr.string  = data.cm.getRange(sr.from, sr.to);\n\t    sr.context = data.cm.getRange(sol(sr.from), eol(sr.to));\n\n\t    esel.selections.push(sr);\n\t  }\n\n\t  selection.push(esel);\n\t}\n      });\n\n      return selection.length > 0 ? selection : null;\n    },\n\n    /**\n     * @param {Array} sel is the selection to restore\n     * @fixme deal with notebook selections\n     */\n    restoreSelection: function(selection) {\n      function restoreEditorSelection(ed, sel) {\n\tvar data    = ed.data(pluginName);\n\tvar cm      = data.cm;\n\tvar cmsel   = [];\n\tvar loffset = \"\";\n\n\tfunction findsel(s) {\n\t  if ( cm.getRange(s.from, s.to) == s.string ) {\n\t    return {anchor:s.from, head: s.to};\n\t  } else {\n\t    var start   = cm.firstLine();\n\t    var end     = cm.lastLine();\n\t    var offset  = 0;\n\t    var goffset = 1;\n\n\t    function contextMatch(l0, s) {\n\t      var lines = s.split(\"\\n\");\n\t      for(var i=0; i<lines.length; i++) {\n\t\tif ( cm.getLine(l0+i) != lines[i] )\n\t\t  return false;\n\t      }\n\t      return true;\n\t    }\n\n\t    function stringMatch(l0, s) {\n\t      var lines = s.split(\"\\n\");\n\t      for(var i=0; i<lines.length; i++) {\n\t\tvar cml = cm.getLine(l0);\n\t\tvar   l = lines[i];\n\t\tvar choff;\n\n\t\tif ( i == 0 ) {\n\t\t  if ( i == lines.length-1 ) {\n\t\t    return cml.indexOf(l);\n\t\t  } else {\n\t\t    choff = cml.indexOf(l);\n\n\t\t    if ( !(choff >= 0 && l.length+choff == cml.length) )\n\t\t      return -1;\n\t\t  }\n\t\t} else if ( i == lines.length-1 ) {\n\t\t  if ( cml.indexOf(l) != 0 )\n\t\t    return -1;\n\t\t} else {\n\t\t  if ( cm.getLine(l0+i) != lines[i] )\n\t\t    return -1;\n\t\t}\n\t      }\n\t      return choff;\t\t\t/* ch of selection start */\n\t    }\n\n\t    function poff(p, l, ch) {\n\t      ch = ch||0;\n\t      return {line:p.line+l, ch:p.ch+ch};\n\t    }\n\n\t    while( s.from.line+offset >= start &&\n\t\t   s.to.line+offset <= end ) {\n\t      var ch;\n\n\t      if ( contextMatch(s.from.line+offset, s.context) )\n\t\treturn { anchor:poff(s.from, offset),\n\t\t\t head:  poff(s.to,   offset),\n\t\t\t offset:offset\n\t\t       };\n\t      if ( (ch=stringMatch(s.from.line+offset, s.string)) >= 0 ) {\n\t\tvar soff = ch-s.from.ch;\n\t\tvar toff = s.to.line != s.from.line ? 0 : soff;\n\n\t\treturn { anchor:poff(s.from, offset, soff),\n\t\t\t head:  poff(s.to,   offset, toff),\n\t\t\t offset:offset\n\t\t       };\n\t      }\n\n\t      goffset++;\n\t      offset = Math.floor(goffset/2);\n\t      if ( goffset%2 == 1 )\n\t\toffset = -offset;\n\t    }\n\t  }\n\t}\n\n\tfor(var i=0; i<sel.length; i++) {\n\t  var r = findsel(sel[i]);\n\t  if ( r ) {\n\t    cmsel.push(r);\n\t    if ( r.offset ) {\n\t      if ( loffset != \"\" )\n\t\tloffset += \";\";\n\t      loffset += r.offset\n\t    }\n\t  }\n\t}\n\n\tif ( cmsel.length > 0 )\n\t  cm.setSelections(cmsel, 0);\n\tif ( loffset != \"\" || cmsel.length < sel.length ) {\n\t  var msg;\n\n\t  if ( cmsel.length == sel.length )\n\t    msg = \"Found selections at offset \"+loffset;\n\t  else if ( loffset == \"\" )\n\t    msg = \"Could not restore all selections\";\n\t  else\n\t    msg = \"Only found some selections at offsets \" + loffset;\n\n\t  modal.feedback({ html: msg, owner: ed });\n\t}\n      }\n\n      // Our body\n      if ( selection[0].cell ) {\t/* notebook style */\n\tvar editors = this;\n\n\tfor(var i=0; i<selection.length; i++) {\n\t  var s = selection[i];\n\n\t  function findEditor(name) {\n\t    for(var i=0; i<editors.length; i++) {\n\t      if ( $(editors[i]).closest(\".nb-cell\").attr(\"name\") == name )\n\t\treturn $(editors[i]);\n\t    }\n\t  }\n\n\t  var ed = findEditor(s.cell);\n\t  if ( ed )\n\t    restoreEditorSelection(ed, s.selections);\n\t}\n      } else {\t\t\t\t/* plain editor */\n\trestoreEditorSelection(this, selection);\n      }\n\n      return this;\n    },\n\n    /**\n     * Extract example queries from text.  By   default,  this looks for\n     * structured  comment  blocks  labelled   *examples*  and  extracts\n     * fragments between `^ *?-` and `.`\n     *\n     * @param {String} [src] Source to parse. Default is the editor\n     * content.\n     * @param {Boolean} [inComment=true] if `true`, only process text\n     * that is in an *examples* structured comment block\n     * @returns {null|Array} Examples extracted from the source code.  If\n     * there is _no source_ code, `null` is returned.\n     */\n    getExamples: function(src, inComment) {\n      var source = src ? src : this.prologEditor('getSource');\n      var comments;\n      var exlist = [];\n\n      if ( $.trim(source) == \"\" )\n\treturn null;\n\n      if ( inComment == false )\n\tcomments = [src];\n      else\n\tcomments = source.match(/\\/\\*\\* *<?examples>?[\\s\\S]*?\\*\\//igm);\n\n      if ( comments ) {\n\tfor(var i=0; i<comments.length; i++) {\n\t  var exl = comments[i].match(/^ *\\?-[\\s\\S]*?[^-#$&*+./:<=>?@\\\\^~]\\.\\s/gm);\n\n\t  if ( exl ) {\n\t    for(var j=0; j<exl.length; j++) {\n\t      var ex = exl[j].replace(/^ *\\?-\\s*/, \"\")\n\t\t\t     .replace(/\\s*$/, \"\");\n\t      exlist.push(ex);\n\t    }\n\t  }\n\t}\n      }\n\n      return exlist;\n    },\n\n    /**\n     * Add an example to the examples comment block or create such a\n     * block.\n     */\n    addExample: function(query) {\n      var cm      = this.data(pluginName).cm;\n      var source = this.prologEditor('getSource');\n      var start  = this.prologEditor('search',\n\t\t\t\t     /\\/\\*\\* *<?examples>?/igm, {dir:-1,max:1});\n      var end    = this.prologEditor('search', /\\*\\//, {start:start.line,max:1});\n\n      if ( start.length == 1 )\n      { var end = this.prologEditor('search', /\\*\\//,\n\t\t\t\t    {start:start[0].line, max:1});\n\tvar current = this.prologEditor('getExamples', source);\n\n\tif ( current && current.indexOf(query) != -1 )\n\t{ modal.alert(\"Query is already in examples\");\n\t  return this;\n\t}\n\tif ( end.length != 1 )\n\t{ modal.alert(\"/** <examples> block is not terminated with */\");\n\t  return this;\n\t}\n\n\tquery = query.split(\"\\n\").join(\"\\n   \");\n\tcm.setSelection({line:end[0].line-1, ch:0});\n\tcm.replaceSelection(\"?- \"+query+\"\\n\");\n      } else\n      { cm.setSelection({line:cm.lastLine(), ch:0});\n\tcm.replaceSelection(\"/** <examples>\\n\" +\n\t\t\t    \"?- \"+query+\"\\n\" +\n\t\t\t    \"*/\\n\");\n      }\n\n      return this;\n    },\n\n    /**\n     * @param {RegExp} re is the regular expression to search for\n     * @param {Object} [options]\n     * @param {number} [options.max] is the max number of hits to return\n     * @param {number} [options.dir=1] is -1 to search backwards\n     * @param {number} [options.start] to start at a given line\n     * @param {number} [options.end] to end at a given line\n     * @returns {Array.object} list of objects holding the matching line\n     * content and line number.\n     */\n    search: function(re, options) {\n      var cm      = this.data(pluginName).cm;\n      var dir     = options.dir||1;\n      var start   = options.start == undefined ? cm.firstLine() : options.start;\n      var end     = options.end   == undefined ? cm.lastLine()  : options.end;\n      var matches = [];\n\n      if ( (dir == -1 && end > start) ||\n\t   (dir == 1 && start > end) )\n      { var tmp = start;\n\tstart = end;\n\tend = tmp;\n      }\n\n      if ( (dir > 0 && start > end) ||\n\t   (dir < 0 && start < end) )\n\treturn matches;\n      end += dir;\n\n      for(var i=start; i!=end; i+=dir) {\n\tvar line = cm.getLine(i);\n\tif ( line.search(re) >= 0 ) {\n\t  matches.push({line:i+1, text:line});\n\t  if ( options.max && options.max === matches.length )\n\t    return matches;\n\t}\n      }\n\n      return matches;\n    },\n\n    /**\n     * Go to a given 1-based line number and optionally highlight the\n     * match(es).\n     *\n     * @param {number} line\n     * @param {Object} [options]\n     * @param {RegExp} [options.regex] If provided, highlight the\n     * matches.\n     * @param {Boolean} [options.showAllMatches] if `true`, show all\n     * matches in the viewport.\n     */\n    gotoLine: function(line, options) {\n      var data = this.data(pluginName);\n      var cm   = data.cm;\n      var ch   = 0;\n      var re;\n\n      function clearSearchMarkers(cm) {\n\tif ( cm._searchMarkers !== undefined ) {\n\t  for(var i=0; i<cm._searchMarkers.length; i++)\n\t    cm._searchMarkers[i].clear();\n\t  cm.off(\"cursorActivity\", clearSearchMarkers);\n\t}\n\tcm._searchMarkers = [];\n      }\n\n      clearSearchMarkers(cm);\n      options = options||{};\n      re      = options.regex;\n      line    = line-1;\n\n      if ( re ) {\n\tch = cm.getLine(line).search(re);\n\tif ( ch < 0 )\n\t  ch = 0;\n      }\n\n      cm.setCursor({line:line,ch:ch});\n      var myHeight = cm.getScrollInfo().clientHeight;\n      var coords = cm.charCoords({line: line, ch: 0}, \"local\");\n      cm.scrollTo(null, (coords.top + coords.bottom - myHeight) / 2);\n\n      if ( re ) {\n\tfunction markMatches(line, className) {\n\t  var match;\n\n\t  while( (match=re.exec(cm.getLine(line))) ) {\n\t    cm._searchMarkers.push(\n\t      cm.markText({line:line,ch:match.index},\n\t\t\t  {line:line,ch:match.index+match[0].length},\n\t\t\t  {className:className,\n\t\t\t   clearOnEnter: true,\n\t\t\t   clearWhenEmpty: true,\n\t\t\t   title: \"Search match\"\n\t\t\t  }));\n\t  }\n\t}\n\n\tmarkMatches(line, \"CodeMirror-search-match\");\n\tif ( options.showAllMatches ) {\n\t  var vp = cm.getViewport();\n\n\t  for(var i=vp.from; i<vp.to; i++) {\n\t    if ( i != line ) {\n\t      markMatches(i, \"CodeMirror-search-alt-match\");\n\t    }\n\t  }\n\t}\n\n\tif ( cm._searchMarkers.length > 0 )\n\t  cm.on(\"cursorActivity\", clearSearchMarkers);\n      } else {\t\t\t\t\t/* mark entire line */\n\tcm._searchMarkers.push(\n\t      cm.markText({line:line, ch:0},\n\t\t\t  {line:line, ch:cm.getLine(line).length},\n\t\t\t  {className:\"CodeMirror-search-match\",\n\t\t\t   clearOnEnter: true,\n\t\t\t   clearWhenEmpty: true,\n\t\t\t   title: \"Target line\"\n\t\t\t  }));\n      }\n\n      return this;\n    },\n\n    /**\n     * @return {Integer} change generation for this editor\n     */\n    changeGen: function() {\n      return this.data(pluginName).cm.changeGeneration();\n    },\n\n    isClean: function(gen) {\n      return this.data(pluginName).cm.isClean(gen);\n    },\n\n    /**\n     * Associate the editor with the server side (gitty) source\n     */\n    setupStorage: function(storage) {\n      var data = this.data(pluginName);\n      var elem = this;\n\n      storage.setValue = function(source) {\n\telem.prologEditor('setSource', source, true);\n      };\n      storage.getValue = function() {\n\treturn data.cm.getValue();\n      };\n      storage.changeGen = function() {\n\treturn data.cm.changeGeneration();\n      };\n      storage.isClean = function(generation) {\n\treturn data.cm.isClean(generation);\n      };\n      storage.markClean = function(clean) {\n\telem.prologEditor('markClean', clean);\n      };\n\n      storage.cleanGeneration = data.cm.changeGeneration();\n      storage.cleanData       = data.cm.getValue();\n      storage.cleanCheckpoint = \"load\";\n\n      this.storage(storage);\n      return this;\n    },\n\n    /**\n     * Act on the current token.  Normally invoked after a long click.\n     */\n    contextAction: function() {\n      var elem  = this;\n      var data  = this.data(pluginName);\n      var here  = data.cm.getCursor();\n      var token = data.cm.getTokenAt(here, true);\n      var et    = data.cm.getEnrichedToken(token);\n      var locations = data.cm.getTokenReferences(et);\n\n      if ( locations && locations.length > 0 ) {\n\tvar ul = $.el.ul();\n\tvar select  = $.el.div({class: \"goto-source\"}, $.el.div(\"Go to\"), ul);\n\tvar modalel = $.el.div({class: \"edit-modal\"},\n\t\t\t       $.el.div({class: \"mask\"}),\n\t\t\t       select)\n\n\tfor(var i=0; i<locations.length; i++) {\n\t  var loc = locations[i];\n\t  $(ul).append($.el.li($.el.a({'data-locindex':i}, loc.title)));\n\t}\n\n\tvar coord = data.cm.cursorCoords(true);\n\t$(select).css({top: coord.bottom, left: coord.left});\n\n\t$(\"body\").append(modalel);\n\t$(modalel).on(\"click\", function(ev) {\n\t  var i = $(ev.target).data('locindex');\n\t  $(modalel).remove();\n\n\t  if ( i !== undefined ) {\n\t    var loc = locations[i];\n\n\t    if ( loc.file ) {\n\t      elem.closest(\".swish\").swish('playFile', loc);\n\t    } else {\n\t      var editor;\n\n\t      // If we are the query editor, we must find the related\n\t      // program editor.\n\t      if ( data.role == \"query\" ) {\n\t\teditor = elem.closest(\".prolog-query-editor\")\n\t\t\t     .queryEditor('getProgramEditor');\n\n\t\tif ( !editor[0] )\n\t\t  modal.alert(\"No related program editor\");\n\t      } else\n\t      { editor = elem;\n\t      }\n\n\t      if ( editor && editor[0] )\n\t\teditor.prologEditor('gotoLine', loc.line, loc).focus();\n\t    }\n\n\t  }\n\t});\n\n\t$(modalel).show();\n      }\n\n      return this;\n    },\n\n\t\t /*******************************\n\t\t *\tQUERY MANIPULATION\t*\n\t\t *******************************/\n\n    /**\n     * @param {String} [query] query to get the variables from\n     * @param {Boolean} [anon] if `true`, also include _X variables.\n     * @return {List.string} is a list of Prolog variables without\n     * duplicates\n     */\n\n    variables: function(query, anon) {\n      var qspan = $.el.span({class:\"query cm-s-prolog\"});\n      var vars = [];\n\n      CodeMirror.runMode(query, \"prolog\", qspan);\n\n      function addVars(selector) {\n\t$(qspan).find(selector).each(function() {\n\t  var name = $(this).text();\n\t  if ( vars.indexOf(name) < 0 )\n\t    vars.push(name);\n\t});\n      }\n\n      addVars(\"span.cm-var\");\n      if ( anon )\n\taddVars(\"span.cm-var-2\");\n\n      return vars;\n    },\n\n    /**\n     * Wrap current query in a solution modifier.\n     * TBD: If there is a selection, only wrap the selection\n     *\n     * @param {String} wrapper defines the type of wrapper to use.\n     */\n    wrapSolution: function(wrapper) {\n      var query = prolog.trimFullStop(this.prologEditor('getSource', \"query\"));\n      var that = this;\n      var vars = this.prologEditor('variables', query);\n\n      function wrapQuery(pre, post) {\n\tthat.prologEditor('setSource', pre + \"(\"+query+\")\" + post + \".\")\n\t    .focus();\n\treturn that;\n      }\n\n      function prefixQuery(pre) {\n\tthat.prologEditor('setSource', pre + query + \".\")\n\t    .focus();\n\treturn that;\n      }\n\n      function order(l) {\n\tvar order = [];\n\tfor(var i=0; i<vars.length; i++)\n\t  order.push(\"asc(\"+vars[i]+\")\");\n\treturn order.join(\",\");\n      }\n\n      switch ( wrapper ) {\n        case \"Aggregate (count all)\":\n\t  return wrapQuery(\"aggregate_all(count, \", \", Count)\");\n\tcase \"Projection\":\n\t  return prefixQuery(\"projection([\"+vars.join(\",\")+\"]),\\n\");\n        case \"Order by\":\n\t  return wrapQuery(\"order_by([\"+order(vars)+\"], \", \")\");\n        case \"Distinct\":\n\t  return wrapQuery(\"distinct([\"+vars.join(\",\")+\"], \", \")\");\n        case \"Limit\":\n\t  return wrapQuery(\"limit(10, \", \")\");\n        case \"Time\":\n\t  return wrapQuery(\"time(\", \")\");\n        case \"Debug (trace)\":\n\t  return wrapQuery(\"trace, \", \"\");\n\tdefault:\n\t  alert(\"Unknown wrapper: \\\"\"+wrapper+\"\\\"\");\n      }\n    }\n  }; // methods\n\n  tabbed.tabTypes.program = {\n    dataType: \"pl\",\n    typeName: \"program\",\n    label: \"Program\",\n    contentType: \"text/x-prolog\",\n    order: 100,\n    create: function(dom, options) {\n      $(dom).addClass(\"prolog-editor\")\n            .prologEditor($.extend({save:true}, options))\n\t    .prologEditor('makeCurrent');\n    }\n  };\n\n  if ( config.swish.tab_types ) {\n    var editDefaults = {\n      save: true,\n      lineNumbers: true\n    };\n\n    for(var i=0; i<config.swish.tab_types.length; i++) {\n      var tabType = config.swish.tab_types[i];\n      if ( tabType.editor ) {\n\tvar options = $.extend({typeName:tabType.typeName},\n\t\t\t       editDefaults,\n\t\t\t       tabType.editor);\n\n\ttabType.create = function(dom) {\n\t  $(dom).addClass(\"prolog-editor\")\n\t        .prologEditor(options);\n\t};\n\n\ttabbed.tabTypes[tabType.typeName] = tabType;\n      }\n    }\n  }\n\n\n  /**\n   * The prologEditor jQuery plugin converts a `<div>` into an code\n   * editor based on [CodeMirror](http://codemirror.net)\n   *\n   * @class prologEditor\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @example // Create a default Prolog editor\n   * $(\"#editor\").prologEditor();\n   * @example // Extract embedded examples\n   * $(\"#editor\").prologEditor('getExamples');\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.prologEditor = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\n\t\t /*******************************\n\t\t *\t     FUNCTIONS\t\t*\n\t\t *******************************/\n\nCodeMirror.prototype.charOffsetToPos = function(offset) {\n  var line = this.firstLine();\n  var last = this.lastLine();\n  var charno = 0;\n\n  for( ; line < last; line++ ) {\n    var text = this.getLine(line);\n\n    if ( charno <= offset && charno+text.length >= offset )\n      return {line:line, ch:offset-charno};\n\n    charno += text.length + 1;\t\t/* one extra for the newline */\n  }\n};\n\n\n\t\t /*******************************\n\t\t *\t      EMACS\t\t*\n\t\t *******************************/\n\nCodeMirror.keyMap.emacs.Enter = \"newlineAndIndent\";\n\n\n\t\t /*******************************\n\t\t *\tSTYLE CONFIGURATION\t*\n\t\t *******************************/\n\n/**\n * Include styles provided through the configuration object.\n *\n * @param {Object} style is an object mapping style names into style\n * properties.  The properties are also in an object, linking style\n * names to values.  For example:\n *\n *    ```\n *    { column: {color: \"#8b008b},\n *      table:  {color: \"#8b008b, \"font-weight\":\"bold\"}\n *    }\n *    ```\n */\n\nfunction loadStyleExtensions(style, prefix)\n{ var parts=[];\n\n  prefix = prefix || \"\";\n\n  parts.push(\"<style>\\n\");\n  for(var sname in style) {\n    if ( style.hasOwnProperty(sname) ) {\n      var attrs = style[sname];\n\n      parts.push(prefix, sname, \"{\");\n\n      for(var a in attrs) {\n\tif ( attrs.hasOwnProperty(a) ) {\n\t  parts.push(a, \":\", attrs[a], \";\");\n\t}\n      }\n\n      parts.push(\"}\\n\");\n    }\n  }\n  parts.push(\"</style>\\n\");\n\n  $(\"body\").append(parts.join(\"\"));\n}\n\nif ( config.swish.cm_style )\n  loadStyleExtensions(config.swish.cm_style,\n\t\t      \".cm-s-prolog span.cm-\");\nif ( config.swish.cm_hover_style )\n  loadStyleExtensions(config.swish.cm_hover_style,\n\t\t      \".CodeMirror-hover-tooltip \");\n\n}); // define\n;\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2017, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Provide the query editing facilities.\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n * @requires laconic\n * @requires editor\n */\n\ndefine('query',[ \"jquery\", \"config\", \"preferences\", \"cm/lib/codemirror\", \"modal\",\n\t \"laconic\", \"editor\"\n       ],\n       function($, config, preferences, CodeMirror, modal) {\n\n(function($) {\n  var pluginName = 'queryEditor';\n\n  var defaults = {\n    maxHistoryLength: 50\n  };\n\n  /** @lends $.fn.queryEditor */\n  var methods = {\n    /**\n     * @param {Object} options\n     * @param {Runner} options.runner an object that understands\n     * run(source, query), where source and query are strings.\n     * @param {Array.String|Function} [options.examples] called to\n     * populate the _Examples_ menu. Must return an array of strings.\n     * @param {Integer} [options.maxHistoryLength=50] is the max number\n     * of entries recalled by the history menu.\n     */\n    _init: function(options) {\n      return this.each(function() {\n\tvar elem   = $(this);\n\tvar data   = $.extend({}, defaults, options);\n\tvar qediv  = $.el.div({class:\"query\"});\n\tvar tabled = tableCheckbox(data);\n\n\telem.addClass(\"prolog-query-editor swish-event-receiver reactive-size\");\n\n\telem.append(qediv,\n\t\t    $.el.div({class:\"prolog-prompt\"}, \"?-\"),\n\t\t    $.el.div({class:\"query-buttons\"},\n\t\t\t     $.el.span({class:\"buttons-left\"},\n\t\t\t\t       examplesButton(data),\n\t\t\t\t       historyButton(data),\n\t\t\t\t       aggregateButton(data)),\n\t\t\t     $.el.span({class:\"buttons-right\"},\n\t\t\t\t       tabled,\n\t\t\t\t       runButton(data))));\n\n\tfunction tableSelected() {\n\t  return $(tabled).find(\"input\").prop(\"checked\");\n\t}\n\n\t$(qediv).append(elem.children(\"textarea\"))\n\t        .prologEditor({ role: \"query\",\n\t\t\t\tsourceID: function() {\n\t\t\t\t  return data.sourceID();\n\t\t\t\t},\n\t\t\t\tprologQuery: function(q) {\n\t\t\t\t  elem.queryEditor('run', q, tableSelected());\n\t\t\t\t}\n\t\t              });\n\n\telem.data(pluginName, data);\n\n\tif ( !$(qediv).prologEditor('getSource', \"query\") )\n\t{ if ( typeof(data.examples) == \"object\" ) {\n\t    if ( data.examples[0] )\n\t      $(qediv).prologEditor('setSource', data.examples[0]);\n\t  } else {\n\t    elem[pluginName]('setProgramEditor', $(data.editor), true);\n\t  }\n\t}\n\n\telem.on(\"current-program\", function(ev, editor) {\n\t  elem[pluginName]('setProgramEditor', $(editor));\n\t});\n\telem.on(\"program-loaded\", function(ev, editor) {\n\t  if ( $(data.editor).data('prologEditor') ==\n\t       $(editor).data('prologEditor') ) {\n\t    var exl = data.examples();\n\t    elem.queryEditor('setQuery', exl && exl[0] ? exl[0] : \"\");\n\t  }\n\t});\n      });\n    },\n\n    /**\n     * @param {jQuery} editor has become the new current program\n     * editor.  Update the examples and re-run the query highlighting.\n     */\n    setProgramEditor: function(editor, force) {\n      var data = this.data(pluginName);\n\n      if ( data.editor == editor[0] && !force )\n\treturn this;\n\n      data.editor = editor[0];\n      if ( data.editor ) {\n\tdata.examples = function() {\n\t  var exl    = editor.prologEditor('getExamples')||[];\n\t  var global = editor.parents(\".swish\").swish('examples', true)||[];\n\n\t  if ( $.isArray(global) )\n\t  exl.concat(global);\n\n\t  return exl;\n\t};\n\tif ( editor.prologEditor('isPengineSource') ) {\n\t  data.source = function() {\n\t    var src = editor.prologEditor('getSource', \"source\");\n\t    var bg  = $(\".background.prolog.source\").text();\n\n\t    if ( bg )\n\t      src += '\\n%@background@\\n' + bg;\n\n\t    return src;\n\t  };\n\t} else {\n\t  data.source = \"\";\n\t}\n\tdata.sourceID = function() {\n\t  return editor.prologEditor('getSourceID');\n\t};\n\n\tvar exl = data.examples();\n\tif ( exl && exl[0] && this.queryEditor('isClean') ) {\n\t  this.queryEditor('setQuery', exl[0]);\n\t} else {\n\t  editor.prologEditor('refreshHighlight');\n\t}\n      } else\n      { data.examples = \"\";\n      }\n    },\n\n    /**\n     * @returns {jQuery} the associated program editor\n     */\n    getProgramEditor: function() {\n      var data = this.data(pluginName);\n\n      if ( data.editor )\n\treturn $(data.editor);\n      else\n\treturn $();\n    },\n\n    /**\n     * @param {Array.String} set or extend the contents of the\n     * _Examples_ menu.\n     * @param {Boolean} [clear=true] clear the list before adding the\n     * new examples.\n     */\n    setExamples: function(list, clear) {\n      var ul = this.find(\"ul.examples\");\n\n      if ( !list ) list  = [];\n      if ( clear === undefined ) clear = true;\n\n      if ( clear && sameExamples(list) )\n\treturn this;\t\t\t/* no change */\n\n      function sameExamples(exs) {\n\tvar ex0;\n\n\tif ( (ex0=ul.data('examples')) &&\n\t     ex0.length == exs.length ) {\n\t  for(var i=0; i<ex0.length; i++) {\n\t    if ( ex0[i] != exs[i] )\n\t      return false;\n\t  }\n\t  return true;\n\t}\n\treturn false;\n      }\n\n      if ( clear === true )\n\tul.html(\"\");\n      ul.find(\"li.add-example, li.divider\").remove();\n      for(var i=0; i<list.length; i++) {\n\tul.append($.el.li($.el.a(list[i])));\n      }\n      ul.data('examples', list.slice(0));\n      ul.append($.el.li({class:\"divider\"}));\n      ul.append($.el.li({class:'add-example'},\n\t\t\t$.el.a(\"Add current query to examples\")));\n\n      return this;\n    },\n\n    /**\n     * Add the current query to the examples in the program\n     */\n    addExample: function()\n    { var query\t= this.find(\".query\").prologEditor('getSource');\n\n      if ( query.trim() != \"\" ) {\n\t$(\".swish-event-receiver:visible\")\n\t     .trigger(\"addExample\",\n\t\t      this.find(\".query\").prologEditor('getSource'));\n      } else\n      { modal.alert(\"The query window is empty\");\n      }\n\n      return this;\n    },\n\n    /**\n     * Add a query to the history menu. If it is already part of the\n     * menu, move it to the bottom.  If the menu exceeds the value\n     * of the option `maxHistoryLength`, remove the oldest entry.\n     * @param {String} query query to add to the history menu.\n     */\n    addHistory: function(query) {\n      var ul   = this.find(\"ul.history\");\n      var data = this.data('queryEditor');\n\n      function findInHistory() {\n\treturn ul.children().filter(function() {\n\t  return $(this).text() == query;\n\t});\n      }\n\n      if ( query ) {\n\tvar li;\n\n\tif ( (li=findInHistory()) )\n\t  li.remove();\n\tif ( ul.children().length >= data.maxHistoryLength )\n\t  ul.children().first().remove();\n\tul.append($.el.li($.el.a(query)));\n      }\n\n      return this;\n    },\n\n    /**\n     * Set the current query and focus the editor.\n     * @param {String} query the new value of the query\n     */\n    setQuery: function(query) {\n      var data = this.data(pluginName);\n\n      data.cleanGen =\n\tthis.find(\".query\")\n\t    .prologEditor('setSource', query)\n\t    .focus()\n\t    .prologEditor('changeGen');\n\n      return this;\n    },\n\n    isClean: function() {\n      var data = this.data(pluginName);\n\n      return ( !this.queryEditor('getQuery') ||\n\t       ( data.cleanGen &&\n\t\t this.find(\".query\").prologEditor('isClean', data.cleanGen)\n\t       )\n\t     );\n    },\n\n    /**\n     * @returns {String} the current query as Prolog text\n     */\n    getQuery: function() {\n      return this.find(\".query\").prologEditor('getSource', \"query\");\n    },\n\n    /**\n     * Collect source and query and submit them to the associated\n     * `runner`.\n     *\n     * @param {String} [q] is the query to execute.  Default asks it\n     * from the associated query editor.\n     * @param {Boolean} [tabled=false] when `true`, present the results\n     * as a table.\n     */\n    run: function(q, tabled) {\n      var data  = this.data('queryEditor');\n\n      if ( q === undefined ) q = this.queryEditor('getQuery');\n      q = $.trim(q);\n\n      if ( !q ) {\n\t$(\".swish-event-receiver\").trigger(\"help\", {file:\"query.html\"});\n\treturn this;\n      }\n      $(\".swish-event-receiver\").trigger(\"clearMessages\");\n\n      var query = { query: q,\n\t\t    editor: data.editor,\n\t\t    query_editor: this.find(\".query\")\n\t\t  };\n\n      if ( typeof(data.source) == \"function\" )\n\tquery.source = data.source(q);\n      else if ( typeof(data.source) == \"string\" )\n\tquery.source = data.source;\n      if ( tabled )\n\tquery.tabled = true;\n\n      this.queryEditor('addHistory', q);\n      data.runner.prologRunners('run', query);\n\n      return this;\n    }\n  }; // methods\n\n\n\t\t /*******************************\n\t\t *\tPRIVATE FUNCTIONS\t*\n\t\t *******************************/\n\n  /* Allow for e.g. Q(part).method(...)\n  */\n\n  function Q(from) {\n    return $(from).closest(\".prolog-query-editor\");\n  }\n\n  function dropup(cls, label, options) {\n    var dropup = $.el.div(\n      {class:\"btn-group dropup\"},\n      $.el.button(\n\t{class:\"btn btn-default btn-xs dropdown-toggle \"+cls,\n\t \"data-toggle\":\"dropdown\"},\n\tlabel,\n\t$.el.span({class:\"caret\"})),\n      $.el.ul({class:\"dropdown-menu \"+cls}));\n\n    $(dropup).on(\"click\", \"a\", function() {\n      var li = $(this).closest(\"li\");\n\n      if ( li.hasClass(\"add-example\") )\n\tQ(this).queryEditor('addExample');\n      else\n\tQ(this).queryEditor('setQuery', $(this).text());\n    });\n\n    return dropup;\n  }\n\n  function examplesButton(options) {\n    var el = dropup(\"examples\", \"Examples\", options);\n    var ul = $(el).find(\"ul\");\n\n    function updateExamples(options) {\n      var list = options.examples();\n\n      if ( $.isArray(list) )\n\tQ(el).queryEditor('setExamples', list, true);\n    }\n\n    if ( typeof(options.examples) == \"function\" ) {\n      var copy = $.extend({}, options);\n      $(el).mousedown(function(ev) {\n\t\t\tif ( ev.which == 1 ) {\n\t\t\t  updateExamples(copy);\n\t\t\t}\n\t\t      });\n    } else if ( options.examples ) {\n      var list = options.examples;\n\n      for(var i=0; i<list.length; i++) {\n\tul.append($.el.li($.el.a(list[i])));\n      }\n    }\n\n    return el;\n  }\n\n  function historyButton(options) {\n    return dropup(\"history\", \"History\", options);\n  }\n\n  function aggregateButton(options) {\n    var cls = \"aggregate\";\n    var list = options.aggregates ||\n      [ \"Aggregate (count all)\",\n\t\"--\",\n\t\"Projection\",\n\t\"Order by\",\n\t\"Distinct\",\n\t\"Limit\",\n\t\"--\",\n\t\"Time\",\n\t\"Debug (trace)\"\n      ];\n    var ul;\n\n    var dropup = $.el.div(\n      {class:\"btn-group dropup\"},\n      $.el.button(\n\t{class:\"btn btn-default btn-xs dropdown-toggle \"+cls,\n\t \"data-toggle\":\"dropdown\"},\n\t\"Solutions\",\n\t$.el.span({class:\"caret\"})),\n      ul=$.el.ul({class:\"dropdown-menu \"+cls}));\n\n    for(var i = 0; i<list.length; i++) {\n      var wrap = list[i];\n\n      if ( wrap == \"--\" )\n\t$(ul).append($.el.li({class:\"divider\"}));\n      else\n\t$(ul).append($.el.li($.el.a(wrap)));\n    }\n\n    $(dropup).on(\"click\", \"a\", function() {\n      Q(this).find(\".query\").prologEditor('wrapSolution', $(this).text());\n    });\n\n    return dropup;\n  }\n\n  function runButton(options) {\n    var button =\n      $.el.button(\n\t{class:\"run-btn-query\",\n\t class:\"btn btn-default btn-primary btn-xs\"\n\t},\n\t\"Run!\");\n\n    $(button).on(\"click\", function() {\n      Q(this).queryEditor('run', undefined, tableSelected(this));\n    });\n\n    return button;\n  }\n\n  function tableSelected(from) {\n    return $(from).parent().find(\"input\").prop(\"checked\");\n  }\n\n  function tableCheckbox(options) {\n    var checked = preferences.getVal(\"tabled_results\");\n    var attr    = {type:\"checkbox\", name:\"table\"};\n\n    if ( checked === undefined ) {\n      checked = config.swish.tabled_results;\n    }\n    if ( checked )\n      attr.checked = \"checked\";\n\n    var input = $.el.input(attr);\n    var checkbox = $.el.span({class:\"run-chk-table\"},\n\t\t\t     input, \" table results\");\n    $(input).on(\"change\", function(ev) {\n      preferences.setVal(\"tabled_results\",\n\t\t\t $(ev.target).prop(\"checked\"));\n    });\n\n    return checkbox;\n  }\n\n  /**\n   * <Class description>\n   *\n   * @class queryEditor\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.queryEditor = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\n});\n\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2016, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\ndefine('term',[ \"jquery\" ],\n       function() {\n\nfunction unfold() {\n\t$(this).next().toggleClass('fold')\n\t$(this).remove()\n}\n\n$(document).on('click', '.pl-functor, .pl-infix', function() {\n\tvar p = $(this).parent()\n\t$(p).toggleClass('fold')\n\t$(p).before('<span class=\"pl-ellipsis\">...</span>').prev().click(unfold)\n})\n\n}); // define\n;\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2017, VU University Amsterdam\n\t\t\t CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Handle JavaScript based login\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('login',[ \"jquery\", \"modal\", \"config\", \"form\", \"laconic\" ],\n       function($, modal, config, form) {\n\nvar DEFAULT_USER_FIELDS = [\"display_name\", \"email\", \"avatar\"];\n\n(function($) {\n  var pluginName = 'login';\n\n  /** @lends $.fn.login */\n  var methods = {\n    _init: function(options) {\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = {};\n\n\tdata.url = elem.attr(\"href\");\n\telem.removeAttr(\"href\");\n\n\telem.on(\"click\", function(ev) {\n\t  if ( elem.hasClass(\"login\") )\n\t    elem.login('login', ev);\n\t});\n\n\telem.data(pluginName, data);\n\telem.login('update', \"startup\");\n      });\n    },\n\n    /**\n     * Update the status of the login element\n     */\n    update: function(why) {\n      var elem = $(this);\n      $.get(config.http.locations.user_info, {reason:why},\n\t    function(obj) {\n\t      if ( obj ) {\n\t\tconfig.swish.user = obj;\n\t\telem.removeClass(\"login\").addClass(\"logout\");\n\n\t\tvar span = elem.find(\"span.logout span.value\");\n\t\tvar icon;\n\n\t\tif ( obj.avatar ) {\n\t\t  icon = $.el.img({ class: \"profile-picture\",\n\t\t\t\t    src: obj.avatar\n\t\t\t\t  });\n\t\t} else {\n\t\t  icon = $.el.span({class:\"glyphicon glyphicon-user\"});\n\t\t}\n\t\ticon = $.el.span(icon, $.el.b({class: \"caret\"}));\n\t\tspan.html(\"\");\n\t\tspan.append(form.widgets.dropdownButton(icon, {\n\t\t  divClass:\"user-menu btn-transparent\",\n\t\t  ulClass:\"pull-right\",\n\t\t  client: elem,\n\t\t  actions: {\n\t\t    \"Logout\":  elem.hasClass('no-logout') ? undefined :\n\t\t\t       function() {\n\t\t      this.login('logout');\n\t\t    },\n\t\t    \"Profile\": function() {\n\t\t      this.login('profile');\n\t\t    }\n\t\t  }\n\t\t}));\n\t      } else\n\t      { delete config.swish.user;\n\t\telem.removeClass(\"logout\").addClass(\"login\");\n\t      }\n\t    },\n\t    \"json\");\n    },\n\n    /**\n     * Perform the login\n     */\n    login: function(ev) {\n      var elem   = $(this);\n      var data   = this.data(pluginName);\n      var target = $(ev.target);\n      var url    = data.url;\n      var server = target.closest(\"[data-server]\").data(\"server\");\n      var frame  = target.closest(\"[data-frame]\").data(\"frame\")||\"iframe\";\n\n      if ( server )\n\turl += \"?server=\"+encodeURIComponent(server);\n\n      if ( frame == \"popup\" ) {\n\topenPopup(url, \"_blank\",\n\t\t  'location=true,status=true,height=400,width=800',\n\t\t  function() {\n\t\t    elem.login('logged_in');\n\t\t  });\n      } else {\n\tmodal.show({\n\t  title: \"Login\",\n\t  body: function() {\n\t    var button = $.el.button({ name:\"ok\",\n\t\t\t\t       class:\"btn btn-primary login-cont\",\n\t\t\t\t       \"data-dismiss\":\"modal\"\n\t\t\t\t     },\n\t\t\t\t     \"Continue\");\n\t    this.append($.el.iframe({class:\"login\", src:url}),\n\t\t\tbutton);\n\t  },\n\t  onclose: function() {\n\t    elem.login('logged_in');\n\t  }\n\t});\n      }\n    },\n\n    /**\n     * User closed the login modal window.  Check the login.\n     */\n    logged_in: function() {\n      this.login('update', \"login\");\n    },\n\n    /**\n     * Examine/edit the user profile.  Opens a modal window that is\n     * filled through an AJAX call on the server.\n     */\n    profile: function() {\n      var login = $(this);\n\n      modal.server_form({\n\ttitle: \"User profile\",\n\turl: config.swish.user.swish_profile_url ||\n\t     config.http.locations.user_profile,\n\tonreply: function() { login.login('update', \"profile\"); }\n      });\n    },\n\n    /**\n     * Get information about the current user. If possible we get this\n     * from the logged in user.  Else we get the name and avatar from\n     * #chat.\n     * @param [fields] is an array with fields we want to have\n     * @return {Object} info about current user\n     */\n    get_profile: function(fields) {\n      var info = {};\n      var obj = config.swish.user||{};\n\n      function set_from_chat(key, chat_key) {\n\tvar chat = $(\"#chat\");\n\tif ( chat.length == 1 ) {\n\t  var v = chat.chat('self', [chat_key]);\n\t  if ( v[chat_key] ) info[key] = v[chat_key];\n\t}\n      }\n\n      fields = fields||DEFAULT_USER_FIELDS;\n      for(var i=0; i<fields.length; i++) {\n\tvar key = fields[i];\n\n\tif ( obj[key] ) {\n\t  info[key] = obj[key];\n\t} else if ( key == 'display_name' ) {\n\t  if ( obj.name )\n\t    info.display_name = obj.name;\n\t  else if ( obj.given_name && obj.family_name )\n\t    info.display_name = obj.given_name + \" \" + obj.family_name;\n\t  else if ( obj.family_name )\n\t    info.display_name = obj.family_name;\n\t  else if ( obj.given_name )\n\t    info.display_name = obj.given_name;\n\t  else if ( obj.nick_name )\n\t    info.display_name = obj.nick_name;\n\t  else\n\t    set_from_chat('display_name', 'name');\n\t} else if ( key == 'identity' ) {\n\t  if ( obj.external_identity && obj.identity_provider )\n\t    info.identity = obj.identity_provider + \":\" + obj.external_identity;\n\t} else if ( key == 'avatar' ) {\n\t  set_from_chat('avatar', 'avatar');\n\t}\n      }\n\n      return info;\n    },\n\n    /**\n     * Logout the current user\n     */\n    logout: function() {\n      var user = config.swish.user;\n      var elem = $(this);\n\n      if ( user ) {\n\tif ( user.logout_url ) {\n\t  $.ajax({ url: user.logout_url,\n\t           success: function() {\n\t\t     elem.login('update', \"logout_by_url\");\n\t\t   },\n\t\t   error: function(jqXHDR) {\n\t\t     modal.ajaxError(jqXHDR);\n\t\t   }\n\t         });\n\t} else if ( user.auth_method == \"basic\" ||\n\t\t    user.auth_method == \"digest\" ) {\n\t  clearAuthenticationCache(config.http.locations.http_logout,\n\t\t\t\t   config.swish.user.auth_method,\n\t\t\t\t   function() {\n\t\t\t\t     elem.login('update', \"logout_by_http\");\n\t\t\t\t   });\n\t} else {\n\t  alert(\"Don't know how to logout\");\n\t}\n      }\n    }\n  }; // methods\n\n  /**\n   * @see https://trac-hacks.org/wiki/TrueHttpLogoutPatch\n   * @see http://stackoverflow.com/questions/233507/how-to-log-out-user-from-web-site-using-basic-authentication\n   */\n  function clearAuthenticationCache(page, method, oncomplete) {\n    // Default to a non-existing page (give error 500).\n    // An empty page is better, here.\n    if (!page) page = '.force_logout';\n    try{\n      var agt=navigator.userAgent.toLowerCase();\n\n      if ( agt.indexOf(\"msie\") != -1 ) {\n\tdocument.execCommand(\"ClearAuthenticationCache\");\n      } else if ( agt.indexOf(\"webkit\") != -1 && method == \"basic\" ) {\n\tvar xmlhttp = createXMLObject(oncomplete);\n\n\tif ( xmlhttp ) {\n\t  xmlhttp.open(\"GET\", page, true);\n\t  xmlhttp.setRequestHeader(\"Authorization\", \"Basic logout\");\n\t  xmlhttp.send();\n\t}\n      } else {\n\tvar xmlhttp = createXMLObject(oncomplete);\n\n\tif ( xmlhttp ) {\n\t  xmlhttp.open(\"GET\", page, true, \"logout\", \"logout\");\n\t  xmlhttp.send(\"\");\n\t  xmlhttp.abort();\n\t}\n      }\n    } catch(e) {\n      // There was an error\n      return;\n    }\n  }\n\n  function createXMLObject(oncomplete) {\n    var xmlhttp;\n\n    try {\n      if (window.XMLHttpRequest) {\n\txmlhttp = new XMLHttpRequest();\n      } else if (window.ActiveXObject) {\n\txmlhttp=new ActiveXObject(\"Microsoft.XMLHTTP\");\n      }\n\n      if ( oncomplete ) {\n\txmlhttp.addEventListener(\"load\",  oncomplete);\n\txmlhttp.addEventListener(\"error\", oncomplete);\n\txmlhttp.addEventListener(\"abort\", oncomplete);\n      }\n    } catch (e) {\n    }\n\n    return xmlhttp;\n  }\n\n  /**\n   * Open a popup window for dealing with the federated login.  We\n   * must check the login status after the user completes the popup.\n   * Unfortunately the code below does not always work as `win.closed`\n   * is not always set.  An example is FF 51.0 using Cinamon.\n   */\n  function openPopup(uri, name, options, closeCallback) {\n    var win = window.open(uri, name, options);\n    var interval = window.setInterval(function() {\n      try {\n\tif (win == null || win.closed) {\n\t  window.clearInterval(interval);\n\t  closeCallback(win);\n\t}\n      }\n      catch (e) {\n      }\n    }, 1000);\n\n    if ( window.focus )\n      win.focus();\n\n    return win;\n  };\n\n\n  /**\n   * <Class description>\n   *\n   * @class login\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.login = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n});\n\n","!function() {\n  var d3 = {\n    version: \"3.5.17\"\n  };\n  var d3_arraySlice = [].slice, d3_array = function(list) {\n    return d3_arraySlice.call(list);\n  };\n  var d3_document = this.document;\n  function d3_documentElement(node) {\n    return node && (node.ownerDocument || node.document || node).documentElement;\n  }\n  function d3_window(node) {\n    return node && (node.ownerDocument && node.ownerDocument.defaultView || node.document && node || node.defaultView);\n  }\n  if (d3_document) {\n    try {\n      d3_array(d3_document.documentElement.childNodes)[0].nodeType;\n    } catch (e) {\n      d3_array = function(list) {\n        var i = list.length, array = new Array(i);\n        while (i--) array[i] = list[i];\n        return array;\n      };\n    }\n  }\n  if (!Date.now) Date.now = function() {\n    return +new Date();\n  };\n  if (d3_document) {\n    try {\n      d3_document.createElement(\"DIV\").style.setProperty(\"opacity\", 0, \"\");\n    } catch (error) {\n      var d3_element_prototype = this.Element.prototype, d3_element_setAttribute = d3_element_prototype.setAttribute, d3_element_setAttributeNS = d3_element_prototype.setAttributeNS, d3_style_prototype = this.CSSStyleDeclaration.prototype, d3_style_setProperty = d3_style_prototype.setProperty;\n      d3_element_prototype.setAttribute = function(name, value) {\n        d3_element_setAttribute.call(this, name, value + \"\");\n      };\n      d3_element_prototype.setAttributeNS = function(space, local, value) {\n        d3_element_setAttributeNS.call(this, space, local, value + \"\");\n      };\n      d3_style_prototype.setProperty = function(name, value, priority) {\n        d3_style_setProperty.call(this, name, value + \"\", priority);\n      };\n    }\n  }\n  d3.ascending = d3_ascending;\n  function d3_ascending(a, b) {\n    return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n  }\n  d3.descending = function(a, b) {\n    return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n  };\n  d3.min = function(array, f) {\n    var i = -1, n = array.length, a, b;\n    if (arguments.length === 1) {\n      while (++i < n) if ((b = array[i]) != null && b >= b) {\n        a = b;\n        break;\n      }\n      while (++i < n) if ((b = array[i]) != null && a > b) a = b;\n    } else {\n      while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n        a = b;\n        break;\n      }\n      while (++i < n) if ((b = f.call(array, array[i], i)) != null && a > b) a = b;\n    }\n    return a;\n  };\n  d3.max = function(array, f) {\n    var i = -1, n = array.length, a, b;\n    if (arguments.length === 1) {\n      while (++i < n) if ((b = array[i]) != null && b >= b) {\n        a = b;\n        break;\n      }\n      while (++i < n) if ((b = array[i]) != null && b > a) a = b;\n    } else {\n      while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n        a = b;\n        break;\n      }\n      while (++i < n) if ((b = f.call(array, array[i], i)) != null && b > a) a = b;\n    }\n    return a;\n  };\n  d3.extent = function(array, f) {\n    var i = -1, n = array.length, a, b, c;\n    if (arguments.length === 1) {\n      while (++i < n) if ((b = array[i]) != null && b >= b) {\n        a = c = b;\n        break;\n      }\n      while (++i < n) if ((b = array[i]) != null) {\n        if (a > b) a = b;\n        if (c < b) c = b;\n      }\n    } else {\n      while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n        a = c = b;\n        break;\n      }\n      while (++i < n) if ((b = f.call(array, array[i], i)) != null) {\n        if (a > b) a = b;\n        if (c < b) c = b;\n      }\n    }\n    return [ a, c ];\n  };\n  function d3_number(x) {\n    return x === null ? NaN : +x;\n  }\n  function d3_numeric(x) {\n    return !isNaN(x);\n  }\n  d3.sum = function(array, f) {\n    var s = 0, n = array.length, a, i = -1;\n    if (arguments.length === 1) {\n      while (++i < n) if (d3_numeric(a = +array[i])) s += a;\n    } else {\n      while (++i < n) if (d3_numeric(a = +f.call(array, array[i], i))) s += a;\n    }\n    return s;\n  };\n  d3.mean = function(array, f) {\n    var s = 0, n = array.length, a, i = -1, j = n;\n    if (arguments.length === 1) {\n      while (++i < n) if (d3_numeric(a = d3_number(array[i]))) s += a; else --j;\n    } else {\n      while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) s += a; else --j;\n    }\n    if (j) return s / j;\n  };\n  d3.quantile = function(values, p) {\n    var H = (values.length - 1) * p + 1, h = Math.floor(H), v = +values[h - 1], e = H - h;\n    return e ? v + e * (values[h] - v) : v;\n  };\n  d3.median = function(array, f) {\n    var numbers = [], n = array.length, a, i = -1;\n    if (arguments.length === 1) {\n      while (++i < n) if (d3_numeric(a = d3_number(array[i]))) numbers.push(a);\n    } else {\n      while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) numbers.push(a);\n    }\n    if (numbers.length) return d3.quantile(numbers.sort(d3_ascending), .5);\n  };\n  d3.variance = function(array, f) {\n    var n = array.length, m = 0, a, d, s = 0, i = -1, j = 0;\n    if (arguments.length === 1) {\n      while (++i < n) {\n        if (d3_numeric(a = d3_number(array[i]))) {\n          d = a - m;\n          m += d / ++j;\n          s += d * (a - m);\n        }\n      }\n    } else {\n      while (++i < n) {\n        if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) {\n          d = a - m;\n          m += d / ++j;\n          s += d * (a - m);\n        }\n      }\n    }\n    if (j > 1) return s / (j - 1);\n  };\n  d3.deviation = function() {\n    var v = d3.variance.apply(this, arguments);\n    return v ? Math.sqrt(v) : v;\n  };\n  function d3_bisector(compare) {\n    return {\n      left: function(a, x, lo, hi) {\n        if (arguments.length < 3) lo = 0;\n        if (arguments.length < 4) hi = a.length;\n        while (lo < hi) {\n          var mid = lo + hi >>> 1;\n          if (compare(a[mid], x) < 0) lo = mid + 1; else hi = mid;\n        }\n        return lo;\n      },\n      right: function(a, x, lo, hi) {\n        if (arguments.length < 3) lo = 0;\n        if (arguments.length < 4) hi = a.length;\n        while (lo < hi) {\n          var mid = lo + hi >>> 1;\n          if (compare(a[mid], x) > 0) hi = mid; else lo = mid + 1;\n        }\n        return lo;\n      }\n    };\n  }\n  var d3_bisect = d3_bisector(d3_ascending);\n  d3.bisectLeft = d3_bisect.left;\n  d3.bisect = d3.bisectRight = d3_bisect.right;\n  d3.bisector = function(f) {\n    return d3_bisector(f.length === 1 ? function(d, x) {\n      return d3_ascending(f(d), x);\n    } : f);\n  };\n  d3.shuffle = function(array, i0, i1) {\n    if ((m = arguments.length) < 3) {\n      i1 = array.length;\n      if (m < 2) i0 = 0;\n    }\n    var m = i1 - i0, t, i;\n    while (m) {\n      i = Math.random() * m-- | 0;\n      t = array[m + i0], array[m + i0] = array[i + i0], array[i + i0] = t;\n    }\n    return array;\n  };\n  d3.permute = function(array, indexes) {\n    var i = indexes.length, permutes = new Array(i);\n    while (i--) permutes[i] = array[indexes[i]];\n    return permutes;\n  };\n  d3.pairs = function(array) {\n    var i = 0, n = array.length - 1, p0, p1 = array[0], pairs = new Array(n < 0 ? 0 : n);\n    while (i < n) pairs[i] = [ p0 = p1, p1 = array[++i] ];\n    return pairs;\n  };\n  d3.transpose = function(matrix) {\n    if (!(n = matrix.length)) return [];\n    for (var i = -1, m = d3.min(matrix, d3_transposeLength), transpose = new Array(m); ++i < m; ) {\n      for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n; ) {\n        row[j] = matrix[j][i];\n      }\n    }\n    return transpose;\n  };\n  function d3_transposeLength(d) {\n    return d.length;\n  }\n  d3.zip = function() {\n    return d3.transpose(arguments);\n  };\n  d3.keys = function(map) {\n    var keys = [];\n    for (var key in map) keys.push(key);\n    return keys;\n  };\n  d3.values = function(map) {\n    var values = [];\n    for (var key in map) values.push(map[key]);\n    return values;\n  };\n  d3.entries = function(map) {\n    var entries = [];\n    for (var key in map) entries.push({\n      key: key,\n      value: map[key]\n    });\n    return entries;\n  };\n  d3.merge = function(arrays) {\n    var n = arrays.length, m, i = -1, j = 0, merged, array;\n    while (++i < n) j += arrays[i].length;\n    merged = new Array(j);\n    while (--n >= 0) {\n      array = arrays[n];\n      m = array.length;\n      while (--m >= 0) {\n        merged[--j] = array[m];\n      }\n    }\n    return merged;\n  };\n  var abs = Math.abs;\n  d3.range = function(start, stop, step) {\n    if (arguments.length < 3) {\n      step = 1;\n      if (arguments.length < 2) {\n        stop = start;\n        start = 0;\n      }\n    }\n    if ((stop - start) / step === Infinity) throw new Error(\"infinite range\");\n    var range = [], k = d3_range_integerScale(abs(step)), i = -1, j;\n    start *= k, stop *= k, step *= k;\n    if (step < 0) while ((j = start + step * ++i) > stop) range.push(j / k); else while ((j = start + step * ++i) < stop) range.push(j / k);\n    return range;\n  };\n  function d3_range_integerScale(x) {\n    var k = 1;\n    while (x * k % 1) k *= 10;\n    return k;\n  }\n  function d3_class(ctor, properties) {\n    for (var key in properties) {\n      Object.defineProperty(ctor.prototype, key, {\n        value: properties[key],\n        enumerable: false\n      });\n    }\n  }\n  d3.map = function(object, f) {\n    var map = new d3_Map();\n    if (object instanceof d3_Map) {\n      object.forEach(function(key, value) {\n        map.set(key, value);\n      });\n    } else if (Array.isArray(object)) {\n      var i = -1, n = object.length, o;\n      if (arguments.length === 1) while (++i < n) map.set(i, object[i]); else while (++i < n) map.set(f.call(object, o = object[i], i), o);\n    } else {\n      for (var key in object) map.set(key, object[key]);\n    }\n    return map;\n  };\n  function d3_Map() {\n    this._ = Object.create(null);\n  }\n  var d3_map_proto = \"__proto__\", d3_map_zero = \"\\x00\";\n  d3_class(d3_Map, {\n    has: d3_map_has,\n    get: function(key) {\n      return this._[d3_map_escape(key)];\n    },\n    set: function(key, value) {\n      return this._[d3_map_escape(key)] = value;\n    },\n    remove: d3_map_remove,\n    keys: d3_map_keys,\n    values: function() {\n      var values = [];\n      for (var key in this._) values.push(this._[key]);\n      return values;\n    },\n    entries: function() {\n      var entries = [];\n      for (var key in this._) entries.push({\n        key: d3_map_unescape(key),\n        value: this._[key]\n      });\n      return entries;\n    },\n    size: d3_map_size,\n    empty: d3_map_empty,\n    forEach: function(f) {\n      for (var key in this._) f.call(this, d3_map_unescape(key), this._[key]);\n    }\n  });\n  function d3_map_escape(key) {\n    return (key += \"\") === d3_map_proto || key[0] === d3_map_zero ? d3_map_zero + key : key;\n  }\n  function d3_map_unescape(key) {\n    return (key += \"\")[0] === d3_map_zero ? key.slice(1) : key;\n  }\n  function d3_map_has(key) {\n    return d3_map_escape(key) in this._;\n  }\n  function d3_map_remove(key) {\n    return (key = d3_map_escape(key)) in this._ && delete this._[key];\n  }\n  function d3_map_keys() {\n    var keys = [];\n    for (var key in this._) keys.push(d3_map_unescape(key));\n    return keys;\n  }\n  function d3_map_size() {\n    var size = 0;\n    for (var key in this._) ++size;\n    return size;\n  }\n  function d3_map_empty() {\n    for (var key in this._) return false;\n    return true;\n  }\n  d3.nest = function() {\n    var nest = {}, keys = [], sortKeys = [], sortValues, rollup;\n    function map(mapType, array, depth) {\n      if (depth >= keys.length) return rollup ? rollup.call(nest, array) : sortValues ? array.sort(sortValues) : array;\n      var i = -1, n = array.length, key = keys[depth++], keyValue, object, setter, valuesByKey = new d3_Map(), values;\n      while (++i < n) {\n        if (values = valuesByKey.get(keyValue = key(object = array[i]))) {\n          values.push(object);\n        } else {\n          valuesByKey.set(keyValue, [ object ]);\n        }\n      }\n      if (mapType) {\n        object = mapType();\n        setter = function(keyValue, values) {\n          object.set(keyValue, map(mapType, values, depth));\n        };\n      } else {\n        object = {};\n        setter = function(keyValue, values) {\n          object[keyValue] = map(mapType, values, depth);\n        };\n      }\n      valuesByKey.forEach(setter);\n      return object;\n    }\n    function entries(map, depth) {\n      if (depth >= keys.length) return map;\n      var array = [], sortKey = sortKeys[depth++];\n      map.forEach(function(key, keyMap) {\n        array.push({\n          key: key,\n          values: entries(keyMap, depth)\n        });\n      });\n      return sortKey ? array.sort(function(a, b) {\n        return sortKey(a.key, b.key);\n      }) : array;\n    }\n    nest.map = function(array, mapType) {\n      return map(mapType, array, 0);\n    };\n    nest.entries = function(array) {\n      return entries(map(d3.map, array, 0), 0);\n    };\n    nest.key = function(d) {\n      keys.push(d);\n      return nest;\n    };\n    nest.sortKeys = function(order) {\n      sortKeys[keys.length - 1] = order;\n      return nest;\n    };\n    nest.sortValues = function(order) {\n      sortValues = order;\n      return nest;\n    };\n    nest.rollup = function(f) {\n      rollup = f;\n      return nest;\n    };\n    return nest;\n  };\n  d3.set = function(array) {\n    var set = new d3_Set();\n    if (array) for (var i = 0, n = array.length; i < n; ++i) set.add(array[i]);\n    return set;\n  };\n  function d3_Set() {\n    this._ = Object.create(null);\n  }\n  d3_class(d3_Set, {\n    has: d3_map_has,\n    add: function(key) {\n      this._[d3_map_escape(key += \"\")] = true;\n      return key;\n    },\n    remove: d3_map_remove,\n    values: d3_map_keys,\n    size: d3_map_size,\n    empty: d3_map_empty,\n    forEach: function(f) {\n      for (var key in this._) f.call(this, d3_map_unescape(key));\n    }\n  });\n  d3.behavior = {};\n  function d3_identity(d) {\n    return d;\n  }\n  d3.rebind = function(target, source) {\n    var i = 1, n = arguments.length, method;\n    while (++i < n) target[method = arguments[i]] = d3_rebind(target, source, source[method]);\n    return target;\n  };\n  function d3_rebind(target, source, method) {\n    return function() {\n      var value = method.apply(source, arguments);\n      return value === source ? target : value;\n    };\n  }\n  function d3_vendorSymbol(object, name) {\n    if (name in object) return name;\n    name = name.charAt(0).toUpperCase() + name.slice(1);\n    for (var i = 0, n = d3_vendorPrefixes.length; i < n; ++i) {\n      var prefixName = d3_vendorPrefixes[i] + name;\n      if (prefixName in object) return prefixName;\n    }\n  }\n  var d3_vendorPrefixes = [ \"webkit\", \"ms\", \"moz\", \"Moz\", \"o\", \"O\" ];\n  function d3_noop() {}\n  d3.dispatch = function() {\n    var dispatch = new d3_dispatch(), i = -1, n = arguments.length;\n    while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);\n    return dispatch;\n  };\n  function d3_dispatch() {}\n  d3_dispatch.prototype.on = function(type, listener) {\n    var i = type.indexOf(\".\"), name = \"\";\n    if (i >= 0) {\n      name = type.slice(i + 1);\n      type = type.slice(0, i);\n    }\n    if (type) return arguments.length < 2 ? this[type].on(name) : this[type].on(name, listener);\n    if (arguments.length === 2) {\n      if (listener == null) for (type in this) {\n        if (this.hasOwnProperty(type)) this[type].on(name, null);\n      }\n      return this;\n    }\n  };\n  function d3_dispatch_event(dispatch) {\n    var listeners = [], listenerByName = new d3_Map();\n    function event() {\n      var z = listeners, i = -1, n = z.length, l;\n      while (++i < n) if (l = z[i].on) l.apply(this, arguments);\n      return dispatch;\n    }\n    event.on = function(name, listener) {\n      var l = listenerByName.get(name), i;\n      if (arguments.length < 2) return l && l.on;\n      if (l) {\n        l.on = null;\n        listeners = listeners.slice(0, i = listeners.indexOf(l)).concat(listeners.slice(i + 1));\n        listenerByName.remove(name);\n      }\n      if (listener) listeners.push(listenerByName.set(name, {\n        on: listener\n      }));\n      return dispatch;\n    };\n    return event;\n  }\n  d3.event = null;\n  function d3_eventPreventDefault() {\n    d3.event.preventDefault();\n  }\n  function d3_eventSource() {\n    var e = d3.event, s;\n    while (s = e.sourceEvent) e = s;\n    return e;\n  }\n  function d3_eventDispatch(target) {\n    var dispatch = new d3_dispatch(), i = 0, n = arguments.length;\n    while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);\n    dispatch.of = function(thiz, argumentz) {\n      return function(e1) {\n        try {\n          var e0 = e1.sourceEvent = d3.event;\n          e1.target = target;\n          d3.event = e1;\n          dispatch[e1.type].apply(thiz, argumentz);\n        } finally {\n          d3.event = e0;\n        }\n      };\n    };\n    return dispatch;\n  }\n  d3.requote = function(s) {\n    return s.replace(d3_requote_re, \"\\\\$&\");\n  };\n  var d3_requote_re = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n  var d3_subclass = {}.__proto__ ? function(object, prototype) {\n    object.__proto__ = prototype;\n  } : function(object, prototype) {\n    for (var property in prototype) object[property] = prototype[property];\n  };\n  function d3_selection(groups) {\n    d3_subclass(groups, d3_selectionPrototype);\n    return groups;\n  }\n  var d3_select = function(s, n) {\n    return n.querySelector(s);\n  }, d3_selectAll = function(s, n) {\n    return n.querySelectorAll(s);\n  }, d3_selectMatches = function(n, s) {\n    var d3_selectMatcher = n.matches || n[d3_vendorSymbol(n, \"matchesSelector\")];\n    d3_selectMatches = function(n, s) {\n      return d3_selectMatcher.call(n, s);\n    };\n    return d3_selectMatches(n, s);\n  };\n  if (typeof Sizzle === \"function\") {\n    d3_select = function(s, n) {\n      return Sizzle(s, n)[0] || null;\n    };\n    d3_selectAll = Sizzle;\n    d3_selectMatches = Sizzle.matchesSelector;\n  }\n  d3.selection = function() {\n    return d3.select(d3_document.documentElement);\n  };\n  var d3_selectionPrototype = d3.selection.prototype = [];\n  d3_selectionPrototype.select = function(selector) {\n    var subgroups = [], subgroup, subnode, group, node;\n    selector = d3_selection_selector(selector);\n    for (var j = -1, m = this.length; ++j < m; ) {\n      subgroups.push(subgroup = []);\n      subgroup.parentNode = (group = this[j]).parentNode;\n      for (var i = -1, n = group.length; ++i < n; ) {\n        if (node = group[i]) {\n          subgroup.push(subnode = selector.call(node, node.__data__, i, j));\n          if (subnode && \"__data__\" in node) subnode.__data__ = node.__data__;\n        } else {\n          subgroup.push(null);\n        }\n      }\n    }\n    return d3_selection(subgroups);\n  };\n  function d3_selection_selector(selector) {\n    return typeof selector === \"function\" ? selector : function() {\n      return d3_select(selector, this);\n    };\n  }\n  d3_selectionPrototype.selectAll = function(selector) {\n    var subgroups = [], subgroup, node;\n    selector = d3_selection_selectorAll(selector);\n    for (var j = -1, m = this.length; ++j < m; ) {\n      for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n        if (node = group[i]) {\n          subgroups.push(subgroup = d3_array(selector.call(node, node.__data__, i, j)));\n          subgroup.parentNode = node;\n        }\n      }\n    }\n    return d3_selection(subgroups);\n  };\n  function d3_selection_selectorAll(selector) {\n    return typeof selector === \"function\" ? selector : function() {\n      return d3_selectAll(selector, this);\n    };\n  }\n  var d3_nsXhtml = \"http://www.w3.org/1999/xhtml\";\n  var d3_nsPrefix = {\n    svg: \"http://www.w3.org/2000/svg\",\n    xhtml: d3_nsXhtml,\n    xlink: \"http://www.w3.org/1999/xlink\",\n    xml: \"http://www.w3.org/XML/1998/namespace\",\n    xmlns: \"http://www.w3.org/2000/xmlns/\"\n  };\n  d3.ns = {\n    prefix: d3_nsPrefix,\n    qualify: function(name) {\n      var i = name.indexOf(\":\"), prefix = name;\n      if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n      return d3_nsPrefix.hasOwnProperty(prefix) ? {\n        space: d3_nsPrefix[prefix],\n        local: name\n      } : name;\n    }\n  };\n  d3_selectionPrototype.attr = function(name, value) {\n    if (arguments.length < 2) {\n      if (typeof name === \"string\") {\n        var node = this.node();\n        name = d3.ns.qualify(name);\n        return name.local ? node.getAttributeNS(name.space, name.local) : node.getAttribute(name);\n      }\n      for (value in name) this.each(d3_selection_attr(value, name[value]));\n      return this;\n    }\n    return this.each(d3_selection_attr(name, value));\n  };\n  function d3_selection_attr(name, value) {\n    name = d3.ns.qualify(name);\n    function attrNull() {\n      this.removeAttribute(name);\n    }\n    function attrNullNS() {\n      this.removeAttributeNS(name.space, name.local);\n    }\n    function attrConstant() {\n      this.setAttribute(name, value);\n    }\n    function attrConstantNS() {\n      this.setAttributeNS(name.space, name.local, value);\n    }\n    function attrFunction() {\n      var x = value.apply(this, arguments);\n      if (x == null) this.removeAttribute(name); else this.setAttribute(name, x);\n    }\n    function attrFunctionNS() {\n      var x = value.apply(this, arguments);\n      if (x == null) this.removeAttributeNS(name.space, name.local); else this.setAttributeNS(name.space, name.local, x);\n    }\n    return value == null ? name.local ? attrNullNS : attrNull : typeof value === \"function\" ? name.local ? attrFunctionNS : attrFunction : name.local ? attrConstantNS : attrConstant;\n  }\n  function d3_collapse(s) {\n    return s.trim().replace(/\\s+/g, \" \");\n  }\n  d3_selectionPrototype.classed = function(name, value) {\n    if (arguments.length < 2) {\n      if (typeof name === \"string\") {\n        var node = this.node(), n = (name = d3_selection_classes(name)).length, i = -1;\n        if (value = node.classList) {\n          while (++i < n) if (!value.contains(name[i])) return false;\n        } else {\n          value = node.getAttribute(\"class\");\n          while (++i < n) if (!d3_selection_classedRe(name[i]).test(value)) return false;\n        }\n        return true;\n      }\n      for (value in name) this.each(d3_selection_classed(value, name[value]));\n      return this;\n    }\n    return this.each(d3_selection_classed(name, value));\n  };\n  function d3_selection_classedRe(name) {\n    return new RegExp(\"(?:^|\\\\s+)\" + d3.requote(name) + \"(?:\\\\s+|$)\", \"g\");\n  }\n  function d3_selection_classes(name) {\n    return (name + \"\").trim().split(/^|\\s+/);\n  }\n  function d3_selection_classed(name, value) {\n    name = d3_selection_classes(name).map(d3_selection_classedName);\n    var n = name.length;\n    function classedConstant() {\n      var i = -1;\n      while (++i < n) name[i](this, value);\n    }\n    function classedFunction() {\n      var i = -1, x = value.apply(this, arguments);\n      while (++i < n) name[i](this, x);\n    }\n    return typeof value === \"function\" ? classedFunction : classedConstant;\n  }\n  function d3_selection_classedName(name) {\n    var re = d3_selection_classedRe(name);\n    return function(node, value) {\n      if (c = node.classList) return value ? c.add(name) : c.remove(name);\n      var c = node.getAttribute(\"class\") || \"\";\n      if (value) {\n        re.lastIndex = 0;\n        if (!re.test(c)) node.setAttribute(\"class\", d3_collapse(c + \" \" + name));\n      } else {\n        node.setAttribute(\"class\", d3_collapse(c.replace(re, \" \")));\n      }\n    };\n  }\n  d3_selectionPrototype.style = function(name, value, priority) {\n    var n = arguments.length;\n    if (n < 3) {\n      if (typeof name !== \"string\") {\n        if (n < 2) value = \"\";\n        for (priority in name) this.each(d3_selection_style(priority, name[priority], value));\n        return this;\n      }\n      if (n < 2) {\n        var node = this.node();\n        return d3_window(node).getComputedStyle(node, null).getPropertyValue(name);\n      }\n      priority = \"\";\n    }\n    return this.each(d3_selection_style(name, value, priority));\n  };\n  function d3_selection_style(name, value, priority) {\n    function styleNull() {\n      this.style.removeProperty(name);\n    }\n    function styleConstant() {\n      this.style.setProperty(name, value, priority);\n    }\n    function styleFunction() {\n      var x = value.apply(this, arguments);\n      if (x == null) this.style.removeProperty(name); else this.style.setProperty(name, x, priority);\n    }\n    return value == null ? styleNull : typeof value === \"function\" ? styleFunction : styleConstant;\n  }\n  d3_selectionPrototype.property = function(name, value) {\n    if (arguments.length < 2) {\n      if (typeof name === \"string\") return this.node()[name];\n      for (value in name) this.each(d3_selection_property(value, name[value]));\n      return this;\n    }\n    return this.each(d3_selection_property(name, value));\n  };\n  function d3_selection_property(name, value) {\n    function propertyNull() {\n      delete this[name];\n    }\n    function propertyConstant() {\n      this[name] = value;\n    }\n    function propertyFunction() {\n      var x = value.apply(this, arguments);\n      if (x == null) delete this[name]; else this[name] = x;\n    }\n    return value == null ? propertyNull : typeof value === \"function\" ? propertyFunction : propertyConstant;\n  }\n  d3_selectionPrototype.text = function(value) {\n    return arguments.length ? this.each(typeof value === \"function\" ? function() {\n      var v = value.apply(this, arguments);\n      this.textContent = v == null ? \"\" : v;\n    } : value == null ? function() {\n      this.textContent = \"\";\n    } : function() {\n      this.textContent = value;\n    }) : this.node().textContent;\n  };\n  d3_selectionPrototype.html = function(value) {\n    return arguments.length ? this.each(typeof value === \"function\" ? function() {\n      var v = value.apply(this, arguments);\n      this.innerHTML = v == null ? \"\" : v;\n    } : value == null ? function() {\n      this.innerHTML = \"\";\n    } : function() {\n      this.innerHTML = value;\n    }) : this.node().innerHTML;\n  };\n  d3_selectionPrototype.append = function(name) {\n    name = d3_selection_creator(name);\n    return this.select(function() {\n      return this.appendChild(name.apply(this, arguments));\n    });\n  };\n  function d3_selection_creator(name) {\n    function create() {\n      var document = this.ownerDocument, namespace = this.namespaceURI;\n      return namespace === d3_nsXhtml && document.documentElement.namespaceURI === d3_nsXhtml ? document.createElement(name) : document.createElementNS(namespace, name);\n    }\n    function createNS() {\n      return this.ownerDocument.createElementNS(name.space, name.local);\n    }\n    return typeof name === \"function\" ? name : (name = d3.ns.qualify(name)).local ? createNS : create;\n  }\n  d3_selectionPrototype.insert = function(name, before) {\n    name = d3_selection_creator(name);\n    before = d3_selection_selector(before);\n    return this.select(function() {\n      return this.insertBefore(name.apply(this, arguments), before.apply(this, arguments) || null);\n    });\n  };\n  d3_selectionPrototype.remove = function() {\n    return this.each(d3_selectionRemove);\n  };\n  function d3_selectionRemove() {\n    var parent = this.parentNode;\n    if (parent) parent.removeChild(this);\n  }\n  d3_selectionPrototype.data = function(value, key) {\n    var i = -1, n = this.length, group, node;\n    if (!arguments.length) {\n      value = new Array(n = (group = this[0]).length);\n      while (++i < n) {\n        if (node = group[i]) {\n          value[i] = node.__data__;\n        }\n      }\n      return value;\n    }\n    function bind(group, groupData) {\n      var i, n = group.length, m = groupData.length, n0 = Math.min(n, m), updateNodes = new Array(m), enterNodes = new Array(m), exitNodes = new Array(n), node, nodeData;\n      if (key) {\n        var nodeByKeyValue = new d3_Map(), keyValues = new Array(n), keyValue;\n        for (i = -1; ++i < n; ) {\n          if (node = group[i]) {\n            if (nodeByKeyValue.has(keyValue = key.call(node, node.__data__, i))) {\n              exitNodes[i] = node;\n            } else {\n              nodeByKeyValue.set(keyValue, node);\n            }\n            keyValues[i] = keyValue;\n          }\n        }\n        for (i = -1; ++i < m; ) {\n          if (!(node = nodeByKeyValue.get(keyValue = key.call(groupData, nodeData = groupData[i], i)))) {\n            enterNodes[i] = d3_selection_dataNode(nodeData);\n          } else if (node !== true) {\n            updateNodes[i] = node;\n            node.__data__ = nodeData;\n          }\n          nodeByKeyValue.set(keyValue, true);\n        }\n        for (i = -1; ++i < n; ) {\n          if (i in keyValues && nodeByKeyValue.get(keyValues[i]) !== true) {\n            exitNodes[i] = group[i];\n          }\n        }\n      } else {\n        for (i = -1; ++i < n0; ) {\n          node = group[i];\n          nodeData = groupData[i];\n          if (node) {\n            node.__data__ = nodeData;\n            updateNodes[i] = node;\n          } else {\n            enterNodes[i] = d3_selection_dataNode(nodeData);\n          }\n        }\n        for (;i < m; ++i) {\n          enterNodes[i] = d3_selection_dataNode(groupData[i]);\n        }\n        for (;i < n; ++i) {\n          exitNodes[i] = group[i];\n        }\n      }\n      enterNodes.update = updateNodes;\n      enterNodes.parentNode = updateNodes.parentNode = exitNodes.parentNode = group.parentNode;\n      enter.push(enterNodes);\n      update.push(updateNodes);\n      exit.push(exitNodes);\n    }\n    var enter = d3_selection_enter([]), update = d3_selection([]), exit = d3_selection([]);\n    if (typeof value === \"function\") {\n      while (++i < n) {\n        bind(group = this[i], value.call(group, group.parentNode.__data__, i));\n      }\n    } else {\n      while (++i < n) {\n        bind(group = this[i], value);\n      }\n    }\n    update.enter = function() {\n      return enter;\n    };\n    update.exit = function() {\n      return exit;\n    };\n    return update;\n  };\n  function d3_selection_dataNode(data) {\n    return {\n      __data__: data\n    };\n  }\n  d3_selectionPrototype.datum = function(value) {\n    return arguments.length ? this.property(\"__data__\", value) : this.property(\"__data__\");\n  };\n  d3_selectionPrototype.filter = function(filter) {\n    var subgroups = [], subgroup, group, node;\n    if (typeof filter !== \"function\") filter = d3_selection_filter(filter);\n    for (var j = 0, m = this.length; j < m; j++) {\n      subgroups.push(subgroup = []);\n      subgroup.parentNode = (group = this[j]).parentNode;\n      for (var i = 0, n = group.length; i < n; i++) {\n        if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {\n          subgroup.push(node);\n        }\n      }\n    }\n    return d3_selection(subgroups);\n  };\n  function d3_selection_filter(selector) {\n    return function() {\n      return d3_selectMatches(this, selector);\n    };\n  }\n  d3_selectionPrototype.order = function() {\n    for (var j = -1, m = this.length; ++j < m; ) {\n      for (var group = this[j], i = group.length - 1, next = group[i], node; --i >= 0; ) {\n        if (node = group[i]) {\n          if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next);\n          next = node;\n        }\n      }\n    }\n    return this;\n  };\n  d3_selectionPrototype.sort = function(comparator) {\n    comparator = d3_selection_sortComparator.apply(this, arguments);\n    for (var j = -1, m = this.length; ++j < m; ) this[j].sort(comparator);\n    return this.order();\n  };\n  function d3_selection_sortComparator(comparator) {\n    if (!arguments.length) comparator = d3_ascending;\n    return function(a, b) {\n      return a && b ? comparator(a.__data__, b.__data__) : !a - !b;\n    };\n  }\n  d3_selectionPrototype.each = function(callback) {\n    return d3_selection_each(this, function(node, i, j) {\n      callback.call(node, node.__data__, i, j);\n    });\n  };\n  function d3_selection_each(groups, callback) {\n    for (var j = 0, m = groups.length; j < m; j++) {\n      for (var group = groups[j], i = 0, n = group.length, node; i < n; i++) {\n        if (node = group[i]) callback(node, i, j);\n      }\n    }\n    return groups;\n  }\n  d3_selectionPrototype.call = function(callback) {\n    var args = d3_array(arguments);\n    callback.apply(args[0] = this, args);\n    return this;\n  };\n  d3_selectionPrototype.empty = function() {\n    return !this.node();\n  };\n  d3_selectionPrototype.node = function() {\n    for (var j = 0, m = this.length; j < m; j++) {\n      for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n        var node = group[i];\n        if (node) return node;\n      }\n    }\n    return null;\n  };\n  d3_selectionPrototype.size = function() {\n    var n = 0;\n    d3_selection_each(this, function() {\n      ++n;\n    });\n    return n;\n  };\n  function d3_selection_enter(selection) {\n    d3_subclass(selection, d3_selection_enterPrototype);\n    return selection;\n  }\n  var d3_selection_enterPrototype = [];\n  d3.selection.enter = d3_selection_enter;\n  d3.selection.enter.prototype = d3_selection_enterPrototype;\n  d3_selection_enterPrototype.append = d3_selectionPrototype.append;\n  d3_selection_enterPrototype.empty = d3_selectionPrototype.empty;\n  d3_selection_enterPrototype.node = d3_selectionPrototype.node;\n  d3_selection_enterPrototype.call = d3_selectionPrototype.call;\n  d3_selection_enterPrototype.size = d3_selectionPrototype.size;\n  d3_selection_enterPrototype.select = function(selector) {\n    var subgroups = [], subgroup, subnode, upgroup, group, node;\n    for (var j = -1, m = this.length; ++j < m; ) {\n      upgroup = (group = this[j]).update;\n      subgroups.push(subgroup = []);\n      subgroup.parentNode = group.parentNode;\n      for (var i = -1, n = group.length; ++i < n; ) {\n        if (node = group[i]) {\n          subgroup.push(upgroup[i] = subnode = selector.call(group.parentNode, node.__data__, i, j));\n          subnode.__data__ = node.__data__;\n        } else {\n          subgroup.push(null);\n        }\n      }\n    }\n    return d3_selection(subgroups);\n  };\n  d3_selection_enterPrototype.insert = function(name, before) {\n    if (arguments.length < 2) before = d3_selection_enterInsertBefore(this);\n    return d3_selectionPrototype.insert.call(this, name, before);\n  };\n  function d3_selection_enterInsertBefore(enter) {\n    var i0, j0;\n    return function(d, i, j) {\n      var group = enter[j].update, n = group.length, node;\n      if (j != j0) j0 = j, i0 = 0;\n      if (i >= i0) i0 = i + 1;\n      while (!(node = group[i0]) && ++i0 < n) ;\n      return node;\n    };\n  }\n  d3.select = function(node) {\n    var group;\n    if (typeof node === \"string\") {\n      group = [ d3_select(node, d3_document) ];\n      group.parentNode = d3_document.documentElement;\n    } else {\n      group = [ node ];\n      group.parentNode = d3_documentElement(node);\n    }\n    return d3_selection([ group ]);\n  };\n  d3.selectAll = function(nodes) {\n    var group;\n    if (typeof nodes === \"string\") {\n      group = d3_array(d3_selectAll(nodes, d3_document));\n      group.parentNode = d3_document.documentElement;\n    } else {\n      group = d3_array(nodes);\n      group.parentNode = null;\n    }\n    return d3_selection([ group ]);\n  };\n  d3_selectionPrototype.on = function(type, listener, capture) {\n    var n = arguments.length;\n    if (n < 3) {\n      if (typeof type !== \"string\") {\n        if (n < 2) listener = false;\n        for (capture in type) this.each(d3_selection_on(capture, type[capture], listener));\n        return this;\n      }\n      if (n < 2) return (n = this.node()[\"__on\" + type]) && n._;\n      capture = false;\n    }\n    return this.each(d3_selection_on(type, listener, capture));\n  };\n  function d3_selection_on(type, listener, capture) {\n    var name = \"__on\" + type, i = type.indexOf(\".\"), wrap = d3_selection_onListener;\n    if (i > 0) type = type.slice(0, i);\n    var filter = d3_selection_onFilters.get(type);\n    if (filter) type = filter, wrap = d3_selection_onFilter;\n    function onRemove() {\n      var l = this[name];\n      if (l) {\n        this.removeEventListener(type, l, l.$);\n        delete this[name];\n      }\n    }\n    function onAdd() {\n      var l = wrap(listener, d3_array(arguments));\n      onRemove.call(this);\n      this.addEventListener(type, this[name] = l, l.$ = capture);\n      l._ = listener;\n    }\n    function removeAll() {\n      var re = new RegExp(\"^__on([^.]+)\" + d3.requote(type) + \"$\"), match;\n      for (var name in this) {\n        if (match = name.match(re)) {\n          var l = this[name];\n          this.removeEventListener(match[1], l, l.$);\n          delete this[name];\n        }\n      }\n    }\n    return i ? listener ? onAdd : onRemove : listener ? d3_noop : removeAll;\n  }\n  var d3_selection_onFilters = d3.map({\n    mouseenter: \"mouseover\",\n    mouseleave: \"mouseout\"\n  });\n  if (d3_document) {\n    d3_selection_onFilters.forEach(function(k) {\n      if (\"on\" + k in d3_document) d3_selection_onFilters.remove(k);\n    });\n  }\n  function d3_selection_onListener(listener, argumentz) {\n    return function(e) {\n      var o = d3.event;\n      d3.event = e;\n      argumentz[0] = this.__data__;\n      try {\n        listener.apply(this, argumentz);\n      } finally {\n        d3.event = o;\n      }\n    };\n  }\n  function d3_selection_onFilter(listener, argumentz) {\n    var l = d3_selection_onListener(listener, argumentz);\n    return function(e) {\n      var target = this, related = e.relatedTarget;\n      if (!related || related !== target && !(related.compareDocumentPosition(target) & 8)) {\n        l.call(target, e);\n      }\n    };\n  }\n  var d3_event_dragSelect, d3_event_dragId = 0;\n  function d3_event_dragSuppress(node) {\n    var name = \".dragsuppress-\" + ++d3_event_dragId, click = \"click\" + name, w = d3.select(d3_window(node)).on(\"touchmove\" + name, d3_eventPreventDefault).on(\"dragstart\" + name, d3_eventPreventDefault).on(\"selectstart\" + name, d3_eventPreventDefault);\n    if (d3_event_dragSelect == null) {\n      d3_event_dragSelect = \"onselectstart\" in node ? false : d3_vendorSymbol(node.style, \"userSelect\");\n    }\n    if (d3_event_dragSelect) {\n      var style = d3_documentElement(node).style, select = style[d3_event_dragSelect];\n      style[d3_event_dragSelect] = \"none\";\n    }\n    return function(suppressClick) {\n      w.on(name, null);\n      if (d3_event_dragSelect) style[d3_event_dragSelect] = select;\n      if (suppressClick) {\n        var off = function() {\n          w.on(click, null);\n        };\n        w.on(click, function() {\n          d3_eventPreventDefault();\n          off();\n        }, true);\n        setTimeout(off, 0);\n      }\n    };\n  }\n  d3.mouse = function(container) {\n    return d3_mousePoint(container, d3_eventSource());\n  };\n  var d3_mouse_bug44083 = this.navigator && /WebKit/.test(this.navigator.userAgent) ? -1 : 0;\n  function d3_mousePoint(container, e) {\n    if (e.changedTouches) e = e.changedTouches[0];\n    var svg = container.ownerSVGElement || container;\n    if (svg.createSVGPoint) {\n      var point = svg.createSVGPoint();\n      if (d3_mouse_bug44083 < 0) {\n        var window = d3_window(container);\n        if (window.scrollX || window.scrollY) {\n          svg = d3.select(\"body\").append(\"svg\").style({\n            position: \"absolute\",\n            top: 0,\n            left: 0,\n            margin: 0,\n            padding: 0,\n            border: \"none\"\n          }, \"important\");\n          var ctm = svg[0][0].getScreenCTM();\n          d3_mouse_bug44083 = !(ctm.f || ctm.e);\n          svg.remove();\n        }\n      }\n      if (d3_mouse_bug44083) point.x = e.pageX, point.y = e.pageY; else point.x = e.clientX, \n      point.y = e.clientY;\n      point = point.matrixTransform(container.getScreenCTM().inverse());\n      return [ point.x, point.y ];\n    }\n    var rect = container.getBoundingClientRect();\n    return [ e.clientX - rect.left - container.clientLeft, e.clientY - rect.top - container.clientTop ];\n  }\n  d3.touch = function(container, touches, identifier) {\n    if (arguments.length < 3) identifier = touches, touches = d3_eventSource().changedTouches;\n    if (touches) for (var i = 0, n = touches.length, touch; i < n; ++i) {\n      if ((touch = touches[i]).identifier === identifier) {\n        return d3_mousePoint(container, touch);\n      }\n    }\n  };\n  d3.behavior.drag = function() {\n    var event = d3_eventDispatch(drag, \"drag\", \"dragstart\", \"dragend\"), origin = null, mousedown = dragstart(d3_noop, d3.mouse, d3_window, \"mousemove\", \"mouseup\"), touchstart = dragstart(d3_behavior_dragTouchId, d3.touch, d3_identity, \"touchmove\", \"touchend\");\n    function drag() {\n      this.on(\"mousedown.drag\", mousedown).on(\"touchstart.drag\", touchstart);\n    }\n    function dragstart(id, position, subject, move, end) {\n      return function() {\n        var that = this, target = d3.event.target.correspondingElement || d3.event.target, parent = that.parentNode, dispatch = event.of(that, arguments), dragged = 0, dragId = id(), dragName = \".drag\" + (dragId == null ? \"\" : \"-\" + dragId), dragOffset, dragSubject = d3.select(subject(target)).on(move + dragName, moved).on(end + dragName, ended), dragRestore = d3_event_dragSuppress(target), position0 = position(parent, dragId);\n        if (origin) {\n          dragOffset = origin.apply(that, arguments);\n          dragOffset = [ dragOffset.x - position0[0], dragOffset.y - position0[1] ];\n        } else {\n          dragOffset = [ 0, 0 ];\n        }\n        dispatch({\n          type: \"dragstart\"\n        });\n        function moved() {\n          var position1 = position(parent, dragId), dx, dy;\n          if (!position1) return;\n          dx = position1[0] - position0[0];\n          dy = position1[1] - position0[1];\n          dragged |= dx | dy;\n          position0 = position1;\n          dispatch({\n            type: \"drag\",\n            x: position1[0] + dragOffset[0],\n            y: position1[1] + dragOffset[1],\n            dx: dx,\n            dy: dy\n          });\n        }\n        function ended() {\n          if (!position(parent, dragId)) return;\n          dragSubject.on(move + dragName, null).on(end + dragName, null);\n          dragRestore(dragged);\n          dispatch({\n            type: \"dragend\"\n          });\n        }\n      };\n    }\n    drag.origin = function(x) {\n      if (!arguments.length) return origin;\n      origin = x;\n      return drag;\n    };\n    return d3.rebind(drag, event, \"on\");\n  };\n  function d3_behavior_dragTouchId() {\n    return d3.event.changedTouches[0].identifier;\n  }\n  d3.touches = function(container, touches) {\n    if (arguments.length < 2) touches = d3_eventSource().touches;\n    return touches ? d3_array(touches).map(function(touch) {\n      var point = d3_mousePoint(container, touch);\n      point.identifier = touch.identifier;\n      return point;\n    }) : [];\n  };\n  var ε = 1e-6, ε2 = ε * ε, π = Math.PI, τ = 2 * π, τε = τ - ε, halfπ = π / 2, d3_radians = π / 180, d3_degrees = 180 / π;\n  function d3_sgn(x) {\n    return x > 0 ? 1 : x < 0 ? -1 : 0;\n  }\n  function d3_cross2d(a, b, c) {\n    return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n  }\n  function d3_acos(x) {\n    return x > 1 ? 0 : x < -1 ? π : Math.acos(x);\n  }\n  function d3_asin(x) {\n    return x > 1 ? halfπ : x < -1 ? -halfπ : Math.asin(x);\n  }\n  function d3_sinh(x) {\n    return ((x = Math.exp(x)) - 1 / x) / 2;\n  }\n  function d3_cosh(x) {\n    return ((x = Math.exp(x)) + 1 / x) / 2;\n  }\n  function d3_tanh(x) {\n    return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n  }\n  function d3_haversin(x) {\n    return (x = Math.sin(x / 2)) * x;\n  }\n  var ρ = Math.SQRT2, ρ2 = 2, ρ4 = 4;\n  d3.interpolateZoom = function(p0, p1) {\n    var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], ux1 = p1[0], uy1 = p1[1], w1 = p1[2], dx = ux1 - ux0, dy = uy1 - uy0, d2 = dx * dx + dy * dy, i, S;\n    if (d2 < ε2) {\n      S = Math.log(w1 / w0) / ρ;\n      i = function(t) {\n        return [ ux0 + t * dx, uy0 + t * dy, w0 * Math.exp(ρ * t * S) ];\n      };\n    } else {\n      var d1 = Math.sqrt(d2), b0 = (w1 * w1 - w0 * w0 + ρ4 * d2) / (2 * w0 * ρ2 * d1), b1 = (w1 * w1 - w0 * w0 - ρ4 * d2) / (2 * w1 * ρ2 * d1), r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n      S = (r1 - r0) / ρ;\n      i = function(t) {\n        var s = t * S, coshr0 = d3_cosh(r0), u = w0 / (ρ2 * d1) * (coshr0 * d3_tanh(ρ * s + r0) - d3_sinh(r0));\n        return [ ux0 + u * dx, uy0 + u * dy, w0 * coshr0 / d3_cosh(ρ * s + r0) ];\n      };\n    }\n    i.duration = S * 1e3;\n    return i;\n  };\n  d3.behavior.zoom = function() {\n    var view = {\n      x: 0,\n      y: 0,\n      k: 1\n    }, translate0, center0, center, size = [ 960, 500 ], scaleExtent = d3_behavior_zoomInfinity, duration = 250, zooming = 0, mousedown = \"mousedown.zoom\", mousemove = \"mousemove.zoom\", mouseup = \"mouseup.zoom\", mousewheelTimer, touchstart = \"touchstart.zoom\", touchtime, event = d3_eventDispatch(zoom, \"zoomstart\", \"zoom\", \"zoomend\"), x0, x1, y0, y1;\n    if (!d3_behavior_zoomWheel) {\n      d3_behavior_zoomWheel = \"onwheel\" in d3_document ? (d3_behavior_zoomDelta = function() {\n        return -d3.event.deltaY * (d3.event.deltaMode ? 120 : 1);\n      }, \"wheel\") : \"onmousewheel\" in d3_document ? (d3_behavior_zoomDelta = function() {\n        return d3.event.wheelDelta;\n      }, \"mousewheel\") : (d3_behavior_zoomDelta = function() {\n        return -d3.event.detail;\n      }, \"MozMousePixelScroll\");\n    }\n    function zoom(g) {\n      g.on(mousedown, mousedowned).on(d3_behavior_zoomWheel + \".zoom\", mousewheeled).on(\"dblclick.zoom\", dblclicked).on(touchstart, touchstarted);\n    }\n    zoom.event = function(g) {\n      g.each(function() {\n        var dispatch = event.of(this, arguments), view1 = view;\n        if (d3_transitionInheritId) {\n          d3.select(this).transition().each(\"start.zoom\", function() {\n            view = this.__chart__ || {\n              x: 0,\n              y: 0,\n              k: 1\n            };\n            zoomstarted(dispatch);\n          }).tween(\"zoom:zoom\", function() {\n            var dx = size[0], dy = size[1], cx = center0 ? center0[0] : dx / 2, cy = center0 ? center0[1] : dy / 2, i = d3.interpolateZoom([ (cx - view.x) / view.k, (cy - view.y) / view.k, dx / view.k ], [ (cx - view1.x) / view1.k, (cy - view1.y) / view1.k, dx / view1.k ]);\n            return function(t) {\n              var l = i(t), k = dx / l[2];\n              this.__chart__ = view = {\n                x: cx - l[0] * k,\n                y: cy - l[1] * k,\n                k: k\n              };\n              zoomed(dispatch);\n            };\n          }).each(\"interrupt.zoom\", function() {\n            zoomended(dispatch);\n          }).each(\"end.zoom\", function() {\n            zoomended(dispatch);\n          });\n        } else {\n          this.__chart__ = view;\n          zoomstarted(dispatch);\n          zoomed(dispatch);\n          zoomended(dispatch);\n        }\n      });\n    };\n    zoom.translate = function(_) {\n      if (!arguments.length) return [ view.x, view.y ];\n      view = {\n        x: +_[0],\n        y: +_[1],\n        k: view.k\n      };\n      rescale();\n      return zoom;\n    };\n    zoom.scale = function(_) {\n      if (!arguments.length) return view.k;\n      view = {\n        x: view.x,\n        y: view.y,\n        k: null\n      };\n      scaleTo(+_);\n      rescale();\n      return zoom;\n    };\n    zoom.scaleExtent = function(_) {\n      if (!arguments.length) return scaleExtent;\n      scaleExtent = _ == null ? d3_behavior_zoomInfinity : [ +_[0], +_[1] ];\n      return zoom;\n    };\n    zoom.center = function(_) {\n      if (!arguments.length) return center;\n      center = _ && [ +_[0], +_[1] ];\n      return zoom;\n    };\n    zoom.size = function(_) {\n      if (!arguments.length) return size;\n      size = _ && [ +_[0], +_[1] ];\n      return zoom;\n    };\n    zoom.duration = function(_) {\n      if (!arguments.length) return duration;\n      duration = +_;\n      return zoom;\n    };\n    zoom.x = function(z) {\n      if (!arguments.length) return x1;\n      x1 = z;\n      x0 = z.copy();\n      view = {\n        x: 0,\n        y: 0,\n        k: 1\n      };\n      return zoom;\n    };\n    zoom.y = function(z) {\n      if (!arguments.length) return y1;\n      y1 = z;\n      y0 = z.copy();\n      view = {\n        x: 0,\n        y: 0,\n        k: 1\n      };\n      return zoom;\n    };\n    function location(p) {\n      return [ (p[0] - view.x) / view.k, (p[1] - view.y) / view.k ];\n    }\n    function point(l) {\n      return [ l[0] * view.k + view.x, l[1] * view.k + view.y ];\n    }\n    function scaleTo(s) {\n      view.k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], s));\n    }\n    function translateTo(p, l) {\n      l = point(l);\n      view.x += p[0] - l[0];\n      view.y += p[1] - l[1];\n    }\n    function zoomTo(that, p, l, k) {\n      that.__chart__ = {\n        x: view.x,\n        y: view.y,\n        k: view.k\n      };\n      scaleTo(Math.pow(2, k));\n      translateTo(center0 = p, l);\n      that = d3.select(that);\n      if (duration > 0) that = that.transition().duration(duration);\n      that.call(zoom.event);\n    }\n    function rescale() {\n      if (x1) x1.domain(x0.range().map(function(x) {\n        return (x - view.x) / view.k;\n      }).map(x0.invert));\n      if (y1) y1.domain(y0.range().map(function(y) {\n        return (y - view.y) / view.k;\n      }).map(y0.invert));\n    }\n    function zoomstarted(dispatch) {\n      if (!zooming++) dispatch({\n        type: \"zoomstart\"\n      });\n    }\n    function zoomed(dispatch) {\n      rescale();\n      dispatch({\n        type: \"zoom\",\n        scale: view.k,\n        translate: [ view.x, view.y ]\n      });\n    }\n    function zoomended(dispatch) {\n      if (!--zooming) dispatch({\n        type: \"zoomend\"\n      }), center0 = null;\n    }\n    function mousedowned() {\n      var that = this, dispatch = event.of(that, arguments), dragged = 0, subject = d3.select(d3_window(that)).on(mousemove, moved).on(mouseup, ended), location0 = location(d3.mouse(that)), dragRestore = d3_event_dragSuppress(that);\n      d3_selection_interrupt.call(that);\n      zoomstarted(dispatch);\n      function moved() {\n        dragged = 1;\n        translateTo(d3.mouse(that), location0);\n        zoomed(dispatch);\n      }\n      function ended() {\n        subject.on(mousemove, null).on(mouseup, null);\n        dragRestore(dragged);\n        zoomended(dispatch);\n      }\n    }\n    function touchstarted() {\n      var that = this, dispatch = event.of(that, arguments), locations0 = {}, distance0 = 0, scale0, zoomName = \".zoom-\" + d3.event.changedTouches[0].identifier, touchmove = \"touchmove\" + zoomName, touchend = \"touchend\" + zoomName, targets = [], subject = d3.select(that), dragRestore = d3_event_dragSuppress(that);\n      started();\n      zoomstarted(dispatch);\n      subject.on(mousedown, null).on(touchstart, started);\n      function relocate() {\n        var touches = d3.touches(that);\n        scale0 = view.k;\n        touches.forEach(function(t) {\n          if (t.identifier in locations0) locations0[t.identifier] = location(t);\n        });\n        return touches;\n      }\n      function started() {\n        var target = d3.event.target;\n        d3.select(target).on(touchmove, moved).on(touchend, ended);\n        targets.push(target);\n        var changed = d3.event.changedTouches;\n        for (var i = 0, n = changed.length; i < n; ++i) {\n          locations0[changed[i].identifier] = null;\n        }\n        var touches = relocate(), now = Date.now();\n        if (touches.length === 1) {\n          if (now - touchtime < 500) {\n            var p = touches[0];\n            zoomTo(that, p, locations0[p.identifier], Math.floor(Math.log(view.k) / Math.LN2) + 1);\n            d3_eventPreventDefault();\n          }\n          touchtime = now;\n        } else if (touches.length > 1) {\n          var p = touches[0], q = touches[1], dx = p[0] - q[0], dy = p[1] - q[1];\n          distance0 = dx * dx + dy * dy;\n        }\n      }\n      function moved() {\n        var touches = d3.touches(that), p0, l0, p1, l1;\n        d3_selection_interrupt.call(that);\n        for (var i = 0, n = touches.length; i < n; ++i, l1 = null) {\n          p1 = touches[i];\n          if (l1 = locations0[p1.identifier]) {\n            if (l0) break;\n            p0 = p1, l0 = l1;\n          }\n        }\n        if (l1) {\n          var distance1 = (distance1 = p1[0] - p0[0]) * distance1 + (distance1 = p1[1] - p0[1]) * distance1, scale1 = distance0 && Math.sqrt(distance1 / distance0);\n          p0 = [ (p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2 ];\n          l0 = [ (l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2 ];\n          scaleTo(scale1 * scale0);\n        }\n        touchtime = null;\n        translateTo(p0, l0);\n        zoomed(dispatch);\n      }\n      function ended() {\n        if (d3.event.touches.length) {\n          var changed = d3.event.changedTouches;\n          for (var i = 0, n = changed.length; i < n; ++i) {\n            delete locations0[changed[i].identifier];\n          }\n          for (var identifier in locations0) {\n            return void relocate();\n          }\n        }\n        d3.selectAll(targets).on(zoomName, null);\n        subject.on(mousedown, mousedowned).on(touchstart, touchstarted);\n        dragRestore();\n        zoomended(dispatch);\n      }\n    }\n    function mousewheeled() {\n      var dispatch = event.of(this, arguments);\n      if (mousewheelTimer) clearTimeout(mousewheelTimer); else d3_selection_interrupt.call(this), \n      translate0 = location(center0 = center || d3.mouse(this)), zoomstarted(dispatch);\n      mousewheelTimer = setTimeout(function() {\n        mousewheelTimer = null;\n        zoomended(dispatch);\n      }, 50);\n      d3_eventPreventDefault();\n      scaleTo(Math.pow(2, d3_behavior_zoomDelta() * .002) * view.k);\n      translateTo(center0, translate0);\n      zoomed(dispatch);\n    }\n    function dblclicked() {\n      var p = d3.mouse(this), k = Math.log(view.k) / Math.LN2;\n      zoomTo(this, p, location(p), d3.event.shiftKey ? Math.ceil(k) - 1 : Math.floor(k) + 1);\n    }\n    return d3.rebind(zoom, event, \"on\");\n  };\n  var d3_behavior_zoomInfinity = [ 0, Infinity ], d3_behavior_zoomDelta, d3_behavior_zoomWheel;\n  d3.color = d3_color;\n  function d3_color() {}\n  d3_color.prototype.toString = function() {\n    return this.rgb() + \"\";\n  };\n  d3.hsl = d3_hsl;\n  function d3_hsl(h, s, l) {\n    return this instanceof d3_hsl ? void (this.h = +h, this.s = +s, this.l = +l) : arguments.length < 2 ? h instanceof d3_hsl ? new d3_hsl(h.h, h.s, h.l) : d3_rgb_parse(\"\" + h, d3_rgb_hsl, d3_hsl) : new d3_hsl(h, s, l);\n  }\n  var d3_hslPrototype = d3_hsl.prototype = new d3_color();\n  d3_hslPrototype.brighter = function(k) {\n    k = Math.pow(.7, arguments.length ? k : 1);\n    return new d3_hsl(this.h, this.s, this.l / k);\n  };\n  d3_hslPrototype.darker = function(k) {\n    k = Math.pow(.7, arguments.length ? k : 1);\n    return new d3_hsl(this.h, this.s, k * this.l);\n  };\n  d3_hslPrototype.rgb = function() {\n    return d3_hsl_rgb(this.h, this.s, this.l);\n  };\n  function d3_hsl_rgb(h, s, l) {\n    var m1, m2;\n    h = isNaN(h) ? 0 : (h %= 360) < 0 ? h + 360 : h;\n    s = isNaN(s) ? 0 : s < 0 ? 0 : s > 1 ? 1 : s;\n    l = l < 0 ? 0 : l > 1 ? 1 : l;\n    m2 = l <= .5 ? l * (1 + s) : l + s - l * s;\n    m1 = 2 * l - m2;\n    function v(h) {\n      if (h > 360) h -= 360; else if (h < 0) h += 360;\n      if (h < 60) return m1 + (m2 - m1) * h / 60;\n      if (h < 180) return m2;\n      if (h < 240) return m1 + (m2 - m1) * (240 - h) / 60;\n      return m1;\n    }\n    function vv(h) {\n      return Math.round(v(h) * 255);\n    }\n    return new d3_rgb(vv(h + 120), vv(h), vv(h - 120));\n  }\n  d3.hcl = d3_hcl;\n  function d3_hcl(h, c, l) {\n    return this instanceof d3_hcl ? void (this.h = +h, this.c = +c, this.l = +l) : arguments.length < 2 ? h instanceof d3_hcl ? new d3_hcl(h.h, h.c, h.l) : h instanceof d3_lab ? d3_lab_hcl(h.l, h.a, h.b) : d3_lab_hcl((h = d3_rgb_lab((h = d3.rgb(h)).r, h.g, h.b)).l, h.a, h.b) : new d3_hcl(h, c, l);\n  }\n  var d3_hclPrototype = d3_hcl.prototype = new d3_color();\n  d3_hclPrototype.brighter = function(k) {\n    return new d3_hcl(this.h, this.c, Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)));\n  };\n  d3_hclPrototype.darker = function(k) {\n    return new d3_hcl(this.h, this.c, Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)));\n  };\n  d3_hclPrototype.rgb = function() {\n    return d3_hcl_lab(this.h, this.c, this.l).rgb();\n  };\n  function d3_hcl_lab(h, c, l) {\n    if (isNaN(h)) h = 0;\n    if (isNaN(c)) c = 0;\n    return new d3_lab(l, Math.cos(h *= d3_radians) * c, Math.sin(h) * c);\n  }\n  d3.lab = d3_lab;\n  function d3_lab(l, a, b) {\n    return this instanceof d3_lab ? void (this.l = +l, this.a = +a, this.b = +b) : arguments.length < 2 ? l instanceof d3_lab ? new d3_lab(l.l, l.a, l.b) : l instanceof d3_hcl ? d3_hcl_lab(l.h, l.c, l.l) : d3_rgb_lab((l = d3_rgb(l)).r, l.g, l.b) : new d3_lab(l, a, b);\n  }\n  var d3_lab_K = 18;\n  var d3_lab_X = .95047, d3_lab_Y = 1, d3_lab_Z = 1.08883;\n  var d3_labPrototype = d3_lab.prototype = new d3_color();\n  d3_labPrototype.brighter = function(k) {\n    return new d3_lab(Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);\n  };\n  d3_labPrototype.darker = function(k) {\n    return new d3_lab(Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);\n  };\n  d3_labPrototype.rgb = function() {\n    return d3_lab_rgb(this.l, this.a, this.b);\n  };\n  function d3_lab_rgb(l, a, b) {\n    var y = (l + 16) / 116, x = y + a / 500, z = y - b / 200;\n    x = d3_lab_xyz(x) * d3_lab_X;\n    y = d3_lab_xyz(y) * d3_lab_Y;\n    z = d3_lab_xyz(z) * d3_lab_Z;\n    return new d3_rgb(d3_xyz_rgb(3.2404542 * x - 1.5371385 * y - .4985314 * z), d3_xyz_rgb(-.969266 * x + 1.8760108 * y + .041556 * z), d3_xyz_rgb(.0556434 * x - .2040259 * y + 1.0572252 * z));\n  }\n  function d3_lab_hcl(l, a, b) {\n    return l > 0 ? new d3_hcl(Math.atan2(b, a) * d3_degrees, Math.sqrt(a * a + b * b), l) : new d3_hcl(NaN, NaN, l);\n  }\n  function d3_lab_xyz(x) {\n    return x > .206893034 ? x * x * x : (x - 4 / 29) / 7.787037;\n  }\n  function d3_xyz_lab(x) {\n    return x > .008856 ? Math.pow(x, 1 / 3) : 7.787037 * x + 4 / 29;\n  }\n  function d3_xyz_rgb(r) {\n    return Math.round(255 * (r <= .00304 ? 12.92 * r : 1.055 * Math.pow(r, 1 / 2.4) - .055));\n  }\n  d3.rgb = d3_rgb;\n  function d3_rgb(r, g, b) {\n    return this instanceof d3_rgb ? void (this.r = ~~r, this.g = ~~g, this.b = ~~b) : arguments.length < 2 ? r instanceof d3_rgb ? new d3_rgb(r.r, r.g, r.b) : d3_rgb_parse(\"\" + r, d3_rgb, d3_hsl_rgb) : new d3_rgb(r, g, b);\n  }\n  function d3_rgbNumber(value) {\n    return new d3_rgb(value >> 16, value >> 8 & 255, value & 255);\n  }\n  function d3_rgbString(value) {\n    return d3_rgbNumber(value) + \"\";\n  }\n  var d3_rgbPrototype = d3_rgb.prototype = new d3_color();\n  d3_rgbPrototype.brighter = function(k) {\n    k = Math.pow(.7, arguments.length ? k : 1);\n    var r = this.r, g = this.g, b = this.b, i = 30;\n    if (!r && !g && !b) return new d3_rgb(i, i, i);\n    if (r && r < i) r = i;\n    if (g && g < i) g = i;\n    if (b && b < i) b = i;\n    return new d3_rgb(Math.min(255, r / k), Math.min(255, g / k), Math.min(255, b / k));\n  };\n  d3_rgbPrototype.darker = function(k) {\n    k = Math.pow(.7, arguments.length ? k : 1);\n    return new d3_rgb(k * this.r, k * this.g, k * this.b);\n  };\n  d3_rgbPrototype.hsl = function() {\n    return d3_rgb_hsl(this.r, this.g, this.b);\n  };\n  d3_rgbPrototype.toString = function() {\n    return \"#\" + d3_rgb_hex(this.r) + d3_rgb_hex(this.g) + d3_rgb_hex(this.b);\n  };\n  function d3_rgb_hex(v) {\n    return v < 16 ? \"0\" + Math.max(0, v).toString(16) : Math.min(255, v).toString(16);\n  }\n  function d3_rgb_parse(format, rgb, hsl) {\n    var r = 0, g = 0, b = 0, m1, m2, color;\n    m1 = /([a-z]+)\\((.*)\\)/.exec(format = format.toLowerCase());\n    if (m1) {\n      m2 = m1[2].split(\",\");\n      switch (m1[1]) {\n       case \"hsl\":\n        {\n          return hsl(parseFloat(m2[0]), parseFloat(m2[1]) / 100, parseFloat(m2[2]) / 100);\n        }\n\n       case \"rgb\":\n        {\n          return rgb(d3_rgb_parseNumber(m2[0]), d3_rgb_parseNumber(m2[1]), d3_rgb_parseNumber(m2[2]));\n        }\n      }\n    }\n    if (color = d3_rgb_names.get(format)) {\n      return rgb(color.r, color.g, color.b);\n    }\n    if (format != null && format.charAt(0) === \"#\" && !isNaN(color = parseInt(format.slice(1), 16))) {\n      if (format.length === 4) {\n        r = (color & 3840) >> 4;\n        r = r >> 4 | r;\n        g = color & 240;\n        g = g >> 4 | g;\n        b = color & 15;\n        b = b << 4 | b;\n      } else if (format.length === 7) {\n        r = (color & 16711680) >> 16;\n        g = (color & 65280) >> 8;\n        b = color & 255;\n      }\n    }\n    return rgb(r, g, b);\n  }\n  function d3_rgb_hsl(r, g, b) {\n    var min = Math.min(r /= 255, g /= 255, b /= 255), max = Math.max(r, g, b), d = max - min, h, s, l = (max + min) / 2;\n    if (d) {\n      s = l < .5 ? d / (max + min) : d / (2 - max - min);\n      if (r == max) h = (g - b) / d + (g < b ? 6 : 0); else if (g == max) h = (b - r) / d + 2; else h = (r - g) / d + 4;\n      h *= 60;\n    } else {\n      h = NaN;\n      s = l > 0 && l < 1 ? 0 : h;\n    }\n    return new d3_hsl(h, s, l);\n  }\n  function d3_rgb_lab(r, g, b) {\n    r = d3_rgb_xyz(r);\n    g = d3_rgb_xyz(g);\n    b = d3_rgb_xyz(b);\n    var x = d3_xyz_lab((.4124564 * r + .3575761 * g + .1804375 * b) / d3_lab_X), y = d3_xyz_lab((.2126729 * r + .7151522 * g + .072175 * b) / d3_lab_Y), z = d3_xyz_lab((.0193339 * r + .119192 * g + .9503041 * b) / d3_lab_Z);\n    return d3_lab(116 * y - 16, 500 * (x - y), 200 * (y - z));\n  }\n  function d3_rgb_xyz(r) {\n    return (r /= 255) <= .04045 ? r / 12.92 : Math.pow((r + .055) / 1.055, 2.4);\n  }\n  function d3_rgb_parseNumber(c) {\n    var f = parseFloat(c);\n    return c.charAt(c.length - 1) === \"%\" ? Math.round(f * 2.55) : f;\n  }\n  var d3_rgb_names = d3.map({\n    aliceblue: 15792383,\n    antiquewhite: 16444375,\n    aqua: 65535,\n    aquamarine: 8388564,\n    azure: 15794175,\n    beige: 16119260,\n    bisque: 16770244,\n    black: 0,\n    blanchedalmond: 16772045,\n    blue: 255,\n    blueviolet: 9055202,\n    brown: 10824234,\n    burlywood: 14596231,\n    cadetblue: 6266528,\n    chartreuse: 8388352,\n    chocolate: 13789470,\n    coral: 16744272,\n    cornflowerblue: 6591981,\n    cornsilk: 16775388,\n    crimson: 14423100,\n    cyan: 65535,\n    darkblue: 139,\n    darkcyan: 35723,\n    darkgoldenrod: 12092939,\n    darkgray: 11119017,\n    darkgreen: 25600,\n    darkgrey: 11119017,\n    darkkhaki: 12433259,\n    darkmagenta: 9109643,\n    darkolivegreen: 5597999,\n    darkorange: 16747520,\n    darkorchid: 10040012,\n    darkred: 9109504,\n    darksalmon: 15308410,\n    darkseagreen: 9419919,\n    darkslateblue: 4734347,\n    darkslategray: 3100495,\n    darkslategrey: 3100495,\n    darkturquoise: 52945,\n    darkviolet: 9699539,\n    deeppink: 16716947,\n    deepskyblue: 49151,\n    dimgray: 6908265,\n    dimgrey: 6908265,\n    dodgerblue: 2003199,\n    firebrick: 11674146,\n    floralwhite: 16775920,\n    forestgreen: 2263842,\n    fuchsia: 16711935,\n    gainsboro: 14474460,\n    ghostwhite: 16316671,\n    gold: 16766720,\n    goldenrod: 14329120,\n    gray: 8421504,\n    green: 32768,\n    greenyellow: 11403055,\n    grey: 8421504,\n    honeydew: 15794160,\n    hotpink: 16738740,\n    indianred: 13458524,\n    indigo: 4915330,\n    ivory: 16777200,\n    khaki: 15787660,\n    lavender: 15132410,\n    lavenderblush: 16773365,\n    lawngreen: 8190976,\n    lemonchiffon: 16775885,\n    lightblue: 11393254,\n    lightcoral: 15761536,\n    lightcyan: 14745599,\n    lightgoldenrodyellow: 16448210,\n    lightgray: 13882323,\n    lightgreen: 9498256,\n    lightgrey: 13882323,\n    lightpink: 16758465,\n    lightsalmon: 16752762,\n    lightseagreen: 2142890,\n    lightskyblue: 8900346,\n    lightslategray: 7833753,\n    lightslategrey: 7833753,\n    lightsteelblue: 11584734,\n    lightyellow: 16777184,\n    lime: 65280,\n    limegreen: 3329330,\n    linen: 16445670,\n    magenta: 16711935,\n    maroon: 8388608,\n    mediumaquamarine: 6737322,\n    mediumblue: 205,\n    mediumorchid: 12211667,\n    mediumpurple: 9662683,\n    mediumseagreen: 3978097,\n    mediumslateblue: 8087790,\n    mediumspringgreen: 64154,\n    mediumturquoise: 4772300,\n    mediumvioletred: 13047173,\n    midnightblue: 1644912,\n    mintcream: 16121850,\n    mistyrose: 16770273,\n    moccasin: 16770229,\n    navajowhite: 16768685,\n    navy: 128,\n    oldlace: 16643558,\n    olive: 8421376,\n    olivedrab: 7048739,\n    orange: 16753920,\n    orangered: 16729344,\n    orchid: 14315734,\n    palegoldenrod: 15657130,\n    palegreen: 10025880,\n    paleturquoise: 11529966,\n    palevioletred: 14381203,\n    papayawhip: 16773077,\n    peachpuff: 16767673,\n    peru: 13468991,\n    pink: 16761035,\n    plum: 14524637,\n    powderblue: 11591910,\n    purple: 8388736,\n    rebeccapurple: 6697881,\n    red: 16711680,\n    rosybrown: 12357519,\n    royalblue: 4286945,\n    saddlebrown: 9127187,\n    salmon: 16416882,\n    sandybrown: 16032864,\n    seagreen: 3050327,\n    seashell: 16774638,\n    sienna: 10506797,\n    silver: 12632256,\n    skyblue: 8900331,\n    slateblue: 6970061,\n    slategray: 7372944,\n    slategrey: 7372944,\n    snow: 16775930,\n    springgreen: 65407,\n    steelblue: 4620980,\n    tan: 13808780,\n    teal: 32896,\n    thistle: 14204888,\n    tomato: 16737095,\n    turquoise: 4251856,\n    violet: 15631086,\n    wheat: 16113331,\n    white: 16777215,\n    whitesmoke: 16119285,\n    yellow: 16776960,\n    yellowgreen: 10145074\n  });\n  d3_rgb_names.forEach(function(key, value) {\n    d3_rgb_names.set(key, d3_rgbNumber(value));\n  });\n  function d3_functor(v) {\n    return typeof v === \"function\" ? v : function() {\n      return v;\n    };\n  }\n  d3.functor = d3_functor;\n  d3.xhr = d3_xhrType(d3_identity);\n  function d3_xhrType(response) {\n    return function(url, mimeType, callback) {\n      if (arguments.length === 2 && typeof mimeType === \"function\") callback = mimeType, \n      mimeType = null;\n      return d3_xhr(url, mimeType, response, callback);\n    };\n  }\n  function d3_xhr(url, mimeType, response, callback) {\n    var xhr = {}, dispatch = d3.dispatch(\"beforesend\", \"progress\", \"load\", \"error\"), headers = {}, request = new XMLHttpRequest(), responseType = null;\n    if (this.XDomainRequest && !(\"withCredentials\" in request) && /^(http(s)?:)?\\/\\//.test(url)) request = new XDomainRequest();\n    \"onload\" in request ? request.onload = request.onerror = respond : request.onreadystatechange = function() {\n      request.readyState > 3 && respond();\n    };\n    function respond() {\n      var status = request.status, result;\n      if (!status && d3_xhrHasResponse(request) || status >= 200 && status < 300 || status === 304) {\n        try {\n          result = response.call(xhr, request);\n        } catch (e) {\n          dispatch.error.call(xhr, e);\n          return;\n        }\n        dispatch.load.call(xhr, result);\n      } else {\n        dispatch.error.call(xhr, request);\n      }\n    }\n    request.onprogress = function(event) {\n      var o = d3.event;\n      d3.event = event;\n      try {\n        dispatch.progress.call(xhr, request);\n      } finally {\n        d3.event = o;\n      }\n    };\n    xhr.header = function(name, value) {\n      name = (name + \"\").toLowerCase();\n      if (arguments.length < 2) return headers[name];\n      if (value == null) delete headers[name]; else headers[name] = value + \"\";\n      return xhr;\n    };\n    xhr.mimeType = function(value) {\n      if (!arguments.length) return mimeType;\n      mimeType = value == null ? null : value + \"\";\n      return xhr;\n    };\n    xhr.responseType = function(value) {\n      if (!arguments.length) return responseType;\n      responseType = value;\n      return xhr;\n    };\n    xhr.response = function(value) {\n      response = value;\n      return xhr;\n    };\n    [ \"get\", \"post\" ].forEach(function(method) {\n      xhr[method] = function() {\n        return xhr.send.apply(xhr, [ method ].concat(d3_array(arguments)));\n      };\n    });\n    xhr.send = function(method, data, callback) {\n      if (arguments.length === 2 && typeof data === \"function\") callback = data, data = null;\n      request.open(method, url, true);\n      if (mimeType != null && !(\"accept\" in headers)) headers[\"accept\"] = mimeType + \",*/*\";\n      if (request.setRequestHeader) for (var name in headers) request.setRequestHeader(name, headers[name]);\n      if (mimeType != null && request.overrideMimeType) request.overrideMimeType(mimeType);\n      if (responseType != null) request.responseType = responseType;\n      if (callback != null) xhr.on(\"error\", callback).on(\"load\", function(request) {\n        callback(null, request);\n      });\n      dispatch.beforesend.call(xhr, request);\n      request.send(data == null ? null : data);\n      return xhr;\n    };\n    xhr.abort = function() {\n      request.abort();\n      return xhr;\n    };\n    d3.rebind(xhr, dispatch, \"on\");\n    return callback == null ? xhr : xhr.get(d3_xhr_fixCallback(callback));\n  }\n  function d3_xhr_fixCallback(callback) {\n    return callback.length === 1 ? function(error, request) {\n      callback(error == null ? request : null);\n    } : callback;\n  }\n  function d3_xhrHasResponse(request) {\n    var type = request.responseType;\n    return type && type !== \"text\" ? request.response : request.responseText;\n  }\n  d3.dsv = function(delimiter, mimeType) {\n    var reFormat = new RegExp('[\"' + delimiter + \"\\n]\"), delimiterCode = delimiter.charCodeAt(0);\n    function dsv(url, row, callback) {\n      if (arguments.length < 3) callback = row, row = null;\n      var xhr = d3_xhr(url, mimeType, row == null ? response : typedResponse(row), callback);\n      xhr.row = function(_) {\n        return arguments.length ? xhr.response((row = _) == null ? response : typedResponse(_)) : row;\n      };\n      return xhr;\n    }\n    function response(request) {\n      return dsv.parse(request.responseText);\n    }\n    function typedResponse(f) {\n      return function(request) {\n        return dsv.parse(request.responseText, f);\n      };\n    }\n    dsv.parse = function(text, f) {\n      var o;\n      return dsv.parseRows(text, function(row, i) {\n        if (o) return o(row, i - 1);\n        var a = new Function(\"d\", \"return {\" + row.map(function(name, i) {\n          return JSON.stringify(name) + \": d[\" + i + \"]\";\n        }).join(\",\") + \"}\");\n        o = f ? function(row, i) {\n          return f(a(row), i);\n        } : a;\n      });\n    };\n    dsv.parseRows = function(text, f) {\n      var EOL = {}, EOF = {}, rows = [], N = text.length, I = 0, n = 0, t, eol;\n      function token() {\n        if (I >= N) return EOF;\n        if (eol) return eol = false, EOL;\n        var j = I;\n        if (text.charCodeAt(j) === 34) {\n          var i = j;\n          while (i++ < N) {\n            if (text.charCodeAt(i) === 34) {\n              if (text.charCodeAt(i + 1) !== 34) break;\n              ++i;\n            }\n          }\n          I = i + 2;\n          var c = text.charCodeAt(i + 1);\n          if (c === 13) {\n            eol = true;\n            if (text.charCodeAt(i + 2) === 10) ++I;\n          } else if (c === 10) {\n            eol = true;\n          }\n          return text.slice(j + 1, i).replace(/\"\"/g, '\"');\n        }\n        while (I < N) {\n          var c = text.charCodeAt(I++), k = 1;\n          if (c === 10) eol = true; else if (c === 13) {\n            eol = true;\n            if (text.charCodeAt(I) === 10) ++I, ++k;\n          } else if (c !== delimiterCode) continue;\n          return text.slice(j, I - k);\n        }\n        return text.slice(j);\n      }\n      while ((t = token()) !== EOF) {\n        var a = [];\n        while (t !== EOL && t !== EOF) {\n          a.push(t);\n          t = token();\n        }\n        if (f && (a = f(a, n++)) == null) continue;\n        rows.push(a);\n      }\n      return rows;\n    };\n    dsv.format = function(rows) {\n      if (Array.isArray(rows[0])) return dsv.formatRows(rows);\n      var fieldSet = new d3_Set(), fields = [];\n      rows.forEach(function(row) {\n        for (var field in row) {\n          if (!fieldSet.has(field)) {\n            fields.push(fieldSet.add(field));\n          }\n        }\n      });\n      return [ fields.map(formatValue).join(delimiter) ].concat(rows.map(function(row) {\n        return fields.map(function(field) {\n          return formatValue(row[field]);\n        }).join(delimiter);\n      })).join(\"\\n\");\n    };\n    dsv.formatRows = function(rows) {\n      return rows.map(formatRow).join(\"\\n\");\n    };\n    function formatRow(row) {\n      return row.map(formatValue).join(delimiter);\n    }\n    function formatValue(text) {\n      return reFormat.test(text) ? '\"' + text.replace(/\\\"/g, '\"\"') + '\"' : text;\n    }\n    return dsv;\n  };\n  d3.csv = d3.dsv(\",\", \"text/csv\");\n  d3.tsv = d3.dsv(\"\t\", \"text/tab-separated-values\");\n  var d3_timer_queueHead, d3_timer_queueTail, d3_timer_interval, d3_timer_timeout, d3_timer_frame = this[d3_vendorSymbol(this, \"requestAnimationFrame\")] || function(callback) {\n    setTimeout(callback, 17);\n  };\n  d3.timer = function() {\n    d3_timer.apply(this, arguments);\n  };\n  function d3_timer(callback, delay, then) {\n    var n = arguments.length;\n    if (n < 2) delay = 0;\n    if (n < 3) then = Date.now();\n    var time = then + delay, timer = {\n      c: callback,\n      t: time,\n      n: null\n    };\n    if (d3_timer_queueTail) d3_timer_queueTail.n = timer; else d3_timer_queueHead = timer;\n    d3_timer_queueTail = timer;\n    if (!d3_timer_interval) {\n      d3_timer_timeout = clearTimeout(d3_timer_timeout);\n      d3_timer_interval = 1;\n      d3_timer_frame(d3_timer_step);\n    }\n    return timer;\n  }\n  function d3_timer_step() {\n    var now = d3_timer_mark(), delay = d3_timer_sweep() - now;\n    if (delay > 24) {\n      if (isFinite(delay)) {\n        clearTimeout(d3_timer_timeout);\n        d3_timer_timeout = setTimeout(d3_timer_step, delay);\n      }\n      d3_timer_interval = 0;\n    } else {\n      d3_timer_interval = 1;\n      d3_timer_frame(d3_timer_step);\n    }\n  }\n  d3.timer.flush = function() {\n    d3_timer_mark();\n    d3_timer_sweep();\n  };\n  function d3_timer_mark() {\n    var now = Date.now(), timer = d3_timer_queueHead;\n    while (timer) {\n      if (now >= timer.t && timer.c(now - timer.t)) timer.c = null;\n      timer = timer.n;\n    }\n    return now;\n  }\n  function d3_timer_sweep() {\n    var t0, t1 = d3_timer_queueHead, time = Infinity;\n    while (t1) {\n      if (t1.c) {\n        if (t1.t < time) time = t1.t;\n        t1 = (t0 = t1).n;\n      } else {\n        t1 = t0 ? t0.n = t1.n : d3_timer_queueHead = t1.n;\n      }\n    }\n    d3_timer_queueTail = t0;\n    return time;\n  }\n  function d3_format_precision(x, p) {\n    return p - (x ? Math.ceil(Math.log(x) / Math.LN10) : 1);\n  }\n  d3.round = function(x, n) {\n    return n ? Math.round(x * (n = Math.pow(10, n))) / n : Math.round(x);\n  };\n  var d3_formatPrefixes = [ \"y\", \"z\", \"a\", \"f\", \"p\", \"n\", \"µ\", \"m\", \"\", \"k\", \"M\", \"G\", \"T\", \"P\", \"E\", \"Z\", \"Y\" ].map(d3_formatPrefix);\n  d3.formatPrefix = function(value, precision) {\n    var i = 0;\n    if (value = +value) {\n      if (value < 0) value *= -1;\n      if (precision) value = d3.round(value, d3_format_precision(value, precision));\n      i = 1 + Math.floor(1e-12 + Math.log(value) / Math.LN10);\n      i = Math.max(-24, Math.min(24, Math.floor((i - 1) / 3) * 3));\n    }\n    return d3_formatPrefixes[8 + i / 3];\n  };\n  function d3_formatPrefix(d, i) {\n    var k = Math.pow(10, abs(8 - i) * 3);\n    return {\n      scale: i > 8 ? function(d) {\n        return d / k;\n      } : function(d) {\n        return d * k;\n      },\n      symbol: d\n    };\n  }\n  function d3_locale_numberFormat(locale) {\n    var locale_decimal = locale.decimal, locale_thousands = locale.thousands, locale_grouping = locale.grouping, locale_currency = locale.currency, formatGroup = locale_grouping && locale_thousands ? function(value, width) {\n      var i = value.length, t = [], j = 0, g = locale_grouping[0], length = 0;\n      while (i > 0 && g > 0) {\n        if (length + g + 1 > width) g = Math.max(1, width - length);\n        t.push(value.substring(i -= g, i + g));\n        if ((length += g + 1) > width) break;\n        g = locale_grouping[j = (j + 1) % locale_grouping.length];\n      }\n      return t.reverse().join(locale_thousands);\n    } : d3_identity;\n    return function(specifier) {\n      var match = d3_format_re.exec(specifier), fill = match[1] || \" \", align = match[2] || \">\", sign = match[3] || \"-\", symbol = match[4] || \"\", zfill = match[5], width = +match[6], comma = match[7], precision = match[8], type = match[9], scale = 1, prefix = \"\", suffix = \"\", integer = false, exponent = true;\n      if (precision) precision = +precision.substring(1);\n      if (zfill || fill === \"0\" && align === \"=\") {\n        zfill = fill = \"0\";\n        align = \"=\";\n      }\n      switch (type) {\n       case \"n\":\n        comma = true;\n        type = \"g\";\n        break;\n\n       case \"%\":\n        scale = 100;\n        suffix = \"%\";\n        type = \"f\";\n        break;\n\n       case \"p\":\n        scale = 100;\n        suffix = \"%\";\n        type = \"r\";\n        break;\n\n       case \"b\":\n       case \"o\":\n       case \"x\":\n       case \"X\":\n        if (symbol === \"#\") prefix = \"0\" + type.toLowerCase();\n\n       case \"c\":\n        exponent = false;\n\n       case \"d\":\n        integer = true;\n        precision = 0;\n        break;\n\n       case \"s\":\n        scale = -1;\n        type = \"r\";\n        break;\n      }\n      if (symbol === \"$\") prefix = locale_currency[0], suffix = locale_currency[1];\n      if (type == \"r\" && !precision) type = \"g\";\n      if (precision != null) {\n        if (type == \"g\") precision = Math.max(1, Math.min(21, precision)); else if (type == \"e\" || type == \"f\") precision = Math.max(0, Math.min(20, precision));\n      }\n      type = d3_format_types.get(type) || d3_format_typeDefault;\n      var zcomma = zfill && comma;\n      return function(value) {\n        var fullSuffix = suffix;\n        if (integer && value % 1) return \"\";\n        var negative = value < 0 || value === 0 && 1 / value < 0 ? (value = -value, \"-\") : sign === \"-\" ? \"\" : sign;\n        if (scale < 0) {\n          var unit = d3.formatPrefix(value, precision);\n          value = unit.scale(value);\n          fullSuffix = unit.symbol + suffix;\n        } else {\n          value *= scale;\n        }\n        value = type(value, precision);\n        var i = value.lastIndexOf(\".\"), before, after;\n        if (i < 0) {\n          var j = exponent ? value.lastIndexOf(\"e\") : -1;\n          if (j < 0) before = value, after = \"\"; else before = value.substring(0, j), after = value.substring(j);\n        } else {\n          before = value.substring(0, i);\n          after = locale_decimal + value.substring(i + 1);\n        }\n        if (!zfill && comma) before = formatGroup(before, Infinity);\n        var length = prefix.length + before.length + after.length + (zcomma ? 0 : negative.length), padding = length < width ? new Array(length = width - length + 1).join(fill) : \"\";\n        if (zcomma) before = formatGroup(padding + before, padding.length ? width - after.length : Infinity);\n        negative += prefix;\n        value = before + after;\n        return (align === \"<\" ? negative + value + padding : align === \">\" ? padding + negative + value : align === \"^\" ? padding.substring(0, length >>= 1) + negative + value + padding.substring(length) : negative + (zcomma ? value : padding + value)) + fullSuffix;\n      };\n    };\n  }\n  var d3_format_re = /(?:([^{])?([<>=^]))?([+\\- ])?([$#])?(0)?(\\d+)?(,)?(\\.-?\\d+)?([a-z%])?/i;\n  var d3_format_types = d3.map({\n    b: function(x) {\n      return x.toString(2);\n    },\n    c: function(x) {\n      return String.fromCharCode(x);\n    },\n    o: function(x) {\n      return x.toString(8);\n    },\n    x: function(x) {\n      return x.toString(16);\n    },\n    X: function(x) {\n      return x.toString(16).toUpperCase();\n    },\n    g: function(x, p) {\n      return x.toPrecision(p);\n    },\n    e: function(x, p) {\n      return x.toExponential(p);\n    },\n    f: function(x, p) {\n      return x.toFixed(p);\n    },\n    r: function(x, p) {\n      return (x = d3.round(x, d3_format_precision(x, p))).toFixed(Math.max(0, Math.min(20, d3_format_precision(x * (1 + 1e-15), p))));\n    }\n  });\n  function d3_format_typeDefault(x) {\n    return x + \"\";\n  }\n  var d3_time = d3.time = {}, d3_date = Date;\n  function d3_date_utc() {\n    this._ = new Date(arguments.length > 1 ? Date.UTC.apply(this, arguments) : arguments[0]);\n  }\n  d3_date_utc.prototype = {\n    getDate: function() {\n      return this._.getUTCDate();\n    },\n    getDay: function() {\n      return this._.getUTCDay();\n    },\n    getFullYear: function() {\n      return this._.getUTCFullYear();\n    },\n    getHours: function() {\n      return this._.getUTCHours();\n    },\n    getMilliseconds: function() {\n      return this._.getUTCMilliseconds();\n    },\n    getMinutes: function() {\n      return this._.getUTCMinutes();\n    },\n    getMonth: function() {\n      return this._.getUTCMonth();\n    },\n    getSeconds: function() {\n      return this._.getUTCSeconds();\n    },\n    getTime: function() {\n      return this._.getTime();\n    },\n    getTimezoneOffset: function() {\n      return 0;\n    },\n    valueOf: function() {\n      return this._.valueOf();\n    },\n    setDate: function() {\n      d3_time_prototype.setUTCDate.apply(this._, arguments);\n    },\n    setDay: function() {\n      d3_time_prototype.setUTCDay.apply(this._, arguments);\n    },\n    setFullYear: function() {\n      d3_time_prototype.setUTCFullYear.apply(this._, arguments);\n    },\n    setHours: function() {\n      d3_time_prototype.setUTCHours.apply(this._, arguments);\n    },\n    setMilliseconds: function() {\n      d3_time_prototype.setUTCMilliseconds.apply(this._, arguments);\n    },\n    setMinutes: function() {\n      d3_time_prototype.setUTCMinutes.apply(this._, arguments);\n    },\n    setMonth: function() {\n      d3_time_prototype.setUTCMonth.apply(this._, arguments);\n    },\n    setSeconds: function() {\n      d3_time_prototype.setUTCSeconds.apply(this._, arguments);\n    },\n    setTime: function() {\n      d3_time_prototype.setTime.apply(this._, arguments);\n    }\n  };\n  var d3_time_prototype = Date.prototype;\n  function d3_time_interval(local, step, number) {\n    function round(date) {\n      var d0 = local(date), d1 = offset(d0, 1);\n      return date - d0 < d1 - date ? d0 : d1;\n    }\n    function ceil(date) {\n      step(date = local(new d3_date(date - 1)), 1);\n      return date;\n    }\n    function offset(date, k) {\n      step(date = new d3_date(+date), k);\n      return date;\n    }\n    function range(t0, t1, dt) {\n      var time = ceil(t0), times = [];\n      if (dt > 1) {\n        while (time < t1) {\n          if (!(number(time) % dt)) times.push(new Date(+time));\n          step(time, 1);\n        }\n      } else {\n        while (time < t1) times.push(new Date(+time)), step(time, 1);\n      }\n      return times;\n    }\n    function range_utc(t0, t1, dt) {\n      try {\n        d3_date = d3_date_utc;\n        var utc = new d3_date_utc();\n        utc._ = t0;\n        return range(utc, t1, dt);\n      } finally {\n        d3_date = Date;\n      }\n    }\n    local.floor = local;\n    local.round = round;\n    local.ceil = ceil;\n    local.offset = offset;\n    local.range = range;\n    var utc = local.utc = d3_time_interval_utc(local);\n    utc.floor = utc;\n    utc.round = d3_time_interval_utc(round);\n    utc.ceil = d3_time_interval_utc(ceil);\n    utc.offset = d3_time_interval_utc(offset);\n    utc.range = range_utc;\n    return local;\n  }\n  function d3_time_interval_utc(method) {\n    return function(date, k) {\n      try {\n        d3_date = d3_date_utc;\n        var utc = new d3_date_utc();\n        utc._ = date;\n        return method(utc, k)._;\n      } finally {\n        d3_date = Date;\n      }\n    };\n  }\n  d3_time.year = d3_time_interval(function(date) {\n    date = d3_time.day(date);\n    date.setMonth(0, 1);\n    return date;\n  }, function(date, offset) {\n    date.setFullYear(date.getFullYear() + offset);\n  }, function(date) {\n    return date.getFullYear();\n  });\n  d3_time.years = d3_time.year.range;\n  d3_time.years.utc = d3_time.year.utc.range;\n  d3_time.day = d3_time_interval(function(date) {\n    var day = new d3_date(2e3, 0);\n    day.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n    return day;\n  }, function(date, offset) {\n    date.setDate(date.getDate() + offset);\n  }, function(date) {\n    return date.getDate() - 1;\n  });\n  d3_time.days = d3_time.day.range;\n  d3_time.days.utc = d3_time.day.utc.range;\n  d3_time.dayOfYear = function(date) {\n    var year = d3_time.year(date);\n    return Math.floor((date - year - (date.getTimezoneOffset() - year.getTimezoneOffset()) * 6e4) / 864e5);\n  };\n  [ \"sunday\", \"monday\", \"tuesday\", \"wednesday\", \"thursday\", \"friday\", \"saturday\" ].forEach(function(day, i) {\n    i = 7 - i;\n    var interval = d3_time[day] = d3_time_interval(function(date) {\n      (date = d3_time.day(date)).setDate(date.getDate() - (date.getDay() + i) % 7);\n      return date;\n    }, function(date, offset) {\n      date.setDate(date.getDate() + Math.floor(offset) * 7);\n    }, function(date) {\n      var day = d3_time.year(date).getDay();\n      return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7) - (day !== i);\n    });\n    d3_time[day + \"s\"] = interval.range;\n    d3_time[day + \"s\"].utc = interval.utc.range;\n    d3_time[day + \"OfYear\"] = function(date) {\n      var day = d3_time.year(date).getDay();\n      return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7);\n    };\n  });\n  d3_time.week = d3_time.sunday;\n  d3_time.weeks = d3_time.sunday.range;\n  d3_time.weeks.utc = d3_time.sunday.utc.range;\n  d3_time.weekOfYear = d3_time.sundayOfYear;\n  function d3_locale_timeFormat(locale) {\n    var locale_dateTime = locale.dateTime, locale_date = locale.date, locale_time = locale.time, locale_periods = locale.periods, locale_days = locale.days, locale_shortDays = locale.shortDays, locale_months = locale.months, locale_shortMonths = locale.shortMonths;\n    function d3_time_format(template) {\n      var n = template.length;\n      function format(date) {\n        var string = [], i = -1, j = 0, c, p, f;\n        while (++i < n) {\n          if (template.charCodeAt(i) === 37) {\n            string.push(template.slice(j, i));\n            if ((p = d3_time_formatPads[c = template.charAt(++i)]) != null) c = template.charAt(++i);\n            if (f = d3_time_formats[c]) c = f(date, p == null ? c === \"e\" ? \" \" : \"0\" : p);\n            string.push(c);\n            j = i + 1;\n          }\n        }\n        string.push(template.slice(j, i));\n        return string.join(\"\");\n      }\n      format.parse = function(string) {\n        var d = {\n          y: 1900,\n          m: 0,\n          d: 1,\n          H: 0,\n          M: 0,\n          S: 0,\n          L: 0,\n          Z: null\n        }, i = d3_time_parse(d, template, string, 0);\n        if (i != string.length) return null;\n        if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n        var localZ = d.Z != null && d3_date !== d3_date_utc, date = new (localZ ? d3_date_utc : d3_date)();\n        if (\"j\" in d) date.setFullYear(d.y, 0, d.j); else if (\"W\" in d || \"U\" in d) {\n          if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n          date.setFullYear(d.y, 0, 1);\n          date.setFullYear(d.y, 0, \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (date.getDay() + 5) % 7 : d.w + d.U * 7 - (date.getDay() + 6) % 7);\n        } else date.setFullYear(d.y, d.m, d.d);\n        date.setHours(d.H + (d.Z / 100 | 0), d.M + d.Z % 100, d.S, d.L);\n        return localZ ? date._ : date;\n      };\n      format.toString = function() {\n        return template;\n      };\n      return format;\n    }\n    function d3_time_parse(date, template, string, j) {\n      var c, p, t, i = 0, n = template.length, m = string.length;\n      while (i < n) {\n        if (j >= m) return -1;\n        c = template.charCodeAt(i++);\n        if (c === 37) {\n          t = template.charAt(i++);\n          p = d3_time_parsers[t in d3_time_formatPads ? template.charAt(i++) : t];\n          if (!p || (j = p(date, string, j)) < 0) return -1;\n        } else if (c != string.charCodeAt(j++)) {\n          return -1;\n        }\n      }\n      return j;\n    }\n    d3_time_format.utc = function(template) {\n      var local = d3_time_format(template);\n      function format(date) {\n        try {\n          d3_date = d3_date_utc;\n          var utc = new d3_date();\n          utc._ = date;\n          return local(utc);\n        } finally {\n          d3_date = Date;\n        }\n      }\n      format.parse = function(string) {\n        try {\n          d3_date = d3_date_utc;\n          var date = local.parse(string);\n          return date && date._;\n        } finally {\n          d3_date = Date;\n        }\n      };\n      format.toString = local.toString;\n      return format;\n    };\n    d3_time_format.multi = d3_time_format.utc.multi = d3_time_formatMulti;\n    var d3_time_periodLookup = d3.map(), d3_time_dayRe = d3_time_formatRe(locale_days), d3_time_dayLookup = d3_time_formatLookup(locale_days), d3_time_dayAbbrevRe = d3_time_formatRe(locale_shortDays), d3_time_dayAbbrevLookup = d3_time_formatLookup(locale_shortDays), d3_time_monthRe = d3_time_formatRe(locale_months), d3_time_monthLookup = d3_time_formatLookup(locale_months), d3_time_monthAbbrevRe = d3_time_formatRe(locale_shortMonths), d3_time_monthAbbrevLookup = d3_time_formatLookup(locale_shortMonths);\n    locale_periods.forEach(function(p, i) {\n      d3_time_periodLookup.set(p.toLowerCase(), i);\n    });\n    var d3_time_formats = {\n      a: function(d) {\n        return locale_shortDays[d.getDay()];\n      },\n      A: function(d) {\n        return locale_days[d.getDay()];\n      },\n      b: function(d) {\n        return locale_shortMonths[d.getMonth()];\n      },\n      B: function(d) {\n        return locale_months[d.getMonth()];\n      },\n      c: d3_time_format(locale_dateTime),\n      d: function(d, p) {\n        return d3_time_formatPad(d.getDate(), p, 2);\n      },\n      e: function(d, p) {\n        return d3_time_formatPad(d.getDate(), p, 2);\n      },\n      H: function(d, p) {\n        return d3_time_formatPad(d.getHours(), p, 2);\n      },\n      I: function(d, p) {\n        return d3_time_formatPad(d.getHours() % 12 || 12, p, 2);\n      },\n      j: function(d, p) {\n        return d3_time_formatPad(1 + d3_time.dayOfYear(d), p, 3);\n      },\n      L: function(d, p) {\n        return d3_time_formatPad(d.getMilliseconds(), p, 3);\n      },\n      m: function(d, p) {\n        return d3_time_formatPad(d.getMonth() + 1, p, 2);\n      },\n      M: function(d, p) {\n        return d3_time_formatPad(d.getMinutes(), p, 2);\n      },\n      p: function(d) {\n        return locale_periods[+(d.getHours() >= 12)];\n      },\n      S: function(d, p) {\n        return d3_time_formatPad(d.getSeconds(), p, 2);\n      },\n      U: function(d, p) {\n        return d3_time_formatPad(d3_time.sundayOfYear(d), p, 2);\n      },\n      w: function(d) {\n        return d.getDay();\n      },\n      W: function(d, p) {\n        return d3_time_formatPad(d3_time.mondayOfYear(d), p, 2);\n      },\n      x: d3_time_format(locale_date),\n      X: d3_time_format(locale_time),\n      y: function(d, p) {\n        return d3_time_formatPad(d.getFullYear() % 100, p, 2);\n      },\n      Y: function(d, p) {\n        return d3_time_formatPad(d.getFullYear() % 1e4, p, 4);\n      },\n      Z: d3_time_zone,\n      \"%\": function() {\n        return \"%\";\n      }\n    };\n    var d3_time_parsers = {\n      a: d3_time_parseWeekdayAbbrev,\n      A: d3_time_parseWeekday,\n      b: d3_time_parseMonthAbbrev,\n      B: d3_time_parseMonth,\n      c: d3_time_parseLocaleFull,\n      d: d3_time_parseDay,\n      e: d3_time_parseDay,\n      H: d3_time_parseHour24,\n      I: d3_time_parseHour24,\n      j: d3_time_parseDayOfYear,\n      L: d3_time_parseMilliseconds,\n      m: d3_time_parseMonthNumber,\n      M: d3_time_parseMinutes,\n      p: d3_time_parseAmPm,\n      S: d3_time_parseSeconds,\n      U: d3_time_parseWeekNumberSunday,\n      w: d3_time_parseWeekdayNumber,\n      W: d3_time_parseWeekNumberMonday,\n      x: d3_time_parseLocaleDate,\n      X: d3_time_parseLocaleTime,\n      y: d3_time_parseYear,\n      Y: d3_time_parseFullYear,\n      Z: d3_time_parseZone,\n      \"%\": d3_time_parseLiteralPercent\n    };\n    function d3_time_parseWeekdayAbbrev(date, string, i) {\n      d3_time_dayAbbrevRe.lastIndex = 0;\n      var n = d3_time_dayAbbrevRe.exec(string.slice(i));\n      return n ? (date.w = d3_time_dayAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n    }\n    function d3_time_parseWeekday(date, string, i) {\n      d3_time_dayRe.lastIndex = 0;\n      var n = d3_time_dayRe.exec(string.slice(i));\n      return n ? (date.w = d3_time_dayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n    }\n    function d3_time_parseMonthAbbrev(date, string, i) {\n      d3_time_monthAbbrevRe.lastIndex = 0;\n      var n = d3_time_monthAbbrevRe.exec(string.slice(i));\n      return n ? (date.m = d3_time_monthAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n    }\n    function d3_time_parseMonth(date, string, i) {\n      d3_time_monthRe.lastIndex = 0;\n      var n = d3_time_monthRe.exec(string.slice(i));\n      return n ? (date.m = d3_time_monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n    }\n    function d3_time_parseLocaleFull(date, string, i) {\n      return d3_time_parse(date, d3_time_formats.c.toString(), string, i);\n    }\n    function d3_time_parseLocaleDate(date, string, i) {\n      return d3_time_parse(date, d3_time_formats.x.toString(), string, i);\n    }\n    function d3_time_parseLocaleTime(date, string, i) {\n      return d3_time_parse(date, d3_time_formats.X.toString(), string, i);\n    }\n    function d3_time_parseAmPm(date, string, i) {\n      var n = d3_time_periodLookup.get(string.slice(i, i += 2).toLowerCase());\n      return n == null ? -1 : (date.p = n, i);\n    }\n    return d3_time_format;\n  }\n  var d3_time_formatPads = {\n    \"-\": \"\",\n    _: \" \",\n    \"0\": \"0\"\n  }, d3_time_numberRe = /^\\s*\\d+/, d3_time_percentRe = /^%/;\n  function d3_time_formatPad(value, fill, width) {\n    var sign = value < 0 ? \"-\" : \"\", string = (sign ? -value : value) + \"\", length = string.length;\n    return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n  }\n  function d3_time_formatRe(names) {\n    return new RegExp(\"^(?:\" + names.map(d3.requote).join(\"|\") + \")\", \"i\");\n  }\n  function d3_time_formatLookup(names) {\n    var map = new d3_Map(), i = -1, n = names.length;\n    while (++i < n) map.set(names[i].toLowerCase(), i);\n    return map;\n  }\n  function d3_time_parseWeekdayNumber(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 1));\n    return n ? (date.w = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseWeekNumberSunday(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i));\n    return n ? (date.U = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseWeekNumberMonday(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i));\n    return n ? (date.W = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseFullYear(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 4));\n    return n ? (date.y = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseYear(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n    return n ? (date.y = d3_time_expandYear(+n[0]), i + n[0].length) : -1;\n  }\n  function d3_time_parseZone(date, string, i) {\n    return /^[+-]\\d{4}$/.test(string = string.slice(i, i + 5)) ? (date.Z = -string, \n    i + 5) : -1;\n  }\n  function d3_time_expandYear(d) {\n    return d + (d > 68 ? 1900 : 2e3);\n  }\n  function d3_time_parseMonthNumber(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n    return n ? (date.m = n[0] - 1, i + n[0].length) : -1;\n  }\n  function d3_time_parseDay(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n    return n ? (date.d = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseDayOfYear(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 3));\n    return n ? (date.j = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseHour24(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n    return n ? (date.H = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseMinutes(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n    return n ? (date.M = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseSeconds(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n    return n ? (date.S = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseMilliseconds(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 3));\n    return n ? (date.L = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_zone(d) {\n    var z = d.getTimezoneOffset(), zs = z > 0 ? \"-\" : \"+\", zh = abs(z) / 60 | 0, zm = abs(z) % 60;\n    return zs + d3_time_formatPad(zh, \"0\", 2) + d3_time_formatPad(zm, \"0\", 2);\n  }\n  function d3_time_parseLiteralPercent(date, string, i) {\n    d3_time_percentRe.lastIndex = 0;\n    var n = d3_time_percentRe.exec(string.slice(i, i + 1));\n    return n ? i + n[0].length : -1;\n  }\n  function d3_time_formatMulti(formats) {\n    var n = formats.length, i = -1;\n    while (++i < n) formats[i][0] = this(formats[i][0]);\n    return function(date) {\n      var i = 0, f = formats[i];\n      while (!f[1](date)) f = formats[++i];\n      return f[0](date);\n    };\n  }\n  d3.locale = function(locale) {\n    return {\n      numberFormat: d3_locale_numberFormat(locale),\n      timeFormat: d3_locale_timeFormat(locale)\n    };\n  };\n  var d3_locale_enUS = d3.locale({\n    decimal: \".\",\n    thousands: \",\",\n    grouping: [ 3 ],\n    currency: [ \"$\", \"\" ],\n    dateTime: \"%a %b %e %X %Y\",\n    date: \"%m/%d/%Y\",\n    time: \"%H:%M:%S\",\n    periods: [ \"AM\", \"PM\" ],\n    days: [ \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\" ],\n    shortDays: [ \"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\" ],\n    months: [ \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\" ],\n    shortMonths: [ \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\" ]\n  });\n  d3.format = d3_locale_enUS.numberFormat;\n  d3.geo = {};\n  function d3_adder() {}\n  d3_adder.prototype = {\n    s: 0,\n    t: 0,\n    add: function(y) {\n      d3_adderSum(y, this.t, d3_adderTemp);\n      d3_adderSum(d3_adderTemp.s, this.s, this);\n      if (this.s) this.t += d3_adderTemp.t; else this.s = d3_adderTemp.t;\n    },\n    reset: function() {\n      this.s = this.t = 0;\n    },\n    valueOf: function() {\n      return this.s;\n    }\n  };\n  var d3_adderTemp = new d3_adder();\n  function d3_adderSum(a, b, o) {\n    var x = o.s = a + b, bv = x - a, av = x - bv;\n    o.t = a - av + (b - bv);\n  }\n  d3.geo.stream = function(object, listener) {\n    if (object && d3_geo_streamObjectType.hasOwnProperty(object.type)) {\n      d3_geo_streamObjectType[object.type](object, listener);\n    } else {\n      d3_geo_streamGeometry(object, listener);\n    }\n  };\n  function d3_geo_streamGeometry(geometry, listener) {\n    if (geometry && d3_geo_streamGeometryType.hasOwnProperty(geometry.type)) {\n      d3_geo_streamGeometryType[geometry.type](geometry, listener);\n    }\n  }\n  var d3_geo_streamObjectType = {\n    Feature: function(feature, listener) {\n      d3_geo_streamGeometry(feature.geometry, listener);\n    },\n    FeatureCollection: function(object, listener) {\n      var features = object.features, i = -1, n = features.length;\n      while (++i < n) d3_geo_streamGeometry(features[i].geometry, listener);\n    }\n  };\n  var d3_geo_streamGeometryType = {\n    Sphere: function(object, listener) {\n      listener.sphere();\n    },\n    Point: function(object, listener) {\n      object = object.coordinates;\n      listener.point(object[0], object[1], object[2]);\n    },\n    MultiPoint: function(object, listener) {\n      var coordinates = object.coordinates, i = -1, n = coordinates.length;\n      while (++i < n) object = coordinates[i], listener.point(object[0], object[1], object[2]);\n    },\n    LineString: function(object, listener) {\n      d3_geo_streamLine(object.coordinates, listener, 0);\n    },\n    MultiLineString: function(object, listener) {\n      var coordinates = object.coordinates, i = -1, n = coordinates.length;\n      while (++i < n) d3_geo_streamLine(coordinates[i], listener, 0);\n    },\n    Polygon: function(object, listener) {\n      d3_geo_streamPolygon(object.coordinates, listener);\n    },\n    MultiPolygon: function(object, listener) {\n      var coordinates = object.coordinates, i = -1, n = coordinates.length;\n      while (++i < n) d3_geo_streamPolygon(coordinates[i], listener);\n    },\n    GeometryCollection: function(object, listener) {\n      var geometries = object.geometries, i = -1, n = geometries.length;\n      while (++i < n) d3_geo_streamGeometry(geometries[i], listener);\n    }\n  };\n  function d3_geo_streamLine(coordinates, listener, closed) {\n    var i = -1, n = coordinates.length - closed, coordinate;\n    listener.lineStart();\n    while (++i < n) coordinate = coordinates[i], listener.point(coordinate[0], coordinate[1], coordinate[2]);\n    listener.lineEnd();\n  }\n  function d3_geo_streamPolygon(coordinates, listener) {\n    var i = -1, n = coordinates.length;\n    listener.polygonStart();\n    while (++i < n) d3_geo_streamLine(coordinates[i], listener, 1);\n    listener.polygonEnd();\n  }\n  d3.geo.area = function(object) {\n    d3_geo_areaSum = 0;\n    d3.geo.stream(object, d3_geo_area);\n    return d3_geo_areaSum;\n  };\n  var d3_geo_areaSum, d3_geo_areaRingSum = new d3_adder();\n  var d3_geo_area = {\n    sphere: function() {\n      d3_geo_areaSum += 4 * π;\n    },\n    point: d3_noop,\n    lineStart: d3_noop,\n    lineEnd: d3_noop,\n    polygonStart: function() {\n      d3_geo_areaRingSum.reset();\n      d3_geo_area.lineStart = d3_geo_areaRingStart;\n    },\n    polygonEnd: function() {\n      var area = 2 * d3_geo_areaRingSum;\n      d3_geo_areaSum += area < 0 ? 4 * π + area : area;\n      d3_geo_area.lineStart = d3_geo_area.lineEnd = d3_geo_area.point = d3_noop;\n    }\n  };\n  function d3_geo_areaRingStart() {\n    var λ00, φ00, λ0, cosφ0, sinφ0;\n    d3_geo_area.point = function(λ, φ) {\n      d3_geo_area.point = nextPoint;\n      λ0 = (λ00 = λ) * d3_radians, cosφ0 = Math.cos(φ = (φ00 = φ) * d3_radians / 2 + π / 4), \n      sinφ0 = Math.sin(φ);\n    };\n    function nextPoint(λ, φ) {\n      λ *= d3_radians;\n      φ = φ * d3_radians / 2 + π / 4;\n      var dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, cosφ = Math.cos(φ), sinφ = Math.sin(φ), k = sinφ0 * sinφ, u = cosφ0 * cosφ + k * Math.cos(adλ), v = k * sdλ * Math.sin(adλ);\n      d3_geo_areaRingSum.add(Math.atan2(v, u));\n      λ0 = λ, cosφ0 = cosφ, sinφ0 = sinφ;\n    }\n    d3_geo_area.lineEnd = function() {\n      nextPoint(λ00, φ00);\n    };\n  }\n  function d3_geo_cartesian(spherical) {\n    var λ = spherical[0], φ = spherical[1], cosφ = Math.cos(φ);\n    return [ cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ) ];\n  }\n  function d3_geo_cartesianDot(a, b) {\n    return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n  }\n  function d3_geo_cartesianCross(a, b) {\n    return [ a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0] ];\n  }\n  function d3_geo_cartesianAdd(a, b) {\n    a[0] += b[0];\n    a[1] += b[1];\n    a[2] += b[2];\n  }\n  function d3_geo_cartesianScale(vector, k) {\n    return [ vector[0] * k, vector[1] * k, vector[2] * k ];\n  }\n  function d3_geo_cartesianNormalize(d) {\n    var l = Math.sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n    d[0] /= l;\n    d[1] /= l;\n    d[2] /= l;\n  }\n  function d3_geo_spherical(cartesian) {\n    return [ Math.atan2(cartesian[1], cartesian[0]), d3_asin(cartesian[2]) ];\n  }\n  function d3_geo_sphericalEqual(a, b) {\n    return abs(a[0] - b[0]) < ε && abs(a[1] - b[1]) < ε;\n  }\n  d3.geo.bounds = function() {\n    var λ0, φ0, λ1, φ1, λ_, λ__, φ__, p0, dλSum, ranges, range;\n    var bound = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: function() {\n        bound.point = ringPoint;\n        bound.lineStart = ringStart;\n        bound.lineEnd = ringEnd;\n        dλSum = 0;\n        d3_geo_area.polygonStart();\n      },\n      polygonEnd: function() {\n        d3_geo_area.polygonEnd();\n        bound.point = point;\n        bound.lineStart = lineStart;\n        bound.lineEnd = lineEnd;\n        if (d3_geo_areaRingSum < 0) λ0 = -(λ1 = 180), φ0 = -(φ1 = 90); else if (dλSum > ε) φ1 = 90; else if (dλSum < -ε) φ0 = -90;\n        range[0] = λ0, range[1] = λ1;\n      }\n    };\n    function point(λ, φ) {\n      ranges.push(range = [ λ0 = λ, λ1 = λ ]);\n      if (φ < φ0) φ0 = φ;\n      if (φ > φ1) φ1 = φ;\n    }\n    function linePoint(λ, φ) {\n      var p = d3_geo_cartesian([ λ * d3_radians, φ * d3_radians ]);\n      if (p0) {\n        var normal = d3_geo_cartesianCross(p0, p), equatorial = [ normal[1], -normal[0], 0 ], inflection = d3_geo_cartesianCross(equatorial, normal);\n        d3_geo_cartesianNormalize(inflection);\n        inflection = d3_geo_spherical(inflection);\n        var dλ = λ - λ_, s = dλ > 0 ? 1 : -1, λi = inflection[0] * d3_degrees * s, antimeridian = abs(dλ) > 180;\n        if (antimeridian ^ (s * λ_ < λi && λi < s * λ)) {\n          var φi = inflection[1] * d3_degrees;\n          if (φi > φ1) φ1 = φi;\n        } else if (λi = (λi + 360) % 360 - 180, antimeridian ^ (s * λ_ < λi && λi < s * λ)) {\n          var φi = -inflection[1] * d3_degrees;\n          if (φi < φ0) φ0 = φi;\n        } else {\n          if (φ < φ0) φ0 = φ;\n          if (φ > φ1) φ1 = φ;\n        }\n        if (antimeridian) {\n          if (λ < λ_) {\n            if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;\n          } else {\n            if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;\n          }\n        } else {\n          if (λ1 >= λ0) {\n            if (λ < λ0) λ0 = λ;\n            if (λ > λ1) λ1 = λ;\n          } else {\n            if (λ > λ_) {\n              if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;\n            } else {\n              if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;\n            }\n          }\n        }\n      } else {\n        point(λ, φ);\n      }\n      p0 = p, λ_ = λ;\n    }\n    function lineStart() {\n      bound.point = linePoint;\n    }\n    function lineEnd() {\n      range[0] = λ0, range[1] = λ1;\n      bound.point = point;\n      p0 = null;\n    }\n    function ringPoint(λ, φ) {\n      if (p0) {\n        var dλ = λ - λ_;\n        dλSum += abs(dλ) > 180 ? dλ + (dλ > 0 ? 360 : -360) : dλ;\n      } else λ__ = λ, φ__ = φ;\n      d3_geo_area.point(λ, φ);\n      linePoint(λ, φ);\n    }\n    function ringStart() {\n      d3_geo_area.lineStart();\n    }\n    function ringEnd() {\n      ringPoint(λ__, φ__);\n      d3_geo_area.lineEnd();\n      if (abs(dλSum) > ε) λ0 = -(λ1 = 180);\n      range[0] = λ0, range[1] = λ1;\n      p0 = null;\n    }\n    function angle(λ0, λ1) {\n      return (λ1 -= λ0) < 0 ? λ1 + 360 : λ1;\n    }\n    function compareRanges(a, b) {\n      return a[0] - b[0];\n    }\n    function withinRange(x, range) {\n      return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n    }\n    return function(feature) {\n      φ1 = λ1 = -(λ0 = φ0 = Infinity);\n      ranges = [];\n      d3.geo.stream(feature, bound);\n      var n = ranges.length;\n      if (n) {\n        ranges.sort(compareRanges);\n        for (var i = 1, a = ranges[0], b, merged = [ a ]; i < n; ++i) {\n          b = ranges[i];\n          if (withinRange(b[0], a) || withinRange(b[1], a)) {\n            if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n            if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n          } else {\n            merged.push(a = b);\n          }\n        }\n        var best = -Infinity, dλ;\n        for (var n = merged.length - 1, i = 0, a = merged[n], b; i <= n; a = b, ++i) {\n          b = merged[i];\n          if ((dλ = angle(a[1], b[0])) > best) best = dλ, λ0 = b[0], λ1 = a[1];\n        }\n      }\n      ranges = range = null;\n      return λ0 === Infinity || φ0 === Infinity ? [ [ NaN, NaN ], [ NaN, NaN ] ] : [ [ λ0, φ0 ], [ λ1, φ1 ] ];\n    };\n  }();\n  d3.geo.centroid = function(object) {\n    d3_geo_centroidW0 = d3_geo_centroidW1 = d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;\n    d3.geo.stream(object, d3_geo_centroid);\n    var x = d3_geo_centroidX2, y = d3_geo_centroidY2, z = d3_geo_centroidZ2, m = x * x + y * y + z * z;\n    if (m < ε2) {\n      x = d3_geo_centroidX1, y = d3_geo_centroidY1, z = d3_geo_centroidZ1;\n      if (d3_geo_centroidW1 < ε) x = d3_geo_centroidX0, y = d3_geo_centroidY0, z = d3_geo_centroidZ0;\n      m = x * x + y * y + z * z;\n      if (m < ε2) return [ NaN, NaN ];\n    }\n    return [ Math.atan2(y, x) * d3_degrees, d3_asin(z / Math.sqrt(m)) * d3_degrees ];\n  };\n  var d3_geo_centroidW0, d3_geo_centroidW1, d3_geo_centroidX0, d3_geo_centroidY0, d3_geo_centroidZ0, d3_geo_centroidX1, d3_geo_centroidY1, d3_geo_centroidZ1, d3_geo_centroidX2, d3_geo_centroidY2, d3_geo_centroidZ2;\n  var d3_geo_centroid = {\n    sphere: d3_noop,\n    point: d3_geo_centroidPoint,\n    lineStart: d3_geo_centroidLineStart,\n    lineEnd: d3_geo_centroidLineEnd,\n    polygonStart: function() {\n      d3_geo_centroid.lineStart = d3_geo_centroidRingStart;\n    },\n    polygonEnd: function() {\n      d3_geo_centroid.lineStart = d3_geo_centroidLineStart;\n    }\n  };\n  function d3_geo_centroidPoint(λ, φ) {\n    λ *= d3_radians;\n    var cosφ = Math.cos(φ *= d3_radians);\n    d3_geo_centroidPointXYZ(cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ));\n  }\n  function d3_geo_centroidPointXYZ(x, y, z) {\n    ++d3_geo_centroidW0;\n    d3_geo_centroidX0 += (x - d3_geo_centroidX0) / d3_geo_centroidW0;\n    d3_geo_centroidY0 += (y - d3_geo_centroidY0) / d3_geo_centroidW0;\n    d3_geo_centroidZ0 += (z - d3_geo_centroidZ0) / d3_geo_centroidW0;\n  }\n  function d3_geo_centroidLineStart() {\n    var x0, y0, z0;\n    d3_geo_centroid.point = function(λ, φ) {\n      λ *= d3_radians;\n      var cosφ = Math.cos(φ *= d3_radians);\n      x0 = cosφ * Math.cos(λ);\n      y0 = cosφ * Math.sin(λ);\n      z0 = Math.sin(φ);\n      d3_geo_centroid.point = nextPoint;\n      d3_geo_centroidPointXYZ(x0, y0, z0);\n    };\n    function nextPoint(λ, φ) {\n      λ *= d3_radians;\n      var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), w = Math.atan2(Math.sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n      d3_geo_centroidW1 += w;\n      d3_geo_centroidX1 += w * (x0 + (x0 = x));\n      d3_geo_centroidY1 += w * (y0 + (y0 = y));\n      d3_geo_centroidZ1 += w * (z0 + (z0 = z));\n      d3_geo_centroidPointXYZ(x0, y0, z0);\n    }\n  }\n  function d3_geo_centroidLineEnd() {\n    d3_geo_centroid.point = d3_geo_centroidPoint;\n  }\n  function d3_geo_centroidRingStart() {\n    var λ00, φ00, x0, y0, z0;\n    d3_geo_centroid.point = function(λ, φ) {\n      λ00 = λ, φ00 = φ;\n      d3_geo_centroid.point = nextPoint;\n      λ *= d3_radians;\n      var cosφ = Math.cos(φ *= d3_radians);\n      x0 = cosφ * Math.cos(λ);\n      y0 = cosφ * Math.sin(λ);\n      z0 = Math.sin(φ);\n      d3_geo_centroidPointXYZ(x0, y0, z0);\n    };\n    d3_geo_centroid.lineEnd = function() {\n      nextPoint(λ00, φ00);\n      d3_geo_centroid.lineEnd = d3_geo_centroidLineEnd;\n      d3_geo_centroid.point = d3_geo_centroidPoint;\n    };\n    function nextPoint(λ, φ) {\n      λ *= d3_radians;\n      var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), cx = y0 * z - z0 * y, cy = z0 * x - x0 * z, cz = x0 * y - y0 * x, m = Math.sqrt(cx * cx + cy * cy + cz * cz), u = x0 * x + y0 * y + z0 * z, v = m && -d3_acos(u) / m, w = Math.atan2(m, u);\n      d3_geo_centroidX2 += v * cx;\n      d3_geo_centroidY2 += v * cy;\n      d3_geo_centroidZ2 += v * cz;\n      d3_geo_centroidW1 += w;\n      d3_geo_centroidX1 += w * (x0 + (x0 = x));\n      d3_geo_centroidY1 += w * (y0 + (y0 = y));\n      d3_geo_centroidZ1 += w * (z0 + (z0 = z));\n      d3_geo_centroidPointXYZ(x0, y0, z0);\n    }\n  }\n  function d3_geo_compose(a, b) {\n    function compose(x, y) {\n      return x = a(x, y), b(x[0], x[1]);\n    }\n    if (a.invert && b.invert) compose.invert = function(x, y) {\n      return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n    };\n    return compose;\n  }\n  function d3_true() {\n    return true;\n  }\n  function d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener) {\n    var subject = [], clip = [];\n    segments.forEach(function(segment) {\n      if ((n = segment.length - 1) <= 0) return;\n      var n, p0 = segment[0], p1 = segment[n];\n      if (d3_geo_sphericalEqual(p0, p1)) {\n        listener.lineStart();\n        for (var i = 0; i < n; ++i) listener.point((p0 = segment[i])[0], p0[1]);\n        listener.lineEnd();\n        return;\n      }\n      var a = new d3_geo_clipPolygonIntersection(p0, segment, null, true), b = new d3_geo_clipPolygonIntersection(p0, null, a, false);\n      a.o = b;\n      subject.push(a);\n      clip.push(b);\n      a = new d3_geo_clipPolygonIntersection(p1, segment, null, false);\n      b = new d3_geo_clipPolygonIntersection(p1, null, a, true);\n      a.o = b;\n      subject.push(a);\n      clip.push(b);\n    });\n    clip.sort(compare);\n    d3_geo_clipPolygonLinkCircular(subject);\n    d3_geo_clipPolygonLinkCircular(clip);\n    if (!subject.length) return;\n    for (var i = 0, entry = clipStartInside, n = clip.length; i < n; ++i) {\n      clip[i].e = entry = !entry;\n    }\n    var start = subject[0], points, point;\n    while (1) {\n      var current = start, isSubject = true;\n      while (current.v) if ((current = current.n) === start) return;\n      points = current.z;\n      listener.lineStart();\n      do {\n        current.v = current.o.v = true;\n        if (current.e) {\n          if (isSubject) {\n            for (var i = 0, n = points.length; i < n; ++i) listener.point((point = points[i])[0], point[1]);\n          } else {\n            interpolate(current.x, current.n.x, 1, listener);\n          }\n          current = current.n;\n        } else {\n          if (isSubject) {\n            points = current.p.z;\n            for (var i = points.length - 1; i >= 0; --i) listener.point((point = points[i])[0], point[1]);\n          } else {\n            interpolate(current.x, current.p.x, -1, listener);\n          }\n          current = current.p;\n        }\n        current = current.o;\n        points = current.z;\n        isSubject = !isSubject;\n      } while (!current.v);\n      listener.lineEnd();\n    }\n  }\n  function d3_geo_clipPolygonLinkCircular(array) {\n    if (!(n = array.length)) return;\n    var n, i = 0, a = array[0], b;\n    while (++i < n) {\n      a.n = b = array[i];\n      b.p = a;\n      a = b;\n    }\n    a.n = b = array[0];\n    b.p = a;\n  }\n  function d3_geo_clipPolygonIntersection(point, points, other, entry) {\n    this.x = point;\n    this.z = points;\n    this.o = other;\n    this.e = entry;\n    this.v = false;\n    this.n = this.p = null;\n  }\n  function d3_geo_clip(pointVisible, clipLine, interpolate, clipStart) {\n    return function(rotate, listener) {\n      var line = clipLine(listener), rotatedClipStart = rotate.invert(clipStart[0], clipStart[1]);\n      var clip = {\n        point: point,\n        lineStart: lineStart,\n        lineEnd: lineEnd,\n        polygonStart: function() {\n          clip.point = pointRing;\n          clip.lineStart = ringStart;\n          clip.lineEnd = ringEnd;\n          segments = [];\n          polygon = [];\n        },\n        polygonEnd: function() {\n          clip.point = point;\n          clip.lineStart = lineStart;\n          clip.lineEnd = lineEnd;\n          segments = d3.merge(segments);\n          var clipStartInside = d3_geo_pointInPolygon(rotatedClipStart, polygon);\n          if (segments.length) {\n            if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n            d3_geo_clipPolygon(segments, d3_geo_clipSort, clipStartInside, interpolate, listener);\n          } else if (clipStartInside) {\n            if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n            listener.lineStart();\n            interpolate(null, null, 1, listener);\n            listener.lineEnd();\n          }\n          if (polygonStarted) listener.polygonEnd(), polygonStarted = false;\n          segments = polygon = null;\n        },\n        sphere: function() {\n          listener.polygonStart();\n          listener.lineStart();\n          interpolate(null, null, 1, listener);\n          listener.lineEnd();\n          listener.polygonEnd();\n        }\n      };\n      function point(λ, φ) {\n        var point = rotate(λ, φ);\n        if (pointVisible(λ = point[0], φ = point[1])) listener.point(λ, φ);\n      }\n      function pointLine(λ, φ) {\n        var point = rotate(λ, φ);\n        line.point(point[0], point[1]);\n      }\n      function lineStart() {\n        clip.point = pointLine;\n        line.lineStart();\n      }\n      function lineEnd() {\n        clip.point = point;\n        line.lineEnd();\n      }\n      var segments;\n      var buffer = d3_geo_clipBufferListener(), ringListener = clipLine(buffer), polygonStarted = false, polygon, ring;\n      function pointRing(λ, φ) {\n        ring.push([ λ, φ ]);\n        var point = rotate(λ, φ);\n        ringListener.point(point[0], point[1]);\n      }\n      function ringStart() {\n        ringListener.lineStart();\n        ring = [];\n      }\n      function ringEnd() {\n        pointRing(ring[0][0], ring[0][1]);\n        ringListener.lineEnd();\n        var clean = ringListener.clean(), ringSegments = buffer.buffer(), segment, n = ringSegments.length;\n        ring.pop();\n        polygon.push(ring);\n        ring = null;\n        if (!n) return;\n        if (clean & 1) {\n          segment = ringSegments[0];\n          var n = segment.length - 1, i = -1, point;\n          if (n > 0) {\n            if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n            listener.lineStart();\n            while (++i < n) listener.point((point = segment[i])[0], point[1]);\n            listener.lineEnd();\n          }\n          return;\n        }\n        if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n        segments.push(ringSegments.filter(d3_geo_clipSegmentLength1));\n      }\n      return clip;\n    };\n  }\n  function d3_geo_clipSegmentLength1(segment) {\n    return segment.length > 1;\n  }\n  function d3_geo_clipBufferListener() {\n    var lines = [], line;\n    return {\n      lineStart: function() {\n        lines.push(line = []);\n      },\n      point: function(λ, φ) {\n        line.push([ λ, φ ]);\n      },\n      lineEnd: d3_noop,\n      buffer: function() {\n        var buffer = lines;\n        lines = [];\n        line = null;\n        return buffer;\n      },\n      rejoin: function() {\n        if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n      }\n    };\n  }\n  function d3_geo_clipSort(a, b) {\n    return ((a = a.x)[0] < 0 ? a[1] - halfπ - ε : halfπ - a[1]) - ((b = b.x)[0] < 0 ? b[1] - halfπ - ε : halfπ - b[1]);\n  }\n  var d3_geo_clipAntimeridian = d3_geo_clip(d3_true, d3_geo_clipAntimeridianLine, d3_geo_clipAntimeridianInterpolate, [ -π, -π / 2 ]);\n  function d3_geo_clipAntimeridianLine(listener) {\n    var λ0 = NaN, φ0 = NaN, sλ0 = NaN, clean;\n    return {\n      lineStart: function() {\n        listener.lineStart();\n        clean = 1;\n      },\n      point: function(λ1, φ1) {\n        var sλ1 = λ1 > 0 ? π : -π, dλ = abs(λ1 - λ0);\n        if (abs(dλ - π) < ε) {\n          listener.point(λ0, φ0 = (φ0 + φ1) / 2 > 0 ? halfπ : -halfπ);\n          listener.point(sλ0, φ0);\n          listener.lineEnd();\n          listener.lineStart();\n          listener.point(sλ1, φ0);\n          listener.point(λ1, φ0);\n          clean = 0;\n        } else if (sλ0 !== sλ1 && dλ >= π) {\n          if (abs(λ0 - sλ0) < ε) λ0 -= sλ0 * ε;\n          if (abs(λ1 - sλ1) < ε) λ1 -= sλ1 * ε;\n          φ0 = d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1);\n          listener.point(sλ0, φ0);\n          listener.lineEnd();\n          listener.lineStart();\n          listener.point(sλ1, φ0);\n          clean = 0;\n        }\n        listener.point(λ0 = λ1, φ0 = φ1);\n        sλ0 = sλ1;\n      },\n      lineEnd: function() {\n        listener.lineEnd();\n        λ0 = φ0 = NaN;\n      },\n      clean: function() {\n        return 2 - clean;\n      }\n    };\n  }\n  function d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1) {\n    var cosφ0, cosφ1, sinλ0_λ1 = Math.sin(λ0 - λ1);\n    return abs(sinλ0_λ1) > ε ? Math.atan((Math.sin(φ0) * (cosφ1 = Math.cos(φ1)) * Math.sin(λ1) - Math.sin(φ1) * (cosφ0 = Math.cos(φ0)) * Math.sin(λ0)) / (cosφ0 * cosφ1 * sinλ0_λ1)) : (φ0 + φ1) / 2;\n  }\n  function d3_geo_clipAntimeridianInterpolate(from, to, direction, listener) {\n    var φ;\n    if (from == null) {\n      φ = direction * halfπ;\n      listener.point(-π, φ);\n      listener.point(0, φ);\n      listener.point(π, φ);\n      listener.point(π, 0);\n      listener.point(π, -φ);\n      listener.point(0, -φ);\n      listener.point(-π, -φ);\n      listener.point(-π, 0);\n      listener.point(-π, φ);\n    } else if (abs(from[0] - to[0]) > ε) {\n      var s = from[0] < to[0] ? π : -π;\n      φ = direction * s / 2;\n      listener.point(-s, φ);\n      listener.point(0, φ);\n      listener.point(s, φ);\n    } else {\n      listener.point(to[0], to[1]);\n    }\n  }\n  function d3_geo_pointInPolygon(point, polygon) {\n    var meridian = point[0], parallel = point[1], meridianNormal = [ Math.sin(meridian), -Math.cos(meridian), 0 ], polarAngle = 0, winding = 0;\n    d3_geo_areaRingSum.reset();\n    for (var i = 0, n = polygon.length; i < n; ++i) {\n      var ring = polygon[i], m = ring.length;\n      if (!m) continue;\n      var point0 = ring[0], λ0 = point0[0], φ0 = point0[1] / 2 + π / 4, sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), j = 1;\n      while (true) {\n        if (j === m) j = 0;\n        point = ring[j];\n        var λ = point[0], φ = point[1] / 2 + π / 4, sinφ = Math.sin(φ), cosφ = Math.cos(φ), dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, antimeridian = adλ > π, k = sinφ0 * sinφ;\n        d3_geo_areaRingSum.add(Math.atan2(k * sdλ * Math.sin(adλ), cosφ0 * cosφ + k * Math.cos(adλ)));\n        polarAngle += antimeridian ? dλ + sdλ * τ : dλ;\n        if (antimeridian ^ λ0 >= meridian ^ λ >= meridian) {\n          var arc = d3_geo_cartesianCross(d3_geo_cartesian(point0), d3_geo_cartesian(point));\n          d3_geo_cartesianNormalize(arc);\n          var intersection = d3_geo_cartesianCross(meridianNormal, arc);\n          d3_geo_cartesianNormalize(intersection);\n          var φarc = (antimeridian ^ dλ >= 0 ? -1 : 1) * d3_asin(intersection[2]);\n          if (parallel > φarc || parallel === φarc && (arc[0] || arc[1])) {\n            winding += antimeridian ^ dλ >= 0 ? 1 : -1;\n          }\n        }\n        if (!j++) break;\n        λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ, point0 = point;\n      }\n    }\n    return (polarAngle < -ε || polarAngle < ε && d3_geo_areaRingSum < -ε) ^ winding & 1;\n  }\n  function d3_geo_clipCircle(radius) {\n    var cr = Math.cos(radius), smallRadius = cr > 0, notHemisphere = abs(cr) > ε, interpolate = d3_geo_circleInterpolate(radius, 6 * d3_radians);\n    return d3_geo_clip(visible, clipLine, interpolate, smallRadius ? [ 0, -radius ] : [ -π, radius - π ]);\n    function visible(λ, φ) {\n      return Math.cos(λ) * Math.cos(φ) > cr;\n    }\n    function clipLine(listener) {\n      var point0, c0, v0, v00, clean;\n      return {\n        lineStart: function() {\n          v00 = v0 = false;\n          clean = 1;\n        },\n        point: function(λ, φ) {\n          var point1 = [ λ, φ ], point2, v = visible(λ, φ), c = smallRadius ? v ? 0 : code(λ, φ) : v ? code(λ + (λ < 0 ? π : -π), φ) : 0;\n          if (!point0 && (v00 = v0 = v)) listener.lineStart();\n          if (v !== v0) {\n            point2 = intersect(point0, point1);\n            if (d3_geo_sphericalEqual(point0, point2) || d3_geo_sphericalEqual(point1, point2)) {\n              point1[0] += ε;\n              point1[1] += ε;\n              v = visible(point1[0], point1[1]);\n            }\n          }\n          if (v !== v0) {\n            clean = 0;\n            if (v) {\n              listener.lineStart();\n              point2 = intersect(point1, point0);\n              listener.point(point2[0], point2[1]);\n            } else {\n              point2 = intersect(point0, point1);\n              listener.point(point2[0], point2[1]);\n              listener.lineEnd();\n            }\n            point0 = point2;\n          } else if (notHemisphere && point0 && smallRadius ^ v) {\n            var t;\n            if (!(c & c0) && (t = intersect(point1, point0, true))) {\n              clean = 0;\n              if (smallRadius) {\n                listener.lineStart();\n                listener.point(t[0][0], t[0][1]);\n                listener.point(t[1][0], t[1][1]);\n                listener.lineEnd();\n              } else {\n                listener.point(t[1][0], t[1][1]);\n                listener.lineEnd();\n                listener.lineStart();\n                listener.point(t[0][0], t[0][1]);\n              }\n            }\n          }\n          if (v && (!point0 || !d3_geo_sphericalEqual(point0, point1))) {\n            listener.point(point1[0], point1[1]);\n          }\n          point0 = point1, v0 = v, c0 = c;\n        },\n        lineEnd: function() {\n          if (v0) listener.lineEnd();\n          point0 = null;\n        },\n        clean: function() {\n          return clean | (v00 && v0) << 1;\n        }\n      };\n    }\n    function intersect(a, b, two) {\n      var pa = d3_geo_cartesian(a), pb = d3_geo_cartesian(b);\n      var n1 = [ 1, 0, 0 ], n2 = d3_geo_cartesianCross(pa, pb), n2n2 = d3_geo_cartesianDot(n2, n2), n1n2 = n2[0], determinant = n2n2 - n1n2 * n1n2;\n      if (!determinant) return !two && a;\n      var c1 = cr * n2n2 / determinant, c2 = -cr * n1n2 / determinant, n1xn2 = d3_geo_cartesianCross(n1, n2), A = d3_geo_cartesianScale(n1, c1), B = d3_geo_cartesianScale(n2, c2);\n      d3_geo_cartesianAdd(A, B);\n      var u = n1xn2, w = d3_geo_cartesianDot(A, u), uu = d3_geo_cartesianDot(u, u), t2 = w * w - uu * (d3_geo_cartesianDot(A, A) - 1);\n      if (t2 < 0) return;\n      var t = Math.sqrt(t2), q = d3_geo_cartesianScale(u, (-w - t) / uu);\n      d3_geo_cartesianAdd(q, A);\n      q = d3_geo_spherical(q);\n      if (!two) return q;\n      var λ0 = a[0], λ1 = b[0], φ0 = a[1], φ1 = b[1], z;\n      if (λ1 < λ0) z = λ0, λ0 = λ1, λ1 = z;\n      var δλ = λ1 - λ0, polar = abs(δλ - π) < ε, meridian = polar || δλ < ε;\n      if (!polar && φ1 < φ0) z = φ0, φ0 = φ1, φ1 = z;\n      if (meridian ? polar ? φ0 + φ1 > 0 ^ q[1] < (abs(q[0] - λ0) < ε ? φ0 : φ1) : φ0 <= q[1] && q[1] <= φ1 : δλ > π ^ (λ0 <= q[0] && q[0] <= λ1)) {\n        var q1 = d3_geo_cartesianScale(u, (-w + t) / uu);\n        d3_geo_cartesianAdd(q1, A);\n        return [ q, d3_geo_spherical(q1) ];\n      }\n    }\n    function code(λ, φ) {\n      var r = smallRadius ? radius : π - radius, code = 0;\n      if (λ < -r) code |= 1; else if (λ > r) code |= 2;\n      if (φ < -r) code |= 4; else if (φ > r) code |= 8;\n      return code;\n    }\n  }\n  function d3_geom_clipLine(x0, y0, x1, y1) {\n    return function(line) {\n      var a = line.a, b = line.b, ax = a.x, ay = a.y, bx = b.x, by = b.y, t0 = 0, t1 = 1, dx = bx - ax, dy = by - ay, r;\n      r = x0 - ax;\n      if (!dx && r > 0) return;\n      r /= dx;\n      if (dx < 0) {\n        if (r < t0) return;\n        if (r < t1) t1 = r;\n      } else if (dx > 0) {\n        if (r > t1) return;\n        if (r > t0) t0 = r;\n      }\n      r = x1 - ax;\n      if (!dx && r < 0) return;\n      r /= dx;\n      if (dx < 0) {\n        if (r > t1) return;\n        if (r > t0) t0 = r;\n      } else if (dx > 0) {\n        if (r < t0) return;\n        if (r < t1) t1 = r;\n      }\n      r = y0 - ay;\n      if (!dy && r > 0) return;\n      r /= dy;\n      if (dy < 0) {\n        if (r < t0) return;\n        if (r < t1) t1 = r;\n      } else if (dy > 0) {\n        if (r > t1) return;\n        if (r > t0) t0 = r;\n      }\n      r = y1 - ay;\n      if (!dy && r < 0) return;\n      r /= dy;\n      if (dy < 0) {\n        if (r > t1) return;\n        if (r > t0) t0 = r;\n      } else if (dy > 0) {\n        if (r < t0) return;\n        if (r < t1) t1 = r;\n      }\n      if (t0 > 0) line.a = {\n        x: ax + t0 * dx,\n        y: ay + t0 * dy\n      };\n      if (t1 < 1) line.b = {\n        x: ax + t1 * dx,\n        y: ay + t1 * dy\n      };\n      return line;\n    };\n  }\n  var d3_geo_clipExtentMAX = 1e9;\n  d3.geo.clipExtent = function() {\n    var x0, y0, x1, y1, stream, clip, clipExtent = {\n      stream: function(output) {\n        if (stream) stream.valid = false;\n        stream = clip(output);\n        stream.valid = true;\n        return stream;\n      },\n      extent: function(_) {\n        if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];\n        clip = d3_geo_clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]);\n        if (stream) stream.valid = false, stream = null;\n        return clipExtent;\n      }\n    };\n    return clipExtent.extent([ [ 0, 0 ], [ 960, 500 ] ]);\n  };\n  function d3_geo_clipExtent(x0, y0, x1, y1) {\n    return function(listener) {\n      var listener_ = listener, bufferListener = d3_geo_clipBufferListener(), clipLine = d3_geom_clipLine(x0, y0, x1, y1), segments, polygon, ring;\n      var clip = {\n        point: point,\n        lineStart: lineStart,\n        lineEnd: lineEnd,\n        polygonStart: function() {\n          listener = bufferListener;\n          segments = [];\n          polygon = [];\n          clean = true;\n        },\n        polygonEnd: function() {\n          listener = listener_;\n          segments = d3.merge(segments);\n          var clipStartInside = insidePolygon([ x0, y1 ]), inside = clean && clipStartInside, visible = segments.length;\n          if (inside || visible) {\n            listener.polygonStart();\n            if (inside) {\n              listener.lineStart();\n              interpolate(null, null, 1, listener);\n              listener.lineEnd();\n            }\n            if (visible) {\n              d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener);\n            }\n            listener.polygonEnd();\n          }\n          segments = polygon = ring = null;\n        }\n      };\n      function insidePolygon(p) {\n        var wn = 0, n = polygon.length, y = p[1];\n        for (var i = 0; i < n; ++i) {\n          for (var j = 1, v = polygon[i], m = v.length, a = v[0], b; j < m; ++j) {\n            b = v[j];\n            if (a[1] <= y) {\n              if (b[1] > y && d3_cross2d(a, b, p) > 0) ++wn;\n            } else {\n              if (b[1] <= y && d3_cross2d(a, b, p) < 0) --wn;\n            }\n            a = b;\n          }\n        }\n        return wn !== 0;\n      }\n      function interpolate(from, to, direction, listener) {\n        var a = 0, a1 = 0;\n        if (from == null || (a = corner(from, direction)) !== (a1 = corner(to, direction)) || comparePoints(from, to) < 0 ^ direction > 0) {\n          do {\n            listener.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n          } while ((a = (a + direction + 4) % 4) !== a1);\n        } else {\n          listener.point(to[0], to[1]);\n        }\n      }\n      function pointVisible(x, y) {\n        return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n      }\n      function point(x, y) {\n        if (pointVisible(x, y)) listener.point(x, y);\n      }\n      var x__, y__, v__, x_, y_, v_, first, clean;\n      function lineStart() {\n        clip.point = linePoint;\n        if (polygon) polygon.push(ring = []);\n        first = true;\n        v_ = false;\n        x_ = y_ = NaN;\n      }\n      function lineEnd() {\n        if (segments) {\n          linePoint(x__, y__);\n          if (v__ && v_) bufferListener.rejoin();\n          segments.push(bufferListener.buffer());\n        }\n        clip.point = point;\n        if (v_) listener.lineEnd();\n      }\n      function linePoint(x, y) {\n        x = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, x));\n        y = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, y));\n        var v = pointVisible(x, y);\n        if (polygon) ring.push([ x, y ]);\n        if (first) {\n          x__ = x, y__ = y, v__ = v;\n          first = false;\n          if (v) {\n            listener.lineStart();\n            listener.point(x, y);\n          }\n        } else {\n          if (v && v_) listener.point(x, y); else {\n            var l = {\n              a: {\n                x: x_,\n                y: y_\n              },\n              b: {\n                x: x,\n                y: y\n              }\n            };\n            if (clipLine(l)) {\n              if (!v_) {\n                listener.lineStart();\n                listener.point(l.a.x, l.a.y);\n              }\n              listener.point(l.b.x, l.b.y);\n              if (!v) listener.lineEnd();\n              clean = false;\n            } else if (v) {\n              listener.lineStart();\n              listener.point(x, y);\n              clean = false;\n            }\n          }\n        }\n        x_ = x, y_ = y, v_ = v;\n      }\n      return clip;\n    };\n    function corner(p, direction) {\n      return abs(p[0] - x0) < ε ? direction > 0 ? 0 : 3 : abs(p[0] - x1) < ε ? direction > 0 ? 2 : 1 : abs(p[1] - y0) < ε ? direction > 0 ? 1 : 0 : direction > 0 ? 3 : 2;\n    }\n    function compare(a, b) {\n      return comparePoints(a.x, b.x);\n    }\n    function comparePoints(a, b) {\n      var ca = corner(a, 1), cb = corner(b, 1);\n      return ca !== cb ? ca - cb : ca === 0 ? b[1] - a[1] : ca === 1 ? a[0] - b[0] : ca === 2 ? a[1] - b[1] : b[0] - a[0];\n    }\n  }\n  function d3_geo_conic(projectAt) {\n    var φ0 = 0, φ1 = π / 3, m = d3_geo_projectionMutator(projectAt), p = m(φ0, φ1);\n    p.parallels = function(_) {\n      if (!arguments.length) return [ φ0 / π * 180, φ1 / π * 180 ];\n      return m(φ0 = _[0] * π / 180, φ1 = _[1] * π / 180);\n    };\n    return p;\n  }\n  function d3_geo_conicEqualArea(φ0, φ1) {\n    var sinφ0 = Math.sin(φ0), n = (sinφ0 + Math.sin(φ1)) / 2, C = 1 + sinφ0 * (2 * n - sinφ0), ρ0 = Math.sqrt(C) / n;\n    function forward(λ, φ) {\n      var ρ = Math.sqrt(C - 2 * n * Math.sin(φ)) / n;\n      return [ ρ * Math.sin(λ *= n), ρ0 - ρ * Math.cos(λ) ];\n    }\n    forward.invert = function(x, y) {\n      var ρ0_y = ρ0 - y;\n      return [ Math.atan2(x, ρ0_y) / n, d3_asin((C - (x * x + ρ0_y * ρ0_y) * n * n) / (2 * n)) ];\n    };\n    return forward;\n  }\n  (d3.geo.conicEqualArea = function() {\n    return d3_geo_conic(d3_geo_conicEqualArea);\n  }).raw = d3_geo_conicEqualArea;\n  d3.geo.albers = function() {\n    return d3.geo.conicEqualArea().rotate([ 96, 0 ]).center([ -.6, 38.7 ]).parallels([ 29.5, 45.5 ]).scale(1070);\n  };\n  d3.geo.albersUsa = function() {\n    var lower48 = d3.geo.albers();\n    var alaska = d3.geo.conicEqualArea().rotate([ 154, 0 ]).center([ -2, 58.5 ]).parallels([ 55, 65 ]);\n    var hawaii = d3.geo.conicEqualArea().rotate([ 157, 0 ]).center([ -3, 19.9 ]).parallels([ 8, 18 ]);\n    var point, pointStream = {\n      point: function(x, y) {\n        point = [ x, y ];\n      }\n    }, lower48Point, alaskaPoint, hawaiiPoint;\n    function albersUsa(coordinates) {\n      var x = coordinates[0], y = coordinates[1];\n      point = null;\n      (lower48Point(x, y), point) || (alaskaPoint(x, y), point) || hawaiiPoint(x, y);\n      return point;\n    }\n    albersUsa.invert = function(coordinates) {\n      var k = lower48.scale(), t = lower48.translate(), x = (coordinates[0] - t[0]) / k, y = (coordinates[1] - t[1]) / k;\n      return (y >= .12 && y < .234 && x >= -.425 && x < -.214 ? alaska : y >= .166 && y < .234 && x >= -.214 && x < -.115 ? hawaii : lower48).invert(coordinates);\n    };\n    albersUsa.stream = function(stream) {\n      var lower48Stream = lower48.stream(stream), alaskaStream = alaska.stream(stream), hawaiiStream = hawaii.stream(stream);\n      return {\n        point: function(x, y) {\n          lower48Stream.point(x, y);\n          alaskaStream.point(x, y);\n          hawaiiStream.point(x, y);\n        },\n        sphere: function() {\n          lower48Stream.sphere();\n          alaskaStream.sphere();\n          hawaiiStream.sphere();\n        },\n        lineStart: function() {\n          lower48Stream.lineStart();\n          alaskaStream.lineStart();\n          hawaiiStream.lineStart();\n        },\n        lineEnd: function() {\n          lower48Stream.lineEnd();\n          alaskaStream.lineEnd();\n          hawaiiStream.lineEnd();\n        },\n        polygonStart: function() {\n          lower48Stream.polygonStart();\n          alaskaStream.polygonStart();\n          hawaiiStream.polygonStart();\n        },\n        polygonEnd: function() {\n          lower48Stream.polygonEnd();\n          alaskaStream.polygonEnd();\n          hawaiiStream.polygonEnd();\n        }\n      };\n    };\n    albersUsa.precision = function(_) {\n      if (!arguments.length) return lower48.precision();\n      lower48.precision(_);\n      alaska.precision(_);\n      hawaii.precision(_);\n      return albersUsa;\n    };\n    albersUsa.scale = function(_) {\n      if (!arguments.length) return lower48.scale();\n      lower48.scale(_);\n      alaska.scale(_ * .35);\n      hawaii.scale(_);\n      return albersUsa.translate(lower48.translate());\n    };\n    albersUsa.translate = function(_) {\n      if (!arguments.length) return lower48.translate();\n      var k = lower48.scale(), x = +_[0], y = +_[1];\n      lower48Point = lower48.translate(_).clipExtent([ [ x - .455 * k, y - .238 * k ], [ x + .455 * k, y + .238 * k ] ]).stream(pointStream).point;\n      alaskaPoint = alaska.translate([ x - .307 * k, y + .201 * k ]).clipExtent([ [ x - .425 * k + ε, y + .12 * k + ε ], [ x - .214 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point;\n      hawaiiPoint = hawaii.translate([ x - .205 * k, y + .212 * k ]).clipExtent([ [ x - .214 * k + ε, y + .166 * k + ε ], [ x - .115 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point;\n      return albersUsa;\n    };\n    return albersUsa.scale(1070);\n  };\n  var d3_geo_pathAreaSum, d3_geo_pathAreaPolygon, d3_geo_pathArea = {\n    point: d3_noop,\n    lineStart: d3_noop,\n    lineEnd: d3_noop,\n    polygonStart: function() {\n      d3_geo_pathAreaPolygon = 0;\n      d3_geo_pathArea.lineStart = d3_geo_pathAreaRingStart;\n    },\n    polygonEnd: function() {\n      d3_geo_pathArea.lineStart = d3_geo_pathArea.lineEnd = d3_geo_pathArea.point = d3_noop;\n      d3_geo_pathAreaSum += abs(d3_geo_pathAreaPolygon / 2);\n    }\n  };\n  function d3_geo_pathAreaRingStart() {\n    var x00, y00, x0, y0;\n    d3_geo_pathArea.point = function(x, y) {\n      d3_geo_pathArea.point = nextPoint;\n      x00 = x0 = x, y00 = y0 = y;\n    };\n    function nextPoint(x, y) {\n      d3_geo_pathAreaPolygon += y0 * x - x0 * y;\n      x0 = x, y0 = y;\n    }\n    d3_geo_pathArea.lineEnd = function() {\n      nextPoint(x00, y00);\n    };\n  }\n  var d3_geo_pathBoundsX0, d3_geo_pathBoundsY0, d3_geo_pathBoundsX1, d3_geo_pathBoundsY1;\n  var d3_geo_pathBounds = {\n    point: d3_geo_pathBoundsPoint,\n    lineStart: d3_noop,\n    lineEnd: d3_noop,\n    polygonStart: d3_noop,\n    polygonEnd: d3_noop\n  };\n  function d3_geo_pathBoundsPoint(x, y) {\n    if (x < d3_geo_pathBoundsX0) d3_geo_pathBoundsX0 = x;\n    if (x > d3_geo_pathBoundsX1) d3_geo_pathBoundsX1 = x;\n    if (y < d3_geo_pathBoundsY0) d3_geo_pathBoundsY0 = y;\n    if (y > d3_geo_pathBoundsY1) d3_geo_pathBoundsY1 = y;\n  }\n  function d3_geo_pathBuffer() {\n    var pointCircle = d3_geo_pathBufferCircle(4.5), buffer = [];\n    var stream = {\n      point: point,\n      lineStart: function() {\n        stream.point = pointLineStart;\n      },\n      lineEnd: lineEnd,\n      polygonStart: function() {\n        stream.lineEnd = lineEndPolygon;\n      },\n      polygonEnd: function() {\n        stream.lineEnd = lineEnd;\n        stream.point = point;\n      },\n      pointRadius: function(_) {\n        pointCircle = d3_geo_pathBufferCircle(_);\n        return stream;\n      },\n      result: function() {\n        if (buffer.length) {\n          var result = buffer.join(\"\");\n          buffer = [];\n          return result;\n        }\n      }\n    };\n    function point(x, y) {\n      buffer.push(\"M\", x, \",\", y, pointCircle);\n    }\n    function pointLineStart(x, y) {\n      buffer.push(\"M\", x, \",\", y);\n      stream.point = pointLine;\n    }\n    function pointLine(x, y) {\n      buffer.push(\"L\", x, \",\", y);\n    }\n    function lineEnd() {\n      stream.point = point;\n    }\n    function lineEndPolygon() {\n      buffer.push(\"Z\");\n    }\n    return stream;\n  }\n  function d3_geo_pathBufferCircle(radius) {\n    return \"m0,\" + radius + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius + \"z\";\n  }\n  var d3_geo_pathCentroid = {\n    point: d3_geo_pathCentroidPoint,\n    lineStart: d3_geo_pathCentroidLineStart,\n    lineEnd: d3_geo_pathCentroidLineEnd,\n    polygonStart: function() {\n      d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidRingStart;\n    },\n    polygonEnd: function() {\n      d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;\n      d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidLineStart;\n      d3_geo_pathCentroid.lineEnd = d3_geo_pathCentroidLineEnd;\n    }\n  };\n  function d3_geo_pathCentroidPoint(x, y) {\n    d3_geo_centroidX0 += x;\n    d3_geo_centroidY0 += y;\n    ++d3_geo_centroidZ0;\n  }\n  function d3_geo_pathCentroidLineStart() {\n    var x0, y0;\n    d3_geo_pathCentroid.point = function(x, y) {\n      d3_geo_pathCentroid.point = nextPoint;\n      d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n    };\n    function nextPoint(x, y) {\n      var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);\n      d3_geo_centroidX1 += z * (x0 + x) / 2;\n      d3_geo_centroidY1 += z * (y0 + y) / 2;\n      d3_geo_centroidZ1 += z;\n      d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n    }\n  }\n  function d3_geo_pathCentroidLineEnd() {\n    d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;\n  }\n  function d3_geo_pathCentroidRingStart() {\n    var x00, y00, x0, y0;\n    d3_geo_pathCentroid.point = function(x, y) {\n      d3_geo_pathCentroid.point = nextPoint;\n      d3_geo_pathCentroidPoint(x00 = x0 = x, y00 = y0 = y);\n    };\n    function nextPoint(x, y) {\n      var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);\n      d3_geo_centroidX1 += z * (x0 + x) / 2;\n      d3_geo_centroidY1 += z * (y0 + y) / 2;\n      d3_geo_centroidZ1 += z;\n      z = y0 * x - x0 * y;\n      d3_geo_centroidX2 += z * (x0 + x);\n      d3_geo_centroidY2 += z * (y0 + y);\n      d3_geo_centroidZ2 += z * 3;\n      d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n    }\n    d3_geo_pathCentroid.lineEnd = function() {\n      nextPoint(x00, y00);\n    };\n  }\n  function d3_geo_pathContext(context) {\n    var pointRadius = 4.5;\n    var stream = {\n      point: point,\n      lineStart: function() {\n        stream.point = pointLineStart;\n      },\n      lineEnd: lineEnd,\n      polygonStart: function() {\n        stream.lineEnd = lineEndPolygon;\n      },\n      polygonEnd: function() {\n        stream.lineEnd = lineEnd;\n        stream.point = point;\n      },\n      pointRadius: function(_) {\n        pointRadius = _;\n        return stream;\n      },\n      result: d3_noop\n    };\n    function point(x, y) {\n      context.moveTo(x + pointRadius, y);\n      context.arc(x, y, pointRadius, 0, τ);\n    }\n    function pointLineStart(x, y) {\n      context.moveTo(x, y);\n      stream.point = pointLine;\n    }\n    function pointLine(x, y) {\n      context.lineTo(x, y);\n    }\n    function lineEnd() {\n      stream.point = point;\n    }\n    function lineEndPolygon() {\n      context.closePath();\n    }\n    return stream;\n  }\n  function d3_geo_resample(project) {\n    var δ2 = .5, cosMinDistance = Math.cos(30 * d3_radians), maxDepth = 16;\n    function resample(stream) {\n      return (maxDepth ? resampleRecursive : resampleNone)(stream);\n    }\n    function resampleNone(stream) {\n      return d3_geo_transformPoint(stream, function(x, y) {\n        x = project(x, y);\n        stream.point(x[0], x[1]);\n      });\n    }\n    function resampleRecursive(stream) {\n      var λ00, φ00, x00, y00, a00, b00, c00, λ0, x0, y0, a0, b0, c0;\n      var resample = {\n        point: point,\n        lineStart: lineStart,\n        lineEnd: lineEnd,\n        polygonStart: function() {\n          stream.polygonStart();\n          resample.lineStart = ringStart;\n        },\n        polygonEnd: function() {\n          stream.polygonEnd();\n          resample.lineStart = lineStart;\n        }\n      };\n      function point(x, y) {\n        x = project(x, y);\n        stream.point(x[0], x[1]);\n      }\n      function lineStart() {\n        x0 = NaN;\n        resample.point = linePoint;\n        stream.lineStart();\n      }\n      function linePoint(λ, φ) {\n        var c = d3_geo_cartesian([ λ, φ ]), p = project(λ, φ);\n        resampleLineTo(x0, y0, λ0, a0, b0, c0, x0 = p[0], y0 = p[1], λ0 = λ, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n        stream.point(x0, y0);\n      }\n      function lineEnd() {\n        resample.point = point;\n        stream.lineEnd();\n      }\n      function ringStart() {\n        lineStart();\n        resample.point = ringPoint;\n        resample.lineEnd = ringEnd;\n      }\n      function ringPoint(λ, φ) {\n        linePoint(λ00 = λ, φ00 = φ), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n        resample.point = linePoint;\n      }\n      function ringEnd() {\n        resampleLineTo(x0, y0, λ0, a0, b0, c0, x00, y00, λ00, a00, b00, c00, maxDepth, stream);\n        resample.lineEnd = lineEnd;\n        lineEnd();\n      }\n      return resample;\n    }\n    function resampleLineTo(x0, y0, λ0, a0, b0, c0, x1, y1, λ1, a1, b1, c1, depth, stream) {\n      var dx = x1 - x0, dy = y1 - y0, d2 = dx * dx + dy * dy;\n      if (d2 > 4 * δ2 && depth--) {\n        var a = a0 + a1, b = b0 + b1, c = c0 + c1, m = Math.sqrt(a * a + b * b + c * c), φ2 = Math.asin(c /= m), λ2 = abs(abs(c) - 1) < ε || abs(λ0 - λ1) < ε ? (λ0 + λ1) / 2 : Math.atan2(b, a), p = project(λ2, φ2), x2 = p[0], y2 = p[1], dx2 = x2 - x0, dy2 = y2 - y0, dz = dy * dx2 - dx * dy2;\n        if (dz * dz / d2 > δ2 || abs((dx * dx2 + dy * dy2) / d2 - .5) > .3 || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) {\n          resampleLineTo(x0, y0, λ0, a0, b0, c0, x2, y2, λ2, a /= m, b /= m, c, depth, stream);\n          stream.point(x2, y2);\n          resampleLineTo(x2, y2, λ2, a, b, c, x1, y1, λ1, a1, b1, c1, depth, stream);\n        }\n      }\n    }\n    resample.precision = function(_) {\n      if (!arguments.length) return Math.sqrt(δ2);\n      maxDepth = (δ2 = _ * _) > 0 && 16;\n      return resample;\n    };\n    return resample;\n  }\n  d3.geo.path = function() {\n    var pointRadius = 4.5, projection, context, projectStream, contextStream, cacheStream;\n    function path(object) {\n      if (object) {\n        if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n        if (!cacheStream || !cacheStream.valid) cacheStream = projectStream(contextStream);\n        d3.geo.stream(object, cacheStream);\n      }\n      return contextStream.result();\n    }\n    path.area = function(object) {\n      d3_geo_pathAreaSum = 0;\n      d3.geo.stream(object, projectStream(d3_geo_pathArea));\n      return d3_geo_pathAreaSum;\n    };\n    path.centroid = function(object) {\n      d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;\n      d3.geo.stream(object, projectStream(d3_geo_pathCentroid));\n      return d3_geo_centroidZ2 ? [ d3_geo_centroidX2 / d3_geo_centroidZ2, d3_geo_centroidY2 / d3_geo_centroidZ2 ] : d3_geo_centroidZ1 ? [ d3_geo_centroidX1 / d3_geo_centroidZ1, d3_geo_centroidY1 / d3_geo_centroidZ1 ] : d3_geo_centroidZ0 ? [ d3_geo_centroidX0 / d3_geo_centroidZ0, d3_geo_centroidY0 / d3_geo_centroidZ0 ] : [ NaN, NaN ];\n    };\n    path.bounds = function(object) {\n      d3_geo_pathBoundsX1 = d3_geo_pathBoundsY1 = -(d3_geo_pathBoundsX0 = d3_geo_pathBoundsY0 = Infinity);\n      d3.geo.stream(object, projectStream(d3_geo_pathBounds));\n      return [ [ d3_geo_pathBoundsX0, d3_geo_pathBoundsY0 ], [ d3_geo_pathBoundsX1, d3_geo_pathBoundsY1 ] ];\n    };\n    path.projection = function(_) {\n      if (!arguments.length) return projection;\n      projectStream = (projection = _) ? _.stream || d3_geo_pathProjectStream(_) : d3_identity;\n      return reset();\n    };\n    path.context = function(_) {\n      if (!arguments.length) return context;\n      contextStream = (context = _) == null ? new d3_geo_pathBuffer() : new d3_geo_pathContext(_);\n      if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n      return reset();\n    };\n    path.pointRadius = function(_) {\n      if (!arguments.length) return pointRadius;\n      pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n      return path;\n    };\n    function reset() {\n      cacheStream = null;\n      return path;\n    }\n    return path.projection(d3.geo.albersUsa()).context(null);\n  };\n  function d3_geo_pathProjectStream(project) {\n    var resample = d3_geo_resample(function(x, y) {\n      return project([ x * d3_degrees, y * d3_degrees ]);\n    });\n    return function(stream) {\n      return d3_geo_projectionRadians(resample(stream));\n    };\n  }\n  d3.geo.transform = function(methods) {\n    return {\n      stream: function(stream) {\n        var transform = new d3_geo_transform(stream);\n        for (var k in methods) transform[k] = methods[k];\n        return transform;\n      }\n    };\n  };\n  function d3_geo_transform(stream) {\n    this.stream = stream;\n  }\n  d3_geo_transform.prototype = {\n    point: function(x, y) {\n      this.stream.point(x, y);\n    },\n    sphere: function() {\n      this.stream.sphere();\n    },\n    lineStart: function() {\n      this.stream.lineStart();\n    },\n    lineEnd: function() {\n      this.stream.lineEnd();\n    },\n    polygonStart: function() {\n      this.stream.polygonStart();\n    },\n    polygonEnd: function() {\n      this.stream.polygonEnd();\n    }\n  };\n  function d3_geo_transformPoint(stream, point) {\n    return {\n      point: point,\n      sphere: function() {\n        stream.sphere();\n      },\n      lineStart: function() {\n        stream.lineStart();\n      },\n      lineEnd: function() {\n        stream.lineEnd();\n      },\n      polygonStart: function() {\n        stream.polygonStart();\n      },\n      polygonEnd: function() {\n        stream.polygonEnd();\n      }\n    };\n  }\n  d3.geo.projection = d3_geo_projection;\n  d3.geo.projectionMutator = d3_geo_projectionMutator;\n  function d3_geo_projection(project) {\n    return d3_geo_projectionMutator(function() {\n      return project;\n    })();\n  }\n  function d3_geo_projectionMutator(projectAt) {\n    var project, rotate, projectRotate, projectResample = d3_geo_resample(function(x, y) {\n      x = project(x, y);\n      return [ x[0] * k + δx, δy - x[1] * k ];\n    }), k = 150, x = 480, y = 250, λ = 0, φ = 0, δλ = 0, δφ = 0, δγ = 0, δx, δy, preclip = d3_geo_clipAntimeridian, postclip = d3_identity, clipAngle = null, clipExtent = null, stream;\n    function projection(point) {\n      point = projectRotate(point[0] * d3_radians, point[1] * d3_radians);\n      return [ point[0] * k + δx, δy - point[1] * k ];\n    }\n    function invert(point) {\n      point = projectRotate.invert((point[0] - δx) / k, (δy - point[1]) / k);\n      return point && [ point[0] * d3_degrees, point[1] * d3_degrees ];\n    }\n    projection.stream = function(output) {\n      if (stream) stream.valid = false;\n      stream = d3_geo_projectionRadians(preclip(rotate, projectResample(postclip(output))));\n      stream.valid = true;\n      return stream;\n    };\n    projection.clipAngle = function(_) {\n      if (!arguments.length) return clipAngle;\n      preclip = _ == null ? (clipAngle = _, d3_geo_clipAntimeridian) : d3_geo_clipCircle((clipAngle = +_) * d3_radians);\n      return invalidate();\n    };\n    projection.clipExtent = function(_) {\n      if (!arguments.length) return clipExtent;\n      clipExtent = _;\n      postclip = _ ? d3_geo_clipExtent(_[0][0], _[0][1], _[1][0], _[1][1]) : d3_identity;\n      return invalidate();\n    };\n    projection.scale = function(_) {\n      if (!arguments.length) return k;\n      k = +_;\n      return reset();\n    };\n    projection.translate = function(_) {\n      if (!arguments.length) return [ x, y ];\n      x = +_[0];\n      y = +_[1];\n      return reset();\n    };\n    projection.center = function(_) {\n      if (!arguments.length) return [ λ * d3_degrees, φ * d3_degrees ];\n      λ = _[0] % 360 * d3_radians;\n      φ = _[1] % 360 * d3_radians;\n      return reset();\n    };\n    projection.rotate = function(_) {\n      if (!arguments.length) return [ δλ * d3_degrees, δφ * d3_degrees, δγ * d3_degrees ];\n      δλ = _[0] % 360 * d3_radians;\n      δφ = _[1] % 360 * d3_radians;\n      δγ = _.length > 2 ? _[2] % 360 * d3_radians : 0;\n      return reset();\n    };\n    d3.rebind(projection, projectResample, \"precision\");\n    function reset() {\n      projectRotate = d3_geo_compose(rotate = d3_geo_rotation(δλ, δφ, δγ), project);\n      var center = project(λ, φ);\n      δx = x - center[0] * k;\n      δy = y + center[1] * k;\n      return invalidate();\n    }\n    function invalidate() {\n      if (stream) stream.valid = false, stream = null;\n      return projection;\n    }\n    return function() {\n      project = projectAt.apply(this, arguments);\n      projection.invert = project.invert && invert;\n      return reset();\n    };\n  }\n  function d3_geo_projectionRadians(stream) {\n    return d3_geo_transformPoint(stream, function(x, y) {\n      stream.point(x * d3_radians, y * d3_radians);\n    });\n  }\n  function d3_geo_equirectangular(λ, φ) {\n    return [ λ, φ ];\n  }\n  (d3.geo.equirectangular = function() {\n    return d3_geo_projection(d3_geo_equirectangular);\n  }).raw = d3_geo_equirectangular.invert = d3_geo_equirectangular;\n  d3.geo.rotation = function(rotate) {\n    rotate = d3_geo_rotation(rotate[0] % 360 * d3_radians, rotate[1] * d3_radians, rotate.length > 2 ? rotate[2] * d3_radians : 0);\n    function forward(coordinates) {\n      coordinates = rotate(coordinates[0] * d3_radians, coordinates[1] * d3_radians);\n      return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;\n    }\n    forward.invert = function(coordinates) {\n      coordinates = rotate.invert(coordinates[0] * d3_radians, coordinates[1] * d3_radians);\n      return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;\n    };\n    return forward;\n  };\n  function d3_geo_identityRotation(λ, φ) {\n    return [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ];\n  }\n  d3_geo_identityRotation.invert = d3_geo_equirectangular;\n  function d3_geo_rotation(δλ, δφ, δγ) {\n    return δλ ? δφ || δγ ? d3_geo_compose(d3_geo_rotationλ(δλ), d3_geo_rotationφγ(δφ, δγ)) : d3_geo_rotationλ(δλ) : δφ || δγ ? d3_geo_rotationφγ(δφ, δγ) : d3_geo_identityRotation;\n  }\n  function d3_geo_forwardRotationλ(δλ) {\n    return function(λ, φ) {\n      return λ += δλ, [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ];\n    };\n  }\n  function d3_geo_rotationλ(δλ) {\n    var rotation = d3_geo_forwardRotationλ(δλ);\n    rotation.invert = d3_geo_forwardRotationλ(-δλ);\n    return rotation;\n  }\n  function d3_geo_rotationφγ(δφ, δγ) {\n    var cosδφ = Math.cos(δφ), sinδφ = Math.sin(δφ), cosδγ = Math.cos(δγ), sinδγ = Math.sin(δγ);\n    function rotation(λ, φ) {\n      var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδφ + x * sinδφ;\n      return [ Math.atan2(y * cosδγ - k * sinδγ, x * cosδφ - z * sinδφ), d3_asin(k * cosδγ + y * sinδγ) ];\n    }\n    rotation.invert = function(λ, φ) {\n      var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδγ - y * sinδγ;\n      return [ Math.atan2(y * cosδγ + z * sinδγ, x * cosδφ + k * sinδφ), d3_asin(k * cosδφ - x * sinδφ) ];\n    };\n    return rotation;\n  }\n  d3.geo.circle = function() {\n    var origin = [ 0, 0 ], angle, precision = 6, interpolate;\n    function circle() {\n      var center = typeof origin === \"function\" ? origin.apply(this, arguments) : origin, rotate = d3_geo_rotation(-center[0] * d3_radians, -center[1] * d3_radians, 0).invert, ring = [];\n      interpolate(null, null, 1, {\n        point: function(x, y) {\n          ring.push(x = rotate(x, y));\n          x[0] *= d3_degrees, x[1] *= d3_degrees;\n        }\n      });\n      return {\n        type: \"Polygon\",\n        coordinates: [ ring ]\n      };\n    }\n    circle.origin = function(x) {\n      if (!arguments.length) return origin;\n      origin = x;\n      return circle;\n    };\n    circle.angle = function(x) {\n      if (!arguments.length) return angle;\n      interpolate = d3_geo_circleInterpolate((angle = +x) * d3_radians, precision * d3_radians);\n      return circle;\n    };\n    circle.precision = function(_) {\n      if (!arguments.length) return precision;\n      interpolate = d3_geo_circleInterpolate(angle * d3_radians, (precision = +_) * d3_radians);\n      return circle;\n    };\n    return circle.angle(90);\n  };\n  function d3_geo_circleInterpolate(radius, precision) {\n    var cr = Math.cos(radius), sr = Math.sin(radius);\n    return function(from, to, direction, listener) {\n      var step = direction * precision;\n      if (from != null) {\n        from = d3_geo_circleAngle(cr, from);\n        to = d3_geo_circleAngle(cr, to);\n        if (direction > 0 ? from < to : from > to) from += direction * τ;\n      } else {\n        from = radius + direction * τ;\n        to = radius - .5 * step;\n      }\n      for (var point, t = from; direction > 0 ? t > to : t < to; t -= step) {\n        listener.point((point = d3_geo_spherical([ cr, -sr * Math.cos(t), -sr * Math.sin(t) ]))[0], point[1]);\n      }\n    };\n  }\n  function d3_geo_circleAngle(cr, point) {\n    var a = d3_geo_cartesian(point);\n    a[0] -= cr;\n    d3_geo_cartesianNormalize(a);\n    var angle = d3_acos(-a[1]);\n    return ((-a[2] < 0 ? -angle : angle) + 2 * Math.PI - ε) % (2 * Math.PI);\n  }\n  d3.geo.distance = function(a, b) {\n    var Δλ = (b[0] - a[0]) * d3_radians, φ0 = a[1] * d3_radians, φ1 = b[1] * d3_radians, sinΔλ = Math.sin(Δλ), cosΔλ = Math.cos(Δλ), sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), sinφ1 = Math.sin(φ1), cosφ1 = Math.cos(φ1), t;\n    return Math.atan2(Math.sqrt((t = cosφ1 * sinΔλ) * t + (t = cosφ0 * sinφ1 - sinφ0 * cosφ1 * cosΔλ) * t), sinφ0 * sinφ1 + cosφ0 * cosφ1 * cosΔλ);\n  };\n  d3.geo.graticule = function() {\n    var x1, x0, X1, X0, y1, y0, Y1, Y0, dx = 10, dy = dx, DX = 90, DY = 360, x, y, X, Y, precision = 2.5;\n    function graticule() {\n      return {\n        type: \"MultiLineString\",\n        coordinates: lines()\n      };\n    }\n    function lines() {\n      return d3.range(Math.ceil(X0 / DX) * DX, X1, DX).map(X).concat(d3.range(Math.ceil(Y0 / DY) * DY, Y1, DY).map(Y)).concat(d3.range(Math.ceil(x0 / dx) * dx, x1, dx).filter(function(x) {\n        return abs(x % DX) > ε;\n      }).map(x)).concat(d3.range(Math.ceil(y0 / dy) * dy, y1, dy).filter(function(y) {\n        return abs(y % DY) > ε;\n      }).map(y));\n    }\n    graticule.lines = function() {\n      return lines().map(function(coordinates) {\n        return {\n          type: \"LineString\",\n          coordinates: coordinates\n        };\n      });\n    };\n    graticule.outline = function() {\n      return {\n        type: \"Polygon\",\n        coordinates: [ X(X0).concat(Y(Y1).slice(1), X(X1).reverse().slice(1), Y(Y0).reverse().slice(1)) ]\n      };\n    };\n    graticule.extent = function(_) {\n      if (!arguments.length) return graticule.minorExtent();\n      return graticule.majorExtent(_).minorExtent(_);\n    };\n    graticule.majorExtent = function(_) {\n      if (!arguments.length) return [ [ X0, Y0 ], [ X1, Y1 ] ];\n      X0 = +_[0][0], X1 = +_[1][0];\n      Y0 = +_[0][1], Y1 = +_[1][1];\n      if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n      if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n      return graticule.precision(precision);\n    };\n    graticule.minorExtent = function(_) {\n      if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];\n      x0 = +_[0][0], x1 = +_[1][0];\n      y0 = +_[0][1], y1 = +_[1][1];\n      if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n      if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n      return graticule.precision(precision);\n    };\n    graticule.step = function(_) {\n      if (!arguments.length) return graticule.minorStep();\n      return graticule.majorStep(_).minorStep(_);\n    };\n    graticule.majorStep = function(_) {\n      if (!arguments.length) return [ DX, DY ];\n      DX = +_[0], DY = +_[1];\n      return graticule;\n    };\n    graticule.minorStep = function(_) {\n      if (!arguments.length) return [ dx, dy ];\n      dx = +_[0], dy = +_[1];\n      return graticule;\n    };\n    graticule.precision = function(_) {\n      if (!arguments.length) return precision;\n      precision = +_;\n      x = d3_geo_graticuleX(y0, y1, 90);\n      y = d3_geo_graticuleY(x0, x1, precision);\n      X = d3_geo_graticuleX(Y0, Y1, 90);\n      Y = d3_geo_graticuleY(X0, X1, precision);\n      return graticule;\n    };\n    return graticule.majorExtent([ [ -180, -90 + ε ], [ 180, 90 - ε ] ]).minorExtent([ [ -180, -80 - ε ], [ 180, 80 + ε ] ]);\n  };\n  function d3_geo_graticuleX(y0, y1, dy) {\n    var y = d3.range(y0, y1 - ε, dy).concat(y1);\n    return function(x) {\n      return y.map(function(y) {\n        return [ x, y ];\n      });\n    };\n  }\n  function d3_geo_graticuleY(x0, x1, dx) {\n    var x = d3.range(x0, x1 - ε, dx).concat(x1);\n    return function(y) {\n      return x.map(function(x) {\n        return [ x, y ];\n      });\n    };\n  }\n  function d3_source(d) {\n    return d.source;\n  }\n  function d3_target(d) {\n    return d.target;\n  }\n  d3.geo.greatArc = function() {\n    var source = d3_source, source_, target = d3_target, target_;\n    function greatArc() {\n      return {\n        type: \"LineString\",\n        coordinates: [ source_ || source.apply(this, arguments), target_ || target.apply(this, arguments) ]\n      };\n    }\n    greatArc.distance = function() {\n      return d3.geo.distance(source_ || source.apply(this, arguments), target_ || target.apply(this, arguments));\n    };\n    greatArc.source = function(_) {\n      if (!arguments.length) return source;\n      source = _, source_ = typeof _ === \"function\" ? null : _;\n      return greatArc;\n    };\n    greatArc.target = function(_) {\n      if (!arguments.length) return target;\n      target = _, target_ = typeof _ === \"function\" ? null : _;\n      return greatArc;\n    };\n    greatArc.precision = function() {\n      return arguments.length ? greatArc : 0;\n    };\n    return greatArc;\n  };\n  d3.geo.interpolate = function(source, target) {\n    return d3_geo_interpolate(source[0] * d3_radians, source[1] * d3_radians, target[0] * d3_radians, target[1] * d3_radians);\n  };\n  function d3_geo_interpolate(x0, y0, x1, y1) {\n    var cy0 = Math.cos(y0), sy0 = Math.sin(y0), cy1 = Math.cos(y1), sy1 = Math.sin(y1), kx0 = cy0 * Math.cos(x0), ky0 = cy0 * Math.sin(x0), kx1 = cy1 * Math.cos(x1), ky1 = cy1 * Math.sin(x1), d = 2 * Math.asin(Math.sqrt(d3_haversin(y1 - y0) + cy0 * cy1 * d3_haversin(x1 - x0))), k = 1 / Math.sin(d);\n    var interpolate = d ? function(t) {\n      var B = Math.sin(t *= d) * k, A = Math.sin(d - t) * k, x = A * kx0 + B * kx1, y = A * ky0 + B * ky1, z = A * sy0 + B * sy1;\n      return [ Math.atan2(y, x) * d3_degrees, Math.atan2(z, Math.sqrt(x * x + y * y)) * d3_degrees ];\n    } : function() {\n      return [ x0 * d3_degrees, y0 * d3_degrees ];\n    };\n    interpolate.distance = d;\n    return interpolate;\n  }\n  d3.geo.length = function(object) {\n    d3_geo_lengthSum = 0;\n    d3.geo.stream(object, d3_geo_length);\n    return d3_geo_lengthSum;\n  };\n  var d3_geo_lengthSum;\n  var d3_geo_length = {\n    sphere: d3_noop,\n    point: d3_noop,\n    lineStart: d3_geo_lengthLineStart,\n    lineEnd: d3_noop,\n    polygonStart: d3_noop,\n    polygonEnd: d3_noop\n  };\n  function d3_geo_lengthLineStart() {\n    var λ0, sinφ0, cosφ0;\n    d3_geo_length.point = function(λ, φ) {\n      λ0 = λ * d3_radians, sinφ0 = Math.sin(φ *= d3_radians), cosφ0 = Math.cos(φ);\n      d3_geo_length.point = nextPoint;\n    };\n    d3_geo_length.lineEnd = function() {\n      d3_geo_length.point = d3_geo_length.lineEnd = d3_noop;\n    };\n    function nextPoint(λ, φ) {\n      var sinφ = Math.sin(φ *= d3_radians), cosφ = Math.cos(φ), t = abs((λ *= d3_radians) - λ0), cosΔλ = Math.cos(t);\n      d3_geo_lengthSum += Math.atan2(Math.sqrt((t = cosφ * Math.sin(t)) * t + (t = cosφ0 * sinφ - sinφ0 * cosφ * cosΔλ) * t), sinφ0 * sinφ + cosφ0 * cosφ * cosΔλ);\n      λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ;\n    }\n  }\n  function d3_geo_azimuthal(scale, angle) {\n    function azimuthal(λ, φ) {\n      var cosλ = Math.cos(λ), cosφ = Math.cos(φ), k = scale(cosλ * cosφ);\n      return [ k * cosφ * Math.sin(λ), k * Math.sin(φ) ];\n    }\n    azimuthal.invert = function(x, y) {\n      var ρ = Math.sqrt(x * x + y * y), c = angle(ρ), sinc = Math.sin(c), cosc = Math.cos(c);\n      return [ Math.atan2(x * sinc, ρ * cosc), Math.asin(ρ && y * sinc / ρ) ];\n    };\n    return azimuthal;\n  }\n  var d3_geo_azimuthalEqualArea = d3_geo_azimuthal(function(cosλcosφ) {\n    return Math.sqrt(2 / (1 + cosλcosφ));\n  }, function(ρ) {\n    return 2 * Math.asin(ρ / 2);\n  });\n  (d3.geo.azimuthalEqualArea = function() {\n    return d3_geo_projection(d3_geo_azimuthalEqualArea);\n  }).raw = d3_geo_azimuthalEqualArea;\n  var d3_geo_azimuthalEquidistant = d3_geo_azimuthal(function(cosλcosφ) {\n    var c = Math.acos(cosλcosφ);\n    return c && c / Math.sin(c);\n  }, d3_identity);\n  (d3.geo.azimuthalEquidistant = function() {\n    return d3_geo_projection(d3_geo_azimuthalEquidistant);\n  }).raw = d3_geo_azimuthalEquidistant;\n  function d3_geo_conicConformal(φ0, φ1) {\n    var cosφ0 = Math.cos(φ0), t = function(φ) {\n      return Math.tan(π / 4 + φ / 2);\n    }, n = φ0 === φ1 ? Math.sin(φ0) : Math.log(cosφ0 / Math.cos(φ1)) / Math.log(t(φ1) / t(φ0)), F = cosφ0 * Math.pow(t(φ0), n) / n;\n    if (!n) return d3_geo_mercator;\n    function forward(λ, φ) {\n      if (F > 0) {\n        if (φ < -halfπ + ε) φ = -halfπ + ε;\n      } else {\n        if (φ > halfπ - ε) φ = halfπ - ε;\n      }\n      var ρ = F / Math.pow(t(φ), n);\n      return [ ρ * Math.sin(n * λ), F - ρ * Math.cos(n * λ) ];\n    }\n    forward.invert = function(x, y) {\n      var ρ0_y = F - y, ρ = d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y);\n      return [ Math.atan2(x, ρ0_y) / n, 2 * Math.atan(Math.pow(F / ρ, 1 / n)) - halfπ ];\n    };\n    return forward;\n  }\n  (d3.geo.conicConformal = function() {\n    return d3_geo_conic(d3_geo_conicConformal);\n  }).raw = d3_geo_conicConformal;\n  function d3_geo_conicEquidistant(φ0, φ1) {\n    var cosφ0 = Math.cos(φ0), n = φ0 === φ1 ? Math.sin(φ0) : (cosφ0 - Math.cos(φ1)) / (φ1 - φ0), G = cosφ0 / n + φ0;\n    if (abs(n) < ε) return d3_geo_equirectangular;\n    function forward(λ, φ) {\n      var ρ = G - φ;\n      return [ ρ * Math.sin(n * λ), G - ρ * Math.cos(n * λ) ];\n    }\n    forward.invert = function(x, y) {\n      var ρ0_y = G - y;\n      return [ Math.atan2(x, ρ0_y) / n, G - d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y) ];\n    };\n    return forward;\n  }\n  (d3.geo.conicEquidistant = function() {\n    return d3_geo_conic(d3_geo_conicEquidistant);\n  }).raw = d3_geo_conicEquidistant;\n  var d3_geo_gnomonic = d3_geo_azimuthal(function(cosλcosφ) {\n    return 1 / cosλcosφ;\n  }, Math.atan);\n  (d3.geo.gnomonic = function() {\n    return d3_geo_projection(d3_geo_gnomonic);\n  }).raw = d3_geo_gnomonic;\n  function d3_geo_mercator(λ, φ) {\n    return [ λ, Math.log(Math.tan(π / 4 + φ / 2)) ];\n  }\n  d3_geo_mercator.invert = function(x, y) {\n    return [ x, 2 * Math.atan(Math.exp(y)) - halfπ ];\n  };\n  function d3_geo_mercatorProjection(project) {\n    var m = d3_geo_projection(project), scale = m.scale, translate = m.translate, clipExtent = m.clipExtent, clipAuto;\n    m.scale = function() {\n      var v = scale.apply(m, arguments);\n      return v === m ? clipAuto ? m.clipExtent(null) : m : v;\n    };\n    m.translate = function() {\n      var v = translate.apply(m, arguments);\n      return v === m ? clipAuto ? m.clipExtent(null) : m : v;\n    };\n    m.clipExtent = function(_) {\n      var v = clipExtent.apply(m, arguments);\n      if (v === m) {\n        if (clipAuto = _ == null) {\n          var k = π * scale(), t = translate();\n          clipExtent([ [ t[0] - k, t[1] - k ], [ t[0] + k, t[1] + k ] ]);\n        }\n      } else if (clipAuto) {\n        v = null;\n      }\n      return v;\n    };\n    return m.clipExtent(null);\n  }\n  (d3.geo.mercator = function() {\n    return d3_geo_mercatorProjection(d3_geo_mercator);\n  }).raw = d3_geo_mercator;\n  var d3_geo_orthographic = d3_geo_azimuthal(function() {\n    return 1;\n  }, Math.asin);\n  (d3.geo.orthographic = function() {\n    return d3_geo_projection(d3_geo_orthographic);\n  }).raw = d3_geo_orthographic;\n  var d3_geo_stereographic = d3_geo_azimuthal(function(cosλcosφ) {\n    return 1 / (1 + cosλcosφ);\n  }, function(ρ) {\n    return 2 * Math.atan(ρ);\n  });\n  (d3.geo.stereographic = function() {\n    return d3_geo_projection(d3_geo_stereographic);\n  }).raw = d3_geo_stereographic;\n  function d3_geo_transverseMercator(λ, φ) {\n    return [ Math.log(Math.tan(π / 4 + φ / 2)), -λ ];\n  }\n  d3_geo_transverseMercator.invert = function(x, y) {\n    return [ -y, 2 * Math.atan(Math.exp(x)) - halfπ ];\n  };\n  (d3.geo.transverseMercator = function() {\n    var projection = d3_geo_mercatorProjection(d3_geo_transverseMercator), center = projection.center, rotate = projection.rotate;\n    projection.center = function(_) {\n      return _ ? center([ -_[1], _[0] ]) : (_ = center(), [ _[1], -_[0] ]);\n    };\n    projection.rotate = function(_) {\n      return _ ? rotate([ _[0], _[1], _.length > 2 ? _[2] + 90 : 90 ]) : (_ = rotate(), \n      [ _[0], _[1], _[2] - 90 ]);\n    };\n    return rotate([ 0, 0, 90 ]);\n  }).raw = d3_geo_transverseMercator;\n  d3.geom = {};\n  function d3_geom_pointX(d) {\n    return d[0];\n  }\n  function d3_geom_pointY(d) {\n    return d[1];\n  }\n  d3.geom.hull = function(vertices) {\n    var x = d3_geom_pointX, y = d3_geom_pointY;\n    if (arguments.length) return hull(vertices);\n    function hull(data) {\n      if (data.length < 3) return [];\n      var fx = d3_functor(x), fy = d3_functor(y), i, n = data.length, points = [], flippedPoints = [];\n      for (i = 0; i < n; i++) {\n        points.push([ +fx.call(this, data[i], i), +fy.call(this, data[i], i), i ]);\n      }\n      points.sort(d3_geom_hullOrder);\n      for (i = 0; i < n; i++) flippedPoints.push([ points[i][0], -points[i][1] ]);\n      var upper = d3_geom_hullUpper(points), lower = d3_geom_hullUpper(flippedPoints);\n      var skipLeft = lower[0] === upper[0], skipRight = lower[lower.length - 1] === upper[upper.length - 1], polygon = [];\n      for (i = upper.length - 1; i >= 0; --i) polygon.push(data[points[upper[i]][2]]);\n      for (i = +skipLeft; i < lower.length - skipRight; ++i) polygon.push(data[points[lower[i]][2]]);\n      return polygon;\n    }\n    hull.x = function(_) {\n      return arguments.length ? (x = _, hull) : x;\n    };\n    hull.y = function(_) {\n      return arguments.length ? (y = _, hull) : y;\n    };\n    return hull;\n  };\n  function d3_geom_hullUpper(points) {\n    var n = points.length, hull = [ 0, 1 ], hs = 2;\n    for (var i = 2; i < n; i++) {\n      while (hs > 1 && d3_cross2d(points[hull[hs - 2]], points[hull[hs - 1]], points[i]) <= 0) --hs;\n      hull[hs++] = i;\n    }\n    return hull.slice(0, hs);\n  }\n  function d3_geom_hullOrder(a, b) {\n    return a[0] - b[0] || a[1] - b[1];\n  }\n  d3.geom.polygon = function(coordinates) {\n    d3_subclass(coordinates, d3_geom_polygonPrototype);\n    return coordinates;\n  };\n  var d3_geom_polygonPrototype = d3.geom.polygon.prototype = [];\n  d3_geom_polygonPrototype.area = function() {\n    var i = -1, n = this.length, a, b = this[n - 1], area = 0;\n    while (++i < n) {\n      a = b;\n      b = this[i];\n      area += a[1] * b[0] - a[0] * b[1];\n    }\n    return area * .5;\n  };\n  d3_geom_polygonPrototype.centroid = function(k) {\n    var i = -1, n = this.length, x = 0, y = 0, a, b = this[n - 1], c;\n    if (!arguments.length) k = -1 / (6 * this.area());\n    while (++i < n) {\n      a = b;\n      b = this[i];\n      c = a[0] * b[1] - b[0] * a[1];\n      x += (a[0] + b[0]) * c;\n      y += (a[1] + b[1]) * c;\n    }\n    return [ x * k, y * k ];\n  };\n  d3_geom_polygonPrototype.clip = function(subject) {\n    var input, closed = d3_geom_polygonClosed(subject), i = -1, n = this.length - d3_geom_polygonClosed(this), j, m, a = this[n - 1], b, c, d;\n    while (++i < n) {\n      input = subject.slice();\n      subject.length = 0;\n      b = this[i];\n      c = input[(m = input.length - closed) - 1];\n      j = -1;\n      while (++j < m) {\n        d = input[j];\n        if (d3_geom_polygonInside(d, a, b)) {\n          if (!d3_geom_polygonInside(c, a, b)) {\n            subject.push(d3_geom_polygonIntersect(c, d, a, b));\n          }\n          subject.push(d);\n        } else if (d3_geom_polygonInside(c, a, b)) {\n          subject.push(d3_geom_polygonIntersect(c, d, a, b));\n        }\n        c = d;\n      }\n      if (closed) subject.push(subject[0]);\n      a = b;\n    }\n    return subject;\n  };\n  function d3_geom_polygonInside(p, a, b) {\n    return (b[0] - a[0]) * (p[1] - a[1]) < (b[1] - a[1]) * (p[0] - a[0]);\n  }\n  function d3_geom_polygonIntersect(c, d, a, b) {\n    var x1 = c[0], x3 = a[0], x21 = d[0] - x1, x43 = b[0] - x3, y1 = c[1], y3 = a[1], y21 = d[1] - y1, y43 = b[1] - y3, ua = (x43 * (y1 - y3) - y43 * (x1 - x3)) / (y43 * x21 - x43 * y21);\n    return [ x1 + ua * x21, y1 + ua * y21 ];\n  }\n  function d3_geom_polygonClosed(coordinates) {\n    var a = coordinates[0], b = coordinates[coordinates.length - 1];\n    return !(a[0] - b[0] || a[1] - b[1]);\n  }\n  var d3_geom_voronoiEdges, d3_geom_voronoiCells, d3_geom_voronoiBeaches, d3_geom_voronoiBeachPool = [], d3_geom_voronoiFirstCircle, d3_geom_voronoiCircles, d3_geom_voronoiCirclePool = [];\n  function d3_geom_voronoiBeach() {\n    d3_geom_voronoiRedBlackNode(this);\n    this.edge = this.site = this.circle = null;\n  }\n  function d3_geom_voronoiCreateBeach(site) {\n    var beach = d3_geom_voronoiBeachPool.pop() || new d3_geom_voronoiBeach();\n    beach.site = site;\n    return beach;\n  }\n  function d3_geom_voronoiDetachBeach(beach) {\n    d3_geom_voronoiDetachCircle(beach);\n    d3_geom_voronoiBeaches.remove(beach);\n    d3_geom_voronoiBeachPool.push(beach);\n    d3_geom_voronoiRedBlackNode(beach);\n  }\n  function d3_geom_voronoiRemoveBeach(beach) {\n    var circle = beach.circle, x = circle.x, y = circle.cy, vertex = {\n      x: x,\n      y: y\n    }, previous = beach.P, next = beach.N, disappearing = [ beach ];\n    d3_geom_voronoiDetachBeach(beach);\n    var lArc = previous;\n    while (lArc.circle && abs(x - lArc.circle.x) < ε && abs(y - lArc.circle.cy) < ε) {\n      previous = lArc.P;\n      disappearing.unshift(lArc);\n      d3_geom_voronoiDetachBeach(lArc);\n      lArc = previous;\n    }\n    disappearing.unshift(lArc);\n    d3_geom_voronoiDetachCircle(lArc);\n    var rArc = next;\n    while (rArc.circle && abs(x - rArc.circle.x) < ε && abs(y - rArc.circle.cy) < ε) {\n      next = rArc.N;\n      disappearing.push(rArc);\n      d3_geom_voronoiDetachBeach(rArc);\n      rArc = next;\n    }\n    disappearing.push(rArc);\n    d3_geom_voronoiDetachCircle(rArc);\n    var nArcs = disappearing.length, iArc;\n    for (iArc = 1; iArc < nArcs; ++iArc) {\n      rArc = disappearing[iArc];\n      lArc = disappearing[iArc - 1];\n      d3_geom_voronoiSetEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n    }\n    lArc = disappearing[0];\n    rArc = disappearing[nArcs - 1];\n    rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, rArc.site, null, vertex);\n    d3_geom_voronoiAttachCircle(lArc);\n    d3_geom_voronoiAttachCircle(rArc);\n  }\n  function d3_geom_voronoiAddBeach(site) {\n    var x = site.x, directrix = site.y, lArc, rArc, dxl, dxr, node = d3_geom_voronoiBeaches._;\n    while (node) {\n      dxl = d3_geom_voronoiLeftBreakPoint(node, directrix) - x;\n      if (dxl > ε) node = node.L; else {\n        dxr = x - d3_geom_voronoiRightBreakPoint(node, directrix);\n        if (dxr > ε) {\n          if (!node.R) {\n            lArc = node;\n            break;\n          }\n          node = node.R;\n        } else {\n          if (dxl > -ε) {\n            lArc = node.P;\n            rArc = node;\n          } else if (dxr > -ε) {\n            lArc = node;\n            rArc = node.N;\n          } else {\n            lArc = rArc = node;\n          }\n          break;\n        }\n      }\n    }\n    var newArc = d3_geom_voronoiCreateBeach(site);\n    d3_geom_voronoiBeaches.insert(lArc, newArc);\n    if (!lArc && !rArc) return;\n    if (lArc === rArc) {\n      d3_geom_voronoiDetachCircle(lArc);\n      rArc = d3_geom_voronoiCreateBeach(lArc.site);\n      d3_geom_voronoiBeaches.insert(newArc, rArc);\n      newArc.edge = rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);\n      d3_geom_voronoiAttachCircle(lArc);\n      d3_geom_voronoiAttachCircle(rArc);\n      return;\n    }\n    if (!rArc) {\n      newArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);\n      return;\n    }\n    d3_geom_voronoiDetachCircle(lArc);\n    d3_geom_voronoiDetachCircle(rArc);\n    var lSite = lArc.site, ax = lSite.x, ay = lSite.y, bx = site.x - ax, by = site.y - ay, rSite = rArc.site, cx = rSite.x - ax, cy = rSite.y - ay, d = 2 * (bx * cy - by * cx), hb = bx * bx + by * by, hc = cx * cx + cy * cy, vertex = {\n      x: (cy * hb - by * hc) / d + ax,\n      y: (bx * hc - cx * hb) / d + ay\n    };\n    d3_geom_voronoiSetEdgeEnd(rArc.edge, lSite, rSite, vertex);\n    newArc.edge = d3_geom_voronoiCreateEdge(lSite, site, null, vertex);\n    rArc.edge = d3_geom_voronoiCreateEdge(site, rSite, null, vertex);\n    d3_geom_voronoiAttachCircle(lArc);\n    d3_geom_voronoiAttachCircle(rArc);\n  }\n  function d3_geom_voronoiLeftBreakPoint(arc, directrix) {\n    var site = arc.site, rfocx = site.x, rfocy = site.y, pby2 = rfocy - directrix;\n    if (!pby2) return rfocx;\n    var lArc = arc.P;\n    if (!lArc) return -Infinity;\n    site = lArc.site;\n    var lfocx = site.x, lfocy = site.y, plby2 = lfocy - directrix;\n    if (!plby2) return lfocx;\n    var hl = lfocx - rfocx, aby2 = 1 / pby2 - 1 / plby2, b = hl / plby2;\n    if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n    return (rfocx + lfocx) / 2;\n  }\n  function d3_geom_voronoiRightBreakPoint(arc, directrix) {\n    var rArc = arc.N;\n    if (rArc) return d3_geom_voronoiLeftBreakPoint(rArc, directrix);\n    var site = arc.site;\n    return site.y === directrix ? site.x : Infinity;\n  }\n  function d3_geom_voronoiCell(site) {\n    this.site = site;\n    this.edges = [];\n  }\n  d3_geom_voronoiCell.prototype.prepare = function() {\n    var halfEdges = this.edges, iHalfEdge = halfEdges.length, edge;\n    while (iHalfEdge--) {\n      edge = halfEdges[iHalfEdge].edge;\n      if (!edge.b || !edge.a) halfEdges.splice(iHalfEdge, 1);\n    }\n    halfEdges.sort(d3_geom_voronoiHalfEdgeOrder);\n    return halfEdges.length;\n  };\n  function d3_geom_voronoiCloseCells(extent) {\n    var x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], x2, y2, x3, y3, cells = d3_geom_voronoiCells, iCell = cells.length, cell, iHalfEdge, halfEdges, nHalfEdges, start, end;\n    while (iCell--) {\n      cell = cells[iCell];\n      if (!cell || !cell.prepare()) continue;\n      halfEdges = cell.edges;\n      nHalfEdges = halfEdges.length;\n      iHalfEdge = 0;\n      while (iHalfEdge < nHalfEdges) {\n        end = halfEdges[iHalfEdge].end(), x3 = end.x, y3 = end.y;\n        start = halfEdges[++iHalfEdge % nHalfEdges].start(), x2 = start.x, y2 = start.y;\n        if (abs(x3 - x2) > ε || abs(y3 - y2) > ε) {\n          halfEdges.splice(iHalfEdge, 0, new d3_geom_voronoiHalfEdge(d3_geom_voronoiCreateBorderEdge(cell.site, end, abs(x3 - x0) < ε && y1 - y3 > ε ? {\n            x: x0,\n            y: abs(x2 - x0) < ε ? y2 : y1\n          } : abs(y3 - y1) < ε && x1 - x3 > ε ? {\n            x: abs(y2 - y1) < ε ? x2 : x1,\n            y: y1\n          } : abs(x3 - x1) < ε && y3 - y0 > ε ? {\n            x: x1,\n            y: abs(x2 - x1) < ε ? y2 : y0\n          } : abs(y3 - y0) < ε && x3 - x0 > ε ? {\n            x: abs(y2 - y0) < ε ? x2 : x0,\n            y: y0\n          } : null), cell.site, null));\n          ++nHalfEdges;\n        }\n      }\n    }\n  }\n  function d3_geom_voronoiHalfEdgeOrder(a, b) {\n    return b.angle - a.angle;\n  }\n  function d3_geom_voronoiCircle() {\n    d3_geom_voronoiRedBlackNode(this);\n    this.x = this.y = this.arc = this.site = this.cy = null;\n  }\n  function d3_geom_voronoiAttachCircle(arc) {\n    var lArc = arc.P, rArc = arc.N;\n    if (!lArc || !rArc) return;\n    var lSite = lArc.site, cSite = arc.site, rSite = rArc.site;\n    if (lSite === rSite) return;\n    var bx = cSite.x, by = cSite.y, ax = lSite.x - bx, ay = lSite.y - by, cx = rSite.x - bx, cy = rSite.y - by;\n    var d = 2 * (ax * cy - ay * cx);\n    if (d >= -ε2) return;\n    var ha = ax * ax + ay * ay, hc = cx * cx + cy * cy, x = (cy * ha - ay * hc) / d, y = (ax * hc - cx * ha) / d, cy = y + by;\n    var circle = d3_geom_voronoiCirclePool.pop() || new d3_geom_voronoiCircle();\n    circle.arc = arc;\n    circle.site = cSite;\n    circle.x = x + bx;\n    circle.y = cy + Math.sqrt(x * x + y * y);\n    circle.cy = cy;\n    arc.circle = circle;\n    var before = null, node = d3_geom_voronoiCircles._;\n    while (node) {\n      if (circle.y < node.y || circle.y === node.y && circle.x <= node.x) {\n        if (node.L) node = node.L; else {\n          before = node.P;\n          break;\n        }\n      } else {\n        if (node.R) node = node.R; else {\n          before = node;\n          break;\n        }\n      }\n    }\n    d3_geom_voronoiCircles.insert(before, circle);\n    if (!before) d3_geom_voronoiFirstCircle = circle;\n  }\n  function d3_geom_voronoiDetachCircle(arc) {\n    var circle = arc.circle;\n    if (circle) {\n      if (!circle.P) d3_geom_voronoiFirstCircle = circle.N;\n      d3_geom_voronoiCircles.remove(circle);\n      d3_geom_voronoiCirclePool.push(circle);\n      d3_geom_voronoiRedBlackNode(circle);\n      arc.circle = null;\n    }\n  }\n  function d3_geom_voronoiClipEdges(extent) {\n    var edges = d3_geom_voronoiEdges, clip = d3_geom_clipLine(extent[0][0], extent[0][1], extent[1][0], extent[1][1]), i = edges.length, e;\n    while (i--) {\n      e = edges[i];\n      if (!d3_geom_voronoiConnectEdge(e, extent) || !clip(e) || abs(e.a.x - e.b.x) < ε && abs(e.a.y - e.b.y) < ε) {\n        e.a = e.b = null;\n        edges.splice(i, 1);\n      }\n    }\n  }\n  function d3_geom_voronoiConnectEdge(edge, extent) {\n    var vb = edge.b;\n    if (vb) return true;\n    var va = edge.a, x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], lSite = edge.l, rSite = edge.r, lx = lSite.x, ly = lSite.y, rx = rSite.x, ry = rSite.y, fx = (lx + rx) / 2, fy = (ly + ry) / 2, fm, fb;\n    if (ry === ly) {\n      if (fx < x0 || fx >= x1) return;\n      if (lx > rx) {\n        if (!va) va = {\n          x: fx,\n          y: y0\n        }; else if (va.y >= y1) return;\n        vb = {\n          x: fx,\n          y: y1\n        };\n      } else {\n        if (!va) va = {\n          x: fx,\n          y: y1\n        }; else if (va.y < y0) return;\n        vb = {\n          x: fx,\n          y: y0\n        };\n      }\n    } else {\n      fm = (lx - rx) / (ry - ly);\n      fb = fy - fm * fx;\n      if (fm < -1 || fm > 1) {\n        if (lx > rx) {\n          if (!va) va = {\n            x: (y0 - fb) / fm,\n            y: y0\n          }; else if (va.y >= y1) return;\n          vb = {\n            x: (y1 - fb) / fm,\n            y: y1\n          };\n        } else {\n          if (!va) va = {\n            x: (y1 - fb) / fm,\n            y: y1\n          }; else if (va.y < y0) return;\n          vb = {\n            x: (y0 - fb) / fm,\n            y: y0\n          };\n        }\n      } else {\n        if (ly < ry) {\n          if (!va) va = {\n            x: x0,\n            y: fm * x0 + fb\n          }; else if (va.x >= x1) return;\n          vb = {\n            x: x1,\n            y: fm * x1 + fb\n          };\n        } else {\n          if (!va) va = {\n            x: x1,\n            y: fm * x1 + fb\n          }; else if (va.x < x0) return;\n          vb = {\n            x: x0,\n            y: fm * x0 + fb\n          };\n        }\n      }\n    }\n    edge.a = va;\n    edge.b = vb;\n    return true;\n  }\n  function d3_geom_voronoiEdge(lSite, rSite) {\n    this.l = lSite;\n    this.r = rSite;\n    this.a = this.b = null;\n  }\n  function d3_geom_voronoiCreateEdge(lSite, rSite, va, vb) {\n    var edge = new d3_geom_voronoiEdge(lSite, rSite);\n    d3_geom_voronoiEdges.push(edge);\n    if (va) d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, va);\n    if (vb) d3_geom_voronoiSetEdgeEnd(edge, rSite, lSite, vb);\n    d3_geom_voronoiCells[lSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, lSite, rSite));\n    d3_geom_voronoiCells[rSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, rSite, lSite));\n    return edge;\n  }\n  function d3_geom_voronoiCreateBorderEdge(lSite, va, vb) {\n    var edge = new d3_geom_voronoiEdge(lSite, null);\n    edge.a = va;\n    edge.b = vb;\n    d3_geom_voronoiEdges.push(edge);\n    return edge;\n  }\n  function d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, vertex) {\n    if (!edge.a && !edge.b) {\n      edge.a = vertex;\n      edge.l = lSite;\n      edge.r = rSite;\n    } else if (edge.l === rSite) {\n      edge.b = vertex;\n    } else {\n      edge.a = vertex;\n    }\n  }\n  function d3_geom_voronoiHalfEdge(edge, lSite, rSite) {\n    var va = edge.a, vb = edge.b;\n    this.edge = edge;\n    this.site = lSite;\n    this.angle = rSite ? Math.atan2(rSite.y - lSite.y, rSite.x - lSite.x) : edge.l === lSite ? Math.atan2(vb.x - va.x, va.y - vb.y) : Math.atan2(va.x - vb.x, vb.y - va.y);\n  }\n  d3_geom_voronoiHalfEdge.prototype = {\n    start: function() {\n      return this.edge.l === this.site ? this.edge.a : this.edge.b;\n    },\n    end: function() {\n      return this.edge.l === this.site ? this.edge.b : this.edge.a;\n    }\n  };\n  function d3_geom_voronoiRedBlackTree() {\n    this._ = null;\n  }\n  function d3_geom_voronoiRedBlackNode(node) {\n    node.U = node.C = node.L = node.R = node.P = node.N = null;\n  }\n  d3_geom_voronoiRedBlackTree.prototype = {\n    insert: function(after, node) {\n      var parent, grandpa, uncle;\n      if (after) {\n        node.P = after;\n        node.N = after.N;\n        if (after.N) after.N.P = node;\n        after.N = node;\n        if (after.R) {\n          after = after.R;\n          while (after.L) after = after.L;\n          after.L = node;\n        } else {\n          after.R = node;\n        }\n        parent = after;\n      } else if (this._) {\n        after = d3_geom_voronoiRedBlackFirst(this._);\n        node.P = null;\n        node.N = after;\n        after.P = after.L = node;\n        parent = after;\n      } else {\n        node.P = node.N = null;\n        this._ = node;\n        parent = null;\n      }\n      node.L = node.R = null;\n      node.U = parent;\n      node.C = true;\n      after = node;\n      while (parent && parent.C) {\n        grandpa = parent.U;\n        if (parent === grandpa.L) {\n          uncle = grandpa.R;\n          if (uncle && uncle.C) {\n            parent.C = uncle.C = false;\n            grandpa.C = true;\n            after = grandpa;\n          } else {\n            if (after === parent.R) {\n              d3_geom_voronoiRedBlackRotateLeft(this, parent);\n              after = parent;\n              parent = after.U;\n            }\n            parent.C = false;\n            grandpa.C = true;\n            d3_geom_voronoiRedBlackRotateRight(this, grandpa);\n          }\n        } else {\n          uncle = grandpa.L;\n          if (uncle && uncle.C) {\n            parent.C = uncle.C = false;\n            grandpa.C = true;\n            after = grandpa;\n          } else {\n            if (after === parent.L) {\n              d3_geom_voronoiRedBlackRotateRight(this, parent);\n              after = parent;\n              parent = after.U;\n            }\n            parent.C = false;\n            grandpa.C = true;\n            d3_geom_voronoiRedBlackRotateLeft(this, grandpa);\n          }\n        }\n        parent = after.U;\n      }\n      this._.C = false;\n    },\n    remove: function(node) {\n      if (node.N) node.N.P = node.P;\n      if (node.P) node.P.N = node.N;\n      node.N = node.P = null;\n      var parent = node.U, sibling, left = node.L, right = node.R, next, red;\n      if (!left) next = right; else if (!right) next = left; else next = d3_geom_voronoiRedBlackFirst(right);\n      if (parent) {\n        if (parent.L === node) parent.L = next; else parent.R = next;\n      } else {\n        this._ = next;\n      }\n      if (left && right) {\n        red = next.C;\n        next.C = node.C;\n        next.L = left;\n        left.U = next;\n        if (next !== right) {\n          parent = next.U;\n          next.U = node.U;\n          node = next.R;\n          parent.L = node;\n          next.R = right;\n          right.U = next;\n        } else {\n          next.U = parent;\n          parent = next;\n          node = next.R;\n        }\n      } else {\n        red = node.C;\n        node = next;\n      }\n      if (node) node.U = parent;\n      if (red) return;\n      if (node && node.C) {\n        node.C = false;\n        return;\n      }\n      do {\n        if (node === this._) break;\n        if (node === parent.L) {\n          sibling = parent.R;\n          if (sibling.C) {\n            sibling.C = false;\n            parent.C = true;\n            d3_geom_voronoiRedBlackRotateLeft(this, parent);\n            sibling = parent.R;\n          }\n          if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {\n            if (!sibling.R || !sibling.R.C) {\n              sibling.L.C = false;\n              sibling.C = true;\n              d3_geom_voronoiRedBlackRotateRight(this, sibling);\n              sibling = parent.R;\n            }\n            sibling.C = parent.C;\n            parent.C = sibling.R.C = false;\n            d3_geom_voronoiRedBlackRotateLeft(this, parent);\n            node = this._;\n            break;\n          }\n        } else {\n          sibling = parent.L;\n          if (sibling.C) {\n            sibling.C = false;\n            parent.C = true;\n            d3_geom_voronoiRedBlackRotateRight(this, parent);\n            sibling = parent.L;\n          }\n          if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {\n            if (!sibling.L || !sibling.L.C) {\n              sibling.R.C = false;\n              sibling.C = true;\n              d3_geom_voronoiRedBlackRotateLeft(this, sibling);\n              sibling = parent.L;\n            }\n            sibling.C = parent.C;\n            parent.C = sibling.L.C = false;\n            d3_geom_voronoiRedBlackRotateRight(this, parent);\n            node = this._;\n            break;\n          }\n        }\n        sibling.C = true;\n        node = parent;\n        parent = parent.U;\n      } while (!node.C);\n      if (node) node.C = false;\n    }\n  };\n  function d3_geom_voronoiRedBlackRotateLeft(tree, node) {\n    var p = node, q = node.R, parent = p.U;\n    if (parent) {\n      if (parent.L === p) parent.L = q; else parent.R = q;\n    } else {\n      tree._ = q;\n    }\n    q.U = parent;\n    p.U = q;\n    p.R = q.L;\n    if (p.R) p.R.U = p;\n    q.L = p;\n  }\n  function d3_geom_voronoiRedBlackRotateRight(tree, node) {\n    var p = node, q = node.L, parent = p.U;\n    if (parent) {\n      if (parent.L === p) parent.L = q; else parent.R = q;\n    } else {\n      tree._ = q;\n    }\n    q.U = parent;\n    p.U = q;\n    p.L = q.R;\n    if (p.L) p.L.U = p;\n    q.R = p;\n  }\n  function d3_geom_voronoiRedBlackFirst(node) {\n    while (node.L) node = node.L;\n    return node;\n  }\n  function d3_geom_voronoi(sites, bbox) {\n    var site = sites.sort(d3_geom_voronoiVertexOrder).pop(), x0, y0, circle;\n    d3_geom_voronoiEdges = [];\n    d3_geom_voronoiCells = new Array(sites.length);\n    d3_geom_voronoiBeaches = new d3_geom_voronoiRedBlackTree();\n    d3_geom_voronoiCircles = new d3_geom_voronoiRedBlackTree();\n    while (true) {\n      circle = d3_geom_voronoiFirstCircle;\n      if (site && (!circle || site.y < circle.y || site.y === circle.y && site.x < circle.x)) {\n        if (site.x !== x0 || site.y !== y0) {\n          d3_geom_voronoiCells[site.i] = new d3_geom_voronoiCell(site);\n          d3_geom_voronoiAddBeach(site);\n          x0 = site.x, y0 = site.y;\n        }\n        site = sites.pop();\n      } else if (circle) {\n        d3_geom_voronoiRemoveBeach(circle.arc);\n      } else {\n        break;\n      }\n    }\n    if (bbox) d3_geom_voronoiClipEdges(bbox), d3_geom_voronoiCloseCells(bbox);\n    var diagram = {\n      cells: d3_geom_voronoiCells,\n      edges: d3_geom_voronoiEdges\n    };\n    d3_geom_voronoiBeaches = d3_geom_voronoiCircles = d3_geom_voronoiEdges = d3_geom_voronoiCells = null;\n    return diagram;\n  }\n  function d3_geom_voronoiVertexOrder(a, b) {\n    return b.y - a.y || b.x - a.x;\n  }\n  d3.geom.voronoi = function(points) {\n    var x = d3_geom_pointX, y = d3_geom_pointY, fx = x, fy = y, clipExtent = d3_geom_voronoiClipExtent;\n    if (points) return voronoi(points);\n    function voronoi(data) {\n      var polygons = new Array(data.length), x0 = clipExtent[0][0], y0 = clipExtent[0][1], x1 = clipExtent[1][0], y1 = clipExtent[1][1];\n      d3_geom_voronoi(sites(data), clipExtent).cells.forEach(function(cell, i) {\n        var edges = cell.edges, site = cell.site, polygon = polygons[i] = edges.length ? edges.map(function(e) {\n          var s = e.start();\n          return [ s.x, s.y ];\n        }) : site.x >= x0 && site.x <= x1 && site.y >= y0 && site.y <= y1 ? [ [ x0, y1 ], [ x1, y1 ], [ x1, y0 ], [ x0, y0 ] ] : [];\n        polygon.point = data[i];\n      });\n      return polygons;\n    }\n    function sites(data) {\n      return data.map(function(d, i) {\n        return {\n          x: Math.round(fx(d, i) / ε) * ε,\n          y: Math.round(fy(d, i) / ε) * ε,\n          i: i\n        };\n      });\n    }\n    voronoi.links = function(data) {\n      return d3_geom_voronoi(sites(data)).edges.filter(function(edge) {\n        return edge.l && edge.r;\n      }).map(function(edge) {\n        return {\n          source: data[edge.l.i],\n          target: data[edge.r.i]\n        };\n      });\n    };\n    voronoi.triangles = function(data) {\n      var triangles = [];\n      d3_geom_voronoi(sites(data)).cells.forEach(function(cell, i) {\n        var site = cell.site, edges = cell.edges.sort(d3_geom_voronoiHalfEdgeOrder), j = -1, m = edges.length, e0, s0, e1 = edges[m - 1].edge, s1 = e1.l === site ? e1.r : e1.l;\n        while (++j < m) {\n          e0 = e1;\n          s0 = s1;\n          e1 = edges[j].edge;\n          s1 = e1.l === site ? e1.r : e1.l;\n          if (i < s0.i && i < s1.i && d3_geom_voronoiTriangleArea(site, s0, s1) < 0) {\n            triangles.push([ data[i], data[s0.i], data[s1.i] ]);\n          }\n        }\n      });\n      return triangles;\n    };\n    voronoi.x = function(_) {\n      return arguments.length ? (fx = d3_functor(x = _), voronoi) : x;\n    };\n    voronoi.y = function(_) {\n      return arguments.length ? (fy = d3_functor(y = _), voronoi) : y;\n    };\n    voronoi.clipExtent = function(_) {\n      if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent;\n      clipExtent = _ == null ? d3_geom_voronoiClipExtent : _;\n      return voronoi;\n    };\n    voronoi.size = function(_) {\n      if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent && clipExtent[1];\n      return voronoi.clipExtent(_ && [ [ 0, 0 ], _ ]);\n    };\n    return voronoi;\n  };\n  var d3_geom_voronoiClipExtent = [ [ -1e6, -1e6 ], [ 1e6, 1e6 ] ];\n  function d3_geom_voronoiTriangleArea(a, b, c) {\n    return (a.x - c.x) * (b.y - a.y) - (a.x - b.x) * (c.y - a.y);\n  }\n  d3.geom.delaunay = function(vertices) {\n    return d3.geom.voronoi().triangles(vertices);\n  };\n  d3.geom.quadtree = function(points, x1, y1, x2, y2) {\n    var x = d3_geom_pointX, y = d3_geom_pointY, compat;\n    if (compat = arguments.length) {\n      x = d3_geom_quadtreeCompatX;\n      y = d3_geom_quadtreeCompatY;\n      if (compat === 3) {\n        y2 = y1;\n        x2 = x1;\n        y1 = x1 = 0;\n      }\n      return quadtree(points);\n    }\n    function quadtree(data) {\n      var d, fx = d3_functor(x), fy = d3_functor(y), xs, ys, i, n, x1_, y1_, x2_, y2_;\n      if (x1 != null) {\n        x1_ = x1, y1_ = y1, x2_ = x2, y2_ = y2;\n      } else {\n        x2_ = y2_ = -(x1_ = y1_ = Infinity);\n        xs = [], ys = [];\n        n = data.length;\n        if (compat) for (i = 0; i < n; ++i) {\n          d = data[i];\n          if (d.x < x1_) x1_ = d.x;\n          if (d.y < y1_) y1_ = d.y;\n          if (d.x > x2_) x2_ = d.x;\n          if (d.y > y2_) y2_ = d.y;\n          xs.push(d.x);\n          ys.push(d.y);\n        } else for (i = 0; i < n; ++i) {\n          var x_ = +fx(d = data[i], i), y_ = +fy(d, i);\n          if (x_ < x1_) x1_ = x_;\n          if (y_ < y1_) y1_ = y_;\n          if (x_ > x2_) x2_ = x_;\n          if (y_ > y2_) y2_ = y_;\n          xs.push(x_);\n          ys.push(y_);\n        }\n      }\n      var dx = x2_ - x1_, dy = y2_ - y1_;\n      if (dx > dy) y2_ = y1_ + dx; else x2_ = x1_ + dy;\n      function insert(n, d, x, y, x1, y1, x2, y2) {\n        if (isNaN(x) || isNaN(y)) return;\n        if (n.leaf) {\n          var nx = n.x, ny = n.y;\n          if (nx != null) {\n            if (abs(nx - x) + abs(ny - y) < .01) {\n              insertChild(n, d, x, y, x1, y1, x2, y2);\n            } else {\n              var nPoint = n.point;\n              n.x = n.y = n.point = null;\n              insertChild(n, nPoint, nx, ny, x1, y1, x2, y2);\n              insertChild(n, d, x, y, x1, y1, x2, y2);\n            }\n          } else {\n            n.x = x, n.y = y, n.point = d;\n          }\n        } else {\n          insertChild(n, d, x, y, x1, y1, x2, y2);\n        }\n      }\n      function insertChild(n, d, x, y, x1, y1, x2, y2) {\n        var xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym, i = below << 1 | right;\n        n.leaf = false;\n        n = n.nodes[i] || (n.nodes[i] = d3_geom_quadtreeNode());\n        if (right) x1 = xm; else x2 = xm;\n        if (below) y1 = ym; else y2 = ym;\n        insert(n, d, x, y, x1, y1, x2, y2);\n      }\n      var root = d3_geom_quadtreeNode();\n      root.add = function(d) {\n        insert(root, d, +fx(d, ++i), +fy(d, i), x1_, y1_, x2_, y2_);\n      };\n      root.visit = function(f) {\n        d3_geom_quadtreeVisit(f, root, x1_, y1_, x2_, y2_);\n      };\n      root.find = function(point) {\n        return d3_geom_quadtreeFind(root, point[0], point[1], x1_, y1_, x2_, y2_);\n      };\n      i = -1;\n      if (x1 == null) {\n        while (++i < n) {\n          insert(root, data[i], xs[i], ys[i], x1_, y1_, x2_, y2_);\n        }\n        --i;\n      } else data.forEach(root.add);\n      xs = ys = data = d = null;\n      return root;\n    }\n    quadtree.x = function(_) {\n      return arguments.length ? (x = _, quadtree) : x;\n    };\n    quadtree.y = function(_) {\n      return arguments.length ? (y = _, quadtree) : y;\n    };\n    quadtree.extent = function(_) {\n      if (!arguments.length) return x1 == null ? null : [ [ x1, y1 ], [ x2, y2 ] ];\n      if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = +_[0][0], y1 = +_[0][1], x2 = +_[1][0], \n      y2 = +_[1][1];\n      return quadtree;\n    };\n    quadtree.size = function(_) {\n      if (!arguments.length) return x1 == null ? null : [ x2 - x1, y2 - y1 ];\n      if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = y1 = 0, x2 = +_[0], y2 = +_[1];\n      return quadtree;\n    };\n    return quadtree;\n  };\n  function d3_geom_quadtreeCompatX(d) {\n    return d.x;\n  }\n  function d3_geom_quadtreeCompatY(d) {\n    return d.y;\n  }\n  function d3_geom_quadtreeNode() {\n    return {\n      leaf: true,\n      nodes: [],\n      point: null,\n      x: null,\n      y: null\n    };\n  }\n  function d3_geom_quadtreeVisit(f, node, x1, y1, x2, y2) {\n    if (!f(node, x1, y1, x2, y2)) {\n      var sx = (x1 + x2) * .5, sy = (y1 + y2) * .5, children = node.nodes;\n      if (children[0]) d3_geom_quadtreeVisit(f, children[0], x1, y1, sx, sy);\n      if (children[1]) d3_geom_quadtreeVisit(f, children[1], sx, y1, x2, sy);\n      if (children[2]) d3_geom_quadtreeVisit(f, children[2], x1, sy, sx, y2);\n      if (children[3]) d3_geom_quadtreeVisit(f, children[3], sx, sy, x2, y2);\n    }\n  }\n  function d3_geom_quadtreeFind(root, x, y, x0, y0, x3, y3) {\n    var minDistance2 = Infinity, closestPoint;\n    (function find(node, x1, y1, x2, y2) {\n      if (x1 > x3 || y1 > y3 || x2 < x0 || y2 < y0) return;\n      if (point = node.point) {\n        var point, dx = x - node.x, dy = y - node.y, distance2 = dx * dx + dy * dy;\n        if (distance2 < minDistance2) {\n          var distance = Math.sqrt(minDistance2 = distance2);\n          x0 = x - distance, y0 = y - distance;\n          x3 = x + distance, y3 = y + distance;\n          closestPoint = point;\n        }\n      }\n      var children = node.nodes, xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym;\n      for (var i = below << 1 | right, j = i + 4; i < j; ++i) {\n        if (node = children[i & 3]) switch (i & 3) {\n         case 0:\n          find(node, x1, y1, xm, ym);\n          break;\n\n         case 1:\n          find(node, xm, y1, x2, ym);\n          break;\n\n         case 2:\n          find(node, x1, ym, xm, y2);\n          break;\n\n         case 3:\n          find(node, xm, ym, x2, y2);\n          break;\n        }\n      }\n    })(root, x0, y0, x3, y3);\n    return closestPoint;\n  }\n  d3.interpolateRgb = d3_interpolateRgb;\n  function d3_interpolateRgb(a, b) {\n    a = d3.rgb(a);\n    b = d3.rgb(b);\n    var ar = a.r, ag = a.g, ab = a.b, br = b.r - ar, bg = b.g - ag, bb = b.b - ab;\n    return function(t) {\n      return \"#\" + d3_rgb_hex(Math.round(ar + br * t)) + d3_rgb_hex(Math.round(ag + bg * t)) + d3_rgb_hex(Math.round(ab + bb * t));\n    };\n  }\n  d3.interpolateObject = d3_interpolateObject;\n  function d3_interpolateObject(a, b) {\n    var i = {}, c = {}, k;\n    for (k in a) {\n      if (k in b) {\n        i[k] = d3_interpolate(a[k], b[k]);\n      } else {\n        c[k] = a[k];\n      }\n    }\n    for (k in b) {\n      if (!(k in a)) {\n        c[k] = b[k];\n      }\n    }\n    return function(t) {\n      for (k in i) c[k] = i[k](t);\n      return c;\n    };\n  }\n  d3.interpolateNumber = d3_interpolateNumber;\n  function d3_interpolateNumber(a, b) {\n    a = +a, b = +b;\n    return function(t) {\n      return a * (1 - t) + b * t;\n    };\n  }\n  d3.interpolateString = d3_interpolateString;\n  function d3_interpolateString(a, b) {\n    var bi = d3_interpolate_numberA.lastIndex = d3_interpolate_numberB.lastIndex = 0, am, bm, bs, i = -1, s = [], q = [];\n    a = a + \"\", b = b + \"\";\n    while ((am = d3_interpolate_numberA.exec(a)) && (bm = d3_interpolate_numberB.exec(b))) {\n      if ((bs = bm.index) > bi) {\n        bs = b.slice(bi, bs);\n        if (s[i]) s[i] += bs; else s[++i] = bs;\n      }\n      if ((am = am[0]) === (bm = bm[0])) {\n        if (s[i]) s[i] += bm; else s[++i] = bm;\n      } else {\n        s[++i] = null;\n        q.push({\n          i: i,\n          x: d3_interpolateNumber(am, bm)\n        });\n      }\n      bi = d3_interpolate_numberB.lastIndex;\n    }\n    if (bi < b.length) {\n      bs = b.slice(bi);\n      if (s[i]) s[i] += bs; else s[++i] = bs;\n    }\n    return s.length < 2 ? q[0] ? (b = q[0].x, function(t) {\n      return b(t) + \"\";\n    }) : function() {\n      return b;\n    } : (b = q.length, function(t) {\n      for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n      return s.join(\"\");\n    });\n  }\n  var d3_interpolate_numberA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g, d3_interpolate_numberB = new RegExp(d3_interpolate_numberA.source, \"g\");\n  d3.interpolate = d3_interpolate;\n  function d3_interpolate(a, b) {\n    var i = d3.interpolators.length, f;\n    while (--i >= 0 && !(f = d3.interpolators[i](a, b))) ;\n    return f;\n  }\n  d3.interpolators = [ function(a, b) {\n    var t = typeof b;\n    return (t === \"string\" ? d3_rgb_names.has(b.toLowerCase()) || /^(#|rgb\\(|hsl\\()/i.test(b) ? d3_interpolateRgb : d3_interpolateString : b instanceof d3_color ? d3_interpolateRgb : Array.isArray(b) ? d3_interpolateArray : t === \"object\" && isNaN(b) ? d3_interpolateObject : d3_interpolateNumber)(a, b);\n  } ];\n  d3.interpolateArray = d3_interpolateArray;\n  function d3_interpolateArray(a, b) {\n    var x = [], c = [], na = a.length, nb = b.length, n0 = Math.min(a.length, b.length), i;\n    for (i = 0; i < n0; ++i) x.push(d3_interpolate(a[i], b[i]));\n    for (;i < na; ++i) c[i] = a[i];\n    for (;i < nb; ++i) c[i] = b[i];\n    return function(t) {\n      for (i = 0; i < n0; ++i) c[i] = x[i](t);\n      return c;\n    };\n  }\n  var d3_ease_default = function() {\n    return d3_identity;\n  };\n  var d3_ease = d3.map({\n    linear: d3_ease_default,\n    poly: d3_ease_poly,\n    quad: function() {\n      return d3_ease_quad;\n    },\n    cubic: function() {\n      return d3_ease_cubic;\n    },\n    sin: function() {\n      return d3_ease_sin;\n    },\n    exp: function() {\n      return d3_ease_exp;\n    },\n    circle: function() {\n      return d3_ease_circle;\n    },\n    elastic: d3_ease_elastic,\n    back: d3_ease_back,\n    bounce: function() {\n      return d3_ease_bounce;\n    }\n  });\n  var d3_ease_mode = d3.map({\n    \"in\": d3_identity,\n    out: d3_ease_reverse,\n    \"in-out\": d3_ease_reflect,\n    \"out-in\": function(f) {\n      return d3_ease_reflect(d3_ease_reverse(f));\n    }\n  });\n  d3.ease = function(name) {\n    var i = name.indexOf(\"-\"), t = i >= 0 ? name.slice(0, i) : name, m = i >= 0 ? name.slice(i + 1) : \"in\";\n    t = d3_ease.get(t) || d3_ease_default;\n    m = d3_ease_mode.get(m) || d3_identity;\n    return d3_ease_clamp(m(t.apply(null, d3_arraySlice.call(arguments, 1))));\n  };\n  function d3_ease_clamp(f) {\n    return function(t) {\n      return t <= 0 ? 0 : t >= 1 ? 1 : f(t);\n    };\n  }\n  function d3_ease_reverse(f) {\n    return function(t) {\n      return 1 - f(1 - t);\n    };\n  }\n  function d3_ease_reflect(f) {\n    return function(t) {\n      return .5 * (t < .5 ? f(2 * t) : 2 - f(2 - 2 * t));\n    };\n  }\n  function d3_ease_quad(t) {\n    return t * t;\n  }\n  function d3_ease_cubic(t) {\n    return t * t * t;\n  }\n  function d3_ease_cubicInOut(t) {\n    if (t <= 0) return 0;\n    if (t >= 1) return 1;\n    var t2 = t * t, t3 = t2 * t;\n    return 4 * (t < .5 ? t3 : 3 * (t - t2) + t3 - .75);\n  }\n  function d3_ease_poly(e) {\n    return function(t) {\n      return Math.pow(t, e);\n    };\n  }\n  function d3_ease_sin(t) {\n    return 1 - Math.cos(t * halfπ);\n  }\n  function d3_ease_exp(t) {\n    return Math.pow(2, 10 * (t - 1));\n  }\n  function d3_ease_circle(t) {\n    return 1 - Math.sqrt(1 - t * t);\n  }\n  function d3_ease_elastic(a, p) {\n    var s;\n    if (arguments.length < 2) p = .45;\n    if (arguments.length) s = p / τ * Math.asin(1 / a); else a = 1, s = p / 4;\n    return function(t) {\n      return 1 + a * Math.pow(2, -10 * t) * Math.sin((t - s) * τ / p);\n    };\n  }\n  function d3_ease_back(s) {\n    if (!s) s = 1.70158;\n    return function(t) {\n      return t * t * ((s + 1) * t - s);\n    };\n  }\n  function d3_ease_bounce(t) {\n    return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375;\n  }\n  d3.interpolateHcl = d3_interpolateHcl;\n  function d3_interpolateHcl(a, b) {\n    a = d3.hcl(a);\n    b = d3.hcl(b);\n    var ah = a.h, ac = a.c, al = a.l, bh = b.h - ah, bc = b.c - ac, bl = b.l - al;\n    if (isNaN(bc)) bc = 0, ac = isNaN(ac) ? b.c : ac;\n    if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;\n    return function(t) {\n      return d3_hcl_lab(ah + bh * t, ac + bc * t, al + bl * t) + \"\";\n    };\n  }\n  d3.interpolateHsl = d3_interpolateHsl;\n  function d3_interpolateHsl(a, b) {\n    a = d3.hsl(a);\n    b = d3.hsl(b);\n    var ah = a.h, as = a.s, al = a.l, bh = b.h - ah, bs = b.s - as, bl = b.l - al;\n    if (isNaN(bs)) bs = 0, as = isNaN(as) ? b.s : as;\n    if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;\n    return function(t) {\n      return d3_hsl_rgb(ah + bh * t, as + bs * t, al + bl * t) + \"\";\n    };\n  }\n  d3.interpolateLab = d3_interpolateLab;\n  function d3_interpolateLab(a, b) {\n    a = d3.lab(a);\n    b = d3.lab(b);\n    var al = a.l, aa = a.a, ab = a.b, bl = b.l - al, ba = b.a - aa, bb = b.b - ab;\n    return function(t) {\n      return d3_lab_rgb(al + bl * t, aa + ba * t, ab + bb * t) + \"\";\n    };\n  }\n  d3.interpolateRound = d3_interpolateRound;\n  function d3_interpolateRound(a, b) {\n    b -= a;\n    return function(t) {\n      return Math.round(a + b * t);\n    };\n  }\n  d3.transform = function(string) {\n    var g = d3_document.createElementNS(d3.ns.prefix.svg, \"g\");\n    return (d3.transform = function(string) {\n      if (string != null) {\n        g.setAttribute(\"transform\", string);\n        var t = g.transform.baseVal.consolidate();\n      }\n      return new d3_transform(t ? t.matrix : d3_transformIdentity);\n    })(string);\n  };\n  function d3_transform(m) {\n    var r0 = [ m.a, m.b ], r1 = [ m.c, m.d ], kx = d3_transformNormalize(r0), kz = d3_transformDot(r0, r1), ky = d3_transformNormalize(d3_transformCombine(r1, r0, -kz)) || 0;\n    if (r0[0] * r1[1] < r1[0] * r0[1]) {\n      r0[0] *= -1;\n      r0[1] *= -1;\n      kx *= -1;\n      kz *= -1;\n    }\n    this.rotate = (kx ? Math.atan2(r0[1], r0[0]) : Math.atan2(-r1[0], r1[1])) * d3_degrees;\n    this.translate = [ m.e, m.f ];\n    this.scale = [ kx, ky ];\n    this.skew = ky ? Math.atan2(kz, ky) * d3_degrees : 0;\n  }\n  d3_transform.prototype.toString = function() {\n    return \"translate(\" + this.translate + \")rotate(\" + this.rotate + \")skewX(\" + this.skew + \")scale(\" + this.scale + \")\";\n  };\n  function d3_transformDot(a, b) {\n    return a[0] * b[0] + a[1] * b[1];\n  }\n  function d3_transformNormalize(a) {\n    var k = Math.sqrt(d3_transformDot(a, a));\n    if (k) {\n      a[0] /= k;\n      a[1] /= k;\n    }\n    return k;\n  }\n  function d3_transformCombine(a, b, k) {\n    a[0] += k * b[0];\n    a[1] += k * b[1];\n    return a;\n  }\n  var d3_transformIdentity = {\n    a: 1,\n    b: 0,\n    c: 0,\n    d: 1,\n    e: 0,\n    f: 0\n  };\n  d3.interpolateTransform = d3_interpolateTransform;\n  function d3_interpolateTransformPop(s) {\n    return s.length ? s.pop() + \",\" : \"\";\n  }\n  function d3_interpolateTranslate(ta, tb, s, q) {\n    if (ta[0] !== tb[0] || ta[1] !== tb[1]) {\n      var i = s.push(\"translate(\", null, \",\", null, \")\");\n      q.push({\n        i: i - 4,\n        x: d3_interpolateNumber(ta[0], tb[0])\n      }, {\n        i: i - 2,\n        x: d3_interpolateNumber(ta[1], tb[1])\n      });\n    } else if (tb[0] || tb[1]) {\n      s.push(\"translate(\" + tb + \")\");\n    }\n  }\n  function d3_interpolateRotate(ra, rb, s, q) {\n    if (ra !== rb) {\n      if (ra - rb > 180) rb += 360; else if (rb - ra > 180) ra += 360;\n      q.push({\n        i: s.push(d3_interpolateTransformPop(s) + \"rotate(\", null, \")\") - 2,\n        x: d3_interpolateNumber(ra, rb)\n      });\n    } else if (rb) {\n      s.push(d3_interpolateTransformPop(s) + \"rotate(\" + rb + \")\");\n    }\n  }\n  function d3_interpolateSkew(wa, wb, s, q) {\n    if (wa !== wb) {\n      q.push({\n        i: s.push(d3_interpolateTransformPop(s) + \"skewX(\", null, \")\") - 2,\n        x: d3_interpolateNumber(wa, wb)\n      });\n    } else if (wb) {\n      s.push(d3_interpolateTransformPop(s) + \"skewX(\" + wb + \")\");\n    }\n  }\n  function d3_interpolateScale(ka, kb, s, q) {\n    if (ka[0] !== kb[0] || ka[1] !== kb[1]) {\n      var i = s.push(d3_interpolateTransformPop(s) + \"scale(\", null, \",\", null, \")\");\n      q.push({\n        i: i - 4,\n        x: d3_interpolateNumber(ka[0], kb[0])\n      }, {\n        i: i - 2,\n        x: d3_interpolateNumber(ka[1], kb[1])\n      });\n    } else if (kb[0] !== 1 || kb[1] !== 1) {\n      s.push(d3_interpolateTransformPop(s) + \"scale(\" + kb + \")\");\n    }\n  }\n  function d3_interpolateTransform(a, b) {\n    var s = [], q = [];\n    a = d3.transform(a), b = d3.transform(b);\n    d3_interpolateTranslate(a.translate, b.translate, s, q);\n    d3_interpolateRotate(a.rotate, b.rotate, s, q);\n    d3_interpolateSkew(a.skew, b.skew, s, q);\n    d3_interpolateScale(a.scale, b.scale, s, q);\n    a = b = null;\n    return function(t) {\n      var i = -1, n = q.length, o;\n      while (++i < n) s[(o = q[i]).i] = o.x(t);\n      return s.join(\"\");\n    };\n  }\n  function d3_uninterpolateNumber(a, b) {\n    b = (b -= a = +a) || 1 / b;\n    return function(x) {\n      return (x - a) / b;\n    };\n  }\n  function d3_uninterpolateClamp(a, b) {\n    b = (b -= a = +a) || 1 / b;\n    return function(x) {\n      return Math.max(0, Math.min(1, (x - a) / b));\n    };\n  }\n  d3.layout = {};\n  d3.layout.bundle = function() {\n    return function(links) {\n      var paths = [], i = -1, n = links.length;\n      while (++i < n) paths.push(d3_layout_bundlePath(links[i]));\n      return paths;\n    };\n  };\n  function d3_layout_bundlePath(link) {\n    var start = link.source, end = link.target, lca = d3_layout_bundleLeastCommonAncestor(start, end), points = [ start ];\n    while (start !== lca) {\n      start = start.parent;\n      points.push(start);\n    }\n    var k = points.length;\n    while (end !== lca) {\n      points.splice(k, 0, end);\n      end = end.parent;\n    }\n    return points;\n  }\n  function d3_layout_bundleAncestors(node) {\n    var ancestors = [], parent = node.parent;\n    while (parent != null) {\n      ancestors.push(node);\n      node = parent;\n      parent = parent.parent;\n    }\n    ancestors.push(node);\n    return ancestors;\n  }\n  function d3_layout_bundleLeastCommonAncestor(a, b) {\n    if (a === b) return a;\n    var aNodes = d3_layout_bundleAncestors(a), bNodes = d3_layout_bundleAncestors(b), aNode = aNodes.pop(), bNode = bNodes.pop(), sharedNode = null;\n    while (aNode === bNode) {\n      sharedNode = aNode;\n      aNode = aNodes.pop();\n      bNode = bNodes.pop();\n    }\n    return sharedNode;\n  }\n  d3.layout.chord = function() {\n    var chord = {}, chords, groups, matrix, n, padding = 0, sortGroups, sortSubgroups, sortChords;\n    function relayout() {\n      var subgroups = {}, groupSums = [], groupIndex = d3.range(n), subgroupIndex = [], k, x, x0, i, j;\n      chords = [];\n      groups = [];\n      k = 0, i = -1;\n      while (++i < n) {\n        x = 0, j = -1;\n        while (++j < n) {\n          x += matrix[i][j];\n        }\n        groupSums.push(x);\n        subgroupIndex.push(d3.range(n));\n        k += x;\n      }\n      if (sortGroups) {\n        groupIndex.sort(function(a, b) {\n          return sortGroups(groupSums[a], groupSums[b]);\n        });\n      }\n      if (sortSubgroups) {\n        subgroupIndex.forEach(function(d, i) {\n          d.sort(function(a, b) {\n            return sortSubgroups(matrix[i][a], matrix[i][b]);\n          });\n        });\n      }\n      k = (τ - padding * n) / k;\n      x = 0, i = -1;\n      while (++i < n) {\n        x0 = x, j = -1;\n        while (++j < n) {\n          var di = groupIndex[i], dj = subgroupIndex[di][j], v = matrix[di][dj], a0 = x, a1 = x += v * k;\n          subgroups[di + \"-\" + dj] = {\n            index: di,\n            subindex: dj,\n            startAngle: a0,\n            endAngle: a1,\n            value: v\n          };\n        }\n        groups[di] = {\n          index: di,\n          startAngle: x0,\n          endAngle: x,\n          value: groupSums[di]\n        };\n        x += padding;\n      }\n      i = -1;\n      while (++i < n) {\n        j = i - 1;\n        while (++j < n) {\n          var source = subgroups[i + \"-\" + j], target = subgroups[j + \"-\" + i];\n          if (source.value || target.value) {\n            chords.push(source.value < target.value ? {\n              source: target,\n              target: source\n            } : {\n              source: source,\n              target: target\n            });\n          }\n        }\n      }\n      if (sortChords) resort();\n    }\n    function resort() {\n      chords.sort(function(a, b) {\n        return sortChords((a.source.value + a.target.value) / 2, (b.source.value + b.target.value) / 2);\n      });\n    }\n    chord.matrix = function(x) {\n      if (!arguments.length) return matrix;\n      n = (matrix = x) && matrix.length;\n      chords = groups = null;\n      return chord;\n    };\n    chord.padding = function(x) {\n      if (!arguments.length) return padding;\n      padding = x;\n      chords = groups = null;\n      return chord;\n    };\n    chord.sortGroups = function(x) {\n      if (!arguments.length) return sortGroups;\n      sortGroups = x;\n      chords = groups = null;\n      return chord;\n    };\n    chord.sortSubgroups = function(x) {\n      if (!arguments.length) return sortSubgroups;\n      sortSubgroups = x;\n      chords = null;\n      return chord;\n    };\n    chord.sortChords = function(x) {\n      if (!arguments.length) return sortChords;\n      sortChords = x;\n      if (chords) resort();\n      return chord;\n    };\n    chord.chords = function() {\n      if (!chords) relayout();\n      return chords;\n    };\n    chord.groups = function() {\n      if (!groups) relayout();\n      return groups;\n    };\n    return chord;\n  };\n  d3.layout.force = function() {\n    var force = {}, event = d3.dispatch(\"start\", \"tick\", \"end\"), timer, size = [ 1, 1 ], drag, alpha, friction = .9, linkDistance = d3_layout_forceLinkDistance, linkStrength = d3_layout_forceLinkStrength, charge = -30, chargeDistance2 = d3_layout_forceChargeDistance2, gravity = .1, theta2 = .64, nodes = [], links = [], distances, strengths, charges;\n    function repulse(node) {\n      return function(quad, x1, _, x2) {\n        if (quad.point !== node) {\n          var dx = quad.cx - node.x, dy = quad.cy - node.y, dw = x2 - x1, dn = dx * dx + dy * dy;\n          if (dw * dw / theta2 < dn) {\n            if (dn < chargeDistance2) {\n              var k = quad.charge / dn;\n              node.px -= dx * k;\n              node.py -= dy * k;\n            }\n            return true;\n          }\n          if (quad.point && dn && dn < chargeDistance2) {\n            var k = quad.pointCharge / dn;\n            node.px -= dx * k;\n            node.py -= dy * k;\n          }\n        }\n        return !quad.charge;\n      };\n    }\n    force.tick = function() {\n      if ((alpha *= .99) < .005) {\n        timer = null;\n        event.end({\n          type: \"end\",\n          alpha: alpha = 0\n        });\n        return true;\n      }\n      var n = nodes.length, m = links.length, q, i, o, s, t, l, k, x, y;\n      for (i = 0; i < m; ++i) {\n        o = links[i];\n        s = o.source;\n        t = o.target;\n        x = t.x - s.x;\n        y = t.y - s.y;\n        if (l = x * x + y * y) {\n          l = alpha * strengths[i] * ((l = Math.sqrt(l)) - distances[i]) / l;\n          x *= l;\n          y *= l;\n          t.x -= x * (k = s.weight + t.weight ? s.weight / (s.weight + t.weight) : .5);\n          t.y -= y * k;\n          s.x += x * (k = 1 - k);\n          s.y += y * k;\n        }\n      }\n      if (k = alpha * gravity) {\n        x = size[0] / 2;\n        y = size[1] / 2;\n        i = -1;\n        if (k) while (++i < n) {\n          o = nodes[i];\n          o.x += (x - o.x) * k;\n          o.y += (y - o.y) * k;\n        }\n      }\n      if (charge) {\n        d3_layout_forceAccumulate(q = d3.geom.quadtree(nodes), alpha, charges);\n        i = -1;\n        while (++i < n) {\n          if (!(o = nodes[i]).fixed) {\n            q.visit(repulse(o));\n          }\n        }\n      }\n      i = -1;\n      while (++i < n) {\n        o = nodes[i];\n        if (o.fixed) {\n          o.x = o.px;\n          o.y = o.py;\n        } else {\n          o.x -= (o.px - (o.px = o.x)) * friction;\n          o.y -= (o.py - (o.py = o.y)) * friction;\n        }\n      }\n      event.tick({\n        type: \"tick\",\n        alpha: alpha\n      });\n    };\n    force.nodes = function(x) {\n      if (!arguments.length) return nodes;\n      nodes = x;\n      return force;\n    };\n    force.links = function(x) {\n      if (!arguments.length) return links;\n      links = x;\n      return force;\n    };\n    force.size = function(x) {\n      if (!arguments.length) return size;\n      size = x;\n      return force;\n    };\n    force.linkDistance = function(x) {\n      if (!arguments.length) return linkDistance;\n      linkDistance = typeof x === \"function\" ? x : +x;\n      return force;\n    };\n    force.distance = force.linkDistance;\n    force.linkStrength = function(x) {\n      if (!arguments.length) return linkStrength;\n      linkStrength = typeof x === \"function\" ? x : +x;\n      return force;\n    };\n    force.friction = function(x) {\n      if (!arguments.length) return friction;\n      friction = +x;\n      return force;\n    };\n    force.charge = function(x) {\n      if (!arguments.length) return charge;\n      charge = typeof x === \"function\" ? x : +x;\n      return force;\n    };\n    force.chargeDistance = function(x) {\n      if (!arguments.length) return Math.sqrt(chargeDistance2);\n      chargeDistance2 = x * x;\n      return force;\n    };\n    force.gravity = function(x) {\n      if (!arguments.length) return gravity;\n      gravity = +x;\n      return force;\n    };\n    force.theta = function(x) {\n      if (!arguments.length) return Math.sqrt(theta2);\n      theta2 = x * x;\n      return force;\n    };\n    force.alpha = function(x) {\n      if (!arguments.length) return alpha;\n      x = +x;\n      if (alpha) {\n        if (x > 0) {\n          alpha = x;\n        } else {\n          timer.c = null, timer.t = NaN, timer = null;\n          event.end({\n            type: \"end\",\n            alpha: alpha = 0\n          });\n        }\n      } else if (x > 0) {\n        event.start({\n          type: \"start\",\n          alpha: alpha = x\n        });\n        timer = d3_timer(force.tick);\n      }\n      return force;\n    };\n    force.start = function() {\n      var i, n = nodes.length, m = links.length, w = size[0], h = size[1], neighbors, o;\n      for (i = 0; i < n; ++i) {\n        (o = nodes[i]).index = i;\n        o.weight = 0;\n      }\n      for (i = 0; i < m; ++i) {\n        o = links[i];\n        if (typeof o.source == \"number\") o.source = nodes[o.source];\n        if (typeof o.target == \"number\") o.target = nodes[o.target];\n        ++o.source.weight;\n        ++o.target.weight;\n      }\n      for (i = 0; i < n; ++i) {\n        o = nodes[i];\n        if (isNaN(o.x)) o.x = position(\"x\", w);\n        if (isNaN(o.y)) o.y = position(\"y\", h);\n        if (isNaN(o.px)) o.px = o.x;\n        if (isNaN(o.py)) o.py = o.y;\n      }\n      distances = [];\n      if (typeof linkDistance === \"function\") for (i = 0; i < m; ++i) distances[i] = +linkDistance.call(this, links[i], i); else for (i = 0; i < m; ++i) distances[i] = linkDistance;\n      strengths = [];\n      if (typeof linkStrength === \"function\") for (i = 0; i < m; ++i) strengths[i] = +linkStrength.call(this, links[i], i); else for (i = 0; i < m; ++i) strengths[i] = linkStrength;\n      charges = [];\n      if (typeof charge === \"function\") for (i = 0; i < n; ++i) charges[i] = +charge.call(this, nodes[i], i); else for (i = 0; i < n; ++i) charges[i] = charge;\n      function position(dimension, size) {\n        if (!neighbors) {\n          neighbors = new Array(n);\n          for (j = 0; j < n; ++j) {\n            neighbors[j] = [];\n          }\n          for (j = 0; j < m; ++j) {\n            var o = links[j];\n            neighbors[o.source.index].push(o.target);\n            neighbors[o.target.index].push(o.source);\n          }\n        }\n        var candidates = neighbors[i], j = -1, l = candidates.length, x;\n        while (++j < l) if (!isNaN(x = candidates[j][dimension])) return x;\n        return Math.random() * size;\n      }\n      return force.resume();\n    };\n    force.resume = function() {\n      return force.alpha(.1);\n    };\n    force.stop = function() {\n      return force.alpha(0);\n    };\n    force.drag = function() {\n      if (!drag) drag = d3.behavior.drag().origin(d3_identity).on(\"dragstart.force\", d3_layout_forceDragstart).on(\"drag.force\", dragmove).on(\"dragend.force\", d3_layout_forceDragend);\n      if (!arguments.length) return drag;\n      this.on(\"mouseover.force\", d3_layout_forceMouseover).on(\"mouseout.force\", d3_layout_forceMouseout).call(drag);\n    };\n    function dragmove(d) {\n      d.px = d3.event.x, d.py = d3.event.y;\n      force.resume();\n    }\n    return d3.rebind(force, event, \"on\");\n  };\n  function d3_layout_forceDragstart(d) {\n    d.fixed |= 2;\n  }\n  function d3_layout_forceDragend(d) {\n    d.fixed &= ~6;\n  }\n  function d3_layout_forceMouseover(d) {\n    d.fixed |= 4;\n    d.px = d.x, d.py = d.y;\n  }\n  function d3_layout_forceMouseout(d) {\n    d.fixed &= ~4;\n  }\n  function d3_layout_forceAccumulate(quad, alpha, charges) {\n    var cx = 0, cy = 0;\n    quad.charge = 0;\n    if (!quad.leaf) {\n      var nodes = quad.nodes, n = nodes.length, i = -1, c;\n      while (++i < n) {\n        c = nodes[i];\n        if (c == null) continue;\n        d3_layout_forceAccumulate(c, alpha, charges);\n        quad.charge += c.charge;\n        cx += c.charge * c.cx;\n        cy += c.charge * c.cy;\n      }\n    }\n    if (quad.point) {\n      if (!quad.leaf) {\n        quad.point.x += Math.random() - .5;\n        quad.point.y += Math.random() - .5;\n      }\n      var k = alpha * charges[quad.point.index];\n      quad.charge += quad.pointCharge = k;\n      cx += k * quad.point.x;\n      cy += k * quad.point.y;\n    }\n    quad.cx = cx / quad.charge;\n    quad.cy = cy / quad.charge;\n  }\n  var d3_layout_forceLinkDistance = 20, d3_layout_forceLinkStrength = 1, d3_layout_forceChargeDistance2 = Infinity;\n  d3.layout.hierarchy = function() {\n    var sort = d3_layout_hierarchySort, children = d3_layout_hierarchyChildren, value = d3_layout_hierarchyValue;\n    function hierarchy(root) {\n      var stack = [ root ], nodes = [], node;\n      root.depth = 0;\n      while ((node = stack.pop()) != null) {\n        nodes.push(node);\n        if ((childs = children.call(hierarchy, node, node.depth)) && (n = childs.length)) {\n          var n, childs, child;\n          while (--n >= 0) {\n            stack.push(child = childs[n]);\n            child.parent = node;\n            child.depth = node.depth + 1;\n          }\n          if (value) node.value = 0;\n          node.children = childs;\n        } else {\n          if (value) node.value = +value.call(hierarchy, node, node.depth) || 0;\n          delete node.children;\n        }\n      }\n      d3_layout_hierarchyVisitAfter(root, function(node) {\n        var childs, parent;\n        if (sort && (childs = node.children)) childs.sort(sort);\n        if (value && (parent = node.parent)) parent.value += node.value;\n      });\n      return nodes;\n    }\n    hierarchy.sort = function(x) {\n      if (!arguments.length) return sort;\n      sort = x;\n      return hierarchy;\n    };\n    hierarchy.children = function(x) {\n      if (!arguments.length) return children;\n      children = x;\n      return hierarchy;\n    };\n    hierarchy.value = function(x) {\n      if (!arguments.length) return value;\n      value = x;\n      return hierarchy;\n    };\n    hierarchy.revalue = function(root) {\n      if (value) {\n        d3_layout_hierarchyVisitBefore(root, function(node) {\n          if (node.children) node.value = 0;\n        });\n        d3_layout_hierarchyVisitAfter(root, function(node) {\n          var parent;\n          if (!node.children) node.value = +value.call(hierarchy, node, node.depth) || 0;\n          if (parent = node.parent) parent.value += node.value;\n        });\n      }\n      return root;\n    };\n    return hierarchy;\n  };\n  function d3_layout_hierarchyRebind(object, hierarchy) {\n    d3.rebind(object, hierarchy, \"sort\", \"children\", \"value\");\n    object.nodes = object;\n    object.links = d3_layout_hierarchyLinks;\n    return object;\n  }\n  function d3_layout_hierarchyVisitBefore(node, callback) {\n    var nodes = [ node ];\n    while ((node = nodes.pop()) != null) {\n      callback(node);\n      if ((children = node.children) && (n = children.length)) {\n        var n, children;\n        while (--n >= 0) nodes.push(children[n]);\n      }\n    }\n  }\n  function d3_layout_hierarchyVisitAfter(node, callback) {\n    var nodes = [ node ], nodes2 = [];\n    while ((node = nodes.pop()) != null) {\n      nodes2.push(node);\n      if ((children = node.children) && (n = children.length)) {\n        var i = -1, n, children;\n        while (++i < n) nodes.push(children[i]);\n      }\n    }\n    while ((node = nodes2.pop()) != null) {\n      callback(node);\n    }\n  }\n  function d3_layout_hierarchyChildren(d) {\n    return d.children;\n  }\n  function d3_layout_hierarchyValue(d) {\n    return d.value;\n  }\n  function d3_layout_hierarchySort(a, b) {\n    return b.value - a.value;\n  }\n  function d3_layout_hierarchyLinks(nodes) {\n    return d3.merge(nodes.map(function(parent) {\n      return (parent.children || []).map(function(child) {\n        return {\n          source: parent,\n          target: child\n        };\n      });\n    }));\n  }\n  d3.layout.partition = function() {\n    var hierarchy = d3.layout.hierarchy(), size = [ 1, 1 ];\n    function position(node, x, dx, dy) {\n      var children = node.children;\n      node.x = x;\n      node.y = node.depth * dy;\n      node.dx = dx;\n      node.dy = dy;\n      if (children && (n = children.length)) {\n        var i = -1, n, c, d;\n        dx = node.value ? dx / node.value : 0;\n        while (++i < n) {\n          position(c = children[i], x, d = c.value * dx, dy);\n          x += d;\n        }\n      }\n    }\n    function depth(node) {\n      var children = node.children, d = 0;\n      if (children && (n = children.length)) {\n        var i = -1, n;\n        while (++i < n) d = Math.max(d, depth(children[i]));\n      }\n      return 1 + d;\n    }\n    function partition(d, i) {\n      var nodes = hierarchy.call(this, d, i);\n      position(nodes[0], 0, size[0], size[1] / depth(nodes[0]));\n      return nodes;\n    }\n    partition.size = function(x) {\n      if (!arguments.length) return size;\n      size = x;\n      return partition;\n    };\n    return d3_layout_hierarchyRebind(partition, hierarchy);\n  };\n  d3.layout.pie = function() {\n    var value = Number, sort = d3_layout_pieSortByValue, startAngle = 0, endAngle = τ, padAngle = 0;\n    function pie(data) {\n      var n = data.length, values = data.map(function(d, i) {\n        return +value.call(pie, d, i);\n      }), a = +(typeof startAngle === \"function\" ? startAngle.apply(this, arguments) : startAngle), da = (typeof endAngle === \"function\" ? endAngle.apply(this, arguments) : endAngle) - a, p = Math.min(Math.abs(da) / n, +(typeof padAngle === \"function\" ? padAngle.apply(this, arguments) : padAngle)), pa = p * (da < 0 ? -1 : 1), sum = d3.sum(values), k = sum ? (da - n * pa) / sum : 0, index = d3.range(n), arcs = [], v;\n      if (sort != null) index.sort(sort === d3_layout_pieSortByValue ? function(i, j) {\n        return values[j] - values[i];\n      } : function(i, j) {\n        return sort(data[i], data[j]);\n      });\n      index.forEach(function(i) {\n        arcs[i] = {\n          data: data[i],\n          value: v = values[i],\n          startAngle: a,\n          endAngle: a += v * k + pa,\n          padAngle: p\n        };\n      });\n      return arcs;\n    }\n    pie.value = function(_) {\n      if (!arguments.length) return value;\n      value = _;\n      return pie;\n    };\n    pie.sort = function(_) {\n      if (!arguments.length) return sort;\n      sort = _;\n      return pie;\n    };\n    pie.startAngle = function(_) {\n      if (!arguments.length) return startAngle;\n      startAngle = _;\n      return pie;\n    };\n    pie.endAngle = function(_) {\n      if (!arguments.length) return endAngle;\n      endAngle = _;\n      return pie;\n    };\n    pie.padAngle = function(_) {\n      if (!arguments.length) return padAngle;\n      padAngle = _;\n      return pie;\n    };\n    return pie;\n  };\n  var d3_layout_pieSortByValue = {};\n  d3.layout.stack = function() {\n    var values = d3_identity, order = d3_layout_stackOrderDefault, offset = d3_layout_stackOffsetZero, out = d3_layout_stackOut, x = d3_layout_stackX, y = d3_layout_stackY;\n    function stack(data, index) {\n      if (!(n = data.length)) return data;\n      var series = data.map(function(d, i) {\n        return values.call(stack, d, i);\n      });\n      var points = series.map(function(d) {\n        return d.map(function(v, i) {\n          return [ x.call(stack, v, i), y.call(stack, v, i) ];\n        });\n      });\n      var orders = order.call(stack, points, index);\n      series = d3.permute(series, orders);\n      points = d3.permute(points, orders);\n      var offsets = offset.call(stack, points, index);\n      var m = series[0].length, n, i, j, o;\n      for (j = 0; j < m; ++j) {\n        out.call(stack, series[0][j], o = offsets[j], points[0][j][1]);\n        for (i = 1; i < n; ++i) {\n          out.call(stack, series[i][j], o += points[i - 1][j][1], points[i][j][1]);\n        }\n      }\n      return data;\n    }\n    stack.values = function(x) {\n      if (!arguments.length) return values;\n      values = x;\n      return stack;\n    };\n    stack.order = function(x) {\n      if (!arguments.length) return order;\n      order = typeof x === \"function\" ? x : d3_layout_stackOrders.get(x) || d3_layout_stackOrderDefault;\n      return stack;\n    };\n    stack.offset = function(x) {\n      if (!arguments.length) return offset;\n      offset = typeof x === \"function\" ? x : d3_layout_stackOffsets.get(x) || d3_layout_stackOffsetZero;\n      return stack;\n    };\n    stack.x = function(z) {\n      if (!arguments.length) return x;\n      x = z;\n      return stack;\n    };\n    stack.y = function(z) {\n      if (!arguments.length) return y;\n      y = z;\n      return stack;\n    };\n    stack.out = function(z) {\n      if (!arguments.length) return out;\n      out = z;\n      return stack;\n    };\n    return stack;\n  };\n  function d3_layout_stackX(d) {\n    return d.x;\n  }\n  function d3_layout_stackY(d) {\n    return d.y;\n  }\n  function d3_layout_stackOut(d, y0, y) {\n    d.y0 = y0;\n    d.y = y;\n  }\n  var d3_layout_stackOrders = d3.map({\n    \"inside-out\": function(data) {\n      var n = data.length, i, j, max = data.map(d3_layout_stackMaxIndex), sums = data.map(d3_layout_stackReduceSum), index = d3.range(n).sort(function(a, b) {\n        return max[a] - max[b];\n      }), top = 0, bottom = 0, tops = [], bottoms = [];\n      for (i = 0; i < n; ++i) {\n        j = index[i];\n        if (top < bottom) {\n          top += sums[j];\n          tops.push(j);\n        } else {\n          bottom += sums[j];\n          bottoms.push(j);\n        }\n      }\n      return bottoms.reverse().concat(tops);\n    },\n    reverse: function(data) {\n      return d3.range(data.length).reverse();\n    },\n    \"default\": d3_layout_stackOrderDefault\n  });\n  var d3_layout_stackOffsets = d3.map({\n    silhouette: function(data) {\n      var n = data.length, m = data[0].length, sums = [], max = 0, i, j, o, y0 = [];\n      for (j = 0; j < m; ++j) {\n        for (i = 0, o = 0; i < n; i++) o += data[i][j][1];\n        if (o > max) max = o;\n        sums.push(o);\n      }\n      for (j = 0; j < m; ++j) {\n        y0[j] = (max - sums[j]) / 2;\n      }\n      return y0;\n    },\n    wiggle: function(data) {\n      var n = data.length, x = data[0], m = x.length, i, j, k, s1, s2, s3, dx, o, o0, y0 = [];\n      y0[0] = o = o0 = 0;\n      for (j = 1; j < m; ++j) {\n        for (i = 0, s1 = 0; i < n; ++i) s1 += data[i][j][1];\n        for (i = 0, s2 = 0, dx = x[j][0] - x[j - 1][0]; i < n; ++i) {\n          for (k = 0, s3 = (data[i][j][1] - data[i][j - 1][1]) / (2 * dx); k < i; ++k) {\n            s3 += (data[k][j][1] - data[k][j - 1][1]) / dx;\n          }\n          s2 += s3 * data[i][j][1];\n        }\n        y0[j] = o -= s1 ? s2 / s1 * dx : 0;\n        if (o < o0) o0 = o;\n      }\n      for (j = 0; j < m; ++j) y0[j] -= o0;\n      return y0;\n    },\n    expand: function(data) {\n      var n = data.length, m = data[0].length, k = 1 / n, i, j, o, y0 = [];\n      for (j = 0; j < m; ++j) {\n        for (i = 0, o = 0; i < n; i++) o += data[i][j][1];\n        if (o) for (i = 0; i < n; i++) data[i][j][1] /= o; else for (i = 0; i < n; i++) data[i][j][1] = k;\n      }\n      for (j = 0; j < m; ++j) y0[j] = 0;\n      return y0;\n    },\n    zero: d3_layout_stackOffsetZero\n  });\n  function d3_layout_stackOrderDefault(data) {\n    return d3.range(data.length);\n  }\n  function d3_layout_stackOffsetZero(data) {\n    var j = -1, m = data[0].length, y0 = [];\n    while (++j < m) y0[j] = 0;\n    return y0;\n  }\n  function d3_layout_stackMaxIndex(array) {\n    var i = 1, j = 0, v = array[0][1], k, n = array.length;\n    for (;i < n; ++i) {\n      if ((k = array[i][1]) > v) {\n        j = i;\n        v = k;\n      }\n    }\n    return j;\n  }\n  function d3_layout_stackReduceSum(d) {\n    return d.reduce(d3_layout_stackSum, 0);\n  }\n  function d3_layout_stackSum(p, d) {\n    return p + d[1];\n  }\n  d3.layout.histogram = function() {\n    var frequency = true, valuer = Number, ranger = d3_layout_histogramRange, binner = d3_layout_histogramBinSturges;\n    function histogram(data, i) {\n      var bins = [], values = data.map(valuer, this), range = ranger.call(this, values, i), thresholds = binner.call(this, range, values, i), bin, i = -1, n = values.length, m = thresholds.length - 1, k = frequency ? 1 : 1 / n, x;\n      while (++i < m) {\n        bin = bins[i] = [];\n        bin.dx = thresholds[i + 1] - (bin.x = thresholds[i]);\n        bin.y = 0;\n      }\n      if (m > 0) {\n        i = -1;\n        while (++i < n) {\n          x = values[i];\n          if (x >= range[0] && x <= range[1]) {\n            bin = bins[d3.bisect(thresholds, x, 1, m) - 1];\n            bin.y += k;\n            bin.push(data[i]);\n          }\n        }\n      }\n      return bins;\n    }\n    histogram.value = function(x) {\n      if (!arguments.length) return valuer;\n      valuer = x;\n      return histogram;\n    };\n    histogram.range = function(x) {\n      if (!arguments.length) return ranger;\n      ranger = d3_functor(x);\n      return histogram;\n    };\n    histogram.bins = function(x) {\n      if (!arguments.length) return binner;\n      binner = typeof x === \"number\" ? function(range) {\n        return d3_layout_histogramBinFixed(range, x);\n      } : d3_functor(x);\n      return histogram;\n    };\n    histogram.frequency = function(x) {\n      if (!arguments.length) return frequency;\n      frequency = !!x;\n      return histogram;\n    };\n    return histogram;\n  };\n  function d3_layout_histogramBinSturges(range, values) {\n    return d3_layout_histogramBinFixed(range, Math.ceil(Math.log(values.length) / Math.LN2 + 1));\n  }\n  function d3_layout_histogramBinFixed(range, n) {\n    var x = -1, b = +range[0], m = (range[1] - b) / n, f = [];\n    while (++x <= n) f[x] = m * x + b;\n    return f;\n  }\n  function d3_layout_histogramRange(values) {\n    return [ d3.min(values), d3.max(values) ];\n  }\n  d3.layout.pack = function() {\n    var hierarchy = d3.layout.hierarchy().sort(d3_layout_packSort), padding = 0, size = [ 1, 1 ], radius;\n    function pack(d, i) {\n      var nodes = hierarchy.call(this, d, i), root = nodes[0], w = size[0], h = size[1], r = radius == null ? Math.sqrt : typeof radius === \"function\" ? radius : function() {\n        return radius;\n      };\n      root.x = root.y = 0;\n      d3_layout_hierarchyVisitAfter(root, function(d) {\n        d.r = +r(d.value);\n      });\n      d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);\n      if (padding) {\n        var dr = padding * (radius ? 1 : Math.max(2 * root.r / w, 2 * root.r / h)) / 2;\n        d3_layout_hierarchyVisitAfter(root, function(d) {\n          d.r += dr;\n        });\n        d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);\n        d3_layout_hierarchyVisitAfter(root, function(d) {\n          d.r -= dr;\n        });\n      }\n      d3_layout_packTransform(root, w / 2, h / 2, radius ? 1 : 1 / Math.max(2 * root.r / w, 2 * root.r / h));\n      return nodes;\n    }\n    pack.size = function(_) {\n      if (!arguments.length) return size;\n      size = _;\n      return pack;\n    };\n    pack.radius = function(_) {\n      if (!arguments.length) return radius;\n      radius = _ == null || typeof _ === \"function\" ? _ : +_;\n      return pack;\n    };\n    pack.padding = function(_) {\n      if (!arguments.length) return padding;\n      padding = +_;\n      return pack;\n    };\n    return d3_layout_hierarchyRebind(pack, hierarchy);\n  };\n  function d3_layout_packSort(a, b) {\n    return a.value - b.value;\n  }\n  function d3_layout_packInsert(a, b) {\n    var c = a._pack_next;\n    a._pack_next = b;\n    b._pack_prev = a;\n    b._pack_next = c;\n    c._pack_prev = b;\n  }\n  function d3_layout_packSplice(a, b) {\n    a._pack_next = b;\n    b._pack_prev = a;\n  }\n  function d3_layout_packIntersects(a, b) {\n    var dx = b.x - a.x, dy = b.y - a.y, dr = a.r + b.r;\n    return .999 * dr * dr > dx * dx + dy * dy;\n  }\n  function d3_layout_packSiblings(node) {\n    if (!(nodes = node.children) || !(n = nodes.length)) return;\n    var nodes, xMin = Infinity, xMax = -Infinity, yMin = Infinity, yMax = -Infinity, a, b, c, i, j, k, n;\n    function bound(node) {\n      xMin = Math.min(node.x - node.r, xMin);\n      xMax = Math.max(node.x + node.r, xMax);\n      yMin = Math.min(node.y - node.r, yMin);\n      yMax = Math.max(node.y + node.r, yMax);\n    }\n    nodes.forEach(d3_layout_packLink);\n    a = nodes[0];\n    a.x = -a.r;\n    a.y = 0;\n    bound(a);\n    if (n > 1) {\n      b = nodes[1];\n      b.x = b.r;\n      b.y = 0;\n      bound(b);\n      if (n > 2) {\n        c = nodes[2];\n        d3_layout_packPlace(a, b, c);\n        bound(c);\n        d3_layout_packInsert(a, c);\n        a._pack_prev = c;\n        d3_layout_packInsert(c, b);\n        b = a._pack_next;\n        for (i = 3; i < n; i++) {\n          d3_layout_packPlace(a, b, c = nodes[i]);\n          var isect = 0, s1 = 1, s2 = 1;\n          for (j = b._pack_next; j !== b; j = j._pack_next, s1++) {\n            if (d3_layout_packIntersects(j, c)) {\n              isect = 1;\n              break;\n            }\n          }\n          if (isect == 1) {\n            for (k = a._pack_prev; k !== j._pack_prev; k = k._pack_prev, s2++) {\n              if (d3_layout_packIntersects(k, c)) {\n                break;\n              }\n            }\n          }\n          if (isect) {\n            if (s1 < s2 || s1 == s2 && b.r < a.r) d3_layout_packSplice(a, b = j); else d3_layout_packSplice(a = k, b);\n            i--;\n          } else {\n            d3_layout_packInsert(a, c);\n            b = c;\n            bound(c);\n          }\n        }\n      }\n    }\n    var cx = (xMin + xMax) / 2, cy = (yMin + yMax) / 2, cr = 0;\n    for (i = 0; i < n; i++) {\n      c = nodes[i];\n      c.x -= cx;\n      c.y -= cy;\n      cr = Math.max(cr, c.r + Math.sqrt(c.x * c.x + c.y * c.y));\n    }\n    node.r = cr;\n    nodes.forEach(d3_layout_packUnlink);\n  }\n  function d3_layout_packLink(node) {\n    node._pack_next = node._pack_prev = node;\n  }\n  function d3_layout_packUnlink(node) {\n    delete node._pack_next;\n    delete node._pack_prev;\n  }\n  function d3_layout_packTransform(node, x, y, k) {\n    var children = node.children;\n    node.x = x += k * node.x;\n    node.y = y += k * node.y;\n    node.r *= k;\n    if (children) {\n      var i = -1, n = children.length;\n      while (++i < n) d3_layout_packTransform(children[i], x, y, k);\n    }\n  }\n  function d3_layout_packPlace(a, b, c) {\n    var db = a.r + c.r, dx = b.x - a.x, dy = b.y - a.y;\n    if (db && (dx || dy)) {\n      var da = b.r + c.r, dc = dx * dx + dy * dy;\n      da *= da;\n      db *= db;\n      var x = .5 + (db - da) / (2 * dc), y = Math.sqrt(Math.max(0, 2 * da * (db + dc) - (db -= dc) * db - da * da)) / (2 * dc);\n      c.x = a.x + x * dx + y * dy;\n      c.y = a.y + x * dy - y * dx;\n    } else {\n      c.x = a.x + db;\n      c.y = a.y;\n    }\n  }\n  d3.layout.tree = function() {\n    var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = null;\n    function tree(d, i) {\n      var nodes = hierarchy.call(this, d, i), root0 = nodes[0], root1 = wrapTree(root0);\n      d3_layout_hierarchyVisitAfter(root1, firstWalk), root1.parent.m = -root1.z;\n      d3_layout_hierarchyVisitBefore(root1, secondWalk);\n      if (nodeSize) d3_layout_hierarchyVisitBefore(root0, sizeNode); else {\n        var left = root0, right = root0, bottom = root0;\n        d3_layout_hierarchyVisitBefore(root0, function(node) {\n          if (node.x < left.x) left = node;\n          if (node.x > right.x) right = node;\n          if (node.depth > bottom.depth) bottom = node;\n        });\n        var tx = separation(left, right) / 2 - left.x, kx = size[0] / (right.x + separation(right, left) / 2 + tx), ky = size[1] / (bottom.depth || 1);\n        d3_layout_hierarchyVisitBefore(root0, function(node) {\n          node.x = (node.x + tx) * kx;\n          node.y = node.depth * ky;\n        });\n      }\n      return nodes;\n    }\n    function wrapTree(root0) {\n      var root1 = {\n        A: null,\n        children: [ root0 ]\n      }, queue = [ root1 ], node1;\n      while ((node1 = queue.pop()) != null) {\n        for (var children = node1.children, child, i = 0, n = children.length; i < n; ++i) {\n          queue.push((children[i] = child = {\n            _: children[i],\n            parent: node1,\n            children: (child = children[i].children) && child.slice() || [],\n            A: null,\n            a: null,\n            z: 0,\n            m: 0,\n            c: 0,\n            s: 0,\n            t: null,\n            i: i\n          }).a = child);\n        }\n      }\n      return root1.children[0];\n    }\n    function firstWalk(v) {\n      var children = v.children, siblings = v.parent.children, w = v.i ? siblings[v.i - 1] : null;\n      if (children.length) {\n        d3_layout_treeShift(v);\n        var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n        if (w) {\n          v.z = w.z + separation(v._, w._);\n          v.m = v.z - midpoint;\n        } else {\n          v.z = midpoint;\n        }\n      } else if (w) {\n        v.z = w.z + separation(v._, w._);\n      }\n      v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n    }\n    function secondWalk(v) {\n      v._.x = v.z + v.parent.m;\n      v.m += v.parent.m;\n    }\n    function apportion(v, w, ancestor) {\n      if (w) {\n        var vip = v, vop = v, vim = w, vom = vip.parent.children[0], sip = vip.m, sop = vop.m, sim = vim.m, som = vom.m, shift;\n        while (vim = d3_layout_treeRight(vim), vip = d3_layout_treeLeft(vip), vim && vip) {\n          vom = d3_layout_treeLeft(vom);\n          vop = d3_layout_treeRight(vop);\n          vop.a = v;\n          shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n          if (shift > 0) {\n            d3_layout_treeMove(d3_layout_treeAncestor(vim, v, ancestor), v, shift);\n            sip += shift;\n            sop += shift;\n          }\n          sim += vim.m;\n          sip += vip.m;\n          som += vom.m;\n          sop += vop.m;\n        }\n        if (vim && !d3_layout_treeRight(vop)) {\n          vop.t = vim;\n          vop.m += sim - sop;\n        }\n        if (vip && !d3_layout_treeLeft(vom)) {\n          vom.t = vip;\n          vom.m += sip - som;\n          ancestor = v;\n        }\n      }\n      return ancestor;\n    }\n    function sizeNode(node) {\n      node.x *= size[0];\n      node.y = node.depth * size[1];\n    }\n    tree.separation = function(x) {\n      if (!arguments.length) return separation;\n      separation = x;\n      return tree;\n    };\n    tree.size = function(x) {\n      if (!arguments.length) return nodeSize ? null : size;\n      nodeSize = (size = x) == null ? sizeNode : null;\n      return tree;\n    };\n    tree.nodeSize = function(x) {\n      if (!arguments.length) return nodeSize ? size : null;\n      nodeSize = (size = x) == null ? null : sizeNode;\n      return tree;\n    };\n    return d3_layout_hierarchyRebind(tree, hierarchy);\n  };\n  function d3_layout_treeSeparation(a, b) {\n    return a.parent == b.parent ? 1 : 2;\n  }\n  function d3_layout_treeLeft(v) {\n    var children = v.children;\n    return children.length ? children[0] : v.t;\n  }\n  function d3_layout_treeRight(v) {\n    var children = v.children, n;\n    return (n = children.length) ? children[n - 1] : v.t;\n  }\n  function d3_layout_treeMove(wm, wp, shift) {\n    var change = shift / (wp.i - wm.i);\n    wp.c -= change;\n    wp.s += shift;\n    wm.c += change;\n    wp.z += shift;\n    wp.m += shift;\n  }\n  function d3_layout_treeShift(v) {\n    var shift = 0, change = 0, children = v.children, i = children.length, w;\n    while (--i >= 0) {\n      w = children[i];\n      w.z += shift;\n      w.m += shift;\n      shift += w.s + (change += w.c);\n    }\n  }\n  function d3_layout_treeAncestor(vim, v, ancestor) {\n    return vim.a.parent === v.parent ? vim.a : ancestor;\n  }\n  d3.layout.cluster = function() {\n    var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = false;\n    function cluster(d, i) {\n      var nodes = hierarchy.call(this, d, i), root = nodes[0], previousNode, x = 0;\n      d3_layout_hierarchyVisitAfter(root, function(node) {\n        var children = node.children;\n        if (children && children.length) {\n          node.x = d3_layout_clusterX(children);\n          node.y = d3_layout_clusterY(children);\n        } else {\n          node.x = previousNode ? x += separation(node, previousNode) : 0;\n          node.y = 0;\n          previousNode = node;\n        }\n      });\n      var left = d3_layout_clusterLeft(root), right = d3_layout_clusterRight(root), x0 = left.x - separation(left, right) / 2, x1 = right.x + separation(right, left) / 2;\n      d3_layout_hierarchyVisitAfter(root, nodeSize ? function(node) {\n        node.x = (node.x - root.x) * size[0];\n        node.y = (root.y - node.y) * size[1];\n      } : function(node) {\n        node.x = (node.x - x0) / (x1 - x0) * size[0];\n        node.y = (1 - (root.y ? node.y / root.y : 1)) * size[1];\n      });\n      return nodes;\n    }\n    cluster.separation = function(x) {\n      if (!arguments.length) return separation;\n      separation = x;\n      return cluster;\n    };\n    cluster.size = function(x) {\n      if (!arguments.length) return nodeSize ? null : size;\n      nodeSize = (size = x) == null;\n      return cluster;\n    };\n    cluster.nodeSize = function(x) {\n      if (!arguments.length) return nodeSize ? size : null;\n      nodeSize = (size = x) != null;\n      return cluster;\n    };\n    return d3_layout_hierarchyRebind(cluster, hierarchy);\n  };\n  function d3_layout_clusterY(children) {\n    return 1 + d3.max(children, function(child) {\n      return child.y;\n    });\n  }\n  function d3_layout_clusterX(children) {\n    return children.reduce(function(x, child) {\n      return x + child.x;\n    }, 0) / children.length;\n  }\n  function d3_layout_clusterLeft(node) {\n    var children = node.children;\n    return children && children.length ? d3_layout_clusterLeft(children[0]) : node;\n  }\n  function d3_layout_clusterRight(node) {\n    var children = node.children, n;\n    return children && (n = children.length) ? d3_layout_clusterRight(children[n - 1]) : node;\n  }\n  d3.layout.treemap = function() {\n    var hierarchy = d3.layout.hierarchy(), round = Math.round, size = [ 1, 1 ], padding = null, pad = d3_layout_treemapPadNull, sticky = false, stickies, mode = \"squarify\", ratio = .5 * (1 + Math.sqrt(5));\n    function scale(children, k) {\n      var i = -1, n = children.length, child, area;\n      while (++i < n) {\n        area = (child = children[i]).value * (k < 0 ? 0 : k);\n        child.area = isNaN(area) || area <= 0 ? 0 : area;\n      }\n    }\n    function squarify(node) {\n      var children = node.children;\n      if (children && children.length) {\n        var rect = pad(node), row = [], remaining = children.slice(), child, best = Infinity, score, u = mode === \"slice\" ? rect.dx : mode === \"dice\" ? rect.dy : mode === \"slice-dice\" ? node.depth & 1 ? rect.dy : rect.dx : Math.min(rect.dx, rect.dy), n;\n        scale(remaining, rect.dx * rect.dy / node.value);\n        row.area = 0;\n        while ((n = remaining.length) > 0) {\n          row.push(child = remaining[n - 1]);\n          row.area += child.area;\n          if (mode !== \"squarify\" || (score = worst(row, u)) <= best) {\n            remaining.pop();\n            best = score;\n          } else {\n            row.area -= row.pop().area;\n            position(row, u, rect, false);\n            u = Math.min(rect.dx, rect.dy);\n            row.length = row.area = 0;\n            best = Infinity;\n          }\n        }\n        if (row.length) {\n          position(row, u, rect, true);\n          row.length = row.area = 0;\n        }\n        children.forEach(squarify);\n      }\n    }\n    function stickify(node) {\n      var children = node.children;\n      if (children && children.length) {\n        var rect = pad(node), remaining = children.slice(), child, row = [];\n        scale(remaining, rect.dx * rect.dy / node.value);\n        row.area = 0;\n        while (child = remaining.pop()) {\n          row.push(child);\n          row.area += child.area;\n          if (child.z != null) {\n            position(row, child.z ? rect.dx : rect.dy, rect, !remaining.length);\n            row.length = row.area = 0;\n          }\n        }\n        children.forEach(stickify);\n      }\n    }\n    function worst(row, u) {\n      var s = row.area, r, rmax = 0, rmin = Infinity, i = -1, n = row.length;\n      while (++i < n) {\n        if (!(r = row[i].area)) continue;\n        if (r < rmin) rmin = r;\n        if (r > rmax) rmax = r;\n      }\n      s *= s;\n      u *= u;\n      return s ? Math.max(u * rmax * ratio / s, s / (u * rmin * ratio)) : Infinity;\n    }\n    function position(row, u, rect, flush) {\n      var i = -1, n = row.length, x = rect.x, y = rect.y, v = u ? round(row.area / u) : 0, o;\n      if (u == rect.dx) {\n        if (flush || v > rect.dy) v = rect.dy;\n        while (++i < n) {\n          o = row[i];\n          o.x = x;\n          o.y = y;\n          o.dy = v;\n          x += o.dx = Math.min(rect.x + rect.dx - x, v ? round(o.area / v) : 0);\n        }\n        o.z = true;\n        o.dx += rect.x + rect.dx - x;\n        rect.y += v;\n        rect.dy -= v;\n      } else {\n        if (flush || v > rect.dx) v = rect.dx;\n        while (++i < n) {\n          o = row[i];\n          o.x = x;\n          o.y = y;\n          o.dx = v;\n          y += o.dy = Math.min(rect.y + rect.dy - y, v ? round(o.area / v) : 0);\n        }\n        o.z = false;\n        o.dy += rect.y + rect.dy - y;\n        rect.x += v;\n        rect.dx -= v;\n      }\n    }\n    function treemap(d) {\n      var nodes = stickies || hierarchy(d), root = nodes[0];\n      root.x = root.y = 0;\n      if (root.value) root.dx = size[0], root.dy = size[1]; else root.dx = root.dy = 0;\n      if (stickies) hierarchy.revalue(root);\n      scale([ root ], root.dx * root.dy / root.value);\n      (stickies ? stickify : squarify)(root);\n      if (sticky) stickies = nodes;\n      return nodes;\n    }\n    treemap.size = function(x) {\n      if (!arguments.length) return size;\n      size = x;\n      return treemap;\n    };\n    treemap.padding = function(x) {\n      if (!arguments.length) return padding;\n      function padFunction(node) {\n        var p = x.call(treemap, node, node.depth);\n        return p == null ? d3_layout_treemapPadNull(node) : d3_layout_treemapPad(node, typeof p === \"number\" ? [ p, p, p, p ] : p);\n      }\n      function padConstant(node) {\n        return d3_layout_treemapPad(node, x);\n      }\n      var type;\n      pad = (padding = x) == null ? d3_layout_treemapPadNull : (type = typeof x) === \"function\" ? padFunction : type === \"number\" ? (x = [ x, x, x, x ], \n      padConstant) : padConstant;\n      return treemap;\n    };\n    treemap.round = function(x) {\n      if (!arguments.length) return round != Number;\n      round = x ? Math.round : Number;\n      return treemap;\n    };\n    treemap.sticky = function(x) {\n      if (!arguments.length) return sticky;\n      sticky = x;\n      stickies = null;\n      return treemap;\n    };\n    treemap.ratio = function(x) {\n      if (!arguments.length) return ratio;\n      ratio = x;\n      return treemap;\n    };\n    treemap.mode = function(x) {\n      if (!arguments.length) return mode;\n      mode = x + \"\";\n      return treemap;\n    };\n    return d3_layout_hierarchyRebind(treemap, hierarchy);\n  };\n  function d3_layout_treemapPadNull(node) {\n    return {\n      x: node.x,\n      y: node.y,\n      dx: node.dx,\n      dy: node.dy\n    };\n  }\n  function d3_layout_treemapPad(node, padding) {\n    var x = node.x + padding[3], y = node.y + padding[0], dx = node.dx - padding[1] - padding[3], dy = node.dy - padding[0] - padding[2];\n    if (dx < 0) {\n      x += dx / 2;\n      dx = 0;\n    }\n    if (dy < 0) {\n      y += dy / 2;\n      dy = 0;\n    }\n    return {\n      x: x,\n      y: y,\n      dx: dx,\n      dy: dy\n    };\n  }\n  d3.random = {\n    normal: function(µ, σ) {\n      var n = arguments.length;\n      if (n < 2) σ = 1;\n      if (n < 1) µ = 0;\n      return function() {\n        var x, y, r;\n        do {\n          x = Math.random() * 2 - 1;\n          y = Math.random() * 2 - 1;\n          r = x * x + y * y;\n        } while (!r || r > 1);\n        return µ + σ * x * Math.sqrt(-2 * Math.log(r) / r);\n      };\n    },\n    logNormal: function() {\n      var random = d3.random.normal.apply(d3, arguments);\n      return function() {\n        return Math.exp(random());\n      };\n    },\n    bates: function(m) {\n      var random = d3.random.irwinHall(m);\n      return function() {\n        return random() / m;\n      };\n    },\n    irwinHall: function(m) {\n      return function() {\n        for (var s = 0, j = 0; j < m; j++) s += Math.random();\n        return s;\n      };\n    }\n  };\n  d3.scale = {};\n  function d3_scaleExtent(domain) {\n    var start = domain[0], stop = domain[domain.length - 1];\n    return start < stop ? [ start, stop ] : [ stop, start ];\n  }\n  function d3_scaleRange(scale) {\n    return scale.rangeExtent ? scale.rangeExtent() : d3_scaleExtent(scale.range());\n  }\n  function d3_scale_bilinear(domain, range, uninterpolate, interpolate) {\n    var u = uninterpolate(domain[0], domain[1]), i = interpolate(range[0], range[1]);\n    return function(x) {\n      return i(u(x));\n    };\n  }\n  function d3_scale_nice(domain, nice) {\n    var i0 = 0, i1 = domain.length - 1, x0 = domain[i0], x1 = domain[i1], dx;\n    if (x1 < x0) {\n      dx = i0, i0 = i1, i1 = dx;\n      dx = x0, x0 = x1, x1 = dx;\n    }\n    domain[i0] = nice.floor(x0);\n    domain[i1] = nice.ceil(x1);\n    return domain;\n  }\n  function d3_scale_niceStep(step) {\n    return step ? {\n      floor: function(x) {\n        return Math.floor(x / step) * step;\n      },\n      ceil: function(x) {\n        return Math.ceil(x / step) * step;\n      }\n    } : d3_scale_niceIdentity;\n  }\n  var d3_scale_niceIdentity = {\n    floor: d3_identity,\n    ceil: d3_identity\n  };\n  function d3_scale_polylinear(domain, range, uninterpolate, interpolate) {\n    var u = [], i = [], j = 0, k = Math.min(domain.length, range.length) - 1;\n    if (domain[k] < domain[0]) {\n      domain = domain.slice().reverse();\n      range = range.slice().reverse();\n    }\n    while (++j <= k) {\n      u.push(uninterpolate(domain[j - 1], domain[j]));\n      i.push(interpolate(range[j - 1], range[j]));\n    }\n    return function(x) {\n      var j = d3.bisect(domain, x, 1, k) - 1;\n      return i[j](u[j](x));\n    };\n  }\n  d3.scale.linear = function() {\n    return d3_scale_linear([ 0, 1 ], [ 0, 1 ], d3_interpolate, false);\n  };\n  function d3_scale_linear(domain, range, interpolate, clamp) {\n    var output, input;\n    function rescale() {\n      var linear = Math.min(domain.length, range.length) > 2 ? d3_scale_polylinear : d3_scale_bilinear, uninterpolate = clamp ? d3_uninterpolateClamp : d3_uninterpolateNumber;\n      output = linear(domain, range, uninterpolate, interpolate);\n      input = linear(range, domain, uninterpolate, d3_interpolate);\n      return scale;\n    }\n    function scale(x) {\n      return output(x);\n    }\n    scale.invert = function(y) {\n      return input(y);\n    };\n    scale.domain = function(x) {\n      if (!arguments.length) return domain;\n      domain = x.map(Number);\n      return rescale();\n    };\n    scale.range = function(x) {\n      if (!arguments.length) return range;\n      range = x;\n      return rescale();\n    };\n    scale.rangeRound = function(x) {\n      return scale.range(x).interpolate(d3_interpolateRound);\n    };\n    scale.clamp = function(x) {\n      if (!arguments.length) return clamp;\n      clamp = x;\n      return rescale();\n    };\n    scale.interpolate = function(x) {\n      if (!arguments.length) return interpolate;\n      interpolate = x;\n      return rescale();\n    };\n    scale.ticks = function(m) {\n      return d3_scale_linearTicks(domain, m);\n    };\n    scale.tickFormat = function(m, format) {\n      return d3_scale_linearTickFormat(domain, m, format);\n    };\n    scale.nice = function(m) {\n      d3_scale_linearNice(domain, m);\n      return rescale();\n    };\n    scale.copy = function() {\n      return d3_scale_linear(domain, range, interpolate, clamp);\n    };\n    return rescale();\n  }\n  function d3_scale_linearRebind(scale, linear) {\n    return d3.rebind(scale, linear, \"range\", \"rangeRound\", \"interpolate\", \"clamp\");\n  }\n  function d3_scale_linearNice(domain, m) {\n    d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));\n    d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));\n    return domain;\n  }\n  function d3_scale_linearTickRange(domain, m) {\n    if (m == null) m = 10;\n    var extent = d3_scaleExtent(domain), span = extent[1] - extent[0], step = Math.pow(10, Math.floor(Math.log(span / m) / Math.LN10)), err = m / span * step;\n    if (err <= .15) step *= 10; else if (err <= .35) step *= 5; else if (err <= .75) step *= 2;\n    extent[0] = Math.ceil(extent[0] / step) * step;\n    extent[1] = Math.floor(extent[1] / step) * step + step * .5;\n    extent[2] = step;\n    return extent;\n  }\n  function d3_scale_linearTicks(domain, m) {\n    return d3.range.apply(d3, d3_scale_linearTickRange(domain, m));\n  }\n  function d3_scale_linearTickFormat(domain, m, format) {\n    var range = d3_scale_linearTickRange(domain, m);\n    if (format) {\n      var match = d3_format_re.exec(format);\n      match.shift();\n      if (match[8] === \"s\") {\n        var prefix = d3.formatPrefix(Math.max(abs(range[0]), abs(range[1])));\n        if (!match[7]) match[7] = \".\" + d3_scale_linearPrecision(prefix.scale(range[2]));\n        match[8] = \"f\";\n        format = d3.format(match.join(\"\"));\n        return function(d) {\n          return format(prefix.scale(d)) + prefix.symbol;\n        };\n      }\n      if (!match[7]) match[7] = \".\" + d3_scale_linearFormatPrecision(match[8], range);\n      format = match.join(\"\");\n    } else {\n      format = \",.\" + d3_scale_linearPrecision(range[2]) + \"f\";\n    }\n    return d3.format(format);\n  }\n  var d3_scale_linearFormatSignificant = {\n    s: 1,\n    g: 1,\n    p: 1,\n    r: 1,\n    e: 1\n  };\n  function d3_scale_linearPrecision(value) {\n    return -Math.floor(Math.log(value) / Math.LN10 + .01);\n  }\n  function d3_scale_linearFormatPrecision(type, range) {\n    var p = d3_scale_linearPrecision(range[2]);\n    return type in d3_scale_linearFormatSignificant ? Math.abs(p - d3_scale_linearPrecision(Math.max(abs(range[0]), abs(range[1])))) + +(type !== \"e\") : p - (type === \"%\") * 2;\n  }\n  d3.scale.log = function() {\n    return d3_scale_log(d3.scale.linear().domain([ 0, 1 ]), 10, true, [ 1, 10 ]);\n  };\n  function d3_scale_log(linear, base, positive, domain) {\n    function log(x) {\n      return (positive ? Math.log(x < 0 ? 0 : x) : -Math.log(x > 0 ? 0 : -x)) / Math.log(base);\n    }\n    function pow(x) {\n      return positive ? Math.pow(base, x) : -Math.pow(base, -x);\n    }\n    function scale(x) {\n      return linear(log(x));\n    }\n    scale.invert = function(x) {\n      return pow(linear.invert(x));\n    };\n    scale.domain = function(x) {\n      if (!arguments.length) return domain;\n      positive = x[0] >= 0;\n      linear.domain((domain = x.map(Number)).map(log));\n      return scale;\n    };\n    scale.base = function(_) {\n      if (!arguments.length) return base;\n      base = +_;\n      linear.domain(domain.map(log));\n      return scale;\n    };\n    scale.nice = function() {\n      var niced = d3_scale_nice(domain.map(log), positive ? Math : d3_scale_logNiceNegative);\n      linear.domain(niced);\n      domain = niced.map(pow);\n      return scale;\n    };\n    scale.ticks = function() {\n      var extent = d3_scaleExtent(domain), ticks = [], u = extent[0], v = extent[1], i = Math.floor(log(u)), j = Math.ceil(log(v)), n = base % 1 ? 2 : base;\n      if (isFinite(j - i)) {\n        if (positive) {\n          for (;i < j; i++) for (var k = 1; k < n; k++) ticks.push(pow(i) * k);\n          ticks.push(pow(i));\n        } else {\n          ticks.push(pow(i));\n          for (;i++ < j; ) for (var k = n - 1; k > 0; k--) ticks.push(pow(i) * k);\n        }\n        for (i = 0; ticks[i] < u; i++) {}\n        for (j = ticks.length; ticks[j - 1] > v; j--) {}\n        ticks = ticks.slice(i, j);\n      }\n      return ticks;\n    };\n    scale.tickFormat = function(n, format) {\n      if (!arguments.length) return d3_scale_logFormat;\n      if (arguments.length < 2) format = d3_scale_logFormat; else if (typeof format !== \"function\") format = d3.format(format);\n      var k = Math.max(1, base * n / scale.ticks().length);\n      return function(d) {\n        var i = d / pow(Math.round(log(d)));\n        if (i * base < base - .5) i *= base;\n        return i <= k ? format(d) : \"\";\n      };\n    };\n    scale.copy = function() {\n      return d3_scale_log(linear.copy(), base, positive, domain);\n    };\n    return d3_scale_linearRebind(scale, linear);\n  }\n  var d3_scale_logFormat = d3.format(\".0e\"), d3_scale_logNiceNegative = {\n    floor: function(x) {\n      return -Math.ceil(-x);\n    },\n    ceil: function(x) {\n      return -Math.floor(-x);\n    }\n  };\n  d3.scale.pow = function() {\n    return d3_scale_pow(d3.scale.linear(), 1, [ 0, 1 ]);\n  };\n  function d3_scale_pow(linear, exponent, domain) {\n    var powp = d3_scale_powPow(exponent), powb = d3_scale_powPow(1 / exponent);\n    function scale(x) {\n      return linear(powp(x));\n    }\n    scale.invert = function(x) {\n      return powb(linear.invert(x));\n    };\n    scale.domain = function(x) {\n      if (!arguments.length) return domain;\n      linear.domain((domain = x.map(Number)).map(powp));\n      return scale;\n    };\n    scale.ticks = function(m) {\n      return d3_scale_linearTicks(domain, m);\n    };\n    scale.tickFormat = function(m, format) {\n      return d3_scale_linearTickFormat(domain, m, format);\n    };\n    scale.nice = function(m) {\n      return scale.domain(d3_scale_linearNice(domain, m));\n    };\n    scale.exponent = function(x) {\n      if (!arguments.length) return exponent;\n      powp = d3_scale_powPow(exponent = x);\n      powb = d3_scale_powPow(1 / exponent);\n      linear.domain(domain.map(powp));\n      return scale;\n    };\n    scale.copy = function() {\n      return d3_scale_pow(linear.copy(), exponent, domain);\n    };\n    return d3_scale_linearRebind(scale, linear);\n  }\n  function d3_scale_powPow(e) {\n    return function(x) {\n      return x < 0 ? -Math.pow(-x, e) : Math.pow(x, e);\n    };\n  }\n  d3.scale.sqrt = function() {\n    return d3.scale.pow().exponent(.5);\n  };\n  d3.scale.ordinal = function() {\n    return d3_scale_ordinal([], {\n      t: \"range\",\n      a: [ [] ]\n    });\n  };\n  function d3_scale_ordinal(domain, ranger) {\n    var index, range, rangeBand;\n    function scale(x) {\n      return range[((index.get(x) || (ranger.t === \"range\" ? index.set(x, domain.push(x)) : NaN)) - 1) % range.length];\n    }\n    function steps(start, step) {\n      return d3.range(domain.length).map(function(i) {\n        return start + step * i;\n      });\n    }\n    scale.domain = function(x) {\n      if (!arguments.length) return domain;\n      domain = [];\n      index = new d3_Map();\n      var i = -1, n = x.length, xi;\n      while (++i < n) if (!index.has(xi = x[i])) index.set(xi, domain.push(xi));\n      return scale[ranger.t].apply(scale, ranger.a);\n    };\n    scale.range = function(x) {\n      if (!arguments.length) return range;\n      range = x;\n      rangeBand = 0;\n      ranger = {\n        t: \"range\",\n        a: arguments\n      };\n      return scale;\n    };\n    scale.rangePoints = function(x, padding) {\n      if (arguments.length < 2) padding = 0;\n      var start = x[0], stop = x[1], step = domain.length < 2 ? (start = (start + stop) / 2, \n      0) : (stop - start) / (domain.length - 1 + padding);\n      range = steps(start + step * padding / 2, step);\n      rangeBand = 0;\n      ranger = {\n        t: \"rangePoints\",\n        a: arguments\n      };\n      return scale;\n    };\n    scale.rangeRoundPoints = function(x, padding) {\n      if (arguments.length < 2) padding = 0;\n      var start = x[0], stop = x[1], step = domain.length < 2 ? (start = stop = Math.round((start + stop) / 2), \n      0) : (stop - start) / (domain.length - 1 + padding) | 0;\n      range = steps(start + Math.round(step * padding / 2 + (stop - start - (domain.length - 1 + padding) * step) / 2), step);\n      rangeBand = 0;\n      ranger = {\n        t: \"rangeRoundPoints\",\n        a: arguments\n      };\n      return scale;\n    };\n    scale.rangeBands = function(x, padding, outerPadding) {\n      if (arguments.length < 2) padding = 0;\n      if (arguments.length < 3) outerPadding = padding;\n      var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = (stop - start) / (domain.length - padding + 2 * outerPadding);\n      range = steps(start + step * outerPadding, step);\n      if (reverse) range.reverse();\n      rangeBand = step * (1 - padding);\n      ranger = {\n        t: \"rangeBands\",\n        a: arguments\n      };\n      return scale;\n    };\n    scale.rangeRoundBands = function(x, padding, outerPadding) {\n      if (arguments.length < 2) padding = 0;\n      if (arguments.length < 3) outerPadding = padding;\n      var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = Math.floor((stop - start) / (domain.length - padding + 2 * outerPadding));\n      range = steps(start + Math.round((stop - start - (domain.length - padding) * step) / 2), step);\n      if (reverse) range.reverse();\n      rangeBand = Math.round(step * (1 - padding));\n      ranger = {\n        t: \"rangeRoundBands\",\n        a: arguments\n      };\n      return scale;\n    };\n    scale.rangeBand = function() {\n      return rangeBand;\n    };\n    scale.rangeExtent = function() {\n      return d3_scaleExtent(ranger.a[0]);\n    };\n    scale.copy = function() {\n      return d3_scale_ordinal(domain, ranger);\n    };\n    return scale.domain(domain);\n  }\n  d3.scale.category10 = function() {\n    return d3.scale.ordinal().range(d3_category10);\n  };\n  d3.scale.category20 = function() {\n    return d3.scale.ordinal().range(d3_category20);\n  };\n  d3.scale.category20b = function() {\n    return d3.scale.ordinal().range(d3_category20b);\n  };\n  d3.scale.category20c = function() {\n    return d3.scale.ordinal().range(d3_category20c);\n  };\n  var d3_category10 = [ 2062260, 16744206, 2924588, 14034728, 9725885, 9197131, 14907330, 8355711, 12369186, 1556175 ].map(d3_rgbString);\n  var d3_category20 = [ 2062260, 11454440, 16744206, 16759672, 2924588, 10018698, 14034728, 16750742, 9725885, 12955861, 9197131, 12885140, 14907330, 16234194, 8355711, 13092807, 12369186, 14408589, 1556175, 10410725 ].map(d3_rgbString);\n  var d3_category20b = [ 3750777, 5395619, 7040719, 10264286, 6519097, 9216594, 11915115, 13556636, 9202993, 12426809, 15186514, 15190932, 8666169, 11356490, 14049643, 15177372, 8077683, 10834324, 13528509, 14589654 ].map(d3_rgbString);\n  var d3_category20c = [ 3244733, 7057110, 10406625, 13032431, 15095053, 16616764, 16625259, 16634018, 3253076, 7652470, 10607003, 13101504, 7695281, 10394312, 12369372, 14342891, 6513507, 9868950, 12434877, 14277081 ].map(d3_rgbString);\n  d3.scale.quantile = function() {\n    return d3_scale_quantile([], []);\n  };\n  function d3_scale_quantile(domain, range) {\n    var thresholds;\n    function rescale() {\n      var k = 0, q = range.length;\n      thresholds = [];\n      while (++k < q) thresholds[k - 1] = d3.quantile(domain, k / q);\n      return scale;\n    }\n    function scale(x) {\n      if (!isNaN(x = +x)) return range[d3.bisect(thresholds, x)];\n    }\n    scale.domain = function(x) {\n      if (!arguments.length) return domain;\n      domain = x.map(d3_number).filter(d3_numeric).sort(d3_ascending);\n      return rescale();\n    };\n    scale.range = function(x) {\n      if (!arguments.length) return range;\n      range = x;\n      return rescale();\n    };\n    scale.quantiles = function() {\n      return thresholds;\n    };\n    scale.invertExtent = function(y) {\n      y = range.indexOf(y);\n      return y < 0 ? [ NaN, NaN ] : [ y > 0 ? thresholds[y - 1] : domain[0], y < thresholds.length ? thresholds[y] : domain[domain.length - 1] ];\n    };\n    scale.copy = function() {\n      return d3_scale_quantile(domain, range);\n    };\n    return rescale();\n  }\n  d3.scale.quantize = function() {\n    return d3_scale_quantize(0, 1, [ 0, 1 ]);\n  };\n  function d3_scale_quantize(x0, x1, range) {\n    var kx, i;\n    function scale(x) {\n      return range[Math.max(0, Math.min(i, Math.floor(kx * (x - x0))))];\n    }\n    function rescale() {\n      kx = range.length / (x1 - x0);\n      i = range.length - 1;\n      return scale;\n    }\n    scale.domain = function(x) {\n      if (!arguments.length) return [ x0, x1 ];\n      x0 = +x[0];\n      x1 = +x[x.length - 1];\n      return rescale();\n    };\n    scale.range = function(x) {\n      if (!arguments.length) return range;\n      range = x;\n      return rescale();\n    };\n    scale.invertExtent = function(y) {\n      y = range.indexOf(y);\n      y = y < 0 ? NaN : y / kx + x0;\n      return [ y, y + 1 / kx ];\n    };\n    scale.copy = function() {\n      return d3_scale_quantize(x0, x1, range);\n    };\n    return rescale();\n  }\n  d3.scale.threshold = function() {\n    return d3_scale_threshold([ .5 ], [ 0, 1 ]);\n  };\n  function d3_scale_threshold(domain, range) {\n    function scale(x) {\n      if (x <= x) return range[d3.bisect(domain, x)];\n    }\n    scale.domain = function(_) {\n      if (!arguments.length) return domain;\n      domain = _;\n      return scale;\n    };\n    scale.range = function(_) {\n      if (!arguments.length) return range;\n      range = _;\n      return scale;\n    };\n    scale.invertExtent = function(y) {\n      y = range.indexOf(y);\n      return [ domain[y - 1], domain[y] ];\n    };\n    scale.copy = function() {\n      return d3_scale_threshold(domain, range);\n    };\n    return scale;\n  }\n  d3.scale.identity = function() {\n    return d3_scale_identity([ 0, 1 ]);\n  };\n  function d3_scale_identity(domain) {\n    function identity(x) {\n      return +x;\n    }\n    identity.invert = identity;\n    identity.domain = identity.range = function(x) {\n      if (!arguments.length) return domain;\n      domain = x.map(identity);\n      return identity;\n    };\n    identity.ticks = function(m) {\n      return d3_scale_linearTicks(domain, m);\n    };\n    identity.tickFormat = function(m, format) {\n      return d3_scale_linearTickFormat(domain, m, format);\n    };\n    identity.copy = function() {\n      return d3_scale_identity(domain);\n    };\n    return identity;\n  }\n  d3.svg = {};\n  function d3_zero() {\n    return 0;\n  }\n  d3.svg.arc = function() {\n    var innerRadius = d3_svg_arcInnerRadius, outerRadius = d3_svg_arcOuterRadius, cornerRadius = d3_zero, padRadius = d3_svg_arcAuto, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle, padAngle = d3_svg_arcPadAngle;\n    function arc() {\n      var r0 = Math.max(0, +innerRadius.apply(this, arguments)), r1 = Math.max(0, +outerRadius.apply(this, arguments)), a0 = startAngle.apply(this, arguments) - halfπ, a1 = endAngle.apply(this, arguments) - halfπ, da = Math.abs(a1 - a0), cw = a0 > a1 ? 0 : 1;\n      if (r1 < r0) rc = r1, r1 = r0, r0 = rc;\n      if (da >= τε) return circleSegment(r1, cw) + (r0 ? circleSegment(r0, 1 - cw) : \"\") + \"Z\";\n      var rc, cr, rp, ap, p0 = 0, p1 = 0, x0, y0, x1, y1, x2, y2, x3, y3, path = [];\n      if (ap = (+padAngle.apply(this, arguments) || 0) / 2) {\n        rp = padRadius === d3_svg_arcAuto ? Math.sqrt(r0 * r0 + r1 * r1) : +padRadius.apply(this, arguments);\n        if (!cw) p1 *= -1;\n        if (r1) p1 = d3_asin(rp / r1 * Math.sin(ap));\n        if (r0) p0 = d3_asin(rp / r0 * Math.sin(ap));\n      }\n      if (r1) {\n        x0 = r1 * Math.cos(a0 + p1);\n        y0 = r1 * Math.sin(a0 + p1);\n        x1 = r1 * Math.cos(a1 - p1);\n        y1 = r1 * Math.sin(a1 - p1);\n        var l1 = Math.abs(a1 - a0 - 2 * p1) <= π ? 0 : 1;\n        if (p1 && d3_svg_arcSweep(x0, y0, x1, y1) === cw ^ l1) {\n          var h1 = (a0 + a1) / 2;\n          x0 = r1 * Math.cos(h1);\n          y0 = r1 * Math.sin(h1);\n          x1 = y1 = null;\n        }\n      } else {\n        x0 = y0 = 0;\n      }\n      if (r0) {\n        x2 = r0 * Math.cos(a1 - p0);\n        y2 = r0 * Math.sin(a1 - p0);\n        x3 = r0 * Math.cos(a0 + p0);\n        y3 = r0 * Math.sin(a0 + p0);\n        var l0 = Math.abs(a0 - a1 + 2 * p0) <= π ? 0 : 1;\n        if (p0 && d3_svg_arcSweep(x2, y2, x3, y3) === 1 - cw ^ l0) {\n          var h0 = (a0 + a1) / 2;\n          x2 = r0 * Math.cos(h0);\n          y2 = r0 * Math.sin(h0);\n          x3 = y3 = null;\n        }\n      } else {\n        x2 = y2 = 0;\n      }\n      if (da > ε && (rc = Math.min(Math.abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments))) > .001) {\n        cr = r0 < r1 ^ cw ? 0 : 1;\n        var rc1 = rc, rc0 = rc;\n        if (da < π) {\n          var oc = x3 == null ? [ x2, y2 ] : x1 == null ? [ x0, y0 ] : d3_geom_polygonIntersect([ x0, y0 ], [ x3, y3 ], [ x1, y1 ], [ x2, y2 ]), ax = x0 - oc[0], ay = y0 - oc[1], bx = x1 - oc[0], by = y1 - oc[1], kc = 1 / Math.sin(Math.acos((ax * bx + ay * by) / (Math.sqrt(ax * ax + ay * ay) * Math.sqrt(bx * bx + by * by))) / 2), lc = Math.sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n          rc0 = Math.min(rc, (r0 - lc) / (kc - 1));\n          rc1 = Math.min(rc, (r1 - lc) / (kc + 1));\n        }\n        if (x1 != null) {\n          var t30 = d3_svg_arcCornerTangents(x3 == null ? [ x2, y2 ] : [ x3, y3 ], [ x0, y0 ], r1, rc1, cw), t12 = d3_svg_arcCornerTangents([ x1, y1 ], [ x2, y2 ], r1, rc1, cw);\n          if (rc === rc1) {\n            path.push(\"M\", t30[0], \"A\", rc1, \",\", rc1, \" 0 0,\", cr, \" \", t30[1], \"A\", r1, \",\", r1, \" 0 \", 1 - cw ^ d3_svg_arcSweep(t30[1][0], t30[1][1], t12[1][0], t12[1][1]), \",\", cw, \" \", t12[1], \"A\", rc1, \",\", rc1, \" 0 0,\", cr, \" \", t12[0]);\n          } else {\n            path.push(\"M\", t30[0], \"A\", rc1, \",\", rc1, \" 0 1,\", cr, \" \", t12[0]);\n          }\n        } else {\n          path.push(\"M\", x0, \",\", y0);\n        }\n        if (x3 != null) {\n          var t03 = d3_svg_arcCornerTangents([ x0, y0 ], [ x3, y3 ], r0, -rc0, cw), t21 = d3_svg_arcCornerTangents([ x2, y2 ], x1 == null ? [ x0, y0 ] : [ x1, y1 ], r0, -rc0, cw);\n          if (rc === rc0) {\n            path.push(\"L\", t21[0], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t21[1], \"A\", r0, \",\", r0, \" 0 \", cw ^ d3_svg_arcSweep(t21[1][0], t21[1][1], t03[1][0], t03[1][1]), \",\", 1 - cw, \" \", t03[1], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t03[0]);\n          } else {\n            path.push(\"L\", t21[0], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t03[0]);\n          }\n        } else {\n          path.push(\"L\", x2, \",\", y2);\n        }\n      } else {\n        path.push(\"M\", x0, \",\", y0);\n        if (x1 != null) path.push(\"A\", r1, \",\", r1, \" 0 \", l1, \",\", cw, \" \", x1, \",\", y1);\n        path.push(\"L\", x2, \",\", y2);\n        if (x3 != null) path.push(\"A\", r0, \",\", r0, \" 0 \", l0, \",\", 1 - cw, \" \", x3, \",\", y3);\n      }\n      path.push(\"Z\");\n      return path.join(\"\");\n    }\n    function circleSegment(r1, cw) {\n      return \"M0,\" + r1 + \"A\" + r1 + \",\" + r1 + \" 0 1,\" + cw + \" 0,\" + -r1 + \"A\" + r1 + \",\" + r1 + \" 0 1,\" + cw + \" 0,\" + r1;\n    }\n    arc.innerRadius = function(v) {\n      if (!arguments.length) return innerRadius;\n      innerRadius = d3_functor(v);\n      return arc;\n    };\n    arc.outerRadius = function(v) {\n      if (!arguments.length) return outerRadius;\n      outerRadius = d3_functor(v);\n      return arc;\n    };\n    arc.cornerRadius = function(v) {\n      if (!arguments.length) return cornerRadius;\n      cornerRadius = d3_functor(v);\n      return arc;\n    };\n    arc.padRadius = function(v) {\n      if (!arguments.length) return padRadius;\n      padRadius = v == d3_svg_arcAuto ? d3_svg_arcAuto : d3_functor(v);\n      return arc;\n    };\n    arc.startAngle = function(v) {\n      if (!arguments.length) return startAngle;\n      startAngle = d3_functor(v);\n      return arc;\n    };\n    arc.endAngle = function(v) {\n      if (!arguments.length) return endAngle;\n      endAngle = d3_functor(v);\n      return arc;\n    };\n    arc.padAngle = function(v) {\n      if (!arguments.length) return padAngle;\n      padAngle = d3_functor(v);\n      return arc;\n    };\n    arc.centroid = function() {\n      var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2, a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - halfπ;\n      return [ Math.cos(a) * r, Math.sin(a) * r ];\n    };\n    return arc;\n  };\n  var d3_svg_arcAuto = \"auto\";\n  function d3_svg_arcInnerRadius(d) {\n    return d.innerRadius;\n  }\n  function d3_svg_arcOuterRadius(d) {\n    return d.outerRadius;\n  }\n  function d3_svg_arcStartAngle(d) {\n    return d.startAngle;\n  }\n  function d3_svg_arcEndAngle(d) {\n    return d.endAngle;\n  }\n  function d3_svg_arcPadAngle(d) {\n    return d && d.padAngle;\n  }\n  function d3_svg_arcSweep(x0, y0, x1, y1) {\n    return (x0 - x1) * y0 - (y0 - y1) * x0 > 0 ? 0 : 1;\n  }\n  function d3_svg_arcCornerTangents(p0, p1, r1, rc, cw) {\n    var x01 = p0[0] - p1[0], y01 = p0[1] - p1[1], lo = (cw ? rc : -rc) / Math.sqrt(x01 * x01 + y01 * y01), ox = lo * y01, oy = -lo * x01, x1 = p0[0] + ox, y1 = p0[1] + oy, x2 = p1[0] + ox, y2 = p1[1] + oy, x3 = (x1 + x2) / 2, y3 = (y1 + y2) / 2, dx = x2 - x1, dy = y2 - y1, d2 = dx * dx + dy * dy, r = r1 - rc, D = x1 * y2 - x2 * y1, d = (dy < 0 ? -1 : 1) * Math.sqrt(Math.max(0, r * r * d2 - D * D)), cx0 = (D * dy - dx * d) / d2, cy0 = (-D * dx - dy * d) / d2, cx1 = (D * dy + dx * d) / d2, cy1 = (-D * dx + dy * d) / d2, dx0 = cx0 - x3, dy0 = cy0 - y3, dx1 = cx1 - x3, dy1 = cy1 - y3;\n    if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n    return [ [ cx0 - ox, cy0 - oy ], [ cx0 * r1 / r, cy0 * r1 / r ] ];\n  }\n  function d3_svg_line(projection) {\n    var x = d3_geom_pointX, y = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, tension = .7;\n    function line(data) {\n      var segments = [], points = [], i = -1, n = data.length, d, fx = d3_functor(x), fy = d3_functor(y);\n      function segment() {\n        segments.push(\"M\", interpolate(projection(points), tension));\n      }\n      while (++i < n) {\n        if (defined.call(this, d = data[i], i)) {\n          points.push([ +fx.call(this, d, i), +fy.call(this, d, i) ]);\n        } else if (points.length) {\n          segment();\n          points = [];\n        }\n      }\n      if (points.length) segment();\n      return segments.length ? segments.join(\"\") : null;\n    }\n    line.x = function(_) {\n      if (!arguments.length) return x;\n      x = _;\n      return line;\n    };\n    line.y = function(_) {\n      if (!arguments.length) return y;\n      y = _;\n      return line;\n    };\n    line.defined = function(_) {\n      if (!arguments.length) return defined;\n      defined = _;\n      return line;\n    };\n    line.interpolate = function(_) {\n      if (!arguments.length) return interpolateKey;\n      if (typeof _ === \"function\") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;\n      return line;\n    };\n    line.tension = function(_) {\n      if (!arguments.length) return tension;\n      tension = _;\n      return line;\n    };\n    return line;\n  }\n  d3.svg.line = function() {\n    return d3_svg_line(d3_identity);\n  };\n  var d3_svg_lineInterpolators = d3.map({\n    linear: d3_svg_lineLinear,\n    \"linear-closed\": d3_svg_lineLinearClosed,\n    step: d3_svg_lineStep,\n    \"step-before\": d3_svg_lineStepBefore,\n    \"step-after\": d3_svg_lineStepAfter,\n    basis: d3_svg_lineBasis,\n    \"basis-open\": d3_svg_lineBasisOpen,\n    \"basis-closed\": d3_svg_lineBasisClosed,\n    bundle: d3_svg_lineBundle,\n    cardinal: d3_svg_lineCardinal,\n    \"cardinal-open\": d3_svg_lineCardinalOpen,\n    \"cardinal-closed\": d3_svg_lineCardinalClosed,\n    monotone: d3_svg_lineMonotone\n  });\n  d3_svg_lineInterpolators.forEach(function(key, value) {\n    value.key = key;\n    value.closed = /-closed$/.test(key);\n  });\n  function d3_svg_lineLinear(points) {\n    return points.length > 1 ? points.join(\"L\") : points + \"Z\";\n  }\n  function d3_svg_lineLinearClosed(points) {\n    return points.join(\"L\") + \"Z\";\n  }\n  function d3_svg_lineStep(points) {\n    var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n    while (++i < n) path.push(\"H\", (p[0] + (p = points[i])[0]) / 2, \"V\", p[1]);\n    if (n > 1) path.push(\"H\", p[0]);\n    return path.join(\"\");\n  }\n  function d3_svg_lineStepBefore(points) {\n    var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n    while (++i < n) path.push(\"V\", (p = points[i])[1], \"H\", p[0]);\n    return path.join(\"\");\n  }\n  function d3_svg_lineStepAfter(points) {\n    var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n    while (++i < n) path.push(\"H\", (p = points[i])[0], \"V\", p[1]);\n    return path.join(\"\");\n  }\n  function d3_svg_lineCardinalOpen(points, tension) {\n    return points.length < 4 ? d3_svg_lineLinear(points) : points[1] + d3_svg_lineHermite(points.slice(1, -1), d3_svg_lineCardinalTangents(points, tension));\n  }\n  function d3_svg_lineCardinalClosed(points, tension) {\n    return points.length < 3 ? d3_svg_lineLinearClosed(points) : points[0] + d3_svg_lineHermite((points.push(points[0]), \n    points), d3_svg_lineCardinalTangents([ points[points.length - 2] ].concat(points, [ points[1] ]), tension));\n  }\n  function d3_svg_lineCardinal(points, tension) {\n    return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineCardinalTangents(points, tension));\n  }\n  function d3_svg_lineHermite(points, tangents) {\n    if (tangents.length < 1 || points.length != tangents.length && points.length != tangents.length + 2) {\n      return d3_svg_lineLinear(points);\n    }\n    var quad = points.length != tangents.length, path = \"\", p0 = points[0], p = points[1], t0 = tangents[0], t = t0, pi = 1;\n    if (quad) {\n      path += \"Q\" + (p[0] - t0[0] * 2 / 3) + \",\" + (p[1] - t0[1] * 2 / 3) + \",\" + p[0] + \",\" + p[1];\n      p0 = points[1];\n      pi = 2;\n    }\n    if (tangents.length > 1) {\n      t = tangents[1];\n      p = points[pi];\n      pi++;\n      path += \"C\" + (p0[0] + t0[0]) + \",\" + (p0[1] + t0[1]) + \",\" + (p[0] - t[0]) + \",\" + (p[1] - t[1]) + \",\" + p[0] + \",\" + p[1];\n      for (var i = 2; i < tangents.length; i++, pi++) {\n        p = points[pi];\n        t = tangents[i];\n        path += \"S\" + (p[0] - t[0]) + \",\" + (p[1] - t[1]) + \",\" + p[0] + \",\" + p[1];\n      }\n    }\n    if (quad) {\n      var lp = points[pi];\n      path += \"Q\" + (p[0] + t[0] * 2 / 3) + \",\" + (p[1] + t[1] * 2 / 3) + \",\" + lp[0] + \",\" + lp[1];\n    }\n    return path;\n  }\n  function d3_svg_lineCardinalTangents(points, tension) {\n    var tangents = [], a = (1 - tension) / 2, p0, p1 = points[0], p2 = points[1], i = 1, n = points.length;\n    while (++i < n) {\n      p0 = p1;\n      p1 = p2;\n      p2 = points[i];\n      tangents.push([ a * (p2[0] - p0[0]), a * (p2[1] - p0[1]) ]);\n    }\n    return tangents;\n  }\n  function d3_svg_lineBasis(points) {\n    if (points.length < 3) return d3_svg_lineLinear(points);\n    var i = 1, n = points.length, pi = points[0], x0 = pi[0], y0 = pi[1], px = [ x0, x0, x0, (pi = points[1])[0] ], py = [ y0, y0, y0, pi[1] ], path = [ x0, \",\", y0, \"L\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];\n    points.push(points[n - 1]);\n    while (++i <= n) {\n      pi = points[i];\n      px.shift();\n      px.push(pi[0]);\n      py.shift();\n      py.push(pi[1]);\n      d3_svg_lineBasisBezier(path, px, py);\n    }\n    points.pop();\n    path.push(\"L\", pi);\n    return path.join(\"\");\n  }\n  function d3_svg_lineBasisOpen(points) {\n    if (points.length < 4) return d3_svg_lineLinear(points);\n    var path = [], i = -1, n = points.length, pi, px = [ 0 ], py = [ 0 ];\n    while (++i < 3) {\n      pi = points[i];\n      px.push(pi[0]);\n      py.push(pi[1]);\n    }\n    path.push(d3_svg_lineDot4(d3_svg_lineBasisBezier3, px) + \",\" + d3_svg_lineDot4(d3_svg_lineBasisBezier3, py));\n    --i;\n    while (++i < n) {\n      pi = points[i];\n      px.shift();\n      px.push(pi[0]);\n      py.shift();\n      py.push(pi[1]);\n      d3_svg_lineBasisBezier(path, px, py);\n    }\n    return path.join(\"\");\n  }\n  function d3_svg_lineBasisClosed(points) {\n    var path, i = -1, n = points.length, m = n + 4, pi, px = [], py = [];\n    while (++i < 4) {\n      pi = points[i % n];\n      px.push(pi[0]);\n      py.push(pi[1]);\n    }\n    path = [ d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];\n    --i;\n    while (++i < m) {\n      pi = points[i % n];\n      px.shift();\n      px.push(pi[0]);\n      py.shift();\n      py.push(pi[1]);\n      d3_svg_lineBasisBezier(path, px, py);\n    }\n    return path.join(\"\");\n  }\n  function d3_svg_lineBundle(points, tension) {\n    var n = points.length - 1;\n    if (n) {\n      var x0 = points[0][0], y0 = points[0][1], dx = points[n][0] - x0, dy = points[n][1] - y0, i = -1, p, t;\n      while (++i <= n) {\n        p = points[i];\n        t = i / n;\n        p[0] = tension * p[0] + (1 - tension) * (x0 + t * dx);\n        p[1] = tension * p[1] + (1 - tension) * (y0 + t * dy);\n      }\n    }\n    return d3_svg_lineBasis(points);\n  }\n  function d3_svg_lineDot4(a, b) {\n    return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n  }\n  var d3_svg_lineBasisBezier1 = [ 0, 2 / 3, 1 / 3, 0 ], d3_svg_lineBasisBezier2 = [ 0, 1 / 3, 2 / 3, 0 ], d3_svg_lineBasisBezier3 = [ 0, 1 / 6, 2 / 3, 1 / 6 ];\n  function d3_svg_lineBasisBezier(path, x, y) {\n    path.push(\"C\", d3_svg_lineDot4(d3_svg_lineBasisBezier1, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier1, y), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier2, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier2, y), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, y));\n  }\n  function d3_svg_lineSlope(p0, p1) {\n    return (p1[1] - p0[1]) / (p1[0] - p0[0]);\n  }\n  function d3_svg_lineFiniteDifferences(points) {\n    var i = 0, j = points.length - 1, m = [], p0 = points[0], p1 = points[1], d = m[0] = d3_svg_lineSlope(p0, p1);\n    while (++i < j) {\n      m[i] = (d + (d = d3_svg_lineSlope(p0 = p1, p1 = points[i + 1]))) / 2;\n    }\n    m[i] = d;\n    return m;\n  }\n  function d3_svg_lineMonotoneTangents(points) {\n    var tangents = [], d, a, b, s, m = d3_svg_lineFiniteDifferences(points), i = -1, j = points.length - 1;\n    while (++i < j) {\n      d = d3_svg_lineSlope(points[i], points[i + 1]);\n      if (abs(d) < ε) {\n        m[i] = m[i + 1] = 0;\n      } else {\n        a = m[i] / d;\n        b = m[i + 1] / d;\n        s = a * a + b * b;\n        if (s > 9) {\n          s = d * 3 / Math.sqrt(s);\n          m[i] = s * a;\n          m[i + 1] = s * b;\n        }\n      }\n    }\n    i = -1;\n    while (++i <= j) {\n      s = (points[Math.min(j, i + 1)][0] - points[Math.max(0, i - 1)][0]) / (6 * (1 + m[i] * m[i]));\n      tangents.push([ s || 0, m[i] * s || 0 ]);\n    }\n    return tangents;\n  }\n  function d3_svg_lineMonotone(points) {\n    return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineMonotoneTangents(points));\n  }\n  d3.svg.line.radial = function() {\n    var line = d3_svg_line(d3_svg_lineRadial);\n    line.radius = line.x, delete line.x;\n    line.angle = line.y, delete line.y;\n    return line;\n  };\n  function d3_svg_lineRadial(points) {\n    var point, i = -1, n = points.length, r, a;\n    while (++i < n) {\n      point = points[i];\n      r = point[0];\n      a = point[1] - halfπ;\n      point[0] = r * Math.cos(a);\n      point[1] = r * Math.sin(a);\n    }\n    return points;\n  }\n  function d3_svg_area(projection) {\n    var x0 = d3_geom_pointX, x1 = d3_geom_pointX, y0 = 0, y1 = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, interpolateReverse = interpolate, L = \"L\", tension = .7;\n    function area(data) {\n      var segments = [], points0 = [], points1 = [], i = -1, n = data.length, d, fx0 = d3_functor(x0), fy0 = d3_functor(y0), fx1 = x0 === x1 ? function() {\n        return x;\n      } : d3_functor(x1), fy1 = y0 === y1 ? function() {\n        return y;\n      } : d3_functor(y1), x, y;\n      function segment() {\n        segments.push(\"M\", interpolate(projection(points1), tension), L, interpolateReverse(projection(points0.reverse()), tension), \"Z\");\n      }\n      while (++i < n) {\n        if (defined.call(this, d = data[i], i)) {\n          points0.push([ x = +fx0.call(this, d, i), y = +fy0.call(this, d, i) ]);\n          points1.push([ +fx1.call(this, d, i), +fy1.call(this, d, i) ]);\n        } else if (points0.length) {\n          segment();\n          points0 = [];\n          points1 = [];\n        }\n      }\n      if (points0.length) segment();\n      return segments.length ? segments.join(\"\") : null;\n    }\n    area.x = function(_) {\n      if (!arguments.length) return x1;\n      x0 = x1 = _;\n      return area;\n    };\n    area.x0 = function(_) {\n      if (!arguments.length) return x0;\n      x0 = _;\n      return area;\n    };\n    area.x1 = function(_) {\n      if (!arguments.length) return x1;\n      x1 = _;\n      return area;\n    };\n    area.y = function(_) {\n      if (!arguments.length) return y1;\n      y0 = y1 = _;\n      return area;\n    };\n    area.y0 = function(_) {\n      if (!arguments.length) return y0;\n      y0 = _;\n      return area;\n    };\n    area.y1 = function(_) {\n      if (!arguments.length) return y1;\n      y1 = _;\n      return area;\n    };\n    area.defined = function(_) {\n      if (!arguments.length) return defined;\n      defined = _;\n      return area;\n    };\n    area.interpolate = function(_) {\n      if (!arguments.length) return interpolateKey;\n      if (typeof _ === \"function\") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;\n      interpolateReverse = interpolate.reverse || interpolate;\n      L = interpolate.closed ? \"M\" : \"L\";\n      return area;\n    };\n    area.tension = function(_) {\n      if (!arguments.length) return tension;\n      tension = _;\n      return area;\n    };\n    return area;\n  }\n  d3_svg_lineStepBefore.reverse = d3_svg_lineStepAfter;\n  d3_svg_lineStepAfter.reverse = d3_svg_lineStepBefore;\n  d3.svg.area = function() {\n    return d3_svg_area(d3_identity);\n  };\n  d3.svg.area.radial = function() {\n    var area = d3_svg_area(d3_svg_lineRadial);\n    area.radius = area.x, delete area.x;\n    area.innerRadius = area.x0, delete area.x0;\n    area.outerRadius = area.x1, delete area.x1;\n    area.angle = area.y, delete area.y;\n    area.startAngle = area.y0, delete area.y0;\n    area.endAngle = area.y1, delete area.y1;\n    return area;\n  };\n  d3.svg.chord = function() {\n    var source = d3_source, target = d3_target, radius = d3_svg_chordRadius, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle;\n    function chord(d, i) {\n      var s = subgroup(this, source, d, i), t = subgroup(this, target, d, i);\n      return \"M\" + s.p0 + arc(s.r, s.p1, s.a1 - s.a0) + (equals(s, t) ? curve(s.r, s.p1, s.r, s.p0) : curve(s.r, s.p1, t.r, t.p0) + arc(t.r, t.p1, t.a1 - t.a0) + curve(t.r, t.p1, s.r, s.p0)) + \"Z\";\n    }\n    function subgroup(self, f, d, i) {\n      var subgroup = f.call(self, d, i), r = radius.call(self, subgroup, i), a0 = startAngle.call(self, subgroup, i) - halfπ, a1 = endAngle.call(self, subgroup, i) - halfπ;\n      return {\n        r: r,\n        a0: a0,\n        a1: a1,\n        p0: [ r * Math.cos(a0), r * Math.sin(a0) ],\n        p1: [ r * Math.cos(a1), r * Math.sin(a1) ]\n      };\n    }\n    function equals(a, b) {\n      return a.a0 == b.a0 && a.a1 == b.a1;\n    }\n    function arc(r, p, a) {\n      return \"A\" + r + \",\" + r + \" 0 \" + +(a > π) + \",1 \" + p;\n    }\n    function curve(r0, p0, r1, p1) {\n      return \"Q 0,0 \" + p1;\n    }\n    chord.radius = function(v) {\n      if (!arguments.length) return radius;\n      radius = d3_functor(v);\n      return chord;\n    };\n    chord.source = function(v) {\n      if (!arguments.length) return source;\n      source = d3_functor(v);\n      return chord;\n    };\n    chord.target = function(v) {\n      if (!arguments.length) return target;\n      target = d3_functor(v);\n      return chord;\n    };\n    chord.startAngle = function(v) {\n      if (!arguments.length) return startAngle;\n      startAngle = d3_functor(v);\n      return chord;\n    };\n    chord.endAngle = function(v) {\n      if (!arguments.length) return endAngle;\n      endAngle = d3_functor(v);\n      return chord;\n    };\n    return chord;\n  };\n  function d3_svg_chordRadius(d) {\n    return d.radius;\n  }\n  d3.svg.diagonal = function() {\n    var source = d3_source, target = d3_target, projection = d3_svg_diagonalProjection;\n    function diagonal(d, i) {\n      var p0 = source.call(this, d, i), p3 = target.call(this, d, i), m = (p0.y + p3.y) / 2, p = [ p0, {\n        x: p0.x,\n        y: m\n      }, {\n        x: p3.x,\n        y: m\n      }, p3 ];\n      p = p.map(projection);\n      return \"M\" + p[0] + \"C\" + p[1] + \" \" + p[2] + \" \" + p[3];\n    }\n    diagonal.source = function(x) {\n      if (!arguments.length) return source;\n      source = d3_functor(x);\n      return diagonal;\n    };\n    diagonal.target = function(x) {\n      if (!arguments.length) return target;\n      target = d3_functor(x);\n      return diagonal;\n    };\n    diagonal.projection = function(x) {\n      if (!arguments.length) return projection;\n      projection = x;\n      return diagonal;\n    };\n    return diagonal;\n  };\n  function d3_svg_diagonalProjection(d) {\n    return [ d.x, d.y ];\n  }\n  d3.svg.diagonal.radial = function() {\n    var diagonal = d3.svg.diagonal(), projection = d3_svg_diagonalProjection, projection_ = diagonal.projection;\n    diagonal.projection = function(x) {\n      return arguments.length ? projection_(d3_svg_diagonalRadialProjection(projection = x)) : projection;\n    };\n    return diagonal;\n  };\n  function d3_svg_diagonalRadialProjection(projection) {\n    return function() {\n      var d = projection.apply(this, arguments), r = d[0], a = d[1] - halfπ;\n      return [ r * Math.cos(a), r * Math.sin(a) ];\n    };\n  }\n  d3.svg.symbol = function() {\n    var type = d3_svg_symbolType, size = d3_svg_symbolSize;\n    function symbol(d, i) {\n      return (d3_svg_symbols.get(type.call(this, d, i)) || d3_svg_symbolCircle)(size.call(this, d, i));\n    }\n    symbol.type = function(x) {\n      if (!arguments.length) return type;\n      type = d3_functor(x);\n      return symbol;\n    };\n    symbol.size = function(x) {\n      if (!arguments.length) return size;\n      size = d3_functor(x);\n      return symbol;\n    };\n    return symbol;\n  };\n  function d3_svg_symbolSize() {\n    return 64;\n  }\n  function d3_svg_symbolType() {\n    return \"circle\";\n  }\n  function d3_svg_symbolCircle(size) {\n    var r = Math.sqrt(size / π);\n    return \"M0,\" + r + \"A\" + r + \",\" + r + \" 0 1,1 0,\" + -r + \"A\" + r + \",\" + r + \" 0 1,1 0,\" + r + \"Z\";\n  }\n  var d3_svg_symbols = d3.map({\n    circle: d3_svg_symbolCircle,\n    cross: function(size) {\n      var r = Math.sqrt(size / 5) / 2;\n      return \"M\" + -3 * r + \",\" + -r + \"H\" + -r + \"V\" + -3 * r + \"H\" + r + \"V\" + -r + \"H\" + 3 * r + \"V\" + r + \"H\" + r + \"V\" + 3 * r + \"H\" + -r + \"V\" + r + \"H\" + -3 * r + \"Z\";\n    },\n    diamond: function(size) {\n      var ry = Math.sqrt(size / (2 * d3_svg_symbolTan30)), rx = ry * d3_svg_symbolTan30;\n      return \"M0,\" + -ry + \"L\" + rx + \",0\" + \" 0,\" + ry + \" \" + -rx + \",0\" + \"Z\";\n    },\n    square: function(size) {\n      var r = Math.sqrt(size) / 2;\n      return \"M\" + -r + \",\" + -r + \"L\" + r + \",\" + -r + \" \" + r + \",\" + r + \" \" + -r + \",\" + r + \"Z\";\n    },\n    \"triangle-down\": function(size) {\n      var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;\n      return \"M0,\" + ry + \"L\" + rx + \",\" + -ry + \" \" + -rx + \",\" + -ry + \"Z\";\n    },\n    \"triangle-up\": function(size) {\n      var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;\n      return \"M0,\" + -ry + \"L\" + rx + \",\" + ry + \" \" + -rx + \",\" + ry + \"Z\";\n    }\n  });\n  d3.svg.symbolTypes = d3_svg_symbols.keys();\n  var d3_svg_symbolSqrt3 = Math.sqrt(3), d3_svg_symbolTan30 = Math.tan(30 * d3_radians);\n  d3_selectionPrototype.transition = function(name) {\n    var id = d3_transitionInheritId || ++d3_transitionId, ns = d3_transitionNamespace(name), subgroups = [], subgroup, node, transition = d3_transitionInherit || {\n      time: Date.now(),\n      ease: d3_ease_cubicInOut,\n      delay: 0,\n      duration: 250\n    };\n    for (var j = -1, m = this.length; ++j < m; ) {\n      subgroups.push(subgroup = []);\n      for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n        if (node = group[i]) d3_transitionNode(node, i, ns, id, transition);\n        subgroup.push(node);\n      }\n    }\n    return d3_transition(subgroups, ns, id);\n  };\n  d3_selectionPrototype.interrupt = function(name) {\n    return this.each(name == null ? d3_selection_interrupt : d3_selection_interruptNS(d3_transitionNamespace(name)));\n  };\n  var d3_selection_interrupt = d3_selection_interruptNS(d3_transitionNamespace());\n  function d3_selection_interruptNS(ns) {\n    return function() {\n      var lock, activeId, active;\n      if ((lock = this[ns]) && (active = lock[activeId = lock.active])) {\n        active.timer.c = null;\n        active.timer.t = NaN;\n        if (--lock.count) delete lock[activeId]; else delete this[ns];\n        lock.active += .5;\n        active.event && active.event.interrupt.call(this, this.__data__, active.index);\n      }\n    };\n  }\n  function d3_transition(groups, ns, id) {\n    d3_subclass(groups, d3_transitionPrototype);\n    groups.namespace = ns;\n    groups.id = id;\n    return groups;\n  }\n  var d3_transitionPrototype = [], d3_transitionId = 0, d3_transitionInheritId, d3_transitionInherit;\n  d3_transitionPrototype.call = d3_selectionPrototype.call;\n  d3_transitionPrototype.empty = d3_selectionPrototype.empty;\n  d3_transitionPrototype.node = d3_selectionPrototype.node;\n  d3_transitionPrototype.size = d3_selectionPrototype.size;\n  d3.transition = function(selection, name) {\n    return selection && selection.transition ? d3_transitionInheritId ? selection.transition(name) : selection : d3.selection().transition(selection);\n  };\n  d3.transition.prototype = d3_transitionPrototype;\n  d3_transitionPrototype.select = function(selector) {\n    var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnode, node;\n    selector = d3_selection_selector(selector);\n    for (var j = -1, m = this.length; ++j < m; ) {\n      subgroups.push(subgroup = []);\n      for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n        if ((node = group[i]) && (subnode = selector.call(node, node.__data__, i, j))) {\n          if (\"__data__\" in node) subnode.__data__ = node.__data__;\n          d3_transitionNode(subnode, i, ns, id, node[ns][id]);\n          subgroup.push(subnode);\n        } else {\n          subgroup.push(null);\n        }\n      }\n    }\n    return d3_transition(subgroups, ns, id);\n  };\n  d3_transitionPrototype.selectAll = function(selector) {\n    var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnodes, node, subnode, transition;\n    selector = d3_selection_selectorAll(selector);\n    for (var j = -1, m = this.length; ++j < m; ) {\n      for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n        if (node = group[i]) {\n          transition = node[ns][id];\n          subnodes = selector.call(node, node.__data__, i, j);\n          subgroups.push(subgroup = []);\n          for (var k = -1, o = subnodes.length; ++k < o; ) {\n            if (subnode = subnodes[k]) d3_transitionNode(subnode, k, ns, id, transition);\n            subgroup.push(subnode);\n          }\n        }\n      }\n    }\n    return d3_transition(subgroups, ns, id);\n  };\n  d3_transitionPrototype.filter = function(filter) {\n    var subgroups = [], subgroup, group, node;\n    if (typeof filter !== \"function\") filter = d3_selection_filter(filter);\n    for (var j = 0, m = this.length; j < m; j++) {\n      subgroups.push(subgroup = []);\n      for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n        if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {\n          subgroup.push(node);\n        }\n      }\n    }\n    return d3_transition(subgroups, this.namespace, this.id);\n  };\n  d3_transitionPrototype.tween = function(name, tween) {\n    var id = this.id, ns = this.namespace;\n    if (arguments.length < 2) return this.node()[ns][id].tween.get(name);\n    return d3_selection_each(this, tween == null ? function(node) {\n      node[ns][id].tween.remove(name);\n    } : function(node) {\n      node[ns][id].tween.set(name, tween);\n    });\n  };\n  function d3_transition_tween(groups, name, value, tween) {\n    var id = groups.id, ns = groups.namespace;\n    return d3_selection_each(groups, typeof value === \"function\" ? function(node, i, j) {\n      node[ns][id].tween.set(name, tween(value.call(node, node.__data__, i, j)));\n    } : (value = tween(value), function(node) {\n      node[ns][id].tween.set(name, value);\n    }));\n  }\n  d3_transitionPrototype.attr = function(nameNS, value) {\n    if (arguments.length < 2) {\n      for (value in nameNS) this.attr(value, nameNS[value]);\n      return this;\n    }\n    var interpolate = nameNS == \"transform\" ? d3_interpolateTransform : d3_interpolate, name = d3.ns.qualify(nameNS);\n    function attrNull() {\n      this.removeAttribute(name);\n    }\n    function attrNullNS() {\n      this.removeAttributeNS(name.space, name.local);\n    }\n    function attrTween(b) {\n      return b == null ? attrNull : (b += \"\", function() {\n        var a = this.getAttribute(name), i;\n        return a !== b && (i = interpolate(a, b), function(t) {\n          this.setAttribute(name, i(t));\n        });\n      });\n    }\n    function attrTweenNS(b) {\n      return b == null ? attrNullNS : (b += \"\", function() {\n        var a = this.getAttributeNS(name.space, name.local), i;\n        return a !== b && (i = interpolate(a, b), function(t) {\n          this.setAttributeNS(name.space, name.local, i(t));\n        });\n      });\n    }\n    return d3_transition_tween(this, \"attr.\" + nameNS, value, name.local ? attrTweenNS : attrTween);\n  };\n  d3_transitionPrototype.attrTween = function(nameNS, tween) {\n    var name = d3.ns.qualify(nameNS);\n    function attrTween(d, i) {\n      var f = tween.call(this, d, i, this.getAttribute(name));\n      return f && function(t) {\n        this.setAttribute(name, f(t));\n      };\n    }\n    function attrTweenNS(d, i) {\n      var f = tween.call(this, d, i, this.getAttributeNS(name.space, name.local));\n      return f && function(t) {\n        this.setAttributeNS(name.space, name.local, f(t));\n      };\n    }\n    return this.tween(\"attr.\" + nameNS, name.local ? attrTweenNS : attrTween);\n  };\n  d3_transitionPrototype.style = function(name, value, priority) {\n    var n = arguments.length;\n    if (n < 3) {\n      if (typeof name !== \"string\") {\n        if (n < 2) value = \"\";\n        for (priority in name) this.style(priority, name[priority], value);\n        return this;\n      }\n      priority = \"\";\n    }\n    function styleNull() {\n      this.style.removeProperty(name);\n    }\n    function styleString(b) {\n      return b == null ? styleNull : (b += \"\", function() {\n        var a = d3_window(this).getComputedStyle(this, null).getPropertyValue(name), i;\n        return a !== b && (i = d3_interpolate(a, b), function(t) {\n          this.style.setProperty(name, i(t), priority);\n        });\n      });\n    }\n    return d3_transition_tween(this, \"style.\" + name, value, styleString);\n  };\n  d3_transitionPrototype.styleTween = function(name, tween, priority) {\n    if (arguments.length < 3) priority = \"\";\n    function styleTween(d, i) {\n      var f = tween.call(this, d, i, d3_window(this).getComputedStyle(this, null).getPropertyValue(name));\n      return f && function(t) {\n        this.style.setProperty(name, f(t), priority);\n      };\n    }\n    return this.tween(\"style.\" + name, styleTween);\n  };\n  d3_transitionPrototype.text = function(value) {\n    return d3_transition_tween(this, \"text\", value, d3_transition_text);\n  };\n  function d3_transition_text(b) {\n    if (b == null) b = \"\";\n    return function() {\n      this.textContent = b;\n    };\n  }\n  d3_transitionPrototype.remove = function() {\n    var ns = this.namespace;\n    return this.each(\"end.transition\", function() {\n      var p;\n      if (this[ns].count < 2 && (p = this.parentNode)) p.removeChild(this);\n    });\n  };\n  d3_transitionPrototype.ease = function(value) {\n    var id = this.id, ns = this.namespace;\n    if (arguments.length < 1) return this.node()[ns][id].ease;\n    if (typeof value !== \"function\") value = d3.ease.apply(d3, arguments);\n    return d3_selection_each(this, function(node) {\n      node[ns][id].ease = value;\n    });\n  };\n  d3_transitionPrototype.delay = function(value) {\n    var id = this.id, ns = this.namespace;\n    if (arguments.length < 1) return this.node()[ns][id].delay;\n    return d3_selection_each(this, typeof value === \"function\" ? function(node, i, j) {\n      node[ns][id].delay = +value.call(node, node.__data__, i, j);\n    } : (value = +value, function(node) {\n      node[ns][id].delay = value;\n    }));\n  };\n  d3_transitionPrototype.duration = function(value) {\n    var id = this.id, ns = this.namespace;\n    if (arguments.length < 1) return this.node()[ns][id].duration;\n    return d3_selection_each(this, typeof value === \"function\" ? function(node, i, j) {\n      node[ns][id].duration = Math.max(1, value.call(node, node.__data__, i, j));\n    } : (value = Math.max(1, value), function(node) {\n      node[ns][id].duration = value;\n    }));\n  };\n  d3_transitionPrototype.each = function(type, listener) {\n    var id = this.id, ns = this.namespace;\n    if (arguments.length < 2) {\n      var inherit = d3_transitionInherit, inheritId = d3_transitionInheritId;\n      try {\n        d3_transitionInheritId = id;\n        d3_selection_each(this, function(node, i, j) {\n          d3_transitionInherit = node[ns][id];\n          type.call(node, node.__data__, i, j);\n        });\n      } finally {\n        d3_transitionInherit = inherit;\n        d3_transitionInheritId = inheritId;\n      }\n    } else {\n      d3_selection_each(this, function(node) {\n        var transition = node[ns][id];\n        (transition.event || (transition.event = d3.dispatch(\"start\", \"end\", \"interrupt\"))).on(type, listener);\n      });\n    }\n    return this;\n  };\n  d3_transitionPrototype.transition = function() {\n    var id0 = this.id, id1 = ++d3_transitionId, ns = this.namespace, subgroups = [], subgroup, group, node, transition;\n    for (var j = 0, m = this.length; j < m; j++) {\n      subgroups.push(subgroup = []);\n      for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n        if (node = group[i]) {\n          transition = node[ns][id0];\n          d3_transitionNode(node, i, ns, id1, {\n            time: transition.time,\n            ease: transition.ease,\n            delay: transition.delay + transition.duration,\n            duration: transition.duration\n          });\n        }\n        subgroup.push(node);\n      }\n    }\n    return d3_transition(subgroups, ns, id1);\n  };\n  function d3_transitionNamespace(name) {\n    return name == null ? \"__transition__\" : \"__transition_\" + name + \"__\";\n  }\n  function d3_transitionNode(node, i, ns, id, inherit) {\n    var lock = node[ns] || (node[ns] = {\n      active: 0,\n      count: 0\n    }), transition = lock[id], time, timer, duration, ease, tweens;\n    function schedule(elapsed) {\n      var delay = transition.delay;\n      timer.t = delay + time;\n      if (delay <= elapsed) return start(elapsed - delay);\n      timer.c = start;\n    }\n    function start(elapsed) {\n      var activeId = lock.active, active = lock[activeId];\n      if (active) {\n        active.timer.c = null;\n        active.timer.t = NaN;\n        --lock.count;\n        delete lock[activeId];\n        active.event && active.event.interrupt.call(node, node.__data__, active.index);\n      }\n      for (var cancelId in lock) {\n        if (+cancelId < id) {\n          var cancel = lock[cancelId];\n          cancel.timer.c = null;\n          cancel.timer.t = NaN;\n          --lock.count;\n          delete lock[cancelId];\n        }\n      }\n      timer.c = tick;\n      d3_timer(function() {\n        if (timer.c && tick(elapsed || 1)) {\n          timer.c = null;\n          timer.t = NaN;\n        }\n        return 1;\n      }, 0, time);\n      lock.active = id;\n      transition.event && transition.event.start.call(node, node.__data__, i);\n      tweens = [];\n      transition.tween.forEach(function(key, value) {\n        if (value = value.call(node, node.__data__, i)) {\n          tweens.push(value);\n        }\n      });\n      ease = transition.ease;\n      duration = transition.duration;\n    }\n    function tick(elapsed) {\n      var t = elapsed / duration, e = ease(t), n = tweens.length;\n      while (n > 0) {\n        tweens[--n].call(node, e);\n      }\n      if (t >= 1) {\n        transition.event && transition.event.end.call(node, node.__data__, i);\n        if (--lock.count) delete lock[id]; else delete node[ns];\n        return 1;\n      }\n    }\n    if (!transition) {\n      time = inherit.time;\n      timer = d3_timer(schedule, 0, time);\n      transition = lock[id] = {\n        tween: new d3_Map(),\n        time: time,\n        timer: timer,\n        delay: inherit.delay,\n        duration: inherit.duration,\n        ease: inherit.ease,\n        index: i\n      };\n      inherit = null;\n      ++lock.count;\n    }\n  }\n  d3.svg.axis = function() {\n    var scale = d3.scale.linear(), orient = d3_svg_axisDefaultOrient, innerTickSize = 6, outerTickSize = 6, tickPadding = 3, tickArguments_ = [ 10 ], tickValues = null, tickFormat_;\n    function axis(g) {\n      g.each(function() {\n        var g = d3.select(this);\n        var scale0 = this.__chart__ || scale, scale1 = this.__chart__ = scale.copy();\n        var ticks = tickValues == null ? scale1.ticks ? scale1.ticks.apply(scale1, tickArguments_) : scale1.domain() : tickValues, tickFormat = tickFormat_ == null ? scale1.tickFormat ? scale1.tickFormat.apply(scale1, tickArguments_) : d3_identity : tickFormat_, tick = g.selectAll(\".tick\").data(ticks, scale1), tickEnter = tick.enter().insert(\"g\", \".domain\").attr(\"class\", \"tick\").style(\"opacity\", ε), tickExit = d3.transition(tick.exit()).style(\"opacity\", ε).remove(), tickUpdate = d3.transition(tick.order()).style(\"opacity\", 1), tickSpacing = Math.max(innerTickSize, 0) + tickPadding, tickTransform;\n        var range = d3_scaleRange(scale1), path = g.selectAll(\".domain\").data([ 0 ]), pathUpdate = (path.enter().append(\"path\").attr(\"class\", \"domain\"), \n        d3.transition(path));\n        tickEnter.append(\"line\");\n        tickEnter.append(\"text\");\n        var lineEnter = tickEnter.select(\"line\"), lineUpdate = tickUpdate.select(\"line\"), text = tick.select(\"text\").text(tickFormat), textEnter = tickEnter.select(\"text\"), textUpdate = tickUpdate.select(\"text\"), sign = orient === \"top\" || orient === \"left\" ? -1 : 1, x1, x2, y1, y2;\n        if (orient === \"bottom\" || orient === \"top\") {\n          tickTransform = d3_svg_axisX, x1 = \"x\", y1 = \"y\", x2 = \"x2\", y2 = \"y2\";\n          text.attr(\"dy\", sign < 0 ? \"0em\" : \".71em\").style(\"text-anchor\", \"middle\");\n          pathUpdate.attr(\"d\", \"M\" + range[0] + \",\" + sign * outerTickSize + \"V0H\" + range[1] + \"V\" + sign * outerTickSize);\n        } else {\n          tickTransform = d3_svg_axisY, x1 = \"y\", y1 = \"x\", x2 = \"y2\", y2 = \"x2\";\n          text.attr(\"dy\", \".32em\").style(\"text-anchor\", sign < 0 ? \"end\" : \"start\");\n          pathUpdate.attr(\"d\", \"M\" + sign * outerTickSize + \",\" + range[0] + \"H0V\" + range[1] + \"H\" + sign * outerTickSize);\n        }\n        lineEnter.attr(y2, sign * innerTickSize);\n        textEnter.attr(y1, sign * tickSpacing);\n        lineUpdate.attr(x2, 0).attr(y2, sign * innerTickSize);\n        textUpdate.attr(x1, 0).attr(y1, sign * tickSpacing);\n        if (scale1.rangeBand) {\n          var x = scale1, dx = x.rangeBand() / 2;\n          scale0 = scale1 = function(d) {\n            return x(d) + dx;\n          };\n        } else if (scale0.rangeBand) {\n          scale0 = scale1;\n        } else {\n          tickExit.call(tickTransform, scale1, scale0);\n        }\n        tickEnter.call(tickTransform, scale0, scale1);\n        tickUpdate.call(tickTransform, scale1, scale1);\n      });\n    }\n    axis.scale = function(x) {\n      if (!arguments.length) return scale;\n      scale = x;\n      return axis;\n    };\n    axis.orient = function(x) {\n      if (!arguments.length) return orient;\n      orient = x in d3_svg_axisOrients ? x + \"\" : d3_svg_axisDefaultOrient;\n      return axis;\n    };\n    axis.ticks = function() {\n      if (!arguments.length) return tickArguments_;\n      tickArguments_ = d3_array(arguments);\n      return axis;\n    };\n    axis.tickValues = function(x) {\n      if (!arguments.length) return tickValues;\n      tickValues = x;\n      return axis;\n    };\n    axis.tickFormat = function(x) {\n      if (!arguments.length) return tickFormat_;\n      tickFormat_ = x;\n      return axis;\n    };\n    axis.tickSize = function(x) {\n      var n = arguments.length;\n      if (!n) return innerTickSize;\n      innerTickSize = +x;\n      outerTickSize = +arguments[n - 1];\n      return axis;\n    };\n    axis.innerTickSize = function(x) {\n      if (!arguments.length) return innerTickSize;\n      innerTickSize = +x;\n      return axis;\n    };\n    axis.outerTickSize = function(x) {\n      if (!arguments.length) return outerTickSize;\n      outerTickSize = +x;\n      return axis;\n    };\n    axis.tickPadding = function(x) {\n      if (!arguments.length) return tickPadding;\n      tickPadding = +x;\n      return axis;\n    };\n    axis.tickSubdivide = function() {\n      return arguments.length && axis;\n    };\n    return axis;\n  };\n  var d3_svg_axisDefaultOrient = \"bottom\", d3_svg_axisOrients = {\n    top: 1,\n    right: 1,\n    bottom: 1,\n    left: 1\n  };\n  function d3_svg_axisX(selection, x0, x1) {\n    selection.attr(\"transform\", function(d) {\n      var v0 = x0(d);\n      return \"translate(\" + (isFinite(v0) ? v0 : x1(d)) + \",0)\";\n    });\n  }\n  function d3_svg_axisY(selection, y0, y1) {\n    selection.attr(\"transform\", function(d) {\n      var v0 = y0(d);\n      return \"translate(0,\" + (isFinite(v0) ? v0 : y1(d)) + \")\";\n    });\n  }\n  d3.svg.brush = function() {\n    var event = d3_eventDispatch(brush, \"brushstart\", \"brush\", \"brushend\"), x = null, y = null, xExtent = [ 0, 0 ], yExtent = [ 0, 0 ], xExtentDomain, yExtentDomain, xClamp = true, yClamp = true, resizes = d3_svg_brushResizes[0];\n    function brush(g) {\n      g.each(function() {\n        var g = d3.select(this).style(\"pointer-events\", \"all\").style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\").on(\"mousedown.brush\", brushstart).on(\"touchstart.brush\", brushstart);\n        var background = g.selectAll(\".background\").data([ 0 ]);\n        background.enter().append(\"rect\").attr(\"class\", \"background\").style(\"visibility\", \"hidden\").style(\"cursor\", \"crosshair\");\n        g.selectAll(\".extent\").data([ 0 ]).enter().append(\"rect\").attr(\"class\", \"extent\").style(\"cursor\", \"move\");\n        var resize = g.selectAll(\".resize\").data(resizes, d3_identity);\n        resize.exit().remove();\n        resize.enter().append(\"g\").attr(\"class\", function(d) {\n          return \"resize \" + d;\n        }).style(\"cursor\", function(d) {\n          return d3_svg_brushCursor[d];\n        }).append(\"rect\").attr(\"x\", function(d) {\n          return /[ew]$/.test(d) ? -3 : null;\n        }).attr(\"y\", function(d) {\n          return /^[ns]/.test(d) ? -3 : null;\n        }).attr(\"width\", 6).attr(\"height\", 6).style(\"visibility\", \"hidden\");\n        resize.style(\"display\", brush.empty() ? \"none\" : null);\n        var gUpdate = d3.transition(g), backgroundUpdate = d3.transition(background), range;\n        if (x) {\n          range = d3_scaleRange(x);\n          backgroundUpdate.attr(\"x\", range[0]).attr(\"width\", range[1] - range[0]);\n          redrawX(gUpdate);\n        }\n        if (y) {\n          range = d3_scaleRange(y);\n          backgroundUpdate.attr(\"y\", range[0]).attr(\"height\", range[1] - range[0]);\n          redrawY(gUpdate);\n        }\n        redraw(gUpdate);\n      });\n    }\n    brush.event = function(g) {\n      g.each(function() {\n        var event_ = event.of(this, arguments), extent1 = {\n          x: xExtent,\n          y: yExtent,\n          i: xExtentDomain,\n          j: yExtentDomain\n        }, extent0 = this.__chart__ || extent1;\n        this.__chart__ = extent1;\n        if (d3_transitionInheritId) {\n          d3.select(this).transition().each(\"start.brush\", function() {\n            xExtentDomain = extent0.i;\n            yExtentDomain = extent0.j;\n            xExtent = extent0.x;\n            yExtent = extent0.y;\n            event_({\n              type: \"brushstart\"\n            });\n          }).tween(\"brush:brush\", function() {\n            var xi = d3_interpolateArray(xExtent, extent1.x), yi = d3_interpolateArray(yExtent, extent1.y);\n            xExtentDomain = yExtentDomain = null;\n            return function(t) {\n              xExtent = extent1.x = xi(t);\n              yExtent = extent1.y = yi(t);\n              event_({\n                type: \"brush\",\n                mode: \"resize\"\n              });\n            };\n          }).each(\"end.brush\", function() {\n            xExtentDomain = extent1.i;\n            yExtentDomain = extent1.j;\n            event_({\n              type: \"brush\",\n              mode: \"resize\"\n            });\n            event_({\n              type: \"brushend\"\n            });\n          });\n        } else {\n          event_({\n            type: \"brushstart\"\n          });\n          event_({\n            type: \"brush\",\n            mode: \"resize\"\n          });\n          event_({\n            type: \"brushend\"\n          });\n        }\n      });\n    };\n    function redraw(g) {\n      g.selectAll(\".resize\").attr(\"transform\", function(d) {\n        return \"translate(\" + xExtent[+/e$/.test(d)] + \",\" + yExtent[+/^s/.test(d)] + \")\";\n      });\n    }\n    function redrawX(g) {\n      g.select(\".extent\").attr(\"x\", xExtent[0]);\n      g.selectAll(\".extent,.n>rect,.s>rect\").attr(\"width\", xExtent[1] - xExtent[0]);\n    }\n    function redrawY(g) {\n      g.select(\".extent\").attr(\"y\", yExtent[0]);\n      g.selectAll(\".extent,.e>rect,.w>rect\").attr(\"height\", yExtent[1] - yExtent[0]);\n    }\n    function brushstart() {\n      var target = this, eventTarget = d3.select(d3.event.target), event_ = event.of(target, arguments), g = d3.select(target), resizing = eventTarget.datum(), resizingX = !/^(n|s)$/.test(resizing) && x, resizingY = !/^(e|w)$/.test(resizing) && y, dragging = eventTarget.classed(\"extent\"), dragRestore = d3_event_dragSuppress(target), center, origin = d3.mouse(target), offset;\n      var w = d3.select(d3_window(target)).on(\"keydown.brush\", keydown).on(\"keyup.brush\", keyup);\n      if (d3.event.changedTouches) {\n        w.on(\"touchmove.brush\", brushmove).on(\"touchend.brush\", brushend);\n      } else {\n        w.on(\"mousemove.brush\", brushmove).on(\"mouseup.brush\", brushend);\n      }\n      g.interrupt().selectAll(\"*\").interrupt();\n      if (dragging) {\n        origin[0] = xExtent[0] - origin[0];\n        origin[1] = yExtent[0] - origin[1];\n      } else if (resizing) {\n        var ex = +/w$/.test(resizing), ey = +/^n/.test(resizing);\n        offset = [ xExtent[1 - ex] - origin[0], yExtent[1 - ey] - origin[1] ];\n        origin[0] = xExtent[ex];\n        origin[1] = yExtent[ey];\n      } else if (d3.event.altKey) center = origin.slice();\n      g.style(\"pointer-events\", \"none\").selectAll(\".resize\").style(\"display\", null);\n      d3.select(\"body\").style(\"cursor\", eventTarget.style(\"cursor\"));\n      event_({\n        type: \"brushstart\"\n      });\n      brushmove();\n      function keydown() {\n        if (d3.event.keyCode == 32) {\n          if (!dragging) {\n            center = null;\n            origin[0] -= xExtent[1];\n            origin[1] -= yExtent[1];\n            dragging = 2;\n          }\n          d3_eventPreventDefault();\n        }\n      }\n      function keyup() {\n        if (d3.event.keyCode == 32 && dragging == 2) {\n          origin[0] += xExtent[1];\n          origin[1] += yExtent[1];\n          dragging = 0;\n          d3_eventPreventDefault();\n        }\n      }\n      function brushmove() {\n        var point = d3.mouse(target), moved = false;\n        if (offset) {\n          point[0] += offset[0];\n          point[1] += offset[1];\n        }\n        if (!dragging) {\n          if (d3.event.altKey) {\n            if (!center) center = [ (xExtent[0] + xExtent[1]) / 2, (yExtent[0] + yExtent[1]) / 2 ];\n            origin[0] = xExtent[+(point[0] < center[0])];\n            origin[1] = yExtent[+(point[1] < center[1])];\n          } else center = null;\n        }\n        if (resizingX && move1(point, x, 0)) {\n          redrawX(g);\n          moved = true;\n        }\n        if (resizingY && move1(point, y, 1)) {\n          redrawY(g);\n          moved = true;\n        }\n        if (moved) {\n          redraw(g);\n          event_({\n            type: \"brush\",\n            mode: dragging ? \"move\" : \"resize\"\n          });\n        }\n      }\n      function move1(point, scale, i) {\n        var range = d3_scaleRange(scale), r0 = range[0], r1 = range[1], position = origin[i], extent = i ? yExtent : xExtent, size = extent[1] - extent[0], min, max;\n        if (dragging) {\n          r0 -= position;\n          r1 -= size + position;\n        }\n        min = (i ? yClamp : xClamp) ? Math.max(r0, Math.min(r1, point[i])) : point[i];\n        if (dragging) {\n          max = (min += position) + size;\n        } else {\n          if (center) position = Math.max(r0, Math.min(r1, 2 * center[i] - min));\n          if (position < min) {\n            max = min;\n            min = position;\n          } else {\n            max = position;\n          }\n        }\n        if (extent[0] != min || extent[1] != max) {\n          if (i) yExtentDomain = null; else xExtentDomain = null;\n          extent[0] = min;\n          extent[1] = max;\n          return true;\n        }\n      }\n      function brushend() {\n        brushmove();\n        g.style(\"pointer-events\", \"all\").selectAll(\".resize\").style(\"display\", brush.empty() ? \"none\" : null);\n        d3.select(\"body\").style(\"cursor\", null);\n        w.on(\"mousemove.brush\", null).on(\"mouseup.brush\", null).on(\"touchmove.brush\", null).on(\"touchend.brush\", null).on(\"keydown.brush\", null).on(\"keyup.brush\", null);\n        dragRestore();\n        event_({\n          type: \"brushend\"\n        });\n      }\n    }\n    brush.x = function(z) {\n      if (!arguments.length) return x;\n      x = z;\n      resizes = d3_svg_brushResizes[!x << 1 | !y];\n      return brush;\n    };\n    brush.y = function(z) {\n      if (!arguments.length) return y;\n      y = z;\n      resizes = d3_svg_brushResizes[!x << 1 | !y];\n      return brush;\n    };\n    brush.clamp = function(z) {\n      if (!arguments.length) return x && y ? [ xClamp, yClamp ] : x ? xClamp : y ? yClamp : null;\n      if (x && y) xClamp = !!z[0], yClamp = !!z[1]; else if (x) xClamp = !!z; else if (y) yClamp = !!z;\n      return brush;\n    };\n    brush.extent = function(z) {\n      var x0, x1, y0, y1, t;\n      if (!arguments.length) {\n        if (x) {\n          if (xExtentDomain) {\n            x0 = xExtentDomain[0], x1 = xExtentDomain[1];\n          } else {\n            x0 = xExtent[0], x1 = xExtent[1];\n            if (x.invert) x0 = x.invert(x0), x1 = x.invert(x1);\n            if (x1 < x0) t = x0, x0 = x1, x1 = t;\n          }\n        }\n        if (y) {\n          if (yExtentDomain) {\n            y0 = yExtentDomain[0], y1 = yExtentDomain[1];\n          } else {\n            y0 = yExtent[0], y1 = yExtent[1];\n            if (y.invert) y0 = y.invert(y0), y1 = y.invert(y1);\n            if (y1 < y0) t = y0, y0 = y1, y1 = t;\n          }\n        }\n        return x && y ? [ [ x0, y0 ], [ x1, y1 ] ] : x ? [ x0, x1 ] : y && [ y0, y1 ];\n      }\n      if (x) {\n        x0 = z[0], x1 = z[1];\n        if (y) x0 = x0[0], x1 = x1[0];\n        xExtentDomain = [ x0, x1 ];\n        if (x.invert) x0 = x(x0), x1 = x(x1);\n        if (x1 < x0) t = x0, x0 = x1, x1 = t;\n        if (x0 != xExtent[0] || x1 != xExtent[1]) xExtent = [ x0, x1 ];\n      }\n      if (y) {\n        y0 = z[0], y1 = z[1];\n        if (x) y0 = y0[1], y1 = y1[1];\n        yExtentDomain = [ y0, y1 ];\n        if (y.invert) y0 = y(y0), y1 = y(y1);\n        if (y1 < y0) t = y0, y0 = y1, y1 = t;\n        if (y0 != yExtent[0] || y1 != yExtent[1]) yExtent = [ y0, y1 ];\n      }\n      return brush;\n    };\n    brush.clear = function() {\n      if (!brush.empty()) {\n        xExtent = [ 0, 0 ], yExtent = [ 0, 0 ];\n        xExtentDomain = yExtentDomain = null;\n      }\n      return brush;\n    };\n    brush.empty = function() {\n      return !!x && xExtent[0] == xExtent[1] || !!y && yExtent[0] == yExtent[1];\n    };\n    return d3.rebind(brush, event, \"on\");\n  };\n  var d3_svg_brushCursor = {\n    n: \"ns-resize\",\n    e: \"ew-resize\",\n    s: \"ns-resize\",\n    w: \"ew-resize\",\n    nw: \"nwse-resize\",\n    ne: \"nesw-resize\",\n    se: \"nwse-resize\",\n    sw: \"nesw-resize\"\n  };\n  var d3_svg_brushResizes = [ [ \"n\", \"e\", \"s\", \"w\", \"nw\", \"ne\", \"se\", \"sw\" ], [ \"e\", \"w\" ], [ \"n\", \"s\" ], [] ];\n  var d3_time_format = d3_time.format = d3_locale_enUS.timeFormat;\n  var d3_time_formatUtc = d3_time_format.utc;\n  var d3_time_formatIso = d3_time_formatUtc(\"%Y-%m-%dT%H:%M:%S.%LZ\");\n  d3_time_format.iso = Date.prototype.toISOString && +new Date(\"2000-01-01T00:00:00.000Z\") ? d3_time_formatIsoNative : d3_time_formatIso;\n  function d3_time_formatIsoNative(date) {\n    return date.toISOString();\n  }\n  d3_time_formatIsoNative.parse = function(string) {\n    var date = new Date(string);\n    return isNaN(date) ? null : date;\n  };\n  d3_time_formatIsoNative.toString = d3_time_formatIso.toString;\n  d3_time.second = d3_time_interval(function(date) {\n    return new d3_date(Math.floor(date / 1e3) * 1e3);\n  }, function(date, offset) {\n    date.setTime(date.getTime() + Math.floor(offset) * 1e3);\n  }, function(date) {\n    return date.getSeconds();\n  });\n  d3_time.seconds = d3_time.second.range;\n  d3_time.seconds.utc = d3_time.second.utc.range;\n  d3_time.minute = d3_time_interval(function(date) {\n    return new d3_date(Math.floor(date / 6e4) * 6e4);\n  }, function(date, offset) {\n    date.setTime(date.getTime() + Math.floor(offset) * 6e4);\n  }, function(date) {\n    return date.getMinutes();\n  });\n  d3_time.minutes = d3_time.minute.range;\n  d3_time.minutes.utc = d3_time.minute.utc.range;\n  d3_time.hour = d3_time_interval(function(date) {\n    var timezone = date.getTimezoneOffset() / 60;\n    return new d3_date((Math.floor(date / 36e5 - timezone) + timezone) * 36e5);\n  }, function(date, offset) {\n    date.setTime(date.getTime() + Math.floor(offset) * 36e5);\n  }, function(date) {\n    return date.getHours();\n  });\n  d3_time.hours = d3_time.hour.range;\n  d3_time.hours.utc = d3_time.hour.utc.range;\n  d3_time.month = d3_time_interval(function(date) {\n    date = d3_time.day(date);\n    date.setDate(1);\n    return date;\n  }, function(date, offset) {\n    date.setMonth(date.getMonth() + offset);\n  }, function(date) {\n    return date.getMonth();\n  });\n  d3_time.months = d3_time.month.range;\n  d3_time.months.utc = d3_time.month.utc.range;\n  function d3_time_scale(linear, methods, format) {\n    function scale(x) {\n      return linear(x);\n    }\n    scale.invert = function(x) {\n      return d3_time_scaleDate(linear.invert(x));\n    };\n    scale.domain = function(x) {\n      if (!arguments.length) return linear.domain().map(d3_time_scaleDate);\n      linear.domain(x);\n      return scale;\n    };\n    function tickMethod(extent, count) {\n      var span = extent[1] - extent[0], target = span / count, i = d3.bisect(d3_time_scaleSteps, target);\n      return i == d3_time_scaleSteps.length ? [ methods.year, d3_scale_linearTickRange(extent.map(function(d) {\n        return d / 31536e6;\n      }), count)[2] ] : !i ? [ d3_time_scaleMilliseconds, d3_scale_linearTickRange(extent, count)[2] ] : methods[target / d3_time_scaleSteps[i - 1] < d3_time_scaleSteps[i] / target ? i - 1 : i];\n    }\n    scale.nice = function(interval, skip) {\n      var domain = scale.domain(), extent = d3_scaleExtent(domain), method = interval == null ? tickMethod(extent, 10) : typeof interval === \"number\" && tickMethod(extent, interval);\n      if (method) interval = method[0], skip = method[1];\n      function skipped(date) {\n        return !isNaN(date) && !interval.range(date, d3_time_scaleDate(+date + 1), skip).length;\n      }\n      return scale.domain(d3_scale_nice(domain, skip > 1 ? {\n        floor: function(date) {\n          while (skipped(date = interval.floor(date))) date = d3_time_scaleDate(date - 1);\n          return date;\n        },\n        ceil: function(date) {\n          while (skipped(date = interval.ceil(date))) date = d3_time_scaleDate(+date + 1);\n          return date;\n        }\n      } : interval));\n    };\n    scale.ticks = function(interval, skip) {\n      var extent = d3_scaleExtent(scale.domain()), method = interval == null ? tickMethod(extent, 10) : typeof interval === \"number\" ? tickMethod(extent, interval) : !interval.range && [ {\n        range: interval\n      }, skip ];\n      if (method) interval = method[0], skip = method[1];\n      return interval.range(extent[0], d3_time_scaleDate(+extent[1] + 1), skip < 1 ? 1 : skip);\n    };\n    scale.tickFormat = function() {\n      return format;\n    };\n    scale.copy = function() {\n      return d3_time_scale(linear.copy(), methods, format);\n    };\n    return d3_scale_linearRebind(scale, linear);\n  }\n  function d3_time_scaleDate(t) {\n    return new Date(t);\n  }\n  var d3_time_scaleSteps = [ 1e3, 5e3, 15e3, 3e4, 6e4, 3e5, 9e5, 18e5, 36e5, 108e5, 216e5, 432e5, 864e5, 1728e5, 6048e5, 2592e6, 7776e6, 31536e6 ];\n  var d3_time_scaleLocalMethods = [ [ d3_time.second, 1 ], [ d3_time.second, 5 ], [ d3_time.second, 15 ], [ d3_time.second, 30 ], [ d3_time.minute, 1 ], [ d3_time.minute, 5 ], [ d3_time.minute, 15 ], [ d3_time.minute, 30 ], [ d3_time.hour, 1 ], [ d3_time.hour, 3 ], [ d3_time.hour, 6 ], [ d3_time.hour, 12 ], [ d3_time.day, 1 ], [ d3_time.day, 2 ], [ d3_time.week, 1 ], [ d3_time.month, 1 ], [ d3_time.month, 3 ], [ d3_time.year, 1 ] ];\n  var d3_time_scaleLocalFormat = d3_time_format.multi([ [ \".%L\", function(d) {\n    return d.getMilliseconds();\n  } ], [ \":%S\", function(d) {\n    return d.getSeconds();\n  } ], [ \"%I:%M\", function(d) {\n    return d.getMinutes();\n  } ], [ \"%I %p\", function(d) {\n    return d.getHours();\n  } ], [ \"%a %d\", function(d) {\n    return d.getDay() && d.getDate() != 1;\n  } ], [ \"%b %d\", function(d) {\n    return d.getDate() != 1;\n  } ], [ \"%B\", function(d) {\n    return d.getMonth();\n  } ], [ \"%Y\", d3_true ] ]);\n  var d3_time_scaleMilliseconds = {\n    range: function(start, stop, step) {\n      return d3.range(Math.ceil(start / step) * step, +stop, step).map(d3_time_scaleDate);\n    },\n    floor: d3_identity,\n    ceil: d3_identity\n  };\n  d3_time_scaleLocalMethods.year = d3_time.year;\n  d3_time.scale = function() {\n    return d3_time_scale(d3.scale.linear(), d3_time_scaleLocalMethods, d3_time_scaleLocalFormat);\n  };\n  var d3_time_scaleUtcMethods = d3_time_scaleLocalMethods.map(function(m) {\n    return [ m[0].utc, m[1] ];\n  });\n  var d3_time_scaleUtcFormat = d3_time_formatUtc.multi([ [ \".%L\", function(d) {\n    return d.getUTCMilliseconds();\n  } ], [ \":%S\", function(d) {\n    return d.getUTCSeconds();\n  } ], [ \"%I:%M\", function(d) {\n    return d.getUTCMinutes();\n  } ], [ \"%I %p\", function(d) {\n    return d.getUTCHours();\n  } ], [ \"%a %d\", function(d) {\n    return d.getUTCDay() && d.getUTCDate() != 1;\n  } ], [ \"%b %d\", function(d) {\n    return d.getUTCDate() != 1;\n  } ], [ \"%B\", function(d) {\n    return d.getUTCMonth();\n  } ], [ \"%Y\", d3_true ] ]);\n  d3_time_scaleUtcMethods.year = d3_time.year.utc;\n  d3_time.scale.utc = function() {\n    return d3_time_scale(d3.scale.linear(), d3_time_scaleUtcMethods, d3_time_scaleUtcFormat);\n  };\n  d3.text = d3_xhrType(function(request) {\n    return request.responseText;\n  });\n  d3.json = function(url, callback) {\n    return d3_xhr(url, \"application/json\", d3_json, callback);\n  };\n  function d3_json(request) {\n    return JSON.parse(request.responseText);\n  }\n  d3.html = function(url, callback) {\n    return d3_xhr(url, \"text/html\", d3_html, callback);\n  };\n  function d3_html(request) {\n    var range = d3_document.createRange();\n    range.selectNode(d3_document.body);\n    return range.createContextualFragment(request.responseText);\n  }\n  d3.xml = d3_xhrType(function(request) {\n    return request.responseXML;\n  });\n  if (typeof define === \"function\" && define.amd) this.d3 = d3, define('d3',d3); else if (typeof module === \"object\" && module.exports) module.exports = d3; else this.d3 = d3;\n}();\n","(function (window) {\n    'use strict';\n\n    /*global define, module, exports, require */\n\n    var c3 = { version: \"0.4.11\" };\n\n    var c3_chart_fn,\n        c3_chart_internal_fn,\n        c3_chart_internal_axis_fn;\n\n    function API(owner) {\n        this.owner = owner;\n    }\n\n    function inherit(base, derived) {\n\n        if (Object.create) {\n            derived.prototype = Object.create(base.prototype);\n        } else {\n            var f = function f() {};\n            f.prototype = base.prototype;\n            derived.prototype = new f();\n        }\n\n        derived.prototype.constructor = derived;\n\n        return derived;\n    }\n\n    function Chart(config) {\n        var $$ = this.internal = new ChartInternal(this);\n        $$.loadConfig(config);\n\n        $$.beforeInit(config);\n        $$.init();\n        $$.afterInit(config);\n\n        // bind \"this\" to nested API\n        (function bindThis(fn, target, argThis) {\n            Object.keys(fn).forEach(function (key) {\n                target[key] = fn[key].bind(argThis);\n                if (Object.keys(fn[key]).length > 0) {\n                    bindThis(fn[key], target[key], argThis);\n                }\n            });\n        })(c3_chart_fn, this, this);\n    }\n\n    function ChartInternal(api) {\n        var $$ = this;\n        $$.d3 = window.d3 ? window.d3 : typeof require !== 'undefined' ? require(\"d3\") : undefined;\n        $$.api = api;\n        $$.config = $$.getDefaultConfig();\n        $$.data = {};\n        $$.cache = {};\n        $$.axes = {};\n    }\n\n    c3.generate = function (config) {\n        return new Chart(config);\n    };\n\n    c3.chart = {\n        fn: Chart.prototype,\n        internal: {\n            fn: ChartInternal.prototype,\n            axis: {\n                fn: Axis.prototype\n            }\n        }\n    };\n    c3_chart_fn = c3.chart.fn;\n    c3_chart_internal_fn = c3.chart.internal.fn;\n    c3_chart_internal_axis_fn = c3.chart.internal.axis.fn;\n\n    c3_chart_internal_fn.beforeInit = function () {\n        // can do something\n    };\n    c3_chart_internal_fn.afterInit = function () {\n        // can do something\n    };\n    c3_chart_internal_fn.init = function () {\n        var $$ = this, config = $$.config;\n\n        $$.initParams();\n\n        if (config.data_url) {\n            $$.convertUrlToData(config.data_url, config.data_mimeType, config.data_headers, config.data_keys, $$.initWithData);\n        }\n        else if (config.data_json) {\n            $$.initWithData($$.convertJsonToData(config.data_json, config.data_keys));\n        }\n        else if (config.data_rows) {\n            $$.initWithData($$.convertRowsToData(config.data_rows));\n        }\n        else if (config.data_columns) {\n            $$.initWithData($$.convertColumnsToData(config.data_columns));\n        }\n        else {\n            throw Error('url or json or rows or columns is required.');\n        }\n    };\n\n    c3_chart_internal_fn.initParams = function () {\n        var $$ = this, d3 = $$.d3, config = $$.config;\n\n        // MEMO: clipId needs to be unique because it conflicts when multiple charts exist\n        $$.clipId = \"c3-\" + (+new Date()) + '-clip',\n        $$.clipIdForXAxis = $$.clipId + '-xaxis',\n        $$.clipIdForYAxis = $$.clipId + '-yaxis',\n        $$.clipIdForGrid = $$.clipId + '-grid',\n        $$.clipIdForSubchart = $$.clipId + '-subchart',\n        $$.clipPath = $$.getClipPath($$.clipId),\n        $$.clipPathForXAxis = $$.getClipPath($$.clipIdForXAxis),\n        $$.clipPathForYAxis = $$.getClipPath($$.clipIdForYAxis);\n        $$.clipPathForGrid = $$.getClipPath($$.clipIdForGrid),\n        $$.clipPathForSubchart = $$.getClipPath($$.clipIdForSubchart),\n\n        $$.dragStart = null;\n        $$.dragging = false;\n        $$.flowing = false;\n        $$.cancelClick = false;\n        $$.mouseover = false;\n        $$.transiting = false;\n\n        $$.color = $$.generateColor();\n        $$.levelColor = $$.generateLevelColor();\n\n        $$.dataTimeFormat = config.data_xLocaltime ? d3.time.format : d3.time.format.utc;\n        $$.axisTimeFormat = config.axis_x_localtime ? d3.time.format : d3.time.format.utc;\n        $$.defaultAxisTimeFormat = $$.axisTimeFormat.multi([\n            [\".%L\", function (d) { return d.getMilliseconds(); }],\n            [\":%S\", function (d) { return d.getSeconds(); }],\n            [\"%I:%M\", function (d) { return d.getMinutes(); }],\n            [\"%I %p\", function (d) { return d.getHours(); }],\n            [\"%-m/%-d\", function (d) { return d.getDay() && d.getDate() !== 1; }],\n            [\"%-m/%-d\", function (d) { return d.getDate() !== 1; }],\n            [\"%-m/%-d\", function (d) { return d.getMonth(); }],\n            [\"%Y/%-m/%-d\", function () { return true; }]\n        ]);\n\n        $$.hiddenTargetIds = [];\n        $$.hiddenLegendIds = [];\n        $$.focusedTargetIds = [];\n        $$.defocusedTargetIds = [];\n\n        $$.xOrient = config.axis_rotated ? \"left\" : \"bottom\";\n        $$.yOrient = config.axis_rotated ? (config.axis_y_inner ? \"top\" : \"bottom\") : (config.axis_y_inner ? \"right\" : \"left\");\n        $$.y2Orient = config.axis_rotated ? (config.axis_y2_inner ? \"bottom\" : \"top\") : (config.axis_y2_inner ? \"left\" : \"right\");\n        $$.subXOrient = config.axis_rotated ? \"left\" : \"bottom\";\n\n        $$.isLegendRight = config.legend_position === 'right';\n        $$.isLegendInset = config.legend_position === 'inset';\n        $$.isLegendTop = config.legend_inset_anchor === 'top-left' || config.legend_inset_anchor === 'top-right';\n        $$.isLegendLeft = config.legend_inset_anchor === 'top-left' || config.legend_inset_anchor === 'bottom-left';\n        $$.legendStep = 0;\n        $$.legendItemWidth = 0;\n        $$.legendItemHeight = 0;\n\n        $$.currentMaxTickWidths = {\n            x: 0,\n            y: 0,\n            y2: 0\n        };\n\n        $$.rotated_padding_left = 30;\n        $$.rotated_padding_right = config.axis_rotated && !config.axis_x_show ? 0 : 30;\n        $$.rotated_padding_top = 5;\n\n        $$.withoutFadeIn = {};\n\n        $$.intervalForObserveInserted = undefined;\n\n        $$.axes.subx = d3.selectAll([]); // needs when excluding subchart.js\n    };\n\n    c3_chart_internal_fn.initChartElements = function () {\n        if (this.initBar) { this.initBar(); }\n        if (this.initLine) { this.initLine(); }\n        if (this.initArc) { this.initArc(); }\n        if (this.initGauge) { this.initGauge(); }\n        if (this.initText) { this.initText(); }\n    };\n\n    c3_chart_internal_fn.initWithData = function (data) {\n        var $$ = this, d3 = $$.d3, config = $$.config;\n        var defs, main, binding = true;\n\n        $$.axis = new Axis($$);\n\n        if ($$.initPie) { $$.initPie(); }\n        if ($$.initBrush) { $$.initBrush(); }\n        if ($$.initZoom) { $$.initZoom(); }\n\n        if (!config.bindto) {\n            $$.selectChart = d3.selectAll([]);\n        }\n        else if (typeof config.bindto.node === 'function') {\n            $$.selectChart = config.bindto;\n        }\n        else {\n            $$.selectChart = d3.select(config.bindto);\n        }\n        if ($$.selectChart.empty()) {\n            $$.selectChart = d3.select(document.createElement('div')).style('opacity', 0);\n            $$.observeInserted($$.selectChart);\n            binding = false;\n        }\n        $$.selectChart.html(\"\").classed(\"c3\", true);\n\n        // Init data as targets\n        $$.data.xs = {};\n        $$.data.targets = $$.convertDataToTargets(data);\n\n        if (config.data_filter) {\n            $$.data.targets = $$.data.targets.filter(config.data_filter);\n        }\n\n        // Set targets to hide if needed\n        if (config.data_hide) {\n            $$.addHiddenTargetIds(config.data_hide === true ? $$.mapToIds($$.data.targets) : config.data_hide);\n        }\n        if (config.legend_hide) {\n            $$.addHiddenLegendIds(config.legend_hide === true ? $$.mapToIds($$.data.targets) : config.legend_hide);\n        }\n\n        // when gauge, hide legend // TODO: fix\n        if ($$.hasType('gauge')) {\n            config.legend_show = false;\n        }\n\n        // Init sizes and scales\n        $$.updateSizes();\n        $$.updateScales();\n\n        // Set domains for each scale\n        $$.x.domain(d3.extent($$.getXDomain($$.data.targets)));\n        $$.y.domain($$.getYDomain($$.data.targets, 'y'));\n        $$.y2.domain($$.getYDomain($$.data.targets, 'y2'));\n        $$.subX.domain($$.x.domain());\n        $$.subY.domain($$.y.domain());\n        $$.subY2.domain($$.y2.domain());\n\n        // Save original x domain for zoom update\n        $$.orgXDomain = $$.x.domain();\n\n        // Set initialized scales to brush and zoom\n        if ($$.brush) { $$.brush.scale($$.subX); }\n        if (config.zoom_enabled) { $$.zoom.scale($$.x); }\n\n        /*-- Basic Elements --*/\n\n        // Define svgs\n        $$.svg = $$.selectChart.append(\"svg\")\n            .style(\"overflow\", \"hidden\")\n            .on('mouseenter', function () { return config.onmouseover.call($$); })\n            .on('mouseleave', function () { return config.onmouseout.call($$); });\n\n        if ($$.config.svg_classname) {\n            $$.svg.attr('class', $$.config.svg_classname);\n        }\n\n        // Define defs\n        defs = $$.svg.append(\"defs\");\n        $$.clipChart = $$.appendClip(defs, $$.clipId);\n        $$.clipXAxis = $$.appendClip(defs, $$.clipIdForXAxis);\n        $$.clipYAxis = $$.appendClip(defs, $$.clipIdForYAxis);\n        $$.clipGrid = $$.appendClip(defs, $$.clipIdForGrid);\n        $$.clipSubchart = $$.appendClip(defs, $$.clipIdForSubchart);\n        $$.updateSvgSize();\n\n        // Define regions\n        main = $$.main = $$.svg.append(\"g\").attr(\"transform\", $$.getTranslate('main'));\n\n        if ($$.initSubchart) { $$.initSubchart(); }\n        if ($$.initTooltip) { $$.initTooltip(); }\n        if ($$.initLegend) { $$.initLegend(); }\n        if ($$.initTitle) { $$.initTitle(); }\n\n        /*-- Main Region --*/\n\n        // text when empty\n        main.append(\"text\")\n            .attr(\"class\", CLASS.text + ' ' + CLASS.empty)\n            .attr(\"text-anchor\", \"middle\") // horizontal centering of text at x position in all browsers.\n            .attr(\"dominant-baseline\", \"middle\"); // vertical centering of text at y position in all browsers, except IE.\n\n        // Regions\n        $$.initRegion();\n\n        // Grids\n        $$.initGrid();\n\n        // Define g for chart area\n        main.append('g')\n            .attr(\"clip-path\", $$.clipPath)\n            .attr('class', CLASS.chart);\n\n        // Grid lines\n        if (config.grid_lines_front) { $$.initGridLines(); }\n\n        // Cover whole with rects for events\n        $$.initEventRect();\n\n        // Define g for chart\n        $$.initChartElements();\n\n        // if zoom privileged, insert rect to forefront\n        // TODO: is this needed?\n        main.insert('rect', config.zoom_privileged ? null : 'g.' + CLASS.regions)\n            .attr('class', CLASS.zoomRect)\n            .attr('width', $$.width)\n            .attr('height', $$.height)\n            .style('opacity', 0)\n            .on(\"dblclick.zoom\", null);\n\n        // Set default extent if defined\n        if (config.axis_x_extent) { $$.brush.extent($$.getDefaultExtent()); }\n\n        // Add Axis\n        $$.axis.init();\n\n        // Set targets\n        $$.updateTargets($$.data.targets);\n\n        // Draw with targets\n        if (binding) {\n            $$.updateDimension();\n            $$.config.oninit.call($$);\n            $$.redraw({\n                withTransition: false,\n                withTransform: true,\n                withUpdateXDomain: true,\n                withUpdateOrgXDomain: true,\n                withTransitionForAxis: false\n            });\n        }\n\n        // Bind resize event\n        $$.bindResize();\n\n        // export element of the chart\n        $$.api.element = $$.selectChart.node();\n    };\n\n    c3_chart_internal_fn.smoothLines = function (el, type) {\n        var $$ = this;\n        if (type === 'grid') {\n            el.each(function () {\n                var g = $$.d3.select(this),\n                    x1 = g.attr('x1'),\n                    x2 = g.attr('x2'),\n                    y1 = g.attr('y1'),\n                    y2 = g.attr('y2');\n                g.attr({\n                    'x1': Math.ceil(x1),\n                    'x2': Math.ceil(x2),\n                    'y1': Math.ceil(y1),\n                    'y2': Math.ceil(y2)\n                });\n            });\n        }\n    };\n\n\n    c3_chart_internal_fn.updateSizes = function () {\n        var $$ = this, config = $$.config;\n        var legendHeight = $$.legend ? $$.getLegendHeight() : 0,\n            legendWidth = $$.legend ? $$.getLegendWidth() : 0,\n            legendHeightForBottom = $$.isLegendRight || $$.isLegendInset ? 0 : legendHeight,\n            hasArc = $$.hasArcType(),\n            xAxisHeight = config.axis_rotated || hasArc ? 0 : $$.getHorizontalAxisHeight('x'),\n            subchartHeight = config.subchart_show && !hasArc ? (config.subchart_size_height + xAxisHeight) : 0;\n\n        $$.currentWidth = $$.getCurrentWidth();\n        $$.currentHeight = $$.getCurrentHeight();\n\n        // for main\n        $$.margin = config.axis_rotated ? {\n            top: $$.getHorizontalAxisHeight('y2') + $$.getCurrentPaddingTop(),\n            right: hasArc ? 0 : $$.getCurrentPaddingRight(),\n            bottom: $$.getHorizontalAxisHeight('y') + legendHeightForBottom + $$.getCurrentPaddingBottom(),\n            left: subchartHeight + (hasArc ? 0 : $$.getCurrentPaddingLeft())\n        } : {\n            top: 4 + $$.getCurrentPaddingTop(), // for top tick text\n            right: hasArc ? 0 : $$.getCurrentPaddingRight(),\n            bottom: xAxisHeight + subchartHeight + legendHeightForBottom + $$.getCurrentPaddingBottom(),\n            left: hasArc ? 0 : $$.getCurrentPaddingLeft()\n        };\n\n        // for subchart\n        $$.margin2 = config.axis_rotated ? {\n            top: $$.margin.top,\n            right: NaN,\n            bottom: 20 + legendHeightForBottom,\n            left: $$.rotated_padding_left\n        } : {\n            top: $$.currentHeight - subchartHeight - legendHeightForBottom,\n            right: NaN,\n            bottom: xAxisHeight + legendHeightForBottom,\n            left: $$.margin.left\n        };\n\n        // for legend\n        $$.margin3 = {\n            top: 0,\n            right: NaN,\n            bottom: 0,\n            left: 0\n        };\n        if ($$.updateSizeForLegend) { $$.updateSizeForLegend(legendHeight, legendWidth); }\n\n        $$.width = $$.currentWidth - $$.margin.left - $$.margin.right;\n        $$.height = $$.currentHeight - $$.margin.top - $$.margin.bottom;\n        if ($$.width < 0) { $$.width = 0; }\n        if ($$.height < 0) { $$.height = 0; }\n\n        $$.width2 = config.axis_rotated ? $$.margin.left - $$.rotated_padding_left - $$.rotated_padding_right : $$.width;\n        $$.height2 = config.axis_rotated ? $$.height : $$.currentHeight - $$.margin2.top - $$.margin2.bottom;\n        if ($$.width2 < 0) { $$.width2 = 0; }\n        if ($$.height2 < 0) { $$.height2 = 0; }\n\n        // for arc\n        $$.arcWidth = $$.width - ($$.isLegendRight ? legendWidth + 10 : 0);\n        $$.arcHeight = $$.height - ($$.isLegendRight ? 0 : 10);\n        if ($$.hasType('gauge') && !config.gauge_fullCircle) {\n            $$.arcHeight += $$.height - $$.getGaugeLabelHeight();\n        }\n        if ($$.updateRadius) { $$.updateRadius(); }\n\n        if ($$.isLegendRight && hasArc) {\n            $$.margin3.left = $$.arcWidth / 2 + $$.radiusExpanded * 1.1;\n        }\n    };\n\n    c3_chart_internal_fn.updateTargets = function (targets) {\n        var $$ = this;\n\n        /*-- Main --*/\n\n        //-- Text --//\n        $$.updateTargetsForText(targets);\n\n        //-- Bar --//\n        $$.updateTargetsForBar(targets);\n\n        //-- Line --//\n        $$.updateTargetsForLine(targets);\n\n        //-- Arc --//\n        if ($$.hasArcType() && $$.updateTargetsForArc) { $$.updateTargetsForArc(targets); }\n\n        /*-- Sub --*/\n\n        if ($$.updateTargetsForSubchart) { $$.updateTargetsForSubchart(targets); }\n\n        // Fade-in each chart\n        $$.showTargets();\n    };\n    c3_chart_internal_fn.showTargets = function () {\n        var $$ = this;\n        $$.svg.selectAll('.' + CLASS.target).filter(function (d) { return $$.isTargetToShow(d.id); })\n          .transition().duration($$.config.transition_duration)\n            .style(\"opacity\", 1);\n    };\n\n    c3_chart_internal_fn.redraw = function (options, transitions) {\n        var $$ = this, main = $$.main, d3 = $$.d3, config = $$.config;\n        var areaIndices = $$.getShapeIndices($$.isAreaType), barIndices = $$.getShapeIndices($$.isBarType), lineIndices = $$.getShapeIndices($$.isLineType);\n        var withY, withSubchart, withTransition, withTransitionForExit, withTransitionForAxis,\n            withTransform, withUpdateXDomain, withUpdateOrgXDomain, withTrimXDomain, withLegend,\n            withEventRect, withDimension, withUpdateXAxis;\n        var hideAxis = $$.hasArcType();\n        var drawArea, drawBar, drawLine, xForText, yForText;\n        var duration, durationForExit, durationForAxis;\n        var waitForDraw, flow;\n        var targetsToShow = $$.filterTargetsToShow($$.data.targets), tickValues, i, intervalForCulling, xDomainForZoom;\n        var xv = $$.xv.bind($$), cx, cy;\n\n        options = options || {};\n        withY = getOption(options, \"withY\", true);\n        withSubchart = getOption(options, \"withSubchart\", true);\n        withTransition = getOption(options, \"withTransition\", true);\n        withTransform = getOption(options, \"withTransform\", false);\n        withUpdateXDomain = getOption(options, \"withUpdateXDomain\", false);\n        withUpdateOrgXDomain = getOption(options, \"withUpdateOrgXDomain\", false);\n        withTrimXDomain = getOption(options, \"withTrimXDomain\", true);\n        withUpdateXAxis = getOption(options, \"withUpdateXAxis\", withUpdateXDomain);\n        withLegend = getOption(options, \"withLegend\", false);\n        withEventRect = getOption(options, \"withEventRect\", true);\n        withDimension = getOption(options, \"withDimension\", true);\n        withTransitionForExit = getOption(options, \"withTransitionForExit\", withTransition);\n        withTransitionForAxis = getOption(options, \"withTransitionForAxis\", withTransition);\n\n        duration = withTransition ? config.transition_duration : 0;\n        durationForExit = withTransitionForExit ? duration : 0;\n        durationForAxis = withTransitionForAxis ? duration : 0;\n\n        transitions = transitions || $$.axis.generateTransitions(durationForAxis);\n\n        // update legend and transform each g\n        if (withLegend && config.legend_show) {\n            $$.updateLegend($$.mapToIds($$.data.targets), options, transitions);\n        } else if (withDimension) {\n            // need to update dimension (e.g. axis.y.tick.values) because y tick values should change\n            // no need to update axis in it because they will be updated in redraw()\n            $$.updateDimension(true);\n        }\n\n        // MEMO: needed for grids calculation\n        if ($$.isCategorized() && targetsToShow.length === 0) {\n            $$.x.domain([0, $$.axes.x.selectAll('.tick').size()]);\n        }\n\n        if (targetsToShow.length) {\n            $$.updateXDomain(targetsToShow, withUpdateXDomain, withUpdateOrgXDomain, withTrimXDomain);\n            if (!config.axis_x_tick_values) {\n                tickValues = $$.axis.updateXAxisTickValues(targetsToShow);\n            }\n        } else {\n            $$.xAxis.tickValues([]);\n            $$.subXAxis.tickValues([]);\n        }\n\n        if (config.zoom_rescale && !options.flow) {\n            xDomainForZoom = $$.x.orgDomain();\n        }\n\n        $$.y.domain($$.getYDomain(targetsToShow, 'y', xDomainForZoom));\n        $$.y2.domain($$.getYDomain(targetsToShow, 'y2', xDomainForZoom));\n\n        if (!config.axis_y_tick_values && config.axis_y_tick_count) {\n            $$.yAxis.tickValues($$.axis.generateTickValues($$.y.domain(), config.axis_y_tick_count));\n        }\n        if (!config.axis_y2_tick_values && config.axis_y2_tick_count) {\n            $$.y2Axis.tickValues($$.axis.generateTickValues($$.y2.domain(), config.axis_y2_tick_count));\n        }\n\n        // axes\n        $$.axis.redraw(transitions, hideAxis);\n\n        // Update axis label\n        $$.axis.updateLabels(withTransition);\n\n        // show/hide if manual culling needed\n        if ((withUpdateXDomain || withUpdateXAxis) && targetsToShow.length) {\n            if (config.axis_x_tick_culling && tickValues) {\n                for (i = 1; i < tickValues.length; i++) {\n                    if (tickValues.length / i < config.axis_x_tick_culling_max) {\n                        intervalForCulling = i;\n                        break;\n                    }\n                }\n                $$.svg.selectAll('.' + CLASS.axisX + ' .tick text').each(function (e) {\n                    var index = tickValues.indexOf(e);\n                    if (index >= 0) {\n                        d3.select(this).style('display', index % intervalForCulling ? 'none' : 'block');\n                    }\n                });\n            } else {\n                $$.svg.selectAll('.' + CLASS.axisX + ' .tick text').style('display', 'block');\n            }\n        }\n\n        // setup drawer - MEMO: these must be called after axis updated\n        drawArea = $$.generateDrawArea ? $$.generateDrawArea(areaIndices, false) : undefined;\n        drawBar = $$.generateDrawBar ? $$.generateDrawBar(barIndices) : undefined;\n        drawLine = $$.generateDrawLine ? $$.generateDrawLine(lineIndices, false) : undefined;\n        xForText = $$.generateXYForText(areaIndices, barIndices, lineIndices, true);\n        yForText = $$.generateXYForText(areaIndices, barIndices, lineIndices, false);\n\n        // Update sub domain\n        if (withY) {\n            $$.subY.domain($$.getYDomain(targetsToShow, 'y'));\n            $$.subY2.domain($$.getYDomain(targetsToShow, 'y2'));\n        }\n\n        // xgrid focus\n        $$.updateXgridFocus();\n\n        // Data empty label positioning and text.\n        main.select(\"text.\" + CLASS.text + '.' + CLASS.empty)\n            .attr(\"x\", $$.width / 2)\n            .attr(\"y\", $$.height / 2)\n            .text(config.data_empty_label_text)\n          .transition()\n            .style('opacity', targetsToShow.length ? 0 : 1);\n\n        // grid\n        $$.updateGrid(duration);\n\n        // rect for regions\n        $$.updateRegion(duration);\n\n        // bars\n        $$.updateBar(durationForExit);\n\n        // lines, areas and cricles\n        $$.updateLine(durationForExit);\n        $$.updateArea(durationForExit);\n        $$.updateCircle();\n\n        // text\n        if ($$.hasDataLabel()) {\n            $$.updateText(durationForExit);\n        }\n\n        // title\n        if ($$.redrawTitle) { $$.redrawTitle(); }\n\n        // arc\n        if ($$.redrawArc) { $$.redrawArc(duration, durationForExit, withTransform); }\n\n        // subchart\n        if ($$.redrawSubchart) {\n            $$.redrawSubchart(withSubchart, transitions, duration, durationForExit, areaIndices, barIndices, lineIndices);\n        }\n\n        // circles for select\n        main.selectAll('.' + CLASS.selectedCircles)\n            .filter($$.isBarType.bind($$))\n            .selectAll('circle')\n            .remove();\n\n        // event rects will redrawn when flow called\n        if (config.interaction_enabled && !options.flow && withEventRect) {\n            $$.redrawEventRect();\n            if ($$.updateZoom) { $$.updateZoom(); }\n        }\n\n        // update circleY based on updated parameters\n        $$.updateCircleY();\n\n        // generate circle x/y functions depending on updated params\n        cx = ($$.config.axis_rotated ? $$.circleY : $$.circleX).bind($$);\n        cy = ($$.config.axis_rotated ? $$.circleX : $$.circleY).bind($$);\n\n        if (options.flow) {\n            flow = $$.generateFlow({\n                targets: targetsToShow,\n                flow: options.flow,\n                duration: options.flow.duration,\n                drawBar: drawBar,\n                drawLine: drawLine,\n                drawArea: drawArea,\n                cx: cx,\n                cy: cy,\n                xv: xv,\n                xForText: xForText,\n                yForText: yForText\n            });\n        }\n\n        if ((duration || flow) && $$.isTabVisible()) { // Only use transition if tab visible. See #938.\n            // transition should be derived from one transition\n            d3.transition().duration(duration).each(function () {\n                var transitionsToWait = [];\n\n                // redraw and gather transitions\n                [\n                    $$.redrawBar(drawBar, true),\n                    $$.redrawLine(drawLine, true),\n                    $$.redrawArea(drawArea, true),\n                    $$.redrawCircle(cx, cy, true),\n                    $$.redrawText(xForText, yForText, options.flow, true),\n                    $$.redrawRegion(true),\n                    $$.redrawGrid(true),\n                ].forEach(function (transitions) {\n                    transitions.forEach(function (transition) {\n                        transitionsToWait.push(transition);\n                    });\n                });\n\n                // Wait for end of transitions to call flow and onrendered callback\n                waitForDraw = $$.generateWait();\n                transitionsToWait.forEach(function (t) {\n                    waitForDraw.add(t);\n                });\n            })\n            .call(waitForDraw, function () {\n                if (flow) {\n                    flow();\n                }\n                if (config.onrendered) {\n                    config.onrendered.call($$);\n                }\n            });\n        }\n        else {\n            $$.redrawBar(drawBar);\n            $$.redrawLine(drawLine);\n            $$.redrawArea(drawArea);\n            $$.redrawCircle(cx, cy);\n            $$.redrawText(xForText, yForText, options.flow);\n            $$.redrawRegion();\n            $$.redrawGrid();\n            if (config.onrendered) {\n                config.onrendered.call($$);\n            }\n        }\n\n        // update fadein condition\n        $$.mapToIds($$.data.targets).forEach(function (id) {\n            $$.withoutFadeIn[id] = true;\n        });\n    };\n\n    c3_chart_internal_fn.updateAndRedraw = function (options) {\n        var $$ = this, config = $$.config, transitions;\n        options = options || {};\n        // same with redraw\n        options.withTransition = getOption(options, \"withTransition\", true);\n        options.withTransform = getOption(options, \"withTransform\", false);\n        options.withLegend = getOption(options, \"withLegend\", false);\n        // NOT same with redraw\n        options.withUpdateXDomain = true;\n        options.withUpdateOrgXDomain = true;\n        options.withTransitionForExit = false;\n        options.withTransitionForTransform = getOption(options, \"withTransitionForTransform\", options.withTransition);\n        // MEMO: this needs to be called before updateLegend and it means this ALWAYS needs to be called)\n        $$.updateSizes();\n        // MEMO: called in updateLegend in redraw if withLegend\n        if (!(options.withLegend && config.legend_show)) {\n            transitions = $$.axis.generateTransitions(options.withTransitionForAxis ? config.transition_duration : 0);\n            // Update scales\n            $$.updateScales();\n            $$.updateSvgSize();\n            // Update g positions\n            $$.transformAll(options.withTransitionForTransform, transitions);\n        }\n        // Draw with new sizes & scales\n        $$.redraw(options, transitions);\n    };\n    c3_chart_internal_fn.redrawWithoutRescale = function () {\n        this.redraw({\n            withY: false,\n            withSubchart: false,\n            withEventRect: false,\n            withTransitionForAxis: false\n        });\n    };\n\n    c3_chart_internal_fn.isTimeSeries = function () {\n        return this.config.axis_x_type === 'timeseries';\n    };\n    c3_chart_internal_fn.isCategorized = function () {\n        return this.config.axis_x_type.indexOf('categor') >= 0;\n    };\n    c3_chart_internal_fn.isCustomX = function () {\n        var $$ = this, config = $$.config;\n        return !$$.isTimeSeries() && (config.data_x || notEmpty(config.data_xs));\n    };\n\n    c3_chart_internal_fn.isTimeSeriesY = function () {\n        return this.config.axis_y_type === 'timeseries';\n    };\n\n    c3_chart_internal_fn.getTranslate = function (target) {\n        var $$ = this, config = $$.config, x, y;\n        if (target === 'main') {\n            x = asHalfPixel($$.margin.left);\n            y = asHalfPixel($$.margin.top);\n        } else if (target === 'context') {\n            x = asHalfPixel($$.margin2.left);\n            y = asHalfPixel($$.margin2.top);\n        } else if (target === 'legend') {\n            x = $$.margin3.left;\n            y = $$.margin3.top;\n        } else if (target === 'x') {\n            x = 0;\n            y = config.axis_rotated ? 0 : $$.height;\n        } else if (target === 'y') {\n            x = 0;\n            y = config.axis_rotated ? $$.height : 0;\n        } else if (target === 'y2') {\n            x = config.axis_rotated ? 0 : $$.width;\n            y = config.axis_rotated ? 1 : 0;\n        } else if (target === 'subx') {\n            x = 0;\n            y = config.axis_rotated ? 0 : $$.height2;\n        } else if (target === 'arc') {\n            x = $$.arcWidth / 2;\n            y = $$.arcHeight / 2;\n        }\n        return \"translate(\" + x + \",\" + y + \")\";\n    };\n    c3_chart_internal_fn.initialOpacity = function (d) {\n        return d.value !== null && this.withoutFadeIn[d.id] ? 1 : 0;\n    };\n    c3_chart_internal_fn.initialOpacityForCircle = function (d) {\n        return d.value !== null && this.withoutFadeIn[d.id] ? this.opacityForCircle(d) : 0;\n    };\n    c3_chart_internal_fn.opacityForCircle = function (d) {\n        var opacity = this.config.point_show ? 1 : 0;\n        return isValue(d.value) ? (this.isScatterType(d) ? 0.5 : opacity) : 0;\n    };\n    c3_chart_internal_fn.opacityForText = function () {\n        return this.hasDataLabel() ? 1 : 0;\n    };\n    c3_chart_internal_fn.xx = function (d) {\n        return d ? this.x(d.x) : null;\n    };\n    c3_chart_internal_fn.xv = function (d) {\n        var $$ = this, value = d.value;\n        if ($$.isTimeSeries()) {\n            value = $$.parseDate(d.value);\n        }\n        else if ($$.isCategorized() && typeof d.value === 'string') {\n            value = $$.config.axis_x_categories.indexOf(d.value);\n        }\n        return Math.ceil($$.x(value));\n    };\n    c3_chart_internal_fn.yv = function (d) {\n        var $$ = this,\n            yScale = d.axis && d.axis === 'y2' ? $$.y2 : $$.y;\n        return Math.ceil(yScale(d.value));\n    };\n    c3_chart_internal_fn.subxx = function (d) {\n        return d ? this.subX(d.x) : null;\n    };\n\n    c3_chart_internal_fn.transformMain = function (withTransition, transitions) {\n        var $$ = this,\n            xAxis, yAxis, y2Axis;\n        if (transitions && transitions.axisX) {\n            xAxis = transitions.axisX;\n        } else {\n            xAxis  = $$.main.select('.' + CLASS.axisX);\n            if (withTransition) { xAxis = xAxis.transition(); }\n        }\n        if (transitions && transitions.axisY) {\n            yAxis = transitions.axisY;\n        } else {\n            yAxis = $$.main.select('.' + CLASS.axisY);\n            if (withTransition) { yAxis = yAxis.transition(); }\n        }\n        if (transitions && transitions.axisY2) {\n            y2Axis = transitions.axisY2;\n        } else {\n            y2Axis = $$.main.select('.' + CLASS.axisY2);\n            if (withTransition) { y2Axis = y2Axis.transition(); }\n        }\n        (withTransition ? $$.main.transition() : $$.main).attr(\"transform\", $$.getTranslate('main'));\n        xAxis.attr(\"transform\", $$.getTranslate('x'));\n        yAxis.attr(\"transform\", $$.getTranslate('y'));\n        y2Axis.attr(\"transform\", $$.getTranslate('y2'));\n        $$.main.select('.' + CLASS.chartArcs).attr(\"transform\", $$.getTranslate('arc'));\n    };\n    c3_chart_internal_fn.transformAll = function (withTransition, transitions) {\n        var $$ = this;\n        $$.transformMain(withTransition, transitions);\n        if ($$.config.subchart_show) { $$.transformContext(withTransition, transitions); }\n        if ($$.legend) { $$.transformLegend(withTransition); }\n    };\n\n    c3_chart_internal_fn.updateSvgSize = function () {\n        var $$ = this,\n            brush = $$.svg.select(\".c3-brush .background\");\n        $$.svg.attr('width', $$.currentWidth).attr('height', $$.currentHeight);\n        $$.svg.selectAll(['#' + $$.clipId, '#' + $$.clipIdForGrid]).select('rect')\n            .attr('width', $$.width)\n            .attr('height', $$.height);\n        $$.svg.select('#' + $$.clipIdForXAxis).select('rect')\n            .attr('x', $$.getXAxisClipX.bind($$))\n            .attr('y', $$.getXAxisClipY.bind($$))\n            .attr('width', $$.getXAxisClipWidth.bind($$))\n            .attr('height', $$.getXAxisClipHeight.bind($$));\n        $$.svg.select('#' + $$.clipIdForYAxis).select('rect')\n            .attr('x', $$.getYAxisClipX.bind($$))\n            .attr('y', $$.getYAxisClipY.bind($$))\n            .attr('width', $$.getYAxisClipWidth.bind($$))\n            .attr('height', $$.getYAxisClipHeight.bind($$));\n        $$.svg.select('#' + $$.clipIdForSubchart).select('rect')\n            .attr('width', $$.width)\n            .attr('height', brush.size() ? brush.attr('height') : 0);\n        $$.svg.select('.' + CLASS.zoomRect)\n            .attr('width', $$.width)\n            .attr('height', $$.height);\n        // MEMO: parent div's height will be bigger than svg when <!DOCTYPE html>\n        $$.selectChart.style('max-height', $$.currentHeight + \"px\");\n    };\n\n\n    c3_chart_internal_fn.updateDimension = function (withoutAxis) {\n        var $$ = this;\n        if (!withoutAxis) {\n            if ($$.config.axis_rotated) {\n                $$.axes.x.call($$.xAxis);\n                $$.axes.subx.call($$.subXAxis);\n            } else {\n                $$.axes.y.call($$.yAxis);\n                $$.axes.y2.call($$.y2Axis);\n            }\n        }\n        $$.updateSizes();\n        $$.updateScales();\n        $$.updateSvgSize();\n        $$.transformAll(false);\n    };\n\n    c3_chart_internal_fn.observeInserted = function (selection) {\n        var $$ = this, observer;\n        if (typeof MutationObserver === 'undefined') {\n            window.console.error(\"MutationObserver not defined.\");\n            return;\n        }\n        observer= new MutationObserver(function (mutations) {\n            mutations.forEach(function (mutation) {\n                if (mutation.type === 'childList' && mutation.previousSibling) {\n                    observer.disconnect();\n                    // need to wait for completion of load because size calculation requires the actual sizes determined after that completion\n                    $$.intervalForObserveInserted = window.setInterval(function () {\n                        // parentNode will NOT be null when completed\n                        if (selection.node().parentNode) {\n                            window.clearInterval($$.intervalForObserveInserted);\n                            $$.updateDimension();\n                            if ($$.brush) { $$.brush.update(); }\n                            $$.config.oninit.call($$);\n                            $$.redraw({\n                                withTransform: true,\n                                withUpdateXDomain: true,\n                                withUpdateOrgXDomain: true,\n                                withTransition: false,\n                                withTransitionForTransform: false,\n                                withLegend: true\n                            });\n                            selection.transition().style('opacity', 1);\n                        }\n                    }, 10);\n                }\n            });\n        });\n        observer.observe(selection.node(), {attributes: true, childList: true, characterData: true});\n    };\n\n    c3_chart_internal_fn.bindResize = function () {\n        var $$ = this, config = $$.config;\n\n        $$.resizeFunction = $$.generateResize();\n\n        $$.resizeFunction.add(function () {\n            config.onresize.call($$);\n        });\n        if (config.resize_auto) {\n            $$.resizeFunction.add(function () {\n                if ($$.resizeTimeout !== undefined) {\n                    window.clearTimeout($$.resizeTimeout);\n                }\n                $$.resizeTimeout = window.setTimeout(function () {\n                    delete $$.resizeTimeout;\n                    $$.api.flush();\n                }, 100);\n            });\n        }\n        $$.resizeFunction.add(function () {\n            config.onresized.call($$);\n        });\n\n        if (window.attachEvent) {\n            window.attachEvent('onresize', $$.resizeFunction);\n        } else if (window.addEventListener) {\n            window.addEventListener('resize', $$.resizeFunction, false);\n        } else {\n            // fallback to this, if this is a very old browser\n            var wrapper = window.onresize;\n            if (!wrapper) {\n                // create a wrapper that will call all charts\n                wrapper = $$.generateResize();\n            } else if (!wrapper.add || !wrapper.remove) {\n                // there is already a handler registered, make sure we call it too\n                wrapper = $$.generateResize();\n                wrapper.add(window.onresize);\n            }\n            // add this graph to the wrapper, we will be removed if the user calls destroy\n            wrapper.add($$.resizeFunction);\n            window.onresize = wrapper;\n        }\n    };\n\n    c3_chart_internal_fn.generateResize = function () {\n        var resizeFunctions = [];\n        function callResizeFunctions() {\n            resizeFunctions.forEach(function (f) {\n                f();\n            });\n        }\n        callResizeFunctions.add = function (f) {\n            resizeFunctions.push(f);\n        };\n        callResizeFunctions.remove = function (f) {\n            for (var i = 0; i < resizeFunctions.length; i++) {\n                if (resizeFunctions[i] === f) {\n                    resizeFunctions.splice(i, 1);\n                    break;\n                }\n            }\n        };\n        return callResizeFunctions;\n    };\n\n    c3_chart_internal_fn.endall = function (transition, callback) {\n        var n = 0;\n        transition\n            .each(function () { ++n; })\n            .each(\"end\", function () {\n                if (!--n) { callback.apply(this, arguments); }\n            });\n    };\n    c3_chart_internal_fn.generateWait = function () {\n        var transitionsToWait = [],\n            f = function (transition, callback) {\n                var timer = setInterval(function () {\n                    var done = 0;\n                    transitionsToWait.forEach(function (t) {\n                        if (t.empty()) {\n                            done += 1;\n                            return;\n                        }\n                        try {\n                            t.transition();\n                        } catch (e) {\n                            done += 1;\n                        }\n                    });\n                    if (done === transitionsToWait.length) {\n                        clearInterval(timer);\n                        if (callback) { callback(); }\n                    }\n                }, 10);\n            };\n        f.add = function (transition) {\n            transitionsToWait.push(transition);\n        };\n        return f;\n    };\n\n    c3_chart_internal_fn.parseDate = function (date) {\n        var $$ = this, parsedDate;\n        if (date instanceof Date) {\n            parsedDate = date;\n        } else if (typeof date === 'string') {\n            parsedDate = $$.dataTimeFormat($$.config.data_xFormat).parse(date);\n        } else if (typeof date === 'number' && !isNaN(date)) {\n            parsedDate = new Date(+date);\n        }\n        if (!parsedDate || isNaN(+parsedDate)) {\n            window.console.error(\"Failed to parse x '\" + date + \"' to Date object\");\n        }\n        return parsedDate;\n    };\n\n    c3_chart_internal_fn.isTabVisible = function () {\n        var hidden;\n        if (typeof document.hidden !== \"undefined\") { // Opera 12.10 and Firefox 18 and later support\n            hidden = \"hidden\";\n        } else if (typeof document.mozHidden !== \"undefined\") {\n            hidden = \"mozHidden\";\n        } else if (typeof document.msHidden !== \"undefined\") {\n            hidden = \"msHidden\";\n        } else if (typeof document.webkitHidden !== \"undefined\") {\n            hidden = \"webkitHidden\";\n        }\n\n        return document[hidden] ? false : true;\n    };\n\n    c3_chart_internal_fn.getDefaultConfig = function () {\n        var config = {\n            bindto: '#chart',\n            svg_classname: undefined,\n            size_width: undefined,\n            size_height: undefined,\n            padding_left: undefined,\n            padding_right: undefined,\n            padding_top: undefined,\n            padding_bottom: undefined,\n            resize_auto: true,\n            zoom_enabled: false,\n            zoom_extent: undefined,\n            zoom_privileged: false,\n            zoom_rescale: false,\n            zoom_onzoom: function () {},\n            zoom_onzoomstart: function () {},\n            zoom_onzoomend: function () {},\n            zoom_x_min: undefined,\n            zoom_x_max: undefined,\n            interaction_brighten: true,\n            interaction_enabled: true,\n            onmouseover: function () {},\n            onmouseout: function () {},\n            onresize: function () {},\n            onresized: function () {},\n            oninit: function () {},\n            onrendered: function () {},\n            transition_duration: 350,\n            data_x: undefined,\n            data_xs: {},\n            data_xFormat: '%Y-%m-%d',\n            data_xLocaltime: true,\n            data_xSort: true,\n            data_idConverter: function (id) { return id; },\n            data_names: {},\n            data_classes: {},\n            data_groups: [],\n            data_axes: {},\n            data_type: undefined,\n            data_types: {},\n            data_labels: {},\n            data_order: 'desc',\n            data_regions: {},\n            data_color: undefined,\n            data_colors: {},\n            data_hide: false,\n            data_filter: undefined,\n            data_selection_enabled: false,\n            data_selection_grouped: false,\n            data_selection_isselectable: function () { return true; },\n            data_selection_multiple: true,\n            data_selection_draggable: false,\n            data_onclick: function () {},\n            data_onmouseover: function () {},\n            data_onmouseout: function () {},\n            data_onselected: function () {},\n            data_onunselected: function () {},\n            data_url: undefined,\n            data_headers: undefined,\n            data_json: undefined,\n            data_rows: undefined,\n            data_columns: undefined,\n            data_mimeType: undefined,\n            data_keys: undefined,\n            // configuration for no plot-able data supplied.\n            data_empty_label_text: \"\",\n            // subchart\n            subchart_show: false,\n            subchart_size_height: 60,\n            subchart_axis_x_show: true,\n            subchart_onbrush: function () {},\n            // color\n            color_pattern: [],\n            color_threshold: {},\n            // legend\n            legend_show: true,\n            legend_hide: false,\n            legend_position: 'bottom',\n            legend_inset_anchor: 'top-left',\n            legend_inset_x: 10,\n            legend_inset_y: 0,\n            legend_inset_step: undefined,\n            legend_item_onclick: undefined,\n            legend_item_onmouseover: undefined,\n            legend_item_onmouseout: undefined,\n            legend_equally: false,\n            legend_padding: 0,\n            legend_item_tile_width: 10,\n            legend_item_tile_height: 10,\n            // axis\n            axis_rotated: false,\n            axis_x_show: true,\n            axis_x_type: 'indexed',\n            axis_x_localtime: true,\n            axis_x_categories: [],\n            axis_x_tick_centered: false,\n            axis_x_tick_format: undefined,\n            axis_x_tick_culling: {},\n            axis_x_tick_culling_max: 10,\n            axis_x_tick_count: undefined,\n            axis_x_tick_fit: true,\n            axis_x_tick_values: null,\n            axis_x_tick_rotate: 0,\n            axis_x_tick_outer: true,\n            axis_x_tick_multiline: true,\n            axis_x_tick_width: null,\n            axis_x_max: undefined,\n            axis_x_min: undefined,\n            axis_x_padding: {},\n            axis_x_height: undefined,\n            axis_x_extent: undefined,\n            axis_x_label: {},\n            axis_y_show: true,\n            axis_y_type: undefined,\n            axis_y_max: undefined,\n            axis_y_min: undefined,\n            axis_y_inverted: false,\n            axis_y_center: undefined,\n            axis_y_inner: undefined,\n            axis_y_label: {},\n            axis_y_tick_format: undefined,\n            axis_y_tick_outer: true,\n            axis_y_tick_values: null,        \n            axis_y_tick_rotate: 0,\n            axis_y_tick_count: undefined,\n            axis_y_tick_time_value: undefined,\n            axis_y_tick_time_interval: undefined,\n            axis_y_padding: {},\n            axis_y_default: undefined,\n            axis_y2_show: false,\n            axis_y2_max: undefined,\n            axis_y2_min: undefined,\n            axis_y2_inverted: false,\n            axis_y2_center: undefined,\n            axis_y2_inner: undefined,\n            axis_y2_label: {},\n            axis_y2_tick_format: undefined,\n            axis_y2_tick_outer: true,\n            axis_y2_tick_values: null,\n            axis_y2_tick_count: undefined,\n            axis_y2_padding: {},\n            axis_y2_default: undefined,\n            // grid\n            grid_x_show: false,\n            grid_x_type: 'tick',\n            grid_x_lines: [],\n            grid_y_show: false,\n            // not used\n            // grid_y_type: 'tick',\n            grid_y_lines: [],\n            grid_y_ticks: 10,\n            grid_focus_show: true,\n            grid_lines_front: true,\n            // point - point of each data\n            point_show: true,\n            point_r: 2.5,\n            point_sensitivity: 10,\n            point_focus_expand_enabled: true,\n            point_focus_expand_r: undefined,\n            point_select_r: undefined,\n            // line\n            line_connectNull: false,\n            line_step_type: 'step',\n            // bar\n            bar_width: undefined,\n            bar_width_ratio: 0.6,\n            bar_width_max: undefined,\n            bar_zerobased: true,\n            // area\n            area_zerobased: true,\n            area_above: false,\n            // pie\n            pie_label_show: true,\n            pie_label_format: undefined,\n            pie_label_threshold: 0.05,\n            pie_label_ratio: undefined,\n            pie_expand: {},\n            pie_expand_duration: 50,\n            // gauge\n            gauge_fullCircle: false,\n            gauge_label_show: true,\n            gauge_label_format: undefined,\n            gauge_min: 0,\n            gauge_max: 100,\n            gauge_startingAngle: -1 * Math.PI/2,\n            gauge_units: undefined,\n            gauge_width: undefined,\n            gauge_expand: {},\n            gauge_expand_duration: 50,\n            // donut\n            donut_label_show: true,\n            donut_label_format: undefined,\n            donut_label_threshold: 0.05,\n            donut_label_ratio: undefined,\n            donut_width: undefined,\n            donut_title: \"\",\n            donut_expand: {},\n            donut_expand_duration: 50,\n            // spline\n            spline_interpolation_type: 'cardinal',\n            // region - region to change style\n            regions: [],\n            // tooltip - show when mouseover on each data\n            tooltip_show: true,\n            tooltip_grouped: true,\n            tooltip_format_title: undefined,\n            tooltip_format_name: undefined,\n            tooltip_format_value: undefined,\n            tooltip_position: undefined,\n            tooltip_contents: function (d, defaultTitleFormat, defaultValueFormat, color) {\n                return this.getTooltipContent ? this.getTooltipContent(d, defaultTitleFormat, defaultValueFormat, color) : '';\n            },\n            tooltip_init_show: false,\n            tooltip_init_x: 0,\n            tooltip_init_position: {top: '0px', left: '50px'},\n            tooltip_onshow: function () {},\n            tooltip_onhide: function () {},\n            // title\n            title_text: undefined,\n            title_padding: {\n                top: 0,\n                right: 0,\n                bottom: 0,\n                left: 0\n            },\n            title_position: 'top-center',\n        };\n\n        Object.keys(this.additionalConfig).forEach(function (key) {\n            config[key] = this.additionalConfig[key];\n        }, this);\n\n        return config;\n    };\n    c3_chart_internal_fn.additionalConfig = {};\n\n    c3_chart_internal_fn.loadConfig = function (config) {\n        var this_config = this.config, target, keys, read;\n        function find() {\n            var key = keys.shift();\n    //        console.log(\"key =>\", key, \", target =>\", target);\n            if (key && target && typeof target === 'object' && key in target) {\n                target = target[key];\n                return find();\n            }\n            else if (!key) {\n                return target;\n            }\n            else {\n                return undefined;\n            }\n        }\n        Object.keys(this_config).forEach(function (key) {\n            target = config;\n            keys = key.split('_');\n            read = find();\n    //        console.log(\"CONFIG : \", key, read);\n            if (isDefined(read)) {\n                this_config[key] = read;\n            }\n        });\n    };\n\n    c3_chart_internal_fn.getScale = function (min, max, forTimeseries) {\n        return (forTimeseries ? this.d3.time.scale() : this.d3.scale.linear()).range([min, max]);\n    };\n    c3_chart_internal_fn.getX = function (min, max, domain, offset) {\n        var $$ = this,\n            scale = $$.getScale(min, max, $$.isTimeSeries()),\n            _scale = domain ? scale.domain(domain) : scale, key;\n        // Define customized scale if categorized axis\n        if ($$.isCategorized()) {\n            offset = offset || function () { return 0; };\n            scale = function (d, raw) {\n                var v = _scale(d) + offset(d);\n                return raw ? v : Math.ceil(v);\n            };\n        } else {\n            scale = function (d, raw) {\n                var v = _scale(d);\n                return raw ? v : Math.ceil(v);\n            };\n        }\n        // define functions\n        for (key in _scale) {\n            scale[key] = _scale[key];\n        }\n        scale.orgDomain = function () {\n            return _scale.domain();\n        };\n        // define custom domain() for categorized axis\n        if ($$.isCategorized()) {\n            scale.domain = function (domain) {\n                if (!arguments.length) {\n                    domain = this.orgDomain();\n                    return [domain[0], domain[1] + 1];\n                }\n                _scale.domain(domain);\n                return scale;\n            };\n        }\n        return scale;\n    };\n    c3_chart_internal_fn.getY = function (min, max, domain) {\n        var scale = this.getScale(min, max, this.isTimeSeriesY());\n        if (domain) { scale.domain(domain); }\n        return scale;\n    };\n    c3_chart_internal_fn.getYScale = function (id) {\n        return this.axis.getId(id) === 'y2' ? this.y2 : this.y;\n    };\n    c3_chart_internal_fn.getSubYScale = function (id) {\n        return this.axis.getId(id) === 'y2' ? this.subY2 : this.subY;\n    };\n    c3_chart_internal_fn.updateScales = function () {\n        var $$ = this, config = $$.config,\n            forInit = !$$.x;\n        // update edges\n        $$.xMin = config.axis_rotated ? 1 : 0;\n        $$.xMax = config.axis_rotated ? $$.height : $$.width;\n        $$.yMin = config.axis_rotated ? 0 : $$.height;\n        $$.yMax = config.axis_rotated ? $$.width : 1;\n        $$.subXMin = $$.xMin;\n        $$.subXMax = $$.xMax;\n        $$.subYMin = config.axis_rotated ? 0 : $$.height2;\n        $$.subYMax = config.axis_rotated ? $$.width2 : 1;\n        // update scales\n        $$.x = $$.getX($$.xMin, $$.xMax, forInit ? undefined : $$.x.orgDomain(), function () { return $$.xAxis.tickOffset(); });\n        $$.y = $$.getY($$.yMin, $$.yMax, forInit ? config.axis_y_default : $$.y.domain());\n        $$.y2 = $$.getY($$.yMin, $$.yMax, forInit ? config.axis_y2_default : $$.y2.domain());\n        $$.subX = $$.getX($$.xMin, $$.xMax, $$.orgXDomain, function (d) { return d % 1 ? 0 : $$.subXAxis.tickOffset(); });\n        $$.subY = $$.getY($$.subYMin, $$.subYMax, forInit ? config.axis_y_default : $$.subY.domain());\n        $$.subY2 = $$.getY($$.subYMin, $$.subYMax, forInit ? config.axis_y2_default : $$.subY2.domain());\n        // update axes\n        $$.xAxisTickFormat = $$.axis.getXAxisTickFormat();\n        $$.xAxisTickValues = $$.axis.getXAxisTickValues();\n        $$.yAxisTickValues = $$.axis.getYAxisTickValues();\n        $$.y2AxisTickValues = $$.axis.getY2AxisTickValues();\n\n        $$.xAxis = $$.axis.getXAxis($$.x, $$.xOrient, $$.xAxisTickFormat, $$.xAxisTickValues, config.axis_x_tick_outer);\n        $$.subXAxis = $$.axis.getXAxis($$.subX, $$.subXOrient, $$.xAxisTickFormat, $$.xAxisTickValues, config.axis_x_tick_outer);\n        $$.yAxis = $$.axis.getYAxis($$.y, $$.yOrient, config.axis_y_tick_format, $$.yAxisTickValues, config.axis_y_tick_outer);\n        $$.y2Axis = $$.axis.getYAxis($$.y2, $$.y2Orient, config.axis_y2_tick_format, $$.y2AxisTickValues, config.axis_y2_tick_outer);\n\n        // Set initialized scales to brush and zoom\n        if (!forInit) {\n            if ($$.brush) { $$.brush.scale($$.subX); }\n            if (config.zoom_enabled) { $$.zoom.scale($$.x); }\n        }\n        // update for arc\n        if ($$.updateArc) { $$.updateArc(); }\n    };\n\n    c3_chart_internal_fn.getYDomainMin = function (targets) {\n        var $$ = this, config = $$.config,\n            ids = $$.mapToIds(targets), ys = $$.getValuesAsIdKeyed(targets),\n            j, k, baseId, idsInGroup, id, hasNegativeValue;\n        if (config.data_groups.length > 0) {\n            hasNegativeValue = $$.hasNegativeValueInTargets(targets);\n            for (j = 0; j < config.data_groups.length; j++) {\n                // Determine baseId\n                idsInGroup = config.data_groups[j].filter(function (id) { return ids.indexOf(id) >= 0; });\n                if (idsInGroup.length === 0) { continue; }\n                baseId = idsInGroup[0];\n                // Consider negative values\n                if (hasNegativeValue && ys[baseId]) {\n                    ys[baseId].forEach(function (v, i) {\n                        ys[baseId][i] = v < 0 ? v : 0;\n                    });\n                }\n                // Compute min\n                for (k = 1; k < idsInGroup.length; k++) {\n                    id = idsInGroup[k];\n                    if (! ys[id]) { continue; }\n                    ys[id].forEach(function (v, i) {\n                        if ($$.axis.getId(id) === $$.axis.getId(baseId) && ys[baseId] && !(hasNegativeValue && +v > 0)) {\n                            ys[baseId][i] += +v;\n                        }\n                    });\n                }\n            }\n        }\n        return $$.d3.min(Object.keys(ys).map(function (key) { return $$.d3.min(ys[key]); }));\n    };\n    c3_chart_internal_fn.getYDomainMax = function (targets) {\n        var $$ = this, config = $$.config,\n            ids = $$.mapToIds(targets), ys = $$.getValuesAsIdKeyed(targets),\n            j, k, baseId, idsInGroup, id, hasPositiveValue;\n        if (config.data_groups.length > 0) {\n            hasPositiveValue = $$.hasPositiveValueInTargets(targets);\n            for (j = 0; j < config.data_groups.length; j++) {\n                // Determine baseId\n                idsInGroup = config.data_groups[j].filter(function (id) { return ids.indexOf(id) >= 0; });\n                if (idsInGroup.length === 0) { continue; }\n                baseId = idsInGroup[0];\n                // Consider positive values\n                if (hasPositiveValue && ys[baseId]) {\n                    ys[baseId].forEach(function (v, i) {\n                        ys[baseId][i] = v > 0 ? v : 0;\n                    });\n                }\n                // Compute max\n                for (k = 1; k < idsInGroup.length; k++) {\n                    id = idsInGroup[k];\n                    if (! ys[id]) { continue; }\n                    ys[id].forEach(function (v, i) {\n                        if ($$.axis.getId(id) === $$.axis.getId(baseId) && ys[baseId] && !(hasPositiveValue && +v < 0)) {\n                            ys[baseId][i] += +v;\n                        }\n                    });\n                }\n            }\n        }\n        return $$.d3.max(Object.keys(ys).map(function (key) { return $$.d3.max(ys[key]); }));\n    };\n    c3_chart_internal_fn.getYDomain = function (targets, axisId, xDomain) {\n        var $$ = this, config = $$.config,\n            targetsByAxisId = targets.filter(function (t) { return $$.axis.getId(t.id) === axisId; }),\n            yTargets = xDomain ? $$.filterByXDomain(targetsByAxisId, xDomain) : targetsByAxisId,\n            yMin = axisId === 'y2' ? config.axis_y2_min : config.axis_y_min,\n            yMax = axisId === 'y2' ? config.axis_y2_max : config.axis_y_max,\n            yDomainMin = $$.getYDomainMin(yTargets),\n            yDomainMax = $$.getYDomainMax(yTargets),\n            domain, domainLength, padding, padding_top, padding_bottom,\n            center = axisId === 'y2' ? config.axis_y2_center : config.axis_y_center,\n            yDomainAbs, lengths, diff, ratio, isAllPositive, isAllNegative,\n            isZeroBased = ($$.hasType('bar', yTargets) && config.bar_zerobased) || ($$.hasType('area', yTargets) && config.area_zerobased),\n            isInverted = axisId === 'y2' ? config.axis_y2_inverted : config.axis_y_inverted,\n            showHorizontalDataLabel = $$.hasDataLabel() && config.axis_rotated,\n            showVerticalDataLabel = $$.hasDataLabel() && !config.axis_rotated;\n\n        // MEMO: avoid inverting domain unexpectedly\n        yDomainMin = isValue(yMin) ? yMin : isValue(yMax) ? (yDomainMin < yMax ? yDomainMin : yMax - 10) : yDomainMin;\n        yDomainMax = isValue(yMax) ? yMax : isValue(yMin) ? (yMin < yDomainMax ? yDomainMax : yMin + 10) : yDomainMax;\n\n        if (yTargets.length === 0) { // use current domain if target of axisId is none\n            return axisId === 'y2' ? $$.y2.domain() : $$.y.domain();\n        }\n        if (isNaN(yDomainMin)) { // set minimum to zero when not number\n            yDomainMin = 0;\n        }\n        if (isNaN(yDomainMax)) { // set maximum to have same value as yDomainMin\n            yDomainMax = yDomainMin;\n        }\n        if (yDomainMin === yDomainMax) {\n            yDomainMin < 0 ? yDomainMax = 0 : yDomainMin = 0;\n        }\n        isAllPositive = yDomainMin >= 0 && yDomainMax >= 0;\n        isAllNegative = yDomainMin <= 0 && yDomainMax <= 0;\n\n        // Cancel zerobased if axis_*_min / axis_*_max specified\n        if ((isValue(yMin) && isAllPositive) || (isValue(yMax) && isAllNegative)) {\n            isZeroBased = false;\n        }\n\n        // Bar/Area chart should be 0-based if all positive|negative\n        if (isZeroBased) {\n            if (isAllPositive) { yDomainMin = 0; }\n            if (isAllNegative) { yDomainMax = 0; }\n        }\n\n        domainLength = Math.abs(yDomainMax - yDomainMin);\n        padding = padding_top = padding_bottom = domainLength * 0.1;\n\n        if (typeof center !== 'undefined') {\n            yDomainAbs = Math.max(Math.abs(yDomainMin), Math.abs(yDomainMax));\n            yDomainMax = center + yDomainAbs;\n            yDomainMin = center - yDomainAbs;\n        }\n        // add padding for data label\n        if (showHorizontalDataLabel) {\n            lengths = $$.getDataLabelLength(yDomainMin, yDomainMax, 'width');\n            diff = diffDomain($$.y.range());\n            ratio = [lengths[0] / diff, lengths[1] / diff];\n            padding_top += domainLength * (ratio[1] / (1 - ratio[0] - ratio[1]));\n            padding_bottom += domainLength * (ratio[0] / (1 - ratio[0] - ratio[1]));\n        } else if (showVerticalDataLabel) {\n            lengths = $$.getDataLabelLength(yDomainMin, yDomainMax, 'height');\n            padding_top += $$.axis.convertPixelsToAxisPadding(lengths[1], domainLength);\n            padding_bottom += $$.axis.convertPixelsToAxisPadding(lengths[0], domainLength);\n        }\n        if (axisId === 'y' && notEmpty(config.axis_y_padding)) {\n            padding_top = $$.axis.getPadding(config.axis_y_padding, 'top', padding_top, domainLength);\n            padding_bottom = $$.axis.getPadding(config.axis_y_padding, 'bottom', padding_bottom, domainLength);\n        }\n        if (axisId === 'y2' && notEmpty(config.axis_y2_padding)) {\n            padding_top = $$.axis.getPadding(config.axis_y2_padding, 'top', padding_top, domainLength);\n            padding_bottom = $$.axis.getPadding(config.axis_y2_padding, 'bottom', padding_bottom, domainLength);\n        }\n        // Bar/Area chart should be 0-based if all positive|negative\n        if (isZeroBased) {\n            if (isAllPositive) { padding_bottom = yDomainMin; }\n            if (isAllNegative) { padding_top = -yDomainMax; }\n        }\n        domain = [yDomainMin - padding_bottom, yDomainMax + padding_top];\n        return isInverted ? domain.reverse() : domain;\n    };\n    c3_chart_internal_fn.getXDomainMin = function (targets) {\n        var $$ = this, config = $$.config;\n        return isDefined(config.axis_x_min) ?\n            ($$.isTimeSeries() ? this.parseDate(config.axis_x_min) : config.axis_x_min) :\n        $$.d3.min(targets, function (t) { return $$.d3.min(t.values, function (v) { return v.x; }); });\n    };\n    c3_chart_internal_fn.getXDomainMax = function (targets) {\n        var $$ = this, config = $$.config;\n        return isDefined(config.axis_x_max) ?\n            ($$.isTimeSeries() ? this.parseDate(config.axis_x_max) : config.axis_x_max) :\n        $$.d3.max(targets, function (t) { return $$.d3.max(t.values, function (v) { return v.x; }); });\n    };\n    c3_chart_internal_fn.getXDomainPadding = function (domain) {\n        var $$ = this, config = $$.config,\n            diff = domain[1] - domain[0],\n            maxDataCount, padding, paddingLeft, paddingRight;\n        if ($$.isCategorized()) {\n            padding = 0;\n        } else if ($$.hasType('bar')) {\n            maxDataCount = $$.getMaxDataCount();\n            padding = maxDataCount > 1 ? (diff / (maxDataCount - 1)) / 2 : 0.5;\n        } else {\n            padding = diff * 0.01;\n        }\n        if (typeof config.axis_x_padding === 'object' && notEmpty(config.axis_x_padding)) {\n            paddingLeft = isValue(config.axis_x_padding.left) ? config.axis_x_padding.left : padding;\n            paddingRight = isValue(config.axis_x_padding.right) ? config.axis_x_padding.right : padding;\n        } else if (typeof config.axis_x_padding === 'number') {\n            paddingLeft = paddingRight = config.axis_x_padding;\n        } else {\n            paddingLeft = paddingRight = padding;\n        }\n        return {left: paddingLeft, right: paddingRight};\n    };\n    c3_chart_internal_fn.getXDomain = function (targets) {\n        var $$ = this,\n            xDomain = [$$.getXDomainMin(targets), $$.getXDomainMax(targets)],\n            firstX = xDomain[0], lastX = xDomain[1],\n            padding = $$.getXDomainPadding(xDomain),\n            min = 0, max = 0;\n        // show center of x domain if min and max are the same\n        if ((firstX - lastX) === 0 && !$$.isCategorized()) {\n            if ($$.isTimeSeries()) {\n                firstX = new Date(firstX.getTime() * 0.5);\n                lastX = new Date(lastX.getTime() * 1.5);\n            } else {\n                firstX = firstX === 0 ? 1 : (firstX * 0.5);\n                lastX = lastX === 0 ? -1 : (lastX * 1.5);\n            }\n        }\n        if (firstX || firstX === 0) {\n            min = $$.isTimeSeries() ? new Date(firstX.getTime() - padding.left) : firstX - padding.left;\n        }\n        if (lastX || lastX === 0) {\n            max = $$.isTimeSeries() ? new Date(lastX.getTime() + padding.right) : lastX + padding.right;\n        }\n        return [min, max];\n    };\n    c3_chart_internal_fn.updateXDomain = function (targets, withUpdateXDomain, withUpdateOrgXDomain, withTrim, domain) {\n        var $$ = this, config = $$.config;\n\n        if (withUpdateOrgXDomain) {\n            $$.x.domain(domain ? domain : $$.d3.extent($$.getXDomain(targets)));\n            $$.orgXDomain = $$.x.domain();\n            if (config.zoom_enabled) { $$.zoom.scale($$.x).updateScaleExtent(); }\n            $$.subX.domain($$.x.domain());\n            if ($$.brush) { $$.brush.scale($$.subX); }\n        }\n        if (withUpdateXDomain) {\n            $$.x.domain(domain ? domain : (!$$.brush || $$.brush.empty()) ? $$.orgXDomain : $$.brush.extent());\n            if (config.zoom_enabled) { $$.zoom.scale($$.x).updateScaleExtent(); }\n        }\n\n        // Trim domain when too big by zoom mousemove event\n        if (withTrim) { $$.x.domain($$.trimXDomain($$.x.orgDomain())); }\n\n        return $$.x.domain();\n    };\n    c3_chart_internal_fn.trimXDomain = function (domain) {\n        var zoomDomain = this.getZoomDomain(),\n            min = zoomDomain[0], max = zoomDomain[1];\n        if (domain[0] <= min) {\n            domain[1] = +domain[1] + (min - domain[0]);\n            domain[0] = min;\n        }\n        if (max <= domain[1]) {\n            domain[0] = +domain[0] - (domain[1] - max);\n            domain[1] = max;\n        }\n        return domain;\n    };\n\n    c3_chart_internal_fn.isX = function (key) {\n        var $$ = this, config = $$.config;\n        return (config.data_x && key === config.data_x) || (notEmpty(config.data_xs) && hasValue(config.data_xs, key));\n    };\n    c3_chart_internal_fn.isNotX = function (key) {\n        return !this.isX(key);\n    };\n    c3_chart_internal_fn.getXKey = function (id) {\n        var $$ = this, config = $$.config;\n        return config.data_x ? config.data_x : notEmpty(config.data_xs) ? config.data_xs[id] : null;\n    };\n    c3_chart_internal_fn.getXValuesOfXKey = function (key, targets) {\n        var $$ = this,\n            xValues, ids = targets && notEmpty(targets) ? $$.mapToIds(targets) : [];\n        ids.forEach(function (id) {\n            if ($$.getXKey(id) === key) {\n                xValues = $$.data.xs[id];\n            }\n        });\n        return xValues;\n    };\n    c3_chart_internal_fn.getIndexByX = function (x) {\n        var $$ = this,\n            data = $$.filterByX($$.data.targets, x);\n        return data.length ? data[0].index : null;\n    };\n    c3_chart_internal_fn.getXValue = function (id, i) {\n        var $$ = this;\n        return id in $$.data.xs && $$.data.xs[id] && isValue($$.data.xs[id][i]) ? $$.data.xs[id][i] : i;\n    };\n    c3_chart_internal_fn.getOtherTargetXs = function () {\n        var $$ = this,\n            idsForX = Object.keys($$.data.xs);\n        return idsForX.length ? $$.data.xs[idsForX[0]] : null;\n    };\n    c3_chart_internal_fn.getOtherTargetX = function (index) {\n        var xs = this.getOtherTargetXs();\n        return xs && index < xs.length ? xs[index] : null;\n    };\n    c3_chart_internal_fn.addXs = function (xs) {\n        var $$ = this;\n        Object.keys(xs).forEach(function (id) {\n            $$.config.data_xs[id] = xs[id];\n        });\n    };\n    c3_chart_internal_fn.hasMultipleX = function (xs) {\n        return this.d3.set(Object.keys(xs).map(function (id) { return xs[id]; })).size() > 1;\n    };\n    c3_chart_internal_fn.isMultipleX = function () {\n        return notEmpty(this.config.data_xs) || !this.config.data_xSort || this.hasType('scatter');\n    };\n    c3_chart_internal_fn.addName = function (data) {\n        var $$ = this, name;\n        if (data) {\n            name = $$.config.data_names[data.id];\n            data.name = name !== undefined ? name : data.id;\n        }\n        return data;\n    };\n    c3_chart_internal_fn.getValueOnIndex = function (values, index) {\n        var valueOnIndex = values.filter(function (v) { return v.index === index; });\n        return valueOnIndex.length ? valueOnIndex[0] : null;\n    };\n    c3_chart_internal_fn.updateTargetX = function (targets, x) {\n        var $$ = this;\n        targets.forEach(function (t) {\n            t.values.forEach(function (v, i) {\n                v.x = $$.generateTargetX(x[i], t.id, i);\n            });\n            $$.data.xs[t.id] = x;\n        });\n    };\n    c3_chart_internal_fn.updateTargetXs = function (targets, xs) {\n        var $$ = this;\n        targets.forEach(function (t) {\n            if (xs[t.id]) {\n                $$.updateTargetX([t], xs[t.id]);\n            }\n        });\n    };\n    c3_chart_internal_fn.generateTargetX = function (rawX, id, index) {\n        var $$ = this, x;\n        if ($$.isTimeSeries()) {\n            x = rawX ? $$.parseDate(rawX) : $$.parseDate($$.getXValue(id, index));\n        }\n        else if ($$.isCustomX() && !$$.isCategorized()) {\n            x = isValue(rawX) ? +rawX : $$.getXValue(id, index);\n        }\n        else {\n            x = index;\n        }\n        return x;\n    };\n    c3_chart_internal_fn.cloneTarget = function (target) {\n        return {\n            id : target.id,\n            id_org : target.id_org,\n            values : target.values.map(function (d) {\n                return {x: d.x, value: d.value, id: d.id};\n            })\n        };\n    };\n    c3_chart_internal_fn.updateXs = function () {\n        var $$ = this;\n        if ($$.data.targets.length) {\n            $$.xs = [];\n            $$.data.targets[0].values.forEach(function (v) {\n                $$.xs[v.index] = v.x;\n            });\n        }\n    };\n    c3_chart_internal_fn.getPrevX = function (i) {\n        var x = this.xs[i - 1];\n        return typeof x !== 'undefined' ? x : null;\n    };\n    c3_chart_internal_fn.getNextX = function (i) {\n        var x = this.xs[i + 1];\n        return typeof x !== 'undefined' ? x : null;\n    };\n    c3_chart_internal_fn.getMaxDataCount = function () {\n        var $$ = this;\n        return $$.d3.max($$.data.targets, function (t) { return t.values.length; });\n    };\n    c3_chart_internal_fn.getMaxDataCountTarget = function (targets) {\n        var length = targets.length, max = 0, maxTarget;\n        if (length > 1) {\n            targets.forEach(function (t) {\n                if (t.values.length > max) {\n                    maxTarget = t;\n                    max = t.values.length;\n                }\n            });\n        } else {\n            maxTarget = length ? targets[0] : null;\n        }\n        return maxTarget;\n    };\n    c3_chart_internal_fn.getEdgeX = function (targets) {\n        var $$ = this;\n        return !targets.length ? [0, 0] : [\n            $$.d3.min(targets, function (t) { return t.values[0].x; }),\n            $$.d3.max(targets, function (t) { return t.values[t.values.length - 1].x; })\n        ];\n    };\n    c3_chart_internal_fn.mapToIds = function (targets) {\n        return targets.map(function (d) { return d.id; });\n    };\n    c3_chart_internal_fn.mapToTargetIds = function (ids) {\n        var $$ = this;\n        return ids ? [].concat(ids) : $$.mapToIds($$.data.targets);\n    };\n    c3_chart_internal_fn.hasTarget = function (targets, id) {\n        var ids = this.mapToIds(targets), i;\n        for (i = 0; i < ids.length; i++) {\n            if (ids[i] === id) {\n                return true;\n            }\n        }\n        return false;\n    };\n    c3_chart_internal_fn.isTargetToShow = function (targetId) {\n        return this.hiddenTargetIds.indexOf(targetId) < 0;\n    };\n    c3_chart_internal_fn.isLegendToShow = function (targetId) {\n        return this.hiddenLegendIds.indexOf(targetId) < 0;\n    };\n    c3_chart_internal_fn.filterTargetsToShow = function (targets) {\n        var $$ = this;\n        return targets.filter(function (t) { return $$.isTargetToShow(t.id); });\n    };\n    c3_chart_internal_fn.mapTargetsToUniqueXs = function (targets) {\n        var $$ = this;\n        var xs = $$.d3.set($$.d3.merge(targets.map(function (t) { return t.values.map(function (v) { return +v.x; }); }))).values();\n        xs = $$.isTimeSeries() ? xs.map(function (x) { return new Date(+x); }) : xs.map(function (x) { return +x; });\n        return xs.sort(function (a, b) { return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN; });\n    };\n    c3_chart_internal_fn.addHiddenTargetIds = function (targetIds) {\n        this.hiddenTargetIds = this.hiddenTargetIds.concat(targetIds);\n    };\n    c3_chart_internal_fn.removeHiddenTargetIds = function (targetIds) {\n        this.hiddenTargetIds = this.hiddenTargetIds.filter(function (id) { return targetIds.indexOf(id) < 0; });\n    };\n    c3_chart_internal_fn.addHiddenLegendIds = function (targetIds) {\n        this.hiddenLegendIds = this.hiddenLegendIds.concat(targetIds);\n    };\n    c3_chart_internal_fn.removeHiddenLegendIds = function (targetIds) {\n        this.hiddenLegendIds = this.hiddenLegendIds.filter(function (id) { return targetIds.indexOf(id) < 0; });\n    };\n    c3_chart_internal_fn.getValuesAsIdKeyed = function (targets) {\n        var ys = {};\n        targets.forEach(function (t) {\n            ys[t.id] = [];\n            t.values.forEach(function (v) {\n                ys[t.id].push(v.value);\n            });\n        });\n        return ys;\n    };\n    c3_chart_internal_fn.checkValueInTargets = function (targets, checker) {\n        var ids = Object.keys(targets), i, j, values;\n        for (i = 0; i < ids.length; i++) {\n            values = targets[ids[i]].values;\n            for (j = 0; j < values.length; j++) {\n                if (checker(values[j].value)) {\n                    return true;\n                }\n            }\n        }\n        return false;\n    };\n    c3_chart_internal_fn.hasNegativeValueInTargets = function (targets) {\n        return this.checkValueInTargets(targets, function (v) { return v < 0; });\n    };\n    c3_chart_internal_fn.hasPositiveValueInTargets = function (targets) {\n        return this.checkValueInTargets(targets, function (v) { return v > 0; });\n    };\n    c3_chart_internal_fn.isOrderDesc = function () {\n        var config = this.config;\n        return typeof(config.data_order) === 'string' && config.data_order.toLowerCase() === 'desc';\n    };\n    c3_chart_internal_fn.isOrderAsc = function () {\n        var config = this.config;\n        return typeof(config.data_order) === 'string' && config.data_order.toLowerCase() === 'asc';\n    };\n    c3_chart_internal_fn.orderTargets = function (targets) {\n        var $$ = this, config = $$.config, orderAsc = $$.isOrderAsc(), orderDesc = $$.isOrderDesc();\n        if (orderAsc || orderDesc) {\n            targets.sort(function (t1, t2) {\n                var reducer = function (p, c) { return p + Math.abs(c.value); };\n                var t1Sum = t1.values.reduce(reducer, 0),\n                    t2Sum = t2.values.reduce(reducer, 0);\n                return orderAsc ? t2Sum - t1Sum : t1Sum - t2Sum;\n            });\n        } else if (isFunction(config.data_order)) {\n            targets.sort(config.data_order);\n        } // TODO: accept name array for order\n        return targets;\n    };\n    c3_chart_internal_fn.filterByX = function (targets, x) {\n        return this.d3.merge(targets.map(function (t) { return t.values; })).filter(function (v) { return v.x - x === 0; });\n    };\n    c3_chart_internal_fn.filterRemoveNull = function (data) {\n        return data.filter(function (d) { return isValue(d.value); });\n    };\n    c3_chart_internal_fn.filterByXDomain = function (targets, xDomain) {\n        return targets.map(function (t) {\n            return {\n                id: t.id,\n                id_org: t.id_org,\n                values: t.values.filter(function (v) {\n                    return xDomain[0] <= v.x && v.x <= xDomain[1];\n                })\n            };\n        });\n    };\n    c3_chart_internal_fn.hasDataLabel = function () {\n        var config = this.config;\n        if (typeof config.data_labels === 'boolean' && config.data_labels) {\n            return true;\n        } else if (typeof config.data_labels === 'object' && notEmpty(config.data_labels)) {\n            return true;\n        }\n        return false;\n    };\n    c3_chart_internal_fn.getDataLabelLength = function (min, max, key) {\n        var $$ = this,\n            lengths = [0, 0], paddingCoef = 1.3;\n        $$.selectChart.select('svg').selectAll('.dummy')\n            .data([min, max])\n            .enter().append('text')\n            .text(function (d) { return $$.dataLabelFormat(d.id)(d); })\n            .each(function (d, i) {\n                lengths[i] = this.getBoundingClientRect()[key] * paddingCoef;\n            })\n            .remove();\n        return lengths;\n    };\n    c3_chart_internal_fn.isNoneArc = function (d) {\n        return this.hasTarget(this.data.targets, d.id);\n    },\n    c3_chart_internal_fn.isArc = function (d) {\n        return 'data' in d && this.hasTarget(this.data.targets, d.data.id);\n    };\n    c3_chart_internal_fn.findSameXOfValues = function (values, index) {\n        var i, targetX = values[index].x, sames = [];\n        for (i = index - 1; i >= 0; i--) {\n            if (targetX !== values[i].x) { break; }\n            sames.push(values[i]);\n        }\n        for (i = index; i < values.length; i++) {\n            if (targetX !== values[i].x) { break; }\n            sames.push(values[i]);\n        }\n        return sames;\n    };\n\n    c3_chart_internal_fn.findClosestFromTargets = function (targets, pos) {\n        var $$ = this, candidates;\n\n        // map to array of closest points of each target\n        candidates = targets.map(function (target) {\n            return $$.findClosest(target.values, pos);\n        });\n\n        // decide closest point and return\n        return $$.findClosest(candidates, pos);\n    };\n    c3_chart_internal_fn.findClosest = function (values, pos) {\n        var $$ = this, minDist = $$.config.point_sensitivity, closest;\n\n        // find mouseovering bar\n        values.filter(function (v) { return v && $$.isBarType(v.id); }).forEach(function (v) {\n            var shape = $$.main.select('.' + CLASS.bars + $$.getTargetSelectorSuffix(v.id) + ' .' + CLASS.bar + '-' + v.index).node();\n            if (!closest && $$.isWithinBar(shape)) {\n                closest = v;\n            }\n        });\n\n        // find closest point from non-bar\n        values.filter(function (v) { return v && !$$.isBarType(v.id); }).forEach(function (v) {\n            var d = $$.dist(v, pos);\n            if (d < minDist) {\n                minDist = d;\n                closest = v;\n            }\n        });\n\n        return closest;\n    };\n    c3_chart_internal_fn.dist = function (data, pos) {\n        var $$ = this, config = $$.config,\n            xIndex = config.axis_rotated ? 1 : 0,\n            yIndex = config.axis_rotated ? 0 : 1,\n            y = $$.circleY(data, data.index),\n            x = $$.x(data.x);\n        return Math.sqrt(Math.pow(x - pos[xIndex], 2) + Math.pow(y - pos[yIndex], 2));\n    };\n    c3_chart_internal_fn.convertValuesToStep = function (values) {\n        var converted = [].concat(values), i;\n\n        if (!this.isCategorized()) {\n            return values;\n        }\n\n        for (i = values.length + 1; 0 < i; i--) {\n            converted[i] = converted[i - 1];\n        }\n\n        converted[0] = {\n            x: converted[0].x - 1,\n            value: converted[0].value,\n            id: converted[0].id\n        };\n        converted[values.length + 1] = {\n            x: converted[values.length].x + 1,\n            value: converted[values.length].value,\n            id: converted[values.length].id\n        };\n\n        return converted;\n    };\n    c3_chart_internal_fn.updateDataAttributes = function (name, attrs) {\n        var $$ = this, config = $$.config, current = config['data_' + name];\n        if (typeof attrs === 'undefined') { return current; }\n        Object.keys(attrs).forEach(function (id) {\n            current[id] = attrs[id];\n        });\n        $$.redraw({withLegend: true});\n        return current;\n    };\n\n    c3_chart_internal_fn.convertUrlToData = function (url, mimeType, headers, keys, done) {\n        var $$ = this, type = mimeType ? mimeType : 'csv';\n        var req = $$.d3.xhr(url);\n        if (headers) {\n            Object.keys(headers).forEach(function (header) {\n                req.header(header, headers[header]);\n            });\n        }\n        req.get(function (error, data) {\n            var d;\n            if (!data) {\n                throw new Error(error.responseURL + ' ' + error.status + ' (' + error.statusText + ')');\n            }\n            if (type === 'json') {\n                d = $$.convertJsonToData(JSON.parse(data.response), keys);\n            } else if (type === 'tsv') {\n                d = $$.convertTsvToData(data.response);\n            } else {\n                d = $$.convertCsvToData(data.response);\n            }\n            done.call($$, d);\n        });\n    };\n    c3_chart_internal_fn.convertXsvToData = function (xsv, parser) {\n        var rows = parser.parseRows(xsv), d;\n        if (rows.length === 1) {\n            d = [{}];\n            rows[0].forEach(function (id) {\n                d[0][id] = null;\n            });\n        } else {\n            d = parser.parse(xsv);\n        }\n        return d;\n    };\n    c3_chart_internal_fn.convertCsvToData = function (csv) {\n        return this.convertXsvToData(csv, this.d3.csv);\n    };\n    c3_chart_internal_fn.convertTsvToData = function (tsv) {\n        return this.convertXsvToData(tsv, this.d3.tsv);\n    };\n    c3_chart_internal_fn.convertJsonToData = function (json, keys) {\n        var $$ = this,\n            new_rows = [], targetKeys, data;\n        if (keys) { // when keys specified, json would be an array that includes objects\n            if (keys.x) {\n                targetKeys = keys.value.concat(keys.x);\n                $$.config.data_x = keys.x;\n            } else {\n                targetKeys = keys.value;\n            }\n            new_rows.push(targetKeys);\n            json.forEach(function (o) {\n                var new_row = [];\n                targetKeys.forEach(function (key) {\n                    // convert undefined to null because undefined data will be removed in convertDataToTargets()\n                    var v = $$.findValueInJson(o, key);\n                    if (isUndefined(v)) {\n                        v = null;\n                    }\n                    new_row.push(v);\n                });\n                new_rows.push(new_row);\n            });\n            data = $$.convertRowsToData(new_rows);\n        } else {\n            Object.keys(json).forEach(function (key) {\n                new_rows.push([key].concat(json[key]));\n            });\n            data = $$.convertColumnsToData(new_rows);\n        }\n        return data;\n    };\n    c3_chart_internal_fn.findValueInJson = function (object, path) {\n        path = path.replace(/\\[(\\w+)\\]/g, '.$1'); // convert indexes to properties (replace [] with .)\n        path = path.replace(/^\\./, '');           // strip a leading dot\n        var pathArray = path.split('.');\n        for (var i = 0; i < pathArray.length; ++i) {\n            var k = pathArray[i];\n            if (k in object) {\n                object = object[k];\n            } else {\n                return;\n            }\n        }\n        return object;\n    };\n    c3_chart_internal_fn.convertRowsToData = function (rows) {\n        var keys = rows[0], new_row = {}, new_rows = [], i, j;\n        for (i = 1; i < rows.length; i++) {\n            new_row = {};\n            for (j = 0; j < rows[i].length; j++) {\n                if (isUndefined(rows[i][j])) {\n                    throw new Error(\"Source data is missing a component at (\" + i + \",\" + j + \")!\");\n                }\n                new_row[keys[j]] = rows[i][j];\n            }\n            new_rows.push(new_row);\n        }\n        return new_rows;\n    };\n    c3_chart_internal_fn.convertColumnsToData = function (columns) {\n        var new_rows = [], i, j, key;\n        for (i = 0; i < columns.length; i++) {\n            key = columns[i][0];\n            for (j = 1; j < columns[i].length; j++) {\n                if (isUndefined(new_rows[j - 1])) {\n                    new_rows[j - 1] = {};\n                }\n                if (isUndefined(columns[i][j])) {\n                    throw new Error(\"Source data is missing a component at (\" + i + \",\" + j + \")!\");\n                }\n                new_rows[j - 1][key] = columns[i][j];\n            }\n        }\n        return new_rows;\n    };\n    c3_chart_internal_fn.convertDataToTargets = function (data, appendXs) {\n        var $$ = this, config = $$.config,\n            ids = $$.d3.keys(data[0]).filter($$.isNotX, $$),\n            xs = $$.d3.keys(data[0]).filter($$.isX, $$),\n            targets;\n\n        // save x for update data by load when custom x and c3.x API\n        ids.forEach(function (id) {\n            var xKey = $$.getXKey(id);\n\n            if ($$.isCustomX() || $$.isTimeSeries()) {\n                // if included in input data\n                if (xs.indexOf(xKey) >= 0) {\n                    $$.data.xs[id] = (appendXs && $$.data.xs[id] ? $$.data.xs[id] : []).concat(\n                        data.map(function (d) { return d[xKey]; })\n                            .filter(isValue)\n                            .map(function (rawX, i) { return $$.generateTargetX(rawX, id, i); })\n                    );\n                }\n                // if not included in input data, find from preloaded data of other id's x\n                else if (config.data_x) {\n                    $$.data.xs[id] = $$.getOtherTargetXs();\n                }\n                // if not included in input data, find from preloaded data\n                else if (notEmpty(config.data_xs)) {\n                    $$.data.xs[id] = $$.getXValuesOfXKey(xKey, $$.data.targets);\n                }\n                // MEMO: if no x included, use same x of current will be used\n            } else {\n                $$.data.xs[id] = data.map(function (d, i) { return i; });\n            }\n        });\n\n\n        // check x is defined\n        ids.forEach(function (id) {\n            if (!$$.data.xs[id]) {\n                throw new Error('x is not defined for id = \"' + id + '\".');\n            }\n        });\n\n        // convert to target\n        targets = ids.map(function (id, index) {\n            var convertedId = config.data_idConverter(id);\n            return {\n                id: convertedId,\n                id_org: id,\n                values: data.map(function (d, i) {\n                    var xKey = $$.getXKey(id), rawX = d[xKey],\n                        value = d[id] !== null && !isNaN(d[id]) ? +d[id] : null, x;\n                    // use x as categories if custom x and categorized\n                    if ($$.isCustomX() && $$.isCategorized() && index === 0 && !isUndefined(rawX)) {\n                        if (index === 0 && i === 0) {\n                            config.axis_x_categories = [];\n                        }\n                        x = config.axis_x_categories.indexOf(rawX);\n                        if (x === -1) {\n                            x = config.axis_x_categories.length;\n                            config.axis_x_categories.push(rawX);\n                        }\n                    } else {\n                        x  = $$.generateTargetX(rawX, id, i);\n                    }\n                    // mark as x = undefined if value is undefined and filter to remove after mapped\n                    if (isUndefined(d[id]) || $$.data.xs[id].length <= i) {\n                        x = undefined;\n                    }\n                    return {x: x, value: value, id: convertedId};\n                }).filter(function (v) { return isDefined(v.x); })\n            };\n        });\n\n        // finish targets\n        targets.forEach(function (t) {\n            var i;\n            // sort values by its x\n            if (config.data_xSort) {\n                t.values = t.values.sort(function (v1, v2) {\n                    var x1 = v1.x || v1.x === 0 ? v1.x : Infinity,\n                        x2 = v2.x || v2.x === 0 ? v2.x : Infinity;\n                    return x1 - x2;\n                });\n            }\n            // indexing each value\n            i = 0;\n            t.values.forEach(function (v) {\n                v.index = i++;\n            });\n            // this needs to be sorted because its index and value.index is identical\n            $$.data.xs[t.id].sort(function (v1, v2) {\n                return v1 - v2;\n            });\n        });\n\n        // cache information about values\n        $$.hasNegativeValue = $$.hasNegativeValueInTargets(targets);\n        $$.hasPositiveValue = $$.hasPositiveValueInTargets(targets);\n\n        // set target types\n        if (config.data_type) {\n            $$.setTargetType($$.mapToIds(targets).filter(function (id) { return ! (id in config.data_types); }), config.data_type);\n        }\n\n        // cache as original id keyed\n        targets.forEach(function (d) {\n            $$.addCache(d.id_org, d);\n        });\n\n        return targets;\n    };\n\n    c3_chart_internal_fn.load = function (targets, args) {\n        var $$ = this;\n        if (targets) {\n            // filter loading targets if needed\n            if (args.filter) {\n                targets = targets.filter(args.filter);\n            }\n            // set type if args.types || args.type specified\n            if (args.type || args.types) {\n                targets.forEach(function (t) {\n                    var type = args.types && args.types[t.id] ? args.types[t.id] : args.type;\n                    $$.setTargetType(t.id, type);\n                });\n            }\n            // Update/Add data\n            $$.data.targets.forEach(function (d) {\n                for (var i = 0; i < targets.length; i++) {\n                    if (d.id === targets[i].id) {\n                        d.values = targets[i].values;\n                        targets.splice(i, 1);\n                        break;\n                    }\n                }\n            });\n            $$.data.targets = $$.data.targets.concat(targets); // add remained\n        }\n\n        // Set targets\n        $$.updateTargets($$.data.targets);\n\n        // Redraw with new targets\n        $$.redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true, withLegend: true});\n\n        if (args.done) { args.done(); }\n    };\n    c3_chart_internal_fn.loadFromArgs = function (args) {\n        var $$ = this;\n        if (args.data) {\n            $$.load($$.convertDataToTargets(args.data), args);\n        }\n        else if (args.url) {\n            $$.convertUrlToData(args.url, args.mimeType, args.headers, args.keys, function (data) {\n                $$.load($$.convertDataToTargets(data), args);\n            });\n        }\n        else if (args.json) {\n            $$.load($$.convertDataToTargets($$.convertJsonToData(args.json, args.keys)), args);\n        }\n        else if (args.rows) {\n            $$.load($$.convertDataToTargets($$.convertRowsToData(args.rows)), args);\n        }\n        else if (args.columns) {\n            $$.load($$.convertDataToTargets($$.convertColumnsToData(args.columns)), args);\n        }\n        else {\n            $$.load(null, args);\n        }\n    };\n    c3_chart_internal_fn.unload = function (targetIds, done) {\n        var $$ = this;\n        if (!done) {\n            done = function () {};\n        }\n        // filter existing target\n        targetIds = targetIds.filter(function (id) { return $$.hasTarget($$.data.targets, id); });\n        // If no target, call done and return\n        if (!targetIds || targetIds.length === 0) {\n            done();\n            return;\n        }\n        $$.svg.selectAll(targetIds.map(function (id) { return $$.selectorTarget(id); }))\n            .transition()\n            .style('opacity', 0)\n            .remove()\n            .call($$.endall, done);\n        targetIds.forEach(function (id) {\n            // Reset fadein for future load\n            $$.withoutFadeIn[id] = false;\n            // Remove target's elements\n            if ($$.legend) {\n                $$.legend.selectAll('.' + CLASS.legendItem + $$.getTargetSelectorSuffix(id)).remove();\n            }\n            // Remove target\n            $$.data.targets = $$.data.targets.filter(function (t) {\n                return t.id !== id;\n            });\n        });\n    };\n\n    c3_chart_internal_fn.categoryName = function (i) {\n        var config = this.config;\n        return i < config.axis_x_categories.length ? config.axis_x_categories[i] : i;\n    };\n\n    c3_chart_internal_fn.initEventRect = function () {\n        var $$ = this;\n        $$.main.select('.' + CLASS.chart).append(\"g\")\n            .attr(\"class\", CLASS.eventRects)\n            .style('fill-opacity', 0);\n    };\n    c3_chart_internal_fn.redrawEventRect = function () {\n        var $$ = this, config = $$.config,\n            eventRectUpdate, maxDataCountTarget,\n            isMultipleX = $$.isMultipleX();\n\n        // rects for mouseover\n        var eventRects = $$.main.select('.' + CLASS.eventRects)\n                .style('cursor', config.zoom_enabled ? config.axis_rotated ? 'ns-resize' : 'ew-resize' : null)\n                .classed(CLASS.eventRectsMultiple, isMultipleX)\n                .classed(CLASS.eventRectsSingle, !isMultipleX);\n\n        // clear old rects\n        eventRects.selectAll('.' + CLASS.eventRect).remove();\n\n        // open as public variable\n        $$.eventRect = eventRects.selectAll('.' + CLASS.eventRect);\n\n        if (isMultipleX) {\n            eventRectUpdate = $$.eventRect.data([0]);\n            // enter : only one rect will be added\n            $$.generateEventRectsForMultipleXs(eventRectUpdate.enter());\n            // update\n            $$.updateEventRect(eventRectUpdate);\n            // exit : not needed because always only one rect exists\n        }\n        else {\n            // Set data and update $$.eventRect\n            maxDataCountTarget = $$.getMaxDataCountTarget($$.data.targets);\n            eventRects.datum(maxDataCountTarget ? maxDataCountTarget.values : []);\n            $$.eventRect = eventRects.selectAll('.' + CLASS.eventRect);\n            eventRectUpdate = $$.eventRect.data(function (d) { return d; });\n            // enter\n            $$.generateEventRectsForSingleX(eventRectUpdate.enter());\n            // update\n            $$.updateEventRect(eventRectUpdate);\n            // exit\n            eventRectUpdate.exit().remove();\n        }\n    };\n    c3_chart_internal_fn.updateEventRect = function (eventRectUpdate) {\n        var $$ = this, config = $$.config,\n            x, y, w, h, rectW, rectX;\n\n        // set update selection if null\n        eventRectUpdate = eventRectUpdate || $$.eventRect.data(function (d) { return d; });\n\n        if ($$.isMultipleX()) {\n            // TODO: rotated not supported yet\n            x = 0;\n            y = 0;\n            w = $$.width;\n            h = $$.height;\n        }\n        else {\n            if (($$.isCustomX() || $$.isTimeSeries()) && !$$.isCategorized()) {\n\n                // update index for x that is used by prevX and nextX\n                $$.updateXs();\n\n                rectW = function (d) {\n                    var prevX = $$.getPrevX(d.index), nextX = $$.getNextX(d.index);\n\n                    // if there this is a single data point make the eventRect full width (or height)\n                    if (prevX === null && nextX === null) {\n                        return config.axis_rotated ? $$.height : $$.width;\n                    }\n\n                    if (prevX === null) { prevX = $$.x.domain()[0]; }\n                    if (nextX === null) { nextX = $$.x.domain()[1]; }\n\n                    return Math.max(0, ($$.x(nextX) - $$.x(prevX)) / 2);\n                };\n                rectX = function (d) {\n                    var prevX = $$.getPrevX(d.index), nextX = $$.getNextX(d.index),\n                        thisX = $$.data.xs[d.id][d.index];\n\n                    // if there this is a single data point position the eventRect at 0\n                    if (prevX === null && nextX === null) {\n                        return 0;\n                    }\n\n                    if (prevX === null) { prevX = $$.x.domain()[0]; }\n\n                    return ($$.x(thisX) + $$.x(prevX)) / 2;\n                };\n            } else {\n                rectW = $$.getEventRectWidth();\n                rectX = function (d) {\n                    return $$.x(d.x) - (rectW / 2);\n                };\n            }\n            x = config.axis_rotated ? 0 : rectX;\n            y = config.axis_rotated ? rectX : 0;\n            w = config.axis_rotated ? $$.width : rectW;\n            h = config.axis_rotated ? rectW : $$.height;\n        }\n\n        eventRectUpdate\n            .attr('class', $$.classEvent.bind($$))\n            .attr(\"x\", x)\n            .attr(\"y\", y)\n            .attr(\"width\", w)\n            .attr(\"height\", h);\n    };\n    c3_chart_internal_fn.generateEventRectsForSingleX = function (eventRectEnter) {\n        var $$ = this, d3 = $$.d3, config = $$.config;\n        eventRectEnter.append(\"rect\")\n            .attr(\"class\", $$.classEvent.bind($$))\n            .style(\"cursor\", config.data_selection_enabled && config.data_selection_grouped ? \"pointer\" : null)\n            .on('mouseover', function (d) {\n                var index = d.index;\n\n                if ($$.dragging || $$.flowing) { return; } // do nothing while dragging/flowing\n                if ($$.hasArcType()) { return; }\n\n                // Expand shapes for selection\n                if (config.point_focus_expand_enabled) { $$.expandCircles(index, null, true); }\n                $$.expandBars(index, null, true);\n\n                // Call event handler\n                $$.main.selectAll('.' + CLASS.shape + '-' + index).each(function (d) {\n                    config.data_onmouseover.call($$.api, d);\n                });\n            })\n            .on('mouseout', function (d) {\n                var index = d.index;\n                if (!$$.config) { return; } // chart is destroyed\n                if ($$.hasArcType()) { return; }\n                $$.hideXGridFocus();\n                $$.hideTooltip();\n                // Undo expanded shapes\n                $$.unexpandCircles();\n                $$.unexpandBars();\n                // Call event handler\n                $$.main.selectAll('.' + CLASS.shape + '-' + index).each(function (d) {\n                    config.data_onmouseout.call($$.api, d);\n                });\n            })\n            .on('mousemove', function (d) {\n                var selectedData, index = d.index,\n                    eventRect = $$.svg.select('.' + CLASS.eventRect + '-' + index);\n\n                if ($$.dragging || $$.flowing) { return; } // do nothing while dragging/flowing\n                if ($$.hasArcType()) { return; }\n\n                if ($$.isStepType(d) && $$.config.line_step_type === 'step-after' && d3.mouse(this)[0] < $$.x($$.getXValue(d.id, index))) {\n                    index -= 1;\n                }\n\n                // Show tooltip\n                selectedData = $$.filterTargetsToShow($$.data.targets).map(function (t) {\n                    return $$.addName($$.getValueOnIndex(t.values, index));\n                });\n\n                if (config.tooltip_grouped) {\n                    $$.showTooltip(selectedData, this);\n                    $$.showXGridFocus(selectedData);\n                }\n\n                if (config.tooltip_grouped && (!config.data_selection_enabled || config.data_selection_grouped)) {\n                    return;\n                }\n\n                $$.main.selectAll('.' + CLASS.shape + '-' + index)\n                    .each(function () {\n                        d3.select(this).classed(CLASS.EXPANDED, true);\n                        if (config.data_selection_enabled) {\n                            eventRect.style('cursor', config.data_selection_grouped ? 'pointer' : null);\n                        }\n                        if (!config.tooltip_grouped) {\n                            $$.hideXGridFocus();\n                            $$.hideTooltip();\n                            if (!config.data_selection_grouped) {\n                                $$.unexpandCircles(index);\n                                $$.unexpandBars(index);\n                            }\n                        }\n                    })\n                    .filter(function (d) {\n                        return $$.isWithinShape(this, d);\n                    })\n                    .each(function (d) {\n                        if (config.data_selection_enabled && (config.data_selection_grouped || config.data_selection_isselectable(d))) {\n                            eventRect.style('cursor', 'pointer');\n                        }\n                        if (!config.tooltip_grouped) {\n                            $$.showTooltip([d], this);\n                            $$.showXGridFocus([d]);\n                            if (config.point_focus_expand_enabled) { $$.expandCircles(index, d.id, true); }\n                            $$.expandBars(index, d.id, true);\n                        }\n                    });\n            })\n            .on('click', function (d) {\n                var index = d.index;\n                if ($$.hasArcType() || !$$.toggleShape) { return; }\n                if ($$.cancelClick) {\n                    $$.cancelClick = false;\n                    return;\n                }\n                if ($$.isStepType(d) && config.line_step_type === 'step-after' && d3.mouse(this)[0] < $$.x($$.getXValue(d.id, index))) {\n                    index -= 1;\n                }\n                $$.main.selectAll('.' + CLASS.shape + '-' + index).each(function (d) {\n                    if (config.data_selection_grouped || $$.isWithinShape(this, d)) {\n                        $$.toggleShape(this, d, index);\n                        $$.config.data_onclick.call($$.api, d, this);\n                    }\n                });\n            })\n            .call(\n                config.data_selection_draggable && $$.drag ? (\n                    d3.behavior.drag().origin(Object)\n                        .on('drag', function () { $$.drag(d3.mouse(this)); })\n                        .on('dragstart', function () { $$.dragstart(d3.mouse(this)); })\n                        .on('dragend', function () { $$.dragend(); })\n                ) : function () {}\n            );\n    };\n\n    c3_chart_internal_fn.generateEventRectsForMultipleXs = function (eventRectEnter) {\n        var $$ = this, d3 = $$.d3, config = $$.config;\n\n        function mouseout() {\n            $$.svg.select('.' + CLASS.eventRect).style('cursor', null);\n            $$.hideXGridFocus();\n            $$.hideTooltip();\n            $$.unexpandCircles();\n            $$.unexpandBars();\n        }\n\n        eventRectEnter.append('rect')\n            .attr('x', 0)\n            .attr('y', 0)\n            .attr('width', $$.width)\n            .attr('height', $$.height)\n            .attr('class', CLASS.eventRect)\n            .on('mouseout', function () {\n                if (!$$.config) { return; } // chart is destroyed\n                if ($$.hasArcType()) { return; }\n                mouseout();\n            })\n            .on('mousemove', function () {\n                var targetsToShow = $$.filterTargetsToShow($$.data.targets);\n                var mouse, closest, sameXData, selectedData;\n\n                if ($$.dragging) { return; } // do nothing when dragging\n                if ($$.hasArcType(targetsToShow)) { return; }\n\n                mouse = d3.mouse(this);\n                closest = $$.findClosestFromTargets(targetsToShow, mouse);\n\n                if ($$.mouseover && (!closest || closest.id !== $$.mouseover.id)) {\n                    config.data_onmouseout.call($$.api, $$.mouseover);\n                    $$.mouseover = undefined;\n                }\n\n                if (! closest) {\n                    mouseout();\n                    return;\n                }\n\n                if ($$.isScatterType(closest) || !config.tooltip_grouped) {\n                    sameXData = [closest];\n                } else {\n                    sameXData = $$.filterByX(targetsToShow, closest.x);\n                }\n\n                // show tooltip when cursor is close to some point\n                selectedData = sameXData.map(function (d) {\n                    return $$.addName(d);\n                });\n                $$.showTooltip(selectedData, this);\n\n                // expand points\n                if (config.point_focus_expand_enabled) {\n                    $$.expandCircles(closest.index, closest.id, true);\n                }\n                $$.expandBars(closest.index, closest.id, true);\n\n                // Show xgrid focus line\n                $$.showXGridFocus(selectedData);\n\n                // Show cursor as pointer if point is close to mouse position\n                if ($$.isBarType(closest.id) || $$.dist(closest, mouse) < config.point_sensitivity) {\n                    $$.svg.select('.' + CLASS.eventRect).style('cursor', 'pointer');\n                    if (!$$.mouseover) {\n                        config.data_onmouseover.call($$.api, closest);\n                        $$.mouseover = closest;\n                    }\n                }\n            })\n            .on('click', function () {\n                var targetsToShow = $$.filterTargetsToShow($$.data.targets);\n                var mouse, closest;\n                if ($$.hasArcType(targetsToShow)) { return; }\n\n                mouse = d3.mouse(this);\n                closest = $$.findClosestFromTargets(targetsToShow, mouse);\n                if (! closest) { return; }\n                // select if selection enabled\n                if ($$.isBarType(closest.id) || $$.dist(closest, mouse) < config.point_sensitivity) {\n                    $$.main.selectAll('.' + CLASS.shapes + $$.getTargetSelectorSuffix(closest.id)).selectAll('.' + CLASS.shape + '-' + closest.index).each(function () {\n                        if (config.data_selection_grouped || $$.isWithinShape(this, closest)) {\n                            $$.toggleShape(this, closest, closest.index);\n                            $$.config.data_onclick.call($$.api, closest, this);\n                        }\n                    });\n                }\n            })\n            .call(\n                config.data_selection_draggable && $$.drag ? (\n                    d3.behavior.drag().origin(Object)\n                        .on('drag', function () { $$.drag(d3.mouse(this)); })\n                        .on('dragstart', function () { $$.dragstart(d3.mouse(this)); })\n                        .on('dragend', function () { $$.dragend(); })\n                ) : function () {}\n            );\n    };\n    c3_chart_internal_fn.dispatchEvent = function (type, index, mouse) {\n        var $$ = this,\n            selector = '.' + CLASS.eventRect + (!$$.isMultipleX() ? '-' + index : ''),\n            eventRect = $$.main.select(selector).node(),\n            box = eventRect.getBoundingClientRect(),\n            x = box.left + (mouse ? mouse[0] : 0),\n            y = box.top + (mouse ? mouse[1] : 0),\n            event = document.createEvent(\"MouseEvents\");\n\n        event.initMouseEvent(type, true, true, window, 0, x, y, x, y,\n                             false, false, false, false, 0, null);\n        eventRect.dispatchEvent(event);\n    };\n\n    c3_chart_internal_fn.getCurrentWidth = function () {\n        var $$ = this, config = $$.config;\n        return config.size_width ? config.size_width : $$.getParentWidth();\n    };\n    c3_chart_internal_fn.getCurrentHeight = function () {\n        var $$ = this, config = $$.config,\n            h = config.size_height ? config.size_height : $$.getParentHeight();\n        return h > 0 ? h : 320 / ($$.hasType('gauge') && !config.gauge_fullCircle ? 2 : 1); \n    };\n    c3_chart_internal_fn.getCurrentPaddingTop = function () {\n        var $$ = this,\n            config = $$.config,\n            padding = isValue(config.padding_top) ? config.padding_top : 0;\n        if ($$.title && $$.title.node()) {\n            padding += $$.getTitlePadding();\n        }\n        return padding;\n    };\n    c3_chart_internal_fn.getCurrentPaddingBottom = function () {\n        var config = this.config;\n        return isValue(config.padding_bottom) ? config.padding_bottom : 0;\n    };\n    c3_chart_internal_fn.getCurrentPaddingLeft = function (withoutRecompute) {\n        var $$ = this, config = $$.config;\n        if (isValue(config.padding_left)) {\n            return config.padding_left;\n        } else if (config.axis_rotated) {\n            return !config.axis_x_show ? 1 : Math.max(ceil10($$.getAxisWidthByAxisId('x', withoutRecompute)), 40);\n        } else if (!config.axis_y_show || config.axis_y_inner) { // && !config.axis_rotated\n            return $$.axis.getYAxisLabelPosition().isOuter ? 30 : 1;\n        } else {\n            return ceil10($$.getAxisWidthByAxisId('y', withoutRecompute));\n        }\n    };\n    c3_chart_internal_fn.getCurrentPaddingRight = function () {\n        var $$ = this, config = $$.config,\n            defaultPadding = 10, legendWidthOnRight = $$.isLegendRight ? $$.getLegendWidth() + 20 : 0;\n        if (isValue(config.padding_right)) {\n            return config.padding_right + 1; // 1 is needed not to hide tick line\n        } else if (config.axis_rotated) {\n            return defaultPadding + legendWidthOnRight;\n        } else if (!config.axis_y2_show || config.axis_y2_inner) { // && !config.axis_rotated\n            return 2 + legendWidthOnRight + ($$.axis.getY2AxisLabelPosition().isOuter ? 20 : 0);\n        } else {\n            return ceil10($$.getAxisWidthByAxisId('y2')) + legendWidthOnRight;\n        }\n    };\n\n    c3_chart_internal_fn.getParentRectValue = function (key) {\n        var parent = this.selectChart.node(), v;\n        while (parent && parent.tagName !== 'BODY') {\n            try {\n                v = parent.getBoundingClientRect()[key];\n            } catch(e) {\n                if (key === 'width') {\n                    // In IE in certain cases getBoundingClientRect\n                    // will cause an \"unspecified error\"\n                    v = parent.offsetWidth;\n                }\n            }\n            if (v) {\n                break;\n            }\n            parent = parent.parentNode;\n        }\n        return v;\n    };\n    c3_chart_internal_fn.getParentWidth = function () {\n        return this.getParentRectValue('width');\n    };\n    c3_chart_internal_fn.getParentHeight = function () {\n        var h = this.selectChart.style('height');\n        return h.indexOf('px') > 0 ? +h.replace('px', '') : 0;\n    };\n\n\n    c3_chart_internal_fn.getSvgLeft = function (withoutRecompute) {\n        var $$ = this, config = $$.config,\n            hasLeftAxisRect = config.axis_rotated || (!config.axis_rotated && !config.axis_y_inner),\n            leftAxisClass = config.axis_rotated ? CLASS.axisX : CLASS.axisY,\n            leftAxis = $$.main.select('.' + leftAxisClass).node(),\n            svgRect = leftAxis && hasLeftAxisRect ? leftAxis.getBoundingClientRect() : {right: 0},\n            chartRect = $$.selectChart.node().getBoundingClientRect(),\n            hasArc = $$.hasArcType(),\n            svgLeft = svgRect.right - chartRect.left - (hasArc ? 0 : $$.getCurrentPaddingLeft(withoutRecompute));\n        return svgLeft > 0 ? svgLeft : 0;\n    };\n\n\n    c3_chart_internal_fn.getAxisWidthByAxisId = function (id, withoutRecompute) {\n        var $$ = this, position = $$.axis.getLabelPositionById(id);\n        return $$.axis.getMaxTickWidth(id, withoutRecompute) + (position.isInner ? 20 : 40);\n    };\n    c3_chart_internal_fn.getHorizontalAxisHeight = function (axisId) {\n        var $$ = this, config = $$.config, h = 30;\n        if (axisId === 'x' && !config.axis_x_show) { return 8; }\n        if (axisId === 'x' && config.axis_x_height) { return config.axis_x_height; }\n        if (axisId === 'y' && !config.axis_y_show) { \n            return config.legend_show && !$$.isLegendRight && !$$.isLegendInset ? 10 : 1; \n        }\n        if (axisId === 'y2' && !config.axis_y2_show) { return $$.rotated_padding_top; }\n        // Calculate x axis height when tick rotated\n        if (axisId === 'x' && !config.axis_rotated && config.axis_x_tick_rotate) {\n            h = 30 + $$.axis.getMaxTickWidth(axisId) * Math.cos(Math.PI * (90 - config.axis_x_tick_rotate) / 180);\n        }\n        // Calculate y axis height when tick rotated\n        if (axisId === 'y' && config.axis_rotated && config.axis_y_tick_rotate) {\n            h = 30 + $$.axis.getMaxTickWidth(axisId) * Math.cos(Math.PI * (90 - config.axis_y_tick_rotate) / 180);\n        }\n        return h + ($$.axis.getLabelPositionById(axisId).isInner ? 0 : 10) + (axisId === 'y2' ? -10 : 0);\n    };\n\n    c3_chart_internal_fn.getEventRectWidth = function () {\n        return Math.max(0, this.xAxis.tickInterval());\n    };\n\n    c3_chart_internal_fn.getShapeIndices = function (typeFilter) {\n        var $$ = this, config = $$.config,\n            indices = {}, i = 0, j, k;\n        $$.filterTargetsToShow($$.data.targets.filter(typeFilter, $$)).forEach(function (d) {\n            for (j = 0; j < config.data_groups.length; j++) {\n                if (config.data_groups[j].indexOf(d.id) < 0) { continue; }\n                for (k = 0; k < config.data_groups[j].length; k++) {\n                    if (config.data_groups[j][k] in indices) {\n                        indices[d.id] = indices[config.data_groups[j][k]];\n                        break;\n                    }\n                }\n            }\n            if (isUndefined(indices[d.id])) { indices[d.id] = i++; }\n        });\n        indices.__max__ = i - 1;\n        return indices;\n    };\n    c3_chart_internal_fn.getShapeX = function (offset, targetsNum, indices, isSub) {\n        var $$ = this, scale = isSub ? $$.subX : $$.x;\n        return function (d) {\n            var index = d.id in indices ? indices[d.id] : 0;\n            return d.x || d.x === 0 ? scale(d.x) - offset * (targetsNum / 2 - index) : 0;\n        };\n    };\n    c3_chart_internal_fn.getShapeY = function (isSub) {\n        var $$ = this;\n        return function (d) {\n            var scale = isSub ? $$.getSubYScale(d.id) : $$.getYScale(d.id);\n            return scale(d.value);\n        };\n    };\n    c3_chart_internal_fn.getShapeOffset = function (typeFilter, indices, isSub) {\n        var $$ = this,\n            targets = $$.orderTargets($$.filterTargetsToShow($$.data.targets.filter(typeFilter, $$))),\n            targetIds = targets.map(function (t) { return t.id; });\n        return function (d, i) {\n            var scale = isSub ? $$.getSubYScale(d.id) : $$.getYScale(d.id),\n                y0 = scale(0), offset = y0;\n            targets.forEach(function (t) {\n                var values = $$.isStepType(d) ? $$.convertValuesToStep(t.values) : t.values;\n                if (t.id === d.id || indices[t.id] !== indices[d.id]) { return; }\n                if (targetIds.indexOf(t.id) < targetIds.indexOf(d.id)) {\n                    // check if the x values line up\n                    if (typeof values[i] === 'undefined' || +values[i].x !== +d.x) {  // \"+\" for timeseries\n                        // if not, try to find the value that does line up\n                        i = -1;\n                        values.forEach(function (v, j) {\n                            if (v.x === d.x) {\n                                i = j;\n                            }\n                        });\n                    }\n                    if (i in values && values[i].value * d.value >= 0) {\n                        offset += scale(values[i].value) - y0;\n                    }\n                }\n            });\n            return offset;\n        };\n    };\n    c3_chart_internal_fn.isWithinShape = function (that, d) {\n        var $$ = this,\n            shape = $$.d3.select(that), isWithin;\n        if (!$$.isTargetToShow(d.id)) {\n            isWithin = false;\n        }\n        else if (that.nodeName === 'circle') {\n            isWithin = $$.isStepType(d) ? $$.isWithinStep(that, $$.getYScale(d.id)(d.value)) : $$.isWithinCircle(that, $$.pointSelectR(d) * 1.5);\n        }\n        else if (that.nodeName === 'path') {\n            isWithin = shape.classed(CLASS.bar) ? $$.isWithinBar(that) : true;\n        }\n        return isWithin;\n    };\n\n\n    c3_chart_internal_fn.getInterpolate = function (d) {\n        var $$ = this,\n            interpolation = $$.isInterpolationType($$.config.spline_interpolation_type) ? $$.config.spline_interpolation_type : 'cardinal';\n        return $$.isSplineType(d) ? interpolation : $$.isStepType(d) ? $$.config.line_step_type : \"linear\";\n    };\n\n    c3_chart_internal_fn.initLine = function () {\n        var $$ = this;\n        $$.main.select('.' + CLASS.chart).append(\"g\")\n            .attr(\"class\", CLASS.chartLines);\n    };\n    c3_chart_internal_fn.updateTargetsForLine = function (targets) {\n        var $$ = this, config = $$.config,\n            mainLineUpdate, mainLineEnter,\n            classChartLine = $$.classChartLine.bind($$),\n            classLines = $$.classLines.bind($$),\n            classAreas = $$.classAreas.bind($$),\n            classCircles = $$.classCircles.bind($$),\n            classFocus = $$.classFocus.bind($$);\n        mainLineUpdate = $$.main.select('.' + CLASS.chartLines).selectAll('.' + CLASS.chartLine)\n            .data(targets)\n            .attr('class', function (d) { return classChartLine(d) + classFocus(d); });\n        mainLineEnter = mainLineUpdate.enter().append('g')\n            .attr('class', classChartLine)\n            .style('opacity', 0)\n            .style(\"pointer-events\", \"none\");\n        // Lines for each data\n        mainLineEnter.append('g')\n            .attr(\"class\", classLines);\n        // Areas\n        mainLineEnter.append('g')\n            .attr('class', classAreas);\n        // Circles for each data point on lines\n        mainLineEnter.append('g')\n            .attr(\"class\", function (d) { return $$.generateClass(CLASS.selectedCircles, d.id); });\n        mainLineEnter.append('g')\n            .attr(\"class\", classCircles)\n            .style(\"cursor\", function (d) { return config.data_selection_isselectable(d) ? \"pointer\" : null; });\n        // Update date for selected circles\n        targets.forEach(function (t) {\n            $$.main.selectAll('.' + CLASS.selectedCircles + $$.getTargetSelectorSuffix(t.id)).selectAll('.' + CLASS.selectedCircle).each(function (d) {\n                d.value = t.values[d.index].value;\n            });\n        });\n        // MEMO: can not keep same color...\n        //mainLineUpdate.exit().remove();\n    };\n    c3_chart_internal_fn.updateLine = function (durationForExit) {\n        var $$ = this;\n        $$.mainLine = $$.main.selectAll('.' + CLASS.lines).selectAll('.' + CLASS.line)\n            .data($$.lineData.bind($$));\n        $$.mainLine.enter().append('path')\n            .attr('class', $$.classLine.bind($$))\n            .style(\"stroke\", $$.color);\n        $$.mainLine\n            .style(\"opacity\", $$.initialOpacity.bind($$))\n            .style('shape-rendering', function (d) { return $$.isStepType(d) ? 'crispEdges' : ''; })\n            .attr('transform', null);\n        $$.mainLine.exit().transition().duration(durationForExit)\n            .style('opacity', 0)\n            .remove();\n    };\n    c3_chart_internal_fn.redrawLine = function (drawLine, withTransition) {\n        return [\n            (withTransition ? this.mainLine.transition(Math.random().toString()) : this.mainLine)\n                .attr(\"d\", drawLine)\n                .style(\"stroke\", this.color)\n                .style(\"opacity\", 1)\n        ];\n    };\n    c3_chart_internal_fn.generateDrawLine = function (lineIndices, isSub) {\n        var $$ = this, config = $$.config,\n            line = $$.d3.svg.line(),\n            getPoints = $$.generateGetLinePoints(lineIndices, isSub),\n            yScaleGetter = isSub ? $$.getSubYScale : $$.getYScale,\n            xValue = function (d) { return (isSub ? $$.subxx : $$.xx).call($$, d); },\n            yValue = function (d, i) {\n                return config.data_groups.length > 0 ? getPoints(d, i)[0][1] : yScaleGetter.call($$, d.id)(d.value);\n            };\n\n        line = config.axis_rotated ? line.x(yValue).y(xValue) : line.x(xValue).y(yValue);\n        if (!config.line_connectNull) { line = line.defined(function (d) { return d.value != null; }); }\n        return function (d) {\n            var values = config.line_connectNull ? $$.filterRemoveNull(d.values) : d.values,\n                x = isSub ? $$.x : $$.subX, y = yScaleGetter.call($$, d.id), x0 = 0, y0 = 0, path;\n            if ($$.isLineType(d)) {\n                if (config.data_regions[d.id]) {\n                    path = $$.lineWithRegions(values, x, y, config.data_regions[d.id]);\n                } else {\n                    if ($$.isStepType(d)) { values = $$.convertValuesToStep(values); }\n                    path = line.interpolate($$.getInterpolate(d))(values);\n                }\n            } else {\n                if (values[0]) {\n                    x0 = x(values[0].x);\n                    y0 = y(values[0].value);\n                }\n                path = config.axis_rotated ? \"M \" + y0 + \" \" + x0 : \"M \" + x0 + \" \" + y0;\n            }\n            return path ? path : \"M 0 0\";\n        };\n    };\n    c3_chart_internal_fn.generateGetLinePoints = function (lineIndices, isSub) { // partial duplication of generateGetBarPoints\n        var $$ = this, config = $$.config,\n            lineTargetsNum = lineIndices.__max__ + 1,\n            x = $$.getShapeX(0, lineTargetsNum, lineIndices, !!isSub),\n            y = $$.getShapeY(!!isSub),\n            lineOffset = $$.getShapeOffset($$.isLineType, lineIndices, !!isSub),\n            yScale = isSub ? $$.getSubYScale : $$.getYScale;\n        return function (d, i) {\n            var y0 = yScale.call($$, d.id)(0),\n                offset = lineOffset(d, i) || y0, // offset is for stacked area chart\n                posX = x(d), posY = y(d);\n            // fix posY not to overflow opposite quadrant\n            if (config.axis_rotated) {\n                if ((0 < d.value && posY < y0) || (d.value < 0 && y0 < posY)) { posY = y0; }\n            }\n            // 1 point that marks the line position\n            return [\n                [posX, posY - (y0 - offset)],\n                [posX, posY - (y0 - offset)], // needed for compatibility\n                [posX, posY - (y0 - offset)], // needed for compatibility\n                [posX, posY - (y0 - offset)]  // needed for compatibility\n            ];\n        };\n    };\n\n\n    c3_chart_internal_fn.lineWithRegions = function (d, x, y, _regions) {\n        var $$ = this, config = $$.config,\n            prev = -1, i, j,\n            s = \"M\", sWithRegion,\n            xp, yp, dx, dy, dd, diff, diffx2,\n            xOffset = $$.isCategorized() ? 0.5 : 0,\n            xValue, yValue,\n            regions = [];\n\n        function isWithinRegions(x, regions) {\n            var i;\n            for (i = 0; i < regions.length; i++) {\n                if (regions[i].start < x && x <= regions[i].end) { return true; }\n            }\n            return false;\n        }\n\n        // Check start/end of regions\n        if (isDefined(_regions)) {\n            for (i = 0; i < _regions.length; i++) {\n                regions[i] = {};\n                if (isUndefined(_regions[i].start)) {\n                    regions[i].start = d[0].x;\n                } else {\n                    regions[i].start = $$.isTimeSeries() ? $$.parseDate(_regions[i].start) : _regions[i].start;\n                }\n                if (isUndefined(_regions[i].end)) {\n                    regions[i].end = d[d.length - 1].x;\n                } else {\n                    regions[i].end = $$.isTimeSeries() ? $$.parseDate(_regions[i].end) : _regions[i].end;\n                }\n            }\n        }\n\n        // Set scales\n        xValue = config.axis_rotated ? function (d) { return y(d.value); } : function (d) { return x(d.x); };\n        yValue = config.axis_rotated ? function (d) { return x(d.x); } : function (d) { return y(d.value); };\n\n        // Define svg generator function for region\n        function generateM(points) {\n            return 'M' + points[0][0] + ' ' + points[0][1] + ' ' + points[1][0] + ' ' + points[1][1];\n        }\n        if ($$.isTimeSeries()) {\n            sWithRegion = function (d0, d1, j, diff) {\n                var x0 = d0.x.getTime(), x_diff = d1.x - d0.x,\n                    xv0 = new Date(x0 + x_diff * j),\n                    xv1 = new Date(x0 + x_diff * (j + diff)),\n                    points;\n                if (config.axis_rotated) {\n                    points = [[y(yp(j)), x(xv0)], [y(yp(j + diff)), x(xv1)]];\n                } else {\n                    points = [[x(xv0), y(yp(j))], [x(xv1), y(yp(j + diff))]];\n                }\n                return generateM(points);\n            };\n        } else {\n            sWithRegion = function (d0, d1, j, diff) {\n                var points;\n                if (config.axis_rotated) {\n                    points = [[y(yp(j), true), x(xp(j))], [y(yp(j + diff), true), x(xp(j + diff))]];\n                } else {\n                    points = [[x(xp(j), true), y(yp(j))], [x(xp(j + diff), true), y(yp(j + diff))]];\n                }\n                return generateM(points);\n            };\n        }\n\n        // Generate\n        for (i = 0; i < d.length; i++) {\n\n            // Draw as normal\n            if (isUndefined(regions) || ! isWithinRegions(d[i].x, regions)) {\n                s += \" \" + xValue(d[i]) + \" \" + yValue(d[i]);\n            }\n            // Draw with region // TODO: Fix for horizotal charts\n            else {\n                xp = $$.getScale(d[i - 1].x + xOffset, d[i].x + xOffset, $$.isTimeSeries());\n                yp = $$.getScale(d[i - 1].value, d[i].value);\n\n                dx = x(d[i].x) - x(d[i - 1].x);\n                dy = y(d[i].value) - y(d[i - 1].value);\n                dd = Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2));\n                diff = 2 / dd;\n                diffx2 = diff * 2;\n\n                for (j = diff; j <= 1; j += diffx2) {\n                    s += sWithRegion(d[i - 1], d[i], j, diff);\n                }\n            }\n            prev = d[i].x;\n        }\n\n        return s;\n    };\n\n\n    c3_chart_internal_fn.updateArea = function (durationForExit) {\n        var $$ = this, d3 = $$.d3;\n        $$.mainArea = $$.main.selectAll('.' + CLASS.areas).selectAll('.' + CLASS.area)\n            .data($$.lineData.bind($$));\n        $$.mainArea.enter().append('path')\n            .attr(\"class\", $$.classArea.bind($$))\n            .style(\"fill\", $$.color)\n            .style(\"opacity\", function () { $$.orgAreaOpacity = +d3.select(this).style('opacity'); return 0; });\n        $$.mainArea\n            .style(\"opacity\", $$.orgAreaOpacity);\n        $$.mainArea.exit().transition().duration(durationForExit)\n            .style('opacity', 0)\n            .remove();\n    };\n    c3_chart_internal_fn.redrawArea = function (drawArea, withTransition) {\n        return [\n            (withTransition ? this.mainArea.transition(Math.random().toString()) : this.mainArea)\n                .attr(\"d\", drawArea)\n                .style(\"fill\", this.color)\n                .style(\"opacity\", this.orgAreaOpacity)\n        ];\n    };\n    c3_chart_internal_fn.generateDrawArea = function (areaIndices, isSub) {\n        var $$ = this, config = $$.config, area = $$.d3.svg.area(),\n            getPoints = $$.generateGetAreaPoints(areaIndices, isSub),\n            yScaleGetter = isSub ? $$.getSubYScale : $$.getYScale,\n            xValue = function (d) { return (isSub ? $$.subxx : $$.xx).call($$, d); },\n            value0 = function (d, i) {\n                return config.data_groups.length > 0 ? getPoints(d, i)[0][1] : yScaleGetter.call($$, d.id)($$.getAreaBaseValue(d.id));\n            },\n            value1 = function (d, i) {\n                return config.data_groups.length > 0 ? getPoints(d, i)[1][1] : yScaleGetter.call($$, d.id)(d.value);\n            };\n\n        area = config.axis_rotated ? area.x0(value0).x1(value1).y(xValue) : area.x(xValue).y0(config.area_above ? 0 : value0).y1(value1);\n        if (!config.line_connectNull) {\n            area = area.defined(function (d) { return d.value !== null; });\n        }\n\n        return function (d) {\n            var values = config.line_connectNull ? $$.filterRemoveNull(d.values) : d.values,\n                x0 = 0, y0 = 0, path;\n            if ($$.isAreaType(d)) {\n                if ($$.isStepType(d)) { values = $$.convertValuesToStep(values); }\n                path = area.interpolate($$.getInterpolate(d))(values);\n            } else {\n                if (values[0]) {\n                    x0 = $$.x(values[0].x);\n                    y0 = $$.getYScale(d.id)(values[0].value);\n                }\n                path = config.axis_rotated ? \"M \" + y0 + \" \" + x0 : \"M \" + x0 + \" \" + y0;\n            }\n            return path ? path : \"M 0 0\";\n        };\n    };\n    c3_chart_internal_fn.getAreaBaseValue = function () {\n        return 0;\n    };\n    c3_chart_internal_fn.generateGetAreaPoints = function (areaIndices, isSub) { // partial duplication of generateGetBarPoints\n        var $$ = this, config = $$.config,\n            areaTargetsNum = areaIndices.__max__ + 1,\n            x = $$.getShapeX(0, areaTargetsNum, areaIndices, !!isSub),\n            y = $$.getShapeY(!!isSub),\n            areaOffset = $$.getShapeOffset($$.isAreaType, areaIndices, !!isSub),\n            yScale = isSub ? $$.getSubYScale : $$.getYScale;\n        return function (d, i) {\n            var y0 = yScale.call($$, d.id)(0),\n                offset = areaOffset(d, i) || y0, // offset is for stacked area chart\n                posX = x(d), posY = y(d);\n            // fix posY not to overflow opposite quadrant\n            if (config.axis_rotated) {\n                if ((0 < d.value && posY < y0) || (d.value < 0 && y0 < posY)) { posY = y0; }\n            }\n            // 1 point that marks the area position\n            return [\n                [posX, offset],\n                [posX, posY - (y0 - offset)],\n                [posX, posY - (y0 - offset)], // needed for compatibility\n                [posX, offset] // needed for compatibility\n            ];\n        };\n    };\n\n\n    c3_chart_internal_fn.updateCircle = function () {\n        var $$ = this;\n        $$.mainCircle = $$.main.selectAll('.' + CLASS.circles).selectAll('.' + CLASS.circle)\n            .data($$.lineOrScatterData.bind($$));\n        $$.mainCircle.enter().append(\"circle\")\n            .attr(\"class\", $$.classCircle.bind($$))\n            .attr(\"r\", $$.pointR.bind($$))\n            .style(\"fill\", $$.color);\n        $$.mainCircle\n            .style(\"opacity\", $$.initialOpacityForCircle.bind($$));\n        $$.mainCircle.exit().remove();\n    };\n    c3_chart_internal_fn.redrawCircle = function (cx, cy, withTransition) {\n        var selectedCircles = this.main.selectAll('.' + CLASS.selectedCircle);\n        return [\n            (withTransition ? this.mainCircle.transition(Math.random().toString()) : this.mainCircle)\n                .style('opacity', this.opacityForCircle.bind(this))\n                .style(\"fill\", this.color)\n                .attr(\"cx\", cx)\n                .attr(\"cy\", cy),\n            (withTransition ? selectedCircles.transition(Math.random().toString()) : selectedCircles)\n                .attr(\"cx\", cx)\n                .attr(\"cy\", cy)\n        ];\n    };\n    c3_chart_internal_fn.circleX = function (d) {\n        return d.x || d.x === 0 ? this.x(d.x) : null;\n    };\n    c3_chart_internal_fn.updateCircleY = function () {\n        var $$ = this, lineIndices, getPoints;\n        if ($$.config.data_groups.length > 0) {\n            lineIndices = $$.getShapeIndices($$.isLineType),\n            getPoints = $$.generateGetLinePoints(lineIndices);\n            $$.circleY = function (d, i) {\n                return getPoints(d, i)[0][1];\n            };\n        } else {\n            $$.circleY = function (d) {\n                return $$.getYScale(d.id)(d.value);\n            };\n        }\n    };\n    c3_chart_internal_fn.getCircles = function (i, id) {\n        var $$ = this;\n        return (id ? $$.main.selectAll('.' + CLASS.circles + $$.getTargetSelectorSuffix(id)) : $$.main).selectAll('.' + CLASS.circle + (isValue(i) ? '-' + i : ''));\n    };\n    c3_chart_internal_fn.expandCircles = function (i, id, reset) {\n        var $$ = this,\n            r = $$.pointExpandedR.bind($$);\n        if (reset) { $$.unexpandCircles(); }\n        $$.getCircles(i, id)\n            .classed(CLASS.EXPANDED, true)\n            .attr('r', r);\n    };\n    c3_chart_internal_fn.unexpandCircles = function (i) {\n        var $$ = this,\n            r = $$.pointR.bind($$);\n        $$.getCircles(i)\n            .filter(function () { return $$.d3.select(this).classed(CLASS.EXPANDED); })\n            .classed(CLASS.EXPANDED, false)\n            .attr('r', r);\n    };\n    c3_chart_internal_fn.pointR = function (d) {\n        var $$ = this, config = $$.config;\n        return $$.isStepType(d) ? 0 : (isFunction(config.point_r) ? config.point_r(d) : config.point_r);\n    };\n    c3_chart_internal_fn.pointExpandedR = function (d) {\n        var $$ = this, config = $$.config;\n        return config.point_focus_expand_enabled ? (config.point_focus_expand_r ? config.point_focus_expand_r : $$.pointR(d) * 1.75) : $$.pointR(d);\n    };\n    c3_chart_internal_fn.pointSelectR = function (d) {\n        var $$ = this, config = $$.config;\n        return isFunction(config.point_select_r) ? config.point_select_r(d) : ((config.point_select_r) ? config.point_select_r : $$.pointR(d) * 4);\n    };\n    c3_chart_internal_fn.isWithinCircle = function (that, r) {\n        var d3 = this.d3,\n            mouse = d3.mouse(that), d3_this = d3.select(that),\n            cx = +d3_this.attr(\"cx\"), cy = +d3_this.attr(\"cy\");\n        return Math.sqrt(Math.pow(cx - mouse[0], 2) + Math.pow(cy - mouse[1], 2)) < r;\n    };\n    c3_chart_internal_fn.isWithinStep = function (that, y) {\n        return Math.abs(y - this.d3.mouse(that)[1]) < 30;\n    };\n\n    c3_chart_internal_fn.initBar = function () {\n        var $$ = this;\n        $$.main.select('.' + CLASS.chart).append(\"g\")\n            .attr(\"class\", CLASS.chartBars);\n    };\n    c3_chart_internal_fn.updateTargetsForBar = function (targets) {\n        var $$ = this, config = $$.config,\n            mainBarUpdate, mainBarEnter,\n            classChartBar = $$.classChartBar.bind($$),\n            classBars = $$.classBars.bind($$),\n            classFocus = $$.classFocus.bind($$);\n        mainBarUpdate = $$.main.select('.' + CLASS.chartBars).selectAll('.' + CLASS.chartBar)\n            .data(targets)\n            .attr('class', function (d) { return classChartBar(d) + classFocus(d); });\n        mainBarEnter = mainBarUpdate.enter().append('g')\n            .attr('class', classChartBar)\n            .style('opacity', 0)\n            .style(\"pointer-events\", \"none\");\n        // Bars for each data\n        mainBarEnter.append('g')\n            .attr(\"class\", classBars)\n            .style(\"cursor\", function (d) { return config.data_selection_isselectable(d) ? \"pointer\" : null; });\n\n    };\n    c3_chart_internal_fn.updateBar = function (durationForExit) {\n        var $$ = this,\n            barData = $$.barData.bind($$),\n            classBar = $$.classBar.bind($$),\n            initialOpacity = $$.initialOpacity.bind($$),\n            color = function (d) { return $$.color(d.id); };\n        $$.mainBar = $$.main.selectAll('.' + CLASS.bars).selectAll('.' + CLASS.bar)\n            .data(barData);\n        $$.mainBar.enter().append('path')\n            .attr(\"class\", classBar)\n            .style(\"stroke\", color)\n            .style(\"fill\", color);\n        $$.mainBar\n            .style(\"opacity\", initialOpacity);\n        $$.mainBar.exit().transition().duration(durationForExit)\n            .style('opacity', 0)\n            .remove();\n    };\n    c3_chart_internal_fn.redrawBar = function (drawBar, withTransition) {\n        return [\n            (withTransition ? this.mainBar.transition(Math.random().toString()) : this.mainBar)\n                .attr('d', drawBar)\n                .style(\"fill\", this.color)\n                .style(\"opacity\", 1)\n        ];\n    };\n    c3_chart_internal_fn.getBarW = function (axis, barTargetsNum) {\n        var $$ = this, config = $$.config,\n            w = typeof config.bar_width === 'number' ? config.bar_width : barTargetsNum ? (axis.tickInterval() * config.bar_width_ratio) / barTargetsNum : 0;\n        return config.bar_width_max && w > config.bar_width_max ? config.bar_width_max : w;\n    };\n    c3_chart_internal_fn.getBars = function (i, id) {\n        var $$ = this;\n        return (id ? $$.main.selectAll('.' + CLASS.bars + $$.getTargetSelectorSuffix(id)) : $$.main).selectAll('.' + CLASS.bar + (isValue(i) ? '-' + i : ''));\n    };\n    c3_chart_internal_fn.expandBars = function (i, id, reset) {\n        var $$ = this;\n        if (reset) { $$.unexpandBars(); }\n        $$.getBars(i, id).classed(CLASS.EXPANDED, true);\n    };\n    c3_chart_internal_fn.unexpandBars = function (i) {\n        var $$ = this;\n        $$.getBars(i).classed(CLASS.EXPANDED, false);\n    };\n    c3_chart_internal_fn.generateDrawBar = function (barIndices, isSub) {\n        var $$ = this, config = $$.config,\n            getPoints = $$.generateGetBarPoints(barIndices, isSub);\n        return function (d, i) {\n            // 4 points that make a bar\n            var points = getPoints(d, i);\n\n            // switch points if axis is rotated, not applicable for sub chart\n            var indexX = config.axis_rotated ? 1 : 0;\n            var indexY = config.axis_rotated ? 0 : 1;\n\n            var path = 'M ' + points[0][indexX] + ',' + points[0][indexY] + ' ' +\n                    'L' + points[1][indexX] + ',' + points[1][indexY] + ' ' +\n                    'L' + points[2][indexX] + ',' + points[2][indexY] + ' ' +\n                    'L' + points[3][indexX] + ',' + points[3][indexY] + ' ' +\n                    'z';\n\n            return path;\n        };\n    };\n    c3_chart_internal_fn.generateGetBarPoints = function (barIndices, isSub) {\n        var $$ = this,\n            axis = isSub ? $$.subXAxis : $$.xAxis,\n            barTargetsNum = barIndices.__max__ + 1,\n            barW = $$.getBarW(axis, barTargetsNum),\n            barX = $$.getShapeX(barW, barTargetsNum, barIndices, !!isSub),\n            barY = $$.getShapeY(!!isSub),\n            barOffset = $$.getShapeOffset($$.isBarType, barIndices, !!isSub),\n            yScale = isSub ? $$.getSubYScale : $$.getYScale;\n        return function (d, i) {\n            var y0 = yScale.call($$, d.id)(0),\n                offset = barOffset(d, i) || y0, // offset is for stacked bar chart\n                posX = barX(d), posY = barY(d);\n            // fix posY not to overflow opposite quadrant\n            if ($$.config.axis_rotated) {\n                if ((0 < d.value && posY < y0) || (d.value < 0 && y0 < posY)) { posY = y0; }\n            }\n            // 4 points that make a bar\n            return [\n                [posX, offset],\n                [posX, posY - (y0 - offset)],\n                [posX + barW, posY - (y0 - offset)],\n                [posX + barW, offset]\n            ];\n        };\n    };\n    c3_chart_internal_fn.isWithinBar = function (that) {\n        var mouse = this.d3.mouse(that), box = that.getBoundingClientRect(),\n            seg0 = that.pathSegList.getItem(0), seg1 = that.pathSegList.getItem(1),\n            x = Math.min(seg0.x, seg1.x), y = Math.min(seg0.y, seg1.y),\n            w = box.width, h = box.height, offset = 2,\n            sx = x - offset, ex = x + w + offset, sy = y + h + offset, ey = y - offset;\n        return sx < mouse[0] && mouse[0] < ex && ey < mouse[1] && mouse[1] < sy;\n    };\n\n    c3_chart_internal_fn.initText = function () {\n        var $$ = this;\n        $$.main.select('.' + CLASS.chart).append(\"g\")\n            .attr(\"class\", CLASS.chartTexts);\n        $$.mainText = $$.d3.selectAll([]);\n    };\n    c3_chart_internal_fn.updateTargetsForText = function (targets) {\n        var $$ = this, mainTextUpdate, mainTextEnter,\n            classChartText = $$.classChartText.bind($$),\n            classTexts = $$.classTexts.bind($$),\n            classFocus = $$.classFocus.bind($$);\n        mainTextUpdate = $$.main.select('.' + CLASS.chartTexts).selectAll('.' + CLASS.chartText)\n            .data(targets)\n            .attr('class', function (d) { return classChartText(d) + classFocus(d); });\n        mainTextEnter = mainTextUpdate.enter().append('g')\n            .attr('class', classChartText)\n            .style('opacity', 0)\n            .style(\"pointer-events\", \"none\");\n        mainTextEnter.append('g')\n            .attr('class', classTexts);\n    };\n    c3_chart_internal_fn.updateText = function (durationForExit) {\n        var $$ = this, config = $$.config,\n            barOrLineData = $$.barOrLineData.bind($$),\n            classText = $$.classText.bind($$);\n        $$.mainText = $$.main.selectAll('.' + CLASS.texts).selectAll('.' + CLASS.text)\n            .data(barOrLineData);\n        $$.mainText.enter().append('text')\n            .attr(\"class\", classText)\n            .attr('text-anchor', function (d) { return config.axis_rotated ? (d.value < 0 ? 'end' : 'start') : 'middle'; })\n            .style(\"stroke\", 'none')\n            .style(\"fill\", function (d) { return $$.color(d); })\n            .style(\"fill-opacity\", 0);\n        $$.mainText\n            .text(function (d, i, j) { return $$.dataLabelFormat(d.id)(d.value, d.id, i, j); });\n        $$.mainText.exit()\n            .transition().duration(durationForExit)\n            .style('fill-opacity', 0)\n            .remove();\n    };\n    c3_chart_internal_fn.redrawText = function (xForText, yForText, forFlow, withTransition) {\n        return [\n            (withTransition ? this.mainText.transition() : this.mainText)\n                .attr('x', xForText)\n                .attr('y', yForText)\n                .style(\"fill\", this.color)\n                .style(\"fill-opacity\", forFlow ? 0 : this.opacityForText.bind(this))\n        ];\n    };\n    c3_chart_internal_fn.getTextRect = function (text, cls, element) {\n        var dummy = this.d3.select('body').append('div').classed('c3', true),\n            svg = dummy.append(\"svg\").style('visibility', 'hidden').style('position', 'fixed').style('top', 0).style('left', 0),\n            font = this.d3.select(element).style('font'),\n            rect;\n        svg.selectAll('.dummy')\n            .data([text])\n          .enter().append('text')\n            .classed(cls ? cls : \"\", true)\n            .style('font', font)\n            .text(text)\n          .each(function () { rect = this.getBoundingClientRect(); });\n        dummy.remove();\n        return rect;\n    };\n    c3_chart_internal_fn.generateXYForText = function (areaIndices, barIndices, lineIndices, forX) {\n        var $$ = this,\n            getAreaPoints = $$.generateGetAreaPoints(areaIndices, false),\n            getBarPoints = $$.generateGetBarPoints(barIndices, false),\n            getLinePoints = $$.generateGetLinePoints(lineIndices, false),\n            getter = forX ? $$.getXForText : $$.getYForText;\n        return function (d, i) {\n            var getPoints = $$.isAreaType(d) ? getAreaPoints : $$.isBarType(d) ? getBarPoints : getLinePoints;\n            return getter.call($$, getPoints(d, i), d, this);\n        };\n    };\n    c3_chart_internal_fn.getXForText = function (points, d, textElement) {\n        var $$ = this,\n            box = textElement.getBoundingClientRect(), xPos, padding;\n        if ($$.config.axis_rotated) {\n            padding = $$.isBarType(d) ? 4 : 6;\n            xPos = points[2][1] + padding * (d.value < 0 ? -1 : 1);\n        } else {\n            xPos = $$.hasType('bar') ? (points[2][0] + points[0][0]) / 2 : points[0][0];\n        }\n        // show labels regardless of the domain if value is null\n        if (d.value === null) {\n            if (xPos > $$.width) {\n                xPos = $$.width - box.width;\n            } else if (xPos < 0) {\n                xPos = 4;\n            }\n        }\n        return xPos;\n    };\n    c3_chart_internal_fn.getYForText = function (points, d, textElement) {\n        var $$ = this,\n            box = textElement.getBoundingClientRect(),\n            yPos;\n        if ($$.config.axis_rotated) {\n            yPos = (points[0][0] + points[2][0] + box.height * 0.6) / 2;\n        } else {\n            yPos = points[2][1];\n            if (d.value < 0  || (d.value === 0 && !$$.hasPositiveValue)) {\n                yPos += box.height;\n                if ($$.isBarType(d) && $$.isSafari()) {\n                    yPos -= 3;\n                }\n                else if (!$$.isBarType(d) && $$.isChrome()) {\n                    yPos += 3;\n                }\n            } else {\n                yPos += $$.isBarType(d) ? -3 : -6;\n            }\n        }\n        // show labels regardless of the domain if value is null\n        if (d.value === null && !$$.config.axis_rotated) {\n            if (yPos < box.height) {\n                yPos = box.height;\n            } else if (yPos > this.height) {\n                yPos = this.height - 4;\n            }\n        }\n        return yPos;\n    };\n\n    c3_chart_internal_fn.setTargetType = function (targetIds, type) {\n        var $$ = this, config = $$.config;\n        $$.mapToTargetIds(targetIds).forEach(function (id) {\n            $$.withoutFadeIn[id] = (type === config.data_types[id]);\n            config.data_types[id] = type;\n        });\n        if (!targetIds) {\n            config.data_type = type;\n        }\n    };\n    c3_chart_internal_fn.hasType = function (type, targets) {\n        var $$ = this, types = $$.config.data_types, has = false;\n        targets = targets || $$.data.targets;\n        if (targets && targets.length) {\n            targets.forEach(function (target) {\n                var t = types[target.id];\n                if ((t && t.indexOf(type) >= 0) || (!t && type === 'line')) {\n                    has = true;\n                }\n            });\n        } else if (Object.keys(types).length) {\n            Object.keys(types).forEach(function (id) {\n                if (types[id] === type) { has = true; }\n            });\n        } else {\n            has = $$.config.data_type === type;\n        }\n        return has;\n    };\n    c3_chart_internal_fn.hasArcType = function (targets) {\n        return this.hasType('pie', targets) || this.hasType('donut', targets) || this.hasType('gauge', targets);\n    };\n    c3_chart_internal_fn.isLineType = function (d) {\n        var config = this.config, id = isString(d) ? d : d.id;\n        return !config.data_types[id] || ['line', 'spline', 'area', 'area-spline', 'step', 'area-step'].indexOf(config.data_types[id]) >= 0;\n    };\n    c3_chart_internal_fn.isStepType = function (d) {\n        var id = isString(d) ? d : d.id;\n        return ['step', 'area-step'].indexOf(this.config.data_types[id]) >= 0;\n    };\n    c3_chart_internal_fn.isSplineType = function (d) {\n        var id = isString(d) ? d : d.id;\n        return ['spline', 'area-spline'].indexOf(this.config.data_types[id]) >= 0;\n    };\n    c3_chart_internal_fn.isAreaType = function (d) {\n        var id = isString(d) ? d : d.id;\n        return ['area', 'area-spline', 'area-step'].indexOf(this.config.data_types[id]) >= 0;\n    };\n    c3_chart_internal_fn.isBarType = function (d) {\n        var id = isString(d) ? d : d.id;\n        return this.config.data_types[id] === 'bar';\n    };\n    c3_chart_internal_fn.isScatterType = function (d) {\n        var id = isString(d) ? d : d.id;\n        return this.config.data_types[id] === 'scatter';\n    };\n    c3_chart_internal_fn.isPieType = function (d) {\n        var id = isString(d) ? d : d.id;\n        return this.config.data_types[id] === 'pie';\n    };\n    c3_chart_internal_fn.isGaugeType = function (d) {\n        var id = isString(d) ? d : d.id;\n        return this.config.data_types[id] === 'gauge';\n    };\n    c3_chart_internal_fn.isDonutType = function (d) {\n        var id = isString(d) ? d : d.id;\n        return this.config.data_types[id] === 'donut';\n    };\n    c3_chart_internal_fn.isArcType = function (d) {\n        return this.isPieType(d) || this.isDonutType(d) || this.isGaugeType(d);\n    };\n    c3_chart_internal_fn.lineData = function (d) {\n        return this.isLineType(d) ? [d] : [];\n    };\n    c3_chart_internal_fn.arcData = function (d) {\n        return this.isArcType(d.data) ? [d] : [];\n    };\n    /* not used\n     function scatterData(d) {\n     return isScatterType(d) ? d.values : [];\n     }\n     */\n    c3_chart_internal_fn.barData = function (d) {\n        return this.isBarType(d) ? d.values : [];\n    };\n    c3_chart_internal_fn.lineOrScatterData = function (d) {\n        return this.isLineType(d) || this.isScatterType(d) ? d.values : [];\n    };\n    c3_chart_internal_fn.barOrLineData = function (d) {\n        return this.isBarType(d) || this.isLineType(d) ? d.values : [];\n    };\n    c3_chart_internal_fn.isInterpolationType = function (type) {\n        return ['linear', 'linear-closed', 'basis', 'basis-open', 'basis-closed', 'bundle', 'cardinal', 'cardinal-open', 'cardinal-closed', 'monotone'].indexOf(type) >= 0;\n    };\n\n    c3_chart_internal_fn.initGrid = function () {\n        var $$ = this, config = $$.config, d3 = $$.d3;\n        $$.grid = $$.main.append('g')\n            .attr(\"clip-path\", $$.clipPathForGrid)\n            .attr('class', CLASS.grid);\n        if (config.grid_x_show) {\n            $$.grid.append(\"g\").attr(\"class\", CLASS.xgrids);\n        }\n        if (config.grid_y_show) {\n            $$.grid.append('g').attr('class', CLASS.ygrids);\n        }\n        if (config.grid_focus_show) {\n            $$.grid.append('g')\n                .attr(\"class\", CLASS.xgridFocus)\n                .append('line')\n                .attr('class', CLASS.xgridFocus);\n        }\n        $$.xgrid = d3.selectAll([]);\n        if (!config.grid_lines_front) { $$.initGridLines(); }\n    };\n    c3_chart_internal_fn.initGridLines = function () {\n        var $$ = this, d3 = $$.d3;\n        $$.gridLines = $$.main.append('g')\n            .attr(\"clip-path\", $$.clipPathForGrid)\n            .attr('class', CLASS.grid + ' ' + CLASS.gridLines);\n        $$.gridLines.append('g').attr(\"class\", CLASS.xgridLines);\n        $$.gridLines.append('g').attr('class', CLASS.ygridLines);\n        $$.xgridLines = d3.selectAll([]);\n    };\n    c3_chart_internal_fn.updateXGrid = function (withoutUpdate) {\n        var $$ = this, config = $$.config, d3 = $$.d3,\n            xgridData = $$.generateGridData(config.grid_x_type, $$.x),\n            tickOffset = $$.isCategorized() ? $$.xAxis.tickOffset() : 0;\n\n        $$.xgridAttr = config.axis_rotated ? {\n            'x1': 0,\n            'x2': $$.width,\n            'y1': function (d) { return $$.x(d) - tickOffset; },\n            'y2': function (d) { return $$.x(d) - tickOffset; }\n        } : {\n            'x1': function (d) { return $$.x(d) + tickOffset; },\n            'x2': function (d) { return $$.x(d) + tickOffset; },\n            'y1': 0,\n            'y2': $$.height\n        };\n\n        $$.xgrid = $$.main.select('.' + CLASS.xgrids).selectAll('.' + CLASS.xgrid)\n            .data(xgridData);\n        $$.xgrid.enter().append('line').attr(\"class\", CLASS.xgrid);\n        if (!withoutUpdate) {\n            $$.xgrid.attr($$.xgridAttr)\n                .style(\"opacity\", function () { return +d3.select(this).attr(config.axis_rotated ? 'y1' : 'x1') === (config.axis_rotated ? $$.height : 0) ? 0 : 1; });\n        }\n        $$.xgrid.exit().remove();\n    };\n\n    c3_chart_internal_fn.updateYGrid = function () {\n        var $$ = this, config = $$.config,\n            gridValues = $$.yAxis.tickValues() || $$.y.ticks(config.grid_y_ticks);\n        $$.ygrid = $$.main.select('.' + CLASS.ygrids).selectAll('.' + CLASS.ygrid)\n            .data(gridValues);\n        $$.ygrid.enter().append('line')\n            .attr('class', CLASS.ygrid);\n        $$.ygrid.attr(\"x1\", config.axis_rotated ? $$.y : 0)\n            .attr(\"x2\", config.axis_rotated ? $$.y : $$.width)\n            .attr(\"y1\", config.axis_rotated ? 0 : $$.y)\n            .attr(\"y2\", config.axis_rotated ? $$.height : $$.y);\n        $$.ygrid.exit().remove();\n        $$.smoothLines($$.ygrid, 'grid');\n    };\n\n    c3_chart_internal_fn.gridTextAnchor = function (d) {\n        return d.position ? d.position : \"end\";\n    };\n    c3_chart_internal_fn.gridTextDx = function (d) {\n        return d.position === 'start' ? 4 : d.position === 'middle' ? 0 : -4;\n    };\n    c3_chart_internal_fn.xGridTextX = function (d) {\n        return d.position === 'start' ? -this.height : d.position === 'middle' ? -this.height / 2 : 0;\n    };\n    c3_chart_internal_fn.yGridTextX = function (d) {\n        return d.position === 'start' ? 0 : d.position === 'middle' ? this.width / 2 : this.width;\n    };\n    c3_chart_internal_fn.updateGrid = function (duration) {\n        var $$ = this, main = $$.main, config = $$.config,\n            xgridLine, ygridLine, yv;\n\n        // hide if arc type\n        $$.grid.style('visibility', $$.hasArcType() ? 'hidden' : 'visible');\n\n        main.select('line.' + CLASS.xgridFocus).style(\"visibility\", \"hidden\");\n        if (config.grid_x_show) {\n            $$.updateXGrid();\n        }\n        $$.xgridLines = main.select('.' + CLASS.xgridLines).selectAll('.' + CLASS.xgridLine)\n            .data(config.grid_x_lines);\n        // enter\n        xgridLine = $$.xgridLines.enter().append('g')\n            .attr(\"class\", function (d) { return CLASS.xgridLine + (d['class'] ? ' ' + d['class'] : ''); });\n        xgridLine.append('line')\n            .style(\"opacity\", 0);\n        xgridLine.append('text')\n            .attr(\"text-anchor\", $$.gridTextAnchor)\n            .attr(\"transform\", config.axis_rotated ? \"\" : \"rotate(-90)\")\n            .attr('dx', $$.gridTextDx)\n            .attr('dy', -5)\n            .style(\"opacity\", 0);\n        // udpate\n        // done in d3.transition() of the end of this function\n        // exit\n        $$.xgridLines.exit().transition().duration(duration)\n            .style(\"opacity\", 0)\n            .remove();\n\n        // Y-Grid\n        if (config.grid_y_show) {\n            $$.updateYGrid();\n        }\n        $$.ygridLines = main.select('.' + CLASS.ygridLines).selectAll('.' + CLASS.ygridLine)\n            .data(config.grid_y_lines);\n        // enter\n        ygridLine = $$.ygridLines.enter().append('g')\n            .attr(\"class\", function (d) { return CLASS.ygridLine + (d['class'] ? ' ' + d['class'] : ''); });\n        ygridLine.append('line')\n            .style(\"opacity\", 0);\n        ygridLine.append('text')\n            .attr(\"text-anchor\", $$.gridTextAnchor)\n            .attr(\"transform\", config.axis_rotated ? \"rotate(-90)\" : \"\")\n            .attr('dx', $$.gridTextDx)\n            .attr('dy', -5)\n            .style(\"opacity\", 0);\n        // update\n        yv = $$.yv.bind($$);\n        $$.ygridLines.select('line')\n          .transition().duration(duration)\n            .attr(\"x1\", config.axis_rotated ? yv : 0)\n            .attr(\"x2\", config.axis_rotated ? yv : $$.width)\n            .attr(\"y1\", config.axis_rotated ? 0 : yv)\n            .attr(\"y2\", config.axis_rotated ? $$.height : yv)\n            .style(\"opacity\", 1);\n        $$.ygridLines.select('text')\n          .transition().duration(duration)\n            .attr(\"x\", config.axis_rotated ? $$.xGridTextX.bind($$) : $$.yGridTextX.bind($$))\n            .attr(\"y\", yv)\n            .text(function (d) { return d.text; })\n            .style(\"opacity\", 1);\n        // exit\n        $$.ygridLines.exit().transition().duration(duration)\n            .style(\"opacity\", 0)\n            .remove();\n    };\n    c3_chart_internal_fn.redrawGrid = function (withTransition) {\n        var $$ = this, config = $$.config, xv = $$.xv.bind($$),\n            lines = $$.xgridLines.select('line'),\n            texts = $$.xgridLines.select('text');\n        return [\n            (withTransition ? lines.transition() : lines)\n                .attr(\"x1\", config.axis_rotated ? 0 : xv)\n                .attr(\"x2\", config.axis_rotated ? $$.width : xv)\n                .attr(\"y1\", config.axis_rotated ? xv : 0)\n                .attr(\"y2\", config.axis_rotated ? xv : $$.height)\n                .style(\"opacity\", 1),\n            (withTransition ? texts.transition() : texts)\n                .attr(\"x\", config.axis_rotated ? $$.yGridTextX.bind($$) : $$.xGridTextX.bind($$))\n                .attr(\"y\", xv)\n                .text(function (d) { return d.text; })\n                .style(\"opacity\", 1)\n        ];\n    };\n    c3_chart_internal_fn.showXGridFocus = function (selectedData) {\n        var $$ = this, config = $$.config,\n            dataToShow = selectedData.filter(function (d) { return d && isValue(d.value); }),\n            focusEl = $$.main.selectAll('line.' + CLASS.xgridFocus),\n            xx = $$.xx.bind($$);\n        if (! config.tooltip_show) { return; }\n        // Hide when scatter plot exists\n        if ($$.hasType('scatter') || $$.hasArcType()) { return; }\n        focusEl\n            .style(\"visibility\", \"visible\")\n            .data([dataToShow[0]])\n            .attr(config.axis_rotated ? 'y1' : 'x1', xx)\n            .attr(config.axis_rotated ? 'y2' : 'x2', xx);\n        $$.smoothLines(focusEl, 'grid');\n    };\n    c3_chart_internal_fn.hideXGridFocus = function () {\n        this.main.select('line.' + CLASS.xgridFocus).style(\"visibility\", \"hidden\");\n    };\n    c3_chart_internal_fn.updateXgridFocus = function () {\n        var $$ = this, config = $$.config;\n        $$.main.select('line.' + CLASS.xgridFocus)\n            .attr(\"x1\", config.axis_rotated ? 0 : -10)\n            .attr(\"x2\", config.axis_rotated ? $$.width : -10)\n            .attr(\"y1\", config.axis_rotated ? -10 : 0)\n            .attr(\"y2\", config.axis_rotated ? -10 : $$.height);\n    };\n    c3_chart_internal_fn.generateGridData = function (type, scale) {\n        var $$ = this,\n            gridData = [], xDomain, firstYear, lastYear, i,\n            tickNum = $$.main.select(\".\" + CLASS.axisX).selectAll('.tick').size();\n        if (type === 'year') {\n            xDomain = $$.getXDomain();\n            firstYear = xDomain[0].getFullYear();\n            lastYear = xDomain[1].getFullYear();\n            for (i = firstYear; i <= lastYear; i++) {\n                gridData.push(new Date(i + '-01-01 00:00:00'));\n            }\n        } else {\n            gridData = scale.ticks(10);\n            if (gridData.length > tickNum) { // use only int\n                gridData = gridData.filter(function (d) { return (\"\" + d).indexOf('.') < 0; });\n            }\n        }\n        return gridData;\n    };\n    c3_chart_internal_fn.getGridFilterToRemove = function (params) {\n        return params ? function (line) {\n            var found = false;\n            [].concat(params).forEach(function (param) {\n                if ((('value' in param && line.value === param.value) || ('class' in param && line['class'] === param['class']))) {\n                    found = true;\n                }\n            });\n            return found;\n        } : function () { return true; };\n    };\n    c3_chart_internal_fn.removeGridLines = function (params, forX) {\n        var $$ = this, config = $$.config,\n            toRemove = $$.getGridFilterToRemove(params),\n            toShow = function (line) { return !toRemove(line); },\n            classLines = forX ? CLASS.xgridLines : CLASS.ygridLines,\n            classLine = forX ? CLASS.xgridLine : CLASS.ygridLine;\n        $$.main.select('.' + classLines).selectAll('.' + classLine).filter(toRemove)\n            .transition().duration(config.transition_duration)\n            .style('opacity', 0).remove();\n        if (forX) {\n            config.grid_x_lines = config.grid_x_lines.filter(toShow);\n        } else {\n            config.grid_y_lines = config.grid_y_lines.filter(toShow);\n        }\n    };\n\n    c3_chart_internal_fn.initTooltip = function () {\n        var $$ = this, config = $$.config, i;\n        $$.tooltip = $$.selectChart\n            .style(\"position\", \"relative\")\n          .append(\"div\")\n            .attr('class', CLASS.tooltipContainer)\n            .style(\"position\", \"absolute\")\n            .style(\"pointer-events\", \"none\")\n            .style(\"display\", \"none\");\n        // Show tooltip if needed\n        if (config.tooltip_init_show) {\n            if ($$.isTimeSeries() && isString(config.tooltip_init_x)) {\n                config.tooltip_init_x = $$.parseDate(config.tooltip_init_x);\n                for (i = 0; i < $$.data.targets[0].values.length; i++) {\n                    if (($$.data.targets[0].values[i].x - config.tooltip_init_x) === 0) { break; }\n                }\n                config.tooltip_init_x = i;\n            }\n            $$.tooltip.html(config.tooltip_contents.call($$, $$.data.targets.map(function (d) {\n                return $$.addName(d.values[config.tooltip_init_x]);\n            }), $$.axis.getXAxisTickFormat(), $$.getYFormat($$.hasArcType()), $$.color));\n            $$.tooltip.style(\"top\", config.tooltip_init_position.top)\n                .style(\"left\", config.tooltip_init_position.left)\n                .style(\"display\", \"block\");\n        }\n    };\n    c3_chart_internal_fn.getTooltipContent = function (d, defaultTitleFormat, defaultValueFormat, color) {\n        var $$ = this, config = $$.config,\n            titleFormat = config.tooltip_format_title || defaultTitleFormat,\n            nameFormat = config.tooltip_format_name || function (name) { return name; },\n            valueFormat = config.tooltip_format_value || defaultValueFormat,\n            text, i, title, value, name, bgcolor,\n            orderAsc = $$.isOrderAsc();\n\n        if (config.data_groups.length === 0) {\n            d.sort(function(a, b){\n                var v1 = a ? a.value : null, v2 = b ? b.value : null;\n                return orderAsc ? v1 - v2 : v2 - v1;\n            });\n        } else {\n            var ids = $$.orderTargets($$.data.targets).map(function (i) {\n                return i.id;\n            });\n            d.sort(function(a, b) {\n                var v1 = a ? a.value : null, v2 = b ? b.value : null;\n                if (v1 > 0 && v2 > 0) {\n                    v1 = a ? ids.indexOf(a.id) : null;\n                    v2 = b ? ids.indexOf(b.id) : null;\n                }\n                return orderAsc ? v1 - v2 : v2 - v1;\n            });\n        }\n\n        for (i = 0; i < d.length; i++) {\n            if (! (d[i] && (d[i].value || d[i].value === 0))) { continue; }\n\n            if (! text) {\n                title = sanitise(titleFormat ? titleFormat(d[i].x) : d[i].x);\n                text = \"<table class='\" + $$.CLASS.tooltip + \"'>\" + (title || title === 0 ? \"<tr><th colspan='2'>\" + title + \"</th></tr>\" : \"\");\n            }\n\n            value = sanitise(valueFormat(d[i].value, d[i].ratio, d[i].id, d[i].index, d));\n            if (value !== undefined) {\n                // Skip elements when their name is set to null\n                if (d[i].name === null) { continue; }\n                name = sanitise(nameFormat(d[i].name, d[i].ratio, d[i].id, d[i].index));\n                bgcolor = $$.levelColor ? $$.levelColor(d[i].value) : color(d[i].id);\n\n                text += \"<tr class='\" + $$.CLASS.tooltipName + \"-\" + $$.getTargetSelectorSuffix(d[i].id) + \"'>\";\n                text += \"<td class='name'><span style='background-color:\" + bgcolor + \"'></span>\" + name + \"</td>\";\n                text += \"<td class='value'>\" + value + \"</td>\";\n                text += \"</tr>\";\n            }\n        }\n        return text + \"</table>\";\n    };\n    c3_chart_internal_fn.tooltipPosition = function (dataToShow, tWidth, tHeight, element) {\n        var $$ = this, config = $$.config, d3 = $$.d3;\n        var svgLeft, tooltipLeft, tooltipRight, tooltipTop, chartRight;\n        var forArc = $$.hasArcType(),\n            mouse = d3.mouse(element);\n      // Determin tooltip position\n        if (forArc) {\n            tooltipLeft = (($$.width - ($$.isLegendRight ? $$.getLegendWidth() : 0)) / 2) + mouse[0];\n            tooltipTop = ($$.height / 2) + mouse[1] + 20;\n        } else {\n            svgLeft = $$.getSvgLeft(true);\n            if (config.axis_rotated) {\n                tooltipLeft = svgLeft + mouse[0] + 100;\n                tooltipRight = tooltipLeft + tWidth;\n                chartRight = $$.currentWidth - $$.getCurrentPaddingRight();\n                tooltipTop = $$.x(dataToShow[0].x) + 20;\n            } else {\n                tooltipLeft = svgLeft + $$.getCurrentPaddingLeft(true) + $$.x(dataToShow[0].x) + 20;\n                tooltipRight = tooltipLeft + tWidth;\n                chartRight = svgLeft + $$.currentWidth - $$.getCurrentPaddingRight();\n                tooltipTop = mouse[1] + 15;\n            }\n\n            if (tooltipRight > chartRight) {\n                // 20 is needed for Firefox to keep tooltip width\n                tooltipLeft -= tooltipRight - chartRight + 20;\n            }\n            if (tooltipTop + tHeight > $$.currentHeight) {\n                tooltipTop -= tHeight + 30;\n            }\n        }\n        if (tooltipTop < 0) {\n            tooltipTop = 0;\n        }\n        return {top: tooltipTop, left: tooltipLeft};\n    };\n    c3_chart_internal_fn.showTooltip = function (selectedData, element) {\n        var $$ = this, config = $$.config;\n        var tWidth, tHeight, position;\n        var forArc = $$.hasArcType(),\n            dataToShow = selectedData.filter(function (d) { return d && isValue(d.value); }),\n            positionFunction = config.tooltip_position || c3_chart_internal_fn.tooltipPosition;\n        if (dataToShow.length === 0 || !config.tooltip_show) {\n            return;\n        }\n        $$.tooltip.html(config.tooltip_contents.call($$, selectedData, $$.axis.getXAxisTickFormat(), $$.getYFormat(forArc), $$.color)).style(\"display\", \"block\");\n\n        // Get tooltip dimensions\n        tWidth = $$.tooltip.property('offsetWidth');\n        tHeight = $$.tooltip.property('offsetHeight');\n\n        position = positionFunction.call(this, dataToShow, tWidth, tHeight, element);\n        // Set tooltip\n        $$.tooltip\n            .style(\"top\", position.top + \"px\")\n            .style(\"left\", position.left + 'px');\n    };\n    c3_chart_internal_fn.hideTooltip = function () {\n        this.tooltip.style(\"display\", \"none\");\n    };\n\n    c3_chart_internal_fn.initLegend = function () {\n        var $$ = this;\n        $$.legendItemTextBox = {};\n        $$.legendHasRendered = false;\n        $$.legend = $$.svg.append(\"g\").attr(\"transform\", $$.getTranslate('legend'));\n        if (!$$.config.legend_show) {\n            $$.legend.style('visibility', 'hidden');\n            $$.hiddenLegendIds = $$.mapToIds($$.data.targets);\n            return;\n        }\n        // MEMO: call here to update legend box and tranlate for all\n        // MEMO: translate will be upated by this, so transform not needed in updateLegend()\n        $$.updateLegendWithDefaults();\n    };\n    c3_chart_internal_fn.updateLegendWithDefaults = function () {\n        var $$ = this;\n        $$.updateLegend($$.mapToIds($$.data.targets), {withTransform: false, withTransitionForTransform: false, withTransition: false});\n    };\n    c3_chart_internal_fn.updateSizeForLegend = function (legendHeight, legendWidth) {\n        var $$ = this, config = $$.config, insetLegendPosition = {\n            top: $$.isLegendTop ? $$.getCurrentPaddingTop() + config.legend_inset_y + 5.5 : $$.currentHeight - legendHeight - $$.getCurrentPaddingBottom() - config.legend_inset_y,\n            left: $$.isLegendLeft ? $$.getCurrentPaddingLeft() + config.legend_inset_x + 0.5 : $$.currentWidth - legendWidth - $$.getCurrentPaddingRight() - config.legend_inset_x + 0.5\n        };\n\n        $$.margin3 = {\n            top: $$.isLegendRight ? 0 : $$.isLegendInset ? insetLegendPosition.top : $$.currentHeight - legendHeight,\n            right: NaN,\n            bottom: 0,\n            left: $$.isLegendRight ? $$.currentWidth - legendWidth : $$.isLegendInset ? insetLegendPosition.left : 0\n        };\n    };\n    c3_chart_internal_fn.transformLegend = function (withTransition) {\n        var $$ = this;\n        (withTransition ? $$.legend.transition() : $$.legend).attr(\"transform\", $$.getTranslate('legend'));\n    };\n    c3_chart_internal_fn.updateLegendStep = function (step) {\n        this.legendStep = step;\n    };\n    c3_chart_internal_fn.updateLegendItemWidth = function (w) {\n        this.legendItemWidth = w;\n    };\n    c3_chart_internal_fn.updateLegendItemHeight = function (h) {\n        this.legendItemHeight = h;\n    };\n    c3_chart_internal_fn.getLegendWidth = function () {\n        var $$ = this;\n        return $$.config.legend_show ? $$.isLegendRight || $$.isLegendInset ? $$.legendItemWidth * ($$.legendStep + 1) : $$.currentWidth : 0;\n    };\n    c3_chart_internal_fn.getLegendHeight = function () {\n        var $$ = this, h = 0;\n        if ($$.config.legend_show) {\n            if ($$.isLegendRight) {\n                h = $$.currentHeight;\n            } else {\n                h = Math.max(20, $$.legendItemHeight) * ($$.legendStep + 1);\n            }\n        }\n        return h;\n    };\n    c3_chart_internal_fn.opacityForLegend = function (legendItem) {\n        return legendItem.classed(CLASS.legendItemHidden) ? null : 1;\n    };\n    c3_chart_internal_fn.opacityForUnfocusedLegend = function (legendItem) {\n        return legendItem.classed(CLASS.legendItemHidden) ? null : 0.3;\n    };\n    c3_chart_internal_fn.toggleFocusLegend = function (targetIds, focus) {\n        var $$ = this;\n        targetIds = $$.mapToTargetIds(targetIds);\n        $$.legend.selectAll('.' + CLASS.legendItem)\n            .filter(function (id) { return targetIds.indexOf(id) >= 0; })\n            .classed(CLASS.legendItemFocused, focus)\n          .transition().duration(100)\n            .style('opacity', function () {\n                var opacity = focus ? $$.opacityForLegend : $$.opacityForUnfocusedLegend;\n                return opacity.call($$, $$.d3.select(this));\n            });\n    };\n    c3_chart_internal_fn.revertLegend = function () {\n        var $$ = this, d3 = $$.d3;\n        $$.legend.selectAll('.' + CLASS.legendItem)\n            .classed(CLASS.legendItemFocused, false)\n            .transition().duration(100)\n            .style('opacity', function () { return $$.opacityForLegend(d3.select(this)); });\n    };\n    c3_chart_internal_fn.showLegend = function (targetIds) {\n        var $$ = this, config = $$.config;\n        if (!config.legend_show) {\n            config.legend_show = true;\n            $$.legend.style('visibility', 'visible');\n            if (!$$.legendHasRendered) {\n                $$.updateLegendWithDefaults();\n            }\n        }\n        $$.removeHiddenLegendIds(targetIds);\n        $$.legend.selectAll($$.selectorLegends(targetIds))\n            .style('visibility', 'visible')\n            .transition()\n            .style('opacity', function () { return $$.opacityForLegend($$.d3.select(this)); });\n    };\n    c3_chart_internal_fn.hideLegend = function (targetIds) {\n        var $$ = this, config = $$.config;\n        if (config.legend_show && isEmpty(targetIds)) {\n            config.legend_show = false;\n            $$.legend.style('visibility', 'hidden');\n        }\n        $$.addHiddenLegendIds(targetIds);\n        $$.legend.selectAll($$.selectorLegends(targetIds))\n            .style('opacity', 0)\n            .style('visibility', 'hidden');\n    };\n    c3_chart_internal_fn.clearLegendItemTextBoxCache = function () {\n        this.legendItemTextBox = {};\n    };\n    c3_chart_internal_fn.updateLegend = function (targetIds, options, transitions) {\n        var $$ = this, config = $$.config;\n        var xForLegend, xForLegendText, xForLegendRect, yForLegend, yForLegendText, yForLegendRect, x1ForLegendTile, x2ForLegendTile, yForLegendTile;\n        var paddingTop = 4, paddingRight = 10, maxWidth = 0, maxHeight = 0, posMin = 10, tileWidth = config.legend_item_tile_width + 5;\n        var l, totalLength = 0, offsets = {}, widths = {}, heights = {}, margins = [0], steps = {}, step = 0;\n        var withTransition, withTransitionForTransform;\n        var texts, rects, tiles, background;\n\n        // Skip elements when their name is set to null\n        targetIds = targetIds.filter(function(id) {\n            return !isDefined(config.data_names[id]) || config.data_names[id] !== null;\n        });\n\n        options = options || {};\n        withTransition = getOption(options, \"withTransition\", true);\n        withTransitionForTransform = getOption(options, \"withTransitionForTransform\", true);\n\n        function getTextBox(textElement, id) {\n            if (!$$.legendItemTextBox[id]) {\n                $$.legendItemTextBox[id] = $$.getTextRect(textElement.textContent, CLASS.legendItem, textElement);\n            }\n            return $$.legendItemTextBox[id];\n        }\n\n        function updatePositions(textElement, id, index) {\n            var reset = index === 0, isLast = index === targetIds.length - 1,\n                box = getTextBox(textElement, id),\n                itemWidth = box.width + tileWidth + (isLast && !($$.isLegendRight || $$.isLegendInset) ? 0 : paddingRight) + config.legend_padding,\n                itemHeight = box.height + paddingTop,\n                itemLength = $$.isLegendRight || $$.isLegendInset ? itemHeight : itemWidth,\n                areaLength = $$.isLegendRight || $$.isLegendInset ? $$.getLegendHeight() : $$.getLegendWidth(),\n                margin, maxLength;\n\n            // MEMO: care about condifion of step, totalLength\n            function updateValues(id, withoutStep) {\n                if (!withoutStep) {\n                    margin = (areaLength - totalLength - itemLength) / 2;\n                    if (margin < posMin) {\n                        margin = (areaLength - itemLength) / 2;\n                        totalLength = 0;\n                        step++;\n                    }\n                }\n                steps[id] = step;\n                margins[step] = $$.isLegendInset ? 10 : margin;\n                offsets[id] = totalLength;\n                totalLength += itemLength;\n            }\n\n            if (reset) {\n                totalLength = 0;\n                step = 0;\n                maxWidth = 0;\n                maxHeight = 0;\n            }\n\n            if (config.legend_show && !$$.isLegendToShow(id)) {\n                widths[id] = heights[id] = steps[id] = offsets[id] = 0;\n                return;\n            }\n\n            widths[id] = itemWidth;\n            heights[id] = itemHeight;\n\n            if (!maxWidth || itemWidth >= maxWidth) { maxWidth = itemWidth; }\n            if (!maxHeight || itemHeight >= maxHeight) { maxHeight = itemHeight; }\n            maxLength = $$.isLegendRight || $$.isLegendInset ? maxHeight : maxWidth;\n\n            if (config.legend_equally) {\n                Object.keys(widths).forEach(function (id) { widths[id] = maxWidth; });\n                Object.keys(heights).forEach(function (id) { heights[id] = maxHeight; });\n                margin = (areaLength - maxLength * targetIds.length) / 2;\n                if (margin < posMin) {\n                    totalLength = 0;\n                    step = 0;\n                    targetIds.forEach(function (id) { updateValues(id); });\n                }\n                else {\n                    updateValues(id, true);\n                }\n            } else {\n                updateValues(id);\n            }\n        }\n\n        if ($$.isLegendInset) {\n            step = config.legend_inset_step ? config.legend_inset_step : targetIds.length;\n            $$.updateLegendStep(step);\n        }\n\n        if ($$.isLegendRight) {\n            xForLegend = function (id) { return maxWidth * steps[id]; };\n            yForLegend = function (id) { return margins[steps[id]] + offsets[id]; };\n        } else if ($$.isLegendInset) {\n            xForLegend = function (id) { return maxWidth * steps[id] + 10; };\n            yForLegend = function (id) { return margins[steps[id]] + offsets[id]; };\n        } else {\n            xForLegend = function (id) { return margins[steps[id]] + offsets[id]; };\n            yForLegend = function (id) { return maxHeight * steps[id]; };\n        }\n        xForLegendText = function (id, i) { return xForLegend(id, i) + 4 + config.legend_item_tile_width; };\n        yForLegendText = function (id, i) { return yForLegend(id, i) + 9; };\n        xForLegendRect = function (id, i) { return xForLegend(id, i); };\n        yForLegendRect = function (id, i) { return yForLegend(id, i) - 5; };\n        x1ForLegendTile = function (id, i) { return xForLegend(id, i) - 2; };\n        x2ForLegendTile = function (id, i) { return xForLegend(id, i) - 2 + config.legend_item_tile_width; };\n        yForLegendTile = function (id, i) { return yForLegend(id, i) + 4; };\n\n        // Define g for legend area\n        l = $$.legend.selectAll('.' + CLASS.legendItem)\n            .data(targetIds)\n            .enter().append('g')\n            .attr('class', function (id) { return $$.generateClass(CLASS.legendItem, id); })\n            .style('visibility', function (id) { return $$.isLegendToShow(id) ? 'visible' : 'hidden'; })\n            .style('cursor', 'pointer')\n            .on('click', function (id) {\n                if (config.legend_item_onclick) {\n                    config.legend_item_onclick.call($$, id);\n                } else {\n                    if ($$.d3.event.altKey) {\n                        $$.api.hide();\n                        $$.api.show(id);\n                    } else {\n                        $$.api.toggle(id);\n                        $$.isTargetToShow(id) ? $$.api.focus(id) : $$.api.revert();\n                    }\n                }\n            })\n            .on('mouseover', function (id) {\n                if (config.legend_item_onmouseover) {\n                    config.legend_item_onmouseover.call($$, id);\n                }\n                else {\n                    $$.d3.select(this).classed(CLASS.legendItemFocused, true);\n                    if (!$$.transiting && $$.isTargetToShow(id)) {\n                        $$.api.focus(id);\n                    }\n                }\n            })\n            .on('mouseout', function (id) {\n                if (config.legend_item_onmouseout) {\n                    config.legend_item_onmouseout.call($$, id);\n                }\n                else {\n                    $$.d3.select(this).classed(CLASS.legendItemFocused, false);\n                    $$.api.revert();\n                }\n            });\n        l.append('text')\n            .text(function (id) { return isDefined(config.data_names[id]) ? config.data_names[id] : id; })\n            .each(function (id, i) { updatePositions(this, id, i); })\n            .style(\"pointer-events\", \"none\")\n            .attr('x', $$.isLegendRight || $$.isLegendInset ? xForLegendText : -200)\n            .attr('y', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendText);\n        l.append('rect')\n            .attr(\"class\", CLASS.legendItemEvent)\n            .style('fill-opacity', 0)\n            .attr('x', $$.isLegendRight || $$.isLegendInset ? xForLegendRect : -200)\n            .attr('y', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendRect);\n        l.append('line')\n            .attr('class', CLASS.legendItemTile)\n            .style('stroke', $$.color)\n            .style(\"pointer-events\", \"none\")\n            .attr('x1', $$.isLegendRight || $$.isLegendInset ? x1ForLegendTile : -200)\n            .attr('y1', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendTile)\n            .attr('x2', $$.isLegendRight || $$.isLegendInset ? x2ForLegendTile : -200)\n            .attr('y2', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendTile)\n            .attr('stroke-width', config.legend_item_tile_height);\n\n        // Set background for inset legend\n        background = $$.legend.select('.' + CLASS.legendBackground + ' rect');\n        if ($$.isLegendInset && maxWidth > 0 && background.size() === 0) {\n            background = $$.legend.insert('g', '.' + CLASS.legendItem)\n                .attr(\"class\", CLASS.legendBackground)\n                .append('rect');\n        }\n\n        texts = $$.legend.selectAll('text')\n            .data(targetIds)\n            .text(function (id) { return isDefined(config.data_names[id]) ? config.data_names[id] : id; }) // MEMO: needed for update\n            .each(function (id, i) { updatePositions(this, id, i); });\n        (withTransition ? texts.transition() : texts)\n            .attr('x', xForLegendText)\n            .attr('y', yForLegendText);\n\n        rects = $$.legend.selectAll('rect.' + CLASS.legendItemEvent)\n            .data(targetIds);\n        (withTransition ? rects.transition() : rects)\n            .attr('width', function (id) { return widths[id]; })\n            .attr('height', function (id) { return heights[id]; })\n            .attr('x', xForLegendRect)\n            .attr('y', yForLegendRect);\n\n        tiles = $$.legend.selectAll('line.' + CLASS.legendItemTile)\n                .data(targetIds);\n            (withTransition ? tiles.transition() : tiles)\n                .style('stroke', $$.color)\n                .attr('x1', x1ForLegendTile)\n                .attr('y1', yForLegendTile)\n                .attr('x2', x2ForLegendTile)\n                .attr('y2', yForLegendTile);\n\n        if (background) {\n            (withTransition ? background.transition() : background)\n                .attr('height', $$.getLegendHeight() - 12)\n                .attr('width', maxWidth * (step + 1) + 10);\n        }\n\n        // toggle legend state\n        $$.legend.selectAll('.' + CLASS.legendItem)\n            .classed(CLASS.legendItemHidden, function (id) { return !$$.isTargetToShow(id); });\n\n        // Update all to reflect change of legend\n        $$.updateLegendItemWidth(maxWidth);\n        $$.updateLegendItemHeight(maxHeight);\n        $$.updateLegendStep(step);\n        // Update size and scale\n        $$.updateSizes();\n        $$.updateScales();\n        $$.updateSvgSize();\n        // Update g positions\n        $$.transformAll(withTransitionForTransform, transitions);\n        $$.legendHasRendered = true;\n    };\n\n    c3_chart_internal_fn.initTitle = function () {\n        var $$ = this;\n        $$.title = $$.svg.append(\"text\")\n              .text($$.config.title_text)\n              .attr(\"class\", $$.CLASS.title);\n    };\n    c3_chart_internal_fn.redrawTitle = function () {\n        var $$ = this;\n        $$.title\n              .attr(\"x\", $$.xForTitle.bind($$))\n              .attr(\"y\", $$.yForTitle.bind($$));\n    };\n    c3_chart_internal_fn.xForTitle = function () {\n        var $$ = this, config = $$.config, position = config.title_position || 'left', x;\n        if (position.indexOf('right') >= 0) {\n            x = $$.currentWidth - $$.getTextRect($$.title.node().textContent, $$.CLASS.title, $$.title.node()).width - config.title_padding.right;\n        } else if (position.indexOf('center') >= 0) {\n            x = ($$.currentWidth - $$.getTextRect($$.title.node().textContent, $$.CLASS.title, $$.title.node()).width) / 2;\n        } else { // left\n            x = config.title_padding.left;\n        }\n        return x;\n    };\n    c3_chart_internal_fn.yForTitle = function () {\n        var $$ = this;\n        return $$.config.title_padding.top + $$.getTextRect($$.title.node().textContent, $$.CLASS.title, $$.title.node()).height;\n    };\n    c3_chart_internal_fn.getTitlePadding = function() {\n        var $$ = this;\n        return $$.yForTitle() + $$.config.title_padding.bottom;\n    };\n\n    function Axis(owner) {\n        API.call(this, owner);\n    }\n\n    inherit(API, Axis);\n\n    Axis.prototype.init = function init() {\n\n        var $$ = this.owner, config = $$.config, main = $$.main;\n        $$.axes.x = main.append(\"g\")\n            .attr(\"class\", CLASS.axis + ' ' + CLASS.axisX)\n            .attr(\"clip-path\", $$.clipPathForXAxis)\n            .attr(\"transform\", $$.getTranslate('x'))\n            .style(\"visibility\", config.axis_x_show ? 'visible' : 'hidden');\n        $$.axes.x.append(\"text\")\n            .attr(\"class\", CLASS.axisXLabel)\n            .attr(\"transform\", config.axis_rotated ? \"rotate(-90)\" : \"\")\n            .style(\"text-anchor\", this.textAnchorForXAxisLabel.bind(this));\n        $$.axes.y = main.append(\"g\")\n            .attr(\"class\", CLASS.axis + ' ' + CLASS.axisY)\n            .attr(\"clip-path\", config.axis_y_inner ? \"\" : $$.clipPathForYAxis)\n            .attr(\"transform\", $$.getTranslate('y'))\n            .style(\"visibility\", config.axis_y_show ? 'visible' : 'hidden');\n        $$.axes.y.append(\"text\")\n            .attr(\"class\", CLASS.axisYLabel)\n            .attr(\"transform\", config.axis_rotated ? \"\" : \"rotate(-90)\")\n            .style(\"text-anchor\", this.textAnchorForYAxisLabel.bind(this));\n\n        $$.axes.y2 = main.append(\"g\")\n            .attr(\"class\", CLASS.axis + ' ' + CLASS.axisY2)\n            // clip-path?\n            .attr(\"transform\", $$.getTranslate('y2'))\n            .style(\"visibility\", config.axis_y2_show ? 'visible' : 'hidden');\n        $$.axes.y2.append(\"text\")\n            .attr(\"class\", CLASS.axisY2Label)\n            .attr(\"transform\", config.axis_rotated ? \"\" : \"rotate(-90)\")\n            .style(\"text-anchor\", this.textAnchorForY2AxisLabel.bind(this));\n    };\n    Axis.prototype.getXAxis = function getXAxis(scale, orient, tickFormat, tickValues, withOuterTick, withoutTransition, withoutRotateTickText) {\n        var $$ = this.owner, config = $$.config,\n            axisParams = {\n                isCategory: $$.isCategorized(),\n                withOuterTick: withOuterTick,\n                tickMultiline: config.axis_x_tick_multiline,\n                tickWidth: config.axis_x_tick_width,\n                tickTextRotate: withoutRotateTickText ? 0 : config.axis_x_tick_rotate,\n                withoutTransition: withoutTransition,\n            },\n            axis = c3_axis($$.d3, axisParams).scale(scale).orient(orient);\n\n        if ($$.isTimeSeries() && tickValues && typeof tickValues !== \"function\") {\n            tickValues = tickValues.map(function (v) { return $$.parseDate(v); });\n        }\n\n        // Set tick\n        axis.tickFormat(tickFormat).tickValues(tickValues);\n        if ($$.isCategorized()) {\n            axis.tickCentered(config.axis_x_tick_centered);\n            if (isEmpty(config.axis_x_tick_culling)) {\n                config.axis_x_tick_culling = false;\n            }\n        }\n\n        return axis;\n    };\n    Axis.prototype.updateXAxisTickValues = function updateXAxisTickValues(targets, axis) {\n        var $$ = this.owner, config = $$.config, tickValues;\n        if (config.axis_x_tick_fit || config.axis_x_tick_count) {\n            tickValues = this.generateTickValues($$.mapTargetsToUniqueXs(targets), config.axis_x_tick_count, $$.isTimeSeries());\n        }\n        if (axis) {\n            axis.tickValues(tickValues);\n        } else {\n            $$.xAxis.tickValues(tickValues);\n            $$.subXAxis.tickValues(tickValues);\n        }\n        return tickValues;\n    };\n    Axis.prototype.getYAxis = function getYAxis(scale, orient, tickFormat, tickValues, withOuterTick, withoutTransition, withoutRotateTickText) {\n        var $$ = this.owner, config = $$.config,\n            axisParams = {\n                withOuterTick: withOuterTick,\n                withoutTransition: withoutTransition,\n                tickTextRotate: withoutRotateTickText ? 0 : config.axis_y_tick_rotate\n            },\n            axis = c3_axis($$.d3, axisParams).scale(scale).orient(orient).tickFormat(tickFormat);\n        if ($$.isTimeSeriesY()) {\n            axis.ticks($$.d3.time[config.axis_y_tick_time_value], config.axis_y_tick_time_interval);\n        } else {\n            axis.tickValues(tickValues);\n        }\n        return axis;\n    };\n    Axis.prototype.getId = function getId(id) {\n        var config = this.owner.config;\n        return id in config.data_axes ? config.data_axes[id] : 'y';\n    };\n    Axis.prototype.getXAxisTickFormat = function getXAxisTickFormat() {\n        var $$ = this.owner, config = $$.config,\n            format = $$.isTimeSeries() ? $$.defaultAxisTimeFormat : $$.isCategorized() ? $$.categoryName : function (v) { return v < 0 ? v.toFixed(0) : v; };\n        if (config.axis_x_tick_format) {\n            if (isFunction(config.axis_x_tick_format)) {\n                format = config.axis_x_tick_format;\n            } else if ($$.isTimeSeries()) {\n                format = function (date) {\n                    return date ? $$.axisTimeFormat(config.axis_x_tick_format)(date) : \"\";\n                };\n            }\n        }\n        return isFunction(format) ? function (v) { return format.call($$, v); } : format;\n    };\n    Axis.prototype.getTickValues = function getTickValues(tickValues, axis) {\n        return tickValues ? tickValues : axis ? axis.tickValues() : undefined;\n    };\n    Axis.prototype.getXAxisTickValues = function getXAxisTickValues() {\n        return this.getTickValues(this.owner.config.axis_x_tick_values, this.owner.xAxis);\n    };\n    Axis.prototype.getYAxisTickValues = function getYAxisTickValues() {\n        return this.getTickValues(this.owner.config.axis_y_tick_values, this.owner.yAxis);\n    };\n    Axis.prototype.getY2AxisTickValues = function getY2AxisTickValues() {\n        return this.getTickValues(this.owner.config.axis_y2_tick_values, this.owner.y2Axis);\n    };\n    Axis.prototype.getLabelOptionByAxisId = function getLabelOptionByAxisId(axisId) {\n        var $$ = this.owner, config = $$.config, option;\n        if (axisId === 'y') {\n            option = config.axis_y_label;\n        } else if (axisId === 'y2') {\n            option = config.axis_y2_label;\n        } else if (axisId === 'x') {\n            option = config.axis_x_label;\n        }\n        return option;\n    };\n    Axis.prototype.getLabelText = function getLabelText(axisId) {\n        var option = this.getLabelOptionByAxisId(axisId);\n        return isString(option) ? option : option ? option.text : null;\n    };\n    Axis.prototype.setLabelText = function setLabelText(axisId, text) {\n        var $$ = this.owner, config = $$.config,\n            option = this.getLabelOptionByAxisId(axisId);\n        if (isString(option)) {\n            if (axisId === 'y') {\n                config.axis_y_label = text;\n            } else if (axisId === 'y2') {\n                config.axis_y2_label = text;\n            } else if (axisId === 'x') {\n                config.axis_x_label = text;\n            }\n        } else if (option) {\n            option.text = text;\n        }\n    };\n    Axis.prototype.getLabelPosition = function getLabelPosition(axisId, defaultPosition) {\n        var option = this.getLabelOptionByAxisId(axisId),\n            position = (option && typeof option === 'object' && option.position) ? option.position : defaultPosition;\n        return {\n            isInner: position.indexOf('inner') >= 0,\n            isOuter: position.indexOf('outer') >= 0,\n            isLeft: position.indexOf('left') >= 0,\n            isCenter: position.indexOf('center') >= 0,\n            isRight: position.indexOf('right') >= 0,\n            isTop: position.indexOf('top') >= 0,\n            isMiddle: position.indexOf('middle') >= 0,\n            isBottom: position.indexOf('bottom') >= 0\n        };\n    };\n    Axis.prototype.getXAxisLabelPosition = function getXAxisLabelPosition() {\n        return this.getLabelPosition('x', this.owner.config.axis_rotated ? 'inner-top' : 'inner-right');\n    };\n    Axis.prototype.getYAxisLabelPosition = function getYAxisLabelPosition() {\n        return this.getLabelPosition('y', this.owner.config.axis_rotated ? 'inner-right' : 'inner-top');\n    };\n    Axis.prototype.getY2AxisLabelPosition = function getY2AxisLabelPosition() {\n        return this.getLabelPosition('y2', this.owner.config.axis_rotated ? 'inner-right' : 'inner-top');\n    };\n    Axis.prototype.getLabelPositionById = function getLabelPositionById(id) {\n        return id === 'y2' ? this.getY2AxisLabelPosition() : id === 'y' ? this.getYAxisLabelPosition() : this.getXAxisLabelPosition();\n    };\n    Axis.prototype.textForXAxisLabel = function textForXAxisLabel() {\n        return this.getLabelText('x');\n    };\n    Axis.prototype.textForYAxisLabel = function textForYAxisLabel() {\n        return this.getLabelText('y');\n    };\n    Axis.prototype.textForY2AxisLabel = function textForY2AxisLabel() {\n        return this.getLabelText('y2');\n    };\n    Axis.prototype.xForAxisLabel = function xForAxisLabel(forHorizontal, position) {\n        var $$ = this.owner;\n        if (forHorizontal) {\n            return position.isLeft ? 0 : position.isCenter ? $$.width / 2 : $$.width;\n        } else {\n            return position.isBottom ? -$$.height : position.isMiddle ? -$$.height / 2 : 0;\n        }\n    };\n    Axis.prototype.dxForAxisLabel = function dxForAxisLabel(forHorizontal, position) {\n        if (forHorizontal) {\n            return position.isLeft ? \"0.5em\" : position.isRight ? \"-0.5em\" : \"0\";\n        } else {\n            return position.isTop ? \"-0.5em\" : position.isBottom ? \"0.5em\" : \"0\";\n        }\n    };\n    Axis.prototype.textAnchorForAxisLabel = function textAnchorForAxisLabel(forHorizontal, position) {\n        if (forHorizontal) {\n            return position.isLeft ? 'start' : position.isCenter ? 'middle' : 'end';\n        } else {\n            return position.isBottom ? 'start' : position.isMiddle ? 'middle' : 'end';\n        }\n    };\n    Axis.prototype.xForXAxisLabel = function xForXAxisLabel() {\n        return this.xForAxisLabel(!this.owner.config.axis_rotated, this.getXAxisLabelPosition());\n    };\n    Axis.prototype.xForYAxisLabel = function xForYAxisLabel() {\n        return this.xForAxisLabel(this.owner.config.axis_rotated, this.getYAxisLabelPosition());\n    };\n    Axis.prototype.xForY2AxisLabel = function xForY2AxisLabel() {\n        return this.xForAxisLabel(this.owner.config.axis_rotated, this.getY2AxisLabelPosition());\n    };\n    Axis.prototype.dxForXAxisLabel = function dxForXAxisLabel() {\n        return this.dxForAxisLabel(!this.owner.config.axis_rotated, this.getXAxisLabelPosition());\n    };\n    Axis.prototype.dxForYAxisLabel = function dxForYAxisLabel() {\n        return this.dxForAxisLabel(this.owner.config.axis_rotated, this.getYAxisLabelPosition());\n    };\n    Axis.prototype.dxForY2AxisLabel = function dxForY2AxisLabel() {\n        return this.dxForAxisLabel(this.owner.config.axis_rotated, this.getY2AxisLabelPosition());\n    };\n    Axis.prototype.dyForXAxisLabel = function dyForXAxisLabel() {\n        var $$ = this.owner, config = $$.config,\n            position = this.getXAxisLabelPosition();\n        if (config.axis_rotated) {\n            return position.isInner ? \"1.2em\" : -25 - this.getMaxTickWidth('x');\n        } else {\n            return position.isInner ? \"-0.5em\" : config.axis_x_height ? config.axis_x_height - 10 : \"3em\";\n        }\n    };\n    Axis.prototype.dyForYAxisLabel = function dyForYAxisLabel() {\n        var $$ = this.owner,\n            position = this.getYAxisLabelPosition();\n        if ($$.config.axis_rotated) {\n            return position.isInner ? \"-0.5em\" : \"3em\";\n        } else {\n            return position.isInner ? \"1.2em\" : -10 - ($$.config.axis_y_inner ? 0 : (this.getMaxTickWidth('y') + 10));\n        }\n    };\n    Axis.prototype.dyForY2AxisLabel = function dyForY2AxisLabel() {\n        var $$ = this.owner,\n            position = this.getY2AxisLabelPosition();\n        if ($$.config.axis_rotated) {\n            return position.isInner ? \"1.2em\" : \"-2.2em\";\n        } else {\n            return position.isInner ? \"-0.5em\" : 15 + ($$.config.axis_y2_inner ? 0 : (this.getMaxTickWidth('y2') + 15));\n        }\n    };\n    Axis.prototype.textAnchorForXAxisLabel = function textAnchorForXAxisLabel() {\n        var $$ = this.owner;\n        return this.textAnchorForAxisLabel(!$$.config.axis_rotated, this.getXAxisLabelPosition());\n    };\n    Axis.prototype.textAnchorForYAxisLabel = function textAnchorForYAxisLabel() {\n        var $$ = this.owner;\n        return this.textAnchorForAxisLabel($$.config.axis_rotated, this.getYAxisLabelPosition());\n    };\n    Axis.prototype.textAnchorForY2AxisLabel = function textAnchorForY2AxisLabel() {\n        var $$ = this.owner;\n        return this.textAnchorForAxisLabel($$.config.axis_rotated, this.getY2AxisLabelPosition());\n    };\n    Axis.prototype.getMaxTickWidth = function getMaxTickWidth(id, withoutRecompute) {\n        var $$ = this.owner, config = $$.config,\n            maxWidth = 0, targetsToShow, scale, axis, dummy, svg;\n        if (withoutRecompute && $$.currentMaxTickWidths[id]) {\n            return $$.currentMaxTickWidths[id];\n        }\n        if ($$.svg) {\n            targetsToShow = $$.filterTargetsToShow($$.data.targets);\n            if (id === 'y') {\n                scale = $$.y.copy().domain($$.getYDomain(targetsToShow, 'y'));\n                axis = this.getYAxis(scale, $$.yOrient, config.axis_y_tick_format, $$.yAxisTickValues, false, true, true);\n            } else if (id === 'y2') {\n                scale = $$.y2.copy().domain($$.getYDomain(targetsToShow, 'y2'));\n                axis = this.getYAxis(scale, $$.y2Orient, config.axis_y2_tick_format, $$.y2AxisTickValues, false, true, true);\n            } else {\n                scale = $$.x.copy().domain($$.getXDomain(targetsToShow));\n                axis = this.getXAxis(scale, $$.xOrient, $$.xAxisTickFormat, $$.xAxisTickValues, false, true, true);\n                this.updateXAxisTickValues(targetsToShow, axis);\n            }\n            dummy = $$.d3.select('body').append('div').classed('c3', true);\n            svg = dummy.append(\"svg\").style('visibility', 'hidden').style('position', 'fixed').style('top', 0).style('left', 0),\n            svg.append('g').call(axis).each(function () {\n                $$.d3.select(this).selectAll('text').each(function () {\n                    var box = this.getBoundingClientRect();\n                    if (maxWidth < box.width) { maxWidth = box.width; }\n                });\n                dummy.remove();\n            });\n        }\n        $$.currentMaxTickWidths[id] = maxWidth <= 0 ? $$.currentMaxTickWidths[id] : maxWidth;\n        return $$.currentMaxTickWidths[id];\n    };\n\n    Axis.prototype.updateLabels = function updateLabels(withTransition) {\n        var $$ = this.owner;\n        var axisXLabel = $$.main.select('.' + CLASS.axisX + ' .' + CLASS.axisXLabel),\n            axisYLabel = $$.main.select('.' + CLASS.axisY + ' .' + CLASS.axisYLabel),\n            axisY2Label = $$.main.select('.' + CLASS.axisY2 + ' .' + CLASS.axisY2Label);\n        (withTransition ? axisXLabel.transition() : axisXLabel)\n            .attr(\"x\", this.xForXAxisLabel.bind(this))\n            .attr(\"dx\", this.dxForXAxisLabel.bind(this))\n            .attr(\"dy\", this.dyForXAxisLabel.bind(this))\n            .text(this.textForXAxisLabel.bind(this));\n        (withTransition ? axisYLabel.transition() : axisYLabel)\n            .attr(\"x\", this.xForYAxisLabel.bind(this))\n            .attr(\"dx\", this.dxForYAxisLabel.bind(this))\n            .attr(\"dy\", this.dyForYAxisLabel.bind(this))\n            .text(this.textForYAxisLabel.bind(this));\n        (withTransition ? axisY2Label.transition() : axisY2Label)\n            .attr(\"x\", this.xForY2AxisLabel.bind(this))\n            .attr(\"dx\", this.dxForY2AxisLabel.bind(this))\n            .attr(\"dy\", this.dyForY2AxisLabel.bind(this))\n            .text(this.textForY2AxisLabel.bind(this));\n    };\n    Axis.prototype.getPadding = function getPadding(padding, key, defaultValue, domainLength) {\n        var p = typeof padding === 'number' ? padding : padding[key];\n        if (!isValue(p)) {\n            return defaultValue;\n        }\n        if (padding.unit === 'ratio') {\n            return padding[key] * domainLength;\n        }\n        // assume padding is pixels if unit is not specified\n        return this.convertPixelsToAxisPadding(p, domainLength);\n    };\n    Axis.prototype.convertPixelsToAxisPadding = function convertPixelsToAxisPadding(pixels, domainLength) {\n        var $$ = this.owner,\n            length = $$.config.axis_rotated ? $$.width : $$.height;\n        return domainLength * (pixels / length);\n    };\n    Axis.prototype.generateTickValues = function generateTickValues(values, tickCount, forTimeSeries) {\n        var tickValues = values, targetCount, start, end, count, interval, i, tickValue;\n        if (tickCount) {\n            targetCount = isFunction(tickCount) ? tickCount() : tickCount;\n            // compute ticks according to tickCount\n            if (targetCount === 1) {\n                tickValues = [values[0]];\n            } else if (targetCount === 2) {\n                tickValues = [values[0], values[values.length - 1]];\n            } else if (targetCount > 2) {\n                count = targetCount - 2;\n                start = values[0];\n                end = values[values.length - 1];\n                interval = (end - start) / (count + 1);\n                // re-construct unique values\n                tickValues = [start];\n                for (i = 0; i < count; i++) {\n                    tickValue = +start + interval * (i + 1);\n                    tickValues.push(forTimeSeries ? new Date(tickValue) : tickValue);\n                }\n                tickValues.push(end);\n            }\n        }\n        if (!forTimeSeries) { tickValues = tickValues.sort(function (a, b) { return a - b; }); }\n        return tickValues;\n    };\n    Axis.prototype.generateTransitions = function generateTransitions(duration) {\n        var $$ = this.owner, axes = $$.axes;\n        return {\n            axisX: duration ? axes.x.transition().duration(duration) : axes.x,\n            axisY: duration ? axes.y.transition().duration(duration) : axes.y,\n            axisY2: duration ? axes.y2.transition().duration(duration) : axes.y2,\n            axisSubX: duration ? axes.subx.transition().duration(duration) : axes.subx\n        };\n    };\n    Axis.prototype.redraw = function redraw(transitions, isHidden) {\n        var $$ = this.owner;\n        $$.axes.x.style(\"opacity\", isHidden ? 0 : 1);\n        $$.axes.y.style(\"opacity\", isHidden ? 0 : 1);\n        $$.axes.y2.style(\"opacity\", isHidden ? 0 : 1);\n        $$.axes.subx.style(\"opacity\", isHidden ? 0 : 1);\n        transitions.axisX.call($$.xAxis);\n        transitions.axisY.call($$.yAxis);\n        transitions.axisY2.call($$.y2Axis);\n        transitions.axisSubX.call($$.subXAxis);\n    };\n\n    c3_chart_internal_fn.getClipPath = function (id) {\n        var isIE9 = window.navigator.appVersion.toLowerCase().indexOf(\"msie 9.\") >= 0;\n        return \"url(\" + (isIE9 ? \"\" : document.URL.split('#')[0]) + \"#\" + id + \")\";\n    };\n    c3_chart_internal_fn.appendClip = function (parent, id) {\n        return parent.append(\"clipPath\").attr(\"id\", id).append(\"rect\");\n    };\n    c3_chart_internal_fn.getAxisClipX = function (forHorizontal) {\n        // axis line width + padding for left\n        var left = Math.max(30, this.margin.left);\n        return forHorizontal ? -(1 + left) : -(left - 1);\n    };\n    c3_chart_internal_fn.getAxisClipY = function (forHorizontal) {\n        return forHorizontal ? -20 : -this.margin.top;\n    };\n    c3_chart_internal_fn.getXAxisClipX = function () {\n        var $$ = this;\n        return $$.getAxisClipX(!$$.config.axis_rotated);\n    };\n    c3_chart_internal_fn.getXAxisClipY = function () {\n        var $$ = this;\n        return $$.getAxisClipY(!$$.config.axis_rotated);\n    };\n    c3_chart_internal_fn.getYAxisClipX = function () {\n        var $$ = this;\n        return $$.config.axis_y_inner ? -1 : $$.getAxisClipX($$.config.axis_rotated);\n    };\n    c3_chart_internal_fn.getYAxisClipY = function () {\n        var $$ = this;\n        return $$.getAxisClipY($$.config.axis_rotated);\n    };\n    c3_chart_internal_fn.getAxisClipWidth = function (forHorizontal) {\n        var $$ = this,\n            left = Math.max(30, $$.margin.left),\n            right = Math.max(30, $$.margin.right);\n        // width + axis line width + padding for left/right\n        return forHorizontal ? $$.width + 2 + left + right : $$.margin.left + 20;\n    };\n    c3_chart_internal_fn.getAxisClipHeight = function (forHorizontal) {\n        // less than 20 is not enough to show the axis label 'outer' without legend\n        return (forHorizontal ? this.margin.bottom : (this.margin.top + this.height)) + 20;\n    };\n    c3_chart_internal_fn.getXAxisClipWidth = function () {\n        var $$ = this;\n        return $$.getAxisClipWidth(!$$.config.axis_rotated);\n    };\n    c3_chart_internal_fn.getXAxisClipHeight = function () {\n        var $$ = this;\n        return $$.getAxisClipHeight(!$$.config.axis_rotated);\n    };\n    c3_chart_internal_fn.getYAxisClipWidth = function () {\n        var $$ = this;\n        return $$.getAxisClipWidth($$.config.axis_rotated) + ($$.config.axis_y_inner ? 20 : 0);\n    };\n    c3_chart_internal_fn.getYAxisClipHeight = function () {\n        var $$ = this;\n        return $$.getAxisClipHeight($$.config.axis_rotated);\n    };\n\n    c3_chart_internal_fn.initPie = function () {\n        var $$ = this, d3 = $$.d3, config = $$.config;\n        $$.pie = d3.layout.pie().value(function (d) {\n            return d.values.reduce(function (a, b) { return a + b.value; }, 0);\n        });\n        if (!config.data_order) {\n            $$.pie.sort(null);\n        }\n    };\n\n    c3_chart_internal_fn.updateRadius = function () {\n        var $$ = this, config = $$.config,\n            w = config.gauge_width || config.donut_width;\n        $$.radiusExpanded = Math.min($$.arcWidth, $$.arcHeight) / 2;\n        $$.radius = $$.radiusExpanded * 0.95;\n        $$.innerRadiusRatio = w ? ($$.radius - w) / $$.radius : 0.6;\n        $$.innerRadius = $$.hasType('donut') || $$.hasType('gauge') ? $$.radius * $$.innerRadiusRatio : 0;\n    };\n\n    c3_chart_internal_fn.updateArc = function () {\n        var $$ = this;\n        $$.svgArc = $$.getSvgArc();\n        $$.svgArcExpanded = $$.getSvgArcExpanded();\n        $$.svgArcExpandedSub = $$.getSvgArcExpanded(0.98);\n    };\n\n    c3_chart_internal_fn.updateAngle = function (d) {\n        var $$ = this, config = $$.config,\n            found = false, index = 0,\n            gMin, gMax, gTic, gValue;\n\n        if (!config) {\n            return null;\n        }\n\n        $$.pie($$.filterTargetsToShow($$.data.targets)).forEach(function (t) {\n            if (! found && t.data.id === d.data.id) {\n                found = true;\n                d = t;\n                d.index = index;\n            }\n            index++;\n        });\n        if (isNaN(d.startAngle)) {\n            d.startAngle = 0;\n        }\n        if (isNaN(d.endAngle)) {\n            d.endAngle = d.startAngle;\n        }\n        if ($$.isGaugeType(d.data)) {\n            gMin = config.gauge_min;\n            gMax = config.gauge_max;\n            gTic = (Math.PI * (config.gauge_fullCircle ? 2 : 1)) / (gMax - gMin);\n            gValue = d.value < gMin ? 0 : d.value < gMax ? d.value - gMin : (gMax - gMin);\n            d.startAngle = config.gauge_startingAngle;\n            d.endAngle = d.startAngle + gTic * gValue;\n        }\n        return found ? d : null;\n    };\n\n    c3_chart_internal_fn.getSvgArc = function () {\n        var $$ = this,\n            arc = $$.d3.svg.arc().outerRadius($$.radius).innerRadius($$.innerRadius),\n            newArc = function (d, withoutUpdate) {\n                var updated;\n                if (withoutUpdate) { return arc(d); } // for interpolate\n                updated = $$.updateAngle(d);\n                return updated ? arc(updated) : \"M 0 0\";\n            };\n        // TODO: extends all function\n        newArc.centroid = arc.centroid;\n        return newArc;\n    };\n\n    c3_chart_internal_fn.getSvgArcExpanded = function (rate) {\n        var $$ = this,\n            arc = $$.d3.svg.arc().outerRadius($$.radiusExpanded * (rate ? rate : 1)).innerRadius($$.innerRadius);\n        return function (d) {\n            var updated = $$.updateAngle(d);\n            return updated ? arc(updated) : \"M 0 0\";\n        };\n    };\n\n    c3_chart_internal_fn.getArc = function (d, withoutUpdate, force) {\n        return force || this.isArcType(d.data) ? this.svgArc(d, withoutUpdate) : \"M 0 0\";\n    };\n\n\n    c3_chart_internal_fn.transformForArcLabel = function (d) {\n        var $$ = this, config = $$.config,\n            updated = $$.updateAngle(d), c, x, y, h, ratio, translate = \"\";\n        if (updated && !$$.hasType('gauge')) {\n            c = this.svgArc.centroid(updated);\n            x = isNaN(c[0]) ? 0 : c[0];\n            y = isNaN(c[1]) ? 0 : c[1];\n            h = Math.sqrt(x * x + y * y);\n            if ($$.hasType('donut') && config.donut_label_ratio) {\n                ratio = isFunction(config.donut_label_ratio) ? config.donut_label_ratio(d, $$.radius, h) : config.donut_label_ratio;\n            } else if ($$.hasType('pie') && config.pie_label_ratio) {\n                ratio = isFunction(config.pie_label_ratio) ? config.pie_label_ratio(d, $$.radius, h) : config.pie_label_ratio;\n            } else {\n                ratio = $$.radius && h ? (36 / $$.radius > 0.375 ? 1.175 - 36 / $$.radius : 0.8) * $$.radius / h : 0;\n            }\n            translate = \"translate(\" + (x * ratio) +  ',' + (y * ratio) +  \")\";\n        }\n        return translate;\n    };\n\n    c3_chart_internal_fn.getArcRatio = function (d) {\n        var $$ = this,\n            config = $$.config,\n            whole = Math.PI * ($$.hasType('gauge') && !config.gauge_fullCircle ? 1 : 2);\n        return d ? (d.endAngle - d.startAngle) / whole : null;\n    };\n\n    c3_chart_internal_fn.convertToArcData = function (d) {\n        return this.addName({\n            id: d.data.id,\n            value: d.value,\n            ratio: this.getArcRatio(d),\n            index: d.index\n        });\n    };\n\n    c3_chart_internal_fn.textForArcLabel = function (d) {\n        var $$ = this,\n            updated, value, ratio, id, format;\n        if (! $$.shouldShowArcLabel()) { return \"\"; }\n        updated = $$.updateAngle(d);\n        value = updated ? updated.value : null;\n        ratio = $$.getArcRatio(updated);\n        id = d.data.id;\n        if (! $$.hasType('gauge') && ! $$.meetsArcLabelThreshold(ratio)) { return \"\"; }\n        format = $$.getArcLabelFormat();\n        return format ? format(value, ratio, id) : $$.defaultArcValueFormat(value, ratio);\n    };\n\n    c3_chart_internal_fn.expandArc = function (targetIds) {\n        var $$ = this, interval;\n\n        // MEMO: avoid to cancel transition\n        if ($$.transiting) {\n            interval = window.setInterval(function () {\n                if (!$$.transiting) {\n                    window.clearInterval(interval);\n                    if ($$.legend.selectAll('.c3-legend-item-focused').size() > 0) {\n                        $$.expandArc(targetIds);\n                    }\n                }\n            }, 10);\n            return;\n        }\n\n        targetIds = $$.mapToTargetIds(targetIds);\n\n        $$.svg.selectAll($$.selectorTargets(targetIds, '.' + CLASS.chartArc)).each(function (d) {\n            if (! $$.shouldExpand(d.data.id)) { return; }\n            $$.d3.select(this).selectAll('path')\n                .transition().duration($$.expandDuration(d.data.id))\n                .attr(\"d\", $$.svgArcExpanded)\n                .transition().duration($$.expandDuration(d.data.id) * 2)\n                .attr(\"d\", $$.svgArcExpandedSub)\n                .each(function (d) {\n                    if ($$.isDonutType(d.data)) {\n                        // callback here\n                    }\n                });\n        });\n    };\n\n    c3_chart_internal_fn.unexpandArc = function (targetIds) {\n        var $$ = this;\n\n        if ($$.transiting) { return; }\n\n        targetIds = $$.mapToTargetIds(targetIds);\n\n        $$.svg.selectAll($$.selectorTargets(targetIds, '.' + CLASS.chartArc)).selectAll('path')\n            .transition().duration(function(d) {\n                return $$.expandDuration(d.data.id);\n            })\n            .attr(\"d\", $$.svgArc);\n        $$.svg.selectAll('.' + CLASS.arc)\n            .style(\"opacity\", 1);\n    };\n\n    c3_chart_internal_fn.expandDuration = function (id) {\n        var $$ = this, config = $$.config;\n\n        if ($$.isDonutType(id)) {\n            return config.donut_expand_duration;\n        } else if ($$.isGaugeType(id)) {\n            return config.gauge_expand_duration;\n        } else if ($$.isPieType(id)) {\n            return config.pie_expand_duration;\n        } else {\n            return 50;\n        }\n\n    };\n\n    c3_chart_internal_fn.shouldExpand = function (id) {\n        var $$ = this, config = $$.config;\n        return ($$.isDonutType(id) && config.donut_expand) ||\n               ($$.isGaugeType(id) && config.gauge_expand) ||\n               ($$.isPieType(id) && config.pie_expand);\n    };\n\n    c3_chart_internal_fn.shouldShowArcLabel = function () {\n        var $$ = this, config = $$.config, shouldShow = true;\n        if ($$.hasType('donut')) {\n            shouldShow = config.donut_label_show;\n        } else if ($$.hasType('pie')) {\n            shouldShow = config.pie_label_show;\n        }\n        // when gauge, always true\n        return shouldShow;\n    };\n\n    c3_chart_internal_fn.meetsArcLabelThreshold = function (ratio) {\n        var $$ = this, config = $$.config,\n            threshold = $$.hasType('donut') ? config.donut_label_threshold : config.pie_label_threshold;\n        return ratio >= threshold;\n    };\n\n    c3_chart_internal_fn.getArcLabelFormat = function () {\n        var $$ = this, config = $$.config,\n            format = config.pie_label_format;\n        if ($$.hasType('gauge')) {\n            format = config.gauge_label_format;\n        } else if ($$.hasType('donut')) {\n            format = config.donut_label_format;\n        }\n        return format;\n    };\n\n    c3_chart_internal_fn.getArcTitle = function () {\n        var $$ = this;\n        return $$.hasType('donut') ? $$.config.donut_title : \"\";\n    };\n\n    c3_chart_internal_fn.updateTargetsForArc = function (targets) {\n        var $$ = this, main = $$.main,\n            mainPieUpdate, mainPieEnter,\n            classChartArc = $$.classChartArc.bind($$),\n            classArcs = $$.classArcs.bind($$),\n            classFocus = $$.classFocus.bind($$);\n        mainPieUpdate = main.select('.' + CLASS.chartArcs).selectAll('.' + CLASS.chartArc)\n            .data($$.pie(targets))\n            .attr(\"class\", function (d) { return classChartArc(d) + classFocus(d.data); });\n        mainPieEnter = mainPieUpdate.enter().append(\"g\")\n            .attr(\"class\", classChartArc);\n        mainPieEnter.append('g')\n            .attr('class', classArcs);\n        mainPieEnter.append(\"text\")\n            .attr(\"dy\", $$.hasType('gauge') ? \"-.1em\" : \".35em\")\n            .style(\"opacity\", 0)\n            .style(\"text-anchor\", \"middle\")\n            .style(\"pointer-events\", \"none\");\n        // MEMO: can not keep same color..., but not bad to update color in redraw\n        //mainPieUpdate.exit().remove();\n    };\n\n    c3_chart_internal_fn.initArc = function () {\n        var $$ = this;\n        $$.arcs = $$.main.select('.' + CLASS.chart).append(\"g\")\n            .attr(\"class\", CLASS.chartArcs)\n            .attr(\"transform\", $$.getTranslate('arc'));\n        $$.arcs.append('text')\n            .attr('class', CLASS.chartArcsTitle)\n            .style(\"text-anchor\", \"middle\")\n            .text($$.getArcTitle());\n    };\n\n    c3_chart_internal_fn.redrawArc = function (duration, durationForExit, withTransform) {\n        var $$ = this, d3 = $$.d3, config = $$.config, main = $$.main,\n            mainArc;\n        mainArc = main.selectAll('.' + CLASS.arcs).selectAll('.' + CLASS.arc)\n            .data($$.arcData.bind($$));\n        mainArc.enter().append('path')\n            .attr(\"class\", $$.classArc.bind($$))\n            .style(\"fill\", function (d) { return $$.color(d.data); })\n            .style(\"cursor\", function (d) { return config.interaction_enabled && config.data_selection_isselectable(d) ? \"pointer\" : null; })\n            .style(\"opacity\", 0)\n            .each(function (d) {\n                if ($$.isGaugeType(d.data)) {\n                    d.startAngle = d.endAngle = config.gauge_startingAngle;\n                }\n                this._current = d;\n            });\n        mainArc\n            .attr(\"transform\", function (d) { return !$$.isGaugeType(d.data) && withTransform ? \"scale(0)\" : \"\"; })\n            .style(\"opacity\", function (d) { return d === this._current ? 0 : 1; })\n            .on('mouseover', config.interaction_enabled ? function (d) {\n                var updated, arcData;\n                if ($$.transiting) { // skip while transiting\n                    return;\n                }\n                updated = $$.updateAngle(d);\n                if (updated) {\n                    arcData = $$.convertToArcData(updated);\n                    // transitions\n                    $$.expandArc(updated.data.id);\n                    $$.api.focus(updated.data.id);\n                    $$.toggleFocusLegend(updated.data.id, true);\n                    $$.config.data_onmouseover(arcData, this);\n                }\n            } : null)\n            .on('mousemove', config.interaction_enabled ? function (d) {\n                var updated = $$.updateAngle(d), arcData, selectedData;\n                if (updated) {\n                    arcData = $$.convertToArcData(updated),\n                    selectedData = [arcData];\n                    $$.showTooltip(selectedData, this);\n                }\n            } : null)\n            .on('mouseout', config.interaction_enabled ? function (d) {\n                var updated, arcData;\n                if ($$.transiting) { // skip while transiting\n                    return;\n                }\n                updated = $$.updateAngle(d);\n                if (updated) {\n                    arcData = $$.convertToArcData(updated);\n                    // transitions\n                    $$.unexpandArc(updated.data.id);\n                    $$.api.revert();\n                    $$.revertLegend();\n                    $$.hideTooltip();\n                    $$.config.data_onmouseout(arcData, this);\n                }\n            } : null)\n            .on('click', config.interaction_enabled ? function (d, i) {\n                var updated = $$.updateAngle(d), arcData;\n                if (updated) {\n                    arcData = $$.convertToArcData(updated);\n                    if ($$.toggleShape) {\n                        $$.toggleShape(this, arcData, i);\n                    }\n                    $$.config.data_onclick.call($$.api, arcData, this);\n                }\n            } : null)\n            .each(function () { $$.transiting = true; })\n            .transition().duration(duration)\n            .attrTween(\"d\", function (d) {\n                var updated = $$.updateAngle(d), interpolate;\n                if (! updated) {\n                    return function () { return \"M 0 0\"; };\n                }\n                //                if (this._current === d) {\n                //                    this._current = {\n                //                        startAngle: Math.PI*2,\n                //                        endAngle: Math.PI*2,\n                //                    };\n                //                }\n                if (isNaN(this._current.startAngle)) {\n                    this._current.startAngle = 0;\n                }\n                if (isNaN(this._current.endAngle)) {\n                    this._current.endAngle = this._current.startAngle;\n                }\n                interpolate = d3.interpolate(this._current, updated);\n                this._current = interpolate(0);\n                return function (t) {\n                    var interpolated = interpolate(t);\n                    interpolated.data = d.data; // data.id will be updated by interporator\n                    return $$.getArc(interpolated, true);\n                };\n            })\n            .attr(\"transform\", withTransform ? \"scale(1)\" : \"\")\n            .style(\"fill\", function (d) {\n                return $$.levelColor ? $$.levelColor(d.data.values[0].value) : $$.color(d.data.id);\n            }) // Where gauge reading color would receive customization.\n            .style(\"opacity\", 1)\n            .call($$.endall, function () {\n                $$.transiting = false;\n            });\n        mainArc.exit().transition().duration(durationForExit)\n            .style('opacity', 0)\n            .remove();\n        main.selectAll('.' + CLASS.chartArc).select('text')\n            .style(\"opacity\", 0)\n            .attr('class', function (d) { return $$.isGaugeType(d.data) ? CLASS.gaugeValue : ''; })\n            .text($$.textForArcLabel.bind($$))\n            .attr(\"transform\", $$.transformForArcLabel.bind($$))\n            .style('font-size', function (d) { return $$.isGaugeType(d.data) ? Math.round($$.radius / 5) + 'px' : ''; })\n          .transition().duration(duration)\n            .style(\"opacity\", function (d) { return $$.isTargetToShow(d.data.id) && $$.isArcType(d.data) ? 1 : 0; });\n        main.select('.' + CLASS.chartArcsTitle)\n            .style(\"opacity\", $$.hasType('donut') || $$.hasType('gauge') ? 1 : 0);\n\n        if ($$.hasType('gauge')) {\n            $$.arcs.select('.' + CLASS.chartArcsBackground)\n                .attr(\"d\", function () {\n                    var d = {\n                        data: [{value: config.gauge_max}],\n                        startAngle: config.gauge_startingAngle,\n                        endAngle: -1 * config.gauge_startingAngle\n                    };\n                    return $$.getArc(d, true, true);\n                });\n            $$.arcs.select('.' + CLASS.chartArcsGaugeUnit)\n                .attr(\"dy\", \".75em\")\n                .text(config.gauge_label_show ? config.gauge_units : '');\n            $$.arcs.select('.' + CLASS.chartArcsGaugeMin)\n                .attr(\"dx\", -1 * ($$.innerRadius + (($$.radius - $$.innerRadius) / (config.gauge_fullCircle ? 1 : 2))) + \"px\")\n                .attr(\"dy\", \"1.2em\")\n                .text(config.gauge_label_show ? config.gauge_min : '');\n            $$.arcs.select('.' + CLASS.chartArcsGaugeMax)\n                .attr(\"dx\", $$.innerRadius + (($$.radius - $$.innerRadius) / (config.gauge_fullCircle ? 1 : 2)) + \"px\")\n                .attr(\"dy\", \"1.2em\")\n                .text(config.gauge_label_show ? config.gauge_max : '');\n        }\n    };\n    c3_chart_internal_fn.initGauge = function () {\n        var arcs = this.arcs;\n        if (this.hasType('gauge')) {\n            arcs.append('path')\n                .attr(\"class\", CLASS.chartArcsBackground);\n            arcs.append(\"text\")\n                .attr(\"class\", CLASS.chartArcsGaugeUnit)\n                .style(\"text-anchor\", \"middle\")\n                .style(\"pointer-events\", \"none\");\n            arcs.append(\"text\")\n                .attr(\"class\", CLASS.chartArcsGaugeMin)\n                .style(\"text-anchor\", \"middle\")\n                .style(\"pointer-events\", \"none\");\n            arcs.append(\"text\")\n                .attr(\"class\", CLASS.chartArcsGaugeMax)\n                .style(\"text-anchor\", \"middle\")\n                .style(\"pointer-events\", \"none\");\n        }\n    };\n    c3_chart_internal_fn.getGaugeLabelHeight = function () {\n        return this.config.gauge_label_show ? 20 : 0;\n    };\n\n    c3_chart_internal_fn.initRegion = function () {\n        var $$ = this;\n        $$.region = $$.main.append('g')\n            .attr(\"clip-path\", $$.clipPath)\n            .attr(\"class\", CLASS.regions);\n    };\n    c3_chart_internal_fn.updateRegion = function (duration) {\n        var $$ = this, config = $$.config;\n\n        // hide if arc type\n        $$.region.style('visibility', $$.hasArcType() ? 'hidden' : 'visible');\n\n        $$.mainRegion = $$.main.select('.' + CLASS.regions).selectAll('.' + CLASS.region)\n            .data(config.regions);\n        $$.mainRegion.enter().append('g')\n          .append('rect')\n            .style(\"fill-opacity\", 0);\n        $$.mainRegion\n            .attr('class', $$.classRegion.bind($$));\n        $$.mainRegion.exit().transition().duration(duration)\n            .style(\"opacity\", 0)\n            .remove();\n    };\n    c3_chart_internal_fn.redrawRegion = function (withTransition) {\n        var $$ = this,\n            regions = $$.mainRegion.selectAll('rect').each(function () {\n                // data is binded to g and it's not transferred to rect (child node) automatically,\n                // then data of each rect has to be updated manually.\n                // TODO: there should be more efficient way to solve this?\n                var parentData = $$.d3.select(this.parentNode).datum();\n                $$.d3.select(this).datum(parentData);\n            }),\n            x = $$.regionX.bind($$),\n            y = $$.regionY.bind($$),\n            w = $$.regionWidth.bind($$),\n            h = $$.regionHeight.bind($$);\n        return [\n            (withTransition ? regions.transition() : regions)\n                .attr(\"x\", x)\n                .attr(\"y\", y)\n                .attr(\"width\", w)\n                .attr(\"height\", h)\n                .style(\"fill-opacity\", function (d) { return isValue(d.opacity) ? d.opacity : 0.1; })\n        ];\n    };\n    c3_chart_internal_fn.regionX = function (d) {\n        var $$ = this, config = $$.config,\n            xPos, yScale = d.axis === 'y' ? $$.y : $$.y2;\n        if (d.axis === 'y' || d.axis === 'y2') {\n            xPos = config.axis_rotated ? ('start' in d ? yScale(d.start) : 0) : 0;\n        } else {\n            xPos = config.axis_rotated ? 0 : ('start' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.start) : d.start) : 0);\n        }\n        return xPos;\n    };\n    c3_chart_internal_fn.regionY = function (d) {\n        var $$ = this, config = $$.config,\n            yPos, yScale = d.axis === 'y' ? $$.y : $$.y2;\n        if (d.axis === 'y' || d.axis === 'y2') {\n            yPos = config.axis_rotated ? 0 : ('end' in d ? yScale(d.end) : 0);\n        } else {\n            yPos = config.axis_rotated ? ('start' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.start) : d.start) : 0) : 0;\n        }\n        return yPos;\n    };\n    c3_chart_internal_fn.regionWidth = function (d) {\n        var $$ = this, config = $$.config,\n            start = $$.regionX(d), end, yScale = d.axis === 'y' ? $$.y : $$.y2;\n        if (d.axis === 'y' || d.axis === 'y2') {\n            end = config.axis_rotated ? ('end' in d ? yScale(d.end) : $$.width) : $$.width;\n        } else {\n            end = config.axis_rotated ? $$.width : ('end' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.end) : d.end) : $$.width);\n        }\n        return end < start ? 0 : end - start;\n    };\n    c3_chart_internal_fn.regionHeight = function (d) {\n        var $$ = this, config = $$.config,\n            start = this.regionY(d), end, yScale = d.axis === 'y' ? $$.y : $$.y2;\n        if (d.axis === 'y' || d.axis === 'y2') {\n            end = config.axis_rotated ? $$.height : ('start' in d ? yScale(d.start) : $$.height);\n        } else {\n            end = config.axis_rotated ? ('end' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.end) : d.end) : $$.height) : $$.height;\n        }\n        return end < start ? 0 : end - start;\n    };\n    c3_chart_internal_fn.isRegionOnX = function (d) {\n        return !d.axis || d.axis === 'x';\n    };\n\n    c3_chart_internal_fn.drag = function (mouse) {\n        var $$ = this, config = $$.config, main = $$.main, d3 = $$.d3;\n        var sx, sy, mx, my, minX, maxX, minY, maxY;\n\n        if ($$.hasArcType()) { return; }\n        if (! config.data_selection_enabled) { return; } // do nothing if not selectable\n        if (config.zoom_enabled && ! $$.zoom.altDomain) { return; } // skip if zoomable because of conflict drag dehavior\n        if (!config.data_selection_multiple) { return; } // skip when single selection because drag is used for multiple selection\n\n        sx = $$.dragStart[0];\n        sy = $$.dragStart[1];\n        mx = mouse[0];\n        my = mouse[1];\n        minX = Math.min(sx, mx);\n        maxX = Math.max(sx, mx);\n        minY = (config.data_selection_grouped) ? $$.margin.top : Math.min(sy, my);\n        maxY = (config.data_selection_grouped) ? $$.height : Math.max(sy, my);\n\n        main.select('.' + CLASS.dragarea)\n            .attr('x', minX)\n            .attr('y', minY)\n            .attr('width', maxX - minX)\n            .attr('height', maxY - minY);\n        // TODO: binary search when multiple xs\n        main.selectAll('.' + CLASS.shapes).selectAll('.' + CLASS.shape)\n            .filter(function (d) { return config.data_selection_isselectable(d); })\n            .each(function (d, i) {\n                var shape = d3.select(this),\n                    isSelected = shape.classed(CLASS.SELECTED),\n                    isIncluded = shape.classed(CLASS.INCLUDED),\n                    _x, _y, _w, _h, toggle, isWithin = false, box;\n                if (shape.classed(CLASS.circle)) {\n                    _x = shape.attr(\"cx\") * 1;\n                    _y = shape.attr(\"cy\") * 1;\n                    toggle = $$.togglePoint;\n                    isWithin = minX < _x && _x < maxX && minY < _y && _y < maxY;\n                }\n                else if (shape.classed(CLASS.bar)) {\n                    box = getPathBox(this);\n                    _x = box.x;\n                    _y = box.y;\n                    _w = box.width;\n                    _h = box.height;\n                    toggle = $$.togglePath;\n                    isWithin = !(maxX < _x || _x + _w < minX) && !(maxY < _y || _y + _h < minY);\n                } else {\n                    // line/area selection not supported yet\n                    return;\n                }\n                if (isWithin ^ isIncluded) {\n                    shape.classed(CLASS.INCLUDED, !isIncluded);\n                    // TODO: included/unincluded callback here\n                    shape.classed(CLASS.SELECTED, !isSelected);\n                    toggle.call($$, !isSelected, shape, d, i);\n                }\n            });\n    };\n\n    c3_chart_internal_fn.dragstart = function (mouse) {\n        var $$ = this, config = $$.config;\n        if ($$.hasArcType()) { return; }\n        if (! config.data_selection_enabled) { return; } // do nothing if not selectable\n        $$.dragStart = mouse;\n        $$.main.select('.' + CLASS.chart).append('rect')\n            .attr('class', CLASS.dragarea)\n            .style('opacity', 0.1);\n        $$.dragging = true;\n    };\n\n    c3_chart_internal_fn.dragend = function () {\n        var $$ = this, config = $$.config;\n        if ($$.hasArcType()) { return; }\n        if (! config.data_selection_enabled) { return; } // do nothing if not selectable\n        $$.main.select('.' + CLASS.dragarea)\n            .transition().duration(100)\n            .style('opacity', 0)\n            .remove();\n        $$.main.selectAll('.' + CLASS.shape)\n            .classed(CLASS.INCLUDED, false);\n        $$.dragging = false;\n    };\n\n    c3_chart_internal_fn.selectPoint = function (target, d, i) {\n        var $$ = this, config = $$.config,\n            cx = (config.axis_rotated ? $$.circleY : $$.circleX).bind($$),\n            cy = (config.axis_rotated ? $$.circleX : $$.circleY).bind($$),\n            r = $$.pointSelectR.bind($$);\n        config.data_onselected.call($$.api, d, target.node());\n        // add selected-circle on low layer g\n        $$.main.select('.' + CLASS.selectedCircles + $$.getTargetSelectorSuffix(d.id)).selectAll('.' + CLASS.selectedCircle + '-' + i)\n            .data([d])\n            .enter().append('circle')\n            .attr(\"class\", function () { return $$.generateClass(CLASS.selectedCircle, i); })\n            .attr(\"cx\", cx)\n            .attr(\"cy\", cy)\n            .attr(\"stroke\", function () { return $$.color(d); })\n            .attr(\"r\", function (d) { return $$.pointSelectR(d) * 1.4; })\n            .transition().duration(100)\n            .attr(\"r\", r);\n    };\n    c3_chart_internal_fn.unselectPoint = function (target, d, i) {\n        var $$ = this;\n        $$.config.data_onunselected.call($$.api, d, target.node());\n        // remove selected-circle from low layer g\n        $$.main.select('.' + CLASS.selectedCircles + $$.getTargetSelectorSuffix(d.id)).selectAll('.' + CLASS.selectedCircle + '-' + i)\n            .transition().duration(100).attr('r', 0)\n            .remove();\n    };\n    c3_chart_internal_fn.togglePoint = function (selected, target, d, i) {\n        selected ? this.selectPoint(target, d, i) : this.unselectPoint(target, d, i);\n    };\n    c3_chart_internal_fn.selectPath = function (target, d) {\n        var $$ = this;\n        $$.config.data_onselected.call($$, d, target.node());\n        if ($$.config.interaction_brighten) {\n            target.transition().duration(100)\n                .style(\"fill\", function () { return $$.d3.rgb($$.color(d)).brighter(0.75); });\n        }\n    };\n    c3_chart_internal_fn.unselectPath = function (target, d) {\n        var $$ = this;\n        $$.config.data_onunselected.call($$, d, target.node());\n        if ($$.config.interaction_brighten) {\n            target.transition().duration(100)\n                .style(\"fill\", function () { return $$.color(d); });\n        }\n    };\n    c3_chart_internal_fn.togglePath = function (selected, target, d, i) {\n        selected ? this.selectPath(target, d, i) : this.unselectPath(target, d, i);\n    };\n    c3_chart_internal_fn.getToggle = function (that, d) {\n        var $$ = this, toggle;\n        if (that.nodeName === 'circle') {\n            if ($$.isStepType(d)) {\n                // circle is hidden in step chart, so treat as within the click area\n                toggle = function () {}; // TODO: how to select step chart?\n            } else {\n                toggle = $$.togglePoint;\n            }\n        }\n        else if (that.nodeName === 'path') {\n            toggle = $$.togglePath;\n        }\n        return toggle;\n    };\n    c3_chart_internal_fn.toggleShape = function (that, d, i) {\n        var $$ = this, d3 = $$.d3, config = $$.config,\n            shape = d3.select(that), isSelected = shape.classed(CLASS.SELECTED),\n            toggle = $$.getToggle(that, d).bind($$);\n\n        if (config.data_selection_enabled && config.data_selection_isselectable(d)) {\n            if (!config.data_selection_multiple) {\n                $$.main.selectAll('.' + CLASS.shapes + (config.data_selection_grouped ? $$.getTargetSelectorSuffix(d.id) : \"\")).selectAll('.' + CLASS.shape).each(function (d, i) {\n                    var shape = d3.select(this);\n                    if (shape.classed(CLASS.SELECTED)) { toggle(false, shape.classed(CLASS.SELECTED, false), d, i); }\n                });\n            }\n            shape.classed(CLASS.SELECTED, !isSelected);\n            toggle(!isSelected, shape, d, i);\n        }\n    };\n\n    c3_chart_internal_fn.initBrush = function () {\n        var $$ = this, d3 = $$.d3;\n        $$.brush = d3.svg.brush().on(\"brush\", function () { $$.redrawForBrush(); });\n        $$.brush.update = function () {\n            if ($$.context) { $$.context.select('.' + CLASS.brush).call(this); }\n            return this;\n        };\n        $$.brush.scale = function (scale) {\n            return $$.config.axis_rotated ? this.y(scale) : this.x(scale);\n        };\n    };\n    c3_chart_internal_fn.initSubchart = function () {\n        var $$ = this, config = $$.config,\n            context = $$.context = $$.svg.append(\"g\").attr(\"transform\", $$.getTranslate('context')),\n            visibility = config.subchart_show ? 'visible' : 'hidden';\n\n        context.style('visibility', visibility);\n\n        // Define g for chart area\n        context.append('g')\n            .attr(\"clip-path\", $$.clipPathForSubchart)\n            .attr('class', CLASS.chart);\n\n        // Define g for bar chart area\n        context.select('.' + CLASS.chart).append(\"g\")\n            .attr(\"class\", CLASS.chartBars);\n\n        // Define g for line chart area\n        context.select('.' + CLASS.chart).append(\"g\")\n            .attr(\"class\", CLASS.chartLines);\n\n        // Add extent rect for Brush\n        context.append(\"g\")\n            .attr(\"clip-path\", $$.clipPath)\n            .attr(\"class\", CLASS.brush)\n            .call($$.brush);\n\n        // ATTENTION: This must be called AFTER chart added\n        // Add Axis\n        $$.axes.subx = context.append(\"g\")\n            .attr(\"class\", CLASS.axisX)\n            .attr(\"transform\", $$.getTranslate('subx'))\n            .attr(\"clip-path\", config.axis_rotated ? \"\" : $$.clipPathForXAxis)\n            .style(\"visibility\", config.subchart_axis_x_show ? visibility : 'hidden');\n    };\n    c3_chart_internal_fn.updateTargetsForSubchart = function (targets) {\n        var $$ = this, context = $$.context, config = $$.config,\n            contextLineEnter, contextLineUpdate, contextBarEnter, contextBarUpdate,\n            classChartBar = $$.classChartBar.bind($$),\n            classBars = $$.classBars.bind($$),\n            classChartLine = $$.classChartLine.bind($$),\n            classLines = $$.classLines.bind($$),\n            classAreas = $$.classAreas.bind($$);\n\n        if (config.subchart_show) {\n            //-- Bar --//\n            contextBarUpdate = context.select('.' + CLASS.chartBars).selectAll('.' + CLASS.chartBar)\n                .data(targets)\n                .attr('class', classChartBar);\n            contextBarEnter = contextBarUpdate.enter().append('g')\n                .style('opacity', 0)\n                .attr('class', classChartBar);\n            // Bars for each data\n            contextBarEnter.append('g')\n                .attr(\"class\", classBars);\n\n            //-- Line --//\n            contextLineUpdate = context.select('.' + CLASS.chartLines).selectAll('.' + CLASS.chartLine)\n                .data(targets)\n                .attr('class', classChartLine);\n            contextLineEnter = contextLineUpdate.enter().append('g')\n                .style('opacity', 0)\n                .attr('class', classChartLine);\n            // Lines for each data\n            contextLineEnter.append(\"g\")\n                .attr(\"class\", classLines);\n            // Area\n            contextLineEnter.append(\"g\")\n                .attr(\"class\", classAreas);\n\n            //-- Brush --//\n            context.selectAll('.' + CLASS.brush + ' rect')\n                .attr(config.axis_rotated ? \"width\" : \"height\", config.axis_rotated ? $$.width2 : $$.height2);\n        }\n    };\n    c3_chart_internal_fn.updateBarForSubchart = function (durationForExit) {\n        var $$ = this;\n        $$.contextBar = $$.context.selectAll('.' + CLASS.bars).selectAll('.' + CLASS.bar)\n            .data($$.barData.bind($$));\n        $$.contextBar.enter().append('path')\n            .attr(\"class\", $$.classBar.bind($$))\n            .style(\"stroke\", 'none')\n            .style(\"fill\", $$.color);\n        $$.contextBar\n            .style(\"opacity\", $$.initialOpacity.bind($$));\n        $$.contextBar.exit().transition().duration(durationForExit)\n            .style('opacity', 0)\n            .remove();\n    };\n    c3_chart_internal_fn.redrawBarForSubchart = function (drawBarOnSub, withTransition, duration) {\n        (withTransition ? this.contextBar.transition(Math.random().toString()).duration(duration) : this.contextBar)\n            .attr('d', drawBarOnSub)\n            .style('opacity', 1);\n    };\n    c3_chart_internal_fn.updateLineForSubchart = function (durationForExit) {\n        var $$ = this;\n        $$.contextLine = $$.context.selectAll('.' + CLASS.lines).selectAll('.' + CLASS.line)\n            .data($$.lineData.bind($$));\n        $$.contextLine.enter().append('path')\n            .attr('class', $$.classLine.bind($$))\n            .style('stroke', $$.color);\n        $$.contextLine\n            .style(\"opacity\", $$.initialOpacity.bind($$));\n        $$.contextLine.exit().transition().duration(durationForExit)\n            .style('opacity', 0)\n            .remove();\n    };\n    c3_chart_internal_fn.redrawLineForSubchart = function (drawLineOnSub, withTransition, duration) {\n        (withTransition ? this.contextLine.transition(Math.random().toString()).duration(duration) : this.contextLine)\n            .attr(\"d\", drawLineOnSub)\n            .style('opacity', 1);\n    };\n    c3_chart_internal_fn.updateAreaForSubchart = function (durationForExit) {\n        var $$ = this, d3 = $$.d3;\n        $$.contextArea = $$.context.selectAll('.' + CLASS.areas).selectAll('.' + CLASS.area)\n            .data($$.lineData.bind($$));\n        $$.contextArea.enter().append('path')\n            .attr(\"class\", $$.classArea.bind($$))\n            .style(\"fill\", $$.color)\n            .style(\"opacity\", function () { $$.orgAreaOpacity = +d3.select(this).style('opacity'); return 0; });\n        $$.contextArea\n            .style(\"opacity\", 0);\n        $$.contextArea.exit().transition().duration(durationForExit)\n            .style('opacity', 0)\n            .remove();\n    };\n    c3_chart_internal_fn.redrawAreaForSubchart = function (drawAreaOnSub, withTransition, duration) {\n        (withTransition ? this.contextArea.transition(Math.random().toString()).duration(duration) : this.contextArea)\n            .attr(\"d\", drawAreaOnSub)\n            .style(\"fill\", this.color)\n            .style(\"opacity\", this.orgAreaOpacity);\n    };\n    c3_chart_internal_fn.redrawSubchart = function (withSubchart, transitions, duration, durationForExit, areaIndices, barIndices, lineIndices) {\n        var $$ = this, d3 = $$.d3, config = $$.config,\n            drawAreaOnSub, drawBarOnSub, drawLineOnSub;\n\n        $$.context.style('visibility', config.subchart_show ? 'visible' : 'hidden');\n\n        // subchart\n        if (config.subchart_show) {\n            // reflect main chart to extent on subchart if zoomed\n            if (d3.event && d3.event.type === 'zoom') {\n                $$.brush.extent($$.x.orgDomain()).update();\n            }\n            // update subchart elements if needed\n            if (withSubchart) {\n\n                // extent rect\n                if (!$$.brush.empty()) {\n                    $$.brush.extent($$.x.orgDomain()).update();\n                }\n                // setup drawer - MEMO: this must be called after axis updated\n                drawAreaOnSub = $$.generateDrawArea(areaIndices, true);\n                drawBarOnSub = $$.generateDrawBar(barIndices, true);\n                drawLineOnSub = $$.generateDrawLine(lineIndices, true);\n\n                $$.updateBarForSubchart(duration);\n                $$.updateLineForSubchart(duration);\n                $$.updateAreaForSubchart(duration);\n\n                $$.redrawBarForSubchart(drawBarOnSub, duration, duration);\n                $$.redrawLineForSubchart(drawLineOnSub, duration, duration);\n                $$.redrawAreaForSubchart(drawAreaOnSub, duration, duration);\n            }\n        }\n    };\n    c3_chart_internal_fn.redrawForBrush = function () {\n        var $$ = this, x = $$.x;\n        $$.redraw({\n            withTransition: false,\n            withY: $$.config.zoom_rescale,\n            withSubchart: false,\n            withUpdateXDomain: true,\n            withDimension: false\n        });\n        $$.config.subchart_onbrush.call($$.api, x.orgDomain());\n    };\n    c3_chart_internal_fn.transformContext = function (withTransition, transitions) {\n        var $$ = this, subXAxis;\n        if (transitions && transitions.axisSubX) {\n            subXAxis = transitions.axisSubX;\n        } else {\n            subXAxis = $$.context.select('.' + CLASS.axisX);\n            if (withTransition) { subXAxis = subXAxis.transition(); }\n        }\n        $$.context.attr(\"transform\", $$.getTranslate('context'));\n        subXAxis.attr(\"transform\", $$.getTranslate('subx'));\n    };\n    c3_chart_internal_fn.getDefaultExtent = function () {\n        var $$ = this, config = $$.config,\n            extent = isFunction(config.axis_x_extent) ? config.axis_x_extent($$.getXDomain($$.data.targets)) : config.axis_x_extent;\n        if ($$.isTimeSeries()) {\n            extent = [$$.parseDate(extent[0]), $$.parseDate(extent[1])];\n        }\n        return extent;\n    };\n\n    c3_chart_internal_fn.initZoom = function () {\n        var $$ = this, d3 = $$.d3, config = $$.config, startEvent;\n\n        $$.zoom = d3.behavior.zoom()\n            .on(\"zoomstart\", function () {\n                startEvent = d3.event.sourceEvent;\n                $$.zoom.altDomain = d3.event.sourceEvent.altKey ? $$.x.orgDomain() : null;\n                config.zoom_onzoomstart.call($$.api, d3.event.sourceEvent);\n            })\n            .on(\"zoom\", function () {\n                $$.redrawForZoom.call($$);\n            })\n            .on('zoomend', function () {\n                var event = d3.event.sourceEvent;\n                // if click, do nothing. otherwise, click interaction will be canceled.\n                if (event && startEvent.clientX === event.clientX && startEvent.clientY === event.clientY) {\n                    return;\n                }\n                $$.redrawEventRect();\n                $$.updateZoom();\n                config.zoom_onzoomend.call($$.api, $$.x.orgDomain());\n            });\n        $$.zoom.scale = function (scale) {\n            return config.axis_rotated ? this.y(scale) : this.x(scale);\n        };\n        $$.zoom.orgScaleExtent = function () {\n            var extent = config.zoom_extent ? config.zoom_extent : [1, 10];\n            return [extent[0], Math.max($$.getMaxDataCount() / extent[1], extent[1])];\n        };\n        $$.zoom.updateScaleExtent = function () {\n            var ratio = diffDomain($$.x.orgDomain()) / diffDomain($$.getZoomDomain()),\n                extent = this.orgScaleExtent();\n            this.scaleExtent([extent[0] * ratio, extent[1] * ratio]);\n            return this;\n        };\n    };\n    c3_chart_internal_fn.getZoomDomain = function () {\n        var $$ = this, config = $$.config, d3 = $$.d3,\n            min = d3.min([$$.orgXDomain[0], config.zoom_x_min]),\n            max = d3.max([$$.orgXDomain[1], config.zoom_x_max]);\n        return [min, max];\n    };\n    c3_chart_internal_fn.updateZoom = function () {\n        var $$ = this, z = $$.config.zoom_enabled ? $$.zoom : function () {};\n        $$.main.select('.' + CLASS.zoomRect).call(z).on(\"dblclick.zoom\", null);\n        $$.main.selectAll('.' + CLASS.eventRect).call(z).on(\"dblclick.zoom\", null);\n    };\n    c3_chart_internal_fn.redrawForZoom = function () {\n        var $$ = this, d3 = $$.d3, config = $$.config, zoom = $$.zoom, x = $$.x;\n        if (!config.zoom_enabled) {\n            return;\n        }\n        if ($$.filterTargetsToShow($$.data.targets).length === 0) {\n            return;\n        }\n        if (d3.event.sourceEvent.type === 'mousemove' && zoom.altDomain) {\n            x.domain(zoom.altDomain);\n            zoom.scale(x).updateScaleExtent();\n            return;\n        }\n        if ($$.isCategorized() && x.orgDomain()[0] === $$.orgXDomain[0]) {\n            x.domain([$$.orgXDomain[0] - 1e-10, x.orgDomain()[1]]);\n        }\n        $$.redraw({\n            withTransition: false,\n            withY: config.zoom_rescale,\n            withSubchart: false,\n            withEventRect: false,\n            withDimension: false\n        });\n        if (d3.event.sourceEvent.type === 'mousemove') {\n            $$.cancelClick = true;\n        }\n        config.zoom_onzoom.call($$.api, x.orgDomain());\n    };\n\n    c3_chart_internal_fn.generateColor = function () {\n        var $$ = this, config = $$.config, d3 = $$.d3,\n            colors = config.data_colors,\n            pattern = notEmpty(config.color_pattern) ? config.color_pattern : d3.scale.category10().range(),\n            callback = config.data_color,\n            ids = [];\n\n        return function (d) {\n            var id = d.id || (d.data && d.data.id) || d, color;\n\n            // if callback function is provided\n            if (colors[id] instanceof Function) {\n                color = colors[id](d);\n            }\n            // if specified, choose that color\n            else if (colors[id]) {\n                color = colors[id];\n            }\n            // if not specified, choose from pattern\n            else {\n                if (ids.indexOf(id) < 0) { ids.push(id); }\n                color = pattern[ids.indexOf(id) % pattern.length];\n                colors[id] = color;\n            }\n            return callback instanceof Function ? callback(color, d) : color;\n        };\n    };\n    c3_chart_internal_fn.generateLevelColor = function () {\n        var $$ = this, config = $$.config,\n            colors = config.color_pattern,\n            threshold = config.color_threshold,\n            asValue = threshold.unit === 'value',\n            values = threshold.values && threshold.values.length ? threshold.values : [],\n            max = threshold.max || 100;\n        return notEmpty(config.color_threshold) ? function (value) {\n            var i, v, color = colors[colors.length - 1];\n            for (i = 0; i < values.length; i++) {\n                v = asValue ? value : (value * 100 / max);\n                if (v < values[i]) {\n                    color = colors[i];\n                    break;\n                }\n            }\n            return color;\n        } : null;\n    };\n\n    c3_chart_internal_fn.getYFormat = function (forArc) {\n        var $$ = this,\n            formatForY = forArc && !$$.hasType('gauge') ? $$.defaultArcValueFormat : $$.yFormat,\n            formatForY2 = forArc && !$$.hasType('gauge') ? $$.defaultArcValueFormat : $$.y2Format;\n        return function (v, ratio, id) {\n            var format = $$.axis.getId(id) === 'y2' ? formatForY2 : formatForY;\n            return format.call($$, v, ratio);\n        };\n    };\n    c3_chart_internal_fn.yFormat = function (v) {\n        var $$ = this, config = $$.config,\n            format = config.axis_y_tick_format ? config.axis_y_tick_format : $$.defaultValueFormat;\n        return format(v);\n    };\n    c3_chart_internal_fn.y2Format = function (v) {\n        var $$ = this, config = $$.config,\n            format = config.axis_y2_tick_format ? config.axis_y2_tick_format : $$.defaultValueFormat;\n        return format(v);\n    };\n    c3_chart_internal_fn.defaultValueFormat = function (v) {\n        return isValue(v) ? +v : \"\";\n    };\n    c3_chart_internal_fn.defaultArcValueFormat = function (v, ratio) {\n        return (ratio * 100).toFixed(1) + '%';\n    };\n    c3_chart_internal_fn.dataLabelFormat = function (targetId) {\n        var $$ = this, data_labels = $$.config.data_labels,\n            format, defaultFormat = function (v) { return isValue(v) ? +v : \"\"; };\n        // find format according to axis id\n        if (typeof data_labels.format === 'function') {\n            format = data_labels.format;\n        } else if (typeof data_labels.format === 'object') {\n            if (data_labels.format[targetId]) {\n                format = data_labels.format[targetId] === true ? defaultFormat : data_labels.format[targetId];\n            } else {\n                format = function () { return ''; };\n            }\n        } else {\n            format = defaultFormat;\n        }\n        return format;\n    };\n\n    c3_chart_internal_fn.hasCaches = function (ids) {\n        for (var i = 0; i < ids.length; i++) {\n            if (! (ids[i] in this.cache)) { return false; }\n        }\n        return true;\n    };\n    c3_chart_internal_fn.addCache = function (id, target) {\n        this.cache[id] = this.cloneTarget(target);\n    };\n    c3_chart_internal_fn.getCaches = function (ids) {\n        var targets = [], i;\n        for (i = 0; i < ids.length; i++) {\n            if (ids[i] in this.cache) { targets.push(this.cloneTarget(this.cache[ids[i]])); }\n        }\n        return targets;\n    };\n\n    var CLASS = c3_chart_internal_fn.CLASS = {\n        target: 'c3-target',\n        chart: 'c3-chart',\n        chartLine: 'c3-chart-line',\n        chartLines: 'c3-chart-lines',\n        chartBar: 'c3-chart-bar',\n        chartBars: 'c3-chart-bars',\n        chartText: 'c3-chart-text',\n        chartTexts: 'c3-chart-texts',\n        chartArc: 'c3-chart-arc',\n        chartArcs: 'c3-chart-arcs',\n        chartArcsTitle: 'c3-chart-arcs-title',\n        chartArcsBackground: 'c3-chart-arcs-background',\n        chartArcsGaugeUnit: 'c3-chart-arcs-gauge-unit',\n        chartArcsGaugeMax: 'c3-chart-arcs-gauge-max',\n        chartArcsGaugeMin: 'c3-chart-arcs-gauge-min',\n        selectedCircle: 'c3-selected-circle',\n        selectedCircles: 'c3-selected-circles',\n        eventRect: 'c3-event-rect',\n        eventRects: 'c3-event-rects',\n        eventRectsSingle: 'c3-event-rects-single',\n        eventRectsMultiple: 'c3-event-rects-multiple',\n        zoomRect: 'c3-zoom-rect',\n        brush: 'c3-brush',\n        focused: 'c3-focused',\n        defocused: 'c3-defocused',\n        region: 'c3-region',\n        regions: 'c3-regions',\n        title: 'c3-title',\n        tooltipContainer: 'c3-tooltip-container',\n        tooltip: 'c3-tooltip',\n        tooltipName: 'c3-tooltip-name',\n        shape: 'c3-shape',\n        shapes: 'c3-shapes',\n        line: 'c3-line',\n        lines: 'c3-lines',\n        bar: 'c3-bar',\n        bars: 'c3-bars',\n        circle: 'c3-circle',\n        circles: 'c3-circles',\n        arc: 'c3-arc',\n        arcs: 'c3-arcs',\n        area: 'c3-area',\n        areas: 'c3-areas',\n        empty: 'c3-empty',\n        text: 'c3-text',\n        texts: 'c3-texts',\n        gaugeValue: 'c3-gauge-value',\n        grid: 'c3-grid',\n        gridLines: 'c3-grid-lines',\n        xgrid: 'c3-xgrid',\n        xgrids: 'c3-xgrids',\n        xgridLine: 'c3-xgrid-line',\n        xgridLines: 'c3-xgrid-lines',\n        xgridFocus: 'c3-xgrid-focus',\n        ygrid: 'c3-ygrid',\n        ygrids: 'c3-ygrids',\n        ygridLine: 'c3-ygrid-line',\n        ygridLines: 'c3-ygrid-lines',\n        axis: 'c3-axis',\n        axisX: 'c3-axis-x',\n        axisXLabel: 'c3-axis-x-label',\n        axisY: 'c3-axis-y',\n        axisYLabel: 'c3-axis-y-label',\n        axisY2: 'c3-axis-y2',\n        axisY2Label: 'c3-axis-y2-label',\n        legendBackground: 'c3-legend-background',\n        legendItem: 'c3-legend-item',\n        legendItemEvent: 'c3-legend-item-event',\n        legendItemTile: 'c3-legend-item-tile',\n        legendItemHidden: 'c3-legend-item-hidden',\n        legendItemFocused: 'c3-legend-item-focused',\n        dragarea: 'c3-dragarea',\n        EXPANDED: '_expanded_',\n        SELECTED: '_selected_',\n        INCLUDED: '_included_'\n    };\n    c3_chart_internal_fn.generateClass = function (prefix, targetId) {\n        return \" \" + prefix + \" \" + prefix + this.getTargetSelectorSuffix(targetId);\n    };\n    c3_chart_internal_fn.classText = function (d) {\n        return this.generateClass(CLASS.text, d.index);\n    };\n    c3_chart_internal_fn.classTexts = function (d) {\n        return this.generateClass(CLASS.texts, d.id);\n    };\n    c3_chart_internal_fn.classShape = function (d) {\n        return this.generateClass(CLASS.shape, d.index);\n    };\n    c3_chart_internal_fn.classShapes = function (d) {\n        return this.generateClass(CLASS.shapes, d.id);\n    };\n    c3_chart_internal_fn.classLine = function (d) {\n        return this.classShape(d) + this.generateClass(CLASS.line, d.id);\n    };\n    c3_chart_internal_fn.classLines = function (d) {\n        return this.classShapes(d) + this.generateClass(CLASS.lines, d.id);\n    };\n    c3_chart_internal_fn.classCircle = function (d) {\n        return this.classShape(d) + this.generateClass(CLASS.circle, d.index);\n    };\n    c3_chart_internal_fn.classCircles = function (d) {\n        return this.classShapes(d) + this.generateClass(CLASS.circles, d.id);\n    };\n    c3_chart_internal_fn.classBar = function (d) {\n        return this.classShape(d) + this.generateClass(CLASS.bar, d.index);\n    };\n    c3_chart_internal_fn.classBars = function (d) {\n        return this.classShapes(d) + this.generateClass(CLASS.bars, d.id);\n    };\n    c3_chart_internal_fn.classArc = function (d) {\n        return this.classShape(d.data) + this.generateClass(CLASS.arc, d.data.id);\n    };\n    c3_chart_internal_fn.classArcs = function (d) {\n        return this.classShapes(d.data) + this.generateClass(CLASS.arcs, d.data.id);\n    };\n    c3_chart_internal_fn.classArea = function (d) {\n        return this.classShape(d) + this.generateClass(CLASS.area, d.id);\n    };\n    c3_chart_internal_fn.classAreas = function (d) {\n        return this.classShapes(d) + this.generateClass(CLASS.areas, d.id);\n    };\n    c3_chart_internal_fn.classRegion = function (d, i) {\n        return this.generateClass(CLASS.region, i) + ' ' + ('class' in d ? d['class'] : '');\n    };\n    c3_chart_internal_fn.classEvent = function (d) {\n        return this.generateClass(CLASS.eventRect, d.index);\n    };\n    c3_chart_internal_fn.classTarget = function (id) {\n        var $$ = this;\n        var additionalClassSuffix = $$.config.data_classes[id], additionalClass = '';\n        if (additionalClassSuffix) {\n            additionalClass = ' ' + CLASS.target + '-' + additionalClassSuffix;\n        }\n        return $$.generateClass(CLASS.target, id) + additionalClass;\n    };\n    c3_chart_internal_fn.classFocus = function (d) {\n        return this.classFocused(d) + this.classDefocused(d);\n    };\n    c3_chart_internal_fn.classFocused = function (d) {\n        return ' ' + (this.focusedTargetIds.indexOf(d.id) >= 0 ? CLASS.focused : '');\n    };\n    c3_chart_internal_fn.classDefocused = function (d) {\n        return ' ' + (this.defocusedTargetIds.indexOf(d.id) >= 0 ? CLASS.defocused : '');\n    };\n    c3_chart_internal_fn.classChartText = function (d) {\n        return CLASS.chartText + this.classTarget(d.id);\n    };\n    c3_chart_internal_fn.classChartLine = function (d) {\n        return CLASS.chartLine + this.classTarget(d.id);\n    };\n    c3_chart_internal_fn.classChartBar = function (d) {\n        return CLASS.chartBar + this.classTarget(d.id);\n    };\n    c3_chart_internal_fn.classChartArc = function (d) {\n        return CLASS.chartArc + this.classTarget(d.data.id);\n    };\n    c3_chart_internal_fn.getTargetSelectorSuffix = function (targetId) {\n        return targetId || targetId === 0 ? ('-' + targetId).replace(/[\\s?!@#$%^&*()_=+,.<>'\":;\\[\\]\\/|~`{}\\\\]/g, '-') : '';\n    };\n    c3_chart_internal_fn.selectorTarget = function (id, prefix) {\n        return (prefix || '') + '.' + CLASS.target + this.getTargetSelectorSuffix(id);\n    };\n    c3_chart_internal_fn.selectorTargets = function (ids, prefix) {\n        var $$ = this;\n        ids = ids || [];\n        return ids.length ? ids.map(function (id) { return $$.selectorTarget(id, prefix); }) : null;\n    };\n    c3_chart_internal_fn.selectorLegend = function (id) {\n        return '.' + CLASS.legendItem + this.getTargetSelectorSuffix(id);\n    };\n    c3_chart_internal_fn.selectorLegends = function (ids) {\n        var $$ = this;\n        return ids && ids.length ? ids.map(function (id) { return $$.selectorLegend(id); }) : null;\n    };\n\n    var isValue = c3_chart_internal_fn.isValue = function (v) {\n        return v || v === 0;\n    },\n        isFunction = c3_chart_internal_fn.isFunction = function (o) {\n            return typeof o === 'function';\n        },\n        isString = c3_chart_internal_fn.isString = function (o) {\n            return typeof o === 'string';\n        },\n        isUndefined = c3_chart_internal_fn.isUndefined = function (v) {\n            return typeof v === 'undefined';\n        },\n        isDefined = c3_chart_internal_fn.isDefined = function (v) {\n            return typeof v !== 'undefined';\n        },\n        ceil10 = c3_chart_internal_fn.ceil10 = function (v) {\n            return Math.ceil(v / 10) * 10;\n        },\n        asHalfPixel = c3_chart_internal_fn.asHalfPixel = function (n) {\n            return Math.ceil(n) + 0.5;\n        },\n        diffDomain = c3_chart_internal_fn.diffDomain = function (d) {\n            return d[1] - d[0];\n        },\n        isEmpty = c3_chart_internal_fn.isEmpty = function (o) {\n            return typeof o === 'undefined' || o === null || (isString(o) && o.length === 0) || (typeof o === 'object' && Object.keys(o).length === 0);\n        },\n        notEmpty = c3_chart_internal_fn.notEmpty = function (o) {\n            return !c3_chart_internal_fn.isEmpty(o);\n        },\n        getOption = c3_chart_internal_fn.getOption = function (options, key, defaultValue) {\n            return isDefined(options[key]) ? options[key] : defaultValue;\n        },\n        hasValue = c3_chart_internal_fn.hasValue = function (dict, value) {\n            var found = false;\n            Object.keys(dict).forEach(function (key) {\n                if (dict[key] === value) { found = true; }\n            });\n            return found;\n        },\n        sanitise = c3_chart_internal_fn.sanitise = function (str) {\n            return typeof str === 'string' ? str.replace(/</g, '&lt;').replace(/>/g, '&gt;') : str;\n        },\n        getPathBox = c3_chart_internal_fn.getPathBox = function (path) {\n            var box = path.getBoundingClientRect(),\n                items = [path.pathSegList.getItem(0), path.pathSegList.getItem(1)],\n                minX = items[0].x, minY = Math.min(items[0].y, items[1].y);\n            return {x: minX, y: minY, width: box.width, height: box.height};\n        };\n\n    c3_chart_fn.focus = function (targetIds) {\n        var $$ = this.internal, candidates;\n\n        targetIds = $$.mapToTargetIds(targetIds);\n        candidates = $$.svg.selectAll($$.selectorTargets(targetIds.filter($$.isTargetToShow, $$))),\n\n        this.revert();\n        this.defocus();\n        candidates.classed(CLASS.focused, true).classed(CLASS.defocused, false);\n        if ($$.hasArcType()) {\n            $$.expandArc(targetIds);\n        }\n        $$.toggleFocusLegend(targetIds, true);\n\n        $$.focusedTargetIds = targetIds;\n        $$.defocusedTargetIds = $$.defocusedTargetIds.filter(function (id) {\n            return targetIds.indexOf(id) < 0;\n        });\n    };\n\n    c3_chart_fn.defocus = function (targetIds) {\n        var $$ = this.internal, candidates;\n\n        targetIds = $$.mapToTargetIds(targetIds);\n        candidates = $$.svg.selectAll($$.selectorTargets(targetIds.filter($$.isTargetToShow, $$))),\n\n        candidates.classed(CLASS.focused, false).classed(CLASS.defocused, true);\n        if ($$.hasArcType()) {\n            $$.unexpandArc(targetIds);\n        }\n        $$.toggleFocusLegend(targetIds, false);\n\n        $$.focusedTargetIds = $$.focusedTargetIds.filter(function (id) {\n            return targetIds.indexOf(id) < 0;\n        });\n        $$.defocusedTargetIds = targetIds;\n    };\n\n    c3_chart_fn.revert = function (targetIds) {\n        var $$ = this.internal, candidates;\n\n        targetIds = $$.mapToTargetIds(targetIds);\n        candidates = $$.svg.selectAll($$.selectorTargets(targetIds)); // should be for all targets\n\n        candidates.classed(CLASS.focused, false).classed(CLASS.defocused, false);\n        if ($$.hasArcType()) {\n            $$.unexpandArc(targetIds);\n        }\n        if ($$.config.legend_show) {\n            $$.showLegend(targetIds.filter($$.isLegendToShow.bind($$)));\n            $$.legend.selectAll($$.selectorLegends(targetIds))\n                .filter(function () {\n                    return $$.d3.select(this).classed(CLASS.legendItemFocused);\n                })\n                .classed(CLASS.legendItemFocused, false);\n        }\n\n        $$.focusedTargetIds = [];\n        $$.defocusedTargetIds = [];\n    };\n\n    c3_chart_fn.show = function (targetIds, options) {\n        var $$ = this.internal, targets;\n\n        targetIds = $$.mapToTargetIds(targetIds);\n        options = options || {};\n\n        $$.removeHiddenTargetIds(targetIds);\n        targets = $$.svg.selectAll($$.selectorTargets(targetIds));\n\n        targets.transition()\n            .style('opacity', 1, 'important')\n            .call($$.endall, function () {\n                targets.style('opacity', null).style('opacity', 1);\n            });\n\n        if (options.withLegend) {\n            $$.showLegend(targetIds);\n        }\n\n        $$.redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true, withLegend: true});\n    };\n\n    c3_chart_fn.hide = function (targetIds, options) {\n        var $$ = this.internal, targets;\n\n        targetIds = $$.mapToTargetIds(targetIds);\n        options = options || {};\n\n        $$.addHiddenTargetIds(targetIds);\n        targets = $$.svg.selectAll($$.selectorTargets(targetIds));\n\n        targets.transition()\n            .style('opacity', 0, 'important')\n            .call($$.endall, function () {\n                targets.style('opacity', null).style('opacity', 0);\n            });\n\n        if (options.withLegend) {\n            $$.hideLegend(targetIds);\n        }\n\n        $$.redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true, withLegend: true});\n    };\n\n    c3_chart_fn.toggle = function (targetIds, options) {\n        var that = this, $$ = this.internal;\n        $$.mapToTargetIds(targetIds).forEach(function (targetId) {\n            $$.isTargetToShow(targetId) ? that.hide(targetId, options) : that.show(targetId, options);\n        });\n    };\n\n    c3_chart_fn.zoom = function (domain) {\n        var $$ = this.internal;\n        if (domain) {\n            if ($$.isTimeSeries()) {\n                domain = domain.map(function (x) { return $$.parseDate(x); });\n            }\n            $$.brush.extent(domain);\n            $$.redraw({withUpdateXDomain: true, withY: $$.config.zoom_rescale});\n            $$.config.zoom_onzoom.call(this, $$.x.orgDomain());\n        }\n        return $$.brush.extent();\n    };\n    c3_chart_fn.zoom.enable = function (enabled) {\n        var $$ = this.internal;\n        $$.config.zoom_enabled = enabled;\n        $$.updateAndRedraw();\n    };\n    c3_chart_fn.unzoom = function () {\n        var $$ = this.internal;\n        $$.brush.clear().update();\n        $$.redraw({withUpdateXDomain: true});\n    };\n\n    c3_chart_fn.zoom.max = function (max) {\n        var $$ = this.internal, config = $$.config, d3 = $$.d3;\n        if (max === 0 || max) {\n            config.zoom_x_max = d3.max([$$.orgXDomain[1], max]);\n        }\n        else {\n            return config.zoom_x_max;\n        }\n    };\n\n    c3_chart_fn.zoom.min = function (min) {\n        var $$ = this.internal, config = $$.config, d3 = $$.d3;\n        if (min === 0 || min) {\n            config.zoom_x_min = d3.min([$$.orgXDomain[0], min]);\n        }\n        else {\n            return config.zoom_x_min;\n        }\n    };\n\n    c3_chart_fn.zoom.range = function (range) {\n        if (arguments.length) {\n            if (isDefined(range.max)) { this.domain.max(range.max); }\n            if (isDefined(range.min)) { this.domain.min(range.min); }\n        } else {\n            return {\n                max: this.domain.max(),\n                min: this.domain.min()\n            };\n        }\n    };\n\n    c3_chart_fn.load = function (args) {\n        var $$ = this.internal, config = $$.config;\n        // update xs if specified\n        if (args.xs) {\n            $$.addXs(args.xs);\n        }\n        // update names if exists\n        if ('names' in args) {\n            c3_chart_fn.data.names.bind(this)(args.names);\n        }\n        // update classes if exists\n        if ('classes' in args) {\n            Object.keys(args.classes).forEach(function (id) {\n                config.data_classes[id] = args.classes[id];\n            });\n        }\n        // update categories if exists\n        if ('categories' in args && $$.isCategorized()) {\n            config.axis_x_categories = args.categories;\n        }\n        // update axes if exists\n        if ('axes' in args) {\n            Object.keys(args.axes).forEach(function (id) {\n                config.data_axes[id] = args.axes[id];\n            });\n        }\n        // update colors if exists\n        if ('colors' in args) {\n            Object.keys(args.colors).forEach(function (id) {\n                config.data_colors[id] = args.colors[id];\n            });\n        }\n        // use cache if exists\n        if ('cacheIds' in args && $$.hasCaches(args.cacheIds)) {\n            $$.load($$.getCaches(args.cacheIds), args.done);\n            return;\n        }\n        // unload if needed\n        if ('unload' in args) {\n            // TODO: do not unload if target will load (included in url/rows/columns)\n            $$.unload($$.mapToTargetIds((typeof args.unload === 'boolean' && args.unload) ? null : args.unload), function () {\n                $$.loadFromArgs(args);\n            });\n        } else {\n            $$.loadFromArgs(args);\n        }\n    };\n\n    c3_chart_fn.unload = function (args) {\n        var $$ = this.internal;\n        args = args || {};\n        if (args instanceof Array) {\n            args = {ids: args};\n        } else if (typeof args === 'string') {\n            args = {ids: [args]};\n        }\n        $$.unload($$.mapToTargetIds(args.ids), function () {\n            $$.redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true, withLegend: true});\n            if (args.done) { args.done(); }\n        });\n    };\n\n    c3_chart_fn.flow = function (args) {\n        var $$ = this.internal,\n            targets, data, notfoundIds = [], orgDataCount = $$.getMaxDataCount(),\n            dataCount, domain, baseTarget, baseValue, length = 0, tail = 0, diff, to;\n\n        if (args.json) {\n            data = $$.convertJsonToData(args.json, args.keys);\n        }\n        else if (args.rows) {\n            data = $$.convertRowsToData(args.rows);\n        }\n        else if (args.columns) {\n            data = $$.convertColumnsToData(args.columns);\n        }\n        else {\n            return;\n        }\n        targets = $$.convertDataToTargets(data, true);\n\n        // Update/Add data\n        $$.data.targets.forEach(function (t) {\n            var found = false, i, j;\n            for (i = 0; i < targets.length; i++) {\n                if (t.id === targets[i].id) {\n                    found = true;\n\n                    if (t.values[t.values.length - 1]) {\n                        tail = t.values[t.values.length - 1].index + 1;\n                    }\n                    length = targets[i].values.length;\n\n                    for (j = 0; j < length; j++) {\n                        targets[i].values[j].index = tail + j;\n                        if (!$$.isTimeSeries()) {\n                            targets[i].values[j].x = tail + j;\n                        }\n                    }\n                    t.values = t.values.concat(targets[i].values);\n\n                    targets.splice(i, 1);\n                    break;\n                }\n            }\n            if (!found) { notfoundIds.push(t.id); }\n        });\n\n        // Append null for not found targets\n        $$.data.targets.forEach(function (t) {\n            var i, j;\n            for (i = 0; i < notfoundIds.length; i++) {\n                if (t.id === notfoundIds[i]) {\n                    tail = t.values[t.values.length - 1].index + 1;\n                    for (j = 0; j < length; j++) {\n                        t.values.push({\n                            id: t.id,\n                            index: tail + j,\n                            x: $$.isTimeSeries() ? $$.getOtherTargetX(tail + j) : tail + j,\n                            value: null\n                        });\n                    }\n                }\n            }\n        });\n\n        // Generate null values for new target\n        if ($$.data.targets.length) {\n            targets.forEach(function (t) {\n                var i, missing = [];\n                for (i = $$.data.targets[0].values[0].index; i < tail; i++) {\n                    missing.push({\n                        id: t.id,\n                        index: i,\n                        x: $$.isTimeSeries() ? $$.getOtherTargetX(i) : i,\n                        value: null\n                    });\n                }\n                t.values.forEach(function (v) {\n                    v.index += tail;\n                    if (!$$.isTimeSeries()) {\n                        v.x += tail;\n                    }\n                });\n                t.values = missing.concat(t.values);\n            });\n        }\n        $$.data.targets = $$.data.targets.concat(targets); // add remained\n\n        // check data count because behavior needs to change when it's only one\n        dataCount = $$.getMaxDataCount();\n        baseTarget = $$.data.targets[0];\n        baseValue = baseTarget.values[0];\n\n        // Update length to flow if needed\n        if (isDefined(args.to)) {\n            length = 0;\n            to = $$.isTimeSeries() ? $$.parseDate(args.to) : args.to;\n            baseTarget.values.forEach(function (v) {\n                if (v.x < to) { length++; }\n            });\n        } else if (isDefined(args.length)) {\n            length = args.length;\n        }\n\n        // If only one data, update the domain to flow from left edge of the chart\n        if (!orgDataCount) {\n            if ($$.isTimeSeries()) {\n                if (baseTarget.values.length > 1) {\n                    diff = baseTarget.values[baseTarget.values.length - 1].x - baseValue.x;\n                } else {\n                    diff = baseValue.x - $$.getXDomain($$.data.targets)[0];\n                }\n            } else {\n                diff = 1;\n            }\n            domain = [baseValue.x - diff, baseValue.x];\n            $$.updateXDomain(null, true, true, false, domain);\n        } else if (orgDataCount === 1) {\n            if ($$.isTimeSeries()) {\n                diff = (baseTarget.values[baseTarget.values.length - 1].x - baseValue.x) / 2;\n                domain = [new Date(+baseValue.x - diff), new Date(+baseValue.x + diff)];\n                $$.updateXDomain(null, true, true, false, domain);\n            }\n        }\n\n        // Set targets\n        $$.updateTargets($$.data.targets);\n\n        // Redraw with new targets\n        $$.redraw({\n            flow: {\n                index: baseValue.index,\n                length: length,\n                duration: isValue(args.duration) ? args.duration : $$.config.transition_duration,\n                done: args.done,\n                orgDataCount: orgDataCount,\n            },\n            withLegend: true,\n            withTransition: orgDataCount > 1,\n            withTrimXDomain: false,\n            withUpdateXAxis: true,\n        });\n    };\n\n    c3_chart_internal_fn.generateFlow = function (args) {\n        var $$ = this, config = $$.config, d3 = $$.d3;\n\n        return function () {\n            var targets = args.targets,\n                flow = args.flow,\n                drawBar = args.drawBar,\n                drawLine = args.drawLine,\n                drawArea = args.drawArea,\n                cx = args.cx,\n                cy = args.cy,\n                xv = args.xv,\n                xForText = args.xForText,\n                yForText = args.yForText,\n                duration = args.duration;\n\n            var translateX, scaleX = 1, transform,\n                flowIndex = flow.index,\n                flowLength = flow.length,\n                flowStart = $$.getValueOnIndex($$.data.targets[0].values, flowIndex),\n                flowEnd = $$.getValueOnIndex($$.data.targets[0].values, flowIndex + flowLength),\n                orgDomain = $$.x.domain(), domain,\n                durationForFlow = flow.duration || duration,\n                done = flow.done || function () {},\n                wait = $$.generateWait();\n\n            var xgrid = $$.xgrid || d3.selectAll([]),\n                xgridLines = $$.xgridLines || d3.selectAll([]),\n                mainRegion = $$.mainRegion || d3.selectAll([]),\n                mainText = $$.mainText || d3.selectAll([]),\n                mainBar = $$.mainBar || d3.selectAll([]),\n                mainLine = $$.mainLine || d3.selectAll([]),\n                mainArea = $$.mainArea || d3.selectAll([]),\n                mainCircle = $$.mainCircle || d3.selectAll([]);\n\n            // set flag\n            $$.flowing = true;\n\n            // remove head data after rendered\n            $$.data.targets.forEach(function (d) {\n                d.values.splice(0, flowLength);\n            });\n\n            // update x domain to generate axis elements for flow\n            domain = $$.updateXDomain(targets, true, true);\n            // update elements related to x scale\n            if ($$.updateXGrid) { $$.updateXGrid(true); }\n\n            // generate transform to flow\n            if (!flow.orgDataCount) { // if empty\n                if ($$.data.targets[0].values.length !== 1) {\n                    translateX = $$.x(orgDomain[0]) - $$.x(domain[0]);\n                } else {\n                    if ($$.isTimeSeries()) {\n                        flowStart = $$.getValueOnIndex($$.data.targets[0].values, 0);\n                        flowEnd = $$.getValueOnIndex($$.data.targets[0].values, $$.data.targets[0].values.length - 1);\n                        translateX = $$.x(flowStart.x) - $$.x(flowEnd.x);\n                    } else {\n                        translateX = diffDomain(domain) / 2;\n                    }\n                }\n            } else if (flow.orgDataCount === 1 || (flowStart && flowStart.x) === (flowEnd && flowEnd.x)) {\n                translateX = $$.x(orgDomain[0]) - $$.x(domain[0]);\n            } else {\n                if ($$.isTimeSeries()) {\n                    translateX = ($$.x(orgDomain[0]) - $$.x(domain[0]));\n                } else {\n                    translateX = ($$.x(flowStart.x) - $$.x(flowEnd.x));\n                }\n            }\n            scaleX = (diffDomain(orgDomain) / diffDomain(domain));\n            transform = 'translate(' + translateX + ',0) scale(' + scaleX + ',1)';\n\n            $$.hideXGridFocus();\n\n            d3.transition().ease('linear').duration(durationForFlow).each(function () {\n                wait.add($$.axes.x.transition().call($$.xAxis));\n                wait.add(mainBar.transition().attr('transform', transform));\n                wait.add(mainLine.transition().attr('transform', transform));\n                wait.add(mainArea.transition().attr('transform', transform));\n                wait.add(mainCircle.transition().attr('transform', transform));\n                wait.add(mainText.transition().attr('transform', transform));\n                wait.add(mainRegion.filter($$.isRegionOnX).transition().attr('transform', transform));\n                wait.add(xgrid.transition().attr('transform', transform));\n                wait.add(xgridLines.transition().attr('transform', transform));\n            })\n            .call(wait, function () {\n                var i, shapes = [], texts = [], eventRects = [];\n\n                // remove flowed elements\n                if (flowLength) {\n                    for (i = 0; i < flowLength; i++) {\n                        shapes.push('.' + CLASS.shape + '-' + (flowIndex + i));\n                        texts.push('.' + CLASS.text + '-' + (flowIndex + i));\n                        eventRects.push('.' + CLASS.eventRect + '-' + (flowIndex + i));\n                    }\n                    $$.svg.selectAll('.' + CLASS.shapes).selectAll(shapes).remove();\n                    $$.svg.selectAll('.' + CLASS.texts).selectAll(texts).remove();\n                    $$.svg.selectAll('.' + CLASS.eventRects).selectAll(eventRects).remove();\n                    $$.svg.select('.' + CLASS.xgrid).remove();\n                }\n\n                // draw again for removing flowed elements and reverting attr\n                xgrid\n                    .attr('transform', null)\n                    .attr($$.xgridAttr);\n                xgridLines\n                    .attr('transform', null);\n                xgridLines.select('line')\n                    .attr(\"x1\", config.axis_rotated ? 0 : xv)\n                    .attr(\"x2\", config.axis_rotated ? $$.width : xv);\n                xgridLines.select('text')\n                    .attr(\"x\", config.axis_rotated ? $$.width : 0)\n                    .attr(\"y\", xv);\n                mainBar\n                    .attr('transform', null)\n                    .attr(\"d\", drawBar);\n                mainLine\n                    .attr('transform', null)\n                    .attr(\"d\", drawLine);\n                mainArea\n                    .attr('transform', null)\n                    .attr(\"d\", drawArea);\n                mainCircle\n                    .attr('transform', null)\n                    .attr(\"cx\", cx)\n                    .attr(\"cy\", cy);\n                mainText\n                    .attr('transform', null)\n                    .attr('x', xForText)\n                    .attr('y', yForText)\n                    .style('fill-opacity', $$.opacityForText.bind($$));\n                mainRegion\n                    .attr('transform', null);\n                mainRegion.select('rect').filter($$.isRegionOnX)\n                    .attr(\"x\", $$.regionX.bind($$))\n                    .attr(\"width\", $$.regionWidth.bind($$));\n\n                if (config.interaction_enabled) {\n                    $$.redrawEventRect();\n                }\n\n                // callback for end of flow\n                done();\n\n                $$.flowing = false;\n            });\n        };\n    };\n\n    c3_chart_fn.selected = function (targetId) {\n        var $$ = this.internal, d3 = $$.d3;\n        return d3.merge(\n            $$.main.selectAll('.' + CLASS.shapes + $$.getTargetSelectorSuffix(targetId)).selectAll('.' + CLASS.shape)\n                .filter(function () { return d3.select(this).classed(CLASS.SELECTED); })\n                .map(function (d) { return d.map(function (d) { var data = d.__data__; return data.data ? data.data : data; }); })\n        );\n    };\n    c3_chart_fn.select = function (ids, indices, resetOther) {\n        var $$ = this.internal, d3 = $$.d3, config = $$.config;\n        if (! config.data_selection_enabled) { return; }\n        $$.main.selectAll('.' + CLASS.shapes).selectAll('.' + CLASS.shape).each(function (d, i) {\n            var shape = d3.select(this), id = d.data ? d.data.id : d.id,\n                toggle = $$.getToggle(this, d).bind($$),\n                isTargetId = config.data_selection_grouped || !ids || ids.indexOf(id) >= 0,\n                isTargetIndex = !indices || indices.indexOf(i) >= 0,\n                isSelected = shape.classed(CLASS.SELECTED);\n            // line/area selection not supported yet\n            if (shape.classed(CLASS.line) || shape.classed(CLASS.area)) {\n                return;\n            }\n            if (isTargetId && isTargetIndex) {\n                if (config.data_selection_isselectable(d) && !isSelected) {\n                    toggle(true, shape.classed(CLASS.SELECTED, true), d, i);\n                }\n            } else if (isDefined(resetOther) && resetOther) {\n                if (isSelected) {\n                    toggle(false, shape.classed(CLASS.SELECTED, false), d, i);\n                }\n            }\n        });\n    };\n    c3_chart_fn.unselect = function (ids, indices) {\n        var $$ = this.internal, d3 = $$.d3, config = $$.config;\n        if (! config.data_selection_enabled) { return; }\n        $$.main.selectAll('.' + CLASS.shapes).selectAll('.' + CLASS.shape).each(function (d, i) {\n            var shape = d3.select(this), id = d.data ? d.data.id : d.id,\n                toggle = $$.getToggle(this, d).bind($$),\n                isTargetId = config.data_selection_grouped || !ids || ids.indexOf(id) >= 0,\n                isTargetIndex = !indices || indices.indexOf(i) >= 0,\n                isSelected = shape.classed(CLASS.SELECTED);\n            // line/area selection not supported yet\n            if (shape.classed(CLASS.line) || shape.classed(CLASS.area)) {\n                return;\n            }\n            if (isTargetId && isTargetIndex) {\n                if (config.data_selection_isselectable(d)) {\n                    if (isSelected) {\n                        toggle(false, shape.classed(CLASS.SELECTED, false), d, i);\n                    }\n                }\n            }\n        });\n    };\n\n    c3_chart_fn.transform = function (type, targetIds) {\n        var $$ = this.internal,\n            options = ['pie', 'donut'].indexOf(type) >= 0 ? {withTransform: true} : null;\n        $$.transformTo(targetIds, type, options);\n    };\n\n    c3_chart_internal_fn.transformTo = function (targetIds, type, optionsForRedraw) {\n        var $$ = this,\n            withTransitionForAxis = !$$.hasArcType(),\n            options = optionsForRedraw || {withTransitionForAxis: withTransitionForAxis};\n        options.withTransitionForTransform = false;\n        $$.transiting = false;\n        $$.setTargetType(targetIds, type);\n        $$.updateTargets($$.data.targets); // this is needed when transforming to arc\n        $$.updateAndRedraw(options);\n    };\n\n    c3_chart_fn.groups = function (groups) {\n        var $$ = this.internal, config = $$.config;\n        if (isUndefined(groups)) { return config.data_groups; }\n        config.data_groups = groups;\n        $$.redraw();\n        return config.data_groups;\n    };\n\n    c3_chart_fn.xgrids = function (grids) {\n        var $$ = this.internal, config = $$.config;\n        if (! grids) { return config.grid_x_lines; }\n        config.grid_x_lines = grids;\n        $$.redrawWithoutRescale();\n        return config.grid_x_lines;\n    };\n    c3_chart_fn.xgrids.add = function (grids) {\n        var $$ = this.internal;\n        return this.xgrids($$.config.grid_x_lines.concat(grids ? grids : []));\n    };\n    c3_chart_fn.xgrids.remove = function (params) { // TODO: multiple\n        var $$ = this.internal;\n        $$.removeGridLines(params, true);\n    };\n\n    c3_chart_fn.ygrids = function (grids) {\n        var $$ = this.internal, config = $$.config;\n        if (! grids) { return config.grid_y_lines; }\n        config.grid_y_lines = grids;\n        $$.redrawWithoutRescale();\n        return config.grid_y_lines;\n    };\n    c3_chart_fn.ygrids.add = function (grids) {\n        var $$ = this.internal;\n        return this.ygrids($$.config.grid_y_lines.concat(grids ? grids : []));\n    };\n    c3_chart_fn.ygrids.remove = function (params) { // TODO: multiple\n        var $$ = this.internal;\n        $$.removeGridLines(params, false);\n    };\n\n    c3_chart_fn.regions = function (regions) {\n        var $$ = this.internal, config = $$.config;\n        if (!regions) { return config.regions; }\n        config.regions = regions;\n        $$.redrawWithoutRescale();\n        return config.regions;\n    };\n    c3_chart_fn.regions.add = function (regions) {\n        var $$ = this.internal, config = $$.config;\n        if (!regions) { return config.regions; }\n        config.regions = config.regions.concat(regions);\n        $$.redrawWithoutRescale();\n        return config.regions;\n    };\n    c3_chart_fn.regions.remove = function (options) {\n        var $$ = this.internal, config = $$.config,\n            duration, classes, regions;\n\n        options = options || {};\n        duration = $$.getOption(options, \"duration\", config.transition_duration);\n        classes = $$.getOption(options, \"classes\", [CLASS.region]);\n\n        regions = $$.main.select('.' + CLASS.regions).selectAll(classes.map(function (c) { return '.' + c; }));\n        (duration ? regions.transition().duration(duration) : regions)\n            .style('opacity', 0)\n            .remove();\n\n        config.regions = config.regions.filter(function (region) {\n            var found = false;\n            if (!region['class']) {\n                return true;\n            }\n            region['class'].split(' ').forEach(function (c) {\n                if (classes.indexOf(c) >= 0) { found = true; }\n            });\n            return !found;\n        });\n\n        return config.regions;\n    };\n\n    c3_chart_fn.data = function (targetIds) {\n        var targets = this.internal.data.targets;\n        return typeof targetIds === 'undefined' ? targets : targets.filter(function (t) {\n            return [].concat(targetIds).indexOf(t.id) >= 0;\n        });\n    };\n    c3_chart_fn.data.shown = function (targetIds) {\n        return this.internal.filterTargetsToShow(this.data(targetIds));\n    };\n    c3_chart_fn.data.values = function (targetId) {\n        var targets, values = null;\n        if (targetId) {\n            targets = this.data(targetId);\n            values = targets[0] ? targets[0].values.map(function (d) { return d.value; }) : null;\n        }\n        return values;\n    };\n    c3_chart_fn.data.names = function (names) {\n        this.internal.clearLegendItemTextBoxCache();\n        return this.internal.updateDataAttributes('names', names);\n    };\n    c3_chart_fn.data.colors = function (colors) {\n        return this.internal.updateDataAttributes('colors', colors);\n    };\n    c3_chart_fn.data.axes = function (axes) {\n        return this.internal.updateDataAttributes('axes', axes);\n    };\n\n    c3_chart_fn.category = function (i, category) {\n        var $$ = this.internal, config = $$.config;\n        if (arguments.length > 1) {\n            config.axis_x_categories[i] = category;\n            $$.redraw();\n        }\n        return config.axis_x_categories[i];\n    };\n    c3_chart_fn.categories = function (categories) {\n        var $$ = this.internal, config = $$.config;\n        if (!arguments.length) { return config.axis_x_categories; }\n        config.axis_x_categories = categories;\n        $$.redraw();\n        return config.axis_x_categories;\n    };\n\n    // TODO: fix\n    c3_chart_fn.color = function (id) {\n        var $$ = this.internal;\n        return $$.color(id); // more patterns\n    };\n\n    c3_chart_fn.x = function (x) {\n        var $$ = this.internal;\n        if (arguments.length) {\n            $$.updateTargetX($$.data.targets, x);\n            $$.redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true});\n        }\n        return $$.data.xs;\n    };\n    c3_chart_fn.xs = function (xs) {\n        var $$ = this.internal;\n        if (arguments.length) {\n            $$.updateTargetXs($$.data.targets, xs);\n            $$.redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true});\n        }\n        return $$.data.xs;\n    };\n\n    c3_chart_fn.axis = function () {};\n    c3_chart_fn.axis.labels = function (labels) {\n        var $$ = this.internal;\n        if (arguments.length) {\n            Object.keys(labels).forEach(function (axisId) {\n                $$.axis.setLabelText(axisId, labels[axisId]);\n            });\n            $$.axis.updateLabels();\n        }\n        // TODO: return some values?\n    };\n    c3_chart_fn.axis.max = function (max) {\n        var $$ = this.internal, config = $$.config;\n        if (arguments.length) {\n            if (typeof max === 'object') {\n                if (isValue(max.x)) { config.axis_x_max = max.x; }\n                if (isValue(max.y)) { config.axis_y_max = max.y; }\n                if (isValue(max.y2)) { config.axis_y2_max = max.y2; }\n            } else {\n                config.axis_y_max = config.axis_y2_max = max;\n            }\n            $$.redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true});\n        } else {\n            return {\n                x: config.axis_x_max,\n                y: config.axis_y_max,\n                y2: config.axis_y2_max\n            };\n        }\n    };\n    c3_chart_fn.axis.min = function (min) {\n        var $$ = this.internal, config = $$.config;\n        if (arguments.length) {\n            if (typeof min === 'object') {\n                if (isValue(min.x)) { config.axis_x_min = min.x; }\n                if (isValue(min.y)) { config.axis_y_min = min.y; }\n                if (isValue(min.y2)) { config.axis_y2_min = min.y2; }\n            } else {\n                config.axis_y_min = config.axis_y2_min = min;\n            }\n            $$.redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true});\n        } else {\n            return {\n                x: config.axis_x_min,\n                y: config.axis_y_min,\n                y2: config.axis_y2_min\n            };\n        }\n    };\n    c3_chart_fn.axis.range = function (range) {\n        if (arguments.length) {\n            if (isDefined(range.max)) { this.axis.max(range.max); }\n            if (isDefined(range.min)) { this.axis.min(range.min); }\n        } else {\n            return {\n                max: this.axis.max(),\n                min: this.axis.min()\n            };\n        }\n    };\n\n    c3_chart_fn.legend = function () {};\n    c3_chart_fn.legend.show = function (targetIds) {\n        var $$ = this.internal;\n        $$.showLegend($$.mapToTargetIds(targetIds));\n        $$.updateAndRedraw({withLegend: true});\n    };\n    c3_chart_fn.legend.hide = function (targetIds) {\n        var $$ = this.internal;\n        $$.hideLegend($$.mapToTargetIds(targetIds));\n        $$.updateAndRedraw({withLegend: true});\n    };\n\n    c3_chart_fn.resize = function (size) {\n        var $$ = this.internal, config = $$.config;\n        config.size_width = size ? size.width : null;\n        config.size_height = size ? size.height : null;\n        this.flush();\n    };\n\n    c3_chart_fn.flush = function () {\n        var $$ = this.internal;\n        $$.updateAndRedraw({withLegend: true, withTransition: false, withTransitionForTransform: false});\n    };\n\n    c3_chart_fn.destroy = function () {\n        var $$ = this.internal;\n\n        window.clearInterval($$.intervalForObserveInserted);\n\n        if ($$.resizeTimeout !== undefined) {\n            window.clearTimeout($$.resizeTimeout);\n        }\n\n        if (window.detachEvent) {\n            window.detachEvent('onresize', $$.resizeFunction);\n        } else if (window.removeEventListener) {\n            window.removeEventListener('resize', $$.resizeFunction);\n        } else {\n            var wrapper = window.onresize;\n            // check if no one else removed our wrapper and remove our resizeFunction from it\n            if (wrapper && wrapper.add && wrapper.remove) {\n                wrapper.remove($$.resizeFunction);\n            }\n        }\n\n        $$.selectChart.classed('c3', false).html(\"\");\n\n        // MEMO: this is needed because the reference of some elements will not be released, then memory leak will happen.\n        Object.keys($$).forEach(function (key) {\n            $$[key] = null;\n        });\n\n        return null;\n    };\n\n    c3_chart_fn.tooltip = function () {};\n    c3_chart_fn.tooltip.show = function (args) {\n        var $$ = this.internal, index, mouse;\n\n        // determine mouse position on the chart\n        if (args.mouse) {\n            mouse = args.mouse;\n        }\n\n        // determine focus data\n        if (args.data) {\n            if ($$.isMultipleX()) {\n                // if multiple xs, target point will be determined by mouse\n                mouse = [$$.x(args.data.x), $$.getYScale(args.data.id)(args.data.value)];\n                index = null;\n            } else {\n                // TODO: when tooltip_grouped = false\n                index = isValue(args.data.index) ? args.data.index : $$.getIndexByX(args.data.x);\n            }\n        }\n        else if (typeof args.x !== 'undefined') {\n            index = $$.getIndexByX(args.x);\n        }\n        else if (typeof args.index !== 'undefined') {\n            index = args.index;\n        }\n\n        // emulate mouse events to show\n        $$.dispatchEvent('mouseover', index, mouse);\n        $$.dispatchEvent('mousemove', index, mouse);\n\n        $$.config.tooltip_onshow.call($$, args.data);\n    };\n    c3_chart_fn.tooltip.hide = function () {\n        // TODO: get target data by checking the state of focus\n        this.internal.dispatchEvent('mouseout', 0);\n\n        this.internal.config.tooltip_onhide.call(this);\n    };\n\n    // Features:\n    // 1. category axis\n    // 2. ceil values of translate/x/y to int for half pixel antialiasing\n    // 3. multiline tick text\n    var tickTextCharSize;\n    function c3_axis(d3, params) {\n        var scale = d3.scale.linear(), orient = \"bottom\", innerTickSize = 6, outerTickSize, tickPadding = 3, tickValues = null, tickFormat, tickArguments;\n\n        var tickOffset = 0, tickCulling = true, tickCentered;\n\n        params = params || {};\n        outerTickSize = params.withOuterTick ? 6 : 0;\n\n        function axisX(selection, x) {\n            selection.attr(\"transform\", function (d) {\n                return \"translate(\" + Math.ceil(x(d) + tickOffset) + \", 0)\";\n            });\n        }\n        function axisY(selection, y) {\n            selection.attr(\"transform\", function (d) {\n                return \"translate(0,\" + Math.ceil(y(d)) + \")\";\n            });\n        }\n        function scaleExtent(domain) {\n            var start = domain[0], stop = domain[domain.length - 1];\n            return start < stop ? [ start, stop ] : [ stop, start ];\n        }\n        function generateTicks(scale) {\n            var i, domain, ticks = [];\n            if (scale.ticks) {\n                return scale.ticks.apply(scale, tickArguments);\n            }\n            domain = scale.domain();\n            for (i = Math.ceil(domain[0]); i < domain[1]; i++) {\n                ticks.push(i);\n            }\n            if (ticks.length > 0 && ticks[0] > 0) {\n                ticks.unshift(ticks[0] - (ticks[1] - ticks[0]));\n            }\n            return ticks;\n        }\n        function copyScale() {\n            var newScale = scale.copy(), domain;\n            if (params.isCategory) {\n                domain = scale.domain();\n                newScale.domain([domain[0], domain[1] - 1]);\n            }\n            return newScale;\n        }\n        function textFormatted(v) {\n            var formatted = tickFormat ? tickFormat(v) : v;\n            return typeof formatted !== 'undefined' ? formatted : '';\n        }\n        function getSizeFor1Char(tick) {\n            if (tickTextCharSize) {\n                return tickTextCharSize;\n            }\n            var size = {\n                h: 11.5,\n                w: 5.5\n            };\n            tick.select('text').text(textFormatted).each(function (d) {\n                var box = this.getBoundingClientRect(),\n                    text = textFormatted(d),\n                    h = box.height,\n                    w = text ? (box.width / text.length) : undefined;\n                if (h && w) {\n                    size.h = h;\n                    size.w = w;\n                }\n            }).text('');\n            tickTextCharSize = size;\n            return size;\n        }\n        function transitionise(selection) {\n            return params.withoutTransition ? selection : d3.transition(selection);\n        }\n        function axis(g) {\n            g.each(function () {\n                var g = axis.g = d3.select(this);\n\n                var scale0 = this.__chart__ || scale, scale1 = this.__chart__ = copyScale();\n\n                var ticks = tickValues ? tickValues : generateTicks(scale1),\n                    tick = g.selectAll(\".tick\").data(ticks, scale1),\n                    tickEnter = tick.enter().insert(\"g\", \".domain\").attr(\"class\", \"tick\").style(\"opacity\", 1e-6),\n                    // MEMO: No exit transition. The reason is this transition affects max tick width calculation because old tick will be included in the ticks.\n                    tickExit = tick.exit().remove(),\n                    tickUpdate = transitionise(tick).style(\"opacity\", 1),\n                    tickTransform, tickX, tickY;\n\n                var range = scale.rangeExtent ? scale.rangeExtent() : scaleExtent(scale.range()),\n                    path = g.selectAll(\".domain\").data([ 0 ]),\n                    pathUpdate = (path.enter().append(\"path\").attr(\"class\", \"domain\"), transitionise(path));\n                tickEnter.append(\"line\");\n                tickEnter.append(\"text\");\n\n                var lineEnter = tickEnter.select(\"line\"),\n                    lineUpdate = tickUpdate.select(\"line\"),\n                    textEnter = tickEnter.select(\"text\"),\n                    textUpdate = tickUpdate.select(\"text\");\n\n                if (params.isCategory) {\n                    tickOffset = Math.ceil((scale1(1) - scale1(0)) / 2);\n                    tickX = tickCentered ? 0 : tickOffset;\n                    tickY = tickCentered ? tickOffset : 0;\n                } else {\n                    tickOffset = tickX = 0;\n                }\n\n                var text, tspan, sizeFor1Char = getSizeFor1Char(g.select('.tick')), counts = [];\n                var tickLength = Math.max(innerTickSize, 0) + tickPadding,\n                    isVertical = orient === 'left' || orient === 'right';\n\n                // this should be called only when category axis\n                function splitTickText(d, maxWidth) {\n                    var tickText = textFormatted(d),\n                        subtext, spaceIndex, textWidth, splitted = [];\n\n                    if (Object.prototype.toString.call(tickText) === \"[object Array]\") {\n                        return tickText;\n                    }\n\n                    if (!maxWidth || maxWidth <= 0) {\n                        maxWidth = isVertical ? 95 : params.isCategory ? (Math.ceil(scale1(ticks[1]) - scale1(ticks[0])) - 12) : 110;\n                    }\n\n                    function split(splitted, text) {\n                        spaceIndex = undefined;\n                        for (var i = 1; i < text.length; i++) {\n                            if (text.charAt(i) === ' ') {\n                                spaceIndex = i;\n                            }\n                            subtext = text.substr(0, i + 1);\n                            textWidth = sizeFor1Char.w * subtext.length;\n                            // if text width gets over tick width, split by space index or crrent index\n                            if (maxWidth < textWidth) {\n                                return split(\n                                    splitted.concat(text.substr(0, spaceIndex ? spaceIndex : i)),\n                                    text.slice(spaceIndex ? spaceIndex + 1 : i)\n                                );\n                            }\n                        }\n                        return splitted.concat(text);\n                    }\n\n                    return split(splitted, tickText + \"\");\n                }\n\n                function tspanDy(d, i) {\n                    var dy = sizeFor1Char.h;\n                    if (i === 0) {\n                        if (orient === 'left' || orient === 'right') {\n                            dy = -((counts[d.index] - 1) * (sizeFor1Char.h / 2) - 3);\n                        } else {\n                            dy = \".71em\";\n                        }\n                    }\n                    return dy;\n                }\n\n                function tickSize(d) {\n                    var tickPosition = scale(d) + (tickCentered ? 0 : tickOffset);\n                    return range[0] < tickPosition && tickPosition < range[1] ? innerTickSize : 0;\n                }\n\n                text = tick.select(\"text\");\n                tspan = text.selectAll('tspan')\n                    .data(function (d, i) {\n                        var splitted = params.tickMultiline ? splitTickText(d, params.tickWidth) : [].concat(textFormatted(d));\n                        counts[i] = splitted.length;\n                        return splitted.map(function (s) {\n                            return { index: i, splitted: s };\n                        });\n                    });\n                tspan.enter().append('tspan');\n                tspan.exit().remove();\n                tspan.text(function (d) { return d.splitted; });\n\n                var rotate = params.tickTextRotate;\n\n                function textAnchorForText(rotate) {\n                    if (!rotate) {\n                        return 'middle';\n                    }\n                    return rotate > 0 ? \"start\" : \"end\";\n                }\n                function textTransform(rotate) {\n                    if (!rotate) {\n                        return '';\n                    }\n                    return \"rotate(\" + rotate + \")\";\n                }\n                function dxForText(rotate) {\n                    if (!rotate) {\n                        return 0;\n                    }\n                    return 8 * Math.sin(Math.PI * (rotate / 180));\n                }\n                function yForText(rotate) {\n                    if (!rotate) {\n                        return tickLength;\n                    }\n                    return 11.5 - 2.5 * (rotate / 15) * (rotate > 0 ? 1 : -1);\n                }\n\n                switch (orient) {\n                case \"bottom\":\n                    {\n                        tickTransform = axisX;\n                        lineEnter.attr(\"y2\", innerTickSize);\n                        textEnter.attr(\"y\", tickLength);\n                        lineUpdate.attr(\"x1\", tickX).attr(\"x2\", tickX).attr(\"y2\", tickSize);\n                        textUpdate.attr(\"x\", 0).attr(\"y\", yForText(rotate))\n                            .style(\"text-anchor\", textAnchorForText(rotate))\n                            .attr(\"transform\", textTransform(rotate));\n                        tspan.attr('x', 0).attr(\"dy\", tspanDy).attr('dx', dxForText(rotate));\n                        pathUpdate.attr(\"d\", \"M\" + range[0] + \",\" + outerTickSize + \"V0H\" + range[1] + \"V\" + outerTickSize);\n                        break;\n                    }\n                case \"top\":\n                    {\n                        // TODO: rotated tick text\n                        tickTransform = axisX;\n                        lineEnter.attr(\"y2\", -innerTickSize);\n                        textEnter.attr(\"y\", -tickLength);\n                        lineUpdate.attr(\"x2\", 0).attr(\"y2\", -innerTickSize);\n                        textUpdate.attr(\"x\", 0).attr(\"y\", -tickLength);\n                        text.style(\"text-anchor\", \"middle\");\n                        tspan.attr('x', 0).attr(\"dy\", \"0em\");\n                        pathUpdate.attr(\"d\", \"M\" + range[0] + \",\" + -outerTickSize + \"V0H\" + range[1] + \"V\" + -outerTickSize);\n                        break;\n                    }\n                case \"left\":\n                    {\n                        tickTransform = axisY;\n                        lineEnter.attr(\"x2\", -innerTickSize);\n                        textEnter.attr(\"x\", -tickLength);\n                        lineUpdate.attr(\"x2\", -innerTickSize).attr(\"y1\", tickY).attr(\"y2\", tickY);\n                        textUpdate.attr(\"x\", -tickLength).attr(\"y\", tickOffset);\n                        text.style(\"text-anchor\", \"end\");\n                        tspan.attr('x', -tickLength).attr(\"dy\", tspanDy);\n                        pathUpdate.attr(\"d\", \"M\" + -outerTickSize + \",\" + range[0] + \"H0V\" + range[1] + \"H\" + -outerTickSize);\n                        break;\n                    }\n                case \"right\":\n                    {\n                        tickTransform = axisY;\n                        lineEnter.attr(\"x2\", innerTickSize);\n                        textEnter.attr(\"x\", tickLength);\n                        lineUpdate.attr(\"x2\", innerTickSize).attr(\"y2\", 0);\n                        textUpdate.attr(\"x\", tickLength).attr(\"y\", 0);\n                        text.style(\"text-anchor\", \"start\");\n                        tspan.attr('x', tickLength).attr(\"dy\", tspanDy);\n                        pathUpdate.attr(\"d\", \"M\" + outerTickSize + \",\" + range[0] + \"H0V\" + range[1] + \"H\" + outerTickSize);\n                        break;\n                    }\n                }\n                if (scale1.rangeBand) {\n                    var x = scale1, dx = x.rangeBand() / 2;\n                    scale0 = scale1 = function (d) {\n                        return x(d) + dx;\n                    };\n                } else if (scale0.rangeBand) {\n                    scale0 = scale1;\n                } else {\n                    tickExit.call(tickTransform, scale1);\n                }\n                tickEnter.call(tickTransform, scale0);\n                tickUpdate.call(tickTransform, scale1);\n            });\n        }\n        axis.scale = function (x) {\n            if (!arguments.length) { return scale; }\n            scale = x;\n            return axis;\n        };\n        axis.orient = function (x) {\n            if (!arguments.length) { return orient; }\n            orient = x in {top: 1, right: 1, bottom: 1, left: 1} ? x + \"\" : \"bottom\";\n            return axis;\n        };\n        axis.tickFormat = function (format) {\n            if (!arguments.length) { return tickFormat; }\n            tickFormat = format;\n            return axis;\n        };\n        axis.tickCentered = function (isCentered) {\n            if (!arguments.length) { return tickCentered; }\n            tickCentered = isCentered;\n            return axis;\n        };\n        axis.tickOffset = function () {\n            return tickOffset;\n        };\n        axis.tickInterval = function () {\n            var interval, length;\n            if (params.isCategory) {\n                interval = tickOffset * 2;\n            }\n            else {\n                length = axis.g.select('path.domain').node().getTotalLength() - outerTickSize * 2;\n                interval = length / axis.g.selectAll('line').size();\n            }\n            return interval === Infinity ? 0 : interval;\n        };\n        axis.ticks = function () {\n            if (!arguments.length) { return tickArguments; }\n            tickArguments = arguments;\n            return axis;\n        };\n        axis.tickCulling = function (culling) {\n            if (!arguments.length) { return tickCulling; }\n            tickCulling = culling;\n            return axis;\n        };\n        axis.tickValues = function (x) {\n            if (typeof x === 'function') {\n                tickValues = function () {\n                    return x(scale.domain());\n                };\n            }\n            else {\n                if (!arguments.length) { return tickValues; }\n                tickValues = x;\n            }\n            return axis;\n        };\n        return axis;\n    }\n\n    c3_chart_internal_fn.isSafari = function () {\n        var ua = window.navigator.userAgent;\n        return ua.indexOf('Safari') >= 0 && ua.indexOf('Chrome') < 0;\n    };\n    c3_chart_internal_fn.isChrome = function () {\n        var ua = window.navigator.userAgent;\n        return ua.indexOf('Chrome') >= 0;\n    };\n\n    /* jshint ignore:start */\n\n    // PhantomJS doesn't have support for Function.prototype.bind, which has caused confusion. Use\n    // this polyfill to avoid the confusion.\n    // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind#Polyfill\n\n    if (!Function.prototype.bind) {\n      Function.prototype.bind = function(oThis) {\n        if (typeof this !== 'function') {\n          // closest thing possible to the ECMAScript 5\n          // internal IsCallable function\n          throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');\n        }\n\n        var aArgs   = Array.prototype.slice.call(arguments, 1),\n            fToBind = this,\n            fNOP    = function() {},\n            fBound  = function() {\n              return fToBind.apply(this instanceof fNOP ? this : oThis, aArgs.concat(Array.prototype.slice.call(arguments)));\n            };\n\n        fNOP.prototype = this.prototype;\n        fBound.prototype = new fNOP();\n\n        return fBound;\n      };\n    }\n\n    //SVGPathSeg API polyfill\n    //https://github.com/progers/pathseg\n    //\n    //This is a drop-in replacement for the SVGPathSeg and SVGPathSegList APIs that were removed from\n    //SVG2 (https://lists.w3.org/Archives/Public/www-svg/2015Jun/0044.html), including the latest spec\n    //changes which were implemented in Firefox 43 and Chrome 46.\n    //Chrome 48 removes these APIs, so this polyfill is required.\n\n    (function() { \"use strict\";\n     if (!(\"SVGPathSeg\" in window)) {\n         // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGPathSeg\n         window.SVGPathSeg = function(type, typeAsLetter, owningPathSegList) {\n             this.pathSegType = type;\n             this.pathSegTypeAsLetter = typeAsLetter;\n             this._owningPathSegList = owningPathSegList;\n         }\n\n         SVGPathSeg.PATHSEG_UNKNOWN = 0;\n         SVGPathSeg.PATHSEG_CLOSEPATH = 1;\n         SVGPathSeg.PATHSEG_MOVETO_ABS = 2;\n         SVGPathSeg.PATHSEG_MOVETO_REL = 3;\n         SVGPathSeg.PATHSEG_LINETO_ABS = 4;\n         SVGPathSeg.PATHSEG_LINETO_REL = 5;\n         SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS = 6;\n         SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL = 7;\n         SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS = 8;\n         SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL = 9;\n         SVGPathSeg.PATHSEG_ARC_ABS = 10;\n         SVGPathSeg.PATHSEG_ARC_REL = 11;\n         SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS = 12;\n         SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL = 13;\n         SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS = 14;\n         SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL = 15;\n         SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS = 16;\n         SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL = 17;\n         SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS = 18;\n         SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL = 19;\n\n         // Notify owning PathSegList on any changes so they can be synchronized back to the path element.\n         SVGPathSeg.prototype._segmentChanged = function() {\n             if (this._owningPathSegList)\n                 this._owningPathSegList.segmentChanged(this);\n         }\n\n         window.SVGPathSegClosePath = function(owningPathSegList) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_CLOSEPATH, \"z\", owningPathSegList);\n         }\n         SVGPathSegClosePath.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegClosePath.prototype.toString = function() { return \"[object SVGPathSegClosePath]\"; }\n         SVGPathSegClosePath.prototype._asPathString = function() { return this.pathSegTypeAsLetter; }\n         SVGPathSegClosePath.prototype.clone = function() { return new SVGPathSegClosePath(undefined); }\n\n         window.SVGPathSegMovetoAbs = function(owningPathSegList, x, y) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_MOVETO_ABS, \"M\", owningPathSegList);\n             this._x = x;\n             this._y = y;\n         }\n         SVGPathSegMovetoAbs.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegMovetoAbs.prototype.toString = function() { return \"[object SVGPathSegMovetoAbs]\"; }\n         SVGPathSegMovetoAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y; }\n         SVGPathSegMovetoAbs.prototype.clone = function() { return new SVGPathSegMovetoAbs(undefined, this._x, this._y); }\n         Object.defineProperty(SVGPathSegMovetoAbs.prototype, \"x\", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegMovetoAbs.prototype, \"y\", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegMovetoRel = function(owningPathSegList, x, y) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_MOVETO_REL, \"m\", owningPathSegList);\n             this._x = x;\n             this._y = y;\n         }\n         SVGPathSegMovetoRel.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegMovetoRel.prototype.toString = function() { return \"[object SVGPathSegMovetoRel]\"; }\n         SVGPathSegMovetoRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y; }\n         SVGPathSegMovetoRel.prototype.clone = function() { return new SVGPathSegMovetoRel(undefined, this._x, this._y); }\n         Object.defineProperty(SVGPathSegMovetoRel.prototype, \"x\", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegMovetoRel.prototype, \"y\", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegLinetoAbs = function(owningPathSegList, x, y) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_LINETO_ABS, \"L\", owningPathSegList);\n             this._x = x;\n             this._y = y;\n         }\n         SVGPathSegLinetoAbs.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegLinetoAbs.prototype.toString = function() { return \"[object SVGPathSegLinetoAbs]\"; }\n         SVGPathSegLinetoAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y; }\n         SVGPathSegLinetoAbs.prototype.clone = function() { return new SVGPathSegLinetoAbs(undefined, this._x, this._y); }\n         Object.defineProperty(SVGPathSegLinetoAbs.prototype, \"x\", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegLinetoAbs.prototype, \"y\", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegLinetoRel = function(owningPathSegList, x, y) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_LINETO_REL, \"l\", owningPathSegList);\n             this._x = x;\n             this._y = y;\n         }\n         SVGPathSegLinetoRel.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegLinetoRel.prototype.toString = function() { return \"[object SVGPathSegLinetoRel]\"; }\n         SVGPathSegLinetoRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y; }\n         SVGPathSegLinetoRel.prototype.clone = function() { return new SVGPathSegLinetoRel(undefined, this._x, this._y); }\n         Object.defineProperty(SVGPathSegLinetoRel.prototype, \"x\", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegLinetoRel.prototype, \"y\", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegCurvetoCubicAbs = function(owningPathSegList, x, y, x1, y1, x2, y2) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS, \"C\", owningPathSegList);\n             this._x = x;\n             this._y = y;\n             this._x1 = x1;\n             this._y1 = y1;\n             this._x2 = x2;\n             this._y2 = y2;\n         }\n         SVGPathSegCurvetoCubicAbs.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegCurvetoCubicAbs.prototype.toString = function() { return \"[object SVGPathSegCurvetoCubicAbs]\"; }\n         SVGPathSegCurvetoCubicAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._x1 + \" \" + this._y1 + \" \" + this._x2 + \" \" + this._y2 + \" \" + this._x + \" \" + this._y; }\n         SVGPathSegCurvetoCubicAbs.prototype.clone = function() { return new SVGPathSegCurvetoCubicAbs(undefined, this._x, this._y, this._x1, this._y1, this._x2, this._y2); }\n         Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype, \"x\", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype, \"y\", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype, \"x1\", { get: function() { return this._x1; }, set: function(x1) { this._x1 = x1; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype, \"y1\", { get: function() { return this._y1; }, set: function(y1) { this._y1 = y1; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype, \"x2\", { get: function() { return this._x2; }, set: function(x2) { this._x2 = x2; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype, \"y2\", { get: function() { return this._y2; }, set: function(y2) { this._y2 = y2; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegCurvetoCubicRel = function(owningPathSegList, x, y, x1, y1, x2, y2) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL, \"c\", owningPathSegList);\n             this._x = x;\n             this._y = y;\n             this._x1 = x1;\n             this._y1 = y1;\n             this._x2 = x2;\n             this._y2 = y2;\n         }\n         SVGPathSegCurvetoCubicRel.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegCurvetoCubicRel.prototype.toString = function() { return \"[object SVGPathSegCurvetoCubicRel]\"; }\n         SVGPathSegCurvetoCubicRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._x1 + \" \" + this._y1 + \" \" + this._x2 + \" \" + this._y2 + \" \" + this._x + \" \" + this._y; }\n         SVGPathSegCurvetoCubicRel.prototype.clone = function() { return new SVGPathSegCurvetoCubicRel(undefined, this._x, this._y, this._x1, this._y1, this._x2, this._y2); }\n         Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype, \"x\", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype, \"y\", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype, \"x1\", { get: function() { return this._x1; }, set: function(x1) { this._x1 = x1; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype, \"y1\", { get: function() { return this._y1; }, set: function(y1) { this._y1 = y1; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype, \"x2\", { get: function() { return this._x2; }, set: function(x2) { this._x2 = x2; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype, \"y2\", { get: function() { return this._y2; }, set: function(y2) { this._y2 = y2; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegCurvetoQuadraticAbs = function(owningPathSegList, x, y, x1, y1) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS, \"Q\", owningPathSegList);\n             this._x = x;\n             this._y = y;\n             this._x1 = x1;\n             this._y1 = y1;\n         }\n         SVGPathSegCurvetoQuadraticAbs.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegCurvetoQuadraticAbs.prototype.toString = function() { return \"[object SVGPathSegCurvetoQuadraticAbs]\"; }\n         SVGPathSegCurvetoQuadraticAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._x1 + \" \" + this._y1 + \" \" + this._x + \" \" + this._y; }\n         SVGPathSegCurvetoQuadraticAbs.prototype.clone = function() { return new SVGPathSegCurvetoQuadraticAbs(undefined, this._x, this._y, this._x1, this._y1); }\n         Object.defineProperty(SVGPathSegCurvetoQuadraticAbs.prototype, \"x\", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoQuadraticAbs.prototype, \"y\", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoQuadraticAbs.prototype, \"x1\", { get: function() { return this._x1; }, set: function(x1) { this._x1 = x1; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoQuadraticAbs.prototype, \"y1\", { get: function() { return this._y1; }, set: function(y1) { this._y1 = y1; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegCurvetoQuadraticRel = function(owningPathSegList, x, y, x1, y1) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL, \"q\", owningPathSegList);\n             this._x = x;\n             this._y = y;\n             this._x1 = x1;\n             this._y1 = y1;\n         }\n         SVGPathSegCurvetoQuadraticRel.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegCurvetoQuadraticRel.prototype.toString = function() { return \"[object SVGPathSegCurvetoQuadraticRel]\"; }\n         SVGPathSegCurvetoQuadraticRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._x1 + \" \" + this._y1 + \" \" + this._x + \" \" + this._y; }\n         SVGPathSegCurvetoQuadraticRel.prototype.clone = function() { return new SVGPathSegCurvetoQuadraticRel(undefined, this._x, this._y, this._x1, this._y1); }\n         Object.defineProperty(SVGPathSegCurvetoQuadraticRel.prototype, \"x\", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoQuadraticRel.prototype, \"y\", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoQuadraticRel.prototype, \"x1\", { get: function() { return this._x1; }, set: function(x1) { this._x1 = x1; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoQuadraticRel.prototype, \"y1\", { get: function() { return this._y1; }, set: function(y1) { this._y1 = y1; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegArcAbs = function(owningPathSegList, x, y, r1, r2, angle, largeArcFlag, sweepFlag) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_ARC_ABS, \"A\", owningPathSegList);\n             this._x = x;\n             this._y = y;\n             this._r1 = r1;\n             this._r2 = r2;\n             this._angle = angle;\n             this._largeArcFlag = largeArcFlag;\n             this._sweepFlag = sweepFlag;\n         }\n         SVGPathSegArcAbs.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegArcAbs.prototype.toString = function() { return \"[object SVGPathSegArcAbs]\"; }\n         SVGPathSegArcAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._r1 + \" \" + this._r2 + \" \" + this._angle + \" \" + (this._largeArcFlag ? \"1\" : \"0\") + \" \" + (this._sweepFlag ? \"1\" : \"0\") + \" \" + this._x + \" \" + this._y; }\n         SVGPathSegArcAbs.prototype.clone = function() { return new SVGPathSegArcAbs(undefined, this._x, this._y, this._r1, this._r2, this._angle, this._largeArcFlag, this._sweepFlag); }\n         Object.defineProperty(SVGPathSegArcAbs.prototype, \"x\", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegArcAbs.prototype, \"y\", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegArcAbs.prototype, \"r1\", { get: function() { return this._r1; }, set: function(r1) { this._r1 = r1; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegArcAbs.prototype, \"r2\", { get: function() { return this._r2; }, set: function(r2) { this._r2 = r2; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegArcAbs.prototype, \"angle\", { get: function() { return this._angle; }, set: function(angle) { this._angle = angle; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegArcAbs.prototype, \"largeArcFlag\", { get: function() { return this._largeArcFlag; }, set: function(largeArcFlag) { this._largeArcFlag = largeArcFlag; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegArcAbs.prototype, \"sweepFlag\", { get: function() { return this._sweepFlag; }, set: function(sweepFlag) { this._sweepFlag = sweepFlag; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegArcRel = function(owningPathSegList, x, y, r1, r2, angle, largeArcFlag, sweepFlag) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_ARC_REL, \"a\", owningPathSegList);\n             this._x = x;\n             this._y = y;\n             this._r1 = r1;\n             this._r2 = r2;\n             this._angle = angle;\n             this._largeArcFlag = largeArcFlag;\n             this._sweepFlag = sweepFlag;\n         }\n         SVGPathSegArcRel.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegArcRel.prototype.toString = function() { return \"[object SVGPathSegArcRel]\"; }\n         SVGPathSegArcRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._r1 + \" \" + this._r2 + \" \" + this._angle + \" \" + (this._largeArcFlag ? \"1\" : \"0\") + \" \" + (this._sweepFlag ? \"1\" : \"0\") + \" \" + this._x + \" \" + this._y; }\n         SVGPathSegArcRel.prototype.clone = function() { return new SVGPathSegArcRel(undefined, this._x, this._y, this._r1, this._r2, this._angle, this._largeArcFlag, this._sweepFlag); }\n         Object.defineProperty(SVGPathSegArcRel.prototype, \"x\", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegArcRel.prototype, \"y\", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegArcRel.prototype, \"r1\", { get: function() { return this._r1; }, set: function(r1) { this._r1 = r1; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegArcRel.prototype, \"r2\", { get: function() { return this._r2; }, set: function(r2) { this._r2 = r2; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegArcRel.prototype, \"angle\", { get: function() { return this._angle; }, set: function(angle) { this._angle = angle; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegArcRel.prototype, \"largeArcFlag\", { get: function() { return this._largeArcFlag; }, set: function(largeArcFlag) { this._largeArcFlag = largeArcFlag; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegArcRel.prototype, \"sweepFlag\", { get: function() { return this._sweepFlag; }, set: function(sweepFlag) { this._sweepFlag = sweepFlag; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegLinetoHorizontalAbs = function(owningPathSegList, x) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS, \"H\", owningPathSegList);\n             this._x = x;\n         }\n         SVGPathSegLinetoHorizontalAbs.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegLinetoHorizontalAbs.prototype.toString = function() { return \"[object SVGPathSegLinetoHorizontalAbs]\"; }\n         SVGPathSegLinetoHorizontalAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._x; }\n         SVGPathSegLinetoHorizontalAbs.prototype.clone = function() { return new SVGPathSegLinetoHorizontalAbs(undefined, this._x); }\n         Object.defineProperty(SVGPathSegLinetoHorizontalAbs.prototype, \"x\", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegLinetoHorizontalRel = function(owningPathSegList, x) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL, \"h\", owningPathSegList);\n             this._x = x;\n         }\n         SVGPathSegLinetoHorizontalRel.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegLinetoHorizontalRel.prototype.toString = function() { return \"[object SVGPathSegLinetoHorizontalRel]\"; }\n         SVGPathSegLinetoHorizontalRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._x; }\n         SVGPathSegLinetoHorizontalRel.prototype.clone = function() { return new SVGPathSegLinetoHorizontalRel(undefined, this._x); }\n         Object.defineProperty(SVGPathSegLinetoHorizontalRel.prototype, \"x\", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegLinetoVerticalAbs = function(owningPathSegList, y) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS, \"V\", owningPathSegList);\n             this._y = y;\n         }\n         SVGPathSegLinetoVerticalAbs.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegLinetoVerticalAbs.prototype.toString = function() { return \"[object SVGPathSegLinetoVerticalAbs]\"; }\n         SVGPathSegLinetoVerticalAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._y; }\n         SVGPathSegLinetoVerticalAbs.prototype.clone = function() { return new SVGPathSegLinetoVerticalAbs(undefined, this._y); }\n         Object.defineProperty(SVGPathSegLinetoVerticalAbs.prototype, \"y\", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegLinetoVerticalRel = function(owningPathSegList, y) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL, \"v\", owningPathSegList);\n             this._y = y;\n         }\n         SVGPathSegLinetoVerticalRel.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegLinetoVerticalRel.prototype.toString = function() { return \"[object SVGPathSegLinetoVerticalRel]\"; }\n         SVGPathSegLinetoVerticalRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._y; }\n         SVGPathSegLinetoVerticalRel.prototype.clone = function() { return new SVGPathSegLinetoVerticalRel(undefined, this._y); }\n         Object.defineProperty(SVGPathSegLinetoVerticalRel.prototype, \"y\", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegCurvetoCubicSmoothAbs = function(owningPathSegList, x, y, x2, y2) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS, \"S\", owningPathSegList);\n             this._x = x;\n             this._y = y;\n             this._x2 = x2;\n             this._y2 = y2;\n         }\n         SVGPathSegCurvetoCubicSmoothAbs.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegCurvetoCubicSmoothAbs.prototype.toString = function() { return \"[object SVGPathSegCurvetoCubicSmoothAbs]\"; }\n         SVGPathSegCurvetoCubicSmoothAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._x2 + \" \" + this._y2 + \" \" + this._x + \" \" + this._y; }\n         SVGPathSegCurvetoCubicSmoothAbs.prototype.clone = function() { return new SVGPathSegCurvetoCubicSmoothAbs(undefined, this._x, this._y, this._x2, this._y2); }\n         Object.defineProperty(SVGPathSegCurvetoCubicSmoothAbs.prototype, \"x\", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoCubicSmoothAbs.prototype, \"y\", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoCubicSmoothAbs.prototype, \"x2\", { get: function() { return this._x2; }, set: function(x2) { this._x2 = x2; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoCubicSmoothAbs.prototype, \"y2\", { get: function() { return this._y2; }, set: function(y2) { this._y2 = y2; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegCurvetoCubicSmoothRel = function(owningPathSegList, x, y, x2, y2) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL, \"s\", owningPathSegList);\n             this._x = x;\n             this._y = y;\n             this._x2 = x2;\n             this._y2 = y2;\n         }\n         SVGPathSegCurvetoCubicSmoothRel.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegCurvetoCubicSmoothRel.prototype.toString = function() { return \"[object SVGPathSegCurvetoCubicSmoothRel]\"; }\n         SVGPathSegCurvetoCubicSmoothRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._x2 + \" \" + this._y2 + \" \" + this._x + \" \" + this._y; }\n         SVGPathSegCurvetoCubicSmoothRel.prototype.clone = function() { return new SVGPathSegCurvetoCubicSmoothRel(undefined, this._x, this._y, this._x2, this._y2); }\n         Object.defineProperty(SVGPathSegCurvetoCubicSmoothRel.prototype, \"x\", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoCubicSmoothRel.prototype, \"y\", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoCubicSmoothRel.prototype, \"x2\", { get: function() { return this._x2; }, set: function(x2) { this._x2 = x2; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoCubicSmoothRel.prototype, \"y2\", { get: function() { return this._y2; }, set: function(y2) { this._y2 = y2; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegCurvetoQuadraticSmoothAbs = function(owningPathSegList, x, y) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS, \"T\", owningPathSegList);\n             this._x = x;\n             this._y = y;\n         }\n         SVGPathSegCurvetoQuadraticSmoothAbs.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegCurvetoQuadraticSmoothAbs.prototype.toString = function() { return \"[object SVGPathSegCurvetoQuadraticSmoothAbs]\"; }\n         SVGPathSegCurvetoQuadraticSmoothAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y; }\n         SVGPathSegCurvetoQuadraticSmoothAbs.prototype.clone = function() { return new SVGPathSegCurvetoQuadraticSmoothAbs(undefined, this._x, this._y); }\n         Object.defineProperty(SVGPathSegCurvetoQuadraticSmoothAbs.prototype, \"x\", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoQuadraticSmoothAbs.prototype, \"y\", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });\n\n         window.SVGPathSegCurvetoQuadraticSmoothRel = function(owningPathSegList, x, y) {\n             SVGPathSeg.call(this, SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL, \"t\", owningPathSegList);\n             this._x = x;\n             this._y = y;\n         }\n         SVGPathSegCurvetoQuadraticSmoothRel.prototype = Object.create(SVGPathSeg.prototype);\n         SVGPathSegCurvetoQuadraticSmoothRel.prototype.toString = function() { return \"[object SVGPathSegCurvetoQuadraticSmoothRel]\"; }\n         SVGPathSegCurvetoQuadraticSmoothRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y; }\n         SVGPathSegCurvetoQuadraticSmoothRel.prototype.clone = function() { return new SVGPathSegCurvetoQuadraticSmoothRel(undefined, this._x, this._y); }\n         Object.defineProperty(SVGPathSegCurvetoQuadraticSmoothRel.prototype, \"x\", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });\n         Object.defineProperty(SVGPathSegCurvetoQuadraticSmoothRel.prototype, \"y\", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });\n\n         // Add createSVGPathSeg* functions to SVGPathElement.\n         // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGPathElement.\n         SVGPathElement.prototype.createSVGPathSegClosePath = function() { return new SVGPathSegClosePath(undefined); }\n         SVGPathElement.prototype.createSVGPathSegMovetoAbs = function(x, y) { return new SVGPathSegMovetoAbs(undefined, x, y); }\n         SVGPathElement.prototype.createSVGPathSegMovetoRel = function(x, y) { return new SVGPathSegMovetoRel(undefined, x, y); }\n         SVGPathElement.prototype.createSVGPathSegLinetoAbs = function(x, y) { return new SVGPathSegLinetoAbs(undefined, x, y); }\n         SVGPathElement.prototype.createSVGPathSegLinetoRel = function(x, y) { return new SVGPathSegLinetoRel(undefined, x, y); }\n         SVGPathElement.prototype.createSVGPathSegCurvetoCubicAbs = function(x, y, x1, y1, x2, y2) { return new SVGPathSegCurvetoCubicAbs(undefined, x, y, x1, y1, x2, y2); }\n         SVGPathElement.prototype.createSVGPathSegCurvetoCubicRel = function(x, y, x1, y1, x2, y2) { return new SVGPathSegCurvetoCubicRel(undefined, x, y, x1, y1, x2, y2); }\n         SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticAbs = function(x, y, x1, y1) { return new SVGPathSegCurvetoQuadraticAbs(undefined, x, y, x1, y1); }\n         SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticRel = function(x, y, x1, y1) { return new SVGPathSegCurvetoQuadraticRel(undefined, x, y, x1, y1); }\n         SVGPathElement.prototype.createSVGPathSegArcAbs = function(x, y, r1, r2, angle, largeArcFlag, sweepFlag) { return new SVGPathSegArcAbs(undefined, x, y, r1, r2, angle, largeArcFlag, sweepFlag); }\n         SVGPathElement.prototype.createSVGPathSegArcRel = function(x, y, r1, r2, angle, largeArcFlag, sweepFlag) { return new SVGPathSegArcRel(undefined, x, y, r1, r2, angle, largeArcFlag, sweepFlag); }\n         SVGPathElement.prototype.createSVGPathSegLinetoHorizontalAbs = function(x) { return new SVGPathSegLinetoHorizontalAbs(undefined, x); }\n         SVGPathElement.prototype.createSVGPathSegLinetoHorizontalRel = function(x) { return new SVGPathSegLinetoHorizontalRel(undefined, x); }\n         SVGPathElement.prototype.createSVGPathSegLinetoVerticalAbs = function(y) { return new SVGPathSegLinetoVerticalAbs(undefined, y); }\n         SVGPathElement.prototype.createSVGPathSegLinetoVerticalRel = function(y) { return new SVGPathSegLinetoVerticalRel(undefined, y); }\n         SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothAbs = function(x, y, x2, y2) { return new SVGPathSegCurvetoCubicSmoothAbs(undefined, x, y, x2, y2); }\n         SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothRel = function(x, y, x2, y2) { return new SVGPathSegCurvetoCubicSmoothRel(undefined, x, y, x2, y2); }\n         SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothAbs = function(x, y) { return new SVGPathSegCurvetoQuadraticSmoothAbs(undefined, x, y); }\n         SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothRel = function(x, y) { return new SVGPathSegCurvetoQuadraticSmoothRel(undefined, x, y); }\n     }\n\n     if (!(\"SVGPathSegList\" in window)) {\n         // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGPathSegList\n         window.SVGPathSegList = function(pathElement) {\n             this._pathElement = pathElement;\n             this._list = this._parsePath(this._pathElement.getAttribute(\"d\"));\n\n             // Use a MutationObserver to catch changes to the path's \"d\" attribute.\n             this._mutationObserverConfig = { \"attributes\": true, \"attributeFilter\": [\"d\"] };\n             this._pathElementMutationObserver = new MutationObserver(this._updateListFromPathMutations.bind(this));\n             this._pathElementMutationObserver.observe(this._pathElement, this._mutationObserverConfig);\n         }\n\n         Object.defineProperty(SVGPathSegList.prototype, \"numberOfItems\", {\n             get: function() {\n                 this._checkPathSynchronizedToList();\n                 return this._list.length;\n             },\n             enumerable: true\n         });\n\n         // Add the pathSegList accessors to SVGPathElement.\n         // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGAnimatedPathData\n         Object.defineProperty(SVGPathElement.prototype, \"pathSegList\", {\n             get: function() {\n                 if (!this._pathSegList)\n                     this._pathSegList = new SVGPathSegList(this);\n                 return this._pathSegList;\n             },\n             enumerable: true\n         });\n         // FIXME: The following are not implemented and simply return SVGPathElement.pathSegList.\n         Object.defineProperty(SVGPathElement.prototype, \"normalizedPathSegList\", { get: function() { return this.pathSegList; }, enumerable: true });\n         Object.defineProperty(SVGPathElement.prototype, \"animatedPathSegList\", { get: function() { return this.pathSegList; }, enumerable: true });\n         Object.defineProperty(SVGPathElement.prototype, \"animatedNormalizedPathSegList\", { get: function() { return this.pathSegList; }, enumerable: true });\n\n         // Process any pending mutations to the path element and update the list as needed.\n         // This should be the first call of all public functions and is needed because\n         // MutationObservers are not synchronous so we can have pending asynchronous mutations.\n         SVGPathSegList.prototype._checkPathSynchronizedToList = function() {\n             this._updateListFromPathMutations(this._pathElementMutationObserver.takeRecords());\n         }\n\n         SVGPathSegList.prototype._updateListFromPathMutations = function(mutationRecords) {\n             if (!this._pathElement)\n                 return;\n             var hasPathMutations = false;\n             mutationRecords.forEach(function(record) {\n                 if (record.attributeName == \"d\")\n                     hasPathMutations = true;\n             });\n             if (hasPathMutations)\n                 this._list = this._parsePath(this._pathElement.getAttribute(\"d\"));\n         }\n\n         // Serialize the list and update the path's 'd' attribute.\n         SVGPathSegList.prototype._writeListToPath = function() {\n             this._pathElementMutationObserver.disconnect();\n             this._pathElement.setAttribute(\"d\", SVGPathSegList._pathSegArrayAsString(this._list));\n             this._pathElementMutationObserver.observe(this._pathElement, this._mutationObserverConfig);\n         }\n\n         // When a path segment changes the list needs to be synchronized back to the path element.\n         SVGPathSegList.prototype.segmentChanged = function(pathSeg) {\n             this._writeListToPath();\n         }\n\n         SVGPathSegList.prototype.clear = function() {\n             this._checkPathSynchronizedToList();\n\n             this._list.forEach(function(pathSeg) {\n                 pathSeg._owningPathSegList = null;\n             });\n             this._list = [];\n             this._writeListToPath();\n         }\n\n         SVGPathSegList.prototype.initialize = function(newItem) {\n             this._checkPathSynchronizedToList();\n\n             this._list = [newItem];\n             newItem._owningPathSegList = this;\n             this._writeListToPath();\n             return newItem;\n         }\n\n         SVGPathSegList.prototype._checkValidIndex = function(index) {\n             if (isNaN(index) || index < 0 || index >= this.numberOfItems)\n                 throw \"INDEX_SIZE_ERR\";\n         }\n\n         SVGPathSegList.prototype.getItem = function(index) {\n             this._checkPathSynchronizedToList();\n\n             this._checkValidIndex(index);\n             return this._list[index];\n         }\n\n         SVGPathSegList.prototype.insertItemBefore = function(newItem, index) {\n             this._checkPathSynchronizedToList();\n\n             // Spec: If the index is greater than or equal to numberOfItems, then the new item is appended to the end of the list.\n             if (index > this.numberOfItems)\n                 index = this.numberOfItems;\n             if (newItem._owningPathSegList) {\n                 // SVG2 spec says to make a copy.\n                 newItem = newItem.clone();\n             }\n             this._list.splice(index, 0, newItem);\n             newItem._owningPathSegList = this;\n             this._writeListToPath();\n             return newItem;\n         }\n\n         SVGPathSegList.prototype.replaceItem = function(newItem, index) {\n             this._checkPathSynchronizedToList();\n\n             if (newItem._owningPathSegList) {\n                 // SVG2 spec says to make a copy.\n                 newItem = newItem.clone();\n             }\n             this._checkValidIndex(index);\n             this._list[index] = newItem;\n             newItem._owningPathSegList = this;\n             this._writeListToPath();\n             return newItem;\n         }\n\n         SVGPathSegList.prototype.removeItem = function(index) {\n             this._checkPathSynchronizedToList();\n\n             this._checkValidIndex(index);\n             var item = this._list[index];\n             this._list.splice(index, 1);\n             this._writeListToPath();\n             return item;\n         }\n\n         SVGPathSegList.prototype.appendItem = function(newItem) {\n             this._checkPathSynchronizedToList();\n\n             if (newItem._owningPathSegList) {\n                 // SVG2 spec says to make a copy.\n                 newItem = newItem.clone();\n             }\n             this._list.push(newItem);\n             newItem._owningPathSegList = this;\n             // TODO: Optimize this to just append to the existing attribute.\n             this._writeListToPath();\n             return newItem;\n         }\n\n         SVGPathSegList._pathSegArrayAsString = function(pathSegArray) {\n             var string = \"\";\n             var first = true;\n             pathSegArray.forEach(function(pathSeg) {\n                 if (first) {\n                     first = false;\n                     string += pathSeg._asPathString();\n                 } else {\n                     string += \" \" + pathSeg._asPathString();\n                 }\n             });\n             return string;\n         }\n\n         // This closely follows SVGPathParser::parsePath from Source/core/svg/SVGPathParser.cpp.\n         SVGPathSegList.prototype._parsePath = function(string) {\n             if (!string || string.length == 0)\n                 return [];\n\n             var owningPathSegList = this;\n\n             var Builder = function() {\n                 this.pathSegList = [];\n             }\n\n             Builder.prototype.appendSegment = function(pathSeg) {\n                 this.pathSegList.push(pathSeg);\n             }\n\n             var Source = function(string) {\n                 this._string = string;\n                 this._currentIndex = 0;\n                 this._endIndex = this._string.length;\n                 this._previousCommand = SVGPathSeg.PATHSEG_UNKNOWN;\n\n                 this._skipOptionalSpaces();\n             }\n\n             Source.prototype._isCurrentSpace = function() {\n                 var character = this._string[this._currentIndex];\n                 return character <= \" \" && (character == \" \" || character == \"\\n\" || character == \"\\t\" || character == \"\\r\" || character == \"\\f\");\n             }\n\n             Source.prototype._skipOptionalSpaces = function() {\n                 while (this._currentIndex < this._endIndex && this._isCurrentSpace())\n                     this._currentIndex++;\n                 return this._currentIndex < this._endIndex;\n             }\n\n             Source.prototype._skipOptionalSpacesOrDelimiter = function() {\n                 if (this._currentIndex < this._endIndex && !this._isCurrentSpace() && this._string.charAt(this._currentIndex) != \",\")\n                     return false;\n                 if (this._skipOptionalSpaces()) {\n                     if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \",\") {\n                         this._currentIndex++;\n                         this._skipOptionalSpaces();\n                     }\n                 }\n                 return this._currentIndex < this._endIndex;\n             }\n\n             Source.prototype.hasMoreData = function() {\n                 return this._currentIndex < this._endIndex;\n             }\n\n             Source.prototype.peekSegmentType = function() {\n                 var lookahead = this._string[this._currentIndex];\n                 return this._pathSegTypeFromChar(lookahead);\n             }\n\n             Source.prototype._pathSegTypeFromChar = function(lookahead) {\n                 switch (lookahead) {\n                 case \"Z\":\n                 case \"z\":\n                     return SVGPathSeg.PATHSEG_CLOSEPATH;\n                 case \"M\":\n                     return SVGPathSeg.PATHSEG_MOVETO_ABS;\n                 case \"m\":\n                     return SVGPathSeg.PATHSEG_MOVETO_REL;\n                 case \"L\":\n                     return SVGPathSeg.PATHSEG_LINETO_ABS;\n                 case \"l\":\n                     return SVGPathSeg.PATHSEG_LINETO_REL;\n                 case \"C\":\n                     return SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS;\n                 case \"c\":\n                     return SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL;\n                 case \"Q\":\n                     return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS;\n                 case \"q\":\n                     return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL;\n                 case \"A\":\n                     return SVGPathSeg.PATHSEG_ARC_ABS;\n                 case \"a\":\n                     return SVGPathSeg.PATHSEG_ARC_REL;\n                 case \"H\":\n                     return SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS;\n                 case \"h\":\n                     return SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL;\n                 case \"V\":\n                     return SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS;\n                 case \"v\":\n                     return SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL;\n                 case \"S\":\n                     return SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS;\n                 case \"s\":\n                     return SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL;\n                 case \"T\":\n                     return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS;\n                 case \"t\":\n                     return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL;\n                 default:\n                     return SVGPathSeg.PATHSEG_UNKNOWN;\n                 }\n             }\n\n             Source.prototype._nextCommandHelper = function(lookahead, previousCommand) {\n                 // Check for remaining coordinates in the current command.\n                 if ((lookahead == \"+\" || lookahead == \"-\" || lookahead == \".\" || (lookahead >= \"0\" && lookahead <= \"9\")) && previousCommand != SVGPathSeg.PATHSEG_CLOSEPATH) {\n                     if (previousCommand == SVGPathSeg.PATHSEG_MOVETO_ABS)\n                         return SVGPathSeg.PATHSEG_LINETO_ABS;\n                     if (previousCommand == SVGPathSeg.PATHSEG_MOVETO_REL)\n                         return SVGPathSeg.PATHSEG_LINETO_REL;\n                     return previousCommand;\n                 }\n                 return SVGPathSeg.PATHSEG_UNKNOWN;\n             }\n\n             Source.prototype.initialCommandIsMoveTo = function() {\n                 // If the path is empty it is still valid, so return true.\n                 if (!this.hasMoreData())\n                     return true;\n                 var command = this.peekSegmentType();\n                 // Path must start with moveTo.\n                 return command == SVGPathSeg.PATHSEG_MOVETO_ABS || command == SVGPathSeg.PATHSEG_MOVETO_REL;\n             }\n\n             // Parse a number from an SVG path. This very closely follows genericParseNumber(...) from Source/core/svg/SVGParserUtilities.cpp.\n             // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-PathDataBNF\n             Source.prototype._parseNumber = function() {\n                 var exponent = 0;\n                 var integer = 0;\n                 var frac = 1;\n                 var decimal = 0;\n                 var sign = 1;\n                 var expsign = 1;\n\n                 var startIndex = this._currentIndex;\n\n                 this._skipOptionalSpaces();\n\n                 // Read the sign.\n                 if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \"+\")\n                     this._currentIndex++;\n                 else if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \"-\") {\n                     this._currentIndex++;\n                     sign = -1;\n                 }\n\n                 if (this._currentIndex == this._endIndex || ((this._string.charAt(this._currentIndex) < \"0\" || this._string.charAt(this._currentIndex) > \"9\") && this._string.charAt(this._currentIndex) != \".\"))\n                     // The first character of a number must be one of [0-9+-.].\n                     return undefined;\n\n                 // Read the integer part, build right-to-left.\n                 var startIntPartIndex = this._currentIndex;\n                 while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= \"0\" && this._string.charAt(this._currentIndex) <= \"9\")\n                     this._currentIndex++; // Advance to first non-digit.\n\n                 if (this._currentIndex != startIntPartIndex) {\n                     var scanIntPartIndex = this._currentIndex - 1;\n                     var multiplier = 1;\n                     while (scanIntPartIndex >= startIntPartIndex) {\n                         integer += multiplier * (this._string.charAt(scanIntPartIndex--) - \"0\");\n                         multiplier *= 10;\n                     }\n                 }\n\n                 // Read the decimals.\n                 if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \".\") {\n                     this._currentIndex++;\n\n                     // There must be a least one digit following the .\n                     if (this._currentIndex >= this._endIndex || this._string.charAt(this._currentIndex) < \"0\" || this._string.charAt(this._currentIndex) > \"9\")\n                         return undefined;\n                     while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= \"0\" && this._string.charAt(this._currentIndex) <= \"9\")\n                         decimal += (this._string.charAt(this._currentIndex++) - \"0\") * (frac *= 0.1);\n                 }\n\n                 // Read the exponent part.\n                 if (this._currentIndex != startIndex && this._currentIndex + 1 < this._endIndex && (this._string.charAt(this._currentIndex) == \"e\" || this._string.charAt(this._currentIndex) == \"E\") && (this._string.charAt(this._currentIndex + 1) != \"x\" && this._string.charAt(this._currentIndex + 1) != \"m\")) {\n                     this._currentIndex++;\n\n                     // Read the sign of the exponent.\n                     if (this._string.charAt(this._currentIndex) == \"+\") {\n                         this._currentIndex++;\n                     } else if (this._string.charAt(this._currentIndex) == \"-\") {\n                         this._currentIndex++;\n                         expsign = -1;\n                     }\n\n                     // There must be an exponent.\n                     if (this._currentIndex >= this._endIndex || this._string.charAt(this._currentIndex) < \"0\" || this._string.charAt(this._currentIndex) > \"9\")\n                         return undefined;\n\n                     while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= \"0\" && this._string.charAt(this._currentIndex) <= \"9\") {\n                         exponent *= 10;\n                         exponent += (this._string.charAt(this._currentIndex) - \"0\");\n                         this._currentIndex++;\n                     }\n                 }\n\n                 var number = integer + decimal;\n                 number *= sign;\n\n                 if (exponent)\n                     number *= Math.pow(10, expsign * exponent);\n\n                 if (startIndex == this._currentIndex)\n                     return undefined;\n\n                 this._skipOptionalSpacesOrDelimiter();\n\n                 return number;\n             }\n\n             Source.prototype._parseArcFlag = function() {\n                 if (this._currentIndex >= this._endIndex)\n                     return undefined;\n                 var flag = false;\n                 var flagChar = this._string.charAt(this._currentIndex++);\n                 if (flagChar == \"0\")\n                     flag = false;\n                 else if (flagChar == \"1\")\n                     flag = true;\n                 else\n                     return undefined;\n\n                 this._skipOptionalSpacesOrDelimiter();\n                 return flag;\n             }\n\n             Source.prototype.parseSegment = function() {\n                 var lookahead = this._string[this._currentIndex];\n                 var command = this._pathSegTypeFromChar(lookahead);\n                 if (command == SVGPathSeg.PATHSEG_UNKNOWN) {\n                     // Possibly an implicit command. Not allowed if this is the first command.\n                     if (this._previousCommand == SVGPathSeg.PATHSEG_UNKNOWN)\n                         return null;\n                     command = this._nextCommandHelper(lookahead, this._previousCommand);\n                     if (command == SVGPathSeg.PATHSEG_UNKNOWN)\n                         return null;\n                 } else {\n                     this._currentIndex++;\n                 }\n\n                 this._previousCommand = command;\n\n                 switch (command) {\n                 case SVGPathSeg.PATHSEG_MOVETO_REL:\n                     return new SVGPathSegMovetoRel(owningPathSegList, this._parseNumber(), this._parseNumber());\n                 case SVGPathSeg.PATHSEG_MOVETO_ABS:\n                     return new SVGPathSegMovetoAbs(owningPathSegList, this._parseNumber(), this._parseNumber());\n                 case SVGPathSeg.PATHSEG_LINETO_REL:\n                     return new SVGPathSegLinetoRel(owningPathSegList, this._parseNumber(), this._parseNumber());\n                 case SVGPathSeg.PATHSEG_LINETO_ABS:\n                     return new SVGPathSegLinetoAbs(owningPathSegList, this._parseNumber(), this._parseNumber());\n                 case SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL:\n                     return new SVGPathSegLinetoHorizontalRel(owningPathSegList, this._parseNumber());\n                 case SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS:\n                     return new SVGPathSegLinetoHorizontalAbs(owningPathSegList, this._parseNumber());\n                 case SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL:\n                     return new SVGPathSegLinetoVerticalRel(owningPathSegList, this._parseNumber());\n                 case SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS:\n                     return new SVGPathSegLinetoVerticalAbs(owningPathSegList, this._parseNumber());\n                 case SVGPathSeg.PATHSEG_CLOSEPATH:\n                     this._skipOptionalSpaces();\n                     return new SVGPathSegClosePath(owningPathSegList);\n                 case SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL:\n                     var points = {x1: this._parseNumber(), y1: this._parseNumber(), x2: this._parseNumber(), y2: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber()};\n                     return new SVGPathSegCurvetoCubicRel(owningPathSegList, points.x, points.y, points.x1, points.y1, points.x2, points.y2);\n                 case SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS:\n                     var points = {x1: this._parseNumber(), y1: this._parseNumber(), x2: this._parseNumber(), y2: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber()};\n                     return new SVGPathSegCurvetoCubicAbs(owningPathSegList, points.x, points.y, points.x1, points.y1, points.x2, points.y2);\n                 case SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL:\n                     var points = {x2: this._parseNumber(), y2: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber()};\n                     return new SVGPathSegCurvetoCubicSmoothRel(owningPathSegList, points.x, points.y, points.x2, points.y2);\n                 case SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS:\n                     var points = {x2: this._parseNumber(), y2: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber()};\n                     return new SVGPathSegCurvetoCubicSmoothAbs(owningPathSegList, points.x, points.y, points.x2, points.y2);\n                 case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL:\n                     var points = {x1: this._parseNumber(), y1: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber()};\n                     return new SVGPathSegCurvetoQuadraticRel(owningPathSegList, points.x, points.y, points.x1, points.y1);\n                 case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS:\n                     var points = {x1: this._parseNumber(), y1: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber()};\n                     return new SVGPathSegCurvetoQuadraticAbs(owningPathSegList, points.x, points.y, points.x1, points.y1);\n                 case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL:\n                     return new SVGPathSegCurvetoQuadraticSmoothRel(owningPathSegList, this._parseNumber(), this._parseNumber());\n                 case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS:\n                     return new SVGPathSegCurvetoQuadraticSmoothAbs(owningPathSegList, this._parseNumber(), this._parseNumber());\n                 case SVGPathSeg.PATHSEG_ARC_REL:\n                     var points = {x1: this._parseNumber(), y1: this._parseNumber(), arcAngle: this._parseNumber(), arcLarge: this._parseArcFlag(), arcSweep: this._parseArcFlag(), x: this._parseNumber(), y: this._parseNumber()};\n                     return new SVGPathSegArcRel(owningPathSegList, points.x, points.y, points.x1, points.y1, points.arcAngle, points.arcLarge, points.arcSweep);\n                 case SVGPathSeg.PATHSEG_ARC_ABS:\n                     var points = {x1: this._parseNumber(), y1: this._parseNumber(), arcAngle: this._parseNumber(), arcLarge: this._parseArcFlag(), arcSweep: this._parseArcFlag(), x: this._parseNumber(), y: this._parseNumber()};\n                     return new SVGPathSegArcAbs(owningPathSegList, points.x, points.y, points.x1, points.y1, points.arcAngle, points.arcLarge, points.arcSweep);\n                 default:\n                     throw \"Unknown path seg type.\"\n                 }\n             }\n\n             var builder = new Builder();\n             var source = new Source(string);\n\n             if (!source.initialCommandIsMoveTo())\n                 return [];\n             while (source.hasMoreData()) {\n                 var pathSeg = source.parseSegment();\n                 if (!pathSeg)\n                     return [];\n                 builder.appendSegment(pathSeg);\n             }\n\n             return builder.pathSegList;\n         }\n     }\n    }());\n\n    /* jshint ignore:end */\n\n    if (typeof define === 'function' && define.amd) {\n        define(\"c3\", [\"d3\"], function () { return c3; });\n    } else if ('undefined' !== typeof exports && 'undefined' !== typeof module) {\n        module.exports = c3;\n    } else {\n        window.c3 = c3;\n    }\n\n})(window);\n\n","// svg-pan-zoom v3.5.1\n// https://github.com/ariutta/svg-pan-zoom\n!function t(e,n,o){function i(r,a){if(!n[r]){if(!e[r]){var l=\"function\"==typeof require&&require;if(!a&&l)return l(r,!0);if(s)return s(r,!0);var u=new Error(\"Cannot find module '\"+r+\"'\");throw u.code=\"MODULE_NOT_FOUND\",u}var h=n[r]={exports:{}};e[r][0].call(h.exports,function(t){var n=e[r][1][t];return i(n?n:t)},h,h.exports,t,e,n,o)}return n[r].exports}for(var s=\"function\"==typeof require&&require,r=0;r<o.length;r++)i(o[r]);return i}({1:[function(t,e,n){var o=t(\"./svg-pan-zoom.js\");!function(t,n){\"function\"==typeof define&&define.amd?define(\"svg-pan-zoom\",[],function(){return o}):\"undefined\"!=typeof e&&e.exports&&(e.exports=o,t.svgPanZoom=o)}(window,document)},{\"./svg-pan-zoom.js\":4}],2:[function(t,e,n){var o=t(\"./svg-utilities\");e.exports={enable:function(t){var e=t.svg.querySelector(\"defs\");e||(e=document.createElementNS(o.svgNS,\"defs\"),t.svg.appendChild(e));var n=e.querySelector(\"style#svg-pan-zoom-controls-styles\");if(!n){var i=document.createElementNS(o.svgNS,\"style\");i.setAttribute(\"id\",\"svg-pan-zoom-controls-styles\"),i.setAttribute(\"type\",\"text/css\"),i.textContent=\".svg-pan-zoom-control { cursor: pointer; fill: black; fill-opacity: 0.333; } .svg-pan-zoom-control:hover { fill-opacity: 0.8; } .svg-pan-zoom-control-background { fill: white; fill-opacity: 0.5; } .svg-pan-zoom-control-background { fill-opacity: 0.8; }\",e.appendChild(i)}var s=document.createElementNS(o.svgNS,\"g\");s.setAttribute(\"id\",\"svg-pan-zoom-controls\"),s.setAttribute(\"transform\",\"translate(\"+(t.width-70)+\" \"+(t.height-76)+\") scale(0.75)\"),s.setAttribute(\"class\",\"svg-pan-zoom-control\"),s.appendChild(this._createZoomIn(t)),s.appendChild(this._createZoomReset(t)),s.appendChild(this._createZoomOut(t)),t.svg.appendChild(s),t.controlIcons=s},_createZoomIn:function(t){var e=document.createElementNS(o.svgNS,\"g\");e.setAttribute(\"id\",\"svg-pan-zoom-zoom-in\"),e.setAttribute(\"transform\",\"translate(30.5 5) scale(0.015)\"),e.setAttribute(\"class\",\"svg-pan-zoom-control\"),e.addEventListener(\"click\",function(){t.getPublicInstance().zoomIn()},!1),e.addEventListener(\"touchstart\",function(){t.getPublicInstance().zoomIn()},!1);var n=document.createElementNS(o.svgNS,\"rect\");n.setAttribute(\"x\",\"0\"),n.setAttribute(\"y\",\"0\"),n.setAttribute(\"width\",\"1500\"),n.setAttribute(\"height\",\"1400\"),n.setAttribute(\"class\",\"svg-pan-zoom-control-background\"),e.appendChild(n);var i=document.createElementNS(o.svgNS,\"path\");return i.setAttribute(\"d\",\"M1280 576v128q0 26 -19 45t-45 19h-320v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-320q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h320v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h320q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z\"),i.setAttribute(\"class\",\"svg-pan-zoom-control-element\"),e.appendChild(i),e},_createZoomReset:function(t){var e=document.createElementNS(o.svgNS,\"g\");e.setAttribute(\"id\",\"svg-pan-zoom-reset-pan-zoom\"),e.setAttribute(\"transform\",\"translate(5 35) scale(0.4)\"),e.setAttribute(\"class\",\"svg-pan-zoom-control\"),e.addEventListener(\"click\",function(){t.getPublicInstance().reset()},!1),e.addEventListener(\"touchstart\",function(){t.getPublicInstance().reset()},!1);var n=document.createElementNS(o.svgNS,\"rect\");n.setAttribute(\"x\",\"2\"),n.setAttribute(\"y\",\"2\"),n.setAttribute(\"width\",\"182\"),n.setAttribute(\"height\",\"58\"),n.setAttribute(\"class\",\"svg-pan-zoom-control-background\"),e.appendChild(n);var i=document.createElementNS(o.svgNS,\"path\");i.setAttribute(\"d\",\"M33.051,20.632c-0.742-0.406-1.854-0.609-3.338-0.609h-7.969v9.281h7.769c1.543,0,2.701-0.188,3.473-0.562c1.365-0.656,2.048-1.953,2.048-3.891C35.032,22.757,34.372,21.351,33.051,20.632z\"),i.setAttribute(\"class\",\"svg-pan-zoom-control-element\"),e.appendChild(i);var s=document.createElementNS(o.svgNS,\"path\");return s.setAttribute(\"d\",\"M170.231,0.5H15.847C7.102,0.5,0.5,5.708,0.5,11.84v38.861C0.5,56.833,7.102,61.5,15.847,61.5h154.384c8.745,0,15.269-4.667,15.269-10.798V11.84C185.5,5.708,178.976,0.5,170.231,0.5z M42.837,48.569h-7.969c-0.219-0.766-0.375-1.383-0.469-1.852c-0.188-0.969-0.289-1.961-0.305-2.977l-0.047-3.211c-0.03-2.203-0.41-3.672-1.142-4.406c-0.732-0.734-2.103-1.102-4.113-1.102h-7.05v13.547h-7.055V14.022h16.524c2.361,0.047,4.178,0.344,5.45,0.891c1.272,0.547,2.351,1.352,3.234,2.414c0.731,0.875,1.31,1.844,1.737,2.906s0.64,2.273,0.64,3.633c0,1.641-0.414,3.254-1.242,4.84s-2.195,2.707-4.102,3.363c1.594,0.641,2.723,1.551,3.387,2.73s0.996,2.98,0.996,5.402v2.32c0,1.578,0.063,2.648,0.19,3.211c0.19,0.891,0.635,1.547,1.333,1.969V48.569z M75.579,48.569h-26.18V14.022h25.336v6.117H56.454v7.336h16.781v6H56.454v8.883h19.125V48.569z M104.497,46.331c-2.44,2.086-5.887,3.129-10.34,3.129c-4.548,0-8.125-1.027-10.731-3.082s-3.909-4.879-3.909-8.473h6.891c0.224,1.578,0.662,2.758,1.316,3.539c1.196,1.422,3.246,2.133,6.15,2.133c1.739,0,3.151-0.188,4.236-0.562c2.058-0.719,3.087-2.055,3.087-4.008c0-1.141-0.504-2.023-1.512-2.648c-1.008-0.609-2.607-1.148-4.796-1.617l-3.74-0.82c-3.676-0.812-6.201-1.695-7.576-2.648c-2.328-1.594-3.492-4.086-3.492-7.477c0-3.094,1.139-5.664,3.417-7.711s5.623-3.07,10.036-3.07c3.685,0,6.829,0.965,9.431,2.895c2.602,1.93,3.966,4.73,4.093,8.402h-6.938c-0.128-2.078-1.057-3.555-2.787-4.43c-1.154-0.578-2.587-0.867-4.301-0.867c-1.907,0-3.428,0.375-4.565,1.125c-1.138,0.75-1.706,1.797-1.706,3.141c0,1.234,0.561,2.156,1.682,2.766c0.721,0.406,2.25,0.883,4.589,1.43l6.063,1.43c2.657,0.625,4.648,1.461,5.975,2.508c2.059,1.625,3.089,3.977,3.089,7.055C108.157,41.624,106.937,44.245,104.497,46.331z M139.61,48.569h-26.18V14.022h25.336v6.117h-18.281v7.336h16.781v6h-16.781v8.883h19.125V48.569z M170.337,20.14h-10.336v28.43h-7.266V20.14h-10.383v-6.117h27.984V20.14z\"),s.setAttribute(\"class\",\"svg-pan-zoom-control-element\"),e.appendChild(s),e},_createZoomOut:function(t){var e=document.createElementNS(o.svgNS,\"g\");e.setAttribute(\"id\",\"svg-pan-zoom-zoom-out\"),e.setAttribute(\"transform\",\"translate(30.5 70) scale(0.015)\"),e.setAttribute(\"class\",\"svg-pan-zoom-control\"),e.addEventListener(\"click\",function(){t.getPublicInstance().zoomOut()},!1),e.addEventListener(\"touchstart\",function(){t.getPublicInstance().zoomOut()},!1);var n=document.createElementNS(o.svgNS,\"rect\");n.setAttribute(\"x\",\"0\"),n.setAttribute(\"y\",\"0\"),n.setAttribute(\"width\",\"1500\"),n.setAttribute(\"height\",\"1400\"),n.setAttribute(\"class\",\"svg-pan-zoom-control-background\"),e.appendChild(n);var i=document.createElementNS(o.svgNS,\"path\");return i.setAttribute(\"d\",\"M1280 576v128q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h896q26 0 45 19t19 45zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z\"),i.setAttribute(\"class\",\"svg-pan-zoom-control-element\"),e.appendChild(i),e},disable:function(t){t.controlIcons&&(t.controlIcons.parentNode.removeChild(t.controlIcons),t.controlIcons=null)}}},{\"./svg-utilities\":5}],3:[function(t,e,n){var o=t(\"./svg-utilities\"),i=t(\"./utilities\"),s=function(t,e){this.init(t,e)};s.prototype.init=function(t,e){this.viewport=t,this.options=e,this.originalState={zoom:1,x:0,y:0},this.activeState={zoom:1,x:0,y:0},this.updateCTMCached=i.proxy(this.updateCTM,this),this.requestAnimationFrame=i.createRequestAnimationFrame(this.options.refreshRate),this.viewBox={x:0,y:0,width:0,height:0},this.cacheViewBox();var n=this.processCTM();this.setCTM(n),this.updateCTM()},s.prototype.cacheViewBox=function(){var t=this.options.svg.getAttribute(\"viewBox\");if(t){var e=t.split(/[\\s\\,]/).filter(function(t){return t}).map(parseFloat);this.viewBox.x=e[0],this.viewBox.y=e[1],this.viewBox.width=e[2],this.viewBox.height=e[3];var n=Math.min(this.options.width/this.viewBox.width,this.options.height/this.viewBox.height);this.activeState.zoom=n,this.activeState.x=(this.options.width-this.viewBox.width*n)/2,this.activeState.y=(this.options.height-this.viewBox.height*n)/2,this.updateCTMOnNextFrame(),this.options.svg.removeAttribute(\"viewBox\")}else this.simpleViewBoxCache()},s.prototype.simpleViewBoxCache=function(){var t=this.viewport.getBBox();this.viewBox.x=t.x,this.viewBox.y=t.y,this.viewBox.width=t.width,this.viewBox.height=t.height},s.prototype.getViewBox=function(){return i.extend({},this.viewBox)},s.prototype.processCTM=function(){var t=this.getCTM();if(this.options.fit||this.options.contain){var e;e=this.options.fit?Math.min(this.options.width/this.viewBox.width,this.options.height/this.viewBox.height):Math.max(this.options.width/this.viewBox.width,this.options.height/this.viewBox.height),t.a=e,t.d=e,t.e=-this.viewBox.x*e,t.f=-this.viewBox.y*e}if(this.options.center){var n=.5*(this.options.width-(this.viewBox.width+2*this.viewBox.x)*t.a),o=.5*(this.options.height-(this.viewBox.height+2*this.viewBox.y)*t.a);t.e=n,t.f=o}return this.originalState.zoom=t.a,this.originalState.x=t.e,this.originalState.y=t.f,t},s.prototype.getOriginalState=function(){return i.extend({},this.originalState)},s.prototype.getState=function(){return i.extend({},this.activeState)},s.prototype.getZoom=function(){return this.activeState.zoom},s.prototype.getRelativeZoom=function(){return this.activeState.zoom/this.originalState.zoom},s.prototype.computeRelativeZoom=function(t){return t/this.originalState.zoom},s.prototype.getPan=function(){return{x:this.activeState.x,y:this.activeState.y}},s.prototype.getCTM=function(){var t=this.options.svg.createSVGMatrix();return t.a=this.activeState.zoom,t.b=0,t.c=0,t.d=this.activeState.zoom,t.e=this.activeState.x,t.f=this.activeState.y,t},s.prototype.setCTM=function(t){var e=this.isZoomDifferent(t),n=this.isPanDifferent(t);if(e||n){if(e&&(this.options.beforeZoom(this.getRelativeZoom(),this.computeRelativeZoom(t.a))===!1?(t.a=t.d=this.activeState.zoom,e=!1):(this.updateCache(t),this.options.onZoom(this.getRelativeZoom()))),n){var o=this.options.beforePan(this.getPan(),{x:t.e,y:t.f}),s=!1,r=!1;o===!1?(t.e=this.getPan().x,t.f=this.getPan().y,s=r=!0):i.isObject(o)&&(o.x===!1?(t.e=this.getPan().x,s=!0):i.isNumber(o.x)&&(t.e=o.x),o.y===!1?(t.f=this.getPan().y,r=!0):i.isNumber(o.y)&&(t.f=o.y)),s&&r||!this.isPanDifferent(t)?n=!1:(this.updateCache(t),this.options.onPan(this.getPan()))}(e||n)&&this.updateCTMOnNextFrame()}},s.prototype.isZoomDifferent=function(t){return this.activeState.zoom!==t.a},s.prototype.isPanDifferent=function(t){return this.activeState.x!==t.e||this.activeState.y!==t.f},s.prototype.updateCache=function(t){this.activeState.zoom=t.a,this.activeState.x=t.e,this.activeState.y=t.f},s.prototype.pendingUpdate=!1,s.prototype.updateCTMOnNextFrame=function(){this.pendingUpdate||(this.pendingUpdate=!0,this.requestAnimationFrame.call(window,this.updateCTMCached))},s.prototype.updateCTM=function(){var t=this.getCTM();o.setCTM(this.viewport,t,this.defs),this.pendingUpdate=!1,this.options.onUpdatedCTM&&this.options.onUpdatedCTM(t)},e.exports=function(t,e){return new s(t,e)}},{\"./svg-utilities\":5,\"./utilities\":7}],4:[function(t,e,n){var o=t(\"./uniwheel\"),i=t(\"./control-icons\"),s=t(\"./utilities\"),r=t(\"./svg-utilities\"),a=t(\"./shadow-viewport\"),l=function(t,e){this.init(t,e)},u={viewportSelector:\".svg-pan-zoom_viewport\",panEnabled:!0,controlIconsEnabled:!1,zoomEnabled:!0,dblClickZoomEnabled:!0,mouseWheelZoomEnabled:!0,preventMouseEventsDefault:!0,zoomScaleSensitivity:.1,minZoom:.5,maxZoom:10,fit:!0,contain:!1,center:!0,refreshRate:\"auto\",beforeZoom:null,onZoom:null,beforePan:null,onPan:null,customEventsHandler:null,eventsListenerElement:null,onUpdatedCTM:null};l.prototype.init=function(t,e){var n=this;this.svg=t,this.defs=t.querySelector(\"defs\"),r.setupSvgAttributes(this.svg),this.options=s.extend(s.extend({},u),e),this.state=\"none\";var o=r.getBoundingClientRectNormalized(t);this.width=o.width,this.height=o.height,this.viewport=a(r.getOrCreateViewport(this.svg,this.options.viewportSelector),{svg:this.svg,width:this.width,height:this.height,fit:this.options.fit,contain:this.options.contain,center:this.options.center,refreshRate:this.options.refreshRate,beforeZoom:function(t,e){return n.viewport&&n.options.beforeZoom?n.options.beforeZoom(t,e):void 0},onZoom:function(t){return n.viewport&&n.options.onZoom?n.options.onZoom(t):void 0},beforePan:function(t,e){return n.viewport&&n.options.beforePan?n.options.beforePan(t,e):void 0},onPan:function(t){return n.viewport&&n.options.onPan?n.options.onPan(t):void 0},onUpdatedCTM:function(t){return n.viewport&&n.options.onUpdatedCTM?n.options.onUpdatedCTM(t):void 0}});var l=this.getPublicInstance();l.setBeforeZoom(this.options.beforeZoom),l.setOnZoom(this.options.onZoom),l.setBeforePan(this.options.beforePan),l.setOnPan(this.options.onPan),l.setOnUpdatedCTM(this.options.onUpdatedCTM),this.options.controlIconsEnabled&&i.enable(this),this.lastMouseWheelEventTime=Date.now(),this.setupHandlers()},l.prototype.setupHandlers=function(){var t=this,e=null;if(this.eventListeners={mousedown:function(n){var o=t.handleMouseDown(n,e);return e=n,o},touchstart:function(n){var o=t.handleMouseDown(n,e);return e=n,o},mouseup:function(e){return t.handleMouseUp(e)},touchend:function(e){return t.handleMouseUp(e)},mousemove:function(e){return t.handleMouseMove(e)},touchmove:function(e){return t.handleMouseMove(e)},mouseleave:function(e){return t.handleMouseUp(e)},touchleave:function(e){return t.handleMouseUp(e)},touchcancel:function(e){return t.handleMouseUp(e)}},null!=this.options.customEventsHandler){this.options.customEventsHandler.init({svgElement:this.svg,eventsListenerElement:this.options.eventsListenerElement,instance:this.getPublicInstance()});var n=this.options.customEventsHandler.haltEventListeners;if(n&&n.length)for(var o=n.length-1;o>=0;o--)this.eventListeners.hasOwnProperty(n[o])&&delete this.eventListeners[n[o]]}for(var i in this.eventListeners)(this.options.eventsListenerElement||this.svg).addEventListener(i,this.eventListeners[i],!1);this.options.mouseWheelZoomEnabled&&(this.options.mouseWheelZoomEnabled=!1,this.enableMouseWheelZoom())},l.prototype.enableMouseWheelZoom=function(){if(!this.options.mouseWheelZoomEnabled){var t=this;this.wheelListener=function(e){return t.handleMouseWheel(e)},o.on(this.options.eventsListenerElement||this.svg,this.wheelListener,!1),this.options.mouseWheelZoomEnabled=!0}},l.prototype.disableMouseWheelZoom=function(){this.options.mouseWheelZoomEnabled&&(o.off(this.options.eventsListenerElement||this.svg,this.wheelListener,!1),this.options.mouseWheelZoomEnabled=!1)},l.prototype.handleMouseWheel=function(t){if(this.options.zoomEnabled&&\"none\"===this.state){this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1);var e=t.deltaY||1,n=Date.now()-this.lastMouseWheelEventTime,o=3+Math.max(0,30-n);this.lastMouseWheelEventTime=Date.now(),\"deltaMode\"in t&&0===t.deltaMode&&t.wheelDelta&&(e=0===t.deltaY?0:Math.abs(t.wheelDelta)/t.deltaY),e=e>-.3&&.3>e?e:(e>0?1:-1)*Math.log(Math.abs(e)+10)/o;var i=this.svg.getScreenCTM().inverse(),s=r.getEventPoint(t,this.svg).matrixTransform(i),a=Math.pow(1+this.options.zoomScaleSensitivity,-1*e);this.zoomAtPoint(a,s)}},l.prototype.zoomAtPoint=function(t,e,n){var o=this.viewport.getOriginalState();n?(t=Math.max(this.options.minZoom*o.zoom,Math.min(this.options.maxZoom*o.zoom,t)),t/=this.getZoom()):this.getZoom()*t<this.options.minZoom*o.zoom?t=this.options.minZoom*o.zoom/this.getZoom():this.getZoom()*t>this.options.maxZoom*o.zoom&&(t=this.options.maxZoom*o.zoom/this.getZoom());var i=this.viewport.getCTM(),s=e.matrixTransform(i.inverse()),r=this.svg.createSVGMatrix().translate(s.x,s.y).scale(t).translate(-s.x,-s.y),a=i.multiply(r);a.a!==i.a&&this.viewport.setCTM(a)},l.prototype.zoom=function(t,e){this.zoomAtPoint(t,r.getSvgCenterPoint(this.svg,this.width,this.height),e)},l.prototype.publicZoom=function(t,e){e&&(t=this.computeFromRelativeZoom(t)),this.zoom(t,e)},l.prototype.publicZoomAtPoint=function(t,e,n){if(n&&(t=this.computeFromRelativeZoom(t)),\"SVGPoint\"!==s.getType(e)){if(!(\"x\"in e&&\"y\"in e))throw new Error(\"Given point is invalid\");e=r.createSVGPoint(this.svg,e.x,e.y)}this.zoomAtPoint(t,e,n)},l.prototype.getZoom=function(){return this.viewport.getZoom()},l.prototype.getRelativeZoom=function(){return this.viewport.getRelativeZoom()},l.prototype.computeFromRelativeZoom=function(t){return t*this.viewport.getOriginalState().zoom},l.prototype.resetZoom=function(){var t=this.viewport.getOriginalState();this.zoom(t.zoom,!0)},l.prototype.resetPan=function(){this.pan(this.viewport.getOriginalState())},l.prototype.reset=function(){this.resetZoom(),this.resetPan()},l.prototype.handleDblClick=function(t){if(this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1),this.options.controlIconsEnabled){var e=t.target.getAttribute(\"class\")||\"\";if(e.indexOf(\"svg-pan-zoom-control\")>-1)return!1}var n;n=t.shiftKey?1/(2*(1+this.options.zoomScaleSensitivity)):2*(1+this.options.zoomScaleSensitivity);var o=r.getEventPoint(t,this.svg).matrixTransform(this.svg.getScreenCTM().inverse());this.zoomAtPoint(n,o)},l.prototype.handleMouseDown=function(t,e){this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1),s.mouseAndTouchNormalize(t,this.svg),this.options.dblClickZoomEnabled&&s.isDblClick(t,e)?this.handleDblClick(t):(this.state=\"pan\",this.firstEventCTM=this.viewport.getCTM(),this.stateOrigin=r.getEventPoint(t,this.svg).matrixTransform(this.firstEventCTM.inverse()))},l.prototype.handleMouseMove=function(t){if(this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1),\"pan\"===this.state&&this.options.panEnabled){var e=r.getEventPoint(t,this.svg).matrixTransform(this.firstEventCTM.inverse()),n=this.firstEventCTM.translate(e.x-this.stateOrigin.x,e.y-this.stateOrigin.y);this.viewport.setCTM(n)}},l.prototype.handleMouseUp=function(t){this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1),\"pan\"===this.state&&(this.state=\"none\")},l.prototype.fit=function(){var t=this.viewport.getViewBox(),e=Math.min(this.width/t.width,this.height/t.height);this.zoom(e,!0)},l.prototype.contain=function(){var t=this.viewport.getViewBox(),e=Math.max(this.width/t.width,this.height/t.height);this.zoom(e,!0)},l.prototype.center=function(){var t=this.viewport.getViewBox(),e=.5*(this.width-(t.width+2*t.x)*this.getZoom()),n=.5*(this.height-(t.height+2*t.y)*this.getZoom());this.getPublicInstance().pan({x:e,y:n})},l.prototype.updateBBox=function(){this.viewport.simpleViewBoxCache()},l.prototype.pan=function(t){var e=this.viewport.getCTM();e.e=t.x,e.f=t.y,this.viewport.setCTM(e)},l.prototype.panBy=function(t){var e=this.viewport.getCTM();e.e+=t.x,e.f+=t.y,this.viewport.setCTM(e)},l.prototype.getPan=function(){var t=this.viewport.getState();return{x:t.x,y:t.y}},l.prototype.resize=function(){var t=r.getBoundingClientRectNormalized(this.svg);this.width=t.width,this.height=t.height;var e=this.viewport;e.options.width=this.width,e.options.height=this.height,e.processCTM(),this.options.controlIconsEnabled&&(this.getPublicInstance().disableControlIcons(),this.getPublicInstance().enableControlIcons())},l.prototype.destroy=function(){var t=this;this.beforeZoom=null,this.onZoom=null,this.beforePan=null,this.onPan=null,this.onUpdatedCTM=null,null!=this.options.customEventsHandler&&this.options.customEventsHandler.destroy({svgElement:this.svg,eventsListenerElement:this.options.eventsListenerElement,instance:this.getPublicInstance()});for(var e in this.eventListeners)(this.options.eventsListenerElement||this.svg).removeEventListener(e,this.eventListeners[e],!1);this.disableMouseWheelZoom(),this.getPublicInstance().disableControlIcons(),this.reset(),h=h.filter(function(e){return e.svg!==t.svg}),delete this.options,delete this.viewport,delete this.publicInstance,delete this.pi,this.getPublicInstance=function(){return null}},l.prototype.getPublicInstance=function(){var t=this;return this.publicInstance||(this.publicInstance=this.pi={enablePan:function(){return t.options.panEnabled=!0,t.pi},disablePan:function(){return t.options.panEnabled=!1,t.pi},isPanEnabled:function(){return!!t.options.panEnabled},pan:function(e){return t.pan(e),t.pi},panBy:function(e){return t.panBy(e),t.pi},getPan:function(){return t.getPan()},setBeforePan:function(e){return t.options.beforePan=null===e?null:s.proxy(e,t.publicInstance),t.pi},setOnPan:function(e){return t.options.onPan=null===e?null:s.proxy(e,t.publicInstance),t.pi},enableZoom:function(){return t.options.zoomEnabled=!0,t.pi},disableZoom:function(){return t.options.zoomEnabled=!1,t.pi},isZoomEnabled:function(){return!!t.options.zoomEnabled},enableControlIcons:function(){return t.options.controlIconsEnabled||(t.options.controlIconsEnabled=!0,i.enable(t)),t.pi},disableControlIcons:function(){return t.options.controlIconsEnabled&&(t.options.controlIconsEnabled=!1,i.disable(t)),t.pi},isControlIconsEnabled:function(){return!!t.options.controlIconsEnabled},enableDblClickZoom:function(){return t.options.dblClickZoomEnabled=!0,t.pi},disableDblClickZoom:function(){return t.options.dblClickZoomEnabled=!1,t.pi},isDblClickZoomEnabled:function(){return!!t.options.dblClickZoomEnabled},enableMouseWheelZoom:function(){return t.enableMouseWheelZoom(),t.pi},disableMouseWheelZoom:function(){return t.disableMouseWheelZoom(),t.pi},isMouseWheelZoomEnabled:function(){return!!t.options.mouseWheelZoomEnabled},setZoomScaleSensitivity:function(e){return t.options.zoomScaleSensitivity=e,t.pi},setMinZoom:function(e){return t.options.minZoom=e,t.pi},setMaxZoom:function(e){return t.options.maxZoom=e,t.pi},setBeforeZoom:function(e){return t.options.beforeZoom=null===e?null:s.proxy(e,t.publicInstance),t.pi},setOnZoom:function(e){return t.options.onZoom=null===e?null:s.proxy(e,t.publicInstance),t.pi},zoom:function(e){return t.publicZoom(e,!0),t.pi},zoomBy:function(e){return t.publicZoom(e,!1),t.pi},zoomAtPoint:function(e,n){return t.publicZoomAtPoint(e,n,!0),t.pi},zoomAtPointBy:function(e,n){return t.publicZoomAtPoint(e,n,!1),t.pi},zoomIn:function(){return this.zoomBy(1+t.options.zoomScaleSensitivity),t.pi},zoomOut:function(){return this.zoomBy(1/(1+t.options.zoomScaleSensitivity)),t.pi},getZoom:function(){return t.getRelativeZoom()},setOnUpdatedCTM:function(e){return t.options.onUpdatedCTM=null===e?null:s.proxy(e,t.publicInstance),t.pi},resetZoom:function(){return t.resetZoom(),t.pi},resetPan:function(){return t.resetPan(),t.pi},reset:function(){return t.reset(),t.pi},fit:function(){return t.fit(),t.pi},contain:function(){return t.contain(),t.pi},center:function(){return t.center(),t.pi},updateBBox:function(){return t.updateBBox(),t.pi},resize:function(){return t.resize(),t.pi},getSizes:function(){return{width:t.width,height:t.height,realZoom:t.getZoom(),viewBox:t.viewport.getViewBox()}},destroy:function(){return t.destroy(),t.pi}}),this.publicInstance};var h=[],c=function(t,e){var n=s.getSvg(t);if(null===n)return null;for(var o=h.length-1;o>=0;o--)if(h[o].svg===n)return h[o].instance.getPublicInstance();return h.push({svg:n,instance:new l(n,e)}),h[h.length-1].instance.getPublicInstance()};e.exports=c},{\"./control-icons\":2,\"./shadow-viewport\":3,\"./svg-utilities\":5,\"./uniwheel\":6,\"./utilities\":7}],5:[function(t,e,n){var o=t(\"./utilities\"),i=\"unknown\";document.documentMode&&(i=\"ie\"),e.exports={svgNS:\"http://www.w3.org/2000/svg\",xmlNS:\"http://www.w3.org/XML/1998/namespace\",xmlnsNS:\"http://www.w3.org/2000/xmlns/\",xlinkNS:\"http://www.w3.org/1999/xlink\",evNS:\"http://www.w3.org/2001/xml-events\",getBoundingClientRectNormalized:function(t){if(t.clientWidth&&t.clientHeight)return{width:t.clientWidth,height:t.clientHeight};if(t.getBoundingClientRect())return t.getBoundingClientRect();throw new Error(\"Cannot get BoundingClientRect for SVG.\")},getOrCreateViewport:function(t,e){var n=null;if(n=o.isElement(e)?e:t.querySelector(e),!n){var i=Array.prototype.slice.call(t.childNodes||t.children).filter(function(t){return\"defs\"!==t.nodeName&&\"#text\"!==t.nodeName});1===i.length&&\"g\"===i[0].nodeName&&null===i[0].getAttribute(\"transform\")&&(n=i[0])}if(!n){var s=\"viewport-\"+(new Date).toISOString().replace(/\\D/g,\"\");n=document.createElementNS(this.svgNS,\"g\"),n.setAttribute(\"id\",s);var r=t.childNodes||t.children;if(r&&r.length>0)for(var a=r.length;a>0;a--)\"defs\"!==r[r.length-a].nodeName&&n.appendChild(r[r.length-a]);t.appendChild(n)}var l=[];return n.getAttribute(\"class\")&&(l=n.getAttribute(\"class\").split(\" \")),~l.indexOf(\"svg-pan-zoom_viewport\")||(l.push(\"svg-pan-zoom_viewport\"),n.setAttribute(\"class\",l.join(\" \"))),n},setupSvgAttributes:function(t){if(t.setAttribute(\"xmlns\",this.svgNS),t.setAttributeNS(this.xmlnsNS,\"xmlns:xlink\",this.xlinkNS),t.setAttributeNS(this.xmlnsNS,\"xmlns:ev\",this.evNS),null!==t.parentNode){var e=t.getAttribute(\"style\")||\"\";-1===e.toLowerCase().indexOf(\"overflow\")&&t.setAttribute(\"style\",\"overflow: hidden; \"+e)}},internetExplorerRedisplayInterval:300,refreshDefsGlobal:o.throttle(function(){for(var t=document.querySelectorAll(\"defs\"),e=t.length,n=0;e>n;n++){var o=t[n];o.parentNode.insertBefore(o,o)}},this.internetExplorerRedisplayInterval),setCTM:function(t,e,n){var o=this,s=\"matrix(\"+e.a+\",\"+e.b+\",\"+e.c+\",\"+e.d+\",\"+e.e+\",\"+e.f+\")\";t.setAttributeNS(null,\"transform\",s),\"transform\"in t.style?t.style.transform=s:\"-ms-transform\"in t.style?t.style[\"-ms-transform\"]=s:\"-webkit-transform\"in t.style&&(t.style[\"-webkit-transform\"]=s),\"ie\"===i&&n&&(n.parentNode.insertBefore(n,n),window.setTimeout(function(){o.refreshDefsGlobal()},o.internetExplorerRedisplayInterval))},getEventPoint:function(t,e){var n=e.createSVGPoint();return o.mouseAndTouchNormalize(t,e),n.x=t.clientX,n.y=t.clientY,n},getSvgCenterPoint:function(t,e,n){return this.createSVGPoint(t,e/2,n/2)},createSVGPoint:function(t,e,n){var o=t.createSVGPoint();return o.x=e,o.y=n,o}}},{\"./utilities\":7}],6:[function(t,e,n){e.exports=function(){function t(t,e,n){var o=function(t){!t&&(t=window.event);var n={originalEvent:t,target:t.target||t.srcElement,type:\"wheel\",deltaMode:\"MozMousePixelScroll\"==t.type?0:1,deltaX:0,delatZ:0,preventDefault:function(){t.preventDefault?t.preventDefault():t.returnValue=!1}};return\"mousewheel\"==u?(n.deltaY=-1/40*t.wheelDelta,t.wheelDeltaX&&(n.deltaX=-1/40*t.wheelDeltaX)):n.deltaY=t.detail,e(n)};return c.push({element:t,fn:o,capture:n}),o}function e(t,e){for(var n=0;n<c.length;n++)if(c[n].element===t&&c[n].capture===e)return c[n].fn;return function(){}}function n(t,e){for(var n=0;n<c.length;n++)if(c[n].element===t&&c[n].capture===e)return c.splice(n,1)}function o(e,n,o,i){var s;s=\"wheel\"===u?o:t(e,o,i),e[a](h+n,s,i||!1)}function i(t,o,i,s){var r;r=\"wheel\"===u?i:e(t,s),t[l](h+o,r,s||!1),n(t,s)}function s(t,e,n){o(t,u,e,n),\"DOMMouseScroll\"==u&&o(t,\"MozMousePixelScroll\",e,n)}function r(t,e,n){i(t,u,e,n),\"DOMMouseScroll\"==u&&i(t,\"MozMousePixelScroll\",e,n)}var a,l,u,h=\"\",c=[];return window.addEventListener?(a=\"addEventListener\",l=\"removeEventListener\"):(a=\"attachEvent\",l=\"detachEvent\",h=\"on\"),u=\"onwheel\"in document.createElement(\"div\")?\"wheel\":void 0!==document.onmousewheel?\"mousewheel\":\"DOMMouseScroll\",{on:s,off:r}}()},{}],7:[function(t,e,n){function o(t){return function(e){window.setTimeout(e,t)}}e.exports={extend:function(t,e){t=t||{};for(var n in e)this.isObject(e[n])?t[n]=this.extend(t[n],e[n]):t[n]=e[n];return t},isElement:function(t){return t instanceof HTMLElement||t instanceof SVGElement||t instanceof SVGSVGElement||t&&\"object\"==typeof t&&null!==t&&1===t.nodeType&&\"string\"==typeof t.nodeName},isObject:function(t){return\"[object Object]\"===Object.prototype.toString.call(t)},isNumber:function(t){return!isNaN(parseFloat(t))&&isFinite(t)},getSvg:function(t){var e,n;if(this.isElement(t))e=t;else{if(!(\"string\"==typeof t||t instanceof String))throw new Error(\"Provided selector is not an HTML object nor String\");if(e=document.querySelector(t),!e)throw new Error(\"Provided selector did not find any elements. Selector: \"+t)}if(\"svg\"===e.tagName.toLowerCase())n=e;else if(\"object\"===e.tagName.toLowerCase())n=e.contentDocument.documentElement;else{if(\"embed\"!==e.tagName.toLowerCase())throw\"img\"===e.tagName.toLowerCase()?new Error('Cannot script an SVG in an \"img\" element. Please use an \"object\" element or an in-line SVG.'):new Error(\"Cannot get SVG.\");n=e.getSVGDocument().documentElement}return n},proxy:function(t,e){return function(){return t.apply(e,arguments)}},getType:function(t){return Object.prototype.toString.apply(t).replace(/^\\[object\\s/,\"\").replace(/\\]$/,\"\")},mouseAndTouchNormalize:function(t,e){if(void 0===t.clientX||null===t.clientX)if(t.clientX=0,t.clientY=0,void 0!==t.changedTouches&&t.changedTouches.length){if(void 0!==t.changedTouches[0].clientX)t.clientX=t.changedTouches[0].clientX,t.clientY=t.changedTouches[0].clientY;else if(void 0!==t.changedTouches[0].pageX){var n=e.getBoundingClientRect();t.clientX=t.changedTouches[0].pageX-n.left,t.clientY=t.changedTouches[0].pageY-n.top}}else void 0!==t.originalEvent&&void 0!==t.originalEvent.clientX&&(t.clientX=t.originalEvent.clientX,t.clientY=t.originalEvent.clientY)},isDblClick:function(t,e){if(2===t.detail)return!0;if(void 0!==e&&null!==e){var n=t.timeStamp-e.timeStamp,o=Math.sqrt(Math.pow(t.clientX-e.clientX,2)+Math.pow(t.clientY-e.clientY,2));return 250>n&&10>o}return!1},now:Date.now||function(){return(new Date).getTime()},throttle:function(t,e,n){var o,i,s,r=this,a=null,l=0;n||(n={});var u=function(){l=n.leading===!1?0:r.now(),a=null,s=t.apply(o,i),a||(o=i=null)};return function(){var h=r.now();l||n.leading!==!1||(l=h);var c=e-(h-l);return o=this,i=arguments,0>=c||c>e?(clearTimeout(a),a=null,l=h,s=t.apply(o,i),a||(o=i=null)):a||n.trailing===!1||(a=setTimeout(u,c)),s}},createRequestAnimationFrame:function(t){var e=null;return\"auto\"!==t&&60>t&&t>1&&(e=Math.floor(1e3/t)),null===e?window.requestAnimationFrame||o(33):o(e)}}},{}]},{},[1]);\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2017, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Combine the SWISH components.\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\ndefine('jswish',[ \"jquery\",\n\t \"config\",\n\t \"preferences\",\n\t \"history\",\n\t \"modal\",\n\t \"chat\",\n\t \"splitter\",\n\t \"bootstrap\",\n\t \"pane\",\n\t \"tabbed\",\n\t \"notebook\",\n\t \"navbar\",\n\t \"search\",\n\t \"editor\",\n\t \"query\",\n\t \"runner\",\n\t \"term\",\n\t \"laconic\",\n\t \"login\",\n\t \"chatroom\",\n\t \"d3\",\n\t \"c3\",\n\t \"svg-pan-zoom\"\n       ], function($, config, preferences, history, modal) {\n\npreferences.setDefault(\"semantic-highlighting\", true);\npreferences.setDefault(\"emacs-keybinding\", false);\n\n(function($) {\n  var pluginName = 'swish';\n\n  function glyph(name, func) {\n    func.glyph = name;\n    return func;\n  }\n\n  function icon(name, func) {\n    func.typeIcon = name;\n    return func;\n  }\n\n  var defaults = {\n    menu: {\n      \"File\":\n      { \"Save ...\": glyph(\"cloud-upload\", function() {\n\t  menuBroadcast(\"save\", \"as\");\n\t}),\n\t\"Info & history ...\": glyph(\"info-sign\", function() {\n\t  menuBroadcast(\"fileInfo\");\n\t}),\n\t\"Reload\": glyph(\"refresh\", function() {\n\t  menuBroadcast(\"reload\");\n\t}),\n\t\"Open recent\": {\n\t  type: \"submenu\",\n\t  glyph: \"paperclip\",\n\t  action: function(ev) {\n\t    history.openRecent(ev, $(this).data('document'));\n\t  },\n\t  update: history.updateRecentUL\n\t},\n\t\"Share\": \"--\",\n\t\"Follow ...\": config.http.locations.follow_file_options ?\n\t\t      glyph(\"eye-open\", function() {\n\t  menuBroadcast(\"follow-file\");\n\t}) : undefined,\n\t\"Start TogetherJS ...\": icon(\"togetherjs\", function() {\n\t  $(\"body\").swish('collaborate');\n\t}),\n\t\"Export\": \"--\",\n\t\"Download\": glyph(\"floppy-save\", function() {\n\t  menuBroadcast(\"download\");\n\t}),\n\t\"Print ...\": glyph(\"print\", function() {\n\t  menuBroadcast(\"print\");\n\t})\n      },\n      \"Edit\":\n      { \"Clear messages\": function() {\n\t  menuBroadcast(\"clearMessages\");\n\t},\n\t\"Changes\": \"--\",\n\t\"View changes\": function() {\n\t  menuBroadcast(\"diff\");\n\t},\n\t\"Edit\": \"--\",\n\t\"Find (Ctrl-F)\": function() {\n\t  menuBroadcast(\"edit-command\", \"find\");\n\t},\n\t\"Find and replace (Shift-Ctrl-F)\": function() {\n\t  menuBroadcast(\"edit-command\", \"replace\");\n\t},\n\t\"Jump to line (Alt-G)\": function() {\n\t  menuBroadcast(\"edit-command\", \"jumpToLine\");\n\t},\n\t\"Options\": \"--\",\n\t\"Semantic highlighting\": {\n\t  preference: \"semantic-highlighting\",\n\t  type: \"checkbox\"\n\t},\n\t\"Emacs Keybinding\": {\n\t  preference: \"emacs-keybinding\",\n\t  type: \"checkbox\",\n\t  value: \"false\"\n\t}\n      },\n      \"Examples\": function(navbar, dropdown) {\n\t$(\"body\").swish('populateExamples', navbar, dropdown);\n      },\n      \"Help\": function(navbar, dropdown) {\n\t$(\"body\").swish('populateHelp', navbar, dropdown);\n      }\n    }\n  }; // defaults;\n\n\n  /** @lends $.fn.swish */\n  var methods = {\n    /**\n     * Initialise SWISH on the page. At this moment, a page can only\n     * contain one SWISH application and swish is normally initialised\n     * on the body.  This might change.\n     * @example $(\"body\").swish();\n     * {Object} options\n     * {Boolean} options.show_beware If `true`, show a dialogue box\n     * telling this is a limited version.\n     */\n    _init: function(options) {\n      swishLogo();\n      setupModal();\n      setupPanes();\n      setupResize();\n      $(\"#search\").search();\n\n      options = options||{};\n      this.addClass(\"swish\");\n\n      return this.each(function() {\n\tvar elem = $(this);\n\tvar data = {};\t\t\t/* private data */\n\n\t$(\"#navbar\").navbar(defaults.menu);\n\t$(\"#login\").login();\n\n\tvar  editor = $(\".prolog-editor\").prologEditor({save:true});\n\tdata.runner = $(\".prolog-runners\").prologRunners();\n\tdata.query  = $(\".prolog-query\").queryEditor(\n          { source:   function() {\n\t      return elem.swish('prologSource');\n\t    },\n\t    sourceID: function() {\n\t      return editor.prologEditor('getSourceID');\n\t    },\n\t    examples: elem.swish('examples'),\n\t    runner:   data.runner,\n\t    editor:   editor[0]\n\t  });\n\n\t$(\".notebook\").notebook();\n\n\tif ( options.show_beware &&\n\t     !(swish.option && swish.option.show_beware == false) )\n\t  menuBroadcast(\"help\", {file:\"beware.html\", notagain:\"beware\"});\n\n\telem.data(pluginName, data);\t/* store with element */\n\n\tif ( window.location.href.indexOf(\"&togetherjs=\") > 0 )\n\t  elem.swish('collaborate');\n\n\t$(\"#chat\").chat('');\n\t$(\"#broadcast-bell\")\n\t\t.chatbell({\n\t\t  empty_title: \"Click to open chat\"\n\t\t});\n\t$(\"#chat-menu\").on(\"click\", \"a\", function(ev) {\n\t  var a = $(ev.target).closest(\"a\");\n\t  switch ( a.data('action') ) {\n\t  case 'chat-shared':\n\t    $(\"body\").swish('playFile', {\n\t      file: config.swish.hangout,\n\t      chat: 'large'\n\t    });\n\t  case 'chat-about-file':\n\t    menuBroadcast(\"chat-about-file\");\n\t  }\n\t});\n\n\tsetInterval(function(){\n\t  $(\".each-minute\").trigger(\"minute\");\n\t}, 60000);\n      });\n    },\n\n    /**\n     * Trigger a global event in SWISH.  Currently defined events are:\n     *\n     *   - `help`        -- show a modal help window\n     *   - `source`      -- load a new source\n     *   - `saveProgram` -- save the current program\n     *\n     * This method triggers all elements of class\n     * `swish-event-receiver`.\n     *\n     * @param {String} name is the name of the trigger.\n     * @param {Object|null} data provides additional data for the event.\n     */\n    trigger: function(name, data) {\n      menuBroadcast(name, data);\n      return this;\n    },\n\n    /**\n     * Play a file from the webstore, loading it through ajax\n     * @param {String|Object} options If a string, the name\n     * of the file in the web storage\n     * @param {String} options.file is the name of the file in the web\n     * storage\n     * @param {Number} [options.line] is the initial line number\n     * @param {RegEx} [options.regex] search to highlight\n     * @param {Boolean} [options.showAllMatches] Show other matches on\n     * page.\n     * @param {Boolean} [options.newTab] if `true`, open the file in\n     * a new tab.\n     * @param {Boolean} [options.noHistory] if `true`, do not push the\n     * new document to the history.\n     * @param {Object} [options.prompt] provided for trace events.  Must\n     * be used to highlight the Prolog port at the indicated location.\n     */\n    playFile: function(options) {\n      var elem = this;\n      if ( typeof(options) == \"string\" )\n\toptions = {file:options};\n\n      var existing = this.find(\".storage\").storage('match', options);\n      if ( existing && existing.storage('expose', \"Already open\") )\n\treturn this;\t\t\t\t/* FIXME: go to line */\n\n      var url = config.http.locations.web_storage + options.file;\n      $.ajax({ url: url,\n\t       type: \"GET\",\n\t       data: {format: \"json\"},\n\t       success: function(reply) {\n\t\t reply.url = url;\n\t\t reply.st_type = \"gitty\";\n\n\t\t function copyAttrs(names) {\n\t\t   for(var i=0; i<names.length; i++) {\n\t\t     var name = names[i];\n\t\t     if ( options[name] )\n\t\t       reply[name] = options[name];\n\t\t   }\n\t\t }\n\n\t\t copyAttrs([ \"line\",\n\t\t\t     \"regex\", \"showAllMatches\",\n\t\t\t     \"newTab\", \"noHistory\",\n\t\t\t     \"prompt\", \"chat\"\n\t\t\t   ]);\n\n\t\t elem.swish('setSource', reply);\n\t       },\n\t       error: function(jqXHR) {\n\t\t modal.ajaxError(jqXHR);\n\t       }\n\t     });\n\n      return this;\n    },\n\n    /**\n     * Load file from a URL.  This fetches the data from the URL and\n     * broadcasts a `\"source\"` event that is normally picked up by\n     * the tabbed pane.\n     * @param {Object}   options\n     * @param {String}   options.url     URL to load.\n     * @param {Integer} [options.line]   Line to go to.\n     * @param {Regex}   [options.search] Text searched for.\n     */\n    playURL: function(options) {\n      var elem = this;\n      var existing = this.find(\".storage\").storage('match', options);\n\n      if ( existing && existing.storage('expose', \"Already open\") )\n\treturn this;\t\t\t\t/* FIXME: go to line */\n\n      $.ajax({ url: options.url,\n\t       type: \"GET\",\n\t       data: {format: \"json\"},\n\t       success: function(source) {\n\t\t var msg;\n\n\t\t if ( typeof(source) == \"string\" ) {\n\t\t   msg = { data: source };\n\t\t   msg.st_type = \"external\";\n\t\t } else if ( typeof(source) == \"object\" &&\n\t\t\t     typeof(source.data) == \"string\" ) {\n\t\t   msg = source;\n\t\t   msg.st_type = \"filesys\";\n\t\t } else {\n\t\t   alert(\"Invalid data\");\n\t\t   return;\n\t\t }\n\n\t\t msg.url  = options.url;\n\n\t\t function copyAttrs(names) {\n\t\t   for(var i=0; i<names.length; i++) {\n\t\t     var name = names[i];\n\t\t     if ( options[name] )\n\t\t       msg[name] = options[name];\n\t\t   }\n\t\t }\n\n\t\t copyAttrs([ \"line\",\n\t\t\t     \"regex\", \"showAllMatches\",\n\t\t\t     \"newTab\", \"noHistory\",\n\t\t\t     \"prompt\"\n\t\t\t   ]);\n\n\t\t elem.swish('setSource', msg);\n\t       },\n\t       error: function(jqXHR) {\n\t\t modal.ajaxError(jqXHR);\n\t       }\n      });\n    },\n\n    /**\n     * Open a source.  If we are in fullscreen mode and the current\n     * object cannot be opened by the current fullscreen node, we\n     * leave fullscreen mode.  Called by playFile and playURL.\n     */\n    setSource: function(src) {\n      var st = this.swish('isFullscreen');\n\n      if ( !(st && st.storage('setSource', src)) ) {\n\tif ( st )\n\t  this.swish('exitFullscreen');\n\tthis.find(\".tabbed\").tabbed('tabFromSource', src);\n      }\n\n      return this;\n    },\n\n\n    /**\n     * @param {Object} ex\n     * @param {String} ex.title is the title of the example\n     * @param {String} ex.file is the (file) name of the example\n     * @param {String} ex.href is the URL from which to download the\n     * program.\n     * @returns {Function|String} function that loads an example\n     */\n    openExampleFunction: function(ex) {\n      var swish = this;\n\n      if ( ex.type == \"divider\" ) {\n\treturn \"--\";\n      } else if ( ex.type == \"store\" ) {\n\treturn function() {\n\t  methods.playFile.call(swish, ex.file);\n\t};\n      } else {\n\treturn function() {\n\t  methods.playURL.call(swish, {url:ex.href});\n\t};\n      }\n    },\n\n    /**\n     * Populate the examples dropdown of the navigation bar. This\n     * method is used by the navigation bar initialization.\n     * @param {Object} navbar is the navigation bar\n     * @param {Object} dropdown is the examples dropdown\n     */\n    populateExamples: function(navbar, dropdown) {\n      var that = this;\n\n      that.off(\"examples-changed\")\n\t  .on(\"examples-changed\", function() {\n\t     $(\"#navbar\").navbar('clearDropdown', dropdown);\n\t     that.swish('populateExamples', navbar, dropdown);\n\t   });\n      $.ajax(config.http.locations.swish_examples,\n\t     { dataType: \"json\",\n\t       success: function(data) {\n\t\t for(var i=0; i<data.length; i++) {\n\t\t   var ex = data[i];\n\t\t   var title;\n\t\t   var options;\n\n\t\t   if ( ex == \"--\" || ex.type == \"divider\" ) {\n\t\t     title = \"--\";\n\t\t     options = \"--\";\n\t\t   } else {\n\t\t     var name = ex.file || ex.href;\n\t\t     title = ex.title;\n\t\t     options = that.swish('openExampleFunction', ex);\n\t\t     if ( name )\n\t\t       options.typeIcon = name.split('.').pop();\n\t\t   }\n\n\t\t   $(\"#navbar\").navbar('extendDropdown', dropdown,\n\t\t\t\t       title, options);\n\t\t }\n\t       }\n\t     });\n      return this;\n    },\n\n    /**\n     * Populate the help dropdown of the navigation bar. This\n     * method is used by the navigation bar initialization.\n     * @param {Object} navbar is the navigation bar\n     * @param {Object} dropdown is the examples dropdown\n     */\n    populateHelp: function(navbar, dropdown) {\n      var that = this;\n\n      function openHelpFunction(help) {\n\treturn function() {\n\t  menuBroadcast(\"help\", {file:help.file});\n\t};\n      }\n\n      $.ajax(config.http.locations.swish_help_index,\n\t     { dataType: \"json\",\n\t       success: function(data) {\n\t\t for(var i=0; i<data.length; i++) {\n\t\t   var help = data[i];\n\t\t   var title;\n\t\t   var options;\n\n\t\t   if ( help == \"--\" || help.type == \"divider\" ) {\n\t\t     title = \"--\";\n\t\t     options = \"--\";\n\t\t   } else {\n\t\t     var name = help.file;\n\t\t     title = help.title;\n\t\t     options = openHelpFunction(help);\n\t\t   }\n\n\t\t   $(\"#navbar\").navbar('extendDropdown', dropdown,\n\t\t\t\t       title, options);\n\t\t }\n\t       }\n\t     });\n      return this;\n    },\n\n\n    /**\n     * pick up all Prolog sources, preparing to execute a query. Currently\n     * picks up:\n     *\n     *   - The `.text()` from all elements that match\n     *   `\".background.prolog.source\"`\n     *   - The source of the Prolog editor.  We need some notion of a\n     *   _current_ Prolog editor.\n     */\n    prologSource: function() {\n      var list = [];\n      var src;\n\n      if ( (src=$(\".prolog-editor\").prologEditor('getSource', \"source\")) )\n\tlist.push(src);\n      if ( (src=$(\".background.prolog.source\").text()) )\n\tlist.push(src);\n\n      return list.join(\"\\n\\n\");\n    },\n\n    /**\n     * Pick up all breakpoints.  Currently assumes a single source.\n     * @param {String} pengineID is the pengine for which to set\n     * the breakpoints.\n     */\n    breakpoints: function(pengineID) {\n      return this.find(\".prolog-editor\")\n                 .prologEditor('getBreakpoints', pengineID)||[];\n    },\n\n    /**\n     * @param {Object} [options]\n     * @param {Boolean} [options.active=false] If `true`, only return\n     * info on the active tab\n     */\n    tabData: function(options) {\n      options = options||{};\n      if ( options.active ) {\n\treturn this.find(\".tab-pane.active .storage\").storage('getData', options);\n      } else {\n\treturn this.find(\".storage\").storage('getData', options);\n      }\n    },\n\n    /**\n     * Extract examples from `$(\".examples.prolog\").text()`.  If this\n     * does not exist, it returns a function that extracts the examples\n     * from the current Prolog source editor.\n     * @param {Boolean} [onlyglobal] if `true`, only extract globally\n     * listed examples.\n     * @returns {Array.String|null|Function}\n     */\n    examples: function(onlyglobal) {\n      var text = $(\".examples.prolog\").text();\n\n      if ( text ) {\n\treturn $().prologEditor('getExamples', text, false);\n      } else if ( onlyglobal != true ) {\n\treturn function() {\n\t  return $(\".prolog-editor\").prologEditor('getExamples');\n\t};\n      }\n    },\n\n    /**\n     * Make DOM element fullscreen\n     * @param {jQuery} node is the element to turn into fullscreen.\n     * Currently this only works for a notebook.\n     * @patam {jQuery} main is the node getting the `fullscreen\n     * hamburger` class.\n     */\n    fullscreen: function(node, main) {\n      var content = this.find(\".container.tile-top\");\n\n      if ( !content.hasClass(\"fullscreen\") ) {\n\tvar data = this.data(\"fullscreen\");\n\tif ( !data ) {\n\t  data = {};\n\t  this.data(\"fullscreen\", data);\n\t}\n\tcontent.addClass(\"fullscreen\");\n\tmain = main||node;\n\tmain.addClass(\"fullscreen hamburger\");\n\tdata.fullscreen_origin = node.parent()[0];\n\tdata.fullscreen_main = main[0];\n\t$(content.children()[0]).hide();\n\tcontent.append(node);\n\tmain.trigger('fullscreen', true);\n      }\n\n      return this;\n    },\n\n    /**\n     * If some element is in fullscreen mode, revert\n     * back to tabbed mode.\n     * @return {Boolean} `true` if successful.\n     */\n    exitFullscreen: function() {\n      var content = this.find(\".container.tile-top\");\n\n      if ( content.hasClass(\"fullscreen\") ) {\n\tvar data = this.data(\"fullscreen\");\n\tvar node = $(content.children()[1]);\n\tvar main = data.fullscreen_main;\n\n\tcontent.removeClass(\"fullscreen\");\n\t$(data.fullscreen_main).removeClass(\"fullscreen hamburger\");\n\t$(data.fullscreen_origin).append(node);\n\tdata.fullscreen_origin = null;\n\tdata.fullscreen_main = null;\n\t$(content.children()[0]).show();\n\t$(main).trigger('fullscreen', false);\n\n\treturn true;\n      }\n\n      return false;\n    },\n\n    /**\n     * Detect fullscreen mode\n     * @return {jQuery} storage object that is running in fullscreen\n     * mode.\n     */\n    isFullscreen: function() {\n      var content = this.find(\".container.tile-top\");\n\n      if ( content.hasClass(\"fullscreen\") ) {\n\tvar st = content.find(\".storage\");\n\tif ( st.length != 0 )\n\t  return st;\n      }\n    },\n\n    /**\n     * Open TogetherJS after lazy loading.\n     */\n    collaborate: function() {\n      var elem = this;\n      $(this).attr(\"data-end-togetherjs-html\", \"End collaboration\");\n      require([ \"https://togetherjs.com/togetherjs-min.js\"\n\t      ],\n\t      function() {\n\t\tTogetherJS(elem);\n\t      });\n      return this;\n    }\n  }; // methods\n\n  /**\n   * General actions on SWISH are sent as triggers.  Any part of\n   * the interface that is interested in events should add the class\n   * `swish-event-receiver` and listen to the events in which it is\n   * interested.\n   */\n  function menuBroadcast(event, data) {\n    $(\".swish-event-receiver\").trigger(event, data);\n  }\n\n  /**\n   * Turn elements with class `swish-logo` into the SWISH logo.\n   */\n  function swishLogo() {\n    $(\".swish-logo\")\n      .append($.el.b($.el.span({style:\"color:darkblue\"}, \"SWI\"),\n\t\t     $.el.span({style:\"color:maroon\"}, \"SH\")))\n      .css(\"margin-left\", \"30px\")\n      .css(\"font-size\", \"24px\")\n      .addClass(\"navbar-brand\");\n  }\n\n  /**\n   * Setup modal actions.  Subsequently, modal dialogue windows\n   * are opened by using the trigger `help`.\n   * @example $(\"body\").swish('action', 'help', {file:\"about.html\"});\n   */\n  function setupModal() {\n    if ( $(\"#modal\").length == 0 ) {\n      $(\"body\").append($.el.div({id:\"modal\"}));\n      $(\"#modal\").swishModal();\n    }\n  }\n\n  /**\n   * Setup the panes and allow for resizing them\n   */\n  function setupPanes() {\n    $(\".tile\").tile();\n    $(window).resize(function() { $(\".tile\").tile('resize'); });\n    $(\".tabbed\").tabbed();\n  }\n\n  function setupResize() {\n    $(window).resize(function() {\n      $(\".reactive-size\").trigger('reactive-resize');\n    });\n  }\n\n  /**\n   * <Class description>\n   *\n   * @class swish\n   * @tutorial jquery-doc\n   * @memberOf $.fn\n   * @param {String|Object} [method] Either a method name or the jQuery\n   * plugin initialization object.\n   * @param [...] Zero or more arguments passed to the jQuery `method`\n   */\n\n  $.fn.swish = function(method) {\n    if ( methods[method] ) {\n      return methods[method]\n\t.apply(this, Array.prototype.slice.call(arguments, 1));\n    } else if ( typeof method === 'object' || !method ) {\n      return methods._init.apply(this, arguments);\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.' + pluginName);\n    }\n  };\n}(jQuery));\n\n}); // define()\n;\n","/*  Part of SWISH\n\n    Author:        Jan Wielemaker\n    E-mail:        J.Wielemaker@cs.vu.nl\n    WWW:           http://www.swi-prolog.org\n    Copyright (C): 2014-2016, VU University Amsterdam\n\t\t\t      CWI Amsterdam\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in\n       the documentation and/or other materials provided with the\n       distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/**\n * @fileOverview\n * Load SWISH. Just provides the RequireJS config, requires jswish.js\n * and initialises this on the body.\n *\n * @version 0.2.0\n * @author Jan Wielemaker, J.Wielemaker@vu.nl\n * @requires jquery\n */\n\nrequire.config({\n  urlArgs: \"ts=\"+new Date().getTime(),\t/* prevent caching during development */\n  waitSeconds: 60,\t\t\t/* swish-min.js is big */\n  paths:\n  { jquery:      \"../bower_components/jquery/dist/jquery.min\",\n    \"jquery-ui\": \"../bower_components/jquery-ui/jquery-ui.min\",\n    laconic:     \"../bower_components/laconic/laconic\",\n    bootstrap:   \"../bower_components/bootstrap/dist/js/bootstrap.min\",\n    bloodhound:  \"../bower_components/typeahead.js/dist/bloodhound\",\n    typeahead:   \"../bower_components/typeahead.js/dist/typeahead.jquery\",\n    splitter:    \"../bower_components/jquery.splitter/js/jquery.splitter-0.15.0\",\n    tagmanager:  \"../bower_components/tagmanager/tagmanager\",\n    sha1:        \"../bower_components/js-sha1/src/sha1\",\n    c3:          \"../bower_components/c3/c3\",\n    d3:          \"../bower_components/d3/d3\",\n    \"svg-pan-zoom\": \"../bower_components/svg-pan-zoom/dist/svg-pan-zoom.min\",\n    sparkline:\t \"../bower_components/sparkline/dist/jquery.sparkline\",\n\n\t\t\t\t\t/* CodeMirror extensions */\n    \"cm/mode/prolog\": \"codemirror/mode/prolog\",\n    \"cm/addon/hover/prolog-hover\": \"codemirror/addon/hover/prolog-hover\",\n    \"cm/addon/hover/text-hover\": \"codemirror/addon/hover/text-hover\",\n    \"cm/addon/hint/templates-hint\": \"codemirror/addon/hint/templates-hint\",\n    \"cm/addon/hint/show-context-info\": \"codemirror/addon/hint/show-context-info\",\n\n\t\t\t\t\t/* Standard CodeMirror */\n    \"cm\" : \"../bower_components/codemirror\"\n  },\n  shim:\n  { bootstrap:\n    { deps:[\"jquery\"]\n    },\n    typeahead: /* HACK: See https://github.com/twitter/typeahead.js/issues/1211 */\n    { deps:[\"jquery\"],\n      init: function ($) {\n\treturn require.s.contexts._.registry['typeahead.js'].factory($);\n      }\n    },\n    bloodhound:\n    { deps:[\"jquery\"]\n    },\n    splitter:\n    { deps:[\"jquery\"]\n    },\n    laconic:\n    { deps:[\"jquery\"]\n    },\n    tagmanager:\n    { deps:[\"jquery\"]\n    },\n  }\n}); //require.config\n\n/*\n * Create the SWISH application.  Note that we need two levels of\n * require because the first gives us the location of the pengine\n * API, while the second fetches the pengines and starts the\n * application.\n */\nrequire([\"jquery\", \"config\", \"jswish\"],\n\tfunction($, config, swish) {\n  require([config.http.locations.pengines+\"/pengines.js\"],\n\t  function() {\n    $(function() {\n      $(\"body\").swish(config.swish||{});\n    });\n  });\n});\n\n\ndefine(\"swish\", function(){});\n\n"]}
\ No newline at end of file